<?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>134096</bug_id>
          
          <creation_ts>2014-06-20 00:14:14 -0700</creation_ts>
          <short_desc>[EFL] Remove the WebKit1 EFL code</short_desc>
          <delta_ts>2014-06-23 17:11:44 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit EFL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>134087</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryuan Choi">ryuan.choi</reporter>
          <assigned_to name="Ryuan Choi">ryuan.choi</assigned_to>
          <cc>bunhere</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>ossy</cc>
    
    <cc>rakuco</cc>
    
    <cc>sergio</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1016868</commentid>
    <comment_count>0</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2014-06-20 00:14:14 -0700</bug_when>
    <thetext>rm -rf Source/WebKit/efl</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1016884</commentid>
    <comment_count>1</comment_count>
      <attachid>233412</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2014-06-20 01:34:01 -0700</bug_when>
    <thetext>Created attachment 233412
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1016886</commentid>
    <comment_count>2</comment_count>
      <attachid>233412</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2014-06-20 01:37:07 -0700</bug_when>
    <thetext>Comment on attachment 233412
Patch

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1016898</commentid>
    <comment_count>3</comment_count>
      <attachid>233416</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2014-06-20 02:02:55 -0700</bug_when>
    <thetext>Created attachment 233416
Patch

Added one missing file</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1017044</commentid>
    <comment_count>4</comment_count>
      <attachid>233416</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-06-20 14:24:11 -0700</bug_when>
    <thetext>Comment on attachment 233416
Patch

Rejecting attachment 233416 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.appspot.com&apos;, &apos;--bot-id=webkit-cq-03&apos;, &apos;validate-changelog&apos;, &apos;--check-oops&apos;, &apos;--non-interactive&apos;, 233416, &apos;--port=mac&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
 = self._filesystem.open_text_file_for_reading(self.path)
  File &quot;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkitpy/common/system/filesystem.py&quot;, line 204, in open_text_file_for_reading
    return codecs.open(path, &apos;r&apos;, &apos;utf8&apos;, errors)
  File &quot;/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/codecs.py&quot;, line 881, in open
    file = __builtin__.open(filename, mode, buffering)
IOError: [Errno 2] No such file or directory: u&apos;/Volumes/Data/EWS/WebKit/Source/WebKit/efl/ChangeLog&apos;

Full output: http://webkit-queues.appspot.com/results/6170918799802368</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1017078</commentid>
    <comment_count>5</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2014-06-20 15:27:26 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 233416 [details])
&gt; Rejecting attachment 233416 [details] from commit-queue.
&gt; 
&gt; Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.appspot.com&apos;, &apos;--bot-id=webkit-cq-03&apos;, &apos;validate-changelog&apos;, &apos;--check-oops&apos;, &apos;--non-interactive&apos;, 233416, &apos;--port=mac&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit
&gt; 
&gt; Last 500 characters of output:
&gt;  = self._filesystem.open_text_file_for_reading(self.path)
&gt;   File &quot;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkitpy/common/system/filesystem.py&quot;, line 204, in open_text_file_for_reading
&gt;     return codecs.open(path, &apos;r&apos;, &apos;utf8&apos;, errors)
&gt;   File &quot;/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/codecs.py&quot;, line 881, in open
&gt;     file = __builtin__.open(filename, mode, buffering)
&gt; IOError: [Errno 2] No such file or directory: u&apos;/Volumes/Data/EWS/WebKit/Source/WebKit/efl/ChangeLog&apos;
&gt; 
&gt; Full output: http://webkit-queues.appspot.com/results/6170918799802368

Hmm, it looks that modified_changelogs() in checkout.py does not consider whether changelog is deleted or not.

I am not sure how I can land this before fixing Tools.

Below is the log when I used direct-land. ( ./Tools/Scripts/webkit-patch land-attachment 233416 )

Can&apos;t open /home/ryuan/workspace/project/webkit/efl-webkit/Source/WebKit/efl/ChangeLog at /home/ryuan/workspace/project/webkit/efl-webkit/Tools/Scripts/commit-log-editor line 221.
Failed to run &quot;[u&apos;/home/ryuan/workspace/project/webkit/efl-webkit/Tools/Scripts/commit-log-editor&apos;, &apos;--print-log&apos;, u&apos;/home/ryuan/workspace/project/webkit/efl-webkit/Source/WebKit/ChangeLog&apos;, u&apos;/home/ryuan/workspace/project/webkit/efl-webkit/Source/WebKit/efl/ChangeLog&apos;]&quot; exit_code: 2
Failed to run &quot;[u&apos;/home/ryuan/workspace/project/webkit/efl-webkit/Tools/Scripts/commit-log-editor&apos;, &apos;--print-log&apos;, u&apos;/home/ryuan/workspace/project/webkit/efl-webkit/Source/WebKit/ChangeLog&apos;, u&apos;/home/ryuan/workspace/project/webkit/efl-webkit/Source/WebKit/efl/ChangeLog&apos;]&quot; exit_code: 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1017539</commentid>
    <comment_count>6</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2014-06-23 06:35:02 -0700</bug_when>
    <thetext>Landed in https://trac.webkit.org/changeset/170289 manually, git svn dcommit 
is our friends when webkit-patch land can&apos;t handle something. ;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1017772</commentid>
    <comment_count>7</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2014-06-23 17:11:44 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Landed in https://trac.webkit.org/changeset/170289 manually, git svn dcommit 
&gt; is our friends when webkit-patch land can&apos;t handle something. ;)

Thanks. :)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>233412</attachid>
            <date>2014-06-20 01:34:01 -0700</date>
            <delta_ts>2014-06-20 02:02:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>Patch</filename>
            <type>text/plain</type>
            <size>1510856</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggMmEyNTBmMy4uZDkwOWU0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAor
MjAxNC0wNi0yMCAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3VuZy5jb20+CisKKyAgICAg
ICAgW0VGTF0gUmVtb3ZlIHRoZSBXZWJLaXQxIEVGTCBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzQwOTYKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGVmbDogUmVtb3ZlZCBlbnRpcmUgZWZsIGRp
cmVjdG9yeQorCiAyMDE0LTA2LTE4ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgQWRkIEZUTCB0byBXaW5kb3dzIGJ1aWxkLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdl
TG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MTA3NjhmLi4wMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZworKysgL2Rldi9udWxsCkBAIC0xLDE3NDEwICsw
LDAgQEAKLTIwMTQtMDUtMTYgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29t
PgotCi0gICAgICAgIFtDTWFrZV0gSW1wcm92ZSBoYW5kbGluZyBvZiBMSUJfSU5TVEFMTF9ESVIs
IEVYRUNfSU5TVEFMTF9ESVIsIGFuZCBMSUJFWEVDX0lOU1RBTExfRElSCi0gICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzI4MTkKLQotICAgICAgICBSZXZp
ZXdlZCBieSBDYXJsb3MgR2FyY2lhIENhbXBvcy4KLQotICAgICAgICAqIEVXZWJLaXRDb25maWcu
Y21ha2UuaW46IExJQl9JTlNUQUxMX0RJUiBpcyBhbHdheXMgYWJzb2x1dGUgbm93LCBzbyB3ZSBk
b24ndCBuZWVkCi0gICAgICAgIHRvIHByZWZpeCBpdCB3aXRoIHRoZSBwcmVmaXguCi0gICAgICAg
ICogZXdlYmtpdC5wYy5pbjogSW5zdGVhZCBvZiBoYXJkLWNvZGluZyB0aGUgcGF0aCB0byB0aGUg
bGlicmFyeSBpbnN0YWxsYXRpb24gZGlyZWN0b3J5IHVzZSBMSUJfSU5TVEFMTF9ESVIuCi0KLTIw
MTQtMDUtMTYgIFBpb3RyIEdyYWQgIDxwLmdyYWRAc2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW0VG
TF0gQnVpbGQgYnJlYWsgYWZ0ZXIgMTY4OTc4LgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMzMDEyLgotCi0gICAgICAgIFJldmlld2VkIGJ5IFNpbW9u
IEZyYXNlci4KLQotICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChfZXdrX3Zp
ZXdfcHJpdl9uZXcpOgotCi0yMDE0LTA1LTEyICBLcnp5c3p0b2YgV29sYW5za2kgIDxrLndvbGFu
c2tpQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxdW1dLMV0gRW5hYmxlIHJlZ2lvbiBiYXNl
ZCBjb2x1bW5zCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMzI2NDYKLQotICAgICAgICBSZXZpZXdlZCBieSBHeXV5b3VuZyBLaW0uCi0KLSAgICAgICAg
RW5hYmxlIG5ldyBtdWx0aS1jb2x1bW4gbW9kZSBhcyBpdCB3YXMgZW5hYmxlZCBpbiBXSzIgKHIx
NjgwNDYpLgotCi0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAgKF9ld2tfdmll
d19wcml2X25ldyk6Ci0KLTIwMTQtMDUtMDcgIE1hbnVlbCBSZWdvIENhc2Fzbm92YXMgIDxyZWdv
QGlnYWxpYS5jb20+Ci0KLSAgICAgICAgW0NTUyBHcmlkIExheW91dF0gUmVtb3ZlIHJ1bnRpbWUg
ZmVhdHVyZQotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTMyMzgyCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQmVuamFtaW4gUG91bGFpbi4KLQotICAgICAg
ICBSZW1vdmUgY3NzR3JpZExheW91dEVuYWJsZWQgc2V0dGluZyB1c2FnZS4KLQotICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHA6Ci0gICAgICAgIChE
dW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OnNldENTU0dyaWRMYXlvdXRFbmFibGVkKTogRGVsZXRl
ZC4KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuaDoK
LQotMjAxNC0wNS0wMSAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3VuZy5jb20+Ci0KLSAg
ICAgICAgW0VGTF1bV0sxXSBEcm9wIGV3a192aWV3X3NldHRpbmdfdGlsZWRfYmFja2luZ3N0b3Jl
IEFQSXMKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEz
MjI0MAotCi0gICAgICAgIFJldmlld2VkIGJ5IEFuZGVycyBDYXJsc3Nvbi4KLQotICAgICAgICBT
aW5jZSB3ZSBtb3ZlZCB0byB1c2UgVGV4dHVyZU1hcHBlciwgdGhpcyBvcHRpb24gaXMgbWVhbmlu
Z2xlc3Mgbm93LgotICAgICAgICBSZW1vdmVkIGV3a192aWV3X3NldHRpbmdfdGlsZWRfYmFja2lu
Z19zdG9yZV9lbmFibGVkX3tnZXR8c2V0fSBhbmQgcmVsYXRlZCBjb2Rlcy4KLQotICAgICAgICAq
IGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChld2tfdmlld19zZXR0aW5nX3RpbGVkX2JhY2tp
bmdfc3RvcmVfZW5hYmxlZF9zZXQpOiBEZWxldGVkLgotICAgICAgICAoZXdrX3ZpZXdfc2V0dGlu
Z190aWxlZF9iYWNraW5nX3N0b3JlX2VuYWJsZWRfZ2V0KTogRGVsZXRlZC4KLSAgICAgICAgKiBl
d2svZXdrX3ZpZXcuaDoKLSAgICAgICAgKiB0ZXN0cy90ZXN0X2V3a192aWV3LmNwcDoKLSAgICAg
ICAgKFRFU1RfRik6IERlbGV0ZWQuCi0KLTIwMTQtMDUtMDEgIFJ5dWFuIENob2kgIDxyeXVhbi5j
aG9pQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxdIFRoZXJlIGFyZSBtYW55IHdhcm5pbmdz
IHdpdGggc29mdHdhcmUgYmFja2VuZAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTMyNDIyCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgR3l1eW91bmcgS2lt
LgotCi0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAgKF9ld2tfdmlld19wcml2
X25ldyk6Ci0gICAgICAgIChld2tfdmlld19jdXJzb3Jfc2V0KToKLQotMjAxNC0wNC0zMCAgQWxl
eGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KLQotICAgICAgICBSb2xsIG91dCBmaXgg
Zm9yIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzE2Mzc6Ci0gICAg
ICAgIENsZWFuIHVwIHVubmVjZXNzYXJ5IG1ldGhvZHMgaW4gdGhlIEJhY2tGb3J3YXJkQ2xpZW50
IGludGVyZmFjZQotCi0gICAgICAgIEl0IGJyb2tlIGEgcmVncmVzc2lvbiB0ZXN0IGFuZCBhbiBB
UEkgdGVzdC4KLQotICAgICAgICAqIGV3ay9ld2tfaGlzdG9yeS5jcHA6Ci0gICAgICAgIChld2tf
aGlzdG9yeV9jbGVhcik6Ci0gICAgICAgIChld2tfaGlzdG9yeV9uZXcpOgotICAgICAgICAoZXdr
X2hpc3RvcnlfZnJlZSk6Ci0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAgKF9l
d2tfdmlld19wcml2X25ldyk6Ci0gICAgICAgIChld2tfdmlld19oaXN0b3J5X2VuYWJsZV9nZXQp
OgotICAgICAgICAoZXdrX3ZpZXdfaGlzdG9yeV9lbmFibGVfc2V0KToKLSAgICAgICAgKGV3a192
aWV3X2hpc3RvcnlfZ2V0KToKLQotMjAxNC0wNC0zMCAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mu
d2FzaGluZ3Rvbi5lZHU+Ci0KLSAgICAgICAgQ2xlYW4gdXAgdW5uZWNlc3NhcnkgbWV0aG9kcyBp
biB0aGUgQmFja0ZvcndhcmRDbGllbnQgaW50ZXJmYWNlCi0gICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzE2MzcKLQotICAgICAgICBSZXZpZXdlZCBieSBB
bmRyZWFzIEtsaW5nLgotCi0gICAgICAgIFJlbW92ZSB1c2VzIG9mIHJlZmVyZW5jZSBjb3VudGlu
ZyBmb3IgQmFja0ZvcndhcmRMaXN0LgotICAgICAgICBVc2UgcmVmZXJlbmNlcyB0byBCYWNrRm9y
d2FyZENsaWVudCBpbnN0ZWFkIG9mIHBvaW50ZXJzLgotICAgICAgICBTdG9wIHVzaW5nIEJhY2tG
b3J3YXJkQ2xpZW50OjpwYWdlKCkgc2luY2UgaXQgd2FzIHJlbW92ZWQuCi0KLSAgICAgICAgKiBl
d2svZXdrX2hpc3RvcnkuY3BwOgotICAgICAgICAoZXdrX2hpc3RvcnlfY2xlYXIpOgotICAgICAg
ICAoZXdrX2hpc3RvcnlfbmV3KToKLSAgICAgICAgKGV3a19oaXN0b3J5X2ZyZWUpOgotICAgICAg
ICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChfZXdrX3ZpZXdfcHJpdl9uZXcpOgotICAg
ICAgICAoZXdrX3ZpZXdfaGlzdG9yeV9lbmFibGVfZ2V0KToKLSAgICAgICAgKGV3a192aWV3X2hp
c3RvcnlfZW5hYmxlX3NldCk6Ci0gICAgICAgIChld2tfdmlld19oaXN0b3J5X2dldCk6Ci0KLTIw
MTQtMDQtMjQgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KLQotICAg
ICAgICBGb250Q2FjaGU6OmZvbnRDYWNoZSgpIG5ldmVyIHJldHVybnMgbnVsbHB0ciBzbyBpdCBj
YW4gYmUgbWFkZSB0byByZXR1cm4gYSByZWZlcmVuY2UgaW5zdGVhZAotICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMyMTEwCi0KLSAgICAgICAgUmV2aWV3
ZWQgYnkgVGltIEhvcnRvbi4KLQotICAgICAgICBVcGRhdGVzIGNhbGxlcnMgdG8gdXNlICcuJyBp
bnN0ZWFkIG9mICctPicuCi0KLSAgICAgICAgTm8gbmV3IHRlc3RzIGFyZSBuZWNlc3NhcnkgYmVj
YXVzZSB0aGVyZSBzaG91bGQgYmUgbm8gYmVoYXZpb3IgY2hhbmdlLgotCi0gICAgICAgICogZXdr
L2V3a19zZXR0aW5ncy5jcHA6Ci0gICAgICAgIChld2tfc2V0dGluZ3NfbWVtb3J5X2NhY2hlX2Ns
ZWFyKToKLQotMjAxNC0wNC0yMyAgSHlvd29uIEtpbSAgPGh3MTAwOC5raW1Ac2Ftc3VuZy5jb20+
Ci0KLSAgICAgICAgW0VGTF1bV0sxXSBBZGQgKmNvbnN0KiBrZXl3b3JkIHRvIF9nZXQoKSBBUElz
Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzIwOTQK
LQotICAgICAgICBSZXZpZXdlZCBieSBHeXV5b3VuZyBLaW0uCi0KLSAgICAgICAgU29tZSBfZ2V0
KCkgRUZMIEFQSXMgZG9uJ3QgaGF2ZSAqY29uc3QqIGtleXdvcmQgdGhvdWdoIHRoZSBfZ2V0KCkg
QVBJcyBkb24ndCBtb2RpZnkgcGFzc2VkIGFyZ3VtZW50LgotICAgICAgICBXZSBuZWVkIHRvIGFk
ZCAqY29uc3QqIGtleXdvcmQgdG8gdGhvc2UgQVBJcy4KLQotICAgICAgICAqIGV3ay9ld2tfaGlz
dG9yeS5jcHA6Ci0gICAgICAgIChld2tfaGlzdG9yeV9saW1pdF9nZXQpOgotICAgICAgICAqIGV3
ay9ld2tfaGlzdG9yeS5oOgotICAgICAgICAqIGV3ay9ld2tfanMuY3BwOgotICAgICAgICAoZXdr
X2pzX29iamVjdF90eXBlX2dldCk6Ci0gICAgICAgICogZXdrL2V3a19qcy5oOgotCi0yMDE0LTA0
LTIyICBSeXVhbiBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBbRUZM
XVtXSzFdIFRoZXJlIGFyZSBtYW55IGZhaWx1cmVzIGluIGZhc3QvZm9ybXMgc2luY2UgcjE2MzAz
MwotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMyMDM5
Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgR3l1eW91bmcgS2ltLgotCi0gICAgICAgICogZXdrL2V3
a192aWV3LmNwcDogQWRkZWQgYnJlYWsgc3RhdGVtZW50cyB3aGljaCBpcyBtaXNzaW5nIHdoaWxl
IHJlbW92ZSBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNCi0gICAgICAgIChld2tfdmlld19u
YXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbik6Ci0KLTIwMTQtMDQtMjIgIFJ5dWFuIENob2kgIDxy
eXVhbi5jaG9pQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxdW1dLMV0gVGhlcmUgYXJlIG1h
bnkgd2FybmluZ3MgaW4gbGF5b3V0IHRlc3Qgc2luY2UgcjE2NzQyOAotICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMxOTg1Ci0KLSAgICAgICAgUmV2aWV3
ZWQgYnkgR3l1eW91bmcgS2ltLgotCi0gICAgICAgIFNpbmNlIHIxNjc0MjgsIGltcGxlbWVudGF0
aW9uIG9mIGZsdXNoIG1ldGhvZCB3YXMgcmVtb3ZlZCwgYnV0IGV3a192aWV3X2ZyYW1lX21haW5f
Y2xlYXJlZAotICAgICAgICBzdGlsbCBjaGVja2VkIGFuZCBnZW5lcmF0ZWQgbWFueSB3YXJuaW5n
cy4KLQotICAgICAgICBOb3csIGV3a192aWV3X2ZyYW1lX21haW5fY2xlYXJlZCBpcyBub3QgcmVx
dWlyZWQgYmVjYXVzZSBmbHVzaCBpcyBhbHJlYWR5Ci0gICAgICAgIG1lYW5pbmdsZXNzIGFuZCBv
dGhlcnMgYXJlIGNvdmVyZWQgYnkgZXdrX2ZyYW1lX3ZpZXdfY3JlYXRlX2Zvcl92aWV3LgotICAg
ICAgICBTbywgdGhpcyBwYXRjaCByZW1vdmVkIGV3a192aWV3X2ZyYW1lX21haW5fY2xlYXJlZCBh
bmQgcmVsYXRlZCBjb2RlIHdoaWNoIGlzIGFscmVhZHkgZGVhZC4KLQotICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyQ2xpZW50RWZsOjp0cmFuc2l0aW9uVG9Db21taXR0ZWRGb3JOZXdQYWdlKToKLSAg
ICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoZXdrX3ZpZXdfZnJhbWVfbWFpbl9j
bGVhcmVkKTogRGVsZXRlZC4KLSAgICAgICAgKGV3a192aWV3X2RpZF9maXJzdF92aXN1YWxseV9u
b25lbXB0eV9sYXlvdXQpOiBEZWxldGVkLgotICAgICAgICAoZXdrX3ZpZXdfZGlzcGF0Y2hfZGlk
X2ZpbmlzaF9sb2FkaW5nKTogRGVsZXRlZC4KLSAgICAgICAgKiBld2svZXdrX3ZpZXcuaDogUmVt
b3ZlZCBmbHVzaCBzbWFydCBtZXRob2QuCi0KLTIwMTQtMDQtMTggIFBoaWxpcHBlIE5vcm1hbmQg
IDxwbm9ybWFuZEBpZ2FsaWEuY29tPgotCi0gICAgICAgIFJlbW92ZSBORVRXT1JLX0lORk8gc3Vw
cG9ydAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMx
ODQxCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgR3l1eW91bmcgS2ltLgotCi0gICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvTmV0d29ya0luZm9DbGllbnRFZmwuY3BwOiBSZW1vdmVkLgotICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L05ldHdvcmtJbmZvQ2xpZW50RWZsLmg6IFJlbW92ZWQuCi0gICAgICAg
ICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAgKF9ld2tfdmlld19wcml2X25ldyk6Ci0KLTIw
MTQtMDQtMTcgIEplb25nZXVuIEtpbSAgPGplX2p1bGllLmtpbUBzYW1zdW5nLmNvbT4KLQotICAg
ICAgICBbRUZMXVtXSzFdIFNTTCBTdHJpY3QgaXMgc2V0IGFjY29yZGluZyB0byBpbnB1dCBwYXJh
bWV0ZXIuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MzE3MzQuCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgR3l1eW91bmcgS2ltLgotCi0gICAgICAgIFRo
ZSBwYXJhbSwgJ2VuYWJsZScsIHNob3VsZCBiZSB1c2VkIGZvciBzZXR0aW5nIFNTTC1TdHJpY3Qu
Ci0gICAgICAgIElmIGl0IGlzIHRydWUsIFNTTFN0cmljdCBpcyBzZXQuIE90aGVyd2lzZSwgU1NM
U3RyaWN0IGlzIHVuc2V0LgotCi0gICAgICAgICogZXdrL2V3a19uZXR3b3JrLmNwcDoKLSAgICAg
ICAgKGV3a19uZXR3b3JrX3Rsc19jZXJ0aWZpY2F0ZV9jaGVja19zZXQpOgotCi0yMDE0LTA0LTE3
ICBIeW93b24gS2ltICA8aHcxMDA4LmtpbUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBbRUZMXSBS
ZW1vdmUgZGVwcmVjYXRlZCBld2tfcGFpbnQgY29kZS4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMTI2NgotCi0gICAgICAgIFJldmlld2VkIGJ5IEd5
dXlvdW5nIEtpbS4KLQotICAgICAgICBld2tfcGFpbnQgcmVsYXRlZCBjb2RlIHdhcyBkZXByZWNh
dGVkIHNpbmNlIHIxNjY2MzcuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRl
ZENvbXBvc2l0aW5nQ29udGV4dEVmbC5jcHA6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hy
b21lQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEVmbDo6aW52
YWxpZGF0ZVJvb3RWaWV3KTogRGVsZXRlZC4KLSAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVu
dEVmbDo6aW52YWxpZGF0ZUNvbnRlbnRzQW5kUm9vdFZpZXcpOiBEZWxldGVkLgotICAgICAgICAo
V2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZsOjppbnZhbGlkYXRlQ29udGVudHNGb3JTbG93U2Nyb2xs
KTogRGVsZXRlZC4KLSAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEVmbDo6c2Nyb2xsKTog
RGVsZXRlZC4KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuaDoKLSAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRFZmwuY3BwOgotICAgICAgICAq
IGV3ay9ld2tfcGFpbnRfY29udGV4dC5jcHA6IFJlbW92ZWQuCi0gICAgICAgICogZXdrL2V3a19w
YWludF9jb250ZXh0X3ByaXZhdGUuaDogUmVtb3ZlZC4KLSAgICAgICAgKiBld2svZXdrX3ZpZXcu
Y3BwOgotICAgICAgICAoX2V3a192aWV3X3ByaXZfZGVsKToKLSAgICAgICAgKF9ld2tfdmlld19z
bWFydF9jYWxjdWxhdGUpOgotICAgICAgICAoZXdrX3ZpZXdfc21hcnRfc2V0KToKLSAgICAgICAg
KF9ld2tfdmlld19yZXBhaW50c19yZXNpemUpOiBEZWxldGVkLgotICAgICAgICAoX2V3a192aWV3
X3JlcGFpbnRfYWRkKTogRGVsZXRlZC4KLSAgICAgICAgKF9ld2tfdmlld19yZXBhaW50c19mbHVz
aCk6IERlbGV0ZWQuCi0gICAgICAgIChfZXdrX3ZpZXdfc21hcnRfZmx1c2gpOiBEZWxldGVkLgot
ICAgICAgICAoZXdrX3ZpZXdfcmVwYWludHNfcG9wKTogRGVsZXRlZC4KLSAgICAgICAgKGV3a192
aWV3X3JlcGFpbnRfYWRkKTogRGVsZXRlZC4KLSAgICAgICAgKGV3a192aWV3X3BhaW50KTogRGVs
ZXRlZC4KLSAgICAgICAgKGV3a192aWV3X3BhaW50X2NvbnRlbnRzKTogRGVsZXRlZC4KLSAgICAg
ICAgKGV3a192aWV3X3JlcGFpbnQpOiBEZWxldGVkLgotICAgICAgICAoZXdrX3ZpZXdfc2Nyb2xs
KTogRGVsZXRlZC4KLSAgICAgICAgKGV3a192aWV3X3RpbGVkX2JhY2tpbmdfc3RvcmVfaW52YWxp
ZGF0ZSk6IERlbGV0ZWQuCi0gICAgICAgICogZXdrL2V3a192aWV3X3ByaXZhdGUuaDoKLQotMjAx
NC0wNC0xNiAgSmVvbmdldW4gS2ltICA8amVfanVsaWUua2ltQHNhbXN1bmcuY29tPgotCi0gICAg
ICAgIFtFRkxdIENsZWFudXAgdGhlIGJ1aWxkIGZyb20gdW51c2VkIHBhcmFtZXRlcnMgaW4gV2Vi
S2l0LWVmbC4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEzMTY3Ny4KLQotICAgICAgICBSZXZpZXdlZCBieSBHeXV5b3VuZyBLaW0uCi0KLSAgICAgICAg
Q2hhbmdlZCBBU1NFUlQgdG8gQVNTRVJUX1VOVVNFRCBpZiBpdCdzIGp1c3QgdXNlZCBmb3IgQVNT
RVJULgotCi0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAgKGV3a192aWV3X3Nj
cm9sbCk6Ci0KLTIwMTQtMDQtMTUgIEh5b3dvbiBLaW0gIDxodzEwMDgua2ltQHNhbXN1bmcuY29t
PgotCi0gICAgICAgIFtFRkxdIEZpeCBwcm9ibGVtcyB3aXRoIHRoZSBwaXhlbCBkdW1wLgotICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMxMjY1Ci0KLSAg
ICAgICAgUmV2aWV3ZWQgYnkgR3l1eW91bmcgS2ltLgotCi0gICAgICAgIFBhaW50aW5nIGFuZCBj
b21wb3NpdGluZyBwYXRocyBvZiBXZWJLaXQtRUZMIHdlcmUgdG90YWxseSBtb2RpZmllZCBmcm9t
IHIxNjY3NjguCi0gICAgICAgIEhvd2V2ZXIgcGl4ZWwgZHVtcCBjb2RlcyBzdGlsbCBjYWxsIGRl
cHJlY2F0ZWQgZnVuY3Rpb25zIGxpa2UgZXdrX3ZpZXdfcGFpbnQoKSwKLSAgICAgICAgd2hpY2gg
Y2F1c2VzIHRoYXQgbm90aGluZyBpcyBkcmF3bi4KLQotICAgICAgICBUaGlzIHBhdGNoIGFkZHMg
bmV3IG1lbWJlciBmdW5jdGlvbnMgdG8gQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQgdG8g
c3VwcG9ydCBwaXhlbCBkdW1wLgotICAgICAgICBPbmUgb2YgbmV3IGZ1bmN0aW9ucyBpcyBBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6ZXh0cmFjdEltYWdlRGF0YSgpLAotICAgICAgICB3
aGljaCByZXBsYWNlcyBkZXByZWNhdGVkIGZ1bmN0aW9uIGNhbGxzLiBCZXNpZGVzIHRoZSBleHRy
YWN0SW1hZ2VEYXRhKCkgaXMgaW52b2tlZCBieQotICAgICAgICBld2tfdmlld19zY3JlZW5zaG90
X2NvbnRlbnRzX2dldCgpIGluIG9yZGVyIHRvIHRha2UgdGhlIHZpc2libGUgY29udGVudCBkaXNw
bGF5ZWQgb24gdGhlIEVGTCB3ZWJ2aWV3LgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvQWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHRFZmwuY3BwOgotICAgICAgICAoV2ViQ29yZTo6QWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0
KToKLSAgICAgICAgQ3JlYXRlIFRleHR1cmVNYXBwZXIgd2l0aCBhIHByb3BlciBiYWNrZW5kLgot
ICAgICAgICAoV2ViQ29yZTo6QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OmZsdXNoUGVu
ZGluZ0xheWVyQ2hhbmdlcyk6Ci0gICAgICAgIFJldmlzZSBhIG51bGwgY2hlY2sgZm9yIG1fcm9v
dExheWVyLgotICAgICAgICAoV2ViQ29yZTo6QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6
OnBhaW50VG9HcmFwaGljc0NvbnRleHQpOgotICAgICAgICBSZW1vdmUgYSBjcmVhdGlvbiBjaGVj
ayBmb3IgVGV4dHVyZU1hcHBlckdMLgotICAgICAgICAoV2ViQ29yZTo6QWNjZWxlcmF0ZWRDb21w
b3NpdGluZ0NvbnRleHQ6OnBhaW50VG9DdXJyZW50R0xDb250ZXh0KToKLSAgICAgICAgRGl0dG8u
Ci0gICAgICAgIChXZWJDb3JlOjpBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6ZXh0cmFj
dEltYWdlRGF0YSk6Ci0gICAgICAgIEV4dHJhY3QgaW1hZ2UgZGF0YSBmcm9tIHRoZSB2aWV3IGFu
ZCBjb3B5IGl0IHRvIGdpdmVuIEV2YXNfT2JqZWN0LgotICAgICAgICAoV2ViQ29yZTo6QWNjZWxl
cmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OmdldEltYWdlRGF0YSk6Ci0gICAgICAgIEdldCBpbWFn
ZSBkYXRhIGZyb20gdGhlIHZpZXcgYW5kIHJldHVybiBpdCBhcyBjYWlyb19zdXJmYWNlX3Qgb24g
c29mdHdhcmUgbW9kZS4KLSAgICAgICAgKFdlYkNvcmU6OkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdD
b250ZXh0OjpnZXRJbWFnZURhdGFHTCk6Ci0gICAgICAgIEdldCBpbWFnZSBkYXRhIGZyb20gdGhl
IHZpZXcgYW5kIHJldHVybiBpdCBhcyBjYWlyb19zdXJmYWNlX3Qgb24gR0wgbW9kZS4KLSAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dEVmbC5oOgot
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHA6Ci0g
ICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OmZvcmNlUGFpbnQpOiBSZXBhaW50IHRo
ZSBlbnRpcmUgd2VidmlldyBiZWZvcmUgcGl4ZWwgZHVtcC4KLSAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuaDoKLSAgICAgICAgKiBld2svZXdrX3ZpZXcu
Y3BwOgotICAgICAgICAoZXdrX3ZpZXdfbWFya19mb3Jfc3luYyk6IFJlbW92ZSBhbiB1bm5lY2Vz
c2FyeSBsaW5lLgotICAgICAgICAoZXdrX3ZpZXdfZm9yY2VfcGFpbnQpOiBDYWxsIGZsdXNoQW5k
UmVuZGVyTGF5ZXJzKCkuCi0gICAgICAgIChld2tfdmlld19zY3JlZW5zaG90X2NvbnRlbnRzX2dl
dCk6IFJlbW92ZSAnc2NhbGUnIHBhcmFtZXRlciBhbmQgcmVwbGFjZSBld2tfdmlld19wYWludCgp
Ci0gICAgICAgIHdpdGggQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OmV4dHJhY3RJbWFn
ZURhdGEoKS4KLSAgICAgICAgKiBld2svZXdrX3ZpZXcuaDoKLSAgICAgICAgKiBld2svZXdrX3Zp
ZXdfcHJpdmF0ZS5oOgotICAgICAgICAqIHRlc3RzL3Rlc3RfZXdrX3ZpZXcuY3BwOgotICAgICAg
ICAoVEVTVF9GKToKLQotMjAxNC0wNC0xMiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRA
Y3JmLmNhbm9uLmZyPgotCi0gICAgICAgIFtTT1VQXSBMaWJzb3VwIGludGVybmFsIGNyZWRlbnRp
YWwgc2V0dGluZyBzaG91bGQgYmUgY29udHJvbGxlZCBieSBsb2FkZXIgZGVjaXNpb24KLSAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDk2MwotCi0gICAg
ICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJD
bGllbnRFZmw6OnNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKTogU2ltaWxhcmx5IHRvIEdUSywg
bGV0IHNvdXAvbG9hZGVyIGxheWVyIGhhbmRsZSB3aGVuIHRvIHVzZSBjcmVkZW50aWFsIHN0b3Jh
Z2UuIFJldHVybiBhbHdheXMgdHJ1ZSAgCi0KLTIwMTQtMDQtMDggIFJ5dWFuIENob2kgIDxyeXVh
bi5jaG9pQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFVucmV2aWV3ZWQgRUZMIGJ1aWxkIGZpeCBh
dHRlbXB0IHNpbmNlIHIxNjY5NTYKLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0RyYWdDbGll
bnRFZmwuY3BwOiBSZW5hbWUgQ2xpcGJvYXJkIHRvIERhdGFUcmFuc2Zlci4KLSAgICAgICAgKFdl
YkNvcmU6OkRyYWdDbGllbnRFZmw6OndpbGxQZXJmb3JtRHJhZ1NvdXJjZUFjdGlvbik6Ci0gICAg
ICAgIChXZWJDb3JlOjpEcmFnQ2xpZW50RWZsOjpzdGFydERyYWcpOiBEaXR0by4KLSAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50RWZsLmg6Ci0KLTIwMTQtMDQtMDggIEd5dXlvdW5n
IEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBDaGFuZ2UgTmF2aWdh
dG9yQ29udGVudFV0aWxzIGNsaWVudCBvd25lcnNoaXAgZnJvbSBwb3J0IHNpZGUgdG8gTmF2aWdh
dG9yQ29udGVudFV0aWxzCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMzEyOTkKLQotICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KLQotICAg
ICAgICBFRkwgYW5kIEdUSyBwb3J0cyBoYXZlIG1hbmFnZWQgb3duIGNsaWVudCBvZiBOYXZpZ2F0
b3JDb250ZW50VXRpbHMgdGhvdWdoIGl0IGlzIG9ubHkgcGFzc2VkIHRvCi0gICAgICAgIE5hdmln
YXRvckNvbnRlbnRVdGlscy4gVGhlIE5hdmlnYXRvckNvbnRlbnRVdGlscyBoYXMgdXNlZCB0aGUg
Y2xpZW50IHRvIGNhbGwgcG9ydCBmdW5jdGlvbnMuIFNvLAotICAgICAgICB0aGVyZSBpcyBubyBy
ZWFzb24gcG9ydCBpbXBsZW1lbnRhdGlvbiBuZWVkcyB0byBtYW5hZ2UgdGhlIG93bmVyc2hpcC4g
VG8gbWFuYWdlIHRoZSBjbGllbnQgaXMKLSAgICAgICAgdW5uZWNlc3Nhcnkgd29yayBpbiBjdXJy
ZW50IGltcGxlbWVudGF0aW9uLgotCi0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAg
ICAgKF9ld2tfdmlld19wcml2X25ldyk6Ci0KLTIwMTQtMDQtMDcgIEh5b3dvbiBLaW0gIDxodzEw
MDgua2ltQHNhbXN1bmcuY29tPgotCi0gICAgICAgIE1vdmUgdG8gdXNpbmcgc3RkOjp1bmlxdWVf
cHRyIGZvciBvcGVuZ2wsIHRleG1hcCwgdHJhbnNmb3JtcyBhbmQgZWZsIGluIFdlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMzEyNzYKLQotICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KLQotICAg
ICAgICBSZXBsYWNlIHVzZXMgb2YgT3duUHRyIGZvciBUZXh0dXJlTWFwcGVyIGluIEFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdDb250ZXh0RWZsIHdpdGggc3RkOjp1bmlxdWVfcHRyLgotCi0gICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHRFZmwuaDoKLQot
MjAxNC0wNC0wNiAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgotCi0g
ICAgICAgIFtFRkxdW1dLMV0gQXBwbHkgc3RkOjp1bmlxdWVfcHRyPD4gdG8gTmF2aWdhdG9yQ29u
dGVudFV0aWxzQ2xpZW50RWZsCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMzA5NTgKLQotICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KLQot
ICAgICAgICBBcyBhIHN0ZXAgb2YgcmVwbGFjaW5nIE93blB0ciB3aXRoIHN0ZDo6dW5pcXVlX3B0
ciwgdGhpcyBwYXRjaCByZXBsYWNlcwotICAgICAgICBPd25QdHIgd2l0aCB0aGUgc3RkOjp1bmlx
dWVfcHRyIGZvciBOYXZpZ2F0b3JDb250ZW50VXRpbHNDbGllbnRFZmwuCi0KLSAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9OYXZpZ2F0b3JDb250ZW50VXRpbHNDbGllbnRFZmwuY3BwOgotICAgICAg
ICAoV2ViQ29yZTo6TmF2aWdhdG9yQ29udGVudFV0aWxzQ2xpZW50RWZsOjpjcmVhdGUpOiBEZWxl
dGVkLgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L05hdmlnYXRvckNvbnRlbnRVdGlsc0NsaWVu
dEVmbC5oOgotICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChfZXdrX3ZpZXdf
cHJpdl9uZXcpOgotCi0yMDE0LTA0LTA1ICBSeXVhbiBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5n
LmNvbT4KLQotICAgICAgICBbRUZMXVtXSzFdIEFwcGx5IG92ZXJyaWRlIGFuZCBmaW5hbCBrZXl3
b3JkIGZvciBDaHJvbWVDbGllbnRFZmwKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEzMTI2MQotCi0gICAgICAgIFJldmlld2VkIGJ5IEd5dXlvdW5nIEtp
bS4KLQotICAgICAgICBUaGVyZSBhcmUgdW5uZWNlc3NhcnkgdmlydHVhbCBtZXRob2RzIGluIENo
cm9tZUNsaWVudEVmbC4KLSAgICAgICAgQWxtb3N0IG1ldGhvZHMgYXJlIGFscmVhZHkgcmVtb3Zl
ZCBmcm9tIHBhcmVudCBjbGFzcyBhbmQKLSAgICAgICAgdGhlIG90aGVycyBkb2VzIG5vdCBuZWVk
IHRvIGJlIHZpcnR1YWwgbWV0aG9kLgotCi0gICAgICAgIFRoaXMgcGF0Y2ggcmVtb3ZlZCB0aGVt
IGFuZCBhcHBsaWVkIG92ZXJyaWRlIGFuZCBmaW5hbC4KLQotICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0Nocm9tZUNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRF
Zmw6OnNjaGVkdWxlQW5pbWF0aW9uKToKLSAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEVm
bDo6c2VydmljZVNjcmlwdGVkQW5pbWF0aW9ucyk6IERlbGV0ZWQuCi0gICAgICAgIChXZWJDb3Jl
OjpDaHJvbWVDbGllbnRFZmw6OmNhbmNlbEdlb2xvY2F0aW9uUGVybWlzc2lvbkZvckZyYW1lKTog
RGVsZXRlZC4KLSAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEVmbDo6aW52YWxpZGF0ZUNv
bnRlbnRzKTogRGVsZXRlZC4KLSAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEVmbDo6Y2Fu
Y2VsR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdEZvckZyYW1lKTogRGVsZXRlZC4KLSAgICAg
ICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEVmbDo6aWNvbkZvckZpbGVzKTogRGVsZXRlZC4KLSAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuaDoKLSAgICAgICAgKFdlYkNv
cmU6OkNocm9tZUNsaWVudEVmbDo6c2Nyb2xsUmVjdEludG9WaWV3KTogRGVsZXRlZC4KLSAgICAg
ICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEVmbDo6bnVtV2hlZWxFdmVudEhhbmRsZXJzQ2hhbmdl
ZCk6IERlbGV0ZWQuCi0KLTIwMTQtMDQtMDMgIEh5b3dvbiBLaW0gIDxodzEwMDgua2ltQHNhbXN1
bmcuY29tPgotCi0gICAgICAgIFtFRkxdIFNob3VsZCBmbHVzaCBhbmQgcmVuZGVyIGxheWVycyBh
ZnRlciB0aGUgcm9vdCBsYXllciBpcyBjaGFuZ2VkLgotICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMxMTA4Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgR3l1
eW91bmcgS2ltLgotCi0gICAgICAgIElmIHRoZXJlIGlzIG5vIHVwZGF0ZSBldmVudCBhZnRlciBy
b290IGxheWVyIGlzIGNoYW5nZWQsIG9sZCB3ZWJ2aWV3IGNhbiBiZSBzaG93bi4KLSAgICAgICAg
QmVjYXVzZSB0aGUgc3luY1RpbWVyIGlzIG5vdCBiZWluZyB0cmlnZ2VyZWQgYnkgcm9vdCBsYXll
ciBjaGFuZ2UuCi0gICAgICAgIFdlIHNob3VsZCBmbHVzaCBhbmQgcmVuZGVyIGxheWVycyBieSBz
dGFydGluZyBzeW5jVGltZXIgd2hlbiB0aGUgcm9vdCBsYXllciBpcyBjaGFuZ2VkLgotCi0gICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHRFZmwuY3Bw
OgotICAgICAgICAoV2ViQ29yZTo6QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OnNldFJv
b3RHcmFwaGljc0xheWVyKTogQWRkIG1fc3luY1RpbWVyLnN0YXJ0T25lU2hvdCgwKTsKLSAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dEVmbC5oOgot
ICAgICAgICAoV2ViQ29yZTo6QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OnNldFJvb3RH
cmFwaGljc0xheWVyKTogTW92ZSBpbXBsZW1lbnRhdGlvbiBmcm9tIGhlYWRlciB0byBzb3VyY2Uu
Ci0KLTIwMTQtMDQtMDIgIFJ5dWFuIENob2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgotCi0g
ICAgICAgIFtFRkxdW1dLMV0gVXNlIEV2YXNfVG91Y2hfUG9pbnRfU3RhdGUgaW5zdGVhZCBvZiBF
d2tfVG91Y2hfUG9pbnRfVHlwZQotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTMxMTUxCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgR3l1eW91bmcgS2ltLgot
Ci0gICAgICAgIExpa2UgZXdlYmtpdDIsIHdlJ2QgYmV0ZXIgdG8gdXNlIEVGTCB0eXBlIGluc3Rl
YWQgb2YgV2ViS2l0IHNwZWNpZmljIHR5cGUKLSAgICAgICAgSW4gYWRkaXRpb24sIGNoYW5nZWQg
dHlwZSBvZiBpZCBhcyBpbnQgdG8gbWF0Y2ggd2l0aCBld2Via2l0Mi4KLQotICAgICAgICAqIGV3
ay9ld2tfZnJhbWUuaDogUmVwbGFjZSBFd2tfVG91Y2hfUG9pbnRfVHlwZSB0byBFdmFzX1RvdWNo
X1BvaW50X1N0YXRlLgotICAgICAgICAqIGV3ay9ld2tfdG91Y2hfZXZlbnQuY3BwOgotICAgICAg
ICAodG9QbGF0Zm9ybVRvdWNoUG9pbnRTdGF0ZSk6Ci0KLTIwMTQtMDQtMDIgIE1hcnRpbiBIb2Nr
ICA8bWhvY2tAYXBwbGUuY29tPgotCi0gICAgICAgIFVuaWZ5IHByaXZhdGUgYnJvd3Npbmcgd2l0
aCBzZXNzaW9ucy4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEzMDA5OQotCi0gICAgICAgIFJldmlld2VkIGJ5IEFsZXhleSBQcm9za3VyeWFrb3YuCi0K
LSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoX2V3a192aWV3X3ByaXZfbmV3
KTogQ2hhbmdlIFdlYkNvcmU6OlNldHRpbmdzOjpwcml2YXRlQnJvd3NpbmdFbmFibGVkKCkgdG8g
UGFnZTo6c2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKS4KLSAgICAgICAgKGV3a192aWV3X3NldHRp
bmdfcHJpdmF0ZV9icm93c2luZ19zZXQpOiBDaGFuZ2UgV2ViQ29yZTo6U2V0dGluZ3M6OnNldFBy
aXZhdGVCcm93c2luZ0VuYWJsZWQoKSB0byBQYWdlOjplbmFibGVMZWdhY3lQcml2YXRlQnJvd3Np
bmcoKS4KLQotMjAxNC0wNC0wMiAgSHlvd29uIEtpbSAgPGh3MTAwOC5raW1Ac2Ftc3VuZy5jb20+
Ci0KLSAgICAgICAgW0VGTF0gQ29tcG9zaXRlIGFsbCBsYXllcnMgaW50byBvbmUgZXZhc19vYmpl
Y3QgdXNpbmcgVGV4dHVyZU1hcHBlci4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEzMDk2OQotCi0gICAgICAgIFJldmlld2VkIGJ5IEd5dXlvdW5nIEtp
bS4KLQotICAgICAgICBUaGUgRUZMIHBvcnQgdXNlcyB0d28gZXZhc19vYmplY3RzIHRvIHJlbmRl
ciB0aGUgZW50aXJlIHdlYnBhZ2U6IGJhY2tpbmdfc3RvcmUgYW5kIGNvbXBvc2l0aW5nT2JqZWN0
LgotICAgICAgICBiYWNraW5nX3N0b3JlIGlzIHVzZWQgdG8gcGFpbnQgYSBub24tY29tcG9zaXRl
ZCBsYXllciB3aXRoIGV3ayBmdW5jdGlvbnMsCi0gICAgICAgIHdoZXJlYXMgY29tcG9zaXRpbmdP
YmplY3QgaXMgdXNlZCB0byBwYWludCBvdGhlciBsYXllcnMgd2l0aCBUZXh0dXJlTWFwcGVyLgot
ICAgICAgICBUaGVzZSBldmFzX29iamVjdHMgYXJlIGV2ZW50dWFsbHkgY29tcG9zaXRlZCBpbnRv
IHRoZSB3aW5kb3cgYnVmZmVyIGJ5IEV2YXMuCi0KLSAgICAgICAgVGhpcyBwYXRjaCBtb3ZlcyB0
byB1c2Ugb25seSBvbmUgZXZhc19vYmplY3QgYnkgaW50ZWdyYXRpbmcgdGhlc2UgdHdvIGV2YXNf
b2JqZWN0cywKLSAgICAgICAgYW5kIG1ha2VzIHRoYXQgVGV4dHVyZU1hcHBlciBoYW5kbGVzIGFs
bCByZW5kZXJpbmcgcGF0aHMgbGlrZSBXZWJLaXQyLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBv
cnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHRFZmwuY3BwOgotICAgICAgICAoV2ViQ29y
ZTo6QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdD
b250ZXh0KToKLSAgICAgICAgKFdlYkNvcmU6OkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0
Ojp+QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQpOgotICAgICAgICAoV2ViQ29yZTo6QWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OnJlc2l6ZSk6Ci0gICAgICAgIChXZWJDb3JlOjpB
Y2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6Zmx1c2hBbmRSZW5kZXJMYXllcnMpOgotICAg
ICAgICAoV2ViQ29yZTo6QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OmZsdXNoUGVuZGlu
Z0xheWVyQ2hhbmdlcyk6Ci0gICAgICAgIChXZWJDb3JlOjpBY2NlbGVyYXRlZENvbXBvc2l0aW5n
Q29udGV4dDo6cGFpbnRUb0dyYXBoaWNzQ29udGV4dCk6Ci0gICAgICAgIChXZWJDb3JlOjpBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6cGFpbnRUb0N1cnJlbnRHTENvbnRleHQpOgotICAg
ICAgICAoV2ViQ29yZTo6QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OmNvbXBvc2l0ZUxh
eWVycyk6Ci0gICAgICAgIChXZWJDb3JlOjpBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6
aW5pdGlhbGl6ZSk6IERlbGV0ZWQuCi0gICAgICAgIChXZWJDb3JlOjpBY2NlbGVyYXRlZENvbXBv
c2l0aW5nQ29udGV4dDo6Y2FuQ29tcG9zaXRlKTogRGVsZXRlZC4KLSAgICAgICAgKFdlYkNvcmU6
OkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0Ojpjb21wb3NpdGVMYXllcnNUb0NvbnRleHQp
OiBEZWxldGVkLgotICAgICAgICAoV2ViQ29yZTo6QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRl
eHQ6OmF0dGFjaFJvb3RHcmFwaGljc0xheWVyKTogRGVsZXRlZC4KLSAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dEVmbC5oOgotICAgICAgICAoV2Vi
Q29yZTo6QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OnNldFJvb3RHcmFwaGljc0xheWVy
KToKLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoX2V3a192aWV3X3ByaXZf
bmV3KToKLSAgICAgICAgKF9ld2tfdmlld19hY2NlbGVyYXRlZF9jb21wb3NpdGluZ19jYik6Ci0g
ICAgICAgIChfZXdrX3ZpZXdfc21hcnRfYWRkKToKLSAgICAgICAgKF9ld2tfdmlld19zbWFydF9y
ZXNpemUpOgotICAgICAgICAoX2V3a192aWV3X3NtYXJ0X2NhbGN1bGF0ZSk6Ci0gICAgICAgIChf
ZXdrX3ZpZXdfc21hcnRfc2hvdyk6Ci0gICAgICAgIChfZXdrX3ZpZXdfc21hcnRfaGlkZSk6Ci0g
ICAgICAgIChfZXdrX3ZpZXdfc21hcnRfZmx1c2gpOgotICAgICAgICAoX2V3a192aWV3X3NtYXJ0
X3pvb21fd2Vha19zZXQpOgotICAgICAgICAoX2V3a192aWV3X3NtYXJ0X3pvb21fd2Vha19zbW9v
dGhfc2NhbGVfc2V0KToKLSAgICAgICAgKGV3a192aWV3X2JnX2NvbG9yX3NldCk6Ci0gICAgICAg
IChld2tfdmlld19zY3JvbGwpOgotICAgICAgICAoZXdrX3ZpZXdfcm9vdF9ncmFwaGljc19sYXll
cl9zZXQpOgotICAgICAgICAoZXdrX3ZpZXdfbWFya19mb3Jfc3luYyk6Ci0gICAgICAgIChfZXdr
X3ZpZXdfc2Nyb2xsc19mbHVzaCk6IERlbGV0ZWQuCi0gICAgICAgIChfZXdrX3ZpZXdfc2Nyb2xs
X3Byb2Nlc3MpOiBEZWxldGVkLgotICAgICAgICAoX2V3a192aWV3X3NtYXJ0X3Njcm9sbHNfcHJv
Y2Vzcyk6IERlbGV0ZWQuCi0gICAgICAgIChfZXdrX3ZpZXdfc21hcnRfcmVwYWludHNfcHJvY2Vz
cyk6IERlbGV0ZWQuCi0gICAgICAgIChld2tfdmlld19zY3JvbGxzX3Byb2Nlc3MpOiBEZWxldGVk
LgotICAgICAgICAoX2V3a192aWV3X2FjY2VsZXJhdGVkX2NvbXBvc2l0aW5nX2NvbnRleHRfY3Jl
YXRlX2lmX25lZWRlZCk6IERlbGV0ZWQuCi0gICAgICAgIChfZXdrX3ZpZXdfYWNjZWxlcmF0ZWRf
Y29tcG9zaXRpbmdfb2JqZWN0X2NyZWF0ZV9pZl9uZWVkZWQpOiBEZWxldGVkLgotICAgICAgICAq
IGV3ay9ld2tfdmlldy5oOgotCi0yMDE0LTAzLTIzICBIeW93b24gS2ltICA8aHcxMDA4LmtpbUBz
YW1zdW5nLmNvbT4KLQotICAgICAgICBNb3ZlIGFsbCBFRkwgdHlwZWRlZnMgaW50byBFZmxUeXBl
ZGVmcy5oLgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTMwNTExCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgR3l1eW91bmcgS2ltLgotCi0gICAgICAgICog
V2ViQ29yZVN1cHBvcnQvQmF0dGVyeUNsaWVudEVmbC5oOiBSZW1vdmUgRUZMIHR5cGVkZWZzLgot
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5oOiBEaXR0
by4KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuaDogRGl0dG8uCi0g
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVOZXR3b3JraW5nQ29udGV4dEVmbC5oOiBEaXR0
by4KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9OYXZpZ2F0b3JDb250ZW50VXRpbHNDbGllbnRF
ZmwuaDogRGl0dG8uCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvUHJvZ3Jlc3NUcmFja2VyQ2xp
ZW50RWZsLmg6IERpdHRvLgotCi0yMDE0LTAzLTIwICBIeW93b24gS2ltICA8aHcxMDA4LmtpbUBz
YW1zdW5nLmNvbT4KLQotICAgICAgICBNb3ZlIHRvIHVzaW5nIHN0ZDo6dW5pcXVlX3B0ciBmb3Ig
RUZMIG9iamVjdHMuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMjk4NTMKLQotICAgICAgICBSZXZpZXdlZCBieSBHeXV5b3VuZyBLaW0uCi0KLSAgICAg
ICAgRWZsVW5pcXVlUHRyIGlzIGEgdGVtcGxhdGUgYWxpYXMgb2Ygc3RkOjp1bmlxdWVfcHRyCi0g
ICAgICAgIHdpdGggYSBjdXN0b20gZGVsZXRlciBmb3IgZWFjaCBFZmwgT2JqZWN0cywgd2hpY2gg
aXMgbW90aXZhdGVkIGJ5IEdVbmlxdWVQdHIuCi0gICAgICAgIFRoaXMgcGF0Y2ggcmVwbGFjZXMg
dXNlcyBvZiBPd25QdHIgYW5kIFBhc3NPd25QdHIgZm9yIEVmbCBvYmplY3RzIHdpdGggRWZsVW5p
cXVlUHRyLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0NvbnRleHRFZmwuY3BwOgotICAgICAgICAoV2ViQ29yZTo6QWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0NvbnRleHQ6OmluaXRpYWxpemUpOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0FjY2VsZXJh
dGVkQ29tcG9zaXRpbmdDb250ZXh0RWZsLmg6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvQmF0
dGVyeUNsaWVudEVmbC5oOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVl
U3VwcG9ydEVmbC5oOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5o
OgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTmV0d29ya2luZ0NvbnRleHRFZmwuaDoK
LSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9OYXZpZ2F0b3JDb250ZW50VXRpbHNDbGllbnRFZmwu
aDoKLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoX2V3a192aWV3X2VkaXRv
cl9jb21tYW5kX3N0cmluZ19nZXQpOgotICAgICAgICAqIHRlc3RzL1VuaXRUZXN0VXRpbHMvRVdL
VGVzdFZpZXcuY3BwOgotICAgICAgICAoRVdLVW5pdFRlc3RzOjpFV0tUZXN0Vmlldzo6aW5pdCk6
Ci0gICAgICAgICogdGVzdHMvVW5pdFRlc3RVdGlscy9FV0tUZXN0Vmlldy5oOgotCi0yMDE0LTAz
LTE0ICBNYWNpZWogU3RhY2hvd2lhayAgPG1qc0BhcHBsZS5jb20+Ci0KLSAgICAgICAgUmVwbGFj
ZSAiQXBwbGUgQ29tcHV0ZXIsIEluYy4iIHdpdGggIkFwcGxlIEluYy4iIGluIGNvcHlyaWdodCBo
ZWFkZXJzCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MzAyNzYKLSAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE2MjY2OTI3PgotCi0gICAgICAgIFJldmll
d2VkIGJ5IFNpbW9uIEZyYXNlci4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNs
aWVudEVmbC5jcHA6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ29udGV4dE1lbnVDbGllbnRF
ZmwuY3BwOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0NvbnRleHRNZW51Q2xpZW50RWZsLmg6
Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRGV2aWNlTW90aW9uQ2xpZW50RWZsLmNwcDoKLSAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EZXZpY2VPcmllbnRhdGlvbkNsaWVudEVmbC5jcHA6Ci0g
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHJhZ0NsaWVudEVmbC5jcHA6Ci0gICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmg6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50RWZsLmg6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVOZXR3b3Jr
aW5nQ29udGV4dEVmbC5jcHA6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVOZXR3b3Jr
aW5nQ29udGV4dEVmbC5oOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVu
dEVmbC5oOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L05hdmlnYXRvckNvbnRlbnRVdGlsc0Ns
aWVudEVmbC5jcHA6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvTmF2aWdhdG9yQ29udGVudFV0
aWxzQ2xpZW50RWZsLmg6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvTmV0d29ya0luZm9DbGll
bnRFZmwuY3BwOgotCi0yMDE0LTAzLTEyICBTZXJnaW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBp
Z2FsaWEuY29tPgotCi0gICAgICAgIFJlbmFtZSBERUZJTkVfU1RBVElDX0xPQ0FMIHRvIERFUFJF
Q0FURURfREVGSU5FX1NUQVRJQ19MT0NBTAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTI5NjEyCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRs
ZXIuCi0KLSAgICAgICAgRm9yIG5ldyBjb2RlIHVzZSBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VD4g
aW5zdGVhZC4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0Vm
bC5jcHA6Ci0gICAgICAgIChQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6OmluaXRpYWxpemUpOgotICAg
ICAgICAqIGV3ay9ld2tfbWFpbi5jcHA6Ci0gICAgICAgICh0cmFja2VyQ2xpZW50KToKLQotMjAx
NC0wMy0xMiAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KLQotICAgICAgICBXZWIgSW5z
cGVjdG9yOiBSZW1vdmUgdW51c2VkIGNhbGxJZCBwYXJhbWV0ZXIgZnJvbSBldmFsdWF0ZUluV2Vi
SW5zcGVjdG9yCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMjk3NDQKLQotICAgICAgICBSZXZpZXdlZCBieSBUaW1vdGh5IEhhdGNoZXIuCi0KLSAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwOgotICAgICAg
ICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpldmFsdWF0ZUluV2ViSW5zcGVjdG9yKToKLSAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuaDoKLQotMjAx
NC0wMy0xMiAgSHlvd29uIEtpbSAgPGh3MTAwOC5raW1Ac2Ftc3VuZy5jb20+Ci0KLSAgICAgICAg
W0VGTF0gUmV2aXNlIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFZmwgaW1wbGVtZW50YXRpb24uCi0g
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzAwNzIKLQot
ICAgICAgICBSZXZpZXdlZCBieSBHeXV5b3VuZyBLaW0uCi0KLSAgICAgICAgVGhpcyBwYXRjaCBy
ZXZpc2VzIHRoZSBBY2NlbGVyYXRlZENvbXBvc2l0aW5nRWZsIGNsYXNzIGltcGxlbWVudGF0aW9u
Ci0gICAgICAgIHNpbWlsYXIgd2l0aCBndGsgcG9ydC4KLSAgICAgICAgQW5kIGFjY2VsZXJhdGVk
IGNvbXBvc2l0aW5nIHdpbGwgYmUgZW5hYmxlZCBieSBkZWZhdWx0IG9uIFdLMSBlZmwuCi0KLSAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dEVmbC5j
cHA6Ci0gICAgICAgIChXZWJDb3JlOjpBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6QWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQpOgotICAgICAgICAoV2ViQ29yZTo6QWNjZWxlcmF0
ZWRDb21wb3NpdGluZ0NvbnRleHQ6OmluaXRpYWxpemUpOgotICAgICAgICAoV2ViQ29yZTo6QWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OnN5bmNMYXllcnMpOgotICAgICAgICAoV2ViQ29y
ZTo6QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OnJlc2l6ZSk6Ci0gICAgICAgIChXZWJD
b3JlOjpBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6Y2FuQ29tcG9zaXRlKToKLSAgICAg
ICAgKFdlYkNvcmU6OkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjpmbHVzaEFuZFJlbmRl
ckxheWVycyk6Ci0gICAgICAgIChXZWJDb3JlOjpBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4
dDo6Zmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzKToKLSAgICAgICAgKFdlYkNvcmU6OkFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdDb250ZXh0Ojpjb21wb3NpdGVMYXllcnNUb0NvbnRleHQpOgotICAgICAg
ICAoV2ViQ29yZTo6QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OmF0dGFjaFJvb3RHcmFw
aGljc0xheWVyKToKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0
aW5nQ29udGV4dEVmbC5oOgotICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChf
ZXdrX3ZpZXdfcHJpdl9uZXcpOgotICAgICAgICAoX2V3a192aWV3X2FjY2VsZXJhdGVkX2NvbXBv
c2l0aW5nX2NiKToKLSAgICAgICAgKF9ld2tfdmlld19hY2NlbGVyYXRlZF9jb21wb3NpdGluZ19j
b250ZXh0X2NyZWF0ZV9pZl9uZWVkZWQpOgotCi0yMDE0LTAzLTEwICBIeW93b24gS2ltICA8aHcx
MDA4LmtpbUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBbRUZMXSBNb2RpZnkgYWNjZWxlcmF0ZWQg
Y29tcG9zaXRpbmcgcmVsYXRlZCBmdW5jdGlvbnMgaW4gZXdrX3ZpZXcuCi0gICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjk4NzUKLQotICAgICAgICBSZXZp
ZXdlZCBieSBHeXV5b3VuZyBLaW0uCi0KLSAgICAgICAgVGhlIGNvbXBvc2l0aW5nIG9iamVjdCB3
aWxsIGJlIGNyZWF0ZWQgd2hlbiByb290IGxheWVyIGlzIGF0dGFjaGVkLgotICAgICAgICBTbyB3
ZSBkb24ndCBuZWVkIHRvIGV4cG9zZSB0aGUgY3JlYXRlIGZ1bmN0aW9uLgotICAgICAgICBBbmQg
dGhpcyBwYXRjaCBhZGRzIHNob3coKSwgaGlkZSgpIGFuZCByZXNpemUoKSBmb3IgY29tcG9zaXRp
bmcgb2JqZWN0LgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3Np
dGluZ0NvbnRleHRFZmwuaDogbW92ZSByZXNpemUoKSB0byBwdWJsaWMuCi0gICAgICAgICogZXdr
L2V3a192aWV3LmNwcDoKLSAgICAgICAgKF9ld2tfdmlld19zbWFydF9yZXNpemUpOiBhZGQgdG8g
cmVzaXplIHRoZSBjb21wb3NpdGluZyBvYmplY3QuCi0gICAgICAgIChfZXdrX3ZpZXdfc21hcnRf
c2hvdyk6IGFkZCB0byBzaG93IHRoZSBjb21wb3NpdGluZyBvYmplY3QuCi0gICAgICAgIChfZXdr
X3ZpZXdfc21hcnRfaGlkZSk6IGFkZCB0byBoaWRlIHRoZSBjb21wb3NpdGluZyBvYmplY3QuCi0g
ICAgICAgIChfZXdrX3ZpZXdfYWNjZWxlcmF0ZWRfY29tcG9zaXRpbmdfY29udGV4dF9jcmVhdGVf
aWZfbmVlZGVkKToKLSAgICAgICAgbW9kaWZ5IHRoZSBjcmVhdGlvbiBmb3IgdGhlIGNvbXBvc2l0
aW5nIG9iamVjdC4KLSAgICAgICAgKF9ld2tfdmlld19hY2NlbGVyYXRlZF9jb21wb3NpdGluZ19v
YmplY3RfY3JlYXRlX2lmX25lZWRlZCk6Ci0gICAgICAgIGFkZCBhIHJldHVybiB2YWx1ZS4KLSAg
ICAgICAgKGV3a192aWV3X3Jvb3RfZ3JhcGhpY3NfbGF5ZXJfc2V0KToKLSAgICAgICAgSWYgcm9v
dCBsYXllciBpcyBub3QgMCwgd2UgY3JlYXRlIHRoZSBjb21wb3NpdGluZyBvYmplY3QgYW5kIEFj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LgotICAgICAgICAqIGV3ay9ld2tfdmlld19wcml2
YXRlLmg6IHJlbW92ZSB0byBleHBvc2UgdGhlIGNvbXBvc2l0aW5nIG9iamVjdCBjcmVhdGlvbiBB
UEkuCi0KLTIwMTQtMDMtMDcgIEh5b3dvbiBLaW0gIDxodzEwMDgua2ltQHNhbXN1bmcuY29tPgot
Ci0gICAgICAgIFtFRkxdIFJlcGxhY2UgR3JhcGhpY3NDb250ZXh0M0Qgd2l0aCBFdmFzX0dMIGlu
IEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LgotICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI5Njc2Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgR3l1
eW91bmcgS2ltLgotCi0gICAgICAgIFRleHR1cmVNYXBwZXJHTCBoYXMgaXRzIG93biBHcmFwaGlj
c0NvbnRleHQzRCBjcmVhdGVkIGJ5IGNyZWF0ZUZvckN1cnJlbnRHTENvbnRleHQoKS4KLSAgICAg
ICAgU28gQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQgZG9lc24ndCBuZWVkIHRvIGNyZWF0
ZSBhbmQgc2V0IGl0IHRvIFRleHR1cmVNYXBwZXJHTC4KLQotICAgICAgICBXZSBub3cgc2hvdWxk
IGRvICdtYWtlQ3VycmVudENvbnRleHQnIHdpdGggYSBwbGF0Zm9ybSBzcGVjaWZpYyBjb250ZXh0
IGJlZm9yZSBjcmVhdGVGb3JDdXJyZW50R0xDb250ZXh0KCkuCi0gICAgICAgIFRoaXMgcGF0Y2gg
cmVtb3ZlcyBHcmFwaGljc0NvbnRleHQzRCByZWxhdGVkIGNvZGVzIGluIEFjY2VsZXJhdGVkQ29t
cG9zaXRpbmdDb250ZXh0Ci0gICAgICAgIGFuZCBhZGRzIEV2YXNHTENvbnRleHQvU3VyZmFjZSB0
byBpdCBpbnN0ZWFkLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21w
b3NpdGluZ0NvbnRleHRFZmwuY3BwOgotICAgICAgICAoV2ViQ29yZTo6QWNjZWxlcmF0ZWRDb21w
b3NpdGluZ0NvbnRleHQ6OmluaXRpYWxpemUpOgotICAgICAgICAoV2ViQ29yZTo6QWNjZWxlcmF0
ZWRDb21wb3NpdGluZ0NvbnRleHQ6OnJlc2l6ZSk6Ci0gICAgICAgIChXZWJDb3JlOjpBY2NlbGVy
YXRlZENvbXBvc2l0aW5nQ29udGV4dDo6cmVuZGVyTGF5ZXJzKToKLSAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dEVmbC5oOgotICAgICAgICAqIGV3
ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgICogZXdrL2V3a192aWV3X3ByaXZhdGUuaDoKLQotMjAx
NC0wMy0wNCAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgotCi0gICAgICAgIEVuYWJs
ZSBkZXZpY2UgcGl4ZWwgcmVwYWludCByZWN0IHRyYWNraW5nLgotICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI5NzEyCi0KLSAgICAgICAgUmV2aWV3ZWQg
YnkgU2ltb24gRnJhc2VyLgotCi0gICAgICAgIFRyYWNrZWQgcmVwYWludCByZWN0cyBhcmUgZGV2
aWNlIHBpeGVsIHNuYXBwZWQgbm93IHRvIHN1cHBvcnQgaGlEUEkgdGVzdCBjYXNlcy4KLQotICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHA6Ci0gICAg
ICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OnRyYWNrZWRSZXBhaW50UmVjdHMpOgotCi0y
MDE0LTAyLTI1ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+Ci0KLSAgICAg
ICAgR2V0IHJpZCBvZiBWaXNpdGVkTGlua1N0cmF0ZWd5Ci0gICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjkzMjQKLQotICAgICAgICBSZXZpZXdlZCBieSBE
YW4gQmVybnN0ZWluLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVn
aWVzRWZsLmNwcDoKLSAgICAgICAgKFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6Z2V0UGx1Z2luSW5m
byk6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzRWZsLmg6Ci0K
LTIwMTQtMDItMjQgIFJlbmF0YSBIb2RvdmFuICA8cmhvZG92YW4udS1zemVnZWRAcGFydG5lci5z
YW1zdW5nLmNvbT4KLQotICAgICAgICBHZXQgcmlkIG9mIHRoZSB1bnVzZWQgJ2ltbWVkaWF0ZScg
cGFyYW1ldGVycyBmcm9tIHJlcGFpbnQgcmVsYXRlZCBmdW5jdGlvbnMKLSAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyOTExMQotCi0gICAgICAgIFJldmll
d2VkIGJ5IFNpbW9uIEZyYXNlci4KLQotICAgICAgICBSZW1vdmluZyB0aGUgJ2ltbWVkaWF0ZScg
cGFyYW1ldGVycyBmcm9tIHJlcGFpbnQgcmVsYXRlZCBmdW5jdGlvbnMgLSBhY2NvcmluZwotICAg
ICAgICB0byB0aGUgRklYTUUgaW4gUmVuZGVyVmlldzo6cmVwYWludFZpZXdSZWN0YW5nbGUoKSAt
IHNpbmNlIHRoZXkgaGF2ZSBubyBlZmZlY3QuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9D
aHJvbWVDbGllbnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZsOjpp
bnZhbGlkYXRlQ29udGVudHMpOgotICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZsOjpp
bnZhbGlkYXRlUm9vdFZpZXcpOgotICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZsOjpp
bnZhbGlkYXRlQ29udGVudHNBbmRSb290Vmlldyk6Ci0gICAgICAgIChXZWJDb3JlOjpDaHJvbWVD
bGllbnRFZmw6OmludmFsaWRhdGVDb250ZW50c0ZvclNsb3dTY3JvbGwpOgotICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oOgotCi0yMDE0LTAyLTIzICBHeXV5b3VuZyBL
aW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgQ2hhbmdlIGEgdXJsIHBh
cmFtZXRlciB0eXBlIHdpdGggVVJMIGluIE5hdmlnYXRvckNvbnRlbnRVdGlscwotICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI5MjAyCi0KLSAgICAgICAg
UmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KLQotICAgICAgICBJdCB3b3VsZCBiZSBnb29kIGlmIHdl
IHVzZSAqVVJMKiBmb3IgdXJsIHBhcmFtZXRlcnMgaW5zdGVhZCBvZiB1c2luZyBTdHJpbmcuCi0K
LSAgICAgICAgTWVyZ2UgZnJvbSBibGluay4gaHR0cHM6Ly9zcmMuY2hyb21pdW0ub3JnL3ZpZXd2
Yy9ibGluaz92aWV3PXJldiZyZXZpc2lvbj0xNjU0NTguCi0KLSAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9OYXZpZ2F0b3JDb250ZW50VXRpbHNDbGllbnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29y
ZTo6TmF2aWdhdG9yQ29udGVudFV0aWxzQ2xpZW50RWZsOjpyZWdpc3RlclByb3RvY29sSGFuZGxl
cik6Ci0gICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JDb250ZW50VXRpbHNDbGllbnRFZmw6Omlz
UHJvdG9jb2xIYW5kbGVyUmVnaXN0ZXJlZCk6Ci0gICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JD
b250ZW50VXRpbHNDbGllbnRFZmw6OnVucmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIpOgotICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L05hdmlnYXRvckNvbnRlbnRVdGlsc0NsaWVudEVmbC5oOgotCi0y
MDE0LTAyLTE3ICBTZXJnaW8gQ29ycmVpYSAgPHNlcmdpby5jb3JyZWlhQG9wZW5ib3NzYS5vcmc+
Ci0KLSAgICAgICAgUmVwbGFjZSB1c2VzIG9mIFBhc3NPd25QdHIvT3duUHRyIHdpdGggc3RkOjp1
bmlxdWVfcHRyIGluIFdlYkNvcmUvaW5zcGVjdG9yCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjg2ODEKLQotICAgICAgICBSZXZpZXdlZCBieSBUaW1v
dGh5IEhhdGNoZXIuCi0KLSAgICAgICAgQW5vdGhlciBzdGVwIHRvd2FyZHMgZ2V0dGluZyByaWQg
b2YgUGFzc093blB0ci9Pd25QdHIsIG5vdyB0YXJnZXRpbmcKLSAgICAgICAgV2ViQ29yZS9pbnNw
ZWN0b3IvKi4gQmVzaWRlcyBmaWxlcyBpbiB0aGVyZSwgYSBmZXcgb3RoZXIgZmlsZXMgaW4KLSAg
ICAgICAgSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yLCBXZWJLaXQvLCBXZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvCi0gICAgICAgIGFuZCBXZWJDb3JlL3Rlc3Rpbmcgd2VyZSB0b3Vj
aGVkLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50RWZsLmNwcDoK
LQotMjAxNC0wMi0xNSAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3VuZy5jb20+Ci0KLSAg
ICAgICAgW0VGTF1bV0sxXSBEbyBub3QgaW5jbHVkZSBjYWlybyBoZWFkZXIgaW4gdGhlIHB1Ymxp
YyBoZWFkZXJzCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMjg3NzkKLQotICAgICAgICBSZXZpZXdlZCBieSBHeXV5b3VuZyBLaW0uCi0KLSAgICAgICAg
QWx0aG91Z2ggZXdlYmtpdCB1c2VkIGNhaXJvIGludGVybmFsbHksIGl0J3Mgbm90IGdvb2QgZm9y
IEVGTCBkZXZlbG9wZXJzCi0gICAgICAgIHRvIHVzZSBpdC4KLSAgICAgICAgSW5kZWVkLCBhbG1v
c3QgQVBJcyB3aGljaCByZXR1cm5zIGNhaXJvX3N1cmZhY2UgYXJlIGR1cGxpY2F0ZWQgd2l0aCBv
dGhlciBBUElzCi0gICAgICAgIHdoaWNoIHJldHVybnMgZXZhc19vYmplY3QuCi0KLSAgICAgICAg
KiBld2svZXdrX2hpc3RvcnkuY3BwOgotICAgICAgICBSZW1vdmVkIGV3a19oaXN0b3J5X2l0ZW1f
aWNvbl9zdXJmYWNlX2dldC4KLSAgICAgICAgZXdrX2hpc3RvcnlfaXRlbV9pY29uX29iamVjdF9h
ZGQgd2lsbCBiZSB1c2VkIGluc3RlYWQuCi0gICAgICAgICogZXdrL2V3a19oaXN0b3J5Lmg6Ci0g
ICAgICAgICogZXdrL2V3a19zZXR0aW5ncy5jcHA6Ci0gICAgICAgIFJlbW92ZWQgZXdrX3NldHRp
bmdzX2ljb25fZGF0YWJhc2VfaWNvbl9zdXJmYWNlX2dldC4KLSAgICAgICAgZXdrX3NldHRpbmdz
X2ljb25fZGF0YWJhc2VfaWNvbl9vYmplY3RfZ2V0IHdpbGwgYmUgdXNlZCBpbnN0ZWFkLgotICAg
ICAgICAqIGV3ay9ld2tfc2V0dGluZ3MuaDoKLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgot
ICAgICAgICAoZXdrX3ZpZXdfc2NyZWVuc2hvdF9jb250ZW50c19nZXQpOgotICAgICAgICBJbXBs
ZW1lbnRlZCB0byByZXBsYWNlIGV3a192aWV3X3BhaW50IGFuZCBld2tfdmlld19wYWludF9jb250
ZW50cy4KLSAgICAgICAgKiBld2svZXdrX3ZpZXcuaDoKLSAgICAgICAgKiB0ZXN0cy90ZXN0X2V3
a192aWV3LmNwcDoKLSAgICAgICAgKFRFU1RfRik6IEFkZGVkIHRlc3QgY2FzZSBmb3IgZXdrX3Zp
ZXdfc2NyZWVuc2hvdF9jb250ZW50c19nZXQKLQotMjAxNC0wMi0xMyAgUnl1YW4gQ2hvaSAgPHJ5
dWFuLmNob2lAc2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW0VGTF1bV0sxXSBEbyBub3QgaW5jbHVk
ZSBsaWJzb3VwIGhlYWRlciBpbiB0aGUgcHVibGljIGhlYWRlcnMKLSAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyODcwMQotCi0gICAgICAgIFJldmlld2Vk
IGJ5IEd5dXlvdW5nIEtpbS4KLQotICAgICAgICBBbHRob3VnaCBld2Via2l0IHVzZWQgbGlic291
cCBpbnRlcm5hbGx5LCBpdCdzIG5vdCBnb29kIGZvciBFRkwgZGV2ZWxvcGVycwotICAgICAgICB0
byB1c2UgaXQuCi0gICAgICAgIEluc3RlYWQsIHdlIHNob3VsZCBwcm92aWRlIHNvbWUgd3JhcHBl
ciBBUElzIGxpa2UgZXdrX25ldHdvcmtfcHJveHlfdXJpX3NldAotICAgICAgICBmb3IgZnV0dXJl
IGNoYW5nZXMuCi0KLSAgICAgICAgKiBld2svZXdrX25ldHdvcmsuY3BwOiBSZW1vdmVkIHNvdXAg
cmVsYXRlZCBoZWFkZXIsQVBJcyBhbmQgY29tbWVudHMuCi0gICAgICAgIChld2tfbmV0d29ya190
bHNfY2FfY2VydGlmaWNhdGVzX3BhdGhfc2V0KToKLSAgICAgICAgKiBld2svZXdrX25ldHdvcmsu
aDogRGl0dG8uCi0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDogRGl0dG8uCi0gICAgICAgICog
ZXdrL2V3a192aWV3Lmg6IERpdHRvLgotCi0yMDE0LTAyLTEyICBSYXBoYWVsIEt1Ym8gZGEgQ29z
dGEgIDxyYXBoYWVsLmt1Ym8uZGEuY29zdGFAaW50ZWwuY29tPgotCi0gICAgICAgIFVwZGF0ZSB0
aGUgSFRNTCBNZWRpYSBDYXB0dXJlIGltcGxlbWVudGF0aW9uLgotICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE4NDY1Ci0KLSAgICAgICAgUmV2aWV3ZWQg
YnkgRGFyaW4gQWRsZXIuCi0KLSAgICAgICAgTWFrZSB0aGUgaW1wbGVtZW50YXRpb24gaW4gV2Vi
S2l0IGNvbXBhdGlibGUgd2l0aCB0aGUgMjAxMy0wNS0wOQotICAgICAgICB2ZXJzaW9uIG9mIHRo
ZSBzcGVjLCB3aGljaCBtYWtlcyB0aGUgImNhcHR1cmUiIGF0dHJpYnV0ZSBhIGJvb2xlYW4KLSAg
ICAgICAgaW5zdGVhZCBvZiBhbiBlbnVtLgotCi0gICAgICAgICogZXdrL2V3a19maWxlX2Nob29z
ZXIuY3BwOgotICAgICAgICAoZXdrX2ZpbGVfY2hvb3Nlcl9jYXB0dXJlX2dldCk6IFJldHVybiBh
biBFaW5hX0Jvb2wgbm93LgotICAgICAgICAqIGV3ay9ld2tfZmlsZV9jaG9vc2VyLmg6IEdldCBy
aWQgb2YgRXdrX0ZpbGVfQ2hvb3Nlcl9DYXB0dXJlX1R5cGUuCi0KLTIwMTQtMDItMDkgIFJ5dWFu
IENob2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxdIFJlbW92ZSBQ
YWdlQ2xpZW50RWZsCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMjg1MDgKLQotICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgotCi0gICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHRFZmwuY3Bw
OgotICAgICAgICBSZW1vdmVkIGRlcGVuZGVuY2llcyBvZiBQYWdlQ2xpZW50RWZsLgotICAgICAg
ICAoV2ViQ29yZTo6QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OmluaXRpYWxpemUpOgot
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChX
ZWJDb3JlOjpDaHJvbWVDbGllbnRFZmw6OnBsYXRmb3JtUGFnZUNsaWVudCk6Ci0gICAgICAgICog
V2ViQ29yZVN1cHBvcnQvUGFnZUNsaWVudEVmbC5jcHA6IFJlbW92ZWQuCi0gICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvUGFnZUNsaWVudEVmbC5oOiBSZW1vdmVkLgotICAgICAgICAqIGV3ay9ld2tf
dmlldy5jcHA6Ci0gICAgICAgIChfZXdrX3ZpZXdfcHJpdl9uZXcpOgotCi0yMDE0LTAyLTA4ICBS
eW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgotCi0gICAgICAgIENsZWFudXAgdGhlIGlu
dGVyZmFjZSBvZiBGcmFtZVNlbGVjdGlvbgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTI4NDgxCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBL
bGluZy4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVm
bC5jcHA6Ci0gICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OnNlbGVjdGlvblJlY3Rh
bmdsZSk6Ci0KLTIwMTQtMDItMDggIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgotCi0g
ICAgICAgIENoYW5nZSBUZXh0SXRlcmF0b3IgdG8gdXNlIFN0cmluZ1ZpZXcsIHByZXBhcmluZyB0
byB3ZWFuIGl0IGZyb20gZGVwcmVjYXRlZENoYXJhY3RlcnMKLSAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyODIzMwotCi0gICAgICAgIFJldmlld2VkIGJ5
IEFuZGVycyBDYXJsc3Nvbi4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVu
dEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRFZmw6OmNoZWNrU3BlbGxp
bmdPZlN0cmluZyk6IFVzZSBTdHJpbmdWaWV3LgotICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xp
ZW50RWZsOjpjaGVja0dyYW1tYXJPZlN0cmluZyk6IERpdHRvLgotICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0VkaXRvckNsaWVudEVmbC5oOiBEaXR0by4KLQotMjAxNC0wMi0wNyAgR2F2aW4gQmFy
cmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+Ci0KLSAgICAgICAgUmVtb3ZlIGlzSW5p
dGlhbFN0YXRlIGZsYWcgZnJvbSBQYWdlOjpzZXRWaWV3U3RhdGUKLSAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyODQyOAotCi0gICAgICAgIFJldmlld2Vk
IGJ5IFNhbSBXZWluaWcuCi0KLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAo
ZXdrX3ZpZXdfdmlzaWJpbGl0eV9zdGF0ZV9zZXQpOgotICAgICAgICAgICAgLSBkb24ndCBwYXNz
IGlzSW5pdGlhbFN0YXRlIHRvIHNldFZpZXdTdGF0ZS4KLQotMjAxNC0wMi0wNSAgQW5kcmVhcyBL
bGluZyAgPGFrbGluZ0BhcHBsZS5jb20+Ci0KLSAgICAgICAgUmVtb3ZlIEVOQUJMRShESVJFQ1RP
UllfVVBMT0FEKS4KLSAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzEyODI3NT4KLQotICAg
ICAgICBSdWJiZXItc3RhbXBlZCBieSBSeW9zdWtlIE5pd2EuCi0KLSAgICAgICAgKiBld2svZXdr
X2ZpbGVfY2hvb3Nlci5jcHA6Ci0gICAgICAgIChld2tfZmlsZV9jaG9vc2VyX2FsbG93c19kaXJl
Y3RvcnlfdXBsb2FkX2dldCk6Ci0KLTIwMTQtMDItMDQgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdA
YXBwbGUuY29tPgotCi0gICAgICAgIFJlbW92ZSA8aWZyYW1lIHNlYW1sZXNzPiBzdXBwb3J0Lgot
ICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTI4MjEzPgotCi0gICAgICAgIFJ1YmJlci1z
dGFtcGVkIGJ5IEFudHRpIEtvaXZpc3RvLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVt
cFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcDoKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1w
UmVuZGVyVHJlZVN1cHBvcnRFZmwuaDoKLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAg
ICAgICAoX2V3a192aWV3X3ByaXZfbmV3KToKLQotMjAxNC0wMS0zMSAgUnlvc3VrZSBOaXdhICA8
cm5pd2FAd2Via2l0Lm9yZz4KLQotICAgICAgICBSZW1vdmUgaW5saW5lIG1lbWJlciBmdW5jdGlv
bnMgb2YgRnJhbWVTZWxlY3Rpb24gdGhhdCBhY2Nlc3MgbV9zZWxlY3Rpb24KLSAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNzk4NgotCi0gICAgICAgIFJl
dmlld2VkIGJ5IEVucmljYSBDYXN1Y2NpLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVt
cFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcDoKLSAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9y
dEVmbDo6c2VsZWN0ZWRSYW5nZSk6Ci0gICAgICAgICogZXdrL2V3a19mcmFtZS5jcHA6Ci0gICAg
ICAgIChld2tfZnJhbWVfdGV4dF9zZWxlY3Rpb25fdHlwZV9nZXQpOgotCi0yMDE0LTAxLTMwICBB
bmRyZWkgQnVjdXIgIDxhYnVjdXJAYWRvYmUuY29tPgotCi0gICAgICAgIFJlbW92ZSB0aGUgQUND
RUxFUkFURURfQ09NUE9TSVRJTkcgZmxhZwotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTI3ODMzCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQW50dGkgS29p
dmlzdG8uCi0KLSAgICAgICAgUmVtb3ZlIHRoZSBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcp
IGNvbmRpdGlvbmFscyBmcm9tIHRoZSBjb2RlIGJhc2UgYW5kIG1ha2UgQUMKLSAgICAgICAgbWFu
ZGF0b3J5LgotCi0gICAgICAgIEFub3RoZXIgcGF0Y2ggd2lsbCBiZSByZXF1aXJlZCB0byByZW1v
dmUgdGhlIGZsYWcgc3VwcG9ydCBmcm9tIHRoZSBFRkwgYnVpbGQgc3lzdGVtLgotCi0gICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHRFZmwuY3BwOgot
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0RWZs
Lmg6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcDoKLSAgICAg
ICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEVmbDo6YWxsb3dlZENvbXBvc2l0aW5nVHJpZ2dlcnMp
OgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oOgotICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L1BhZ2VDbGllbnRFZmwuY3BwOgotICAgICAgICAoUGFnZUNsaWVudEVm
bDo6YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQpOgotICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1BhZ2VDbGllbnRFZmwuaDoKLSAgICAgICAgKiBld2svZXdrX3ByaXZhdGUuaDoKLSAgICAg
ICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoX2V3a192aWV3X3ByaXZfbmV3KToKLSAg
ICAgICAgKF9ld2tfdmlld19wcml2X2RlbCk6Ci0gICAgICAgIChld2tfdmlld19tYXJrX2Zvcl9z
eW5jKToKLSAgICAgICAgKiBld2svZXdrX3ZpZXdfcHJpdmF0ZS5oOgotCi0yMDE0LTAxLTI5ICBS
eXVhbiBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBFRkwgcG9ydCBz
aG91bGQgc3RvcCB1c2luZyBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNIG1hY3JvcwotICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3ODAxCi0KLSAg
ICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJzIENhcmxzc29uLgotCi0gICAgICAgIEluc3RlYWQgb2Yg
Q09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTVMgd2l0aCBzdGF0aWNfY2FzdCwgdGhpcyBwYXRj
aAotICAgICAgICBhZGRlZCBzd2l0Y2ggYW5kIGNvbnZlcnNpb24gZnVuY3Rpb25zIGlmIG5lZWRl
ZC4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwOiBS
ZW1vdmVkLgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNw
cDoKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgotICAgICAgICAqIGV3ay9ld2tfY29udGV4dG1l
bnUuY3BwOgotICAgICAgICAodG9Fd2tDb250ZXh0TWVudUFjdGlvbik6Ci0gICAgICAgICogZXdr
L2V3a19jb250ZXh0bWVudS5oOgotICAgICAgICBBZGRlZCBtaXNzaW5nIGVudW0gdmFyaWFibGVz
LiBUaGVzZSBhcmUgcmVxdWlyZWQgbm90IHRvIGJyZWFrIHRoZSBidWlsZC4KLSAgICAgICAgKiBl
d2svZXdrX2ZyYW1lLmNwcDoKLSAgICAgICAgKGV3a19mcmFtZV90ZXh0X3NlbGVjdGlvbl90eXBl
X2dldCk6Ci0gICAgICAgICogZXdrL2V3a190b3VjaF9ldmVudC5jcHA6Ci0gICAgICAgICh0b1Bs
YXRmb3JtVG91Y2hQb2ludFN0YXRlKToKLSAgICAgICAgKFdlYktpdFBsYXRmb3JtVG91Y2hFdmVu
dDo6V2ViS2l0UGxhdGZvcm1Ub3VjaEV2ZW50KToKLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3Bw
OgotICAgICAgICAoZXdrX3ZpZXdfdGV4dF9kaXJlY3Rpb25fc2V0KToKLSAgICAgICAgKGV3a192
aWV3X25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uKToKLSAgICAgICAgKHRvVmlld01vZGUpOgot
ICAgICAgICAodG9Fd2tWaWV3TW9kZSk6Ci0gICAgICAgIChld2tfdmlld19tb2RlX3NldCk6Ci0g
ICAgICAgIChld2tfdmlld19tb2RlX2dldCk6Ci0gICAgICAgIChld2tfdmlld192aXNpYmlsaXR5
X3N0YXRlX2dldCk6Ci0gICAgICAgICogZXdrL2V3a192aWV3X3ByaXZhdGUuaDoKLQotMjAxNC0w
MS0yOCAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+Ci0KLSAgICAgICAgUmVt
b3ZlIHVubmVjZXNzYXJ5IGZvcndhcmQgZGVjbGFyYXRpb25zIG9mIE1lc3NhZ2VQb3J0Q2hhbm5l
bCwgTWVzc2FnZVBvcnRDaGFubmVsQXJyYXkgaW4gRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmgK
LSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNzY1NAot
Ci0gICAgICAgIFJldmlld2VkIGJ5IEFsZXhleSBQcm9za3VyeWFrb3YuCi0KLSAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuaDogUmVtb3ZlIHRoZSBmb3J3
YXJkIGRlY2xhcmF0aW9ucyBvZiBNZXNzYWdlUG9ydENoYW5uZWwKLSAgICAgICAgYW5kIE1lc3Nh
Z2VQb3J0Q2hhbm5lbEFycmF5LiBUaGV5IHdlcmUgbW9zdCBsaWtlbHkgYXQgb25lIHBvaW50IHVz
ZWQgaW4gRFJUIHN1cHBvcnQgbWV0aG9kcywgYnV0IGFyZQotICAgICAgICBub3QgbmVjZXNzYXJ5
IGFueW1vcmUuCi0KLTIwMTQtMDEtMjcgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBp
Z2FsaWEuY29tPgotCi0gICAgICAgIFtHVEtdIE1ha2Ugd2Via2l0X3VyaV9zY2hlbWVfcmVxdWVz
dF9nZXRfd2ViX3ZpZXcoKSB3b3JrIHdpdGggQ3VzdG9tUHJvdG9jb2xzCi0gICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjc2MTQKLQotICAgICAgICBSZXZp
ZXdlZCBieSBHdXN0YXZvIE5vcm9uaGEgU2lsdmEuCi0KLSAgICAgICAgUmVtb3ZlIGluaXRpYXRp
bmdQYWdlSUQoKSBtZXRob2QgZm9ybSB0aGUgRnJhbWVOZXR3b3JraW5nQ29udGV4dC4KLQotICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTmV0d29ya2luZ0NvbnRleHRFZmwuY3BwOgotICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTmV0d29ya2luZ0NvbnRleHRFZmwuaDoKLQotMjAx
NC0wMS0yNyAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3VuZy5jb20+Ci0KLSAgICAgICAg
W0VGTF1bV0sxXSBSZW1vdmUgZXdrX2hpc3RvcnlfaXRlbV90aW1lX2xhc3RfdmlzaXRlZF9nZXQg
YW5kIGV3a19oaXN0b3J5X2l0ZW1fdmlzaXRfY291bnQKLSAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNzY2MgotCi0gICAgICAgIFJldmlld2VkIGJ5IEd5
dXlvdW5nIEtpbS4KLQotICAgICAgICBUaGVzZSBBUElzIGFyZSBleHBvc2luZyBXZWJDb3JlJ3Mg
aW50ZXJuYWwgc3RydWN0dXJlLCBidXQgdGhleSByZW1vdmVkCi0gICAgICAgIGZyb20gV2ViQ29y
ZSBzaW5jZSAxNjI4MDguCi0KLSAgICAgICAgVGhpcyBwYXRjaCByZW1vdmVkIG5vdCB0byBzdXBw
b3J0IHRoZW0gYmVjYXVzZSBhcHBsaWNhdGlvbnMgY2FuIGRvIGl0Ci0gICAgICAgIGlmIHRoZXkg
d2FudC4KLQotICAgICAgICAqIGV3ay9ld2tfaGlzdG9yeS5jcHA6Ci0gICAgICAgICogZXdrL2V3
a19oaXN0b3J5Lmg6Ci0KLTIwMTQtMDEtMjYgIFJ5dWFuIENob2kgIDxyeXVhbi5jaG9pQHNhbXN1
bmcuY29tPgotCi0gICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4IG9uIHRoZSBFRkwgYnVpbGQg
c2luY2UgcjE2MjgwOAotCi0gICAgICAgIGxhc3RWaXNpdGVkVGltZSBhbmQgdmlzaXRDb3VudCBh
cmUgcmVtb3ZlZCBmcm9tIFdlYkNvcmU6Okhpc3RvcnlJdGVtCi0KLSAgICAgICAgKiBld2svZXdr
X2hpc3RvcnkuY3BwOgotICAgICAgICAoZXdrX2hpc3RvcnlfaXRlbV9uZXcpOgotICAgICAgICAo
ZXdrX2hpc3RvcnlfaXRlbV90aW1lX2xhc3RfdmlzaXRlZF9nZXQpOgotICAgICAgICAoZXdrX2hp
c3RvcnlfaXRlbV92aXNpdF9jb3VudCk6Ci0KLTIwMTQtMDEtMjUgIEFuZGVycyBDYXJsc3NvbiAg
PGFuZGVyc2NhQGFwcGxlLmNvbT4KLQotICAgICAgICBSZW1vdmUgYW4gdW51c2VkIEZyYW1lTG9h
ZGVyQ2xpZW50IGZ1bmN0aW9uCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMjc2MjgKLQotICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgot
Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwOgotICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmg6Ci0KLTIwMTQtMDEt
MjUgIFJ5dWFuIENob2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxd
W1dLMV0gRml4IGJyb2tlbiByZW5kZXJpbmcgd2hpbGUgbmF2aWdhdGluZyBoaXN0b3J5IGluIEVX
ZWJMYXVuY2hlcgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTI3NjAxCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJzIENhcmxzc29uLgotCi0gICAg
ICAgIFdoZW4gc2Nyb2xsZWQgYWZ0ZXIgcmVxdWVzdGVkIHJlcGFpbnRzLCByZW5kZXJpbmcgd2Fz
IGJyb2tlbiBiZWNhdXNlIHNjcm9sbERlbHRhCi0gICAgICAgIGNoYW5nZWQgcmVwYWludHMgYXJl
YS4KLQotICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChld2tfdmlld19zY3Jv
bGwpOgotCi0yMDE0LTAxLTI0ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+
Ci0KLSAgICAgICAgUmVtb3ZlIGJhY2svZm9yd2FyZCBsaXN0IHJlbGF0ZWQgZnVuY3Rpb25zIGZy
b20gUGFnZQotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTI3NTk2Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KLQotICAgICAgICAq
IGV3ay9ld2tfZnJhbWUuY3BwOgotICAgICAgICAoZXdrX2ZyYW1lX25hdmlnYXRlKToKLSAgICAg
ICAgKGV3a19mcmFtZV9uYXZpZ2F0ZV9wb3NzaWJsZSk6Ci0KLTIwMTQtMDEtMjMgIEpvc2VwaCBQ
ZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KLQotICAgICAgICBXZWIgSW5zcGVjdG9yOiBS
ZW1vdmUgcmVjb21waWxlQWxsSlNGdW5jdGlvbnMgdGltZXIgaW4gU2NyaXB0RGVidWdTZXJ2ZXIK
LSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNzQwOQot
Ci0gICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLgotCi0gICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50RWZsOjpkZXN0cm95SW5zcGVjdG9yV2luZG93KToKLSAgICAgICAg
SW5jbHVkZSBJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uLgotCi0yMDE0LTAxLTIzICBTaW1vbiBG
cmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgotCi0gICAgICAgIEZpeCBFRkwuCi0KLSAg
ICAgICAgKiBld2svZXdrX2ZyYW1lLmNwcDoKLSAgICAgICAgKGV3a19mcmFtZV92aXNpYmxlX2Nv
bnRlbnRfZ2VvbWV0cnlfZ2V0KToKLQotMjAxNC0wMS0yMiAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNo
b2lAc2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW0VGTF0gUmVtb3ZlIHVubmVjZXNzYXJ5IHNtYXJ0
IG1ldGhvZCBzaW5jZSBld2tfdmlld190aWxlZCByZW1vdmVkCi0gICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjc0MTcKLQotICAgICAgICBSZXZpZXdlZCBi
eSBHeXV5b3VuZyBLaW0uCi0KLSAgICAgICAgcHJlX3JlbmRlciByZWxhdGVkIGNvZGVzIGlzIG9u
bHkgZm9yIGV3a192aWV3X3RpbGVkLgotICAgICAgICBJbiBhZGRpdGlvbiwgd2UgZG9uJ3QgaGF2
ZSBhbnkgcmVxdWlyZW1lbnQgdG8gb3ZlcnJpZGUgcmVwYWludHNfcHJvY2VzcwotICAgICAgICBh
bmQgc2Nyb2xsX3Byb2Nlc3Mgbm93LgotCi0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAg
ICAgICAgKF9ld2tfdmlld19zbWFydF9yZXBhaW50c19wcm9jZXNzKToKLSAgICAgICAgKF9ld2tf
dmlld19zbWFydF9jYWxjdWxhdGUpOgotICAgICAgICAoZXdrX3ZpZXdfc21hcnRfc2V0KToKLSAg
ICAgICAgKGV3a192aWV3X3Njcm9sbHNfcHJvY2Vzcyk6Ci0gICAgICAgICogZXdrL2V3a192aWV3
Lmg6Ci0KLTIwMTQtMDEtMTkgIFJ5dWFuIENob2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgot
Ci0gICAgICAgIFtFRkxdW1dLMV0gUmVtb3ZlIGFuZCByZWZhY3RvciB0aGUgQVBJcyB3aGljaCB1
c2Ugc2luZ2xlIGFuZCBiYXNlIGtleXdvcmQKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEyNzIxNAotCi0gICAgICAgIFJldmlld2VkIGJ5IEd5dXlvdW5n
IEtpbS4KLQotICAgICAgICBTaW5jZSByZW1vdmVkIGV3a192aWVfdGlsZWQsIHdlIGRvbid0IG5l
ZWQgdG8gdXNlIHNpbmdsZSBvciBiYXNlIGluIHRoZSBBUEkgbmFtZS4KLSAgICAgICAgUmVtb3Zl
ZCB0aGVtIGFuZCBjbGVhbiB1cCB0aGUgY29kZS4KLQotICAgICAgICAqIGV3ay9ld2tfdmlldy5j
cHA6Ci0gICAgICAgIChld2tfdmlld19zbWFydF9zZXQpOgotICAgICAgICAoX2V3a192aWV3X3Nt
YXJ0X2NsYXNzX25ldyk6Ci0gICAgICAgIChld2tfdmlld19hZGQpOgotICAgICAgICAqIGV3ay9l
d2tfdmlldy5oOgotICAgICAgICAqIGV3ay9ld2tfdmlld19wcml2YXRlLmg6Ci0gICAgICAgIFJl
bW92ZWQgdGhlIGNsYXNzIG5hbWVzIGFuZCBtYWNybyB0byBkaXN0aW5ndWlzaCBzaW5nbGUgb3Ig
dGlsZWQuCi0gICAgICAgICogdGVzdHMvVW5pdFRlc3RVdGlscy9FV0tUZXN0Vmlldy5jcHA6Ci0g
ICAgICAgIChFV0tVbml0VGVzdHM6OkVXS1Rlc3RWaWV3Ojppbml0KToKLQotMjAxNC0wMS0xOCAg
QnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KLQotICAgICAgICBBbm90aGVyIGJ1aWxkIGZp
eCBhdHRlbXB0IGZvciBXaW5kb3dzIGFuZCBFRkwgV2ViS2l0MS4KLQotICAgICAgICAqIGV3ay9l
d2tfcGFpbnRfY29udGV4dC5jcHA6Ci0gICAgICAgIChld2tfcGFpbnRfY29udGV4dF9wYWludF9j
b250ZW50cyk6Ci0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAgKF9ld2tfdmll
d19zbWFydF9yZXBhaW50c19wcm9jZXNzKToKLQotMjAxNC0wMS0xOCAgQnJpYW4gQnVyZyAgPGJi
dXJnQGFwcGxlLmNvbT4KLQotICAgICAgICBXZWIgSW5zcGVjdG9yOiBQYWdlIHNob3VsZCB1c2Ug
c3RkOjp1bmlxdWVfcHRyIGZvciBJbnNwZWN0b3JDb250cm9sbGVyCi0gICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjcwNjgKLQotICAgICAgICBSZXZpZXdl
ZCBieSBKb3NlcGggUGVjb3Jhcm8uCi0KLSAgICAgICAgQ29udmVydCBjYWxsIHNpdGVzIHRvIHVz
ZSBhIEluc3BlY3RvckNvbnRyb2xsZXIgcmVmZXJlbmNlLgotICAgICAgICBDb252ZXJ0IGluc3Rh
bnRpYXRpb25zIG9mIEluc3BlY3RvckZyb250ZW5kQ2xpZW50IHRvIHVzZSBzdGQ6OnVuaXF1ZV9w
dHIuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwu
Y3BwOgotICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpldmFsdWF0ZUluV2ViSW5z
cGVjdG9yKToKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRFZmwuY3Bw
OgotICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50RWZsOjpvcGVuSW5zcGVjdG9yRnJv
bnRlbmQpOgotICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChld2tfdmlld19p
bnNwZWN0b3Jfc2hvdyk6Ci0gICAgICAgIChld2tfdmlld19pbnNwZWN0b3JfY2xvc2UpOgotCi0y
MDE0LTAxLTE3ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+Ci0KLSAgICAg
ICAgUmVtb3ZlIGFub3RoZXIgdW51c2VkIEZyYW1lTG9hZGVyQ2xpZW50IGNhbGxiYWNrCi0gICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjcxOTIKLQotICAg
ICAgICBSZXZpZXdlZCBieSBEYW4gQmVybnN0ZWluLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50RWZsLmg6Ci0KLTIwMTQtMDEtMTcgIEFuZGVycyBDYXJsc3NvbiAgPGFu
ZGVyc2NhQGFwcGxlLmNvbT4KLQotICAgICAgICBSZW1vdmUgZGlkUGVyZm9ybUZpcnN0TmF2aWdh
dGlvbiBmcm9tIGFsbCBGcmFtZUxvYWRlckNsaWVudCBzdWJjbGFzc2VzCi0gICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjcxOTAKLQotICAgICAgICBSZXZp
ZXdlZCBieSBEYW4gQmVybnN0ZWluLgotCi0gICAgICAgIEFjY29yZGluZyB0byB0aGUgRUZsIG1h
aW50YWluZXJzLCB0aGlzIGlzIG5vdCB1c2VkIGJ5IGFueSBhcHBsaWNhdGlvbnMgc28gaXQncyBz
YWZlIHRvIHJlbW92ZSBpdC4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50RWZsLmNwcDoKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dEVmbC5oOgotICAgICAgICAqIGV3ay9ld2tfZnJhbWUuY3BwOgotICAgICAgICAqIGV3ay9ld2tf
ZnJhbWVfcHJpdmF0ZS5oOgotCi0yMDE0LTAxLTE2ICBKYWVodW4gTGltICA8bGphZWh1bi5saW1A
c2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgVXNlIGZpbmFsIGluc3RlYWQgb2YgRklOQUwKLQotICAg
ICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeC4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1By
b2dyZXNzVHJhY2tlckNsaWVudEVmbC5oOgotCi0yMDE0LTAxLTE2ICBQZXRlciBNb2xuYXIgIDxw
bW9sbmFyLnUtc3plZ2VkQHBhcnRuZXIuc2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgUmVtb3ZlIHdv
cmthcm91bmQgZm9yIGNvbXBpbGVycyBub3Qgc3VwcG9ydGluZyBleHBsaWNpdCBvdmVycmlkZSBj
b250cm9sCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MjcxMTEKLQotICAgICAgICBSZXZpZXdlZCBieSBBbmRlcnMgQ2FybHNzb24uCi0KLSAgICAgICAg
Tm93IGFsbCBjb21waWxlcnMgc3VwcG9ydCBleHBsaWNpdCBvdmVycmlkZSBjb250cm9sLCB0aGlz
IHdvcmthcm91bmQgY2FuIGJlIHJlbW92ZWQuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9J
bnNwZWN0b3JDbGllbnRFZmwuaDoKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9Qcm9ncmVzc1Ry
YWNrZXJDbGllbnRFZmwuaDoKLQotMjAxNC0wMS0xNSAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lA
c2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW0VGTF1bV0sxXSBJbXBsZW1lbnQgUHJvZ3Jlc3NUcmFj
a2VyQ2xpZW50RWZsIHRvIGZpeCB0aGUgY3Jhc2gKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNzAzMQotCi0gICAgICAgIFJldmlld2VkIGJ5IEd5dXlv
dW5nIEtpbS4KLQotICAgICAgICBJbXBsbWVtZW50ZWQgYW5kIG1vdmVkIFByb2dyZXNzVHJhY2tl
ckNsaWVudCBsb2dpYyBmcm9tIEZyYW1lTG9hZGVyQ2xpZW50RWZsLgotICAgICAgICBQcm9ncmVz
c1RyYWNrZXJDbGllbnQgc2hvdWxkIGJlIGluZGVucGVuZGVudCBpbnN0YW5jZSBzaW5jZSByMTYy
MDM0Ci0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHA6
Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuaDoKLSAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9Qcm9ncmVzc1RyYWNrZXJDbGllbnRFZmwuY3BwOgotICAgICAg
ICAoV2ViQ29yZTo6UHJvZ3Jlc3NUcmFja2VyQ2xpZW50RWZsOjpQcm9ncmVzc1RyYWNrZXJDbGll
bnRFZmwpOgotICAgICAgICAoV2ViQ29yZTo6UHJvZ3Jlc3NUcmFja2VyQ2xpZW50RWZsOjpwcm9n
cmVzc1RyYWNrZXJEZXN0cm95ZWQpOgotICAgICAgICAoV2ViQ29yZTo6UHJvZ3Jlc3NUcmFja2Vy
Q2xpZW50RWZsOjpwcm9ncmVzc1N0YXJ0ZWQpOgotICAgICAgICAoV2ViQ29yZTo6UHJvZ3Jlc3NU
cmFja2VyQ2xpZW50RWZsOjpwcm9ncmVzc0VzdGltYXRlQ2hhbmdlZCk6Ci0gICAgICAgIChXZWJD
b3JlOjpQcm9ncmVzc1RyYWNrZXJDbGllbnRFZmw6OnByb2dyZXNzRmluaXNoZWQpOgotICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L1Byb2dyZXNzVHJhY2tlckNsaWVudEVmbC5oOiBBZGRlZC4KLSAg
ICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoX2V3a192aWV3X3ByaXZfbmV3KToK
LQotMjAxNC0wMS0xMyAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3VuZy5jb20+Ci0KLSAg
ICAgICAgW0VGTF0gRG8gbm90IHN0b3JlIHJlZmVyZW5jZSB2YXJpYWJsZXMgYXMgYSBwb2ludGVy
IGluIHByaXZhdGUgZGF0YSBzdHJ1Y3R1cmUKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEyNjk0NQotCi0gICAgICAgIFJldmlld2VkIGJ5IEd5dXlvdW5n
IEtpbS4KLQotICAgICAgICBSZW1vdmUgcGFnZVNldHRpbmdzLCBtYWluRnJhbWUgYW5kIHN0b3Jh
Z2VTZXNzaW9uIHZhcmlhYmxlcyBmcm9tIEV3a19WaWV3X1ByaXZhdGVfRGF0YS4KLQotICAgICAg
ICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChfZXdrX3ZpZXdfcHJpdl9uZXcpOgotICAg
ICAgICAoX2V3a192aWV3X3NtYXJ0X2FkZCk6Ci0gICAgICAgIChfZXdrX3ZpZXdfc21hcnRfcmVw
YWludHNfcHJvY2Vzcyk6Ci0gICAgICAgIChfZXdrX3ZpZXdfc21hcnRfY2FsY3VsYXRlKToKLSAg
ICAgICAgKGV3a192aWV3X2ZpeGVkX2xheW91dF9zaXplX3NldCk6Ci0gICAgICAgIChld2tfdmll
d19maXhlZF9sYXlvdXRfc2l6ZV9nZXQpOgotICAgICAgICAoZXdrX3ZpZXdfYmdfY29sb3Jfc2V0
KToKLSAgICAgICAgKGV3a192aWV3X3NldHRpbmdfdXNlcl9hZ2VudF9zZXQpOgotICAgICAgICAo
ZXdrX3ZpZXdfc2V0dGluZ191c2VyX3N0eWxlc2hlZXRfc2V0KToKLSAgICAgICAgKGV3a192aWV3
X3NldHRpbmdfYXV0b19sb2FkX2ltYWdlc19zZXQpOgotICAgICAgICAoZXdrX3ZpZXdfc2V0dGlu
Z19hdXRvX3Nocmlua19pbWFnZXNfc2V0KToKLSAgICAgICAgKGV3a192aWV3X3NldHRpbmdfZW5h
YmxlX3NjcmlwdHNfc2V0KToKLSAgICAgICAgKGV3a192aWV3X3NldHRpbmdfZW5hYmxlX3BsdWdp
bnNfc2V0KToKLSAgICAgICAgKGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5p
bmdfc2V0KToKLSAgICAgICAgKGV3a192aWV3X3NldHRpbmdfc2NyaXB0c19jYW5fb3Blbl93aW5k
b3dzX3NldCk6Ci0gICAgICAgIChld2tfdmlld19zZXR0aW5nX3NjcmlwdHNfY2FuX2Nsb3NlX3dp
bmRvd3Nfc2V0KToKLSAgICAgICAgKGV3a192aWV3X3NldHRpbmdfc2NyaXB0c19jYW5fYWNjZXNz
X2NsaXBib2FyZF9zZXQpOgotICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19yZXNpemFibGVfdGV4
dGFyZWFzX3NldCk6Ci0gICAgICAgIChld2tfdmlld19zZXR0aW5nX3ByaXZhdGVfYnJvd3Npbmdf
c2V0KToKLSAgICAgICAgKGV3a192aWV3X3NldHRpbmdfYXBwbGljYXRpb25fY2FjaGVfc2V0KToK
LSAgICAgICAgKGV3a192aWV3X3NldHRpbmdfY2FyZXRfYnJvd3Npbmdfc2V0KToKLSAgICAgICAg
KGV3a192aWV3X3NldHRpbmdfZW5jb2RpbmdfZGVmYXVsdF9zZXQpOgotICAgICAgICAoZXdrX3Zp
ZXdfc2V0dGluZ19lbmNvZGluZ19kZXRlY3Rvcl9zZXQpOgotICAgICAgICAoZXdrX3ZpZXdfc2V0
dGluZ19lbmFibGVfZGV2ZWxvcGVyX2V4dHJhc19zZXQpOgotICAgICAgICAoZXdrX3ZpZXdfc2V0
dGluZ19mb250X21pbmltdW1fc2l6ZV9zZXQpOgotICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19m
b250X21pbmltdW1fbG9naWNhbF9zaXplX3NldCk6Ci0gICAgICAgIChld2tfdmlld19zZXR0aW5n
X2ZvbnRfZGVmYXVsdF9zaXplX3NldCk6Ci0gICAgICAgIChld2tfdmlld19zZXR0aW5nX2ZvbnRf
bW9ub3NwYWNlX3NpemVfc2V0KToKLSAgICAgICAgKGV3a192aWV3X2ZvbnRfZmFtaWx5X25hbWVf
c2V0KToKLSAgICAgICAgKGV3a192aWV3X3NldHRpbmdfc3BhdGlhbF9uYXZpZ2F0aW9uX3NldCk6
Ci0gICAgICAgIChld2tfdmlld19zZXR0aW5nX2xvY2FsX3N0b3JhZ2Vfc2V0KToKLSAgICAgICAg
KGV3a192aWV3X3NldHRpbmdfcGFnZV9jYWNoZV9zZXQpOgotICAgICAgICAoZXdrX3ZpZXdfc2V0
dGluZ19sb2NhbF9zdG9yYWdlX2RhdGFiYXNlX3BhdGhfc2V0KToKLSAgICAgICAgKGV3a192aWV3
X3NldHRpbmdfbWluaW11bV90aW1lcl9pbnRlcnZhbF9zZXQpOgotICAgICAgICAoZXdrX3ZpZXdf
c2V0dGluZ19lbmFibGVfd2ViZ2xfc2V0KToKLSAgICAgICAgKGV3a192aWV3X3NldHRpbmdfZW5h
YmxlX2h5cGVybGlua19hdWRpdGluZ19zZXQpOgotICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19h
bGxvd191bml2ZXJzYWxfYWNjZXNzX2Zyb21fZmlsZV91cmxzX3NldCk6Ci0gICAgICAgIChld2tf
dmlld19zZXR0aW5nX2FsbG93X2ZpbGVfYWNjZXNzX2Zyb21fZmlsZV91cmxzX3NldCk6Ci0gICAg
ICAgIChld2tfdmlld19sYXlvdXRfaWZfbmVlZGVkX3JlY3Vyc2l2ZSk6Ci0gICAgICAgIChld2tf
dmlld19wYWludCk6Ci0gICAgICAgIChld2tfdmlld19wYWludF9jb250ZW50cyk6Ci0gICAgICAg
IChld2tfdmlld19qc19vYmplY3RfYWRkKToKLSAgICAgICAgKGV3a192aWV3X3BhZ2VfcmVjdF9n
ZXQpOgotICAgICAgICAoZXdrX3ZpZXdfc291cF9zZXNzaW9uX2dldCk6Ci0gICAgICAgIChld2tf
dmlld19zb3VwX3Nlc3Npb25fc2V0KToKLSAgICAgICAgKGV3a192aWV3X3NldHRpbmdfZW5hYmxl
X3hzc19hdWRpdG9yX3NldCk6Ci0gICAgICAgIChld2tfdmlld19zZXR0aW5nX3Nob3VsZF9kaXNw
bGF5X2NhcHRpb25zX3NldCk6Ci0gICAgICAgIChld2tfdmlld19zZXR0aW5nX3Nob3VsZF9kaXNw
bGF5X3N1YnRpdGxlc19zZXQpOgotICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19zaG91bGRfZGlz
cGxheV90ZXh0X2Rlc2NyaXB0aW9uc19zZXQpOgotICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19l
bmFibGVfZnVsbHNjcmVlbl9zZXQpOgotICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ190aWxlZF9i
YWNraW5nX3N0b3JlX2VuYWJsZWRfc2V0KToKLSAgICAgICAgKGV3a192aWV3X3NldHRpbmdfdGls
ZWRfYmFja2luZ19zdG9yZV9lbmFibGVkX2dldCk6Ci0gICAgICAgIChld2tfdmlld190aWxlZF9i
YWNraW5nX3N0b3JlX2ludmFsaWRhdGUpOgotICAgICAgICAoRVdLUHJpdmF0ZTo6c3RvcmFnZVNl
c3Npb24pOgotCi0yMDE0LTAxLTEzICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdh
bGlhLmNvbT4KLQotICAgICAgICBbU09VUF0gQWRkIFNvdXBOZXR3b3JrU2Vzc2lvbiBjbGFzcyB0
byB3cmFwIGEgU291cFNlc3Npb24KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEyNjgxMwotCi0gICAgICAgIFJldmlld2VkIGJ5IEd1c3Rhdm8gTm9yb25o
YSBTaWx2YS4KLQotICAgICAgICBVc2UgdGhlIG5ldyBTb3VwTmV0d29ya1Nlc3Npb24gQVBJLgot
Ci0gICAgICAgICogZXdrL2V3a19jb29raWVzLmNwcDoKLSAgICAgICAgKGV3a19jb29raWVzX2Zp
bGVfc2V0KToKLSAgICAgICAgKiBld2svZXdrX21haW4uY3BwOgotICAgICAgICAoX2V3a19pbml0
X2JvZHkpOgotICAgICAgICAqIGV3ay9ld2tfbmV0d29yay5jcHA6Ci0gICAgICAgIChld2tfbmV0
d29ya19wcm94eV91cmlfc2V0KToKLSAgICAgICAgKGV3a19uZXR3b3JrX3Byb3h5X3VyaV9nZXQp
OgotICAgICAgICAoZXdrX25ldHdvcmtfdGxzX2NlcnRpZmljYXRlX2NoZWNrX2dldCk6Ci0gICAg
ICAgIChld2tfbmV0d29ya190bHNfY2VydGlmaWNhdGVfY2hlY2tfc2V0KToKLSAgICAgICAgKGV3
a19uZXR3b3JrX3Rsc19jYV9jZXJ0aWZpY2F0ZXNfcGF0aF9nZXQpOgotICAgICAgICAoZXdrX25l
dHdvcmtfdGxzX2NhX2NlcnRpZmljYXRlc19wYXRoX3NldCk6Ci0gICAgICAgIChld2tfbmV0d29y
a19kZWZhdWx0X3NvdXBfc2Vzc2lvbl9nZXQpOgotICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6
Ci0gICAgICAgIChld2tfdmlld19zb3VwX3Nlc3Npb25fZ2V0KToKLSAgICAgICAgKGV3a192aWV3
X3NvdXBfc2Vzc2lvbl9zZXQpOgotCi0yMDE0LTAxLTEyICBKaW53b28gU29uZyAgPGppbndvbzcu
c29uZ0BzYW1zdW5nLmNvbT4KLQotICAgICAgICBGaXggYnVpbGQgd2FybmluZ3MgYnkgdW51c2Vk
IHBhcmFtZXRlcgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTI2ODY3Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgR3l1eW91bmcgS2ltLgotCi0gICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmg6Ci0gICAgICAgIChXZWJDb3JlOjpF
ZGl0b3JDbGllbnRFZmw6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKTogUmVtb3ZlIHVudXNlZCBwYXJh
bWV0ZXIgJ2NoZWNraW5nVHlwZXMnLgotCi0yMDE0LTAxLTExICBBbmRlcnMgQ2FybHNzb24gIDxh
bmRlcnNjYUBhcHBsZS5jb20+Ci0KLSAgICAgICAgQnVpbGQgZml4LgotCi0gICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29yZTo6
RnJhbWVMb2FkZXJDbGllbnRFZmw6OnByb2dyZXNzU3RhcnRlZCk6Ci0KLTIwMTQtMDEtMTAgIEFu
ZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KLQotICAgICAgICBUd2VhayBQcm9n
cmVzc1RyYWNrZXJDbGllbnQgZnVuY3Rpb25zCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMjY4MDgKLQotICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2Vp
bmlnLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3Bw
OgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OnByb2dyZXNzU3RhcnRl
ZCk6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6cHJvZ3Jlc3NFc3Rp
bWF0ZUNoYW5nZWQpOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OnBy
b2dyZXNzRmluaXNoZWQpOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50RWZsLmg6Ci0KLTIwMTQtMDEtMTAgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxl
LmNvbT4KLQotICAgICAgICBNb3ZlIHByb2dyZXNzIHRyYWNraW5nIGZ1bmN0aW9ucyBmcm9tIEZy
YW1lTG9hZGVyQ2xpZW50IHRvIGEgbmV3IFByb2dyZXNzVHJhY2tlckNsaWVudAotICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI2ODAxCi0KLSAgICAgICAg
UmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50RWZsLmg6Ci0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAg
KF9ld2tfdmlld19wcml2X25ldyk6Ci0KLTIwMTQtMDEtMDggIFJ5dWFuIENob2kgIDxyeXVhbi5j
aG9pQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxdIE1lcmdlIGV3a192aWV3X3NpbmdsZSBp
bnRvIGV3a192aWV3Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMjY1MDgKLQotICAgICAgICBSZXZpZXdlZCBieSBHeXV5b3VuZyBLaW0uCi0KLSAgICAg
ICAgU2luY2UgZXdrX3ZpZXdfdGlsZWQgaXMgcmVtb3ZlZCBhdCByMTYxMTM0LCB3ZSBkb24ndCBu
ZWVkIHRvIGtlZXAKLSAgICAgICAgZXdrX3ZpZXdfc2luZ2xlIG91dCBvZiBld2tfdmlldy5jcHAu
Ci0KLSAgICAgICAgVGhpcyBwYXRjaCBtb3ZlcyB0aGUgbG9naWMgb2YgZXdrX3ZpZXdfc2luZ2xl
IHRvIGV3a192aWV3IGFuZCByZWZhY3RvcnMgaXQuCi0gICAgICAgIEluIGFkZGl0aW9uLCByZXBs
YWNlcyAwLjAwMDAxIHRvIGVwaXNpbG9uLgotCi0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoK
LSAgICAgICAgKF9ld2tfdmlld19zbWFydF9hZGQpOgotICAgICAgICAoX2V3a192aWV3X3NtYXJ0
X3Jlc2l6ZSk6IE1lcmdlZCB3aXRoIHRoZSBsb2dpYyBvZiBld2tfdmlld19zaW5nbGUuCi0gICAg
ICAgIChfZXdrX3ZpZXdfc2NyZWVuX21vdmUpOiBNb3ZlZCBmcm9tIGV3a192aWV3X3NpbmdsZS5j
cHAuCi0gICAgICAgIChfZXdrX3ZpZXdfc2Nyb2xsX3Byb2Nlc3MpOiBEaXR0by4KLSAgICAgICAg
KF9ld2tfdmlld19zbWFydF9zY3JvbGxzX3Byb2Nlc3MpOiBEaXR0by4KLSAgICAgICAgKF9ld2tf
dmlld19zbWFydF9yZXBhaW50c19wcm9jZXNzKTogRGl0dG8uCi0gICAgICAgIChfZXdrX3ZpZXdf
c21hcnRfY2FsY3VsYXRlKTogUmVtb3ZlZCB1bm5lY2Vzc2FyeSBjaGVjayByb3V0aW5lIGZvciBz
Y3JvbGxzX3Byb2Nlc3MuCi0gICAgICAgIChfZXdrX3ZpZXdfc21hcnRfem9vbV93ZWFrX3NldCk6
Ci0gICAgICAgIChfZXdrX3ZpZXdfc21hcnRfem9vbV93ZWFrX3Ntb290aF9zY2FsZV9zZXQpOgot
ICAgICAgICAoZXdrX3ZpZXdfYmFzZV9zbWFydF9zZXQpOiBNZXJnZWQgc21hcnQgbWV0aG9kIG9m
IGV3a192aWV3X3NpbmdsZS4KLSAgICAgICAgKGV3a192aWV3X3NpbmdsZV9zbWFydF9zZXQpOgot
ICAgICAgICAoX2V3a192aWV3X3NpbmdsZV9zbWFydF9jbGFzc19uZXcpOgotICAgICAgICAoZXdr
X3ZpZXdfc2luZ2xlX2FkZCk6Ci0gICAgICAgIChld2tfdmlld19iZ19jb2xvcl9zZXQpOgotICAg
ICAgICAoZXdrX3ZpZXdfcHJlX3JlbmRlcl9yZWdpb24pOgotICAgICAgICAoZXdrX3ZpZXdfc2Ny
b2xsc19wcm9jZXNzKToKLSAgICAgICAgKiBld2svZXdrX3ZpZXcuaDoKLSAgICAgICAgKiBld2sv
ZXdrX3ZpZXdfcHJpdmF0ZS5oOiBSZW1vdmVkIHVubmNlc3NhcnkgZnVuY3Rpb25zLgotICAgICAg
ICAqIGV3ay9ld2tfdmlld19zaW5nbGUuY3BwOiBSZW1vdmVkLgotCi0yMDE0LTAxLTA4ICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+Ci0KLSAgICAgICAgQWRkIFdURjo6U3Ry
aW5nVmlldyBhbmQgdXNlIGl0IGZvciBncmFtbWFyIGNoZWNraW5nCi0gICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjY2NDQKLQotICAgICAgICBSZXZpZXdl
ZCBieSBBbnR0aSBLb2l2aXN0by4KLQotICAgICAgICBVcGRhdGUgdG8gbWF0Y2ggV2ViQ29yZSBj
aGFuZ2VzLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmg6Ci0g
ICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRFZmw6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKToK
LQotMjAxNC0wMS0wNSAgSmlud29vIFNvbmcgIDxqaW53b283LnNvbmdAc2Ftc3VuZy5jb20+Ci0K
LSAgICAgICAgW0VGTF0gRml4IGZhaWxpbmcgV2ViS2l0MSBBUEkgdGVzdCBvZiBld2tfdmlld19z
ZXR0aW5nX3RpbGVkX2JhY2tpbmdfc3RvcmUKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEyNjUwOQotCi0gICAgICAgIFJldmlld2VkIGJ5IEd5dXlvdW5n
IEtpbS4KLQotICAgICAgICBJbiBXZWJLaXQxIEVGTCBwb3J0LCB1bml0IHRlc3Qgd2FzIHVzaW5n
IGEgd2VidmlldyBiYXNlZCBvbiB0aWxlZCBiYWNraW5nIHN0b3JlLAotICAgICAgICBzbyBld2tf
dmlld19zZXR0aW5nX3RpbGVkX2JhY2tpbmdfc3RvcmVfZW5hYmxlZF9zZXQoKSB3YXMgc2V0IGFz
IHRydWUgYXMgZGVmYXVsdC4KLSAgICAgICAgQXMgd2UgZG8gbm90IG5lZWQgdG8gdXNlIHRpbGVk
IGJhY2tpbmcgc3RvcmUsIHdlIGRpc2FibGUgdGlsZWQgYmFja2luZyBzdG9yZQotICAgICAgICBh
bmQgcmVtb3ZlIHVubmVjZXNzYXJ5IEV3a1ZpZXdUeXBlIGluIHVuaXQgdGVzdCB3ZWJ2aWV3Lgot
Ci0gICAgICAgICogdGVzdHMvVW5pdFRlc3RVdGlscy9FV0tUZXN0Vmlldy5jcHA6Ci0gICAgICAg
IChFV0tVbml0VGVzdHM6OkVXS1Rlc3RWaWV3Ojppbml0KToKLSAgICAgICAgKiB0ZXN0cy9Vbml0
VGVzdFV0aWxzL0VXS1Rlc3RWaWV3Lmg6Ci0gICAgICAgICogdGVzdHMvdGVzdF9ld2tfdmlldy5j
cHA6IEZpeCB3cm9uZyBjb21tZW50IGluIHRoZSB1bml0IHRlc3QuCi0KLTIwMTQtMDEtMDIgIEdh
dmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgotCi0gICAgICAgIE1lcmdl
IGRpZE1vdmVPbnNjcmVlbiAvIHBhZ2UgdmlzaWJpbGl0eSB0byBpc1Zpc2libGUKLSAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNjI2OAotCi0gICAgICAg
IFJldmlld2VkIGJ5IFRpbSBIb3J0b24uCi0KLSAgICAgICAgVGhlIG9uc2NyZWVuIHN0YXRlIG1v
c3QgY2xvc2VseSB0cmFja3MgdmlldyB2aXNpYmlsaXR5ICh0aG91Z2ggY3VycmVudGx5Ci0gICAg
ICAgIGFsc28gdHJhY2tzIGEgbWl4IG9mIGluLXdpbmRvdyBzdGF0ZSkuIE1ha2UgbW9yZSBjb25z
aXN0ZW50LCBzaW1wbGlmeSwKLSAgICAgICAgYW5kIG1vdmUgYWxsIGFuaW1hdGlvbiBzdXNwZW5z
aW9uIGxvZ2ljIHRvIFBhZ2UsIHNvIGl0IGNhbiBiZSBjb250cm9sbGVkCi0gICAgICAgIGJ5IHRo
ZSBQYWdlVGhyb3R0bGVyLgotCi0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAg
KGV3a192aWV3X3Zpc2liaWxpdHlfc3RhdGVfc2V0KToKLSAgICAgICAgICAgIC0gc2V0VmlzaWJp
bGl0eVN0YXRlIC0+IHNldElzVmlzaWJsZS9zZXRJc1ByZXJlbmRlci4KLQotMjAxMy0xMi0yOSAg
Unl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW0VGTF0gUmVt
b3ZlIGV3a192aWV3X3RpbGVkCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMjU5NjEKLQotICAgICAgICBSZXZpZXdlZCBieSBHeXV5b3VuZyBLaW0uCi0K
LSAgICAgICAgV2UgZGlkbid0IHVzZSBld2tfdmlld190aWxlZCB2ZXJ5IGxvbmcgdGltZSB3aGls
ZSB3ZSBmb2N1c2VkIHdlYmtpdDIvZWZsLgotICAgICAgICBUaGVyZSBhcmUgbWFueSBidWdzIGFu
ZCB3ZSBkb24ndCBoYXZlIHBsYW4gdG8gZml4IHRoZW0uCi0gICAgICAgIEluc3RlYWQsIFdlIHdp
bGwgdXNlIFdlYkNvcmUncyBUaWxlZEJhY2tpbmdTdG9yZSBhbmQgaXQgbG9va3MgbW9yZSBzdGFi
bGUuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHA6
Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6dHJhbnNpdGlvblRvQ29t
bWl0dGVkRm9yTmV3UGFnZSk6Ci0gICAgICAgICogZXdrL2V3a190aWxlZF9iYWNraW5nX3N0b3Jl
LmNwcDogUmVtb3ZlZC4KLSAgICAgICAgKiBld2svZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcHJp
dmF0ZS5oOiBSZW1vdmVkLgotICAgICAgICAqIGV3ay9ld2tfdGlsZWRfbWF0cml4LmNwcDogUmVt
b3ZlZC4KLSAgICAgICAgKiBld2svZXdrX3RpbGVkX21hdHJpeF9wcml2YXRlLmg6IFJlbW92ZWQu
Ci0gICAgICAgICogZXdrL2V3a190aWxlZF9tb2RlbC5jcHA6IFJlbW92ZWQuCi0gICAgICAgICog
ZXdrL2V3a190aWxlZF9tb2RlbF9wcml2YXRlLmg6IFJlbW92ZWQuCi0gICAgICAgICogZXdrL2V3
a192aWV3LmNwcDoKLSAgICAgICAgKiBld2svZXdrX3ZpZXcuaDoKLSAgICAgICAgKiBld2svZXdr
X3ZpZXdfcHJpdmF0ZS5oOgotICAgICAgICAqIGV3ay9ld2tfdmlld190aWxlZC5jcHA6IFJlbW92
ZWQuCi0gICAgICAgICogdGVzdHMvVW5pdFRlc3RVdGlscy9FV0tUZXN0Vmlldy5jcHA6Ci0gICAg
ICAgIChFV0tVbml0VGVzdHM6OkVXS1Rlc3RWaWV3Ojppbml0KToKLQotMjAxMy0xMi0yMyAgUnl1
YW4gQ2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgVW5yZXZpZXdlZCBi
dWlsZCBmaXggYWZ0ZXIgcjE2MTAzMwotCi0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAg
ICAgICAgKGV3a192aWV3X2pzX29iamVjdF9hZGQpOiBQYXNzZWQgdGhpc09iamVjdCB0byBjb25z
dHJ1Y3RvciBvZiBQdXRQcm9wZXJ0eVNsb3QuCi0KLTIwMTMtMTItMTEgIEpvc2VwaCBQZWNvcmFy
byAgPHBlY29yYXJvQGFwcGxlLmNvbT4KLQotICAgICAgICBXZWIgSW5zcGVjdG9yOiBQdXNoIE1v
cmUgSW5zcGVjdG9yIFJlcXVpcmVkIENsYXNzZXMgRG93biBpbnRvIEphdmFTY3JpcHRDb3JlCi0g
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjUzMjQKLQot
ICAgICAgICBSZXZpZXdlZCBieSBUaW1vdGh5IEhhdGNoZXIuCi0KLSAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwOgotICAgICAgICAqIGV3ay9ld2tf
ZnJhbWUuY3BwOgotCi0yMDEzLTExLTIzICBYYWJpZXIgUm9kcmlndWV6IENhbHZhciAgPGNhbHZh
cmlzQGlnYWxpYS5jb20+Ci0KLSAgICAgICAgW0dTdHJlYW1lcl0gUmVtb3ZlIDAuMTAgY29kZXBh
dGgKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDUz
NAotCi0gICAgICAgIFJldmlld2VkIGJ5IFBoaWxpcHBlIE5vcm1hbmQuCi0KLSAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyRWZsLmNwcDogUmVtb3ZlZC4K
LQotMjAxMy0xMS0yMSAgUGV0ZXIgTW9sbmFyICA8cG1vbG5hci51LXN6ZWdlZEBwYXJ0bmVyLnNh
bXN1bmcuY29tPgotCi0gICAgICAgIFJlbW92ZSBFTkFCTEVfV09SS0VSUwotICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA1Nzg0Ci0KLSAgICAgICAgUmV2
aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCi0KLSAgICAgICAgKiBld2svZXdrX3NldHRpbmdzLmNwcDoK
LSAgICAgICAgKGV3a19zZXR0aW5nc19tZW1vcnlfY2FjaGVfY2xlYXIpOgotCi0yMDEzLTExLTE4
ICBSeXVhbiBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBbRUZMXSBJ
bml0aWFsaXplIGVmcmVldCBiZWZvcmUgZ2V0dGluZyBkaXJlY3RvcmllcwotICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0NTYwCi0KLSAgICAgICAgUmV2
aWV3ZWQgYnkgR3l1eW91bmcgS2ltLgotCi0gICAgICAgIGVmcmVldCBpcyB1c2VkIHRvIGdldCBz
ZXZlcmFsIGRpcmVjdG9yaWVzIGluY2x1ZGluZyBob21lIGRpZXJlY3Rvcnkgc2luY2UKLSAgICAg
ICAgcjEyMzczMSwgYnV0IGl0IGRvZXMgbm90IGNhbGwgZWZyZWV0X2luaXQvZWZyZWV0X3NodXRk
b3duIGV4cGxpY2l0bHkuCi0KLSAgICAgICAgKiBld2svZXdrX21haW4uY3BwOiBDYWxsIGVmcmVl
dF9pbml0KCkvZWZyZWV0X3NodXRkb3duKCkgZXhwbGljaXRseS4KLSAgICAgICAgKGV3a19pbml0
KToKLSAgICAgICAgKGV3a19zaHV0ZG93bik6Ci0KLTIwMTMtMTEtMTggIFJ5dWFuIENob2kgIDxy
eXVhbi5jaG9pQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxdIEFkZCBFV2ViS2l0Q29uZmln
LmNtYWtlIGFuZCBFV2ViS2l0MkNvbmZpZy5jbWFrZQotICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0NDc4Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgR3l1
eW91bmcgS2ltLgotCi0gICAgICAgIEVXZWJLaXQgaXMgYnVpbHQgdXNpbmcgQ01ha2UgYnV0IGFw
cGxpY2F0aW9ucyB1c2UgKi5wYyB0byB1c2UgaXQuCi0gICAgICAgIFRoaXMgcGF0Y2ggcHJvdmlk
ZXMgRVdlYktpdENvbmZpZy5jbWFrZSBhbmQgRVdlYktpdDJDb25maWcuY21ha2UKLSAgICAgICAg
Zm9yIGFwcGxpY2F0aW9ucyB3aGljaCB1c2UgRVdlYmtpdCBhbmQgaXMgY29tcGlsZWQgYnkgQ01h
a2UuCi0KLSAgICAgICAgKiBFV2ViS2l0Q29uZmlnLmNtYWtlLmluOiBBZGRlZC4KLSAgICAgICAg
KiBFV2ViS2l0Q29uZmlnVmVyc2lvbi5jbWFrZS5pbjogQWRkZWQuCi0KLTIwMTMtMTEtMTUgIEFs
YmVydG8gR2FyY2lhICA8YmVydG9AaWdhbGlhLmNvbT4KLQotICAgICAgICBbRUZMXSBMZWFrIGlu
IGV3a19mcmFtZV9jZXJ0aWZpY2F0ZV9zdGF0dXNfZ2V0KCkKLSAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDQwMQotCi0gICAgICAgIFJldmlld2VkIGJ5
IENhcmxvcyBHYXJjaWEgQ2FtcG9zLgotCi0gICAgICAgIFRoZSBTb3VwTWVzc2FnZSBvYmplY3Qg
aXMgYmVpbmcgbGVha2VkLiBJbiBpbiB0aGlzIGNhc2UgdGhhdAotICAgICAgICBvYmplY3QgaXMg
bm90IGV2ZW4gbmVjZXNzYXJ5IHNpbmNlIFJlc291cmNlUmVxdWVzdCBhbHJlYWR5Ci0gICAgICAg
IHByb3ZpZGVzIGEgd2F5IHRvIGdldCB0aGUgc291cCBmbGFncyBkaXJlY3RseS4KLQotICAgICAg
ICAqIGV3ay9ld2tfZnJhbWUuY3BwOgotICAgICAgICAoZXdrX2ZyYW1lX2NlcnRpZmljYXRlX3N0
YXR1c19nZXQpOgotCi0yMDEzLTExLTEwICBUaWJvciBNZXN6YXJvcyAgPG10aWJvckBpbmYudS1z
emVnZWQuaHU+Ci0KLSAgICAgICAgQ2xlYW51cCB0aGUgRUZMIC0tbWluaW1hbCBidWlsZCBmcm9t
IHVudXNlZCBwYXJhbWV0ZXJzCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMjQwNDgKLQotICAgICAgICBSZXZpZXdlZCBieSBHeXV5b3VuZyBLaW0uCi0K
LSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwOgotICAgICAgICAo
V2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZsOjpjcmVhdGVXaW5kb3cpOgotICAgICAgICAqIGV3ay9l
d2tfc2V0dGluZ3MuY3BwOgotICAgICAgICAoZXdrX3NldHRpbmdzX3dlYl9kYXRhYmFzZV9wYXRo
X3NldCk6Ci0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAgKGV3a192aWV3X3Zp
c2liaWxpdHlfc3RhdGVfc2V0KToKLSAgICAgICAgKGV3a192aWV3X3Zpc2liaWxpdHlfc3RhdGVf
Z2V0KToKLQotMjAxMy0xMS0wNSAgWGFiaWVyIFJvZHJpZ3VleiBDYWx2YXIgIDxjYWx2YXJpc0Bp
Z2FsaWEuY29tPgotCi0gICAgICAgIFtHU3RyZWFtZXJdIFJlbW92ZSBOQVRJVkVfRlVMTFNDUkVF
Tl9WSURFTyBzdXBwb3J0Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMjM0MzcKLQotICAgICAgICBSZXZpZXdlZCBieSBQaGlsaXBwZSBOb3JtYW5kLgot
Ci0gICAgICAgIFJlbW92ZWQgc29tZSBkZWFkIGNvZGUgYXMgbm8gR1N0cmVhbWVyIHBvcnQgaXMg
dXNpbmcgdGhlIG5hdGl2ZQotICAgICAgICBmdWxsc2NyZWVuIHZpZGVvIHN1cHBvcnQuCi0KLSAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyRWZsLmg6IFJl
bW92ZWQuCi0KLTIwMTMtMTEtMDEgIFJ5dWFuIENob2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29t
PgotCi0gICAgICAgIFtFRkxdW1dLMV0gUmVuZGVyaW5nIGlzIGJyb2tlbiB3aGVuIHNjcm9sbGVk
IGV3a192aWV3X3NpbmdsZSByZXBlYXRlZGx5Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMjM2MDkKLQotICAgICAgICBSZXZpZXdlZCBieSBHeXV5b3Vu
ZyBLaW0uCi0KLSAgICAgICAgZXdrX3ZpZXdfc2luZ2xlIGFkZHMgd3JvbmcgdXBkYXRlUmVjdHMg
ZXhjZXB0IGxhc3Qgb25lIGluIHNjcm9sbHNfcHJvY2VzcywKLSAgICAgICAgYmVjYXVzZSBwcmV2
aW91cyB1cGRhdGVSZWN0cyBhcmUgbm90IGNvbnNpZGVyZWQgYWNjdW11bGF0ZWQgc2Nyb2xsT2Zm
c2V0cy4KLQotICAgICAgICAqIGV3ay9ld2tfdmlld19zaW5nbGUuY3BwOgotICAgICAgICAoX2V3
a192aWV3X3NpbmdsZV9zbWFydF9zY3JvbGxzX3Byb2Nlc3MpOgotICAgICAgICBNZXJnZWQgc2Ny
b2xsT2Zmc2V0cyB0byBjYWxjdWxhdGUgdXBkYXRlUmVjdHMgb25jZS4KLSAgICAgICAgSXQgd2ls
bCBhbHNvIHJlZHVjZSB1bm5lY2Vzc2FyeSBtZW1vcnkgY29weSBvcGVyYXRpb25zLgotCi0yMDEz
LTEwLTE2ICBKb2NoZW4gRWlzaW5nZXIgIDxqb2NoZW5AY2hyb21pdW0ub3JnPgotCi0gICAgICAg
IEEgcGFnZSBzaG91bGQgZXhpdCBmdWxsc2NyZWVuIG1vZGUgaWYgaXQgb3BlbnMgYSBuZXcgcG9w
dXAKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMjg2
NQotCi0gICAgICAgIFJldmlld2VkIGJ5IEplciBOb2JsZS4KLQotICAgICAgICBJZiBhIGZ1bGxz
Y3JlZW4gcGFnZSBvcGVucyBhIHBvcHVwLCB0aGUgcG9wdXAgd291bGQgYmUgaGlkZGVuIGFuZAot
ICAgICAgICB0aGVyZWZvcmUgaW52aXNpYmxlIHRvIHRoZSB1c2VyLiBUbyBhdm9pZCB0aGlzLCBl
eGl0IGZ1bGxzY3JlZW4gbW9kZQotICAgICAgICBiZWZvcmUgb3BlbmluZyBhIG5ldyB3aW5kb3cu
Ci0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwOgotICAgICAg
ICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZsOjpjcmVhdGVXaW5kb3cpOgotCi0yMDEzLTEwLTA3
ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+Ci0KLSAgICAgICAgQ29uc29saWRhdGUgZmlu
ZFN0cmluZyBmdW5jdGlvbnMKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEyMjQ4MAotCi0gICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgotCi0g
ICAgICAgICogZXdrL2V3a19mcmFtZS5jcHA6Ci0gICAgICAgIChld2tfZnJhbWVfdGV4dF9zZWFy
Y2gpOgotICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChld2tfdmlld190ZXh0
X3NlYXJjaCk6Ci0KLTIwMTMtMTAtMDcgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KLQot
ICAgICAgICBDVFRFOiBVc2UgcmVmZXJlbmNlcyBpbiBhbmQgYXJvdW5kIERyYWdDb250cm9sbGVy
Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjI0MjcK
LQotICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgotCi0gICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvRHJhZ0NsaWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpEcmFnQ2xpZW50
RWZsOjp3aWxsUGVyZm9ybURyYWdEZXN0aW5hdGlvbkFjdGlvbik6Ci0gICAgICAgIChXZWJDb3Jl
OjpEcmFnQ2xpZW50RWZsOjp3aWxsUGVyZm9ybURyYWdTb3VyY2VBY3Rpb24pOgotICAgICAgICAo
V2ViQ29yZTo6RHJhZ0NsaWVudEVmbDo6YWN0aW9uTWFza0ZvckRyYWcpOgotICAgICAgICAoV2Vi
Q29yZTo6RHJhZ0NsaWVudEVmbDo6c3RhcnREcmFnKToKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9EcmFnQ2xpZW50RWZsLmg6Ci0KLTIwMTMtMTAtMDQgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVy
c2NhQGFwcGxlLmNvbT4KLQotICAgICAgICBGcmFtZVBvbGljeUZ1bmN0aW9uIHNob3VsZCBiZSBh
biBzdGQ6OmZ1bmN0aW9uCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMjIzNjIKLQotICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KLQotICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcDoKLSAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpjYWxsUG9saWN5RnVuY3Rpb24pOgotICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoV2lsbFN1Ym1pdEZv
cm0pOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGVj
aWRlUG9saWN5Rm9yUmVzcG9uc2UpOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGll
bnRFZmw6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKToKLSAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5h
dmlnYXRpb25BY3Rpb24pOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50RWZsLmg6Ci0KLTIwMTMtMTAtMDMgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KLQot
ICAgICAgICBSZW1vdmUgc2hvdWxkUnViYmVyQmFuZEluRGlyZWN0aW9uIGZyb20gdGhlIFdLQnVu
ZGxlUGFnZVVJQ2xpZW50Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMjIzMDkKLQotICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgotCi0g
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmg6Ci0KLTIwMTMtMTAtMDEg
IFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KLQotICAgICAgICBDVFRFOiBET01XcmFwcGVy
V29ybGRzIHNob3VsZCBiZSBwYXNzZWQgYXJvdW5kIGJ5IHJlZmVyZW5jZQotICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIyMjA2Ci0KLSAgICAgICAgUmV2
aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBS
ZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHA6Ci0gICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRF
Zmw6OmV2YWx1YXRlU2NyaXB0SW5Jc29sYXRlZFdvcmxkKToKLSAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxv
YWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQpOgotICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmg6Ci0KLTIwMTMtMDkt
MzAgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KLQotICAgICAgICBGaXggdGhlIGJ1aWxk
LgotCi0gICAgICAgICogZXdrL2V3a19zZXR0aW5ncy5jcHA6Ci0KLTIwMTMtMDktMzAgIFNhbSBX
ZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KLQotICAgICAgICBSZW1vdmUgc3VwcG9ydCBmb3IgRE9N
RmlsZVN5c3RlbQotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTIyMTM3Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJzIENhcmxzc29uLgotCi0gICAg
ICAgICogZXdrL2V3a19zZXR0aW5ncy5jcHA6Ci0gICAgICAgIChld2tfc2V0dGluZ3NfZmlsZV9z
eXN0ZW1fcGF0aF9zZXQpOgotCi0yMDEzLTA5LTI4ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxl
LmNvbT4KLQotICAgICAgICBBZGQgRnJhbWU6Om1haW5GcmFtZSBhbmQgRnJhbWU6OmlzTWFpbkZy
YW1lCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjIw
NjQKLQotICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgotCi0gICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29yZTo6
RnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0KToKLSAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjphc3NpZ25JZGVudGlmaWVyVG9Jbml0aWFs
UmVxdWVzdCk6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6dXBkYXRl
R2xvYmFsSGlzdG9yeSk6Ci0gICAgICAgIENhbGwgaXNNYWluRnJhbWUuCi0KLTIwMTMtMDktMjYg
IERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgotCi0gICAgICAgIHJlbmFtZSBLVVJMIHRv
IFVSTAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYy
MTQKLQotICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgotCi0gICAgICAgICogbWFu
eSBmaWxlczogUmVuYW1lZCwgdXNpbmcgc2NyaXB0LgotCi0yMDEzLTA5LTI3ICBEYXJpbiBBZGxl
ciAgPGRhcmluQGFwcGxlLmNvbT4KLQotICAgICAgICBBZGQgZW1wdHkgTWFpbkZyYW1lIGNsYXNz
Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjE3NzAK
LQotICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgotCi0gICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHRFZmwuY3BwOgotICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEVmbC5jcHA6Ci0gICAgICAgICogZXdrL2V3
a192aWV3LmNwcDoKLSAgICAgICAgSW5jbHVkZSBNYWluRnJhbWUuaCBpbnN0ZWFkIG9mIEZyYW1l
LmggYXMgbmVlZGVkLgotCi0yMDEzLTA5LTI1ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBw
bGUuY29tPgotCi0gICAgICAgIFJlZmFjdG9yIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMgYXMgYSBT
aW5nbGV0b24uCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMjE4ODMuCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgSmVyIE5vYmxlLgotCi0gICAgICAgICog
V2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcDoKLSAgICAgICAgKER1
bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6c2V0Q1NTUmVnaW9uc0VuYWJsZWQpOiBVc2Ugc2luZ2xl
dG9uLgotICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpzZXRTZWFtbGVzc0lGcmFt
ZXNFbmFibGVkKTogRGl0dG8uCi0gICAgICAgICogZXdrL2V3a19zZXR0aW5ncy5jcHA6Ci0gICAg
ICAgIChld2tfc2V0dGluZ3Nfc2hhZG93X2RvbV9lbmFibGVfZ2V0KTogRGl0dG8uCi0gICAgICAg
IChld2tfc2V0dGluZ3Nfc2hhZG93X2RvbV9lbmFibGVfc2V0KToKLSAgICAgICAgKiBld2svZXdr
X3ZpZXcuY3BwOgotICAgICAgICAoX2V3a192aWV3X3ByaXZfbmV3KTogRGl0dG8uCi0KLTIwMTMt
MDktMjAgIE1hcmlvIFNhbmNoZXogUHJhZGEgIDxtYXJpby5wcmFkYUBzYW1zdW5nLmNvbT4KLQot
ICAgICAgICBbQVRLXSBEbyBub3QgZXhwb3NlIGFyaWEtaGVscCBpbiBBVEsgYmFzZWQgcGxhdGZv
cm1zCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjE2
NzUKLQotICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBGbGVpemFjaC4KLQotICAgICAgICBSZW1v
dmVkIGFjY2Vzc2liaWxpdHlIZWxwVGV4dCgpIGhlbHBlciBtZXRob2QgZnJvbQotICAgICAgICBE
dW1wUmVuZGVyU3VwcG9ydEVmbCdzIEFQSSwgc2luY2UgaXQncyBub3QgbG9uZ2VyIG5lZWRlZC4K
LQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHA6
IFJlbW92ZWQgbWV0aG9kLgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVl
U3VwcG9ydEVmbC5oOiBEaXR0by4KLQotMjAxMy0wOS0xNiAgRW5yaWNhIENhc3VjY2kgIDxlbnJp
Y2FAYXBwbGUuY29tPgotCi0gICAgICAgIFJlbW92ZSB1bnVzZWQgZnVuY3Rpb24gZGlkU2V0U2Vs
ZWN0aW9uVHlwZXNGb3JQYXN0ZWJvYXJkIGZyb20gRWRpdG9yQ2xpZW50LgotICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIxNDY0Ci0KLSAgICAgICAgUmV2
aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JD
bGllbnRFZmwuY3BwOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5o
OgotCi0yMDEzLTA5LTEyICBNaWtoYWlsIFBvemRueWFrb3YgIDxtaWtoYWlsLnBvemRueWFrb3ZA
aW50ZWwuY29tPgotCi0gICAgICAgIFJlbW92ZSBob21lLWJyZXdlZCBudWxscHRyCi0gICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTk2MjQKLQotICAgICAg
ICBSZXZpZXdlZCBieSBBbmRlcnMgQ2FybHNzb24uCi0KLSAgICAgICAgVGhlIHN0YW5kYXJkIEMr
KzExIG51bGxwdHIgYW5kIHN0ZDo6bnVsbHB0cl90IHR5cGUgc2hvdWxkIGJlIHVzZWQgbm93Lgot
Ci0gICAgICAgICogdGVzdHMvVW5pdFRlc3RVdGlscy9FV0tUZXN0Vmlldy5jcHA6Ci0KLTIwMTMt
MDktMTAgIE1hcmNlbG8gTW9yYWlzICA8bS5tb3JhaXNAc2Ftc3VuZy5jb20+Ci0KLSAgICAgICAg
W0VGTF0gV2ViSW5zcGVjdG9yOiBNb3ZlIHRvIG5ldyB3ZWJpbnNwZWN0b3IKLSAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExOTU1OQotCi0gICAgICAgIFJl
dmlld2VkIGJ5IEd5dXlvdW5nIEtpbS4KLQotICAgICAgICBMb2FkaW5nIHRoZSBuZXcgV2ViIElu
c3BlY3RvciBwYWdlIGluc3RlYWQgb2YgdGhlIG9sZCBpbnNwZWN0b3IuCi0gICAgICAgIENvLWF1
dGhvcjogQW5kcmUgTG91cmVpcm8gPGFuZHJlLnZsQHNhbXN1bmcuY29tPgotCi0gICAgICAgICog
V2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckNsaWVudEVmbDo6b3Blbkluc3BlY3RvckZyb250ZW5kKToKLQotMjAxMy0wOS0w
NSAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW0NNQUtF
XSBBZGQgYysrMHggaW50byBDWFhfRkxBR1MgYXMgYSBkZWZhdWx0Ci0gICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjA4MTIKLQotICAgICAgICBVbnJldmll
d2VkIGJ1aWxkIGZpeCBmb3IgRUZMIHBvcnRzLgotCi0gICAgICAgICogdGVzdHMvVW5pdFRlc3RV
dGlscy9FV0tUZXN0Q29uZmlnLmg6IEFkZCBzcGFjZSBiZXR3ZWVuIHN0cmluZ3MuCi0KLTIwMTMt
MDgtMjggIFJ5dWFuIENob2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtF
RkxdIExldCBQYWdlIGNyZWF0ZSB0aGUgbWFpbiBGcmFtZQotICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIwMzYwCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkg
RGFyaW4gQWRsZXIuCi0KLSAgICAgICAgUGFnZSBhbHdheXMgY3JlYXRlcyB0aGUgbWFpbiBGcmFt
ZSBieSBpdHNlbGYgYWZ0ZXIgcjE1NDYxNi4KLSAgICAgICAgVGhpcyBwYXRjaCBmb2xsb3dzIHRo
ZSBjaGFuZ2VzIGZvciBXZWJLaXQvRWZsIGxpa2Ugb3RoZXIgcG9ydHMuCi0KLSAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlckNsaWVudEVmbDo6Y3JlYXRlRnJhbWUpOgotICAgICAgICBNb3ZlZCB0aGUg
bG9naWMgb2YgZXdrX3ZpZXdfZnJhbWVfY3JlYXRlLgotICAgICAgICAqIGV3ay9ld2tfZnJhbWUu
Y3BwOgotICAgICAgICAoZXdrX2ZyYW1lX2luaXQpOgotICAgICAgICAoZXdrX2ZyYW1lX2NoaWxk
X2FkZCk6Ci0gICAgICAgIE1vdmVkIGNvbnN0cnVjdGlvbiBsb2dpYyBvZiBGcmFtZSBhbmQgRnJh
bWVMb2RlckNsaWVudEVmbCBmcm9tIGV3a192aWV3LgotICAgICAgICAoRVdLUHJpdmF0ZTo6c2V0
Q29yZUZyYW1lKToKLSAgICAgICAgKiBld2svZXdrX2ZyYW1lX3ByaXZhdGUuaDoKLSAgICAgICAg
KiBld2svZXdrX3ZpZXcuY3BwOiBSZW1vdmVkIF9ld2tfdmlld19jb3JlX2ZyYW1lX25ldy4KLSAg
ICAgICAgKF9ld2tfdmlld19wcml2X25ldyk6Ci0gICAgICAgIChfZXdrX3ZpZXdfc21hcnRfYWRk
KToKLSAgICAgICAgKGV3a192aWV3X2ZyYW1lX3JlY3RfY2hhbmdlZCk6Ci0gICAgICAgICogZXdr
L2V3a192aWV3X3ByaXZhdGUuaDoKLQotMjAxMy0wOC0yNCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBh
cHBsZS5jb20+Ci0KLSAgICAgICAgRnJhbWU6OnRyZWUgc2hvdWxkIHJldHVybiBhIHJlZmVyZW5j
ZSBpbnN0ZWFkIG9mIGEgcG9pbnRlcgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTIwMjU5Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGlu
Zy4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5j
cHA6Ci0gICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OmNsZWFyRnJhbWVOYW1lKToK
LSAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6ZnJhbWVDaGlsZHJlbik6Ci0gICAg
ICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OmZyYW1lUGFyZW50KToKLSAgICAgICAgKiBl
d2svZXdrX2ZyYW1lLmNwcDoKLSAgICAgICAgKF9ld2tfZnJhbWVfY2hpbGRyZW5faXRlcmF0b3Jf
bmV4dCk6Ci0gICAgICAgIChld2tfZnJhbWVfY2hpbGRfZmluZCk6Ci0gICAgICAgIChld2tfZnJh
bWVfbmFtZV9nZXQpOgotICAgICAgICAoZXdrX2ZyYW1lX2NoaWxkX2FkZCk6Ci0gICAgICAgICog
ZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAgKGV3a192aWV3X2ZyYW1lX2NyZWF0ZSk6Ci0gICAg
ICAgIFVzZSB0cmVlKCkuIGluc3RlYWQgb2YgdHJlZSgpLT4uCi0KLTIwMTMtMDgtMjIgIEFuZHJl
YXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgotCi0gICAgICAgIEVGTCBidWlsZCBqdWljZS4K
LQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHA6Ci0gICAgICAg
IChraXQpOgotCi0yMDEzLTA4LTIwICBQcmF0aWsgU29sYW5raSAgPHBzb2xhbmtpQGFwcGxlLmNv
bT4KLQotICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTIwMDI5PiBEb2N1bWVudDo6bWFy
a2VycygpIHNob3VsZCByZXR1cm4gYSByZWZlcmVuY2UKLQotICAgICAgICBSZXZpZXdlZCBieSBB
bmRyZWFzIEtsaW5nLgotCi0gICAgICAgIERvY3VtZW50OjptX21hcmtlcnMgaXMgbmV2ZXIgTlVM
TCBzbyByZXR1cm4gYSByZWZlcmVuY2UgZnJvbSBEb2N1bWVudDo6bWFya2VycygpLiBBbHNvIG1h
cmsKLSAgICAgICAgbV9tYXJrZXJzIGFzIGNvbnN0IGFuZCBpbml0aWFsaXplIGl0IGluIG1lbWJl
ciBpbml0aWFsaXphdGlvbi4KLQotICAgICAgICAqIGV3ay9ld2tfZnJhbWUuY3BwOgotICAgICAg
ICAoZXdrX2ZyYW1lX3RleHRfbWF0Y2hlc191bm1hcmtfYWxsKToKLSAgICAgICAgKGV3a19mcmFt
ZV90ZXh0X21hdGNoZXNfbnRoX3Bvc19nZXQpOgotCi0yMDEzLTA4LTE5ICBQcmF0aWsgU29sYW5r
aSAgPHBzb2xhbmtpQGFwcGxlLmNvbT4KLQotICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2Iv
MTE5OTE4PiBGcmFtZTo6c2VsZWN0aW9uKCkgc2hvdWxkIHJldHVybiBhIHJlZmVyZW5jZQotCi0g
ICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgotCi0gICAgICAgIG1fc2VsZWN0aW9uIGlz
IG5ldmVyIE5VTEwgc28gcmV0dXJuIGEgcmVmZXJlbmNlIGZyb20gRnJhbWU6OnNlbGVjdGlvbigp
LiBBbHNvIHJlbW92ZWQgc29tZQotICAgICAgICB1bm5lY2Vzc2FyeSBudWxsIGNoZWNrcyBhbmQg
YXNzZXJ0IGRpZmYgdHMgZXhwb3NlZCBhcyBhIHJlc3VsdC4KLQotICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHA6Ci0gICAgICAgIChEdW1wUmVuZGVy
VHJlZVN1cHBvcnRFZmw6OnNlbGVjdGlvblJlY3RhbmdsZSk6Ci0gICAgICAgIChEdW1wUmVuZGVy
VHJlZVN1cHBvcnRFZmw6OmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKToKLSAgICAgICAgKER1
bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6c2VsZWN0ZWRSYW5nZSk6Ci0gICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNs
aWVudEVmbDo6aGFuZGxlRWRpdGluZ0tleWJvYXJkRXZlbnQpOgotICAgICAgICAqIGV3ay9ld2tf
ZnJhbWUuY3BwOgotICAgICAgICAoZXdrX2ZyYW1lX3RleHRfc2VsZWN0aW9uX3R5cGVfZ2V0KToK
LQotMjAxMy0wOC0xNiAgSmFlaHVuIExpbSAgPGxqYWVodW4ubGltQHNhbXN1bmcuY29tPgotCi0g
ICAgICAgIFtFRkxdIFVucmV2aWV3ZWQgYnVpbGQgZml4IGFmdGVyIHIxNTQxOTIKLQotICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHA6Ci0gICAgICAg
IChEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OmV2YWx1YXRlU2NyaXB0SW5Jc29sYXRlZFdvcmxk
KToKLQotMjAxMy0wOC0xNiAgUHJhdGlrIFNvbGFua2kgIDxwc29sYW5raUBhcHBsZS5jb20+Ci0K
LSAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzExOTg1Mj4gRnJhbWU6OnNjcmlwdENvbnRy
b2xsZXIoKSBzaG91bGQgcmV0dXJuIGEgcmVmZXJlbmNlCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkg
QW5kcmVhcyBLbGluZy4KLQotICAgICAgICBtX3NjcmlwdCBpcyBuZXZlciBOVUxMIHNvIHdlIGNh
biBqdXN0IHJldHVybiBhIHJlZmVyZW5jZS4gQWxzbyByZW1vdmUgc29tZSBwb2ludGxlc3MgbnVs
bAotICAgICAgICBjaGVja3MgYXMgYSByZXN1bHQgb2YgZG9pbmcgdGhpcy4KLQotICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHA6Ci0gICAgICAgIChE
dW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OmV2YWx1YXRlU2NyaXB0SW5Jc29sYXRlZFdvcmxkKToK
LSAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6Z2xvYmFsQ29udGV4dFJlZkZvckZy
YW1lKToKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHA6
Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRDbGVh
cldpbmRvd09iamVjdEluV29ybGQpOgotICAgICAgICAqIGV3ay9ld2tfZnJhbWUuY3BwOgotICAg
ICAgICAoZXdrX2ZyYW1lX3NjcmlwdF9leGVjdXRlKToKLSAgICAgICAgKiBld2svZXdrX3ZpZXcu
Y3BwOgotICAgICAgICAoZXdrX3ZpZXdfanNfb2JqZWN0X2FkZCk6Ci0KLTIwMTMtMDgtMTUgIFJ5
dWFuIENob2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxdIFVucmV2
aWV3ZWQgYnVpbGQgZml4IGFmdGVyIHIxNTQxNDIgYW5kIHIxNTQxNDQuCi0KLSAgICAgICAgKiBl
d2svZXdrX2ZyYW1lLmNwcDogRm9sbG93IHRoZSBjaGFuZ2VzIG9mIHIxNTQxNDIuCi0gICAgICAg
IChld2tfZnJhbWVfdXJpX3NldCk6Ci0gICAgICAgIChld2tfZnJhbWVfY2VydGlmaWNhdGVfc3Rh
dHVzX2dldCk6Ci0KLTIwMTMtMDgtMTUgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxl
LmNvbT4KLQotICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTE5ODU5PiBGcmFtZTo6bG9h
ZGVyKCkgc2hvdWxkIHJldHVybiBhIHJlZmVyZW5jZQotCi0gICAgICAgIFJldmlld2VkIGJ5IEFu
ZHJlYXMgS2xpbmcuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwu
Y3BwOgotICAgICAgICAoa2l0KToKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVy
VHJlZVN1cHBvcnRFZmwuY3BwOgotICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpj
YWxsU2hvdWxkQ2xvc2VPbldlYlZpZXcpOgotICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0
RWZsOjpjbGVhck9wZW5lcik6Ci0gICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OmZy
YW1lQ2hpbGRyZW4pOgotICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpyZXNwb25z
ZU1pbWVUeXBlKToKLSAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6cHJvdmlzaW9u
YWxVUkwpOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNw
cDoKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpjYWxsUG9saWN5RnVu
Y3Rpb24pOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNo
RGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKToKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1l
TG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24p
OgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OnVwZGF0ZUdsb2JhbEhp
c3RvcnlSZWRpcmVjdExpbmtzKToKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50
RWZsOjp1cGRhdGVHbG9iYWxIaXN0b3J5KToKLSAgICAgICAgKiBld2svZXdrX2ZyYW1lLmNwcDoK
LSAgICAgICAgKF9ld2tfZnJhbWVfbG9hZGVyX2VmbF9nZXQpOgotICAgICAgICAoX2V3a19mcmFt
ZV9zbWFydF9kZWwpOgotICAgICAgICAoX2V3a19mcmFtZV9jb250ZW50c19zZXRfaW50ZXJuYWwp
OgotICAgICAgICAoZXdrX2ZyYW1lX3N0b3ApOgotICAgICAgICAoZXdrX2ZyYW1lX3JlbG9hZCk6
Ci0gICAgICAgIChld2tfZnJhbWVfcmVsb2FkX2Z1bGwpOgotICAgICAgICAoZXdrX2ZyYW1lX2No
aWxkX2FkZCk6Ci0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAgKGV3a192aWV3
X2ZyYW1lX2ZvY3VzZWRfZ2V0KToKLSAgICAgICAgKGV3a192aWV3X3NldHRpbmdfdXNlcl9hZ2Vu
dF9zZXQpOgotICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19lbmNvZGluZ19jdXN0b21fZ2V0KToK
LSAgICAgICAgKGV3a192aWV3X3NldHRpbmdfZW5jb2RpbmdfY3VzdG9tX3NldCk6Ci0KLTIwMTMt
MDgtMTIgIFJ5dWFuIENob2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtF
RkxdW1dLMV0gVVJMIHByaW50aW5nIGNvZGUgaW4gRHVtcFJlbmRlclRyZWUgZG9lc24ndCBtYXRj
aCBXVFIgb3IgTWFjIERSVAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTE5NTg1Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgR3l1eW91bmcgS2ltLgotCi0g
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcDoKLSAg
ICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6cHJvdmlzaW9uYWxVUkwpOgotICAgICAg
ICBJbXBsZW1lbnRlZCB0byBwYXNzIHByb3Zpc2lvbmFsVVJMIG9mIG1haW4gZnJhbWUgdG8gRHVt
cFJlbmRlclRyZWVDaHJvbWUuCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRy
ZWVTdXBwb3J0RWZsLmg6Ci0KLTIwMTMtMDgtMDkgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBh
cHBsZS5jb20+Ci0KLSAgICAgICAgUkVHUkVTU0lPTiAocjE0Mjc1NSk6IHdpbmRvdy5vcGVuIGNy
ZWF0ZXMgYW4gaW52aXNpYmxlIHdpbmRvdyB3aGVuIHdpZHRoIGFuZCBoZWlnaHQgYXJlIDAKLSAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExOTYzMwotCi0g
ICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBv
cnQvQ2hyb21lQ2xpZW50RWZsLmNwcDogKFdlYkNvcmU6OkNocm9tZUNsaWVudEVmbDo6c2V0V2lu
ZG93UmVjdCk6Ci0gICAgICAgIE9uY2UgYWdhaW4sIHRoZSBwYXNzZWQgcmVjdCBjYW5ub3QgYmUg
ZW1wdHkuCi0KLTIwMTMtMDctMjcgIE1hcmsgUm93ZSAgPG1yb3dlQGFwcGxlLmNvbT4KLQotICAg
ICAgICBMb2dnaW5nIHNob3VsZCBiZSBjb25maWd1cmFibGUgdXNpbmcgaHVtYW4tcmVhZGFibGUg
Y2hhbm5lbCBuYW1lcyByYXRoZXIgdGhhbiBjcmF6eSBiaXRtYXNrcwotICAgICAgICA8aHR0cDov
L3dlYmtpdC5vcmcvYi8xMTkwMzE+Ci0KLSAgICAgICAgSW1wbGVtZW50IHNoYXJlZCBsb2dpYyBm
b3IgaW5pdGlhbGl6aW5nIGxvZ2dpbmcgY2hhbm5lbHMgYmFzZWQgb24gaHVtYW4tcmVhZGFibGUg
Y2hhbm5lbCBuYW1lcyBpbiBXVEYsCi0gICAgICAgIGFuZCByZXdvcmsgdGhlIFdlYkNvcmUsIFdl
YktpdCBhbmQgV2ViS2l0MiBsb2dnaW5nIGluaXRpYWxpemF0aW9uIG9uIHRvcCBvZiBpdC4KLQot
ICAgICAgICBMb2dnaW5nIGNoYW5uZWxzIG1heSBub3cgYmUgZW5hYmxlZCBieSBwcm92aWRpbmcg
YSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBjaGFubmVsIG5hbWVzLCB3aXRoIHRoZSBzcGVjaWFs
Ci0gICAgICAgICJhbGwiIG5hbWUgZW5hYmxpbmcgYWxsIGNoYW5uZWxzLiBDaGFubmVsIG5hbWVz
IHByZWZpeGVkIHdpdGggYSBsZWFkaW5nICItIiB3aWxsIHJlc3VsdCBpbiB0aGUgbmFtZWQgY2hh
bm5lbAotICAgICAgICBiZWluZyBkaXNhYmxlZC4gRm9yIGluc3RhbmNlLCBzcGVjaWZ5aW5nICJh
bGwsLWhpc3RvcnksLWxvYWRpbmciIHdpbGwgcmVzdWx0IGluIGFsbCBsb2dnaW5nIGNoYW5uZWxz
IGV4Y2VwdAotICAgICAgICBmb3IgaGlzdG9yeSBhbmQgbG9hZGluZyBiZWluZyBlbmFibGVkLgot
Ci0gICAgICAgIEZvciBPUyBYIGRldmVsb3BlcnMsIHRoaXMgYWxzbyBjaGFuZ2VzIHRoZSBuYW1l
IG9mIHRoZSB1c2VyIGRlZmF1bHRzIHVzZWQgdG8gZW5hYmxlIGxvZ2dpbmcuIFRoaXMgaXMgZG9u
ZSB0byBhbGxvdwotICAgICAgICB0aGUgb2xkIHVzZXIgZGVmYXVsdHMgdG8gcmVtYWluIHNldCBm
b3IgdGhvc2UgcGVvcGxlIHRoYXQgbmVlZCB0byBzd2l0Y2ggYmV0d2VlbiB2ZXJzaW9uIG9mIFdl
YktpdCBiZWZvcmUgYW5kCi0gICAgICAgIGFmdGVyIHRoaXMgY2hhbmdlLiBXaGVyZSB0aGUgb2xk
IHVzZXIgZGVmYXVsdCBrZXlzIHdlcmUgV2ViQ29yZUxvZ0xldmVsLCBXZWJLaXRMb2dMZXZlbCBh
bmQgV2ViS2l0MkxvZ0xldmVsLAotICAgICAgICB0aGUgbmV3IHVzZXIgZGVmYXVsdCBrZXlzIGFy
ZSBXZWJDb3JlTG9nZ2luZywgV2ViS2l0TG9nZ2luZyBhbmQgV2ViS2l0MkxvZ2dpbmcuCi0KLSAg
ICAgICAgRm9yIEdUSyBkZXZlbG9wZXJzLCB0aGlzIGNoYW5nZXMgdGhlIHNlcGFyYXRvciB1c2Vk
IGluIHRoZSBXRUJLSVRfREVCVUcgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gYSBjb21tYSBmb3IK
LSAgICAgICAgY29uc2lzdGVuY3kgd2l0aCB0aGUgb3RoZXIgcGxhdGZvcm1zIGFuZCB0byBlbmFi
bGUgbW9yZSBjb2RlIHNoYXJpbmcuCi0KLSAgICAgICAgV2hpbGUgZG9pbmcgdGhpcyB3b3JrIEkn
dmUgYWxzbyB0YWtlbiB0aGUgb3Bwb3J0dW5pdHkgdG8gZWxpbWluYXRlIHRoZSBuZWVkIHRvIHRv
dWNoIG11bHRpcGxlIGZpbGVzIHdoZW4KLSAgICAgICAgYWRkaW5nIGEgbmV3IGxvZ2dpbmcgY2hh
bm5lbC4gTm93IG9ubHkgdGhlIGhlYWRlciBpbiB0aGUgcmVsZXZhbnQgcHJvamVjdCBuZWVkcyB0
byBiZSB1cGRhdGVkLgotCi0gICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCi0KLSAgICAg
ICAgKiBld2svZXdrX21haW4uY3BwOiBTd2l0Y2ggZnJvbSBXZWJDb3JlJ3MgSW5pdGlhbGl6ZUxv
Z2dpbmcuaCB0byBMb2dnaW5nLmguCi0KLTIwMTMtMDctMjcgIEphY2t5IEppYW5nICA8emhhamlh
bmdAYmxhY2tiZXJyeS5jb20+Ci0KLSAgICAgICAgUmVwbGFjZSBhbGwgdXNlcyBvZiBHcmFwaGlj
c0xheWVyOjpjcmVhdGUgZnVuY3Rpb24gd2l0aCB0aGUgb25lIHRoYXQgdGFrZXMgYSBHcmFwaGlj
c0xheWVyRmFjdG9yeQotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTE5MTg2Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJzIENhcmxzc29uLgotCi0g
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHRFZmwu
Y3BwOgotICAgICAgICAoV2ViQ29yZTo6QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OmF0
dGFjaFJvb3RHcmFwaGljc0xheWVyKToKLQotMjAxMy0wNy0yNSAgQW5kcmVhcyBLbGluZyAgPGFr
bGluZ0BhcHBsZS5jb20+Ci0KLSAgICAgICAgQ2hyb21lQ2xpZW50Ojpmb2N1c2VkTm9kZUNoYW5n
ZWQoKSBzaG91bGQgYmUgZm9jdXNlZEVsZW1lbnRDaGFuZ2VkKCkuCi0gICAgICAgIDxodHRwOi8v
d2Via2l0Lm9yZy9iLzExOTExMD4KLQotICAgICAgICBSZXZpZXdlZCBieSBBbmRlcnMgQ2FybHNz
b24uCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwOgotICAg
ICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZsOjpmb2N1c2VkRWxlbWVudENoYW5nZWQpOgot
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oOgotCi0yMDEzLTA3LTE1
ICBLd2FuZyBZdWwgU2VvICA8c2t5dWxAY29tcGFueTEwMC5uZXQ+Ci0KLSAgICAgICAgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpjcmVhdGVEZWZhdWx0U2Vzc2lvbiBpcyBvbmx5IGltcGxlbWVudGVk
IGJ5IFNvdXAKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTExODY3OQotCi0gICAgICAgIFJldmlld2VkIGJ5IEFsZXhleSBQcm9za3VyeWFrb3YuCi0KLSAg
ICAgICAgUmVwbGFjZSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNyZWF0ZURlZmF1bHRTZXNzaW9u
KCkgd2l0aAotICAgICAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vz
c2lvbigpLgotCi0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAgKF9ld2tfdmll
d19wcml2X25ldyk6Ci0gICAgICAgIChFV0tQcml2YXRlOjpzdG9yYWdlU2Vzc2lvbik6Ci0KLTIw
MTMtMDctMDkgIFJ5dWFuIENob2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgotCi0gICAgICAg
IFtFRkxdIEFkZCBld2tfdmlld19kZXZpY2VfcGl4ZWxfcmF0aW9fc2V0Ci0gICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTg1MjEKLQotICAgICAgICBSZXZp
ZXdlZCBieSBHeXV5b3VuZyBLaW0uCi0KLSAgICAgICAgZXdlYmtpdCBhbmQgZXdlYmtpdDIgaGF2
ZSBkaWZmZXJlbnQgYXBwcm9hY2ggYWJvdXQgZ2V0dGluZyBkZXZpY2UgcGl4ZWwgcmF0aW8uCi0g
ICAgICAgIGV3ZWJraXQgZGVwZW5kcyBvbiBkZXByZWNhdGVkVGFyZ2V0RFBJIGFuZCBlY29yZV94
X2RwaV9nZXQsCi0gICAgICAgIGJ1dCBld2Via2l0MiB1c2UgUGFnZTo6ZGV2aWNlU2NhbGVGYWN0
b3IuCi0KLSAgICAgICAgVGhpcyBwYXRjaCB3aWxsIGFkZCBld2tfdmlld19kZXZpY2VfcGl4ZWxf
cmF0aW9fc2V0IGFuZCB1c2UgUGFnZTo6ZGV2aWNlU2NhbGVGYWN0b3IoKQotICAgICAgICBpbnN0
ZWFkIG9mIFZpZXdwb3J0QXJndW1lbnRzOjpkZXByZWNhdGVkVGFyZ2V0RFBJIGxpa2UgZXdlYmtp
dDIuCi0KLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoX2V3a192aWV3X3By
aXZfbmV3KToKLSAgICAgICAgKF9ld2tfdmlld192aWV3cG9ydF9hdHRyaWJ1dGVzX2NvbXB1dGUp
OiBVc2UgUGFnZTo6ZGV2aWNlU2NhbGVGYWN0b3IoKS4KLSAgICAgICAgKGV3a192aWV3X3ZpZXdw
b3J0X2F0dHJpYnV0ZXNfZ2V0KTogRGl0dG8uCi0gICAgICAgIChld2tfdmlld19kZXZpY2VfcGl4
ZWxfcmF0aW9fc2V0KTogQWRkZWQuCi0gICAgICAgIChld2tfdmlld19kZXZpY2VfcGl4ZWxfcmF0
aW9fZ2V0KToKLSAgICAgICAgKiBld2svZXdrX3ZpZXcuaDoKLSAgICAgICAgVXBkYXRlIGRvY3Vt
ZW50IG9mIGV3a192aWV3X2RldmljZV9waXhlbF9yYXRpb19nZXQgKGZyb20gZXdlYmtpdDIpIGFu
ZAotICAgICAgICBhZGRlZCBld2tfdmlld19kZXZpY2VfcGl4ZWxfcmF0aW9fc2V0LgotCi0yMDEz
LTA2LTI3ICBLYW5naWwgSGFuICA8a2FuZ2lsLmhhbkBzYW1zdW5nLmNvbT4KLQotICAgICAgICBB
ZG9wdCBpcy90b0hUTUxJbnB1dEVsZW1lbnQgZm9yIGNvZGUgY2xlYW51cAotICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE4MTMwCi0KLSAgICAgICAgUmV2
aWV3ZWQgYnkgQW50dGkgS29pdmlzdG8uCi0KLSAgICAgICAgVG8gZW5oYW5jZSByZWFkYWJpbGl0
eSwgdGhpcyBwYXRjaCBhZG9wdHMgaXMvdG9IVE1MSW5wdXRFbGVtZW50LgotICAgICAgICBUaGlz
IGFsc28gaGVscHMgb3V0IHRvIHJlZHVjZSBkdXBsaWNhdGVkIHVzZSBvZiBzdGF0aWNfY2FzdC4K
LQotICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChld2tfdmlld19pbnB1dF9t
ZXRob2Rfc3RhdGVfc2V0KToKLQotMjAxMy0wNi0yNiAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lA
c2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW0VGTF1bUkVHUkVTU0lPTl0gQ3Jhc2ggYWZ0ZXIgcjE1
MTU0MCB3aXRoIGRlYnVnIGJ1aWxkCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMTgxMTEKLQotICAgICAgICBSZXZpZXdlZCBieSBHeXV5b3VuZyBLaW0u
Ci0KLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoZXdrX3ZpZXdfc2Nyb2xs
KTogRml4ZWQgQVNTRVJUIGNvbmRpdGlvbnMgd3JvbmdseSByZWZhY3RvcmVkLgotCi0yMDEzLTA2
LTIxICBDaHJpc3RvcGhlIER1bWV6ICA8Y2guZHVtZXpAc2lzYS5zYW1zdW5nLmNvbT4KLQotICAg
ICAgICBSRUdSRVNTSU9OIChyMTUwNjYzKTogVXNpbmcgd2Via2l0QXVkaW9Db250ZXh0IGluIElu
c3BlY3RvciBtYWtlcyBpdCB1bmRlZmluZWQgZXZlcnl3aGVyZQotICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE3ODI1Ci0KLSAgICAgICAgUmV2aWV3ZWQg
YnkgS2VudGFybyBIYXJhLgotCi0gICAgICAgIFVzZSBTZXR0aW5ncyB0byBlbmFibGUgV2ViIEF1
ZGlvIGluc3RlYWQgb2YgUnVudGltZUVuYWJsZWRGZWF0dXJlcy4KLQotICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHA6Ci0gICAgICAgIChEdW1wUmVu
ZGVyVHJlZVN1cHBvcnRFZmw6OnNldFdlYkF1ZGlvRW5hYmxlZCk6Ci0gICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmg6Ci0gICAgICAgICogZXdrL2V3a192
aWV3LmNwcDoKLSAgICAgICAgKF9ld2tfdmlld19wcml2X25ldyk6Ci0KLTIwMTMtMDYtMTcgIFNl
b2tqdSBLd29uICA8c2Vva2p1Lmt3b25AZ21haWwuY29tPgotCi0gICAgICAgIFtFRkxdIFJlbW92
ZSB1bm5lZWRlZCBXZWJDb3JlIG5hbWVzcGFjZSBpbiBGcmFtZUxvYWRlckNsaWVudEVmbAotICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE3NzE4Ci0KLSAg
ICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXN0b3BoZSBEdW1lei4KLQotICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcDogUmVtb3ZlICd1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZScuCi0KLTIwMTMtMDYtMTcgIFJ1dGggRm9uZyAgPHJ1dGhfZm9uZ0BhcHBsZS5jb20+
Ci0KLSAgICAgICAgUkVHUkVTU0lPTjogSW1wb3J0YW50IGNvbnRyb2xzIGFyZSBtaXNzaW5nIGZy
b20gPHZpZGVvPiBlbGVtZW50IFVJLCB3aGVuIGNvbXBhcmVkIHRvIFF1aWNrVGltZQotICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1OTkKLQotICAgICAg
ICBBZGQgYSAiRG93bmxvYWQgVmlkZW8iLyJEb3dubG9hZCBBdWRpbyIgY29udGV4dCBtZW51IGl0
ZW0gdG8gZG93bmxvYWQgbWVkaWEKLSAgICAgICAgZWxlbWVudHMuCi0KLSAgICAgICAgUmV2aWV3
ZWQgYnkgQmV0aCBEYWtpbi4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Fzc2VydE1hdGNo
aW5nRW51bXMuY3BwOgotICAgICAgICAqIGV3ay9ld2tfY29udGV4dG1lbnUuaDoKLSAgICAgICAg
VXBkYXRlZCB0byBpbmNsdWRlIG5ldyBFV0sgZW51bSB0eXBlIGZvciAiRG93bmxvYWQgVmlkZW8v
QXVkaW8iIGNvbnRleHQgbWVudSBpdGVtLgotCi0yMDEzLTA2LTEzICBSeXVhbiBDaG9pICA8cnl1
YW4uY2hvaUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBbRUZMXSBSZWZhY3RvciBld2tfdmlld19z
Y3JvbGwgdG8gcmVtb3ZlIGludGVybmFsIHN0cnVjdHVyZS4KLSAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNTcxMwotCi0gICAgICAgIFJldmlld2VkIGJ5
IEd5dXlvdW5nIEtpbS4KLQotICAgICAgICBBZnRlciByZW1vdmVkIGMtaXNtIGZyb20gV2ViS2l0
L0VmbCwgVGhlcmUgaXMgbm8gcmVhc29uIHRvIGtlZXAgaW50ZXJuYWwKLSAgICAgICAgc3RydWN0
dXJlcyBsaWtlIEV3a19TY3JvbGxfUmVxdWVzdC4KLSAgICAgICAgVGhpcyBwYXRjaCByZWZhY3Rv
cmVkIGV3a192aWV3X3Njcm9sbCB0byB1c2UgV1RGIGluc3RlYWQgb2YgRXdrX1Njcm9sbF9SZXF1
ZXN0Ci0gICAgICAgIGFuZCBzY3JvbGxzIG9mIFNtYXJ0RGF0YS4KLQotICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpDaHJvbWVD
bGllbnRFZmw6OnNjcm9sbCk6Ci0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDogUmVtb3ZlZCBm
dW5jdGlvbnMgdG8gbWFuYWdlIEV3a19TY3JvbGxfUmVxdWVzdC4KLSAgICAgICAgKF9Fd2tfVmll
d19Qcml2YXRlX0RhdGEpOgotICAgICAgICAoX2V3a192aWV3X3Njcm9sbHNfZmx1c2gpOgotICAg
ICAgICAoX2V3a192aWV3X3ByaXZfZGVsKToKLSAgICAgICAgKF9ld2tfdmlld19zbWFydF9jYWxj
dWxhdGUpOgotICAgICAgICAoZXdrX3ZpZXdfc2Nyb2xsX29mZnNldHNfZ2V0KToKLSAgICAgICAg
KGV3a192aWV3X3Njcm9sbF9yZWN0c19nZXQpOgotICAgICAgICAoZXdrX3ZpZXdfc2Nyb2xsKToK
LSAgICAgICAgKiBld2svZXdrX3ZpZXcuaDogUmVtb3ZlZCBFd2tfU2Nyb2xsX1JlcXVlc3Qgd2hp
Y2ggaXMgcHJpdmF0ZSBzdHJ1Y3R1cmUuCi0gICAgICAgICogZXdrL2V3a192aWV3X3ByaXZhdGUu
aDoKLSAgICAgICAgKFdlYkNvcmUpOgotICAgICAgICAqIGV3ay9ld2tfdmlld19zaW5nbGUuY3Bw
OgotICAgICAgICAoX2V3a192aWV3X3NpbmdsZV9zY3JvbGxfcHJvY2Vzc19zaW5nbGUpOgotICAg
ICAgICAoX2V3a192aWV3X3NpbmdsZV9zbWFydF9zY3JvbGxzX3Byb2Nlc3MpOgotICAgICAgICAq
IGV3ay9ld2tfdmlld190aWxlZC5jcHA6Ci0gICAgICAgIChfZXdrX3ZpZXdfdGlsZWRfc21hcnRf
c2Nyb2xsc19wcm9jZXNzKToKLQotMjAxMy0wNS0yOCAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0Bh
cHBsZS5jb20+Ci0KLSAgICAgICAgRG9jdW1lbnQ6OnNldEZvY3VzZWROb2RlKCkgc2hvdWxkIGJl
IHNldEZvY3VzZWRFbGVtZW50KCkuCi0gICAgICAgIDxodHRwOi8vd2Via2l0Lm9yZy9iLzExNjg1
Nz4KLQotICAgICAgICBSZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0by4KLQotICAgICAgICAqIGV3
ay9ld2tfZnJhbWUuY3BwOgotICAgICAgICAoZXdrX2ZyYW1lX2ZvY3VzZWRfZWxlbWVudF9nZW9t
ZXRyeV9nZXQpOgotICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChld2tfdmll
d19pbnB1dF9tZXRob2Rfc3RhdGVfc2V0KToKLQotMjAxMy0wNS0yOCAgUnl1YW4gQ2hvaSAgPHJ5
dWFuLmNob2lAc2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW0VGTF0gcGMgZmlsZXMgc2hvdWxkIGhh
dmUgaGFyZmJ1enogZGVwZW5kZW5jeS4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTExNjg1MgotCi0gICAgICAgIFJldmlld2VkIGJ5IEd5dXlvdW5nIEtp
bS4KLQotICAgICAgICAqIGV3ZWJraXQucGMuaW46IEFkZGVkIGhhcmZidXp6IGFzIFJlcXVpcmVk
IHBhY2thZ2UuCi0KLTIwMTMtMDUtMjUgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBs
ZS5jb20+Ci0KLSAgICAgICAgVW5wcmVmaXggUGFnZSBWaXNpYmlsaXR5IEFQSQotICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAyMzQwCi0KLSAgICAgICAg
UmV2aWV3ZWQgYnkgVGltIEhvcnRvbi4KLQotICAgICAgICBSZW5hbWUgInByZXZpZXciIHN0YXRl
IHRvICJ1bmxvYWRlZCIgc3RhdGUuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9Bc3NlcnRN
YXRjaGluZ0VudW1zLmNwcDoKLSAgICAgICAgKiBld2svZXdrX3ZpZXcuaDoKLQotMjAxMy0wNS0y
NCAgU2Vva2p1IEt3b24gIDxzZW9ranUua3dvbkBnbWFpbC5jb20+Ci0KLSAgICAgICAgW0VGTF0g
UmVtb3ZlIG9ic29sZXRlIFBhZ2UgZm9yd2FyZCBkZWNsYXJhdGlvbiBmcm9tIEluc3BlY3RvckNs
aWVudEVmbC5oCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMTY3NTIKLQotICAgICAgICBSZXZpZXdlZCBieSBDaHJpc3RvcGhlIER1bWV6LgotCi0gICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50RWZsLmg6Ci0KLTIwMTMtMDUtMjQg
IENocmlzdG9waGUgRHVtZXogIDxjaC5kdW1lekBzaXNhLnNhbXN1bmcuY29tPgotCi0gICAgICAg
IFJlbW92ZSBjdXN0b20gY29kZSBmb3Igd2Via2l0QXVkaW9Db250ZXh0IGdsb2JhbCBjb25zdHJ1
Y3RvciBnZXR0ZXIKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTExNjUzMAotCi0gICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLgotCi0gICAg
ICAgIFVzZSBSdW50aW1lRW5hYmxlZEZlYXR1cmVzIGluc3RlYWQgb2YgU2V0dGluZ3MgdG8gdG9n
Z2xlIFdlYiBBdWRpbyBzdXBwb3J0LgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJl
bmRlclRyZWVTdXBwb3J0RWZsLmNwcDoKLSAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEVm
bDo6c2V0V2ViQXVkaW9FbmFibGVkKToKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVu
ZGVyVHJlZVN1cHBvcnRFZmwuaDoKLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAg
ICAoX0V3a19WaWV3X1ByaXZhdGVfRGF0YSk6Ci0gICAgICAgIChfZXdrX3ZpZXdfcHJpdl9uZXcp
OgotICAgICAgICAqIGV3ay9ld2tfdmlldy5oOiBSZW1vdmUgcHVibGljIEFQSSB0byB0b2dnbGUg
V2ViIEF1ZGlvIHN1cHBvcnQgYXMgaXQgaXMgbm8gbG9uZ2VyCi0gICAgICAgIGEgdmlldyBzcGVj
aWZpYyBmZWF0dXJlLgotCi0yMDEzLTA1LTE5ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBh
cHBsZS5jb20+Ci0KLSAgICAgICAgUmVtb3ZlIENocm9tZUNsaWVudDo6d2ViVmlldygpCi0gICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTYwNTQKLQotICAg
ICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KLQotICAgICAgICBUaGlzIGJsYXRhbnRseSBo
b3JyaWJsZSBsYXllciB2aW9sYXRpb24gd2FzIG9ubHkgdXNlZCB0byBrbm93IGlmIGEgQ2hyb21l
Q2xpZW50IGlzIGFuIGVtcHR5Ci0gICAgICAgIGNsaWVudCBvciBub3QuIFdlIGFscmVhZHkgaGF2
ZSBhIChzbGlnaHRseSBsZXNzIGhvcnJpYmxlKSB3YXkgdG8gZG8gdGhhdC4KLQotICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oOgotICAgICAgICAoQ2hyb21lQ2xpZW50
RWZsKToKLQotMjAxMy0wNS0xOCAgUGF0cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Via2l0Lm9y
Zz4KLQotICAgICAgICBbQ01ha2VdIFJlcGxhY2UgKl9MSUJSQVJZX05BTUUgd2l0aCAqX09VVFBV
VF9OQU1FCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MTQ1NTQKLQotICAgICAgICBSZXZpZXdlZCBieSBHeXV5b3VuZyBLaW0uCi0KLSAgICAgICAgVXNp
bmcgdmFyaWFibGVzIGFzIHRhcmdldCBuYW1lcyBpcyB2ZXJ5IHVuY29tbW9uIGluIENNYWtlLgot
ICAgICAgICBUaGUgdXN1YWwgd2F5IHRvIHNwZWNpZnkgdGhlIG5hbWUgb2YgdGhlIHJlc3VsdGlu
ZyBiaW5hcnkKLSAgICAgICAgaXMgdG8gc2V0IHRoZSBPVVRQVVRfTkFNRSB0YXJnZXQgcHJvcGVy
dHkuCi0KLSAgICAgICAgKiBld2Via2l0LnBjLmluOgotCi0yMDEzLTA1LTE2ICBTZW9ranUgS3dv
biAgPHNlb2tqdS5rd29uQGdtYWlsLmNvbT4KLQotICAgICAgICBbRUZMXSBpbnNwZWN0b3ItcHJv
dG9jb2wvcGFnZS9qYXZhc2NyaXB0RGlhbG9nRXZlbnRzLmh0bWwgaXMgZmFpbGluZwotICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE0NzgxCi0KLSAgICAg
ICAgUmV2aWV3ZWQgYnkgQ2hyaXN0b3BoZSBEdW1lei4KLQotICAgICAgICBXZSBuZWVkIHRvIG1h
a2UgYSBkaXN0aW5jdGlvbiBiZXR3ZWVuIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCBhbmQg
Y29uZmlybS4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHA6
Ci0gICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRFZmw6OnJ1bkJlZm9yZVVubG9hZENvbmZp
cm1QYW5lbCk6Ci0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDogQWRkIGV3a192aWV3X3J1bl9i
ZWZvcmVfdW5sb2FkX2NvbmZpcm0gQVBJLgotICAgICAgICAoX2V3a192aWV3X3NtYXJ0X3J1bl9i
ZWZvcmVfdW5sb2FkX2NvbmZpcm0pOgotICAgICAgICAoZXdrX3ZpZXdfYmFzZV9zbWFydF9zZXQp
OgotICAgICAgICAoZXdrX3ZpZXdfcnVuX2JlZm9yZV91bmxvYWRfY29uZmlybSk6Ci0gICAgICAg
ICogZXdrL2V3a192aWV3Lmg6IEFkZCBzbWFydCBjbGFzcyBtZW1iZXIgZnVuY3Rpb24gZm9yIHJ1
bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbC4KLSAgICAgICAgKiBld2svZXdrX3ZpZXdfcHJpdmF0
ZS5oOgotCi0yMDEzLTA1LTE2ICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KLQot
ICAgICAgICBQYWdlOjpjaHJvbWUoKSBzaG91bGQgcmV0dXJuIGEgcmVmZXJlbmNlLgotICAgICAg
ICA8aHR0cDovL3dlYmtpdC5vcmcvYi8xMTYxODU+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQW5k
ZXJzIENhcmxzc29uLgotCi0yMDEzLTA1LTEzICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBh
cHBsZS5jb20+Ci0KLSAgICAgICAgRnJhbWU6OmVkaXRvcigpIHNob3VsZCByZXR1cm4gYSByZWZl
cmVuY2UKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEx
NjAzNwotCi0gICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgotCi0gICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcDoKLSAgICAgICAgKER1bXBS
ZW5kZXJUcmVlU3VwcG9ydEVmbDo6ZXhlY3V0ZUNvcmVDb21tYW5kQnlOYW1lKToKLSAgICAgICAg
KER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6aXNDb21tYW5kRW5hYmxlZCk6Ci0gICAgICAgICog
V2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkVk
aXRvckNsaWVudEVmbDo6cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbik6Ci0gICAgICAgIChXZWJD
b3JlOjpFZGl0b3JDbGllbnRFZmw6OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KToKLSAgICAg
ICAgKiBld2svZXdrX2ZyYW1lLmNwcDoKLSAgICAgICAgKGV3a19mcmFtZV9lZGl0YWJsZV9zZXQp
OgotICAgICAgICAoZXdrX2ZyYW1lX3NlbGVjdGlvbl9nZXQpOgotICAgICAgICAoZXdrX2ZyYW1l
X3RleHRfc2VhcmNoKToKLSAgICAgICAgKGV3a19mcmFtZV90ZXh0X21hdGNoZXNfbWFyayk6Ci0g
ICAgICAgIChld2tfZnJhbWVfdGV4dF9tYXRjaGVzX2hpZ2hsaWdodF9zZXQpOgotICAgICAgICAo
ZXdrX2ZyYW1lX3RleHRfbWF0Y2hlc19oaWdobGlnaHRfZ2V0KToKLSAgICAgICAgKiBld2svZXdr
X3ZpZXcuY3BwOgotICAgICAgICAoZXdrX3ZpZXdfc2VsZWN0aW9uX2dldCk6Ci0gICAgICAgIChl
d2tfdmlld19lZGl0b3JfY29tbWFuZF9leGVjdXRlKToKLQotMjAxMy0wNS0xMiAgVGltb3RoeSBI
YXRjaGVyICA8dGltb3RoeUBhcHBsZS5jb20+Ci0KLSAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHVw
ZGF0aW5nIHRoZSBXZWIgSW5zcGVjdG9yIHRvb2xiYXIgaGVpZ2h0LgotCi0gICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTU5OTYKLQotICAgICAgICBSZXZp
ZXdlZCBieSBKb3NlcGggUGVjb3Jhcm8gYW5kIEJlbmphbWluIFBvdWxhaW4uCi0KLSAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRFZmw6OnNldFRvb2xiYXJIZWlnaHQpOgotICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEVmbC5oOgotCi0yMDEzLTA1LTEyICBB
bmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+Ci0KLSAgICAgICAgU3RvcCBpbmNs
dWRpbmcgVW51c2VkUGFyYW0uaAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTE2MDAzCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KLQot
ICAgICAgICBVbnVzZWRQYXJhbS5oIGlzIGVtcHR5IG5vdyBzbyB0aGVyZSdzIG5vIG5lZWQgdG8g
aW5jbHVkZSBpdCBhbnltb3JlLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRl
clRyZWVTdXBwb3J0RWZsLmNwcDoKLSAgICAgICAgKiBld2svZXdrX2pzLmNwcDoKLSAgICAgICAg
KiBld2svZXdrX3NlY3VyaXR5X29yaWdpbi5jcHA6Ci0gICAgICAgICogZXdrL2V3a192aWV3LmNw
cDoKLSAgICAgICAgKiBld2svZXdrX3dlYl9kYXRhYmFzZS5jcHA6Ci0KLTIwMTMtMDUtMDggIEpv
c2UgTGVqaW4gUEogIDxqb3NlLmxlamluQGdtYWlsLmNvbT4KLQotICAgICAgICBbRUZMXSBDb3Jy
ZWN0IGRvY3VtZW50YXRpb24gZm9yIGV3a19zZXR0aW5ncyBBUElzCi0gICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTU1MDcKLQotICAgICAgICBSZXZpZXdl
ZCBieSBHeXV5b3VuZyBLaW0uCi0KLSAgICAgICAgQ29ycmVjdGVkIGRvY3VtZW50YXRpb24gZm9y
IGV3a19zZXR0aW5ncyBBUElzLgotCi0gICAgICAgICogZXdrL2V3a19zZXR0aW5ncy5oOgotCi0y
MDEzLTA1LTA3ICBKaW53b28gU29uZyAgPGppbndvbzcuc29uZ0BzYW1zdW5nLmNvbT4KLQotICAg
ICAgICBbRUZMXSBSZW1vdmUgdGhlIGV3a19zZXR0aW5nc19zaGFkb3dfZG9tX2VuYWJsZV9zZXQv
Z2V0IEFQSXMgZnJvbSB1bml0IHRlc3QKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTExNTc3MQotCi0gICAgICAgIFJldmlld2VkIGJ5IEd5dXlvdW5nIEtp
bS4KLQotICAgICAgICBVbml0IHRlc3QgaXMgZmFpbGluZyBzaW5jZSByMTQ5NzAyLiBSZW1vdmUg
dGhlIHRlc3QgY2FzZSByZWxhdGVkIHRvIHNoYWRvdyBkb20uCi0KLSAgICAgICAgKiB0ZXN0cy90
ZXN0X2V3a19zZXR0aW5nLmNwcDoKLQotMjAxMy0wNC0yNiAgSm9zZSBMZWppbiBQSiAgPGpvc2Uu
bGVqaW5AZ21haWwuY29tPgotCi0gICAgICAgIFtFRkxdIEFkZCB1bml0IHRlc3QgY2FzZXMgZm9y
IGV3a19zZXR0aW5ncyBBUElzCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMTQ4OTcKLQotICAgICAgICBSZXZpZXdlZCBieSBHeXV5b3VuZyBLaW0uCi0K
LSAgICAgICAgQWRkZWQgdW5pdCB0ZXN0cyBmb3IgZXdrX3NldHRpbmdzIEFQSXMuCi0KLSAgICAg
ICAgKiB0ZXN0cy90ZXN0X2V3a19zZXR0aW5nLmNwcDoKLSAgICAgICAgKFRFU1RfRik6Ci0KLTIw
MTMtMDQtMjUgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KLQotICAgICAg
ICBXZWIgSW5zcGVjdG9yOiBDb25zb2xlTWVzc2FnZSBzaG91bGQgaW5jbHVkZSBsaW5lIGFuZCBj
b2x1bW4gbnVtYmVyIHdoZXJlIHBvc3NpYmxlCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMTQ5MjkKLQotICAgICAgICBSZXZpZXdlZCBieSBUaW1vdGh5
IEhhdGNoZXIuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3Bw
OgotICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZsOjphZGRNZXNzYWdlVG9Db25zb2xl
KToKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuaDoKLSAgICAgICAg
KENocm9tZUNsaWVudEVmbCk6Ci0KLTIwMTMtMDQtMjUgIENvbW1pdCBRdWV1ZSAgPHJuaXdhQHdl
YmtpdC5vcmc+Ci0KLSAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE0OTAzMi4KLSAg
ICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTQ5MDMyCi0gICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTUxNTEKLQotICAgICAgICBF
RkwgV0sxIEFQSSB0ZXN0IGhhcyBiZWVuIGJyb2tlbiBhZnRlciByMTQ5MDMyIChSZXF1ZXN0ZWQg
YnkKLSAgICAgICAgZ3l1eW91bmcgb24gI3dlYmtpdCkuCi0KLSAgICAgICAgKiB0ZXN0cy90ZXN0
X2V3a19zZXR0aW5nLmNwcDoKLSAgICAgICAgKFRFU1RfRik6Ci0KLTIwMTMtMDQtMjQgIEpvc2Ug
TGVqaW4gUEogIDxqb3NlLmxlamluQGdtYWlsLmNvbT4KLQotICAgICAgICBbRUZMXSBBZGQgdW5p
dCB0ZXN0IGNhc2VzIGZvciBld2tfc2V0dGluZ3MgQVBJcwotICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE0ODk3Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkg
R3l1eW91bmcgS2ltLgotICAKLSAgICAgICAgQWRkZWQgdW5pdCB0ZXN0cyBmb3IgZXdrX3NldHRp
bmdzIEFQSXMuCi0KLSAgICAgICAgKiB0ZXN0cy90ZXN0X2V3a19zZXR0aW5nLmNwcDoKLSAgICAg
ICAgKFRFU1RfRik6Ci0KLTIwMTMtMDQtMTkgIEpvc2UgTGVqaW4gUEogIDxqb3NlLmxlamluQGdt
YWlsLmNvbT4KLQotICAgICAgICBbRUZMXSBBZGQgbWV0aG9kIGluIGV3a19zZXR0aW5ncyBmb3Ig
c2V0dGluZyB0aGUgQ1NTIG1lZGlhIHR5cGUKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTExMzI4NAotCi0gICAgICAgIFJldmlld2VkIGJ5IEd5dXlvdW5n
IEtpbS4KLQotICAgICAgICBBZGRlZCBBUElzIHRvIHNldCBhbmQgZ2V0IENTUyBtZWRpYSB0eXBl
LgotICAgICAgICBBZGRlZCB1bml0IHRlc3RzIGZvciB0aGVzZSBBUElzLgotCi0gICAgICAgICog
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6Om92ZXJyaWRlTWVkaWFUeXBlKToKLSAgICAgICAgKiBl
d2svZXdrX3NldHRpbmdzLmNwcDoKLSAgICAgICAgKGV3a19zZXR0aW5nc19jc3NfbWVkaWFfdHlw
ZV9zZXQpOgotICAgICAgICAoZXdrX3NldHRpbmdzX2Nzc19tZWRpYV90eXBlX2dldCk6Ci0gICAg
ICAgICogZXdrL2V3a19zZXR0aW5ncy5oOgotICAgICAgICAqIHRlc3RzL3Rlc3RfZXdrX3NldHRp
bmcuY3BwOiBBZGRlZC4KLSAgICAgICAgKFRFU1RfRik6Ci0KLTIwMTMtMDQtMTcgIEdlb2ZmcmV5
IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KLQotICAgICAgICBSZW5hbWVkIEpTR2xvYmFsRGF0
YSB0byBWTQotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTE0Nzc3Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgUGhpbCBQaXpsby4KLQotICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHA6Ci0gICAgICAgIChEdW1w
UmVuZGVyVHJlZVN1cHBvcnRFZmw6OmphdmFTY3JpcHRPYmplY3RzQ291bnQpOgotCi0yMDEzLTA0
LTE2ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgotCi0gICAgICAgIE1vcmUgRUZM
IGJ1aWxkIGZpeGVzLgotCi0gICAgICAgICogZXdrL2V3a19mcmFtZS5jcHA6Ci0gICAgICAgICog
ZXdrL2V3a192aWV3LmNwcDoKLQotMjAxMy0wNC0xNiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Vi
a2l0Lm9yZz4KLQotICAgICAgICBFRkwgYnVpbGQgZml4IGFmdGVyIHIxNDg1NDUuCi0KLSAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwOgotCi0yMDEz
LTA0LTE2ICBNYW51ZWwgUmVnbyBDYXNhc25vdmFzICA8cmVnb0BpZ2FsaWEuY29tPgotCi0gICAg
ICAgIFJFR1JFU1NJT04gKHIxNDg1MDYpOiBVc2Ugb2YgZGVwcmVjYXRlZCBsaWJzb3VwIEFQSQot
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE0Njc5Ci0K
LSAgICAgICAgUmV2aWV3ZWQgYnkgR3l1eW91bmcgS2ltLgotCi0gICAgICAgIFJlbW92ZSBkZXBy
ZWNhdGVkIGxpYnNvdXAgQVBJIHVzYWdlLgotCi0gICAgICAgICogZXdrL2V3a19uZXR3b3JrLmNw
cDoKLSAgICAgICAgKGV3a19uZXR3b3JrX3Byb3h5X3VyaV9zZXQpOgotICAgICAgICAoZXdrX25l
dHdvcmtfcHJveHlfdXJpX2dldCk6Ci0KLTIwMTMtMDQtMTYgIE1hbnVlbCBSZWdvIENhc2Fzbm92
YXMgIDxyZWdvQGlnYWxpYS5jb20+Ci0KLSAgICAgICAgW0dUS11bRUZMXSBSZW1vdmUgZGVwcmVj
YXRlZCBsaWJzb3VwIEFQSSB1c2FnZQotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTA0ODk0Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgUGhpbGlwcGUgTm9y
bWFuZC4KLQotICAgICAgICBSZW1vdmUgTElCU09VUF9VU0VfVU5TVEFCTEVfUkVRVUVTVF9BUEkg
YW5kIG9ubHkgaW5jbHVkZQotICAgICAgICBsaWJzb3VwL3NvdXAuaC4KLQotMjAxMy0wNC0xNCAg
Q2hyaXN0b3BoZSBEdW1leiAgPGNoLmR1bWV6QHNpc2Euc2Ftc3VuZy5jb20+Ci0KLSAgICAgICAg
VW5yZXZpZXdlZCBidWlsZCBmaXggZm9yIFdlYktpdDEgRUZMIGFmdGVyIHIxNDgzNzMgZHVlIHRv
IG1pc3NpbmcKLSAgICAgICAgaGVhZGVyIGluY2x1ZGVzLgotCi0gICAgICAgICogV2ViQ29yZVN1
cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcDoKLSAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9FZGl0b3JDbGllbnRFZmwuY3BwOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JD
bGllbnRFZmwuY3BwOgotICAgICAgICAqIGV3ay9ld2tfZnJhbWUuY3BwOgotICAgICAgICAqIGV3
ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgICogZXdrL2V3a192aWV3X3ByaXZhdGUuaDoKLSAgICAg
ICAgKFdlYkNvcmUpOgotCi0yMDEzLTA0LTEzICBFZCBCYXJ0b3NoICA8YmFydG9zaEBnbWFpbC5j
b20+Ci0KLSAgICAgICAgW0VGTF0gLS1taW5pbWFsIGJ1aWxkIGZhaWxzIHdpdGggZXJyb3I6ICdW
aWV3TW9kZUludmFsaWQnIGlzIG5vdCBhIG1lbWJlciBvZiAnV2ViQ29yZTo6UGFnZScKLSAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNDA0OAotCi0gICAg
ICAgIFJldmlld2VkIGJ5IEd5dXlvdW5nIEtpbS4KLQotICAgICAgICBXcmFwcGVkIHZpZXctbW9k
ZSBtZWRpYSByZWxhdGVkIGNvZGUgaW50byAjaWYgRU5BQkxFKFZJRVdfTU9ERV9DU1NfTUVESUEp
Ci0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcDoKLSAg
ICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoZXdrX3ZpZXdfbW9kZV9zZXQpOgot
Ci0yMDEzLTA0LTEwICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgotCi0g
ICAgICAgIE1hc3MgcmVtb3ZlIGFsbCB0aGUgZW1wdHkgZGlyZWN0b3JpZXMKLQotICAgICAgICBS
dWJiZXJzdGFtcGVkIGJ5IFJ5b3N1a2UgTml3YS4KLQotICAgICAgICAqIERlZmF1bHRUaGVtZS93
aWRnZXQvYnV0dG9uOiBSZW1vdmVkLgotICAgICAgICAqIERlZmF1bHRUaGVtZS93aWRnZXQvY2hl
Y2s6IFJlbW92ZWQuCi0gICAgICAgICogRGVmYXVsdFRoZW1lL3dpZGdldC9jb21ibzogUmVtb3Zl
ZC4KLSAgICAgICAgKiBEZWZhdWx0VGhlbWUvd2lkZ2V0L2VudHJ5OiBSZW1vdmVkLgotICAgICAg
ICAqIERlZmF1bHRUaGVtZS93aWRnZXQvZmlsZTogUmVtb3ZlZC4KLSAgICAgICAgKiBEZWZhdWx0
VGhlbWUvd2lkZ2V0L21lZGlhY29udHJvbC9mdWxsc2NyZWVuYnV0dG9uOiBSZW1vdmVkLgotICAg
ICAgICAqIERlZmF1bHRUaGVtZS93aWRnZXQvbWVkaWFjb250cm9sL211dGVidXR0b246IFJlbW92
ZWQuCi0gICAgICAgICogRGVmYXVsdFRoZW1lL3dpZGdldC9tZWRpYWNvbnRyb2wvcGxheXBhdXNl
YnV0dG9uOiBSZW1vdmVkLgotICAgICAgICAqIERlZmF1bHRUaGVtZS93aWRnZXQvbWVkaWFjb250
cm9sL3NlZWtiYWNrd2FyZGJ1dHRvbjogUmVtb3ZlZC4KLSAgICAgICAgKiBEZWZhdWx0VGhlbWUv
d2lkZ2V0L21lZGlhY29udHJvbC9zZWVrZm9yd2FyZGJ1dHRvbjogUmVtb3ZlZC4KLSAgICAgICAg
KiBEZWZhdWx0VGhlbWUvd2lkZ2V0L21lZGlhY29udHJvbC90b2dnbGVjYXB0aW9uc2J1dHRvbjog
UmVtb3ZlZC4KLSAgICAgICAgKiBEZWZhdWx0VGhlbWUvd2lkZ2V0L3Byb2dyZXNzYmFyOiBSZW1v
dmVkLgotICAgICAgICAqIERlZmF1bHRUaGVtZS93aWRnZXQvcmFkaW86IFJlbW92ZWQuCi0gICAg
ICAgICogRGVmYXVsdFRoZW1lL3dpZGdldC9zY3JvbGxiYXI6IFJlbW92ZWQuCi0gICAgICAgICog
RGVmYXVsdFRoZW1lL3dpZGdldC9zZWFyY2gvY2FuY2VsOiBSZW1vdmVkLgotICAgICAgICAqIERl
ZmF1bHRUaGVtZS93aWRnZXQvc2VhcmNoL2RlY29yYXRpb246IFJlbW92ZWQuCi0gICAgICAgICog
RGVmYXVsdFRoZW1lL3dpZGdldC9zZWFyY2gvZmllbGQ6IFJlbW92ZWQuCi0gICAgICAgICogRGVm
YXVsdFRoZW1lL3dpZGdldC9zbGlkZXI6IFJlbW92ZWQuCi0gICAgICAgICogRGVmYXVsdFRoZW1l
L3dpZGdldC9zcGlubmVyOiBSZW1vdmVkLgotCi0yMDEzLTA0LTA5ICBFZCBCYXJ0b3NoICA8YmFy
dG9zaEBnbWFpbC5jb20+Ci0KLSAgICAgICAgW0VGTF0gLS1taW5pbWFsIGJ1aWxkIGZhaWxzIHdp
dGggZXJyb3I6IGBzZXRTZWFtbGVzc0lGcmFtZXNFbmFibGVkJyBpcyBub3QgYSBtZW1iZXIgb2Yg
YFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMnCi0gICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTM5NTEKLQotICAgICAgICBSZXZpZXdlZCBieSBM
YXN6bG8gR29tYm9zLgotCi0gICAgICAgIFdyYXBwZWQgY29kZSByZWxhdGVkIHRvIGlmcmFtZSBz
ZWFtbGVzcyBpbnRvICNpZiBFTkFCTEUoSUZSQU1FX1NFQU1MRVNTKQotCi0gICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcDoKLSAgICAgICAgKER1bXBS
ZW5kZXJUcmVlU3VwcG9ydEVmbDo6c2V0U2VhbWxlc3NJRnJhbWVzRW5hYmxlZCk6Ci0gICAgICAg
ICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAgKF9ld2tfdmlld19wcml2X25ldyk6Ci0KLTIw
MTMtMDQtMDggIFJ5dWFuIENob2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgotCi0gICAgICAg
IFtFRkxdIHJlbmRlcmluZyB3YXMgYnJva2VuIHdoZW4gc2Nyb2xsZWQgZXdrX3ZpZXdfc2luZ2xl
Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTQxMzUK
LQotICAgICAgICBSZXZpZXdlZCBieSBHeXV5b3VuZyBLaW0uCi0KLSAgICAgICAgZXdrX3ZpZXdf
c2luZ2xlIHVzZSBtZW1jcHkoKSB0byBjb3B5IHByZXZpb3VzIGJ1ZmZlciBmb3Igc2Nyb2xsaW5n
LCBidXQKLSAgICAgICAgbWVtY3B5KCkgc2hvdWxkIG5vdCBiZSB1c2VkIHdoZW4gc291cmNlIGJ1
ZmZlciBhbmQgZGVzdGluYXRpb24gYnVmZmVyIGFyZQotICAgICAgICBvdmVyd3JhcHBlZC4KLQot
ICAgICAgICAqIGV3ay9ld2tfdmlld19zaW5nbGUuY3BwOgotICAgICAgICAoX2V3a192aWV3X3Nj
cmVlbl9tb3ZlKToKLQotMjAxMy0wNC0wNyAgRWQgQmFydG9zaCAgPGJhcnRvc2hAZ21haWwuY29t
PgotCi0gICAgICAgIFtFRkxdIC0tbWluaW1hbCBidWlsZCBmYWlscyB3aXRoIGVycm9yOiBleHBl
Y3RlZCBgOycgYmVmb3JlIGByZXR1cm4nCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMTM5NTMKLQotICAgICAgICBVbnJldmlld2VkLgotCi0gICAgICAg
ICogZXdrL2V3a19zZWN1cml0eV9vcmlnaW4uY3BwOgotICAgICAgICAoZXdrX3NlY3VyaXR5X29y
aWdpbl93ZWJfZGF0YWJhc2VfcXVvdGFfZ2V0KTogQWRkZWQgbWlzc2luZyBzZW1pY29sb24uCi0K
LTIwMTMtMDQtMDUgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KLQotICAgICAg
ICBNYWRlIFVTRShKU0MpIHVuY29uZGl0aW9uYWwKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTExNDA1OAotCi0gICAgICAgIFJldmlld2VkIGJ5IEFuZGVy
cyBDYXJsc3Nvbi4KLQotICAgICAgICAqIGV3ay9ld2tfZnJhbWUuY3BwOgotICAgICAgICAoZXdr
X2ZyYW1lX3NjcmlwdF9leGVjdXRlKToKLQotMjAxMy0wNC0wNCAgQ2hyaXN0b3BoZSBEdW1leiAg
PGNoLmR1bWV6QHNpc2Euc2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW0NhaXJvXSBGaXggY2FudmFz
IGRyYXdpbmcgb2YgU1ZHLWJhc2VkIHBhdHRlcm5zIGFuZCByZW1vdmUgTmF0aXZlSW1hZ2VDYWly
bwotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEzOTI5
Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgTWFydGluIFJvYmluc29uLgotCi0gICAgICAgIFVwZGF0
ZSBjb2RlIG5vdyB0aGF0IFBhc3NOYXRpdmVJbWFnZVB0ciBpcyBub3cgYSB0eXBlZGVmIHRvIFBh
c3NSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PgotICAgICAgICBpbnN0ZWFkIG9mIE5hdGl2ZUltYWdl
Q2Fpcm8qLgotCi0gICAgICAgICogZXdrL2V3a19oaXN0b3J5LmNwcDoKLSAgICAgICAgKGV3a19o
aXN0b3J5X2l0ZW1faWNvbl9zdXJmYWNlX2dldCk6Ci0gICAgICAgIChld2tfaGlzdG9yeV9pdGVt
X2ljb25fb2JqZWN0X2FkZCk6Ci0gICAgICAgICogZXdrL2V3a19zZXR0aW5ncy5jcHA6Ci0gICAg
ICAgIChld2tfc2V0dGluZ3NfaWNvbl9kYXRhYmFzZV9pY29uX3N1cmZhY2VfZ2V0KToKLSAgICAg
ICAgKGV3a19zZXR0aW5nc19pY29uX2RhdGFiYXNlX2ljb25fb2JqZWN0X2dldCk6Ci0KLTIwMTMt
MDMtMzEgIEthbmdpbCBIYW4gIDxrYW5naWwuaGFuQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtF
RkxdIFJlbW92ZSB1bnVzZWQgc3RkaW8uaCBpbmNsdWRlcwotICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEzNjU1Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkg
QW5kcmVhcyBLbGluZy4KLQotICAgICAgICBXZSBkbyBub3QgaGF2ZSB0byBpbmNsdWRlIHVudXNl
ZCBoZWFkZXIgZmlsZS4KLQotICAgICAgICAqIGV3ay9ld2tfdGlsZWRfYmFja2luZ19zdG9yZS5j
cHA6Ci0gICAgICAgICogZXdrL2V3a190aWxlZF9tYXRyaXguY3BwOgotICAgICAgICAqIGV3ay9l
d2tfdGlsZWRfbW9kZWwuY3BwOgotICAgICAgICAodGlsZV9hY2NvdW50KToKLQotMjAxMy0wMy0y
NyAgVGltb3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5jb20+Ci0KLSAgICAgICAgQWRkIHN1
cHBvcnQgZm9yIGRvY2stdG8tcmlnaHQgb2YgdGhlIFdlYiBJbnNwZWN0b3IgaW4gdGhlIE1hYyBw
b3J0LgotCi0gICAgICAgIFVuZm9ydHVuYXRlbHkgdGhpcyByZXF1aXJlcyBTYWZhcmkgY2hhbmdl
cywgc28gaXQgaXMgZGlzYWJsZWQgaW4gdGhlIG5pZ2h0bHkgYnVpbGRzLgotCi0gICAgICAgIGh0
dHBzOi8vd2Via2l0Lm9yZy9iLzExMzM0MQotICAgICAgICByZGFyOi8vcHJvYmxlbS8xMDM2ODE1
MgotCi0gICAgICAgIFJldmlld2VkIGJ5IEpvc2VwaCBQZWNvcmFyby4KLQotICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JGcm9udGVuZENsaWVudEVmbDo6YXR0YWNoV2luZG93KToKLSAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50RWZsOjpzZXRBdHRhY2hlZFdpbmRvd1dpZHRoKToK
LSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRFZmwuaDoKLSAgICAgICAg
KEluc3BlY3RvckZyb250ZW5kQ2xpZW50RWZsKToKLQotMjAxMy0wMy0yNiAgSGF5YXRvIEl0byAg
PGhheWF0b0BjaHJvbWl1bS5vcmc+Ci0KLSAgICAgICAgQWxsb3cgU2hhZG93Q29udGVudHMgaW4g
SGl0VGVzdHMgYnkgZGVmYXVsdC4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTExMzE3MQotCi0gICAgICAgIFJldmlld2VkIGJ5IERpbWl0cmkgR2xhemtv
di4KLQotICAgICAgICAqIGV3ay9ld2tfZnJhbWUuY3BwOgotICAgICAgICAoZXdrX2ZyYW1lX2hp
dF90ZXN0X25ldyk6Ci0KLTIwMTMtMDMtMjAgIEpvc2UgTGVqaW4gUEogIDxqb3NlLmxlamluQGdt
YWlsLmNvbT4KLQotICAgICAgICBld2tfc2V0dGluZ3NfbWVtb3J5X2NhY2hlX2NsZWFyIHNob3Vs
ZCBjbGVhciBKUyBnYXJiYWdlIGFuZCByZWxlYXNlIEZhc3RNYWxsb2MncyBmcmVlIHBhZ2VzIHRv
IE9TCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTI1
MzYKLQotICAgICAgICBSZXZpZXdlZCBieSBHeXV5b3VuZyBLaW0uCi0KLSAgICAgICAgQWRkZWQg
Y2hhbmdlcyB0byBjbGVhciBKUyBnYXJiYWdlIGFuZCByZWxlYXNlIEZhc3RNYWxsb2MncyBmcmVl
IHBhZ2VzIHRvIE9TCi0gICAgICAgIHdoaWxlIGNhbGxpbmcgZXdrX3NldHRpbmdzX21lbW9yeV9j
YWNoZV9jbGVhciBBUEkuIAotCi0gICAgICAgICogZXdrL2V3a19zZXR0aW5ncy5jcHA6Ci0gICAg
ICAgIChld2tfc2V0dGluZ3NfbWVtb3J5X2NhY2hlX2NsZWFyKToKLQotMjAxMy0wMy0yMCAgSnVu
Z0ppayBMZWUgIDxqdW5namlrLmxlZUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBbRUZMXSBEaXNh
YmxlIFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FX1RJTUVSIHRvIHJlbmRlciBhIG5ldyBhbmltYXRp
b24gZnJhbWUuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMTIxMTQKLQotICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNl
bi4KLQotICAgICAgICBBZGQgZHVtbXkgZnVuY3Rpb25zIGZvciBXSzEuCi0KLSAgICAgICAgRXhh
bXBsZSB0ZXN0IGNhc2U6IE1hbnVhbFRlc3RzL2FuaW1hdGlvbi90cmFuc2l0aW9uLW9uLWFuZC1v
ZmZzY3JlZW4tYW5pbWF0aW9uLmh0bWwKLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9t
ZUNsaWVudEVmbC5jcHA6IEFkZCBkdW1teSBmdW5jdGlvbnMgZm9yIFdLMS4KLSAgICAgICAgKFdl
YkNvcmUpOgotICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZsOjpzY2hlZHVsZUFuaW1h
dGlvbik6Ci0gICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRFZmw6OnNlcnZpY2VTY3JpcHRl
ZEFuaW1hdGlvbnMpOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5o
OgotICAgICAgICAoQ2hyb21lQ2xpZW50RWZsKToKLQotMjAxMy0wMy0xNSAgTmF0ZSBDaGFwaW4g
IDxqYXBoZXRAY2hyb21pdW0ub3JnPgotCi0gICAgICAgIEhpZGUgTWFpblJlc291cmNlTG9hZGVy
IGZyb20gdGhlIG91dHNpZGUgd29ybGQKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEwOTk3MQotCi0gICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGgu
Ci0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHA6Ci0g
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6Y29udmVydE1haW5SZXNvdXJj
ZUxvYWRUb0Rvd25sb2FkKToKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudEVmbC5oOgotICAgICAgICAoRnJhbWVMb2FkZXJDbGllbnRFZmwpOgotCi0yMDEzLTAzLTE1
ICBBYmhpc2hlayBBcnlhICA8aW5mZXJub0BjaHJvbWl1bS5vcmc+Ci0KLSAgICAgICAgUmVwbGFj
ZSBzdGF0aWNfY2FzdHMgd2l0aCB0byogaGVscGVyIGZ1bmN0aW9ucy4KLSAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjQwMQotCi0gICAgICAgIFJldmll
d2VkIGJ5IFN0ZXBoZW4gQ2hlbm5leS4KLQotICAgICAgICB0byogaGVscGVyIGZ1bmN0aW9ucyBh
cmUgcHJlZmVycmVkIG92ZXIgc3RhdGljX2Nhc3QgY2FsbHMgc2luY2UgdGhleQotICAgICAgICBo
ZWxwIHRvIGNhdGNoIGJhZCBjYXN0cyBlYXNpbHkgb24gdGhlIHRlc3RpbmcgaW5mcmFzdHJ1Y3R1
cmUuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHA6
Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6cmVkaXJlY3REYXRhVG9Q
bHVnaW4pOgotCi0yMDEzLTAzLTE0ICBNYW51ZWwgUmVnbyBDYXNhc25vdmFzICA8cmVnb0BpZ2Fs
aWEuY29tPgotCi0gICAgICAgIEFkZCBzZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkIHNl
dHRpbmcgdG8gV2ViQ29yZTo6UGFnZQotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTA5NDA0Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgVG9ueSBDaGFuZy4K
LQotICAgICAgICBVc2UgbmV3IHNldHRpbmdzIGZvciBzbWFydEluc2VydERlbGV0ZUVuYWJsZWQg
YW5kCi0gICAgICAgIHNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQuCi0KLSAgICAgICAg
UmVtb3ZlIGNvZGUgcmVsYXRlZCB0byBEUlQgYXMgaXQgaXMgbm90IG5lZWRlZCBhbnltb3JlLgot
Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcDoK
LSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuaDoKLSAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuY3BwOgotICAgICAgICAoV2Vi
Q29yZTo6RWRpdG9yQ2xpZW50RWZsOjpzbWFydEluc2VydERlbGV0ZUVuYWJsZWQpOgotICAgICAg
ICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50RWZsOjppc1NlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVu
YWJsZWQpOgotICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50RWZsOjpFZGl0b3JDbGllbnRF
ZmwpOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5oOgotICAgICAg
ICAoRWRpdG9yQ2xpZW50RWZsKToKLQotMjAxMy0wMy0xNCAgSmVzdXMgU2FuY2hlei1QYWxlbmNp
YSAgPGplc3VzLnBhbGVuY2lhQG9wZW5ib3NzYS5vcmc+Ci0KLSAgICAgICAgW0VGTF0gVXNlIENS
T1NTX1BMQVRGT1JNX0NPTlRFWFRfTUVOVQotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTExODc3Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQ2FpbyBNYXJj
ZWxvIGRlIE9saXZlaXJhIEZpbGhvLgotCi0gICAgICAgIEFkanVzdCBDb250ZXh0TWVudUNsaWVu
dCB0byB1c2UgdGhlIENST1NTX1BMQVRGT1JNX0NPTlRFWFRfTUVOVVMgVVNFIGZsYWcKLSAgICAg
ICAgYnkgaW1wbGVtZW50aW5nIGN1c3RvbWl6ZU1lbnUoKSBpbnN0ZWFkIG9mIGdldEN1c3RvbU1l
bnVGcm9tRGVmYXVsdEl0ZW1zKCkKLSAgICAgICAgYW5kIGJ5IGNhbGxpbmcgY29yZU1lbnUtPml0
ZW1zKCkgaW5zdGVhZCBvZiBjb3JlTWVudS0+cGxhdGZvcm1EZXNjcmlwdGlvbigpLgotCi0gICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvQ29udGV4dE1lbnVDbGllbnRFZmwuY3BwOgotICAgICAgICAo
V2ViQ29yZTo6Q29udGV4dE1lbnVDbGllbnRFZmw6OmN1c3RvbWl6ZU1lbnUpOgotICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0NvbnRleHRNZW51Q2xpZW50RWZsLmg6Ci0gICAgICAgIChDb250ZXh0
TWVudUNsaWVudEVmbCk6Ci0gICAgICAgICogZXdrL2V3a19jb250ZXh0bWVudS5jcHA6Ci0gICAg
ICAgIChld2tfY29udGV4dF9tZW51X25ldyk6Ci0KLTIwMTMtMDMtMTQgIEpvbmF0aGFuIExpdSAg
PG5ldDE0N0BnbWFpbC5jb20+Ci0KLSAgICAgICAgRml4IGRldGVjdGlvbiBvZiBJbnRlbCBNYWMg
T1MgWCBwbGF0Zm9ybSBvbiBJbnRlbCBNYWMgNjQtYml0Ci0gICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTIzMTIKLQotICAgICAgICBSZXZpZXdlZCBieSBT
aW1vbiBIYXVzbWFubi4KLQotICAgICAgICAqIGV3ay9ld2tfc2V0dGluZ3MuY3BwOgotICAgICAg
ICAoX2V3a19zZXR0aW5nc193ZWJraXRfb3NfdmVyc2lvbl9nZXQpOgotCi0yMDEzLTAzLTEzICBQ
YXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgotCi0gICAgICAgIFdlYiBJbnNw
ZWN0b3I6IGdldCByaWQgb2YgaGlkZGVuUGFuZWxzIGZpbHRlcgotICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEyMjUyCi0KLSAgICAgICAgUmV2aWV3ZWQg
YnkgVnNldm9sb2QgVmxhc292LgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9y
Q2xpZW50RWZsLmNwcDoKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRF
ZmwuaDoKLSAgICAgICAgKEluc3BlY3RvckZyb250ZW5kQ2xpZW50RWZsKToKLQotMjAxMy0wMy0w
NiAgS3J6eXN6dG9mIEN6ZWNoICA8ay5jemVjaEBzYW1zdW5nLmNvbT4KLQotICAgICAgICBbRUZM
XSBNaXNzaW5nIGltcGxlbWVudGF0aW9uIG9mIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyRWZsIGFu
ZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50RWZsIGZpbGVzCi0gICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTA1ODQKLQotICAgICAgICBSZXZpZXdlZCBieSBH
eXV5b3VuZyBLaW0uCi0KLSAgICAgICAgQWRkcyBzdXBwb3J0IGZvciBoZWxwIHRleHQgaW4gRHVt
cFJlbmRlclRyZWUuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1
cHBvcnRFZmwuY3BwOgotICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjphY2Nlc3Np
YmlsaXR5SGVscFRleHQpOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVl
U3VwcG9ydEVmbC5oOgotCi0yMDEzLTAzLTA2ICBCZW5qYW1pbiBQb3VsYWluICA8YmVuamFtaW5A
d2Via2l0Lm9yZz4KLQotICAgICAgICBXZWJLaXRUZXN0UnVubmVyIG5lZWRzIGxheW91dFRlc3RD
b250cm9sbGVyLmVsZW1lbnREb2VzQXV0b0NvbXBsZXRlRm9yRWxlbWVudFdpdGhJZAotICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDI2OTYKLQotICAgICAg
ICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQv
RHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcDoKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9E
dW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuaDoKLQotMjAxMy0wMy0wNSAgR2VvZmZyZXkgR2FyZW4g
IDxnZ2FyZW5AYXBwbGUuY29tPgotCi0gICAgICAgIFJlbW92ZWQgc29tZSBkZWFkIGNvZGUgaW4g
dGhlIHBhZ2UgY2FjaGUKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTExMTUyNQotCi0gICAgICAgIFJldmlld2VkIGJ5IEFsZXhleSBQcm9za3VyeWFrb3Yu
Ci0KLSAgICAgICAgUGFnZSBjYWNoZSBhdXRvcmVsZWFzZSBkb2Vzbid0IGV4aXN0IGFueW1vcmUs
IHNvIHRoZXJlJ3Mgbm8gbmVlZCB0byBrZWVwCi0gICAgICAgIGFyb3VuZCB0aGVzZSBvbGRzIGhh
Y2tzLgotCi0gICAgICAgICogZXdrL2V3a19zZXR0aW5ncy5jcHA6Ci0gICAgICAgIChld2tfc2V0
dGluZ3NfbWVtb3J5X2NhY2hlX2NsZWFyKToKLQotMjAxMy0wMy0wMyAgQWRhbSBCYXJ0aCAgPGFi
YXJ0aEB3ZWJraXQub3JnPgotCi0gICAgICAgIFVucmV2aWV3ZWQgYXR0ZW1wdGVkIGJ1aWxkIGZp
eC4gQWRkcyBiYWNrIHNvbWUgaW5jbHVkZXMgcmVtb3ZlZCBpbgotICAgICAgICBodHRwOi8vdHJh
Yy53ZWJraXQub3JnL2NoYW5nZXNldC8xNDQ1NjUuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwOgotICAgICAgICAqIGV3ay9ld2tfZnJhbWUu
Y3BwOgotCi0yMDEzLTAzLTAzICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+Ci0KLSAg
ICAgICAgVW5yZXZpZXdlZCByb2xsb3V0IG9mIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvcjE0NDUz
MAotICAgICAgICBBcyBkZXNjcmliZWQgaW4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTExMTE2NyBhbmQKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTExMTAzNSwgdGhpcyBwYXRjaCBjYXVzZWQgYQotICAgICAgICBsYXJnZSBu
dW1iZXIgb2YgQVNTRVJUcyBpbiBjaHJvbWl1bS13aW4uCi0KLSAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwOgotICAgICAgICAqIGV3ay9ld2tfZnJh
bWUuY3BwOgotCi0yMDEzLTAzLTAyICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUu
Y29tPgotCi0gICAgICAgIE1vdmUgY29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvIGZy
b20gVGVzdFJ1bm5lciB0byBJbnRlcm5hbHMKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwOTc3MgotCi0gICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMg
S2xpbmcuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRF
ZmwuY3BwOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVm
bC5oOgotCi0yMDEzLTAyLTI4ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgot
Ci0gICAgICAgIFJlZHVjZSBhbW91bnQgb2YgcmVidWlsZGluZyB3aGVuIHRvdWNoaW5nIG5ldHdv
cmtpbmcgaGVhZGVycwotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTExMDM1Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCi0KLSAgICAg
ICAgQWRkaW5nIGluY2x1ZGVzIHRoYXQgYXJlIG5vdyBuZWNlc3NhcnkgYmVjYXVzZSBXZWJDb3Jl
IGhlYWRlcnMgZG9uJ3QgaGF2ZSB0aGVtCi0gICAgICAgIGFueSBtb3JlLgotCi0gICAgICAgICog
V2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcDoKLSAgICAgICAgKiBl
d2svZXdrX2ZyYW1lLmNwcDoKLQotMjAxMy0wMy0wMSAgSmFzb24gQW5kZXJzc2VuICA8amFuZGVy
c3NlbkBnbWFpbC5jb20+Ci0KLSAgICAgICAgTW92ZSBtYXJrZXJUZXh0Rm9yTGlzdEl0ZW0gZnJv
bSBUZXN0UnVubmVyIHRvIEludGVybmFscwotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTEwOTM5Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQmVuamFtaW4g
UG91bGFpbi4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9y
dEVmbC5jcHA6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0
RWZsLmg6Ci0KLTIwMTMtMDMtMDEgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21h
aWwuY29tPgotCi0gICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxNDQ0MjIgYW5kIHIx
NDQ0MjQuCi0gICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzE0NDQyMgot
ICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8xNDQ0MjQKLSAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMTE2NwotCi0gICAgICAg
IENhdXNlZCBvdmVyIDIwIHRlc3RzIHRvIGZhaWwgYXNzZXJ0aW9uIG9uIENocm9taXVtIFdpbiBw
b3J0IGFzCi0gICAgICAgIEFTU0VSVElPTiBGQUlMRUQ6IG1fcGxhdGZvcm1SZXF1ZXN0VXBkYXRl
ZCAoUmVxdWVzdGVkIGJ5Ci0gICAgICAgIHRveW9zaGltIG9uICN3ZWJraXQpLgotCi0gICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcDoKLSAgICAgICAg
KiBld2svZXdrX2ZyYW1lLmNwcDoKLQotMjAxMy0wMi0yOCAgQWxleGV5IFByb3NrdXJ5YWtvdiAg
PGFwQGFwcGxlLmNvbT4KLQotICAgICAgICBSZWR1Y2UgYW1vdW50IG9mIHJlYnVpbGRpbmcgd2hl
biB0b3VjaGluZyBuZXR3b3JraW5nIGhlYWRlcnMKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTExMTAzNQotCi0gICAgICAgIFJldmlld2VkIGJ5IEVyaWMg
U2VpZGVsLgotCi0gICAgICAgIEFkZGluZyBpbmNsdWRlcyB0aGF0IGFyZSBub3cgbmVjZXNzYXJ5
IGJlY2F1c2UgV2ViQ29yZSBoZWFkZXJzIGRvbid0IGhhdmUgdGhlbQotICAgICAgICBhbnkgbW9y
ZS4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5j
cHA6Ci0gICAgICAgICogZXdrL2V3a19mcmFtZS5jcHA6Ci0KLTIwMTMtMDItMjggIFNlb2tqdSBL
d29uICA8c2Vva2p1Lmt3b25AZ21haWwuY29tPgotCi0gICAgICAgIFtFRkxdIEZvY3VzIHByb2Js
ZW0gaW4gaW5zcGVjdG9yL2V4dGVuc2lvbnMvZXh0ZW5zaW9ucy1wYW5lbC5odG1sCi0gICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzA3NwotCi0gICAgICAg
IFJldmlld2VkIGJ5IExhc3psbyBHb21ib3MuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9J
bnNwZWN0b3JDbGllbnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRl
bmRDbGllbnRFZmw6OmJyaW5nVG9Gcm9udCk6IFNldCBmb2N1cyBvbiBpbnNwZWN0b3JWaWV3Lgot
Ci0yMDEzLTAyLTIzICBKYXNvbiBBbmRlcnNzZW4gIDxqYW5kZXJzc2VuQGdtYWlsLmNvbT4KLQot
ICAgICAgICBNb3ZlIHNldEF1dG9maWxsZWQgZnJvbSBUZXN0UnVubmVyIHRvIFdlYkNvcmUKLSAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDUyMQotCi0g
ICAgICAgIFJldmlld2VkIGJ5IEJlbmphbWluIFBvdWxhaW4uCi0KLSAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwOgotICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5oOgotCi0yMDEzLTAyLTIyICBHeXV5b3Vu
ZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW0VGTF0gVXNlIEVJ
TkFfTE9HIGluc3RlYWQgb2YgZnByaW50ZiAKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTExMDMxMwotCi0gICAgICAgIFJldmlld2VkIGJ5IExhc3psbyBH
b21ib3MuCi0KLSAgICAgICAgUmVwbGFjZSBmcHJpbnRmIHdpdGggRUlOQV9MT0cuCi0KLSAgICAg
ICAgKiBld2svZXdrX2ZyYW1lLmNwcDoKLSAgICAgICAgKF9ld2tfZnJhbWVfZGVidWcpOgotCi0y
MDEzLTAyLTE5ICBUb255IENoYW5nICA8dG9ueUBjaHJvbWl1bS5vcmc+Ci0KLSAgICAgICAgQ29u
dmVydCAzIHNldHRpbmdzIHRvIHVzZSBTZXR0aW5ncy5pbgotICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5ODc1Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkg
Unlvc3VrZSBOaXdhLgotCi0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAgKF9l
d2tfdmlld19wcml2X25ldyk6IFJlbmFtZSBpc0RPTVBhc3RlQWxsb3dlZCB0byBET01QYXN0ZUFs
bG93ZWQuCi0KLTIwMTMtMDItMTggIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5j
b20+Ci0KLSAgICAgICAgQ2xlYW4gdXAgdGhlIGJvb2xlYW4gYXJndW1lbnQgdG8gdmlzaWJsZUNv
bnRlbnRSZWN0Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMTAxNjcKLQotICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCi0KLSAgICAgICAg
UmVwbGFjZSB0aGUgYm9vbGVhbiBhcmd1bWVudCB0byB2aXNpYmxlQ29udGVudFJlY3QoKSB3aXRo
Ci0gICAgICAgIGFuIGVudW0uCi0KLSAgICAgICAgKiBld2svZXdrX2ZyYW1lLmNwcDoKLSAgICAg
ICAgKGV3a19mcmFtZV92aXNpYmxlX2NvbnRlbnRfZ2VvbWV0cnlfZ2V0KToKLQotMjAxMy0wMi0x
OCAgTWljaGHFgiBQYWt1xYJhIHZlbCBSdXRrYSAgPG0ucGFrdWxhQHNhbXN1bmcuY29tPgotCi0g
ICAgICAgIFtFRkxdIEZpeCBidWlsZCB3aGVuIENPTlRFWFRfTUVOVVMgZmxhZyBpcyB0dXJuZWQg
b2ZmCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDk5
MjQKLQotICAgICAgICBSZXZpZXdlZCBieSBHeXV5b3VuZyBLaW0uCi0KLSAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9Db250ZXh0TWVudUNsaWVudEVmbC5jcHA6Ci0gICAgICAgICogV2ViQ29yZVN1
cHBvcnQvQ29udGV4dE1lbnVDbGllbnRFZmwuaDoKLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3Bw
OgotICAgICAgICAoX0V3a19WaWV3X1ByaXZhdGVfRGF0YSk6Ci0gICAgICAgIChfZXdrX3ZpZXdf
cHJpdl9uZXcpOgotICAgICAgICAoX2V3a192aWV3X3ByaXZfZGVsKToKLSAgICAgICAgKGV3a192
aWV3X2NvbnRleHRfbWVudV9nZXQpOgotCi0yMDEzLTAyLTE4ICBHcnplZ29yeiBDemFqa293c2tp
ICA8Zy5jemFqa293c2tpQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtXSzJdW0VGTF0gVW5pZmll
ZCB0ZXh0IGNoZWNrZXIgaW1wbGVtZW50YXRpb24KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNzY4MgotCi0gICAgICAgIFJldmlld2VkIGJ5IEFuZGVy
cyBDYXJsc3Nvbi4KLQotICAgICAgICBBZGQgYW4gZW1wdHkgY2hlY2tUZXh0T2ZQYXJhZ3JhcGgg
aW1wbGVtZW50YXRpb24gZm9yIFdLMS1FRkwKLSAgICAgICAgdG8gZG8gbm90IGJyZWFrIGJ1aWxk
IHdoZW4gV1RGX1VTRV9VTklGSUVEX1RFWFRfQ0hFQ0tJTkcKLSAgICAgICAgaXMgZW5hYmxlZC4K
LQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5oOgotICAgICAgICAo
RWRpdG9yQ2xpZW50RWZsKToKLSAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEVmbDo6Y2hl
Y2tUZXh0T2ZQYXJhZ3JhcGgpOgotCi0yMDEzLTAyLTE1ICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4g
IDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgotCi0gICAgICAgIFNpbXBsaWZ5IGhpdFRlc3RSZXN1
bHRBdFBvaW50IGFuZCBub2Rlc0Zyb21SZWN0IEFQSXMKLSAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NzIwCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgSnVs
aWVuIENoYWZmcmFpeC4KLQotICAgICAgICBVcGRhdGUgY2FsbHMgdG8gbmV3IEFQSS4KLQotICAg
ICAgICAqIGV3ay9ld2tfZnJhbWUuY3BwOgotICAgICAgICAoZXdrX2ZyYW1lX2hpdF90ZXN0X25l
dyk6Ci0KLTIwMTMtMDItMTMgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBk
aWdpYS5jb20+Ci0KLSAgICAgICAgW1F0XSB3aW5kb3cub3BlbiBwYXNzZXMgaGVpZ2h0IGFuZCB3
aWR0aCBwYXJhbWV0ZXJzIGV2ZW4gaWYgbm90IGRlZmluZWQgaW4gYSBwYWdlCi0gICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDc3MDUKLQotICAgICAgICBS
ZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KLQotICAgICAgICBEbyBub3Qg
cmVzaXplIHdpbmRvdyB3aGVuIGRlZmF1bHQgc2l6ZSBpcyByZXF1ZXN0ZWQuCi0KLSAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29yZTo6
Q2hyb21lQ2xpZW50RWZsOjpzZXRXaW5kb3dSZWN0KToKLQotMjAxMy0wMi0xMiAgSHVhbmcgRG9u
Z3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KLQotICAgICAgICBbVGV4TWFwXSBBcHBs
eSBmcmFtZXMtcGVyLXNlY29uZCBkZWJ1ZyBjb3VudGVyIHRvIFdLMS4KLSAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwOTU0MAotCi0gICAgICAgIFJldmll
d2VkIGJ5IE5vYW0gUm9zZW50aGFsLgotCi0gICAgICAgIE1ha2UgQWNjZWxlcmF0ZWRDb21wb3Np
dGluZ0NvbnRleHRFZmwgdXNlIFRleHR1cmVNYXBwZXJGUFNDb3VudGVyLgotCi0gICAgICAgICog
V2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHRFZmwuY3BwOgotICAg
ICAgICAoV2ViQ29yZTo6QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OnJlbmRlckxheWVy
cyk6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRl
eHRFZmwuaDoKLSAgICAgICAgKEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0KToKLQotMjAx
My0wMi0xMSAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KLQotICAgICAgICBEaXNh
YmxlIGRlbGV0ZSBidXR0b24gY29udHJvbGxlciBvbiBub24tTWFjIHBvcnRzIGFuZCBkZWxldGUg
RWRpdG9yQ2xpZW50OjpzaG91bGRTaG93RGVsZXRlSW50ZXJmYWNlCi0gICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDk1MzQKLQotICAgICAgICBSZXZpZXdl
ZCBieSBBbmRlcnMgQ2FybHNzb24uCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JD
bGllbnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29yZSk6Ci0gICAgICAgICogV2ViQ29yZVN1cHBv
cnQvRWRpdG9yQ2xpZW50RWZsLmg6Ci0gICAgICAgIChFZGl0b3JDbGllbnRFZmwpOgotCi0yMDEz
LTAyLTA4ICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgotCi0gICAgICAg
IE1vdmUgd29ya2VyVGhyZWFkQ291bnQgZnJvbSBUZXN0UnVubmVyIHRvIFdlYkNvcmUgSW50ZXJu
YWxzCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDky
MzkKLQotICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KLQotICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHA6Ci0gICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmg6Ci0KLTIwMTMtMDItMDcgIEJlbmph
bWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+Ci0KLSAgICAgICAgTW92ZSBwYXVzZUFu
aW1hdGlvbi9wYXVzZVRyYW5zaXRpb24gZnJvbSBUZXN0UnVubmVyIHRvIEludGVybmFscwotICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5MTA3Ci0KLSAg
ICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJzIENhcmxzc29uLgotCi0gICAgICAgICogV2ViQ29yZVN1
cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcDoKLSAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuaDoKLQotMjAxMy0wMi0wNCAgQmVuamFtaW4g
UG91bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNvbT4KLQotICAgICAgICBLaWxsIHN1c3BlbmRBbmlt
YXRpb24oKSwgcmVzdW1lQW5pbWF0aW9uKCkgYW5kIG51bWJlck9mQWN0aXZlQW5pbWF0aW9ucygp
IGZyb20gRFJUL1dUUjsgdXNlIEludGVybmFscwotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA4NzQxCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgVG9ueSBD
aGFuZy4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVm
bC5jcHA6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZs
Lmg6Ci0KLTIwMTMtMDItMDQgIEJhbGF6cyBLZWxlbWVuICA8a2JhbGF6c0B3ZWJraXQub3JnPgot
Ci0gICAgICAgIFtTb3VwXSBXcmFwIFNvdXBTZXNzaW9uIGJ5IE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA4NjE1
Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQWxleGV5IFByb3NrdXJ5YWtvdi4KLQotICAgICAgICBD
aGFuZ2VkIHRvIGhvbGQgdGhlIFNvdXBTZXNzaW9uIHBvaW50ZXIgaW4gYSBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24KLSAgICAgICAgc28gd2UgY2FuIHBhc3MgaXQgdG8gV2ViQ29yZS4gX0V3a19WaWV3
X1ByaXZhdGVfRGF0YSBoYXMgdG8gYmUKLSAgICAgICAgY2hhbmdlZCBmb3IgdGhhdCByZWFzb24u
Ci0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZU5ldHdvcmtpbmdDb250ZXh0RWZsLmNw
cDoKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTmV0d29ya2luZ0NvbnRleHRFZmw6OnN0b3JhZ2VT
ZXNzaW9uKToKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZU5ldHdvcmtpbmdDb250ZXh0
RWZsLmg6Ci0gICAgICAgIChGcmFtZU5ldHdvcmtpbmdDb250ZXh0RWZsKToKLSAgICAgICAgKiBl
d2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoX0V3a19WaWV3X1ByaXZhdGVfRGF0YSk6Ci0gICAg
ICAgIChfZXdrX3ZpZXdfcHJpdl9uZXcpOgotICAgICAgICAoZXdrX3ZpZXdfc291cF9zZXNzaW9u
X2dldCk6Ci0gICAgICAgIChld2tfdmlld19zb3VwX3Nlc3Npb25fc2V0KToKLSAgICAgICAgKEVX
S1ByaXZhdGU6OnN0b3JhZ2VTZXNzaW9uKToKLSAgICAgICAgKEVXS1ByaXZhdGUpOgotICAgICAg
ICAqIGV3ay9ld2tfdmlld19wcml2YXRlLmg6Ci0gICAgICAgIChFV0tQcml2YXRlKToKLQotMjAx
My0wMi0wMyAgS3dhbmdZb25nIENob2kgIDxreTAuY2hvaUBzYW1zdW5nLmNvbT4KLQotICAgICAg
ICBGaXggYnVpbGQgd2FybmluZyBhZnRlciByMTQxNDczCi0gICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDg3ODIKLQotICAgICAgICBSZXZpZXdlZCBieSBL
ZW50YXJvIEhhcmEuCi0KLSAgICAgICAgRml4IC1XdW51c2VkLXBhcmFtZXRlciBidWlsZCB3YXJu
aW5nLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmNwcDoKLSAg
ICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEVmbDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGFG
b3JSYW5nZSk6Ci0KLTIwMTMtMDEtMzEgIEF1cmltYXMgTGl1dGlrYXMgIDxhdXJpbWFzQGNocm9t
aXVtLm9yZz4KLQotICAgICAgICBFZGl0b3I6Om1fY29tcG9zaXRpb25Ob2RlIG5vdCB1cGRhdGVk
IG9uIEhUTUxJbnB1dEVsZW1lbnQ6OnNldFZhbHVlKCkKLSAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNzczNwotCi0gICAgICAgIFJldmlld2VkIGJ5IFJ5
b3N1a2UgTml3YS4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5j
cHA6Ci0gICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRFZmw6OnJlc3BvbmRUb0NoYW5nZWRT
ZWxlY3Rpb24pOgotICAgICAgICAgICAgQWRkaW5nIGEgY2FsbCB0byB0aGUgbmV3bHkgcmVmYWN0
b3JlZCBtZXRob2QuCi0KLTIwMTMtMDEtMzEgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5i
b3RAZ21haWwuY29tPgotCi0gICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxNDE0Nzku
Ci0gICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzE0MTQ3OQotICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA4NTY0Ci0KLSAgICAg
ICAgYnJlYWtzIGNocm9taXVtIHRlc3QgKFJlcXVlc3RlZCBieSBtb3JyaXRhIG9uICN3ZWJraXQp
LgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmNwcDoKLSAgICAg
ICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEVmbDo6cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbik6
Ci0KLTIwMTMtMDEtMzEgIEF1cmltYXMgTGl1dGlrYXMgIDxhdXJpbWFzQGNocm9taXVtLm9yZz4K
LQotICAgICAgICBFZGl0b3I6Om1fY29tcG9zaXRpb25Ob2RlIG5vdCB1cGRhdGVkIG9uIEhUTUxJ
bnB1dEVsZW1lbnQ6OnNldFZhbHVlKCkKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEwNzczNwotCi0gICAgICAgIFJldmlld2VkIGJ5IFJ5b3N1a2UgTml3
YS4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5jcHA6Ci0gICAg
ICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRFZmw6OnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24p
OgotICAgICAgICAgICAgQWRkaW5nIGEgY2FsbCB0byB0aGUgbmV3bHkgcmVmYWN0b3JlZCBtZXRo
b2QuCi0KLTIwMTMtMDEtMzEgIEVucmljYSBDYXN1Y2NpICA8ZW5yaWNhQGFwcGxlLmNvbT4KLQot
ICAgICAgICBXZWJLaXQyOiBwcm92aWRlIG5ldyBidW5kbGUgQVBJcyB0byBhbGxvdyBidW5kbGUg
Y2xpZW50cyB0byBiZSBub3RpZmllZCBvZiBwYXN0ZWJvYXJkIGFjY2Vzcy4KLSAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODM5Ni4KLSAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzEyOTIwNDYxPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEFsZXhleSBQcm9z
a3VyeWFrb3YuCi0KLSAgICAgICAgQWRkcyBzdHViIGltcGxlbWVudGF0aW9uIGZvciBXZWJLaXQg
b2YgdGhlIG5ldyBFZGl0b3JDbGllbnQgbWV0aG9kcy4KLQotICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0VkaXRvckNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRF
Zmw6OndpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCk6Ci0gICAgICAgIChXZWJDb3JlOjpF
ZGl0b3JDbGllbnRFZmw6OmdldENsaWVudFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UpOgotICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5oOgotCi0yMDEzLTAxLTMxICBDaHJp
c3RvcGhlIER1bWV6ICA8ZGNocmlzQGdtYWlsLmNvbT4KLQotICAgICAgICBbRUZMXSBEaXNhYmxl
IFdlYiBJbnRlbnRzCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMDg0NTcKLQotICAgICAgICBSZXZpZXdlZCBieSBBbGV4ZXkgUHJvc2t1cnlha292Lgot
Ci0gICAgICAgIFJlbW92ZSBjb2RlIHJlbGF0ZWQgdG8gV2ViIEludGVudHMgZnJvbSBFRkwKLSAg
ICAgICAgV2ViS2l0LgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVT
dXBwb3J0RWZsLmNwcDoKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1
cHBvcnRFZmwuaDoKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVm
bC5jcHA6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuaDoK
LSAgICAgICAgKEZyYW1lTG9hZGVyQ2xpZW50RWZsKToKLSAgICAgICAgKiBld2svRVdlYktpdC5o
OgotICAgICAgICAqIGV3ay9ld2tfZnJhbWUuY3BwOgotICAgICAgICAqIGV3ay9ld2tfZnJhbWUu
aDoKLSAgICAgICAgKiBld2svZXdrX2ZyYW1lX3ByaXZhdGUuaDoKLSAgICAgICAgKiBld2svZXdr
X2ludGVudC5jcHA6IFJlbW92ZWQuCi0gICAgICAgICogZXdrL2V3a19pbnRlbnQuaDogUmVtb3Zl
ZC4KLSAgICAgICAgKiBld2svZXdrX2ludGVudF9wcml2YXRlLmg6IFJlbW92ZWQuCi0gICAgICAg
ICogZXdrL2V3a19pbnRlbnRfcmVxdWVzdC5jcHA6IFJlbW92ZWQuCi0gICAgICAgICogZXdrL2V3
a19pbnRlbnRfcmVxdWVzdC5oOiBSZW1vdmVkLgotCi0yMDEzLTAxLTMxICBTaGVyaWZmIEJvdCAg
PHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KLQotICAgICAgICBVbnJldmlld2VkLCByb2xs
aW5nIG91dCByMTQxMTEwLgotICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNl
dC8xNDExMTAKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEwODM0OQotCi0gICAgICAgIFRoaXMgcGF0Y2ggYnJva2UgV0syLUVGTCB1bml0IHRlc3RzIChS
ZXF1ZXN0ZWQgYnkgZ3J6ZWdvcnogb24KLSAgICAgICAgI3dlYmtpdCkuCi0KLSAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuaDoKLQotMjAxMy0wMS0zMCAgSHVhbmcgRG9u
Z3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KLQotICAgICAgICBbVGV4TWFwXSBSZW1v
dmUgR3JhcGhpY3NMYXllciBpbiBUZXh0dXJlTWFwcGVyTGF5ZXIuCi0gICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDcwNzMKLQotICAgICAgICBSZXZpZXdl
ZCBieSBOb2FtIFJvc2VudGhhbC4KLQotICAgICAgICBJbmNsdWRlIEdyYXBoaWNzTGF5ZXJUZXh0
dXJlTWFwcGVyLmggdG8gdXNlIHRvVGV4dHVyZU1hcHBlckxheWVyKCkuCi0KLSAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dEVmbC5jcHA6Ci0KLTIw
MTMtMDEtMjkgIEdyemVnb3J6IEN6YWprb3dza2kgIDxnLmN6YWprb3dza2lAc2Ftc3VuZy5jb20+
Ci0KLSAgICAgICAgW0VGTF0gVW5pZmllZCB0ZXh0IGNoZWNrZXIgaW1wbGVtZW50YXRpb24uCi0g
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDc2ODIKLQot
ICAgICAgICBSZXZpZXdlZCBieSBBbmRlcnMgQ2FybHNzb24uCi0KLSAgICAgICAgQWRkIGFuIGVt
cHR5IGNoZWNrVGV4dE9mUGFyYWdyYXBoIGltcGxlbWVudGF0aW9uIGZvciBXSzEtRUZMCi0gICAg
ICAgIHRvIGRvIG5vdCBicmVhayBidWlsZCB3aGVuIFdURl9VU0VfVU5JRklFRF9URVhUX0NIRUNL
SU5HCi0gICAgICAgIGlzIGVuYWJsZWQuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0
b3JDbGllbnRFZmwuaDoKLSAgICAgICAgKEVkaXRvckNsaWVudEVmbCk6Ci0gICAgICAgIChXZWJD
b3JlOjpFZGl0b3JDbGllbnRFZmw6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKToKLQotMjAxMy0wMS0y
OCAgSHVhbmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KLQotICAgICAgICBb
VGV4TWFwXSBFbmFibGUgZGVidWcgYm9yZGVycyBhbmQgcmVwYWludCBjb3VudGVyIHZpYSBTZXR0
aW5ncy4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEw
NzE5OAotCi0gICAgICAgIFJldmlld2VkIGJ5IEJlbmphbWluIFBvdWxhaW4uCi0KLSAgICAgICAg
SWYgV0VCS0lUX1NIT1dfQ09NUE9TSVRJTkdfREVCVUdfVklTVUFMUyBpcyBzZXQgdG8gMSwgc2V0
Ci0gICAgICAgIHNob3dEZWJ1Z0JvcmRlcnMgYW5kIHNob3dSZXBhaW50Q291bnRlciBpbiBTZXR0
aW5ncyB0byB0cnVlLgotCi0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAgKF9l
d2tfdmlld19wcml2X25ldyk6Ci0KLTIwMTMtMDEtMjIgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVy
c2NhQGFwcGxlLmNvbT4KLQotICAgICAgICBVc2UgYSBwbGF0Zm9yb20gc3RyYXRlZ3kgZm9yIGxv
Y2FsIHN0b3JhZ2UKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEwNzYwMAotCi0gICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCi0KLSAgICAg
ICAgVXBkYXRlIGZvciBuZXcgc3RvcmFnZSBzdHJhdGVneS4KLQotICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0VmbC5jcHA6Ci0gICAgICAgIChQbGF0Zm9ybVN0cmF0
ZWdpZXNFZmw6OmNyZWF0ZVN0b3JhZ2VTdHJhdGVneSk6Ci0gICAgICAgICogV2ViQ29yZVN1cHBv
cnQvUGxhdGZvcm1TdHJhdGVnaWVzRWZsLmg6Ci0gICAgICAgIChQbGF0Zm9ybVN0cmF0ZWdpZXNF
ZmwpOgotCi0yMDEzLTAxLTIyICBLcnp5c3p0b2YgQ3plY2ggIDxrLmN6ZWNoQHNhbXN1bmcuY29t
PgotCi0gICAgICAgIFtFRkxdIEFkZHMgQWNjZXNzaWJpbGl0eSBzdXBwb3J0IHRvIHdrMS4KLSAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNzQ0MAotCi0g
ICAgICAgIFJldmlld2VkIGJ5IEd5dXlvdW5nIEtpbS4KLQotICAgICAgICBBZGRzIHBvc3NpYmls
aXR5IG9mIGZvY3VzaW5nIGFuZCByZXRyaWV2aW5nIGFjY2Vzc2libGUgb2JqZWN0LgotCi0gICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcDoKLSAgICAg
ICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6cm9vdEFjY2Vzc2libGVFbGVtZW50KToKLSAg
ICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6Zm9jdXNlZEFjY2Vzc2libGVFbGVtZW50
KToKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuaDoK
LQotMjAxMy0wMS0xNSAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgot
Ci0gICAgICAgIFVucmV2aWV3ZWQuIEZpeCBidWlsZCBicmVhayBieSByMTM5Nzk2LgotCi0gICAg
ICAgICogZXdrL2V3a19mcmFtZS5jcHA6Ci0gICAgICAgIChld2tfZnJhbWVfdGV4dF9tYXRjaGVz
X21hcmspOgotCi0yMDEzLTAxLTEzICBLd2FuZ1lvbmcgQ2hvaSAgPGt5MC5jaG9pQHNhbXN1bmcu
Y29tPgotCi0gICAgICAgIFtFRkxdIFVucmV2aWV3ZWQgYnVpbGQgZml4IGFmdGVyIHIxMzk1NDEK
LSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjc0OQot
Ci0gICAgICAgIHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYEpTQzo6SlNDZWxsOjptZXRob2RUYWJs
ZSgpIGNvbnN0JwotCi0gICAgICAgICogZXdrL2V3a19qcy5jcHA6Ci0gICAgICAgICogZXdrL2V3
a192aWV3LmNwcDoKLQotMjAxMy0wMS0xMSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29t
PgotCi0gICAgICAgIEpJVFRodW5rcyBzaG91bGQgbm90IGNvbXBpbGUgb25seSBiZWNhdXNlIG9m
IGx1Y2sKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEw
NTY5NgotCi0gICAgICAgIFJ1YmJlciBzdGFtcGVkIGJ5IFNhbSBXZWluaWcuCi0KLSAgICAgICAg
KiBld2svRVdlYktpdC5oOgotICAgICAgICAqIGV3ay9ld2tfbWFpbi5jcHA6Ci0KLTIwMTMtMDEt
MTEgIEt3YW5nWW9uZyBDaG9pICA8a3kwLmNob2lAc2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW0VG
TF0gRml4IHVudXNlZCBwYXJhbWV0ZXIgYnVpbGQgZXJyb3IKLSAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjYzOQotCi0gICAgICAgIFJldmlld2VkIGJ5
IEtlbnRhcm8gSGFyYS4KLQotICAgICAgICBVc2UgVU5VU0VEX1BBUkFNIG1hY3JvIHRvIGZpeCBi
dWlsZCBlcnJvci4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3Vw
cG9ydEVmbC5jcHA6Ci0gICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OmludGVudE1l
c3NhZ2VQb3J0cyk6Ci0gICAgICAgICogZXdrL2V3a19jb250ZXh0bWVudS5jcHA6Ci0gICAgICAg
IChld2tfY29udGV4dF9tZW51X2Rlc3Ryb3kpOgotICAgICAgICAoZXdrX2NvbnRleHRfbWVudV9p
dGVtX3NlbGVjdCk6Ci0gICAgICAgICogZXdrL2V3a19maWxlX2Nob29zZXIuY3BwOgotICAgICAg
ICAoZXdrX2ZpbGVfY2hvb3Nlcl9jYXB0dXJlX2dldCk6Ci0gICAgICAgICogZXdrL2V3a19mcmFt
ZS5jcHA6Ci0gICAgICAgIChld2tfZnJhbWVfZmVlZF90b3VjaF9ldmVudCk6Ci0gICAgICAgICog
ZXdrL2V3a19pbnRlbnQuY3BwOgotICAgICAgICAoZXdrX2ludGVudF9hY3Rpb25fZ2V0KToKLSAg
ICAgICAgKGV3a19pbnRlbnRfdHlwZV9nZXQpOgotICAgICAgICAoZXdrX2ludGVudF9zZXJ2aWNl
X2dldCk6Ci0gICAgICAgIChld2tfaW50ZW50X3N1Z2dlc3Rpb25zX2dldCk6Ci0gICAgICAgIChl
d2tfaW50ZW50X2V4dHJhX2dldCk6Ci0gICAgICAgIChld2tfaW50ZW50X2V4dHJhX25hbWVzX2dl
dCk6Ci0gICAgICAgICogZXdrL2V3a19pbnRlbnRfcmVxdWVzdC5jcHA6Ci0gICAgICAgIChld2tf
aW50ZW50X3JlcXVlc3RfcmVmKToKLSAgICAgICAgKGV3a19pbnRlbnRfcmVxdWVzdF91bnJlZik6
Ci0gICAgICAgIChld2tfaW50ZW50X3JlcXVlc3RfaW50ZW50X2dldCk6Ci0gICAgICAgICogZXdr
L2V3a19zZWN1cml0eV9vcmlnaW4uY3BwOgotICAgICAgICAoZXdrX3NlY3VyaXR5X29yaWdpbl93
ZWJfZGF0YWJhc2VfdXNhZ2VfZ2V0KToKLSAgICAgICAgKGV3a19zZWN1cml0eV9vcmlnaW5fd2Vi
X2RhdGFiYXNlX3F1b3RhX2dldCk6Ci0gICAgICAgICogZXdrL2V3a19zZXR0aW5ncy5jcHA6Ci0g
ICAgICAgIChld2tfc2V0dGluZ3Nfc2hhZG93X2RvbV9lbmFibGVfc2V0KToKLSAgICAgICAgKiBl
d2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoZXdrX3ZpZXdfY29udGV4dF9tZW51X2ZvcndhcmRf
ZXZlbnQpOgotICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19zaG91bGRfZGlzcGxheV9zdWJ0aXRs
ZXNfZ2V0KToKLSAgICAgICAgKGV3a192aWV3X3NldHRpbmdfc2hvdWxkX2Rpc3BsYXlfY2FwdGlv
bnNfZ2V0KToKLSAgICAgICAgKGV3a192aWV3X3NldHRpbmdfc2hvdWxkX2Rpc3BsYXlfY2FwdGlv
bnNfc2V0KToKLSAgICAgICAgKGV3a192aWV3X3NldHRpbmdfc2hvdWxkX2Rpc3BsYXlfc3VidGl0
bGVzX3NldCk6Ci0gICAgICAgIChld2tfdmlld19zZXR0aW5nX3Nob3VsZF9kaXNwbGF5X3RleHRf
ZGVzY3JpcHRpb25zX2dldCk6Ci0gICAgICAgIChld2tfdmlld19zZXR0aW5nX3Nob3VsZF9kaXNw
bGF5X3RleHRfZGVzY3JpcHRpb25zX3NldCk6Ci0KLTIwMTMtMDEtMTAgIENocmlzdG9waGUgRHVt
ZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KLQotICAgICAgICBbRUZMXSBBZGQgZ3N0
cmVhbWVyIDEuMC41IHRvIGpoYnVpbGQKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEwNjE3OAotCi0gICAgICAgIFJldmlld2VkIGJ5IExhc3psbyBHb21i
b3MuCi0KLSAgICAgICAgRml4IGNvbXBpbGF0aW9uIGVycm9yIHdoZW4gdXNpbmcgZ3N0cmVhbWVy
IDEuMC4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xs
ZXJFZmwuY3BwOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Z1bGxzY3JlZW5WaWRlb0NvbnRy
b2xsZXJFZmwuaDoKLQotMjAxMy0wMS0wOCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+
Ci0KLSAgICAgICAgUmVtb3ZlZCB0aGUgbmVlZCBmb3IgdGhlIFByb3Bvc2VkRGF0YWJhc2UgbWVj
aGFuaXNtLgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTA2MjkyLgotCi0gICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCi0KLSAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29yZTo6Q2hy
b21lQ2xpZW50RWZsOjpleGNlZWRlZERhdGFiYXNlUXVvdGEpOgotICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oOgotICAgICAgICAoQ2hyb21lQ2xpZW50RWZsKToKLQot
MjAxMy0wMS0wNyAgTWlrZSBXZXN0ICA8bWt3c3RAY2hyb21pdW0ub3JnPgotCi0gICAgICAgIE1h
a2UgdGhlIElGUkFNRV9TRUFNTEVTUyBmbGFnIHJ1bnRpbWUtZW5hYmxlZC4KLSAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjIxMwotCi0gICAgICAgIFJl
dmlld2VkIGJ5IE9qYW4gVmFmYWkuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVu
ZGVyVHJlZVN1cHBvcnRFZmwuY3BwOgotICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZs
OjpzZXRTZWFtbGVzc0lGcmFtZXNFbmFibGVkKToKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9E
dW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuaDoKLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgot
ICAgICAgICAoX2V3a192aWV3X3ByaXZfbmV3KToKLSAgICAgICAgICAgIEFkZCBhIHRvZ2dsZSBm
b3Igc2VhbWxlc3MgSUZyYW1lcyB0byBFRkwncyBEUlRTdXBvcnQuCi0KLTIwMTMtMDEtMDQgIEFk
YW0gS2xlaW4gIDxhZGFta0BjaHJvbWl1bS5vcmc+Ci0KLSAgICAgICAgUmVtb3ZlIEVOQUJMRV9N
VVRBVElPTl9PQlNFUlZFUlMgI2RlZmluZQotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTA1NDU5Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgUnlvc3VrZSBO
aXdhLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZs
LmNwcDoKLSAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6ZGVsaXZlckFsbE11dGF0
aW9uc0lmTmVjZXNzYXJ5KToKLQotMjAxMi0xMi0yMyAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFw
QGFwcGxlLmNvbT4KLQotICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTI4MDgzNzc+IE5ldHdvcmsg
cHJvY2VzcyBzaG91bGQgcmVzcGVjdCBjb29raWUgYWNjZXB0IHBvbGljeQotICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA1Njg0Ci0KLSAgICAgICAgUmV2
aWV3ZWQgYnkgU2FtIFdlaW5pZy4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1BsYXRmb3Jt
U3RyYXRlZ2llc0VmbC5jcHA6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJh
dGVnaWVzRWZsLmg6Ci0gICAgICAgIENvb2tpZXNTdHJhdGVneSBubyBsb25nZXIgaGFzIG5vdGlm
eUNvb2tpZXNDaGFuZ2VkKCkuIFRoaXMgcG9ydCBkaWRuJ3QgdXNlIGl0IGFueXdheS4KLQotMjAx
Mi0xMi0yMiAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KLQotICAgICAgICBB
ZGQgYSBzZXBhcmF0ZSBjbGFzcyBmb3IgbmV0d29ya2luZyByZWxhdGVkIHN0b3JhZ2UKLSAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNTY3NgotCi0gICAg
ICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9Q
bGF0Zm9ybVN0cmF0ZWdpZXNFZmwuY3BwOgotICAgICAgICAoUGxhdGZvcm1TdHJhdGVnaWVzRWZs
Ojpjb29raWVzRm9yRE9NKToKLSAgICAgICAgKFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6c2V0Q29v
a2llc0Zyb21ET00pOgotICAgICAgICAoUGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpjb29raWVzRW5h
YmxlZCk6Ci0gICAgICAgIChQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6OmNvb2tpZVJlcXVlc3RIZWFk
ZXJGaWVsZFZhbHVlKToKLSAgICAgICAgKFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6Z2V0UmF3Q29v
a2llcyk6Ci0gICAgICAgIChQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6OmRlbGV0ZUNvb2tpZSk6Ci0g
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzRWZsLmg6Ci0gICAgICAg
IENvb2tpZSBmdW5jdGlvbnMgbm93IHRha2UgYSBOZXR3b3JrU3RvcmFnZVNlc3Npb24sIG5vdCBh
IE5ldHdvcmtpbmdDb250ZXh0LgotCi0yMDEyLTEyLTIxICBTZW9ranUgS3dvbiAgPHNlb2tqdS5r
d29uQGdtYWlsLmNvbT4KLQotICAgICAgICBbRUZMXSBBZGQgZ3VhcmQgYXJvdW5kIENvbnRleHRN
ZW51SXRlbVRhZ0luc3BlY3RFbGVtZW50Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMDUyNjcKLQotICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtlIE5p
d2EuCi0KLSAgICAgICAgTmVlZCBJTlNQRUNUT1IgZ3VhcmQgZm9yIHVzaW5nIENvbnRleHRNZW51
SXRlbVRhZ0luc3BlY3RFbGVtZW50LgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvQXNzZXJ0
TWF0Y2hpbmdFbnVtcy5jcHA6Ci0KLTIwMTItMTItMjEgIEthbmdpbCBIYW4gIDxrYW5naWwuaGFu
QHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxdW1dLMV0gT2Jzb2xldGUgYSBjYXNlIGluIHRl
c3RfZXdrX2ZyYW1lIGFwaSB0ZXN0IHRvIG5vdCBtYWtlIGJvdCBzaWNrCi0gICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDUxNDIKLQotICAgICAgICBSZXZp
ZXdlZCBieSBHeXV5b3VuZyBLaW0uCi0KLSAgICAgICAgQlVHIDQ5MjQ2IGhhcyBjaGFuZ2VkIGxv
YWQgYmVoYXZpb3Igb24gbWFsZm9ybWVkIHVybCBpbnB1dC4KLSAgICAgICAgVGhhdCBpcyB3aHkg
dGVzdF9ld2tfZnJhbWUgYXBpIHRlc3QgaXMgdGltZWQgb3V0LgotICAgICAgICBUbyBub3QgbWFr
ZSBib3Qgc2ljaywgdGhpcyBwYXRjaCBjb21tZW50cyBvdXQgdGhhdCB0ZXN0IGNhc2UgYXQgYSBt
b21lbnQuCi0KLSAgICAgICAgKiB0ZXN0cy90ZXN0X2V3a19mcmFtZS5jcHA6Ci0gICAgICAgIChU
RVNUX0YpOgotCi0yMDEyLTEyLTIwICBSeXVhbiBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNv
bT4KLQotICAgICAgICBbRUZMXSBCdWlsZCBicmVhayB3aXRoIGxhdGVzdCBFRkwgbGlicmFyaWVz
LgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0ODI3
Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgTGFzemxvIEdvbWJvcy4KLQotICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oOiBSZW1vdmVkIHVubmVjZXNzYXJ5IGRlY2xhcmF0
aW9uLgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5o
OiBEaXR0by4KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuaDogRGl0
dG8uCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVOZXR3b3JraW5nQ29udGV4dEVmbC5o
OiBEaXR0by4KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9QYWdlQ2xpZW50RWZsLmg6IERpdHRv
LgotCi0yMDEyLTEyLTE4ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgotCi0g
ICAgICAgIFJlbW92ZSB1bm5lY2Vzc2FyeSBmdW5jdGlvbnMgZnJvbSBDb29raWVzU3RyYXRlZ3kK
LSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNTM2OQot
Ci0gICAgICAgIFJldmlld2VkIGJ5IEJyYWR5IEVpZHNvbi4KLQotICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0VmbC5jcHA6Ci0gICAgICAgICogV2ViQ29yZVN1cHBv
cnQvUGxhdGZvcm1TdHJhdGVnaWVzRWZsLmg6Ci0KLTIwMTItMTItMTYgIFNlb2tqdSBLd29uICA8
c2Vva2p1Lmt3b25AZ21haWwuY29tPgotCi0gICAgICAgIEZpeCB1bnVzZWQgcGFyYW1ldGVyIGNv
bXBpbGUgd2FybmluZ3MKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEwNTA4OQotCi0gICAgICAgIFJldmlld2VkIGJ5IEtlbnRhcm8gSGFyYS4KLQotICAg
ICAgICBVc2UgVU5VU0VEX1BBUkFNIG1hY3JvIHRvIGZpeCBidWlsZCB3YXJuaW5nIC1XdW51c2Vk
LXBhcmFtZXRlci4KLQotICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChld2tf
dmlld19pbnNwZWN0b3Jfc2hvdyk6Ci0gICAgICAgIChld2tfdmlld19pbnNwZWN0b3JfY2xvc2Up
OgotICAgICAgICAoZXdrX3ZpZXdfaW5zcGVjdG9yX3ZpZXdfZ2V0KToKLSAgICAgICAgKGV3a192
aWV3X2luc3BlY3Rvcl92aWV3X3NldCk6Ci0KLTIwMTItMTItMTUgIEFuZGVycyBDYXJsc3NvbiAg
PGFuZGVyc2NhQGFwcGxlLmNvbT4KLQotICAgICAgICBSZW5hbWUgRnJhbWVMb2FkZXJDbGllbnQ6
OmRvd25sb2FkIHRvIGNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZAotICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA1MTIyCi0KLSAgICAgICAg
UmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KLQotICAgICAgICBVcGRhdGUgZm9yIFdlYkNvcmUg
Y2hhbmdlcy4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZs
LmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpjb252ZXJ0TWFp
blJlc291cmNlTG9hZFRvRG93bmxvYWQpOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50RWZsLmg6Ci0gICAgICAgIChGcmFtZUxvYWRlckNsaWVudEVmbCk6Ci0KLTIw
MTItMTItMTUgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgotCi0gICAgICAgIFJlLWxh
bmRpbmcgcGF0Y2ggZm9yICJJbnRyb2R1Y2luZyB0aGUgRGF0YWJhc2VTdHJhdGVneSBhbmQgZGF0
YWJhc2Ugc2VydmVycyIuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMDQ5MzQuCi0KLSAgICAgICAgTm90IHJldmlld2VkLgotCi0gICAgICAgIE1lcmdl
ZCBmcm9tIHIxMzc3NjcuIFByZXZpb3VzbHkgcmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KLQotICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0VmbC5jcHA6Ci0gICAgICAg
IChQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6OmNyZWF0ZURhdGFiYXNlU3RyYXRlZ3kpOgotICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0VmbC5oOgotICAgICAgICAoUGxh
dGZvcm1TdHJhdGVnaWVzRWZsKToKLQotMjAxMi0xMi0xNCAgU2hlcmlmZiBCb3QgIDx3ZWJraXQu
cmV2aWV3LmJvdEBnbWFpbC5jb20+Ci0KLSAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQg
cjEzNzc2Ny4KLSAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTM3NzY3
Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDUwNjIK
LQotICAgICAgICBCcm9rZSBNYWMgYnVpbGRzLiAoUmVxdWVzdGVkIGJ5IG1sYW0gb24gI3dlYmtp
dCkuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNFZmwuY3Bw
OgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0VmbC5oOgotICAg
ICAgICAoUGxhdGZvcm1TdHJhdGVnaWVzRWZsKToKLQotMjAxMi0xMi0xNCAgTWFyayBMYW0gIDxt
YXJrLmxhbUBhcHBsZS5jb20+Ci0KLSAgICAgICAgSW50cm9kdWNpbmcgdGhlIERhdGFiYXNlU3Ry
YXRlZ3kgYW5kIGRhdGFiYXNlIHNlcnZlcnMuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMDQ5MzQuCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdl
aW5pZy4KLQotICAgICAgICBUaGUgZGF0YWJhc2Ugc2VydmVyIGlzIGN1cnJlbnRseSBhIHBsYWNl
aG9sZGVyIHRoYXQgZG9lcyBub3RoaW5nLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvUGxh
dGZvcm1TdHJhdGVnaWVzRWZsLmNwcDoKLSAgICAgICAgKFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6
Y3JlYXRlRGF0YWJhc2VTdHJhdGVneSk6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvUGxhdGZv
cm1TdHJhdGVnaWVzRWZsLmg6Ci0gICAgICAgIChQbGF0Zm9ybVN0cmF0ZWdpZXNFZmwpOgotCi0y
MDEyLTEyLTEzICBTZW9ranUgS3dvbiAgPHNlb2tqdS5rd29uQGdtYWlsLmNvbT4KLQotICAgICAg
ICBGaXggdW51c2VkIHBhcmFtZXRlciBjb21waWxlIHdhcm5pbmdzCi0gICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDQ5MDcKLQotICAgICAgICBSZXZpZXdl
ZCBieSBLZW50YXJvIEhhcmEuCi0KLSAgICAgICAgVXNlIFVOVVNFRF9QQVJBTSBtYWNybyB0byBm
aXggYnVpbGQgd2FybmluZyAtV3VudXNlZC1wYXJhbWV0ZXIKLSAgICAgICAgd2hlbiBFTkFCTEVf
SU5TUEVDVE9SIGlzIGRpc2FibGVkLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJl
bmRlclRyZWVTdXBwb3J0RWZsLmNwcDoKLSAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEVm
bDo6ZXZhbHVhdGVJbldlYkluc3BlY3Rvcik6Ci0KLTIwMTItMTItMTMgIEp1c3NpIEt1a2tvbmVu
ICA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgotCi0gICAgICAgIFtFRkxdW0dUS10gRG9uJ3Qg
Y2FsbCBkZXByZWNhdGVkIGdfdHlwZV9pbml0IHdoZW4gZ2xpYiA9PiAyLjM1Ci0gICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDMyMDkKLQotICAgICAgICBS
ZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KLQotICAgICAgICBnX3R5cGVf
aW5pdCgpIGlzIGRlcHJlY2F0ZWQgZnJvbSAyLjM1LjAgb253YXJkcy4gRG9uJ3QgY2FsbCBpdAot
ICAgICAgICBpbiB0aGF0IGNhc2UgdG8gYXZvaWQgd2FybmluZ3MgYW5kL29yIGJ1aWxkIGZhaWx1
cmUuCi0KLSAgICAgICAgKiBld2svZXdrX21haW4uY3BwOgotICAgICAgICAoX2V3a19pbml0X2Jv
ZHkpOgotCi0yMDEyLTEyLTEzICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5j
b20+Ci0KLSAgICAgICAgUmVncmVzc2lvbihyMTM3NTY4KTogQnJva2UgbGF5b3V0IHRlc3Qgb24g
RUZMIFdLMQotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTA0ODk1Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4u
Ci0KLSAgICAgICAgRml4IGxheW91dCB0ZXN0IGNyYXNoIGFmdGVyIHIxMzc1NjggYmVjYXVzZSBl
d2tfdmlldy5jcHAgaGFzIGtlcHQgdW51c2VkIG5ldHdvcmtJbmZvQ2xpZW50IG1lbWJlciB2YXJp
YWJsZQotICAgICAgICB1c2luZyBPd25QdHIuIFRoZSByMTM3NTY4IGxldHMgTmV0d29ya0luZm9D
bGllbnRFZmwgZGVzdHJveSBieSBXZWJDb3JlOjpOZXR3b3JrSW5mb0NvbnRyb2xsZXIuCi0KLSAg
ICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoX0V3a19WaWV3X1ByaXZhdGVfRGF0
YSk6Ci0gICAgICAgIChfZXdrX3ZpZXdfcHJpdl9uZXcpOgotCi0yMDEyLTEyLTEyICBHeXV5b3Vu
ZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgTmV0d29ya0luZm9D
b250cm9sbGVyIG5lZWRzIHRvIHN1cHBvcnQgZGVzdHJ1Y3RvcgotICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0NjQyCi0KLSAgICAgICAgUmV2aWV3ZWQg
YnkgS2VudGFybyBIYXJhLgotCi0gICAgICAgIFRob3VnaCBOZXR3b3JrSW5mb0NvbnRyb2xsZXIg
Y2FuIGJlIHJlZmVyZW5jZWQgYnkgZWFjaCBwb3J0IGluIG9yZGVyIHRvIHVwZGF0ZSBuZXR3b3Jr
IHN0YXR1cyBjaGFuZ2UsCi0gICAgICAgIHRoZXJlIGlzIG5vIHZpcnR1YWwgaW50ZXJmYWNlIHRv
IGRlc3Ryb3kgaXQuIEJlc2lkZSBlYWNoIHBvcnQgY2xpZW50IGFsc28gbmVlZHMgdG8gYmUgZGVz
dHJveWVkIHdoZW4KLSAgICAgICAgY29udHJvbGxlciBpcyBkZXN0cm95ZWQuCi0KLSAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9OZXR3b3JrSW5mb0NsaWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJD
b3JlOjpOZXR3b3JrSW5mb0NsaWVudEVmbDo6bmV0d29ya0luZm9Db250cm9sbGVyRGVzdHJveWVk
KToKLSAgICAgICAgKFdlYkNvcmUpOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L05ldHdvcmtJ
bmZvQ2xpZW50RWZsLmg6Ci0gICAgICAgIChOZXR3b3JrSW5mb0NsaWVudEVmbCk6Ci0KLTIwMTIt
MTItMTIgIFNlb2tqdSBLd29uICA8c2Vva2p1Lmt3b25AZ21haWwuY29tPgotCi0gICAgICAgIFtF
RkxdIFJlZmFjdG9yIGR1cGxpY2F0ZSBjb2RlIGludG8gRWZsSW5zcGVjdG9yVXRpbGl0aWVzCi0g
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDQzMjkKLQot
ICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KLQotICAgICAg
ICBSZW1vdmUgZHVwbGljYXRlZCB3b3JrIHRvIGdldCB0aGUgcmVzb3VyY2UgcGF0aCBmb3IgaW5z
cGVjdG9yLgotICAgICAgICBBbmQgdXNlIFdlYkNvcmU6Omluc3BlY3RvclJlc291cmNlUGF0aCgp
LgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50RWZsLmNwcDoKLSAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNsaWVudEVmbDo6aW5zcGVjdG9yRmlsZXNQYXRoKToK
LQotMjAxMi0xMi0xMiAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+Ci0KLSAgICAgICAg
RW5jYXBzdWxhdGUgZXh0ZXJuYWxseSB1c2VkIHdlYmRhdGFiYXNlIEFQSXMgaW4gRGF0YWJhc2VN
YW5hZ2VyLgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTA0NzQxLgotCi0gICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCi0KLSAgICAgICAgVXNl
IERhdGFiYXNlTWFuYWdlciBpbnN0ZWFkIG9mIGFjY2Vzc2luZyBEYXRhYmFzZVRyYWNrZXIsIEFi
c3RyYWN0RGF0YWJhc2UsCi0gICAgICAgIGFuZCBEYXRhYmFzZUNvbnRleHQgZGlyZWN0bHkuIFRo
aXMgaXMgdG8gcHJlcGFyZSBmb3IgdXBjb21pbmcgd2Via2l0MgotICAgICAgICByZWZhY3Rvcmlu
Zy4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHA6Ci0gICAg
ICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRFZmw6OmV4Y2VlZGVkRGF0YWJhc2VRdW90YSk6Ci0g
ICAgICAgICogZXdrL2V3a19zZWN1cml0eV9vcmlnaW4uY3BwOgotICAgICAgICAoZXdrX3NlY3Vy
aXR5X29yaWdpbl93ZWJfZGF0YWJhc2VfdXNhZ2VfZ2V0KToKLSAgICAgICAgKGV3a19zZWN1cml0
eV9vcmlnaW5fd2ViX2RhdGFiYXNlX3F1b3RhX2dldCk6Ci0gICAgICAgIChld2tfc2VjdXJpdHlf
b3JpZ2luX3dlYl9kYXRhYmFzZV9xdW90YV9zZXQpOgotICAgICAgICAoZXdrX3NlY3VyaXR5X29y
aWdpbl93ZWJfZGF0YWJhc2VfZ2V0X2FsbCk6Ci0gICAgICAgICogZXdrL2V3a19zZXR0aW5ncy5j
cHA6Ci0gICAgICAgIChld2tfc2V0dGluZ3Nfd2ViX2RhdGFiYXNlX3BhdGhfc2V0KToKLSAgICAg
ICAgKiBld2svZXdrX3dlYl9kYXRhYmFzZS5jcHA6Ci0gICAgICAgIChld2tfd2ViX2RhdGFiYXNl
X2Rpc3BsYXlfbmFtZV9nZXQpOgotICAgICAgICAoZXdrX3dlYl9kYXRhYmFzZV9leHBlY3RlZF9z
aXplX2dldCk6Ci0gICAgICAgIChld2tfd2ViX2RhdGFiYXNlX2ZpbGVuYW1lX2dldCk6Ci0gICAg
ICAgIChld2tfd2ViX2RhdGFiYXNlX3NpemVfZ2V0KToKLSAgICAgICAgKGV3a193ZWJfZGF0YWJh
c2VfcmVtb3ZlKToKLSAgICAgICAgKGV3a193ZWJfZGF0YWJhc2VfcmVtb3ZlX2FsbCk6Ci0KLTIw
MTItMTItMTIgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+Ci0KLSAgICAgICAg
TWFrZSBMT0coKSB3b3JrIGluIFdlYlByb2Nlc3MgYW5kIE5ldHdvcmtQcm9jZXNzCi0gICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDQ3MTgKLQotICAgICAg
ICBSZXZpZXdlZCBieSBUaW0gSG9ydG9uLgotCi0gICAgICAgICogZXdrL2V3a19tYWluLmNwcDog
SW5jbHVkZSBJbml0aWFsaXplTG9nZ2luZy5oCi0KLTIwMTItMTItMTEgIEtpaG9uZyBLd29uICA8
a2lob25nLmt3b25Ac2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgVmlicmF0aW9uIEFQSTogSURMIHR5
cGUgZG9lc24ndCBtYXRjaCBpbXBsZW1lbnRhdGlvbiB0eXBlCi0gICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDM4OTkKLQotICAgICAgICBSZXZpZXdlZCBi
eSBLZW50YXJvIEhhcmEuCi0KLSAgICAgICAgQWNjb3JkaW5nIHRvIFdlYklETCwgInVuc2lnbmVk
IGxvbmciIGNvcnJlc3BvbmRzIHRvICJ1bnNpZ25lZCIgaW4gdGhlIHBsYXRmb3JtLgotICAgICAg
ICBUaGVyZWZvcmUgdW5zaWduZWQgbG9uZyBuZWVkIHRvIGJlIGNoYW5nZWQgdG8gdW5zaWduZWQg
Zm9yIHRoZSBWaWJyYXRpb24gQVBJLgotICAgICAgICAtIENoYW5nZSBhIHBhcmFtZXRlciB0eXBl
IG9mIHZpYnJhdGUgZnVuY3Rpb24gZnJvbSB1bnNpZ25lZCBsb25nIHRvIHVuc2lnbmVkLgotCi0g
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvVmlicmF0aW9uQ2xpZW50RWZsLmNwcDoKLSAgICAgICAg
KFdlYkNvcmU6OlZpYnJhdGlvbkNsaWVudEVmbDo6dmlicmF0ZSk6Ci0gICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvVmlicmF0aW9uQ2xpZW50RWZsLmg6Ci0gICAgICAgIChWaWJyYXRpb25DbGllbnRF
ZmwpOgotCi0yMDEyLTEyLTExICBTZW9ranUgS3dvbiAgPHNlb2tqdS5rd29uQGdtYWlsLmNvbT4K
LQotICAgICAgICBbRUZMXSBSZW1vdmUgdW51c2VkIGhlYWRlcnMKLSAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDY2MQotCi0gICAgICAgIFJldmlld2Vk
IGJ5IFJ5b3N1a2UgTml3YS4KLQotICAgICAgICBIZWFkZXIgaW5jbHVzaW9uIGNsZWFudXAuCi0g
ICAgICAgIFJlbW92ZSAiTm90SW1wbGVtZW50ZWQuaCIuCi0KLSAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9Qb3B1cE1lbnVFZmwuY3BwOgotICAgICAgICAqIGV3ay9ld2tfaW50ZW50LmNwcDoKLQot
MjAxMi0xMi0xMSAgTWlrZSBXZXN0ICA8bWt3c3RAY2hyb21pdW0ub3JnPgotCi0gICAgICAgIFdl
YiBJbnNwZWN0b3I6IENvbnNvbGVUeXBlcyBzaG91bGQgbm90IGV4cG9zZSBNZXNzYWdlVHlwZSAt
IGl0IHNob3VsZCBiZSBwcml2YXRlIHRvIGluc3BlY3Rvci4KLSAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2MzcxCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkg
UGF2ZWwgRmVsZG1hbi4KLQotICAgICAgICBEcm9wcyBXZWJDb3JlOjpNZXNzYWdlVHlwZSBmcm9t
IHRoZSBhZGRNZXNzYWdlVG9Db25zb2xlIG1ldGhvZC4KLQotICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0Nocm9tZUNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRF
Zmw6OmFkZE1lc3NhZ2VUb0NvbnNvbGUpOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9t
ZUNsaWVudEVmbC5oOgotICAgICAgICAoQ2hyb21lQ2xpZW50RWZsKToKLQotMjAxMi0xMi0wNSAg
SGFsdG9uIEh1byAgPGhhbHRvbi5odW9AaW50ZWwuY29tPgotCi0gICAgICAgIFtDTWFrZV0gVW5p
ZnkgY29kaW5nIHN0eWxlIGZvciBDTWFrZSBmaWxlcwotICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzNjA1Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgTGFz
emxvIEdvbWJvcy4KLQotICAgICAgICBVcGRhdGUgY21ha2UgZmlsZXMoLmNtYWtlLCBDTWFrZUxp
c3RzLnR4dCkgd2l0aCBmb2xsb3dpbmcgc3R5bGUgcnVsZXM6Ci0gICAgICAgIDEuIEluZGVudGF0
aW9uCi0gICAgICAgIDEuMSBVc2Ugc3BhY2VzLCBub3QgdGFicy4KLSAgICAgICAgMS4yIEZvdXIg
c3BhY2VzIGFzIGluZGVudC4KLSAgICAgICAgMi4gU3BhY2luZwotICAgICAgICAyLjEgUGxhY2Ug
b25lIHNwYWNlIGJldHdlZW4gY29udHJvbCBzdGF0ZW1lbnRzIGFuZCB0aGVpciBwYXJlbnRoZXNl
cy4KLSAgICAgICAgICAgIEZvciBlZywgaWYgKCksIGVsc2UgKCksIGVsc2VpZiAoKSwgZW5kaWYg
KCksIGZvcmVhY2ggKCksCi0gICAgICAgICAgICBlbmRmb3JlYWNoICgpLCB3aGlsZSAoKSwgZW5k
d2hpbGUgKCksIGJyZWFrICgpLgotICAgICAgICAyLjIgRG8gbm90IHBsYWNlIHNwYWNlcyBiZXR3
ZWVuIGZ1bmN0aW9uIGFuZCBtYWNybyBzdGF0ZW1lbnRzIGFuZAotICAgICAgICAgICAgdGhlaXIg
cGFyZW50aGVzZXMuIEZvciBlZywgbWFjcm8oKSwgZW5kbWFjcm8oKSwgZnVuY3Rpb24oKSwKLSAg
ICAgICAgICAgIGVuZGZ1bmN0aW9uKCkuCi0gICAgICAgIDIuMyBEbyBub3QgcGxhY2Ugc3BhY2Vz
IGJldHdlZW4gYSBjb21tYW5kIG9yIGZ1bmN0aW9uIG9yIG1hY3JvIGFuZCBpdHMKLSAgICAgICAg
ICAgIHBhcmVudGhlc2VzLCBvciBiZXR3ZWVuIGEgcGFyZW50aGVzaXMgYW5kIGl0cyBjb250ZW50
LiBGb3IgZWcsCi0gICAgICAgICAgICBtZXNzYWdlKCJ0ZXN0aW5nIikgbm90IG1lc3NhZ2UoICJ0
ZXN0aW5nIikgb3IgbWVzc2FnZSAoInRlc3RpbmciICkKLSAgICAgICAgMi40IE5vIHNwYWNlIGF0
IGxpbmUgZW5kaW5nLgotICAgICAgICAzLiBMb3dlcmNhc2Ugd2hlbiBjYWxsIGNvbW1hbmRzIG1h
Y3JvcyBhbmQgZnVuY3Rpb25zLiBGb3IgZWcsCi0gICAgICAgICAgIGFkZF9leGVjdXRhYmxlKCkg
bm90IEFERF9FWEVDVVRBQkxFKCksIHNldCgpIG5vdCBTRVQoKS4KLQotICAgICAgICAqIERlZmF1
bHRUaGVtZS9DTWFrZUxpc3RzLnR4dDoKLQotMjAxMi0xMS0zMCAgTWloYWkgTWFlcmVhbiAgPG1t
YWVyZWFuQGFkb2JlLmNvbT4KLQotICAgICAgICBbQ1NTUmVnaW9uc10gd2hlbiBXZWJLaXQgdXNl
cyBWOCwgdGhlcmUgc2hvdWxkIGJlIGEgc2luZ2xlIHZhcmlhYmxlIHRvIHN0b3JlIGlmIHRoZSBD
U1MgUmVnaW9ucyBmZWF0dXJlIGlzIGVuYWJsZWQKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMTE5MgotCi0gICAgICAgIFJldmlld2VkIGJ5IEhhamlt
ZSBNb3JpdGEuCi0KLSAgICAgICAgUmVtb3ZlZCB0aGUgQ1NTIFJlZ2lvbnMgZmxhZyBpbiBTZXR0
aW5ncyBhbmQgc3dpdGNoZWQgdG8gdXNpbmcgdGhlIG5ldyBmbGFnIEkgaGF2ZSBhZGRlZCBpbiBS
dW50aW1lRW5hYmxlZEZlYXR1cmVzLgotCi0gICAgICAgIFRlc3RzOiBObyBuZXcgdGVzdHMgYmVj
YXVzZSB0aGVyZSBpcyBubyBmdW5jdGlvbmFsIGNoYW5nZS4KLQotICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHA6Ci0gICAgICAgIChEdW1wUmVuZGVy
VHJlZVN1cHBvcnRFZmw6OnNldENTU1JlZ2lvbnNFbmFibGVkKToKLSAgICAgICAgKiBld2svZXdr
X3ZpZXcuY3BwOgotICAgICAgICAoX2V3a192aWV3X3ByaXZfbmV3KToKLQotMjAxMi0xMS0yOSAg
QWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KLQotICAgICAgICBbV0syXSBGb3J3
YXJkIGNvb2tpZSBqYXIgY2FsbHMgdG8gTmV0d29ya1Byb2Nlc3MKLSAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzQ1NwotCi0gICAgICAgIFJldmlld2Vk
IGJ5IERhcmluIEFkbGVyLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJh
dGVnaWVzRWZsLmNwcDoKLSAgICAgICAgKFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6Y29va2llc0Zv
ckRPTSk6Ci0gICAgICAgIChQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6OnNldENvb2tpZXNGcm9tRE9N
KToKLSAgICAgICAgKFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6Y29va2llc0VuYWJsZWQpOgotICAg
ICAgICAoUGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1
ZSk6Ci0gICAgICAgIChQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6OmdldFJhd0Nvb2tpZXMpOgotICAg
ICAgICAoUGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpkZWxldGVDb29raWUpOgotICAgICAgICAoUGxh
dGZvcm1TdHJhdGVnaWVzRWZsOjpnZXRIb3N0bmFtZXNXaXRoQ29va2llcyk6Ci0gICAgICAgIChQ
bGF0Zm9ybVN0cmF0ZWdpZXNFZmw6OmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZSk6Ci0gICAgICAg
IChQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6OmRlbGV0ZUFsbENvb2tpZXMpOgotCi0yMDEyLTExLTI5
ICBSeXVhbiBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBbRUZMXSBC
cm9rZW4gcmVuZGVyaW5nIG9jY3VycyB3aGVuIHNjcm9sbGluZyBpbiBld2tfdmlld19zaW5nbGUu
Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzMyNQot
Ci0gICAgICAgIFJldmlld2VkIGJ5IEd5dXlvdW5nIEtpbS4KLQotICAgICAgICBBZnRlciByMTA0
Njg3LCBicm9rZW4gcmVuZGVyaW5nIG9jY3VycyB3aGVuIHNjcm9sbGluZyBjb250ZW50cy4KLSAg
ICAgICAgSXQncyBiZWNhdXNlIHNjcm9sbFdpZHRoIGNhbiBiZSBzbWFsbGVyIHRoYW4gd2lkdGgg
b2YgaW1hZ2UgYnVmZmVyLgotCi0gICAgICAgIFRoaXMgcGF0Y2ggZml4ZXMgaXQgYW5kIHJlbmFt
ZXMgcGFyYW1ldGVyIHRvIGF2b2lkIGNvbmZ1c2lvbi4KLQotICAgICAgICAqIGV3ay9ld2tfdmll
d19zaW5nbGUuY3BwOgotICAgICAgICAoX2V3a192aWV3X3NjcmVlbl9tb3ZlKToKLSAgICAgICAg
KF9ld2tfdmlld19zaW5nbGVfc2Nyb2xsX3Byb2Nlc3Nfc2luZ2xlKToKLQotMjAxMi0xMS0yOCAg
Unl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lAZ21haWwuY29tPgotCi0gICAgICAgIFtFRkxdIEdlbmVy
YXRlIGJpZ19idXR0b25fdGhlbWUuZWRqCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMDM1MTEKLQotICAgICAgICBSZXZpZXdlZCBieSBHeXV5b3VuZyBL
aW0uCi0KLSAgICAgICAgYmlnX2J1dHRvbl90aGVtZS5lZGosIGJpbmFyeSBmaWxlIHdoaWNoIGlz
IHVzZWQgZm9yIHRlc3QsIHNob3VsZCBiZSBnZW5lcmF0ZWQuCi0KLSAgICAgICAgKiBEZWZhdWx0
VGhlbWUvQ01ha2VMaXN0cy50eHQ6Ci0gICAgICAgIEludHJvZHVjZWQgbWFjcm8gYW5kIG5ldyB0
YXJnZXQgdG8gc2hhcmUgZmlsZXMgb2YgZGVmYXVsdCB0aGVtZSBpbnN0ZWFkCi0gICAgICAgIG9m
IGFkZGluZyBtYW55IGZpbGVzIGZvciBiaWdfYnV0dG9uX3RoZW1lLgotICAgICAgICAqIERlZmF1
bHRUaGVtZS93aWRnZXQvYnV0dG9uL2J1dHRvbi5lZGM6Ci0gICAgICAgIEltcGxlbWVudGVkIGZv
ciBiaWdfYnV0dG9uX3RoZW1lLgotCi0yMDEyLTExLTI4ICBSeXVhbiBDaG9pICA8cnl1YW4uY2hv
aUBnbWFpbC5jb20+Ci0KLSAgICAgICAgW0VGTF0gUmVmYWN0b3IgdGhlbWUgdG8gY2hvb3NlIHdo
ZXRoZXIgdG8gc3VwcG9ydCBmb3JlZ3JvdW5kIGNvbG9yIG9mIHNlbGVjdGlvbgotICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAyMDM3Ci0KLSAgICAgICAg
UmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCi0KLSAgICAgICAgKiBEZWZh
dWx0VGhlbWUvZGVmYXVsdC5lZGM6Ci0gICAgICAgIFJlZmFjdG9yZWQgY29sb3IgY2xhc3NlcyBm
cm9tIGFjdGl2ZS9pbmFjdGl2ZSB0byBmb3JlZ3JvdW5kL2JhY2tncm91bmQuCi0KLTIwMTItMTEt
MjcgIEphbWVzIFNpbW9uc2VuICA8c2ltb25qYW1AY2hyb21pdW0ub3JnPgotCi0gICAgICAgIENv
bnNvbGlkYXRlIEZyYW1lTG9hZGVyOjpsb2FkKCkgaW50byBvbmUgZnVuY3Rpb24gdGFraW5nIGEg
RnJhbWVMb2FkUmVxdWVzdAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTAyMTUxCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KLQotICAg
ICAgICAqIGV3ay9ld2tfZnJhbWUuY3BwOgotICAgICAgICAoX2V3a19mcmFtZV9jb250ZW50c19z
ZXRfaW50ZXJuYWwpOgotCi0yMDEyLTExLTI3ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcu
Ym90QGdtYWlsLmNvbT4KLQotICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTM1Nzg2
LgotICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8xMzU3ODYKLSAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzM3OQotCi0gICAg
ICAgIEl0IG1hZGUgMyBwbHVnaW4gdGVzdHMgdGltZW91dCBvbiBzZXZlcmFsIHBsYXRmb3JtcyAo
UmVxdWVzdGVkCi0gICAgICAgIGJ5IE9zc3kgb24gI3dlYmtpdCkuCi0KLSAgICAgICAgKiBld2sv
ZXdrX2ZyYW1lLmNwcDoKLSAgICAgICAgKGV3a19mcmFtZV91cmlfc2V0KToKLSAgICAgICAgKF9l
d2tfZnJhbWVfY29udGVudHNfc2V0X2ludGVybmFsKToKLQotMjAxMi0xMS0yNiAgSmFtZXMgU2lt
b25zZW4gIDxzaW1vbmphbUBjaHJvbWl1bS5vcmc+Ci0KLSAgICAgICAgQ29uc29saWRhdGUgRnJh
bWVMb2FkZXI6OmxvYWQoKSBpbnRvIG9uZSBmdW5jdGlvbiB0YWtpbmcgYSBGcmFtZUxvYWRSZXF1
ZXN0Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDIx
NTEKLQotICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgotCi0gICAgICAgICogZXdrL2V3
a19mcmFtZS5jcHA6Ci0gICAgICAgIChfZXdrX2ZyYW1lX2NvbnRlbnRzX3NldF9pbnRlcm5hbCk6
Ci0KLTIwMTItMTEtMjQgIFZpYXRjaGVzbGF2IE9zdGFwZW5rbyAgPHYub3N0YXBlbmtvQHNhbXN1
bmcuY29tPgotCi0gICAgICAgIFtFRkxdIExheW91dCB0ZXN0IGNvbWVzIHRvIGNyYXNoIG9uIFdL
MQotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzMTcw
Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCi0KLSAg
ICAgICAgU3dpdGNoIG9mZiBhY2NlbGVyYXRlZCBjb21wb3NpdGluZyBmb3IgV0sxIGJlY2F1c2Ug
R3JhcGhpY3NDb250ZXh0M0QgaXMKLSAgICAgICAgbWlzc2luZyBkaXJlY3QgcmVuZGVyaW5nIGlt
cGxlbWVudGF0aW9uIHRoYXQgaXMgcmVxdWlyZWQgZm9yIEVGTCBXSzEuCi0KLSAgICAgICAgKiBl
d2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoX2V3a192aWV3X3ByaXZfbmV3KToKLQotMjAxMi0x
MS0yMSAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQGRpZ2lhLmNvbT4KLQot
ICAgICAgICBEaXNhbWJpZ3VhdGUgaW5uZXJOb2RlRnJhbWVQb2ludCBhbmQgbWFpbkZyYW1lUG9p
bnQgCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODEz
OQotCi0gICAgICAgIFJldmlld2VkIGJ5IEp1bGllbiBDaGFmZnJhaXguCi0KLSAgICAgICAgKiBl
d2svZXdrX2ZyYW1lLmNwcDoKLSAgICAgICAgKGV3a19mcmFtZV9oaXRfdGVzdF9uZXcpOgotCi0y
MDEyLTExLTIwICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KLQot
ICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTM1Mjk1LgotICAgICAgICBodHRwOi8v
dHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8xMzUyOTUKLSAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjgzNAotCi0gICAgICAgIFRoaXMgcGF0Y2ggY2F1
c2VzIGFzc2VydGlvbiB0byBzb21lIGxheW91dCB0ZXN0cyBvbiBjaHJvbWl1bQotICAgICAgICAo
UmVxdWVzdGVkIGJ5IGppYW5saSBvbiAjd2Via2l0KS4KLQotICAgICAgICAqIGV3ay9ld2tfZnJh
bWUuY3BwOgotICAgICAgICAoZXdrX2ZyYW1lX3VyaV9zZXQpOgotICAgICAgICAoX2V3a19mcmFt
ZV9jb250ZW50c19zZXRfaW50ZXJuYWwpOgotCi0yMDEyLTExLTIwICBKYW1lcyBTaW1vbnNlbiAg
PHNpbW9uamFtQGNocm9taXVtLm9yZz4KLQotICAgICAgICBDb25zb2xpZGF0ZSBGcmFtZUxvYWRl
cjo6bG9hZCgpIGludG8gb25lIGZ1bmN0aW9uIHRha2luZyBhIEZyYW1lTG9hZFJlcXVlc3QKLSAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjE1MQotCi0g
ICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCi0KLSAgICAgICAgKiBld2svZXdrX2ZyYW1l
LmNwcDoKLSAgICAgICAgKF9ld2tfZnJhbWVfY29udGVudHNfc2V0X2ludGVybmFsKToKLQotMjAx
Mi0xMS0xOSAgVG9ueSBDaGFuZyAgPHRvbnlAY2hyb21pdW0ub3JnPgotCi0gICAgICAgIFJlbW92
ZSAnaXMnIHByZWZpeCBmcm9tIFdlYlNldHRpbmdzOjppc1dlYlNlY3VyaXR5RW5hYmxlZCBhbmQg
V2ViU2V0dGluZ3M6OmlzU3BhdGlhbE5hdmlnYXRpb25FbmFibGVkCi0gICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDI1NDgKLQotICAgICAgICBSZXZpZXdl
ZCBieSBBZGFtIEJhcnRoLgotCi0gICAgICAgIFJlbmFtZSBjYWxsIHRvIFdlYkNvcmU6OlNldHRp
bmdzLgotCi0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAgKF9ld2tfdmlld19w
cml2X25ldyk6Ci0KLTIwMTItMTEtMTYgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RA
Z21haWwuY29tPgotCi0gICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMzQ2OTQuCi0g
ICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzEzNDY5NAotICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAyNDgxCi0KLSAgICAgICAg
aXQgbWFkZSBBUEkgdGVzdCBjcmFzaCBvbiBFRkwgcG9ydCAoUmVxdWVzdGVkIGJ5IGd5dXlvdW5n
IG9uCi0gICAgICAgICN3ZWJraXQpLgotCi0gICAgICAgICogRGVmYXVsdFRoZW1lL2RlZmF1bHQu
ZWRjOgotCi0yMDEyLTExLTE1ICBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbiAgPGtlbm5ldGhA
d2Via2l0Lm9yZz4KLQotICAgICAgICBSZW5hbWUgbWVtYmVyIHZhcnMgaW4gVmlld3BvcnRBcmd1
bWVudCB0byBtYXRjaCBjc3MtZGV2aWNlLWFkYXB0Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDIzNTUKLQotICAgICAgICBSZXZpZXdlZCBieSBHeXV5
b3VuZyBLaW0uCi0KLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoX2V3a192
aWV3X3ByaXZfbmV3KTogVXBkYXRlIHRvIHJlZmxlY3QgbmFtZSBjaGFuZ2UuCi0KLTIwMTItMTEt
MTUgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBV
bnJldmlld2VkLiBGaXggYnVpbGQgYnJlYWsgd2hlbiB1c2luZyAtLW5vLXRpbGVkLWJhY2tpbmct
c3RvcmUgb3B0aW9uLgotCi0gICAgICAgICogZXdrL2V3a19mcmFtZV9wcml2YXRlLmg6Ci0gICAg
ICAgIChXZWJDb3JlKToKLQotMjAxMi0xMS0xNCAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lAZ21h
aWwuY29tPgotCi0gICAgICAgIFtFRkxdIFBvcnQgdGlsZWQgYmFja2luZyBzdG9yZQotICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzEzNTIKLQotICAgICAg
ICBSZXZpZXdlZCBieSBHeXV5b3VuZyBLaW0uCi0KLSAgICAgICAgQWRkZWQgZXdrX3ZpZXdfc2V0
dGluZ190aWxlZF9iYWNraW5nX3N0b3JlX2VuYWJsZWRfe2dldHxzZXR9IHRvIGdpdmUgcG9zc2li
aWxpdHkKLSAgICAgICAgdG8gdXNlIFdlYkNvcmUncyB0aWxlZCBiYWNraW5nIHN0b3JlIGluIFdl
YktpdC9FZmwgcG9ydC4gVGhpcyBtYWtlcyBXZWJLaXQvRWZsCi0gICAgICAgIGNvbXBsaWFudCB3
aXRoIFdlYktpdCdzIGdlbmVyaWMgc29sdXRpb24gb2YgdGlsZWQgYmFja2luZyBzdG9yZS4KLQot
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChX
ZWJDb3JlOjpDaHJvbWVDbGllbnRFZmw6OmludmFsaWRhdGVSb290Vmlldyk6Ci0gICAgICAgIChX
ZWJDb3JlKToKLSAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEVmbDo6dmlzaWJsZVJlY3RG
b3JUaWxlZEJhY2tpbmdTdG9yZSk6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xp
ZW50RWZsLmg6Ci0gICAgICAgIChDaHJvbWVDbGllbnRFZmwpOgotICAgICAgICAqIGV3ay9ld2tf
ZnJhbWVfcHJpdmF0ZS5oOgotICAgICAgICBEZWNsYXJlZCBtaXNzaW5nIGNsYXNzZXMgd2hpY2gg
dXNlZCBpbiB0aGlzIGZpbGUuCi0gICAgICAgICogZXdrL2V3a19wYWludF9jb250ZXh0LmNwcDoK
LSAgICAgICAgKGV3a19wYWludF9jb250ZXh0X3BhaW50KTogSW1wbGVtZW50ZWQgdG8gcGFpbnQg
dGlsZWQgYmFja2luZyBzdG9yZQotICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAg
IChld2tfdmlld19zZXR0aW5nX3RpbGVkX2JhY2tpbmdfc3RvcmVfZW5hYmxlZF9zZXQpOgotICAg
ICAgICBBZGRlZCBBUEkgdG8gZW5hYmxlL2Rpc2FibGUgdGhlIFdlYkNvcmUncyB0aWxlZCBiYWNr
aW5nIHN0b3JlLgotICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ190aWxlZF9iYWNraW5nX3N0b3Jl
X2VuYWJsZWRfZ2V0KToKLSAgICAgICAgQWRkZWQgQVBJIHRvIHF1ZXJ5IGlmIHRoZSBXZWJDb3Jl
J3MgdGlsZWQgYmFja2luZyBzdG9yZSBpcyBlbmFibGVkLgotICAgICAgICAoZXdrX3ZpZXdfdGls
ZWRfYmFja2luZ19zdG9yZV9pbnZhbGlkYXRlKToKLSAgICAgICAgKiBld2svZXdrX3ZpZXcuaDoK
LSAgICAgICAgKiBld2svZXdrX3ZpZXdfcHJpdmF0ZS5oOgotICAgICAgICAqIGV3ay9ld2tfdmll
d19zaW5nbGUuY3BwOgotICAgICAgICAoX2V3a192aWV3X3NpbmdsZV9zbWFydF9yZXBhaW50c19w
cm9jZXNzKToKLSAgICAgICAgSW1wbGVtZW50ZWQgdG8gdXBkYXRlIHZpc2libGUgYXJlYSBvZiB0
aWxlZCBiYWNraW5nIHN0b3JlLgotICAgICAgICAqIHRlc3RzL3Rlc3RfZXdrX3ZpZXcuY3BwOiBB
ZGRlZCB0ZXN0IGNhc2Ugb2YgZXdrX3ZpZXdfc2V0dGluZ190aWxlZF9iYWNraW5nX3N0b3JlLgot
ICAgICAgICAoVEVTVF9GKToKLQotMjAxMi0xMS0xNCAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lA
Z21haWwuY29tPgotCi0gICAgICAgIFtFRkxdIFJlZmFjdG9yIHRoZW1lIHRvIGNob29zZSB3aGV0
aGVyIHRvIHN1cHBvcnQgZm9yZWdyb3VuZCBjb2xvciBvZiBzZWxlY3Rpb24KLSAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjAzNwotCi0gICAgICAgIFJl
dmlld2VkIGJ5IEd5dXlvdW5nIEtpbS4KLQotICAgICAgICAqIERlZmF1bHRUaGVtZS9kZWZhdWx0
LmVkYzoKLSAgICAgICAgUmVmYWN0b3JlZCBjb2xvciBjbGFzc2VzIGZyb20gYWN0aXZlL2luYWN0
aXZlIHRvIGZvcmVncm91bmQvYmFja2dyb3VuZC4KLQotMjAxMi0xMS0xMiAgS3l1bmdUYWUgS2lt
ICA8a3RmLmtpbUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBbRUZMXSBJbiBld2tfdGlsZWRfYmFj
a2luZ19zdG9yZV9wcmVfcmVuZGVyX3JlZ2lvbiwgdGhlICdzbGljZXInIG1heSBiZSB1bmluaXRp
YWxpemVkCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MDIwMzgKLQotICAgICAgICBSZXZpZXdlZCBieSBHeXV5b3VuZyBLaW0uCi0KLSAgICAgICAgVG8g
Zml4IGJ1aWxkIHdhcm5pbmcgLVd1bmluaXRpYWxpemVkLAotICAgICAgICBpbml0aWFsaXplIHRo
ZSAnc2xpY2VyJyBpbiBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVfcmVuZGVyX3JlZ2lvbi4K
LQotICAgICAgICAqIGV3ay9ld2tfdGlsZWRfYmFja2luZ19zdG9yZS5jcHA6Ci0gICAgICAgIChl
d2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVfcmVuZGVyX3JlZ2lvbik6Ci0KLTIwMTItMTEtMDkg
IFJhcGhhZWwgS3VibyBkYSBDb3N0YSAgPHJhcGhhZWwua3Viby5kYS5jb3N0YUBpbnRlbC5jb20+
Ci0KLSAgICAgICAgW0VGTF1bRFJUXSBGb3JjZSBhIHJlcGFpbnQgYmVmb3JlIHRyYWNraW5nIHJl
cGFpbnQgcmVjdHMuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMDE3NDMKLQotICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlh
bnNlbi4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVm
bC5jcHA6Ci0gICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OmZvcmNlTGF5b3V0KTog
QWRkZWQuCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZs
Lmg6Ci0KLTIwMTItMTEtMDcgIEVtaWwgQSBFa2x1bmQgIDxlYWVAY2hyb21pdW0ub3JnPgotCi0g
ICAgICAgIFVucmV2aWV3ZWQgRUZMIGJ1aWxkIGZpeC4KLQotICAgICAgICAqIGV3ay9ld2tfdmll
dy5jcHA6Ci0KLTIwMTItMTEtMDEgIFNlb25hZSBLaW0gIDxzdW5hZWx1di5raW1Ac2Ftc3VuZy5j
b20+Ci0KLSAgICAgICAgW0VGTF1bRFJUXSBTdXBwb3J0IEdlb2xvY2F0aW9uCi0gICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzQyNwotCi0gICAgICAgIFJl
dmlld2VkIGJ5IEd5dXlvdW5nIEtpbS4gCi0KLSAgICAgICAgSW1wbGVtZW50IG1ldGhvZHMgdG8g
dXNlIEdlb2xvY2F0aW9uQ2xpZW50TW9jayBpbiBEdW1wUmVuZGVyVHJlZS4KLSAgICAgICAgVGhp
cyBjbGllbnQgYXR0YWNoZXMgdG8gdGhlIHBhZ2Ugd2hlbmV2ZXIgYSB2aWV3IGlzIGNyZWF0ZWQu
Ci0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3Bw
OgotICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjphdHRhY2hDbGllbnRUb1BhZ2Up
OgotICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpyZXNldEdlb2xvY2F0aW9uQ2xp
ZW50TW9jayk6Ci0gICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OnNldE1vY2tHZW9s
b2NhdGlvblBlcm1pc3Npb24pOgotICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpz
ZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbik6Ci0gICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBv
cnRFZmw6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uVW5hdmFpbGFibGVFcnJvcik6Ci0gICAg
ICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6Om51bWJlck9mUGVuZGluZ0dlb2xvY2F0aW9u
UGVybWlzc2lvblJlcXVlc3RzKToKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVy
VHJlZVN1cHBvcnRFZmwuaDoKLQotMjAxMi0xMC0zMSAgTWljaGHFgiBQYWt1xYJhIHZlbCBSdXRr
YSAgPG0ucGFrdWxhQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxdW0RSVF0gRXZlbnRTZW5k
ZXIgcmVxdWlyZXMgY29udGV4dENsaWNrIGltcGxlbWVudGF0aW9uCi0gICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NjA5MQotCi0gICAgICAgIFJldmlld2Vk
IGJ5IEd5dXlvdW5nIEtpbS4KLQotICAgICAgICBBZGQgYSBwb2ludGVyIHRvIHBhcmVudCBtZW51
IGluIEV3a19Db250ZXh0X01lbnVfSXRlbSBhbmQgYSBnZXR0ZXIKLSAgICAgICAgZnVuY3Rpb24g
dG8gYWxsb3cgc2VsZWN0aW5nIGEgY29udGV4dCBtZW51IGl0ZW0gd2l0aG91dCBoYXZpbmcKLSAg
ICAgICAgcGFyZW50IG1lbnUgcG9pbnRlciBpbiBEdW1wUmVuZGVyVHJlZSBFdmVudFNlbmRlci4K
LSAgICAgICAgVGhyZWUgdW5pdCB0ZXN0cyBhZGRlZCBkdWUgZXdrIEFQSSBjaGFuZ2VzLgotCi0g
ICAgICAgICogZXdrL2V3a19jb250ZXh0bWVudS5jcHA6Ci0gICAgICAgIChfRXdrX0NvbnRleHRf
TWVudV9JdGVtKToKLSAgICAgICAgKGV3a19jb250ZXh0X21lbnVfaXRlbV9uZXcpOgotICAgICAg
ICAoZXdrX2NvbnRleHRfbWVudV9pdGVtX3BhcmVudF9nZXQpOgotICAgICAgICAoZXdrX2NvbnRl
eHRfbWVudV9pdGVtX2FwcGVuZCk6Ci0gICAgICAgICogZXdrL2V3a19jb250ZXh0bWVudS5oOgot
ICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChld2tfdmlld19jb250ZXh0X21l
bnVfZ2V0KToKLSAgICAgICAgKiBld2svZXdrX3ZpZXcuaDoKLSAgICAgICAgKiB0ZXN0cy90ZXN0
X2V3a19jb250ZXh0bWVudS5jcHA6IEFkZGVkLgotICAgICAgICAoVEVTVF9GKToKLSAgICAgICAg
KiB0ZXN0cy90ZXN0X2V3a192aWV3LmNwcDoKLSAgICAgICAgKFRFU1RfRik6Ci0KLTIwMTItMTAt
MzAgIFNlb2tqdSBLd29uICA8c2Vva2p1Lmt3b25Ac2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW0VG
TF0gRml4IGZhaWx1cmUgdG8gaGlnaGxpZ2h0IG5vZGVzIG9uIHdlYiBpbnNwZWN0b3IKLSAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDMwMwotCi0gICAg
ICAgIFJldmlld2VkIGJ5IEd5dXlvdW5nIEtpbS4KLQotICAgICAgICBJdCBpcyBub3Qgd29ya2lu
ZyB0byBoaWdobGlnaHQgbm9kZXMgb24gd2ViIGluc3BlY3RvcgotICAgICAgICB3aGVuIHVzaW5n
ICdTaW5nbGUgQmFja2luZyBTdG9yZScuCi0gICAgICAgIEFkZCBjb2RlIGZvciBkcmF3aW5nIGl0
IGlmIHRoZXJlIGlzIHRoZSBoaWdobGlnaHRlZCBub2RlLgotCi0gICAgICAgICogZXdrL2V3a192
aWV3X3NpbmdsZS5jcHA6Ci0gICAgICAgIChfZXdrX3ZpZXdfc2luZ2xlX3NtYXJ0X3JlcGFpbnRz
X3Byb2Nlc3MpOgotCi0yMDEyLTEwLTMwICBKaW53b28gU29uZyAgPGppbndvbzcuc29uZ0BzYW1z
dW5nLmNvbT4KLQotICAgICAgICBbRUZMXSBSZWZhY3RvciB0b29sdGlwIGNhbGxiYWNrIHNpZ25h
bCBpbiBXZWJLaXQxCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMDA1NzEKLQotICAgICAgICBSZXZpZXdlZCBieSBHeXV5b3VuZyBLaW0uCi0KLSAgICAg
ICAgU2VwYXJhdGUgdG9vbHRpcCBjYWxsYmFjayBzaWduYWwgaW50byAndG9vbHRpcCx0ZXh0LHNl
dCcKLSAgICAgICAgYW5kICd0b29sdGlwLHRleHQsdW5zZXQnIHRvIGJlIGNvbnNpc3RlbnQgd2l0
aCBXZWJLaXQyLgotCi0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAgKGV3a192
aWV3X3Rvb2x0aXBfdGV4dF9zZXQpOgotICAgICAgICAqIGV3ay9ld2tfdmlldy5oOgotCi0yMDEy
LTEwLTI2ICBIeW93b24gS2ltICA8aHcxMDA4LmtpbUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBb
VGV4bWFwXVtFRkxdIEltcGxlbWVudGF0aW9uIG9mIEFDIHJlbGF0ZWQgZnVuY3Rpb25zIGluIENo
cm9tZUNsaWVudEVmbCBhbmQgZXdrVmlldy4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTgyMzE1Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBS
b2hkZSBDaHJpc3RpYW5zZW4uCi0KLSAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIGFjY2Vs
ZXJhdGVkLWNvbXBvc2l0aW5nLXJlbGF0ZWQgZnVuY3Rpb25zCi0gICAgICAgIHRvIGVudGVyIGFj
Y2VsZXJhdGVkLWNvbXBvc2l0aW5nIG1vZGUgYW5kIHN5bmMgbGF5ZXJzIAotICAgICAgICBpbiBD
aHJvbWVDbGllbnRFZmwgYW5kIGV3a1ZpZXcuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9D
aHJvbWVDbGllbnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZsOjph
dHRhY2hSb290R3JhcGhpY3NMYXllcik6Ci0gICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRF
Zmw6OnNldE5lZWRzT25lU2hvdERyYXdpbmdTeW5jaHJvbml6YXRpb24pOgotICAgICAgICAoV2Vi
Q29yZTo6Q2hyb21lQ2xpZW50RWZsOjpzY2hlZHVsZUNvbXBvc2l0aW5nTGF5ZXJGbHVzaCk6Ci0g
ICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRFZmw6OmFsbG93ZWRDb21wb3NpdGluZ1RyaWdn
ZXJzKToKLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoX0V3a19WaWV3X1By
aXZhdGVfRGF0YSk6Ci0gICAgICAgIChfZXdrX3ZpZXdfcHJpdl9uZXcpOgotICAgICAgICAoX2V3
a192aWV3X3ByaXZfZGVsKToKLSAgICAgICAgKF9ld2tfdmlld19hY2NlbGVyYXRlZF9jb21wb3Np
dGluZ19jYik6Ci0gICAgICAgIFN5bmMgYW5kIHJlbmRlciBsYXllcnMuCi0gICAgICAgIChfZXdr
X3ZpZXdfYWNjZWxlcmF0ZWRfY29tcG9zaXRpbmdfY29udGV4dF9jcmVhdGVfaWZfbmVlZGVkKToK
LSAgICAgICAgQ3JlYXRlIGEgbmV3IEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LgotICAg
ICAgICAoZXdrX3ZpZXdfYWNjZWxlcmF0ZWRfY29tcG9zaXRpbmdfb2JqZWN0X2NyZWF0ZSk6Ci0g
ICAgICAgIENyZWF0ZSBhIG5ldyBldmFzX2ltYWdlX29iamVjdCBhY3QgYXMgcmVuZGVyIHRhcmdl
dCBzdXJmYWNlLgotICAgICAgICAoZXdrX3ZpZXdfYWNjZWxlcmF0ZWRfY29tcG9zaXRpbmdfY29u
dGV4dF9nZXQpOgotICAgICAgICBSZXR1cm4gdGhlIEdyYXBoaWNzQ29udGV4dDNEIGZvciBhY2Nl
bGVyYXRlZCBjb21wb3NpdGluZy4gCi0gICAgICAgIChld2tfdmlld19yb290X2dyYXBoaWNzX2xh
eWVyX3NldCk6Ci0gICAgICAgIFNldCB0aGUgcm9vdCBsYXllciB0byBBY2NlbGVyYXRlZENvbXBv
c2l0aW5nQ29udGV4dC4KLSAgICAgICAgKGV3a192aWV3X21hcmtfZm9yX3N5bmMpOgotICAgICAg
ICBNYXJrIHRoZSBldmFzX2ltYWdlX29iamVjdCBmb3IgYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcg
YXMgZGlydHkgdG8gbWFrZSBpdCB1cGRhdGUuCi0gICAgICAgICogZXdrL2V3a192aWV3X3ByaXZh
dGUuaDoKLSAgICAgICAgKFdlYkNvcmUpOgotCi0yMDEyLTEwLTI0ICBCcmFkeSBFaWRzb24gIDxi
ZWlkc29uQGFwcGxlLmNvbT4KLQotICAgICAgICBBZGQgYSBzdHJhdGVneSBmb3IgbG9hZGVyIGN1
c3RvbWl6YXRpb24uCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMDAyNzgKLQotICAgICAgICBSZXZpZXdlZCBieSBBbGV4ZXkgUHJvc2t1cnlha292Lgot
Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzRWZsLmNwcDoKLSAg
ICAgICAgKFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6Y3JlYXRlTG9hZGVyU3RyYXRlZ3kpOgotICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0VmbC5oOgotICAgICAgICAo
UGxhdGZvcm1TdHJhdGVnaWVzRWZsKToKLQotMjAxMi0xMC0yMyAgQWxleGV5IFByb3NrdXJ5YWtv
diAgPGFwQGFwcGxlLmNvbT4KLQotICAgICAgICBBZGQgYSBzdHJhdGVneSBmb3Igc2hhcmVkIHdv
cmtlcnMKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEw
MDE2NQotCi0gICAgICAgIFJldmlld2VkIGJ5IEJyYWR5IEVpZHNvbi4KLQotICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0VmbC5jcHA6Ci0gICAgICAgIChQbGF0Zm9y
bVN0cmF0ZWdpZXNFZmw6OmNyZWF0ZVBhc3RlYm9hcmRTdHJhdGVneSk6Ci0gICAgICAgIChQbGF0
Zm9ybVN0cmF0ZWdpZXNFZmw6OmNyZWF0ZVNoYXJlZFdvcmtlclN0cmF0ZWd5KToKLSAgICAgICAg
KFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6Y3JlYXRlVmlzaXRlZExpbmtTdHJhdGVneSk6Ci0gICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzRWZsLmg6Ci0KLTIwMTItMTAt
MjMgIEh5b3dvbiBLaW0gIDxodzEwMDgua2ltQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtUZXht
YXBdW0VGTF0gQWRkIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0RWZsIHRvIHRoZSBidWls
ZCBzeXN0ZW0uCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD04ODYzMAotCi0gICAgICAgIFJldmlld2VkIGJ5IEd5dXlvdW5nIEtpbS4KLQotICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0RWZsLmNwcDogTW9k
aWZ5IHRoZSAjaW5jbHVkZSBmaWxlLgotCi0yMDEyLTEwLTIzICBBbmRyYXMgQmVjc2kgIDxhbmRy
YXMuYmVjc2lAZGlnaWEuY29tPgotCi0gICAgICAgIFJlbW92ZSBkZXZpY2VQaXhlbFJhdGlvIGZy
b20gVmlld3BvcnRBdHRyaWJ1dGVzCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05OTg0NQotCi0gICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCi0K
LSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoX2V3a192aWV3X3ZpZXdwb3J0
X2F0dHJpYnV0ZXNfY29tcHV0ZSk6Ci0gICAgICAgIFBhc3MgdGhlIGRldmljZSBwaXhlbCByYXRp
byBhcyBhIGZ1bmN0aW9uIGFyZ3VtZW50LgotCi0yMDEyLTEwLTIyICBSeXVhbiBDaG9pICA8cnl1
YW4uY2hvaUBnbWFpbC5jb20+Ci0KLSAgICAgICAgW0VGTF0gcGMgZmlsZXMgc2hvdWxkIHVzZSBE
QVRBX0lOU1RBTExfRElSIGZvciBkYXRhZGlyCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05OTk2MQotCi0gICAgICAgIFJldmlld2VkIGJ5IEd5dXlvdW5n
IEtpbS4KLQotICAgICAgICAqIGV3ZWJraXQucGMuaW46IFVzZWQgREFUQV9JTlNUQUxMX0RJUiBp
bnN0ZWFkIG9mIGhhcmRjb2RlZCBgc2hhcmVkL1hYWGAKLQotMjAxMi0xMC0yMiAgSm9jZWx5biBU
dXJjb3R0ZSAgPGpvY2VseW4udHVyY290dGVAZGlnaWEuY29tPgotCi0gICAgICAgIFtRdF0gRml4
ICJBU1NFUlRJT04gRkFJTEVEOiAhZG9jdW1lbnQtPmluUGFnZUNhY2hlKCkiIHdoZW4gbG9hZGlu
ZyBhIHBhZ2UKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTk4NTE0Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4u
Ci0KLSAgICAgICAgKiBld2svZXdrX2ZyYW1lLmNwcDoKLSAgICAgICAgKGV3a19mcmFtZV92aWV3
X2NyZWF0ZV9mb3Jfdmlldyk6Ci0KLTIwMTItMTAtMjEgIFNlb2tqdSBLd29uICA8c2Vva2p1Lmt3
b25Ac2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW0VGTF0gRml4IGZhaWx1cmUgdG8gYWNjZXNzIHRo
ZSBpbnNwZWN0b3IgcmVzb3VyY2VzCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05OTgxNgotCi0gICAgICAgIFJldmlld2VkIGJ5IEd5dXlvdW5nIEtpbS4K
LQotICAgICAgICBhY2Nlc3MoKSByZXR1cm5zIC0xLCBpZiBwYXRoIGhhcyBhIGZpbGUgcHJvdG9j
b2wgbGlrZSAiZmlsZTovLyIuCi0gICAgICAgIEFuZCBJIGhhdmUgcmVtb3ZlZCBpdCBmcm9tIHRo
ZSBmaXJzdCBhcmd1bWVudCBvZiBhY2Nlc3MoKS4KLSAgICAgICAgSWYgbm90LCBpbnNwZWN0b3JC
YXNlVVJMKCkgb3IgaW5zcGVjdG9yRmlsZXNQYXRoKCkgYWx3YXlzIHJldHVybnMgV0VCX0lOU1BF
Q1RPUl9ESVIuCi0gICAgICAgIFRoZW4gYWxsIGxheW91dCB0ZXN0IHJlbGF0ZWQgdG8gaW5zcGVj
dG9yIGNhbiBmYWlsIGFmdGVyIGluc3RhbGxpbmcgd2Via2l0IHBhY2thZ2UuCi0KLSAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yQ2xpZW50RWZsOjppbnNwZWN0b3JGaWxlc1BhdGgpOgotCi0yMDEyLTEwLTIw
ICBSYXBoYWVsIEt1Ym8gZGEgQ29zdGEgIDxyYXBoYWVsLmt1Ym8uZGEuY29zdGFAaW50ZWwuY29t
PgotCi0gICAgICAgIFtFRkxdW0RSVF0gSW1wbGVtZW50IHRyYWNraW5nIGFuZCBwYWludGluZyBy
ZXBhaW50IHJlY3RhbmdsZXMuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05OTgzOAotCi0gICAgICAgIFJldmlld2VkIGJ5IEd5dXlvdW5nIEtpbS4KLQot
ICAgICAgICBBZGQgdGhlIHJlcXVpcmVkIER1bXBSZW5kZXJUcmVlU3VwcG9ydCBwbHVtYmluZyBm
dW5jdGlvbnMgdG8KLSAgICAgICAgaW50ZXJhY3Qgd2l0aCBGcmFtZVZpZXcgYW5kIHRyYWNrL29i
dGFpbiByZXBhaW50IHJlY3RhbmdsZXMgZm9yCi0gICAgICAgIER1bXBSZW5kZXJUcmVlLgotCi0g
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcDoKLSAg
ICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6c2V0U2VsZWN0VHJhaWxpbmdXaGl0ZXNw
YWNlRW5hYmxlZCk6Ci0gICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OnNldFRyYWNr
c1JlcGFpbnRzKToKLSAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6cmVzZXRUcmFj
a2VkUmVwYWludHMpOgotICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjppc1RyYWNr
aW5nUmVwYWludHMpOgotICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjp0cmFja2Vk
UmVwYWludFJlY3RzKToKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1
cHBvcnRFZmwuaDoKLQotMjAxMi0xMC0xOCAgS2FuZ2lsIEhhbiAgPGthbmdpbC5oYW5Ac2Ftc3Vu
Zy5jb20+Ci0KLSAgICAgICAgW0VGTF0gQWRkIHVuaXQgdGVzdCBmb3IgZXdrX2ZyYW1lX3NvdXJj
ZV9nZXQuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05
NTk4NAotCi0gICAgICAgIFJldmlld2VkIGJ5IEd5dXlvdW5nIEtpbS4KLQotICAgICAgICBBZGQg
dGhyZWUgdW5pdCB0ZXN0IGNhc2VzIHRvIHZlcmlmeSBld2tfZnJhbWVfc291cmNlX2dldCBmdW5j
dGlvbi4KLSAgICAgICAgQWRkaXRpb25hbGx5LCBpbnNlcnQgY29kZSB0byBjaGVjayBpZiB1cmkg
ZXhpc3RzIGluIG9yZGVyIHRvIHJldHVybiBlcnJvciBzaW5jZSB2aWV3IGl0c2VsZiBoYXMgYmxh
bmsgaHRtbC4KLQotICAgICAgICAqIGV3ay9ld2tfZnJhbWUuY3BwOgotICAgICAgICAoZXdrX2Zy
YW1lX3NvdXJjZV9nZXQpOgotICAgICAgICAqIHRlc3RzL3Rlc3RfZXdrX2ZyYW1lLmNwcDogQWRk
ZWQuCi0gICAgICAgIChpbml0QnVmZmVyKToKLSAgICAgICAgKFRFU1RfRik6Ci0KLTIwMTItMTAt
MTcgIEJ5dW5nd29vIExlZSAgPGJ3ODAubGVlQHNhbXN1bmcuY29tPgotCi0gICAgICAgIEZpeCBi
dWlsZCB3YXJuaW5ncyA6IC1XdW51c2VkLXBhcmFtZXRlciwgLVd1bnVzZWQtdmFyaWFibGUKLSAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk5NTM5Ci0KLSAg
ICAgICAgUmV2aWV3ZWQgYnkgS2VudGFybyBIYXJhLgotCi0gICAgICAgIEZpeCBidWlsZCB3YXJu
aW5ncyBhYm91dCB1bnVzZWQgcGFyYW1ldGVyIG9yIHVudXNlZCB2YXJpYWJsZSB3aGVuCi0gICAg
ICAgIFdURl9VU0VfVElMRURfQkFDS0lOR19TVE9SRSBvcHRpb24gaXMgZW5hYmxlZC4KLQotICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJD
b3JlOjpDaHJvbWVDbGllbnRFZmw6OmF0dGFjaFJvb3RHcmFwaGljc0xheWVyKToKLSAgICAgICAg
KFdlYkNvcmU6OkNocm9tZUNsaWVudEVmbDo6ZGVsZWdhdGVkU2Nyb2xsUmVxdWVzdGVkKToKLQot
MjAxMi0xMC0xNyAgQnl1bmd3b28gTGVlICA8Ync4MC5sZWVAc2Ftc3VuZy5jb20+Ci0KLSAgICAg
ICAgW0VGTF0gQWRkIGJhY2tncm91bmQgY29sb3IgdG8gdGhlIGNoZWNrYm94IHRoZW1lLgotICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg3ODgKLQotICAg
ICAgICBSZXZpZXdlZCBieSBHeXV5b3VuZyBLaW0uCi0KLSAgICAgICAgQmFja2dyb3VuZCBjb2xv
ciBpcyBhZGRlZCB0byB0aGUgY2hlY2tib3ggdGhlbWUgZm9yIGlkZW50aWZ5aW5nCi0gICAgICAg
IGNoZWNrYm94IHN0YXR1cyBlYXNpbHkuCi0KLSAgICAgICAgQ2hlY2tib3ggdGhlbWUgdXNlcyBp
bWFnZXMgd2hpY2ggaGFzIHRyYW5zcGFyZW50IGJhY2tncm91bmQsIGFuZCB0aGUKLSAgICAgICAg
dGhlbWUgaXRzZWxmIGRvZXNuJ3QgaGF2ZSB0aGUgYmFja2dyb3VuZCBjb2xvci4KLQotICAgICAg
ICBXaGVuIHRoZSBiYWNrZ3JvdW5kIG9mIGNoZWNrYm94IGlzIGJsYWNrLCBjaGVja2VkL3VuY2hl
Y2tlZCBzdGF0dXMKLSAgICAgICAgY2Fubm90IGJlIGRpc3Rpbmd1aXNoZWQgYmVjYXVzZSBjaGVj
ayBtYXJrIGNvbG9yIGlzIGJsYWNrLgotCi0gICAgICAgIEFuZCBpdCBpcyBoYXJkIHRvIGlkZW50
aWZ5IHdoZXRoZXIgdGhlIGNoZWNrYm94IGlzIGRpc2FibGVkIG9yIG5vdCwKLSAgICAgICAgYmVj
YXVzZSB0aGVyZSBpcyBubyBiYWNrZ3JvdW5kIGNvbG9yIGluIHRoZSBjaGVja2JveCB0aGVtZS4K
LQotICAgICAgICBJbnN0ZWFkIG9mIGFkZGluZyBiYWNrZ3JvdW5kIGNvbG9yIHRvIHRoZSBlZGMg
c2NyaXB0LCBiYWNrZ3JvdW5kCi0gICAgICAgIGltYWdlcyBhcmUgYWRkZWQgYmVjYXVzZSB0aGUg
c2hhcGUgb2YgdGhlIGNoZWNrIGJveCBjYW4gYmUgdmFyaW91cy4KLQotICAgICAgICAqIERlZmF1
bHRUaGVtZS93aWRnZXQvY2hlY2svY2hlY2suZWRjOgotICAgICAgICAqIERlZmF1bHRUaGVtZS93
aWRnZXQvY2hlY2svaW1nX2NoZWNrX2JnX2VuYWJsZWQucG5nOiBBZGRlZC4KLSAgICAgICAgKiBE
ZWZhdWx0VGhlbWUvd2lkZ2V0L2NoZWNrL2ltZ19jaGVja19iZ19kaXNhYmxlZC5wbmc6IEFkZGVk
LgotCi0yMDEyLTEwLTE3ICBCeXVuZ3dvbyBMZWUgIDxidzgwLmxlZUBzYW1zdW5nLmNvbT4KLQot
ICAgICAgICBbRUZMXSBBZGQgYmFja2dyb3VuZCBjb2xvciB0byB0aGUgcmFkaW8gYnV0dG9uIHRo
ZW1lLgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg4
NTIKLQotICAgICAgICBSZXZpZXdlZCBieSBHeXV5b3VuZyBLaW0uCi0KLSAgICAgICAgQmFja2dy
b3VuZCBjb2xvciBpcyBhZGRlZCB0byB0aGUgcmFkaW8gYnV0dG9uIHRoZW1lIGZvciBpZGVudGlm
eWluZwotICAgICAgICByYWRpbyBidXR0b24gc3RhdHVzIGVhc2lseS4KLQotICAgICAgICBSYWRp
byBidXR0b24gdGhlbWUgdXNlcyBpbWFnZXMgd2hpY2ggaGFzIHRyYW5zcGFyZW50IGJhY2tncm91
bmQuCi0KLSAgICAgICAgV2hlbiB0aGUgYmFja2dyb3VuZCBvZiByYWRpbyBidXR0b24gaXMgYmxh
Y2ssIGNoZWNrZWQvdW5jaGVja2VkIHN0YXR1cwotICAgICAgICBjYW5ub3QgYmUgZGlzdGluZ3Vp
c2hlZCBiZWNhdXNlIGNoZWNrIG1hcmsgY29sb3IgaXMgYmxhY2suCi0KLSAgICAgICAgQW5kIGl0
IGlzIGhhcmQgdG8gaWRlbnRpZnkgd2hldGhlciB0aGUgcmFkaW8gYnV0dG9uIGlzIGRpc2FibGVk
IG9yIG5vdCwKLSAgICAgICAgYmVjYXVzZSB0aGVyZSBpcyBubyBiYWNrZ3JvdW5kIGNvbG9yIGlu
IHRoZSByYWRpbyBidXR0b24gdGhlbWUuCi0KLSAgICAgICAgKiBEZWZhdWx0VGhlbWUvd2lkZ2V0
L3JhZGlvL2ltZ19yYWRpb19iZ19kaXNhYmxlZC5wbmc6IEFkZGVkLgotICAgICAgICAqIERlZmF1
bHRUaGVtZS93aWRnZXQvcmFkaW8vaW1nX3JhZGlvX2JnX2VuYWJsZWQucG5nOiBBZGRlZC4KLSAg
ICAgICAgKiBEZWZhdWx0VGhlbWUvd2lkZ2V0L3JhZGlvL3JhZGlvLmVkYzoKLQotMjAxMi0xMC0x
NSAgQ2hyaXN0b3BoZSBEdW1leiAgPGNocmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgotCi0gICAg
ICAgIFtFRkxdW1dLMl0gSW1wbGVtZW50IEZhdmljb25zIEFQSQotICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTkwODcKLQotICAgICAgICBSZXZpZXdlZCBi
eSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KLQotICAgICAgICBSZW1vdmUgZXdrX3V0aWwg
bm93IHRoYXQgaXRzIGNvZGUgaGFzIGJlZW4gbW92ZWQKLSAgICAgICAgdG8gQ2Fpcm9VdGlsaXRp
ZXNFZmwgaW4gV2ViQ29yZS4KLQotICAgICAgICAqIGV3ay9ld2tfaGlzdG9yeS5jcHA6Ci0gICAg
ICAgIChld2tfaGlzdG9yeV9pdGVtX2ljb25fb2JqZWN0X2FkZCk6Ci0gICAgICAgICogZXdrL2V3
a19zZXR0aW5ncy5jcHA6Ci0gICAgICAgIChld2tfc2V0dGluZ3NfaWNvbl9kYXRhYmFzZV9pY29u
X29iamVjdF9nZXQpOgotCi0yMDEyLTEwLTE1ICBEb25nd29vIEpvc2h1YSBJbSAgPGR3LmltQHNh
bXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxdIFNldCB0aGUgYmFzZXBhdGggb2YgdGhlIEZpbGUg
U3lzdGVtIEFQSS4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTk4MzQ0Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgR3l1eW91bmcgS2ltLgotCi0gICAgICAg
IFNldCB0aGUgYmFzZXBhdGggb2YgdGhlIEZpbGUgU3lzdGVtIEFQSSB1c2luZyB0aGUgaW50ZXJu
YWwgc2V0dGVyIGZ1bmN0aW9uLgotCi0gICAgICAgICogZXdrL2V3a19tYWluLmNwcDoKLSAgICAg
ICAgKF9ld2tfaW5pdF9ib2R5KTogQ2FsbCB0aGUgc2V0dGVyIGZ1bmN0aW9uIHdpdGggdGhlIGRl
ZmF1bHQgcGF0aC4KLSAgICAgICAgKiBld2svZXdrX3NldHRpbmdzLmNwcDoKLSAgICAgICAgKGV3
a19zZXR0aW5nc19maWxlX3N5c3RlbV9wYXRoX3NldCk6IFNldCB0aGUgZ2l2ZW4gcGF0aCBhcyB0
aGUgYmFzZSBwYXRoIG9mIHRoZSBmaWxlIHN5c3RlbS4KLSAgICAgICAgKiBld2svZXdrX3NldHRp
bmdzX3ByaXZhdGUuaDogQWRkIGV3a19zZXR0aW5nc19maWxlX3N5c3RlbV9wYXRoX3NldC4KLQot
MjAxMi0xMC0xNCAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgotCi0gICAgICAgIE1ha2Ug
VXNlclNjcmlwdCBhbmQgVXNlclN0eWxlU2hlZXQgdmFsdWUgb2JqZWN0cyB0aGF0IGFyZSBjb3B5
YWJsZQotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTky
NzUKLQotICAgICAgICBSZXZpZXdlZCBieSBUaW0gSG9ydG9uLgotCi0gICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcDoKLSAgICAgICAgKER1bXBSZW5k
ZXJUcmVlU3VwcG9ydEVmbDo6YWRkVXNlclNjcmlwdCk6Ci0gICAgICAgIChEdW1wUmVuZGVyVHJl
ZVN1cHBvcnRFZmw6OmFkZFVzZXJTdHlsZVNoZWV0KToKLSAgICAgICAgVXBkYXRlIGZvciBuZXcg
UGFnZUdyb3VwIGZ1bmN0aW9uIHNpZ25hdHVyZXMuCi0KLTIwMTItMTAtMTEgIEd5dXlvdW5nIEtp
bSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBbRUZMXSBSZW1vdmUgIndl
YiIgd29yZCBpbiB3ZWIgaW5zcGVjdG9yCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD05ODcyNAotCi0gICAgICAgIFJldmlld2VkIGJ5IExhc3psbyBHb21i
b3MuCi0KLSAgICAgICAgKndlYiogd29yZCBpcyByZWR1bmRhbnQgaW4gd2ViIGluc3BlY3Rvci4g
QmVzaWRlIHIxMzA0OTQgYW5kIHIxMzA0NzkgcmVtb3ZlZCAqd2ViKiBmcm9tIEVGTCBXSzIuCi0K
LSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRFZmwuY3BwOgotICAgICAg
ICAoV2ViQ29yZTo6bm90aWZ5SW5zcGVjdG9yRGVzdHJveSk6Ci0gICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JDbGllbnRFZmw6Om9wZW5JbnNwZWN0b3JGcm9udGVuZCk6Ci0gICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudEVmbDo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRF
ZmwpOgotICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRFZmw6On5JbnNw
ZWN0b3JGcm9udGVuZENsaWVudEVmbCk6Ci0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAg
ICAgICAgKGV3a192aWV3X2luc3BlY3Rvcl9zaG93KToKLSAgICAgICAgKGV3a192aWV3X2luc3Bl
Y3Rvcl9jbG9zZSk6Ci0gICAgICAgIChld2tfdmlld19pbnNwZWN0b3Jfdmlld19nZXQpOgotICAg
ICAgICAoZXdrX3ZpZXdfaW5zcGVjdG9yX3ZpZXdfc2V0KToKLSAgICAgICAgKiBld2svZXdrX3Zp
ZXcuaDoKLQotMjAxMi0xMC0xMCAgSm9uIExlZSAgPGpvbmxlZUBhcHBsZS5jb20+Ci0KLSAgICAg
ICAgW1dLMl0gQWN0aXZhdGUgcGx1Z2lucyB3aGVuIHVzZXIgY2xpY2tzIG9uIHNuYXBzaG90Ci0g
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODMyOAotICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vMTI0MjY2ODE+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQnJh
ZHkgRWlkc29uLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRF
ZmwuaDoKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpyZWNyZWF0ZVBs
dWdpbik6IFN0dWIgaW1wbGVtZW50YXRpb24gb2YgcmVjcmVhdGVQbHVnaW4oKS4KLQotMjAxMi0x
MC0xMCAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW0VG
TF0gVXNlIGV3a192aWV3X3BhaW50IGluc3RlYWQgb2YgZXdrX3ZpZXdfcGFpbnRfY29udGVudHMg
aW4gZXdrX3ZpZXdfc2luZ2xlLgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9OTg3MTYKLQotICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENo
cmlzdGlhbnNlbi4KLQotICAgICAgICBld2tfdmlld19wYWludCBpcyB0aGUgd3JhcHBlciBvZiBT
Y3JvbGxWaWV3OjpwYWludCBhbmQKLSAgICAgICAgZXdrX3ZpZXdfcGFpbnRfY29udGVudHMgaXMg
dGhlIHdyYXBwZXIgb2YgRnJhbWVWaWV3OjpwYWludENvbnRlbnRzLgotCi0gICAgICAgIEJlY2F1
c2UgRnJhbWVWaWV3OjpwYWludENvbnRlbnRzIGp1c3QgZHJhdyBjb250ZW50cywKLSAgICAgICAg
ZXdrX3ZpZXdfc2luZ2xlIHNob3VsZCB1c2UgZXdrX3ZpZXdfcGFpbnQgaW5zdGVhZCBvZiBld2tf
dmlld19wYWludF9jb250ZW50cwotICAgICAgICBsaWtlIG90aGVyIHBvcnRzLgotCi0gICAgICAg
ICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAgKGV3a192aWV3X3BhaW50KToKLSAgICAgICAg
TW92ZWQgdXBkYXRlTGF5b3V0QW5kU3R5bGVJZk5lZWRlZFJlY3Vyc2l2ZSB0byBzaGFyZSBld2tf
dmlld19wYWludC4KLSAgICAgICAgKiBld2svZXdrX3ZpZXdfc2luZ2xlLmNwcDoKLSAgICAgICAg
KF9ld2tfdmlld19zaW5nbGVfc21hcnRfcmVwYWludHNfcHJvY2Vzcyk6Ci0gICAgICAgIE1vZGlm
aWVkIHRvIGNhbGwgZXdrX3ZpZXdfcGFpbnQuCi0KLTIwMTItMTAtMTAgIEphZWh1biBMaW0gIDxs
amFlaHVuLmxpbUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBbRUZMXSBVc2UgRXZhcyBmdW5jdGlv
biBpbnN0ZWFkIG9mIG1lbWNweQotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9OTg0ODMKLQotICAgICAgICBSZXZpZXdlZCBieSBHeXV5b3VuZyBLaW0uCi0K
LSAgICAgICAgRXZhcyBzdXBwb3J0cyBldmFzX29iamVjdF9pbWFnZV9kYXRhX2NvcHlfc2V0KCkg
dG8gY29weSByYXcgaW1hZ2UgZGF0YS4KLSAgICAgICAgQ2hhbmdlIG1lbWNweSgpIHdpdGggZXZh
c19vYmplY3RfaW1hZ2VfZGF0YV9jb3B5X3NldCgpLgotCi0gICAgICAgIFNwZWxsIG91dCB2YXJp
YWJsZSBuYW1lcyBhbmQgcmVmYWN0b3IgdmFyaWFibGUgZGVjbGFyYXRpb24gc3RhdGVtZW50cy4K
LQotICAgICAgICBObyBuZXcgdGVzdHMsIG5vIGZ1bmN0aW9uYWxpdHkgd2FzIGNoYW5nZWQuCi0K
LSAgICAgICAgKiBld2svZXdrX3V0aWwuY3BwOgotICAgICAgICAoZXdrX3V0aWxfaW1hZ2VfZnJv
bV9jYWlyb19zdXJmYWNlX2FkZCk6Ci0KLTIwMTItMTAtMDcgIENhaW8gTWFyY2VsbyBkZSBPbGl2
ZWlyYSBGaWxobyAgPGNhaW8ub2xpdmVpcmFAb3BlbmJvc3NhLm9yZz4KLQotICAgICAgICBSZW5h
bWUgZmlyc3Qvc2Vjb25kIHRvIGtleS92YWx1ZSBpbiBIYXNoTWFwIGl0ZXJhdG9ycwotICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODI3ODQKLQotICAgICAg
ICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1
bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHA6Ci0gICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBv
cnRFZmw6OmV2YWx1YXRlU2NyaXB0SW5Jc29sYXRlZFdvcmxkKToKLSAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNFZmwuY3BwOgotICAgICAgICAoUGxhdGZvcm1TdHJh
dGVnaWVzRWZsOjpnZXRQbHVnaW5JbmZvKToKLSAgICAgICAgKiBld2svZXdrX2ludGVudC5jcHA6
Ci0gICAgICAgIChld2tfaW50ZW50X2V4dHJhX2dldCk6Ci0KLTIwMTItMTAtMDUgIENocmlzdG9w
aGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KLQotICAgICAgICBbRUZMXSBG
aXggd2luZG93IHJlc2l6aW5nIC8gbW92aW5nIGluIFdLMSBhbmQgV0tUUgotICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg0ODYKLQotICAgICAgICBSZXZp
ZXdlZCBieSBHeXV5b3VuZyBLaW0uCi0KLSAgICAgICAgRml4IENocm9tZUNsaWVudEVmbDo6d2lu
ZG93UmVjdCgpIGNvZGUgdG8gdXNlCi0gICAgICAgIGVjb3JlX2V2YXNfcmVxdWVzdF9nZW9tZXRy
eV9nZXQoKSBpbnN0ZWFkIG9mCi0gICAgICAgIGV2YXNfb2JqZWN0X2dlb21ldHJ5X2dldCgpIGFu
ZCB0aGVyZWZvcmUgYXZvaWQKLSAgICAgICAgcmV0dXJuaW5nIGluY29ycmVjdCB2YWx1ZXMgd2hl
biB0aGUgZW5naW5lIGhhcwotICAgICAgICBub3QgcHJvY2Vzc2VkIGEgY2FsbCB0byBlY29yZV9l
dmFzX21vdmVfcmVzaXplKCkKLSAgICAgICAgeWV0LiBUaGlzIGZpeGVzIGEgY291cGxlIG9mIGxh
eW91dCB0ZXN0cy4KLQotICAgICAgICBUaGUgY29kZSB3YXMgYWxzbyByZWZhY3RvcmVkIGEgYml0
IGZvcgotICAgICAgICBjb25zaXN0ZW5jeSB3aXRoIHRoZSBXZWJLaXQyIEVGTCBpbXBsZW1lbnRh
dGlvbi4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHA6Ci0g
ICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRFZmw6OndpbmRvd1JlY3QpOgotICAgICAgICAo
V2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZsOjpzZXRXaW5kb3dSZWN0KToKLQotMjAxMi0xMC0wNCAg
U2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KLQotICAgICAgICBGaW5hbCBw
YXJ0IG9mICJzeW5jIiB0byAiZmx1c2giIHJlbmFtaW5nCi0gICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODQzMAotCi0gICAgICAgIFJldmlld2VkIGJ5IFRp
bSBIb3J0b24uCi0KLSAgICAgICAgQ2hhbmdlIG1ldGhvZCBuYW1lcyBvbiBHcmFwaGljc0xheWVy
IGFuZCBHcmFwaGljc0xheWVyQ2xpZW50IHRoYXQKLSAgICAgICAgcmVmZXIgdG8gInN5bmMiIHRv
IHVzZSB0aGUgdGVybSAiZmx1c2giIGluc3RlYWQsIHRvIGJlIGNvbnNpc3RlbnQKLSAgICAgICAg
d2l0aCB0aGUgcmVzdCBvZiB0aGUgY29kZS4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Fj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0RWZsLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkFj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjpzeW5jTGF5ZXJzTm93KToKLSAgICAgICAgKFdl
YkNvcmU6OkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjphdHRhY2hSb290R3JhcGhpY3NM
YXllcik6Ci0KLTIwMTItMTAtMDQgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5j
b20+Ci0KLSAgICAgICAgU3RhbmRhcmRpemUgb24gImZsdXNoIiB0ZXJtaW5vbG9neSBmb3IgY29t
cG9zaXRpbmcgbGF5ZXIgZmx1c2hpbmcvc3luY2luZwotICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTgzMjEKLQotICAgICAgICBSZXZpZXdlZCBieSBTaW1v
biBGcmFzZXIuCi0KLSAgICAgICAgUmVuYW1lIGNvbXBvc2l0aW5nLXJlbGF0ZWQgbWV0aG9kcyB0
aGF0IHJlZmVyIHRvICJzeW5jaW5nIiB0byBpbnN0ZWFkCi0gICAgICAgIHJlZmVyIHRvICJmbHVz
aGluZyIuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwOgot
ICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZsOjpzY2hlZHVsZUNvbXBvc2l0aW5nTGF5
ZXJGbHVzaCk6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmg6Ci0g
ICAgICAgIChDaHJvbWVDbGllbnRFZmwpOgotCi0yMDEyLTEwLTA0ICBDaHJpc3RvcGhlIER1bWV6
ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+Ci0KLSAgICAgICAgW0VGTF0gd2ViaW50ZW50
cy93ZWItaW50ZW50cy1mYWlsdXJlLmh0bWwgaXMgZmFpbGluZwotICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTgzNDkKLQotICAgICAgICBSZXZpZXdlZCBi
eSBHeXV5b3VuZyBLaW0uCi0KLSAgICAgICAgQWZ0ZXIgcjEzMDM0NCwgT3BhcXVlSlNTdHJpbmco
KS5zdHJpbmcoKSByZXR1cm5zCi0gICAgICAgIGFuIGVtcHR5IHN0cmluZyBpbnN0ZWFkIG9mIGEg
bnVsbCBvbmUuIFRoZXJlZm9yZSwKLSAgICAgICAgd2UgbmVlZCB0byB1cGRhdGUgdGhlIGNoZWNr
IGluCi0gICAgICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6c2VuZFdlYkludGVudFJlc3Bv
bnNlKCkuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRF
ZmwuY3BwOgotICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpzZW5kV2ViSW50ZW50
UmVzcG9uc2UpOgotCi0yMDEyLTEwLTA0ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5k
dW1lekBpbnRlbC5jb20+Ci0KLSAgICAgICAgUmVncmVzc2lvbihyMTMwMzYzKTogQnJva2UgdW5p
dCB0ZXN0cwotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTgzNDEKLQotICAgICAgICBSZXZpZXdlZCBieSBHeXV5b3VuZyBLaW0uCi0KLSAgICAgICAgRml4
IFdlYktpdEVGTCB1bml0IHRlc3RzIHRvIHVzZSBYMTEgYXMKLSAgICAgICAgd2VsbC4KLQotICAg
ICAgICAqIHRlc3RzL1VuaXRUZXN0VXRpbHMvRVdLVGVzdEJhc2UuY3BwOgotICAgICAgICAoRVdL
VW5pdFRlc3RzOjpFV0tUZXN0QmFzZTo6U2V0VXApOgotICAgICAgICAqIHRlc3RzL1VuaXRUZXN0
VXRpbHMvRVdLVGVzdEVudmlyb25tZW50Lmg6Ci0gICAgICAgIChFV0tUZXN0RW52aXJvbm1lbnQp
OgotICAgICAgICAqIHRlc3RzL1VuaXRUZXN0VXRpbHMvRVdLVGVzdFZpZXcuY3BwOgotICAgICAg
ICAoRVdLVW5pdFRlc3RzOjpFV0tUZXN0Vmlldzo6aW5pdCk6Ci0gICAgICAgICogdGVzdHMvVW5p
dFRlc3RVdGlscy9FV0tUZXN0Vmlldy5oOgotICAgICAgICAoRVdLVGVzdFZpZXcpOgotCi0yMDEy
LTEwLTAzICBSeXVhbiBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBb
RUZMXSBEZWZhdWx0LmVkaiBzaG91bGQgYmUgZ2VuZXJhdGVkIGFsdGhvdWdoIEVOQUJMRV9XRUJL
SVQgZGlzYWJsZWQuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD05Nzc1MwotCi0gICAgICAgIFJldmlld2VkIGJ5IExhc3psbyBHb21ib3MuCi0KLSAgICAg
ICAgZGVmYXVsdC5lZGogaXMgdXNlZCBpbiBib3RoIHdlYmtpdC9lZmwgYW5kIHdlYmtpdDIvZWZs
LgotICAgICAgICBIb3dldmVyLCBpdCBoYXMgYmVlbiBnZW5lcmF0ZWQgb25seSB3aGVuIEVOQUJM
RV9XRUJLSVQgaXMgZW5hYmxlZC4KLQotICAgICAgICBUaGlzIHBhdGNoIHNlcGFyYXRlcyB0aGUg
c2NyaXB0IHdoaWNoIGdlbmVyYXRlcyBkZWZhdWx0LmVkagotICAgICAgICBmcm9tIHNvdXJjZS93
ZWJraXQvcGxhdGZvcm1lZmwuY21ha2UuCi0KLSAgICAgICAgKiBEZWZhdWx0VGhlbWUvQ01ha2VM
aXN0cy50eHQ6Ci0gICAgICAgIEV4dHJhY3RlZCBmcm9tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm1F
ZmwuY21ha2UgYW5kIHNhbml0aXplZC4KLQotMjAxMi0xMC0wMyAgQ2hyaXN0b3BoZSBEdW1leiAg
PGNocmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgotCi0gICAgICAgIFtFRkxdIEVuYWJsZSB1c2Ug
b2YgWDExIGluIER1bXBSZW5kZXJUcmVlIC8gV2ViS2l0VGVzdFJ1bm5lcgotICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTgyMzEKLQotICAgICAgICBSZXZp
ZXdlZCBieSBHeXV5b3VuZyBLaW0uCi0KLSAgICAgICAgSW5pdGlhbGl6ZSBlY29yZV94IGxpYnJh
cnkgaW4gZXdrX21haW4gc2luY2UgaXQgaXMgdXNlZCBieQotICAgICAgICBXZWJLaXRFRkwuCi0K
LSAgICAgICAgKiBld2svZXdrX21haW4uY3BwOgotICAgICAgICAoZXdrX2luaXQpOgotICAgICAg
ICAoZXdrX3NodXRkb3duKToKLQotMjAxMi0xMC0wMyAgS2FuZ2lsIEhhbiAgPGthbmdpbC5oYW5A
c2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgRml4IHVudXNlZCBwYXJhbWV0ZXIgY29tcGlsZSB3YXJu
aW5ncy4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4
MjQzCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQWxleGV5IFByb3NrdXJ5YWtvdi4KLQotICAgICAg
ICBGaXhlZCB1bnVzZWQgcGFyYW1ldGVyIGNvbXBpbGUgd2FybmluZyBieSByZW1vdmluZyBwYWdl
IHBhcmFtZXRlciBuYW1lIGFuZCBVTlVTRURfUEFSQU0gdXNhZ2UuCi0KLSAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNFZmwuY3BwOgotICAgICAgICAoUGxhdGZvcm1T
dHJhdGVnaWVzRWZsOjpnZXRQbHVnaW5JbmZvKToKLQotMjAxMi0xMC0wMyAgSmlud29vIFNvbmcg
IDxqaW53b283LnNvbmdAc2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW0VGTF0gQ2hhbmdlIHRoZSBy
ZXZlcnNlZCBleHBlY3RlZCBhbmQgYWN0dWFsIHBhcmFtZXRlciBpbiBXZWJLaXQxIHVuaXQgdGVz
dHMKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4Mjc2
Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgTGFzemxvIEdvbWJvcy4KLQotICAgICAgICBFeHBlY3Rl
ZCB2YWx1ZSBzaG91bGQgYmUgYXQgZmlyc3QgYW5kIGFjdHVhbCB2YWx1ZSBiZSBmb2xsb3dlZCBp
biBBU1NFUlRfU1RSRVEoKS4KLQotICAgICAgICAqIHRlc3RzL3Rlc3RfZXdrX3ZpZXcuY3BwOgot
ICAgICAgICAoVEVTVF9GKToKLQotMjAxMi0xMC0wMiAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxj
Z2FyY2lhQGlnYWxpYS5jb20+Ci0KLSAgICAgICAgW0dUS10gQWRkIEFQSSB0byBnZXQgdGhlIHdl
YiB2aWV3IHRoYXQgaW5pdGlhdGVkIGEgY3VzdG9tIFVSSSByZXF1ZXN0IHRvIFdlYktpdDIgR1RL
KwotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTc4OTUK
LQotICAgICAgICBSZXZpZXdlZCBieSBNYXJ0aW4gUm9iaW5zb24uCi0KLSAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9GcmFtZU5ldHdvcmtpbmdDb250ZXh0RWZsLmNwcDoKLSAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTmV0d29ya2luZ0NvbnRleHRFZmw6OmluaXRpYXRpbmdQYWdlSUQpOiBTdHViCi0g
ICAgICAgIGltcGxlbWVudGF0aW9uLgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTmV0
d29ya2luZ0NvbnRleHRFZmwuaDoKLSAgICAgICAgKEZyYW1lTmV0d29ya2luZ0NvbnRleHRFZmwp
OiBBZGRlZC4KLQotMjAxMi0xMC0wMiAgS3J6eXN6dG9mIEN6ZWNoICA8ay5jemVjaEBzYW1zdW5n
LmNvbT4KLQotICAgICAgICBbRUZMXVtVVF0gUmVmYWN0b3JpbmcgYW4gaW1wbGVtZW50YXRpb24g
b2YgdGVzdGluZyBmcmFtZXdvcmsgZm9yIHdrMS4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTk0OTI1Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgR3l1eW91
bmcgS2ltLgotCi0gICAgICAgIFRoZSByZWFzb24gb2YgY2hhbmdpbmcsIHdhcyB0byBhZGp1c3Qg
Y3VycmVudCBpbXBsZW1lbnRhdGlvbiB0byB1c2UgZ3Rlc3QgZmVhdHVyZXMKLSAgICAgICAgcmVs
YXRlZCB0byBjbGVhbmluZyAoU2V0VXAsIFRlYXJEb3duKSwgY2xlYW5pbmcgY29kZSBpbiB0ZXJt
cyBvZiB1c2VsZXNzIG1ldGhvZHMKLSAgICAgICAgYW5kIGxhc3RseSB0byBtYWtlIGZyYW1ld29y
ayBlYXNpZXIgdG8gdXNlLgotCi0gICAgICAgICogdGVzdHMvVW5pdFRlc3RVdGlscy9FV0tUZXN0
QmFzZS5jcHA6Ci0gICAgICAgIChFV0tVbml0VGVzdHM6OkVXS1Rlc3RCYXNlOjpFV0tUZXN0QmFz
ZSk6Ci0gICAgICAgIChFV0tVbml0VGVzdHM6OkVXS1Rlc3RCYXNlOjp3ZWJWaWV3KTogUmV0dXJu
cyBjdXJyZW50IHdlYnZpZXcuCi0gICAgICAgIChFV0tVbml0VGVzdHM6OkVXS1Rlc3RCYXNlOjpT
ZXRVcCk6Ci0gICAgICAgIEJlZm9yZSB0ZXN0IGlzIHN0YXJ0ZWQsIFNldFVwIGlzIGNhbGxlZC4K
LSAgICAgICAgVXNlZCB0aGlzIHRvIGluaXRpYWxpemUgdGVzdCB2aWV3LgotICAgICAgICAoRVdL
VW5pdFRlc3RzOjpFV0tUZXN0QmFzZTo6b25Mb2FkRmluaXNoZWQpOgotICAgICAgICAoRVdLVW5p
dFRlc3RzOjpFV0tUZXN0QmFzZTo6d2FpdFVudGlsTG9hZEZpbmlzaGVkKTogSXQgd2FpdHMgdGls
bCB0ZXN0IHBhZ2Ugd2lsbCBiZSBwcm9wZXJseSBsb2FkZWQuCi0gICAgICAgIChFV0tVbml0VGVz
dHM6OkVXS1Rlc3RCYXNlOjpsb2FkVXJsKTogU3RhcnRzIGxvYWRpbmcgdGVzdCBwYWdlLgotICAg
ICAgICAqIHRlc3RzL1VuaXRUZXN0VXRpbHMvRVdLVGVzdEJhc2UuaDoKLSAgICAgICAgKiB0ZXN0
cy9Vbml0VGVzdFV0aWxzL0VXS1Rlc3RFbnZpcm9ubWVudC5jcHA6Ci0gICAgICAgIFVzZWQgdG8g
aGF2ZSBnbG9iYWwgU2V0VXAgYW5kIFRlYXJEb3duLgotICAgICAgICBHbG9iYWwgU2V0VXAgc3Rh
cnRzIGluaXRpYWxpemF0aW9uIG9mIHdlYmtpdCB3aGVyZWFzZQotICAgICAgICBnbG9iYWwgVGVh
ckRvd24gc2h1dHMgaXQgZG93bi4gR2VuZXJhbGx5IHdlIHdvdWxkIGxpa2UgdG8gaGF2ZQotICAg
ICAgICBvbmx5IG9uZSBpbml0aWFsaXphdGlvbiBvZiB3ZWJraXQgd2hpbGUgdGVzdHMgYXJlIGV4
ZWN1dGVkLgotICAgICAgICAoRVdLVW5pdFRlc3RzKToKLSAgICAgICAgKEVXS1VuaXRUZXN0czo6
RVdLVGVzdEVudmlyb25tZW50OjpFV0tUZXN0RW52aXJvbm1lbnQpOgotICAgICAgICAoRVdLVW5p
dFRlc3RzOjpFV0tUZXN0RW52aXJvbm1lbnQ6OlNldFVwKTogU3RhcnRzIGluaXRpYWxpemF0aW9u
IG9mIHdlYmtpdC4KLSAgICAgICAgKEVXS1VuaXRUZXN0czo6RVdLVGVzdEVudmlyb25tZW50OjpU
ZWFyRG93bik6IFNodXRzIGRvd24gb2Ygd2Via2l0LgotICAgICAgICAqIHRlc3RzL1VuaXRUZXN0
VXRpbHMvRVdLVGVzdEVudmlyb25tZW50Lmg6Ci0gICAgICAgIChFV0tVbml0VGVzdHMpOgotICAg
ICAgICAoRVdLVGVzdEVudmlyb25tZW50KToKLSAgICAgICAgKEVXS1VuaXRUZXN0czo6RVdLVGVz
dEVudmlyb25tZW50Ojp1c2VYMTFXaW5kb3cpOgotICAgICAgICAqIHRlc3RzL1VuaXRUZXN0VXRp
bHMvRVdLVGVzdFZpZXcuY3BwOgotICAgICAgICAoRVdLVW5pdFRlc3RzOjpFV0tUZXN0Vmlldzo6
RVdLVGVzdFZpZXcpOgotICAgICAgICAoRVdLVW5pdFRlc3RzOjpFV0tUZXN0Vmlldzo6aW5pdCk6
IFN0YXJ0cyBpbml0aWFsaXphdGlvbiBvZiB0ZXN0IHZpZXcuCi0gICAgICAgICogdGVzdHMvVW5p
dFRlc3RVdGlscy9FV0tUZXN0Vmlldy5oOgotICAgICAgICAoRVdLVGVzdFZpZXcpOgotICAgICAg
ICAqIHRlc3RzL3Rlc3RfZXdrX3ZpZXcuY3BwOiBhZGp1c3RlZCBjdXJyZW50IHVuaXQgdGVzdHMg
dG8gbmV3IGltcGxlbWVudGF0aW9uLgotICAgICAgICAoVEVTVF9GKToKLSAgICAgICAgKiB0ZXN0
cy90ZXN0X3J1bm5lci5jcHA6IGVudHJ5IHBvaW50IG9mIGFsbCB0ZXN0cy4KLSAgICAgICAgKHBh
cnNlQ3VzdG9tQXJndW1lbnRzKToKLSAgICAgICAgKG1haW4pOgotCi0yMDEyLTEwLTAxICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KLQotICAgICAgICBSZW1vdmUgdGhlIFNhZmFy
aSAyIC0+IFNhZmFyaSAzIGljb24gZGF0YWJhc2UgaW1wb3J0IGNvZGUuCi0gICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODExMwotCi0gICAgICAgIFJldmll
d2VkIGJ5IE1hY2llaiBTdGFjaG93aWFrLgotCi0gICAgICAgIE51a2UgdGhlIHBlcmZvcm1JbXBv
cnQoKSBJY29uRGF0YWJhc2VDbGllbnQgbWV0aG9kLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBv
cnQvSWNvbkRhdGFiYXNlQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9J
Y29uRGF0YWJhc2VDbGllbnRFZmwuaDoKLQotMjAxMi0wOS0yOCAgTWlraGFpbCBQb3pkbnlha292
ICA8bWlraGFpbC5wb3pkbnlha292QGludGVsLmNvbT4KLQotICAgICAgICBDb2RlIGluc2lkZSBG
cmFtZUxvYWRlckNsaWVudDo6Y2FuU2hvd01JTUVUeXBlKCkgaW1wbGVtZW50YXRpb25zIGNhbiBi
ZSBzaGFyZWQgYW1vbmcgZGlmZmVyZW50IFdLIHBvcnRzCi0gICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzU0NwotCi0gICAgICAgIFJldmlld2VkIGJ5IEFk
YW0gQmFydGguCi0KLSAgICAgICAgTmV3bHkgYWRkZWQgV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3Ry
eTo6Y2FuU2hvd01JTUVUeXBlKCkgZnVuY3Rpb24gaXMgdXNlZAotICAgICAgICBpbnNpZGUgV2Vi
Q29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmNhblNob3dNSU1FVHlwZSgpLgotCi0gICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwOgotICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmNhblNob3dNSU1FVHlwZSk6Ci0KLTIwMTItMDkt
MjggIE1pa2hhaWwgUG96ZG55YWtvdiAgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+Ci0K
LSAgICAgICAgW0VGTF1bRFJUXSBFRkwgRFJUIHNob3VsZCBkaXNhYmxlIHZpc2l0ZWQgbGlua3Mg
dHJhY2tpbmcgYnkgZGVmYXVsdAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9OTc4ODEKLQotICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENo
cmlzdGlhbnNlbi4KLQotICAgICAgICBBZGRlZCBhdXggRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZs
OjpzZXRTaG91bGRUcmFja1Zpc2l0ZWRMaW5rcygpIGZ1bmN0aW9uLgotCi0gICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcDoKLSAgICAgICAgKER1bXBS
ZW5kZXJUcmVlU3VwcG9ydEVmbDo6c2V0U2hvdWxkVHJhY2tWaXNpdGVkTGlua3MpOgotICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5oOgotCi0yMDEyLTA5
LTI3ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+Ci0KLSAg
ICAgICAgW0VGTF0gTm8gd2F5IHRvIGV4aXQgdmlkZW8gZnVsbHNjcmVlbiBtb2RlIG9uY2UgZW50
ZXJlZAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTc2
MzEKLQotICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KLQot
ICAgICAgICBGaXggZGVmYXVsdCB0aGVtZSBzbyB0aGF0IHdlIGhhdmUgMiBmdWxsc2NyZWVuIGJ1
dHRvbnMsIG9uZQotICAgICAgICB0byBlbnRlciBmdWxsc2NyZWVuIG1vZGUgYW5kIGFub3RoZXIg
dG8gZXhpdCBpdC4KLQotICAgICAgICBOZXcgaWNvbiBieSBBbGV4YW5kZXIgU2hhbGFtb3YuCi0K
LSAgICAgICAgKiBEZWZhdWx0VGhlbWUvd2lkZ2V0L21lZGlhY29udHJvbC9mdWxsc2NyZWVuYnV0
dG9uL2VudGVyZnVsbHNjcmVlbmJ1dHRvbi5wbmc6IEFkZGVkLgotICAgICAgICAqIERlZmF1bHRU
aGVtZS93aWRnZXQvbWVkaWFjb250cm9sL2Z1bGxzY3JlZW5idXR0b24vZXhpdGZ1bGxzY3JlZW5i
dXR0b24ucG5nOiBBZGRlZC4KLSAgICAgICAgKiBEZWZhdWx0VGhlbWUvd2lkZ2V0L21lZGlhY29u
dHJvbC9mdWxsc2NyZWVuYnV0dG9uL2Z1bGxzY3JlZW5fYnV0dG9uLmVkYzoKLSAgICAgICAgKiBE
ZWZhdWx0VGhlbWUvd2lkZ2V0L21lZGlhY29udHJvbC9mdWxsc2NyZWVuYnV0dG9uL2Z1bGxzY3Jl
ZW5idXR0b24ucG5nOiBSZW1vdmVkLgotCi0yMDEyLTA5LTI2ICBKaW53b28gU29uZyAgPGppbndv
bzcuc29uZ0BzYW1zdW5nLmNvbT4KLQotICAgICAgICBbRUZMXSBGaXggdGhlIHR5cG8gaW4gdGhl
IGV3a192aWV3X2Z1bGxzY3JlZW5fZXhpdCgpCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05NzYzNQotCi0gICAgICAgIFJldmlld2VkIGJ5IEd5dXlvdW5n
IEtpbS4KLQotICAgICAgICBGaXggdGhlIHNpbGx5IHR5cG8gaW4gdGhlIGV3a192aWV3X2Z1bGxz
Y3JlZW5fZXhpdCgpIEFQSS4KLQotICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAg
IChld2tfdmlld19mdWxsc2NyZWVuX2V4aXQpOgotCi0yMDEyLTA5LTI1ICBKaW53b28gU29uZyAg
PGppbndvbzcuc29uZ0BzYW1zdW5nLmNvbT4KLQotICAgICAgICBbRUZMXSBBZGQgZnVsbHNjcmVl
biBzZXQvZ2V0IEFQSXMgYW5kIGNhbGxiYWNrcwotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTc0MjEKLQotICAgICAgICBSZXZpZXdlZCBieSBHeXV5b3Vu
ZyBLaW0uCi0KLSAgICAgICAgQWRkIHNldHRpbmcgQVBJcyBmb3IgSmF2YVNjcmlwdCBGdWxsc2Ny
ZWVuIEFQSSBhbmQgYWxzbyBhZGQgdHdvIGNhbGxiYWNrcyB0byBld2tfdmlldyBBUEksCi0gICAg
ICAgIHNvIHRoYXQgVUkgY291bGQgY3VzdG9taXNlIGJlaGF2aW9yIHdoZW4gZnVsbHNjcmVlbiBt
b2RlIGlzIHJlcXVlc3RlZC4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVu
dEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRFZmw6OmVudGVyRnVsbFNj
cmVlbkZvckVsZW1lbnQpOgotICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZsOjpleGl0
RnVsbFNjcmVlbkZvckVsZW1lbnQpOgotICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAg
ICAgIChfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKToKLSAgICAgICAgKF9ld2tfdmlld19wcml2X25l
dyk6Ci0gICAgICAgIChld2tfdmlld19zZXR0aW5nX2VuYWJsZV9mdWxsc2NyZWVuX2dldCk6Ci0g
ICAgICAgIChld2tfdmlld19zZXR0aW5nX2VuYWJsZV9mdWxsc2NyZWVuX3NldCk6Ci0gICAgICAg
IChld2tfdmlld19mdWxsc2NyZWVuX2VudGVyKToKLSAgICAgICAgKGV3a192aWV3X2Z1bGxzY3Jl
ZW5fZXhpdCk6Ci0gICAgICAgICogZXdrL2V3a192aWV3Lmg6Ci0gICAgICAgICogZXdrL2V3a192
aWV3X3ByaXZhdGUuaDoKLSAgICAgICAgKiB0ZXN0cy90ZXN0X2V3a192aWV3LmNwcDoKLSAgICAg
ICAgKGV3a1ZpZXdFbmFibGVGdWxsc2NyZWVuQ2IpOgotICAgICAgICAoVEVTVCk6Ci0KLTIwMTIt
MDktMjUgIEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29tPgotCi0gICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTM5NwotICAgICAgICBOZWVkIHRvIG1l
cmdlIGRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCBhbmQgCi0gICAgICAgIGRpZE5ld0Zp
cnN0VmlzdWFsbHlOb25FbXB0eUxheW91dAotICAgICAgICAtYW5kIGNvcnJlc3BvbmRpbmctCi0g
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMDc5MTY4MD4KLQotICAgICAgICBSZXZpZXdlZCBieSBT
YW0gV2VpbmlnLgotCi0gICAgICAgIFJlbW92ZSBkaXNwYXRjaERpZEZpcnN0TGF5b3V0LCAKLSAg
ICAgICAgZGlzcGF0Y2hEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQsIGFuZCAKLSAgICAg
ICAgZGlzcGF0Y2hEaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQuIFRoZWlyIGZ1bmN0
aW9uYWxpdHkgCi0gICAgICAgIGlzIG5vdyByZXBsYWNlZCBieSBkaXNwYXRjaERpZExheW91dChM
YXlvdXRNaWxlc3RvbmVPcHRpb25zKQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZs
OjpkaXNwYXRjaERpZExheW91dCk6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRFZmwuaDoKLSAgICAgICAgKEZyYW1lTG9hZGVyQ2xpZW50RWZsKToKLQotICAgICAg
ICBJdCBpcyBub3cgbmVjZXNzYXJ5IHRvIG9wdCBpbnRvIGdldHRpbmcgYW55IG9mIHRoZSAKLSAg
ICAgICAgImxheW91dCBtaWxlc3RvbmUiIG5vdGlmaWNhdGlvbnMuCi0gICAgICAgICogZXdrL2V3
a192aWV3LmNwcDoKLSAgICAgICAgKF9ld2tfdmlld19wcml2X25ldyk6Ci0KLTIwMTItMDktMjQg
IERvbWluaWsgUsO2dHRzY2hlcyAgPGRvbWluaWsucm90dHNjaGVzQGludGVsLmNvbT4KLQotICAg
ICAgICBbRUZMXVtEUlRdIEVuYWJsZSBSZWdpb25zIHN1cHBvcnQKLSAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgzODk3Ci0KLSAgICAgICAgUmV2aWV3ZWQg
YnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCi0KLSAgICAgICAgQWN0aXZhdGluZyBDU1Mg
cmVnaW9ucyBieSBkZWZhdWx0IGZvciBFV0sgdmlld3MuCi0KLSAgICAgICAgKiBld2svZXdrX3Zp
ZXcuY3BwOiBTd2l0Y2ggQ1NTIHJlZ2lvbnMgb24gYnkgZGVmYXVsdC4KLSAgICAgICAgKF9ld2tf
dmlld19wcml2X25ldyk6Ci0KLTIwMTItMDktMjMgIEJ5dW5nd29vIExlZSAgPGJ3ODAubGVlQGdt
YWlsLmNvbT4KLQotICAgICAgICBGaXggYnVpbGQgd2FybmluZ3MgOiAtV3VudXNlZC1wYXJhbWV0
ZXIsIC1XcGFyZW50aGVzZXMsIC1XdW5pbml0aWFsaXplZC4KLSAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3MzA2Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkg
QmVuamFtaW4gUG91bGFpbi4KLQotICAgICAgICBGaXggYnVpbGQgd2FybmluZyBhYm91dCAtV3Vu
dXNlZC1wYXJhbWV0ZXIgb24gRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwCi0gICAgICAgIGJ5IHVz
aW5nIEFTU0VSVF9VTlVTRUQoKSBtYWNyby4KLSAgICAgICAgRml4IGJ1aWxkIHdhcm5pbmcgYWJv
dWcgLVdwYXJlbnRoZXNlcyBvbiBld2tfZnJhbWUuY3BwIGJ5IGFkZGluZwotICAgICAgICBhZGRp
dGlvbmFsIGJyYWNlIGZvciB0aGUgYXNzaWduIHN0YXRlbWVudC4KLQotICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZENoYW5nZUljb25zKToKLSAgICAgICAgKiBl
d2svZXdrX2ZyYW1lLmNwcDoKLSAgICAgICAgKGV3a19mcmFtZV9yZXNvdXJjZXNfbG9jYXRpb25f
Z2V0KToKLQotMjAxMi0wOS0yMSAgQ2hyaXN0b3BoZSBEdW1leiAgPGNocmlzdG9waGUuZHVtZXpA
aW50ZWwuY29tPgotCi0gICAgICAgIFtFRkxdIEV2ZW50U2VuZGVyIHNob3VsZCBtaW1pYyBDVFJM
K28gZW1hY3Mgc2hvcnRjdXQKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTk3MjI0Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJp
c3RpYW5zZW4uCi0KLSAgICAgICAgRml4IGJhZCB1c2Ugb2YgdGVtcG9yYXJ5IG9iamVjdCBjYXVz
aW5nIHdyb25nIGVkaXRpbmcKLSAgICAgICAgY2FsbGJhY2sgZHVtcGluZy4KLQotICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpF
ZGl0b3JDbGllbnRFZmw6OnNob3VsZEluc2VydFRleHQpOgotCi0yMDEyLTA5LTIwICBKaW53b28g
U29uZyAgPGppbndvbzcuc29uZ0BzYW1zdW5nLmNvbT4KLQotICAgICAgICBbRUZMXSBDaGFuZ2Ug
dGhlIGxvZyBtYWNybyBuYW1lcyB0byBiZSBtb3JlIGNvbnNpc3RlbnQgd2l0aCBFSU5BIExPRwot
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTcxNTgKLQot
ICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KLQotICAgICAg
ICBTb21lIGxvZyBtYWNybyBuYW1lcyBpbiBXZWJLaXQxIGFyZSBpbmNvbnNpc3RlbnQgd2l0aCBF
SU5BIExPRyBuYW1lcwotICAgICAgICBzdWNoIGFzIFdSTi9JTkYgbm90IFdBUk4vSU5GTy4KLQot
ICAgICAgICAgICNkZWZpbmUgV1JOKC4uLikgRUlOQV9MT0dfRE9NX1dBUk4oX2V3a19sb2dfZG9t
LCBfX1ZBX0FSR1NfXykKLSAgICAgICAgICAjZGVmaW5lIElORiguLi4pIEVJTkFfTE9HX0RPTV9J
TkZPKF9ld2tfbG9nX2RvbSwgX19WQV9BUkdTX18pCi0KLSAgICAgICAgVGhpcyBwYXRjaCBjaGFu
Z2VzIHRoZSBzdWNoIG5hbWVzIHRvIGJlIGNvbnNpc3RlbnQgd2l0aCBFSU5BIExPRydzIG5hbWVz
LgotCi0gICAgICAgICogZXdrL2V3a19mcmFtZS5jcHA6Ci0gICAgICAgIChfZXdrX2ZyYW1lX3Nt
YXJ0X3Jlc2l6ZSk6Ci0gICAgICAgIChld2tfZnJhbWVfc291cmNlX2dldCk6Ci0gICAgICAgIChl
d2tfZnJhbWVfdXJpX2NoYW5nZWQpOgotICAgICAgICAqIGV3ay9ld2tfbWFpbi5jcHA6Ci0gICAg
ICAgIChfZXdrX2luaXRfYm9keSk6Ci0gICAgICAgICogZXdrL2V3a19wcml2YXRlLmg6Ci0gICAg
ICAgICogZXdrL2V3a190aWxlZF9iYWNraW5nX3N0b3JlLmNwcDoKLSAgICAgICAgKF9ld2tfdGls
ZWRfYmFja2luZ19zdG9yZV9yZW5kZXIpOgotICAgICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0
b3JlX3JlY2FsY19yZW5kZXJlcnMpOgotICAgICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3Jl
X3NtYXJ0X2NhbGN1bGF0ZV9vZmZzZXRfZm9yY2UpOgotICAgICAgICAoX2V3a190aWxlZF9iYWNr
aW5nX3N0b3JlX3NtYXJ0X2NhbGN1bGF0ZV9vZmZzZXQpOgotICAgICAgICAoZXdrX3RpbGVkX2Jh
Y2tpbmdfc3RvcmVfcHJlX3JlbmRlcl9yZWxhdGl2ZV9yYWRpdXMpOgotICAgICAgICAqIGV3ay9l
d2tfdGlsZWRfbWF0cml4LmNwcDoKLSAgICAgICAgKGV3a190aWxlX21hdHJpeF9mcmVlKToKLSAg
ICAgICAgKGV3a190aWxlX21hdHJpeF90aWxlX2V4YWN0X2dldCk6Ci0gICAgICAgIChfZXdrX3Rp
bGVfbWF0cml4X3NsaWNlcl9zZXR1cCk6Ci0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAg
ICAgICAgKF9ld2tfdmlld19zbWFydF9hZGRfY29uc29sZV9tZXNzYWdlKToKLSAgICAgICAgKF9l
d2tfdmlld19zbWFydF9ydW5famF2YXNjcmlwdF9hbGVydCk6Ci0gICAgICAgIChfZXdrX3ZpZXdf
c21hcnRfcnVuX2phdmFzY3JpcHRfY29uZmlybSk6Ci0gICAgICAgIChfZXdrX3ZpZXdfc21hcnRf
c2hvdWxkX2ludGVycnVwdF9qYXZhc2NyaXB0KToKLSAgICAgICAgKF9ld2tfdmlld19zbWFydF9y
dW5famF2YXNjcmlwdF9wcm9tcHQpOgotICAgICAgICAoX2V3a192aWV3X3NtYXJ0X3ByZV9yZW5k
ZXJfcmVnaW9uKToKLSAgICAgICAgKF9ld2tfdmlld19zbWFydF9wcmVfcmVuZGVyX3JlbGF0aXZl
X3JhZGl1cyk6Ci0gICAgICAgIChfZXdrX3ZpZXdfc21hcnRfcHJlX3JlbmRlcl9zdGFydCk6Ci0g
ICAgICAgIChfZXdrX3ZpZXdfc21hcnRfcHJlX3JlbmRlcl9jYW5jZWwpOgotICAgICAgICAoX2V3
a192aWV3X3NtYXJ0X2Rpc2FibGVfcmVuZGVyKToKLSAgICAgICAgKF9ld2tfdmlld19zbWFydF9l
bmFibGVfcmVuZGVyKToKLSAgICAgICAgKGV3a192aWV3X2JnX2NvbG9yX3NldCk6Ci0gICAgICAg
IChld2tfdmlld196b29tX3NldCk6Ci0gICAgICAgIChld2tfdmlld196b29tX3dlYWtfc2V0KToK
LSAgICAgICAgKGV3a192aWV3X3pvb21fYW5pbWF0ZWRfc2V0KToKLSAgICAgICAgKGV3a192aWV3
X3N0YXR1c2Jhcl90ZXh0X3NldCk6Ci0gICAgICAgIChld2tfdmlld19leGNlZWRlZF9hcHBsaWNh
dGlvbl9jYWNoZV9xdW90YSk6Ci0gICAgICAgIChld2tfdmlld19leGNlZWRlZF9kYXRhYmFzZV9x
dW90YSk6Ci0gICAgICAgIChld2tfdmlld19zY3JvbGwpOgotICAgICAgICAoZXdrX3ZpZXdfcG9w
dXBfbmV3KToKLSAgICAgICAgKGV3a192aWV3X3BvcHVwX2Rlc3Ryb3kpOgotICAgICAgICAoZXdr
X3ZpZXdfcG9wdXBfc2VsZWN0ZWRfc2V0KToKLSAgICAgICAgKGV3a192aWV3X2NvbG9yX2Nob29z
ZXJfbmV3KToKLSAgICAgICAgKGV3a192aWV3X2NvbG9yX2Nob29zZXJfZGVzdHJveSk6Ci0gICAg
ICAgIChld2tfdmlld19jb2xvcl9jaG9vc2VyX2NvbG9yX3NldCk6Ci0gICAgICAgIChld2tfdmll
d19jb2xvcl9jaG9vc2VyX2NoYW5nZWQpOgotICAgICAgICAoZXdrX3ZpZXdfem9vbV9yYW5nZV9z
ZXQpOgotICAgICAgICAqIGV3ay9ld2tfdmlld19wcml2YXRlLmg6Ci0KLTIwMTItMDktMTkgIEpp
bndvbyBTb25nICA8amlud29vNy5zb25nQHNhbXN1bmcuY29tPgotCi0gICAgICAgIEZpeCB1bnVz
ZWQgcGFyYW1ldGVyIGNvbXBpbGUgd2FybmluZ3MgaW4gV2ViS2l0L1dlYktpdDIKLSAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk2NzQyCi0KLSAgICAgICAg
UmV2aWV3ZWQgYnkgR3l1eW91bmcgS2ltLgotCi0gICAgICAgIEZpeCB1bnVzZWQgcGFyYW1ldGVy
IGNvbXBpbGUgd2FybmluZyBtZXNzYWdlcygtV3VudXNlZC1wYXJhbWV0ZXIpIGluIFdlYktpdCBk
dXJpbmcgRUZMIGJ1aWxkLgotICAgICAgICBXZWJDb3JlJ3Mgd2FybmluZyBtZXNzYWdlcyB3ZXJl
IGZpeGVkIGluIHIxMjg1NzAuCi0gCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xp
ZW50RWZsLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEVmbDo6Y3JlYXRlV2lu
ZG93KToKLSAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEVmbDo6bW91c2VEaWRNb3ZlT3Zl
ckVsZW1lbnQpOgotICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZsOjpwcmludCk6Ci0g
ICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRFZmw6OnJlYWNoZWRNYXhBcHBDYWNoZVNpemUp
OgotICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZsOjppbnZhbGlkYXRlQ29udGVudHMp
OgotICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZsOjppbnZhbGlkYXRlUm9vdFZpZXcp
OgotICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZsOjppbnZhbGlkYXRlQ29udGVudHNB
bmRSb290Vmlldyk6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmNw
cDoKLSAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEVmbDo6aGFuZGxlSW5wdXRNZXRob2RL
ZXlkb3duKToKLSAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEVmbDo6Z2V0R3Vlc3Nlc0Zv
cldvcmQpOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNw
cDoKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZFJl
Y2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxv
YWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6
Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEZWNpZGVQ
b2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24pOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJD
bGllbnRFZmw6OmNyZWF0ZUZyYW1lKToKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xp
ZW50RWZsOjpjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KToKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1l
TG9hZGVyQ2xpZW50RWZsOjpzaG91bGRTdG9wTG9hZGluZ0Zvckhpc3RvcnlJdGVtKToKLSAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpjYW5TaG93TUlNRVR5cGVBc0hUTUwp
OgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OnNldFRpdGxlKToKLSAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZFJlY2VpdmVD
b250ZW50TGVuZ3RoKToKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpk
aXNwYXRjaERpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZSk6Ci0gICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlckNsaWVudEVmbDo6c2V0TWFpbkRvY3VtZW50RXJyb3IpOgotICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJFZmwuY3BwOgotICAgICAg
ICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6c2hvd0h1ZCk6Ci0gICAgICAgIChGdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyOjpzZXRWb2x1bWUpOgotICAgICAgICAoRnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlcjo6c2V0Q3VycmVudFRpbWUpOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0lu
c3BlY3RvckNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpub3RpZnlXZWJJbnNwZWN0
b3JEZXN0cm95KToKLSAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kU2V0dGluZ3NF
Zmw6OmdldFByb3BlcnR5KToKLSAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kU2V0
dGluZ3NFZmw6OnNldFByb3BlcnR5KToKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9QbGF0Zm9y
bVN0cmF0ZWdpZXNFZmwuY3BwOgotICAgICAgICAoUGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpnZXRQ
bHVnaW5JbmZvKToKLSAgICAgICAgKiBld2svZXdrX2F1dGhfc291cC5jcHA6Ci0gICAgICAgIChl
d2tfYXV0aF9zb3VwX2RpYWxvZ19jbGFzc19pbml0KToKLSAgICAgICAgKGV3a19hdXRoX3NvdXBf
ZGlhbG9nX2luaXQpOgotICAgICAgICAoZXdrX2F1dGhfc291cF9kaWFsb2dfc2Vzc2lvbl9mZWF0
dXJlX2luaXQpOgotICAgICAgICAoc2Vzc2lvbl9hdXRoZW50aWNhdGUpOgotICAgICAgICAqIGV3
ay9ld2tfZmlsZV9jaG9vc2VyLmNwcDoKLSAgICAgICAgKGV3a19maWxlX2Nob29zZXJfYWxsb3dz
X2RpcmVjdG9yeV91cGxvYWRfZ2V0KToKLSAgICAgICAgKiBld2svZXdrX2ZyYW1lLmNwcDoKLSAg
ICAgICAgKGV3a19mcmFtZV9mZWVkX2ZvY3VzX291dCk6Ci0gICAgICAgIChld2tfZnJhbWVfdmll
d19zdGF0ZV9zYXZlKToKLSAgICAgICAgKGV3a19mcmFtZV9wbHVnaW5fY3JlYXRlKToKLSAgICAg
ICAgKiBld2svZXdrX2pzLmNwcDoKLSAgICAgICAgKGV3a19qc19vYmplY3RfbmV3KToKLSAgICAg
ICAgKGV3a19qc19vYmplY3RfZnJlZSk6Ci0gICAgICAgIChld2tfanNfb2JqZWN0X3ZpZXdfZ2V0
KToKLSAgICAgICAgKGV3a19qc19vYmplY3RfcHJvcGVydGllc19nZXQpOgotICAgICAgICAoZXdr
X2pzX29iamVjdF9uYW1lX2dldCk6Ci0gICAgICAgIChld2tfanNfb2JqZWN0X2ludm9rZSk6Ci0g
ICAgICAgIChld2tfanNfb2JqZWN0X3R5cGVfZ2V0KToKLSAgICAgICAgKGV3a19qc19vYmplY3Rf
dHlwZV9zZXQpOgotICAgICAgICAoZXdrX2pzX3ZhcmlhbnRfZnJlZSk6Ci0gICAgICAgIChld2tf
anNfdmFyaWFudF9hcnJheV9mcmVlKToKLSAgICAgICAgKiBld2svZXdrX3RpbGVkX21vZGVsLmNw
cDoKLSAgICAgICAgKHRpbGVfYWNjb3VudCk6Ci0gICAgICAgIChfZXdrX3RpbGVfYWNjb3VudF9h
bGxvY2F0ZWQpOgotICAgICAgICAoX2V3a190aWxlX2FjY291bnRfZnJlZWQpOgotICAgICAgICAq
IGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChfZXdrX3ZpZXdfc21hcnRfYWRkX2NvbnNvbGVf
bWVzc2FnZSk6Ci0gICAgICAgIChfZXdrX3ZpZXdfc21hcnRfcnVuX2phdmFzY3JpcHRfYWxlcnQp
OgotICAgICAgICAoX2V3a192aWV3X3NtYXJ0X3J1bl9qYXZhc2NyaXB0X2NvbmZpcm0pOgotICAg
ICAgICAoX2V3a192aWV3X3NtYXJ0X3Nob3VsZF9pbnRlcnJ1cHRfamF2YXNjcmlwdCk6Ci0gICAg
ICAgIChfZXdrX3ZpZXdfc21hcnRfcnVuX2phdmFzY3JpcHRfcHJvbXB0KToKLSAgICAgICAgKF9l
d2tfdmlld19zbWFydF9tb3ZlKToKLSAgICAgICAgKF9ld2tfdmlld19zbWFydF9jb250ZW50c19y
ZXNpemUpOgotICAgICAgICAoX2V3a192aWV3X2VkaXRvcl9jb21tYW5kX3N0cmluZ19nZXQpOgot
ICAgICAgICAoZXdrX3ZpZXdfcG9wdXBfbmV3KToKLSAgICAgICAgKGV3a192aWV3X2pzX29iamVj
dF9hZGQpOgotICAgICAgICAoZXdrX3ZpZXdfYWNjZWxlcmF0ZWRfY29tcG9zaXRpbmdfb2JqZWN0
X2NyZWF0ZSk6Ci0gICAgICAgIChld2tfdmlld19hY2NlbGVyYXRlZF9jb21wb3NpdGluZ19jb250
ZXh0X2dldCk6Ci0gICAgICAgIChld2tfdmlld19zZXR0aW5nX3dlYl9hdWRpb19nZXQpOgotICAg
ICAgICAoZXdrX3ZpZXdfc2V0dGluZ193ZWJfYXVkaW9fc2V0KToKLSAgICAgICAgKiBld2svZXdr
X3ZpZXdfc2luZ2xlLmNwcDoKLSAgICAgICAgKF9ld2tfdmlld19zaW5nbGVfc21hcnRfYmdfY29s
b3Jfc2V0KToKLSAgICAgICAgKiBld2svZXdrX3ZpZXdfdGlsZWQuY3BwOgotICAgICAgICAoX2V3
a192aWV3X3RpbGVkX3VwZGF0ZXNfcHJvY2Vzc19wcmUpOgotICAgICAgICAoX2V3a192aWV3X3Rp
bGVkX2NvbnRlbnRzX3NpemVfY2hhbmdlZF9jYik6Ci0gICAgICAgIChfZXdrX3ZpZXdfdGlsZWRf
c21hcnRfYmdfY29sb3Jfc2V0KToKLQotMjAxMi0wOS0xOSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQu
cmV2aWV3LmJvdEBnbWFpbC5jb20+Ci0KLSAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQg
cjEyODk5NS4KLSAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTI4OTk1
Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzExNAot
Ci0gICAgICAgIENhdXNlcyB0aGUgYXBpIHRlc3RzIHRvIHNlZ2ZhdWx0LiAoUmVxdWVzdGVkIGJ5
IHJha3VjbyBvbgotICAgICAgICAjd2Via2l0KS4KLQotICAgICAgICAqIHRlc3RzL1VuaXRUZXN0
VXRpbHMvRVdLVGVzdEJhc2UuY3BwOgotICAgICAgICAoRVdLVW5pdFRlc3RzOjpFV0tUZXN0QmFz
ZTo6aW5pdCk6Ci0gICAgICAgIChFV0tVbml0VGVzdHM6OkVXS1Rlc3RCYXNlOjpzaHV0ZG93bkFs
bCk6Ci0gICAgICAgIChFV0tVbml0VGVzdHM6OkVXS1Rlc3RCYXNlOjpzdGFydFRlc3QpOgotICAg
ICAgICAoRVdLVW5pdFRlc3RzOjpFV0tUZXN0QmFzZTo6ZW5kVGVzdCk6Ci0gICAgICAgIChFV0tV
bml0VGVzdHM6OkVXS1Rlc3RCYXNlOjpjcmVhdGVUZXN0KToKLSAgICAgICAgKEVXS1VuaXRUZXN0
cyk6Ci0gICAgICAgIChFV0tVbml0VGVzdHM6OkVXS1Rlc3RCYXNlOjpydW5UZXN0KToKLSAgICAg
ICAgKiB0ZXN0cy9Vbml0VGVzdFV0aWxzL0VXS1Rlc3RCYXNlLmg6Ci0gICAgICAgIChFV0tVbml0
VGVzdHMpOgotICAgICAgICAoRVdLVGVzdEJhc2UpOgotICAgICAgICAqIHRlc3RzL1VuaXRUZXN0
VXRpbHMvRVdLVGVzdFZpZXcuY3BwOgotICAgICAgICAoRVdLVW5pdFRlc3RzOjpFV0tUZXN0RWNv
cmVFdmFzOjpFV0tUZXN0RWNvcmVFdmFzKToKLSAgICAgICAgKEVXS1VuaXRUZXN0czo6RVdLVGVz
dEVjb3JlRXZhczo6ZXZhcyk6Ci0gICAgICAgIChFV0tVbml0VGVzdHMpOgotICAgICAgICAoRVdL
VW5pdFRlc3RzOjpFV0tUZXN0RWNvcmVFdmFzOjpzaG93KToKLSAgICAgICAgKEVXS1VuaXRUZXN0
czo6RVdLVGVzdFZpZXc6OkVXS1Rlc3RWaWV3KToKLSAgICAgICAgKEVXS1VuaXRUZXN0czo6RVdL
VGVzdFZpZXc6OmluaXQpOgotICAgICAgICAoRVdLVW5pdFRlc3RzOjpFV0tUZXN0Vmlldzo6c2hv
dyk6Ci0gICAgICAgIChFV0tVbml0VGVzdHM6OkVXS1Rlc3RWaWV3OjptYWluRnJhbWUpOgotICAg
ICAgICAoRVdLVW5pdFRlc3RzOjpFV0tUZXN0Vmlldzo6ZXZhcyk6Ci0gICAgICAgIChFV0tVbml0
VGVzdHM6OkVXS1Rlc3RWaWV3OjpiaW5kRXZlbnRzKToKLSAgICAgICAgKiB0ZXN0cy9Vbml0VGVz
dFV0aWxzL0VXS1Rlc3RWaWV3Lmg6Ci0gICAgICAgIChFV0tUZXN0RWNvcmVFdmFzKToKLSAgICAg
ICAgKEVXS1VuaXRUZXN0cyk6Ci0gICAgICAgIChFV0tUZXN0Vmlldyk6Ci0gICAgICAgICogdGVz
dHMvdGVzdF9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChld2tWaWV3RWRpdGFibGVHZXRDYik6Ci0g
ICAgICAgIChURVNUKToKLSAgICAgICAgKGV3a1ZpZXdVcmlHZXRDYik6Ci0gICAgICAgICogdGVz
dHMvdGVzdF9ydW5uZXIuY3BwOgotICAgICAgICAobWFpbik6Ci0KLTIwMTItMDktMTkgIEtyenlz
enRvZiBDemVjaCAgPGsuY3plY2hAc2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW0VGTF1bVVRdIFJl
ZmFjdG9yaW5nIGFuIGltcGxlbWVudGF0aW9uIG9mIHRlc3RpbmcgZnJhbWV3b3JrIGZvciB3azEu
Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NDkyNQot
Ci0gICAgICAgIFJldmlld2VkIGJ5IEd5dXlvdW5nIEtpbS4KLQotICAgICAgICBUaGUgcmVhc29u
IG9mIGNoYW5naW5nLCB3YXMgdG8gYWRqdXN0IGN1cnJlbnQgaW1wbGVtZW50YXRpb24gdG8gdXNl
IGd0ZXN0IGZlYXR1cmVzCi0gICAgICAgIHJlbGF0ZWQgdG8gY2xlYW5pbmcgKFNldFVwLCBUZWFy
RG93biksIGNsZWFuaW5nIGNvZGUgaW4gdGVybXMgb2YgdXNlbGVzcyBtZXRob2RzCi0gICAgICAg
IGFuZCBsYXN0bHkgdG8gbWFrZSBmcmFtZXdvcmsgZWFzaWVyIHRvIHVzZS4KLQotICAgICAgICAq
IHRlc3RzL1VuaXRUZXN0VXRpbHMvRVdLVGVzdEJhc2UuY3BwOgotICAgICAgICAoRVdLVW5pdFRl
c3RzOjpFV0tUZXN0QmFzZTo6RVdLVGVzdEJhc2UpOiBBZGRlZCB0byBpbml0aWFsaXplIHRlc3Qg
dmlldy4KLSAgICAgICAgKEVXS1VuaXRUZXN0czo6RVdLVGVzdEJhc2U6OndlYlZpZXcpOiBSZXR1
cm5zIGN1cnJlbnQgd2Vidmlldy4KLSAgICAgICAgKEVXS1VuaXRUZXN0czo6RVdLVGVzdEJhc2U6
OlNldFVwKToKLSAgICAgICAgQmVmb3JlIHRlc3QgaXMgc3RhcnRlZCwgU2V0VXAgaXMgY2FsbGVk
LgotICAgICAgICBVc2VkIHRoaXMgdG8gaW5pdGlhbGl6ZSBlZmwgYW5kIHRlc3Qgdmlldy4KLSAg
ICAgICAgKEVXS1VuaXRUZXN0czo6RVdLVGVzdEJhc2U6OlRlYXJEb3duKToKLSAgICAgICAgVGVh
ckRvd24gaXMgY2FsbGVkIGFzIHNvb24gYXMgdGVzdCBpcyBjb21wbGV0ZWQuCi0gICAgICAgIFVz
ZWQgdGhpcyB0byBwcm9wZXJseSBzaHV0ZG93biBlZmwgYW5kIGNsZWFuIHRlc3Qgdmlldy4KLSAg
ICAgICAgKEVXS1VuaXRUZXN0czo6RVdLVGVzdEJhc2U6Om9uTG9hZEZpbmlzaGVkKToKLSAgICAg
ICAgKEVXS1VuaXRUZXN0czo6RVdLVGVzdEJhc2U6OndhaXRVbnRpbExvYWRGaW5pc2hlZCk6IEl0
IHdhaXRzIHRpbGwgdGVzdCBwYWdlIHdpbGwgYmUgcHJvcGVybHkgbG9hZGVkLgotICAgICAgICAo
RVdLVW5pdFRlc3RzOjpFV0tUZXN0QmFzZTo6bG9hZFVybCk6IFN0YXJ0cyBsb2FkaW5nIHRlc3Qg
cGFnZS4KLSAgICAgICAgKiB0ZXN0cy9Vbml0VGVzdFV0aWxzL0VXS1Rlc3RCYXNlLmg6Ci0gICAg
ICAgICogdGVzdHMvVW5pdFRlc3RVdGlscy9FV0tUZXN0Vmlldy5jcHA6Ci0gICAgICAgIChFV0tV
bml0VGVzdHM6OkVXS1Rlc3RWaWV3OjpFV0tUZXN0Vmlldyk6Ci0gICAgICAgIChFV0tVbml0VGVz
dHM6OkVXS1Rlc3RWaWV3Ojppbml0KTogSW5pdGlhbGl6ZSB0ZXN0IHZpZXcuCi0gICAgICAgICog
dGVzdHMvVW5pdFRlc3RVdGlscy9FV0tUZXN0Vmlldy5oOgotICAgICAgICAoRVdLVGVzdFZpZXcp
OgotICAgICAgICAqIHRlc3RzL3Rlc3RfZXdrX3ZpZXcuY3BwOgotICAgICAgICAoVEVTVF9GKToK
LSAgICAgICAgKiB0ZXN0cy90ZXN0X3J1bm5lci5jcHA6Ci0gICAgICAgIChtYWluKToKLQotMjAx
Mi0wOS0xOSAgQ2hyaXN0b3BoZSBEdW1leiAgPGNocmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgot
Ci0gICAgICAgIFtFRkxdIEVGTCdzIERSVCBkb2VzIG5vdCBzdXBwb3J0IG92ZXJyaWRpbmcgJ1dl
YktpdENTU1JlZ2lvbnNFbmFibGVkJyBwcmVmZXJlbmNlCi0gICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzEwMAotCi0gICAgICAgIFJldmlld2VkIGJ5IEd5
dXlvdW5nIEtpbS4KLQotICAgICAgICBBZGQgRHVtcFJlbmRlclRyZWUgc3VwcG9ydCBtZXRob2Qg
dG8gc2V0IHRoZQotICAgICAgICAnV2ViS2l0Q1NTUmVnaW9uc0VuYWJsZWQnIHByZWZlcmVuY2Uu
Ci0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3Bw
OgotICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpzZXRDU1NSZWdpb25zRW5hYmxl
ZCk6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmg6
Ci0KLTIwMTItMDktMTMgIEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuICA8a2VubmV0aEB3ZWJr
aXQub3JnPgotCi0gICAgICAgIEV2YXNfT2JqZWN0KiBpcyBhIHJlZidlZCBzdHJ1Y3R1cmUsIHNv
IHRyZWFkIGl0IGFzIHN1Y2gKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTk2NjU5Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KLQotICAg
ICAgICBSZXBsYWNlIE93blB0cjxFdmFzX09iamVjdD4gd2l0aCBSZWZQdHIuCi0KLSAgICAgICAg
KiB0ZXN0cy9Vbml0VGVzdFV0aWxzL0VXS1Rlc3RWaWV3LmNwcDoKLSAgICAgICAgKEVXS1VuaXRU
ZXN0czo6RVdLVGVzdFZpZXc6OmluaXQpOgotICAgICAgICAqIHRlc3RzL1VuaXRUZXN0VXRpbHMv
RVdLVGVzdFZpZXcuaDoKLSAgICAgICAgKEVXS1Rlc3RWaWV3KToKLQotMjAxMi0wOS0xNCAgR3l1
eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFVucmV2aWV3
ZWQsIHJvbGxpbmcgb3V0IHIxMjg1MDcuCi0gICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcv
Y2hhbmdlc2V0LzEyODUwNwotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9OTY2NTkKLQotICAgICAgICBSZXZlcnQuIHIxMjg1MDcgbWFrZXMgdG9vIG1hbnkg
Y3Jhc2hlcyBpbiBFRkwgbGF5b3V0IHRlc3QgYm90cy4KLQotICAgICAgICAqIHRlc3RzL1VuaXRU
ZXN0VXRpbHMvRVdLVGVzdFZpZXcuY3BwOgotICAgICAgICAoRVdLVW5pdFRlc3RzOjpFV0tUZXN0
Vmlldzo6aW5pdCk6Ci0gICAgICAgICogdGVzdHMvVW5pdFRlc3RVdGlscy9FV0tUZXN0Vmlldy5o
OgotICAgICAgICAoRVdLVGVzdFZpZXcpOgotCi0yMDEyLTA5LTEzICBDaHJpc3RvcGhlIER1bWV6
ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+Ci0KLSAgICAgICAgW0VGTF0gUmVtb3ZlIGEg
bG90IG9mIEMnaXNtIGZyb20gRXdrX1RpbGVkX01hdHJpeAotICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTY2MzgKLQotICAgICAgICBSZXZpZXdlZCBieSBH
eXV5b3VuZyBLaW0uCi0KLSAgICAgICAgUmVtb3ZlIGEgbG90IG9mIEMnaXNtIGZyb20gRXdrX1Rp
bGVkX01hdHJpeCBhbmQKLSAgICAgICAgZml4IHRoZSBjb2RlIHNvIHRoYXQgaXQgZm9sbG93cyBj
b2Rpbmcgc3R5bGUuCi0KLSAgICAgICAgKiBld2svZXdrX3RpbGVkX21hdHJpeC5jcHA6Ci0gICAg
ICAgIChfRXdrX1RpbGVfTWF0cml4KToKLSAgICAgICAgKGV3a190aWxlX21hdHJpeF9lbnRyeV9n
ZXQpOgotICAgICAgICAoX2V3a190aWxlX21hdHJpeF9jZWxsX2ZyZWUpOgotICAgICAgICAoX2V3
a190aWxlX21hdHJpeF90aWxlX2ZyZWUpOgotICAgICAgICAoZXdrX3RpbGVfbWF0cml4X3pvb21f
bGV2ZWxfc2V0KToKLSAgICAgICAgKGV3a190aWxlX21hdHJpeF9lbnRyeV9uZXcpOgotICAgICAg
ICAoZXdrX3RpbGVfbWF0cml4X2ludmFsaWRhdGUpOgotICAgICAgICAoZXdrX3RpbGVfbWF0cml4
X2ZyZWUpOgotICAgICAgICAoZXdrX3RpbGVfbWF0cml4X3Jlc2l6ZSk6Ci0gICAgICAgIChld2tf
dGlsZV9tYXRyaXhfc2l6ZV9nZXQpOgotICAgICAgICAoZXdrX3RpbGVfbWF0cml4X3VudXNlZF9j
YWNoZV9nZXQpOgotICAgICAgICAoZXdrX3RpbGVfbWF0cml4X3RpbGVfZXhhY3RfZ2V0KToKLSAg
ICAgICAgKGV3a190aWxlX21hdHJpeF90aWxlX2V4YWN0X2V4aXN0cyk6Ci0gICAgICAgIChld2tf
dGlsZV9tYXRyaXhfdGlsZV9uZXcpOgotICAgICAgICAoZXdrX3RpbGVfbWF0cml4X3RpbGVfcHV0
KToKLSAgICAgICAgKGV3a190aWxlX21hdHJpeF90aWxlX3VwZGF0ZXNfY2xlYXIpOgotICAgICAg
ICAoX2V3a190aWxlX21hdHJpeF9zbGljZXJfc2V0dXApOgotICAgICAgICAoZXdrX3RpbGVfbWF0
cml4X3VwZGF0ZSk6Ci0gICAgICAgIChld2tfdGlsZV9tYXRyaXhfdXBkYXRlc19wcm9jZXNzKToK
LSAgICAgICAgKGV3a190aWxlX21hdHJpeF91cGRhdGVzX2NsZWFyKToKLSAgICAgICAgKGV3a190
aWxlX21hdHJpeF9kYmcpOgotICAgICAgICAoZXdrX3RpbGVfbWF0cml4X2ZyZWV6ZSk6Ci0gICAg
ICAgIChld2tfdGlsZV9tYXRyaXhfdGhhdyk6Ci0gICAgICAgICogZXdrL2V3a190aWxlZF9tYXRy
aXhfcHJpdmF0ZS5oOgotCi0yMDEyLTA5LTEzICBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbiAg
PGtlbm5ldGhAd2Via2l0Lm9yZz4KLQotICAgICAgICBFdmFzX09iamVjdCogaXMgYSByZWYnZWQg
c3RydWN0dXJlLCBzbyB0cmVhZCBpdCBhcyBzdWNoCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NjY1OQotCi0gICAgICAgIFJldmlld2VkIGJ5IEFkYW0g
QmFydGguCi0KLSAgICAgICAgUmVwbGFjZSBPd25QdHI8RXZhc19PYmplY3Q+IHdpdGggUmVmUHRy
LgotCi0gICAgICAgICogdGVzdHMvVW5pdFRlc3RVdGlscy9FV0tUZXN0Vmlldy5jcHA6Ci0gICAg
ICAgIChFV0tVbml0VGVzdHM6OkVXS1Rlc3RWaWV3Ojppbml0KToKLSAgICAgICAgKiB0ZXN0cy9V
bml0VGVzdFV0aWxzL0VXS1Rlc3RWaWV3Lmg6Ci0gICAgICAgIChFV0tUZXN0Vmlldyk6Ci0KLTIw
MTItMDktMTMgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4K
LQotICAgICAgICBbRUZMXSBSZW1vdmUgYSBsb3Qgb2YgQydpc20gZnJvbSBFd2tfVGlsZWRfQmFj
a2luZ19TdG9yZQotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTY2MzEKLQotICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNl
bi4KLQotICAgICAgICBSZW1vdmUgYSBsb3Qgb2YgQydpc20gZnJvbSBFd2tfVGlsZWRfQmFja2lu
Z19TdG9yZSBhbmQKLSAgICAgICAgZml4IGNvZGluZyBzdHlsZS4KLQotICAgICAgICAqIGV3ay9l
d2tfdGlsZWRfYmFja2luZ19zdG9yZS5jcHA6Ci0gICAgICAgIChfRXdrX1RpbGVkX0JhY2tpbmdf
U3RvcmVfSXRlbSk6Ci0gICAgICAgIChfRXdrX1RpbGVkX0JhY2tpbmdfU3RvcmVfRGF0YSk6Ci0g
ICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdXBkYXRlc19wcm9jZXNzKToKLSAgICAg
ICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9mbHVzaCk6Ci0gICAgICAgIChfZXdrX3RpbGVk
X2JhY2tpbmdfc3RvcmVfdGlsZV9uZXcpOgotICAgICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0
b3JlX2l0ZW1fcmVzaXplKToKLSAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV90aWxl
X2Fzc29jaWF0ZSk6Ci0gICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdGlsZV9kaXNz
b2NpYXRlKToKLSAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV90aWxlX2Rpc3NvY2lh
dGVfYWxsKToKLSAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVfcmVuZGVyX3Jl
cXVlc3RfYWRkKToKLSAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVfcmVuZGVy
X3JlcXVlc3RfZGVsKToKLSAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVfcmVu
ZGVyX3JlcXVlc3RfZmlyc3QpOgotICAgICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3By
ZV9yZW5kZXJfcmVxdWVzdF9jbGVhcik6Ci0gICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3Rv
cmVfcHJlX3JlbmRlcl9yZXF1ZXN0X3Byb2Nlc3Nfc2luZ2xlKToKLSAgICAgICAgKF9ld2tfdGls
ZWRfYmFja2luZ19zdG9yZV9pdGVtX3Byb2Nlc3NfaWRsZXJfc3RhcnQpOgotICAgICAgICAoX2V3
a190aWxlZF9iYWNraW5nX3N0b3JlX2Rpc2FibGVfcmVuZGVyKToKLSAgICAgICAgKF9ld2tfdGls
ZWRfYmFja2luZ19zdG9yZV9lbmFibGVfcmVuZGVyKToKLSAgICAgICAgKF9ld2tfdGlsZWRfYmFj
a2luZ19zdG9yZV9pdGVtX2ZpbGwpOgotICAgICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3Jl
X2l0ZW1fYWRkKToKLSAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9pdGVtX3Ntb290
aF9zY2FsZV9zZXQpOgotICAgICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX2NoYW5nZWQp
OgotICAgICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3ZpZXdfY29sc19lbmRfZGVsKToK
LSAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV92aWV3X2NvbHNfZW5kX2FkZCk6Ci0g
ICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdmlld19yb3dfZGVsKToKLSAgICAgICAg
KF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV92aWV3X3Jvd3NfcmFuZ2VfZGVsKToKLSAgICAgICAg
KF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV92aWV3X3Jvd3NfYWxsX2RlbCk6Ci0gICAgICAgIChf
ZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfc21hcnRfbWVtYmVyX2RlbCk6Ci0gICAgICAgIChfZXdr
X3RpbGVkX2JhY2tpbmdfc3RvcmVfc21hcnRfbWVtYmVyX2FkZCk6Ci0gICAgICAgIChfZXdrX3Rp
bGVkX2JhY2tpbmdfc3RvcmVfbWVtX2RiZyk6Ci0gICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdf
c3RvcmVfc2lnX3Vzcik6Ci0gICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfc21hcnRf
YWRkKToKLSAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9zbWFydF9kZWwpOgotICAg
ICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3NtYXJ0X3Nob3cpOgotICAgICAgICAoX2V3
a190aWxlZF9iYWNraW5nX3N0b3JlX3NtYXJ0X2hpZGUpOgotICAgICAgICAoX2V3a190aWxlZF9i
YWNraW5nX3N0b3JlX3JlY2FsY19yZW5kZXJlcnMpOgotICAgICAgICAoX2V3a190aWxlZF9iYWNr
aW5nX3N0b3JlX3NtYXJ0X2NhbGN1bGF0ZV9zaXplKToKLSAgICAgICAgKF9ld2tfdGlsZWRfYmFj
a2luZ19zdG9yZV92aWV3X2RiZyk6Ci0gICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVf
dmlld193cmFwX3VwKToKLSAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV92aWV3X3dy
YXBfZG93bik6Ci0gICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdmlld193cmFwX2xl
ZnQpOgotICAgICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3ZpZXdfd3JhcF9yaWdodCk6
Ci0gICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdmlld19yZWZpbGwpOgotICAgICAg
ICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3ZpZXdfcG9zX2FwcGx5KToKLSAgICAgICAgKF9l
d2tfdGlsZWRfYmFja2luZ19zdG9yZV9zbWFydF9jYWxjdWxhdGVfb2Zmc2V0X2ZvcmNlKToKLSAg
ICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9zbWFydF9jYWxjdWxhdGVfb2Zmc2V0KToK
LSAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9zbWFydF9jYWxjdWxhdGVfcG9zKToK
LSAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9maWxsX3JlbmRlcmVycyk6Ci0gICAg
ICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfc21hcnRfY2FsY3VsYXRlKToKLSAgICAgICAg
KGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3JlbmRlcl9jYl9zZXQpOgotICAgICAgICAoZXdrX3Rp
bGVkX2JhY2tpbmdfc3RvcmVfdGlsZV91bnVzZWRfY2FjaGVfZ2V0KToKLSAgICAgICAgKF9ld2tf
dGlsZWRfYmFja2luZ19zdG9yZV9zY3JvbGxfZnVsbF9vZmZzZXRfc2V0X2ludGVybmFsKToKLSAg
ICAgICAgKGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3Njcm9sbF9mdWxsX29mZnNldF9zZXQpOgot
ICAgICAgICAoZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfc2Nyb2xsX2Z1bGxfb2Zmc2V0X2FkZCk6
Ci0gICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfem9vbV9zZXRfaW50ZXJuYWwpOgot
ICAgICAgICAoZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfem9vbV9zZXQpOgotICAgICAgICAoZXdr
X3RpbGVkX2JhY2tpbmdfc3RvcmVfem9vbV93ZWFrX3NldCk6Ci0gICAgICAgIChld2tfdGlsZWRf
YmFja2luZ19zdG9yZV9maXhfb2Zmc2V0cyk6Ci0gICAgICAgIChld2tfdGlsZWRfYmFja2luZ19z
dG9yZV96b29tX3dlYWtfc21vb3RoX3NjYWxlX3NldCk6Ci0gICAgICAgIChld2tfdGlsZWRfYmFj
a2luZ19zdG9yZV9hbHBoYV9zZXQpOgotICAgICAgICAoZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVf
dXBkYXRlKToKLSAgICAgICAgKGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3VwZGF0ZXNfcHJvY2Vz
c19wcmVfc2V0KToKLSAgICAgICAgKGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3VwZGF0ZXNfcHJv
Y2Vzc19wb3N0X3NldCk6Ci0gICAgICAgIChld2tfdGlsZWRfYmFja2luZ19zdG9yZV9kaXNhYmxl
ZF91cGRhdGVfc2V0KToKLSAgICAgICAgKGV3a190aWxlZF9iYWNraW5nX3N0b3JlX2ZsdXNoKToK
LSAgICAgICAgKGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3ByZV9yZW5kZXJfdGlsZV9hZGQpOgot
ICAgICAgICAoZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcHJlX3JlbmRlcl9zcGlyYWxfcXVldWUp
OgotICAgICAgICAoZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcHJlX3JlbmRlcl9yZWdpb24pOgot
ICAgICAgICAoZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcHJlX3JlbmRlcl9yZWxhdGl2ZV9yYWRp
dXMpOgotICAgICAgICAoZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcHJlX3JlbmRlcl9jYW5jZWwp
OgotICAgICAgICAoZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfZGlzYWJsZV9yZW5kZXIpOgotICAg
ICAgICAoZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfZW5hYmxlX3JlbmRlcik6Ci0gICAgICAgICog
ZXdrL2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3ByaXZhdGUuaDoKLSAgICAgICAgKF9Fd2tfVGls
ZV9TdGF0cyk6Ci0gICAgICAgIChfRXdrX1RpbGUpOgotICAgICAgICAqIGV3ay9ld2tfdmlld190
aWxlZC5jcHA6Ci0gICAgICAgIChfZXdrX3ZpZXdfdGlsZWRfcmVuZGVyX2NiKToKLSAgICAgICAg
KF9ld2tfdmlld190aWxlZF9zbWFydF9iYWNraW5nX3N0b3JlX2FkZCk6Ci0KLTIwMTItMDktMTMg
IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuICA8a2VubmV0aEB3ZWJraXQub3JnPgotCi0gICAg
ICAgIFtFRkxdW0RSVF0gSW1wbGVtZW50IExheW91dFRlc3RDb250cm9sbGVyOjpsYXllclRyZWVB
c1RleHQKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgy
Mjk0Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgR3l1eW91bmcgS2ltLgotCi0gICAgICAgIEFkZCBh
IHN1cHBvcnQgbWV0aG9kIGZvciBnZXR0aW5nIGxheWVyVHJlZUFzVGV4dC4KLQotICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHA6Ci0gICAgICAgIChE
dW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OmxheWVyVHJlZUFzVGV4dCk6Ci0gICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmg6Ci0KLTIwMTItMDktMTIgIFNo
ZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgotCi0gICAgICAgIFVucmV2
aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMjc4NzYuCi0gICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5v
cmcvY2hhbmdlc2V0LzEyNzg3NgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9OTY2MDAKLQotICAgICAgICBtb3VzZSBjbGljayBkb2Vzbid0IHdvcmsgZm9y
IHNwaW4gYnV0dG9uIGlmIHNwaW4gYnV0dG9uIGluCi0gICAgICAgIGlmcmFtZSAoUmVxdWVzdGVk
IGJ5IHlvc2luIG9uICN3ZWJraXQpLgotCi0gICAgICAgICogZXdrL2V3a19mcmFtZS5jcHA6Ci0g
ICAgICAgIChld2tfZnJhbWVfaGl0X3Rlc3RfbmV3KToKLQotMjAxMi0wOS0xMiAgS3l1bmdUYWUg
S2ltICA8a3RmLmtpbUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBbRUZMXSBTdXBwb3J0IGRvd25s
b2FkIGF0dHJpYnV0ZSBmZWF0dXJlCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05NjQ2MgotCi0gICAgICAgIFJldmlld2VkIGJ5IEd5dXlvdW5nIEtpbS4K
LQotICAgICAgICBBZGQgc3VnZ2VzdGVkX25hbWUgZmllbGQgb24gX0V3a19Eb3dubG9hZCBhbmQg
c2V0IGl0IG9uIHN0YXJ0RG93bmxvYWQKLSAgICAgICAgdG8gZ2V0IHN1Z2dlc3RlZCBuYW1lIHBh
c3NlZCBhcyBhIGRvd25sb2FkIGF0dHJpYnV0ZS4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVy
Q2xpZW50RWZsOjpkb3dubG9hZCk6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVu
dEVmbDo6c3RhcnREb3dubG9hZCk6Ci0gICAgICAgICogZXdrL2V3a192aWV3Lmg6Ci0KLTIwMTIt
MDktMTAgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KLQot
ICAgICAgICBbRUZMXSBDcmVhdGUgYSB0b2dnbGUgYnV0dG9uIGZvciBjbG9zZWQgY2FwdGlvbnMK
LSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk2MjU5Ci0K
LSAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCi0KLSAgICAg
ICAgQWRkIGNsb3NlZCBjYXB0aW9uIHRvZ2dsaW5nIGJ1dHRvbiB0byBkZWZhdWx0IFdlYktpdEVG
TAotICAgICAgICB0aGVtZS4KLQotICAgICAgICAqIERlZmF1bHRUaGVtZS9kZWZhdWx0LmVkYzoK
LSAgICAgICAgKiBEZWZhdWx0VGhlbWUvd2lkZ2V0L21lZGlhY29udHJvbC90b2dnbGVjYXB0aW9u
c2J1dHRvbi9jbG9zZWRjYXB0aW9uLnBuZzogQWRkZWQuCi0gICAgICAgICogRGVmYXVsdFRoZW1l
L3dpZGdldC9tZWRpYWNvbnRyb2wvdG9nZ2xlY2FwdGlvbnNidXR0b24vY2xvc2VkY2FwdGlvbl9k
aXNhYmxlZC5wbmc6IEFkZGVkLgotICAgICAgICAqIERlZmF1bHRUaGVtZS93aWRnZXQvbWVkaWFj
b250cm9sL3RvZ2dsZWNhcHRpb25zYnV0dG9uL3RvZ2dsZV9jYXB0aW9uc19idXR0b24uZWRjOiBB
ZGRlZC4KLQotMjAxMi0wOS0wOSAgRW1pbCBBIEVrbHVuZCAgPGVhZUBjaHJvbWl1bS5vcmc+Ci0K
LSAgICAgICAgUmVuYW1lIE5vZGU6OmdldFJlY3QvZ2V0UGl4ZWxTbmFwcGVkUmVjdCBhbmQgcmVt
b3ZlIENvbnRhaW5lck5vZGU6OmdldFJlY3QKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTgxNDEzCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgRGF2aWQgSHlh
dHQuCi0KLSAgICAgICAgVXBkYXRlIGV3a19mcmFtZSB0byBjYWxsIHBpeGVsU25hcHBlZEJvdW5k
aW5nQm94LgotCi0gICAgICAgICogZXdrL2V3a19mcmFtZS5jcHA6Ci0gICAgICAgIChld2tfZnJh
bWVfZm9jdXNlZF9lbGVtZW50X2dlb21ldHJ5X2dldCk6Ci0KLTIwMTItMDktMDcgIEJlbmphbWlu
IFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+Ci0KLSAgICAgICAgUmVuYW1lIHRoZSB1c3Ry
aW5nKCkgYWNjZXNzb3IgdG8gc3RyaW5nKCkKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTk1OTE5Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkg
R2FyZW4uCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRF
ZmwuY3BwOgotICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpzZW5kV2ViSW50ZW50
UmVzcG9uc2UpOgotICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpkZWxpdmVyV2Vi
SW50ZW50KToKLSAgICAgICAgQXNsbyB1cGRhdGUgdGhlIGNvZGUgZnJvbSB0aGUgVVN0cmluZy0+
U3RyaW5nIGNvbnZlcnNpb24gdGhyb3VnaCBTdHJpbmdJbXBsLgotCi0yMDEyLTA5LTA3ICBDaHJp
c3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+Ci0KLSAgICAgICAgW0VG
TF0gVXNlIHNhbWUgZGVmYXVsdCBtaW5pbXVtIGxvZ2ljYWwgZm9udCBzaXplIGluIERSVCBhbmQg
V1RSCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NjEx
NgotCi0gICAgICAgIFJldmlld2VkIGJ5IE1hcnRpbiBSb2JpbnNvbi4KLQotICAgICAgICBBZGQg
RFJUIGhlbHBlciBmdW5jdGlvbiB0byBzZXQgdGhlIG1pbmltdW0gbG9naWNhbAotICAgICAgICBm
b250IHNpemUgc2V0dGluZy4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJU
cmVlU3VwcG9ydEVmbC5jcHA6Ci0gICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OnNl
dE1pbmltdW1Mb2dpY2FsRm9udFNpemUpOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBS
ZW5kZXJUcmVlU3VwcG9ydEVmbC5oOgotCi0yMDEyLTA5LTA3ICBBbGxhbiBTYW5kZmVsZCBKZW5z
ZW4gIDxhbGxhbi5qZW5zZW5Abm9raWEuY29tPgotCi0gICAgICAgIFNpbXBsaWZ5IGhpdFRlc3RS
ZXN1bHRBdFBvaW50IGFuZCBub2Rlc0Zyb21SZWN0IEFQSXMKLSAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NzIwCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkg
QW50b25pbyBHb21lcy4KLQotICAgICAgICBVcGRhdGUgY2FsbHMgdG8gbmV3IEFQSS4KLQotICAg
ICAgICAqIGV3ay9ld2tfZnJhbWUuY3BwOgotICAgICAgICAoZXdrX2ZyYW1lX2hpdF90ZXN0X25l
dyk6Ci0KLTIwMTItMDktMDcgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNv
bT4KLQotICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTI3ODM5LgotICAgICAgICBo
dHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8xMjc4MzkKLSAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwNjAzCi0KLSAgICAgICAgVGhpcyBwYXRj
aCB3YXMgbGFuZGVkIHdpdGggd3JvbmcgaW1wbGVtZW50YXRpb24gYW5kIHBvbGljeS4KLQotICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbC5jcHA6
Ci0gICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6Ok5vdGlm
aWNhdGlvblByZXNlbnRlckNsaWVudEVmbCk6Ci0gICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRp
b25QcmVzZW50ZXJDbGllbnRFZmw6OnJlcXVlc3RQZXJtaXNzaW9uKToKLSAgICAgICAgKFdlYkNv
cmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6Y2hlY2tQZXJtaXNzaW9uKToKLSAg
ICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6Y2FuY2VsUmVx
dWVzdHNGb3JQZXJtaXNzaW9uKToKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRp
b25QcmVzZW50ZXJDbGllbnRFZmwuaDoKLSAgICAgICAgKE5vdGlmaWNhdGlvblByZXNlbnRlckNs
aWVudEVmbCk6Ci0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAgKF9ld2tfdmll
d19wcml2X25ldyk6Ci0gICAgICAgICogZXdrL2V3a192aWV3Lmg6Ci0gICAgICAgICogZXdrL2V3
a192aWV3X3ByaXZhdGUuaDoKLQotMjAxMi0wOS0wNyAgS2lob25nIEt3b24gIDxraWhvbmcua3dv
bkBzYW1zdW5nLmNvbT4KLQotICAgICAgICBbRUZMXSBTdXBwb3J0IHRoZSBwZXJtaXNzaW9uIGZ1
bmN0aW9uIG9mIHRoZSBXZWIgTm90aWZpY2F0aW9uLgotICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTA2MDMKLQotICAgICAgICBSZXZpZXdlZCBieSBHeXV5
b3VuZyBLaW0uCi0KLSAgICAgICAgSW1wbGVtZW50IHBlcm1pc3Npb24gcmVsYXRlZCBmdW5jdGlv
bnMgb2YgV2ViIE5vdGlmaWNhdGlvbnMuCi0gICAgICAgIGNoZWNrUGVybWlzc2lvbiBmb3IgTm90
aWZpY2F0aW9uLnBlcm1pc3Npb25MZXZlbCgpLgotICAgICAgICByZXF1ZXN0UGVybWlzc2lvbiBm
b3IgTm90aWZpY2F0aW9uLnJlcXVlc3RQZXJtaXNzaW9uKCkuCi0gICAgICAgIEluIGFkZGl0aW9u
LCBpZiB0aGUgYXBwbGljYXRpb24obGlrZSBhIGJyb3dzZXIpIGhhcyBwZXJtaXR0ZWQgZG9tYWlu
cyBhbHJlYWR5LAotICAgICAgICBpdCBjYW4gYmUgY2FjaGVkIHVzaW5nIGV3a192aWV3X25vdGlm
aWNhdGlvbl9wZXJtaXNzaW9uc19zdG9yZS4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L05v
dGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpOb3Rp
ZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVm
bCk6Ci0gICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6OnJl
cXVlc3RQZXJtaXNzaW9uKToKLSAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRl
ckNsaWVudEVmbDo6Y2hlY2tQZXJtaXNzaW9uKToKLSAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNh
dGlvblByZXNlbnRlckNsaWVudEVmbDo6YWRkVG9QZXJtaXNzaW9uQ2FjaGUpOgotICAgICAgICAo
V2ViQ29yZSk6Ci0gICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRF
Zmw6OnNldFBlcm1pc3Npb24pOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L05vdGlmaWNhdGlv
blByZXNlbnRlckNsaWVudEVmbC5oOgotICAgICAgICAoV2ViQ29yZSk6Ci0gICAgICAgIChOb3Rp
ZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwpOgotICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0
aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpyZXF1ZXN0UGVybWlzc2lvbik6Ci0gICAgICAgIChXZWJD
b3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6OmNhbmNlbFJlcXVlc3RzRm9yUGVy
bWlzc2lvbik6Ci0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAgKF9ld2tfdmll
d19wcml2X25ldyk6Ci0gICAgICAgIChld2tfdmlld19ub3RpZmljYXRpb25fcGVybWlzc2lvbl9z
dG9yZSk6Ci0gICAgICAgIChld2tfdmlld19ub3RpZmljYXRpb25fcGVybWlzc2lvbnNfc2V0KToK
LSAgICAgICAgKGV3a192aWV3X25vdGlmaWNhdGlvbl9wZXJtaXNzaW9uX3JlcXVlc3QpOgotICAg
ICAgICAqIGV3ay9ld2tfdmlldy5oOgotICAgICAgICAqIGV3ay9ld2tfdmlld19wcml2YXRlLmg6
Ci0KLTIwMTItMDktMDUgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KLQotICAgICAgICBQ
YXJ0IDIgb2YgcmVtb3ZpbmcgUGxhdGZvcm1TdHJpbmcuaCwgcmVtb3ZlIFBsYXRmb3JtU3RyaW5n
LmgKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1OTMx
Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KLQotICAgICAgICBSZW1vdmUgUGxh
dGZvcm1TdHJpbmcuaAotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZs
LmNwcDoKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRFZmwuY3BwOgot
Ci0yMDEyLTA5LTA2ICBLYW5naWwgSGFuICA8a2FuZ2lsLmhhbkBzYW1zdW5nLmNvbT4KLQotICAg
ICAgICBbRUZMXSBSZW1vdmUgdW5uZWNlc3NhcnkgbG9naWMgaW4gZXdrX2ZyYW1lX3NvdXJjZV9n
ZXQuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTgy
OAotCi0gICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgotCi0g
ICAgICAgIFJlbW92ZWQgdW5uZWNlc3NhcnkgbG9naWMgdGhhdCBjaGVja3MgaWYgPGh0bWw+IHRh
ZyBleGlzdHMgaW4gZG9jdW1lbnQuCi0gICAgICAgIFdlYktpdCBhdXRvbWF0aWNhbGx5IGZpbGwg
b3V0IDxodG1sPjwvaHRtbD4gdGFncyBpZiB0aGV5IGFyZSBub3QgZXhpc3RlZC4KLQotICAgICAg
ICAqIGV3ay9ld2tfZnJhbWUuY3BwOgotICAgICAgICAoZXdrX2ZyYW1lX3NvdXJjZV9nZXQpOgot
Ci0yMDEyLTA5LTA1ICBLYW5naWwgSGFuICA8a2FuZ2lsLmhhbkBzYW1zdW5nLmNvbT4KLQotICAg
ICAgICBbRUZMXSBSZW1vdmUgJys9JyB1c2FnZSBpbiBTdHJpbmcKLSAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1ODA4Ci0KLSAgICAgICAgUmV2aWV3ZWQg
YnkgQmVuamFtaW4gUG91bGFpbi4KLQotICAgICAgICBSZXBsYWNlZCB1c2Ugb2YgU3RyaW5nIG9w
ZXJhdG9yICcrPScgd2l0aCBTdHJpbmdCdWlsZGVyLmFwcGVuZCooKSBpbiBvcmRlciB0byBhZG9w
dCBlZmZpY2llbnQgU3RyaW5nIGNvbmNhdGVuYXRpb24uCi0KLSAgICAgICAgKiBld2svZXdrX2Zy
YW1lLmNwcDoKLSAgICAgICAgKGV3a19mcmFtZV9zb3VyY2VfZ2V0KTogUmVtb3ZlZCB1bm5lY2Vz
c2FyeSBzdHJsZW4gdXNhZ2UuCi0KLTIwMTItMDktMDUgIEthdXN0dWJoIEF0cmF3YWxrYXIgIDxr
YXVzdHViaEBtb3Rvcm9sYS5jb20+Ci0KLSAgICAgICAgW0RSVF0gTFRDOjogTW92ZSBwcmludGlu
ZyByZWxhdGVkIEFQSXMgZnJvbSBMYXlvdXRUZXN0Q29udHJvbGxlciB0byBJbnRlcm5hbHMKLSAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkyNzM1Ci0KLSAg
ICAgICAgUmV2aWV3ZWQgYnkgSGFqaW1lIE1vcml0YS4KLQotICAgICAgICBNb3ZlIG51bWJlck9m
UGFnZXMsIHBhZ2VQcm9wZXJ0eSAmIHBhZ2VTaXplQW5kTWFyZ2luc0luUGl4ZWxzIGluIEludGVy
bmFscyBhbmQgcmVtb3ZlIGR1cGxpY2F0ZWQgY29kZSBmcm9tIER1bXByZW5kZXJUcmVlICYgV2Vi
a2l0VGVzdFJ1bm5lci4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVl
U3VwcG9ydEVmbC5jcHA6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVT
dXBwb3J0RWZsLmg6Ci0KLTIwMTItMDktMDQgIE1pY2hhxYIgUGFrdcWCYSB2ZWwgUnV0a2EgIDxt
LnBha3VsYUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBbRUZMXSBDb250ZXh0IG1lbnUgcmVzdG9y
ZS4gCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDE3
OQotCi0gICAgICAgIFJldmlld2VkIGJ5IEd5dXlvdW5nIEtpbS4KLQotICAgICAgICBBZGRzIGNv
bnRleHQgbWVudSBzdXBwb3J0IGZvciBFRkwgcG9ydCB1c2luZyBub24tQ1JPU1NfUExBVEZPUk1f
Q09OVEVYVF9NRU5VUwotICAgICAgICBhcHByb2FjaCwgdGhlIHNhbWUgYXMgdXNlZCBpbiBXZWJL
aXQyLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ29udGV4dE1lbnVDbGllbnRFZmwuY3Bw
OiBBZGRlZC4KLSAgICAgICAgKFdlYkNvcmUpOgotICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1l
bnVDbGllbnRFZmw6OmNvbnRleHRNZW51RGVzdHJveWVkKToKLSAgICAgICAgKFdlYkNvcmU6OkNv
bnRleHRNZW51Q2xpZW50RWZsOjpnZXRDdXN0b21NZW51RnJvbURlZmF1bHRJdGVtcyk6Ci0gICAg
ICAgIChXZWJDb3JlOjpDb250ZXh0TWVudUNsaWVudEVmbDo6Y29udGV4dE1lbnVJdGVtU2VsZWN0
ZWQpOgotICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDbGllbnRFZmw6OmRvd25sb2FkVVJM
KToKLSAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51Q2xpZW50RWZsOjpsb29rVXBJbkRpY3Rp
b25hcnkpOgotICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDbGllbnRFZmw6OnNwZWFrKToK
LSAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51Q2xpZW50RWZsOjppc1NwZWFraW5nKToKLSAg
ICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51Q2xpZW50RWZsOjpzdG9wU3BlYWtpbmcpOgotICAg
ICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDbGllbnRFZmw6OnNlYXJjaFdpdGhHb29nbGUpOgot
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0NvbnRleHRNZW51Q2xpZW50RWZsLmg6IEFkZGVkLgot
ICAgICAgICAoV2ViQ29yZSk6Ci0gICAgICAgIChDb250ZXh0TWVudUNsaWVudEVmbCk6Ci0gICAg
ICAgICogZXdrL2V3a19jb250ZXh0bWVudS5jcHA6IFJlbW92ZWQgZXdrX2NvbnRleHRfbWVudV9j
dXN0b21pemUgaW1wbGVtZW50YXRpb24uCi0gICAgICAgIChld2tfY29udGV4dF9tZW51X2Rlc3Ry
b3kpOiBBZGRlZCBmcmVlaW5nIGNvbnRleHQgbWVudS4gCi0gICAgICAgIChld2tfY29udGV4dF9t
ZW51X25ldyk6IEFkZGVkIGZpbGxpbmcgZXdrX2NvbnRleHRtZW51IGxpc3QuCi0gICAgICAgIChl
d2tfY29udGV4dF9tZW51X2l0ZW1fYXBwZW5kKToKLSAgICAgICAgKiBld2svZXdrX2NvbnRleHRt
ZW51X3ByaXZhdGUuaDogUmVtb3ZlZCBld2tfY29udGV4dF9tZW51X2N1c3RvbWl6ZSBhbmQgY2hh
bmdlZCBld2tfY29udGV4dF9tZW51X25ldyBkZWZpbml0aW9uLgotICAgICAgICAqIGV3ay9ld2tf
dmlldy5jcHA6Ci0gICAgICAgIChfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKToKLSAgICAgICAgKF9l
d2tfdmlld19wcml2X25ldyk6Ci0gICAgICAgIChfZXdrX3ZpZXdfcHJpdl9kZWwpOgotICAgICAg
ICAoZXdrX3ZpZXdfY29udGV4dF9tZW51X2ZvcndhcmRfZXZlbnQpOgotCi0yMDEyLTA5LTA0ICBS
eXVhbiBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBbRUZMXSBEcm9w
IGRlZmF1bHQgdGhlbWUgY29uY2VwdAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTQ3NzgKLQotICAgICAgICBSZXZpZXdlZCBieSBHeXV5b3VuZyBLaW0u
Ci0KLSAgICAgICAgKiBld2svZXdrX3ZpZXcuaDoKLSAgICAgICAgVXBkYXRlZCBkb3h5Z2VuIGRv
Y3VtZW50IG5vdCB0byBtZW50aW9uIGRlZmF1bHQgdGhlbWUuCi0KLTIwMTItMDktMDMgIEppbndv
byBTb25nICA8amlud29vNy5zb25nQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxdIEZpeCBl
X2RidXNfc2h1dGRvd24oKSBlcnJvciB3aGVuIGV4aXRpbmcgdGhlIE1pbmlicm93c2VyCi0gICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTYzNgotCi0gICAg
ICAgIFJldmlld2VkIGJ5IEd5dXlvdW5nIEtpbS4KLQotICAgICAgICBJbnZva2Ugc3RvcFVwZGF0
aW5nKCkgaW4gdGhlIGRlc3RydWN0b3Igb2YgQmF0dGVyeUNsaW5ldEVmbCgpCi0gICAgICAgIHRv
IGNhbGwgZV91a2l0X3NodXRkb3duKCkgYW5kIGVfZGJ1c19zaHV0ZG93bigpIGlmIGFuZCB3aGVu
IAotICAgICAgICBzdG9wVXBkYXRpbmcoKSBoYXMgbm90IGJlZW4gY2FsbGVkIGV4cGxpY2l0bHku
Ci0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9CYXR0ZXJ5Q2xpZW50RWZsLmNwcDoKLSAgICAg
ICAgKEJhdHRlcnlDbGllbnRFZmw6On5CYXR0ZXJ5Q2xpZW50RWZsKToKLSAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9CYXR0ZXJ5Q2xpZW50RWZsLmg6Ci0gICAgICAgIChCYXR0ZXJ5Q2xpZW50RWZs
KToKLQotMjAxMi0wOS0wMyAgSmlud29vIFNvbmcgIDxqaW53b283LnNvbmdAc2Ftc3VuZy5jb20+
Ci0KLSAgICAgICAgW0VGTF0gVXNlIFdlYktpdFZlcnNpb24uaCB0byBnZXQgdmVyc2lvbiBpbmZv
cm1hdGlvbgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTU2NjkKLQotICAgICAgICBSZXZpZXdlZCBieSBHeXV5b3VuZyBLaW0uCi0KLSAgICAgICAgVXNl
IFdFQktJVF9NQUpPUl9WRVJTSU9OIGFuZCBXRUJLSVRfTUlOT1JfVkVSU0lPTiAKLSAgICAgICAg
aW4gdGhlIFdlYktpdFZlcnNpb24uaAotCi0gICAgICAgIFJlbG9jYXRlIHRoZSBTdG9yYWdlVHJh
Y2tlci5oIHRvIGtlZXAgdGhlIHNvcnRlZCBvcmRlci4KLQotICAgICAgICAqIGV3ay9ld2tfc2V0
dGluZ3MuY3BwOgotICAgICAgICAoZXdrX3NldHRpbmdzX2RlZmF1bHRfdXNlcl9hZ2VudF9nZXQp
OgotCi0yMDEyLTA5LTAxICBKaW53b28gU29uZyAgPGppbndvbzcuc29uZ0BzYW1zdW5nLmNvbT4K
LQotICAgICAgICBbRUZMXSBSZWZhY3RvcmluZyB0aGUgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZs
Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTU0NAot
Ci0gICAgICAgIFJldmlld2VkIGJ5IEd5dXlvdW5nIEtpbS4KLQotICAgICAgICBUaGVyZSBhcmUg
bG90cyBvZiByZXBlYXRlZCBjb2RlcyBmb3IgZ2V0dGluZyB0aGUgV2ViQ29yZTo6RnJhbWUgCi0g
ICAgICAgIGFuZCBXZWJDb3JlOjpQYWdlLiBUbyByZWR1Y2UgdGhlc2UgZHVwbGljYXRpb25zLCBz
aW1wbGUgbWFjcm9zCi0gICAgICAgIGFyZSBhZGRlZC4KLQotICAgICAgICBObyBuZXcgdGVzdHMs
IGp1c3QgcmVmYWN0b3JpbmcuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVy
VHJlZVN1cHBvcnRFZmwuY3BwOgotICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjph
Y3RpdmVBbmltYXRpb25zQ291bnQpOgotICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZs
OjpjYWxsU2hvdWxkQ2xvc2VPbldlYlZpZXcpOgotICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBw
b3J0RWZsOjpjbGVhckZyYW1lTmFtZSk6Ci0gICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRF
Zmw6OmNsZWFyT3BlbmVyKToKLSAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6ZWxl
bWVudERvZXNBdXRvQ29tcGxldGVGb3JFbGVtZW50V2l0aElkKToKLSAgICAgICAgKER1bXBSZW5k
ZXJUcmVlU3VwcG9ydEVmbDo6ZnJhbWVDaGlsZHJlbik6Ci0gICAgICAgIChEdW1wUmVuZGVyVHJl
ZVN1cHBvcnRFZmw6OmZyYW1lUGFyZW50KToKLSAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9y
dEVmbDo6bGF5b3V0RnJhbWUpOgotICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpu
dW1iZXJPZlBhZ2VzKToKLSAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6cGFnZVNp
emVBbmRNYXJnaW5zSW5QaXhlbHMpOgotICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZs
OjpwYWdlUHJvcGVydHkpOgotICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpwYXVz
ZUFuaW1hdGlvbik6Ci0gICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OnBhdXNlVHJh
bnNpdGlvbik6Ci0gICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OnBlbmRpbmdVbmxv
YWRFdmVudENvdW50KToKLSAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6cmVuZGVy
VHJlZUR1bXApOgotICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpyZXNwb25zZU1p
bWVUeXBlKToKLSAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6c2VsZWN0aW9uUmVj
dGFuZ2xlKToKLSAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6c3VpdGFibGVEUlRG
cmFtZU5hbWUpOgotICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpzZXREZWZlcnNM
b2FkaW5nKToKLSAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6c2V0TG9hZHNTaXRl
SWNvbnNJZ25vcmluZ0ltYWdlTG9hZGluZ1NldHRpbmcpOgotICAgICAgICAoRHVtcFJlbmRlclRy
ZWVTdXBwb3J0RWZsOjphZGRVc2VyU2NyaXB0KToKLSAgICAgICAgKER1bXBSZW5kZXJUcmVlU3Vw
cG9ydEVmbDo6Y2xlYXJVc2VyU2NyaXB0cyk6Ci0gICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBv
cnRFZmw6OmFkZFVzZXJTdHlsZVNoZWV0KToKLSAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9y
dEVmbDo6Y2xlYXJVc2VyU3R5bGVTaGVldHMpOgotICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBw
b3J0RWZsOjpleGVjdXRlQ29yZUNvbW1hbmRCeU5hbWUpOgotICAgICAgICAoRHVtcFJlbmRlclRy
ZWVTdXBwb3J0RWZsOjpmaW5kU3RyaW5nKToKLSAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9y
dEVmbDo6c2V0Q1NTR3JpZExheW91dEVuYWJsZWQpOgotICAgICAgICAoRHVtcFJlbmRlclRyZWVT
dXBwb3J0RWZsOjppc0NvbW1hbmRFbmFibGVkKToKLSAgICAgICAgKER1bXBSZW5kZXJUcmVlU3Vw
cG9ydEVmbDo6c2V0U21hcnRJbnNlcnREZWxldGVFbmFibGVkKToKLSAgICAgICAgKER1bXBSZW5k
ZXJUcmVlU3VwcG9ydEVmbDo6c2V0U2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCk6Ci0g
ICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OmV2YWx1YXRlSW5XZWJJbnNwZWN0b3Ip
OgotICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpldmFsdWF0ZVNjcmlwdEluSXNv
bGF0ZWRXb3JsZCk6Ci0gICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6Omdsb2JhbENv
bnRleHRSZWZGb3JGcmFtZSk6Ci0gICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OnNl
dEludGVyYWN0aXZlRm9ybVZhbGlkYXRpb25FbmFibGVkKToKLSAgICAgICAgKER1bXBSZW5kZXJU
cmVlU3VwcG9ydEVmbDo6c2V0VmFsaWRhdGlvbk1lc3NhZ2VUaW1lck1hZ25pZmljYXRpb24pOgot
ICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpzZXRBdXRob3JBbmRVc2VyU3R5bGVz
RW5hYmxlZCk6Ci0gICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OnNldENvbXBvc2l0
aW9uKToKLSAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6aGFzQ29tcG9zaXRpb24p
OgotICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpjb21wb3NpdGlvblJhbmdlKToK
LSAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6Y29uZmlybUNvbXBvc2l0aW9uKToK
LSAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVy
UmFuZ2UpOgotICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpzZWxlY3RlZFJhbmdl
KToKLQotMjAxMi0wOC0zMSAgQ2hyaXN0b3BoZSBEdW1leiAgPGNocmlzdG9waGUuZHVtZXpAaW50
ZWwuY29tPgotCi0gICAgICAgIFtFRkxdIEFkZCBwcm9wZXIgc3VwcG9ydCBmb3IgbmF2aWdhdG9y
Lm9uTGluZSBhbmQgYXNzb2NpYXRlZCBldmVudHMKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NTMyCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0
aCBSb2hkZSBDaHJpc3RpYW5zZW4uCi0KLSAgICAgICAgUmVtb3ZlIGV3a19uZXR3b3JrX3N0YXRl
X25vdGlmaWVyX29ubGluZV9zZXQoKSBBUEkgc2luY2UKLSAgICAgICAgdGhlIEVGTCBwb3J0IG5v
IGxvbmdlciByZWxpZXMgb24gdGhlIGNsaWVudCBhcHBsaWNhdGlvbiB0bwotICAgICAgICBwcm92
aWRlIGl0IHdpdGggdGhlIG9ubGluZSBzdGF0ZS4KLQotICAgICAgICAqIGV3ay9ld2tfbmV0d29y
ay5jcHA6Ci0gICAgICAgICogZXdrL2V3a19uZXR3b3JrLmg6Ci0KLTIwMTItMDgtMzEgIEppbndv
byBTb25nICA8amlud29vNy5zb25nQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxdIFNpbXBs
aWZ5IEZyYW1lTG9hZGVyQ2xpbmV0RWZsIGJ5IGFkZGluZyBhIHByaXZhdGUgbWV0aG9kLgotICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU0NDQKLQotICAg
ICAgICBSZXZpZXdlZCBieSBHeXV5b3VuZyBLaW0uCi0KLSAgICAgICAgSW4gdGhlIEZyYW1lTG9h
ZGVyQ2xpZW50RWZsLCB0aGUgY29kZXMgd2hpY2ggY2hlY2tzIHRoYXQgCi0gICAgICAgIGlmIGN1
cnJlbnQgZnJhbWUgaXMgbWFpbiBmcmFtZSBhcmUgZnJlcXVlbnRseSB1c2VkLgotICAgICAgICBU
aGlzIHBhdGNoIGFkZHMgYSBwcml2YXRlIG1ldGhvZCBhbmQgcmVwbGFjZXMgdGhvc2UgY29kZXMg
Ci0gICAgICAgIHdpdGggdGhlIG1ldGhvZCB0byBzaW1wbGlmeS4KLQotICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZSk6
Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRSZWNl
aXZlSWNvbik6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0
Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCk6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
ckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUpOgotICAgICAgICAoV2ViQ29yZTo6
RnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkQ29tbWl0TG9hZCk6Ci0gICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxM
b2FkKToKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjp0cmFuc2l0aW9u
VG9Db21taXR0ZWRGb3JOZXdQYWdlKToKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudEVmbC5oOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6
OmlzTG9hZGluZ01haW5GcmFtZSk6Ci0KLTIwMTItMDgtMzAgIEJlbmphbWluIFBvdWxhaW4gIDxi
cG91bGFpbkBhcHBsZS5jb20+Ci0KLSAgICAgICAgUmVwbGFjZSBKU0M6OlVTdHJpbmcgYnkgV1RG
OjpTdHJpbmcKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTk1MjcxCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCi0KLSAgICAgICAg
UmVwbGFjZSBVU3RyaW5nIGJ5IFN0cmluZy4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1
bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHA6Ci0gICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBv
cnRFZmw6OnNlbmRXZWJJbnRlbnRSZXNwb25zZSk6Ci0gICAgICAgICogZXdrL2V3a19mcmFtZS5j
cHA6Ci0gICAgICAgIChld2tfZnJhbWVfc2NyaXB0X2V4ZWN1dGUpOgotCi0yMDEyLTA4LTI5ICBL
YW1pbCBCbGFuayAgPGsuYmxhbmtAc2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW0VGTF0gQWRkIHNl
dHRpbmcgQVBJIGZvciBhbGxvdyB1bml2ZXJzYWwvZmlsZSBhY2Nlc3MgZnJvbSBmaWxlIFVSTHMu
Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MzEyMQot
Ci0gICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgotCi0gICAgICAgIE1ha2UgaXQgcG9z
c2libGUgdG8gZW5hYmxlIGFsbG93IHVuaXZlcnNhbC9maWxlIGFjY2VzcyBmcm9tIGZpbGUgVVJM
cy4KLSAgICAgICAgRGVmYXVsdCB2YWx1ZSBmb3IgYm90aCBzZXR0aW5ncyBpcyB0cnVlLgotCi0g
ICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAgKF9Fd2tfVmlld19Qcml2YXRlX0Rh
dGEpOgotICAgICAgICAoX2V3a192aWV3X3ByaXZfbmV3KToKLSAgICAgICAgKGV3a192aWV3X3Nl
dHRpbmdfYWxsb3dfdW5pdmVyc2FsX2FjY2Vzc19mcm9tX2ZpbGVfdXJsc19zZXQpOiBGdW5jdGlv
biBzZXRzIGlmIGxvY2FsbHkgbG9hZGVkIGRvY3VtZW50cwotICAgICAgICBhcmUgYWxsb3dlZCB0
byBhY2Nlc3MgcmVtb3RlIHVybHMuCi0gICAgICAgIChld2tfdmlld19zZXR0aW5nX2FsbG93X3Vu
aXZlcnNhbF9hY2Nlc3NfZnJvbV9maWxlX3VybHNfZ2V0KToKLSAgICAgICAgKGV3a192aWV3X3Nl
dHRpbmdfYWxsb3dfZmlsZV9hY2Nlc3NfZnJvbV9maWxlX3VybHNfc2V0KTogRnVuY3Rpb24gc2V0
cyBpZiBsb2NhbGx5IGxvYWRlZCBkb2N1bWVudHMKLSAgICAgICAgYXJlIGFsbG93ZWQgdG8gYWNj
ZXNzIG90aGVyIGxvY2FsIHVybHMuCi0gICAgICAgIChld2tfdmlld19zZXR0aW5nX2FsbG93X2Zp
bGVfYWNjZXNzX2Zyb21fZmlsZV91cmxzX2dldCk6Ci0gICAgICAgICogZXdrL2V3a192aWV3Lmg6
Ci0KLTIwMTItMDgtMjkgIFJ5dWFuIENob2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgotCi0g
ICAgICAgIFtFRkxdIEFkZCAqZXhwbGljaXQqIGtleXdvcmQgdG8gY29uc3RydWN0b3JzIGluIFdl
YkNvcmVTdXBwb3J0Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD05NTMwNwotCi0gICAgICAgIFJldmlld2VkIGJ5IEtlbnRhcm8gSGFyYS4KLQotICAgICAg
ICBBZGRlZCBleHBsaWNpdCBrZXl3b3JkIGluIGNvbnN0cnVjdG9ycyBpbiBvcmRlciB0byBhdm9p
ZCBpbXBsaWNpdCB0eXBlIGNvbnZlcnNpb24uCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9D
b2xvckNob29zZXJFZmwuaDoKLSAgICAgICAgKENvbG9yQ2hvb3NlckVmbCk6Ci0gICAgICAgICog
V2ViQ29yZVN1cHBvcnQvUG9wdXBNZW51RWZsLmg6Ci0gICAgICAgIChQb3B1cE1lbnVFZmwpOgot
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudUVmbC5oOgotICAgICAgICAo
U2VhcmNoUG9wdXBNZW51RWZsKToKLQotMjAxMi0wOC0yOSAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNo
b2lAc2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW0VGTF0gTW92ZSBzZXZlcmFsIGZpbGVzIHRvIHJl
bW92ZSB3ZWJraXQxIGRlcGVuZGVuY3kgZnJvbSBXZWJDb3JlLgotICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTUyNjQKLQotICAgICAgICBSZXZpZXdlZCBi
eSBHeXV5b3VuZyBLaW0uCi0KLSAgICAgICAgQ29sb3JDaG9vc2VyRWZsLmNwcCwgUG9wdXBNZW51
RWZsLmNwcCBhbmQgU2VhcmNoUG9wdXBNZW51RWZsLmNwcCBhcmUgV2ViS2l0MS9FZmwKLSAgICAg
ICAgc3BlY2lmaWMgZmlsZXMgYW5kIHRoZXkgY2FuIG5vdCBiZSBzaGFyZWQgd2l0aCBXZWJLaXQy
L0VmbC4KLQotICAgICAgICBJbiBvcmRlciB0byByZW1vdmUgV2ViS2l0IGRlcGVuZGVuY3kgZnJv
bSBXZWJDb3JlLCB0aGlzIHBhdGNoIG1vdmVzIHRoZW0KLSAgICAgICAgdG8gV2ViS2l0L2VmbC9X
ZWJDb3JlU3VwcG9ydC4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0NvbG9yQ2hvb3NlckVm
bC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvQ29sb3JDaG9v
c2VyRWZsLmNwcC4KLSAgICAgICAgKFdlYkNvcmUpOgotICAgICAgICAoV2ViQ29yZTo6Q29sb3JD
aG9vc2VyRWZsOjpDb2xvckNob29zZXJFZmwpOgotICAgICAgICAoV2ViQ29yZTo6Q29sb3JDaG9v
c2VyRWZsOjp+Q29sb3JDaG9vc2VyRWZsKToKLSAgICAgICAgKFdlYkNvcmU6OkNvbG9yQ2hvb3Nl
ckVmbDo6c2V0U2VsZWN0ZWRDb2xvcik6Ci0gICAgICAgIChXZWJDb3JlOjpDb2xvckNob29zZXJF
Zmw6OmVuZENob29zZXIpOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0NvbG9yQ2hvb3NlckVm
bC5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL0NvbG9yQ2hvb3Nl
ckVmbC5oLgotICAgICAgICAoV2ViQ29yZSk6Ci0gICAgICAgIChDb2xvckNob29zZXJFZmwpOgot
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1BvcHVwTWVudUVmbC5jcHA6IFJlbmFtZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUG9wdXBNZW51RWZsLmNwcC4KLSAgICAgICAgKFdl
YkNvcmUpOgotICAgICAgICAoV2ViQ29yZTo6UG9wdXBNZW51RWZsOjpQb3B1cE1lbnVFZmwpOgot
ICAgICAgICAoV2ViQ29yZTo6UG9wdXBNZW51RWZsOjp+UG9wdXBNZW51RWZsKToKLSAgICAgICAg
KFdlYkNvcmU6OlBvcHVwTWVudUVmbDo6c2hvdyk6Ci0gICAgICAgIChXZWJDb3JlOjpQb3B1cE1l
bnVFZmw6OmhpZGUpOgotICAgICAgICAoV2ViQ29yZTo6UG9wdXBNZW51RWZsOjp1cGRhdGVGcm9t
RWxlbWVudCk6Ci0gICAgICAgIChXZWJDb3JlOjpQb3B1cE1lbnVFZmw6OmRpc2Nvbm5lY3RDbGll
bnQpOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1BvcHVwTWVudUVmbC5oOiBSZW5hbWVkIGZy
b20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1BvcHVwTWVudUVmbC5oLgotICAgICAgICAo
V2ViQ29yZSk6Ci0gICAgICAgIChQb3B1cE1lbnVFZmwpOgotICAgICAgICAoV2ViQ29yZTo6UG9w
dXBNZW51RWZsOjpjbGllbnQpOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVw
TWVudUVmbC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvU2Vh
cmNoUG9wdXBNZW51RWZsLmNwcC4KLSAgICAgICAgKFdlYkNvcmUpOgotICAgICAgICAoV2ViQ29y
ZTo6U2VhcmNoUG9wdXBNZW51RWZsOjpTZWFyY2hQb3B1cE1lbnVFZmwpOgotICAgICAgICAoV2Vi
Q29yZTo6U2VhcmNoUG9wdXBNZW51RWZsOjpwb3B1cE1lbnUpOgotICAgICAgICAoV2ViQ29yZTo6
U2VhcmNoUG9wdXBNZW51RWZsOjpzYXZlUmVjZW50U2VhcmNoZXMpOgotICAgICAgICAoV2ViQ29y
ZTo6U2VhcmNoUG9wdXBNZW51RWZsOjpsb2FkUmVjZW50U2VhcmNoZXMpOgotICAgICAgICAoV2Vi
Q29yZTo6U2VhcmNoUG9wdXBNZW51RWZsOjplbmFibGVkKToKLSAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9TZWFyY2hQb3B1cE1lbnVFZmwuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2VmbC9TZWFyY2hQb3B1cE1lbnVFZmwuaC4KLSAgICAgICAgKFdlYkNvcmUpOgotICAg
ICAgICAoU2VhcmNoUG9wdXBNZW51RWZsKToKLQotMjAxMi0wOC0yOCAgU2Vva2p1IEt3b24gIDxz
ZW9ranUua3dvbkBzYW1zdW5nLmNvbT4KLQotICAgICAgICBbRUZMXSBBZGQgc3VwcG9ydCBmb3Ig
bG9jYWxpemF0aW9uIHRvIHRoZSBXZWIgSW5zcGVjdG9yCi0gICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05Mjk2MQotCi0gICAgICAgIFJldmlld2VkIGJ5IEd5
dXlvdW5nIEtpbS4KLQotICAgICAgICBJbXBsZW1lbnQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRF
Zmw6OmxvY2FsaXplZFN0cmluZ3NVUkwoKQotICAgICAgICB0byByZXR1cm4gdGhlIFVSTCBvZiB0
aGUgbG9jYWxpemVkU3RyaW5ncy5qcy4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0luc3Bl
Y3RvckNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnRFZmw6
Om9wZW5JbnNwZWN0b3JGcm9udGVuZCk6Ci0gICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDbGll
bnRFZmw6Omluc3BlY3RvckZpbGVzUGF0aCk6Ci0gICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JG
cm9udGVuZENsaWVudEVmbDo6bG9jYWxpemVkU3RyaW5nc1VSTCk6Ci0KLTIwMTItMDgtMjggIFNo
ZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgotCi0gICAgICAgIFVucmV2
aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMjY5MTQuCi0gICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5v
cmcvY2hhbmdlc2V0LzEyNjkxNAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9OTUyMzkKLQotICAgICAgICBpdCBicmVha3MgZXZlcnl0aGluZyBhbmQgZml4
ZXMgbm90aGluZyAoUmVxdWVzdGVkIGJ5IHBpemxvIG9uCi0gICAgICAgICN3ZWJraXQpLgotCi0g
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcDoKLSAg
ICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6ZXZhbHVhdGVTY3JpcHRJbklzb2xhdGVk
V29ybGQpOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0VmbC5j
cHA6Ci0gICAgICAgIChQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6OmdldFBsdWdpbkluZm8pOgotICAg
ICAgICAqIGV3ay9ld2tfaW50ZW50LmNwcDoKLSAgICAgICAgKGV3a19pbnRlbnRfZXh0cmFfZ2V0
KToKLQotMjAxMi0wOC0yOCAgQ2FpbyBNYXJjZWxvIGRlIE9saXZlaXJhIEZpbGhvICA8Y2Fpby5v
bGl2ZWlyYUBvcGVuYm9zc2Eub3JnPgotCi0gICAgICAgIFJlbmFtZSBmaXJzdC9zZWNvbmQgdG8g
a2V5L3ZhbHVlIGluIEhhc2hNYXAgaXRlcmF0b3JzCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD04Mjc4NAotCi0gICAgICAgIFJldmlld2VkIGJ5IEVyaWMg
U2VpZGVsLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0
RWZsLmNwcDoKLSAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6ZXZhbHVhdGVTY3Jp
cHRJbklzb2xhdGVkV29ybGQpOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3Ry
YXRlZ2llc0VmbC5jcHA6Ci0gICAgICAgIChQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6OmdldFBsdWdp
bkluZm8pOgotICAgICAgICAqIGV3ay9ld2tfaW50ZW50LmNwcDoKLSAgICAgICAgKGV3a19pbnRl
bnRfZXh0cmFfZ2V0KToKLQotMjAxMi0wOC0yOCAgQ2hyaXN0b3BoZSBEdW1leiAgPGNocmlzdG9w
aGUuZHVtZXpAaW50ZWwuY29tPgotCi0gICAgICAgIFtFRkxdIFdlYktpdCBFRkwgdXBkYXRlcyB2
aWV3IG9uIEhUVFAgMjA0IHJlc3BvbnNlCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD05NTE5OQotCi0gICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9o
ZGUgQ2hyaXN0aWFuc2VuLgotCi0gICAgICAgIElnbm9yZSBIVFRQIHJlc3BvbnNlcyB3aGljaCBo
YXZlIHN0YXR1cyBjb2RlIGVxdWFsCi0gICAgICAgIHRvIDIwNCAoTm8gQ29udGVudCkuCi0KLSAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHA6Ci0gICAgICAg
IChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JS
ZXNwb25zZSk6Ci0KLTIwMTItMDgtMjggIFRoaWFnbyBNYXJjb3MgUC4gU2FudG9zICA8dGhpYWdv
LnNhbnRvc0BpbnRlbC5jb20+Ci0KLSAgICAgICAgW0VGTF0gUmVuYW1lIGtub2IgaW1hZ2VzIHRv
IHRodW1iIG9uIHRoZSBkZWZhdWx0IHRoZW1lCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05NTE4NgotCi0gICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGgg
Um9oZGUgQ2hyaXN0aWFuc2VuLgotCi0gICAgICAgIFdlYktpdCByZWVmZXJzIHRvIHRoZXNlIGhh
bmRsZXMgYXMgdGh1bWIgaW5zdGVhZCBvZiBrbm9iLiBMZXQncyBtYWtlCi0gICAgICAgIGl0IGNv
aGVyZW50IG9uIEVGTC4KLQotICAgICAgICAqIERlZmF1bHRUaGVtZS93aWRnZXQvc2xpZGVyL3Ns
aWRlci5lZGM6Ci0gICAgICAgICogRGVmYXVsdFRoZW1lL3dpZGdldC9zbGlkZXIvc2xpZGVyX3Ro
dW1iX2gucG5nOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdC9lZmwvRGVmYXVsdFRoZW1lL3dp
ZGdldC9zbGlkZXIvc2xpZGVyX2tub2JfaC5wbmcuCi0gICAgICAgICogRGVmYXVsdFRoZW1lL3dp
ZGdldC9zbGlkZXIvc2xpZGVyX3RodW1iX3ByZXNzX2gucG5nOiBSZW5hbWVkIGZyb20gU291cmNl
L1dlYktpdC9lZmwvRGVmYXVsdFRoZW1lL3dpZGdldC9zbGlkZXIvc2xpZGVyX2tub2JfcHJlc3Nf
aC5wbmcuCi0gICAgICAgICogRGVmYXVsdFRoZW1lL3dpZGdldC9zbGlkZXIvc2xpZGVyX3RodW1i
X3ByZXNzX3YucG5nOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdC9lZmwvRGVmYXVsdFRoZW1l
L3dpZGdldC9zbGlkZXIvc2xpZGVyX2tub2JfcHJlc3Nfdi5wbmcuCi0gICAgICAgICogRGVmYXVs
dFRoZW1lL3dpZGdldC9zbGlkZXIvc2xpZGVyX3RodW1iX3YucG5nOiBSZW5hbWVkIGZyb20gU291
cmNlL1dlYktpdC9lZmwvRGVmYXVsdFRoZW1lL3dpZGdldC9zbGlkZXIvc2xpZGVyX2tub2Jfdi5w
bmcuCi0KLTIwMTItMDgtMjggIFRoaWFnbyBNYXJjb3MgUC4gU2FudG9zICA8dGhpYWdvLnNhbnRv
c0BpbnRlbC5jb20+Ci0KLSAgICAgICAgW0VGTF0gUmFuZ2UgaW5wdXQgaWdub3JlcyBwYWRkaW5n
Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NDU5NQot
Ci0gICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgotCi0gICAg
ICAgIFVwZGF0ZWQgZGVmYXVsdCB0aGVtZSB0byBwYWludCB0aGUgc2xpZGVyIHRodW1iIGluIGEg
ZGlmZmVyZW50IHN0ZXAuCi0gICAgICAgIFRoaXMgd2FzIGRvbmUgYnkgc3BsaXR0aW5nIHRoZSB0
aHVtYiBpbnRvIGEgc2VwYXJhdGVkIGdyb3VwLgotCi0gICAgICAgICogRGVmYXVsdFRoZW1lL3dp
ZGdldC9zbGlkZXIvc2xpZGVyLmVkYzoKLQotMjAxMi0wOC0yNyAgU2hlcmlmZiBCb3QgIDx3ZWJr
aXQucmV2aWV3LmJvdEBnbWFpbC5jb20+Ci0KLSAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBv
dXQgcjEyNjgzNi4KLSAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTI2
ODM2Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTE2
MwotCi0gICAgICAgIEJyb2tlIGFsbCBBcHBsZSBwb3J0cywgRUZMLCBhbmQgUXQuIChSZXF1ZXN0
ZWQgYnkgdGtlbnQgb24KLSAgICAgICAgI3dlYmtpdCkuCi0KLSAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwOgotICAgICAgICAoRHVtcFJlbmRlclRy
ZWVTdXBwb3J0RWZsOjpldmFsdWF0ZVNjcmlwdEluSXNvbGF0ZWRXb3JsZCk6Ci0gICAgICAgICog
V2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzRWZsLmNwcDoKLSAgICAgICAgKFBsYXRm
b3JtU3RyYXRlZ2llc0VmbDo6Z2V0UGx1Z2luSW5mbyk6Ci0gICAgICAgICogZXdrL2V3a19pbnRl
bnQuY3BwOgotICAgICAgICAoZXdrX2ludGVudF9leHRyYV9nZXQpOgotCi0yMDEyLTA4LTI3ICBD
YWlvIE1hcmNlbG8gZGUgT2xpdmVpcmEgRmlsaG8gIDxjYWlvLm9saXZlaXJhQG9wZW5ib3NzYS5v
cmc+Ci0KLSAgICAgICAgUmVuYW1lIGZpcnN0L3NlY29uZCB0byBrZXkvdmFsdWUgaW4gSGFzaE1h
cCBpdGVyYXRvcnMKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTgyNzg0Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCi0KLSAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwOgotICAgICAgICAo
RHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpldmFsdWF0ZVNjcmlwdEluSXNvbGF0ZWRXb3JsZCk6
Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzRWZsLmNwcDoKLSAg
ICAgICAgKFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6Z2V0UGx1Z2luSW5mbyk6Ci0gICAgICAgICog
ZXdrL2V3a19pbnRlbnQuY3BwOgotICAgICAgICAoZXdrX2ludGVudF9leHRyYV9nZXQpOgotCi0y
MDEyLTA4LTI3ICBNaWtoYWlsIFBvemRueWFrb3YgIDxtaWtoYWlsLnBvemRueWFrb3ZAaW50ZWwu
Y29tPgotCi0gICAgICAgIFJlbmFtZSBSZWdpc3RlclByb3RvY29sSGFuZGxlciBBUEkgdG8gTmF2
aWdhdG9yQ29udGVudFV0aWxzCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05NDkyMAotCi0gICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCi0KLSAg
ICAgICAgUmVuYW1pbmcgd2hhdGV2ZXIgUmVnaXN0ZXJQcm90b2NvbEhhbmRsZXItcHJlZml4ZWQg
dG8gTmF2aWdhdG9yQ29udGVudFV0aWxzLXByZWZpeGVkLgotICAgICAgICBSZWdpc3RlclByb3Rv
Y29sSGFuZGxlckNsaWVudEVmbCBpcyByZW5hbWVkIHRvIE5hdmlnYXRvckNvbnRlbnRVdGlsc0Ns
aWVudEVmbC4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L05hdmlnYXRvckNvbnRlbnRVdGls
c0NsaWVudEVmbC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3Vw
cG9ydC9SZWdpc3RlclByb3RvY29sSGFuZGxlckNsaWVudEVmbC5jcHAuCi0gICAgICAgIChXZWJD
b3JlKToKLSAgICAgICAgKFdlYkNvcmU6OmN1c3RvbUhhbmRsZXJEYXRhQ3JlYXRlKToKLSAgICAg
ICAgKFdlYkNvcmU6OmN1c3RvbUhhbmRsZXJEYXRhRGVsZXRlKToKLSAgICAgICAgKFdlYkNvcmU6
Ok5hdmlnYXRvckNvbnRlbnRVdGlsc0NsaWVudEVmbDo6Y3JlYXRlKToKLSAgICAgICAgKFdlYkNv
cmU6Ok5hdmlnYXRvckNvbnRlbnRVdGlsc0NsaWVudEVmbDo6TmF2aWdhdG9yQ29udGVudFV0aWxz
Q2xpZW50RWZsKToKLSAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvckNvbnRlbnRVdGlsc0NsaWVu
dEVmbDo6cmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIpOgotICAgICAgICAoV2ViQ29yZTo6TmF2aWdh
dG9yQ29udGVudFV0aWxzQ2xpZW50RWZsOjppc1Byb3RvY29sSGFuZGxlclJlZ2lzdGVyZWQpOgot
ICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yQ29udGVudFV0aWxzQ2xpZW50RWZsOjp1bnJlZ2lz
dGVyUHJvdG9jb2xIYW5kbGVyKToKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9OYXZpZ2F0b3JD
b250ZW50VXRpbHNDbGllbnRFZmwuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvZWZsL1dl
YkNvcmVTdXBwb3J0L1JlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyQ2xpZW50RWZsLmguCi0gICAgICAg
IChOYXZpZ2F0b3JDb250ZW50VXRpbHNDbGllbnRFZmwpOgotICAgICAgICAoV2ViQ29yZTo6TmF2
aWdhdG9yQ29udGVudFV0aWxzQ2xpZW50RWZsOjp+TmF2aWdhdG9yQ29udGVudFV0aWxzQ2xpZW50
RWZsKToKLSAgICAgICAgKiBld2svZXdrX2N1c3RvbV9oYW5kbGVyLmNwcDoKLSAgICAgICAgKiBl
d2svZXdrX2N1c3RvbV9oYW5kbGVyX3ByaXZhdGUuaDoKLSAgICAgICAgKiBld2svZXdrX3ZpZXcu
Y3BwOgotICAgICAgICAoX0V3a19WaWV3X1ByaXZhdGVfRGF0YSk6Ci0gICAgICAgIChfZXdrX3Zp
ZXdfcHJpdl9uZXcpOgotCi0yMDEyLTA4LTIzICBSeXVhbiBDaG9pICA8cnl1YW4uY2hvaUBzYW1z
dW5nLmNvbT4KLQotICAgICAgICBbRUZMXSBSZW1vdmUgZXdrX3RpbGVfbWF0cml4X3RpbGVfdXBk
YXRlLgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjM0
MzcKLQotICAgICAgICBSZXZpZXdlZCBieSBHeXV5b3VuZyBLaW0uCi0KLSAgICAgICAgKiBld2sv
ZXdrX3RpbGVkX21hdHJpeC5jcHA6Ci0gICAgICAgIFJlbW92ZWQgZXdrX3RpbGVfbWF0cml4X3Rp
bGVfdXBkYXRlIGFuZCBld2tfdGlsZV9tYXRyaXhfdGlsZV91cGRhdGVfZnVsbAotICAgICAgICB3
aGljaCBhcmUgZGVhZCBjb2RlLgotICAgICAgICAqIGV3ay9ld2tfdGlsZWRfbWF0cml4X3ByaXZh
dGUuaDogRGl0dG8uCi0KLTIwMTItMDgtMjEgIEtpaG9uZyBLd29uICA8a2lob25nLmt3b25Ac2Ft
c3VuZy5jb20+Ci0KLSAgICAgICAgW0VGTF1bR1RLXVtCbGFja0JlcnJ5XSBGaXggYnVpbGQgZXJy
b3IgaW4gdGhlIERldmljZU9yaWVudGF0aW9uQ2xpZW50Ci0gICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NDU4NgotCi0gICAgICAgIFJldmlld2VkIGJ5IEtl
bnRhcm8gSGFyYS4KLQotICAgICAgICBGaXggYnVpbGQgZXJyb3IgaW4gdGhlIERldmljZU9yaWVu
dGF0aW9uQ2xpZW50RWZsLmNwcC4KLSAgICAgICAgSXQgaXMgb2NjdXJlZCBiZWNhdXNlIERldmlj
ZU9yaWVudGF0aW9uIGlzIGNoYW5nZWQgdG8gRGV2aWNlT3JpZW50YXRpb25EYXRhIGluIHRoZSBX
ZWJDb3JlLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRGV2aWNlT3JpZW50YXRpb25DbGll
bnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb25DbGllbnRFZmw6
Omxhc3RPcmllbnRhdGlvbik6Ci0KLTIwMTItMDgtMjAgIFRoaWFnbyBNYXJjb3MgUC4gU2FudG9z
ICA8dGhpYWdvLnNhbnRvc0BpbnRlbC5jb20+Ci0KLSAgICAgICAgUmVncmVzc2lvbihyMTI0OTQ1
KTogQnVpbGQgaXMgYnJva2VuIHdoZW4gdG91Y2ggZXZlbnRzIGlzIGRpc2FibGVkCi0gICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NDQ2NgotCi0gICAgICAg
IFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgotCi0gICAgICAgIEFkZGVk
IG1pc3NpbmcgZ3VhcmRzIGFyb3VuZCB0b3VjaCBldmVudHMgY29kZS4KLQotICAgICAgICAqIGV3
ay9ld2tfdG91Y2hfZXZlbnQuY3BwOgotICAgICAgICAqIGV3ay9ld2tfdG91Y2hfZXZlbnRfcHJp
dmF0ZS5oOgotCi0yMDEyLTA4LTE3ICBUaGlhZ28gTWFyY29zIFAuIFNhbnRvcyAgPHRoaWFnby5z
YW50b3NAaW50ZWwuY29tPgotCi0gICAgICAgIFtFRkxdIENoYW5nZSBmb250IGZhbWlseS9zY3Jp
cHQgb24gbGF5b3V0IHRlc3RzIGNhdXNlcyBmbGFraW5lc3MKLSAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk0MzI3Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkg
S2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCi0KLSAgICAgICAgQWx3YXlzIHNldCB0aGUgZm9u
dCBvbiBXZWJDb3JlIGV2ZW4gaWYgdGhlIGZvbnQgZmFtaWx5IGlzIHRoZSBzYW1lLiBJdAotICAg
ICAgICBoYXMgdG8gYmUgZG9uZSBiZWNhdXNlIHRoZSBzY3JpcHQgdmFsdWUgbWlnaHQgaGF2ZSBh
bHNvIGNoYW5nZWQuCi0gICAgICAgIFNldHRpbmdzOjpzZXQqRm9udEZhbWlseSgpIGhhcyBhbiBp
bXBsaWNpdCBVU2NyaXB0Q29kZQotICAgICAgICBwYXJhbWV0ZXIgdGhhdCB3aWxsIHNldCB0aGUg
c2NyaXB0IGJhY2sgdG8gdGhlIGRlZmF1bHRzLgotCi0gICAgICAgICogZXdrL2V3a192aWV3LmNw
cDoKLSAgICAgICAgKGV3a192aWV3X2ZvbnRfZmFtaWx5X25hbWVfc2V0KToKLQotMjAxMi0wOC0x
NCAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgotCi0gICAgICAgIERlbGV0ZSBGcmFt
ZTo6ZG9tV2luZG93KCkgYW5kIEZyYW1lOjpleGlzdGluZ0RPTVdpbmRvdygpCi0gICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05Mzk5MAotCi0gICAgICAgIFJl
dmlld2VkIGJ5IEVyaWMgU2VpZGVsLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJl
bmRlclRyZWVTdXBwb3J0RWZsLmNwcDoKLSAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEVm
bDo6cGVuZGluZ1VubG9hZEV2ZW50Q291bnQpOgotICAgICAgICAqIGV3ay9ld2tfZnJhbWUuY3Bw
OgotICAgICAgICAoZXdrX2ZyYW1lX2ludGVudF9kZWxpdmVyKToKLQotMjAxMi0wOC0xMyAgVG9t
IFNlcGV6ICA8dHNlcGV6QGNocm9taXVtLm9yZz4KLQotICAgICAgICBbY2hyb21pdW1dIHJlbGVh
c2UgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjptX3BsdWdpbldpZGdldCByZWZwdHIgdXBvbiBQbHVn
aW4gRG9jdW1lbnQgZGV0YWNoLgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9OTMyODMKLQotICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KLQot
ICAgICAgICBDaGFuZ2UgdGhlIGNsaWVudCByZWRpcmVjdERhdGFUb1BsdWdpbiBtZXRob2Qocykg
dG8gZXhwZWN0IHRoZSBwb3NzaWJpbGl0eSBvZgotICAgICAgICBhIE5VTEwgYXJndW1lbnQsIGtl
ZXBpbmcgZXhpc3RpbmcgYmVoYXZpb3VyIG90aGVyd2lzZS4KLQotICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1l
TG9hZGVyQ2xpZW50RWZsOjpyZWRpcmVjdERhdGFUb1BsdWdpbik6Ci0KLTIwMTItMDgtMTIgIEty
enlzenRvZiBDemVjaCAgPGsuY3plY2hAc2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW0VGTF1bVVRd
IERlbGV0ZSBzaHV0ZG93biBtZXRob2QuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD05MDc4NQotCi0gICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVs
LgotCi0gICAgICAgIEVXS1Rlc3RCYXNlIGNsYXNzIGFscmVhZHkgaGFzIGEgc2h1dGRvd25BbGwg
bWV0aG9kIHRoYXQgY2FuIGJlIHVzZWQgaW5zdGVhZCBvZiBzaHV0ZG93bi4KLQotICAgICAgICAq
IHRlc3RzL1VuaXRUZXN0VXRpbHMvRVdLVGVzdEJhc2UuY3BwOgotICAgICAgICAqIHRlc3RzL1Vu
aXRUZXN0VXRpbHMvRVdLVGVzdEJhc2UuaDoKLSAgICAgICAgKEVXS1Rlc3RCYXNlKToKLQotMjAx
Mi0wOC0wOSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+Ci0KLSAg
ICAgICAgSGFuZGxlIFNTTCBlcnJvcnMgZm9yIFNPVVAKLSAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwMjY3Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgTWFy
dGluIFJvYmluc29uLgotCi0gICAgICAgIElnbm9yZSBTU0wgZXJyb3JzIGJ5IGRlZmF1bHQgZm9y
IGNvbXBhdGliaWxpdHkuCi0KLSAgICAgICAgKiBld2svZXdrX21haW4uY3BwOgotICAgICAgICAo
X2V3a19pbml0X2JvZHkpOgotCi0yMDEyLTA4LTA3ICBSeXVhbiBDaG9pICA8cnl1YW4uY2hvaUBz
YW1zdW5nLmNvbT4KLQotICAgICAgICBbRUZMXSBSZW1vdmUgUGxhdGZvcm1Ub3VjaEV2ZW50RWZs
IGFuZCBQbGF0Zm9ybVRvdWNoUG9pbnRFZmwKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTkzMjcwCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlk
ZWwuCi0KLSAgICAgICAgKiBld2svZXdrX2ZyYW1lLmNwcDoKLSAgICAgICAgKGV3a19mcmFtZV9m
ZWVkX3RvdWNoX2V2ZW50KToKLSAgICAgICAgKiBld2svZXdrX3RvdWNoX2V2ZW50LmNwcDogQWRk
ZWQuCi0gICAgICAgIChXZWJLaXRQbGF0Zm9ybVRvdWNoUG9pbnQpOgotICAgICAgICAoV2ViS2l0
UGxhdGZvcm1Ub3VjaFBvaW50OjpXZWJLaXRQbGF0Zm9ybVRvdWNoUG9pbnQpOgotICAgICAgICBB
ZGRlZCB0byBpbml0aWFsaXplIG1lbWJlcnMgb2YgUGxhdGZvcm1Ub3VjaFBvaW50LgotICAgICAg
ICAoV2ViS2l0UGxhdGZvcm1Ub3VjaEV2ZW50KToKLSAgICAgICAgKFdlYktpdFBsYXRmb3JtVG91
Y2hFdmVudDo6V2ViS2l0UGxhdGZvcm1Ub3VjaEV2ZW50KToKLSAgICAgICAgQWRkZWQgdG8gaW5p
dGlhbGl6ZSBtZW1iZXJzIG9mIFBsYXRmb3JtVG91Y2hFdmVudC4KLSAgICAgICAgKEVXS1ByaXZh
dGUpOgotICAgICAgICAoRVdLUHJpdmF0ZTo6cGxhdGZvcm1Ub3VjaEV2ZW50KToKLSAgICAgICAg
Q29udmVydGVkIEV3a19Ub3VjaF9FdmVudCB0byBQbGF0Zm9ybVRvdWNoRXZlbnQuCi0gICAgICAg
ICogZXdrL2V3a190b3VjaF9ldmVudF9wcml2YXRlLmg6IAotICAgICAgICAoRVdLUHJpdmF0ZSk6
Ci0KLTIwMTItMDgtMDcgIE1pa2hhaWwgUG96ZG55YWtvdiAgPG1pa2hhaWwucG96ZG55YWtvdkBp
bnRlbC5jb20+Ci0KLSAgICAgICAgQ1VTVE9NX1NDSEVNRV9IQU5ETEVSIGZsYWcgc2hvdWxkIGRl
cGVuZCBvbiBSRUdJU1RFUl9QUk9UT0NPTF9IQU5ETEVSCi0gICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MzA4MQotCi0gICAgICAgIFJldmlld2VkIGJ5IEFk
YW0gQmFydGguCi0KLSAgICAgICAgQ1VTVE9NX1NDSEVNRV9IQU5ETEVSICNpZiBndWFyZHMgYXJl
IGVuY2xvc2VkIGluIHRoZSBSRUdJU1RFUl9QUk9UT0NPTF9IQU5ETEVSIGd1YXJkcy4KLQotICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1JlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyQ2xpZW50RWZsLmNw
cDoKLSAgICAgICAgKFdlYkNvcmU6OlJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyQ2xpZW50RWZsOjpy
ZWdpc3RlclByb3RvY29sSGFuZGxlcik6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvUmVnaXN0
ZXJQcm90b2NvbEhhbmRsZXJDbGllbnRFZmwuaDoKLSAgICAgICAgKiBld2svZXdrX2N1c3RvbV9o
YW5kbGVyLmNwcDoKLSAgICAgICAgKGV3a19jdXN0b21faGFuZGxlcl9yZWdpc3Rlcl9wcm90b2Nv
bF9oYW5kbGVyKToKLSAgICAgICAgKiBld2svZXdrX2N1c3RvbV9oYW5kbGVyX3ByaXZhdGUuaDoK
LSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoX2V3a192aWV3X3ByaXZfbmV3
KToKLQotMjAxMi0wOC0wNiAgTWlraGFpbCBQb3pkbnlha292ICA8bWlraGFpbC5wb3pkbnlha292
QGludGVsLmNvbT4KLQotICAgICAgICBbRUZMXSBbR1RLXSBSZWdpc3RlciBQcm90b2NvbCBIYW5k
bGVyIENsaWVudCBpcyBuZXZlciBkZWxldGVkCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05Mjc0NQotCi0gICAgICAgIFJldmlld2VkIGJ5IEd1c3Rhdm8g
Tm9yb25oYSBTaWx2YS4KLQotICAgICAgICBBZGRlZCB1c2FnZSBvZiBPd25QdHIgdG8gbWFuYWdl
IHJlZ2lzdGVyIHByb3RvY29sIGhhbmRsZXIgY2xpZW50IHBvaW50ZXIuCi0KLSAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9SZWdpc3RlclByb3RvY29sSGFuZGxlckNsaWVudEVmbC5jcHA6Ci0gICAg
ICAgIChXZWJDb3JlOjpSZWdpc3RlclByb3RvY29sSGFuZGxlckNsaWVudEVmbDo6Y3JlYXRlKTog
RmFjdG9yeSBmdW5jdGlvbiByZXR1cm5pbmcgc21hcnQgcG9pbnRlci4KLSAgICAgICAgKFdlYkNv
cmUpOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1JlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyQ2xp
ZW50RWZsLmg6Ci0gICAgICAgIChSZWdpc3RlclByb3RvY29sSGFuZGxlckNsaWVudEVmbCk6Ci0g
ICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAgKF9Fd2tfVmlld19Qcml2YXRlX0Rh
dGEpOgotICAgICAgICAoX2V3a192aWV3X3ByaXZfbmV3KToKLQotMjAxMi0wOC0wMSAgUnl1YW4g
Q2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW0VGTF1bUmVncmVzc2lv
bl0gQnVpbGQgYnJlYWsgd2l0aCBORVRTQ0FQRV9QTFVHSU5fQVBJIGFmdGVyIHIxMjM2MDQKLSAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkyOTM3Ci0KLSAg
ICAgICAgVW5yZXZpZXdlZCBidWlsZCBmaXguCi0KLSAgICAgICAgcjEyMzYwNCByZXBsYWNlZCBz
dHJkdXAgdG8gZWluYV9zdHJpbmdzaGFyZSwgYnV0IHJlbGF0ZWQgY29kZXMgYXJlIG5vdAotICAg
ICAgICBjaGFuZ2VkIHByb3Blcmx5LgotICAgICAgICBUaGlzIHBhdGNoIGNoYW5nZXMgcmVtYWlu
ZWQgY29kZSB0byB1c2UgZWluYV9zdHJpbmdzaGFyZS4KLQotICAgICAgICAqIGV3ay9ld2tfanMu
Y3BwOgotICAgICAgICAoZXdrX2pzX3ZhcmlhbnRfdG9fbnB2YXJpYW50KToKLSAgICAgICAgKGV3
a19qc19wcm9wZXJ0eV9mcmVlKToKLSAgICAgICAgKGV3a19qc19ucHZhcmlhbnRfdG9fdmFyaWFu
dCk6Ci0gICAgICAgIChld2tfanNfdmFyaWFudF9mcmVlKToKLSAgICAgICAgKGV3a19qc192YXJp
YW50X2FycmF5X2ZyZWUpOgotICAgICAgICAqIGV3ay9ld2tfanMuaDoKLQotMjAxMi0wNy0yOSAg
WW91bmdUYWVjayBTb25nICA8eW91bmd0YWVjay5zb25nQHNhbXN1bmcuY29tPgotCi0gICAgICAg
IFtXSzJdW0VGTF0gVElMRURfQkFDS0lOR19TVE9SRSBzdXBwb3J0IG9uIEVmbCBXZWJLaXQyCi0g
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTU4MgotCi0g
ICAgICAgIFJldmlld2VkIGJ5IE5vYW0gUm9zZW50aGFsLgotCi0gICAgICAgIEFkZCBhIGR1bW15
IGZ1bmN0aW9uIGZvciBmaXhpbmcgYnVpbGRpbmcgZXJyb3Igd2hlbiBlbmFibGluZyBUSUxFRF9C
QUNLSU5HX1NUT1JFLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZs
LmNwcDoKLSAgICAgICAgKFdlYkNvcmUpOgotICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50
RWZsOjpkZWxlZ2F0ZWRTY3JvbGxSZXF1ZXN0ZWQpOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L0Nocm9tZUNsaWVudEVmbC5oOgotICAgICAgICAoQ2hyb21lQ2xpZW50RWZsKToKLQotMjAxMi0w
Ny0yNyAgQ2hyaXN0b3BoZSBEdW1leiAgPGNocmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgotCi0g
ICAgICAgIFtFRkxdIFJlZ3Jlc3Npb24ocjEyMzg1OCk6IERlZmF1bHQgbmF2aWdhdGlvbiBwb2xp
Y3kgZGVjaXNpb24gd2FzIHN3aXRjaGVkIHRvICJyZWplY3QiCi0gICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MjUwNwotCi0gICAgICAgIFJldmlld2VkIGJ5
IEtlbnRhcm8gSGFyYS4KLQotICAgICAgICBBZnRlciByOTI0NjYsIHRoZSBkZWZhdWx0IG5hdmln
YXRpb24gcG9saWN5IGlzIHRvIHJlamVjdCB0aGUgcmVxdWVzdCBpZiB0aGUKLSAgICAgICAgY2xp
ZW50IGRvZXMgbm90IG1ha2UgYSBkZWNpc2lvbiBleHBsaWNpdGx5LiBUaGUgZGVmYXVsdCBwb2xp
Y3kgc2hvdWxkIGJlCi0gICAgICAgIHRvIGFjY2VwdC4gVGhpcyBicm9rZSBld2tfdmlldyB1bml0
IHRlc3RzLgotCi0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAgKGV3a192aWV3
X25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uKToKLQotMjAxMi0wNy0yNyAgR3l1eW91bmcgS2lt
ICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxdIEZpeCB3cm9uZyBy
ZXR1cm4gdmFsdWUgaW4gRVdLX1ZJRVdfWFhYIG1hY3JvLgotICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTI0NjYKLQotICAgICAgICBSZXZpZXdlZCBieSBT
aW1vbiBIYXVzbWFubi4KLQotICAgICAgICBUaGVyZSBhcmUgd3JvbmcgcmV0dXJuIHZhbHVlcyBp
biBFV0tfVklFV19YWFggbWFjcm9zLiBUaGUgd3JvbmcgcmV0dXJuIHZhbHVlcwotICAgICAgICBz
aG91bGQgYmUgZml4ZWQuIEluIGFkZGl0aW9uLCBBUEkgZGVzY3JpcHRpb24gaXMgYWxzbyBtb2Rp
ZmllZCBhY2NvcmRpbmcgdG8gcmV0dXJuZWQKLSAgICAgICAgdmFsdWUgY2hhbmdlLgotCi0gICAg
ICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAgKGV3a192aWV3X3NldHRpbmdfbWluaW11
bV90aW1lcl9pbnRlcnZhbF9nZXQpOgotICAgICAgICAoZXdrX3ZpZXdfbmF2aWdhdGlvbl9wb2xp
Y3lfZGVjaXNpb24pOgotICAgICAgICAoZXdrX3ZpZXdfcGFnZV9yZWN0X2dldCk6Ci0gICAgICAg
IChld2tfdmlld19zZXR0aW5nX2VuYWJsZV94c3NfYXVkaXRvcl9nZXQpOgotICAgICAgICAqIGV3
ay9ld2tfdmlldy5oOgotCi0yMDEyLTA3LTI3ICBLaWhvbmcgS3dvbiAgPGtpaG9uZy5rd29uQHNh
bXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxdIENoYW5nZSBwcm90b3R5cGUgb2YgcnVuX29wZW5f
cGFuZWwKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkx
OTU2Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgS2VudGFybyBIYXJhLgotCi0gICAgICAgIEluIG9y
ZGVyIHRvIHN1cHBvcnQgYWxsIG9mIHRoZSBmaWxlIGNob29zZXIgYXR0cmlidXRlcywKLSAgICAg
ICAgY2hhbmdlIHRoZSB0eXBlcyBvZiBwYXJhbWV0ZXJzIGluIHJ1bl9vcGVuX3BhbmVsIG1ldGhv
ZC4KLSAgICAgICAgaS5lLiwgY2hhbmdlICJFaW5hX0Jvb2wgYWxsb3dzX211bHRpcGxlX2ZpbGVz
LCBFaW5hX0xpc3QgKmFjY2VwdF90eXBlcyIKLSAgICAgICAgdG8gIkV3a19GaWxlX0Nob29zZXIg
KmZpbGVfY2hvb3NlciIKLSAgICAgICAgSW4gYWRkaXRpb24sIEVmbCBjYW4gc3VwcG9ydCB0aGUg
Y2FwdHVyZSBhdHRyaWJ1dGUgZm9yIEhUTUwgbWVkaWEgY2FwdHVyZS4KLQotICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpDaHJv
bWVDbGllbnRFZmw6OnJ1bk9wZW5QYW5lbCk6Ci0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoK
LSAgICAgICAgKGV3a192aWV3X3J1bl9vcGVuX3BhbmVsKToKLSAgICAgICAgKiBld2svZXdrX3Zp
ZXcuaDoKLSAgICAgICAgKiBld2svZXdrX3ZpZXdfcHJpdmF0ZS5oOgotCi0yMDEyLTA3LTI2ICBT
ZW9ranUgS3dvbiAgPHNlb2tqdS5rd29uQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxdIEhp
Z2hsaWdodCB0aGUgZWxlbWVudCB1bmRlciBtb3VzZSBvbiB3ZWIgaW5zcGVjdG9yCi0gICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTU5MgotCi0gICAgICAg
IFJldmlld2VkIGJ5IEtlbnRhcm8gSGFyYS4KLQotICAgICAgICBJbXBsZW1lbnQgaGlnaGxpZ2h0
aW5nIHRoZSBub2RlcyB3aGVuIHVzaW5nIHRoZSB3ZWIgaW5zcGVjdG9yLgotCi0gICAgICAgICog
V2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckNsaWVudEVmbDo6aGlnaGxpZ2h0KToKLSAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckNsaWVudEVmbDo6aGlkZUhpZ2hsaWdodCk6Ci0gICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JDbGllbnRFZmw6OmludmFsaWRhdGVWaWV3KToKLSAgICAgICAgKFdlYkNvcmUpOgotICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEVmbC5oOgotICAgICAgICAoSW5zcGVj
dG9yQ2xpZW50RWZsKToKLSAgICAgICAgKiBld2svZXdrX3BhaW50X2NvbnRleHQuY3BwOgotICAg
ICAgICAoZXdrX3BhaW50X2NvbnRleHRfcGFpbnRfY29udGVudHMpOgotCi0yMDEyLTA3LTI2ICBD
aHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+Ci0KLSAgICAgICAg
W0VGTF1bV0syXSBJbXBsZW1lbnQgTmV0d29yayBJbmZvcm1hdGlvbiBwcm92aWRlcgotICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTIzNDMKLQotICAgICAg
ICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KLQotICAgICAgICBNYWtl
IE5ldHdvcmtJbmZvQ2xpZW50RWZsIHVzZSBOZXR3b3JrSW5mb1Byb3ZpZGVyRWZsCi0gICAgICAg
IGZyb20gV2ViQ29yZSB0byBhdm9pZCBjb2RlIGR1cGxpY2F0aW9uIHdpdGggV2ViS2l0Mi4KLQot
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L05ldHdvcmtJbmZvQ2xpZW50RWZsLmNwcDoKLSAgICAg
ICAgKFdlYkNvcmU6Ok5ldHdvcmtJbmZvQ2xpZW50RWZsOjpzdGFydFVwZGF0aW5nKToKLSAgICAg
ICAgKFdlYkNvcmU6Ok5ldHdvcmtJbmZvQ2xpZW50RWZsOjpzdG9wVXBkYXRpbmcpOgotICAgICAg
ICAoV2ViQ29yZTo6TmV0d29ya0luZm9DbGllbnRFZmw6OmJhbmR3aWR0aCk6Ci0gICAgICAgIChX
ZWJDb3JlOjpOZXR3b3JrSW5mb0NsaWVudEVmbDo6bWV0ZXJlZCk6Ci0gICAgICAgIChXZWJDb3Jl
KToKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9OZXR3b3JrSW5mb0NsaWVudEVmbC5oOgotICAg
ICAgICAoV2ViQ29yZSk6Ci0gICAgICAgIChOZXR3b3JrSW5mb0NsaWVudEVmbCk6Ci0KLTIwMTIt
MDctMjYgIFpvbHRhbiBOeXVsICA8em9sdGFuLm55dWxAaW50ZWwuY29tPgotCi0gICAgICAgIFtF
RkxdIEVGTCBwb3J0IHNob3VsZCB1c2UgWERHIHBhdGhzCi0gICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTcxOQotCi0gICAgICAgIFJldmlld2VkIGJ5IEtl
bm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgotCi0gICAgICAgIFVzaW5nIHhkZyBwYXRocyBpbnN0
ZWFkIG9mIGhvbWUvLndlYmtpdCBkaXJlY3RvcnkgZm9yIGFwcGxpY2F0aW9uCi0gICAgICAgIGNh
Y2hlLCB3ZWItZGF0YWJhc2UgYW5kIGxvY2FsLXN0b3JhZ2UuCi0KLSAgICAgICAgKiBld2svZXdr
X21haW4uY3BwOgotICAgICAgICAoX2V3a19pbml0X2JvZHkpOgotCi0yMDEyLTA3LTI2ICBLYXVz
dHViaCBBdHJhd2Fsa2FyICA8a2F1c3R1YmhAbW90b3JvbGEuY29tPgotCi0gICAgICAgIFtEUlRd
IExUQzo6IHBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJZCgpIGNvdWxkIGJlIG1vdmVkIHRvIEludGVy
bmFscwotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTIw
OTEKLQotICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgotCi0gICAgICAgIE1vdmUgdGhl
IHBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJZCBmcm9tIExheW91dFRlc3RDb3Ryb2xsZXIgdG8gSW50
ZXJuYWxzIGFuZAotICAgICAgICByZW1vdmUgdGhlIG9sZCBwbGF0Zm9ybSBzcGVjaWZpYyBpbXBs
ZW1lbnRhdGlvbnMgYXMgaXQgZXhjbHVzaXZlbHkgdGVzdHMgV2ViQ29yZSBmdW5jdGlvbmFsaXR5
LgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNw
cDoKLQotMjAxMi0wNy0yNSAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29t
PgotCi0gICAgICAgIFtFRkxdIFVzZSBlaW5hX3N0cmluZ3NoYXJlX2FkZCBpbnN0ZWFkIG9mIHN0
cmR1cC4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTky
MDcyCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgS2VudGFybyBIYXJhLgotCi0gICAgICAgIEVpbmEg
b2YgRUZMIGxpYnJhcmllcyBzdXBwb3J0cyBhIHN0cmluZyBmdW5jdGlvbmFsaXR5IHRoYXQgcmVw
bGFjZXMgc3RyZHVwLiBTbywgRUZMIHBvcnQgbmVlZHMKLSAgICAgICAgdG8gcmVwbGFjZSBzdHJk
dXAgd2l0aCBlaW5hX3N0cmluZ3NoYXJlX2FkZCBmdW5jdGlvbi4KLQotICAgICAgICBJbiBhZGRp
dGlvbiwgc29tZSBBUEkgZGVzY3JpcHRpb25zIG5lZWQgdG8gYmUgbW9kaWZpZWQgYWNjb3JkaW5n
IHRvIGV3ayBBUElzJ3MgcGFyYW1ldGVyIGFuZAotICAgICAgICByZXR1cm4gdHlwZSBjaGFuZ2Uu
Ci0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwOgotICAgICAg
ICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZsOjpydW5KYXZhU2NyaXB0UHJvbXB0KToKLSAgICAg
ICAgKiBld2svZXdrX2Nvb2tpZXMuY3BwOgotICAgICAgICAoZXdrX2Nvb2tpZXNfZ2V0X2FsbCk6
Ci0gICAgICAgIChld2tfY29va2llc19jb29raWVfZnJlZSk6Ci0gICAgICAgICogZXdrL2V3a19j
b29raWVzLmg6Ci0gICAgICAgICogZXdrL2V3a19mcmFtZS5jcHA6Ci0gICAgICAgIChld2tfZnJh
bWVfc2NyaXB0X2V4ZWN1dGUpOgotICAgICAgICAoZXdrX2ZyYW1lX3NlbGVjdGlvbl9nZXQpOgot
ICAgICAgICAoZXdrX2ZyYW1lX3Jlc291cmNlc19sb2NhdGlvbl9nZXQpOgotICAgICAgICAoZXdr
X2ZyYW1lX3BsYWluX3RleHRfZ2V0KToKLSAgICAgICAgKiBld2svZXdrX2ZyYW1lLmg6Ci0gICAg
ICAgICogZXdrL2V3a19pbnRlbnQuY3BwOgotICAgICAgICAoZXdrX2ludGVudF9zdWdnZXN0aW9u
c19nZXQpOgotICAgICAgICAoZXdrX2ludGVudF9leHRyYV9nZXQpOgotICAgICAgICAoZXdrX2lu
dGVudF9leHRyYV9uYW1lc19nZXQpOgotICAgICAgICAqIGV3ay9ld2tfaW50ZW50Lmg6Ci0gICAg
ICAgICogZXdrL2V3a19qcy5jcHA6Ci0gICAgICAgIChld2tfanNfdmFyaWFudF90b19ucHZhcmlh
bnQpOgotICAgICAgICAoZXdrX2pzX29iamVjdF9uZXcpOgotICAgICAgICAqIGV3ay9ld2tfdmll
dy5jcHA6Ci0gICAgICAgIChfZXdrX3ZpZXdfc21hcnRfcnVuX2phdmFzY3JpcHRfcHJvbXB0KToK
LSAgICAgICAgKGV3a192aWV3X3NlbGVjdGlvbl9nZXQpOgotICAgICAgICAoZXdrX3ZpZXdfcnVu
X2phdmFzY3JpcHRfcHJvbXB0KToKLSAgICAgICAgKGV3a192aWV3X3J1bl9vcGVuX3BhbmVsKToK
LSAgICAgICAgKiBld2svZXdrX3ZpZXcuaDoKLSAgICAgICAgKiBld2svZXdrX3ZpZXdfcHJpdmF0
ZS5oOgotCi0yMDEyLTA3LTI1ICBLaWhvbmcgS3dvbiAgPGtpaG9uZy5rd29uQHNhbXN1bmcuY29t
PgotCi0gICAgICAgIFtFRkxdIEFkZCBGaWxlIENob29zZXIgQVBJCi0gICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTk1NwotCi0gICAgICAgIFJldmlld2Vk
IGJ5IEhhamltZSBNb3JpdGEuCi0KLSAgICAgICAgQWRkIEFQSXMgZm9yIGZpbGUgY2hvb3Nlci4g
VGhlc2UgQVBJcyBhbGxvdyBhbiBhcHBsaWNhdGlvbihsaWtlIGEgYnJvd3NlcikgcXVlcmllcyBp
bmZvcm1hdGlvbnMKLSAgICAgICAgYWJvdXQgbXVsdGlwbGUgZmlsZXMgYWxsb3dlZCwgZGlyZWN0
b3J5IHVwbG9hZCBhbGxvd2VkLCBhY2NlcHQgbWltZXR5cGVzIGxpc3QsCi0gICAgICAgIGFjY2Vw
dCBmaWxlIGV4dGVudGlvbnMgbGlzdCwgc2VsZWN0ZWQgZmlsZXMgbGlzdCBhbmQgY2FwdHVyZSB0
byBzdXBwb3J0IEhUTUwgbWVkaWEgY2FwdHVyZS4KLQotICAgICAgICAqIGV3ay9FV2ViS2l0Lmg6
Ci0gICAgICAgICogZXdrL2V3a19maWxlX2Nob29zZXIuY3BwOiBBZGRlZC4KLSAgICAgICAgKF9F
d2tfRmlsZV9DaG9vc2VyKToKLSAgICAgICAgKGV3a19maWxlX2Nob29zZXJfYWxsb3dzX211bHRp
cGxlX2ZpbGVzX2dldCk6Ci0gICAgICAgIChld2tfZmlsZV9jaG9vc2VyX2FsbG93c19kaXJlY3Rv
cnlfdXBsb2FkX2dldCk6Ci0gICAgICAgIChld2tfZmlsZV9jaG9vc2VyX2FjY2VwdF9taW1ldHlw
ZXNfZ2V0KToKLSAgICAgICAgKGV3a19maWxlX2Nob29zZXJfYWNjZXB0X2ZpbGVfZXh0ZW50aW9u
c19nZXQpOgotICAgICAgICAoZXdrX2ZpbGVfY2hvb3Nlcl9zZWxlY3RlZF9maWxlc19nZXQpOgot
ICAgICAgICAoZXdrX2ZpbGVfY2hvb3Nlcl9jYXB0dXJlX2dldCk6Ci0gICAgICAgIChld2tfZmls
ZV9jaG9vc2VyX25ldyk6Ci0gICAgICAgIChld2tfZmlsZV9jaG9vc2VyX2ZyZWUpOgotICAgICAg
ICAqIGV3ay9ld2tfZmlsZV9jaG9vc2VyLmg6IEFkZGVkLgotICAgICAgICAqIGV3ay9ld2tfZmls
ZV9jaG9vc2VyX3ByaXZhdGUuaDogQWRkZWQuCi0gICAgICAgIChXZWJDb3JlKToKLQotMjAxMi0w
Ny0yMyAgUGllcnJlIFJvc3NpICA8cGllcnJlLnJvc3NpQGdtYWlsLmNvbT4KLQotICAgICAgICBV
bmlmeSBudW1Ub3VjaEV2ZW50SGFuZGxlcnNDaGFuZ2VkIGFuZCBuZWVkVG91Y2hFdmVudHMgaW4g
dGhlIGNocm9tZSBjbGllbnQKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTkxMDA2Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgUnlvc3VrZSBOaXdhLgotCi0g
ICAgICAgIFJlbW92ZWQgbnVtVG91Y2hFdmVudEhhbmRsZXJzQ2hhbmdlZCBzdHViLgotCi0gICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmg6Ci0KLTIwMTItMDctMjIgIEtl
bnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgotCi0gICAgICAgIFJlbmFtZSBFTkFCTEVf
TUVURVJfVEFHIGFuZCBFTkFCTEVfUFJPR1JFU1NfVEFHIHRvIEVOQUJMRV9NRVRFUl9FTEVNRU5U
IGFuZCBFTkFCTEVfUFJPR1JFU1NfRUxFTUVOVCByZXNwZWN0aXZlbHkKLSAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxOTQxCi0KLSAgICAgICAgUmV2aWV3
ZWQgYnkgS2VudGFybyBIYXJhLgotCi0gICAgICAgIEEgZmxhZyBuYW1lIGZvciBhbiBlbG1lbWVu
dCBzaG91bGQgYmUgRU5BQkxFXypfRUxFTUVOVC4KLQotICAgICAgICAqIERlZmF1bHRUaGVtZS9k
ZWZhdWx0LmVkYzoKLQotMjAxMi0wNy0yMCAgS2lob25nIEt3b24gIDxraWhvbmcua3dvbkBzYW1z
dW5nLmNvbT4KLQotICAgICAgICBbRUZMXSBSZW1vdmUgdW51c2VkIGhlYWRlcnMgZnJvbSBld2tf
c2VjdXJpdHlfb3JpZ2luCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05MTkxNAotCi0gICAgICAgIFJldmlld2VkIGJ5IE5vYW0gUm9zZW50aGFsLgotCi0g
ICAgICAgIFRoZXJlIGFyZSBzb21lIHVudXNlZCBoZWFkZXIgaW4gdGhlIGV3a19zZWN1cml0eV9v
cmlnaW4uaC9jcHAKLSAgICAgICAgV2UgbmVlZCB0byByZW1vdmUgdGhlbS4KLQotICAgICAgICAq
IGV3ay9ld2tfc2VjdXJpdHlfb3JpZ2luLmNwcDoKLSAgICAgICAgKiBld2svZXdrX3NlY3VyaXR5
X29yaWdpbi5oOgotCi0yMDEyLTA3LTIwICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5k
dW1lekBpbnRlbC5jb20+Ci0KLSAgICAgICAgW0VGTF0gUHJveHkgY29uZmlndXJhdGlvbiBzaG91
bGQgaG9ub3IgdGhlIG5vX3Byb3h5IGVudmlyb25tZW50IHZhcmlhYmxlCi0gICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTc0NwotCi0gICAgICAgIFJldmll
d2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgotCi0gICAgICAgIFVzZSB0aGUgbmV3
IGN1c3RvbSBwcm94eSByZXNvbHZlciBmcm9tIFdlYkNvcmUgaW4KLSAgICAgICAgV2ViS2l0MS1F
RkwncyBld2tfbmV0d29ya19wcm94eV91cmlfc2V0KCkgLyBnZXQoKSwKLSAgICAgICAgaW5zdGVh
ZCBvZiB0aGUgbGVzcyBmbGV4aWJsZSBTT1VQX1NFU1NJT05fUFJPWFlfVVJJCi0gICAgICAgIFNv
dXBTZXNzaW9uIHByb3BlcnR5LgotCi0gICAgICAgICogZXdrL2V3a19uZXR3b3JrLmNwcDoKLSAg
ICAgICAgKGV3a19uZXR3b3JrX3Byb3h5X3VyaV9zZXQpOgotICAgICAgICAoZXdrX25ldHdvcmtf
cHJveHlfdXJpX2dldCk6Ci0KLTIwMTItMDctMjAgIFRoaWFnbyBNYXJjb3MgUC4gU2FudG9zICA8
dGhpYWdvLnNhbnRvc0BpbnRlbC5jb20+Ci0KLSAgICAgICAgW0VGTF0gRml4IGJ1aWxkIHdoZW4g
cHJvdG9jb2wgaGFuZGxlciBhbmQgY3VzdG9tIHNjaGVtZSBpcyBkaXNhYmxlZAotICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE4NDAKLQotICAgICAgICBS
ZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KLQotICAgICAgICBGaXhlZCBu
YW1lc3BhY2UgY2xvc2luZyBicmFja2V0IHBvc2l0aW9uaW5nLgotCi0gICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvUmVnaXN0ZXJQcm90b2NvbEhhbmRsZXJDbGllbnRFZmwuY3BwOgotICAgICAgICAo
V2ViQ29yZSk6Ci0KLTIwMTItMDctMjAgIEtpaG9uZyBLd29uICA8a2lob25nLmt3b25Ac2Ftc3Vu
Zy5jb20+Ci0KLSAgICAgICAgW0VGTF0gQ2hlY2sgcGFyYW1ldGVycyBvZiBld2sgQVBJcyBpbiBl
d2tfc2VjdXJpdHlfb3JpZ2luCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05MTgzMwotCi0gICAgICAgIFJldmlld2VkIGJ5IEtlbnRhcm8gSGFyYS4KLQot
ICAgICAgICBGb3IgcHJldmVudGluZyBjcmFzaCwgY2hlY2sgcGFyYW1ldGVycyBvZiBld2sgQVBJ
cyBpbiB0aGUgZXdrX3NlY3VyaXR5X29yaWdpbi5jcHAuCi0KLSAgICAgICAgKiBld2svZXdrX3Nl
Y3VyaXR5X29yaWdpbi5jcHA6Ci0gICAgICAgIChld2tfc2VjdXJpdHlfb3JpZ2luX3BvcnRfZ2V0
KToKLSAgICAgICAgKGV3a19zZWN1cml0eV9vcmlnaW5fd2ViX2RhdGFiYXNlX3VzYWdlX2dldCk6
Ci0gICAgICAgIChld2tfc2VjdXJpdHlfb3JpZ2luX3dlYl9kYXRhYmFzZV9xdW90YV9nZXQpOgot
ICAgICAgICAoZXdrX3NlY3VyaXR5X29yaWdpbl93ZWJfZGF0YWJhc2VfcXVvdGFfc2V0KToKLSAg
ICAgICAgKGV3a19zZWN1cml0eV9vcmlnaW5fYXBwbGljYXRpb25fY2FjaGVfcXVvdGFfc2V0KToK
LSAgICAgICAgKGV3a19zZWN1cml0eV9vcmlnaW5fYXBwbGljYXRpb25fY2FjaGVfY2xlYXIpOgot
ICAgICAgICAoZXdrX3NlY3VyaXR5X29yaWdpbl93ZWJfZGF0YWJhc2VfZ2V0X2FsbCk6Ci0gICAg
ICAgIChld2tfc2VjdXJpdHlfb3JpZ2luX2ZyZWUpOgotICAgICAgICAqIGV3ay9ld2tfc2VjdXJp
dHlfb3JpZ2luLmg6Ci0KLTIwMTItMDctMTkgIEtpaG9uZyBLd29uICA8a2lob25nLmt3b25Ac2Ft
c3VuZy5jb20+Ci0KLSAgICAgICAgW0VGTF0gRW5hYmxlIGludGVyYWN0aXZlIGZvcm0gdmFsaWRh
dGlvbgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE3
MTEKLQotICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtlIE5pd2EuCi0KLSAgICAgICAgRW5hYmxl
IGludGVyYWN0aXZlIGZvcm0gdmFsaWRhdGlvbiBvbiB0aGUgRWZsLgotICAgICAgICBUaGlzIG1h
a2VzIHdlIGNhbiB2YWxpZGF0ZSBkYXRhIGF0IGZvcm0gZWxlbWVudHMuCi0gICAgICAgIEluIGFk
ZGl0aW9uLCBpdCBpcyBhbHJlYWR5IGVuYWJsZWQgaW4gdGhlIERSVC4KLQotICAgICAgICAqIGV3
ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChfZXdrX3ZpZXdfcHJpdl9uZXcpOgotCi0yMDEyLTA3
LTE4ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+Ci0KLSAg
ICAgICAgW0VGTF0gQWRkIGNlbnRyYWwgZXJyb3IgbWFuYWdlbWVudCB0byBFRkwgcG9ydAotICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE1OTgKLQotICAg
ICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KLQotICAgICAgICBN
YWtlIHVzZSBvZiBFcnJvcnNFZmwgaGVhZGVyIGZyb20gV2ViQ29yZSBpbgotICAgICAgICBFRkwn
cyBGcmFtZUxvYWRlckNsaWVudCBub3cgdGhhdCB3ZSBoYXZlCi0gICAgICAgIGEgY2VudHJhbCBw
bGFjZSBmb3IgZXJyb3JzLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmNh
bmNlbGxlZEVycm9yKToKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpi
bG9ja2VkRXJyb3IpOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmNh
bm5vdFNob3dVUkxFcnJvcik6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVm
bDo6aW50ZXJydXB0ZWRGb3JQb2xpY3lDaGFuZ2VFcnJvcik6Ci0gICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlckNsaWVudEVmbDo6Y2Fubm90U2hvd01JTUVUeXBlRXJyb3IpOgotICAgICAgICAo
V2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmZpbGVEb2VzTm90RXhpc3RFcnJvcik6Ci0g
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6cGx1Z2luV2lsbEhhbmRsZUxv
YWRFcnJvcik6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6c2hvdWxk
RmFsbEJhY2spOgotCi0yMDEyLTA3LTE4ICBTZW9ranUgS3dvbiAgPHNlb2tqdS5rd29uQHNhbXN1
bmcuY29tPgotCi0gICAgICAgIFtFRkxdW0RSVF0gQWRkIHN1cHBvcnQgZm9yIFdlYiBJbnNwZWN0
b3IgaW4gV2ViS2l0LUVGTCBEUlQKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTg3OTM1Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4K
LQotICAgICAgICBBZGQgaW1wbGVtZW50YXRpb24gb2YgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZs
OjpldmFsdWF0ZUluV2ViSW5zcGVjdG9yKCkuCi0gICAgICAgIFNvbWUgc2NyaXB0cyBmb3IgdGVz
dCBzaG91bGQgYmUgZXZhbHVhdGVkIGluIGZyb250ZW5kLgotCi0gICAgICAgICogV2ViQ29yZVN1
cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcDoKLSAgICAgICAgKER1bXBSZW5kZXJU
cmVlU3VwcG9ydEVmbDo6ZXZhbHVhdGVJbldlYkluc3BlY3Rvcik6Ci0gICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmg6Ci0KLTIwMTItMDctMTcgIENocmlz
dG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KLQotICAgICAgICBbRUZM
XSBSZXBsYWNlIDAgYnkgTlVMTCBpbiBwdWJsaWMgaGVhZGVycyBkb2N1bWVudGF0aW9uCi0gICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTQ3MAotCi0gICAg
ICAgIFJldmlld2VkIGJ5IERpcmsgUHJhbmtlLgotCi0gICAgICAgIFVzZSBOVUxMIGluc3RlYWQg
b2YgMCBmb3IgcG9pbnRlciB0eXBlcyBpbiBwdWJsaWMKLSAgICAgICAgQyBoZWFkZXJzLgotCi0g
ICAgICAgICogZXdrL2V3a19jb250ZXh0bWVudS5oOgotICAgICAgICAqIGV3ay9ld2tfY29va2ll
cy5oOgotICAgICAgICAqIGV3ay9ld2tfZnJhbWUuaDoKLSAgICAgICAgKiBld2svZXdrX2ludGVu
dC5oOgotICAgICAgICAqIGV3ay9ld2tfaW50ZW50X3JlcXVlc3QuaDoKLSAgICAgICAgKiBld2sv
ZXdrX25ldHdvcmsuaDoKLSAgICAgICAgKiBld2svZXdrX3NlY3VyaXR5X29yaWdpbi5oOgotICAg
ICAgICAqIGV3ay9ld2tfc2V0dGluZ3MuaDoKLSAgICAgICAgKiBld2svZXdrX3ZpZXcuaDoKLSAg
ICAgICAgKiBld2svZXdrX3dpbmRvd19mZWF0dXJlcy5oOgotCi0yMDEyLTA3LTE3ICBWaXZlayBH
YWxhdGFnZSAgPHZpdmVrZ2FsYXRhZ2VAZ21haWwuY29tPgotCi0gICAgICAgIFdlYiBJbnNwZWN0
b3I6IHJlZmFjdG9yIEluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZCgpIHRvIGFj
Y2VwdCBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTE5NgotCi0gICAgICAgIFJldmlld2VkIGJ5IFBhdmVs
IEZlbGRtYW4uCi0KLSAgICAgICAgUmVmYWN0b3JpbmcgSW5zcGVjdG9yQ2xpZW50cy4gSW5zcGVj
dG9yQ2xpZW50OjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQKLSAgICAgICAgbm93IHJldHVybmluZyB0
aGUgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQv
SW5zcGVjdG9yQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNsaWVu
dEVmbDo6b3Blbkluc3BlY3RvckZyb250ZW5kKToKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9J
bnNwZWN0b3JDbGllbnRFZmwuaDoKLSAgICAgICAgKEluc3BlY3RvckNsaWVudEVmbCk6Ci0KLTIw
MTItMDctMTcgIFJ5dWFuIENob2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgotCi0gICAgICAg
IFtFRkxdIE1vdmUgY29kZXMgcmVsYXRlZCB0byB0aGVtZSBzZXR0aW5nIGZyb20gV2lkZ2V0IHRv
IFJlbmRlclRoZW1lCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04OTg0MgotCi0gICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFu
c2VuLgotCi0gICAgICAgICogZXdrL2V3a19mcmFtZS5jcHA6Ci0gICAgICAgIChld2tfZnJhbWVf
dmlld19jcmVhdGVfZm9yX3ZpZXcpOiBSZW1vdmVkIGNvZGVzIHdoaWNoIHNldCB0aGVtZSBpbiBG
cmFtZVZpZXcuCi0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAgKGV3a192aWV3
X3RoZW1lX3NldCk6IENhbGxlZCBSZW5kZXJUaGVtZUVmbDo6c2V0VGhlbWVQYXRoIGluc3RlYWQg
b2Ygc2V0dGluZyB0aGVtZSBpbiBGcmFtZVZpZXcuCi0KLTIwMTItMDctMTYgIEd5dXlvdW5nIEtp
bSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBBZGQgUmVnaXN0ZXJQcm90
b2NvbEhhbmRsZXJDbGllbnQgdG8gdGhlIE1vZHVsZXMvcHJvdG9jb2xoYW5kbGVyCi0gICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDk0MAotCi0gICAgICAg
IFJldmlld2VkIGJ5IEhhamltZSBNb3JpdGEuCi0KLSAgICAgICAgQXMgYSBzdGVwIHRvIGxldCBw
cm90b2NvbCBoYW5kbGVyIGJlIG1vdmVkIHRvIHRoZSBtb2R1bGVzLCBSZWdpc3RlclByb3RvY29s
SGFuZGxlckNsaWVudCBuZWVkcwotICAgICAgICB0byBiZSBhZGRlZCB0byB0aGUgTW9kdWxlcy9w
cm90b2NvbGhhbmRsZXIuIEJlY2F1c2UgQ2hyb21lQ2xpZW50IGhhcyBzb21lIHZpcnR1YWwgZnVu
Y3Rpb25zIGZvcgotICAgICAgICBwcm90b2NvbCBoYW5kbGVycywgdmlydHVhbCBmdW5jdGlvbnMg
c2hvdWxkIGJlIG1vdmVkIHRvIFJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyQ2xpZW50Ci0KLSAgICAg
ICAgSW4gb3JkZXIgdG8gc3VwcG9ydCB0aGlzLCBSZWdpc3RlclByb3RvY29sSGFuZGxlckNsaWVu
dEVmbCBjbGFzcyBpcyBhZGRlZCBhbmQgZXdrX3ZpZXcgcmVnaXN0ZXJzCi0gICAgICAgIFJlZ2lz
dGVyUHJvdG9jb2xIYW5kbGVyQ2xpZW50RWZsLiBJbiBhZGRpdGlvbiwgZXhpc3RpbmcgY29uY3Jl
dGUgZnVuY3Rpb25zIGluIENocm9tZUNsaWVudEVmbCBhcmUgbW92ZWQKLSAgICAgICAgdG8gUmVn
aXN0ZXJQcm90b2NvbEhhbmRsZXJDbGllbnRFZmwuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9DaHJvbWVDbGllbnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29yZSk6Ci0gICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmg6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQv
UmVnaXN0ZXJQcm90b2NvbEhhbmRsZXJDbGllbnRFZmwuY3BwOiBBZGRlZC4KLSAgICAgICAgKFdl
YkNvcmUpOgotICAgICAgICAoV2ViQ29yZTo6Y3VzdG9tSGFuZGxlckRhdGFDcmVhdGUpOgotICAg
ICAgICAoV2ViQ29yZTo6Y3VzdG9tSGFuZGxlckRhdGFEZWxldGUpOgotICAgICAgICAoV2ViQ29y
ZTo6UmVnaXN0ZXJQcm90b2NvbEhhbmRsZXJDbGllbnRFZmw6OlJlZ2lzdGVyUHJvdG9jb2xIYW5k
bGVyQ2xpZW50RWZsKToKLSAgICAgICAgKFdlYkNvcmU6OlJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVy
Q2xpZW50RWZsOjpyZWdpc3RlclByb3RvY29sSGFuZGxlcik6Ci0gICAgICAgIChXZWJDb3JlOjpS
ZWdpc3RlclByb3RvY29sSGFuZGxlckNsaWVudEVmbDo6aXNQcm90b2NvbEhhbmRsZXJSZWdpc3Rl
cmVkKToKLSAgICAgICAgKFdlYkNvcmU6OlJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyQ2xpZW50RWZs
Ojp1bnJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyKToKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9S
ZWdpc3RlclByb3RvY29sSGFuZGxlckNsaWVudEVmbC5oOiBBZGRlZC4KLSAgICAgICAgKFJlZ2lz
dGVyUHJvdG9jb2xIYW5kbGVyQ2xpZW50RWZsKToKLSAgICAgICAgKFdlYkNvcmU6OlJlZ2lzdGVy
UHJvdG9jb2xIYW5kbGVyQ2xpZW50RWZsOjp+UmVnaXN0ZXJQcm90b2NvbEhhbmRsZXJDbGllbnRF
ZmwpOgotICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChfZXdrX3ZpZXdfcHJp
dl9uZXcpOgotCi0yMDEyLTA3LTE2ICBLaWhvbmcgS3dvbiAgPGtpaG9uZy5rd29uQHNhbXN1bmcu
Y29tPgotCi0gICAgICAgIFJlbW92ZSBzZXRDb250cm9sbGVyIGZyb20gQmF0dGVyeUNsaWVudAot
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTA5NDQKLQot
ICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgotCi0gICAgICAgIEJhdHRlcnlDbGllbnQg
ZG9lc24ndCBuZWVkIHRvIGtlZXAgbV9jb250cm9sbGVyLAotICAgICAgICBiZWNhdXNlIEJhdHRl
cnlDb250cm9sbGVyIGNhbiBiZSBhY2Nlc3NlZCB1c2luZyBCYXR0ZXJ5Q29udHJvbGxlcjo6ZnJv
bSgpLgotICAgICAgICBSZW1vdmUgbV9jb250cm9sbGVyIGFuZCBBZGQgZXdrIHZpZXcgZXZhcyBv
YmplY3QgdG8gQmF0dGVyeUNsaWVudEVmbC4KLSAgICAgICAgQW5kIGNoYW5nZSBhbGwgbV9jb250
cm9sbGVyIHRvIEJhdHRlcnlDb250cm9sbGVyOjpmcm9tLgotCi0gICAgICAgICogV2ViQ29yZVN1
cHBvcnQvQmF0dGVyeUNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChCYXR0ZXJ5Q2xpZW50RWZsOjpC
YXR0ZXJ5Q2xpZW50RWZsKToKLSAgICAgICAgKEJhdHRlcnlDbGllbnRFZmw6OmRpZENoYW5nZUJh
dHRlcnlTdGF0dXMpOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0JhdHRlcnlDbGllbnRFZmwu
aDoKLSAgICAgICAgKEJhdHRlcnlDbGllbnRFZmwpOgotICAgICAgICAqIGV3ay9ld2tfdmlldy5j
cHA6Ci0gICAgICAgIChfZXdrX3ZpZXdfcHJpdl9uZXcpOgotCi0yMDEyLTA3LTE1ICBLaWhvbmcg
S3dvbiAgPGtpaG9uZy5rd29uQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxdIEFkZCBhIEFQ
SSBmb3IgZ2V0dGluZyBzZWN1cml0eSBvcmlnaW4gc3RyaW5nCi0gICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDkzNgotCi0gICAgICAgIFJldmlld2VkIGJ5
IFJ5b3N1a2UgTml3YS4KLQotICAgICAgICBTdXBwb3J0IHRvIGNoYW5nZSBmcm9tIEV3a19TZWN1
cml0eV9PcmlnaW4gdG8gc3RyaW5nIG9uIHRoZSBBUEkgbGV2ZWwuCi0gICAgICAgIEFkZCBld2tf
c2VjdXJpdHlfb3JpZ2luX3N0cmluZ19nZXQgZm9yIGdldHRpbmcgc2VjdXJpdHkgb3JpZ2luIHN0
cmluZy4KLQotICAgICAgICAqIGV3ay9ld2tfc2VjdXJpdHlfb3JpZ2luLmNwcDoKLSAgICAgICAg
KF9Fd2tfU2VjdXJpdHlfT3JpZ2luKToKLSAgICAgICAgKGV3a19zZWN1cml0eV9vcmlnaW5fc3Ry
aW5nX2dldCk6Ci0gICAgICAgIChld2tfc2VjdXJpdHlfb3JpZ2luX2ZyZWUpOgotICAgICAgICAo
ZXdrX3NlY3VyaXR5X29yaWdpbl9uZXcpOgotICAgICAgICAqIGV3ay9ld2tfc2VjdXJpdHlfb3Jp
Z2luLmg6Ci0KLTIwMTItMDctMTUgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5n
LmNvbT4KLQotICAgICAgICBbRUZMXSBNb3ZlIGZpbGVzIGd1YXJkZWQgYnkgI2lmZGVmIHRvIGV4
aXN0aW5nIGZpbGUgbGlzdC4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTkxMzM2Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgUnlvc3VrZSBOaXdhLgotCi0g
ICAgICAgIFNvbWUgRUZMIGZpbGVzIGFyZSBhbHJlYWR5IGd1YXJlZCBieSAjaWZkZWYuIFNvLCBj
bWFrZSBmaWxlcyBkb2Vzbid0IG5lZWQgdG8gZ3VhcmQKLSAgICAgICAgdGhlbSBhZ2Fpbi4gSW4g
YWRkaXRpb24sIHNvbWUgZmlsZXMgYXJlIG1pc3NpbmcgI2lmZGVmIGd1YXJkIGl0cyBoZWFkZXIg
ZmlsZXMuIAotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRGV2aWNlTW90aW9uQ2xpZW50RWZs
Lmg6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50RWZsLmg6Ci0gICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvTmV0d29ya0luZm9DbGllbnRFZmwuaDoKLSAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9WaWJyYXRpb25DbGllbnRFZmwuaDoKLQotMjAxMi0wNy0xMyAgS2lob25n
IEt3b24gIDxraWhvbmcua3dvbkBzYW1zdW5nLmNvbT4KLQotICAgICAgICBbRUZMXSBBZGQgY29u
c3QgdG8gdGhlIHBhcmFtZXRlciBvZiBnZXR0ZXJzIGluIGV3a19zZWN1cml0eV9vcmlnaW4KLSAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwOTU0Ci0KLSAg
ICAgICAgUmV2aWV3ZWQgYnkgS2VudGFybyBIYXJhLgotCi0gICAgICAgIE1vdmUgaW5pdGlhbGl6
YXRpb24gb2Ygc3RyaW5ncyBmb3IgcHJvdG9jb2wgYW5kIGhvc3QgdG8gdGhlIGV3a19zZWN1cml0
eV9vcmlnaW5fbmV3IG1ldGhvZCwKLSAgICAgICAgd2hpY2ggYWxsb3dzIHRvIGFkZCBjb25zdCBx
dWFsaWZpZXIgZm9yIGV3a19zZWN1cml0eV9vcmlnaW5fcHJvdG9jb2xfZ2V0IGFuZCBld2tfc2Vj
dXJpdHlfb3JpZ2luX2hvc3RfZ2V0LgotICAgICAgICBJbiBhZGRpdGlvbiwgYWRkIG51bGwgY2hl
Y2tzIHRvIHRoZSBnZXR0ZXJzLgotCi0gICAgICAgICogZXdrL2V3a19zZWN1cml0eV9vcmlnaW4u
Y3BwOgotICAgICAgICAoZXdrX3NlY3VyaXR5X29yaWdpbl9wcm90b2NvbF9nZXQpOgotICAgICAg
ICAoZXdrX3NlY3VyaXR5X29yaWdpbl9ob3N0X2dldCk6Ci0gICAgICAgIChld2tfc2VjdXJpdHlf
b3JpZ2luX25ldyk6Ci0gICAgICAgICogZXdrL2V3a19zZWN1cml0eV9vcmlnaW4uaDoKLQotMjAx
Mi0wNy0xMyAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgotCi0gICAg
ICAgIFtFRkxdIEFkZCAqZXhwbGljaXQqIGtleXdvcmQgdG8gY29uc3RydWN0b3Igd2hpY2ggaGFz
IGEgcGFyYW1ldGVyCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD05MTIwNwotCi0gICAgICAgIFJldmlld2VkIGJ5IFpvbHRhbiBIZXJjemVnLgotCi0gICAg
ICAgIEFkZCAqZXhwbGljaXQqIGtleXdvcmQgdG8gY29udHJ1Y3RvciB3aGljaCBoYXMgYSBwYXJh
bWV0ZXIgaW4gb3JkZXIgdG8gYXZvaWQgaW1wbGljaXQgdHlwZSBjb252ZXJzaW9uLgotCi0gICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmg6Ci0gICAgICAgIChFZGl0b3JD
bGllbnRFZmwpOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEVmbC5o
OgotICAgICAgICAoSW5zcGVjdG9yQ2xpZW50RWZsKToKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9QYWdlQ2xpZW50RWZsLmg6Ci0gICAgICAgIChQYWdlQ2xpZW50RWZsKToKLSAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9WaWJyYXRpb25DbGllbnRFZmwuaDoKLSAgICAgICAgKFZpYnJhdGlvbkNs
aWVudEVmbCk6Ci0KLTIwMTItMDctMTAgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4K
LQotICAgICAgICBMYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQ29uZmlndXJhdGlvbkZvclZpZXdw
b3J0IHNob3VsZCBtb3ZlIHRvIEludGVybmFscwotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDU2NTIKLQotICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNl
aWRlbC4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVm
bC5jcHA6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZs
Lmg6Ci0KLTIwMTItMDctMDkgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGlu
dGVsLmNvbT4KLQotICAgICAgICBbRUZMXSBCYXR0ZXJ5IHN0YXR1cyBjb2RlIG5lZWRzIHJlZmFj
dG9yaW5nIHRvIGJlIHJldXNlZCBpbiBXZWJLaXQyCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDc2MAotCi0gICAgICAgIFJldmlld2VkIGJ5IEhhamlt
ZSBNb3JpdGEuCi0KLSAgICAgICAgQWRkIEJhdHRlcnlDbGllbnRFZmwgdG8gV2ViS2l0LCB3aGlj
aCB1c2VzIEJhdHRlcnlQcm92aWRlckVmbCBmcm9tCi0gICAgICAgIFdlYkNvcmUgaW50ZXJuYWxs
eS4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0JhdHRlcnlDbGllbnRFZmwuY3BwOiBBZGRl
ZC4KLSAgICAgICAgKEJhdHRlcnlDbGllbnRFZmw6OkJhdHRlcnlDbGllbnRFZmwpOgotICAgICAg
ICAoQmF0dGVyeUNsaWVudEVmbDo6c2V0Q29udHJvbGxlcik6Ci0gICAgICAgIChCYXR0ZXJ5Q2xp
ZW50RWZsOjpzdGFydFVwZGF0aW5nKToKLSAgICAgICAgKEJhdHRlcnlDbGllbnRFZmw6OnN0b3BV
cGRhdGluZyk6Ci0gICAgICAgIChCYXR0ZXJ5Q2xpZW50RWZsOjpiYXR0ZXJ5Q29udHJvbGxlckRl
c3Ryb3llZCk6Ci0gICAgICAgIChCYXR0ZXJ5Q2xpZW50RWZsOjpkaWRDaGFuZ2VCYXR0ZXJ5U3Rh
dHVzKToKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9CYXR0ZXJ5Q2xpZW50RWZsLmg6IFJlbmFt
ZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvQmF0dGVyeUNsaWVudEVmbC5oLgot
ICAgICAgICAoV2ViQ29yZSk6Ci0gICAgICAgIChCYXR0ZXJ5Q2xpZW50RWZsKToKLSAgICAgICAg
KEJhdHRlcnlDbGllbnRFZmw6On5CYXR0ZXJ5Q2xpZW50RWZsKToKLSAgICAgICAgKiBld2svZXdr
X3ZpZXcuY3BwOgotICAgICAgICAoX2V3a192aWV3X3ByaXZfbmV3KToKLQotMjAxMi0wNy0wOSAg
QWRhbSBLbGVpbiAgPGFkYW1rQGNocm9taXVtLm9yZz4KLQotICAgICAgICBSZW5hbWUgV2ViQ29y
ZTo6V2ViS2l0TXV0YXRpb25PYnNlcnZlciB0byBXZWJDb3JlOjpNdXRhdGlvbk9ic2VydmVyCi0g
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDgxMAotCi0g
ICAgICAgIFJldmlld2VkIGJ5IE9qYW4gVmFmYWkuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwOgotICAgICAgICAoRHVtcFJlbmRlclRyZWVT
dXBwb3J0RWZsOjpkZWxpdmVyQWxsTXV0YXRpb25zSWZOZWNlc3NhcnkpOgotCi0yMDEyLTA3LTA5
ICBLcnp5c3p0b2YgQ3plY2ggIDxrLmN6ZWNoQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxd
IFNpbXBsaWZ5IHJ1blRlc3QgZnVuY3Rpb24gYnkgZGVmaW5pbmcgZGVmYXVsdCBhcmd1bWVudHMu
Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDUyNQot
Ci0gICAgICAgIFJldmlld2VkIGJ5IENoYW5nIFNodS4KLQotICAgICAgICBEZWZhdWx0IGFyZ3Vt
ZW50cyB3aWxsIHNpbXBsaWZ5IG1hY3JvIFJVTl9URVNULgotICAgICAgICBGdW5jdGlvbiB3aWxs
IG9ubHkgaGF2ZSBvbmUgbWFuZGF0b3J5IGFyZ3VtZW50LCBjYWxsYmFjayB0ZXN0IGZ1bmN0aW9u
LgotICAgICAgICBBZGRlZCBzdGF0aWMgbW9kaWZpZXJzIHRvIGNhbGxiYWNrIGZ1bmN0aW9ucy4K
LQotICAgICAgICAqIHRlc3RzL1VuaXRUZXN0VXRpbHMvRVdLVGVzdEJhc2UuaDoKLSAgICAgICAg
KEVXS1Rlc3RCYXNlKToKLSAgICAgICAgKiB0ZXN0cy90ZXN0X2V3a192aWV3LmNwcDoKLSAgICAg
ICAgKGV3a1ZpZXdFZGl0YWJsZUdldENiKToKLSAgICAgICAgKFRFU1QpOgotICAgICAgICAoZXdr
Vmlld1VyaUdldENiKToKLQotMjAxMi0wNy0wOCAgQ2hyaXN0b3BoZSBEdW1leiAgPGNocmlzdG9w
aGUuZHVtZXpAaW50ZWwuY29tPgotCi0gICAgICAgIFtFRkxdIFJFR1JFU1NJT04gKHIxMjIwMzUp
OiBmdWxsc2NyZWVuL2V4aXQtZnVsbC1zY3JlZW4taWZyYW1lLmh0bWwgaXMgY3Jhc2hpbmcKLSAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwNzM1Ci0KLSAg
ICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21lcy4KLQotICAgICAgICBLZWVwIGEgcmVmZXJl
bmNlIHRvIHRoZSBFbGVtZW50IHBhc3NlZCB0byBlbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KCkg
c28KLSAgICAgICAgdGhhdCB3ZSBjYW4gcmV1c2UgaXQgbGF0ZXIgaW4gZXhpdEZ1bGxTY3JlZW5G
b3JFbGVtZW50KCkuIFRoaXMgaXMgbmVlZGVkCi0gICAgICAgIGJlY2F1c2UgdGhlIEVsZW1lbnQg
cGFzc2VkIHRvIGV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudCgpIG1heSBiZSBudWxsLgotICAgICAg
ICBUaGlzIGZpeGVzIHRoZSBjcmFzaCBmb3IgdGhlIGZ1bGxzY3JlZW4vZXhpdC1mdWxsLXNjcmVl
bi1pZnJhbWUuaHRtbAotICAgICAgICB0ZXN0IGludHJvZHVjZWQgaW4gcjEyMjAzNS4KLQotICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJD
b3JlOjpDaHJvbWVDbGllbnRFZmw6OmVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQpOgotICAgICAg
ICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZsOjpleGl0RnVsbFNjcmVlbkZvckVsZW1lbnQpOgot
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oOgotICAgICAgICAoQ2hy
b21lQ2xpZW50RWZsKToKLQotMjAxMi0wNy0wNyAgSmlud29vIFNvbmcgIDxqaW53b283LnNvbmdA
c2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW0VGTF0gRml4IGJ1aWxkIGJyZWFrIHdoZW4gQWNjZWxl
cmF0ZWQgQ29tcG9zaXRpbmcgaXMgb24uCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD05MDcxOAotCi0gICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4Lgot
Ci0gICAgICAgIGV3a192aWV3X2FjY2VsZXJhdGVkX2NvbXBvc2l0aW5nX1hYWCBBUElzIGFyZSBp
biBld2tfdmlld19wcml2YXRlLmgKLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1BhZ2VDbGll
bnRFZmwuY3BwOgotICAgICAgICAoUGFnZUNsaWVudEVmbDo6Y3JlYXRlRXZhc09iamVjdEZvckFj
Y2VsZXJhdGVkQ29tcG9zaXRpbmcpOgotICAgICAgICAoUGFnZUNsaWVudEVmbDo6YWNjZWxlcmF0
ZWRDb21wb3NpdGluZ0NvbnRleHQpOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1BhZ2VDbGll
bnRFZmwuaDoKLSAgICAgICAgKFBhZ2VDbGllbnRFZmwpOgotCi0yMDEyLTA3LTA2ICBTZW9ranUg
S3dvbiAgPHNlb2tqdS5rd29uQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxdIEFkZCBXZWIg
SW5zcGVjdG9yIHRvIFdlYktpdC1FRkwKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTgzODY1Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1h
bi4KLQotICAgICAgICBFRkwgcG9ydCBpbXBsZW1lbnRhdGlvbiBmb3IgV2ViIEluc3BlY3Rvci4K
LSAgICAgICAgSW1wbGVtZW50YXRpb24gb2YgSW5zcGVjdG9yQ2xpZW50RWZsIGFuZCBJbnNwZWN0
b3JGcm9udGVuZENsaWVudEVmbAotICAgICAgICBmb3IgdXNpbmcgdGhlIFdlYiBJbnNwZWN0b3Ig
aW4gV2ViS2l0LUVGTCB3aXRoIG5ldyBFV0sgQVBJcy4KLQotICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0luc3BlY3RvckNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpub3RpZnlXZWJJ
bnNwZWN0b3JEZXN0cm95KToKLSAgICAgICAgKFdlYkNvcmUpOgotICAgICAgICAoSW5zcGVjdG9y
RnJvbnRlbmRTZXR0aW5nc0VmbCk6Ci0gICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVu
ZFNldHRpbmdzRWZsOjpnZXRQcm9wZXJ0eSk6Ci0gICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JG
cm9udGVuZFNldHRpbmdzRWZsOjpzZXRQcm9wZXJ0eSk6Ci0gICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JDbGllbnRFZmw6Okluc3BlY3RvckNsaWVudEVmbCk6Ci0gICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JDbGllbnRFZmw6On5JbnNwZWN0b3JDbGllbnRFZmwpOgotICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yQ2xpZW50RWZsOjppbnNwZWN0b3JEZXN0cm95ZWQpOgotICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yQ2xpZW50RWZsOjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQpOgotICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50RWZsOjpjbG9zZUluc3BlY3RvckZyb250ZW5kKToK
LSAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNsaWVudEVmbDo6YnJpbmdGcm9udGVuZFRvRnJv
bnQpOgotICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50RWZsOjpzZW5kTWVzc2FnZVRv
RnJvbnRlbmQpOgotICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50RWZsOjpyZWxlYXNl
RnJvbnRlbmRQYWdlKToKLSAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNsaWVudEVmbDo6aW5z
cGVjdG9yRmlsZXNQYXRoKToKLSAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xp
ZW50RWZsOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudEVmbCk6Ci0gICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JGcm9udGVuZENsaWVudEVmbDo6fkluc3BlY3RvckZyb250ZW5kQ2xpZW50RWZsKToK
LSAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50RWZsOjpsb2NhbGl6ZWRT
dHJpbmdzVVJMKToKLSAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50RWZs
OjpoaWRkZW5QYW5lbHMpOgotICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDbGll
bnRFZmw6OmJyaW5nVG9Gcm9udCk6Ci0gICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVu
ZENsaWVudEVmbDo6Y2xvc2VXaW5kb3cpOgotICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJv
bnRlbmRDbGllbnRFZmw6Omluc3BlY3RlZFVSTENoYW5nZWQpOgotICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRFZmw6OmF0dGFjaFdpbmRvdyk6Ci0gICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudEVmbDo6ZGV0YWNoV2luZG93KToKLSAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50RWZsOjpzZXRBdHRhY2hlZFdpbmRvd0hl
aWdodCk6Ci0gICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudEVmbDo6ZGVz
dHJveUluc3BlY3RvcldpbmRvdyk6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9y
Q2xpZW50RWZsLmg6Ci0gICAgICAgIChXZWJDb3JlKToKLSAgICAgICAgKEluc3BlY3RvckNsaWVu
dEVmbCk6Ci0gICAgICAgIChJbnNwZWN0b3JGcm9udGVuZENsaWVudEVmbCk6Ci0gICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudEVmbDo6ZGlzY29ubmVjdEluc3BlY3RvckNs
aWVudCk6Ci0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAgKF9Fd2tfVmlld19Q
cml2YXRlX0RhdGEpOgotICAgICAgICAoX2V3a192aWV3X3ByaXZfbmV3KToKLSAgICAgICAgKGV3
a192aWV3X3dlYl9pbnNwZWN0b3Jfc2hvdyk6Ci0gICAgICAgIChld2tfdmlld193ZWJfaW5zcGVj
dG9yX2Nsb3NlKToKLSAgICAgICAgKGV3a192aWV3X3dlYl9pbnNwZWN0b3Jfdmlld19nZXQpOgot
ICAgICAgICAoZXdrX3ZpZXdfd2ViX2luc3BlY3Rvcl92aWV3X3NldCk6Ci0gICAgICAgICogZXdr
L2V3a192aWV3Lmg6Ci0KLTIwMTItMDctMDUgIEtpaG9uZyBLd29uICA8a2lob25nLmt3b25Ac2Ft
c3VuZy5jb20+Ci0KLSAgICAgICAgW0VGTF0gQ2hhbmdlIGNsYXNzIG5hbWUgZnJvbSBOb3RpZmlj
YXRpb25DbGllbnRFZmwgdG8gTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsLgotICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTA1NDIKLQotICAgICAg
ICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KLQotICAgICAgICBDaGFu
Z2UgY2xhc3MgbmFtZSBmcm9tIE5vdGlmaWNhdGlvbkNsaWVudEVmbCB0byBOb3RpZmljYXRpb25Q
cmVzZW50ZXJDbGllbnRFZmwKLSAgICAgICAgdG8gYmUgaW4gbGluZSB3aXRoIG90aGVyIHBvcnRz
LihxdCwgY2hyb21pdW0sIGJsYWNrYmVycnkpCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9D
aHJvbWVDbGllbnRFZmwuY3BwOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L05vdGlmaWNhdGlv
blByZXNlbnRlckNsaWVudEVmbC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2VmbC9X
ZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25DbGllbnRFZmwuY3BwLgotICAgICAgICAoV2ViQ29y
ZSk6Ci0gICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6Ok5v
dGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbCk6Ci0gICAgICAgIChXZWJDb3JlOjpOb3RpZmlj
YXRpb25QcmVzZW50ZXJDbGllbnRFZmw6On5Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwp
OgotICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpzaG93
KToKLSAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6Y2Fu
Y2VsKToKLSAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6
bm90aWZpY2F0aW9uT2JqZWN0RGVzdHJveWVkKToKLSAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNh
dGlvblByZXNlbnRlckNsaWVudEVmbDo6bm90aWZpY2F0aW9uQ29udHJvbGxlckRlc3Ryb3llZCk6
Ci0gICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6OnJlcXVl
c3RQZXJtaXNzaW9uKToKLSAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNs
aWVudEVmbDo6Y2hlY2tQZXJtaXNzaW9uKToKLSAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlv
blByZXNlbnRlckNsaWVudEVmbDo6Y2FuY2VsUmVxdWVzdHNGb3JQZXJtaXNzaW9uKToKLSAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwuaDogUmVu
YW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L05vdGlmaWNhdGlvbkNs
aWVudEVmbC5oLgotICAgICAgICAoV2ViQ29yZSk6Ci0gICAgICAgIChOb3RpZmljYXRpb25QcmVz
ZW50ZXJDbGllbnRFZmwpOgotCi0yMDEyLTA3LTAyICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxh
aW5AYXBwbGUuY29tPgotCi0gICAgICAgIERvIG5vdCBkbyBhbnkgbG9nZ2luZyBpbml0aWFsaXph
dGlvbiB3aGVuIGxvZ2dpbmcgaXMgZGlzYWJsZWQKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTkwMjI4Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24g
RnJhc2VyLgotCi0gICAgICAgICogZXdrL2V3a19tYWluLmNwcDoKLSAgICAgICAgKF9ld2tfaW5p
dF9ib2R5KToKLQotMjAxMi0wNy0wMiAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1
bmcuY29tPgotCi0gICAgICAgIFtFRkxdIFJlbmFtZSBOb3RpZmljYXRpb25QcmVzZW50ZXJFZmwg
d2l0aCBOb3RpZmljYXRpb25DbGllbnRFZmwKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTkwMzcwCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQ3NhYmEgT3N6
dHJvZ29uw6FjLgotCi0gICAgICAgIEJ1ZyA4MDQ4OCByZW5hbWVkIE5vdGlmaWNhdGlvblByZXNl
bnRlciB3aXRoIE5vdGlmaWNhdGlvbkNsaWVudC4gU28sIEVGTCBwb3J0IG5lZWRzIHRvIGFkanVz
dCBpdCBhcyB3ZWxsLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZs
LmNwcDoKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25DbGllbnRFZmwuY3Bw
OiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0
aW9uUHJlc2VudGVyQ2xpZW50RWZsLmNwcC4KLSAgICAgICAgKFdlYkNvcmUpOgotICAgICAgICAo
V2ViQ29yZTo6Tm90aWZpY2F0aW9uQ2xpZW50RWZsOjpOb3RpZmljYXRpb25DbGllbnRFZmwpOgot
ICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uQ2xpZW50RWZsOjp+Tm90aWZpY2F0aW9uQ2xp
ZW50RWZsKToKLSAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkNsaWVudEVmbDo6c2hvdyk6
Ci0gICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25DbGllbnRFZmw6OmNhbmNlbCk6Ci0gICAg
ICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25DbGllbnRFZmw6Om5vdGlmaWNhdGlvbk9iamVjdERl
c3Ryb3llZCk6Ci0gICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25DbGllbnRFZmw6Om5vdGlm
aWNhdGlvbkNvbnRyb2xsZXJEZXN0cm95ZWQpOgotICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0
aW9uQ2xpZW50RWZsOjpyZXF1ZXN0UGVybWlzc2lvbik6Ci0gICAgICAgIChXZWJDb3JlOjpOb3Rp
ZmljYXRpb25DbGllbnRFZmw6OmNoZWNrUGVybWlzc2lvbik6Ci0gICAgICAgIChXZWJDb3JlOjpO
b3RpZmljYXRpb25DbGllbnRFZmw6OmNhbmNlbFJlcXVlc3RzRm9yUGVybWlzc2lvbik6Ci0gICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9uQ2xpZW50RWZsLmg6IFJlbmFtZWQgZnJv
bSBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVzZW50ZXJD
bGllbnRFZmwuaC4KLSAgICAgICAgKFdlYkNvcmUpOgotICAgICAgICAoTm90aWZpY2F0aW9uQ2xp
ZW50RWZsKToKLQotMjAxMi0wNi0yOSAgS3J6eXN6dG9mIEN6ZWNoICA8ay5jemVjaEBzYW1zdW5n
LmNvbT4sIFRvbWFzeiBNb3Jhd3NraSA8dC5tb3Jhd3NraUBzYW1zdW5nLmNvbT4KLQotICAgICAg
ICBbRUZMXSBJbXBsZW1lbnRhdGlvbiBvZiB0ZXN0aW5nIGZyYW1ld29yayBhbmQgdW5pdCB0ZXN0
cyBmb3IgV2ViS2l0LUVGTCBwb3J0LgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9Njg1MDkKLQotICAgICAgICBSZXZpZXdlZCBieSBDaGFuZyBTaHUuCi0K
LSAgICAgICAgVGVzdGluZyBmcmFtZXdvcmsgaXMgYmFzZWQgb24gZ3Rlc3QgbGlicmFyeS4gR3Rl
c3QgbGlicmFyeSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgcHJvamVjdC4gRnJhbWV3b3JrIGlzIGRl
dmlkZWQgaW50byBiYXNlIHBhcnQgYW5kIHZpZXcgcGFydC4KLSAgICAgICAgQmFzZSBwYXJ0IHRh
a2VzIGNhcmUgb2YgZWZsIGluaXRpYWxpemF0aW9uLCBkZWZpbmVzIHRlc3QgbWFjcm9zIGFuZCBw
cmVwYXJlcyB0ZXN0IHRvIHJ1bi4gVmlldyBwYXJ0IGlzIGEgY29udGV4dCBvZiBlYWNoIHRlc3Qu
Ci0KLSAgICAgICAgKiB0ZXN0cy9Vbml0VGVzdFV0aWxzL0VXS1Rlc3RCYXNlLmNwcDogQWRkZWQu
Ci0gICAgICAgIChFV0tVbml0VGVzdHMpOgotICAgICAgICAoRVdLVW5pdFRlc3RzOjpFV0tUZXN0
QmFzZTo6aW5pdCk6Ci0gICAgICAgIChFV0tVbml0VGVzdHM6OkVXS1Rlc3RCYXNlOjpzaHV0ZG93
bik6Ci0gICAgICAgIChFV0tVbml0VGVzdHM6OkVXS1Rlc3RCYXNlOjpzaHV0ZG93bkFsbCk6Ci0g
ICAgICAgIChFV0tVbml0VGVzdHM6OkVXS1Rlc3RCYXNlOjpzdGFydFRlc3QpOgotICAgICAgICAo
RVdLVW5pdFRlc3RzOjpFV0tUZXN0QmFzZTo6ZW5kVGVzdCk6Ci0gICAgICAgIChFV0tVbml0VGVz
dHM6OkVXS1Rlc3RCYXNlOjpjcmVhdGVUZXN0KToKLSAgICAgICAgKEVXS1VuaXRUZXN0czo6RVdL
VGVzdEJhc2U6OnJ1blRlc3QpOgotICAgICAgICAqIHRlc3RzL1VuaXRUZXN0VXRpbHMvRVdLVGVz
dEJhc2UuaDogQWRkZWQuCi0gICAgICAgIChFV0tVbml0VGVzdHMpOgotICAgICAgICAoRVdLVGVz
dEJhc2UpOgotICAgICAgICAqIHRlc3RzL1VuaXRUZXN0VXRpbHMvRVdLVGVzdENvbmZpZy5oOiBB
ZGRlZC4KLSAgICAgICAgKENvbmZpZyk6Ci0gICAgICAgICogdGVzdHMvVW5pdFRlc3RVdGlscy9F
V0tUZXN0Vmlldy5jcHA6IEFkZGVkLgotICAgICAgICAoRVdLVW5pdFRlc3RzKToKLSAgICAgICAg
KEVXS1VuaXRUZXN0czo6RVdLVGVzdEVjb3JlRXZhczo6RVdLVGVzdEVjb3JlRXZhcyk6Ci0gICAg
ICAgIChFV0tVbml0VGVzdHM6OkVXS1Rlc3RFY29yZUV2YXM6OmV2YXMpOgotICAgICAgICAoRVdL
VW5pdFRlc3RzOjpFV0tUZXN0RWNvcmVFdmFzOjpzaG93KToKLSAgICAgICAgKEVXS1VuaXRUZXN0
czo6RVdLVGVzdFZpZXc6OkVXS1Rlc3RWaWV3KToKLSAgICAgICAgKEVXS1VuaXRUZXN0czo6RVdL
VGVzdFZpZXc6OmluaXQpOgotICAgICAgICAoRVdLVW5pdFRlc3RzOjpFV0tUZXN0Vmlldzo6c2hv
dyk6Ci0gICAgICAgIChFV0tVbml0VGVzdHM6OkVXS1Rlc3RWaWV3OjptYWluRnJhbWUpOgotICAg
ICAgICAoRVdLVW5pdFRlc3RzOjpFV0tUZXN0Vmlldzo6ZXZhcyk6Ci0gICAgICAgIChFV0tVbml0
VGVzdHM6OkVXS1Rlc3RWaWV3OjpiaW5kRXZlbnRzKToKLSAgICAgICAgKiB0ZXN0cy9Vbml0VGVz
dFV0aWxzL0VXS1Rlc3RWaWV3Lmg6IEFkZGVkLgotICAgICAgICAoRVdLVW5pdFRlc3RzKToKLSAg
ICAgICAgKEVXS1Rlc3RFY29yZUV2YXMpOgotICAgICAgICAoRVdLVGVzdFZpZXcpOgotICAgICAg
ICAoRVdLVW5pdFRlc3RzOjpFV0tUZXN0Vmlldzo6d2ViVmlldyk6Ci0gICAgICAgICogdGVzdHMv
cmVzb3VyY2VzL2RlZmF1bHRfdGVzdF9wYWdlLmh0bWw6IEFkZGVkLgotICAgICAgICAqIHRlc3Rz
L3Rlc3RfZXdrX3ZpZXcuY3BwOiBBZGRlZC4KLSAgICAgICAgKGV3a1ZpZXdFZGl0YWJsZUdldENi
KToKLSAgICAgICAgKFRFU1QpOgotICAgICAgICAoZXdrVmlld1VyaUdldENiKToKLSAgICAgICAg
KiB0ZXN0cy90ZXN0X3J1bm5lci5jcHA6IEFkZGVkLgotICAgICAgICAocGFyc2VDdXN0b21Bcmd1
bWVudHMpOgotICAgICAgICAobWFpbik6Ci0KLTIwMTItMDYtMjkgIEtvbnJhZCBQaWFzY2lrICA8
a3BpYXNjaWtAcmltLmNvbT4KLQotICAgICAgICBEb24ndCBoYXJkY29kZSB0YXJnZXQgZHBpIG9m
IDE2MCAoaXQgc2hvdWxkIGJlIDk2IG9uIGRlc2t0b3ApCi0gICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODExNAotCi0gICAgICAgIFJldmlld2VkIGJ5IEFk
YW0gQmFydGguCi0KLSAgICAgICAgVXBkYXRlZCB0aGUgY2FsbCB0byBjb21wdXRlVmlld3BvcnRB
dHRyaWJ1dGVzLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBw
b3J0RWZsLmNwcDoKLSAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6ZHVtcENvbmZp
Z3VyYXRpb25Gb3JWaWV3cG9ydCk6Ci0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAg
ICAgKF9ld2tfdmlld192aWV3cG9ydF9hdHRyaWJ1dGVzX2NvbXB1dGUpOgotCi0yMDEyLTA2LTI3
ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KLQotICAgICAgICBV
bnJldmlld2VkLCByb2xsaW5nIG91dCByMTIxMzk4LgotICAgICAgICBodHRwOi8vdHJhYy53ZWJr
aXQub3JnL2NoYW5nZXNldC8xMjEzOTgKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTkwMTM2Ci0KLSAgICAgICAgYnJva2UgZWZsIGJ1aWxkIChSZXF1ZXN0
ZWQgYnkgcnl1YW4gb24gI3dlYmtpdCkuCi0KLSAgICAgICAgKiB0ZXN0cy9Vbml0VGVzdFV0aWxz
L0VXS1Rlc3RCYXNlLmNwcDogUmVtb3ZlZC4KLSAgICAgICAgKiB0ZXN0cy9Vbml0VGVzdFV0aWxz
L0VXS1Rlc3RCYXNlLmg6IFJlbW92ZWQuCi0gICAgICAgICogdGVzdHMvVW5pdFRlc3RVdGlscy9F
V0tUZXN0Q29uZmlnLmg6IFJlbW92ZWQuCi0gICAgICAgICogdGVzdHMvVW5pdFRlc3RVdGlscy9F
V0tUZXN0Vmlldy5jcHA6IFJlbW92ZWQuCi0gICAgICAgICogdGVzdHMvVW5pdFRlc3RVdGlscy9F
V0tUZXN0Vmlldy5oOiBSZW1vdmVkLgotICAgICAgICAqIHRlc3RzL3Jlc291cmNlcy9kZWZhdWx0
X3Rlc3RfcGFnZS5odG1sOiBSZW1vdmVkLgotICAgICAgICAqIHRlc3RzL3Rlc3RfZXdrX3ZpZXcu
Y3BwOiBSZW1vdmVkLgotICAgICAgICAqIHRlc3RzL3Rlc3RfcnVubmVyLmNwcDogUmVtb3ZlZC4K
LQotMjAxMi0wNi0yNyAgS3J6eXN6dG9mIEN6ZWNoICA8ay5jemVjaEBzYW1zdW5nLmNvbT4KLQot
ICAgICAgICBbRUZMXSBJbXBsZW1lbnRhdGlvbiBvZiB0ZXN0aW5nIGZyYW1ld29yayBhbmQgdW5p
dCB0ZXN0cyBmb3IgV2ViS2l0LUVGTCBwb3J0LgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njg1MDkKLQotICAgICAgICBSZXZpZXdlZCBieSBDaGFuZyBT
aHUuCi0KLSAgICAgICAgVGVzdGluZyBmcmFtZXdvcmsgaXMgYmFzZWQgb24gZ3Rlc3QgbGlicmFy
eS4gR3Rlc3QgbGlicmFyeSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgcHJvamVjdC4gRnJhbWV3b3Jr
IGlzIGRldmlkZWQgaW50byBiYXNlIHBhcnQgYW5kIHZpZXcgcGFydC4KLSAgICAgICAgQmFzZSBw
YXJ0IHRha2VzIGNhcmUgb2YgZWZsIGluaXRpYWxpemF0aW9uLCBkZWZpbmVzIHRlc3QgbWFjcm9z
IGFuZCBwcmVwYXJlcyB0ZXN0IHRvIHJ1bi4gVmlldyBwYXJ0IGlzIGEgY29udGV4dCBvZiBlYWNo
IHRlc3QuCi0KLSAgICAgICAgKiB0ZXN0cy9Vbml0VGVzdFV0aWxzL0VXS1Rlc3RCYXNlLmNwcDog
QWRkZWQuCi0gICAgICAgIChFV0tVbml0VGVzdHMpOgotICAgICAgICAoRVdLVW5pdFRlc3RzOjpF
V0tUZXN0QmFzZTo6aW5pdCk6Ci0gICAgICAgIChFV0tVbml0VGVzdHM6OkVXS1Rlc3RCYXNlOjpz
aHV0ZG93bik6Ci0gICAgICAgIChFV0tVbml0VGVzdHM6OkVXS1Rlc3RCYXNlOjpzaHV0ZG93bkFs
bCk6Ci0gICAgICAgIChFV0tVbml0VGVzdHM6OkVXS1Rlc3RCYXNlOjpzdGFydFRlc3QpOgotICAg
ICAgICAoRVdLVW5pdFRlc3RzOjpFV0tUZXN0QmFzZTo6ZW5kVGVzdCk6Ci0gICAgICAgIChFV0tV
bml0VGVzdHM6OkVXS1Rlc3RCYXNlOjpjcmVhdGVUZXN0KToKLSAgICAgICAgKEVXS1VuaXRUZXN0
czo6RVdLVGVzdEJhc2U6OnJ1blRlc3QpOgotICAgICAgICAqIHRlc3RzL1VuaXRUZXN0VXRpbHMv
RVdLVGVzdEJhc2UuaDogQWRkZWQuCi0gICAgICAgIChFV0tVbml0VGVzdHMpOgotICAgICAgICAo
RVdLVGVzdEJhc2UpOgotICAgICAgICAqIHRlc3RzL1VuaXRUZXN0VXRpbHMvRVdLVGVzdENvbmZp
Zy5oOiBBZGRlZC4KLSAgICAgICAgKENvbmZpZyk6Ci0gICAgICAgICogdGVzdHMvVW5pdFRlc3RV
dGlscy9FV0tUZXN0Vmlldy5jcHA6IEFkZGVkLgotICAgICAgICAoRVdLVW5pdFRlc3RzKToKLSAg
ICAgICAgKEVXS1VuaXRUZXN0czo6RVdLVGVzdEVjb3JlRXZhczo6RVdLVGVzdEVjb3JlRXZhcyk6
Ci0gICAgICAgIChFV0tVbml0VGVzdHM6OkVXS1Rlc3RFY29yZUV2YXM6OmV2YXMpOgotICAgICAg
ICAoRVdLVW5pdFRlc3RzOjpFV0tUZXN0RWNvcmVFdmFzOjpzaG93KToKLSAgICAgICAgKEVXS1Vu
aXRUZXN0czo6RVdLVGVzdFZpZXc6OkVXS1Rlc3RWaWV3KToKLSAgICAgICAgKEVXS1VuaXRUZXN0
czo6RVdLVGVzdFZpZXc6OmluaXQpOgotICAgICAgICAoRVdLVW5pdFRlc3RzOjpFV0tUZXN0Vmll
dzo6c2hvdyk6Ci0gICAgICAgIChFV0tVbml0VGVzdHM6OkVXS1Rlc3RWaWV3OjptYWluRnJhbWUp
OgotICAgICAgICAoRVdLVW5pdFRlc3RzOjpFV0tUZXN0Vmlldzo6ZXZhcyk6Ci0gICAgICAgIChF
V0tVbml0VGVzdHM6OkVXS1Rlc3RWaWV3OjpiaW5kRXZlbnRzKToKLSAgICAgICAgKiB0ZXN0cy9V
bml0VGVzdFV0aWxzL0VXS1Rlc3RWaWV3Lmg6IEFkZGVkLgotICAgICAgICAoRVdLVW5pdFRlc3Rz
KToKLSAgICAgICAgKEVXS1Rlc3RFY29yZUV2YXMpOgotICAgICAgICAoRVdLVGVzdFZpZXcpOgot
ICAgICAgICAoRVdLVW5pdFRlc3RzOjpFV0tUZXN0Vmlldzo6d2ViVmlldyk6Ci0gICAgICAgICog
dGVzdHMvcmVzb3VyY2VzL2RlZmF1bHRfdGVzdF9wYWdlLmh0bWw6IEFkZGVkLgotICAgICAgICAq
IHRlc3RzL3Rlc3RfZXdrX3ZpZXcuY3BwOiBBZGRlZC4KLSAgICAgICAgKGV3a1ZpZXdFZGl0YWJs
ZUdldENiKToKLSAgICAgICAgKFRFU1QpOgotICAgICAgICAoZXdrVmlld1VyaUdldENiKToKLSAg
ICAgICAgKiB0ZXN0cy90ZXN0X3J1bm5lci5jcHA6IEFkZGVkLgotICAgICAgICAocGFyc2VDdXN0
b21Bcmd1bWVudHMpOgotICAgICAgICAobWFpbik6Ci0KLTIwMTItMDYtMjUgIE1hcmsgSGFobmVu
YmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4KLQotICAgICAgICBKU0xvY2sgc2hvdWxkIGJl
IHBlci1KU0dsb2JhbERhdGEKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTg5MTIzCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCi0K
LSAgICAgICAgQ2hhbmdlZCBhbGwgc2l0ZXMgdGhhdCB1c2VkIEpTTG9jayB0byBpbnN0ZWFkIHVz
ZSB0aGUgbmV3IEpTTG9ja0hvbGRlcgotICAgICAgICBhbmQgcGFzcyBpbiB0aGUgY29ycmVjdCBK
UyBjb250ZXh0IHRoYXQgdGhlIGNvZGUgaXMgYWJvdXQgdG8gaW50ZXJhY3Qgd2l0aCB0aGF0IAot
ICAgICAgICBuZWVkcyBwcm90ZWN0aW9uLiBBbHNvIGFkZGVkIGEgY291cGxlIEpTTG9ja3MgdG8g
cGxhY2VzIHRoYXQgZGlkbid0IGFscmVhZHkgCi0gICAgICAgIGhhdmUgaXQgdGhhdCBuZWVkZWQg
aXQuCi0KLSAgICAgICAgKiBld2svZXdrX2ZyYW1lLmNwcDoKLSAgICAgICAgKGV3a19mcmFtZV9z
Y3JpcHRfZXhlY3V0ZSk6Ci0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAgKGV3
a192aWV3X2pzX29iamVjdF9hZGQpOgotCi0yMDEyLTA2LTI2ICBHeXV5b3VuZyBLaW0gIDxneXV5
b3VuZy5raW1Ac2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgQ2hhbmdlIHJldHVybiB0eXBlIGluIGJh
bmR3aWR0aCBhdHRyaWJ1dGUgb2YgbmV0d29yayBpbmZvcm1hdGlvbiBBUEkKLSAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg5OTU5Ci0KLSAgICAgICAgUmV2
aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KLQotICAgICAgICBBY2NvcmRpbmcgdG8gbmV0d29yayBpbmZv
cm1hdGlvbiBBUEkgc3BlYywgYmFuZHdpZHRoIGF0dHJpYnV0ZSBzaG91bGQgcmV0dXJuIGRvdWJs
ZSB0eXBlLgotICAgICAgICBCdXQsIGV4aXN0aW5nIGltcGxlbWVudGF0aW9uIGhhcyB1c2VkICps
b25nKiBhbmQgKnVuc2lnbmVkIGludCogdHlwZXMuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9OZXR3b3JrSW5mb0NsaWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpOZXR3b3JrSW5m
b0NsaWVudEVmbDo6YmFuZHdpZHRoKToKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9OZXR3b3Jr
SW5mb0NsaWVudEVmbC5oOgotICAgICAgICAoTmV0d29ya0luZm9DbGllbnRFZmwpOgotCi0yMDEy
LTA2LTI1ICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+Ci0KLSAgICAg
ICAgW0VGTF0gSW1wbGVtZW50IE5ldHdvcmsgSW5mb3JtYXRpb24gQVBJCi0gICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NzA2NwotCi0gICAgICAgIFJldmll
d2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgotCi0gICAgICAgIEltcGxlbWVudCBO
ZXR3b3JrSW5mb0NsaWVudEVmbC5jcHAgdXNpbmcgZWV6ZSBsaWJyYXJ5LiBIb3dldmVyLCB0aGlz
IHBhdGNoIG9ubHkKLSAgICAgICAgc3VwcG9ydHMgdGhpcyBmZWF0dXJlIG9uIGV0aGVybmV0IGlu
dGVyZmFjZS4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L05ldHdvcmtJbmZvQ2xpZW50RWZs
LmNwcDoKLSAgICAgICAgKFdlYkNvcmUpOgotICAgICAgICAoV2ViQ29yZTo6TmV0d29ya0luZm9D
bGllbnRFZmw6Ok5ldHdvcmtJbmZvQ2xpZW50RWZsKToKLSAgICAgICAgKFdlYkNvcmU6Ok5ldHdv
cmtJbmZvQ2xpZW50RWZsOjpzdGFydFVwZGF0aW5nKToKLSAgICAgICAgKFdlYkNvcmU6Ok5ldHdv
cmtJbmZvQ2xpZW50RWZsOjpzdG9wVXBkYXRpbmcpOgotICAgICAgICAoV2ViQ29yZTo6TmV0d29y
a0luZm9DbGllbnRFZmw6OmJhbmR3aWR0aCk6Ci0gICAgICAgIChXZWJDb3JlOjpOZXR3b3JrSW5m
b0NsaWVudEVmbDo6bWV0ZXJlZCk6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvTmV0d29ya0lu
Zm9DbGllbnRFZmwuaDoKLSAgICAgICAgKE5ldHdvcmtJbmZvQ2xpZW50RWZsKToKLQotMjAxMi0w
Ni0yMyAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+Ci0KLSAgICAg
ICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEyMTA1OC4KLSAgICAgICAgaHR0cDovL3RyYWMu
d2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTIxMDU4Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD04OTgwOQotCi0gICAgICAgIFBhdGNoIGNhdXNlcyBwbHVnaW5z
IHRlc3RzIHRvIGNyYXNoIGluIEdUSyBkZWJ1ZyBidWlsZHMKLSAgICAgICAgKFJlcXVlc3RlZCBi
eSB6ZG9iZXJzZWsgb24gI3dlYmtpdCkuCi0KLSAgICAgICAgKiBld2svZXdrX2ZyYW1lLmNwcDoK
LSAgICAgICAgKGV3a19mcmFtZV9zY3JpcHRfZXhlY3V0ZSk6Ci0gICAgICAgICogZXdrL2V3a192
aWV3LmNwcDoKLSAgICAgICAgKGV3a192aWV3X2pzX29iamVjdF9hZGQpOgotCi0yMDEyLTA2LTIy
ICBSeXVhbiBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBbRUZMXVtX
SzJdIFN1cHBvcnQga2V5Ym9hcmQgZXZlbnQKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTg5MjY4Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQ2hhbmcgU2h1
LgotCi0gICAgICAgIEV4dHJhY3Qga2V5RG93bkNvbW1hbmRzTWFwIGFuZCBrZXlQcmVzc0NvbW1h
bmRzTWFwIHRvIHNoYXJlIFdlYktpdDEvRWZsIGFuZCBXZWJLaXQyL0VmbC4KLQotICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpF
ZGl0b3JDbGllbnRFZmw6OmludGVycHJldEtleUV2ZW50KToKLQotMjAxMi0wNi0yMCAgTWFyayBI
YWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgotCi0gICAgICAgIEpTTG9jayBzaG91
bGQgYmUgcGVyLUpTR2xvYmFsRGF0YQotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9ODkxMjMKLQotICAgICAgICBSZXZpZXdlZCBieSBHYXZpbiBCYXJyYWNs
b3VnaC4KLQotICAgICAgICBDaGFuZ2VkIGFsbCBzaXRlcyB0aGF0IHVzZWQgSlNMb2NrIHRvIGlu
c3RlYWQgdXNlIHRoZSBuZXcgSlNMb2NrSG9sZGVyCi0gICAgICAgIGFuZCBwYXNzIGluIHRoZSBj
b3JyZWN0IEpTIGNvbnRleHQgdGhhdCB0aGUgY29kZSBpcyBhYm91dCB0byBpbnRlcmFjdCB3aXRo
IHRoYXQgCi0gICAgICAgIG5lZWRzIHByb3RlY3Rpb24uCi0KLSAgICAgICAgKiBld2svZXdrX2Zy
YW1lLmNwcDoKLSAgICAgICAgKGV3a19mcmFtZV9zY3JpcHRfZXhlY3V0ZSk6Ci0gICAgICAgICog
ZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAgKGV3a192aWV3X2pzX29iamVjdF9hZGQpOgotCi0y
MDEyLTA2LTIyICBBbXkgT3VzdGVyaG91dCAgPGFvdXN0ZXJoQGNocm9taXVtLm9yZz4KLQotICAg
ICAgICBSZW5hbWVkIERldmljZU9yaWVudGF0aW9uIHRvIERldmljZU9yaWVudGF0aW9uRGF0YQot
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg2NjMKLQot
ICAgICAgICBSZXZpZXdlZCBieSBTdGV2ZSBCbG9jay4KLQotICAgICAgICBVcGRhdGVkIGZpbGVz
IHRvIHVzZSB0aGUgcmVuYW1lZCBEZXZpY2VPcmllbnRhdGlvbkRhdGEgaW5zdGVhZCBvZiBEZXZp
Y2VPcmllbnRhdGlvbi4KLSAgICAgICAgVGhpcyBjaGFuZ2UgbWFrZXMgRGV2aWNlT3JpZW50YXRp
b25EYXRhIGNvbnNpc3RlbnQgd2l0aCBEZXZpY2VNb3Rpb25EYXRhLgotICAgICAgICAKLSAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9EZXZpY2VPcmllbnRhdGlvbkNsaWVudEVmbC5oOgotICAgICAg
ICAoRGV2aWNlT3JpZW50YXRpb25DbGllbnRFZmwpOgotCi0yMDEyLTA2LTE5ICBTZXJnaW8gVmls
bGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgotCi0gICAgICAgIENhbGxpbmcgbmF0aXZl
SW1hZ2VGb3JDdXJyZW50RnJhbWUoKSBjYXVzZXMgYXNzZXJ0aW9uIGZhaWx1cmU6IG1fdmVyaWZp
ZXIuaXNTYWZlVG9Vc2UoKQotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9Njc1ODIKLQotICAgICAgICBSZXZpZXdlZCBieSBEYXZpZCBMZXZpbi4KLQotICAg
ICAgICBVc2Ugc3luY2hyb25vdXNOYXRpdmVJY29uRm9yUGFnZVVSTCgpIHRvIHJldHJpZXZlIGZh
dmljb25zLgotCi0gICAgICAgICogZXdrL2V3a19oaXN0b3J5LmNwcDoKLSAgICAgICAgKGV3a19o
aXN0b3J5X2l0ZW1faWNvbl9zdXJmYWNlX2dldCk6Ci0gICAgICAgIChld2tfaGlzdG9yeV9pdGVt
X2ljb25fb2JqZWN0X2FkZCk6Ci0gICAgICAgICogZXdrL2V3a19zZXR0aW5ncy5jcHA6Ci0gICAg
ICAgIChld2tfc2V0dGluZ3NfaWNvbl9kYXRhYmFzZV9pY29uX3N1cmZhY2VfZ2V0KToKLSAgICAg
ICAgKGV3a19zZXR0aW5nc19pY29uX2RhdGFiYXNlX2ljb25fb2JqZWN0X2FkZCk6Ci0KLTIwMTIt
MDYtMTkgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KLQot
ICAgICAgICBbRUZMXSBFRkwncyBMYXlvdXRUZXN0Q29udHJvbGxlciBkb2VzIG5vdCBzdXBwb3J0
IHNldFRleHREaXJlY3Rpb24KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTg3NDgxCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgSGFqaW1lIE1vcml0YS4KLQot
ICAgICAgICBBZGQgbmV3IEV3a19WaWV3IG1ldGhvZCB0byBzZXQgdGhlIHRleHQgZGlyZWN0aW9u
LCBieSBjYWxsaW5nCi0gICAgICAgIEVkaXRvcjo6c2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24oKSBp
bnRlcm5hbGx5LCBhcyBNYWMgYW5kIENocm9taXVtCi0gICAgICAgIHBvcnRzIGRvLgotCi0gICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHA6Ci0gICAgICAgICog
ZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAgKGV3a192aWV3X3RleHRfZGlyZWN0aW9uX3NldCk6
Ci0gICAgICAgICogZXdrL2V3a192aWV3Lmg6Ci0KLTIwMTItMDYtMTUgIENocmlzdG9waGUgRHVt
ZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KLQotICAgICAgICBbRUZMXSBFRkwncyBM
YXlvdXRUZXN0Q29udHJvbGxlciBkb2VzIG5vdCBzdXBwb3J0IHRpdGxlVGV4dERpcmVjdGlvbgot
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODY0NzUKLQot
ICAgICAgICBSZXZpZXdlZCBieSBIYWppbWUgTW9yaXRhLgotCi0gICAgICAgIEVtaXQgdGhlICJ0
aXRsZSxjaGFuZ2VkIiBzaWduYWwgZXZlbiBpZiB0aGUgdGl0bGUgZGlyZWN0aW9uIGhhcwotICAg
ICAgICBjaGFuZ2VkIGJ1dCBub3QgaXRzIHRleHQuCi0KLSAgICAgICAgKiBld2svZXdrX2ZyYW1l
LmNwcDoKLSAgICAgICAgKGV3a19mcmFtZV90aXRsZV9zZXQpOgotCi0yMDEyLTA2LTE0ICBSeXVh
biBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBbRUZMXSBNb3ZlIGN1
cnNvciByZWxhdGVkIGNvZGUgZnJvbSBXaWRnZXRFZmwgdG8gZXdrX3ZpZXcgYW5kIEVmbFNjcmVl
blV0aWxpdGllcy4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTg4ODAzCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQ2hhbmcgU2h1LgotCi0gICAgICAgIEJl
Y2F1c2UgV2ViUHJvY2VzcyBjYW4gbm90IGNvbnRyb2wgY3Vyc29yLAotICAgICAgICBzZXRDdXJz
b3Igc2hvdWxkIGJlIHBhc3NlZCB0byBDaHJvbWVDbGllbnQgbGlrZSBvdGhlciBwb3J0cy4KLQot
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChX
ZWJDb3JlOjpDaHJvbWVDbGllbnRFZmw6OnNldEN1cnNvcik6Ci0gICAgICAgICogZXdrL2V3a192
aWV3LmNwcDoKLSAgICAgICAgKF9Fd2tfVmlld19Qcml2YXRlX0RhdGEpOgotICAgICAgICAoX2V3
a192aWV3X3ByaXZfbmV3KTogQ2hlY2sgd2hldGhlciBlY29yZV94IGNhbiBiZSB1c2VkLgotICAg
ICAgICAoX2V3a192aWV3X3ByaXZfZGVsKToKLSAgICAgICAgKF9ld2tfdmlld19zbWFydF9hZGQp
OgotICAgICAgICBDaGFuZ2Ugb3JkZXIgb2YgaW5pdGlhbGl6YXRpb24gdG8gdXNlIGJhc2Ugc3Ry
dWN0dXJlIGluIF9ld2tfdmlld19wcml2X25ldy4KLSAgICAgICAgKGV3a192aWV3X2N1cnNvcl9z
ZXQpOiBNb3ZlZCBmcm9tIFdpZGdldDo6YXBwbHlDdXJzb3IuCi0gICAgICAgICogZXdrL2V3a192
aWV3X3ByaXZhdGUuaDoKLSAgICAgICAgKFdlYkNvcmUpOgotCi0yMDEyLTA2LTE0ICBTdWRhcnNh
bmEgTmFnaW5lbmkgIDxzdWRhcnNhbmEubmFnaW5lbmlAbGludXguaW50ZWwuY29tPgotCi0gICAg
ICAgIFtFRkxdIFtEUlRdIEltcGxlbWVudCBzZXREb21haW5SZWxheGF0aW9uRm9yYmlkZGVuRm9y
VVJMU2NoZW1lIGluIEVGTCBEUlQKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTg0NTc3Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgUnlvc3VrZSBOaXdhLgot
Ci0gICAgICAgIEFkZCBtaXNzaW5nIGltcGxlbWVudGF0aW9uIHNldERvbWFpblJlbGF4YXRpb25G
b3JiaWRkZW5Gb3JVUkxTY2hlbWUgdG8KLSAgICAgICAgRUZMJ3MgRHVtcFJlbmRlclRyZWVTdXBw
b3J0IHRvIGFsbG93IGRpc2FibGluZyBkb21haW4gcmVsYXhhdGlvbi4KLQotICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHA6Ci0gICAgICAgIChEdW1w
UmVuZGVyVHJlZVN1cHBvcnRFZmw6OnNldERvbWFpblJlbGF4YXRpb25Gb3JiaWRkZW5Gb3JVUkxT
Y2hlbWUpOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVm
bC5oOgotCi0yMDEyLTA2LTEzICBBbXkgT3VzdGVyaG91dCAgPGFvdXN0ZXJoQGNocm9taXVtLm9y
Zz4KLQotICAgICAgICBSZW5hbWUgY3VycmVudERldmljZU1vdGlvbiB0byBsYXN0TW90aW9uIGlu
IERldmljZU1vdGlvbkNsaWVudAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODg4NTQKLQotICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgotCi0g
ICAgICAgIFJlbmFtZSB0aGUgZnVuY3Rpb24gY3VycmVudERldmljZU1vdGlvbiB0byBsYXN0TW90
aW9uIGluIERldmljZU1vdGlvbkNsaWVudC4KLSAgICAgICAgVGhpcyBtYWtlcyBpdCBjb25zaXN0
ZW50IHdpdGggdGhlIHNpbWlsYXIgZnVuY3Rpb24gbGFzdE9yaWVudGF0aW9uIGluIERldmljZU9y
aWVudGF0aW9uQ2xpZW50LgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRGV2aWNlTW90aW9u
Q2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkRldmljZU1vdGlvbkNsaWVudEVmbDo6
bGFzdE1vdGlvbik6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRGV2aWNlTW90aW9uQ2xpZW50
RWZsLmg6Ci0gICAgICAgIChEZXZpY2VNb3Rpb25DbGllbnRFZmwpOgotCi0yMDEyLTA2LTEyICBD
aHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+Ci0KLSAgICAgICAg
W0VGTF0gRW5hYmxlIFNIQURPV19ET00gZmxhZwotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODc3MzIKLQotICAgICAgICBSZXZpZXdlZCBieSBLZW50YXJv
IEhhcmEuCi0KLSAgICAgICAgQWRkIEV3ayBzZXR0aW5nIHRvIHRvZ2dsZSBTaGFkb3cgRE9NIHN1
cHBvcnQgYXQgcnVudGltZS4KLQotICAgICAgICAqIGV3ay9ld2tfc2V0dGluZ3MuY3BwOgotICAg
ICAgICAoZXdrX3NldHRpbmdzX3NoYWRvd19kb21fZW5hYmxlX2dldCk6Ci0gICAgICAgIChld2tf
c2V0dGluZ3Nfc2hhZG93X2RvbV9lbmFibGVfc2V0KToKLSAgICAgICAgKiBld2svZXdrX3NldHRp
bmdzLmg6Ci0KLTIwMTItMDYtMTEgIEthdXN0dWJoIEF0cmF3YWxrYXIgIDxrYXVzdHViaEBtb3Rv
cm9sYS5jb20+Ci0KLSAgICAgICAgW0RSVF0gTFRDOjogY291bnRlclZhbHVlRm9yRWxlbWVudEJ5
SWQoKSBjb3VsZCBiZSBtb3ZlZCB0byBJbnRlcm5hbHMuCi0gICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NDQwNgotCi0gICAgICAgIFJldmlld2VkIGJ5IEhh
amltZSBNb3JpdGEuCi0KLSAgICAgICAgTW92ZSB0aGUgY291bnRlclZhbHVlRm9yRWxlbWVudEJ5
SWQgZnJvbSBMYXlvdXRUZXN0Q290cm9sbGVyIHRvIEludGVybmFscyBhbmQKLSAgICAgICAgcmVt
b3ZlIHRoZSBvbGQgcGxhdGZvcm0gc3BlY2lmaWMgaW1wbGVtZW50YXRpb25zIGFzIGl0IGV4Y2x1
c2l2ZWx5IHRlc3RzIFdlYkNvcmUgZnVuY3Rpb25hbGl0eS4KLQotICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHA6Ci0KLTIwMTItMDYtMDUgIEFkYW0g
QmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KLQotICAgICAgICBSZW1vdmUgc3VwcG9ydCBmb3Ig
dGFyZ2V0LWRlbnNpdHlkcGkgaW4gdGhlIHZpZXdwb3J0IG1ldGEgdGFnCi0gICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODA0NwotCi0gICAgICAgIFJldmll
d2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgotCi0gICAgICAgICogZXdrL2V3a192
aWV3LmNwcDoKLSAgICAgICAgKF9ld2tfdmlld19wcml2X25ldyk6Ci0KLTIwMTItMDYtMDUgIERv
bmd3b28gSW0gIDxkdy5pbUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBBZGQgJ2lzUHJvdG9jb2xI
YW5kbGVyUmVnaXN0ZXJlZCcgYW5kICd1bnJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyJy4KLSAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczMTc2Ci0KLSAgICAg
ICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KLQotICAgICAgICBUd28gbW9yZSBBUElzIGFyZSBh
ZGRlZCBpbiBDdXN0b20gU2NoZW1lIEhhbmRsZXIgc3BlY2lmaWNhdGlvbi4KLSAgICAgICAgaHR0
cDovL2Rldi53My5vcmcvaHRtbDUvc3BlYy9PdmVydmlldy5odG1sI2N1c3RvbS1oYW5kbGVycwot
ICAgICAgICBPbmUgaXMgJ2lzUHJvdG9jb2xIYW5kbGVyUmVnaXN0ZXJlZCcgdG8gcXVlcnkgd2hl
dGhlciB0aGUgc3BlY2lmaWMgVVJMCi0gICAgICAgIGlzIHJlZ2lzdGVyZWQgb3Igbm90LgotICAg
ICAgICBUaGUgb3RoZXIgaXMgJ3VucmVnaXN0ZXJQcm90b2NvbEhhbmRsZXInIHRvIHJlbW92ZSB0
aGUgcmVnaXN0ZXJlZCBVUkwuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGll
bnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29yZTo6Y3VzdG9tSGFuZGxlckRhdGFDcmVhdGUpOgot
ICAgICAgICAoV2ViQ29yZTo6Y3VzdG9tSGFuZGxlckRhdGFEZWxldGUpOgotICAgICAgICAoV2Vi
Q29yZTo6Q2hyb21lQ2xpZW50RWZsOjpyZWdpc3RlclByb3RvY29sSGFuZGxlcik6Ci0gICAgICAg
IChXZWJDb3JlKToKLSAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEVmbDo6aXNQcm90b2Nv
bEhhbmRsZXJSZWdpc3RlcmVkKTogUXVlcnkgaWYgdGhlIGhhbmRsZXIgaXMgcmVnaXN0ZXJlZC4K
LSAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEVmbDo6dW5yZWdpc3RlclByb3RvY29sSGFu
ZGxlcik6IFVucmVnaXN0ZXIgdGhlIHJlZ2lzdGVyZWQgaGFuZGxlci4KLSAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuaDoKLSAgICAgICAgKENocm9tZUNsaWVudEVmbCk6
Ci0gICAgICAgICogZXdrL2V3a19jdXN0b21faGFuZGxlci5jcHA6Ci0gICAgICAgIChld2tfY3Vz
dG9tX2hhbmRsZXJfaXNfcHJvdG9jb2xfaGFuZGxlcl9yZWdpc3RlcmVkKTogUXVlcnkgaWYgdGhl
IGhhbmRsZXIgaXMgcmVnaXN0ZXJlZC4KLSAgICAgICAgKGV3a19jdXN0b21faGFuZGxlcl91bnJl
Z2lzdGVyX3Byb3RvY29sX2hhbmRsZXIpOiBVbnJlZ2lzdGVyIHRoZSByZWdpc3RlcmVkIGhhbmRs
ZXIuCi0gICAgICAgICogZXdrL2V3a19jdXN0b21faGFuZGxlcl9wcml2YXRlLmg6IEFkZHMgcHJp
dmF0ZSBmdW5jdGlvbi4KLSAgICAgICAgKiBld2svZXdrX3ZpZXcuaDogQWRkcyBlbnVtZXJhdGlv
bi4KLQotMjAxMi0wNi0wNCAgVG9tYXN6IE1vcmF3c2tpICA8dC5tb3Jhd3NraUBzYW1zdW5nLmNv
bT4KLQotICAgICAgICBbRUZMXSBSZWZhY3RvciBld2tfdmlld19jb250ZXh0X3BhaW50IGNvZGUu
Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NTU4OAot
Ci0gICAgICAgIFJldmlld2VkIGJ5IEhhamltZSBNb3JpdGEuCi0KLSAgICAgICAgVGhlIG1haW4g
cHVycG9zZSBvZiB0aGlzIGNoYW5nZSBpcyByZWR1Y2Ugc2l6ZSBvZiBld2tfdmlldy5oL2NwcCBm
aWxlcyBhbmQgbWFrZSB1c2Ugb2YgZXdrX3ZpZXdfY29udGV4dF9wYWludAotICAgICAgICBvYmpl
Y3QgYnkgZXdrX3ZpZXdfc2luZ2xlIGFuZCBld2tfdmlld190aWxlZCBpbnN0ZWFkIG9mIGRpcmVj
dCBvcGVyYXRpb25zIG9uIGNhaXJvLgotICAgICAgICBUaGUgY29kZSBpcyBtb3JlIG9iamVjdGl2
ZSBhbmQgbG9va3MgdmVyeSBzaW1wbGUgbm93LgotICAgICAgICBSZW1vdmUgZXdrX3ZpZXdfY29u
dGV4dF9wYWludCBjb2RlIGZyb20gZXdrX3ZpZXcgaC9jcHAgZmlsZSBhbmQgbW92ZSBpdCB0byBz
ZXBhcmF0ZSBuZXcgZXdrX2NvbnRleHRfcGFpbnQgZmlsZS4KLSAgICAgICAgVGhlIGV3a192aWV3
X2NvbnRleHRfcGFpbnQgaGFzIGJlZW4gcmVuYW1lZCB0byBld2tfY29udGV4dF9wYWludCBhbmQg
aXQgaXMgbm90IGJpbmRlZCB0byB2aWV3IG9uIGNyZWF0aW9uIHRpbWUuCi0KLSAgICAgICAgKiBl
d2svZXdrX3BhaW50X2NvbnRleHQuY3BwOiBBZGRlZC4KLSAgICAgICAgRnVuY3Rpb25zIHJlbmFt
ZWQgYW5kIG1vdmVkIGZyb20gZXdrX3ZpZXcgdG8gZXdrX3BhaW50X2NvbnRleHQgZmlsZS4KLSAg
ICAgICAgKGV3a19wYWludF9jb250ZXh0X25ldyk6Ci0gICAgICAgIChld2tfcGFpbnRfY29udGV4
dF9mcm9tX2ltYWdlX25ldyk6IE5ldyBmdW5jdGlvbi4KLSAgICAgICAgKGV3a19wYWludF9jb250
ZXh0X2Zyb21faW1hZ2VfZGF0YV9uZXcpOiBOZXcgZnVuY3Rpb24uCi0gICAgICAgIChld2tfcGFp
bnRfY29udGV4dF9mcmVlKToKLSAgICAgICAgKGV3a19wYWludF9jb250ZXh0X3NhdmUpOgotICAg
ICAgICAoZXdrX3BhaW50X2NvbnRleHRfcmVzdG9yZSk6Ci0gICAgICAgIChld2tfcGFpbnRfY29u
dGV4dF9jbGlwKToKLSAgICAgICAgKGV3a19wYWludF9jb250ZXh0X3NjYWxlKToKLSAgICAgICAg
KGV3a19wYWludF9jb250ZXh0X3RyYW5zbGF0ZSk6Ci0gICAgICAgIChld2tfcGFpbnRfY29udGV4
dF9wYWludCk6IEFkZGVkIEZyYW1lVmlldyBwYXJhbWV0ZXIuCi0gICAgICAgIChld2tfcGFpbnRf
Y29udGV4dF9wYWludF9jb250ZW50cyk6IEFkZGVkIEZyYW1lVmlldyBwYXJhbWV0ZXIuCi0gICAg
ICAgICogZXdrL2V3a19wYWludF9jb250ZXh0X3ByaXZhdGUuaDogQWRkZWQuCi0gICAgICAgIChf
RXdrX1BhaW50X0NvbnRleHQpOgotICAgICAgICAqIGV3ay9ld2tfcHJpdmF0ZS5oOiBGdW5jdGlv
bnMgZXdrX3ZpZXdfcGFpbnQgYW5kIGV3a192aWV3X3BhaW50X2NvbnRlbnRzIG1vdmVkIGZyb20g
ZXdrX3ZpZXcuaC4KLSAgICAgICAgKiBld2svZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUuaDogUmVt
b3ZlZCB1bnVzZWQgaW5jbHVkZS4KLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOiBNb3ZlZCBh
bGwgZnVuY3Rpb24gcmVsZWF0ZWQgdG8gcGFpbnQgY29udGV4dCBvYmplY3QgdG8gbmV3IGV3a19w
YWludF9jb250ZXh0IGZpbGUuCi0gICAgICAgIChfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKToKLSAg
ICAgICAgKGV3a192aWV3X3BhaW50KTogQ2hhbmdlZCBmdW5jdGlvbiBhY2NvcmRpbmcgY2hhbmdl
IGluIGV3a19wYWludF9jb250ZXh0X3BhaW50IGZ1bmN0aW9uLgotICAgICAgICAoZXdrX3ZpZXdf
cGFpbnRfY29udGVudHMpOiBDaGFuZ2VkIGZ1bmN0aW9uIGFjY29yZGluZyBjaGFuZ2UgaW4gZXdr
X3BhaW50X2NvbnRleHRfcGFpbnRfY29udGVudHMgZnVuY3Rpb24uCi0gICAgICAgICogZXdrL2V3
a192aWV3Lmg6IFJlbW92ZWQgYWxsIHBhaW50IGNvbnRleHQgZnVuY3Rpb25zIGFuZCBld2tfdmll
d19wYWludCwgZXdrX3ZpZXdfcGFpbnRfY29udGVudHMgZnVuY3Rpb24gZnJvbQotICAgICAgICBw
dWJsaWMgQVBJLgotICAgICAgICAqIGV3ay9ld2tfdmlld19zaW5nbGUuY3BwOgotICAgICAgICAo
X2V3a192aWV3X3NpbmdsZV9zbWFydF9yZXBhaW50c19wcm9jZXNzKToKLSAgICAgICAgUmVmYWN0
b3Igb2YgX2V3a192aWV3X3NpbmdsZV9zbWFydF9yZXBhaW50c19wcm9jZXNzIGZ1bmN0aW9uLgot
ICAgICAgICBSZW1vdmVkIGdvdG8gc3RhdGVtZW50cy4KLSAgICAgICAgUmVtb3ZlZCB2YXJpYWJs
ZXMgZGVjbGFyYXRpb24gZnJvbSBmdW5jdGlvbiBiZWdpbm5pbmcuCi0gICAgICAgICogZXdrL2V3
a192aWV3X3RpbGVkLmNwcDoKLSAgICAgICAgKF9ld2tfdmlld190aWxlZF9yZW5kZXJfY2IpOiBN
YWtlIHVzZSBvZiBld2tfcGFpbnRfY29udGV4dCBvYmplY3QgaW5zdGVhZCBvZiBkaXJlY3Rpb24g
b3BlcmF0aW9uIG9uIGNhaXJvLgotICAgICAgICBMb29rcyBzaW1wbGVyIGFuZCBtb3JlIG9iamVj
dGl2ZS4KLQotMjAxMi0wNi0wMyAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcu
Y29tPgotCi0gICAgICAgIEFkZCBld2tfY3VzdG9tX2hhbmRsZXJfcHJpdmF0ZS5oIGZvciBld2tf
Y3VzdG9tX2hhbmRsZXIuY3BwCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD04ODE2MwotCi0gICAgICAgIFJldmlld2VkIGJ5IFJ5b3N1a2UgTml3YS4KLQot
ICAgICAgICBFRkwgV0sxIGRlY2lkZWQgdG8gZGl2aWRlIHVwIGV3a19wcml2YXRlLmggaW50byBl
YWNoIGZpbGUncyBYWFhfcHJpdmF0ZS5oIGZpbGUKLSAgICAgICAgaW4gb3JkZXIgdG8gbWFpbnRh
aW4gaW50ZXJuYWwgZnVuY3Rpb25zIG1vcmUgZWFzaWx5LiBCdWcgNzMxNzYgaXMgYWRkaW5nIG5l
dwotICAgICAgICBpbnRlcm5hbCBmdW5jdGlvbnMgdG8gZXdrX2N1c3RvbV9oYW5sZGVyLmNwcC4g
U28sIGV3a19jdXN0b21faGFuZGxlci5jcHAgbmVlZHMKLSAgICAgICAgdG8gaGF2ZSBfcHJpdmF0
ZS5oIGZpbGUgYXMgd2VsbC4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVu
dEVmbC5jcHA6Ci0gICAgICAgICogZXdrL2V3a19jdXN0b21faGFuZGxlci5jcHA6Ci0gICAgICAg
ICogZXdrL2V3a19jdXN0b21faGFuZGxlcl9wcml2YXRlLmg6IEFkZGVkLgotICAgICAgICAqIGV3
ay9ld2tfdmlld19wcml2YXRlLmg6Ci0KLTIwMTItMDYtMDEgIENocmlzdG9waGUgRHVtZXogIDxj
aHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KLQotICAgICAgICBbRUZMXSBFRkwgcG9ydCBkb2Vz
IG5vdCBlbmFibGUgV0VCX0lOVEVOVFNfVEFHIGZsYWcKLSAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg2ODY2Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQWRh
bSBCYXJ0aC4KLQotICAgICAgICBJbXBsZW1lbnQgcmVnaXN0ZXJJbnRlbnRTZXJ2aWNlKCkgaW4g
RUZMJ3MgRnJhbWVMb2FkZXJDbGllbnQuCi0gICAgICAgIEVtaXQgYSAiaW50ZW50LHNlcnZpY2Us
cmVnaXN0ZXIiIHNpZ25hbCBvbiB0aGUgZnJhbWUgd2hlbiBhIG5ldyBXZWIKLSAgICAgICAgSW50
ZW50IHNlcnZpY2UgcmVnaXN0ZXJzLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29yZSk6Ci0gICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlckNsaWVudEVmbDo6cmVnaXN0ZXJJbnRlbnRTZXJ2aWNlKToKLSAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5oOgotICAgICAgICAoRnJhbWVM
b2FkZXJDbGllbnRFZmwpOgotICAgICAgICAqIGV3ay9ld2tfZnJhbWUuY3BwOgotICAgICAgICAo
ZXdrX2ZyYW1lX2ludGVudF9zZXJ2aWNlX3JlZ2lzdGVyKToKLSAgICAgICAgKiBld2svZXdrX2Zy
YW1lLmg6Ci0gICAgICAgICogZXdrL2V3a19mcmFtZV9wcml2YXRlLmg6Ci0KLTIwMTItMDYtMDEg
IENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KLQotICAgICAg
ICBbRUZMXSBld2tfaW50ZW50X2RhdGFfZ2V0KCkgaXMgbm90IG5lZWRlZCBhbmQgY2FuIGJlIHJl
bW92ZWQKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg4
MDcyCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KLQotICAgICAgICBSZW1vdmUg
ZXdrX2ludGVudF9kYXRhX2dldCgpIG1ldGhvZCBmcm9tIEV3a19JbnRlbnQuIEludGVudCBkYXRh
IGlzCi0gICAgICAgIHNlcmlhbGl6ZWQgYW5kIGRvZXMgbm90IG5lZWQgdG8gYmUgcHVibGljbHkg
ZXhwb3NlZC4gVGhlIGJyb3dzZXIgb25seQotICAgICAgICBuZWVkcyBhY3Rpb24gYW5kIHR5cGUg
dG8gbWF0Y2ggd2l0aCBzZXJ2aWNlcy4KLQotICAgICAgICAqIGV3ay9ld2tfaW50ZW50LmNwcDoK
LSAgICAgICAgKF9Fd2tfSW50ZW50KToKLSAgICAgICAgKGV3a19pbnRlbnRfYWN0aW9uX2dldCk6
Ci0gICAgICAgIChld2tfaW50ZW50X3R5cGVfZ2V0KToKLSAgICAgICAgKGV3a19pbnRlbnRfc2Vy
dmljZV9nZXQpOgotICAgICAgICAoZXdrX2ludGVudF9mcmVlKToKLSAgICAgICAgKiBld2svZXdr
X2ludGVudC5oOgotCi0yMDEyLTA2LTAxICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5k
dW1lekBpbnRlbC5jb20+Ci0KLSAgICAgICAgW0VGTF0gRUZMJ3MgTGF5b3V0VGVzdENvbnRyb2xs
ZXIgbmVlZHMgdG8gaW1wbGVtZW50IGRlbGl2ZXJXZWJJbnRlbnQKLSAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg2ODY1Ci0KLSAgICAgICAgUmV2aWV3ZWQg
YnkgQWRhbSBCYXJ0aC4KLQotICAgICAgICBBZGQgbWV0aG9kIG9uIEV3a19GcmFtZSB0byBkZWxp
dmVyIGFuIGludGVudC4KLSAgICAgICAgQWRkIGhlbHBlciBmdW5jdGlvbiB0byBEdW1wUmVuZGVy
VHJlZVN1cHBvcnRFZmwgdG8gZGVsaXZlciBhIFdlYgotICAgICAgICBJbnRlbnQuCi0KLSAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwOgotICAgICAg
ICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpkZWxpdmVyV2ViSW50ZW50KToKLSAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuaDoKLSAgICAgICAgKiBl
d2svZXdrX2ZyYW1lLmNwcDoKLSAgICAgICAgKGV3a19mcmFtZV9pbnRlbnRfZGVsaXZlcik6Ci0g
ICAgICAgICogZXdrL2V3a19mcmFtZS5oOgotCi0yMDEyLTA2LTAxICBTaGVyaWZmIEJvdCAgPHdl
YmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KLQotICAgICAgICBVbnJldmlld2VkLCByb2xsaW5n
IG91dCByMTE5MjI4LgotICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8x
MTkyMjgKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg4
MDk4Ci0KLSAgICAgICAgQ2F1c2VkIHRoZSBFRkwgZGVidWcgYm90IHRvIGNyYXNoLiAoUmVxdWVz
dGVkIGJ5IHJha3VjbyBvbgotICAgICAgICAjd2Via2l0KS4KLQotICAgICAgICAqIGV3ay9ld2tf
bWFpbi5jcHA6Ci0gICAgICAgIChld2tfaW5pdCk6Ci0KLTIwMTItMDYtMDEgIENocmlzdG9waGUg
RHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KLQotICAgICAgICBbRUZMXSBbRFJU
XSBlZGl0aW5nL2V4ZWNDb21tYW5kL3Bhc3RlLWFuZC1tYXRjaC1zdHlsZS1ldmVudC5odG1sIGNy
YXNoZXMKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg2
OTYxCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQ3NhYmEgT3N6dHJvZ29uw6FjLgotCi0gICAgICAg
IENhbGwgZWNvcmVfeF9pbml0KCkgaW4gZXdrX2luaXQoKSB0byBpbml0aWFsaXplIHRoZSBlY29y
ZV94IGxpYnJhcnkuCi0gICAgICAgIFRoaXMgYXZvaWRzIGNyYXNoaW5nIHVwb25nIGNhbGxpbmcg
V2ViQ29yZTo6c3lzdGVtQmVlcCgpIHdoaWNoIHVzZXMKLSAgICAgICAgZWNvcmVfeF9iZWxsKCkg
aW50ZXJuYWxseS4KLQotICAgICAgICAqIGV3ay9ld2tfbWFpbi5jcHA6Ci0gICAgICAgIChld2tf
aW5pdCk6Ci0KLTIwMTItMDYtMDEgIE1pa2hhaWwgUG96ZG55YWtvdiAgPG1pa2hhaWwucG96ZG55
YWtvdkBpbnRlbC5jb20+Ci0KLSAgICAgICAgW0VGTF0gTmV3IHNpZ25hbHMgaW4gZXdrX3ZpZXcg
dG8gZW5hYmxlIGdsb2JhbCBoaXN0b3J5IGRlbGVnYXRlIGZ1bmN0aW9uYWxpdHkKLSAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg2MzQzCi0KLSAgICAgICAg
UmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCi0KLSAgICAgICAgR2xvYmFs
IGhpc3RvcnkgZGVsZWdhdGUgaXMgYW4gaW50ZXJmYWNlIGZvciBXZWJLaXQgY2xpZW50cyB0byBt
YW5hZ2UgdGhlaXIgb3duIGdsb2JhbCBoaXN0b3J5IHN0b3JlLgotICAgICAgICBUaGUgbmV3IGV3
a192aWV3IHNpZ25hbHMgZG8gdGhlIGZvbGxvd2luZzoKLSAgICAgICAgMSkgcmVwb3J0IHRoYXQg
YSBuYXZpZ2F0aW9uIGhhcHBlbmVkIHdpdGhpbiB0aGUgdmlldyBhbmQgZ2l2ZSB0aGUgbmF2aWdh
dGlvbiBkZXRhaWxzLgotICAgICAgICAyKSByZXBvcnQgdGhhdCB2aWV3IHBlcmZvcm1lZCBhIGNs
aWVudCByZWRpcmVjdCBhbmQgZ2l2ZSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIHVyaXMuCi0gICAg
ICAgIDMpIHJlcG9ydCB0aGF0IHZpZXcgcGVyZm9ybWVkIGEgc2VydmVyIHJlZGlyZWN0IGFuZCBn
aXZlIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gdXJpcy4KLQotICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyQ2xpZW50RWZsOjp1cGRhdGVHbG9iYWxIaXN0b3J5UmVkaXJlY3RMaW5rcyk6IGltcGxlbWVu
dGF0aW9uIGFkZGVkLgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OnVw
ZGF0ZUdsb2JhbEhpc3RvcnkpOiBpbXBsZW1lbnRhdGlvbiBhZGRlZC4KLSAgICAgICAgKiBld2sv
ZXdrX3ZpZXcuaDogQWRkZWQgbmV3IHNpZ25hbHMgYW5kIGRhdGEgdHlwZXMuCi0KLTIwMTItMDYt
MDEgIFN1ZGFyc2FuYSBOYWdpbmVuaSAgPHN1ZGFyc2FuYS5uYWdpbmVuaUBsaW51eC5pbnRlbC5j
b20+Ci0KLSAgICAgICAgW0VGTF0gSW1wbGVtZW50IFBsYXRmb3JtU3RyYXRlZ2llcwotICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODY5NDYKLQotICAgICAg
ICBSZXZpZXdlZCBieSBDYXJsb3MgR2FyY2lhIENhbXBvcy4gICAgICAgICAgICAgICAgIAotCi0g
ICAgICAgIEVuYWJsZSBQTEFURk9STV9TVFJBVEVHSUVTIGZvciBFRkwgcGxhdGZvcm0uCi0KLSAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNFZmwuY3BwOiBBZGRlZCwg
Y29kZSB3YXMgbW92ZWQKLSAgICAgICAgZnJvbSBwbGF0Zm9ybS9QbHVnaW5EYXRhRWZsLgotICAg
ICAgICAoUGxhdGZvcm1TdHJhdGVnaWVzRWZsOjppbml0aWFsaXplKTogSW5pdGlhbGl6ZSBwbGF0
Zm9ybSBzdHJhdGVnaWVzLgotICAgICAgICAoUGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpQbGF0Zm9y
bVN0cmF0ZWdpZXNFZmwpOgotICAgICAgICAoUGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpjcmVhdGVD
b29raWVzU3RyYXRlZ3kpOiBSZXR1cm4gdGhpcy4KLSAgICAgICAgKFBsYXRmb3JtU3RyYXRlZ2ll
c0VmbDo6Y3JlYXRlUGx1Z2luU3RyYXRlZ3kpOiBEaXR0by4KLSAgICAgICAgKFBsYXRmb3JtU3Ry
YXRlZ2llc0VmbDo6Y3JlYXRlVmlzaXRlZExpbmtTdHJhdGVneSk6IERpdHRvLgotICAgICAgICAo
UGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpjcmVhdGVQYXN0ZWJvYXJkU3RyYXRlZ3kpOiBSZXR1cm4g
MCwgc2luY2UKLSAgICAgICAgUGFzdGVib2FyZFN0cmF0ZWd5IGlzIG9ubHkgdXNlZCBieSBtYWMg
Y29kZSBmb3Igbm93LgotICAgICAgICAoUGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpub3RpZnlDb29r
aWVzQ2hhbmdlZCk6IAotICAgICAgICAoUGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpyZWZyZXNoUGx1
Z2lucyk6IFJlZnJlc2ggdGhlIHBsdWdpbgotICAgICAgICBkYXRhYmFzZS4gQ29kZSBleGVjdXRl
cyBvbmx5IHdoZW4gTkVUU0NBUEVfUExVR0lOX0FQSSBpcyBPTi4KLSAgICAgICAgKFBsYXRmb3Jt
U3RyYXRlZ2llc0VmbDo6Z2V0UGx1Z2luSW5mbyk6IEluaXRpYWxpemUgcGx1Z2lucyBhbmQKLSAg
ICAgICAgcG9wdWxhdGUgdGhlIGdpdmVuIHZlY3RvciB3aXRoIHBsdWdpbnMgaW5mb3JtYXRpb24u
IENvZGUgZXhlY3V0ZXMKLSAgICAgICAgb25seSB3aGVuIE5FVFNDQVBFX1BMVUdJTl9BUEkgaXMg
T04uCi0gICAgICAgIChQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6OmlzTGlua1Zpc2l0ZWQpOiBSZXR1
cm4gd2hldGhlciB0aGUgZ2l2ZW4KLSAgICAgICAgaGFzaCBpcyBhIHZpc2l0ZWQgbGluayBvZiB0
aGUgcGFnZSBncm91cC4KLSAgICAgICAgKFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6YWRkVmlzaXRl
ZExpbmspOiBBZGQgdGhlIGdpdmVuIGhhc2ggdG8gdGhlCi0gICAgICAgIHBhZ2UgZ3JvdXAgdmlz
aXRlZCBsaW5rcy4KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNF
ZmwuaDogQWRkZWQuCi0gICAgICAgIChQbGF0Zm9ybVN0cmF0ZWdpZXNFZmwpOgotICAgICAgICAq
IGV3ay9ld2tfbWFpbi5jcHA6IEluaXRpYWxpemUgUGxhdGZvcm1TdHJhdGVnaWVzRWZsLgotICAg
ICAgICAoX2V3a19pbml0X2JvZHkpOgotCi0yMDEyLTA1LTMxICBBbGV4YW5kZXIgU2hhbGFtb3Yg
IDxhbGV4YW5kZXIuc2hhbGFtb3ZAaW50ZWwuY29tPgotCi0gICAgICAgIFtFRkxdIDxpbnB1dCB0
eXBlPSJudW1iZXIiPiBpcyBub3QgYSBzcGluYnV0dG9uCi0gICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04Njg0NgotCi0gICAgICAgIFJldmlld2VkIGJ5IEtl
bm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgotCi0gICAgICAgIEltcGxlbWVudGVkIHNwaW5uZXIg
d2lkZ2V0LgotCi0gICAgICAgICogRGVmYXVsdFRoZW1lL2RlZmF1bHQuZWRjOgotICAgICAgICAq
IERlZmF1bHRUaGVtZS93aWRnZXQvc3Bpbm5lci9zcF9iZy5wbmc6IEFkZGVkLgotICAgICAgICAq
IERlZmF1bHRUaGVtZS93aWRnZXQvc3Bpbm5lci9zcF9kb3duX2RlZmF1bHQucG5nOiBBZGRlZC4K
LSAgICAgICAgKiBEZWZhdWx0VGhlbWUvd2lkZ2V0L3NwaW5uZXIvc3BfZG93bl9ob3Zlci5wbmc6
IEFkZGVkLgotICAgICAgICAqIERlZmF1bHRUaGVtZS93aWRnZXQvc3Bpbm5lci9zcF9kb3duX3By
ZXNzZWQucG5nOiBBZGRlZC4KLSAgICAgICAgKiBEZWZhdWx0VGhlbWUvd2lkZ2V0L3NwaW5uZXIv
c3BfdXBfZGVmYXVsdC5wbmc6IEFkZGVkLgotICAgICAgICAqIERlZmF1bHRUaGVtZS93aWRnZXQv
c3Bpbm5lci9zcF91cF9ob3Zlci5wbmc6IEFkZGVkLgotICAgICAgICAqIERlZmF1bHRUaGVtZS93
aWRnZXQvc3Bpbm5lci9zcF91cF9wcmVzc2VkLnBuZzogQWRkZWQuCi0gICAgICAgICogRGVmYXVs
dFRoZW1lL3dpZGdldC9zcGlubmVyL3NwaW5uZXIuZWRjOiBBZGRlZC4KLQotMjAxMi0wNS0zMSAg
SGFqaW1lIE1vcnJpdGEgIDxtb3JyaXRhQGNocm9taXVtLm9yZz4KLQotICAgICAgICBSRUdSRVNT
SU9OKHIxMTc1NzIpOiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsY2hlY2stYXN5bmMtcmVtb3ZlLWZy
YW1lLmh0bWwgY3Jhc2hlcyBvbiBNYWMKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTg2ODU5Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgUnlvc3VrZSBOaXdh
LgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmg6Ci0gICAgICAg
IChXZWJDb3JlOjpFZGl0b3JDbGllbnRFZmw6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKToKLQot
MjAxMi0wNS0zMSAgSnVzc2kgS3Vra29uZW4gIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+Ci0K
LSAgICAgICAgW0VGTF1bRFJUXSBMYXlvdXRUZXN0Q29udHJvbGxlciBkb2VzIG5vdCBpbXBsZW1l
bnQgY2xlYXJBcHBsaWNhdGlvbkNhY2hlRm9yT3JpZ2luCi0gICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NjE5NQotCi0gICAgICAgIFJldmlld2VkIGJ5IEd1
c3Rhdm8gTm9yb25oYSBTaWx2YS4KLQotICAgICAgICBhZGQgbmV3IGZ1bmN0aW9uIHRvIGNsZWFy
IHNlY3VyaXR5IG9yaWdpbiBhcHBsaWNhdGlvbiBjYWNoZSwKLSAgICAgICAgYW5kIGEgZnVuY3Rp
b24gdG8gY3JlYXRlIGEgc2VjdXJpdHkgb3JpZ2luIGZyb20gdXJsIHN0cmluZy4KLSAgICAgICAg
UmVpbmRlbnQgdGhlIGhlYWRlciB0byBtYXRjaCBuZXcgbG9uZ2VyIHJldHVybiBzaWduYXR1cmUu
Ci0KLSAgICAgICAgKiBld2svZXdrX3NlY3VyaXR5X29yaWdpbi5jcHA6Ci0gICAgICAgIChld2tf
c2VjdXJpdHlfb3JpZ2luX2FwcGxpY2F0aW9uX2NhY2hlX2NsZWFyKToKLSAgICAgICAgKGV3a19z
ZWN1cml0eV9vcmlnaW5fbmV3X2Zyb21fc3RyaW5nKToKLSAgICAgICAgKiBld2svZXdrX3NlY3Vy
aXR5X29yaWdpbi5oOgotCi0yMDEyLTA1LTMwICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3Bo
ZS5kdW1lekBpbnRlbC5jb20+Ci0KLSAgICAgICAgW0VGTF0gRUZMJ3MgRFJUIHNob3VsZCBwcmlu
dCB0aGUgbnVtYmVyIG9mIE1lc3NhZ2VQb3J0cyBmb3IgbmV3IGVhY2ggbmV3IGludGVudAotICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODY4NDEKLQotICAg
ICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgotCi0gICAgICAgIEFkZCBFV0tQcml2YXRlIG1l
dGhvZCB0byByZXRyaWV2ZSB0aGUgaW50ZXJuYWwgV2ViQ29yZSBvYmplY3QgZm9yIGEgRXdrX0lu
dGVudC4KLSAgICAgICAgQWRkIGhlbHBlciBmdW5jdGlvbiB0byBEdW1wUmVuZGVyVHJlZVN1cHBv
cnRFZmwgdGhhdCByZXR1cm5zIHRoZSBNZXNzYWdlUG9ydHMgCi0gICAgICAgIGZvciBhIEV3a19J
bnRlbnQgb2JqZWN0IHNvIHRoYXQgdGhlIERSVCBjYW4gcHJpbnQgaW5mb3JtYXRpb24gYWJvdXQg
dGhlbS4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVm
bC5jcHA6Ci0gICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OmludGVudE1lc3NhZ2VQ
b3J0cyk6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZs
Lmg6Ci0gICAgICAgIChXZWJDb3JlKToKLSAgICAgICAgKiBld2svZXdrX2ludGVudC5jcHA6Ci0g
ICAgICAgIChFV0tQcml2YXRlKToKLSAgICAgICAgKEVXS1ByaXZhdGU6OmNvcmVJbnRlbnQpOgot
ICAgICAgICAqIGV3ay9ld2tfaW50ZW50X3ByaXZhdGUuaDoKLSAgICAgICAgKEVXS1ByaXZhdGUp
OgotCi0yMDEyLTA1LTMwICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRl
bC5jb20+Ci0KLSAgICAgICAgW0VGTF0gRXdrX0ludGVudF9SZXF1ZXN0J3MgcG9zdFJlc3VsdC9w
b3N0RmFpbHVyZSBzaG91bGQgdGFrZSBzZXJpYWxpemVkIHNjcmlwdCB2YWx1ZXMgaW4gYXJndW1l
bnQKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg3ODI5
Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KLQotICAgICAgICBFd2tfSW50ZW50
X1JlcXVlc3QncyBwb3N0UmVzdWx0L3Bvc3RGYWlsdXJlIG1ldGhvZHMgbm93IHRha2UKLSAgICAg
ICAgU2VyaWFsaXplZFNjcmlwdFZhbHVlcyBpbiBhcmd1bWVudCBpbnN0ZWFkIG9mIHN0cmluZ3Mu
IFRoZSBjbGllbnQgY2FuCi0gICAgICAgIG5vdyBwb3N0IHJlc3VsdHMgb2YgYW55IHR5cGUsIG5v
dCBqdXN0IHN0cmluZ3MsIHdoaWNoIGlzIGFjY29yZGluZyB0bwotICAgICAgICBzcGVjLiBUaG9z
ZSBtZXRob2RzIGFyZSBub3cgbW92ZWQgdG8gcHJpdmF0ZSBoZWFkZXIgYW5kIGEgaGVscGVyCi0g
ICAgICAgIGZ1bmN0aW9uIHdhcyBhZGRlZCB0byBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwgc28g
dGhhdCB0aGUgRFJUIGNhbgotICAgICAgICBzdGlsbCBzZW5kIGludGVudCByZXN1bHRzLgotCi0g
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcDoKLSAg
ICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6c2VuZFdlYkludGVudFJlc3BvbnNlKToK
LSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuaDoKLSAg
ICAgICAgKiBld2svZXdrX2ludGVudF9wcml2YXRlLmg6Ci0gICAgICAgIChXZWJDb3JlKToKLSAg
ICAgICAgKiBld2svZXdrX2ludGVudF9yZXF1ZXN0LmNwcDoKLSAgICAgICAgKGV3a19pbnRlbnRf
cmVxdWVzdF9yZXN1bHRfcG9zdCk6Ci0gICAgICAgIChld2tfaW50ZW50X3JlcXVlc3RfZmFpbHVy
ZV9wb3N0KToKLSAgICAgICAgKiBld2svZXdrX2ludGVudF9yZXF1ZXN0Lmg6Ci0KLTIwMTItMDUt
MjkgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KLQotICAg
ICAgICBbRUZMXSBDb21waWxhdGlvbiB3YXJuaW5nIGluIER1bXBSZW5kZXJUcmVlVmlldy5jcHAK
LSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg3NjM2Ci0K
LSAgICAgICAgUmV2aWV3ZWQgYnkgRmlsaXAgUGl6bG8uCi0KLSAgICAgICAgRml4IHJldHVybiB0
eXBlIG9mIGV4Y2VlZGVkX2FwcGxpY2F0aW9uX2NhY2hlX3F1b3RhIGNhbGxiYWNrLCBpdAotICAg
ICAgICBzaG91bGQgYmUgaW50NjRfdCwgbm90IHVpbnQ2NF90LgotCi0gICAgICAgICogZXdrL2V3
a192aWV3Lmg6Ci0KLTIwMTItMDUtMjUgIEplc3VzIFNhbmNoZXotUGFsZW5jaWEgIDxqZXN1cy5w
YWxlbmNpYUBvcGVuYm9zc2Eub3JnPgotCi0gICAgICAgIFdlYktpdFRlc3RSdW5uZXIgbmVlZHMg
dG8gc3VwcG9ydCBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRKYXZhU2NyaXB0UHJvZmlsaW5nRW5h
YmxlZAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDIz
MjgKLQotICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KLQotICAgICAgICBSZW1vdmVk
IHVubmVlZGVkIHNldEphdmFTY3JpcHRQcm9maWxpbmdFbmFibGVkIGZ1bmN0aW9uIGZyb20gRFJU
IGFmdGVyIGl0cwotICAgICAgICBtb3ZlIHRvIHdpbmRvd3MuaW50ZXJuYWxzLnNldHRpbmdzLgot
Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcDoK
LSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuaDoKLQot
MjAxMi0wNS0yNSAgTWlraGFpbCBQb3pkbnlha292ICA8bWlraGFpbC5wb3pkbnlha292QGludGVs
LmNvbT4KLQotICAgICAgICBbRUZMXSBBUEkgZm9yIFBhZ2VHcm91cCB2aXNpdGVkIGxpbmtzIGhh
c2ggcG9wdWxhdGluZwotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9ODYzNzAKLQotICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlh
bnNlbi4KLQotICAgICAgICBBZGRlZCAicG9wdWxhdGUsdmlzaXRlZCxsaW5rcyIgZXdrX3ZpZXcg
c2lnbmFsIHRoYXQgdGVsbHMgdG8gdGhlIGNsaWVudCBtYW5hZ2luZwotICAgICAgICBwZXJzaXN0
ZW50IGhpc3Rvcnkgc3RvcmFnZSB0byBmaWxsIHRoZSB2aXNpdGVkIGxpbmtzIGNhY2hlLgotICAg
ICAgICBBZGRlZCBBUEkgZm9yIHRoZSBQYWdlR3JvdXAgdmlzaXRlZCBsaW5rcyBoYXNoIHBvcHVs
YXRpbmcuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwOgot
ICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZsOjpwb3B1bGF0ZVZpc2l0ZWRMaW5rcyk6
IEltcGxlbWVudGF0aW9uIGFkZGVkIChzZW5kcyBub3RpZmljYXRpb24pLgotICAgICAgICAoV2Vi
Q29yZSk6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmg6Ci0gICAg
ICAgIChDaHJvbWVDbGllbnRFZmwpOgotICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAg
ICAgIChfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKToKLSAgICAgICAgKGV3a192aWV3X3Zpc2l0ZWRf
bGlua19hZGQpOiBQYWdlR3JvdXAgdmlzaXRlZCBsaW5rcyBoYXNoIHBvcHVsYXRpbmcuCi0gICAg
ICAgICogZXdrL2V3a192aWV3Lmg6Ci0KLTIwMTItMDUtMjQgIE1pa2hhaWwgUG96ZG55YWtvdiAg
PG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+Ci0KLSAgICAgICAgW0VGTF1bRFJUXSBMYXlv
dXRUZXN0Q29udHJvbGxlcidzIHNldENhY2hlTW9kZWwoKSBpbXBsZW1lbnRhdGlvbgotICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODY4NDAKLQotICAgICAg
ICBSZXZpZXdlZCBieSBDc2FiYSBPc3p0cm9nb27DoWMuCi0KLSAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwOgotICAgICAgICAoRHVtcFJlbmRlclRy
ZWVTdXBwb3J0RWZsOjpzZXREZWFkRGVjb2RlZERhdGFEZWxldGlvbkludGVydmFsKTogQXV4IHdy
YXBwZXIgZnVuY3Rpb24gZm9yIERSVC4KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVu
ZGVyVHJlZVN1cHBvcnRFZmwuaDoKLQotMjAxMi0wNS0yNCAgQ2hyaXN0b3BoZSBEdW1leiAgPGNo
cmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgotCi0gICAgICAgIFtFRkxdIEVGTCdzIExheW91dFRl
c3RDb250cm9sbGVyIG5lZWRzIHRvIGltcGxlbWVudCBzZW5kV2ViSW50ZW50UmVzcG9uc2UKLSAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg2ODY3Ci0KLSAg
ICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KLQotICAgICAgICBld2tfaW50ZW50X3JlcXVl
c3RfZmFpbHVyZV9wb3N0KCkgc2hvdWxkIGNhbGwKLSAgICAgICAgV2ViQ29yZTo6SW50ZW50UmVx
dWVzdDo6cG9zdEZhaWx1cmUoKSwgbm90Ci0gICAgICAgIFdlYkNvcmU6OkludGVudFJlcXVlc3Q6
OnBvc3RSZXN1bHQoKS4KLQotICAgICAgICAqIGV3ay9ld2tfaW50ZW50X3JlcXVlc3QuY3BwOgot
ICAgICAgICAoZXdrX2ludGVudF9yZXF1ZXN0X2ZhaWx1cmVfcG9zdCk6Ci0KLTIwMTItMDUtMjQg
IENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KLQotICAgICAg
ICBbRUZMXSBUaGUgRUZMIHBvcnQgaGFzIG5vIHN1cHBvcnQgZm9yIHRpdGxlIGRpcmVjdGlvbmFs
aXR5Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NjQ2
MgotCi0gICAgICAgIFJldmlld2VkIGJ5IEd1c3Rhdm8gTm9yb25oYSBTaWx2YS4KLQotICAgICAg
ICBEZWZpbmUgYSBuZXcgRXdrX1RleHRfV2l0aF9EaXJlY3Rpb24gdHlwZSB0byBzdG9yZSB0aGUg
ZGlyZWN0aW9uIG9mCi0gICAgICAgIHRoZSB0ZXh0IGFsb25nIHdpdGggdGhlIHRleHQgaXRzZWxm
LiBUaGlzIGlzIG5lZWRlZCB0byBzdXBwb3J0IHRleHQKLSAgICAgICAgZGlyZWN0aW9uYWxpdHkg
aW4gRUZMIHBvcnQuCi0KLSAgICAgICAgVXNlIHRoZSBuZXcgRXdrX1RleHRfV2l0aF9EaXJlY3Rp
b24gdHlwZSBmb3IgdGhlIGZyYW1lIHRpdGxlLiBVcGRhdGVkCi0gICAgICAgICJ0aXRsZSxjaGFu
Z2VkIiBzaWduYWwsIHRpdGxlIGdldHRlci9zZXR0ZXIgYW5kIEV3a19IaXRfVGVzdCBzdHJ1Y3Qu
Ci0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHA6Ci0g
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRSZWNlaXZl
VGl0bGUpOgotICAgICAgICAqIGV3ay9ld2tfZnJhbWUuY3BwOgotICAgICAgICAoRXdrX0ZyYW1l
X1NtYXJ0X0RhdGEpOgotICAgICAgICAoX2V3a19mcmFtZV9zbWFydF9kZWwpOgotICAgICAgICAo
ZXdrX2ZyYW1lX3RpdGxlX2dldCk6Ci0gICAgICAgIChld2tfZnJhbWVfaGl0X3Rlc3RfZnJlZSk6
Ci0gICAgICAgIChld2tfZnJhbWVfaGl0X3Rlc3RfbmV3KToKLSAgICAgICAgKGV3a19mcmFtZV90
aXRsZV9zZXQpOgotICAgICAgICAqIGV3ay9ld2tfZnJhbWUuaDoKLSAgICAgICAgKiBld2svZXdr
X2ZyYW1lX3ByaXZhdGUuaDoKLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAo
X0V3a19WaWV3X1ByaXZhdGVfRGF0YSk6Ci0gICAgICAgIChld2tfdmlld190aXRsZV9nZXQpOgot
ICAgICAgICAoZXdrX3ZpZXdfdGl0bGVfc2V0KToKLSAgICAgICAgKiBld2svZXdrX3ZpZXcuaDoK
LSAgICAgICAgKiBld2svZXdrX3ZpZXdfcHJpdmF0ZS5oOgotCi0yMDEyLTA1LTIzICBDaHJpc3Rv
cGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+Ci0KLSAgICAgICAgW0VGTF0g
RUZMJ3MgRFJUIGRvZXMgbm90IHByaW50IGRpZEZhaWxQcm92aXNpb25hbExvYWRXaXRoRXJyb3Ig
bWVzc2FnZXMKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTg1OTU2Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgR3VzdGF2byBOb3JvbmhhIFNpbHZhLgotCi0g
ICAgICAgIEFkZCBuZXcgImxvYWQscHJvdmlzaW9uYWwsZmFpbGVkIiBzaWduYWwgb24gdGhlIGZy
YW1lIGFuZCB0aGUgdmlldyB0bwotICAgICAgICBjb21wbGVtZW50IHRoZSAibG9hZCxwcm92aXNp
b25hbCIgb25lLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRF
ZmwuY3BwOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNo
RGlkRmFpbFByb3Zpc2lvbmFsTG9hZCk6Ci0gICAgICAgICogZXdrL2V3a19mcmFtZS5jcHA6Ci0g
ICAgICAgIChld2tfZnJhbWVfbG9hZF9wcm92aXNpb25hbF9mYWlsZWQpOgotICAgICAgICAqIGV3
ay9ld2tfZnJhbWUuaDoKLSAgICAgICAgKiBld2svZXdrX2ZyYW1lX3ByaXZhdGUuaDoKLSAgICAg
ICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoZXdrX3ZpZXdfbG9hZF9wcm92aXNpb25h
bF9mYWlsZWQpOgotICAgICAgICAqIGV3ay9ld2tfdmlldy5oOgotICAgICAgICAqIGV3ay9ld2tf
dmlld19wcml2YXRlLmg6Ci0KLTIwMTItMDUtMjMgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3Rv
cGhlLmR1bWV6QGludGVsLmNvbT4KLQotICAgICAgICBbRUZMXSBFRkwncyBEUlQgbmVlZHMgdG8g
Y2FsbCBTZXR0aW5nczo6c2V0VmFsaWRhdGlvbk1lc3NhZ2VUaW1lck1hZ25pZmljYXRpb24oLTEp
Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NjM2Ngot
Ci0gICAgICAgIFJldmlld2VkIGJ5IEFudG9uaW8gR29tZXMuCi0KLSAgICAgICAgQWRkIGhlbHBl
ciBmdW5jdGlvbiB0byBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwgdG8gc2V0IHRoZSB2YWxpZGF0
aW9uCi0gICAgICAgIG1lc3NhZ2UgdGltZXIgbWFnbmlmaWNhdGlvbi4KLQotICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHA6Ci0gICAgICAgIChEdW1w
UmVuZGVyVHJlZVN1cHBvcnRFZmw6OnNldFZhbGlkYXRpb25NZXNzYWdlVGltZXJNYWduaWZpY2F0
aW9uKToKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwu
aDoKLQotMjAxMi0wNS0yMiAgRG9uZ3dvbyBJbSAgPGR3LmltQHNhbXN1bmcuY29tPgotCi0gICAg
ICAgIFtFRkxdIEltcGxlbWVudHMgdGhlIHJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyIG1ldGhvZCBh
bmQgb3B0aW9uLgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NzM2MzgKLQotICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgotCi0gICAgICAg
IFRoZSByZWdpc3RlclByb3RvY29sSGFuZGxlcigpIG1ldGhvZCBhbGxvd3MgV2ViIHNpdGVzIHRv
IHJlZ2lzdGVyIHRoZW1zZWx2ZXMKLSAgICAgICAgYXMgcG9zc2libGUgaGFuZGxlcnMgZm9yIHBh
cnRpY3VsYXIgc2NoZW1lcy4KLQotICAgICAgICBodHRwOi8vZGV2LnczLm9yZy9odG1sNS9zcGVj
L092ZXJ2aWV3Lmh0bWwjZG9tLW5hdmlnYXRvci1yZWdpc3RlcnByb3RvY29saGFuZGxlcgotCi0g
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcDogQWRkcyBhIG5ldyBm
dW5jdGlvbi4KLSAgICAgICAgKFdlYkNvcmUpOgotICAgICAgICAoV2ViQ29yZTo6Y3VzdG9tSGFu
ZGxlcnNEYXRhQ3JlYXRlKTogQ3JlYXRlcyBhbmQgZmlsbHMgdGhlIGRhdGEgb2JqZWN0LgotICAg
ICAgICAoV2ViQ29yZTo6Y3VzdG9tSGFuZGxlcnNEYXRhRGVsZXRlKTogRGVsZXRlcyB0aGUgZGF0
YSBvYmplY3QuCi0gICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRFZmw6OnJlZ2lzdGVyUHJv
dG9jb2xIYW5kbGVyKTogUmVnaXN0ZXJzIGEgcHJvdG9jb2wgYW5kIHRoZSBoYW5kbGVyIG9mIGl0
LgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oOiBBZGRzIGEgcHJv
dG90eXBlLgotICAgICAgICAoQ2hyb21lQ2xpZW50RWZsKToKLSAgICAgICAgKiBld2svZXdrX2N1
c3RvbV9oYW5kbGVycy5jcHA6IEFkZGVkLgotICAgICAgICAoZXdrX2N1c3RvbV9oYW5kbGVyc19y
ZWdpc3Rlcl9wcm90b2NvbF9oYW5kbGVyKToKLSAgICAgICAgKiBld2svZXdrX3ZpZXcuaDogQWRk
cyBEYXRhIHN0cnVjdHVyZS4KLSAgICAgICAgKiBld2svZXdrX3ZpZXdfcHJpdmF0ZS5oOiBBZGRz
IHByaXZhdGUgZnVuY3Rpb24uCi0KLTIwMTItMDUtMjIgIEthbmdpbCBIYW4gIDxrYW5naWwuaGFu
QHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxdW0RSVF0gSW1wbGVtZW50IHRvdWNoIGV2ZW50
Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NjcyMAot
Ci0gICAgICAgIFJldmlld2VkIGJ5IEhhamltZSBNb3JpdGEuCi0KLSAgICAgICAgQ3VycmVudGx5
IEVGTCBEUlQgZG9lc24ndCBzdXBwb3J0IHRvdWNoIGV2ZW50LgotICAgICAgICBUaGVyZWZvcmUs
IHRoaXMgcGF0Y2ggZW5hYmxlZCBpdCBhbmQgaW1wbGVtZW50ZWQgc29tZSBldmVudFNlbmRlciBm
dW5jdGlvbiBjYWxsYmFja3MuCi0KLSAgICAgICAgKiBld2Via2l0LnBjLmluOgotICAgICAgICAq
IGV3ay9ld2tfZnJhbWUuY3BwOgotICAgICAgICAoZXdrX2ZyYW1lX2ZlZWRfdG91Y2hfZXZlbnQp
OgotICAgICAgICAqIGV3ay9ld2tfZnJhbWUuaDoKLQotMjAxMi0wNS0yMiAgQ2hyaXN0b3BoZSBE
dW1leiAgPGNocmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgotCi0gICAgICAgIFtFRkxdIEVGTCdz
IERSVCBuZWVkcyB0byBwcmludCBpbmZvcm1hdGlvbiBhYm91dCByZWNlaXZlZCBXZWIgSW50ZW50
cwotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODY4NjQK
LQotICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgotCi0gICAgICAgICogZXdrL2V3a19p
bnRlbnQuY3BwOgotICAgICAgICAoZXdrX2ludGVudF9zdWdnZXN0aW9uc19nZXQpOiBBZGQgZnVu
Y3Rpb24gdG8gcmV0cmlldmUgc3VnZ2VzdGVkCi0gICAgICAgIHNlcnZpY2UgVVJMcyBmb3IgYW4g
aW50ZW50LgotICAgICAgICAoZXdrX2ludGVudF9leHRyYV9uYW1lc19nZXQpOiBBZGQgZnVuY3Rp
b24gdG8gcmV0cmlldmUgbmFtZXMgb2YKLSAgICAgICAgZXh0cmEgbWV0YWRhdGEgZm9yIGFuIGlu
dGVudC4KLSAgICAgICAgKGV3a19pbnRlbnRfbmV3KTogQ29ycmVjdGx5IGluaXRpYWxpemUgRXdr
X0ludGVudCBtZW1iZXJzIHRvIGF2b2lkCi0gICAgICAgIGNyYXNoZXMuCi0gICAgICAgIChld2tf
aW50ZW50X2ZyZWUpOiBVbnJlZiBzaGFyZWQgc3RyaW5ncy4KLSAgICAgICAgKiBld2svZXdrX2lu
dGVudC5oOgotCi0yMDEyLTA1LTIyICBTdWRhcnNhbmEgTmFnaW5lbmkgIDxzdWRhcnNhbmEubmFn
aW5lbmlAbGludXguaW50ZWwuY29tPgotCi0gICAgICAgIFtFRkxdIEFkZCBzdXBwb3J0IHRvIGVu
YWJsZS9kaXNhYmxlIERPTSBwYXN0ZSAKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTg1MDQwCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgR3VzdGF2byBOb3Jv
bmhhIFNpbHZhLgotCi0gICAgICAgIEFkZCBzdXBwb3J0IHRvIGVuYWJsZS9kaXNhYmxlIERPTSBw
YXN0ZSBzZXR0aW5nIHNvIHRoYXQgZG9jdW1lbnQuZXhlY0NvbW1hbmQoKQotICAgICAgICBhbGxv
d3MgcGFzdGUgY29tbWFuZCB3aGVuIHRoaXMgc2V0dGluZyBpcyBlbmFibGVkLiBBbHNvLCB1cGRh
dGUgZG9jdW1lbnRhdGlvbgotICAgICAgICBmb3Igc2NyaXB0c19jYW5fYWNjZXNzX2NsaXBib2Fy
ZCBzZXR0aW5nIGluIGV3a192aWV3LgotCi0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAg
ICAgICAgKF9ld2tfdmlld19wcml2X25ldyk6Ci0gICAgICAgIChld2tfdmlld19zZXR0aW5nX3Nj
cmlwdHNfY2FuX2FjY2Vzc19jbGlwYm9hcmRfc2V0KToKLSAgICAgICAgKiBld2svZXdrX3ZpZXcu
aDoKLQotMjAxMi0wNS0yMSAgTWlraGFpbCBQb3pkbnlha292ICA8bWlraGFpbC5wb3pkbnlha292
QGludGVsLmNvbT4KLQotICAgICAgICBbRUZMXSBDbGllbnRzIHNob3VsZCBiZSBhYmxlIHRvIHNl
dCBwYWdlIGNhY2hlIGNhcGFjaXR5LgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9ODY5NjAKLQotICAgICAgICBSZXZpZXdlZCBieSBDc2FiYSBPc3p0cm9n
b27DoWMuCi0KLSAgICAgICAgRXhwb3J0ZWQgbWVtb3J5IHBhZ2UgY2FjaGUgY2FwYWNpdHkgZ2V0
dGVyIGFuZCBzZXR0ZXIgZnVuY3Rpb25zLgotICAgICAgICBUaG9zZSB3aWxsIGJlIHVzZWQgYm90
aCBieSBjbGllbnRzIGFuZCBEUlQgTGF5b3V0IFRlc3QgQ29udHJvbGxlci4KLQotICAgICAgICAq
IGV3ay9ld2tfc2V0dGluZ3MuY3BwOgotICAgICAgICAoZXdrX3NldHRpbmdzX3BhZ2VfY2FjaGVf
Y2FwYWNpdHlfZ2V0KToKLSAgICAgICAgKGV3a19zZXR0aW5nc19wYWdlX2NhY2hlX2NhcGFjaXR5
X3NldCk6Ci0gICAgICAgICogZXdrL2V3a19zZXR0aW5ncy5oOgotCi0yMDEyLTA1LTIxICBDYWlv
IE1hcmNlbG8gZGUgT2xpdmVpcmEgRmlsaG8gIDxjYWlvLm9saXZlaXJhQG9wZW5ib3NzYS5vcmc+
Ci0KLSAgICAgICAgTW92ZSBzZXRFZGl0aW5nQmVoYXZpb3IoKSBmcm9tIGxheW91dFRlc3RDb250
cm9sbGVyIHRvIHdpbmRvdy5pbnRlcm5hbHMKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTQyNjg5Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgSGFqaW1lIE1v
cml0YSBhbmQgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCi0KLSAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwOgotICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5oOgotCi0yMDEyLTA1LTIxICBDaHJpc3Rv
cGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+Ci0KLSAgICAgICAgW0VGTF0g
TWlub3Igc3R5bGUgZml4ZXMgaW4gd2ViIGludGVudHMgY29kZSBhcmUgbmVlZGVkCi0gICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04Njk4NgotCi0gICAgICAg
IFJldmlld2VkIGJ5IEFkYW0gQmFydGguCi0KLSAgICAgICAgKiBld2svRVdlYktpdC5oOiBBZGQg
bmV3IGludGVudCBoZWFkZXJzLgotICAgICAgICAqIGV3ay9ld2tfZnJhbWUuaDogQWRkIG1pc3Np
bmcgdW5kZXJzY29yZXMgdG8gRXdrSW50ZW50UmVxdWVzdCB0eXBlLgotCi0yMDEyLTA1LTIwICBN
aWtoYWlsIFBvemRueWFrb3YgIDxtaWtoYWlsLnBvemRueWFrb3ZAaW50ZWwuY29tPgotCi0gICAg
ICAgIFtFRkxdIGV3a192aWV3IG5hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uKCkgaW5wdXQgcGFy
YW1ldGVycyBzaG91bGQgYmUgZXh0ZW5kZWQKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTg1MDQ4Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBH
b21lcy4KLQotICAgICAgICBJbnRyb2R1Y2VkIG5ldyBlbnVtIEV3a19OYXZpZ2F0aW9uX1R5cGUg
Y2xvbmluZyBXZWJDb3JlOjpOYXZpZ2F0aW9uVHlwZS4KLSAgICAgICAgRXh0ZW5kZWQgZXdrX3Zp
ZXcgbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24oKSBpbnB1dCBwYXJhbWV0ZXJzIHdpdGggbmV3
Ci0gICAgICAgIG5hdmlnYXRpb25UeXBlIHBhcmFtZXRlci4gVGhpcyBwYXJhbWF0ZXIgZ2l2ZXMg
bW9yZSBkYXRhIGZvciBtYWtpbmcgYQotICAgICAgICBuYXZpZ2F0aW9uIHBvbGljeSBkZWNpc2lv
biBhbmQgYWxzbyBwcm92aWRlcyBkdW1waW5nIG5lY2Vzc2FyeSBmb3IgbWFueSBMYXlvdXQKLSAg
ICAgICAgdGVzdGNhc2VzLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvQXNzZXJ0TWF0Y2hp
bmdFbnVtcy5jcHA6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRF
ZmwuY3BwOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNo
RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6Ci0gICAgICAgICogZXdrL2V3a19mcmFt
ZS5oOgotICAgICAgICAqIGV3ay9ld2tfdmlld19wcml2YXRlLmg6Ci0gICAgICAgICogZXdrL2V3
a192aWV3LmNwcDoKLSAgICAgICAgKF9Fd2tfVmlld19Qcml2YXRlX0RhdGEpOgotICAgICAgICAo
ZXdrX3ZpZXdfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24pOgotICAgICAgICAqIGV3ay9ld2tf
dmlldy5oOgotCi0yMDEyLTA1LTE4ICBSYXBoYWVsIEt1Ym8gZGEgQ29zdGEgIDxyYWt1Y29Ad2Vi
a2l0Lm9yZz4KLQotICAgICAgICBbRUZMXVtEUlRdIE1ha2UgaXQgcG9zc2libGUgdG8gZW5hYmxl
IENTUyBHcmlkIExheW91dC4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTg2OTIxCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgVG9ueSBDaGFuZy4KLQotICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHA6Ci0gICAg
ICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OnNldENTU0dyaWRMYXlvdXRFbmFibGVkKToK
LSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuaDoKLQot
MjAxMi0wNS0xOCAgQ2hyaXN0b3BoZSBEdW1leiAgPGNocmlzdG9waGUuZHVtZXpAaW50ZWwuY29t
PgotCi0gICAgICAgIFtFRkxdIFdlYiBJbnRlbnRzIGNvZGUgaXMgbm90IGNvbXBpbGluZwotICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODUzNjQKLQotICAg
ICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwOiBBZGQgbWlzc2luZyBoZWFkZXIgaW5jbHVkZS4KLSAg
ICAgICAgKiBld2svZXdrX2ludGVudF9wcml2YXRlLmg6IERpdHRvLgotICAgICAgICAqIGV3ay9l
d2tfaW50ZW50X3JlcXVlc3QuY3BwOgotICAgICAgICAoZXdrX2ludGVudF9yZXF1ZXN0X25ldyk6
IERvIG5vdCBQYXNzUmVmUHRyIGFmdGVyIGl0IGJlY29tZXMgMC4KLQotMjAxMi0wNS0xOCAgQ2hy
aXN0b3BoZSBEdW1leiAgPGNocmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgotCi0gICAgICAgIFtF
RkxdIERlZmF1bHQgdmFsdWVzIGZvciBld2tfdmlldyB2aWRlbyB0cmFja3Mgc2V0dGluZ3Mgc2hv
dWxkIGJlIGRvY3VtZW50ZWQKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTg1MTY5Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21lcy4KLQot
ICAgICAgICBEb2N1bWVudCBkZWZhdWx0IHZhbHVlcyBmb3IgdmlkZW8gdHJhY2tzIHNldHRpbmdz
IGluIGV3a192aWV3LgotCi0gICAgICAgICogZXdrL2V3a192aWV3Lmg6Ci0KLTIwMTItMDUtMTgg
IE1pa2hhaWwgUG96ZG55YWtvdiAgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+Ci0KLSAg
ICAgICAgW0VGTF0gVGV4dCBpbnB1dCBldmVudHMgYXJlIGVtaXR0ZWQgZm9yIG5vZGVzIHRoYXQg
ZG8gbm90IGFsbG93IGVkaXRpbmcuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD04NjgzNgotCi0gICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUg
Q2hyaXN0aWFuc2VuLgotCi0gICAgICAgIFRleHQgaW5wdXQgZXZlbnRzIGFyZSBub3QgYW55bW9y
ZSBlbWl0dGVkIGZvciBub2RlcyB0aGF0IGRvIG5vdCBhbGxvdyBlZGl0aW5nLgotICAgICAgICBU
aGlzIGNhbiBiZSBjaGVja2VkIHdpdGggZmFzdC9ldmVudHMva2V5LWV2ZW50cy1pbi1pbnB1dC1i
dXR0b24uaHRtbCB0ZXN0IG91dHB1dC4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRv
ckNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRFZmw6OmhhbmRs
ZUVkaXRpbmdLZXlib2FyZEV2ZW50KTogUmV0dXJucyBmYWxzZSBpZiB0aGUgbm9kZSBjYW5ub3Qg
ZWRpdC4KLQotMjAxMi0wNS0xOCAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4K
LQotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODU1MTUK
LSAgICAgICAgU3RhbGUgZnJhbWUgaW4gV2ViQ29yZTo6U3BlbGxDaGVja2VyOjpkaWRDaGVja1N1
Y2NlZWRlZAotCi0gICAgICAgIFJldmlld2VkIGJ5IFJ5b3N1a2UgTml3YS4KLQotICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5oOgotICAgICAgICAoV2ViQ29yZTo6RWRp
dG9yQ2xpZW50RWZsOjpmcmFtZVdpbGxEZXRhY2hQYWdlKToKLQotMjAxMi0wNS0xOCAgU3VkYXJz
YW5hIE5hZ2luZW5pICA8c3VkYXJzYW5hLm5hZ2luZW5pQGxpbnV4LmludGVsLmNvbT4KLQotICAg
ICAgICBbRUZMXSBEUlQgbmVlZHMgYW4gaW1wbGVtZW50YXRpb24gb2YgbGF5b3V0VGVzdENvbnRy
b2xsZXIuc2V0U2VyaWFsaXplSFRUUExvYWRzCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD04NjEwMQotCi0gICAgICAgIFJldmlld2VkIGJ5IFJ5b3N1a2Ug
Tml3YS4KLQotICAgICAgICBBZGQgbWlzc2luZyBpbXBsZW1lbnRhdGlvbiBzZXRTZXJpYWxpemVI
VFRQTG9hZHMgdG8gRUZMJ3MKLSAgICAgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0IHRvIGFsbG93
IHRlc3RpbmcgcmVzb3VyY2UgbG9hZCBvcmRlci4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHA6Ci0gICAgICAgIChEdW1wUmVuZGVyVHJlZVN1
cHBvcnRFZmw6OnNldFNlcmlhbGl6ZUhUVFBMb2Fkcyk6Ci0gICAgICAgICogV2ViQ29yZVN1cHBv
cnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmg6Ci0KLTIwMTItMDUtMTggIENocmlzdG9waGUg
RHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KLQotICAgICAgICBbRUZMXSBhcHBj
YWNoZSB0ZXN0cyBhcmUgZmxha3kKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTg2NjE5Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgUnlvc3VrZSBOaXdhLgot
Ci0gICAgICAgIE5vIGxvbmdlciBzZXQgdGhlIGFwcGxpY2F0aW9uIGNhY2hlIHBhdGggaW4gZXdr
X21haW4gc2luY2UgdGhlIAotICAgICAgICBwYXRoIGNhbiBvbmx5IGJlIHNldCBvbmNlIGFuZCB0
aGlzIHByZXZlbnRzIERSVCAob3IgYXBwcykgdG8gc2V0Ci0gICAgICAgIGl0LiBVcGRhdGUgdGhl
IGV3a19zZXR0aW5ncyBkb2N1bWVudGF0aW9uIHRvIHJlZmxlY3QgdGhlc2UgCi0gICAgICAgIGNo
YW5nZXMuCi0KLSAgICAgICAgKiBld2svZXdrX21haW4uY3BwOgotICAgICAgICAoX2V3a19pbml0
X2JvZHkpOgotICAgICAgICAqIGV3ay9ld2tfc2V0dGluZ3MuaDoKLQotMjAxMi0wNS0xOCAgQ2hy
aXN0b3BoZSBEdW1leiAgPGNocmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgotCi0gICAgICAgIFtF
RkxdIEFkZCBzaW1wbGUgaW1wbGVtZW50YXRpb24gb2YgV2ViIEludGVudHMKLSAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg2MzU0Ci0KLSAgICAgICAgUmV2
aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCi0KLSAgICAgICAgQWRkIG5ldyBFRkwgd3JhcHBlcnMgZm9y
IFdlYkNvcmUncyBJbnRlbnQgYW5kIEludGVudFJlcXVlc3QuCi0gICAgICAgIEltcGxlbWVudCBk
aXNwYXRjaEludGVudCgpIGluIEVGTCdzIEZyYW1lTG9hZGVyQ2xpZW50IGFuZCBlbWl0IGEgbmV3
Ci0gICAgICAgICJpbnRlbnQsbmV3IiBzaWduYWwgb24gdGhlIGZyYW1lIHRvIG5vdGlmeSBjbGll
bnRzIG9mIG5ldyBpbnRlbnQKLSAgICAgICAgcmVxdWVzdHMuCi0KLSAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3JlKToKLSAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaEludGVudCk6Ci0g
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuaDoKLSAgICAgICAg
KEZyYW1lTG9hZGVyQ2xpZW50RWZsKToKLSAgICAgICAgKiBld2svZXdrX2ZyYW1lLmNwcDoKLSAg
ICAgICAgKGV3a19mcmFtZV9pbnRlbnRfbmV3KToKLSAgICAgICAgKiBld2svZXdrX2ZyYW1lLmg6
Ci0gICAgICAgICogZXdrL2V3a19mcmFtZV9wcml2YXRlLmg6Ci0gICAgICAgICogZXdrL2V3a19p
bnRlbnQuY3BwOiBBZGRlZC4KLSAgICAgICAgKF9Fd2tfSW50ZW50KToKLSAgICAgICAgKGV3a19p
bnRlbnRfYWN0aW9uX2dldCk6Ci0gICAgICAgIChld2tfaW50ZW50X3R5cGVfZ2V0KToKLSAgICAg
ICAgKGV3a19pbnRlbnRfZGF0YV9nZXQpOgotICAgICAgICAoZXdrX2ludGVudF9zZXJ2aWNlX2dl
dCk6Ci0gICAgICAgIChld2tfaW50ZW50X2V4dHJhX2dldCk6Ci0gICAgICAgIChld2tfaW50ZW50
X25ldyk6Ci0gICAgICAgIChld2tfaW50ZW50X2ZyZWUpOgotICAgICAgICAqIGV3ay9ld2tfaW50
ZW50Lmg6IEFkZGVkLgotICAgICAgICAqIGV3ay9ld2tfaW50ZW50X3ByaXZhdGUuaDogQWRkZWQu
Ci0gICAgICAgIChXZWJDb3JlKToKLSAgICAgICAgKiBld2svZXdrX2ludGVudF9yZXF1ZXN0LmNw
cDogQWRkZWQuCi0gICAgICAgIChfRXdrX0ludGVudF9SZXF1ZXN0KToKLSAgICAgICAgKGV3a19p
bnRlbnRfcmVxdWVzdF9yZWYpOgotICAgICAgICAoZXdrX2ludGVudF9yZXF1ZXN0X3VucmVmKToK
LSAgICAgICAgKGV3a19pbnRlbnRfcmVxdWVzdF9pbnRlbnRfZ2V0KToKLSAgICAgICAgKGV3a19p
bnRlbnRfcmVxdWVzdF9yZXN1bHRfcG9zdCk6Ci0gICAgICAgIChld2tfaW50ZW50X3JlcXVlc3Rf
ZmFpbHVyZV9wb3N0KToKLSAgICAgICAgKGV3a19pbnRlbnRfcmVxdWVzdF9uZXcpOgotICAgICAg
ICAqIGV3ay9ld2tfaW50ZW50X3JlcXVlc3QuaDogQWRkZWQuCi0KLTIwMTItMDUtMTcgIFJhcGhh
ZWwgS3VibyBkYSBDb3N0YSAgPHJha3Vjb0B3ZWJraXQub3JnPgotCi0gICAgICAgIFtFRkxdW0RS
VF0gQ2FsbCByZXNldEludGVybmFsc09iamVjdCgpIGFmdGVyIGVhY2ggdGVzdC4KLSAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg2NzkzCi0KLSAgICAgICAg
UmV2aWV3ZWQgYnkgQW50b25pbyBHb21lcy4KLQotICAgICAgICBXZSBuZWVkIHRvIHJlc2V0IHRo
ZSBpbnRlcm5hbHMgb2JqZWN0J3Mgc2V0dGluZ3MgYWZ0ZXIgcnVubmluZwotICAgICAgICBlYWNo
IHRlc3Qgc28gdGhhdCB0aGVyZSBhcmUgbm8gaW50ZXJmZXJlbmNlcyBiZXR3ZWVuIGVhY2ggdGVz
dCdzCi0gICAgICAgIHJlc3VsdHMuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVu
ZGVyVHJlZVN1cHBvcnRFZmwuY3BwOgotICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZs
OjpnbG9iYWxDb250ZXh0UmVmRm9yRnJhbWUpOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1
bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5oOgotCi0yMDEyLTA1LTE3ICBTdWRhcnNhbmEgTmFnaW5l
bmkgIDxzdWRhcnNhbmEubmFnaW5lbmlAbGludXguaW50ZWwuY29tPgotCi0gICAgICAgIE1lbW9y
eSBsZWFrIGluIE5ldHdvcmtJbmZvQ2xpZW50Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD04NjYwMwotCi0gICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFy
dGguCi0KLSAgICAgICAgRml4IGEgbWVtb3J5IGxlYWsgaW4gTmV0d29ya0luZm9DbGllbnQgYnkg
dXNpbmcgT3duUHRyIGFuZCBtYWtpbmcKLSAgICAgICAgdGhlIGNsaWVudCB0byBiZSBvd25lZCBi
eSB0aGUgVmlldy4KLQotICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChfRXdr
X1ZpZXdfUHJpdmF0ZV9EYXRhKToKLSAgICAgICAgKF9ld2tfdmlld19wcml2X25ldyk6Ci0KLTIw
MTItMDUtMTcgIEhpcm9ub3JpIEJvbm8gIDxoYm9ub0BjaHJvbWl1bS5vcmc+Ci0KLSAgICAgICAg
W1JlZmFjdG9yaW5nXSBNb3ZlIHBsYXRmb3JtLXNwZWNpZmljIGNvZGUgaW4gRWRpdG9yOjpyZXNw
b25kVG9DaGFuZ2VkU2VsZWN0aW9uIHRvIHRoZSBXZWJLaXQgbGF5ZXIKLSAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg2NTkxCi0KLSAgICAgICAgUmV2aWV3
ZWQgYnkgUnlvc3VrZSBOaXdhLgotCi0gICAgICAgIFRoaXMgY2hhbmdlIGFkZHMgYSBUZXh0Q2hl
Y2tlckNsaWVudDo6c2hvdWxkRXJhc2VNYXJrZXJzQWZ0ZXJDaGFuZ2VTZWxlY3Rpb24KLSAgICAg
ICAgZnVuY3Rpb24gdG8gcmVtb3ZlIHBsYXRmb3JtLXNwZWNpZmljIGNvZGUgZnJvbSBFZGl0b3I6
OnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24KLSAgICAgICAgZnVuY3Rpb24uCi0KLSAgICAgICAg
Tm8gbmV3IHRlc3RzLCBubyBjaGFuZ2UgaW4gYmVoYXZpb3IuCi0KLSAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xp
ZW50RWZsOjpzaG91bGRFcmFzZU1hcmtlcnNBZnRlckNoYW5nZVNlbGVjdGlvbik6Ci0gICAgICAg
IChXZWJDb3JlKToKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuaDoK
LSAgICAgICAgKEVkaXRvckNsaWVudEVmbCk6Ci0KLTIwMTItMDUtMTcgIFRoaWFnbyBNYXJjb3Mg
UC4gU2FudG9zICA8dGhpYWdvLnNhbnRvc0BpbnRlbC5jb20+Ci0KLSAgICAgICAgW0VGTF0gQWRk
IEFQSSBmb3IgV2ViIERhdGFiYXNlIGhhbmRsaW5nCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NTE3OAotCi0gICAgICAgIFJldmlld2VkIGJ5IEFudG9u
aW8gR29tZXMuCi0KLSAgICAgICAgQWRkIEFQSSBmb3IgV2ViIERhdGFiYXNlLiBUaGlzIEFQSSB3
aWxsIGFsbG93IGEgYnJvd3NlcgotICAgICAgICB0byBxdWVyeSBpbmZvcm1hdGlvbiBhYm91dCBz
aXplLCBuYW1lLCBmaWxlbmFtZSBhbmQgcmVtb3ZlCi0gICAgICAgIGRhdGFiYXNlcyBiYXNlZCBv
biB0aGUgb3JpZ2luLiBJdCB3aWxsIGJlIGFsc28gcG9zc2libGUgdG8KLSAgICAgICAgbGlzdCBh
bGwgZGF0YWJhc2VzIGZvciBhIGdpdmVuIG9yaWdpbi4KLQotICAgICAgICAqIGV3ay9FV2ViS2l0
Lmg6Ci0gICAgICAgICogZXdrL2V3a19zZWN1cml0eV9vcmlnaW4uY3BwOgotICAgICAgICAoZXdr
X3NlY3VyaXR5X29yaWdpbl93ZWJfZGF0YWJhc2VfZ2V0X2FsbCk6Ci0gICAgICAgICogZXdrL2V3
a19zZWN1cml0eV9vcmlnaW4uaDoKLSAgICAgICAgKiBld2svZXdrX3NldHRpbmdzLmNwcDoKLSAg
ICAgICAgKiBld2svZXdrX3NldHRpbmdzLmg6Ci0gICAgICAgICogZXdrL2V3a193ZWJfZGF0YWJh
c2UuY3BwOiBBZGRlZC4KLSAgICAgICAgKF9Fd2tfV2ViX0RhdGFiYXNlKToKLSAgICAgICAgKGV3
a193ZWJfZGF0YWJhc2VfZGlzcGxheV9uYW1lX2dldCk6Ci0gICAgICAgIChld2tfd2ViX2RhdGFi
YXNlX2V4cGVjdGVkX3NpemVfZ2V0KToKLSAgICAgICAgKGV3a193ZWJfZGF0YWJhc2VfZmlsZW5h
bWVfZ2V0KToKLSAgICAgICAgKGV3a193ZWJfZGF0YWJhc2VfbmFtZV9nZXQpOgotICAgICAgICAo
ZXdrX3dlYl9kYXRhYmFzZV9zZWN1cml0eV9vcmlnaW5fZ2V0KToKLSAgICAgICAgKGV3a193ZWJf
ZGF0YWJhc2Vfc2l6ZV9nZXQpOgotICAgICAgICAoZXdrX3dlYl9kYXRhYmFzZV9yZW1vdmUpOgot
ICAgICAgICAoZXdrX3dlYl9kYXRhYmFzZV9yZW1vdmVfYWxsKToKLSAgICAgICAgKGV3a193ZWJf
ZGF0YWJhc2VfZnJlZSk6Ci0gICAgICAgIChld2tfd2ViX2RhdGFiYXNlX2xpc3RfZnJlZSk6Ci0g
ICAgICAgIChld2tfd2ViX2RhdGFiYXNlX25ldyk6Ci0gICAgICAgICogZXdrL2V3a193ZWJfZGF0
YWJhc2UuaDogQWRkZWQuCi0gICAgICAgICogZXdrL2V3a193ZWJfZGF0YWJhc2VfcHJpdmF0ZS5o
OiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2VmbC9ld2svRVdlYktpdC5oLgotICAgICAgICAo
V2ViQ29yZSk6Ci0KLTIwMTItMDUtMTcgIE1hcml1c3ogR3J6ZWdvcmN6eWsgIDxtYXJpdXN6LmdA
c2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW0VGTF0gW0RSVF0gRUZMJ3MgRHVtcFJlbmRlclRyZWUg
c2hvdWxkIHN1cHBvcnQgTGF5b3V0VGVzdENvbnRyb2xsZXIncyBkdW1wRWRpdGluZ0NhbGxiYWNr
cygpCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NDgz
NQotCi0gICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgotCi0gICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmNwcDogQ2FsbCBhcHByb3ByaWF0ZSBjYWxsYmFja3Mg
Zm9yIGVkaXRpbmcgYWN0aW9ucy4KLSAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEVmbDo6
c2hvdWxkRGVsZXRlUmFuZ2UpOgotICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50RWZsOjpz
aG91bGRCZWdpbkVkaXRpbmcpOgotICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50RWZsOjpz
aG91bGRFbmRFZGl0aW5nKToKLSAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEVmbDo6c2hv
dWxkSW5zZXJ0VGV4dCk6Ci0gICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRFZmw6OnNob3Vs
ZENoYW5nZVNlbGVjdGVkUmFuZ2UpOgotICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50RWZs
OjpzaG91bGRBcHBseVN0eWxlKToKLSAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEVmbDo6
ZGlkQmVnaW5FZGl0aW5nKToKLSAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEVmbDo6ZGlk
RW5kRWRpdGluZyk6Ci0gICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRFZmw6OnNob3VsZElu
c2VydE5vZGUpOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5oOiBB
ZGQgc3RydWN0dXJlcyBuZWVkZWQgYnkgZWRpdGluZyBjYWxsYmFja3MuCi0gICAgICAgIChFd2tf
U2hvdWxkX0luc2VydF9Ob2RlX0V2ZW50KToKLSAgICAgICAgKEV3a19TaG91bGRfSW5zZXJ0X1Rl
eHRfRXZlbnQpOgotICAgICAgICAoRXdrX1Nob3VsZF9DaGFuZ2VfU2VsZWN0ZWRfUmFuZ2VfRXZl
bnQpOgotICAgICAgICAoRXdrX1Nob3VsZF9BcHBseV9TdHlsZV9FdmVudCk6Ci0KLTIwMTItMDUt
MTcgIEdyemVnb3J6IEN6YWprb3dza2kgIDxnLmN6YWprb3dza2lAc2Ftc3VuZy5jb20+Ci0KLSAg
ICAgICAgW0VGTF0gRG8gbm90IGNoZWNrIE5VTEwgcG9pbnRlciBhbGxvY2F0ZWQgYnkgbmV3Lgot
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODY2MTAKLQot
ICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtlIE5pd2EuCi0KLSAgICAgICAgV2ViS2l0LUVmbCBk
b2Vzbid0IGNoZWNrIHBvaW50ZXJzIHRoYXQgYXJlIGluaXRpYWxpemVkIGJ5IG5ldy4KLSAgICAg
ICAgVGhvc2UgY2hlY2tzIGFyZSBub3QgbmVlZGVkIGJlY2F1c2UgbmV3IG9wZXJhdG9yIGRvZXNu
J3QgcmV0dXJuIE5VTEwuCi0gICAgICAgIE9ubHkgYW4gb3ZlcmxvYWRlZCB2ZXJzaW9uIG9mIG5l
dyByZXR1cm5zIE5VTEwgcG9pbnRlci4KLQotICAgICAgICAqIGV3ay9ld2tfdGlsZWRfbWF0cml4
LmNwcDoKLSAgICAgICAgKGV3a190aWxlX21hdHJpeF9lbnRyeV9uZXcpOgotICAgICAgICAqIGV3
ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChfZXdrX3ZpZXdfY29yZV9mcmFtZV9uZXcpOgotCi0y
MDEyLTA1LTE3ICBNaWtoYWlsIFBvemRueWFrb3YgIDxtaWtoYWlsLnBvemRueWFrb3ZAaW50ZWwu
Y29tPgotCi0gICAgICAgIFtFRkxdIGZhc3QvZnJhbWVzL2ZyYW1lLWNyYXNoLXdpdGgtcGFnZS1j
YWNoZS5odG1sIGlzIGNyYXNoaW5nCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD04NTg3OQotCi0gICAgICAgIFJldmlld2VkIGJ5IE5vYW0gUm9zZW50aGFs
LgotCi0gICAgICAgIF9ld2tfZnJhbWVfc21hcnRfZGVsKCkgaXMgY29uc2lkZXJpbmcgbm93IHRo
YXQgdGhlIGZyYW1lIGNhbiBiZSBwcmVzZW50IGluIGNhY2hlLgotICAgICAgICBsb2FkZXIoKS0+
ZGV0YWNoRnJvbVBhcmVudCgpIGlzIG9ubHkgYXBwbGllZCBmb3IgdGhlIG1haW4gZnJhbWUuCi0g
ICAgICAgIGxvYWRlcigpLT5jYW5jZWxBbmRDbGVhcigpIGlzIG5vdCB1c2VkIGFueW1vcmUuCi0K
LSAgICAgICAgKiBld2svZXdrX2ZyYW1lLmNwcDoKLSAgICAgICAgKF9ld2tfZnJhbWVfc21hcnRf
ZGVsKToKLQotMjAxMi0wNS0xNiAgVG9tYXN6IE1vcmF3c2tpICA8dC5tb3Jhd3NraUBzYW1zdW5n
LmNvbT4KLQotICAgICAgICBbRUZMXSBSZXN0b3JlIGFjY2lkZW50YWxseSBjaGFuZ2VkIGNvcHly
aWdodHMuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
NjQ3MQotCi0gICAgICAgIFJldmlld2VkIGJ5IEFudG9uaW8gR29tZXMuCi0KLSAgICAgICAgUmVz
dG9yZSBhY2NpZGVudGFsbHkgY2hhbmdlZCBjb3B5cmlnaHRzLgotCi0gICAgICAgICogZXdrL2V3
a19qc19wcml2YXRlLmg6Ci0gICAgICAgICogZXdrL2V3a19zZWN1cml0eV9vcmlnaW5fcHJpdmF0
ZS5oOgotICAgICAgICAqIGV3ay9ld2tfdmlld19wcml2YXRlLmg6Ci0KLTIwMTItMDUtMTYgIEtp
aG9uZyBLd29uICA8a2lob25nLmt3b25Ac2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW0VGTF0gU3Vw
cG9ydCBmb3IgQmF0dGVyeSBTdGF0dXMgQVBJIG9uIHRoZSBXZWJLaXQtRWZsCi0gICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MzI1NAotCi0gICAgICAgIFJl
dmlld2VkIGJ5IENoYW5nIFNodS4KLQotICAgICAgICBUaGUgc2V0IG9mIGVfZGJ1cyBsaWJyYXJp
ZXMsIGVfdWtpdCBsaWJyYXJ5IGluIHBhcnRpY3VsYXIsIGVuYWJsZXMgdG8gc3VwcG9ydCBhbGwg
dHlwZXMgb2YgYmF0dGVyeSBzdGF0dXMgZXZlbnRzIChlLmcuLCBjaGFyZ2luZywgY2hhcmdpbmdU
aW1lLCBkaXNjaGFyZ2luZ1RpbWUsIGxldmVsKS4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L0JhdHRlcnlDbGllbnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29yZTo6QmF0dGVyeUNsaWVudEVm
bDo6QmF0dGVyeUNsaWVudEVmbCk6Ci0gICAgICAgIChXZWJDb3JlOjpCYXR0ZXJ5Q2xpZW50RWZs
OjpzdGFydFVwZGF0aW5nKToKLSAgICAgICAgKFdlYkNvcmU6OkJhdHRlcnlDbGllbnRFZmw6OnN0
b3BVcGRhdGluZyk6Ci0gICAgICAgIChXZWJDb3JlOjpCYXR0ZXJ5Q2xpZW50RWZsOjpzZXRCYXR0
ZXJ5U3RhdHVzKToKLSAgICAgICAgKFdlYkNvcmUpOgotICAgICAgICAoV2ViQ29yZTo6QmF0dGVy
eUNsaWVudEVmbDo6dGltZXJGaXJlZCk6Ci0gICAgICAgIChXZWJDb3JlOjpCYXR0ZXJ5Q2xpZW50
RWZsOjpnZXRCYXR0ZXJ5U3RhdHVzKToKLSAgICAgICAgKFdlYkNvcmU6OkJhdHRlcnlDbGllbnRF
Zmw6OnNldEJhdHRlcnlDbGllbnQpOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0JhdHRlcnlD
bGllbnRFZmwuaDoKLSAgICAgICAgKFdlYkNvcmU6OkJhdHRlcnlDbGllbnRFZmw6OmJhdHRlcnlT
dGF0dXMpOgotICAgICAgICAoQmF0dGVyeUNsaWVudEVmbCk6Ci0KLTIwMTItMDUtMTYgIFRoaWFn
byBNYXJjb3MgUC4gU2FudG9zICA8dGhpYWdvLnNhbnRvc0BpbnRlbC5jb20+Ci0KLSAgICAgICAg
W0VGTF0gRml4IHVuaW5pdGlhbGl6ZWQgc3RydWN0IG1lbWJlciBhZGRlZCBieSByMTE3MjU4Ci0g
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NjYxMQotCi0g
ICAgICAgIFJldmlld2VkIGJ5IEd1c3Rhdm8gTm9yb25oYSBTaWx2YS4KLQotICAgICAgICBXaGVu
IGFkZGluZyBhIG5ldyBtZW1iZXIgdG8gX0V3a19WaWV3X1NtYXJ0X0NsYXNzLAotICAgICAgICBF
V0tfVklFV19TTUFSVF9DTEFTU19WRVJTSU9OIG5lZWRzIHRvIGJlIHVwZGF0ZWQuCi0KLSAgICAg
ICAgKiBld2svZXdrX3ZpZXcuaDoKLQotMjAxMi0wNS0xNiAgQ2hyaXN0b3BoZSBEdW1leiAgPGNo
cmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgotCi0gICAgICAgIFtFRkxdIEVGTCdzIExheW91dFRl
c3RDb250cm9sbGVyIGRvZXMgbm90IGltcGxlbWVudCBzZXRBcHBsaWNhdGlvbkNhY2hlT3JpZ2lu
UXVvdGEKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg1
NTg1Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgR3VzdGF2byBOb3JvbmhhIFNpbHZhLgotCi0gICAg
ICAgIEFkZCBuZXcgZnVuY3Rpb24gdG8gRXdrX1NlY3VyaXR5X09yaWdpbiB0byBzZXQgdGhlIGFw
cGxpY2F0aW9uIGNhY2hlCi0gICAgICAgIHF1b3RhLiBJbXBsZW1lbnQgcmVhY2hlZEFwcGxpY2F0
aW9uQ2FjaGVPcmlnaW5RdW90YSBpbgotICAgICAgICBDaHJvbWVDbGllbnRFZmwuIEFkZCBmdW5j
dGlvbiB0byB0aGUgRXdrX1ZpZXcgdG8gcmVwb3J0IHRoYXQgdGhlCi0gICAgICAgIGFwcGxpY2F0
aW9uIGNhY2hlIHF1b3RhIHdhcyByZWFjaGVkLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQv
Q2hyb21lQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEVmbDo6
cmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YSk6Ci0gICAgICAgICogZXdrL2V3a19z
ZWN1cml0eV9vcmlnaW4uY3BwOgotICAgICAgICAoZXdrX3NlY3VyaXR5X29yaWdpbl9hcHBsaWNh
dGlvbl9jYWNoZV9xdW90YV9zZXQpOgotICAgICAgICAqIGV3ay9ld2tfc2VjdXJpdHlfb3JpZ2lu
Lmg6Ci0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAgKF9Fd2tfVmlld19Qcml2
YXRlX0RhdGEpOgotICAgICAgICAoZXdrX3ZpZXdfZXhjZWVkZWRfYXBwbGljYXRpb25fY2FjaGVf
cXVvdGEpOgotICAgICAgICAqIGV3ay9ld2tfdmlldy5oOgotICAgICAgICAqIGV3ay9ld2tfdmll
d19wcml2YXRlLmg6Ci0KLTIwMTItMDUtMTYgIE1pa2hhaWwgUG96ZG55YWtvdiAgPG1pa2hhaWwu
cG96ZG55YWtvdkBpbnRlbC5jb20+Ci0KLSAgICAgICAgW0VGTF0gRUZMJ3MgTGF5b3V0VGVzdENv
bnRyb2xsZXIgIGV2YWx1YXRlU2NyaXB0SW5Jc29sYXRlZFdvcmxkIGltcGxlbWVudGF0aW9uCi0g
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04Mzc3NgotCi0g
ICAgICAgIFJldmlld2VkIGJ5IFRvciBBcm5lIFZlc3Riw7guCi0KLSAgICAgICAgQWRkZWQgaGVs
cGVyIG5ldyBmdW5jdGlvbiBpbXBsZW1lbnRpbmcgSlMgc2NyaXB0IGV2YWx1YXRpb24gaW4gYW4g
aXNvbGF0ZWQgd29ybGQuCi0gICAgICAgIFdvcmxkcyBhcmUgY2FjaGVkIGJ5IHRoZWlyIGlkLgot
Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcDoK
LSAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6ZXZhbHVhdGVTY3JpcHRJbklzb2xh
dGVkV29ybGQpOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9y
dEVmbC5oOgotCi0yMDEyLTA1LTE2ICBNaWNoYcWCIFBha3XFgmEgdmVsIFJ1dGthICA8bS5wYWt1
bGFAc2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW0VGTF0gQWRkIG5ldyBjb21tYW5kcyBmb3IgRXdr
X0VkaXRvcl9Db21tYW5kLgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NzQ5MjEKLQotICAgICAgICBSZXZpZXdlZCBieSBIYWppbWUgTW9yaXRhLgotCi0g
ICAgICAgIEFkZCBuZXcgY29tbWFuZHMgZm9yIEV3a19FZGl0b3JfQ29tbWFuZCBlbnVtIGFuZCBp
bnRyb2R1Y2UgbmV3IHRhYmxlIHRvIGtlZXAKLSAgICAgICAgZW51bSBhbmQgc3RyaW5nIHZhbHVl
cyBpbiBzeW5jLgotCi0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDogQWRkZWQgYSB0YWJsZSB3
aXRoIEVkaXRvckNvbW1hbmQgc3RydWN0IGVsZW1lbnRzLgotICAgICAgICAoRWRpdG9yQ29tbWFu
ZCk6IEFkZGVkIHN0cnVjdHVyZSBjb25zaXN0aW5nIG9mIGVudW0gYW5kIHN0cmluZyB2YWx1ZS4K
LSAgICAgICAgKF9Fd2tfVmlld19Qcml2YXRlX0RhdGEpOgotICAgICAgICAoX2V3a192aWV3X2Vk
aXRvcl9jb21tYW5kX3N0cmluZ19nZXQpOiBBZGRlZC4KLSAgICAgICAgKGV3a192aWV3X2VkaXRv
cl9jb21tYW5kX2V4ZWN1dGUpOgotICAgICAgICAqIGV3ay9ld2tfdmlldy5oOiBFd2tfRWRpdG9y
X0NvbW1hbmQgZW51bSBleHRlbmRlZC4KLQotMjAxMi0wNS0xNSAgS2lob25nIEt3b24gIDxraWhv
bmcua3dvbkBzYW1zdW5nLmNvbT4KLQotICAgICAgICBbRUZMXSBFbmFibGUgRnVsbHNjcmVlbiBB
UEkKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg1ODcw
Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21lcy4KLQotICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpDaHJvbWVD
bGllbnRFZmw6OnN1cHBvcnRzRnVsbFNjcmVlbkZvckVsZW1lbnQpOgotICAgICAgICBBZGQgY2hl
Y2sgcm91dGluZSBpZiB0aGUgZnVsbCBzY3JlZW4gaXMgZW5hYmxlZCBieSBwYWdlIHNldHRpbmcu
Ci0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAgKF9Fd2tfVmlld19Qcml2YXRl
X0RhdGEpOgotICAgICAgICAoX2V3a192aWV3X3ByaXZfbmV3KToKLSAgICAgICAgQWRkIGZ1bGwg
c2NyZWVuIHNldHRpbmcgdG8gYmUgdHJ1ZS4KLQotMjAxMi0wNS0xNSAgVG9tYXN6IE1vcmF3c2tp
ICA8dC5tb3Jhd3NraUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBbRUZMXSBTcGxpdCBld2tfcHJp
dmF0ZS5oIGZpbGUgdG8gbXVsdGlwbGUgcHJpdmF0ZSBmaWxlcy4KLSAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg0NTcyCi0KLSAgICAgICAgUmV2aWV3ZWQg
YnkgQW50b25pbyBHb21lcy4KLQotICAgICAgICBTcGxpdCBld2tfcHJpdmF0ZSBmaWxlIHRvIG11
bHRpcGxlIHByaXZhdGUgZmlsZXMuCi0gICAgICAgIERlbGV0ZSBld2tfbG9nZ2luZy5oIGFuZCBl
d2tfdGlsZWRfcHJpdmF0ZS5oIGZpbGVzIGFuZCByZW1vdmVkIHRpbGVkX2JhY2tpbmdfc3RvcmUg
bG9nZ2luZyBkb21haW4uCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRF
ZmwuY3BwOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVm
bC5jcHA6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmNwcDoKLSAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHA6Ci0gICAgICAg
ICogZXdrL2V3a19hdXRoLmNwcDoKLSAgICAgICAgKiBld2svZXdrX2F1dGhfc291cC5jcHA6Ci0g
ICAgICAgIChkZXRhY2gpOgotICAgICAgICAqIGV3ay9ld2tfYXV0aF9zb3VwX3ByaXZhdGUuaDog
UmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfYXV0aF9zb3VwLmguCi0gICAg
ICAgICogZXdrL2V3a19jb250ZXh0bWVudV9wcml2YXRlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9X
ZWJLaXQvZWZsL2V3ay9ld2tfcHJpdmF0ZS5oLgotICAgICAgICAoV2ViQ29yZSk6Ci0gICAgICAg
ICogZXdrL2V3a19mcmFtZS5jcHA6Ci0gICAgICAgICogZXdrL2V3a19mcmFtZV9wcml2YXRlLmg6
IEFkZGVkLgotICAgICAgICAoV2ViQ29yZSk6Ci0gICAgICAgIChFV0tQcml2YXRlKToKLSAgICAg
ICAgKiBld2svZXdrX2hpc3RvcnkuY3BwOgotICAgICAgICAqIGV3ay9ld2tfaGlzdG9yeV9wcml2
YXRlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfcHJpdmF0ZS5oLgot
ICAgICAgICAoV2ViQ29yZSk6Ci0gICAgICAgIChFV0tQcml2YXRlKToKLSAgICAgICAgKiBld2sv
ZXdrX2pzLmNwcDoKLSAgICAgICAgKiBld2svZXdrX2pzX3ByaXZhdGUuaDogQ29waWVkIGZyb20g
U291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19wcml2YXRlLmguCi0gICAgICAgIChfRXdrX0pTX09i
amVjdCk6Ci0gICAgICAgICogZXdrL2V3a19tYWluLmNwcDoKLSAgICAgICAgKiBld2svZXdrX25l
dHdvcmsuY3BwOgotICAgICAgICAqIGV3ay9ld2tfcHJpdmF0ZS5oOgotICAgICAgICAoV2ViQ29y
ZSk6Ci0gICAgICAgICogZXdrL2V3a19zZWN1cml0eV9vcmlnaW5fcHJpdmF0ZS5oOiBDb3BpZWQg
ZnJvbSBTb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ByaXZhdGUuaC4KLSAgICAgICAgKFdlYkNv
cmUpOgotICAgICAgICAqIGV3ay9ld2tfc2V0dGluZ3MuY3BwOgotICAgICAgICAqIGV3ay9ld2tf
c2V0dGluZ3NfcHJpdmF0ZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdr
X3ByaXZhdGUuaC4KLSAgICAgICAgKiBld2svZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUuY3BwOgot
ICAgICAgICAoX0V3a19UaWxlZF9CYWNraW5nX1N0b3JlX0l0ZW0pOgotICAgICAgICAoZXdrX3Rp
bGVkX2JhY2tpbmdfc3RvcmVfYWRkKToKLSAgICAgICAgKiBld2svZXdrX3RpbGVkX2JhY2tpbmdf
c3RvcmVfcHJpdmF0ZS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a190
aWxlZF9iYWNraW5nX3N0b3JlLmguCi0gICAgICAgIChfRXdrX1RpbGVfU3RhdHMpOgotICAgICAg
ICAoX0V3a19UaWxlKToKLSAgICAgICAgKiBld2svZXdrX3RpbGVkX21hdHJpeC5jcHA6Ci0gICAg
ICAgICogZXdrL2V3a190aWxlZF9tYXRyaXhfcHJpdmF0ZS5oOiBSZW5hbWVkIGZyb20gU291cmNl
L1dlYktpdC9lZmwvZXdrL2V3a190aWxlZF9tYXRyaXguaC4KLSAgICAgICAgKiBld2svZXdrX3Rp
bGVkX21vZGVsLmNwcDoKLSAgICAgICAgKHRpbGVfYWNjb3VudCk6Ci0gICAgICAgICogZXdrL2V3
a190aWxlZF9tb2RlbF9wcml2YXRlLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2VmbC9l
d2svZXdrX3RpbGVkX21vZGVsLmguCi0gICAgICAgICogZXdrL2V3a191dGlsLmNwcDoKLSAgICAg
ICAgKiBld2svZXdrX3V0aWxfcHJpdmF0ZS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdC9l
ZmwvZXdrL2V3a191dGlsLmguCi0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAg
KF9Fd2tfVmlld19Qcml2YXRlX0RhdGEpOgotICAgICAgICAqIGV3ay9ld2tfdmlld19wcml2YXRl
Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfcHJpdmF0ZS5oLgotICAg
ICAgICAoV2ViQ29yZSk6Ci0gICAgICAgIChFV0tQcml2YXRlKToKLSAgICAgICAgKiBld2svZXdr
X3ZpZXdfc2luZ2xlLmNwcDoKLSAgICAgICAgKiBld2svZXdrX3ZpZXdfdGlsZWQuY3BwOgotICAg
ICAgICAqIGV3ay9ld2tfd2luZG93X2ZlYXR1cmVzLmNwcDoKLSAgICAgICAgKiBld2svZXdrX3dp
bmRvd19mZWF0dXJlc19wcml2YXRlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvZWZsL2V3
ay9ld2tfcHJpdmF0ZS5oLgotCi0yMDEyLTA1LTE0ICBSYXBoYWVsIEt1Ym8gZGEgQ29zdGEgIDxy
YWt1Y29Ad2Via2l0Lm9yZz4KLQotICAgICAgICBbRUZMXSBSZW1vdmUgZXdrX3ZpZXdfY29yZV9w
YWdlX2dldCgpLgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODYzMjYKLQotICAgICAgICBSZXZpZXdlZCBieSBBbnRvbmlvIEdvbWVzLgotCi0gICAgICAg
IFJpZ2h0IG5vdywgd2UgaGF2ZSBib3RoIGV3a192aWV3X2NvcmVfcGFnZV9nZXQoKSBhbmQKLSAg
ICAgICAgRVdLUHJpdmF0ZTo6Y29yZVBhZ2UoKSBkb2luZyB0aGUgc2FtZSB0aGluZywgYnV0IHRo
ZSBsYXR0ZXIgaXMKLSAgICAgICAgYmV0dGVyIGVuY2Fwc3VsYXRlZC4KLQotICAgICAgICBSZW1v
dmUgdGhlIGZvcm1lciB0aGVuLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0
ZWRDb21wb3NpdGluZ0NvbnRleHRFZmwuY3BwOgotICAgICAgICAoV2ViQ29yZTo6QWNjZWxlcmF0
ZWRDb21wb3NpdGluZ0NvbnRleHQ6OnN5bmNMYXllcnNOb3cpOiBBZGQKLSAgICAgICAgbWlzc2lu
ZyBld2tfcHJpdmF0ZS5oIGFuZCB1c2UgRVdLUHJpdmF0ZTo6Y29yZVBhZ2UoKS4KLSAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29yZTo6
Q2hyb21lQ2xpZW50RWZsOjpjcmVhdGVXaW5kb3cpOiBVc2UKLSAgICAgICAgRVdLUHJpdmF0ZTo6
Y29yZVBhZ2UoKS4KLSAgICAgICAgKiBld2svZXdrX3ByaXZhdGUuaDogUmVtb3ZlIGV3a192aWV3
X2NvcmVfcGFnZV9nZXQoKSBkZWNsYXJhdGlvbi4KLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3Bw
OgotICAgICAgICAoX0V3a19WaWV3X1ByaXZhdGVfRGF0YSk6Ci0gICAgICAgIChFV0tQcml2YXRl
Ojpjb3JlUGFnZSk6IEZpeCBjb2Rpbmcgc3R5bGUgd2hpbGUgaGVyZS4KLQotMjAxMi0wNS0xMSAg
RG9taW5payBSw7Z0dHNjaGVzICA8ZG9taW5pay5yb3R0c2NoZXNAaW50ZWwuY29tPgotCi0gICAg
ICAgIFtFRkxdW0RSVF0gSW5wdXQgQXR0cmlidXRlIFBsYWNlaG9sZGVyIFJlZlRlc3RzIGZhaWxp
bmcKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg1NjAz
Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgSGFqaW1lIE1vcml0YS4KLQotICAgICAgICBSZW1vdmlu
ZyBjb2xvciBjbGFzc2VzIHdoaWNoIHdlIGRvbid0IG5lZWQgYW55bW9yZSBhZnRlcgotICAgICAg
ICBSZW5kZXJUaGVtZUVmbC5jcHAgaXMgbGVzcyBhZ2dyZXNzaXZlbHkgb3ZlcnJpZGluZyBzdHls
aW5nLgotCi0gICAgICAgICogRGVmYXVsdFRoZW1lL2RlZmF1bHQuZWRjOgotCi0yMDEyLTA1LTEw
ICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgTW92
ZSByZXN1bWVBbmltYXRpb25zIHRvIHVzZSBJbnRlcm5hbHMgaW50ZXJmYWNlCi0gICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NjA2MwotCi0gICAgICAgIFJl
dmlld2VkIGJ5IEFsZXhleSBQcm9za3VyeWFrb3YuCi0KLSAgICAgICAgUmVtb3ZlIHJlc3VtZUFu
aW1hdGlvbnMgZnVuY3Rpb25zLCBiZWNhdXNlIGl0IGlzIGFibGUgdG8gd29yayBpbiB0aGUgCi0g
ICAgICAgIGNyb3NzLXBvcnQgd2F5IHRocm91Z2ggdGhlIEludGVybmFscyBpbnRlcmZhY2UuCi0K
LSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwOgot
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5oOgotCi0y
MDEyLTA1LTEwICBLYW5naWwgSGFuICA8a2FuZ2lsLmhhbkBzYW1zdW5nLmNvbT4KLQotICAgICAg
ICBbRUZMXVtEUlRdIEVkaXRvciBkb2Vzbid0IGNhbmNlbCBjb21wb3NpdGlvbiBhcyBjaGFuZ2Ug
b2YgdmFsdWUKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTg1MTIyCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgTWFydGluIFJvYmluc29uLgotCi0gICAgICAg
IElNRSBjb21wb3NpdGlvbiBzaG91bGQgYmUgY2FuY2VsbGVkIHdoZW4gdGhlIHZhbHVlIG9mIGlu
cHV0IGVsZW1lbnQgaXMgY2hhbmdlZCBwcm9ncmFtbWF0aWNhbGx5LgotICAgICAgICBIb3dldmVy
LCBFRkwgcG9ydCBkb2Vzbid0IGNhbmNlbCBhcyBjaGFuZ2Ugb2YgdmFsdWUuCi0gICAgICAgIFRo
ZXJlZm9yZSwgdGhpcyBwYXRjaCB3aWxsIGZpeCB0aGUgYnVnLgotCi0gICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNs
aWVudEVmbDo6cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbik6Ci0KLTIwMTItMDUtMTAgIERvbWlu
aWsgUsO2dHRzY2hlcyAgPGRvbWluaWsucm90dHNjaGVzQGludGVsLmNvbT4KLQotICAgICAgICBb
RUZMXVtEUlRdIGV3a192aWV3X3BhaW50X2NvbnRlbnRzIG1heSB0cmlnZ2VyIGFzc2VydGlvbiBm
YWlsdXJlCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
NTA1OAotCi0gICAgICAgIFJldmlld2VkIGJ5IEd1c3Rhdm8gTm9yb25oYSBTaWx2YS4KLQotICAg
ICAgICBGaXhpbmcgYXNzZXJ0aW9uIGZhaWx1cmUgdHJpZ2dlcmVkIGluIG1lZGlhL21lZGlhLWZy
YWdtZW50IGNhc2VzLgotICAgICAgICBUaGUgYXNzZXJ0aW9uIGlzIGhpdCBiZWNhdXNlIG9mIGEg
cmFjZSBiZXR3ZWVuIHNjaGVkdWxlUmVsYXlvdXQoKSBhbmQKLSAgICAgICAgdGhlIEVXSydzIGlk
bGUgdGlsaW5nIHBhaW50aW5nLiBUaGlzIGlzIGV4cG9zZWQgYnkgdGVzdCBjYXNlcwotICAgICAg
ICB0aGF0IHJhcGlkbHkgaW5zZXJ0IGNoaWxkIG5vZGVzIHRvIHRoZSBkb2N1bWVudCB3aGljaCBs
ZWFkIHRvCi0gICAgICAgIHNjaGVkdWxlUmVsYXlvdXQoKSBjYWxscy4gVXNpbmcgdGhlIGdlbmVy
YWwgcHVycG9zZSBkZWZlbnNpdmUKLSAgICAgICAgbGF5b3V0IGZ1bmN0aW9uLCBub3QgY2F1c2lu
ZyBhbnkgZXh0cmEgcmVsYXlvdXQgd29yayBpZiB0aGVyZSdzCi0gICAgICAgIG5vdGhpbmcgdG8g
YmUgZG9uZSwgYnV0IHN0aWxsIGF2b2lkaW5nIHRoZSBhc3NlcnRpb24gZmFpbHVyZSBpZgotICAg
ICAgICBsYXlvdXQgaXMgbmVlZGVkLgotCi0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAg
ICAgICAgKGV3a192aWV3X3BhaW50KToKLSAgICAgICAgKGV3a192aWV3X3BhaW50X2NvbnRlbnRz
KToKLQotMjAxMi0wNS0xMCAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5j
b20+Ci0KLSAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjExNjYzMy4KLSAgICAgICAg
aHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTE2NjMzCi0gICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NjA5MwotCi0gICAgICAgIEJyZWFrcyBF
RkwgdGVzdHMgKFJlcXVlc3RlZCBieSBrb3Ygb24gI3dlYmtpdCkuCi0KLSAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwOgotICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5oOgotCi0yMDEyLTA1LTEwICBBbGV4
YW5kZXIgU2hhbGFtb3YgIDxhbGV4YW5kZXIuc2hhbGFtb3ZAaW50ZWwuY29tPgotCi0gICAgICAg
IFtFRkxdIExheW91dFRlc3RDb250cm9sbGVyIG5lZWRzIGltcGxlbWVudGF0aW9uIG9mIHNldFRh
YktleUN5Y2xlc1Rocm91Z2hFbGVtZW50cwotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODI4NjQKLQotICAgICAgICBSZXZpZXdlZCBieSBHdXN0YXZvIE5v
cm9uaGEgU2lsdmEuCi0KLSAgICAgICAgQWRkIG1pc3NpbmcgaW1wbGVtZW50YXRpb24gZm9yIHNl
dFRhYktleUN5Y2xlc1Rocm91Z2hFbGVtZW50cyB0byBFRkwncwotICAgICAgICBEdW1wUmVuZGVy
VHJlZVN1cHBvcnQuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1
cHBvcnRFZmwuY3BwOgotICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpzZXRUYWJL
ZXlDeWNsZXNUaHJvdWdoRWxlbWVudHMpOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBS
ZW5kZXJUcmVlU3VwcG9ydEVmbC5oOgotCi0yMDEyLTA1LTEwICBNaWtoYWlsIFBvemRueWFrb3Yg
IDxtaWtoYWlsLnBvemRueWFrb3ZAaW50ZWwuY29tPgotCi0gICAgICAgIFtFRkxdW0RSVF0gQ2xl
YXIgYWRkZWQgdXNlciBzdHlsZSBzaGVldHMgYmVmb3JlIGEgbmV3IHRlc3RjYXNlIGV4ZWN1dGlv
bi4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg0Nzky
Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgR3VzdGF2byBOb3JvbmhhIFNpbHZhLgotCi0gICAgICAg
IEFkZCBhIGhlbHBlciBmdW5jdGlvbiBmb3IgY2xlYXJpbmcgb2YgdGhlIGFkZGVkIHVzZXIgc3R5
bGUgc2hlZXRzLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBw
b3J0RWZsLmNwcDoKLSAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6Y2xlYXJVc2Vy
U3R5bGVTaGVldHMpOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3Vw
cG9ydEVmbC5oOgotCi0yMDEyLTA1LTA5ICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ft
c3VuZy5jb20+Ci0KLSAgICAgICAgTW92ZSBzdXNwZW5kQW5pbWF0aW9ucyB0byB1c2UgSW50ZXJu
YWxzIGludGVyZmFjZS4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTg1OTg2Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgUnlvc3VrZSBOaXdhLgotCi0gICAg
ICAgIFJlbW92ZSBzdXNwZW5kQW5pbWF0aW9ucyBmdW5jdGlvbnMsIGJlY2F1c2UgaXQgaXMgYWJs
ZSB0byB3b3JrIGluIHRoZSAKLSAgICAgICAgY3Jvc3MtcG9ydCB3YXkgdGhyb3VnaCB0aGUgSW50
ZXJuYWxzIGludGVyZmFjZS4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJU
cmVlU3VwcG9ydEVmbC5jcHA6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRy
ZWVTdXBwb3J0RWZsLmg6Ci0KLTIwMTItMDUtMDkgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3Rv
cGhlLmR1bWV6QGludGVsLmNvbT4KLQotICAgICAgICBbRUZMXVtEUlRdIEVGTCdzIERSVCBuZWVk
cyB0byBzdXBwb3J0IExheW91dFRlc3RDb250cm9sbGVyLmR1bXBJY29uQ2hhbmdlcygpCi0gICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NDQzNQotCi0gICAg
ICAgIFJldmlld2VkIGJ5IEFudG9uaW8gR29tZXMuCi0KLSAgICAgICAgRW1pdCBhICJpY29uLGNo
YW5nZWQiIHNpZ25hbCBvbiB0aGUgZnJhbWUgd2hlbiBpdHMgZmF2aW9uIGNoYW5nZWQuCi0gICAg
ICAgIENsYXJpZnkgdGhhdCB0aGUgImljb24sbG9hZGVkIiBzaWduYWwgaXMgb25seSBlbWl0dGVk
IGZvciB0aGUgbWFpbgotICAgICAgICBmcmFtZS4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVy
Q2xpZW50RWZsOjpkaXNwYXRjaERpZFJlY2VpdmVJY29uKToKLSAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZENoYW5nZUljb25zKToKLSAgICAgICAgKiBl
d2svZXdrX2ZyYW1lLmNwcDoKLSAgICAgICAgKGV3a19mcmFtZV9pY29uX2NoYW5nZWQpOgotICAg
ICAgICAqIGV3ay9ld2tfZnJhbWUuaDoKLSAgICAgICAgKiBld2svZXdrX3ByaXZhdGUuaDoKLQot
MjAxMi0wNS0wOSAgTWlraGFpbCBQb3pkbnlha292ICA8bWlraGFpbC5wb3pkbnlha292QGludGVs
LmNvbT4KLQotICAgICAgICBbRUZMXVtEUlRdIExheW91dFRlc3RDb250cm9sbGVyIGFkZFVzZXJT
Y3JpcHQgaW1wbGVtZW50YXRpb24KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTg0NzE4Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21lcy4K
LQotICAgICAgICBBZGRlZCBoZWxwZXIgZnVuY3Rpb25zIGZvciBhZGRpbmcvY2xlYXJpbmcgb2Yg
dXNlciBzY3JpcHRzLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVT
dXBwb3J0RWZsLmNwcDoKLSAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6YWRkVXNl
clNjcmlwdCk6Ci0gICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OmNsZWFyVXNlclNj
cmlwdHMpOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVm
bC5oOgotCi0yMDEyLTA1LTA4ICBLYW5naWwgSGFuICA8a2FuZ2lsLmhhbkBzYW1zdW5nLmNvbT4K
LQotICAgICAgICBbRUZMXVtEUlRdIEltcGxlbWVudCBUZXh0SW5wdXRDb250cm9sbGVyLgotICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzg1NTkKLQotICAg
ICAgICBSZXZpZXdlZCBieSBNYXJ0aW4gUm9iaW5zb24uCi0KLSAgICAgICAgVGV4dElucHV0Q29u
dHJvbGxlciBoYXMgYmVlbiBjcmVhdGVkIGZvciBhbiBpbnB1dCBlbXVsYXRpb24gcHVycG9zZSBp
biBEUlQuCi0gICAgICAgIEhvd2V2ZXIsIG5vdCBsaWtlIG90aGVyIHBvcnRzLCBFRkwgZG9lc24n
dCBoYXZlIGl0LgotICAgICAgICBUaGVyZWZvcmUsIHRoaXMgcGF0Y2ggd2lsbCBlbmFibGUgRUZM
IHBvcnQgdG8gaGF2ZSBhbiBpbnB1dCBlbXVsYXRpb24gaW4gRFJULgotCi0gICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcDoKLSAgICAgICAgKER1bXBS
ZW5kZXJUcmVlU3VwcG9ydEVmbDo6c2V0Q29tcG9zaXRpb24pOgotICAgICAgICAoRHVtcFJlbmRl
clRyZWVTdXBwb3J0RWZsOjpoYXNDb21wb3NpdGlvbik6Ci0gICAgICAgIChEdW1wUmVuZGVyVHJl
ZVN1cHBvcnRFZmw6OmNvbXBvc2l0aW9uUmFuZ2UpOgotICAgICAgICAoRHVtcFJlbmRlclRyZWVT
dXBwb3J0RWZsOjpjb25maXJtQ29tcG9zaXRpb24pOgotICAgICAgICAoRHVtcFJlbmRlclRyZWVT
dXBwb3J0RWZsOjpmaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSk6Ci0gICAgICAgIChEdW1wUmVu
ZGVyVHJlZVN1cHBvcnRFZmw6OnNlbGVjdGVkUmFuZ2UpOgotICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5oOgotCi0yMDEyLTA0LTIzICBSYXBoYWVsIEt1
Ym8gZGEgQ29zdGEgIDxyYWt1Y29Ad2Via2l0Lm9yZz4KLQotICAgICAgICBbRUZMXSBQYXNzIGEg
V1RGOjpTdHJpbmcgZGlyZWN0bHkgZnJvbSBEUlQgdG8gZXdlYmtpdCB3aGVuIHBvc3NpYmxlCi0g
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NDYzNAotCi0g
ICAgICAgIFJldmlld2VkIGJ5IEd1c3Rhdm8gTm9yb25oYSBTaWx2YS4KLQotICAgICAgICBEcm9w
IHVubmVjZXNzYXJ5IGNvbnN0IGNoYXIqIC0+IFdURjo6U3RyaW5nIGNvbnZlcnNpb25zIGJ5Ci0g
ICAgICAgIGNyZWF0aW5nIFN0cmluZyBvYmplY3RzIGRpcmVjdGx5IGluIExheW91dFRlc3RDb250
cm9sbGVyIG91dCBvZgotICAgICAgICBKU1N0cmluZ1JlZidzIGFuZCBwYXNzaW5nIHRoZW0gdG8g
RHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVt
cFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcDoKLSAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9y
dEVmbDo6c2V0VmFsdWVGb3JVc2VyKToKLSAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEVm
bDo6YWRkVXNlclN0eWxlU2hlZXQpOgotICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZs
OjpmaW5kU3RyaW5nKToKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1
cHBvcnRFZmwuaDoKLQotMjAxMi0wNS0wOCAgS3J6eXN6dG9mIEN6ZWNoICA8ay5jemVjaEBzYW1z
dW5nLmNvbT4KLQotICAgICAgICBbRUZMXSBVcGRhdGUgZG9jdW1lbnRhdGlvbiBvZiBld2tfZnJh
bWVfY29udGVudHNfYWx0ZXJuYXRlX3NldCBhbmQgZXdrX3ZpZXdfem9vbV9yYW5nZV9zZXQuCi0g
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NDU4OAotCi0g
ICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgotCi0gICAgICAgIEluIGV3a19mcmFtZV9j
b250ZW50c19hbHRlcm5hdGVfc2V0LCBwYXJhbSB1bnJlYWNoYWJsZVVyaSBpcyByZXF1aXJlZCwg
bXVzdCBub3QgYmUgMC4KLSAgICAgICAgSW4gZXdrX3ZpZXdfem9vbV9yYW5nZV9zZXQsIGZ1bmN0
aW9uIHJldHVybnMgRUlOQV9GQUxTRSBvbmx5IG9uIGZhaWx1cmUsCi0gICAgICAgIG5vdCB3aGVu
IHpvb20gcmFuZ2UgaXMgY2hhbmdlZC4KLQotICAgICAgICAqIGV3ay9ld2tfZnJhbWUuaDoKLSAg
ICAgICAgKiBld2svZXdrX3ZpZXcuaDoKLQotMjAxMi0wNS0wNyAgTWlraGFpbCBQb3pkbnlha292
ICA8bWlraGFpbC5wb3pkbnlha292QGludGVsLmNvbT4KLQotICAgICAgICBbRUZMXSBQYWdlIGNh
Y2hpbmcgcGVybWlzc2lvbiBmcm9tIEVGTCdzIEZyYW1lTG9hZGVyQ2xpZW50Ci0gICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NTYyMAotCi0gICAgICAgIFJl
dmlld2VkIGJ5IEd1c3Rhdm8gTm9yb25oYSBTaWx2YS4KLQotICAgICAgICBGcmFtZUxvYWRlckNs
aWVudEVmbDo6Y2FuQ2FjaGVQYWdlKCkgcmV0dXJucyB0cnVlLgotCi0gICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29yZTo6RnJh
bWVMb2FkZXJDbGllbnRFZmw6OmNhbkNhY2hlUGFnZSk6Ci0KLTIwMTItMDUtMDcgIEdyemVnb3J6
IEN6YWprb3dza2kgIDxnLmN6YWprb3dza2lAc2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW0VGTF0g
SWNvbiBkYXRhYmFzZSBwYXRoIG1heSBiZSBOVUxMIHdoZW4gYSBuZXcgcGF0aCB3YXMgc2V0Lgot
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODI0NTYKLQot
ICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgotCi0gICAgICAgIGV3a19zZXR0aW5n
c19pY29uX2RhdGFiYXNlX3BhdGhfc2V0IGNhbGxzIGFzeW5jaHJvbm91cyBtZXRob2QgV2ViQ29y
ZTo6aWNvbkRhdGFiYXNlKCkub3BlbigpLgotICAgICAgICBUaGVyZSBpcyBubyBub3RpZmljYXRp
b24gd2hlbiB0aGUgbmV3IHBhdGggaXMgc2V0IGJ5IFdlYkNvcmUuCi0gICAgICAgIE1vcmVvdmVy
IGV3a19zZXR0aW5nc19pY29uX2RhdGFiYXNlX3BhdGhfc2V0IGtlZXBzIHRoZSBuZXcgcGF0aCBp
biBhIGxvY2FsIHZhcmlhYmxlLgotCi0gICAgICAgIFRvIHJldHJpZXZlIHBhdGggdG8gaWNvbiBk
YXRhYmFzZSBld2tfc2V0dGluZ3NfaWNvbl9kYXRhYmFzZV9wYXRoX2dldCBjYW4gYmUgY2FsbGVk
LgotICAgICAgICBJdCBmaXJzdCBjaGVja3MgZmxhZ3Mgd2hldGhlciBpY29uIGRhdGFic2UgaXMg
b3BlbmVkIGFuZCBlbmFibGVkLiBUaGVyZSBpcyBwb3NzaWJpbGl0eQotICAgICAgICB0aGF0IGlj
b24gZGF0YWJhc2UgaGFzIGJlZW4gc2V0IHRocm91Z2ggQVBJIGJ1dCBpdCBoYXNuJ3QgYmVlbiBv
cGVuZWQgYnkgV2ViQ29yZSB5ZXQuCi0gICAgICAgIFNvIGFzIGEgcmVzdWx0IGV3a19zZXR0aW5n
c19pY29uX2RhdGFiYXNlX3BhdGhfZ2V0IHJldHVybnMgTlVMTCBiZWNhdXNlIFdlYkNvcmUgaGFz
bid0Ci0gICAgICAgIHNldCBhbiBhcHByb3ByaWF0ZSBmbGFnIHlldC4KLQotICAgICAgICBJdCBt
YXkgaGFwcGVuIHdoaWxlIGljb24gZGF0YWJhc2Ugc2V0L2dldCBzZXF1ZW5jZXMuCi0gICAgICAg
IEluZm9ybWF0aW9uIHdoZXRoZXIgaWNvbiBkYXRhYmFzZSBpcyBvcGVuZWQvZW5hYmxlZCBzaG91
bGQgYmUgZXhwb3NlZCBieSBzZXBhcmF0ZSBBUEkuCi0KLSAgICAgICAgKiBld2svZXdrX3NldHRp
bmdzLmNwcDoKLSAgICAgICAgKGV3a19zZXR0aW5nc19pY29uX2RhdGFiYXNlX3BhdGhfZ2V0KTog
U2tpcCBjaGVja2luZyB3aGV0aGVyIGljb24gZGF0YWJhc2UgaXMgb3BlbmVkLCBlbmFibGVkLgot
ICAgICAgICAqIGV3ay9ld2tfc2V0dGluZ3MuaDoKLQotMjAxMi0wNS0wNyAgU3VkYXJzYW5hIE5h
Z2luZW5pICA8c3VkYXJzYW5hLm5hZ2luZW5pQGxpbnV4LmludGVsLmNvbT4KLQotICAgICAgICBb
RUZMXVtEUlRdIEltcGxlbWVudCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6ZXhlY0NvbW1hbmQKLSAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgyMjg2Ci0KLSAg
ICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21lcy4KLQotICAgICAgICBBZGQgbWlzc2luZyBp
bXBsZW1lbnRhdGlvbiBleGVjQ29tbWFuZCBhbmQgaXNDb21tYW5kRW5hYmxlZCB0byBFRkwncwot
ICAgICAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnQgdG8gZXhlY3V0ZSBhbiBpbnRlcm5hbCBjb21t
YW5kIGFuZCBjaGVjayBpZiB0aGUKLSAgICAgICAgY29tbWFuZCBpcyBlbmFibGVkLgotCi0gICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcDoKLSAgICAg
ICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6ZXhlY3V0ZUNvcmVDb21tYW5kQnlOYW1lKToK
LSAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6aXNDb21tYW5kRW5hYmxlZCk6Ci0g
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmg6Ci0KLTIw
MTItMDUtMDYgIE1pa2hhaWwgUG96ZG55YWtvdiAgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5j
b20+Ci0KLSAgICAgICAgW0VGTF0gRUZMJ3MgTGF5b3V0VGVzdENvbnRyb2xsZXIgc2V0SmF2YVNj
cmlwdENhbkFjY2Vzc0NsaXBib2FyZCBpbXBsZW1lbnRhdGlvbgotICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODM2ODcKLQotICAgICAgICBSZXZpZXdlZCBi
eSBBbnRvbmlvIEdvbWVzLgotCi0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAg
KF9Fd2tfVmlld19Qcml2YXRlX0RhdGEpOgotICAgICAgICAoX2V3a192aWV3X3ByaXZfbmV3KToK
LSAgICAgICAgKGV3a192aWV3X3NldHRpbmdfc2NyaXB0c19jYW5fYWNjZXNzX2NsaXBib2FyZF9n
ZXQpOgotICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19zY3JpcHRzX2Nhbl9hY2Nlc3NfY2xpcGJv
YXJkX3NldCk6Ci0gICAgICAgICogZXdrL2V3a192aWV3Lmg6Ci0KLTIwMTItMDUtMDYgIEd5dXlv
dW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBDb252ZXJ0IGlz
UGFnZUJveFZpc2libGUgdG8gdXNlIEludGVybmFscyBpbnRlcmZhY2UuCi0gICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NTY5MgotCi0gICAgICAgIFJldmll
d2VkIGJ5IERhcmluIEFkbGVyLgotCi0gICAgICAgIFJlbW92ZSBpc1BhZ2VCb3hWaXNpYmxlIGZ1
bmN0aW9ucywgYmVjYXVzZSBpdCBpcyBhYmxlIHRvIHdvcmsgaW4gdGhlCi0gICAgICAgIGNyb3Nz
LXBvcnQgd2F5IHRocm91Z2ggdGhlIEludGVybmFscyBpbnRlcmZhY2UuCi0KLSAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwOgotICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5oOgotCi0yMDEyLTA1LTA0ICBD
aHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+Ci0KLSAgICAgICAg
W0VGTF0gSW1wbGVtZW50IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBSZXNvdXJjZVJlc3BvbnNl
TUlNRVR5cGVzCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD04NDk0MQotCi0gICAgICAgIFJldmlld2VkIGJ5IE1hcnRpbiBSb2JpbnNvbi4KLQotICAgICAg
ICBFeHRlbmQgRXdrX0ZyYW1lX1Jlc291cmNlX1Jlc3BvbnNlIHN0cnVjdHVyZSB0byBwYXNzIHJl
c291cmNlIE1JTUUgdHlwZQotICAgICAgICBpbmZvcm1hdGlvbi4KLQotICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaFdpbGxTZW5kUmVxdWVzdCk6Ci0gICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2Up
OgotICAgICAgICAqIGV3ay9ld2tfZnJhbWUuaDoKLQotMjAxMi0wNS0wNCAgTmF0ZSBDaGFwaW4g
IDxqYXBoZXRAY2hyb21pdW0ub3JnPgotCi0gICAgICAgIERvbid0IHJlcXVpcmUgRnJhbWVMb2Fk
ZXJDbGllbnQgdG8gbWFudWZhY3R1cmUgYSBjb21taXREYXRhKCkgY2FsbCBmb3IgZW1wdHkgZG9j
dW1lbnRzLgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODU1MzMKLQotICAgICAgICBSZXZpZXdlZCBieSBBbGV4ZXkgUHJvc2t1cnlha292LgotCi0gICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwOgotICAgICAgICAo
V2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OkZyYW1lTG9hZGVyQ2xpZW50RWZsKToKLSAg
ICAgICAgKFdlYkNvcmUpOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6
OmZpbmlzaGVkTG9hZGluZyk6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRFZmwuaDoKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjptYWtl
UmVwcmVzZW50YXRpb24pOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6
OnJldmVydFRvUHJvdmlzaW9uYWxTdGF0ZSk6Ci0gICAgICAgIChGcmFtZUxvYWRlckNsaWVudEVm
bCk6Ci0KLTIwMTItMDUtMDQgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGlu
dGVsLmNvbT4KLQotICAgICAgICBbRUZMXSBGcmFtZSBsb2FkIGNhbGxiYWNrcyBvdXRwdXQgaXMg
bWlzc2luZyBmb3IgcmVkaXJlY3Rpb25zCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD04NTE3MwotCi0gICAgICAgIFJldmlld2VkIGJ5IEFudG9uaW8gR29t
ZXMuCi0KLSAgICAgICAgQWRkIGEgZmV3IHJlZGlyZWN0aW9uLXJlbGF0ZWQgc2lnbmFscyBvbiB0
aGUgZXdrX2ZyYW1lIHNvIHRoYXQgRUZMJ3MKLSAgICAgICAgRHVtcFJlbmRlclRyZWUgY2FuIHBy
aW50IHRoZSBleHBlY3RlZCBvdXRwdXQgd2hlbgotICAgICAgICBMYXlvdXRUZXN0Q29udHJvbGxl
cidzIGR1bXBGcmFtZUxvYWRDYWxsYmFja3MoKSByZXR1cm5zIHRydWUuCi0KLSAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hXaWxsU2VuZFJlcXVlc3QpOgotICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkUmVjZWl2ZVJlc3Bv
bnNlKToKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERp
ZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZCk6Ci0gICAgICAgIChXZWJD
b3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hXaWxsUGVyZm9ybUNsaWVudFJlZGly
ZWN0KToKLSAgICAgICAgKiBld2svZXdrX2ZyYW1lLmNwcDoKLSAgICAgICAgKGV3a19mcmFtZV9y
ZWRpcmVjdF9wcm92aXNpb25hbF9sb2FkKToKLSAgICAgICAgKGV3a19mcmFtZV9yZWRpcmVjdF9y
ZXF1ZXN0ZWQpOgotICAgICAgICAqIGV3ay9ld2tfZnJhbWUuaDoKLSAgICAgICAgKiBld2svZXdr
X3ByaXZhdGUuaDoKLQotMjAxMi0wNS0wNCAgQ2hyaXN0b3BoZSBEdW1leiAgPGNocmlzdG9waGUu
ZHVtZXpAaW50ZWwuY29tPgotCi0gICAgICAgIFtFRkxdIExheW91dFRlc3RDb250cm9sbGVyIGRv
ZXMgbm90IHN1cHBvcnQgb3ZlcnJpZGluZyBXZWJLaXRMb2FkU2l0ZUljb25zS2V5Ci0gICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NTE3MQotCi0gICAgICAg
IFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCi0KLSAgICAgICAgQWRkIGEgaGVscGVyIGZ1bmN0
aW9uIHRvIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbCB0byBvdmVycmlkZSB0aGUKLSAgICAgICAg
IldlYktpdExvYWRTaXRlSWNvbnNLZXkiIHNldHRpbmcgb24gdGhlIHZpZXcgcGFnZS4KLQotICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHA6Ci0gICAg
ICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OnNldExvYWRzU2l0ZUljb25zSWdub3JpbmdJ
bWFnZUxvYWRpbmdTZXR0aW5nKToKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVy
VHJlZVN1cHBvcnRFZmwuaDoKLQotMjAxMi0wNS0wMyAgRmFkeSBTYW11ZWwgIDxmc2FtdWVsQGNo
cm9taXVtLm9yZz4KLQotICAgICAgICBSZW1vdmluZyBsaW5lIGluIGNvbXB1dGVWaWV3cG9ydEF0
dHJpYnV0ZXMgdGhhdCBlbmZvcmNlcyBhIG1pbmltdW0gc2NhbGUgZmFjdG9yIHRvIG5ldmVyIGFs
bG93IHpvb21pbmcgb3V0IG1vcmUgdGhhbiB2aWV3cG9ydAotICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzA2MDkKLQotICAgICAgICBSZXZpZXdlZCBieSBL
ZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1
bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHA6Ci0gICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBv
cnRFZmw6OmR1bXBDb25maWd1cmF0aW9uRm9yVmlld3BvcnQpOgotCi0yMDEyLTA0LTE4ICBKb24g
SG9uZXljdXR0ICA8amhvbmV5Y3V0dEBhcHBsZS5jb20+Ci0KLSAgICAgICAgRnJhbWVMb2FkZXJD
bGllbnQ6OmRpc3BhdGNoV2lsbFNlbmRTdWJtaXRFdmVudCgpIHNob3VsZCBiZSBnaXZlbiBtb3Jl
Ci0gICAgICAgIGluZm9ybWF0aW9uIGFib3V0IHRoZSBmb3JtIGJlaW5nIHN1Ym1pdHRlZAotICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODQyOTcKLQotICAg
ICAgICBSZXZpZXdlZCBieSBBbmR5IEVzdGVzLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRFZmwuaDoKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xp
ZW50RWZsOjpkaXNwYXRjaFdpbGxTZW5kU3VibWl0RXZlbnQpOgotICAgICAgICBVcGRhdGVkIG1l
dGhvZCBkZWNsYXJhdGlvbi4KLQotMjAxMi0wNS0wMiAgRW1pbCBBIEVrbHVuZCAgPGVhZUBjaHJv
bWl1bS5vcmc+Ci0KLSAgICAgICAgRml4IHVzYWdlIG9mIGxheW91dCB0eXBlcyBpbiBwbGF0Zm9y
bSBjb2RlCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
NTM5MgotCi0gICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgotCi0gICAgICAgICogZXdr
L2V3a19mcmFtZS5jcHA6Ci0gICAgICAgIChld2tfZnJhbWVfZm9jdXNlZF9lbGVtZW50X2dlb21l
dHJ5X2dldCk6Ci0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAgKF9Fd2tfVmll
d19Qcml2YXRlX0RhdGEpOgotICAgICAgICAoZXdrX3ZpZXdfc2NhbGVfc2V0KToKLQotMjAxMi0w
NS0wMiAgTWlraGFpbCBQb3pkbnlha292ICA8bWlraGFpbC5wb3pkbnlha292QGludGVsLmNvbT4K
LQotICAgICAgICBbRUZMXSBIeXBlcmxpbmsgYXVkaXRpbmcgZXdrX3ZpZXcgc2V0dGluZwotICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODQ0NTEKLQotICAg
ICAgICBSZXZpZXdlZCBieSBBbnRvbmlvIEdvbWVzLgotCi0gICAgICAgIEV4cG9ydGluZyBuZXcg
ZXdrX3ZpZXcgc2V0dGluZzogIGh5cGVybGlua0F1ZGl0aW5nRW5hYmxlZCAtIGVuYmxlcy9kaXNh
YmxlcyBoeXBlcmxpbmsgYXVkaXRpbmcuCi0KLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgot
ICAgICAgICAoX0V3a19WaWV3X1ByaXZhdGVfRGF0YSk6Ci0gICAgICAgIChfZXdrX3ZpZXdfcHJp
dl9uZXcpOgotICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfaHlwZXJsaW5rX2F1ZGl0
aW5nX2dldCk6Ci0gICAgICAgIChld2tfdmlld19zZXR0aW5nX2VuYWJsZV9oeXBlcmxpbmtfYXVk
aXRpbmdfc2V0KToKLSAgICAgICAgKiBld2svZXdrX3ZpZXcuaDoKLQotMjAxMi0wNS0wMiAgRG9u
Z3dvbyBJbSAgPGR3LmltQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxdIEZpeCB0eXBvIGlu
dHJvZHVjZWQgaW4gcjExNTgwMC4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTg1MzU0Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgTmlrb2xhcyBaaW1tZXJt
YW5uLgotCi0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAgKF9Fd2tfVmlld19Q
cml2YXRlX0RhdGEpOiBBc3NpZ24gMSBiaXQgdG8gdGhlIGJvb2xlYW4gYXR0cmlidXRlLCB3ZWJB
dWRpby4KLQotMjAxMi0wNS0wMiAgRG9uZ3dvbyBJbSAgPGR3LmltQHNhbXN1bmcuY29tPgotCi0g
ICAgICAgIFtFRkxdIEltcGxlbWVudCB0aGUgV2ViIEF1ZGlvIEFQSSBmZWF0dXJlLgotICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzg2ODgKLQotICAgICAg
ICBSZXZpZXdlZCBieSBQaGlsaXBwZSBOb3JtYW5kLgotCi0gICAgICAgIEltcGxlbWVudCB0aGUg
V2ViIEF1ZGlvIEFQSSBmZWF0dXJlIG9uIHRoZSBFRkwgcG9ydC4KLSAgICAgICAgaHR0cHM6Ly9k
dmNzLnczLm9yZy9oZy9hdWRpby9yYXctZmlsZS90aXAvd2ViYXVkaW8vc3BlY2lmaWNhdGlvbi5o
dG1sCi0KLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOiBBZGQgdGhlIHNldHRlci9nZXR0ZXIg
b2YgdGhlIHdlYmF1ZGlvIGZlYXR1cmUuCi0gICAgICAgIChfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRh
KToKLSAgICAgICAgKF9ld2tfdmlld19wcml2X25ldyk6Ci0gICAgICAgIChld2tfdmlld19zZXR0
aW5nX3dlYl9hdWRpb19nZXQpOiBFbmFibGUvZGlzYWJsZSB0aGUgV2ViIEF1ZGlvIEFQSSBmZWF0
dXJlLgotICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ193ZWJfYXVkaW9fc2V0KTogUXVlcnkgaWYg
dGhlIFdlYiBBdWRpbyBBUEkgZmVhdHVyZSBpcyBlbmFibGVkLgotICAgICAgICAqIGV3ay9ld2tf
dmlldy5oOiBBZGQgdGhlIHByb3RvdHlwZXMuCi0KLTIwMTItMDQtMjcgIENocmlzdG9waGUgRHVt
ZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KLQotICAgICAgICBbRUZMXSBSZXNvdXJj
ZUVycm9yIGRvbWFpbiBuZWVkcyB0byBiZSBwcm9wZXJseSBzZXQgaW4gRnJhbWVMb2FkZXJDbGll
bnQKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg0MTI5
Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgTmF0ZSBDaGFwaW4uCi0KLSAgICAgICAgUHJvcGVybHkg
c2V0IFJlc291cmNlRXJyb3Igb2JqZWN0cycgZG9tYWluIGluc3RlYWQgb2YgdXNpbmcgYSBnZW5l
cmljCi0gICAgICAgIG9uZS4gVGhpcyBhbGxvd3MgV2ViS2l0IGFuZCBOU1VSTCBlcnJvcnMgdG8g
YmUgZGlzdGluZ3Vpc2hlZCwgd2hpY2ggaXMKLSAgICAgICAgcmVxdWlyZWQgdG8gcHJvcGVybHkg
cHJpbnQgb3V0IGluZm9ybWF0aW9uIGluIEVGTCdzIER1bXBSZW5kZXJUcmVlCi0gICAgICAgIHdo
ZW4gZHVtcFJlc291cmNlTG9hZENhbGxiYWNrcygpIHJldHVybnMgdHJ1ZS4KLQotICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpjYW5jZWxsZWRFcnJvcik6Ci0gICAgICAgIChXZWJD
b3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6YmxvY2tlZEVycm9yKToKLSAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpjYW5ub3RTaG93VVJMRXJyb3IpOgotICAgICAgICAo
V2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmludGVycnVwdGVkRm9yUG9saWN5Q2hhbmdl
RXJyb3IpOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmNhbm5vdFNo
b3dNSU1FVHlwZUVycm9yKToKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZs
OjpmaWxlRG9lc05vdEV4aXN0RXJyb3IpOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJD
bGllbnRFZmw6OnBsdWdpbldpbGxIYW5kbGVMb2FkRXJyb3IpOgotCi0yMDEyLTA0LTI3ICBNaWto
YWlsIFBvemRueWFrb3YgIDxtaWtoYWlsLnBvemRueWFrb3ZAaW50ZWwuY29tPgotCi0gICAgICAg
IFtFRkxdIHRhYnNUb0xpbmtzIGV3a192aWV3IHNldHRpbmcKLSAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg0MzQwCi0KLSAgICAgICAgRXhwb3J0aW5nIG5l
dyBld2tfdmlldyBzZXR0aW5nOiB0YWJzVG9MaW5rcyAtIGVuYmxlcy9kaXNhYmxlcyB0YWIga2V5
IGZvY3VzaW5nIG9mIHBhZ2UgZWxlbWVudHMuCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQW50b25p
byBHb21lcy4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHA6
Ci0gICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRFZmw6OmtleWJvYXJkVUlNb2RlKToKLSAg
ICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoX0V3a19WaWV3X1ByaXZhdGVfRGF0
YSk6Ci0gICAgICAgIChfZXdrX3ZpZXdfcHJpdl9uZXcpOgotICAgICAgICAoZXdrX3ZpZXdfc2V0
dGluZ19pbmNsdWRlX2xpbmtzX2luX2ZvY3VzX2NoYWluX2dldCk6Ci0gICAgICAgIChld2tfdmll
d19zZXR0aW5nX2luY2x1ZGVfbGlua3NfaW5fZm9jdXNfY2hhaW5fc2V0KToKLSAgICAgICAgKiBl
d2svZXdrX3ZpZXcuaDoKLQotMjAxMi0wNC0yNyAgQ2hyaXN0b3BoZSBEdW1leiAgPGNocmlzdG9w
aGUuZHVtZXpAaW50ZWwuY29tPgotCi0gICAgICAgIFtFRkxdIERSVCBzaG91bGQgc3VwcG9ydCBM
YXlvdXRUZXN0Q29udHJvbGxlcidzIGR1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3MoKQotICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODE4OTEKLQotICAgICAg
ICBSZXZpZXdlZCBieSBQaGlsaXBwZSBOb3JtYW5kLgotCi0gICAgICAgIE5ldyAibG9hZCxyZXNv
dXJjZSxmaW5pc2hlZCIsICJsb2FkLHJlc291cmNlLGZhaWxlZCIsIGFuZAotICAgICAgICAicmVz
b3VyY2UscmVzcG9uc2UscmVjZWl2ZWQiIHNpZ25hbHMgd2VyZSBhZGRlZCB0byBub3RpZnkgYWJv
dXQgZGlmZmVyZW50Ci0gICAgICAgIHJlc291cmNlIGxvYWQgZXZlbnRzLiBUaGVzZSBhZGRpdGlv
bmFsIHNpZ25hbHMgYXJlIG5lZWRlZCBmb3IgcHJvcGVyCi0gICAgICAgIHN1cHBvcnQgb2YgTGF5
b3V0VGVzdENvbnRyb2xsZXIncyBkdW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzKCkgaW4gRUZMJ3MK
LSAgICAgICAgRHVtcFJlbmRlclRyZWUuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVu
dEVmbDo6YXNzaWduSWRlbnRpZmllclRvSW5pdGlhbFJlcXVlc3QpOgotICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNlKToKLSAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZEZpbmlzaExv
YWRpbmcpOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNo
RGlkRmFpbExvYWRpbmcpOgotICAgICAgICAqIGV3ay9ld2tfZnJhbWUuY3BwOgotICAgICAgICAo
ZXdrX2ZyYW1lX3Jlc3BvbnNlX3JlY2VpdmVkKToKLSAgICAgICAgKGV3a19mcmFtZV9sb2FkX2Zp
bmlzaGVkKToKLSAgICAgICAgKGV3a19mcmFtZV9sb2FkX3Jlc291cmNlX2ZpbmlzaGVkKToKLSAg
ICAgICAgKGV3a19mcmFtZV9sb2FkX3Jlc291cmNlX2ZhaWxlZCk6Ci0gICAgICAgIChld2tfZnJh
bWVfbG9hZF9lcnJvcik6Ci0gICAgICAgICogZXdrL2V3a19mcmFtZS5oOgotICAgICAgICAqIGV3
ay9ld2tfcHJpdmF0ZS5oOgotICAgICAgICAqIGV3ay9ld2tfdmlldy5oOgotCi0yMDEyLTA0LTI2
ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KLQotICAgICAgICBbQ2Fp
cm9dIFdyYXAgY2Fpcm8gc3VyZmFjZXMgaW4gYSBjbGFzcyB3aGVuIHN0b3JpbmcgbmF0aXZlIGlt
YWdlcwotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODM2
MTEKLQotICAgICAgICBSZXZpZXdlZCBieSBBbGVqYW5kcm8gRy4gQ2FzdHJvLgotCi0gICAgICAg
ICogZXdrL2V3a19oaXN0b3J5LmNwcDogVXBkYXRlZCB0byByZWZsZWN0IGFkZGl0aW9uIG9mIE5h
dGl2ZUltYWdlQ2FyaW8uCi0gICAgICAgICogZXdrL2V3a19zZXR0aW5ncy5jcHA6IERpdHRvLgot
Ci0yMDEyLTA0LTI2ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5j
b20+Ci0KLSAgICAgICAgW0VGTF0gRW5hYmxlIFZJREVPX1RSQUNLIGZlYXR1cmUKLSAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg0ODMwCi0KLSAgICAgICAg
UmV2aWV3ZWQgYnkgR3VzdGF2byBOb3JvbmhhIFNpbHZhLgotCi0gICAgICAgIEFkZCBmdW5jdGlv
bnMgb24gdGhlIGV3a192aWV3IHRvIHRvZ2dsZSBydW50aW1lIHN1cHBvcnQgZm9yIHRleHQKLSAg
ICAgICAgdHJhY2tzIGluIEhUTUw1IHZpZGVvLgotCi0gICAgICAgICogZXdrL2V3a192aWV3LmNw
cDoKLSAgICAgICAgKF9Fd2tfVmlld19Qcml2YXRlX0RhdGEpOgotICAgICAgICAoX2V3a192aWV3
X3ByaXZfbmV3KToKLSAgICAgICAgKGV3a192aWV3X3NldHRpbmdfc2hvdWxkX2Rpc3BsYXlfc3Vi
dGl0bGVzX2dldCk6Ci0gICAgICAgIChld2tfdmlld19zZXR0aW5nX3Nob3VsZF9kaXNwbGF5X3N1
YnRpdGxlc19zZXQpOgotICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19zaG91bGRfZGlzcGxheV9j
YXB0aW9uc19nZXQpOgotICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19zaG91bGRfZGlzcGxheV9j
YXB0aW9uc19zZXQpOgotICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19zaG91bGRfZGlzcGxheV90
ZXh0X2Rlc2NyaXB0aW9uc19nZXQpOgotICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19zaG91bGRf
ZGlzcGxheV90ZXh0X2Rlc2NyaXB0aW9uc19zZXQpOgotICAgICAgICAqIGV3ay9ld2tfdmlldy5o
OgotCi0yMDEyLTA0LTI2ICBTdWRhcnNhbmEgTmFnaW5lbmkgIDxzdWRhcnNhbmEubmFnaW5lbmlA
bGludXguaW50ZWwuY29tPgotCi0gICAgICAgIFtFRkxdIFtEUlRdIExheW91dFRlc3RDb250cm9s
bGVyIG5lZWRzIGltcGxlbWVudGF0aW9uIG9mIHNldEphdmFTY3JpcHRQcm9maWxpbmdFbmFibGVk
Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NDU3Ngot
Ci0gICAgICAgIFJldmlld2VkIGJ5IE1hcnRpbiBSb2JpbnNvbi4KLQotICAgICAgICBBZGQgbWlz
c2luZyBpbXBsZW1lbnRhdGlvbiBzZXRKYXZhU2NyaXB0UHJvZmlsaW5nRW5hYmxlZCB0byBFRkwn
cwotICAgICAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnQuIFRoaXMgc2V0dGluZyBhbGxvd3MgbGF5
b3V0IHRlc3RzIHRvIHN0YXJ0Ci0gICAgICAgIEphdmFTY3JpcHQgcHJvZmlsaW5nLgotCi0gICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcDoKLSAgICAg
ICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6c2V0SmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJs
ZWQpOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5o
OgotCi0yMDEyLTA0LTI2ICBNaWtoYWlsIFBvemRueWFrb3YgIDxtaWtoYWlsLnBvemRueWFrb3ZA
aW50ZWwuY29tPgotCi0gICAgICAgIFtFRkxdIFdlYkdMIHN1cHBvcnQgZXdrX3ZpZXcgc2V0dGlu
ZwotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODQ1MzQK
LQotICAgICAgICBSZXZpZXdlZCBieSBBbnRvbmlvIEdvbWVzLgotCi0gICAgICAgIEV4cG9ydGlu
ZyBuZXcgZXdrX3ZpZXcgc2V0dGluZzogd2ViR0xFbmFibGVkIC0gZW5ibGVzL2Rpc2FibGVzIFdl
YkdMIHN1cHBvcnQuCi0KLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoX0V3
a19WaWV3X1ByaXZhdGVfRGF0YSk6Ci0gICAgICAgIChfZXdrX3ZpZXdfcHJpdl9uZXcpOgotICAg
ICAgICAoZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfd2ViZ2xfZ2V0KToKLSAgICAgICAgKGV3a192
aWV3X3NldHRpbmdfZW5hYmxlX3dlYmdsX3NldCk6Ci0gICAgICAgICogZXdrL2V3a192aWV3Lmg6
Ci0KLTIwMTItMDQtMjYgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVs
LmNvbT4KLQotICAgICAgICBbRUZMXVtEUlRdICJyZXNvdXJjZSxyZXF1ZXN0LHdpbGxzZW5kIiBz
aWduYWwgbmVlZHMgdG8gcHJvdmlkZSBtb3JlIGluZm9ybWF0aW9uCi0gICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NDY3MAotCi0gICAgICAgIFJldmlld2Vk
IGJ5IEFuZHJlYXMgS2xpbmcuCi0KLSAgICAgICAgVGhlICJyZXNvdXJjZSxyZXF1ZXN0LHdpbGxz
ZW5kIiBzaWduYWwgbm93IHByb3ZpZGVzIG1vcmUgaW5mb3JtYXRpb24KLSAgICAgICAgYWJvdXQg
dGhlIG5ldHdvcmsgcmVxdWVzdCBhcyB3ZWxsIGFzIGluZm9ybWF0aW9uIGFib3V0IHRoZSBwb3Nz
aWJsZQotICAgICAgICByZWRpcmVjdCByZXNwb25zZS4gVGhpcyBleHRyYSBpbmZvcm1hdGlvbiB3
aWxsIGJlIG5lZWRlZCB0byBzdXBwb3J0Ci0gICAgICAgIExheW91dFRlc3RDb250cm9sbGVyJ3Mg
ZHVtcFJlc291cmNlTG9hZENhbGxiYWNrcygpIGluIEVGTCdzCi0gICAgICAgIER1bXBSZW5kZXJU
cmVlLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3Bw
OgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoV2lsbFNl
bmRSZXF1ZXN0KToKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjphc3Np
Z25JZGVudGlmaWVyVG9Jbml0aWFsUmVxdWVzdCk6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxv
YWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToK
LSAgICAgICAgKiBld2svZXdrX2ZyYW1lLmNwcDoKLSAgICAgICAgKGV3a19mcmFtZV9yZXF1ZXN0
X3dpbGxfc2VuZCk6Ci0gICAgICAgICogZXdrL2V3a19mcmFtZS5oOgotICAgICAgICAqIGV3ay9l
d2tfcHJpdmF0ZS5oOgotICAgICAgICAqIGV3ay9ld2tfdmlldy5oOgotCi0yMDEyLTA0LTIzICBD
aHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+Ci0KLSAgICAgICAg
W0VGTF0gRUZMJ3MgTGF5b3V0VGVzdENvbnRyb2xsZXIgZG9lcyBub3QgaW1wbGVtZW50IGVsZW1l
bnREb2VzQXV0b0NvbXBsZXRlRm9yRWxlbWVudFdpdGhJZAotICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODQ0MjUKLQotICAgICAgICBSZXZpZXdlZCBieSBB
bnRvbmlvIEdvbWVzLgotCi0gICAgICAgIEFkZCBhIGhlbHBlciBmdW5jdGlvbiB0byBEdW1wUmVu
ZGVyVHJlZVN1cHBvcnRFZmwsIHJldHVybmluZwotICAgICAgICB3aGV0aGVyIG9yIG5vdCBhbiBl
bGVtZW50IGRvZXMgcGVyZm9ybSBhdXRvY29tcGxldGlvbi4KLQotICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHA6Ci0gICAgICAgIChEdW1wUmVuZGVy
VHJlZVN1cHBvcnRFZmw6OmVsZW1lbnREb2VzQXV0b0NvbXBsZXRlRm9yRWxlbWVudFdpdGhJZCk6
Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmg6Ci0K
LTIwMTItMDQtMjAgIFRoaWFnbyBNYXJjb3MgUC4gU2FudG9zICA8dGhpYWdvLnNhbnRvc0BpbnRl
bC5jb20+Ci0KLSAgICAgICAgW0VGTF0gQWRkIFNlY3VyaXR5IE9yaWdpbiBBUEkKLSAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg0MDIzCi0KLSAgICAgICAg
QWRkZWQgYW4gQVBJIHRvIGdldCBhIFNlY3VyaXR5IE9yaWdpbiBoYW5kbGUgZnJvbSBhIEV3a19G
cmFtZS4gVGhpcyBpcwotICAgICAgICBuZWVkZWQgZm9yIGZpbmUgZ3JhaW5lZCBzZWN1cml0eSBw
b2xpY3kuIFRoaXMgbmV3IEFQSSB3aWxsIGFsc28gYWxsb3cKLSAgICAgICAgdG8gZGVmaW5lIHF1
b3RhIGFuZCBnZXQgdXNhZ2UgaW5mb3JtYXRpb24gb2YgYSBXZWIgU3RvcmFnZSBiYXNlZCBvbiBp
dHMKLSAgICAgICAgU2VjdXJpdHkgT3JpZ2luLgotCi0gICAgICAgIFJldmlld2VkIGJ5IEFudG9u
aW8gR29tZXMuCi0KLSAgICAgICAgKiBld2svRVdlYktpdC5oOgotICAgICAgICAqIGV3ay9ld2tf
ZnJhbWUuY3BwOgotICAgICAgICAoZXdrX2ZyYW1lX3NlY3VyaXR5X29yaWdpbl9nZXQpOgotICAg
ICAgICAqIGV3ay9ld2tfZnJhbWUuaDoKLSAgICAgICAgKiBld2svZXdrX3NlY3VyaXR5X29yaWdp
bi5jcHA6IEFkZGVkLgotICAgICAgICAoZXdrX3NlY3VyaXR5X29yaWdpbl9wcm90b2NvbF9nZXQp
OgotICAgICAgICAoZXdrX3NlY3VyaXR5X29yaWdpbl9ob3N0X2dldCk6Ci0gICAgICAgIChld2tf
c2VjdXJpdHlfb3JpZ2luX3BvcnRfZ2V0KToKLSAgICAgICAgKGV3a19zZWN1cml0eV9vcmlnaW5f
d2ViX2RhdGFiYXNlX3VzYWdlX2dldCk6Ci0gICAgICAgIChld2tfc2VjdXJpdHlfb3JpZ2luX3dl
Yl9kYXRhYmFzZV9xdW90YV9nZXQpOgotICAgICAgICAoZXdrX3NlY3VyaXR5X29yaWdpbl93ZWJf
ZGF0YWJhc2VfcXVvdGFfc2V0KToKLSAgICAgICAgKGV3a19zZWN1cml0eV9vcmlnaW5fZnJlZSk6
Ci0gICAgICAgIChld2tfc2VjdXJpdHlfb3JpZ2luX25ldyk6Ci0gICAgICAgICogZXdrL2V3a19z
ZWN1cml0eV9vcmlnaW4uaDogQWRkZWQuCi0KLTIwMTItMDQtMjAgIEthbWlsIEJsYW5rICA8ay5i
bGFua0BzYW1zdW5nLmNvbT4KLQotICAgICAgICBbRUZMXSBBZGQgc2V0dGluZyBBUEkgZm9yIGF1
dGhvciBhbmQgdXNlciBzdHlsZXMuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD04Mjg2MAotCi0gICAgICAgIFJldmlld2VkIGJ5IERhbmllbCBCYXRlcy4K
LQotICAgICAgICBBZGQgbWlzc2luZyBpbXBsZW1lbnRhdGlvbiBzZXRBdXRob3JBbmRVc2VyU3R5
bGVzRW5hYmxlZCB0byBFRkwncwotICAgICAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnQuCi0KLSAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwOgotCi0y
MDEyLTA0LTE5ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+
Ci0KLSAgICAgICAgW0VGTF0gZGlzcGF0Y2hEaWRDYW5jZWxDbGllbnRSZWRpcmVjdCBuZWVkcyBp
bXBsZW1lbnRhdGlvbgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9ODM2NjkKLQotICAgICAgICBSZXZpZXdlZCBieSBBbnRvbmlvIEdvbWVzLgotCi0gICAg
ICAgIEVtaXQgYSBuZXcgInJlZGlyZWN0LGNhbmNlbGxlZCIgc2lnbmFsIG9uIHRoZSBld2tfZnJh
bWUgd2hlbiBhCi0gICAgICAgIHJlZGlyZWN0IGlzIGNhbmNlbGxlZC4gVGhpcyBpcyBuZWVkZWQg
YnkgRUZMJ3MgRHVtcFJlbmRlclRyZWUgdG8gZHVtcAotICAgICAgICBmcmFtZSBsb2FkIGNhbGxi
YWNrcyBpbmZvcm1hdGlvbi4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpk
aXNwYXRjaERpZENhbmNlbENsaWVudFJlZGlyZWN0KToKLSAgICAgICAgKiBld2svZXdrX2ZyYW1l
LmNwcDoKLSAgICAgICAgKGV3a19mcmFtZV9yZWRpcmVjdF9jYW5jZWxsZWQpOgotICAgICAgICAq
IGV3ay9ld2tfZnJhbWUuaDoKLSAgICAgICAgKiBld2svZXdrX3ByaXZhdGUuaDoKLQotMjAxMi0w
NC0xNyAgQ2hyaXN0b3BoZSBEdW1leiAgPGNocmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgotCi0g
ICAgICAgIEVGTCdzIExheW91dFRlc3RDb250cm9sbGVyIGRvZXMgbm90IGltcGxlbWVudCBjYWxs
U2hvdWxkQ2xvc2VPbldlYlZpZXcKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTgyMzAxCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgTWFydGluIFJvYmluc29u
LgotCi0gICAgICAgIEltcGxlbWVudCBjYWxsU2hvdWxkQ2xvc2VPbldlYlZpZXcgaW4gRUZMJ3Mg
TGF5b3V0VGVzdENvbnRyb2xsZXIgYnkKLSAgICAgICAgY2FsbGluZyBzaG91bGRDbG9zZSgpIG9u
IHRoZSBGcmFtZUxvYWRlciwgYWxsb3dpbmcgdGhlIHJlbGF0ZWQKLSAgICAgICAgdGVzdCB0byBi
ZSByZW1vdmVkIGZyb20gdGhlIHNraXAgbGlzdC4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHA6Ci0gICAgICAgIChEdW1wUmVuZGVyVHJlZVN1
cHBvcnRFZmw6OmNhbGxTaG91bGRDbG9zZU9uV2ViVmlldyk6Ci0gICAgICAgICogV2ViQ29yZVN1
cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmg6Ci0KLTIwMTItMDQtMTcgIENocmlzdG9w
aGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KLQotICAgICAgICBbRUZMXSBG
cmFtZUxvYWRlckNsaWVudCBzaG91bGQgc2VuZCAibG9hZCxmaW5pc2hlZCIgc2lnbmFsIGZvciBh
bGwgZnJhbWUsIG5vdCBqdXN0IHRoZSBtYWluIG9uZQotICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODQwNTIKLQotICAgICAgICBSZXZpZXdlZCBieSBBbnRv
bmlvIEdvbWVzLgotCi0gICAgICAgIEVtaXQgdGhlICJsb2FkLGZpbmlzaGVkIiBzaWduYWwgZnJv
bSBkaXNwYXRjaERpZEZpbmlzaExvYWQoKSAvIGluc3RlYWQgb2YKLSAgICAgICAgcG9zdFByb2dy
ZXNzRmluaXNoZWROb3RpZmljYXRpb24oKSBpbiBvcmRlciB0byBzZW5kIG5vdGlmaWNhdGlvbnMg
YWxsIGZyYW1lcywKLSAgICAgICAgbm90IGp1c3QgdGhlIG1haW4gb25lLgotCi0gICAgICAgICog
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OnBvc3RQcm9ncmVzc0ZpbmlzaGVkTm90aWZpY2F0aW9u
KToKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZEZp
bmlzaExvYWQpOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3Bh
dGNoRGlkRmFpbExvYWQpOgotCi0yMDEyLTA0LTE3ICBTdWRhcnNhbmEgTmFnaW5lbmkgIDxzdWRh
cnNhbmEubmFnaW5lbmlAbGludXguaW50ZWwuY29tPgotCi0gICAgICAgIFtFRkxdIEFkZCBzZXR0
aW5nIEFQSSB0byBlbmFibGUvZGlzYWJsZSBYU1NBdWRpdG9yCi0gICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MzI4MQotCi0gICAgICAgIEFkZCBzZXR0aW5n
IEFQSSB0byBlbmFibGUgb3IgZGlzYWJsZSBXZWJLaXQncyBYU1NBdWRpdG9yIHRvIHByb3RlY3Qg
Ci0gICAgICAgIGZyb20gcmVmbGVjdGl2ZSBjcm9zcy1zaXRlIHNjcmlwdGluZyBhdHRhY2tzLiBB
bHNvLCBlbWl0IHRoZSBzaWduYWwgCi0gICAgICAgICd4c3MsZGV0ZWN0ZWQnIGFuZCBwcm92aWRl
IGFkZGl0aW9uIGluZm9ybWF0aW9uIHJlY2VpdmVkIGZyb20gCi0gICAgICAgIFhTU0F1ZGl0b3Ig
d2hlbiByZWZsZWN0ZWQgWFNTIGlzIGVuY291bnRlcmVkIGluIHRoZSBwYWdlLgotCi0gICAgICAg
IFJldmlld2VkIGJ5IEFudG9uaW8gR29tZXMuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNs
aWVudEVmbDo6ZGlkRGV0ZWN0WFNTKToKLSAgICAgICAgKiBld2svZXdrX2ZyYW1lLmNwcDoKLSAg
ICAgICAgKGV3a19mcmFtZV94c3NfZGV0ZWN0ZWQpOgotICAgICAgICAqIGV3ay9ld2tfZnJhbWUu
aDoKLSAgICAgICAgKiBld2svZXdrX3ByaXZhdGUuaDoKLSAgICAgICAgKiBld2svZXdrX3ZpZXcu
Y3BwOgotICAgICAgICAoX0V3a19WaWV3X1ByaXZhdGVfRGF0YSk6Ci0gICAgICAgIChfZXdrX3Zp
ZXdfcHJpdl9uZXcpOgotICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfeHNzX2F1ZGl0
b3JfZ2V0KToKLSAgICAgICAgKGV3a192aWV3X3NldHRpbmdfZW5hYmxlX3hzc19hdWRpdG9yX3Nl
dCk6Ci0gICAgICAgICogZXdrL2V3a192aWV3Lmg6Ci0KLTIwMTItMDQtMTcgIENocmlzdG9waGUg
RHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KLQotICAgICAgICBbRUZMXSBEUlQg
c2hvdWxkIHN1cHBvcnQgTGF5b3V0VGVzdENvbnRyb2xsZXIncyBkdW1wRnJhbWVMb2FkQ2FsbGJh
Y2tzKCkKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgz
MDMwCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21lcy4KLQotICAgICAgICBFbWl0
ICJsb2FkLHN0YXJ0ZWQiIGFuZCAib25sb2FkLGV2ZW50IiBzaWduYWxzIG5lZWRlZCB0byBzdXBw
b3J0Ci0gICAgICAgIExheW91dFRlc3RDb250cm9sbGVyJ3MgZHVtcEZyYW1lTG9hZENhbGxiYWNr
cygpIGluIEVGTCdzIER1bXBSZW5kZXJUcmVlLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJD
bGllbnRFZmw6OmRpc3BhdGNoRGlkSGFuZGxlT25sb2FkRXZlbnRzKToKLSAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZENvbW1pdExvYWQpOgotICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkRmFpbExvYWQpOgot
ICAgICAgICAqIGV3ay9ld2tfZnJhbWUuY3BwOgotICAgICAgICAoZXdrX2ZyYW1lX2xvYWRfY29t
bWl0dGVkKToKLSAgICAgICAgKGV3a19mcmFtZV9sb2FkX3N0YXJ0ZWQpOgotICAgICAgICAqIGV3
ay9ld2tfZnJhbWUuaDoKLSAgICAgICAgKiBld2svZXdrX3ByaXZhdGUuaDoKLSAgICAgICAgKiBl
d2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoX0V3a19WaWV3X1ByaXZhdGVfRGF0YSk6Ci0gICAg
ICAgIChld2tfdmlld19sb2FkX3N0YXJ0ZWQpOgotICAgICAgICAoZXdrX3ZpZXdfb25sb2FkX2V2
ZW50KToKLSAgICAgICAgKiBld2svZXdrX3ZpZXcuaDoKLQotMjAxMi0wNC0xNyAgU2hlcmlmZiBC
b3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+Ci0KLSAgICAgICAgVW5yZXZpZXdlZCwg
cm9sbGluZyBvdXQgcjExNDM3Ni4KLSAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFu
Z2VzZXQvMTE0Mzc2Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04NDE1NQotCi0gICAgICAgIFdyb25nIHBhdGNoIHZlcnNpb24gY29tbWl0dGVkLCBhc2tl
ZCBieSB0aGUgcGF0Y2ggYXV0aG9yLgotICAgICAgICAoUmVxdWVzdGVkIGJ5IHJha3VjbyBvbiAj
d2Via2l0KS4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZs
LmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpwb3N0UHJvZ3Jl
c3NGaW5pc2hlZE5vdGlmaWNhdGlvbik6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNs
aWVudEVmbDo6ZGlzcGF0Y2hEaWRGaW5pc2hMb2FkKToKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1l
TG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZEhhbmRsZU9ubG9hZEV2ZW50cyk6Ci0gICAgICAg
IChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRDb21taXRMb2FkKToK
LSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZEZhaWxM
b2FkKToKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5oOgot
ICAgICAgICAoRnJhbWVMb2FkZXJDbGllbnRFZmwpOgotICAgICAgICAqIGV3ay9ld2tfZnJhbWUu
Y3BwOgotICAgICAgICAqIGV3ay9ld2tfZnJhbWUuaDoKLSAgICAgICAgKiBld2svZXdrX3ByaXZh
dGUuaDoKLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoX0V3a19WaWV3X1By
aXZhdGVfRGF0YSk6Ci0gICAgICAgICogZXdrL2V3a192aWV3Lmg6Ci0KLTIwMTItMDQtMTcgIENo
cmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KLQotICAgICAgICBb
RUZMXSBEUlQgc2hvdWxkIHN1cHBvcnQgTGF5b3V0VGVzdENvbnRyb2xsZXIncyBkdW1wRnJhbWVM
b2FkQ2FsbGJhY2tzKCkKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTgzMDMwCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21lcy4KLQotICAg
ICAgICBJbXBsZW1lbnQgc3VwcG9ydCBmb3IgTGF5b3V0VGVzdENvbnRyb2xsZXIncyBkdW1wRnJh
bWVMb2FkQ2FsbGJhY2tzKCkKLSAgICAgICAgaW4gRUZMJ3MgRHVtcFJlbmRlclRyZWUuIFdlIG5v
IGxvbmdlciBlbWl0IHRoZSAibG9hZCxmaW5pc2hlZCIgc2lnbmFsCi0gICAgICAgIGZyb20gcG9z
dFByb2dyZXNzRmluaXNoZWROb3RpZmljYXRpb24oKSBzaW5jZSBpdCBpcyBhbHJlYWR5IGVtaXR0
ZWQKLSAgICAgICAgZnJvbSBkaXNwYXRjaERpZEZpbmlzaExvYWQoKS4gVGhpcyBhdm9pZHMgdW53
YW50ZWQgZXh0cmEgc2lnbmFscyB3ZQotICAgICAgICBwcmV2ZW50IHNvbWUgdGVzdHMgZnJvbSBw
YXNzaW5nIChlLmcuCi0gICAgICAgIGh0dHAvdGVzdHMvc2VjdXJpdHkvbWl4ZWRDb250ZW50L2Fi
b3V0LWJsYW5rLWlmcmFtZS1pbi1tYWluLWZyYW1lLmh0bWwpLgotCi0gICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29yZTo6RnJh
bWVMb2FkZXJDbGllbnRFZmw6OnBvc3RQcm9ncmVzc0ZpbmlzaGVkTm90aWZpY2F0aW9uKToKLSAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZEZpbmlzaExv
YWQpOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlk
SGFuZGxlT25sb2FkRXZlbnRzKToKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50
RWZsOjpkaXNwYXRjaERpZENvbW1pdExvYWQpOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkRmFpbExvYWQpOgotICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmg6Ci0gICAgICAgIChGcmFtZUxvYWRlckNsaWVudEVm
bCk6Ci0gICAgICAgICogZXdrL2V3a19mcmFtZS5jcHA6Ci0gICAgICAgIChld2tfZnJhbWVfbG9h
ZF9jb21taXR0ZWQpOgotICAgICAgICAqIGV3ay9ld2tfZnJhbWUuaDoKLSAgICAgICAgKiBld2sv
ZXdrX3ByaXZhdGUuaDoKLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoX0V3
a19WaWV3X1ByaXZhdGVfRGF0YSk6Ci0gICAgICAgIChld2tfdmlld19vbmxvYWRfZXZlbnQpOgot
ICAgICAgICAqIGV3ay9ld2tfdmlldy5oOgotCi0yMDEyLTA0LTE3ICBNYXJpdXN6IEdyemVnb3Jj
enlrICA8bWFyaXVzei5nQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxdW1dLMl0gRml4IGJ1
aWxkIGJyZWFrIHdoZW4gQ09OVEVYVF9NRU5VUyBpcyBkaXNhYmxlZC4KLSAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgzMjg1Ci0KLSAgICAgICAgUmV2aWV3
ZWQgYnkgUnlvc3VrZSBOaXdhLgotCi0gICAgICAgIFJlbW92ZSBXZWJDb3JlIG5hbWVzcGFjZSBm
cm9tIFBhZ2VDbGllbnRFZmwuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9QYWdlQ2xpZW50
RWZsLmNwcDoKLSAgICAgICAgKFdlYkNvcmUpOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1Bh
Z2VDbGllbnRFZmwuaDoKLSAgICAgICAgKiBld2svZXdrX3ByaXZhdGUuaDoKLSAgICAgICAgKEVX
S1ByaXZhdGUpOgotICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChfRXdrX1Zp
ZXdfUHJpdmF0ZV9EYXRhKToKLSAgICAgICAgKF9ld2tfdmlld19wcml2X25ldyk6Ci0gICAgICAg
IChFV0tQcml2YXRlOjpjb3JlUGFnZUNsaWVudCk6Ci0KLTIwMTItMDQtMTMgIFRoaWFnbyBNYXJj
b3MgUC4gU2FudG9zICA8dGhpYWdvLnNhbnRvc0BpbnRlbC5jb20+Ci0KLSAgICAgICAgW0VGTF0g
QWRkIEFQSSBmb3IgY29sb3IgY2hvb3NlcgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODM2OTIKLQotICAgICAgICBBZGRlZCBuZXcgQVBJIHRvIGVuYWJs
ZSBicm93c2VycyB0byBkaXNwbGF5IGEgY3VzdG9tIGNvbG9yIHBpY2tlcgotICAgICAgICB3aGVu
IGFuIGlucHV0IGZpZWxkIG9mIHR5cGUgImNvbG9yIiBpcyBhY3RpdmF0ZWQuCi0KLSAgICAgICAg
UmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCi0KLSAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29yZSk6Ci0gICAg
ICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRFZmw6OmNyZWF0ZUNvbG9yQ2hvb3Nlcik6Ci0gICAg
ICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRFZmw6OnJlbW92ZUNvbG9yQ2hvb3Nlcik6Ci0gICAg
ICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRFZmw6OnVwZGF0ZUNvbG9yQ2hvb3Nlcik6Ci0gICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmg6Ci0gICAgICAgIChDaHJvbWVD
bGllbnRFZmwpOgotICAgICAgICAqIGV3ay9ld2tfcHJpdmF0ZS5oOgotICAgICAgICAoV2ViQ29y
ZSk6Ci0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAgKF9Fd2tfVmlld19Qcml2
YXRlX0RhdGEpOgotICAgICAgICAoZXdrX3ZpZXdfY29sb3JfY2hvb3Nlcl9uZXcpOgotICAgICAg
ICAoZXdrX3ZpZXdfY29sb3JfY2hvb3Nlcl9kZXN0cm95KToKLSAgICAgICAgKGV3a192aWV3X2Nv
bG9yX2Nob29zZXJfY29sb3Jfc2V0KToKLSAgICAgICAgKGV3a192aWV3X2NvbG9yX2Nob29zZXJf
Y2hhbmdlZCk6Ci0gICAgICAgICogZXdrL2V3a192aWV3Lmg6Ci0KLTIwMTItMDQtMTEgIFN1ZGFy
c2FuYSBOYWdpbmVuaSAgPHN1ZGFyc2FuYS5uYWdpbmVuaUBsaW51eC5pbnRlbC5jb20+Ci0KLSAg
ICAgICAgW0VGTF0gTGF5b3V0VGVzdENvbnRyb2xsZXIgbmVlZHMgaW1wbGVtZW50YXRpb24gb2Yg
cGFnZVByb3BlcnR5Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04MjQ0OQotCi0gICAgICAgIEFkZCBtaXNzaW5nIGltcGxlbWVudGF0aW9uIHBhZ2VQcm9w
ZXJ0eSB0byBFRkwncwotICAgICAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnQuCi0KLSAgICAgICAg
UmV2aWV3ZWQgYnkgQW50b25pbyBHb21lcy4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1
bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHA6Ci0gICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBv
cnRFZmw6OnBhZ2VQcm9wZXJ0eSk6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRl
clRyZWVTdXBwb3J0RWZsLmg6Ci0KLTIwMTItMDQtMTAgIFN1ZGFyc2FuYSBOYWdpbmVuaSAgPHN1
ZGFyc2FuYS5uYWdpbmVuaUBsaW51eC5pbnRlbC5jb20+Ci0KLSAgICAgICAgW0VGTF0gTGF5b3V0
VGVzdENvbnRyb2xsZXIgbmVlZHMgaW1wbGVtZW50YXRpb24gb2YgYWRkVXNlclN0eWxlU2hlZXQK
LSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgyNDQ2Ci0K
LSAgICAgICAgQWRkIG1pc3NpbmcgaW1wbGVtZW50YXRpb24gYWRkVXNlclN0eWxlU2hlZXQgdG8g
RUZMJ3MKLSAgICAgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0LgotCi0gICAgICAgIFJldmlld2Vk
IGJ5IEFudG9uaW8gR29tZXMuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVy
VHJlZVN1cHBvcnRFZmwuY3BwOgotICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjph
ZGRVc2VyU3R5bGVTaGVldCk6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRy
ZWVTdXBwb3J0RWZsLmg6Ci0KLTIwMTItMDQtMDQgIFJhcGhhZWwgS3VibyBkYSBDb3N0YSAgPHJh
a3Vjb0B3ZWJraXQub3JnPgotCi0gICAgICAgIEFub3RoZXIgdW5yZXZpZXdlZCBhdHRlbXB0IGF0
IGdldHRpbmcgdGhlIEVGTCBidWlsZCBib3QgdG8gYQotICAgICAgICBoZWFsdGh5IHN0YXRlIGJ5
IGZvcmNpbmcgYSByZWJ1aWxkLgotCi0gICAgICAgICogZXdrL2V3a19jb29raWVzLmg6Ci0KLTIw
MTItMDQtMDQgIFJhcGhhZWwgS3VibyBkYSBDb3N0YSAgPHJha3Vjb0B3ZWJraXQub3JnPgotCi0g
ICAgICAgIFVucmV2aWV3ZWQ7IHRvdWNoIGEgZmlsZSB0byBjaGVjayBpZiB0aGUgRUZMIGJ1aWxk
IGJvdCBpcyBiYWNrIHRvCi0gICAgICAgIG5vcm1hbC4KLQotICAgICAgICAqIGV3ay9ld2tfY29v
a2llcy5oOgotCi0yMDEyLTA0LTA0ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1l
ekBpbnRlbC5jb20+Ci0KLSAgICAgICAgW0VGTF1bRFJUXSBDYXRjaCB0aGUgInJlc291cmNlLHJl
cXVlc3Qsd2lsbHNlbmQiIHNpZ25hbAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9ODIxOTIKLQotICAgICAgICBSZXZpZXdlZCBieSBHdXN0YXZvIE5vcm9u
aGEgU2lsdmEuCi0KLSAgICAgICAgRUZMJ3MgRnJhbWVMb2FkZXJDbGllbnQgbm93IGVtaXRzIHRo
ZSAicmVzb3VyY2UscmVxdWVzdCx3aWxsc2VuZCIKLSAgICAgICAgc2lnbmFsIG9uIHRoZSB2aWV3
IGZvciBhbGwgcmVzb3VyY2VzIGFib3V0IHRvIGJlIGxvYWRlZCwgbm90IGp1c3QgdGhlCi0gICAg
ICAgIG1haW4gZnJhbWUuIEFsc28gYWRkcyBhIGJvb2xlYW4gZmxhZyB0byBFd2tfRnJhbWVfUmVz
b3VyY2VfUmVxdWVzdCB0bwotICAgICAgICBkaXN0aW5ndWlzaCB0aGUgcmVxdWVzdCBmb3IgdGhl
IG1haW4gZnJhbWUgZnJvbSB0aG9zZSBmb3IKLSAgICAgICAgc3ViLXJlc291cmNlcy4KLQotICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcDoKLSAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaFdpbGxTZW5kUmVxdWVzdCk6
Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6YXNzaWduSWRlbnRpZmll
clRvSW5pdGlhbFJlcXVlc3QpOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRF
Zmw6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6Ci0gICAgICAgICog
ZXdrL2V3a19mcmFtZS5oOgotICAgICAgICAqIGV3ay9ld2tfdmlldy5oOgotCi0yMDEyLTA0LTA0
ICBTdWRhcnNhbmEgTmFnaW5lbmkgIDxzdWRhcnNhbmEubmFnaW5lbmlAbGludXguaW50ZWwuY29t
PgotCi0gICAgICAgIFtFRkxdIERSVCBzdXBwb3J0IGZvciBjb21wdXRlZFN0eWxlSW5jbHVkaW5n
VmlzaXRlZEluZm8KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTgyMTkwCi0KLSAgICAgICAgQWRkIG1pc3NpbmcgaW1wbGVtZW50YXRpb24gY29tcHV0ZWRT
dHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvIHRvIEVGTCdzCi0gICAgICAgIER1bXBSZW5kZXJUcmVl
U3VwcG9ydC4KLQotICAgICAgICBSZXZpZXdlZCBieSBBbnRvbmlvIEdvbWVzLgotCi0gICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcDoKLSAgICAgICAg
KER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6Y29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJ
bmZvKToKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwu
aDoKLQotMjAxMi0wNC0wNCAgRG9taW5payBSw7Z0dHNjaGVzICA8ZG9taW5pay5yb3R0c2NoZXNA
bGludXguaW50ZWwuY29tPgotCi0gICAgICAgIFtFRkxdW0RSVF0gRnJhbWVsb2FkZXJDbGllbnRF
ZmwgbmVlZHMgdG8gaGFuZGxlIG1lZGlhIGNvbnRlbnQgY29ycmVjdGx5Ci0gICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MzAyMAotCi0gICAgICAgIFJldmll
d2VkIGJ5IEhhamltZSBNb3JpdGEuCi0KLSAgICAgICAgSW1wbGVtZW50aW5nIGhhbmRsaW5nIG9m
IG1lZGlhIGNvbnRlbnQgdHlwZSBhbmQgbWVkaWEgZG9jdW1lbnRzCi0gICAgICAgIGluIHRoZSBy
ZXNwZWN0aXZlIEZyYW1lTG9hZGVyQ2xpZW50RWZsIGNhbGxiYWNrcy4KLQotICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpjb21taXR0ZWRMb2FkKTogQ2FuY2VsIGxvYWRpbmcgZm9y
IG1lZGlhIGRvY3VtZW50cy4KLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZs
OjpjYW5TaG93TUlNRVR5cGUpOiBMZXQgbWVkaWEgY29udGVudCB0eXBlcyB0aHJvdWdoLgotICAg
ICAgICAoV2ViQ29yZSk6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6
cGx1Z2luV2lsbEhhbmRsZUxvYWRFcnJvcik6IFJldHVybmluZyBhcHByb3ByaWF0ZSBlcnJvciB0
eXBlLgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OnNob3VsZEZhbGxC
YWNrKTogRmFsbGluZyBiYWNrIGFzIHdlbGwgZm9yIG1lZGlhIGhhbmRsZWQgYnkgbWVkaWEgcGxh
eWVyLgotCi0yMDEyLTA0LTA0ICBHcnplZ29yeiBDemFqa293c2tpICA8Zy5jemFqa293c2tpQHNh
bXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxdIENoYW5nZSBld2tfc2V0dGluZ3NfaWNvbl9kYXRh
YmFzZV9pY29uX29iamVjdF9hZGQgdG8gcHJvcGVyIEFQSSBuYW1lLgotICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODI0MzgKLQotICAgICAgICBSZXZpZXdl
ZCBieSBBbmRyZWFzIEtsaW5nLgotCi0gICAgICAgIFRoZSBwdXJwb3NlIG9mIGV3a19zZXR0aW5n
c19pY29uX2RhdGFiYXNlX2ljb25fb2JqZWN0X2FkZCBpcyB0byBnZXQgaWNvbgotICAgICAgICBm
b3IgdGhlIGdpdmVuIFVSTC4gVGhpcyBmdW5jdGlvbiBkb2Vzbid0IGFkZCBhbnl0aGluZyB0byBk
YXRhYmFzZS4KLSAgICAgICAgRG9jdW1lbnRhdGlvbiBhbmQgQVBJIG5hbWUgYXJlIGFkanVzdGVk
LgotCi0gICAgICAgICogZXdrL2V3a19zZXR0aW5ncy5jcHA6Ci0gICAgICAgIChld2tfc2V0dGlu
Z3NfaWNvbl9kYXRhYmFzZV9pY29uX29iamVjdF9nZXQpOgotICAgICAgICAqIGV3ay9ld2tfc2V0
dGluZ3MuaDoKLQotMjAxMi0wNC0wMyAgU3VkYXJzYW5hIE5hZ2luZW5pICA8c3VkYXJzYW5hLm5h
Z2luZW5pQGxpbnV4LmludGVsLmNvbT4KLQotICAgICAgICBbRUZMXSBEUlQgc3VwcG9ydCBmb3Ig
c2V0SW50ZXJhY3RpdmVGb3JtVmFsaWRhdGlvbkVuYWJsZWQKLSAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgyMDUwCi0KLSAgICAgICAgQWRkIGEgc2V0dGlu
ZyBzZXRJbnRlcmFjdGl2ZUZvcm1WYWxpZGF0aW9uRW5hYmxlZCB0byBFRkwncwotICAgICAgICBE
dW1wUmVuZGVyVHJlZVN1cHBvcnQuCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21l
cy4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5j
cHA6Ci0gICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OnNldEludGVyYWN0aXZlRm9y
bVZhbGlkYXRpb25FbmFibGVkKToKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVy
VHJlZVN1cHBvcnRFZmwuaDoKLQotMjAxMi0wNC0wMyAgQ2hyaXN0b3BoZSBEdW1leiAgPGNocmlz
dG9waGUuZHVtZXpAaW50ZWwuY29tPgotCi0gICAgICAgIFtFRkxdIExheW91dFRlc3RDb250cm9s
bGVyIG5lZWRzIGltcGxlbWVudGF0aW9uIG9mIHNldERlZmVyc0xvYWRpbmcKLSAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgyODkwCi0KLSAgICAgICAgUmV2
aWV3ZWQgYnkgUGhpbGlwcGUgTm9ybWFuZC4KLQotICAgICAgICBJbXBsZW1lbnQgc2V0RGVmZXJz
TG9hZGluZygpIGluIEVGTCdzIExheW91dFRlc3RDb250cm9sbGVyIHNvIHRoYXQgdGhlCi0gICAg
ICAgIGNvcnJlc3BvbmRpbmcgdGVzdCBjYXNlIGNhbiBiZSByZW1vdmVkIGZyb20gdGhlIHNraXAg
bGlzdC4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVm
bC5jcHA6Ci0gICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OnNldERlZmVyc0xvYWRp
bmcpOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5o
OgotCi0yMDEyLTA0LTAzICBBbGV4YW5kZXIgU2hhbGFtb3YgIDxhbGV4YW5kZXIuc2hhbGFtb3ZA
aW50ZWwuY29tPgotCi0gICAgICAgIFtFRkxdIExheW91dFRlc3RDb250cm9sbGVyIG5lZWRzIGlt
cGxlbWVudGF0aW9uIG9mIHBhZ2VTaXplQW5kTWFyZ2luc0luUGl4ZWxzCi0gICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjU4OQotCi0gICAgICAgIEFkZCBt
aXNzaW5nIGltcGxlbWVudGF0aW9uIGZvciBwYWdlU2l6ZUFuZE1hcmdpbnNJblBpeGVscyB0byBF
RkwncwotICAgICAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnQuCi0KLSAgICAgICAgUmV2aWV3ZWQg
YnkgUGhpbGlwcGUgTm9ybWFuZC4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5k
ZXJUcmVlU3VwcG9ydEVmbC5jcHA6Ci0gICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6
OnBhZ2VTaXplQW5kTWFyZ2luc0luUGl4ZWxzKToKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9E
dW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuaDoKLQotMjAxMi0wNC0wMiAgQWxleGFuZGVyIFNoYWxh
bW92ICA8YWxleGFuZGVyLnNoYWxhbW92QGludGVsLmNvbT4KLQotICAgICAgICBbRUZMXSBMYXlv
dXRUZXN0Q29udHJvbGxlciBuZWVkcyBpbXBsZW1lbnRhdGlvbiBvZiBpc1BhZ2VCb3hWaXNpYmxl
Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjU5MQot
Ci0gICAgICAgIEFkZCBtaXNzaW5nIGltcGxlbWVudGF0aW9uIGZvciBpc1BhZ2VCb3hWaXNpYmxl
IHRvIEVGTCdzCi0gICAgICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydC4KLQotICAgICAgICBSZXZp
ZXdlZCBieSBIYWppbWUgTW9yaXRhLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJl
bmRlclRyZWVTdXBwb3J0RWZsLmNwcDoKLSAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEVm
bDo6aXNQYWdlQm94VmlzaWJsZSk6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRl
clRyZWVTdXBwb3J0RWZsLmg6Ci0KLTIwMTItMDQtMDEgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5n
LmtpbUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBTdXBwb3J0IHRoZSBOZXR3b3JrIEluZm9ybWF0
aW9uIEFQSQotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NzM1MjgKLQotICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgotCi0gICAgICAgIEFkZCBO
ZXR3b3JrSW5mb0NsaWVudEVmbCB0byBzdXBwb3J0IG5ldHdvcmsgaW5mb3JtYXRpb24gQVBJLiBI
b3dldmVyLAotICAgICAgICBmdW5jdGlvbnMgYXJlIG5vdCBpbXBsZW1lbnRlZCB5ZXQuCi0KLSAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9OZXR3b3JrSW5mb0NsaWVudEVmbC5jcHA6IEFkZGVkLgot
ICAgICAgICAoV2ViQ29yZTo6TmV0d29ya0luZm9DbGllbnRFZmw6Ok5ldHdvcmtJbmZvQ2xpZW50
RWZsKToKLSAgICAgICAgKFdlYkNvcmUpOgotICAgICAgICAoV2ViQ29yZTo6TmV0d29ya0luZm9D
bGllbnRFZmw6On5OZXR3b3JrSW5mb0NsaWVudEVmbCk6Ci0gICAgICAgIChXZWJDb3JlOjpOZXR3
b3JrSW5mb0NsaWVudEVmbDo6c3RhcnRVcGRhdGluZyk6Ci0gICAgICAgIChXZWJDb3JlOjpOZXR3
b3JrSW5mb0NsaWVudEVmbDo6c3RvcFVwZGF0aW5nKToKLSAgICAgICAgKFdlYkNvcmU6Ok5ldHdv
cmtJbmZvQ2xpZW50RWZsOjpiYW5kd2lkdGgpOgotICAgICAgICAoV2ViQ29yZTo6TmV0d29ya0lu
Zm9DbGllbnRFZmw6Om1ldGVyZWQpOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L05ldHdvcmtJ
bmZvQ2xpZW50RWZsLmg6IEFkZGVkLgotICAgICAgICAoTmV0d29ya0luZm9DbGllbnRFZmwpOgot
ICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChfRXdrX1ZpZXdfUHJpdmF0ZV9E
YXRhKToKLSAgICAgICAgKF9ld2tfdmlld19wcml2X25ldyk6Ci0KLTIwMTItMDMtMzAgIFBhdHJp
Y2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdlYmtpdC5vcmc+Ci0KLSAgICAgICAgW0VGTF0gQ29ycmVj
dCA8d3RmLyouaD4gaW5jbHVkZSBwYXRocy4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTgyNzQxCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBL
bGluZy4KLQotICAgICAgICBNb2RpZnkgdGhlICNpbmNsdWRlIGRlY2xhcmF0aW9ucyBmb3Igc2V2
ZXJhbCBFRkwtcmVsYXRlZCBmaWxlcwotICAgICAgICBzbyB0aGF0IHRoZSB3dGYgdHlwZXMgYXJl
IGluY2x1ZGVkIHVzaW5nIHRoZSBmdWxsIHBhdGguCi0KLSAgICAgICAgKiBld2svZXdrX2ZyYW1l
LmNwcDoKLSAgICAgICAgKiBld2svZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUuY3BwOgotICAgICAg
ICAoX0V3a19UaWxlZF9CYWNraW5nX1N0b3JlX0l0ZW0pOgotICAgICAgICAqIGV3ay9ld2tfdGls
ZWRfbWF0cml4LmNwcDoKLQotMjAxMi0wMy0zMCAgSmVzdXMgU2FuY2hlei1QYWxlbmNpYSAgPGpl
c3VzLnBhbGVuY2lhQG9wZW5ib3NzYS5vcmc+Ci0KLSAgICAgICAgQWRkIGEgInByZXZpZXciIHN0
YXRlIHRvIFBhZ2UgVmlzaWJpbGl0eSBBUEkgaW1wbGVtZW50YXRpb24KLSAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxMzU1Ci0KLSAgICAgICAgUmV2aWV3
ZWQgYnkgQWRhbSBCYXJ0aC4KLQotICAgICAgICBVcGRhdGluZyB0aGUgUGFnZSBWaXNpYmlsaXR5
IEFQSSBpbXBsZW1lbnRhdGlvbiB0byB0aGUgY3VycmVudCBzcGVjIHZlcnNpb24uCi0KLSAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcDoKLSAgICAgICAgKiBl
d2svZXdrX3ZpZXcuaDoKLQotMjAxMi0wMy0yOCAgTmF0ZSBDaGFwaW4gIDxqYXBoZXRAY2hyb21p
dW0ub3JnPgotCi0gICAgICAgIFJlbW92ZSBkaXNwYXRjaERpZExvYWRNYWluUmVzb3VyY2UgY2Fs
bGJhY2ssIHNpbmNlIG5vCi0gICAgICAgIHBvcnQgaW1wbGVtZW50cyBpdC4KLSAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgyNTM5Ci0KLSAgICAgICAgUmV2
aWV3ZWQgYnkgQWxleGV5IFByb3NrdXJ5YWtvdi4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdlYkNvcmUpOgotICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmg6Ci0gICAgICAgIChGcmFtZUxv
YWRlckNsaWVudEVmbCk6Ci0KLTIwMTItMDMtMjcgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dh
cmNpYUBpZ2FsaWEuY29tPgotCi0gICAgICAgIFtTT1VQXSBJbXBsZW1lbnQgbWlzc2luZyBtZXRo
b2RzIGluIENvb2tpZUphclNvdXAKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTgyMDgyCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgTWFydGluIFJvYmluc29u
LgotCi0gICAgICAgICogZXdrL2V3a19jb29raWVzLmNwcDoKLSAgICAgICAgKGV3a19jb29raWVz
X2NsZWFyKTogVXNlIHNvdXBDb29raWVKYXIoKSBpbnN0ZWFkIG9mCi0gICAgICAgIGRlZmF1bHRD
b29raWVKYXIoKS4KLSAgICAgICAgKGV3a19jb29raWVzX2dldF9hbGwpOiBEaXR0by4KLSAgICAg
ICAgKGV3a19jb29raWVzX2Nvb2tpZV9kZWwpOiBEaXR0by4KLSAgICAgICAgKGV3a19jb29raWVz
X3BvbGljeV9zZXQpOiBEaXR0by4KLSAgICAgICAgKGV3a19jb29raWVzX3BvbGljeV9nZXQpOiBE
aXR0by4KLQotMjAxMi0wMy0yMyAgR3J6ZWdvcnogQ3phamtvd3NraSAgPGcuY3phamtvd3NraUBz
YW1zdW5nLmNvbT4KLQotICAgICAgICBbRUZMXVtEUlRdIEltcGxlbWVudCBMYXlvdXRUZXN0Q29u
dHJvbGxlcidzIG1ldGhvZHMgcmVsYXRlZCB3aXRoIGVkaXRpbmcuCi0gICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDEzNgotCi0gICAgICAgIFJldmlld2Vk
IGJ5IFJ5b3N1a2UgTml3YS4KLQotICAgICAgICBJbXBsZW1lbnRzIER1bXBSZW5kZXJUcmVlU3Vw
cG9ydEVmbCdzIGFuZCBFZGl0b3JDbGllbnRFZmwncyBtZXRob2RzIHJlbGF0ZWQgd2l0aCBlZGl0
aW5nLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZs
LmNwcDoKLSAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6c2V0U21hcnRJbnNlcnRE
ZWxldGVFbmFibGVkKTogTmV3IGZ1bmN0aW9uLgotICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBw
b3J0RWZsOjpzZXRTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKTogTmV3IGZ1bmN0aW9u
LgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5oOgot
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChX
ZWJDb3JlOjpFZGl0b3JDbGllbnRFZmw6OnNldFNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCk6IE5l
dyBmdW5jdGlvbi4KLSAgICAgICAgKFdlYkNvcmUpOgotICAgICAgICAoV2ViQ29yZTo6RWRpdG9y
Q2xpZW50RWZsOjpzbWFydEluc2VydERlbGV0ZUVuYWJsZWQpOiBBZGQgaW1wbGVtZW50YXRpb24u
Ci0gICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRFZmw6OnNldFNlbGVjdFRyYWlsaW5nV2hp
dGVzcGFjZUVuYWJsZWQpOiBOZXcgZnVuY3Rpb24uCi0gICAgICAgIChXZWJDb3JlOjpFZGl0b3JD
bGllbnRFZmw6OmlzU2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCk6IEFkZCBpbXBsZW1l
bnRhdGlvbi4KLSAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEVmbDo6RWRpdG9yQ2xpZW50
RWZsKToKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuaDoKLSAgICAg
ICAgKEVkaXRvckNsaWVudEVmbCk6Ci0KLTIwMTItMDMtMjIgIFN1ZGFyc2FuYSBOYWdpbmVuaSAg
PHN1ZGFyc2FuYS5uYWdpbmVuaUBsaW51eC5pbnRlbC5jb20+Ci0KLSAgICAgICAgW0VGTF0gW0RS
VF0gSW1wbGVtZW50IExheW91dFRlc3RDb250cm9sbGVyOjptYXJrZXJUZXh0Rm9yTGlzdEl0ZW0o
KQotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODE1MTIK
LQotICAgICAgICBBZGQgbWlzc2luZyBpbXBsZW1lbnRhdGlvbiBtYXJrZXJUZXh0Rm9yTGlzdEl0
ZW0gdG8gRUZMJ3MgCi0gICAgICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydC4KLQotICAgICAgICBS
ZXZpZXdlZCBieSBBbnRvbmlvIEdvbWVzLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVt
cFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcDoKLSAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9y
dEVmbDo6bWFya2VyVGV4dEZvckxpc3RJdGVtKToKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9E
dW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuaDoKLQotMjAxMi0wMy0yMiAgU3VkYXJzYW5hIE5hZ2lu
ZW5pICA8c3VkYXJzYW5hLm5hZ2luZW5pQGxpbnV4LmludGVsLmNvbT4KLQotICAgICAgICBbRUZM
XSBJbXBsZW1lbnQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEVkaXRpbmdCZWhhdmlvcgotICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODExMjQKLQotICAg
ICAgICBBZGQgbWlzc2luZyBpbXBsZW1lbnRhdGlvbiBzZXRFZGl0aW5nQmVoYXZpb3IgdG8gRUZM
J3MgCi0gICAgICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydC4gVGhpcyBzZXR0aW5nIGNvbnRyb2xz
IHZhcmlvdXMgZWRpdGluZwotICAgICAgICBiZWhhdmlvcnMgdGhhdCBkaWZmZXIgYmV0d2VlbiBw
bGF0Zm9ybXMuCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgTWFydGluIFJvYmluc29uLgotCi0gICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcDoKLSAgICAg
ICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6c2V0RWRpdGluZ0JlaGF2aW9yKToKLSAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuaDoKLQotMjAxMi0w
My0yMiAgS3J6eXN6dG9mIEN6ZWNoICA8ay5jemVjaEBzYW1zdW5nLmNvbT4KLQotICAgICAgICBb
RUZMXSBDaGFuZ2UgcmV0dXJuZWQgdmlldyBtb2RlIGluIGNhc2Ugb2YgTlVMTCBvZiBld2tWaWV3
LgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODE2MzYK
LQotICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KLQotICAgICAgICBGdW5jdGlvbiBl
d2tfdmlld19tb2RlX2dldCByZXR1cm5zIHdyb25nIHZpZXcgbW9kZSBpbiBjYXNlIG9mIE5VTEwg
b2YgZXdrVmlldy4KLQotICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChfRXdr
X1ZpZXdfUHJpdmF0ZV9EYXRhKToKLSAgICAgICAgKGV3a192aWV3X21vZGVfZ2V0KToKLQotMjAx
Mi0wMy0yMiAgSHlvd29uIEtpbSAgPGh3MTAwOC5raW1Ac2Ftc3VuZy5jb20+Ci0KLSAgICAgICAg
W0VGTF0gQWRkIFBhZ2VDbGllbnRFZmwgdG8gV2ViQ29yZVN1cHBvcnQuCi0gICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDc0OAotCi0gICAgICAgIFJldmll
d2VkIGJ5IE5vYW0gUm9zZW50aGFsLgotCi0gICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBQYWdlQ2xp
ZW50RWZsIGZvciBpbXBsZW1lbnRhaW9uIG9mIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nLgotCi0g
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdl
YkNvcmU6OkNocm9tZUNsaWVudEVmbDo6cGxhdGZvcm1QYWdlQ2xpZW50KToKLSAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9QYWdlQ2xpZW50RWZsLmNwcDogQWRkZWQuCi0gICAgICAgIChXZWJDb3Jl
KToKLSAgICAgICAgKFdlYkNvcmU6OlBhZ2VDbGllbnRFZmw6OlBhZ2VDbGllbnRFZmwpOgotICAg
ICAgICAoV2ViQ29yZTo6UGFnZUNsaWVudEVmbDo6flBhZ2VDbGllbnRFZmwpOgotICAgICAgICAo
V2ViQ29yZTo6UGFnZUNsaWVudEVmbDo6Y3JlYXRlRXZhc09iamVjdEZvckFjY2VsZXJhdGVkQ29t
cG9zaXRpbmcpOgotICAgICAgICBKdXN0IGNhbGwgZXdrX3ZpZXdfYWNjZWxlcmF0ZWRfY29tcG9z
aXRpbmdfb2JqZWN0X2NyZWF0ZSgpLgotICAgICAgICAoV2ViQ29yZTo6UGFnZUNsaWVudEVmbDo6
YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQpOgotICAgICAgICBKdXN0IGNhbGwgZXdrX3Zp
ZXdfYWNjZWxlcmF0ZWRfY29tcG9zaXRpbmdfY29udGV4dF9nZXQoKS4KLSAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9QYWdlQ2xpZW50RWZsLmg6IEFkZGVkLgotICAgICAgICAoV2ViQ29yZSk6Ci0g
ICAgICAgIChQYWdlQ2xpZW50RWZsKToKLSAgICAgICAgKFdlYkNvcmU6OlBhZ2VDbGllbnRFZmw6
OnZpZXcpOiBSZXR1cm4gZXdrVmlldy4KLSAgICAgICAgKiBld2svZXdrX3ByaXZhdGUuaDoKLSAg
ICAgICAgKFdlYkNvcmUpOgotICAgICAgICAoRVdLUHJpdmF0ZSk6Ci0gICAgICAgICogZXdrL2V3
a192aWV3LmNwcDoKLSAgICAgICAgKF9Fd2tfVmlld19Qcml2YXRlX0RhdGEpOiBBZGQgT3duUHRy
PFBhZ2VDbGllbnRFZmw+LgotICAgICAgICAoX2V3a192aWV3X3ByaXZfbmV3KTogQ3JlYXRlIGEg
bmV3IFBhZ2VDbGllbnRFZmwuCi0gICAgICAgIChld2tfdmlld19hY2NlbGVyYXRlZF9jb21wb3Np
dGluZ19vYmplY3RfY3JlYXRlKTogTm90IGltcGxlbWVudGVkLgotICAgICAgICAoZXdrX3ZpZXdf
YWNjZWxlcmF0ZWRfY29tcG9zaXRpbmdfY29udGV4dF9nZXQpOiBOb3QgaW1wbGVtZW50ZWQuCi0g
ICAgICAgIChFV0tQcml2YXRlOjpjb3JlUGFnZUNsaWVudCk6IFJldHVybiB0aGUgUGFnZUNsaWVu
dEVmbCBwb2ludGVyLgotICAgICAgICAoRVdLUHJpdmF0ZSk6Ci0KLTIwMTItMDMtMTkgIEFkYW0g
QmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KLQotICAgICAgICBSZW1vdmUgc3VwcG9ydCBmb3Ig
Im1hZ2ljIiBpZnJhbWUKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTgxNTkwCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCi0KLSAgICAg
ICAgUmVtb3ZlIEZyYW1lTG9hZGVyQ2xpZW50IG1ldGhvZHMgdGhhdCBubyBsb25nZXIgZXhpc3Qu
Ci0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHA6Ci0g
ICAgICAgIChXZWJDb3JlKToKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudEVmbC5oOgotICAgICAgICAoRnJhbWVMb2FkZXJDbGllbnRFZmwpOgotCi0yMDEyLTAzLTE2
ICBLaWhvbmcgS3dvbiAgPGtpaG9uZy5rd29uQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFN1cHBv
cnQgZm9yIEJhdHRlcnkgU3RhdHVzIEFQSQotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NjI2OTgKLQotICAgICAgICBBZGQgQmF0dGVyeUNsaWVudEVmbCBj
bGFzcyBpbXBsZW1lbnRhdGlvbiBmb3IgdGhlIGxheW91dCB0ZXN0cyBub3cuCi0gICAgICAgIEJh
dHRlcnlDbGllbnRFZmwgY2xhc3MgaXMgbm90IGZ1bGx5IGltcGxlbWVudGVkIGluIHRoaXMgcGF0
Y2guCi0gICAgICAgIChJdCB3aWxsIGJlIGNvbXBsZXRlZCBieSBvdGhlciBwYXRjaCBhcyBuZWNl
c3NhcnkgaW4gdGhlIEVmbCBwb3J0LikKLSAgICAgICAgaHR0cDovL3d3dy53My5vcmcvVFIvYmF0
dGVyeS1zdGF0dXMvCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KLQotICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0JhdHRlcnlDbGllbnRFZmwuY3BwOiBBZGRlZC4KLSAgICAgICAg
KFdlYkNvcmUpOgotICAgICAgICAoV2ViQ29yZTo6QmF0dGVyeUNsaWVudEVmbDo6QmF0dGVyeUNs
aWVudEVmbCk6Ci0gICAgICAgIChXZWJDb3JlOjpCYXR0ZXJ5Q2xpZW50RWZsOjpzZXRDb250cm9s
bGVyKToKLSAgICAgICAgKFdlYkNvcmU6OkJhdHRlcnlDbGllbnRFZmw6OnN0YXJ0VXBkYXRpbmcp
OgotICAgICAgICAoV2ViQ29yZTo6QmF0dGVyeUNsaWVudEVmbDo6c3RvcFVwZGF0aW5nKToKLSAg
ICAgICAgKFdlYkNvcmU6OkJhdHRlcnlDbGllbnRFZmw6OmJhdHRlcnlDb250cm9sbGVyRGVzdHJv
eWVkKToKLSAgICAgICAgKFdlYkNvcmU6OkJhdHRlcnlDbGllbnRFZmw6OnNldEJhdHRlcnlTdGF0
dXMpOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0JhdHRlcnlDbGllbnRFZmwuaDogQWRkZWQu
Ci0gICAgICAgIChXZWJDb3JlKToKLSAgICAgICAgKEJhdHRlcnlDbGllbnRFZmwpOgotICAgICAg
ICAoV2ViQ29yZTo6QmF0dGVyeUNsaWVudEVmbDo6fkJhdHRlcnlDbGllbnRFZmwpOgotICAgICAg
ICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKToK
LSAgICAgICAgKF9ld2tfdmlld19wcml2X25ldyk6Ci0KLTIwMTItMDMtMTMgIEpvbiBMZWUgIDxq
b25sZWVAYXBwbGUuY29tPgotCi0gICAgICAgIFNlcGFyYXRlIE5PVElGSUNBVElPTlMgYW5kIExF
R0FDWV9OT1RJRklDQVRJT05TCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD04MDkyMgotICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTEwMzUwODI+Ci0KLSAg
ICAgICAgUmV2aWV3ZWQgYnkgSmlhbiBMaS4KLQotICAgICAgICBZb3UgY2FuIGluY2x1ZGUgZWl0
aGVyIE5PVElGSUNBVElPTlMgb3IgTEVHQUNZX05PVElGSUNBVElPTlMgYW5kIGhhdmUgYSBjb21w
bGV0ZSBBUEkuCi0gICAgICAgIExFR0FDWV9OT1RJRklDQVRJT05TIHNob3VsZCBjb3ZlciBhbGwg
b2YgdGhlIHByZXZpb3VzIGZ1bmN0aW9uYWxpdHksIGFuZCBOT1RJRklDQVRJT05TIHdpbGwgY292
ZXIgdGhlCi0gICAgICAgIG5ldyBBUEkuIFRoZXJlZm9yZSwgQVBJcyB0aGF0IGFyZSBjb21tb24g
YmV0d2VlbiB0aGUgdHdvIHdpbGwgaGF2ZToKLSAgICAgICAgI2lmIEVOQUJMRShOT1RJRklDQVRJ
T05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCi0KLSAgICAgICAgVGhpcyBwYXRj
aCBpbml0aWFsbHkgc2V0cyBib3RoIHRvIGJlIGV4YWN0bHkgdGhlIHNhbWUuIEFzIG90aGVyIGJ1
Z3Mgd2l0aCBwYXRjaGVzIGJlZ2luIHRvIG1pZ3JhdGUgdG8KLSAgICAgICAgdGhlIG5ldyBBUEks
IHRoZSBkZWZpbmVzIHdpbGwgYmVnaW4gdG8gc3BsaXQuIFRoaXMgYWxsb3dzIHBvcnRzIHRvIGRl
Y2lkZSB3aGljaCBzZXQgb2YgQVBJcyB0byBpbmNsdWRlLgotCi0gICAgICAgIFVwZGF0ZSBldmVy
eXRoaW5nIHRvIGJlICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9O
T1RJRklDQVRJT05TKQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5j
cHA6Ci0gICAgICAgIChXZWJDb3JlKToKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVD
bGllbnRFZmwuaDoKLSAgICAgICAgKENocm9tZUNsaWVudEVmbCk6Ci0gICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwuaDoKLQotMjAxMi0w
My0xMyAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPiAmJiBCZW5qYW1pbiBQb3VsYWlu
ICA8YnBvdWxhaW5AYXBwbGUuY29tPgotCi0gICAgICAgIEFsd2F5cyBlbmFibGUgRU5BQkxFKENM
SUVOVF9CQVNFRF9HRU9MT0NBVElPTikKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTc4ODUzCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4K
LQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHA6Ci0gICAgICAg
IChXZWJDb3JlKToKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuaDoK
LSAgICAgICAgKENocm9tZUNsaWVudEVmbCk6Ci0KLTIwMTItMDMtMTMgIENoYW5nU2VvayBPaCAg
PHNoaXZhbWlkb3dAZ21haWwuY29tPgotCi0gICAgICAgIFtFRkxdIFtEUlRdIEltcGxlbWVudCBz
Y2hlZHVsZUFzeW5jaHJvbm91c0tleURvd24uCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03OTYwMQotCi0gICAgICAgIFJldmlld2VkIGJ5IEd1c3Rhdm8g
Tm9yb25oYSBTaWx2YS4KLQotICAgICAgICBBZGRlZCBhIG5ldyBBUEkgdG8gZGVsaXZlciBhbGwg
bXV0YXRpb25zIGV4cGxpY2l0bHkuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVu
ZGVyVHJlZVN1cHBvcnRFZmwuY3BwOgotICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZs
OjpkZWxpdmVyQWxsTXV0YXRpb25zSWZOZWNlc3NhcnkpOgotICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5oOgotCi0yMDEyLTAzLTEzICBKdW5nSmlrIExl
ZSAgPGp1bmdqaWsubGVlQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxdIFJlbW92ZSBhIGR1
cGxpY2F0ZSBhbGxvY2F0aW9uIG9mIG1hdHJpeCBlbnRyeS4KLSAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5MzYyCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkg
Wm9sdGFuIEhlcmN6ZWcuCi0KLSAgICAgICAgQSBtYXRyaXggZW50cnkgaXMgY3JlYXRlZCB3aGVu
IGNhbGxpbmcgZXdrX21hdHJpeF9uZXcuCi0gICAgICAgIEFub3RoZXIgbWF0cml4IGlzIGNyZWF0
ZWQgaW5zaWRlIGV3a190aWxlX21hdHJpeF96b29tX2xldmVsX3NldC4KLSAgICAgICAgVGhpcyBw
YXRjaCBpcyBmb3IgZ2V0dGluZyByaWQgb2YgYSBkdXBsaWNhdGVkIGNyZWF0aW9uIG9mIHRoZSBt
YXRyaXguCi0KLSAgICAgICAgKiBld2svZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUuY3BwOgotICAg
ICAgICAoX0V3a19UaWxlZF9CYWNraW5nX1N0b3JlX0l0ZW0pOgotICAgICAgICAoX2V3a190aWxl
ZF9iYWNraW5nX3N0b3JlX3pvb21fc2V0X2ludGVybmFsKToKLSAgICAgICAgKiBld2svZXdrX3Rp
bGVkX21hdHJpeC5jcHA6Ci0gICAgICAgIChld2tfdGlsZV9tYXRyaXhfbmV3KToKLSAgICAgICAg
KGV3a190aWxlX21hdHJpeF96b29tX2xldmVsX3NldCk6Ci0gICAgICAgIChld2tfdGlsZV9tYXRy
aXhfZW50cnlfbmV3KToKLSAgICAgICAgKGV3a190aWxlX21hdHJpeF9zaXplX2dldCk6Ci0gICAg
ICAgICogZXdrL2V3a190aWxlZF9tYXRyaXguaDoKLQotMjAxMi0wMy0wOSAgSm9uIExlZSAgPGpv
bmxlZUBhcHBsZS5jb20+Ci0KLSAgICAgICAgUmVuYW1lIE5vdGlmaWNhdGlvblByZXNlbnRlciB0
byBOb3RpZmljYXRpb25DbGllbnQKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTgwNDg4Ci0gICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMDk2NTU1OD4KLQot
ICAgICAgICBSZXZpZXdlZCBieSBLZW50YXJvIEhhcmEuCi0KLSAgICAgICAgUmVmYWN0b3IgdG8g
dXNlIHJlbmFtZWQgV2ViQ29yZTo6Tm90aWZpY2F0aW9uQ2xpZW50LgotICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpDaHJvbWVD
bGllbnRFZmw6Om5vdGlmaWNhdGlvblByZXNlbnRlcik6Ci0gICAgICAgICogV2ViQ29yZVN1cHBv
cnQvQ2hyb21lQ2xpZW50RWZsLmg6Ci0gICAgICAgIChDaHJvbWVDbGllbnRFZmwpOgotCi0yMDEy
LTAzLTA4ICBIeW93b24gS2ltICA8aHcxMDA4LmtpbUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBb
VGV4bWFwXVtFRkxdIEltcGxlbWVudGF0aW9uIG9mIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250
ZXh0IGZvciBFRkwgcG9ydAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9ODAyNjYKLQotICAgICAgICBSZXZpZXdlZCBieSBOb2FtIFJvc2VudGhhbC4KLQot
ICAgICAgICBUaGlzIHBhdGNoIGFkZHMgRUZMJ3MgaW1wbGVtZW50YXRpb24gb2YgQWNjZWxlcmF0
ZWRDb21wb3NpdGluZ0NvbnRleHQgdG8gV2ViQ29yZVN1cHBvcnQuCi0KLSAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dEVmbC5jcHA6IEFkZGVkLgot
ICAgICAgICAoV2ViQ29yZSk6Ci0gICAgICAgIChXZWJDb3JlOjpBY2NlbGVyYXRlZENvbXBvc2l0
aW5nQ29udGV4dDo6Y3JlYXRlKToKLSAgICAgICAgKFdlYkNvcmU6OkFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdDb250ZXh0OjpBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCk6Ci0gICAgICAgIChX
ZWJDb3JlOjpBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6fkFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdDb250ZXh0KToKLSAgICAgICAgKFdlYkNvcmU6OkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdD
b250ZXh0Ojppbml0aWFsaXplKToKLSAgICAgICAgKFdlYkNvcmU6OkFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdDb250ZXh0OjpzeW5jTGF5ZXJzTm93KToKLSAgICAgICAgKFdlYkNvcmU6OkFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdDb250ZXh0OjpyZW5kZXJMYXllcnMpOgotICAgICAgICAoV2ViQ29yZTo6
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OmF0dGFjaFJvb3RHcmFwaGljc0xheWVyKToK
LSAgICAgICAgKFdlYkNvcmU6OkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0Ojpjb250ZXh0
KToKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4
dEVmbC5oOiBBZGRlZC4KLSAgICAgICAgKFdlYkNvcmUpOgotICAgICAgICAoQWNjZWxlcmF0ZWRD
b21wb3NpdGluZ0NvbnRleHQpOgotCi0yMDEyLTAzLTAyICBHcnplZ29yeiBDemFqa293c2tpICA8
Zy5jemFqa293c2tpQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxdIEVuYWJsaW5nICdJbnNw
ZWN0IEVsZW1lbnQnIGluIEV3a19Db250ZXh0X01lbnVfQWN0aW9uLgotICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzk2NDYKLQotICAgICAgICBSZXZpZXdl
ZCBieSBBbmRyZWFzIEtsaW5nLgotCi0gICAgICAgIElOU1BFQ1RPUiBmZWF0dXJlIGlzIGFscmVh
ZHkgZW5hYmxlZCBmb3IgV2ViS2l0LUVmbCBwb3J0IChPcHRpb25zRWZsLmNtYWtlKS4KLSAgICAg
ICAgQXMgYSByZXN1bHQgV2ViQ29yZSdzIENvbnRleHRNZW51QWN0aW9uIGNvbnRhaW5zIENvbnRl
eHRNZW51SXRlbVRhZ0luc3BlY3RFbGVtZW50Ci0gICAgICAgIGFuZCBlbnVtcyBvcmRlciBoYXMg
YmVlbiBjaGFuZ2VkLiBXZWJLaXQtRWZsIGhhcyB0byBzeW5jaHJvbml6ZSBDb250ZXh0TWVudUFj
dGlvbgotICAgICAgICB3aXRoIEV3a19Db250ZXh0X01lbnVfQWN0aW9uLgotICAgICAgICBUbyBh
dm9pZCBzaW1pbGFyIGNhc2UgaW4gdGhlIGZlYXR1cmUgSSBhZGRlZCBjaGVja3MgYmV0d2VlbiBX
ZWJDb3JlIGFuZAotICAgICAgICBXZWJLaXQtRUZMJ3MgZW51bXMgYnkgdXNpbmcgQ09NUElMRV9B
U1NFUlRfTUFUQ0hJTkdfRU5VTS4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Fzc2VydE1h
dGNoaW5nRW51bXMuY3BwOgotICAgICAgICAqIGV3ay9ld2tfY29udGV4dG1lbnUuaDoKLQotMjAx
Mi0wMi0yOSAgVG9tYXN6IE1vcmF3c2tpICA8dC5tb3Jhd3NraUBzYW1zdW5nLmNvbT4KLQotICAg
ICAgICBbRUZMXSBSZXBsYWNlIG1hbGxvYy9jYWxsb2MvZnJlZSB0byBuZXcvZGVsZXRlLgotICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4NDgKLQotICAg
ICAgICBSZXZpZXdlZCBieSBIYWppbWUgTW9yaXRhLgotCi0gICAgICAgIFJlcGxhY2VkIGFsbW9z
dCBhbGwgbWFsbG9jL2NhbGxvYy9mcmVlIHRvIG5ldy9kZWxldGUgb3BlcmF0b3IgYW5kIHdoZXJl
IGl0IHdhcyBwb3NzaWJsZSBzbWFydCBwb2ludGVycyB3ZXJlIGFsc28KLSAgICAgICAgdXNlZC4g
TGVmdCBmZXcgYyBtZW1vcnkgYWxsb2NhdGlvbiBieSBpbnRlbnRpb24gdG8gbm90IG1peCBjIGFu
ZCBjKysgbWVtb3J5IG1hbmFnbWVudC4gTGVmdCBtYWxsb2MgZm9yIEV3a19UaWxlCi0gICAgICAg
IG9iamVjdCBkdWUgdG8gY29uc3QgZmllbGRzIHByZXNlbnQgaW4gRXdrX3RpbGUgc3RydWN0dXJl
LgotCi0gICAgICAgICogZXdrL2V3a19hdXRoX3NvdXAuY3BwOgotICAgICAgICAqIGV3ay9ld2tf
Y29udGV4dG1lbnUuY3BwOgotICAgICAgICAoZXdrX2NvbnRleHRfbWVudV91bnJlZik6Ci0gICAg
ICAgIChld2tfY29udGV4dF9tZW51X2l0ZW1fbmV3KToKLSAgICAgICAgKGV3a19jb250ZXh0X21l
bnVfaXRlbV9mcmVlKToKLSAgICAgICAgKGV3a19jb250ZXh0X21lbnVfbmV3KToKLSAgICAgICAg
KiBld2svZXdrX2Nvb2tpZXMuY3BwOgotICAgICAgICAoZXdrX2Nvb2tpZXNfZ2V0X2FsbCk6Ci0g
ICAgICAgIChld2tfY29va2llc19jb29raWVfZnJlZSk6Ci0gICAgICAgICogZXdrL2V3a19mcmFt
ZS5jcHA6Ci0gICAgICAgIChld2tfZnJhbWVfaGl0X3Rlc3RfZnJlZSk6Ci0gICAgICAgIChld2tf
ZnJhbWVfaGl0X3Rlc3RfbmV3KToKLSAgICAgICAgKiBld2svZXdrX2hpc3RvcnkuY3BwOgotICAg
ICAgICAoZXdrX2hpc3RvcnlfaXRlbV9uZXdfZnJvbV9jb3JlKToKLSAgICAgICAgKF9ld2tfaGlz
dG9yeV9pdGVtX2ZyZWUpOgotICAgICAgICAoZXdrX2hpc3RvcnlfbmV3KToKLSAgICAgICAgKGV3
a19oaXN0b3J5X2ZyZWUpOgotICAgICAgICAqIGV3ay9ld2tfdGlsZWRfYmFja2luZ19zdG9yZS5j
cHA6Ci0gICAgICAgIChfRXdrX1RpbGVkX0JhY2tpbmdfU3RvcmVfSXRlbSk6Ci0gICAgICAgIChf
ZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcHJlX3JlbmRlcl9yZXF1ZXN0X2FkZCk6Ci0gICAgICAg
IChfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcHJlX3JlbmRlcl9yZXF1ZXN0X2RlbCk6Ci0gICAg
ICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcHJlX3JlbmRlcl9yZXF1ZXN0X2ZsdXNoKToK
LSAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVfcmVuZGVyX3JlcXVlc3RfY2xl
YXIpOgotICAgICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX2l0ZW1fYWRkKToKLSAgICAg
ICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9pdGVtX2RlbCk6Ci0gICAgICAgICogZXdrL2V3
a190aWxlZF9tYXRyaXguY3BwOgotICAgICAgICAoX2V3a190aWxlX21hdHJpeF90aWxlX2ZyZWUp
OgotICAgICAgICAoZXdrX3RpbGVfbWF0cml4X25ldyk6Ci0gICAgICAgIChld2tfdGlsZV9tYXRy
aXhfem9vbV9sZXZlbF9zZXQpOgotICAgICAgICAoZXdrX3RpbGVfbWF0cml4X2ludmFsaWRhdGUp
OgotICAgICAgICAoZXdrX3RpbGVfbWF0cml4X2ZyZWUpOgotICAgICAgICAqIGV3ay9ld2tfdGls
ZWRfbW9kZWwuY3BwOgotICAgICAgICAodGlsZV9hY2NvdW50KToKLSAgICAgICAgKGV3a190aWxl
X3VudXNlZF9jYWNoZV9uZXcpOgotICAgICAgICAoX2V3a190aWxlX3VudXNlZF9jYWNoZV9mcmVl
KToKLSAgICAgICAgKGV3a190aWxlX3VudXNlZF9jYWNoZV9jbGVhcik6Ci0gICAgICAgIChld2tf
dGlsZV91bnVzZWRfY2FjaGVfZmx1c2gpOgotICAgICAgICAoZXdrX3RpbGVfdW51c2VkX2NhY2hl
X3RpbGVfZ2V0KToKLSAgICAgICAgKGV3a190aWxlX3VudXNlZF9jYWNoZV90aWxlX3B1dCk6Ci0g
ICAgICAgICogZXdrL2V3a190aWxlZF9wcml2YXRlLmg6Ci0gICAgICAgICogZXdrL2V3a192aWV3
LmNwcDoKLSAgICAgICAgKF9Fd2tfVmlld19Qcml2YXRlX0RhdGEpOgotICAgICAgICAoX2V3a192
aWV3X2NvcmVfZnJhbWVfbmV3KToKLSAgICAgICAgKF9ld2tfdmlld19wcml2X25ldyk6Ci0gICAg
ICAgIChfZXdrX3ZpZXdfcHJpdl9kZWwpOgotICAgICAgICAoZXdrX3ZpZXdfY29yZV9wYWdlX2dl
dCk6Ci0gICAgICAgIChld2tfdmlld19wb3B1cF9uZXcpOgotICAgICAgICAoZXdrX3ZpZXdfcG9w
dXBfZGVzdHJveSk6Ci0gICAgICAgIChFV0tQcml2YXRlOjpjb3JlUGFnZSk6Ci0gICAgICAgICog
ZXdrL2V3a193aW5kb3dfZmVhdHVyZXMuY3BwOgotICAgICAgICAoZXdrX3dpbmRvd19mZWF0dXJl
c191bnJlZik6Ci0gICAgICAgIChld2tfd2luZG93X2ZlYXR1cmVzX25ld19mcm9tX2NvcmUpOgot
Ci0yMDEyLTAyLTI3ICBKdW5nSmlrIExlZSAgPGp1bmdqaWsubGVlQHNhbXN1bmcuY29tPgotCi0g
ICAgICAgIFtFRkxdIFBhaXJpbmcgdXAgYmV0d2VlbiBldmFzX29iamVjdF9pbWFnZV9kYXRhX2dl
dCBhbmQgZXZhc19vYmplY3RfaW1hZ2VfZGF0YV9zZXQuCi0gICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTAzMQotCi0gICAgICAgIFJldmlld2VkIGJ5IFpv
bHRhbiBIZXJjemVnLgotCi0gICAgICAgIC0gR2V0IHRoZSBwaXhlbCBkYXRhIHdoZW4gdGhlIGNh
aXJvIHN1cmZhY2UgaXMgY3JlYXRlZC4KLSAgICAgICAgLSBldmFzX29iamVjdF9pbWFnZV9kYXRh
X2dldCBpbmNyZWFzZXMgdGhlIHJlZmVyZW5jZSBjb3VudCBhbmQgcmV0dXJucyB0aGUgaW1hZ2Ug
YnVmZmVyIHBvaW50ZXIuCi0gICAgICAgIGV2YXNfb2JqZWN0X2ltYWdlX2RhdGFfc2V0IGRlY3Jl
YXNlcyB0aGUgcmVmZXJlbmNlIGNvdW50IGFuZCB3aGVuIHRoZSByZWYgY291bnQgYmVjb21lIHpl
cm8sCi0gICAgICAgIHRoZSBmdW5jdGlvbiByZWxlYXNlcyB0aGUgY2FjaGVkIGltYWdlIGluc2lk
ZSBldmFzIGVuZ2luZS4KLSAgICAgICAgV2Ugc2hvdWxkIG1ha2UgYSBwYWlyIGJldHdlZW4gZXZh
c19vYmplY3RfaW1hZ2VfZGF0YV9zZXQvZ2V0IHRvIHJldHVybiBldmFzIHJlc291cmNlLgotCi0g
ICAgICAgICogZXdrL2V3a190aWxlZF9iYWNraW5nX3N0b3JlLmg6Ci0gICAgICAgIChfRXdrX1Rp
bGUpOgotICAgICAgICAqIGV3ay9ld2tfdGlsZWRfbW9kZWwuY3BwOgotICAgICAgICAodGlsZV9h
Y2NvdW50KToKLSAgICAgICAgKGV3a190aWxlX25ldyk6Ci0gICAgICAgICogZXdrL2V3a192aWV3
X3RpbGVkLmNwcDoKLSAgICAgICAgKF9ld2tfdmlld190aWxlZF9yZW5kZXJfY2IpOgotCi0yMDEy
LTAyLTI2ICBIYWppbWUgTW9ycml0YSAgPG1vcnJpdGFAY2hyb21pdW0ub3JnPgotCi0gICAgICAg
IE1vdmUgQ2hyb21lQ2xpZW50OjpzaG93Q29udGV4dE1lbnUoKSB0byBDb250ZXh0TWVudUNsaWVu
dAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzk0MjcK
LQotICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgotCi0gICAgICAgICogV2ViQ29yZVN1
cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmg6Ci0gICAgICAgIChDaHJvbWVDbGllbnRFZmwpOgotCi0y
MDEyLTAyLTI0ICBHcnplZ29yeiBDemFqa293c2tpICA8Zy5jemFqa293c2tpQHNhbXN1bmcuY29t
PgotCi0gICAgICAgIFtFRkxdW0RSVF0gSW1wbGVtZW50IHNldFZhbHVlRm9yVXNlciBhbmQgc2V0
QXV0b2ZpbGxlZC4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTc5MjM3Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KLQotICAgICAg
ICBBZGRzIG1pc3NpbmcgaW1wbGVtZW50YXRpb24gc2V0VmFsdWVGb3JVc2VyIGFuZCBzZXRBdXRv
ZmlsbGVkIHRvIEVGTCdzIER1bXBSZW5kZXJUcmVlU3VwcG9ydC4KLQotICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHA6Ci0gICAgICAgIChEdW1wUmVu
ZGVyVHJlZVN1cHBvcnRFZmw6OnNldFZhbHVlRm9yVXNlcik6Ci0gICAgICAgIChEdW1wUmVuZGVy
VHJlZVN1cHBvcnRFZmw6OnNldEF1dG9maWxsZWQpOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5oOgotCi0yMDEyLTAyLTI0ICBTaGlueWEgS2F3YW5h
a2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4KLQotICAgICAgICBTcGVsbENoZWNrUmVxdWVzdCBu
ZWVkcyB0byBrbm93IHRoZSBjb250ZXh0IHdoZXJlIHRoZSBzcGVsbGNoZWNrIGhhcHBlbmVkLgot
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzkzMjAKLQot
ICAgICAgICBSZXZpZXdlZCBieSBIYWppbWUgTW9yaXRhLgotCi0gICAgICAgICogV2ViQ29yZVN1
cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmg6Ci0gICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRF
Zmw6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKToKLQotMjAxMi0wMi0yMSAgUnlvc3VrZSBOaXdh
ICA8cm5pd2FAd2Via2l0Lm9yZz4KLQotICAgICAgICBSZW1vdmUgdGhlIHJlbWFpbmluZyB1c2Vz
IG9mIENTU1N0eWxlRGVjbGFyYXRpb24gaW4gRWRpdG9yCi0gICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODkzOQotCi0gICAgICAgIFJldmlld2VkIGJ5IEVu
cmljYSBDYXN1Y2NpLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZs
LmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEVmbDo6c2hvdWxkQXBwbHlTdHls
ZSk6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmg6Ci0gICAgICAg
IChFZGl0b3JDbGllbnRFZmwpOgotCi0yMDEyLTAyLTIyICBSeW9zdWtlIE5pd2EgIDxybml3YUB3
ZWJraXQub3JnPgotCi0gICAgICAgIFJlbW92ZSB0aGUgcmVtYWluaW5nIHVzZXMgb2YgQ1NTU3R5
bGVEZWNsYXJhdGlvbiBpbiBFZGl0b3IKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTc4OTM5Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgRW5yaWNhIENhc3Vj
Y2kuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuY3BwOgotICAg
ICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50RWZsOjpzaG91bGRBcHBseVN0eWxlKToKLSAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuaDoKLSAgICAgICAgKEVkaXRvckNs
aWVudEVmbCk6Ci0KLTIwMTItMDItMjAgIEtpaG9uZyBLd29uICA8a2lob25nLmt3b25Ac2Ftc3Vu
Zy5jb20+Ci0KLSAgICAgICAgQWRkIGEgbmV3IEFQSSBmb3IgdGhlIFZpYnJhdGlvbiBBUEkoVzND
KS4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyMDEw
Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgSGFqaW1lIE1vcml0YS4KLQotICAgICAgICBJbXBsZW1l
bnRhdGlvbiBmb3IgdGhlIFZpYnJhdGlvbiBBUEkgZmVhdHVyZSB0byB0aGUgRUZMLXBvcnQgbGF5
ZXIuCi0gICAgICAgIGh0dHA6Ly9kZXYudzMub3JnLzIwMDkvZGFwL3ZpYnJhdGlvbi8KLSAgICAg
ICAgVGhlcmUgYXJlIHR3byBtZXRob2RzIGZvciB2aWJyYXRpb24gQVBJLgotICAgICAgICAtIHZp
YnJhdGUgOiBWaWJyYXRlIGRldmljZSBmb3IgcmVjZWl2aW5nIGFzIGEgcGFyYW1ldGVyLgotICAg
ICAgICAtIGNhbmNlbFZpYnJhdGUgOiBDYW5jZWwgY3VycmVudCB2aWJyYXRpb24uCi0KLSAgICAg
ICAgKiBDTWFrZUxpc3RzRWZsLnR4dDoKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9WaWJyYXRp
b25DbGllbnRFZmwuY3BwOiBBZGRlZC4KLSAgICAgICAgKFdlYkNvcmUpOgotICAgICAgICAoV2Vi
Q29yZTo6VmlicmF0aW9uQ2xpZW50RWZsOjpWaWJyYXRpb25DbGllbnRFZmwpOgotICAgICAgICAo
V2ViQ29yZTo6VmlicmF0aW9uQ2xpZW50RWZsOjp2aWJyYXRlKToKLSAgICAgICAgKFdlYkNvcmU6
OlZpYnJhdGlvbkNsaWVudEVmbDo6Y2FuY2VsVmlicmF0aW9uKToKLSAgICAgICAgKFdlYkNvcmU6
OlZpYnJhdGlvbkNsaWVudEVmbDo6dmlicmF0aW9uRGVzdHJveWVkKToKLSAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9WaWJyYXRpb25DbGllbnRFZmwuaDogQWRkZWQuCi0gICAgICAgIChXZWJDb3Jl
KToKLSAgICAgICAgKFZpYnJhdGlvbkNsaWVudEVmbCk6Ci0gICAgICAgIChXZWJDb3JlOjpWaWJy
YXRpb25DbGllbnRFZmw6On5WaWJyYXRpb25DbGllbnRFZmwpOgotICAgICAgICAqIGV3ay9ld2tf
dmlldy5jcHA6Ci0gICAgICAgIChfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKToKLSAgICAgICAgKF9l
d2tfdmlld19wcml2X25ldyk6Ci0KLTIwMTItMDItMTcgIFJhcGhhZWwgS3VibyBkYSBDb3N0YSAg
PGt1Ym9AcHJvZnVzaW9uLm1vYmk+Ci0KLSAgICAgICAgW0VGTF0gVW5yZXZpZXdlZCwgYWRhcHQg
dG8gdGhlIGNoYW5nZXMgaW50cm9kdWNlZCBpbiByMTA3OTczLgotCi0gICAgICAgIFNWTiByMTA3
OTczIG1vdmVkIHNvbWUgbGlic291cCBmZWF0dXJlIGluaXRpYWxpemF0aW9uIGNvZGUgdG8KLSAg
ICAgICAgV2ViQ29yZSwgYnV0IG9ubHkgY2hhbmdlZCB0aGUgR1RLKyBiaXRzIGluIFdlYktpdC4K
LQotICAgICAgICAqIGV3ay9ld2tfbWFpbi5jcHA6Ci0gICAgICAgIChfZXdrX2luaXRfYm9keSk6
IERvIG5vdCBpbml0aWFsaXplIHRoZSBjb250ZW50IHNuaWZmZXIgYW5kIHRoZQotICAgICAgICBk
ZWNvZGVyIGhlcmUsIHRoZSBpbml0aWFsaXphdGlvbiBpcyBub3cgZG9uZSBpbiBXZWJDb3JlLgot
Ci0yMDEyLTAyLTE3ICBSYXBoYWVsIEt1Ym8gZGEgQ29zdGEgIDxrdWJvQHByb2Z1c2lvbi5tb2Jp
PgotCi0gICAgICAgIFVucmV2aWV3ZWQsIGZpeCB0aGUgYnVpbGQgd2l0aCBFTkFCTEUoREVWSUNF
X09SSUVOVEFUSU9OKSBhZnRlcgotICAgICAgICByMTA3NTE4LiBUaGUgRUZMIEVXUyBib3QgZG9l
c24ndCBlbmFibGUgdGhhdCBmbGFnLCBzbyB0aGUgYnJlYWthZ2UKLSAgICAgICAgd2FzIG5vdCBz
cG90dGVkIGVhcmxpZXIuCi0KLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAo
X0V3a19WaWV3X1ByaXZhdGVfRGF0YSk6Ci0gICAgICAgIChfZXdrX3ZpZXdfcHJpdl9uZXcpOgot
Ci0yMDEyLTAxLTMxICBSYXBoYWVsIEt1Ym8gZGEgQ29zdGEgIDxrdWJvQHByb2Z1c2lvbi5tb2Jp
PgotCi0gICAgICAgIFtzb3VwXSBBZGQgc3VwcG9ydCBmb3IgbXVsdGlwbGUgU291cFNlc3Npb25z
LgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzczNDEK
LQotICAgICAgICBBZGQgdGhlIG5lY2Vzc2FyeSBpbmZyYXN0cnVjdHVyZSB0byBzdXBwb3J0IG11
bHRpcGxlIFNvdXBTZXNzaW9ucy4gRWFjaAotICAgICAgICBXZWJWaWV3IG5vdyBoYXMgYSAic2Vz
c2lvbiIgcHJvcGVydHksIHdoaWNoIGRlZmF1bHRzIHRvCi0gICAgICAgIFJlc291cmNlSGFuZGxl
OjpkZWZhdWx0U2Vzc2lvbigpIGFuZCBjYW4gYmUgY2hhbmdlZCB0byBhbm90aGVyCi0gICAgICAg
IFNvdXBTZXNzaW9uIGJ5IHRoZSB1c2VyLgotCi0gICAgICAgIFNvbWUgQVBJIGluIGV3a19uZXR3
b3JrIGFuZCBld2tfdmlldyB3aGljaCByZXF1aXJlZCBTb3VwU2Vzc2lvbiB0byBiZSBhCi0gICAg
ICAgIHZhbGlkIHR5cGUgaW4gdGhlIGhlYWRlcnMgaGFzIG5vdyBiZWVuIG1vdmVkIGluc2lkZSAj
aWYgVVNFKFNPVVApCi0gICAgICAgIGlmZGVmcyBzbyB3ZSBjYW4gYWN0dWFsbHkgdGhlIHJlcXVp
cmVkIFNvdXAgaGVhZGVyIGFuZCBhdm9pZCBidWlsZAotICAgICAgICBwcm9ibGVtcyB3aXRoIGR1
cGxpY2F0ZSB0eXBlZGVmcy4KLQotICAgICAgICAqIENNYWtlTGlzdHNFZmwudHh0OgotICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpjcmVhdGVOZXR3b3JraW5nQ29udGV4dCk6Ci0g
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVOZXR3b3JraW5nQ29udGV4dEVmbC5jcHA6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTmV0d29ya2lu
Z0NvbnRleHRFZmwuaC4KLSAgICAgICAgKFdlYkNvcmUpOgotICAgICAgICAoV2ViQ29yZTo6RnJh
bWVOZXR3b3JraW5nQ29udGV4dEVmbDo6Y3JlYXRlKToKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1l
TmV0d29ya2luZ0NvbnRleHRFZmw6OkZyYW1lTmV0d29ya2luZ0NvbnRleHRFZmwpOgotICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVOZXR3b3JraW5nQ29udGV4dEVmbDo6c291cFNlc3Npb24pOgotICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTmV0d29ya2luZ0NvbnRleHRFZmwuaDoKLSAgICAg
ICAgKEZyYW1lTmV0d29ya2luZ0NvbnRleHRFZmwpOgotICAgICAgICAqIGV3ay9ld2tfY29va2ll
cy5oOiBNZW50aW9uIHRoaXMgQVBJIGlzIG9ubHkgdmFsaWQgd2l0aCB0aGUKLSAgICAgICAgZGVm
YXVsdCBTb3VwU2Vzc2lvbi4KLSAgICAgICAgKiBld2svZXdrX25ldHdvcmsuY3BwOgotICAgICAg
ICAoZXdrX25ldHdvcmtfZGVmYXVsdF9zb3VwX3Nlc3Npb25fZ2V0KTogRGVmaW5lIG9ubHkgaWYg
VVNFKFNPVVApIGlzIHNldC4KLSAgICAgICAgKiBld2svZXdrX25ldHdvcmsuaDogRGl0dG8sIGFu
ZCBtZW50aW9uIHRoaXMgQVBJIGlzIG9ubHkgdmFsaWQgd2l0aCB0aGUKLSAgICAgICAgZGVmYXVs
dCBTb3VwU2Vzc2lvbi4KLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoX0V3
a19WaWV3X1ByaXZhdGVfRGF0YSk6Ci0gICAgICAgIChfZXdrX3ZpZXdfcHJpdl9uZXcpOgotICAg
ICAgICAoZXdrX3ZpZXdfc291cF9zZXNzaW9uX2dldCk6Ci0gICAgICAgIChld2tfdmlld19zb3Vw
X3Nlc3Npb25fc2V0KToKLSAgICAgICAgKiBld2svZXdrX3ZpZXcuaDoKLSAgICAgICAgKCk6Ci0K
LTIwMTItMDItMTUgIFNhZHJ1bCBIYWJpYiBDaG93ZGh1cnkgIDxzYWRydWxAY2hyb21pdW0ub3Jn
PgotCi0gICAgICAgIE5vdGlmeSBDaHJvbWVDbGllbnQgd2hlbiB0b3VjaC1ldmVudCBoYW5kbGVy
cyBhcmUgaW5zdGFsbGVkL3JlbW92ZWQuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD03NzQ0MAotCi0gICAgICAgIFJldmlld2VkIGJ5IERhcmluIEZpc2hl
ciBhbmQgUnlvc3VrZSBOaXdhLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xp
ZW50RWZsLmg6Ci0gICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRFZmw6Om51bVRvdWNoRXZl
bnRIYW5kbGVyc0NoYW5nZWQpOgotCi0yMDEyLTAyLTE1ICBHdXN0YXZvIExpbWEgQ2hhdmVzICA8
Z2xpbWFAcHJvZnVzaW9uLm1vYmk+Ci0KLSAgICAgICAgW0VGTF0gQWRkIG1pc3NpbmcgbGlic291
cCB0byAocGtnY29uZmlnKSBkZXBlbmRlbmN5IHJlcXVpcmVtZW50cwotICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzg3MDIKLQotICAgICAgICBVbnJldmll
d2VkIGJ1aWxkIGZpeC4KLQotICAgICAgICAqIGV3ZWJraXQucGMuaW46IE5vdyB0aGF0IGJ1ZyA3
Nzg3NCBoYWQgaXRzIHBhdGNoIGxhbmRlZCwgd2UKLSAgICAgICAgYWx3YXlzIHJlcXVpcmUgbGli
c291cCBhcyBhIGRlcGVuZGVuY3kgZm9yIHRoZSBFRkwgcG9ydC4gVGhlCi0gICAgICAgICdSZXF1
aXJlJyBzZXNzaW9uIG9mIHRoaXMgZmlsZSBoYXMgdG8gY29udGVtcGxhdGUgdGhhdCwgb3RoZXJ3
aXNlCi0gICAgICAgIGNvZGUgbGlua2luZyB3aXRoIGV3ZWJraXQgd2lsbCBmYWlsIHRvIGxvb2t1
cCB0byBsaWJzb3VwJ3MgaGVhZGVyCi0gICAgICAgIGZpbGVzLgotCi0yMDEyLTAyLTEzICBSYXBo
YWVsIEt1Ym8gZGEgQ29zdGEgIDxrdWJvQHByb2Z1c2lvbi5tb2JpPgotCi0gICAgICAgIFtDTWFr
ZV0gTWVyZ2UgV2ViS2l0RWZsLmNtYWtlIGludG8gRmluZEVGTC5jbWFrZS4KLSAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4NTY2Ci0KLSAgICAgICAgUmV2
aWV3ZWQgYnkgRGFuaWVsIEJhdGVzLgotCi0gICAgICAgICogQ01ha2VMaXN0c0VmbC50eHQ6IERv
IG5vdCBpbmNsdWRlIFdlYktpdEVmbC5jbWFrZS4KLQotMjAxMi0wMi0xMSAgTmlrb2xhcyBaaW1t
ZXJtYW5uICA8bnppbW1lcm1hbm5AcmltLmNvbT4KLQotICAgICAgICBDb252ZXJ0IHN2Zy9hbmlt
YXRpb25zIHRvIHVzZSBTTUlMIG1ldGhvZHMgZm9yIGRyaXZpbmcgdGhlIHRpbWVsaW5lCi0gICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODQyMgotCi0gICAg
ICAgIFJldmlld2VkIGJ5IERpcmsgU2NodWx6ZS4KLQotICAgICAgICBSZW1vdmUgU1ZHIGFuaW1h
dGlvbiBzYW1wbGluZyBmdW5jdGlvbmFsaXR5IHByb3ZpZGVkIGZvciBEUlQsIHdoaWNoIG5vIGxv
bmdlciB1c2VzIGl0LgotICAgICAgICBJbnN0ZWFkIHdlIHN3aXRjaGVkIHRoZSBzdmcvYW5pbWF0
aW9ucyB0ZXN0cyB0byB1c2UgU1ZHU1ZHRWxlbWVudC5zZXRDdXJyZW50VGltZS4KLQotICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHA6Ci0gICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmg6Ci0KLTIwMTItMDIt
MDYgIFJhcGhhZWwgS3VibyBkYSBDb3N0YSAgPGt1Ym9AcHJvZnVzaW9uLm1vYmk+Ci0KLSAgICAg
ICAgW0VGTF0gRHJvcCBzdXBwb3J0IGZvciB0aGUgQ3VybCBuZXR3b3JrIGJhY2tlbmQuCi0gICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Nzg3NAotCi0gICAg
ICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgotCi0gICAgICAgIE5vYm9keSBzZWVtcyB0byBi
ZSBtYWludGFpbmluZyB0aGUgQ3VybCBiYWNrZW5kIGluIFdlYkNvcmUsIHRoZQotICAgICAgICBF
RkwgcG9ydCBkZXZlbG9wZXJzIGFsbCBzZWVtIHRvIGJlIHVzaW5nIHRoZSBTb3VwIGJhY2tlbmQg
YW5kIHRoZQotICAgICAgICBwb3J0IGl0c2VsZiBoYXMgbWFueSBmZWF0dXJlcyB3aGljaCBhcmUg
b25seSBpbXBsZW1lbnRlZCBmb3IgdGhlCi0gICAgICAgIGxhdHRlci4KLQotICAgICAgICAqIENN
YWtlTGlzdHNFZmwudHh0OiBVbmNvbmRpdGlvbmFsbHkgYnVpbGQgc291cC1kZXBlbmRlbnQgZmls
ZXMKLSAgICAgICAgYW5kIGFsd2F5cyBhZGQgdGhlIGdsaWIvc291cCBpbmNsdWRlIGRpcmVjdG9y
aWVzIGFuZCBsaWJyYXJpZXMuCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmRp
c3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNlKToKLSAgICAgICAgUmVtb3ZlIFVTRShTT1VQKSBjaGVj
a3MuCi0gICAgICAgICogZXdrL2V3a19hdXRoLmNwcDoKLSAgICAgICAgKGV3a19hdXRoX3Nob3df
ZGlhbG9nX2NhbGxiYWNrX3NldCk6IERpdHRvLgotICAgICAgICAoZXdrX2F1dGhfY3JlZGVudGlh
bHNfc2V0KTogRGl0dG8uCi0gICAgICAgICogZXdrL2V3a19jb29raWVzLmNwcDoKLSAgICAgICAg
KGV3a19jb29raWVzX2ZpbGVfc2V0KTogRGl0dG8uCi0gICAgICAgIChld2tfY29va2llc19jbGVh
cik6IERpdHRvLgotICAgICAgICAoZXdrX2Nvb2tpZXNfZ2V0X2FsbCk6IERpdHRvLgotICAgICAg
ICAoZXdrX2Nvb2tpZXNfY29va2llX2RlbCk6IERpdHRvLgotICAgICAgICAoZXdrX2Nvb2tpZXNf
Y29va2llX2ZyZWUpOiBEaXR0by4KLSAgICAgICAgKGV3a19jb29raWVzX3BvbGljeV9zZXQpOiBE
aXR0by4KLSAgICAgICAgKGV3a19jb29raWVzX3BvbGljeV9nZXQpOiBEaXR0by4KLSAgICAgICAg
KiBld2svZXdrX2ZyYW1lLmNwcDoKLSAgICAgICAgKGV3a19mcmFtZV9jZXJ0aWZpY2F0ZV9zdGF0
dXNfZ2V0KTogRGl0dG8uCi0gICAgICAgICogZXdrL2V3a19tYWluLmNwcDoKLSAgICAgICAgKF9l
d2tfaW5pdF9ib2R5KTogRGl0dG8uCi0gICAgICAgICogZXdrL2V3a19uZXR3b3JrLmNwcDoKLSAg
ICAgICAgKGV3a19uZXR3b3JrX3Byb3h5X3VyaV9zZXQpOiBEaXR0by4KLSAgICAgICAgKGV3a19u
ZXR3b3JrX3Byb3h5X3VyaV9nZXQpOiBEaXR0by4KLSAgICAgICAgKGV3a19uZXR3b3JrX3Rsc19j
ZXJ0aWZpY2F0ZV9jaGVja19nZXQpOiBEaXR0by4KLSAgICAgICAgKGV3a19uZXR3b3JrX3Rsc19j
ZXJ0aWZpY2F0ZV9jaGVja19zZXQpOiBEaXR0by4KLSAgICAgICAgKGV3a19uZXR3b3JrX3Rsc19j
YV9jZXJ0aWZpY2F0ZXNfcGF0aF9nZXQpOiBEaXR0by4KLSAgICAgICAgKGV3a19uZXR3b3JrX3Rs
c19jYV9jZXJ0aWZpY2F0ZXNfcGF0aF9zZXQpOiBEaXR0by4KLSAgICAgICAgKGV3a19uZXR3b3Jr
X2RlZmF1bHRfc291cF9zZXNzaW9uX2dldCk6IERpdHRvLgotICAgICAgICAqIGV3ay9ld2tfbmV0
d29yay5oOiBVcGRhdGUgYXBpZG94IGZvcgotICAgICAgICBld2tfbmV0d29ya19kZWZhdWx0X3Nv
dXBfc2Vzc2lvbl9nZXQoKSBub3cgdGhhdCBsaWJzb3VwIGlzIHRoZQotICAgICAgICBvbmx5IGF2
YWlsYWJsZSBiYWNrZW5kLgotCi0yMDEyLTAyLTA5ICBHdXN0YXZvIExpbWEgQ2hhdmVzICA8Z2xp
bWFAcHJvZnVzaW9uLm1vYmk+Ci0KLSAgICAgICAgW0VGTF0gSW50cm9kdWNpbmcgZnVuY3Rpb25z
IHRvIHNldCBsb2NhbCBzdG9yYWdlIGRiIHBhdGggYW5kIGNsZWFyCi0gICAgICAgIHRob3NlIGRi
cy4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3MTA3
Ci0KLSAgICAgICAgVGhpcyBwYXRjaCBleHBvc2VzIHRoZSB3ZWIgbG9jYWwgc3RvcmFnZSB0cmFj
a2VyIGRhdGFiYXNlIHBhdGgKLSAgICAgICAgc2V0dGluZyBjYWJhYmlsaXR5LCBpbnRyb2R1Y2Vk
IG9uIGJ1ZyA3NzAwNiwgdG8gdGhlIEVGTCBwb3J0IG9mCi0gICAgICAgIFdlYktpdC4gUGFydGlj
dWxhcmx5LCB3ZSBoYXZlIG91ciBvd24gc3RvcmFnZSB0cmFja2VyIGNsaWVudAotICAgICAgICBv
YmplY3QsIHRvIGluaXRpYWxpemUgdGhlIHN0b3JhZ2UgdHJhY2tlciBiYWNrZW5kIG9uIGV3a19p
bml0KCkuCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4u
Ci0KLSAgICAgICAgKiBDTWFrZUxpc3RzRWZsLnR4dDoKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9TdG9yYWdlVHJhY2tlckNsaWVudEVmbC5jcHA6IEFkZGVkLgotICAgICAgICAoV2ViQ29yZSk6
Ci0gICAgICAgIChXZWJDb3JlOjpTdG9yYWdlVHJhY2tlckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRN
b2RpZnlPcmlnaW4pOgotICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZVRyYWNrZXJDbGllbnRFZmw6
OmRpZEZpbmlzaExvYWRpbmdPcmlnaW5zKToKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9TdG9y
YWdlVHJhY2tlckNsaWVudEVmbC5oOiBBZGRlZC4KLSAgICAgICAgKFdlYkNvcmUpOgotICAgICAg
ICAoU3RvcmFnZVRyYWNrZXJDbGllbnRFZmwpOgotICAgICAgICAqIGV3ay9ld2tfbWFpbi5jcHA6
Ci0gICAgICAgICh0cmFja2VyQ2xpZW50KToKLSAgICAgICAgKF9ld2tfaW5pdF9ib2R5KToKLSAg
ICAgICAgKiBld2svZXdrX3NldHRpbmdzLmNwcDoKLSAgICAgICAgKGV3a19zZXR0aW5nc19sb2Nh
bF9zdG9yYWdlX3BhdGhfc2V0KToKLSAgICAgICAgKGV3a19zZXR0aW5nc19sb2NhbF9zdG9yYWdl
X3BhdGhfZ2V0KToKLSAgICAgICAgKGV3a19zZXR0aW5nc19sb2NhbF9zdG9yYWdlX2RhdGFiYXNl
X2NsZWFyKToKLSAgICAgICAgKGV3a19zZXR0aW5nc19sb2NhbF9zdG9yYWdlX2RhdGFiYXNlX29y
aWdpbl9jbGVhcik6Ci0gICAgICAgICogZXdrL2V3a19zZXR0aW5ncy5oOgotCi0yMDEyLTAyLTA3
ICBLcnp5c3p0b2YgQ3plY2ggIDxrLmN6ZWNoQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxd
IEFkZCBtaXNzaW5nIGluaXRpYWxpemF0aW9uIG9mIGVkaXRhYmxlIHZhcmlhYmxlLgotICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzc5NDgKLQotICAgICAg
ICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KLQotICAgICAgICBUaGUgdmFsdWUgb2YgZWRpdGFi
bGUgaW4gRXdrX0ZyYW1lX1NtYXJ0X0RhdGEgc3RydWN0IGlzIG5vdCBzZXQuCi0KLSAgICAgICAg
KiBld2svZXdrX2ZyYW1lLmNwcDoKLSAgICAgICAgKGV3a19mcmFtZV9lZGl0YWJsZV9zZXQpOgot
Ci0yMDEyLTAyLTA2ICBKdW5nSmlrIExlZSAgPGp1bmdqaWsubGVlQHNhbXN1bmcuY29tPgotCi0g
ICAgICAgIFtFRkxdIERlZmluZSB0byBwcmV2ZW50IGEgc2luZ2xlIGJhY2tpbmctc3RvcmUgYXBw
bGljYXRpb24gZnJvbSBjYWxsaW5nIHRoZSB0aWxlZCB2aWV3IGZ1bmN0aW9uLgotICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzc4NDIKLQotICAgICAgICBS
ZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgotCi0gICAgICAgIFRoZSBkZWZpbmUgcHJldmVudHMg
YW4gYXBwbGljYXRpb24gdXNpbmcgc2luZ2xlIGJhY2tpbmcgc3RvcmUgZnJvbSBjYWxsaW5nIHRp
bGVkIGNhY2hlIGZ1bmN0aW9uLgotICAgICAgICBUaGUgdGlsZWQgQVBJcyBvcGVuZWQgdG8gb3V0
ZXIgc2hvdWxkIGNoZWNrIHRoZSB2aWV3IHR5cGUgYmVmb3JlIGJlaW5nIGNhbGxlZC4KLQotICAg
ICAgICAqIGV3ay9ld2tfcHJpdmF0ZS5oOgotICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0g
ICAgICAgIChfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKToKLSAgICAgICAgKGV3a192aWV3X2ZyYW1l
X3ZpZXdfY3JlYXRpb25fbm90aWZ5KToKLSAgICAgICAgKiBld2svZXdrX3ZpZXdfdGlsZWQuY3Bw
OgotICAgICAgICAoZXdrX3ZpZXdfdGlsZWRfdW51c2VkX2NhY2hlX2dldCk6Ci0gICAgICAgIChl
d2tfdmlld190aWxlZF91bnVzZWRfY2FjaGVfc2V0KToKLQotMjAxMi0wMi0wNiAgSnVuZ0ppayBM
ZWUgIDxqdW5namlrLmxlZUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBbRUZMXSBBZG9wdCBDKysg
c3R5bGUgdXNpbmcgY2FtZWxDYXNlIGFuZCBmdWxsIHZhcmlhYmxlIG5hbWVzLgotICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYzNzgKLQotICAgICAgICBS
ZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgotCi0gICAgICAgIE1vZGlmeSB0aGUgY29kZSB0byB1
c2UgY2FtZWxDYXNlIGFuZCBzcGVsbCBvdXQgdmFyaWFibGUgbmFtZXMgaW5zdGVhZCBvZiB1c2lu
ZyBhYmJyZXZpYXRpb25zLgotICAgICAgICBNb2RpZnkgdGhlIGNvbW1lbnRzIHdoaWNoIGRvIG5v
dCBtYXRjaCB3aXRoIGFjdHVhbCBwYXJhbWV0ZXJzIGFuZCBjb3JyZWN0IG1pc3NwZWxsZWQgd29y
ZHMuCi0gICAgICAgIEFkb3B0IEVGTCBDb2Rpbmcgc3R5bGUgaW4gaGVhZGVyIGZpbGVzLgotICAg
ICAgICBUaGUgbG9naWMgb2YgdGhlIGNvZGUgaXMgbm90IGNoYW5nZWQuCi0KLSAgICAgICAgKiBl
d2svZXdrX2Nvb2tpZXMuaDoKLSAgICAgICAgKiBld2svZXdrX2ZyYW1lLmNwcDoKLSAgICAgICAg
KGV3a19mcmFtZV9zZWxlY3Rpb25fZ2V0KToKLSAgICAgICAgKGV3a19mcmFtZV9mZWVkX2ZvY3Vz
X2luKToKLSAgICAgICAgKEVXS1ByaXZhdGU6OmNvcmVGcmFtZSk6Ci0gICAgICAgICogZXdrL2V3
a19mcmFtZS5oOgotICAgICAgICAqIGV3ay9ld2tfaGlzdG9yeS5jcHA6Ci0gICAgICAgIChld2tf
aGlzdG9yeV9pdGVtX25ldyk6Ci0gICAgICAgIChld2tfaGlzdG9yeV9pdGVtX3RpdGxlX2dldCk6
Ci0gICAgICAgIChld2tfaGlzdG9yeV9pdGVtX3RpdGxlX2FsdGVybmF0ZV9nZXQpOgotICAgICAg
ICAoZXdrX2hpc3RvcnlfaXRlbV91cmlfZ2V0KToKLSAgICAgICAgKGV3a19oaXN0b3J5X2l0ZW1f
dXJpX29yaWdpbmFsX2dldCk6Ci0gICAgICAgICogZXdrL2V3a19uZXR3b3JrLmg6Ci0gICAgICAg
ICogZXdrL2V3a190aWxlZF9iYWNraW5nX3N0b3JlLmNwcDoKLSAgICAgICAgKF9Fd2tfVGlsZWRf
QmFja2luZ19TdG9yZV9JdGVtKToKLSAgICAgICAgKF9Fd2tfVGlsZWRfQmFja2luZ19TdG9yZV9E
YXRhKToKLSAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV90aWxlX2Fzc29jaWF0ZSk6
Ci0gICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdGlsZV9kaXNzb2NpYXRlKToKLSAg
ICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVfcmVuZGVyX3JlcXVlc3RfY2xlYXIp
OgotICAgICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3ByZV9yZW5kZXJfcmVxdWVzdF9w
cm9jZXNzX3NpbmdsZSk6Ci0gICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfaXRlbV9m
aWxsKToKLSAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9pdGVtX2FkZCk6Ci0gICAg
ICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfaXRlbV9zbW9vdGhfc2NhbGVfc2V0KToKLSAg
ICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV92aWV3X2NvbHNfZW5kX2FkZCk6Ci0gICAg
ICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdmlld19yb3dzX2FsbF9kZWwpOgotICAgICAg
ICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3JlbmRlcik6Ci0gICAgICAgIChfZXdrX3RpbGVk
X2JhY2tpbmdfc3RvcmVfbWVtX2RiZyk6Ci0gICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3Rv
cmVfc2lnX3Vzcik6Ci0gICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfc21hcnRfYWRk
KToKLSAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9zbWFydF9kZWwpOgotICAgICAg
ICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3NtYXJ0X21vdmUpOgotICAgICAgICAoX2V3a190
aWxlZF9iYWNraW5nX3N0b3JlX3NtYXJ0X3Jlc2l6ZSk6Ci0gICAgICAgIChfZXdrX3RpbGVkX2Jh
Y2tpbmdfc3RvcmVfcmVjYWxjX3JlbmRlcmVycyk6Ci0gICAgICAgIChfZXdrX3RpbGVkX2JhY2tp
bmdfc3RvcmVfdmlld19kYmcpOgotICAgICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3Zp
ZXdfd3JhcF91cCk6Ci0gICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdmlld193cmFw
X2Rvd24pOgotICAgICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3ZpZXdfd3JhcF9sZWZ0
KToKLSAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV92aWV3X3JlZmlsbCk6Ci0gICAg
ICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdmlld19wb3NfYXBwbHkpOgotICAgICAgICAo
X2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3NtYXJ0X2NhbGN1bGF0ZV9vZmZzZXRfZm9yY2UpOgot
ICAgICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3NtYXJ0X2NhbGN1bGF0ZV9vZmZzZXQp
OgotICAgICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3NtYXJ0X2NhbGN1bGF0ZV9wb3Mp
OgotICAgICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3NtYXJ0X2NhbGN1bGF0ZSk6Ci0g
ICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfc2Nyb2xsX2Z1bGxfb2Zmc2V0X3NldF9p
bnRlcm5hbCk6Ci0gICAgICAgIChld2tfdGlsZWRfYmFja2luZ19zdG9yZV9zY3JvbGxfZnVsbF9v
ZmZzZXRfc2V0KToKLSAgICAgICAgKGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3Njcm9sbF9mdWxs
X29mZnNldF9hZGQpOgotICAgICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3pvb21fc2V0
X2ludGVybmFsKToKLSAgICAgICAgKGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3pvb21fc2V0KToK
LSAgICAgICAgKGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3pvb21fd2Vha19zZXQpOgotICAgICAg
ICAoZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfZml4X29mZnNldHMpOgotICAgICAgICAoZXdrX3Rp
bGVkX2JhY2tpbmdfc3RvcmVfZmx1c2gpOgotICAgICAgICAoZXdrX3RpbGVkX2JhY2tpbmdfc3Rv
cmVfcHJlX3JlbmRlcl9yZWdpb24pOgotICAgICAgICAoZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVf
cHJlX3JlbmRlcl9yZWxhdGl2ZV9yYWRpdXMpOgotICAgICAgICAqIGV3ay9ld2tfdGlsZWRfYmFj
a2luZ19zdG9yZS5oOgotICAgICAgICAoX0V3a19UaWxlKToKLSAgICAgICAgKiBld2svZXdrX3Rp
bGVkX21hdHJpeC5jcHA6Ci0gICAgICAgIChfRXdrX1RpbGVfTWF0cml4KToKLSAgICAgICAgKF9l
d2tfdGlsZV9tYXRyaXhfY2VsbF9mcmVlKToKLSAgICAgICAgKF9ld2tfdGlsZV9tYXRyaXhfdGls
ZV9mcmVlKToKLSAgICAgICAgKGV3a190aWxlX21hdHJpeF9uZXcpOgotICAgICAgICAoZXdrX3Rp
bGVfbWF0cml4X2ZyZWUpOgotICAgICAgICAoZXdrX3RpbGVfbWF0cml4X3VudXNlZF9jYWNoZV9n
ZXQpOgotICAgICAgICAoZXdrX3RpbGVfbWF0cml4X3RpbGVfZXhhY3RfZ2V0KToKLSAgICAgICAg
KGV3a190aWxlX21hdHJpeF90aWxlX25ldyk6Ci0gICAgICAgIChld2tfdGlsZV9tYXRyaXhfdGls
ZV9wdXQpOgotICAgICAgICAoZXdrX3RpbGVfbWF0cml4X2RiZyk6Ci0gICAgICAgIChld2tfdGls
ZV9tYXRyaXhfZnJlZXplKToKLSAgICAgICAgKGV3a190aWxlX21hdHJpeF90aGF3KToKLSAgICAg
ICAgKiBld2svZXdrX3RpbGVkX21hdHJpeC5oOgotICAgICAgICAqIGV3ay9ld2tfdGlsZWRfbW9k
ZWwuY3BwOgotICAgICAgICAodGlsZV9hY2NvdW50KToKLSAgICAgICAgKGV3a190aWxlX3VwZGF0
ZXNfcHJvY2Vzcyk6Ci0gICAgICAgIChld2tfdGlsZV91bnVzZWRfY2FjaGVfdGlsZV9wdXQpOgot
ICAgICAgICAoZXdrX3RpbGVfdW51c2VkX2NhY2hlX2RiZyk6Ci0gICAgICAgICogZXdrL2V3a190
aWxlZF9tb2RlbC5oOgotICAgICAgICAqIGV3ay9ld2tfdXRpbC5oOgotICAgICAgICAqIGV3ay9l
d2tfdmlldy5jcHA6Ci0gICAgICAgIChfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKToKLSAgICAgICAg
KF9ld2tfdmlld19zbWFydF9mb2N1c19pbik6Ci0gICAgICAgIChfZXdrX3ZpZXdfc21hcnRfcHJl
X3JlbmRlcl9yZWdpb24pOgotICAgICAgICAoZXdrX3ZpZXdfcHJlX3JlbmRlcl9yZWdpb24pOgot
ICAgICAgICAoZXdrX3ZpZXdfdG9vbGJhcnNfdmlzaWJsZV9nZXQpOgotICAgICAgICAoZXdrX3Zp
ZXdfc3RhdHVzYmFyX3Zpc2libGVfZ2V0KToKLSAgICAgICAgKGV3a192aWV3X3Njcm9sbGJhcnNf
dmlzaWJsZV9nZXQpOgotICAgICAgICAoZXdrX3ZpZXdfbWVudWJhcl92aXNpYmxlX2dldCk6Ci0g
ICAgICAgIChld2tfdmlld196b29tX3JhbmdlX3NldCk6Ci0gICAgICAgICogZXdrL2V3a192aWV3
Lmg6Ci0gICAgICAgICogZXdrL2V3a192aWV3X3NpbmdsZS5jcHA6Ci0gICAgICAgIChfZXdrX3Zp
ZXdfc2luZ2xlX3NtYXJ0X3JlcGFpbnRzX3Byb2Nlc3MpOgotICAgICAgICAqIGV3ay9ld2tfdmll
d190aWxlZC5jcHA6Ci0gICAgICAgIChfZXdrX3ZpZXdfdGlsZWRfc21hcnRfYmFja2luZ19zdG9y
ZV9hZGQpOgotICAgICAgICAoX2V3a192aWV3X3RpbGVkX3NtYXJ0X2FkZCk6Ci0gICAgICAgIChl
d2tfdmlld190aWxlZF91bnVzZWRfY2FjaGVfZ2V0KToKLSAgICAgICAgKGV3a192aWV3X3RpbGVk
X3VudXNlZF9jYWNoZV9zZXQpOgotCi0yMDEyLTAyLTA1ICBDaGFuZ1Nlb2sgT2ggIDxzaGl2YW1p
ZG93QGdtYWlsLmNvbT4KLQotICAgICAgICBbRUZMXSBFbmFibGUgV2ViR0wgd2l0aCBnbHggYmFj
a2VuZAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzcz
MDgKLQotICAgICAgICBSZXZpZXdlZCBieSBNYXJ0aW4gUm9iaW5zb24uCi0KLSAgICAgICAgQWN0
aXZhdGVkIFdlYkdMIGZlYXR1cmUuCi0KLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAg
ICAgICAoX0V3a19WaWV3X1ByaXZhdGVfRGF0YSk6Ci0gICAgICAgIChfZXdrX3ZpZXdfcHJpdl9u
ZXcpOgotCi0yMDEyLTAyLTA1ICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5j
b20+Ci0KLSAgICAgICAgW0VGTF0gUmVtb3ZlIGdfdGhyZWFkX2luaXQoKSBjYWxscwotICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzc4MjgKLQotICAgICAg
ICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgotCi0gICAgICAgIGdfdGhyZWFkX2luaXQgaGFz
IGJlZW4gZGVwcmVjYXRlZCBzaW5jZSBnbGliIDIuMzIuIFRoaXMgZnVuY3Rpb24gaXMgbm8gbG9u
Z2VyIG5lY2Vzc2FyeS4KLSAgICAgICAgVGhlIEdMaWIgdGhyZWFkaW5nIHN5c3RlbSBpcyBhdXRv
bWF0aWNhbGx5IGluaXRpYWxpemVkIGF0IHRoZSBzdGFydCBvZiB5b3VyIHByb2dyYW0uCi0KLSAg
ICAgICAgKiBld2svZXdrX21haW4uY3BwOgotICAgICAgICAoX2V3a19pbml0X2JvZHkpOgotCi0y
MDEyLTAyLTAyICBLd2FuZ0h5dWsgS2ltICA8aHl1a2kua2ltQHNhbXN1bmcuY29tPgotCi0gICAg
ICAgIFtFRkxdIEFkZCBjb250ZW50c1NpemUgZmxhZyBpbnRvIGV3a190aWxlZF9iYWNraW5nX3N0
b3JlJ3MgcHJpdmF0ZSBkYXRhLgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9Nzc1ODYKLQotICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgot
Ci0gICAgICAgIEFzIGJvdGggem9vbSBhbmQgY29udGVudCBzaXplIGNoYW5nZSBhcmUgaWRlbnRp
ZmllZCBieSBtb2RlbCBmbGFnLAotICAgICAgICBld2tfdGlsZWRfYmFja2luZ19zdG9yZSBjYW4g
bm90IGRldGVjdCB0aGUgY29uZmxpY3QgYmV0d2VlbiB0aGVtLgotICAgICAgICBJbiBvcmRlciB0
byBwcmV2ZW50IGNvbmZsaWN0IGJldHdlZW4gem9vbSBhbmQgY29udGVudHMgc2l6ZSBjaGFuZ2Us
Ci0gICAgICAgIGNvbnRlbnRzU2l6ZSBmbGFnIGlzIG5ld2x5IGFkZGVkLgotCi0gICAgICAgICog
ZXdrL2V3a190aWxlZF9iYWNraW5nX3N0b3JlLmNwcDoKLSAgICAgICAgKF9Fd2tfVGlsZWRfQmFj
a2luZ19TdG9yZV9JdGVtKToKLSAgICAgICAgKF9Fd2tfVGlsZWRfQmFja2luZ19TdG9yZV9EYXRh
KToKLSAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9zbWFydF9jYWxjdWxhdGUpOgot
ICAgICAgICAoZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfY29udGVudHNfcmVzaXplKToKLQotMjAx
Mi0wMi0wMiAgUmFwaGFlbCBLdWJvIGRhIENvc3RhICA8a3Vib0Bwcm9mdXNpb24ubW9iaT4KLQot
ICAgICAgICBbRUZMXSBSZW1vdmUgY2hlY2sgZm9yIEVOQUJMRV9HVEtfUExVR0lOU19TVVBQT1JU
Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzY0Nwot
Ci0gICAgICAgIFJldmlld2VkIGJ5IE1hcnRpbiBSb2JpbnNvbi4KLQotICAgICAgICBUaGVyZSBp
cyBubyBjbGVhciByZWFzb24gd2h5IHRoaXMgY2hlY2sgd2FzIGluIHBsYWNlIChpdCBjYW1lIHdp
dGggdGhlCi0gICAgICAgIHVwc3RyZWFtaW5nIG9mIHRoZSBwb3J0KSwgYnV0IEVOQUJMRV9HVEtf
UExVR0lOU19TVVBQT1JUIGlzIG5vdCBzZXQKLSAgICAgICAgYW55d2hlcmUsIGFuZCB0aGUgYnVp
bGQgc3lzdGVtIGRvZXMgbm90IGV2ZW4gY2hlY2sgZm9yIHRoZSBwcmVzZW5jZSBvZgotICAgICAg
ICBHVEsrIHdoZW4gYnVpbGRpbmcuCi0KLSAgICAgICAgKiBld2svZXdrX21haW4uY3BwOgotICAg
ICAgICAoX2V3a19pbml0X2JvZHkpOgotCi0yMDEyLTAxLTMxICBSeXVhbiBDaG9pICA8cnl1YW4u
Y2hvaUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBbRUZMXSBBZGQgYmFzaWMgRFJUL0VmbCBpbXBs
ZW1lbnRhdGlvbiB0byBzdXBwb3J0IHZpZXdwb3J0IHRlc3QuCi0gICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzMyMAotCi0gICAgICAgIFJldmlld2VkIGJ5
IEFuZHJlYXMgS2xpbmcuCi0KLSAgICAgICAgQWRkIGR1bXBDb25maWd1cmF0aW9uRm9yVmlld3Bv
cnQuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwu
Y3BwOgotICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpkdW1wQ29uZmlndXJhdGlv
bkZvclZpZXdwb3J0KToKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1
cHBvcnRFZmwuaDoKLQotMjAxMi0wMS0zMSAgS3dhbmdIeXVrIEtpbSAgPGh5dWtpLmtpbUBzYW1z
dW5nLmNvbT4KLQotICAgICAgICBbRUZMXSBTZXQgY29udGVudCBoaW50IGluZm9ybWF0aW9uIGZv
ciBld2tfdmlld19zaW5nbGUuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD03NzMxOQotCi0gICAgICAgIFJldmlld2VkIGJ5IFJ5b3N1a2UgTml3YS4KLQot
ICAgICAgICBUaGUgY29udGVudCBoaW50IGluZm9ybWF0aW9uIGNvcnJlc3BvbmRpbmcgdG8gb3Bl
bmdsX3gxMSBlbmdpbmUgaXMgc2V0Ci0gICAgICAgIGZvciB0aGUgaW1hZ2Ugb2JqZWN0IHdoaWNo
IGV3a192aWV3X3NpbmdsZSBvd25zIHdoZW4gZXZhcyBpcyBiYXNlZCBvbgotICAgICAgICBvcGVu
Z2xfeDExIGVuZ2luZS4KLQotICAgICAgICAqIGV3ay9ld2tfdmlld19zaW5nbGUuY3BwOgotICAg
ICAgICAoX2V3a192aWV3X3NpbmdsZV9zbWFydF9iYWNraW5nX3N0b3JlX2FkZCk6Ci0KLTIwMTIt
MDEtMzAgIEV1bnNvbCBQYXJrICA8ZXVuc29sNDcucGFya0BzYW1zdW5nLmNvbT4KLQotICAgICAg
ICBbRUZMXSBEZWZpbmUgdGhlIG5hbWVzIG9mIHZpZXcgc21hcnQgY2xhc3MKLSAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2MzcwCi0KLSAgICAgICAgUmV2
aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KLQotICAgICAgICBTdHJpbmdzIG9mIGV3a190aWxlZF92
aWV3J3MgbmFtZSB3ZXJlIGRlZmluZWQgZGlmZmVyZW50bHksCi0gICAgICAgIHNvIHRoZSBkZWZp
bml0aW9ucyB3ZXJlIG1vZGlmaWVkIHRvIG1ha2UgdXNlcnMgbm90IGNvbmZ1c2VkLgotCi0gICAg
ICAgICogZXdrL2V3a19wcml2YXRlLmg6Ci0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAg
ICAgICAgKiBld2svZXdrX3ZpZXdfc2luZ2xlLmNwcDoKLSAgICAgICAgKF9ld2tfdmlld19zaW5n
bGVfc21hcnRfY2xhc3NfbmV3KToKLSAgICAgICAgKiBld2svZXdrX3ZpZXdfdGlsZWQuY3BwOgot
ICAgICAgICAoZXdrX3ZpZXdfdGlsZWRfc21hcnRfc2V0KToKLSAgICAgICAgKF9ld2tfdmlld190
aWxlZF9zbWFydF9jbGFzc19uZXcpOgotCi0yMDEyLTAxLTI2ICBUb21hc3ogTW9yYXdza2kgIDx0
Lm1vcmF3c2tpQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxdIEFkZGVkIG1pc3NpbmcgTkVU
U0NBUEVfUExVR0lOX0FQSSBtYWNyby4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTc3MDkzCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGlu
Zy4KLQotICAgICAgICBUaGUgZXdrX3ZpZXdfanNfd2luZG93X29iamVjdF9jbGVhciBmdW5jdGlv
biBzaG91bGQgYmUgaW5zaWRlIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKSBtYWNyby4KLQot
ICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0KLTIwMTItMDEtMTcgIEd5dXlvdW5nIEtpbSAg
PGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBbRUZMXSBVc2Ugc3RhdGljIGNv
bnN0IGluc3RlZCBvZiAjZGVmaW5lIG1hY3JvLgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzY0OTkKLQotICAgICAgICBSZXZpZXdlZCBieSBIYWppbWUg
TW9yaXRhLgotCi0gICAgICAgIFdlYktpdCBjb2Rpbmcgc3R5bGUgcHJlZmVycyBjb25zdCB0byAj
ZGVmaW5lLiBFRkwgcG9ydCBuZWVkcyB0byB1c2UgY29uc3QgaW5zdGVkIG9mICNkZWZpbmUgbWFj
cm8uCi0gICAgICAgIFRoaXMgcGF0Y2ggcmVwbGFjZSBnbG9iYWwgdmFyaWFibGVzIGRlZmluZWQg
YnkgI2RlZmluZSB3aXRoIGNvbnN0LgotCi0gICAgICAgICogZXdrL2V3a190aWxlZF9iYWNraW5n
X3N0b3JlLmNwcDoKLSAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9zbWFydF9hZGQp
OgotICAgICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3pvb21fc2V0X2ludGVybmFsKToK
LSAgICAgICAgKiBld2svZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUuaDoKLSAgICAgICAgKiBld2sv
ZXdrX3RpbGVkX21hdHJpeC5jcHA6Ci0gICAgICAgIChld2tfdGlsZV9tYXRyaXhfbmV3KToKLSAg
ICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoX2V3a192aWV3X3JlcGFpbnRfYWRk
KToKLSAgICAgICAgKF9ld2tfdmlld19yZXBhaW50c19mbHVzaCk6Ci0gICAgICAgIChfZXdrX3Zp
ZXdfc2Nyb2xsX2FkZCk6Ci0gICAgICAgIChfZXdrX3ZpZXdfc2Nyb2xsc19mbHVzaCk6Ci0gICAg
ICAgIChfZXdrX3ZpZXdfcHJpdl9uZXcpOgotICAgICAgICAoZXdrX3ZpZXdfYmFzZV9zbWFydF9z
ZXQpOgotICAgICAgICAqIGV3ay9ld2tfdmlld190aWxlZC5jcHA6Ci0gICAgICAgIChfZXdrX3Zp
ZXdfdGlsZWRfc21hcnRfcHJlX3JlbmRlcl9zdGFydCk6Ci0KLTIwMTItMDEtMTMgIFJhcGhhZWwg
S3VibyBkYSBDb3N0YSAgPGt1Ym9AcHJvZnVzaW9uLm1vYmk+Ci0KLSAgICAgICAgW0VGTF0gRW1p
dCAicmVzb3VyY2UscmVxdWVzdCx3aWxsc2VuZCIgZnJvbSBld2tfdmlldy4KLSAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2MjkyCi0KLSAgICAgICAgUmV2
aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KLQotICAgICAgICBNYWtlIGV3a192aWV3IGRpc3BhdGNo
IHRoZSAicmVzb3VyY2UscmVxdWVzdCx3aWxsc2VuZCIgc2lnbmFsIGFzIHdlbGwsCi0gICAgICAg
IHNvIHRoYXQgaXQgaXMgcG9zc2libGUgdG8ga25vdyB3aGV0aGVyIHRoZSByZXF1ZXN0IGlzIGZv
ciB0aGUgbWFpbgotICAgICAgICBmcmFtZSBpdHNlbGYgb3IgZm9yIGFueXRoaW5nIGVsc2UuCi0K
LSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHA6Ci0gICAg
ICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hXaWxsU2VuZFJlcXVl
c3QpOgotICAgICAgICAqIGV3ay9ld2tfdmlldy5oOgotCi0yMDEyLTAxLTE2ICBSeXVhbiBDaG9p
ICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBbRUZMXSBCdWlsZCBmaXggd2hl
biB1c2luZyBwYW5nbyBhcyBmb250IGJhY2tlbmRzLgotICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYzNjgKLQotICAgICAgICBVbnJldmlld2VkIGJ1aWxk
IGZpeC4KLQotICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6IGluY2x1ZGUgUmVmUHRyQ2Fpcm8u
aAotCi0yMDEyLTAxLTEzICBMZWFuZHJvIFBlcmVpcmEgIDxsZWFuZHJvQHByb2Z1c2lvbi5tb2Jp
PgotCi0gICAgICAgIFtFRkxdIFNlY3VyaXR5UG9saWN5IHdoaXRlbGlzdCBpbnRlcmZhY2Ugc2hv
dWxkIGJlIGV4cG9zZWQgdG8gRVdlYktpdAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NzYwODIKLQotICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEts
aW5nLgotCi0gICAgICAgICogQ01ha2VMaXN0c0VmbC50eHQ6IEFkZGVkIHJlZmVyZW5jZSB0byBl
d2tfc2VjdXJpdHlfcG9saWN5LntjcHAsaH0uCi0gICAgICAgICogZXdrL0VXZWJLaXQuaDogSW5j
bHVkZSBld2tfc2VjdXJpdHlfcG9saWN5LmguCi0gICAgICAgICogZXdrL2V3a19zZWN1cml0eV9w
b2xpY3kuY3BwOiBBZGRlZC4KLSAgICAgICAgKGV3a19zZWN1cml0eV9wb2xpY3lfd2hpdGVsaXN0
X29yaWdpbl9hZGQpOiBJbXBsZW1lbnRlZCB0aGluIGxheWVyIGFyb3VuZCBTZWN1cml0eVBvbGlj
eTo6YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoKS4KLSAgICAgICAgKGV3a19zZWN1cml0
eV9wb2xpY3lfd2hpdGVsaXN0X29yaWdpbl9kZWwpOiBJbXBsZW1lbnRlZCB0aGluIGxheWVyIGFy
b3VuZCBTZWN1cml0eVBvbGljeTo6cmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoKS4K
LSAgICAgICAgKGV3a19zZWN1cml0eV9wb2xpY3lfd2hpdGVsaXN0X29yaWdpbl9yZXNldCk6IElt
cGxlbWVudGVkIHRoaW4gbGF5ZXIgYXJvdW5kIFNlY3VyaXR5UG9saWN5OjpyZXNldE9yaWdpbkFj
Y2Vzc1doaXRlbGlzdHMoKS4KLSAgICAgICAgKiBld2svZXdrX3NlY3VyaXR5X3BvbGljeS5oOiBB
ZGRlZC4KLQotMjAxMi0wMS0xMyAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcu
Y29tPgotCi0gICAgICAgIFtFRkxdIFJlbW92ZSBleHRlcm4gIkMiIGZyb20gZXdrX3ByaXZhdGUu
aAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYyNTAK
LQotICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgotCi0gICAgICAgIGV3a19wcml2
YXRlLmggZGVmaW5lcyBpbnRlcm5hbCBmdW5jdGlvbnMgdXNlZCBieSBXZWJLaXQgaXRzZWxmLiBU
aGVyZSBpcyBubyBjaGFuY2UgdG8gYmUgdXNlZCBieSBDIGFwcGxpY2F0aW9uLgotICAgICAgICBT
bywgZXh0ZXJuICJDIiBrZXl3b3JkIGlzIHVubmVlZGVkIGluIGV3a19wcml2YXRlLmguCi0KLSAg
ICAgICAgKiBld2svZXdrX3ByaXZhdGUuaDoKLQotMjAxMi0wMS0xMyAgR3J6ZWdvcnogQ3phamtv
d3NraSAgPGcuY3phamtvd3NraUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBbRUZMXSBBZGQgJ0Nv
cHkgSW1hZ2UgQWRkcmVzcycgdG8gY29udGV4dCBtZW51LgotICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYxNTMKLQotICAgICAgICBSZXZpZXdlZCBieSBB
bmRyZWFzIEtsaW5nLgotCi0gICAgICAgIEFkZHMgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19D
T1BZX0lNQUdFX1VSTF9UT19DTElQQk9BUkQgdG8gRXdrX0NvbnRleHRfTWVudV9BY3Rpb24gdG8g
c3luY2hyb25pemUgaXQgd2l0aCBDb250ZXh0TWVudUl0ZW0uaAotCi0gICAgICAgICogZXdrL2V3
a19jb250ZXh0bWVudS5oOgotCi0yMDEyLTAxLTEzICBLd2FuZ0h5dWsgS2ltICA8aHl1a2kua2lt
QHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxdIEFkZCB2aXNpYmxlIGZpZWxkIGludG8gZXdr
X3RpbGVkX2JhY2tpbmdfc3RvcmUncyBkYXRhLgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYxNjUKLQotICAgICAgICBSZXZpZXdlZCBieSBOaWtvbGFz
IFppbW1lcm1hbm4uCi0KLSAgICAgICAgVXNpbmcgb2YgZXZhc19vYmplY3RfdmlzaWJsZV9nZXQo
KSBBUEkgY2FuJ3QgZ3VyYW50ZWUgdGhlIGNvcnJlY3RuZXNzIG9mCi0gICAgICAgIGV2YXNfb2Jq
ZWN0J3MgdmlzaWJsZSBzdGF0dXMgaWYgaXQncyBjYWxsZWQgaW5zaWRlIG9mIGV2YXNfb2JqZWN0
J3MKLSAgICAgICAgc21hcnRfc2hvdygpIG1ldGhvZC4KLSAgICAgICAgU28sIGEgdmlzaWJsZSBm
bGFnIGZvciB0aGUgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUgaXMgYWRkZWQuCi0gICAgICAgIElu
IGFkZGl0aW9uLCBhcyB0aWxlcyBhcmUgbm90IHZpc2libGUsIGV3a190aWxlZF9iYWNraW5nX3N0
b3JlIHdpbGwgcHVzaAotICAgICAgICBpdHMgb3duIHRpbGVzIGludG8gdGhlIGNhY2hlIHdoZW4g
aXQgZGlzYXBlYXIuCi0KLSAgICAgICAgKiBld2svZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUuY3Bw
OgotICAgICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3VwZGF0ZXNfcHJvY2Vzcyk6Ci0g
ICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfaXRlbV9wcm9jZXNzX2lkbGVyX3N0YXJ0
KToKLSAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9pdGVtX2ZpbGwpOgotICAgICAg
ICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3NtYXJ0X21lbWJlcl9hZGQpOgotICAgICAgICAo
X2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3NtYXJ0X3Nob3cpOgotICAgICAgICAoX2V3a190aWxl
ZF9iYWNraW5nX3N0b3JlX3NtYXJ0X2hpZGUpOgotCi0yMDEyLTAxLTEzICBLd2FuZ0h5dWsgS2lt
ICA8aHl1a2kua2ltQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxdIFVudXNlZCBjb2RlIGNs
ZWFudXAgb24gZXdrX3RpbGVkX21vZGVsLmNwcC4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTc2MDMxCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgUnlvc3Vr
ZSBOaXdhLgotCi0gICAgICAgIFJlbW92ZSB1bnVzZWQgY29kZSBmcm9tIGV3a190aWxlZF9tb2Rl
bC5jcHAuCi0KLSAgICAgICAgKiBld2svZXdrX3RpbGVkX21vZGVsLmNwcDoKLQotMjAxMi0wMS0x
MiAgR3J6ZWdvcnogQ3phamtvd3NraSAgPGcuY3phamtvd3NraUBzYW1zdW5nLmNvbT4KLQotICAg
ICAgICBbRUZMXSBNb3ZlIG1hY3JvIGNoZWNraW5nIHRvIGZ1bmN0aW9ucycgZGVmaW5pdGlvbiBp
biBld2tfanMuY3BwLgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NzYwMzcKLQotICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgotCi0gICAg
ICAgIE1vdmVzIG1hY3JvIGNoZWNraW5nIHRvIGZ1bmN0aW9ucycgZGVmaW5pdGlvbiBpbnN0ZWFk
IG9mIGR1cGxpY2F0ZSB0aGVtIGluIHNvdXJjZSBkZXBlbmRpbmcgb24gbWFjcm8gdmFsdWUuCi0g
ICAgICAgIEl0J3Mga25vd24gcHJhY3RpY2UgaW4gV2ViS2l0IGFuZCBFRkwgcG9ydC4KLSAgICAg
ICAgRHVwbGljYXRpbmcgZnVuY3Rpb25zIGluIHRoZSBzYW1lIGZpbGUgd2hvc2UgcmV0dXJuIHZh
bHVlIGlzIGRpZmZlcmVudCBtYXkgY29uZnVzZSB1c2VyLAotICAgICAgICBlc3BlY2lhbGx5IGlm
IG1hY3JvIGlzbid0IGluY2x1ZGVkIGluIGEgcGF0Y2guCi0KLSAgICAgICAgKiBld2svZXdrX2pz
LmNwcDoKLSAgICAgICAgKGV3a19qc19vYmplY3RfbmV3KToKLSAgICAgICAgKGV3a19qc19vYmpl
Y3RfZnJlZSk6Ci0gICAgICAgIChld2tfanNfb2JqZWN0X3ZpZXdfZ2V0KToKLSAgICAgICAgKGV3
a19qc19vYmplY3RfcHJvcGVydGllc19nZXQpOgotICAgICAgICAoZXdrX2pzX29iamVjdF9uYW1l
X2dldCk6Ci0gICAgICAgIChld2tfanNfb2JqZWN0X2ludm9rZSk6Ci0gICAgICAgIChld2tfanNf
b2JqZWN0X3R5cGVfZ2V0KToKLSAgICAgICAgKGV3a19qc19vYmplY3RfdHlwZV9zZXQpOgotICAg
ICAgICAoZXdrX2pzX3ZhcmlhbnRfZnJlZSk6Ci0gICAgICAgIChld2tfanNfdmFyaWFudF9hcnJh
eV9mcmVlKToKLQotMjAxMi0wMS0xMiAgS3dhbmdIeXVrIEtpbSAgPGh5dWtpLmtpbUBzYW1zdW5n
LmNvbT4KLQotICAgICAgICBbRUZMXSBNb2RpZnkgc29tZSBBUEkncyBpbXBsZW1lbnRhdGlvbiB0
byBsZXQgaXQgZGlyZWN0bHkgcGFzcyBFaW5hX1JlY3RhbmdsZSBpbnRvIEludFJlY3QuCi0gICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NTY5NQotCi0gICAg
ICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCi0KLSAgICAgICAgRGVyZWZlcmVuY2UgRWlu
YV9SZWN0YW5nbGUgcG9pbnRlcnMgc28gdGhlIHNob3J0ZXIgSW50UmVjdCBjb25zdHJ1Y3RvciBj
YW4gYmUgdXNlZC4KLQotICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChld2tf
dmlld19wYWludF9jb250ZXh0X2NsaXApOgotICAgICAgICAoZXdrX3ZpZXdfcGFpbnRfY29udGV4
dF9wYWludCk6Ci0gICAgICAgIChld2tfdmlld19wYWludF9jb250ZXh0X3BhaW50X2NvbnRlbnRz
KToKLSAgICAgICAgKGV3a192aWV3X3BhaW50KToKLSAgICAgICAgKGV3a192aWV3X3BhaW50X2Nv
bnRlbnRzKToKLQotMjAxMi0wMS0xMSAgSnVuZ0ppayBMZWUgIDxqdW5namlrLmxlZUBzYW1zdW5n
LmNvbT4KLQotICAgICAgICBbRUZMXSBSZWZhY3RvciBzaW5nbGUgYmFja2luZyBzdG9yZSBzY3Jv
bGwgY29kZS4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTc1MjQzCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgWm9sdGFuIEhlcmN6ZWcuCi0KLSAgICAgICAg
UmVtb3ZlIHRoZSBkdXBsaWNhdGVkIGNvZGUgYW5kIHJlZmFjdG9yIHRoZSBzY3JvbGwgcHJvY2Vk
dXJlLgotICAgICAgICBXaGVyZXZlciB0aGUgcGFnZSBpcyBzY3JvbGxlZCwgdGhlcmUgYXJlIG9u
ZSBzY3JlZW4gY29weSBhbmQgdHdvIHVwZGF0ZXMuCi0gICAgICAgIFRoaXMgcGF0Y2ggb3B0aW1p
c2VzIHRoZSBzY3JvbGwgcHJvY2VkdXJlIGJ5IGxlc3MgY2FsY3VsYXRpb24uCi0KLSAgICAgICAg
KiBld2svZXdrX3ZpZXdfc2luZ2xlLmNwcDoKLSAgICAgICAgKF9ld2tfdmlld19zY3JlZW5fbW92
ZSk6Ci0gICAgICAgIChfZXdrX3ZpZXdfc2luZ2xlX3Njcm9sbF9wcm9jZXNzX3NpbmdsZSk6Ci0K
LTIwMTItMDEtMTEgIEt3YW5nSHl1ayBLaW0gIDxoeXVraS5raW1Ac2Ftc3VuZy5jb20+Ci0KLSAg
ICAgICAgW0VGTF0gRml4IHBhZ2UgcmVuZGVyaW5nIGlzc3VlIG9uIGV3a192aWV3X3RpbGVkLgot
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU2ODYKLQot
ICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgotCi0gICAgICAgIEFzIGZvciBub3cg
dGhlIGRpc2NhcmQgb2YgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUgZG9lc24ndCByZXNldCBpdHMg
b3duIGNvbnRlbnRzIHNpemUgaW5mb3JtYXRpb24KLSAgICAgICAgYW5kIGV3a190aWxlZF9iYWNr
aW5nX3N0b3JlIGp1c3QgaWdub3JlcyB0aGUgcmVxdWVzdCBpZiBuZXcgY29udGVudHMgc2l6ZSBj
aGFuZ2UgcmVxdWVzdCB3b3VsZCBjb250YWluCi0gICAgICAgIHRoZSBzYW1lIHNpemUgY29tcGFy
ZWQgdG8gdGhlIG9uZSB0aGF0IGl0IG93bnMsCi0gICAgICAgIGNvbnRlbnRzIHNpemUgY2hhbmdl
IHJlcXVlc3QgY29taW5nIGZyb20gQ2hyb21lQ2xpZW50RWZsOjpjb250ZW50c1NpemVDaGFuZ2Vk
KCkgQVBJIGNhbiBiZSBza2lwcGVkCi0gICAgICAgIGFuZCB0aGVyZWZvcmUgd2ViIHBhZ2UgY2Fu
J3QgYmUgcHJlc2VudGVkIHByb3Blcmx5LgotICAgICAgICBJbiBvcmRlciB0byByZXNvbHZlIHRo
aXMsIEkganVzdCBhZGQgY29kZSB0byByZXNldCBjb250ZW50cyBzaXplIGluZm9ybWF0aW9uIHdo
aWNoIGV3a190aWxlZF9iYWNraW5nX3N0b3JlIG93bnMKLSAgICAgICAgd2hlbiBpdCBkaXNjYXJk
cyBpdHMgb3duIGRhdGEuCi0KLSAgICAgICAgKiBld2svZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUu
Y3BwOgotICAgICAgICAoZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfZmx1c2gpOgotCi0yMDEyLTAx
LTEwICBUb21hc3ogTW9yYXdza2kgIDx0Lm1vcmF3c2tpQHNhbXN1bmcuY29tPgotCi0gICAgICAg
IFtFRkxdIEFkZGVkIHNtYXJ0IHBvaW50ZXJzIHRvIEV3a19WaWV3X1BhaW50X0NvbnRleHQgY2xh
c3MgYW5kIGRvbmUgbWlub3IgcmVmYWN0b3JpbmcuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NTgzNwotCi0gICAgICAgIFJldmlld2VkIGJ5IFJ5b3N1
a2UgTml3YS4KLQotICAgICAgICBDaGFuZ2VkIGdyYXBoaWNDb250ZXh0IHJhdyBwb2ludGVyIHRv
IE93blB0ciBzbWFydCBwb2ludGVyLgotICAgICAgICBSZW5hbWVkIGNyIHRvIGNhaXJvIGFuZCBt
YWRlIGl0IGEgUmVmUHRyLgotCi0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAg
KGV3a192aWV3X3BhaW50X2NvbnRleHRfbmV3KTogQWRqdXN0IHRvIGF1dG8gcG9pbnRlcnMgdXNl
LgotICAgICAgICAoZXdrX3ZpZXdfcGFpbnRfY29udGV4dF9mcmVlKTogUmVtb3ZlZCBleHBsaWNp
dCByYXcgcG9pbnRlcnMgZGVsZXRlLgotICAgICAgICBBZGp1c3QgdG8gYXV0byBwb2ludGVycyB1
c2U6Ci0gICAgICAgIChld2tfdmlld19wYWludF9jb250ZXh0X3NhdmUpOgotICAgICAgICAoZXdr
X3ZpZXdfcGFpbnRfY29udGV4dF9yZXN0b3JlKToKLSAgICAgICAgKGV3a192aWV3X3BhaW50X2Nv
bnRleHRfY2xpcCk6Ci0gICAgICAgIChld2tfdmlld19wYWludF9jb250ZXh0X3BhaW50KToKLSAg
ICAgICAgKGV3a192aWV3X3BhaW50X2NvbnRleHRfcGFpbnRfY29udGVudHMpOgotCi0yMDEyLTAx
LTA5ICBSYXBoYWVsIEt1Ym8gZGEgQ29zdGEgIDxrdWJvQHByb2Z1c2lvbi5tb2JpPgotCi0gICAg
ICAgIFtFRkxdIEFkZCBnZXR0ZXIgZm9yIEV3a19KU19PYmplY3Q6OnZpZXcuCi0gICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NTg2OAotCi0gICAgICAgIFJl
dmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCi0KLSAgICAgICAgU28gZmFyIHRoZSB2aWV3IGFzc29j
aWF0ZWQgd2l0aCBhIGdpdmVuIEpTIG9iamVjdCB3YXMgYSBwcml2YXRlCi0gICAgICAgIHByb3Bl
cnR5IG9ubHkgYWNjZXNzaWJsZSB0byBld2sgaXRzZWxmLiBUaGlzIGRvZXMgbm90IG1ha2UgbXVj
aCBzZW5zZSwKLSAgICAgICAgYXMgb25lIG9mdGVuIG5lZWRzIHRvIGtub3cgd2hpY2ggdmlldyBh
IGNlcnRhaW4gbWV0aG9kIHdhcyBpbnZva2VkCi0gICAgICAgIGZyb20sIGZvciBleGFtcGxlLgot
Ci0gICAgICAgICogZXdrL2V3a19qcy5jcHA6Ci0gICAgICAgIChld2tfanNfb2JqZWN0X3ZpZXdf
Z2V0KToKLSAgICAgICAgKiBld2svZXdrX2pzLmg6Ci0KLTIwMTItMDEtMDYgIEp1bmdKaWsgTGVl
ICA8anVuZ2ppay5sZWVAc2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW0VGTF0gQWRkIG5ldyBwcmUt
cmVuZGVyaW5nIGNvZGUuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03MzQzMAotCi0gICAgICAgIFJldmlld2VkIGJ5IFpvbHRhbiBIZXJjemVnLgotCi0g
ICAgICAgIEFkZCBuZXcgcHJlLXJlbmRlcmluZyBjb2RlIHRvIHByZS1yZW5kZXIgdGhlIHZpZXcg
YXJlYSBtb3JlIGVmZmljaWVudGx5LgotICAgICAgICBBdCBmaXJzdCBmaW5kIGNlbnRlcmVkIHZp
ZXcgcG9zaXRpb24gd2hlcmUgYmFja2luZyBzdG9yZSBzdGFydHMgdG8gcXVldWluZyB0aGUgcmVu
ZGVyIHJlcXVlc3QgZnJvbS4KLSAgICAgICAgQW5kIGFwcGVuZCB0aGUgcmVxdWVzdCBpbnRvIHRo
ZSB0aWxlZCBiYWNraW5nIHN0b3JlIGluIHNwaXJhbCBvcmRlci4KLQotICAgICAgICAqIGV3ay9l
d2tfcHJpdmF0ZS5oOgotICAgICAgICAqIGV3ay9ld2tfdGlsZWRfYmFja2luZ19zdG9yZS5jcHA6
Ci0gICAgICAgIChld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVfcmVuZGVyX3RpbGVfYWRkKToK
LSAgICAgICAgKGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3ByZV9yZW5kZXJfc3BpcmFsX3F1ZXVl
KToKLSAgICAgICAgKiBld2svZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUuaDoKLSAgICAgICAgKiBl
d2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoX2V3a192aWV3X3NtYXJ0X3ByZV9yZW5kZXJfc3Rh
cnQpOgotICAgICAgICAoZXdrX3ZpZXdfYmFzZV9zbWFydF9zZXQpOgotICAgICAgICAoZXdrX3Zp
ZXdfcHJlX3JlbmRlcl9zdGFydCk6Ci0gICAgICAgICogZXdrL2V3a192aWV3Lmg6Ci0gICAgICAg
ICogZXdrL2V3a192aWV3X3RpbGVkLmNwcDoKLSAgICAgICAgKF9ld2tfdmlld190aWxlZF9yZWN0
X2NvbGxpc2lvbl9jaGVjayk6Ci0gICAgICAgIChfZXdrX3ZpZXdfdGlsZWRfcmVjdF9jb2xsaXNp
b25fcmVzb2x2ZSk6Ci0gICAgICAgIChfZXdrX3ZpZXdfdGlsZWRfc21hcnRfcHJlX3JlbmRlcl9z
dGFydCk6Ci0gICAgICAgIChld2tfdmlld190aWxlZF9zbWFydF9zZXQpOgotCi0yMDEyLTAxLTA1
ICBLd2FuZ0h5dWsgS2ltICA8aHl1a2kua2ltQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxd
IEludmFsaWRhdGlvbiByZXF1ZXN0IGZvciBld2tfdmlldyBjYW4gYmUgZGlzY2FyZGVkIHdpdGhv
dXQgcmVuZGVyaW5nLgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NzE1NjQKLQotICAgICAgICBSZXZpZXdlZCBieSBIYWppbWUgTW9yaXRhLgotCi0gICAg
ICAgIEFzIGV3a192aWV3IGRpc2NhcmRzIGEgcXVldWUgZm9yIGludmFsaWRhdGlvbiByZXF1ZXN0
cwotICAgICAgICBhcyBzb29uIGFzIGl0IHByb2NlZWRzIHRoZSByZXBhaW50IHN0ZXAsIHRoZSBu
ZXdseSBwcm9kdWNlZCBpbnZhbGlkYXRpb24gcmVxdWVzdHMKLSAgICAgICAgZnJvbSBld2tfdmll
d19sYXlvdXRfaWZfbmVlZGVkX3JlY3Vyc2l2ZSBBUEkgY2FuIGJlIGRpc2NhcmRlZAotICAgICAg
ICBhbmQgdW5wYWludGVkIGRpcnR5IGFyZWEgY2FuIG9jY3VyLgotICAgICAgICBBcyB0aGlzIGlz
c3VlIGlzIGp1c3QgY2F1c2VkIGJ5IHVzZSBvZiBmbHVzaCBBUEkgaW4gcmVwYWludCBzdGVwLAot
ICAgICAgICAoaW50ZXJuYWwgQVBJKSBld2tfdmlld19yZXBhaW50c19nZXQgaXMgcmVwbGFjZWQg
d2l0aCBld2tfdmlld19yZXBhaW50c19wb3AKLSAgICAgICAgaW4gb3JkZXIgdG8gbWFrZSBzdXJl
IHRoYXQgb2xkIGludmFsaWRhdGlvbiByZXF1ZXN0cyBhcmUgcmVtb3ZlZCBmcm9tIHF1ZXVlLgot
ICAgICAgICBBbmQgaW4gYWRkaXRpb24gdG8gdGhhdCwgZXdrX3ZpZXdfcmVwYWludF9hZGQgaXMg
bW9kaWZpZWQKLSAgICAgICAgaW4gb3JkZXIgdG8gbGV0IHF1ZXVlIG9mIGludmFsaWRhdGlvbiBy
ZXF1ZXN0cyBrZWVwIGEgcHJvcGVyIHNpemUuCi0gICAgICAgIEFzIGEgcmVzdWx0IGZsdXNoIEFQ
SSB3b24ndCBiZSB1c2VkIGZvciB0aGUgcmVwYWludCBzdGVwLgotCi0gICAgICAgICogZXdrL2V3
a19wcml2YXRlLmg6Ci0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAgKF9ld2tf
dmlld19yZXBhaW50X2FkZCk6Ci0gICAgICAgIChfZXdrX3ZpZXdfc21hcnRfY2FsY3VsYXRlKToK
LSAgICAgICAgKGV3a192aWV3X3JlcGFpbnRzX3BvcCk6Ci0gICAgICAgICogZXdrL2V3a192aWV3
X3NpbmdsZS5jcHA6Ci0gICAgICAgIChfZXdrX3ZpZXdfc2luZ2xlX3NtYXJ0X3JlcGFpbnRzX3By
b2Nlc3MpOgotICAgICAgICAqIGV3ay9ld2tfdmlld190aWxlZC5jcHA6Ci0gICAgICAgIChfZXdr
X3ZpZXdfdGlsZWRfc21hcnRfcmVwYWludHNfcHJvY2Vzcyk6Ci0KLTIwMTItMDEtMDQgIEt3YW5n
SHl1ayBLaW0gIDxoeXVraS5raW1Ac2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW0VGTF0gUmVmYWN0
b3IgdGhlIHdheSB1c2luZyBjYWlybyBpbiBld2tfdGlsZWRfYmFja2luZ19zdG9yZS4KLSAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0OTkzCi0KLSAgICAg
ICAgUmV2aWV3ZWQgYnkgTmlrb2xhcyBaaW1tZXJtYW5uLgotCi0gICAgICAgIEZvciBub3cgdGhl
cmUgYXJlIGNhaXJvIHJlbGF0ZWQgY29kZSBzY2F0dGVyZWQgYXJvdW5kIHRoZSBld2tfdGlsZWRf
YmFja2luZ19zdG9yZS4KLSAgICAgICAgRnJvbSB0aGUgcG9pbnQgb2YgY29kZSBjb21wbGV4aXR5
IHZpZXcsIGl0IGRvZXNuJ3QgbG9vayBnb29kIGFuZCBJIGNvdWxkbid0IG5vdGljZSBhbnkgYmVu
ZWZpdCBvZiBpdC4KLSAgICAgICAgU28sIHRoaXMgcGF0Y2ggd2lsbCBsZXQgY2Fpcm8gcmVsYXRl
ZCBjb2RlIGJlIHVzZWQgb25seSBmb3IgcGFpbnRpbmcgb3BlcmF0aW9uLgotCi0gICAgICAgICog
ZXdrL2V3a190aWxlZF9iYWNraW5nX3N0b3JlLmg6Ci0gICAgICAgICogZXdrL2V3a190aWxlZF9t
YXRyaXguY3BwOgotICAgICAgICAoZXdrX3RpbGVfbWF0cml4X3RpbGVfbmV3KToKLSAgICAgICAg
KiBld2svZXdrX3RpbGVkX21vZGVsLmNwcDoKLSAgICAgICAgKGV3a190aWxlX25ldyk6Ci0gICAg
ICAgIChld2tfdGlsZV9mcmVlKToKLSAgICAgICAgKiBld2svZXdrX3ZpZXdfdGlsZWQuY3BwOgot
ICAgICAgICAoX2V3a192aWV3X3RpbGVkX3JlbmRlcl9jYik6Ci0KLTIwMTItMDEtMDMgIEpvbiBM
ZWUgIDxqb25sZWVAYXBwbGUuY29tPgotCi0gICAgICAgIExlYWsgb2YgV2ViTm90aWZpY2F0aW9u
Q2xpZW50IHdoZW4gcGFnZSBpcyBkZXN0cm95ZWQKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTc0OTgwCi0gICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMDYx
MTIzMT4KLQotICAgICAgICBSZXZpZXdlZCBieSBNYXJrIFJvd2UuCi0KLSAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwuY3BwOgotICAgICAgICAo
V2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpub3RpZmljYXRpb25Db250
cm9sbGVyRGVzdHJveWVkKTogU3R1YiBpbXBsZW1lbnRhdGlvbiwgYmVjYXVzZQotICAgICAgICB0
aGUgbm90aWZpY2F0aW9uIHByZXNlbnRlciBpcyB1bmltcGxlbWVudGVkLgotICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbC5oOgotCi0yMDEyLTAx
LTAyICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+Ci0KLSAgICAgICAg
W0VGTF0gUmVtb3ZlIHdoaXRlc3BhY2UvZGVjbGFyYXRpb24gc3R5bGUgZXhjZXB0aW9uCi0gICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NTQyNAotCi0gICAg
ICAgIFJldmlld2VkIGJ5IERhdmlkIExldmluLgotCi0gICAgICAgIEVGTCBwb3J0IGRvZXNuJ3Qg
bmVlZCB0byBhdm9pZCAqd2hpdGVzcGFjZS9kZWNsYXJhdGlvbiogZXhjZXB0aW9uIGJlY2F1c2Ug
b2YgY29kaW5nCi0gICAgICAgIHN0eWxlIGNoYW5nZS4gSG93ZXZlciwgRVdlYkxhdW5jaGVyIGFu
ZCBNaW5pQnJvd3NlciBuZWVkIHRvIHVzZSBFRkwgY29kaW5nIHN0eWxlIGJlY2F1c2UKLSAgICAg
ICAgdGhleSBhcmUgRUZMIGFwcGxpY2F0aW9uLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwOgotICAgICAgICAqIGV3ay9ld2tfZnJhbWUuY3BwOgot
ICAgICAgICAoZXdrX2ZyYW1lX2ZlZWRfdG91Y2hfZXZlbnQpOgotICAgICAgICAqIGV3ay9ld2tf
dGlsZWRfbWF0cml4LmNwcDoKLSAgICAgICAgKGV3a190aWxlX21hdHJpeF9pbnZhbGlkYXRlKToK
LSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotCi0yMDEyLTAxLTAxICBFdW5taSBMZWUgIDxl
dW5taTE1LmxlZUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBbRUZMXSBNb3ZlIGZ1bmN0aW9uIHRv
IGdldCBkcGkgdG8gdGhlIFdlYkNvcmUvcGxhdGZvcm0vZWZsL0VmbFNjcmVlblV0aWxpdGllcy5j
cHAuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NTI5
MgotCi0gICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCi0KLSAgICAgICAgTW92ZSBl
d2tfdXRpbF9kcGlfZ2V0KCkgZnVuY3Rpb24gaW4gdGhlIGV3a191dGlsLmNwcCB0byB0aGUKLSAg
ICAgICAgV2ViQ29yZS9wbGF0Zm9ybS9lZmwvRWZsU2NyZWVuVXRpbGl0aWVzLmNwcCBpbiBvcmRl
ciB0byB1c2UgaXQgaW4gdGhlIFdlYktpdDIuCi0gICAgICAgIFRoZSBmdW5jdGlvbidzIG5hbWUg
aXMgY2hhbmdlZCB0byBnZXREUEkoKS4KLQotICAgICAgICAqIGV3ay9ld2tfcHJpdmF0ZS5oOgot
ICAgICAgICAqIGV3ay9ld2tfdXRpbC5jcHA6Ci0gICAgICAgIChld2tfdXRpbF9pbWFnZV9mcm9t
X2NhaXJvX3N1cmZhY2VfYWRkKToKLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAg
ICAoX2V3a192aWV3X3ZpZXdwb3J0X2F0dHJpYnV0ZXNfY29tcHV0ZSk6Ci0KLTIwMTEtMTItMjcg
IEp1bmdKaWsgTGVlICA8anVuZ2ppay5sZWVAc2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW0VGTF0g
UmVtb3ZlIGR1cGxpY2F0ZSBjb2RlIGFuZCByZW1vdmUgZW50cnkgYWZ0ZXIgZnJlZWluZyB0aGUg
bWF0cml4LgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NzUwNzMKLQotICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtlIE5pd2EuCi0KLSAgICAgICAgUmVt
b3ZlIGR1cGxpY2F0ZSBld2tfdGlsZV91bnVzZWRfY2FjaGVfZnJlZXplIGNvZGUuCi0gICAgICAg
IEVudHJ5IG1hdHJpeCBzaG91bGQgZnJlZSBmaXJzdCBiZWZvcmUgcmVtb3ZpbmcgZW50cnkgaW4g
aW5saXN0LAotICAgICAgICBiZWNhdXNlIGluIGVpbmFfbWF0cml4c3BhcmNlX2ZyZWUgY2FsbGJh
Y2sgZW50cnkgcG9pbnRlciBpcyByZWZlcmVuY2VkIHRvIGRlY3JlYXNlIHRoZSByZWZlcmVuY2Ug
Y291bnQuCi0KLSAgICAgICAgKiBld2svZXdrX3RpbGVkX21hdHJpeC5jcHA6Ci0gICAgICAgIChl
d2tfdGlsZV9tYXRyaXhfZnJlZSk6Ci0KLTIwMTEtMTItMjYgIFJ5dWFuIENob2kgIDxyeXVhbi5j
aG9pQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxdIExhc3QgcGFyYW1ldGVyIG9mIGV3a192
aWV3X3Njcm9sbCBpcyBhbHdheXMgdHJ1ZS4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTc1MTU3Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBL
bGluZy4KLQotICAgICAgICBSZW1vdmUgdW5uZWNlc3NhcnkgcGFyYW1ldGVyIGluIGV3a192aWV3
X3Njcm9sbCBhbmQgcmVsYXRlZCBjb2RlLCBiZWNhdXNlCi0gICAgICAgIGl0J3MgYWx3YXlzIHRy
dWUgYW5kIGV3a192aWV3X3RpbGUgY2FuIHNjcm9sbCB3aGVuIGl0IGlzIG9ubHkgdHJ1ZS4KLQot
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChX
ZWJDb3JlOjpDaHJvbWVDbGllbnRFZmw6OnNjcm9sbCk6Ci0gICAgICAgICogZXdrL2V3a19wcml2
YXRlLmg6Ci0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAgKF9ld2tfdmlld19z
Y3JvbGxfYWRkKToKLSAgICAgICAgKGV3a192aWV3X3Njcm9sbCk6Ci0gICAgICAgICogZXdrL2V3
a192aWV3Lmg6Ci0gICAgICAgICogZXdrL2V3a192aWV3X3RpbGVkLmNwcDoKLSAgICAgICAgKF9l
d2tfdmlld190aWxlZF9zbWFydF9zY3JvbGxzX3Byb2Nlc3MpOgotCi0yMDExLTEyLTIzICBSYXBo
YWVsIEt1Ym8gZGEgQ29zdGEgIDxrdWJvQHByb2Z1c2lvbi5tb2JpPgotCi0gICAgICAgIFVucmV2
aWV3ZWQ7IGZpeCBidWlsZCB3aXRoIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKS4KLQotICAg
ICAgICAqIGV3ay9ld2tfanMuY3BwOiBJbmNsdWRlIGV3a19sb2dnaW5nLmggZm9yIEVSUigpLgot
Ci0yMDExLTEyLTIyICBNYXJpdXN6IEdyemVnb3JjenlrICA8bWFyaXVzei5nQHNhbXN1bmcuY29t
PgotCi0gICAgICAgIFtFRkxdIE1pc3NpbmcgcGx1Z2lucyBzdXBwb3J0IGZvciBlZmwgcG9ydAot
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQ1MDUKLQot
ICAgICAgICBSZXZpZXdlZCBieSBBbmRlcnMgQ2FybHNzb24uCi0KLSAgICAgICAgSW1wbGVtZW50
YXRpb24gb2YgZXdrX2ZyYW1lX3BsdWdpbl9jcmVhdGUoKSAtIGNyZWF0aW5nIFBsdWdpblZpZXcu
Ci0KLSAgICAgICAgKiBld2svZXdrX2ZyYW1lLmNwcDoKLSAgICAgICAgKGV3a19mcmFtZV9wbHVn
aW5fY3JlYXRlKToKLQotMjAxMS0xMi0yMiAgRXVubWkgTGVlICA8ZXVubWkxNS5sZWVAc2Ftc3Vu
Zy5jb20+Ci0KLSAgICAgICAgW0VGTF0gUmVtb3ZlIHVudXNlZCBwYXJhbWV0ZXIgbmFtZXMuCi0g
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDcwMgotCi0g
ICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgotCi0gICAgICAgICogZXdrL2V3a192aWV3
LmNwcDoKLSAgICAgICAgKF9ld2tfdmlld19vbl9mb2N1c19pbik6Ci0gICAgICAgIChfZXdrX3Zp
ZXdfb25fZm9jdXNfb3V0KToKLSAgICAgICAgKF9ld2tfdmlld19vbl9tb3VzZV93aGVlbCk6Ci0g
ICAgICAgIChfZXdrX3ZpZXdfb25fbW91c2VfZG93bik6Ci0gICAgICAgIChfZXdrX3ZpZXdfb25f
bW91c2VfdXApOgotICAgICAgICAoX2V3a192aWV3X29uX21vdXNlX21vdmUpOgotICAgICAgICAo
X2V3a192aWV3X29uX2tleV9kb3duKToKLSAgICAgICAgKF9ld2tfdmlld19vbl9rZXlfdXApOgot
ICAgICAgICAqIGV3ay9ld2tfdmlld19zaW5nbGUuY3BwOgotICAgICAgICAoX2V3a192aWV3X3Np
bmdsZV9vbl9kZWwpOgotCi0yMDExLTEyLTIyICBLd2FuZ0h5dWsgS2ltICA8aHl1a2kua2ltQHNh
bXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxdIEludmFsaWRhdGlvbiByZXF1ZXN0IGZvciBvdXRz
aWRlIG9mIHZpc2libGUgYXJlYSBkb2Vzbid0IHNlZW0gdG8gb2NjdXIgd2hlbiB0aWxlZCB2aWV3
IGlzIHVzZWQuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03MDg3MwotCi0gICAgICAgIFJldmlld2VkIGJ5IEFuZGVycyBDYXJsc3Nvbi4KLQotICAgICAg
ICBJbiBvcmRlciB0byBndWFyYW50ZWUgdGhlIHBhaW50IG91dHNpZGUgb2Ygdmlld3BvcnQgd2hl
biBld2tfdmlld190aWxlZCBpcyB1c2VkLAotICAgICAgICBld2tfZnJhbWVfcGFpbnRfZnVsbF9z
ZXQgc2hvdWxkIGJlIGNhbGxlZCBieSBld2tfZnJhbWVfdmlld19jcmVhdGVfZm9yX3ZpZXcKLSAg
ICAgICAgd2hlbiBmcmFtZSBpcyBjcmVhdGVkIGJlY2F1c2UgZnJhbWUgdmlldyBjYW4gYmUgY3Jl
YXRlZCBuZXdseSBhcyBzb29uIGFzIHBhZ2UgaXMgY3JlYXRlZC4KLSAgICAgICAgQnV0IGZvciB0
aGUgZXdrX3ZpZXdfc2luZ2xlLCBhcyBpdCBkb2Vzbid0IG5lZWQgdG8gcGFpbnQgb3V0c2lkZSBv
ZiB2aWV3cG9ydCwKLSAgICAgICAgZXdrX2ZyYW1lX3BhaW50X2Z1bGxfc2V0IG11c3Qgbm90IGJl
IGNhbGxlZCBmb3IgZXdrX3ZpZXdfc2luZ2xlLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJD
bGllbnRFZmw6OnRyYW5zaXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2UpOgotICAgICAgICAqIGV3
ay9ld2tfcHJpdmF0ZS5oOgotICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChl
d2tfdmlld19mcmFtZV92aWV3X2NyZWF0aW9uX25vdGlmeSk6Ci0gICAgICAgICogZXdrL2V3a192
aWV3X3RpbGVkLmNwcDoKLSAgICAgICAgKF9ld2tfdmlld190aWxlZF9zbWFydF9hZGQpOgotICAg
ICAgICAoZXdrX3ZpZXdfdGlsZWRfc21hcnRfc2V0KToKLQotMjAxMS0xMi0yMSAgTWljaGHFgiBQ
YWt1xYJhIHZlbCBSdXRrYSAgPG0ucGFrdWxhQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxd
IEFkZCAnU2VsZWN0IEFsbCcgb3B0aW9uIHRvIGNvbnRleHQgbWVudXMgaW4gV2ViS2l0LUVGTC4K
LSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0OTIwCi0K
LSAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCi0KLSAgICAgICAgRW5hYmxlICdTZWxl
Y3QgQWxsJyBvcHRpb24gdG8gY29udGV4dCBtZW51cyBjYWxsZWQgb24gaW5wdXQgZmllbGRzIGlu
IFdlYktpdC1FRkwKLSAgICAgICAgYXMgaXQgaXMgZW5hYmxlZCBpbiBHVEsgYW5kIFFUIHBvcnRz
LgotCi0gICAgICAgICogZXdrL2V3a19jb250ZXh0bWVudS5oOiBBZGQgbmV3IGNvbnRleHQgbWVu
dSBvcHRpb24gJ1NlbGVjdCBBbGwnLgotCi0yMDExLTEyLTE5ICBSeXVhbiBDaG9pICA8cnl1YW4u
Y2hvaUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBbRUZMXSBDaGFuZ2UgdGhlIGJlaGF2aW9yIG9m
IGV3a192aWV3X3NjYWxlX3NldC4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTcwMDc4Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCi0K
LSAgICAgICAgUmVtb3ZlIGNlbnRlciBwb2ludCBiYXNpcyB6b29tIGFsaWdubWVudCBmcm9tIGV3
a192aWV3X3NjYWxlX3NldCB0byBjYWxsCi0gICAgICAgIFBhZ2U6OnNldFBhZ2VTY2FsZUZhY3Rv
ciB3aXRob3V0IGFueSBhZGp1c3RtZW50LgotCi0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoK
LSAgICAgICAgKGV3a192aWV3X3NjYWxlX3NldCk6Ci0gICAgICAgICogZXdrL2V3a192aWV3Lmg6
Ci0KLTIwMTEtMTItMTkgIFJhcGhhZWwgS3VibyBkYSBDb3N0YSAgPGt1Ym9AcHJvZnVzaW9uLm1v
Ymk+Ci0KLSAgICAgICAgVW5yZXZpZXdlZDsgZml4IHRoZSBidWlsZCB3aXRoIEVOQUJMRShUT1VD
SF9FVkVOVFMpIGFmdGVyIHIxMDMxNjcuCi0KLSAgICAgICAgVGhpcyBwYXJ0bHkgcmV2ZXJ0cyBy
MTAyMjk3OiB0aGUgVG91Y2h7U3RhcnQsTW92ZSxFbmQsQ2FuY2VsfSBldmVudHMKLSAgICAgICAg
YXJlIG5vdCBpbiBhIHNlcGFyYXRlIGVudW0gYW55bW9yZSAodGhleSBhcmUgcGFydCBvZgotICAg
ICAgICBXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50KSwgc28gdGhlIGFzc2VydGlvbnMgaW4gQXNzZXJ0
TWF0Y2hpbmdFbnVtcy5jcHAKLSAgICAgICAgYWx3YXlzIGZhaWwuIFNldHRpbmcgRVdLX1RPVUNI
X1NUQVJUIHRvIFRvdWNoU3RhcnQgZmVlbHMgZXZlbiBtb3JlCi0gICAgICAgIGhhY2tpc2gsIHNv
IHdlIGp1c3QgY29udmVydCB0aGUgdHlwZXMgbWFudWFsbHkgYWdhaW4gZm9yIG5vdy4KLQotICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwOgotICAgICAgICAq
IGV3ay9ld2tfZnJhbWUuY3BwOgotICAgICAgICAoZXdrX2ZyYW1lX2ZlZWRfdG91Y2hfZXZlbnQp
OgotCi0yMDExLTEyLTE3ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+Ci0KLSAgICAgICAg
TWFrZSBQbGF0Zm9ybVRvdWNoRXZlbnQgaW5oZXJpdCBmcm9tIFBsYXRmb3JtRXZlbnQKLSAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0Nzc3Ci0KLSAgICAg
ICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KLQotICAgICAgICAqIGV3ay9ld2tfZnJhbWUu
Y3BwOgotICAgICAgICAoZXdrX2ZyYW1lX2ZlZWRfdG91Y2hfZXZlbnQpOgotICAgICAgICBSZW5h
bWUgVG91Y2hFdmVudFR5cGUgdG8gUGxhdGZvcm1FdmVudDo6VHlwZS4KLQotMjAxMS0xMi0xNiAg
Unlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KLQotICAgICAgICBSZW5hbWUgcmVnaXN0
ZXJDb21tYW5kRm9yKFVuZG98UmVkbykgdG8gcmVnaXN0ZXIoVW5kb3xSZWRvKVN0ZXAKLSAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0NzQ4Ci0KLSAgICAg
ICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9F
ZGl0b3JDbGllbnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50RWZsOjpy
ZWdpc3RlclVuZG9TdGVwKToKLSAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEVmbDo6cmVn
aXN0ZXJSZWRvU3RlcCk6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZs
Lmg6Ci0KLTIwMTEtMTItMTYgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KLQotICAgICAg
ICBHaXZlIFBsYXRmb3JtRXZlbnRzIGEgYmFzZSBjbGFzcwotICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ2ODUKLQotICAgICAgICBSZXZpZXdlZCBieSBB
bmRlcnMgQ2FybHNzb24uCi0KLSAgICAgICAgQWRkIGEgYmFzZSBjbGFzcyBmb3IgUGxhdGZvcm1N
b3VzZUV2ZW50LCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQsIFBsYXRmb3JtV2hlZWxFdmVudAotICAg
ICAgICBhbmQgUGxhdGZvcm1HZXN0dXJlRXZlbnQgYW5kIG1vdmUgVHlwZSBlbnVtZXJhdGlvbiBh
bmQgbW9kaWZpZXJzIGRvd24gdG8gaXQuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0
b3JDbGllbnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50RWZsOjpoYW5k
bGVFZGl0aW5nS2V5Ym9hcmRFdmVudCk6Ci0KLTIwMTEtMTItMTYgIFJ5b3N1a2UgTml3YSAgPHJu
aXdhQHdlYmtpdC5vcmc+Ci0KLSAgICAgICAgT25seSBFZGl0Q29tbWFuZENvbXBvc2l0aW9uIHNo
b3VsZCBpbXBsZW1lbnQgdW5hcHBseSBhbmQgcmVhcHBseQotICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ0OTAKLQotICAgICAgICBSZXZpZXdlZCBieSBF
cmljIFNlaWRlbC4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5j
cHA6Ci0gICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRFZmw6OnJlZ2lzdGVyQ29tbWFuZEZv
clVuZG8pOgotICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50RWZsOjpyZWdpc3RlckNvbW1h
bmRGb3JSZWRvKToKLSAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEVmbDo6dW5kbyk6Ci0g
ICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRFZmw6OnJlZG8pOgotICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5oOgotCi0yMDExLTEyLTE1ICBSYXBoYWVsIEt1Ym8g
ZGEgQ29zdGEgIDxrdWJvQHByb2Z1c2lvbi5tb2JpPgotCi0gICAgICAgIFtFRkxdIENsZWFuIHVw
IGFuZCByZWZhY3RvciB0aGUgbWVtb3J5IGNhY2hlIGZ1bmN0aW9ucyBpbiBld2tfc2V0dGluZ3Mu
Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjE0MAot
Ci0gICAgICAgIFJldmlld2VkIGJ5IEFudG9uaW8gR29tZXMuCi0KLSAgICAgICAgVXNlIGEgYmV0
dGVyIG5hbWluZyBwcmVmaXgsIGFzICJld2tfc2V0dGluZ3NfY2FjaGUiIHdhcyB0b28gZ2VuZXJh
bCwKLSAgICAgICAgYW5kIG1ha2UgaXQgcG9zc2libGUgdG8gcGFzcyBhbGwgcGFyYW1ldGVycyB0
bwotICAgICAgICBNZW1vcnlDYWNoZTo6c2V0Q2FwYWNpdGllcygpLgotCi0gICAgICAgICogZXdr
L2V3a19zZXR0aW5ncy5jcHA6Ci0gICAgICAgIChld2tfc2V0dGluZ3Nfb2JqZWN0X2NhY2hlX2Nh
cGFjaXR5X3NldCk6Ci0gICAgICAgIChld2tfc2V0dGluZ3Nfb2JqZWN0X2NhY2hlX2VuYWJsZV9n
ZXQpOgotICAgICAgICAoZXdrX3NldHRpbmdzX29iamVjdF9jYWNoZV9lbmFibGVfc2V0KToKLSAg
ICAgICAgKiBld2svZXdrX3NldHRpbmdzLmg6Ci0KLTIwMTEtMTItMTUgIFJhcGhhZWwgS3VibyBk
YSBDb3N0YSAgPGt1Ym9AcHJvZnVzaW9uLm1vYmk+Ci0KLSAgICAgICAgW0VGTF0gQWRkIGEgZmV3
IG1vcmUgd2ViIGRhdGFiYXNlIGZ1bmN0aW9ucyB0byBld2tfc2V0dGluZ3MuCi0gICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjE0OAotCi0gICAgICAgIFJl
dmlld2VkIGJ5IEFudG9uaW8gR29tZXMuCi0KLSAgICAgICAgQWRkIGNvZGUgdG8gY2hhbmdlIHRo
ZSBkZWZhdWx0IHF1b3RhICh0aGVyZSBhcyBvbmx5IGEgZ2V0dGVyIHNvIGZhcikKLSAgICAgICAg
YW5kIG9uZSB0byBjbGVhciB0aGUgZGF0YWJhc2VzLgotCi0gICAgICAgICogZXdrL2V3a19zZXR0
aW5ncy5jcHA6Ci0gICAgICAgIChld2tfc2V0dGluZ3Nfd2ViX2RhdGFiYXNlX2RlZmF1bHRfcXVv
dGFfc2V0KToKLSAgICAgICAgKGV3a19zZXR0aW5nc193ZWJfZGF0YWJhc2VfY2xlYXIpOgotICAg
ICAgICAqIGV3ay9ld2tfc2V0dGluZ3MuaDoKLQotMjAxMS0xMi0xNCAgR3l1eW91bmcgS2ltICA8
Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxdIENoYW5nZSBlZmwgc3R5
bGUgdmFyaWFibGUgbmFtZSB3aXRoIFdlYktpdCBzdHlsZSBmb3IgaW50ZXJuYWwgZnVuY3Rpb25z
LgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ0NzQK
LQotICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtlIE5pd2EuCi0KLSAgICAgICAgSW4gb3JkZXIg
dG8gYmUgbW9yZSBjb21wbGlhbnQgd2l0aCBXZWJLaXQgY29kaW5nIHN0eWxlLCB2YXJpYWJsZSBu
YW1lcyBvZiBpbnRlcm5hbCBmdW5jdGlvbnMKLSAgICAgICAgc2hvdWxkIGJlIGNoYW5nZWQgd2l0
aCBXZWJLaXQgY29kaW5nIHN0eWxlLgotCi0gICAgICAgICogZXdrL2V3a19wcml2YXRlLmg6Ci0g
ICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAgKGV3a192aWV3X3Njcm9sbCk6Ci0K
LTIwMTEtMTItMTQgIEppbmcgWmhhbyAgPGppbmd6aGFvQGNocm9taXVtLm9yZz4KLQotICAgICAg
ICBPcGVuaW5nIHR3byBwb3B1cCBtZW51cyBieSBkaXNwYXRjaEV2ZW50KCkgbWFrZXMgcHJvYmxl
bXMuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MzMw
NAotCi0gICAgICAgIFJldmlld2VkIGJ5IEtlbnQgVGFtdXJhLgotCi0gICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNs
aWVudEVmbDo6aGFzT3BlbmVkUG9wdXApOiBOb3QgaW1wbGVtZW50ZWQuCi0gICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmg6IE92ZXJyaWRlcyBoYXNPcGVuZWRQb3B1cCgp
LgotCi0yMDExLTEyLTEyICBSYXBoYWVsIEt1Ym8gZGEgQ29zdGEgIDxrdWJvQHByb2Z1c2lvbi5t
b2JpPgotCi0gICAgICAgIFtFRkxdIEFkZCBBUEkgdG8gcXVlcnkgdGhlIHZhbGlkaXR5IG9mIGEg
ZnJhbWUncyBTU0wgY2VydGlmaWNhdGUuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD03NDMwMgotCi0gICAgICAgIFJldmlld2VkIGJ5IEd1c3Rhdm8gTm9y
b25oYSBTaWx2YS4KLQotICAgICAgICAqIGV3ay9ld2tfZnJhbWUuY3BwOgotICAgICAgICAoZXdr
X2ZyYW1lX2NlcnRpZmljYXRlX3N0YXR1c19nZXQpOgotICAgICAgICAqIGV3ay9ld2tfZnJhbWUu
aDoKLQotMjAxMS0xMi0xMiAgUmFwaGFlbCBLdWJvIGRhIENvc3RhICA8a3Vib0Bwcm9mdXNpb24u
bW9iaT4KLQotICAgICAgICBbRUZMXSBBZGQgQVBJIHRvIG5vdGlmeSB0aGF0IG1peGVkIGNvbnRl
bnQgaGFzIGJlZW4gbG9hZGVkLgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NzQzMDEKLQotICAgICAgICBSZXZpZXdlZCBieSBHdXN0YXZvIE5vcm9uaGEg
U2lsdmEuCi0KLSAgICAgICAgV2hlbiBtaXhlZCBjb250ZW50IGlzIGRpc3BsYXllZC9ydW4sIGJv
dGggZnJhbWVzIGFuZCB2aWV3cwotICAgICAgICBlbWl0IHRoZSBwcm9wZXIgc2lnbmFscyB0byBu
b3RpZnkgQVBJIHVzZXJzLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmRp
ZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQpOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJD
bGllbnRFZmw6OmRpZFJ1bkluc2VjdXJlQ29udGVudCk6Ci0gICAgICAgICogZXdrL2V3a19mcmFt
ZS5jcHA6Ci0gICAgICAgIChld2tfZnJhbWVfdmlld19jcmVhdGVfZm9yX3ZpZXcpOgotICAgICAg
ICAoZXdrX2ZyYW1lX21peGVkX2NvbnRlbnRfZGlzcGxheWVkX2dldCk6Ci0gICAgICAgIChld2tf
ZnJhbWVfbWl4ZWRfY29udGVudF9ydW5fZ2V0KToKLSAgICAgICAgKGV3a19mcmFtZV9taXhlZF9j
b250ZW50X2Rpc3BsYXllZF9zZXQpOgotICAgICAgICAoZXdrX2ZyYW1lX21peGVkX2NvbnRlbnRf
cnVuX3NldCk6Ci0gICAgICAgICogZXdrL2V3a19mcmFtZS5oOgotICAgICAgICAqIGV3ay9ld2tf
cHJpdmF0ZS5oOgotICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChld2tfdmll
d19mcmFtZV9tYWluX2NsZWFyZWQpOgotICAgICAgICAoZXdrX3ZpZXdfbWl4ZWRfY29udGVudF9k
aXNwbGF5ZWRfZ2V0KToKLSAgICAgICAgKGV3a192aWV3X21peGVkX2NvbnRlbnRfcnVuX2dldCk6
Ci0gICAgICAgIChld2tfdmlld19taXhlZF9jb250ZW50X2Rpc3BsYXllZF9zZXQpOgotICAgICAg
ICAoZXdrX3ZpZXdfbWl4ZWRfY29udGVudF9ydW5fc2V0KToKLSAgICAgICAgKiBld2svZXdrX3Zp
ZXcuaDoKLQotMjAxMS0xMi0xMiAgUmFwaGFlbCBLdWJvIGRhIENvc3RhICA8a3Vib0Bwcm9mdXNp
b24ubW9iaT4KLQotICAgICAgICBbRUZMXSBBZGQgQVBJIHRvIG1hbmFnZSByb290IFguNTA5IENB
IGNlcnRpZmljYXRlcy4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTc0MzAwCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgTWFydGluIFJvYmluc29uLgotCi0g
ICAgICAgICogZXdrL2V3a19uZXR3b3JrLmNwcDoKLSAgICAgICAgKGV3a19uZXR3b3JrX3Rsc19j
YV9jZXJ0aWZpY2F0ZXNfcGF0aF9nZXQpOgotICAgICAgICAoZXdrX25ldHdvcmtfdGxzX2NhX2Nl
cnRpZmljYXRlc19wYXRoX3NldCk6Ci0gICAgICAgICogZXdrL2V3a19uZXR3b3JrLmg6Ci0KLTIw
MTEtMTItMTIgIFJhcGhhZWwgS3VibyBkYSBDb3N0YSAgPGt1Ym9AcHJvZnVzaW9uLm1vYmk+Ci0K
LSAgICAgICAgW0VGTF0gQWRkIEFQSSB0byBjb250cm9sIHdoZXRoZXIgU1NMIGNlcnRpZmljYXRl
cyBzaG91bGQgYmUgY2hlY2tlZC4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTc0Mjk5Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgTWFydGluIFJvYmluc29u
LgotCi0gICAgICAgICogZXdrL2V3a19tYWluLmNwcDoKLSAgICAgICAgKF9ld2tfaW5pdF9ib2R5
KTogRXhwbGljaXRseSBkaXNhYmxlIGNlcnRpZmljYXRlIGNoZWNrcyBieSBkZWZhdWx0LgotICAg
ICAgICAqIGV3ay9ld2tfbmV0d29yay5jcHA6Ci0gICAgICAgIChld2tfbmV0d29ya190bHNfY2Vy
dGlmaWNhdGVfY2hlY2tfZ2V0KToKLSAgICAgICAgKGV3a19uZXR3b3JrX3Rsc19jZXJ0aWZpY2F0
ZV9jaGVja19zZXQpOgotICAgICAgICAqIGV3ay9ld2tfbmV0d29yay5oOgotCi0yMDExLTEyLTA3
ICBSeXVhbiBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBbRUZMXSBJ
bnRyb2R1Y2UgQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAuCi0gICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTIzOAotCi0gICAgICAgIFJldmlld2VkIGJ5IEZp
bGlwIFBpemxvLgotCi0gICAgICAgIEFkZCBBc3NlcnRNYXRjaGluZ0VudW1zLmNwcCB0byBhc3Nl
cnQgdGhhdCB2YXJpb3VzIFdlYktpdCBBUEkgZW51bSB2YWx1ZXMKLSAgICAgICAgbWF0Y2ggdG8g
V2ViQ29yZSBkZWZpbmVkIGVudW0gdmFsdWVzLgotCi0gICAgICAgICogQ01ha2VMaXN0c0VmbC50
eHQ6IGFkZCBBc3NlcnRNYXRjaGluZ0VudW1zLmNwcC4KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcDogQWRkZWQuCi0gICAgICAgICogZXdrL2V3a19mcmFt
ZS5jcHA6Ci0gICAgICAgIChld2tfZnJhbWVfZmVlZF90b3VjaF9ldmVudCk6IHJlbW92ZSBzd2l0
Y2ggc3RhdGVtZW50IHdpY2hpIGNvbnZlcnQgV2ViS2l0IEFQSSBlbnVtIHZhbHVlIHRvIFdlYkNv
cmUgZGVmaW5lZCBlbnVtIHZhbHVlcy4KLSAgICAgICAgKGV3a19mcmFtZV90ZXh0X3NlbGVjdGlv
bl90eXBlX2dldCk6IERpdHRvLgotICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAg
IChld2tfdmlld19tb2RlX3NldCk6IERpdHRvLgotICAgICAgICAoZXdrX3ZpZXdfbW9kZV9nZXQp
OiBEaXR0by4KLSAgICAgICAgKGV3a192aWV3X3Zpc2liaWxpdHlfc3RhdGVfc2V0KTogRGl0dG8u
Ci0gICAgICAgIChld2tfdmlld192aXNpYmlsaXR5X3N0YXRlX2dldCk6IERpdHRvLgotICAgICAg
ICAqIGV3ay9ld2tfZnJhbWUuaDogZml4IG9yZGVyIG9mIGVudW0gdmFsdWVzLgotICAgICAgICAq
IGV3ay9ld2tfdmlldy5oOiBhZGQgbWlzc2luZyBlbnVtIHZhbHVlLgotCi0yMDExLTEyLTA3ICBN
YXJ5IFd1ICA8bWFyeS53dUB0b3JjaG1vYmlsZS5jb20uY24+Ci0KLSAgICAgICAgQ2hhbmdlIGZ1
bmN0aW9uIG5hbWUgSW5pdGlhbGl6ZUxvZ2dpbmdDaGFubmVsc0lmTmVjZXNzYXJ5IHRvIGZvbGxv
dyBjb2Rpbmcgc3R5bGUgZ3VpZGVsaW5lCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD03Mzk4NgotCi0gICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9o
ZGUgQ2hyaXN0aWFuc2VuLgotCi0gICAgICAgICogZXdrL2V3a19tYWluLmNwcDoKLSAgICAgICAg
KF9ld2tfaW5pdF9ib2R5KToKLQotMjAxMS0xMi0wNSAgUmFwaGFlbCBLdWJvIGRhIENvc3RhICA8
a3Vib0Bwcm9mdXNpb24ubW9iaT4KLQotICAgICAgICBbRUZMXSBEbyBub3QgbG9zZSBtZXNzYWdl
IGZsYWdzIHdoZW4gY29udmVydGluZyB0by9mcm9tIFNvdXAgUmVxdWVzdHMvUmVzcG9uc2VzCi0g
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MzkyNAotCi0g
ICAgICAgIFJldmlld2VkIGJ5IEd1c3Rhdm8gTm9yb25oYSBTaWx2YS4KLQotICAgICAgICBBcHBs
eSB0aGUgc2FtZSBjaGFuZ2UgYWRkZWQgdG8gdGhlIEdUSysgcG9ydCBpbiByNTUwODYgdG8gcHJl
dmVudAotICAgICAgICBzb3VwIG1lc3NhZ2UgZmxhZ3MgZnJvbSBiZWluZyBsb3N0IGJ5IHVwZGF0
aW5nIHRoZSByZXF1ZXN0IGZsYWdzIHdoZW4KLSAgICAgICAgYSByZXNwb25zZSBpcyByZWNlaXZl
ZC4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcDoK
LSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZFJlY2Vp
dmVSZXNwb25zZSk6Ci0KLTIwMTEtMTItMDQgIEthbmdpbCBIYW4gIDxrYW5naWwuaGFuQHNhbXN1
bmcuY29tPgotCi0gICAgICAgIFtFRkxdIEZpeCBicm9rZW4gVVRGLTggY2hhcmFjdGVycyBpc3N1
ZSBvbiBlZGl0b3IgY29tbWFuZC4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTczNTE2Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgUnlvc3VrZSBOaXdhLgot
Ci0gICAgICAgIFRoZSBpc3N1ZSBoYXMgYmVlbiBkZXNjcmliZWQgdGhhdCBLb3JlYW4gY2hhcmFj
dGVyIGlzIGJyb2tlbiBvbiBwYXN0aW5nIGNvcGllZCB0ZXh0LgotICAgICAgICBJbiBteSBhbmFs
eXNpcywgdGhpcyBpcyBmcm9tIGxhY2sgb2YgZm9ybWF0IGNoYW5nZSBiZXR3ZWVuIEMgc3R5bGUg
VVRGLTggY2hhcmFjdGVyIHBvaW50ZXIgYW5kIEMrKyBzdHlsZSBTdHJpbmcgcmVmZXJlbmNlLgot
ICAgICAgICBUaGVyZWZvcmUsIHRoaXMgcGF0Y2ggd2lsbCBjb252ZXJ0IHR5cGVzIHRvIHJlc29s
dmUgdGhlIHByb2JsZW0uCi0KLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAo
X2V3a192aWV3X2VkaXRvcl9jb21tYW5kKToKLQotMjAxMS0xMi0wMyAgQ2hhbmdTZW9rIE9oICA8
c2hpdmFtaWRvd0BnbWFpbC5jb20+Ci0KLSAgICAgICAgW0VGTF0gUmV2aXNlIGV3a192aWV3X2Zp
eGVkX2xheW91dF9zaXplX3NldAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NzM0MDEKLQotICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KLQot
ICAgICAgICBJbXByb3ZlIHJlYWRhYmlsaXR5IGFuZCByZXBsYWNlIGZvcmNlTGF5b3V0IHRvIHNl
dE5lZWRzTGF5b3V0LAotICAgICAgICBzaW5jZSBpdCBzb21ldGltZXMgY2F1c2VzIGRvdWJsZSBk
cmF3aW5nLgotCi0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAgKGV3a192aWV3
X2ZpeGVkX2xheW91dF9zaXplX3NldCk6Ci0KLTIwMTEtMTItMDIgIEp1bmdKaWsgTGVlICA8anVu
Z2ppay5sZWVAc2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW0VGTF0gUmVtb3ZlIGVudHJ5IHBvaW50
ZXIgYmVmb3JlIGZyZWVpbmcgaXQgZnJvbSBtYXRyaXguCi0gICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MzYyNQotCi0gICAgICAgIFJldmlld2VkIGJ5IFJ5
b3N1a2UgTml3YS4KLQotICAgICAgICBUbyBwcmV2ZW50IGxlYXZpbmcgZGFuZ2xpbmcgcG9pbnRl
ciBvbiB0aGUgbWF0cml4LCByZW1vdmUgdGhlIGVudHJ5IGJlZm9yZSBmcmVlaW5nIGl0LgotCi0g
ICAgICAgICogZXdrL2V3a190aWxlZF9tYXRyaXguY3BwOgotICAgICAgICAoZXdrX3RpbGVfbWF0
cml4X2ZyZWUpOgotCi0yMDExLTEyLTAxICBSeXVhbiBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5n
LmNvbT4KLQotICAgICAgICBbRUZMXSBDbGVhbnVwIGluY2x1ZGVzIHRvIHJlZHVjZSBjb2RlIGNv
bXBsZXhpdHkuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03MzU0MAotCi0gICAgICAgIFJldmlld2VkIGJ5IEd1c3Rhdm8gTm9yb25oYSBTaWx2YS4KLQot
ICAgICAgICBFV2ViS2l0LmggaXMgYSBsaXN0IG9mIHB1YmxpYyBoZWFkZXIgZmlsZXMgZm9yIGFw
cGxpY2F0aW9uIHRvIHVzZSBXZWJLaXQvRWZsLgotICAgICAgICBUaGlzIHBhdGNoIHJlbW92ZXMg
RVdlYktpdC5oIGluIGludGVybmFsIGZpbGVzIHRvIHJlZHVjZSB1bm5lY2Vzc2FyeSBpbmNsdWRl
cy4KLSAgICAgICAgSW4gYWRkaXRpb24sIHJlb3JkZXJzIG9wdGlvbmFsIGluY2x1ZGVzIHRvIGZp
eCBzdHlsZS4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHA6
Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcDoK
LSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuY3BwOgotICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKiBld2sv
ZXdrX2F1dGhfc291cC5jcHA6Ci0gICAgICAgICogZXdrL2V3a19jb250ZXh0bWVudS5jcHA6Ci0g
ICAgICAgICogZXdrL2V3a19jb29raWVzLmNwcDoKLSAgICAgICAgKiBld2svZXdrX2ZyYW1lLmNw
cDoKLSAgICAgICAgKiBld2svZXdrX2hpc3RvcnkuY3BwOgotICAgICAgICAqIGV3ay9ld2tfbWFp
bi5jcHA6Ci0gICAgICAgICogZXdrL2V3a19wcml2YXRlLmg6Ci0gICAgICAgICogZXdrL2V3a19z
ZXR0aW5ncy5jcHA6Ci0gICAgICAgICogZXdrL2V3a191dGlsLmNwcDoKLSAgICAgICAgKiBld2sv
ZXdrX3ZpZXcuY3BwOgotICAgICAgICAqIGV3ay9ld2tfdmlld19zaW5nbGUuY3BwOgotICAgICAg
ICAqIGV3ay9ld2tfdmlld190aWxlZC5jcHA6Ci0gICAgICAgICogZXdrL2V3a193aW5kb3dfZmVh
dHVyZXMuY3BwOgotCi0yMDExLTEyLTAxICBSYXBoYWVsIEt1Ym8gZGEgQ29zdGEgIDxrdWJvQHBy
b2Z1c2lvbi5tb2JpPgotCi0gICAgICAgIFtFRkxdIFJlbW92ZSB0aGUgZXdrX3Byb3RvY29sX2hh
bmRsZXItcmVsYXRlZCBjb2RlCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD03MzAxOAotCi0gICAgICAgIFJldmlld2VkIGJ5IE1hcnRpbiBSb2JpbnNvbi4K
LQotICAgICAgICBUaGlzIGZ1bmN0aW9uYWxpdHkgaGFzIGJlZW4gYnJva2VuIHNpbmNlIHI5OTM2
NCwgd2hpY2ggc3RvcHBlZCBzZXR0aW5nCi0gICAgICAgIHRoZSAid2Via2l0LXJlc291cmNlIiBw
cm9wZXJ0eSBuZWVkZWQgYnkKLSAgICAgICAgZXdrX3Byb3RvY29sX2hhbmRsZXJfc291cC5jcHAu
Ci0KLSAgICAgICAgQWZ0ZXIgZ2l2aW5nIGl0IHNvbWUgdGhvdWdodCwgaXQgbG9va3MgY2xlYXIg
dGhhdCB0aGlzIGNvZGUgc2hvdWxkIG5vdAotICAgICAgICBiZSBpbiBld2sgYXQgYWxsOiBpdCBp
cyB2ZXJ5IGJhY2tlbmQtc3BlY2lmaWMgKGV2ZW4gaW4gdGhlIGZ1bmN0aW9uCi0gICAgICAgIHNp
Z25hdHVyZXMgaXQgZXhwZWN0cyksIGFuZCBpdCBvbmx5IGFsbG93cyBjYWxsZXJzIHRvIHJlZ2lz
dGVyIHNjaGVtZXMKLSAgICAgICAgb25jZSBhbmQgcHJvdmlkZSBhIHNpbmdsZSBoYW5kbGVyIHRv
IGFsbCBvZiB0aGVtLCB3aGljaCBkb2VzIG5vdCBtYWtlCi0gICAgICAgIG11Y2ggc2Vuc2UuCi0K
LSAgICAgICAgQ2xpZW50IGNvZGUgdXNpbmcgV2ViS2l0LUVGTCB3aXRoIHRoZSBzb3VwIGJhY2tl
bmQgc2hvdWxkIGJlCi0gICAgICAgIHJlc3BvbnNpYmxlIGZvciBjcmVhdGluZyB0aGVpciBvd24g
cmVxdWVzdCBoYW5kbGVycyAoaWUuIHN1YmNsYXNzCi0gICAgICAgIFNvdXBSZXF1ZXN0KSBpbnN0
ZWFkLgotCi0gICAgICAgIEZvciB0aGF0IHRvIGJlIHBvc3NpYmxlLCBhIGZ1bmN0aW9uIHdoaWNo
IHJldHVybnMgdGhlIGRlZmF1bHQKLSAgICAgICAgU291cFNlc3Npb24gdXNlZCBieSBXZWJLaXQg
aGFzIGJlZW4gYWRkZWQuCi0KLSAgICAgICAgKiBDTWFrZUxpc3RzRWZsLnR4dDoKLSAgICAgICAg
KiBld2svZXdrX25ldHdvcmsuY3BwOgotICAgICAgICAoZXdrX25ldHdvcmtfZGVmYXVsdF9zb3Vw
X3Nlc3Npb25fZ2V0KToKLSAgICAgICAgKiBld2svZXdrX25ldHdvcmsuaDoKLSAgICAgICAgKiBl
d2svZXdrX3ByaXZhdGUuaDoKLSAgICAgICAgKiBld2svZXdrX3Byb3RvY29sX2hhbmRsZXIuY3Bw
OiBSZW1vdmVkLgotICAgICAgICAqIGV3ay9ld2tfcHJvdG9jb2xfaGFuZGxlci5oOiBSZW1vdmVk
LgotICAgICAgICAqIGV3ay9ld2tfcHJvdG9jb2xfaGFuZGxlcl9zb3VwLmNwcDogUmVtb3ZlZC4K
LSAgICAgICAgKiBld2svZXdrX3Byb3RvY29sX2hhbmRsZXJfc291cC5oOiBSZW1vdmVkLgotICAg
ICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgICogZXdrL2V3a192aWV3Lmg6Ci0KLTIw
MTEtMTEtMzAgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KLQotICAg
ICAgICBVbnJldmlld2VkLiBGaXggYnVpbGQgZXJyb3Igd2hlbiBOT1RJRklDQVRJT05TIGZlYXR1
cmUgaXMgZW5hYmxlZC4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVm
bC5oOgotCi0yMDExLTExLTMwICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgot
Ci0gICAgICAgIFJlbW92ZSBhbiB1bm5lZWRlZCBhcmd1bWVudCBmcm9tIEZyYW1lTG9hZGVyQ2xp
ZW50Ojpkb3dubG9hZAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NzM0ODYKLQotICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgotCi0gICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwOgotICAgICAgICAo
V2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmRvd25sb2FkKToKLSAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5oOgotICAgICAgICBVcGRhdGVkIGZvciB0
aGUgY2hhbmdlLgotCi0yMDExLTExLTMwICBKdW5nSmlrIExlZSAgPGp1bmdqaWsubGVlQHNhbXN1
bmcuY29tPgotCi0gICAgICAgIFtFRkxdIEFwcGx5IGFscGhhIGNoYW5uZWwgaW50byBld2tfdGls
ZWRfYmFja2luZ19zdG9yZSdzIHRpbGUgb2JqZWN0cy4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczMDE1Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQ2hh
bmcgU2h1LgotCi0gICAgICAgIEFkZCBhbHBoYV9zZXQgQVBJIHRvIHRpbGVkIGJhY2tpbmcgc3Rv
cmUgdG8gYXBwbHkgYWxwaGEgY2hhbm5lbCBvbiB0aWxlIG9iamVjdHMuCi0KLSAgICAgICAgKiBl
d2svZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUuY3BwOgotICAgICAgICAoX2V3a190aWxlZF9iYWNr
aW5nX3N0b3JlX3RpbGVfYXNzb2NpYXRlKToKLSAgICAgICAgKGV3a190aWxlZF9iYWNraW5nX3N0
b3JlX2FscGhhX3NldCk6Ci0gICAgICAgICogZXdrL2V3a190aWxlZF9iYWNraW5nX3N0b3JlLmg6
Ci0gICAgICAgICogZXdrL2V3a192aWV3Lmg6Ci0gICAgICAgICogZXdrL2V3a192aWV3X3RpbGVk
LmNwcDoKLSAgICAgICAgKF9ld2tfdmlld190aWxlZF9zbWFydF9iZ19jb2xvcl9zZXQpOgotICAg
ICAgICAoZXdrX3ZpZXdfdGlsZWRfc21hcnRfc2V0KToKLQotMjAxMS0xMS0zMCAgR3l1eW91bmcg
S2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxdIFJlbW92ZSBk
dXBsaWNhdGVkIFVBIGluZm9ybWF0aW9uIGZ1bmN0aW9uLgotICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzMxMDQKLQotICAgICAgICBSZXZpZXdlZCBieSBG
aWxpcCBQaXpsby4KLQotICAgICAgICBUaG91Z2ggZXdrX3NldHRpbmcgYWxyZWFkeSBpbXBsZW1l
bnRlZCBhbiBpbnRlcm5hbCBmdW5jdGlvbiBmb3IgVUEodXNlciBhZ2VudCkgaW5mb3JtYXRpb24s
Ci0gICAgICAgIEZyYW1lTG9hZGVyQ2xpZW50RWZsIGhhcyB1c2VkIGR1cGxpY2F0ZWQgZnVuY3Rp
b24gZm9yIFVBIGluZm9ybWF0aW9uLiBTbywgdGhpcyBwYXRjaCByZW1vdmVzCi0gICAgICAgIHRo
ZSBVQSBpbmZvcm1hdGlvbiBmdW5jdGlvbiBvZiBGcmFtZUxvYWRlckNsaWVudEVmbCBhbmQgdXNl
cyBhbiBpbnRlcm5hbCBVQSBpbmZvcm1hdGlvbiBmdW5jdGlvbgotICAgICAgICBvZiBld2tfc2V0
dGluZy4gSW4gYWRkaXRpb24sIFVBIGluZm9tYXRpb24gZnVuY3Rpb24gaXMgZW5oYW5jZWQgZm9y
IG90aGVyIHBvcnRzLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29yZTo6Y29tcG9zZVVzZXJBZ2VudCk6Ci0gICAgICAg
ICogZXdrL2V3a19zZXR0aW5ncy5jcHA6Ci0gICAgICAgIChld2tfc2V0dGluZ3NfZGVmYXVsdF91
c2VyX2FnZW50X2dldCk6Ci0KLTIwMTEtMTEtMzAgIFRvbWFzeiBNb3Jhd3NraSAgPHQubW9yYXdz
a2lAc2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW0VGTF0gQWRkZWQgREVGQVVMVF9DQUNIRV9TSVpF
IGRlZmluZS4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTczMTIwCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgRmlsaXAgUGl6bG8uCi0KLSAgICAgICAgUmVt
b3ZlIGZvcm0gY29kZSA0MDk2MDAwMCB2YWx1ZSB1c2VkIGluIGNvZGUgZGlyZWN0bHkgYW5kIHJl
cGxhY2VkIGl0IGJ5IERFRkFVTFRfQ0FDSEVfU0laRSBkZWZpbmUuIFRoZSBjb2RlCi0gICAgICAg
IGxvb2tzIGNsZWFuZXIgbm93LgotCi0gICAgICAgICogZXdrL2V3a190aWxlZF9tYXRyaXguY3Bw
OgotICAgICAgICAoZXdrX3RpbGVfbWF0cml4X25ldyk6Ci0KLTIwMTEtMTEtMjggIEp1bmdKaWsg
TGVlICA8anVuZ2ppay5sZWVAc2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW0VGTF0gUmVuYW1lIGFi
YnJldmlhdGVkIHZhbHVlIG5hbWVzIHRvIGNwcCBzdHlsZSBuYW1lcy4KLSAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczMTkzCi0KLSAgICAgICAgUmV2aWV3
ZWQgYnkgQW5kcmVhcyBLbGluZy4KLQotICAgICAgICBSZW5hbWUgYWJicmV2aWF0ZWQgdmFsdWVz
IG5hbWUgdG8gY3BwIHN0eWxlIG5hbWVzIGluIGV3a19zaW5nbGUvdGlsZWRfdmlldy5jcHAuCi0K
LSAgICAgICAgKiBld2svZXdrX3ZpZXdfc2luZ2xlLmNwcDoKLSAgICAgICAgKF9ld2tfdmlld180
Yl9tb3ZlX3JlZ2lvbl91cCk6Ci0gICAgICAgIChfZXdrX3ZpZXdfNGJfbW92ZV9yZWdpb25fZG93
bik6Ci0gICAgICAgIChfZXdrX3ZpZXdfNGJfbW92ZV9saW5lX2xlZnQpOgotICAgICAgICAoX2V3
a192aWV3XzRiX21vdmVfbGluZV9yaWdodCk6Ci0gICAgICAgIChfZXdrX3ZpZXdfNGJfbW92ZV9y
ZWdpb25fbGVmdCk6Ci0gICAgICAgIChfZXdrX3ZpZXdfNGJfbW92ZV9yZWdpb25fcmlnaHQpOgot
ICAgICAgICAoX2V3a192aWV3XzRiX21vdmVfcmVnaW9uKToKLSAgICAgICAgKF9ld2tfdmlld19z
aW5nbGVfc2Nyb2xsX3Byb2Nlc3Nfc2luZ2xlKToKLSAgICAgICAgKF9ld2tfdmlld19zaW5nbGVf
c21hcnRfcmVwYWludHNfcHJvY2Vzcyk6Ci0gICAgICAgICogZXdrL2V3a192aWV3X3RpbGVkLmNw
cDoKLSAgICAgICAgKF9ld2tfdmlld190aWxlZF9zbWFydF9zY3JvbGxzX3Byb2Nlc3MpOgotICAg
ICAgICAoX2V3a192aWV3X3RpbGVkX3NtYXJ0X3JlcGFpbnRzX3Byb2Nlc3MpOgotCi0yMDExLTEx
LTI2ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KLQotICAgICAg
ICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTAxMTkzLgotICAgICAgICBodHRwOi8vdHJhYy53
ZWJraXQub3JnL2NoYW5nZXNldC8xMDExOTMKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTczMTU4Ci0KLSAgICAgICAgQnJlYWtzIFdpbmRvd3MgYW5kIFF0
IG1pbmltYWwuIChSZXF1ZXN0ZWQgYnkgcGZlbGRtYW4gb24KLSAgICAgICAgI3dlYmtpdCkuCi0K
LSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRFZmwuY3BwOgotICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEVmbC5oOgotCi0yMDExLTExLTI0ICBL
d2FuZ0h5dWsgS2ltICA8aHl1a2kua2ltQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxdIEFk
ZCBpbXBsZW1lbnRhdGlvbiBjb25zaWRlcmluZyBld2tfdGlsZWRfYmFja2luZ19zdG9yZSdzIHZp
c2libGUgc3RhdHVzLgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NzE3OTEKLQotICAgICAgICBSZXZpZXdlZCBieSBHdXN0YXZvIE5vcm9uaGEgU2lsdmEu
Ci0KLSAgICAgICAgSW4gb3JkZXIgdG8gcHJldmVudCByZW5kZXJpbmcgYW5kIHByZS1yZW5kZXJp
bmcgd2hpbGUgYmFja2luZyBzdG9yZSBpcyBoaWRkZW4sCi0gICAgICAgIGl0cyB2aXNpYmlsaXR5
IGlzIGNoZWNrZWQgYW5kIHByZS1yZW5kZXJpbmcgaXMgaGFuZGxlZCB3aGVuZXZlciBiYWNraW5n
IHN0b3JlIGlzIHNob3duIG9yIGhpZGRlbi4KLQotICAgICAgICAqIGV3ay9ld2tfdGlsZWRfYmFj
a2luZ19zdG9yZS5jcHA6Ci0gICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfaXRlbV9w
cm9jZXNzX2lkbGVyX3N0YXJ0KToKLSAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9p
dGVtX2ZpbGwpOgotICAgICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3NtYXJ0X3Nob3cp
OgotICAgICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3NtYXJ0X2hpZGUpOgotICAgICAg
ICAoZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfYWRkKToKLQotMjAxMS0xMS0yMiAgUGF2ZWwgRmVs
ZG1hbiAgPHBmZWxkbWFuQGdvb2dsZS5jb20+Ci0KLSAgICAgICAgV2ViIEluc3BlY3RvcjogcmVt
b3ZlIEluc3BlY3Rvcjo6YnJpbmdUb0Zyb250IGZyb20gdGhlIHByb3RvY29sLgotICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzI5MzcKLQotICAgICAgICBS
ZXZpZXdlZCBieSBZdXJ5IFNlbWlraGF0c2t5LgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQv
SW5zcGVjdG9yQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNsaWVu
dEVmbDo6YnJpbmdGcm9udGVuZFRvRnJvbnQpOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0lu
c3BlY3RvckNsaWVudEVmbC5oOgotCi0yMDExLTExLTIxICBSYXBoYWVsIEt1Ym8gZGEgQ29zdGEg
IDxrdWJvQHByb2Z1c2lvbi5tb2JpPgotCi0gICAgICAgIFtFRkxdIEFkZCBtb3JlIGFwcGNhY2hl
IGZ1bmN0aW9ucyB0byBld2tfc2V0dGluZ3MuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03MjE0MwotCi0gICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGgg
Um9oZGUgQ2hyaXN0aWFuc2VuLgotCi0gICAgICAgIEFkZCBhIGZldyBtb3JlIGZ1bmN0aW9ucyB0
byBtYWtlIGl0IHBvc3NpYmxlIHRvIGhhdmUgbW9yZSBjb250cm9sIG92ZXIKLSAgICAgICAgdGhl
IG9mZmxpbmUgd2ViIGFwcGxpY2F0aW9uIGZlYXR1cmVzLgotCi0gICAgICAgICogZXdrL2V3a19z
ZXR0aW5ncy5jcHA6Ci0gICAgICAgIChld2tfc2V0dGluZ3NfYXBwbGljYXRpb25fY2FjaGVfbWF4
X3F1b3RhX2dldCk6Ci0gICAgICAgIChld2tfc2V0dGluZ3NfYXBwbGljYXRpb25fY2FjaGVfbWF4
X3F1b3RhX3NldCk6Ci0gICAgICAgIChld2tfc2V0dGluZ3NfYXBwbGljYXRpb25fY2FjaGVfY2xl
YXIpOgotICAgICAgICAqIGV3ay9ld2tfc2V0dGluZ3MuaDoKLQotMjAxMS0xMC0xNyAgQW50b25p
byBHb21lcyAgPGFnb21lc0ByaW0uY29tPgotCi0gICAgICAgIFBhc3MgYSBGcmFtZSogcGFyYW1l
dGVyIGluIEVkaXRvckNsaWVudDo6cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbgotICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzAyNDgKLQotICAgICAgICBS
ZXZpZXdlZCBieSBSeW9zdWtlIE5pd2EuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0
b3JDbGllbnRFZmwuY3BwOiBNYWtlIHVzZSBvZiB0aGUgbmV3bHkgYWRkZWQgRnJhbWUqIHBhcmFt
ZXRlci4KLSAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEVmbDo6cmVzcG9uZFRvQ2hhbmdl
ZFNlbGVjdGlvbik6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmg6
Ci0KLTIwMTEtMTEtMTcgIEt3YW5nSHl1ayBLaW0gIDxoeXVraS5raW1Ac2Ftc3VuZy5jb20+Ci0K
LSAgICAgICAgW0VGTF0gQWRkIG1hdHJpeCBsaXN0IHRvIHJldXNlIHRpbGUgbWF0cml4IGZvciBl
YWNoIGRpZmZlcmVudCB6b29tIGxldmVsLgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9Njg1OTUKLQotICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJv
aGRlIENocmlzdGlhbnNlbi4KLQotICAgICAgICBBZGQgbWF0cml4IGxpc3QgdG8ga2VlcCBlYWNo
IHRpbGUgbWF0cml4IGNvcnJlc3BvbmRpbmcgdG8gZWFjaCBkaWZmZXJlbnQgem9vbSBsZXZlbCB3
aGVuIHpvb20gbGV2ZWwgaXMgY2hhbmdlZC4KLSAgICAgICAgVGhlbiBiYWNraW5nIHN0b3JlIGNh
biByZXVzZSB0aWxlIG1hdHJpeCBieSBnZXR0aW5nIGl0IGZyb20gdGhpcyBtYXRyaXggbGlzdC4K
LQotICAgICAgICAqIGV3ay9ld2tfdGlsZWRfYmFja2luZ19zdG9yZS5jcHA6Ci0gICAgICAgIChf
ZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfbW9kZWxfbWF0cml4X2NyZWF0ZSk6Ci0gICAgICAgIChf
ZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfc21hcnRfY2FsY3VsYXRlKToKLSAgICAgICAgKF9ld2tf
dGlsZWRfYmFja2luZ19zdG9yZV96b29tX3NldF9pbnRlcm5hbCk6Ci0gICAgICAgICogZXdrL2V3
a190aWxlZF9tYXRyaXguY3BwOgotICAgICAgICAoZXdrX3RpbGVfbWF0cml4X2VudHJ5X2dldCk6
Ci0gICAgICAgIChfZXdrX3RpbGVfbWF0cml4X2NlbGxfZnJlZSk6Ci0gICAgICAgIChfZXdrX3Rp
bGVfbWF0cml4X3RpbGVfZnJlZSk6Ci0gICAgICAgIChld2tfdGlsZV9tYXRyaXhfbmV3KToKLSAg
ICAgICAgKGV3a190aWxlX21hdHJpeF96b29tX2xldmVsX3NldCk6Ci0gICAgICAgIChld2tfdGls
ZV9tYXRyaXhfaW52YWxpZGF0ZSk6Ci0gICAgICAgIChld2tfdGlsZV9tYXRyaXhfZnJlZSk6Ci0g
ICAgICAgIChld2tfdGlsZV9tYXRyaXhfdGlsZV9uZXcpOgotICAgICAgICAqIGV3ay9ld2tfdGls
ZWRfbWF0cml4Lmg6Ci0KLTIwMTEtMTEtMTcgIFJhcGhhZWwgS3VibyBkYSBDb3N0YSAgPGt1Ym9A
cHJvZnVzaW9uLm1vYmk+Ci0KLSAgICAgICAgW0VGTF0gQ2xlYW4gdXAgdGhlIHVzZSBvZiBEQVRB
X0RJUiBpbiB0aGUgYnVpbGRzeXN0ZW0KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTcyNjgxCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgRGFuaWVsIEJhdGVz
LgotCi0gICAgICAgIEluc3RlYWQgb2YgbWVzc2luZyB3aXRoIEJVSUxEX0RBVEFfRElSIGFuZCBQ
QVJFTlRfU0NPUEUsIGp1c3QgdXNlCi0gICAgICAgIFRIRU1FX0JJTkFSWV9ESVIgYXMgZGVmaW5l
ZCBpbiBPcHRpb25zRWZsLmNtYWtlLgotCi0gICAgICAgICogQ01ha2VMaXN0c0VmbC50eHQ6Ci0K
LTIwMTEtMTEtMTYgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KLQot
ICAgICAgICBbRUZMXSBVc2Ugc3RhbmRhcmQgYm9vbGVhbmQgZGF0YSB0eXBlIGluIHN0cnVjdC4K
LSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyNTY1Ci0K
LSAgICAgICAgUmV2aWV3ZWQgYnkgTWFydGluIFJvYmluc29uLgotCi0gICAgICAgIENoYW5nZSAq
RWluYV9Cb29sKiB1c2FnZXMgd2l0aCAqYm9vbCogaW4gbWVtYmVyIHZhcmlhYmxlcyBvZiBpbnRl
cm5hbCBzdHJ1Y3QuCi0KLSAgICAgICAgKiBld2svZXdrX2NvbnRleHRtZW51LmNwcDoKLSAgICAg
ICAgKiBld2svZXdrX2ZyYW1lLmNwcDoKLSAgICAgICAgKiBld2svZXdrX3RpbGVkX2JhY2tpbmdf
c3RvcmUuY3BwOgotICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0KLTIwMTEtMTEtMTYgIFJh
cGhhZWwgS3VibyBkYSBDb3N0YSAgPGt1Ym9AcHJvZnVzaW9uLm1vYmk+Ci0KLSAgICAgICAgW0VG
TF0gQWRkIGV3a19zZXR0aW5nc19tZW1vcnlfY2FjaGVfY2xlYXIoKS4KLSAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyMTQxCi0KLSAgICAgICAgUmV2aWV3
ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCi0KLSAgICAgICAgVGhpcyBpcyB0aGUg
c2FtZSBhcyBRdCdzIFFXZWJTZXR0aW5nczo6Y2xlYXJNZW1vcnlDYWNoZXMoKSBhbmQgaXMKLSAg
ICAgICAgcmVzcG9uc2libGUgZm9yIGNsZWFyaW5nLCBhbW9uZyBvdGhlcnMsIHRoZSBwYWdlLCBt
ZW1vcnkgYW5kIGZvbnQKLSAgICAgICAgY2FjaGVzLgotCi0gICAgICAgICogZXdrL2V3a19zZXR0
aW5ncy5jcHA6Ci0gICAgICAgIChld2tfc2V0dGluZ3NfbWVtb3J5X2NhY2hlX2NsZWFyKToKLSAg
ICAgICAgKiBld2svZXdrX3NldHRpbmdzLmg6Ci0KLTIwMTEtMTEtMTYgIFJhcGhhZWwgS3VibyBk
YSBDb3N0YSAgPGt1Ym9AcHJvZnVzaW9uLm1vYmk+Ci0KLSAgICAgICAgW0VGTF0gQ2xlYW4gdXAg
dGhlIHdlYiBkYXRhYmFzZS1yZWxhdGVkIGZ1bmN0aW9ucyBpbiBld2tfc2V0dGluZ3MuCi0gICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjEzOQotCi0gICAg
ICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgotCi0gICAgICAgIE1v
c3RseSByZW1vdmUgc29tZSB1bm5lY2Vzc2FyeSBFTkFCTEUoU1FMX0RBVEFCQVNFKSBjaGVja3Mg
YW5kIHVzZSBhCi0gICAgICAgIG1vcmUgc3RhbmRhcmQgbmFtaW5nIHNjaGVtZSBmb3IgdGhlIHJl
bGF0ZWQgc3RhdGljIHZhcmlhYmxlcy4KLQotICAgICAgICAqIGV3ay9ld2tfc2V0dGluZ3MuY3Bw
OgotICAgICAgICAoZXdrX3NldHRpbmdzX3dlYl9kYXRhYmFzZV9kZWZhdWx0X3F1b3RhX2dldCk6
Ci0gICAgICAgIChld2tfc2V0dGluZ3Nfd2ViX2RhdGFiYXNlX3BhdGhfc2V0KToKLSAgICAgICAg
KGV3a19zZXR0aW5nc193ZWJfZGF0YWJhc2VfcGF0aF9nZXQpOgotICAgICAgICAqIGV3ay9ld2tf
c2V0dGluZ3MuaDogRG9jdW1lbnQgdGhlIGRlZmF1bHQgd2ViIGRhdGFiYXNlIHBhdGggb24gZGlz
ay4KLQotMjAxMS0xMS0xNiAgUmFwaGFlbCBLdWJvIGRhIENvc3RhICA8a3Vib0Bwcm9mdXNpb24u
bW9iaT4KLQotICAgICAgICBbRUZMXSBDbGVhbiB1cCB0aGUgb2ZmbGluZSBhcHBzLXJlbGF0ZWQg
ZnVuY3Rpb25zIGluIGV3a19zZXR0aW5ncy4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTcyMTMyCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBS
b2hkZSBDaHJpc3RpYW5zZW4uCi0KLSAgICAgICAgYGV3a19zZXR0aW5nc19jYWNoZScgYW5kIGBl
d2tfdmlld19zZXR0aW5nX2NhY2hlJyBhcmUgdG9vIGNvbW1vbgotICAgICAgICBwcmVmaXhlcyBm
b3IgY29kZSB0aGF0IGlzIHJlbGF0ZWQgb25seSB0byB0aGUgSFRNTDUgYXBwIGNhY2hlCi0gICAg
ICAgIGZlYXR1cmVzLgotCi0gICAgICAgIFVzZSBgZXdrX3NldHRpbmdzX2FwcGxpY2F0aW9uX2Nh
Y2hlJyBhbmQKLSAgICAgICAgYGV3a192aWV3X3NldHRpbmdfYXBwbGljYXRpb25fY2FjaGUnIGlu
c3RlYWQuCi0KLSAgICAgICAgV2hpbGUgaGVyZSwgaW1wcm92ZSB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQgdXNlIGEgbW9yZSBjb21tb24gbmFtaW5nCi0gICAgICAgIHNjaGVtZSBmb3IgdGhlIHN0YXRp
YyB2YXJpYWJsZSB3aGljaCBob2xkcyB0aGUgY2FjaGUgcGF0aC4KLQotICAgICAgICAqIGV3ay9l
d2tfbWFpbi5jcHA6Ci0gICAgICAgIChfZXdrX2luaXRfYm9keSk6Ci0gICAgICAgICogZXdrL2V3
a19zZXR0aW5ncy5jcHA6Ci0gICAgICAgIChld2tfc2V0dGluZ3NfYXBwbGljYXRpb25fY2FjaGVf
cGF0aF9zZXQpOgotICAgICAgICAoZXdrX3NldHRpbmdzX2FwcGxpY2F0aW9uX2NhY2hlX3BhdGhf
Z2V0KToKLSAgICAgICAgKiBld2svZXdrX3NldHRpbmdzLmg6Ci0gICAgICAgICogZXdrL2V3a192
aWV3LmNwcDoKLSAgICAgICAgKGV3a192aWV3X3NldHRpbmdfYXBwbGljYXRpb25fY2FjaGVfZ2V0
KToKLSAgICAgICAgKGV3a192aWV3X3NldHRpbmdfYXBwbGljYXRpb25fY2FjaGVfc2V0KToKLSAg
ICAgICAgKiBld2svZXdrX3ZpZXcuaDoKLQotMjAxMS0xMS0xNSAgQW5kZXJzIENhcmxzc29uICA8
YW5kZXJzY2FAYXBwbGUuY29tPgotCi0gICAgICAgIEhvc3RXaW5kb3cgc2NyZWVuVG9XaW5kb3cv
d2luZG93VG9TY3JlZW4gc2hvdWxkIGJlIHNjcmVlblRvUm9vdFZpZXcvcm9vdFZpZXdUb1NjcmVl
bgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzIzOTcK
LQotICAgICAgICBSZXZpZXdlZCBieSBEYW4gQmVybnN0ZWluLgotCi0gICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNs
aWVudEVmbDo6cm9vdFZpZXdUb1NjcmVlbik6Ci0gICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGll
bnRFZmw6OnNjcmVlblRvUm9vdFZpZXcpOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9t
ZUNsaWVudEVmbC5oOgotCi0yMDExLTExLTE0ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBh
cHBsZS5jb20+Ci0KLSAgICAgICAgSG9zdFdpbmRvdyBpbnZhbGlkYXRpb24gZnVuY3Rpb25zIHNo
b3VsZCB1c2Ugcm9vdCB2aWV3IGNvb3JkaW5hdGVzCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjMzOAotCi0gICAgICAgIFJldmlld2VkIGJ5IERhbiBC
ZXJuc3RlaW4uCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3Bw
OgotICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZsOjppbnZhbGlkYXRlUm9vdFZpZXcp
OgotICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZsOjppbnZhbGlkYXRlQ29udGVudHNB
bmRSb290Vmlldyk6Ci0gICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRFZmw6OmludmFsaWRh
dGVDb250ZW50c0ZvclNsb3dTY3JvbGwpOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9t
ZUNsaWVudEVmbC5oOgotCi0yMDExLTExLTE1ICBHcnplZ29yeiBDemFqa293c2tpICA8Zy5jemFq
a293c2tpQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxdIFVzZSBFSU5BX1NBRkVUWV9PTl9O
VUxMX1JFVFVSTl9WQUwgZm9yIE5VTEwgY2hlY2tzIGluc3RlYWQgb2YgRUlOQV9TQUZFVFlfT05f
RkFMU0VfUkVUVVJOX1ZBTC4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTcwMDkxCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgRmlsaXAgUGl6bG8uCi0KLSAg
ICAgICAgUmVwbGFjZXMgRUlOQV9TQUZFVFlfT05fRkFMU0VfUkVUVVJOX1ZBTCBieSBFSU5BX1NB
RkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwgZm9yIE5VTEwgY2hlY2tzIGluIGNvbXBsaWFuY2UKLSAg
ICAgICAgd2l0aCBXZWJLaXQtRUZMIGZ1bmN0aW9ucy4KLQotICAgICAgICAqIGV3ay9ld2tfZnJh
bWUuY3BwOgotICAgICAgICAoZXdrX2ZyYW1lX2NvbnRlbnRzX3NldCk6Ci0gICAgICAgIChld2tf
ZnJhbWVfY29udGVudHNfYWx0ZXJuYXRlX3NldCk6Ci0KLTIwMTEtMTEtMTQgIEpvbmdzZW9rIFlh
bmcgIDxqczQ1LnlhbmdAc2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW0VGTF0gVXBkYXRlIGV3a19m
cmFtZV9zY3JpcHRfZXhlY3V0ZSB0byByZXR1cm4gdGhlIHJlc3VsdCBmb3IgSmF2YVNjcmlwdAot
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjU5NzIKLQot
ICAgICAgICBSZXZpZXdlZCBieSBBbnRvbmlvIEdvbWVzLgotCi0gICAgICAgIEl0IGV4ZWN1dGVz
IHRoZSBqYXZhc2NyaXB0IGFuZCBjb252ZXJ0cyB0aGUgcmVzdWx0IHRvIGEgc3RyaW5nIHVzaW5n
IHRvU3RyaW5nLgotICAgICAgICBBbmQgaXQgcmV0dXJucyB0aGUgbWVtb3J5LWFsbG9jYXRlZCBw
b2ludGVyIGZvciB0aGUgdmFsdWUuCi0KLSAgICAgICAgKiBld2svZXdrX2ZyYW1lLmNwcDoKLSAg
ICAgICAgKGV3a19mcmFtZV9zY3JpcHRfZXhlY3V0ZSk6Ci0gICAgICAgICogZXdrL2V3a19mcmFt
ZS5oOgotCi0yMDExLTExLTEzICBSYXBoYWVsIEt1Ym8gZGEgQ29zdGEgIDxrdWJvQHByb2Z1c2lv
bi5tb2JpPgotCi0gICAgICAgIFtFRkxdIEltcHJvdmUgdGhlIGRvY3VtZW50YXRpb24gb2YgZXdr
X3ZpZXdfc2V0dGluZ19sb2NhbF9zdG9yYWdlXyouCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjEzNQotCi0gICAgICAgIFJldmlld2VkIGJ5IEtlbm5l
dGggUm9oZGUgQ2hyaXN0aWFuc2VuLgotCi0gICAgICAgIEFkZCBzb21lICJzZWUgYWxzbyIgcG9p
bnRlcnMsIG1lbnRpb24gdGhlIGRlZmF1bHQgcGF0aHMgdXNlZCBmb3IgbG9jYWwKLSAgICAgICAg
c3RvcmFnZSBhbmQgZG9jdW1lbnQgaG93IHRoaW5ncyB3aWxsIG5vdCBiZSBwZXJzaXN0ZWQgdG8g
ZGlzayBpZiBhCi0gICAgICAgIHN0b3JhZ2UgcGF0aCBpcyBub3Qgc2V0LgotCi0gICAgICAgICog
ZXdrL2V3a192aWV3Lmg6Ci0KLTIwMTEtMTEtMTMgIFJhcGhhZWwgS3VibyBkYSBDb3N0YSAgPGt1
Ym9AcHJvZnVzaW9uLm1vYmk+Ci0KLSAgICAgICAgW0VGTF0gU2ltcGxpZnkgZWluYV9zdHJpbmdz
aGFyZSB1c2FnZSBpbiBld2tfc2V0dGluZ3MuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03MjEyNwotCi0gICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGgg
Um9oZGUgQ2hyaXN0aWFuc2VuLgotCi0gICAgICAgIEFjdHVhbGx5IHVzZSB0aGUgZWluYV9zdHJp
bmdzaGFyZSBmdW5jdGlvbnMgaW4gYSBzYW5lIHdheS4KLQotICAgICAgICAqIGV3ay9ld2tfc2V0
dGluZ3MuY3BwOgotICAgICAgICAoZXdrX3NldHRpbmdzX3dlYl9kYXRhYmFzZV9wYXRoX3NldCk6
IEp1c3QgdXNlCi0gICAgICAgIGVpbmFfc3RyaW5nc2hhcmVfcmVwbGFjZSBpbnN0ZWFkIG9mIGRv
aW5nIG5lZWRsZXNzIGNoZWNrcyBhbmQgdXNpbmcKLSAgICAgICAgZWluYV9zdHJpbmdzaGFyZV9h
ZGQuCi0gICAgICAgIChld2tfc2V0dGluZ3NfY2FjaGVfZGlyZWN0b3J5X3BhdGhfc2V0KTogRGl0
dG8uCi0gICAgICAgIChld2tfc2V0dGluZ3NfaWNvbl9kYXRhYmFzZV9wYXRoX3NldCk6IERpdHRv
IGFuZCBhbHdheXMgY2FsbAotICAgICAgICBlaW5hX3N0cmluZ3NoYXJlX2RlbCwgYXMgcGFzc2lu
ZyBOVUxMIHRvIGl0IGlzIGp1c3QgYSBOT1AuCi0KLTIwMTEtMTEtMTEgIEp1bmdKaWsgTGVlICA8
anVuZ2ppay5sZWVAc2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW0VGTF0gUmVtb3ZlIHVudXNlZCBm
bGFncyBpbiBwcmUtcmVuZGVyIGltcGxlbWVudGF0aW9uCi0gICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTUwNAotCi0gICAgICAgIFRoZSBoaWdoIHByaW9y
aXR5IHByZS1yZW5kZXIgZmxhZyB3YXMgbm90IHVzZWQgYW55d2hlcmUsCi0gICAgICAgIHNvIHdl
IGNhbiBnZXQgcmlkIG9mIHRoZSB3aG9sZSBjb25jZXB0IGFuZCBhbHdheXMgY29uc2lkZXIgdGhl
IHJlcXVlc3RzIGhhdmUgbG93IHByaW9yaXR5Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgRGFuaWVs
IEJhdGVzLgotCi0gICAgICAgICogZXdrL2V3a190aWxlZF9iYWNraW5nX3N0b3JlLmNwcDoKLSAg
ICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVfcmVuZGVyX3JlcXVlc3RfYWRkKToK
LSAgICAgICAgKGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3ByZV9yZW5kZXJfcmVnaW9uKToKLSAg
ICAgICAgKGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3ByZV9yZW5kZXJfcmVsYXRpdmVfcmFkaXVz
KToKLQotMjAxMS0xMS0wOSAgUmFwaGFlbCBLdWJvIGRhIENvc3RhICA8a3Vib0Bwcm9mdXNpb24u
bW9iaT4KLQotICAgICAgICBbRUZMXSBSZW1vdmUgdW5uZWNlc3NhcnkgY2FzdHMgd2hlbiBjcmVh
dGluZyB0aGUgV2ViQ29yZVN1cHBvcnQgb2JqZWN0cyBpbiBld2tfdmlldy4KLSAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxODkxCi0KLSAgICAgICAgUmV2
aWV3ZWQgYnkgQW50b25pbyBHb21lcy4KLQotICAgICAgICBUaGlzIGlzIEMrKyBjb2RlLCB0aGVy
ZSBpcyBubyBuZWVkIHRvIGNhc3QgdGhlIG5ldyBvYmplY3RzIHRvIHRoZWlyCi0gICAgICAgIHBh
cmVudHMgd2hlbiBjcmVhdGluZyB0aGVtLgotCi0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoK
LSAgICAgICAgKF9ld2tfdmlld19wcml2X25ldyk6Ci0KLTIwMTEtMTEtMDkgIFRvbWFzeiBNb3Jh
d3NraSAgPHQubW9yYXdza2lAc2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW0VGTF0gUmVtb3ZlZCB1
bnVzZWQgdmFyaWFibGUKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTcxODc3Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KLQotICAg
ICAgICBSZW1vdmVkIHVudXNlZCByZWN0IHZhcmlhYmxlIGRlY2xhcmF0aW9uIGFuZCByZW5hbWVk
IHJlY3QxIHZhcmlhYmxlIHRvIHJlY3QuCi0KLSAgICAgICAgKiBld2svZXdrX3RpbGVkX2JhY2tp
bmdfc3RvcmUuY3BwOgotICAgICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3NtYXJ0X2Nh
bGN1bGF0ZSk6Ci0KLTIwMTEtMTEtMDcgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1z
dW5nLmNvbT4KLQotICAgICAgICBbRUZMXSBOZWVkIHRvIHJlcGxhY2UgYXBpJ3Mgb2JqZWN0IHBh
cmFtZXRlciB3aXRoIHByb3BlciBuYW1lLgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NzE1NTMKLQotICAgICAgICBGaXggd3JvbmcgcGFyYW1ldGVyIG5h
bWVzIGluIHRpbGVkIGJhY2tpbmcgc3RvcmUgZnVuY3Rpb25zIGFuZCBld2tfdmlld194eHggZmls
ZXMuCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgRmlsaXAgUGl6bG8uCi0KLSAgICAgICAgKiBld2sv
ZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUuY3BwOgotICAgICAgICAqIGV3ay9ld2tfdmlld19zaW5n
bGUuY3BwOgotICAgICAgICAqIGV3ay9ld2tfdmlld190aWxlZC5jcHA6Ci0KLTIwMTEtMTEtMDcg
IFJhcGhhZWwgS3VibyBkYSBDb3N0YSAgPGt1Ym9AcHJvZnVzaW9uLm1vYmk+Ci0KLSAgICAgICAg
W0VGTF0gRW1pdCB0aGUgImZyYW1lLGNyZWF0ZWQiIHNpZ25hbCBlYXJsaWVyLgotICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzE2OTYKLQotICAgICAgICBS
ZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KLQotICAgICAgICBGcmFtZUxv
YWRlcjo6bG9hZFVSTEludG9DaGlsZEZyYW1lIHdpbGwgdHJpZ2dlciB0aGUgbWFjaGluZXJ5IHRo
YXQgd2lsbCBjYWxsCi0gICAgICAgIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZFN0
YXJ0UHJvdmlzaW9uYWxMb2FkLiBIb3dldmVyLCBzaW5jZSB3ZSB3ZXJlCi0gICAgICAgIGVtaXR0
aW5nIHRoZSAiZnJhbWUsY3JlYXRlZCIgc2lnbmFsIGFmdGVyIHRoYXQsIGFwcGxpY2F0aW9ucyB3
b3VsZCBjb25uZWN0IHRvCi0gICAgICAgIGl0IGFmdGVyIHNvbWUgb3RoZXIgZnJhbWUgc2lnbmFs
cyBoYWQgYWxyZWFkeSBiZWVuIGVtaXR0ZWQuIFNob3VsZCBoZWxwIHRlc3RzCi0gICAgICAgIHN1
Y2ggYXMgaHR0cC90ZXN0cy9sb2FkaW5nL2VtcHR5LXN1YmZyYW1lLmh0bWwgcGFzcy4KLQotICAg
ICAgICAqIGV3ay9ld2tfZnJhbWUuY3BwOgotICAgICAgICAoZXdrX2ZyYW1lX2NoaWxkX2FkZCk6
Ci0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAgKGV3a192aWV3X2ZyYW1lX2Ny
ZWF0ZSk6Ci0KLTIwMTEtMTEtMDQgIFJhcGhhZWwgS3VibyBkYSBDb3N0YSAgPGt1Ym9AcHJvZnVz
aW9uLm1vYmk+Ci0KLSAgICAgICAgW0VGTF0gRFJUOiBGaXggdGhlIG9yZGVyIG9mIHRoZSBpdGVt
cyBpbiB0aGUgZHVtcGVkIGhpc3RvcnkgbGlzdC4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTcxNTYyCi0KLSAgICAgICAgSXQgZGlkIG5vdCBtYWtlIG11
Y2ggc2Vuc2UgdG8gaG9sZCB0aGUgaGlzdG9yeSBsaXN0IGluIGEgbWFwLCBhcyB3ZSBkbyBub3Qg
bmVlZAotICAgICAgICB0aGUga2V5cy4gQW5kIHRoZSBwcmludGVkIGl0ZW1zIG11c3QgYmUgc29y
dGVkIGJ5IHRhcmdldCwgd2hpY2ggaXMgbW9yZSBlYXNpbHkKLSAgICAgICAgZG9uZSB3aXRoIGEg
dmVjdG9yLgotCi0gICAgICAgIFNob3VsZCBtYWtlIHRlc3RzIHN1Y2ggYXMgaHR0cC90ZXN0cy9u
YXZpZ2F0aW9uL2Vycm9yNDA0LWZyYW1lcy5odG1sIHBhc3MuCi0KLSAgICAgICAgUmV2aWV3ZWQg
YnkgQW50b25pbyBHb21lcy4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJU
cmVlU3VwcG9ydEVmbC5jcHA6Ci0gICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OmNo
aWxkSGlzdG9yeUl0ZW1zKToKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJl
ZVN1cHBvcnRFZmwuaDoKLQotMjAxMS0xMS0wNCAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2lt
QHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxdIFVzZSBzdGFuZGFyZCBib29sZWFuZCBkYXRh
IHR5cGUuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03
MTQzMwotCi0gICAgICAgIFRoaXMgaXMgYSBmb3VydGggc3RlcCBpbiBvcmRlciB0byBiZSBtb3Jl
IGNvbXBsaWFudCB3aXRoIFdlYktpdCBjb2Rpbmcgc3R5bGUuCi0gICAgICAgIFVzZSBzdGFuZGFy
ZCBib29sZWFuIGRhdGEgdHlwZSBpbnN0ZWFkIG9mIGVmbCBib29sZWFuIGRhdGEgdHlwZS4gSXQg
bWFrZXMgZWZsIHBvcnQKLSAgICAgICAgaXMgbW9yZSBjbG9zZSB0byB3ZWJraXQgY29kaW5nIHN0
eWxlLgotCi0gICAgICAgIFJldmlld2VkIGJ5IFpvbHRhbiBIZXJjemVnLgotCi0gICAgICAgICog
V2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHA6Ci0gICAgICAgICogZXdrL2V3a19jb250ZXh0
bWVudS5jcHA6Ci0gICAgICAgICogZXdrL2V3a19jb29raWVzLmNwcDoKLSAgICAgICAgKiBld2sv
ZXdrX2ZyYW1lLmNwcDoKLSAgICAgICAgKiBld2svZXdrX2hpc3RvcnkuY3BwOgotICAgICAgICAq
IGV3ay9ld2tfanMuY3BwOgotICAgICAgICAqIGV3ay9ld2tfbWFpbi5jcHA6Ci0gICAgICAgICog
ZXdrL2V3a19uZXR3b3JrLmNwcDoKLSAgICAgICAgKiBld2svZXdrX3ByaXZhdGUuaDoKLSAgICAg
ICAgKiBld2svZXdrX3Byb3RvY29sX2hhbmRsZXIuY3BwOgotICAgICAgICAqIGV3ay9ld2tfcHJv
dG9jb2xfaGFuZGxlcl9zb3VwLmNwcDoKLSAgICAgICAgKiBld2svZXdrX3NldHRpbmdzLmNwcDoK
LSAgICAgICAgKiBld2svZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUuY3BwOgotICAgICAgICAqIGV3
ay9ld2tfdGlsZWRfbWF0cml4LmNwcDoKLSAgICAgICAgKiBld2svZXdrX3RpbGVkX21vZGVsLmNw
cDoKLSAgICAgICAgKiBld2svZXdrX3V0aWwuY3BwOgotICAgICAgICAqIGV3ay9ld2tfdmlldy5j
cHA6Ci0gICAgICAgICogZXdrL2V3a192aWV3X3NpbmdsZS5jcHA6Ci0gICAgICAgICogZXdrL2V3
a192aWV3X3RpbGVkLmNwcDoKLQotMjAxMS0xMS0wMyAgVG9tYXN6IE1vcmF3c2tpICA8dC5tb3Jh
d3NraUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBbRUZMXSBBZGRlZCBld2tfdGlsZV9tZW1vcnlf
c2l6ZV9nZXQgZnVuY3Rpb24KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTcxMjEzCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJzIENhcmxzc29uLgot
Ci0gICAgICAgIEFkZGVkIHRoZSBld2tfdGlsZV9tZW1vcnlfc2l6ZV9nZXQgZnVuY3Rpb24gcmV0
dXJucyBzaXplIG9mIHVzZWQgbWVtb3J5IGJ5IGdpdmVuIHRpbGUuIFNpbXBsaWZ5IGFuZCBjbGVh
bnVwCi0gICAgICAgIHRoZSBjb2RlLgotCi0gICAgICAgICogZXdrL2V3a190aWxlZF9tb2RlbC5j
cHA6Ci0gICAgICAgIChld2tfdGlsZV9tZW1vcnlfc2l6ZV9nZXQpOgotICAgICAgICAoZXdrX3Rp
bGVfdW51c2VkX2NhY2hlX2ZsdXNoKToKLSAgICAgICAgKGV3a190aWxlX3VudXNlZF9jYWNoZV90
aWxlX2dldCk6Ci0gICAgICAgIChld2tfdGlsZV91bnVzZWRfY2FjaGVfdGlsZV9wdXQpOgotICAg
ICAgICAqIGV3ay9ld2tfdGlsZWRfbW9kZWwuaDoKLQotMjAxMS0xMS0wMyAgRGFyaW4gQWRsZXIg
IDxkYXJpbkBhcHBsZS5jb20+Ci0KLSAgICAgICAgQ2hhbmdlIHJlbWFpbmluZyBjYWxsZXJzIG9m
IHJlbGVhc2VSZWYgdG8gY2FsbCBsZWFrUmVmCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03MTQyMgotCi0gICAgICAgIFJldmlld2VkIGJ5IERhcmluIEZp
c2hlci4KLQotICAgICAgICAqIGV3ay9ld2tfaGlzdG9yeS5jcHA6Ci0gICAgICAgIChld2tfaGlz
dG9yeV9pdGVtX25ldyk6IFVzZSBsZWFrUmVmLgotCi0yMDExLTExLTAyICBEYXJpbiBBZGxlciAg
PGRhcmluQGFwcGxlLmNvbT4KLQotICAgICAgICBDaGFuZ2UgcmVtYWluaW5nIGNhbGxlcnMgb2Yg
cmVsZWFzZVJlZiB0byBjYWxsIGxlYWtSZWYKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTcxNDIyCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gRmlz
aGVyLgotCi0gICAgICAgICogZXdrL2V3a19oaXN0b3J5LmNwcDoKLSAgICAgICAgKGV3a19oaXN0
b3J5X2l0ZW1fbmV3KTogVXNlIGxlYWtSZWYuCi0KLTIwMTEtMTEtMDMgIE1hcmsgSGFobmVuYmVy
ZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4KLQotICAgICAgICBEZS12aXJ0dWFsaXplIEpTT2Jq
ZWN0OjpjbGFzc05hbWUKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTcxNDI4Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KLQotICAgICAg
ICBBZGRlZCBjbGFzc05hbWUgdG8gdGhlIE1ldGhvZFRhYmxlLCBjaGFuZ2VkIGFsbCB0aGUgdmly
dHVhbCAKLSAgICAgICAgaW1wbGVtZW50YXRpb25zIG9mIGNsYXNzTmFtZSB0byBzdGF0aWMgb25l
cywgYW5kIHJlcGxhY2VkIAotICAgICAgICBhbGwgY2FsbCBzaXRlcyB3aXRoIGNvcnJlc3BvbmRp
bmcgbG9va3VwcyBpbiB0aGUgTWV0aG9kVGFibGUuCi0KLSAgICAgICAgKiBld2svZXdrX2pzLmNw
cDoKLSAgICAgICAgKGV3a19qc19ucG9iamVjdF90b19vYmplY3QpOgotCi0yMDExLTExLTAzICBG
YWR5IFNhbXVlbCAgPGZzYW11ZWxAY2hyb21pdW0ub3JnPgotCi0gICAgICAgIFJlbW92aW5nIGxp
bmUgaW4gY29tcHV0ZVZpZXdwb3J0QXR0cmlidXRlcyB0aGF0IGVuZm9yY2VzIGEgbWluaW11bSBz
Y2FsZSBmYWN0b3IgdG8gbmV2ZXIgYWxsb3cgem9vbWluZyBvdXQgbW9yZSB0aGFuIHZpZXdwb3J0
Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MDYwOQot
Ci0gICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgotCi0gICAg
ICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAgKF9ld2tfdmlld192aWV3cG9ydF9hdHRy
aWJ1dGVzX2NvbXB1dGUpOgotCi0yMDExLTExLTAzICBEb25nd29vIEltICA8ZHcuaW1Ac2Ftc3Vu
Zy5jb20+Ci0KLSAgICAgICAgW0VGTF0gRW5hYmxlIHRoZSBQYWdlIFZpc2liaWxpdHkgQVBJLgot
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjkxMjcKLQot
ICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgotCi0gICAgICAgIEltcGxlbWVudCBtZXRo
b2RzIHRvIGVuYWJsZSB0aGUgUGFnZSBWaXNpYmlsaXR5IEFQSSBvbiBFRkwgcG9ydC4KLSAgICAg
ICAgKGh0dHA6Ly93d3cudzMub3JnL1RSL3BhZ2UtdmlzaWJpbGl0eSkKLQotICAgICAgICBXaGVu
IHRoZSB2aXNpYmlsaXR5IHN0YXR1cyBvZiB0aGUgcGFnZSBpcyBjaGFuZ2VkLCBicm93c2VyIGNv
dWxkCi0gICAgICAgIGluZm9ybSB0aGUgc3RhdHVzIHRvIFdlYktpdCB1c2luZyB0aGUgQVBJcyBi
ZWxvdy4KLQotICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6IEFkZCBzZXR0ZXIvZ2V0dGVyIGZ1
bmN0aW9ucyB0byBxdWVyeS9zZXQgcGFnZSB2aXNpYmlsaXR5IHN0YXRlLgotICAgICAgICAoZXdr
X3ZpZXdfdmlzaWJpbGl0eV9zdGF0ZV9zZXQpOiBTZXRzIHRoZSBwYWdlIHZpc2liaWxpdHkgc3Rh
dHVzLgotICAgICAgICAoZXdrX3ZpZXdfdmlzaWJpbGl0eV9zdGF0ZV9nZXQpOiBHZXRzIHRoZSBw
YWdlIHZpc2liaWxpdHkgc3RhdHVzLgotICAgICAgICAqIGV3ay9ld2tfdmlldy5oOiBBZGQgcHVi
bGljIHByb3RvdHlwZXMuCi0KLTIwMTEtMTEtMDIgIFRvbSBTZXBleiAgPHRzZXBlekBjaHJvbWl1
bS5vcmc+Ci0KLSAgICAgICAgWFNTQXVkaXRvciBpcyBzaWxlbnQKLSAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcwOTczCi0KLSAgICAgICAgUmV2aWV3ZWQg
YnkgQWRhbSBCYXJ0aC4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50RWZsLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaWRE
ZXRlY3RYU1MpOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZs
Lmg6Ci0KLTIwMTEtMTEtMDIgIFJ5dWFuIENob2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgot
Ci0gICAgICAgIFtFRkxdIEZpeCBidWlsZCBicmVhayB3aGVuIERFQlVHX01FTV9MRUFLUyBpcyBl
bmFibGVkLgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NzEzNDkKLQotICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeC4KLQotICAgICAgICAqIGV3ay9l
d2tfdGlsZWRfYmFja2luZ19zdG9yZS5jcHA6Ci0gICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdf
c3RvcmVfc21hcnRfZGVsKTogcmVtb3ZlIHdyb25nIGFzc2lnbm1lbnQKLSAgICAgICAgKiBld2sv
ZXdrX3RpbGVkX21hdHJpeC5jcHA6IGRlZmluZSBfX1NURENfRk9STUFUX01BQ1JPUyB0byB1c2Ug
UFJJdTY0Ci0gICAgICAgIChld2tfdGlsZV9tYXRyaXhfZnJlZSk6IHMvdGlsZU1hdHJpeG0vdGls
ZU1hdHJpeAotICAgICAgICAoZXdrX3RpbGVfbWF0cml4X2RiZyk6IHMvdG0vdGlsZU1hdHJpeAot
ICAgICAgICAqIGV3ay9ld2tfdGlsZWRfbW9kZWwuY3BwOiBkZWZpbmUgX19TVERDX0ZPUk1BVF9N
QUNST1MgdG8gdXNlIFBSSXU2NAotICAgICAgICAoX2V3a190aWxlX2FjY291bnRfZ2V0KTogcmVt
b3ZlIFJFQUxMT0NfT1JfT09NX1JFVAotCi0yMDExLTExLTAyICBDaGFuZ1Nlb2sgT2ggIDxzaGl2
YW1pZG93QGdtYWlsLmNvbT4KLQotICAgICAgICBbRUZMXSBEaXJ0eSBhcmVhIGlzIG5vdCB1cGRh
dGVkIHdpdGggcmVxdWVzdEFuaW1hdGlvbkZyYW1lLgotICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzAxNzAKLQotICAgICAgICBTb21lIGFkZGl0aW9uYWwg
ZGlydHkgYXJlYXMgY2F1c2VkIGJ5IHJlLWxheW91dCBoYXZlIGlnbm9yZWQKLSAgICAgICAgc2lu
Y2UgdXBkYXRlTGF5b3V0QW5kU3l0bGVJZk5lZWRlUmVjdXJzaXZlIGlzIGNhbGxlZCBhZnRlciBn
YXRoZXJpbmcgZGlydHkgYXJlYSB0byByZXBhaW50LgotICAgICAgICBTbyBld2tfdmlld19sYXlv
dXRfaWZfbmVlZGVkX3JlY3Vyc2l2ZSBpcyByZWxvY2F0ZWQgYmVmb3JlIGdldHRpbmcgZGlydHkg
YXJlYXMuCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCi0KLSAgICAgICAgKiBl
d2svZXdrX3ZpZXdfc2luZ2xlLmNwcDoKLSAgICAgICAgKF9ld2tfdmlld19zaW5nbGVfc21hcnRf
cmVwYWludHNfcHJvY2Vzcyk6Ci0KLTIwMTEtMTAtMzEgIFJhcGhhZWwgS3VibyBkYSBDb3N0YSAg
PGt1Ym9AcHJvZnVzaW9uLm1vYmk+Ci0KLSAgICAgICAgW0VGTF0gUmVuYW1lIGV3a192aWV3X3Nl
dHRpbmdfc2NyaXB0c193aW5kb3dfb3Blbl97Z2V0LHNldH0gYWZ0ZXIgcjkzODMzCi0gICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTIyOAotCi0gICAgICAg
IFJldmlld2VkIGJ5IEFudG9uaW8gR29tZXMuCi0KLSAgICAgICAgcjkzODMzIGhhcyBpbnRyb2R1
Y2VkCi0gICAgICAgIGV3a192aWV3X3NldHRpbmdfc2NyaXB0c19jYW5fY2xvc2Vfd2luZG93c197
Z2V0LHNldH0sIGJ1dCBpdHMKLSAgICAgICAgY291bnRlcnBhcnQgdG8gYWxsb3cgc2NyaXB0cyB0
byBvcGVuIHdpbmRvd3Mga2VwdCBpdHMgd2VpcmQgbmFtZS4KLQotICAgICAgICBUaGlzIG1ha2Vz
IHRoZSBmdW5jdGlvbnMgdG8gYWxsb3cgd2luZG93cyB0byBvcGVuIGFuZCBjbG9zZSB3aW5kb3dz
IHRvCi0gICAgICAgIGhhdmUgY29uZnVzaW5nbHkgZGlmZmVyZW50IG5hbWUgcGF0dGVybnMuCi0K
LSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoX2V3a192aWV3X3ByaXZfbmV3
KToKLSAgICAgICAgKGV3a192aWV3X3NldHRpbmdfc2NyaXB0c19jYW5fb3Blbl93aW5kb3dzX2dl
dCk6Ci0gICAgICAgIChld2tfdmlld19zZXR0aW5nX3NjcmlwdHNfY2FuX29wZW5fd2luZG93c19z
ZXQpOgotICAgICAgICAqIGV3ay9ld2tfdmlldy5oOgotCi0yMDExLTEwLTMxICBUb21hc3ogTW9y
YXdza2kgIDx0Lm1vcmF3c2tpQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxdIE1ha2UgY2Fj
aGUgZmx1c2ggd2hlbiBtYXggc2l6ZSBvZiBjYWNoZSBoYXMgYmVlbiBjaGFuZ2VkCi0gICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MDgwNQotCi0gICAgICAg
IFJldmlld2VkIGJ5IFJ5b3N1a2UgTml3YS4KLQotICAgICAgICBDYWxscyB0aGUgZXdrX3RpbGVf
dW51c2VkX2NhY2hlX2F1dG9fZmx1c2ggZnVuY3Rpb24gYWZ0ZXIgY2hhbmdpbmcgbWF4Ci0gICAg
ICAgIHNpemUgb2YgY2FjaGUgd2hlbiBld2tfdGlsZV91bnVzZWRfY2FjaGVfbWF4X3NldCBpcyBj
YWxsZWQuIFdpdGhvdXQKLSAgICAgICAgdGhpcyBjaGFuZ2Ugd2hlbiBuZXcgdmFsdWUgaXMgbG93
ZXIgdGhhbiB0aGUgb2xkIG9uZSB0aGUgY2FjaGUgbWF5IHVzZQotICAgICAgICBtb3JlIG1lbW9y
eSB0aGFuIG1heCB2YWx1ZSBzZXQuIFRoaXMgc2l0dWF0aW9uIGlzIG5vdCBleHBlY3RlZCBieSB0
aGUKLSAgICAgICAgdXNlci4KLQotICAgICAgICAqIGV3ay9ld2tfdGlsZWRfbW9kZWwuY3BwOgot
ICAgICAgICAoZXdrX3RpbGVfdW51c2VkX2NhY2hlX21heF9zZXQpOgotCi0yMDExLTEwLTI4ICBK
b2NoZW4gRWlzaW5nZXIgIDxqb2NoZW5AY2hyb21pdW0ub3JnPgotCi0gICAgICAgIFJlbmFtZSBh
IG51bWJlciBvZiBtZXRob2RzIG1lbnRpb25pbmcgSmF2YVNjcmlwdCB0byBqdXN0IFNjcmlwdCBp
bnN0ZWFkCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03
MTEwNQotCi0gICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCi0KLSAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQp
OgotICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChfZXdrX3ZpZXdfcHJpdl9u
ZXcpOgotICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfc2NyaXB0c19zZXQpOgotCi0y
MDExLTEwLTI3ICBHdXN0YXZvIExpbWEgQ2hhdmVzICA8Z2xpbWFAcHJvZnVzaW9uLm1vYmk+Ci0K
LSAgICAgICAgW0VGTF0gRml4IHZhcmlhYmxlIHJlbmFtaW5nIGlzc3VlIGluc2lkZSBld2tfdmll
dy5jcHAKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcx
MDIwCi0KLSAgICAgICAgVW5yZXZpZXdlZCBidWlsZCBmaXguCi0KLSAgICAgICAgKiBld2svZXdr
X3ZpZXcuY3BwOgotICAgICAgICAoZXdrX3ZpZXdfanNfb2JqZWN0X2FkZCk6Ci0KLTIwMTEtMTAt
MjYgIFphbGFuIEJ1anRhcyAgPHpidWp0YXNAZ21haWwuY29tPgotCi0gICAgICAgIE5hbWUgdmll
d3BvcnQgY2hhbmdlIGV2ZW50IGNvbnNpc3RlbnRseS4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcwOTAxCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgS2Vu
bmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCi0KLSAgICAgICAgVXNlIFZpZXdwb3J0UHJvcGVydGll
c0RpZENoYW5nZSB0ZXJtIGNvbnNpc3RlbnRseSB0aHJvdWdob3V0IFdlYktpdC4KLQotICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3Jl
OjpDaHJvbWVDbGllbnRFZmw6OmRpc3BhdGNoVmlld3BvcnRQcm9wZXJ0aWVzRGlkQ2hhbmdlKToK
LSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuaDoKLQotMjAxMS0xMC0y
NiAgR3J6ZWdvcnogQ3phamtvd3NraSAgPGcuY3phamtvd3NraUBzYW1zdW5nLmNvbT4KLQotICAg
ICAgICBbRUZMXSBQcml2YXRlIGZ1bmN0aW9uIF9ld2tfdmlld192aWV3cG9ydF9hdHRyaWJ1dGVz
X2NvbXB1dGUgdGFrZXMgYW4gaW50ZXJuYWwgZGF0YSBvZiBld2tfdmlldy4KLSAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2MzY2Ci0KLSAgICAgICAgUmV2
aWV3ZWQgYnkgUnlvc3VrZSBOaXdhLgotCi0gICAgICAgIFBhc3NlcyB0byBfZXdrX3ZpZXdfdmll
d3BvcnRfYXR0cmlidXRlc19jb21wdXRlIGFuIGludGVybmFsIGRhdGEgb2YgZXdrX3ZpZXcgaW5z
dGVhZCBvZiB0aGUgdmlldyBvYmplY3QuCi0gICAgICAgIEFkZHMgdG8gZXdrX3ZpZXdfdmlld3Bv
cnRfYXR0cmlidXRlc19nZXQgTlVMTCBjaGVja3MgdG8gYXZvaWQgdW5leHBlY3RlZCByZXN1bHRz
IHNpbmNlIHRoaXMgaXMgQVBJLgotCi0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAg
ICAgKF9ld2tfdmlld192aWV3cG9ydF9hdHRyaWJ1dGVzX2NvbXB1dGUpOgotICAgICAgICAoZXdr
X3ZpZXdfdmlld3BvcnRfYXR0cmlidXRlc19nZXQpOgotCi0yMDExLTEwLTI1ICBLd2FuZ0h5dWsg
S2ltICA8aHl1a2kua2ltQHNhbXN1bmcuY29tPgotCi0gICAgICAgIEZpeCBvY2N1cnJlbmNlIG9m
IHVucGFpbnRlZCB0aWxlcyB3aGlsZSBzY3JvbGxpbmcgYW5kIHpvb21pbmcuCi0gICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MDcxMQotCi0gICAgICAgIFJl
dmlld2VkIGJ5IEFkYW0gQmFydGguCi0KLSAgICAgICAgQ2FzdCBvbmUgb2Ygb3BlcmF0ZWVzIHRv
IGZsb2F0IHR5cGUgd2hlbiBld2tfdGlsZWRfYmFja2luZ19zdG9yZSBjYWxjdWxhdGUgdGlsZXMg
bGlzdCBvbiB2aWV3cG9ydC4KLSAgICAgICAgRm9yIHRoZSBwcm9wZXIgY2FsY3VsYXRpb24gdG8g
Z2VuZXJhdGUgYSBmbG9hdCBudW1iZXIsIGF0IGxlYXN0IG9uZSBvZiBvcGVyYXRlZXMgbXVzdCBi
ZSBhIGZsb2F0IHR5cGUuCi0gICAgICAgIEJ1dCwgY3VycmVudGx5IGJvdGggdHdvIG9wZXJhdGVl
cyB0byBjYWxjdWxhdGUgdGhlIG51bWJlciBvZiB0aWxlcyBvbiB2aWV3cG9ydCByb3V0aW5lIGFy
ZW4ndCBmbG9hdCB0eXBlLAotICAgICAgICBzbyBpdCBnZW5lcmF0ZXMgc21hbGxlciByZXN1bHQg
dGhhbiBleHBlY3RlZCByZXN1bHQgd2hlbiBpdCBpcyB1c2luZyBjZWlsIEFQSS4KLSAgICAgICAg
QXMgYSByZXN1bHQsIGl0IGNhbiBsb3NlIGEgbGluZSBvZiB0aWxlcyB3aGljaCBzaG91bGQgYmUg
ZGlzcGxheWVkIGluIHZpZXdwb3J0IGFyZWEgd2hpbGUgc2Nyb2xsaW5nIGFuZCB6b29taW5nLgot
Ci0gICAgICAgICogZXdrL2V3a190aWxlZF9iYWNraW5nX3N0b3JlLmNwcDoKLSAgICAgICAgKF9l
d2tfdGlsZWRfYmFja2luZ19zdG9yZV9yZWNhbGNfcmVuZGVyZXJzKToKLSAgICAgICAgKGV3a190
aWxlZF9iYWNraW5nX3N0b3JlX3pvb21fd2Vha19zZXQpOgotCi0yMDExLTEwLTI1ICBLd2FuZ0h5
dWsgS2ltICA8aHl1a2kua2ltQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxdIE1vdmUgYXNz
aWdubWVudCBvZiBzb21lIHZhcmlhYmxlcyBvdXQgb2YgbG9vcCBmb3IgZXdrX3RpbGVkX2JhY2tp
bmdfc3RvcmUuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02NzU4OAotCi0gICAgICAgIFNvbWUgb2YgdmFyaWFibGVzIHdoaWNoIGFyZW4ndCByZWxhdGVk
IHdpdGggbG9vcCBjb3VudCBvciBvdGhlciB2YXJpYWJsZXMKLSAgICAgICAgaW5zaWRlIG9mIGxv
b3AgYXJlIG1vdmVkIG91dCBvZiBsb29wLgotCi0gICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFy
dGguCi0KLSAgICAgICAgKiBld2svZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUuY3BwOgotICAgICAg
ICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3ZpZXdfd3JhcF91cCk6Ci0gICAgICAgIChfZXdr
X3RpbGVkX2JhY2tpbmdfc3RvcmVfdmlld193cmFwX2Rvd24pOgotICAgICAgICAoX2V3a190aWxl
ZF9iYWNraW5nX3N0b3JlX3ZpZXdfd3JhcF9sZWZ0KToKLSAgICAgICAgKF9ld2tfdGlsZWRfYmFj
a2luZ19zdG9yZV92aWV3X3dyYXBfcmlnaHQpOgotCi0yMDExLTEwLTI1ICBNYXJrIEhhaG5lbmJl
cmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+Ci0KLSAgICAgICAgUmVtb3ZlIHB1dFZpcnR1YWwK
LSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcwNzQwCi0K
LSAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCi0KLSAgICAgICAgUmVtb3ZlZCBh
bGwgZGVjbGFyYXRpb25zIGFuZCBkZWZpbml0aW9ucyBvZiBwdXRWaXJ0dWFsLgotICAgICAgICBB
bHNvIHJlcGxhY2VkIGFsbCBjYWxsIHNpdGVzIHRvIHB1dFZpcnR1YWwgd2l0aCBhIAotICAgICAg
ICBjb3JyZXNwb25kaW5nIGxvb2t1cCBpbiB0aGUgTWV0aG9kVGFibGUuCi0KLSAgICAgICAgKiBl
d2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoZXdrX3ZpZXdfanNfb2JqZWN0X2FkZCk6Ci0KLTIw
MTEtMTAtMjUgIEl2YW4gQnJpYW5vICA8aXZhbkBwcm9mdXNpb24ubW9iaT4KLQotICAgICAgICBb
RUZMXSBBZGQgZnVuY3Rpb24gdG8gZ2V0IGdlb21ldHJ5IG9mIGZvY3VzZWQgZWxlbWVudAotICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzA3MjgKLQotICAg
ICAgICBSZXZpZXdlZCBieSBBbnRvbmlvIEdvbWVzLgotCi0gICAgICAgIEFkZGVkIGZ1bmN0aW9u
IHRvIGV3a19mcmFtZSB0byBnZXQgdGhlIGdlb21ldHJ5IG9mIHRoZSBmb2N1c2VkCi0gICAgICAg
IGVsZW1lbnQgd2l0aGluIHRoZSBmcmFtZSBvYmplY3QuCi0KLSAgICAgICAgKiBld2svZXdrX2Zy
YW1lLmNwcDoKLSAgICAgICAgKGV3a19mcmFtZV9mb2N1c2VkX2VsZW1lbnRfZ2VvbWV0cnlfZ2V0
KTogUmV0cmlldmVzIHRoZSBnZW9tZXRyeSBvZgotICAgICAgICB0aGUgZm9jdXNlZCBlbGVtZW50
IHdpdGhpbiB0aGUgZ2l2ZW4gZnJhbWUgb2JqZWN0LgotICAgICAgICAqIGV3ay9ld2tfZnJhbWUu
aDoKLQotMjAxMS0xMC0yNSAgSXZhbiBCcmlhbm8gIDxpdmFuQHByb2Z1c2lvbi5tb2JpPgotCi0g
ICAgICAgIFtFRkxdIEFkZCBuZWNlc3NhcnkgaW5mb3JtYXRpb24gZm9yIGNhbGxiYWNrIGluc3Ry
b3BlY3Rpb24KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTcwNzM1Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21lcy4KLQotICAgICAgICBQ
cm92aWRlIHRoZSBpbmZvcm1hdGlvbiBhYm91dCBzbWFydCBjYWxsYmFja3MgZW1pdHRlZCBieSB0
aGUgZXdrX3ZpZXcKLSAgICAgICAgb2JqZWN0LCBzbyB0aGF0IHRoZXNlIGNhbiBiZSBlYXNpbHkg
Zm9yd2FyZGVkIGJ5IG90aGVyIG9iamVjdHMgb3IgdXNlZAotICAgICAgICBieSBiaW5kaW5ncyBp
biBvdGhlciBsYW5ndWFnZXMgd2l0aG91dCBoYXZpbmcgdG8ga2VlcCB0cmFjayBvZiBhbGwgb2YK
LSAgICAgICAgdGhlbSBtYW51YWxseS4KLQotICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0g
ICAgICAgIChld2tfdmlld19iYXNlX3NtYXJ0X3NldCk6Ci0KLTIwMTEtMTAtMjQgIEl2YW4gQnJp
YW5vICA8aXZhbkBwcm9mdXNpb24ubW9iaT4KLQotICAgICAgICBbRUZMXSBCdWlsZCBmaXguIFJl
bmFtZSBhbGwgaW5zdGFuY2VzIG9mIGEgdmFyaWFibGUgd2hlbiBpdCBnZXRzIGNoYW5nZWQKLSAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcwNzMyCi0KLSAg
ICAgICAgVW5yZXZpZXdlZCBidWlsZCBmaXguCi0KLSAgICAgICAgKiBld2svZXdrX2pzLmNwcDoK
LSAgICAgICAgKGV3a19qc19wcm9wZXJ0eV9zZXQpOiBzL29iai9vYmplY3QvCi0gICAgICAgICog
ZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAgKGV3a192aWV3X2pzX29iamVjdF9hZGQpOiBzL2V4
ZWMvZXhlY3V0ZVN0YXRlLwotCi0yMDExLTEwLTIxICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5r
aW1Ac2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW0VGTF0gQ2hhbmdlIGVmbCBzdHlsZSBsb2NhbCB2
YXJpYWJsZXMgd2l0aCBXZWJLaXQgY29kaW5nIFN0eWxlLgotICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njk5ODgKLQotICAgICAgICBSZXZpZXdlZCBieSBB
bnRvbmlvIEdvbWVzLgotCi0gICAgICAgIENoYW5nZSAqc2QqIHZhcmlhYmxlIG5hbWUgd2l0aCAq
c21hcnREYXRhKi4gU29tZSB2YXJpYWJsZXMgd2VyZSBjaGFuZ2VkIGJ5IEJ1ZyA2OTk4OC4KLQot
ICAgICAgICAqIGV3ay9ld2tfZnJhbWUuY3BwOgotICAgICAgICAoZXdrX2ZyYW1lX3ZpZXdfZ2V0
KToKLSAgICAgICAgKGV3a19mcmFtZV91cmlfc2V0KToKLSAgICAgICAgKGV3a19mcmFtZV91cmlf
Z2V0KToKLSAgICAgICAgKGV3a19mcmFtZV9jb250ZW50c19zaXplX2dldCk6Ci0gICAgICAgIChl
d2tfZnJhbWVfbG9hZF9kb2N1bWVudF9maW5pc2hlZCk6Ci0gICAgICAgIChld2tfZnJhbWVfbG9h
ZF9lcnJvcik6Ci0gICAgICAgIChld2tfZnJhbWVfdGl0bGVfc2V0KToKLSAgICAgICAgKGV3a19m
cmFtZV91cmlfY2hhbmdlZCk6Ci0gICAgICAgIChld2tfZnJhbWVfZWRpdG9yX2NsaWVudF9zZWxl
Y3Rpb25fY2hhbmdlZCk6Ci0gICAgICAgIChld2tfZnJhbWVfZWRpdG9yX2NsaWVudF9jb250ZW50
c19jaGFuZ2VkKToKLSAgICAgICAgKEVXS1ByaXZhdGU6OmNvcmVGcmFtZSk6Ci0gICAgICAgICog
ZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAgKF9ld2tfdmlld19zbWFydF9wcmVfcmVuZGVyX3Jl
Z2lvbik6Ci0gICAgICAgIChfZXdrX3ZpZXdfc21hcnRfcHJlX3JlbmRlcl9yZWxhdGl2ZV9yYWRp
dXMpOgotICAgICAgICAoX2V3a192aWV3X3NtYXJ0X3ByZV9yZW5kZXJfY2FuY2VsKToKLSAgICAg
ICAgKF9ld2tfdmlld19zbWFydF9kaXNhYmxlX3JlbmRlcik6Ci0gICAgICAgIChfZXdrX3ZpZXdf
c21hcnRfZW5hYmxlX3JlbmRlcik6Ci0gICAgICAgIChFV0tQcml2YXRlOjpjb3JlUGFnZSk6Ci0g
ICAgICAgICogZXdrL2V3a192aWV3X3NpbmdsZS5jcHA6Ci0gICAgICAgIChfZXdrX3ZpZXdfc2lu
Z2xlX3NtYXJ0X2FkZCk6Ci0gICAgICAgIChfZXdrX3ZpZXdfc2luZ2xlX3NtYXJ0X3Jlc2l6ZSk6
Ci0KLTIwMTEtMTAtMjEgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4K
LQotICAgICAgICBbRUZMXSBDaGFuZ2UgZWZsIHN0eWxlIGxvY2FsIHZhcmlhYmxlcyB3aXRoIFdl
YktpdCBjb2RpbmcgU3R5bGUuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD02OTk4OAotCi0gICAgICAgIFJldmlld2VkIGJ5IEFudG9uaW8gR29tZXMuCi0K
LSAgICAgICAgSW4gY29tbW9uIHdpdGggQnVnIDY5MDczLCB0aGlzIGlzIGEgdGhpcmQgc3RlcCBp
biBvcmRlciB0byBiZSBtb3JlIGNvbXBsaWFudCB3aXRoIFdlYktpdCBjb2Rpbmcgc3R5bGUuCi0g
ICAgICAgIFdlIGhhdmUgdXNlZCBvbmUtbGV0dGVyfCB0d28tbGV0dGVyIGxvY2FsIHZhcmlhYmxl
IGFjY29yZGluZyB0byBlZmwgc3R5bGUuIEhvd2V2ZXIsIGl0J3MKLSAgICAgICAgbW9yZSBkaWZm
aWN1bHQgZm9yIG90aGVyIHJldmlld2VycyB0byByZXZpZXcgRUZMIHBhdGNoZXMuIFNvLCB0aGlz
IHBhdGNoIGNoYW5nZXMgZWZsIHN0eWxlCi0gICAgICAgIGxvY2FsIHZhcmlhYmxlIHdpdGggbWVh
bmluZ2Z1bCBvbmUuCi0KLSAgICAgICAgLSBVc2UgKm1lbnUqIGluc3RlYWQgb2YgKm8qIGluIGNv
bW1lbnQgb2YgZXdrX2NvbnRleHRtZW51LmNwcC4KLSAgICAgICAgLSBVc2UgKmxpc3QqIGluc3Rl
YWQgb2YgKmwqIGxvY2FsIHZhcmlhYmxlCi0gICAgICAgIC0gVXNlICpld2tQb2xpY3kqIGluc3Rl
YWQgb2YgKmV3a19wb2xpY3kqIGluIGV3a19jb29raWVzLmNwcAotICAgICAgICAtIFVzZSAqc21h
cnREYXRhKiBpbnN0ZWFkIG9mICpzZCogbG9jYWwgdmFyaWFibGUgZm9yIEV3a19YWFhYX1NtYXJ0
X0RhdGEgc3RydWN0LgotICAgICAgICAtIFVzZSAqd2lkdGgqLCAqaGVpZ2h0KiBpbnN0ZWFkIG9m
ICp3KiwgKmgqIGxvY2FsIHZhcmlhYmxlcy4KLSAgICAgICAgLSBVc2UgKnNjcm9sbFgqLCAqc2Ny
b2xsWSosICpzY3JvbGxXaWR0aCosICpzY3JvbGxIZWlnaHQqLCAqY2VudGVyWCosICpjZW50ZXJZ
KiwgKmRlbHRhWCosICpkZWx0YVkqLAotICAgICAgICAqYmFzZVgqLCAqYmFzZVkqIGluc3RlYWQg
b2YgKnN4KiwgKnN5KiwgKnN3KiwgKnNoKiwgKmN4KiwgKmN5KiwgKmR4KiwgKmR5KiwgKmJ4Kiwg
KmJ5Ki4KLSAgICAgICAgLSBVc2UgKnJlZCosICpncmVlbiosICpibHVlKiwgKmFscGhhKiwgKmNv
bnRlbnRSZWQqLCAqY29udGVudEdyZWVuKiwgKmNvbnRlbnRCbHVlKiBhbmQgKmNvbnRlbnRBbHBo
YSoKLSAgICAgICAgaW5zdGVhZCBvZiAqciosKmcqLCpiKiwqYSosKmNyKiwqY2cqLCpjYiosKmNh
Ki4KLSAgICAgICAgLSBVc2UgKnRpbGVQb3NpdGlvblgqLCAqdGlsZVBvc2l0aW9uWSogaW5zdGVh
ZCBvZiAqb3gqLCpveSogaW4gdGlsZWQgYmFja2luZ3N0b3JlIGZpbGVzLgotICAgICAgICAtIFVz
ZSAqb2JqZWN0KiBpbnN0ZWFkIG9mICpvYmoqIAotICAgICAgICAtIFVzZSAqbGVuZ3RoKiBpbnN0
ZWFkIG9mICpsZW4qCi0gICAgICAgIC0gVXNlICpjb3JlRnJhbWUqIGluc3RlYWQgb2YgKmNmKgot
ICAgICAgICAtIFVzZSAqYnVmZmVyKiBpbnN0ZWFkIG9mICpidWYqCi0gICAgICAgIC0gVXNlICpp
dGVtKiBpbnN0ZWFkIG9mICppKgotICAgICAgICAtIFVzZSAqY3VycmVudENvbHVtbiosICpjdXJy
ZW50Um93KiBpbnN0ZWFkIG9mICptX2NvbCosICptX3JvdyogCi0gICAgICAgIC0gUmVtb3ZlICJf
IiBpbiBsb2NhbCB2YXJpYWJsZS4KLSAgICAgICAgLSBBbmQgc28gb24uCi0KLSAgICAgICAgKiBl
d2svZXdrX2F1dGhfc291cC5jcHA6Ci0gICAgICAgICogZXdrL2V3a19jb250ZXh0bWVudS5jcHA6
Ci0gICAgICAgICogZXdrL2V3a19jb29raWVzLmNwcDoKLSAgICAgICAgKiBld2svZXdrX2ZyYW1l
LmNwcDoKLSAgICAgICAgKiBld2svZXdrX2hpc3RvcnkuY3BwOgotICAgICAgICAqIGV3ay9ld2tf
anMuY3BwOgotICAgICAgICAqIGV3ay9ld2tfbWFpbi5jcHA6Ci0gICAgICAgICogZXdrL2V3a19z
ZXR0aW5ncy5jcHA6Ci0gICAgICAgICogZXdrL2V3a190aWxlZF9iYWNraW5nX3N0b3JlLmNwcDoK
LSAgICAgICAgKiBld2svZXdrX3RpbGVkX21hdHJpeC5jcHA6Ci0gICAgICAgICogZXdrL2V3a190
aWxlZF9tb2RlbC5jcHA6Ci0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLQotMjAxMS0xMC0y
MSAgR3J6ZWdvcnogQ3phamtvd3NraSAgPGcuY3phamtvd3NraUBzYW1zdW5nLmNvbT4KLQotICAg
ICAgICBbRUZMXSBld2tfdmlld19tb2RlX2dldCB1c2VzIGRlZGljYXRlZCBtYWNyb3MgaW5zdGVh
ZCBvZiBzdGFuZGFyZCBOVUxMIGNoZWNraW5nLgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjU2ODAKLQotICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtl
IE5pd2EuCi0KLSAgICAgICAgR2VuZXJhbGx5IEFQSSBtZXRob2RzIHVzaW5nIG1hY3JvcyBOVUxM
IGNoZWNraW5nIGluIFdlYktpdC1FRkwuCi0gICAgICAgIFRoZSBtYWNyb3MgZW5zdXJlIHRoYXQg
Y29kZSBpcyBzbWFsbGVyLCB2ZXJzaW9uIG9mIHZpZXcgb2JqZWN0Ci0gICAgICAgIGlzIGNoZWNr
ZWQgYW5kIGVycm9yIG1lc3NhZ2UgaXMgZGlzcGxheWVkIGlmIE5VTEwgaXMgcGFzc2VkLgotCi0g
ICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAgKGV3a192aWV3X21vZGVfZ2V0KToK
LQotMjAxMS0xMC0xOSAgUmFmYWVsIEFudG9nbm9sbGkgIDxhbnRvZ25vbGxpQHByb2Z1c2lvbi5t
b2JpPgotCi0gICAgICAgIFtFRkxdIEZpeCB0eXBvcyBvbiBld2tfdmlldyBhbmQgZXdrX2pzLgot
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzA0MzAKLQot
ICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeC4KLQotICAgICAgICBGaXhlcyBmb3IgdHlwb3Mg
dGhhdCB3ZXJlIGludHJvZHVjZWQgd2hlbiByZW5hbWluZyB2YXJpYWJsZXMgdG8gZm9sbG93Ci0g
ICAgICAgIHdlYmtpdCBjb2Rpbmcgc3R5bGUuCi0KLSAgICAgICAgKiBld2svZXdrX2pzLmNwcDoK
LSAgICAgICAgKGV3a19qc19wcm9wZXJ0eV9zZXQpOgotICAgICAgICAoZXdrX2pzX2NsYXNzX25l
dyk6Ci0gICAgICAgIChld2tfanNfbnBvYmplY3RfdG9fb2JqZWN0KToKLSAgICAgICAgKGV3a19q
c19vYmplY3RfbmV3KToKLSAgICAgICAgKGV3a19qc19vYmplY3RfaW52b2tlKToKLSAgICAgICAg
KGV3a19qc19vYmplY3RfdHlwZV9nZXQpOgotICAgICAgICAoZXdrX2pzX29iamVjdF90eXBlX3Nl
dCk6Ci0gICAgICAgIChld2tfanNfdmFyaWFudF9mcmVlKToKLSAgICAgICAgKiBld2svZXdrX3Zp
ZXcuY3BwOgotICAgICAgICAoZXdrX3ZpZXdfanNfb2JqZWN0X2FkZCk6Ci0KLTIwMTEtMTAtMTgg
IFJhcGhhZWwgS3VibyBkYSBDb3N0YSAgPGt1Ym9AcHJvZnVzaW9uLm1vYmk+Ci0KLSAgICAgICAg
W0VGTF0gRFJUOiBDbGVhciBsaXN0IG9mIHZpc2l0ZWQgcGFnZXMgYmVmb3JlIGVhY2ggdGVzdC4K
LSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcwMzU1Ci0K
LSAgICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21lcy4KLQotICAgICAgICBBZGQgZXdrX2hp
c3RvcnlfY2xlYXIgYXMgYSB3YXkgdG8gY2xlYXIgdGhlIGxpc3Qgb2YgdmlzaXRlZCBwYWdlcyBp
biBhCi0gICAgICAgIEV3a19IaXN0b3J5LCBpbiBhIHNpbWlsYXIgZmFzaGlvbiB0byBRdCdzIFFX
ZWJIaXN0b3J5OjpjbGVhcigpLgotCi0gICAgICAgICogZXdrL2V3a19oaXN0b3J5LmNwcDoKLSAg
ICAgICAgKGV3a19oaXN0b3J5X2NsZWFyKToKLSAgICAgICAgKiBld2svZXdrX2hpc3RvcnkuaDoK
LQotMjAxMS0xMC0xOCAgR3J6ZWdvcnogQ3phamtvd3NraSAgPGcuY3phamtvd3NraUBzYW1zdW5n
LmNvbT4KLQotICAgICAgICBbRUZMXSBSZW1vdmUgY29uc3QgbW9kaWZpZXIgZnJvbSBjdHhfbWVu
dSBmdW5jdGlvbnMuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03MDA5MAotCi0gICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCi0KLSAgICAg
ICAgRnVuY3Rpb25zIGV3a19jb250ZXh0X21lbnVfc2hvdyBhbmQgZXdrX2NvbnRleHRfbWVudV9j
dXN0b21fZ2V0Ci0gICAgICAgIGhhdmUgZ290IGNvbnN0IG1vZGlmZXIgdG8gZW5zdXJlIHRoYXQg
RXdrX0NvbnRleHRfTWVudSB3b24ndCBiZQotICAgICAgICBjaGFuZ2VkLiBUaGUgbWV0aG9kcyBl
bWl0IGV2ZW50cyB0aHJvdWdoCi0gICAgICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2Nh
bGwgd2l0aCBFd2tfQ29udGV4dF9NZW51IGFzIHBhcmFtZXRlcgotICAgICAgICB3aGljaCBpcyBj
b252ZXJ0ZWQgdG8gdm9pZCAqLiBJbiB0aGlzIGNhc2UgYW4gYXBwbGljYXRpb24gd2hpY2gKLSAg
ICAgICAgcmVjZWl2ZXMgdGhvc2UgZXZlbnRzIG1heSBjaGFuZ2UgRXdrX0NvbnRleHRfTWVudS4K
LQotICAgICAgICBBZGRpdGlvbmFseSB0aGUgbmFtZSBvZiBld2tfY29udGV4dF9tZW51X2N1c3Rv
bV9nZXQgaGFzIGJlZW4gY2hhbmdlZAotICAgICAgICB0byBld2tfY29udGV4dF9tZW51X2N1c3Rv
bWl6ZSBiZWNhdXNlIGFuIGFwcGxpY2F0aW9uIGlzIGFibGUgdG8KLSAgICAgICAgbW9kaWZ5IHRo
ZSBpdGVtcyBvZiBjb250ZXh0IG1lbnUuCi0KLSAgICAgICAgKiBld2svZXdrX2NvbnRleHRtZW51
LmNwcDoKLSAgICAgICAgKGV3a19jb250ZXh0X21lbnVfY3VzdG9taXplKToKLSAgICAgICAgKGV3
a19jb250ZXh0X21lbnVfc2hvdyk6Ci0gICAgICAgICogZXdrL2V3a19wcml2YXRlLmg6Ci0KLTIw
MTEtMTAtMTcgIFJhcGhhZWwgS3VibyBkYSBDb3N0YSAgPGt1Ym9AcHJvZnVzaW9uLm1vYmk+Ci0K
LSAgICAgICAgW0VGTF0gRXhwb3NlIHRoZSBraXQoKSBmcmFtZSBmdW5jdGlvbiB0byB0aGUgcmVz
dCBvZiBld2suCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03MDI1MwotCi0gICAgICAgIFJldmlld2VkIGJ5IEFudG9uaW8gR29tZXMuCi0KLSAgICAgICAg
Tm93IHRoYXQgd2UgaGF2ZSB0aGUgRVdLUHJpdmF0ZSBuYW1lc3BhY2UsIGl0IG1ha2VzIHNlbnNl
IHRvIG1ha2UgdGhlCi0gICAgICAgIGtpdCgpIGZ1bmN0aW9uIGFjY2Vzc2libGUgdGhlcmUgaW5z
dGVhZCBvZiBoYXZpbmcgaXQgYXMgYSBzdGF0aWMgbG9jYWwKLSAgICAgICAgZnVuY3Rpb24gaW4g
ZXdrX2ZyYW1lLgotCi0gICAgICAgIFdoaWxlIG9uIGl0LCBnZXQgcmlkIG9mIGV3a19mcmFtZV9j
b3JlX2dldCwgd2hpY2ggaXMgb2Jzb2xldGUgYWZ0ZXIKLSAgICAgICAgRVdLUHJpdmF0ZTo6Y29y
ZUZyYW1lLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmNwcDoK
LSAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEVmbDo6cmVzcG9uZFRvQ2hhbmdlZFNlbGVj
dGlvbik6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3Bw
OgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmNhbGxQb2xpY3lGdW5j
dGlvbik6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hE
ZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24pOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVM
b2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6
Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlkVHJhbnNmZXJDaGls
ZEZyYW1lVG9OZXdEb2N1bWVudCk6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVu
dEVmbDo6ZGlzcGF0Y2hEaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQpOgotICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoQ3JlYXRlUGFnZSk6Ci0gICAgICAg
IChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6Y3JlYXRlTmV0d29ya2luZ0NvbnRleHQp
OgotICAgICAgICAqIGV3ay9ld2tfZnJhbWUuY3BwOgotICAgICAgICAoX2V3a19mcmFtZV9sb2Fk
ZXJfZWZsX2dldCk6Ci0gICAgICAgIChfZXdrX2ZyYW1lX2NoaWxkcmVuX2l0ZXJhdG9yX25leHQp
OgotICAgICAgICAoZXdrX2ZyYW1lX2NoaWxkX2ZpbmQpOgotICAgICAgICAoZXdrX2ZyYW1lX2hp
dF90ZXN0X25ldyk6Ci0gICAgICAgIChFV0tQcml2YXRlOjpraXRGcmFtZSk6Ci0gICAgICAgICog
ZXdrL2V3a19wcml2YXRlLmg6Ci0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAg
KGV3a192aWV3X3NldHRpbmdfZW5jb2RpbmdfY3VzdG9tX2dldCk6Ci0gICAgICAgIChld2tfdmll
d19zZXR0aW5nX2VuY29kaW5nX2N1c3RvbV9zZXQpOgotCi0yMDExLTEwLTE3ICBSYXBoYWVsIEt1
Ym8gZGEgQ29zdGEgIDxrdWJvQHByb2Z1c2lvbi5tb2JpPgotCi0gICAgICAgIFtFRkxdIERvIG5v
dCBjaGVjayBmb3IgRnJhbWU6OmNvbnRlbnRSZW5kZXJlcigpIGluIGV3a192aWV3X3JlcGFpbnQu
Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MDExOAot
Ci0gICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgotCi0gICAg
ICAgIFdoZW4gd2UgaGF2ZSBhIHNjcm9sbGJhciB3aXRoIGFuIGFjdHVhbCB3aWR0aCwgdGhlcmUg
bWlnaHQgYmUgYSBjYWxsCi0gICAgICAgIHRvIENocm9tZUNsaWVudEVmbDo6aW52YWxpZGF0ZUNv
bnRlbnRzQW5kV2luZG93KCkgYWZ0ZXIKLSAgICAgICAgRG9jdW1lbnQ6OmRldGFjaCgpIHdhcyBj
YWxsZWQsIG1ha2luZyB0aGUgY2FsbCB0byBjb250ZW50UmVuZGVyZXIoKQotICAgICAgICByZXR1
cm4gMCBldmVuIHRob3VnaCBldmVyeXRoaW5nIGlzIGZpbmUuCi0KLSAgICAgICAgRXhhbXBsZSB0
ZXN0IGNhc2U6IGFuaW1hdGlvbnMvYW5pbWF0aW9uLXNob3J0aGFuZC5odG1sLgotCi0gICAgICAg
ICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAgKGV3a192aWV3X3JlcGFpbnQpOgotCi0yMDEx
LTEwLTE3ICBSYXBoYWVsIEt1Ym8gZGEgQ29zdGEgIDxrdWJvQHByb2Z1c2lvbi5tb2JpPgotCi0g
ICAgICAgIFtFRkxdIFNldCBhIGRlZmF1bHQgY2hhcnNldCB3aGVuIGNyZWF0aW5nIGEgdmlldy4K
LSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY5NzcxCi0K
LSAgICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21lcy4KLQotICAgICAgICBNb3N0IChvciBh
bGwpIHBvcnRzIGRlZmF1bHQgdG8gaXNvLTg4NTktMSB3aGVuIGNyZWF0aW5nIGEgdmlldyAob3Ig
dGhlaXIKLSAgICAgICAgZXF1aXZhbGVudCBvZiBhIHZpZXcpLCBzbyB3ZSBzaG91bGQgZG8gdGhh
dCB0b28uCi0KLSAgICAgICAgVGhpcyBtYWtlcyBmYXN0L2RvbS9Eb2N1bWVudC9kb2N1bWVudC1j
aGFyc2V0Lmh0bWwgcGFzcy4KLQotICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAg
IChfZXdrX3ZpZXdfcHJpdl9uZXcpOgotCi0yMDExLTEwLTE0ICBNYXJrIEhhaG5lbmJlcmcgIDxt
aGFobmVuYmVyZ0BhcHBsZS5jb20+Ci0KLSAgICAgICAgUmVuYW1lIHZpcnR1YWwgcHV0IHRvIHB1
dFZpcnR1YWwKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTY5ODUxCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCi0KLSAgICAgICAgUmVu
YW1lZCB2aXJ0dWFsIHZlcnNpb25zIG9mIHB1dCB0byBwdXRWaXJ0dWFsIGluIHByZXByYXRpb24g
Zm9yIAotICAgICAgICBhZGRpbmcgdGhlIHN0YXRpYyBwdXQgdG8gdGhlIE1ldGhvZFRhYmxlIGlu
IENsYXNzSW5mbyBzaW5jZSB0aGUgCi0gICAgICAgIGNvbXBpbGVyIGdldHMgbWFkIGlmIHRoZSB2
aXJ0dWFsIGFuZCBzdGF0aWMgdmVyc2lvbnMgaGF2ZSB0aGUgc2FtZSAKLSAgICAgICAgbmFtZS4K
LQotICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChld2tfdmlld19qc19vYmpl
Y3RfYWRkKToKLQotMjAxMS0xMC0xNCAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBw
bGUuY29tPgotCi0gICAgICAgIFJlbmFtZSB2aXJ0dWFsIHB1dCB0byBwdXRWaXJ0dWFsCi0gICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02OTg1MQotCi0gICAg
ICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgotCi0gICAgICAgIFJlbmFtZWQgdmlydHVhbCB2
ZXJzaW9ucyBvZiBwdXQgdG8gcHV0VmlydHVhbCBpbiBwcmVwcmF0aW9uIGZvciAKLSAgICAgICAg
YWRkaW5nIHRoZSBzdGF0aWMgcHV0IHRvIHRoZSBNZXRob2RUYWJsZSBpbiBDbGFzc0luZm8gc2lu
Y2UgdGhlIAotICAgICAgICBjb21waWxlciBnZXRzIG1hZCBpZiB0aGUgdmlydHVhbCBhbmQgc3Rh
dGljIHZlcnNpb25zIGhhdmUgdGhlIHNhbWUgCi0gICAgICAgIG5hbWUuCi0KLSAgICAgICAgKiBl
d2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoZXdrX3ZpZXdfanNfb2JqZWN0X2FkZCk6Ci0KLTIw
MTEtMTAtMTQgIFJhcGhhZWwgS3VibyBkYSBDb3N0YSAgPGt1Ym9AcHJvZnVzaW9uLm1vYmk+Ci0K
LSAgICAgICAgW0VGTF0gQnVtcCBjbGFzcyB2ZXJzaW9uIGFmdGVyIHI5NzQyMS4KLSAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcwMTAyCi0KLSAgICAgICAg
UmV2aWV3ZWQgYnkgSm9zZXBoIFBlY29yYXJvLgotCi0gICAgICAgIHI5NzQyMSBjaGFuZ2VkIHRo
ZSBzaWduYXR1cmUgb2YgdGhlIHJ1bl9vcGVuX3BhbmVsIHZpcnR1YWwgbWV0aG9kIGluCi0gICAg
ICAgIEV3a19TbWFydF9DbGFzcywgc28gd2UgbmVlZCB0byBidW1wIHRoZSBjbGFzcyB2ZXJzaW9u
LgotCi0gICAgICAgICogZXdrL2V3a192aWV3Lmg6Ci0KLTIwMTEtMTAtMTQgIFJhcGhhZWwgS3Vi
byBkYSBDb3N0YSAgPGt1Ym9AcHJvZnVzaW9uLm1vYmk+Ci0KLSAgICAgICAgW0VGTF0gQWRkIER1
bXBSZW5kZXJUcmVlU3VwcG9ydEVmbAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9Njg0NTgKLQotICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRl
IENocmlzdGlhbnNlbi4KLQotICAgICAgICBUaGlzIGNsYXNzIGlzIHNpbWlsYXIgdG8gdGhlaXIg
Y291bnRlcnBhcnRzIHByZXNlbnQgaW4gdGhlIFF0IGFuZCBHVEsrCi0gICAgICAgIHBvcnRzLCBh
bmQgaXQgaXMgcmVzcG9uc2libGUgZm9yIHByb3ZpZGluZyBhbiBpbnRlcmZhY2UgdG8gY2VydGFp
bgotICAgICAgICBXZWJDb3JlIG1ldGhvZHMgbmVlZGVkIGJ5IER1bXBSZW5kZXJUcmVlLgotCi0g
ICAgICAgICogQ01ha2VMaXN0c0VmbC50eHQ6IENvbmRpdGlvbmFsbHkgYWRkIHRoZSBzdmcgZGly
ZWN0b3JpZXMgdG8gdGhlCi0gICAgICAgIGluY2x1ZGUgcGF0aC4KLSAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwOiBBZGRlZC4KLSAgICAgICAgKER1
bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6RHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsKToKLSAgICAg
ICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6fkR1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbCk6
Ci0gICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OmFjdGl2ZUFuaW1hdGlvbnNDb3Vu
dCk6Ci0gICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OmNsZWFyRnJhbWVOYW1lKToK
LSAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6Y2xlYXJPcGVuZXIpOgotICAgICAg
ICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpjb3VudGVyVmFsdWVCeUVsZW1lbnRJZCk6Ci0g
ICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OmZyYW1lQ2hpbGRyZW4pOgotICAgICAg
ICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpmcmFtZVBhcmVudCk6Ci0gICAgICAgIChEdW1w
UmVuZGVyVHJlZVN1cHBvcnRFZmw6OmxheW91dEZyYW1lKToKLSAgICAgICAgKER1bXBSZW5kZXJU
cmVlU3VwcG9ydEVmbDo6bnVtYmVyT2ZQYWdlcyk6Ci0gICAgICAgIChEdW1wUmVuZGVyVHJlZVN1
cHBvcnRFZmw6Om51bWJlck9mUGFnZXNGb3JFbGVtZW50SWQpOgotICAgICAgICAoRHVtcFJlbmRl
clRyZWVTdXBwb3J0RWZsOjpwYXVzZUFuaW1hdGlvbik6Ci0gICAgICAgIChEdW1wUmVuZGVyVHJl
ZVN1cHBvcnRFZmw6OnBhdXNlU1ZHQW5pbWF0aW9uKToKLSAgICAgICAgKER1bXBSZW5kZXJUcmVl
U3VwcG9ydEVmbDo6cGF1c2VUcmFuc2l0aW9uKToKLSAgICAgICAgKER1bXBSZW5kZXJUcmVlU3Vw
cG9ydEVmbDo6cGVuZGluZ1VubG9hZEV2ZW50Q291bnQpOgotICAgICAgICAoRHVtcFJlbmRlclRy
ZWVTdXBwb3J0RWZsOjpyZW5kZXJUcmVlRHVtcCk6Ci0gICAgICAgIChEdW1wUmVuZGVyVHJlZVN1
cHBvcnRFZmw6OnJlc3BvbnNlTWltZVR5cGUpOgotICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBw
b3J0RWZsOjpyZXN1bWVBbmltYXRpb25zKToKLSAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9y
dEVmbDo6c2VsZWN0aW9uUmVjdGFuZ2xlKToKLSAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9y
dEVmbDo6c3VpdGFibGVEUlRGcmFtZU5hbWUpOgotICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBw
b3J0RWZsOjpzdXNwZW5kQW5pbWF0aW9ucyk6Ci0gICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBv
cnRFZmw6OmZpbmRTdHJpbmcpOgotICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpn
YXJiYWdlQ29sbGVjdG9yQ29sbGVjdCk6Ci0gICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRF
Zmw6OmdhcmJhZ2VDb2xsZWN0b3JDb2xsZWN0T25BbHRlcm5hdGVUaHJlYWQpOgotICAgICAgICAo
RHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpqYXZhU2NyaXB0T2JqZWN0c0NvdW50KToKLSAgICAg
ICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6d29ya2VyVGhyZWFkQ291bnQpOgotICAgICAg
ICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpjaGlsZEhpc3RvcnlJdGVtcyk6Ci0gICAgICAg
IChEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6Omhpc3RvcnlJdGVtVGFyZ2V0KToKLSAgICAgICAg
KER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6aXNUYXJnZXRJdGVtKToKLSAgICAgICAgKER1bXBS
ZW5kZXJUcmVlU3VwcG9ydEVmbDo6c2V0TW9ja1Njcm9sbGJhcnNFbmFibGVkKToKLSAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuaDogQWRkZWQuCi0gICAg
ICAgICogZXdrL2V3a19mcmFtZS5jcHA6Ci0gICAgICAgIChFV0tQcml2YXRlOjpjb3JlRnJhbWUp
OiBFeHBvcnQgdGhlIFdlYkNvcmU6OkZyYW1lKiByZWxhdGVkIHRvIGFuCi0gICAgICAgIGV3a19m
cmFtZS4KLSAgICAgICAgKiBld2svZXdrX2hpc3RvcnkuY3BwOiBSZW1vdmUgZnVuY3Rpb25zIHdo
aWNoIGhhdmUgYmVlbiBtb3ZlZCB0bwotICAgICAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwu
Ci0gICAgICAgIChfZXdrX2hpc3RvcnlfaXRlbV9saXN0X2dldCk6IF9ld2tfaGlzdG9yeV9pdGVt
X25ldyAtPgotICAgICAgICBld2tfaGlzdG9yeV9pdGVtX25ld19mcm9tX2NvcmUuCi0gICAgICAg
IChld2tfaGlzdG9yeV9oaXN0b3J5X2l0ZW1fYmFja19nZXQpOiBEaXR0by4KLSAgICAgICAgKGV3
a19oaXN0b3J5X2hpc3RvcnlfaXRlbV9jdXJyZW50X2dldCk6IERpdHRvLgotICAgICAgICAoZXdr
X2hpc3RvcnlfaGlzdG9yeV9pdGVtX2ZvcndhcmRfZ2V0KTogRGl0dG8uCi0gICAgICAgIChld2tf
aGlzdG9yeV9oaXN0b3J5X2l0ZW1fbnRoX2dldCk6IERpdHRvLgotICAgICAgICAoZXdrX2hpc3Rv
cnlfaXRlbV9uZXcpOiBEaXR0by4KLSAgICAgICAgKGV3a19oaXN0b3J5X2l0ZW1fbmV3X2Zyb21f
Y29yZSk6IFJlbmFtZSBmcm9tIF9ld2tfaGlzdG9yeV9pdGVtX25ldy4KLSAgICAgICAgKEVXS1By
aXZhdGU6OmNvcmVIaXN0b3J5SXRlbSk6IEV4cG9ydCB0aGUgV2ViQ29yZTo6SGlzdG9yeUl0ZW0q
Ci0gICAgICAgIHJlbGF0ZWQgdG8gYW4gRXdrX0hpc3RvcnlfSXRlbS4KLSAgICAgICAgKiBld2sv
ZXdrX3ByaXZhdGUuaDogQ3JlYXRlIHRoZSBFV0tQcml2YXRlIG5hbWVzcGFjZSwgcmVtb3ZlIGZ1
bmN0aW9ucwotICAgICAgICB3aGljaCBoYXZlIGJlZW4gbW92ZWQgdG8gRHVtcFJlbmRlclRyZWVT
dXBwb3J0RWZsLgotICAgICAgICAqIGV3ay9ld2tfdXRpbC5jcHA6IFJlbW92ZSBmdW5jdGlvbnMg
d2hpY2ggaGF2ZSBiZWVuIG1vdmVkIHRvCi0gICAgICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVm
bC4KLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoRVdLUHJpdmF0ZTo6Y29y
ZVBhZ2UpOiBFeHBvcnQgdGhlIFdlYkNvcmU6OlBhZ2UqIHJlbGF0ZWQgdG8gYW4KLSAgICAgICAg
ZXdrX3ZpZXcuCi0KLTIwMTEtMTAtMTMgIFJhcGhhZWwgS3VibyBkYSBDb3N0YSAgPGt1Ym9AcHJv
ZnVzaW9uLm1vYmk+Ci0KLSAgICAgICAgW0VGTF06IE1vdmUgZnJvbSBGaWxlQ2hvb3NlclNldHRp
bmdzIGRlcHJlY2F0ZWRBY2NlcHRUeXBlIHRvIGFjY2VwdE1JTUVUeXBlcwotICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzAwMDIKLQotICAgICAgICBSZXZp
ZXdlZCBieSBKb3NlcGggUGVjb3Jhcm8uCi0KLSAgICAgICAgQWRhcHQgdG8gdGhlIGNoYW5nZXMg
aW50cm9kdWNlZCBpbiByOTczMzYgYW5kIHI5NzMzOCBieSB1c2luZyBhIHZlY3RvcgotICAgICAg
ICBvZiBzdHJpbmdzIGluc3RlYWQgb2YgYSBzaW5nbGUgc3RyaW5nIGluIHJ1bk9wZW5QYW5lbCgp
LgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcDoKLSAgICAg
ICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEVmbDo6cnVuT3BlblBhbmVsKToKLSAgICAgICAgKiBl
d2svZXdrX3ByaXZhdGUuaDoKLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAo
ZXdrX3ZpZXdfcnVuX29wZW5fcGFuZWwpOiBDaGFuZ2Ugc2lnbmF0dXJlOyBhY2NlcHQgYSBWZWN0
b3I8U3RyaW5nPgotICAgICAgICBpbnN0ZWFkIG9mIGEgY2hhciouIEJ1aWxkIGFuIEVpbmFfTGlz
dCB0byBwYXNzIGZvciBjaGlsZCBjbGFzc2VzLgotICAgICAgICAqIGV3ay9ld2tfdmlldy5oOgot
Ci0yMDExLTEwLTEzICBMZWFuZHJvIFBlcmVpcmEgIDxsZWFuZHJvQHByb2Z1c2lvbi5tb2JpPgot
Ci0gICAgICAgIFVucmV2aWV3ZWQ7IHJldmVydCBzb21lIGNoYW5nZXMgaW50cm9kdWNlZCBpbiBy
OTczMjkgd2hpY2ggYXJlCi0gICAgICAgIHVucmVsYXRlZCB0byB0aGUgcGF0Y2ggYW5kIHJldmVy
dGVkIG90aGVyIHBhdGNoZXMgdGhlbXNlbHZlcy4KLQotICAgICAgICAqIGV3ay9ld2tfZnJhbWUu
Y3BwOgotICAgICAgICAoX2V3a19mcmFtZV9zbWFydF9kZWwpOiBSZW1vdmUgd2FybmluZyBhZ2Fp
bi4KLSAgICAgICAgKGV3a19mcmFtZV9jb250ZW50c19zaXplX2dldCk6IENoZWNrIGZvciBGcmFt
ZSBhbmQgRnJhbWVWaWV3IGFnYWluLgotICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAg
ICAgIChfZXdrX3ZpZXdfcHJpdl9uZXcpOiBSZXZlcnQgYmFjayBkZWZhdWx0IGZvbnQgc2l6ZSBj
aGFuZ2UuCi0KLTIwMTEtMTAtMTIgIEpvc2VwaCBQZWNvcmFybyAgPGpvZXBlY2tAd2Via2l0Lm9y
Zz4KLQotICAgICAgICBQYXNzIFBhcnNlZCBBY2NlcHQgQXR0cmlidXRlIE1JTUUgVHlwZXMgdG8g
V2ViS2l0IENsaWVudHMKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTY5NTk4Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgS2VudCBUYW11cmEuCi0KLSAgICAg
ICAgRUZMIHVzZXMgdGhlIGRlcHJlY2F0ZWQgYWNjZXB0IHN0cmluZy4gVGhleSBjYW4gc3dpdGNo
Ci0gICAgICAgIHRvIGFuIEVpbmFfTGlzdCBpZiB0aGV5IHdhbnQgdG8gdXBkYXRlIHRoZWlyIEFQ
SS4KLQotICAgICAgICAqIHNyYy9DaHJvbWVDbGllbnRJbXBsLmNwcDoKLSAgICAgICAgKFdlYktp
dDo6Q2hyb21lQ2xpZW50SW1wbDo6cnVuT3BlblBhbmVsKToKLQotMjAxMS0xMC0xMiAgR3l1eW91
bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxdIENoYW5n
ZSBlZmwgc3R5bGUgcGFyYW1ldGVyIHZhcmlhYmxlcyB3aXRoIFdlYktpdCBjb2RpbmcgU3R5bGUK
LSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY5MDczCi0K
LSAgICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21lcy4KLQotICAgICAgICBUaGlzIGlzIGEg
dGhpcmQgc3RlcCBpbiBvcmRlciB0byBiZSBtb3JlIGNvbXBsaWFudCB3aXRoIFdlYktpdCBjb2Rp
bmcgc3R5bGUuCi0gICAgICAgIFdlIGhhdmUgdXNlZCBvbmUtbGV0dGVyfCB0d28tbGV0dGVyIHBh
cmFtZXRlciBhY2NvcmRpbmcgdG8gZWZsIHN0eWxlLiBIb3dldmVyLCBpdCdzIG1vcmUgZGlmZmlj
dWx0Ci0gICAgICAgIGZvciBvdGhlciByZXZpZXdlcnMgdG8gcmV2aWV3IEVGTCBwYXRjaGVzLiBT
bywgdGhpcyBwYXRjaCBjaGFuZ2VzIGVmbCBzdHlsZSBwYXJhbWV0ZXJzCi0gICAgICAgIHdpdGgg
bWVhbmluZ2Z1bCBvbmUuCi0KLSAgICAgICAgTWFqb3JzIGNoYW5nZXMgYXJlIGxpc3RlZCBiZWxv
dywKLQotICAgICAgICAtIFVzZSBld2tGcmFtZSBpbnN0ZWFkIG9mIG8gcGFyYW1ldGVyIGluIGV3
a19mcmFtZS5jcHAuCi0gICAgICAgIC0gVXNlIGV3a1ZpZXcgaW5zdGVhZCBvZiBvIHBhcmFtZXRl
ciBpbiBld2tfdmlldy5jcHAuCi0gICAgICAgIC0gVXNlIG1lbnUgYW5kIGl0ZW0gaW5zdGVhZCBv
ZiBvIHBhcmFtZXRlciBpbiBld2tfY29udGV4dG1lbnUuY3BwLgotICAgICAgICAtIFVzZSBld2tU
aWxlIGluc3RlYWQgb2YgbyBwYXJhbWV0ZXIgaW4gZXdrX3RpbGVfeHh4LmNwcC4KLSAgICAgICAg
LSBVc2UgdGlsZSBwYXJhbWV0ZXIgbmFtZSBpbnN0ZWFkIG9mIHQgcGFyYW1ldGVyIGluIGV3a190
aWxlX3h4eC5jcHAuCi0gICAgICAgIC0gVXNlIHNtYXJ0RGF0YSBpbnN0ZWFkIG9mIHNkIHBhcmFt
ZXRlciBmb3IgRXdrX1hYWFhfU21hcnRfRGF0YSBzdHJ1Y3QuCi0gICAgICAgIC0gVXNlIHdpZHRo
LCBoZWlnaHQgaW5zdGVhZCBvZiB3LCBoIHBhcmFtZXRlci4KLSAgICAgICAgLSBVc2UgeHh4RXZl
bnQgaW5zdGVhZCBvZiBldiBwYXJhbWV0ZXIgZm9yIGV2ZW50LiAoZS5nLiBkb3duRXZlbnQsIHVw
RXZlbnQsIHdoZWVsRXZlbnQpCi0gICAgICAgIC0gVXNlIHNjcm9sbFgsIHNjcm9sbFksIHNjcm9s
bFdpZHRoLCBzY3JvbGxIZWlnaHQsIGNlbnRlclgsIGNlbnRlclksIGRlbHRhWCwgZGVsdGFZIGlu
c3RlYWQgb2Ygc3gsIHh5LCBzdywKLSAgICAgICAgc2gsIGN4LCBjeSwgZHgsIGR5LgotICAgICAg
ICAtIFVzZSB0aWxlVW51c2VkQ2FjaGUgaW5zdGVhZCBvZiB0dWMgcGFyYW1ldGVyIGluIHRpbGVk
IGJhY2tpbmcgc3RvcmUuCi0gICAgICAgIC0gVXNlIHJlZCwgZ3JlZW4sIGJsdWUgYW5kIGFscGhh
IGluc3RlYWQgb2YgcixnLGIsYS4KLSAgICAgICAgLSBSZW1vdmUgIl8iIGZyb20gcGFyYW1ldGVy
IHZhcmlhYmxlLgotICAgICAgICAtIFJ1biBkZW1hcmNoaSdzIGNvZGluZyBzdHlsZSBzY3JpcHQg
Zm9yIGV3a190aWxlX3h4eC5jcHAgZmlsZXMuCi0gICAgICAgIC0gUmVtb3ZlICp2b2lkKiBwYXJh
bWV0ZXIgaW4gZXdrX3RpbGVfeHh4LmNwcCdzIGludGVybmFsIGZ1bmN0aW9ucy4KLQotICAgICAg
ICAqIGV3ay9ld2tfYXV0aF9zb3VwLmNwcDoKLSAgICAgICAgKiBld2svZXdrX2NvbnRleHRtZW51
LmNwcDoKLSAgICAgICAgKiBld2svZXdrX2Nvb2tpZXMuY3BwOgotICAgICAgICAqIGV3ay9ld2tf
ZnJhbWUuY3BwOgotICAgICAgICAqIGV3ay9ld2tfaGlzdG9yeS5jcHA6Ci0gICAgICAgICogZXdr
L2V3a19qcy5jcHA6Ci0gICAgICAgICogZXdrL2V3a19wcm90b2NvbF9oYW5kbGVyX3NvdXAuY3Bw
OgotICAgICAgICAqIGV3ay9ld2tfc2V0dGluZ3MuY3BwOgotICAgICAgICAqIGV3ay9ld2tfdGls
ZWRfYmFja2luZ19zdG9yZS5jcHA6Ci0gICAgICAgICogZXdrL2V3a190aWxlZF9iYWNraW5nX3N0
b3JlLmg6Ci0gICAgICAgICogZXdrL2V3a190aWxlZF9tYXRyaXguY3BwOgotICAgICAgICAqIGV3
ay9ld2tfdGlsZWRfbWF0cml4Lmg6Ci0gICAgICAgICogZXdrL2V3a190aWxlZF9tb2RlbC5jcHA6
Ci0gICAgICAgICogZXdrL2V3a190aWxlZF9tb2RlbC5oOgotICAgICAgICAqIGV3ay9ld2tfdmll
dy5jcHA6Ci0gICAgICAgICogZXdrL2V3a192aWV3X3NpbmdsZS5jcHA6Ci0gICAgICAgICogZXdr
L2V3a192aWV3X3RpbGVkLmNwcDoKLSAgICAgICAgKiBld2svZXdrX3dpbmRvd19mZWF0dXJlcy5j
cHA6Ci0KLTIwMTEtMTAtMTAgIFJhcGhhZWwgS3VibyBkYSBDb3N0YSAgPGt1Ym9AcHJvZnVzaW9u
Lm1vYmk+Ci0KLSAgICAgICAgW0VGTF0gRG8gbm90IGNhY2hlIGEgZnJhbWUncyBjb250ZW50cyBz
aXplLgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njk3
NzIKLQotICAgICAgICBSZXZpZXdlZCBieSBBbnRvbmlvIEdvbWVzLgotCi0gICAgICAgIEFzIHBh
cnQgb2YgdGhlIHByb2Nlc3Mgb2YgZXhwZXJpbWVudGluZyB3aXRoIGhhdmluZyBzY3JvbGxiYXJz
IHdpdGgKLSAgICAgICAgYW4gYWN0dWFsIHNpemUsIGl0IGJlY2FtZSBjbGVhciB0aGF0IHNldHRp
bmcgdGhlIGNvbnRlbnRzIHNpemUgdmlhCi0gICAgICAgIENocm9tZUNsaWVudDo6Y29udGVudHNT
aXplQ2hhbmdlZCgpIGFuZCBrZWVwaW5nIHRoZSB2YWx1ZSBhcm91bmQgZG9lcwotICAgICAgICBu
b3Qgd29yay4KLQotICAgICAgICBDYXNlIGluIHBvaW50OiBGcmFtZVZpZXc6OmFkanVzdFZpZXdT
aXplKCkgY2FuIHJlc3VsdCBpbiBuZXN0ZWQKLSAgICAgICAgU2Nyb2xsVmlldzo6dXBkYXRlU2Ny
b2xsYmFycygpIGNhbGxzIGluIHdoaWNoIHRoZSBpbm5lcm1vc3Qgb25lcyBydW4KLSAgICAgICAg
Q2hyb21lQ2xpZW50Ojpjb250ZW50c1NpemVDaGFuZ2VkKCkgYmVmb3JlIHRoZSBvdXRlcm1vc3Qg
b25lcy4gVGhpcwotICAgICAgICBtZWFucyB0aGUgZXdrX2ZyYW1lJ3Mgc21hcnQgZGF0YSB3aWxs
IHN0b3JlIGFuIG9sZCB2YWx1ZS4KLQotICAgICAgICAqIGV3ay9ld2tfZnJhbWUuY3BwOgotICAg
ICAgICAoZXdrX2ZyYW1lX2NvbnRlbnRzX3NpemVfZ2V0KToKLSAgICAgICAgKGV3a19mcmFtZV9j
b250ZW50c19zaXplX2NoYW5nZWQpOgotCi0yMDExLTEwLTA5ICBSeXVhbiBDaG9pICA8cnl1YW4u
Y2hvaUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBbRUZMXSBSZWZhY3RvciB6b29tIHJlbGF0ZWQg
QVBJcy4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYy
ODQyCi0KLSAgICAgICAgQ3VycmVudCB6b29tIGFwaXMgY2FuJ3Qgc3VwcG9ydCB0aGUgY2FzZSBv
ZiB1c2luZyBib3RoIHBhZ2Ugem9vbSBhbmQgdGV4dAotICAgICAgICB6b29tLgotCi0gICAgICAg
IEFzIGEgZmlyc3Qgc3RlcCB0byByZWZhY3RvciwgdGhpcyBzcGxpdCBld2tfe3ZpZXd8ZnJhbWV9
X3pvb21fe2dldHxzZXR9Ci0gICAgICAgIHRvIHVzZSBib3RoIHBhZ2Vfem9vbSBhbmQgdGV4dCB6
b29tIGluZGl2aWR1YWxseS4KLSAgICAgICAgSW4gYWRkaXRpb24sIGludHJvZHVjZSBld2tfdmll
d19zY2FsZV97Z2V0fHNldH0gdG8gc3VwcG9ydCBwcm9wb3J0aW9uYWwgc2NhbGluZy4KLQotICAg
ICAgICBld2tfdmlld196b29tX3tnZXR8c2V0fSB3aWxsIHJlbWFpbiB1bmNoYW5nZWQgdW50aWwg
dGhlIGJlaGF2aW9yIG9mIHNtYXJ0X3pvb20KLSAgICAgICAgd2FzIGNoYW5nZWQuCi0KLSAgICAg
ICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21lcy4KLQotICAgICAgICAqIGV3ay9ld2tfZnJhbWUu
Y3BwOiBSZW1vdmUgZXdrX2ZyYW1lX3pvb21fdGV4dF9vbmx5X3tnZXR8c2V0fS4KLSAgICAgICAg
KGV3a19mcmFtZV9wYWdlX3pvb21fZ2V0KTogUmVuYW1lZCBmcm9tIGV3a19mcmFtZV96b29tX2dl
dCgpLgotICAgICAgICAoZXdrX2ZyYW1lX3BhZ2Vfem9vbV9zZXQpOiBSZW5hbWVkIGZyb20gZXdr
X2ZyYW1lX3pvb21fc2V0KCkuCi0gICAgICAgIChld2tfZnJhbWVfdGV4dF96b29tX2dldCk6IEV4
dHJhY3RlZCBmcm9tIGV3a19mcmFtZV96b29tX2dldCgpLgotICAgICAgICAoZXdrX2ZyYW1lX3Rl
eHRfem9vbV9zZXQpOiBFeHRyYWN0ZWQgZnJvbSBld2tfZnJhbWVfem9vbV9zZXQoKS4KLSAgICAg
ICAgKiBld2svZXdrX2ZyYW1lLmg6Ci0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDogUmVtb3Zl
IGV3a192aWV3X3pvb21fdGV4dF9vbmx5X3tnZXR8c2V0fQotICAgICAgICAoX2V3a192aWV3X3Nt
YXJ0X3pvb21fc2V0KTogQ2hhbmdlIGV3a19mcmFtZV96b29tX2dldCgpIHRvIGV3a19mcmFtZV9w
YWdlX3pvb21fZ2V0KCkuCi0gICAgICAgIChld2tfdmlld196b29tX2dldCk6IENoYW5nZSBld2tf
ZnJhbWVfem9vbV9nZXQoKSB0byBld2tfZnJhbWVfcGFnZV96b29tX2dldCgpLgotICAgICAgICAo
ZXdrX3ZpZXdfcGFnZV96b29tX2dldCk6IEV4dHJhY3RlZCBmcm9tIGV3a192aWV3X3pvb21fZ2V0
KCkuCi0gICAgICAgIChld2tfdmlld19wYWdlX3pvb21fc2V0KTogRXh0cmFjdGVkIGZyb20gZXdr
X3ZpZXdfem9vbV9zZXQoKS4KLSAgICAgICAgKGV3a192aWV3X3NjYWxlX2dldCk6IEFkZGVkLgot
ICAgICAgICAoZXdrX3ZpZXdfc2NhbGVfc2V0KTogQWRkZWQuCi0gICAgICAgIChld2tfdmlld190
ZXh0X3pvb21fZ2V0KTogRXh0cmFjdGVkIGZyb20gZXdrX3ZpZXdfem9vbV9nZXQoKS4KLSAgICAg
ICAgKGV3a192aWV3X3RleHRfem9vbV9zZXQpOiBFeHRyYWN0ZWQgZnJvbSBld2tfdmlld196b29t
X3NldCgpLgotICAgICAgICAoZXdrX3ZpZXdfem9vbV93ZWFrX3NldCk6IENoYW5nZSBld2tfZnJh
bWVfem9vbV9nZXQgdG8gZXdrX2ZyYW1lX3BhZ2Vfem9vbV9nZXQoKS4KLSAgICAgICAgKGV3a192
aWV3X3pvb21fYW5pbWF0ZWRfc2V0KTogQ2hhbmdlIGV3a19mcmFtZV96b29tX2dldCgpIHRvIGV3
a19mcmFtZV9wYWdlX3pvb21fZ2V0KCkuCi0gICAgICAgIChld2tfdmlld19wcmVfcmVuZGVyX3Jl
Z2lvbik6IENoYW5nZSBld2tfZnJhbWVfem9vbV9nZXQoKSB0byBld2tfZnJhbWVfcGFnZV96b29t
X2dldCgpLgotICAgICAgICAoZXdrX3ZpZXdfcHJlX3JlbmRlcl9yZWxhdGl2ZV9yYWRpdXMpOiBD
aGFuZ2UgZXdrX2ZyYW1lX3pvb21fZ2V0KCkgdG8gZXdrX2ZyYW1lX3BhZ2Vfem9vbV9nZXQoKS4K
LSAgICAgICAgKiBld2svZXdrX3ZpZXcuaDoKLQotMjAxMS0xMC0wNiAgR3l1eW91bmcgS2ltICA8
Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxdIENoYW5nZSBkYXRhIHR5
cGUgb2YgcGFyYW1ldGVyIGluIGV3a192aWV3X3ZpZXdwb3J0X2F0dHJpYnV0ZXNfZ2V0KCkuCi0g
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02OTUwNQotCi0g
ICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCi0KLSAgICAgICAgZXdrX3ZpZXdfdmll
d3BvcnRfYXR0cmlidXRlc19nZXQoKSBoYXMgdXNlZCBpbXBsaWNpdCBjYXN0aW5nIGZvciB3aWR0
aCBhbmQgaGVpZ2h0IG9mIHZpZXdwb3J0LgotICAgICAgICBIb3dldmVyLCBpdCBpcyBiZXR0ZXIg
dG8gdXNlICppbnQqIGRhdGEgdHlwZSBhcyBwYXJhbWV0ZXIgZGF0YSB0eXBlIGluc3RlYWQgb2Yg
KmZsb2F0KiBjYXN0aW5nLgotCi0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAg
KGV3a192aWV3X3ZpZXdwb3J0X2F0dHJpYnV0ZXNfZ2V0KToKLSAgICAgICAgKiBld2svZXdrX3Zp
ZXcuaDoKLQotMjAxMS0xMC0wNCAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcu
Y29tPgotCi0gICAgICAgIFtFRkxdIE9ubHkgc2V0IHdoZW4gdGhlIGN1c3RvbSBlbmNvZGluZyBp
cyBkaWZmZXJlbnQgZnJvbSBleGlzdGluZyB2YWx1ZQotICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjkwNjEKLQotICAgICAgICBSZXZpZXdlZCBieSBIYWpp
bWUgTW9yaXRhLgotCi0gICAgICAgIE9ubHkgc2V0IHRoZSBjdXN0b20gZW5jb2RpbmcgdmFsdWUg
aWYgaXQgaXMgZGlmZmVyZW50IGZyb20gdGhlIGN1cnJlbnQgdmFsdWUsIHRvIGF2b2lkCi0gICAg
ICAgIHJlbG9hZGluZyB0aGUgcGFnZS4KLQotICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0g
ICAgICAgIChld2tfdmlld19zZXR0aW5nX2VuY29kaW5nX2N1c3RvbV9zZXQpOgotCi0yMDExLTEw
LTA0ICBSw6ltaSBEdXJhZmZvcnQgIDxyZW1pLmR1cmFmZm9ydEBzdC5jb20+Ci0KLSAgICAgICAg
W0VGTF0gRml4IGNvbXBpbGF0aW9uIHdoZW4gU1FMaXRlIGFuZC9vciBsaWJ4c2x0IGFyZSBub3Qg
aW5zdGFsbGVkIGluIC91c3IvaW5jbHVkZQotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NjkzMzgKLQotICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeAot
Ci0gICAgICAgICogQ01ha2VMaXN0c0VmbC50eHQ6Ci0KLTIwMTEtMTAtMDMgIFJ5dWFuIENob2kg
IDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxdIFJlbmFtZSBld2tfdGls
ZWRfKi5jIHRvIGV3a190aWxlZF8qLmNwcAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9Njg1OTkKLQotICAgICAgICBVc2UgYSBDKysgY29tcGlsZXIgZm9y
IHRoZXNlIGZpbGVzIGFuZCBmaXggY29tcGlsZSBpc3N1ZXMgYW5kIGNvZGluZyBzdHlsZS4KLQot
ICAgICAgICBSZXZpZXdlZCBieSBIYWppbWUgTW9yaXRhLgotCi0gICAgICAgICogQ01ha2VMaXN0
c0VmbC50eHQ6Ci0gICAgICAgICogZXdrL2V3a190aWxlZF9iYWNraW5nX3N0b3JlLmNwcDogUmVu
YW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdGlsZWRfYmFja2luZ19zdG9yZS5j
LgotICAgICAgICAqIGV3ay9ld2tfdGlsZWRfYmFja2luZ19zdG9yZS5oOgotICAgICAgICAqIGV3
ay9ld2tfdGlsZWRfbWF0cml4LmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvZWZsL2V3
ay9ld2tfdGlsZWRfbWF0cml4LmMuCi0gICAgICAgICogZXdrL2V3a190aWxlZF9tb2RlbC5jcHA6
IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3RpbGVkX21vZGVsLmMuCi0K
LTIwMTEtMDktMjkgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KLQot
ICAgICAgICBbRUZMXSBVc2UgQysrIHR5cGUgY2FzdCBpbnN0ZWFkIG9mIEMgc3R5bGUgdHlwZSBj
YXN0Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODMy
MQotCi0gICAgICAgIFJldmlld2VkIGJ5IE1hcnRpbiBSb2JpbnNvbi4KLQotICAgICAgICBUaGlz
IGlzIGEgc2Vjb25kIHN0ZXAgaW4gb3JkZXIgdG8gYmUgbW9yZSBjb21wbGlhbnQgd2l0aCBXZWJL
aXQgY29kaW5nIHN0eWxlLgotICAgICAgICBUaGUgc2Vjb25kIHN0ZXAgaXMgdG8gY2hhbmdlIEMt
dHlwZSBjYXN0aW5nIHdpdGggQysrLXR5cGUgY2FzdGluZyBpbiAuY3BwIGZpbGVzLgotCi0gICAg
ICAgIEluIGFkZGl0aW9uLCByZW1haW5lZCBlZmwgc3R5bGUgJyonIHBvaW50ZXIgcGxhY2VtZW50
cyBhcmUgbW92ZWQgdG8gdGhlIHJpZ2h0IHBsYWNlIGFzIHdlbGwuCi0KLSAgICAgICAgKiBld2sv
ZXdrX2F1dGhfc291cC5jcHA6Ci0gICAgICAgICogZXdrL2V3a19jb250ZXh0bWVudS5jcHA6Ci0g
ICAgICAgICogZXdrL2V3a19mcmFtZS5jcHA6Ci0gICAgICAgICogZXdrL2V3a19oaXN0b3J5LmNw
cDoKLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAqIGV3ay9ld2tfdmlld19z
aW5nbGUuY3BwOgotICAgICAgICAqIGV3ay9ld2tfdmlld190aWxlZC5jcHA6Ci0KLTIwMTEtMDkt
MjkgIFJhcGhhZWwgS3VibyBkYSBDb3N0YSAgPGt1Ym9AcHJvZnVzaW9uLm1vYmk+Ci0KLSAgICAg
ICAgW0VGTF0gQVBJIHRvIGdldCBwbGFpbiB0ZXh0IG9mIHRoZSBmcmFtZQotICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjcxMTQKLQotICAgICAgICBSZXZp
ZXdlZCBieSBSeW9zdWtlIE5pd2EuCi0KLSAgICAgICAgQWRkIGEgZnVuY3Rpb24gdG8gcmV0dXJu
IGEgZnJhbWUncyBjb250ZW50cyBjb252ZXJ0ZWQgdG8gcGxhaW4gdGV4dCwKLSAgICAgICAgYXMg
YWxyZWFkeSBleHBvc2VkIGJ5IG90aGVyIHBvcnRzIGFuZCBuZWVkZWQgYnkgRFJUIHdoZW4gZHVt
cGluZyBhCi0gICAgICAgIGZyYW1lJ3MgY29udGVudHMuCi0KLSAgICAgICAgKiBld2svZXdrX2Zy
YW1lLmNwcDoKLSAgICAgICAgKGV3a19mcmFtZV9wbGFpbl90ZXh0X2dldCk6Ci0gICAgICAgICog
ZXdrL2V3a19mcmFtZS5oOgotCi0yMDExLTA5LTI4ICBLd2FuZ0h5dWsgS2ltICA8aHl1a2kua2lt
QHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxdIFJlbW92ZSB1c2VsZXNzIGFzc2lnbm1lbnQg
Y29kZSBpbiBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfem9vbV9zZXRfaW50ZXJuYWwuCi0gICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODU5NAotCi0gICAg
ICAgIEFzIHRoZSAxc3QgYXNzaWdubWVudCBvZiBsb2NhbCB2YXJpYWJsZSBieCBpbiBfZXdrX3Rp
bGVkX2JhY2tpbmdfc3RvcmVfem9vbV9zZXRfaW50ZXJuYWwKLSAgICAgICAgaXNuJ3QgZWZmZWN0
aXZlIGF0IGFsbCwgdGhpcyBwYXRjaCBqdXN0IHJlbW92ZXMgaXQuCi0KLSAgICAgICAgUmV2aWV3
ZWQgYnkgUnlvc3VrZSBOaXdhLgotCi0gICAgICAgICogZXdrL2V3a190aWxlZF9iYWNraW5nX3N0
b3JlLmM6Ci0gICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfem9vbV9zZXRfaW50ZXJu
YWwpOgotCi0yMDExLTA5LTI4ICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5j
b20+Ci0KLSAgICAgICAgW0VGTF0gUmVtb3ZlICp2b2lkKiBwYXJhbWV0ZXIgaW4gaW50ZXJuYWwg
ZnVuY3Rpb25zCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02ODg2NwotCi0gICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCi0KLSAgICAgICAg
QXMgYSBzdGVwIHRvIGxldCBld2sgYmUgY29tcGxpYW50IHdpdGggd2Via2l0IGNvZGluZyBzdHls
ZSwKLSAgICAgICAgd2UgbmVlZCB0byByZW1vdmUgKnZvaWQqIHBhcmFtZXRlciBpbiBpbnRlcm5h
bCBmdW5jdGlvbnMuCi0KLSAgICAgICAgKiBld2svZXdrX3ByaXZhdGUuaDoKLSAgICAgICAgKiBl
d2svZXdrX3NldHRpbmdzLmNwcDoKLSAgICAgICAgKGV3a19zZXR0aW5nc193ZWJfZGF0YWJhc2Vf
ZGVmYXVsdF9xdW90YV9nZXQpOgotICAgICAgICAqIGV3ay9ld2tfdXRpbC5jcHA6Ci0gICAgICAg
IChld2tfdXRpbF9kcGlfZ2V0KToKLQotMjAxMS0wOS0yOCAgR3J6ZWdvcnogQ3phamtvd3NraSAg
PGcuY3phamtvd3NraUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBbRUZMXSBBbGxvdyB0byBza2lw
IGNvdW50IHBhcmFtZXRlciBpbiBld2tfdmlld19yZXBhaW50c19nZXQgYW5kIGV3a192aWV3X3Nj
cm9sbF9yZXF1ZXN0c19nZXQuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD02NTg0MgotCi0gICAgICAgIFJldmlld2VkIGJ5IFJ5b3N1a2UgTml3YS4KLQot
ICAgICAgICBNYWtlcyB0aGUgY291bnQgcGFyYW1ldGVyIGluIGV3a192aWV3X3JlcGFpbnRzX2dl
dCBhbmQgZXdrX3ZpZXdfc2Nyb2xsX3JlcXVlc3RzX2dldAotICAgICAgICBhcyBhbiBvcHRpb25h
bCBwYXJhbWV0ZXIuIERldmVsb3BlciBtYXkgcGFzcyBOVUxMIHRvIHNraXAgcmV0dXJuaW5nIHRo
ZSBudW1iZXIgb2YgZWxlbWVudHMKLSAgICAgICAgb2YgdGhlIHJlcXVlc3RlZCBhcnJheS4KLQot
ICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChld2tfdmlld19yZXBhaW50c19n
ZXQpOgotICAgICAgICAoZXdrX3ZpZXdfc2Nyb2xsX3JlcXVlc3RzX2dldCk6Ci0KLTIwMTEtMDkt
MjggIEdyemVnb3J6IEN6YWprb3dza2kgIDxnLmN6YWprb3dza2lAc2Ftc3VuZy5jb20+Ci0KLSAg
ICAgICAgW0VGTF0gVVJMIG9mIHJlc291cmNlcyBhcmUgbm90IGRlY29kZWQuCi0gICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NjU0MAotCi0gICAgICAgIFJl
dmlld2VkIGJ5IFJ5b3N1a2UgTml3YS4KLQotICAgICAgICBGaXggZXdrX2ZyYW1lX3Jlc291cmNl
c19sb2NhdGlvbl9nZXQgd2hpY2ggd2FzIHJldHVybmluZyB0aGUgZW5jb2RlZCBVUkwgb2YgcmVz
b3VyY2VzLgotICAgICAgICBBcyBhIHJlc3VsdCBjaGFyYWN0ZXJzIGZvciBpbnN0YW5jZSwgJTIw
IG9jY3VycmVkLiBGb3Igbm93IHJldHVybmVkIHN0cmluZ3MgYXJlIGRlY29kZWQuCi0KLSAgICAg
ICAgKiBld2svZXdrX2ZyYW1lLmNwcDoKLSAgICAgICAgKGV3a19mcmFtZV9yZXNvdXJjZXNfbG9j
YXRpb25fZ2V0KToKLQotMjAxMS0wOS0yNyAgUmFwaGFlbCBLdWJvIGRhIENvc3RhICA8a3Vib0Bw
cm9mdXNpb24ubW9iaT4KLQotICAgICAgICBbRUZMXSBNYWtlIGV3a192aWV3IGVtaXQgdGhlICJs
b2FkLGRvY3VtZW50LGZpbmlzaGVkIiBzaWduYWwuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Njc4MgotCi0gICAgICAgIFJldmlld2VkIGJ5IEFudG9u
aW8gR29tZXMuCi0KLSAgICAgICAgQ3VycmVudGx5LCBvbmx5IGV3a19mcmFtZSBlbWl0cyB0aGUg
ImxvYWQsZG9jdW1lbnQsZmluaXNoZWQiIHNpZ25hbAotICAgICAgICB3aGVuIEZyYW1lTG9hZGVy
Q2xpZW50RWZsOjpkaXNwYXRjaERpZEZpbmlzaERvY3VtZW50TG9hZCgpIGNhbGxzCi0gICAgICAg
IGV3a19mcmFtZV9sb2FkX2RvY3VtZW50X2ZpbmlzaGVkKCkuCi0KLSAgICAgICAgSG93ZXZlciwg
aW4gc29tZSBjYXNlcyBpdCBpcyBub3QgZXZlbiBwb3NzaWJsZSB0byBjb25uZWN0IHRvIHRoZQot
ICAgICAgICAiZnJhbWUsY3JlYXRlZCIgc2lnbmFsIHRvIHByb3Blcmx5IG1vbml0b3IgdGhlCi0g
ICAgICAgICJsb2FkLGRvY3VtZW50LGZpbmlzaGVkIiBzaWduYWwsIGFzIHRoZSBmb3JtZXIgaXMg
bm90IGVtaXR0ZWQuCi0gICAgICAgIGZhc3QvZnJhbWVzL2ZyYW1lLXVubG9hZC1jcmFzaC5odG1s
LCBmb3IgZXhhbXBsZSwgaGFzIGEgcGFnZSB3aXRoIGFuCi0gICAgICAgIGlmcmFtZSBpbnNpZGUg
YW4gaWZyYW1lLCBhbmQgdGhpcyBpbm5lcm1vc3QgaWZyYW1lIGRvZXMgbm90IHNlZW0gdG8gYmUK
LSAgICAgICAgbG9hZGVkIHZpYSBGcmFtZUxvYWRlckNsaWVudEVmbDo6Y3JlYXRlRnJhbWUgKHdo
aWNoIGNhbGxzIGFsbCB0aGUKLSAgICAgICAgbWFjaGluZXJ5IHdoaWNoIHRoZW4gZW1pdHMgdGhl
ICJmcmFtZSxjcmVhdGVkIiBzaWduYWwpLgotCi0gICAgICAgIFdlIG5vdyBtYWtlIGV3a19mcmFt
ZV9sb2FkX2RvY3VtZW50X2ZpbmlzaGVkKCkgY2FsbCB0aGUgbmV3bHktY3JlYXRlZAotICAgICAg
ICBld2tfdmlld19sb2FkX2RvY3VtZW50X2ZpbmlzaGVkKCkgZnVuY3Rpb24sIHdob3NlIGpvYiBp
cyB0byBlbWl0IHRoZQotICAgICAgICAibG9hZCxkb2N1bWVudCxzaWduYWwiIHdpdGggdGhlIGZy
YW1lIGFzIGl0cyBwYXJhbWV0ZXIuIFRoaXMgd2F5LCBvbmUKLSAgICAgICAgY2FuIGp1c3QgY29u
bmVjdCB0byB0aGUgdmlldyBhbmQgbWFrZSBzdXJlIGFsbCB0aGUgc2lnbmFscyB3aWxsIGdldAot
ICAgICAgICBkZWxpdmVyZWQuCi0KLSAgICAgICAgKiBld2svZXdrX2ZyYW1lLmNwcDoKLSAgICAg
ICAgKGV3a19mcmFtZV9sb2FkX2RvY3VtZW50X2ZpbmlzaGVkKToKLSAgICAgICAgKiBld2svZXdr
X3ByaXZhdGUuaDoKLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoZXdrX3Zp
ZXdfbG9hZF9kb2N1bWVudF9maW5pc2hlZCk6Ci0gICAgICAgICogZXdrL2V3a192aWV3Lmg6Ci0K
LTIwMTEtMDktMjYgIFJhcGhhZWwgS3VibyBkYSBDb3N0YSAgPGt1Ym9AcHJvZnVzaW9uLm1vYmk+
Ci0KLSAgICAgICAgW0NNYWtlXSBSZW1vdmUgRmluZEZyZWV0eXBlLmNtYWtlCi0gICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODc3OAotCi0gICAgICAgIFJl
dmlld2VkIGJ5IEFkYW0gQmFydGguCi0KLSAgICAgICAgQ01ha2UgaGFzIHByb3ZpZGVkIGl0cyBv
d24gRmluZEZyZWV0eXBlLmNtYWtlIGZvcmV2ZXIsIHNvIHRoZXJlIGlzIG5vCi0gICAgICAgIG5l
ZWQgdG8gaGF2ZSBhbm90aGVyIGltcGxlbWVudGF0aW9uIGluIFdlYktpdC4KLQotICAgICAgICAq
IENNYWtlTGlzdHNFZmwudHh0OiBVc2UgRlJFRVRZUEVfe0xJQlJBUklFUyxJTkNMVURFX0RJUlN9
IGluc3RlYWQgb2YKLSAgICAgICAgRnJlZXR5cGVfe0xJQlJBUklFUyxJTkNMVURFX0RJUlN9Lgot
Ci0yMDExLTA5LTI2ICBMdWNhcyBEZSBNYXJjaGkgIDxsdWNhcy5kZW1hcmNoaUBwcm9mdXNpb24u
bW9iaT4KLQotICAgICAgICBbRUZMXSBBZGQgdmlydHVhbCBtZXRob2QgdG8gbm90aWZ5IHVzZXIg
d2hlbiB3cmFwcGluZyBmb2N1cwotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9Njg2OTkKLQotICAgICAgICBSZXZpZXdlZCBieSBBbnRvbmlvIEdvbWVzLgot
Ci0gICAgICAgIEFkZCBhIHZpcnR1YWwgbWV0aG9kIHRvIGV3a192aWV3LCBzbyB0aGUgQ2hyb21l
IGdldHMgbm90aWZpZWQgaWYgd2UKLSAgICAgICAgZmluaXNoZWQgZm9jdXNpbmcgYWxsIHRoZSBp
dGVtcyBhbmQgd291bGQgc3RhcnQgb3Zlci4gVGhpcyB3YXkgdGhlCi0gICAgICAgIGJyb3dzZXIg
Y2FuIGRlY2lkZSB0byBoYW5kbGUgdGhlIHN1YnNlcXVlbnQgZm9jdXMgY2hhbmdlcyBhbW9uZyBp
dHMKLSAgICAgICAgd2lkZ2V0cy4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNs
aWVudEVmbC5jcHA6IGNhbGwgZXdrX3ZpZXcncyB2aXJ0dWFsIG1ldGhvZCB0bwotICAgICAgICBn
aXZlIGl0IGEgY2hhbmNlIHRvIGdyYWIgZm9jdXMKLSAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNs
aWVudEVmbDo6Y2FuVGFrZUZvY3VzKToKLSAgICAgICAgKiBld2svZXdrX3ByaXZhdGUuaDoKLSAg
ICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOiBhZGQgdmlydHVhbCBtZXRob2QKLSAgICAgICAgKGV3
a192aWV3X2ZvY3VzX2Nhbl9jeWNsZSk6Ci0gICAgICAgICogZXdrL2V3a192aWV3Lmg6IGFkZCBm
b2N1cyBkaXJlY3Rpb24gZW51bSBhbmQgdmlydHVhbCBtZXRob2QKLQotMjAxMS0wOS0yNCAgQWRh
bSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgotCi0gICAgICAgIEFsd2F5cyBlbmFibGUgRU5B
QkxFKE9GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTY4NzY3Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBT
ZWlkZWwuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwOgot
ICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZsOjpyZWFjaGVkQXBwbGljYXRpb25DYWNo
ZU9yaWdpblF1b3RhKToKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwu
aDoKLSAgICAgICAgKiBld2svZXdrX21haW4uY3BwOgotICAgICAgICAoX2V3a19pbml0X2JvZHkp
OgotICAgICAgICAqIGV3ay9ld2tfc2V0dGluZ3MuY3BwOgotICAgICAgICAoZXdrX3NldHRpbmdz
X2NhY2hlX2RpcmVjdG9yeV9wYXRoX3NldCk6Ci0gICAgICAgIChld2tfc2V0dGluZ3NfY2FjaGVf
ZGlyZWN0b3J5X3BhdGhfZ2V0KToKLQotMjAxMS0wOS0yMSAgTHVjYXMgRGUgTWFyY2hpICA8bHVj
YXMuZGVtYXJjaGlAcHJvZnVzaW9uLm1vYmk+Ci0KLSAgICAgICAgW0VGTF0gUmV2ZXJ0IHBvaW50
ZXIgb3BlcmF0b3IgY29kaW5nIHN0eWxlIGluIGV3awotICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjgyMzEKLQotICAgICAgICBSZXZpZXdlZCBieSBBbnRv
bmlvIEdvbWVzLgotCi0gICAgICAgIFRoZSBXZWJLaXQgY29kaW5nIHN0eWxlIG1hbmRhdGVzIHRo
YXQgIiguLi4pIGluIEMrKyBjb2RlIC0gQm90aCBwb2ludGVyCi0gICAgICAgIHR5cGVzIGFuZCBy
ZWZlcmVuY2UgdHlwZXMgc2hvdWxkIGJlIHdyaXR0ZW4gd2l0aCBubyBzcGFjZSBiZXR3ZWVuIHRo
ZQotICAgICAgICB0eXBlIG5hbWUgYW5kIHRoZSAqIG9yICYuIi4gVW50aWwgbm93IEVGTCBwb3J0
IHdhcyB1c2luZyB0aGUKLSAgICAgICAgY29kaW5nLXN0eWxlIG9mIHRoZSBsaWJyYXJ5IGZvciBw
bGF0Zm9ybSAgY29kZSBpbnN0ZWFkIG9mIFdlYktpdCdzLgotCi0gICAgICAgIFdlIGFyZSBub3cg
dHJ5aW5nIHRvIGJlIG1vcmUgY29tcGxpYW50IHdpdGggV2ViS2l0IGNvZGluZy1zdHlsZSBzbyBp
dCdzCi0gICAgICAgIGVhc2llciBmb3Igb3RoZXIgcmV2aWV3ZXJzIHRvIHJldmlldyBFRkwgY29k
ZS4gVGhlIGZpcnN0IHN0ZXAgaW4gdGhpcwotICAgICAgICBkaXJlY3Rpb24gaXMgdG8gbW92ZSB0
aGUgJyonIGFuZCAnJicgb2YgcG9pbnRlcnMgYW5kIHJlZmVyZW5jZXMgdG8gdGhlCi0gICAgICAg
IHJpZ2h0IHBsYWNlLgotCi0gICAgICAgIFRoaXMgcGF0Y2ggd2FzIGdlbmVyYXRlZCB3aXRoICd1
bmNydXN0aWZ5JyB3aXRoIHRoZSBjb25maWd1cmUgZmlsZQotICAgICAgICBhdHRhY2hlZCB0byB0
aGUgcmVzcGVjdGl2ZSBidXQgcmVwb3J0LiBUaGVyZSB3YXMgb25lIGZpeCB0aGF0IGhhZCB0byBi
ZQotICAgICAgICBtYW51YWxseSBtYWRlIGluIG9yZGVyIHRvIGtlZXAgdGhlICdjaGVjay13ZWJr
aXQtc3R5bGUnIGhhcHB5OiBhCi0gICAgICAgIGZ1bmN0aW9uIGRlZmluaXRpb24gd2l0aCBhIG1l
YW5pbmdsZXNzIG5hbWUuIE90aGVyIGZ1bmN0aW9ucyBsaWtlIHRoaXMKLSAgICAgICAgZXhpc3Qg
YnV0IHRoZXkgd2lsbCBiZSBmaXhlZCBieSBhIGxhdGVyIHBhdGNoLgotCi0gICAgICAgIFNvbWUg
bmljZSBzaWRlLWVmZmVjdHMgb2YgdXNpbmcgdW5jcnVzdGlmeToKLQotICAgICAgICAtIFdoaXRl
c3BhY2UgY2xlYW51cCBvbiBjb21tZW50cwotICAgICAgICAtIEZ1bmN0aW9uIHBhcmFtZXRlcnMg
YXJlIGFsaWduZWQgdG8gdGhlIG9wZW4gcGFyZW50aGVzaXMKLSAgICAgICAgLSBSZW1vdmUgdGFi
IGNoYXJhY3RlcnMKLQotMjAxMS0wOS0yMSAgTHVjYXMgRGUgTWFyY2hpICA8bHVjYXMuZGVtYXJj
aGlAcHJvZnVzaW9uLm1vYmk+Ci0KLSAgICAgICAgW0VGTF0gRG9uJ3QgdHJ5IHRvIGZyZWUgdXNl
ci1wcm92aWRlZCBsaXN0Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD02ODM1NgotCi0gICAgICAgIFJldmlld2VkIGJ5IEFudG9uaW8gR29tZXMuCi0KLSAg
ICAgICAgQSBjb2Rpbmctc3R5bGUgY2xlYW51cCByZXZlYWxlZCB0aGF0IHdlIHdlcmUgdXNpbmcg
RUlOQV9MSVNUX0ZSRUUgaW4gYQotICAgICAgICB3cm9uZyBtYW5uZXIuIElmIHdlIGludGVuZGVk
IHRvIGZyZWUgdGhlIGRhdGEsIHdlIHNob3VsZCBjYWxsIGZyZWUoKQotICAgICAgICAob3Igd2hh
dGV2ZXIgZnVuY3Rpb24gaXMgcmVxdWlyZWQgdG8gZGVzdHJveSBpdCkuIEhvd2V2ZXIgbm90IG9u
bHkgZGlkCi0gICAgICAgIGl0IHVzZSB0aGUgd3JvbmcgRUZMIGFwaSBidXQgaXQgYWxzbyBpbnRy
b2R1Y2VkIGEgY2hhbmdlIGluIGJlaGF2aW9yLAotICAgICAgICBmcmVlaW5nIHVzZXItcHJvdmlk
ZWQgZGF0YS4KLQotICAgICAgICAqIGV3ay9ld2tfZnJhbWUuY3BwOgotICAgICAgICAoZXdrX2Zy
YW1lX2ZlZWRfdG91Y2hfZXZlbnQpOiBkbyBub3QgZnJlZSB1c2VyLXByb3ZpZGVkIGRhdGEuCi0K
LTIwMTEtMDktMjEgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KLQot
ICAgICAgICBbRUZMXSBGaXggYWxwaGFiZXRpY2FsIHNvcnRpbmcgcHJvYmxlbSAKLSAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4NTA1Ci0KLSAgICAgICAg
UmV2aWV3ZWQgYnkgUGhpbGlwcGUgTm9ybWFuZC4KLQotICAgICAgICAqIGV3ay9ld2tfdXRpbC5j
cHA6IEZpeCB3cm9uZyBhbHBoYWJldGljYWwgc29ydGluZyBwcm9ibGVtLgotCi0yMDExLTA5LTIw
ICBSYXBoYWVsIEt1Ym8gZGEgQ29zdGEgIDxrdWJvQHByb2Z1c2lvbi5tb2JpPgotCi0gICAgICAg
IFtFRkxdIENhbGwgRnJhbWVMb2FkZXI6OmRldGFjaEZyb21QYXJlbnQoKSB3aGVuIGRlc3Ryb3lp
bmcgYSBmcmFtZS4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTY2ODU1Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21lcy4KLQotICAgICAg
ICBNb3N0IG90aGVyIHBvcnRzIGNhbGwgdGhpcyBtZXRob2Qgc29tZXdoZXJlIHdoZW4gdGhlIGZy
YW1lIGlzIGJlaW5nCi0gICAgICAgIHJlbW92ZWQsIGFzIGl0IHBlcmZvcm1zIHNvbWUgZGVzdHJ1
Y3Rpb24gY2FsbHMgd2hpY2gsIGluIG91ciBjYXNlLCBhdAotICAgICAgICBsZWFzdCBtYWtlcyBz
dXJlIG9udW5sb2FkIGV2ZW50cyBnZXQgZGVsaXZlcmVkIHByb3Blcmx5IGluCi0gICAgICAgIGZh
c3QvZnJhbWVzL2lmcmFtZS1yZXBhcmVudGluZy1hZG9wdC1ub2RlLmh0bWwuCi0KLSAgICAgICAg
KiBld2svZXdrX2ZyYW1lLmNwcDoKLSAgICAgICAgKF9ld2tfZnJhbWVfc21hcnRfZGVsKTogQ2Fs
bCBGcmFtZUxvYWRlcjo6ZGV0YWNoRnJvbVBhcmVudCgpCi0KLTIwMTEtMDktMTcgIE1paGFpIFBh
cnBhcml0YSAgPG1paGFpcEBjaHJvbWl1bS5vcmc+Ci0KLSAgICAgICAgRnJhbWVMb2FkZXJDbGll
bnQgQmFja0ZvcndhcmRMaXN0LXJlbGF0ZWQgbWV0aG9kcyBhcmUgdW5zdWVkCi0gICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODI5MwotCi0gICAgICAgIFJl
dmlld2VkIGJ5IERhcmluIEFkbGVyLgotCi0gICAgICAgIFJlbW92ZSBGcmFtZUxvYWRlckNsaWVu
dCBtZXRob2RzIHRoYXQgd2VyZSBhZGRlZCBieSByNTE2MjksIHNpbmNlIG9ubHkgICAgICAgIAot
ICAgICAgICB0aGUgb2xkIChzaW5jZS1kZWxldGVkKSBBbmRyb2lkIHBvcnQgbmVlZGVkIHRoZW0u
Ci0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHA6Ci0g
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuaDoKLQotMjAxMS0w
OS0xNSAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgotCi0gICAgICAgIFJlbmFtZSBF
TkFCTEUoREFUQUJBU0UpIHRvIEVOQUJMRShTUUxfREFUQUJBU0UpCi0gICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODIwNQotCi0gICAgICAgIFJldmlld2Vk
IGJ5IEVyaWMgU2VpZGVsLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50
RWZsLmNwcDoKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuaDoKLSAg
ICAgICAgKiBld2svZXdrX3NldHRpbmdzLmNwcDoKLSAgICAgICAgKGV3a19zZXR0aW5nc193ZWJf
ZGF0YWJhc2VfZGVmYXVsdF9xdW90YV9nZXQpOgotICAgICAgICAoZXdrX3NldHRpbmdzX3dlYl9k
YXRhYmFzZV9wYXRoX3NldCk6Ci0gICAgICAgIChld2tfc2V0dGluZ3Nfd2ViX2RhdGFiYXNlX3Bh
dGhfZ2V0KToKLQotMjAxMS0wOS0xNCAgR3J6ZWdvcnogQ3phamtvd3NraSAgPGcuY3phamtvd3Nr
aUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBbRUZMXSBBZGQgTlVMTCBjaGVja3MgdG8gZXdrX3dp
bmRvd19mZWF0dXJlc19uZXdfZnJvbV9jb3JlIGFuZCBld2tfdmlld193aW5kb3dfY3JlYXRlLgot
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQ5MzIKLQot
ICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KLQotICAgICAgICBJdCBwcmV2ZW50cyB0
aGUgY3Jhc2ggd2hpbGUgYWxsb2NhdGluZyBtZW1vcnkgZm9yIHRoZSBuZXcgd2luZG93LgotCi0g
ICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAgKGV3a192aWV3X3dpbmRvd19jcmVh
dGUpOgotICAgICAgICAqIGV3ay9ld2tfd2luZG93X2ZlYXR1cmVzLmNwcDoKLSAgICAgICAgKGV3
a193aW5kb3dfZmVhdHVyZXNfbmV3X2Zyb21fY29yZSk6Ci0KLTIwMTEtMDktMTMgIFJhcGhhZWwg
S3VibyBkYSBDb3N0YSAgPGt1Ym9AcHJvZnVzaW9uLm1vYmk+Ci0KLSAgICAgICAgW0VGTF0gRG8g
bm90IGFsd2F5cyByZXR1cm4gdGhlIGNhY2hlZCBmcmFtZSBuYW1lLgotICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjY4NTYKLQotICAgICAgICBSZXZpZXdl
ZCBieSBBbnRvbmlvIEdvbWVzLgotCi0gICAgICAgIFdoZW4gYSBmcmFtZSBoYXMgaXRzIHBhcmVu
dCBjaGFuZ2VkICh2aWEgYWRvcHROb2RlIGFuZCBhcHBlbmRDaGlsZCwKLSAgICAgICAgZm9yIGV4
YW1wbGUpLCB0aGUgZnJhbWUgbmFtZSB3aWxsIGNoYW5nZSwgc28gd2UgbmVlZCB0byBhY2NvdW50
IGZvcgotICAgICAgICB0aGF0IGNhc2UgYW5kIGNoYW5nZSB0aGUgY2FjaGVkIG5hbWUgd2hlbiBu
ZWVkZWQuCi0KLSAgICAgICAgVGhpcyBzaG91bGQgbWFrZSBmYXN0L2ZyYW1lcy9pZnJhbWUtcmVw
YXJlbnRpbmctdW5pcXVlLW5hbWUuaHRtbCBwYXNzLgotCi0gICAgICAgICogZXdrL2V3a19mcmFt
ZS5jcHA6Ci0gICAgICAgIChld2tfZnJhbWVfbmFtZV9nZXQpOgotCi0yMDExLTA5LTEyICBGbGF2
aW8gQ2VvbGluICA8ZmxhdmlvLmNlb2xpbkBwcm9mdXNpb24ubW9iaT4KLQotICAgICAgICBSZXZp
ZXdlZCBieSBNYXJ0aW4gUm9iaW5zb24uCi0KLSAgICAgICAgW0VGTF0gQWRkIGN1c3RvbSBuZXR3
b3JrIHJlc291cmNlIGhhbmRsZXIKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTQ0NzU5Ci0KLSAgICAgICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9y
IGhhbmRsaW5nIHVzZXItc3BlY2lmaWMgcHJvdG9jb2xzLgotICAgICAgICBJdCBhbGxvd3MgYnJv
d3NlcnMgdG8gaW50ZXJjZXB0IGFuZCBoYW5kbGUgbm9uLXN0YW5kYXJkIHVybCBzY2hlbWVzIChz
dWNoIGFzIHByZWZlcmVuY2VzOi8vKQotICAgICAgICBhbGxvd2luZyB0byBsb2FkIHNvbWUgcmVz
b3VyY2UgZnJvbSBub24taHR0cC9maWxlIHN0b3JhZ2UsIGxpa2UgYSB0YXIvemlwL2VldC4KLQot
ICAgICAgICAqIENNYWtlTGlzdHNFZmwudHh0OgotICAgICAgICAqIGV3ay9ld2tfcHJvdG9jb2xf
aGFuZGxlci5jcHA6IEFkZGVkLgotICAgICAgICAqIGV3ay9ld2tfcHJvdG9jb2xfaGFuZGxlci5o
OiBBZGRlZC4KLSAgICAgICAgKiBld2svZXdrX3Byb3RvY29sX2hhbmRsZXJfc291cC5jcHA6IEFk
ZGVkLgotICAgICAgICAqIGV3ay9ld2tfcHJvdG9jb2xfaGFuZGxlcl9zb3VwLmg6IEFkZGVkLgot
ICAgICAgICAqIGV3ay9ld2tfcHJpdmF0ZS5oOgotICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6
Ci0gICAgICAgIChld2tfdmlld19wcm90b2NvbF9oYW5kbGVyX3NldCk6Ci0gICAgICAgIChld2tf
dmlld19wcm90b2NvbF9oYW5kbGVyX3Vuc2V0KToKLSAgICAgICAgKGV3a192aWV3X3Byb3RvY29s
X2hhbmRsZXJfcmVzb3VyY2VfZ2V0KToKLSAgICAgICAgKiBld2svZXdrX3ZpZXcuaDoKLQotMjAx
MS0wOS0wNCAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3VuZy5jb20+Ci0KLSAgICAgICAg
W0VGTF0gUmVuYW1lIGV3a192aWV3XyhzaW5nbGV8dGlsZWQpLmMgdG8gZXdrX3ZpZXdfKHNpbmds
ZXx0aWxlZCkuY3BwCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02NjU0MgotCi0gICAgICAgIFVzZSBhIEMrKyBjb21waWxlciBmb3IgdGhlc2UgZmlsZXMs
IHNvIHRoYXQgdGhleSBjYW4gaW5jbHVkZSB0aGUgQysrLXVzaW5nCi0gICAgICAgIGV3a19wcml2
YXRlLmguCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgRGFuaWVsIEJhdGVzLgotCi0gICAgICAgICog
Q01ha2VMaXN0c0VmbC50eHQ6Ci0gICAgICAgICogZXdrL2V3a192aWV3X3NpbmdsZS5jcHA6IFJl
bmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdfc2luZ2xlLmMuCi0gICAg
ICAgIChfZXdrX3ZpZXdfc2luZ2xlX29uX2RlbCk6Ci0gICAgICAgIChfZXdrX3ZpZXdfc2luZ2xl
X3NtYXJ0X2FkZCk6Ci0gICAgICAgIChfZXdrX3ZpZXdfc2luZ2xlX3NtYXJ0X2JhY2tpbmdfc3Rv
cmVfYWRkKToKLSAgICAgICAgKF9ld2tfdmlld19zaW5nbGVfc21hcnRfcmVzaXplKToKLSAgICAg
ICAgKF9ld2tfdmlld180Yl9tb3ZlX3JlZ2lvbl91cCk6Ci0gICAgICAgIChfZXdrX3ZpZXdfNGJf
bW92ZV9yZWdpb25fZG93bik6Ci0gICAgICAgIChfZXdrX3ZpZXdfNGJfbW92ZV9saW5lX2xlZnQp
OgotICAgICAgICAoX2V3a192aWV3XzRiX21vdmVfbGluZV9yaWdodCk6Ci0gICAgICAgIChfZXdr
X3ZpZXdfNGJfbW92ZV9yZWdpb25fbGVmdCk6Ci0gICAgICAgIChfZXdrX3ZpZXdfNGJfbW92ZV9y
ZWdpb25fcmlnaHQpOgotICAgICAgICAoX2V3a192aWV3XzRiX21vdmVfcmVnaW9uKToKLSAgICAg
ICAgKF9ld2tfdmlld19zaW5nbGVfc2Nyb2xsX3Byb2Nlc3Nfc2luZ2xlKToKLSAgICAgICAgKF9l
d2tfdmlld19zaW5nbGVfc21hcnRfc2Nyb2xsc19wcm9jZXNzKToKLSAgICAgICAgKF9ld2tfdmll
d19zaW5nbGVfc21hcnRfcmVwYWludHNfcHJvY2Vzcyk6Ci0gICAgICAgIChfZXdrX3ZpZXdfc2lu
Z2xlX3NtYXJ0X3pvb21fd2Vha19zZXQpOgotICAgICAgICAoX2V3a192aWV3X3NpbmdsZV9zbWFy
dF96b29tX3dlYWtfc21vb3RoX3NjYWxlX3NldCk6Ci0gICAgICAgIChfZXdrX3ZpZXdfc2luZ2xl
X3NtYXJ0X2JnX2NvbG9yX3NldCk6Ci0gICAgICAgIChld2tfdmlld19zaW5nbGVfc21hcnRfc2V0
KToKLSAgICAgICAgKF9ld2tfdmlld19zaW5nbGVfc21hcnRfY2xhc3NfbmV3KToKLSAgICAgICAg
KGV3a192aWV3X3NpbmdsZV9hZGQpOgotICAgICAgICAqIGV3ay9ld2tfdmlld190aWxlZC5jcHA6
IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdfdGlsZWQuYy4KLSAg
ICAgICAgKF9ld2tfdmlld190aWxlZF9yZW5kZXJfY2IpOgotICAgICAgICAoX2V3a192aWV3X3Rp
bGVkX3VwZGF0ZXNfcHJvY2Vzc19wcmUpOgotICAgICAgICAoX2V3a192aWV3X3RpbGVkX3NtYXJ0
X2JhY2tpbmdfc3RvcmVfYWRkKToKLSAgICAgICAgKF9ld2tfdmlld190aWxlZF9jb250ZW50c19z
aXplX2NoYW5nZWRfY2IpOgotICAgICAgICAoX2V3a192aWV3X3RpbGVkX3NtYXJ0X2FkZCk6Ci0g
ICAgICAgIChfZXdrX3ZpZXdfdGlsZWRfc21hcnRfc2Nyb2xsc19wcm9jZXNzKToKLSAgICAgICAg
KF9ld2tfdmlld190aWxlZF9zbWFydF9yZXBhaW50c19wcm9jZXNzKToKLSAgICAgICAgKF9ld2tf
dmlld190aWxlZF9zbWFydF9jb250ZW50c19yZXNpemUpOgotICAgICAgICAoX2V3a192aWV3X3Rp
bGVkX3NtYXJ0X3pvb21fc2V0KToKLSAgICAgICAgKF9ld2tfdmlld190aWxlZF9zbWFydF96b29t
X3dlYWtfc2V0KToKLSAgICAgICAgKF9ld2tfdmlld190aWxlZF9zbWFydF96b29tX3dlYWtfc21v
b3RoX3NjYWxlX3NldCk6Ci0gICAgICAgIChfZXdrX3ZpZXdfdGlsZWRfc21hcnRfZmx1c2gpOgot
ICAgICAgICAoX2V3a192aWV3X3RpbGVkX3NtYXJ0X3ByZV9yZW5kZXJfcmVnaW9uKToKLSAgICAg
ICAgKF9ld2tfdmlld190aWxlZF9zbWFydF9wcmVfcmVuZGVyX3JlbGF0aXZlX3JhZGl1cyk6Ci0g
ICAgICAgIChfZXdrX3ZpZXdfdGlsZWRfc21hcnRfcHJlX3JlbmRlcl9jYW5jZWwpOgotICAgICAg
ICAoX2V3a192aWV3X3RpbGVkX3NtYXJ0X2Rpc2FibGVfcmVuZGVyKToKLSAgICAgICAgKF9ld2tf
dmlld190aWxlZF9zbWFydF9lbmFibGVfcmVuZGVyKToKLSAgICAgICAgKGV3a192aWV3X3RpbGVk
X3NtYXJ0X3NldCk6Ci0gICAgICAgIChfZXdrX3ZpZXdfdGlsZWRfc21hcnRfY2xhc3NfbmV3KToK
LSAgICAgICAgKGV3a192aWV3X3RpbGVkX2FkZCk6Ci0gICAgICAgIChld2tfdmlld190aWxlZF91
bnVzZWRfY2FjaGVfZ2V0KToKLSAgICAgICAgKGV3a192aWV3X3RpbGVkX3VudXNlZF9jYWNoZV9z
ZXQpOgotCi0yMDExLTA5LTAyICBMZWFuZHJvIFBlcmVpcmEgIDxsZWFuZHJvQHByb2Z1c2lvbi5t
b2JpPgotCi0gICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4IGFmdGVyIHI2NzExMC4KLQotICAg
ICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChld2tfdmlld19uZWVkX3RvdWNoX2V2
ZW50c19nZXQpOiBNYWtlIHRoZSBmdW5jdGlvbiBzaWduYXR1cmUgbWF0Y2gKLSAgICAgICAgaXRz
IGRlY2xhcmF0aW9uLgotCi0yMDExLTA5LTAxICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1A
c2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW0VGTF0gQWxsb3cgY29udHJvbGxpbmcgbWluaW11bSBE
T01UaW1lciBpbnRlcnZhbCBvbiBhIHBlci1wYWdlIGJhc2lzCi0gICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NzAxMgotCi0gICAgICAgIFJldmlld2VkIGJ5
IEtlbm5ldGggUnVzc2VsbC4KLQotICAgICAgICBTZXQgZGVmYXVsdCBtaW5pbXVtIERPTVRpbWVy
IGludGVydmFsIHRvIDRtcyBpbnN0ZWFkIG9mIDEwbXMuIEJlY2F1c2UsIDRtcyBpcyBrbm93bgot
ICAgICAgICB0byBiZXR0ZXIgbWluaW11bSB2YWx1ZSBmb3IgcGVyZm9ybWFuY2UuIE1hYywgYW5k
cm9pZCwgY2hyb21pdW0gYW5kIHdpbmRvdyBwb3J0cyBhbHJlYWR5Ci0gICAgICAgIHVzZSA0bXMg
aW5zdGVhZCBvZiAxMG1zLgotCi0gICAgICAgIEl0IGlzIGRlc2lyYWJsZSB0byBiZSBhYmxlIHRv
IGNoYW5nZSB0aGUgbWluaW11bSBET01UaW1lciBpbnRlcnZhbCBvbiBwZXItcGFnZSBiYXNpcwot
ICAgICAgICBpbiBvcmRlciB0byBhdm9pZCBjb25zdW1pbmcgZXhjZXNzaXZlIENQVSBhbmQgYmF0
dGVyeSBsaWZlIG9uIG1vYmlsZSBkZXZpY2VzLiBJbiBhZGRpdGlvbiwKLSAgICAgICAgb3RoZXIg
cG9ydHMgaGF2ZSBhbHJlYWR5IHVzZWQgdGhpcyBzZXR0aW5nIGJ5IG1lYW5zIG9mIEJ1ZyA1NDMx
Mi4KLQotICAgICAgICAqIGV3ay9ld2tfbWFpbi5jcHA6Ci0gICAgICAgIChfZXdrX2luaXRfYm9k
eSk6Ci0gICAgICAgICogZXdrL2V3a19zZXR0aW5ncy5jcHA6Ci0gICAgICAgIChld2tfc2V0dGlu
Z3NfZGVmYXVsdF90aW1lcl9pbnRlcnZhbF9nZXQpOgotICAgICAgICAqIGV3ay9ld2tfc2V0dGlu
Z3MuaDoKLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoX2V3a192aWV3X3By
aXZfbmV3KToKLSAgICAgICAgKGV3a192aWV3X3NldHRpbmdfbWluaW11bV90aW1lcl9pbnRlcnZh
bF9zZXQpOgotICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19taW5pbXVtX3RpbWVyX2ludGVydmFs
X2dldCk6Ci0gICAgICAgICogZXdrL2V3a192aWV3Lmg6Ci0KLTIwMTEtMDktMDEgIEt3YW5nSHl1
ayBLaW0gIDxoeXVraS5raW1Ac2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW0VGTF0gUmVtb3ZlIHVu
dXNlZCBjb2RlIHJlbGF0ZWQgd2l0aCBwcml2LT5yZW5kZXIucHJvY2Vzc19lbnRpcmVfcXVldWUg
aW4gZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD02MzM3NwotCi0gICAgICAgIHByaXYtPnJlbmRlci5wcm9jZXNz
X2VudGlyZV9xdWV1ZSBhZmZlY3RzIG5vIGxvZ2ljYWwgZmxvdyBvZiBld2tfdGlsZWRfYmFja2lu
Z19zdG9yZSwKLSAgICAgICAgQnV0LCBld2tfdmlld190aWxlZF9wcm9jZXNzX2VudGlyZV9xdWV1
ZV9zZXQgaXMgbm93IHByb3ZpZGVkIGFzIHNldHRlciBhcGkgZm9yIGl0LgotICAgICAgICBTbyBy
ZW1vdmFsIG9mIHRoaXMgYXBpIGFuZCBzb21lIGNvZGVzIHJlbGF0ZWQgd2l0aCBpdCBpcyByZXF1
aXJlZC4KLQotICAgICAgICBSZXZpZXdlZCBieSBBbnRvbmlvIEdvbWVzLgotCi0gICAgICAgICog
ZXdrL2V3a190aWxlZF9iYWNraW5nX3N0b3JlLmM6Ci0gICAgICAgIChfZXdrX3RpbGVkX2JhY2tp
bmdfc3RvcmVfc21hcnRfYWRkKToKLSAgICAgICAgKGV3a190aWxlZF9iYWNraW5nX3N0b3JlX2Vu
YWJsZV9yZW5kZXIpOgotICAgICAgICAqIGV3ay9ld2tfdGlsZWRfYmFja2luZ19zdG9yZS5oOgot
ICAgICAgICAqIGV3ay9ld2tfdmlldy5oOgotICAgICAgICAqIGV3ay9ld2tfdmlld190aWxlZC5j
OgotICAgICAgICAoZXdrX3ZpZXdfdGlsZWRfdW51c2VkX2NhY2hlX3NldCk6Ci0KLTIwMTEtMDgt
MzEgIEdyemVnb3J6IEN6YWprb3dza2kgIDxnLmN6YWprb3dza2lAc2Ftc3VuZy5jb20+Ci0KLSAg
ICAgICAgW0VGTF0gRm9udHMgQVBJIHJlZmFjdG9yaW5nLgotICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjY2NTQKLQotICAgICAgICBSZXZpZXdlZCBieSBI
YWppbWUgTW9yaXRhLgotCi0gICAgICAgIFRoZXJlIGFyZSB0b28gbWFueSBzaW1pbGFyIEFQSSBy
ZWdhcmRpbmcgdG8gZm9udHMuCi0gICAgICAgIEFkZCBvbmUgY29uc2lzdGVudCBBUEkgdG8gc2V0
L2dldCB0aGUgZm9udCBuYW1lIGZvciB0aGUgZm9udCBmYW1pbHkuCi0gICAgICAgIFJlbW92ZSB0
aGUgcHJldmlvdXMgZm9udCBBUEkuCi0KLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAg
ICAgICAoZXdrX3ZpZXdfZm9udF9mYW1pbHlfbmFtZV9nZXQpOgotICAgICAgICAoZXdrX3ZpZXdf
Zm9udF9mYW1pbHlfbmFtZV9zZXQpOgotICAgICAgICAqIGV3ay9ld2tfdmlldy5oOgotCi0yMDEx
LTA4LTMwICBLYXVzdHViaCBBdHJhd2Fsa2FyICA8a2F1c3R1YmhAbW90b3JvbGEuY29tPgotCi0g
ICAgICAgIFRoZSB1bnVzZWQgU2Nyb2xsVmlldyogYXJndW1lbnQgY2FuIGFuZCBzaG91bGQgYmUg
cmVtb3ZlZCBmcm9tCi0gICAgICAgIHNjcm9sbFJlY3RJbnRvVmlldy4KLSAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY3MTE3Ci0KLSAgICAgICAgUmV2aWV3
ZWQgYnkgRGFyaW4gQWRsZXIuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGll
bnRFZmwuaDoKLSAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEVmbDo6c2Nyb2xsUmVjdElu
dG9WaWV3KToKLQotMjAxMS0wOC0zMCAgR3J6ZWdvcnogQ3phamtvd3NraSAgPGcuY3phamtvd3Nr
aUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBbRUZMXSBBZGQgY29uc3QgbW9kaWZpZXIgdG8gcGFz
c2VkIG9iamVjdHMgd2hlcmUgaXQncyByZWNvbW1lbmRlZAotICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjcxMTAKLQotICAgICAgICBSZXZpZXdlZCBieSBL
ZW50IFRhbXVyYS4KLQotICAgICAgICBBZGQgY29uc3QgbW9kaWZpZXIgdG8gcGFzc2VkIEV2YXNf
T2JqZWN0IGlmIHRoZSBmdW5jdGlvbiBkb2Vzbid0IGNoYW5nZSBpdHMKLSAgICAgICAgcHJvcGVy
dHkgKHRoZSBtb3N0IGNhc2VzIHRvIHRoZSBnZXR0ZXIgZnVuY3Rpb25zKS4KLQotICAgICAgICAq
IGV3ay9ld2tfY29udGV4dG1lbnUuY3BwOgotICAgICAgICAoZXdrX2NvbnRleHRfbWVudV9pdGVt
X2xpc3RfZ2V0KToKLSAgICAgICAgKGV3a19jb250ZXh0X21lbnVfaXRlbV90eXBlX2dldCk6Ci0g
ICAgICAgIChld2tfY29udGV4dF9tZW51X2l0ZW1fYWN0aW9uX2dldCk6Ci0gICAgICAgIChld2tf
Y29udGV4dF9tZW51X2l0ZW1fdGl0bGVfZ2V0KToKLSAgICAgICAgKGV3a19jb250ZXh0X21lbnVf
aXRlbV9jaGVja2VkX2dldCk6Ci0gICAgICAgIChld2tfY29udGV4dF9tZW51X2l0ZW1fZW5hYmxl
ZF9nZXQpOgotICAgICAgICAoZXdrX2NvbnRleHRfbWVudV9jdXN0b21fZ2V0KToKLSAgICAgICAg
KGV3a19jb250ZXh0X21lbnVfc2hvdyk6Ci0gICAgICAgICogZXdrL2V3a19jb250ZXh0bWVudS5o
OgotICAgICAgICAqIGV3ay9ld2tfZnJhbWUuY3BwOgotICAgICAgICAoZXdrX2ZyYW1lX3RleHRf
bWF0Y2hlc19udGhfcG9zX2dldCk6Ci0gICAgICAgIChld2tfZnJhbWVfdGV4dF9zZWxlY3Rpb25f
dHlwZV9nZXQpOgotICAgICAgICAoZXdrX2ZyYW1lX3NvdXJjZV9nZXQpOgotICAgICAgICAoZXdr
X2ZyYW1lX3Jlc291cmNlc19sb2NhdGlvbl9nZXQpOgotICAgICAgICAqIGV3ay9ld2tfZnJhbWUu
aDoKLSAgICAgICAgKiBld2svZXdrX3ByaXZhdGUuaDoKLSAgICAgICAgKiBld2svZXdrX3ZpZXcu
Y3BwOgotICAgICAgICAoX2V3a192aWV3X3ZpZXdwb3J0X2F0dHJpYnV0ZXNfY29tcHV0ZSk6Ci0g
ICAgICAgIChld2tfdmlld19maXhlZF9sYXlvdXRfc2l6ZV9nZXQpOgotICAgICAgICAoZXdrX3Zp
ZXdfdGhlbWVfZ2V0KToKLSAgICAgICAgKGV3a192aWV3X2ltaF9nZXQpOgotICAgICAgICAoZXdr
X3ZpZXdfc2V0dGluZ19lbmNvZGluZ19kZXRlY3Rvcl9nZXQpOgotICAgICAgICAoZXdrX3ZpZXdf
c2V0dGluZ19lbmFibGVfZGV2ZWxvcGVyX2V4dHJhc19nZXQpOgotICAgICAgICAoZXdrX3ZpZXdf
c2V0dGluZ19zcGF0aWFsX25hdmlnYXRpb25fZ2V0KToKLSAgICAgICAgKGV3a192aWV3X3NldHRp
bmdfbG9jYWxfc3RvcmFnZV9nZXQpOgotICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19wYWdlX2Nh
Y2hlX2dldCk6Ci0gICAgICAgIChld2tfdmlld192aWV3cG9ydF9hdHRyaWJ1dGVzX2dldCk6Ci0g
ICAgICAgIChld2tfdmlld196b29tX3JhbmdlX21pbl9nZXQpOgotICAgICAgICAoZXdrX3ZpZXdf
em9vbV9yYW5nZV9tYXhfZ2V0KToKLSAgICAgICAgKGV3a192aWV3X3VzZXJfc2NhbGFibGVfZ2V0
KToKLSAgICAgICAgKGV3a192aWV3X2RldmljZV9waXhlbF9yYXRpb19nZXQpOgotICAgICAgICAo
ZXdrX3ZpZXdfcGFnZV9yZWN0X2dldCk6Ci0gICAgICAgIChld2tfdmlld19tb2RlX2dldCk6Ci0g
ICAgICAgICogZXdrL2V3a192aWV3Lmg6Ci0gICAgICAgICogZXdrL2V3a193aW5kb3dfZmVhdHVy
ZXMuY3BwOgotICAgICAgICAoZXdrX3dpbmRvd19mZWF0dXJlc19ib29sX3Byb3BlcnR5X2dldCk6
Ci0gICAgICAgIChld2tfd2luZG93X2ZlYXR1cmVzX2ludF9wcm9wZXJ0eV9nZXQpOgotICAgICAg
ICAqIGV3ay9ld2tfd2luZG93X2ZlYXR1cmVzLmg6Ci0KLTIwMTEtMDgtMjkgIEdyemVnb3J6IEN6
YWprb3dza2kgIDxnLmN6YWprb3dza2lAc2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW0VGTF0gQWRk
IG1pc3NpbmcgQVBJIGRvY3VtZW50YXRpb24uCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD02NjkyNwotCi0gICAgICAgIFJldmlld2VkIGJ5IEtlbnQgVGFt
dXJhLgotCi0gICAgICAgIEFkZHMgbWlzc2luZyBkb2N1bWVudGF0aW9uIGZvciBld2tfY29udGV4
dF9tZW51X2l0ZW1fY2hlY2tlZF9nZXQvc2V0LgotICAgICAgICBNb3ZlcyBBUEkgZG9jdW1lbnRh
dGlvbiBmcm9tIGNwcCB0byB0aGUgaGVhZGVycy4KLSAgICAgICAgQWRkcyBicmllZiBhbmQgZmls
ZSBjb21tYW5kcyBmb3IgZXdrX2pzLmguCi0KLSAgICAgICAgKiBld2svZXdrX2NvbnRleHRtZW51
Lmg6Ci0gICAgICAgICogZXdrL2V3a19jb29raWVzLmNwcDoKLSAgICAgICAgKiBld2svZXdrX2Nv
b2tpZXMuaDoKLSAgICAgICAgKiBld2svZXdrX2ZyYW1lLmNwcDoKLSAgICAgICAgKiBld2svZXdr
X2ZyYW1lLmg6Ci0gICAgICAgICogZXdrL2V3a19qcy5oOgotCi0yMDExLTA4LTI5ICBSeXVhbiBD
aG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBSRUdSRVNTSU9OKHI5MzYz
NykgQnVpbGQgYnJlYWsgYmVjYXVzZSBoZWFkZXIgZmlsZSBpcyBtaXNzaW5nLgotICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjcxMTMKLQotICAgICAgICBV
bnJldmlld2VkIGJ1aWxkIGZpeCBhZnRlciByOTM2MzcuCi0KLSAgICAgICAgKiBDTWFrZUxpc3Rz
RWZsLnR4dDogQWRkIGV3a19qcy5oIGluIEVXZWJLaXRfSEVBREVSUy4KLQotMjAxMS0wOC0yNSAg
UmFwaGFlbCBLdWJvIGRhIENvc3RhICA8a3Vib0Bwcm9mdXNpb24ubW9iaT4KLQotICAgICAgICBb
RUZMXSBBZGQgQVBJIHRvIGFsbG93IHNjcmlwdHMgdG8gY2xvc2Ugd2luZG93cyBhdXRvbWF0aWNh
bGx5IHZpYSBKYXZhU2NyaXB0LgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NjY3NzcKLQotICAgICAgICBSZXZpZXdlZCBieSBBbnRvbmlvIEdvbWVzLgot
Ci0gICAgICAgIE1ha2UgaXQgcG9zc2libGUgdG8gYWxsb3cgb3IgcHJldmVudCBzY3JpcHRzIGZy
b20gY2xvc2luZyB3aW5kb3dzCi0gICAgICAgIGF1dG9tYXRpY2FsbHkgKHZpYSB3aW5kb3cuY2xv
c2UsIGZvciBleGFtcGxlKS4KLQotICAgICAgICBCZXNpZGVzIGJlaW5nIHVzZWZ1bCBpbiBnZW5l
cmFsLCB0aGlzIGlzIHJlcXVpcmVkIGJ5IERSVC4KLQotICAgICAgICAqIGV3ay9ld2tfdmlldy5j
cHA6Ci0gICAgICAgIChfZXdrX3ZpZXdfcHJpdl9uZXcpOgotICAgICAgICAoZXdrX3ZpZXdfc2V0
dGluZ19zY3JpcHRzX2Nhbl9jbG9zZV93aW5kb3dzX2dldCk6Ci0gICAgICAgIChld2tfdmlld19z
ZXR0aW5nX3NjcmlwdHNfY2FuX2Nsb3NlX3dpbmRvd3Nfc2V0KToKLSAgICAgICAgKiBld2svZXdr
X3ZpZXcuaDoKLQotMjAxMS0wOC0yNSAgUmFwaGFlbCBLdWJvIGRhIENvc3RhICA8a3Vib0Bwcm9m
dXNpb24ubW9iaT4KLQotICAgICAgICBbRUZMXSBJbXBsZW1lbnQgRnJhbWVMb2FkZXJDbGllbnQ6
OmRpZFRyYW5zZmVyQ2hpbGRGcmFtZVRvTmV3RG9jdW1lbnQKLSAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2NjkwCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkg
QW50b25pbyBHb21lcy4KLQotICAgICAgICBUaGUgaW1wbGVtZW50YXRpb24gaXMgbW9zdGx5IGJh
c2VkIG9uIHRoZSBHVEsrIHBvcnQncywgYXMgd2UganVzdCBuZWVkCi0gICAgICAgIHRvIHRyYW5z
ZmVyIHRoZSBvd25lcnNoaXAgb2YgdGhlIGZyYW1lIHRvIGEgbmV3IHZpZXcgYW5kIGFkanVzdCB0
aGUKLSAgICAgICAgc21hcnQgb2JqZWN0IHBhcnQgYWNjb3JkaW5nbHkuCi0KLSAgICAgICAgVGhp
cyBzaG91bGQgaGVscCBtYWtlIGZhc3QvZnJhbWVzL2lmcmFtZS1yZXBhcmVudGluZy1hZG9wdC1u
b2RlLmh0bWwKLSAgICAgICAgcGFzcy4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50
RWZsOjpkaWRUcmFuc2ZlckNoaWxkRnJhbWVUb05ld0RvY3VtZW50KToKLSAgICAgICAgKiBld2sv
ZXdrX2ZyYW1lLmNwcDoKLSAgICAgICAgKGV3a19mcmFtZV92aWV3X3NldCk6Ci0gICAgICAgIChl
d2tfZnJhbWVfdmlld19jcmVhdGVfZm9yX3ZpZXcpOgotICAgICAgICAqIGV3ay9ld2tfcHJpdmF0
ZS5oOgotCi0yMDExLTA4LTI0ICBKYWVodW4gTGltICA8bGphZWh1bi5saW1Ac2Ftc3VuZy5jb20+
Ci0KLSAgICAgICAgW0VGTF0gQWRkIGR1bW15IEljb25EYXRhYmFzZUNsaWVudEVmbC4KLSAgICAg
ICAgaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjU1OTYKLQotICAgICAg
ICBJbXBsZW1lbnRzIGEgZHVtbXkgSWNvbkRhdGFiYXNlQ2xpZW50RWZsIGNsYXNzLgotICAgICAg
ICBBZGRzIHR3byBmaWxlcywgSWNvbkRhdGFiYXNlQ2xpZW50RWZsLmggfCAuY3BwLgotCi0gICAg
ICAgIFJldmlld2VkIGJ5IEtlbnQgVGFtdXJhLgotCi0gICAgICAgICogQ01ha2VMaXN0c0VmbC50
eHQ6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvSWNvbkRhdGFiYXNlQ2xpZW50RWZsLmNwcDog
QWRkZWQuCi0gICAgICAgIChXZWJDb3JlOjpJY29uRGF0YWJhc2VDbGllbnRFZmw6OnBlcmZvcm1J
bXBvcnQpOgotICAgICAgICAoV2ViQ29yZTo6SWNvbkRhdGFiYXNlQ2xpZW50RWZsOjpkaWRSZW1v
dmVBbGxJY29ucyk6Ci0gICAgICAgIChXZWJDb3JlOjpJY29uRGF0YWJhc2VDbGllbnRFZmw6OmRp
ZEltcG9ydEljb25VUkxGb3JQYWdlVVJMKToKLSAgICAgICAgKFdlYkNvcmU6Okljb25EYXRhYmFz
ZUNsaWVudEVmbDo6ZGlkSW1wb3J0SWNvbkRhdGFGb3JQYWdlVVJMKToKLSAgICAgICAgKFdlYkNv
cmU6Okljb25EYXRhYmFzZUNsaWVudEVmbDo6ZGlkQ2hhbmdlSWNvbkZvclBhZ2VVUkwpOgotICAg
ICAgICAoV2ViQ29yZTo6SWNvbkRhdGFiYXNlQ2xpZW50RWZsOjpkaWRGaW5pc2hVUkxJbXBvcnQp
OgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ljb25EYXRhYmFzZUNsaWVudEVmbC5oOiBBZGRl
ZC4KLQotMjAxMS0wOC0yMyAgS3dhbmdIeXVrIEtpbSAgPGh5dWtpLmtpbUBzYW1zdW5nLmNvbT4K
LQotICAgICAgICBbRUZMXSBDaGFuZ2UgcGFyYW1ldGVyIHR5cGUgZm9yIHNvbWUgQVBJcyBpbiBl
d2tfdGlsZV9tYXRyaXguCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD02NjYzOQotCi0gICAgICAgIEFzIHR5cGUgb2YgYm90aCBjb2wgYW5kIHJvdyBwYXJh
bWV0ZXIgZm9yIGV3a190aWxlX21hdHJpeCdzIHNvbWUgQVBJcyBsaXN0ZWQgYnkgdGhpcyBwYXRj
aAotICAgICAgICBhcmUgZGlmZmVyZW50IGZyb20gZWFjaCBvdGhlciBhbmQgZWluYV9tYXRyaXhz
cGFyc2UgYXNzb2NpYXRlZCB3aXRoIGV3a190aWxlX21hdHJpeCBpcyBub3cKLSAgICAgICAgdXNp
bmcgdW5zaWduZWQgbG9uZyB0eXBlIGZvciBib3RoIGNvbCBhbmQgcm93IHBhcmFtZXRlciwgcm93
IHBhcmFtZXRlciBmb3IgZXdrX3RpbGVfbWF0cml4Ci0gICAgICAgIGlzIGFsc28gYmV0dGVyIHRv
IGJlIHNwZWNpZmllZCBhcyB1bnNpZ25lZCBsb25nIHR5cGUuCi0KLSAgICAgICAgUmV2aWV3ZWQg
YnkgQW5kZXJzIENhcmxzc29uLgotCi0gICAgICAgICogZXdrL2V3a190aWxlZF9tYXRyaXguYzoK
LSAgICAgICAgKGV3a190aWxlX21hdHJpeF90aWxlX2V4YWN0X2dldCk6Ci0gICAgICAgIChld2tf
dGlsZV9tYXRyaXhfdGlsZV9leGFjdF9leGlzdHMpOgotICAgICAgICAoZXdrX3RpbGVfbWF0cml4
X3RpbGVfbmV3KToKLSAgICAgICAgKGV3a190aWxlX21hdHJpeF90aWxlX3VwZGF0ZSk6Ci0gICAg
ICAgIChld2tfdGlsZV9tYXRyaXhfdGlsZV91cGRhdGVfZnVsbCk6Ci0gICAgICAgICogZXdrL2V3
a190aWxlZF9tYXRyaXguaDoKLQotMjAxMS0wOC0yMyAgUmFwaGFlbCBLdWJvIGRhIENvc3RhICA8
a3Vib0Bwcm9mdXNpb24ubW9iaT4KLQotICAgICAgICBbRUZMXSBHZXQgdGhlIGRlZmF1bHQgdmFs
dWUgZm9yIGBzY3JpcHRzX3dpbmRvd19vcGVuJyBmcm9tIHRoZSByaWdodCBtZXRob2QuCi0gICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Njc3NQotCi0gICAg
ICAgIFJldmlld2VkIGJ5IEtlbnQgVGFtdXJhLgotCi0gICAgICAgIEZvciBzb21lIHVua25vd24g
cmVhc29uLCB0aGUgZGVmYXVsdCB2YWx1ZSBmb3IgdGhpcyBzZXR0aW5nIHdhcyBiZWluZwotICAg
ICAgICBvYnRhaW5lZCBmcm9tIFNldHRpbmdzOjphbGxvd1NjcmlwdHNUb0Nsb3NlV2luZG93cygp
IGluc3RlYWQgb2YKLSAgICAgICAgU2V0dGluZ3M6OmphdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1
dG9tYXRpY2FsbHkoKSwgd2hpY2ggbWFrZXMgbm8KLSAgICAgICAgc2Vuc2UgYXQgYWxsLgotCi0g
ICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAgKF9ld2tfdmlld19wcml2X25ldyk6
Ci0KLTIwMTEtMDgtMjMgIEt3YW5nSHl1ayBLaW0gIDxoeXVraS5raW1Ac2Ftc3VuZy5jb20+Ci0K
LSAgICAgICAgW0VGTF0gQ2hhbmdlIHRoZSB0aWxlZCBiYWNraW5nIHN0b3JlIHRvIHVzZSBjb25z
dGFudCBzaXplIG9mIHRpbGUuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD02NTg0OAotCi0gICAgICAgIEFzIGN1cnJlbnQgdGlsZWQgYmFja2luZyBzdG9y
ZSBpbiBXZWJraXQgRUZMIGlzIHVzaW5nIHZhcmlhYmxlIHRpbGUgc2l6ZSBhY2NvcmRpbmcgdG8g
dGhlIHpvb20gbGV2ZWwsCi0gICAgICAgIHRoZSBudW1iZXIgb2YgdGlsZXMgaW4gdmlld3BvcnQg
aXMgbm90IHNhbWUgYWx3YXlzIGFuZCB0aGUgc3BlZWQgb2YgcGFubmluZyBpcyBhbHNvIG5vdCBj
b25zaXN0ZW50Ci0gICAgICAgIHdoZW5ldmVyIHpvb20gbGV2ZWwgaXMgY2hhbmdlZC4KLSAgICAg
ICAgVGhlcmVmb3JlLCB0aWxlIHNpemUgc2hvdWxkIGJlIGNvbnN0YW50IHNpemUgaW4gb3JkZXIg
dG8gbWFrZSBzdXJlIHRoZSBjb25zaXN0ZW50IHBhbm5pbmcgc3BlZWQuCi0KLSAgICAgICAgUmV2
aWV3ZWQgYnkgQW5kZXJzIENhcmxzc29uLgotCi0gICAgICAgICogZXdrL2V3a190aWxlZF9iYWNr
aW5nX3N0b3JlLmM6Ci0gICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfbW9kZWxfbWF0
cml4X2NyZWF0ZSk6Ci0gICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfc21hcnRfYWRk
KToKLSAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9zbWFydF9jYWxjdWxhdGUpOgot
ICAgICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3pvb21fc2V0X2ludGVybmFsKToKLSAg
ICAgICAgKGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3pvb21fd2Vha19zZXQpOgotICAgICAgICAo
ZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfZmx1c2gpOgotICAgICAgICAoZXdrX3RpbGVkX2JhY2tp
bmdfc3RvcmVfcHJlX3JlbmRlcl9yZWdpb24pOgotICAgICAgICAoZXdrX3RpbGVkX2JhY2tpbmdf
c3RvcmVfcHJlX3JlbmRlcl9yZWxhdGl2ZV9yYWRpdXMpOgotICAgICAgICAqIGV3ay9ld2tfdGls
ZWRfYmFja2luZ19zdG9yZS5oOgotICAgICAgICAqIGV3ay9ld2tfdGlsZWRfbWF0cml4LmM6Ci0g
ICAgICAgIChfZXdrX3RpbGVfbWF0cml4X2NlbGxfZnJlZSk6Ci0gICAgICAgIChfZXdrX3RpbGVf
bWF0cml4X3RpbGVfZnJlZSk6Ci0gICAgICAgIChld2tfdGlsZV9tYXRyaXhfbmV3KToKLSAgICAg
ICAgKGV3a190aWxlX21hdHJpeF90aWxlX2V4YWN0X2dldCk6Ci0gICAgICAgIChld2tfdGlsZV9t
YXRyaXhfdGlsZV9leGFjdF9leGlzdHMpOgotICAgICAgICAoZXdrX3RpbGVfbWF0cml4X3RpbGVf
bmV3KToKLSAgICAgICAgKGV3a190aWxlX21hdHJpeF90aWxlX3VwZGF0ZSk6Ci0gICAgICAgIChl
d2tfdGlsZV9tYXRyaXhfdGlsZV91cGRhdGVfZnVsbCk6Ci0gICAgICAgIChfZXdrX3RpbGVfbWF0
cml4X3NsaWNlcl9zZXR1cCk6Ci0gICAgICAgIChld2tfdGlsZV9tYXRyaXhfdXBkYXRlKToKLSAg
ICAgICAgKGV3a190aWxlX21hdHJpeF9kYmcpOgotICAgICAgICAqIGV3ay9ld2tfdGlsZWRfbWF0
cml4Lmg6Ci0gICAgICAgICogZXdrL2V3a190aWxlZF9tb2RlbC5jOgotICAgICAgICAoZXdrX3Rp
bGVfbmV3KToKLQotMjAxMS0wOC0yMyAgSm9uYXMgTS4gR2FzdGFsIDxqZ2FzdGFsQHByb2Z1c2lv
bi5tb2JpPgotCi0gICAgICAgIFtFRkxdIEV4cG9ydGluZyBKYXZhU2NyaXB0IG9iamVjdHMgZm9y
IEVGTCBwb3J0Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD00MzQ0NgotCi0gICAgICAgIFJldmlld2VkIGJ5IEFudG9uaW8gR29tZXMuCi0KLSAgICAgICAg
VGhpcyBwYXRjaCBhbGxvd3MgdG8gZXhwb3J0IG9iamVjdHMgdG8gSmF2YVNjcmlwdCBBUEksCi0g
ICAgICAgIGp1c3QgbGlrZSBxdCBkb2VzLCBidXQgaXQgdXNlcyB0aGUgbmV0c2NhcGUgYXBpCi0g
ICAgICAgIHRvIGRvIHRoZSBjb252ZXJ0aW9uIHRvIGphdmFzY3JpcHQgb2JqZWN0LgotCi0gICAg
ICAgICogQ01ha2VMaXN0cy50eHQ6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6
OmRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKToKLSAgICAgICAgKiBld2svRVdl
YktpdC5oOgotICAgICAgICAqIGV3ay9ld2tfanMuY3BwOiBBZGRlZC4KLSAgICAgICAgKGV3a19q
c192YXJpYW50X3RvX25wdmFyaWFudCk6Ci0gICAgICAgIChld2tfanNfbnB2YXJpYW50X3RvX3Zh
cmlhbnQpOgotICAgICAgICAoZXdrX2pzX3Byb3BlcnR5X2hhcyk6Ci0gICAgICAgIChld2tfanNf
cHJvcGVydHlfZ2V0KToKLSAgICAgICAgKGV3a19qc19wcm9wZXJ0eV9zZXQpOgotICAgICAgICAo
ZXdrX2pzX3Byb3BlcnR5X3JlbW92ZSk6Ci0gICAgICAgIChld2tfanNfcHJvcGVydGllc19lbnVt
ZXJhdGUpOgotICAgICAgICAoZXdrX2pzX21ldGhvZF9oYXMpOgotICAgICAgICAoZXdrX2pzX21l
dGhvZF9pbnZva2UpOgotICAgICAgICAoZXdrX2pzX2NsYXNzX25ldyk6Ci0gICAgICAgIChld2tf
anNfY2xhc3NfZnJlZSk6Ci0gICAgICAgIChld2tfanNfb2JqZWN0X25ldyk6Ci0gICAgICAgIChl
d2tfanNfb2JqZWN0X2ZyZWUpOgotICAgICAgICAoZXdrX2pzX29iamVjdF9wcm9wZXJ0aWVzX2dl
dCk6Ci0gICAgICAgIChld2tfanNfb2JqZWN0X25hbWVfZ2V0KToKLSAgICAgICAgKGV3a19qc192
YXJpYW50X2ZyZWUpOgotICAgICAgICAqIGV3ay9ld2tfanMuaDogQWRkZWQuCi0gICAgICAgICog
ZXdrL2V3a19tYWluLmNwcDoKLSAgICAgICAgKGV3a19pbml0KToKLSAgICAgICAgKiBld2svZXdr
X3ByaXZhdGUuaDoKLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoZXdrX3Zp
ZXdfanNfd2luZG93X29iamVjdF9jbGVhcik6Ci0gICAgICAgIChld2tfdmlld19qc19vYmplY3Rf
YWRkKToKLSAgICAgICAgKiBld2svZXdrX3ZpZXcuaDoKLQotMjAxMS0wOC0yMyAgUmFwaGFlbCBL
dWJvIGRhIENvc3RhICA8a3Vib0Bwcm9mdXNpb24ubW9iaT4KLQotICAgICAgICBbRUZMXSBEbyBu
b3QgdHJlYXQgdmFsaWQgY2FzZXMgaW4gZXdrX2ZyYW1lX2NoaWxkX2FkZCgpIGFzIGZhaWx1cmVz
LgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjY2OTIK
LQotICAgICAgICBSdWJiZXItc3RhbXBlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4K
LQotICAgICAgICBGcmFtZTo6cGFnZSgpIGFuZCBGcmFtZVRyZWU6OnBhcmVudCgpIHJldHVybmlu
ZyAwIHdlcmUgYmVpbmcgY29uc2lkZXJlZAotICAgICAgICBmYWlsdXJlIGNhc2VzLCBob3dldmVy
IGl0IGlzIHBvc3NpYmxlIGZvciB0aGVtIHRvIHJldHVybiAwIHdoZW4gc29tZQotICAgICAgICBh
cmJpdHJhcnkgSmF2YVNjcmlwdCBpcyBydW4uCi0KLSAgICAgICAgVGhlIGZ1bmN0aW9uJ3MgcmV0
dXJuIHR5cGUgaGFzIGJlZW4gY2hhbmdlZCB0byBtYWtlIGl0IGVhc2llciB0byBjb252ZXkKLSAg
ICAgICAgdGhlc2UgY2FzZXMgdG8gdGhlIGNhbGxlciAod2hpY2ggaXMgb25seSBld2tfdmlld19m
cmFtZV9jcmVhdGUpLgotCi0gICAgICAgIFRoaXMgc2hvdWxkIG1ha2UgdGVzdHMgbGlrZQotICAg
ICAgICBmYXN0L2RvbS9udWxsLXBhZ2Utc2hvdy1tb2RhbC1kaWFsb2ctY3Jhc2guaHRtbCBzdG9w
IG91dHB1dHRpbmcKLSAgICAgICAgZXJyb25lb3VzIG1lc3NhZ2VzIHRvIHN0ZGVyci4KLQotICAg
ICAgICAqIGV3ay9ld2tfZnJhbWUuY3BwOgotICAgICAgICAoZXdrX2ZyYW1lX2NoaWxkX2FkZCk6
Ci0gICAgICAgICogZXdrL2V3a19wcml2YXRlLmg6Ci0KLTIwMTEtMDgtMjMgIExlYW5kcm8gUGVy
ZWlyYSAgPGxlYW5kcm9AcHJvZnVzaW9uLm1vYmk+Ci0KLSAgICAgICAgVW5yZXZpZXdlZCBidWls
ZCBmaXggYWZ0ZXIgcjY2Njg1LgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6
OmRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKToKLSAgICAgICAgQXNzZXJ0IHVz
aW5nIHRoZSByaWdodCB2YXJpYWJsZSBuYW1lLgotCi0yMDExLTA4LTIzICBSYXBoYWVsIEt1Ym8g
ZGEgQ29zdGEgIDxrdWJvQHByb2Z1c2lvbi5tb2JpPgotCi0gICAgICAgIFtFRkxdIFRyZWF0IHRo
ZSBjYXNlIG9mIFdlYkNvcmU6Okhpc3RvcnktPmN1cnJlbnRJdGVtKCkgcmV0dXJuaW5nIE5VTEwu
Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NjY5OAot
Ci0gICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgotCi0gICAg
ICAgIFdlYkNvcmU6Okhpc3RvcnktPmN1cnJlbnRJdGVtKCkgbWF5IHJldHVybiBOVUxMLCBhbmQg
d2UnZCBiZXR0ZXIgdHJlYXQKLSAgICAgICAgaXQgaW4gZXdrX2hpc3RvcnlfaGlzdG9yeV9pdGVt
X2N1cnJlbnRfZ2V0IGl0c2VsZiB0aGFuIHByb3BhZ2F0ZSB0aGUKLSAgICAgICAgaXNzdWUgdG8g
X2V3a19oaXN0b3J5X2l0ZW1fbmV3LgotCi0gICAgICAgICogZXdrL2V3a19oaXN0b3J5LmNwcDoK
LSAgICAgICAgKGV3a19oaXN0b3J5X2hpc3RvcnlfaXRlbV9jdXJyZW50X2dldCk6Ci0gICAgICAg
ICogZXdrL2V3a19oaXN0b3J5Lmg6Ci0KLTIwMTEtMDgtMjMgIFJhcGhhZWwgS3VibyBkYSBDb3N0
YSAgPGt1Ym9AcHJvZnVzaW9uLm1vYmk+Ci0KLSAgICAgICAgW0VGTF0gQWRkIGF1eGlsaWFyeSBo
aXN0b3J5IGZ1bmN0aW9ucyBmb3IgRFJUCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02NjcwMAotCi0gICAgICAgIFJldmlld2VkIGJ5IEtlbnQgVGFtdXJh
LgotCi0gICAgICAgIEVGTCdzIER1bXBSZW5kZXJUcmVlIGltcGxlbWVudGF0aW9uIG5lZWRzIHNv
bWUgcHJpdmF0ZSwgYXV4aWxpYXJ5Ci0gICAgICAgIGZ1bmN0aW9ucyBpbiBld2sgaW4gb3JkZXIg
dG8gaXRlcmF0ZSBhbmQgZHVtcCB0aGUgaGlzdG9yeSB0cmVlIHdoZW4KLSAgICAgICAgbmVjZXNz
YXJ5LgotCi0gICAgICAgICogZXdrL2V3a19oaXN0b3J5LmNwcDoKLSAgICAgICAgKGV3a19oaXN0
b3J5X2l0ZW1fdGFyZ2V0X2dldCk6Ci0gICAgICAgIChld2tfaGlzdG9yeV9pdGVtX3RhcmdldF9p
cyk6Ci0gICAgICAgIChld2tfaGlzdG9yeV9pdGVtX2NoaWxkcmVuX2dldCk6Ci0gICAgICAgICog
ZXdrL2V3a19wcml2YXRlLmg6Ci0KLTIwMTEtMDgtMjMgIFJhcGhhZWwgS3VibyBkYSBDb3N0YSAg
PGt1Ym9AcHJvZnVzaW9uLm1vYmk+Ci0KLSAgICAgICAgW0VGTF0gQWRkIGF1eGlsaWFyeSBld2tf
dXRpbCBmdW5jdGlvbnMgZm9yIERSVC4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTY2NzAyCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hk
ZSBDaHJpc3RpYW5zZW4uCi0KLSAgICAgICAgQWRkIHNvbWUgYXV4aWxpYXJ5IGZ1bmN0aW9ucyBu
ZWVkZWQgYnkgRUZMJ3MgRFJUIGltcGxlbWVudGF0aW9uLiBUaGV5Ci0gICAgICAgIGFsbCByZXZv
bHZlIGFyb3VuZCB0YWxraW5nIHRvIHRoZSBnYXJiYWdlIGNvbGxlY3RvciBhbmQgY291bnRpbmcg
dGhlCi0gICAgICAgIHdvcmtlciB0aHJlYWRzLgotCi0gICAgICAgICogZXdrL2V3a19wcml2YXRl
Lmg6Ci0gICAgICAgICogZXdrL2V3a191dGlsLmNwcDoKLSAgICAgICAgKGV3a191dGlsX2phdmFz
Y3JpcHRfZ2NfY29sbGVjdCk6Ci0gICAgICAgIChld2tfdXRpbF9qYXZhc2NyaXB0X2djX2FsdGVy
bmF0ZV90aHJlYWRfY29sbGVjdCk6Ci0gICAgICAgIChld2tfdXRpbF9qYXZhc2NyaXB0X2djX29i
amVjdF9jb3VudF9nZXQpOgotICAgICAgICAoZXdrX3V0aWxfd29ya2VyX3RocmVhZF9jb3VudCk6
Ci0gICAgICAgIChld2tfdXRpbF9kcGlfZ2V0KToKLQotMjAxMS0wOC0yMiAgUmFwaGFlbCBLdWJv
IGRhIENvc3RhICA8a3Vib0Bwcm9mdXNpb24ubW9iaT4KLQotICAgICAgICBbRUZMXSBJbXBsZW1l
bnQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxk
Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NjY4NQot
Ci0gICAgICAgIFJldmlld2VkIGJ5IEtlbnQgVGFtdXJhLgotCi0gICAgICAgIEltcGxlbWVudCBk
aXNwYXRjaERpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZCwgYXMgaXQgaXMgbmVlZGVkIGJ5Ci0g
ICAgICAgIER1bXBSZW5kZXJUcmVlIHRvLCBhbW9uZyBvdGhlciB0aGluZ3MsIHByb3Blcmx5IGlu
c3RhbGwgdGhlIGV2ZW50Ci0gICAgICAgIHNlbmRlciBpbiB0aGUgd2luZG93IG9iamVjdC4KLQot
ICAgICAgICBUaGlzIGltcGxlbWVudGF0aW9uIHdvcmtzIGJ5IGVtaXR0aW5nIGEgIndpbmRvdyxv
YmplY3QsY2xlYXJlZCIgc2lnbmFsCi0gICAgICAgIHdpdGggYSBwcml2YXRlIHN0cnVjdCBjb250
YWluaW5nIHRoZSByZXF1aXJlZCBpbmZvcm1hdGlvbiAoY29udGV4dCwKLSAgICAgICAgd2luZG93
IG9iamVjdCBhbmQgZnJhbWUpLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6
OmRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKToKLSAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5oOgotICAgICAgICAqIGV3ay9ld2tfcHJpdmF0
ZS5oOgotCi0yMDExLTA4LTIwICBHcnplZ29yeiBDemFqa293c2tpICA8Zy5jemFqa293c2tpQHNh
bXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxdIEZpeCBhbmQgdXBkYXRlIGRveHlnZW4gZG9jdW1l
bnRhdGlvbiBmb3IgZXdrX3ZpZXcuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD02NjI5MwotCi0gICAgICAgIFJldmlld2VkIGJ5IEtlbnQgVGFtdXJhLgot
Ci0gICAgICAgICogZXdrL2V3a192aWV3Lmg6Ci0KLSAgICAgICAgRml4ZXMgZGVzY3JpcHRpb24g
b2YgbWV0aG9kLCBwYXJhbWV0ZXJzIGFuZCByZXR1cm5lZCB2YWx1ZSBvZiBBUEkKLSAgICAgICAg
cmVsYXRlZCB0byBzZXR0aW5ncy4KLQotMjAxMS0wOC0yMCAgR3J6ZWdvcnogQ3phamtvd3NraSAg
PGcuY3phamtvd3NraUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBbRUZMXSBGaXggYW5kIHVwZGF0
ZSBkb3h5Z2VuIGRvY3VtZW50YXRpb24gZm9yIGV3a192aWV3LgotICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjYyOTMKLQotICAgICAgICBSZXZpZXdlZCBi
eSBLZW50IFRhbXVyYS4KLQotICAgICAgICBGaXhlcyBkZXNjcmlwdGlvbiBvZiBtZXRob2RzLCBw
YXJhbWV0ZXJzIGFuZCByZXR1cm5lZCB2YWx1ZSBvZiBBUEkKLSAgICAgICAgcmVsYXRlZCB0byBj
YWNoZSBvZiB1bnVzZWQgdGlsZXMsIHRleHQgc2VhcmNoaW5nIGFuZCB6b29tIG1hdHRlci4KLQot
ICAgICAgICAqIGV3ay9ld2tfdmlldy5oOgotCi0yMDExLTA4LTIwICBHcnplZ29yeiBDemFqa293
c2tpICA8Zy5jemFqa293c2tpQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxdIEZpeCBhbmQg
dXBkYXRlIGRveHlnZW4gZG9jdW1lbnRhdGlvbiBmb3IgZXdrX3ZpZXcuCi0gICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NjI5MwotCi0gICAgICAgIFJldmll
d2VkIGJ5IEtlbnQgVGFtdXJhLgotCi0gICAgICAgIEFkZHMgZG94eWdlbiBkb2N1bWVudGF0aW9u
IGZvciB0eXBlZGVmcywgZGVmaW5lcyBhbmQgc3RydWN0dXJlcyBpbiBld2tfdmlldy5oLgotICAg
ICAgICBNb3ZlcyBpbmNsdWRlcyBhbmQgZGVmaW5lcyBiZWxvdyBhIGJyaWVmIG9mIGZpbGUuCi0K
LSAgICAgICAgKiBld2svZXdrX3ZpZXcuaDoKLQotMjAxMS0wOC0xOSAgS3dhbmdIeXVrIEtpbSAg
PGh5dWtpLmtpbUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBbRUZMXSBBZGQgInJldHVybiIgc3Rh
dGVtZW50IGNvcnJlc3BvbmRpbmcgdG8gYWJub3JtYWwgY29uZGl0aW9uIG9uIF9ld2tfZnJhbWVf
c21hcnRfYWRkLgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NjU0MDgKLQotICAgICAgICBCYWlsIG91dCB3aGVuIHdlIGZhaWwgdG8gYWxsb2NhdGUgYW4g
RXdrX0ZyYW1lX1NtYXJ0X0RhdGEgb2JqZWN0IHJhdGhlciB0aGFuIGNvbnRpbnVpbmcgb24gYXMg
aWYgdGhlIGFsbG9jYXRpb24gaGFkIHN1Y2NlZWRlZC4KLQotICAgICAgICBSZXZpZXdlZCBieSBB
ZGFtIFJvYmVuLgotCi0gICAgICAgICogZXdrL2V3a19mcmFtZS5jcHA6Ci0gICAgICAgIChfZXdr
X2ZyYW1lX3NtYXJ0X2FkZCk6Ci0KLTIwMTEtMDgtMTkgIEt3YW5nSHl1ayBLaW0gIDxoeXVraS5r
aW1Ac2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW0VGTF0gQ2hhbmdlIGNvbmRpdGlvbiBjaGVja2lu
ZyBsb2dpYyByZWxhdGVkIHdpdGggYm90aCBjaGFuZ2Ugb2YgcG9zaXRpb24gYW5kIG9mZnNldCBm
b3IgYmFja2luZyBzdG9yZS4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTY2MDI4Ci0KLSAgICAgICAgQXMgYmFja2luZyBzdG9yZSdzIHBvc2l0aW9uIGFu
ZCBvZmZzZXQgY2hhbmdlIGNhbiBvY2N1ciBhdCB0aGUgc2FtZSB0aW1lLAotICAgICAgICB0aGUg
Y2hlY2tpbmcgb2Ygb2Zmc2V0IGNoYW5nZSBzaG91bGRuJ3QgYmUgImVsc2UgaWYiIHN0YXRlbWVu
dC4KLQotICAgICAgICBSZXZpZXdlZCBieSBBZGFtIFJvYmVuLgotCi0gICAgICAgICogZXdrL2V3
a190aWxlZF9iYWNraW5nX3N0b3JlLmM6Ci0gICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3Rv
cmVfc21hcnRfY2FsY3VsYXRlKToKLQotMjAxMS0wOC0xOSAgR3J6ZWdvcnogQ3phamtvd3NraSAg
PGcuY3phamtvd3NraUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBbRUZMXSBGaXggYW5kIHVwZGF0
ZSBkb3h5Z2VuIGRvY3VtZW50YXRpb24gZm9yIGV3a192aWV3LgotICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjYyOTMKLQotICAgICAgICBSZXZpZXdlZCBi
eSBLZW50IFRhbXVyYS4KLQotICAgICAgICBBZGRzIGRveHlnZW4gZG9jdW1lbnRhdGlvbiB0byB0
aGUgc3RydWN0dXJlcyBpbiBld2tfdmlldy5jcHAuCi0KLSAgICAgICAgKiBld2svZXdrX3ZpZXcu
Y3BwOgotCi0yMDExLTA4LTE5ICBLd2FuZ0h5dWsgS2ltICA8aHl1a2kua2ltQHNhbXN1bmcuY29t
PgotCi0gICAgICAgIFtFRkxdIE1vZGlmeSB0eXBlIG9mIGJvdGggY29sIGFuZCByb3cgcGFyYW1l
dGVycyBmb3IgYmFja2luZyBzdG9yZSdzIGludGVybmFsIGFwaS4KLSAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1MzAyCi0KLSAgICAgICAgQXMgYm90aCBj
b2wgYW5kIHJvdyBwYXJhbWV0ZXIncyB0eXBlIGZvciBib3RoIF9ld2tfdGlsZWRfYmFja2luZ19z
dG9yZV9pdGVtX2ZpbGwKLSAgICAgICAgYW5kIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX2l0ZW1f
YWRkIGFyZSBkaWZmZXJlbnQgZnJvbSBlYWNoIG90aGVyLCBJIG1vZGlmeSB0eXBlIG9mIHRoZW0u
Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBSb2Jlbi4KLQotICAgICAgICAqIGV3ay9ld2tf
dGlsZWRfYmFja2luZ19zdG9yZS5jOgotICAgICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3Jl
X2l0ZW1fZmlsbCk6Ci0gICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfaXRlbV9hZGQp
OgotCi0yMDExLTA4LTE4ICBSeXVhbiBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KLQot
ICAgICAgICBbRUZMXSBCcm9rZW4gcmVuZGVyaW5nIG9jY3VyZWQgd2hlbiByZXNpemVkIGluIGV3
a192aWV3X3NpbmdsZS4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTY2MjcxCi0KLSAgICAgICAgRm9yY2UgcmVuZGVyaW5nIHdoZW4gZXdrX3ZpZXcgcmVz
aXplZC4KLSAgICAgICAgSXQncyBiZWNhdXNlIEV2YXNfT2JqZWN0IGRvZXNuJ3QgZ2VuZXJhdGUg
YW55IHJlbmRlcmluZyByZXF1ZXN0IGFsdGhvdWdoCi0gICAgICAgIGl0IHdhcyBjaGFuZ2VkLgot
Ci0gICAgICAgIFJldmlld2VkIGJ5IFRvbnkgQ2hhbmcuCi0KLSAgICAgICAgKiBld2svZXdrX3Zp
ZXcuY3BwOgotICAgICAgICAoX2V3a192aWV3X3NtYXJ0X2NhbGN1bGF0ZSk6Ci0KLTIwMTEtMDgt
MTcgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgotCi0gICAgICAgIE1ha2UgV2ViQ29y
ZSBrZWVwIHRyYWNrIG9mIHRoZSBjdXJyZW50IGRldmljZSBzY2FsZSBmYWN0b3IKLQotICAgICAg
ICBGaXhlcyA8aHR0cDovL3dlYmtpdC5vcmcvYi82NjQxMz4gV2ViQ29yZSByZXF1aXJlcyBldmVy
eSBXZWJLaXQgcG9ydCB0byBrZWVwIHRyYWNrIG9mIHRoZQotICAgICAgICBkZXZpY2Ugc2NhbGUg
ZmFjdG9yCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCi0KLSAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwOgotICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0Nocm9tZUNsaWVudEVmbC5oOgotICAgICAgICBSZW1vdmVkIGRldmljZVNjYWxlRmFjdG9y
LgotCi0yMDExLTA4LTE1ICBEbWl0cnkgVGl0b3YgIDxkaW1pY2hAY2hyb21pdW0ub3JnPgotCi0g
ICAgICAgIEZyYW1lTG9hZGVyQ2xpZW50Ojp0cmFuc2ZlckxvYWRpbmdSZXNvdXJjZUZyb21QYWdl
IGRvZXMgbm90IGhhdmUgZW5vdWdoIHBhcmFtZXRlcnMKLSAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2MTY1Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgRGFy
aW4gRmlzaGVyLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRF
ZmwuY3BwOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OnRyYW5zZmVy
TG9hZGluZ1Jlc291cmNlRnJvbVBhZ2UpOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50RWZsLmg6Ci0KLTIwMTEtMDgtMTAgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBw
bGUuY29tPgotCi0gICAgICAgIENsZWFyIHVwIHNjYWxlIGZhY3RvciB0ZXJtaW5vbG9neQotCi0g
ICAgICAgIFdlYktpdCBieSBhbmQgbGFyZ2UgZGVhbHMgd2l0aCB0d28gc2NhbGUgZmFjdG9yczog
b25lIGludHJpbnNpYyB0byB0aGUgZGV2aWNlIG9uIHdoaWNoIHRoZQotICAgICAgICBzb2Z0d2Fy
ZSBpcyBydW5uaW5nLCBhbmQgb25lIHRoYXQgaXMgcGVyLVBhZ2UgYW5kIGNhbiBiZSBjb250cm9s
bGVkIHZpYSBBUEkgY2FsbHMuIFRoaXMKLSAgICAgICAgcGF0Y2ggbmFtZXMgdGhlIGZvcm1lciAi
ZGV2aWNlU2NhbGVGYWN0b3IiIGFuZCB0aGUgbGF0dGVyICJwYWdlU2NhbGVGYWN0b3IiLCBhbmQg
bWFrZXMgdGhlCi0gICAgICAgIGNvZGUgdXNlIHRob3NlIG5hbWVzLiBJdCBzaG91bGQgaW50cm9k
dWNlIG5vIGJlaGF2aW9yIGNoYW5nZXMuCi0KLSAgICAgICAgRml4ZXMgPGh0dHA6Ly93ZWJraXQu
b3JnL2IvNTU3ODc+IFdlYktpdCB1c2VzIG11bHRpcGxlIGNvbmZsaWN0aW5nIG5hbWVzIHRvIHJl
ZmVyIHRvIHRoZQotICAgICAgICBkZXZpY2Ugc2NhbGUgZmFjdG9yCi0KLSAgICAgICAgUmV2aWV3
ZWQgYnkgU2ltb24gRnJhc2VyLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xp
ZW50RWZsLmNwcDoKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuaDoK
LQotMjAxMS0wOC0xMiAgR3J6ZWdvcnogQ3phamtvd3NraSAgPGcuY3phamtvd3NraUBzYW1zdW5n
LmNvbT4KLQotICAgICAgICBbRUZMXSBGaXggYWZ0ZXIgcjkxODE1IC0gcmVzdG9yZSBjaGFuZ2Vz
IGZyb20gcjkxNjU5LgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NjQ2ODIKLQotICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlh
bnNlbi4KLQotICAgICAgICBSZXN0b3JlIHBhdGNoIGZvciBmaXggZXdrX3ZpZXdfY29udGV4dF9t
ZW51X2ZvcndhcmRfZXZlbnQgd2hpY2gKLSAgICAgICAgaGFzIGJlZW4gb3ZlcndyaXRpdGVuIGJ5
IG1pc3Rha2UuCi0KLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoZXdrX3Zp
ZXdfY29udGV4dF9tZW51X2ZvcndhcmRfZXZlbnQpOgotCi0yMDExLTA4LTEyICBHcnplZ29yeiBD
emFqa293c2tpICA8Zy5jemFqa293c2tpQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxdIEhU
TUwgU2F2aW5nIGZlYXR1cmUuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD01NTQ1NQotCi0gICAgICAgIFJldmlld2VkIGJ5IEFudG9uaW8gR29tZXMuCi0K
LSAgICAgICAgR2V0cyB0aGUgc291cmNlIGFuZCBsb2NhdGlvbiBvZiByZXNvdXJjZXMgZm9yIGRv
Y3VtZW50LgotICAgICAgICBUT0RPOgotICAgICAgICAxLiBTdXBwb3J0IG90aGVycyByZXNvdXJj
ZXMgKGNzcywgcGx1Z2lucywgbWVkaWEgZmlsZXMpLgotICAgICAgICAyLiBDdXJyZW50bHkgb25s
eSBIVE1MIGRvY3VtZW50cyBhcmUgc3VwcG9ydGVkLgotCi0gICAgICAgICogZXdrL2V3a19mcmFt
ZS5jcHA6Ci0gICAgICAgIChld2tfZnJhbWVfc291cmNlX2dldCk6Ci0gICAgICAgIChld2tfZnJh
bWVfcmVzb3VyY2VzX2xvY2F0aW9uX2dldCk6Ci0gICAgICAgICogZXdrL2V3a19mcmFtZS5oOgot
Ci0yMDExLTA4LTEwICBHcnplZ29yeiBDemFqa293c2tpICA8Zy5jemFqa293c2tpQHNhbXN1bmcu
Y29tPgotCi0gICAgICAgIFtFRkxdIFJldHVybiBmcm9tIF9ld2tfdmlld19zbWFydF9hZGQgaWYg
c21hcnQgZGF0YSBjYW4gbm90IGJlIGFsbG9jYXRlZAotICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjU4NTMKLQotICAgICAgICBSZXZpZXdlZCBieSBLZW5u
ZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KLQotICAgICAgICBJdCBwcmV2ZW50cyB0aGUgY3Jhc2gg
d2hpbGUgYWxsb2NhdGluZyBhIG1lbW9yeSBmb3IgdmlldydzIHNtYXJ0IGRhdGEuCi0gICAgICAg
IE90aGVycyBjaGVja2luZyBhcmUgbmVlZGVkIGZvciBzdXBwb3J0IHNpbmdsZSBhbmQgdGlsZWQg
YmFja2luZyBzdG9yZS4KLSAgICAgICAgQXMgYSByZXN1bHQgYW4gZW1wdHkgd2luZG93IHdpbGwg
YmUgZGlzcGxheWVkLgotCi0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAgKF9l
d2tfdmlld19zbWFydF9hZGQpOgotICAgICAgICAoX2V3a192aWV3X3NtYXJ0X3Jlc2l6ZSk6Ci0g
ICAgICAgIChfZXdrX3ZpZXdfc21hcnRfbW92ZSk6Ci0gICAgICAgIChfZXdrX3ZpZXdfc21hcnRf
c2hvdyk6Ci0gICAgICAgIChfZXdrX3ZpZXdfc21hcnRfaGlkZSk6Ci0gICAgICAgICogZXdrL2V3
a192aWV3X3NpbmdsZS5jOgotICAgICAgICAoX2V3a192aWV3X3NpbmdsZV9zbWFydF9hZGQpOgot
ICAgICAgICAoX2V3a192aWV3X3NpbmdsZV9zbWFydF9yZXNpemUpOgotICAgICAgICAqIGV3ay9l
d2tfdmlld190aWxlZC5jOgotICAgICAgICAoX2V3a192aWV3X3RpbGVkX3NtYXJ0X2FkZCk6Ci0K
LTIwMTEtMDgtMTAgIEdyemVnb3J6IEN6YWprb3dza2kgIDxnLmN6YWprb3dza2lAc2Ftc3VuZy5j
b20+Ci0KLSAgICAgICAgW0VGTF0gQVBJIG1ldGhvZHMgY2hlY2sgTlVMTCBhbmQgcmV0dXJuIHBy
b3BlciB2YWx1ZS4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTY1ODQ0Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5z
ZW4uCi0KLSAgICAgICAgQ2hlY2sgTlVMTCBiZWZvcmUgYWNjZXNzIHRvIHRoZSBzbWFydCBhbmQg
cHJpdmF0ZSBkYXRhIG9mIHRoZSB2aWV3IG9iamVjdAotICAgICAgICBhbmQgcmV0dXJuIHRoZSBw
cm9wZXIgdmFsdWUgaWYgZXJyb3Igb2NjdXJyZWQuCi0KLSAgICAgICAgKiBld2svZXdrX3ZpZXcu
Y3BwOgotICAgICAgICAoZXdrX3ZpZXdfem9vbV9yYW5nZV9zZXQpOgotICAgICAgICAoZXdrX3Zp
ZXdfem9vbV9yYW5nZV9taW5fZ2V0KToKLSAgICAgICAgKGV3a192aWV3X3pvb21fcmFuZ2VfbWF4
X2dldCk6Ci0gICAgICAgIChld2tfdmlld191c2VyX3NjYWxhYmxlX3NldCk6Ci0gICAgICAgIChl
d2tfdmlld191c2VyX3NjYWxhYmxlX2dldCk6Ci0gICAgICAgIChld2tfdmlld19kZXZpY2VfcGl4
ZWxfcmF0aW9fZ2V0KToKLSAgICAgICAgKiBld2svZXdrX3ZpZXcuaDoKLQotMjAxMS0wOC0xMCAg
S3dhbmdIeXVrIEtpbSAgPGh5dWtpLmtpbUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBbRUZMXSBS
ZW1vdmUgdW51c2VkIGxvY2FsIHZhcmlhYmxlIGZyb20gX2V3a190aWxlZF9iYWNraW5nX3N0b3Jl
X2l0ZW1fcHJvY2Vzc19pZGxlcl9jYi4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTY1ODQ2Ci0KLSAgICAgICAgQXMgRXdrX1RpbGVkX0JhY2tpbmdfU3Rv
cmVfSXRlbSAqaXQgaXMgZGVjbGFyZWQgYXMgbG9jYWwgdmFyaWFibGUsIGJ1dCBpdCdzIG5ldmVy
IHJlZmVyZW5jZWQgYW55d2hlcmUsCi0gICAgICAgIGl0IGlzIGJldHRlciB0byBiZSByZW1vdmVk
IGZyb20gX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX2l0ZW1fcHJvY2Vzc19pZGxlcl9jYi4KLQot
ICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KLQotICAgICAg
ICAqIGV3ay9ld2tfdGlsZWRfYmFja2luZ19zdG9yZS5jOgotICAgICAgICAoX2V3a190aWxlZF9i
YWNraW5nX3N0b3JlX2l0ZW1fcHJvY2Vzc19pZGxlcl9jYik6Ci0KLTIwMTEtMDgtMDkgIEd5dXlv
dW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBbRUZMXSBTb3J0
IHNpZ25hbCBjb21tZW50cyBieSBhbHBoYWJldGljYWwgb3JkZXIuCi0gICAgICAgIGh0dHA6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1NTIwCi0KLSAgICAgICAgUmV2aWV3ZWQg
YnkgS2VudCBUYW11cmEuCi0KLSAgICAgICAgU2lnbmFscyBjYXVzZWQgYnkgZXdrIHN0aWxsIGFy
ZSBsaXN0ZWQgd2l0aG91dCBhbnkgc3BlY2lmaWMgcnVsZS4KLSAgICAgICAgSXQgc3VyZSBpc24n
dCBhIG5pY2UgdGhpbmcgdG8gdW5kZXJzdGFuZCB0aGUgc2lnbmFsIGxpc3QuIFNvLCB0aGlzIHBh
dGNoCi0gICAgICAgIGxpc3RzIHNpZ25hbHMgYnkgYWxwaGFiZXRpY2FsIG9yZGVyLgotCi0gICAg
ICAgICogZXdrL2V3a19jb250ZXh0bWVudS5oOgotICAgICAgICAqIGV3ay9ld2tfZnJhbWUuaDoK
LSAgICAgICAgKiBld2svZXdrX3ZpZXcuaDoKLQotMjAxMS0wOC0wOSAgS3dhbmdIeXVrIEtpbSAg
PGh5dWtpLmtpbUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBbRUZMXSBGaXggd2FybmluZyBjYXVz
ZWQgYnkgdW5kZWZpbmVkIHN0YXRpYyBhcGkuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD02NTMwMQotCi0gICAgICAgIEJvdGggX2V3a190aWxlZF9iYWNr
aW5nX3N0b3JlX2l0ZW1fcmVxdWVzdF9hZGQgYW5kIF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9p
dGVtX3JlcXVlc3RfZGVsCi0gICAgICAgIGFyZSBkZWNsYXJlZCwgYnV0IHRoZWlyIGJvZGllcyBh
cmUgbm90IGRlZmluZWQgYW5kIHRoZXkgYXJlIG5vdCByZWZlcmVuY2VkIGFueXdoZXJlLgotICAg
ICAgICBUaGVyZWZvcmUsIEkgcmVtb3ZlIGJvdGggdHdvIEFQSSdzIGRlY2xhcmF0aW9uIGluIG9y
ZGVyIHRvIHJlc29sdmUgd2FybmluZyBtZXNzYWdlIGNhdXNlZCBieSB0aGVtLgotCi0gICAgICAg
IFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgotCi0gICAgICAgICogZXdr
L2V3a190aWxlZF9iYWNraW5nX3N0b3JlLmM6Ci0KLTIwMTEtMDgtMDUgIEdyemVnb3J6IEN6YWpr
b3dza2kgIDxnLmN6YWprb3dza2lAc2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW0VGTF0gTW92ZSBB
UEkgZG9jdW1lbnRhdGlvbiBvZiBld2sgZmlsZXMgdG8gdGhlIGhlYWRlcnMKLSAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1MzczCi0KLSAgICAgICAgVGhl
cmUgYXJlIHR3byBhcmd1bWVudHMgZm9yIHRoaXM6Ci0gICAgICAgIDEuIERldmVsb3BlcnMgdXNp
bmcgd2Via2l0LWVmbCBmcm9tIHBhY2thZ2VzIHByb2JhYmx5IHdvbid0IGhhdmUgdGhlIEMvQ1BQ
IGZpbGVzIHdpdGggdGhlbQotICAgICAgICAgICBhbmQgdGhlIGRveHlnZW4gZG9jdW1lbnRhdGlv
biBjYW4gYmUgZ2VuZXJhdGVkIGZyb20gdGhlIGhlYWRlcnMgd2l0aG91dCB0aGUgbmVlZAotICAg
ICAgICAgICBmb3IgdGhlIHdob2xlIHNvdXJjZSBmaWxlcy4KLSAgICAgICAgMi4gSXQgd2lsbCBi
ZSBjb25zaXN0ZW50IHdpdGggc3RydWN0dXJlcyBkZXNjcmlwdGlvbnMuCi0KLSAgICAgICAgUmV2
aWV3ZWQgYnkgS2VudCBUYW11cmEuCi0KLSAgICAgICAgKiBld2svZXdrX2F1dGguY3BwOgotICAg
ICAgICAqIGV3ay9ld2tfYXV0aC5oOgotICAgICAgICAqIGV3ay9ld2tfY29udGV4dG1lbnUuY3Bw
OgotICAgICAgICAqIGV3ay9ld2tfY29udGV4dG1lbnUuaDoKLSAgICAgICAgKiBld2svZXdrX2Nv
b2tpZXMuY3BwOgotICAgICAgICAqIGV3ay9ld2tfY29va2llcy5oOgotICAgICAgICAqIGV3ay9l
d2tfZnJhbWUuY3BwOgotICAgICAgICAqIGV3ay9ld2tfZnJhbWUuaDoKLSAgICAgICAgKiBld2sv
ZXdrX2hpc3RvcnkuY3BwOgotICAgICAgICAqIGV3ay9ld2tfaGlzdG9yeS5oOgotICAgICAgICAq
IGV3ay9ld2tfbWFpbi5jcHA6Ci0gICAgICAgICogZXdrL2V3a19tYWluLmg6Ci0gICAgICAgICog
ZXdrL2V3a19uZXR3b3JrLmNwcDoKLSAgICAgICAgKiBld2svZXdrX25ldHdvcmsuaDoKLSAgICAg
ICAgKiBld2svZXdrX3NldHRpbmdzLmNwcDoKLSAgICAgICAgKiBld2svZXdrX3NldHRpbmdzLmg6
Ci0gICAgICAgICogZXdrL2V3a193aW5kb3dfZmVhdHVyZXMuY3BwOgotICAgICAgICAqIGV3ay9l
d2tfd2luZG93X2ZlYXR1cmVzLmg6Ci0KLTIwMTEtMDgtMDMgIFBhdmVsIEZlbGRtYW4gIDxwZmVs
ZG1hbkBjaHJvbWl1bS5vcmc+Ci0KLSAgICAgICAgV2ViIEluc3BlY3RvcjogcmVtb3ZlIE5vZGUg
cGFyYW1ldGVyIGZyb20gdGhlIEluc3BlY3RvckNsaWVudDo6aGlnaGxpZ2h0Ci0gICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTU0OQotCi0gICAgICAgIFJl
dmlld2VkIGJ5IFl1cnkgU2VtaWtoYXRza3kuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9J
bnNwZWN0b3JDbGllbnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50
RWZsOjpoaWdobGlnaHQpOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVu
dEVmbC5oOgotCi0yMDExLTA4LTAyICBSYXBoYWVsIEt1Ym8gZGEgQ29zdGEgIDxrdWJvQHByb2Z1
c2lvbi5tb2JpPgotCi0gICAgICAgIFtFRkxdIElnbm9yZSBlbXB0eSByZXF1ZXN0cyBvbiBwb2xp
Y3kgZGVjaXNpb25zLgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NjQ1MzYKLQotICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlh
bnNlbi4KLQotICAgICAgICBUaGlzIGlzIHRoZSBzYW1lIGZpeCBpbnRyb2R1Y2VkIGluIHRoZSBH
VEsrIHBvcnQgaW4gcjQxMzEzOiBlbXB0eQotICAgICAgICByZXF1ZXN0IHNob3VsZCBiZSBpZ25v
cmVkLCBzbyB0ZXN0cyBzdWNoIGFzCi0gICAgICAgIGZhc3QvbG9hZGVyL2VtcHR5LWVtYmVkLXNy
Yy1hdHRyaWJ1dGUuaHRtbCBkbyBub3QgY3Jhc2guCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
ckNsaWVudEVmbDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZSk6Ci0gICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdX
aW5kb3dBY3Rpb24pOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmRp
c3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6Ci0KLTIwMTEtMDgtMDIgIEV1
bnNvbCBQYXJrICA8ZXVuc29sNDcucGFya0BzYW1zdW5nLmNvbT4KLQotICAgICAgICBbRUZMXSBS
ZW1vdmUgb3ZlcmxhcHBpbmcgcmVjdXJzaXZlIGxheW91dCBmdW5jdGlvbiAKLSAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYzMjQxIAotCi0gICAgICAgIEZp
cnN0LCBfZXdrX3ZpZXdfbGF5b3V0X2lmX25lZWRlZF9yZWN1cnNpdmUgaXMgY2FsbGVkIHR3aWNl
IGluIF9ld2tfdmlld19zbWFydF9jYWxjdWxhdGUgCi0gICAgICAgIGFuZCBfZXdrX3ZpZXdfdGls
ZWRfdXBkYXRlc19wcm9jZXNzX3ByZSxzbyBpdCBpcyBubyBwcm9ibGVtIHJlbW92aW5nIG9uZSBv
ZiB0aGVtLgotICAgICAgICBTZWNvbmQsIEluIHRpbGVkIGJhY2tpbmdzdG9yZSBjb25maWd1cmF0
aW9uLCBfZXdrX3ZpZXdfbGF5b3V0X2lmX25lZWRlZF9yZWN1cnNpdmUgY2FsbGVkIAotICAgICAg
ICBpbiBfZXdrX3ZpZXdfc21hcnRfY2FsY3VsYXRlIHdpbGwgcmVzdWx0IGluIGdlbmVyYXRpbmcg
cmVwYWludHMgZm9yIGRpcnR5IGFyZWFzIAotICAgICAgICBsb2NhdGVkIG91dHNpZGUgb2Ygdmll
d3BvcnQgc2luY2UgbV9wYWludEVudGlyZUNvbnRlbnRzIGlzIHNldC4KLSAgICAgICAgQnV0LCB0
aGUgYXJlYXMgd2lsbCBub3QgYmUgYWN0dWFsbHkgcGFpbnRlZC4gVGh1cywgdGhlIGxheW91dCBp
cyB1bm5lY2Vzc2FyeSBleGNlcHQKLSAgICAgICAgd2hlbiB0aGVyZSBpcyBzb21ldGhpbmcgdG8g
cGFpbnQgaW5zaWRlIG9mIHZpZXdwb3J0LCB3aGljaCB3aWxsIGNvbnN1bWUgQ1BVIHVubmVjZXNz
YXJpbHkuCi0gICAgICAgIFNvLHRoZSBsYXlvdXQgZnVuYyB3YXMgcmVtb3ZlZCBmcm9tIF9ld2tf
dmlld19zbWFydF9jYWxjdWxhdGUgCi0gICAgICAgIGFuZCBhZGRlZCB0byBfZXdrX3ZpZXdfc2lu
Z2xlX3NtYXJ0X3JlcGFpbnRzX3Byb2Nlc3MgZm9yIHNpbmdsZSBiYWNraW5nc3RvcmUuCi0KLSAg
ICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21lcy4KLQotICAgICAgICAqIGV3ay9ld2tfdmll
dy5jcHA6Ci0gICAgICAgIChfZXdrX3ZpZXdfc21hcnRfY2FsY3VsYXRlKToKLSAgICAgICAgKiBl
d2svZXdrX3ZpZXdfc2luZ2xlLmM6Ci0gICAgICAgIChfZXdrX3ZpZXdfc2luZ2xlX3NtYXJ0X3Jl
cGFpbnRzX3Byb2Nlc3MpOgotCi0yMDExLTA4LTAyICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5r
aW1Ac2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW0VGTF0gQWRkIGZ1bGxzY3JlZW4gYnV0dG9uIHRv
IG1lZGlhIGNvbnRyb2wgVUkuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD02NDQyOAotCi0gICAgICAgIEltcGxlbWVudCBmdW5jdGlvbnMgZm9yIGZ1bGwg
c2NyZWVuIGluIENocm9tZUNsaWVudEVmbCBpbiBvcmRlciB0byBkaXNwbGF5IGEgZnVsbCBzY3Jl
ZW4gYnV0dG9uIG9uIG1lZGlhIGNvbnRyb2wgVUkuCi0gICAgICAgIFdoZW4gZnVsbCBzY3JlZW4g
bW9kZSBpcyBhY3RpdmF0ZWQgYnkgcHJlc3NpbmcgdGhlIGJ1dHRvbiwgdGhlIGZ1bmN0aW9ucyBh
cmUgY2FsbGVkIGJ5IERvY3VtZW50LiBTbywgaWYgdGhlcmUgaXMgbm8gaW1wbGVtZW50ZWQKLSAg
ICAgICAgZnVuY3Rpb24sIGZ1bGwgc2NyZWVuIGJ1dHRvbiB3aWxsIG5vdCBiZSBzaG93bi4KLSAg
ICAgICAgSW4gYWRkaXRpb24sIGEgLmVkYyBmaWxlIGFuZCBhbiBpbWFnZSBmaWxlIGFyZSBhZGRl
ZCBmb3IgZnVsbCBzY3JlZW4gYnV0dG9uLgotCi0gICAgICAgIFJldmlld2VkIGJ5IEFudG9uaW8g
R29tZXMuCi0KLSAgICAgICAgKiBEZWZhdWx0VGhlbWUvZGVmYXVsdC5lZGM6Ci0gICAgICAgICog
RGVmYXVsdFRoZW1lL3dpZGdldC9tZWRpYWNvbnRyb2wvZnVsbHNjcmVlbmJ1dHRvbi9mdWxsc2Ny
ZWVuX2J1dHRvbi5lZGM6IEFkZGVkLgotICAgICAgICAqIERlZmF1bHRUaGVtZS93aWRnZXQvbWVk
aWFjb250cm9sL2Z1bGxzY3JlZW5idXR0b24vZnVsbHNjcmVlbmJ1dHRvbi5wbmc6IEFkZGVkLgot
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChX
ZWJDb3JlOjpDaHJvbWVDbGllbnRFZmw6OnN1cHBvcnRzRnVsbFNjcmVlbkZvckVsZW1lbnQpOgot
ICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZsOjplbnRlckZ1bGxTY3JlZW5Gb3JFbGVt
ZW50KToKLSAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEVmbDo6ZXhpdEZ1bGxTY3JlZW5G
b3JFbGVtZW50KToKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuaDoK
LQotMjAxMS0wNy0yOSAgTWljaGFsIFBha3VsYSB2ZWwgUnV0a2EgIDxtLnBha3VsYUBzYW1zdW5n
LmNvbT4KLQotICAgICAgICBbRUZMXSBJbXBsZW1lbnQgRWRpdG9yQ2xpZW50RWZsOjpyZXNwb25k
VG9DaGFuZ2VkQ29udGVudHMKLSAgICAgICAgaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NjQyNTkKLQotICAgICAgICBJbXBsZW1lbnRzIHJlc3BvbmRUb0NoYW5nZWRDb250
ZW50cyBieSBjYWxsaW5nIGNhbGxiYWNrIGJvdGggZnJvbQotICAgICAgICBld2tfZnJhbWUgYW5k
IGV3a192aWV3IHdpdGggZnJhbWUgYW5kIHZpZXcgb2JqZWN0cyByZXNwZWN0aXZlbHkuCi0KLSAg
ICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21lcy4KLQotICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0VkaXRvckNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRF
Zmw6OnJlc3BvbmRUb0NoYW5nZWRDb250ZW50cyk6Ci0gICAgICAgICogZXdrL2V3a19mcmFtZS5j
cHA6Ci0gICAgICAgIChld2tfZnJhbWVfZWRpdG9yX2NsaWVudF9jb250ZW50c19jaGFuZ2VkKToK
LSAgICAgICAgKiBld2svZXdrX2ZyYW1lLmg6Ci0gICAgICAgICogZXdrL2V3a19wcml2YXRlLmg6
Ci0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAgKGV3a192aWV3X2VkaXRvcl9j
bGllbnRfY29udGVudHNfY2hhbmdlZCk6Ci0gICAgICAgICogZXdrL2V3a192aWV3Lmg6Ci0KLTIw
MTEtMDctMjkgIEdyemVnb3J6IEN6YWprb3dza2kgIDxnLmN6YWprb3dza2lAc2Ftc3VuZy5jb20+
Ci0KLSAgICAgICAgW0VGTF0gTW92ZSBld2tfdmlldyBBUEkgZG9jdW1lbnRhdGlvbiB0byB0aGUg
aGVhZGVyIGZpbGUKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTY1MzA1Ci0KLSAgICAgICAgVGhlcmUgYXJlIHR3byBhcmd1bWVudHMgZm9yIHRoaXM6Ci0g
ICAgICAgIDEuIERldmVsb3BlcnMgdXNpbmcgd2Via2l0LWVmbCBmcm9tIHBhY2thZ2VzIHByb2Jh
Ymx5IHdvbid0IGhhdmUgdGhlIEMvQ1BQIGZpbGVzIHdpdGggdGhlbQotICAgICAgICAgICBhbmQg
dGhlIGRveHlnZW4gZG9jdW1lbnRhdGlvbiBjYW4gYmUgZ2VuZXJhdGVkIGZyb20gdGhlIGhlYWRl
cnMgd2l0aG91dCB0aGUgbmVlZAotICAgICAgICAgICBmb3IgdGhlIHdob2xlIHNvdXJjZSBmaWxl
cy4KLSAgICAgICAgMi4gSXQgd2lsbCBiZSBjb25zaXN0ZW50IHdpdGggc3RydWN0dXJlcyBkZXNj
cmlwdGlvbnMuCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgS2VudCBUYW11cmEuCi0KLSAgICAgICAg
KiBld2svZXdrX3RpbGVkX21vZGVsLmM6Ci0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAg
ICAgICAgKiBld2svZXdrX3ZpZXcuaDoKLSAgICAgICAgKiBld2svZXdrX3ZpZXdfc2luZ2xlLmM6
Ci0gICAgICAgICogZXdrL2V3a192aWV3X3RpbGVkLmM6Ci0KLTIwMTEtMDctMjggIEthbmdpbCBI
YW4gIDxrYW5naWwuaGFuQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxdIFJlbW92ZXMgRUFQ
SSBhdHRyaWJ1dGUgaW4gaW50ZXJuYWwgaGVhZGVycy4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1MjUxCi0KLSAgICAgICAgUmVtb3ZlcyBFQVBJIGF0
dHJpYnV0ZSBpbiB0aHJlZSBoZWFkZXIgZmlsZXMgYmVjYXVzZSBBUEkgaW4gdGhlc2UgZmlsZXMg
aXMgaW50ZXJuYWxseSB1c2VkLgotCi0gICAgICAgIFJldmlld2VkIGJ5IEFuZGVycyBDYXJsc3Nv
bi4KLQotICAgICAgICAqIGV3ay9ld2tfdGlsZWRfYmFja2luZ19zdG9yZS5oOgotICAgICAgICAq
IGV3ay9ld2tfdGlsZWRfbWF0cml4Lmg6Ci0gICAgICAgICogZXdrL2V3a190aWxlZF9tb2RlbC5o
OgotCi0yMDExLTA3LTI4ICBLYW5naWwgSGFuICA8a2FuZ2lsLmhhbkBzYW1zdW5nLmNvbT4KLQot
ICAgICAgICBbRUZMXSBEZWZpbmVzIGhlYWRlciBmaWxlcyB3aWxsIGJlIHB1YmxpY2x5IGluc3Rh
bGxlZCBleHBsaWNpdGx5LgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NjQ5MjMKLQotICAgICAgICBUaGlzIHBhdGNoIG1vZGlmaWVzIGEgd2F5IHRvIGRl
ZmluZSBvcGVuIGhlYWRlciBsaXN0IGZyb20gYmxhY2stbGlzdCB0byB3aGl0ZS1saXN0LgotICAg
ICAgICBQbHVzLCAnZXdrL2V3a191dGlsLmgnIHdpbGwgbm90IGJlIGluc3RhbGxlZCBhbnltb3Jl
IGJlY2F1c2UgaXQgb25seSBoYXMgaW50ZXJuYWwgQVBJLgotCi0gICAgICAgIFJldmlld2VkIGJ5
IEFuZGVycyBDYXJsc3Nvbi4KLQotICAgICAgICAqIENNYWtlTGlzdHNFZmwudHh0OgotCi0yMDEx
LTA3LTI4ICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+Ci0KLSAgICAg
ICAgW0VGTF0gRml4IGNvZGluZyBzdHlsZSBvZiBwb2ludGVyIHR5cGUgaW4gZXdrIGZpbGVzLgot
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjUzNTgKLQot
ICAgICAgICBNb3ZlICcqJyBvcGVyYXRvciB0byB2YXJpYWJsZSBzaWRlIGFjY29yZGluZyB0byBl
ZmwgY29kaW5nIHN0eWxlLgotICAgICAgICBCZWNhdXNlLCAnKicgb3BlcmF0b3IgaXMgbmV4dCB0
byB2YXJpYWJsZSBpbiBFRkwgY29kaW5nIHN0eWxlLgotCi0gICAgICAgIFJldmlld2VkIGJ5IEtl
bnQgVGFtdXJhLgotCi0gICAgICAgICogZXdrL2V3a19hdXRoLmNwcDoKLSAgICAgICAgKGV3a19h
dXRoX2NyZWRlbnRpYWxzX3NldCk6Ci0gICAgICAgICogZXdrL2V3a19hdXRoLmg6Ci0gICAgICAg
ICogZXdrL2V3a19hdXRoX3NvdXAuY3BwOgotICAgICAgICAoX0V3a19BdXRoX0RhdGE6OmV3a19h
dXRoX3NvdXBfZGlhbG9nX2NsYXNzX2luaXQpOgotICAgICAgICAoX0V3a19BdXRoX0RhdGE6OmV3
a19hdXRoX3NvdXBfZGlhbG9nX2luaXQpOgotICAgICAgICAoX0V3a19BdXRoX0RhdGE6OmV3a19h
dXRoX3NvdXBfY3JlZGVudGlhbHNfc2V0KToKLSAgICAgICAgKF9Fd2tfQXV0aF9EYXRhOjpzZXNz
aW9uX2F1dGhlbnRpY2F0ZSk6Ci0gICAgICAgIChfRXdrX0F1dGhfRGF0YTo6ZnJlZV9hdXRoX2Rh
dGEpOgotICAgICAgICAoX0V3a19BdXRoX0RhdGE6OmF0dGFjaCk6Ci0gICAgICAgIChfRXdrX0F1
dGhfRGF0YTo6ZGV0YWNoKToKLSAgICAgICAgKiBld2svZXdrX2F1dGhfc291cC5oOgotICAgICAg
ICAqIGV3ay9ld2tfY29udGV4dG1lbnUuY3BwOgotICAgICAgICAoZXdrX2NvbnRleHRfbWVudV9y
ZWYpOgotICAgICAgICAoZXdrX2NvbnRleHRfbWVudV91bnJlZik6Ci0gICAgICAgIChld2tfY29u
dGV4dF9tZW51X2Rlc3Ryb3kpOgotICAgICAgICAoZXdrX2NvbnRleHRfbWVudV9pdGVtX2xpc3Rf
Z2V0KToKLSAgICAgICAgKGV3a19jb250ZXh0X21lbnVfaXRlbV9uZXcpOgotICAgICAgICAoZXdr
X2NvbnRleHRfbWVudV9pdGVtX3NlbGVjdCk6Ci0gICAgICAgIChld2tfY29udGV4dF9tZW51X2l0
ZW1fZnJlZSk6Ci0gICAgICAgIChld2tfY29udGV4dF9tZW51X2l0ZW1fdHlwZV9nZXQpOgotICAg
ICAgICAoZXdrX2NvbnRleHRfbWVudV9pdGVtX3R5cGVfc2V0KToKLSAgICAgICAgKGV3a19jb250
ZXh0X21lbnVfaXRlbV9hY3Rpb25fZ2V0KToKLSAgICAgICAgKGV3a19jb250ZXh0X21lbnVfaXRl
bV9hY3Rpb25fc2V0KToKLSAgICAgICAgKGV3a19jb250ZXh0X21lbnVfaXRlbV90aXRsZV9nZXQp
OgotICAgICAgICAoZXdrX2NvbnRleHRfbWVudV9pdGVtX3RpdGxlX3NldCk6Ci0gICAgICAgIChl
d2tfY29udGV4dF9tZW51X2l0ZW1fY2hlY2tlZF9nZXQpOgotICAgICAgICAoZXdrX2NvbnRleHRf
bWVudV9pdGVtX2NoZWNrZWRfc2V0KToKLSAgICAgICAgKGV3a19jb250ZXh0X21lbnVfaXRlbV9l
bmFibGVkX2dldCk6Ci0gICAgICAgIChld2tfY29udGV4dF9tZW51X25ldyk6Ci0gICAgICAgIChl
d2tfY29udGV4dF9tZW51X2ZyZWUpOgotICAgICAgICAoZXdrX2NvbnRleHRfbWVudV9pdGVtX2Fw
cGVuZCk6Ci0gICAgICAgIChld2tfY29udGV4dF9tZW51X2N1c3RvbV9nZXQpOgotICAgICAgICAo
ZXdrX2NvbnRleHRfbWVudV9zaG93KToKLSAgICAgICAgKiBld2svZXdrX2NvbnRleHRtZW51Lmg6
Ci0gICAgICAgICogZXdrL2V3a19jb29raWVzLmNwcDoKLSAgICAgICAgKGV3a19jb29raWVzX2Zp
bGVfc2V0KToKLSAgICAgICAgKGV3a19jb29raWVzX2NsZWFyKToKLSAgICAgICAgKGV3a19jb29r
aWVzX2dldF9hbGwpOgotICAgICAgICAoZXdrX2Nvb2tpZXNfY29va2llX2RlbCk6Ci0gICAgICAg
IChld2tfY29va2llc19wb2xpY3lfc2V0KToKLSAgICAgICAgKGV3a19jb29raWVzX3BvbGljeV9n
ZXQpOgotICAgICAgICAqIGV3ay9ld2tfaGlzdG9yeS5jcHA6Ci0gICAgICAgIChfZXdrX2hpc3Rv
cnlfaXRlbV9uZXcpOgotICAgICAgICAoX2V3a19oaXN0b3J5X2l0ZW1fbGlzdF9nZXQpOgotICAg
ICAgICAoZXdrX2hpc3RvcnlfZm9yd2FyZCk6Ci0gICAgICAgIChld2tfaGlzdG9yeV9iYWNrKToK
LSAgICAgICAgKGV3a19oaXN0b3J5X2hpc3RvcnlfaXRlbV9hZGQpOgotICAgICAgICAoZXdrX2hp
c3RvcnlfaGlzdG9yeV9pdGVtX3NldCk6Ci0gICAgICAgIChld2tfaGlzdG9yeV9oaXN0b3J5X2l0
ZW1fYmFja19nZXQpOgotICAgICAgICAoZXdrX2hpc3RvcnlfaGlzdG9yeV9pdGVtX2N1cnJlbnRf
Z2V0KToKLSAgICAgICAgKGV3a19oaXN0b3J5X2hpc3RvcnlfaXRlbV9mb3J3YXJkX2dldCk6Ci0g
ICAgICAgIChld2tfaGlzdG9yeV9oaXN0b3J5X2l0ZW1fbnRoX2dldCk6Ci0gICAgICAgIChld2tf
aGlzdG9yeV9oaXN0b3J5X2l0ZW1fY29udGFpbnMpOgotICAgICAgICAoZXdrX2hpc3RvcnlfZm9y
d2FyZF9saXN0X2dldCk6Ci0gICAgICAgIChld2tfaGlzdG9yeV9mb3J3YXJkX2xpc3RfZ2V0X3dp
dGhfbGltaXQpOgotICAgICAgICAoZXdrX2hpc3RvcnlfZm9yd2FyZF9saXN0X2xlbmd0aCk6Ci0g
ICAgICAgIChld2tfaGlzdG9yeV9iYWNrX2xpc3RfZ2V0KToKLSAgICAgICAgKGV3a19oaXN0b3J5
X2JhY2tfbGlzdF9nZXRfd2l0aF9saW1pdCk6Ci0gICAgICAgIChld2tfaGlzdG9yeV9iYWNrX2xp
c3RfbGVuZ3RoKToKLSAgICAgICAgKGV3a19oaXN0b3J5X2xpbWl0X2dldCk6Ci0gICAgICAgIChl
d2tfaGlzdG9yeV9saW1pdF9zZXQpOgotICAgICAgICAoZXdrX2hpc3RvcnlfaXRlbV9uZXcpOgot
ICAgICAgICAoX2V3a19oaXN0b3J5X2l0ZW1fZnJlZSk6Ci0gICAgICAgIChld2tfaGlzdG9yeV9p
dGVtX2ZyZWUpOgotICAgICAgICAoZXdrX2hpc3RvcnlfaXRlbV9saXN0X2ZyZWUpOgotICAgICAg
ICAoZXdrX2hpc3RvcnlfaXRlbV90aXRsZV9nZXQpOgotICAgICAgICAoZXdrX2hpc3RvcnlfaXRl
bV90aXRsZV9hbHRlcm5hdGVfZ2V0KToKLSAgICAgICAgKGV3a19oaXN0b3J5X2l0ZW1fdGl0bGVf
YWx0ZXJuYXRlX3NldCk6Ci0gICAgICAgIChld2tfaGlzdG9yeV9pdGVtX3VyaV9nZXQpOgotICAg
ICAgICAoZXdrX2hpc3RvcnlfaXRlbV91cmlfb3JpZ2luYWxfZ2V0KToKLSAgICAgICAgKGV3a19o
aXN0b3J5X2l0ZW1fdGltZV9sYXN0X3Zpc2l0ZWRfZ2V0KToKLSAgICAgICAgKGV3a19oaXN0b3J5
X2l0ZW1faWNvbl9zdXJmYWNlX2dldCk6Ci0gICAgICAgIChld2tfaGlzdG9yeV9pdGVtX2ljb25f
b2JqZWN0X2FkZCk6Ci0gICAgICAgIChld2tfaGlzdG9yeV9pdGVtX3BhZ2VfY2FjaGVfZXhpc3Rz
KToKLSAgICAgICAgKGV3a19oaXN0b3J5X2l0ZW1fdmlzaXRfY291bnQpOgotICAgICAgICAoZXdr
X2hpc3RvcnlfaXRlbV92aXNpdF9sYXN0X2ZhaWxlZCk6Ci0gICAgICAgIChld2tfaGlzdG9yeV9u
ZXcpOgotICAgICAgICAoZXdrX2hpc3RvcnlfZnJlZSk6Ci0gICAgICAgICogZXdrL2V3a19tYWlu
LmNwcDoKLSAgICAgICAgKF9ld2tfaW5pdF9ib2R5KToKLSAgICAgICAgKiBld2svZXdrX25ldHdv
cmsuY3BwOgotICAgICAgICAoZXdrX25ldHdvcmtfcHJveHlfdXJpX3NldCk6Ci0gICAgICAgIChl
d2tfbmV0d29ya19wcm94eV91cmlfZ2V0KToKLSAgICAgICAgKiBld2svZXdrX25ldHdvcmsuaDoK
LSAgICAgICAgKiBld2svZXdrX3ByaXZhdGUuaDoKLSAgICAgICAgKiBld2svZXdrX3NldHRpbmdz
LmNwcDoKLSAgICAgICAgKGV3a19zZXR0aW5nc19pY29uX2RhdGFiYXNlX3BhdGhfZ2V0KToKLSAg
ICAgICAgKGV3a19zZXR0aW5nc19pY29uX2RhdGFiYXNlX2ljb25fc3VyZmFjZV9nZXQpOgotICAg
ICAgICAoZXdrX3NldHRpbmdzX2ljb25fZGF0YWJhc2VfaWNvbl9vYmplY3RfYWRkKToKLSAgICAg
ICAgKGV3a19zZXR0aW5nc19kZWZhdWx0X3VzZXJfYWdlbnRfZ2V0KToKLSAgICAgICAgKiBld2sv
ZXdrX3V0aWwuY3BwOgotICAgICAgICAoZXdrX3V0aWxfaW1hZ2VfZnJvbV9jYWlyb19zdXJmYWNl
X2FkZCk6Ci0gICAgICAgICogZXdrL2V3a191dGlsLmg6Ci0gICAgICAgICogZXdrL2V3a193aW5k
b3dfZmVhdHVyZXMuY3BwOgotICAgICAgICAoZXdrX3dpbmRvd19mZWF0dXJlc191bnJlZik6Ci0g
ICAgICAgIChld2tfd2luZG93X2ZlYXR1cmVzX3JlZik6Ci0gICAgICAgIChld2tfd2luZG93X2Zl
YXR1cmVzX2Jvb2xfcHJvcGVydHlfZ2V0KToKLSAgICAgICAgKGV3a193aW5kb3dfZmVhdHVyZXNf
aW50X3Byb3BlcnR5X2dldCk6Ci0gICAgICAgIChld2tfd2luZG93X2ZlYXR1cmVzX25ld19mcm9t
X2NvcmUpOgotICAgICAgICAqIGV3ay9ld2tfd2luZG93X2ZlYXR1cmVzLmg6Ci0KLTIwMTEtMDct
MjggIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBb
RUZMXSBGaXggcG9pbnRlciBvcGVyYXRvciBjb2Rpbmcgc3R5bGUgaW4gZXdrX2ZyYW1lLgotICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjUzNTcKLQotICAg
ICAgICBNb3ZlICcqJyBvcGVyYXRvciB0byB2YXJpYWJsZSBhY2NvcmRpbmcgdG8gZWZsIGNvZGlu
ZyBzdHlsZS4KLSAgICAgICAgQmVjYXVzZSwgJyonIG9wZXJhdG9yIGlzIG5leHQgdG8gdmFyaWFi
bGUgaW4gRUZMIGNvZGluZyBzdHlsZS4KLQotICAgICAgICBSZXZpZXdlZCBieSBLZW50IFRhbXVy
YS4KLQotICAgICAgICAqIGV3ay9ld2tfZnJhbWUuY3BwOgotICAgICAgICAoX2V3a19mcmFtZV9k
ZWJ1Zyk6Ci0gICAgICAgIChfZXdrX2ZyYW1lX2xvYWRlcl9lZmxfZ2V0KToKLSAgICAgICAgKGtp
dCk6Ci0gICAgICAgIChfZXdrX2ZyYW1lX2NoaWxkcmVuX2l0ZXJhdG9yX25leHQpOgotICAgICAg
ICAoX2V3a19mcmFtZV9jaGlsZHJlbl9pdGVyYXRvcl9nZXRfY29udGFpbmVyKToKLSAgICAgICAg
KF9ld2tfZnJhbWVfc21hcnRfYWRkKToKLSAgICAgICAgKF9ld2tfZnJhbWVfc21hcnRfZGVsKToK
LSAgICAgICAgKF9ld2tfZnJhbWVfc21hcnRfcmVzaXplKToKLSAgICAgICAgKF9ld2tfZnJhbWVf
c21hcnRfc2V0KToKLSAgICAgICAgKF9ld2tfZnJhbWVfc21hcnRfY2xhc3NfbmV3KToKLSAgICAg
ICAgKGV3a19mcmFtZV92aWV3X2dldCk6Ci0gICAgICAgIChld2tfZnJhbWVfY2hpbGRyZW5faXRl
cmF0b3JfbmV3KToKLSAgICAgICAgKGV3a19mcmFtZV9jaGlsZF9maW5kKToKLSAgICAgICAgKGV3
a19mcmFtZV91cmlfc2V0KToKLSAgICAgICAgKGV3a19mcmFtZV91cmlfZ2V0KToKLSAgICAgICAg
KGV3a19mcmFtZV90aXRsZV9nZXQpOgotICAgICAgICAoZXdrX2ZyYW1lX25hbWVfZ2V0KToKLSAg
ICAgICAgKGV3a19mcmFtZV9jb250ZW50c19zaXplX2dldCk6Ci0gICAgICAgIChfZXdrX2ZyYW1l
X2NvbnRlbnRzX3NldF9pbnRlcm5hbCk6Ci0gICAgICAgIChld2tfZnJhbWVfY29udGVudHNfc2V0
KToKLSAgICAgICAgKGV3a19mcmFtZV9jb250ZW50c19hbHRlcm5hdGVfc2V0KToKLSAgICAgICAg
KGV3a19mcmFtZV9zY3JpcHRfZXhlY3V0ZSk6Ci0gICAgICAgIChld2tfZnJhbWVfZWRpdGFibGVf
Z2V0KToKLSAgICAgICAgKGV3a19mcmFtZV9lZGl0YWJsZV9zZXQpOgotICAgICAgICAoZXdrX2Zy
YW1lX3NlbGVjdGlvbl9nZXQpOgotICAgICAgICAoZXdrX2ZyYW1lX3RleHRfc2VhcmNoKToKLSAg
ICAgICAgKGV3a19mcmFtZV90ZXh0X21hdGNoZXNfbWFyayk6Ci0gICAgICAgIChld2tfZnJhbWVf
dGV4dF9tYXRjaGVzX3VubWFya19hbGwpOgotICAgICAgICAoZXdrX2ZyYW1lX3RleHRfbWF0Y2hl
c19oaWdobGlnaHRfc2V0KToKLSAgICAgICAgKGV3a19mcmFtZV90ZXh0X21hdGNoZXNfaGlnaGxp
Z2h0X2dldCk6Ci0gICAgICAgIChfZXdrX2ZyYW1lX3JlY3RfY21wX2xlc3NfdGhhbik6Ci0gICAg
ICAgIChfZXdrX2ZyYW1lX3JlY3RfaXNfbmVnYXRpdmVfdmFsdWUpOgotICAgICAgICAoZXdrX2Zy
YW1lX3RleHRfbWF0Y2hlc19udGhfcG9zX2dldCk6Ci0gICAgICAgIChld2tfZnJhbWVfc3RvcCk6
Ci0gICAgICAgIChld2tfZnJhbWVfcmVsb2FkKToKLSAgICAgICAgKGV3a19mcmFtZV9yZWxvYWRf
ZnVsbCk6Ci0gICAgICAgIChld2tfZnJhbWVfYmFjayk6Ci0gICAgICAgIChld2tfZnJhbWVfZm9y
d2FyZCk6Ci0gICAgICAgIChld2tfZnJhbWVfbmF2aWdhdGUpOgotICAgICAgICAoZXdrX2ZyYW1l
X2JhY2tfcG9zc2libGUpOgotICAgICAgICAoZXdrX2ZyYW1lX2ZvcndhcmRfcG9zc2libGUpOgot
ICAgICAgICAoZXdrX2ZyYW1lX25hdmlnYXRlX3Bvc3NpYmxlKToKLSAgICAgICAgKGV3a19mcmFt
ZV96b29tX2dldCk6Ci0gICAgICAgIChld2tfZnJhbWVfem9vbV9zZXQpOgotICAgICAgICAoZXdr
X2ZyYW1lX3pvb21fdGV4dF9vbmx5X2dldCk6Ci0gICAgICAgIChld2tfZnJhbWVfem9vbV90ZXh0
X29ubHlfc2V0KToKLSAgICAgICAgKGV3a19mcmFtZV9oaXRfdGVzdF9mcmVlKToKLSAgICAgICAg
KGV3a19mcmFtZV9oaXRfdGVzdF9uZXcpOgotICAgICAgICAoZXdrX2ZyYW1lX3Njcm9sbF9hZGQp
OgotICAgICAgICAoZXdrX2ZyYW1lX3Njcm9sbF9zZXQpOgotICAgICAgICAoZXdrX2ZyYW1lX3Nj
cm9sbF9zaXplX2dldCk6Ci0gICAgICAgIChld2tfZnJhbWVfc2Nyb2xsX3Bvc19nZXQpOgotICAg
ICAgICAoZXdrX2ZyYW1lX3Zpc2libGVfY29udGVudF9nZW9tZXRyeV9nZXQpOgotICAgICAgICAo
ZXdrX2ZyYW1lX3BhaW50X2Z1bGxfZ2V0KToKLSAgICAgICAgKGV3a19mcmFtZV9wYWludF9mdWxs
X3NldCk6Ci0gICAgICAgIChld2tfZnJhbWVfZmVlZF9mb2N1c19pbik6Ci0gICAgICAgIChld2tf
ZnJhbWVfZmVlZF9mb2N1c19vdXQpOgotICAgICAgICAoZXdrX2ZyYW1lX2ZlZWRfbW91c2Vfd2hl
ZWwpOgotICAgICAgICAoZXdrX2ZyYW1lX2ZlZWRfbW91c2VfZG93bik6Ci0gICAgICAgIChld2tf
ZnJhbWVfZmVlZF9tb3VzZV91cCk6Ci0gICAgICAgIChld2tfZnJhbWVfZmVlZF9tb3VzZV9tb3Zl
KToKLSAgICAgICAgKGV3a19mcmFtZV9mZWVkX3RvdWNoX2V2ZW50KToKLSAgICAgICAgKF9ld2tf
ZnJhbWVfaGFuZGxlX2tleV9zY3JvbGxpbmcpOgotICAgICAgICAoZXdrX2ZyYW1lX2ZlZWRfa2V5
X2Rvd24pOgotICAgICAgICAoZXdrX2ZyYW1lX2ZlZWRfa2V5X3VwKToKLSAgICAgICAgKGV3a19m
cmFtZV90ZXh0X3NlbGVjdGlvbl90eXBlX2dldCk6Ci0gICAgICAgIChld2tfZnJhbWVfYWRkKToK
LSAgICAgICAgKGV3a19mcmFtZV9pbml0KToKLSAgICAgICAgKGV3a19mcmFtZV9jaGlsZF9hZGQp
OgotICAgICAgICAoZXdrX2ZyYW1lX2NvcmVfZ29uZSk6Ci0gICAgICAgIChld2tfZnJhbWVfY29y
ZV9nZXQpOgotICAgICAgICAoZXdrX2ZyYW1lX2xvYWRfc3RhcnRlZCk6Ci0gICAgICAgIChld2tf
ZnJhbWVfbG9hZF9wcm92aXNpb25hbCk6Ci0gICAgICAgIChld2tfZnJhbWVfbG9hZF9maW5pc2hl
ZCk6Ci0gICAgICAgIChld2tfZnJhbWVfbG9hZF9lcnJvcik6Ci0gICAgICAgIChld2tfZnJhbWVf
bG9hZF9wcm9ncmVzc19jaGFuZ2VkKToKLSAgICAgICAgKGV3a19mcmFtZV9jb250ZW50c19zaXpl
X2NoYW5nZWQpOgotICAgICAgICAoZXdrX2ZyYW1lX3RpdGxlX3NldCk6Ci0gICAgICAgIChld2tf
ZnJhbWVfdmlld19jcmVhdGVfZm9yX3ZpZXcpOgotICAgICAgICAoZXdrX2ZyYW1lX3VyaV9jaGFu
Z2VkKToKLSAgICAgICAgKGV3a19mcmFtZV9mb3JjZV9sYXlvdXQpOgotICAgICAgICAoZXdrX2Zy
YW1lX3BsdWdpbl9jcmVhdGUpOgotICAgICAgICAoZXdrX2ZyYW1lX2VkaXRvcl9jbGllbnRfc2Vs
ZWN0aW9uX2NoYW5nZWQpOgotICAgICAgICAqIGV3ay9ld2tfZnJhbWUuaDoKLQotMjAxMS0wNy0y
NyAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtF
RkxdIEFkZCBkdW1teSBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwKLSAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0MDY0Ci0KLSAgICAgICAgQWRk
IGR1bW15IGZpbGVzIGZvciBIVE1MNSBOb3RpZmljYXRpb24uIEFuZCBhbHNvLCBub3RpZmljYXRp
b25QcmVzZW50ZXIoKSBpcyBhZGRlZCB0bwotICAgICAgICBDaHJvbWVDbGllbnRFZmwuIFdpdGhv
dXQgdGhpcyBmdW5jdGlvbiBpbXBsZW1lbnRlZCwgdGhlcmUgd291bGQgYmUgYSBidWlsZCBicmVh
ayB3aGVuCi0gICAgICAgIEVOQUJMRV9OT1RJRklDQVRJT04gaXMgZW5hYmxlZC4KLQotICAgICAg
ICBSZXZpZXdlZCBieSBBbnRvbmlvIEdvbWVzLgotCi0gICAgICAgICogQ01ha2VMaXN0c0VmbC50
eHQ6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcDoKLSAgICAg
ICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEVmbDo6bm90aWZpY2F0aW9uUHJlc2VudGVyKToKLSAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuaDoKLSAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwuY3BwOiBBZGRlZC4KLSAg
ICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6Tm90aWZpY2F0
aW9uUHJlc2VudGVyQ2xpZW50RWZsKToKLSAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblBy
ZXNlbnRlckNsaWVudEVmbDo6fk5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbCk6Ci0gICAg
ICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6OnNob3cpOgotICAg
ICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpjYW5jZWwpOgot
ICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpub3RpZmlj
YXRpb25PYmplY3REZXN0cm95ZWQpOgotICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJl
c2VudGVyQ2xpZW50RWZsOjpyZXF1ZXN0UGVybWlzc2lvbik6Ci0gICAgICAgIChXZWJDb3JlOjpO
b3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6OmNoZWNrUGVybWlzc2lvbik6Ci0gICAgICAg
IChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6OmNhbmNlbFJlcXVlc3Rz
Rm9yUGVybWlzc2lvbik6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJl
c2VudGVyQ2xpZW50RWZsLmg6IEFkZGVkLgotCi0yMDExLTA3LTI2ICBHeXV5b3VuZyBLaW0gIDxn
eXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW0VGTF0gRml4IHBvaW50ZXIgb3Bl
cmF0b3IgY29kaW5nIHN0eWxlIGluIGV3a192aWV3LgotICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjUxNjMKLQotICAgICAgICBNb3ZlICcqJyBvcGVyYXRv
ciB0byB2YXJpYWJsZSBhY2NvcmRpbmcgdG8gZWZsIGNvZGluZyBzdHlsZS4gSW4gYWRkaXRpb24s
Ci0gICAgICAgIGFkZCBhIHNwYWNlIGJldHdlZW4gKiBhbmQgdmFyaWFibGUgaW4gdHlwZSBjYXN0
aW5nLgotCi0gICAgICAgIFJldmlld2VkIGJ5IEtlbnQgVGFtdXJhLgotCi0gICAgICAgICogZXdr
L2V3a192aWV3LmNwcDoKLSAgICAgICAgKF9ld2tfdmlld19zbWFydF9jaGFuZ2VkKToKLSAgICAg
ICAgKF9ld2tfdmlld19yZXBhaW50c19yZXNpemUpOgotICAgICAgICAoX2V3a192aWV3X3JlcGFp
bnRfYWRkKToKLSAgICAgICAgKF9ld2tfdmlld19yZXBhaW50c19mbHVzaCk6Ci0gICAgICAgIChf
ZXdrX3ZpZXdfc2Nyb2xsc19yZXNpemUpOgotICAgICAgICAoX2V3a192aWV3X3Njcm9sbF9hZGQp
OgotICAgICAgICAoX2V3a192aWV3X3Njcm9sbHNfZmx1c2gpOgotICAgICAgICAoX2V3a192aWV3
X3NtYXJ0X2ZvY3VzX2luKToKLSAgICAgICAgKF9ld2tfdmlld19zbWFydF9mb2N1c19vdXQpOgot
ICAgICAgICAoX2V3a192aWV3X3NtYXJ0X21vdXNlX3doZWVsKToKLSAgICAgICAgKF9ld2tfdmll
d19zbWFydF9tb3VzZV9kb3duKToKLSAgICAgICAgKF9ld2tfdmlld19zbWFydF9tb3VzZV91cCk6
Ci0gICAgICAgIChfZXdrX3ZpZXdfc21hcnRfbW91c2VfbW92ZSk6Ci0gICAgICAgIChfZXdrX3Zp
ZXdfc21hcnRfa2V5X2Rvd24pOgotICAgICAgICAoX2V3a192aWV3X3NtYXJ0X2tleV91cCk6Ci0g
ICAgICAgIChfZXdrX3ZpZXdfc21hcnRfYWRkX2NvbnNvbGVfbWVzc2FnZSk6Ci0gICAgICAgIChf
ZXdrX3ZpZXdfc21hcnRfcnVuX2phdmFzY3JpcHRfYWxlcnQpOgotICAgICAgICAoX2V3a192aWV3
X3NtYXJ0X3J1bl9qYXZhc2NyaXB0X2NvbmZpcm0pOgotICAgICAgICAoX2V3a192aWV3X3NtYXJ0
X3Nob3VsZF9pbnRlcnJ1cHRfamF2YXNjcmlwdCk6Ci0gICAgICAgIChfZXdrX3ZpZXdfc21hcnRf
cnVuX2phdmFzY3JpcHRfcHJvbXB0KToKLSAgICAgICAgKF9ld2tfdmlld19vbl9mb2N1c19pbik6
Ci0gICAgICAgIChfZXdrX3ZpZXdfb25fZm9jdXNfb3V0KToKLSAgICAgICAgKF9ld2tfdmlld19v
bl9tb3VzZV93aGVlbCk6Ci0gICAgICAgIChfZXdrX3ZpZXdfb25fbW91c2VfZG93bik6Ci0gICAg
ICAgIChfZXdrX3ZpZXdfb25fbW91c2VfdXApOgotICAgICAgICAoX2V3a192aWV3X29uX21vdXNl
X21vdmUpOgotICAgICAgICAoX2V3a192aWV3X29uX2tleV9kb3duKToKLSAgICAgICAgKF9ld2tf
dmlld19vbl9rZXlfdXApOgotICAgICAgICAoX2V3a192aWV3X2NvcmVfZnJhbWVfbmV3KToKLSAg
ICAgICAgKF9ld2tfdmlld19wcml2X25ldyk6Ci0gICAgICAgIChfZXdrX3ZpZXdfcHJpdl9kZWwp
OgotICAgICAgICAoX2V3a192aWV3X3NtYXJ0X2FkZCk6Ci0gICAgICAgIChfZXdrX3ZpZXdfc21h
cnRfZGVsKToKLSAgICAgICAgKF9ld2tfdmlld19zbWFydF9yZXNpemUpOgotICAgICAgICAoX2V3
a192aWV3X3NtYXJ0X21vdmUpOgotICAgICAgICAoX2V3a192aWV3X3NtYXJ0X2NhbGN1bGF0ZSk6
Ci0gICAgICAgIChfZXdrX3ZpZXdfc21hcnRfY29udGVudHNfcmVzaXplKToKLSAgICAgICAgKF9l
d2tfdmlld19zbWFydF96b29tX3NldCk6Ci0gICAgICAgIChfZXdrX3ZpZXdfc21hcnRfZmx1c2gp
OgotICAgICAgICAoX2V3a192aWV3X3NtYXJ0X3ByZV9yZW5kZXJfcmVnaW9uKToKLSAgICAgICAg
KF9ld2tfdmlld19zbWFydF9wcmVfcmVuZGVyX3JlbGF0aXZlX3JhZGl1cyk6Ci0gICAgICAgIChf
ZXdrX3ZpZXdfc21hcnRfcHJlX3JlbmRlcl9jYW5jZWwpOgotICAgICAgICAoX2V3a192aWV3X3pv
b21fYW5pbWF0ZWRfbWFya19zdG9wKToKLSAgICAgICAgKF9ld2tfdmlld196b29tX2FuaW1hdGVk
X2ZpbmlzaCk6Ci0gICAgICAgIChfZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9jdXJyZW50KToKLSAg
ICAgICAgKF9ld2tfdmlld196b29tX2FuaW1hdG9yX2NiKToKLSAgICAgICAgKF9ld2tfdmlld196
b29tX2FuaW1hdGlvbl9zdGFydCk6Ci0gICAgICAgIChfZXdrX3ZpZXdfdmlld3BvcnRfYXR0cmli
dXRlc19jb21wdXRlKToKLSAgICAgICAgKGV3a192aWV3X2Jhc2Vfc21hcnRfc2V0KToKLSAgICAg
ICAgKGV3a192aWV3X2ZpeGVkX2xheW91dF9zaXplX3NldCk6Ci0gICAgICAgIChld2tfdmlld19m
aXhlZF9sYXlvdXRfc2l6ZV9nZXQpOgotICAgICAgICAoZXdrX3ZpZXdfdGhlbWVfc2V0KToKLSAg
ICAgICAgKGV3a192aWV3X3RoZW1lX2dldCk6Ci0gICAgICAgIChld2tfdmlld19mcmFtZV9tYWlu
X2dldCk6Ci0gICAgICAgIChld2tfdmlld19mcmFtZV9mb2N1c2VkX2dldCk6Ci0gICAgICAgIChl
d2tfdmlld191cmlfc2V0KToKLSAgICAgICAgKGV3a192aWV3X3VyaV9nZXQpOgotICAgICAgICAo
ZXdrX3ZpZXdfdGl0bGVfZ2V0KToKLSAgICAgICAgKGV3a192aWV3X2VkaXRhYmxlX2dldCk6Ci0g
ICAgICAgIChld2tfdmlld19iZ19jb2xvcl9zZXQpOgotICAgICAgICAoZXdrX3ZpZXdfYmdfY29s
b3JfZ2V0KToKLSAgICAgICAgKGV3a192aWV3X3RleHRfc2VhcmNoKToKLSAgICAgICAgKGV3a192
aWV3X3RleHRfbWF0Y2hlc19tYXJrKToKLSAgICAgICAgKGV3a192aWV3X3RleHRfbWF0Y2hlc191
bm1hcmtfYWxsKToKLSAgICAgICAgKGV3a192aWV3X3RleHRfbWF0Y2hlc19oaWdobGlnaHRfc2V0
KToKLSAgICAgICAgKGV3a192aWV3X3RleHRfbWF0Y2hlc19oaWdobGlnaHRfZ2V0KToKLSAgICAg
ICAgKGV3a192aWV3X2VkaXRhYmxlX3NldCk6Ci0gICAgICAgIChld2tfdmlld19zZWxlY3Rpb25f
Z2V0KToKLSAgICAgICAgKF9ld2tfdmlld19lZGl0b3JfY29tbWFuZCk6Ci0gICAgICAgIChld2tf
dmlld19leGVjdXRlX2VkaXRvcl9jb21tYW5kKToKLSAgICAgICAgKGV3a192aWV3X2NvbnRleHRf
bWVudV9mb3J3YXJkX2V2ZW50KToKLSAgICAgICAgKGV3a192aWV3X2xvYWRfcHJvZ3Jlc3NfZ2V0
KToKLSAgICAgICAgKGV3a192aWV3X3N0b3ApOgotICAgICAgICAoZXdrX3ZpZXdfcmVsb2FkKToK
LSAgICAgICAgKGV3a192aWV3X3JlbG9hZF9mdWxsKToKLSAgICAgICAgKGV3a192aWV3X2JhY2sp
OgotICAgICAgICAoZXdrX3ZpZXdfZm9yd2FyZCk6Ci0gICAgICAgIChld2tfdmlld19uYXZpZ2F0
ZSk6Ci0gICAgICAgIChld2tfdmlld19iYWNrX3Bvc3NpYmxlKToKLSAgICAgICAgKGV3a192aWV3
X2ZvcndhcmRfcG9zc2libGUpOgotICAgICAgICAoZXdrX3ZpZXdfbmF2aWdhdGVfcG9zc2libGUp
OgotICAgICAgICAoZXdrX3ZpZXdfaGlzdG9yeV9lbmFibGVfZ2V0KToKLSAgICAgICAgKGV3a192
aWV3X2hpc3RvcnlfZW5hYmxlX3NldCk6Ci0gICAgICAgIChld2tfdmlld19oaXN0b3J5X2dldCk6
Ci0gICAgICAgIChld2tfdmlld196b29tX2dldCk6Ci0gICAgICAgIChld2tfdmlld196b29tX3Nl
dCk6Ci0gICAgICAgIChld2tfdmlld196b29tX3dlYWtfc21vb3RoX3NjYWxlX2dldCk6Ci0gICAg
ICAgIChld2tfdmlld196b29tX3dlYWtfc21vb3RoX3NjYWxlX3NldCk6Ci0gICAgICAgIChld2tf
dmlld196b29tX3dlYWtfc2V0KToKLSAgICAgICAgKGV3a192aWV3X3pvb21fYW5pbWF0ZWRfbWFy
a19zdGFydCk6Ci0gICAgICAgIChld2tfdmlld196b29tX2FuaW1hdGVkX21hcmtfZW5kKToKLSAg
ICAgICAgKGV3a192aWV3X3pvb21fYW5pbWF0ZWRfbWFya19jdXJyZW50KToKLSAgICAgICAgKGV3
a192aWV3X3pvb21fYW5pbWF0ZWRfbWFya19zdG9wKToKLSAgICAgICAgKGV3a192aWV3X3pvb21f
YW5pbWF0ZWRfc2V0KToKLSAgICAgICAgKGV3a192aWV3X3pvb21fdGV4dF9vbmx5X2dldCk6Ci0g
ICAgICAgIChld2tfdmlld196b29tX3RleHRfb25seV9zZXQpOgotICAgICAgICAoZXdrX3ZpZXdf
cHJlX3JlbmRlcl9yZWdpb24pOgotICAgICAgICAoZXdrX3ZpZXdfcHJlX3JlbmRlcl9yZWxhdGl2
ZV9yYWRpdXMpOgotICAgICAgICAoZXdrX3ZpZXdfcHJlX3JlbmRlcl9jYW5jZWwpOgotICAgICAg
ICAoZXdrX3ZpZXdfc2V0dGluZ191c2VyX2FnZW50X2dldCk6Ci0gICAgICAgIChld2tfdmlld19z
ZXR0aW5nX3VzZXJfYWdlbnRfc2V0KToKLSAgICAgICAgKGV3a192aWV3X3NldHRpbmdfdXNlcl9z
dHlsZXNoZWV0X2dldCk6Ci0gICAgICAgIChld2tfdmlld19zZXR0aW5nX3VzZXJfc3R5bGVzaGVl
dF9zZXQpOgotICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19hdXRvX2xvYWRfaW1hZ2VzX2dldCk6
Ci0gICAgICAgIChld2tfdmlld19zZXR0aW5nX2F1dG9fbG9hZF9pbWFnZXNfc2V0KToKLSAgICAg
ICAgKGV3a192aWV3X3NldHRpbmdfYXV0b19zaHJpbmtfaW1hZ2VzX2dldCk6Ci0gICAgICAgIChl
d2tfdmlld19zZXR0aW5nX2F1dG9fc2hyaW5rX2ltYWdlc19zZXQpOgotICAgICAgICAoZXdrX3Zp
ZXdfc2V0dGluZ19lbmFibGVfYXV0b19yZXNpemVfd2luZG93X2dldCk6Ci0gICAgICAgIChld2tf
dmlld19zZXR0aW5nX2VuYWJsZV9hdXRvX3Jlc2l6ZV93aW5kb3dfc2V0KToKLSAgICAgICAgKGV3
a192aWV3X3NldHRpbmdfZW5hYmxlX3NjcmlwdHNfZ2V0KToKLSAgICAgICAgKGV3a192aWV3X3Nl
dHRpbmdfZW5hYmxlX3NjcmlwdHNfc2V0KToKLSAgICAgICAgKGV3a192aWV3X3NldHRpbmdfZW5h
YmxlX3BsdWdpbnNfZ2V0KToKLSAgICAgICAgKGV3a192aWV3X3NldHRpbmdfZW5hYmxlX3BsdWdp
bnNfc2V0KToKLSAgICAgICAgKGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5p
bmdfZ2V0KToKLSAgICAgICAgKGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5p
bmdfc2V0KToKLSAgICAgICAgKGV3a192aWV3X3NldHRpbmdfc2NyaXB0c193aW5kb3dfb3Blbl9n
ZXQpOgotICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19zY3JpcHRzX3dpbmRvd19vcGVuX3NldCk6
Ci0gICAgICAgIChld2tfdmlld19zZXR0aW5nX3Jlc2l6YWJsZV90ZXh0YXJlYXNfZ2V0KToKLSAg
ICAgICAgKGV3a192aWV3X3NldHRpbmdfcmVzaXphYmxlX3RleHRhcmVhc19zZXQpOgotICAgICAg
ICAoZXdrX3ZpZXdfc2V0dGluZ19wcml2YXRlX2Jyb3dzaW5nX2dldCk6Ci0gICAgICAgIChld2tf
dmlld19zZXR0aW5nX3ByaXZhdGVfYnJvd3Npbmdfc2V0KToKLSAgICAgICAgKGV3a192aWV3X3Nl
dHRpbmdfb2ZmbGluZV9hcHBfY2FjaGVfZ2V0KToKLSAgICAgICAgKGV3a192aWV3X3NldHRpbmdf
b2ZmbGluZV9hcHBfY2FjaGVfc2V0KToKLSAgICAgICAgKGV3a192aWV3X3NldHRpbmdfY2FyZXRf
YnJvd3NpbmdfZ2V0KToKLSAgICAgICAgKGV3a192aWV3X3NldHRpbmdfY2FyZXRfYnJvd3Npbmdf
c2V0KToKLSAgICAgICAgKGV3a192aWV3X3NldHRpbmdfZW5jb2RpbmdfY3VzdG9tX2dldCk6Ci0g
ICAgICAgIChld2tfdmlld19zZXR0aW5nX2VuY29kaW5nX2N1c3RvbV9zZXQpOgotICAgICAgICAo
ZXdrX3ZpZXdfc2V0dGluZ19lbmNvZGluZ19kZWZhdWx0X2dldCk6Ci0gICAgICAgIChld2tfdmll
d19zZXR0aW5nX2VuY29kaW5nX2RlZmF1bHRfc2V0KToKLSAgICAgICAgKGV3a192aWV3X3NldHRp
bmdfZW5jb2RpbmdfZGV0ZWN0b3Jfc2V0KToKLSAgICAgICAgKGV3a192aWV3X3NldHRpbmdfZW5j
b2RpbmdfZGV0ZWN0b3JfZ2V0KToKLSAgICAgICAgKGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2Rl
dmVsb3Blcl9leHRyYXNfZ2V0KToKLSAgICAgICAgKGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2Rl
dmVsb3Blcl9leHRyYXNfc2V0KToKLSAgICAgICAgKGV3a192aWV3X3NldHRpbmdfZm9udF9taW5p
bXVtX3NpemVfZ2V0KToKLSAgICAgICAgKGV3a192aWV3X3NldHRpbmdfZm9udF9taW5pbXVtX3Np
emVfc2V0KToKLSAgICAgICAgKGV3a192aWV3X3NldHRpbmdfZm9udF9taW5pbXVtX2xvZ2ljYWxf
c2l6ZV9nZXQpOgotICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19mb250X21pbmltdW1fbG9naWNh
bF9zaXplX3NldCk6Ci0gICAgICAgIChld2tfdmlld19zZXR0aW5nX2ZvbnRfZGVmYXVsdF9zaXpl
X2dldCk6Ci0gICAgICAgIChld2tfdmlld19zZXR0aW5nX2ZvbnRfZGVmYXVsdF9zaXplX3NldCk6
Ci0gICAgICAgIChld2tfdmlld19zZXR0aW5nX2ZvbnRfbW9ub3NwYWNlX3NpemVfZ2V0KToKLSAg
ICAgICAgKGV3a192aWV3X3NldHRpbmdfZm9udF9tb25vc3BhY2Vfc2l6ZV9zZXQpOgotICAgICAg
ICAoZXdrX3ZpZXdfc2V0dGluZ19mb250X3N0YW5kYXJkX2dldCk6Ci0gICAgICAgIChld2tfdmll
d19zZXR0aW5nX2ZvbnRfc3RhbmRhcmRfc2V0KToKLSAgICAgICAgKGV3a192aWV3X3NldHRpbmdf
Zm9udF9jdXJzaXZlX2dldCk6Ci0gICAgICAgIChld2tfdmlld19zZXR0aW5nX2ZvbnRfY3Vyc2l2
ZV9zZXQpOgotICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19mb250X2ZhbnRhc3lfZ2V0KToKLSAg
ICAgICAgKGV3a192aWV3X3NldHRpbmdfZm9udF9mYW50YXN5X3NldCk6Ci0gICAgICAgIChld2tf
dmlld19zZXR0aW5nX2ZvbnRfbW9ub3NwYWNlX2dldCk6Ci0gICAgICAgIChld2tfdmlld19zZXR0
aW5nX2ZvbnRfbW9ub3NwYWNlX3NldCk6Ci0gICAgICAgIChld2tfdmlld19zZXR0aW5nX2ZvbnRf
c2VyaWZfZ2V0KToKLSAgICAgICAgKGV3a192aWV3X3NldHRpbmdfZm9udF9zZXJpZl9zZXQpOgot
ICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19mb250X3NhbnNfc2VyaWZfZ2V0KToKLSAgICAgICAg
KGV3a192aWV3X3NldHRpbmdfZm9udF9zYW5zX3NlcmlmX3NldCk6Ci0gICAgICAgIChld2tfdmll
d19zZXR0aW5nX3NwYXRpYWxfbmF2aWdhdGlvbl9nZXQpOgotICAgICAgICAoZXdrX3ZpZXdfc2V0
dGluZ19zcGF0aWFsX25hdmlnYXRpb25fc2V0KToKLSAgICAgICAgKGV3a192aWV3X3NldHRpbmdf
bG9jYWxfc3RvcmFnZV9nZXQpOgotICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19sb2NhbF9zdG9y
YWdlX3NldCk6Ci0gICAgICAgIChld2tfdmlld19zZXR0aW5nX3BhZ2VfY2FjaGVfZ2V0KToKLSAg
ICAgICAgKGV3a192aWV3X3NldHRpbmdfcGFnZV9jYWNoZV9zZXQpOgotICAgICAgICAoZXdrX3Zp
ZXdfc2V0dGluZ19sb2NhbF9zdG9yYWdlX2RhdGFiYXNlX3BhdGhfZ2V0KToKLSAgICAgICAgKGV3
a192aWV3X3NldHRpbmdfbG9jYWxfc3RvcmFnZV9kYXRhYmFzZV9wYXRoX3NldCk6Ci0gICAgICAg
IChld2tfdmlld19zbWFydF9kYXRhX2dldCk6Ci0gICAgICAgIChld2tfdmlld19yZXBhaW50c19n
ZXQpOgotICAgICAgICAoZXdrX3ZpZXdfc2Nyb2xsX3JlcXVlc3RzX2dldCk6Ci0gICAgICAgIChl
d2tfdmlld19yZXBhaW50X2FkZCk6Ci0gICAgICAgIChld2tfdmlld19sYXlvdXRfaWZfbmVlZGVk
X3JlY3Vyc2l2ZSk6Ci0gICAgICAgIChld2tfdmlld19zY3JvbGxzX3Byb2Nlc3MpOgotICAgICAg
ICAoZXdrX3ZpZXdfcGFpbnRfY29udGV4dF9uZXcpOgotICAgICAgICAoZXdrX3ZpZXdfcGFpbnRf
Y29udGV4dF9mcmVlKToKLSAgICAgICAgKGV3a192aWV3X3BhaW50X2NvbnRleHRfc2F2ZSk6Ci0g
ICAgICAgIChld2tfdmlld19wYWludF9jb250ZXh0X3Jlc3RvcmUpOgotICAgICAgICAoZXdrX3Zp
ZXdfcGFpbnRfY29udGV4dF9jbGlwKToKLSAgICAgICAgKGV3a192aWV3X3BhaW50X2NvbnRleHRf
cGFpbnQpOgotICAgICAgICAoZXdrX3ZpZXdfcGFpbnRfY29udGV4dF9wYWludF9jb250ZW50cyk6
Ci0gICAgICAgIChld2tfdmlld19wYWludF9jb250ZXh0X3NjYWxlKToKLSAgICAgICAgKGV3a192
aWV3X3BhaW50X2NvbnRleHRfdHJhbnNsYXRlKToKLSAgICAgICAgKGV3a192aWV3X3BhaW50KToK
LSAgICAgICAgKGV3a192aWV3X3BhaW50X2NvbnRlbnRzKToKLSAgICAgICAgKGV3a192aWV3X3Jl
YWR5KToKLSAgICAgICAgKGV3a192aWV3X2lucHV0X21ldGhvZF9zdGF0ZV9zZXQpOgotICAgICAg
ICAoZXdrX3ZpZXdfdGl0bGVfc2V0KToKLSAgICAgICAgKGV3a192aWV3X3VyaV9jaGFuZ2VkKToK
LSAgICAgICAgKGV3a192aWV3X2xvYWRfc3RhcnRlZCk6Ci0gICAgICAgIChld2tfdmlld19mcmFt
ZV9tYWluX2xvYWRfc3RhcnRlZCk6Ci0gICAgICAgIChld2tfdmlld19sb2FkX3Byb3Zpc2lvbmFs
KToKLSAgICAgICAgKGV3a192aWV3X2xvYWRfc2hvdyk6Ci0gICAgICAgIChld2tfdmlld19mcmFt
ZV9tYWluX2NsZWFyZWQpOgotICAgICAgICAoZXdrX3ZpZXdfZnJhbWVfbWFpbl9pY29uX3JlY2Vp
dmVkKToKLSAgICAgICAgKGV3a192aWV3X2xvYWRfZmluaXNoZWQpOgotICAgICAgICAoZXdrX3Zp
ZXdfbG9hZF9lcnJvcik6Ci0gICAgICAgIChld2tfdmlld19sb2FkX3Byb2dyZXNzX2NoYW5nZWQp
OgotICAgICAgICAoZXdrX3ZpZXdfcmVzdG9yZV9zdGF0ZSk6Ci0gICAgICAgIChld2tfdmlld193
aW5kb3dfY3JlYXRlKToKLSAgICAgICAgKGV3a192aWV3X3dpbmRvd19jbG9zZSk6Ci0gICAgICAg
IChld2tfdmlld19tb3VzZV9saW5rX2hvdmVyX2luKToKLSAgICAgICAgKGV3a192aWV3X21vdXNl
X2xpbmtfaG92ZXJfb3V0KToKLSAgICAgICAgKGV3a192aWV3X3Rvb2xiYXJzX3Zpc2libGVfc2V0
KToKLSAgICAgICAgKGV3a192aWV3X3Rvb2xiYXJzX3Zpc2libGVfZ2V0KToKLSAgICAgICAgKGV3
a192aWV3X3N0YXR1c2Jhcl92aXNpYmxlX3NldCk6Ci0gICAgICAgIChld2tfdmlld19zdGF0dXNi
YXJfdmlzaWJsZV9nZXQpOgotICAgICAgICAoZXdrX3ZpZXdfc3RhdHVzYmFyX3RleHRfc2V0KToK
LSAgICAgICAgKGV3a192aWV3X3Njcm9sbGJhcnNfdmlzaWJsZV9zZXQpOgotICAgICAgICAoZXdr
X3ZpZXdfc2Nyb2xsYmFyc192aXNpYmxlX2dldCk6Ci0gICAgICAgIChld2tfdmlld19tZW51YmFy
X3Zpc2libGVfc2V0KToKLSAgICAgICAgKGV3a192aWV3X21lbnViYXJfdmlzaWJsZV9nZXQpOgot
ICAgICAgICAoZXdrX3ZpZXdfdG9vbHRpcF90ZXh0X3NldCk6Ci0gICAgICAgIChld2tfdmlld19h
ZGRfY29uc29sZV9tZXNzYWdlKToKLSAgICAgICAgKGV3a192aWV3X3J1bl9qYXZhc2NyaXB0X2Fs
ZXJ0KToKLSAgICAgICAgKGV3a192aWV3X3J1bl9qYXZhc2NyaXB0X2NvbmZpcm0pOgotICAgICAg
ICAoZXdrX3ZpZXdfcnVuX2phdmFzY3JpcHRfcHJvbXB0KToKLSAgICAgICAgKGV3a192aWV3X3No
b3VsZF9pbnRlcnJ1cHRfamF2YXNjcmlwdCk6Ci0gICAgICAgIChld2tfdmlld19leGNlZWRlZF9k
YXRhYmFzZV9xdW90YSk6Ci0gICAgICAgIChld2tfdmlld19ydW5fb3Blbl9wYW5lbCk6Ci0gICAg
ICAgIChld2tfdmlld19yZXBhaW50KToKLSAgICAgICAgKGV3a192aWV3X3Njcm9sbCk6Ci0gICAg
ICAgIChld2tfdmlld19jb3JlX3BhZ2VfZ2V0KToKLSAgICAgICAgKGV3a192aWV3X2ZyYW1lX2Ny
ZWF0ZSk6Ci0gICAgICAgIChld2tfdmlld19wbHVnaW5fY3JlYXRlKToKLSAgICAgICAgKGV3a192
aWV3X3BvcHVwX25ldyk6Ci0gICAgICAgIChld2tfdmlld19wb3B1cF9kZXN0cm95KToKLSAgICAg
ICAgKGV3a192aWV3X3BvcHVwX3NlbGVjdGVkX3NldCk6Ci0gICAgICAgIChld2tfdmlld19kb3du
bG9hZF9yZXF1ZXN0KToKLSAgICAgICAgKGV3a192aWV3X3ZpZXdwb3J0X2F0dHJpYnV0ZXNfc2V0
KToKLSAgICAgICAgKGV3a192aWV3X3ZpZXdwb3J0X2F0dHJpYnV0ZXNfZ2V0KToKLSAgICAgICAg
KGV3a192aWV3X3pvb21fcmFuZ2Vfc2V0KToKLSAgICAgICAgKGV3a192aWV3X3pvb21fcmFuZ2Vf
bWluX2dldCk6Ci0gICAgICAgIChld2tfdmlld196b29tX3JhbmdlX21heF9nZXQpOgotICAgICAg
ICAoZXdrX3ZpZXdfdXNlcl9zY2FsYWJsZV9zZXQpOgotICAgICAgICAoZXdrX3ZpZXdfdXNlcl9z
Y2FsYWJsZV9nZXQpOgotICAgICAgICAoZXdrX3ZpZXdfZGV2aWNlX3BpeGVsX3JhdGlvX2dldCk6
Ci0gICAgICAgIChld2tfdmlld19uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbik6Ci0gICAgICAg
IChld2tfdmlld19wYWdlX3JlY3RfZ2V0KToKLSAgICAgICAgKGV3a192aWV3X25lZWRfdG91Y2hf
ZXZlbnRzX3NldCk6Ci0gICAgICAgIChld2tfdmlld19uZWVkX3RvdWNoX2V2ZW50c19nZXQpOgot
ICAgICAgICAoZXdrX3ZpZXdfbW9kZV9zZXQpOgotICAgICAgICAoZXdrX3ZpZXdfbW9kZV9nZXQp
OgotICAgICAgICAoZXdrX3ZpZXdfZWRpdG9yX2NsaWVudF9zZWxlY3Rpb25fY2hhbmdlZCk6Ci0g
ICAgICAgICogZXdrL2V3a192aWV3Lmg6Ci0KLTIwMTEtMDctMjYgIFNhZHJ1bCBIYWJpYiBDaG93
ZGh1cnkgIDxzYWRydWxAY2hyb21pdW0ub3JnPgotCi0gICAgICAgIEFkZCBzdXBwb3J0IGZvciBk
b3dubG9hZD0nZmlsZW5hbWUnIGF0dHJpYnV0ZSBpbiBhbmNob3JzLgotICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQ1ODAKLQotICAgICAgICBSZXZpZXdl
ZCBieSBBZGFtIEJhcnRoLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OnN0
YXJ0RG93bmxvYWQpOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
RWZsLmg6Ci0KLTIwMTEtMDctMjUgIEp1bmdKaWsgTGVlICA8anVuZ2ppay5sZWVAc2Ftc3VuZy5j
b20+Ci0KLSAgICAgICAgW0VGTF0gUmVtb3ZlIHVudXNlZCBjb2RlIGluIGV3a190aWxlX21vZGVs
LmMKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0NTIx
Ci0KLSAgICAgICAgUmVtb3ZlIHVudXNlZCBjb2RlIGluIGV3a190aWxlX21vZGVsLmMuIERpcnR5
IGZsYWcgaXMgbm90IHJlZmVyZW5jZWQgYW55d2hlcmUuCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkg
RGFuaWVsIEJhdGVzLgotCi0gICAgICAgICogZXdrL2V3a190aWxlZF9tb2RlbC5jOgotICAgICAg
ICAoZXdrX3RpbGVfdW51c2VkX2NhY2hlX2NsZWFyKToKLSAgICAgICAgKGV3a190aWxlX3VudXNl
ZF9jYWNoZV9mbHVzaCk6Ci0gICAgICAgIChld2tfdGlsZV91bnVzZWRfY2FjaGVfdGlsZV9nZXQp
OgotICAgICAgICAoZXdrX3RpbGVfdW51c2VkX2NhY2hlX3RpbGVfcHV0KToKLQotMjAxMS0wNy0y
NSAgR3J6ZWdvcnogQ3phamtvd3NraSAgPGcuY3phamtvd3NraUBzYW1zdW5nLmNvbT4KLQotICAg
ICAgICBbRUZMXSBNb3ZlIG1hY3JvIGNoZWNraW5nIGluc2lkZSBld2tfdmlld19jb250ZXh0X21l
bnVfZm9yd2FyZF9ldmVudAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NjQ2ODIKLQotICAgICAgICBXaGVuIENPTlRFWFRfTUVOVVMgbWFjcm8gaXMgZGlz
YWJsZWQgbWV0aG9kIGV3a192aWV3X2NvbnRleHRfbWVudV9mb3J3YXJkX2V2ZW50IGp1c3QKLSAg
ICAgICAgcmV0dXJucyBFSU5BX0ZBTFNFIGFuZCBpdCBhdm9pZCB1bmRlZmluZWQgcmVmZXJlbmNl
IGR1cmluZyBidWlsZGluZy4KLQotICAgICAgICBSZXZpZXdlZCBieSBLZW50IFRhbXVyYS4KLQot
ICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChld2tfdmlld19jb250ZXh0X21l
bnVfZm9yd2FyZF9ldmVudCk6Ci0KLTIwMTEtMDctMjUgIEdyemVnb3J6IEN6YWprb3dza2kgIDxn
LmN6YWprb3dza2lAc2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW0VGTF0gTWV0aG9kIGV3a19jb250
ZXh0X21lbnVfZGVzdHJveSByZXR1cm5zIEVJTkFfRkFMU0UgaWYgQ09OVEVYVF9NRU5VUyBtYWNy
byBpcyBkaXNhYmxlZAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NjQ2ODMKLQotICAgICAgICBGaXggcmV0dXJuZWQgdmFsdWUgYW5kIG9taXQgTlVMTCBj
aGVja2luZyBpZiBDT05URVhUX01FTlVTIG1hY3JvIGlzIGRpc2FibGVkCi0gICAgICAgIGluIGV3
a19jb250ZXh0X21lbnVfZGVzdHJveS4gCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgS2VudCBUYW11
cmEuCi0KLSAgICAgICAgKiBld2svZXdrX2NvbnRleHRtZW51LmNwcDoKLSAgICAgICAgKGV3a19j
b250ZXh0X21lbnVfZGVzdHJveSk6Ci0KLTIwMTEtMDctMjIgIE1pY2hhbCBQYWt1bGEgdmVsIFJ1
dGthICA8bS5wYWt1bGFAc2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW0VGTF0gZXdrX2ZyYW1lX2hp
dF90ZXN0X25ldyBlbmhhbmNlbWVudAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NjQyNjAKLQotICAgICAgICBSZXBsYWNlcyBzdHJ1Y3R1cmUgJ2ZsYWdz
JyB3aXRoIGVudW0gJ2NvbnRleHQnIGNvbnRhaW5pbmcgbW9yZSBoaXQgdGVzdAotICAgICAgICBy
ZXN1bHQgdHlwZXMgYW5kIGFkZHMgbmV3IGNoYXIqIGZpZWxkcyB0byBFd2tfSGl0X1Rlc3Qgc3Ry
dWN0dXJlOgotICAgICAgICBpbWFnZV91cmkgYW5kIG1lZGlhX3VyaS4KLQotICAgICAgICBSZXZp
ZXdlZCBieSBBbnRvbmlvIEdvbWVzLgotCi0gICAgICAgICogZXdrL2V3a19mcmFtZS5jcHA6Ci0g
ICAgICAgIChld2tfZnJhbWVfaGl0X3Rlc3RfZnJlZSk6Ci0gICAgICAgIChld2tfZnJhbWVfaGl0
X3Rlc3RfbmV3KToKLSAgICAgICAgKiBld2svZXdrX2ZyYW1lLmg6Ci0KLTIwMTEtMDctMTkgIEd5
dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBbRUZMXSBB
ZGQgZXdrX25ldHdvcmsuY3BwfGggZmlsZXMuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD02MzMxNQotCi0gICAgICAgIGV3a19uZXR3b3JrLmNwcHxoIGZp
bGVzIGFyZSBhZGRlZCB0byBld2sgaW4gb3JkZXIgdG8gc3VwcG9ydCBBUElzIHJlbGF0ZWQgdG8g
bmV0d29ya2luZy4KLSAgICAgICAgSW4gYWRkaXRpb24sIGV3a19uZXR3b3JrX3N0YXRlX25vdGlm
aWVyX29ubGluZV9zZXQoKSBpcyBhZGRlZCB0byBld2tfbmV0d29yay5jcHAgaW4gb3JkZXIKLSAg
ICAgICAgdG8gbm90aWZ5IE5ldHdvcmtTdGF0ZU5vdGlmaWVyIG9mIG5ldHdvcmsgc3RhdHVzLgot
Ci0gICAgICAgIFJldmlld2VkIGJ5IEFudG9uaW8gR29tZXMuCi0KLSAgICAgICAgKiBDTWFrZUxp
c3RzRWZsLnR4dDoKLSAgICAgICAgKiBld2svRVdlYktpdC5oOgotICAgICAgICAqIGV3ay9ld2tf
bmV0d29yay5jcHA6IEFkZGVkLgotICAgICAgICAoZXdrX25ldHdvcmtfcHJveHlfdXJpX3NldCk6
Ci0gICAgICAgIChld2tfbmV0d29ya19wcm94eV91cmlfZ2V0KToKLSAgICAgICAgKGV3a19uZXR3
b3JrX3N0YXRlX25vdGlmaWVyX29ubGluZV9zZXQpOgotICAgICAgICAqIGV3ay9ld2tfbmV0d29y
ay5oOgotICAgICAgICAqIGV3ay9ld2tfc2V0dGluZ3MuY3BwOgotICAgICAgICAqIGV3ay9ld2tf
c2V0dGluZ3MuaDoKLQotMjAxMS0wNy0xNSAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29t
PgotCi0gICAgICAgIFJFR1JFU1NJT046IE1vdXNlIGN1cnNvciBkb2VzbuKAmXQgaGlkZSB3aGVu
IGZ1bGwgc2NyZWVuIHZpZGVvIEhVRCBoaWRlcwotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQ2MTUKLQotICAgICAgICBSZXZpZXdlZCBieSBBbmRlcnMg
Q2FybHNzb24uCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3Bw
OgotICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZsOjpzZXRDdXJzb3JIaWRkZW5VbnRp
bE1vdXNlTW92ZXMpOiBBZGRlZCB0aGlzIHN0dWIuCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQv
Q2hyb21lQ2xpZW50RWZsLmg6Ci0KLTIwMTEtMDctMTQgIEphZWh1biBMaW0gIDxsamFlaHVuLmxp
bUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgotCi0gICAg
ICAgIFtFRkxdIFJlbW92ZSBJY29uRGF0YWJhc2UgaW5pdGlhbGl6YXRpb24gaW4gX2V3a19pbml0
X2JvZHkoKQotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NjM0OTEKLQotICAgICAgICBNYWtlIEljb25EYXRhYmFzZSBmZWF0dXJlIG9wdGlvbmFsIGJ5IHJl
bW92aW5nIGl0cyBpbml0aWFsaXphdGlvbiBmcm9tIF9ld2tfaW5pdF9ib2R5KCkuCi0gICAgICAg
IE5vdyBJY29uRGF0YWJhc2UgbXVzdCBiZSBmdWxseSBtYW5hZ2VkIGJ5IGFuIGFwcGxpY2F0aW9u
OgotICAgICAgICBpZiBpdCBkb2Vzbid0IHdhbnQgdG8gdXNlIGl0LCB0aGVyZSdzIG5vdGhpbmcg
dG8gZG8uIE90aGVyd2lzZSwganVzdCBjYWxsCi0gICAgICAgIGV3a19zZXR0aW5nc19pY29uX2Rh
dGFiYXNlX3BhdGhfc2V0KCkgd2l0aCB0aGUgZGlyZWN0b3J5IHBhdGguCi0KLSAgICAgICAgKiBl
d2svZXdrX21haW4uY3BwOgotICAgICAgICAoX2V3a19pbml0X2JvZHkpOgotICAgICAgICAqIGV3
ay9ld2tfc2V0dGluZ3MuY3BwOgotICAgICAgICAoZXdrX3NldHRpbmdzX2ljb25fZGF0YWJhc2Vf
cGF0aF9zZXQpOgotCi0yMDExLTA3LTEyICBKb3NlcGggUGVjb3Jhcm8gIDxqb2VwZWNrQHdlYmtp
dC5vcmc+Ci0KLSAgICAgICAgQXBwbGljYXRpb25DYWNoZSB1cGRhdGUgc2hvdWxkIG5vdCBpbW1l
ZGlhdGVseSBmYWlsIHdoZW4gcmVhY2hpbmcgcGVyLW9yaWdpbiBxdW90YQotICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQxNzcKLQotICAgICAgICBSZXZp
ZXdlZCBieSBBbGV4ZXkgUHJvc2t1cnlha292LgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQv
Q2hyb21lQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEVmbDo6
cmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YSk6Ci0gICAgICAgICogV2ViQ29yZVN1
cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmg6Ci0KLTIwMTEtMDctMTEgIEphZWh1biBMaW0gIDxsamFl
aHVuLmxpbUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtlIE5pd2Eu
Ci0KLSAgICAgICAgW0VGTF0gU3VwcG9ydHMgdG8gZXhlY3V0ZSAicmVkbyIgY29tbWFuZC4KLSAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYyNTM2Ci0KLSAg
ICAgICAgSW1wbGVtZW50cyBiYXNpYyBmdW5jdGlvbnMgZm9yICJyZWRvIiBjb21tYW5kLgotCi0g
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdl
YkNvcmU6OkVkaXRvckNsaWVudEVmbDo6cmVnaXN0ZXJDb21tYW5kRm9yVW5kbyk6Ci0gICAgICAg
IChXZWJDb3JlOjpFZGl0b3JDbGllbnRFZmw6OnJlZ2lzdGVyQ29tbWFuZEZvclJlZG8pOgotICAg
ICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50RWZsOjpjbGVhclVuZG9SZWRvT3BlcmF0aW9ucyk6
Ci0gICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRFZmw6OmNhblJlZG8pOgotICAgICAgICAo
V2ViQ29yZTo6RWRpdG9yQ2xpZW50RWZsOjp1bmRvKToKLSAgICAgICAgKFdlYkNvcmU6OkVkaXRv
ckNsaWVudEVmbDo6cmVkbyk6Ci0gICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRFZmw6OkVk
aXRvckNsaWVudEVmbCk6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZs
Lmg6Ci0KLTIwMTEtMDYtMjkgIEthbmdpbCBIYW4gIDxrYW5naWwuaGFuQHNhbXN1bmcuY29tPgot
Ci0gICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgotCi0gICAg
ICAgIFtFRkxdIEFkZCBBUElzIHRvIGdldC9zZXQgdmlldyBtb2RlCi0gICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MzIyOQotCi0gICAgICAgIEltcGxlbWVu
dCBwdWJsaWMgQVBJIGZvciBnZXR0aW5nL3NldHRpbmcgdGhlIHZpZXctbW9kZSBtZWRpYSBmZWF0
dXJlIGFzIHNwZWNpZmllZCBpbiBXM0MuCi0KLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgot
ICAgICAgICAoZXdrX3ZpZXdfbW9kZV9zZXQpOgotICAgICAgICAoZXdrX3ZpZXdfbW9kZV9nZXQp
OgotICAgICAgICAqIGV3ay9ld2tfdmlldy5oOgotCi0yMDExLTA2LTI5ICBNaWNoYWwgUGFrdWxh
IHZlbCBSdXRrYSAgPG0ucGFrdWxhQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5
IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgotCi0gICAgICAgIFtFRkxdIEFkZCBld2tfZnJh
bWVfdGV4dF9zZWxlY3Rpb25fdHlwZV9nZXQgZnVuY3Rpb24KLSAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYzNDYyCi0KLSAgICAgICAgQWRkIGEgbWV0aG9k
IHRvIG9idGFpbiBjdXJyZW50IFdlYkNvcmU6OlZpc2libGVTZWxlY3Rpb24gdGV4dAotICAgICAg
ICBzZWxlY3Rpb24gdHlwZS4KLQotICAgICAgICAqIGV3ay9ld2tfZnJhbWUuY3BwOgotICAgICAg
ICAoZXdrX2ZyYW1lX3RleHRfc2VsZWN0aW9uX3R5cGVfZ2V0KToKLSAgICAgICAgKiBld2svZXdr
X2ZyYW1lLmg6Ci0KLTIwMTEtMDYtMjggIE1pY2hhbCBQYWt1bGEgdmVsIFJ1dGthICA8bS5wYWt1
bGFAc2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJp
c3RpYW5zZW4uCi0KLSAgICAgICAgW0VGTF0gSW1wbGVtZW50IEVkaXRvckNsaWVudEVmbDo6cmVz
cG9uZFRvQ2hhbmdlZFNlbGVjdGlvbgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NjM1MjUKLQotICAgICAgICBUaGlzIHBhdGNoOgotICAgICAgICAtIGlt
cGxlbWVudHMgRWRpdG9yQ2xpZW50RWZsOjpyZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uLAotICAg
ICAgICAtIGFkZHMgZXdrX2ZyYW1lX2VkaXRvcl9jbGllbnRfc2VsZWN0aW9uX2NoYW5nZWQgYW5k
Ci0gICAgICAgIC0gZXdrX3ZpZXdfZWRpdG9yX2NsaWVudF9zZWxlY3Rpb25fY2hhbmdlZAotCi0g
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdl
YkNvcmU6OkVkaXRvckNsaWVudEVmbDo6cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbik6Ci0gICAg
ICAgICogZXdrL2V3a19mcmFtZS5jcHA6Ci0gICAgICAgIChld2tfZnJhbWVfZWRpdG9yX2NsaWVu
dF9zZWxlY3Rpb25fY2hhbmdlZCk6Ci0gICAgICAgICogZXdrL2V3a19wcml2YXRlLmg6Ci0gICAg
ICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAgKGV3a192aWV3X2VkaXRvcl9jbGllbnRf
c2VsZWN0aW9uX2NoYW5nZWQpOgotCi0yMDExLTA2LTI4ICBHeXV5b3VuZyBLaW0gIDxneXV5b3Vu
Zy5raW1Ac2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgS2VudCBUYW11cmEuCi0K
LSAgICAgICAgW0VGTF0gQ2hhbmdlIHBlcm1pc3Npb24gb2Ygc29tZSBld2sgZmlsZXMuCi0gICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MzUxNwotCi0gICAg
ICAgIENoYW5nZSBzb21lIGZpbGUncyBwZXJtaXNzaW9uIHNhbWUgd2l0aCBvdGhlciBmaWxlJ3Mu
Ci0KLSAgICAgICAgKiBld2svZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUuYzoKLSAgICAgICAgKiBl
d2svZXdrX3RpbGVkX21vZGVsLmM6Ci0gICAgICAgICogZXdrL2V3a192aWV3X3NpbmdsZS5jOgot
Ci0yMDExLTA2LTI3ICBSeXVhbiBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KLQotICAg
ICAgICBSZXZpZXdlZCBieSBBbnRvbmlvIEdvbWVzLgotCi0gICAgICAgIFtFRkxdIFJlbW92ZSBw
cml2YXRlIGhlYWRlciBmaWxlcyBmcm9tIEVXZWJLaXRfSEVBREVSUy4KLSAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYzNDQxCi0KLSAgICAgICAgUmVtb3Zl
IGV3a190aWxlZF9wcml2YXRlLmgsIGV3a190aWxlZF9iYWNraW5nX3N0b3JlLmgsIGV3a190aWxl
ZF9tYXRyaXguaCwKLSAgICAgICAgZXdrX3RpbGVkX21vZGVsLmggYW5kIGNoZWNrIFdURl9VU0Vf
U09VUCB0byByZW1vdmUgZXdrX2F1dGhfc291cC5oLgotCi0gICAgICAgICogQ01ha2VMaXN0c0Vm
bC50eHQ6Ci0KLTIwMTEtMDYtMjcgIEpvbmdzZW9rIFlhbmcgIDxqczQ1LnlhbmdAc2Ftc3VuZy5j
b20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgS2VudCBUYW11cmEuCi0KLSAgICAgICAgW0VGTF0g
VXNlIGFjY2VwdCBhdHRyaWJ1dGUgd2hlbiBleGVjdXRpbmcgdGhlIGZpbGUgcGlja2VyIGZvciBp
bnB1dCBlbGVtZW50Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02MzA2MwotCi0gICAgICAgIFRoaXMgcGF0Y2g6Ci0gICAgICAgIC0gcmVtb3ZlIHRoZSBh
cmd1bWVudCAic3VnZ2VzdGVkX2ZpbGVuYW1lcyIgZnJvbSBld2tfdmlld19ydW5fb3Blbl9wYW5l
bAotICAgICAgICAtIGFkZCB0aGUgYXJndW1lbnQgImFjY2VwdCIgdG8gZXdrX3ZpZXdfcnVuX29w
ZW5fcGFuZWwKLSAgICAgICAgLSBnZXQgdGhlIGFjY2VwdCBhdHRyaWJ1dGUgYW5kIHBhc3MgdG8g
ZXdrX3ZpZXdfcnVuX29wZW5fcGFuZWwgd2l0aGluIHJ1bk9wZW5QYW5lbAotCi0gICAgICAgICog
V2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkNo
cm9tZUNsaWVudEVmbDo6cnVuT3BlblBhbmVsKToKLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3Bw
OgotICAgICAgICAoZXdrX3ZpZXdfcnVuX29wZW5fcGFuZWwpOgotICAgICAgICAqIGV3ay9ld2tf
dmlldy5oOgotCi0yMDExLTA2LTI3ICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3Vu
Zy5jb20+Ci0KLSAgICAgICAgVW5yZXZpZXdlZC4gRml4IHN0eWxlIGVycm9yLgotCi0gICAgICAg
IFJlbW92ZSBtZWFuaW5nbGVzcyBwYXJhbWV0ZXIgZnJvbSBXZWJDb3JlU3VwcG9ydCdzIGhlYWRl
ciBmaWxlcy4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oOgot
ICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZsOjpzY3JvbGxSZWN0SW50b1ZpZXcpOgot
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0RyYWdDbGllbnRFZmwuaDoKLSAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5oOgotICAgICAgICAoV2ViQ29yZTo6RnJh
bWVMb2FkZXJDbGllbnRFZmw6OnNldFdlYkZyYW1lKToKLQotMjAxMS0wNi0yNyAgS3dhbmdIeXVr
IEtpbSAgPGh5dWtpLmtpbUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBLZW5u
ZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KLQotICAgICAgICBbRUZMXSBSZW1vdmUgZXdrX3RpbGVf
bWF0cml4X3VwZGF0ZXNfcHJvY2VzcygpIGNhbGwgZnJvbSBfZXdrX3RpbGVkX2JhY2tpbmdfc3Rv
cmVfaXRlbV9wcm9jZXNzX2lkbGVyX2NiKCkuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD02Mjk2MwotCi0gICAgICAgIEFzIHJlcGFpbnRfcHJvY2VzcyBv
biBld2tfdmlld190aWxlZCBhbHJlYWR5IHRha2VzIGNhcmUgb2YgZGlydHkgYXJlYSBpbiB2aXNp
YmxlIGFyZWEKLSAgICAgICAgYW5kIGluIG9yZGVyIHRvIGxldCBwcmUtcmVuZGVyIHdvcmsgbW9y
ZSBlZmZpY2llbnRseSwKLSAgICAgICAgX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX2l0ZW1fcHJv
Y2Vzc19pZGxlcl9jYigpIGJldHRlciBub3QgY2FsbCBld2tfdGlsZV9tYXRyaXhfdXBkYXRlc19w
cm9jZXNzKCkuCi0KLSAgICAgICAgKiBld2svZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUuYzoKLSAg
ICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9pdGVtX3Byb2Nlc3NfaWRsZXJfY2IpOgot
Ci0yMDExLTA2LTI3ICBLd2FuZ0h5dWsgS2ltICA8aHl1a2kua2ltQHNhbXN1bmcuY29tPgotCi0g
ICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgotCi0gICAgICAg
IFtFRkxdIFJlbW92ZSBkZWFkIGNvZGUgcmVsYXRlZCB3aXRoIEV3a19UaWxlZF9CYWNraW5nX1N0
b3JlX0l0ZW0ncyB1cGRhdGUgZmllbGQuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02Mjk2NwotCi0gICAgICAgIEFzIHNvbWUgY29kZSBkbyBub3QgYWZm
ZWN0IGFueSBsb2dpY2FsIGZsb3cgb2YgdGlsZWQgYmFja2luZyBzdG9yZSBleGNlcHQgY29uZGl0
aW9uIGNoZWNrLAotICAgICAgICBJIHdvdWxkIGxpa2UgdG8gY2xlYW4gZGVhZCBjb2RlIHJlbGF0
ZWQgd2l0aCBFd2tfVGlsZWRfQmFja2luZ19TdG9yZV9JdGVtJ3MgdXBkYXRlIGZpZWxkCi0gICAg
ICAgIGFuZCBFd2tfVGlsZWRfQmFja2luZ19TdG9yZV9EYXRhJ3MgcXVldWUgZmllbGQgCi0KLSAg
ICAgICAgKiBld2svZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUuYzoKLSAgICAgICAgKF9ld2tfdGls
ZWRfYmFja2luZ19zdG9yZV9pdGVtX3Byb2Nlc3NfaWRsZXJfY2IpOgotICAgICAgICAoX2V3a190
aWxlZF9iYWNraW5nX3N0b3JlX2l0ZW1fZmlsbCk6Ci0gICAgICAgIChfZXdrX3RpbGVkX2JhY2tp
bmdfc3RvcmVfaXRlbV9hZGQpOgotICAgICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX2l0
ZW1fZGVsKToKLQotMjAxMS0wNi0yNiAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3VuZy5j
b20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21lcy4KLQotICAgICAgICBbRUZM
XSBGdW5jdGlvbnMgbmVlZGluZyBFd2tfVmlld19Qcml2YXRlX0RhdGEgYXMgcGFyYW1ldGVyIGFy
ZSBub3QgcGFydCBvZiBwdWJsaWMgQVBJLgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NjI2ODgKLQotICAgICAgICBNb3ZlIGZ1bmN0aW9ucyB3aGljaCB1
c2UgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhIGFuZCBtYXkgbm90IGJlIHJlcXVpcmVkIGJ5Ci0gICAg
ICAgIGFwcGxpY2F0aW9ucyB0byBld2tfcHJpdmF0ZS5oLgotCi0gICAgICAgICogZXdrL2V3a19w
cml2YXRlLmg6Ci0gICAgICAgICogZXdrL2V3a192aWV3Lmg6Ci0KLTIwMTEtMDYtMjQgIFJ5dWFu
IENob2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEFu
dG9uaW8gR29tZXMuCi0KLSAgICAgICAgW0VGTF0gUmVtb3ZlIGV3a19mcmFtZV90aGVtZV9nZXQv
c2V0LgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjMz
NzAKLQotICAgICAgICBSZW1vdmUgZXdrX2ZyYW1lX3RoZW1lX2dldC9zZXQgdG8gYXZvaWQgY29u
ZnVzaW9uLgotICAgICAgICBTZXR0aW5nIHRoZW1lIG9uIGVhY2ggZnJhbWUgaXMgbWVhbmluZ2xl
c3MgYW5kIGV3a192aWV3X3RoamVtZV9zZXQgY2FuCi0gICAgICAgIGRvIHNhbWUgdGhpbmcuCi0K
LSAgICAgICAgKiBld2svZXdrX2ZyYW1lLmNwcDoKLSAgICAgICAgKiBld2svZXdrX2ZyYW1lLmg6
Ci0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAgKGV3a192aWV3X3RoZW1lX3Nl
dCk6Ci0KLTIwMTEtMDYtMjQgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNv
bT4KLQotICAgICAgICBSZXZpZXdlZCBieSBLZW50IFRhbXVyYS4KLQotICAgICAgICBbRUZMXSBB
ZGQgZXdrX2F1dGguaCB0byBFV2ViS2l0LmgKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTYzMzExCi0KLSAgICAgICAgKiBld2svRVdlYktpdC5oOiBBZGQg
ZXdrX2F1dGguaAotCi0yMDExLTA2LTIzICBSeXVhbiBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5n
LmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBBbnRvbmlvIEdvbWVzLgotCi0gICAgICAgIFtF
RkxdIENyYXNoIHdoZW4gcnVubmluZyBFV2ViTGF1bmNoZXIKLSAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYyNjI4Ci0KLSAgICAgICAgQ2FsbCBEb2N1bWVu
dFdyaXRlcjo6c2V0RW5jb2Rpbmcgd2hlbiBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZmluaXNoZWRM
b2FkaW5nKCkKLSAgICAgICAgbGlrZSBvdGhlciBwb3J0cy4KLSAgICAgICAgSXQgd2lsbCBjbGVh
ciBwYXJzZXIgbm90IHRvIGNyYXNoIHdoZW4gY2FsbGVkIGVuZElmTm90TG9hZGluZ01haW5SZXNv
dXJjZSgpLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwu
Y3BwOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OkZyYW1lTG9hZGVy
Q2xpZW50RWZsKToKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjptYWtl
UmVwcmVzZW50YXRpb24pOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6
OnJldmVydFRvUHJvdmlzaW9uYWxTdGF0ZSk6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
ckNsaWVudEVmbDo6ZmluaXNoZWRMb2FkaW5nKToKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudEVmbC5oOgotCi0yMDExLTA2LTIyICBSeXVhbiBDaG9pICA8cnl1YW4u
Y2hvaUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBBbnRvbmlvIEdvbWVzLgot
Ci0gICAgICAgIFtFRkxdIEFkZCBhbiBvcHRpb24gdG8gZW5hYmxlIERldmljZSBPcmllbnRhdGlv
biBFdmVudC4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTYzMTIwCi0KLSAgICAgICAgKiBDTWFrZUxpc3RzRWZsLnR4dDogQWRkIGZpbGVzIHRvIGJ1aWxk
IHdpdGggRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTi4KLSAgICAgICAgKiBld2svZXdrX3ZpZXcu
Y3BwOgotICAgICAgICAoX2V3a192aWV3X3ByaXZfbmV3KTogQ3JlYXRlIERldmljZU9yaWVudGF0
aW9uQ2xpZW50RWZsIGFuZCBEZXZpY2VNb3Rpb25DbGllbnRFZmwuCi0KLTIwMTEtMDYtMjIgIFJ5
dWFuIENob2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5
IEFudG9uaW8gR29tZXMuCi0KLSAgICAgICAgW0VGTF0gQWRkIERldmljZU9yaWVudGF0aW9uQ2xp
ZW50RWZsIGFuZCBEZXZpY2VNb3Rpb25DbGllbnRFZmwuCi0gICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MzEyNQotCi0gICAgICAgIEFkZCBkdW1teSBmaWxl
cyB0byBidWlsZCB3aXRoIEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04uCi0KLSAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9EZXZpY2VNb3Rpb25DbGllbnRFZmwuY3BwOiBBZGRlZC4KLSAgICAgICAg
KFdlYkNvcmU6OkRldmljZU1vdGlvbkNsaWVudEVmbDo6RGV2aWNlTW90aW9uQ2xpZW50RWZsKToK
LSAgICAgICAgKFdlYkNvcmU6OkRldmljZU1vdGlvbkNsaWVudEVmbDo6fkRldmljZU1vdGlvbkNs
aWVudEVmbCk6Ci0gICAgICAgIChXZWJDb3JlOjpEZXZpY2VNb3Rpb25DbGllbnRFZmw6OmRldmlj
ZU1vdGlvbkNvbnRyb2xsZXJEZXN0cm95ZWQpOgotICAgICAgICAoV2ViQ29yZTo6RGV2aWNlTW90
aW9uQ2xpZW50RWZsOjpzZXRDb250cm9sbGVyKToKLSAgICAgICAgKFdlYkNvcmU6OkRldmljZU1v
dGlvbkNsaWVudEVmbDo6c3RhcnRVcGRhdGluZyk6Ci0gICAgICAgIChXZWJDb3JlOjpEZXZpY2VN
b3Rpb25DbGllbnRFZmw6OnN0b3BVcGRhdGluZyk6Ci0gICAgICAgIChXZWJDb3JlOjpEZXZpY2VN
b3Rpb25DbGllbnRFZmw6OmN1cnJlbnREZXZpY2VNb3Rpb24pOgotICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0RldmljZU1vdGlvbkNsaWVudEVmbC5oOiBBZGRlZC4KLSAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9EZXZpY2VPcmllbnRhdGlvbkNsaWVudEVmbC5jcHA6IEFkZGVkLgotICAgICAgICAo
V2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb25DbGllbnRFZmw6OkRldmljZU9yaWVudGF0aW9uQ2xp
ZW50RWZsKToKLSAgICAgICAgKFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uQ2xpZW50RWZsOjp+
RGV2aWNlT3JpZW50YXRpb25DbGllbnRFZmwpOgotICAgICAgICAoV2ViQ29yZTo6RGV2aWNlT3Jp
ZW50YXRpb25DbGllbnRFZmw6OmRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlckRlc3Ryb3llZCk6
Ci0gICAgICAgIChXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbkNsaWVudEVmbDo6c2V0Q29udHJv
bGxlcik6Ci0gICAgICAgIChXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbkNsaWVudEVmbDo6c3Rh
cnRVcGRhdGluZyk6Ci0gICAgICAgIChXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbkNsaWVudEVm
bDo6c3RvcFVwZGF0aW5nKToKLSAgICAgICAgKFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uQ2xp
ZW50RWZsOjpsYXN0T3JpZW50YXRpb24pOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Rldmlj
ZU9yaWVudGF0aW9uQ2xpZW50RWZsLmg6IEFkZGVkLgotCi0yMDExLTA2LTIwICBEaW1pdHJpIEds
YXprb3YgIDxkZ2xhemtvdkBjaHJvbWl1bS5vcmc+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgS2Vu
dCBUYW11cmEuCi0KLSAgICAgICAgRmlsZUNob29zZXIgc2hvdWxkIGJlIG9ubHkgY3JlYXRlZCB3
aGVuIHdlIG5lZWQgdG8gY2hvb3NlIGZpbGVzLgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjMwMzkKLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0No
cm9tZUNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRFZmw6OnJ1
bk9wZW5QYW5lbCk6IENoYW5nZWQgdG8gdXNlIHNldHRpbmdzLgotCi0yMDExLTA2LTIwICBHeXV5
b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgVW5yZXZpZXdl
ZC4gRml4IHN0eWxlIGVycm9yLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xp
ZW50RWZsLmg6Ci0gICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRFZmw6OnJlcXVlc3RDaGVj
a2luZ09mU3RyaW5nKToKLQotMjAxMS0wNi0yMCAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lAc2Ft
c3VuZy5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21lcy4KLQotICAgICAg
ICBbRUZMXSBDaHJvbWVDbGllbnRFZmwgZG9lc24ndCBuZWVkIHRvIGNoZWNrIHdoZXRoZXIgbV92
aWV3IGlzIG51bGwuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02Mjk3OAotCi0gICAgICAgIFJlbW92ZSB1bm5lY2Vzc2FyeSBjaGVjayByb3V0aW5lcyBv
ZiBtX3ZpZXcgYmVjYXVzZSBDaHJvbWVDbGllbnRFZmwgaGF2ZQotICAgICAgICB2YWxpZCBtX3Zp
ZXcgYWx3YXlzLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNw
cDoKLSAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEVmbDo6Q2hyb21lQ2xpZW50RWZsKTog
QWRkIEFTU0VSVChtX3ZpZXcpCi0gICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRFZmw6Ondp
bmRvd1JlY3QpOgotICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZsOjpzZXRXaW5kb3dS
ZWN0KToKLSAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEVmbDo6cGFnZVJlY3QpOgotCi0y
MDExLTA2LTIwICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgotCi0gICAgICAgIEVG
TCBidWlsZCBmaXggYWZ0ZXIgcjg5MjkzLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRp
dG9yQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEVmbDo6aGFu
ZGxlRWRpdGluZ0tleWJvYXJkRXZlbnQpOgotCi0yMDExLTA2LTE4ICBEaW1pdHJpIEdsYXprb3Yg
IDxkZ2xhemtvdkBjaHJvbWl1bS5vcmc+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRs
ZXIuCi0KLSAgICAgICAgU2VwYXJhdGUgY29uY2VybnMgb2YgbG9hZGluZyBmaWxlIGljb25zIGFu
ZCBjaG9vc2luZyBmaWxlcy4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTYyOTMxCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRF
ZmwuY3BwOgotICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZsOjpsb2FkSWNvbkZvckZp
bGVzKTogUmVuYW1lZC4KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwu
aDoKLQotMjAxMS0wNi0xNSAgR3J6ZWdvcnogQ3phamtvd3NraSAgPGcuY3phamtvd3NraUBzYW1z
dW5nLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBBbnRvbmlvIEdvbWVzLgotCi0gICAgICAg
IFtFRkxdIEZpeCBhbmQgdXBkYXRlIGRveHlnZW4gZG9jdW1lbnRhdGlvbiBmb3IgZXdrX2ZyYW1l
LgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjI1MzMK
LQotICAgICAgICBUaGlzIHBhdGNoOgotICAgICAgICAgLSBmaXhlcyBtZXRob2QgZGVzY3JpcHRp
b25zLAotICAgICAgICAgLSBhZGRzIGJyaWVmcyBmb3Igc3RydWN0dXJlIGFuZCB0eXBkZWYsCi0g
ICAgICAgICAtIHJlcGxhY2VzIE5VTEwgdG8gMCBpbiBkb3h5Z2VuIGRvY3VtZW50YXRpb24gKHdl
YmtpdCdzIHN0eWxlIHJlcXVpcmVkIGl0KSwKLSAgICAgICAgIC0gcmVtb3ZlcyBkb3RzIGZyb20g
dGhlIGVuZCBvZiBwYXJhbXMgYW5kIHJldHVybiBkZXNjcmlwdGlvbiAoc2VlIEVGTCdzIGRvY3Vt
ZW50YXRpb24pLAotICAgICAgICAgLSBtb3ZlcyBpbmNsdWRlcyBhbmQgZGVmaW5lcyBiZWxvdyBh
IGJyaWVmIG9mIGV3a19mcmFtZS5oCi0gICAgICAgICAtIG1vdmVzIGludGVybmFsIG1ldGhvZHMg
dG8gdGhlIGVuZCBvZiBld2tfZnJhbWUuY3BwLgotCi0gICAgICAgICogZXdrL2V3a19mcmFtZS5j
cHA6Ci0gICAgICAgIChld2tfZnJhbWVfYWRkKToKLSAgICAgICAgKiBld2svZXdrX2ZyYW1lLmg6
Ci0KLTIwMTEtMDYtMTUgIEthbWlsIEJsYW5rICA8ay5ibGFua0BzYW1zdW5nLmNvbT4KLQotICAg
ICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KLQotICAgICAgICBb
RUZMXSBTb3VwIGF1dGhlbnRpY2F0aW9uIGZlYXR1cmUgaW1wbGVtZW50YXRpb24uCi0gICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NDc1MgotCi0gICAgICAg
IFRoaXMgaW1wbGVtZW50YXRpb24gaXMgYmFzZWQgb24gR1RLIGltcGxlbWVudGF0aW9uLgotICAg
ICAgICBEdXJpbmcgZXdrIGluaXRpYWxpemF0aW9uIFNvdXBTZXNzaW9uRmVhdHVyZSBpcyBhZGRl
ZCB3aGljaCBwcm92aWRlcyBwb3NzaWJpbGl0eSB0byBoYW5kbGUgSFRUUCBiYXNpYyBhdXRoLgot
Ci0gICAgICAgIFRvIHN1cHBvcnQgYXV0aGVudGljYXRpb24gd2UgaGF2ZSB0byBzZXQgZnVuY3Rp
b24gKGNhbGxiYWNrKSB2aWEgZXdrX2F1dGhfc2hvd19kaWFsb2dfY2FsbGJhY2tfc2V0KCkKLSAg
ICAgICAgd2hpY2ggd2lsbCBiZSByZXNwb25zaWJsZSBmb3Igc2Vzc2lvbiBhdXRoZW50aWNhdGlv
bi4KLSAgICAgICAgSWYgY2FsbGJhY2sgaXMgc2V0IGFuZCBhdXRoZW50aWNhdGlvbiByZXF1aXJl
ZCAtIHdlYmtpdCBwYXVzZXMgc291cCBtZXNzYWdlLCBjYWxscyBwcmV2aW91c2x5IHNldCBjYWxs
YmFjawotICAgICAgICBhbmQgd2FpdHMgZm9yIGF1dGhlbnRpY2F0aW9uIGRhdGEgKHVzZXJuYW1l
L3Bhc3N3b3JkKSB3aGljaCBzaG91bGQgYmUgcGFzc2VkIGJ5IGV3a19hdXRoX2NyZWRlbnRpYWxz
X3NldCgpLgotCi0gICAgICAgICogQ01ha2VMaXN0c0VmbC50eHQ6Ci0gICAgICAgICogZXdrL2V3
a19hdXRoLmNwcDogQWRkZWQuCi0gICAgICAgIChld2tfYXV0aF9zaG93X2RpYWxvZ19jYWxsYmFj
a19zZXQpOiBTZXR0aW5nIGNhbGxiYWNrIHdoaWNoIHNob3VsZCBiZSBjYWxsZWQgd2hlbiBhdXRo
ZW50aWNhdGlvbiBpcyByZXF1aXJlZC4KLSAgICAgICAgKGV3a19hdXRoX2NyZWRlbnRpYWxzX3Nl
dCk6IFBhc3NpbmcgYXV0aGVudGljYXRpb24gZGF0YS4KLSAgICAgICAgKiBld2svZXdrX2F1dGgu
aDogQWRkZWQuIEF1dGhlbnRpY2F0aW9uIEFQSS4KLSAgICAgICAgKiBld2svZXdrX2F1dGhfc291
cC5jcHA6IEFkZGVkLiBTb3VwIGF1dGhlbnRpY2F0aW9uIGltcGxlbWVudGF0aW9uLgotICAgICAg
ICAoX0V3a19BdXRoX0RhdGE6OmV3a19hdXRoX3NvdXBfZGlhbG9nX2NsYXNzX2luaXQpOgotICAg
ICAgICAoX0V3a19BdXRoX0RhdGE6OmV3a19hdXRoX3NvdXBfZGlhbG9nX2luaXQpOgotICAgICAg
ICAoX0V3a19BdXRoX0RhdGE6OmV3a19hdXRoX3NvdXBfZGlhbG9nX3Nlc3Npb25fZmVhdHVyZV9p
bml0KToKLSAgICAgICAgKF9Fd2tfQXV0aF9EYXRhOjpld2tfYXV0aF9zb3VwX3Nob3dfZGlhbG9n
X2NhbGxiYWNrX3NldCk6Ci0gICAgICAgIChfRXdrX0F1dGhfRGF0YTo6ZXdrX2F1dGhfc291cF9j
cmVkZW50aWFsc19zZXQpOgotICAgICAgICAoX0V3a19BdXRoX0RhdGE6OnNlc3Npb25fYXV0aGVu
dGljYXRlKToKLSAgICAgICAgKF9Fd2tfQXV0aF9EYXRhOjpmcmVlX2F1dGhfZGF0YSk6Ci0gICAg
ICAgIChfRXdrX0F1dGhfRGF0YTo6YXR0YWNoKToKLSAgICAgICAgKF9Fd2tfQXV0aF9EYXRhOjpk
ZXRhY2gpOgotICAgICAgICAqIGV3ay9ld2tfYXV0aF9zb3VwLmg6IEFkZGVkLgotICAgICAgICAq
IGV3ay9ld2tfbWFpbi5jcHA6Ci0gICAgICAgIChfZXdrX2luaXRfYm9keSk6IFNvdXBTZXNzaW9u
RmVhdHVyZSByZXNwb25zaWJsZSBmb3IgYXV0aGVudGljYXRpb24gYWRkZWQgdG8gU291cFNlc3Np
b24uCi0KLTIwMTEtMDYtMTUgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwu
Y29tPgotCi0gICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI4ODcyMy4KLSAgICAgICAg
aHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvODg3MjMKLSAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYyNzI2Ci0KLSAgICAgICAgU3RhY2sgY2Fu
IGJlIGVtcHR5LCBzbyBpdCBuZWVkcyB0byBiZSBjaGVja2VkIGJlZm9yZSBhcwotICAgICAgICBw
b2ludGVkIG91dCBpbiB0aGUgY29tbWVudHMgb2YgdGhlIGJ1Zy4gKFJlcXVlc3RlZCBieSBkZW1h
cmNoaQotICAgICAgICBvbiAjd2Via2l0KS4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Vk
aXRvckNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRFZmw6OnJl
Z2lzdGVyQ29tbWFuZEZvclVuZG8pOgotICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50RWZs
OjpyZWdpc3RlckNvbW1hbmRGb3JSZWRvKToKLSAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVu
dEVmbDo6Y2xlYXJVbmRvUmVkb09wZXJhdGlvbnMpOgotICAgICAgICAoV2ViQ29yZTo6RWRpdG9y
Q2xpZW50RWZsOjpjYW5SZWRvKToKLSAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEVmbDo6
cmVkbyk6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmg6Ci0KLTIw
MTEtMDYtMTMgIE1pY2hhbCBQYWt1bGEgdmVsIFJ1dGthICA8bS5wYWt1bGFAc2Ftc3VuZy5jb20+
Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCi0KLSAgICAgICAgW0VGTF0gSW5w
dXQgbWV0aG9kIGhpbnRzIG5vdCB1cGRhdGVkIHdoaWxlIGNsaWNraW5nIG5vbi1pbnB1dCBmaWVs
ZCBlZGl0YWJsZSBhcmVhCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD02MjUzOQotCi0gICAgICAgIFRoaXMgZml4ZXMgYSBtaW5vciBidWcgd2hlbiBpbnB1
dCBtZXRob2QgaGludHMgYXJlIG5vdCB1cGRhdGVkIHdoaWxlIGZvY3VzIGlzIAotICAgICAgICBj
aGFuZ2VkIGZyb20gZWRpdGFibGUgYXJlYSB3aXRoIGlucHV0IHRhZ3MgdG8gb3RoZXIgd2hpY2gg
YXJlIGRvZXMgbm90IGhhdmUgaW5wdXQgCi0gICAgICAgIHRhZyBpLmUuIHRleHRhcmVhLgotCi0g
ICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAgKGV3a192aWV3X2lucHV0X21ldGhv
ZF9zdGF0ZV9zZXQpOgotCi0yMDExLTA2LTEzICBKYWVodW4gTGltICA8bGphZWh1bi5saW1Ac2Ft
c3VuZy5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCi0KLSAgICAgICAg
W0VGTF0gU3VwcG9ydHMgdG8gZXhlY3V0ZSAicmVkbyIgY29tbWFuZC4KLSAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYyNTM2Ci0KLSAgICAgICAgSW1wbGVt
ZW50cyBiYXNpYyBmdW5jdGlvbnMgZm9yICJyZWRvIiBjb21tYW5kLgotCi0gICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkVkaXRv
ckNsaWVudEVmbDo6cmVnaXN0ZXJDb21tYW5kRm9yVW5kbyk6Ci0gICAgICAgIChXZWJDb3JlOjpF
ZGl0b3JDbGllbnRFZmw6OnJlZ2lzdGVyQ29tbWFuZEZvclJlZG8pOgotICAgICAgICAoV2ViQ29y
ZTo6RWRpdG9yQ2xpZW50RWZsOjpjbGVhclVuZG9SZWRvT3BlcmF0aW9ucyk6Ci0gICAgICAgIChX
ZWJDb3JlOjpFZGl0b3JDbGllbnRFZmw6OmNhblJlZG8pOgotICAgICAgICAoV2ViQ29yZTo6RWRp
dG9yQ2xpZW50RWZsOjpyZWRvKToKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGll
bnRFZmwuaDoKLQotMjAxMS0wNi0xMyAgR3J6ZWdvcnogQ3phamtvd3NraSAgPGcuY3phamtvd3Nr
aUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KLQotICAg
ICAgICBbRUZMXSBSZW1vdmUgZXdrX2ZyYW1lX3NlbGVjdF8qIGZ1bmN0aW9ucyBmcm9tIGV3a19m
cmFtZS5jcHAKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTYyMzY1Ci0KLSAgICAgICAgVGhlc2UgZnVuY3Rpb25zIGRvIG5vdCBleGlzdCBpbiBhbnkgcHVi
bGljIGhlYWRlcnMgYW5kCi0gICAgICAgIHRoZXkgYXJlIG5vdCB1c2VkIGludGVybmFsbHkuCi0g
ICAgICAgIE1vcmVvdmVyIGV3a192aWV3IGhhcyB0aGUgc2FtZSBmdW5jdGlvbmFsaXR5IGFkZGVk
Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MDQzNQot
Ci0gICAgICAgICogZXdrL2V3a19mcmFtZS5jcHA6Ci0KLTIwMTEtMDYtMTMgIFJhcGhhZWwgS3Vi
byBkYSBDb3N0YSAgPGt1Ym9AcHJvZnVzaW9uLm1vYmk+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkg
S2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCi0KLSAgICAgICAgW2VmbF0gRGlzYWJsZSB0aWxl
ZCBiYWNraW5nIHN0b3JlIGRlYnVnIG1lc3NhZ2VzIGJ5IGRlZmF1bHQuCi0gICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MTc0NQotCi0gICAgICAgIFRoZXNl
IG1lc3NhZ2VzIHBvbGx1dGUgdGhlIG91dHB1dCBhbmQgYXJlIG9ubHkgdXNlZnVsIHRvIHBlb3Bs
ZQotICAgICAgICB3b3JraW5nIG9uIFRCUyBpdHNlbGYuIEl0IG1ha2VzIG1vcmUgc2Vuc2UgdG8g
aGF2ZSB0aGVtIGRpc2FibGVkIGJ5Ci0gICAgICAgIGRlZmF1bHQuCi0KLSAgICAgICAgKiBld2sv
ZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUuaDoKLQotMjAxMS0wNi0xMyAgS3dhbmdIeXVrIEtpbSAg
PGh5dWtpLmtpbUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJv
aGRlIENocmlzdGlhbnNlbi4KLQotICAgICAgICBbRUZMXSBjaGFuZ2Ugb2YgY2Fpcm9fZm9ybWF0
X3QgY29ycmVzcG9uZGluZyB0byBFVkFTX0NPTE9SU1BBQ0VfQVJHQjg4ODggY29sb3Igc3BhY2UK
LSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYyNDQ4IAot
IAotICAgICAgICBVc2UgQ0FJUk9fRk9STUFUX0FSR0IzMiBmb3IgRVdLIGFzIHBpeG1hbiBkb2Vz
IG5vdCBzdXBwb3J0IHRoZSBmYXN0IHBhdGggZm9yIGNvbnZlcnRpbmcKLSAgICAgICAgZnJvbSBB
UkdCMzIgdG8gQUdCMjQgd2hlbiB1c2luZyBzb3VyY2Ugb3ZlciBvcGVyYXRpb24gaW4gY29tYmlu
YXRpb24gd2l0aCBhIGJpbGluZWFyIGZpbHRlcgotCi0gICAgICAgICogZXdrL2V3a190aWxlZF9t
b2RlbC5jOgotICAgICAgICAoZXdrX3RpbGVfbmV3KToKLSAgICAgICAgKiBld2svZXdrX3ZpZXdf
c2luZ2xlLmM6Ci0gICAgICAgIChfZXdrX3ZpZXdfc2luZ2xlX3NtYXJ0X3JlcGFpbnRzX3Byb2Nl
c3MpOgotCi0yMDExLTA2LTEyICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+Ci0KLSAg
ICAgICAgUmV2aWV3ZWQgYnkgQWxleGV5IFByb3NrdXJ5YWtvdi4KLQotICAgICAgICBSZW5hbWUg
RnJhbWVMb2FkZXJDbGllbnQ6OmludGVycnVwdEZvclBvbGljeUNoYW5nZUVycm9yIHRvIHVzZSB0
aGUgcGFzdCB0ZW5zZQotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NjI1MTYKLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
RWZsLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjppbnRlcnJ1
cHRlZEZvclBvbGljeUNoYW5nZUVycm9yKToKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudEVmbC5oOgotCi0yMDExLTA2LTEwICBLd2FuZ0h5dWsgS2ltICA8aHl1a2ku
a2ltQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hy
aXN0aWFuc2VuLgotCi0gICAgICAgIFtFRkxdYWRkIGltYWdlIGNvbnRlbnQgaGludCBpbmZvcm1h
dGlvbiBmb3IgdGlsZSBpbWFnZSBvYmplY3Qgd2hlbiBpdCBpcyBjcmVhdGVkCi0gICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MjQzNgotCi0gICAgICAgIFdo
ZW4gYXBwbGljYXRpb24gaXMgdXNpbmcgb3BlbmdsX3gxMSBFY29yZV9FdmFzLCBpdCBjYW4gYmUg
d29ya2luZyBhcyBnbCB0ZXh0dXJlLgotICAgICAgICBJbiBvcmRlciB0byBzdXBwb3J0IHRoaXMg
ZW5oYW5jZWQgZmVhdHVyZSwgaW1hZ2UgY29udGVudCBoaW50IGluZm9ybWF0aW9uIG11c3QgYmUg
Ci0gICAgICAgIHNwZWNpZmllZCBhcyBFVkFTX0lNQUdFX0NPTlRFTlRfSElOVF9EWU5BTUlDCi0K
LSAgICAgICAgKiBld2svZXdrX3RpbGVkX21vZGVsLmM6Ci0gICAgICAgIChld2tfdGlsZV9uZXcp
OgotCi0yMDExLTA2LTEwICBHcnplZ29yeiBDemFqa293c2tpICA8Zy5jemFqa293c2tpQHNhbXN1
bmcuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2Vu
LgotCi0gICAgICAgIFtFRkxdIFJlcGFpbnQgdGhyb3R0bGluZyBBUEkuCi0gICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjE3OAotCi0gICAgICAgIFRoZSBB
UEkgYWxsb3dzIHRvIHNldCB0aGUgdmFsdWVzIGZvciByZXBhaW50IHRocm90dGxpbmcuCi0gICAg
ICAgIEl0IHNob3VsZCBlbnN1cmUgZGlzcGxheWluZyBhIGNvbnRlbnQgd2l0aCBtYW55IGNzcy9n
aWYgYW5pbWF0aW9ucy4KLQotICAgICAgICAqIGV3ay9ld2tfc2V0dGluZ3MuY3BwOgotICAgICAg
ICAoZXdrX3NldHRpbmdzX3JlcGFpbnRfdGhyb3R0bGluZ19zZXQpOgotICAgICAgICAqIGV3ay9l
d2tfc2V0dGluZ3MuaDoKLQotMjAxMS0wNi0xMCAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2lt
QHNhbXN1bmcuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEtlbnQgVGFtdXJhLgotCi0gICAg
ICAgIFtFRkxdIFVzZSBtYWtlU3RyaW5nKCkgd2hlbiBnZXR0aW5nIG9zIHZlcnNpb24KLSAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYyNDM0Ci0KLSAgICAg
ICAgV2hlbiBvcyB2ZXJzaW9uIHN0cmluZyBpcyBjcmVhdGVkLCB0byB1c2UgbWFrZVN0cmluZygp
IGlzIGJldHRlciB0aGFuCi0gICAgICAgIFN0cmluZyBvcGVyYXRpb24uCi0KLSAgICAgICAgKiBl
d2svZXdrX3NldHRpbmdzLmNwcDoKLSAgICAgICAgKF9ld2tfc2V0dGluZ3Nfd2Via2l0X29zX3Zl
cnNpb25fZ2V0KToKLQotMjAxMS0wNi0wOSAgSHlvd29uIEtpbSAgPGh3MTAwOC5raW1Ac2Ftc3Vu
Zy5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21lcy4KLQotICAgICAgICBb
RUZMXSBNYWtlIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIGJ1aWxkIGluIFdlYmtpdC1FRkwKLSAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYyMzYxCi0KLSAg
ICAgICAgQWRkIGZ1bmN0aW9ucyBmb3IgYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcgdG8gQ2hyb21l
Q2xpZW50RWZsLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNw
cDoKLSAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEVmbDo6YXR0YWNoUm9vdEdyYXBoaWNz
TGF5ZXIpOgotICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZsOjpzZXROZWVkc09uZVNo
b3REcmF3aW5nU3luY2hyb25pemF0aW9uKToKLSAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVu
dEVmbDo6c2NoZWR1bGVDb21wb3NpdGluZ0xheWVyU3luYyk6Ci0gICAgICAgIChXZWJDb3JlOjpD
aHJvbWVDbGllbnRFZmw6OmFsbG93ZWRDb21wb3NpdGluZ1RyaWdnZXJzKToKLSAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuaDoKLQotMjAxMS0wNS0zMCAgUmFwaGFlbCBL
dWJvIGRhIENvc3RhICA8a3Vib0Bwcm9mdXNpb24ubW9iaT4KLQotICAgICAgICBSZXZpZXdlZCBi
eSBCcmVudCBGdWxnaGFtLgotCi0gICAgICAgIFtlZmxdIERvIG5vdCBlbmFibGUgdGhlIGVuY29k
aW5nIGRldGVjdG9yIGJ5IGRlZmF1bHQuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02MTc0NAotCi0gICAgICAgIFRoaXMgc2hvdWxkIG1hdGNoIHRoZSBi
ZWhhdmlvdXIgb2Ygb3RoZXIgcG9ydHMgbW9yZSBjbG9zZWx5LCBhbmQgbWFrZXMKLSAgICAgICAg
YXQgbGVhc3QgZG9tL3hodG1sL2xldmVsMy9jb3JlL2RvY3VtZW50Z2V0aW5wdXRlbmNvZGluZzAx
LnhodG1sIHBhc3MuCi0KLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoX2V3
a192aWV3X3ByaXZfbmV3KToKLQotMjAxMS0wNi0wOCAgSmFlaHVuIExpbSAgPGxqYWVodW4ubGlt
QHNhbXN1bmcuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEFudG9uaW8gR29tZXMuCi0KLSAg
ICAgICAgW0VGTF0gSW1wbGVtZW50cyAidW5kbyIgY29tbWFuZCBleGVjdXRpb24KLSAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYyMjAxCi0KLSAgICAgICAg
U3VwcG9ydHMgdG8gZXhlY3V0ZSAiVW5kbyIgY29tbWFuZC4KLQotICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0VkaXRvckNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGll
bnRFZmw6OnJlZ2lzdGVyQ29tbWFuZEZvclVuZG8pOgotICAgICAgICAoV2ViQ29yZTo6RWRpdG9y
Q2xpZW50RWZsOjpjbGVhclVuZG9SZWRvT3BlcmF0aW9ucyk6Ci0gICAgICAgIChXZWJDb3JlOjpF
ZGl0b3JDbGllbnRFZmw6OmNhblVuZG8pOgotICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50
RWZsOjp1bmRvKToKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuaDoK
LQotMjAxMS0wNi0wOCAgRXVubWkgTGVlICA8ZXVubWkxNS5sZWVAc2Ftc3VuZy5jb20+Ci0KLSAg
ICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21lcy4KLQotICAgICAgICBbRUZMXSByZW1vdmUg
YWRqdXN0aW5nIGNvZGVzIGZvciB6b29tJ3MgY2VudGVyIGNvb3JkaW5hdGUKLSAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYyMjY2Ci0KLSAgICAgICAgSXQg
aXMgcG9zc2libGUgdGhhdCB0aGUgYXBwbGljYXRpb24gZGV2ZWxvcGVycyBkb24ndCB3YW50IHRv
IGxpbWl0Ci0gICAgICAgIHpvb20ncyBjZW50ZXIgY29vcmRpbmF0ZSB0byB0aGUgdmlld3BvcnQg
Zm9yIGltcGxlbWVudGluZyBzb21lIGVmZmVjdHMKLSAgICAgICAgYW5kIGNlbnRlciBjb29yZGlu
YXRlIG91dCBvZiB0aGUgdmlld3BvcnQgZG9lcyBub3QgYWZmZWN0IHRvIHRoZSB6b29tIG9wZXJh
dGlvbi4KLSAgICAgICAgU28sIEl0IGlzIGJldHRlciB0byBsZWF2ZSB6b29tJ3MgY2VudGVyIGNv
b3JkaW5hdGUgZnJlZWx5LgotCi0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAg
KGV3a192aWV3X3pvb21fc2V0KToKLSAgICAgICAgKGV3a192aWV3X3pvb21fd2Vha19zZXQpOgot
Ci0yMDExLTA2LTA3ICBSeXVhbiBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KLQotICAg
ICAgICBSZXZpZXdlZCBieSBBbnRvbmlvIEdvbWVzLgotCi0gICAgICAgIFtFRkxdIFJlbW92ZSBK
U0MgZGVwZW5kZW5jeSBmcm9tIFdlYktpdC9lZmwKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTYyMTczCi0KLSAgICAgICAgQ2hhbmdlIEpTQzo6aW5pdGlh
bGl6ZVRocmVhZGluZygpIGFuZCBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCkgdG8KLSAgICAg
ICAgV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6aW5pdGlhbGl6ZVRocmVhZGluZygpIHdoaWNo
IGNvbnRhaW5zIHRoZXNlCi0gICAgICAgIGZ1bmN0aW9ucyBhbmQgcmVtb3ZlIEpTQyBkZXBlbmRl
bmN5IHRvIGJ1aWxkIHdlYmtpdC9lZmwgd2l0aCB2OC4KLQotICAgICAgICAqIGV3ay9ld2tfbWFp
bi5jcHA6Ci0gICAgICAgIChfZXdrX2luaXRfYm9keSk6Ci0KLTIwMTEtMDYtMDYgIEd5dXlvdW5n
IEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBVbnJldmlld2VkIGJ1
aWxkIGZpeC4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZs
LmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpzdGFydERvd25s
b2FkKTogQ2hhbmdlIHByZXR0eVVSTCgpIHdpdGggc3RyaW5nKCkuCi0KLTIwMTEtMDYtMDYgIEd5
dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBSZXZpZXdl
ZCBieSBBbnRvbmlvIEdvbWVzLgotCi0gICAgICAgIFtFRkxdIEltcGxlbWVudCBzdGFydERvd25s
b2FkKCkgaW4gRnJhbWVMb2FkZXJDbGllbnRFZmwKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTYxOTk4Ci0KLSAgICAgICAgSW1wbGVtZW50IHN0YXJ0RG93
bmxvYWQoKSB3aXRoIGRvd25sb2FkKCkuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVu
dEVmbDo6c3RhcnREb3dubG9hZCk6Ci0KLTIwMTEtMDYtMDMgIFNoZXJpZmYgQm90ICA8d2Via2l0
LnJldmlldy5ib3RAZ21haWwuY29tPgotCi0gICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0
IHI4ODAxNC4KLSAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvODgwMTQK
LSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYyMDE3Ci0K
LSAgICAgICAgQnJva2VuIEVGTCBidWlsZCAoUmVxdWVzdGVkIGJ5IHRvbmlraXRvbyBvbiAjd2Vi
a2l0KS4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNw
cDoKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpzdGFydERvd25sb2Fk
KToKLQotMjAxMS0wNi0wMyAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29t
PgotCi0gICAgICAgIFJldmlld2VkIGJ5IEFudG9uaW8gR29tZXMuCi0KLSAgICAgICAgW0VGTF0g
SW1wbGVtZW50IHN0YXJ0RG93bmxvYWQoKSBpbiBGcmFtZUxvYWRlckNsaWVudEVmbAotICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjE5OTgKLQotICAgICAg
ICBJbXBsZW1lbnQgc3RhcnREb3dubG9hZCgpIHdpdGggZG93bmxvYWQoKS4KLQotICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpzdGFydERvd25sb2FkKToKLQotMjAxMS0wNi0wMiAg
R3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFJldmll
d2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgotCi0gICAgICAgIFtFRkxdIEltcGxl
bWVudCBoYXNXZWJWaWV3KCkgaW4gRnJhbWVMb2FkZXJDbGllbnRFZmwKLSAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYxOTA1Ci0KLSAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlckNsaWVudEVmbDo6aGFzV2ViVmlldyk6IEltcGxlbWVudCBoYXNXZWJWaWV3KCkg
ZnVuY3Rpb24uCi0KLTIwMTEtMDYtMDIgIFJ5dWFuIENob2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcu
Y29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgot
Ci0gICAgICAgIFtFRkxdIE5vIG5lZWQgdG8gaW52YWxpZGF0ZSBlbXB0eSBhcmVhcyBpbiBDaHJv
bWVDbGllbnRFZmw6OmludmFsaWRhdGVDb250ZW50c0FuZFdpbmRvdwotICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjE5MDIKLQotICAgICAgICBKdXN0IHJl
dHVybiB0byByZWR1Y2UgdW5uZWNlc3NhcnkgY2FsbHMgd2hlbiBpbnZhbGlkYXRlQ29udGVudHNB
bmRXaW5kb3cKLSAgICAgICAgcmVjZWl2ZWQgZW1wdHkgYXJlYS4KLQotICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpDaHJvbWVD
bGllbnRFZmw6OmludmFsaWRhdGVDb250ZW50c0FuZFdpbmRvdyk6Ci0KLTIwMTEtMDYtMDEgIEd5
dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBSZXZpZXdl
ZCBieSBLZW50IFRhbXVyYS4KLQotICAgICAgICBbRUZMXSBBZGQgbnVsbCBjaGVja2luZyBjb25k
aXRpb24gdG8gRWRpdG9yQ2xpZW50RWZsLmNwcAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjE4NDYKLQotICAgICAgICBBZGQgbnVsbCBjaGVja2luZyBj
b25kaXRpb24gZm9yIHVzaW5nIHNldHRpbmdzKCkgb2YgZnJhbWUuCi0KLSAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29yZTo6RWRpdG9y
Q2xpZW50RWZsOjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVudCk6Ci0KLTIwMTEtMDUtMzEgIFJh
cGhhZWwgS3VibyBkYSBDb3N0YSAgPGt1Ym9AcHJvZnVzaW9uLm1vYmk+Ci0KLSAgICAgICAgUmV2
aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KLQotICAgICAgICBbZWZsXSBBZGQgZXdrIEFQSSB0byBlbmFi
bGUvZGlzYWJsZSBkZXZlbG9wZXIgZXh0cmFzLgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjE3NDYKLQotICAgICAgICBBZGQgZXdrX3ZpZXdfc2V0dGlu
Z19lbmFibGVfZGV2ZWxvcGVyX2V4dHJhc197Z2V0LHNldH0sIHdoaWNoIGlzIHVzZWQKLSAgICAg
ICAgdG8gZW5hYmxlIG9yIGRpc2FibGUgZGV2ZWxvcGVyIGV4dHJhcyAoY3VycmVudGx5LCB0aGUg
V2ViIEluc3BlY3RvcikKLSAgICAgICAgaW4gYSBnaXZlbiB2aWV3LgotCi0gICAgICAgICogZXdr
L2V3a192aWV3LmNwcDoKLSAgICAgICAgKF9ld2tfdmlld19wcml2X25ldyk6Ci0gICAgICAgIChl
d2tfdmlld19zZXR0aW5nX2VuYWJsZV9kZXZlbG9wZXJfZXh0cmFzX2dldCk6Ci0gICAgICAgIChl
d2tfdmlld19zZXR0aW5nX2VuYWJsZV9kZXZlbG9wZXJfZXh0cmFzX3NldCk6Ci0gICAgICAgICog
ZXdrL2V3a192aWV3Lmg6Ci0KLTIwMTEtMDUtMzAgIFJhcGhhZWwgS3VibyBkYSBDb3N0YSAgPGt1
Ym9AcHJvZnVzaW9uLm1vYmk+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgS2VudCBUYW11cmEuCi0K
LSAgICAgICAgW2VmbF0gRml4IF9ld2tfZnJhbWVfY2hpbGRyZW5faXRlcmF0b3JfbmV4dCgpLgot
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjE3NDkKLQot
ICAgICAgICBUaGUgaXRlcmF0b3Igd2FzIHJldHVybmluZyBhbHdheXMgdGhlIGZpcnN0IGNoaWxk
LCBtYWtpbmcgdGVzdHMgbGlrZQotICAgICAgICBmYXN0L2hpc3RvcnkvaGlzdG9yeS1iYWNrLWlu
aXRpYWwtdnMtZmluYWwtdXJsLmh0bWwgdG8gdGltZW91dCBhbmQKLSAgICAgICAgZXZlbnR1YWxs
eSBydW4gb3V0IG9mIG1lbW9yeS4KLQotICAgICAgICAqIGV3ay9ld2tfZnJhbWUuY3BwOgotICAg
ICAgICAoX2V3a19mcmFtZV9jaGlsZHJlbl9pdGVyYXRvcl9uZXh0KToKLSAgICAgICAgKGV3a19m
cmFtZV9jaGlsZHJlbl9pdGVyYXRvcl9uZXcpOgotCi0yMDExLTA1LTI4ICBBZGFtIEJhcnRoICA8
YWJhcnRoQHdlYmtpdC5vcmc+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQWxleGV5IFByb3NrdXJ5
YWtvdi4KLQotICAgICAgICBBdWRpdCBhbGwgdXNlcyBvZiBLVVJMOjpwcmV0dHlVUkwKLSAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYxMjAxCi0KLSAgICAg
ICAgVXBkYXRlIGNhbGxlcnMgb2YgcHJldHR5VVJMIHRvIGp1c3QgY2FsbCBzdHJpbmcuCi0KLSAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwOgotICAgICAgICAoV2Vi
Q29yZTo6Q2hyb21lQ2xpZW50RWZsOjptb3VzZURpZE1vdmVPdmVyRWxlbWVudCk6Ci0gICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwOgotICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0KToKLSAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjphc3NpZ25JZGVudGlmaWVyVG9J
bml0aWFsUmVxdWVzdCk6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6
ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToKLSAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkb3dubG9hZCk6Ci0gICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlckNsaWVudEVmbDo6Y2FuY2VsbGVkRXJyb3IpOgotICAgICAgICAoV2ViQ29yZTo6
RnJhbWVMb2FkZXJDbGllbnRFZmw6OmJsb2NrZWRFcnJvcik6Ci0gICAgICAgICogZXdrL2V3a19m
cmFtZS5jcHA6Ci0gICAgICAgIChld2tfZnJhbWVfaGl0X3Rlc3RfbmV3KToKLSAgICAgICAgKGV3
a19mcmFtZV91cmlfY2hhbmdlZCk6Ci0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAg
ICAgKF9ld2tfdmlld19wcml2X25ldyk6Ci0gICAgICAgIChld2tfdmlld19mcmFtZV9jcmVhdGUp
OgotICAgICAgICAoZXdrX3ZpZXdfcGx1Z2luX2NyZWF0ZSk6Ci0KLTIwMTEtMDUtMTYgIEpvbiBM
ZWUgIDxqb25sZWVAYXBwbGUuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNl
ci4KLQotICAgICAgICBDYW4ndCBob3Jpem9udGFsbHkgc2Nyb2xsIGlmcmFtZXMgYW5kIG92ZXJm
bG93IGJlY2F1c2Ugd2hlZWwgZXZlbnRzIGFyZSBhbHdheXMgYWNjZXB0ZWQKLSAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYwNzc5Ci0KLSAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuaDoKLSAgICAgICAgKFdlYkNvcmU6OkNocm9t
ZUNsaWVudEVmbDo6c2hvdWxkUnViYmVyQmFuZEluRGlyZWN0aW9uKTogRGVmYXVsdCBpbXBsIG9m
IG5ldyBDaHJvbWVDbGllbnQgbWV0aG9kCi0gICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRF
Zmw6Om51bVdoZWVsRXZlbnRIYW5kbGVyc0NoYW5nZWQpOiBEZWZhdWx0IGltcGwgb2YgbmV3IENo
cm9tZUNsaWVudCBtZXRob2QKLQotMjAxMS0wNS0xNiAgR3J6ZWdvcnogQ3phamtvd3NraSAgPGcu
Y3phamtvd3NraUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBBbnRvbmlvIEdv
bWVzLgotCi0gICAgICAgIFtFRkxdIFJlbW92ZSBFQVBJIG1hY3JvIGZyb20gZnVuY3Rpb25zIGRl
ZmluaXRpb24KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTYwNzU0Ci0KLSAgICAgICAgVGhpcyBtYWNybyBzaG91bGQgYmUgdXNlZCBpbiBoZWFkZXIgZmls
ZXMgb25seS4KLSAgICAgICAgSXQncyBub3QgbmVjZXNzYXJ5IHRvIGhhdmUgaXQgaW4gZGVmaW5p
dGlvbnMuCi0KLSAgICAgICAgKiBld2svZXdrX2Nvb2tpZXMuY3BwOgotICAgICAgICAoZXdrX2Nv
b2tpZXNfZmlsZV9zZXQpOgotICAgICAgICAoZXdrX2Nvb2tpZXNfY2xlYXIpOgotICAgICAgICAo
ZXdrX2Nvb2tpZXNfZ2V0X2FsbCk6Ci0gICAgICAgIChld2tfY29va2llc19jb29raWVfZGVsKToK
LSAgICAgICAgKGV3a19jb29raWVzX2Nvb2tpZV9mcmVlKToKLSAgICAgICAgKGV3a19jb29raWVz
X3BvbGljeV9zZXQpOgotICAgICAgICAoZXdrX2Nvb2tpZXNfcG9saWN5X2dldCk6Ci0gICAgICAg
ICogZXdrL2V3a193aW5kb3dfZmVhdHVyZXMuY3BwOgotICAgICAgICAoZXdrX3dpbmRvd19mZWF0
dXJlc191bnJlZik6Ci0gICAgICAgIChld2tfd2luZG93X2ZlYXR1cmVzX3JlZik6Ci0gICAgICAg
IChld2tfd2luZG93X2ZlYXR1cmVzX2Jvb2xfcHJvcGVydHlfZ2V0KToKLSAgICAgICAgKGV3a193
aW5kb3dfZmVhdHVyZXNfaW50X3Byb3BlcnR5X2dldCk6Ci0KLTIwMTEtMDUtMTMgIEd5dXlvdW5n
IEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBVbnJldmlld2VkLiBG
aXggc3R5bGUgZXJyb3IuCi0KLSAgICAgICAgKiBld2svZXdrX2hpc3RvcnkuY3BwOgotCi0yMDEx
LTA1LTEzICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+Ci0KLSAgICAg
ICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCi0KLSAgICAgICAgW0VG
TF0gTW92ZSBld2tfdmlld19kcGlfZ2V0KCkgdG8gZXdrX3V0aWwuY3BwCi0gICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MDc1MwotCi0gICAgICAgIE1vdmUg
ZXdrX3ZpZXdfZHBpX2dldCgpIHRvIGV3a191dGlsLmNwcAotCi0gICAgICAgICogZXdrL2V3a19w
cml2YXRlLmg6Ci0gICAgICAgICogZXdrL2V3a191dGlsLmNwcDoKLSAgICAgICAgKGV3a191dGls
X2RwaV9nZXQpOgotICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChfZXdrX3Zp
ZXdfdmlld3BvcnRfYXR0cmlidXRlc19jb21wdXRlKToKLQotMjAxMS0wNS0xMSAgR3l1eW91bmcg
S2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEFu
dG9uaW8gR29tZXMuCi0KLSAgICAgICAgW0VGTF0gUmVtb3ZlIGZpeGVkX2xheW91dCBzdHJ1Y3R1
cmUgaW4gZXdrX3ZpZXcKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTYwNjE1Ci0KLSAgICAgICAgUmVtb3ZlIHVubmVjZXNzYXJ5IGZpeGVkX2xheW91dCBz
dHJ1Y3R1cmUuIFRoZSBld2tfdmlld19maXhlZF9sYXlvdXRfc2l6ZV9zZXQvZ2V0KCkKLSAgICAg
ICAgdXNlIFdlYkNvcmUncyBmdW5jdGlvbnMgZGlyZWN0bHkuCi0KLSAgICAgICAgKiBld2svZXdr
X3ZpZXcuY3BwOgotICAgICAgICAoZXdrX3ZpZXdfZml4ZWRfbGF5b3V0X3NpemVfc2V0KToKLSAg
ICAgICAgKGV3a192aWV3X2ZpeGVkX2xheW91dF9zaXplX2dldCk6Ci0KLTIwMTEtMDUtMTEgIFRv
bWFzeiBNb3Jhd3NraSAgPHQubW9yYXdza2lAc2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgUnViYmVy
LXN0YW1wZWQgYnkgRGFuaWVsIEJhdGVzLgotCi0gICAgICAgIEFkZGVkIG1pc3NpbmcgREFUQUJB
U0UgbWFjcm8KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTYwNDM3Ci0KLSAgICAgICAgKiBld2svZXdrX3NldHRpbmdzLmNwcDoKLSAgICAgICAgKGV3a19z
ZXR0aW5nc193ZWJfZGF0YWJhc2VfZGVmYXVsdF9xdW90YV9nZXQpOgotCi0yMDExLTA1LTA4ICBL
YW1pbCBCbGFuayAgPGsuYmxhbmtAc2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkg
QW50b25pbyBHb21lcy4KLQotICAgICAgICBBZGRlZCBuZXcgY29tbWFuZHMgdG8gYmUgY2FsbGVk
IGJ5IGV3a192aWV3X2VkaXRvcl9jb21tYW5kLgotICAgICAgICBEdWUgdG8gdGhpcyBjaGFuZ2Ug
ZXdrX3ZpZXdfc2VsZWN0XyogZnVuY3Rpb25zIGhhdmUgYmVlbiByZW1vdmVkLgotICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjA0MzUKLQotICAgICAgICAq
IGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChld2tfdmlld19leGVjdXRlX2VkaXRvcl9jb21t
YW5kKToKLSAgICAgICAgKiBld2svZXdrX3ZpZXcuaDoKLQotMjAxMS0wNS0wNyAgVG9tYXN6IE1v
cmF3c2tpICA8dC5tb3Jhd3NraUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBE
YW5pZWwgQmF0ZXMuCi0KLSAgICAgICAgW0VGTF0gUmVtb3ZlIGV3a190aWxlX3VudXNlZF9jYWNo
ZV9mcmVlIGZ1bmN0aW9uIGZyb20gcHVibGljIEFQSQotICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjAxNTEKLQotICAgICAgICBUaGUgZXdrX3RpbGVfdW51
c2VkX2NhY2hlX2ZyZWUgZnVuY3Rpb24gc2hvdWxkIGJlIG9ubHkgY2FsbGVkIGJ5Ci0gICAgICAg
IGV3a190aWxlX3VudXNlZF9jYWNoZV91bnJlZiBmdW5jdGlvbi4gQ2FsbGluZyB0aGlzIGZ1bmN0
aW9uIHdpdGhvdXQKLSAgICAgICAgY29uc2lkZXJpbmcgcmVmZXJlbmNlIGNvdW50aW5nIG1heSBs
ZWFkIHRvIGZhdGFsIHJlc3VsdHMuCi0KLSAgICAgICAgKiBld2svZXdrX3RpbGVkX21vZGVsLmM6
Ci0gICAgICAgIChfZXdrX3RpbGVfdW51c2VkX2NhY2hlX2ZyZWUpOgotICAgICAgICAoZXdrX3Rp
bGVfdW51c2VkX2NhY2hlX3VucmVmKToKLSAgICAgICAgKiBld2svZXdrX3RpbGVkX21vZGVsLmg6
Ci0KLTIwMTEtMDUtMDUgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+Ci0KLSAgICAg
ICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCi0KLSAgICAgICAgUmVuYW1lIFNlbGVjdGlvbkNv
bnRyb2xsZXIgdG8gRnJhbWVTZWxlY3Rpb24KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTYwMjM0Ci0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0
b3JDbGllbnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50RWZsOjpoYW5k
bGVFZGl0aW5nS2V5Ym9hcmRFdmVudCk6Ci0KLTIwMTEtMDUtMDQgIENyaXMgTmVja2FyICA8Y2Ru
QGNocm9taXVtLm9yZz4KLQotICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgotCi0gICAg
ICAgIEV4cG9zZSBXZWJWaWV3IGRpcmVjdGx5IHRocm91Z2ggQ2hyb21lQ2xpZW50LgotICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDk5MDIKLQotICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oOgotICAgICAgICAoV2ViQ29yZTo6
Q2hyb21lQ2xpZW50RWZsOjp3ZWJWaWV3KToKLQotMjAxMS0wNS0wNCAgVG9tYXN6IE1vcmF3c2tp
ICA8dC5tb3Jhd3NraUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRo
IFJvaGRlIENocmlzdGlhbnNlbi4KLQotICAgICAgICBbRUZMXSBBZGRlZCBlcnJvciBjaGVjayBm
b3IgX2V3a19pbml0X2JvZHkgcmVzdWx0LgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NjAxNDkKLQotICAgICAgICBUaGUgZXdrX2luaXQgZnVuY3Rpb24g
c2hvdWxkIGJlIGZhaWxlZCB3aGVuIF9ld2tfaW5pdF9ib2R5IGZ1bmN0aW9uCi0gICAgICAgIHJl
dHVybiBmYWxzZS4KLQotICAgICAgICAqIGV3ay9ld2tfbWFpbi5jcHA6Ci0gICAgICAgIChld2tf
aW5pdCk6Ci0KLTIwMTEtMDUtMDQgIFRhbyBCYWkgIDxtaWNoYWVsYmFpQGNocm9taXVtLm9yZz4K
LQotICAgICAgICBSZXZpZXdlZCBieSBEYXZpZCBLaWx6ZXIuCi0KLSAgICAgICAgUG9wdWxhdGUg
dG91Y2gtaWNvbiB1cmwgdG8gRnJhbWVMb2FkZXJDbGllbnQKLSAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5MTQzCi0KLSAgICAgICAgUmVzcGVjdCB0aGUg
aW50ZXJmYWNlIGNoYW5nZSBpbiBGcmFtZUxvYWRlckNsaWVudAotCi0gICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29yZTo6RnJh
bWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMpOgotICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmg6Ci0KLTIwMTEtMDUtMDQgIEd5dXlv
dW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBi
eSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KLQotICAgICAgICBbRUZMXSBJbml0aWFsaXpl
IHZpZXdwb3J0IGFyZ3VtZW50IGluIGV3a192aWV3LmNwcAotICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjAxNDcKLQotICAgICAgICB2aWV3cG9ydCBjb21w
dXRhdGlvbiBsb2dpYyBjYW4ndCBiZSB3b3JrZWQgY29ycmVjdGx5IGJlY2F1c2Ugdmlld3BvcnQg
YXJndW1lbnQKLSAgICAgICAgaXNuJ3QgaW5pdGlhbGl6ZWQuIFNvLCB3ZSBuZWVkIHRvIGluaXRp
YWxpemUgdmlld3BvcnQgYXJndW1lbnQuCi0KLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgot
ICAgICAgICAoX2V3a192aWV3X3ByaXZfbmV3KToKLQotMjAxMS0wNS0wMyAgTGVhbmRybyBQZXJl
aXJhICA8bGVhbmRyb0Bwcm9mdXNpb24ubW9iaT4KLQotICAgICAgICBbRUZMXSBVbnJldmlld2Vk
IGJ1aWxkIGZpeCBmb3IgTkVUV09SS19CQUNLRU5EPWN1cmwuCi0KLSAgICAgICAgRm9yY2UgbGlu
a2luZyB3aXRoIHpsaWIgc28gdGhhdCB1bmNvbXByZXNzKCkgZXhpc3RzLgotCi0gICAgICAgICog
Q01ha2VMaXN0c0VmbC50eHQ6IEFwcGVuZCB6bGliIGxpYnJhcmllcy4KLQotMjAxMS0wNS0wMiAg
R3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFVucmV2
aWV3ZWQuIFN0eWxlIGVycm9yIGZpeC4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9t
ZUNsaWVudEVmbC5jcHA6Ci0KLTIwMTEtMDQtMjggIEthbWlsIEJsYW5rICA8ay5ibGFua0BzYW1z
dW5nLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBBbnRvbmlvIEdvbWVzLgotCi0gICAgICAg
IE5ldyBBUEkgZm9yIGV4ZWN1dGluZyBFZGl0b3IgQ29tbWFuZHM6IEluc2VydFRleHQsIEluc2Vy
dEltYWdlLgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NTQ0MzkKLQotICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChfZXdrX3ZpZXdf
ZWRpdG9yX2NvbW1hbmQpOiBBZGRlZCB2YWx1ZSBwYXJhbWV0ZXIuCi0gICAgICAgIChld2tfdmll
d19leGVjdXRlX2VkaXRvcl9jb21tYW5kKTogQWRkZWQuCi0gICAgICAgICogZXdrL2V3a192aWV3
Lmg6IE5ldyBBUEkgYWRkZWQuCi0KLTIwMTEtMDQtMjYgIEdyemVnb3J6IEN6YWprb3dza2kgIDxn
LmN6YWprb3dza2lAc2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBH
b21lcy4KLQotICAgICAgICBbRUZMXSBVcGRhdGUgc2lnbmFscyBkZXNjcmlwdGlvbgotICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTY5MDQKLQotICAgICAg
ICBBZGQsIGZpeCBzaWduYWxzIGRlc2NyaXB0aW9uIHRoYXQgYXJlIGVtaXR0ZWQgYnkgZXZhc19v
YmplY3Rfc21hcnRfY2FsbGNhYmNrX2NhbGwgaW4KLSAgICAgICAgZXdrX3ZpZXcsIGV3a19mcmFt
ZSwgZXdrX2NvbnRleHRtZW51LgotCi0gICAgICAgICogZXdrL2V3a19jb250ZXh0bWVudS5oOgot
ICAgICAgICAqIGV3ay9ld2tfZnJhbWUuaDoKLSAgICAgICAgKiBld2svZXdrX3ZpZXcuaDoKLQot
MjAxMS0wNC0yNSAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3VuZy5jb20+Ci0KLSAgICAg
ICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21lcy4KLQotICAgICAgICBbRUZMXSBSZW1vdmUgZXdr
X2VhcGkuaAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NTkwOTEKLQotICAgICAgICAqIGV3ay9FV2ViS2l0Lmg6Ci0gICAgICAgICogZXdrL2V3a19jb250
ZXh0bWVudS5oOgotICAgICAgICAqIGV3ay9ld2tfY29va2llcy5oOgotICAgICAgICAqIGV3ay9l
d2tfZWFwaS5oOiBSZW1vdmVkLgotICAgICAgICAqIGV3ay9ld2tfZnJhbWUuaDoKLSAgICAgICAg
KiBld2svZXdrX2hpc3RvcnkuaDoKLSAgICAgICAgKiBld2svZXdrX21haW4uaDoKLSAgICAgICAg
KiBld2svZXdrX3NldHRpbmdzLmg6Ci0gICAgICAgICogZXdrL2V3a190aWxlZF9tYXRyaXguaDoK
LSAgICAgICAgKiBld2svZXdrX3RpbGVkX21vZGVsLmg6Ci0gICAgICAgICogZXdrL2V3a193aW5k
b3dfZmVhdHVyZXMuaDoKLQotMjAxMS0wNC0yMSAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0
Lm9yZz4KLQotICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgotCi0gICAgICAgIEFkZCBG
cmFtZSogdG8gdGhlIGFyZ3VtZW50IGxpc3RzIG9mIGNhbkNvcHlDdXQgYW5kIGNhblBhc3RlCi0g
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTE1MwotCi0g
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdl
YkNvcmU6OkVkaXRvckNsaWVudEVmbDo6Y2FuQ29weUN1dCk6Ci0gICAgICAgIChXZWJDb3JlOjpF
ZGl0b3JDbGllbnRFZmw6OmNhblBhc3RlKToKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0
b3JDbGllbnRFZmwuaDoKLQotMjAxMS0wNC0xOSAgVnNldm9sb2QgVmxhc292ICA8dnNldmlrQGNo
cm9taXVtLm9yZz4KLQotICAgICAgICBSZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFuLgotCi0gICAg
ICAgIFdlYiBJbnNwZWN0b3I6IFJlbmFtZSBsZW5ndGhSZWNlaXZlZCB0byBlbmNvZGVkRGF0YUxl
bmd0aC9kYXRhTGVuZ3RoCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD01ODg4MwotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3Bh
dGNoRGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGgpOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50RWZsLmg6Ci0KLTIwMTEtMDQtMTggIFNoZXJpZmYgQm90ICA8d2Via2l0
LnJldmlldy5ib3RAZ21haWwuY29tPgotCi0gICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0
IHI4NDE1NS4KLSAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvODQxNTUK
LSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU4ODAyCi0K
LSAgICAgICAgInBhaW50RW50aXJlQ29udGVudHMgZmxhZyBpcyB1c2VkIGZvciBwYWludGluZyBv
dXRzaWRlIG9mIHRoZQotICAgICAgICBzY3JlZW4uIEl0J3Mgbm90IHRoZSByaWdodCB3YXkgdG8g
Zml4IEVGTCB0aWxlZCBiYWNraW5nCi0gICAgICAgIHN0b3JlLiIgKFJlcXVlc3RlZCBieSBkZW1h
cmNoaSBvbiAjd2Via2l0KS4KLQotICAgICAgICAqIGV3ay9ld2tfdmlld190aWxlZC5jOgotICAg
ICAgICAoX2V3a192aWV3X3RpbGVkX3NtYXJ0X2FkZCk6Ci0KLTIwMTEtMDQtMTggIEV1bnNvbCBQ
YXJrICA8ZXVuc29sNDcucGFya0BzYW1zdW5nLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBF
cmljIFNlaWRlbC4KLQotICAgICAgICBbRUZMXSBTY3JvbGwgZG9lc24ndCB3b3JrIG9uIHRpbGVk
IGJhY2tpbmcgc3RvcmUKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTU1MDIxCi0KLSAgICAgICAgU2Nyb2xsIGRvZXNuJ3Qgd29yayBvbiB0aWxlZCBiYWNr
aW5nIHN0b3JlLCBidXQgaXQgd29ya3Mgb24gc2luZ2xlLgotICAgICAgICBJZiBld2tfZnJhbWVf
cGFpbnRfZnVsbF9zZXQoKSBzZXQgVHJ1ZSwgdmlldyBzaXplIHJldHVybiBjb250ZW50IHNpemUg
YW5kIHNjcm9sbCBjYW4ndCBiZSBtYWRlLiAKLSAgICAgICAgc28sIGV3a19mcmFtZV9wYWludF9m
dWxsX3NldCgpIGlzIHJlbW92ZWQgZnJvbSBld2tfdGlsZWRfc21hcnRfYWRkKCkuCi0KLSAgICAg
ICAgKiBld2svZXdrX3ZpZXdfdGlsZWQuYzoKLSAgICAgICAgKF9ld2tfdmlld190aWxlZF9zbWFy
dF9hZGQpOgotCi0yMDExLTA0LTE0ICBHcnplZ29yeiBDemFqa293c2tpICA8Zy5jemFqa293c2tp
QHNhbXN1bmcuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEFudG9uaW8gR29tZXMuCi0KLSAg
ICAgICAgTWVtb3J5IGNhY2hlIEFQSQotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NTgwMTYKLQotICAgICAgICAqIGV3ay9ld2tfc2V0dGluZ3MuY3BwOgot
ICAgICAgICAoZXdrX3NldHRpbmdzX2NhY2hlX2VuYWJsZV9nZXQpOgotICAgICAgICAoZXdrX3Nl
dHRpbmdzX2NhY2hlX2VuYWJsZV9zZXQpOgotICAgICAgICAoZXdrX3NldHRpbmdzX2NhY2hlX2Nh
cGFjaXR5X3NldCk6Ci0gICAgICAgICogZXdrL2V3a19zZXR0aW5ncy5oOgotCi0yMDExLTA0LTEz
ICBHcnplZ29yeiBDemFqa293c2tpICA8Zy5jemFqa293c2tpQHNhbXN1bmcuY29tPgotCi0gICAg
ICAgIFJldmlld2VkIGJ5IEtlbnQgVGFtdXJhLgotCi0gICAgICAgIFtFRkxdIERveHlnZW4gZG9j
dW1lbnRhdGlvbiBmb3IgZXdrX21haW4sIGV3a19oaXN0b3J5IGFuZCB0b29scwotICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTg0MjgKLQotICAgICAgICAq
IGV3ay9FV2ViS2l0Lmg6Ci0gICAgICAgICogZXdrL2V3a19lYXBpLmg6Ci0gICAgICAgICogZXdr
L2V3a19oaXN0b3J5Lmg6Ci0gICAgICAgICogZXdrL2V3a19sb2dnaW5nLmg6Ci0gICAgICAgICog
ZXdrL2V3a19tYWluLmNwcDoKLSAgICAgICAgKiBld2svZXdrX21haW4uaDoKLSAgICAgICAgKiBl
d2svZXdrX3ByaXZhdGUuaDoKLSAgICAgICAgKiBld2svZXdrX3V0aWwuY3BwOgotICAgICAgICAq
IGV3ay9ld2tfdXRpbC5oOgotCi0yMDExLTA0LTExICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5r
aW1Ac2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJp
c3RpYW5zZW4uCi0KLSAgICAgICAgW0VGTF0gQWRqdXN0IGRwaSB2YWx1ZSB0byB2aWV3cG9ydCBj
b21wdXRhdGlvbi4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTU4MTMwCi0KLSAgICAgICAgSW4gdmlld3BvcnQgY29tcHV0YXRpb24sIEVGTCBwb3J0IGhh
dmUgdXNlZCAxNjAgdmFsdWUgZm9yIERQSSBzaW5jZSBub3cuCi0gICAgICAgIEJ1dCwgd2UgaGF2
ZSB0byB1c2UgZGV2aWNlJ3MgZHBpIHZhbHVlIGZvciB2aWV3cG9ydCBtZXRhIHRhZyBjb21wdXRh
dGlvbi4KLQotICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChfZXdrX3ZpZXdf
dmlld3BvcnRfYXR0cmlidXRlc19jb21wdXRlKToKLQotMjAxMS0wNC0xMCAgR3l1eW91bmcgS2lt
ICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEVyaWMg
Q2FybHNvbi4KLQotICAgICAgICBbRUZMXSBBZGQgc2VlayBmb3J3YXJkIC8gYmFja3dhcmQgYnV0
dG9ucyB0byBNZWRpYUNvbnRyb2wgVUkuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD01NjgxMAotCi0gICAgICAgIEFkZCBzZWVrIGZvcndhcmQgLyBiYWNr
d2FyZCBidXR0b25zIHRvIG1lZGlhIGNvbnRyb2wuCi0KLSAgICAgICAgKiBEZWZhdWx0VGhlbWUv
ZGVmYXVsdC5lZGM6Ci0gICAgICAgICogRGVmYXVsdFRoZW1lL3dpZGdldC9tZWRpYWNvbnRyb2wv
c2Vla2JhY2t3YXJkYnV0dG9uL3NlZWtiYWNrd2FyZF9idXR0b24uZWRjOiBBZGRlZC4KLSAgICAg
ICAgKiBEZWZhdWx0VGhlbWUvd2lkZ2V0L21lZGlhY29udHJvbC9zZWVrYmFja3dhcmRidXR0b24v
c2Vla2JhY2t3YXJkYnV0dG9uLnBuZzogQWRkZWQuCi0gICAgICAgICogRGVmYXVsdFRoZW1lL3dp
ZGdldC9tZWRpYWNvbnRyb2wvc2Vla2ZvcndhcmRidXR0b24vc2Vla2ZvcndhcmRfYnV0dG9uLmVk
YzogQWRkZWQuCi0gICAgICAgICogRGVmYXVsdFRoZW1lL3dpZGdldC9tZWRpYWNvbnRyb2wvc2Vl
a2ZvcndhcmRidXR0b24vc2Vla2ZvcndhcmRidXR0b24ucG5nOiBBZGRlZC4KLQotMjAxMS0wNC0w
NCAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KLQotICAgICAgICBSZXZpZXdl
ZCBieSBSeW9zdWtlIE5pd2EuCi0KLSAgICAgICAgW1JlZmFjdG9yaW5nXSBTcGVsbENoZWNraW5n
UmVzdWx0IHNob3VsZCBiZSByZXBsYWNlZCB3aXRoIFRleHRDaGVja2luZ1Jlc3VsdAotICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTYwODUKLSAgICAgICAg
Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmg6Ci0gICAgICAgIChX
ZWJDb3JlOjpFZGl0b3JDbGllbnRFZmw6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKToKLQotMjAx
MS0wNC0wMSAgR3J6ZWdvcnogQ3phamtvd3NraSAgPGcuY3phamtvd3NraUBzYW1zdW5nLmNvbT4K
LQotICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KLQotICAg
ICAgICBbRUZMXSBTeW5jaHJvbml6YXRpb24gYmV0d2VlbiBXZWJDb3JlJ3MgQ29udGV4dE1lbnVJ
dGVtLmggYW5kIGV3a19jb250ZXh0bWVudS5oCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD01NzAwMAotCi0gICAgICAgICogZXdrL2V3a19jb250ZXh0bWVu
dS5oOgotCi0yMDExLTAzLTMxICBFdmFuIE1hcnRpbiAgPGV2YW5AY2hyb21pdW0ub3JnPgotCi0g
ICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgotCi0gICAgICAgIDx0aXRsZT4gc2hvdWxk
IHN1cHBvcnQgZGlyIGF0dHJpYnV0ZQotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NTA5NjEKLQotICAgICAgICBVcGRhdGUgdG8gbmV3IEZyYW1lTG9hZGVy
Q2xpZW50IGludGVyZmFjZS4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpk
aXNwYXRjaERpZFJlY2VpdmVUaXRsZSk6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNs
aWVudEVmbDo6c2V0VGl0bGUpOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50RWZsLmg6Ci0KLTIwMTEtMDMtMjkgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBz
YW1zdW5nLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBBbnRvbmlvIEdvbWVzLgotCi0gICAg
ICAgIFtFRkxdIFJlbW92ZSB1bm5lY2Vzc2FyeSBld2tfdmlld192aWV3cG9ydF9hdHRyaWJ1dGVz
X3NldCgpIGludm9jYXRpb24KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTU3MjIyCi0KLSAgICAgICAgV2ViQ29yZSBzZW5kcyB2aWV3cG9ydCBzaWduYWwg
d2hlbmV2ZXIgdmlld3BvcnQgaXMgY2hhbmdlZCBieSBQYWdlOjp1cGRhdGVWaWV3cG9ydEFyZ3Vt
ZW50cygpLgotICAgICAgICBUaHVzLCB3ZSBkb24ndCBuZWVkIHRvIGNhbGwgZXdrX3ZpZXdfdmll
d3BvcnRfYXR0cmlidXRlc19zZXQoKSB3aXRoIGR1bW15IHZpZXdwb3J0IGRhdGEKLSAgICAgICAg
YW55bW9yZS4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZs
LmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERp
ZENvbW1pdExvYWQpOgotCi0yMDExLTAzLTI3ICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUB3
ZWJraXQub3JnPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCi0KLSAgICAg
ICAgRml4IGFnZW50T1MoKSBpbiBGcmFtZUxvYWRlckNsaWVudEVmbAotICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTcxNzcKLQotICAgICAgICBSZXBsYWNl
IG9sZCBQTEFURk9STSBtYWNybyB3aXRoIE9TIGFuZCBDUFUuCi0KLSAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjphZ2Vu
dE9TKToKLQotMjAxMS0wMy0yNyAgUGF0cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Via2l0Lm9y
Zz4KLQotICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgotCi0gICAgICAgIFtFRkxd
IFVzZSBhbiBhcHByb3ByaWF0ZSB1c2VyIGFnZW50IHN0cmluZwotICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTcxNzYKLQotICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OmNvbXBv
c2VVc2VyQWdlbnQpOgotCi0yMDExLTAzLTI1ICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNv
bT4KLQotICAgICAgICBSZXZpZXdlZCBieSBBZGVsZSBQZXRlcnNvbi4KLQotICAgICAgICBSRUdS
RVNTSU9OIChyNzA3NDgpOiBsYXRlc3QgbmlnaHRseSBidWlsZHMga2lsbHMgQUNfUXVpY2tUaW1l
LmpzCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00OTAx
NgotCi0gICAgICAgIFVwZGF0ZSBvYmplY3RDb250ZW50VHlwZSgpIGltcGxlbWVudGF0aW9uIHRv
IGhhbmRsZSB0aGUKLSAgICAgICAgc2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcyBmbGFnLgot
Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwOgotICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6Om9iamVjdENvbnRlbnRUeXBlKToK
LSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5oOgotCi0yMDEx
LTAzLTI0ICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+Ci0KLSAgICAg
ICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21lcy4KLQotICAgICAgICBbRUZMXSBBZGQgc291bmQg
LyBtdXRlIGJ1dHRvbiB0byBNZWRpYUNvbnRyb2wgVUkKLSAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2NzI2Ci0KLSAgICAgICAgQWRkIHNvdW5kIC8gbXV0
ZSBidXR0b24gdG8gTWVkaWFDb250cm9sIFVJLgotCi0gICAgICAgICogRGVmYXVsdFRoZW1lL2Rl
ZmF1bHQuZWRjOgotICAgICAgICAqIERlZmF1bHRUaGVtZS93aWRnZXQvbWVkaWFjb250cm9sL211
dGVidXR0b24vbXV0ZV9idXR0b24uZWRjOiBBZGRlZC4KLSAgICAgICAgKiBEZWZhdWx0VGhlbWUv
d2lkZ2V0L21lZGlhY29udHJvbC9tdXRlYnV0dG9uL211dGVidXR0b24ucG5nOiBBZGRlZC4KLSAg
ICAgICAgKiBEZWZhdWx0VGhlbWUvd2lkZ2V0L21lZGlhY29udHJvbC9tdXRlYnV0dG9uL3VubXV0
ZWJ1dHRvbi5wbmc6IEFkZGVkLgotCi0yMDExLTAzLTI0ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5y
ZXZpZXcuYm90QGdtYWlsLmNvbT4KLQotICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCBy
ODE5MTYgYW5kIHI4MTkxNy4KLSAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2Vz
ZXQvODE5MTYKLSAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvODE5MTcK
LSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU3MDcxCi0K
LSAgICAgICAgYnJva2UgYSB0ZXN0IG9uIHBsYXRmb3JtcyB0aGF0IGRvIG5vdCBoYXZlIFF1aWNr
VGltZSBpbnN0YWxsZWQKLSAgICAgICAgKFJlcXVlc3RlZCBieSBlc3RlcyBvbiAjd2Via2l0KS4K
LQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcDoKLSAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpvYmplY3RDb250ZW50VHlwZSk6
Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuaDoKLQotMjAx
MS0wMy0yNCAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+Ci0KLSAgICAgICAgUmV2aWV3
ZWQgYnkgRGFyaW4gQWRsZXIuCi0KLSAgICAgICAgUkVHUkVTU0lPTiAocjcwNzQ4KTogbGF0ZXN0
IG5pZ2h0bHkgYnVpbGRzIGtpbGxzIEFDX1F1aWNrVGltZS5qcwotICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDkwMTYKLQotICAgICAgICBVcGRhdGUgb2Jq
ZWN0Q29udGVudFR5cGUoKSBpbXBsZW1lbnRhdGlvbiB0byBoYW5kbGUgdGhlCi0gICAgICAgIHNo
b3VsZFByZWZlclBsdWdJbnNGb3JJbWFnZXMgZmxhZy4KLQotICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyQ2xpZW50RWZsOjpvYmplY3RDb250ZW50VHlwZSk6Ci0gICAgICAgICogV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuaDoKLQotMjAxMS0wMy0yMyAgQnJhZHkgRWlkc29uICA8
YmVpZHNvbkBhcHBsZS5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KLQot
ICAgICAgICBDaGFuZ2UgSWNvbkRhdGFiYXNlIG9wZW5pbmcgdG8gYWxsb3cgZm9yIGFyYml0cmFy
eSBmaWxlbmFtZXMKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTU2OTc3Ci0KLSAgICAgICAgKiBld2svZXdrX3NldHRpbmdzLmNwcDoKLSAgICAgICAgKGV3
a19zZXR0aW5nc19pY29uX2RhdGFiYXNlX3BhdGhfc2V0KToKLQotMjAxMS0wMy0yMyAgR3l1eW91
bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5
IEFudG9uaW8gR29tZXMuCi0KLSAgICAgICAgW0VGTF0gQWRkIHBsYXkgLyBwYXVzZSBidXR0b24g
dG8gbWVkaWEgY29udHJvbAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NTU0NjMKLQotICAgICAgICBBZGQgcGxheXxwYXVzZSBidXR0b24gdG8gbWVkaWEg
Y29udHJvbC4KLQotICAgICAgICAqIERlZmF1bHRUaGVtZS9kZWZhdWx0LmVkYzoKLSAgICAgICAg
KiBEZWZhdWx0VGhlbWUvd2lkZ2V0L21lZGlhY29udHJvbC9wbGF5cGF1c2VidXR0b24vcGF1c2Vi
dXR0b24ucG5nOiBBZGRlZC4KLSAgICAgICAgKiBEZWZhdWx0VGhlbWUvd2lkZ2V0L21lZGlhY29u
dHJvbC9wbGF5cGF1c2VidXR0b24vcGxheWJ1dHRvbi5wbmc6IEFkZGVkLgotICAgICAgICAqIERl
ZmF1bHRUaGVtZS93aWRnZXQvbWVkaWFjb250cm9sL3BsYXlwYXVzZWJ1dHRvbi9wbGF5cGF1c2Vf
YnV0dG9uLmVkYzogQWRkZWQuCi0KLTIwMTEtMDMtMjIgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5n
LmtpbUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBBbnRvbmlvIEdvbWVzLgot
Ci0gICAgICAgIFtFRkxdIENoYW5nZSByZXR1cm4gdmFsdWVzIHdpdGggYmV0dGVyIG9uZSBpbiBl
d2tfc2V0dGluZydzIGZ1bmN0aW9ucwotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NTY4MTkKLQotICAgICAgICBJbiBld2tfc2V0dGluZ3NfY2FjaGVfZGly
ZWN0b3J5X3BhdGhfc2V0X3h4eCwgdGhleSByZXR1cm4gZmFsc2UgdmFsdWUKLSAgICAgICAgd2hl
biBzb3VwIGlzIGRpc2FibGVkLiBJdCBpcyBiZXR0ZXIgdG8gdXNlIEVJTkFfU0FGRVRZX09OX1RS
VUVfUkVUVVJOX1hYWC4KLQotICAgICAgICAqIGV3ay9ld2tfc2V0dGluZ3MuY3BwOgotICAgICAg
ICAoZXdrX3NldHRpbmdzX3Byb3h5X3VyaV9nZXQpOgotICAgICAgICAoZXdrX3NldHRpbmdzX2Nh
Y2hlX2RpcmVjdG9yeV9wYXRoX3NldCk6Ci0gICAgICAgIChld2tfc2V0dGluZ3NfY2FjaGVfZGly
ZWN0b3J5X3BhdGhfZ2V0KToKLQotMjAxMS0wMy0yMiAgR3J6ZWdvcnogQ3phamtvd3NraSAgPGcu
Y3phamtvd3NraUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBLZW50IFRhbXVy
YS4KLQotICAgICAgICBBZGQgdm9pZCB0byBmdW5jdGlvbiB3aXRob3V0IHBhcmFtZXRlcnMKLSAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2ODIxCi0KLSAg
ICAgICAgKiBld2svZXdrX2Nvb2tpZXMuY3BwOgotICAgICAgICAoZXdrX2Nvb2tpZXNfY2xlYXIp
OgotICAgICAgICAoZXdrX2Nvb2tpZXNfcG9saWN5X2dldCk6Ci0gICAgICAgICogZXdrL2V3a19j
b29raWVzLmg6Ci0gICAgICAgICogZXdrL2V3a19wcml2YXRlLmg6Ci0gICAgICAgICogZXdrL2V3
a19zZXR0aW5ncy5jcHA6Ci0gICAgICAgIChld2tfc2V0dGluZ3Nfd2ViX2RhdGFiYXNlX2RlZmF1
bHRfcXVvdGFfZ2V0KToKLSAgICAgICAgKGV3a19zZXR0aW5nc193ZWJfZGF0YWJhc2VfcGF0aF9n
ZXQpOgotICAgICAgICAoZXdrX3NldHRpbmdzX3Byb3h5X3VyaV9nZXQpOgotICAgICAgICAoZXdr
X3NldHRpbmdzX2RlZmF1bHRfdXNlcl9hZ2VudF9nZXQpOgotICAgICAgICAqIGV3ay9ld2tfc2V0
dGluZ3MuaDoKLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoZXdrX3ZpZXdf
ZHBpX2dldCk6Ci0KLTIwMTEtMDMtMTcgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29t
PgotCi0gICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCi0KLSAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2NDI1Ci0gICAgICAgIE1vcmUgZ3JvdW5k
d29yayBmb3IgV2ViS2l0MiBJY29uRGF0YWJhc2UKLQotICAgICAgICBVcGRhdGUgYWxyZWFkeS11
c2VkIGZ1bmN0aW9uIG5hbWVzOgotICAgICAgICAqIGV3ay9ld2tfaGlzdG9yeS5jcHA6Ci0gICAg
ICAgIChld2tfaGlzdG9yeV9pdGVtX2ljb25fc3VyZmFjZV9nZXQpOgotICAgICAgICAoZXdrX2hp
c3RvcnlfaXRlbV9pY29uX29iamVjdF9hZGQpOgotICAgICAgICAqIGV3ay9ld2tfc2V0dGluZ3Mu
Y3BwOgotICAgICAgICAoZXdrX3NldHRpbmdzX2ljb25fZGF0YWJhc2VfaWNvbl9zdXJmYWNlX2dl
dCk6Ci0gICAgICAgIChld2tfc2V0dGluZ3NfaWNvbl9kYXRhYmFzZV9pY29uX29iamVjdF9hZGQp
OgotCi0yMDExLTAzLTE2ICBKb3NlcGggUGVjb3Jhcm8gIDxqb2VwZWNrQHdlYmtpdC5vcmc+Ci0K
LSAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCi0KLSAgICAg
ICAgVmlld3BvcnQgbm8gbG9uZ2VyIGFsbG93cyBhbiBhdXRvIHZhbHVlIGZvciAidXNlci1zY2Fs
YWJsZSIKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU1
NDE2Ci0KLSAgICAgICAgTWFrZSB0aGUgZGVmYXVsdCB2YWx1ZSBmb3IgdXNlclNjYWxhYmxlIGJl
IHRydWUuCi0KLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoZXdrX3ZpZXdf
dmlld3BvcnRfYXR0cmlidXRlc19nZXQpOgotCi0yMDExLTAzLTE0ICBCcmFkeSBFaWRzb24gIDxi
ZWlkc29uQGFwcGxlLmNvbT4KLQotICAgICAgICBUcnkgdG8gZml4IHRoZSBFRkwgYnVpbGQtYnVz
dGFnZSB0aGF0IHRoZWlyIEVXUyBib3QgZGlkIG5vdCBzZWUsIGJ1dCB0aGVpciBjb3JlLWJ1aWxk
ZXIgZGlkLiAgKHNpZ2gpCi0KLSAgICAgICAgKiBld2svZXdrX2hpc3RvcnkuY3BwOgotICAgICAg
ICAoZXdrX2hpc3RvcnlfaXRlbV9pY29uX3N1cmZhY2VfZ2V0KToKLSAgICAgICAgKGV3a19oaXN0
b3J5X2l0ZW1faWNvbl9vYmplY3RfYWRkKToKLQotMjAxMS0wMy0xNCAgQnJhZHkgRWlkc29uICA8
YmVpZHNvbkBhcHBsZS5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJzIENhcmxzc29u
LgotCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjMy
MAotICAgICAgICBSZW1vdmUgSGlzdG9yeUl0ZW06Omljb24oKSBhbmQgdGhlIFdlYkNvcmUgZGVw
ZW5kZW5jeSBvbiAiSWNvbkRhdGFiYXNlQmFzZTo6ZGVmYXVsdEljb24oKSIKLQotICAgICAgICAq
IGV3ay9ld2tfaGlzdG9yeS5jcHA6Ci0gICAgICAgIChld2tfaGlzdG9yeV9pdGVtX2ljb25fc3Vy
ZmFjZV9nZXQpOiBVc2UgSWNvbkRhdGFiYXNlIGRpcmVjdGx5LgotCi0yMDExLTAzLTE0ICBSeXVh
biBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBL
ZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KLQotICAgICAgICBbRUZMXSBNb3ZlIGNhY2hlX2Rp
cmVjdG9yeSBhcGkKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTUyMTM5Ci0KLSAgICAgICAgTW92ZSBjYWNoZSBkaXJlY3RvcnkgcmVsYXRlZCBhcGlzIGZy
b20gZXdrX3ZpZXcgdG8gZXdrX3NldHRpbmdzIGJlY2F1c2UKLSAgICAgICAgdGhvc2UgYXJlIG5v
dCByZWxhdGVkIHRvIGV3a192aWV3LgotCi0gICAgICAgICogZXdrL2V3a19tYWluLmNwcDoKLSAg
ICAgICAgKF9ld2tfaW5pdF9ib2R5KToKLSAgICAgICAgKiBld2svZXdrX3NldHRpbmdzLmNwcDoK
LSAgICAgICAgKGV3a19zZXR0aW5nc19jYWNoZV9kaXJlY3RvcnlfcGF0aF9zZXQpOgotICAgICAg
ICAoZXdrX3NldHRpbmdzX2NhY2hlX2RpcmVjdG9yeV9wYXRoX2dldCk6Ci0gICAgICAgICogZXdr
L2V3a19zZXR0aW5ncy5oOgotICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChf
ZXdrX3ZpZXdfcHJpdl9uZXcpOgotICAgICAgICAoX2V3a192aWV3X3ByaXZfZGVsKToKLSAgICAg
ICAgKiBld2svZXdrX3ZpZXcuaDoKLQotMjAxMS0wMy0xMiAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNo
b2lAc2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgVW5yZXZpZXdlZCBidWlsZCBmaXguCi0KLSAgICAg
ICAgW0VGTF0gRml4IGJ1aWxkIGJyZWFrIGJlY2F1c2Ugb2Ygc2V2ZXJhbCByZWFzb24uCi0gICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjI0NAotCi0gICAg
ICAgICogZXdrL2V3a19zZXR0aW5ncy5jcHA6Ci0gICAgICAgIChld2tfc2V0dGluZ3NfaWNvbl9k
YXRhYmFzZV9wYXRoX3NldCk6Ci0KLTIwMTEtMDMtMTAgIFJ5dWFuIENob2kgIDxyeXVhbi5jaG9p
QHNhbXN1bmcuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEFudG9uaW8gR29tZXMuCi0KLSAg
ICAgICAgW0VGTF0gTGltaXQgdG91Y2ggZXZlbnRzIHdoZW4gb25seSBwYWdlIHJlcXVpcmVkIHRv
dWNoIGV2ZW50cy4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTU0ODU3Ci0KLSAgICAgICAgQmxvY2sgdG91Y2ggZXZlbnRzIHdoZW4gQ2hyb21lQ2xpZW50
OjpuZWVkVG91Y2hFdmVudHMgZ290IGZhbHNlLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQv
Q2hyb21lQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEVmbDo6
bmVlZFRvdWNoRXZlbnRzKToKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRF
ZmwuaDoKLSAgICAgICAgKiBld2svZXdrX2ZyYW1lLmNwcDoKLSAgICAgICAgKGV3a19mcmFtZV9m
ZWVkX3RvdWNoX2V2ZW50KToKLSAgICAgICAgKiBld2svZXdrX3ByaXZhdGUuaDoKLSAgICAgICAg
KiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoZXdrX3ZpZXdfbmVlZF90b3VjaF9ldmVudHNf
c2V0KToKLSAgICAgICAgKGV3a192aWV3X25lZWRfdG91Y2hfZXZlbnRzX2dldCk6Ci0KLTIwMTEt
MDMtMDggIEdyemVnb3J6IEN6YWprb3dza2kgIDxnLmN6YWprb3dza2lAc2Ftc3VuZy5jb20+Ci0K
LSAgICAgICAgUmV2aWV3ZWQgYnkgS2VudCBUYW11cmEuCi0KLSAgICAgICAgW0VGTF0gRG94eWdl
biBkb2N1bWVudGF0aW9uIGZvciBld2tfd2luZG93X2ZlYXR1cmVzIGFuZCBld2tfY29udGV4dF9t
ZW51Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NTAy
NgotCi0gICAgICAgICogZXdrL2V3a19jb250ZXh0bWVudS5jcHA6Ci0gICAgICAgIChld2tfY29u
dGV4dF9tZW51X2l0ZW1fc2VsZWN0KTogcmV0dXJucyBFSU5BX0ZBTFNFIHdoZW4gQ09OVEVYVF9N
RU5VIGlzIGRpc2FibGVkCi0gICAgICAgICogZXdrL2V3a19jb250ZXh0bWVudS5oOgotICAgICAg
ICAqIGV3ay9ld2tfd2luZG93X2ZlYXR1cmVzLmNwcDoKLSAgICAgICAgKiBld2svZXdrX3dpbmRv
d19mZWF0dXJlcy5oOgotCi0yMDExLTAzLTA3ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+
Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJzIENhcmxzc29uLgotCi0gICAgICAgIFJlcGxh
Y2UgV2ViS2l0MidzIGRlY2lkZVBvbGljeUZvck1JTUVUeXBlIHdpdGggZGVjaWRlUG9saWN5Rm9y
UmVzcG9uc2UKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTU1ODI3Ci0KLSAgICAgICAgUmVuYW1lZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNp
ZGVQb2xpY3lGb3JNSU1FVHlwZSB0byBkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlCi0g
ICAgICAgIGFuZCBwYXNzIHRoZSBlbnRpcmUgcmVzcG9uc2UsIGluc3RlYWQgb2YganVzdCB0aGUg
TUlNRVR5cGUuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVm
bC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hE
ZWNpZGVQb2xpY3lGb3JSZXNwb25zZSk6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRFZmwuaDoKLQotMjAxMS0wMy0wNCAgR3J6ZWdvcnogQ3phamtvd3NraSAgPGcu
Y3phamtvd3NraUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBLZW50IFRhbXVy
YS4KLQotICAgICAgICBbRUZMXSBEb3h5Z2VuIGRvY3VtZW50YXRpb24gZm9yIGV3a19zZXR0aW5n
cwotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTU2NjcK
LQotICAgICAgICAqIGV3ay9ld2tfc2V0dGluZ3MuY3BwOgotICAgICAgICAoZXdrX3NldHRpbmdz
X2RlZmF1bHRfdXNlcl9hZ2VudF9nZXQpOiBvbmx5IHN0eWxlIGlzIGZpeGVkCi0gICAgICAgICog
ZXdrL2V3a19zZXR0aW5ncy5oOgotCi0yMDExLTAzLTAzICBCcmFkeSBFaWRzb24gIDxiZWlkc29u
QGFwcGxlLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KLQotICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTU3MjEKLSAgICAgICAg
R2xvYmFsIEljb25EYXRhYmFzZSBzaG91bGQgYmUgcmV0dXJuZWQgYnkgcmVmZXJlbmNlLCBub3Qg
YXMgYSBwb2ludGVyCi0KLSAgICAgICAgKiBld2svZXdrX3NldHRpbmdzLmNwcDoKLSAgICAgICAg
KGV3a19zZXR0aW5nc19pY29uX2RhdGFiYXNlX3BhdGhfc2V0KToKLSAgICAgICAgKGV3a19zZXR0
aW5nc19pY29uX2RhdGFiYXNlX3BhdGhfZ2V0KToKLSAgICAgICAgKGV3a19zZXR0aW5nc19pY29u
X2RhdGFiYXNlX2NsZWFyKToKLSAgICAgICAgKGV3a19zZXR0aW5nc19pY29uX2RhdGFiYXNlX2lj
b25fc3VyZmFjZV9nZXQpOgotICAgICAgICAoZXdrX3NldHRpbmdzX2ljb25fZGF0YWJhc2VfaWNv
bl9vYmplY3RfYWRkKToKLQotMjAxMS0wMy0wMyAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFw
cGxlLmNvbT4KLQotICAgICAgICBSZW1vdmluZyBhbiBpbmNsdWRlIG9mIFdlYkNvcmVLZXlib2Fy
ZFVJTW9kZS5oIHRoYXQgSXZlIGp1c3QgYWRkZWQuIEl0J3MgYWxyZWFkeSBpbmNsdWRlZAotICAg
ICAgICB2aWEgQ2hyb21lQ2xpZW50LmgKLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9t
ZUNsaWVudEVmbC5oOgotCi0yMDExLTAzLTAyICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBw
bGUuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgotCi0gICAgICAgIFJF
R1JFU1NJT04gKFdlYktpdDIpOiBUYWIga2V5cyBubyBsb25nZXIgb2JzZXJ2ZSBGdWxsIEtleWJv
YXJkIEFjY2VzcwotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NTU2MzMKLSAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzg5NjMwMjM+Ci0KLSAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwOiAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50
RWZsOjprZXlib2FyZFVJTW9kZSk6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xp
ZW50RWZsLmg6Ci0gICAgICAgIEltcGxlbWVudCBrZXlib2FyZFVJTW9kZSgpIGluc3RlYWQgb2Yg
dGFic1RvTGlua3MoKS4gTm8gY2hhbmdlIGluIGZ1bmN0aW9uYWxpdHksIHNpbmNlCi0gICAgICAg
IHRoaXMgcGxhdGZvcm0gZG9lc24ndCBvYnNlcnZlIG9yIGhhdmUgZnVsbCBrZXlib2FyZCBhY2Nl
c3Mgc3RhdGUuCi0KLTIwMTEtMDMtMDEgIEpvc2VwaCBQZWNvcmFybyAgPGpvZXBlY2tAd2Via2l0
Lm9yZz4KLQotICAgICAgICBVbnJldmlld2VkLiBSb2xsIG91dCByODAwNjggYW5kIHI4MDA3MyBk
dWUgdG8gYnJlYWtpbmcgV2ViS2l0MiBRdCBwb3J0LgotCi0gICAgICAgICogZXdrL2V3a192aWV3
LmNwcDoKLSAgICAgICAgKF9ld2tfdmlld192aWV3cG9ydF9hdHRyaWJ1dGVzX2NvbXB1dGUpOgot
Ci0yMDExLTAzLTAxICBKb3NlcGggUGVjb3Jhcm8gIDxqb2VwZWNrQHdlYmtpdC5vcmc+Ci0KLSAg
ICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCi0KLSAgICAgICAg
Vmlld3BvcnQgV2FybmluZy9FcnJvciBNZXNzYWdlcyBBcmUgTm93IEluYWNjdXJhdGUKLSAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUzNzA3Ci0KLSAgICAg
ICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoX2V3a192aWV3X3ZpZXdwb3J0X2F0dHJp
YnV0ZXNfY29tcHV0ZSk6IHBhc3MgYSBEb2N1bWVudCBpbnRvIGNvbXB1dGVWaWV3cG9ydEF0dHJp
YnV0ZXMgZm9yIHdhcm5pbmdzIHRvIGJlIHJlcG9ydGVkIHRvLgotCi0yMDExLTAyLTI4ICBDaGFu
ZyBTaHUgIDxjc2h1QHdlYmtpdC5vcmc+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgUnlvc3VrZSBO
aXdhLgotCi0gICAgICAgIFJlbW92ZSB0aGUgc3VwcG9ydCBvZiBGcmFtZTo6aXNDb250ZW50RWRp
dGFibGUgYW5kIGl0cyBkZXBlbmRlbmNpZXMuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD01NDI5MgotCi0gICAgICAgIFJlbW92ZSB0aGUgV2ViS2l0IHNp
ZGUgaW1wbGVtZW50YXRpb24uCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGll
bnRFZmwuY3BwOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5oOgot
Ci0yMDExLTAyLTI3ICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+Ci0K
LSAgICAgICAgUmV2aWV3ZWQgYnkgS2VudCBUYW11cmEuCi0KLSAgICAgICAgW0VGTF0gUmVzdG9y
ZSBwYXJhbWV0ZXJzIG9mIGVmbCBoZWFkZXIgZmlsZXMuCi0gICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NTI5MgotCi0gICAgICAgIFJlc3RvcmUgcGFyYW1l
dGVycyBpbiBlZmwgaGVhZGVyIGZpbGVzLgotCi0gICAgICAgICogZXdrL2V3a19mcmFtZS5oOgot
ICAgICAgICAqIGV3ay9ld2tfdGlsZWRfYmFja2luZ19zdG9yZS5oOgotICAgICAgICAqIGV3ay9l
d2tfdGlsZWRfbWF0cml4Lmg6Ci0gICAgICAgICogZXdrL2V3a190aWxlZF9tb2RlbC5oOgotICAg
ICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChld2tfdmlld19wcmVfcmVuZGVyX3Jl
bGF0aXZlX3JhZGl1cyk6Ci0gICAgICAgICogZXdrL2V3a192aWV3Lmg6Ci0gICAgICAgICogZXdr
L2V3a193aW5kb3dfZmVhdHVyZXMuaDoKLQotMjAxMS0wMi0yNiAgR3l1eW91bmcgS2ltICA8Z3l1
eW91bmcua2ltQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEtlbnQgVGFtdXJh
LgotCi0gICAgICAgIFtFRkxdIFJlcGxhY2UgV1RGX1VTRV9TT1VQIG1hY3JvIHdpdGggVVNFKFNP
VVApCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NTI5
NgotCi0gICAgICAgIGV3a19jb29raWVzLmNwcCBhbmQgZXdrX21haW4uY3BwIGFyZSB1c2luZyBX
VEZfVVNFX1NPVVAgbWFjcm8uIAotICAgICAgICBTbywgYWNjb3JkaW5nIHRvIHBvbGljeSBkZWNp
c2lvbiBtYWNybyB1c2FnZSwgdGhlIG1hY3JvIG5lZWRzIHRvIAotICAgICAgICBiZSBjaGFuZ2Vk
IHdpdGggVVNFKFNPVVApLgotCi0gICAgICAgICogZXdrL2V3a19jb29raWVzLmNwcDoKLSAgICAg
ICAgKGV3a19jb29raWVzX2ZpbGVfc2V0KToKLSAgICAgICAgKGV3a19jb29raWVzX2NsZWFyKToK
LSAgICAgICAgKGV3a19jb29raWVzX2dldF9hbGwpOgotICAgICAgICAoZXdrX2Nvb2tpZXNfY29v
a2llX2RlbCk6Ci0gICAgICAgIChld2tfY29va2llc19jb29raWVfZnJlZSk6Ci0gICAgICAgIChl
d2tfY29va2llc19wb2xpY3lfc2V0KToKLSAgICAgICAgKGV3a19jb29raWVzX3BvbGljeV9nZXQp
OgotICAgICAgICAqIGV3ay9ld2tfbWFpbi5jcHA6Ci0gICAgICAgIChfZXdrX2luaXRfYm9keSk6
Ci0KLTIwMTEtMDItMjQgIFBldGVyIEthc3RpbmcgIDxwa2FzdGluZ0Bnb29nbGUuY29tPgotCi0g
ICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgotCi0gICAgICAgIERyb3AgdGhlICJVOyAi
IGVuY3J5cHRpb24gbGV2ZWwgZnJvbSB0aGUgVXNlciBBZ2VudCBzdHJpbmcuCi0gICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NDU2NgotCi0gICAgICAgICog
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29y
ZTo6Y29tcG9zZVVzZXJBZ2VudCk6Ci0gICAgICAgICogZXdrL2V3a19zZXR0aW5ncy5jcHA6Ci0g
ICAgICAgIChld2tfc2V0dGluZ3NfZGVmYXVsdF91c2VyX2FnZW50X2dldCk6Ci0KLTIwMTEtMDIt
MjMgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdlYmtpdC5vcmc+Ci0KLSAgICAgICAgUmV2
aWV3ZWQgYnkgQWxleGV5IFByb3NrdXJ5YWtvdi4KLQotICAgICAgICBVc2UgQXRvbWljU3RyaW5n
Ojpmcm9tVVRGOCBpbnN0ZWFkIG9mIFN0cmluZzo6ZnJvbVVURjggZm9yIEF0b21pY1N0cmluZ3MK
LSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU0OTkyCi0K
LSAgICAgICAgQWxzbyByZW1vdmUgdGhlIFdURiBuYW1lc3BhY2UgZnJvbSBBdG9taWNTdHJpbmcg
YW5kIFN0cmluZy4KLQotICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0KLTIwMTEtMDItMjIg
IExhc3psbyBHb21ib3MgIDxsYXN6bG8uMS5nb21ib3NAbm9raWEuY29tPgotCi0gICAgICAgIFJl
dmlld2VkIGJ5IEFsZXhleSBQcm9za3VyeWFrb3YuCi0KLSAgICAgICAgRHJvcCB0aGUgbGFuZ3Vh
Z2UgdGFnIHBhcnQgZnJvbSB0aGUgVXNlciBBZ2VudCBzdHJpbmcKLSAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU0NTYwCi0KLSAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpjb21w
b3NlVXNlckFnZW50KToKLSAgICAgICAgKiBld2svZXdrX3NldHRpbmdzLmNwcDoKLSAgICAgICAg
KGV3a19zZXR0aW5nc19kZWZhdWx0X3VzZXJfYWdlbnRfZ2V0KToKLQotMjAxMS0wMi0yMSAgTHVr
YXN6IFNsYWNoY2lhayAgPGwuc2xhY2hjaWFrQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFJldmll
d2VkIGJ5IEFudG9uaW8gR29tZXMuCi0KLSAgICAgICAgW0VGTF0gRml4ZWQgbWlzc2luZyBzcGF0
aWFsIG5hdmlnYXRpb24gc2V0dGluZyBpbml0aWFsaXphdGlvbi4gRG94eWdlbiBjb21tZW50cyBh
ZGRlZC4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU0
ODA2Ci0KLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoX2V3a192aWV3X3By
aXZfbmV3KTogc3BhdGlhbCBuYXZpZ2F0aW9uIHNldHRpbmcgaW5pdGlhbGl6YXRpb24gYWRkZWQK
LQotMjAxMS0wMi0yMCAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgot
Ci0gICAgICAgIFJldmlld2VkIGJ5IEtlbnQgVGFtdXJhLgotCi0gICAgICAgIFtFRkxdIEZpeCBj
b2Rpbmcgc3R5bGUgZXJyb3JzIGluIHRpbGVkIEJTIGFuZCBld2tfd2luZG93X2ZlYXR1cmUuaAot
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQ4NDIKLQot
ICAgICAgICBGaXggc3R5bGUgZXJyb3JzIGluIGV3ayBmaWxlcy4KLQotICAgICAgICAqIGV3ay9l
d2tfdGlsZWRfYmFja2luZ19zdG9yZS5oOgotICAgICAgICAqIGV3ay9ld2tfdGlsZWRfbWF0cml4
Lmg6Ci0gICAgICAgICogZXdrL2V3a190aWxlZF9tb2RlbC5oOgotICAgICAgICAqIGV3ay9ld2tf
d2luZG93X2ZlYXR1cmVzLmg6Ci0KLTIwMTEtMDItMTkgIEx1a2FzeiBTbGFjaGNpYWsgIDxsLnNs
YWNoY2lha0BzYW1zdW5nLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5n
LgotCi0gICAgICAgIFtFRkxdIEVsaW1pbmF0ZWQgZXJyb3Igd2hlbiAud2Via2l0IGRpcmVjdG9y
eSBkb2Vzbid0IGV4aXN0LgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NTQ4MTMKLQotICAgICAgICAqIGV3ay9ld2tfbWFpbi5jcHA6Ci0gICAgICAgIChf
ZXdrX2luaXRfYm9keSk6Ci0KLTIwMTEtMDItMTkgIEx1a2FzeiBTbGFjaGNpYWsgIDxsLnNsYWNo
Y2lha0BzYW1zdW5nLmNvbT4KLQotICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeC4KLQotICAg
ICAgICBTb3VwU2Vzc2lvbiBidWlsZCBicmVhayBmaXgKLSAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU0Nzk2Ci0KLSAgICAgICAgKiBld2svZXdrX3NldHRp
bmdzLmNwcDoKLSAgICAgICAgKGV3a19zZXR0aW5nc19wcm94eV91cmlfc2V0KToKLQotMjAxMS0w
Mi0xOSAgTHVrYXN6IFNsYWNoY2lhayAgPGwuc2xhY2hjaWFrQHNhbXN1bmcuY29tPgotCi0gICAg
ICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCi0KLSAgICAgICAgW0VGTF0gVXNlIHN0YW5k
YXJkIFdlYkNvcmU6OmhvbWVEaXJlY3RvcnlQYXRoIG1ldGhvZCBpbnN0ZWFkIG9mIHJlaW1wbGVt
ZW50aW5nIGl0Ci0gICAgICAgIGh0dHBzOi8vd2Via2l0Lm9yZy9iLzU0NzgxCi0KLSAgICAgICAg
KiBld2svZXdrX21haW4uY3BwOgotICAgICAgICAoX2V3a19pbml0X2JvZHkpOgotCi0yMDExLTAy
LTE5ICBDaGFybGllIFJlaXMgIDxjcmVpc0BjaHJvbWl1bS5vcmc+Ci0KLSAgICAgICAgUmV2aWV3
ZWQgYnkgTWloYWkgUGFycGFyaXRhLgotCi0gICAgICAgIEVuc3VyZSBsb2FkaW5nIGhhcyBzdG9w
cGVkIGluIEhpc3RvcnlDb250cm9sbGVyOjpnb1RvSXRlbQotICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQ1MTcKLQotICAgICAgICBBZGQgYSBGcmFtZUxv
YWRlckNsaWVudCBjYWxsYmFjayBmb3Igd2hldGhlciB0byBzdG9wIGxvYWRpbmcgYmVmb3JlIGdv
VG9JdGVtLgotCi0gICAgICAgIFRlc3Q6IGh0dHAvdGVzdHMvbmF2aWdhdGlvbi9mb3J3YXJkLXRv
LWZyYWdtZW50LWZpcmVzLW9ubG9hZC5odG1sCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNs
aWVudEVmbDo6c2hvdWxkU3RvcExvYWRpbmdGb3JIaXN0b3J5SXRlbSk6IEFkZGVkLgotICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmg6Ci0KLTIwMTEtMDItMTgg
IEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBSZXZp
ZXdlZCBieSBLZW50IFRhbXVyYS4KLQotICAgICAgICBbRUZMXSBGaXggY29kaW5nIHN0eWxlIGVy
cm9ycyBpbiBld2tfZnJhbWUuaAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTQ3MTgKLQotICAgICAgICBGaXggc3R5bGUgZXJyb3JzIGluIGV3a19mcmFt
ZS5oLgotCi0gICAgICAgICogZXdrL2V3a19mcmFtZS5oOgotCi0yMDExLTAyLTE4ICBHeXV5b3Vu
ZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkg
QW50b25pbyBHb21lcy4KLQotICAgICAgICBbRUZMXSBSZW1vdmUgcHJveHkgZmVhdHVyZSBvZiBz
b3VwIHdoZW4gcHJveHkgaXMgbnVsbAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NTQ2MjEKLQotICAgICAgICBXaGVuIHByb3h5IHZhbHVlIGlzIE5VTEws
IHJlbW92ZSBwcm94eSBmZWF0dXJlIGluIHNvdXAuCi0KLSAgICAgICAgKiBld2svZXdrX3NldHRp
bmdzLmNwcDoKLSAgICAgICAgKGV3a19zZXR0aW5nc19wcm94eV91cmlfc2V0KToKLQotMjAxMS0w
Mi0xOCAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgotCi0gICAgICAg
IFJldmlld2VkIGJ5IEtlbnQgVGFtdXJhLgotCi0gICAgICAgIFtFRkxdIEZpeCBjb2Rpbmcgc3R5
bGUgZXJyb3JzIGluIGV3a192aWV3LmgKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTU0NjI0Ci0KLSAgICAgICAgRml4IHN0eWxlIGVycm9ycyBpbiBld2tf
dmlldy5oLgotCi0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAgKGV3a192aWV3
X3ByZV9yZW5kZXJfcmVsYXRpdmVfcmFkaXVzKToKLSAgICAgICAgKiBld2svZXdrX3ZpZXcuaDoK
LQotMjAxMS0wMi0xOCAgUGF0cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Via2l0Lm9yZz4KLQot
ICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeCBhZnRlciByNzg2MzQgYW5kIHI3ODc4Ni4KLQot
ICAgICAgICAqIENNYWtlTGlzdHNFZmwudHh0OgotCi0yMDExLTAyLTE3ICBSeXVhbiBDaG9pICA8
cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBLZW50IFRhbXVy
YS4KLQotICAgICAgICBbRUZMXSBQb3NzaWJsZSBjcmFzaCBvZiBld2tfZnJhbWVfY29udGVudHNf
c2V0Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NDA5
MQotCi0gICAgICAgIFVzZSBsZW5ndGggb2YgY29udGVudHMgaWYgY29udGVudHNfc2l6ZSBwYXJh
bWV0ZXIgaXMgYmlnZ2VyIHRoYW4gbGVuZ3RoCi0gICAgICAgIG9mIGNvbnRlbnRzLgotCi0gICAg
ICAgICogZXdrL2V3a19mcmFtZS5jcHA6Ci0gICAgICAgIChfZXdrX2ZyYW1lX2NvbnRlbnRzX3Nl
dF9pbnRlcm5hbCk6Ci0KLTIwMTEtMDItMTcgIEdyemVnb3J6IEN6YWprb3dza2kgIDxnLmN6YWpr
b3dza2lAc2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgS2VudCBUYW11cmEuCi0K
LSAgICAgICAgRG94eWdlbiBkb2N1bWVudGF0aW9uIGZvciBld2sgY29va2llcwotICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQ1NTMKLQotICAgICAgICAq
IGV3ay9ld2tfY29va2llcy5jcHA6Ci0gICAgICAgIChld2tfY29va2llc19maWxlX3NldCk6Ci0g
ICAgICAgIChld2tfY29va2llc19wb2xpY3lfc2V0KToKLSAgICAgICAgKGV3a19jb29raWVzX3Bv
bGljeV9nZXQpOgotICAgICAgICAqIGV3ay9ld2tfY29va2llcy5oOgotCi0yMDExLTAyLTE2ICBH
eXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgVW5yZXZp
ZXdlZCBidWlsZCBmaXguCi0KLSAgICAgICAgW0VGTF0gQnVpbGQgYnJlYWsgb24gcjc4NjM0Ci0g
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NDYwMgotCi0g
ICAgICAgIEJ1aWxkIGVycm9yIGJlY2F1c2Ugb2Ygcjc4NjM0LgotCi0gICAgICAgICogQ01ha2VM
aXN0c0VmbC50eHQ6Ci0KLTIwMTEtMDEtMjYgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2ds
ZS5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgUnlvc3VrZSBOaXdhLgotCi0gICAgICAgIFJl
ZmFjdG9yaW5nOiBFeHRyYWN0IFRleHRDaGVja2VyQ2xpZW50IGZyb20gRWRpdG9yQ2xpZW50Ci0g
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MzIxMwotCi0g
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmg6Ci0gICAgICAgIChXZWJD
b3JlOjpFZGl0b3JDbGllbnRFZmw6OnRleHRDaGVja2VyKToKLQotMjAxMS0wMi0wNyAgUnlvc3Vr
ZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KLQotICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJh
cnRoLgotCi0gICAgICAgIEFkZCBFZGl0b3JDbGllbnQgY2FsbGJhY2tzIHRvIG92ZXJyaWRlIGlz
RE9NUGFzdGVBbGxvd2VkIGFuZCBqYXZhU2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJkCi0gICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MjQxNwotCi0gICAgICAg
IEFkZGVkIHR3byBjYWxsYmFjayBmdW5jdGlvbnMsIGNhbkNvcHlDdXQgYW5kIGNhblBhc3RlIHRv
IEVkaXRvckNsaWVudC4gVGhleSBhcmUgY3VycmVudGx5Ci0gICAgICAgIG5vdCBpbXBsZW1lbnRl
ZC4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5jcHA6Ci0gICAg
ICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRFZmw6OmNhbkNvcHlDdXQpOiBBZGRlZC4KLSAgICAg
ICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEVmbDo6Y2FuUGFzdGUpOiBBZGRlZC4KLSAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuaDoKLQotMjAxMS0wMi0wOCAgQWRhbSBC
YXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2Vp
ZGVsLgotCi0gICAgICAgIFJlbW92ZSBvcnBoYW4gY29kZSBmcm9tIG9sZCBwYXJzZXIKLSAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUzOTg0Ci0KLSAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuaDoKLQotMjAxMS0wMi0wOCAgTHVj
YXMgRGUgTWFyY2hpICA8bHVjYXMuZGVtYXJjaGlAcHJvZnVzaW9uLm1vYmk+Ci0KLSAgICAgICAg
VW5yZXZpZXdlZCBidWlsZCBmaXguCi0KLSAgICAgICAgW0VGTF0gRml4IHdoZW4gYnVpbGRpbmcg
d2l0aCBjdXJsIGJhY2tlbmQuCi0KLSAgICAgICAgKiBld2svZXdrX3NldHRpbmdzLmNwcDoKLSAg
ICAgICAgKGV3a19zZXR0aW5nc19wcm94eV91cmlfZ2V0KToKLQotMjAxMS0wMi0wNyAgRW5yaWNh
IENhc3VjY2kgIDxlbnJpY2FAYXBwbGUuY29tPgotCi0gICAgICAgIFJldmlld2VkIEFkYW0gUm9i
ZW4gYW5kIERhcmluIEFkbGVyLgotCi0gICAgICAgIFdlYktpdDI6IGRyYWcgYW5kIGRyb3Agc3Vw
cG9ydCBvbiBXaW5kb3dzLgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NTI3NzUKLQotICAgICAgICBSZW1vdmVkIGNyZWF0ZURyYWdJbWFnZUZvckxpbmsg
ZnJvbSBEcmFnQ2xpZW50LgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHJhZ0NsaWVudEVm
bC5jcHA6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHJhZ0NsaWVudEVmbC5oOgotCi0yMDEx
LTAyLTA3ICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUB3ZWJraXQub3JnPgotCi0gICAgICAg
IFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCi0KLSAgICAgICAgW0VGTF0gRnJhbWVMb2FkZXJD
bGllbnQgY2FsbHMgbG9hZFVSTEluQ2hpbGRGcmFtZSBvbiB0aGUgY2hpbGQncyBmcmFtZSBsb2Fk
ZXIKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUzODky
Ci0KLSAgICAgICAgKiBld2svZXdrX2ZyYW1lLmNwcDoKLSAgICAgICAgKGV3a19mcmFtZV9jaGls
ZF9hZGQpOiBVc2UgdGhlIGxvYWRlciBvZiB0aGUgY29yZSBmcmFtZSBpbnN0ZWFkLgotCi0yMDEx
LTAyLTAzICBBZGFtIExhbmdsZXkgIDxhZ2xAY2hyb21pdW0ub3JnPgotCi0gICAgICAgIFJldmll
d2VkIGJ5IEFkYW0gQmFydGguCi0KLSAgICAgICAgUGx1bWIgbWl4ZWQgc2NyaXB0IFVSTCB0byBG
cmFtZUxvYWRlckNsaWVudAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NTIzODQKLQotICAgICAgICBSZWdyZXNzaW9ucyBjb3ZlcmVkIGJ5IGh0dHAvdGVz
dHMvc2VjdXJpdHkvbWl4ZWRDb250ZW50LyoKLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xp
ZW50RWZsOjpkaWRSdW5JbnNlY3VyZUNvbnRlbnQpOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmg6Ci0KLTIwMTEtMDItMDEgIEd5dXlvdW5nIEtpbSAgPGd5
dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBBbnRvbmlvIEdv
bWVzLgotCi0gICAgICAgIFtFRkxdIEFkZCBhbiBBUEkgdG8gZ2V0IHByb3h5IGFkZHJlc3MuCi0g
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01Mjk5MAotCi0g
ICAgICAgIEdldHMgdGhlIHByb3h5IFVSSSBmcm9tIG5ldHdvcmsgYmFja2VuZC4gVGhpcyBBUEkg
cmV0dXJucyBhIHByb3h5IFVSSQotICAgICAgICB3aGljaCBpcyBzZXQgdXAgYnkgZXdrX3NldHRp
bmdzX3Byb3h5X3VyaV9zZXQoKS4gQnV0LCBpdCBvbmx5IGltcGxlbWVudHMKLSAgICAgICAgdGhp
cyBBUEkgZm9yIGxpYnNvdXAgYmFja2VuZC4KLQotICAgICAgICAqIGV3ay9ld2tfc2V0dGluZ3Mu
Y3BwOgotICAgICAgICAoZXdrX3NldHRpbmdzX3Byb3h5X3VyaV9nZXQpOgotICAgICAgICAqIGV3
ay9ld2tfc2V0dGluZ3MuaDoKLQotMjAxMS0wMS0yOSAgRGFuIFdpbnNoaXAgIDxkYW53QGdub21l
Lm9yZz4KLQotICAgICAgICBSZXZpZXdlZCBieSBYYW4gTG9wZXouCi0KLSAgICAgICAgW0dUS10g
UmVtb3ZlIEhBVkVfTElCU09VUF8yXzI5XzkwIGNvbmRpdGlvbmFsczsgd2UgZGVwZW5kIG9uCi0g
ICAgICAgIGxpYnNvdXAgMi4zMy4xIG5vdy4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTUwNjc1Ci0KLSAgICAgICAgKiBld2svZXdrX2Nvb2tpZXMuY3Bw
OgotICAgICAgICAoZXdrX2Nvb2tpZXNfZmlsZV9zZXQpOgotICAgICAgICAoZXdrX2Nvb2tpZXNf
cG9saWN5X3NldCk6Ci0gICAgICAgIChld2tfY29va2llc19wb2xpY3lfZ2V0KToKLQotMjAxMS0w
MS0yOCAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgotCi0gICAgICAgIFJldmlld2Vk
IGJ5IFNhbSBXZWluaWcuCi0KLSAgICAgICAgPHNlbGVjdD4gY2FuJ3QgZGlzcGxheSByaWdodC10
by1sZWZ0IChydGwpIGxhbmd1YWdlcwotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTk3ODUKLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNs
aWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRFZmw6OnNlbGVjdEl0
ZW1BbGlnbm1lbnRGb2xsb3dzTWVudVdyaXRpbmdEaXJlY3Rpb24pOiBBZGRlZC4KLSAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuaDoKLQotMjAxMS0wMS0yNyAgTmF0ZSBD
aGFwaW4gIDxqYXBoZXRAY2hyb21pdW0ub3JnPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEFkYW0g
QmFydGguCi0KLSAgICAgICAgVXNlIERvY3VtZW50Ojp1cmwoKSBpbnN0ZWFkIG9mIEZyYW1lTG9h
ZGVyOjp1cmwoKS4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTQxMTY1Ci0KLSAgICAgICAgKiBld2svZXdrX2ZyYW1lLmNwcDoKLSAgICAgICAgKGV3a19m
cmFtZV91cmlfY2hhbmdlZCk6Ci0KLTIwMTEtMDEtMTQgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFy
b2dhQHdlYmtpdC5vcmc+Ci0KLSAgICAgICAgVW5yZXZpZXdlZC4gVHJ5IHRvIGZpeCBFRkwgYnVp
bGQuCi0KLSAgICAgICAgKiBld2svZXdrX2ZyYW1lLmNwcDoKLSAgICAgICAgKGV3a19mcmFtZV9z
Y3JvbGxfYWRkKTogQWRkZWQgV2ViQ29yZSBuYW1lc3BhY2UgdG8gSW50U2l6ZS4KLSAgICAgICAg
KiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoX2V3a192aWV3X3ZpZXdwb3J0X2F0dHJpYnV0
ZXNfY29tcHV0ZSk6IERpdHRvLgotCi0yMDExLTAxLTE0ICBUb255IEdlbnRpbGNvcmUgIDx0b255
Z0BjaHJvbWl1bS5vcmc+Ci0KLSAgICAgICAgVW5yZXZpZXdlZCBidWlsZCBmaXguCi0KLSAgICAg
ICAgRml4IFF0IGJ1aWxkIGFmdGVyIHI3NTgzNwotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTI0OTQKLQotICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6
Ci0KLTIwMTEtMDEtMDkgIFhpYW56aHUgV2FuZyA8cGhuaXh3eHpAZ21haWwuY29tPgotCi0gICAg
ICAgIFJldmlld2VkIGJ5IERhcmluIEZpc2hlci4KLQotICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDE0NDEKLSAgICAgICAgY3JlYXRlV2luZG93IG1ldGhv
ZCBzaG91bGQgb25seSBkbyB3aW5kb3ctY3JlYXRpbmcgd2l0aG91dCBVUkwgbmF2aWdhdGlvbgot
Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcDoKLSAgICAgICAg
KFdlYkNvcmU6OkNocm9tZUNsaWVudEVmbDo6Y3JlYXRlV2luZG93KToKLQotMjAxMC0xMi0yNyAg
UmFmYWVsIEFudG9nbm9sbGkgIDxhbnRvZ25vbGxpQHByb2Z1c2lvbi5tb2JpPgotCi0gICAgICAg
IFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgotCi0gICAgICAgIFtFRkxd
IFNldCB0aGUgZnJhbWUgc21hcnQgb2JqZWN0IGJhc2UgY2xpcHBlciB0byBub24tc3RhdGljLgot
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTE1NTIKLQot
ICAgICAgICBUaGUgYmFzZSBjbGlwcGVyIG9mIHRoZSBjbGlwcGVkIHNtYXJ0IG9iamVjdCwgd2hp
Y2ggaXMgdGhlIHBhcmVudAotICAgICAgICBjbGFzcyBvZiB0aGUgZXdrX2ZyYW1lIGNsYXNzIGlz
IGEgc3RhdGljIGNsaXBwZXIuIEl0J3Mgbm9ybWFsbHkgb25seQotICAgICAgICB1c2VkIGZvciBz
aG93aW5nL2hpZGluZyB0aGUgb2JqZWN0LCBidXQgaW4gdGhlIGNhc2Ugb2YgdGhlIGV3a19mcmFt
ZSwKLSAgICAgICAgaXQgbmVlZHMgdG8gY2xpcCB0aGUgb2JqZWN0IHRvIGl0cyBkaW1lbnNpb24s
IGluIG9yZGVyIHRvIGNsaXAKLSAgICAgICAgc2Nyb2xsYmFycyBvZiBpbm5lciBmcmFtZXMuCi0K
LSAgICAgICAgU2V0dGluZyBpdCB0byBub24tc3RhdGljIG1ha2VzIHRoZSBjbGlwcGVyIHRvIGJl
IGF1dG9tYXRpY2FsbHkgbW92ZWQKLSAgICAgICAgYnkgdGhlIHBhcmVudCBjbGFzcywgdGh1cyBz
dGF5aW5nIG9uIHRoZSBjb3JyZWN0IHBvc2l0aW9uIHdoZW4gdGhlCi0gICAgICAgIGZyYW1lIGlz
IG1vdmVkLgotCi0gICAgICAgIFRoaXMgY2hhbmdlIG5lZWRlZCB0byBiZSBkb25lIGFmdGVyIHRo
ZSBhZG9wdGlvbiBvZiB0aGUgc3RhdGljIGNsaXBwZXIKLSAgICAgICAgb24gdGhlIGNsaXBwZWQg
c21hcnQgYmFzZSBjbGFzcy4KLQotICAgICAgICAqIGV3ay9ld2tfZnJhbWUuY3BwOgotICAgICAg
ICAoX2V3a19mcmFtZV9zbWFydF9hZGQpOgotCi0yMDEwLTEyLTI0ICBSeXVhbiBDaG9pICA8cnl1
YW4uY2hvaUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRl
IENocmlzdGlhbnNlbi4KLQotICAgICAgICBbRUZMXSBBZGQgb3B0aW9uIHRvIGVuYWJsZSBUb3Vj
aCBFdmVudHMuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD00OTEyNQotCi0gICAgICAgIEltcGxlbWVudCBld2tfZnJhbWVfZmVlZF90b3VjaF9ldmVudCB0
byBmZWVkIHRvdWNoIGV2ZW50cy4gQmVjYXVzZSBFRkwKLSAgICAgICAgZG9lc24ndCBoYXZlIHRv
dWNoIGV2ZW50cywgQXBwbGljYXRpb24gc2hvdWxkIGdlbmVyYXRlIGFuZCBwYXNzIGl0LgotCi0g
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmg6Ci0gICAgICAgIChXZWJD
b3JlOjpDaHJvbWVDbGllbnRFZmw6Om5lZWRUb3VjaEV2ZW50cyk6Ci0gICAgICAgICogZXdrL2V3
a19mcmFtZS5jcHA6Ci0gICAgICAgIChld2tfZnJhbWVfZmVlZF90b3VjaF9ldmVudCk6Ci0gICAg
ICAgICogZXdrL2V3a19mcmFtZS5oOgotCi0yMDEwLTEyLTIyICBTYW0gV2VpbmlnICA8c2FtQHdl
YmtpdC5vcmc+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCi0KLSAgICAgICAg
V2ViS2l0MiBuZWVkcyB0byBtaXJyb3IgdGhlIGZyYW1lIHRyZWUgaW4gdGhlIFVJUHJvY2Vzcwot
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTE1NDYKLQot
ICAgICAgICAtIEFkZCBjbGllbnQgZnVuY3Rpb25zIHRvIG5vdGlmeSB0aGF0IGEgZnJhbWUgaGFz
IGJlZW4gYWRkZWQgb3IKLSAgICAgICAgICByZW1vdmVkIGZyb20gdGhlIHBhZ2UgY2FjaGUuCi0K
LSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHA6Ci0gICAg
ICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlkU2F2ZVRvUGFnZUNhY2hlKToK
LSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaWRSZXN0b3JlRnJvbVBh
Z2VDYWNoZSk6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwu
aDoKLQotMjAxMC0xMi0yMiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KLQotICAg
ICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KLQotICAgICAgICBFZGl0b3IuaCBkb2Vzbid0
IG5lZWQgdG8gaW5jbHVkZSBTZWxlY3Rpb25Db250cm9sbGVyLmgKLSAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUxNDQxCi0KLSAgICAgICAgUmVuYW1lZCBT
ZWxlY3Rpb25Db250cm9sbGVyOjpFRGlyZWN0aW9uIHRvIFNlbGVjdGlvbkRpcmVjdGlvbi4KLQot
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChX
ZWJDb3JlOjpFZGl0b3JDbGllbnRFZmw6OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KToKLQot
MjAxMC0xMi0yMyAgTHVjYXMgRGUgTWFyY2hpICA8bHVjYXMuZGVtYXJjaGlAcHJvZnVzaW9uLm1v
Ymk+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCi0K
LSAgICAgICAgW0VGTF0gRml4IENvbnRleHRNZW51IHJlbW92YWwKLSAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUxNTMwCi0KLSAgICAgICAgRml4IENvbnRl
eHRNZW51IHJlbW92YWwKLQotICAgICAgICBJbiByNzQyMDcgdGhlIHN1cHBvcnQgZm9yIENvbnRl
eHRNZW51IHdhcyByZW1vdmVkIGZyb20gRUZMIHdoaWxlIHRoZQotICAgICAgICBjb2RlIGlzIGJl
aW5nIHBvcnRlZCB0byB0aGUgbmV3IENST1NTX1BMQVRGT1JNX01FTlVTIGR1ZSB0byBidWlsZAot
ICAgICAgICBicmVha2FnZS4gIEhvd2V2ZXIgdGhlcmUgd2VyZSBzb21lIG1pc3NpbmcgcmVtb3Zh
bHMgaW4gdGhlIHNodXRkb3duCi0gICAgICAgIGxvZ2ljIHRoYXQgaW50cm9kdWNlZCBhIGJ1Zywg
bGVhZGluZyB0byBhIHNlZ21lbnRhdGlvbiBmYXVsdCB3aGVuCi0gICAgICAgIENvbnRleENvbnRy
b2xsZXIgd2FzIGRlc3Ryb3llZC4KLQotICAgICAgICBUaGUgYmVzdCB3YXkgdG8gZWZmZWN0aXZl
bHkgZGlzYWJsZSB0aGUgQ29udGV4dE1lbnUgaXMgdG8gY29uZGl0aW9uYWxseQotICAgICAgICBj
b21waWxlIHRoZSBtZWFuaW5nZnVsIHN0dWZmIGJ5IHN1cnJvdW5kaW5nIHdpdGggIiNpZgotICAg
ICAgICBFTkFCTEUoQ09OVEVYVF9NRU5VUykiIGFuZCB0aGVuIGRpc2FibGluZyBpdCBpbiBDTWFr
ZS4KLQotICAgICAgICAqIGV3ay9ld2tfY29udGV4dG1lbnUuY3BwOiBzdXJyb3VuZCBuZWVkIHBh
cnRzIHdpdGggI2lmCi0gICAgICAgIEVOQUJMRShDT05URVhUX01FTlVTKS4KLSAgICAgICAgKGV3
a19jb250ZXh0X21lbnVfZGVzdHJveSk6IGRpdHRvLgotICAgICAgICAoZXdrX2NvbnRleHRfbWVu
dV9pdGVtX3NlbGVjdCk6IGRpdHRvLgotICAgICAgICAqIGV3ay9ld2tfcHJpdmF0ZS5oOiBkaXR0
by4KLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOiBkaXR0by4KLQotMjAxMC0xMi0yMyAgTHVj
YXMgRGUgTWFyY2hpICA8bHVjYXMuZGVtYXJjaGlAcHJvZnVzaW9uLm1vYmk+Ci0KLSAgICAgICAg
UmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCi0KLSAgICAgICAgW0VGTF0g
Q2xlYW4gd2FybmluZ3MgaW4gVGlsZWQgQmFja2luZyBTdG9yZQotICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTE1MjkKLQotICAgICAgICBUaWxlZCBiYWNr
aW5nIHN0b3JlIGluIEVGTCB3YXMgZ2l2aW5nIHRoZSBmb2xsb3dpbmcgd2FybmluZ3MgdGhhdCBh
cmUKLSAgICAgICAgZ29uZSBub3c6Ci0KLSAgICAgICAgLSBTdGF0aWMgZnVuY3Rpb24gZGVmaW5l
ZCBidXQgbm90IHVzZWQ7Ci0gICAgICAgIC0gQ29tcGFyaXNvbiBiZXR3ZWVuIHNpZ25lZCBhbmQg
dW5zaWduZWQgaW50ZWdlciBleHByZXNzaW9uczsKLQotICAgICAgICAqIGV3ay9ld2tfdGlsZWRf
YmFja2luZ19zdG9yZS5jOgotICAgICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX2l0ZW1f
ZmlsbCk6Ci0gICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfc21hcnRfY2FsY3VsYXRl
KToKLSAgICAgICAgKiBld2svZXdrX3RpbGVkX21hdHJpeC5jOgotICAgICAgICAoX2V3a190aWxl
X21hdHJpeF9zbGljZXJfc2V0dXApOgotCi0yMDEwLTEyLTIzICBHeXV5b3VuZyBLaW0gIDxneXV5
b3VuZy5raW1Ac2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgVW5yZXZpZXdlZCBidWlsZCB3YXJuaW5n
IGZpeC4KLQotICAgICAgICBbRUZMXSBSZW1vdmUgd2FybmluZyBtZXNzYWdlcyBkdXJpbmcgdGhl
IHdlYmtpdCBlZmwgY29tcGlsaW5nCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01MTUyMAotCi0gICAgICAgIFJlbW92ZSBidWlsZCB3YXJuaW5nIG1lc3Nh
Z2VzLgotCi0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAgKF9ld2tfdmlld19z
bWFydF9zaG93KToKLSAgICAgICAgKF9ld2tfdmlld19zbWFydF9oaWRlKToKLSAgICAgICAgKiBl
d2svZXdrX3ZpZXcuaDoKLQotMjAxMC0xMi0yMiAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2lt
QHNhbXN1bmcuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEFudG9uaW8gR29tZXMuCi0KLSAg
ICAgICAgW0VGTF0gU2V0cyBkZWZhdWx0IHVzZXIgYWdlbnQKLSAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3OTAzCi0KLSAgICAgICAgSWYgYXBwbGNhdGlv
bihlLmcgRVdlYkxhdW5jaGVyKSBkb2Vzbid0IHNldCB1c2VyIGFnZW50LCBXZWJLaXQgRUZMIGRv
ZXNuJ3QKLSAgICAgICAgc2V0IHVzZXIgYWdlbnQuIEhvd2V2ZXIsIHdlIG5lZWQgdG8gc2V0IHVz
ZXIgYWdlbnQgYnkgZGVmYXVsdC4gQmVjYXVzZSwgc29tZQotICAgICAgICB3ZWIgc2l0ZXMgc2Vu
ZCBkaWZmZXJlbnQgcGFnZXMgYWNjb3JkaW5nIHRvIHVzZXIgYWdlbnQuCi0KLSAgICAgICAgKiBl
d2svZXdrX3ByaXZhdGUuaDoKLSAgICAgICAgKiBld2svZXdrX3NldHRpbmdzLmNwcDoKLSAgICAg
ICAgKF9ld2tfc2V0dGluZ3Nfd2Via2l0X3BsYXRmb3JtKToKLSAgICAgICAgKF9ld2tfc2V0dGlu
Z3Nfd2Via2l0X29zX3ZlcnNpb24pOgotICAgICAgICAoZXdrX3NldHRpbmdzX2RlZmF1bHRfdXNl
cl9hZ2VudF9nZXQpOgotICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChfZXdr
X3ZpZXdfcHJpdl9uZXcpOgotCi0yMDEwLTEyLTE2ICBMZWFuZHJvIFBlcmVpcmEgIDxsZWFuZHJv
QHByb2Z1c2lvbi5tb2JpPgotCi0gICAgICAgIFtFRkxdIFVucmV2aWV3ZWQgYnVpbGQgZml4Lgot
Ci0gICAgICAgIERpc2FibGUgQ29udGV4dE1lbnUgc3VwcG9ydCBmb3Igbm93IHdoaWxlIHN1cHBv
cnQgZm9yCi0gICAgICAgIENST1NTX1BMQVRGT1JNX01FTlVTIGlzIHdyaXR0ZW4uCi0KLSAgICAg
ICAgKiBDTWFrZUxpc3RzRWZsLnR4dDoKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9Db250ZXh0
TWVudUNsaWVudEVmbC5jcHA6IFJlbW92ZWQuCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ29u
dGV4dE1lbnVDbGllbnRFZmwuaDogUmVtb3ZlZC4KLSAgICAgICAgKiBld2svZXdrX2NvbnRleHRt
ZW51LmNwcDoKLSAgICAgICAgKGV3a19jb250ZXh0X21lbnVfaXRlbV9hcHBlbmQpOgotICAgICAg
ICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChfZXdrX3ZpZXdfcHJpdl9uZXcpOgotCi0y
MDEwLTEyLTEzICBBbGV4IEJyZWRhcmlvbCBHcmlsbyAgPGFiZ3JpbG9AcHJvZnVzaW9uLm1vYmk+
Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KLQotICAgICAgICBSZW1vdmUg
YWRqYWNlbnQgdGlsZXMgcmVuZGVyaW5nIHF1ZXVlLgotICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTAwMjMKLQotICAgICAgICBJbiB0aGUgY3VycmVudCBp
bXBsZW1lbnRhdGlvbiBvZiB0aGUgdGlsZWQgYmFja2luZyBzdG9yZSwgb25lIGV4dHJhIHJvdwot
ICAgICAgICBhbmQgY29sdW1uIG9mIHRpbGVzIGFyZSBuZWVkZWQgdG8gcmVuZGVyIHRoZSBlbnRp
cmUgdmlld3BvcnQuIFRoZXNlCi0gICAgICAgIGV4dHJhIHJvdy9jb2wgcHJvdmVkIHRvIGJlIGV4
cGVuc2l2ZSB3aGVuIGJlaW5nIHJlbmRlcmVkLCBhbmQgd2VyZQotICAgICAgICBwb3N0cG9uZWQg
dG8gYSBxdWV1ZSB0aGF0IHdvdWxkIHJlbmRlciB0aGVtIGFmdGVyIHJlbmRlcmluZyB0aGUgb3Ro
ZXIKLSAgICAgICAgdGlsZXMgb2YgdGhlIHZpZXdwb3J0IGZpcnN0LiBUaGlzIGFwcHJvYWNoIGNv
bXBsaWNhdGVkIHVubmVjZXNzYXJpbHkKLSAgICAgICAgdGhlIGxvZ2ljcyB3aXRoIG5vIGdhaW4g
Zm9yIGtlZXBpbmcgdGhlIGV4dHJhIHJvdyBhbmQgY29sdW1uLiBUaGlzCi0gICAgICAgIGNoYW5n
ZSByZW1vdmVzIHRoaXMgcmVuZGVyaW5nIHF1ZXVlLCBmb3IgbGF0ZXIgcmVtb3ZpbmcgdGhlIGV4
dHJhIHJvdwotICAgICAgICBhbmQgY29sdW1uIG9mIHRpbGVzLgotCi0gICAgICAgICogZXdrL2V3
a190aWxlZF9iYWNraW5nX3N0b3JlLmM6Ci0gICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3Rv
cmVfcHJlX3JlbmRlcl9yZXF1ZXN0X2FkZCk6Ci0gICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdf
c3RvcmVfcHJlX3JlbmRlcl9yZXF1ZXN0X2ZsdXNoKToKLSAgICAgICAgKF9ld2tfdGlsZWRfYmFj
a2luZ19zdG9yZV9wcmVfcmVuZGVyX3JlcXVlc3RfY2xlYXIpOgotICAgICAgICAoX2V3a190aWxl
ZF9iYWNraW5nX3N0b3JlX3ByZV9yZW5kZXJfcmVxdWVzdF9wcm9jZXNzX3NpbmdsZSk6Ci0gICAg
ICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfaXRlbV9maWxsKToKLSAgICAgICAgKF9ld2tf
dGlsZWRfYmFja2luZ19zdG9yZV9pdGVtX2FkZCk6Ci0gICAgICAgIChfZXdrX3RpbGVkX2JhY2tp
bmdfc3RvcmVfaXRlbV9kZWwpOgotICAgICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3Jl
Y2FsY19yZW5kZXJlcnMpOgotICAgICAgICAoZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcHJlX3Jl
bmRlcl9yZWdpb24pOgotICAgICAgICAoZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcHJlX3JlbmRl
cl9yZWxhdGl2ZV9yYWRpdXMpOgotICAgICAgICAoZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcHJl
X3JlbmRlcl9jYW5jZWwpOgotCi0yMDEwLTEyLTEzICBBbGV4IEJyZWRhcmlvbCBHcmlsbyAgPGFi
Z3JpbG9AcHJvZnVzaW9uLm1vYmk+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGlu
Zy4KLQotICAgICAgICBSZW1vdmUgb25lIHJvdy9jb2x1bW4gb2YgcmVuZGVyZXJzLgotICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTA0NTYKLQotICAgICAg
ICBUaGlzIGNoYW5nZXMgdGhlIGFsZ29yaXRobSBpbiBhIHdheSB0aGF0IGl0IHdpbGwgcmVxdWly
ZSBvbmUgbGVzcyBjb2x1bW4KLSAgICAgICAgYW5kIHJvdyBvZiByZW5kZXJlcnMgdG8gZmlsbCB0
aGUgdmlld3BvcnQuIFRoZSBkaXJlY3QgcmVzdWx0IG9mIHRoaXMgaXMKLSAgICAgICAgdGhhdCBu
b3cgbGVzcyB0aWxlcyBuZWVkIHRvIGJlIHJlbmRlcmVkIGF0IG9uY2Ugd2hlbiBkaXNwbGF5aW5n
IHRoZQotICAgICAgICB2aWV3cG9ydC4KLQotICAgICAgICAqIGV3ay9ld2tfdGlsZWRfYmFja2lu
Z19zdG9yZS5jOgotICAgICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3NtYXJ0X2FkZCk6
Ci0gICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcmVjYWxjX3JlbmRlcmVycyk6Ci0g
ICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdmlld193cmFwX3VwKToKLSAgICAgICAg
KF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV92aWV3X3dyYXBfZG93bik6Ci0gICAgICAgIChfZXdr
X3RpbGVkX2JhY2tpbmdfc3RvcmVfdmlld193cmFwX2xlZnQpOgotICAgICAgICAoX2V3a190aWxl
ZF9iYWNraW5nX3N0b3JlX3ZpZXdfd3JhcF9yaWdodCk6Ci0gICAgICAgIChfZXdrX3RpbGVkX2Jh
Y2tpbmdfc3RvcmVfc21hcnRfY2FsY3VsYXRlX29mZnNldF9mb3JjZSk6Ci0gICAgICAgIChfZXdr
X3RpbGVkX2JhY2tpbmdfc3RvcmVfc21hcnRfY2FsY3VsYXRlX29mZnNldCk6Ci0gICAgICAgIChf
ZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfc21hcnRfY2FsY3VsYXRlKToKLSAgICAgICAgKF9ld2tf
dGlsZWRfYmFja2luZ19zdG9yZV96b29tX3NldF9pbnRlcm5hbCk6Ci0gICAgICAgIChld2tfdGls
ZWRfYmFja2luZ19zdG9yZV96b29tX3dlYWtfc2V0KToKLSAgICAgICAgKGV3a190aWxlZF9iYWNr
aW5nX3N0b3JlX2ZpeF9vZmZzZXRzKToKLSAgICAgICAgKGV3a190aWxlZF9iYWNraW5nX3N0b3Jl
X2ZsdXNoKToKLQotMjAxMC0xMC0yOCAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNv
bT4KLQotICAgICAgICBSZXZpZXdlZCBieSBPamFuIFZhZmFpLgotCi0gICAgICAgIHNwZWxsY2hl
Y2sgZG9lcyBub3QgY2hlY2sgcGFzdGVkIHRleHQKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTQwMDkyCi0KLSAgICAgICAgQWRkZWQgYSBzdHViIGltcGxl
bWVtbnRhdGlvbi4KLSAgICAgICAgCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xp
ZW50RWZsLmg6Ci0gICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRFZmw6OnJlcXVlc3RDaGVj
a2luZ09mU3RyaW5nKToKLQotMjAxMC0xMi0wOSAgQWxleCBCcmVkYXJpb2wgR3JpbG8gIDxhYmdy
aWxvQHByb2Z1c2lvbi5tb2JpPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEFudG9uaW8gR29tZXMu
Ci0KLSAgICAgICAgW0VGTF0gQWRkIG1pc3NpbmcgZnVuY3Rpb24gaW4gV2ViS2l0LUVGTCBBUEkK
LQotICAgICAgICBBZGQgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfem9vbV93ZWFrX3Ntb290aF9z
Y2FsZV9zZXQgZnVuY3Rpb24gaW4KLSAgICAgICAgV2ViS2l0LUVGTCBBUEkuIFRoaXMgZnVuY3Rp
b24gd2FzIGFscmVhZHkgaW1wbGVtZW50ZWQgYnV0IG1pc3NpbmcgaW4KLSAgICAgICAgaGVhZGVy
IGZpbGUuCi0KLSAgICAgICAgKiBld2svZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUuaDoKLQotMjAx
MC0xMi0wOSAgQWxleCBCcmVkYXJpb2wgR3JpbG8gIDxhYmdyaWxvQHByb2Z1c2lvbi5tb2JpPgot
Ci0gICAgICAgIFJldmlld2VkIGJ5IEFudG9uaW8gR29tZXMuCi0KLSAgICAgICAgW0VGTF0gRml4
IHNjcm9sbCBvcGVyYXRpb24gaW4gV2ViS2l0LUVGTAotICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTA3NTIKLQotICAgICAgICBBZGQgdGhlIF9ld2tfdmll
d19zY3JvbGxfYWRkIGNhbGwgaW4gV2ViS2l0LUVGTCBzY3JvbGwgZnVuY3Rpb24uIFRoaXMKLSAg
ICAgICAgY2FsbCB3YXMgd3JvbmdseSByZW1vdmVkIGluIHByZXZpb3VzIGNvbW1pdCBhbmQgcGVy
Zm9ybXMgdGhlIHNjcm9sbAotICAgICAgICBvcGVyYXRpb24gb24gdGhlIHBhZ2UuCi0KLSAgICAg
ICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoZXdrX3ZpZXdfc2Nyb2xsKToKLQotMjAx
MC0xMi0wMyAgQWxleCBCcmVkYXJpb2wgR3JpbG8gIDxhYmdyaWxvQHByb2Z1c2lvbi5tb2JpPgot
Ci0gICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCi0KLSAgICAgICAgVXBkYXRlIHVz
YWdlIG9mIEVpbmFfSXRlcmF0b3IgZHVlIHRvIEVGTCBjaGFuZ2VzLgotICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTA0NTcKLQotICAgICAgICAqIGV3ay9l
d2tfdGlsZWRfbW9kZWwuYzoKLSAgICAgICAgKGV3a190aWxlX3VwZGF0ZXNfcHJvY2Vzcyk6Ci0K
LTIwMTAtMTItMDEgIEppYSBQdSAgPGpwdUBhcHBsZS5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQg
YnkgRGFyaW4gQWRsZXIuCi0KLSAgICAgICAgU3VwcG9ydCBtdWx0aXBsZSBjb3JyZWN0aW9uIGNh
bmRpZGF0ZXMgcGFuZWwgZm9yIG1pc3NwZWxsZWQgd29yZCBvbiBNYWMgT1MgWC4KLSAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUwMTM3Ci0gICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS84NTY4MDU5PgotCi0gICAgICAgIEFkb3B0ZWQgbmV3IGZ1bmN0aW9uIHNp
Z25hdHVyZSBkZWZpbmVkIGluIGJhc2UgY2xhc3MuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9FZGl0b3JDbGllbnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50RWZs
OjpnZXRHdWVzc2VzRm9yV29yZCk6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xp
ZW50RWZsLmg6Ci0KLTIwMTAtMTEtMjIgIEFsZXggR3JpbG8gIDxhYmdyaWxvQHByb2Z1c2lvbi5t
b2JpPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgot
Ci0gICAgICAgIFtFRkxdIFRpbGVkIEJhY2tpbmcgU3RvcmUgZm9yIFdlYmtpdC1FZmwKLSAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ1Mzk3Ci0KLSAgICAg
ICAgVGhpcyB0aWxlIGJhc2VkIGJhY2tpbmcgc3RvcmUgaXMgYSBncmlkIG9mIHRpbGVzIHdoZXJl
IGVhY2ggdGlsZSBpcwotICAgICAgICBhbiBFdmFzX09iamVjdCBzaG93aW5nIGEgcGllY2Ugb2Yg
dGhlIHBhZ2UgY29udGVudC4gVGhlCi0gICAgICAgIG5ldyBld2tfdmlld190aWxlZC5jIGlzIGFu
IGltcGxlbWVudGF0aW9uIG9mIHNvbWUgb2YgdGhlIGZ1bmN0aW9ucyBvZgotICAgICAgICB0aGUg
b3JpZ2luYWwgZXdrX3ZpZXcsIHRoYXQgbWFrZXMgY2FsbHMgdG8gdGhlIFRpbGVkIEJhY2tpbmcg
U3RvcmUKLSAgICAgICAgc3BlY2lmaWMgZnVuY3Rpb25zLgotCi0gICAgICAgIFRoZSByZW5kZXJp
bmcgb2NjdXJzIGluIHRoZSBwaXhlbHMgc3RvcmVkIGluIGVhY2ggdGlsZSAoRXZhc19PYmplY3Qp
LAotICAgICAgICBpbiB0aGUgc2FtZSB3YXkgYXMgdGhlIHByZXZpb3VzIHNpbmdsZSBiYWNraW5n
IHN0b3JlLiBUaWxlcyBub3QgYmVpbmcKLSAgICAgICAgc2hvd24gaW4gdGhlIHZpZXdwb3J0IGFy
ZSBzdG9yZWQgaW4gYSBjYWNoZSwgYW5kIGNhbiBiZSByZXVzZWQgbGF0ZXIKLSAgICAgICAgdG8g
YXZvaWQgaGF2aW5nIHRvIGJlIHJlbmRlcmVkIGFnYWluLgotCi0gICAgICAgIFNjcm9sbGluZyBv
Y2N1cnMgYXMganVzdCBtb3ZpbmcgdGhlIHRpbGVzLCB1c2luZyBFdmFzIG1vdmUgb3BlcmF0aW9u
cywKLSAgICAgICAgYW5kIHdoZW4gbW9yZSB0aGFuIG9uZSB0aWxlIHNpemUgaXMgc2Nyb2xsZWQs
IGEgc2hpZnQgb2Ygcm93cyBvcgotICAgICAgICBjb2x1bW5zIG5lZWRzIHRvIGJlIGRvbmUuCi0K
LSAgICAgICAgKiBDTWFrZUxpc3RzRWZsLnR4dDoKLSAgICAgICAgKiBld2svZXdrX3RpbGVkX2Jh
Y2tpbmdfc3RvcmUuYzogQWRkZWQuCi0gICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVf
dXBkYXRlc19wcm9jZXNzKToKLSAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9mbHVz
aCk6Ci0gICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdGlsZV9uZXcpOgotICAgICAg
ICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX2l0ZW1fbW92ZSk6Ci0gICAgICAgIChfZXdrX3Rp
bGVkX2JhY2tpbmdfc3RvcmVfaXRlbV9yZXNpemUpOgotICAgICAgICAoX2V3a190aWxlZF9iYWNr
aW5nX3N0b3JlX3RpbGVfYXNzb2NpYXRlKToKLSAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19z
dG9yZV90aWxlX2Rpc3NvY2lhdGUpOgotICAgICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3Jl
X3RpbGVfZGlzc29jaWF0ZV9hbGwpOgotICAgICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3Jl
X3ByZV9yZW5kZXJfcmVxdWVzdF9hZGQpOgotICAgICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0
b3JlX3ByZV9yZW5kZXJfcmVxdWVzdF9kZWwpOgotICAgICAgICAoX2V3a190aWxlZF9iYWNraW5n
X3N0b3JlX3ByZV9yZW5kZXJfcmVxdWVzdF9maXJzdCk6Ci0gICAgICAgIChfZXdrX3RpbGVkX2Jh
Y2tpbmdfc3RvcmVfcHJlX3JlbmRlcl9yZXF1ZXN0X2ZsdXNoKToKLSAgICAgICAgKF9ld2tfdGls
ZWRfYmFja2luZ19zdG9yZV9wcmVfcmVuZGVyX3JlcXVlc3RfcmVtb3ZlX3VuYXNzb2NpYXRlZCk6
Ci0gICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcHJlX3JlbmRlcl9yZXF1ZXN0X3Jl
bW92ZV9hc3NvY2lhdGVkKToKLSAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVf
cmVuZGVyX3JlcXVlc3RfcHJvY2Vzc19zaW5nbGUpOgotICAgICAgICAoX2V3a190aWxlZF9iYWNr
aW5nX3N0b3JlX2l0ZW1fcHJvY2Vzc19pZGxlcl9jYik6Ci0gICAgICAgIChfZXdrX3RpbGVkX2Jh
Y2tpbmdfc3RvcmVfaXRlbV9wcm9jZXNzX2lkbGVyX3N0b3ApOgotICAgICAgICAoX2V3a190aWxl
ZF9iYWNraW5nX3N0b3JlX2l0ZW1fcHJvY2Vzc19pZGxlcl9zdGFydCk6Ci0gICAgICAgIChfZXdr
X3RpbGVkX2JhY2tpbmdfc3RvcmVfaXRlbV9yZXF1ZXN0X2RlbCk6Ci0gICAgICAgIChfZXdrX3Rp
bGVkX2JhY2tpbmdfc3RvcmVfaXRlbV9yZXF1ZXN0X2FkZCk6Ci0gICAgICAgIChfZXdrX3RpbGVk
X2JhY2tpbmdfc3RvcmVfZGlzYWJsZV9yZW5kZXIpOgotICAgICAgICAoX2V3a190aWxlZF9iYWNr
aW5nX3N0b3JlX2VuYWJsZV9yZW5kZXIpOgotICAgICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0
b3JlX3Zpc2libGVfdGlsZXNfcmVjdCk6Ci0gICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3Rv
cmVfdGlsZV9pc19pbnNpZGVfdmlld3BvcnQpOgotICAgICAgICAoX2V3a190aWxlZF9iYWNraW5n
X3N0b3JlX3RpbGVfaXNfYWRqYWNlbnRfdG9fdmlld3BvcnQpOgotICAgICAgICAoX2V3a190aWxl
ZF9iYWNraW5nX3N0b3JlX2l0ZW1fZmlsbCk6Ci0gICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdf
c3RvcmVfaXRlbV9hZGQpOgotICAgICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX2l0ZW1f
ZGVsKToKLSAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9pdGVtX3Ntb290aF9zY2Fs
ZV9zZXQpOgotICAgICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX2NoYW5nZWQpOgotICAg
ICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3ZpZXdfY29sc19lbmRfZGVsKToKLSAgICAg
ICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV92aWV3X2NvbHNfZW5kX2FkZCk6Ci0gICAgICAg
IChfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdmlld19yb3dfZGVsKToKLSAgICAgICAgKF9ld2tf
dGlsZWRfYmFja2luZ19zdG9yZV92aWV3X3Jvd3NfcmFuZ2VfZGVsKToKLSAgICAgICAgKF9ld2tf
dGlsZWRfYmFja2luZ19zdG9yZV92aWV3X3Jvd3NfYWxsX2RlbCk6Ci0gICAgICAgIChfZXdrX3Rp
bGVkX2JhY2tpbmdfc3RvcmVfcmVuZGVyKToKLSAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19z
dG9yZV9tb2RlbF9tYXRyaXhfY3JlYXRlKToKLSAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19z
dG9yZV9zbWFydF9tZW1iZXJfZGVsKToKLSAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9y
ZV9zbWFydF9tZW1iZXJfYWRkKToKLSAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9t
ZW1fZGJnKToKLSAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9zaWdfdXNyKToKLSAg
ICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9zbWFydF9hZGQpOgotICAgICAgICAoX2V3
a190aWxlZF9iYWNraW5nX3N0b3JlX3NtYXJ0X2RlbCk6Ci0gICAgICAgIChfZXdrX3RpbGVkX2Jh
Y2tpbmdfc3RvcmVfc21hcnRfbW92ZSk6Ci0gICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3Rv
cmVfc21hcnRfcmVzaXplKToKLSAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9yZWNh
bGNfcmVuZGVyZXJzKToKLSAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9zbWFydF9j
YWxjdWxhdGVfc2l6ZSk6Ci0gICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdmlld19k
YmcpOgotICAgICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3ZpZXdfd3JhcF91cCk6Ci0g
ICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdmlld193cmFwX2Rvd24pOgotICAgICAg
ICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3ZpZXdfd3JhcF9sZWZ0KToKLSAgICAgICAgKF9l
d2tfdGlsZWRfYmFja2luZ19zdG9yZV92aWV3X3dyYXBfcmlnaHQpOgotICAgICAgICAoX2V3a190
aWxlZF9iYWNraW5nX3N0b3JlX3ZpZXdfcmVmaWxsKToKLSAgICAgICAgKF9ld2tfdGlsZWRfYmFj
a2luZ19zdG9yZV92aWV3X3Bvc19hcHBseSk6Ci0gICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdf
c3RvcmVfc21hcnRfY2FsY3VsYXRlX29mZnNldF9mb3JjZSk6Ci0gICAgICAgIChfZXdrX3RpbGVk
X2JhY2tpbmdfc3RvcmVfc21hcnRfY2FsY3VsYXRlX29mZnNldCk6Ci0gICAgICAgIChfZXdrX3Rp
bGVkX2JhY2tpbmdfc3RvcmVfc21hcnRfY2FsY3VsYXRlX3Bvcyk6Ci0gICAgICAgIChfZXdrX3Rp
bGVkX2JhY2tpbmdfc3RvcmVfZmlsbF9yZW5kZXJlcnMpOgotICAgICAgICAoX2V3a190aWxlZF9i
YWNraW5nX3N0b3JlX3NtYXJ0X2NhbGN1bGF0ZSk6Ci0gICAgICAgIChld2tfdGlsZWRfYmFja2lu
Z19zdG9yZV9hZGQpOgotICAgICAgICAoZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcmVuZGVyX2Ni
X3NldCk6Ci0gICAgICAgIChld2tfdGlsZWRfYmFja2luZ19zdG9yZV90aWxlX3VudXNlZF9jYWNo
ZV9nZXQpOgotICAgICAgICAoZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdGlsZV91bnVzZWRfY2Fj
aGVfc2V0KToKLSAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9zY3JvbGxfZnVsbF9v
ZmZzZXRfc2V0X2ludGVybmFsKToKLSAgICAgICAgKGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3Nj
cm9sbF9mdWxsX29mZnNldF9zZXQpOgotICAgICAgICAoZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVf
c2Nyb2xsX2Z1bGxfb2Zmc2V0X2FkZCk6Ci0gICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3Rv
cmVfem9vbV9zZXRfaW50ZXJuYWwpOgotICAgICAgICAoZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVf
em9vbV9zZXQpOgotICAgICAgICAoZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfem9vbV93ZWFrX3Nl
dCk6Ci0gICAgICAgIChld2tfdGlsZWRfYmFja2luZ19zdG9yZV9maXhfb2Zmc2V0cyk6Ci0gICAg
ICAgIChld2tfdGlsZWRfYmFja2luZ19zdG9yZV96b29tX3dlYWtfc21vb3RoX3NjYWxlX3NldCk6
Ci0gICAgICAgIChld2tfdGlsZWRfYmFja2luZ19zdG9yZV91cGRhdGUpOgotICAgICAgICAoZXdr
X3RpbGVkX2JhY2tpbmdfc3RvcmVfdXBkYXRlc19wcm9jZXNzX3ByZV9zZXQpOgotICAgICAgICAo
ZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdXBkYXRlc19wcm9jZXNzX3Bvc3Rfc2V0KToKLSAgICAg
ICAgKGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3VwZGF0ZXNfcHJvY2Vzcyk6Ci0gICAgICAgIChl
d2tfdGlsZWRfYmFja2luZ19zdG9yZV91cGRhdGVzX2NsZWFyKToKLSAgICAgICAgKGV3a190aWxl
ZF9iYWNraW5nX3N0b3JlX2NvbnRlbnRzX3Jlc2l6ZSk6Ci0gICAgICAgIChld2tfdGlsZWRfYmFj
a2luZ19zdG9yZV9kaXNhYmxlZF91cGRhdGVfc2V0KToKLSAgICAgICAgKGV3a190aWxlZF9iYWNr
aW5nX3N0b3JlX2ZsdXNoKToKLSAgICAgICAgKGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3ByZV9y
ZW5kZXJfcmVnaW9uKToKLSAgICAgICAgKGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3ByZV9yZW5k
ZXJfcmVsYXRpdmVfcmFkaXVzKToKLSAgICAgICAgKGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3By
ZV9yZW5kZXJfY2FuY2VsKToKLSAgICAgICAgKGV3a190aWxlZF9iYWNraW5nX3N0b3JlX2Rpc2Fi
bGVfcmVuZGVyKToKLSAgICAgICAgKGV3a190aWxlZF9iYWNraW5nX3N0b3JlX2VuYWJsZV9yZW5k
ZXIpOgotICAgICAgICAoZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcHJvY2Vzc19lbnRpcmVfcXVl
dWVfc2V0KToKLSAgICAgICAgKiBld2svZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUuaDogQWRkZWQu
Ci0gICAgICAgICogZXdrL2V3a190aWxlZF9tYXRyaXguYzogQWRkZWQuCi0gICAgICAgIChfZXdr
X3RpbGVfbWF0cml4X2NlbGxfZnJlZSk6Ci0gICAgICAgIChfZXdrX3RpbGVfbWF0cml4X3RpbGVf
ZnJlZSk6Ci0gICAgICAgIChld2tfdGlsZV9tYXRyaXhfbmV3KToKLSAgICAgICAgKGV3a190aWxl
X21hdHJpeF9mcmVlKToKLSAgICAgICAgKGV3a190aWxlX21hdHJpeF9yZXNpemUpOgotICAgICAg
ICAoZXdrX3RpbGVfbWF0cml4X3VudXNlZF9jYWNoZV9nZXQpOgotICAgICAgICAoZXdrX3RpbGVf
bWF0cml4X3RpbGVfZXhhY3RfZ2V0KToKLSAgICAgICAgKGV3a190aWxlX21hdHJpeF90aWxlX2V4
YWN0X2V4aXN0cyk6Ci0gICAgICAgIChld2tfdGlsZV9tYXRyaXhfdGlsZV9uZWFyZXN0X2dldCk6
Ci0gICAgICAgIChld2tfdGlsZV9tYXRyaXhfdGlsZV9uZXcpOgotICAgICAgICAoZXdrX3RpbGVf
bWF0cml4X3RpbGVfcHV0KToKLSAgICAgICAgKGV3a190aWxlX21hdHJpeF90aWxlX3VwZGF0ZSk6
Ci0gICAgICAgIChld2tfdGlsZV9tYXRyaXhfdGlsZV91cGRhdGVfZnVsbCk6Ci0gICAgICAgIChl
d2tfdGlsZV9tYXRyaXhfdGlsZV91cGRhdGVzX2NsZWFyKToKLSAgICAgICAgKF9ld2tfdGlsZV9t
YXRyaXhfc2xpY2VyX3NldHVwKToKLSAgICAgICAgKGV3a190aWxlX21hdHJpeF91cGRhdGUpOgot
ICAgICAgICAoZXdrX3RpbGVfbWF0cml4X3VwZGF0ZXNfcHJvY2Vzcyk6Ci0gICAgICAgIChld2tf
dGlsZV9tYXRyaXhfdXBkYXRlc19jbGVhcik6Ci0gICAgICAgIChld2tfdGlsZV9tYXRyaXhfZGJn
KToKLSAgICAgICAgKGV3a190aWxlX21hdHJpeF9mcmVlemUpOgotICAgICAgICAoZXdrX3RpbGVf
bWF0cml4X3RoYXcpOgotICAgICAgICAqIGV3ay9ld2tfdGlsZWRfbWF0cml4Lmg6IEFkZGVkLgot
ICAgICAgICAqIGV3ay9ld2tfdGlsZWRfbW9kZWwuYzogQWRkZWQuCi0gICAgICAgIChfZXdrX3Rp
bGVfYWNjb3VudF9nZXQpOgotICAgICAgICAoX2V3a190aWxlX2FjY291bnRfYWxsb2NhdGVkKToK
LSAgICAgICAgKF9ld2tfdGlsZV9hY2NvdW50X2ZyZWVkKToKLSAgICAgICAgKGV3a190aWxlX2Fj
Y291bnRpbmdfZGJnKToKLSAgICAgICAgKF9ld2tfdGlsZV9wYWludF9yZ2I4ODgpOgotICAgICAg
ICAoX2V3a190aWxlX3BhaW50X3JnYjU2NSk6Ci0gICAgICAgIChfZXdrX3RpbGVfcGFpbnQpOgot
ICAgICAgICAoZXdrX3RpbGVfbmV3KToKLSAgICAgICAgKGV3a190aWxlX2ZyZWUpOgotICAgICAg
ICAoZXdrX3RpbGVfc2hvdyk6Ci0gICAgICAgIChld2tfdGlsZV9oaWRlKToKLSAgICAgICAgKGV3
a190aWxlX3Zpc2libGVfZ2V0KToKLSAgICAgICAgKGV3a190aWxlX3VwZGF0ZV9mdWxsKToKLSAg
ICAgICAgKGV3a190aWxlX3VwZGF0ZV9hcmVhKToKLSAgICAgICAgKGV3a190aWxlX3VwZGF0ZXNf
cHJvY2Vzcyk6Ci0gICAgICAgIChld2tfdGlsZV91cGRhdGVzX2NsZWFyKToKLSAgICAgICAgKGV3
a190aWxlX3VudXNlZF9jYWNoZV9uZXcpOgotICAgICAgICAoZXdrX3RpbGVfdW51c2VkX2NhY2hl
X2xvY2tfYXJlYSk6Ci0gICAgICAgIChld2tfdGlsZV91bnVzZWRfY2FjaGVfdW5sb2NrX2FyZWEp
OgotICAgICAgICAoZXdrX3RpbGVfdW51c2VkX2NhY2hlX2ZyZWUpOgotICAgICAgICAoZXdrX3Rp
bGVfdW51c2VkX2NhY2hlX2NsZWFyKToKLSAgICAgICAgKGV3a190aWxlX3VudXNlZF9jYWNoZV9y
ZWYpOgotICAgICAgICAoZXdrX3RpbGVfdW51c2VkX2NhY2hlX3VucmVmKToKLSAgICAgICAgKGV3
a190aWxlX3VudXNlZF9jYWNoZV9tYXhfc2V0KToKLSAgICAgICAgKGV3a190aWxlX3VudXNlZF9j
YWNoZV9tYXhfZ2V0KToKLSAgICAgICAgKGV3a190aWxlX3VudXNlZF9jYWNoZV91c2VkX2dldCk6
Ci0gICAgICAgIChld2tfdGlsZV91bnVzZWRfY2FjaGVfZmx1c2gpOgotICAgICAgICAoZXdrX3Rp
bGVfdW51c2VkX2NhY2hlX2F1dG9fZmx1c2gpOgotICAgICAgICAoZXdrX3RpbGVfdW51c2VkX2Nh
Y2hlX2RpcnR5KToKLSAgICAgICAgKGV3a190aWxlX3VudXNlZF9jYWNoZV9mcmVlemUpOgotICAg
ICAgICAoZXdrX3RpbGVfdW51c2VkX2NhY2hlX3RoYXcpOgotICAgICAgICAoZXdrX3RpbGVfdW51
c2VkX2NhY2hlX3RpbGVfZ2V0KToKLSAgICAgICAgKGV3a190aWxlX3VudXNlZF9jYWNoZV90aWxl
X3B1dCk6Ci0gICAgICAgIChld2tfdGlsZV91bnVzZWRfY2FjaGVfZGJnKToKLSAgICAgICAgKiBl
d2svZXdrX3RpbGVkX21vZGVsLmg6IEFkZGVkLgotICAgICAgICAqIGV3ay9ld2tfdGlsZWRfcHJp
dmF0ZS5oOiBBZGRlZC4KLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoX2V3
a192aWV3X3NtYXJ0X2FkZCk6Ci0gICAgICAgIChfZXdrX3ZpZXdfc21hcnRfY2FsY3VsYXRlKToK
LSAgICAgICAgKF9ld2tfdmlld19zbWFydF9zaG93KToKLSAgICAgICAgKF9ld2tfdmlld19zbWFy
dF9oaWRlKToKLSAgICAgICAgKF9ld2tfdmlld19zbWFydF9wcmVfcmVuZGVyX3JlbGF0aXZlX3Jh
ZGl1cyk6Ci0gICAgICAgIChfZXdrX3ZpZXdfem9vbV9hbmltYXRvcl9jYik6Ci0gICAgICAgIChf
ZXdrX3ZpZXdfc21hcnRfZGlzYWJsZV9yZW5kZXIpOgotICAgICAgICAoX2V3a192aWV3X3NtYXJ0
X2VuYWJsZV9yZW5kZXIpOgotICAgICAgICAoZXdrX3ZpZXdfYmFzZV9zbWFydF9zZXQpOgotICAg
ICAgICAoZXdrX3ZpZXdfcHJlX3JlbmRlcl9yZWdpb24pOgotICAgICAgICAoZXdrX3ZpZXdfcHJl
X3JlbmRlcl9yZWxhdGl2ZV9yYWRpdXMpOgotICAgICAgICAoZXdrX3ZpZXdfZW5hYmxlX3JlbmRl
cik6Ci0gICAgICAgIChld2tfdmlld19kaXNhYmxlX3JlbmRlcik6Ci0gICAgICAgIChld2tfdmll
d19zY3JvbGwpOgotICAgICAgICAoZXdrX3ZpZXdfZGlkX2ZpcnN0X3Zpc3VhbGx5X25vbmVtcHR5
X2xheW91dCk6Ci0gICAgICAgIChld2tfdmlld19kaXNwYXRjaF9kaWRfZmluaXNoX2xvYWRpbmcp
OgotICAgICAgICAoZXdrX3ZpZXdfdHJhbnNpdGlvbl90b19jb21taXRlZF9mb3JfbmV3cGFnZSk6
Ci0gICAgICAgICogZXdrL2V3a192aWV3Lmg6Ci0gICAgICAgICogZXdrL2V3a192aWV3X3RpbGVk
LmM6IEFkZGVkLgotICAgICAgICAoX2V3a192aWV3X3RpbGVkX3JlbmRlcl9jYik6Ci0gICAgICAg
IChfZXdrX3ZpZXdfdGlsZWRfdXBkYXRlc19wcm9jZXNzX3ByZSk6Ci0gICAgICAgIChfZXdrX3Zp
ZXdfdGlsZWRfc21hcnRfYmFja2luZ19zdG9yZV9hZGQpOgotICAgICAgICAoX2V3a192aWV3X3Rp
bGVkX2NvbnRlbnRzX3NpemVfY2hhbmdlZF9jYik6Ci0gICAgICAgIChfZXdrX3ZpZXdfdGlsZWRf
c21hcnRfYWRkKToKLSAgICAgICAgKF9ld2tfdmlld190aWxlZF9zbWFydF9zY3JvbGxzX3Byb2Nl
c3MpOgotICAgICAgICAoX2V3a192aWV3X3RpbGVkX3NtYXJ0X3JlcGFpbnRzX3Byb2Nlc3MpOgot
ICAgICAgICAoX2V3a192aWV3X3RpbGVkX3NtYXJ0X2NvbnRlbnRzX3Jlc2l6ZSk6Ci0gICAgICAg
IChfZXdrX3ZpZXdfdGlsZWRfc21hcnRfem9vbV9zZXQpOgotICAgICAgICAoX2V3a192aWV3X3Rp
bGVkX3NtYXJ0X3pvb21fd2Vha19zZXQpOgotICAgICAgICAoX2V3a192aWV3X3RpbGVkX3NtYXJ0
X3pvb21fd2Vha19zbW9vdGhfc2NhbGVfc2V0KToKLSAgICAgICAgKF9ld2tfdmlld190aWxlZF9z
bWFydF9mbHVzaCk6Ci0gICAgICAgIChfZXdrX3ZpZXdfdGlsZWRfc21hcnRfcHJlX3JlbmRlcl9y
ZWdpb24pOgotICAgICAgICAoX2V3a192aWV3X3RpbGVkX3NtYXJ0X3ByZV9yZW5kZXJfcmVsYXRp
dmVfcmFkaXVzKToKLSAgICAgICAgKF9ld2tfdmlld190aWxlZF9zbWFydF9wcmVfcmVuZGVyX2Nh
bmNlbCk6Ci0gICAgICAgIChfZXdrX3ZpZXdfdGlsZWRfc21hcnRfZGlzYWJsZV9yZW5kZXIpOgot
ICAgICAgICAoX2V3a192aWV3X3RpbGVkX3NtYXJ0X2VuYWJsZV9yZW5kZXIpOgotICAgICAgICAo
ZXdrX3ZpZXdfdGlsZWRfc21hcnRfc2V0KToKLSAgICAgICAgKF9ld2tfdmlld190aWxlZF9zbWFy
dF9jbGFzc19uZXcpOgotICAgICAgICAoZXdrX3ZpZXdfdGlsZWRfYWRkKToKLSAgICAgICAgKGV3
a192aWV3X3RpbGVkX3VudXNlZF9jYWNoZV9nZXQpOgotICAgICAgICAoZXdrX3ZpZXdfdGlsZWRf
dW51c2VkX2NhY2hlX3NldCk6Ci0gICAgICAgIChld2tfdmlld190aWxlZF9wcm9jZXNzX2VudGly
ZV9xdWV1ZV9zZXQpOgotCi0yMDEwLTExLTE2ICBMZWFuZHJvIFBlcmVpcmEgIDxsZWFuZHJvQHBy
b2Z1c2lvbi5tb2JpPgotCi0gICAgICAgIFtFRkxdIFVucmV2aWV3ZWQuIEJ1aWxkIGZpeC4KLQot
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmg6IEFsc28gaW5j
bHVkZQotICAgICAgICBSZXNvdXJjZUVycm9yLmguCi0KLTIwMTAtMTEtMTYgIFBhdHJpY2sgR2Fu
c3RlcmVyICA8cGFyb2dhQHdlYmtpdC5vcmc+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVh
cyBLbGluZy4KLQotICAgICAgICBbQ01ha2VdIEFkZCBwbGF0Zm9ybSBkZXBlbmRlbnQgaW5jbHVk
ZSBkaXJlY3RvcmllcwotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NDk1NTMKLQotICAgICAgICAqIENNYWtlTGlzdHNFZmwudHh0OgotCi0yMDEwLTExLTE0
ICBSeXVhbiBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBSZXZpZXdl
ZCBieSBNYXJ0aW4gUm9iaW5zb24uCi0KLSAgICAgICAgW0VGTF0gYWRkIHBhbmdvIHN1cHBvcnQK
LSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2MDI5Ci0K
LSAgICAgICAgQWRkIHBhbmdvIGluIGluY2x1ZGUgYW5kIGxpYnMuCi0KLSAgICAgICAgKiBDTWFr
ZUxpc3RzRWZsLnR4dDoKLQotMjAxMC0xMS0xMSAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lAc2Ft
c3VuZy5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KLQotICAgICAgICBb
R1RLXSBNb3ZlIGZvbnQgcmVsYXRlZCBmaWxlcy4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4MTE2Ci0KLSAgICAgICAgQWRkIGZyZWV0eXBlLyB0byBp
bmNsdWRlIHBhdGguCi0KLSAgICAgICAgKiBDTWFrZUxpc3RzRWZsLnR4dDoKLQotMjAxMC0xMS0w
OCAgUmFmYWVsIEFudG9nbm9sbGkgIDxhbnRvZ25vbGxpQHByb2Z1c2lvbi5tb2JpPgotCi0gICAg
ICAgIFJldmlld2VkIGJ5IEFudG9uaW8gR29tZXMuCi0KLSAgICAgICAgW0VGTF0gQ2hhbmdlIHRo
ZSB1c2FnZSBvZiBlaW5hX2l0ZXJhdG9yX25leHQgZHVlIHRvIGxhdGVzdCBFRkwgY2hhbmdlcy4K
LSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ5MDgyCi0K
LSAgICAgICAgQSBjaGFuZ2Ugb24gaG93IHRoZSBpdGVyYXRvciBmb3IgYSB0aWxlciBpcyB1c2Vk
IGluIEVGTCBuZWVkcyB0byBiZQotICAgICAgICByZWZsZWN0ZWQgaW4gV2ViS2l0LUVGTC4gVGhl
IGl0ZXJhdG9yIG5vdyByZWNlaXZlcyBhIHBvaW50ZXIgdG8gYW4KLSAgICAgICAgRWluYV9SZWN0
YW5nbGUgYW5kIG1ha2VzIGl0IHBvaW50IHRvIGl0cyBpbnRlcm5hbCBzdHJ1Y3R1cmUuIFRoZSBv
bGQKLSAgICAgICAgdXNhZ2Ugd2FzIHRvIHJlY2VpdmUgYSByZWZlcmVuY2UgdG8gYSBwcmUtYWxs
b2NhdGVkIEVpbmFfUmVjdGFuZ2xlLgotCi0gICAgICAgICogZXdrL2V3a192aWV3X3NpbmdsZS5j
OgotICAgICAgICAoX2V3a192aWV3X3NpbmdsZV9zbWFydF9yZXBhaW50c19wcm9jZXNzKToKLQot
MjAxMC0xMS0wOCAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KLQotICAgICAg
ICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KLQotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDg2ODUKLSAgICAgICAgTm90aWZ5IFVJIHByb2Nlc3MgYWJv
dXQgZm9jdXNlZCBmcmFtZQotCi0gICAgICAgIEFkZGVkIGFuIGVtcHR5IGltcGxlbWVudGF0aW9u
IG9mIHRoZSBuZXcgQ2hyb21lQ2xpZW50IG1ldGhvZC4KLQotICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0Nocm9tZUNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRF
Zmw6OmZvY3VzZWRGcmFtZUNoYW5nZWQpOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9t
ZUNsaWVudEVmbC5oOgotCi0yMDEwLTExLTA1ICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUB3
ZWJraXQub3JnPgotCi0gICAgICAgIFJldmlld2VkIGJ5IERhdmlkIEtpbHplci4KLQotICAgICAg
ICBSZXBsYWNlIEFSUkFZU0laRSB3aXRoIFdURl9BUlJBWV9MRU5HVEgKLSAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4OTAzCi0KLSAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29yZTo6RWRpdG9y
Q2xpZW50RWZsOjppbnRlcnByZXRLZXlFdmVudCk6Ci0KLTIwMTAtMTEtMDQgIFJ5dWFuIENob2kg
IDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFy
dGguCi0KLSAgICAgICAgW0VGTF0gUmVmbGVjdCBsYXRlc3QgRUZMIGNoYW5nZXMgcmVsYXRlZCB0
byBzdHJpZGUuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD00ODk3MQotCi0gICAgICAgIFJlbW92ZSBhZGp1c3RtZW50IGNvZGUgdG8gY29tcGFyZSBzdHJp
ZGUgb2YgY2Fpcm9faW1hZ2Vfc3VyZmVjZSBhbmQgZXZhc19vYmplY3RfaW1hZ2UsIGFzIGZvbGxv
d2luZyBjaGFuZ2VzIG9mIGxhdGVzdCBFRkwuCi0KLSAgICAgICAgKiBld2svZXdrX3V0aWwuY3Bw
OgotICAgICAgICAoZXdrX3V0aWxfaW1hZ2VfZnJvbV9jYWlyb19zdXJmYWNlX2FkZCk6Ci0KLTIw
MTAtMTEtMDMgIERhbmllbCBCYXRlcyAgPGRiYXRlc0ByaW0uY29tPgotCi0gICAgICAgIEZvciB1
bm5hbWVkIGZyYW1lcywgd2luZG93Lm5hbWUgcmV0dXJucyBhIGdlbmVyYXRlZCBuYW1lCi0gICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NzUxCi0KLSAgICAg
ICAgUGFydCAxIG9mIDIuCi0KLSAgICAgICAgU3Vic3RpdHV0ZSBGcmFtZVRyZWU6OnVuaXF1ZU5h
bWUoKSBmb3IgRnJhbWVUcmVlOjpuYW1lKCkgaW4gdGhlIEVGTCBwb3J0LgotCi0gICAgICAgICog
ZXdrL2V3a19mcmFtZS5jcHA6Ci0gICAgICAgIChld2tfZnJhbWVfbmFtZV9nZXQpOgotCi0yMDEw
LTExLTAyICBEYW5pZWwgQmF0ZXMgIDxkYmF0ZXNAcmltLmNvbT4KLQotICAgICAgICBSZXZpZXdl
ZCBieSBNYXJ0aW4gUm9iaW5zb24uCi0KLSAgICAgICAgU2V0IGZyYW1lIG5hbWUgYmVmb3JlIGFw
cGVuZGluZyBpdCB0byB0aGUgZnJhbWUgdHJlZSBpbiB0aGUgQXBwbGUgV2luZG93cywKLSAgICAg
ICAgR1RLLCBhbmQgRUZMIHBvcnRzCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD00ODgwNgotCi0gICAgICAgIE1ha2UgdGhlIGZyYW1lIGNyZWF0aW9uIHBy
b2Nlc3MgaW4gdGhlIEVGTC1wb3J0IGNvbnNpc3RlbnQgd2l0aCB0aGUKLSAgICAgICAgTWFjLCBR
dCwgYW5kIEhhaWt1IHBvcnRzLiBJbiBwYXJ0aWN1bGFyLCBzZXQgdGhlIG5hbWUgb2YgdGhlIG5l
dwotICAgICAgICBmcmFtZSBiZWZvcmUgaXQncyBhcHBlbmRlZCB0byB0aGUgZnJhbWUgdHJlZS4K
LQotICAgICAgICBBdCB0aGlzIHRpbWUgd2UgY2Fubm90IHRlc3QgdGhpcyBjaGFuZ2Ugc2luY2Ug
aXQgaXMgYmVpbmcgbWFza2VkIGJ5Ci0gICAgICAgIEhUTUxGcmFtZUVsZW1lbnRCYXNlOjpzZXRO
YW1lKCkgPGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvYnJvd3Nlci90cnVuay9XZWJDb3JlL2h0bWwv
SFRNTEZyYW1lRWxlbWVudEJhc2UuY3BwP3Jldj03MDk3NiNMMTYwPi4KLSAgICAgICAgV2UnbGwg
YmUgYWJsZSB0byB0ZXN0IHRoaXMgb25jZSB3ZSBmaXggYnVnICM2NzUxLgotCi0gICAgICAgICog
ZXdrL2V3a19mcmFtZS5jcHA6Ci0gICAgICAgIChld2tfZnJhbWVfY2hpbGRfYWRkKToKLQotMjAx
MC0xMS0wMSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+Ci0KLSAgICAgICAgUmV2
aWV3ZWQgYnkgQW5kZXJzIENhcmxzc29uLgotCi0gICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NjYw
NTQ3PiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4Njk5Ci0g
ICAgICAgIENvbnRleHQgbWVudSBzdXBwb3J0IGZvciBXZWJLaXQgMi4KLQotICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oOgotICAgICAgICAoV2ViQ29yZTo6Q2hyb21l
Q2xpZW50RWZsOjpzaG93Q29udGV4dE1lbnUpOgotCi0yMDEwLTEwLTI5ICBEYW5pZWwgQmF0ZXMg
IDxkYmF0ZXNAcmltLmNvbT4KLQotICAgICAgICBObyByZXZpZXcsIHJvbGxpbmcgb3V0IDcwOTcx
LgotICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC83MDk3MQotICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njc1MQotCi0gICAgICAg
IFJvbGxpbmcgb3V0IGNoYW5nZXNldCA3MDk3MSA8aHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFu
Z2VzZXQvNzA5NzE+IHNpbmNlCi0gICAgICAgIGl0IGNhdXNlZCBsYXlvdXQgdGVzdCBmYWlsdXJl
cyBvbiBhbGwgYm90cy4gSW4gcGFydGljdWxhciwgdGhlCi0gICAgICAgIGNoaWxkIGNvdW50IGlu
IGEgZ2VuZXJhdGVkIGZyYW1lIG5hbWUgZGlmZmVycyBhZnRlciB0aGlzIHBhdGNoLiBXZSBuZWVk
Ci0gICAgICAgIHRvIGxvb2sgaW50byB0aGlzIGZ1cnRoZXIuCi0KLSAgICAgICAgKiBld2svZXdr
X2ZyYW1lLmNwcDoKLSAgICAgICAgKGV3a19mcmFtZV9uYW1lX2dldCk6Ci0KLTIwMTAtMTAtMjkg
IERhbmllbCBCYXRlcyAgPGRiYXRlc0ByaW0uY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEFk
YW0gQmFydGguCi0KLSAgICAgICAgRm9yIHVubmFtZWQgZnJhbWVzLCB3aW5kb3cubmFtZSByZXR1
cm5zIGEgZ2VuZXJhdGVkIG5hbWUKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTY3NTEKLQotICAgICAgICBNb2RpZmllZCBFRkwtcG9ydCB0byB1c2UgRnJh
bWVUcmVlOjp1bmlxdWVOYW1lKCkuCi0KLSAgICAgICAgKiBld2svZXdrX2ZyYW1lLmNwcDoKLSAg
ICAgICAgKGV3a19mcmFtZV9uYW1lX2dldCk6Ci0KLTIwMTAtMTAtMjkgIERhcmluIEFkbGVyICA8
ZGFyaW5AYXBwbGUuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCi0KLSAg
ICAgICAgQ2hhbmdlIEJhY2tGb3J3YXJkTGlzdCBjbGllbnRzIHRvIHVzZSBCYWNrRm9yd2FyZExp
c3RJbXBsIHRvIHByZXBhcmUgZm9yIGZ1cnRoZXIgcmVmYWN0b3JpbmcKLSAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4NTc0Ci0KLSAgICAgICAgKiBld2sv
ZXdrX2hpc3RvcnkuY3BwOgotICAgICAgICAoZXdrX2hpc3RvcnlfbmV3KToKLSAgICAgICAgKiBl
d2svZXdrX3ByaXZhdGUuaDoKLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAo
X2V3a192aWV3X3ByaXZfbmV3KToKLSAgICAgICAgKGV3a192aWV3X2hpc3RvcnlfZW5hYmxlX2dl
dCk6Ci0gICAgICAgIChld2tfdmlld19oaXN0b3J5X2VuYWJsZV9zZXQpOgotICAgICAgICAoZXdr
X3ZpZXdfaGlzdG9yeV9nZXQpOgotICAgICAgICBVc2UgQmFja0ZvcndhcmRMaXN0SW1wbC4KLQot
MjAxMC0xMC0yOSAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KLQotICAgICAg
ICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KLQotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDg1NzYKLSAgICAgICAgTGV0IFdlYktpdDIgY2xpZW50IGtu
b3cgd2hlbiBhIGZyYW1lIGlzIGEgZnJhbWVzZXQKLQotICAgICAgICBBZGRlZCBhIGJsYW5rIGlt
cGxlbWVudGF0aW9uIG9mIHRoZSBuZXcgRnJhbWVMb2FkZXJDbGllbnQgbWV0aG9kLgotCi0gICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuaDoKLSAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRCZWNvbWVGcmFtZXNldCk6Ci0KLTIw
MTAtMTAtMjYgIEplbm4gQnJhaXRod2FpdGUgIDxqZW5uYkBjaHJvbWl1bS5vcmc+Ci0KLSAgICAg
ICAgUmV2aWV3ZWQgYnkgRG1pdHJ5IFRpdG92LgotCi0gICAgICAgIFJlc291cmNlIHRyYWNraW5n
IGZhaWx1cmUgd2hlbiB0cnlpbmcgdG8gbW92ZSBhIGZyYW1lIGJldHdlZW4gZG9jdW1lbnRzCi0g
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NDcxMwotCi0g
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwOgotICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OnRyYW5zZmVyTG9hZGluZ1Jlc291cmNl
RnJvbVBhZ2UpOgotICAgICAgICBFbXB0eSBtZXRob2QuCi0gICAgICAgICogV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuaDoKLQotMjAxMC0xMC0yMiAgU2FtIFdlaW5pZyAgPHNh
bUB3ZWJraXQub3JnPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEFuZGVycyBDYXJsc3Nvbi4KLQot
ICAgICAgICBXZWJLaXQyIG5lZWRzIHRvIHBhc3MgdGhlIGN1cnJlbnQgZXZlbnQgbW9kaWZpZXIg
ZmxhZ3Mgd2hlbiByZXF1ZXN0aW5nIGEgbmV3IHdpbmRvdwotICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDgxNDAKLQotICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0Nocm9tZUNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRF
Zmw6OmNyZWF0ZVdpbmRvdyk6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50
RWZsLmg6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3Bw
OgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoQ3JlYXRl
UGFnZSk6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuaDoK
LSAgICAgICAgQWRkIE5hdmlnYXRpb25BY3Rpb24gcGFyYW1ldGVyLgotCi0yMDEwLTEwLTE5ICBS
eXVhbiBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBi
eSBFcmljIFNlaWRlbC4KLQotICAgICAgICBbRUZMXSBBZGQgc2V0dGluZyBhcGkgZm9yIGRpc2Fi
bGluZyBhdXRvIHJlc2l6ZSB3aW5kb3cKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTQ3Nzg3Ci0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVD
bGllbnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZsOjpzZXRXaW5k
b3dSZWN0KTogUmV0dXJuIHdoZW4KLSAgICAgICAgYXV0b19yZXNpemVfd2luZG93IHdhcyBkaXNh
YmxlZC4KLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoX2V3a192aWV3X3By
aXZfbmV3KToKLSAgICAgICAgKGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2F1dG9fcmVzaXplX3dp
bmRvd19nZXQpOiBBZGRlZC4KLSAgICAgICAgKGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2F1dG9f
cmVzaXplX3dpbmRvd19zZXQpOiBBZGRlZC4KLSAgICAgICAgKiBld2svZXdrX3ZpZXcuaDoKLQot
MjAxMC0xMC0xNSAgTmlrb2xhcyBaaW1tZXJtYW5uICA8bnppbW1lcm1hbm5AcmltLmNvbT4KLQot
ICAgICAgICBSZXZpZXdlZCBieSBEaXJrIFNjaHVsemUuCi0KLSAgICAgICAgUmVwbGFjZSBzb21l
IFN0cmluZzo6Zm9ybWF0KCkgdXNhZ2VzIGJ5IFN0cmluZ0NvbmNhdGVuYXRlIGluIFdlYktpdAot
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDc3MTQKLQot
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcDoKLSAgICAg
ICAgKFdlYkNvcmU6OmFnZW50T1MpOgotCi0yMDEwLTEwLTE0ICBSYWZhZWwgQW50b2dub2xsaSAg
PGFudG9nbm9sbGlAcHJvZnVzaW9uLm1vYmk+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBT
ZWlkZWwuCi0KLSAgICAgICAgW0VGTF0gVXNlIGRhdGFfc2V0IGFmdGVyIGRhdGFfZ2V0IHRvIGtl
ZXAgcmVmY291bnQgY29ycmVjdC4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTQ3MTEwCi0KLSAgICAgICAgVGhlIGNhbGwgdG8gZXZhc19vYmplY3RfaW1h
Z2VfZGF0YV9zZXQgd2FzIG1pc3NlZCBpbiB0aGlzIGZ1bmN0aW9uLAotICAgICAgICB3aGljaCBj
YXVzZWQgdGhlIHJlZmNvdW50IG9mIHRoZSBkYXRhIGJlaW5nIGFsd2F5cyBpbmNyZWFzZWQgb24g
ZXZlcnkKLSAgICAgICAgc2Nyb2xsLgotCi0gICAgICAgICogZXdrL2V3a192aWV3X3NpbmdsZS5j
OgotICAgICAgICAoX2V3a192aWV3X3NpbmdsZV9zbWFydF9zY3JvbGxzX3Byb2Nlc3MpOgotCi0y
MDEwLTEwLTE0ICBSeXVhbiBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KLQotICAgICAg
ICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KLQotICAgICAgICBbRUZMXSBBZGQgc2V0dGluZyBh
cGkgZm9yIGVuYWJsaW5nIGVuY29kaW5nIGRldGVjdG9yCi0gICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NTQyNwotCi0gICAgICAgIEFkZCBzZXR0aW5ncyBh
cGkgZm9yIGVuYWJsaW5nIGVuY29kaW5nIGRldGVjdG9yLgotCi0gICAgICAgICogZXdrL2V3a192
aWV3LmNwcDoKLSAgICAgICAgKF9ld2tfdmlld19wcml2X25ldyk6Ci0gICAgICAgIChld2tfdmll
d19zZXR0aW5nX2VuY29kaW5nX2RldGVjdG9yX3NldCk6Ci0gICAgICAgIChld2tfdmlld19zZXR0
aW5nX2VuY29kaW5nX2RldGVjdG9yX2dldCk6Ci0gICAgICAgICogZXdrL2V3a192aWV3Lmg6Ci0K
LTIwMTAtMTAtMTMgIExlYW5kcm8gUGVyZWlyYSAgPGxlYW5kcm9AcHJvZnVzaW9uLm1vYmk+Ci0K
LSAgICAgICAgW0VGTF0gVW5yZXZpZXdlZC4gQnVpbGQgZml4LgotCi0gICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuaDogVXNlIFN0cmluZyBpbnN0ZWFkIG9mCi0g
ICAgICAgIFdlYkNvcmU6OlN0cmluZy4KLQotMjAxMC0xMC0xMyAgR2F2aW4gQmFycmFjbG91Z2gg
IDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgT2xpdmVyIEh1
bnQuCi0KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQz
OTg3Ci0gICAgICAgIFN3aXRjaCBYTUxIdHRwUmVxdWVzdCwgRmlsZVJlYWRlciwgYW5kIEZpbGVS
ZWFkZXJTeW5jIHRvIHVzZSBhIFN0cmluZ2J1aWxkZXIKLSAgICAgICAgdG8gY29uc3RydWN0IHRo
ZWlyIGludGVybmFsIHJlc3VsdCBzdHJpbmcuICBSZW1vdmUgU2NyaXB0U3RyaW5nICh0aGlzIGlz
IG5vdwotICAgICAgICByZWR1bmRhbnQpLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGll
bnRFZmw6OmRpc3BhdGNoRGlkTG9hZFJlc291cmNlQnlYTUxIdHRwUmVxdWVzdCk6Ci0gICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuaDoKLQotMjAxMC0xMC0xMyAg
R3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFJldmll
d2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgotCi0gICAgICAgIFtFRkxdIFN1cHBv
cnQgdmlld3BvcnQgY29uZmlndXJhdGlvbiBhbmQgYWRkIG5ldyBhcmd1bWVudHMgZm9yIFdlYktp
dCBFRkwKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3
MDg0Ci0KLSAgICAgICAgT3BlcmEgc3BlYyByZWdhcmRpbmcgdG8gdmlld3BvcnQgbWV0YSB0YWcg
d2FzIGFkanVzdGVkIHRvIFdlYkNvcmUuIFNvLCBFRkwgcG9ydCAKLSAgICAgICAgbmVlZHMgdG8g
YmUgbW9kaWZpZWQgYWNjb3JkaW5nIHRvIHRoZSBjaGFuZ2VzLgotCi0gICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNs
aWVudEVmbDo6ZGlzcGF0Y2hWaWV3cG9ydERhdGFEaWRDaGFuZ2UpOgotICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZENvbW1pdExvYWQpOgotICAgICAgICAqIGV3
ay9ld2tfcHJpdmF0ZS5oOgotICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChf
ZXdrX3ZpZXdfcHJpdl9uZXcpOgotICAgICAgICAoX2V3a192aWV3X3ZpZXdwb3J0X2F0dHJpYnV0
ZXNfY29tcHV0ZSk6Ci0gICAgICAgIChld2tfdmlld192aWV3cG9ydF9hdHRyaWJ1dGVzX3NldCk6
Ci0gICAgICAgIChld2tfdmlld192aWV3cG9ydF9hdHRyaWJ1dGVzX2dldCk6Ci0gICAgICAgIChl
d2tfdmlld19kZXZpY2VfcGl4ZWxfcmF0aW9fZ2V0KToKLSAgICAgICAgKiBld2svZXdrX3ZpZXcu
aDoKLQotMjAxMC0xMC0xMiAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29t
PgotCi0gICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgotCi0g
ICAgICAgIFtFRkxdIEFkZCBhIG1ldGhvZCB0byBnZXQgdGFyZ2V0J3MgZHBpIHZhbHVlCi0gICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzUzNwotCi0gICAg
ICAgIEFkZCBhIG1ldGhvZCB0byBnZXQgdGFyZ2V0IGRwaSB2YWx1ZSB1c2luZyBFY29yZV9YLgot
ICAgICAgICBXaGVuIHdlIHNldCBsYXlvdXQgc2l6ZSwgd2UgbmVlZCB0byB1c2UgdGhlIGRwaSB2
YWx1ZS4KLQotICAgICAgICAqIGV3ay9ld2tfcHJpdmF0ZS5oOgotICAgICAgICAqIGV3ay9ld2tf
dmlldy5jcHA6Ci0gICAgICAgIChld2tfdmlld19wYWdlX3JlY3RfZ2V0KToKLSAgICAgICAgKGV3
a192aWV3X2RwaV9nZXQpOgotCi0yMDEwLTEwLTA3ICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5r
aW1Ac2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21lcy4KLQot
ICAgICAgICBbRUZMXSBJbXBsZW1lbnQgcGFnZVJlY3QoKSBmdW5jdGlvbgotICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDczOTUKLQotICAgICAgICBJbXBs
ZW1lbnQgcGFnZVJlY3QoKSBpbiBDaHJvbWVDbGllbnRFZmwgdXNpbmcgZnJhbWVSZWN0KCkuCi0K
LSAgICAgICAgKiBDTWFrZUxpc3RzRWZsLnR4dDoKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9D
aHJvbWVDbGllbnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZsOjpw
YWdlUmVjdCk6Ci0gICAgICAgICogZXdrL2V3a19wcml2YXRlLmg6Ci0gICAgICAgICogZXdrL2V3
a192aWV3LmNwcDoKLSAgICAgICAgKGV3a192aWV3X3BhZ2VfcmVjdF9nZXQpOiBBZGRlZC4KLQot
MjAxMC0xMC0wNiAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3VuZy5jb20+Ci0KLSAgICAg
ICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21lcy4KLQotICAgICAgICBbRUZMXSBTdXBwb3J0IFBy
b2dyZXNzIFRhZwotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NDU5NTEKLQotICAgICAgICBJbXBsZW1lbnQgcHJvZ3Jlc3NiYXIuZWRjIHRvIHN1cHBvcnQg
cHJvZ3Jlc3MgdGFnCi0KLSAgICAgICAgKiBDTWFrZUxpc3RzRWZsLnR4dDoKLSAgICAgICAgKiBE
ZWZhdWx0VGhlbWUvZGVmYXVsdC5lZGM6Ci0gICAgICAgICogRGVmYXVsdFRoZW1lL3dpZGdldC9w
cm9ncmVzc2JhcjogQWRkZWQuCi0gICAgICAgICogRGVmYXVsdFRoZW1lL3dpZGdldC9wcm9ncmVz
c2Jhci9idF9iYXNlLnBuZzogQWRkZWQuCi0gICAgICAgICogRGVmYXVsdFRoZW1lL3dpZGdldC9w
cm9ncmVzc2Jhci9wcm9ncmVzc2Jhci5lZGM6IEFkZGVkLgotICAgICAgICAqIERlZmF1bHRUaGVt
ZS93aWRnZXQvcHJvZ3Jlc3NiYXIvc2hlbGZfaW5zZXQucG5nOiBBZGRlZC4KLQotMjAxMC0xMC0w
NSAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgUmV2aWV3
ZWQgYnkgQW50b25pbyBHb21lcy4KLQotICAgICAgICBbRUZMXSBSZW1vdmUgc3RyZHVwIGluIGV3
a19zZXR0aW5nLmNwcCB1c2luZyBlaW5hX3N0cmluZ3NoYXJlCi0gICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NjYxMwotCi0gICAgICAgIEFkZCB2YXJpYWJs
ZXMgc2hhcmVkIGJ5IGVpbmFfc3RyaW5nc2hhcmUgYW5kIHJlbW92ZSBzdHJkdXAuCi0KLSAgICAg
ICAgKiBld2svZXdrX21haW4uY3BwOgotICAgICAgICAoX2V3a19pbml0X2JvZHkpOgotICAgICAg
ICAqIGV3ay9ld2tfc2V0dGluZ3MuY3BwOgotICAgICAgICAoZXdrX3NldHRpbmdzX3dlYl9kYXRh
YmFzZV9wYXRoX3NldCk6Ci0gICAgICAgIChld2tfc2V0dGluZ3Nfd2ViX2RhdGFiYXNlX3BhdGhf
Z2V0KToKLSAgICAgICAgKGV3a19zZXR0aW5nc19pY29uX2RhdGFiYXNlX3BhdGhfc2V0KToKLSAg
ICAgICAgKGV3a19zZXR0aW5nc19pY29uX2RhdGFiYXNlX3BhdGhfZ2V0KToKLSAgICAgICAgKiBl
d2svZXdrX3NldHRpbmdzLmg6Ci0KLTIwMTAtMTAtMDQgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5n
LmtpbUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENo
cmlzdGlhbnNlbi4KLQotICAgICAgICBbRUZMXSBWaWV3cG9ydCBkYXRhIGNoYW5nZSBub3RpZmlj
YXRpb24gYnkgQnVnIDQ2NzU1Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD00Njc3MgotCi0gICAgICAgIEJ1ZyA0Njc1NSBjaGFuZ2VzIHZpcnR1YWwgZnVu
Y3Rpb24gcmVnYXJkaW5nIHRvIHZpZXdwb3J0IG1ldGF0YWcuIFRodXMsIEVGTCBwb3J0IAotICAg
ICAgICBzaG91bGQgY2hhbmdlIHRoZSBmdW5jdGlvbiBhcyB3ZWxsIGluIG9yZGVyIHRvIGdldCB2
aWV3cG9ydCBhcmd1bWVudHMuCi0KLSAgICAgICAgQW5kLCBzZXRJbml0TGF5b3V0Q29tcGxldGVk
IC8gZ2V0SW5pdExheW91dENvbXBsZXRlZCgpIGFyZSByZW1vdmVkIGJlY2F1c2UgdGhlc2UgZnVu
Y3Rpb25zCi0gICAgICAgIGFyZW4ndCBuZWVkZWQgYW55bW9yZS4KLQotICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpDaHJvbWVD
bGllbnRFZmw6OmRpc3BhdGNoVmlld3BvcnREYXRhRGlkQ2hhbmdlKToKLSAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuaDoKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNs
aWVudEVmbDo6RnJhbWVMb2FkZXJDbGllbnRFZmwpOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVM
b2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkQ29tbWl0TG9hZCk6Ci0gICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRGaXJzdExheW91dCk6Ci0gICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuaDoKLQotMjAxMC0xMC0wMSAg
UmFmYWVsIEFudG9nbm9sbGkgIDxhbnRvZ25vbGxpQHByb2Z1c2lvbi5tb2JpPgotCi0gICAgICAg
IFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgotCi0gICAgICAgIFtFRkxd
IFJlbW92ZSBjaGVjayBmb3IgSW5pdExheW91dENvbXBsZXRlZCBvbiBmaXhlZF9sYXlvdXRfc2l6
ZV9zZXQuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00
NzAwNgotCi0gICAgICAgIFRoaXMgY2hlY2sgaXNuJ3QgbmVlZGVkIGFuZCBpc24ndCBkb25lIG9u
IHRoZSBvdGhlciBwb3J0cy4gVGhlIGZpeGVkCi0gICAgICAgIGxheW91dCBwcm9wZXJ0eSBjYW4g
YmUgc2V0IGJlZm9yZSB3ZSBoYXZlIHRoZSBmaXJzdCBsYXlvdXQuCi0KLSAgICAgICAgKiBld2sv
ZXdrX3ZpZXcuY3BwOgotICAgICAgICAoZXdrX3ZpZXdfZml4ZWRfbGF5b3V0X3NpemVfc2V0KToK
LQotMjAxMC0xMC0wMSAgUmFmYWVsIEFudG9nbm9sbGkgIDxhbnRvZ25vbGxpQHByb2Z1c2lvbi5t
b2JpPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgot
Ci0gICAgICAgIFtFRkxdIENhbGwgY29udGVudHNfcmVzaXplIHdoZW4gdGhlIG1haW4gZnJhbWUg
Z2V0cyByZXNpemVkLgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NDcwMDQKLQotICAgICAgICBUaGUgcHJldmlvdXMgaW1wbGVtZW50YXRpb24gd2FzIGp1
c3QgY2FsbGluZyBjb250ZW50c19yZXNpemUgd2hlbiB0aGUKLSAgICAgICAgdmlld3BvcnQgc2l6
ZSBoYWQgY2hhbmdlZC4gVGhhdCdzIG5vdCBlbm91Z2gsIGFuZCBjb250ZW50c19yZXNpemUKLSAg
ICAgICAgc2hvdWxkbid0IGJlIGNhbGxlZCBpZiB0aGUgY29udGVudHMgc2l6ZSBkaWRuJ3QgY2hh
bmdlLgotCi0gICAgICAgIE5vdyB0aGUgY29udGVudHNfc2l6ZV9jaGFuZ2VkIGZ1bmN0aW9uIGlz
IGNhbGxlZCBkaXJlY3RseSBmcm9tIHRoZQotICAgICAgICBDaHJvbWVDbGllbnRFZmwuCi0KLSAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwOgotICAgICAgICAoV2Vi
Q29yZTo6Q2hyb21lQ2xpZW50RWZsOjpjb250ZW50c1NpemVDaGFuZ2VkKToKLSAgICAgICAgKiBl
d2svZXdrX3ByaXZhdGUuaDoKLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAo
X2V3a192aWV3X3NtYXJ0X2NhbGN1bGF0ZSk6Ci0gICAgICAgIChld2tfdmlld19maXhlZF9sYXlv
dXRfc2l6ZV9zZXQpOgotICAgICAgICAoZXdrX3ZpZXdfY29udGVudHNfc2l6ZV9jaGFuZ2VkKToK
LQotMjAxMC0wOS0yOSAgSm/Do28gUGF1bG8gUmVjaGkgVml0YSAgPGpwcnZpdGFAcHJvZnVzaW9u
Lm1vYmk+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21lcy4KLQotICAgICAgICBb
RUZMXSBHZW5lcmFsIHNtYWxsIGZpeGVzLgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NDY4MTMKLQotICAgICAgICBUaGlzIGNvbW1pdCBzcG90cyBhIGNv
bXBhcmlzb24gYmV0d2VlbiBzaWduZWQgYW5kIHVuc2lnbmVkIGludGVnZXIKLSAgICAgICAgZXhw
cmVzc2lvbnMsIGEgbWlzc2luZyByZXR1cm4gYW5kIGEgbmV2ZXItY2FsbGVkIGZ1bmN0aW9uLgot
Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckVmbC5j
cHA6Ci0gICAgICAgIChGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpjYW5QbGF5KToKLQotMjAx
MC0wOS0yOCAgSmVubiBCcmFpdGh3YWl0ZSAgPGplbm5iQGNocm9taXVtLm9yZz4KLQotICAgICAg
ICBSZXZpZXdlZCBieSBEbWl0cnkgVGl0b3YuCi0KLSAgICAgICAgQWRkZWQgb2xkUGFnZSBwYXJh
bSB0byBGcmFtZUxvYWRlckNsaWVudDo6ZGlkVHJhbnNmZXJDaGlsZEZyYW1lVG9OZXdEb2N1bWVu
dC4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2NjYz
Ci0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHA6Ci0g
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlkVHJhbnNmZXJDaGlsZEZy
YW1lVG9OZXdEb2N1bWVudCk6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRFZmwuaDoKLQotMjAxMC0wOS0yNiAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNh
bXN1bmcuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEFudG9uaW8gR29tZXMuCi0KLSAgICAg
ICAgW0VGTF0gQWRkIHNldHRpbmcgQVBJIHRvIHNldCBhIGxvY2FsIHN0b3JhZ2UgZGF0YWJhc2Ug
cGF0aC4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ1
NDQ2Ci0KLSAgICAgICAgQWRkIGEgc2V0dGluZyBBUEkgdG8gc2V0IGxvY2FsIHN0b3JhZ2UgZGF0
YWJhc2UgcGF0aC4KLQotICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChfZXdr
X3ZpZXdfcHJpdl9uZXcpOgotICAgICAgICAoX2V3a192aWV3X3ByaXZfZGVsKToKLSAgICAgICAg
KGV3a192aWV3X3NldHRpbmdfbG9jYWxfc3RvcmFnZV9kYXRhYmFzZV9wYXRoX2dldCk6IEFkZGVk
LgotICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19sb2NhbF9zdG9yYWdlX2RhdGFiYXNlX3BhdGhf
c2V0KTogQWRkZWQuCi0gICAgICAgICogZXdrL2V3a192aWV3Lmg6Ci0KLTIwMTAtMDktMjMgIEx1
Y2FzIERlIE1hcmNoaSAgPGx1Y2FzLmRlbWFyY2hpQHByb2Z1c2lvbi5tb2JpPgotCi0gICAgICAg
IFJldmlld2VkIGJ5IENzYWJhIE9zenRyb2dvbsOhYy4KLQotICAgICAgICBbRUZMXSBGaXggd2Fy
bmluZ3MgZHVyaW5nIGJ1aWxkCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD00NjM1NAotCi0gICAgICAgICogZXdrL2V3a19mcmFtZS5jcHA6Ci0gICAgICAg
IChld2tfZnJhbWVfdGV4dF9tYXRjaGVzX250aF9wb3NfZ2V0KTogQ2hhbmdlIGFyZ3VtZW50IHR5
cGUgYmVjYXVzZQotICAgICAgICBpdCdzIG1lYW50IHRvIGJlIGFsd2F5cyBwb3NpdGl2ZS4KLSAg
ICAgICAgKiBld2svZXdrX2ZyYW1lLmg6IERpdHRvLgotICAgICAgICAqIGV3ay9ld2tfdmlldy5j
cHA6Ci0gICAgICAgIChld2tfdmlld19leGNlZWRlZF9kYXRhYmFzZV9xdW90YSk6IEFkZCBtaXNz
aW5nICIlIiBjYXVzaW5nIHdhcm5pbmcgYWJvdXQgbnVtYmVyIG9mCi0gICAgICAgIGFyZ3VtZW50
cyB0byBwcmludGYtbGlrZSBmdW5jdGlvbi4KLSAgICAgICAgKiBld2svZXdrX3ZpZXcuaDogQWRk
IG1pc3NpbmcgaW5pdGlhbGl6YXRpb24uCi0KLTIwMTAtMDktMjEgIEx1Y2FzIERlIE1hcmNoaSAg
PGx1Y2FzLmRlbWFyY2hpQHByb2Z1c2lvbi5tb2JpPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEtl
bm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgotCi0gICAgICAgIFtFRkxdIEdldCBmcmVzaCB0aGVt
ZSB3aGVuIHJ1bm5pbmcgRVdlYkxhdW5jaGVyCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD00NjIxMAotCi0gICAgICAgIElmIHVzZXIgdHJpZWQgdG8gcnVu
IEVXZWJMYXVuY2hlciBvdXRzaWRlIG9mIHRoZSBidWlsZCB0cmVlLCBpdCB3b3VsZAotICAgICAg
ICBub3QgZmluZCB0aGUgdGhlbWUgYW5kIGZhbGxiYWNrIHRvIHRoZSBpbnN0YWxsZWQgb25lLiBI
b3dldmVyLCBzaW5jZQotICAgICAgICBFV2ViTGF1bmNoZXIgaXMgbm90IGluc3RhbGxlZCwgd2Ug
YWx3YXlzIHdhbnQgdG8gdGFrZSB0aGUgdGhlbWUgZnJvbQotICAgICAgICB0aGUganVzdCBjb21w
aWxlZCBzb3VyY2UgY29kZS4gSWYgdXNlciBoYWQgbmV2ZXIgaW5zdGFsbGVkIFdlYktpdCdzCi0g
ICAgICAgIEVGTCBwb3J0IGl0IGNvdWxkIGV2ZW4gcmVjZWl2ZSBhIHNlZ3Ygc2luY2Ugbm8gdGhl
bWUgd291bGQgYmUgZm91bmQuCi0KLSAgICAgICAgTm93IEVXZWJMYXVuY2hlciBkb2VzIG5vdCBm
YWxsYmFjayB0byB0aGUgaW5zdGFsbGVkIHRoZW1lIGFuZCBDTWFrZQotICAgICAgICBnaXZlcyBh
cyBEQVRBX0RJUiB0aGUgZGlyZWN0b3J5IG9mIHRoZSB0aGVtZSBpdCBoYXMganVzdCBidWlsdC4K
LQotCi0gICAgICAgICogQ01ha2VMaXN0c0VmbC50eHQ6IGV4cG9ydCBEQVRBX0RJUiB0byBwYXJl
bnQgQ01ha2VMaXN0cy50eHQgaW4gb3JkZXIKLSAgICAgICAgdG8gYmUgdXNlZCBieSBFV2ViTGF1
bmNoZXIuCi0KLTIwMTAtMDktMTcgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgotCi0g
ICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCi0KLSAgICAgICAgUkVHUkVTU0lPTiAocjYw
MTA0KTogWm9vbSBsZXZlbCBpcyB1bmV4cGVjdGVkbHkgcmVzZXQgb24gcGFnZSByZWxvYWQKLSAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQyODYzCi0KLSAg
ICAgICAgKiBld2svZXdrX2ZyYW1lLmNwcDoKLSAgICAgICAgKGV3a19mcmFtZV96b29tX2dldCk6
Ci0gICAgICAgIChld2tfZnJhbWVfem9vbV9zZXQpOgotICAgICAgICAoZXdrX2ZyYW1lX3pvb21f
dGV4dF9vbmx5X3NldCk6Ci0gICAgICAgIENhbGwgZnVuY3Rpb25zIG9uIEZyYW1lIGluc3RlYWQg
b2YgRnJhbWVWaWV3LgotCi0yMDEwLTA5LTE2ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNv
bT4KLQotICAgICAgICBGaXggYnVpbGQuCi0KLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgot
ICAgICAgICAoZXdrX3ZpZXdfaW5wdXRfbWV0aG9kX3N0YXRlX3NldCk6IFVwZGF0ZWQgZm9yIGNo
YW5nZQotICAgICAgICBpbiBuYW1lIG9mIGlzVXJsRmllbGQgdG8gaXNVUkxGaWVsZC4KLQotMjAx
MC0wOS0xNCAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3VuZy5jb20+Ci0KLSAgICAgICAg
UmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCi0KLSAgICAgICAgW0VGTF0g
ZXdrX2ZyYW1lX3ZpZXdfY3JlYXRlX2Zvcl92aWV3IHNldCBudWxsIGFzIHRoZW1lLgotICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDU3NDEKLQotICAgICAg
ICBBZGQgdGhlbWUgaW4gZXdrX3ZpZXcgdG8gdXNlIGluc3RlYWQgb2YgZnJhbWUncyB0aGVtZSB3
aGljaCBpcyBudWxsIGluCi0gICAgICAgIGV3a19mcmFtZV92aWV3X2NyZWF0ZV9mb3Jfdmlldy4K
LQotICAgICAgICAqIGV3ay9ld2tfZnJhbWUuY3BwOgotICAgICAgICAoZXdrX2ZyYW1lX3ZpZXdf
Y3JlYXRlX2Zvcl92aWV3KToKLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAo
ZXdrX3ZpZXdfdGhlbWVfc2V0KToKLSAgICAgICAgKGV3a192aWV3X3RoZW1lX2dldCk6Ci0KLTIw
MTAtMDktMTQgIExlYW5kcm8gUGVyZWlyYSAgPGxlYW5kcm9AcHJvZnVzaW9uLm1vYmk+Ci0KLSAg
ICAgICAgW0VGTF0gVW5yZXZpZXdlZCBidWlsZCBmaXg6IHJlbW92ZSAidmlydHVhbCIga2V5d29y
ZCBmcm9tCi0gICAgICAgIGltcGxlbWVudGF0aW9uIGZpbGUuCi0KLSAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFt
ZUxvYWRlckNsaWVudEVmbDo6Y2FuU2hvd01JTUVUeXBlQXNIVE1MKToKLQotMjAxMC0wOS0xMyAg
UmFmYWVsIEFudG9nbm9sbGkgIDxhbnRvZ25vbGxpQHByb2Z1c2lvbi5tb2JpPgotCi0gICAgICAg
IFVucmV2aWV3ZWQgYnVpbGQgZml4LgotCi0gICAgICAgIFtFRkxdIEZpeCBidWlsZCBicmVhayB3
aGVuIGVuYWJsaW5nIEhUTUw1IHZpZGVvIHN1cHBvcnQKLSAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ1Njc0Ci0KLSAgICAgICAgVGhlIGNvcnJlY3QgaW5j
bHVkZSB2YXJpYWJsZSBmb3IgTGliWG1sMiBpbiBjbWFrZSBpcwotICAgICAgICBMSUJYTUwyX0lO
Q0xVREVfRElSIGluc3RlYWQgb2YgTElCWE1MMl9JTkNMVURFX0RJUlMuCi0KLSAgICAgICAgKiBD
TWFrZUxpc3RzRWZsLnR4dDoKLQotMjAxMC0wOS0xMyAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcu
a2ltQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hy
aXN0aWFuc2VuLgotCi0gICAgICAgIFtFRkxdIEFkZCBzZXR0aW5nIEFQSSBmb3IgZW5hYmxpbmcg
cGFnZSBjYWNoZQotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NDQ5MzEKLQotICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChfZXdrX3Zp
ZXdfcHJpdl9uZXcpOgotICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19wYWdlX2NhY2hlX2dldCk6
IEFkZGVkLgotICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19wYWdlX2NhY2hlX3NldCk6IEFkZGVk
LgotICAgICAgICAqIGV3ay9ld2tfdmlldy5oOgotCi0yMDEwLTA5LTEzICBFbnJpY2EgQ2FzdWNj
aSAgPGVucmljYUBhcHBsZS5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4K
LQotICAgICAgICBQYXN0ZSBzaG91bGQgYmUgaW1wbGVtZW50ZWQgaW4gV2ViQ29yZSBsaWtlIENv
cHkgYW5kIEN1dCBmb3IgTWFjIGFsc28uCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD00NTQ5NAotICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzY2MDUzNz4K
LQotICAgICAgICBPbiB0aGUgTWFjIHBsYXRmb3JtLCB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhl
IHBhc3RlIG9wZXJhdGlvbiBpcyBhbGwgZG9uZQotICAgICAgICBhdCB0aGUgV2ViS2l0IGxldmVs
LiBJbiBvcmRlciB0byBzdXBwb3J0IGl0IG9uIFdlYktpdDIgaXQgaXMgbmVjZXNzYXJ5IHRvCi0g
ICAgICAgIHJlZmFjdG9yIHRoZSBjb2RlIGFuZCBtb3ZlIHRoaXMgZnVuY3Rpb25hbGl0eSBhdCB0
aGUgbGV2ZWwgb2YgV2ViQ29yZSBsaWtlCi0gICAgICAgIHdlIGFscmVhZHkgaGF2ZSBvbiBXaW5k
b3dzLgotICAgICAgICBUaGUgb3JpZ2luYWwgY29kZSByZWxpZXMgb24gc29tZSBpbiBBcHBLaXQg
ZnVuY3Rpb25zIHRoYXQgY2FsbCBiYWNrIGludG8KLSAgICAgICAgV2ViS2l0IGNhdXNpbmcgcHJv
YmxlbXMgaW4gV2ViS2l0Mi4gQWxsIHRoaXMgZnVuY3Rpb25hbGl0eSBoYXMgYmVlbiBtb3ZlZAot
ICAgICAgICBhdCB0aGUgbGV2ZWwgb2YgdGhlIGVkaXRvciBjbGllbnQgd2hlcmUgaXQgY2FuIGJl
IGRlYWx0IHdpdGggYXBwcm9wcmlhdGVseS4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xp
ZW50RWZsOjpjYW5TaG93TUlNRVR5cGVBc0hUTUwpOiBBZGRlZCBzdHViLgotICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmg6Ci0KLTIwMTAtMDktMTEgIFJ5dWFu
IENob2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEFu
dG9uaW8gR29tZXMuCi0KLSAgICAgICAgW0VGTF0gRml4IEVGTCBidWlsZCBhZnRlciByNjcyNzQK
LSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ1NTg0Ci0K
LSAgICAgICAgUmVtb3ZlIGluY2x1ZGUgb2YgWm9vbU1vZGUuaCBhbmQgY2hhbmdlIHNldFpvb21G
YWN0b3IgYW5kIHpvb21GYWN0b3IKLSAgICAgICAgdG8gcHJvcGVyIGFwaXMgY2hhZ2VkIGJ5IHI2
NzI2NC4KLQotICAgICAgICAqIGV3ay9ld2tfZnJhbWUuY3BwOgotICAgICAgICAoZXdrX2ZyYW1l
X3pvb21fZ2V0KToKLSAgICAgICAgKGV3a19mcmFtZV96b29tX3NldCk6Ci0gICAgICAgIChld2tf
ZnJhbWVfem9vbV90ZXh0X29ubHlfZ2V0KToKLSAgICAgICAgKGV3a19mcmFtZV96b29tX3RleHRf
b25seV9zZXQpOgotCi0yMDEwLTA5LTEwICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+
Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gRmlzaGVyLgotCi0gICAgICAgIE1vdmUgY29k
ZSBmcm9tIFdlYktpdC1sYXllciB0byBEb2N1bWVudExvYWRlcgotICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDU1NjkKLQotICAgICAgICBUaGlzIGNvZGUg
ZGlkbid0IGtub3cgdGhhdCBzZXRFbmNvZGluZyBjb3VsZCBiZSBjYWxsZWQgbXVsdGlwbGUgdGlt
ZXMKLSAgICAgICAgc2FmZWx5LgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6
OkZyYW1lTG9hZGVyQ2xpZW50RWZsKToKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xp
ZW50RWZsOjpjb21taXR0ZWRMb2FkKToKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xp
ZW50RWZsOjpkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZSk6Ci0gICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlckNsaWVudEVmbDo6ZmluaXNoZWRMb2FkaW5nKToKLSAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZEZhaWxMb2FkaW5nKToKLSAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpzZXRNYWluRG9jdW1lbnRFcnJvcik6Ci0g
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuaDoKLQotMjAxMC0w
OS0xMCAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgotCi0gICAgICAgIFJldmlld2Vk
IGJ5IEVyaWMgU2VpZGVsLgotCi0gICAgICAgIE1haW4gcmVzb3VyY2UgYnl0ZXMgc2hvdWxkbid0
IGJvdW5jZSB0aHJvdWdoIEZyYW1lTG9hZGVyCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD00NTQ5NgotCi0gICAgICAgIE5vdyByZXR1cm4gdGhlIGJ5dGVz
IHRvIHRoZSBEb2N1bWVudExvYWRlci4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50
RWZsOjpjb21taXR0ZWRMb2FkKToKLQotMjAxMC0wOS0wOCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBh
cHBsZS5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KLQotICAgICAgICBN
b3ZlIGZ1bmN0aW9ucyBmcm9tIEZyYW1lIHRvIEVkaXRvciBhcyBwbGFubmVkCi0gICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NTIxOAotCi0gICAgICAgICog
ZXdrL2V3a19mcmFtZS5jcHA6Ci0gICAgICAgIChld2tfZnJhbWVfZWRpdGFibGVfc2V0KToKLSAg
ICAgICAgKGV3a19mcmFtZV9zZWxlY3Rpb25fZ2V0KToKLSAgICAgICAgKGV3a19mcmFtZV90ZXh0
X3NlYXJjaCk6Ci0gICAgICAgIChld2tfZnJhbWVfdGV4dF9tYXRjaGVzX21hcmspOgotICAgICAg
ICAoZXdrX2ZyYW1lX3RleHRfbWF0Y2hlc19oaWdobGlnaHRfc2V0KToKLSAgICAgICAgKGV3a19m
cmFtZV90ZXh0X21hdGNoZXNfaGlnaGxpZ2h0X2dldCk6Ci0gICAgICAgICogZXdrL2V3a192aWV3
LmNwcDoKLSAgICAgICAgKGV3a192aWV3X3NlbGVjdGlvbl9nZXQpOgotICAgICAgICBDaGFuZ2Vk
IGNhbGwgc2l0ZXMgdG8gdXNlIGVkaXRvcigpLgotCi0yMDEwLTA5LTA5ICBHeXV5b3VuZyBLaW0g
IDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgVW5yZXZpZXdlZCBidWlsZCBm
aXguCi0KLSAgICAgICAgW0VGTF0gRml4IGR1cGxpY2F0ZSBnc3RyZWFtZXIgbWFjcm8gaW4gQ01h
a2VMaXN0RWZsLnR4dAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NDU0MzMKLQotICAgICAgICBJbiBXZWJLaXQvZWZsL0NNYWtlTGlzdEVmbC50eHQsIGR1
cGxpY2F0ZWQgRU5BQkxFX1ZJREVPIG1hY3JvcyB3ZXJlIGFkZGVkLgotICAgICAgICBTbywgdW5u
ZWNlc3NhcnkgRU5BQkxFX1ZJREVPIG1hY3JvIGlzIGRlbGV0ZWQuCi0KLSAgICAgICAgKiBDTWFr
ZUxpc3RzRWZsLnR4dDoKLQotMjAxMC0wOS0wOCAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lAc2Ft
c3VuZy5jb20+Ci0KLSAgICAgICAgVW5yZXZpZXdlZCBidWlsZCBmaXguCi0KLSAgICAgICAgW0VG
TF0gTmVlZCB0byBhZGQgY3VzdG9tIGRlcGVuZGVuY2llcy4KLSAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ1MjQ3Ci0KLSAgICAgICAgQWRkIFdlYktpdF9U
aGVtZSBpbnRvIFdlYktpdF9TT1VSQ0VTIHRvIG1ha2UgaXQgd2hpbGUgYnVpbGRpbmcuCi0KLSAg
ICAgICAgKiBDTWFrZUxpc3RzRWZsLnR4dDoKLQotMjAxMC0wOS0wOCAgTHVjYXMgRGUgTWFyY2hp
ICA8bHVjYXMuZGVtYXJjaGlAcHJvZnVzaW9uLm1vYmk+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkg
S2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCi0KLSAgICAgICAgW0VGTF0gRXhwb3J0IGRhdGEg
ZGlyZWN0b3J5IHRocm91Z2ggcGtnLWNvbmZpZwotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDUzODUKLQotICAgICAgICBVc2luZyBwa2ctY29uZmlnIGl0
J3MgcG9zc2libGUgZm9yIGEgYnJvd3NlciB0byBrbm93IHRoZSBsb2NhdGlvbiBvZgotICAgICAg
ICBpbnN0YWxsZWQgdGhlbWVzLiBXaGVuIGNvbXBpbGluZyB0aGUgYnJvd3NlciwgYSB2YXJpYWJs
ZSBtaWdodCBiZQotICAgICAgICBkZWZpbmVkIHdpdGggdGhlIGRhdGFkaXIsIGxpa2UgYmVsb3c6
Ci0KLSAgICAgICAgZ2NjIC1vIGJyb3dzZXIgYnJvd3Nlci5jICQocGtnLWNvbmZpZyAtLWxpYnMg
LS1jZmxhZ3MgZXdlYmtpdCkgXAotICAgICAgICAgICAtREVXRUJLSVRfREFUQV9ESVI9JChwa2ct
Y29uZmlnIC0tdmFyaWFibGU9ZGF0YWRpcikKLQotICAgICAgICAqIGV3ZWJraXQucGMuaW46IEV4
cG9ydCBkYXRhZGlyIHZhcmlhYmxlLgotCi0yMDEwLTA5LTA2ICBSeXVhbiBDaG9pICA8cnl1YW4u
Y2hvaUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeC4KLQotICAg
ICAgICBbRUZMXSBSRUdSRVNTSU9OKDY2Nzk0KSBOZWVkIHRvIGZpeCBidWlsZCBicmVhay4KLSAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ1MjQxCi0KLSAg
ICAgICAgQWRkIGR1bW15IGNsYXNzKEZyYW1lTmV0d29ya2luZ0NvbnRleHRFZmwpIGxpa2UgR1RL
KyBwb3J0IGFuZCBpbXBsZW1lbnQKLSAgICAgICAgYXMgRUZMIHN0eWxlLgotCi0gICAgICAgICog
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmNyZWF0ZU5ldHdvcmtpbmdDb250ZXh0KToKLSAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZU5ldHdvcmtpbmdDb250ZXh0RWZsLmg6IEFkZGVkLgot
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVOZXR3b3JraW5nQ29udGV4dEVmbDo6Y3JlYXRlKToKLSAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTmV0d29ya2luZ0NvbnRleHRFZmw6OmNvcmVGcmFtZSk6Ci0g
ICAgICAgIChXZWJDb3JlOjpGcmFtZU5ldHdvcmtpbmdDb250ZXh0RWZsOjpGcmFtZU5ldHdvcmtp
bmdDb250ZXh0RWZsKToKLQotMjAxMC0wOS0wNCAgTHVjYXMgRGUgTWFyY2hpICA8bHVjYXMuZGVt
YXJjaGlAcHJvZnVzaW9uLm1vYmk+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hk
ZSBDaHJpc3RpYW5zZW4uCi0KLSAgICAgICAgW0VGTF0gTW92ZSB0ZXN0IGJyb3dzZXIgdG8gV2Vi
S2l0VG9vbHMgZGlyZWN0b3J5Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD00NTIxMgotCi0gICAgICAgIEZvbGxvdyBvdGhlciBwb3J0cyBsaWtlIFFUIGFu
ZCBHVEsgd2hpY2ggbW92ZWQgdGhlIHRlc3QgYnJvd3NlciB0bwotICAgICAgICBXZWJLaXRUb29s
cyBkaXJlY3RvcnkuCi0KLSAgICAgICAgKiBDTWFrZUxpc3RzRWZsLnR4dDogUmVtb3ZlIGJ1aWxk
IGZvciB0ZXN0IGJyb3dzZXIuCi0gICAgICAgICogRVdlYkxhdW5jaGVyL21haW4uYzogUmVtb3Zl
ZC4KLQotMjAxMC0wOS0wMyAgSmVzdXMgU2FuY2hlei1QYWxlbmNpYSAgPGplc3VzLnBhbGVuY2lh
QG9wZW5ib3NzYS5vcmc+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCi0KLSAg
ICAgICAgQWRkIE5ldHdvcmtpbmdDb250ZXh0IHRvIGF2b2lkIGxheWVyIHZpb2xhdGlvbnMKLSAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQyMjkyCi0KLSAg
ICAgICAgQWRkIGNyZWF0ZU5ldHdvcmtpbmdDb250ZXh0IHRvIEVGTCdzIEZyYW1lTG9hZGVyQ2xp
ZW50LgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3Bw
OgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmNyZWF0ZU5ldHdvcmtp
bmdDb250ZXh0KToKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVm
bC5oOgotCi0yMDEwLTA5LTAzICBMdWNhcyBEZSBNYXJjaGkgIDxsdWNhcy5kZW1hcmNoaUBwcm9m
dXNpb24ubW9iaT4KLQotICAgICAgICBSZXZpZXdlZCBieSBNYXJ0aW4gUm9iaW5zb24uCi0KLSAg
ICAgICAgW0VGTF0gUmVncmVzc2lvbiAoNjY1MzEpIEJ1aWxkIGJyZWFrIHdpdGggR2xpYiBTdXBw
b3J0Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NTAx
MQotCi0gICAgICAgIE1vdmUgR3RrVHlwZWRlZnMuaCB0byBHVHlwZWRlZnMuaCBhbmQgbGV0IGl0
IGluc2lkZSBnb2JqZWN0IGRpcmVjdG9yeQotICAgICAgICBzaW5jZSB3aGVuIGdsaWIgaXMgZW5h
YmxlZCwgRUZMIHBvcnQgbmVlZHMgaXQsIHRvby4KLQotICAgICAgICAqIENNYWtlTGlzdHNFZmwu
dHh0OiBJbmNsdWRlIGdvYmplY3QgZGlyZWN0b3J5IHRvIGZpbmQgbmV3IGhlYWRlcgotICAgICAg
ICBmaWxlLgotCi0yMDEwLTA5LTAzICBMdWNhcyBEZSBNYXJjaGkgIDxsdWNhcy5kZW1hcmNoaUBw
cm9mdXNpb24ubW9iaT4KLQotICAgICAgICBSZXZpZXdlZCBieSBBbnRvbmlvIEdvbWVzLgotCi0g
ICAgICAgIFtFRkxdIEluc3RhbGwgZGVmYXVsdCB0aGVtZQotICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDUxNTQKLQotICAgICAgICBTaW5jZSBhIHRoZW1l
IGlzIG5lZWRlZCBpbiBvcmRlciB0byBjcmVhdGUgYSBuZXcgYnJvd3NlciwgaW5zdGFsbCB0aGUK
LSAgICAgICAgZGVmYXVsdCBvbmUgdG8gc2VydmUgYXMgZXhhbXBsZSBhbmQgZmFsbC1iYWNrLgot
Ci0gICAgICAgICogQ01ha2VMaXN0c0VmbC50eHQ6Ci0KLTIwMTAtMDktMDIgIEx1Y2FzIERlIE1h
cmNoaSAgPGx1Y2FzLmRlbWFyY2hpQHByb2Z1c2lvbi5tb2JpPgotCi0gICAgICAgIFJldmlld2Vk
IGJ5IEFudG9uaW8gR29tZXMuCi0KLSAgICAgICAgW0VGTF0gTmFtZSBpbnN0YWxsIGRpcmVjdG9y
aWVzIGFjY29yZGluZyB0byBsaWJyYXJ5IG5hbWUKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTQ1MTI2Ci0KLSAgICAgICAgKiBDTWFrZUxpc3RzRWZsLnR4
dDogaW5jbHVkZSBkaXJldG9yeSBmb2xsb3dzIGxpYnJhcnkgbmFtZS4KLSAgICAgICAgKiBld2Vi
a2l0LnBjLmluOiBEaXR0by4KLQotMjAxMC0wOC0zMSAgRGF2ZSBIeWF0dCAgPGh5YXR0QGFwcGxl
LmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgotCi0gICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NDg2MywgZGlzZW50YW5nbGUgc3R5
bGUgcmVjYWxjIGZyb20gbGF5b3V0LCBzbyB0aGF0Ci0gICAgICAgIHRoZSBmb3JtZXIgY2FuIG9j
Y3VyIGluIG1vcmUgcGxhY2VzIHdpdGhvdXQgaGF2aW5nIHRvIGRvIHRoZSBsYXR0ZXIuCi0KLSAg
ICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoZXdrX3ZpZXdfbGF5b3V0X2lmX25l
ZWRlZF9yZWN1cnNpdmUpOgotCi0yMDEwLTA4LTMxICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5v
cmc+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCi0KLSAgICAgICAgQWRkIGFi
aWxpdHkgdG8gY291bnQgdGV4dCBtYXRjaGVzIHdpdGhvdXQgbWFya2luZwotICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDM5OTYKLQotICAgICAgICAqIGV3
ay9ld2tfZnJhbWUuY3BwOgotICAgICAgICAoZXdrX2ZyYW1lX3RleHRfbWF0Y2hlc19tYXJrKTog
U3dpdGNoZWQgdG8gY2FsbAotICAgICAgICBjb3VudE1hdGNoZXNGb3JUZXh0KCkgaW5zdGVhZCBv
ZiBtYXJrQWxsTWF0Y2hlc0ZvclRleHQoKS4KLQotMjAxMC0wOC0zMSAgR3l1eW91bmcgS2ltICA8
Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4
LgotCi0gICAgICAgIFtFRkxdIEJ1aWxkIGJyZWFrIGZvciByNjY0NTYKLSAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvcG9zdF9idWcuY2dpCi0KLSAgICAgICAgUmVwbGFjZSBmaXJzdFJl
Y3RzRm9yTWFya2VycyB3aXRoIHJlbmRlcmVkUmVjdHNGb3JNYXJrZXJzLgotCi0gICAgICAgICog
ZXdrL2V3a19mcmFtZS5jcHA6Ci0gICAgICAgIChld2tfZnJhbWVfdGV4dF9tYXRjaGVzX250aF9w
b3NfZ2V0KToKLQotMjAxMC0wOC0zMCAgS2FtaWwgQmxhbmsgIDxrLmJsYW5rQHNhbXN1bmcuY29t
PgotCi0gICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCi0KLSAgICAgICAgW0VGTF0gQWRk
ZWQgQVBJIHdoaWNoIHJldHVybnMgcG9zaXRpb24gb2Ygbi10aCB0ZXh0IG1hdGNoZXMgbWFyawot
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQyNTgKLQot
ICAgICAgICAqIGV3ay9ld2tfZnJhbWUuY3BwOiAKLSAgICAgICAgKF9ld2tfZnJhbWVfcmVjdF9j
bXBfbGVzc190aGFuKTogUHJpdmF0ZS4KLSAgICAgICAgKF9ld2tfZnJhbWVfcmVjdF9pc19uZWdh
dGl2ZV92YWx1ZSk6IFByaXZhdGUuCi0gICAgICAgIChld2tfZnJhbWVfdGV4dF9tYXRjaGVzX250
aF9wb3NfZ2V0KTogQWRkZWQuIEZ1bmN0aW9uIHJldHVybnMgcG9zaXRpb24gb2YKLSAgICAgICAg
bi10aCB0ZXh0IG1hdGNoIGluIGZyYW1lLgotICAgICAgICAqIGV3ay9ld2tfZnJhbWUuaDoKLQot
MjAxMC0wOC0zMCAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3VuZy5jb20+Ci0KLSAgICAg
ICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KLQotICAgICAgICBbRUZMXVVybCBvZiBIaXN0b3J5
SXRlbSB3YXMgYnJva2VuIGZvciBzcGVjaWFsIGNoYXJhY3RlciBsaWtlIGtvcmVhbgotICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQ0OTUKLQotICAgICAg
ICBSZW1vdmUgdW5uZWNlc3NhcnkgY29kZS4gVGhpcyBtYWtlcyBhIGJ1ZyB3aXRoIGNvbXBsaWNh
dGVkIFVSTC4KLQotICAgICAgICAqIGV3ay9ld2tfZnJhbWUuY3BwOgotICAgICAgICAoZXdrX2Zy
YW1lX3ZpZXdfc3RhdGVfc2F2ZSk6Ci0KLTIwMTAtMDgtMzAgIE1pa2/FgmFqIE1hxYJlY2tpICA8
bS5tYWxlY2tpQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9o
ZGUgQ2hyaXN0aWFuc2VuCi0KLSAgICAgICAgW0VGTF0gQWRkZWQgaW5pdGlhbCBzZXR0aW5nIHRv
IHR1cm4gb24gb2ZmbGluZSBwYWdlcy4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTQ0MjM5Ci0KLSAgICAgICAgKiBld2svZXdrX21haW4uY3BwOiBUb3Ju
IG9mZiBub24tRUZMIGluaXQgdG8gX2V3a19pbml0X2JvZHkKLSAgICAgICAgKGV3a19pbml0KTog
Q2hhbmdlZCBub24tRUZMIGluaXQgdG8gY2FsbCBfZXdrX2luaXRfYm9keQotICAgICAgICAoX2V3
a19pbml0X2JvZHkpOiBNb3ZlZCBpbnRlcm5hbCBpbml0IGhlcmUgYW5kIGFkZGVkIGNhY2hlIGRp
cmVjdG9yeSBwYXRoIHNldHRpbmcuCi0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDogQWRkZWQg
bmV3IGNvbmZpZyBpdGVtczogb2ZmbGluZV9hcHBfY2FjaGUgYW5kIGNhY2hlX2RpcmVjdG9yeQot
ICAgICAgICAoX2V3a192aWV3X3ByaXZfbmV3KTogY3JlYXRpbmcgY2FjaGVfZGlyZWN0b3J5IHN0
cmluZwotICAgICAgICAoX2V3a192aWV3X3ByaXZfZGVsKTogZGVsZXRpbmcgY2FjaGVfZGlyZWN0
b3J5IHN0cmluZwotICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19vZmZsaW5lX2FwcF9jYWNoZV9n
ZXQpOgotICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19vZmZsaW5lX2FwcF9jYWNoZV9zZXQpOgot
ICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19jYWNoZV9kaXJlY3RvcnlfZ2V0KToKLSAgICAgICAg
KGV3a192aWV3X3NldHRpbmdfY2FjaGVfZGlyZWN0b3J5X3NldCk6Ci0gICAgICAgICogZXdrL2V3
a192aWV3Lmg6IGFkZGVkIG9mZmxpbmVfYXBwX2NhY2hlIGFuZCBjYWNoZV9kaXJlY3RvcnkgcHJv
cHMgdG8gZXdrIEFQSQotCi0yMDEwLTA4LTI2ICBNaXJvc2xhdyBTenltYW5za2kgIDxtaXJvc2xh
dy5zQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hy
aXN0aWFuc2VuLgotCi0gICAgICAgIFtFRkxdIEFkZGVkIG5ldyBjYWxsYmFjayB3aGVuIHZpZXcn
cyBzaXplIGlzIGNoYW5nZWQgdG8gZml4IGlzc3VlIHdpdGggY2hhbmdpbmcgbGF5b3V0IHNpemUK
LSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ0MzM3Ci0K
LSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoX2V3a192aWV3X3NtYXJ0X2Nh
bGN1bGF0ZSk6Ci0KLTIwMTAtMDgtMjUgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1z
dW5nLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBBbnRvbmlvIEdvbWVzLgotCi0gICAgICAg
IFtFRkxdIEFkZCBkdW1teSBGdWxsU2NyZWVuVmlkZW9Db250cm9sbGVyRWZsIHRvIFdlYktpdCBF
RkwKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ0NTkw
Ci0KLSAgICAgICAgQWRkIEZ1bGxTY3JlZW5WaWRlb0NvbnRyb2xsZXJFZmwgdG8gV2ViQ29yZVN1
cHBvcnQuIEhvd2V2ZXIsCi0gICAgICAgIHRoaXMgaXMgbm90IGltcGxlbWVudGVkIHlldC4KLQot
ICAgICAgICAqIENNYWtlTGlzdHNFZmwudHh0OgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Z1
bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJFZmwuY3BwOiBBZGRlZC4KLSAgICAgICAgKEZ1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXI6OkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIpOgotICAgICAgICAo
RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6fkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIpOgot
ICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6c2V0TWVkaWFFbGVtZW50KToKLSAg
ICAgICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OnNob3dIdWQpOgotICAgICAgICAoRnVs
bHNjcmVlblZpZGVvQ29udHJvbGxlcjo6aGlkZUh1ZCk6Ci0gICAgICAgIChGdWxsc2NyZWVuVmlk
ZW9Db250cm9sbGVyOjplbnRlckZ1bGxzY3JlZW4pOgotICAgICAgICAoRnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlcjo6dXBkYXRlSHVkUG9zaXRpb24pOgotICAgICAgICAoRnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlcjo6ZXhpdE9uVXNlclJlcXVlc3QpOgotICAgICAgICAoRnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlcjo6ZXhpdEZ1bGxzY3JlZW4pOgotICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29u
dHJvbGxlcjo6Y2FuUGxheSk6Ci0gICAgICAgIChGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpw
bGF5KToKLSAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OnBhdXNlKToKLSAgICAg
ICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OnBsYXlTdGF0ZUNoYW5nZWQpOgotICAgICAg
ICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6dG9nZ2xlUGxheSk6Ci0gICAgICAgIChGdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyOjp2b2x1bWUpOgotICAgICAgICAoRnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlcjo6bXV0ZWQpOgotICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6
c2V0Vm9sdW1lKToKLSAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OnZvbHVtZUNo
YW5nZWQpOgotICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6bXV0ZUNoYW5nZWQp
OgotICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6Y3VycmVudFRpbWUpOgotICAg
ICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6c2V0Q3VycmVudFRpbWUpOgotICAgICAg
ICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6ZHVyYXRpb24pOgotICAgICAgICAoRnVsbHNj
cmVlblZpZGVvQ29udHJvbGxlcjo6cGVyY2VudExvYWRlZCk6Ci0gICAgICAgIChGdWxsc2NyZWVu
VmlkZW9Db250cm9sbGVyOjpiZWdpblNlZWspOgotICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29u
dHJvbGxlcjo6ZG9TZWVrKToKLSAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OmVu
ZFNlZWspOgotICAgICAgICAodGltZVRvU3RyaW5nKToKLSAgICAgICAgKEZ1bGxzY3JlZW5WaWRl
b0NvbnRyb2xsZXI6OnVwZGF0ZUh1ZFByb2dyZXNzQmFyKToKLSAgICAgICAgKEZ1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXI6OmNyZWF0ZUh1ZCk6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnVs
bHNjcmVlblZpZGVvQ29udHJvbGxlckVmbC5oOiBBZGRlZC4KLSAgICAgICAgKEZ1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXI6Om1lZGlhRWxlbWVudCk6Ci0KLTIwMTAtMDgtMjUgIEd5dXlvdW5nIEtp
bSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBBbnRv
bmlvIEdvbWVzLgotCi0gICAgICAgIFtFRkxdIEFkZCBzZXR0aW5nIEFQSSBmb3IgZW5hYmxpbmcg
bG9jYWwgc3RvcmFnZS4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTQ0MzE5Ci0KLSAgICAgICAgQWRkIEFQSSBmb3IgZW5hYmxpbmcvZGlzYWJsaW5nIGxv
Y2FsIHN0b3JhZ2UuCi0KLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoX2V3
a192aWV3X3ByaXZfbmV3KToKLSAgICAgICAgKGV3a192aWV3X3NldHRpbmdfbG9jYWxfc3RvcmFn
ZV9nZXQpOiBBZGRlZAotICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19sb2NhbF9zdG9yYWdlX3Nl
dCk6IEFkZGVkCi0gICAgICAgICogZXdrL2V3a192aWV3Lmg6Ci0KLTIwMTAtMDgtMjUgIEphZWh1
biBMaW0gIDxsamFlaHVuLmxpbUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBB
bnRvbmlvIEdvbWVzLgotCi0gICAgICAgIFtFRkxdIGVuYWJsZSBsaWJzb3VwJ3MgY29udGVudCBk
ZWNvZGUgZmVhdHVyZQotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NDQxNDcKLQotICAgICAgICBsaWJzb3VwJ3MgY29udGVudCBkZWNvZGUgZmVhdHVyZSBp
cyBlbmFibGVkIGR1cmluZyBpbml0aWFsaXphdG9uLgotCi0gICAgICAgICogZXdrL2V3a19tYWlu
LmNwcDoKLSAgICAgICAgKGV3a19pbml0KToKLQotMjAxMC0wOC0yNSAgUmFmYWVsIEFudG9nbm9s
bGkgIDxhbnRvZ25vbGxpQHByb2Z1c2lvbi5tb2JpPgotCi0gICAgICAgIFVucmV2aWV3ZWQgYnVp
bGQgZml4LgotCi0gICAgICAgIFtFRkxdIEJ1aWxkIGZpeCBmb3IgcmV2aXNpb24gNjUzMzIKLSAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ0NTQzCi0KLSAg
ICAgICAgVXNlIEd0aHJlYWRfTElCUkFSSUVTIGluc3RlYWQgb2YgR1RIUkVBRF9MSUJSQVJJRVMu
IFRoaXMgZml4Ci0gICAgICAgIHRoZSBidWlsZCB3aGVuIHVzaW5nIEVOQUJMRV9HTElCX1NVUFBP
UlQ9T04gYW5kIE5FVFdPUktfQkFDS0VORD1jdXJsLgotCi0gICAgICAgICogQ01ha2VMaXN0c0Vm
bC50eHQ6Ci0KLTIwMTAtMDgtMjQgIEx1a2FzeiBTbGFjaGNpYWsgIDxsLnNsYWNoY2lha0BzYW1z
dW5nLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBBbnRvbmlvIEdvbWVzLgotCi0gICAgICAg
IFtFRkxdIEV4dGVuZGVkIEVGTCBXZWJWaWV3IEFQSSB0byBhbGxvdyBlbmFibGUvZGlzYWJsZSBG
cmFtZSBGbGF0dGVuaW5nCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD00NDI1MwotCi0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAgKGV3
a192aWV3X3NldHRpbmdfZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5pbmdfZ2V0KToKLSAgICAgICAgKGV3
a192aWV3X3NldHRpbmdfZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5pbmdfc2V0KToKLSAgICAgICAgKiBl
d2svZXdrX3ZpZXcuaDoKLQotMjAxMC0wOC0yMyAgTGVhbmRybyBQZXJlaXJhICA8bGVhbmRyb0Bw
cm9mdXNpb24ubW9iaT4KLQotICAgICAgICBbRUZMXSBCdWlsZCBmaXggZm9yIHBsYXRmb3JtcyB0
aGF0IGRvIG5vdCByZXF1aXJlIGxpbmtpbmcgd2l0aCAiZGwiLgotICAgICAgICBDTWFrZSBpbmNs
dWRlcyB0aGUgdmFyaWFibGUgQ01BS0VfRExfTElCUyB0aGF0IGV2YWx1YXRlcyB0byB0aGUKLSAg
ICAgICAgcGxhdGZvcm0tc3BlY2lmaWMgbGlicmFyaWVzLgotCi0gICAgICAgICogQ01ha2VMaXN0
c0VmbC50eHQ6IFVzZSAke0NNQUtFX0RMX0xJQlN9IGluc3RlYWQgb2YgZGwuCi0KLTIwMTAtMDgt
MjIgIFJhZmFlbCBBbnRvZ25vbGxpICA8YW50b2dub2xsaUBwcm9mdXNpb24ubW9iaT4KLQotICAg
ICAgICBSZXZpZXdlZCBieSBBbnRvbmlvIEdvbWVzLgotCi0gICAgICAgIFtFRkxdIFJlbW92ZSBk
dXBsaWNhdGVkIGluY2x1ZGUgZW50cnkgZnJvbSBkZWZhdWx0IHRoZW1lLgotICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQzNDUKLQotICAgICAgICBUaGlz
IHVzZWQgdG8gY3JlYXRlIHRoZSBncm91cCB3ZWJraXQvd2lkZ2V0L2VudHJ5IHR3aWNlIGluCi0g
ICAgICAgIHRoZSB0aGVtZS4gSXQncyBsZWFkaW5nIHRvIGEgYnVnIHdpdGggdGhlIG5ld2VyIHZl
cnNpb25zIG9mCi0gICAgICAgIEVGTC4KLQotICAgICAgICAqIERlZmF1bHRUaGVtZS9kZWZhdWx0
LmVkYzoKLQotMjAxMC0wOC0yMiAgRGFuaWVsIEJhdGVzICA8ZGJhdGVzQHJpbS5jb20+Ci0KLSAg
ICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCi0KLSAgICAgICAgRW5jYXBzdWxhdGUgZG9j
dW1lbnQgbWFya2VyIG1hbmFnZW1lbnQgaW50byBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXIKLSAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ0MzgzCi0KLSAg
ICAgICAgTW9kaWZ5IGNhbGwgc2l0ZXMgaW4gdGhlIEVGTCBwb3J0IHRvIHVzZSBEb2N1bWVudE1h
cmtlckNvbnRyb2xsZXIuCi0KLSAgICAgICAgTm8gZnVuY3Rpb25hbGl0eSB3YXMgY2hhbmdlZCwg
c28gbm8gbmV3IHRlc3RzLgotCi0gICAgICAgICogZXdrL2V3a19mcmFtZS5jcHA6Ci0gICAgICAg
IChld2tfZnJhbWVfdGV4dF9tYXRjaGVzX3VubWFya19hbGwpOgotCi0yMDEwLTA4LTIwICBMZWFu
ZHJvIFBlcmVpcmEgIDxsZWFuZHJvQHByb2Z1c2lvbi5tb2JpPgotCi0gICAgICAgIFtFRkxdIFVu
cmV2aWV3ZWQuIEZpeCBidWlsZCB3aGVuIHVzaW5nIEdOVSBnb2xkLgotICAgICAgICBXaGVuIGxp
bmtpbmcgd2l0aCBHTlUgZ29sZCwgc29tZSBzeW1ib2xzIGFyZSBub3QgZm91bmQ6IGV4cGxpY2l0
bHkKLSAgICAgICAgbGluayB3aXRoIHRoZSByZXF1aXJlZCBsaWJyYXJpZXMuCi0KLSAgICAgICAg
KiBDTWFrZUxpc3RzRWZsLnR4dDogRGVwZW5kIG9uIEZvbnRjb25maWcsIFBORywgSlBFRyBhbmQg
ZGwKLSAgICAgICAgbGlicmFyaWVzLgotCi0yMDEwLTA4LTE1ICBHeXV5b3VuZyBLaW0gIDxneXV5
b3VuZy5raW1Ac2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21l
cy4KLQotICAgICAgICBbRUZMXSBFbmFibGUgbG9jYWxTdG9yYWdlIG9mIEhUTUw1IGZvciBXZWJL
aXQgRUZMCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00
NDAyMAotCi0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDogCi0gICAgICAgIChfZXdrX3ZpZXdf
cHJpdl9uZXcpOgotCi0yMDEwLTA4LTExICBSYWZhZWwgQW50b2dub2xsaSAgPGFudG9nbm9sbGlA
cHJvZnVzaW9uLm1vYmk+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJp
c3RpYW5zZW4uCi0KLSAgICAgICAgW0VGTF0gQWRkaW5nIG5ldyB0aGVtZSBmb3Igd2lkZ2V0cy4K
LSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQzODYwCi0K
LSAgICAgICAgT3JpZ2luYWwgdGhlbWUgd2FzIHRoZXJlIGZvciBhIGxvbmcgdGltZS4gVGhpcyBp
cyBhIG5ldwotICAgICAgICBmcmVzaCBvbmUuCi0KLSAgICAgICAgKiBEZWZhdWx0VGhlbWUvZGVm
YXVsdC5lZGM6Ci0gICAgICAgICogRGVmYXVsdFRoZW1lL3dpZGdldC9idXR0b24vYnV0dG9uLmVk
YzoKLSAgICAgICAgKiBEZWZhdWx0VGhlbWUvd2lkZ2V0L2J1dHRvbi9pbWdfYnV0dG9uX2ZvY3Vz
LnBuZzoKLSAgICAgICAgKiBEZWZhdWx0VGhlbWUvd2lkZ2V0L2J1dHRvbi9pbWdfYnV0dG9uX2hv
dmVyLnBuZzoKLSAgICAgICAgKiBEZWZhdWx0VGhlbWUvd2lkZ2V0L2J1dHRvbi9pbWdfYnV0dG9u
X25vcm1hbC5wbmc6Ci0gICAgICAgICogRGVmYXVsdFRoZW1lL3dpZGdldC9idXR0b24vaW1nX2J1
dHRvbl9wcmVzcy5wbmc6Ci0gICAgICAgICogRGVmYXVsdFRoZW1lL3dpZGdldC9jaGVjay9jaGVj
ay5lZGM6Ci0gICAgICAgICogRGVmYXVsdFRoZW1lL3dpZGdldC9jaGVjay9pbWdfY2hlY2tfb2Zm
LnBuZzoKLSAgICAgICAgKiBEZWZhdWx0VGhlbWUvd2lkZ2V0L2NoZWNrL2ltZ19jaGVja19vZmZf
Zm9jdXMucG5nOgotICAgICAgICAqIERlZmF1bHRUaGVtZS93aWRnZXQvY2hlY2svaW1nX2NoZWNr
X29mZl9ob3Zlci5wbmc6Ci0gICAgICAgICogRGVmYXVsdFRoZW1lL3dpZGdldC9jaGVjay9pbWdf
Y2hlY2tfb24ucG5nOgotICAgICAgICAqIERlZmF1bHRUaGVtZS93aWRnZXQvY2hlY2svaW1nX2No
ZWNrX29uX2ZvY3VzLnBuZzoKLSAgICAgICAgKiBEZWZhdWx0VGhlbWUvd2lkZ2V0L2NoZWNrL2lt
Z19jaGVja19vbl9ob3Zlci5wbmc6Ci0gICAgICAgICogRGVmYXVsdFRoZW1lL3dpZGdldC9jb21i
by9jb21iby5lZGM6Ci0gICAgICAgICogRGVmYXVsdFRoZW1lL3dpZGdldC9jb21iby9jb21ib19m
b2N1cy5wbmc6Ci0gICAgICAgICogRGVmYXVsdFRoZW1lL3dpZGdldC9jb21iby9jb21ib19mb2N1
c19idXR0b24ucG5nOgotICAgICAgICAqIERlZmF1bHRUaGVtZS93aWRnZXQvY29tYm8vY29tYm9f
aG92ZXIucG5nOgotICAgICAgICAqIERlZmF1bHRUaGVtZS93aWRnZXQvY29tYm8vY29tYm9faG92
ZXJfYnV0dG9uLnBuZzoKLSAgICAgICAgKiBEZWZhdWx0VGhlbWUvd2lkZ2V0L2NvbWJvL2NvbWJv
X25vcm1hbC5wbmc6Ci0gICAgICAgICogRGVmYXVsdFRoZW1lL3dpZGdldC9jb21iby9jb21ib19u
b3JtYWxfYnV0dG9uLnBuZzoKLSAgICAgICAgKiBEZWZhdWx0VGhlbWUvd2lkZ2V0L2NvbWJvL2Nv
bWJvX3ByZXNzLnBuZzoKLSAgICAgICAgKiBEZWZhdWx0VGhlbWUvd2lkZ2V0L2NvbWJvL2NvbWJv
X3ByZXNzX2J1dHRvbi5wbmc6Ci0gICAgICAgICogRGVmYXVsdFRoZW1lL3dpZGdldC9jb21iby9p
Y29uLnBuZzoKLSAgICAgICAgKiBEZWZhdWx0VGhlbWUvd2lkZ2V0L2VudHJ5L2ltZ19mb2N1c2Vk
LnBuZzoKLSAgICAgICAgKiBEZWZhdWx0VGhlbWUvd2lkZ2V0L2VudHJ5L2ltZ19ob3ZlcmVkLnBu
ZzoKLSAgICAgICAgKiBEZWZhdWx0VGhlbWUvd2lkZ2V0L2VudHJ5L2ltZ19ub3JtYWwucG5nOgot
ICAgICAgICAqIERlZmF1bHRUaGVtZS93aWRnZXQvZmlsZS9maWxlX2ZvY3VzLnBuZzoKLSAgICAg
ICAgKiBEZWZhdWx0VGhlbWUvd2lkZ2V0L2ZpbGUvZmlsZV9ob3Zlci5wbmc6Ci0gICAgICAgICog
RGVmYXVsdFRoZW1lL3dpZGdldC9maWxlL2ZpbGVfbm9ybWFsLnBuZzoKLSAgICAgICAgKiBEZWZh
dWx0VGhlbWUvd2lkZ2V0L2ZpbGUvZmlsZV9wcmVzcy5wbmc6Ci0gICAgICAgICogRGVmYXVsdFRo
ZW1lL3dpZGdldC9yYWRpby9pbWdfcmFkaW9fb2ZmLnBuZzoKLSAgICAgICAgKiBEZWZhdWx0VGhl
bWUvd2lkZ2V0L3JhZGlvL2ltZ19yYWRpb19vZmZfZm9jdXMucG5nOgotICAgICAgICAqIERlZmF1
bHRUaGVtZS93aWRnZXQvcmFkaW8vaW1nX3JhZGlvX29mZl9ob3Zlci5wbmc6Ci0gICAgICAgICog
RGVmYXVsdFRoZW1lL3dpZGdldC9yYWRpby9pbWdfcmFkaW9fb24ucG5nOgotICAgICAgICAqIERl
ZmF1bHRUaGVtZS93aWRnZXQvcmFkaW8vaW1nX3JhZGlvX29uX2ZvY3VzLnBuZzoKLSAgICAgICAg
KiBEZWZhdWx0VGhlbWUvd2lkZ2V0L3JhZGlvL2ltZ19yYWRpb19vbl9ob3Zlci5wbmc6Ci0gICAg
ICAgICogRGVmYXVsdFRoZW1lL3dpZGdldC9yYWRpby9yYWRpby5lZGM6Ci0gICAgICAgICogRGVm
YXVsdFRoZW1lL3dpZGdldC9zY3JvbGxiYXIvc2Nyb2xsYmFyLmVkYzoKLSAgICAgICAgKiBEZWZh
dWx0VGhlbWUvd2lkZ2V0L3Njcm9sbGJhci9zY3JvbGxiYXJfaC5wbmc6Ci0gICAgICAgICogRGVm
YXVsdFRoZW1lL3dpZGdldC9zY3JvbGxiYXIvc2Nyb2xsYmFyX2hpbGlnaHQucG5nOiBSZW1vdmVk
LgotICAgICAgICAqIERlZmF1bHRUaGVtZS93aWRnZXQvc2Nyb2xsYmFyL3Njcm9sbGJhcl9rbm9i
X2gucG5nOgotICAgICAgICAqIERlZmF1bHRUaGVtZS93aWRnZXQvc2Nyb2xsYmFyL3Njcm9sbGJh
cl9rbm9iX3YucG5nOgotICAgICAgICAqIERlZmF1bHRUaGVtZS93aWRnZXQvc2Nyb2xsYmFyL3Nj
cm9sbGJhcl92LnBuZzoKLSAgICAgICAgKiBEZWZhdWx0VGhlbWUvd2lkZ2V0L3NlYXJjaC9jYW5j
ZWwvY2FuY2VsX25vcm1hbF9idXR0b24yLnBuZzoKLSAgICAgICAgKiBEZWZhdWx0VGhlbWUvd2lk
Z2V0L3NlYXJjaC9kZWNvcmF0aW9uL2RlY29yYXRpb25fbm9ybWFsX2J1dHRvbi5wbmc6Ci0gICAg
ICAgICogRGVmYXVsdFRoZW1lL3dpZGdldC9zZWFyY2gvZmllbGQvZmllbGRfZm9jdXNlZC5wbmc6
Ci0gICAgICAgICogRGVmYXVsdFRoZW1lL3dpZGdldC9zZWFyY2gvZmllbGQvZmllbGRfaG92ZXJl
ZC5wbmc6Ci0gICAgICAgICogRGVmYXVsdFRoZW1lL3dpZGdldC9zZWFyY2gvZmllbGQvZmllbGRf
bm9ybWFsLnBuZzoKLSAgICAgICAgKiBEZWZhdWx0VGhlbWUvd2lkZ2V0L3NsaWRlci9zbGlkZXIu
ZWRjOgotICAgICAgICAqIERlZmF1bHRUaGVtZS93aWRnZXQvc2xpZGVyL3NsaWRlcl9maWxsX2gu
cG5nOiBBZGRlZC4KLSAgICAgICAgKiBEZWZhdWx0VGhlbWUvd2lkZ2V0L3NsaWRlci9zbGlkZXJf
ZmlsbF92LnBuZzogQWRkZWQuCi0gICAgICAgICogRGVmYXVsdFRoZW1lL3dpZGdldC9zbGlkZXIv
c2xpZGVyX2gucG5nOgotICAgICAgICAqIERlZmF1bHRUaGVtZS93aWRnZXQvc2xpZGVyL3NsaWRl
cl9oaWxpZ2h0LnBuZzogUmVtb3ZlZC4KLSAgICAgICAgKiBEZWZhdWx0VGhlbWUvd2lkZ2V0L3Ns
aWRlci9zbGlkZXJfa25vYl9oLnBuZzoKLSAgICAgICAgKiBEZWZhdWx0VGhlbWUvd2lkZ2V0L3Ns
aWRlci9zbGlkZXJfa25vYl9wcmVzc19oLnBuZzogQWRkZWQuCi0gICAgICAgICogRGVmYXVsdFRo
ZW1lL3dpZGdldC9zbGlkZXIvc2xpZGVyX2tub2JfcHJlc3Nfdi5wbmc6IEFkZGVkLgotICAgICAg
ICAqIERlZmF1bHRUaGVtZS93aWRnZXQvc2xpZGVyL3NsaWRlcl9rbm9iX3YucG5nOgotICAgICAg
ICAqIERlZmF1bHRUaGVtZS93aWRnZXQvc2xpZGVyL3NsaWRlcl92LnBuZzoKLQotMjAxMC0wOC0x
MiAgUmFmYWVsIEFudG9nbm9sbGkgIDxhbnRvZ25vbGxpQHByb2Z1c2lvbi5tb2JpPgotCi0gICAg
ICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgotCi0gICAgICAgIFtF
RkxdIE1ha2luZyBDTWFrZSBrZWVwIHRyYWNrIG9mIHRoZW1lIGRlcGVuZGVuY2llcy4KLSAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQzODYyCi0KLSAgICAg
ICAgQWRkaW5nIHRoZW1lIHNvdXJjZSBmaWxlcyBhbmQgaW1hZ2VzIGFzIGRlcGVuZGVuY2llcyBv
ZiB0aGUgdGhlbWUuCi0KLSAgICAgICAgKiBDTWFrZUxpc3RzRWZsLnR4dDoKLQotMjAxMC0wOC0x
MSAgUmFmYWVsIEFudG9nbm9sbGkgIDxhbnRvZ25vbGxpQHByb2Z1c2lvbi5tb2JpPgotCi0gICAg
ICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgotCi0gICAgICAgIFtF
RkxdIEFkZCBzZXR0aW5nIGZvciBlbmFibGluZyBzcGF0aWFsIG5hdmlnYXRpb24uCi0gICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MzU2OQotCi0gICAgICAg
IEFkZGluZyBhcGkgZm9yIGVuYWJsaW5nL2Rpc2FibGluZyBzcGF0aWFsIG5hdmlnYXRpb24uCi0K
LSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOiBCb3RoIGZ1bmN0aW9ucyBiZWxvdyBhZGRlZC4K
LSAgICAgICAgKGV3a192aWV3X3NldHRpbmdfc3BhdGlhbF9uYXZpZ2F0aW9uX2dldCk6Ci0gICAg
ICAgIChld2tfdmlld19zZXR0aW5nX3NwYXRpYWxfbmF2aWdhdGlvbl9zZXQpOgotICAgICAgICAq
IGV3ay9ld2tfdmlldy5oOiBzYW1lIGFzIGV3a192aWV3LmNwcC4KLQotMjAxMC0wOC0xMSAgUnl1
YW4gQ2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkg
QW50b25pbyBHb21lcy4KLQotICAgICAgICBJbXBsZW1lbnRhdGlvbiBkaXNwYXRjaERlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb24KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTQzNTQ0Ci0KLSAgICAgICAgQWRkIGV3a192aWV3X25hdmlnYXRpb25f
cG9saWN5X2RlY2lzaW9uIHRvIGRlY2lkZSB3aGV0aGVyIHVybCB3aGljaAotICAgICAgICB1c2Vy
IGNsaWNrZWQgd2lsbCBiZSBsb2FkZWQgb3Igbm90LgotCi0gICAgICAgICogV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXJDbGllbnRFZmw6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6Ci0g
ICAgICAgICogZXdrL2V3a19wcml2YXRlLmg6Ci0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoK
LSAgICAgICAgKGV3a192aWV3X25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uKToKLSAgICAgICAg
KiBld2svZXdrX3ZpZXcuaDoKLQotMjAxMC0wOC0xMCAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lA
c2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgVW5yZXZpZXdlZCBidWlsZCBmaXguCi0KLSAgICAgICAg
W0VGTF1SRUdSRVNTSU9OKDY1MDIxKSBuZWVkIHRvIGZpeCBidWlsZCBicmVhawotICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDM3NjcKLQotICAgICAgICBS
ZW1vdmUgQXRvbWljU3RyaW5nV1RGIGFuZCBjaGFuZ2UgbmFtZXNwYWNlIFRleHRDYXNlSW5zZW5z
aXRpdmUuCi0KLSAgICAgICAgKiBld2svZXdrX2ZyYW1lLmNwcDoKLSAgICAgICAgKGV3a19mcmFt
ZV9wbHVnaW5fY3JlYXRlKToKLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAo
ZXdrX3ZpZXdfdGV4dF9zZWFyY2gpOgotICAgICAgICAoZXdrX3ZpZXdfdGV4dF9tYXRjaGVzX21h
cmspOgotICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19mb250X2N1cnNpdmVfc2V0KToKLQotMjAx
MC0wOC0wNiAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+Ci0KLSAg
ICAgICAgUnViYmVyIHN0YW1wZWQgYnkgU2FtIFdlaW5pZwotCi0gICAgICAgIEJ1ZyA0MzU5NCAt
IEFkZCBzdHJpbmcgZm9yd2FyZHMgdG8gRm9yd2FyZC5oCi0gICAgICAgIFRoaXMgYWxsb3dzIHVz
IHRvIHJlbW92ZSBmb3J3YXJkIGRlY2xhcmF0aW9ucyBmb3IgdGhlc2UgY2xhc3NlcyBmcm9tCi0g
ICAgICAgIFdlYkNvcmUvV2ViS2l0IChhIHN0ZXAgaW4gbW92aW5nIHRoZXNlIGNsYXNzIGZyb20g
V2ViQ29yZTo6IHRvIFdURjo6KS4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0luc3BlY3Rv
ckNsaWVudEVmbC5oOgotCi0yMDEwLTA4LTA2ICBKZXNzaWUgQmVybGluICA8amJlcmxpbkBhcHBs
ZS5jb20+Ci0KLSAgICAgICAgUm9sbCBvdXQgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2Vz
ZXQvNjQ4MDEsIHdoaWNoIGJyb2tlIHRoZSBTYWZhcmkgV2luZG93cyBCdWlsZC4KLSAgICAgICAg
VW5yZXZpZXdlZC4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEVm
bC5oOgotCi0yMDEwLTA4LTAzICBMZWFuZHJvIFBlcmVpcmEgIDxsZWFuZHJvQHByb2Z1c2lvbi5t
b2JpPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgot
Ci0gICAgICAgIEltcGxlbWVudCBIVE1MNSBzbGlkZXIgdGhlbWUgKHVzaW5nIHRoZSBzY3JvbGxi
YXIgdGhlbWUgYXMgYmFzZSkuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD00MzQzMAotCi0gICAgICAgICogRGVmYXVsdFRoZW1lL2RlZmF1bHQuZWRjOiBJ
bmNsdWRlIHNsaWRlci5lZGMuCi0gICAgICAgICogRGVmYXVsdFRoZW1lL3dpZGdldC9zbGlkZXIv
c2xpZGVyLmVkYzogQWRkZWQuCi0gICAgICAgICogRGVmYXVsdFRoZW1lL3dpZGdldC9zbGlkZXIv
c2xpZGVyX2gucG5nOiBDb3BpZWQgZnJvbSBXZWJLaXQvZWZsL0RlZmF1bHRUaGVtZS93aWRnZXQv
c2Nyb2xsYmFyL3Njcm9sbGJhcl9oLnBuZy4KLSAgICAgICAgKiBEZWZhdWx0VGhlbWUvd2lkZ2V0
L3NsaWRlci9zbGlkZXJfaGlsaWdodC5wbmc6IENvcGllZCBmcm9tIFdlYktpdC9lZmwvRGVmYXVs
dFRoZW1lL3dpZGdldC9zY3JvbGxiYXIvc2Nyb2xsYmFyX2hpbGlnaHQucG5nLgotICAgICAgICAq
IERlZmF1bHRUaGVtZS93aWRnZXQvc2xpZGVyL3NsaWRlcl9rbm9iX2gucG5nOiBDb3BpZWQgZnJv
bSBXZWJLaXQvZWZsL0RlZmF1bHRUaGVtZS93aWRnZXQvc2Nyb2xsYmFyL3Njcm9sbGJhcl9rbm9i
X2gucG5nLgotICAgICAgICAqIERlZmF1bHRUaGVtZS93aWRnZXQvc2xpZGVyL3NsaWRlcl9rbm9i
X3YucG5nOiBDb3BpZWQgZnJvbSBXZWJLaXQvZWZsL0RlZmF1bHRUaGVtZS93aWRnZXQvc2Nyb2xs
YmFyL3Njcm9sbGJhcl9rbm9iX3YucG5nLgotICAgICAgICAqIERlZmF1bHRUaGVtZS93aWRnZXQv
c2xpZGVyL3NsaWRlcl92LnBuZzogQ29waWVkIGZyb20gV2ViS2l0L2VmbC9EZWZhdWx0VGhlbWUv
d2lkZ2V0L3Njcm9sbGJhci9zY3JvbGxiYXJfdi5wbmcuCi0KLTIwMTAtMDgtMDMgIHJ5dWFuIGNo
b2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IERhcmlu
IEFkbGVyLgotCi0gICAgICAgIFtFRkxdIFJFR1JFU1NJT04oNjQ0MjUpIG5lZWQgdG8gZml4IGJ1
aWxkIGJyZWFrCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD00MzMyMgotCi0gICAgICAgIGp1c3QgYWRkIGluY2x1ZGUgcGF0aCBtaXNzZWQgYWZ0ZXIgcjY0
NDI1Ci0KLSAgICAgICAgKiBDTWFrZUxpc3RzRWZsLnR4dDoKLQotMjAxMC0wNy0yNyAgTHVpeiBB
Z29zdGluaSAgPGx1aXouYWdvc3RpbmlAb3BlbmJvc3NhLm9yZz4KLQotICAgICAgICBSZXZpZXdl
ZCBieSBEYXJpbiBGaXNoZXIuCi0KLSAgICAgICAgUG9wdXBNZW51IHJlZmFjdG9yaW5nIGluIHBy
ZXBhcmF0aW9uIHRvIFdlYktpdDIKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTQyNTkyCi0KLSAgICAgICAgQXMgQ2hyb21lQ2xpZW50IHdhcyBtYWRlIHJl
c3BvbnNpYmxlIGZvciBwcm92aWRpbmcgUG9wdXBNZW51IGFuZCBTZWFyY2hQb3B1cE1lbnUKLSAg
ICAgICAgaW5zdGFuY2VzLCBjb25jcmV0ZSBjbGFzc2VzIHRoYXQgaW5oZXJpdCBmcm9tIENocm9t
ZUNsaWVudCBuZWVkZWQgdG8gYmUgY2hhbmdlZCB0bwotICAgICAgICBpbXBsZW1lbnQgdGhlIG5l
dyBtZXRob2RzLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNw
cDoKLSAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEVmbDo6c2VsZWN0SXRlbVdyaXRpbmdE
aXJlY3Rpb25Jc05hdHVyYWwpOgotICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZsOjpj
cmVhdGVQb3B1cE1lbnUpOgotICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZsOjpjcmVh
dGVTZWFyY2hQb3B1cE1lbnUpOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVu
dEVmbC5oOgotCi0yMDEwLTA4LTAyICBKZXJlbXkgT3Jsb3cgIDxqb3Jsb3dAY2hyb21pdW0ub3Jn
PgotCi0gICAgICAgIFNwZWN1bGF0aXZlIHJldmVydCBvZiA2NDQyNSBkdWUgdG8gQ2hyb21pdW0g
aW5zdGFiaWxpdHkKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTQzMzQ3Ci0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3Bw
OgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oOgotCi0yMDEwLTA3
LTI3ICBMdWl6IEFnb3N0aW5pICA8bHVpei5hZ29zdGluaUBvcGVuYm9zc2Eub3JnPgotCi0gICAg
ICAgIFJldmlld2VkIGJ5IERhcmluIEZpc2hlci4KLQotICAgICAgICBQb3B1cE1lbnUgcmVmYWN0
b3JpbmcgaW4gcHJlcGFyYXRpb24gdG8gV2ViS2l0MgotICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDI1OTIKLQotICAgICAgICBBcyBDaHJvbWVDbGllbnQg
d2FzIG1hZGUgcmVzcG9uc2libGUgZm9yIHByb3ZpZGluZyBQb3B1cE1lbnUgYW5kIFNlYXJjaFBv
cHVwTWVudQotICAgICAgICBpbnN0YW5jZXMsIGNvbmNyZXRlIGNsYXNzZXMgdGhhdCBpbmhlcml0
IGZyb20gQ2hyb21lQ2xpZW50IG5lZWRlZCB0byBiZSBjaGFuZ2VkIHRvCi0gICAgICAgIGltcGxl
bWVudCB0aGUgbmV3IG1ldGhvZHMuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVD
bGllbnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZsOjpzZWxlY3RJ
dGVtV3JpdGluZ0RpcmVjdGlvbklzTmF0dXJhbCk6Ci0gICAgICAgIChXZWJDb3JlOjpDaHJvbWVD
bGllbnRFZmw6OmNyZWF0ZVBvcHVwTWVudSk6Ci0gICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGll
bnRFZmw6OmNyZWF0ZVNlYXJjaFBvcHVwTWVudSk6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQv
Q2hyb21lQ2xpZW50RWZsLmg6Ci0KLTIwMTAtMDctMzEgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJl
dmlldy5ib3RAZ21haWwuY29tPgotCi0gICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI2
NDQyMi4KLSAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvNjQ0MjIKLSAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQzMzA0Ci0KLSAg
ICAgICAgQnVpbGQgZml4ZXMgYXJlIG5lZWRlZCBmb3IgU25vdyBMZW9wYXJkIGFuZCBXaW5kb3dz
LgotICAgICAgICAoUmVxdWVzdGVkIGJ5IGxjYSBvbiAjd2Via2l0KS4KLQotICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHA6Ci0gICAgICAgICogV2ViQ29yZVN1cHBv
cnQvQ2hyb21lQ2xpZW50RWZsLmg6Ci0KLTIwMTAtMDctMjcgIEx1aXogQWdvc3RpbmkgIDxsdWl6
LmFnb3N0aW5pQG9wZW5ib3NzYS5vcmc+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gRmlz
aGVyLgotCi0gICAgICAgIFBvcHVwTWVudSByZWZhY3RvcmluZyBpbiBwcmVwYXJhdGlvbiB0byBX
ZWJLaXQyCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00
MjU5MgotCi0gICAgICAgIEFzIENocm9tZUNsaWVudCB3YXMgbWFkZSByZXNwb25zaWJsZSBmb3Ig
cHJvdmlkaW5nIFBvcHVwTWVudSBhbmQgU2VhcmNoUG9wdXBNZW51Ci0gICAgICAgIGluc3RhbmNl
cywgY29uY3JldGUgY2xhc3NlcyB0aGF0IGluaGVyaXQgZnJvbSBDaHJvbWVDbGllbnQgbmVlZGVk
IHRvIGJlIGNoYW5nZWQgdG8KLSAgICAgICAgaW1wbGVtZW50IHRoZSBuZXcgbWV0aG9kcy4KLQot
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChX
ZWJDb3JlOjpDaHJvbWVDbGllbnRFZmw6OnNlbGVjdEl0ZW1Xcml0aW5nRGlyZWN0aW9uSXNOYXR1
cmFsKToKLSAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEVmbDo6Y3JlYXRlUG9wdXBNZW51
KToKLSAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEVmbDo6Y3JlYXRlU2VhcmNoUG9wdXBN
ZW51KToKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuaDoKLQotMjAx
MC0wNy0yNiAgU3RldmUgQmxvY2sgIDxzdGV2ZWJsb2NrQGdvb2dsZS5jb20+Ci0KLSAgICAgICAg
UmV2aWV3ZWQgYnkgSmVyZW15IE9ybG93LgotCi0gICAgICAgIFBhZ2UgY2xpZW50cyBzaG91bGQg
YmUgcGFzc2VkIHRvIFBhZ2UgY29uc3RydWN0b3IgdmlhIHN0cnVjdHVyZSBvZiBwb2ludGVycwot
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDI4MzQKLQot
ICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChfZXdrX3ZpZXdfcHJpdl9uZXcp
OgotCi0yMDEwLTA3LTI2ICBSYWZhZWwgQW50b2dub2xsaSAgPGFudG9nbm9sbGlAcHJvZnVzaW9u
Lm1vYmk+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21lcy4KLQotICAgICAgICBb
RUZMXSBNb3ZlIENNYWtlTGlzdHNFZmwudHh0IHRvIFdlYktpdC9lZmwvCi0gICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MzAwMgotCi0gICAgICAgIFRoaXMg
c2hvdWxkIHJlZHVjZSB0aGUgbm9pc2UgaW4gV2ViS2l0L0NoYW5nZUxvZyB0aGF0IGNvbWVzIGZy
b20gRUZMCi0gICAgICAgIHBvcnQuIE1vc3Qgb2YgdGhlIGNoYW5nZXMgb24gRUZMIHBvcnQgc2hv
dWxkIGJlIGxvZ2dlZCBpbgotICAgICAgICBXZWJLaXQvZWZsL0NoYW5nZUxvZy4KLQotICAgICAg
ICAqIENNYWtlTGlzdHNFZmwudHh0OiBSZW5hbWVkIGZyb20gV2ViS2l0L0NNYWtlTGlzdHNFZmwu
dHh0LgotCi0yMDEwLTA3LTIzICBSYWZhZWwgQW50b2dub2xsaSAgPGFudG9nbm9sbGlAcHJvZnVz
aW9uLm1vYmk+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21lcy4KLQotICAgICAg
ICBbRUZMXSBDbGVhbnVwIGdsaWIgc3VwcG9ydCAobWFrZSBpdCBvcHRpb25hbCkKLSAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQyNDgwCi0KLSAgICAgICAg
UHV0IHNvbWUgaWZkZWZzIG9uIGdsaWIgY2FsbHMuCi0KLSAgICAgICAgKiBld2svZXdrX21haW4u
Y3BwOgotICAgICAgICAoZXdrX2luaXQpOgotCi0yMDEwLTA3LTIzICBSYWZhZWwgQW50b2dub2xs
aSAgPGFudG9nbm9sbGlAcHJvZnVzaW9uLm1vYmk+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQW50
b25pbyBHb21lcy4KLQotICAgICAgICBbRUZMXSBBZGQgc3VwcG9ydCBmb3IgdXNpbmcgbGliY3Vy
bCBuZXR3b3JrIGJhY2tlbmQuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD00MjI4NgotCi0gICAgICAgIFB1dCBzb21lIGlmZGVmcyBhcm91bmQgc291cCBj
YWxscy4KLQotICAgICAgICAqIGV3ay9ld2tfY29va2llcy5jcHA6Ci0gICAgICAgIChld2tfY29v
a2llc19maWxlX3NldCk6Ci0gICAgICAgIChld2tfY29va2llc19jbGVhcik6Ci0gICAgICAgIChl
d2tfY29va2llc19nZXRfYWxsKToKLSAgICAgICAgKGV3a19jb29raWVzX2Nvb2tpZV9kZWwpOgot
ICAgICAgICAoZXdrX2Nvb2tpZXNfY29va2llX2ZyZWUpOgotICAgICAgICAoZXdrX2Nvb2tpZXNf
cG9saWN5X3NldCk6Ci0gICAgICAgIChld2tfY29va2llc19wb2xpY3lfZ2V0KToKLSAgICAgICAg
KiBld2svZXdrX21haW4uY3BwOgotICAgICAgICAoZXdrX2luaXQpOgotCi0yMDEwLTA3LTIzICBM
dWNhcyBEZSBNYXJjaGkgIDxsdWNhcy5kZW1hcmNoaUBwcm9mdXNpb24ubW9iaT4KLQotICAgICAg
ICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KLQotICAgICAgICBOb3Rp
ZnkgYnJvd3NlciB3aGVuIHdpbmRvdyBzaGFsbCBiZSBjbG9zZWQuCi0KLSAgICAgICAgVGhpcyBp
cyB1c2VkIGZvciB3aW5kb3cuY2xvc2UoKSBldmVudHMgSmF2YXNjcmlwdCwgdGhvdWdoIGl0IHdv
dWxkIGJlCi0gICAgICAgIHRyaWdnZXJlZCBmb3IgYW55IGV2ZW50IG9uIFdlYkNvcmUgdGhhdCBt
aWdodCBhc2sgZm9yIHRoZSB3aW5kb3cgdG8gYmUKLSAgICAgICAgY2xvc2VkLgotCi0gICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00Mjg5MAotCi0gICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6
OkNocm9tZUNsaWVudEVmbDo6Y2xvc2VXaW5kb3dTb29uKTogY2FsbCBuZXcgZnVuY3Rpb24gYW5k
IG1vdmVzIGl0cwotICAgICAgICBwcmV2aW91cyBmdW5jdGlvbmFsaXR5IHRoZXJlLgotICAgICAg
ICAqIGV3ay9ld2tfcHJpdmF0ZS5oOgotICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAg
ICAgIChld2tfdmlld193aW5kb3dfY2xvc2UpOiBzdG9wIGFsbCBsb2FkZXJzIGFzIHdhcyBiZWlu
ZyBkb25lIHByZXZpb3VzbHkgYW5kCi0gICAgICAgIG5vdGlmeSBicm93c2VyIGFmdGVyd2FyZHMu
Ci0gICAgICAgICogZXdrL2V3a192aWV3Lmg6IGRlY2xhcmUgbmV3IHZpcnR1YWwgbWV0aG9kLgot
Ci0yMDEwLTA3LTIzICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+Ci0K
LSAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCi0KLSAgICAg
ICAgW0VGTF0gU2V0IHByb3h5IGFkZHJlc3MgZm9yIFNvdXAKLSAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQyNzIxCi0KLSAgICAgICAgU2V0cyB0aGUgZ2l2
ZW4gcHJveHkgVVJJIGZvciBsaWJzb3VwIG5ldHdvcmsgYmFja2VuZC4gVGhpcyBtZXRob2Qgd2ls
bAotICAgICAgICBzdXBwb3J0IGxpYmN1cmwgbmV0d29yayBiYWNrZW5kIGxhdGVyLgotCi0gICAg
ICAgICogRVdlYkxhdW5jaGVyL21haW4uYzoKLSAgICAgICAgKG1haW4pOiBJbnZva2UgcHJveHkg
c2V0IG1ldGhvZAotICAgICAgICAqIGV3ay9ld2tfc2V0dGluZ3MuY3BwOgotICAgICAgICAoZXdr
X3NldHRpbmdzX3Byb3h5X3VyaV9zZXQpOiBTZXRzIHByb3h5IFVSSS4KLSAgICAgICAgKiBld2sv
ZXdrX3NldHRpbmdzLmg6Ci0KLTIwMTAtMDctMTYgIExlYW5kcm8gUGVyZWlyYSAgPGxlYW5kcm9A
cHJvZnVzaW9uLm1vYmk+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgR3VzdGF2byBOb3JvbmhhIFNp
bHZhLgotICAgICAgICAKLSAgICAgICAgQ3JlYXRpbmcgQ2hhbmdlTG9nIGZvciB0aGUgRUZMIHBv
cnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9FV2ViS2l0Q29uZmlnLmNtYWtlLmlu
IGIvU291cmNlL1dlYktpdC9lZmwvRVdlYktpdENvbmZpZy5jbWFrZS5pbgpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggYzU2NTg4Mi4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Vm
bC9FV2ViS2l0Q29uZmlnLmNtYWtlLmluCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAot
c2V0KEVXRUJLSVRfRk9VTkQgVFJVRSkKLQotc2V0KEVXRUJLSVRfVkVSU0lPTl9NQUpPUiBAUFJP
SkVDVF9WRVJTSU9OX01BSk9SQCkKLXNldChFV0VCS0lUX1ZFUlNJT05fTUlOT1IgQFBST0pFQ1Rf
VkVSU0lPTl9NSU5PUkApCi1zZXQoRVdFQktJVF9WRVJTSU9OIEBQUk9KRUNUX1ZFUlNJT05AKQot
Ci1zZXQoX1NIQVJFRF9DT1JFIEBTSEFSRURfQ09SRUApCi1zZXQoX2xpYmRpciAiQExJQl9JTlNU
QUxMX0RJUkAiKQotCi1maW5kX3BhdGgoRVdFQktJVF9JTkNMVURFX0RJUiBFV2ViS2l0LmggSElO
VFMgIkBDTUFLRV9JTlNUQUxMX1BSRUZJWEAvaW5jbHVkZS9AV2ViS2l0X09VVFBVVF9OQU1FQC1A
UFJPSkVDVF9WRVJTSU9OX01BSk9SQCIpCi1maW5kX2xpYnJhcnkoRVdFQktJVF9MSUJSQVJZIE5B
TUVTIGV3ZWJraXQgSElOVFMgJHtfbGliZGlyfSkKLQotaWYgKF9TSEFSRURfQ09SRSkKLSAgICBm
aW5kX2xpYnJhcnkoX3dlYmNvcmVfbGlicmFyeSBOQU1FUyB3ZWJjb3JlX2VmbCBISU5UUyAke19s
aWJkaXJ9KQotICAgIGZpbmRfbGlicmFyeShfamF2YXNjcmlwdF9saWJyYXJ5IE5BTUVTIGphdmFz
Y3JpcHRjb3JlX2VmbCBISU5UUyAke19saWJkaXJ9KQotCi0gICAgbGlzdChBUFBFTkQgRVdFQktJ
VF9MSUJSQVJZICR7X3dlYmNvcmVfbGlicmFyeX0gJHtfamF2YXNjcmlwdF9saWJyYXJ5fSkKLWVu
ZGlmICgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9FV2ViS2l0Q29uZmlnVmVyc2lv
bi5jbWFrZS5pbiBiL1NvdXJjZS9XZWJLaXQvZWZsL0VXZWJLaXRDb25maWdWZXJzaW9uLmNtYWtl
LmluCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NDczMzg4Li4wMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJLaXQvZWZsL0VXZWJLaXRDb25maWdWZXJzaW9uLmNtYWtlLmluCisrKyAvZGV2
L251bGwKQEAgLTEsMTEgKzAsMCBAQAotc2V0KFBBQ0tBR0VfVkVSU0lPTiAiQFBST0pFQ1RfVkVS
U0lPTkAiKQotCi0jIENoZWNrIHdoZXRoZXIgdGhlIHJlcXVlc3RlZCBQQUNLQUdFX0ZJTkRfVkVS
U0lPTiBpcyBjb21wYXRpYmxlCi1pZiAoIiR7UEFDS0FHRV9WRVJTSU9OfSIgVkVSU0lPTl9MRVNT
ICIke1BBQ0tBR0VfRklORF9WRVJTSU9OfSIpCi0gICBzZXQoUEFDS0FHRV9WRVJTSU9OX0NPTVBB
VElCTEUgRkFMU0UpCi1lbHNlICgpCi0gICBzZXQoUEFDS0FHRV9WRVJTSU9OX0NPTVBBVElCTEUg
VFJVRSkKLSAgIGlmICgiJHtQQUNLQUdFX1ZFUlNJT059IiBWRVJTSU9OX0VRVUFMICIke1BBQ0tB
R0VfRklORF9WRVJTSU9OfSIpCi0gICAgICBzZXQoUEFDS0FHRV9WRVJTSU9OX0VYQUNUIFRSVUUp
Ci0gICBlbmRpZiAoKQotZW5kaWYgKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dl
YkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0RWZsLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0
RWZsLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDFkMmQ1NS4uMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0
aW5nQ29udGV4dEVmbC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMzcgKzAsMCBAQAotLyoKLSAg
ICBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcwotCi0gICAgVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICAg
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCi0gICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCi0gICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAgICBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQotICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgotCi0gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gICAgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKLSAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLQotI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKLQotI2luY2x1ZGUgIkFjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0RWZsLmgiCi0jaW5jbHVkZSAiQ2Fpcm9VdGlsaXRpZXMu
aCIKLSNpbmNsdWRlICJDYWlyb1V0aWxpdGllc0VmbC5oIgotI2luY2x1ZGUgIkZyYW1lVmlldy5o
IgotI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgiCi0jaW5jbHVkZSAiTWFp
bkZyYW1lLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0Q2Fpcm8uaCIKLSNpbmNsdWRlICJU
ZXh0dXJlTWFwcGVyR0wuaCIKLSNpbmNsdWRlICJUZXh0dXJlTWFwcGVyTGF5ZXIuaCIKLSNpbmNs
dWRlICJld2tfcHJpdmF0ZS5oIgotI2luY2x1ZGUgImV3a192aWV3X3ByaXZhdGUuaCIKLQotY29u
c3QgZG91YmxlIGNvbXBvc2l0aW5nRnJhbWVSYXRlID0gNjA7Ci0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OkFjY2VsZXJhdGVkQ29tcG9zaXRp
bmdDb250ZXh0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFdmFzX09iamVjdCogY29tcG9zaXRpbmdP
YmplY3QpCi0gICAgOiBtX3ZpZXcoZXdrVmlldykKLSAgICAsIG1fY29tcG9zaXRpbmdPYmplY3Qo
Y29tcG9zaXRpbmdPYmplY3QpCi0gICAgLCBtX3Jvb3RMYXllcihudWxscHRyKQotICAgICwgbV9z
eW5jVGltZXIodGhpcywgJkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjpzeW5jTGF5ZXJz
KQotICAgICwgbV9pc0FjY2VsZXJhdGVkKHRydWUpCi17Ci0gICAgQVNTRVJUKG1fdmlldyk7Ci0g
ICAgQVNTRVJUKG1fY29tcG9zaXRpbmdPYmplY3QpOwotCi0gICAgRXZhcyogZXZhcyA9IGV2YXNf
b2JqZWN0X2V2YXNfZ2V0KG1fdmlldyk7Ci0gICAgY29uc3QgY2hhciogZW5naW5lID0gZWNvcmVf
ZXZhc19lbmdpbmVfbmFtZV9nZXQoZWNvcmVfZXZhc19lY29yZV9ldmFzX2dldChldmFzKSk7Ci0g
ICAgaWYgKCFzdHJuY21wKGVuZ2luZSwgIm9wZW5nbF94MTEiLCBzdHJsZW4oIm9wZW5nbF94MTEi
KSkpIHsKLSAgICAgICAgbV9ldmFzR0wgPSBFZmxVbmlxdWVQdHI8RXZhc19HTD4oZXZhc19nbF9u
ZXcoZXZhc19vYmplY3RfZXZhc19nZXQobV92aWV3KSkpOwotICAgICAgICBpZiAobV9ldmFzR0wp
Ci0gICAgICAgICAgICBtX2V2YXNHTENvbnRleHQgPSBFdmFzR0xDb250ZXh0OjpjcmVhdGUobV9l
dmFzR0wuZ2V0KCkpOwotICAgIH0KLQotICAgIGlmIChtX2V2YXNHTENvbnRleHQpIHsKLSAgICAg
ICAgbV90ZXh0dXJlTWFwcGVyID0gVGV4dHVyZU1hcHBlcjo6Y3JlYXRlKFRleHR1cmVNYXBwZXI6
Ok9wZW5HTE1vZGUpOwotICAgICAgICBzdGF0aWNfY2FzdDxUZXh0dXJlTWFwcGVyR0wqPihtX3Rl
eHR1cmVNYXBwZXIuZ2V0KCkpLT5zZXRFbmFibGVFZGdlRGlzdGFuY2VBbnRpYWxpYXNpbmcodHJ1
ZSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgbV90ZXh0dXJlTWFwcGVyID0gVGV4dHVyZU1hcHBl
cjo6Y3JlYXRlKFRleHR1cmVNYXBwZXI6OlNvZnR3YXJlTW9kZSk7Ci0gICAgICAgIG1faXNBY2Nl
bGVyYXRlZCA9IGZhbHNlOwotICAgIH0KLX0KLQotQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRl
eHQ6On5BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCgpCi17Ci19Ci0KLXZvaWQgQWNjZWxl
cmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OnN5bmNMYXllcnMoVGltZXI8QWNjZWxlcmF0ZWRDb21w
b3NpdGluZ0NvbnRleHQ+KikKLXsKLSAgICBld2tfdmlld19tYXJrX2Zvcl9zeW5jKG1fdmlldyk7
Ci19Ci0KLXZvaWQgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OnJlc2l6ZShjb25zdCBJ
bnRTaXplJiBzaXplKQotewotICAgIGlmIChtX3ZpZXdTaXplID09IHNpemUpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIG1fdmlld1NpemUgPSBzaXplOwotCi0gICAgaWYgKCFtX2lzQWNjZWxlcmF0
ZWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIHN0YXRpYyBFdmFzX0dMX0NvbmZpZyBldmFzR0xD
b25maWcgPSB7Ci0gICAgICAgIEVWQVNfR0xfUkdCQV84ODg4LAotICAgICAgICBFVkFTX0dMX0RF
UFRIX0JJVF84LAotICAgICAgICBFVkFTX0dMX1NURU5DSUxfTk9ORSwKLSAgICAgICAgRVZBU19H
TF9PUFRJT05TX05PTkUsCi0gICAgICAgIEVWQVNfR0xfTVVMVElTQU1QTEVfTk9ORQotICAgIH07
Ci0KLSAgICBtX2V2YXNHTFN1cmZhY2UgPSBFdmFzR0xTdXJmYWNlOjpjcmVhdGUobV9ldmFzR0wu
Z2V0KCksICZldmFzR0xDb25maWcsIHNpemUpOwotICAgIGlmICghbV9ldmFzR0xTdXJmYWNlKSB7
Ci0gICAgICAgIEVSUigiRmFpbGVkIHRvIGNyZWF0ZSBhIEV2YXNHTFN1cmZhY2UuIik7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBFdmFzX05hdGl2ZV9TdXJmYWNlIG5hdGl2ZVN1cmZh
Y2U7Ci0gICAgZXZhc19nbF9uYXRpdmVfc3VyZmFjZV9nZXQobV9ldmFzR0wuZ2V0KCksIG1fZXZh
c0dMU3VyZmFjZS0+c3VyZmFjZSgpLCAmbmF0aXZlU3VyZmFjZSk7Ci0gICAgZXZhc19vYmplY3Rf
aW1hZ2VfbmF0aXZlX3N1cmZhY2Vfc2V0KG1fY29tcG9zaXRpbmdPYmplY3QsICZuYXRpdmVTdXJm
YWNlKTsKLQotICAgIGlmICghZXZhc19nbF9tYWtlX2N1cnJlbnQobV9ldmFzR0wuZ2V0KCksIG1f
ZXZhc0dMU3VyZmFjZS0+c3VyZmFjZSgpLCBtX2V2YXNHTENvbnRleHQtPmNvbnRleHQoKSkpIHsK
LSAgICAgICAgRVJSKCJGYWlsZWQgdG8gZXZhc19nbF9tYWtlX2N1cnJlbnQuIik7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBldmFzX2dsX2FwaV9nZXQobV9ldmFzR0wuZ2V0KCkpLT5n
bFZpZXdwb3J0KDAsIDAsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7Ci0gICAgZXZhc19n
bF9hcGlfZ2V0KG1fZXZhc0dMLmdldCgpKS0+Z2xDbGVhckNvbG9yKDEsIDEsIDEsIDEpOwotICAg
IGV2YXNfZ2xfYXBpX2dldChtX2V2YXNHTC5nZXQoKSktPmdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVS
X0JJVCk7Ci19Ci0KLXZvaWQgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OmZsdXNoQW5k
UmVuZGVyTGF5ZXJzKCkKLXsKLSAgICBNYWluRnJhbWUmIGZyYW1lID0gRVdLUHJpdmF0ZTo6Y29y
ZVBhZ2UobV92aWV3KS0+bWFpbkZyYW1lKCk7Ci0gICAgaWYgKCFmcmFtZS5jb250ZW50UmVuZGVy
ZXIoKSB8fCAhZnJhbWUudmlldygpKQotICAgICAgICByZXR1cm47Ci0gICAgZnJhbWUudmlldygp
LT51cGRhdGVMYXlvdXRBbmRTdHlsZUlmTmVlZGVkUmVjdXJzaXZlKCk7Ci0KLSAgICBpZiAoIWZs
dXNoUGVuZGluZ0xheWVyQ2hhbmdlcygpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAobV9p
c0FjY2VsZXJhdGVkKQotICAgICAgICBwYWludFRvQ3VycmVudEdMQ29udGV4dCgpOwotICAgIGVs
c2UKLSAgICAgICAgcGFpbnRUb0dyYXBoaWNzQ29udGV4dCgpOwotfQotCi1ib29sIEFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdDb250ZXh0OjpmbHVzaFBlbmRpbmdMYXllckNoYW5nZXMoKQotewotICAg
IGlmIChtX3Jvb3RMYXllcikKLSAgICAgICAgbV9yb290TGF5ZXItPmZsdXNoQ29tcG9zaXRpbmdT
dGF0ZUZvclRoaXNMYXllck9ubHkoKTsKLSAgICByZXR1cm4gRVdLUHJpdmF0ZTo6Y29yZVBhZ2Uo
bV92aWV3KS0+bWFpbkZyYW1lKCkudmlldygpLT5mbHVzaENvbXBvc2l0aW5nU3RhdGVJbmNsdWRp
bmdTdWJmcmFtZXMoKTsKLX0KLQotdm9pZCBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6
cGFpbnRUb0dyYXBoaWNzQ29udGV4dCgpCi17Ci0gICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4g
c3VyZmFjZSA9IGNyZWF0ZVN1cmZhY2VGb3JJbWFnZShtX2NvbXBvc2l0aW5nT2JqZWN0KTsKLSAg
ICBpZiAoIXN1cmZhY2UpCi0gICAgICAgIHJldHVybjsKLQotICAgIFBsYXRmb3JtQ29udGV4dENh
aXJvIHBsYXRmb3JtQ29udGV4dChjYWlyb19jcmVhdGUoc3VyZmFjZS5nZXQoKSkpOwotICAgIEdy
YXBoaWNzQ29udGV4dCBjb250ZXh0KCZwbGF0Zm9ybUNvbnRleHQpOwotICAgIG1fdGV4dHVyZU1h
cHBlci0+c2V0R3JhcGhpY3NDb250ZXh0KCZjb250ZXh0KTsKLQotICAgIGNvbXBvc2l0ZUxheWVy
cygpOwotfQotCi12b2lkIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjpwYWludFRvQ3Vy
cmVudEdMQ29udGV4dCgpCi17Ci0gICAgaWYgKCFldmFzX2dsX21ha2VfY3VycmVudChtX2V2YXNH
TC5nZXQoKSwgbV9ldmFzR0xTdXJmYWNlLT5zdXJmYWNlKCksIG1fZXZhc0dMQ29udGV4dC0+Y29u
dGV4dCgpKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZXZhc19nbF9hcGlfZ2V0KG1fZXZhc0dM
LmdldCgpKS0+Z2xWaWV3cG9ydCgwLCAwLCBtX3ZpZXdTaXplLndpZHRoKCksIG1fdmlld1NpemUu
aGVpZ2h0KCkpOwotICAgIGV2YXNfZ2xfYXBpX2dldChtX2V2YXNHTC5nZXQoKSktPmdsQ2xlYXIo
R0xfQ09MT1JfQlVGRkVSX0JJVCk7Ci0KLSAgICBjb21wb3NpdGVMYXllcnMoKTsKLX0KLQotdm9p
ZCBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6Y29tcG9zaXRlTGF5ZXJzKCkKLXsKLSAg
ICBUZXh0dXJlTWFwcGVyTGF5ZXIqIGN1cnJlbnRSb290TGF5ZXIgPSB0b1RleHR1cmVNYXBwZXJM
YXllcihtX3Jvb3RMYXllcik7Ci0gICAgaWYgKCFjdXJyZW50Um9vdExheWVyKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBjdXJyZW50Um9vdExheWVyLT5zZXRUZXh0dXJlTWFwcGVyKG1fdGV4dHVy
ZU1hcHBlci5nZXQoKSk7Ci0gICAgY3VycmVudFJvb3RMYXllci0+YXBwbHlBbmltYXRpb25zUmVj
dXJzaXZlbHkoKTsKLQotICAgIG1fdGV4dHVyZU1hcHBlci0+YmVnaW5QYWludGluZygpOwotICAg
IG1fdGV4dHVyZU1hcHBlci0+YmVnaW5DbGlwKFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIEZsb2F0
UmVjdChGbG9hdFBvaW50KCksIG1fdmlld1NpemUpKTsKLSAgICBjdXJyZW50Um9vdExheWVyLT5w
YWludCgpOwotICAgIG1fZnBzQ291bnRlci51cGRhdGVGUFNBbmREaXNwbGF5KG1fdGV4dHVyZU1h
cHBlci5nZXQoKSk7Ci0gICAgbV90ZXh0dXJlTWFwcGVyLT5lbmRDbGlwKCk7Ci0gICAgbV90ZXh0
dXJlTWFwcGVyLT5lbmRQYWludGluZygpOwotCi0gICAgaWYgKGN1cnJlbnRSb290TGF5ZXItPmRl
c2NlbmRhbnRzT3JTZWxmSGF2ZVJ1bm5pbmdBbmltYXRpb25zKCkgJiYgIW1fc3luY1RpbWVyLmlz
QWN0aXZlKCkpCi0gICAgICAgIG1fc3luY1RpbWVyLnN0YXJ0T25lU2hvdCgxIC8gY29tcG9zaXRp
bmdGcmFtZVJhdGUpOwotfQotCi12b2lkIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0Ojpz
ZXRSb290R3JhcGhpY3NMYXllcihHcmFwaGljc0xheWVyKiByb290TGF5ZXIpCi17Ci0gICAgbV9y
b290TGF5ZXIgPSByb290TGF5ZXI7Ci0KLSAgICBpZiAoIW1fc3luY1RpbWVyLmlzQWN0aXZlKCkp
Ci0gICAgICAgIG1fc3luY1RpbWVyLnN0YXJ0T25lU2hvdCgwKTsKLX0KLQotdm9pZCBBY2NlbGVy
YXRlZENvbXBvc2l0aW5nQ29udGV4dDo6ZXh0cmFjdEltYWdlRGF0YShFdmFzX09iamVjdCogYnVm
ZmVyLCBjb25zdCBJbnRSZWN0JiByZWN0KQotewotICAgIEFTU0VSVChidWZmZXIpOwotCi0gICAg
RXZhc19Db29yZCB3aWR0aCwgaGVpZ2h0OwotICAgIGV2YXNfb2JqZWN0X2ltYWdlX3NpemVfZ2V0
KGJ1ZmZlciwgJndpZHRoLCAmaGVpZ2h0KTsKLQotICAgIEFTU0VSVChyZWN0LndpZHRoKCkgPT0g
d2lkdGgpOwotICAgIEFTU0VSVChyZWN0LmhlaWdodCgpID09IGhlaWdodCk7Ci0KLSAgICBSZWZQ
dHI8Y2Fpcm9fc3VyZmFjZV90PiBpbWFnZURhdGE7Ci0gICAgaWYgKG1faXNBY2NlbGVyYXRlZCkg
ewotICAgICAgICBpbWFnZURhdGEgPSBnZXRJbWFnZURhdGFHTChyZWN0KTsKLSAgICAgICAgZmxp
cEltYWdlU3VyZmFjZVZlcnRpY2FsbHkoaW1hZ2VEYXRhLmdldCgpKTsKLSAgICB9IGVsc2UKLSAg
ICAgICAgaW1hZ2VEYXRhID0gZ2V0SW1hZ2VEYXRhKHJlY3QpOwotCi0gICAgZXZhc19vYmplY3Rf
aW1hZ2VfZGF0YV9jb3B5X3NldChidWZmZXIsIHN0YXRpY19jYXN0PHZvaWQqPihjYWlyb19pbWFn
ZV9zdXJmYWNlX2dldF9kYXRhKGltYWdlRGF0YS5nZXQoKSkpKTsKLX0KLQotUGFzc1JlZlB0cjxj
YWlyb19zdXJmYWNlX3Q+IEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjpnZXRJbWFnZURh
dGEoY29uc3QgSW50UmVjdCYgcmVjdCkKLXsKLSAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBz
b3VyY2UgPSBjcmVhdGVTdXJmYWNlRm9ySW1hZ2UobV9jb21wb3NpdGluZ09iamVjdCk7Ci0gICAg
ZXZhc19vYmplY3RfaW1hZ2VfZGF0YV9zZXQobV9jb21wb3NpdGluZ09iamVjdCwgc3RhdGljX2Nh
c3Q8dm9pZCo+KGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEoc291cmNlLmdldCgpKSkpOwot
Ci0gICAgaWYgKG1fdmlld1NpemUgPT0gcmVjdC5zaXplKCkpCi0gICAgICAgIHJldHVybiBzb3Vy
Y2UucmVsZWFzZSgpOwotCi0gICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gZGVzdGluYXRpb24g
PSBhZG9wdFJlZihjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZShDQUlST19GT1JNQVRfQVJHQjMy
LCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpKTsKLSAgICBjb3B5UmVjdEZyb21PbmVTdXJm
YWNlVG9Bbm90aGVyKHNvdXJjZS5nZXQoKSwgZGVzdGluYXRpb24uZ2V0KCksIC1JbnRTaXplKHJl
Y3QueCgpLCByZWN0LnkoKSksIEludFJlY3QoSW50UG9pbnQoKSwgcmVjdC5zaXplKCkpLCBJbnRT
aXplKCksIENBSVJPX09QRVJBVE9SX1NPVVJDRSk7Ci0gICAgcmV0dXJuIGRlc3RpbmF0aW9uLnJl
bGVhc2UoKTsKLX0KLQotUGFzc1JlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IEFjY2VsZXJhdGVkQ29t
cG9zaXRpbmdDb250ZXh0OjpnZXRJbWFnZURhdGFHTChjb25zdCBJbnRSZWN0JiByZWN0KQotewot
ICAgIGlmICghZXZhc19nbF9tYWtlX2N1cnJlbnQobV9ldmFzR0wuZ2V0KCksIG1fZXZhc0dMU3Vy
ZmFjZS0+c3VyZmFjZSgpLCBtX2V2YXNHTENvbnRleHQtPmNvbnRleHQoKSkpCi0gICAgICAgIHJl
dHVybiBudWxscHRyOwotCi0gICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gc291cmNlID0gYWRv
cHRSZWYoY2Fpcm9faW1hZ2Vfc3VyZmFjZV9jcmVhdGUoQ0FJUk9fRk9STUFUX0FSR0IzMiwgcmVj
dC53aWR0aCgpLCByZWN0LmhlaWdodCgpKSk7Ci0gICAgdWludDhfdCogc291cmNlUHRyID0gc3Rh
dGljX2Nhc3Q8dWludDhfdCo+KGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEoc291cmNlLmdl
dCgpKSk7Ci0KLSAgICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dDNEID0gc3RhdGljX2Nhc3Q8
VGV4dHVyZU1hcHBlckdMKj4obV90ZXh0dXJlTWFwcGVyLmdldCgpKS0+Z3JhcGhpY3NDb250ZXh0
M0QoKTsKLSAgICBjb250ZXh0M0QtPnJlYWRQaXhlbHMocmVjdC54KCksIHJlY3QueSgpLCByZWN0
LndpZHRoKCksIHJlY3QuaGVpZ2h0KCksIEdyYXBoaWNzQ29udGV4dDNEOjpCR1JBLCBHcmFwaGlj
c0NvbnRleHQzRDo6VU5TSUdORURfQllURSwgc291cmNlUHRyKTsKLSAgICByZXR1cm4gc291cmNl
LnJlbGVhc2UoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gVVNF
KFRFWFRVUkVfTUFQUEVSX0dMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29y
ZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHRFZmwuaCBiL1NvdXJjZS9XZWJL
aXQvZWZsL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0RWZsLmgK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE4OTk2YTIuLjAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRl
eHRFZmwuaAorKysgL2Rldi9udWxsCkBAIC0xLDgxICswLDAgQEAKLS8qCi0gICAgQ29weXJpZ2h0
IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKLQotICAgIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAgICBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICAgIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
cgotICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KLQotICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gICAgTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAg
ICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLQotICAg
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKLSAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICAgIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gICAg
Qm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0qLwotCi0jaWZuZGVmIEFjY2VsZXJhdGVkQ29t
cG9zaXRpbmdDb250ZXh0RWZsX2gKLSNkZWZpbmUgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRl
eHRFZmxfaAotCi0jaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQotI2luY2x1ZGUgIkV2YXNHTENv
bnRleHQuaCIKLSNpbmNsdWRlICJFdmFzR0xTdXJmYWNlLmgiCi0jaW5jbHVkZSAiVGV4dHVyZU1h
cHBlckZQU0NvdW50ZXIuaCIKLSNpbmNsdWRlICJUaW1lci5oIgotI2luY2x1ZGUgPHd0Zi9Ob25j
b3B5YWJsZS5oPgotI2luY2x1ZGUgPHd0Zi9lZmwvVW5pcXVlUHRyRWZsLmg+Ci0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotY2xhc3MgR3JhcGhpY3NMYXllcjsKLWNsYXNzIEhvc3RXaW5kb3c7Ci1j
bGFzcyBUZXh0dXJlTWFwcGVyOwotY2xhc3MgVGV4dHVyZU1hcHBlckxheWVyOwotCi1jbGFzcyBB
Y2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQpOwotcHVibGljOgotICAgIEFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdDb250ZXh0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFdmFzX09iamVjdCogY29t
cG9zaXRpbmdPYmplY3QpOwotICAgIH5BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCgpOwot
Ci0gICAgdm9pZCBzZXRSb290R3JhcGhpY3NMYXllcihHcmFwaGljc0xheWVyKiByb290TGF5ZXIp
OwotICAgIHZvaWQgcmVzaXplKGNvbnN0IEludFNpemUmKTsKLSAgICB2b2lkIGZsdXNoQW5kUmVu
ZGVyTGF5ZXJzKCk7Ci0KLSAgICB2b2lkIGV4dHJhY3RJbWFnZURhdGEoRXZhc19PYmplY3QqLCBj
b25zdCBJbnRSZWN0Jik7Ci0KLXByaXZhdGU6Ci0gICAgdm9pZCBwYWludFRvR3JhcGhpY3NDb250
ZXh0KCk7Ci0gICAgdm9pZCBwYWludFRvQ3VycmVudEdMQ29udGV4dCgpOwotICAgIHZvaWQgY29t
cG9zaXRlTGF5ZXJzKCk7Ci0KLSAgICBib29sIGZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlcygpOwot
ICAgIHZvaWQgc3luY0xheWVycyhUaW1lcjxBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dD4q
KTsKLQotICAgIFBhc3NSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBnZXRJbWFnZURhdGEoY29uc3Qg
SW50UmVjdCYpOwotICAgIFBhc3NSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBnZXRJbWFnZURhdGFH
TChjb25zdCBJbnRSZWN0Jik7Ci0KLSAgICBFdmFzX09iamVjdCogbV92aWV3OwotICAgIEV2YXNf
T2JqZWN0KiBtX2NvbXBvc2l0aW5nT2JqZWN0OwotCi0gICAgc3RkOjp1bmlxdWVfcHRyPFRleHR1
cmVNYXBwZXI+IG1fdGV4dHVyZU1hcHBlcjsKLSAgICBHcmFwaGljc0xheWVyKiBtX3Jvb3RMYXll
cjsKLSAgICBUaW1lcjxBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dD4gbV9zeW5jVGltZXI7
Ci0KLSAgICBFZmxVbmlxdWVQdHI8RXZhc19HTD4gbV9ldmFzR0w7Ci0gICAgc3RkOjp1bmlxdWVf
cHRyPEV2YXNHTENvbnRleHQ+IG1fZXZhc0dMQ29udGV4dDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
RXZhc0dMU3VyZmFjZT4gbV9ldmFzR0xTdXJmYWNlOwotCi0gICAgVGV4dHVyZU1hcHBlckZQU0Nv
dW50ZXIgbV9mcHNDb3VudGVyOwotCi0gICAgSW50U2l6ZSBtX3ZpZXdTaXplOwotICAgIGJvb2wg
bV9pc0FjY2VsZXJhdGVkOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYg
Ly8gVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQotI2VuZGlmIC8vIEFjY2VsZXJhdGVkQ29tcG9zaXRp
bmdDb250ZXh0RWZsX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBw
b3J0L0JhdHRlcnlDbGllbnRFZmwuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBv
cnQvQmF0dGVyeUNsaWVudEVmbC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNh
MjAyNWUuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQmF0
dGVyeUNsaWVudEVmbC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi0vKgotICog
IENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqICBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
LSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJC
YXR0ZXJ5Q2xpZW50RWZsLmgiCi0KLSNpZiBFTkFCTEUoQkFUVEVSWV9TVEFUVVMpCi0KLSNpbmNs
dWRlICJCYXR0ZXJ5Q29udHJvbGxlci5oIgotI2luY2x1ZGUgImV3a192aWV3X3ByaXZhdGUuaCIK
LQotQmF0dGVyeUNsaWVudEVmbDo6QmF0dGVyeUNsaWVudEVmbChFdmFzX09iamVjdCogdmlldykK
LSAgICA6IG1fdmlldyh2aWV3KQotICAgICwgbV9wcm92aWRlcih0aGlzKQotewotfQotCi1CYXR0
ZXJ5Q2xpZW50RWZsOjp+QmF0dGVyeUNsaWVudEVmbCgpCi17Ci0gICAgbV9wcm92aWRlci5zdG9w
VXBkYXRpbmcoKTsKLX0KLQotdm9pZCBCYXR0ZXJ5Q2xpZW50RWZsOjpzdGFydFVwZGF0aW5nKCkK
LXsKLSAgICBtX3Byb3ZpZGVyLnN0YXJ0VXBkYXRpbmcoKTsKLX0KLQotdm9pZCBCYXR0ZXJ5Q2xp
ZW50RWZsOjpzdG9wVXBkYXRpbmcoKQotewotICAgIG1fcHJvdmlkZXIuc3RvcFVwZGF0aW5nKCk7
Ci19Ci0KLXZvaWQgQmF0dGVyeUNsaWVudEVmbDo6YmF0dGVyeUNvbnRyb2xsZXJEZXN0cm95ZWQo
KQotewotICAgIGRlbGV0ZSB0aGlzOwotfQotCi12b2lkIEJhdHRlcnlDbGllbnRFZmw6OmRpZENo
YW5nZUJhdHRlcnlTdGF0dXMoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQ
dHI8V2ViQ29yZTo6QmF0dGVyeVN0YXR1cz4gc3RhdHVzKQotewotICAgIFdlYkNvcmU6OkJhdHRl
cnlDb250cm9sbGVyOjpmcm9tKEVXS1ByaXZhdGU6OmNvcmVQYWdlKG1fdmlldykpLT5kaWRDaGFu
Z2VCYXR0ZXJ5U3RhdHVzKGV2ZW50VHlwZSwgc3RhdHVzKTsKLX0KLQotI2VuZGlmIC8vIEVOQUJM
RShCQVRURVJZX1NUQVRVUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVT
dXBwb3J0L0JhdHRlcnlDbGllbnRFZmwuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBw
b3J0L0JhdHRlcnlDbGllbnRFZmwuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDEx
YWNjOS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9CYXR0
ZXJ5Q2xpZW50RWZsLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1NiArMCwwIEBACi0vKgotICogIENv
cHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqICBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAq
Ci0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSwgVVNBLgotICovCi0KLSNpZm5kZWYgQmF0dGVyeUNsaWVudEVmbF9oCi0jZGVmaW5l
IEJhdHRlcnlDbGllbnRFZmxfaAotCi0jaWYgRU5BQkxFKEJBVFRFUllfU1RBVFVTKQotCi0jaW5j
bHVkZSAiQmF0dGVyeUNsaWVudC5oIgotI2luY2x1ZGUgIkJhdHRlcnlQcm92aWRlckVmbC5oIgot
I2luY2x1ZGUgIkJhdHRlcnlQcm92aWRlckVmbENsaWVudC5oIgotI2luY2x1ZGUgIkJhdHRlcnlT
dGF0dXMuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci1jbGFzcyBCYXR0ZXJ5Q29udHJvbGxlcjsKLX0KLQotY2xhc3MgQmF0dGVyeUNsaWVudEVm
bCA6IHB1YmxpYyBXZWJDb3JlOjpCYXR0ZXJ5Q2xpZW50LCBwdWJsaWMgV2ViQ29yZTo6QmF0dGVy
eVByb3ZpZGVyRWZsQ2xpZW50IHsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBCYXR0ZXJ5Q2xpZW50
RWZsKEV2YXNfT2JqZWN0KiB2aWV3KTsKLSAgICB2aXJ0dWFsIH5CYXR0ZXJ5Q2xpZW50RWZsKCk7
Ci0KLSAgICAvLyBCYXR0ZXJ5Q2xpZW50IGludGVyZmFjZS4KLSAgICB2aXJ0dWFsIHZvaWQgc3Rh
cnRVcGRhdGluZygpOwotICAgIHZpcnR1YWwgdm9pZCBzdG9wVXBkYXRpbmcoKTsKLSAgICB2aXJ0
dWFsIHZvaWQgYmF0dGVyeUNvbnRyb2xsZXJEZXN0cm95ZWQoKTsKLQotcHJpdmF0ZToKLSAgICAv
LyBCYXR0ZXJ5UHJvdmlkZXJFZmxDbGllbnQgaW50ZXJmYWNlLgotICAgIHZpcnR1YWwgdm9pZCBk
aWRDaGFuZ2VCYXR0ZXJ5U3RhdHVzKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNz
UmVmUHRyPFdlYkNvcmU6OkJhdHRlcnlTdGF0dXM+KTsKLQotICAgIEV2YXNfT2JqZWN0KiBtX3Zp
ZXc7Ci0gICAgV2ViQ29yZTo6QmF0dGVyeVByb3ZpZGVyRWZsIG1fcHJvdmlkZXI7Ci19OwotCi0j
ZW5kaWYgLy8gRU5BQkxFKEJBVFRFUllfU1RBVFVTKQotCi0jZW5kaWYgLy8gQmF0dGVyeUNsaWVu
dEVmbF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJv
bWVDbGllbnRFZmwuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21l
Q2xpZW50RWZsLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjNmMjZhZC4uMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRF
ZmwuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNjI2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDYgWmFjayBSdXNpbiA8emFja0BrZGUub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDA2
IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgg
S2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4KLSAqIENvcHlyaWdodCAoQykgMjAwOCBEaWVnbyBH
b256YWxlegotICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgUHJvRlVTSU9OIGVtYmVkZGVkIHN5
c3RlbXMKLSAqIENvcHlyaWdodCAoQykgMjAwOS0yMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKLSAq
IENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlh
cnkoLWllcykuCi0gKgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IkNocm9tZUNsaWVudEVmbC5oIgotCi0jaW5jbHVkZSAiQXBwbGljYXRpb25DYWNoZVN0b3JhZ2Uu
aCIKLSNpbmNsdWRlICJGaWxlQ2hvb3Nlci5oIgotI2luY2x1ZGUgIkZpbGVJY29uTG9hZGVyLmgi
Ci0jaW5jbHVkZSAiRmxvYXRSZWN0LmgiCi0jaW5jbHVkZSAiRnJhbWUuaCIKLSNpbmNsdWRlICJG
cmFtZUxvYWRlci5oIgotI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50RWZsLmgiCi0jaW5jbHVk
ZSAiSGl0VGVzdFJlc3VsdC5oIgotI2luY2x1ZGUgIkludFJlY3QuaCIKLSNpbmNsdWRlICJVUkwu
aCIKLSNpbmNsdWRlICJOYXZpZ2F0aW9uQWN0aW9uLmgiCi0jaW5jbHVkZSAiTm90SW1wbGVtZW50
ZWQuaCIKLSNpbmNsdWRlICJQb3B1cE1lbnVFZmwuaCIKLSNpbmNsdWRlICJTZWFyY2hQb3B1cE1l
bnVFZmwuaCIKLSNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgotI2luY2x1ZGUgIlZpZXdwb3J0
QXJndW1lbnRzLmgiCi0jaW5jbHVkZSAiV2luZG93RmVhdHVyZXMuaCIKLSNpbmNsdWRlICJld2tf
Y3VzdG9tX2hhbmRsZXJfcHJpdmF0ZS5oIgotI2luY2x1ZGUgImV3a19maWxlX2Nob29zZXJfcHJp
dmF0ZS5oIgotI2luY2x1ZGUgImV3a19mcmFtZV9wcml2YXRlLmgiCi0jaW5jbHVkZSAiZXdrX3By
aXZhdGUuaCIKLSNpbmNsdWRlICJld2tfc2VjdXJpdHlfb3JpZ2luX3ByaXZhdGUuaCIKLSNpbmNs
dWRlICJld2tfdmlld19wcml2YXRlLmgiCi0jaW5jbHVkZSA8RWNvcmVfRXZhcy5oPgotI2luY2x1
ZGUgPEV2YXMuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+Ci0KLSNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxF
KExFR0FDWV9OT1RJRklDQVRJT05TKQotI2luY2x1ZGUgIk5vdGlmaWNhdGlvblByZXNlbnRlckNs
aWVudEVmbC5oIgotI2VuZGlmCi0KLSNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotI2luY2x1ZGUg
IkRhdGFiYXNlRGV0YWlscy5oIgotI2luY2x1ZGUgIkRhdGFiYXNlTWFuYWdlci5oIgotI2VuZGlm
Ci0KLSNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKLSNpbmNsdWRlICJDb2xvckNob29zZXJF
ZmwuaCIKLSNlbmRpZgotCi0jaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQotI2luY2x1ZGUgIlNl
dHRpbmdzLmgiCi0jZW5kaWYKLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLXN0YXRpYyBp
bmxpbmUgRXZhc19PYmplY3QqIGtpdChGcmFtZSogZnJhbWUpCi17Ci0gICAgaWYgKCFmcmFtZSkK
LSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBGcmFtZUxvYWRlckNsaWVudEVmbCYgY2xpZW50ID0g
c3RhdGljX2Nhc3Q8RnJhbWVMb2FkZXJDbGllbnRFZmwmPihmcmFtZS0+bG9hZGVyKCkuY2xpZW50
KCkpOwotICAgIHJldHVybiBjbGllbnQud2ViRnJhbWUoKTsKLX0KLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1DaHJvbWVDbGllbnRFZmw6OkNocm9tZUNsaWVudEVmbChFdmFzX09iamVjdCogdmll
dykKLSAgICA6IG1fdmlldyh2aWV3KQotewotICAgIEFTU0VSVChtX3ZpZXcpOwotfQotCi1DaHJv
bWVDbGllbnRFZmw6On5DaHJvbWVDbGllbnRFZmwoKQotewotfQotCi12b2lkIENocm9tZUNsaWVu
dEVmbDo6Y2hyb21lRGVzdHJveWVkKCkKLXsKLSAgICBkZWxldGUgdGhpczsKLX0KLQotdm9pZCBD
aHJvbWVDbGllbnRFZmw6OmZvY3VzZWRFbGVtZW50Q2hhbmdlZChFbGVtZW50KikKLXsKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIENocm9tZUNsaWVudEVmbDo6Zm9jdXNlZEZyYW1l
Q2hhbmdlZChGcmFtZSopCi17Ci19Ci0KLUZsb2F0UmVjdCBDaHJvbWVDbGllbnRFZmw6OndpbmRv
d1JlY3QoKQotewotICAgIGludCB4LCB5LCB3aWR0aCwgaGVpZ2h0OwotCi0gICAgRWNvcmVfRXZh
cyogZWUgPSBlY29yZV9ldmFzX2Vjb3JlX2V2YXNfZ2V0KGV2YXNfb2JqZWN0X2V2YXNfZ2V0KG1f
dmlldykpOwotICAgIGVjb3JlX2V2YXNfcmVxdWVzdF9nZW9tZXRyeV9nZXQoZWUsICZ4LCAmeSwg
JndpZHRoLCAmaGVpZ2h0KTsKLQotICAgIHJldHVybiBGbG9hdFJlY3QoeCwgeSwgd2lkdGgsIGhl
aWdodCk7Ci19Ci0KLXZvaWQgQ2hyb21lQ2xpZW50RWZsOjpzZXRXaW5kb3dSZWN0KGNvbnN0IEZs
b2F0UmVjdCYgcmVjdCkKLXsKLSAgICBpZiAoIWV3a192aWV3X3NldHRpbmdfZW5hYmxlX2F1dG9f
cmVzaXplX3dpbmRvd19nZXQobV92aWV3KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgRWNvcmVf
RXZhcyogZWUgPSBlY29yZV9ldmFzX2Vjb3JlX2V2YXNfZ2V0KGV2YXNfb2JqZWN0X2V2YXNfZ2V0
KG1fdmlldykpOwotICAgIGVjb3JlX2V2YXNfbW92ZV9yZXNpemUoZWUsIHJlY3QueCgpLCByZWN0
LnkoKSwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKLX0KLQotRmxvYXRSZWN0IENocm9t
ZUNsaWVudEVmbDo6cGFnZVJlY3QoKQotewotICAgIHJldHVybiBld2tfdmlld19wYWdlX3JlY3Rf
Z2V0KG1fdmlldyk7Ci19Ci0KLXZvaWQgQ2hyb21lQ2xpZW50RWZsOjpmb2N1cygpCi17Ci0gICAg
ZXZhc19vYmplY3RfZm9jdXNfc2V0KG1fdmlldywgRUlOQV9UUlVFKTsKLX0KLQotdm9pZCBDaHJv
bWVDbGllbnRFZmw6OnVuZm9jdXMoKQotewotICAgIGV2YXNfb2JqZWN0X2ZvY3VzX3NldChtX3Zp
ZXcsIEVJTkFfRkFMU0UpOwotfQotCi1QYWdlKiBDaHJvbWVDbGllbnRFZmw6OmNyZWF0ZVdpbmRv
dyhGcmFtZSogZnJhbWUsIGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmLCBjb25zdCBXaW5kb3dGZWF0
dXJlcyYgZmVhdHVyZXMsIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mKQotewotI2lmIEVOQUJMRShG
VUxMU0NSRUVOX0FQSSkKLSAgICBpZiAoZnJhbWUtPmRvY3VtZW50KCkgJiYgZnJhbWUtPmRvY3Vt
ZW50KCktPndlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudCgpKQotICAgICAgICBmcmFtZS0+
ZG9jdW1lbnQoKS0+d2Via2l0Q2FuY2VsRnVsbFNjcmVlbigpOwotI2Vsc2UKLSAgICBVTlVTRURf
UEFSQU0oZnJhbWUpOwotI2VuZGlmCi0KLSAgICBFdmFzX09iamVjdCogbmV3VmlldyA9IGV3a192
aWV3X3dpbmRvd19jcmVhdGUobV92aWV3LCBFSU5BX1RSVUUsICZmZWF0dXJlcyk7Ci0gICAgaWYg
KCFuZXdWaWV3KQotICAgICAgICByZXR1cm4gMDsKLQotICAgIHJldHVybiBFV0tQcml2YXRlOjpj
b3JlUGFnZShuZXdWaWV3KTsKLX0KLQotdm9pZCBDaHJvbWVDbGllbnRFZmw6OnNob3coKQotewot
ICAgIGV3a192aWV3X3JlYWR5KG1fdmlldyk7Ci19Ci0KLWJvb2wgQ2hyb21lQ2xpZW50RWZsOjpj
YW5SdW5Nb2RhbCgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gZmFsc2U7
Ci19Ci0KLXZvaWQgQ2hyb21lQ2xpZW50RWZsOjpydW5Nb2RhbCgpCi17Ci0gICAgbm90SW1wbGVt
ZW50ZWQoKTsKLX0KLQotdm9pZCBDaHJvbWVDbGllbnRFZmw6OnNldFRvb2xiYXJzVmlzaWJsZShi
b29sIHZpc2libGUpCi17Ci0gICAgZXdrX3ZpZXdfdG9vbGJhcnNfdmlzaWJsZV9zZXQobV92aWV3
LCB2aXNpYmxlKTsKLX0KLQotYm9vbCBDaHJvbWVDbGllbnRFZmw6OnRvb2xiYXJzVmlzaWJsZSgp
Ci17Ci0gICAgYm9vbCB2aXNpYmxlOwotCi0gICAgZXdrX3ZpZXdfdG9vbGJhcnNfdmlzaWJsZV9n
ZXQobV92aWV3LCAmdmlzaWJsZSk7Ci0gICAgcmV0dXJuIHZpc2libGU7Ci19Ci0KLXZvaWQgQ2hy
b21lQ2xpZW50RWZsOjpzZXRTdGF0dXNiYXJWaXNpYmxlKGJvb2wgdmlzaWJsZSkKLXsKLSAgICBl
d2tfdmlld19zdGF0dXNiYXJfdmlzaWJsZV9zZXQobV92aWV3LCB2aXNpYmxlKTsKLX0KLQotYm9v
bCBDaHJvbWVDbGllbnRFZmw6OnN0YXR1c2JhclZpc2libGUoKQotewotICAgIGJvb2wgdmlzaWJs
ZTsKLQotICAgIGV3a192aWV3X3N0YXR1c2Jhcl92aXNpYmxlX2dldChtX3ZpZXcsICZ2aXNpYmxl
KTsKLSAgICByZXR1cm4gdmlzaWJsZTsKLX0KLQotdm9pZCBDaHJvbWVDbGllbnRFZmw6OnNldFNj
cm9sbGJhcnNWaXNpYmxlKGJvb2wgdmlzaWJsZSkKLXsKLSAgICBld2tfdmlld19zY3JvbGxiYXJz
X3Zpc2libGVfc2V0KG1fdmlldywgdmlzaWJsZSk7Ci19Ci0KLWJvb2wgQ2hyb21lQ2xpZW50RWZs
OjpzY3JvbGxiYXJzVmlzaWJsZSgpCi17Ci0gICAgYm9vbCB2aXNpYmxlOwotCi0gICAgZXdrX3Zp
ZXdfc2Nyb2xsYmFyc192aXNpYmxlX2dldChtX3ZpZXcsICZ2aXNpYmxlKTsKLSAgICByZXR1cm4g
dmlzaWJsZTsKLX0KLQotdm9pZCBDaHJvbWVDbGllbnRFZmw6OnNldE1lbnViYXJWaXNpYmxlKGJv
b2wgdmlzaWJsZSkKLXsKLSAgICBld2tfdmlld19tZW51YmFyX3Zpc2libGVfc2V0KG1fdmlldywg
dmlzaWJsZSk7Ci19Ci0KLWJvb2wgQ2hyb21lQ2xpZW50RWZsOjptZW51YmFyVmlzaWJsZSgpCi17
Ci0gICAgYm9vbCB2aXNpYmxlOwotCi0gICAgZXdrX3ZpZXdfbWVudWJhcl92aXNpYmxlX2dldCht
X3ZpZXcsICZ2aXNpYmxlKTsKLSAgICByZXR1cm4gdmlzaWJsZTsKLX0KLQotdm9pZCBDaHJvbWVD
bGllbnRFZmw6OmNyZWF0ZVNlbGVjdFBvcHVwKFBvcHVwTWVudUNsaWVudCogY2xpZW50LCBpbnQg
c2VsZWN0ZWQsIGNvbnN0IEludFJlY3QmIHJlY3QpCi17Ci0gICAgZXdrX3ZpZXdfcG9wdXBfbmV3
KG1fdmlldywgY2xpZW50LCBzZWxlY3RlZCwgcmVjdCk7Ci19Ci0KLWJvb2wgQ2hyb21lQ2xpZW50
RWZsOjpkZXN0cm95U2VsZWN0UG9wdXAoKQotewotICAgIHJldHVybiBld2tfdmlld19wb3B1cF9k
ZXN0cm95KG1fdmlldyk7Ci19Ci0KLXZvaWQgQ2hyb21lQ2xpZW50RWZsOjpzZXRSZXNpemFibGUo
Ym9vbCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIENocm9tZUNsaWVudEVm
bDo6Y2xvc2VXaW5kb3dTb29uKCkKLXsKLSAgICBld2tfdmlld193aW5kb3dfY2xvc2UobV92aWV3
KTsKLX0KLQotYm9vbCBDaHJvbWVDbGllbnRFZmw6OmNhblRha2VGb2N1cyhGb2N1c0RpcmVjdGlv
biBjb3JlRGlyZWN0aW9uKQotewotICAgIC8vIFRoaXMgaXMgY2FsbGVkIHdoZW4gY3ljbGluZyB0
aHJvdWdoIGxpbmtzL2ZvY3VzYWJsZSBvYmplY3RzIGFuZCB3ZQotICAgIC8vIHJlYWNoIHRoZSBs
YXN0IGZvY3VzYWJsZSBvYmplY3QuCi0gICAgQVNTRVJUKGNvcmVEaXJlY3Rpb24gPT0gRm9jdXNE
aXJlY3Rpb25Gb3J3YXJkIHx8IGNvcmVEaXJlY3Rpb24gPT0gRm9jdXNEaXJlY3Rpb25CYWNrd2Fy
ZCk7Ci0KLSAgICBFd2tfRm9jdXNfRGlyZWN0aW9uIGRpcmVjdGlvbiA9IHN0YXRpY19jYXN0PEV3
a19Gb2N1c19EaXJlY3Rpb24+KGNvcmVEaXJlY3Rpb24pOwotCi0gICAgcmV0dXJuICFld2tfdmll
d19mb2N1c19jYW5fY3ljbGUobV92aWV3LCBkaXJlY3Rpb24pOwotfQotCi12b2lkIENocm9tZUNs
aWVudEVmbDo6dGFrZUZvY3VzKEZvY3VzRGlyZWN0aW9uKQotewotICAgIHVuZm9jdXMoKTsKLX0K
LQotYm9vbCBDaHJvbWVDbGllbnRFZmw6OmNhblJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCgp
Ci17Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgQ2hyb21lQ2xpZW50RWZsOjpydW5CZWZv
cmVVbmxvYWRDb25maXJtUGFuZWwoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBGcmFtZSogZnJhbWUp
Ci17Ci0gICAgcmV0dXJuIGV3a192aWV3X3J1bl9iZWZvcmVfdW5sb2FkX2NvbmZpcm0obV92aWV3
LCBraXQoZnJhbWUpLCBtZXNzYWdlLnV0ZjgoKS5kYXRhKCkpOwotfQotCi12b2lkIENocm9tZUNs
aWVudEVmbDo6YWRkTWVzc2FnZVRvQ29uc29sZShNZXNzYWdlU291cmNlLCBNZXNzYWdlTGV2ZWws
IGNvbnN0IFN0cmluZyYgbWVzc2FnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGxpbmVOdW1iZXIsIHVuc2lnbmVkIGNvbHVtbk51bWJlciwgY29u
c3QgU3RyaW5nJiBzb3VyY2VJRCkKLXsKLSAgICBVTlVTRURfUEFSQU0oY29sdW1uTnVtYmVyKTsK
LSAgICBld2tfdmlld19hZGRfY29uc29sZV9tZXNzYWdlKG1fdmlldywgbWVzc2FnZS51dGY4KCku
ZGF0YSgpLCBsaW5lTnVtYmVyLCBzb3VyY2VJRC51dGY4KCkuZGF0YSgpKTsKLX0KLQotdm9pZCBD
aHJvbWVDbGllbnRFZmw6OnJ1bkphdmFTY3JpcHRBbGVydChGcmFtZSogZnJhbWUsIGNvbnN0IFN0
cmluZyYgbWVzc2FnZSkKLXsKLSAgICBld2tfdmlld19ydW5famF2YXNjcmlwdF9hbGVydChtX3Zp
ZXcsIGtpdChmcmFtZSksIG1lc3NhZ2UudXRmOCgpLmRhdGEoKSk7Ci19Ci0KLWJvb2wgQ2hyb21l
Q2xpZW50RWZsOjpydW5KYXZhU2NyaXB0Q29uZmlybShGcmFtZSogZnJhbWUsIGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSkKLXsKLSAgICByZXR1cm4gZXdrX3ZpZXdfcnVuX2phdmFzY3JpcHRfY29uZmly
bShtX3ZpZXcsIGtpdChmcmFtZSksIG1lc3NhZ2UudXRmOCgpLmRhdGEoKSk7Ci19Ci0KLWJvb2wg
Q2hyb21lQ2xpZW50RWZsOjpydW5KYXZhU2NyaXB0UHJvbXB0KEZyYW1lKiBmcmFtZSwgY29uc3Qg
U3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlZmF1bHRWYWx1ZSwgU3RyaW5nJiByZXN1
bHQpCi17Ci0gICAgY29uc3QgY2hhciogdmFsdWUgPSAwOwotICAgIGV3a192aWV3X3J1bl9qYXZh
c2NyaXB0X3Byb21wdChtX3ZpZXcsIGtpdChmcmFtZSksIG1lc3NhZ2UudXRmOCgpLmRhdGEoKSwg
ZGVmYXVsdFZhbHVlLnV0ZjgoKS5kYXRhKCksICZ2YWx1ZSk7Ci0gICAgaWYgKHZhbHVlKSB7Ci0g
ICAgICAgIHJlc3VsdCA9IFN0cmluZzo6ZnJvbVVURjgodmFsdWUpOwotICAgICAgICBlaW5hX3N0
cmluZ3NoYXJlX2RlbCh2YWx1ZSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICBy
ZXR1cm4gZmFsc2U7Ci19Ci0KLXZvaWQgQ2hyb21lQ2xpZW50RWZsOjpzZXRTdGF0dXNiYXJUZXh0
KGNvbnN0IFN0cmluZyYgc3RyaW5nKQotewotICAgIGV3a192aWV3X3N0YXR1c2Jhcl90ZXh0X3Nl
dChtX3ZpZXcsIHN0cmluZy51dGY4KCkuZGF0YSgpKTsKLX0KLQotYm9vbCBDaHJvbWVDbGllbnRF
Zmw6OnNob3VsZEludGVycnVwdEphdmFTY3JpcHQoKQotewotICAgIHJldHVybiBld2tfdmlld19z
aG91bGRfaW50ZXJydXB0X2phdmFzY3JpcHQobV92aWV3KTsKLX0KLQotS2V5Ym9hcmRVSU1vZGUg
Q2hyb21lQ2xpZW50RWZsOjprZXlib2FyZFVJTW9kZSgpCi17Ci0gICAgcmV0dXJuIGV3a192aWV3
X3NldHRpbmdfaW5jbHVkZV9saW5rc19pbl9mb2N1c19jaGFpbl9nZXQobV92aWV3KSA/IEtleWJv
YXJkQWNjZXNzVGFic1RvTGlua3MgOiBLZXlib2FyZEFjY2Vzc0RlZmF1bHQ7Ci19Ci0KLUludFJl
Y3QgQ2hyb21lQ2xpZW50RWZsOjp3aW5kb3dSZXNpemVyUmVjdCgpIGNvbnN0Ci17Ci0gICAgbm90
SW1wbGVtZW50ZWQoKTsKLSAgICAvLyBJbXBsZW1lbnRpbmcgdGhpcyBmdW5jdGlvbiB3aWxsIG1h
a2UgcmVwYWludCBiZWluZwotICAgIC8vIGNhbGxlZCBkdXJpbmcgcmVzaXplLCBidXQgYXMgdGhp
cyB3aWxsIGJlIGRvbmUgd2l0aAotICAgIC8vIGEgbWlub3IgZGVsYXkgaXQgYWRkcyBhIHdlaXJk
ICJmaWxsaW5nIiBlZmZlY3QgZHVlCi0gICAgLy8gdG8gdXMgdXNpbmcgYW4gZXZhcyBpbWFnZSBm
b3Igc2hvd2luZyB0aGUgY2Fpcm8KLSAgICAvLyBjb250ZXh0LiBTbyBpbnN0ZWFkIG9mIGltcGxl
bWVudGluZyB0aGlzIGZ1bmN0aW9uCi0gICAgLy8gd2UgY2FsbCBwYWludCBkaXJlY3RseSBkdXJp
bmcgcmVzaXplIHdpdGgKLSAgICAvLyB0aGUgbmV3IG9iamVjdCBzaXplIGFzIGl0cyBhcmd1bWVu
dC4KLSAgICByZXR1cm4gSW50UmVjdCgpOwotfQotCi12b2lkIENocm9tZUNsaWVudEVmbDo6Y29u
dGVudHNTaXplQ2hhbmdlZChGcmFtZSogZnJhbWUsIGNvbnN0IEludFNpemUmIHNpemUpIGNvbnN0
Ci17Ci0gICAgZXdrX2ZyYW1lX2NvbnRlbnRzX3NpemVfY2hhbmdlZChraXQoZnJhbWUpLCBzaXpl
LndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOwotICAgIGlmIChld2tfdmlld19mcmFtZV9tYWluX2dl
dChtX3ZpZXcpID09IGtpdChmcmFtZSkpCi0gICAgICAgIGV3a192aWV3X2NvbnRlbnRzX3NpemVf
Y2hhbmdlZChtX3ZpZXcsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7Ci19Ci0KLUludFJl
Y3QgQ2hyb21lQ2xpZW50RWZsOjpyb290Vmlld1RvU2NyZWVuKGNvbnN0IEludFJlY3QmIHJlY3Qp
IGNvbnN0Ci17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gcmVjdDsKLX0KLQot
SW50UG9pbnQgQ2hyb21lQ2xpZW50RWZsOjpzY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0IEludFBvaW50
JiBwb2ludCkgY29uc3QKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBwb2lu
dDsKLX0KLQotUGxhdGZvcm1QYWdlQ2xpZW50IENocm9tZUNsaWVudEVmbDo6cGxhdGZvcm1QYWdl
Q2xpZW50KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV92aWV3OwotfQotCi12b2lkIENocm9tZUNs
aWVudEVmbDo6c2Nyb2xsYmFyc01vZGVEaWRDaGFuZ2UoKSBjb25zdAotewotfQotCi12b2lkIENo
cm9tZUNsaWVudEVmbDo6bW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoY29uc3QgSGl0VGVzdFJlc3Vs
dCYgaGl0LCB1bnNpZ25lZCAvKm1vZGlmaWVyRmxhZ3MqLykKLXsKLSAgICAvLyBGSVhNRSwgY29t
cGFyZSB3aXRoIG9sZCBsaW5rLCBsb29rIGF0IFF0IGltcGwuCi0gICAgYm9vbCBpc0xpbmsgPSBo
aXQuaXNMaXZlTGluaygpOwotICAgIGlmIChpc0xpbmspIHsKLSAgICAgICAgVVJMIHVybCA9IGhp
dC5hYnNvbHV0ZUxpbmtVUkwoKTsKLSAgICAgICAgaWYgKCF1cmwuaXNFbXB0eSgpICYmIHVybCAh
PSBtX2hvdmVyZWRMaW5rVVJMKSB7Ci0gICAgICAgICAgICBjb25zdCBjaGFyKiBsaW5rWzJdOwot
ICAgICAgICAgICAgVGV4dERpcmVjdGlvbiBkaXI7Ci0gICAgICAgICAgICBDU3RyaW5nIHVybFN0
ciA9IHVybC5zdHJpbmcoKS51dGY4KCk7Ci0gICAgICAgICAgICBDU3RyaW5nIHRpdGxlU3RyID0g
aGl0LnRpdGxlKGRpcikudXRmOCgpOwotICAgICAgICAgICAgbGlua1swXSA9IHVybFN0ci5kYXRh
KCk7Ci0gICAgICAgICAgICBsaW5rWzFdID0gdGl0bGVTdHIuZGF0YSgpOwotICAgICAgICAgICAg
ZXdrX3ZpZXdfbW91c2VfbGlua19ob3Zlcl9pbihtX3ZpZXcsIGxpbmspOwotICAgICAgICAgICAg
bV9ob3ZlcmVkTGlua1VSTCA9IHVybDsKLSAgICAgICAgfQotICAgIH0gZWxzZSBpZiAoIWlzTGlu
ayAmJiAhbV9ob3ZlcmVkTGlua1VSTC5pc0VtcHR5KCkpIHsKLSAgICAgICAgZXdrX3ZpZXdfbW91
c2VfbGlua19ob3Zlcl9vdXQobV92aWV3KTsKLSAgICAgICAgbV9ob3ZlcmVkTGlua1VSTCA9IFVS
TCgpOwotICAgIH0KLX0KLQotdm9pZCBDaHJvbWVDbGllbnRFZmw6OnNldFRvb2xUaXAoY29uc3Qg
U3RyaW5nJiB0b29sVGlwLCBUZXh0RGlyZWN0aW9uKQotewotICAgIGV3a192aWV3X3Rvb2x0aXBf
dGV4dF9zZXQobV92aWV3LCB0b29sVGlwLnV0ZjgoKS5kYXRhKCkpOwotfQotCi12b2lkIENocm9t
ZUNsaWVudEVmbDo6cHJpbnQoRnJhbWUqKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0K
LXZvaWQgQ2hyb21lQ2xpZW50RWZsOjpyZWFjaGVkTWF4QXBwQ2FjaGVTaXplKGludDY0X3QgLypz
cGFjZU5lZWRlZCovKQotewotICAgIC8vIEZJWE1FOiBGcmVlIHNvbWUgc3BhY2UuCi0gICAgbm90
SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBDaHJvbWVDbGllbnRFZmw6OnJlYWNoZWRBcHBsaWNh
dGlvbkNhY2hlT3JpZ2luUXVvdGEoU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgaW50NjRfdCB0b3Rh
bFNwYWNlTmVlZGVkKQotewotICAgIEV3a19TZWN1cml0eV9PcmlnaW4qIGV3a09yaWdpbiA9IGV3
a19zZWN1cml0eV9vcmlnaW5fbmV3KG9yaWdpbik7Ci0gICAgaW50NjRfdCBkZWZhdWx0T3JpZ2lu
UXVvdGEgPSBXZWJDb3JlOjpjYWNoZVN0b3JhZ2UoKS5kZWZhdWx0T3JpZ2luUXVvdGEoKTsKLQot
ICAgIGludDY0X3QgbmV3UXVvdGEgPSBld2tfdmlld19leGNlZWRlZF9hcHBsaWNhdGlvbl9jYWNo
ZV9xdW90YShtX3ZpZXcsIGV3a09yaWdpbiwgZGVmYXVsdE9yaWdpblF1b3RhLCB0b3RhbFNwYWNl
TmVlZGVkKTsKLSAgICBpZiAobmV3UXVvdGEpCi0gICAgICAgIGV3a19zZWN1cml0eV9vcmlnaW5f
YXBwbGljYXRpb25fY2FjaGVfcXVvdGFfc2V0KGV3a09yaWdpbiwgbmV3UXVvdGEpOwotCi0gICAg
ZXdrX3NlY3VyaXR5X29yaWdpbl9mcmVlKGV3a09yaWdpbik7Ci19Ci0KLXZvaWQgQ2hyb21lQ2xp
ZW50RWZsOjpwb3B1bGF0ZVZpc2l0ZWRMaW5rcygpCi17Ci0gICAgZXZhc19vYmplY3Rfc21hcnRf
Y2FsbGJhY2tfY2FsbChtX3ZpZXcsICJwb3B1bGF0ZSx2aXNpdGVkLGxpbmtzIiwgMCk7Ci19Ci0K
LSNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotdm9pZCBDaHJvbWVDbGllbnRFZmw6Om5lZWRUb3Vj
aEV2ZW50cyhib29sIG5lZWRlZCkKLXsKLSAgICBld2tfdmlld19uZWVkX3RvdWNoX2V2ZW50c19z
ZXQobV92aWV3LCBuZWVkZWQpOwotfQotI2VuZGlmCi0KLSNpZiBFTkFCTEUoU1FMX0RBVEFCQVNF
KQotdm9pZCBDaHJvbWVDbGllbnRFZmw6OmV4Y2VlZGVkRGF0YWJhc2VRdW90YShGcmFtZSogZnJh
bWUsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBEYXRhYmFzZURldGFpbHMgZGV0YWlscykK
LXsKLSAgICB1aW50NjRfdCBxdW90YTsKLSAgICBTZWN1cml0eU9yaWdpbiogb3JpZ2luID0gZnJh
bWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCk7Ci0KLSAgICBxdW90YSA9IGV3a192aWV3
X2V4Y2VlZGVkX2RhdGFiYXNlX3F1b3RhKG1fdmlldywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGtpdChmcmFtZSksIGRhdGFiYXNlTmFtZS51dGY4KCkuZGF0
YSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWls
cy5jdXJyZW50VXNhZ2UoKSwgZGV0YWlscy5leHBlY3RlZFVzYWdlKCkpOwotCi0gICAgLyogaWYg
Y2xpZW50IGRpZCBub3Qgc2V0IHF1b3RhLCBhbmQgZGF0YWJhc2UgaXMgYmVpbmcgY3JlYXRlZCBu
b3csIHRoZQotICAgICAqIGRlZmF1bHQgcXVvdGEgaXMgYXBwbGllZAotICAgICAqLwotICAgIGlm
ICghcXVvdGEgJiYgIURhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLmhhc0VudHJ5Rm9yT3JpZ2lu
KG9yaWdpbikpCi0gICAgICAgIHF1b3RhID0gZXdrX3NldHRpbmdzX3dlYl9kYXRhYmFzZV9kZWZh
dWx0X3F1b3RhX2dldCgpOwotCi0gICAgRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuc2V0UXVv
dGEob3JpZ2luLCBxdW90YSk7Ci19Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShOT1RJRklDQVRJT05T
KSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCi1Ob3RpZmljYXRpb25DbGllbnQqIENo
cm9tZUNsaWVudEVmbDo6bm90aWZpY2F0aW9uUHJlc2VudGVyKCkgY29uc3QKLXsKLSAgICBub3RJ
bXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAwOwotfQotI2VuZGlmCi0KLSNpZiBFTkFCTEUoSU5Q
VVRfVFlQRV9DT0xPUikKLVBhc3NPd25QdHI8Q29sb3JDaG9vc2VyPiBDaHJvbWVDbGllbnRFZmw6
OmNyZWF0ZUNvbG9yQ2hvb3NlcihDb2xvckNob29zZXJDbGllbnQqIGNvbG9yQ2hvb3NlckNsaWVu
dCwgY29uc3QgQ29sb3ImIGluaXRpYWxDb2xvcikKLXsKLSAgICBld2tfdmlld19jb2xvcl9jaG9v
c2VyX25ldyhtX3ZpZXcsIGNvbG9yQ2hvb3NlckNsaWVudCwgaW5pdGlhbENvbG9yKTsKLQotICAg
IHJldHVybiBhZG9wdFB0cihuZXcgQ29sb3JDaG9vc2VyRWZsKHRoaXMpKTsKLX0KLQotdm9pZCBD
aHJvbWVDbGllbnRFZmw6OnJlbW92ZUNvbG9yQ2hvb3NlcigpCi17Ci0gICAgZXdrX3ZpZXdfY29s
b3JfY2hvb3Nlcl9kZXN0cm95KG1fdmlldyk7Ci19Ci0KLXZvaWQgQ2hyb21lQ2xpZW50RWZsOjp1
cGRhdGVDb2xvckNob29zZXIoY29uc3QgQ29sb3ImIGNvbG9yKQotewotICAgIGV3a192aWV3X2Nv
bG9yX2Nob29zZXJfY2hhbmdlZChtX3ZpZXcsIGNvbG9yKTsKLX0KLSNlbmRpZgotCi12b2lkIENo
cm9tZUNsaWVudEVmbDo6cnVuT3BlblBhbmVsKEZyYW1lKiBmcmFtZSwgUGFzc1JlZlB0cjxGaWxl
Q2hvb3Nlcj4gcHJwRmlsZUNob29zZXIpCi17Ci0gICAgUmVmUHRyPEZpbGVDaG9vc2VyPiBjaG9v
c2VyID0gcHJwRmlsZUNob29zZXI7Ci0gICAgRWluYV9MaXN0KiBzZWxlY3RlZEZpbGVuYW1lcyA9
IDA7Ci0gICAgRXdrX0ZpbGVfQ2hvb3NlciogZmlsZUNob29zZXIgPSBld2tfZmlsZV9jaG9vc2Vy
X25ldyhjaG9vc2VyLmdldCgpKTsKLSAgICBib29sIGNvbmZpcm0gPSBld2tfdmlld19ydW5fb3Bl
bl9wYW5lbChtX3ZpZXcsIGtpdChmcmFtZSksIGZpbGVDaG9vc2VyLCAmc2VsZWN0ZWRGaWxlbmFt
ZXMpOwotICAgIGV3a19maWxlX2Nob29zZXJfZnJlZShmaWxlQ2hvb3Nlcik7Ci0gICAgaWYgKCFj
b25maXJtKQotICAgICAgICByZXR1cm47Ci0KLSAgICB2b2lkKiBmaWxlbmFtZTsKLSAgICBWZWN0
b3I8U3RyaW5nPiBmaWxlbmFtZXM7Ci0gICAgRUlOQV9MSVNUX0ZSRUUoc2VsZWN0ZWRGaWxlbmFt
ZXMsIGZpbGVuYW1lKSB7Ci0gICAgICAgIGZpbGVuYW1lcy5hcHBlbmQoU3RyaW5nOjpmcm9tVVRG
OChzdGF0aWNfY2FzdDxjaGFyKj4oZmlsZW5hbWUpKSk7Ci0gICAgICAgIGZyZWUoZmlsZW5hbWUp
OwotICAgIH0KLQotICAgIGlmIChjaG9vc2VyLT5zZXR0aW5ncygpLmFsbG93c011bHRpcGxlRmls
ZXMpCi0gICAgICAgIGNob29zZXItPmNob29zZUZpbGVzKGZpbGVuYW1lcyk7Ci0gICAgZWxzZQot
ICAgICAgICBjaG9vc2VyLT5jaG9vc2VGaWxlKGZpbGVuYW1lc1swXSk7Ci19Ci0KLXZvaWQgQ2hy
b21lQ2xpZW50RWZsOjpzZXRDdXJzb3IoY29uc3QgQ3Vyc29yJiBjdXJzb3IpCi17Ci0gICAgZXdr
X3ZpZXdfY3Vyc29yX3NldChtX3ZpZXcsIGN1cnNvcik7Ci19Ci0KLXZvaWQgQ2hyb21lQ2xpZW50
RWZsOjpzZXRDdXJzb3JIaWRkZW5VbnRpbE1vdXNlTW92ZXMoYm9vbCkKLXsKLSAgICBub3RJbXBs
ZW1lbnRlZCgpOwotfQotCi0jaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKSAmJiAh
VVNFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FX1RJTUVSKQotdm9pZCBDaHJvbWVDbGllbnRFZmw6
OnNjaGVkdWxlQW5pbWF0aW9uKCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotI2VuZGlm
Ci0KLXZvaWQgQ2hyb21lQ2xpZW50RWZsOjpsb2FkSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiwgRmlsZUljb25Mb2FkZXIqKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0K
LXZvaWQgQ2hyb21lQ2xpZW50RWZsOjpkaXNwYXRjaFZpZXdwb3J0UHJvcGVydGllc0RpZENoYW5n
ZShjb25zdCBWaWV3cG9ydEFyZ3VtZW50cyYgYXJndW1lbnRzKSBjb25zdAotewotICAgIGV3a192
aWV3X3ZpZXdwb3J0X2F0dHJpYnV0ZXNfc2V0KG1fdmlldywgYXJndW1lbnRzKTsKLX0KLQotYm9v
bCBDaHJvbWVDbGllbnRFZmw6OnNlbGVjdEl0ZW1Xcml0aW5nRGlyZWN0aW9uSXNOYXR1cmFsKCkK
LXsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBDaHJvbWVDbGllbnRFZmw6OnNlbGVjdEl0
ZW1BbGlnbm1lbnRGb2xsb3dzTWVudVdyaXRpbmdEaXJlY3Rpb24oKQotewotICAgIHJldHVybiBm
YWxzZTsKLX0KLQotYm9vbCBDaHJvbWVDbGllbnRFZmw6Omhhc09wZW5lZFBvcHVwKCkgY29uc3QK
LXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQotUGFzc1Jl
ZlB0cjxQb3B1cE1lbnU+IENocm9tZUNsaWVudEVmbDo6Y3JlYXRlUG9wdXBNZW51KFBvcHVwTWVu
dUNsaWVudCogY2xpZW50KSBjb25zdAotewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgUG9wdXBN
ZW51RWZsKGNsaWVudCkpOwotfQotCi1QYXNzUmVmUHRyPFNlYXJjaFBvcHVwTWVudT4gQ2hyb21l
Q2xpZW50RWZsOjpjcmVhdGVTZWFyY2hQb3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50KiBjbGllbnQp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTZWFyY2hQb3B1cE1lbnVFZmwoY2xp
ZW50KSk7Ci19Ci0KLXZvaWQgQ2hyb21lQ2xpZW50RWZsOjphdHRhY2hSb290R3JhcGhpY3NMYXll
cihGcmFtZSosIEdyYXBoaWNzTGF5ZXIqIHJvb3RMYXllcikKLXsKLSAgICBld2tfdmlld19yb290
X2dyYXBoaWNzX2xheWVyX3NldChtX3ZpZXcsIHJvb3RMYXllcik7Ci19Ci0KLXZvaWQgQ2hyb21l
Q2xpZW50RWZsOjpzZXROZWVkc09uZVNob3REcmF3aW5nU3luY2hyb25pemF0aW9uKCkKLXsKLSAg
ICBld2tfdmlld19tYXJrX2Zvcl9zeW5jKG1fdmlldyk7Ci19Ci0KLXZvaWQgQ2hyb21lQ2xpZW50
RWZsOjpzY2hlZHVsZUNvbXBvc2l0aW5nTGF5ZXJGbHVzaCgpCi17Ci0gICAgZXdrX3ZpZXdfbWFy
a19mb3Jfc3luYyhtX3ZpZXcpOwotfQotCi1DaHJvbWVDbGllbnQ6OkNvbXBvc2l0aW5nVHJpZ2dl
ckZsYWdzIENocm9tZUNsaWVudEVmbDo6YWxsb3dlZENvbXBvc2l0aW5nVHJpZ2dlcnMoKSBjb25z
dAotewotICAgIHJldHVybiBBbGxUcmlnZ2VyczsKLX0KLQotI2lmIEVOQUJMRShGVUxMU0NSRUVO
X0FQSSkKLWJvb2wgQ2hyb21lQ2xpZW50RWZsOjpzdXBwb3J0c0Z1bGxTY3JlZW5Gb3JFbGVtZW50
KGNvbnN0IFdlYkNvcmU6OkVsZW1lbnQqIGVsZW1lbnQsIGJvb2wgd2l0aEtleWJvYXJkKQotewot
ICAgIFVOVVNFRF9QQVJBTSh3aXRoS2V5Ym9hcmQpOwotCi0gICAgaWYgKCFlbGVtZW50LT5kb2N1
bWVudCgpLnBhZ2UoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBlbGVtZW50
LT5kb2N1bWVudCgpLnBhZ2UoKS0+c2V0dGluZ3MoKS5mdWxsU2NyZWVuRW5hYmxlZCgpOwotfQot
Ci12b2lkIENocm9tZUNsaWVudEVmbDo6ZW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChXZWJDb3Jl
OjpFbGVtZW50KiBlbGVtZW50KQotewotICAgIC8vIEtlZXAgYSByZWZlcmVuY2UgdG8gdGhlIGVs
ZW1lbnQgdG8gdXNlIGl0IGxhdGVyIGluCi0gICAgLy8gZXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50
KCkuCi0gICAgbV9mdWxsU2NyZWVuRWxlbWVudCA9IGVsZW1lbnQ7Ci0KLSAgICBlbGVtZW50LT5k
b2N1bWVudCgpLndlYmtpdFdpbGxFbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KGVsZW1lbnQpOwot
ICAgIGV3a192aWV3X2Z1bGxzY3JlZW5fZW50ZXIobV92aWV3KTsKLSAgICBlbGVtZW50LT5kb2N1
bWVudCgpLndlYmtpdERpZEVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQoZWxlbWVudCk7Ci19Ci0K
LXZvaWQgQ2hyb21lQ2xpZW50RWZsOjpleGl0RnVsbFNjcmVlbkZvckVsZW1lbnQoV2ViQ29yZTo6
RWxlbWVudCopCi17Ci0gICAgLy8gVGhlIGVsZW1lbnQgcGFzc2VkIGludG8gdGhpcyBmdW5jdGlv
biBpcyBub3QgcmVsaWFibGUsIGkuZS4gaXQgY291bGQKLSAgICAvLyBiZSBudWxsLiBJbiBhZGRp
dGlvbiB0aGUgcGFyYW1ldGVyIG1heSBiZSBkaXNhcHBlYXJpbmcgaW4gdGhlIGZ1dHVyZS4KLSAg
ICAvLyBTbyB3ZSB1c2UgdGhlIHJlZmVyZW5jZSB0byB0aGUgZWxlbWVudCB3ZSBzYXZlZCBhYm92
ZS4KLSAgICBBU1NFUlQobV9mdWxsU2NyZWVuRWxlbWVudCk7Ci0KLSAgICBtX2Z1bGxTY3JlZW5F
bGVtZW50LT5kb2N1bWVudCgpLndlYmtpdFdpbGxFeGl0RnVsbFNjcmVlbkZvckVsZW1lbnQobV9m
dWxsU2NyZWVuRWxlbWVudC5nZXQoKSk7Ci0gICAgZXdrX3ZpZXdfZnVsbHNjcmVlbl9leGl0KG1f
dmlldyk7Ci0gICAgbV9mdWxsU2NyZWVuRWxlbWVudC0+ZG9jdW1lbnQoKS53ZWJraXREaWRFeGl0
RnVsbFNjcmVlbkZvckVsZW1lbnQobV9mdWxsU2NyZWVuRWxlbWVudC5nZXQoKSk7Ci0KLSAgICBt
X2Z1bGxTY3JlZW5FbGVtZW50LmNsZWFyKCk7Ci19Ci0jZW5kaWYKLQotI2lmIFVTRShUSUxFRF9C
QUNLSU5HX1NUT1JFKQotdm9pZCBDaHJvbWVDbGllbnRFZmw6OmRlbGVnYXRlZFNjcm9sbFJlcXVl
c3RlZChjb25zdCBJbnRQb2ludCYpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotSW50
UmVjdCBDaHJvbWVDbGllbnRFZmw6OnZpc2libGVSZWN0Rm9yVGlsZWRCYWNraW5nU3RvcmUoKSBj
b25zdAotewotICAgIFdlYkNvcmU6OkZsb2F0UmVjdCByZWN0ID0gZXdrX3ZpZXdfcGFnZV9yZWN0
X2dldChtX3ZpZXcpOwotICAgIGNvbnN0IEV2YXNfT2JqZWN0KiBmcmFtZSA9IGV3a192aWV3X2Zy
YW1lX21haW5fZ2V0KG1fdmlldyk7Ci0KLSAgICBpbnQgeCwgeTsKLSAgICBld2tfZnJhbWVfc2Ny
b2xsX3Bvc19nZXQoZnJhbWUsICZ4LCAmeSk7Ci0gICAgcmV0dXJuIEludFJlY3QoeCwgeSwgcmVj
dC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKLX0KLSNlbmRpZgotCi19CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuaCBiL1NvdXJj
ZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA0OWVlODQwLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQv
ZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oCisrKyAvZGV2L251bGwKQEAgLTEs
MTg3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgSG9sZ2VyIEhhbnMgUGV0ZXIg
RnJleXRoZXIKLSAqIENvcHlyaWdodCAoQykgMjAwOCBJTmRUIC0gSW5zdGl0dXRvIE5va2lhIGRl
IFRlY25vbG9naWEKLSAqIENvcHlyaWdodCAoQykgMjAwOS0yMDEwIFByb0ZVU0lPTiBlbWJlZGRl
ZCBzeXN0ZW1zCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBTYW1zdW5nIEVsZWN0cm9uaWNz
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJz
aWRpYXJ5KC1pZXMpLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAq
Ci0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQot
ICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4KLSAqLwotCi0jaWZuZGVmIENocm9tZUNsaWVudEVmbF9oCi0jZGVmaW5lIENocm9tZUNs
aWVudEVmbF9oCi0KLSNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKLSNpbmNsdWRlICJVUkwuaCIK
LSNpbmNsdWRlICJQb3B1cE1lbnUuaCIKLQotI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQot
I2luY2x1ZGUgIkNvbG9yQ2hvb3Nlci5oIgotI2VuZGlmCi0KLSNpZiBFTkFCTEUoTk9USUZJQ0FU
SU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQotI2luY2x1ZGUgIk5vdGlmaWNh
dGlvbkNsaWVudC5oIgotI2VuZGlmCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgQ2hy
b21lQ2xpZW50RWZsIGZpbmFsIDogcHVibGljIENocm9tZUNsaWVudCB7Ci1wdWJsaWM6Ci0gICAg
ZXhwbGljaXQgQ2hyb21lQ2xpZW50RWZsKEV2YXNfT2JqZWN0KiB2aWV3KTsKLSAgICB2aXJ0dWFs
IH5DaHJvbWVDbGllbnRFZmwoKTsKLQotICAgIHZpcnR1YWwgdm9pZCBjaHJvbWVEZXN0cm95ZWQo
KSBvdmVycmlkZTsKLQotICAgIHZpcnR1YWwgdm9pZCBzZXRXaW5kb3dSZWN0KGNvbnN0IEZsb2F0
UmVjdCYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgRmxvYXRSZWN0IHdpbmRvd1JlY3QoKSBvdmVy
cmlkZTsKLQotICAgIHZpcnR1YWwgRmxvYXRSZWN0IHBhZ2VSZWN0KCkgb3ZlcnJpZGU7Ci0KLSAg
ICB2aXJ0dWFsIHZvaWQgZm9jdXMoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgdW5mb2N1
cygpIG92ZXJyaWRlOwotCi0gICAgdmlydHVhbCBib29sIGNhblRha2VGb2N1cyhGb2N1c0RpcmVj
dGlvbikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHRha2VGb2N1cyhGb2N1c0RpcmVjdGlv
bikgb3ZlcnJpZGU7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZm9jdXNlZEVsZW1lbnRDaGFuZ2VkKEVs
ZW1lbnQqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZm9jdXNlZEZyYW1lQ2hhbmdlZChG
cmFtZSopIG92ZXJyaWRlOwotCi0gICAgdmlydHVhbCBQYWdlKiBjcmVhdGVXaW5kb3coRnJhbWUq
LCBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiwgY29uc3QgV2luZG93RmVhdHVyZXMmLCBjb25zdCBO
YXZpZ2F0aW9uQWN0aW9uJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNob3coKSBvdmVy
cmlkZTsKLQotICAgIHZpcnR1YWwgYm9vbCBjYW5SdW5Nb2RhbCgpIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdm9pZCBydW5Nb2RhbCgpIG92ZXJyaWRlOwotCi0gICAgdmlydHVhbCB2b2lkIHNldFRv
b2xiYXJzVmlzaWJsZShib29sKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgdG9vbGJhcnNW
aXNpYmxlKCkgb3ZlcnJpZGU7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0U3RhdHVzYmFyVmlzaWJs
ZShib29sKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgc3RhdHVzYmFyVmlzaWJsZSgpIG92
ZXJyaWRlOwotCi0gICAgdmlydHVhbCB2b2lkIHNldFNjcm9sbGJhcnNWaXNpYmxlKGJvb2wpIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBzY3JvbGxiYXJzVmlzaWJsZSgpIG92ZXJyaWRlOwot
Ci0gICAgdmlydHVhbCB2b2lkIHNldE1lbnViYXJWaXNpYmxlKGJvb2wpIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgYm9vbCBtZW51YmFyVmlzaWJsZSgpIG92ZXJyaWRlOwotCi0gICAgdm9pZCBjcmVh
dGVTZWxlY3RQb3B1cChQb3B1cE1lbnVDbGllbnQqLCBpbnQgc2VsZWN0ZWQsIGNvbnN0IEludFJl
Y3QmKTsKLSAgICBib29sIGRlc3Ryb3lTZWxlY3RQb3B1cCgpOwotCi0gICAgdmlydHVhbCB2b2lk
IHNldFJlc2l6YWJsZShib29sKSBvdmVycmlkZTsKLQotICAgIHZpcnR1YWwgdm9pZCBhZGRNZXNz
YWdlVG9Db25zb2xlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBt
ZXNzYWdlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCB1bnNpZ25lZCBjb2x1bW5OdW1iZXIsIGNvbnN0
IFN0cmluZyYgc291cmNlSUQpIG92ZXJyaWRlOwotCi0gICAgdmlydHVhbCBib29sIGNhblJ1bkJl
Zm9yZVVubG9hZENvbmZpcm1QYW5lbCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBydW5C
ZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBGcmFtZSopIG92
ZXJyaWRlOwotCi0gICAgdmlydHVhbCB2b2lkIGNsb3NlV2luZG93U29vbigpIG92ZXJyaWRlOwot
Ci0gICAgdmlydHVhbCB2b2lkIHJ1bkphdmFTY3JpcHRBbGVydChGcmFtZSosIGNvbnN0IFN0cmlu
ZyYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBydW5KYXZhU2NyaXB0Q29uZmlybShGcmFt
ZSosIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBydW5KYXZhU2Ny
aXB0UHJvbXB0KEZyYW1lKiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRl
ZmF1bHRWYWx1ZSwgU3RyaW5nJiByZXN1bHQpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBz
ZXRTdGF0dXNiYXJUZXh0KGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9v
bCBzaG91bGRJbnRlcnJ1cHRKYXZhU2NyaXB0KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBXZWJD
b3JlOjpLZXlib2FyZFVJTW9kZSBrZXlib2FyZFVJTW9kZSgpIG92ZXJyaWRlOwotCi0gICAgdmly
dHVhbCBJbnRSZWN0IHdpbmRvd1Jlc2l6ZXJSZWN0KCkgY29uc3Qgb3ZlcnJpZGU7Ci0KLSAgICB2
aXJ0dWFsIHZvaWQgY29udGVudHNTaXplQ2hhbmdlZChGcmFtZSosIGNvbnN0IEludFNpemUmKSBj
b25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIEludFBvaW50IHNjcmVlblRvUm9vdFZpZXcoY29u
c3QgSW50UG9pbnQmKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIEludFJlY3Qgcm9vdFZp
ZXdUb1NjcmVlbihjb25zdCBJbnRSZWN0JikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBQ
bGF0Zm9ybVBhZ2VDbGllbnQgcGxhdGZvcm1QYWdlQ2xpZW50KCkgY29uc3Qgb3ZlcnJpZGU7Ci0K
LSAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsYmFyc01vZGVEaWRDaGFuZ2UoKSBjb25zdCBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIHZvaWQgbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoY29uc3QgSGl0VGVz
dFJlc3VsdCYsIHVuc2lnbmVkIG1vZGlmaWVyRmxhZ3MpIG92ZXJyaWRlOwotCi0gICAgdmlydHVh
bCB2b2lkIHNldFRvb2xUaXAoY29uc3QgU3RyaW5nJiwgVGV4dERpcmVjdGlvbikgb3ZlcnJpZGU7
Ci0KLSAgICB2aXJ0dWFsIHZvaWQgcHJpbnQoRnJhbWUqKSBvdmVycmlkZTsKLQotI2lmIEVOQUJM
RShTUUxfREFUQUJBU0UpCi0gICAgdmlydHVhbCB2b2lkIGV4Y2VlZGVkRGF0YWJhc2VRdW90YShG
cmFtZSosIGNvbnN0IFN0cmluZyYsIERhdGFiYXNlRGV0YWlscykgb3ZlcnJpZGU7Ci0jZW5kaWYK
LQotI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElP
TlMpCi0gICAgdmlydHVhbCBXZWJDb3JlOjpOb3RpZmljYXRpb25DbGllbnQqIG5vdGlmaWNhdGlv
blByZXNlbnRlcigpIGNvbnN0IG92ZXJyaWRlOwotI2VuZGlmCi0KLSAgICB2aXJ0dWFsIHZvaWQg
cmVhY2hlZE1heEFwcENhY2hlU2l6ZShpbnQ2NF90IHNwYWNlTmVlZGVkKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIHZvaWQgcmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShTZWN1cml0
eU9yaWdpbiosIGludDY0X3QgdG90YWxTcGFjZU5lZWRlZCkgb3ZlcnJpZGU7Ci0KLSAgICB2aXJ0
dWFsIHZvaWQgcG9wdWxhdGVWaXNpdGVkTGlua3MoKSBvdmVycmlkZTsKLQotI2lmIEVOQUJMRShU
T1VDSF9FVkVOVFMpCi0gICAgdmlydHVhbCB2b2lkIG5lZWRUb3VjaEV2ZW50cyhib29sKSBvdmVy
cmlkZTsKLSNlbmRpZgotCi0gICAgdmlydHVhbCB2b2lkIGF0dGFjaFJvb3RHcmFwaGljc0xheWVy
KEZyYW1lKiwgR3JhcGhpY3NMYXllciopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRO
ZWVkc09uZVNob3REcmF3aW5nU3luY2hyb25pemF0aW9uKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCB2b2lkIHNjaGVkdWxlQ29tcG9zaXRpbmdMYXllckZsdXNoKCkgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCBDb21wb3NpdGluZ1RyaWdnZXJGbGFncyBhbGxvd2VkQ29tcG9zaXRpbmdUcmlnZ2Vycygp
IGNvbnN0IG92ZXJyaWRlOwotCi0jaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQotICAgIHZpcnR1
YWwgYm9vbCBzdXBwb3J0c0Z1bGxTY3JlZW5Gb3JFbGVtZW50KGNvbnN0IFdlYkNvcmU6OkVsZW1l
bnQqLCBib29sIHdpdGhLZXlib2FyZCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGVudGVy
RnVsbFNjcmVlbkZvckVsZW1lbnQoV2ViQ29yZTo6RWxlbWVudCopIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdm9pZCBleGl0RnVsbFNjcmVlbkZvckVsZW1lbnQoV2ViQ29yZTo6RWxlbWVudCopIG92
ZXJyaWRlOwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKLSAgICB2aXJ0
dWFsIFBhc3NPd25QdHI8Q29sb3JDaG9vc2VyPiBjcmVhdGVDb2xvckNob29zZXIoQ29sb3JDaG9v
c2VyQ2xpZW50KiwgY29uc3QgQ29sb3ImKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlbW92ZUNvbG9y
Q2hvb3NlcigpOwotICAgIHZvaWQgdXBkYXRlQ29sb3JDaG9vc2VyKGNvbnN0IENvbG9yJik7Ci0j
ZW5kaWYKLQotICAgIHZpcnR1YWwgdm9pZCBydW5PcGVuUGFuZWwoRnJhbWUqLCBQYXNzUmVmUHRy
PEZpbGVDaG9vc2VyPikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGxvYWRJY29uRm9yRmls
ZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mLCBGaWxlSWNvbkxvYWRlciopIG92ZXJyaWRlOwotCi0g
ICAgdmlydHVhbCB2b2lkIHNldEN1cnNvcihjb25zdCBDdXJzb3ImKSBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIHZvaWQgc2V0Q3Vyc29ySGlkZGVuVW50aWxNb3VzZU1vdmVzKGJvb2wpIG92ZXJyaWRl
OwotCi0jaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKSAmJiAhVVNFKFJFUVVFU1Rf
QU5JTUFUSU9OX0ZSQU1FX1RJTUVSKQotICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZUFuaW1hdGlv
bigpIG92ZXJyaWRlOwotI2VuZGlmCi0KLSAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsUmVjdEludG9W
aWV3KGNvbnN0IEludFJlY3QmKSBjb25zdCBvdmVycmlkZSB7IH0KLQotICAgIHZpcnR1YWwgdm9p
ZCBpbnZhbGlkYXRlUm9vdFZpZXcoY29uc3QgSW50UmVjdCYpIG92ZXJyaWRlIHsgfQotICAgIHZp
cnR1YWwgdm9pZCBpbnZhbGlkYXRlQ29udGVudHNBbmRSb290Vmlldyhjb25zdCBJbnRSZWN0Jikg
b3ZlcnJpZGUgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVDb250ZW50c0ZvclNsb3dT
Y3JvbGwoY29uc3QgSW50UmVjdCYpIG92ZXJyaWRlIHsgfQotICAgIHZpcnR1YWwgdm9pZCBzY3Jv
bGwoY29uc3QgSW50U2l6ZSYsIGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJp
ZGUgeyB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hWaWV3cG9ydFByb3BlcnRpZXNEaWRD
aGFuZ2UoY29uc3QgVmlld3BvcnRBcmd1bWVudHMmKSBjb25zdCBvdmVycmlkZTsKLQotICAgIHZp
cnR1YWwgYm9vbCBzZWxlY3RJdGVtV3JpdGluZ0RpcmVjdGlvbklzTmF0dXJhbCgpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgYm9vbCBzZWxlY3RJdGVtQWxpZ25tZW50Rm9sbG93c01lbnVXcml0aW5n
RGlyZWN0aW9uKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGhhc09wZW5lZFBvcHVwKCkg
Y29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFBvcHVwTWVudT4gY3JlYXRl
UG9wdXBNZW51KFBvcHVwTWVudUNsaWVudCopIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxTZWFyY2hQb3B1cE1lbnU+IGNyZWF0ZVNlYXJjaFBvcHVwTWVudShQb3B1cE1l
bnVDbGllbnQqKSBjb25zdCBvdmVycmlkZTsKLQotICAgIHZpcnR1YWwgdm9pZCBudW1XaGVlbEV2
ZW50SGFuZGxlcnNDaGFuZ2VkKHVuc2lnbmVkKSBvdmVycmlkZSB7IH0KLQotI2lmIFVTRShUSUxF
RF9CQUNLSU5HX1NUT1JFKQotICAgIHZpcnR1YWwgdm9pZCBkZWxlZ2F0ZWRTY3JvbGxSZXF1ZXN0
ZWQoY29uc3QgSW50UG9pbnQmIHNjcm9sbFBvaW50KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIElu
dFJlY3QgdmlzaWJsZVJlY3RGb3JUaWxlZEJhY2tpbmdTdG9yZSgpIGNvbnN0IG92ZXJyaWRlOwot
I2VuZGlmCi0KLSAgICBFdmFzX09iamVjdCogbV92aWV3OwotICAgIFVSTCBtX2hvdmVyZWRMaW5r
VVJMOwotI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKLSAgICBSZWZQdHI8RWxlbWVudD4gbV9m
dWxsU2NyZWVuRWxlbWVudDsKLSNlbmRpZgotfTsKLX0KLQotI2VuZGlmIC8vIENocm9tZUNsaWVu
dEVmbF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9Db2xv
ckNob29zZXJFZmwuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ29sb3JD
aG9vc2VyRWZsLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODAwM2JlMS4uMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9Db2xvckNob29zZXJF
ZmwuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNjEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
YykgMjAxMiwgSW50ZWwgQ29ycG9yYXRpb24KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUgbWV0OgotICoKLSAqICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzCi0gKiAgIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3Rp
Y2UsCi0gKiAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24KLSAqICAgYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
SW50ZWwgQ29ycG9yYXRpb24gbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzIG1heQot
ICogICBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0Ci0gKiAgIHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFCi0gKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVCBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUKLSAqIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKLSAqIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShJTlBV
VF9UWVBFX0NPTE9SKQotCi0jaW5jbHVkZSAiQ29sb3JDaG9vc2VyRWZsLmgiCi0KLSNpbmNsdWRl
ICJDaHJvbWVDbGllbnRFZmwuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1Db2xvckNob29z
ZXJFZmw6OkNvbG9yQ2hvb3NlckVmbChDaHJvbWVDbGllbnRFZmwqIGNocm9tZUNsaWVudCkKLSAg
ICA6IG1fY2hyb21lQ2xpZW50KGNocm9tZUNsaWVudCkKLXsKLSAgICBBU1NFUlQobV9jaHJvbWVD
bGllbnQpOwotfQotCi1Db2xvckNob29zZXJFZmw6On5Db2xvckNob29zZXJFZmwoKQotewotfQot
Ci12b2lkIENvbG9yQ2hvb3NlckVmbDo6c2V0U2VsZWN0ZWRDb2xvcihjb25zdCBDb2xvciYgY29s
b3IpCi17Ci0gICAgbV9jaHJvbWVDbGllbnQtPnVwZGF0ZUNvbG9yQ2hvb3Nlcihjb2xvcik7Ci19
Ci0KLXZvaWQgQ29sb3JDaG9vc2VyRWZsOjplbmRDaG9vc2VyKCkKLXsKLSAgICBtX2Nocm9tZUNs
aWVudC0+cmVtb3ZlQ29sb3JDaG9vc2VyKCk7Ci19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShJ
TlBVVF9UWVBFX0NPTE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1
cHBvcnQvQ29sb3JDaG9vc2VyRWZsLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9y
dC9Db2xvckNob29zZXJFZmwuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTdlZTM3
ZC4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9Db2xvckNo
b29zZXJFZmwuaAorKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKGMpIDIwMTIsIEludGVsIENvcnBvcmF0aW9uCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlIG1ldDoKLSAqCi0gKiAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpcwotICogICBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQg
bm90aWNlLAotICogICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uCi0gKiAgIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEludGVsIENvcnBvcmF0aW9uIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycyBt
YXkKLSAqICAgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dAotICogICBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
Ci0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQotICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFCi0gKiBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCi0gKiBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIENvbG9yQ2hvb3NlckVmbF9oCi0jZGVmaW5l
IENvbG9yQ2hvb3NlckVmbF9oCi0KLSNpbmNsdWRlICJDb2xvci5oIgotI2luY2x1ZGUgIkNvbG9y
Q2hvb3Nlci5oIgotCi0jaW5jbHVkZSA8RXZhcy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LWNsYXNzIENocm9tZUNsaWVudEVmbDsKLQotY2xhc3MgQ29sb3JDaG9vc2VyRWZsIDogcHVibGlj
IENvbG9yQ2hvb3NlciB7Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQgQ29sb3JDaG9vc2VyRWZsKENo
cm9tZUNsaWVudEVmbCopOwotICAgIH5Db2xvckNob29zZXJFZmwoKTsKLQotICAgIC8vIENvbG9y
Q2hvb3NlciBpbXBsZW1lbnRhdGlvbi4KLSAgICB2aXJ0dWFsIHZvaWQgc2V0U2VsZWN0ZWRDb2xv
cihjb25zdCBDb2xvciYpOwotICAgIHZpcnR1YWwgdm9pZCBlbmRDaG9vc2VyKCk7Ci0KLXByaXZh
dGU6Ci0gICAgQ2hyb21lQ2xpZW50RWZsKiBtX2Nocm9tZUNsaWVudDsKLX07Ci0KLX0KLQotI2Vu
ZGlmIC8vIENvbG9yQ2hvb3NlckVmbF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9X
ZWJDb3JlU3VwcG9ydC9Db250ZXh0TWVudUNsaWVudEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Vm
bC9XZWJDb3JlU3VwcG9ydC9Db250ZXh0TWVudUNsaWVudEVmbC5jcHAKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDFiNGFhNWQuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9lZmwv
V2ViQ29yZVN1cHBvcnQvQ29udGV4dE1lbnVDbGllbnRFZmwuY3BwCisrKyAvZGV2L251bGwKQEAg
LTEsOTEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuICBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA5IElnYWxpYSBTLkwuCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTAgUHJvRlVTSU9OIGVtYmVkZGVkIHN5c3RlbXMKLSAqIENvcHlyaWdo
dCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJDb250ZXh0
TWVudUNsaWVudEVmbC5oIgotCi0jaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi0KLSNpbmNsdWRl
ICJDb250ZXh0TWVudS5oIgotI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKLSNpbmNsdWRlICJV
UkwuaCIKLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgotI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdm9pZCBDb250ZXh0TWVudUNsaWVudEVm
bDo6Y29udGV4dE1lbnVEZXN0cm95ZWQoKQotewotICAgIGRlbGV0ZSB0aGlzOwotfQotCi1QYXNz
T3duUHRyPENvbnRleHRNZW51PiBDb250ZXh0TWVudUNsaWVudEVmbDo6Y3VzdG9taXplTWVudShQ
YXNzT3duUHRyPENvbnRleHRNZW51PiBtZW51KQotewotICAgIC8vIFdlIGlnbm9yZSB0aGlzIGNs
aWVudCBjYWxsYmFjayBhbmQgZG8gY29udGV4dCBtZW51IGN1c3RvbWl6YXRpb24gd2hlbiB3ZSBh
cmUgdG9sZCB0byBzaG93IHRoZSBtZW51LgotICAgIHJldHVybiBtZW51OwotfQotCi12b2lkIENv
bnRleHRNZW51Q2xpZW50RWZsOjpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250ZXh0TWVudUl0
ZW0qLCBjb25zdCBDb250ZXh0TWVudSopCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQot
dm9pZCBDb250ZXh0TWVudUNsaWVudEVmbDo6ZG93bmxvYWRVUkwoY29uc3QgVVJMJikKLXsKLSAg
ICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIENvbnRleHRNZW51Q2xpZW50RWZsOjpsb29r
VXBJbkRpY3Rpb25hcnkoRnJhbWUqKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZv
aWQgQ29udGV4dE1lbnVDbGllbnRFZmw6OnNwZWFrKGNvbnN0IFN0cmluZyYpCi17Ci0gICAgbm90
SW1wbGVtZW50ZWQoKTsKLX0KLQotYm9vbCBDb250ZXh0TWVudUNsaWVudEVmbDo6aXNTcGVha2lu
ZygpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXZv
aWQgQ29udGV4dE1lbnVDbGllbnRFZmw6OnN0b3BTcGVha2luZygpCi17Ci0gICAgbm90SW1wbGVt
ZW50ZWQoKTsKLX0KLQotdm9pZCBDb250ZXh0TWVudUNsaWVudEVmbDo6c2VhcmNoV2l0aEdvb2ds
ZShjb25zdCBGcmFtZSopCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotfQotCi0jZW5k
aWYgLy8gRU5BQkxFKENPTlRFWFRfTUVOVVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Vm
bC9XZWJDb3JlU3VwcG9ydC9Db250ZXh0TWVudUNsaWVudEVmbC5oIGIvU291cmNlL1dlYktpdC9l
ZmwvV2ViQ29yZVN1cHBvcnQvQ29udGV4dE1lbnVDbGllbnRFZmwuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggM2ZlNTZlNS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9X
ZWJDb3JlU3VwcG9ydC9Db250ZXh0TWVudUNsaWVudEVmbC5oCisrKyAvZGV2L251bGwKQEAgLTEs
NTggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuICBBbGwgcmln
aHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA5IElnYWxpYSBTLkwuCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTAgUHJvRlVTSU9OIGVtYmVkZGVkIHN5c3RlbXMKLSAqIENvcHlyaWdodCAo
QykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpZm5kZWYgQ29udGV4dE1lbnVDbGllbnRFZmxfaAotI2RlZmluZSBD
b250ZXh0TWVudUNsaWVudEVmbF9oCi0KLSNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKLQotI2lu
Y2x1ZGUgIkNvbnRleHRNZW51Q2xpZW50LmgiCi0KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBDb250ZXh0TWVudTsKLQotY2xhc3MgQ29u
dGV4dE1lbnVDbGllbnRFZmwgOiBwdWJsaWMgQ29udGV4dE1lbnVDbGllbnQgewotcHVibGljOgot
ICAgIHZpcnR1YWwgdm9pZCBjb250ZXh0TWVudURlc3Ryb3llZCgpOwotCi0gICAgdmlydHVhbCBQ
YXNzT3duUHRyPENvbnRleHRNZW51PiBjdXN0b21pemVNZW51KFBhc3NPd25QdHI8Q29udGV4dE1l
bnU+KTsKLSAgICB2aXJ0dWFsIHZvaWQgY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoQ29udGV4dE1l
bnVJdGVtKiwgY29uc3QgQ29udGV4dE1lbnUqKTsKLQotICAgIHZpcnR1YWwgdm9pZCBkb3dubG9h
ZFVSTChjb25zdCBVUkwmKTsKLSAgICB2aXJ0dWFsIHZvaWQgbG9va1VwSW5EaWN0aW9uYXJ5KEZy
YW1lKik7Ci0gICAgdmlydHVhbCB2b2lkIHNwZWFrKGNvbnN0IFN0cmluZyYpOwotICAgIHZpcnR1
YWwgYm9vbCBpc1NwZWFraW5nKCk7Ci0gICAgdmlydHVhbCB2b2lkIHN0b3BTcGVha2luZygpOwot
ICAgIHZpcnR1YWwgdm9pZCBzZWFyY2hXaXRoR29vZ2xlKGNvbnN0IEZyYW1lKik7Ci19OwotfQot
Ci0jZW5kaWYgLy8gRU5BQkxFKENPTlRFWFRfTUVOVVMpCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0RldmljZU1vdGlvbkNsaWVudEVmbC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9EZXZpY2VNb3Rpb25DbGllbnRFZmwu
Y3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZDQ1YjlkLi4wMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0RldmljZU1vdGlvbkNsaWVudEVmbC5j
cHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDExIFNhbXN1bmcgRWxlY3Ryb25pY3MKLSAqCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmln
LmgiCi0KLSNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKQotI2luY2x1ZGUgIkRldmljZU1v
dGlvbkNsaWVudEVmbC5oIgotCi0jaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1EZXZpY2VNb3Rpb25DbGllbnRFZmw6OkRldmljZU1vdGlvbkNsaWVu
dEVmbCgpCi17Ci19Ci0KLURldmljZU1vdGlvbkNsaWVudEVmbDo6fkRldmljZU1vdGlvbkNsaWVu
dEVmbCgpCi17Ci19Ci0KLXZvaWQgRGV2aWNlTW90aW9uQ2xpZW50RWZsOjpkZXZpY2VNb3Rpb25D
b250cm9sbGVyRGVzdHJveWVkKCkKLXsKLSAgICBkZWxldGUgdGhpczsKLX0KLQotdm9pZCBEZXZp
Y2VNb3Rpb25DbGllbnRFZmw6OnNldENvbnRyb2xsZXIoRGV2aWNlTW90aW9uQ29udHJvbGxlciog
Y29udHJvbGxlcikKLXsKLSAgICBtX2NvbnRyb2xsZXIgPSBjb250cm9sbGVyOwotfQotCi12b2lk
IERldmljZU1vdGlvbkNsaWVudEVmbDo6c3RhcnRVcGRhdGluZygpCi17Ci0gICAgbm90SW1wbGVt
ZW50ZWQoKTsKLX0KLQotdm9pZCBEZXZpY2VNb3Rpb25DbGllbnRFZmw6OnN0b3BVcGRhdGluZygp
Ci17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotRGV2aWNlTW90aW9uRGF0YSogRGV2aWNl
TW90aW9uQ2xpZW50RWZsOjpsYXN0TW90aW9uKCkgY29uc3QKLXsKLSAgICBub3RJbXBsZW1lbnRl
ZCgpOwotICAgIHJldHVybiAwOwotfQotCi19Ci0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0RldmljZU1vdGlvbkNsaWVudEVmbC5oIGIvU291cmNl
L1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRGV2aWNlTW90aW9uQ2xpZW50RWZsLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEwM2RiYmQuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRGV2aWNlTW90aW9uQ2xpZW50RWZsLmgKKysrIC9kZXYv
bnVsbApAQCAtMSw0OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIFNhbXN1bmcg
RWxlY3Ryb25pY3MKLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgot
ICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAq
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBu
b3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBV
U0EuCi0gKgotICovCi0jaWZuZGVmIERldmljZU1vdGlvbkNsaWVudEVmbF9oCi0jZGVmaW5lIERl
dmljZU1vdGlvbkNsaWVudEVmbF9oCi0KLSNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKQot
Ci0jaW5jbHVkZSAiRGV2aWNlTW90aW9uQ2xpZW50LmgiCi0jaW5jbHVkZSAiRGV2aWNlTW90aW9u
RGF0YS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIERldmljZU1vdGlvbkNsaWVu
dEVmbCA6IHB1YmxpYyBEZXZpY2VNb3Rpb25DbGllbnQgewotcHVibGljOgotICAgIERldmljZU1v
dGlvbkNsaWVudEVmbCgpOwotICAgIHZpcnR1YWwgfkRldmljZU1vdGlvbkNsaWVudEVmbCgpOwot
Ci0gICAgdmlydHVhbCB2b2lkIHNldENvbnRyb2xsZXIoRGV2aWNlTW90aW9uQ29udHJvbGxlciop
OwotICAgIHZpcnR1YWwgdm9pZCBzdGFydFVwZGF0aW5nKCk7Ci0gICAgdmlydHVhbCB2b2lkIHN0
b3BVcGRhdGluZygpOwotICAgIHZpcnR1YWwgRGV2aWNlTW90aW9uRGF0YSogbGFzdE1vdGlvbigp
IGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBkZXZpY2VNb3Rpb25Db250cm9sbGVyRGVzdHJveWVk
KCk7Ci0KLXByaXZhdGU6Ci0gICAgRGV2aWNlTW90aW9uQ29udHJvbGxlciogbV9jb250cm9sbGVy
OwotfTsKLQotfSAvLyBuYW1lc3BlY2UgV2ViQ29yZQotCi0jZW5kaWYKLSNlbmRpZiAvLyBEZXZp
Y2VNb3Rpb25DbGllbnRFZmxfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29y
ZVN1cHBvcnQvRGV2aWNlT3JpZW50YXRpb25DbGllbnRFZmwuY3BwIGIvU291cmNlL1dlYktpdC9l
ZmwvV2ViQ29yZVN1cHBvcnQvRGV2aWNlT3JpZW50YXRpb25DbGllbnRFZmwuY3BwCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZGE3ZGZhLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJL
aXQvZWZsL1dlYkNvcmVTdXBwb3J0L0RldmljZU9yaWVudGF0aW9uQ2xpZW50RWZsLmNwcAorKysg
L2Rldi9udWxsCkBAIC0xLDcyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgU2Ft
c3VuZyBFbGVjdHJvbmljcwotICoKLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0g
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQot
I2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCi0jaW5jbHVkZSAiRGV2aWNlT3JpZW50YXRp
b25DbGllbnRFZmwuaCIKLQotI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotRGV2aWNlT3JpZW50YXRpb25DbGllbnRFZmw6OkRldmljZU9yaWVudGF0
aW9uQ2xpZW50RWZsKCkKLXsKLX0KLQotRGV2aWNlT3JpZW50YXRpb25DbGllbnRFZmw6On5EZXZp
Y2VPcmllbnRhdGlvbkNsaWVudEVmbCgpCi17Ci19Ci0KLXZvaWQgRGV2aWNlT3JpZW50YXRpb25D
bGllbnRFZmw6OmRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlckRlc3Ryb3llZCgpCi17Ci0gICAg
ZGVsZXRlIHRoaXM7Ci19Ci0KLXZvaWQgRGV2aWNlT3JpZW50YXRpb25DbGllbnRFZmw6OnNldENv
bnRyb2xsZXIoRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyKiBjb250cm9sbGVyKQotewotICAg
IG1fY29udHJvbGxlciA9IGNvbnRyb2xsZXI7Ci19Ci0KLXZvaWQgRGV2aWNlT3JpZW50YXRpb25D
bGllbnRFZmw6OnN0YXJ0VXBkYXRpbmcoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0K
LXZvaWQgRGV2aWNlT3JpZW50YXRpb25DbGllbnRFZmw6OnN0b3BVcGRhdGluZygpCi17Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKLX0KLQotRGV2aWNlT3JpZW50YXRpb25EYXRhKiBEZXZpY2VPcmll
bnRhdGlvbkNsaWVudEVmbDo6bGFzdE9yaWVudGF0aW9uKCkgY29uc3QKLXsKLSAgICBub3RJbXBs
ZW1lbnRlZCgpOwotICAgIHJldHVybiAwOwotfQotCi19Ci0jZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0RldmljZU9yaWVudGF0aW9uQ2xpZW50RWZs
LmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9EZXZpY2VPcmllbnRhdGlvbkNs
aWVudEVmbC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYmIxOTdjLi4wMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0RldmljZU9yaWVudGF0aW9u
Q2xpZW50RWZsLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDExIFNhbXN1bmcgRWxlY3Ryb25pY3MKLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICog
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAq
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAq
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKgotICovCi0jaWZuZGVmIERldmljZU9yaWVudGF0
aW9uQ2xpZW50RWZsX2gKLSNkZWZpbmUgRGV2aWNlT3JpZW50YXRpb25DbGllbnRFZmxfaAotCi0j
aW5jbHVkZSAiRGV2aWNlT3JpZW50YXRpb25DbGllbnQuaCIKLSNpbmNsdWRlICJEZXZpY2VPcmll
bnRhdGlvbkRhdGEuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBEZXZpY2VPcmll
bnRhdGlvbkNsaWVudEVmbCA6IHB1YmxpYyBEZXZpY2VPcmllbnRhdGlvbkNsaWVudCB7Ci1wdWJs
aWM6Ci0gICAgRGV2aWNlT3JpZW50YXRpb25DbGllbnRFZmwoKTsKLSAgICB2aXJ0dWFsIH5EZXZp
Y2VPcmllbnRhdGlvbkNsaWVudEVmbCgpOwotCi0gICAgdmlydHVhbCB2b2lkIHNldENvbnRyb2xs
ZXIoRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyKik7Ci0gICAgdmlydHVhbCB2b2lkIHN0YXJ0
VXBkYXRpbmcoKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3RvcFVwZGF0aW5nKCk7Ci0gICAgdmlydHVh
bCBEZXZpY2VPcmllbnRhdGlvbkRhdGEqIGxhc3RPcmllbnRhdGlvbigpIGNvbnN0OwotICAgIHZp
cnR1YWwgdm9pZCBkZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXJEZXN0cm95ZWQoKTsKLQotcHJp
dmF0ZToKLSAgICBEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIqIG1fY29udHJvbGxlcjsKLX07
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIERldmljZU9yaWVudGF0aW9u
Q2xpZW50RWZsX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0
L0RyYWdDbGllbnRFZmwuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHJh
Z0NsaWVudEVmbC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFjZjdlNTAuLjAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHJhZ0NsaWVudEVm
bC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw2OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDA3IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDggSU5kVCAtIEluc3RpdHV0byBOb2tpYSBkZSBUZWNub2xvZ2lhCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDktMjAxMCBQcm9GVVNJT04gZW1iZWRkZWQgc3lzdGVtcwotICogQ29weXJpZ2h0IChD
KSAyMDA5LTIwMTAgU2Ftc3VuZyBFbGVjdHJvbmljcwotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRHJhZ0Ns
aWVudEVmbC5oIgotCi0jaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLQotdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdm9pZCBEcmFnQ2xpZW50RWZs
Ojp3aWxsUGVyZm9ybURyYWdEZXN0aW5hdGlvbkFjdGlvbihEcmFnRGVzdGluYXRpb25BY3Rpb24s
IERyYWdEYXRhJikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIERyYWdDbGll
bnRFZmw6OndpbGxQZXJmb3JtRHJhZ1NvdXJjZUFjdGlvbihEcmFnU291cmNlQWN0aW9uLCBjb25z
dCBJbnRQb2ludCYsIERhdGFUcmFuc2ZlciYpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0K
LQotRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIERyYWdDbGllbnRFZmw6OmFjdGlvbk1hc2tGb3JEcmFn
KERyYWdEYXRhJikKLXsKLSAgICByZXR1cm4gRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uQW55OwotfQot
Ci1EcmFnU291cmNlQWN0aW9uIERyYWdDbGllbnRFZmw6OmRyYWdTb3VyY2VBY3Rpb25NYXNrRm9y
UG9pbnQoY29uc3QgSW50UG9pbnQmKQotewotICAgIHJldHVybiBEcmFnU291cmNlQWN0aW9uQW55
OwotfQotCi12b2lkIERyYWdDbGllbnRFZmw6OnN0YXJ0RHJhZyhEcmFnSW1hZ2VSZWYsIGNvbnN0
IEludFBvaW50JiwgY29uc3QgSW50UG9pbnQmLCBEYXRhVHJhbnNmZXImLCBGcmFtZSYsIGJvb2wp
Ci17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBEcmFnQ2xpZW50RWZsOjpkcmFn
Q29udHJvbGxlckRlc3Ryb3llZCgpCi17Ci0gICAgZGVsZXRlIHRoaXM7Ci19Ci0KLX0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0RyYWdDbGllbnRFZmwuaCBi
L1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0RyYWdDbGllbnRFZmwuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjk4N2M0Ni4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50RWZsLmgKKysrIC9kZXYvbnVsbApAQCAt
MSw1MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgSG9sZ2VyIEhhbnMgUGV0ZXIg
RnJleXRoZXIKLSAqIENvcHlyaWdodCAoQykgMjAwOCBJTmRUIC0gSW5zdGl0dXRvIE5va2lhIGRl
IFRlY25vbG9naWEKLSAqIENvcHlyaWdodCAoQykgMjAwOS0yMDEwIFByb0ZVU0lPTiBlbWJlZGRl
ZCBzeXN0ZW1zCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBTYW1zdW5nIEVsZWN0cm9uaWNz
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSwgSW5j
LiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBm
cm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENP
TlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBE
cmFnQ2xpZW50RWZsX2gKLSNkZWZpbmUgRHJhZ0NsaWVudEVmbF9oCi0KLSNpbmNsdWRlICJEcmFn
Q2xpZW50LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgRHJhZ0NsaWVudEVmbCA6
IHB1YmxpYyBXZWJDb3JlOjpEcmFnQ2xpZW50IHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIHZvaWQg
ZHJhZ0NvbnRyb2xsZXJEZXN0cm95ZWQoKTsKLQotICAgIHZpcnR1YWwgdm9pZCB3aWxsUGVyZm9y
bURyYWdEZXN0aW5hdGlvbkFjdGlvbihXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb24sIFdl
YkNvcmU6OkRyYWdEYXRhJik7Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxQZXJmb3JtRHJhZ1NvdXJj
ZUFjdGlvbihXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCYsIFdlYkNvcmU6OkRhdGFUcmFuc2ZlciYpOwotICAgIHZpcnR1YWwgV2ViQ29yZTo6RHJhZ0Rl
c3RpbmF0aW9uQWN0aW9uIGFjdGlvbk1hc2tGb3JEcmFnKFdlYkNvcmU6OkRyYWdEYXRhJik7Ci0g
ICAgdmlydHVhbCBXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uIGRyYWdTb3VyY2VBY3Rpb25NYXNr
Rm9yUG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHdpbmRvd1BvaW50KTsKLSAgICB2aXJ0
dWFsIHZvaWQgc3RhcnREcmFnKFdlYkNvcmU6OkRyYWdJbWFnZVJlZiwgY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmIGRyYWdJbWFnZU9yaWdpbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGV2ZW50
UG9zLCBXZWJDb3JlOjpEYXRhVHJhbnNmZXImLCBXZWJDb3JlOjpGcmFtZSYsIGJvb2wgbGlua0Ry
YWcgPSBmYWxzZSk7Ci19OwotCi19Ci0KLSNlbmRpZiAvLyBEcmFnQ2xpZW50RWZsX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3Vw
cG9ydEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVy
VHJlZVN1cHBvcnRFZmwuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NjdmODE3
Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5k
ZXJUcmVlU3VwcG9ydEVmbC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw3NTQgKzAsMCBAQAotLyoK
LSAgICBDb3B5cmlnaHQgKEMpIDIwMTEgUHJvRlVTSU9OIGVtYmVkZGVkIHN5c3RlbXMKLSAgICBD
b3B5cmlnaHQgKEMpIDIwMTEgU2Ftc3VuZyBFbGVjdHJvbmljcwotICAgIENvcHlyaWdodCAoQykg
MjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAgICBDb3B5cmln
aHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotCi0gICAgVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgot
ICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCi0gICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCi0gICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAg
ICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQotICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgotCi0gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAgIGFsb25nIHdpdGggdGhpcyBsaWJy
YXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gICAgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0
aCBGbG9vciwKLSAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSovCi0KLSNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuaCIKLQotI2lu
Y2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50RWZsLmgiCi0jaW5jbHVkZSAiZXdrX2ZyYW1lX3ByaXZh
dGUuaCIKLSNpbmNsdWRlICJld2tfaGlzdG9yeV9wcml2YXRlLmgiCi0jaW5jbHVkZSAiZXdrX3By
aXZhdGUuaCIKLSNpbmNsdWRlICJld2tfdmlld19wcml2YXRlLmgiCi0KLSNpbmNsdWRlIDxBUElD
YXN0Lmg+Ci0jaW5jbHVkZSA8QW5pbWF0aW9uQ29udHJvbGxlci5oPgotI2luY2x1ZGUgPERPTVdp
bmRvdy5oPgotI2luY2x1ZGUgPERvY3VtZW50TG9hZGVyLmg+Ci0jaW5jbHVkZSA8RWRpdG9yLmg+
Ci0jaW5jbHVkZSA8RWRpdG9yQ2xpZW50RWZsLmg+Ci0jaW5jbHVkZSA8RWluYS5oPgotI2luY2x1
ZGUgPEV2YXMuaD4KLSNpbmNsdWRlIDxGaW5kT3B0aW9ucy5oPgotI2luY2x1ZGUgPEZsb2F0U2l6
ZS5oPgotI2luY2x1ZGUgPEZvY3VzQ29udHJvbGxlci5oPgotI2luY2x1ZGUgPEZyYW1lTG9hZGVy
Lmg+Ci0jaW5jbHVkZSA8RnJhbWVTZWxlY3Rpb24uaD4KLSNpbmNsdWRlIDxGcmFtZVZpZXcuaD4K
LSNpbmNsdWRlIDxIVE1MSW5wdXRFbGVtZW50Lmg+Ci0jaW5jbHVkZSA8SW5zcGVjdG9yQ29udHJv
bGxlci5oPgotI2luY2x1ZGUgPEludFJlY3QuaD4KLSNpbmNsdWRlIDxKU0NTU1N0eWxlRGVjbGFy
YXRpb24uaD4KLSNpbmNsdWRlIDxKU0RPTVdpbmRvdy5oPgotI2luY2x1ZGUgPEpTRWxlbWVudC5o
PgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL09wYXF1ZUpTU3RyaW5nLmg+Ci0jaW5jbHVkZSA8
TWVtb3J5Q2FjaGUuaD4KLSNpbmNsdWRlIDxNdXRhdGlvbk9ic2VydmVyLmg+Ci0jaW5jbHVkZSA8
UGFnZUdyb3VwLmg+Ci0jaW5jbHVkZSA8UHJpbnRDb250ZXh0Lmg+Ci0jaW5jbHVkZSA8UmVuZGVy
VHJlZUFzVGV4dC5oPgotI2luY2x1ZGUgPFJlc291cmNlTG9hZFNjaGVkdWxlci5oPgotI2luY2x1
ZGUgPFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaD4KLSNpbmNsdWRlIDxTY2hlbWVSZWdpc3RyeS5o
PgotI2luY2x1ZGUgPFNjcmlwdENvbnRyb2xsZXIuaD4KLSNpbmNsdWRlIDxTZXR0aW5ncy5oPgot
I2luY2x1ZGUgPFRleHRJdGVyYXRvci5oPgotI2luY2x1ZGUgPFZpc2libGVTZWxlY3Rpb24uaD4K
LSNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgotI2luY2x1ZGUgPGJpbmRpbmdzL2pz
L0dDQ29udHJvbGxlci5oPgotI2luY2x1ZGUgPGhpc3RvcnkvSGlzdG9yeUl0ZW0uaD4KLSNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgotCi0jaWYgRU5BQkxFKEdFT0xPQ0FUSU9OKQotI2luY2x1ZGUg
PEdlb2xvY2F0aW9uQ2xpZW50TW9jay5oPgotI2luY2x1ZGUgPEdlb2xvY2F0aW9uQ29udHJvbGxl
ci5oPgotI2luY2x1ZGUgPEdlb2xvY2F0aW9uRXJyb3IuaD4KLSNpbmNsdWRlIDxHZW9sb2NhdGlv
blBvc2l0aW9uLmg+Ci0jaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+Ci0jZW5kaWYKLQotI2lm
IEhBVkUoQUNDRVNTSUJJTElUWSkKLSNpbmNsdWRlICJBWE9iamVjdENhY2hlLmgiCi0jaW5jbHVk
ZSAiQWNjZXNzaWJpbGl0eU9iamVjdC5oIgotI2luY2x1ZGUgIldlYktpdEFjY2Vzc2libGVXcmFw
cGVyQXRrLmgiCi0jZW5kaWYKLQotI2RlZmluZSBEUlRfU1VQUE9SVF9GUkFNRV9HRVRfT1JfUkVU
VVJOKGV3a0ZyYW1lLCBmcmFtZSwgLi4uKSBcCi0gICAgV2ViQ29yZTo6RnJhbWUqIGZyYW1lID0g
RVdLUHJpdmF0ZTo6Y29yZUZyYW1lKGV3a0ZyYW1lKTsgIFwKLSAgICBpZiAoIWZyYW1lKSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICByZXR1
cm4gX19WQV9BUkdTX187Ci0KLSNkZWZpbmUgRFJUX1NVUFBSVF9QQUdFX0dFVF9PUl9SRVRVUk4o
ZXdrVmlldywgcGFnZSwgLi4uKSBcCi0gICAgV2ViQ29yZTo6UGFnZSogcGFnZSA9IEVXS1ByaXZh
dGU6OmNvcmVQYWdlKGV3a1ZpZXcpOyAgXAotICAgIGlmICghcGFnZSkgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgcmV0dXJuIF9fVkFfQVJHU19f
OwotCi1ib29sIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6c19kcnRSdW4gPSBmYWxzZTsKLQot
dm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OnNldER1bXBSZW5kZXJUcmVlTW9kZUVuYWJs
ZWQoYm9vbCBlbmFibGVkKQotewotICAgIHNfZHJ0UnVuID0gZW5hYmxlZDsKLX0KLQotYm9vbCBE
dW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OmR1bXBSZW5kZXJUcmVlTW9kZUVuYWJsZWQoKQotewot
ICAgIHJldHVybiBzX2RydFJ1bjsKLX0KLQotYm9vbCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6
OmNhbGxTaG91bGRDbG9zZU9uV2ViVmlldyhFdmFzX09iamVjdCogZXdrRnJhbWUpCi17Ci0gICAg
RFJUX1NVUFBPUlRfRlJBTUVfR0VUX09SX1JFVFVSTihld2tGcmFtZSwgZnJhbWUsIGZhbHNlKTsK
LQotICAgIHJldHVybiBmcmFtZS0+bG9hZGVyKCkuc2hvdWxkQ2xvc2UoKTsKLX0KLQotdm9pZCBE
dW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OmNsZWFyRnJhbWVOYW1lKEV2YXNfT2JqZWN0KiBld2tG
cmFtZSkKLXsKLSAgICBEUlRfU1VQUE9SVF9GUkFNRV9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBm
cmFtZSk7Ci0KLSAgICBmcmFtZS0+dHJlZSgpLmNsZWFyTmFtZSgpOwotfQotCi12b2lkIER1bXBS
ZW5kZXJUcmVlU3VwcG9ydEVmbDo6Y2xlYXJPcGVuZXIoRXZhc19PYmplY3QqIGV3a0ZyYW1lKQot
ewotICAgIERSVF9TVVBQT1JUX0ZSQU1FX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIGZyYW1lKTsK
LQotICAgIGZyYW1lLT5sb2FkZXIoKS5zZXRPcGVuZXIoMCk7Ci19Ci0KLVN0cmluZyBEdW1wUmVu
ZGVyVHJlZVN1cHBvcnRFZmw6OmxheWVyVHJlZUFzVGV4dChjb25zdCBFdmFzX09iamVjdCogZXdr
RnJhbWUpCi17Ci0gICAgRFJUX1NVUFBPUlRfRlJBTUVfR0VUX09SX1JFVFVSTihld2tGcmFtZSwg
ZnJhbWUsIFN0cmluZygpKTsKLQotICAgIHJldHVybiBmcmFtZS0+bGF5ZXJUcmVlQXNUZXh0KCk7
Ci19Ci0KLUVpbmFfTGlzdCogRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpmcmFtZUNoaWxkcmVu
KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tGcmFtZSkKLXsKLSAgICBEUlRfU1VQUE9SVF9GUkFNRV9H
RVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBmcmFtZSwgMCk7Ci0KLSAgICBFaW5hX0xpc3QqIGNoaWxk
RnJhbWVzID0gMDsKLQotICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IGZyYW1l
LT50cmVlKCkuY2hpbGRDb3VudCgpOyBpbmRleCsrKSB7Ci0gICAgICAgIFdlYkNvcmU6OkZyYW1l
ICpjaGlsZEZyYW1lID0gZnJhbWUtPnRyZWUoKS5jaGlsZChpbmRleCk7Ci0gICAgICAgIFdlYkNv
cmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsJiBjbGllbnQgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpG
cmFtZUxvYWRlckNsaWVudEVmbCY+KGNoaWxkRnJhbWUtPmxvYWRlcigpLmNsaWVudCgpKTsKLQot
ICAgICAgICBjaGlsZEZyYW1lcyA9IGVpbmFfbGlzdF9hcHBlbmQoY2hpbGRGcmFtZXMsIGNsaWVu
dC53ZWJGcmFtZSgpKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gY2hpbGRGcmFtZXM7Ci19Ci0KLVdl
YkNvcmU6OkZyYW1lKiBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OmZyYW1lUGFyZW50KGNvbnN0
IEV2YXNfT2JqZWN0KiBld2tGcmFtZSkKLXsKLSAgICBEUlRfU1VQUE9SVF9GUkFNRV9HRVRfT1Jf
UkVUVVJOKGV3a0ZyYW1lLCBmcmFtZSwgMCk7Ci0KLSAgICByZXR1cm4gZnJhbWUtPnRyZWUoKS5w
YXJlbnQoKTsKLX0KLQotdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OmxheW91dEZyYW1l
KEV2YXNfT2JqZWN0KiBld2tGcmFtZSkKLXsKLSAgICBEUlRfU1VQUE9SVF9GUkFNRV9HRVRfT1Jf
UkVUVVJOKGV3a0ZyYW1lLCBmcmFtZSk7Ci0KLSAgICBpZiAoIWZyYW1lLT52aWV3KCkpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIGZyYW1lLT52aWV3KCktPmxheW91dCgpOwotfQotCi11bnNpZ25l
ZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OnBlbmRpbmdVbmxvYWRFdmVudENvdW50KGNvbnN0
IEV2YXNfT2JqZWN0KiBld2tGcmFtZSkKLXsKLSAgICBEUlRfU1VQUE9SVF9GUkFNRV9HRVRfT1Jf
UkVUVVJOKGV3a0ZyYW1lLCBmcmFtZSwgMCk7Ci0KLSAgICByZXR1cm4gZnJhbWUtPmRvY3VtZW50
KCktPmRvbVdpbmRvdygpLT5wZW5kaW5nVW5sb2FkRXZlbnRMaXN0ZW5lcnMoKTsKLX0KLQotU3Ry
aW5nIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6cmVuZGVyVHJlZUR1bXAoRXZhc19PYmplY3Qq
IGV3a0ZyYW1lKQotewotICAgIERSVF9TVVBQT1JUX0ZSQU1FX0dFVF9PUl9SRVRVUk4oZXdrRnJh
bWUsIGZyYW1lLCBTdHJpbmcoKSk7Ci0KLSAgICBXZWJDb3JlOjpGcmFtZVZpZXcgKmZyYW1lVmll
dyA9IGZyYW1lLT52aWV3KCk7Ci0KLSAgICBpZiAoZnJhbWVWaWV3ICYmIGZyYW1lVmlldy0+bGF5
b3V0UGVuZGluZygpKQotICAgICAgICBmcmFtZVZpZXctPmxheW91dCgpOwotCi0gICAgcmV0dXJu
IFdlYkNvcmU6OmV4dGVybmFsUmVwcmVzZW50YXRpb24oZnJhbWUpOwotfQotCi1TdHJpbmcgRHVt
cFJlbmRlclRyZWVTdXBwb3J0RWZsOjpyZXNwb25zZU1pbWVUeXBlKGNvbnN0IEV2YXNfT2JqZWN0
KiBld2tGcmFtZSkKLXsKLSAgICBEUlRfU1VQUE9SVF9GUkFNRV9HRVRfT1JfUkVUVVJOKGV3a0Zy
YW1lLCBmcmFtZSwgU3RyaW5nKCkpOwotCi0gICAgV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIgKmRv
Y3VtZW50TG9hZGVyID0gZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCk7Ci0KLSAgICBp
ZiAoIWRvY3VtZW50TG9hZGVyKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICByZXR1
cm4gZG9jdW1lbnRMb2FkZXItPnJlc3BvbnNlTUlNRVR5cGUoKTsKLX0KLQotV2ViQ29yZTo6SW50
UmVjdCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OnNlbGVjdGlvblJlY3RhbmdsZShjb25zdCBF
dmFzX09iamVjdCogZXdrRnJhbWUpCi17Ci0gICAgRFJUX1NVUFBPUlRfRlJBTUVfR0VUX09SX1JF
VFVSTihld2tGcmFtZSwgZnJhbWUsIFdlYkNvcmU6OkludFJlY3QoKSk7Ci0KLSAgICByZXR1cm4g
ZW5jbG9zaW5nSW50UmVjdChmcmFtZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uQm91bmRzKCkpOwot
fQotCi0vLyBDb21wYXJlIHdpdGggIldlYktpdC9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRnJh
bWVMb2FkRGVsZWdhdGUubW0KLVN0cmluZyBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OnN1aXRh
YmxlRFJURnJhbWVOYW1lKGNvbnN0IEV2YXNfT2JqZWN0KiBld2tGcmFtZSkKLXsKLSAgICBEUlRf
U1VQUE9SVF9GUkFNRV9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBmcmFtZSwgU3RyaW5nKCkpOwot
Ci0gICAgY29uc3QgU3RyaW5nIGZyYW1lTmFtZShld2tfZnJhbWVfbmFtZV9nZXQoZXdrRnJhbWUp
KTsKLQotICAgIGlmIChld2tGcmFtZSA9PSBld2tfdmlld19mcmFtZV9tYWluX2dldChld2tfZnJh
bWVfdmlld19nZXQoZXdrRnJhbWUpKSkgewotICAgICAgICBpZiAoIWZyYW1lTmFtZS5pc0VtcHR5
KCkpCi0gICAgICAgICAgICByZXR1cm4gU3RyaW5nKCJtYWluIGZyYW1lIFwiIikgKyBmcmFtZU5h
bWUgKyBTdHJpbmcoIlwiIik7Ci0KLSAgICAgICAgcmV0dXJuIFN0cmluZygibWFpbiBmcmFtZSIp
OwotICAgIH0KLQotICAgIGlmICghZnJhbWVOYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJu
IFN0cmluZygiZnJhbWUgXCIiKSArIGZyYW1lTmFtZSArIFN0cmluZygiXCIiKTsKLQotICAgIHJl
dHVybiBTdHJpbmcoImZyYW1lIChhbm9ueW1vdXMpIik7Ci19Ci0KLWNvbnN0IFdlYkNvcmU6OlVS
TCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OnByb3Zpc2lvbmFsVVJMKGNvbnN0IEV2YXNfT2Jq
ZWN0KiBld2tGcmFtZSkKLXsKLSAgICBEUlRfU1VQUE9SVF9GUkFNRV9HRVRfT1JfUkVUVVJOKGV3
a0ZyYW1lLCBmcmFtZSwgV2ViQ29yZTo6VVJMKCkpOwotCi0gICAgV2ViQ29yZTo6RG9jdW1lbnRM
b2FkZXIqIHByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIgPSBmcmFtZS0+bG9hZGVyKCkucHJvdmlz
aW9uYWxEb2N1bWVudExvYWRlcigpOwotICAgIGlmICghcHJvdmlzaW9uYWxEb2N1bWVudExvYWRl
cikKLSAgICAgICAgcmV0dXJuIFdlYkNvcmU6OlVSTCgpOwotCi0gICAgcmV0dXJuIHByb3Zpc2lv
bmFsRG9jdW1lbnRMb2FkZXItPnVybCgpOwotfQotCi12b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9y
dEVmbDo6c2V0VmFsdWVGb3JVc2VyKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIG5v
ZGVPYmplY3QsIGNvbnN0IFN0cmluZyYgdmFsdWUpCi17Ci0gICAgSlNDOjpFeGVjU3RhdGUqIGV4
ZWMgPSB0b0pTKGNvbnRleHQpOwotICAgIFdlYkNvcmU6OkVsZW1lbnQqIGVsZW1lbnQgPSBXZWJD
b3JlOjp0b0VsZW1lbnQodG9KUyhleGVjLCBub2RlT2JqZWN0KSk7Ci0gICAgaWYgKCFlbGVtZW50
KQotICAgICAgICByZXR1cm47Ci0gICAgV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudCogaW5wdXRF
bGVtZW50ID0gZWxlbWVudC0+dG9JbnB1dEVsZW1lbnQoKTsKLSAgICBpZiAoIWlucHV0RWxlbWVu
dCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaW5wdXRFbGVtZW50LT5zZXRWYWx1ZUZvclVzZXIo
dmFsdWUpOwotfQotCi12b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6c2V0RGVmZXJzTG9h
ZGluZyhFdmFzX09iamVjdCogZXdrVmlldywgYm9vbCBkZWZlcnMpCi17Ci0gICAgRFJUX1NVUFBS
VF9QQUdFX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgcGFnZSk7Ci0KLSAgICBwYWdlLT5zZXREZWZl
cnNMb2FkaW5nKGRlZmVycyk7Ci19Ci0KLXZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpz
ZXRMb2Fkc1NpdGVJY29uc0lnbm9yaW5nSW1hZ2VMb2FkaW5nU2V0dGluZyhFdmFzX09iamVjdCog
ZXdrVmlldywgYm9vbCBsb2Fkc1NpdGVJY29uc0lnbm9yaW5nSW1hZ2VMb2FkaW5nUHJlZmVyZW5j
ZXMpCi17Ci0gICAgRFJUX1NVUFBSVF9QQUdFX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgcGFnZSk7
Ci0KLSAgICBwYWdlLT5zZXR0aW5ncygpLnNldExvYWRzU2l0ZUljb25zSWdub3JpbmdJbWFnZUxv
YWRpbmdTZXR0aW5nKGxvYWRzU2l0ZUljb25zSWdub3JpbmdJbWFnZUxvYWRpbmdQcmVmZXJlbmNl
cyk7Ci19Ci0KLXZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpzZXRNaW5pbXVtTG9naWNh
bEZvbnRTaXplKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBpbnQgc2l6ZSkKLXsKLSAgICBEUlRfU1VQ
UFJUX1BBR0VfR0VUX09SX1JFVFVSTihld2tWaWV3LCBwYWdlKTsKLQotICAgIHBhZ2UtPnNldHRp
bmdzKCkuc2V0TWluaW11bUxvZ2ljYWxGb250U2l6ZShzaXplKTsKLX0KLQotdm9pZCBEdW1wUmVu
ZGVyVHJlZVN1cHBvcnRFZmw6OmFkZFVzZXJTY3JpcHQoY29uc3QgRXZhc19PYmplY3QqIGV3a1Zp
ZXcsIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSwgYm9vbCBydW5BdFN0YXJ0LCBib29sIGFsbEZy
YW1lcykKLXsKLSAgICBEUlRfU1VQUFJUX1BBR0VfR0VUX09SX1JFVFVSTihld2tWaWV3LCBwYWdl
KTsKLQotICAgIHBhZ2UtPmdyb3VwKCkuYWRkVXNlclNjcmlwdFRvV29ybGQoV2ViQ29yZTo6bWFp
blRocmVhZE5vcm1hbFdvcmxkKCksIHNvdXJjZUNvZGUsIFdlYkNvcmU6OlVSTCgpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVjdG9yPFN0cmluZz4oKSwgVmVjdG9y
PFN0cmluZz4oKSwgcnVuQXRTdGFydCA/IFdlYkNvcmU6OkluamVjdEF0RG9jdW1lbnRTdGFydCA6
IFdlYkNvcmU6OkluamVjdEF0RG9jdW1lbnRFbmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBhbGxGcmFtZXMgPyBXZWJDb3JlOjpJbmplY3RJbkFsbEZyYW1lcyA6IFdl
YkNvcmU6OkluamVjdEluVG9wRnJhbWVPbmx5KTsKLX0KLQotdm9pZCBEdW1wUmVuZGVyVHJlZVN1
cHBvcnRFZmw6OmNsZWFyVXNlclNjcmlwdHMoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCi17
Ci0gICAgRFJUX1NVUFBSVF9QQUdFX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgcGFnZSk7Ci0KLSAg
ICBwYWdlLT5ncm91cCgpLnJlbW92ZVVzZXJTY3JpcHRzRnJvbVdvcmxkKFdlYkNvcmU6Om1haW5U
aHJlYWROb3JtYWxXb3JsZCgpKTsKLX0KLQotdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6
OmFkZFVzZXJTdHlsZVNoZWV0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBTdHJp
bmcmIHNvdXJjZUNvZGUsIGJvb2wgYWxsRnJhbWVzKQotewotICAgIERSVF9TVVBQUlRfUEFHRV9H
RVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHBhZ2UpOwotCi0gICAgcGFnZS0+Z3JvdXAoKS5hZGRVc2Vy
U3R5bGVTaGVldFRvV29ybGQoV2ViQ29yZTo6bWFpblRocmVhZE5vcm1hbFdvcmxkKCksIHNvdXJj
ZUNvZGUsIFdlYkNvcmU6OlVSTCgpLCBWZWN0b3I8U3RyaW5nPigpLCBWZWN0b3I8U3RyaW5nPigp
LCBhbGxGcmFtZXMgPyBXZWJDb3JlOjpJbmplY3RJbkFsbEZyYW1lcyA6IFdlYkNvcmU6OkluamVj
dEluVG9wRnJhbWVPbmx5KTsKLX0KLQotdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OmNs
ZWFyVXNlclN0eWxlU2hlZXRzKGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQotewotICAgIERS
VF9TVVBQUlRfUEFHRV9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHBhZ2UpOwotCi0gICAgcGFnZS0+
Z3JvdXAoKS5yZW1vdmVVc2VyU3R5bGVTaGVldHNGcm9tV29ybGQoV2ViQ29yZTo6bWFpblRocmVh
ZE5vcm1hbFdvcmxkKCkpOwotfQotCi12b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6ZXhl
Y3V0ZUNvcmVDb21tYW5kQnlOYW1lKGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBj
aGFyKiBuYW1lLCBjb25zdCBjaGFyKiB2YWx1ZSkKLXsKLSAgICBEUlRfU1VQUFJUX1BBR0VfR0VU
X09SX1JFVFVSTihld2tWaWV3LCBwYWdlKTsKLQotICAgIHBhZ2UtPmZvY3VzQ29udHJvbGxlcigp
LmZvY3VzZWRPck1haW5GcmFtZSgpLmVkaXRvcigpLmNvbW1hbmQobmFtZSkuZXhlY3V0ZSh2YWx1
ZSk7Ci19Ci0KLWJvb2wgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpmaW5kU3RyaW5nKGNvbnN0
IEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBTdHJpbmcmIHRleHQsIFdlYkNvcmU6OkZpbmRP
cHRpb25zIG9wdGlvbnMpCi17Ci0gICAgRFJUX1NVUFBSVF9QQUdFX0dFVF9PUl9SRVRVUk4oZXdr
VmlldywgcGFnZSwgZmFsc2UpOwotCi0gICAgcmV0dXJuIHBhZ2UtPmZpbmRTdHJpbmcodGV4dCwg
b3B0aW9ucyk7Ci19Ci0KLXZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpzZXRDU1NSZWdp
b25zRW5hYmxlZChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldywgYm9vbCBlbmFibGVkKQotewot
ICAgIERSVF9TVVBQUlRfUEFHRV9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHBhZ2UpOwotCi0gICAg
V2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zZXRDU1NS
ZWdpb25zRW5hYmxlZChlbmFibGVkKTsKLX0KLQotdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRF
Zmw6OnNldFdlYkF1ZGlvRW5hYmxlZChFdmFzX09iamVjdCogZXdrVmlldywgYm9vbCBlbmFibGVk
KQotewotI2lmIEVOQUJMRShXRUJfQVVESU8pCi0gICAgRFJUX1NVUFBSVF9QQUdFX0dFVF9PUl9S
RVRVUk4oZXdrVmlldywgcGFnZSk7Ci0KLSAgICBwYWdlLT5zZXR0aW5ncygpLnNldFdlYkF1ZGlv
RW5hYmxlZChlbmFibGVkKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGV3a1ZpZXcpOwotICAg
IFVOVVNFRF9QQVJBTShlbmFibGVkKTsKLSNlbmRpZgotfQotCi1ib29sIER1bXBSZW5kZXJUcmVl
U3VwcG9ydEVmbDo6aXNDb21tYW5kRW5hYmxlZChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldywg
Y29uc3QgY2hhciogbmFtZSkKLXsKLSAgICBEUlRfU1VQUFJUX1BBR0VfR0VUX09SX1JFVFVSTihl
d2tWaWV3LCBwYWdlLCBmYWxzZSk7Ci0KLSAgICByZXR1cm4gcGFnZS0+Zm9jdXNDb250cm9sbGVy
KCkuZm9jdXNlZE9yTWFpbkZyYW1lKCkuZWRpdG9yKCkuY29tbWFuZChuYW1lKS5pc0VuYWJsZWQo
KTsKLX0KLQotdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OmZvcmNlTGF5b3V0KEV2YXNf
T2JqZWN0KiBld2tGcmFtZSkKLXsKLSAgICBld2tfZnJhbWVfZm9yY2VfbGF5b3V0KGV3a0ZyYW1l
KTsKLX0KLQotdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OmZvcmNlUGFpbnQoRXZhc19P
YmplY3QqIGV3a1ZpZXcpCi17Ci0gICAgZXdrX3ZpZXdfZm9yY2VfcGFpbnQoZXdrVmlldyk7Ci19
Ci0KLXZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpzZXRUcmFja3NSZXBhaW50cyhFdmFz
X09iamVjdCogZXdrRnJhbWUsIGJvb2wgZW5hYmxlZCkKLXsKLSAgICBEUlRfU1VQUE9SVF9GUkFN
RV9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBmcmFtZSk7Ci0KLSAgICBpZiAoZnJhbWUtPnZpZXco
KSkKLSAgICAgICAgZnJhbWUtPnZpZXcoKS0+c2V0VHJhY2tzUmVwYWludHMoZW5hYmxlZCk7Ci19
Ci0KLXZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpyZXNldFRyYWNrZWRSZXBhaW50cyhF
dmFzX09iamVjdCogZXdrRnJhbWUpCi17Ci0gICAgRFJUX1NVUFBPUlRfRlJBTUVfR0VUX09SX1JF
VFVSTihld2tGcmFtZSwgZnJhbWUpOwotCi0gICAgaWYgKGZyYW1lLT52aWV3KCkpCi0gICAgICAg
IGZyYW1lLT52aWV3KCktPnJlc2V0VHJhY2tlZFJlcGFpbnRzKCk7Ci19Ci0KLWJvb2wgRHVtcFJl
bmRlclRyZWVTdXBwb3J0RWZsOjppc1RyYWNraW5nUmVwYWludHMoY29uc3QgRXZhc19PYmplY3Qq
IGV3a0ZyYW1lKQotewotICAgIERSVF9TVVBQT1JUX0ZSQU1FX0dFVF9PUl9SRVRVUk4oZXdrRnJh
bWUsIGZyYW1lLCBmYWxzZSk7Ci0KLSAgICBpZiAoIWZyYW1lLT52aWV3KCkpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgIHJldHVybiBmcmFtZS0+dmlldygpLT5pc1RyYWNraW5nUmVwYWlu
dHMoKTsKLX0KLQotRWluYV9MaXN0KiBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OnRyYWNrZWRS
ZXBhaW50UmVjdHMoY29uc3QgRXZhc19PYmplY3QqIGV3a0ZyYW1lKQotewotICAgIERSVF9TVVBQ
T1JUX0ZSQU1FX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIGZyYW1lLCAwKTsKLQotICAgIGlmICgh
ZnJhbWUtPnZpZXcoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBjb25zdCBWZWN0b3I8V2Vi
Q29yZTo6RmxvYXRSZWN0PiYgcmVwYWludFJlY3RzID0gZnJhbWUtPnZpZXcoKS0+dHJhY2tlZFJl
cGFpbnRSZWN0cygpOwotICAgIHNpemVfdCBjb3VudCA9IHJlcGFpbnRSZWN0cy5zaXplKCk7Ci0g
ICAgRWluYV9MaXN0KiByZWN0TGlzdCA9IDA7Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGNvdW50OyArK2kpIHsKLSAgICAgICAgRWluYV9SZWN0YW5nbGUqIHJlY3QgPSBlaW5hX3JlY3Rh
bmdsZV9uZXcocmVwYWludFJlY3RzW2ldLngoKSwgcmVwYWludFJlY3RzW2ldLnkoKSwgcmVwYWlu
dFJlY3RzW2ldLndpZHRoKCksIHJlcGFpbnRSZWN0c1tpXS5oZWlnaHQoKSk7Ci0gICAgICAgIHJl
Y3RMaXN0ID0gZWluYV9saXN0X2FwcGVuZChyZWN0TGlzdCwgcmVjdCk7Ci0gICAgfQotCi0gICAg
cmV0dXJuIHJlY3RMaXN0OwotfQotCi12b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6Z2Fy
YmFnZUNvbGxlY3RvckNvbGxlY3QoKQotewotICAgIFdlYkNvcmU6OmdjQ29udHJvbGxlcigpLmdh
cmJhZ2VDb2xsZWN0Tm93KCk7Ci19Ci0KLXZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpn
YXJiYWdlQ29sbGVjdG9yQ29sbGVjdE9uQWx0ZXJuYXRlVGhyZWFkKGJvb2wgd2FpdFVudGlsRG9u
ZSkKLXsKLSAgICBXZWJDb3JlOjpnY0NvbnRyb2xsZXIoKS5nYXJiYWdlQ29sbGVjdE9uQWx0ZXJu
YXRlVGhyZWFkRm9yRGVidWdnaW5nKHdhaXRVbnRpbERvbmUpOwotfQotCi1zaXplX3QgRHVtcFJl
bmRlclRyZWVTdXBwb3J0RWZsOjpqYXZhU2NyaXB0T2JqZWN0c0NvdW50KCkKLXsKLSAgICByZXR1
cm4gV2ViQ29yZTo6SlNET01XaW5kb3c6OmNvbW1vblZNKCkuaGVhcC5vYmplY3RDb3VudCgpOwot
fQotCi12b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6c2V0RGVhZERlY29kZWREYXRhRGVs
ZXRpb25JbnRlcnZhbChkb3VibGUgaW50ZXJ2YWwpCi17Ci0gICAgV2ViQ29yZTo6bWVtb3J5Q2Fj
aGUoKS0+c2V0RGVhZERlY29kZWREYXRhRGVsZXRpb25JbnRlcnZhbChzdGQ6OmNocm9ubzo6bWls
bGlzZWNvbmRzIHsgc3RhdGljX2Nhc3Q8c3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kczo6cmVwPihp
bnRlcnZhbCAqIDEwMDApIH0pOwotfQotCi1IaXN0b3J5SXRlbUNoaWxkcmVuVmVjdG9yIER1bXBS
ZW5kZXJUcmVlU3VwcG9ydEVmbDo6Y2hpbGRIaXN0b3J5SXRlbXMoY29uc3QgRXdrX0hpc3Rvcnlf
SXRlbSogZXdrSGlzdG9yeUl0ZW0pCi17Ci0gICAgV2ViQ29yZTo6SGlzdG9yeUl0ZW0qIGhpc3Rv
cnlJdGVtID0gRVdLUHJpdmF0ZTo6Y29yZUhpc3RvcnlJdGVtKGV3a0hpc3RvcnlJdGVtKTsKLSAg
ICBIaXN0b3J5SXRlbUNoaWxkcmVuVmVjdG9yIGtpZHM7Ci0KLSAgICBpZiAoIWhpc3RvcnlJdGVt
KQotICAgICAgICByZXR1cm4ga2lkczsKLQotICAgIGNvbnN0IFdlYkNvcmU6Okhpc3RvcnlJdGVt
VmVjdG9yJiBjaGlsZHJlbiA9IGhpc3RvcnlJdGVtLT5jaGlsZHJlbigpOwotICAgIGNvbnN0IHVu
c2lnbmVkIHNpemUgPSBjaGlsZHJlbi5zaXplKCk7Ci0KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgIEV3a19IaXN0b3J5X0l0ZW0qIGtpZCA9IGV3a19o
aXN0b3J5X2l0ZW1fbmV3X2Zyb21fY29yZShjaGlsZHJlbltpXS5nZXQoKSk7Ci0gICAgICAgIGtp
ZHMuYXBwZW5kKGtpZCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIGtpZHM7Ci19Ci0KLVN0cmluZyBE
dW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6Omhpc3RvcnlJdGVtVGFyZ2V0KGNvbnN0IEV3a19IaXN0
b3J5X0l0ZW0qIGV3a0hpc3RvcnlJdGVtKQotewotICAgIFdlYkNvcmU6Okhpc3RvcnlJdGVtKiBo
aXN0b3J5SXRlbSA9IEVXS1ByaXZhdGU6OmNvcmVIaXN0b3J5SXRlbShld2tIaXN0b3J5SXRlbSk7
Ci0KLSAgICBpZiAoIWhpc3RvcnlJdGVtKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAg
ICByZXR1cm4gaGlzdG9yeUl0ZW0tPnRhcmdldCgpOwotfQotCi1ib29sIER1bXBSZW5kZXJUcmVl
U3VwcG9ydEVmbDo6aXNUYXJnZXRJdGVtKGNvbnN0IEV3a19IaXN0b3J5X0l0ZW0qIGV3a0hpc3Rv
cnlJdGVtKQotewotICAgIFdlYkNvcmU6Okhpc3RvcnlJdGVtKiBoaXN0b3J5SXRlbSA9IEVXS1By
aXZhdGU6OmNvcmVIaXN0b3J5SXRlbShld2tIaXN0b3J5SXRlbSk7Ci0KLSAgICBpZiAoIWhpc3Rv
cnlJdGVtKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gaGlzdG9yeUl0ZW0t
PmlzVGFyZ2V0SXRlbSgpOwotfQotCi12b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6ZXZh
bHVhdGVJbldlYkluc3BlY3Rvcihjb25zdCBFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgU3Ry
aW5nJiBzY3JpcHQpCi17Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBEUlRfU1VQUFJUX1BB
R0VfR0VUX09SX1JFVFVSTihld2tWaWV3LCBwYWdlKTsKLQotICAgIHBhZ2UtPmluc3BlY3RvckNv
bnRyb2xsZXIoKS5ldmFsdWF0ZUZvclRlc3RJbkZyb250ZW5kKHNjcmlwdCk7Ci0jZWxzZQotICAg
IFVOVVNFRF9QQVJBTShld2tWaWV3KTsKLSAgICBVTlVTRURfUEFSQU0oc2NyaXB0KTsKLSNlbmRp
ZgotfQotCi12b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6ZXZhbHVhdGVTY3JpcHRJbklz
b2xhdGVkV29ybGQoY29uc3QgRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBpbnQgd29ybGRJRCwgSlNP
YmplY3RSZWYgZ2xvYmFsT2JqZWN0LCBjb25zdCBTdHJpbmcmIHNjcmlwdCkKLXsKLSAgICBEUlRf
U1VQUE9SVF9GUkFNRV9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBmcmFtZSk7Ci0KLSAgICAvLyBD
b21tZW50IGZyb20gbWFjOiBTdGFydCBvZmYgd2l0aCBzb21lIGd1ZXNzIGF0IGEgZnJhbWUgYW5k
IGEgZ2xvYmFsIG9iamVjdCwgd2UnbGwgdHJ5IHRvIGRvIGJldHRlci4uLiEKLSAgICBXZWJDb3Jl
OjpKU0RPTVdpbmRvdyogYW55V29ybGRHbG9iYWxPYmplY3QgPSBmcmFtZS0+c2NyaXB0KCkuZ2xv
YmFsT2JqZWN0KFdlYkNvcmU6Om1haW5UaHJlYWROb3JtYWxXb3JsZCgpKTsKLQotICAgIC8vIENv
bW1lbnQgZnJvbSBtYWM6IFRoZSBnbG9iYWwgb2JqZWN0IGlzIHByb2JhYmx5IGEgc2hlbGwgb2Jq
ZWN0PyAtIGlmIHNvLCB3ZSBrbm93IGhvdyB0byB1c2UgdGhpcyEKLSAgICBKU0M6OkpTT2JqZWN0
KiBnbG9iYWxPYmplY3RPYmogPSB0b0pTKGdsb2JhbE9iamVjdCk7Ci0gICAgaWYgKCFzdHJjbXAo
Z2xvYmFsT2JqZWN0T2JqLT5jbGFzc0luZm8oKS0+Y2xhc3NOYW1lLCAiSlNET01XaW5kb3dTaGVs
bCIpKQotICAgICAgICBhbnlXb3JsZEdsb2JhbE9iamVjdCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6
OkpTRE9NV2luZG93U2hlbGwqPihnbG9iYWxPYmplY3RPYmopLT53aW5kb3coKTsKLQotICAgIC8v
IENvbW1lbnQgZnJvbSBtYWM6IEdldCB0aGUgZnJhbWUgZnJvbSB0aGUgZ2xvYmFsIG9iamVjdCB3
ZSd2ZSBzZXR0bGVkIG9uLgotICAgIFdlYkNvcmU6OkZyYW1lKiBnbG9iYWxGcmFtZSA9IGFueVdv
cmxkR2xvYmFsT2JqZWN0LT5pbXBsKCkuZnJhbWUoKTsKLSAgICBpZiAoIWdsb2JhbEZyYW1lKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyJiBwcm94eSA9
IGdsb2JhbEZyYW1lLT5zY3JpcHQoKTsKLQotICAgIHN0YXRpYyBXVEY6Okhhc2hNYXA8aW50LCBX
VEY6OlJlZlB0cjxXZWJDb3JlOjpET01XcmFwcGVyV29ybGQgPiA+IHdvcmxkTWFwOwotCi0gICAg
V1RGOjpSZWZQdHI8V2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkPiBzY3JpcHRXb3JsZDsKLSAgICBp
ZiAoIXdvcmxkSUQpCi0gICAgICAgIHNjcmlwdFdvcmxkID0gV2ViQ29yZTo6U2NyaXB0Q29udHJv
bGxlcjo6Y3JlYXRlV29ybGQoKTsKLSAgICBlbHNlIHsKLSAgICAgICAgV1RGOjpIYXNoTWFwPGlu
dCwgUmVmUHRyPFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZCA+ID46OmNvbnN0X2l0ZXJhdG9yIGl0
ID0gd29ybGRNYXAuZmluZCh3b3JsZElEKTsKLSAgICAgICAgaWYgKGl0ICE9IHdvcmxkTWFwLmVu
ZCgpKQotICAgICAgICAgICAgc2NyaXB0V29ybGQgPSAoKml0KS52YWx1ZTsKLSAgICAgICAgZWxz
ZSB7Ci0gICAgICAgICAgICBzY3JpcHRXb3JsZCA9IFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6
OmNyZWF0ZVdvcmxkKCk7Ci0gICAgICAgICAgICB3b3JsZE1hcC5zZXQod29ybGRJRCwgc2NyaXB0
V29ybGQpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gVGhlIGNvZGUgYmVsb3cgaXMgb25s
eSB2YWxpZCBmb3IgSlNDLCBWOCBzcGVjaWZpYyBjb2RlIGlzIHRvIGJlIGFkZGVkCi0gICAgLy8g
d2hlbiBWOCB3aWxsIGJlIHN1cHBvcnRlZCBpbiBFRkwgcG9ydC4gU2VlIFF0IGltcGxlbWVuYXRp
b24uCi0gICAgcHJveHkuZXhlY3V0ZVNjcmlwdEluV29ybGQoKnNjcmlwdFdvcmxkLCBzY3JpcHQs
IHRydWUpOwotfQotCi1KU0dsb2JhbENvbnRleHRSZWYgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZs
OjpnbG9iYWxDb250ZXh0UmVmRm9yRnJhbWUoY29uc3QgRXZhc19PYmplY3QqIGV3a0ZyYW1lKQot
ewotICAgIERSVF9TVVBQT1JUX0ZSQU1FX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIGZyYW1lLCAw
KTsKLQotICAgIHJldHVybiB0b0dsb2JhbFJlZihmcmFtZS0+c2NyaXB0KCkuZ2xvYmFsT2JqZWN0
KFdlYkNvcmU6Om1haW5UaHJlYWROb3JtYWxXb3JsZCgpKS0+Z2xvYmFsRXhlYygpKTsKLX0KLQot
dm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OnNldE1vY2tTY3JvbGxiYXJzRW5hYmxlZChi
b29sIGVuYWJsZSkKLXsKLSAgICBXZWJDb3JlOjpTZXR0aW5nczo6c2V0TW9ja1Njcm9sbGJhcnNF
bmFibGVkKGVuYWJsZSk7Ci19Ci0KLXZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpkZWxp
dmVyQWxsTXV0YXRpb25zSWZOZWNlc3NhcnkoKQotewotICAgIFdlYkNvcmU6Ok11dGF0aW9uT2Jz
ZXJ2ZXI6OmRlbGl2ZXJBbGxNdXRhdGlvbnMoKTsKLX0KLQotdm9pZCBEdW1wUmVuZGVyVHJlZVN1
cHBvcnRFZmw6OnNldEludGVyYWN0aXZlRm9ybVZhbGlkYXRpb25FbmFibGVkKEV2YXNfT2JqZWN0
KiBld2tWaWV3LCBib29sIGVuYWJsZWQpCi17Ci0gICAgRFJUX1NVUFBSVF9QQUdFX0dFVF9PUl9S
RVRVUk4oZXdrVmlldywgcGFnZSk7Ci0KLSAgICBwYWdlLT5zZXR0aW5ncygpLnNldEludGVyYWN0
aXZlRm9ybVZhbGlkYXRpb25FbmFibGVkKGVuYWJsZWQpOwotfQotCi12b2lkIER1bXBSZW5kZXJU
cmVlU3VwcG9ydEVmbDo6c2V0VmFsaWRhdGlvbk1lc3NhZ2VUaW1lck1hZ25pZmljYXRpb24oRXZh
c19PYmplY3QqIGV3a1ZpZXcsIGludCB2YWx1ZSkKLXsKLSAgICBEUlRfU1VQUFJUX1BBR0VfR0VU
X09SX1JFVFVSTihld2tWaWV3LCBwYWdlKTsKLQotICAgIHBhZ2UtPnNldHRpbmdzKCkuc2V0VmFs
aWRhdGlvbk1lc3NhZ2VUaW1lck1hZ25pZmljYXRpb24odmFsdWUpOwotfQotCi12b2lkIER1bXBS
ZW5kZXJUcmVlU3VwcG9ydEVmbDo6c2V0QXV0aG9yQW5kVXNlclN0eWxlc0VuYWJsZWQoRXZhc19P
YmplY3QqIGV3a1ZpZXcsIGJvb2wgZW5hYmxlZCkKLXsKLSAgICBEUlRfU1VQUFJUX1BBR0VfR0VU
X09SX1JFVFVSTihld2tWaWV3LCBwYWdlKTsKLQotICAgIHBhZ2UtPnNldHRpbmdzKCkuc2V0QXV0
aG9yQW5kVXNlclN0eWxlc0VuYWJsZWQoZW5hYmxlZCk7Ci19Ci0KLXZvaWQgRHVtcFJlbmRlclRy
ZWVTdXBwb3J0RWZsOjpzZXRTZXJpYWxpemVIVFRQTG9hZHMoYm9vbCBlbmFibGVkKQotewotICAg
IFdlYkNvcmU6OnJlc291cmNlTG9hZFNjaGVkdWxlcigpLT5zZXRTZXJpYWxMb2FkaW5nRW5hYmxl
ZChlbmFibGVkKTsKLX0KLQotdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OnNldFNob3Vs
ZFRyYWNrVmlzaXRlZExpbmtzKGJvb2wgc2hvdWxkVHJhY2spCi17Ci0gICAgV2ViQ29yZTo6UGFn
ZUdyb3VwOjpzZXRTaG91bGRUcmFja1Zpc2l0ZWRMaW5rcyhzaG91bGRUcmFjayk7Ci19Ci0KLXZv
aWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpzZXRDb21wb3NpdGlvbihFdmFzX09iamVjdCog
ZXdrVmlldywgY29uc3QgY2hhciogdGV4dCwgaW50IHN0YXJ0LCBpbnQgbGVuZ3RoKQotewotICAg
IERSVF9TVVBQUlRfUEFHRV9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHBhZ2UpOwotCi0gICAgV2Vi
Q29yZTo6RWRpdG9yJiBlZGl0b3IgPSBwYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JN
YWluRnJhbWUoKS5lZGl0b3IoKTsKLSAgICBpZiAoIWVkaXRvci5jYW5FZGl0KCkgJiYgIWVkaXRv
ci5oYXNDb21wb3NpdGlvbigpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBjb25zdCBTdHJpbmcg
Y29tcG9zaXRpb25TdHJpbmcgPSBTdHJpbmc6OmZyb21VVEY4KHRleHQpOwotICAgIFZlY3RvcjxX
ZWJDb3JlOjpDb21wb3NpdGlvblVuZGVybGluZT4gdW5kZXJsaW5lczsKLSAgICB1bmRlcmxpbmVz
LmFwcGVuZChXZWJDb3JlOjpDb21wb3NpdGlvblVuZGVybGluZSgwLCBjb21wb3NpdGlvblN0cmlu
Zy5sZW5ndGgoKSwgV2ViQ29yZTo6Q29sb3IoMCwgMCwgMCksIGZhbHNlKSk7Ci0gICAgZWRpdG9y
LnNldENvbXBvc2l0aW9uKGNvbXBvc2l0aW9uU3RyaW5nLCB1bmRlcmxpbmVzLCBzdGFydCwgc3Rh
cnQgKyBsZW5ndGgpOwotfQotCi1ib29sIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6aGFzQ29t
cG9zaXRpb24oY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCi17Ci0gICAgRFJUX1NVUFBSVF9Q
QUdFX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgcGFnZSwgZmFsc2UpOwotCi0gICAgcmV0dXJuIHBh
Z2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmVkaXRvcigpLmhhc0Nv
bXBvc2l0aW9uKCk7Ci19Ci0KLWJvb2wgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpjb21wb3Np
dGlvblJhbmdlKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBpbnQqIHN0YXJ0LCBpbnQqIGxlbmd0aCkK
LXsKLSAgICAqc3RhcnQgPSAqbGVuZ3RoID0gMDsKLQotICAgIERSVF9TVVBQUlRfUEFHRV9HRVRf
T1JfUkVUVVJOKGV3a1ZpZXcsIHBhZ2UsIGZhbHNlKTsKLQotICAgIFdlYkNvcmU6OkVkaXRvciYg
ZWRpdG9yID0gcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCkuZWRp
dG9yKCk7Ci0gICAgaWYgKCFlZGl0b3IuaGFzQ29tcG9zaXRpb24oKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgKnN0YXJ0ID0gZWRpdG9yLmNvbXBvc2l0aW9uU3RhcnQoKTsKLSAgICAq
bGVuZ3RoID0gZWRpdG9yLmNvbXBvc2l0aW9uRW5kKCkgLSAqc3RhcnQ7Ci0gICAgcmV0dXJuIHRy
dWU7Ci19Ci0KLXZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpjb25maXJtQ29tcG9zaXRp
b24oRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IGNoYXIqIHRleHQpCi17Ci0gICAgRFJUX1NV
UFBSVF9QQUdFX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgcGFnZSk7Ci0KLSAgICBXZWJDb3JlOjpF
ZGl0b3ImIGVkaXRvciA9IHBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFt
ZSgpLmVkaXRvcigpOwotCi0gICAgaWYgKCFlZGl0b3IuaGFzQ29tcG9zaXRpb24oKSkgewotICAg
ICAgICBlZGl0b3IuaW5zZXJ0VGV4dChTdHJpbmc6OmZyb21VVEY4KHRleHQpLCAwKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICh0ZXh0KSB7Ci0gICAgICAgIGVkaXRvci5jb25m
aXJtQ29tcG9zaXRpb24oU3RyaW5nOjpmcm9tVVRGOCh0ZXh0KSk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0gICAgZWRpdG9yLmNvbmZpcm1Db21wb3NpdGlvbigpOwotfQotCi1XZWJDb3JlOjpJ
bnRSZWN0IER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFu
Z2UoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGludCBsb2NhdGlvbiwgaW50IGxlbmd0aCkKLXsKLSAg
ICBEUlRfU1VQUFJUX1BBR0VfR0VUX09SX1JFVFVSTihld2tWaWV3LCBwYWdlLCBXZWJDb3JlOjpJ
bnRSZWN0KCkpOwotCi0gICAgaWYgKChsb2NhdGlvbiArIGxlbmd0aCA8IGxvY2F0aW9uKSAmJiAo
bG9jYXRpb24gKyBsZW5ndGgpKQotICAgICAgICBsZW5ndGggPSAwOwotCi0gICAgV2ViQ29yZTo6
RnJhbWUmIGZyYW1lID0gcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1l
KCk7Ci0KLSAgICBSZWZQdHI8V2ViQ29yZTo6UmFuZ2U+IHJhbmdlID0gV2ViQ29yZTo6VGV4dEl0
ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChmcmFtZS5zZWxlY3Rpb24oKS5yb290
RWRpdGFibGVFbGVtZW50T3JEb2N1bWVudEVsZW1lbnQoKSwgbG9jYXRpb24sIGxlbmd0aCk7Ci0g
ICAgaWYgKCFyYW5nZSkKLSAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkludFJlY3QoKTsKLQotICAg
IHJldHVybiBmcmFtZS5lZGl0b3IoKS5maXJzdFJlY3RGb3JSYW5nZShyYW5nZS5nZXQoKSk7Ci19
Ci0KLWJvb2wgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpzZWxlY3RlZFJhbmdlKEV2YXNfT2Jq
ZWN0KiBld2tWaWV3LCBpbnQqIHN0YXJ0LCBpbnQqIGxlbmd0aCkKLXsKLSAgICBpZiAoIShzdGFy
dCAmJiBsZW5ndGgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBEUlRfU1VQUFJUX1BB
R0VfR0VUX09SX1JFVFVSTihld2tWaWV3LCBwYWdlLCBmYWxzZSk7Ci0KLSAgICBXZWJDb3JlOjpG
cmFtZSYgZnJhbWUgPSBwYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUo
KTsKLSAgICBjb25zdCBXZWJDb3JlOjpWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24gPSBmcmFt
ZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6UmFuZ2U+IHJh
bmdlID0gc2VsZWN0aW9uLnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCk7Ci0gICAgaWYgKCFyYW5n
ZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgV2ViQ29yZTo6RWxlbWVudCogc2VsZWN0
aW9uUm9vdCA9IHNlbGVjdGlvbi5yb290RWRpdGFibGVFbGVtZW50KCk7Ci0gICAgV2ViQ29yZTo6
RWxlbWVudCogc2NvcGUgPSBzZWxlY3Rpb25Sb290ID8gc2VsZWN0aW9uUm9vdCA6IGZyYW1lLmRv
Y3VtZW50KCktPmRvY3VtZW50RWxlbWVudCgpOwotCi0gICAgUmVmUHRyPFdlYkNvcmU6OlJhbmdl
PiB0ZXN0UmFuZ2UgPSBXZWJDb3JlOjpSYW5nZTo6Y3JlYXRlKHNjb3BlLT5kb2N1bWVudCgpLCBz
Y29wZSwgMCwgcmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCksIHJhbmdlLT5zdGFydE9mZnNldCgpKTsK
LSAgICAqc3RhcnQgPSBXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHRlc3RSYW5n
ZS5nZXQoKSk7Ci0KLSAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjOwotICAgIHRlc3RSYW5n
ZS0+c2V0RW5kKHJhbmdlLT5lbmRDb250YWluZXIoKSwgcmFuZ2UtPmVuZE9mZnNldCgpLCBlYyk7
Ci0gICAgKmxlbmd0aCA9IFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgodGVzdFJh
bmdlLmdldCgpKTsKLQotICAgIHJldHVybiB0cnVlOwotfQotCi12b2lkIER1bXBSZW5kZXJUcmVl
U3VwcG9ydEVmbDo6c2V0RG9tYWluUmVsYXhhdGlvbkZvcmJpZGRlbkZvclVSTFNjaGVtZShib29s
IGZvcmJpZGRlbiwgY29uc3QgU3RyaW5nJiBzY2hlbWUpCi17Ci0gICAgV2ViQ29yZTo6U2NoZW1l
UmVnaXN0cnk6OnNldERvbWFpblJlbGF4YXRpb25Gb3JiaWRkZW5Gb3JVUkxTY2hlbWUoZm9yYmlk
ZGVuLCBzY2hlbWUpOwotfQotCi12b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6cmVzZXRH
ZW9sb2NhdGlvbkNsaWVudE1vY2soY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCi17Ci0jaWYg
RU5BQkxFKEdFT0xPQ0FUSU9OKQotICAgIERSVF9TVVBQUlRfUEFHRV9HRVRfT1JfUkVUVVJOKGV3
a1ZpZXcsIHBhZ2UpOwotCi0gICAgV2ViQ29yZTo6R2VvbG9jYXRpb25DbGllbnRNb2NrKiBtb2Nr
ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6R2VvbG9jYXRpb25DbGllbnRNb2NrKj4oV2ViQ29yZTo6
R2VvbG9jYXRpb25Db250cm9sbGVyOjpmcm9tKHBhZ2UpLT5jbGllbnQoKSk7Ci0gICAgbW9jay0+
cmVzZXQoKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGV3a1ZpZXcpOwotI2VuZGlmCi19Ci0K
LXZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpzZXRNb2NrR2VvbG9jYXRpb25QZXJtaXNz
aW9uKGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3LCBib29sIGFsbG93ZWQpCi17Ci0jaWYgRU5B
QkxFKEdFT0xPQ0FUSU9OKQotICAgIERSVF9TVVBQUlRfUEFHRV9HRVRfT1JfUkVUVVJOKGV3a1Zp
ZXcsIHBhZ2UpOwotCi0gICAgV2ViQ29yZTo6R2VvbG9jYXRpb25DbGllbnRNb2NrKiBtb2NrID0g
c3RhdGljX2Nhc3Q8V2ViQ29yZTo6R2VvbG9jYXRpb25DbGllbnRNb2NrKj4oV2ViQ29yZTo6R2Vv
bG9jYXRpb25Db250cm9sbGVyOjpmcm9tKHBhZ2UpLT5jbGllbnQoKSk7Ci0gICAgbW9jay0+c2V0
UGVybWlzc2lvbihhbGxvd2VkKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGV3a1ZpZXcpOwot
ICAgIFVOVVNFRF9QQVJBTShhbGxvd2VkKTsKLSNlbmRpZgotfQotCi12b2lkIER1bXBSZW5kZXJU
cmVlU3VwcG9ydEVmbDo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24oY29uc3QgRXZhc19PYmpl
Y3QqIGV3a1ZpZXcsIGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgZG91YmxlIGFj
Y3VyYWN5LCBib29sIGNhblByb3ZpZGVBbHRpdHVkZSwgZG91YmxlIGFsdGl0dWRlLCBib29sIGNh
blByb3ZpZGVBbHRpdHVkZUFjY3VyYWN5LCBkb3VibGUgYWx0aXR1ZGVBY2N1cmFjeSwgYm9vbCBj
YW5Qcm92aWRlSGVhZGluZywgZG91YmxlIGhlYWRpbmcsIGJvb2wgY2FuUHJvdmlkZVNwZWVkLCBk
b3VibGUgc3BlZWQpCi17Ci0jaWYgRU5BQkxFKEdFT0xPQ0FUSU9OKQotICAgIERSVF9TVVBQUlRf
UEFHRV9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHBhZ2UpOwotCi0gICAgV2ViQ29yZTo6R2VvbG9j
YXRpb25DbGllbnRNb2NrKiBtb2NrID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6R2VvbG9jYXRpb25D
bGllbnRNb2NrKj4oV2ViQ29yZTo6R2VvbG9jYXRpb25Db250cm9sbGVyOjpmcm9tKHBhZ2UpLT5j
bGllbnQoKSk7Ci0gICAgbW9jay0+c2V0UG9zaXRpb24oV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3Np
dGlvbjo6Y3JlYXRlKGN1cnJlbnRUaW1lKCksIGxhdGl0dWRlLCBsb25naXR1ZGUsIGFjY3VyYWN5
LCBjYW5Qcm92aWRlQWx0aXR1ZGUsIGFsdGl0dWRlLCBjYW5Qcm92aWRlQWx0aXR1ZGVBY2N1cmFj
eSwgYWx0aXR1ZGVBY2N1cmFjeSwgY2FuUHJvdmlkZUhlYWRpbmcsIGhlYWRpbmcsIGNhblByb3Zp
ZGVTcGVlZCwgc3BlZWQpKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGV3a1ZpZXcpOwotICAg
IFVOVVNFRF9QQVJBTShsYXRpdHVkZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGxvbmdpdHVkZSk7Ci0g
ICAgVU5VU0VEX1BBUkFNKGFjY3VyYWN5KTsKLSAgICBVTlVTRURfUEFSQU0oY2FuUHJvdmlkZUFs
dGl0dWRlKTsKLSAgICBVTlVTRURfUEFSQU0oYWx0aXR1ZGUpOwotICAgIFVOVVNFRF9QQVJBTShj
YW5Qcm92aWRlQWx0aXR1ZGVBY2N1cmFjeSk7Ci0gICAgVU5VU0VEX1BBUkFNKGFsdGl0dWRlQWNj
dXJhY3kpOwotICAgIFVOVVNFRF9QQVJBTShjYW5Qcm92aWRlSGVhZGluZyk7Ci0gICAgVU5VU0VE
X1BBUkFNKGhlYWRpbmcpOwotICAgIFVOVVNFRF9QQVJBTShjYW5Qcm92aWRlU3BlZWQpOwotICAg
IFVOVVNFRF9QQVJBTShzcGVlZCk7Ci0jZW5kaWYKLX0KLQotdm9pZCBEdW1wUmVuZGVyVHJlZVN1
cHBvcnRFZmw6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uVW5hdmFpbGFibGVFcnJvcihjb25z
dCBFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgY2hhciogZXJyb3JNZXNzYWdlKQotewotI2lm
IEVOQUJMRShHRU9MT0NBVElPTikKLSAgICBEUlRfU1VQUFJUX1BBR0VfR0VUX09SX1JFVFVSTihl
d2tWaWV3LCBwYWdlKTsKLQotICAgIFdlYkNvcmU6Okdlb2xvY2F0aW9uQ2xpZW50TW9jayogbW9j
ayA9IHN0YXRpY19jYXN0PFdlYkNvcmU6Okdlb2xvY2F0aW9uQ2xpZW50TW9jayo+KFdlYkNvcmU6
Okdlb2xvY2F0aW9uQ29udHJvbGxlcjo6ZnJvbShwYWdlKS0+Y2xpZW50KCkpOwotICAgIG1vY2st
PnNldFBvc2l0aW9uVW5hdmFpbGFibGVFcnJvcihlcnJvck1lc3NhZ2UpOwotI2Vsc2UKLSAgICBV
TlVTRURfUEFSQU0oZXdrVmlldyk7Ci0gICAgVU5VU0VEX1BBUkFNKGVycm9yTWVzc2FnZSk7Ci0j
ZW5kaWYKLX0KLQotaW50IER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6bnVtYmVyT2ZQZW5kaW5n
R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdHMoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcp
Ci17Ci0jaWYgRU5BQkxFKEdFT0xPQ0FUSU9OKQotICAgIERSVF9TVVBQUlRfUEFHRV9HRVRfT1Jf
UkVUVVJOKGV3a1ZpZXcsIHBhZ2UsIC0xKTsKLQotICAgIFdlYkNvcmU6Okdlb2xvY2F0aW9uQ2xp
ZW50TW9jayogbW9jayA9IHN0YXRpY19jYXN0PFdlYkNvcmU6Okdlb2xvY2F0aW9uQ2xpZW50TW9j
ayo+KFdlYkNvcmU6Okdlb2xvY2F0aW9uQ29udHJvbGxlcjo6ZnJvbShwYWdlKS0+Y2xpZW50KCkp
OwotICAgIHJldHVybiBtb2NrLT5udW1iZXJPZlBlbmRpbmdQZXJtaXNzaW9uUmVxdWVzdHMoKTsK
LSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGV3a1ZpZXcpOwotICAgIHJldHVybiAwOwotI2VuZGlm
Ci19Ci0KLSNpZiBIQVZFKEFDQ0VTU0lCSUxJVFkpCi1BdGtPYmplY3QqIER1bXBSZW5kZXJUcmVl
U3VwcG9ydEVmbDo6cm9vdEFjY2Vzc2libGVFbGVtZW50KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tG
cmFtZSkKLXsKLSAgICBEUlRfU1VQUE9SVF9GUkFNRV9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBm
cmFtZSwgMCk7Ci0KLSAgICBpZiAoIVdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmFjY2Vzc2liaWxp
dHlFbmFibGVkKCkpCi0gICAgICAgIFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmVuYWJsZUFjY2Vz
c2liaWxpdHkoKTsKLQotICAgIGlmICghZnJhbWUtPmRvY3VtZW50KCkpCi0gICAgICAgIHJldHVy
biAwOwotCi0gICAgQXRrT2JqZWN0KiB3cmFwcGVyID0gZnJhbWUtPmRvY3VtZW50KCktPmF4T2Jq
ZWN0Q2FjaGUoKS0+cm9vdE9iamVjdCgpLT53cmFwcGVyKCk7Ci0gICAgaWYgKCF3cmFwcGVyKQot
ICAgICAgICByZXR1cm4gMDsKLQotICAgIHJldHVybiB3cmFwcGVyOwotfQotCi1BdGtPYmplY3Qq
IER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6Zm9jdXNlZEFjY2Vzc2libGVFbGVtZW50KGNvbnN0
IEV2YXNfT2JqZWN0KiBld2tGcmFtZSkKLXsKLSAgICBBdGtPYmplY3QqIHdyYXBwZXIgPSByb290
QWNjZXNzaWJsZUVsZW1lbnQoZXdrRnJhbWUpOwotICAgIGlmICghd3JhcHBlcikKLSAgICAgICAg
cmV0dXJuIDA7Ci0KLSAgICByZXR1cm4gd2Via2l0QWNjZXNzaWJsZUdldEZvY3VzZWRFbGVtZW50
KFdFQktJVF9BQ0NFU1NJQkxFKHdyYXBwZXIpKTsKLX0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmgg
Yi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRF
ZmwuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDk1NmIyOS4uMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRF
ZmwuaAorKysgL2Rldi9udWxsCkBAIC0xLDEzOCArMCwwIEBACi0vKgotICAgIENvcHlyaWdodCAo
QykgMjAxMSBQcm9GVVNJT04gZW1iZWRkZWQgc3lzdGVtcwotICAgIENvcHlyaWdodCAoQykgMjAx
MSBTYW1zdW5nIEVsZWN0cm9uaWNzCi0gICAgQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBv
cmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICAgIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gICAgTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
Ci0gICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAgICBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICAg
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0gICAg
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQotICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gICAgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAgICBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSovCi0KLSNpZm5kZWYgRHVtcFJlbmRlclRyZWVT
dXBwb3J0RWZsX2gKLSNkZWZpbmUgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsX2gKLQotI2luY2x1
ZGUgIlVSTC5oIgotI2luY2x1ZGUgPEVpbmEuaD4KLSNpbmNsdWRlIDxGaW5kT3B0aW9ucy5oPgot
I2luY2x1ZGUgPEludFJlY3QuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BUElDYXN0Lmg+
Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNTdHJpbmdSZWYuaD4KLSNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLSNpZiBIQVZFKEFD
Q0VTU0lCSUxJVFkpCi0jaW5jbHVkZSA8YXRrL2F0ay5oPgotI2VuZGlmCi0KLXR5cGVkZWYgc3Ry
dWN0IF9Fd2tfSGlzdG9yeV9JdGVtIEV3a19IaXN0b3J5X0l0ZW07Ci0KLXR5cGVkZWYgVmVjdG9y
PEV3a19IaXN0b3J5X0l0ZW0qPiBIaXN0b3J5SXRlbUNoaWxkcmVuVmVjdG9yOwotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci1jbGFzcyBGcmFtZTsKLX0KLQotY2xhc3MgRUFQSSBEdW1wUmVuZGVyVHJl
ZVN1cHBvcnRFZmwgewotcHVibGljOgotICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbCgpIHsg
fQotCi0gICAgfkR1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbCgpIHsgfQotCi0gICAgc3RhdGljIHZv
aWQgc2V0RHVtcFJlbmRlclRyZWVNb2RlRW5hYmxlZChib29sKTsKLSAgICBzdGF0aWMgYm9vbCBk
dW1wUmVuZGVyVHJlZU1vZGVFbmFibGVkKCk7Ci0KLSAgICBzdGF0aWMgYm9vbCBjYWxsU2hvdWxk
Q2xvc2VPbldlYlZpZXcoRXZhc19PYmplY3QqIGV3a0ZyYW1lKTsKLSAgICBzdGF0aWMgdm9pZCBj
bGVhckZyYW1lTmFtZShFdmFzX09iamVjdCogZXdrRnJhbWUpOwotICAgIHN0YXRpYyB2b2lkIGNs
ZWFyT3BlbmVyKEV2YXNfT2JqZWN0KiBld2tGcmFtZSk7Ci0gICAgc3RhdGljIFN0cmluZyBjb3Vu
dGVyVmFsdWVCeUVsZW1lbnRJZChjb25zdCBFdmFzX09iamVjdCogZXdrRnJhbWUsIGNvbnN0IGNo
YXIqIGVsZW1lbnRJZCk7Ci0gICAgc3RhdGljIEVpbmFfTGlzdCogZnJhbWVDaGlsZHJlbihjb25z
dCBFdmFzX09iamVjdCogZXdrRnJhbWUpOwotICAgIHN0YXRpYyBXZWJDb3JlOjpGcmFtZSogZnJh
bWVQYXJlbnQoY29uc3QgRXZhc19PYmplY3QqIGV3a0ZyYW1lKTsKLSAgICBzdGF0aWMgdm9pZCBs
YXlvdXRGcmFtZShFdmFzX09iamVjdCogZXdrRnJhbWUpOwotICAgIHN0YXRpYyB1bnNpZ25lZCBw
ZW5kaW5nVW5sb2FkRXZlbnRDb3VudChjb25zdCBFdmFzX09iamVjdCogZXdrRnJhbWUpOwotICAg
IHN0YXRpYyBTdHJpbmcgcmVuZGVyVHJlZUR1bXAoRXZhc19PYmplY3QqIGV3a0ZyYW1lKTsKLSAg
ICBzdGF0aWMgU3RyaW5nIHJlc3BvbnNlTWltZVR5cGUoY29uc3QgRXZhc19PYmplY3QqIGV3a0Zy
YW1lKTsKLSAgICBzdGF0aWMgV2ViQ29yZTo6SW50UmVjdCBzZWxlY3Rpb25SZWN0YW5nbGUoY29u
c3QgRXZhc19PYmplY3QqIGV3a0ZyYW1lKTsKLSAgICBzdGF0aWMgU3RyaW5nIHN1aXRhYmxlRFJU
RnJhbWVOYW1lKGNvbnN0IEV2YXNfT2JqZWN0KiBld2tGcmFtZSk7Ci0gICAgc3RhdGljIGNvbnN0
IFdlYkNvcmU6OlVSTCBwcm92aXNpb25hbFVSTChjb25zdCBFdmFzX09iamVjdCogZXdrRnJhbWUp
OwotICAgIHN0YXRpYyBTdHJpbmcgbGF5ZXJUcmVlQXNUZXh0KGNvbnN0IEV2YXNfT2JqZWN0KiBl
d2tGcmFtZSk7Ci0gICAgc3RhdGljIHZvaWQgc2V0VmFsdWVGb3JVc2VyKEpTQ29udGV4dFJlZiwg
SlNWYWx1ZVJlZiBub2RlT2JqZWN0LCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKLSAgICBzdGF0aWMg
dm9pZCBzZXREZWZlcnNMb2FkaW5nKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBib29sIGRlZmVycyk7
Ci0gICAgc3RhdGljIHZvaWQgc2V0TG9hZHNTaXRlSWNvbnNJZ25vcmluZ0ltYWdlTG9hZGluZ1Nl
dHRpbmcoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGJvb2wgbG9hZHNTaXRlSWNvbnNJZ25vcmluZ0lt
YWdlTG9hZGluZ1ByZWZlcmVuY2VzKTsKLSAgICBzdGF0aWMgdm9pZCBzZXRNaW5pbXVtTG9naWNh
bEZvbnRTaXplKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBpbnQgc2l6ZSk7Ci0KLSAgICBzdGF0aWMg
dm9pZCBhZGRVc2VyU2NyaXB0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBTdHJp
bmcmIHNvdXJjZUNvZGUsIGJvb2wgcnVuQXRTdGFydCwgYm9vbCBhbGxGcmFtZXMpOwotICAgIHN0
YXRpYyB2b2lkIGNsZWFyVXNlclNjcmlwdHMoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpOwot
ICAgIHN0YXRpYyB2b2lkIGFkZFVzZXJTdHlsZVNoZWV0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tW
aWV3LCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUsIGJvb2wgYWxsRnJhbWVzKTsKLSAgICBzdGF0
aWMgdm9pZCBjbGVhclVzZXJTdHlsZVNoZWV0cyhjb25zdCBFdmFzX09iamVjdCogZXdrVmlldyk7
Ci0gICAgc3RhdGljIHZvaWQgZXhlY3V0ZUNvcmVDb21tYW5kQnlOYW1lKGNvbnN0IEV2YXNfT2Jq
ZWN0KiBld2tWaWV3LCBjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBjaGFyKiB2YWx1ZSk7Ci0gICAg
c3RhdGljIGJvb2wgZmluZFN0cmluZyhjb25zdCBFdmFzX09iamVjdCogZXdrVmlldywgY29uc3Qg
U3RyaW5nJiB0ZXh0LCBXZWJDb3JlOjpGaW5kT3B0aW9ucyk7Ci0gICAgc3RhdGljIGJvb2wgaXND
b21tYW5kRW5hYmxlZChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgY2hhciogbmFt
ZSk7Ci0gICAgc3RhdGljIHZvaWQgc2V0Q1NTUmVnaW9uc0VuYWJsZWQoY29uc3QgRXZhc19PYmpl
Y3QqIGV3a1ZpZXcsIGJvb2wgZW5hYmxlZCk7Ci0gICAgc3RhdGljIHZvaWQgc2V0V2ViQXVkaW9F
bmFibGVkKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBib29sKTsKLQotICAgIHN0YXRpYyB2b2lkIGZv
cmNlTGF5b3V0KEV2YXNfT2JqZWN0KiBld2tGcmFtZSk7Ci0gICAgc3RhdGljIHZvaWQgZm9yY2VQ
YWludChFdmFzX09iamVjdCogZXdrRnJhbWUpOwotICAgIHN0YXRpYyB2b2lkIHNldFRyYWNrc1Jl
cGFpbnRzKEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgYm9vbCBlbmFibGVkKTsKLSAgICBzdGF0aWMg
dm9pZCByZXNldFRyYWNrZWRSZXBhaW50cyhFdmFzX09iamVjdCogZXdrRnJhbWUpOwotICAgIHN0
YXRpYyBib29sIGlzVHJhY2tpbmdSZXBhaW50cyhjb25zdCBFdmFzX09iamVjdCogZXdrRnJhbWUp
OwotICAgIHN0YXRpYyBFaW5hX0xpc3QqIHRyYWNrZWRSZXBhaW50UmVjdHMoY29uc3QgRXZhc19P
YmplY3QqIGV3a0ZyYW1lKTsKLQotICAgIHN0YXRpYyB2b2lkIGdhcmJhZ2VDb2xsZWN0b3JDb2xs
ZWN0KCk7Ci0gICAgc3RhdGljIHZvaWQgZ2FyYmFnZUNvbGxlY3RvckNvbGxlY3RPbkFsdGVybmF0
ZVRocmVhZChib29sIHdhaXRVbnRpbERvbmUpOwotICAgIHN0YXRpYyBzaXplX3QgamF2YVNjcmlw
dE9iamVjdHNDb3VudCgpOwotCi0gICAgc3RhdGljIHZvaWQgc2V0RGVhZERlY29kZWREYXRhRGVs
ZXRpb25JbnRlcnZhbChkb3VibGUpOwotCi0gICAgc3RhdGljIEhpc3RvcnlJdGVtQ2hpbGRyZW5W
ZWN0b3IgY2hpbGRIaXN0b3J5SXRlbXMoY29uc3QgRXdrX0hpc3RvcnlfSXRlbSopOwotICAgIHN0
YXRpYyBTdHJpbmcgaGlzdG9yeUl0ZW1UYXJnZXQoY29uc3QgRXdrX0hpc3RvcnlfSXRlbSopOwot
ICAgIHN0YXRpYyBib29sIGlzVGFyZ2V0SXRlbShjb25zdCBFd2tfSGlzdG9yeV9JdGVtKik7Ci0g
ICAgc3RhdGljIHZvaWQgZXZhbHVhdGVJbldlYkluc3BlY3Rvcihjb25zdCBFdmFzX09iamVjdCog
ZXdrVmlldywgY29uc3QgU3RyaW5nJiBzY3JpcHQpOwotICAgIHN0YXRpYyB2b2lkIGV2YWx1YXRl
U2NyaXB0SW5Jc29sYXRlZFdvcmxkKGNvbnN0IEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgaW50IHdv
cmxkSUQsIEpTT2JqZWN0UmVmIGdsb2JhbE9iamVjdCwgY29uc3QgU3RyaW5nJiBzY3JpcHQpOwot
ICAgIHN0YXRpYyBKU0dsb2JhbENvbnRleHRSZWYgZ2xvYmFsQ29udGV4dFJlZkZvckZyYW1lKGNv
bnN0IEV2YXNfT2JqZWN0KiBld2tGcmFtZSk7Ci0KLSAgICBzdGF0aWMgdm9pZCBzZXRNb2NrU2Ny
b2xsYmFyc0VuYWJsZWQoYm9vbCk7Ci0KLSAgICBzdGF0aWMgdm9pZCBkZWxpdmVyQWxsTXV0YXRp
b25zSWZOZWNlc3NhcnkoKTsKLSAgICBzdGF0aWMgdm9pZCBzZXRJbnRlcmFjdGl2ZUZvcm1WYWxp
ZGF0aW9uRW5hYmxlZChFdmFzX09iamVjdCogZXdrVmlldywgYm9vbCBlbmFibGVkKTsKLSAgICBz
dGF0aWMgdm9pZCBzZXRWYWxpZGF0aW9uTWVzc2FnZVRpbWVyTWFnbmlmaWNhdGlvbihFdmFzX09i
amVjdCogZXdrVmlldywgaW50IHZhbHVlKTsKLSAgICBzdGF0aWMgdm9pZCBzZXRBdXRob3JBbmRV
c2VyU3R5bGVzRW5hYmxlZChFdmFzX09iamVjdCogZXdrVmlldywgYm9vbCk7Ci0gICAgc3RhdGlj
IHZvaWQgc2V0RG9tYWluUmVsYXhhdGlvbkZvcmJpZGRlbkZvclVSTFNjaGVtZShib29sIGZvcmJp
ZGRlbiwgY29uc3QgU3RyaW5nJiBzY2hlbWUpOwotICAgIHN0YXRpYyB2b2lkIHNldFNlcmlhbGl6
ZUhUVFBMb2Fkcyhib29sKTsKLSAgICBzdGF0aWMgdm9pZCBzZXRTaG91bGRUcmFja1Zpc2l0ZWRM
aW5rcyhib29sKTsKLSAgICAKLSAgICAvLyBUZXh0SW5wdXRDb250cm9sbGVyCi0gICAgc3RhdGlj
IHZvaWQgc2V0Q29tcG9zaXRpb24oRXZhc19PYmplY3QqLCBjb25zdCBjaGFyKiwgaW50LCBpbnQp
OwotICAgIHN0YXRpYyBib29sIGhhc0NvbXBvc2l0aW9uKGNvbnN0IEV2YXNfT2JqZWN0Kik7Ci0g
ICAgc3RhdGljIGJvb2wgY29tcG9zaXRpb25SYW5nZShFdmFzX09iamVjdCosIGludCosIGludCop
OwotICAgIHN0YXRpYyB2b2lkIGNvbmZpcm1Db21wb3NpdGlvbihFdmFzX09iamVjdCosIGNvbnN0
IGNoYXIqKTsKLSAgICBzdGF0aWMgV2ViQ29yZTo6SW50UmVjdCBmaXJzdFJlY3RGb3JDaGFyYWN0
ZXJSYW5nZShFdmFzX09iamVjdCosIGludCwgaW50KTsKLSAgICBzdGF0aWMgYm9vbCBzZWxlY3Rl
ZFJhbmdlKEV2YXNfT2JqZWN0KiwgaW50KiwgaW50Kik7Ci0KLSAgICAvLyBHZW9sb2NhdGlvbgot
ICAgIHN0YXRpYyB2b2lkIHJlc2V0R2VvbG9jYXRpb25DbGllbnRNb2NrKGNvbnN0IEV2YXNfT2Jq
ZWN0Kik7Ci0gICAgc3RhdGljIHZvaWQgc2V0TW9ja0dlb2xvY2F0aW9uUGVybWlzc2lvbihjb25z
dCBFdmFzX09iamVjdCosIGJvb2wgYWxsb3dlZCk7Ci0gICAgc3RhdGljIHZvaWQgc2V0TW9ja0dl
b2xvY2F0aW9uUG9zaXRpb24oY29uc3QgRXZhc19PYmplY3QqLCBkb3VibGUgbGF0aXR1ZGUsIGRv
dWJsZSBsb25naXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSwgYm9vbCBjYW5Qcm92aWRlQWx0aXR1ZGUs
IGRvdWJsZSBhbHRpdHVkZSwgYm9vbCBjYW5Qcm92aWRlQWx0aXR1ZGVBY2N1cmFjeSwgZG91Ymxl
IGFsdGl0dWRlQWNjdXJhY3ksIGJvb2wgY2FuUHJvdmlkZUhlYWRpbmcsIGRvdWJsZSBoZWFkaW5n
LCBib29sIGNhblByb3ZpZGVTcGVlZCwgZG91YmxlIHNwZWVkKTsKLSAgICBzdGF0aWMgdm9pZCBz
ZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3IoY29uc3QgRXZhc19PYmpl
Y3QqLCBjb25zdCBjaGFyKiBlcnJvck1lc3NhZ2UpOwotICAgIHN0YXRpYyBpbnQgbnVtYmVyT2ZQ
ZW5kaW5nR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdHMoY29uc3QgRXZhc19PYmplY3QqKTsK
LQotI2lmIEhBVkUoQUNDRVNTSUJJTElUWSkKLSAgICBzdGF0aWMgQXRrT2JqZWN0KiBmb2N1c2Vk
QWNjZXNzaWJsZUVsZW1lbnQoY29uc3QgRXZhc19PYmplY3QqKTsKLSAgICBzdGF0aWMgQXRrT2Jq
ZWN0KiByb290QWNjZXNzaWJsZUVsZW1lbnQoY29uc3QgRXZhc19PYmplY3QqKTsKLSNlbmRpZgot
Ci1wcml2YXRlOgotICAgIHN0YXRpYyBib29sIHNfZHJ0UnVuOwotfTsKLQotI2VuZGlmIC8vIER1
bXBSZW5kZXJUcmVlU3VwcG9ydEVmbF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9X
ZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvV2Vi
Q29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggYjk4MDEyNi4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3Vw
cG9ydC9FZGl0b3JDbGllbnRFZmwuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDU0ICswLDAgQEAK
LS8qCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA3IEFscCBUb2tlciA8YWxwQGF0b2tlci5jb20+Ci0g
KiAgQ29weXJpZ2h0IChDKSAyMDA4IE51YW50aSBMdGQuCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA4
IElOZFQgLSBJbnN0aXR1dG8gTm9raWEgZGUgVGVjbm9sb2dpYQotICogIENvcHlyaWdodCAoQykg
MjAwOS0yMDEwIFByb0ZVU0lPTiBlbWJlZGRlZCBzeXN0ZW1zCi0gKiAgQ29weXJpZ2h0IChDKSAy
MDA5LTIwMTAgU2Ftc3VuZyBFbGVjdHJvbmljcwotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICogIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
cgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQot
ICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgot
ICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2Vu
ZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3Qs
IHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0gKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkVkaXRvckNsaWVudEVmbC5oIgot
Ci0jaW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJEdW1wUmVuZGVyVHJlZVN1cHBvcnRF
ZmwuaCIKLSNpbmNsdWRlICJFZGl0b3IuaCIKLSNpbmNsdWRlICJFZmxLZXlib2FyZFV0aWxpdGll
cy5oIgotI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKLSNpbmNsdWRlICJGb2N1c0NvbnRyb2xsZXIu
aCIKLSNpbmNsdWRlICJGcmFtZS5oIgotI2luY2x1ZGUgIktleWJvYXJkRXZlbnQuaCIKLSNpbmNs
dWRlICJOb3RJbXBsZW1lbnRlZC5oIgotI2luY2x1ZGUgIlBhZ2UuaCIKLSNpbmNsdWRlICJQbGF0
Zm9ybUtleWJvYXJkRXZlbnQuaCIKLSNpbmNsdWRlICJTZXR0aW5ncy5oIgotI2luY2x1ZGUgIlVu
ZG9TdGVwLmgiCi0jaW5jbHVkZSAiV2luZG93c0tleWJvYXJkQ29kZXMuaCIKLSNpbmNsdWRlICJl
d2tfZnJhbWVfcHJpdmF0ZS5oIgotI2luY2x1ZGUgImV3a19wcml2YXRlLmgiCi0jaW5jbHVkZSAi
ZXdrX3ZpZXdfcHJpdmF0ZS5oIgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi12b2lkIEVkaXRvckNsaWVudEVmbDo6d2lsbFNldElucHV0TWV0aG9k
U3RhdGUoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgRWRpdG9yQ2xpZW50
RWZsOjpzZXRJbnB1dE1ldGhvZFN0YXRlKGJvb2wgYWN0aXZlKQotewotICAgIGV3a192aWV3X2lu
cHV0X21ldGhvZF9zdGF0ZV9zZXQobV92aWV3LCBhY3RpdmUpOwotfQotCi1ib29sIEVkaXRvckNs
aWVudEVmbDo6c2hvdWxkRGVsZXRlUmFuZ2UoUmFuZ2UqIHJhbmdlKQotewotICAgIGV2YXNfb2Jq
ZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3LCAiZWRpdG9yY2xpZW50LHJhbmdlLGRlbGV0
ZSIsIHJhbmdlKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBFZGl0b3JDbGllbnRFZmw6
OmlzQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkKLXsKLSAgICBub3RJbXBsZW1lbnRl
ZCgpOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBFZGl0b3JDbGllbnRFZmw6OmlzR3Jh
bW1hckNoZWNraW5nRW5hYmxlZCgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1
cm4gZmFsc2U7Ci19Ci0KLWludCBFZGl0b3JDbGllbnRFZmw6OnNwZWxsQ2hlY2tlckRvY3VtZW50
VGFnKCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAwOwotfQotCi1ib29s
IEVkaXRvckNsaWVudEVmbDo6c2hvdWxkQmVnaW5FZGl0aW5nKFJhbmdlKiByYW5nZSkKLXsKLSAg
ICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG1fdmlldywgImVkaXRvcmNsaWVudCxl
ZGl0aW5nLGJlZ2luIiwgcmFuZ2UpOwotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIEVkaXRv
ckNsaWVudEVmbDo6c2hvdWxkRW5kRWRpdGluZyhSYW5nZSogcmFuZ2UpCi17Ci0gICAgZXZhc19v
YmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChtX3ZpZXcsICJlZGl0b3JjbGllbnQsZWRpdGluZyxl
bmQiLCByYW5nZSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgRWRpdG9yQ2xpZW50RWZs
OjpzaG91bGRJbnNlcnRUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgUmFuZ2UqIHJhbmdlLCBFZGl0
b3JJbnNlcnRBY3Rpb24gYWN0aW9uKQotewotICAgIENTdHJpbmcgcHJvdGVjdGVkVGV4dCA9IHRl
eHQudXRmOCgpOwotICAgIEV3a19TaG91bGRfSW5zZXJ0X1RleHRfRXZlbnQgc2hvdWxkSW5zZXJ0
VGV4dEV2ZW50ID0geyBwcm90ZWN0ZWRUZXh0LmRhdGEoKSwgcmFuZ2UsIGFjdGlvbiB9OwotICAg
IGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3LCAiZWRpdG9yY2xpZW50LHRl
eHQsaW5zZXJ0IiwgJnNob3VsZEluc2VydFRleHRFdmVudCk7Ci0gICAgcmV0dXJuIHRydWU7Ci19
Ci0KLWJvb2wgRWRpdG9yQ2xpZW50RWZsOjpzaG91bGRDaGFuZ2VTZWxlY3RlZFJhbmdlKFJhbmdl
KiBmcm9tUmFuZ2UsIFJhbmdlKiB0b1JhbmdlLCBFQWZmaW5pdHkgYWZmaW5pdHksIGJvb2wgc3Rp
bGxTZWxlY3RpbmcpCi17Ci0gICAgRXdrX1Nob3VsZF9DaGFuZ2VfU2VsZWN0ZWRfUmFuZ2VfRXZl
bnQgc2hvdWxkQ2hhbmdlU2VsZWN0ZWRSYW5nZUV2ZW50ID0geyBmcm9tUmFuZ2UsIHRvUmFuZ2Us
IGFmZmluaXR5LCBzdGlsbFNlbGVjdGluZyB9OwotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxi
YWNrX2NhbGwobV92aWV3LCAiZWRpdG9yY2xpZW50LHNlbGVjdGVkLHJhbmdlLGNoYW5nZSIsICZz
aG91bGRDaGFuZ2VTZWxlY3RlZFJhbmdlRXZlbnQpOwotICAgIHJldHVybiB0cnVlOwotfQotCi1i
b29sIEVkaXRvckNsaWVudEVmbDo6c2hvdWxkQXBwbHlTdHlsZShTdHlsZVByb3BlcnRpZXMqIHN0
eWxlLCBSYW5nZSogcmFuZ2UpCi17Ci0gICAgRXdrX1Nob3VsZF9BcHBseV9TdHlsZV9FdmVudCBz
aG91bGRBcHBseVN0eWxlRXZlbnQgPSB7IHN0eWxlLCByYW5nZSB9OwotICAgIGV2YXNfb2JqZWN0
X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3LCAiZWRpdG9yY2xpZW50LHN0eWxlLGFwcGx5Iiwg
JnNob3VsZEFwcGx5U3R5bGVFdmVudCk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgRWRp
dG9yQ2xpZW50RWZsOjpzaG91bGRNb3ZlUmFuZ2VBZnRlckRlbGV0ZShSYW5nZSosIFJhbmdlKikK
LXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiB0cnVlOwotfQotCi12b2lkIEVk
aXRvckNsaWVudEVmbDo6ZGlkQmVnaW5FZGl0aW5nKCkKLXsKLSAgICBldmFzX29iamVjdF9zbWFy
dF9jYWxsYmFja19jYWxsKG1fdmlldywgImVkaXRvcmNsaWVudCxlZGl0aW5nLGJlZ2FuIiwgMCk7
Ci19Ci0KLXZvaWQgRWRpdG9yQ2xpZW50RWZsOjpyZXNwb25kVG9DaGFuZ2VkQ29udGVudHMoKQot
ewotICAgIEV2YXNfT2JqZWN0KiBmcmFtZSA9IGV3a192aWV3X2ZyYW1lX2ZvY3VzZWRfZ2V0KG1f
dmlldyk7Ci0KLSAgICBpZiAoIWZyYW1lKQotICAgICAgICBmcmFtZSA9IGV3a192aWV3X2ZyYW1l
X21haW5fZ2V0KG1fdmlldyk7Ci0KLSAgICBpZiAoIWZyYW1lKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBld2tfZnJhbWVfZWRpdG9yX2NsaWVudF9jb250ZW50c19jaGFuZ2VkKGZyYW1lKTsKLX0K
LQotdm9pZCBFZGl0b3JDbGllbnRFZmw6OnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24oRnJhbWUq
IGNvcmVGcmFtZSkKLXsKLSAgICBpZiAoIWNvcmVGcmFtZSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgaWYgKGNvcmVGcmFtZS0+ZWRpdG9yKCkuaWdub3JlQ29tcG9zaXRpb25TZWxlY3Rpb25DaGFu
Z2UoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgRXZhc19PYmplY3QqIHdlYkZyYW1lID0gRVdL
UHJpdmF0ZTo6a2l0RnJhbWUoY29yZUZyYW1lKTsKLSAgICBld2tfZnJhbWVfZWRpdG9yX2NsaWVu
dF9zZWxlY3Rpb25fY2hhbmdlZCh3ZWJGcmFtZSk7Ci0KLSAgICBjb3JlRnJhbWUtPmVkaXRvcigp
LmNhbmNlbENvbXBvc2l0aW9uSWZTZWxlY3Rpb25Jc0ludmFsaWQoKTsKLX0KLQotdm9pZCBFZGl0
b3JDbGllbnRFZmw6OmRpZEVuZEVkaXRpbmcoKQotewotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2Nh
bGxiYWNrX2NhbGwobV92aWV3LCAiZWRpdG9yY2xpZW50LGVkaXRpbmcsZW5kZWQiLCAwKTsKLX0K
LQotdm9pZCBFZGl0b3JDbGllbnRFZmw6OmRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkK
LXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIEVkaXRvckNsaWVudEVmbDo6d2ls
bFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKFdlYkNvcmU6OlJhbmdlKikKLXsKLX0KLQotdm9p
ZCBFZGl0b3JDbGllbnRFZmw6OmdldENsaWVudFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViQ29y
ZTo6UmFuZ2UqLCBWZWN0b3I8U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiA+JikKLXsKLX0KLQotdm9pZCBFZGl0b3JDbGllbnRFZmw6OnJlZ2lzdGVyVW5kb1N0
ZXAoV1RGOjpQYXNzUmVmUHRyPFVuZG9TdGVwPiBzdGVwKQotewotICAgIGlmICghbV9pc0luUmVk
bykKLSAgICAgICAgcmVkb1N0YWNrLmNsZWFyKCk7Ci0gICAgdW5kb1N0YWNrLnByZXBlbmQoc3Rl
cCk7Ci19Ci0KLXZvaWQgRWRpdG9yQ2xpZW50RWZsOjpyZWdpc3RlclJlZG9TdGVwKFdURjo6UGFz
c1JlZlB0cjxVbmRvU3RlcD4gc3RlcCkKLXsKLSAgICByZWRvU3RhY2sucHJlcGVuZChzdGVwKTsK
LX0KLQotdm9pZCBFZGl0b3JDbGllbnRFZmw6OmNsZWFyVW5kb1JlZG9PcGVyYXRpb25zKCkKLXsK
LSAgICB1bmRvU3RhY2suY2xlYXIoKTsKLSAgICByZWRvU3RhY2suY2xlYXIoKTsKLX0KLQotYm9v
bCBFZGl0b3JDbGllbnRFZmw6OmNhbkNvcHlDdXQoRnJhbWUqLCBib29sIGRlZmF1bHRWYWx1ZSkg
Y29uc3QKLXsKLSAgICByZXR1cm4gZGVmYXVsdFZhbHVlOwotfQotCi1ib29sIEVkaXRvckNsaWVu
dEVmbDo6Y2FuUGFzdGUoRnJhbWUqLCBib29sIGRlZmF1bHRWYWx1ZSkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gZGVmYXVsdFZhbHVlOwotfQotCi1ib29sIEVkaXRvckNsaWVudEVmbDo6Y2FuVW5kbygp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuICF1bmRvU3RhY2suaXNFbXB0eSgpOwotfQotCi1ib29sIEVk
aXRvckNsaWVudEVmbDo6Y2FuUmVkbygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuICFyZWRvU3RhY2su
aXNFbXB0eSgpOwotfQotCi12b2lkIEVkaXRvckNsaWVudEVmbDo6dW5kbygpCi17Ci0gICAgaWYg
KGNhblVuZG8oKSkgewotICAgICAgICBSZWZQdHI8V2ViQ29yZTo6VW5kb1N0ZXA+IHN0ZXAgPSB1
bmRvU3RhY2sudGFrZUZpcnN0KCk7Ci0gICAgICAgIHN0ZXAtPnVuYXBwbHkoKTsKLSAgICB9Ci19
Ci0KLXZvaWQgRWRpdG9yQ2xpZW50RWZsOjpyZWRvKCkKLXsKLSAgICBpZiAoY2FuUmVkbygpKSB7
Ci0gICAgICAgIFJlZlB0cjxXZWJDb3JlOjpVbmRvU3RlcD4gc3RlcCA9IHJlZG9TdGFjay50YWtl
Rmlyc3QoKTsKLQotICAgICAgICBBU1NFUlQoIW1faXNJblJlZG8pOwotICAgICAgICBtX2lzSW5S
ZWRvID0gdHJ1ZTsKLSAgICAgICAgc3RlcC0+cmVhcHBseSgpOwotICAgICAgICBtX2lzSW5SZWRv
ID0gZmFsc2U7Ci0gICAgfQotfQotCi1ib29sIEVkaXRvckNsaWVudEVmbDo6c2hvdWxkSW5zZXJ0
Tm9kZShOb2RlKiBub2RlLCBSYW5nZSogcmFuZ2UsIEVkaXRvckluc2VydEFjdGlvbiBhY3Rpb24p
Ci17Ci0gICAgRXdrX1Nob3VsZF9JbnNlcnRfTm9kZV9FdmVudCBpbnNlcnROb2RlRXZlbnQgPSB7
IG5vZGUsIHJhbmdlLCBhY3Rpb24gfTsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19j
YWxsKG1fdmlldywgImVkaXRvcmNsaWVudCxub2RlLGluc2VydCIsICZpbnNlcnROb2RlRXZlbnQp
OwotICAgIHJldHVybiB0cnVlOwotfQotCi12b2lkIEVkaXRvckNsaWVudEVmbDo6cGFnZURlc3Ry
b3llZCgpCi17Ci0gICAgZGVsZXRlIHRoaXM7Ci19Ci0KLWJvb2wgRWRpdG9yQ2xpZW50RWZsOjpz
bWFydEluc2VydERlbGV0ZUVuYWJsZWQoKQotewotICAgIFdlYkNvcmU6OlBhZ2UqIGNvcmVQYWdl
ID0gRVdLUHJpdmF0ZTo6Y29yZVBhZ2UobV92aWV3KTsKLSAgICBpZiAoIWNvcmVQYWdlKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIGNvcmVQYWdlLT5zZXR0aW5ncygpLnNtYXJ0
SW5zZXJ0RGVsZXRlRW5hYmxlZCgpOwotfQotCi1ib29sIEVkaXRvckNsaWVudEVmbDo6aXNTZWxl
Y3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKCkKLXsKLSAgICBXZWJDb3JlOjpQYWdlKiBjb3Jl
UGFnZSA9IEVXS1ByaXZhdGU6OmNvcmVQYWdlKG1fdmlldyk7Ci0gICAgaWYgKCFjb3JlUGFnZSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBjb3JlUGFnZS0+c2V0dGluZ3MoKS5z
ZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKCk7Ci19Ci0KLXZvaWQgRWRpdG9yQ2xpZW50
RWZsOjp0b2dnbGVDb250aW51b3VzU3BlbGxDaGVja2luZygpCi17Ci0gICAgbm90SW1wbGVtZW50
ZWQoKTsKLX0KLQotdm9pZCBFZGl0b3JDbGllbnRFZmw6OnRvZ2dsZUdyYW1tYXJDaGVja2luZygp
Ci17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotY29uc3QgY2hhciogRWRpdG9yQ2xpZW50
RWZsOjppbnRlcnByZXRLZXlFdmVudChjb25zdCBLZXlib2FyZEV2ZW50KiBldmVudCkKLXsKLSAg
ICBBU1NFUlQoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkua2V5ZG93bkV2ZW50IHx8IGV2
ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmtleXByZXNzRXZlbnQpOwotCi0gICAgaWYgKGV2
ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmtleWRvd25FdmVudCkKLSAgICAgICAgcmV0dXJu
IGdldEtleURvd25Db21tYW5kTmFtZShldmVudCk7Ci0KLSAgICByZXR1cm4gZ2V0S2V5UHJlc3ND
b21tYW5kTmFtZShldmVudCk7Ci19Ci0KLWJvb2wgRWRpdG9yQ2xpZW50RWZsOjpoYW5kbGVFZGl0
aW5nS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50KiBldmVudCkKLXsKLSAgICBOb2RlKiBub2Rl
ID0gZXZlbnQtPnRhcmdldCgpLT50b05vZGUoKTsKLSAgICBBU1NFUlQobm9kZSk7Ci0gICAgRnJh
bWUqIGZyYW1lID0gbm9kZS0+ZG9jdW1lbnQoKS5mcmFtZSgpOwotICAgIEFTU0VSVChmcmFtZSk7
Ci0KLSAgICBjb25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQqIGtleUV2ZW50ID0gZXZlbnQtPmtl
eUV2ZW50KCk7Ci0gICAgaWYgKCFrZXlFdmVudCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgYm9vbCBjYXJldEJyb3dzaW5nID0gZnJhbWUtPnNldHRpbmdzKCkuY2FyZXRCcm93c2luZ0Vu
YWJsZWQoKTsKLSAgICBpZiAoY2FyZXRCcm93c2luZykgewotICAgICAgICBzd2l0Y2ggKGtleUV2
ZW50LT53aW5kb3dzVmlydHVhbEtleUNvZGUoKSkgewotICAgICAgICBjYXNlIFZLX0xFRlQ6Ci0g
ICAgICAgICAgICBmcmFtZS0+c2VsZWN0aW9uKCkubW9kaWZ5KGtleUV2ZW50LT5zaGlmdEtleSgp
ID8gRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQgOiBGcmFtZVNlbGVjdGlvbjo6QWx0
ZXJhdGlvbk1vdmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEaXJl
Y3Rpb25MZWZ0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5RXZl
bnQtPmN0cmxLZXkoKSA/IFdvcmRHcmFudWxhcml0eSA6IENoYXJhY3RlckdyYW51bGFyaXR5LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlclRyaWdnZXJlZCk7Ci0g
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgY2FzZSBWS19SSUdIVDoKLSAgICAgICAg
ICAgIGZyYW1lLT5zZWxlY3Rpb24oKS5tb2RpZnkoa2V5RXZlbnQtPnNoaWZ0S2V5KCkgPyBGcmFt
ZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCA6IEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9u
TW92ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERpcmVjdGlvblJp
Z2h0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5RXZlbnQtPmN0
cmxLZXkoKSA/IFdvcmRHcmFudWxhcml0eSA6IENoYXJhY3RlckdyYW51bGFyaXR5LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlclRyaWdnZXJlZCk7Ci0gICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgY2FzZSBWS19VUDoKLSAgICAgICAgICAgIGZyYW1l
LT5zZWxlY3Rpb24oKS5tb2RpZnkoa2V5RXZlbnQtPnNoaWZ0S2V5KCkgPyBGcmFtZVNlbGVjdGlv
bjo6QWx0ZXJhdGlvbkV4dGVuZCA6IEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uTW92ZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERpcmVjdGlvbkJhY2t3YXJkLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5RXZlbnQtPmN0cmxLZXko
KSA/IFBhcmFncmFwaEdyYW51bGFyaXR5IDogTGluZUdyYW51bGFyaXR5LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlclRyaWdnZXJlZCk7Ci0gICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICAgICAgY2FzZSBWS19ET1dOOgotICAgICAgICAgICAgZnJhbWUtPnNl
bGVjdGlvbigpLm1vZGlmeShrZXlFdmVudC0+c2hpZnRLZXkoKSA/IEZyYW1lU2VsZWN0aW9uOjpB
bHRlcmF0aW9uRXh0ZW5kIDogRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25Nb3ZlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGlyZWN0aW9uRm9yd2FyZCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleUV2ZW50LT5jdHJsS2V5KCkgPyBQ
YXJhZ3JhcGhHcmFudWxhcml0eSA6IExpbmVHcmFudWxhcml0eSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFVzZXJUcmlnZ2VyZWQpOwotICAgICAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBFZGl0b3I6OkNvbW1hbmQgY29tbWFuZCA9
IGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKGludGVycHJldEtleUV2ZW50KGV2ZW50KSk7Ci0KLSAg
ICBpZiAoa2V5RXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duKSB7Ci0g
ICAgICAgIC8vIFdlYktpdCBkb2Vzbid0IGhhdmUgZW5vdWdoIGluZm9ybWF0aW9uIGFib3V0IG1v
ZGUgdG8gZGVjaWRlIGhvdyBjb21tYW5kcyB0aGF0IGp1c3QgaW5zZXJ0IHRleHQgaWYgZXhlY3V0
ZWQgdmlhIEVkaXRvciBzaG91bGQgYmUgdHJlYXRlZCwKLSAgICAgICAgLy8gc28gd2UgbGVhdmUg
aXQgdXBvbiBXZWJDb3JlIHRvIGVpdGhlciBoYW5kbGUgdGhlbSBpbW1lZGlhdGVseSAoZS5nLiBU
YWIgdGhhdCBjaGFuZ2VzIGZvY3VzKSBvciBsZXQgYSBrZXlwcmVzcyBldmVudCBiZSBnZW5lcmF0
ZWQKLSAgICAgICAgLy8gKGUuZy4gVGFiIHRoYXQgaW5zZXJ0cyBhIFRhYiBjaGFyYWN0ZXIsIG9y
IEVudGVyKS4KLSAgICAgICAgcmV0dXJuICFjb21tYW5kLmlzVGV4dEluc2VydGlvbigpICYmIGNv
bW1hbmQuZXhlY3V0ZShldmVudCk7Ci0gICAgfQotCi0gICAgaWYgKGNvbW1hbmQuZXhlY3V0ZShl
dmVudCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgLy8gRG9uJ3QgYWxsb3cgdGV4dCBp
bnNlcnRpb24gZm9yIG5vZGVzIHRoYXQgY2Fubm90IGVkaXQuCi0gICAgaWYgKCFmcmFtZS0+ZWRp
dG9yKCkuY2FuRWRpdCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBEb24ndCBp
bnNlcnQgbnVsbCBvciBjb250cm9sIGNoYXJhY3RlcnMgYXMgdGhleSBjYW4gcmVzdWx0IGluIHVu
ZXhwZWN0ZWQgYmVoYXZpb3VyCi0gICAgaWYgKGV2ZW50LT5jaGFyQ29kZSgpIDwgJyAnKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBEb24ndCBpbnNlcnQgYW55dGhpbmcgaWYgYSBt
b2RpZmllciBpcyBwcmVzc2VkCi0gICAgaWYgKGtleUV2ZW50LT5jdHJsS2V5KCkgfHwga2V5RXZl
bnQtPmFsdEtleSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gZnJhbWUt
PmVkaXRvcigpLmluc2VydFRleHQoZXZlbnQtPmtleUV2ZW50KCktPnRleHQoKSwgZXZlbnQpOwot
fQotCi12b2lkIEVkaXRvckNsaWVudEVmbDo6aGFuZGxlS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2
ZW50KiBldmVudCkKLXsKLSAgICBpZiAoaGFuZGxlRWRpdGluZ0tleWJvYXJkRXZlbnQoZXZlbnQp
KQotICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKLX0KLQotdm9pZCBFZGl0b3JD
bGllbnRFZmw6OmhhbmRsZUlucHV0TWV0aG9kS2V5ZG93bihLZXlib2FyZEV2ZW50KikKLXsKLX0K
LQotRWRpdG9yQ2xpZW50RWZsOjpFZGl0b3JDbGllbnRFZmwoRXZhc19PYmplY3QqIHZpZXcpCi0g
ICAgOiBtX2lzSW5SZWRvKGZhbHNlKQotICAgICwgbV92aWV3KHZpZXcpCi17Ci0gICAgbm90SW1w
bGVtZW50ZWQoKTsKLX0KLQotRWRpdG9yQ2xpZW50RWZsOjp+RWRpdG9yQ2xpZW50RWZsKCkKLXsK
LSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIEVkaXRvckNsaWVudEVmbDo6dGV4dEZp
ZWxkRGlkQmVnaW5FZGl0aW5nKEVsZW1lbnQqKQotewotfQotCi12b2lkIEVkaXRvckNsaWVudEVm
bDo6dGV4dEZpZWxkRGlkRW5kRWRpdGluZyhFbGVtZW50KikKLXsKLSAgICBub3RJbXBsZW1lbnRl
ZCgpOwotfQotCi12b2lkIEVkaXRvckNsaWVudEVmbDo6dGV4dERpZENoYW5nZUluVGV4dEZpZWxk
KEVsZW1lbnQqKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLWJvb2wgRWRpdG9yQ2xp
ZW50RWZsOjpkb1RleHRGaWVsZENvbW1hbmRGcm9tRXZlbnQoRWxlbWVudCosIEtleWJvYXJkRXZl
bnQqKQotewotICAgIHJldHVybiBmYWxzZTsKLX0KLQotdm9pZCBFZGl0b3JDbGllbnRFZmw6OnRl
eHRXaWxsQmVEZWxldGVkSW5UZXh0RmllbGQoRWxlbWVudCopCi17Ci0gICAgbm90SW1wbGVtZW50
ZWQoKTsKLX0KLQotdm9pZCBFZGl0b3JDbGllbnRFZmw6OnRleHREaWRDaGFuZ2VJblRleHRBcmVh
KEVsZW1lbnQqKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLWJvb2wgRWRpdG9yQ2xp
ZW50RWZsOjpzaG91bGRFcmFzZU1hcmtlcnNBZnRlckNoYW5nZVNlbGVjdGlvbihUZXh0Q2hlY2tp
bmdUeXBlKSBjb25zdAotewotICAgIHJldHVybiB0cnVlOwotfQotCi12b2lkIEVkaXRvckNsaWVu
dEVmbDo6aWdub3JlV29yZEluU3BlbGxEb2N1bWVudChjb25zdCBTdHJpbmcmKQotewotICAgIG5v
dEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgRWRpdG9yQ2xpZW50RWZsOjpsZWFybldvcmQoY29u
c3QgU3RyaW5nJikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIEVkaXRvckNs
aWVudEVmbDo6Y2hlY2tTcGVsbGluZ09mU3RyaW5nKFN0cmluZ1ZpZXcsIGludCosIGludCopCi17
Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotU3RyaW5nIEVkaXRvckNsaWVudEVmbDo6Z2V0
QXV0b0NvcnJlY3RTdWdnZXN0aW9uRm9yTWlzc3BlbGxlZFdvcmQoY29uc3QgU3RyaW5nJikKLXsK
LSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBTdHJpbmcoKTsKLX0KLQotdm9pZCBF
ZGl0b3JDbGllbnRFZmw6OmNoZWNrR3JhbW1hck9mU3RyaW5nKFN0cmluZ1ZpZXcsIFZlY3RvcjxH
cmFtbWFyRGV0YWlsPiYsIGludCosIGludCopCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0K
LQotdm9pZCBFZGl0b3JDbGllbnRFZmw6OnVwZGF0ZVNwZWxsaW5nVUlXaXRoR3JhbW1hclN0cmlu
Zyhjb25zdCBTdHJpbmcmLCBjb25zdCBHcmFtbWFyRGV0YWlsJikKLXsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOwotfQotCi12b2lkIEVkaXRvckNsaWVudEVmbDo6dXBkYXRlU3BlbGxpbmdVSVdpdGhN
aXNzcGVsbGVkV29yZChjb25zdCBTdHJpbmcmKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19
Ci0KLXZvaWQgRWRpdG9yQ2xpZW50RWZsOjpzaG93U3BlbGxpbmdVSShib29sKQotewotICAgIG5v
dEltcGxlbWVudGVkKCk7Ci19Ci0KLWJvb2wgRWRpdG9yQ2xpZW50RWZsOjpzcGVsbGluZ1VJSXNT
aG93aW5nKCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBmYWxzZTsKLX0K
LQotdm9pZCBFZGl0b3JDbGllbnRFZmw6OmdldEd1ZXNzZXNGb3JXb3JkKGNvbnN0IFN0cmluZyYg
Lyp3b3JkKi8sIGNvbnN0IFN0cmluZyYgLypjb250ZXh0Ki8sIFZlY3RvcjxTdHJpbmc+JiAvKmd1
ZXNzZXMqLykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi19CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuaCBiL1NvdXJj
ZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAyNjUzOTJkLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQv
ZWZsL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5oCisrKyAvZGV2L251bGwKQEAgLTEs
MTYwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5u
IDx6aW1tZXJtYW5uQGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgWmFjayBSdXNpbiA8
emFja0BrZGUub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIEluYy4KLSAqIENvcHly
aWdodCAoQykgMjAwOCBJTmRUIC0gSW5zdGl0dXRvIE5va2lhIGRlIFRlY25vbG9naWEKLSAqIENv
cHlyaWdodCAoQykgMjAwOS0yMDEwIFByb0ZVU0lPTiBlbWJlZGRlZCBzeXN0ZW1zCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDktMjAxMCBTYW1zdW5nIEVsZWN0cm9uaWNzCi0gKgotICogQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2lmbmRlZiBFZGl0b3JDbGllbnRFZmxfaAotI2RlZmluZSBFZGl0b3JDbGllbnRFZmxfaAotCi0j
aW5jbHVkZSAiRWRpdG9yQ2xpZW50LmgiCi0KLSNpbmNsdWRlICJFZGl0b3JJbnNlcnRBY3Rpb24u
aCIKLSNpbmNsdWRlICJUZXh0QWZmaW5pdHkuaCIKLSNpbmNsdWRlICJUZXh0Q2hlY2tlckNsaWVu
dC5oIgotI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0j
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgotCi1zdHJ1Y3QgRXdrX1Nob3VsZF9JbnNl
cnRfTm9kZV9FdmVudCB7Ci0gICAgV2ViQ29yZTo6Tm9kZSogbm9kZTsKLSAgICBXZWJDb3JlOjpS
YW5nZSogcmFuZ2U7Ci0gICAgV2ViQ29yZTo6RWRpdG9ySW5zZXJ0QWN0aW9uIGFjdGlvbjsKLX07
Ci0KLXN0cnVjdCBFd2tfU2hvdWxkX0luc2VydF9UZXh0X0V2ZW50IHsKLSAgICBjb25zdCBjaGFy
KiB0ZXh0OwotICAgIFdlYkNvcmU6OlJhbmdlKiByYW5nZTsKLSAgICBXZWJDb3JlOjpFZGl0b3JJ
bnNlcnRBY3Rpb24gYWN0aW9uOwotfTsKLQotc3RydWN0IEV3a19TaG91bGRfQ2hhbmdlX1NlbGVj
dGVkX1JhbmdlX0V2ZW50IHsKLSAgICBXZWJDb3JlOjpSYW5nZSogZnJvbVJhbmdlOwotICAgIFdl
YkNvcmU6OlJhbmdlKiB0b1JhbmdlOwotICAgIFdlYkNvcmU6OkVBZmZpbml0eSBhZmZpbml0eTsK
LSAgICBib29sIHN0aWxsU2VsZWN0aW5nOwotfTsKLQotc3RydWN0IEV3a19TaG91bGRfQXBwbHlf
U3R5bGVfRXZlbnQgewotICAgIFdlYkNvcmU6OlN0eWxlUHJvcGVydGllcyogc3R5bGU7Ci0gICAg
V2ViQ29yZTo6UmFuZ2UqIHJhbmdlOwotfTsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3Mg
UGFnZTsKLQotY2xhc3MgRWRpdG9yQ2xpZW50RWZsIDogcHVibGljIEVkaXRvckNsaWVudCwgcHVi
bGljIFRleHRDaGVja2VyQ2xpZW50IHsKLXByb3RlY3RlZDoKLSAgICBib29sIG1faXNJblJlZG87
Ci0gICAgV1RGOjpEZXF1ZTxXVEY6OlJlZlB0cjxXZWJDb3JlOjpVbmRvU3RlcD4gPiB1bmRvU3Rh
Y2s7Ci0gICAgV1RGOjpEZXF1ZTxXVEY6OlJlZlB0cjxXZWJDb3JlOjpVbmRvU3RlcD4gPiByZWRv
U3RhY2s7Ci0KLXB1YmxpYzoKLSAgICBleHBsaWNpdCBFZGl0b3JDbGllbnRFZmwoRXZhc19PYmpl
Y3QqIHZpZXcpOwotICAgIH5FZGl0b3JDbGllbnRFZmwoKTsKLQotICAgIC8vIGZyb20gRWRpdG9y
Q2xpZW50Ci0gICAgdmlydHVhbCB2b2lkIHBhZ2VEZXN0cm95ZWQoKTsKLQotICAgIHZpcnR1YWwg
Ym9vbCBzaG91bGREZWxldGVSYW5nZShSYW5nZSopOwotICAgIHZpcnR1YWwgYm9vbCBzbWFydElu
c2VydERlbGV0ZUVuYWJsZWQoKTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNTZWxlY3RUcmFpbGluZ1do
aXRlc3BhY2VFbmFibGVkKCk7Ci0gICAgdmlydHVhbCBib29sIGlzQ29udGludW91c1NwZWxsQ2hl
Y2tpbmdFbmFibGVkKCk7Ci0gICAgdmlydHVhbCB2b2lkIHRvZ2dsZUNvbnRpbnVvdXNTcGVsbENo
ZWNraW5nKCk7Ci0gICAgdmlydHVhbCBib29sIGlzR3JhbW1hckNoZWNraW5nRW5hYmxlZCgpOwot
ICAgIHZpcnR1YWwgdm9pZCB0b2dnbGVHcmFtbWFyQ2hlY2tpbmcoKTsKLSAgICB2aXJ0dWFsIGlu
dCBzcGVsbENoZWNrZXJEb2N1bWVudFRhZygpOwotCi0gICAgdmlydHVhbCBib29sIHNob3VsZEJl
Z2luRWRpdGluZyhSYW5nZSopOwotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRFbmRFZGl0aW5nKFJh
bmdlKik7Ci0gICAgdmlydHVhbCBib29sIHNob3VsZEluc2VydE5vZGUoTm9kZSosIFJhbmdlKiwg
RWRpdG9ySW5zZXJ0QWN0aW9uKTsKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSW5zZXJ0VGV4dChj
b25zdCBTdHJpbmcmLCBSYW5nZSosIEVkaXRvckluc2VydEFjdGlvbik7Ci0gICAgdmlydHVhbCBi
b29sIHNob3VsZENoYW5nZVNlbGVjdGVkUmFuZ2UoUmFuZ2UqIGZyb21SYW5nZSwgUmFuZ2UqIHRv
UmFuZ2UsIEVBZmZpbml0eSwgYm9vbCBzdGlsbFNlbGVjdGluZyk7Ci0KLSAgICB2aXJ0dWFsIGJv
b2wgc2hvdWxkQXBwbHlTdHlsZShTdHlsZVByb3BlcnRpZXMqLCBSYW5nZSopOwotCi0gICAgdmly
dHVhbCBib29sIHNob3VsZE1vdmVSYW5nZUFmdGVyRGVsZXRlKFJhbmdlKiwgUmFuZ2UqKTsKLQot
ICAgIHZpcnR1YWwgdm9pZCBkaWRCZWdpbkVkaXRpbmcoKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVz
cG9uZFRvQ2hhbmdlZENvbnRlbnRzKCk7Ci0gICAgdmlydHVhbCB2b2lkIHJlc3BvbmRUb0NoYW5n
ZWRTZWxlY3Rpb24oRnJhbWUqKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRW5kRWRpdGluZygpOwot
ICAgIHZpcnR1YWwgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoV2ViQ29yZTo6
UmFuZ2UqKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQo
KTsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJD
b3JlOjpSYW5nZSosIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiA+JiBwYXN0ZWJvYXJkRGF0YSk7Ci0KLSAgICB2aXJ0
dWFsIHZvaWQgcmVnaXN0ZXJVbmRvU3RlcChXVEY6OlBhc3NSZWZQdHI8VW5kb1N0ZXA+KTsKLSAg
ICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJSZWRvU3RlcChXVEY6OlBhc3NSZWZQdHI8VW5kb1N0ZXA+
KTsKLSAgICB2aXJ0dWFsIHZvaWQgY2xlYXJVbmRvUmVkb09wZXJhdGlvbnMoKTsKLQotICAgIHZp
cnR1YWwgYm9vbCBjYW5Db3B5Q3V0KEZyYW1lKiwgYm9vbCBkZWZhdWx0VmFsdWUpIGNvbnN0Owot
ICAgIHZpcnR1YWwgYm9vbCBjYW5QYXN0ZShGcmFtZSosIGJvb2wgZGVmYXVsdFZhbHVlKSBjb25z
dDsKLSAgICB2aXJ0dWFsIGJvb2wgY2FuVW5kbygpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBj
YW5SZWRvKCkgY29uc3Q7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgdW5kbygpOwotICAgIHZpcnR1YWwg
dm9pZCByZWRvKCk7Ci0KLSAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIGludGVycHJldEtleUV2ZW50
KGNvbnN0IEtleWJvYXJkRXZlbnQqKTsKLSAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlRWRpdGluZ0tl
eWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCopOwotICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVLZXli
b2FyZEV2ZW50KEtleWJvYXJkRXZlbnQqKTsKLSAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlSW5wdXRN
ZXRob2RLZXlkb3duKEtleWJvYXJkRXZlbnQqKTsKLQotICAgIHZpcnR1YWwgdm9pZCB0ZXh0Rmll
bGREaWRCZWdpbkVkaXRpbmcoRWxlbWVudCopOwotICAgIHZpcnR1YWwgdm9pZCB0ZXh0RmllbGRE
aWRFbmRFZGl0aW5nKEVsZW1lbnQqKTsKLSAgICB2aXJ0dWFsIHZvaWQgdGV4dERpZENoYW5nZUlu
VGV4dEZpZWxkKEVsZW1lbnQqKTsKLSAgICB2aXJ0dWFsIGJvb2wgZG9UZXh0RmllbGRDb21tYW5k
RnJvbUV2ZW50KEVsZW1lbnQqLCBLZXlib2FyZEV2ZW50Kik7Ci0gICAgdmlydHVhbCB2b2lkIHRl
eHRXaWxsQmVEZWxldGVkSW5UZXh0RmllbGQoRWxlbWVudCopOwotICAgIHZpcnR1YWwgdm9pZCB0
ZXh0RGlkQ2hhbmdlSW5UZXh0QXJlYShFbGVtZW50Kik7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgc2hv
dWxkRXJhc2VNYXJrZXJzQWZ0ZXJDaGFuZ2VTZWxlY3Rpb24oVGV4dENoZWNraW5nVHlwZSkgY29u
c3Q7Ci0gICAgdmlydHVhbCB2b2lkIGlnbm9yZVdvcmRJblNwZWxsRG9jdW1lbnQoY29uc3QgU3Ry
aW5nJik7Ci0gICAgdmlydHVhbCB2b2lkIGxlYXJuV29yZChjb25zdCBTdHJpbmcmKTsKLSAgICB2
aXJ0dWFsIHZvaWQgY2hlY2tTcGVsbGluZ09mU3RyaW5nKFN0cmluZ1ZpZXcsIGludCogbWlzc3Bl
bGxpbmdMb2NhdGlvbiwgaW50KiBtaXNzcGVsbGluZ0xlbmd0aCk7Ci0gICAgdmlydHVhbCBTdHJp
bmcgZ2V0QXV0b0NvcnJlY3RTdWdnZXN0aW9uRm9yTWlzc3BlbGxlZFdvcmQoY29uc3QgU3RyaW5n
JiBtaXNzcGVsbGVkV29yZCk7Ci0gICAgdmlydHVhbCB2b2lkIGNoZWNrR3JhbW1hck9mU3RyaW5n
KFN0cmluZ1ZpZXcsIFdURjo6VmVjdG9yPEdyYW1tYXJEZXRhaWw+JiwgaW50KiBiYWRHcmFtbWFy
TG9jYXRpb24sIGludCogYmFkR3JhbW1hckxlbmd0aCk7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0
ZVNwZWxsaW5nVUlXaXRoR3JhbW1hclN0cmluZyhjb25zdCBTdHJpbmcmLCBjb25zdCBHcmFtbWFy
RGV0YWlsJik7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNwZWxsaW5nVUlXaXRoTWlzc3BlbGxl
ZFdvcmQoY29uc3QgU3RyaW5nJik7Ci0gICAgdmlydHVhbCB2b2lkIHNob3dTcGVsbGluZ1VJKGJv
b2wgc2hvdyk7Ci0gICAgdmlydHVhbCBib29sIHNwZWxsaW5nVUlJc1Nob3dpbmcoKTsKLSAgICB2
aXJ0dWFsIHZvaWQgZ2V0R3Vlc3Nlc0ZvcldvcmQoY29uc3QgU3RyaW5nJiB3b3JkLCBjb25zdCBT
dHJpbmcmIGNvbnRleHQsIFdURjo6VmVjdG9yPFN0cmluZz4mIGd1ZXNzZXMpOwotICAgIHZpcnR1
YWwgdm9pZCB3aWxsU2V0SW5wdXRNZXRob2RTdGF0ZSgpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRJ
bnB1dE1ldGhvZFN0YXRlKGJvb2wgZW5hYmxlZCk7Ci0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RD
aGVja2luZ09mU3RyaW5nKFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXF1
ZXN0PikgeyB9Ci0jaWYgVVNFKFVOSUZJRURfVEVYVF9DSEVDS0lORykKLSAgICB2aXJ0dWFsIFZl
Y3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IGNoZWNrVGV4dE9mUGFyYWdyYXBoKFN0cmluZ1ZpZXcs
IFRleHRDaGVja2luZ1R5cGVNYXNrKSB7IHJldHVybiBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0
PigpOyB9Ci0jZW5kaWYKLSAgICB2aXJ0dWFsIFRleHRDaGVja2VyQ2xpZW50KiB0ZXh0Q2hlY2tl
cigpIHsgcmV0dXJuIHRoaXM7IH0KLQotcHJpdmF0ZToKLSAgICBFdmFzX09iamVjdCAqbV92aWV3
OwotfTsKLX0KLQotI2VuZGlmIC8vIEVkaXRvckNsaWVudEVmbF9oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHAgYi9T
b3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHAK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFmN2EzZmEuLjAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwCisr
KyAvZGV2L251bGwKQEAgLTEsMTAxNSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA2
IFphY2sgUnVzaW4gPHphY2tAa2RlLm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAxMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggTm9r
aWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDggQ29sbGFib3JhIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdo
dCAoQykgMjAwOCBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlcgotICogQ29weXJpZ2h0IChDKSAy
MDA4IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAx
MCBQcm9GVVNJT04gZW1iZWRkZWQgc3lzdGVtcwotICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAg
U2Ftc3VuZyBFbGVjdHJvbmljcwotICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0
aW9uCi0gKgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkZyYW1l
TG9hZGVyQ2xpZW50RWZsLmgiCi0KLSNpbmNsdWRlICJBUElDYXN0LmgiCi0jaW5jbHVkZSAiRG9j
dW1lbnRMb2FkZXIuaCIKLSNpbmNsdWRlICJFcnJvcnNFZmwuaCIKLSNpbmNsdWRlICJGb3JtU3Rh
dGUuaCIKLSNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgotI2luY2x1ZGUgIkZyYW1lTmV0d29ya2lu
Z0NvbnRleHRFZmwuaCIKLSNpbmNsdWRlICJGcmFtZVRyZWUuaCIKLSNpbmNsdWRlICJGcmFtZVZp
ZXcuaCIKLSNpbmNsdWRlICJIVE1MRm9ybUVsZW1lbnQuaCIKLSNpbmNsdWRlICJIVFRQU3RhdHVz
Q29kZXMuaCIKLSNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCi0jaW5jbHVkZSAiTWFpbkZy
YW1lLmgiCi0jaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLSNpbmNsdWRlICJQYWdlLmgiCi0j
aW5jbHVkZSAiUGx1Z2luRGF0YWJhc2UuaCIKLSNpbmNsdWRlICJQcm9ncmVzc1RyYWNrZXIuaCIK
LSNpbmNsdWRlICJSZW5kZXJXaWRnZXQuaCIKLSNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIK
LSNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCi0jaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxl
ci5oIgotI2luY2x1ZGUgIlNldHRpbmdzLmgiCi0jaW5jbHVkZSAiV2ViS2l0VmVyc2lvbi5oIgot
I2luY2x1ZGUgImV3a19mcmFtZV9wcml2YXRlLmgiCi0jaW5jbHVkZSAiZXdrX3ByaXZhdGUuaCIK
LSNpbmNsdWRlICJld2tfc2V0dGluZ3MuaCIKLSNpbmNsdWRlICJld2tfc2V0dGluZ3NfcHJpdmF0
ZS5oIgotI2luY2x1ZGUgImV3a192aWV3X3ByaXZhdGUuaCIKLSNpbmNsdWRlIDxFY29yZV9FdmFz
Lmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0NvbmNhdGVuYXRlLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotRnJhbWVMb2FkZXJD
bGllbnRFZmw6OkZyYW1lTG9hZGVyQ2xpZW50RWZsKEV2YXNfT2JqZWN0KiB2aWV3KQotICAgIDog
bV92aWV3KHZpZXcpCi0gICAgLCBtX2ZyYW1lKDApCi0gICAgLCBtX3VzZXJBZ2VudCgiIikKLSAg
ICAsIG1fY3VzdG9tVXNlckFnZW50KCIiKQotICAgICwgbV9wbHVnaW5WaWV3KDApCi0gICAgLCBt
X2hhc1NlbnRSZXNwb25zZVRvUGx1Z2luKGZhbHNlKQotewotfQotCi1zdGF0aWMgU3RyaW5nIGNv
bXBvc2VVc2VyQWdlbnQoKQotewotICAgIHJldHVybiBTdHJpbmcoZXdrX3NldHRpbmdzX2RlZmF1
bHRfdXNlcl9hZ2VudF9nZXQoKSk7Ci19Ci0KLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OnNl
dEN1c3RvbVVzZXJBZ2VudChjb25zdCBTdHJpbmcmIGFnZW50KQotewotICAgIG1fY3VzdG9tVXNl
ckFnZW50ID0gYWdlbnQ7Ci19Ci0KLWNvbnN0IFN0cmluZyYgRnJhbWVMb2FkZXJDbGllbnRFZmw6
OmN1c3RvbVVzZXJBZ2VudCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fY3VzdG9tVXNlckFnZW50
OwotfQotCi1TdHJpbmcgRnJhbWVMb2FkZXJDbGllbnRFZmw6OnVzZXJBZ2VudChjb25zdCBVUkwm
KQotewotICAgIGlmICghbV9jdXN0b21Vc2VyQWdlbnQuaXNFbXB0eSgpKQotICAgICAgICByZXR1
cm4gbV9jdXN0b21Vc2VyQWdlbnQ7Ci0KLSAgICBpZiAobV91c2VyQWdlbnQuaXNFbXB0eSgpKQot
ICAgICAgICBtX3VzZXJBZ2VudCA9IGNvbXBvc2VVc2VyQWdlbnQoKTsKLSAgICByZXR1cm4gbV91
c2VyQWdlbnQ7Ci19Ci0KLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmNhbGxQb2xpY3lGdW5j
dGlvbihGcmFtZVBvbGljeUZ1bmN0aW9uIGZ1bmN0aW9uLCBQb2xpY3lBY3Rpb24gYWN0aW9uKQot
ewotICAgIGZ1bmN0aW9uKGFjdGlvbik7Ci19Ci0KLVdURjo6UGFzc1JlZlB0cjxEb2N1bWVudExv
YWRlcj4gRnJhbWVMb2FkZXJDbGllbnRFZmw6OmNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3Vic3RpdHV0ZURhdGEmIHN1YnN0aXR1dGVE
YXRhKQotewotICAgIFJlZlB0cjxEb2N1bWVudExvYWRlcj4gbG9hZGVyID0gRG9jdW1lbnRMb2Fk
ZXI6OmNyZWF0ZShyZXF1ZXN0LCBzdWJzdGl0dXRlRGF0YSk7Ci0gICAgaWYgKHN1YnN0aXR1dGVE
YXRhLmlzVmFsaWQoKSkKLSAgICAgICAgbG9hZGVyLT5zZXREZWZlck1haW5SZXNvdXJjZURhdGFM
b2FkKGZhbHNlKTsKLSAgICByZXR1cm4gbG9hZGVyLnJlbGVhc2UoKTsKLX0KLQotdm9pZCBGcmFt
ZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hXaWxsU3VibWl0Rm9ybShQYXNzUmVmUHRyPEZvcm1T
dGF0ZT4sIEZyYW1lUG9saWN5RnVuY3Rpb24gZnVuY3Rpb24pCi17Ci0gICAgLy8gRklYTUU6IFRo
aXMgaXMgc3VyZWx5IHRvbyBzaW1wbGUKLSAgICBBU1NFUlQoZnVuY3Rpb24pOwotICAgIGNhbGxQ
b2xpY3lGdW5jdGlvbihmdW5jdGlvbiwgUG9saWN5VXNlKTsKLX0KLQotdm9pZCBGcmFtZUxvYWRl
ckNsaWVudEVmbDo6Y29tbWl0dGVkTG9hZChEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBj
aGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQotewotICAgIGlmICghbV9wbHVnaW5WaWV3KSB7Ci0gICAg
ICAgIGxvYWRlci0+Y29tbWl0RGF0YShkYXRhLCBsZW5ndGgpOwotCi0gICAgICAgIC8vIExldCB0
aGUgbWVkaWEgZG9jdW1lbnQgaGFuZGxlIHRoZSByZXN0IG9mIGxvYWRpbmcgaXRzZWxmLCBjYW5j
ZWwgaGVyZS4KLSAgICAgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGxvYWRlci0+ZnJhbWUoKTsKLSAg
ICAgICAgaWYgKGNvcmVGcmFtZSAmJiBjb3JlRnJhbWUtPmRvY3VtZW50KCktPmlzTWVkaWFEb2N1
bWVudCgpKQotICAgICAgICAgICAgbG9hZGVyLT5jYW5jZWxNYWluUmVzb3VyY2VMb2FkKHBsdWdp
bldpbGxIYW5kbGVMb2FkRXJyb3IobG9hZGVyLT5yZXNwb25zZSgpKSk7Ci0gICAgfQotCi0gICAg
Ly8gV2UgcmUtY2hlY2sgaGVyZSBhcyB0aGUgcGx1Z2luIGNhbiBoYXZlIGJlZW4gY3JlYXRlZAot
ICAgIGlmIChtX3BsdWdpblZpZXcpIHsKLSAgICAgICAgaWYgKCFtX2hhc1NlbnRSZXNwb25zZVRv
UGx1Z2luKSB7Ci0gICAgICAgICAgICBtX3BsdWdpblZpZXctPmRpZFJlY2VpdmVSZXNwb25zZShs
b2FkZXItPnJlc3BvbnNlKCkpOwotICAgICAgICAgICAgbV9oYXNTZW50UmVzcG9uc2VUb1BsdWdp
biA9IHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgbV9wbHVnaW5WaWV3LT5kaWRSZWNlaXZlRGF0
YShkYXRhLCBsZW5ndGgpOwotICAgIH0KLX0KLQotdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6
ZGlzcGF0Y2hEaWRSZXBsYWNlU3RhdGVXaXRoaW5QYWdlKCkKLXsKLSAgICBub3RJbXBsZW1lbnRl
ZCgpOwotfQotCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZFB1c2hTdGF0
ZVdpdGhpblBhZ2UoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgRnJhbWVM
b2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkUG9wU3RhdGVXaXRoaW5QYWdlKCkKLXsKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRj
aERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShEb2N1bWVudExvYWRlciosIHVuc2ln
bmVkIGxvbmcgLyppZGVudGlmaWVyKi8sIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikK
LXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZs
OjpkaXNwYXRjaERpZENhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKERvY3VtZW50TG9hZGVy
KiwgdW5zaWduZWQgbG9uZyAvKmlkZW50aWZpZXIqLywgY29uc3QgQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UmKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgRnJhbWVMb2FkZXJD
bGllbnRFZmw6OmRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0KERvY3VtZW50TG9hZGVyKiBsb2FkZXIs
IHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgUmVzb3VyY2VSZXF1ZXN0JiBjb3JlUmVxdWVzdCwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgY29yZVJlc3BvbnNlKQotewotICAgIENTdHJpbmcgdXJs
ID0gY29yZVJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpOwotICAgIENTdHJpbmcgZmlyc3RQ
YXJ0eSA9IGNvcmVSZXF1ZXN0LmZpcnN0UGFydHlGb3JDb29raWVzKCkuc3RyaW5nKCkudXRmOCgp
OwotICAgIENTdHJpbmcgaHR0cE1ldGhvZCA9IGNvcmVSZXF1ZXN0Lmh0dHBNZXRob2QoKS51dGY4
KCk7Ci0gICAgREJHKCJSZXNvdXJjZSB1cmw9JXMsIGZpcnN0X3BhcnR5PSVzLCBodHRwX21ldGhv
ZD0lcyIsIHVybC5kYXRhKCksIGZpcnN0UGFydHkuZGF0YSgpLCBodHRwTWV0aG9kLmRhdGEoKSk7
Ci0KLSAgICAvLyBXZSB3YW50IHRvIGRpc3Rpbmd1aXNoIGJldHdlZW4gYSByZXF1ZXN0IGZvciBh
IGRvY3VtZW50IHRvIGJlIGxvYWRlZCBpbnRvCi0gICAgLy8gdGhlIG1haW4gZnJhbWUsIGEgc3Vi
LWZyYW1lLCBvciB0aGUgc3ViLW9iamVjdHMgaW4gdGhhdCBkb2N1bWVudC4KLSAgICBib29sIGlz
TWFpbkZyYW1lUmVxdWVzdCA9IGZhbHNlOwotICAgIGlmIChsb2FkZXIpIHsKLSAgICAgICAgICAg
IGNvbnN0IEZyYW1lTG9hZGVyKiBmcmFtZUxvYWRlciA9IGxvYWRlci0+ZnJhbWVMb2FkZXIoKTsK
LSAgICAgICAgICAgIGlzTWFpbkZyYW1lUmVxdWVzdCA9IChsb2FkZXIgPT0gZnJhbWVMb2FkZXIt
PnByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIoKSAmJiBmcmFtZUxvYWRlci0+ZnJhbWUoKS5pc01h
aW5GcmFtZSgpKTsKLSAgICB9Ci0KLSAgICBFd2tfRnJhbWVfUmVzb3VyY2VfUmVxdWVzdCByZXF1
ZXN0ID0geyAwLCBmaXJzdFBhcnR5LmRhdGEoKSwgaHR0cE1ldGhvZC5kYXRhKCksIGlkZW50aWZp
ZXIsIG1fZnJhbWUsIGlzTWFpbkZyYW1lUmVxdWVzdCB9OwotICAgIEV3a19GcmFtZV9SZXNvdXJj
ZV9SZXF1ZXN0IG9yaWcgPSByZXF1ZXN0OyAvKiBJbml0aWFsaXplIGNvbnN0IGZpZWxkcy4gKi8K
LQotICAgIG9yaWcudXJsID0gcmVxdWVzdC51cmwgPSB1cmwuZGF0YSgpOwotCi0gICAgRXdrX0Zy
YW1lX1Jlc291cmNlX1Jlc3BvbnNlKiByZWRpcmVjdFJlc3BvbnNlOwotICAgIEV3a19GcmFtZV9S
ZXNvdXJjZV9SZXNwb25zZSByZXNwb25zZUJ1ZmZlcjsKLSAgICBDU3RyaW5nIHJlZGlyZWN0VXJs
LCBtaW1lVHlwZTsKLQotICAgIGlmIChjb3JlUmVzcG9uc2UuaXNOdWxsKCkpCi0gICAgICAgIHJl
ZGlyZWN0UmVzcG9uc2UgPSAwOwotICAgIGVsc2UgewotICAgICAgICByZWRpcmVjdFVybCA9IGNv
cmVSZXNwb25zZS51cmwoKS5zdHJpbmcoKS51dGY4KCk7Ci0gICAgICAgIG1pbWVUeXBlID0gY29y
ZVJlc3BvbnNlLm1pbWVUeXBlKCkudXRmOCgpOwotICAgICAgICByZXNwb25zZUJ1ZmZlci51cmwg
PSByZWRpcmVjdFVybC5kYXRhKCk7Ci0gICAgICAgIHJlc3BvbnNlQnVmZmVyLnN0YXR1c19jb2Rl
ID0gY29yZVJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCk7Ci0gICAgICAgIHJlc3BvbnNlQnVmZmVy
LmlkZW50aWZpZXIgPSBpZGVudGlmaWVyOwotICAgICAgICByZXNwb25zZUJ1ZmZlci5taW1lX3R5
cGUgPSBtaW1lVHlwZS5kYXRhKCk7Ci0gICAgICAgIHJlZGlyZWN0UmVzcG9uc2UgPSAmcmVzcG9u
c2VCdWZmZXI7Ci0gICAgfQotCi0gICAgRXdrX0ZyYW1lX1Jlc291cmNlX01lc3NhZ2VzIG1lc3Nh
Z2VzID0geyAmcmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSB9OwotICAgIGV3a19mcmFtZV9yZXF1
ZXN0X3dpbGxfc2VuZChtX2ZyYW1lLCAmbWVzc2FnZXMpOwotICAgIGV2YXNfb2JqZWN0X3NtYXJ0
X2NhbGxiYWNrX2NhbGwobV92aWV3LCAicmVzb3VyY2UscmVxdWVzdCx3aWxsc2VuZCIsICZtZXNz
YWdlcyk7Ci0KLSAgICBpZiAocmVxdWVzdC51cmwgIT0gb3JpZy51cmwpIHsKLSAgICAgICAgY29y
ZVJlcXVlc3Quc2V0VVJMKFVSTChVUkwoKSwgcmVxdWVzdC51cmwpKTsKLQotICAgICAgICAvLyBD
YWxsaW5nIGNsaWVudCBtaWdodCBoYXZlIGNoYW5nZWQgb3VyIHVybCBwb2ludGVyLgotICAgICAg
ICAvLyBGcmVlIHRoZSBuZXcgYWxsb2NhdGVkIHN0cmluZy4KLSAgICAgICAgZnJlZShjb25zdF9j
YXN0PGNoYXIqPihyZXF1ZXN0LnVybCkpOwotICAgIH0KLX0KLQotYm9vbCBGcmFtZUxvYWRlckNs
aWVudEVmbDo6c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoRG9jdW1lbnRMb2FkZXIqLCB1bnNp
Z25lZCBsb25nKQotewotICAgIHJldHVybiB0cnVlOwotfQotCi12b2lkIEZyYW1lTG9hZGVyQ2xp
ZW50RWZsOjphc3NpZ25JZGVudGlmaWVyVG9Jbml0aWFsUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
Y29yZVJlcXVlc3QpCi17Ci0gICAgQ1N0cmluZyB1cmwgPSBjb3JlUmVxdWVzdC51cmwoKS5zdHJp
bmcoKS51dGY4KCk7Ci0gICAgQ1N0cmluZyBmaXJzdFBhcnR5ID0gY29yZVJlcXVlc3QuZmlyc3RQ
YXJ0eUZvckNvb2tpZXMoKS5zdHJpbmcoKS51dGY4KCk7Ci0gICAgQ1N0cmluZyBodHRwTWV0aG9k
ID0gY29yZVJlcXVlc3QuaHR0cE1ldGhvZCgpLnV0ZjgoKTsKLSAgICBEQkcoIlJlc291cmNlIHVy
bD0lcywgRmlyc3QgcGFydHk9JXMsIEhUVFAgbWV0aG9kPSVzIiwgdXJsLmRhdGEoKSwgZmlyc3RQ
YXJ0eS5kYXRhKCksIGh0dHBNZXRob2QuZGF0YSgpKTsKLQotICAgIGJvb2wgaXNNYWluRnJhbWVS
ZXF1ZXN0ID0gZmFsc2U7Ci0gICAgaWYgKGxvYWRlcikgewotICAgICAgICAgICAgY29uc3QgRnJh
bWVMb2FkZXIqIGZyYW1lTG9hZGVyID0gbG9hZGVyLT5mcmFtZUxvYWRlcigpOwotICAgICAgICAg
ICAgaXNNYWluRnJhbWVSZXF1ZXN0ID0gKGxvYWRlciA9PSBmcmFtZUxvYWRlci0+cHJvdmlzaW9u
YWxEb2N1bWVudExvYWRlcigpICYmIGZyYW1lTG9hZGVyLT5mcmFtZSgpLmlzTWFpbkZyYW1lKCkp
OwotICAgIH0KLQotICAgIEV3a19GcmFtZV9SZXNvdXJjZV9SZXF1ZXN0IHJlcXVlc3QgPSB7IHVy
bC5kYXRhKCksIGZpcnN0UGFydHkuZGF0YSgpLCBodHRwTWV0aG9kLmRhdGEoKSwgaWRlbnRpZmll
ciwgbV9mcmFtZSwgaXNNYWluRnJhbWVSZXF1ZXN0IH07Ci0gICAgZXdrX2ZyYW1lX3JlcXVlc3Rf
YXNzaWduX2lkZW50aWZpZXIobV9mcmFtZSwgJnJlcXVlc3QpOwotICAgIGV2YXNfb2JqZWN0X3Nt
YXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3LCAicmVzb3VyY2UscmVxdWVzdCxuZXciLCAmcmVxdWVz
dCk7Ci19Ci0KLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmZyYW1lTG9hZGVyRGVzdHJveWVk
KCkKLXsKLSAgICBpZiAobV9mcmFtZSkKLSAgICAgICAgZXdrX2ZyYW1lX2NvcmVfZ29uZShtX2Zy
YW1lKTsKLSAgICBtX2ZyYW1lID0gMDsKLQotICAgIGRlbGV0ZSB0aGlzOwotfQotCi12b2lkIEZy
YW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZShEb2N1bWVudExv
YWRlciogbG9hZGVyLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIGNvcmVSZXNwb25zZSkKLXsKLSAgICAvLyBVcGRhdGUgb3VyIGtub3dsZWRnZSBvZiBy
ZXF1ZXN0IHNvdXAgZmxhZ3MgLSBzb21lIGFyZSBvbmx5IHNldAotICAgIC8vIGFmdGVyIHRoZSBy
ZXF1ZXN0IGlzIGRvbmUuCi0gICAgbG9hZGVyLT5yZXF1ZXN0KCkuc2V0U291cE1lc3NhZ2VGbGFn
cyhjb3JlUmVzcG9uc2Uuc291cE1lc3NhZ2VGbGFncygpKTsKLQotICAgIG1fcmVzcG9uc2UgPSBj
b3JlUmVzcG9uc2U7Ci0KLSAgICBDU3RyaW5nIG1pbWVUeXBlID0gY29yZVJlc3BvbnNlLm1pbWVU
eXBlKCkudXRmOCgpOwotICAgIEV3a19GcmFtZV9SZXNvdXJjZV9SZXNwb25zZSByZXNwb25zZSA9
IHsgMCwgY29yZVJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCksIGlkZW50aWZpZXIsIG1pbWVUeXBl
LmRhdGEoKSB9OwotICAgIENTdHJpbmcgdXJsID0gY29yZVJlc3BvbnNlLnVybCgpLnN0cmluZygp
LnV0ZjgoKTsKLSAgICByZXNwb25zZS51cmwgPSB1cmwuZGF0YSgpOwotCi0gICAgZXdrX2ZyYW1l
X3Jlc3BvbnNlX3JlY2VpdmVkKG1fZnJhbWUsICZyZXNwb25zZSk7Ci0gICAgZXZhc19vYmplY3Rf
c21hcnRfY2FsbGJhY2tfY2FsbChtX3ZpZXcsICJyZXNvdXJjZSxyZXNwb25zZSxyZWNlaXZlZCIs
ICZyZXNwb25zZSk7Ci19Ci0KLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGVj
aWRlUG9saWN5Rm9yUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0LCBGcmFtZVBvbGljeUZ1bmN0aW9u
IGZ1bmN0aW9uKQotewotICAgIC8vIHdlIG5lZWQgdG8gY2FsbCBkaXJlY3RseSBoZXJlIChjdXJy
ZW50bHkgY2FsbFBvbGljeUZ1bmN0aW9uIGRvZXMgdGhhdCEpCi0gICAgQVNTRVJUKGZ1bmN0aW9u
KTsKLQotICAgIGlmIChyZXNvdXJjZVJlcXVlc3QuaXNOdWxsKCkpIHsKLSAgICAgICAgY2FsbFBv
bGljeUZ1bmN0aW9uKGZ1bmN0aW9uLCBQb2xpY3lJZ25vcmUpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgLy8gSWdub3JlIHJlc3BvbnNlcyB3aXRoIGFuIEhUVFAgc3RhdHVzIGNvZGUg
b2YgMjA0IChObyBDb250ZW50KQotICAgIGlmIChyZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpID09
IEhUVFBOb0NvbnRlbnQpIHsKLSAgICAgICAgY2FsbFBvbGljeUZ1bmN0aW9uKGZ1bmN0aW9uLCBQ
b2xpY3lJZ25vcmUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGNhblNob3dN
SU1FVHlwZShyZXNwb25zZS5taW1lVHlwZSgpKSkKLSAgICAgICAgY2FsbFBvbGljeUZ1bmN0aW9u
KGZ1bmN0aW9uLCBQb2xpY3lVc2UpOwotICAgIGVsc2UKLSAgICAgICAgY2FsbFBvbGljeUZ1bmN0
aW9uKGZ1bmN0aW9uLCBQb2xpY3lEb3dubG9hZCk7Ci19Ci0KLXZvaWQgRnJhbWVMb2FkZXJDbGll
bnRFZmw6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKGNvbnN0IE5hdmln
YXRpb25BY3Rpb24mLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCwgUGFz
c1JlZlB0cjxGb3JtU3RhdGU+LCBjb25zdCBTdHJpbmcmLCBGcmFtZVBvbGljeUZ1bmN0aW9uIGZ1
bmN0aW9uKQotewotICAgIEFTU0VSVChmdW5jdGlvbik7Ci0gICAgQVNTRVJUKG1fZnJhbWUpOwot
Ci0gICAgaWYgKHJlc291cmNlUmVxdWVzdC5pc051bGwoKSkgewotICAgICAgICBjYWxsUG9saWN5
RnVuY3Rpb24oZnVuY3Rpb24sIFBvbGljeUlnbm9yZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICAvLyBpZiBub3QgYWNjZXB0TmF2aWdhdGlvblJlcXVlc3QgLSBsb29rIGF0IFF0IC0+
IFBvbGljeUlnbm9yZTsKLSAgICAvLyBGSVhNRTogZG8gcHJvcGVyIGNoZWNrIGFuZCBvbmx5IHJl
c2V0IGZvcm1zIHdoZW4gb24gUG9saWN5SWdub3JlCi0gICAgRnJhbWUqIGYgPSBFV0tQcml2YXRl
Ojpjb3JlRnJhbWUobV9mcmFtZSk7Ci0gICAgZi0+bG9hZGVyKCkucmVzZXRNdWx0aXBsZUZvcm1T
dWJtaXNzaW9uUHJvdGVjdGlvbigpOwotICAgIGNhbGxQb2xpY3lGdW5jdGlvbihmdW5jdGlvbiwg
UG9saWN5VXNlKTsKLX0KLQotdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIGFjdGlv
biwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QsIFBhc3NSZWZQdHI8Rm9y
bVN0YXRlPiwgRnJhbWVQb2xpY3lGdW5jdGlvbiBmdW5jdGlvbikKLXsKLSAgICBBU1NFUlQoZnVu
Y3Rpb24pOwotICAgIEFTU0VSVChtX2ZyYW1lKTsKLQotICAgIGlmIChyZXNvdXJjZVJlcXVlc3Qu
aXNOdWxsKCkpIHsKLSAgICAgICAgY2FsbFBvbGljeUZ1bmN0aW9uKGZ1bmN0aW9uLCBQb2xpY3lJ
Z25vcmUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gaWYgbm90IGFjY2VwdE5h
dmlnYXRpb25SZXF1ZXN0IC0gbG9vayBhdCBRdCAtPiBQb2xpY3lJZ25vcmU7Ci0gICAgLy8gRklY
TUU6IGRvIHByb3BlciBjaGVjayBhbmQgb25seSByZXNldCBmb3JtcyB3aGVuIG9uIFBvbGljeUln
bm9yZQotICAgIENTdHJpbmcgdXJsID0gcmVzb3VyY2VSZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0
ZjgoKTsKLSAgICBDU3RyaW5nIGZpcnN0UGFydHkgPSByZXNvdXJjZVJlcXVlc3QuZmlyc3RQYXJ0
eUZvckNvb2tpZXMoKS5zdHJpbmcoKS51dGY4KCk7Ci0gICAgQ1N0cmluZyBodHRwTWV0aG9kID0g
cmVzb3VyY2VSZXF1ZXN0Lmh0dHBNZXRob2QoKS51dGY4KCk7Ci0gICAgRXdrX0ZyYW1lX1Jlc291
cmNlX1JlcXVlc3QgcmVxdWVzdCA9IHsgdXJsLmRhdGEoKSwgZmlyc3RQYXJ0eS5kYXRhKCksIGh0
dHBNZXRob2QuZGF0YSgpLCAwLCBtX2ZyYW1lLCBmYWxzZSB9OwotICAgIGJvb2wgcmV0ID0gZXdr
X3ZpZXdfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24obV92aWV3LCAmcmVxdWVzdCwgYWN0aW9u
LnR5cGUoKSk7Ci0KLSAgICBQb2xpY3lBY3Rpb24gcG9saWN5OwotICAgIGlmICghcmV0KQotICAg
ICAgICBwb2xpY3kgPSBQb2xpY3lJZ25vcmU7Ci0gICAgZWxzZSB7Ci0gICAgICAgIGlmIChhY3Rp
b24udHlwZSgpID09IE5hdmlnYXRpb25UeXBlRm9ybVN1Ym1pdHRlZCB8fCBhY3Rpb24udHlwZSgp
ID09IE5hdmlnYXRpb25UeXBlRm9ybVJlc3VibWl0dGVkKSB7Ci0gICAgICAgICAgICBGcmFtZSog
ZiA9IEVXS1ByaXZhdGU6OmNvcmVGcmFtZShtX2ZyYW1lKTsKLSAgICAgICAgICAgIGYtPmxvYWRl
cigpLnJlc2V0TXVsdGlwbGVGb3JtU3VibWlzc2lvblByb3RlY3Rpb24oKTsKLSAgICAgICAgfQot
ICAgICAgICBwb2xpY3kgPSBQb2xpY3lVc2U7Ci0gICAgfQotICAgIGNhbGxQb2xpY3lGdW5jdGlv
bihmdW5jdGlvbiwgcG9saWN5KTsKLX0KLQotUGFzc1JlZlB0cjxXaWRnZXQ+IEZyYW1lTG9hZGVy
Q2xpZW50RWZsOjpjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYgcGx1Z2luU2l6ZSwgSFRNTFBs
dWdJbkVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzLCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBib29sIGxvYWRNYW51YWxseSkKLXsKLSAgICBBU1NFUlQobV9mcmFt
ZSk7Ci0gICAgQVNTRVJUKG1fdmlldyk7Ci0KLSAgICByZXR1cm4gZXdrX3ZpZXdfcGx1Z2luX2Ny
ZWF0ZShtX3ZpZXcsIG1fZnJhbWUsIHBsdWdpblNpemUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZWxlbWVudCwgdXJsLCBwYXJhbU5hbWVzLCBwYXJhbVZhbHVlcywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW1lVHlwZSwgbG9hZE1hbnVhbGx5KTsKLX0K
LQotUGFzc1JlZlB0cjxGcmFtZT4gRnJhbWVMb2FkZXJDbGllbnRFZmw6OmNyZWF0ZUZyYW1lKGNv
bnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUsIEhUTUxGcmFtZU93bmVyRWxlbWVudCog
b3duZXJFbGVtZW50LCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBib29sIC8qYWxsb3dzU2Nyb2xs
aW5nKi8sIGludCAvKm1hcmdpbldpZHRoKi8sIGludCAvKm1hcmdpbkhlaWdodCovKQotewotICAg
IEFTU0VSVChtX2ZyYW1lKTsKLSAgICBBU1NFUlQobV92aWV3KTsKLQotICAgIEV2YXNfT2JqZWN0
KiBzdWJGcmFtZSA9IGV3a19mcmFtZV9jaGlsZF9hZGQobV9mcmFtZSwgbmFtZSwgb3duZXJFbGVt
ZW50KTsKLSAgICBpZiAoIXN1YkZyYW1lKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIFdlYkNv
cmU6OkZyYW1lKiBjb3JlU3ViRnJhbWUgPSBFV0tQcml2YXRlOjpjb3JlRnJhbWUoc3ViRnJhbWUp
OwotICAgIEFTU0VSVChjb3JlU3ViRnJhbWUpOwotCi0gICAgLy8gVGhlIGNyZWF0aW9uIG9mIHRo
ZSBmcmFtZSBtYXkgaGF2ZSBydW4gYXJiaXRyYXJ5IEphdmFTY3JpcHQgdGhhdCByZW1vdmVkIGl0
IGZyb20gdGhlIHBhZ2UgYWxyZWFkeS4KLSAgICBpZiAoIWNvcmVTdWJGcmFtZS0+cGFnZSgpKSB7
Ci0gICAgICAgIGV2YXNfb2JqZWN0X2RlbChzdWJGcmFtZSk7Ci0gICAgICAgIHJldHVybiAwOwot
ICAgIH0KLQotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3LCAiZnJh
bWUsY3JlYXRlZCIsIHN1YkZyYW1lKTsKLSAgICBFV0tQcml2YXRlOjpjb3JlRnJhbWUobV9mcmFt
ZSktPmxvYWRlcigpLmxvYWRVUkxJbnRvQ2hpbGRGcmFtZSh1cmwsIHJlZmVycmVyLCBjb3JlU3Vi
RnJhbWUpOwotCi0gICAgLy8gVGhlIGZyYW1lJ3Mgb25sb2FkIGhhbmRsZXIgbWF5IGhhdmUgcmVt
b3ZlZCBpdCBmcm9tIHRoZSBkb2N1bWVudC4KLSAgICAvLyBTZWUgZmFzdC9kb20vbnVsbC1wYWdl
LXNob3ctbW9kYWwtZGlhbG9nLWNyYXNoLmh0bWwgZm9yIGFuIGV4YW1wbGUuCi0gICAgaWYgKCFj
b3JlU3ViRnJhbWUtPnRyZWUoKS5wYXJlbnQoKSkgewotICAgICAgICBldmFzX29iamVjdF9kZWwo
c3ViRnJhbWUpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBld2tfdmlld19mcmFt
ZV9yZWN0X2NoYW5nZWQobV92aWV3KTsKLQotICAgIHJldHVybiBjb3JlU3ViRnJhbWU7Ci19Ci0K
LXZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OnJlZGlyZWN0RGF0YVRvUGx1Z2luKFdpZGdldCog
cGx1Z2luV2lkZ2V0KQotewotICAgIG1fcGx1Z2luVmlldyA9IHRvUGx1Z2luVmlldyhwbHVnaW5X
aWRnZXQpOwotICAgIGlmIChwbHVnaW5XaWRnZXQpCi0gICAgICAgIG1faGFzU2VudFJlc3BvbnNl
VG9QbHVnaW4gPSBmYWxzZTsKLX0KLQotUGFzc1JlZlB0cjxXaWRnZXQ+IEZyYW1lTG9hZGVyQ2xp
ZW50RWZsOjpjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IEludFNpemUmLCBIVE1MQXBwbGV0
RWxlbWVudCosIGNvbnN0IFVSTCYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIC8qcGFy
YW1OYW1lcyovLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgLypwYXJhbVZhbHVlcyovKQotewotICAg
IG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLU9iamVjdENvbnRlbnRUeXBl
IEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpvYmplY3RDb250ZW50VHlwZShjb25zdCBVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBzaG91bGRQcmVmZXJQbHVnSW5zRm9ySW1hZ2Vz
KQotewotICAgIC8vIEZJWE1FOiBvbmNlIHBsdWdpbiBzdXBwb3J0IGlzIGVuYWJsZWQsIHRoaXMg
bWV0aG9kIG5lZWRzIHRvIGNvcnJlY3RseSBoYW5kbGUgdGhlICdzaG91bGRQcmVmZXJQbHVnSW5z
Rm9ySW1hZ2VzJyBmbGFnLiBTZWUKLSAgICAvLyBXZWJDb3JlOjpGcmFtZUxvYWRlcjo6ZGVmYXVs
dE9iamVjdENvbnRlbnRUeXBlKCkgZm9yIGFuIGV4YW1wbGUuCi0gICAgVU5VU0VEX1BBUkFNKHNo
b3VsZFByZWZlclBsdWdJbnNGb3JJbWFnZXMpOwotCi0gICAgaWYgKHVybC5pc0VtcHR5KCkgJiYg
bWltZVR5cGUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gT2JqZWN0Q29udGVudE5vbmU7Ci0K
LSAgICAvLyBXZSBkb24ndCB1c2UgTUlNRVR5cGVSZWdpc3RyeTo6Z2V0TUlNRVR5cGVGb3JQYXRo
KCkgYmVjYXVzZSBpdCByZXR1cm5zICJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iIHVwb24gZmFp
bHVyZQotICAgIFN0cmluZyB0eXBlID0gbWltZVR5cGU7Ci0gICAgaWYgKHR5cGUuaXNFbXB0eSgp
KQotICAgICAgICB0eXBlID0gTUlNRVR5cGVSZWdpc3RyeTo6Z2V0TUlNRVR5cGVGb3JFeHRlbnNp
b24odXJsLnBhdGgoKS5zdWJzdHJpbmcodXJsLnBhdGgoKS5yZXZlcnNlRmluZCgnLicpICsgMSkp
OwotCi0gICAgaWYgKHR5cGUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gT2JqZWN0Q29udGVu
dEZyYW1lOwotCi0gICAgaWYgKE1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VNSU1F
VHlwZSh0eXBlKSkKLSAgICAgICAgcmV0dXJuIE9iamVjdENvbnRlbnRJbWFnZTsKLQotI2lmIDAg
Ly8gUGx1Z2luRGF0YWJhc2UgaXMgZGlzYWJsZWQgdW50aWwgd2UgaGF2ZSBQbHVnaW4gc3lzdGVt
IGRvbmUuCi0gICAgaWYgKFBsdWdpbkRhdGFiYXNlOjppbnN0YWxsZWRQbHVnaW5zKCktPmlzTUlN
RVR5cGVSZWdpc3RlcmVkKG1pbWVUeXBlKSkKLSAgICAgICAgcmV0dXJuIE9iamVjdENvbnRlbnRO
ZXRzY2FwZVBsdWdpbjsKLSNlbmRpZgotCi0gICAgaWYgKE1JTUVUeXBlUmVnaXN0cnk6OmlzU3Vw
cG9ydGVkTm9uSW1hZ2VNSU1FVHlwZSh0eXBlKSkKLSAgICAgICAgcmV0dXJuIE9iamVjdENvbnRl
bnRGcmFtZTsKLQotICAgIGlmICh1cmwucHJvdG9jb2woKSA9PSAiYWJvdXQiKQotICAgICAgICBy
ZXR1cm4gT2JqZWN0Q29udGVudEZyYW1lOwotCi0gICAgcmV0dXJuIE9iamVjdENvbnRlbnROb25l
OwotfQotCi1TdHJpbmcgRnJhbWVMb2FkZXJDbGllbnRFZmw6Om92ZXJyaWRlTWVkaWFUeXBlKCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChld2tfc2V0dGluZ3NfY3NzX21l
ZGlhX3R5cGVfZ2V0KCkpOwotfQotCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRj
aERpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChET01XcmFwcGVyV29ybGQmIHdvcmxkKQotewot
ICAgIGlmICgmd29ybGQgIT0gJm1haW5UaHJlYWROb3JtYWxXb3JsZCgpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBGcmFtZSogY29yZUZyYW1lID0gRVdLUHJpdmF0ZTo6Y29yZUZyYW1lKG1fZnJh
bWUpOwotICAgIEFTU0VSVChjb3JlRnJhbWUpOwotCi0gICAgaWYgKCFjb3JlRnJhbWUtPnNldHRp
bmdzKCkuaXNTY3JpcHRFbmFibGVkKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIEV3a19XaW5k
b3dfT2JqZWN0X0NsZWFyZWRfRXZlbnQgZXZlbnQ7Ci0gICAgZXZlbnQuY29udGV4dCA9IHRvR2xv
YmFsUmVmKGNvcmVGcmFtZS0+c2NyaXB0KCkuZ2xvYmFsT2JqZWN0KG1haW5UaHJlYWROb3JtYWxX
b3JsZCgpKS0+Z2xvYmFsRXhlYygpKTsKLSAgICBldmVudC53aW5kb3dPYmplY3QgPSB0b1JlZihj
b3JlRnJhbWUtPnNjcmlwdCgpLmdsb2JhbE9iamVjdChtYWluVGhyZWFkTm9ybWFsV29ybGQoKSkp
OwotICAgIGV2ZW50LmZyYW1lID0gbV9mcmFtZTsKLQotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2Nh
bGxiYWNrX2NhbGwobV92aWV3LCAid2luZG93LG9iamVjdCxjbGVhcmVkIiwgJmV2ZW50KTsKLQot
I2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQotICAgIGV3a192aWV3X2pzX3dpbmRvd19v
YmplY3RfY2xlYXIobV92aWV3LCBtX2ZyYW1lKTsKLSNlbmRpZgotfQotCi12b2lkIEZyYW1lTG9h
ZGVyQ2xpZW50RWZsOjpyZWdpc3RlckZvckljb25Ob3RpZmljYXRpb24oYm9vbCkKLXsKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpzZXRNYWlu
RnJhbWVEb2N1bWVudFJlYWR5KGJvb2wpCi17Ci0gICAgLy8gdGhpcyBpcyBvbmx5IGludGVyZXN0
aW5nIG9uY2Ugd2UgcHJvdmlkZSBhbiBleHRlcm5hbCBBUEkgZm9yIHRoZSBET00KLX0KLQotYm9v
bCBGcmFtZUxvYWRlckNsaWVudEVmbDo6aGFzV2ViVmlldygpIGNvbnN0Ci17Ci0gICAgaWYgKCFt
X3ZpZXcpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiB0cnVlOwotfQotCi1i
b29sIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpoYXNGcmFtZVZpZXcoKSBjb25zdAotewotICAgIG5v
dEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQgRnJhbWVMb2FkZXJD
bGllbnRFZmw6OmRpc3BhdGNoRGlkRmluaXNoTG9hZCgpCi17Ci0gICAgZXdrX2ZyYW1lX2xvYWRf
ZmluaXNoZWQobV9mcmFtZSwgMCwgMCwgMCwgMCwgMCk7Ci19Ci0KLXZvaWQgRnJhbWVMb2FkZXJD
bGllbnRFZmw6OmZyYW1lTG9hZENvbXBsZXRlZCgpCi17Ci0gICAgLy8gTm90ZTogQ2FuIGJlIGNh
bGxlZCBtdWx0aXBsZSB0aW1lcy4KLX0KLQotdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6c2F2
ZVZpZXdTdGF0ZVRvSXRlbShIaXN0b3J5SXRlbSogaXRlbSkKLXsKLSAgICBld2tfZnJhbWVfdmll
d19zdGF0ZV9zYXZlKG1fZnJhbWUsIGl0ZW0pOwotfQotCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50
RWZsOjpyZXN0b3JlVmlld1N0YXRlKCkKLXsKLSAgICBBU1NFUlQobV9mcmFtZSk7Ci0gICAgQVNT
RVJUKG1fdmlldyk7Ci0KLSAgICBld2tfdmlld19yZXN0b3JlX3N0YXRlKG1fdmlldywgbV9mcmFt
ZSk7Ci19Ci0KLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OnVwZGF0ZUdsb2JhbEhpc3RvcnlS
ZWRpcmVjdExpbmtzKCkKLXsKLSAgICAgICAgV2ViQ29yZTo6RnJhbWUqIGZyYW1lID0gRVdLUHJp
dmF0ZTo6Y29yZUZyYW1lKG1fZnJhbWUpOwotICAgICAgICBpZiAoIWZyYW1lKQotICAgICAgICAg
ICAgcmV0dXJuOwotCi0gICAgICAgIFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiBsb2FkZXIgPSBm
cmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKTsKLSAgICAgICAgaWYgKCFsb2FkZXIpCi0g
ICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgaWYgKCFsb2FkZXItPmNsaWVudFJlZGlyZWN0
U291cmNlRm9ySGlzdG9yeSgpLmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICBjb25zdCBDU3RyaW5n
JiBzb3VyY2VVUkwgPSBsb2FkZXItPmNsaWVudFJlZGlyZWN0U291cmNlRm9ySGlzdG9yeSgpLnV0
ZjgoKTsKLSAgICAgICAgICAgIGNvbnN0IENTdHJpbmcmIGRlc3RpbmF0aW9uVVJMID0gbG9hZGVy
LT5jbGllbnRSZWRpcmVjdERlc3RpbmF0aW9uRm9ySGlzdG9yeSgpLnV0ZjgoKTsKLSAgICAgICAg
ICAgIEV3a19WaWV3X1JlZGlyZWN0aW9uX0RhdGEgZGF0YSA9IHsgc291cmNlVVJMLmRhdGEoKSwg
ZGVzdGluYXRpb25VUkwuZGF0YSgpIH07Ci0gICAgICAgICAgICBldmFzX29iamVjdF9zbWFydF9j
YWxsYmFja19jYWxsKG1fdmlldywgInBlcmZvcm0sY2xpZW50LHJlZGlyZWN0IiwgJmRhdGEpOwot
ICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCFsb2FkZXItPnNlcnZlclJlZGlyZWN0U291cmNlRm9y
SGlzdG9yeSgpLmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICBjb25zdCBDU3RyaW5nJiBzb3VyY2VV
UkwgPSBsb2FkZXItPnNlcnZlclJlZGlyZWN0U291cmNlRm9ySGlzdG9yeSgpLnV0ZjgoKTsKLSAg
ICAgICAgICAgIGNvbnN0IENTdHJpbmcmIGRlc3RpbmF0aW9uVVJMID0gbG9hZGVyLT5zZXJ2ZXJS
ZWRpcmVjdERlc3RpbmF0aW9uRm9ySGlzdG9yeSgpLnV0ZjgoKTsKLSAgICAgICAgICAgIEV3a19W
aWV3X1JlZGlyZWN0aW9uX0RhdGEgZGF0YSA9IHsgc291cmNlVVJMLmRhdGEoKSwgZGVzdGluYXRp
b25VUkwuZGF0YSgpIH07Ci0gICAgICAgICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19j
YWxsKG1fdmlldywgInBlcmZvcm0sc2VydmVyLHJlZGlyZWN0IiwgJmRhdGEpOwotICAgICAgICB9
Ci19Ci0KLWJvb2wgRnJhbWVMb2FkZXJDbGllbnRFZmw6OnNob3VsZEdvVG9IaXN0b3J5SXRlbShI
aXN0b3J5SXRlbSogaXRlbSkgY29uc3QKLXsKLSAgICAvLyBGSVhNRTogVGhpcyBpcyBhIHZlcnkg
c2ltcGxlIGltcGxlbWVudGF0aW9uLiBNb3JlIHNvcGhpc3RpY2F0ZWQKLSAgICAvLyBpbXBsZW1l
bnRhdGlvbiB3b3VsZCBkZWxlZ2F0ZSB0aGUgZGVjaXNpb24gdG8gYSBQb2xpY3lEZWxlZ2F0ZS4K
LSAgICAvLyBTZWUgbWFjIGltcGxlbWVudGF0aW9uIGZvciBleGFtcGxlLgotICAgIHJldHVybiBp
dGVtOwotfQotCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaWREaXNwbGF5SW5zZWN1cmVD
b250ZW50KCkKLXsKLSAgICBld2tfZnJhbWVfbWl4ZWRfY29udGVudF9kaXNwbGF5ZWRfc2V0KG1f
ZnJhbWUsIHRydWUpOwotfQotCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaWRSdW5JbnNl
Y3VyZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBVUkwmKQotewotICAgIGV3a19mcmFt
ZV9taXhlZF9jb250ZW50X3J1bl9zZXQobV9mcmFtZSwgdHJ1ZSk7Ci19Ci0KLXZvaWQgRnJhbWVM
b2FkZXJDbGllbnRFZmw6OmRpZERldGVjdFhTUyhjb25zdCBVUkwmIGluc2VjdXJlVVJMLCBib29s
IGRpZEJsb2NrRW50aXJlUGFnZSkKLXsKLSAgICBDU3RyaW5nIGNzID0gaW5zZWN1cmVVUkwuc3Ry
aW5nKCkudXRmOCgpOwotICAgIEV3a19GcmFtZV9Yc3NfTm90aWZpY2F0aW9uIHhzc0luZm8gPSB7
IGNzLmRhdGEoKSwgZGlkQmxvY2tFbnRpcmVQYWdlIH07Ci0KLSAgICBld2tfZnJhbWVfeHNzX2Rl
dGVjdGVkKG1fZnJhbWUsICZ4c3NJbmZvKTsKLX0KLQotdm9pZCBGcmFtZUxvYWRlckNsaWVudEVm
bDo6Zm9yY2VMYXlvdXQoKQotewotICAgIGV3a19mcmFtZV9mb3JjZV9sYXlvdXQobV9mcmFtZSk7
Ci19Ci0KLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmZvcmNlTGF5b3V0Rm9yTm9uSFRNTCgp
Ci17Ci19Ci0KLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OnNldENvcGllc09uU2Nyb2xsKCkK
LXsKLSAgICAvLyBhcHBhcmVudGx5IG1hYyBzcGVjaWZpYyAoUXQgY29tbWVudCkKLX0KLQotdm9p
ZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGV0YWNoZWRGcm9tUGFyZW50MigpCi17Ci19Ci0KLXZv
aWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRldGFjaGVkRnJvbVBhcmVudDMoKQotewotfQotCi12
b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpsb2FkZWRGcm9tQ2FjaGVkUGFnZSgpCi17Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0
Y2hEaWRIYW5kbGVPbmxvYWRFdmVudHMoKQotewotICAgIGV3a192aWV3X29ubG9hZF9ldmVudCht
X3ZpZXcsIG1fZnJhbWUpOwotfQotCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRj
aERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZCgpCi17Ci0gICAgZXdr
X2ZyYW1lX3JlZGlyZWN0X3Byb3Zpc2lvbmFsX2xvYWQobV9mcmFtZSk7Ci19Ci0KLXZvaWQgRnJh
bWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3QoKQotewot
ICAgIGV3a19mcmFtZV9yZWRpcmVjdF9jYW5jZWxsZWQobV9mcmFtZSk7Ci19Ci0KLXZvaWQgRnJh
bWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoV2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdChjb25z
dCBVUkwmIHVybCwgZG91YmxlLCBkb3VibGUpCi17Ci0gICAgZXdrX2ZyYW1lX3JlZGlyZWN0X3Jl
cXVlc3RlZChtX2ZyYW1lLCB1cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci19Ci0KLXZvaWQg
RnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5QYWdl
KCkKLXsKLSAgICBld2tfZnJhbWVfdXJpX2NoYW5nZWQobV9mcmFtZSk7Ci0KLSAgICBpZiAoIWlz
TG9hZGluZ01haW5GcmFtZSgpKQotICAgICAgICByZXR1cm47Ci0gICAgZXdrX3ZpZXdfdXJpX2No
YW5nZWQobV92aWV3KTsKLX0KLQotdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hX
aWxsQ2xvc2UoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgRnJhbWVMb2Fk
ZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKQotewotICAgIC8vIEljb25Db250
cm9sbGVyIGxvYWRzIGljb25zIG9ubHkgZm9yIHRoZSBtYWluIGZyYW1lLgotICAgIEFTU0VSVChp
c0xvYWRpbmdNYWluRnJhbWUoKSk7Ci0KLSAgICBld2tfdmlld19mcmFtZV9tYWluX2ljb25fcmVj
ZWl2ZWQobV92aWV3KTsKLX0KLQotdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hE
aWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpCi17Ci0gICAgZXdrX2ZyYW1lX2xvYWRfcHJvdmlzaW9u
YWwobV9mcmFtZSk7Ci0gICAgaWYgKGlzTG9hZGluZ01haW5GcmFtZSgpKQotICAgICAgICBld2tf
dmlld19sb2FkX3Byb3Zpc2lvbmFsKG1fdmlldyk7Ci19Ci0KLXZvaWQgRnJhbWVMb2FkZXJDbGll
bnRFZmw6OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24m
IHRpdGxlKQotewotICAgIEV3a19UZXh0X1dpdGhfRGlyZWN0aW9uIGV3a1RpdGxlOwotICAgIENT
dHJpbmcgY3MgPSB0aXRsZS5zdHJpbmcoKS51dGY4KCk7Ci0gICAgZXdrVGl0bGUuc3RyaW5nID0g
Y3MuZGF0YSgpOwotICAgIGV3a1RpdGxlLmRpcmVjdGlvbiA9ICh0aXRsZS5kaXJlY3Rpb24oKSA9
PSBMVFIpID8gRVdLX1RFWFRfRElSRUNUSU9OX0xFRlRfVE9fUklHSFQgOiBFV0tfVEVYVF9ESVJF
Q1RJT05fUklHSFRfVE9fTEVGVDsKLSAgICBld2tfZnJhbWVfdGl0bGVfc2V0KG1fZnJhbWUsICZl
d2tUaXRsZSk7Ci0KLSAgICBpZiAoIWlzTG9hZGluZ01haW5GcmFtZSgpKQotICAgICAgICByZXR1
cm47Ci0gICAgZXdrX3ZpZXdfdGl0bGVfc2V0KG1fdmlldywgJmV3a1RpdGxlKTsKLX0KLQotdm9p
ZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyhXZWJDb3JlOjpJ
Y29uVHlwZSBpY29uVHlwZSkKLXsKLSAgICAvLyBPdGhlciB0b3VjaCB0eXBlcyBhcmUgYXBwbGUt
c3BlY2lmaWMKLSAgICBBU1NFUlRfVU5VU0VEKGljb25UeXBlLCBpY29uVHlwZSA9PSBXZWJDb3Jl
OjpGYXZpY29uKTsKLSAgICBld2tfZnJhbWVfaWNvbl9jaGFuZ2VkKG1fZnJhbWUpOwotfQotCi12
b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZENvbW1pdExvYWQoKQotewotICAg
IGV3a19mcmFtZV91cmlfY2hhbmdlZChtX2ZyYW1lKTsKLSAgICBld2tfZnJhbWVfbG9hZF9jb21t
aXR0ZWQobV9mcmFtZSk7Ci0gICAgaWYgKCFpc0xvYWRpbmdNYWluRnJhbWUoKSkKLSAgICAgICAg
cmV0dXJuOwotICAgIGV3a192aWV3X3RpdGxlX3NldChtX3ZpZXcsIDApOwotICAgIGV3a192aWV3
X3VyaV9jaGFuZ2VkKG1fdmlldyk7Ci19Ci0KLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRp
c3BhdGNoRGlkRmluaXNoRG9jdW1lbnRMb2FkKCkKLXsKLSAgICBld2tfZnJhbWVfbG9hZF9kb2N1
bWVudF9maW5pc2hlZChtX2ZyYW1lKTsKLX0KLQotdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6
ZGlzcGF0Y2hEaWRMYXlvdXQoTGF5b3V0TWlsZXN0b25lcyBtaWxlc3RvbmVzKQotewotICAgIGlm
IChtaWxlc3RvbmVzICYgRGlkRmlyc3RMYXlvdXQpCi0gICAgICAgIGV3a19mcmFtZV9sb2FkX2Zp
cnN0bGF5b3V0X2ZpbmlzaGVkKG1fZnJhbWUpOwotICAgIGlmIChtaWxlc3RvbmVzICYgRGlkRmly
c3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KQotICAgICAgICBld2tfZnJhbWVfbG9hZF9maXJzdGxh
eW91dF9ub25lbXB0eV9maW5pc2hlZChtX2ZyYW1lKTsKLX0KLQotdm9pZCBGcmFtZUxvYWRlckNs
aWVudEVmbDo6ZGlzcGF0Y2hTaG93KCkKLXsKLSAgICBld2tfdmlld19sb2FkX3Nob3cobV92aWV3
KTsKLX0KLQotdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6Y2FuY2VsUG9saWN5Q2hlY2soKQot
ewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6
OndpbGxDaGFuZ2VUaXRsZShEb2N1bWVudExvYWRlciopCi17Ci0gICAgLy8gbm8gbmVlZCBmb3Is
IGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlIGlzIHRoZSByaWdodCBjYWxsYmFjawotfQotCi12b2lk
IEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaWRDaGFuZ2VUaXRsZShEb2N1bWVudExvYWRlciopCi17
Ci0gICAgLy8gbm8gbmVlZCBmb3IsIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlIGlzIHRoZSByaWdo
dCBjYWxsYmFjawotfQotCi1ib29sIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpjYW5IYW5kbGVSZXF1
ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIGNvbnN0Ci17Ci0gICAgbm90SW1wbGVtZW50ZWQo
KTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBGcmFtZUxvYWRlckNsaWVudEVmbDo6Y2Fu
U2hvd01JTUVUeXBlQXNIVE1MKGNvbnN0IFN0cmluZyYgLypNSU1FVHlwZSovKSBjb25zdAotewot
ICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1ib29sIEZyYW1l
TG9hZGVyQ2xpZW50RWZsOjpjYW5TaG93TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBNSU1FVHlwZSkg
Y29uc3QKLXsKLSAgICBpZiAoTUlNRVR5cGVSZWdpc3RyeTo6Y2FuU2hvd01JTUVUeXBlKE1JTUVU
eXBlKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSNpZiAwIC8vIFBsdWdpbkRhdGFiYXNlIGlz
IGRpc2FibGVkIHVudGlsIHdlIGhhdmUgUGx1Z2luIHN5c3RlbSBkb25lLgotICAgIGlmIChQbHVn
aW5EYXRhYmFzZTo6aW5zdGFsbGVkUGx1Z2lucygpLT5pc01JTUVUeXBlUmVnaXN0ZXJlZChNSU1F
VHlwZSkpCi0gICAgICAgIHJldHVybiB0cnVlOwotI2VuZGlmCi0KLSAgICByZXR1cm4gZmFsc2U7
Ci19Ci0KLWJvb2wgRnJhbWVMb2FkZXJDbGllbnRFZmw6OnJlcHJlc2VudGF0aW9uRXhpc3RzRm9y
VVJMU2NoZW1lKGNvbnN0IFN0cmluZyYpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGZhbHNlOwotfQot
Ci1TdHJpbmcgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmdlbmVyYXRlZE1JTUVUeXBlRm9yVVJMU2No
ZW1lKGNvbnN0IFN0cmluZyYpIGNvbnN0Ci17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICBy
ZXR1cm4gU3RyaW5nKCk7Ci19Ci0KLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmZpbmlzaGVk
TG9hZGluZyhEb2N1bWVudExvYWRlciopCi17Ci0gICAgaWYgKCFtX3BsdWdpblZpZXcpCi0gICAg
ICAgIHJldHVybjsKLSAgICBtX3BsdWdpblZpZXctPmRpZEZpbmlzaExvYWRpbmcoKTsKLSAgICBt
X3BsdWdpblZpZXcgPSAwOwotICAgIG1faGFzU2VudFJlc3BvbnNlVG9QbHVnaW4gPSBmYWxzZTsK
LX0KLQotCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpwcm92aXNpb25hbExvYWRTdGFydGVk
KCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50
RWZsOjpkaWRGaW5pc2hMb2FkKCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lk
IEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpwcmVwYXJlRm9yRGF0YVNvdXJjZVJlcGxhY2VtZW50KCkK
LXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZs
OjpzZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiwgY29uc3QgVVJMJikKLXsKLSAg
ICAvLyBubyBuZWVkIGZvciwgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUgaXMgdGhlIHJpZ2h0IGNh
bGxiYWNrCi19Ci0KLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkUmVjZWl2
ZUNvbnRlbnRMZW5ndGgoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIC8qaWRlbnRpZmll
ciovLCBpbnQgLypkYXRhTGVuZ3RoKi8pCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQot
dm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRGaW5pc2hMb2FkaW5nKERvY3Vt
ZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKQotewotICAgIGV3a19mcmFtZV9s
b2FkX3Jlc291cmNlX2ZpbmlzaGVkKG1fZnJhbWUsIGlkZW50aWZpZXIpOwotICAgIGV2YXNfb2Jq
ZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3LCAibG9hZCxyZXNvdXJjZSxmaW5pc2hlZCIs
ICZpZGVudGlmaWVyKTsKLX0KLQotdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hE
aWRGYWlsTG9hZGluZyhEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
Y29uc3QgUmVzb3VyY2VFcnJvciYgZXJyKQotewotICAgIEV3a19GcmFtZV9Mb2FkX0Vycm9yIGVy
cm9yOwotICAgIENTdHJpbmcgZXJyb3JEb21haW4gPSBlcnIuZG9tYWluKCkudXRmOCgpOwotICAg
IENTdHJpbmcgZXJyb3JEZXNjcmlwdGlvbiA9IGVyci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpLnV0
ZjgoKTsKLSAgICBDU3RyaW5nIGZhaWxpbmdVcmwgPSBlcnIuZmFpbGluZ1VSTCgpLnV0ZjgoKTsK
LQotICAgIERCRygiZXdrRnJhbWU9JXAsIHJlc291cmNlPSVsZCwgZXJyb3I9JXMgKCVkLCBjYW5j
ZWxsYXRpb249JWhodSkgXCIlc1wiLCB1cmw9JXMiLAotICAgICAgICBtX2ZyYW1lLCBpZGVudGlm
aWVyLCBlcnJvckRvbWFpbi5kYXRhKCksIGVyci5lcnJvckNvZGUoKSwgZXJyLmlzQ2FuY2VsbGF0
aW9uKCksCi0gICAgICAgIGVycm9yRGVzY3JpcHRpb24uZGF0YSgpLCBmYWlsaW5nVXJsLmRhdGEo
KSk7Ci0KLSAgICBlcnJvci5jb2RlID0gZXJyLmVycm9yQ29kZSgpOwotICAgIGVycm9yLmlzX2Nh
bmNlbGxhdGlvbiA9IGVyci5pc0NhbmNlbGxhdGlvbigpOwotICAgIGVycm9yLmRvbWFpbiA9IGVy
cm9yRG9tYWluLmRhdGEoKTsKLSAgICBlcnJvci5kZXNjcmlwdGlvbiA9IGVycm9yRGVzY3JpcHRp
b24uZGF0YSgpOwotICAgIGVycm9yLmZhaWxpbmdfdXJsID0gZmFpbGluZ1VybC5kYXRhKCk7Ci0g
ICAgZXJyb3IucmVzb3VyY2VfaWRlbnRpZmllciA9IGlkZW50aWZpZXI7Ci0gICAgZXJyb3IuZnJh
bWUgPSBtX2ZyYW1lOwotCi0gICAgZXdrX2ZyYW1lX2xvYWRfcmVzb3VyY2VfZmFpbGVkKG1fZnJh
bWUsICZlcnJvcik7Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChtX3ZpZXcs
ICJsb2FkLHJlc291cmNlLGZhaWxlZCIsICZlcnJvcik7Ci19Ci0KLWJvb2wgRnJhbWVMb2FkZXJD
bGllbnRFZmw6OmRpc3BhdGNoRGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKERvY3VtZW50
TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYs
IGludCAvKmxlbmd0aCovKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIGZh
bHNlOwotfQotCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZExvYWRSZXNv
dXJjZUJ5WE1MSHR0cFJlcXVlc3QodW5zaWduZWQgbG9uZywgY29uc3QgU3RyaW5nJikKLXsKLSAg
ICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNw
YXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyKQotewot
ICAgIEV3a19GcmFtZV9Mb2FkX0Vycm9yIGVycm9yOwotICAgIENTdHJpbmcgZXJyb3JEb21haW4g
PSBlcnIuZG9tYWluKCkudXRmOCgpOwotICAgIENTdHJpbmcgZXJyb3JEZXNjcmlwdGlvbiA9IGVy
ci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpLnV0ZjgoKTsKLSAgICBDU3RyaW5nIGZhaWxpbmdVcmwg
PSBlcnIuZmFpbGluZ1VSTCgpLnV0ZjgoKTsKLQotICAgIERCRygiZXdrRnJhbWU9JXAsIGVycm9y
PSVzICglZCwgY2FuY2VsbGF0aW9uPSVoaHUpIFwiJXNcIiwgdXJsPSVzIiwKLSAgICAgICAgbV9m
cmFtZSwgZXJyb3JEb21haW4uZGF0YSgpLCBlcnIuZXJyb3JDb2RlKCksIGVyci5pc0NhbmNlbGxh
dGlvbigpLAotICAgICAgICBlcnJvckRlc2NyaXB0aW9uLmRhdGEoKSwgZmFpbGluZ1VybC5kYXRh
KCkpOwotCi0gICAgZXJyb3IuY29kZSA9IGVyci5lcnJvckNvZGUoKTsKLSAgICBlcnJvci5pc19j
YW5jZWxsYXRpb24gPSBlcnIuaXNDYW5jZWxsYXRpb24oKTsKLSAgICBlcnJvci5kb21haW4gPSBl
cnJvckRvbWFpbi5kYXRhKCk7Ci0gICAgZXJyb3IuZGVzY3JpcHRpb24gPSBlcnJvckRlc2NyaXB0
aW9uLmRhdGEoKTsKLSAgICBlcnJvci5mYWlsaW5nX3VybCA9IGZhaWxpbmdVcmwuZGF0YSgpOwot
ICAgIGVycm9yLnJlc291cmNlX2lkZW50aWZpZXIgPSAwOwotICAgIGVycm9yLmZyYW1lID0gbV9m
cmFtZTsKLQotICAgIGV3a19mcmFtZV9sb2FkX3Byb3Zpc2lvbmFsX2ZhaWxlZChtX2ZyYW1lLCAm
ZXJyb3IpOwotICAgIGlmIChpc0xvYWRpbmdNYWluRnJhbWUoKSkKLSAgICAgICAgZXdrX3ZpZXdf
bG9hZF9wcm92aXNpb25hbF9mYWlsZWQobV92aWV3LCAmZXJyb3IpOwotCi0gICAgZGlzcGF0Y2hE
aWRGYWlsTG9hZChlcnIpOwotfQotCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRj
aERpZEZhaWxMb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycikKLXsKLSAgICBld2tfZnJhbWVf
bG9hZF9lcnJvcihtX2ZyYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgIGVyci5kb21haW4o
KS51dGY4KCkuZGF0YSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgIGVyci5lcnJvckNvZGUo
KSwgZXJyLmlzQ2FuY2VsbGF0aW9uKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgZXJyLmxv
Y2FsaXplZERlc2NyaXB0aW9uKCkudXRmOCgpLmRhdGEoKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICBlcnIuZmFpbGluZ1VSTCgpLnV0ZjgoKS5kYXRhKCkpOwotCi0gICAgZXdrX2ZyYW1lX2xv
YWRfZmluaXNoZWQobV9mcmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnIuZG9t
YWluKCkudXRmOCgpLmRhdGEoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnIuZXJy
b3JDb2RlKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyLmlzQ2FuY2VsbGF0aW9u
KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyLmxvY2FsaXplZERlc2NyaXB0aW9u
KCkudXRmOCgpLmRhdGEoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnIuZmFpbGlu
Z1VSTCgpLnV0ZjgoKS5kYXRhKCkpOwotfQotCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpj
b252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQoRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKQotewotICAg
IGlmICghbV92aWV3KQotICAgICAgICByZXR1cm47Ci0KLSAgICBDU3RyaW5nIHVybCA9IHJlcXVl
c3QudXJsKCkuc3RyaW5nKCkudXRmOCgpOwotICAgIEV3a19Eb3dubG9hZCBkb3dubG9hZDsKLQot
ICAgIGRvd25sb2FkLnVybCA9IHVybC5kYXRhKCk7Ci0gICAgZG93bmxvYWQuc3VnZ2VzdGVkX25h
bWUgPSAwOwotICAgIGV3a192aWV3X2Rvd25sb2FkX3JlcXVlc3QobV92aWV3LCAmZG93bmxvYWQp
OwotfQotCi1SZXNvdXJjZUVycm9yIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpjYW5jZWxsZWRFcnJv
cihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCi17Ci0gICAgcmV0dXJuIFdlYkNvcmU6
OmNhbmNlbGxlZEVycm9yKHJlcXVlc3QpOwotfQotCi1SZXNvdXJjZUVycm9yIEZyYW1lTG9hZGVy
Q2xpZW50RWZsOjpibG9ja2VkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQot
ewotICAgIHJldHVybiBXZWJDb3JlOjpibG9ja2VkRXJyb3IocmVxdWVzdCk7Ci19Ci0KLVJlc291
cmNlRXJyb3IgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmNhbm5vdFNob3dVUkxFcnJvcihjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCi17Ci0gICAgcmV0dXJuIFdlYkNvcmU6OmNhbm5vdFNo
b3dVUkxFcnJvcihyZXF1ZXN0KTsKLX0KLQotUmVzb3VyY2VFcnJvciBGcmFtZUxvYWRlckNsaWVu
dEVmbDo6aW50ZXJydXB0ZWRGb3JQb2xpY3lDaGFuZ2VFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QpCi17Ci0gICAgcmV0dXJuIFdlYkNvcmU6OmludGVycnVwdGVkRm9yUG9saWN5
Q2hhbmdlRXJyb3IocmVxdWVzdCk7Ci19Ci0KLVJlc291cmNlRXJyb3IgRnJhbWVMb2FkZXJDbGll
bnRFZmw6OmNhbm5vdFNob3dNSU1FVHlwZUVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlKQotewotICAgIHJldHVybiBXZWJDb3JlOjpjYW5ub3RTaG93TUlNRVR5cGVFcnJvcihy
ZXNwb25zZSk7Ci19Ci0KLVJlc291cmNlRXJyb3IgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmZpbGVE
b2VzTm90RXhpc3RFcnJvcihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKLXsKLSAg
ICByZXR1cm4gV2ViQ29yZTo6ZmlsZURvZXNOb3RFeGlzdEVycm9yKHJlc3BvbnNlKTsKLX0KLQot
UmVzb3VyY2VFcnJvciBGcmFtZUxvYWRlckNsaWVudEVmbDo6cGx1Z2luV2lsbEhhbmRsZUxvYWRF
cnJvcihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKLXsKLSAgICByZXR1cm4gV2Vi
Q29yZTo6cGx1Z2luV2lsbEhhbmRsZUxvYWRFcnJvcihyZXNwb25zZSk7Ci19Ci0KLWJvb2wgRnJh
bWVMb2FkZXJDbGllbnRFZmw6OnNob3VsZEZhbGxCYWNrKGNvbnN0IFJlc291cmNlRXJyb3ImIGVy
cm9yKQotewotICAgIHJldHVybiAhKGVycm9yLmlzQ2FuY2VsbGF0aW9uKCkgfHwgZXJyb3IuZXJy
b3JDb2RlKCkgPT0gUG9saWN5RXJyb3JGcmFtZUxvYWRJbnRlcnJ1cHRlZEJ5UG9saWN5Q2hhbmdl
IHx8IGVycm9yLmVycm9yQ29kZSgpID09IFBsdWdpbkVycm9yV2lsbEhhbmRsZUxvYWQpOwotfQot
Ci1ib29sIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpjYW5DYWNoZVBhZ2UoKSBjb25zdAotewotICAg
IHJldHVybiB0cnVlOwotfQotCi1GcmFtZSogRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNo
Q3JlYXRlUGFnZShjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJikKLXsKLSAgICBpZiAoIW1fdmlldykK
LSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBFdmFzX09iamVjdCogbmV3VmlldyA9IGV3a192aWV3
X3dpbmRvd19jcmVhdGUobV92aWV3LCBFSU5BX0ZBTFNFLCAwKTsKLSAgICBFdmFzX09iamVjdCog
bWFpbkZyYW1lOwotICAgIGlmICghbmV3VmlldykKLSAgICAgICAgbWFpbkZyYW1lID0gbV9mcmFt
ZTsKLSAgICBlbHNlCi0gICAgICAgIG1haW5GcmFtZSA9IGV3a192aWV3X2ZyYW1lX21haW5fZ2V0
KG5ld1ZpZXcpOwotCi0gICAgcmV0dXJuIEVXS1ByaXZhdGU6OmNvcmVGcmFtZShtYWluRnJhbWUp
OwotfQotCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaFVuYWJsZVRvSW1wbGVt
ZW50UG9saWN5KGNvbnN0IFJlc291cmNlRXJyb3ImKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7
Ci19Ci0KLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OnNldE1haW5Eb2N1bWVudEVycm9yKERv
Y3VtZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCi17Ci0gICAgaWYgKCFt
X3BsdWdpblZpZXcpCi0gICAgICAgIHJldHVybjsKLSAgICBtX3BsdWdpblZpZXctPmRpZEZhaWwo
ZXJyb3IpOwotICAgIG1fcGx1Z2luVmlldyA9IDA7Ci0gICAgbV9oYXNTZW50UmVzcG9uc2VUb1Bs
dWdpbiA9IGZhbHNlOwotfQotCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpzdGFydERvd25s
b2FkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBzdWdnZXN0
ZWROYW1lKQotewotICAgIGlmICghbV92aWV3KQotICAgICAgICByZXR1cm47Ci0KLSAgICBDU3Ry
aW5nIHVybCA9IHJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpOwotICAgIENTdHJpbmcgc3Vn
Z2VzdGVkTmFtZVN0cmluZyA9IHN1Z2dlc3RlZE5hbWUudXRmOCgpOwotICAgIEV3a19Eb3dubG9h
ZCBkb3dubG9hZDsKLQotICAgIGRvd25sb2FkLnVybCA9IHVybC5kYXRhKCk7Ci0gICAgZG93bmxv
YWQuc3VnZ2VzdGVkX25hbWUgPSBzdWdnZXN0ZWROYW1lU3RyaW5nLmRhdGEoKTsKLSAgICBld2tf
dmlld19kb3dubG9hZF9yZXF1ZXN0KG1fdmlldywgJmRvd25sb2FkKTsKLX0KLQotdm9pZCBGcmFt
ZUxvYWRlckNsaWVudEVmbDo6dXBkYXRlR2xvYmFsSGlzdG9yeSgpCi17Ci0gICAgV2ViQ29yZTo6
RnJhbWUqIGZyYW1lID0gRVdLUHJpdmF0ZTo6Y29yZUZyYW1lKG1fZnJhbWUpOwotICAgIGlmICgh
ZnJhbWUpCi0gICAgICAgIHJldHVybjsKLQotICAgIFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiBs
b2FkZXIgPSBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKTsKLSAgICBpZiAoIWxvYWRl
cikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgY29uc3QgRnJhbWVMb2FkZXIqIGZyYW1lTG9hZGVy
ID0gbG9hZGVyLT5mcmFtZUxvYWRlcigpOwotICAgIGNvbnN0IGJvb2wgaXNNYWluRnJhbWVSZXF1
ZXN0ID0gZnJhbWVMb2FkZXIgJiYgKGxvYWRlciA9PSBmcmFtZUxvYWRlci0+cHJvdmlzaW9uYWxE
b2N1bWVudExvYWRlcigpKSAmJiBmcmFtZUxvYWRlci0+ZnJhbWUoKS5pc01haW5GcmFtZSgpOwot
ICAgIGNvbnN0IENTdHJpbmcmIHVybEZvckhpc3RvcnkgPSBsb2FkZXItPnVybEZvckhpc3Rvcnko
KS5zdHJpbmcoKS51dGY4KCk7Ci0gICAgY29uc3QgQ1N0cmluZyYgdGl0bGUgPSBsb2FkZXItPnRp
dGxlKCkuc3RyaW5nKCkudXRmOCgpOwotICAgIGNvbnN0IENTdHJpbmcmIGZpcnN0UGFydHkgPSBs
b2FkZXItPnJlcXVlc3QoKS5maXJzdFBhcnR5Rm9yQ29va2llcygpLnN0cmluZygpLnV0ZjgoKTsK
LSAgICBjb25zdCBDU3RyaW5nJiBjbGllbnRSZWRpcmVjdFNvdXJjZSA9IGxvYWRlci0+Y2xpZW50
UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5KCkudXRmOCgpOwotICAgIGNvbnN0IENTdHJpbmcmIG9y
aWdpbmFsVVJMID0gbG9hZGVyLT5vcmlnaW5hbFVSTCgpLnN0cmluZygpLnV0ZjgoKTsKLSAgICBj
b25zdCBDU3RyaW5nJiBodHRwTWV0aG9kID0gbG9hZGVyLT5yZXF1ZXN0KCkuaHR0cE1ldGhvZCgp
LnV0ZjgoKTsKLSAgICBjb25zdCBDU3RyaW5nJiByZXNwb25zZVVSTCA9IGxvYWRlci0+cmVzcG9u
c2VVUkwoKS5zdHJpbmcoKS51dGY4KCk7Ci0gICAgY29uc3QgQ1N0cmluZyYgbWltZVR5cGUgPSBs
b2FkZXItPnJlc3BvbnNlKCkubWltZVR5cGUoKS51dGY4KCk7Ci0KLSAgICBFd2tfRnJhbWVfUmVz
b3VyY2VfUmVxdWVzdCByZXF1ZXN0ID0geyBvcmlnaW5hbFVSTC5kYXRhKCksIGZpcnN0UGFydHku
ZGF0YSgpLCBodHRwTWV0aG9kLmRhdGEoKSwgMCwgbV9mcmFtZSwgaXNNYWluRnJhbWVSZXF1ZXN0
IH07Ci0gICAgRXdrX0ZyYW1lX1Jlc291cmNlX1Jlc3BvbnNlIHJlc3BvbnNlID0geyByZXNwb25z
ZVVSTC5kYXRhKCksIGxvYWRlci0+cmVzcG9uc2UoKS5odHRwU3RhdHVzQ29kZSgpLCAwLCBtaW1l
VHlwZS5kYXRhKCkgfTsKLSAgICBib29sIGhhc1N1YnN0aXR1dGVEYXRhID0gbG9hZGVyLT5zdWJz
dGl0dXRlRGF0YSgpLmlzVmFsaWQoKTsKLQotICAgIEV3a19WaWV3X05hdmlnYXRpb25fRGF0YSBk
YXRhID0geyB1cmxGb3JIaXN0b3J5LmRhdGEoKSwgdGl0bGUuZGF0YSgpLCAmcmVxdWVzdCwgJnJl
c3BvbnNlLCBoYXNTdWJzdGl0dXRlRGF0YSwgY2xpZW50UmVkaXJlY3RTb3VyY2UuZGF0YSgpIH07
Ci0KLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG1fdmlldywgIm5hdmlnYXRl
LHdpdGgsZGF0YSIsICZkYXRhKTsKLX0KLQotdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6c2F2
ZVBsYXRmb3JtRGF0YVRvQ2FjaGVkRnJhbWUoQ2FjaGVkRnJhbWUqKQotewotICAgIG5vdEltcGxl
bWVudGVkKCk7Ci19Ci0KLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OnRyYW5zaXRpb25Ub0Nv
bW1pdHRlZEZyb21DYWNoZWRGcmFtZShDYWNoZWRGcmFtZSopCi17Ci19Ci0KLXZvaWQgRnJhbWVM
b2FkZXJDbGllbnRFZmw6OnRyYW5zaXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2UoKQotewotICAg
IEFTU0VSVChtX2ZyYW1lKTsKLSAgICBBU1NFUlQobV92aWV3KTsKLQotICAgIGV3a19mcmFtZV92
aWV3X2NyZWF0ZV9mb3JfdmlldyhtX2ZyYW1lLCBtX3ZpZXcpOwotfQotCi12b2lkIEZyYW1lTG9h
ZGVyQ2xpZW50RWZsOjpkaWRTYXZlVG9QYWdlQ2FjaGUoKQotewotfQotCi12b2lkIEZyYW1lTG9h
ZGVyQ2xpZW50RWZsOjpkaWRSZXN0b3JlRnJvbVBhZ2VDYWNoZSgpCi17Ci19Ci0KLXZvaWQgRnJh
bWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkQmVjb21lRnJhbWVzZXQoYm9vbCkKLXsKLX0K
LQotUGFzc1JlZlB0cjxGcmFtZU5ldHdvcmtpbmdDb250ZXh0PiBGcmFtZUxvYWRlckNsaWVudEVm
bDo6Y3JlYXRlTmV0d29ya2luZ0NvbnRleHQoKQotewotICAgIHJldHVybiBGcmFtZU5ldHdvcmtp
bmdDb250ZXh0RWZsOjpjcmVhdGUoRVdLUHJpdmF0ZTo6Y29yZUZyYW1lKG1fZnJhbWUpLCBtX2Zy
YW1lKTsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGY4Y2ZiMzguLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRFZmwuaAorKysgL2Rldi9udWxsCkBAIC0xLDIxOCArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDA2IFphY2sgUnVzaW4gPHphY2tAa2RlLm9yZz4KLSAqIENv
cHlyaWdodCAoQykgMjAwNiwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGFib3JhIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqIENvcHlyaWdodCAoQykgMjAwOCBJTmRUIC0gSW5zdGl0dXRvIE5va2lhIGRlIFRlY25vbG9n
aWEKLSAqIENvcHlyaWdodCAoQykgMjAwOS0yMDEwIFByb0ZVU0lPTiBlbWJlZGRlZCBzeXN0ZW1z
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBTYW1zdW5nIEVsZWN0cm9uaWNzCi0gKgotICog
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2lmbmRlZiBGcmFtZUxvYWRlckNsaWVudEVmbF9oCi0jZGVmaW5lIEZyYW1lTG9h
ZGVyQ2xpZW50RWZsX2gKLQotI2luY2x1ZGUgIkVXZWJLaXQuaCIKLSNpbmNsdWRlICJGcmFtZUxv
YWRlckNsaWVudC5oIgotI2luY2x1ZGUgIlBsdWdpblZpZXcuaCIKLSNpbmNsdWRlICJSZXNvdXJj
ZUVycm9yLmgiCi0jaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLWNsYXNzIEZvcm1TdGF0ZTsKLQotY2xhc3MgRnJhbWVMb2FkZXJDbGllbnRFZmwg
OiBwdWJsaWMgRnJhbWVMb2FkZXJDbGllbnQgewotIHB1YmxpYzoKLSAgICBleHBsaWNpdCBGcmFt
ZUxvYWRlckNsaWVudEVmbChFdmFzX09iamVjdCAqdmlldyk7Ci0gICAgdmlydHVhbCB+RnJhbWVM
b2FkZXJDbGllbnRFZmwoKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZnJhbWVMb2FkZXJEZXN0cm95
ZWQoKTsKLQotICAgIHZvaWQgc2V0V2ViRnJhbWUoRXZhc19PYmplY3QgKmZyYW1lKSB7IG1fZnJh
bWUgPSBmcmFtZTsgfQotICAgIEV2YXNfT2JqZWN0KiB3ZWJGcmFtZSgpIGNvbnN0IHsgcmV0dXJu
IG1fZnJhbWU7IH0KLSAgICBFdmFzX09iamVjdCogd2ViVmlldygpIGNvbnN0IHsgcmV0dXJuIG1f
dmlldzsgfQotCi0gICAgdm9pZCBzZXRDdXN0b21Vc2VyQWdlbnQoY29uc3QgU3RyaW5nJik7Ci0g
ICAgY29uc3QgU3RyaW5nJiBjdXN0b21Vc2VyQWdlbnQoKSBjb25zdDsKLQotICAgIHZpcnR1YWwg
Ym9vbCBoYXNXZWJWaWV3KCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGhhc0ZyYW1lVmlldygp
IGNvbnN0OwotCi0gICAgdm9pZCBjYWxsUG9saWN5RnVuY3Rpb24oRnJhbWVQb2xpY3lGdW5jdGlv
biwgUG9saWN5QWN0aW9uKTsKLQotICAgIHZpcnR1YWwgdm9pZCBtYWtlUmVwcmVzZW50YXRpb24o
RG9jdW1lbnRMb2FkZXIqKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZm9yY2VMYXlvdXQoKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgZm9yY2VMYXlvdXRGb3JOb25IVE1MKCk7Ci0KLSAgICB2aXJ0dWFsIHZv
aWQgc2V0Q29waWVzT25TY3JvbGwoKTsKLQotICAgIHZpcnR1YWwgdm9pZCBkZXRhY2hlZEZyb21Q
YXJlbnQyKCk7Ci0gICAgdmlydHVhbCB2b2lkIGRldGFjaGVkRnJvbVBhcmVudDMoKTsKLQotICAg
IHZpcnR1YWwgdm9pZCBsb2FkZWRGcm9tQ2FjaGVkUGFnZSgpOwotCi0gICAgdmlydHVhbCB2b2lk
IGFzc2lnbklkZW50aWZpZXJUb0luaXRpYWxSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKLQotICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaFdpbGxTZW5kUmVxdWVzdChEb2N1bWVudExvYWRlciosIHVuc2lnbmVk
IGxvbmcgIGlkZW50aWZpZXIsIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlZGlyZWN0UmVzcG9uc2UpOwotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRVc2VDcmVkZW50
aWFsU3RvcmFnZShEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcik7Ci0g
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSYpOwotCi0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUHVzaFN0
YXRlV2l0aGluUGFnZSgpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFBvcFN0YXRlV2l0
aGluUGFnZSgpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlcGxhY2VTdGF0ZVdpdGhp
blBhZ2UoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDbGVhcldpbmRvd09iamVjdElu
V29ybGQoV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkJik7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShEb2N1bWVudExvYWRlciosIHVu
c2lnbmVkIGxvbmcgIGlkZW50aWZpZXIsIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7
Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNlKERvY3VtZW50TG9h
ZGVyKiwgdW5zaWduZWQgbG9uZyAgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYp
OwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVDb250ZW50TGVuZ3RoKERvY3Vt
ZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBpbnQgZGF0YUxlbmd0aCk7Ci0g
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmluaXNoTG9hZGluZyhEb2N1bWVudExvYWRlcios
IHVuc2lnbmVkIGxvbmcgIGlkZW50aWZpZXIpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERp
ZEZhaWxMb2FkaW5nKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyAgaWRlbnRpZmllciwg
Y29uc3QgUmVzb3VyY2VFcnJvciYpOwotICAgIHZpcnR1YWwgYm9vbCBkaXNwYXRjaERpZExvYWRS
ZXNvdXJjZUZyb21NZW1vcnlDYWNoZShEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBpbnQgbGVuZ3RoKTsKLSAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEaWRMb2FkUmVzb3VyY2VCeVhNTEh0dHBSZXF1ZXN0KHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VTdHJpbmcpOwotCi0gICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGlkSGFuZGxlT25sb2FkRXZlbnRzKCk7Ci0gICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKCk7Ci0g
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3QoKTsKLSAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0KGNvbnN0IFVSTCYs
IGRvdWJsZSwgZG91YmxlKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VMb2Nh
dGlvbldpdGhpblBhZ2UoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsQ2xvc2UoKTsK
LSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpOwotICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCk7Ci0gICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyhXZWJDb3JlOjpJY29uVHlwZSk7
Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpOwotICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYp
OwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxMb2FkKGNvbnN0IFJlc291cmNlRXJy
b3ImKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hEb2N1bWVudExvYWQoKTsK
LSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hMb2FkKCk7Ci0gICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGlkTGF5b3V0KExheW91dE1pbGVzdG9uZXMpOwotCi0gICAgdmlydHVhbCBG
cmFtZSogZGlzcGF0Y2hDcmVhdGVQYWdlKGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24m
KTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hTaG93KCk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgRnJhbWVQb2xpY3lGdW5jdGlvbik7Ci0gICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKGNvbnN0IE5hdmln
YXRpb25BY3Rpb24mLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBXVEY6OlBhc3NSZWZQdHI8Rm9y
bVN0YXRlPiwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIEZyYW1lUG9saWN5RnVuY3Rpb24pOwot
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24o
Y29uc3QgTmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFdURjo6UGFz
c1JlZlB0cjxGb3JtU3RhdGU+LCBGcmFtZVBvbGljeUZ1bmN0aW9uKTsKLSAgICB2aXJ0dWFsIHZv
aWQgY2FuY2VsUG9saWN5Q2hlY2soKTsKLQotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFVuYWJs
ZVRvSW1wbGVtZW50UG9saWN5KGNvbnN0IFJlc291cmNlRXJyb3ImKTsKLQotICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaFdpbGxTZW5kU3VibWl0RXZlbnQoV1RGOjpQYXNzUmVmUHRyPEZvcm1TdGF0
ZT4pIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxTdWJtaXRGb3JtKFdURjo6UGFz
c1JlZlB0cjxGb3JtU3RhdGU+LCBGcmFtZVBvbGljeUZ1bmN0aW9uKTsKLQotICAgIHZpcnR1YWwg
dm9pZCByZXZlcnRUb1Byb3Zpc2lvbmFsU3RhdGUoRG9jdW1lbnRMb2FkZXIqKSB7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgc2V0TWFpbkRvY3VtZW50RXJyb3IoRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBS
ZXNvdXJjZUVycm9yJik7Ci0KLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RnJhbWU+IGNyZWF0ZUZy
YW1lKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgbmFtZSwgSFRNTEZyYW1lT3duZXJFbGVtZW50
KiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIHJlZmVycmVy
LCBib29sIGFsbG93c1Njcm9sbGluZywgaW50IG1hcmdpbldpZHRoLCBpbnQgbWFyZ2luSGVpZ2h0
KTsKLQotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBJ
bnRTaXplJiwgSFRNTFBsdWdJbkVsZW1lbnQqLCBjb25zdCBVUkwmLCBjb25zdCBXVEY6OlZlY3Rv
cjxTdHJpbmc+JiwgY29uc3QgV1RGOjpWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYsIGJv
b2wpOwotICAgIHZpcnR1YWwgdm9pZCByZWNyZWF0ZVBsdWdpbihXaWRnZXQqKSB7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgcmVkaXJlY3REYXRhVG9QbHVnaW4oV2lkZ2V0KiBwbHVnaW5XaWRnZXQpOwot
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXaWRnZXQ+IGNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29u
c3QgSW50U2l6ZSYsIEhUTUxBcHBsZXRFbGVtZW50KiwgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25z
dCBXVEY6OlZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBXVEY6OlZlY3RvcjxTdHJp
bmc+JiBwYXJhbVZhbHVlcyk7Ci0gICAgdmlydHVhbCBTdHJpbmcgb3ZlcnJpZGVNZWRpYVR5cGUo
KSBjb25zdDsKLQotICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckZvckljb25Ob3RpZmljYXRpb24o
Ym9vbCk7Ci0KLSAgICB2aXJ0dWFsIE9iamVjdENvbnRlbnRUeXBlIG9iamVjdENvbnRlbnRUeXBl
KGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgc2hvdWxkUHJlZmVyUGx1
Z0luc0ZvckltYWdlcyk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0TWFpbkZyYW1lRG9jdW1lbnRS
ZWFkeShib29sKTsKLQotICAgIHZpcnR1YWwgdm9pZCBzdGFydERvd25sb2FkKGNvbnN0IFJlc291
cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkTmFtZSA9IFN0cmluZygpKTsKLQot
ICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2hhbmdlVGl0bGUoRG9jdW1lbnRMb2FkZXIqKTsKLSAgICB2
aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlVGl0bGUoRG9jdW1lbnRMb2FkZXIqKTsKLQotICAgIHZpcnR1
YWwgdm9pZCBjb21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiwgY29uc3QgY2hhciosIGludCk7
Ci0gICAgdmlydHVhbCB2b2lkIGZpbmlzaGVkTG9hZGluZyhEb2N1bWVudExvYWRlciopOwotCi0g
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZUdsb2JhbEhpc3RvcnkoKTsKLSAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlR2xvYmFsSGlzdG9yeVJlZGlyZWN0TGlua3MoKTsKLSAgICB2aXJ0dWFsIGJvb2wgc2hv
dWxkR29Ub0hpc3RvcnlJdGVtKEhpc3RvcnlJdGVtKikgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lk
IGRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUnVuSW5z
ZWN1cmVDb250ZW50KFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgVVJMJik7Ci0gICAgdmlydHVhbCB2
b2lkIGRpZERldGVjdFhTUyhjb25zdCBVUkwmLCBib29sIGRpZEJsb2NrRW50aXJlUGFnZSk7Ci0K
LSAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgY2FuY2VsbGVkRXJyb3IoY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0Jik7Ci0gICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGJsb2NrZWRFcnJvcihjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmKTsKLSAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgY2Fubm90U2hvd1VS
TEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwotICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJv
ciBpbnRlcnJ1cHRlZEZvclBvbGljeUNoYW5nZUVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYp
OwotCi0gICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGNhbm5vdFNob3dNSU1FVHlwZUVycm9yKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgZmlsZURv
ZXNOb3RFeGlzdEVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICB2aXJ0dWFsIFJl
c291cmNlRXJyb3IgcGx1Z2luV2lsbEhhbmRsZUxvYWRFcnJvcihjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJik7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRmFsbEJhY2soY29uc3QgUmVzb3VyY2VF
cnJvciYpOwotCi0gICAgdmlydHVhbCBib29sIGNhbkhhbmRsZVJlcXVlc3QoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JikgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGNhblNob3dNSU1FVHlwZShjb25z
dCBTdHJpbmcmKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgY2FuU2hvd01JTUVUeXBlQXNIVE1M
KGNvbnN0IFN0cmluZyYgTUlNRVR5cGUpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCByZXByZXNl
bnRhdGlvbkV4aXN0c0ZvclVSTFNjaGVtZShjb25zdCBTdHJpbmcmKSBjb25zdDsKLSAgICB2aXJ0
dWFsIFN0cmluZyBnZW5lcmF0ZWRNSU1FVHlwZUZvclVSTFNjaGVtZShjb25zdCBTdHJpbmcmKSBj
b25zdDsKLQotICAgIHZpcnR1YWwgdm9pZCBmcmFtZUxvYWRDb21wbGV0ZWQoKTsKLSAgICB2aXJ0
dWFsIHZvaWQgc2F2ZVZpZXdTdGF0ZVRvSXRlbShIaXN0b3J5SXRlbSopOwotICAgIHZpcnR1YWwg
dm9pZCByZXN0b3JlVmlld1N0YXRlKCk7Ci0gICAgdmlydHVhbCB2b2lkIHByb3Zpc2lvbmFsTG9h
ZFN0YXJ0ZWQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZCgpOwotICAgIHZpcnR1
YWwgdm9pZCBwcmVwYXJlRm9yRGF0YVNvdXJjZVJlcGxhY2VtZW50KCk7Ci0KLSAgICB2aXJ0dWFs
IFdURjo6UGFzc1JlZlB0cjxEb2N1bWVudExvYWRlcj4gY3JlYXRlRG9jdW1lbnRMb2FkZXIoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3Vic3RpdHV0ZURhdGEmKTsKLSAgICB2aXJ0dWFs
IHZvaWQgc2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUsIGNvbnN0IFVS
TCYpOwotCi0gICAgdmlydHVhbCBTdHJpbmcgdXNlckFnZW50KGNvbnN0IFVSTCYpOwotCi0gICAg
dmlydHVhbCB2b2lkIHNhdmVQbGF0Zm9ybURhdGFUb0NhY2hlZEZyYW1lKENhY2hlZEZyYW1lKik7
Ci0gICAgdmlydHVhbCB2b2lkIHRyYW5zaXRpb25Ub0NvbW1pdHRlZEZyb21DYWNoZWRGcmFtZShD
YWNoZWRGcmFtZSopOwotICAgIHZpcnR1YWwgdm9pZCB0cmFuc2l0aW9uVG9Db21taXR0ZWRGb3JO
ZXdQYWdlKCk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkU2F2ZVRvUGFnZUNhY2hlKCk7Ci0gICAg
dmlydHVhbCB2b2lkIGRpZFJlc3RvcmVGcm9tUGFnZUNhY2hlKCk7Ci0KLSAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hEaWRCZWNvbWVGcmFtZXNldChib29sKTsKLQotICAgIHZpcnR1YWwgYm9vbCBj
YW5DYWNoZVBhZ2UoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgY29udmVydE1haW5SZXNvdXJj
ZUxvYWRUb0Rvd25sb2FkKERvY3VtZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jiwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNv
cmU6OkZyYW1lTmV0d29ya2luZ0NvbnRleHQ+IGNyZWF0ZU5ldHdvcmtpbmdDb250ZXh0KCk7Ci0g
cHJpdmF0ZToKLSAgICBib29sIGlzTG9hZGluZ01haW5GcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1f
ZnJhbWUgPT0gZXdrX3ZpZXdfZnJhbWVfbWFpbl9nZXQobV92aWV3KTsgfQotCi0gICAgRXZhc19P
YmplY3QgKm1fdmlldzsKLSAgICBFdmFzX09iamVjdCAqbV9mcmFtZTsKLQotICAgIFJlc291cmNl
UmVzcG9uc2UgbV9yZXNwb25zZTsKLSAgICBTdHJpbmcgbV91c2VyQWdlbnQ7Ci0gICAgU3RyaW5n
IG1fY3VzdG9tVXNlckFnZW50OwotCi0gICAgUmVzb3VyY2VFcnJvciBtX2xvYWRFcnJvcjsKLQot
ICAgIC8vIFBsdWdpbiB2aWV3IHRvIHJlZGlyZWN0IGRhdGEgdG8KLSAgICBQbHVnaW5WaWV3KiBt
X3BsdWdpblZpZXc7Ci0gICAgYm9vbCBtX2hhc1NlbnRSZXNwb25zZVRvUGx1Z2luOwotfTsKLQot
fQotCi0jZW5kaWYgLy8gRnJhbWVMb2FkZXJDbGllbnRFZmxfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVOZXR3b3JraW5nQ29udGV4dEVmbC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZU5ldHdvcmtpbmdDb250ZXh0
RWZsLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjgzYjExYS4uMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZU5ldHdvcmtpbmdDb250
ZXh0RWZsLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMp
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgU2Ftc3VuZyBFbGVjdHJvbmljcwotICogQ29weXJpZ2h0
IChDKSAyMDEyIFByb0ZVU0lPTiBlbWJlZGRlZCBzeXN0ZW1zCi0gKgotICogQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
Ci0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkZyYW1lTmV0d29ya2luZ0NvbnRleHRFZmwuaCIK
LQotI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0jaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUu
aCIKLSNpbmNsdWRlICJld2tfZnJhbWUuaCIKLSNpbmNsdWRlICJld2tfdmlldy5oIgotI2luY2x1
ZGUgImV3a192aWV3X3ByaXZhdGUuaCIKLQotI2luY2x1ZGUgPEV2YXMuaD4KLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1QYXNzUmVmUHRyPEZyYW1lTmV0d29ya2luZ0NvbnRleHRFZmw+IEZyYW1l
TmV0d29ya2luZ0NvbnRleHRFZmw6OmNyZWF0ZShGcmFtZSogZnJhbWUsIEV2YXNfT2JqZWN0KiBl
d2tGcmFtZSkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZyYW1lTmV0d29ya2luZ0NvbnRl
eHRFZmwoZnJhbWUsIGV3a0ZyYW1lKSk7Ci19Ci0KLUZyYW1lTmV0d29ya2luZ0NvbnRleHRFZmw6
OkZyYW1lTmV0d29ya2luZ0NvbnRleHRFZmwoRnJhbWUqIGZyYW1lLCBFdmFzX09iamVjdCogZXdr
RnJhbWUpCi0gICAgOiBGcmFtZU5ldHdvcmtpbmdDb250ZXh0KGZyYW1lKQotICAgICwgbV9ld2tG
cmFtZShld2tGcmFtZSkKLXsKLX0KLQotTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBGcmFtZU5ldHdv
cmtpbmdDb250ZXh0RWZsOjpzdG9yYWdlU2Vzc2lvbigpIGNvbnN0Ci17Ci0gICAgaWYgKE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiogc2Vzc2lvbiA9IEVXS1ByaXZhdGU6OnN0b3JhZ2VTZXNzaW9uKGV3
a19mcmFtZV92aWV3X2dldChtX2V3a0ZyYW1lKSkpCi0gICAgICAgIHJldHVybiAqc2Vzc2lvbjsK
LSAgICByZXR1cm4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24o
KTsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQv
RnJhbWVOZXR3b3JraW5nQ29udGV4dEVmbC5oIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1
cHBvcnQvRnJhbWVOZXR3b3JraW5nQ29udGV4dEVmbC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA4YTc2NDllLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVT
dXBwb3J0L0ZyYW1lTmV0d29ya2luZ0NvbnRleHRFZmwuaAorKysgL2Rldi9udWxsCkBAIC0xLDUy
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5k
L29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgU2Ftc3VuZyBF
bGVjdHJvbmljcwotICoKLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgRnJhbWVOZXR3b3JraW5nQ29udGV4
dEVmbF9oCi0jZGVmaW5lIEZyYW1lTmV0d29ya2luZ0NvbnRleHRFZmxfaAotCi0jaW5jbHVkZSAi
RnJhbWVOZXR3b3JraW5nQ29udGV4dC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNz
IEZyYW1lTmV0d29ya2luZ0NvbnRleHRFZmwgOiBwdWJsaWMgV2ViQ29yZTo6RnJhbWVOZXR3b3Jr
aW5nQ29udGV4dCB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8RnJhbWVOZXR3b3Jr
aW5nQ29udGV4dEVmbD4gY3JlYXRlKEZyYW1lKiwgRXZhc19PYmplY3QqKTsKLQotICAgIFdlYkNv
cmU6OkZyYW1lKiBjb3JlRnJhbWUoKSBjb25zdCB7IHJldHVybiBmcmFtZSgpOyB9Ci0KLXByaXZh
dGU6Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHN0b3JhZ2VT
ZXNzaW9uKCkgY29uc3Q7Ci0KLSAgICBGcmFtZU5ldHdvcmtpbmdDb250ZXh0RWZsKEZyYW1lKiwg
RXZhc19PYmplY3QqKTsKLQotICAgIEV2YXNfT2JqZWN0KiBtX2V3a0ZyYW1lOwotfTsKLQotfQot
Ci0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0lj
b25EYXRhYmFzZUNsaWVudEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9y
dC9JY29uRGF0YWJhc2VDbGllbnRFZmwuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA0ZTM1MTM3Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0
L0ljb25EYXRhYmFzZUNsaWVudEVmbC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBA
Ci0vKgotICogIENvcHlyaWdodCAoQykgMjAxMSBTYW1zdW5nIEVsZWN0cm9uaWNzCi0gKgotICog
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAg
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQotICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUg
dG8KLSAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLAotICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICov
Ci0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJJY29uRGF0YWJhc2VDbGllbnRFZmwu
aCIKLQotI2lmIEVOQUJMRShJQ09OREFUQUJBU0UpCi0jaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQu
aCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi12b2lkIEljb25EYXRhYmFzZUNsaWVudEVmbDo6
ZGlkUmVtb3ZlQWxsSWNvbnMoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQg
SWNvbkRhdGFiYXNlQ2xpZW50RWZsOjpkaWRJbXBvcnRJY29uVVJMRm9yUGFnZVVSTChjb25zdCBT
dHJpbmcmKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgSWNvbkRhdGFiYXNl
Q2xpZW50RWZsOjpkaWRJbXBvcnRJY29uRGF0YUZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJikKLXsK
LSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIEljb25EYXRhYmFzZUNsaWVudEVmbDo6
ZGlkQ2hhbmdlSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJikKLXsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOwotfQotCi12b2lkIEljb25EYXRhYmFzZUNsaWVudEVmbDo6ZGlkRmluaXNoVVJMSW1w
b3J0KCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi19Ci0KLSNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvSWNvbkRhdGFiYXNlQ2xpZW50
RWZsLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9JY29uRGF0YWJhc2VDbGll
bnRFZmwuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzE0Y2RiYS4uMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9JY29uRGF0YWJhc2VDbGllbnRF
ZmwuaAorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLS8qIAotICogIENvcHlyaWdodCAo
QykgMjAxMSBTYW1zdW5nIEVsZWN0cm9uaWNzCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
cgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQot
ICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoK
LSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0
aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAot
ICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpZm5kZWYgSWNvbkRhdGFi
YXNlQ2xpZW50RWZsX2gKLSNkZWZpbmUgSWNvbkRhdGFiYXNlQ2xpZW50RWZsX2gKLQotI2lmIEVO
QUJMRShJQ09OREFUQUJBU0UpCi0KLSNpbmNsdWRlICJJY29uRGF0YWJhc2VDbGllbnQuaCIKLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBJY29uRGF0YWJhc2VDbGllbnRFZmwgOiBwdWJs
aWMgSWNvbkRhdGFiYXNlQ2xpZW50IHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVt
b3ZlQWxsSWNvbnMoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkSW1wb3J0SWNvblVSTEZvclBhZ2VV
UkwoY29uc3QgU3RyaW5nJik7Ci0gICAgdmlydHVhbCB2b2lkIGRpZEltcG9ydEljb25EYXRhRm9y
UGFnZVVSTChjb25zdCBTdHJpbmcmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlSWNvbkZv
clBhZ2VVUkwoY29uc3QgU3RyaW5nJik7Ci0gICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaFVSTElt
cG9ydCgpOwotfTsKLQotfQotCi0jZW5kaWYKLSNlbmRpZiAvLyBJY29uRGF0YWJhc2VDbGllbnRF
ZmxfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvSW5zcGVj
dG9yQ2xpZW50RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0luc3Bl
Y3RvckNsaWVudEVmbC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRkMzk5M2Iu
LjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9y
Q2xpZW50RWZsLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDIyNyArMCwwIEBACi0vKgotICogIENv
cHlyaWdodCAoQykgMjAwOCBJTmRUIC0gSW5zdGl0dXRvIE5va2lhIGRlIFRlY25vbG9naWEKLSAq
ICBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBQcm9GVVNJT04gZW1iZWRkZWQgc3lzdGVtcwotICog
IENvcHlyaWdodCAoQykgMjAwOS0yMDEwIFNhbXN1bmcgRWxlY3Ryb25pY3MKLSAqCi0gKiAgVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgotICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJh
bCBQdWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
Ci0gKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKLSAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotICogIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAy
MTEwLTEzMDEgIFVTQQotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJJbnNw
ZWN0b3JDbGllbnRFZmwuaCIKLQotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0KLSNpbmNsdWRlICJF
ZmxJbnNwZWN0b3JVdGlsaXRpZXMuaCIKLSNpbmNsdWRlICJGcmFtZVZpZXcuaCIKLSNpbmNsdWRl
ICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCi0jaW5jbHVkZSAiTWFpbkZyYW1lLmgiCi0jaW5jbHVk
ZSAiTm90SW1wbGVtZW50ZWQuaCIKLSNpbmNsdWRlICJld2tfdmlld19wcml2YXRlLmgiCi0jaW5j
bHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckFnZW50QmFzZS5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0
L0NTdHJpbmcuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1zdGF0aWMgdm9pZCBub3RpZnlJbnNwZWN0b3JEZXN0cm95KHZvaWQqIHVz
ZXJEYXRhLCBFdmFzX09iamVjdCogLyp3ZWJ2aWV3Ki8sIHZvaWQqIC8qZXZlbnRJbmZvKi8pCi17
Ci0gICAgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRFZmwqIGluc3BlY3RvckZyb250ZW5kQ2xpZW50
ID0gc3RhdGljX2Nhc3Q8SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRFZmwqPih1c2VyRGF0YSk7Ci0g
ICAgaWYgKGluc3BlY3RvckZyb250ZW5kQ2xpZW50KQotICAgICAgICBpbnNwZWN0b3JGcm9udGVu
ZENsaWVudC0+ZGVzdHJveUluc3BlY3RvcldpbmRvdyh0cnVlKTsKLX0KLQotc3RhdGljIHZvaWQg
aW52YWxpZGF0ZVZpZXcoRXZhc19PYmplY3QqIHdlYlZpZXcpCi17Ci0gICAgRXZhc19Db29yZCB3
aWR0aCwgaGVpZ2h0OwotICAgIEV2YXNfT2JqZWN0KiBtYWluRnJhbWUgPSBld2tfdmlld19mcmFt
ZV9tYWluX2dldCh3ZWJWaWV3KTsKLSAgICBpZiAobWFpbkZyYW1lICYmIGV3a19mcmFtZV9jb250
ZW50c19zaXplX2dldChtYWluRnJhbWUsICZ3aWR0aCwgJmhlaWdodCkpIHsKLSAgICAgICAgV2Vi
Q29yZTo6UGFnZSogcGFnZSA9IEVXS1ByaXZhdGU6OmNvcmVQYWdlKHdlYlZpZXcpOwotICAgICAg
ICBpZiAocGFnZSkKLSAgICAgICAgICAgIHBhZ2UtPm1haW5GcmFtZSgpLnZpZXcoKS0+aW52YWxp
ZGF0ZVJlY3QoV2ViQ29yZTo6SW50UmVjdCgwLCAwLCB3aWR0aCwgaGVpZ2h0KSk7Ci0gICAgfQot
fQotCi1jbGFzcyBJbnNwZWN0b3JGcm9udGVuZFNldHRpbmdzRWZsIDogcHVibGljIEluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50TG9jYWw6OlNldHRpbmdzIHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIFN0
cmluZyBnZXRQcm9wZXJ0eShjb25zdCBTdHJpbmcmIC8qbmFtZSovKQotICAgIHsKLSAgICAgICAg
bm90SW1wbGVtZW50ZWQoKTsKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIH0KLQotICAg
IHZpcnR1YWwgdm9pZCBzZXRQcm9wZXJ0eShjb25zdCBTdHJpbmcmIC8qbmFtZSovLCBjb25zdCBT
dHJpbmcmIC8qdmFsdWUqLykKLSAgICB7Ci0gICAgICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAg
fQotfTsKLQotSW5zcGVjdG9yQ2xpZW50RWZsOjpJbnNwZWN0b3JDbGllbnRFZmwoRXZhc19PYmpl
Y3QqIHdlYlZpZXcpCi0gICAgOiBtX2luc3BlY3RlZFZpZXcod2ViVmlldykKLSAgICAsIG1faW5z
cGVjdG9yVmlldygwKQotICAgICwgbV9mcm9udGVuZENsaWVudCgwKQotewotfQotCi1JbnNwZWN0
b3JDbGllbnRFZmw6On5JbnNwZWN0b3JDbGllbnRFZmwoKQotewotICAgIGlmIChtX2Zyb250ZW5k
Q2xpZW50KSB7Ci0gICAgICAgIG1fZnJvbnRlbmRDbGllbnQtPmRpc2Nvbm5lY3RJbnNwZWN0b3JD
bGllbnQoKTsKLSAgICAgICAgbV9mcm9udGVuZENsaWVudCA9IDA7Ci0gICAgfQotfQotCi12b2lk
IEluc3BlY3RvckNsaWVudEVmbDo6aW5zcGVjdG9yRGVzdHJveWVkKCkKLXsKLSAgICBjbG9zZUlu
c3BlY3RvckZyb250ZW5kKCk7Ci0gICAgZGVsZXRlIHRoaXM7Ci19Ci0KLUluc3BlY3RvckZyb250
ZW5kQ2hhbm5lbCogSW5zcGVjdG9yQ2xpZW50RWZsOjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQoSW5z
cGVjdG9yQ29udHJvbGxlciopCi17Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2Fs
bChtX2luc3BlY3RlZFZpZXcsICJpbnNwZWN0b3IsdmlldyxjcmVhdGUiLCAwKTsKLQotICAgIEV2
YXNfT2JqZWN0KiBpbnNwZWN0b3JWaWV3ID0gZXdrX3ZpZXdfaW5zcGVjdG9yX3ZpZXdfZ2V0KG1f
aW5zcGVjdGVkVmlldyk7Ci0gICAgaWYgKCFpbnNwZWN0b3JWaWV3KQotICAgICAgICByZXR1cm4g
MDsKLQotICAgIG1faW5zcGVjdG9yVmlldyA9IGluc3BlY3RvclZpZXc7Ci0KLSAgICBTdHJpbmcg
aW5zcGVjdG9yVXJpID0gaW5zcGVjdG9yRmlsZXNQYXRoKCkgKyAiL01haW4uaHRtbCI7Ci0gICAg
ZXdrX3ZpZXdfdXJpX3NldChtX2luc3BlY3RvclZpZXcsIGluc3BlY3RvclVyaS51dGY4KCkuZGF0
YSgpKTsKLQotICAgIGF1dG8gZnJvbnRlbmRDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50RWZsPihtX2luc3BlY3RlZFZpZXcsIG1faW5zcGVjdG9yVmlldywg
dGhpcyk7Ci0gICAgbV9mcm9udGVuZENsaWVudCA9IGZyb250ZW5kQ2xpZW50LmdldCgpOwotCi0g
ICAgSW5zcGVjdG9yQ29udHJvbGxlciYgY29udHJvbGxlciA9IEVXS1ByaXZhdGU6OmNvcmVQYWdl
KG1faW5zcGVjdG9yVmlldyktPmluc3BlY3RvckNvbnRyb2xsZXIoKTsKLSAgICBjb250cm9sbGVy
LnNldEluc3BlY3RvckZyb250ZW5kQ2xpZW50KHN0ZDo6bW92ZShmcm9udGVuZENsaWVudCkpOwot
ICAgIAotICAgIHJldHVybiB0aGlzOwotfQotCi12b2lkIEluc3BlY3RvckNsaWVudEVmbDo6Y2xv
c2VJbnNwZWN0b3JGcm9udGVuZCgpCi17Ci0gICAgaWYgKG1fZnJvbnRlbmRDbGllbnQpCi0gICAg
ICAgIG1fZnJvbnRlbmRDbGllbnQtPmRlc3Ryb3lJbnNwZWN0b3JXaW5kb3coZmFsc2UpOwotfQot
Ci12b2lkIEluc3BlY3RvckNsaWVudEVmbDo6YnJpbmdGcm9udGVuZFRvRnJvbnQoKQotewotICAg
IG1fZnJvbnRlbmRDbGllbnQtPmJyaW5nVG9Gcm9udCgpOwotfQotCi12b2lkIEluc3BlY3RvckNs
aWVudEVmbDo6aGlnaGxpZ2h0KCkKLXsKLSAgICBpbnZhbGlkYXRlVmlldyhtX2luc3BlY3RlZFZp
ZXcpOwotfQotCi12b2lkIEluc3BlY3RvckNsaWVudEVmbDo6aGlkZUhpZ2hsaWdodCgpCi17Ci0g
ICAgaW52YWxpZGF0ZVZpZXcobV9pbnNwZWN0ZWRWaWV3KTsKLX0KLQotYm9vbCBJbnNwZWN0b3JD
bGllbnRFZmw6OnNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCi17
Ci0gICAgUGFnZSogZnJvbnRlbmRQYWdlID0gRVdLUHJpdmF0ZTo6Y29yZVBhZ2UobV9pbnNwZWN0
b3JWaWV3KTsKLSAgICByZXR1cm4gZG9EaXNwYXRjaE1lc3NhZ2VPbkZyb250ZW5kUGFnZShmcm9u
dGVuZFBhZ2UsIG1lc3NhZ2UpOwotfQotCi12b2lkIEluc3BlY3RvckNsaWVudEVmbDo6cmVsZWFz
ZUZyb250ZW5kUGFnZSgpCi17Ci0gICAgbV9pbnNwZWN0b3JWaWV3ID0gMDsKLSAgICBtX2Zyb250
ZW5kQ2xpZW50ID0gMDsKLX0KLQotU3RyaW5nIEluc3BlY3RvckNsaWVudEVmbDo6aW5zcGVjdG9y
RmlsZXNQYXRoKCkKLXsKLSAgICByZXR1cm4gImZpbGU6Ly8iICsgaW5zcGVjdG9yUmVzb3VyY2VQ
YXRoKCk7Ci19Ci0KLUluc3BlY3RvckZyb250ZW5kQ2xpZW50RWZsOjpJbnNwZWN0b3JGcm9udGVu
ZENsaWVudEVmbChFdmFzX09iamVjdCogaW5zcGVjdGVkVmlldywgRXZhc19PYmplY3QqIGluc3Bl
Y3RvclZpZXcsIEluc3BlY3RvckNsaWVudEVmbCogaW5zcGVjdG9yQ2xpZW50KQotICAgIDogSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbCgmRVdLUHJpdmF0ZTo6Y29yZVBhZ2UoaW5zcGVjdGVk
VmlldyktPmluc3BlY3RvckNvbnRyb2xsZXIoKSwgRVdLUHJpdmF0ZTo6Y29yZVBhZ2UoaW5zcGVj
dG9yVmlldyksIHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yRnJvbnRlbmRTZXR0aW5nc0VmbD4o
KSkKLSAgICAsIG1faW5zcGVjdGVkVmlldyhpbnNwZWN0ZWRWaWV3KQotICAgICwgbV9pbnNwZWN0
b3JWaWV3KGluc3BlY3RvclZpZXcpCi0gICAgLCBtX2luc3BlY3RvckNsaWVudChpbnNwZWN0b3JD
bGllbnQpCi17Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKG1faW5zcGVjdG9y
VmlldywgImluc3BlY3Rvcix2aWV3LGRlc3Ryb3kiLCBub3RpZnlJbnNwZWN0b3JEZXN0cm95LCB0
aGlzKTsKLX0KLQotSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRFZmw6On5JbnNwZWN0b3JGcm9udGVu
ZENsaWVudEVmbCgpCi17Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfZGVsKG1faW5z
cGVjdG9yVmlldywgImluc3BlY3Rvcix2aWV3LGRlc3Ryb3kiLCBub3RpZnlJbnNwZWN0b3JEZXN0
cm95KTsKLQotICAgIGlmIChtX2luc3BlY3RvckNsaWVudCkgewotICAgICAgICBtX2luc3BlY3Rv
ckNsaWVudC0+cmVsZWFzZUZyb250ZW5kUGFnZSgpOwotICAgICAgICBtX2luc3BlY3RvckNsaWVu
dCA9IDA7Ci0gICAgfQotfQotCi1TdHJpbmcgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRFZmw6Omxv
Y2FsaXplZFN0cmluZ3NVUkwoKQotewotICAgIHJldHVybiBtX2luc3BlY3RvckNsaWVudC0+aW5z
cGVjdG9yRmlsZXNQYXRoKCkgKyAiL2xvY2FsaXplZFN0cmluZ3MuanMiOwotfQotCi12b2lkIElu
c3BlY3RvckZyb250ZW5kQ2xpZW50RWZsOjpicmluZ1RvRnJvbnQoKQotewotICAgIGV2YXNfb2Jq
ZWN0X2ZvY3VzX3NldChtX2luc3BlY3RvclZpZXcsIHRydWUpOwotfQotCi12b2lkIEluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50RWZsOjpjbG9zZVdpbmRvdygpCi17Ci0gICAgZGVzdHJveUluc3BlY3Rv
cldpbmRvdyh0cnVlKTsKLX0KLQotdm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudEVmbDo6aW5z
cGVjdGVkVVJMQ2hhbmdlZChjb25zdCBTdHJpbmcmKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7
Ci19Ci0KLXZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRFZmw6OmF0dGFjaFdpbmRvdyhEb2Nr
U2lkZSkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIEluc3BlY3RvckZyb250
ZW5kQ2xpZW50RWZsOjpkZXRhY2hXaW5kb3coKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19
Ci0KLXZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRFZmw6OnNldEF0dGFjaGVkV2luZG93SGVp
Z2h0KHVuc2lnbmVkKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnRFZmw6OnNldEF0dGFjaGVkV2luZG93V2lkdGgodW5zaWduZWQpCi17
Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVu
dEVmbDo6c2V0VG9vbGJhckhlaWdodCh1bnNpZ25lZCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgp
OwotfQotCi12b2lkIEluc3BlY3RvckZyb250ZW5kQ2xpZW50RWZsOjpkZXN0cm95SW5zcGVjdG9y
V2luZG93KGJvb2wgbm90aWZ5SW5zcGVjdG9yQ29udHJvbGxlcikKLXsKLSAgICBpZiAobm90aWZ5
SW5zcGVjdG9yQ29udHJvbGxlcikKLSAgICAgICAgRVdLUHJpdmF0ZTo6Y29yZVBhZ2UobV9pbnNw
ZWN0ZWRWaWV3KS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLmRpc2Nvbm5lY3RGcm9udGVuZChJbnNw
ZWN0b3I6Okluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb246Okluc3BlY3RvckRlc3Ryb3llZCk7Ci0K
LSAgICBpZiAobV9pbnNwZWN0b3JDbGllbnQpCi0gICAgICAgIG1faW5zcGVjdG9yQ2xpZW50LT5y
ZWxlYXNlRnJvbnRlbmRQYWdlKCk7Ci0KLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19j
YWxsKG1faW5zcGVjdGVkVmlldywgImluc3BlY3Rvcix2aWV3LGNsb3NlIiwgbV9pbnNwZWN0b3JW
aWV3KTsKLX0KLQotfQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJD
b3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRFZmwuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNv
cmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEVmbC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBkOGFkYWM0Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBw
b3J0L0luc3BlY3RvckNsaWVudEVmbC5oCisrKyAvZGV2L251bGwKQEAgLTEsMTAyICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqIENvcHlyaWdodCAoQykgMjAwOCBJTmRUIC0gSW5zdGl0dXRvIE5va2lhIGRlIFRlY25v
bG9naWEKLSAqIENvcHlyaWdodCAoQykgMjAwOS0yMDEwIFByb0ZVU0lPTiBlbWJlZGRlZCBzeXN0
ZW1zCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBw
bGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEluc3BlY3Rv
ckNsaWVudEVmbF9oCi0jZGVmaW5lIEluc3BlY3RvckNsaWVudEVmbF9oCi0KLSNpZiBFTkFCTEUo
SU5TUEVDVE9SKQotCi0jaW5jbHVkZSAiSW5zcGVjdG9yQ2xpZW50LmgiCi0jaW5jbHVkZSAiSW5z
cGVjdG9yRm9yd2FyZGluZy5oIgotI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9j
YWwuaCIKLSNpbmNsdWRlIDxFdmFzLmg+Ci0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRFZmw7Ci0KLWNs
YXNzIEluc3BlY3RvckNsaWVudEVmbCA6IHB1YmxpYyBJbnNwZWN0b3JDbGllbnQsIHB1YmxpYyBJ
bnNwZWN0b3JGcm9udGVuZENoYW5uZWwgewotcHVibGljOgotICAgIGV4cGxpY2l0IEluc3BlY3Rv
ckNsaWVudEVmbChFdmFzX09iamVjdCopOwotICAgIH5JbnNwZWN0b3JDbGllbnRFZmwoKTsKLQot
ICAgIHZpcnR1YWwgdm9pZCBpbnNwZWN0b3JEZXN0cm95ZWQoKTsKLQotICAgIHZpcnR1YWwgSW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsKiBvcGVuSW5zcGVjdG9yRnJvbnRlbmQoSW5zcGVjdG9yQ29u
dHJvbGxlciopOwotICAgIHZpcnR1YWwgdm9pZCBjbG9zZUluc3BlY3RvckZyb250ZW5kKCk7Ci0g
ICAgdmlydHVhbCB2b2lkIGJyaW5nRnJvbnRlbmRUb0Zyb250KCk7Ci0KLSAgICB2aXJ0dWFsIHZv
aWQgaGlnaGxpZ2h0KCk7Ci0gICAgdmlydHVhbCB2b2lkIGhpZGVIaWdobGlnaHQoKTsKLQotICAg
IHZpcnR1YWwgYm9vbCBzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJik7Ci0KLSAg
ICB2b2lkIHJlbGVhc2VGcm9udGVuZFBhZ2UoKTsKLSAgICBTdHJpbmcgaW5zcGVjdG9yRmlsZXNQ
YXRoKCk7Ci0KLXByaXZhdGU6Ci0gICAgRXZhc19PYmplY3QqIG1faW5zcGVjdGVkVmlldzsKLSAg
ICBFdmFzX09iamVjdCogbV9pbnNwZWN0b3JWaWV3OwotICAgIEluc3BlY3RvckZyb250ZW5kQ2xp
ZW50RWZsKiBtX2Zyb250ZW5kQ2xpZW50OwotfTsKLQotY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnRFZmwgOiBwdWJsaWMgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbCB7Ci1wdWJsaWM6
Ci0gICAgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRFZmwoRXZhc19PYmplY3QqLCBFdmFzX09iamVj
dCosIEluc3BlY3RvckNsaWVudEVmbCopOwotICAgIH5JbnNwZWN0b3JGcm9udGVuZENsaWVudEVm
bCgpOwotCi0gICAgdmlydHVhbCBTdHJpbmcgbG9jYWxpemVkU3RyaW5nc1VSTCgpOwotCi0gICAg
dmlydHVhbCB2b2lkIGJyaW5nVG9Gcm9udCgpOwotICAgIHZpcnR1YWwgdm9pZCBjbG9zZVdpbmRv
dygpOwotCi0gICAgdmlydHVhbCB2b2lkIGluc3BlY3RlZFVSTENoYW5nZWQoY29uc3QgU3RyaW5n
Jik7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoV2luZG93KERvY2tTaWRlKTsKLSAgICB2aXJ0
dWFsIHZvaWQgZGV0YWNoV2luZG93KCk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0QXR0YWNoZWRX
aW5kb3dIZWlnaHQodW5zaWduZWQpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRBdHRhY2hlZFdpbmRv
d1dpZHRoKHVuc2lnbmVkKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VG9vbGJhckhlaWdodCh1bnNp
Z25lZCkgb3ZlcnJpZGU7Ci0KLSAgICB2b2lkIGRpc2Nvbm5lY3RJbnNwZWN0b3JDbGllbnQoKSB7
IG1faW5zcGVjdG9yQ2xpZW50ID0gMDsgfQotICAgIHZvaWQgZGVzdHJveUluc3BlY3RvcldpbmRv
dyhib29sIG5vdGlmeUluc3BlY3RvckNvbnRyb2xsZXIpOwotCi1wcml2YXRlOgotICAgIEV2YXNf
T2JqZWN0KiBtX2luc3BlY3RlZFZpZXc7Ci0gICAgRXZhc19PYmplY3QqIG1faW5zcGVjdG9yVmll
dzsKLSAgICBJbnNwZWN0b3JDbGllbnRFZmwqIG1faW5zcGVjdG9yQ2xpZW50OwotCi19OwotfQot
Ci0jZW5kaWYKLSNlbmRpZiAvLyBJbnNwZWN0b3JDbGllbnRFZmxfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvTmF2aWdhdG9yQ29udGVudFV0aWxzQ2xpZW50
RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L05hdmlnYXRvckNvbnRl
bnRVdGlsc0NsaWVudEVmbC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ0ZGEy
ZjMuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvTmF2aWdh
dG9yQ29udGVudFV0aWxzQ2xpZW50RWZsLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDkwICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcwotICoKLSAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJOYXZpZ2F0b3JDb250ZW50
VXRpbHNDbGllbnRFZmwuaCIKLQotI2lmIEVOQUJMRShOQVZJR0FUT1JfQ09OVEVOVF9VVElMUykK
LQotI2luY2x1ZGUgImV3a19jdXN0b21faGFuZGxlcl9wcml2YXRlLmgiCi0jaW5jbHVkZSA8d3Rm
L3RleHQvQ1N0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0YXRpYyBFd2tfQ3Vz
dG9tX0hhbmRsZXJfRGF0YSogY3VzdG9tSGFuZGxlckRhdGFDcmVhdGUoRXZhc19PYmplY3QqIGV3
a1ZpZXcsIGNvbnN0IGNoYXIqIHNjaGVtZSwgY29uc3QgY2hhciogYmFzZVVSTCwgY29uc3QgY2hh
ciogdXJsKQotewotICAgIEV3a19DdXN0b21fSGFuZGxlcl9EYXRhKiBkYXRhID0gbmV3IEV3a19D
dXN0b21fSGFuZGxlcl9EYXRhOwotICAgIGRhdGEtPmV3a1ZpZXcgPSBld2tWaWV3OwotICAgIGRh
dGEtPnNjaGVtZSA9IGVpbmFfc3RyaW5nc2hhcmVfYWRkKHNjaGVtZSk7Ci0gICAgZGF0YS0+YmFz
ZV91cmwgPSBlaW5hX3N0cmluZ3NoYXJlX2FkZChiYXNlVVJMKTsKLSAgICBkYXRhLT51cmwgPSBl
aW5hX3N0cmluZ3NoYXJlX2FkZCh1cmwpOwotICAgIHJldHVybiBkYXRhOwotfQotCi1zdGF0aWMg
dm9pZCBjdXN0b21IYW5kbGVyRGF0YURlbGV0ZShFd2tfQ3VzdG9tX0hhbmRsZXJfRGF0YSogZGF0
YSkKLXsKLSAgICBlaW5hX3N0cmluZ3NoYXJlX2RlbChkYXRhLT5zY2hlbWUpOwotICAgIGVpbmFf
c3RyaW5nc2hhcmVfZGVsKGRhdGEtPmJhc2VfdXJsKTsKLSAgICBlaW5hX3N0cmluZ3NoYXJlX2Rl
bChkYXRhLT51cmwpOwotICAgIGRlbGV0ZSBkYXRhOwotfQotCi1OYXZpZ2F0b3JDb250ZW50VXRp
bHNDbGllbnRFZmw6Ok5hdmlnYXRvckNvbnRlbnRVdGlsc0NsaWVudEVmbChFdmFzX09iamVjdCog
dmlldykKLSAgICA6IG1fdmlldyh2aWV3KQotewotfQotCi12b2lkIE5hdmlnYXRvckNvbnRlbnRV
dGlsc0NsaWVudEVmbDo6cmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIoY29uc3QgU3RyaW5nJiBzY2hl
bWUsIGNvbnN0IFVSTCYgYmFzZVVSTCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0
bGUpCi17Ci0gICAgRXdrX0N1c3RvbV9IYW5kbGVyX0RhdGEqIGRhdGEgPSBjdXN0b21IYW5kbGVy
RGF0YUNyZWF0ZShtX3ZpZXcsIHNjaGVtZS51dGY4KCkuZGF0YSgpLCBiYXNlVVJMLnN0cmluZygp
LnV0ZjgoKS5kYXRhKCksIHVybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAgICBkYXRhLT50
aXRsZSA9IGVpbmFfc3RyaW5nc2hhcmVfYWRkKHRpdGxlLnV0ZjgoKS5kYXRhKCkpOwotICAgIGV3
a19jdXN0b21faGFuZGxlcl9yZWdpc3Rlcl9wcm90b2NvbF9oYW5kbGVyKGRhdGEpOwotICAgIGVp
bmFfc3RyaW5nc2hhcmVfZGVsKGRhdGEtPnRpdGxlKTsKLSAgICBjdXN0b21IYW5kbGVyRGF0YURl
bGV0ZShkYXRhKTsKLX0KLQotI2lmIEVOQUJMRShDVVNUT01fU0NIRU1FX0hBTkRMRVIpCi1OYXZp
Z2F0b3JDb250ZW50VXRpbHNDbGllbnQ6OkN1c3RvbUhhbmRsZXJzU3RhdGUgTmF2aWdhdG9yQ29u
dGVudFV0aWxzQ2xpZW50RWZsOjppc1Byb3RvY29sSGFuZGxlclJlZ2lzdGVyZWQoY29uc3QgU3Ry
aW5nJiBzY2hlbWUsIGNvbnN0IFVSTCYgYmFzZVVSTCwgY29uc3QgVVJMJiB1cmwpCi17Ci0gICAg
RXdrX0N1c3RvbV9IYW5kbGVyX0RhdGEqIGRhdGEgPSBjdXN0b21IYW5kbGVyRGF0YUNyZWF0ZSht
X3ZpZXcsIHNjaGVtZS51dGY4KCkuZGF0YSgpLCBiYXNlVVJMLnN0cmluZygpLnV0ZjgoKS5kYXRh
KCksIHVybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAgICBOYXZpZ2F0b3JDb250ZW50VXRp
bHNDbGllbnQ6OkN1c3RvbUhhbmRsZXJzU3RhdGUgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8Q3VzdG9t
SGFuZGxlcnNTdGF0ZT4oZXdrX2N1c3RvbV9oYW5kbGVyX3JlZ2lzdGVyX3Byb3RvY29sX2hhbmRs
ZXIoZGF0YSkpOwotICAgIGN1c3RvbUhhbmRsZXJEYXRhRGVsZXRlKGRhdGEpOwotCi0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLQotdm9pZCBOYXZpZ2F0b3JDb250ZW50VXRpbHNDbGllbnRFZmw6OnVu
cmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIoY29uc3QgU3RyaW5nJiBzY2hlbWUsIGNvbnN0IFVSTCYg
YmFzZVVSTCwgY29uc3QgVVJMJiB1cmwpCi17Ci0gICAgRXdrX0N1c3RvbV9IYW5kbGVyX0RhdGEq
IGRhdGEgPSBjdXN0b21IYW5kbGVyRGF0YUNyZWF0ZShtX3ZpZXcsIHNjaGVtZS51dGY4KCkuZGF0
YSgpLCBiYXNlVVJMLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIHVybC5zdHJpbmcoKS51dGY4KCku
ZGF0YSgpKTsKLSAgICBld2tfY3VzdG9tX2hhbmRsZXJfcmVnaXN0ZXJfcHJvdG9jb2xfaGFuZGxl
cihkYXRhKTsKLSAgICBjdXN0b21IYW5kbGVyRGF0YURlbGV0ZShkYXRhKTsKLX0KLSNlbmRpZgot
Ci19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoTkFWSUdBVE9SX0NPTlRFTlRfVVRJTFMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9OYXZpZ2F0b3JDb250ZW50VXRp
bHNDbGllbnRFZmwuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L05hdmlnYXRv
ckNvbnRlbnRVdGlsc0NsaWVudEVmbC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBl
YjQ4YjFiLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L05h
dmlnYXRvckNvbnRlbnRVdGlsc0NsaWVudEVmbC5oCisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCi0gKgot
ICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0g
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2lmbmRlZiBOYXZpZ2F0b3JDb250ZW50VXRpbHNDbGllbnRFZmxfaAotI2Rl
ZmluZSBOYXZpZ2F0b3JDb250ZW50VXRpbHNDbGllbnRFZmxfaAotCi0jaWYgRU5BQkxFKE5BVklH
QVRPUl9DT05URU5UX1VUSUxTKQotI2luY2x1ZGUgIk5hdmlnYXRvckNvbnRlbnRVdGlsc0NsaWVu
dC5oIgotCi0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotY2xhc3MgTmF2aWdhdG9yQ29udGVudFV0aWxzQ2xpZW50RWZsIDogcHVibGljIFdlYkNvcmU6
Ok5hdmlnYXRvckNvbnRlbnRVdGlsc0NsaWVudCB7Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQgTmF2
aWdhdG9yQ29udGVudFV0aWxzQ2xpZW50RWZsKEV2YXNfT2JqZWN0KiB2aWV3KTsKLQotICAgIH5O
YXZpZ2F0b3JDb250ZW50VXRpbHNDbGllbnRFZmwoKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcmVn
aXN0ZXJQcm90b2NvbEhhbmRsZXIoY29uc3QgU3RyaW5nJiBzY2hlbWUsIGNvbnN0IFVSTCYgYmFz
ZVVSTCwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiB0aXRsZSk7Ci0KLSNpZiBFTkFCTEUoQ1VT
VE9NX1NDSEVNRV9IQU5ETEVSKQotICAgIHZpcnR1YWwgQ3VzdG9tSGFuZGxlcnNTdGF0ZSBpc1By
b3RvY29sSGFuZGxlclJlZ2lzdGVyZWQoY29uc3QgU3RyaW5nJiBzY2hlbWUsIGNvbnN0IFVSTCYg
YmFzZVVSTCwgY29uc3QgVVJMJik7Ci0gICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJQcm90b2Nv
bEhhbmRsZXIoY29uc3QgU3RyaW5nJiBzY2hlbWUsIGNvbnN0IFVSTCYgYmFzZVVSTCwgY29uc3Qg
VVJMJik7Ci0jZW5kaWYKLQotcHJpdmF0ZToKLSAgICBFdmFzX09iamVjdCogbV92aWV3OwotfTsK
LX0KLQotI2VuZGlmCi0jZW5kaWYgLy8gTmF2aWdhdG9yQ29udGVudFV0aWxzQ2xpZW50RWZsX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L05vdGlmaWNhdGlv
blByZXNlbnRlckNsaWVudEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9y
dC9Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBjNGU1Y2E4Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNv
cmVTdXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbC5jcHAKKysrIC9kZXYvbnVs
bApAQCAtMSw3NCArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAoQykgMjAxMSBTYW1zdW5nIEVs
ZWN0cm9uaWNzCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAq
Ci0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSwgVVNBLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJOb3Rp
ZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwuaCIKLQotI2lmIEVOQUJMRShOT1RJRklDQVRJT05T
KSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCi0jaW5jbHVkZSAiTm90SW1wbGVtZW50
ZWQuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGll
bnRFZmw6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbCgpCi17Ci19Ci0KLU5vdGlmaWNh
dGlvblByZXNlbnRlckNsaWVudEVmbDo6fk5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbCgp
Ci17Ci19Ci0KLWJvb2wgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpzaG93KE5vdGlm
aWNhdGlvbiogbm90aWZpY2F0aW9uKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0
dXJuIGZhbHNlOwotfQotCi12b2lkIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6Y2Fu
Y2VsKE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7
Ci19Ci0KLXZvaWQgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpub3RpZmljYXRpb25P
YmplY3REZXN0cm95ZWQoTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24pCi17Ci0gICAgbm90SW1w
bGVtZW50ZWQoKTsKLX0KLQotdm9pZCBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6Om5v
dGlmaWNhdGlvbkNvbnRyb2xsZXJEZXN0cm95ZWQoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7
Ci19Ci0KLXZvaWQgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpyZXF1ZXN0UGVybWlz
c2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPFZvaWRDYWxs
YmFjaz4gY2FsbGJhY2spCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotTm90aWZpY2F0
aW9uQ2xpZW50OjpQZXJtaXNzaW9uIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6Y2hl
Y2tQZXJtaXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCi17Ci0gICAgbm90
SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gUGVybWlzc2lvbkRlbmllZDsKLX0KLQotdm9pZCBO
b3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6OmNhbmNlbFJlcXVlc3RzRm9yUGVybWlzc2lv
bihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQotewotICAgIG5vdEltcGxlbWVudGVk
KCk7Ci19Ci0KLX0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29y
ZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsLmggYi9Tb3VyY2UvV2ViS2l0
L2VmbC9XZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWNlNWNjZi4uMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwu
aAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IChDKSAy
MDExIFNhbXN1bmcgRWxlY3Ryb25pY3MKLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0g
KiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiAg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICog
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKLSAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiAg
Qm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2lmbmRlZiBOb3RpZmljYXRpb25Q
cmVzZW50ZXJDbGllbnRFZmxfaAotI2RlZmluZSBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRF
ZmxfaAotCi0jaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJ
Q0FUSU9OUykKLSNpbmNsdWRlICJOb3RpZmljYXRpb24uaCIKLSNpbmNsdWRlICJOb3RpZmljYXRp
b25DbGllbnQuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBOb3RpZmljYXRpb25Q
cmVzZW50ZXJDbGllbnRFZmwgOiBwdWJsaWMgTm90aWZpY2F0aW9uQ2xpZW50IHsKLQotcHVibGlj
OgotICAgIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbCgpOwotICAgIH5Ob3RpZmljYXRp
b25QcmVzZW50ZXJDbGllbnRFZmwoKTsKLQotICAgIHZpcnR1YWwgYm9vbCBzaG93KE5vdGlmaWNh
dGlvbiopOwotICAgIHZpcnR1YWwgdm9pZCBjYW5jZWwoTm90aWZpY2F0aW9uKik7Ci0gICAgdmly
dHVhbCB2b2lkIG5vdGlmaWNhdGlvbk9iamVjdERlc3Ryb3llZChOb3RpZmljYXRpb24qKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgbm90aWZpY2F0aW9uQ29udHJvbGxlckRlc3Ryb3llZCgpOwotICAgIHZp
cnR1YWwgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFz
c1JlZlB0cjxWb2lkQ2FsbGJhY2s+KTsKLSAgICB2aXJ0dWFsIE5vdGlmaWNhdGlvbkNsaWVudDo6
UGVybWlzc2lvbiBjaGVja1Blcm1pc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwotICAg
IHZpcnR1YWwgdm9pZCBjYW5jZWxSZXF1ZXN0c0ZvclBlcm1pc3Npb24oU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCopOwotfTsKLQotfQotI2VuZGlmCi0jZW5kaWYgLy8gTm90aWZpY2F0aW9uUHJlc2Vu
dGVyQ2xpZW50RWZsX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBw
b3J0L1BsYXRmb3JtU3RyYXRlZ2llc0VmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3Jl
U3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNFZmwuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBlNDRkZmE0Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVT
dXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0VmbC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNTMg
KzAsMCBAQAotLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcgQXBwbGUgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAgICBDb3B5cmlnaHQgKEMpIDIwMDggVHJvbGx0ZWNoIEFTQQot
ICAgIENvcHlyaWdodCAoQykgMjAwOCBDb2xsYWJvcmEgTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICAgIENvcHlyaWdodCAoQykgMjAwOCBJTmRUIC0gSW5zdGl0dXRvIE5va2lhIGRlIFRlY25v
bG9naWEKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBQcm9GVVNJT04gZW1iZWRkZWQgc3lz
dGVtcwotICAgIENvcHlyaWdodCAoQykgMjAwOS0yMDExIFNhbXN1bmcgRWxlY3Ryb25pY3MKLSAg
ICBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24KLQotICAgIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAgICBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YwotICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgotICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLQotICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gICAgTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKLSAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KLQotICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICAgIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCi0gICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0qLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1TdHJhdGVnaWVzRWZsLmgiCi0KLSNpbmNsdWRlICJO
b3RJbXBsZW1lbnRlZC5oIgotI2luY2x1ZGUgIlBhZ2UuaCIKLSNpbmNsdWRlICJQYWdlR3JvdXAu
aCIKLSNpbmNsdWRlICJQbGF0Zm9ybUNvb2tpZUphci5oIgotI2luY2x1ZGUgIlBsdWdpbkRhdGFi
YXNlLmgiCi0jaW5jbHVkZSAiUGx1Z2luUGFja2FnZS5oIgotCi11c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKLQotdm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6OmluaXRpYWxpemUoKQotewotICAg
IERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChQbGF0Zm9ybVN0cmF0ZWdpZXNFZmwsIHBs
YXRmb3JtU3RyYXRlZ2llcywgKCkpOwotICAgIHNldFBsYXRmb3JtU3RyYXRlZ2llcygmcGxhdGZv
cm1TdHJhdGVnaWVzKTsKLX0KLQotUGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpQbGF0Zm9ybVN0cmF0
ZWdpZXNFZmwoKQotewotfQotCi1Db29raWVzU3RyYXRlZ3kqIFBsYXRmb3JtU3RyYXRlZ2llc0Vm
bDo6Y3JlYXRlQ29va2llc1N0cmF0ZWd5KCkKLXsKLSAgICByZXR1cm4gdGhpczsKLX0KLQotRGF0
YWJhc2VTdHJhdGVneSogUGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpjcmVhdGVEYXRhYmFzZVN0cmF0
ZWd5KCkKLXsKLSAgICByZXR1cm4gdGhpczsKLX0KLQotTG9hZGVyU3RyYXRlZ3kqIFBsYXRmb3Jt
U3RyYXRlZ2llc0VmbDo6Y3JlYXRlTG9hZGVyU3RyYXRlZ3koKQotewotICAgIHJldHVybiB0aGlz
OwotfQotCi1QYXN0ZWJvYXJkU3RyYXRlZ3kqIFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6Y3JlYXRl
UGFzdGVib2FyZFN0cmF0ZWd5KCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVy
biAwOwotfQotCi1QbHVnaW5TdHJhdGVneSogUGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpjcmVhdGVQ
bHVnaW5TdHJhdGVneSgpCi17Ci0gICAgcmV0dXJuIHRoaXM7Ci19Ci0KLVNoYXJlZFdvcmtlclN0
cmF0ZWd5KiBQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6OmNyZWF0ZVNoYXJlZFdvcmtlclN0cmF0ZWd5
KCkKLXsKLSAgICByZXR1cm4gdGhpczsKLX0KLQotU3RvcmFnZVN0cmF0ZWd5KiBQbGF0Zm9ybVN0
cmF0ZWdpZXNFZmw6OmNyZWF0ZVN0b3JhZ2VTdHJhdGVneSgpCi17Ci0gICAgcmV0dXJuIHRoaXM7
Ci19Ci0KLS8vIENvb2tpZXNTdHJhdGVneQotU3RyaW5nIFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6
Y29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0
IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwpCi17Ci0gICAgcmV0dXJuIFdlYkNvcmU6
OmNvb2tpZXNGb3JET00oc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsKLX0KLQotdm9pZCBQbGF0
Zm9ybVN0cmF0ZWdpZXNFZmw6OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpCi17Ci0gICAgV2ViQ29yZTo6c2V0Q29va2llc0Zy
b21ET00oc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsLCBjb29raWVTdHJpbmcpOwotfQotCi1ib29s
IFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6Y29va2llc0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYgdXJs
KQotewotICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRW5hYmxlZChzZXNzaW9uLCBmaXJzdFBh
cnR5LCB1cmwpOwotfQotCi1TdHJpbmcgUGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpjb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24s
IGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwpCi17Ci0gICAgcmV0dXJuIFdl
YkNvcmU6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKHNlc3Npb24sIGZpcnN0UGFydHks
IHVybCk7Ci19Ci0KLWJvb2wgUGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpnZXRSYXdDb29raWVzKGNv
bnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCi17Ci0gICAgcmV0
dXJuIFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsLCByYXdD
b29raWVzKTsKLX0KLQotdm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6OmRlbGV0ZUNvb2tpZShj
b25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIGNvb2tpZU5hbWUpCi17Ci0gICAgV2ViQ29yZTo6ZGVsZXRlQ29va2llKHNlc3Np
b24sIHVybCwgY29va2llTmFtZSk7Ci19Ci0KLXZvaWQgUGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpy
ZWZyZXNoUGx1Z2lucygpCi17Ci0jaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCi0gICAg
UGx1Z2luRGF0YWJhc2U6Omluc3RhbGxlZFBsdWdpbnMoKS0+cmVmcmVzaCgpOwotI2VuZGlmCi19
Ci0KLXZvaWQgUGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpnZXRQbHVnaW5JbmZvKGNvbnN0IFBhZ2Uq
LCBWZWN0b3I8UGx1Z2luSW5mbz4mIG91dFBsdWdpbnMpCi17Ci0jaWYgRU5BQkxFKE5FVFNDQVBF
X1BMVUdJTl9BUEkpCi0gICAgUGx1Z2luRGF0YWJhc2U6Omluc3RhbGxlZFBsdWdpbnMoKS0+cmVm
cmVzaCgpOwotICAgIGNvbnN0IFZlY3RvcjxQbHVnaW5QYWNrYWdlKj4mIHBsdWdpbnMgPSBQbHVn
aW5EYXRhYmFzZTo6aW5zdGFsbGVkUGx1Z2lucygpLT5wbHVnaW5zKCk7Ci0gICAgb3V0UGx1Z2lu
cy5yZXNpemUocGx1Z2lucy5zaXplKCkpOwotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBw
bHVnaW5zLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIFBsdWdpblBhY2thZ2UqIHBhY2thZ2UgPSBw
bHVnaW5zW2ldOwotCi0gICAgICAgIFBsdWdpbkluZm8gcGx1Z2luSW5mbzsKLSAgICAgICAgcGx1
Z2luSW5mby5uYW1lID0gcGFja2FnZS0+bmFtZSgpOwotICAgICAgICBwbHVnaW5JbmZvLmZpbGUg
PSBwYWNrYWdlLT5maWxlTmFtZSgpOwotICAgICAgICBwbHVnaW5JbmZvLmRlc2MgPSBwYWNrYWdl
LT5kZXNjcmlwdGlvbigpOwotCi0gICAgICAgIGNvbnN0IE1JTUVUb0Rlc2NyaXB0aW9uc01hcCYg
bWltZVRvRGVzY3JpcHRpb25zID0gcGFja2FnZS0+bWltZVRvRGVzY3JpcHRpb25zKCk7Ci0gICAg
ICAgIE1JTUVUb0Rlc2NyaXB0aW9uc01hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbWltZVRvRGVz
Y3JpcHRpb25zLmVuZCgpOwotICAgICAgICBmb3IgKE1JTUVUb0Rlc2NyaXB0aW9uc01hcDo6Y29u
c3RfaXRlcmF0b3IgaXQgPSBtaW1lVG9EZXNjcmlwdGlvbnMuYmVnaW4oKTsgaXQgIT0gZW5kOyAr
K2l0KSB7Ci0gICAgICAgICAgICBNaW1lQ2xhc3NJbmZvIG1pbWU7Ci0KLSAgICAgICAgICAgIG1p
bWUudHlwZSA9IGl0LT5rZXk7Ci0gICAgICAgICAgICBtaW1lLmRlc2MgPSBpdC0+dmFsdWU7Ci0g
ICAgICAgICAgICBtaW1lLmV4dGVuc2lvbnMgPSBwYWNrYWdlLT5taW1lVG9FeHRlbnNpb25zKCku
Z2V0KG1pbWUudHlwZSk7Ci0gICAgICAgICAgICBwbHVnaW5JbmZvLm1pbWVzLmFwcGVuZChtaW1l
KTsKLSAgICAgICAgfQotCi0gICAgICAgIG91dFBsdWdpbnMuYXBwZW5kKHBsdWdpbkluZm8pOwot
ICAgIH0KLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKG91dFBsdWdpbnMpOwotI2VuZGlmCi19CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0
ZWdpZXNFZmwuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3Ry
YXRlZ2llc0VmbC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NzM3YTRmLi4wMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRl
Z2llc0VmbC5oCisrKyAvZGV2L251bGwKQEAgLTEsNjQgKzAsMCBAQAotLyoKLSAgICBDb3B5cmln
aHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24KLQotICAgIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAgICBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICAgIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
cgotICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KLQotICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gICAgTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAg
ICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLQotICAg
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKLSAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICAgIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gICAg
Qm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0qLwotCi0jaWZuZGVmIFBsYXRmb3JtU3RyYXRl
Z2llc0VmbF9oCi0jZGVmaW5lIFBsYXRmb3JtU3RyYXRlZ2llc0VmbF9oCi0KLSNpbmNsdWRlICJD
b29raWVzU3RyYXRlZ3kuaCIKLSNpbmNsdWRlICJEYXRhYmFzZVN0cmF0ZWd5LmgiCi0jaW5jbHVk
ZSAiTG9hZGVyU3RyYXRlZ3kuaCIKLSNpbmNsdWRlICJQYXN0ZWJvYXJkU3RyYXRlZ3kuaCIKLSNp
bmNsdWRlICJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCIKLSNpbmNsdWRlICJQbHVnaW5TdHJhdGVneS5o
IgotI2luY2x1ZGUgIlNoYXJlZFdvcmtlclN0cmF0ZWd5LmgiCi0jaW5jbHVkZSAiU3RvcmFnZVN0
cmF0ZWd5LmgiCi0KLWNsYXNzIFBsYXRmb3JtU3RyYXRlZ2llc0VmbCA6IHB1YmxpYyBXZWJDb3Jl
OjpQbGF0Zm9ybVN0cmF0ZWdpZXMsIHByaXZhdGUgV2ViQ29yZTo6Q29va2llc1N0cmF0ZWd5LCBw
cml2YXRlIFdlYkNvcmU6OkRhdGFiYXNlU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6TG9hZGVy
U3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6UGx1Z2luU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29y
ZTo6U2hhcmVkV29ya2VyU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6U3RvcmFnZVN0cmF0ZWd5
IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplKCk7Ci0KLXByaXZhdGU6Ci0g
ICAgUGxhdGZvcm1TdHJhdGVnaWVzRWZsKCk7Ci0KLSAgICAvLyBXZWJDb3JlOjpQbGF0Zm9ybVN0
cmF0ZWdpZXMKLSAgICB2aXJ0dWFsIFdlYkNvcmU6OkNvb2tpZXNTdHJhdGVneSogY3JlYXRlQ29v
a2llc1N0cmF0ZWd5KCk7Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpEYXRhYmFzZVN0cmF0ZWd5KiBj
cmVhdGVEYXRhYmFzZVN0cmF0ZWd5KCk7Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpMb2FkZXJTdHJh
dGVneSogY3JlYXRlTG9hZGVyU3RyYXRlZ3koKTsKLSAgICB2aXJ0dWFsIFdlYkNvcmU6OlBhc3Rl
Ym9hcmRTdHJhdGVneSogY3JlYXRlUGFzdGVib2FyZFN0cmF0ZWd5KCk7Ci0gICAgdmlydHVhbCBX
ZWJDb3JlOjpQbHVnaW5TdHJhdGVneSogY3JlYXRlUGx1Z2luU3RyYXRlZ3koKTsKLSAgICB2aXJ0
dWFsIFdlYkNvcmU6OlNoYXJlZFdvcmtlclN0cmF0ZWd5KiBjcmVhdGVTaGFyZWRXb3JrZXJTdHJh
dGVneSgpOwotICAgIHZpcnR1YWwgV2ViQ29yZTo6U3RvcmFnZVN0cmF0ZWd5KiBjcmVhdGVTdG9y
YWdlU3RyYXRlZ3koKTsKLQotICAgIC8vIFdlYkNvcmU6OkNvb2tpZXNTdHJhdGVneQotICAgIHZp
cnR1YWwgU3RyaW5nIGNvb2tpZXNGb3JET00oY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpV
UkwmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgV2ViQ29yZTo6
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBTdHJpbmcmKTsKLSAgICB2aXJ0dWFsIGJvb2wgY29v
a2llc0VuYWJsZWQoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3Qg
V2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpVUkwmKTsKLSAgICB2aXJ0
dWFsIFN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBXZWJDb3JlOjpO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFdlYkNvcmU6OlVSTCYpOwotICAgIHZpcnR1YWwgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0
IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmly
c3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJMJiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKTsK
LSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFN0cmluZyYpOwotCi0gICAg
Ly8gV2ViQ29yZTo6RGF0YWJhc2VTdHJhdGVneQotICAgIC8vIC0gVXNpbmcgZGVmYXVsdCBpbXBs
ZW1lbnRhdGlvbi4KLQotICAgIC8vIFdlYkNvcmU6OlBsdWdpblN0cmF0ZWd5Ci0gICAgdmlydHVh
bCB2b2lkIHJlZnJlc2hQbHVnaW5zKCk7Ci0gICAgdmlydHVhbCB2b2lkIGdldFBsdWdpbkluZm8o
Y29uc3QgV2ViQ29yZTo6UGFnZSosIFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiYpOwotfTsK
LQotI2VuZGlmIC8vIFBsYXRmb3JtU3RyYXRlZ2llc0VmbF9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9Qb3B1cE1lbnVFZmwuY3BwIGIvU291cmNlL1dlYktp
dC9lZmwvV2ViQ29yZVN1cHBvcnQvUG9wdXBNZW51RWZsLmNwcApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggYzRkZDk5Mi4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJD
b3JlU3VwcG9ydC9Qb3B1cE1lbnVFZmwuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNzggKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggSU5kVCAtIEluc3RpdHV0byBOb2tpYSBk
ZSBUZWNub2xvZ2lhCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBQcm9GVVNJT04gZW1iZWRk
ZWQgc3lzdGVtcwotICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgU2Ftc3VuZyBFbGVjdHJvbmlj
cwotICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vi
c2lkaWFyeSgtaWVzKS4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0g
KgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
LSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCi0gKgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJQb3B1cE1l
bnVFZmwuaCIKLQotI2luY2x1ZGUgIkNocm9tZS5oIgotI2luY2x1ZGUgIkNocm9tZUNsaWVudEVm
bC5oIgotI2luY2x1ZGUgIkZyYW1lLmgiCi0jaW5jbHVkZSAiRnJhbWVWaWV3LmgiCi0jaW5jbHVk
ZSAiUGFnZS5oIgotI2luY2x1ZGUgIlBvcHVwTWVudUNsaWVudC5oIgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLVBvcHVwTWVudUVmbDo6UG9wdXBNZW51RWZsKFBvcHVwTWVudUNsaWVudCogY2xp
ZW50KQotICAgIDogbV9wb3B1cENsaWVudChjbGllbnQpCi0gICAgLCBtX3ZpZXcoMCkKLXsKLX0K
LQotUG9wdXBNZW51RWZsOjp+UG9wdXBNZW51RWZsKCkKLXsKLSAgICAvLyBUZWxsIGNsaWVudCB0
byBkZXN0cm95IGRhdGEgcmVsYXRlZCB0byB0aGlzIHBvcHVwIHNpbmNlIHRoaXMgb2JqZWN0IGlz
Ci0gICAgLy8gZ29pbmcgYXdheS4KLSAgICBpZiAobV92aWV3KQotICAgICAgICBoaWRlKCk7Ci19
Ci0KLXZvaWQgUG9wdXBNZW51RWZsOjpzaG93KGNvbnN0IEludFJlY3QmIHJlY3QsIEZyYW1lVmll
dyogdmlldywgaW50IGluZGV4KQotewotICAgIEFTU0VSVChtX3BvcHVwQ2xpZW50KTsKLSAgICBD
aHJvbWVDbGllbnRFZmwmIGNocm9tZUNsaWVudCA9IHN0YXRpY19jYXN0PENocm9tZUNsaWVudEVm
bCY+KHZpZXctPmZyYW1lKCkucGFnZSgpLT5jaHJvbWUoKS5jbGllbnQoKSk7Ci0KLSAgICBtX3Zp
ZXcgPSB2aWV3OwotICAgIGNocm9tZUNsaWVudC5jcmVhdGVTZWxlY3RQb3B1cChtX3BvcHVwQ2xp
ZW50LCBpbmRleCwgcmVjdCk7Ci19Ci0KLXZvaWQgUG9wdXBNZW51RWZsOjpoaWRlKCkKLXsKLSAg
ICBBU1NFUlQobV92aWV3KTsKLSAgICBDaHJvbWVDbGllbnRFZmwmIGNocm9tZUNsaWVudCA9IHN0
YXRpY19jYXN0PENocm9tZUNsaWVudEVmbCY+KG1fdmlldy0+ZnJhbWUoKS5wYWdlKCktPmNocm9t
ZSgpLmNsaWVudCgpKTsKLQotICAgIGNocm9tZUNsaWVudC5kZXN0cm95U2VsZWN0UG9wdXAoKTsK
LX0KLQotdm9pZCBQb3B1cE1lbnVFZmw6OnVwZGF0ZUZyb21FbGVtZW50KCkKLXsKLSAgICBjbGll
bnQoKS0+c2V0VGV4dEZyb21JdGVtKGNsaWVudCgpLT5zZWxlY3RlZEluZGV4KCkpOwotfQotCi12
b2lkIFBvcHVwTWVudUVmbDo6ZGlzY29ubmVjdENsaWVudCgpCi17Ci0gICAgbV9wb3B1cENsaWVu
dCA9IDA7Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBw
b3J0L1BvcHVwTWVudUVmbC5oIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvUG9w
dXBNZW51RWZsLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFhYjlkNTYuLjAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvUG9wdXBNZW51RWZsLmgK
KysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEw
IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KLSAqCi0gKiBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgot
ICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJy
YXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2lmbmRlZiBQ
b3B1cE1lbnVFZmxfaAotI2RlZmluZSBQb3B1cE1lbnVFZmxfaAotCi0jaW5jbHVkZSAiSW50UmVj
dC5oIgotI2luY2x1ZGUgIlBvcHVwTWVudS5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1j
bGFzcyBGcmFtZVZpZXc7Ci1jbGFzcyBTY3JvbGxiYXI7Ci1jbGFzcyBQb3B1cE1lbnVDbGllbnQ7
Ci0KLWNsYXNzIFBvcHVwTWVudUVmbCA6IHB1YmxpYyBQb3B1cE1lbnUgewotcHVibGljOgotICAg
IGV4cGxpY2l0IFBvcHVwTWVudUVmbChQb3B1cE1lbnVDbGllbnQqKTsKLSAgICB+UG9wdXBNZW51
RWZsKCk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgc2hvdyhjb25zdCBJbnRSZWN0JiwgRnJhbWVWaWV3
KiwgaW50IGluZGV4KTsKLSAgICB2aXJ0dWFsIHZvaWQgaGlkZSgpOwotICAgIHZpcnR1YWwgdm9p
ZCB1cGRhdGVGcm9tRWxlbWVudCgpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0Q2xpZW50
KCk7Ci0KLXByaXZhdGU6Ci0gICAgUG9wdXBNZW51Q2xpZW50KiBjbGllbnQoKSBjb25zdCB7IHJl
dHVybiBtX3BvcHVwQ2xpZW50OyB9Ci0KLSAgICBQb3B1cE1lbnVDbGllbnQqIG1fcG9wdXBDbGll
bnQ7Ci0gICAgRnJhbWVWaWV3KiBtX3ZpZXc7Ci19OwotCi19Ci0KLSNlbmRpZiAvLyBQb3B1cE1l
bnVFZmxfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvUHJv
Z3Jlc3NUcmFja2VyQ2xpZW50RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBw
b3J0L1Byb2dyZXNzVHJhY2tlckNsaWVudEVmbC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDczMWY0MmQuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1
cHBvcnQvUHJvZ3Jlc3NUcmFja2VyQ2xpZW50RWZsLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDYy
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgU2Ftc3VuZyBFbGVjdHJvbmljcwot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUHJvZ3Jlc3NUcmFja2Vy
Q2xpZW50RWZsLmgiCi0KLSNpbmNsdWRlICJGcmFtZS5oIgotI2luY2x1ZGUgIk5vdEltcGxlbWVu
dGVkLmgiCi0jaW5jbHVkZSAiZXdrX2ZyYW1lX3ByaXZhdGUuaCIKLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1Qcm9ncmVzc1RyYWNrZXJDbGllbnRFZmw6OlByb2dyZXNzVHJhY2tlckNsaWVudEVm
bChFdmFzX09iamVjdCogdmlldykKLSAgICA6IG1fdmlldyh2aWV3KQotewotICAgIEFTU0VSVCht
X3ZpZXcpOwotfQotICAgIAotdm9pZCBQcm9ncmVzc1RyYWNrZXJDbGllbnRFZmw6OnByb2dyZXNz
VHJhY2tlckRlc3Ryb3llZCgpCi17Ci0gICAgZGVsZXRlIHRoaXM7Ci19Ci0gICAgCi12b2lkIFBy
b2dyZXNzVHJhY2tlckNsaWVudEVmbDo6cHJvZ3Jlc3NTdGFydGVkKEZyYW1lJiBvcmlnaW5hdGlu
Z1Byb2dyZXNzRnJhbWUpCi17Ci0gICAgZXdrX2ZyYW1lX2xvYWRfc3RhcnRlZChFV0tQcml2YXRl
OjpraXRGcmFtZSgmb3JpZ2luYXRpbmdQcm9ncmVzc0ZyYW1lKSk7Ci0gICAgcHJvZ3Jlc3NFc3Rp
bWF0ZUNoYW5nZWQob3JpZ2luYXRpbmdQcm9ncmVzc0ZyYW1lKTsKLX0KLQotdm9pZCBQcm9ncmVz
c1RyYWNrZXJDbGllbnRFZmw6OnByb2dyZXNzRXN0aW1hdGVDaGFuZ2VkKEZyYW1lJiBvcmlnaW5h
dGluZ1Byb2dyZXNzRnJhbWUpCi17Ci0gICAgZXdrX2ZyYW1lX2xvYWRfcHJvZ3Jlc3NfY2hhbmdl
ZChFV0tQcml2YXRlOjpraXRGcmFtZSgmb3JpZ2luYXRpbmdQcm9ncmVzc0ZyYW1lKSk7Ci19Ci0K
LXZvaWQgUHJvZ3Jlc3NUcmFja2VyQ2xpZW50RWZsOjpwcm9ncmVzc0ZpbmlzaGVkKEZyYW1lJikK
LXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9Qcm9ncmVzc1RyYWNr
ZXJDbGllbnRFZmwuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L1Byb2dyZXNz
VHJhY2tlckNsaWVudEVmbC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NTdkYWIw
Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L1Byb2dyZXNz
VHJhY2tlckNsaWVudEVmbC5oCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNCBTYW1zdW5nIEVsZWN0cm9uaWNzCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5k
ZWYgUHJvZ3Jlc3NUcmFja2VyQ2xpZW50RWZsX2gKLSNkZWZpbmUgUHJvZ3Jlc3NUcmFja2VyQ2xp
ZW50RWZsX2gKLQotI2luY2x1ZGUgIlByb2dyZXNzVHJhY2tlckNsaWVudC5oIgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFByb2dyZXNzVHJhY2tlckNsaWVudEVmbCBmaW5hbCA6IHB1
YmxpYyBXZWJDb3JlOjpQcm9ncmVzc1RyYWNrZXJDbGllbnQgewotcHVibGljOgotICAgIGV4cGxp
Y2l0IFByb2dyZXNzVHJhY2tlckNsaWVudEVmbChFdmFzX09iamVjdCopOwotICAgIAotcHJpdmF0
ZToKLSAgICB2aXJ0dWFsIHZvaWQgcHJvZ3Jlc3NUcmFja2VyRGVzdHJveWVkKCkgb3ZlcnJpZGU7
Ci0KLSAgICB2aXJ0dWFsIHZvaWQgcHJvZ3Jlc3NTdGFydGVkKFdlYkNvcmU6OkZyYW1lJiBvcmln
aW5hdGluZ1Byb2dyZXNzRnJhbWUpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBwcm9ncmVz
c0VzdGltYXRlQ2hhbmdlZChXZWJDb3JlOjpGcmFtZSYgb3JpZ2luYXRpbmdQcm9ncmVzc0ZyYW1l
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcHJvZ3Jlc3NGaW5pc2hlZChXZWJDb3JlOjpG
cmFtZSYgb3JpZ2luYXRpbmdQcm9ncmVzc0ZyYW1lKSBvdmVycmlkZTsKLQotICAgIEV2YXNfT2Jq
ZWN0KiBtX3ZpZXc7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBQ
cm9ncmVzc1RyYWNrZXJDbGllbnRFZmxfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwv
V2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZs
L1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudUVmbC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDIwZWNiMDkuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2Vi
Q29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51RWZsLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDU2
ICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA4IElOZFQgLSBJbnN0aXR1dG8gTm9r
aWEgZGUgVGVjbm9sb2dpYQotICogIENvcHlyaWdodCAoQykgMjAwOS0yMDEwIFByb0ZVU0lPTiBl
bWJlZGRlZCBzeXN0ZW1zCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgU2Ftc3VuZyBFbGVj
dHJvbmljcwotICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBp
dHMgc3Vic2lkaWFyeSgtaWVzKS4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBMZXNz
ZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVi
bGljCi0gKiAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0
byB0aGUgRnJlZSBTb2Z0d2FyZQotICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0
cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQotICovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJTZWFyY2hQb3B1cE1lbnVFZmwuaCIKLQotI2lu
Y2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotU2VhcmNo
UG9wdXBNZW51RWZsOjpTZWFyY2hQb3B1cE1lbnVFZmwoUG9wdXBNZW51Q2xpZW50KiBjbGllbnQp
Ci0gICAgOiBtX3BvcHVwKGFkb3B0UmVmKG5ldyBQb3B1cE1lbnVFZmwoY2xpZW50KSkpCi17Ci0g
ICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotUG9wdXBNZW51KiBTZWFyY2hQb3B1cE1lbnVFZmw6
OnBvcHVwTWVudSgpCi17Ci0gICAgcmV0dXJuIG1fcG9wdXAuZ2V0KCk7Ci19Ci0KLXZvaWQgU2Vh
cmNoUG9wdXBNZW51RWZsOjpzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiwg
Y29uc3QgVmVjdG9yPFN0cmluZz4mKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZv
aWQgU2VhcmNoUG9wdXBNZW51RWZsOjpsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3Ry
aW5nJiwgVmVjdG9yPFN0cmluZz4mKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLWJv
b2wgU2VhcmNoUG9wdXBNZW51RWZsOjplbmFibGVkKCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgp
OwotICAgIHJldHVybiB0cnVlOwotfQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Vm
bC9XZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVFZmwuaCBiL1NvdXJjZS9XZWJLaXQvZWZs
L1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudUVmbC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA3ZWVjODRlLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNv
cmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudUVmbC5oCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3Ig
aXRzIHN1YnNpZGlhcnkoLWllcykuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcu
TElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSwgVVNBLgotICoKLSAqLwotCi0jaWZuZGVmIFNlYXJjaFBvcHVwTWVudUVmbF9oCi0j
ZGVmaW5lIFNlYXJjaFBvcHVwTWVudUVmbF9oCi0KLSNpbmNsdWRlICJQb3B1cE1lbnVFZmwuaCIK
LSNpbmNsdWRlICJTZWFyY2hQb3B1cE1lbnUuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1j
bGFzcyBTZWFyY2hQb3B1cE1lbnVFZmwgOiBwdWJsaWMgU2VhcmNoUG9wdXBNZW51IHsKLXB1Ymxp
YzoKLSAgICBleHBsaWNpdCBTZWFyY2hQb3B1cE1lbnVFZmwoUG9wdXBNZW51Q2xpZW50Kik7Ci0K
LSAgICB2aXJ0dWFsIFBvcHVwTWVudSogcG9wdXBNZW51KCk7Ci0gICAgdmlydHVhbCB2b2lkIHNh
dmVSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBzZWFyY2hJdGVtcyk7Ci0gICAgdmlydHVhbCB2b2lkIGxvYWRSZWNlbnRTZWFyY2hl
cyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIFZlY3RvcjxTdHJpbmc+JiBzZWFyY2hJdGVtcyk7
Ci0gICAgdmlydHVhbCBib29sIGVuYWJsZWQoKTsKLQotcHJpdmF0ZToKLSAgICBSZWZQdHI8UG9w
dXBNZW51RWZsPiBtX3BvcHVwOwotfTsKLQotfQotCi0jZW5kaWYgLy8gU2VhcmNoUG9wdXBNZW51
RWZsX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L1N0b3Jh
Z2VUcmFja2VyQ2xpZW50RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0
L1N0b3JhZ2VUcmFja2VyQ2xpZW50RWZsLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggOWQ5ZDI2OS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9y
dC9TdG9yYWdlVHJhY2tlckNsaWVudEVmbC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCww
IEBACi0vKgotICogIENvcHlyaWdodCAoQykgMjAxMiBQcm9GVVNJT04gRW1iZWRkZWQgU3lzdGVt
cwotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAotICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAgWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICog
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBu
b3QsIHdyaXRlIHRvCi0gKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU3RvcmFnZVRyYWNr
ZXJDbGllbnRFZmwuaCIKLQotI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotdm9pZCBTdG9yYWdlVHJhY2tlckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRN
b2RpZnlPcmlnaW4oY29uc3QgU3RyaW5nJikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQot
Ci12b2lkIFN0b3JhZ2VUcmFja2VyQ2xpZW50RWZsOjpkaWRGaW5pc2hMb2FkaW5nT3JpZ2lucygp
Ci17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvU3RvcmFnZVRyYWNrZXJDbGllbnRFZmwuaCBiL1NvdXJj
ZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L1N0b3JhZ2VUcmFja2VyQ2xpZW50RWZsLmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYyZWFlMjAuLjAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvU3RvcmFnZVRyYWNrZXJDbGllbnRFZmwuaAorKysg
L2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IChDKSAyMDEyIFBy
b0ZVU0lPTiBFbWJlZGRlZCBTeXN0ZW1zCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgot
ICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICog
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAq
ICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICog
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpZm5kZWYgU3RvcmFnZVRyYWNr
ZXJDbGllbnRFZmxfaAotI2RlZmluZSBTdG9yYWdlVHJhY2tlckNsaWVudEVmbF9oCi0KLSNpbmNs
dWRlICJTdG9yYWdlVHJhY2tlckNsaWVudC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNs
YXNzIFN0b3JhZ2VUcmFja2VyQ2xpZW50RWZsIDogcHVibGljIFN0b3JhZ2VUcmFja2VyQ2xpZW50
IHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRNb2RpZnlPcmlnaW4oY29u
c3QgU3RyaW5nJik7Ci0gICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmdPcmlnaW5zKCk7
Ci19OwotCi19Ci0KLSNlbmRpZiAvLyBTdG9yYWdlVHJhY2tlckNsaWVudEVmbF9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9WaWJyYXRpb25DbGllbnRFZmwu
Y3BwIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvVmlicmF0aW9uQ2xpZW50RWZs
LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjI4OWNjNS4uMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9WaWJyYXRpb25DbGllbnRFZmwuY3Bw
CisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgKEMpIDIw
MTIgU2Ftc3VuZyBFbGVjdHJvbmljcwotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAq
ICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAg
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQotICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiAgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqICBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiVmlicmF0aW9uQ2xpZW50RWZsLmgiCi0KLSNpZiBFTkFCTEUoVklCUkFUSU9OKQot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVZpYnJhdGlvbkNsaWVudEVmbDo6VmlicmF0aW9uQ2xp
ZW50RWZsKEV2YXNfT2JqZWN0KiB2aWV3KQotICAgIDogbV92aWV3KHZpZXcpCi17Ci19Ci0KLXZv
aWQgVmlicmF0aW9uQ2xpZW50RWZsOjp2aWJyYXRlKGNvbnN0IHVuc2lnbmVkJiB0aW1lKQotewot
ICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3LCAidmlicmF0aW9uLHZp
YnJhdGUiLCAodm9pZCopJnRpbWUpOwotfQotCi12b2lkIFZpYnJhdGlvbkNsaWVudEVmbDo6Y2Fu
Y2VsVmlicmF0aW9uKCkKLXsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG1f
dmlldywgInZpYnJhdGlvbixjYW5jZWwiLCAwKTsKLX0KLQotdm9pZCBWaWJyYXRpb25DbGllbnRF
Zmw6OnZpYnJhdGlvbkRlc3Ryb3llZCgpCi17Ci0gICAgZGVsZXRlIHRoaXM7Ci19Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShWSUJSQVRJT04pCi0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L1ZpYnJhdGlvbkNsaWVudEVm
bC5oIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvVmlicmF0aW9uQ2xpZW50RWZs
LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGViYzQyNzAuLjAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvVmlicmF0aW9uQ2xpZW50RWZsLmgKKysr
IC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAoQykgMjAxMiBT
YW1zdW5nIEVsZWN0cm9uaWNzCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBD
T1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogIEJvc3Rv
biwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpZm5kZWYgVmlicmF0aW9uQ2xpZW50RWZs
X2gKLSNkZWZpbmUgVmlicmF0aW9uQ2xpZW50RWZsX2gKLQotI2lmIEVOQUJMRShWSUJSQVRJT04p
Ci0KLSNpbmNsdWRlICJWaWJyYXRpb25DbGllbnQuaCIKLSNpbmNsdWRlIDxFdmFzLmg+Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgVmlicmF0aW9uQ2xpZW50RWZsIDogcHVibGljIFZp
YnJhdGlvbkNsaWVudCB7Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQgVmlicmF0aW9uQ2xpZW50RWZs
KEV2YXNfT2JqZWN0KiB2aWV3KTsKLSAgICB2aXJ0dWFsIH5WaWJyYXRpb25DbGllbnRFZmwoKSB7
IH0KLQotICAgIHZpcnR1YWwgdm9pZCB2aWJyYXRlKGNvbnN0IHVuc2lnbmVkJiB0aW1lKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgY2FuY2VsVmlicmF0aW9uKCk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgdmli
cmF0aW9uRGVzdHJveWVkKCk7Ci0KLXByaXZhdGU6Ci0gICAgRXZhc19PYmplY3QqIG1fdmlldzsK
LX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCi0jZW5kaWYgLy8gVmlicmF0
aW9uQ2xpZW50RWZsX2gKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdlYmtpdC5w
Yy5pbiBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ZWJraXQucGMuaW4KZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDQwNTZlMDAuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdl
YmtpdC5wYy5pbgorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLXByZWZpeD1AQ01BS0Vf
SU5TVEFMTF9QUkVGSVhACi1leGVjX3ByZWZpeD0ke3ByZWZpeH0KLWxpYmRpcj1ATElCX0lOU1RB
TExfRElSQAotaW5jbHVkZWRpcj0ke3ByZWZpeH0vaW5jbHVkZQotZGF0YWRpcj0ke3ByZWZpeH0v
QERBVEFfSU5TVEFMTF9ESVJACi0KLU5hbWU6IFdlYktpdC1FRkwKLURlc2NyaXB0aW9uOiBXZWIg
Y29udGVudCBlbmdpbmUgZm9yIEVGTCBhcHBsaWNhdGlvbnMKLVZlcnNpb246IEBQUk9KRUNUX1ZF
UlNJT05ACi1SZXF1aXJlczogY2Fpcm8gZXZhcyBlY29yZSBoYXJmYnV6eiBsaWJzb3VwLTIuNCBl
Y29yZS1pbnB1dAotTGliczogLUwke2xpYmRpcn0gLWxld2Via2l0IEBFWFRSQV9FV0VCS0lUX0xJ
TktACi1MaWJzLnByaXZhdGU6IEBMSUJTX1BSSVZBVEVACi1DZmxhZ3M6IC1JJHtpbmNsdWRlZGly
fS9AV2ViS2l0X09VVFBVVF9OQU1FQC1AUFJPSkVDVF9WRVJTSU9OX01BSk9SQApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL0VXZWJLaXQuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3
ay9FV2ViS2l0LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY4MjQxMWYuLjAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL0VXZWJLaXQuaAorKysgL2Rldi9udWxsCkBA
IC0xLDUwICswLDAgQEAKLS8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA4LTIwMDkgSU5kVCAtIElu
c3RpdHV0byBOb2tpYSBkZSBUZWNub2xvZ2lhCi0gICAgQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAg
UHJvRlVTSU9OIGVtYmVkZGVkIHN5c3RlbXMKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBT
YW1zdW5nIEVsZWN0cm9uaWNzCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gICAgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCi0gICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICAgIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgotKi8KLQotLyoqCi0gKiBAZmlsZSAgICBFV2ViS2l0LmgKLSAqIEBi
cmllZiAgIENvbnRhaW5zIHRoZSBoZWFkZXIgZmlsZXMgdGhhdCBhcmUgcmVxdWlyZWQgYnkgV2Vi
S2l0LUVGTC4KLSAqCi0gKiBJdCBpbmNsdWRlcyB0aGUgYWxsIGhlYWRlciBmaWxlcyB0aGF0IGFy
ZSBleHBvcnRlZCB0byBwdWJsaWMgQVBJIGFuZCBFdmFzIGhlYWRlci4KLSAqLwotCi0jaWZuZGVm
IEVXZWJLaXRfaAotI2RlZmluZSBFV2ViS2l0X2gKLQotI2luY2x1ZGUgImV3a19hdXRoLmgiCi0j
aW5jbHVkZSAiZXdrX2NvbnRleHRtZW51LmgiCi0jaW5jbHVkZSAiZXdrX2Nvb2tpZXMuaCIKLSNp
bmNsdWRlICJld2tfZmlsZV9jaG9vc2VyLmgiCi0jaW5jbHVkZSAiZXdrX2ZyYW1lLmgiCi0jaW5j
bHVkZSAiZXdrX2hpc3RvcnkuaCIKLSNpbmNsdWRlICJld2tfanMuaCIKLSNpbmNsdWRlICJld2tf
bWFpbi5oIgotI2luY2x1ZGUgImV3a19uZXR3b3JrLmgiCi0jaW5jbHVkZSAiZXdrX3NlY3VyaXR5
X29yaWdpbi5oIgotI2luY2x1ZGUgImV3a19zZWN1cml0eV9wb2xpY3kuaCIKLSNpbmNsdWRlICJl
d2tfc2V0dGluZ3MuaCIKLSNpbmNsdWRlICJld2tfdmlldy5oIgotI2luY2x1ZGUgImV3a193ZWJf
ZGF0YWJhc2UuaCIKLSNpbmNsdWRlICJld2tfd2luZG93X2ZlYXR1cmVzLmgiCi0KLSNpbmNsdWRl
IDxFdmFzLmg+IAotCi0jZW5kaWYgLy8gRVdlYktpdF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2VmbC9ld2svZXdrX2F1dGguY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19hdXRo
LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTUwYjhiNi4uMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2F1dGguY3BwCisrKyAvZGV2L251bGwKQEAgLTEs
MzMgKzAsMCBAQAotLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMTEgU2Ftc3VuZyBFbGVjdHJvbmlj
cwotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgotICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi0gICAgVGhpcyBs
aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
Ci0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKLSAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAgIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdy
aXRlIHRvCi0gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4K
LSovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJld2tfYXV0aC5oIgotCi0jaW5j
bHVkZSAiZXdrX2F1dGhfc291cF9wcml2YXRlLmgiCi0KLXZvaWQgZXdrX2F1dGhfc2hvd19kaWFs
b2dfY2FsbGJhY2tfc2V0KEV3a19BdXRoX1Nob3dfRGlhbG9nX0NhbGxiYWNrIGNhbGxiYWNrKQot
ewotICAgIGV3a19hdXRoX3NvdXBfc2hvd19kaWFsb2dfY2FsbGJhY2tfc2V0KGNhbGxiYWNrKTsK
LX0KLQotdm9pZCBld2tfYXV0aF9jcmVkZW50aWFsc19zZXQoY2hhciogdXNlcm5hbWUsIGNoYXIq
IHBhc3N3b3JkLCB2b2lkKiBkYXRhKQotewotICAgIGV3a19hdXRoX3NvdXBfY3JlZGVudGlhbHNf
c2V0KHVzZXJuYW1lLCBwYXNzd29yZCwgZGF0YSk7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2VmbC9ld2svZXdrX2F1dGguaCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfYXV0aC5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZmQyMDAwLi4wMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfYXV0aC5oCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAs
MCBAQAotLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMTEgU2Ftc3VuZyBFbGVjdHJvbmljcwotCi0g
ICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgotICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCi0gICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi0gICAgVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICAg
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKLSAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQotICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgotCi0gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAgIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRv
Ci0gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKLSAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSovCi0K
LS8qKgotICogQGZpbGUgICAgZXdrX2F1dGguaAotICogQGJyaWVmICAgRGVzY3JpYmVzIHRoZSBh
dXRoZW50aWNhdGlvbiBBUEkuCi0gKi8KLQotI2lmbmRlZiBld2tfYXV0aF9oCi0jZGVmaW5lIGV3
a19hdXRoX2gKLQotI2luY2x1ZGUgPEVpbmEuaD4KLQotI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRl
cm4gIkMiIHsKLSNlbmRpZgotCi0vKioKLSAqIENhbGxiYWNrIHRvIGJlIGNhbGxlZCB3aGVuIGF1
dGhlbnRpY2F0aW9uIGlzIHJlcXVpcmVkLgotICoKLSAqIEBwYXJhbSByZWFsbSBhdXRoJ3MgcmVh
bG0KLSAqIEBwYXJhbSB1cmkgdXJpCi0gKiBAcGFyYW0gZGF0YSBwb2ludHMgdG8gV2ViS2l0QXV0
aERhdGEKLSAqLwotdHlwZWRlZiB2b2lkICgqRXdrX0F1dGhfU2hvd19EaWFsb2dfQ2FsbGJhY2sp
KGNvbnN0IGNoYXIgKnJlYWxtLCBjb25zdCBjaGFyICp1cmksIHZvaWQgKmRhdGEpOwotCi0vKioK
LSAqIFNldHMgY2FsbGJhY2sgdG8gYmUgY2FsbGVkIHdoZW4gYXV0aGVudGljYXRpb24gaXMgcmVx
dWlyZWQuCi0gKgotICogQHBhcmFtIGNhbGxiYWNrIGNhbGxiYWNrIHRvIGJlIGNhbGxlZAotICov
Ci1FQVBJIHZvaWQgZXdrX2F1dGhfc2hvd19kaWFsb2dfY2FsbGJhY2tfc2V0KEV3a19BdXRoX1No
b3dfRGlhbG9nX0NhbGxiYWNrKTsKLQotLyoqCi0gKiBDYWxscyBhdXRoZW50aWNhdGlvbiBtZXRo
b2QgZm9yIHNldHRpbmcgY3JlZGVudGlhbHMuCi0gKgotICogQHBhcmFtIHVzZXJuYW1lIHVzZXJu
YW1lCi0gKiBAcGFyYW0gcGFzc3dvcmQgdXNlciBwYXNzd29yZAotICogQHBhcmFtIGRhdGEgc291
cCBhdXRoZW50aWNhdGlvbiBkYXRhCi0gKi8KLUVBUEkgdm9pZCBld2tfYXV0aF9jcmVkZW50aWFs
c19zZXQoY2hhciAqdXNlcm5hbWUsIGNoYXIgKnBhc3N3b3JkLCB2b2lkICpkYXRhKTsKLQotI2lm
ZGVmIF9fY3BsdXNwbHVzCi19Ci0jZW5kaWYKLSNlbmRpZiAvLyBld2tfYXV0aF9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2F1dGhfc291cC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2VmbC9ld2svZXdrX2F1dGhfc291cC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDNkM2U5M2YuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19hdXRo
X3NvdXAuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTM3ICswLDAgQEAKLS8qCi0gICAgQ29weXJp
Z2h0IChDKSAyMDA5IElnYWxpYSBTLkwuCi0gICAgQ29weXJpZ2h0IChDKSAyMDExIFNhbXN1bmcg
RWxlY3Ryb25pY3MKLQotICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICAgIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICAgIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLQot
ICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAgICBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLQotICAgIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
LSAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAg
SWYgbm90LCB3cml0ZSB0bwotICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gICAgQm9zdG9uLCBNQSAwMjExMC0x
MzAxLCBVU0EuCi0qLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiZXdrX2F1dGhf
c291cF9wcml2YXRlLmgiCi0KLSNpbmNsdWRlICJld2tfYXV0aC5oIgotI2luY2x1ZGUgPGdsaWIt
b2JqZWN0Lmg+Ci0jaW5jbHVkZSA8Z2xpYi5oPgotI2luY2x1ZGUgPGxpYnNvdXAvc291cC5oPgot
Ci0vKioKLSAqICNFd2tfU291cF9BdXRoX0RpYWxvZyBpcyBhICNTb3VwU2Vzc2lvbkZlYXR1cmUg
dGhhdCB5b3UgY2FuIGF0dGFjaCB0byB5b3VyCi0gKiAjU291cFNlc3Npb24gdG8gcHJvdmlkZSBh
IHNpbXBsZSBhdXRoZW50aWNhdGlvbiBkaWFsb2cgd2hpbGUKLSAqIGhhbmRsaW5nIEhUVFAgYmFz
aWMgYXV0aC4gSXQgaXMgYnVpbHQgYXMgYSBzaW1wbGUgQy1vbmx5IG1vZHVsZQotICogdG8gZWFz
ZSByZXVzZS4KLSAqLwotCi10eXBlZGVmIHN0cnVjdCBfRXdrX0F1dGhfRGF0YSB7Ci0gICAgU291
cE1lc3NhZ2UqIG1lc3NhZ2U7Ci0gICAgU291cEF1dGgqIGF1dGg7Ci0gICAgU291cFNlc3Npb24q
IHNlc3Npb247Ci19IEV3a19BdXRoX0RhdGE7Ci0KLXN0YXRpYyBFd2tfQXV0aF9TaG93X0RpYWxv
Z19DYWxsYmFjayBld2tfYXV0aF9zaG93X2RpYWxvZ19jYWxsYmFjayA9IDA7Ci0KLXN0YXRpYyB2
b2lkIGV3a19hdXRoX3NvdXBfZGlhbG9nX3Nlc3Npb25fZmVhdHVyZV9pbml0KFNvdXBTZXNzaW9u
RmVhdHVyZUludGVyZmFjZSosIGdwb2ludGVyKTsKLXN0YXRpYyB2b2lkIGF0dGFjaChTb3VwU2Vz
c2lvbkZlYXR1cmUqLCBTb3VwU2Vzc2lvbiopOwotc3RhdGljIHZvaWQgZGV0YWNoKFNvdXBTZXNz
aW9uRmVhdHVyZSosIFNvdXBTZXNzaW9uKik7Ci1zdGF0aWMgdm9pZCBmcmVlX2F1dGhfZGF0YShF
d2tfQXV0aF9EYXRhKik7Ci0KLUdfREVGSU5FX1RZUEVfV0lUSF9DT0RFKEV3a19Tb3VwX0F1dGhf
RGlhbG9nLCBld2tfYXV0aF9zb3VwX2RpYWxvZywgR19UWVBFX09CSkVDVCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgIEdfSU1QTEVNRU5UX0lOVEVSRkFDRShTT1VQX1RZUEVfU0VTU0lPTl9GRUFU
VVJFLCBld2tfYXV0aF9zb3VwX2RpYWxvZ19zZXNzaW9uX2ZlYXR1cmVfaW5pdCkpCi0KLXN0YXRp
YyB2b2lkIGV3a19hdXRoX3NvdXBfZGlhbG9nX2NsYXNzX2luaXQoRXdrX1NvdXBfQXV0aF9EaWFs
b2dDbGFzcyopCi17Ci19Ci0KLXN0YXRpYyB2b2lkIGV3a19hdXRoX3NvdXBfZGlhbG9nX2luaXQo
RXdrX1NvdXBfQXV0aF9EaWFsb2cqKQotewotfQotCi1zdGF0aWMgdm9pZCBld2tfYXV0aF9zb3Vw
X2RpYWxvZ19zZXNzaW9uX2ZlYXR1cmVfaW5pdChTb3VwU2Vzc2lvbkZlYXR1cmVJbnRlcmZhY2Uq
IGZlYXR1cmVJbnRlcmZhY2UsIGdwb2ludGVyIC8qaW50ZXJmYWNlRGF0YSovKQotewotICAgIGZl
YXR1cmVJbnRlcmZhY2UtPmF0dGFjaCA9IGF0dGFjaDsKLSAgICBmZWF0dXJlSW50ZXJmYWNlLT5k
ZXRhY2ggPSBkZXRhY2g7Ci19Ci0KLS8qKgotICogQGludGVybmFsCi0gKiAgU2V0cyBjYWxsYmFj
ayB0byBiZSBjYWxsZWQgd2hlbiBhdXRoZW50aWNhdGlvbiBpcyByZXF1aXJlZC4KLSAqLwotdm9p
ZCBld2tfYXV0aF9zb3VwX3Nob3dfZGlhbG9nX2NhbGxiYWNrX3NldChFd2tfQXV0aF9TaG93X0Rp
YWxvZ19DYWxsYmFjayBjYWxsYmFjaykKLXsKLSAgICBld2tfYXV0aF9zaG93X2RpYWxvZ19jYWxs
YmFjayA9IGNhbGxiYWNrOwotfQotCi0vKioKLSAqIEBpbnRlcm5hbAotICogIE1ldGhvZCBmb3Ig
c2V0dGluZyBjcmVkZW50aWFscwotICoKLSAqICBAcGFyYW0gdXNlcm5hbWUgdXNlcm5hbWUKLSAq
ICBAcGFyYW0gcGFzc3dvcmQgcGFzc3dvcmQKLSAqICBAcGFyYW0gZGF0YSBzb3VwIGF1dGhlbnRp
Y2F0aW9uIGRhdGEKLSAqLwotdm9pZCBld2tfYXV0aF9zb3VwX2NyZWRlbnRpYWxzX3NldChjb25z
dCBjaGFyKiB1c2VybmFtZSwgY29uc3QgY2hhciogcGFzc3dvcmQsIHZvaWQqIGRhdGEpCi17Ci0g
ICAgaWYgKCFkYXRhKQotICAgICAgICByZXR1cm47Ci0KLSAgICBFd2tfQXV0aF9EYXRhKiBhdXRo
ZW50aWNhdGlvbkRhdGEgPSBzdGF0aWNfY2FzdDxFd2tfQXV0aF9EYXRhKj4oZGF0YSk7Ci0gICAg
c291cF9hdXRoX2F1dGhlbnRpY2F0ZShhdXRoZW50aWNhdGlvbkRhdGEtPmF1dGgsIHVzZXJuYW1l
LCBwYXNzd29yZCk7Ci0gICAgc291cF9zZXNzaW9uX3VucGF1c2VfbWVzc2FnZShhdXRoZW50aWNh
dGlvbkRhdGEtPnNlc3Npb24sIGF1dGhlbnRpY2F0aW9uRGF0YS0+bWVzc2FnZSk7Ci0gICAgZnJl
ZV9hdXRoX2RhdGEoYXV0aGVudGljYXRpb25EYXRhKTsKLX0KLQotc3RhdGljIHZvaWQgc2Vzc2lv
bl9hdXRoZW50aWNhdGUoU291cFNlc3Npb24qIHNlc3Npb24sIFNvdXBNZXNzYWdlKiBtZXNzYWdl
LCBTb3VwQXV0aCogYXV0aCwgZ2Jvb2xlYW4gLypyZXRyeWluZyovLCBncG9pbnRlciAvKnVzZXJf
ZGF0YSovKQotewotICAgIFNvdXBVUkkqIHVyaTsKLSAgICBFd2tfQXV0aF9EYXRhKiBhdXRoZW50
aWNhdGlvbkRhdGE7Ci0gICAgY29uc3QgY2hhciogcmVhbG07Ci0KLSAgICBpZiAoIWV3a19hdXRo
X3Nob3dfZGlhbG9nX2NhbGxiYWNrKQotICAgICAgICByZXR1cm47Ci0KLSAgICBzb3VwX3Nlc3Np
b25fcGF1c2VfbWVzc2FnZShzZXNzaW9uLCBtZXNzYWdlKTsKLSAgICAvLyBXZSBuZWVkIHRvIG1h
a2Ugc3VyZSB0aGUgbWVzc2FnZSBzdGlja3MgYXJvdW5kIHdoZW4gcGF1c2luZyBpdC4KLSAgICBn
X29iamVjdF9yZWYobWVzc2FnZSk7Ci0gICAgZ19vYmplY3RfcmVmKHNlc3Npb24pOwotICAgIGdf
b2JqZWN0X3JlZihhdXRoKTsKLQotICAgIGF1dGhlbnRpY2F0aW9uRGF0YSA9IG5ldyBFd2tfQXV0
aF9EYXRhOwotICAgIGF1dGhlbnRpY2F0aW9uRGF0YS0+bWVzc2FnZSA9IG1lc3NhZ2U7Ci0gICAg
YXV0aGVudGljYXRpb25EYXRhLT5hdXRoID0gYXV0aDsKLSAgICBhdXRoZW50aWNhdGlvbkRhdGEt
PnNlc3Npb24gPSBzZXNzaW9uOwotCi0gICAgdXJpID0gc291cF9tZXNzYWdlX2dldF91cmkoYXV0
aGVudGljYXRpb25EYXRhLT5tZXNzYWdlKTsKLSAgICByZWFsbSA9IHNvdXBfYXV0aF9nZXRfcmVh
bG0oYXV0aGVudGljYXRpb25EYXRhLT5hdXRoKTsKLQotICAgIC8vIENhbGwgYXBwbGljYXRpb24g
bWV0aG9kIHJlc3BvbnNpYmxlIGZvciBzaG93aW5nIGF1dGhlbnRpY2F0aW9uIGRpYWxvZyBhbmQg
c2VuZGluZyBiYWNrIGF1dGhvcml6YXRpb24gZGF0YS4KLSAgICBld2tfYXV0aF9zaG93X2RpYWxv
Z19jYWxsYmFjayhyZWFsbSwgc291cF91cmlfdG9fc3RyaW5nKHVyaSwgVFJVRSksIGF1dGhlbnRp
Y2F0aW9uRGF0YSk7Ci19Ci0KLXN0YXRpYyB2b2lkIGZyZWVfYXV0aF9kYXRhKEV3a19BdXRoX0Rh
dGEqIGF1dGhEYXRhKQotewotICAgIGdfb2JqZWN0X3VucmVmKGF1dGhEYXRhLT5tZXNzYWdlKTsK
LSAgICBnX29iamVjdF91bnJlZihhdXRoRGF0YS0+c2Vzc2lvbik7Ci0gICAgZ19vYmplY3RfdW5y
ZWYoYXV0aERhdGEtPmF1dGgpOwotICAgIGRlbGV0ZSBhdXRoRGF0YTsKLX0KLQotc3RhdGljIHZv
aWQgYXR0YWNoKFNvdXBTZXNzaW9uRmVhdHVyZSogbWFuYWdlciwgU291cFNlc3Npb24qIHNlc3Np
b24pCi17Ci0gICAgZ19zaWduYWxfY29ubmVjdChzZXNzaW9uLCAiYXV0aGVudGljYXRlIiwgR19D
QUxMQkFDSyhzZXNzaW9uX2F1dGhlbnRpY2F0ZSksIG1hbmFnZXIpOwotfQotCi1zdGF0aWMgdm9p
ZCBkZXRhY2goU291cFNlc3Npb25GZWF0dXJlKiBtYW5hZ2VyLCBTb3VwU2Vzc2lvbiogc2Vzc2lv
bikKLXsKLSAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1bmMoc2Vzc2lvbiwg
KHZvaWQqKXNlc3Npb25fYXV0aGVudGljYXRlLCBtYW5hZ2VyKTsKLX0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfYXV0aF9zb3VwX3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJL
aXQvZWZsL2V3ay9ld2tfYXV0aF9zb3VwX3ByaXZhdGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggYzM2NGY2MS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdr
X2F1dGhfc291cF9wcml2YXRlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi0vKgot
ICAgIENvcHlyaWdodCAoQykgMjAwOSBJZ2FsaWEgUy5MLgotICAgIENvcHlyaWdodCAoQykgMjAx
MSBTYW1zdW5nIEVsZWN0cm9uaWNzCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv
dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gICAgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAgICBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCi0gICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZ
SU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICAgIEJvc3Rvbiwg
TUEgMDIxMTAtMTMwMSwgVVNBLgotKi8KLQotI2lmbmRlZiBld2tfYXV0aF9zb3VwX3ByaXZhdGVf
aAotI2RlZmluZSBld2tfYXV0aF9zb3VwX3ByaXZhdGVfaAotCi0jaW5jbHVkZSAiZXdrX2F1dGgu
aCIKLSNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgotI2luY2x1ZGUgPGdsaWIuaD4KLQotI2RlZmlu
ZSBFV0tfVFlQRV9TT1VQX0FVVEhfRElBTE9HICAgICAgICAgICAgKGV3a19hdXRoX3NvdXBfZGlh
bG9nX2dldF90eXBlKCkpCi0jZGVmaW5lIEVXS19TT1VQX0FVVEhfRElBTE9HKG9iamVjdCkgICAg
ICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iamVjdCksIEVXS19UWVBFX1NPVVBf
QVVUSF9ESUFMT0csIEV3a19Tb3VwX0F1dGhfRGlhbG9nKSkKLSNkZWZpbmUgRVdLX1NPVVBfQVVU
SF9ESUFMT0dfQ0xBU1Moa2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3Mp
LCBFV0tfVFlQRV9TT1VQX0FVVEhfRElBTE9HLCBFd2tfU291cF9BdXRoX0RpYWxvZykpCi0jZGVm
aW5lIEVXS19JU19TT1VQX0FVVEhfRElBTE9HKG9iamVjdCkgICAgICAoR19UWVBFX0NIRUNLX0lO
U1RBTkNFX1RZUEUoKG9iamVjdCksIEVXS19UWVBFX1NPVVBfQVVUSF9ESUFMT0cpKQotI2RlZmlu
ZSBFV0tfSVNfU09VUF9BVVRIX0RJQUxPR19DTEFTUyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFT
U19UWVBFKChrbGFzcyksIEVXS19UWVBFX1NPVVBfQVVUSF9ESUFMT0cpKQotI2RlZmluZSBFV0tf
U09VUF9BVVRIX0RJQUxPR19HRVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xB
U1MoKG9iaiksIEVXS19UWVBFX1NPVVBfQVVUSF9ESUFMT0csIEV3a19Tb3VwX0F1dGhfRGlhbG9n
KSkKLQotdHlwZWRlZiBzdHJ1Y3QgewotICAgIEdPYmplY3QgcGFyZW50X2luc3RhbmNlOwotfSBF
d2tfU291cF9BdXRoX0RpYWxvZzsKLQotdHlwZWRlZiBzdHJ1Y3QgewotICAgIEdPYmplY3RDbGFz
cyBwYXJlbnRfY2xhc3M7Ci19IEV3a19Tb3VwX0F1dGhfRGlhbG9nQ2xhc3M7Ci0KLUdUeXBlIGV3
a19hdXRoX3NvdXBfZGlhbG9nX2dldF90eXBlKHZvaWQpOwotCi0vKioKLSAqICBTZXRzIGNhbGxi
YWNrIHRvIGJlIGNhbGxlZCB3aGVuIGF1dGhlbnRpY2F0aW9uIGlzIHJlcXVpcmVkLgotICovCi12
b2lkIGV3a19hdXRoX3NvdXBfc2hvd19kaWFsb2dfY2FsbGJhY2tfc2V0KEV3a19BdXRoX1Nob3df
RGlhbG9nX0NhbGxiYWNrIGNhbGxiYWNrKTsKLQotdm9pZCBld2tfYXV0aF9zb3VwX2NyZWRlbnRp
YWxzX3NldChjb25zdCBjaGFyICp1c2VybmFtZSwgY29uc3QgY2hhciAqcGFzc3dvcmQsIHZvaWQg
KmRhdGEpOwotCi0jZW5kaWYgLy8gZXdrX2F1dGhfc291cF9wcml2YXRlX2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfY29udGV4dG1lbnUuY3BwIGIvU291cmNlL1dlYktp
dC9lZmwvZXdrL2V3a19jb250ZXh0bWVudS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGRlYjFiN2UuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19jb250
ZXh0bWVudS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NzggKzAsMCBAQAotLyoKLSAgICBDb3B5
cmlnaHQgKEMpIDIwMTAgUHJvRlVTSU9OIGVtYmVkZGVkIHN5c3RlbXMKLSAgICBDb3B5cmlnaHQg
KEMpIDIwMTAgU2Ftc3VuZyBFbGVjdHJvbmljcwotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICAgIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gICAgTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
Ci0gICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAgICBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICAg
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0gICAg
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQotICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gICAgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAgICBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNp
bmNsdWRlICJld2tfY29udGV4dG1lbnUuaCIKLQotI2luY2x1ZGUgIkNvbnRleHRNZW51LmgiCi0j
aW5jbHVkZSAiQ29udGV4dE1lbnVDb250cm9sbGVyLmgiCi0jaW5jbHVkZSAiQ29udGV4dE1lbnVJ
dGVtLmgiCi0jaW5jbHVkZSAiZXdrX2NvbnRleHRtZW51X3ByaXZhdGUuaCIKLSNpbmNsdWRlIDxF
aW5hLmg+Ci0jaW5jbHVkZSA8ZWluYV9zYWZldHlfY2hlY2tzLmg+Ci0jaW5jbHVkZSA8d3RmL3Rl
eHQvQ1N0cmluZy5oPgotCi0vKioKLSAqIFxzdHJ1Y3QgIF9Fd2tfQ29udGV4dF9NZW51Ci0gKiBA
YnJpZWYgICBDb250YWlucyB0aGUgY29udGV4dCBtZW51IGRhdGEuCi0gKi8KLXN0cnVjdCBfRXdr
X0NvbnRleHRfTWVudSB7Ci0gICAgdW5zaWduZWQgaW50IF9fcmVmOyAvKio8IHRoZSByZWZlcmVu
Y2UgY291bnQgb2YgdGhlIG9iamVjdCAqLwotI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQotICAg
IFdlYkNvcmU6OkNvbnRleHRNZW51Q29udHJvbGxlciogY29udHJvbGxlcjsgLyoqPCB0aGUgV2Vi
Q29yZSdzIG9iamVjdCB3aGljaCBpcyByZXNwb25zaWJsZSBmb3IgdGhlIGNvbnRleHQgbWVudSAq
LwotI2VuZGlmCi0gICAgRXZhc19PYmplY3QqIHZpZXc7IC8qKjwgdGhlIHZpZXcgb2JqZWN0ICov
Ci0KLSAgICBFaW5hX0xpc3QqIGl0ZW1zOyAvKio8IHRoZSBsaXN0IG9mIGl0ZW1zICovCi19Owot
Ci0vKioKLSAqIFxzdHJ1Y3QgIF9Fd2tfQ29udGV4dF9NZW51X0l0ZW0KLSAqIEBicmllZiAgIFJl
cHJlc2VudHMgb25lIGl0ZW0gb2YgdGhlIGNvbnRleHQgbWVudSBvYmplY3QuCi0gKi8KLXN0cnVj
dCBfRXdrX0NvbnRleHRfTWVudV9JdGVtIHsKLSAgICBFd2tfQ29udGV4dF9NZW51X0l0ZW1fVHlw
ZSB0eXBlOyAvKio8IGNvbnRhaW5zIHRoZSB0eXBlIG9mIHRoZSBpdGVtICovCi0gICAgRXdrX0Nv
bnRleHRfTWVudV9BY3Rpb24gYWN0aW9uOyAvKio8IGNvbnRhaW5zIHRoZSBhY3Rpb24gb2YgdGhl
IGl0ZW0gKi8KLQotICAgIGNvbnN0IGNoYXIqIHRpdGxlOyAvKio8IGNvbnRhaW5zIHRoZSB0aXRs
ZSBvZiB0aGUgaXRlbSAqLwotICAgIEV3a19Db250ZXh0X01lbnUqIHN1Ym1lbnU7IC8qKjwgY29u
dGFpbnMgdGhlIHBvaW50ZXIgdG8gdGhlIHN1Ym1lbnUgb2YgdGhlIGl0ZW0gKi8KLSAgICBFd2tf
Q29udGV4dF9NZW51KiBwYXJlbnRNZW51OyAvKio8IGNvbnRhaW5zIHRoZSBwb2ludGVyIHRvIHBh
cmVudCBtZW51IG9mIHRoZSBpdGVtICovCi0KLSAgICBib29sIGNoZWNrZWQgOiAxOwotICAgIGJv
b2wgZW5hYmxlZCA6IDE7Ci19OwotCi0jaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi1pbmxpbmUg
c3RhdGljIEV3a19Db250ZXh0X01lbnVfQWN0aW9uIHRvRXdrQ29udGV4dE1lbnVBY3Rpb24oV2Vi
Q29yZTo6Q29udGV4dE1lbnVBY3Rpb24gYWN0aW9uKQotewotICAgIHN3aXRjaCAoYWN0aW9uKSB7
Ci0gICAgY2FzZSBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdOb0FjdGlvbjoKLSAgICAgICAg
cmV0dXJuIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfTk9fQUNUSU9OOwotICAgIGNhc2UgV2Vi
Q29yZTo6Q29udGV4dE1lbnVJdGVtVGFnT3BlbkxpbmtJbk5ld1dpbmRvdzoKLSAgICAgICAgcmV0
dXJuIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfT1BFTl9MSU5LX0lOX05FV19XSU5ET1c7Ci0g
ICAgY2FzZSBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdEb3dubG9hZExpbmtUb0Rpc2s6Ci0g
ICAgICAgIHJldHVybiBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0RPV05MT0FEX0xJTktfVE9f
RElTSzsKLSAgICBjYXNlIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ0NvcHlMaW5rVG9DbGlw
Ym9hcmQ6Ci0gICAgICAgIHJldHVybiBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0NPUFlfTElO
S19UT19DTElQQk9BUkQ7Ci0gICAgY2FzZSBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdPcGVu
SW1hZ2VJbk5ld1dpbmRvdzoKLSAgICAgICAgcmV0dXJuIEVXS19DT05URVhUX01FTlVfSVRFTV9U
QUdfT1BFTl9JTUFHRV9JTl9ORVdfV0lORE9XOwotICAgIGNhc2UgV2ViQ29yZTo6Q29udGV4dE1l
bnVJdGVtVGFnRG93bmxvYWRJbWFnZVRvRGlzazoKLSAgICAgICAgcmV0dXJuIEVXS19DT05URVhU
X01FTlVfSVRFTV9UQUdfRE9XTkxPQURfSU1BR0VfVE9fRElTSzsKLSAgICBjYXNlIFdlYkNvcmU6
OkNvbnRleHRNZW51SXRlbVRhZ0NvcHlJbWFnZVRvQ2xpcGJvYXJkOgotICAgICAgICByZXR1cm4g
RVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19DT1BZX0lNQUdFX1RPX0NMSVBCT0FSRDsKLSAgICBj
YXNlIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ0NvcHlJbWFnZVVybFRvQ2xpcGJvYXJkOgot
ICAgICAgICByZXR1cm4gRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19DT1BZX0lNQUdFX1VSTF9U
T19DTElQQk9BUkQ7Ci0gICAgY2FzZSBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdPcGVuRnJh
bWVJbk5ld1dpbmRvdzoKLSAgICAgICAgcmV0dXJuIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdf
T1BFTl9GUkFNRV9JTl9ORVdfV0lORE9XOwotICAgIGNhc2UgV2ViQ29yZTo6Q29udGV4dE1lbnVJ
dGVtVGFnQ29weToKLSAgICAgICAgcmV0dXJuIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfQ09Q
WTsKLSAgICBjYXNlIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ0dvQmFjazoKLSAgICAgICAg
cmV0dXJuIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfR09fQkFDSzsKLSAgICBjYXNlIFdlYkNv
cmU6OkNvbnRleHRNZW51SXRlbVRhZ0dvRm9yd2FyZDoKLSAgICAgICAgcmV0dXJuIEVXS19DT05U
RVhUX01FTlVfSVRFTV9UQUdfR09fRk9SV0FSRDsKLSAgICBjYXNlIFdlYkNvcmU6OkNvbnRleHRN
ZW51SXRlbVRhZ1N0b3A6Ci0gICAgICAgIHJldHVybiBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFH
X1NUT1A7Ci0gICAgY2FzZSBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdSZWxvYWQ6Ci0gICAg
ICAgIHJldHVybiBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1JFTE9BRDsKLSAgICBjYXNlIFdl
YkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ0N1dDoKLSAgICAgICAgcmV0dXJuIEVXS19DT05URVhU
X01FTlVfSVRFTV9UQUdfQ1VUOwotICAgIGNhc2UgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFn
UGFzdGU6Ci0gICAgICAgIHJldHVybiBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1BBU1RFOwot
ICAgIGNhc2UgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnU2VsZWN0QWxsOgotICAgICAgICBy
ZXR1cm4gRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19TRUxFQ1RfQUxMOwotICAgIGNhc2UgV2Vi
Q29yZTo6Q29udGV4dE1lbnVJdGVtVGFnU3BlbGxpbmdHdWVzczoKLSAgICAgICAgcmV0dXJuIEVX
S19DT05URVhUX01FTlVfSVRFTV9UQUdfU1BFTExJTkdfR1VFU1M7Ci0gICAgY2FzZSBXZWJDb3Jl
OjpDb250ZXh0TWVudUl0ZW1UYWdOb0d1ZXNzZXNGb3VuZDoKLSAgICAgICAgcmV0dXJuIEVXS19D
T05URVhUX01FTlVfSVRFTV9UQUdfTk9fR1VFU1NFU19GT1VORDsKLSAgICBjYXNlIFdlYkNvcmU6
OkNvbnRleHRNZW51SXRlbVRhZ0lnbm9yZVNwZWxsaW5nOgotICAgICAgICByZXR1cm4gRVdLX0NP
TlRFWFRfTUVOVV9JVEVNX1RBR19JR05PUkVfU1BFTExJTkc7Ci0gICAgY2FzZSBXZWJDb3JlOjpD
b250ZXh0TWVudUl0ZW1UYWdMZWFyblNwZWxsaW5nOgotICAgICAgICByZXR1cm4gRVdLX0NPTlRF
WFRfTUVOVV9JVEVNX1RBR19MRUFSTl9TUEVMTElORzsKLSAgICBjYXNlIFdlYkNvcmU6OkNvbnRl
eHRNZW51SXRlbVRhZ090aGVyOgotICAgICAgICByZXR1cm4gRVdLX0NPTlRFWFRfTUVOVV9JVEVN
X1RBR19PVEhFUjsKLSAgICBjYXNlIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ1NlYXJjaElu
U3BvdGxpZ2h0OgotICAgICAgICByZXR1cm4gRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19TRUFS
Q0hfSU5fU1BPVExJR0hUOwotICAgIGNhc2UgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnU2Vh
cmNoV2ViOgotICAgICAgICByZXR1cm4gRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19TRUFSQ0hf
V0VCOwotICAgIGNhc2UgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnTG9va1VwSW5EaWN0aW9u
YXJ5OgotICAgICAgICByZXR1cm4gRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19MT09LX1VQX0lO
X0RJQ1RJT05BUlk7Ci0gICAgY2FzZSBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdPcGVuV2l0
aERlZmF1bHRBcHBsaWNhdGlvbjoKLSAgICAgICAgcmV0dXJuIEVXS19DT05URVhUX01FTlVfSVRF
TV9UQUdfT1BFTl9XSVRIX0RFRkFVTFRfQVBQTElDQVRJT047Ci0gICAgY2FzZSBXZWJDb3JlOjpD
b250ZXh0TWVudUl0ZW1QREZBY3R1YWxTaXplOgotICAgICAgICByZXR1cm4gRVdLX0NPTlRFWFRf
TUVOVV9JVEVNX1BERkFDVFVBTF9TSVpFOwotICAgIGNhc2UgV2ViQ29yZTo6Q29udGV4dE1lbnVJ
dGVtUERGWm9vbUluOgotICAgICAgICByZXR1cm4gRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1BERlpP
T01fSU47Ci0gICAgY2FzZSBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1QREZab29tT3V0OgotICAg
ICAgICByZXR1cm4gRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1BERlpPT01fT1VUOwotICAgIGNhc2Ug
V2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtUERGQXV0b1NpemU6Ci0gICAgICAgIHJldHVybiBFV0tf
Q09OVEVYVF9NRU5VX0lURU1fUERGQVVUT19TSVpFOwotICAgIGNhc2UgV2ViQ29yZTo6Q29udGV4
dE1lbnVJdGVtUERGU2luZ2xlUGFnZToKLSAgICAgICAgcmV0dXJuIEVXS19DT05URVhUX01FTlVf
SVRFTV9QREZTSU5HTEVfUEFHRTsKLSAgICBjYXNlIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVBE
RkZhY2luZ1BhZ2VzOgotICAgICAgICByZXR1cm4gRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1BERkZB
Q0lOR19QQUdFUzsKLSAgICBjYXNlIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVBERkNvbnRpbnVv
dXM6Ci0gICAgICAgIHJldHVybiBFV0tfQ09OVEVYVF9NRU5VX0lURU1fUERGQ09OVElOVU9VUzsK
LSAgICBjYXNlIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVBERk5leHRQYWdlOgotICAgICAgICBy
ZXR1cm4gRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1BERk5FWFRfUEFHRTsKLSAgICBjYXNlIFdlYkNv
cmU6OkNvbnRleHRNZW51SXRlbVBERlByZXZpb3VzUGFnZToKLSAgICAgICAgcmV0dXJuIEVXS19D
T05URVhUX01FTlVfSVRFTV9QREZQUkVWSU9VU19QQUdFOwotICAgIGNhc2UgV2ViQ29yZTo6Q29u
dGV4dE1lbnVJdGVtVGFnT3Blbkxpbms6Ci0gICAgICAgIHJldHVybiBFV0tfQ09OVEVYVF9NRU5V
X0lURU1fVEFHX09QRU5fTElOSzsKLSAgICBjYXNlIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRh
Z0lnbm9yZUdyYW1tYXI6Ci0gICAgICAgIHJldHVybiBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFH
X0lHTk9SRV9HUkFNTUFSOwotICAgIGNhc2UgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnU3Bl
bGxpbmdNZW51OgotICAgICAgICByZXR1cm4gRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19TUEVM
TElOR19NRU5VOwotICAgIGNhc2UgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnU2hvd1NwZWxs
aW5nUGFuZWw6Ci0gICAgICAgIHJldHVybiBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1NIT1df
U1BFTExJTkdfUEFORUw7Ci0gICAgY2FzZSBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdDaGVj
a1NwZWxsaW5nOgotICAgICAgICByZXR1cm4gRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19DSEVD
S19TUEVMTElORzsKLSAgICBjYXNlIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ0NoZWNrU3Bl
bGxpbmdXaGlsZVR5cGluZzoKLSAgICAgICAgcmV0dXJuIEVXS19DT05URVhUX01FTlVfSVRFTV9U
QUdfQ0hFQ0tfU1BFTExJTkdfV0hJTEVfVFlQSU5HOwotICAgIGNhc2UgV2ViQ29yZTo6Q29udGV4
dE1lbnVJdGVtVGFnQ2hlY2tHcmFtbWFyV2l0aFNwZWxsaW5nOgotICAgICAgICByZXR1cm4gRVdL
X0NPTlRFWFRfTUVOVV9JVEVNX1RBR19DSEVDS19HUkFNTUFSX1dJVEhfU1BFTExJTkc7Ci0gICAg
Y2FzZSBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdGb250TWVudToKLSAgICAgICAgcmV0dXJu
IEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfRk9OVF9NRU5VOwotICAgIGNhc2UgV2ViQ29yZTo6
Q29udGV4dE1lbnVJdGVtVGFnU2hvd0ZvbnRzOgotICAgICAgICByZXR1cm4gRVdLX0NPTlRFWFRf
TUVOVV9JVEVNX1RBR19TSE9XX0ZPTlRTOwotICAgIGNhc2UgV2ViQ29yZTo6Q29udGV4dE1lbnVJ
dGVtVGFnQm9sZDoKLSAgICAgICAgcmV0dXJuIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfQk9M
RDsKLSAgICBjYXNlIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ0l0YWxpYzoKLSAgICAgICAg
cmV0dXJuIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfSVRBTElDOwotICAgIGNhc2UgV2ViQ29y
ZTo6Q29udGV4dE1lbnVJdGVtVGFnVW5kZXJsaW5lOgotICAgICAgICByZXR1cm4gRVdLX0NPTlRF
WFRfTUVOVV9JVEVNX1RBR19VTkRFUkxJTkU7Ci0gICAgY2FzZSBXZWJDb3JlOjpDb250ZXh0TWVu
dUl0ZW1UYWdPdXRsaW5lOgotICAgICAgICByZXR1cm4gRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RB
R19PVVRMSU5FOwotICAgIGNhc2UgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnU3R5bGVzOgot
ICAgICAgICByZXR1cm4gRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19TVFlMRVM7Ci0gICAgY2Fz
ZSBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdTaG93Q29sb3JzOgotICAgICAgICByZXR1cm4g
RVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19TSE9XX0NPTE9SUzsKLSAgICBjYXNlIFdlYkNvcmU6
OkNvbnRleHRNZW51SXRlbVRhZ1NwZWVjaE1lbnU6Ci0gICAgICAgIHJldHVybiBFV0tfQ09OVEVY
VF9NRU5VX0lURU1fVEFHX1NQRUVDSF9NRU5VOwotICAgIGNhc2UgV2ViQ29yZTo6Q29udGV4dE1l
bnVJdGVtVGFnU3RhcnRTcGVha2luZzoKLSAgICAgICAgcmV0dXJuIEVXS19DT05URVhUX01FTlVf
SVRFTV9UQUdfU1RBUlRfU1BFQUtJTkc7Ci0gICAgY2FzZSBXZWJDb3JlOjpDb250ZXh0TWVudUl0
ZW1UYWdTdG9wU3BlYWtpbmc6Ci0gICAgICAgIHJldHVybiBFV0tfQ09OVEVYVF9NRU5VX0lURU1f
VEFHX1NUT1BfU1BFQUtJTkc7Ci0gICAgY2FzZSBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdX
cml0aW5nRGlyZWN0aW9uTWVudToKLSAgICAgICAgcmV0dXJuIEVXS19DT05URVhUX01FTlVfSVRF
TV9UQUdfV1JJVElOR19ESVJFQ1RJT05fTUVOVTsKLSAgICBjYXNlIFdlYkNvcmU6OkNvbnRleHRN
ZW51SXRlbVRhZ0RlZmF1bHREaXJlY3Rpb246Ci0gICAgICAgIHJldHVybiBFV0tfQ09OVEVYVF9N
RU5VX0lURU1fVEFHX0RFRkFVTFRfRElSRUNUSU9OOwotICAgIGNhc2UgV2ViQ29yZTo6Q29udGV4
dE1lbnVJdGVtVGFnTGVmdFRvUmlnaHQ6Ci0gICAgICAgIHJldHVybiBFV0tfQ09OVEVYVF9NRU5V
X0lURU1fVEFHX0xFRlRfVE9fUklHSFQ7Ci0gICAgY2FzZSBXZWJDb3JlOjpDb250ZXh0TWVudUl0
ZW1UYWdSaWdodFRvTGVmdDoKLSAgICAgICAgcmV0dXJuIEVXS19DT05URVhUX01FTlVfSVRFTV9U
QUdfUklHSFRfVE9fTEVGVDsKLSAgICBjYXNlIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ1BE
RlNpbmdsZVBhZ2VTY3JvbGxpbmc6Ci0gICAgICAgIHJldHVybiBFV0tfQ09OVEVYVF9NRU5VX0lU
RU1fVEFHX1BERlNJTkdMRV9QQUdFX1NDUk9MTElORzsKLSAgICBjYXNlIFdlYkNvcmU6OkNvbnRl
eHRNZW51SXRlbVRhZ1BERkZhY2luZ1BhZ2VzU2Nyb2xsaW5nOgotICAgICAgICByZXR1cm4gRVdL
X0NPTlRFWFRfTUVOVV9JVEVNX1RBR19QREZGQUNJTkdfUEFHRVNfU0NST0xMSU5HOwotI2lmIEVO
QUJMRShJTlNQRUNUT1IpCi0gICAgY2FzZSBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdJbnNw
ZWN0RWxlbWVudDoKLSAgICAgICAgcmV0dXJuIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfSU5T
UEVDVF9FTEVNRU5UOwotI2VuZGlmCi0gICAgY2FzZSBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1U
YWdUZXh0RGlyZWN0aW9uTWVudToKLSAgICAgICAgcmV0dXJuIEVXS19DT05URVhUX01FTlVfSVRF
TV9UQUdfVEVYVF9ESVJFQ1RJT05fTUVOVTsKLSAgICBjYXNlIFdlYkNvcmU6OkNvbnRleHRNZW51
SXRlbVRhZ1RleHREaXJlY3Rpb25EZWZhdWx0OgotICAgICAgICByZXR1cm4gRVdLX0NPTlRFWFRf
TUVOVV9JVEVNX1RBR19URVhUX0RJUkVDVElPTl9ERUZBVUxUOwotICAgIGNhc2UgV2ViQ29yZTo6
Q29udGV4dE1lbnVJdGVtVGFnVGV4dERpcmVjdGlvbkxlZnRUb1JpZ2h0OgotICAgICAgICByZXR1
cm4gRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19URVhUX0RJUkVDVElPTl9MRUZUX1RPX1JJR0hU
OwotICAgIGNhc2UgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnVGV4dERpcmVjdGlvblJpZ2h0
VG9MZWZ0OgotICAgICAgICByZXR1cm4gRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19URVhUX0RJ
UkVDVElPTl9SSUdIVF9UT19MRUZUOwotICAgIGNhc2UgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVt
VGFnT3Blbk1lZGlhSW5OZXdXaW5kb3c6Ci0gICAgICAgIHJldHVybiBFV0tfQ09OVEVYVF9NRU5V
X0lURU1fT1BFTl9NRURJQV9JTl9ORVdfV0lORE9XOwotICAgIGNhc2UgV2ViQ29yZTo6Q29udGV4
dE1lbnVJdGVtVGFnRG93bmxvYWRNZWRpYVRvRGlzazoKLSAgICAgICAgcmV0dXJuIEVXS19DT05U
RVhUX01FTlVfSVRFTV9UQUdfRE9XTkxPQURfTUVESUFfVE9fRElTSzsKLSAgICBjYXNlIFdlYkNv
cmU6OkNvbnRleHRNZW51SXRlbVRhZ0NvcHlNZWRpYUxpbmtUb0NsaXBib2FyZDoKLSAgICAgICAg
cmV0dXJuIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfQ09QWV9NRURJQV9MSU5LX1RPX0NMSVBC
T0FSRDsKLSAgICBjYXNlIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ1RvZ2dsZU1lZGlhQ29u
dHJvbHM6Ci0gICAgICAgIHJldHVybiBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1RPR0dMRV9N
RURJQV9DT05UUk9MUzsKLSAgICBjYXNlIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ1RvZ2ds
ZU1lZGlhTG9vcDoKLSAgICAgICAgcmV0dXJuIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfVE9H
R0xFX01FRElBX0xPT1A7Ci0gICAgY2FzZSBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdFbnRl
clZpZGVvRnVsbHNjcmVlbjoKLSAgICAgICAgcmV0dXJuIEVXS19DT05URVhUX01FTlVfSVRFTV9U
QUdfRU5URVJfVklERU9fRlVMTFNDUkVFTjsKLSAgICBjYXNlIFdlYkNvcmU6OkNvbnRleHRNZW51
SXRlbVRhZ01lZGlhUGxheVBhdXNlOgotICAgICAgICByZXR1cm4gRVdLX0NPTlRFWFRfTUVOVV9J
VEVNX1RBR19NRURJQV9QTEFZX1BBVVNFOwotICAgIGNhc2UgV2ViQ29yZTo6Q29udGV4dE1lbnVJ
dGVtVGFnTWVkaWFNdXRlOgotICAgICAgICByZXR1cm4gRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RB
R19NRURJQV9NVVRFOwotICAgIGNhc2UgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnRGljdGF0
aW9uQWx0ZXJuYXRpdmU6Ci0gICAgICAgIHJldHVybiBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFH
X0RJQ1RBVElPTl9BTFRFUk5BVElWRTsKLSAgICBjYXNlIFdlYkNvcmU6OkNvbnRleHRNZW51SXRl
bVRhZ09wZW5MaW5rSW5UaGlzV2luZG93OgotICAgICAgICByZXR1cm4gRVdLX0NPTlRFWFRfTUVO
VV9JVEVNX1RBR19PUEVOX0xJTktfSU5fVEhJU19XSU5ET1c7Ci0gICAgY2FzZSBXZWJDb3JlOjpD
b250ZXh0TWVudUl0ZW1UYWdUb2dnbGVWaWRlb0Z1bGxzY3JlZW46Ci0gICAgICAgIHJldHVybiBF
V0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1RPR0dMRV9WSURFT19GVUxMX1NDUkVFTjsKLSAgICBj
YXNlIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbUJhc2VDdXN0b21UYWc6Ci0gICAgICAgIHJldHVy
biBFV0tfQ09OVEVYVF9NRU5VX0lURU1fQkFTRV9DVVNUT01fVEFHOwotICAgIGNhc2UgV2ViQ29y
ZTo6Q29udGV4dE1lbnVJdGVtQ3VzdG9tVGFnTm9BY3Rpb246Ci0gICAgICAgIHJldHVybiBFV0tf
Q09OVEVYVF9NRU5VX0lURU1fQ1VTVE9NX1RBR19OT19BQ1RJT047Ci0gICAgY2FzZSBXZWJDb3Jl
OjpDb250ZXh0TWVudUl0ZW1MYXN0Q3VzdG9tVGFnOgotICAgICAgICByZXR1cm4gRVdLX0NPTlRF
WFRfTUVOVV9JVEVNX0xBU1RfQ1VTVE9NX1RBRzsKLSAgICBjYXNlIFdlYkNvcmU6OkNvbnRleHRN
ZW51SXRlbUJhc2VBcHBsaWNhdGlvblRhZzoKLSAgICAgICAgcmV0dXJuIEVXS19DT05URVhUX01F
TlVfSVRFTV9CQVNFX0FQUExJQ0FUSU9OX1RBRzsKLSAgICB9Ci19Ci0jZW5kaWYKLQotdm9pZCBl
d2tfY29udGV4dF9tZW51X3JlZihFd2tfQ29udGV4dF9NZW51KiBtZW51KQotewotICAgIEVJTkFf
U0FGRVRZX09OX05VTExfUkVUVVJOKG1lbnUpOwotICAgIG1lbnUtPl9fcmVmKys7Ci19Ci0KLXZv
aWQgZXdrX2NvbnRleHRfbWVudV91bnJlZihFd2tfQ29udGV4dF9NZW51KiBtZW51KQotewotICAg
IEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKG1lbnUpOwotICAgIHZvaWQqIGl0ZW07Ci0KLSAg
ICBpZiAoLS1tZW51LT5fX3JlZikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgRUlOQV9MSVNUX0ZS
RUUobWVudS0+aXRlbXMsIGl0ZW0pCi0gICAgICAgIGV3a19jb250ZXh0X21lbnVfaXRlbV9mcmVl
KHN0YXRpY19jYXN0PEV3a19Db250ZXh0X01lbnVfSXRlbSo+KGl0ZW0pKTsKLQotICAgIGRlbGV0
ZSBtZW51OwotfQotCi1FaW5hX0Jvb2wgZXdrX2NvbnRleHRfbWVudV9kZXN0cm95KEV3a19Db250
ZXh0X01lbnUqIG1lbnUpCi17Ci0jaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi0gICAgRUlOQV9T
QUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKG1lbnUsIGZhbHNlKTsKLSAgICBFSU5BX1NBRkVUWV9P
Tl9OVUxMX1JFVFVSTl9WQUwobWVudS0+Y29udHJvbGxlciwgZmFsc2UpOwotICAgIG1lbnUtPmNv
bnRyb2xsZXItPmNsZWFyQ29udGV4dE1lbnUoKTsKLSAgICBld2tfY29udGV4dF9tZW51X2ZyZWUo
bWVudSk7Ci0gICAgcmV0dXJuIHRydWU7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShtZW51KTsK
LSAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYKLX0KLQotY29uc3QgRWluYV9MaXN0KiBld2tfY29u
dGV4dF9tZW51X2l0ZW1fbGlzdF9nZXQoY29uc3QgRXdrX0NvbnRleHRfTWVudSogbWVudSkKLXsK
LSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwobWVudSwgMCk7Ci0KLSAgICByZXR1
cm4gbWVudS0+aXRlbXM7Ci19Ci0KLUV3a19Db250ZXh0X01lbnVfSXRlbSogZXdrX2NvbnRleHRf
bWVudV9pdGVtX25ldyhFd2tfQ29udGV4dF9NZW51X0l0ZW1fVHlwZSB0eXBlLCBFd2tfQ29udGV4
dF9NZW51X0FjdGlvbiBhY3Rpb24sIEV3a19Db250ZXh0X01lbnUqIHBhcmVudE1lbnUsCi0gICAg
RXdrX0NvbnRleHRfTWVudSogc3VibWVudSwgY29uc3QgY2hhciogdGl0bGUsIEVpbmFfQm9vbCBj
aGVja2VkLCBFaW5hX0Jvb2wgZW5hYmxlZCkKLXsKLSAgICBFd2tfQ29udGV4dF9NZW51X0l0ZW0q
IGl0ZW0gPSBuZXcgRXdrX0NvbnRleHRfTWVudV9JdGVtOwotICAgIGl0ZW0tPnR5cGUgPSB0eXBl
OwotICAgIGl0ZW0tPmFjdGlvbiA9IGFjdGlvbjsKLSAgICBpdGVtLT50aXRsZSA9IGVpbmFfc3Ry
aW5nc2hhcmVfYWRkKHRpdGxlKTsKLSAgICBpdGVtLT5wYXJlbnRNZW51ID0gcGFyZW50TWVudTsK
LSAgICBpdGVtLT5zdWJtZW51ID0gc3VibWVudTsKLSAgICBpdGVtLT5jaGVja2VkID0gY2hlY2tl
ZDsKLSAgICBpdGVtLT5lbmFibGVkID0gZW5hYmxlZDsKLQotICAgIHJldHVybiBpdGVtOwotfQot
Ci1FaW5hX0Jvb2wgZXdrX2NvbnRleHRfbWVudV9pdGVtX3NlbGVjdChFd2tfQ29udGV4dF9NZW51
KiBtZW51LCBFd2tfQ29udGV4dF9NZW51X0l0ZW0qIGl0ZW0pCi17Ci0jaWYgRU5BQkxFKENPTlRF
WFRfTUVOVVMpCi0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKG1lbnUsIGZhbHNl
KTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoaXRlbSwgZmFsc2UpOwotICAg
IFdlYkNvcmU6OkNvbnRleHRNZW51QWN0aW9uIGFjdGlvbiA9IHN0YXRpY19jYXN0PFdlYkNvcmU6
OkNvbnRleHRNZW51QWN0aW9uPihpdGVtLT5hY3Rpb24pOwotICAgIFdlYkNvcmU6OkNvbnRleHRN
ZW51SXRlbVR5cGUgdHlwZSA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVR5
cGU+KGl0ZW0tPnR5cGUpOwotCi0gICAgLy8gRG9uJ3QgY2FyZSBhYm91dCB0aXRsZSBhbmQgc3Vi
bWVudSBhcyB0aGV5J3JlIG5vdCB1c2VkIGFmdGVyIHRoaXMgcG9pbnQuCi0gICAgV2ViQ29yZTo6
Q29udGV4dE1lbnVJdGVtIGNvcmUodHlwZSwgYWN0aW9uLCBXVEY6OlN0cmluZygpKTsKLSAgICBt
ZW51LT5jb250cm9sbGVyLT5jb250ZXh0TWVudUl0ZW1TZWxlY3RlZCgmY29yZSk7Ci0gICAgcmV0
dXJuIHRydWU7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShtZW51KTsKLSAgICBVTlVTRURfUEFS
QU0oaXRlbSk7Ci0gICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCi19Ci0KLXZvaWQgZXdrX2NvbnRl
eHRfbWVudV9pdGVtX2ZyZWUoRXdrX0NvbnRleHRfTWVudV9JdGVtKiBpdGVtKQotewotICAgIEVJ
TkFfU0FGRVRZX09OX05VTExfUkVUVVJOKGl0ZW0pOwotCi0gICAgZWluYV9zdHJpbmdzaGFyZV9k
ZWwoaXRlbS0+dGl0bGUpOwotICAgIGRlbGV0ZSBpdGVtOwotfQotCi1Fd2tfQ29udGV4dF9NZW51
X0l0ZW1fVHlwZSBld2tfY29udGV4dF9tZW51X2l0ZW1fdHlwZV9nZXQoY29uc3QgRXdrX0NvbnRl
eHRfTWVudV9JdGVtKiBpdGVtKQotewotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZB
TChpdGVtLCBFV0tfQUNUSU9OX1RZUEUpOwotICAgIHJldHVybiBpdGVtLT50eXBlOwotfQotCi1F
aW5hX0Jvb2wgZXdrX2NvbnRleHRfbWVudV9pdGVtX3R5cGVfc2V0KEV3a19Db250ZXh0X01lbnVf
SXRlbSogaXRlbSwgRXdrX0NvbnRleHRfTWVudV9JdGVtX1R5cGUgdHlwZSkKLXsKLSAgICBFSU5B
X1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoaXRlbSwgZmFsc2UpOwotICAgIGl0ZW0tPnR5cGUg
PSB0eXBlOwotICAgIHJldHVybiB0cnVlOwotfQotCi1Fd2tfQ29udGV4dF9NZW51X0FjdGlvbiBl
d2tfY29udGV4dF9tZW51X2l0ZW1fYWN0aW9uX2dldChjb25zdCBFd2tfQ29udGV4dF9NZW51X0l0
ZW0qIGl0ZW0pCi17Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGl0ZW0sIEVX
S19DT05URVhUX01FTlVfSVRFTV9UQUdfTk9fQUNUSU9OKTsKLSAgICByZXR1cm4gaXRlbS0+YWN0
aW9uOwotfQotCi1FaW5hX0Jvb2wgZXdrX2NvbnRleHRfbWVudV9pdGVtX2FjdGlvbl9zZXQoRXdr
X0NvbnRleHRfTWVudV9JdGVtKiBpdGVtLCBFd2tfQ29udGV4dF9NZW51X0FjdGlvbiBhY3Rpb24p
Ci17Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGl0ZW0sIGZhbHNlKTsKLSAg
ICBpdGVtLT5hY3Rpb24gPSBhY3Rpb247Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWNvbnN0IGNo
YXIqIGV3a19jb250ZXh0X21lbnVfaXRlbV90aXRsZV9nZXQoY29uc3QgRXdrX0NvbnRleHRfTWVu
dV9JdGVtKiBpdGVtKQotewotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChpdGVt
LCAwKTsKLSAgICByZXR1cm4gaXRlbS0+dGl0bGU7Ci19Ci0KLWNvbnN0IGNoYXIqIGV3a19jb250
ZXh0X21lbnVfaXRlbV90aXRsZV9zZXQoRXdrX0NvbnRleHRfTWVudV9JdGVtKiBpdGVtLCBjb25z
dCBjaGFyKiB0aXRsZSkKLXsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoaXRl
bSwgMCk7Ci0gICAgZWluYV9zdHJpbmdzaGFyZV9yZXBsYWNlKCZpdGVtLT50aXRsZSwgdGl0bGUp
OwotICAgIHJldHVybiBpdGVtLT50aXRsZTsKLX0KLQotRWluYV9Cb29sIGV3a19jb250ZXh0X21l
bnVfaXRlbV9jaGVja2VkX2dldChjb25zdCBFd2tfQ29udGV4dF9NZW51X0l0ZW0qIGl0ZW0pCi17
Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGl0ZW0sIGZhbHNlKTsKLSAgICBy
ZXR1cm4gaXRlbS0+Y2hlY2tlZDsKLX0KLQotRWluYV9Cb29sIGV3a19jb250ZXh0X21lbnVfaXRl
bV9jaGVja2VkX3NldChFd2tfQ29udGV4dF9NZW51X0l0ZW0qIGl0ZW0sIEVpbmFfQm9vbCBjaGVj
a2VkKQotewotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChpdGVtLCBmYWxzZSk7
Ci0gICAgaXRlbS0+Y2hlY2tlZCA9IGNoZWNrZWQ7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLUVp
bmFfQm9vbCBld2tfY29udGV4dF9tZW51X2l0ZW1fZW5hYmxlZF9nZXQoY29uc3QgRXdrX0NvbnRl
eHRfTWVudV9JdGVtKiBpdGVtKQotewotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZB
TChpdGVtLCBmYWxzZSk7Ci0gICAgcmV0dXJuIGl0ZW0tPmVuYWJsZWQ7Ci19Ci0KLUVpbmFfQm9v
bCBld2tfY29udGV4dF9tZW51X2l0ZW1fZW5hYmxlZF9zZXQoRXdrX0NvbnRleHRfTWVudV9JdGVt
KiBpdGVtLCBFaW5hX0Jvb2wgZW5hYmxlZCkKLXsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JF
VFVSTl9WQUwoaXRlbSwgZmFsc2UpOwotICAgIGl0ZW0tPmVuYWJsZWQgPSBlbmFibGVkOwotICAg
IHJldHVybiB0cnVlOwotfQotCi1Fd2tfQ29udGV4dF9NZW51KiBld2tfY29udGV4dF9tZW51X2l0
ZW1fcGFyZW50X2dldChjb25zdCBFd2tfQ29udGV4dF9NZW51X0l0ZW0qIGl0ZW0pCi17Ci0gICAg
RUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGl0ZW0sIDApOwotCi0gICAgcmV0dXJuIGl0
ZW0tPnBhcmVudE1lbnU7Ci19Ci0KLS8qIGludGVybmFsIG1ldGhvZHMgKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotI2lmIEVOQUJMRShDT05U
RVhUX01FTlVTKQotLyoqCi0gKiBAaW50ZXJuYWwKLSAqCi0gKiBDcmVhdGVzIGFuIGVtcHR5IGNv
bnRleHQgbWVudSBvbiB2aWV3LgotICoKLSAqIEBwYXJhbSB2aWV3IHRoZSB2aWV3IG9iamVjdAot
ICogQHBhcmFtIGNvbnRyb2xsZXIgdGhlIFdlYkNvcmUncyBjb250ZXh0IG1lbnUgY29udHJvbGxl
cgotICogQHJldHVybiBuZXdseSBhbGxvY2F0ZWQgdGhlIGNvbnRleHQgbWVudSBvbiBzdWNjZXNz
IG9yIEBjIDAgb24gZXJyb3JzCi0gKgotICogQG5vdGUgZW1pdHMgYSBzaWduYWwgImNvbnRleHRt
ZW51LG5ldyIKLSAqLwotRXdrX0NvbnRleHRfTWVudSogZXdrX2NvbnRleHRfbWVudV9uZXcoRXZh
c19PYmplY3QqIHZpZXcsIFdlYkNvcmU6OkNvbnRleHRNZW51Q29udHJvbGxlciogY29udHJvbGxl
ciwgV2ViQ29yZTo6Q29udGV4dE1lbnUqIGNvcmVNZW51KQotewotICAgIEV3a19Db250ZXh0X01l
bnUqIG1lbnU7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHZpZXcsIDApOwot
ICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChjb250cm9sbGVyLCAwKTsKLQotICAg
IG1lbnUgPSBuZXcgRXdrX0NvbnRleHRfTWVudTsKLQotICAgIG1lbnUtPl9fcmVmID0gMTsKLSAg
ICBtZW51LT52aWV3ID0gdmlldzsKLSAgICBtZW51LT5jb250cm9sbGVyID0gY29udHJvbGxlcjsK
LSAgICBtZW51LT5pdGVtcyA9IDA7Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2Fs
bChtZW51LT52aWV3LCAiY29udGV4dG1lbnUsbmV3IiwgbWVudSk7Ci0KLSAgICBjb25zdCBWZWN0
b3I8V2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtPiYgaXRlbXNMaXN0ID0gY29yZU1lbnUtPml0ZW1z
KCk7Ci0gICAgZm9yIChWZWN0b3I8V2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtPjo6Y29uc3RfaXRl
cmF0b3IgaXRlciA9IGl0ZW1zTGlzdC5iZWdpbigpOyBpdGVyICE9IGl0ZW1zTGlzdC5lbmQoKTsg
KytpdGVyKQotICAgICAgICBld2tfY29udGV4dF9tZW51X2l0ZW1fYXBwZW5kKG1lbnUsICppdGVy
KTsKLQotICAgIHJldHVybiBtZW51OwotfQotCi0vKioKLSAqIEBpbnRlcm5hbAotICoKLSAqIEZy
ZWVzIHRoZSBjb250ZXh0IG1lbnUuCi0gKgotICogQHBhcmFtIG1lbnUgdGhlIHZpZXcgb2JqZWN0
Ci0gKiBAcmV0dXJuIEBjIHRydWUgb24gc3VjY2Vzcywgb3IgQGMgZmFsc2Ugb24gZmFpbHVyZQot
ICoKLSAqIEBub3RlIGVtaXRzIGEgc2lnbmFsICJjb250ZXh0bWVudSxmcmVlIgotICoKLSAqIEBz
ZWUgZXdrX2NvbnRleHRfbWVudV91bnJlZgotICogQHNlZSBld2tfY29udGV4dF9tZW51X2Rlc3Ry
b3kKLSAqLwotYm9vbCBld2tfY29udGV4dF9tZW51X2ZyZWUoRXdrX0NvbnRleHRfTWVudSogbWVu
dSkKLXsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwobWVudSwgZmFsc2UpOwot
ICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobWVudS0+dmlldywgImNvbnRleHRt
ZW51LGZyZWUiLCBtZW51KTsKLSAgICBld2tfY29udGV4dF9tZW51X3VucmVmKG1lbnUpOwotICAg
IHJldHVybiB0cnVlOwotfQotCi0vKioKLSAqIEBpbnRlcm5hbAotICoKLSAqIEFwcGVuZHMgdGhl
IFdlYkNvcmUncyBpdGVtIHRvIHRoZSBjb250ZXh0IG1lbnUgb2JqZWN0LgotICoKLSAqIEBwYXJh
bSBtZW51IHRoZSBjb250ZXh0IG1lbnUgb2JqZWN0Ci0gKiBAcGFyYW0gY29yZSB0aGUgV2ViQ29y
ZSdzIGNvbnRleHQgbWVudSBpdGVtIHRoYXQgd2lsbCBiZSBhZGRlZCB0byB0aGUgY29udGV4dCBt
ZW51Ci0gKiBAbm90ZSBlbWl0cyBhIHNpZ25hbCAiY29udGV4dG1lbnUsaXRlbSxhcHBlbmRlZCIK
LSAqCi0gKiBAc2VlIGV3a19jb250ZXh0X21lbnVfaXRlbV9uZXcKLSAqLwotdm9pZCBld2tfY29u
dGV4dF9tZW51X2l0ZW1fYXBwZW5kKEV3a19Db250ZXh0X01lbnUqIG1lbnUsIGNvbnN0IFdlYkNv
cmU6OkNvbnRleHRNZW51SXRlbSYgY29yZSkKLXsKLSAgICBFd2tfQ29udGV4dF9NZW51X0l0ZW1f
VHlwZSB0eXBlID0gc3RhdGljX2Nhc3Q8RXdrX0NvbnRleHRfTWVudV9JdGVtX1R5cGU+KGNvcmUu
dHlwZSgpKTsKLSAgICBFd2tfQ29udGV4dF9NZW51X0FjdGlvbiBhY3Rpb24gPSBzdGF0aWNfY2Fz
dDxFd2tfQ29udGV4dF9NZW51X0FjdGlvbj4oY29yZS5hY3Rpb24oKSk7Ci0KLSAgICBFd2tfQ29u
dGV4dF9NZW51X0l0ZW0qIG1lbnVfaXRlbSA9IGV3a19jb250ZXh0X21lbnVfaXRlbV9uZXcodHlw
ZSwgYWN0aW9uLCBtZW51LCAwLCBjb3JlLnRpdGxlKCkudXRmOCgpLmRhdGEoKSwgY29yZS5jaGVj
a2VkKCksIGNvcmUuZW5hYmxlZCgpKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTiht
ZW51X2l0ZW0pOwotCi0gICAgbWVudS0+aXRlbXMgPSBlaW5hX2xpc3RfYXBwZW5kKG1lbnUtPml0
ZW1zLCBtZW51X2l0ZW0pOwotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobWVu
dS0+dmlldywgImNvbnRleHRtZW51LGl0ZW0sYXBwZW5kZWQiLCBtZW51KTsKLX0KLQotLyoqCi0g
KiBAaW50ZXJuYWwKLSAqCi0gKiBFbWl0cyBhIHNpZ25hbCAiY29udGV4dG1lbnUsc2hvdyIKLSAq
Ci0gKiBAcGFyYW0gbWVudSB0aGUgY29udGV4dCBtZW51IG9iamVjdAotICovCi12b2lkIGV3a19j
b250ZXh0X21lbnVfc2hvdyhFd2tfQ29udGV4dF9NZW51KiBtZW51KQotewotICAgIEVJTkFfU0FG
RVRZX09OX05VTExfUkVUVVJOKG1lbnUpOwotCi0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJh
Y2tfY2FsbChtZW51LT52aWV3LCAiY29udGV4dG1lbnUsc2hvdyIsIG1lbnUpOwotfQotCi0jZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfY29udGV4dG1lbnUuaCBi
L1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfY29udGV4dG1lbnUuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggODEwOGExNi4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9l
d2svZXdrX2NvbnRleHRtZW51LmgKKysrIC9kZXYvbnVsbApAQCAtMSwzNDEgKzAsMCBAQAotLyoK
LSAgICBDb3B5cmlnaHQgKEMpIDIwMTAgUHJvRlVTSU9OIGVtYmVkZGVkIHN5c3RlbXMKLSAgICBD
b3B5cmlnaHQgKEMpIDIwMTAgU2Ftc3VuZyBFbGVjdHJvbmljcwotCi0gICAgVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICAgIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
Ci0gICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCi0gICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAgICBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQotICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgotCi0gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gICAgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwKLSAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSovCi0KLS8qKgotICogQGZpbGUg
ICAgZXdrX2NvbnRleHRtZW51LmgKLSAqIEBicmllZiAgIERlc2NyaWJlcyB0aGUgY29udGV4dCBt
ZW51IEFQSS4KLSAqCi0gKiBUaGUgZm9sbG93aW5nIHNpZ25hbHMgKHNlZSBldmFzX29iamVjdF9z
bWFydF9jYWxsYmFja19hZGQoKSkgYXJlIGVtaXR0ZWQ6Ci0gKgotICogIC0gImNvbnRleHRtZW51
LGN1c3RvbWl6ZSIsIEVpbmFfTGlzdCAqOiBjdXN0b21pemUgY29udGV4dCBtZW51IGlzIHRha2Vu
Ci0gKiAgICBhbmQgaXQgZ2l2ZXMgYSBsaXN0IHdpdGggaXRlbXMgb2YgY29udGV4dCBtZW51IGFz
IGFuIGFyZ3VtZW50LgotICogIC0gImNvbnRleHRtZW51LGZyZWUiLCBFd2tfQ29udGV4dF9NZW51
ICo6IGEgY29udGV4dCBtZW51IGlzIGZyZWVkLgotICogIC0gImNvbnRleHRtZW51LGl0ZW0sYXBw
ZW5kZWQiLCBFd2tfQ29udGV4dF9NZW51ICo6IGEgbmV3IGl0ZW0gd2FzIGFkZGVkIHRvCi0gKiAg
ICB0aGUgY29udGV4dCBtZW51LgotICogIC0gImNvbnRleHRtZW51LG5ldyIsIEV3a19Db250ZXh0
X01lbnUgKjogYSBuZXcgY29udGV4dCBtZW51IHdhcyBjcmVhdGVkCi0gKiAgICBhbmQgaXQgZ2l2
ZXMgdGhlIGNvbnRleHQgbWVudSBhcyBhbiBhcmd1bWVudC4KLSAqICAtICJjb250ZXh0bWVudSxz
aG93IiwgRXdrX0NvbnRleHRfTWVudSAqOiBhIGNvbnRleHQgbWVudSBpcyBzaG93bi4KLSAqLwot
Ci0jaWZuZGVmIGV3a19jb250ZXh0bWVudV9oCi0jZGVmaW5lIGV3a19jb250ZXh0bWVudV9oCi0K
LSNpbmNsdWRlIDxFaW5hLmg+Ci0jaW5jbHVkZSA8RXZhcy5oPgotCi0jaWZkZWYgX19jcGx1c3Bs
dXMKLWV4dGVybiAiQyIgewotI2VuZGlmCi0KLS8qKgotICogXGVudW0gICAgX0V3a19Db250ZXh0
X01lbnVfQWN0aW9uCi0gKiBAYnJpZWYgICBQcm92aWRlcyB0aGUgYWN0aW9ucyBvZiBpdGVtcyBm
b3IgdGhlIGNvbnRleHQgbWVudS4KLSAqIEBpbmZvICAgIEtlZXAgdGhpcyBpbiBzeW5jIHdpdGgg
Q29udGV4dE1lbnVJdGVtLmgKLSAqLwotZW51bSBfRXdrX0NvbnRleHRfTWVudV9BY3Rpb24gewot
ICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfTk9fQUNUSU9OID0gMCwgLy8gdGhpcyBpdGVt
IGlzIG5vdCBhY3R1YWxseSBpbiB3ZWJfdWlkZWxlZ2F0ZS5oCi0gICAgRVdLX0NPTlRFWFRfTUVO
VV9JVEVNX1RBR19PUEVOX0xJTktfSU5fTkVXX1dJTkRPVyA9IDEsCi0gICAgRVdLX0NPTlRFWFRf
TUVOVV9JVEVNX1RBR19ET1dOTE9BRF9MSU5LX1RPX0RJU0ssCi0gICAgRVdLX0NPTlRFWFRfTUVO
VV9JVEVNX1RBR19DT1BZX0xJTktfVE9fQ0xJUEJPQVJELAotICAgIEVXS19DT05URVhUX01FTlVf
SVRFTV9UQUdfT1BFTl9JTUFHRV9JTl9ORVdfV0lORE9XLAotICAgIEVXS19DT05URVhUX01FTlVf
SVRFTV9UQUdfRE9XTkxPQURfSU1BR0VfVE9fRElTSywKLSAgICBFV0tfQ09OVEVYVF9NRU5VX0lU
RU1fVEFHX0NPUFlfSU1BR0VfVE9fQ0xJUEJPQVJELAotICAgIEVXS19DT05URVhUX01FTlVfSVRF
TV9UQUdfQ09QWV9JTUFHRV9VUkxfVE9fQ0xJUEJPQVJELAotICAgIEVXS19DT05URVhUX01FTlVf
SVRFTV9UQUdfT1BFTl9GUkFNRV9JTl9ORVdfV0lORE9XLAotICAgIEVXS19DT05URVhUX01FTlVf
SVRFTV9UQUdfQ09QWSwKLSAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0dPX0JBQ0ssCi0g
ICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19HT19GT1JXQVJELAotICAgIEVXS19DT05URVhU
X01FTlVfSVRFTV9UQUdfU1RPUCwKLSAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1JFTE9B
RCwKLSAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0NVVCwKLSAgICBFV0tfQ09OVEVYVF9N
RU5VX0lURU1fVEFHX1BBU1RFLAotICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfU0VMRUNU
X0FMTCwKLSAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1NQRUxMSU5HX0dVRVNTLAotICAg
IEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfTk9fR1VFU1NFU19GT1VORCwKLSAgICBFV0tfQ09O
VEVYVF9NRU5VX0lURU1fVEFHX0lHTk9SRV9TUEVMTElORywKLSAgICBFV0tfQ09OVEVYVF9NRU5V
X0lURU1fVEFHX0xFQVJOX1NQRUxMSU5HLAotICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdf
T1RIRVIsCi0gICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19TRUFSQ0hfSU5fU1BPVExJR0hU
LAotICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfU0VBUkNIX1dFQiwKLSAgICBFV0tfQ09O
VEVYVF9NRU5VX0lURU1fVEFHX0xPT0tfVVBfSU5fRElDVElPTkFSWSwKLSAgICBFV0tfQ09OVEVY
VF9NRU5VX0lURU1fVEFHX09QRU5fV0lUSF9ERUZBVUxUX0FQUExJQ0FUSU9OLAotICAgIEVXS19D
T05URVhUX01FTlVfSVRFTV9QREZBQ1RVQUxfU0laRSwKLSAgICBFV0tfQ09OVEVYVF9NRU5VX0lU
RU1fUERGWk9PTV9JTiwKLSAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fUERGWk9PTV9PVVQsCi0g
ICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1BERkFVVE9fU0laRSwKLSAgICBFV0tfQ09OVEVYVF9N
RU5VX0lURU1fUERGU0lOR0xFX1BBR0UsCi0gICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1BERkZB
Q0lOR19QQUdFUywKLSAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fUERGQ09OVElOVU9VUywKLSAg
ICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fUERGTkVYVF9QQUdFLAotICAgIEVXS19DT05URVhUX01F
TlVfSVRFTV9QREZQUkVWSU9VU19QQUdFLAotICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdf
T1BFTl9MSU5LID0gMjAwMCwKLSAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0lHTk9SRV9H
UkFNTUFSLAotICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfU1BFTExJTkdfTUVOVSwgLyoq
PCBzcGVsbGluZyBvciBzcGVsbGluZy9ncmFtbWFyIHN1Yi1tZW51ICovCi0gICAgRVdLX0NPTlRF
WFRfTUVOVV9JVEVNX1RBR19TSE9XX1NQRUxMSU5HX1BBTkVMLAotICAgIEVXS19DT05URVhUX01F
TlVfSVRFTV9UQUdfQ0hFQ0tfU1BFTExJTkcsCi0gICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RB
R19DSEVDS19TUEVMTElOR19XSElMRV9UWVBJTkcsCi0gICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVN
X1RBR19DSEVDS19HUkFNTUFSX1dJVEhfU1BFTExJTkcsCi0gICAgRVdLX0NPTlRFWFRfTUVOVV9J
VEVNX1RBR19GT05UX01FTlUsIC8qKjwgZm9udCBzdWItbWVudSAqLwotICAgIEVXS19DT05URVhU
X01FTlVfSVRFTV9UQUdfU0hPV19GT05UUywKLSAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFH
X0JPTEQsCi0gICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19JVEFMSUMsCi0gICAgRVdLX0NP
TlRFWFRfTUVOVV9JVEVNX1RBR19VTkRFUkxJTkUsCi0gICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVN
X1RBR19PVVRMSU5FLAotICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfU1RZTEVTLAotICAg
IEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfU0hPV19DT0xPUlMsCi0gICAgRVdLX0NPTlRFWFRf
TUVOVV9JVEVNX1RBR19TUEVFQ0hfTUVOVSwgLyoqPCBzcGVlY2ggc3ViLW1lbnUgKi8KLSAgICBF
V0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1NUQVJUX1NQRUFLSU5HLAotICAgIEVXS19DT05URVhU
X01FTlVfSVRFTV9UQUdfU1RPUF9TUEVBS0lORywKLSAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1f
VEFHX1dSSVRJTkdfRElSRUNUSU9OX01FTlUsIC8qKjwgd3JpdGluZyBkaXJlY3Rpb24gc3ViLW1l
bnUgKi8KLSAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0RFRkFVTFRfRElSRUNUSU9OLAot
ICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfTEVGVF9UT19SSUdIVCwKLSAgICBFV0tfQ09O
VEVYVF9NRU5VX0lURU1fVEFHX1JJR0hUX1RPX0xFRlQsCi0gICAgRVdLX0NPTlRFWFRfTUVOVV9J
VEVNX1RBR19QREZTSU5HTEVfUEFHRV9TQ1JPTExJTkcsCi0gICAgRVdLX0NPTlRFWFRfTUVOVV9J
VEVNX1RBR19QREZGQUNJTkdfUEFHRVNfU0NST0xMSU5HLAotICAgIEVXS19DT05URVhUX01FTlVf
SVRFTV9UQUdfSU5TUEVDVF9FTEVNRU5ULAotICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdf
VEVYVF9ESVJFQ1RJT05fTUVOVSwgLyoqPCB0ZXh0IGRpcmVjdGlvbiBzdWItbWVudSAqLwotICAg
IEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfVEVYVF9ESVJFQ1RJT05fREVGQVVMVCwKLSAgICBF
V0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1RFWFRfRElSRUNUSU9OX0xFRlRfVE9fUklHSFQsCi0g
ICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19URVhUX0RJUkVDVElPTl9SSUdIVF9UT19MRUZU
LAotICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9PUEVOX01FRElBX0lOX05FV19XSU5ET1csCi0g
ICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19ET1dOTE9BRF9NRURJQV9UT19ESVNLLCAKLSAg
ICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0NPUFlfTUVESUFfTElOS19UT19DTElQQk9BUkQs
Ci0gICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19UT0dHTEVfTUVESUFfQ09OVFJPTFMsCi0g
ICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19UT0dHTEVfTUVESUFfTE9PUCwKLSAgICBFV0tf
Q09OVEVYVF9NRU5VX0lURU1fVEFHX0VOVEVSX1ZJREVPX0ZVTExTQ1JFRU4sCi0gICAgRVdLX0NP
TlRFWFRfTUVOVV9JVEVNX1RBR19NRURJQV9QTEFZX1BBVVNFLAotICAgIEVXS19DT05URVhUX01F
TlVfSVRFTV9UQUdfTUVESUFfTVVURSwKLSAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0RJ
Q1RBVElPTl9BTFRFUk5BVElWRSwKLSAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX09QRU5f
TElOS19JTl9USElTX1dJTkRPVywKLSAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1RPR0dM
RV9WSURFT19GVUxMX1NDUkVFTiwKLSAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fQkFTRV9DVVNU
T01fVEFHID0gNTAwMCwKLSAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fQ1VTVE9NX1RBR19OT19B
Q1RJT04gPSA1OTk4LAotICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9MQVNUX0NVU1RPTV9UQUcg
PSA1OTk5LAotICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9CQVNFX0FQUExJQ0FUSU9OX1RBRyA9
IDEwMDAwCi19OwotLyoqIENyZWF0ZXMgYSB0eXBlIG5hbWUgZm9yIF9Fd2tfQ29udGV4dF9NZW51
X0FjdGlvbiAqLwotdHlwZWRlZiBlbnVtIF9Fd2tfQ29udGV4dF9NZW51X0FjdGlvbiBFd2tfQ29u
dGV4dF9NZW51X0FjdGlvbjsKLQotLyoqCi0gKiBcZW51bSAgICBfRXdrX0NvbnRleHRfTWVudV9J
dGVtX1R5cGUKLSAqIEBicmllZiAgIERlZmluZXMgdGhlIHR5cGVzIG9mIHRoZSBpdGVtcyBmb3Ig
dGhlIGNvbnRleHQgbWVudS4KLSAqIEBpbmZvICAgIEtlZXAgdGhpcyBpbiBzeW5jIHdpdGggQ29u
dGV4dE1lbnVJdGVtLmgKLSAqLwotZW51bSBfRXdrX0NvbnRleHRfTWVudV9JdGVtX1R5cGUgewot
ICAgIEVXS19BQ1RJT05fVFlQRSwKLSAgICBFV0tfQ0hFQ0tBQkxFX0FDVElPTl9UWVBFLAotICAg
IEVXS19TRVBBUkFUT1JfVFlQRSwKLSAgICBFV0tfU1VCTUVOVV9UWVBFCi19OwotLyoqIENyZWF0
ZXMgYSB0eXBlIG5hbWUgZm9yIF9Fd2tfQ29udGV4dF9NZW51X0l0ZW1fVHlwZSAqLwotdHlwZWRl
ZiBlbnVtIF9Fd2tfQ29udGV4dF9NZW51X0l0ZW1fVHlwZSAgICBFd2tfQ29udGV4dF9NZW51X0l0
ZW1fVHlwZTsKLQotLyoqIENyZWF0ZXMgYSB0eXBlIG5hbWUgZm9yIF9Fd2tfQ29udGV4dF9NZW51
ICovCi10eXBlZGVmIHN0cnVjdCBfRXdrX0NvbnRleHRfTWVudSAgICAgICAgICAgIEV3a19Db250
ZXh0X01lbnU7Ci0KLS8qKiBDcmVhdGVzIGEgdHlwZSBuYW1lIGZvciBfRXdrX0NvbnRleHRfTWVu
dV9JdGVtICovCi10eXBlZGVmIHN0cnVjdCBfRXdrX0NvbnRleHRfTWVudV9JdGVtICAgICAgIEV3
a19Db250ZXh0X01lbnVfSXRlbTsKLQotCi0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKiBF
eHBvcnRlZCBmdW5jdGlvbnMgKioqKioqKioqKioqKioqKioqKioqKiovCi0KLS8qKgotICogSW5j
cmVhc2VzIHRoZSByZWZlcmVuY2UgY291bnQgb2YgdGhlIGdpdmVuIG9iamVjdC4KLSAqCi0gKiBA
cGFyYW0gbWVudSB0aGUgY29udGV4dCBtZW51IG9iamVjdCB0byBpbmNyZWFzZSB0aGUgcmVmZXJl
bmNlIGNvdW50Ci0gKi8KLUVBUEkgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgIGV3a19jb250
ZXh0X21lbnVfcmVmKEV3a19Db250ZXh0X01lbnUgKm1lbnUpOwotCi0vKioKLSAqIERlY3JlYXNl
cyB0aGUgcmVmZXJlbmNlIGNvdW50IG9mIHRoZSBnaXZlbiBvYmplY3QsIHBvc3NpYmx5IGZyZWVp
bmcgaXQuCi0gKgotICogV2hlbiB0aGUgcmVmZXJlbmNlIGNvdW50IHJlYWNoZXMgMCwgdGhlIG1l
bnUgd2l0aCBhbGwgaXRzIGl0ZW1zIGFyZSBmcmVlZC4KLSAqCi0gKiBAcGFyYW0gbWVudSB0aGUg
Y29udGV4dCBtZW51IG9iamVjdCB0byBkZWNyZWFzZSB0aGUgcmVmZXJlbmNlIGNvdW50Ci0gKi8K
LUVBUEkgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgIGV3a19jb250ZXh0X21lbnVfdW5yZWYo
RXdrX0NvbnRleHRfTWVudSAqbWVudSk7Ci0KLS8qKgotICogRGVzdHJveXMgdGhlIGNvbnRleHQg
bWVudSBvYmplY3QuCi0gKgotICogQHBhcmFtIG1lbnUgdGhlIGNvbnRleHQgbWVudSBvYmplY3Qg
dG8gZGVzdHJveQotICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcywgQGMgRUlOQV9G
QUxTRSBvbiBmYWlsdXJlCi0gKgotICogQHNlZSBld2tfY29udGV4dF9tZW51X2l0ZW1fZnJlZQot
ICovCi1FQVBJIEVpbmFfQm9vbCAgICAgICAgICAgICAgICAgICBld2tfY29udGV4dF9tZW51X2Rl
c3Ryb3koRXdrX0NvbnRleHRfTWVudSAqbWVudSk7Ci0KLS8qKgotICogR2V0cyB0aGUgbGlzdCBv
ZiBpdGVtcy4KLSAqCi0gKiBAcGFyYW0gbyB0aGUgY29udGV4dCBtZW51IG9iamVjdCB0byBnZXQg
bGlzdCBvZiB0aGUgaXRlbXMKLSAqIEByZXR1cm4gdGhlIGxpc3Qgb2YgdGhlIGl0ZW1zIG9uIHN1
Y2Nlc3Mgb3IgQGMgTlVMTCBvbiBmYWlsdXJlCi0gKi8KLUVBUEkgY29uc3QgRWluYV9MaXN0ICAg
ICAgICAgICAgKmV3a19jb250ZXh0X21lbnVfaXRlbV9saXN0X2dldChjb25zdCBFd2tfQ29udGV4
dF9NZW51ICpvKTsKLQotLyoqCi0gKiBDcmVhdGVzIGEgbmV3IGl0ZW0gb2YgdGhlIGNvbnRleHQg
bWVudS4KLSAqCi0gKiBAcGFyYW0gdHlwZSBzcGVjaWZpZXMgYSB0eXBlIG9mIHRoZSBpdGVtCi0g
KiBAcGFyYW0gYWN0aW9uIHNwZWNpZmllcyBhIGFjdGlvbiBvZiB0aGUgaXRlbQotICogQHBhcmFt
IHBhcmVudF9tZW51IHNwZWNpZmllcyBhIHBhcmVudCBtZW51IG9mIHRoZSBpdGVtCi0gKiBAcGFy
YW0gc3VibWVudSBzcGVjaWZpZXMgYSBzdWJtZW51IG9mIHRoZSBpdGVtCi0gKiBAcGFyYW0gdGl0
bGUgc3BlY2lmaWVzIGEgdGl0bGUgb2YgdGhlIGl0ZW0KLSAqIEBwYXJhbSBjaGVja2VkIEBjIEVJ
TkFfVFJVRSBpZiB0aGUgaXRlbSBzaG91bGQgYmUgdG9nZ2xlZCBvciBAYyBFSU5BX0ZBTFNFIGlm
IG5vdAotICogQHBhcmFtIGVuYWJsZWQgQGMgRUlOQV9UUlVFIHRvIGVuYWJsZSB0aGUgaXRlbSBv
ciBAYyBFSU5BX0ZBTFNFIHRvIGRpc2FibGUKLSAqIEByZXR1cm4gdGhlIHBvaW50ZXIgdG8gdGhl
IG5ldyBpdGVtIG9uIHN1Y2Nlc3Mgb3IgQGMgTlVMTCBvbiBmYWlsdXJlCi0gKgotICogQG5vdGUg
VGhlIHJldHVybiB2YWx1ZSBAYiBzaG91bGQgQGIgYmUgZnJlZWQgYWZ0ZXIgdXNlLgotICovCi1F
QVBJIEV3a19Db250ZXh0X01lbnVfSXRlbSAgICAgICpld2tfY29udGV4dF9tZW51X2l0ZW1fbmV3
KEV3a19Db250ZXh0X01lbnVfSXRlbV9UeXBlIHR5cGUsIEV3a19Db250ZXh0X01lbnVfQWN0aW9u
IGFjdGlvbiwgRXdrX0NvbnRleHRfTWVudSAqcGFyZW50X21lbnUsIEV3a19Db250ZXh0X01lbnUg
KnN1Ym1lbnUsIGNvbnN0IGNoYXIgKnRpdGxlLCBFaW5hX0Jvb2wgY2hlY2tlZCwgRWluYV9Cb29s
IGVuYWJsZWQpOwotCi0vKioKLSAqIERlc3Ryb3lzIHRoZSBpdGVtIG9mIHRoZSBjb250ZXh0IG1l
bnUgb2JqZWN0LgotICoKLSAqIEBwYXJhbSBpdGVtIHRoZSBpdGVtIHRvIGRlc3Ryb3kKLSAqCi0g
KiBAc2VlIGV3a19jb250ZXh0X21lbnVfZGVzdHJveQotICogQHNlZSBld2tfY29udGV4dF9tZW51
X3VucmVmCi0gKi8KLUVBUEkgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgIGV3a19jb250ZXh0
X21lbnVfaXRlbV9mcmVlKEV3a19Db250ZXh0X01lbnVfSXRlbSAqaXRlbSk7Ci0KLS8qKgotICog
U2VsZWN0cyB0aGUgaXRlbSBmcm9tIHRoZSBjb250ZXh0IG1lbnUgb2JqZWN0LgotICoKLSAqIEBw
YXJhbSBtZW51IHRoZSBjb250ZXh0IG1lbnUgb2JqZWN0Ci0gKiBAcGFyYW0gaXRlbSB0aGUgaXRl
bSBpcyBzZWxlY3RlZAotICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcyBvciBAYyBF
SU5BX0ZBTFNFIG9uIGZhaWx1cmUKLSAqLwotRUFQSSBFaW5hX0Jvb2wgICAgICAgICAgICAgICAg
ICAgZXdrX2NvbnRleHRfbWVudV9pdGVtX3NlbGVjdChFd2tfQ29udGV4dF9NZW51ICptZW51LCBF
d2tfQ29udGV4dF9NZW51X0l0ZW0gKml0ZW0pOwotCi0vKioKLSAqIEdldHMgdHlwZSBvZiB0aGUg
aXRlbS4KLSAqCi0gKiBAcGFyYW0gbyB0aGUgaXRlbSB0byBnZXQgdGhlIHR5cGUKLSAqIEByZXR1
cm4gdHlwZSBvZiB0aGUgaXRlbSBvbiBzdWNjZXNzIG9yIEBjIEVXS19BQ1RJT05fVFlQRSBvbiBm
YWlsdXJlCi0gKgotICogQHNlZSBld2tfY29udGV4dF9tZW51X2l0ZW1fdHlwZV9zZXQKLSAqLwot
RUFQSSBFd2tfQ29udGV4dF9NZW51X0l0ZW1fVHlwZSAgZXdrX2NvbnRleHRfbWVudV9pdGVtX3R5
cGVfZ2V0KGNvbnN0IEV3a19Db250ZXh0X01lbnVfSXRlbSAqbyk7Ci0KLS8qKgotICogU2V0cyB0
aGUgdHlwZSBvZiBpdGVtLgotICoKLSAqIEBwYXJhbSBvIHRoZSBpdGVtIHRvIHNldCB0aGUgdHlw
ZQotICogQHBhcmFtIHR5cGUgYSBuZXcgdHlwZSBmb3IgdGhlIGl0ZW0gb2JqZWN0Ci0gKiBAcmV0
dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzLCBvciBAYyBFSU5BX0ZBTFNFIG9uIGZhaWx1cmUK
LSAqCi0gKiBAc2VlIGV3a19jb250ZXh0X21lbnVfaXRlbV90eXBlX2dldAotICovCi1FQVBJIEVp
bmFfQm9vbCAgICAgICAgICAgICAgICAgICBld2tfY29udGV4dF9tZW51X2l0ZW1fdHlwZV9zZXQo
RXdrX0NvbnRleHRfTWVudV9JdGVtICpvLCBFd2tfQ29udGV4dF9NZW51X0l0ZW1fVHlwZSB0eXBl
KTsKLQotLyoqCi0gKiBHZXRzIGFuIGFjdGlvbiBvZiB0aGUgaXRlbS4KLSAqCi0gKiBAcGFyYW0g
byB0aGUgaXRlbSB0byBnZXQgdGhlIGFjdGlvbgotICogQHJldHVybiBhbiBhY3Rpb24gb2YgdGhl
IGl0ZW0gb24gc3VjY2VzcyBvciBAYyBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX05PX0FDVElP
TiBvbiBmYWlsdXJlCi0gKgotICogQHNlZSBld2tfY29udGV4dF9tZW51X2l0ZW1fYWN0aW9uX3Nl
dAotICovCi1FQVBJIEV3a19Db250ZXh0X01lbnVfQWN0aW9uICAgICBld2tfY29udGV4dF9tZW51
X2l0ZW1fYWN0aW9uX2dldChjb25zdCBFd2tfQ29udGV4dF9NZW51X0l0ZW0gKm8pOwotCi0vKioK
LSAqIFNldHMgYW4gYWN0aW9uIG9mIHRoZSBpdGVtLgotICoKLSAqIEBwYXJhbSBvIHRoZSBpdGVt
IHRvIHNldCB0aGUgYWN0aW9uCi0gKiBAcGFyYW0gYWN0aW9uIGEgbmV3IGFjdGlvbiBmb3IgdGhl
IGl0ZW0gb2JqZWN0Ci0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzLCBvciBAYyBF
SU5BX0ZBTFNFIG9uIGZhaWx1cmUKLSAqCi0gKiBAc2VlIGV3a19jb250ZXh0X21lbnVfaXRlbV9h
Y3Rpb25fZ2V0Ci0gKi8KLUVBUEkgRWluYV9Cb29sICAgICAgICAgICAgICAgICAgIGV3a19jb250
ZXh0X21lbnVfaXRlbV9hY3Rpb25fc2V0KEV3a19Db250ZXh0X01lbnVfSXRlbSAqbywgRXdrX0Nv
bnRleHRfTWVudV9BY3Rpb24gYWN0aW9uKTsKLQotLyoqCi0gKiBHZXRzIGEgdGl0bGUgb2YgdGhl
IGl0ZW0uCi0gKgotICogQHBhcmFtIG8gdGhlIGl0ZW0gdG8gZ2V0IHRoZSB0aXRsZQotICogQHJl
dHVybiBhIHRpdGxlIG9mIHRoZSBpdGVtIG9uIHN1Y2Nlc3MsIG9yIEBjIE5VTEwgb24gZmFpbHVy
ZQotICoKLSAqIEBzZWUgZXdrX2NvbnRleHRfbWVudV9pdGVtX3RpdGxlX3NldAotICovCi1FQVBJ
IGNvbnN0IGNoYXIgICAgICAgICAgICAgICAgICpld2tfY29udGV4dF9tZW51X2l0ZW1fdGl0bGVf
Z2V0KGNvbnN0IEV3a19Db250ZXh0X01lbnVfSXRlbSAqbyk7Ci0KLS8qKgotICogU2V0cyBhIHRp
dGxlIG9mIHRoZSBpdGVtLgotICoKLSAqIEBwYXJhbSBvIHRoZSBpdGVtIHRvIHNldCB0aGUgdGl0
bGUKLSAqIEBwYXJhbSB0aXRsZSBhIG5ldyB0aXRsZSBmb3IgdGhlIGl0ZW0gb2JqZWN0Ci0gKiBA
cmV0dXJuIGEgbmV3IHRpdGxlIG9mIHRoZSBpdGVtIG9uIHN1Y2Nlc3Mgb3IgQGMgTlVMTCBvbiBm
YWlsdXJlCi0gKgotICogQHNlZSBld2tfY29udGV4dF9tZW51X2l0ZW1fdGl0bGVfZ2V0Ci0gKi8K
LUVBUEkgY29uc3QgY2hhciAgICAgICAgICAgICAgICAgKmV3a19jb250ZXh0X21lbnVfaXRlbV90
aXRsZV9zZXQoRXdrX0NvbnRleHRfTWVudV9JdGVtICpvLCBjb25zdCBjaGFyICp0aXRsZSk7Ci0K
LS8qKgotICogUXVlcmllcyBpZiB0aGUgaXRlbSBpcyB0b2dnbGVkLgotICoKLSAqIEBwYXJhbSBv
IHRoZSBpdGVtIHRvIHF1ZXJ5IGlmIHRoZSBpdGVtIGlzIHRvZ2dsZWQKLSAqIEByZXR1cm4gQGMg
RUlOQV9UUlVFIGlmIHRoZSBpdGVtIGlzIHRvZ2dsZWQgb3IgQGMgRUlOQV9GQUxTRSBpZiBub3Qg
b3Igb24gZmFpbHVyZQotICovCi1FQVBJIEVpbmFfQm9vbCAgICAgICAgICAgICAgICAgICBld2tf
Y29udGV4dF9tZW51X2l0ZW1fY2hlY2tlZF9nZXQoY29uc3QgRXdrX0NvbnRleHRfTWVudV9JdGVt
ICpvKTsKLQotLyoqCi0gKiBTZXRzIGlmIHRoZSBpdGVtIHNob3VsZCBiZSB0b2dnbGVkLgotICoK
LSAqIEBwYXJhbSBvIHRoZSBpdGVtIHRvIGJlIHRvZ2dsZWQKLSAqIEBwYXJhbSBjaGVja2VkIEBj
IEVJTkFfVFJVRSBpZiB0aGUgaXRlbSBzaG91bGQgYmUgdG9nZ2xlZCBvciBAYyBFSU5BX0ZBTFNF
IGlmIG5vdAotICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcyBvciBAYyBFSU5BX0ZB
TFNFIG9uIGZhaWx1cmUKLSAqLwotRUFQSSBFaW5hX0Jvb2wgICAgICAgICAgICAgICAgICAgZXdr
X2NvbnRleHRfbWVudV9pdGVtX2NoZWNrZWRfc2V0KEV3a19Db250ZXh0X01lbnVfSXRlbSAqbywg
RWluYV9Cb29sIGNoZWNrZWQpOwotCi0vKioKLSAqIEdldHMgaWYgdGhlIGl0ZW0gaXMgZW5hYmxl
ZC4KLSAqCi0gKiBAcGFyYW0gbyB0aGUgaXRlbSB0byBnZXQgZW5hYmxlZCBzdGF0ZQotICogQHJl
dHVybiBAYyBFSU5BX1RSVUUgaWYgaXQncyBlbmFibGVkLCBAYyBFSU5BX0ZBTFNFIGlmIG5vdCBv
ciBvbiBmYWlsdXJlCi0gKgotICogQHNlZSBld2tfY29udGV4dF9tZW51X2l0ZW1fZW5hYmxlZF9z
ZXQKLSAqLwotRUFQSSBFaW5hX0Jvb2wgICAgICAgICAgICAgICAgICAgZXdrX2NvbnRleHRfbWVu
dV9pdGVtX2VuYWJsZWRfZ2V0KGNvbnN0IEV3a19Db250ZXh0X01lbnVfSXRlbSAqbyk7Ci0KLS8q
KgotICogRW5hYmxlcy9kaXNhYmxlcyB0aGUgaXRlbS4KLSAqCi0gKiBAcGFyYW0gbyB0aGUgaXRl
bSB0byBlbmFibGUvZGlzYWJsZQotICogQHBhcmFtIGVuYWJsZWQgQGMgRUlOQV9UUlVFIHRvIGVu
YWJsZSB0aGUgaXRlbSBvciBAYyBFSU5BX0ZBTFNFIHRvIGRpc2FibGUKLSAqIEByZXR1cm4gQGMg
RUlOQV9UUlVFIG9uIHN1Y2Nlc3MsIG9yIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZQotICoKLSAq
IEBzZWUgZXdrX2NvbnRleHRfbWVudV9pdGVtX2VuYWJsZWRfZ2V0Ci0gKi8KLUVBUEkgRWluYV9C
b29sICAgICAgICAgICAgICAgICAgIGV3a19jb250ZXh0X21lbnVfaXRlbV9lbmFibGVkX3NldChF
d2tfQ29udGV4dF9NZW51X0l0ZW0gKm8sIEVpbmFfQm9vbCBlbmFibGVkKTsKLQotLyoqCi0gKiBH
ZXRzIHRoZSBwYXJlbnQgbWVudSBmb3IgY29udGV4dCBtZW51IGl0ZW0uCi0gKgotICogQHBhcmFt
IG8gdGhlIGNvbnRleHQgbWVudSBpdGVtIG9iamVjdAotICogQHJldHVybiBhIGNvbnRleHQgbWVu
dSBvYmplY3Qgb24gc3VjY2VzcyBvciBAYyBOVUxMIG9uIGZhaWx1cmUKLSAqLwotRUFQSSBFd2tf
Q29udGV4dF9NZW51ICAgICAgICAgICAqZXdrX2NvbnRleHRfbWVudV9pdGVtX3BhcmVudF9nZXQo
Y29uc3QgRXdrX0NvbnRleHRfTWVudV9JdGVtICpvKTsKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi19
Ci0jZW5kaWYKLSNlbmRpZiAvLyBld2tfY29udGV4dG1lbnVfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9lZmwvZXdrL2V3a19jb250ZXh0bWVudV9wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0
L2VmbC9ld2svZXdrX2NvbnRleHRtZW51X3ByaXZhdGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggOTVkY2RhYS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdr
X2NvbnRleHRtZW51X3ByaXZhdGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLS8q
Ci0gICAgQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgUHJvRlVTSU9OIGVtYmVkZGVkIHN5c3RlbXMK
LSAgICBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCi0KLSAgICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCi0gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgotICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAg
ICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAotICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotKi8KLQotI2lm
bmRlZiBld2tfY29udGV4dG1lbnVfcHJpdmF0ZV9oCi0jZGVmaW5lIGV3a19jb250ZXh0bWVudV9w
cml2YXRlX2gKLQotI2luY2x1ZGUgImV3a19jb250ZXh0bWVudS5oIgotCi0vLyBmb3J3YXJkIGRl
Y2xhcmF0aW9ucwotbmFtZXNwYWNlIFdlYkNvcmUgewotc3RydWN0IENvbnRleHRNZW51Owotc3Ry
dWN0IENvbnRleHRNZW51SXRlbTsKLX0KLQotI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQotRXdr
X0NvbnRleHRfTWVudSogZXdrX2NvbnRleHRfbWVudV9uZXcoRXZhc19PYmplY3QqIHZpZXcsIFdl
YkNvcmU6OkNvbnRleHRNZW51Q29udHJvbGxlciogY29udHJvbGxlciwgV2ViQ29yZTo6Q29udGV4
dE1lbnUqIGNvcmVNZW51KTsKLWJvb2wgZXdrX2NvbnRleHRfbWVudV9mcmVlKEV3a19Db250ZXh0
X01lbnUqIG1lbnUpOwotdm9pZCBld2tfY29udGV4dF9tZW51X2l0ZW1fYXBwZW5kKEV3a19Db250
ZXh0X01lbnUqIG1lbnUsIGNvbnN0IFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbSYgY29yZSk7Ci12
b2lkIGV3a19jb250ZXh0X21lbnVfc2hvdyhFd2tfQ29udGV4dF9NZW51KiBtZW51KTsKLSNlbmRp
ZgotCi0jZW5kaWYgLy8gZXdrX2NvbnRleHRfbWVudV9wcml2YXRlX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfY29va2llcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9l
d2svZXdrX2Nvb2tpZXMuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MzNhZTgx
Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfY29va2llcy5jcHAKKysr
IC9kZXYvbnVsbApAQCAtMSwxNjQgKzAsMCBAQAotLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMTAg
UHJvRlVTSU9OIGVtYmVkZGVkIHN5c3RlbXMKLSAgICBDb3B5cmlnaHQgKEMpIDIwMTAgU2Ftc3Vu
ZyBFbGVjdHJvbmljcwotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gICAgTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gICAgdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgot
Ci0gICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICAgIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0gICAgWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZQotICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIu
ICBJZiBub3QsIHdyaXRlIHRvCi0gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAgICBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KLSovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJld2tfY29v
a2llcy5oIgotCi0jaW5jbHVkZSAiQ29va2llSmFyU291cC5oIgotI2luY2x1ZGUgIlNvdXBOZXR3
b3JrU2Vzc2lvbi5oIgotI2luY2x1ZGUgPEVpbmEuaD4KLSNpbmNsdWRlIDxlaW5hX3NhZmV0eV9j
aGVja3MuaD4KLSNpbmNsdWRlIDxnbGliLmg+Ci0jaW5jbHVkZSA8bGlic291cC9zb3VwLmg+Ci0j
aW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgotCi1FaW5hX0Jvb2wgZXdrX2Nvb2tpZXNfZmls
ZV9zZXQoY29uc3QgY2hhciogZmlsZW5hbWUpCi17Ci0gICAgU291cENvb2tpZUphciogY29va2ll
SmFyID0gMDsKLSAgICBpZiAoZmlsZW5hbWUpCi0gICAgICAgIGNvb2tpZUphciA9IHNvdXBfY29v
a2llX2phcl90ZXh0X25ldyhmaWxlbmFtZSwgRkFMU0UpOwotICAgIGVsc2UKLSAgICAgICAgY29v
a2llSmFyID0gc291cF9jb29raWVfamFyX25ldygpOwotCi0gICAgaWYgKCFjb29raWVKYXIpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHNvdXBfY29va2llX2phcl9zZXRfYWNjZXB0X3Bv
bGljeShjb29raWVKYXIsIFNPVVBfQ09PS0lFX0pBUl9BQ0NFUFRfTk9fVEhJUkRfUEFSVFkpOwot
Ci0gICAgV2ViQ29yZTo6U291cE5ldHdvcmtTZXNzaW9uOjpkZWZhdWx0U2Vzc2lvbigpLnNldENv
b2tpZUphcihjb29raWVKYXIpOwotICAgIFdlYkNvcmU6OnNldFNvdXBDb29raWVKYXIoY29va2ll
SmFyKTsKLSAgICBnX29iamVjdF91bnJlZihjb29raWVKYXIpOwotCi0gICAgcmV0dXJuIHRydWU7
Ci19Ci0KLXZvaWQgZXdrX2Nvb2tpZXNfY2xlYXIodm9pZCkKLXsKLSAgICBHU0xpc3QqIGxpc3Q7
Ci0gICAgR1NMaXN0KiBwOwotICAgIFNvdXBDb29raWVKYXIqIGNvb2tpZUphciA9IFdlYkNvcmU6
OnNvdXBDb29raWVKYXIoKTsKLQotICAgIGxpc3QgPSBzb3VwX2Nvb2tpZV9qYXJfYWxsX2Nvb2tp
ZXMoY29va2llSmFyKTsKLSAgICBmb3IgKHAgPSBsaXN0OyBwOyBwID0gcC0+bmV4dCkKLSAgICAg
ICAgc291cF9jb29raWVfamFyX2RlbGV0ZV9jb29raWUoY29va2llSmFyLCAoU291cENvb2tpZSop
cC0+ZGF0YSk7Ci0KLSAgICBzb3VwX2Nvb2tpZXNfZnJlZShsaXN0KTsKLX0KLQotRWluYV9MaXN0
KiBld2tfY29va2llc19nZXRfYWxsKHZvaWQpCi17Ci0gICAgRWluYV9MaXN0KiByZXN1bHQgPSAw
OwotICAgIEdTTGlzdCogbGlzdDsKLSAgICBHU0xpc3QqIHA7Ci0gICAgU291cENvb2tpZUphciog
Y29va2llSmFyID0gV2ViQ29yZTo6c291cENvb2tpZUphcigpOwotCi0gICAgbGlzdCA9IHNvdXBf
Y29va2llX2phcl9hbGxfY29va2llcyhjb29raWVKYXIpOwotICAgIGZvciAocCA9IGxpc3Q7IHA7
IHAgPSBwLT5uZXh0KSB7Ci0gICAgICAgIFNvdXBDb29raWUqIGNvb2tpZSA9IHN0YXRpY19jYXN0
PFNvdXBDb29raWUqPihwLT5kYXRhKTsKLSAgICAgICAgRXdrX0Nvb2tpZSogZXdrQ29va2llID0g
bmV3IEV3a19Db29raWU7Ci0gICAgICAgIGV3a0Nvb2tpZS0+bmFtZSA9IGVpbmFfc3RyaW5nc2hh
cmVfYWRkKGNvb2tpZS0+bmFtZSk7Ci0gICAgICAgIGV3a0Nvb2tpZS0+dmFsdWUgPSBlaW5hX3N0
cmluZ3NoYXJlX2FkZChjb29raWUtPnZhbHVlKTsKLSAgICAgICAgZXdrQ29va2llLT5kb21haW4g
PSBlaW5hX3N0cmluZ3NoYXJlX2FkZChjb29raWUtPmRvbWFpbik7Ci0gICAgICAgIGV3a0Nvb2tp
ZS0+cGF0aCA9IGVpbmFfc3RyaW5nc2hhcmVfYWRkKGNvb2tpZS0+cGF0aCk7Ci0gICAgICAgIGV3
a0Nvb2tpZS0+ZXhwaXJlcyA9IHNvdXBfZGF0ZV90b190aW1lX3QoY29va2llLT5leHBpcmVzKTsK
LSAgICAgICAgZXdrQ29va2llLT5zZWN1cmUgPSBzdGF0aWNfY2FzdDxFaW5hX0Jvb2w+KGNvb2tp
ZS0+c2VjdXJlKTsKLSAgICAgICAgZXdrQ29va2llLT5odHRwX29ubHkgPSBzdGF0aWNfY2FzdDxF
aW5hX0Jvb2w+KGNvb2tpZS0+aHR0cF9vbmx5KTsKLSAgICAgICAgcmVzdWx0ID0gZWluYV9saXN0
X2FwcGVuZChyZXN1bHQsIGV3a0Nvb2tpZSk7Ci0gICAgfQotCi0gICAgc291cF9jb29raWVzX2Zy
ZWUobGlzdCk7Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi12b2lkIGV3a19jb29raWVzX2Nv
b2tpZV9kZWwoRXdrX0Nvb2tpZSogY29va2llKQotewotICAgIEVJTkFfU0FGRVRZX09OX05VTExf
UkVUVVJOKGNvb2tpZSk7Ci0gICAgR1NMaXN0KiBsaXN0OwotICAgIEdTTGlzdCogcDsKLSAgICBT
b3VwQ29va2llSmFyKiBjb29raWVKYXIgPSBXZWJDb3JlOjpzb3VwQ29va2llSmFyKCk7Ci0gICAg
U291cENvb2tpZSogY29va2llMSA9IHNvdXBfY29va2llX25ldygKLSAgICAgICAgY29va2llLT5u
YW1lLCBjb29raWUtPnZhbHVlLCBjb29raWUtPmRvbWFpbiwgY29va2llLT5wYXRoLCAtMSk7Ci0K
LSAgICBsaXN0ID0gc291cF9jb29raWVfamFyX2FsbF9jb29raWVzKGNvb2tpZUphcik7Ci0gICAg
Zm9yIChwID0gbGlzdDsgcDsgcCA9IHAtPm5leHQpIHsKLSAgICAgICAgU291cENvb2tpZSogY29v
a2llMiA9IHN0YXRpY19jYXN0PFNvdXBDb29raWUqPihwLT5kYXRhKTsKLSAgICAgICAgaWYgKHNv
dXBfY29va2llX2VxdWFsKGNvb2tpZTEsIGNvb2tpZTIpKSB7Ci0gICAgICAgICAgICBzb3VwX2Nv
b2tpZV9qYXJfZGVsZXRlX2Nvb2tpZShjb29raWVKYXIsIGNvb2tpZTIpOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBzb3VwX2Nvb2tpZV9mcmVlKGNvb2tpZTEp
OwotICAgIHNvdXBfY29va2llc19mcmVlKGxpc3QpOwotfQotCi12b2lkIGV3a19jb29raWVzX2Nv
b2tpZV9mcmVlKEV3a19Db29raWUqIGNvb2tpZSkKLXsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxM
X1JFVFVSTihjb29raWUpOwotICAgIGVpbmFfc3RyaW5nc2hhcmVfZGVsKGNvb2tpZS0+bmFtZSk7
Ci0gICAgZWluYV9zdHJpbmdzaGFyZV9kZWwoY29va2llLT52YWx1ZSk7Ci0gICAgZWluYV9zdHJp
bmdzaGFyZV9kZWwoY29va2llLT5kb21haW4pOwotICAgIGVpbmFfc3RyaW5nc2hhcmVfZGVsKGNv
b2tpZS0+cGF0aCk7Ci0gICAgZGVsZXRlIGNvb2tpZTsKLX0KLQotdm9pZCBld2tfY29va2llc19w
b2xpY3lfc2V0KEV3a19Db29raWVfUG9saWN5IGNvb2tpZVBvbGljeSkKLXsKLSAgICBTb3VwQ29v
a2llSmFyKiBjb29raWVKYXIgPSBXZWJDb3JlOjpzb3VwQ29va2llSmFyKCk7Ci0gICAgU291cENv
b2tpZUphckFjY2VwdFBvbGljeSBwb2xpY3k7Ci0KLSAgICBwb2xpY3kgPSBTT1VQX0NPT0tJRV9K
QVJfQUNDRVBUX0FMV0FZUzsKLSAgICBzd2l0Y2ggKGNvb2tpZVBvbGljeSkgewotICAgIGNhc2Ug
RVdLX0NPT0tJRV9KQVJfQUNDRVBUX05FVkVSOgotICAgICAgICBwb2xpY3kgPSBTT1VQX0NPT0tJ
RV9KQVJfQUNDRVBUX05FVkVSOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEVXS19DT09LSUVf
SkFSX0FDQ0VQVF9BTFdBWVM6Ci0gICAgICAgIHBvbGljeSA9IFNPVVBfQ09PS0lFX0pBUl9BQ0NF
UFRfQUxXQVlTOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEVXS19DT09LSUVfSkFSX0FDQ0VQ
VF9OT19USElSRF9QQVJUWToKLSAgICAgICAgcG9saWN5ID0gU09VUF9DT09LSUVfSkFSX0FDQ0VQ
VF9OT19USElSRF9QQVJUWTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgc291cF9jb29r
aWVfamFyX3NldF9hY2NlcHRfcG9saWN5KGNvb2tpZUphciwgcG9saWN5KTsKLX0KLQotRXdrX0Nv
b2tpZV9Qb2xpY3kgZXdrX2Nvb2tpZXNfcG9saWN5X2dldCh2b2lkKQotewotICAgIEV3a19Db29r
aWVfUG9saWN5IGV3a1BvbGljeSA9IEVXS19DT09LSUVfSkFSX0FDQ0VQVF9BTFdBWVM7Ci0gICAg
U291cENvb2tpZUphciogY29va2llSmFyID0gV2ViQ29yZTo6c291cENvb2tpZUphcigpOwotICAg
IFNvdXBDb29raWVKYXJBY2NlcHRQb2xpY3kgcG9saWN5OwotCi0gICAgcG9saWN5ID0gc291cF9j
b29raWVfamFyX2dldF9hY2NlcHRfcG9saWN5KGNvb2tpZUphcik7Ci0gICAgc3dpdGNoIChwb2xp
Y3kpIHsKLSAgICBjYXNlIFNPVVBfQ09PS0lFX0pBUl9BQ0NFUFRfTkVWRVI6Ci0gICAgICAgIGV3
a1BvbGljeSA9IEVXS19DT09LSUVfSkFSX0FDQ0VQVF9ORVZFUjsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBTT1VQX0NPT0tJRV9KQVJfQUNDRVBUX0FMV0FZUzoKLSAgICAgICAgZXdrUG9saWN5
ID0gRVdLX0NPT0tJRV9KQVJfQUNDRVBUX0FMV0FZUzsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBTT1VQX0NPT0tJRV9KQVJfQUNDRVBUX05PX1RISVJEX1BBUlRZOgotICAgICAgICBld2tQb2xp
Y3kgPSBFV0tfQ09PS0lFX0pBUl9BQ0NFUFRfTk9fVEhJUkRfUEFSVFk7Ci0gICAgICAgIGJyZWFr
OwotICAgIH0KLQotICAgIHJldHVybiBld2tQb2xpY3k7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9ld2svZXdrX2Nvb2tpZXMuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tf
Y29va2llcy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYmEwZWJlLi4wMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfY29va2llcy5oCisrKyAvZGV2L251bGwK
QEAgLTEsMTQ2ICswLDAgQEAKLS8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDEwIFByb0ZVU0lPTiBl
bWJlZGRlZCBzeXN0ZW1zCi0gICAgQ29weXJpZ2h0IChDKSAyMDEwIFNhbXN1bmcgRWxlY3Ryb25p
Y3MKLQotICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKLSAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICAgIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLQotICAgIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAotICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCi0gICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLQotICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAgICBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3
cml0ZSB0bwotICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0Eu
Ci0qLwotCi0vKioKLSAqIEBmaWxlICAgIGV3a19jb29raWVzLmgKLSAqIEBicmllZiAgIFRoZSBF
d2sgY29va2llcyBBUEkuCi0gKgotICogQG5vdGUgSWYgdGhlIGxpYnNvdXAgbmV0d29yayBiYWNr
ZW5kIGlzIGJlaW5nIHVzZWQgdGhlIGZ1bmN0aW9ucyBoZXJlIHdpbGwKLSAqIG9ubHkgd29yayB3
aXRoIHRoZSBAYiBkZWZhdWx0IFNvdXBTZXNzaW9uLCB3aGljaCBjYW4gYmUgcmV0cmlldmVkIHdp
dGgKLSAqIGV3a19uZXR3b3JrX2RlZmF1bF9zb3VwX3Nlc3Npb25fZ2V0KCkuIElmIGEgZGlmZmVy
ZW50IFNvdXBTZXNzaW9uIGlzIHVzZWQKLSAqIGFuZCBhc3NvY2lhdGVkIHdpdGggYSB2aWV3IHdp
dGggZXdrX3ZpZXdfc291cF9zZXNzaW9uX3NldCgpLCBhbGwgY29va2llCi0gKiBtYW5hZ2VtZW50
IHdpbGwgaGF2ZSB0byBiZSBkb25lIG1hbnVhbGx5LgotICovCi0KLSNpZm5kZWYgZXdrX2Nvb2tp
ZXNfaAotI2RlZmluZSBld2tfY29va2llc19oCi0KLSNpbmNsdWRlIDxFaW5hLmg+Ci0KLSNpZmRl
ZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJDIiB7Ci0jZW5kaWYKLQotLyoqCi0gKiBcc3RydWN0ICBf
RXdrX0Nvb2tpZQotICoKLSAqIEBicmllZiAgIERlc2NyaWJlcyBwcm9wZXJ0aWVzIG9mIGFuIEhU
VFAgY29va2llLgotICoKLSAqIEFsbCB0aGUgc3RyaW5ncyBhcmUgZ3VhcmFudGVlZCB0byBiZSBz
dHJpbmdzaGFyZWQsIHNvIHVzZSBlaW5hX3N0cmluZ3NoYXJlX3JlZigpCi0gKiBpbnN0ZWFkIG9m
IGVpbmFfc3RyaW5nc2hhcmVfYWRkKCkgb3Igc3RyZHVwKCkuCi0gKi8KLXN0cnVjdCBfRXdrX0Nv
b2tpZSB7Ci0gICAgLy8vIHRoZSBjb29raWUgbmFtZQotICAgIGNvbnN0IGNoYXIgKm5hbWU7Ci0g
ICAgLy8vIHRoZSBjb29raWUgdmFsdWUKLSAgICBjb25zdCBjaGFyICp2YWx1ZTsKLSAgICAvLy8g
dGhlICJkb21haW4iIGF0dHJpYnV0ZSwgb3IgZWxzZSB0aGUgaG9zdG5hbWUgdGhhdCB0aGUgY29v
a2llIGNhbWUgZnJvbQotICAgIGNvbnN0IGNoYXIgKmRvbWFpbjsKLSAgICAvLy8gdGhlICJwYXRo
IiBhdHRyaWJ1dGUsIG9yIEBjIE5VTEwKLSAgICBjb25zdCBjaGFyICpwYXRoOwotICAgIC8vLyB0
aGUgY29va2llIGV4cGlyYXRpb24gdGltZSwgb3IgQGMgMCBmb3IgYSBzZXNzaW9uIGNvb2tpZQot
ICAgIHRpbWVfdCBleHBpcmVzOwotICAgIC8vLyBAYyBFSU5BX1RSVUUgaWYgdGhlIGNvb2tpZSBz
aG91bGQgb25seSBiZSB0cmFuZmVycmVkIG92ZXIgU1NMCi0gICAgRWluYV9Cb29sIHNlY3VyZTsK
LSAgICAvLy8gQGMgRUlOQV9UUlVFIGlmIHRoZSBjb29raWUgc2hvdWxkIG5vdCBiZSBleHBvc2Vk
IHRvIHNjcmlwdHMKLSAgICBFaW5hX0Jvb2wgaHR0cF9vbmx5OwotfTsKLS8vLyBDcmVhdGVzIGEg
dHlwZSBuYW1lIGZvciB0aGUgX0V3a19Db29raWUuCi10eXBlZGVmIHN0cnVjdCBfRXdrX0Nvb2tp
ZSBFd2tfQ29va2llOwotCi0vKioKLSAqIFxlbnVtICAgIF9Fd2tfQ29va2llX1BvbGljeQotICoK
LSAqIEBicmllZiAgIENvbnRhaW5zIGEgcG9saWN5IGZvciB0aGUgY29va2llcy4KLSAqLwotZW51
bSBfRXdrX0Nvb2tpZV9Qb2xpY3kgewotICAgIC8vLyBSZWplY3RzIGFsbCBjb29raWVzLgotICAg
IEVXS19DT09LSUVfSkFSX0FDQ0VQVF9ORVZFUiwKLSAgICAvLy8gQWNjZXB0cyBldmVyeSBjb29r
aWUgc2VudCBmcm9tIGFueSBwYWdlLgotICAgIEVXS19DT09LSUVfSkFSX0FDQ0VQVF9BTFdBWVMs
Ci0gICAgLy8vIEFjY2VwdHMgY29va2llcyBvbmx5IGZyb20gdGhlIG1haW4gcGFnZS4KLSAgICBF
V0tfQ09PS0lFX0pBUl9BQ0NFUFRfTk9fVEhJUkRfUEFSVFkKLX07Ci0vLy8gQ3JlYXRlcyBhIHR5
cGUgbmFtZSBmb3IgdGhlIF9Fd2tfQ29va2llX1BvbGljeS4KLXR5cGVkZWYgZW51bSBfRXdrX0Nv
b2tpZV9Qb2xpY3kgRXdrX0Nvb2tpZV9Qb2xpY3k7Ci0KLS8qKioqKioqKioqKioqKioqKioqKioq
KioqKiBFeHBvcnRlZCBmdW5jdGlvbnMgKioqKioqKioqKioqKioqKioqKioqKiovCi0gCi0vKioK
LSAqIFNldHMgdGhlIHBhdGggd2hlcmUgdGhlIGNvb2tpZXMgYXJlIGdvaW5nIHRvIGJlIHN0b3Jl
ZC4gCi0gKgotICogQHBhcmFtIGZpbGVuYW1lIHBhdGggdG8gdGhlIGNvb2tpZXMudHh0IGZpbGUs
IHVzZSBAYyBOVUxMIGZvciBrZWVwCi0gKiAgICAgICAgY29va2llcyBqdXN0IGluIG1lbW9yeS4K
LSAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfRkFMU0UgaWYgaXQgd2Fzbid0IHBvc3NpYmxlIHRvIGNy
ZWF0ZSB0aGUgY29va2llIGphciwKLSAqICAgICAgICAgIEBjIEVJTkFfVFJVRSBvdGhlcndpc2Uu
Ci0gKi8KLUVBUEkgRWluYV9Cb29sICAgICAgICAgIGV3a19jb29raWVzX2ZpbGVfc2V0KGNvbnN0
IGNoYXIgKmZpbGVuYW1lKTsKLQotLyoqCi0gKiBDbGVhcnMgYWxsIHRoZSBjb29raWVzIGZyb20g
dGhlIGNvb2tpZSBqYXIuCi0gKi8KLUVBUEkgdm9pZCAgICAgICAgICAgICAgIGV3a19jb29raWVz
X2NsZWFyKHZvaWQpOwotCi0vKioKLSAqIFJldHVybnMgYSBsaXN0IG9mIGNvb2tpZXMgaW4gdGhl
IGNvb2tpZSBqYXIuCi0gKgotICogQHJldHVybiBhbiBAYyBFaW5hX0xpc3Qgd2l0aCBhbGwgdGhl
IGNvb2tpZXMgaW4gdGhlIGNvb2tpZSBqYXIKLSAqLwotRUFQSSBFaW5hX0xpc3QgICAgICAgICAg
KmV3a19jb29raWVzX2dldF9hbGwodm9pZCk7Ci0KLS8qKgotICogRGVsZXRlcyBhIGNvb2tpZSBm
cm9tIHRoZSBjb29raWUgamFyLgotICoKLSAqIE5vdGUgdGhhdCB0aGUgZmllbGRzIG5hbWUsIHZh
bHVlLCBkb21haW4gYW5kIHBhdGggYXJlIHVzZWQgdG8gbWF0Y2ggdGhpcwotICogY29va2llIGlu
IHRoZSBjb29raWUgamFyLgotICoKLSAqIEBwYXJhbSBjb29raWUgYW4gQGMgRXdrX0Nvb2tpZSB0
aGF0IGhhcyB0aGUgaW5mbyByZWxhdGl2ZSB0byB0aGF0IGNvb2tpZQotICovCi1FQVBJIHZvaWQg
ICAgICAgICAgICAgICBld2tfY29va2llc19jb29raWVfZGVsKEV3a19Db29raWUgKmNvb2tpZSk7
Ci0KLS8qKgotICogRnJlZXMgdGhlIG1lbW9yeSB1c2VkIGJ5IGEgY29va2llLgotICoKLSAqIEBw
YXJhbSBjb29raWUgdGhlIEV3a19Db29raWUgc3RydWN0IHRoYXQgd2lsbCBiZSBmcmVlZAotICov
Ci1FQVBJIHZvaWQgICAgICAgICAgICAgICBld2tfY29va2llc19jb29raWVfZnJlZShFd2tfQ29v
a2llICpjb29raWUpOwotCi0vKioKLSAqIFNldHMgYWNjZXB0IHBvbGljeSBmb3IgdGhlIGNvb2tp
ZXMuCi0gKgotICogQHBhcmFtIHAgdGhlIGFjY2VwdGFuY2UgcG9saWN5Ci0gKgotICogQHNlZSBF
d2tfQ29va2llX1BvbGljeQotICovCi1FQVBJIHZvaWQgICAgICAgICAgICAgICBld2tfY29va2ll
c19wb2xpY3lfc2V0KEV3a19Db29raWVfUG9saWN5IHApOwotCi0vKioKLSAqIEdldHMgdGhlIGFj
Y2VwdGFuY2UgcG9saWN5IHVzZWQgaW4gdGhlIGN1cnJlbnQgY29va2llIGphci4KLSAqCi0gKiBA
cmV0dXJuIHRoZSBjdXJyZW50IGFjY2VwdGFuY2UgcG9saWN5Ci0gKiBAc2VlIEV3a19Db29raWVf
UG9saWN5Ci0gKi8KLUVBUEkgRXdrX0Nvb2tpZV9Qb2xpY3kgIGV3a19jb29raWVzX3BvbGljeV9n
ZXQodm9pZCk7Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotfQotI2VuZGlmCi0jZW5kaWYgLy8gZXdr
X2Nvb2tpZXNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19jdXN0b21f
aGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2N1c3RvbV9oYW5kbGVyLmNw
cApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2M0MDcxNi4uMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2N1c3RvbV9oYW5kbGVyLmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDcyICswLDAgQEAKLS8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxl
Y3Ryb25pY3MKLQotICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICAgIHZlcnNpb24gMi4xIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi0g
ICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKLSAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICAgIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0gICAgWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQot
ICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvCi0gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAgICBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4KLSovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJld2tfY3VzdG9t
X2hhbmRsZXJfcHJpdmF0ZS5oIgotCi0jaWYgRU5BQkxFKE5BVklHQVRPUl9DT05URU5UX1VUSUxT
KQotLyoqCi0gKiBAaW50ZXJuYWwKLSAqIFJlZ2lzdGVyIGEgc2NoZW1lIGhhbmRsZXIuCi0gKgot
ICogQHBhcmFtIGRhdGEgRGF0YSBvZiB0aGUgaGFuZGxlciBpbmNsdWRpbmcgdGhlIHByb3RvY29s
IGFuZCB0aGUgaGFuZGxlciB1cmwuCi0gKgotICogRW1pdHMgc2lnbmFsOiAicHJvdG9jb2xoYW5k
bGVyLHJlZ2lzdHJhdGlvbixyZXF1ZXN0ZWQiIG9uIFZpZXcgd2l0aCBhIHBvaW50ZXIgdG8gRXdr
X0N1c3RvbV9IYW5kbGVyX0RhdGEuCi0gKi8KLWJvb2wgZXdrX2N1c3RvbV9oYW5kbGVyX3JlZ2lz
dGVyX3Byb3RvY29sX2hhbmRsZXIoRXdrX0N1c3RvbV9IYW5kbGVyX0RhdGEqIGRhdGEpCi17Ci0g
ICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGRhdGEtPmV3a1ZpZXcsIGZhbHNlKTsK
LSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKGRhdGEtPmV3a1ZpZXcsICJwcm90
b2NvbGhhbmRsZXIscmVnaXN0cmF0aW9uLHJlcXVlc3RlZCIsIGRhdGEpOwotICAgIHJldHVybiB0
cnVlOwotfQotCi0jaWYgRU5BQkxFKENVU1RPTV9TQ0hFTUVfSEFORExFUikKLS8qKgotICogQGlu
dGVybmFsCi0gKiBRdWVyeSB3aGV0aGVyIHRoZSBoYW5kbGVyIGlzIHJlZ2lzdGVyZWQgb3Igbm90
LgotICoKLSAqIEBwYXJhbSBkYXRhIERhdGEgb2YgdGhlIGhhbmRsZXIgaW5jbHVkaW5nIHRoZSBw
cm90b2NvbCBhbmQgdGhlIGhhbmRsZXIgdXJsLgotICoKLSAqIEVtaXRzIHNpZ25hbDogInByb3Rv
Y29saGFuZGxlcixpc3JlZ2lzdGVyZWQiIG9uIFZpZXcgd2l0aCBhIHBvaW50ZXIgdG8gRXdrX0N1
c3RvbV9IYW5kbGVyX0RhdGEuCi0gKi8KLUV3a19DdXN0b21fSGFuZGxlcnNfU3RhdGUgZXdrX2N1
c3RvbV9oYW5kbGVyX2lzX3Byb3RvY29sX2hhbmRsZXJfcmVnaXN0ZXJlZChFd2tfQ3VzdG9tX0hh
bmRsZXJfRGF0YSogZGF0YSkKLXsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwo
ZGF0YS0+ZXdrVmlldywgRVdLX0NVU1RPTV9IQU5ETEVSU19ERUNMSU5FRCk7Ci0gICAgZXZhc19v
YmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChkYXRhLT5ld2tWaWV3LCAicHJvdG9jb2xoYW5kbGVy
LGlzcmVnaXN0ZXJlZCIsIGRhdGEpOwotICAgIEV3a19DdXN0b21fSGFuZGxlcnNfU3RhdGUgcmVz
dWx0ID0gZGF0YS0+cmVzdWx0OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qKgotICogQGlu
dGVybmFsCi0gKiBSZW1vdmUgdGhlIHJlZ2lzdGVyZWQgc2NoZW1lIGhhbmRsZXIuCi0gKgotICog
QHBhcmFtIGRhdGEgRGF0YSBvZiB0aGUgaGFuZGxlciBpbmNsdWRpbmcgdGhlIHByb3RvY29sIGFu
ZCB0aGUgaGFuZGxlciB1cmwuCi0gKgotICogRW1pdHMgc2lnbmFsOiAicHJvdG9jb2xoYW5kbGVy
LHVucmVnaXN0cmF0aW9uLHJlcXVlc3RlZCIgb24gVmlldyB3aXRoIGEgcG9pbnRlciB0byBFd2tf
Q3VzdG9tX0hhbmRsZXJfRGF0YS4KLSAqLwotYm9vbCBld2tfY3VzdG9tX2hhbmRsZXJfdW5yZWdp
c3Rlcl9wcm90b2NvbF9oYW5kbGVyKEV3a19DdXN0b21fSGFuZGxlcl9EYXRhKiBkYXRhKQotewot
ICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChkYXRhLT5ld2tWaWV3LCBmYWxzZSk7
Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChkYXRhLT5ld2tWaWV3LCAicHJv
dG9jb2xoYW5kbGVyLHVucmVnaXN0cmF0aW9uLHJlcXVlc3RlZCIsIGRhdGEpOwotICAgIHJldHVy
biB0cnVlOwotfQotCi0jZW5kaWYgLy8gRU5BQkxFKENVU1RPTV9TQ0hFTUVfSEFORExFUikKLSNl
bmRpZiAvLyBFTkFCTEUoTkFWSUdBVE9SX0NPTlRFTlRfVVRJTFMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2VmbC9ld2svZXdrX2N1c3RvbV9oYW5kbGVyX3ByaXZhdGUuaCBiL1NvdXJjZS9X
ZWJLaXQvZWZsL2V3ay9ld2tfY3VzdG9tX2hhbmRsZXJfcHJpdmF0ZS5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA3M2Y5N2UwLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvZWZs
L2V3ay9ld2tfY3VzdG9tX2hhbmRsZXJfcHJpdmF0ZS5oCisrKyAvZGV2L251bGwKQEAgLTEsMzQg
KzAsMCBAQAotLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcwot
Ci0gICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgotICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCi0gICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi0gICAgVGhpcyBsaWJy
YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0g
ICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKLSAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAgIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRl
IHRvCi0gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSov
Ci0KLSNpZm5kZWYgZXdrX2N1c3RvbV9oYW5kbGVyX3ByaXZhdGVfaAotI2RlZmluZSBld2tfY3Vz
dG9tX2hhbmRsZXJfcHJpdmF0ZV9oCi0KLSNpbmNsdWRlICJld2tfdmlldy5oIgotCi0jaWYgRU5B
QkxFKE5BVklHQVRPUl9DT05URU5UX1VUSUxTKQotYm9vbCBld2tfY3VzdG9tX2hhbmRsZXJfcmVn
aXN0ZXJfcHJvdG9jb2xfaGFuZGxlcihFd2tfQ3VzdG9tX0hhbmRsZXJfRGF0YSogZGF0YSk7Ci0K
LSNpZiBFTkFCTEUoQ1VTVE9NX1NDSEVNRV9IQU5ETEVSKQotRXdrX0N1c3RvbV9IYW5kbGVyc19T
dGF0ZSBld2tfY3VzdG9tX2hhbmRsZXJfaXNfcHJvdG9jb2xfaGFuZGxlcl9yZWdpc3RlcmVkKEV3
a19DdXN0b21fSGFuZGxlcl9EYXRhKiBkYXRhKTsKLWJvb2wgZXdrX2N1c3RvbV9oYW5kbGVyX3Vu
cmVnaXN0ZXJfcHJvdG9jb2xfaGFuZGxlcihFd2tfQ3VzdG9tX0hhbmRsZXJfRGF0YSogZGF0YSk7
Ci0KLSNlbmRpZiAvLyBFTkFCTEUoQ1VTVE9NX1NDSEVNRV9IQU5ETEVSKQotI2VuZGlmIC8vIEVO
QUJMRShOQVZJR0FUT1JfQ09OVEVOVF9VVElMUykKLSNlbmRpZiAvLyBld2tfY3VzdG9tX2hhbmRs
ZXJfcHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZpbGVf
Y2hvb3Nlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZpbGVfY2hvb3Nlci5jcHAK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRiZGM1MzkuLjAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYktpdC9lZmwvZXdrL2V3a19maWxlX2Nob29zZXIuY3BwCisrKyAvZGV2L251bGwKQEAg
LTEsMTAyICswLDAgQEAKLS8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ry
b25pY3MKLQotICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKLSAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICAgIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLQotICAgIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCi0gICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLQotICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAgICBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bwotICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBV
U0EuCi0qLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiZXdrX2ZpbGVfY2hvb3Nl
ci5oIgotCi0jaW5jbHVkZSAiRmlsZUNob29zZXIuaCIKLSNpbmNsdWRlICJld2tfZmlsZV9jaG9v
c2VyX3ByaXZhdGUuaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0KLXN0cnVjdCBf
RXdrX0ZpbGVfQ2hvb3NlciB7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OkZpbGVDaG9vc2VyPiBmaWxl
Q2hvb3NlcjsKLX07Ci0KLUVpbmFfQm9vbCBld2tfZmlsZV9jaG9vc2VyX2FsbG93c19tdWx0aXBs
ZV9maWxlc19nZXQoY29uc3QgRXdrX0ZpbGVfQ2hvb3NlciogY2hvb3NlcikKLXsKLSAgICBFSU5B
X1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoY2hvb3NlciwgZmFsc2UpOwotICAgIHJldHVybiBj
aG9vc2VyLT5maWxlQ2hvb3Nlci0+c2V0dGluZ3MoKS5hbGxvd3NNdWx0aXBsZUZpbGVzOwotfQot
Ci1FaW5hX0Jvb2wgZXdrX2ZpbGVfY2hvb3Nlcl9hbGxvd3NfZGlyZWN0b3J5X3VwbG9hZF9nZXQo
Y29uc3QgRXdrX0ZpbGVfQ2hvb3NlciogY2hvb3NlcikKLXsKLSAgICBVTlVTRURfUEFSQU0oY2hv
b3Nlcik7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1FaW5hX0xpc3QqIGV3a19maWxlX2Nob29z
ZXJfYWNjZXB0X21pbWV0eXBlc19nZXQoY29uc3QgRXdrX0ZpbGVfQ2hvb3NlciogY2hvb3NlcikK
LXsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoY2hvb3NlciwgMCk7Ci0KLSAg
ICBFaW5hX0xpc3QqIG1pbWV0eXBlcyA9IDA7Ci0gICAgc2l6ZV90IGNvdW50ID0gY2hvb3Nlci0+
ZmlsZUNob29zZXItPnNldHRpbmdzKCkuYWNjZXB0TUlNRVR5cGVzLnNpemUoKTsKLSAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGNvdW50OyArK2kpCi0gICAgICAgIG1pbWV0eXBlcyA9IGVpbmFf
bGlzdF9hcHBlbmQobWltZXR5cGVzLCBlaW5hX3N0cmluZ3NoYXJlX2FkZChjaG9vc2VyLT5maWxl
Q2hvb3Nlci0+c2V0dGluZ3MoKS5hY2NlcHRNSU1FVHlwZXNbaV0udXRmOCgpLmRhdGEoKSkpOwot
Ci0gICAgcmV0dXJuIG1pbWV0eXBlczsKLX0KLQotRWluYV9MaXN0KiBld2tfZmlsZV9jaG9vc2Vy
X2FjY2VwdF9maWxlX2V4dGVudGlvbnNfZ2V0KGNvbnN0IEV3a19GaWxlX0Nob29zZXIqIGNob29z
ZXIpCi17Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGNob29zZXIsIDApOwot
Ci0gICAgRWluYV9MaXN0KiBmaWxlRXh0ZW50aW9ucyA9IDA7Ci0gICAgc2l6ZV90IGNvdW50ID0g
Y2hvb3Nlci0+ZmlsZUNob29zZXItPnNldHRpbmdzKCkuYWNjZXB0RmlsZUV4dGVuc2lvbnMuc2l6
ZSgpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkKLSAgICAgICAgZmls
ZUV4dGVudGlvbnMgPSBlaW5hX2xpc3RfYXBwZW5kKGZpbGVFeHRlbnRpb25zLCBlaW5hX3N0cmlu
Z3NoYXJlX2FkZChjaG9vc2VyLT5maWxlQ2hvb3Nlci0+c2V0dGluZ3MoKS5hY2NlcHRGaWxlRXh0
ZW5zaW9uc1tpXS51dGY4KCkuZGF0YSgpKSk7Ci0KLSAgICByZXR1cm4gZmlsZUV4dGVudGlvbnM7
Ci19Ci0KLUVpbmFfTGlzdCogZXdrX2ZpbGVfY2hvb3Nlcl9zZWxlY3RlZF9maWxlc19nZXQoY29u
c3QgRXdrX0ZpbGVfQ2hvb3NlciogY2hvb3NlcikKLXsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxM
X1JFVFVSTl9WQUwoY2hvb3NlciwgMCk7Ci0KLSAgICBFaW5hX0xpc3QqIGZpbGVzID0gMDsKLSAg
ICBzaXplX3QgY291bnQgPSBjaG9vc2VyLT5maWxlQ2hvb3Nlci0+c2V0dGluZ3MoKS5zZWxlY3Rl
ZEZpbGVzLnNpemUoKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50OyArK2kpCi0g
ICAgICAgIGZpbGVzID0gZWluYV9saXN0X2FwcGVuZChmaWxlcywgZWluYV9zdHJpbmdzaGFyZV9h
ZGQoY2hvb3Nlci0+ZmlsZUNob29zZXItPnNldHRpbmdzKCkuc2VsZWN0ZWRGaWxlc1tpXS51dGY4
KCkuZGF0YSgpKSk7Ci0KLSAgICByZXR1cm4gZmlsZXM7Ci19Ci0KLUVpbmFfQm9vbCBld2tfZmls
ZV9jaG9vc2VyX2NhcHR1cmVfZ2V0KGNvbnN0IEV3a19GaWxlX0Nob29zZXIqIGNob29zZXIpCi17
Ci0jaWYgRU5BQkxFKE1FRElBX0NBUFRVUkUpCi0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRV
Uk5fVkFMKGNob29zZXIsIGZhbHNlKTsKLSAgICByZXR1cm4gY2hvb3Nlci0+ZmlsZUNob29zZXIt
PnNldHRpbmdzKCkuY2FwdHVyZTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGNob29zZXIpOwot
ICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgotfQotCi1Fd2tfRmlsZV9DaG9vc2VyKiBld2tfZmls
ZV9jaG9vc2VyX25ldyhXZWJDb3JlOjpGaWxlQ2hvb3NlciogZmlsZUNob29zZXIpCi17Ci0gICAg
RXdrX0ZpbGVfQ2hvb3NlciogZXdrRmlsZUNob29zZXIgPSBuZXcgRXdrX0ZpbGVfQ2hvb3NlcjsK
LSAgICBld2tGaWxlQ2hvb3Nlci0+ZmlsZUNob29zZXIgPSBmaWxlQ2hvb3NlcjsKLSAgICByZXR1
cm4gZXdrRmlsZUNob29zZXI7Ci19Ci0KLXZvaWQgZXdrX2ZpbGVfY2hvb3Nlcl9mcmVlKEV3a19G
aWxlX0Nob29zZXIqIGNob29zZXIpCi17Ci0gICAgY2hvb3Nlci0+ZmlsZUNob29zZXIgPSAwOwot
ICAgIGRlbGV0ZSBjaG9vc2VyOwotfQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9l
d2svZXdrX2ZpbGVfY2hvb3Nlci5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19maWxlX2No
b29zZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzJiZTljOC4uMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZpbGVfY2hvb3Nlci5oCisrKyAvZGV2L251
bGwKQEAgLTEsMTE4ICswLDAgQEAKLS8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcg
RWxlY3Ryb25pY3MKLQotICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICAgIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICAgIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLQot
ICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAgICBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLQotICAgIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
LSAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAg
SWYgbm90LCB3cml0ZSB0bwotICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gICAgQm9zdG9uLCBNQSAwMjExMC0x
MzAxLCBVU0EuCi0qLwotCi0vKioKLSAqIEBmaWxlICAgIGV3a19maWxlX2Nob29zZXIuaAotICog
QGJyaWVmICAgRmlsZSBDaG9vc2VyIEFQSS4KLSAqCi0gKiBGaWxlIENob29zZXIgc3VwcG9ydHMg
QVBJcyBmb3IgZmlsZSBzZWxlY3Rpb24gZGlhbG9nLgotICogVGhpcyBzdXBwb3J0IGF0dHJpYnV0
ZXMgb2YgZmlsZSBjaG9vc2VyIHJlZ2FyZGluZzoKLSAqIC0gYWxsb3dhbmNlIG9mIG11bHRpcGxl
IGZpbGVzIHNlbGVjdGlvbgotICogLSBhbGxvd2FuY2Ugb2YgdXBsb2FkIGRpcmVjdG9yeQotICog
LSBsaXN0IG9mIGFjY2VwdGVkIG1pbWUgdHlwZXMKLSAqIC0gbGlzdCBvZiBhY2NlcHRlZCBmaWxl
IGV4dGVuc2lvbnMKLSAqIC0gbGlzdCBvZiBpbml0aWFsIHNlbGVjdGVkIGZpbGUgbmFtZXMKLSAq
IC0gY2FwdHVyZSBhdHRyaWJ1dGUgZm9yIEhUTUwgbWVkaWEgY2FwdHVyZQotICovCi0KLSNpZm5k
ZWYgZXdrX2ZpbGVfY2hvb3Nlcl9oCi0jZGVmaW5lIGV3a19maWxlX2Nob29zZXJfaAotCi0jaW5j
bHVkZSA8RWluYS5oPgotCi0jaWZkZWYgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIgewotI2VuZGlm
Ci0KLXR5cGVkZWYgc3RydWN0IF9Fd2tfRmlsZV9DaG9vc2VyIEV3a19GaWxlX0Nob29zZXI7Ci0K
LS8qKgotICogUXVlcnkgaWYgbXVsdGlwbGUgZmlsZXMgYXJlIHN1cHBvcnRlZCBieSBmaWxlIGNo
b29zZXIuCi0gKgotICogQHBhcmFtIGYgZmlsZSBjaG9vc2VyIG9iamVjdC4KLSAqCi0gKiBJdCBy
ZXR1cm5zIGEgYm9vbGVhbiB2YWx1ZSB3aGljaCBpbmRpY2F0ZXMgaWYgbXVsdGlwbGUgZmlsZSBp
cyBzdXBwb3J0ZWQgb3Igbm90LgotICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1cHBv
cnQgbXVsdGlwbGUgZmlsZXMgb3IgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UuCi0gKi8KLUVBUEkg
RWluYV9Cb29sIGV3a19maWxlX2Nob29zZXJfYWxsb3dzX211bHRpcGxlX2ZpbGVzX2dldChjb25z
dCBFd2tfRmlsZV9DaG9vc2VyICpmKTsKLQotLyoqCi0gKiBRdWVyeSBpZiBkaXJlY3RvcnkgdXBs
b2FkIGlzIHN1cHBvcnRlZCBieSBmaWxlIGNob29zZXIuCi0gKgotICogQHBhcmFtIGYgZmlsZSBj
aG9vc2VyIG9iamVjdC4KLSAqCi0gKiBJdCByZXR1cm5zIGEgYm9vbGVhbiB2YWx1ZSB3aGljaCBp
bmRpY2F0ZXMgaWYgZGlyZWN0b3J5IHVwbG9hZCBpcyBzdXBwb3J0ZWQgb3Igbm90LgotICoKLSAq
IEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1cHBvcnQgZGlyZWN0b3J5IHVwbG9hZCBvciBAYyBF
SU5BX0ZBTFNFIG90aGVyd2lzZS4KLSAqLwotRUFQSSBFaW5hX0Jvb2wgZXdrX2ZpbGVfY2hvb3Nl
cl9hbGxvd3NfZGlyZWN0b3J5X3VwbG9hZF9nZXQoY29uc3QgRXdrX0ZpbGVfQ2hvb3NlciAqZik7
Ci0KLS8qKgotICogUmV0dXJucyB0aGUgbGlzdCBvZiBhY2NlcHRlZCBtaW1ldHlwZXMgb2YgdGhl
IGZpbGUgY2hvb3Nlci4KLSAqCi0gKiBAcGFyYW0gZiBmaWxlIGNob29zZXIgb2JqZWN0LgotICoK
LSAqIEByZXR1cm4gRWluYV9MaXN0IG9mIGFjY2VwdGVkIG1pbWV0eXBlcyBvbiBzdWNjZXNzLCBv
ciBAYyBOVUxMIG9uIGZhaWx1cmUsCi0gKiAgICAgICAgIHRoZSBFaW5hX0xpc3QgYW5kIGl0cyBp
dGVtcyBzaG91bGQgYmUgZnJlZWQgYWZ0ZXIgdXNlLiBVc2UgZWluYV9zdHJpbmdzaGFyZV9kZWwo
KQotICogICAgICAgICB0byBmcmVlIHRoZSBpdGVtcy4KLSAqLwotRUFQSSBFaW5hX0xpc3QgKmV3
a19maWxlX2Nob29zZXJfYWNjZXB0X21pbWV0eXBlc19nZXQoY29uc3QgRXdrX0ZpbGVfQ2hvb3Nl
ciAqZik7Ci0KLS8qKgotICogUmV0dXJucyB0aGUgbGlzdCBvZiBhY2NlcHRlZCBmaWxlIGV4dGVu
c2lvbnMgb2YgdGhlIGZpbGUgY2hvb3Nlci4KLSAqCi0gKiBAcGFyYW0gZiBmaWxlIGNob29zZXIg
b2JqZWN0LgotICoKLSAqIEByZXR1cm4gQGMgRWluYV9MaXN0IG9mIGFjY2VwdGVkIGZpbGUgZXh0
ZW5zaW9ucyBvbiBzdWNjZXNzLCBvciBAYyBOVUxMIG9uIGZhaWx1cmUsCi0gKiAgICAgICAgIHRo
ZSBFaW5hX0xpc3QgYW5kIGl0cyBpdGVtcyBzaG91bGQgYmUgZnJlZWQgYWZ0ZXIgdXNlLiBVc2Ug
ZWluYV9zdHJpbmdzaGFyZV9kZWwoKQotICogICAgICAgICB0byBmcmVlIHRoZSBpdGVtcy4KLSAq
LwotRUFQSSBFaW5hX0xpc3QgKmV3a19maWxlX2Nob29zZXJfYWNjZXB0X2ZpbGVfZXh0ZW50aW9u
c19nZXQoY29uc3QgRXdrX0ZpbGVfQ2hvb3NlciAqZik7Ci0KLS8qKgotICogUmV0dXJucyB0aGUg
bGlzdCBvZiBzZWxlY3RlZCBmaWxlIG5hbWVzIG9mIHRoZSBmaWxlIGNob29zZXIuCi0gKgotICog
VGhpcyBsaXN0IGluZGljYXRlcyBwcmV2aW91c2x5IHNlbGVjdGVkIGZpbGUgbmFtZXMgb2YgdGhl
IGZpbGUgY2hvb3Nlci4KLSAqIFRoZXNlIGNhbiBiZSB1c2VkIGJ5IGluaXRpYWwgdmFsdWVzIG9m
IHRoZSBmaWxlIGRpYWxvZy4KLSAqCi0gKiBAcGFyYW0gZiBmaWxlIGNob29zZXIgb2JqZWN0Lgot
ICoKLSAqIEByZXR1cm4gQGMgRWluYV9MaXN0IG9mIHNlbGVjdGVkIGZpbGUgbmFtZXMgb24gc3Vj
Y2Vzcywgb3IgQGMgTlVMTCBvbiBmYWlsdXJlLAotICogICAgICAgICB0aGUgRWluYV9MaXN0IGFu
ZCBpdHMgaXRlbXMgc2hvdWxkIGJlIGZyZWVkIGFmdGVyIHVzZS4gVXNlIGVpbmFfc3RyaW5nc2hh
cmVfZGVsKCkKLSAqICAgICAgICAgdG8gZnJlZSB0aGUgaXRlbXMuCi0gKi8KLUVBUEkgRWluYV9M
aXN0ICpld2tfZmlsZV9jaG9vc2VyX3NlbGVjdGVkX2ZpbGVzX2dldChjb25zdCBFd2tfRmlsZV9D
aG9vc2VyICpmKTsKLQotLyoqCi0gKiBSZXR1cm5zIHdoZXRoZXIgdGhlIGRldmljZSdzIG1lZGlh
IGNhcHR1cmUgY2FwYWJpbGl0aWVzIHNob3VsZCBiZSB1c2VkIGluIHRoZSBmaWxlIGNob29zZXIu
Ci0gKgotICogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sLW1lZGlhLWNhcHR1cmUvIGZv
ciB0aGUgc2VtYW50aWNzIG9mIHRoZSBjYXB0dXJlIGF0dHJpYnV0ZS4KLSAqCi0gKiBAcGFyYW0g
ZiBmaWxlIGNob29zZXIgb2JqZWN0LgotICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIHRo
ZSBkZXZpY2UncyBjYXBhYmlsaXRpZXMgc2hvdWxkIGJlIHVzZWQsIEBjIEVJTkFfRkFMU0Ugb3Ro
ZXJ3aXNlLgotICovCi1FQVBJIEVpbmFfQm9vbCBld2tfZmlsZV9jaG9vc2VyX2NhcHR1cmVfZ2V0
KGNvbnN0IEV3a19GaWxlX0Nob29zZXIgKmYpOwotCi0jaWZkZWYgX19jcGx1c3BsdXMKLX0KLSNl
bmRpZgotCi0jZW5kaWYgLy8gZXdrX2ZpbGVfY2hvb3Nlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9ld2svZXdrX2ZpbGVfY2hvb3Nlcl9wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0
L2VmbC9ld2svZXdrX2ZpbGVfY2hvb3Nlcl9wcml2YXRlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDUxOWU1NGEuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3
a19maWxlX2Nob29zZXJfcHJpdmF0ZS5oCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAot
LyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcwotCi0gICAgVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgotICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCi0gICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCi0gICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
LSAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQotICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgotCi0gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAgIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gICAg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKLSAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSovCi0KLSNpZm5k
ZWYgZXdrX2ZpbGVfY2hvb3Nlcl9wcml2YXRlX2gKLSNkZWZpbmUgZXdrX2ZpbGVfY2hvb3Nlcl9w
cml2YXRlX2gKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgRmlsZUNob29zZXI7Ci19Ci0K
LUV3a19GaWxlX0Nob29zZXIqIGV3a19maWxlX2Nob29zZXJfbmV3KFdlYkNvcmU6OkZpbGVDaG9v
c2VyKiBmaWxlQ2hvb3Nlcik7Ci12b2lkIGV3a19maWxlX2Nob29zZXJfZnJlZShFd2tfRmlsZV9D
aG9vc2VyKiBjaG9vc2VyKTsKLQotI2VuZGlmIC8vIGV3a19maWxlX2Nob29zZXJfcHJpdmF0ZV9o
Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuY3BwIGIvU291
cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGFmZDVhN2YuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19m
cmFtZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxOTExICswLDAgQEAKLS8qCi0gICAgQ29weXJp
Z2h0IChDKSAyMDA5LTIwMTAgUHJvRlVTSU9OIGVtYmVkZGVkIHN5c3RlbXMKLSAgICBDb3B5cmln
aHQgKEMpIDIwMDktMjAxMCBTYW1zdW5nIEVsZWN0cm9uaWNzCi0KLSAgICBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
LSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
Ci0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNl
ZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAgICB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAotICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotKi8KLQotLy8gVW5jb21tZW50IHRv
IHZpZXcgZnJhbWUgcmVnaW9ucyBhbmQgZGVidWcgbWVzc2FnZXMKLS8vICNkZWZpbmUgRVdLX0ZS
QU1FX0RFQlVHCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJld2tfZnJhbWUuaCIK
LQotI2luY2x1ZGUgIkJhY2tGb3J3YXJkQ29udHJvbGxlci5oIgotI2luY2x1ZGUgIkRvY3VtZW50
TG9hZGVyLmgiCi0jaW5jbHVkZSAiRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmgiCi0jaW5jbHVk
ZSAiRWRpdG9yLmgiCi0jaW5jbHVkZSAiRXZlbnRIYW5kbGVyLmgiCi0jaW5jbHVkZSAiRm9jdXND
b250cm9sbGVyLmgiCi0jaW5jbHVkZSAiRnJhbWVMb2FkUmVxdWVzdC5oIgotI2luY2x1ZGUgIkZy
YW1lTG9hZGVyLmgiCi0jaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnRFZmwuaCIKLSNpbmNsdWRl
ICJGcmFtZVNlbGVjdGlvbi5oIgotI2luY2x1ZGUgIkZyYW1lVmlldy5oIgotI2luY2x1ZGUgIkhU
TUxDb2xsZWN0aW9uLmgiCi0jaW5jbHVkZSAiSFRNTEhlYWRFbGVtZW50LmgiCi0jaW5jbHVkZSAi
SFRNTEltYWdlRWxlbWVudC5oIgotI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgotI2luY2x1ZGUgIkhU
TUxQbHVnSW5FbGVtZW50LmgiCi0jaW5jbHVkZSAiSGlzdG9yeUl0ZW0uaCIKLSNpbmNsdWRlICJI
aXRUZXN0UmVxdWVzdC5oIgotI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKLSNpbmNsdWRlICJJ
bnRTaXplLmgiCi0jaW5jbHVkZSAiVVJMLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1FdmVudC5oIgot
I2luY2x1ZGUgIlBsYXRmb3JtS2V5Ym9hcmRFdmVudC5oIgotI2luY2x1ZGUgIlBsYXRmb3JtTWVz
c2FnZVBvcnRDaGFubmVsLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1Nb3VzZUV2ZW50LmgiCi0jaW5j
bHVkZSAiUGxhdGZvcm1Ub3VjaEV2ZW50LmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1XaGVlbEV2ZW50
LmgiCi0jaW5jbHVkZSAiUHJvZ3Jlc3NUcmFja2VyLmgiCi0jaW5jbHVkZSAiUmVzb3VyY2VSZXF1
ZXN0LmgiCi0jaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1
ZmZlci5oIgotI2luY2x1ZGUgIlN1YnN0aXR1dGVEYXRhLmgiCi0jaW5jbHVkZSAiV2luZG93c0tl
eWJvYXJkQ29kZXMuaCIKLSNpbmNsdWRlICJld2tfZnJhbWVfcHJpdmF0ZS5oIgotI2luY2x1ZGUg
ImV3a19wcml2YXRlLmgiCi0jaW5jbHVkZSAiZXdrX3NlY3VyaXR5X29yaWdpbl9wcml2YXRlLmgi
Ci0jaW5jbHVkZSAiZXdrX3RvdWNoX2V2ZW50X3ByaXZhdGUuaCIKLSNpbmNsdWRlICJld2tfdmll
d19wcml2YXRlLmgiCi0jaW5jbHVkZSA8RWNvcmVfSW5wdXQuaD4KLSNpbmNsdWRlIDxFaW5hLmg+
Ci0jaW5jbHVkZSA8RXZhcy5oPgotI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+Ci0j
aW5jbHVkZSA8ZWluYV9zYWZldHlfY2hlY2tzLmg+Ci0jaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMu
aD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
LSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgot
Ci1zdGF0aWMgY29uc3QgY2hhciBFV0tfRlJBTUVfVFlQRV9TVFJbXSA9ICJFV0tfRnJhbWUiOwot
Ci1zdHJ1Y3QgRXdrX0ZyYW1lX1NtYXJ0X0RhdGEgewotICAgIEV2YXNfT2JqZWN0X1NtYXJ0X0Ns
aXBwZWRfRGF0YSBiYXNlOwotICAgIEV2YXNfT2JqZWN0KiBzZWxmOwotICAgIEV2YXNfT2JqZWN0
KiB2aWV3OwotI2lmZGVmIEVXS19GUkFNRV9ERUJVRwotICAgIEV2YXNfT2JqZWN0KiByZWdpb247
Ci0jZW5kaWYKLSAgICBPd25QdHI8V2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw+IGZyYW1l
TG9hZGVyQ2xpZW50OwotICAgIFdlYkNvcmU6OkZyYW1lKiBmcmFtZTsKLSAgICBFd2tfVGV4dF9X
aXRoX0RpcmVjdGlvbiB0aXRsZTsKLSAgICBjb25zdCBjaGFyKiB1cmk7Ci0gICAgY29uc3QgY2hh
ciogbmFtZTsKLSAgICBib29sIGVkaXRhYmxlIDogMTsKLSAgICBib29sIGhhc0Rpc3BsYXllZE1p
eGVkQ29udGVudCA6IDE7Ci0gICAgYm9vbCBoYXNSdW5NaXhlZENvbnRlbnQgOiAxOwotfTsKLQot
c3RydWN0IEVpbmFfSXRlcmF0b3JfRXdrX0ZyYW1lIHsKLSAgICBFaW5hX0l0ZXJhdG9yIGJhc2U7
Ci0gICAgRXZhc19PYmplY3QqIG9iamVjdDsKLSAgICB1bnNpZ25lZCBjdXJyZW50SW5kZXg7Ci19
OwotCi0jaWZuZGVmIEVXS19UWVBFX0NIRUNLCi0jZGVmaW5lIEVXS19GUkFNRV9UWVBFX0NIRUNL
KGV3a0ZyYW1lLCAuLi4pIGRvIHsgfSB3aGlsZSAoMCkKLSNlbHNlCi0jZGVmaW5lIEVXS19GUkFN
RV9UWVBFX0NIRUNLKGV3a0ZyYW1lLCAuLi4pIFwKLSAgICBkbyB7IFwKLSAgICAgICAgY29uc3Qg
Y2hhciogX3RtcF9vdHlwZSA9IGV2YXNfb2JqZWN0X3R5cGVfZ2V0KGV3a0ZyYW1lKTsgXAotICAg
ICAgICBpZiAoRUlOQV9VTkxJS0VMWShfdG1wX290eXBlICE9IEVXS19GUkFNRV9UWVBFX1NUUikp
IHsgXAotICAgICAgICAgICAgRUlOQV9MT0dfQ1JJVCBcCi0gICAgICAgICAgICAgICAgKCIlcCAo
JXMpIGlzIG5vdCBvZiBhbiBld2tfZnJhbWUhIiwgZXdrRnJhbWUsIFwKLSAgICAgICAgICAgICAg
ICBfdG1wX290eXBlID8gX3RtcF9vdHlwZSA6ICIobnVsbCkiKTsgXAotICAgICAgICAgICAgcmV0
dXJuIF9fVkFfQVJHU19fOyBcCi0gICAgICAgIH0gXAotICAgIH0gd2hpbGUgKDApCi0jZW5kaWYK
LQotI2RlZmluZSBFV0tfRlJBTUVfU0RfR0VUKGV3a0ZyYW1lLCBwb2ludGVyKSBcCi0gICAgRXdr
X0ZyYW1lX1NtYXJ0X0RhdGEqIHBvaW50ZXIgPSBzdGF0aWNfY2FzdDxFd2tfRnJhbWVfU21hcnRf
RGF0YSo+KGV2YXNfb2JqZWN0X3NtYXJ0X2RhdGFfZ2V0KGV3a0ZyYW1lKSkKLQotI2RlZmluZSBF
V0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihld2tGcmFtZSwgcG9pbnRlciwgLi4uKSBcCi0gICAg
RVdLX0ZSQU1FX1RZUEVfQ0hFQ0soZXdrRnJhbWUsIF9fVkFfQVJHU19fKTsgXAotICAgIEVXS19G
UkFNRV9TRF9HRVQoZXdrRnJhbWUsIHBvaW50ZXIpOyBcCi0gICAgaWYgKCFwb2ludGVyKSB7IFwK
LSAgICAgICAgQ1JJVElDQUwoIm5vIHNtYXJ0IGRhdGEgZm9yIG9iamVjdCAlcCAoJXMpIiwgXAot
ICAgICAgICAgICAgICAgICBld2tGcmFtZSwgZXZhc19vYmplY3RfdHlwZV9nZXQoZXdrRnJhbWUp
KTsgXAotICAgICAgICByZXR1cm4gX19WQV9BUkdTX187IFwKLSAgICB9Ci0KLXN0YXRpYyBFdmFz
X1NtYXJ0X0NsYXNzIF9wYXJlbnRfc2MgPSBFVkFTX1NNQVJUX0NMQVNTX0lOSVRfTlVMTDsKLQot
I2lmZGVmIEVXS19GUkFNRV9ERUJVRwotc3RhdGljIGlubGluZSB2b2lkIF9ld2tfZnJhbWVfZGVi
dWcoRXZhc19PYmplY3QqIGV3a0ZyYW1lKQotewotICAgIEV2YXNfT2JqZWN0KiBjbGlwLCAqIHBh
cmVudDsKLSAgICBFdmFzX0Nvb3JkIHgsIHksIHdpZHRoLCBoZWlnaHQsIGNvbnRlbnRYLCBjb250
ZW50WSwgY29udGVudFdpZHRoLCBjb250ZW50SGVpZ2h0OwotICAgIGludCByZWQsIGdyZWVuLCBi
bHVlLCBhbHBoYSwgY29udGVudFJlZCwgY29udGVudEdyZWVuLCBjb250ZW50Qmx1ZSwgY29udGVu
dEFscGhhOwotCi0gICAgZXZhc19vYmplY3RfY29sb3JfZ2V0KGV3a0ZyYW1lLCAmcmVkLCAmZ3Jl
ZW4sICZibHVlLCAmYWxwaGEpOwotICAgIGV2YXNfb2JqZWN0X2dlb21ldHJ5X2dldChld2tGcmFt
ZSwgJngsICZ5LCAmd2lkdGgsICZoZWlnaHQpOwotCi0gICAgY2xpcCA9IGV2YXNfb2JqZWN0X2Ns
aXBfZ2V0KGV3a0ZyYW1lKTsKLSAgICBldmFzX29iamVjdF9jb2xvcl9nZXQoY2xpcCwgJmNvbnRl
bnRSZWQsICZjb250ZW50R3JlZW4sICZjb250ZW50Qmx1ZSwgJmNvbnRlbnRBbHBoYSk7Ci0gICAg
ZXZhc19vYmplY3RfZ2VvbWV0cnlfZ2V0KGNsaXAsICZjb250ZW50WCwgJmNvbnRlbnRZLCAmY29u
dGVudFdpZHRoLCAmY29udGVudEhlaWdodCk7Ci0KLSAgICBFSU5BX0xPR19EQkcoIiVwOiB0eXBl
PSVzIG5hbWU9JXMsIHZpc2libGU9JWQsIGNvbG9yPSUwMnglMDJ4JTAyeCUwMngsICVkLCVkKyVk
eCVkLCBjbGlwcGVyPSVwICglZCwgJTAyeCUwMnglMDJ4JTAyeCwgJWQsJWQrJWR4JWQpXG4iLAot
ICAgICAgICAgICAgZXdrRnJhbWUsIGV2YXNfb2JqZWN0X3R5cGVfZ2V0KGV3a0ZyYW1lKSwgZXZh
c19vYmplY3RfbmFtZV9nZXQoZXdrRnJhbWUpLCBldmFzX29iamVjdF92aXNpYmxlX2dldChld2tG
cmFtZSksCi0gICAgICAgICAgICByZWQsIGdyZWVuLCBibHVlLCBhbHBoYSwgeCwgeSwgd2lkdGgs
IGhlaWdodCwKLSAgICAgICAgICAgIGNsaXAsIGV2YXNfb2JqZWN0X3Zpc2libGVfZ2V0KGNsaXAp
LCBjb250ZW50UmVkLCBjb250ZW50R3JlZW4sIGNvbnRlbnRCbHVlLCBjb250ZW50QWxwaGEsIGNv
bnRlbnRYLCBjb250ZW50WSwgY29udGVudFdpZHRoLCBjb250ZW50SGVpZ2h0KTsKLSAgICBwYXJl
bnQgPSBldmFzX29iamVjdF9zbWFydF9wYXJlbnRfZ2V0KGV3a0ZyYW1lKTsKLSAgICBpZiAoIXBh
cmVudCkKLSAgICAgICAgRUlOQV9MT0dfRVJSKCJjb3VsZCBub3QgZ2V0IHBhcmVudCBvYmplY3Qu
XG4iKTsKLSAgICBlbHNlCi0gICAgICAgIF9ld2tfZnJhbWVfZGVidWcocGFyZW50KTsKLX0KLSNl
bmRpZgotCi1zdGF0aWMgV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmwqIF9ld2tfZnJhbWVf
bG9hZGVyX2VmbF9nZXQoY29uc3QgV2ViQ29yZTo6RnJhbWUqIGZyYW1lKQotewotICAgIHJldHVy
biAmc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmwmPihmcmFtZS0+bG9h
ZGVyKCkuY2xpZW50KCkpOwotfQotCi1zdGF0aWMgRWluYV9Cb29sIF9ld2tfZnJhbWVfY2hpbGRy
ZW5faXRlcmF0b3JfbmV4dChFaW5hX0l0ZXJhdG9yX0V3a19GcmFtZSogaXRlcmF0b3IsIEV2YXNf
T2JqZWN0KiogZGF0YSkKLXsKLSAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihpdGVyYXRv
ci0+b2JqZWN0LCBzbWFydERhdGEsIGZhbHNlKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JF
VFVSTl9WQUwoc21hcnREYXRhLT5mcmFtZSwgZmFsc2UpOwotCi0gICAgaWYgKGl0ZXJhdG9yLT5j
dXJyZW50SW5kZXggPCBzbWFydERhdGEtPmZyYW1lLT50cmVlKCkuY2hpbGRDb3VudCgpKSB7Ci0g
ICAgICAgICpkYXRhID0gRVdLUHJpdmF0ZTo6a2l0RnJhbWUoc21hcnREYXRhLT5mcmFtZS0+dHJl
ZSgpLmNoaWxkKGl0ZXJhdG9yLT5jdXJyZW50SW5kZXgrKykpOwotICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXN0YXRpYyBFdmFzX09iamVjdCog
X2V3a19mcmFtZV9jaGlsZHJlbl9pdGVyYXRvcl9nZXRfY29udGFpbmVyKEVpbmFfSXRlcmF0b3Jf
RXdrX0ZyYW1lKiBpdGVyYXRvcikKLXsKLSAgICByZXR1cm4gaXRlcmF0b3ItPm9iamVjdDsKLX0K
LQotc3RhdGljIHZvaWQgX2V3a19mcmFtZV9zbWFydF9hZGQoRXZhc19PYmplY3QqIGV3a0ZyYW1l
KQotewotICAgIEVXS19GUkFNRV9TRF9HRVQoZXdrRnJhbWUsIHNtYXJ0RGF0YSk7Ci0KLSAgICBp
ZiAoIXNtYXJ0RGF0YSkgewotICAgICAgICBzbWFydERhdGEgPSBzdGF0aWNfY2FzdDxFd2tfRnJh
bWVfU21hcnRfRGF0YSo+KGNhbGxvYygxLCBzaXplb2YoRXdrX0ZyYW1lX1NtYXJ0X0RhdGEpKSk7
Ci0gICAgICAgIGlmICghc21hcnREYXRhKSB7Ci0gICAgICAgICAgICBDUklUSUNBTCgiY291bGQg
bm90IGFsbG9jYXRlIEV3a19GcmFtZV9TbWFydF9EYXRhIik7Ci0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIH0KLSAgICAgICAgZXZhc19vYmplY3Rfc21hcnRfZGF0YV9zZXQoZXdrRnJhbWUs
IHNtYXJ0RGF0YSk7Ci0gICAgfQotCi0gICAgc21hcnREYXRhLT5zZWxmID0gZXdrRnJhbWU7Ci0K
LSAgICBfcGFyZW50X3NjLmFkZChld2tGcmFtZSk7Ci0gICAgZXZhc19vYmplY3Rfc3RhdGljX2Ns
aXBfc2V0KHNtYXJ0RGF0YS0+YmFzZS5jbGlwcGVyLCBmYWxzZSk7Ci0gICAgZXZhc19vYmplY3Rf
bW92ZShzbWFydERhdGEtPmJhc2UuY2xpcHBlciwgMCwgMCk7Ci0gICAgZXZhc19vYmplY3RfcmVz
aXplKHNtYXJ0RGF0YS0+YmFzZS5jbGlwcGVyLCAwLCAwKTsKLQotI2lmZGVmIEVXS19GUkFNRV9E
RUJVRwotICAgIHNtYXJ0RGF0YS0+cmVnaW9uID0gZXZhc19vYmplY3RfcmVjdGFuZ2xlX2FkZChz
bWFydERhdGEtPmJhc2UuZXZhcyk7Ci0gICAgc3RhdGljIGludCBpID0gMDsKLSAgICBzd2l0Y2gg
KGkpIHsKLSAgICBjYXNlIDA6Ci0gICAgICAgIGV2YXNfb2JqZWN0X2NvbG9yX3NldChzbWFydERh
dGEtPnJlZ2lvbiwgMTI4LCAwLCAwLCAxMjgpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIDE6
Ci0gICAgICAgIGV2YXNfb2JqZWN0X2NvbG9yX3NldChzbWFydERhdGEtPnJlZ2lvbiwgMCwgMTI4
LCAwLCAxMjgpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIDI6Ci0gICAgICAgIGV2YXNfb2Jq
ZWN0X2NvbG9yX3NldChzbWFydERhdGEtPnJlZ2lvbiwgMCwgMCwgMTI4LCAxMjgpOwotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIDM6Ci0gICAgICAgIGV2YXNfb2JqZWN0X2NvbG9yX3NldChzbWFy
dERhdGEtPnJlZ2lvbiwgMTI4LCAwLCAwLCAxMjgpOwotICAgICAgICBicmVhazsKLSAgICBjYXNl
IDQ6Ci0gICAgICAgIGV2YXNfb2JqZWN0X2NvbG9yX3NldChzbWFydERhdGEtPnJlZ2lvbiwgMTI4
LCAxMjgsIDAsIDEyOCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgNToKLSAgICAgICAgZXZh
c19vYmplY3RfY29sb3Jfc2V0KHNtYXJ0RGF0YS0+cmVnaW9uLCAxMjgsIDAsIDEyOCwgMTI4KTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSA2OgotICAgICAgICBldmFzX29iamVjdF9jb2xvcl9z
ZXQoc21hcnREYXRhLT5yZWdpb24sIDAsIDEyOCwgMTI4LCAxMjgpOwotICAgICAgICBicmVhazsK
LSAgICBkZWZhdWx0OgotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgaSsrOwotICAgIGlmIChp
ID4gNikKLSAgICAgICAgaSA9IDA7Ci0KLSAgICBldmFzX29iamVjdF9zbWFydF9tZW1iZXJfYWRk
KHNtYXJ0RGF0YS0+cmVnaW9uLCBld2tGcmFtZSk7Ci0gICAgZXZhc19vYmplY3RfaGlkZShzbWFy
dERhdGEtPnJlZ2lvbik7Ci0jZW5kaWYKLX0KLQotc3RhdGljIHZvaWQgX2V3a19mcmFtZV9zbWFy
dF9kZWwoRXZhc19PYmplY3QqIGV3a0ZyYW1lKQotewotICAgIEVXS19GUkFNRV9TRF9HRVQoZXdr
RnJhbWUsIHNtYXJ0RGF0YSk7Ci0KLSAgICBpZiAoc21hcnREYXRhKSB7Ci0gICAgICAgIGlmIChz
bWFydERhdGEtPmZyYW1lKSB7Ci0gICAgICAgICAgICBXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVu
dEVmbCogZmxjID0gX2V3a19mcmFtZV9sb2FkZXJfZWZsX2dldChzbWFydERhdGEtPmZyYW1lKTsK
LSAgICAgICAgICAgIGZsYy0+c2V0V2ViRnJhbWUoMCk7Ci0gICAgICAgICAgICBFV0tfRlJBTUVf
U0RfR0VUKGV3a192aWV3X2ZyYW1lX21haW5fZ2V0KHNtYXJ0RGF0YS0+dmlldyksIG1haW5TbWFy
dERhdGEpOwotICAgICAgICAgICAgaWYgKG1haW5TbWFydERhdGEtPmZyYW1lID09IHNtYXJ0RGF0
YS0+ZnJhbWUpIC8vIGFwcGx5aW5nIG9ubHkgZm9yIG1haW4gZnJhbWUgaXMgZW5vdWdoICh3aWxs
IHRyYXZlcnNlIHRocm91Z2ggZnJhbWUgdHJlZSkKLSAgICAgICAgICAgICAgICBzbWFydERhdGEt
PmZyYW1lLT5sb2FkZXIoKS5kZXRhY2hGcm9tUGFyZW50KCk7Ci0gICAgICAgICAgICBzbWFydERh
dGEtPmZyYW1lID0gMDsKLSAgICAgICAgfQotCi0gICAgICAgIGVpbmFfc3RyaW5nc2hhcmVfZGVs
KHNtYXJ0RGF0YS0+dGl0bGUuc3RyaW5nKTsKLSAgICAgICAgZWluYV9zdHJpbmdzaGFyZV9kZWwo
c21hcnREYXRhLT51cmkpOwotICAgICAgICBlaW5hX3N0cmluZ3NoYXJlX2RlbChzbWFydERhdGEt
Pm5hbWUpOwotICAgIH0KLQotICAgIF9wYXJlbnRfc2MuZGVsKGV3a0ZyYW1lKTsKLX0KLQotc3Rh
dGljIHZvaWQgX2V3a19mcmFtZV9zbWFydF9yZXNpemUoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBF
dmFzX0Nvb3JkIHdpZHRoLCBFdmFzX0Nvb3JkIGhlaWdodCkKLXsKLSAgICBFV0tfRlJBTUVfU0Rf
R0VUKGV3a0ZyYW1lLCBzbWFydERhdGEpOwotICAgIGV2YXNfb2JqZWN0X3Jlc2l6ZShzbWFydERh
dGEtPmJhc2UuY2xpcHBlciwgd2lkdGgsIGhlaWdodCk7Ci0KLSNpZmRlZiBFV0tfRlJBTUVfREVC
VUcKLSAgICBldmFzX29iamVjdF9yZXNpemUoc21hcnREYXRhLT5yZWdpb24sIHdpZHRoLCBoZWln
aHQpOwotICAgIEV2YXNfQ29vcmQgeCwgeTsKLSAgICBldmFzX29iamVjdF9nZW9tZXRyeV9nZXQo
c21hcnREYXRhLT5yZWdpb24sICZ4LCAmeSwgJndpZHRoLCAmaGVpZ2h0KTsKLSAgICBJTkZPKCJy
ZWdpb249JXAsIHZpc2libGU9JWQsIGdlbz0lZCwlZCArICVkeCVkIiwKLSAgICAgICAgc21hcnRE
YXRhLT5yZWdpb24sIGV2YXNfb2JqZWN0X3Zpc2libGVfZ2V0KHNtYXJ0RGF0YS0+cmVnaW9uKSwg
eCwgeSwgd2lkdGgsIGhlaWdodCk7Ci0gICAgX2V3a19mcmFtZV9kZWJ1Zyhld2tGcmFtZSk7Ci0j
ZW5kaWYKLX0KLQotc3RhdGljIHZvaWQgX2V3a19mcmFtZV9zbWFydF9zZXQoRXZhc19TbWFydF9D
bGFzcyogYXBpKQotewotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NsaXBwZWRfc21hcnRfc2V0KGFw
aSk7Ci0gICAgYXBpLT5hZGQgPSBfZXdrX2ZyYW1lX3NtYXJ0X2FkZDsKLSAgICBhcGktPmRlbCA9
IF9ld2tfZnJhbWVfc21hcnRfZGVsOwotICAgIGFwaS0+cmVzaXplID0gX2V3a19mcmFtZV9zbWFy
dF9yZXNpemU7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgRXZhc19TbWFydCogX2V3a19mcmFtZV9zbWFy
dF9jbGFzc19uZXcodm9pZCkKLXsKLSAgICBzdGF0aWMgRXZhc19TbWFydF9DbGFzcyBzbWFydENs
YXNzID0gRVZBU19TTUFSVF9DTEFTU19JTklUX05BTUVfVkVSU0lPTihFV0tfRlJBTUVfVFlQRV9T
VFIpOwotICAgIHN0YXRpYyBFdmFzX1NtYXJ0KiBzbWFydCA9IDA7Ci0KLSAgICBpZiAoRUlOQV9V
TkxJS0VMWSghc21hcnQpKSB7Ci0gICAgICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NsaXBwZWRfc21h
cnRfc2V0KCZfcGFyZW50X3NjKTsKLSAgICAgICAgX2V3a19mcmFtZV9zbWFydF9zZXQoJnNtYXJ0
Q2xhc3MpOwotICAgICAgICBzbWFydCA9IGV2YXNfc21hcnRfY2xhc3NfbmV3KCZzbWFydENsYXNz
KTsKLSAgICB9Ci0KLSAgICByZXR1cm4gc21hcnQ7Ci19Ci0KLUV2YXNfT2JqZWN0KiBld2tfZnJh
bWVfdmlld19nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a0ZyYW1lKQotewotICAgIEVXS19GUkFN
RV9TRF9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBzbWFydERhdGEsIDApOwotICAgIHJldHVybiBz
bWFydERhdGEtPnZpZXc7Ci19Ci0KLUV3a19TZWN1cml0eV9PcmlnaW4qIGV3a19mcmFtZV9zZWN1
cml0eV9vcmlnaW5fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpld2tGcmFtZSkKLXsKLSAgICBFV0tf
RlJBTUVfU0RfR0VUX09SX1JFVFVSTihld2tGcmFtZSwgc21hcnREYXRhLCAwKTsKLSAgICBFSU5B
X1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5mcmFtZSwgMCk7Ci0gICAgRUlO
QV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+ZnJhbWUtPmRvY3VtZW50KCks
IDApOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEtPmZyYW1l
LT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCAwKTsKLQotICAgIHJldHVybiBld2tfc2Vj
dXJpdHlfb3JpZ2luX25ldyhzbWFydERhdGEtPmZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9y
aWdpbigpKTsKLX0KLQotRWluYV9JdGVyYXRvciogZXdrX2ZyYW1lX2NoaWxkcmVuX2l0ZXJhdG9y
X25ldyhFdmFzX09iamVjdCogZXdrRnJhbWUpCi17Ci0gICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9S
RVRVUk4oZXdrRnJhbWUsIHNtYXJ0RGF0YSwgMCk7Ci0gICAgRWluYV9JdGVyYXRvcl9Fd2tfRnJh
bWUqIGl0ZXJhdG9yID0gc3RhdGljX2Nhc3Q8RWluYV9JdGVyYXRvcl9Fd2tfRnJhbWUqPgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjYWxsb2MoMSwgc2l6ZW9mKEVpbmFfSXRl
cmF0b3JfRXdrX0ZyYW1lKSkpOwotICAgIGlmICghaXRlcmF0b3IpCi0gICAgICAgIHJldHVybiAw
OwotCi0gICAgRUlOQV9NQUdJQ19TRVQoJml0ZXJhdG9yLT5iYXNlLCBFSU5BX01BR0lDX0lURVJB
VE9SKTsKLSAgICBpdGVyYXRvci0+YmFzZS5uZXh0ID0gRlVOQ19JVEVSQVRPUl9ORVhUKF9ld2tf
ZnJhbWVfY2hpbGRyZW5faXRlcmF0b3JfbmV4dCk7Ci0gICAgaXRlcmF0b3ItPmJhc2UuZ2V0X2Nv
bnRhaW5lciA9IEZVTkNfSVRFUkFUT1JfR0VUX0NPTlRBSU5FUihfZXdrX2ZyYW1lX2NoaWxkcmVu
X2l0ZXJhdG9yX2dldF9jb250YWluZXIpOwotICAgIGl0ZXJhdG9yLT5iYXNlLmZyZWUgPSBGVU5D
X0lURVJBVE9SX0ZSRUUoZnJlZSk7Ci0gICAgaXRlcmF0b3ItPm9iamVjdCA9IGV3a0ZyYW1lOwot
ICAgIGl0ZXJhdG9yLT5jdXJyZW50SW5kZXggPSAwOwotICAgIHJldHVybiAmaXRlcmF0b3ItPmJh
c2U7Ci19Ci0KLUV2YXNfT2JqZWN0KiBld2tfZnJhbWVfY2hpbGRfZmluZChFdmFzX09iamVjdCog
ZXdrRnJhbWUsIGNvbnN0IGNoYXIqIG5hbWUpCi17Ci0gICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9S
RVRVUk4oZXdrRnJhbWUsIHNtYXJ0RGF0YSwgMCk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9S
RVRVUk5fVkFMKG5hbWUsIDApOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChz
bWFydERhdGEtPmZyYW1lLCAwKTsKLSAgICBXVEY6OlN0cmluZyBmcmFtZU5hbWUgPSBXVEY6OlN0
cmluZzo6ZnJvbVVURjgobmFtZSk7Ci0gICAgcmV0dXJuIEVXS1ByaXZhdGU6OmtpdEZyYW1lKHNt
YXJ0RGF0YS0+ZnJhbWUtPnRyZWUoKS5maW5kKFdURjo6QXRvbWljU3RyaW5nKGZyYW1lTmFtZSkp
KTsKLX0KLQotRWluYV9Cb29sIGV3a19mcmFtZV91cmlfc2V0KEV2YXNfT2JqZWN0KiBld2tGcmFt
ZSwgY29uc3QgY2hhciogdXJpKQotewotICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKGV3
a0ZyYW1lLCBzbWFydERhdGEsIGZhbHNlKTsKLSAgICBXZWJDb3JlOjpVUkwga3VybChXZWJDb3Jl
OjpVUkwoKSwgV1RGOjpTdHJpbmc6OmZyb21VVEY4KHVyaSkpOwotICAgIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCByZXEoa3VybCk7Ci0gICAgc21hcnREYXRhLT5mcmFtZS0+bG9hZGVyKCkubG9h
ZChXZWJDb3JlOjpGcmFtZUxvYWRSZXF1ZXN0KHNtYXJ0RGF0YS0+ZnJhbWUsIHJlcSkpOwotCi0g
ICAgcmV0dXJuIHRydWU7Ci19Ci0KLWNvbnN0IGNoYXIqIGV3a19mcmFtZV91cmlfZ2V0KGNvbnN0
IEV2YXNfT2JqZWN0KiBld2tGcmFtZSkKLXsKLSAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVS
Tihld2tGcmFtZSwgc21hcnREYXRhLCAwKTsKLSAgICByZXR1cm4gc21hcnREYXRhLT51cmk7Ci19
Ci0KLWNvbnN0IEV3a19UZXh0X1dpdGhfRGlyZWN0aW9uKiBld2tfZnJhbWVfdGl0bGVfZ2V0KGNv
bnN0IEV2YXNfT2JqZWN0KiBld2tGcmFtZSkKLXsKLSAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JF
VFVSTihld2tGcmFtZSwgc21hcnREYXRhLCAwKTsKLSAgICByZXR1cm4gJnNtYXJ0RGF0YS0+dGl0
bGU7Ci19Ci0KLWNvbnN0IGNoYXIqIGV3a19mcmFtZV9uYW1lX2dldChjb25zdCBFdmFzX09iamVj
dCogZXdrRnJhbWUpCi17Ci0gICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUs
IHNtYXJ0RGF0YSwgMCk7Ci0KLSAgICBpZiAoIXNtYXJ0RGF0YS0+ZnJhbWUpIHsKLSAgICAgICAg
RVJSKCJjb3VsZCBub3QgZ2V0IG5hbWUgb2YgdW5pbml0aWFsaXplZCBmcmFtZS4iKTsKLSAgICAg
ICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgY29uc3QgV1RGOjpTdHJpbmcgZnJhbWVOYW1lID0g
c21hcnREYXRhLT5mcmFtZS0+dHJlZSgpLnVuaXF1ZU5hbWUoKTsKLQotICAgIGlmICgoc21hcnRE
YXRhLT5uYW1lKSAmJiAoc21hcnREYXRhLT5uYW1lID09IGZyYW1lTmFtZSkpCi0gICAgICAgIHJl
dHVybiBzbWFydERhdGEtPm5hbWU7Ci0KLSAgICBlaW5hX3N0cmluZ3NoYXJlX3JlcGxhY2VfbGVu
Z3RoKCYoc21hcnREYXRhLT5uYW1lKSwgZnJhbWVOYW1lLnV0ZjgoKS5kYXRhKCksIGZyYW1lTmFt
ZS5sZW5ndGgoKSk7Ci0KLSAgICByZXR1cm4gc21hcnREYXRhLT5uYW1lOwotfQotCi1FaW5hX0Jv
b2wgZXdrX2ZyYW1lX2NvbnRlbnRzX3NpemVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tGcmFt
ZSwgRXZhc19Db29yZCogd2lkdGgsIEV2YXNfQ29vcmQqIGhlaWdodCkKLXsKLSAgICBpZiAod2lk
dGgpCi0gICAgICAgICp3aWR0aCA9IDA7Ci0gICAgaWYgKGhlaWdodCkKLSAgICAgICAgKmhlaWdo
dCA9IDA7Ci0gICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0RGF0
YSwgZmFsc2UpOwotICAgIGlmICghc21hcnREYXRhLT5mcmFtZSB8fCAhc21hcnREYXRhLT5mcmFt
ZS0+dmlldygpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKHdpZHRoKQotICAgICAg
ICAqd2lkdGggPSBzbWFydERhdGEtPmZyYW1lLT52aWV3KCktPmNvbnRlbnRzV2lkdGgoKTsKLSAg
ICBpZiAoaGVpZ2h0KQotICAgICAgICAqaGVpZ2h0ID0gc21hcnREYXRhLT5mcmFtZS0+dmlldygp
LT5jb250ZW50c0hlaWdodCgpOwotICAgIHJldHVybiB0cnVlOwotfQotCi1zdGF0aWMgRWluYV9C
b29sIF9ld2tfZnJhbWVfY29udGVudHNfc2V0X2ludGVybmFsKEV3a19GcmFtZV9TbWFydF9EYXRh
KiBzbWFydERhdGEsIGNvbnN0IGNoYXIqIGNvbnRlbnRzLCBzaXplX3QgY29udGVudHNTaXplLCBj
b25zdCBjaGFyKiBtaW1lVHlwZSwgY29uc3QgY2hhciogZW5jb2RpbmcsIGNvbnN0IGNoYXIqIGJh
c2VVcmksIGNvbnN0IGNoYXIqIHVucmVhY2hhYmxlVXJpKQotewotICAgIHNpemVfdCBsZW5ndGgg
PSBzdHJsZW4oY29udGVudHMpOwotICAgIGlmIChjb250ZW50c1NpemUgPCAxIHx8IGNvbnRlbnRz
U2l6ZSA+IGxlbmd0aCkKLSAgICAgICAgY29udGVudHNTaXplID0gbGVuZ3RoOwotICAgIGlmICgh
bWltZVR5cGUpCi0gICAgICAgIG1pbWVUeXBlID0gInRleHQvaHRtbCI7Ci0gICAgaWYgKCFlbmNv
ZGluZykKLSAgICAgICAgZW5jb2RpbmcgPSAiVVRGLTgiOwotICAgIGlmICghYmFzZVVyaSkKLSAg
ICAgICAgYmFzZVVyaSA9ICJhYm91dDpibGFuayI7Ci0KLSAgICBXZWJDb3JlOjpVUkwgYmFzZUtV
UkwoV2ViQ29yZTo6VVJMKCksIFdURjo6U3RyaW5nOjpmcm9tVVRGOChiYXNlVXJpKSk7Ci0gICAg
V2ViQ29yZTo6VVJMIHVucmVhY2hhYmxlS1VSTDsKLSAgICBpZiAodW5yZWFjaGFibGVVcmkpCi0g
ICAgICAgIHVucmVhY2hhYmxlS1VSTCA9IFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgV1RG
OjpTdHJpbmc6OmZyb21VVEY4KHVucmVhY2hhYmxlVXJpKSk7Ci0gICAgZWxzZQotICAgICAgICB1
bnJlYWNoYWJsZUtVUkwgPSBXZWJDb3JlOjpVUkwoKTsKLQotICAgIFdURjo6UmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUo
Y29udGVudHMsIGNvbnRlbnRzU2l6ZSk7Ci0gICAgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEgc3Vi
c3RpdHV0ZURhdGEKLSAgICAgICAgKGJ1ZmZlci5yZWxlYXNlKCksCi0gICAgICAgIFdURjo6U3Ry
aW5nOjpmcm9tVVRGOChtaW1lVHlwZSksCi0gICAgICAgIFdURjo6U3RyaW5nOjpmcm9tVVRGOChl
bmNvZGluZyksCi0gICAgICAgIGJhc2VLVVJMLCB1bnJlYWNoYWJsZUtVUkwpOwotICAgIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0KGJhc2VLVVJMKTsKLQotICAgIHNtYXJ0RGF0YS0+
ZnJhbWUtPmxvYWRlcigpLmxvYWQoV2ViQ29yZTo6RnJhbWVMb2FkUmVxdWVzdChzbWFydERhdGEt
PmZyYW1lLCByZXF1ZXN0LCBzdWJzdGl0dXRlRGF0YSkpOwotICAgIHJldHVybiB0cnVlOwotfQot
Ci1FaW5hX0Jvb2wgZXdrX2ZyYW1lX2NvbnRlbnRzX3NldChFdmFzX09iamVjdCogZXdrRnJhbWUs
IGNvbnN0IGNoYXIqIGNvbnRlbnRzLCBzaXplX3QgY29udGVudHNTaXplLCBjb25zdCBjaGFyKiBt
aW1lVHlwZSwgY29uc3QgY2hhciogZW5jb2RpbmcsIGNvbnN0IGNoYXIqIGJhc2VVcmkpCi17Ci0g
ICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0RGF0YSwgZmFsc2Up
OwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEtPmZyYW1lLCBm
YWxzZSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGNvbnRlbnRzLCBmYWxz
ZSk7Ci0gICAgcmV0dXJuIF9ld2tfZnJhbWVfY29udGVudHNfc2V0X2ludGVybmFsCi0gICAgICAg
ICAgICAgICAoc21hcnREYXRhLCBjb250ZW50cywgY29udGVudHNTaXplLCBtaW1lVHlwZSwgZW5j
b2RpbmcsIGJhc2VVcmksIDApOwotfQotCi1FaW5hX0Jvb2wgZXdrX2ZyYW1lX2NvbnRlbnRzX2Fs
dGVybmF0ZV9zZXQoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBjb25zdCBjaGFyKiBjb250ZW50cywg
c2l6ZV90IGNvbnRlbnRzU2l6ZSwgY29uc3QgY2hhciogbWltZVR5cGUsIGNvbnN0IGNoYXIqIGVu
Y29kaW5nLCBjb25zdCBjaGFyKiBiYXNlVXJpLCBjb25zdCBjaGFyKiB1bnJlYWNoYWJsZVVyaSkK
LXsKLSAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihld2tGcmFtZSwgc21hcnREYXRhLCBm
YWxzZSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+ZnJh
bWUsIGZhbHNlKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoY29udGVudHMs
IGZhbHNlKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwodW5yZWFjaGFibGVV
cmksIGZhbHNlKTsKLSAgICByZXR1cm4gX2V3a19mcmFtZV9jb250ZW50c19zZXRfaW50ZXJuYWwK
LSAgICAgICAgICAgICAgIChzbWFydERhdGEsIGNvbnRlbnRzLCBjb250ZW50c1NpemUsIG1pbWVU
eXBlLCBlbmNvZGluZywgYmFzZVVyaSwKLSAgICAgICAgICAgICAgIHVucmVhY2hhYmxlVXJpKTsK
LX0KLQotY29uc3QgY2hhciogZXdrX2ZyYW1lX3NjcmlwdF9leGVjdXRlKEV2YXNfT2JqZWN0KiBl
d2tGcmFtZSwgY29uc3QgY2hhciogc2NyaXB0KQotewotICAgIEVXS19GUkFNRV9TRF9HRVRfT1Jf
UkVUVVJOKGV3a0ZyYW1lLCBzbWFydERhdGEsIDApOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExf
UkVUVVJOX1ZBTChzbWFydERhdGEtPmZyYW1lLCAwKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxM
X1JFVFVSTl9WQUwoc2NyaXB0LCAwKTsKLQotICAgIFdURjo6U3RyaW5nIHJlc3VsdFN0cmluZzsK
LSAgICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0gc21hcnREYXRhLT5mcmFtZS0+c2NyaXB0KCkuZXhl
Y3V0ZVNjcmlwdChXVEY6OlN0cmluZzo6ZnJvbVVURjgoc2NyaXB0KSwgdHJ1ZSkuanNWYWx1ZSgp
OwotCi0gICAgaWYgKCFzbWFydERhdGEtPmZyYW1lKSAvLyBJbiBjYXNlIHRoZSBzY3JpcHQgcmVt
b3ZlZCBvdXIgZnJhbWUgZnJvbSB0aGUgcGFnZS4KLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBp
ZiAoIXJlc3VsdCB8fCAoIXJlc3VsdC5pc0Jvb2xlYW4oKSAmJiAhcmVzdWx0LmlzU3RyaW5nKCkg
JiYgIXJlc3VsdC5pc051bWJlcigpKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBKU0M6OkV4
ZWNTdGF0ZSogZXhlYyA9IHNtYXJ0RGF0YS0+ZnJhbWUtPnNjcmlwdCgpLmdsb2JhbE9iamVjdChX
ZWJDb3JlOjptYWluVGhyZWFkTm9ybWFsV29ybGQoKSktPmdsb2JhbEV4ZWMoKTsKLSAgICBKU0M6
OkpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOwotICAgIHJlc3VsdFN0cmluZyA9IHJlc3VsdC50b1N0
cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7Ci0gICAgcmV0dXJuIGVpbmFfc3RyaW5nc2hhcmVfYWRk
KHJlc3VsdFN0cmluZy51dGY4KCkuZGF0YSgpKTsKLX0KLQotRWluYV9Cb29sIGV3a19mcmFtZV9l
ZGl0YWJsZV9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a0ZyYW1lKQotewotICAgIEVXS19GUkFN
RV9TRF9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBzbWFydERhdGEsIGZhbHNlKTsKLSAgICBFSU5B
X1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5mcmFtZSwgZmFsc2UpOwotICAg
IHJldHVybiBzbWFydERhdGEtPmVkaXRhYmxlOwotfQotCi1FaW5hX0Jvb2wgZXdrX2ZyYW1lX2Vk
aXRhYmxlX3NldChFdmFzX09iamVjdCogZXdrRnJhbWUsIEVpbmFfQm9vbCBlZGl0YWJsZSkKLXsK
LSAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihld2tGcmFtZSwgc21hcnREYXRhLCBmYWxz
ZSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+ZnJhbWUs
IGZhbHNlKTsKLSAgICBlZGl0YWJsZSA9ICEhZWRpdGFibGU7Ci0gICAgaWYgKHNtYXJ0RGF0YS0+
ZWRpdGFibGUgPT0gZWRpdGFibGUpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIHNtYXJ0RGF0
YS0+ZWRpdGFibGUgPSBlZGl0YWJsZTsKLSAgICBpZiAoZWRpdGFibGUpCi0gICAgICAgIHNtYXJ0
RGF0YS0+ZnJhbWUtPmVkaXRvcigpLmFwcGx5RWRpdGluZ1N0eWxlVG9Cb2R5RWxlbWVudCgpOwot
ICAgIHJldHVybiB0cnVlOwotfQotCi1jb25zdCBjaGFyKiBld2tfZnJhbWVfc2VsZWN0aW9uX2dl
dChjb25zdCBFdmFzX09iamVjdCogZXdrRnJhbWUpCi17Ci0gICAgRVdLX0ZSQU1FX1NEX0dFVF9P
Ul9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0RGF0YSwgMCk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVM
TF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+ZnJhbWUsIDApOwotICAgIFdURjo6Q1N0cmluZyBzZWxl
Y3RlZFRleHQgPSBzbWFydERhdGEtPmZyYW1lLT5lZGl0b3IoKS5zZWxlY3RlZFRleHQoKS51dGY4
KCk7Ci0gICAgaWYgKHNlbGVjdGVkVGV4dC5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0g
ICAgcmV0dXJuIGVpbmFfc3RyaW5nc2hhcmVfYWRkKHNlbGVjdGVkVGV4dC5kYXRhKCkpOwotfQot
Ci1FaW5hX0Jvb2wgZXdrX2ZyYW1lX3RleHRfc2VhcmNoKGNvbnN0IEV2YXNfT2JqZWN0KiBld2tG
cmFtZSwgY29uc3QgY2hhciogdGV4dCwgRWluYV9Cb29sIGNhc2VTZW5zaXRpdmUsIEVpbmFfQm9v
bCBmb3J3YXJkLCBFaW5hX0Jvb2wgd3JhcCkKLXsKLSAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JF
VFVSTihld2tGcmFtZSwgc21hcnREYXRhLCBmYWxzZSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVM
TF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+ZnJhbWUsIGZhbHNlKTsKLSAgICBFSU5BX1NBRkVUWV9P
Tl9OVUxMX1JFVFVSTl9WQUwodGV4dCwgZmFsc2UpOwotCi0gICAgV2ViQ29yZTo6RmluZE9wdGlv
bnMgb3B0aW9ucyA9IChjYXNlU2Vuc2l0aXZlID8gMCA6IFdlYkNvcmU6OkNhc2VJbnNlbnNpdGl2
ZSkgfCAoZm9yd2FyZCA/IDAgOiBXZWJDb3JlOjpCYWNrd2FyZHMpIHwgKHdyYXAgPyBXZWJDb3Jl
OjpXcmFwQXJvdW5kIDogMCkgfCBXZWJDb3JlOjpTdGFydEluU2VsZWN0aW9uOwotICAgIHJldHVy
biBzbWFydERhdGEtPmZyYW1lLT5lZGl0b3IoKS5maW5kU3RyaW5nKFdURjo6U3RyaW5nOjpmcm9t
VVRGOCh0ZXh0KSwgb3B0aW9ucyk7Ci19Ci0KLXVuc2lnbmVkIGludCBld2tfZnJhbWVfdGV4dF9t
YXRjaGVzX21hcmsoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBjb25zdCBjaGFyKiBzdHJpbmcsIEVp
bmFfQm9vbCBjYXNlU2Vuc2l0aXZlLCBFaW5hX0Jvb2wgaGlnaGxpZ2h0LCB1bnNpZ25lZCBpbnQg
bGltaXQpCi17Ci0gICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0
RGF0YSwgMCk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+
ZnJhbWUsIDApOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzdHJpbmcsIDAp
OwotCi0gICAgc21hcnREYXRhLT5mcmFtZS0+ZWRpdG9yKCkuc2V0TWFya2VkVGV4dE1hdGNoZXNB
cmVIaWdobGlnaHRlZChoaWdobGlnaHQpOwotICAgIHJldHVybiBzbWFydERhdGEtPmZyYW1lLT5l
ZGl0b3IoKS5jb3VudE1hdGNoZXNGb3JUZXh0KFdURjo6U3RyaW5nOjpmcm9tVVRGOChzdHJpbmcp
LCAwLCBjYXNlU2Vuc2l0aXZlLCBsaW1pdCwgdHJ1ZSwgMCk7Ci19Ci0KLUVpbmFfQm9vbCBld2tf
ZnJhbWVfdGV4dF9tYXRjaGVzX3VubWFya19hbGwoRXZhc19PYmplY3QqIGV3a0ZyYW1lKQotewot
ICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBzbWFydERhdGEsIGZhbHNl
KTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5mcmFtZSwg
ZmFsc2UpOwotCi0gICAgc21hcnREYXRhLT5mcmFtZS0+ZG9jdW1lbnQoKS0+bWFya2VycygpLnJl
bW92ZU1hcmtlcnMoV2ViQ29yZTo6RG9jdW1lbnRNYXJrZXI6OlRleHRNYXRjaCk7Ci0gICAgcmV0
dXJuIHRydWU7Ci19Ci0KLUVpbmFfQm9vbCBld2tfZnJhbWVfdGV4dF9tYXRjaGVzX2hpZ2hsaWdo
dF9zZXQoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBFaW5hX0Jvb2wgaGlnaGxpZ2h0KQotewotICAg
IEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBzbWFydERhdGEsIGZhbHNlKTsK
LSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5mcmFtZSwgZmFs
c2UpOwotICAgIHNtYXJ0RGF0YS0+ZnJhbWUtPmVkaXRvcigpLnNldE1hcmtlZFRleHRNYXRjaGVz
QXJlSGlnaGxpZ2h0ZWQoaGlnaGxpZ2h0KTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotRWluYV9C
b29sIGV3a19mcmFtZV90ZXh0X21hdGNoZXNfaGlnaGxpZ2h0X2dldChjb25zdCBFdmFzX09iamVj
dCogZXdrRnJhbWUpCi17Ci0gICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUs
IHNtYXJ0RGF0YSwgZmFsc2UpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChz
bWFydERhdGEtPmZyYW1lLCBmYWxzZSk7Ci0gICAgcmV0dXJuIHNtYXJ0RGF0YS0+ZnJhbWUtPmVk
aXRvcigpLm1hcmtlZFRleHRNYXRjaGVzQXJlSGlnaGxpZ2h0ZWQoKTsKLX0KLQotLyoqCi0gKiBD
b21wYXJpc29uIGZ1bmN0aW9uIHVzZWQgYnkgZXdrX2ZyYW1lX3RleHRfbWF0Y2hlc19udGhfcG9z
X2dldAotICovCi1zdGF0aWMgYm9vbCBfZXdrX2ZyYW1lX3JlY3RfY21wX2xlc3NfdGhhbihjb25z
dCBXZWJDb3JlOjpJbnRSZWN0JiBiZWdpbiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZW5kKQot
ewotICAgIHJldHVybiAoYmVnaW4ueSgpIDwgZW5kLnkoKSB8fCAoYmVnaW4ueSgpID09IGVuZC55
KCkgJiYgYmVnaW4ueCgpIDwgZW5kLngoKSkpOwotfQotCi0vKioKLSAqIFByZWRpY2F0ZSB1c2Vk
IGJ5IGV3a19mcmFtZV90ZXh0X21hdGNoZXNfbnRoX3Bvc19nZXQKLSAqLwotc3RhdGljIGJvb2wg
X2V3a19mcmFtZV9yZWN0X2lzX25lZ2F0aXZlX3ZhbHVlKGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
IHJlY3QpCi17Ci0gICAgcmV0dXJuIChyZWN0LngoKSA8IDAgfHwgcmVjdC55KCkgPCAwKTsKLX0K
LQotRWluYV9Cb29sIGV3a19mcmFtZV90ZXh0X21hdGNoZXNfbnRoX3Bvc19nZXQoY29uc3QgRXZh
c19PYmplY3QqIGV3a0ZyYW1lLCBzaXplX3QgbnVtYmVyLCBpbnQqIHgsIGludCogeSkKLXsKLSAg
ICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihld2tGcmFtZSwgc21hcnREYXRhLCBmYWxzZSk7
Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+ZnJhbWUsIGZh
bHNlKTsKLQotICAgIFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiBpbnRSZWN0cyA9IHNtYXJ0RGF0
YS0+ZnJhbWUtPmRvY3VtZW50KCktPm1hcmtlcnMoKS5yZW5kZXJlZFJlY3RzRm9yTWFya2VycyhX
ZWJDb3JlOjpEb2N1bWVudE1hcmtlcjo6VGV4dE1hdGNoKTsKLQotICAgIC8qIHJlbW92ZSB1c2Vs
ZXNzIHZhbHVlcyAqLwotICAgIHN0ZDo6cmVtb3ZlX2lmKGludFJlY3RzLmJlZ2luKCksIGludFJl
Y3RzLmVuZCgpLCBfZXdrX2ZyYW1lX3JlY3RfaXNfbmVnYXRpdmVfdmFsdWUpOwotCi0gICAgaWYg
KGludFJlY3RzLmlzRW1wdHkoKSB8fCBudW1iZXIgPiBpbnRSZWN0cy5zaXplKCkpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLQotICAgIHN0ZDo6c29ydChpbnRSZWN0cy5iZWdpbigpLCBpbnRSZWN0
cy5lbmQoKSwgX2V3a19mcmFtZV9yZWN0X2NtcF9sZXNzX3RoYW4pOwotCi0gICAgaWYgKHgpCi0g
ICAgICAgICp4ID0gaW50UmVjdHNbbnVtYmVyIC0gMV0ueCgpOwotICAgIGlmICh5KQotICAgICAg
ICAqeSA9IGludFJlY3RzW251bWJlciAtIDFdLnkoKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQot
RWluYV9Cb29sIGV3a19mcmFtZV9zdG9wKEV2YXNfT2JqZWN0KiBld2tGcmFtZSkKLXsKLSAgICBF
V0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihld2tGcmFtZSwgc21hcnREYXRhLCBmYWxzZSk7Ci0g
ICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+ZnJhbWUsIGZhbHNl
KTsKLSAgICBzbWFydERhdGEtPmZyYW1lLT5sb2FkZXIoKS5zdG9wQWxsTG9hZGVycygpOwotICAg
IHJldHVybiB0cnVlOwotfQotCi1FaW5hX0Jvb2wgZXdrX2ZyYW1lX3JlbG9hZChFdmFzX09iamVj
dCogZXdrRnJhbWUpCi17Ci0gICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUs
IHNtYXJ0RGF0YSwgZmFsc2UpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChz
bWFydERhdGEtPmZyYW1lLCBmYWxzZSk7Ci0gICAgc21hcnREYXRhLT5mcmFtZS0+bG9hZGVyKCku
cmVsb2FkKCk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLUVpbmFfQm9vbCBld2tfZnJhbWVfcmVs
b2FkX2Z1bGwoRXZhc19PYmplY3QqIGV3a0ZyYW1lKQotewotICAgIEVXS19GUkFNRV9TRF9HRVRf
T1JfUkVUVVJOKGV3a0ZyYW1lLCBzbWFydERhdGEsIGZhbHNlKTsKLSAgICBFSU5BX1NBRkVUWV9P
Tl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5mcmFtZSwgZmFsc2UpOwotICAgIHNtYXJ0RGF0
YS0+ZnJhbWUtPmxvYWRlcigpLnJlbG9hZCh0cnVlKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQot
RWluYV9Cb29sIGV3a19mcmFtZV9iYWNrKEV2YXNfT2JqZWN0KiBld2tGcmFtZSkKLXsKLSAgICBy
ZXR1cm4gZXdrX2ZyYW1lX25hdmlnYXRlKGV3a0ZyYW1lLCAtMSk7Ci19Ci0KLUVpbmFfQm9vbCBl
d2tfZnJhbWVfZm9yd2FyZChFdmFzX09iamVjdCogZXdrRnJhbWUpCi17Ci0gICAgcmV0dXJuIGV3
a19mcmFtZV9uYXZpZ2F0ZShld2tGcmFtZSwgMSk7Ci19Ci0KLUVpbmFfQm9vbCBld2tfZnJhbWVf
bmF2aWdhdGUoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBpbnQgc3RlcHMpCi17Ci0gICAgRVdLX0ZS
QU1FX1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0RGF0YSwgZmFsc2UpOwotICAgIEVJ
TkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEtPmZyYW1lLCBmYWxzZSk7Ci0g
ICAgV2ViQ29yZTo6UGFnZSogcGFnZSA9IHNtYXJ0RGF0YS0+ZnJhbWUtPnBhZ2UoKTsKLSAgICBp
ZiAoIXBhZ2UtPmJhY2tGb3J3YXJkKCkuY2FuR29CYWNrT3JGb3J3YXJkKHN0ZXBzKSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIHBhZ2UtPmJhY2tGb3J3YXJkKCkuZ29CYWNrT3JGb3J3YXJk
KHN0ZXBzKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotRWluYV9Cb29sIGV3a19mcmFtZV9iYWNr
X3Bvc3NpYmxlKEV2YXNfT2JqZWN0KiBld2tGcmFtZSkKLXsKLSAgICByZXR1cm4gZXdrX2ZyYW1l
X25hdmlnYXRlX3Bvc3NpYmxlKGV3a0ZyYW1lLCAtMSk7Ci19Ci0KLUVpbmFfQm9vbCBld2tfZnJh
bWVfZm9yd2FyZF9wb3NzaWJsZShFdmFzX09iamVjdCogZXdrRnJhbWUpCi17Ci0gICAgcmV0dXJu
IGV3a19mcmFtZV9uYXZpZ2F0ZV9wb3NzaWJsZShld2tGcmFtZSwgMSk7Ci19Ci0KLUVpbmFfQm9v
bCBld2tfZnJhbWVfbmF2aWdhdGVfcG9zc2libGUoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBpbnQg
c3RlcHMpCi17Ci0gICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0
RGF0YSwgZmFsc2UpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERh
dGEtPmZyYW1lLCBmYWxzZSk7Ci0gICAgV2ViQ29yZTo6UGFnZSogcGFnZSA9IHNtYXJ0RGF0YS0+
ZnJhbWUtPnBhZ2UoKTsKLSAgICByZXR1cm4gcGFnZS0+YmFja0ZvcndhcmQoKS5jYW5Hb0JhY2tP
ckZvcndhcmQoc3RlcHMpOwotfQotCi1mbG9hdCBld2tfZnJhbWVfcGFnZV96b29tX2dldChjb25z
dCBFdmFzX09iamVjdCogZXdrRnJhbWUpCi17Ci0gICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRV
Uk4oZXdrRnJhbWUsIHNtYXJ0RGF0YSwgLTEuMCk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9S
RVRVUk5fVkFMKHNtYXJ0RGF0YS0+ZnJhbWUsIC0xLjApOwotICAgIHJldHVybiBzbWFydERhdGEt
PmZyYW1lLT5wYWdlWm9vbUZhY3RvcigpOwotfQotCi1FaW5hX0Jvb2wgZXdrX2ZyYW1lX3BhZ2Vf
em9vbV9zZXQoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBmbG9hdCBwYWdlWm9vbUZhY3RvcikKLXsK
LSAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihld2tGcmFtZSwgc21hcnREYXRhLCBmYWxz
ZSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+ZnJhbWUs
IGZhbHNlKTsKLSAgICBzbWFydERhdGEtPmZyYW1lLT5zZXRQYWdlWm9vbUZhY3RvcihwYWdlWm9v
bUZhY3Rvcik7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWZsb2F0IGV3a19mcmFtZV90ZXh0X3pv
b21fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tGcmFtZSkKLXsKLSAgICBFV0tfRlJBTUVfU0Rf
R0VUX09SX1JFVFVSTihld2tGcmFtZSwgc21hcnREYXRhLCAtMS4wKTsKLSAgICBFSU5BX1NBRkVU
WV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5mcmFtZSwgLTEuMCk7Ci0gICAgcmV0dXJu
IHNtYXJ0RGF0YS0+ZnJhbWUtPnRleHRab29tRmFjdG9yKCk7Ci19Ci0KLUVpbmFfQm9vbCBld2tf
ZnJhbWVfdGV4dF96b29tX3NldChFdmFzX09iamVjdCogZXdrRnJhbWUsIGZsb2F0IHRleHRab29t
RmFjdG9yKQotewotICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBzbWFy
dERhdGEsIGZhbHNlKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnRE
YXRhLT5mcmFtZSwgZmFsc2UpOwotICAgIHNtYXJ0RGF0YS0+ZnJhbWUtPnNldFRleHRab29tRmFj
dG9yKHRleHRab29tRmFjdG9yKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCBld2tfZnJh
bWVfaGl0X3Rlc3RfZnJlZShFd2tfSGl0X1Rlc3QqIGhpdFRlc3QpCi17Ci0gICAgRUlOQV9TQUZF
VFlfT05fTlVMTF9SRVRVUk4oaGl0VGVzdCk7Ci0gICAgZWluYV9zdHJpbmdzaGFyZV9kZWwoaGl0
VGVzdC0+dGl0bGUuc3RyaW5nKTsKLSAgICBlaW5hX3N0cmluZ3NoYXJlX2RlbChoaXRUZXN0LT5h
bHRlcm5hdGVfdGV4dCk7Ci0gICAgZWluYV9zdHJpbmdzaGFyZV9kZWwoaGl0VGVzdC0+bGluay50
ZXh0KTsKLSAgICBlaW5hX3N0cmluZ3NoYXJlX2RlbChoaXRUZXN0LT5saW5rLnVybCk7Ci0gICAg
ZWluYV9zdHJpbmdzaGFyZV9kZWwoaGl0VGVzdC0+bGluay50aXRsZSk7Ci0gICAgZWluYV9zdHJp
bmdzaGFyZV9kZWwoaGl0VGVzdC0+aW1hZ2VfdXJpKTsKLSAgICBlaW5hX3N0cmluZ3NoYXJlX2Rl
bChoaXRUZXN0LT5tZWRpYV91cmkpOwotICAgIGRlbGV0ZSBoaXRUZXN0OwotfQotCi1Fd2tfSGl0
X1Rlc3QqIGV3a19mcmFtZV9oaXRfdGVzdF9uZXcoY29uc3QgRXZhc19PYmplY3QqIGV3a0ZyYW1l
LCBpbnQgeCwgaW50IHkpCi17Ci0gICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJh
bWUsIHNtYXJ0RGF0YSwgMCk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNt
YXJ0RGF0YS0+ZnJhbWUsIDApOwotCi0gICAgV2ViQ29yZTo6RnJhbWVWaWV3KiB2aWV3ID0gc21h
cnREYXRhLT5mcmFtZS0+dmlldygpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZB
TCh2aWV3LCAwKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRh
LT5mcmFtZS0+Y29udGVudFJlbmRlcmVyKCksIDApOwotCi0gICAgV2ViQ29yZTo6SGl0VGVzdFJl
c3VsdCByZXN1bHQgPSBzbWFydERhdGEtPmZyYW1lLT5ldmVudEhhbmRsZXIoKS5oaXRUZXN0UmVz
dWx0QXRQb2ludAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2aWV3
LT53aW5kb3dUb0NvbnRlbnRzKFdlYkNvcmU6OkludFBvaW50KHgsIHkpKSwgCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViQ29yZTo6SGl0VGVzdFJlcXVlc3Q6OlJl
YWRPbmx5IHwgV2ViQ29yZTo6SGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSB8IFdlYkNvcmU6OkhpdFRl
c3RSZXF1ZXN0OjpJZ25vcmVDbGlwcGluZyB8IFdlYkNvcmU6OkhpdFRlc3RSZXF1ZXN0OjpEaXNh
bGxvd1NoYWRvd0NvbnRlbnQpOwotCi0gICAgaWYgKHJlc3VsdC5zY3JvbGxiYXIoKSkKLSAgICAg
ICAgcmV0dXJuIDA7Ci0gICAgaWYgKCFyZXN1bHQuaW5uZXJOb2RlKCkpCi0gICAgICAgIHJldHVy
biAwOwotCi0gICAgRXdrX0hpdF9UZXN0KiBoaXRUZXN0ID0gbmV3IEV3a19IaXRfVGVzdDsKLSAg
ICAvLyBGSVhNRTogVGhpcyBzaG91bGQgcHJvYmFibHkgdXNlIHBvaW50SW5NYWluRnJhbWUsIGlm
IGl0IGlzIHRvIG1hdGNoIHRoZSBkb2N1bWVudGF0aW9uIG9mIGV3a19oaXRfdGVzdC4KLSAgICBo
aXRUZXN0LT54ID0gcmVzdWx0LnBvaW50SW5Jbm5lck5vZGVGcmFtZSgpLngoKTsKLSAgICBoaXRU
ZXN0LT55ID0gcmVzdWx0LnBvaW50SW5Jbm5lck5vZGVGcmFtZSgpLnkoKTsKLSNpZiAwCi0gICAg
Ly8gRklYTUUKLSAgICBoaXRUZXN0LT5ib3VuZGluZ19ib3gueCA9IHJlc3VsdC5ib3VuZGluZ0Jv
eCgpLngoKTsKLSAgICBoaXRUZXN0LT5ib3VuZGluZ19ib3gueSA9IHJlc3VsdC5ib3VuZGluZ0Jv
eCgpLnkoKTsKLSAgICBoaXRUZXN0LT5ib3VuZGluZ19ib3gud2lkdGggPSByZXN1bHQuYm91bmRp
bmdCb3goKS53aWR0aCgpOwotICAgIGhpdFRlc3QtPmJvdW5kaW5nX2JveC5oZWlnaHQgPSByZXN1
bHQuYm91bmRpbmdCb3goKS5oZWlnaHQoKTsKLSNlbHNlCi0gICAgaGl0VGVzdC0+Ym91bmRpbmdf
Ym94LnggPSAwOwotICAgIGhpdFRlc3QtPmJvdW5kaW5nX2JveC55ID0gMDsKLSAgICBoaXRUZXN0
LT5ib3VuZGluZ19ib3gudyA9IDA7Ci0gICAgaGl0VGVzdC0+Ym91bmRpbmdfYm94LmggPSAwOwot
I2VuZGlmCi0KLSAgICBXZWJDb3JlOjpUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbjsKLSAgICBoaXRU
ZXN0LT50aXRsZS5zdHJpbmcgPSBlaW5hX3N0cmluZ3NoYXJlX2FkZChyZXN1bHQudGl0bGUoZGly
ZWN0aW9uKS51dGY4KCkuZGF0YSgpKTsKLSAgICBoaXRUZXN0LT50aXRsZS5kaXJlY3Rpb24gPSAo
ZGlyZWN0aW9uID09IFdlYkNvcmU6OkxUUikgPyBFV0tfVEVYVF9ESVJFQ1RJT05fTEVGVF9UT19S
SUdIVCA6IEVXS19URVhUX0RJUkVDVElPTl9SSUdIVF9UT19MRUZUOwotICAgIGhpdFRlc3QtPmFs
dGVybmF0ZV90ZXh0ID0gZWluYV9zdHJpbmdzaGFyZV9hZGQocmVzdWx0LmFsdERpc3BsYXlTdHJp
bmcoKS51dGY4KCkuZGF0YSgpKTsKLSAgICBpZiAocmVzdWx0LmlubmVyTm9uU2hhcmVkTm9kZSgp
Ci0gICAgICAgICYmIHJlc3VsdC5pbm5lck5vblNoYXJlZE5vZGUoKS0+ZG9jdW1lbnQoKS5mcmFt
ZSgpKQotICAgICAgICBoaXRUZXN0LT5mcmFtZSA9IEVXS1ByaXZhdGU6OmtpdEZyYW1lKHJlc3Vs
dC5pbm5lck5vblNoYXJlZE5vZGUoKS0+ZG9jdW1lbnQoKS5mcmFtZSgpKTsKLQotICAgIGhpdFRl
c3QtPmxpbmsudGV4dCA9IGVpbmFfc3RyaW5nc2hhcmVfYWRkKHJlc3VsdC50ZXh0Q29udGVudCgp
LnV0ZjgoKS5kYXRhKCkpOwotICAgIGhpdFRlc3QtPmxpbmsudXJsID0gZWluYV9zdHJpbmdzaGFy
ZV9hZGQocmVzdWx0LmFic29sdXRlTGlua1VSTCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwot
ICAgIGhpdFRlc3QtPmxpbmsudGl0bGUgPSBlaW5hX3N0cmluZ3NoYXJlX2FkZChyZXN1bHQudGl0
bGVEaXNwbGF5U3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgaGl0VGVzdC0+bGluay50YXJn
ZXRfZnJhbWUgPSBFV0tQcml2YXRlOjpraXRGcmFtZShyZXN1bHQudGFyZ2V0RnJhbWUoKSk7Ci0K
LSAgICBoaXRUZXN0LT5pbWFnZV91cmkgPSBlaW5hX3N0cmluZ3NoYXJlX2FkZChyZXN1bHQuYWJz
b2x1dGVJbWFnZVVSTCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgIGhpdFRlc3QtPm1l
ZGlhX3VyaSA9IGVpbmFfc3RyaW5nc2hhcmVfYWRkKHJlc3VsdC5hYnNvbHV0ZU1lZGlhVVJMKCku
c3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0KLSAgICBpbnQgY29udGV4dCA9IEVXS19ISVRfVEVT
VF9SRVNVTFRfQ09OVEVYVF9ET0NVTUVOVDsKLQotICAgIGlmICghcmVzdWx0LmFic29sdXRlTGlu
a1VSTCgpLmlzRW1wdHkoKSkKLSAgICAgICAgY29udGV4dCB8PSBFV0tfSElUX1RFU1RfUkVTVUxU
X0NPTlRFWFRfTElOSzsKLSAgICBpZiAoIXJlc3VsdC5hYnNvbHV0ZUltYWdlVVJMKCkuaXNFbXB0
eSgpKQotICAgICAgICBjb250ZXh0IHw9IEVXS19ISVRfVEVTVF9SRVNVTFRfQ09OVEVYVF9JTUFH
RTsKLSAgICBpZiAoIXJlc3VsdC5hYnNvbHV0ZU1lZGlhVVJMKCkuaXNFbXB0eSgpKQotICAgICAg
ICBjb250ZXh0IHw9IEVXS19ISVRfVEVTVF9SRVNVTFRfQ09OVEVYVF9NRURJQTsKLSAgICBpZiAo
cmVzdWx0LmlzU2VsZWN0ZWQoKSkKLSAgICAgICAgY29udGV4dCB8PSBFV0tfSElUX1RFU1RfUkVT
VUxUX0NPTlRFWFRfU0VMRUNUSU9OOwotICAgIGlmIChyZXN1bHQuaXNDb250ZW50RWRpdGFibGUo
KSkKLSAgICAgICAgY29udGV4dCB8PSBFV0tfSElUX1RFU1RfUkVTVUxUX0NPTlRFWFRfRURJVEFC
TEU7Ci0KLSAgICBoaXRUZXN0LT5jb250ZXh0ID0gc3RhdGljX2Nhc3Q8RXdrX0hpdF9UZXN0X1Jl
c3VsdF9Db250ZXh0Pihjb250ZXh0KTsKLQotICAgIHJldHVybiBoaXRUZXN0OwotfQotCi1FaW5h
X0Jvb2wKLWV3a19mcmFtZV9zY3JvbGxfYWRkKEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgaW50IGRl
bHRhWCwgaW50IGRlbHRhWSkKLXsKLSAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihld2tG
cmFtZSwgc21hcnREYXRhLCBmYWxzZSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5f
VkFMKHNtYXJ0RGF0YS0+ZnJhbWUsIGZhbHNlKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JF
VFVSTl9WQUwoc21hcnREYXRhLT5mcmFtZS0+dmlldygpLCBmYWxzZSk7Ci0gICAgc21hcnREYXRh
LT5mcmFtZS0+dmlldygpLT5zY3JvbGxCeShXZWJDb3JlOjpJbnRTaXplKGRlbHRhWCwgZGVsdGFZ
KSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLUVpbmFfQm9vbAotZXdrX2ZyYW1lX3Njcm9sbF9z
ZXQoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBpbnQgeCwgaW50IHkpCi17Ci0gICAgRVdLX0ZSQU1F
X1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0RGF0YSwgZmFsc2UpOwotICAgIEVJTkFf
U0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEtPmZyYW1lLCBmYWxzZSk7Ci0gICAg
RUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+ZnJhbWUtPnZpZXcoKSwg
ZmFsc2UpOwotICAgIHNtYXJ0RGF0YS0+ZnJhbWUtPnZpZXcoKS0+c2V0U2Nyb2xsUG9zaXRpb24o
V2ViQ29yZTo6SW50UG9pbnQoeCwgeSkpOwotICAgIHJldHVybiB0cnVlOwotfQotCi1FaW5hX0Jv
b2wKLWV3a19mcmFtZV9zY3JvbGxfc2l6ZV9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a0ZyYW1l
LCBpbnQqIHdpZHRoLCBpbnQqIGhlaWdodCkKLXsKLSAgICBpZiAod2lkdGgpCi0gICAgICAgICp3
aWR0aCA9IDA7Ci0gICAgaWYgKGhlaWdodCkKLSAgICAgICAgKmhlaWdodCA9IDA7Ci0gICAgRVdL
X0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0RGF0YSwgZmFsc2UpOwotICAg
IEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEtPmZyYW1lLCBmYWxzZSk7
Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+ZnJhbWUtPnZp
ZXcoKSwgZmFsc2UpOwotICAgIFdlYkNvcmU6OkludFBvaW50IHBvaW50ID0gc21hcnREYXRhLT5m
cmFtZS0+dmlldygpLT5tYXhpbXVtU2Nyb2xsUG9zaXRpb24oKTsKLSAgICBpZiAod2lkdGgpCi0g
ICAgICAgICp3aWR0aCA9IHBvaW50LngoKTsKLSAgICBpZiAoaGVpZ2h0KQotICAgICAgICAqaGVp
Z2h0ID0gcG9pbnQueSgpOwotICAgIHJldHVybiB0cnVlOwotfQotCi1FaW5hX0Jvb2wKLWV3a19m
cmFtZV9zY3JvbGxfcG9zX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrRnJhbWUsIGludCogeCwg
aW50KiB5KQotewotICAgIGlmICh4KQotICAgICAgICAqeCA9IDA7Ci0gICAgaWYgKHkpCi0gICAg
ICAgICp5ID0gMDsKLSAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihld2tGcmFtZSwgc21h
cnREYXRhLCBmYWxzZSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0
RGF0YS0+ZnJhbWUsIGZhbHNlKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwo
c21hcnREYXRhLT5mcmFtZS0+dmlldygpLCBmYWxzZSk7Ci0gICAgV2ViQ29yZTo6SW50UG9pbnQg
cG9zID0gc21hcnREYXRhLT5mcmFtZS0+dmlldygpLT5zY3JvbGxQb3NpdGlvbigpOwotICAgIGlm
ICh4KQotICAgICAgICAqeCA9IHBvcy54KCk7Ci0gICAgaWYgKHkpCi0gICAgICAgICp5ID0gcG9z
LnkoKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotRWluYV9Cb29sIGV3a19mcmFtZV92aXNpYmxl
X2NvbnRlbnRfZ2VvbWV0cnlfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgRWluYV9C
b29sIGluY2x1ZGVTY3JvbGxiYXJzLCBpbnQqIHgsIGludCogeSwgaW50KiB3aWR0aCwgaW50KiBo
ZWlnaHQpCi17Ci0gICAgaWYgKHgpCi0gICAgICAgICp4ID0gMDsKLSAgICBpZiAoeSkKLSAgICAg
ICAgKnkgPSAwOwotICAgIGlmICh3aWR0aCkKLSAgICAgICAgKndpZHRoID0gMDsKLSAgICBpZiAo
aGVpZ2h0KQotICAgICAgICAqaGVpZ2h0ID0gMDsKLSAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JF
VFVSTihld2tGcmFtZSwgc21hcnREYXRhLCBmYWxzZSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVM
TF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+ZnJhbWUsIGZhbHNlKTsKLSAgICBFSU5BX1NBRkVUWV9P
Tl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5mcmFtZS0+dmlldygpLCBmYWxzZSk7Ci0gICAg
V2ViQ29yZTo6SW50UmVjdCByZWN0ID0gaW5jbHVkZVNjcm9sbGJhcnMgPyBzbWFydERhdGEtPmZy
YW1lLT52aWV3KCktPnZpc2libGVDb250ZW50UmVjdEluY2x1ZGluZ1Njcm9sbGJhcnMoKSA6IHNt
YXJ0RGF0YS0+ZnJhbWUtPnZpZXcoKS0+dmlzaWJsZUNvbnRlbnRSZWN0KCk7Ci0gICAgaWYgKHgp
Ci0gICAgICAgICp4ID0gcmVjdC54KCk7Ci0gICAgaWYgKHkpCi0gICAgICAgICp5ID0gcmVjdC55
KCk7Ci0gICAgaWYgKHdpZHRoKQotICAgICAgICAqd2lkdGggPSByZWN0LndpZHRoKCk7Ci0gICAg
aWYgKGhlaWdodCkKLSAgICAgICAgKmhlaWdodCA9IHJlY3QuaGVpZ2h0KCk7Ci0gICAgcmV0dXJu
IHRydWU7Ci19Ci0KLUVpbmFfQm9vbCBld2tfZnJhbWVfcGFpbnRfZnVsbF9nZXQoY29uc3QgRXZh
c19PYmplY3QqIGV3a0ZyYW1lKQotewotICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKGV3
a0ZyYW1lLCBzbWFydERhdGEsIGZhbHNlKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVS
Tl9WQUwoc21hcnREYXRhLT5mcmFtZSwgZmFsc2UpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExf
UkVUVVJOX1ZBTChzbWFydERhdGEtPmZyYW1lLT52aWV3KCksIGZhbHNlKTsKLSAgICByZXR1cm4g
c21hcnREYXRhLT5mcmFtZS0+dmlldygpLT5wYWludHNFbnRpcmVDb250ZW50cygpOwotfQotCi12
b2lkIGV3a19mcmFtZV9wYWludF9mdWxsX3NldChFdmFzX09iamVjdCogZXdrRnJhbWUsIEVpbmFf
Qm9vbCBmbGFnKQotewotICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBz
bWFydERhdGEpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNtYXJ0RGF0YS0+ZnJh
bWUpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNtYXJ0RGF0YS0+ZnJhbWUtPnZp
ZXcoKSk7Ci0gICAgc21hcnREYXRhLT5mcmFtZS0+dmlldygpLT5zZXRQYWludHNFbnRpcmVDb250
ZW50cyhmbGFnKTsKLX0KLQotRWluYV9Cb29sIGV3a19mcmFtZV9mZWVkX2ZvY3VzX2luKEV2YXNf
T2JqZWN0KiBld2tGcmFtZSkKLXsKLSAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihld2tG
cmFtZSwgc21hcnREYXRhLCBmYWxzZSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5f
VkFMKHNtYXJ0RGF0YS0+ZnJhbWUsIGZhbHNlKTsKLSAgICBzbWFydERhdGEtPmZyYW1lLT5wYWdl
KCktPmZvY3VzQ29udHJvbGxlcigpLnNldEZvY3VzZWRGcmFtZShzbWFydERhdGEtPmZyYW1lKTsK
LSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotRWluYV9Cb29sIGV3a19mcmFtZV9mZWVkX2ZvY3VzX291
dChFdmFzX09iamVjdCopCi17Ci0gICAgLy8gVE9ETzogd2hhdCB0byBkbyBvbiBmb2N1cyBvdXQ/
Ci0gICAgRVJSKCJ3aGF0IHRvIGRvPyIpOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQotRWluYV9C
b29sIGV3a19mcmFtZV9mb2N1c2VkX2VsZW1lbnRfZ2VvbWV0cnlfZ2V0KGNvbnN0IEV2YXNfT2Jq
ZWN0ICpld2tGcmFtZSwgaW50ICp4LCBpbnQgKnksIGludCAqdywgaW50ICpoKQotewotICAgIEVX
S19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBzbWFydERhdGEsIGZhbHNlKTsKLSAg
ICBXZWJDb3JlOjpEb2N1bWVudCogZG9jdW1lbnQgPSBzbWFydERhdGEtPmZyYW1lLT5kb2N1bWVu
dCgpOwotICAgIGlmICghZG9jdW1lbnQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBXZWJD
b3JlOjpOb2RlKiBmb2N1c2VkTm9kZSA9IGRvY3VtZW50LT5mb2N1c2VkRWxlbWVudCgpOwotICAg
IGlmICghZm9jdXNlZE5vZGUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBXZWJDb3JlOjpJ
bnRSZWN0IG5vZGVSZWN0ID0gZm9jdXNlZE5vZGUtPnBpeGVsU25hcHBlZEJvdW5kaW5nQm94KCk7
Ci0gICAgaWYgKHgpCi0gICAgICAgICp4ID0gbm9kZVJlY3QueCgpOwotICAgIGlmICh5KQotICAg
ICAgICAqeSA9IG5vZGVSZWN0LnkoKTsKLSAgICBpZiAodykKLSAgICAgICAgKncgPSBub2RlUmVj
dC53aWR0aCgpOwotICAgIGlmIChoKQotICAgICAgICAqaCA9IG5vZGVSZWN0LmhlaWdodCgpOwot
ICAgIHJldHVybiB0cnVlOwotfQotCi1FaW5hX0Jvb2wgZXdrX2ZyYW1lX2ZlZWRfbW91c2Vfd2hl
ZWwoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX1doZWVsKiB3
aGVlbEV2ZW50KQotewotICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBz
bWFydERhdGEsIGZhbHNlKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21h
cnREYXRhLT5mcmFtZSwgZmFsc2UpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZB
TCh3aGVlbEV2ZW50LCBmYWxzZSk7Ci0KLSAgICBXZWJDb3JlOjpGcmFtZVZpZXcqIHZpZXcgPSBz
bWFydERhdGEtPmZyYW1lLT52aWV3KCk7Ci0gICAgREJHKCJld2tGcmFtZT0lcCwgdmlldz0lcCwg
ZGlyZWN0aW9uPSVkLCB6PSVkLCBwb3M9JWQsJWQiLAotICAgICAgICBld2tGcmFtZSwgdmlldywg
d2hlZWxFdmVudC0+ZGlyZWN0aW9uLCB3aGVlbEV2ZW50LT56LCB3aGVlbEV2ZW50LT5jYW52YXMu
eCwgd2hlZWxFdmVudC0+Y2FudmFzLnkpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJO
X1ZBTCh2aWV3LCBmYWxzZSk7Ci0KLSAgICBXZWJDb3JlOjpQbGF0Zm9ybVdoZWVsRXZlbnQgZXZl
bnQod2hlZWxFdmVudCk7Ci0gICAgcmV0dXJuIHNtYXJ0RGF0YS0+ZnJhbWUtPmV2ZW50SGFuZGxl
cigpLmhhbmRsZVdoZWVsRXZlbnQoZXZlbnQpOwotfQotCi1FaW5hX0Jvb2wgZXdrX2ZyYW1lX2Zl
ZWRfbW91c2VfZG93bihFdmFzX09iamVjdCogZXdrRnJhbWUsIGNvbnN0IEV2YXNfRXZlbnRfTW91
c2VfRG93biogZG93bkV2ZW50KQotewotICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKGV3
a0ZyYW1lLCBzbWFydERhdGEsIGZhbHNlKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVS
Tl9WQUwoc21hcnREYXRhLT5mcmFtZSwgZmFsc2UpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExf
UkVUVVJOX1ZBTChkb3duRXZlbnQsIGZhbHNlKTsKLQotICAgIFdlYkNvcmU6OkZyYW1lVmlldyog
dmlldyA9IHNtYXJ0RGF0YS0+ZnJhbWUtPnZpZXcoKTsKLSAgICBEQkcoImV3a0ZyYW1lPSVwLCB2
aWV3PSVwLCBidXR0b249JWQsIHBvcz0lZCwlZCIsCi0gICAgICAgIGV3a0ZyYW1lLCB2aWV3LCBk
b3duRXZlbnQtPmJ1dHRvbiwgZG93bkV2ZW50LT5jYW52YXMueCwgZG93bkV2ZW50LT5jYW52YXMu
eSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHZpZXcsIGZhbHNlKTsKLQot
ICAgIEV2YXNfQ29vcmQgeCwgeTsKLSAgICBldmFzX29iamVjdF9nZW9tZXRyeV9nZXQoc21hcnRE
YXRhLT52aWV3LCAmeCwgJnksIDAsIDApOwotCi0gICAgV2ViQ29yZTo6UGxhdGZvcm1Nb3VzZUV2
ZW50IGV2ZW50KGRvd25FdmVudCwgV2ViQ29yZTo6SW50UG9pbnQoeCwgeSkpOwotICAgIHJldHVy
biBzbWFydERhdGEtPmZyYW1lLT5ldmVudEhhbmRsZXIoKS5oYW5kbGVNb3VzZVByZXNzRXZlbnQo
ZXZlbnQpOwotfQotCi1FaW5hX0Jvb2wgZXdrX2ZyYW1lX2ZlZWRfbW91c2VfdXAoRXZhc19PYmpl
Y3QqIGV3a0ZyYW1lLCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX1VwKiB1cEV2ZW50KQotewotICAg
IEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBzbWFydERhdGEsIGZhbHNlKTsK
LSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5mcmFtZSwgZmFs
c2UpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTCh1cEV2ZW50LCBmYWxzZSk7
Ci0KLSAgICBXZWJDb3JlOjpGcmFtZVZpZXcqIHZpZXcgPSBzbWFydERhdGEtPmZyYW1lLT52aWV3
KCk7Ci0gICAgREJHKCJld2tGcmFtZT0lcCwgdmlldz0lcCwgYnV0dG9uPSVkLCBwb3M9JWQsJWQi
LAotICAgICAgICBld2tGcmFtZSwgdmlldywgdXBFdmVudC0+YnV0dG9uLCB1cEV2ZW50LT5jYW52
YXMueCwgdXBFdmVudC0+Y2FudmFzLnkpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJO
X1ZBTCh2aWV3LCBmYWxzZSk7Ci0KLSAgICBFdmFzX0Nvb3JkIHgsIHk7Ci0gICAgZXZhc19vYmpl
Y3RfZ2VvbWV0cnlfZ2V0KHNtYXJ0RGF0YS0+dmlldywgJngsICZ5LCAwLCAwKTsKLQotICAgIFdl
YkNvcmU6OlBsYXRmb3JtTW91c2VFdmVudCBldmVudCh1cEV2ZW50LCBXZWJDb3JlOjpJbnRQb2lu
dCh4LCB5KSk7Ci0gICAgcmV0dXJuIHNtYXJ0RGF0YS0+ZnJhbWUtPmV2ZW50SGFuZGxlcigpLmhh
bmRsZU1vdXNlUmVsZWFzZUV2ZW50KGV2ZW50KTsKLX0KLQotRWluYV9Cb29sIGV3a19mcmFtZV9m
ZWVkX21vdXNlX21vdmUoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBjb25zdCBFdmFzX0V2ZW50X01v
dXNlX01vdmUqIG1vdmVFdmVudCkKLXsKLSAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihl
d2tGcmFtZSwgc21hcnREYXRhLCBmYWxzZSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRV
Uk5fVkFMKHNtYXJ0RGF0YS0+ZnJhbWUsIGZhbHNlKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxM
X1JFVFVSTl9WQUwobW92ZUV2ZW50LCBmYWxzZSk7Ci0KLSAgICBXZWJDb3JlOjpGcmFtZVZpZXcq
IHZpZXcgPSBzbWFydERhdGEtPmZyYW1lLT52aWV3KCk7Ci0gICAgREJHKCJld2tGcmFtZT0lcCwg
dmlldz0lcCwgcG9zOiBvbGQ9JWQsJWQsIG5ldz0lZCwlZCwgYnV0dG9ucz0lZCIsCi0gICAgICAg
IGV3a0ZyYW1lLCB2aWV3LCBtb3ZlRXZlbnQtPmN1ci5jYW52YXMueCwgbW92ZUV2ZW50LT5jdXIu
Y2FudmFzLnksCi0gICAgICAgIG1vdmVFdmVudC0+cHJldi5jYW52YXMueCwgbW92ZUV2ZW50LT5w
cmV2LmNhbnZhcy55LCBtb3ZlRXZlbnQtPmJ1dHRvbnMpOwotICAgIEVJTkFfU0FGRVRZX09OX05V
TExfUkVUVVJOX1ZBTCh2aWV3LCBmYWxzZSk7Ci0KLSAgICBFdmFzX0Nvb3JkIHgsIHk7Ci0gICAg
ZXZhc19vYmplY3RfZ2VvbWV0cnlfZ2V0KHNtYXJ0RGF0YS0+dmlldywgJngsICZ5LCAwLCAwKTsK
LQotICAgIFdlYkNvcmU6OlBsYXRmb3JtTW91c2VFdmVudCBldmVudChtb3ZlRXZlbnQsIFdlYkNv
cmU6OkludFBvaW50KHgsIHkpKTsKLSAgICByZXR1cm4gc21hcnREYXRhLT5mcmFtZS0+ZXZlbnRI
YW5kbGVyKCkubW91c2VNb3ZlZChldmVudCk7Ci19Ci0KLUVpbmFfQm9vbCBld2tfZnJhbWVfZmVl
ZF90b3VjaF9ldmVudChFdmFzX09iamVjdCogZXdrRnJhbWUsIEV3a19Ub3VjaF9FdmVudF9UeXBl
IGFjdGlvbiwgRWluYV9MaXN0KiBwb2ludHMsIHVuc2lnbmVkIG1vZGlmaWVycykKLXsKLSNpZiBF
TkFCTEUoVE9VQ0hfRVZFTlRTKQotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChw
b2ludHMsIGZhbHNlKTsKLSAgICBFV0tfRlJBTUVfU0RfR0VUKGV3a0ZyYW1lLCBzbWFydERhdGEp
OwotCi0gICAgaWYgKCFzbWFydERhdGEgfHwgIXNtYXJ0RGF0YS0+ZnJhbWUgfHwgIWV3a192aWV3
X25lZWRfdG91Y2hfZXZlbnRzX2dldChzbWFydERhdGEtPnZpZXcpKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICBFdmFzX0Nvb3JkIHgsIHk7Ci0gICAgZXZhc19vYmplY3RfZ2VvbWV0cnlf
Z2V0KHNtYXJ0RGF0YS0+dmlldywgJngsICZ5LCAwLCAwKTsKLQotICAgIHJldHVybiBzbWFydERh
dGEtPmZyYW1lLT5ldmVudEhhbmRsZXIoKS5oYW5kbGVUb3VjaEV2ZW50KEVXS1ByaXZhdGU6OnBs
YXRmb3JtVG91Y2hFdmVudCh4LCB5LCBwb2ludHMsIGFjdGlvbiwgbW9kaWZpZXJzKSk7Ci0jZWxz
ZQotICAgIFVOVVNFRF9QQVJBTShld2tGcmFtZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGFjdGlvbik7
Ci0gICAgVU5VU0VEX1BBUkFNKHBvaW50cyk7Ci0gICAgVU5VU0VEX1BBUkFNKG1vZGlmaWVycyk7
Ci0gICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCi19Ci0KLXN0YXRpYyBpbmxpbmUgRWluYV9Cb29s
IF9ld2tfZnJhbWVfaGFuZGxlX2tleV9zY3JvbGxpbmcoV2ViQ29yZTo6RnJhbWUqIGZyYW1lLCBj
b25zdCBXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQmIGtleUV2ZW50KQotewotICAgIFdl
YkNvcmU6OlNjcm9sbERpcmVjdGlvbiBkaXJlY3Rpb247Ci0gICAgV2ViQ29yZTo6U2Nyb2xsR3Jh
bnVsYXJpdHkgZ3JhbnVsYXJpdHk7Ci0KLSAgICBpbnQga2V5Q29kZSA9IGtleUV2ZW50LndpbmRv
d3NWaXJ0dWFsS2V5Q29kZSgpOwotCi0gICAgc3dpdGNoIChrZXlDb2RlKSB7Ci0gICAgY2FzZSBW
S19TUEFDRToKLSAgICAgICAgZ3JhbnVsYXJpdHkgPSBXZWJDb3JlOjpTY3JvbGxCeVBhZ2U7Ci0g
ICAgICAgIGlmIChrZXlFdmVudC5zaGlmdEtleSgpKQotICAgICAgICAgICAgZGlyZWN0aW9uID0g
V2ViQ29yZTo6U2Nyb2xsVXA7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGRpcmVjdGlvbiA9
IFdlYkNvcmU6OlNjcm9sbERvd247Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgVktfTkVYVDoK
LSAgICAgICAgZ3JhbnVsYXJpdHkgPSBXZWJDb3JlOjpTY3JvbGxCeVBhZ2U7Ci0gICAgICAgIGRp
cmVjdGlvbiA9IFdlYkNvcmU6OlNjcm9sbERvd247Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
VktfUFJJT1I6Ci0gICAgICAgIGdyYW51bGFyaXR5ID0gV2ViQ29yZTo6U2Nyb2xsQnlQYWdlOwot
ICAgICAgICBkaXJlY3Rpb24gPSBXZWJDb3JlOjpTY3JvbGxVcDsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBWS19IT01FOgotICAgICAgICBncmFudWxhcml0eSA9IFdlYkNvcmU6OlNjcm9sbEJ5
RG9jdW1lbnQ7Ci0gICAgICAgIGRpcmVjdGlvbiA9IFdlYkNvcmU6OlNjcm9sbFVwOwotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIFZLX0VORDoKLSAgICAgICAgZ3JhbnVsYXJpdHkgPSBXZWJDb3Jl
OjpTY3JvbGxCeURvY3VtZW50OwotICAgICAgICBkaXJlY3Rpb24gPSBXZWJDb3JlOjpTY3JvbGxE
b3duOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFZLX0xFRlQ6Ci0gICAgICAgIGdyYW51bGFy
aXR5ID0gV2ViQ29yZTo6U2Nyb2xsQnlMaW5lOwotICAgICAgICBkaXJlY3Rpb24gPSBXZWJDb3Jl
OjpTY3JvbGxMZWZ0OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFZLX1JJR0hUOgotICAgICAg
ICBncmFudWxhcml0eSA9IFdlYkNvcmU6OlNjcm9sbEJ5TGluZTsKLSAgICAgICAgZGlyZWN0aW9u
ID0gV2ViQ29yZTo6U2Nyb2xsUmlnaHQ7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgVktfVVA6
Ci0gICAgICAgIGRpcmVjdGlvbiA9IFdlYkNvcmU6OlNjcm9sbFVwOwotICAgICAgICBpZiAoa2V5
RXZlbnQuY3RybEtleSgpKQotICAgICAgICAgICAgZ3JhbnVsYXJpdHkgPSBXZWJDb3JlOjpTY3Jv
bGxCeURvY3VtZW50OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBncmFudWxhcml0eSA9IFdl
YkNvcmU6OlNjcm9sbEJ5TGluZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBWS19ET1dOOgot
ICAgICAgICBkaXJlY3Rpb24gPSBXZWJDb3JlOjpTY3JvbGxEb3duOwotICAgICAgICBpZiAoa2V5
RXZlbnQuY3RybEtleSgpKQotICAgICAgICAgICAgZ3JhbnVsYXJpdHkgPSBXZWJDb3JlOjpTY3Jv
bGxCeURvY3VtZW50OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBncmFudWxhcml0eSA9IFdl
YkNvcmU6OlNjcm9sbEJ5TGluZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGlmIChmcmFtZS0+ZXZlbnRIYW5kbGVyKCku
c2Nyb2xsT3ZlcmZsb3coZGlyZWN0aW9uLCBncmFudWxhcml0eSkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgIGZyYW1lLT52aWV3KCktPnNjcm9sbChkaXJlY3Rpb24sIGdyYW51bGFyaXR5
KTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotRWluYV9Cb29sIGV3a19mcmFtZV9mZWVkX2tleV9k
b3duKEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgY29uc3QgRXZhc19FdmVudF9LZXlfRG93biogZG93
bkV2ZW50KQotewotICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBzbWFy
dERhdGEsIGZhbHNlKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnRE
YXRhLT5mcmFtZSwgZmFsc2UpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChk
b3duRXZlbnQsIGZhbHNlKTsKLQotICAgIERCRygiZXdrRnJhbWU9JXAga2V5bmFtZT0lcyAoa2V5
PSVzLCBzdHJpbmc9JXMpIiwKLSAgICAgICAgZXdrRnJhbWUsIGRvd25FdmVudC0+a2V5bmFtZSwg
ZG93bkV2ZW50LT5rZXkgPyBkb3duRXZlbnQtPmtleSA6ICIiLCBkb3duRXZlbnQtPnN0cmluZyA/
IGRvd25FdmVudC0+c3RyaW5nIDogIiIpOwotCi0gICAgV2ViQ29yZTo6UGxhdGZvcm1LZXlib2Fy
ZEV2ZW50IGV2ZW50KGRvd25FdmVudCk7Ci0gICAgaWYgKHNtYXJ0RGF0YS0+ZnJhbWUtPmV2ZW50
SGFuZGxlcigpLmtleUV2ZW50KGV2ZW50KSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBy
ZXR1cm4gX2V3a19mcmFtZV9oYW5kbGVfa2V5X3Njcm9sbGluZyhzbWFydERhdGEtPmZyYW1lLCBl
dmVudCk7Ci19Ci0KLUVpbmFfQm9vbCBld2tfZnJhbWVfZmVlZF9rZXlfdXAoRXZhc19PYmplY3Qq
IGV3a0ZyYW1lLCBjb25zdCBFdmFzX0V2ZW50X0tleV9VcCogdXBFdmVudCkKLXsKLSAgICBFV0tf
RlJBTUVfU0RfR0VUX09SX1JFVFVSTihld2tGcmFtZSwgc21hcnREYXRhLCBmYWxzZSk7Ci0gICAg
RUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+ZnJhbWUsIGZhbHNlKTsK
LSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwodXBFdmVudCwgZmFsc2UpOwotCi0g
ICAgREJHKCJld2tGcmFtZT0lcCBrZXluYW1lPSVzIChrZXk9JXMsIHN0cmluZz0lcykiLAotICAg
ICAgICBld2tGcmFtZSwgdXBFdmVudC0+a2V5bmFtZSwgdXBFdmVudC0+a2V5ID8gdXBFdmVudC0+
a2V5IDogIiIsIHVwRXZlbnQtPnN0cmluZyA/IHVwRXZlbnQtPnN0cmluZyA6ICIiKTsKLQotICAg
IFdlYkNvcmU6OlBsYXRmb3JtS2V5Ym9hcmRFdmVudCBldmVudCh1cEV2ZW50KTsKLSAgICByZXR1
cm4gc21hcnREYXRhLT5mcmFtZS0+ZXZlbnRIYW5kbGVyKCkua2V5RXZlbnQoZXZlbnQpOwotfQot
Ci1Fd2tfVGV4dF9TZWxlY3Rpb25fVHlwZSBld2tfZnJhbWVfdGV4dF9zZWxlY3Rpb25fdHlwZV9n
ZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a0ZyYW1lKQotewotICAgIEVXS19GUkFNRV9TRF9HRVRf
T1JfUkVUVVJOKGV3a0ZyYW1lLCBzbWFydERhdGEsIEVXS19URVhUX1NFTEVDVElPTl9OT05FKTsK
LSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5mcmFtZSwgRVdL
X1RFWFRfU0VMRUNUSU9OX05PTkUpOwotCi0gICAgY29uc3QgV2ViQ29yZTo6VmlzaWJsZVNlbGVj
dGlvbiYgc2VsZWN0aW9uID0gc21hcnREYXRhLT5mcmFtZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9u
KCk7Ci0KLSAgICBzd2l0Y2ggKHNlbGVjdGlvbi5zZWxlY3Rpb25UeXBlKCkpIHsKLSAgICBjYXNl
IFdlYkNvcmU6OlZpc2libGVTZWxlY3Rpb246Ok5vU2VsZWN0aW9uOgotICAgICAgICByZXR1cm4g
RVdLX1RFWFRfU0VMRUNUSU9OX05PTkU7Ci0gICAgY2FzZSBXZWJDb3JlOjpWaXNpYmxlU2VsZWN0
aW9uOjpDYXJldFNlbGVjdGlvbjoKLSAgICAgICAgcmV0dXJuIEVXS19URVhUX1NFTEVDVElPTl9D
QVJFVDsKLSAgICBjYXNlIFdlYkNvcmU6OlZpc2libGVTZWxlY3Rpb246OlJhbmdlU2VsZWN0aW9u
OgotICAgICAgICByZXR1cm4gRVdLX1RFWFRfU0VMRUNUSU9OX1JBTkdFOwotICAgIH0KLSAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLQotICAgIHJldHVybiBFV0tfVEVYVF9TRUxFQ1RJT05fTk9O
RTsKLX0KLQotLyogaW50ZXJuYWwgbWV0aG9kcyAqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqLwotCi0vKioKLSAqIEBpbnRlcm5hbAotICoKLSAqIENy
ZWF0ZXMgYSBuZXcgRUZMIFdlYktpdCBGcmFtZSBvYmplY3QuCi0gKgotICogRnJhbWVzIGFyZSBs
b3cgbGV2ZWwgZW50cmllcyBjb250YWluZWQgaW4gYSBwYWdlIHRoYXQgaXMgY29udGFpbmVkCi0g
KiBieSBhIHZpZXcuIFVzdWFsbHkgb25lIG9wZXJhdGVzIG9uIHRoZSB2aWV3IGFuZCBub3QgZGly
ZWN0bHkgb24gdGhlCi0gKiBmcmFtZS4KLSAqCi0gKiBAcGFyYW0gY2FudmFzIGNhbnZhcyB3aGVy
ZSB0byBjcmVhdGUgdGhlIGZyYW1lIG9iamVjdAotICoKLSAqIEByZXR1cm4gYSBuZXcgZnJhbWUg
b2JqZWN0IG9yIEBjIDAgb24gZmFpbHVyZQotICovCi1FdmFzX09iamVjdCogZXdrX2ZyYW1lX2Fk
ZChFdmFzKiBjYW52YXMpCi17Ci0gICAgcmV0dXJuIGV2YXNfb2JqZWN0X3NtYXJ0X2FkZChjYW52
YXMsIF9ld2tfZnJhbWVfc21hcnRfY2xhc3NfbmV3KCkpOwotfQotCi0vKioKLSAqIEBpbnRlcm5h
bAotICoKLSAqIEluaXRpYWxpemUgZnJhbWUgYmFzZWQgb24gYWN0dWFsIFdlYktpdCBmcmFtZS4K
LSAqCi0gKiBUaGlzIGlzIGludGVybmFsIGFuZCBzaG91bGQgbmV2ZXIgYmUgY2FsbGVkIGJ5IGV4
dGVybmFsIHVzZXJzLgotICovCi1ib29sIGV3a19mcmFtZV9pbml0KEV2YXNfT2JqZWN0KiBld2tG
cmFtZSwgRXZhc19PYmplY3QqIHZpZXcsIFBhc3NPd25QdHI8V2ViQ29yZTo6RnJhbWVMb2FkZXJD
bGllbnRFZmw+IGZyYW1lTG9hZGVyQ2xpZW50KQotewotICAgIEVXS19GUkFNRV9TRF9HRVRfT1Jf
UkVUVVJOKGV3a0ZyYW1lLCBzbWFydERhdGEsIGZhbHNlKTsKLSAgICBpZiAoIXNtYXJ0RGF0YS0+
ZnJhbWUpIHsKLSAgICAgICAgc21hcnREYXRhLT5mcmFtZUxvYWRlckNsaWVudCA9IGZyYW1lTG9h
ZGVyQ2xpZW50OwotICAgICAgICBzbWFydERhdGEtPmZyYW1lTG9hZGVyQ2xpZW50LT5zZXRXZWJG
cmFtZShld2tGcmFtZSk7Ci0gICAgICAgIHNtYXJ0RGF0YS0+dmlldyA9IHZpZXc7Ci0KLSAgICAg
ICAgLy8gRklYTUU6IEZyYW1lTG9hZGVyQ2xpZW50RWZsIHNob3VsZCBnZXQgdXNlciBhZ2VudCBk
aXJlY3RseSBmcm9tIGV3a192aWV3LgotICAgICAgICBzbWFydERhdGEtPmZyYW1lTG9hZGVyQ2xp
ZW50LT5zZXRDdXN0b21Vc2VyQWdlbnQoU3RyaW5nOjpmcm9tVVRGOChld2tfdmlld19zZXR0aW5n
X3VzZXJfYWdlbnRfZ2V0KHZpZXcpKSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQot
ICAgIHJldHVybiBmYWxzZTsKLX0KLQotLyoqCi0gKiBAaW50ZXJuYWwKLSAqCi0gKiBBZGRzIGNo
aWxkIHRvIHRoZSBmcmFtZS4KLSAqLwotRXZhc19PYmplY3QqIGV3a19mcmFtZV9jaGlsZF9hZGQo
RXZhc19PYmplY3QqIGV3a0ZyYW1lLCBjb25zdCBXVEY6OlN0cmluZyYgbmFtZSwgV2ViQ29yZTo6
SFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQpCi17Ci0gICAgRVdLX0ZSQU1FX1NE
X0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0RGF0YSwgMCk7Ci0gICAgY2hhciBidWZmZXJb
MjU2XTsKLQotICAgIEV2YXNfT2JqZWN0KiBmcmFtZSA9IGV3a19mcmFtZV9hZGQoc21hcnREYXRh
LT5iYXNlLmV2YXMpOwotICAgIGlmICghZnJhbWUpIHsKLSAgICAgICAgRVJSKCJDb3VsZCBub3Qg
Y3JlYXRlIGV3a19mcmFtZSBvYmplY3QuIik7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQot
ICAgIGlmICghZXdrX2ZyYW1lX2luaXQoZnJhbWUsIHNtYXJ0RGF0YS0+dmlldywgYWRvcHRQdHIo
bmV3IFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsKHNtYXJ0RGF0YS0+dmlldykpKSkgewot
ICAgICAgICBFUlIoIkNvdWxkIG5vdCBpbml0IGV3a19mcmFtZSBvYmplY3QuIik7Ci0gICAgICAg
IGV2YXNfb2JqZWN0X2RlbChmcmFtZSk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAg
IEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKGZyYW1lLCBjaGlsZEZyYW1lU21hcnREYXRhLCAw
KTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGNvcmVGcmFtZSA9IFdlYkNvcmU6OkZyYW1l
OjpjcmVhdGUoc21hcnREYXRhLT5mcmFtZS0+cGFnZSgpLCBvd25lckVsZW1lbnQsIGNoaWxkRnJh
bWVTbWFydERhdGEtPmZyYW1lTG9hZGVyQ2xpZW50LmdldCgpKTsKLSAgICBjaGlsZEZyYW1lU21h
cnREYXRhLT5mcmFtZSA9IGNvcmVGcmFtZS5nZXQoKTsKLSAgICBjb3JlRnJhbWUtPnRyZWUoKS5z
ZXROYW1lKG5hbWUpOwotCi0gICAgaWYgKG93bmVyRWxlbWVudCkgewotICAgICAgICBBU1NFUlQo
b3duZXJFbGVtZW50LT5kb2N1bWVudCgpLmZyYW1lKCkpOwotICAgICAgICBvd25lckVsZW1lbnQt
PmRvY3VtZW50KCkuZnJhbWUoKS0+dHJlZSgpLmFwcGVuZENoaWxkKGNvcmVGcmFtZS5yZWxlYXNl
KCkpOwotICAgIH0KLSAgICBjaGlsZEZyYW1lU21hcnREYXRhLT5mcmFtZS0+aW5pdCgpOwotCi0g
ICAgc25wcmludGYoYnVmZmVyLCBzaXplb2YoYnVmZmVyKSwgIkVXS19GcmFtZTpjaGlsZC8lcyIs
IG5hbWUudXRmOCgpLmRhdGEoKSk7Ci0gICAgZXZhc19vYmplY3RfbmFtZV9zZXQoZnJhbWUsIGJ1
ZmZlcik7Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfbWVtYmVyX2FkZChmcmFtZSwgZXdrRnJhbWUp
OwotICAgIGV2YXNfb2JqZWN0X3Nob3coZnJhbWUpOwotCi0gICAgcmV0dXJuIGZyYW1lOwotfQot
Ci0vKioKLSAqIEBpbnRlcm5hbAotICogQ2hhbmdlIHRoZSBld2sgdmlldyB0aGlzIGZyYW1lIGlz
IGFzc29jaWF0ZWQgd2l0aC4KLSAqCi0gKiBAcGFyYW0gZXdrRnJhbWUgVGhlIGV3ayBmcmFtZSB0
byBhY3QgdXBvbi4KLSAqIEBwYXJhbSBuZXdQYXJlbnQgVGhlIG5ldyB2aWV3IHRoYXQgd2lsbCBi
ZSBzZXQgYXMgdGhlIHBhcmVudCBvZiB0aGUgZnJhbWUuCi0gKi8KLXZvaWQgZXdrX2ZyYW1lX3Zp
ZXdfc2V0KEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgRXZhc19PYmplY3QqIG5ld1BhcmVudCkKLXsK
LSAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihld2tGcmFtZSwgc21hcnREYXRhKTsKLQot
ICAgIGV2YXNfb2JqZWN0X3NtYXJ0X21lbWJlcl9kZWwoZXdrRnJhbWUpOwotICAgIGV2YXNfb2Jq
ZWN0X3NtYXJ0X21lbWJlcl9hZGQoZXdrRnJhbWUsIG5ld1BhcmVudCk7Ci0KLSAgICBzbWFydERh
dGEtPnZpZXcgPSBuZXdQYXJlbnQ7Ci19Ci0KLS8qKgotICogQGludGVybmFsCi0gKiBGcmFtZSB3
YXMgZGVzdHJveWVkIGJ5IGxvYWRlciwgcmVtb3ZlIGludGVybmFsIHJlZmVyZW5jZS4KLSAqLwot
dm9pZCBld2tfZnJhbWVfY29yZV9nb25lKEV2YXNfT2JqZWN0KiBld2tGcmFtZSkKLXsKLSAgICBE
QkcoImV3a0ZyYW1lPSVwIiwgZXdrRnJhbWUpOwotICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVU
VVJOKGV3a0ZyYW1lLCBzbWFydERhdGEpOwotICAgIHNtYXJ0RGF0YS0+ZnJhbWUgPSAwOwotfQot
Ci0vKioKLSAqIEBpbnRlcm5hbAotICogUmVwb3J0cyBjYW5jZWxsYXRpb24gb2YgYSBjbGllbnQg
cmVkaXJlY3QuCi0gKgotICogQHBhcmFtIGV3a0ZyYW1lIEZyYW1lLgotICoKLSAqIEVtaXRzIHNp
Z25hbDogInJlZGlyZWN0LGNhbmNlbGxlZCIKLSAqLwotdm9pZCBld2tfZnJhbWVfcmVkaXJlY3Rf
Y2FuY2VsbGVkKEV2YXNfT2JqZWN0KiBld2tGcmFtZSkKLXsKLSAgICBldmFzX29iamVjdF9zbWFy
dF9jYWxsYmFja19jYWxsKGV3a0ZyYW1lLCAicmVkaXJlY3QsY2FuY2VsbGVkIiwgMCk7Ci19Ci0K
LS8qKgotICogQGludGVybmFsCi0gKiBSZXBvcnRzIHJlY2VpcHQgb2Ygc2VydmVyIHJlZGlyZWN0
IGZvciBwcm92aXNpb25hbCBsb2FkLgotICoKLSAqIEBwYXJhbSBld2tGcmFtZSBGcmFtZS4KLSAq
Ci0gKiBFbWl0cyBzaWduYWw6ICJyZWRpcmVjdCxsb2FkLHByb3Zpc2lvbmFsIgotICovCi12b2lk
IGV3a19mcmFtZV9yZWRpcmVjdF9wcm92aXNpb25hbF9sb2FkKEV2YXNfT2JqZWN0KiBld2tGcmFt
ZSkKLXsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKGV3a0ZyYW1lLCAicmVk
aXJlY3QsbG9hZCxwcm92aXNpb25hbCIsIDApOwotfQotCi0vKioKLSAqIEBpbnRlcm5hbAotICog
UmVwb3J0cyB0aGF0IGEgY2xpZW50IHJlZGlyZWN0IHdpbGwgYmUgcGVyZm9ybWVkLgotICoKLSAq
IEBwYXJhbSBld2tGcmFtZSBGcmFtZS4KLSAqIEBwYXJhbSB1cmwgUmVkaXJlY3Rpb24gVVJMLgot
ICoKLSAqIEVtaXRzIHNpZ25hbDogInJlZGlyZWN0LHJlcXVlc3RlZCIKLSAqLwotdm9pZCBld2tf
ZnJhbWVfcmVkaXJlY3RfcmVxdWVzdGVkKEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgY29uc3QgY2hh
ciogdXJsKQotewotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdrRnJhbWUs
ICJyZWRpcmVjdCxyZXF1ZXN0ZWQiLCAodm9pZCopdXJsKTsKLX0KLQotLyoqCi0gKiBAaW50ZXJu
YWwKLSAqIFJlcG9ydHMgYSByZXNvdXJjZSB3aWxsIGJlIHJlcXVlc3RlZC4gVXNlciBtYXkgb3Zl
cnJpZGUgYmVoYXZpb3Igb2Ygd2Via2l0IGJ5Ci0gKiBjaGFuZ2luZyB2YWx1ZXMgaW4gQHBhcmFt
IHJlcXVlc3QuCi0gKgotICogQHBhcmFtIGV3a0ZyYW1lIEZyYW1lLgotICogQHBhcmFtIG1lc3Nh
Z2VzIE1lc3NhZ2VzIGNvbnRhaW5pbmcgdGhlIHJlcXVlc3QgZGV0YWlscyB0aGF0IHVzZXIgbWF5
IG92ZXJyaWRlIGFuZCBhCi0gKiBwb3NzaWJsZSByZWRpcmVjdCByZXBvbnNlLiBXaGVuZXZlciB2
YWx1ZXMgb24gdGhpcyBzdHJ1Y3QgY2hhbmdlcywgaXQgbXVzdCBiZSBwcm9wZXJseQotICogbWFs
bG9jJ2QgYXMgaXQgd2lsbCBiZSBmcmVlZCBhZnRlcndhcmRzLgotICoKLSAqIEVtaXRzIHNpZ25h
bDogInJlc291cmNlLHJlcXVlc3Qsd2lsbHNlbmQiCi0gKi8KLXZvaWQgZXdrX2ZyYW1lX3JlcXVl
c3Rfd2lsbF9zZW5kKEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgRXdrX0ZyYW1lX1Jlc291cmNlX01l
c3NhZ2VzKiBtZXNzYWdlcykKLXsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxs
KGV3a0ZyYW1lLCAicmVzb3VyY2UscmVxdWVzdCx3aWxsc2VuZCIsIG1lc3NhZ2VzKTsKLX0KLQot
LyoqCi0gKiBAaW50ZXJuYWwKLSAqIFJlcG9ydHMgdGhhdCB0aGVyZSdzIGEgbmV3IHJlc291cmNl
LgotICoKLSAqIEBwYXJhbSBld2tGcmFtZSBGcmFtZS4KLSAqIEBwYXJhbSByZXF1ZXN0IE5ldyBy
ZXF1ZXN0IGRldGFpbHMuIE5vIGNoYW5nZXMgYXJlIGFsbG93ZWQgdG8gZmllbGRzLgotICoKLSAq
IEVtaXRzIHNpZ25hbDogInJlc291cmNlLHJlcXVlc3QsbmV3IgotICovCi12b2lkIGV3a19mcmFt
ZV9yZXF1ZXN0X2Fzc2lnbl9pZGVudGlmaWVyKEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgY29uc3Qg
RXdrX0ZyYW1lX1Jlc291cmNlX1JlcXVlc3QqIHJlcXVlc3QpCi17Ci0gICAgZXZhc19vYmplY3Rf
c21hcnRfY2FsbGJhY2tfY2FsbChld2tGcmFtZSwgInJlc291cmNlLHJlcXVlc3QsbmV3IiwgKHZv
aWQqKXJlcXVlc3QpOwotfQotCi0vKioKLSAqIEBpbnRlcm5hbAotICogUmVwb3J0cyB0aGF0IGEg
cmVzcG9uc2UgdG8gYSByZXNvdXJjZSByZXF1ZXN0IHdhcyByZWNlaXZlZC4KLSAqCi0gKiBAcGFy
YW0gZXdrRnJhbWUgRnJhbWUuCi0gKiBAcGFyYW0gcmVxdWVzdCBSZXNwb25zZSBkZXRhaWxzLiBO
byBjaGFuZ2VzIGFyZSBhbGxvd2VkIHRvIGZpZWxkcy4KLSAqCi0gKiBFbWl0cyBzaWduYWw6ICJy
ZXNvdXJjZSxyZXNwb25zZSxyZWNlaXZlZCIKLSAqLwotdm9pZCBld2tfZnJhbWVfcmVzcG9uc2Vf
cmVjZWl2ZWQoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBFd2tfRnJhbWVfUmVzb3VyY2VfUmVzcG9u
c2UqIHJlc3BvbnNlKQotewotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdr
RnJhbWUsICJyZXNvdXJjZSxyZXNwb25zZSxyZWNlaXZlZCIsIHJlc3BvbnNlKTsKLX0KLQotLyoq
Ci0gKiBAaW50ZXJuYWwKLSAqIFJlcG9ydHMgZnJhbWUgd2lsbCBiZSBzYXZlZCB0byBjdXJyZW50
IHN0YXRlCi0gKgotICogQHBhcmFtIGV3a0ZyYW1lIEZyYW1lLgotICogQHBhcmFtIGl0ZW0gSGlz
dG9yeSBpdGVtIHRvIHNhdmUgZGV0YWlscyB0by4KLSAqCi0gKiBFbWl0cyBzaWduYWw6ICJzdGF0
ZSxzYXZlIgotICovCi12b2lkIGV3a19mcmFtZV92aWV3X3N0YXRlX3NhdmUoRXZhc19PYmplY3Qq
IGV3a0ZyYW1lLCBXZWJDb3JlOjpIaXN0b3J5SXRlbSopCi17Ci0gICAgZXZhc19vYmplY3Rfc21h
cnRfY2FsbGJhY2tfY2FsbChld2tGcmFtZSwgInN0YXRlLHNhdmUiLCAwKTsKLX0KLQotLyoqCi0g
KiBAaW50ZXJuYWwKLSAqIFJlcG9ydHMgdGhlIGZyYW1lIGNvbW1pdHRlZCBsb2FkLgotICoKLSAq
IEVtaXRzIHNpZ25hbDogImxvYWQsY29tbWl0dGVkIiB3aXRoIG5vIHBhcmFtZXRlcnMuCi0gKi8K
LXZvaWQgZXdrX2ZyYW1lX2xvYWRfY29tbWl0dGVkKEV2YXNfT2JqZWN0KiBld2tGcmFtZSkKLXsK
LSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKGV3a0ZyYW1lLCAibG9hZCxjb21t
aXR0ZWQiLCAwKTsKLX0KLQotLyoqCi0gKiBAaW50ZXJuYWwKLSAqIFJlcG9ydHMgdGhlIGZyYW1l
IHN0YXJ0ZWQgbG9hZGluZyBzb21ldGhpbmcuCi0gKgotICogRW1pdHMgc2lnbmFsOiAibG9hZCxz
dGFydGVkIiB3aXRoIG5vIHBhcmFtZXRlcnMuCi0gKi8KLXZvaWQgZXdrX2ZyYW1lX2xvYWRfc3Rh
cnRlZChFdmFzX09iamVjdCogZXdrRnJhbWUpCi17Ci0gICAgRXZhc19PYmplY3QqIG1haW5GcmFt
ZTsKLSAgICBEQkcoImV3a0ZyYW1lPSVwIiwgZXdrRnJhbWUpOwotICAgIGV2YXNfb2JqZWN0X3Nt
YXJ0X2NhbGxiYWNrX2NhbGwoZXdrRnJhbWUsICJsb2FkLHN0YXJ0ZWQiLCAwKTsKLSAgICBFV0tf
RlJBTUVfU0RfR0VUX09SX1JFVFVSTihld2tGcmFtZSwgc21hcnREYXRhKTsKLSAgICBld2tfdmll
d19sb2FkX3N0YXJ0ZWQoc21hcnREYXRhLT52aWV3LCBld2tGcmFtZSk7Ci0KLSAgICBtYWluRnJh
bWUgPSBld2tfdmlld19mcmFtZV9tYWluX2dldChzbWFydERhdGEtPnZpZXcpOwotICAgIGlmICht
YWluRnJhbWUgPT0gZXdrRnJhbWUpCi0gICAgICAgIGV3a192aWV3X2ZyYW1lX21haW5fbG9hZF9z
dGFydGVkKHNtYXJ0RGF0YS0+dmlldyk7Ci19Ci0KLS8qKgotICogQGludGVybmFsCi0gKiBSZXBv
cnRzIHRoZSBmcmFtZSBzdGFydGVkIHByb3Zpc2lvbmFsIGxvYWQuCi0gKgotICogQHBhcmFtIGV3
a0ZyYW1lIEZyYW1lLgotICoKLSAqIEVtaXRzIHNpZ25hbDogImxvYWQscHJvdmlzaW9uYWwiIHdp
dGggbm8gcGFyYW1ldGVycy4KLSAqLwotdm9pZCBld2tfZnJhbWVfbG9hZF9wcm92aXNpb25hbChF
dmFzX09iamVjdCogZXdrRnJhbWUpCi17Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tf
Y2FsbChld2tGcmFtZSwgImxvYWQscHJvdmlzaW9uYWwiLCAwKTsKLX0KLQotLyoqCi0gKiBAaW50
ZXJuYWwKLSAqIFJlcG9ydHMgdGhlIGZyYW1lIHByb3Zpc2lvbmFsIGxvYWQgZmFpbGVkLgotICoK
LSAqIEBwYXJhbSBld2tGcmFtZSBGcmFtZS4KLSAqIEBwYXJhbSBlcnJvciBMb2FkIGVycm9yLgot
ICoKLSAqIEVtaXRzIHNpZ25hbDogImxvYWQscHJvdmlzaW9uYWwsZmFpbGVkIiB3aXRoIHBvaW50
ZXIgdG8gRXdrX0ZyYW1lX0xvYWRfRXJyb3IuCi0gKi8KLXZvaWQgZXdrX2ZyYW1lX2xvYWRfcHJv
dmlzaW9uYWxfZmFpbGVkKEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgY29uc3QgRXdrX0ZyYW1lX0xv
YWRfRXJyb3IqIGVycm9yKQotewotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwo
ZXdrRnJhbWUsICJsb2FkLHByb3Zpc2lvbmFsLGZhaWxlZCIsIGNvbnN0X2Nhc3Q8RXdrX0ZyYW1l
X0xvYWRfRXJyb3IqPihlcnJvcikpOwotfQotCi0vKioKLSAqIEBpbnRlcm5hbAotICogUmVwb3J0
cyB0aGUgZnJhbWUgZmluaXNoZWQgZmlyc3QgbGF5b3V0LgotICoKLSAqIEBwYXJhbSBld2tGcmFt
ZSBGcmFtZS4KLSAqCi0gKiBFbWl0cyBzaWduYWw6ICJsb2FkLGZpcnN0bGF5b3V0LGZpbmlzaGVk
IiB3aXRoIG5vIHBhcmFtZXRlcnMuCi0gKi8KLXZvaWQgZXdrX2ZyYW1lX2xvYWRfZmlyc3RsYXlv
dXRfZmluaXNoZWQoRXZhc19PYmplY3QqIGV3a0ZyYW1lKQotewotICAgIGV2YXNfb2JqZWN0X3Nt
YXJ0X2NhbGxiYWNrX2NhbGwoZXdrRnJhbWUsICJsb2FkLGZpcnN0bGF5b3V0LGZpbmlzaGVkIiwg
MCk7Ci19Ci0KLS8qKgotICogQGludGVybmFsCi0gKiBSZXBvcnRzIHRoZSBmcmFtZSBmaW5pc2hl
ZCBmaXJzdCBub24gZW1wdHkgbGF5b3V0LgotICoKLSAqIEBwYXJhbSBld2tGcmFtZSBGcmFtZS4K
LSAqCi0gKiBFbWl0cyBzaWduYWw6ICJsb2FkLG5vbmVtcHR5bGF5b3V0LGZpbmlzaGVkIiB3aXRo
IG5vIHBhcmFtZXRlcnMuCi0gKi8KLXZvaWQgZXdrX2ZyYW1lX2xvYWRfZmlyc3RsYXlvdXRfbm9u
ZW1wdHlfZmluaXNoZWQoRXZhc19PYmplY3QqIGV3a0ZyYW1lKQotewotICAgIGV2YXNfb2JqZWN0
X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdrRnJhbWUsICJsb2FkLG5vbmVtcHR5bGF5b3V0LGZpbmlz
aGVkIiwgMCk7Ci19Ci0KLS8qKgotICogQGludGVybmFsCi0gKiBSZXBvcnRzIHRoZSBsb2FkaW5n
IG9mIGEgZG9jdW1lbnQgaGFzIGZpbmlzaGVkIG9uIGZyYW1lLgotICoKLSAqIEBwYXJhbSBld2tG
cmFtZSBGcmFtZS4KLSAqCi0gKiBFbWl0cyBzaWduYWw6ICJsb2FkLGRvY3VtZW50LGZpbmlzaGVk
IiB3aXRoIG5vIHBhcmFtZXRlcnMuCi0gKi8KLXZvaWQgZXdrX2ZyYW1lX2xvYWRfZG9jdW1lbnRf
ZmluaXNoZWQoRXZhc19PYmplY3QqIGV3a0ZyYW1lKQotewotICAgIGV2YXNfb2JqZWN0X3NtYXJ0
X2NhbGxiYWNrX2NhbGwoZXdrRnJhbWUsICJsb2FkLGRvY3VtZW50LGZpbmlzaGVkIiwgMCk7Ci0g
ICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0RGF0YSk7Ci0gICAg
ZXdrX3ZpZXdfbG9hZF9kb2N1bWVudF9maW5pc2hlZChzbWFydERhdGEtPnZpZXcsIGV3a0ZyYW1l
KTsKLX0KLQotLyoqCi0gKiBAaW50ZXJuYWwKLSAqIFJlcG9ydHMgbG9hZCBmaW5pc2hlZCwgb3B0
aW9uYWxseSB3aXRoIGVycm9yIGluZm9ybWF0aW9uLgotICoKLSAqIEVtaXRzIHNpZ25hbDogImxv
YWQsZmluaXNoZWQiIHdpdGggcG9pbnRlciB0byBFd2tfRnJhbWVfTG9hZF9FcnJvcgotICogaWYg
YW55IGVycm9yLCBvciBAYyBOVUxMIGlmIHN1Y2Nlc3NmdWwgbG9hZC4KLSAqCi0gKiBAbm90ZSB0
aGVyZSBzaG91bGQgbm90YmUgYW55IGVycm9yIHN0dWZmIGhlcmUsIGJ1dCB0cnlpbmcgdG8gYmUK
LSAqICAgICAgIGNvbXBhdGlibGUgd2l0aCBwcmV2aW91cyBXZWJLaXQuCi0gKi8KLXZvaWQgZXdr
X2ZyYW1lX2xvYWRfZmluaXNoZWQoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBjb25zdCBjaGFyKiBl
cnJvckRvbWFpbiwgaW50IGVycm9yQ29kZSwgYm9vbCBpc0NhbmNlbGxhdGlvbiwgY29uc3QgY2hh
ciogZXJyb3JEZXNjcmlwdGlvbiwgY29uc3QgY2hhciogZmFpbGluZ1VybCkKLXsKLSAgICBFd2tf
RnJhbWVfTG9hZF9FcnJvciBidWZmZXIsICplcnJvcjsKLSAgICBpZiAoIWVycm9yRG9tYWluKSB7
Ci0gICAgICAgIERCRygiZXdrRnJhbWU9JXAsIHN1Y2Nlc3MuIiwgZXdrRnJhbWUpOwotICAgICAg
ICBlcnJvciA9IDA7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgREJHKCJld2tGcmFtZT0lcCwgZXJy
b3I9JXMgKCVkLCBjYW5jZWxsYXRpb249JWhodSkgXCIlc1wiLCB1cmw9JXMiLAotICAgICAgICAg
ICAgZXdrRnJhbWUsIGVycm9yRG9tYWluLCBlcnJvckNvZGUsIGlzQ2FuY2VsbGF0aW9uLAotICAg
ICAgICAgICAgZXJyb3JEZXNjcmlwdGlvbiwgZmFpbGluZ1VybCk7Ci0KLSAgICAgICAgYnVmZmVy
LmRvbWFpbiA9IGVycm9yRG9tYWluOwotICAgICAgICBidWZmZXIuY29kZSA9IGVycm9yQ29kZTsK
LSAgICAgICAgYnVmZmVyLmlzX2NhbmNlbGxhdGlvbiA9IGlzQ2FuY2VsbGF0aW9uOwotICAgICAg
ICBidWZmZXIuZGVzY3JpcHRpb24gPSBlcnJvckRlc2NyaXB0aW9uOwotICAgICAgICBidWZmZXIu
ZmFpbGluZ191cmwgPSBmYWlsaW5nVXJsOwotICAgICAgICBidWZmZXIucmVzb3VyY2VfaWRlbnRp
ZmllciA9IDA7Ci0gICAgICAgIGJ1ZmZlci5mcmFtZSA9IGV3a0ZyYW1lOwotICAgICAgICBlcnJv
ciA9ICZidWZmZXI7Ci0gICAgfQotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwo
ZXdrRnJhbWUsICJsb2FkLGZpbmlzaGVkIiwgZXJyb3IpOwotICAgIEVXS19GUkFNRV9TRF9HRVRf
T1JfUkVUVVJOKGV3a0ZyYW1lLCBzbWFydERhdGEpOwotICAgIGV3a192aWV3X2xvYWRfZmluaXNo
ZWQoc21hcnREYXRhLT52aWV3LCBlcnJvcik7Ci19Ci0KLS8qKgotICogQGludGVybmFsCi0gKiBS
ZXBvcnRzIHJlc291cmNlIGxvYWQgZmluaXNoZWQuCi0gKgotICogRW1pdHMgc2lnbmFsOiAibG9h
ZCxyZXNvdXJjZSxmaW5pc2hlZCIgd2l0aCB0aGUgcmVzb3VyY2UKLSAqIHJlcXVlc3QgaWRlbnRp
Zmllci4KLSAqLwotdm9pZCBld2tfZnJhbWVfbG9hZF9yZXNvdXJjZV9maW5pc2hlZChFdmFzX09i
amVjdCogZXdrRnJhbWUsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikKLXsKLSAgICBldmFzX29i
amVjdF9zbWFydF9jYWxsYmFja19jYWxsKGV3a0ZyYW1lLCAibG9hZCxyZXNvdXJjZSxmaW5pc2hl
ZCIsICZpZGVudGlmaWVyKTsKLX0KLQotLyoqCi0gKiBAaW50ZXJuYWwKLSAqIFJlcG9ydHMgcmVz
b3VyY2UgbG9hZCBmYWlsdXJlLCB3aXRoIGVycm9yIGluZm9ybWF0aW9uLgotICoKLSAqIEVtaXRz
IHNpZ25hbDogImxvYWQscmVzb3VyY2UsZmFpbGVkIiB3aXRoIHRoZSBlcnJvciBpbmZvcm1hdGlv
bi4KLSAqLwotdm9pZCBld2tfZnJhbWVfbG9hZF9yZXNvdXJjZV9mYWlsZWQoRXZhc19PYmplY3Qq
IGV3a0ZyYW1lLCBFd2tfRnJhbWVfTG9hZF9FcnJvciogZXJyb3IpCi17Ci0gICAgZXZhc19vYmpl
Y3Rfc21hcnRfY2FsbGJhY2tfY2FsbChld2tGcmFtZSwgImxvYWQscmVzb3VyY2UsZmFpbGVkIiwg
ZXJyb3IpOwotfQotCi0vKioKLSAqIEBpbnRlcm5hbAotICogUmVwb3J0cyBsb2FkIGZhaWxlZCB3
aXRoIGVycm9yIGluZm9ybWF0aW9uLgotICoKLSAqIEVtaXRzIHNpZ25hbDogImxvYWQsZXJyb3Ii
IHdpdGggcG9pbnRlciB0byBFd2tfRnJhbWVfTG9hZF9FcnJvci4KLSAqLwotdm9pZCBld2tfZnJh
bWVfbG9hZF9lcnJvcihFdmFzX09iamVjdCogZXdrRnJhbWUsIGNvbnN0IGNoYXIqIGVycm9yRG9t
YWluLCBpbnQgZXJyb3JDb2RlLCBib29sIGlzQ2FuY2VsbGF0aW9uLCBjb25zdCBjaGFyKiBlcnJv
ckRlc2NyaXB0aW9uLCBjb25zdCBjaGFyKiBmYWlsaW5nVXJsKQotewotICAgIEV3a19GcmFtZV9M
b2FkX0Vycm9yIGVycm9yOwotCi0gICAgREJHKCJld2tGcmFtZT0lcCwgZXJyb3I9JXMgKCVkLCBj
YW5jZWxsYXRpb249JWhodSkgXCIlc1wiLCB1cmw9JXMiLAotICAgICAgICBld2tGcmFtZSwgZXJy
b3JEb21haW4sIGVycm9yQ29kZSwgaXNDYW5jZWxsYXRpb24sCi0gICAgICAgIGVycm9yRGVzY3Jp
cHRpb24sIGZhaWxpbmdVcmwpOwotCi0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oZXJy
b3JEb21haW4pOwotCi0gICAgZXJyb3IuY29kZSA9IGVycm9yQ29kZTsKLSAgICBlcnJvci5pc19j
YW5jZWxsYXRpb24gPSBpc0NhbmNlbGxhdGlvbjsKLSAgICBlcnJvci5kb21haW4gPSBlcnJvckRv
bWFpbjsKLSAgICBlcnJvci5kZXNjcmlwdGlvbiA9IGVycm9yRGVzY3JpcHRpb247Ci0gICAgZXJy
b3IuZmFpbGluZ191cmwgPSBmYWlsaW5nVXJsOwotICAgIGVycm9yLnJlc291cmNlX2lkZW50aWZp
ZXIgPSAwOwotICAgIGVycm9yLmZyYW1lID0gZXdrRnJhbWU7Ci0gICAgZXZhc19vYmplY3Rfc21h
cnRfY2FsbGJhY2tfY2FsbChld2tGcmFtZSwgImxvYWQsZXJyb3IiLCAmZXJyb3IpOwotICAgIEVX
S19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBzbWFydERhdGEpOwotICAgIGV3a192
aWV3X2xvYWRfZXJyb3Ioc21hcnREYXRhLT52aWV3LCAmZXJyb3IpOwotfQotCi0vKioKLSAqIEBp
bnRlcm5hbAotICogUmVwb3J0cyBsb2FkIHByb2dyZXNzIGNoYW5nZWQuCi0gKgotICogRW1pdHMg
c2lnbmFsOiAibG9hZCxwcm9ncmVzcyIgd2l0aCBwb2ludGVyIHRvIGEgZG91YmxlIGZyb20gMC4w
IHRvIDEuMC4KLSAqLwotdm9pZCBld2tfZnJhbWVfbG9hZF9wcm9ncmVzc19jaGFuZ2VkKEV2YXNf
T2JqZWN0KiBld2tGcmFtZSkKLXsKLSAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihld2tG
cmFtZSwgc21hcnREYXRhKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzbWFydERh
dGEtPmZyYW1lKTsKLQotICAgIC8vIFRPRE86IHRoaXMgaXMgcGVyIHBhZ2UsIHRoZXJlIHNob3Vs
ZCBiZSBhIHdheSB0byBoYXZlIHBlci1mcmFtZS4KLSAgICBkb3VibGUgcHJvZ3Jlc3MgPSBzbWFy
dERhdGEtPmZyYW1lLT5wYWdlKCktPnByb2dyZXNzKCkuZXN0aW1hdGVkUHJvZ3Jlc3MoKTsKLQot
ICAgIERCRygiZXdrRnJhbWU9JXAgKHA9JTAuM2YpIiwgZXdrRnJhbWUsIHByb2dyZXNzKTsKLQot
ICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdrRnJhbWUsICJsb2FkLHByb2dy
ZXNzIiwgJnByb2dyZXNzKTsKLSAgICBld2tfdmlld19sb2FkX3Byb2dyZXNzX2NoYW5nZWQoc21h
cnREYXRhLT52aWV3KTsKLX0KLQotLyoqCi0gKiBAaW50ZXJuYWwKLSAqCi0gKiBSZXBvcnRzIGNv
bnRlbnRzIHNpemUgY2hhbmdlZC4KLSAqLwotdm9pZCBld2tfZnJhbWVfY29udGVudHNfc2l6ZV9j
aGFuZ2VkKEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgRXZhc19Db29yZCB3aWR0aCwgRXZhc19Db29y
ZCBoZWlnaHQpCi17Ci0gICAgRXZhc19Db29yZCBzaXplWzJdID0ge3dpZHRoLCBoZWlnaHR9Owot
ICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdrRnJhbWUsICJjb250ZW50cyxz
aXplLGNoYW5nZWQiLCBzaXplKTsKLX0KLQotLyoqCi0gKiBAaW50ZXJuYWwKLSAqCi0gKiBSZXBv
cnRzIHRpdGxlIGNoYW5nZWQuCi0gKi8KLXZvaWQgZXdrX2ZyYW1lX3RpdGxlX3NldChFdmFzX09i
amVjdCogZXdrRnJhbWUsIGNvbnN0IEV3a19UZXh0X1dpdGhfRGlyZWN0aW9uKiB0aXRsZSkKLXsK
LSAgICBEQkcoImV3a0ZyYW1lPSVwLCB0aXRsZT0lcywgZGlyZWN0aW9uPSVzIiwgZXdrRnJhbWUs
IHRpdGxlLT5zdHJpbmcgPyB0aXRsZS0+c3RyaW5nIDogIihudWxsKSIsIHRpdGxlLT5kaXJlY3Rp
b24gPT0gRVdLX1RFWFRfRElSRUNUSU9OX0xFRlRfVE9fUklHSFQgPyAibHRyIiA6ICJydGwiKTsK
LSAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihld2tGcmFtZSwgc21hcnREYXRhKTsKLSAg
ICBpZiAoIWVpbmFfc3RyaW5nc2hhcmVfcmVwbGFjZSgmc21hcnREYXRhLT50aXRsZS5zdHJpbmcs
IHRpdGxlLT5zdHJpbmcpICYmIChzbWFydERhdGEtPnRpdGxlLmRpcmVjdGlvbiA9PSB0aXRsZS0+
ZGlyZWN0aW9uKSkKLSAgICAgICAgcmV0dXJuOwotICAgIHNtYXJ0RGF0YS0+dGl0bGUuZGlyZWN0
aW9uID0gdGl0bGUtPmRpcmVjdGlvbjsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19j
YWxsKGV3a0ZyYW1lLCAidGl0bGUsY2hhbmdlZCIsICh2b2lkKil0aXRsZSk7Ci19Ci0KLS8qKgot
ICogQGludGVybmFsCi0gKgotICogQ3JlYXRlcyBhIHZpZXcuCi0gKi8KLXZvaWQgZXdrX2ZyYW1l
X3ZpZXdfY3JlYXRlX2Zvcl92aWV3KEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgRXZhc19PYmplY3Qq
IHZpZXcpCi17Ci0gICAgREJHKCJld2tGcmFtZT0lcCwgdmlldz0lcCIsIGV3a0ZyYW1lLCB2aWV3
KTsKLSAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihld2tGcmFtZSwgc21hcnREYXRhKTsK
LSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzbWFydERhdGEtPmZyYW1lKTsKLSAgICBF
dmFzX0Nvb3JkIHdpZHRoLCBoZWlnaHQ7Ci0KLSAgICBldmFzX29iamVjdF9nZW9tZXRyeV9nZXQo
dmlldywgMCwgMCwgJndpZHRoLCAmaGVpZ2h0KTsKLQotICAgIFdlYkNvcmU6OkludFNpemUgc2l6
ZSh3aWR0aCwgaGVpZ2h0KTsKLSAgICBpbnQgcmVkLCBncmVlbiwgYmx1ZSwgYWxwaGE7Ci0gICAg
V2ViQ29yZTo6Q29sb3IgYmFja2dyb3VuZDsKLQotICAgIGV3a192aWV3X2JnX2NvbG9yX2dldCh2
aWV3LCAmcmVkLCAmZ3JlZW4sICZibHVlLCAmYWxwaGEpOwotICAgIGlmICghYWxwaGEpCi0gICAg
ICAgIGJhY2tncm91bmQgPSBXZWJDb3JlOjpDb2xvcigwLCAwLCAwLCAwKTsKLSAgICBlbHNlIGlm
IChhbHBoYSA9PSAyNTUpCi0gICAgICAgIGJhY2tncm91bmQgPSBXZWJDb3JlOjpDb2xvcihyZWQs
IGdyZWVuLCBibHVlLCBhbHBoYSk7Ci0gICAgZWxzZQotICAgICAgICBiYWNrZ3JvdW5kID0gV2Vi
Q29yZTo6Q29sb3IocmVkICogMjU1IC8gYWxwaGEsIGdyZWVuICogMjU1IC8gYWxwaGEsIGJsdWUg
KiAyNTUgLyBhbHBoYSwgYWxwaGEpOwotCi0gICAgc21hcnREYXRhLT5mcmFtZS0+Y3JlYXRlVmll
dyhzaXplLCBiYWNrZ3JvdW5kLCAhYWxwaGEpOwotICAgIGlmICghc21hcnREYXRhLT5mcmFtZS0+
dmlldygpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBzbWFydERhdGEtPmZyYW1lLT52aWV3KCkt
PnNldEV2YXNPYmplY3QoZXdrRnJhbWUpOwotCi0gICAgZXdrX2ZyYW1lX21peGVkX2NvbnRlbnRf
ZGlzcGxheWVkX3NldChld2tGcmFtZSwgZmFsc2UpOwotICAgIGV3a19mcmFtZV9taXhlZF9jb250
ZW50X3J1bl9zZXQoZXdrRnJhbWUsIGZhbHNlKTsKLX0KLQotc3NpemVfdCBld2tfZnJhbWVfc291
cmNlX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrRnJhbWUsIGNoYXIqKiBmcmFtZVNvdXJjZSkK
LXsKLSAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihld2tGcmFtZSwgc21hcnREYXRhLCAt
MSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+ZnJhbWUs
IC0xKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5mcmFt
ZS0+ZG9jdW1lbnQoKSwgLTEpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChm
cmFtZVNvdXJjZSwgLTEpOwotCi0gICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgICpmcmFt
ZVNvdXJjZSA9IDA7IC8vIFNhdmVzIDAgdG8gcG9pbnRlciB1bnRpbCBpdCdzIG5vdCBhbGxvY2F0
ZWQuCi0KLSAgICBpZiAoIWV3a19mcmFtZV91cmlfZ2V0KGV3a0ZyYW1lKSkKLSAgICAgICAgcmV0
dXJuIC0xOwotCi0gICAgaWYgKCFzbWFydERhdGEtPmZyYW1lLT5kb2N1bWVudCgpLT5pc0hUTUxE
b2N1bWVudCgpKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBTdXBwb3J0IG90aGVycyBkb2N1bWVudHMu
Ci0gICAgICAgIFdBUk4oIk9ubHkgSFRNTCBkb2N1bWVudHMgYXJlIHN1cHBvcnRlZCIpOwotICAg
ICAgICByZXR1cm4gLTE7Ci0gICAgfQotCi0gICAgLy8gTG9vayBmb3IgPGh0bWw+IHRhZy4gSWYg
aXQgZXhpc3RzLCB0aGUgbm9kZSBjb250YXRpbnMgYWxsIGRvY3VtZW50J3Mgc291cmNlLgotICAg
IFdlYkNvcmU6Ok5vZGUqIGRvY3VtZW50Tm9kZSA9IHNtYXJ0RGF0YS0+ZnJhbWUtPmRvY3VtZW50
KCktPmRvY3VtZW50RWxlbWVudCgpOwotICAgIGlmIChkb2N1bWVudE5vZGUpCi0gICAgICAgIGZv
ciAoV2ViQ29yZTo6Tm9kZSogbm9kZSA9IGRvY3VtZW50Tm9kZS0+Zmlyc3RDaGlsZCgpOyBub2Rl
OyBub2RlID0gbm9kZS0+cGFyZW50RWxlbWVudCgpKSB7Ci0gICAgICAgICAgICBpZiAobm9kZS0+
aGFzVGFnTmFtZShXZWJDb3JlOjpIVE1MTmFtZXM6Omh0bWxUYWcpKSB7Ci0gICAgICAgICAgICAg
ICAgV2ViQ29yZTo6SFRNTEVsZW1lbnQqIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpI
VE1MRWxlbWVudCo+KG5vZGUpOwotICAgICAgICAgICAgICAgIGlmIChlbGVtZW50KQotICAgICAg
ICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChlbGVtZW50LT5vdXRlckhUTUwoKSk7Ci0gICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgIENTdHJp
bmcgdXRmOFN0cmluZyA9IGJ1aWxkZXIudG9TdHJpbmcoKS51dGY4KCk7Ci0gICAgc2l6ZV90IHNv
dXJjZUxlbmd0aCA9IHV0ZjhTdHJpbmcubGVuZ3RoKCk7Ci0gICAgKmZyYW1lU291cmNlID0gc3Rh
dGljX2Nhc3Q8Y2hhcio+KG1hbGxvYyhzb3VyY2VMZW5ndGggKyAxKSk7Ci0gICAgaWYgKCEqZnJh
bWVTb3VyY2UpIHsKLSAgICAgICAgQ1JJVElDQUwoIkNvdWxkIG5vdCBhbGxvY2F0ZSBtZW1vcnku
Iik7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0KLSAgICBzdHJuY3B5KCpmcmFtZVNvdXJj
ZSwgdXRmOFN0cmluZy5kYXRhKCksIHNvdXJjZUxlbmd0aCk7Ci0gICAgKCpmcmFtZVNvdXJjZSlb
c291cmNlTGVuZ3RoXSA9ICdcMCc7Ci0KLSAgICByZXR1cm4gc291cmNlTGVuZ3RoOwotfQotCi1F
aW5hX0xpc3QqIGV3a19mcmFtZV9yZXNvdXJjZXNfbG9jYXRpb25fZ2V0KGNvbnN0IEV2YXNfT2Jq
ZWN0KiBld2tGcmFtZSkKLXsKLSAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihld2tGcmFt
ZSwgc21hcnREYXRhLCAwKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21h
cnREYXRhLT5mcmFtZSwgMCk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNt
YXJ0RGF0YS0+ZnJhbWUtPmRvY3VtZW50KCksIDApOwotCi0gICAgRWluYV9MaXN0KiBsaXN0T2ZJ
bWFnZXNMb2NhdGlvbiA9IDA7Ci0KLSAgICAvLyBHZXQgc3JjIGF0dGlidXRlIG9mIGltYWdlcyBh
bmQgc2F2ZXMgdGhlbSB0byB0aGUgRWluYV9MaXN0LgotICAgIFJlZlB0cjxXZWJDb3JlOjpIVE1M
Q29sbGVjdGlvbj4gaW1hZ2VzID0gc21hcnREYXRhLT5mcmFtZS0+ZG9jdW1lbnQoKS0+aW1hZ2Vz
KCk7Ci0gICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IGltYWdlcy0+bGVuZ3RoKCk7
ICsraW5kZXgpIHsKLSAgICAgICAgV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudCogaW1hZ2VFbGVt
ZW50ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudCo+KGltYWdlcy0+aXRl
bShpbmRleCkpOwotICAgICAgICBpZiAoIWltYWdlRWxlbWVudCB8fCBpbWFnZUVsZW1lbnQtPnNy
YygpLmlzTnVsbCgpIHx8IGltYWdlRWxlbWVudC0+c3JjKCkuaXNFbXB0eSgpKQotICAgICAgICAg
ICAgY29udGludWU7Ci0KLSAgICAgICAgV1RGOjpTdHJpbmcgaW1hZ2VMb2NhdGlvbiA9IFdlYkNv
cmU6OmRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcyhpbWFnZUVsZW1lbnQtPnNyYygpLnN0cmluZygp
KTsKLSAgICAgICAgLy8gTG9vayBmb3IgZHVwbGljYXRlZCBsb2NhdGlvbi4KLSAgICAgICAgRWlu
YV9MaXN0KiBsaXN0SXRlcmF0b3IgPSAwOwotICAgICAgICB2b2lkKiBkYXRhID0gMDsKLSAgICAg
ICAgRWluYV9Cb29sIGZvdW5kID0gZmFsc2U7Ci0gICAgICAgIEVJTkFfTElTVF9GT1JFQUNIKGxp
c3RPZkltYWdlc0xvY2F0aW9uLCBsaXN0SXRlcmF0b3IsIGRhdGEpCi0gICAgICAgICAgICBpZiAo
KGZvdW5kID0gIXN0cmNtcChzdGF0aWNfY2FzdDxjaGFyKj4oZGF0YSksIGltYWdlTG9jYXRpb24u
dXRmOCgpLmRhdGEoKSkpKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBpZiAoZm91
bmQpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBjb25zdCBjaGFyKiBpbWFnZUxv
Y2F0aW9uQ29weSA9IGVpbmFfc3RyaW5nc2hhcmVfYWRkKGltYWdlTG9jYXRpb24udXRmOCgpLmRh
dGEoKSk7Ci0gICAgICAgIGlmICghaW1hZ2VMb2NhdGlvbkNvcHkpCi0gICAgICAgICAgICBnb3Rv
IG91dF9vZl9tZW1vcnlfaGFuZGxlcjsKLSAgICAgICAgbGlzdE9mSW1hZ2VzTG9jYXRpb24gPSBl
aW5hX2xpc3RfYXBwZW5kKGxpc3RPZkltYWdlc0xvY2F0aW9uLCBpbWFnZUxvY2F0aW9uQ29weSk7
Ci0gICAgICAgIGlmIChlaW5hX2Vycm9yX2dldCgpKQotICAgICAgICAgICAgZ290byBvdXRfb2Zf
bWVtb3J5X2hhbmRsZXI7Ci0gICAgfQotICAgIC8vIEZJWE1FOiBHZXQgVVJMIG90aGVycyByZXNv
dXJjZXMgKHBsdWdpbnMsIGNzcywgbWVkaWEgZmlsZXMpLgotICAgIHJldHVybiBsaXN0T2ZJbWFn
ZXNMb2NhdGlvbjsKLQotb3V0X29mX21lbW9yeV9oYW5kbGVyOgotICAgIENSSVRJQ0FMKCJDb3Vs
ZCBub3QgYWxsb2NhdGUgbWVtb3J5LiIpOwotICAgIHZvaWQqIGRhdGE7Ci0gICAgRUlOQV9MSVNU
X0ZSRUUobGlzdE9mSW1hZ2VzTG9jYXRpb24sIGRhdGEpCi0gICAgICAgIGZyZWUoZGF0YSk7Ci0g
ICAgcmV0dXJuIDA7Ci19Ci0KLWNvbnN0IGNoYXIqIGV3a19mcmFtZV9wbGFpbl90ZXh0X2dldChj
b25zdCBFdmFzX09iamVjdCogZXdrRnJhbWUpCi17Ci0gICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9S
RVRVUk4oZXdrRnJhbWUsIHNtYXJ0RGF0YSwgMCk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9S
RVRVUk5fVkFMKHNtYXJ0RGF0YS0+ZnJhbWUsIDApOwotCi0gICAgaWYgKCFzbWFydERhdGEtPmZy
YW1lLT5kb2N1bWVudCgpKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIFdlYkNvcmU6OkVsZW1l
bnQqIGRvY3VtZW50RWxlbWVudCA9IHNtYXJ0RGF0YS0+ZnJhbWUtPmRvY3VtZW50KCktPmRvY3Vt
ZW50RWxlbWVudCgpOwotCi0gICAgaWYgKCFkb2N1bWVudEVsZW1lbnQpCi0gICAgICAgIHJldHVy
biAwOwotCi0gICAgcmV0dXJuIGVpbmFfc3RyaW5nc2hhcmVfYWRkKGRvY3VtZW50RWxlbWVudC0+
aW5uZXJUZXh0KCkudXRmOCgpLmRhdGEoKSk7Ci19Ci0KLUVpbmFfQm9vbCBld2tfZnJhbWVfbWl4
ZWRfY29udGVudF9kaXNwbGF5ZWRfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tGcmFtZSkKLXsK
LSAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihld2tGcmFtZSwgc21hcnREYXRhLCBmYWxz
ZSk7Ci0gICAgcmV0dXJuIHNtYXJ0RGF0YS0+aGFzRGlzcGxheWVkTWl4ZWRDb250ZW50OwotfQot
Ci1FaW5hX0Jvb2wgZXdrX2ZyYW1lX21peGVkX2NvbnRlbnRfcnVuX2dldChjb25zdCBFdmFzX09i
amVjdCogZXdrRnJhbWUpCi17Ci0gICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJh
bWUsIHNtYXJ0RGF0YSwgZmFsc2UpOwotICAgIHJldHVybiBzbWFydERhdGEtPmhhc1J1bk1peGVk
Q29udGVudDsKLX0KLQotRXdrX0NlcnRpZmljYXRlX1N0YXR1cyBld2tfZnJhbWVfY2VydGlmaWNh
dGVfc3RhdHVzX2dldChFdmFzX09iamVjdCogZXdrRnJhbWUpCi17Ci0gICAgRVdLX0ZSQU1FX1NE
X0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0RGF0YSwgRVdLX0NFUlRJRklDQVRFX1NUQVRV
U19OT19DRVJUSUZJQ0FURSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNt
YXJ0RGF0YS0+ZnJhbWUsIEVXS19DRVJUSUZJQ0FURV9TVEFUVVNfTk9fQ0VSVElGSUNBVEUpOwot
Ci0gICAgY29uc3QgV2ViQ29yZTo6RnJhbWVMb2FkZXImIGZyYW1lTG9hZGVyID0gc21hcnREYXRh
LT5mcmFtZS0+bG9hZGVyKCk7Ci0gICAgY29uc3QgV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqIGRv
Y3VtZW50TG9hZGVyID0gZnJhbWVMb2FkZXIuZG9jdW1lbnRMb2FkZXIoKTsKLSAgICBjb25zdCBX
ZWJDb3JlOjpVUkwgZG9jdW1lbnRVUkwgPSBkb2N1bWVudExvYWRlci0+cmVxdWVzdFVSTCgpOwot
Ci0gICAgaWYgKCFkb2N1bWVudFVSTC5wcm90b2NvbElzKCJodHRwcyIpKQotICAgICAgICByZXR1
cm4gRVdLX0NFUlRJRklDQVRFX1NUQVRVU19OT19DRVJUSUZJQ0FURTsKLQotICAgIGlmIChmcmFt
ZUxvYWRlci5zdWJmcmFtZUlzTG9hZGluZygpKQotICAgICAgICByZXR1cm4gRVdLX0NFUlRJRklD
QVRFX1NUQVRVU19OT19DRVJUSUZJQ0FURTsKLQotICAgIGlmIChkb2N1bWVudExvYWRlci0+cmVx
dWVzdCgpLnNvdXBNZXNzYWdlRmxhZ3MoKSAmIFNPVVBfTUVTU0FHRV9DRVJUSUZJQ0FURV9UUlVT
VEVEKQotICAgICAgICByZXR1cm4gRVdLX0NFUlRJRklDQVRFX1NUQVRVU19UUlVTVEVEOwotCi0g
ICAgcmV0dXJuIEVXS19DRVJUSUZJQ0FURV9TVEFUVVNfVU5UUlVTVEVEOwotfQotCi0vKioKLSAq
IEBpbnRlcm5hbAotICogUmVwb3J0cyBmcmFtZSBmYXZpY29uIGNoYW5nZWQuCi0gKgotICogQHBh
cmFtIGV3a0ZyYW1lIEZyYW1lLgotICoKLSAqIEVtaXRzIHNpZ25hbDogImljb24sY2hhbmdlZCIg
d2l0aCBubyBwYXJhbWV0ZXJzLgotICovCi12b2lkIGV3a19mcmFtZV9pY29uX2NoYW5nZWQoRXZh
c19PYmplY3QqIGV3a0ZyYW1lKQotewotICAgIERCRygiZXdrRnJhbWU9JXAiLCBld2tGcmFtZSk7
Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChld2tGcmFtZSwgImljb24sY2hh
bmdlZCIsIDApOwotfQotCi0vKioKLSAqIEBpbnRlcm5hbAotICogUmVwb3J0cyB1cmkgY2hhbmdl
ZCBhbmQgc3dhcCBpbnRlcm5hbCBzdHJpbmcgcmVmZXJlbmNlLgotICoKLSAqIEVtaXRzIHNpZ25h
bDogInVyaSxjaGFuZ2VkIiB3aXRoIG5ldyB1cmkgYXMgcGFyYW1ldGVyLgotICovCi1ib29sIGV3
a19mcmFtZV91cmlfY2hhbmdlZChFdmFzX09iamVjdCogZXdrRnJhbWUpCi17Ci0gICAgRVdLX0ZS
QU1FX1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0RGF0YSwgZmFsc2UpOwotICAgIEVJ
TkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEtPmZyYW1lLCBmYWxzZSk7Ci0g
ICAgV1RGOjpDU3RyaW5nIHVyaShzbWFydERhdGEtPmZyYW1lLT5kb2N1bWVudCgpLT51cmwoKS5z
dHJpbmcoKS51dGY4KCkpOwotCi0gICAgSU5GTygidXJpPSVzIiwgdXJpLmRhdGEoKSk7Ci0gICAg
aWYgKCF1cmkuZGF0YSgpKSB7Ci0gICAgICAgIEVSUigibm8gdXJpIik7Ci0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICB9Ci0KLSAgICBlaW5hX3N0cmluZ3NoYXJlX3JlcGxhY2UoJnNtYXJ0RGF0
YS0+dXJpLCB1cmkuZGF0YSgpKTsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxs
KGV3a0ZyYW1lLCAidXJpLGNoYW5nZWQiLCAodm9pZCopc21hcnREYXRhLT51cmkpOwotICAgIHJl
dHVybiB0cnVlOwotfQotCi0vKioKLSAqIEBpbnRlcm5hbAotICoKLSAqIEZvcmNlcyBsYXlvdXQg
Zm9yIGZyYW1lLgotICovCi12b2lkIGV3a19mcmFtZV9mb3JjZV9sYXlvdXQoRXZhc19PYmplY3Qq
IGV3a0ZyYW1lKQotewotICAgIERCRygiZXdrRnJhbWU9JXAiLCBld2tGcmFtZSk7Ci0gICAgRVdL
X0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0RGF0YSk7Ci0gICAgRUlOQV9T
QUZFVFlfT05fTlVMTF9SRVRVUk4oc21hcnREYXRhLT5mcmFtZSk7Ci0gICAgV2ViQ29yZTo6RnJh
bWVWaWV3KiB2aWV3ID0gc21hcnREYXRhLT5mcmFtZS0+dmlldygpOwotICAgIGlmICh2aWV3KQot
ICAgICAgICB2aWV3LT5mb3JjZUxheW91dCh0cnVlKTsKLX0KLQotLyoqCi0gKiBAaW50ZXJuYWwK
LSAqCi0gKiBDcmVhdGVzIHBsdWdpbi4KLSAqLwotV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6Oldp
ZGdldD4gZXdrX2ZyYW1lX3BsdWdpbl9jcmVhdGUoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBjb25z
dCBXZWJDb3JlOjpJbnRTaXplJiBwbHVnaW5TaXplLCBXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVu
dCogZWxlbWVudCwgY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIGNvbnN0IFdURjo6VmVjdG9yPFdU
Rjo6U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiBw
YXJhbVZhbHVlcywgY29uc3QgV1RGOjpTdHJpbmcmIG1pbWVUeXBlLCBib29sIGxvYWRNYW51YWxs
eSkKLXsKLSNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKLSAgICBEQkcoImV3a0ZyYW1l
PSVwLCBzaXplPSVkeCVkLCBlbGVtZW50PSVwLCB1cmw9JXMsIG1pbWVUeXBlPSVzIiwKLSAgICAg
ICAgZXdrRnJhbWUsIHBsdWdpblNpemUud2lkdGgoKSwgcGx1Z2luU2l6ZS5oZWlnaHQoKSwgZWxl
bWVudCwKLSAgICAgICAgdXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIG1pbWVUeXBlLnV0Zjgo
KS5kYXRhKCkpOwotCi0gICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNk
LCAwKTsKLQotICAgIC8vIFRPRE86IGVtaXQgc2lnbmFsIGFuZCBhc2sgd2Via2l0IHVzZXJzIGlm
IHNvbWV0aGluZyBlbHNlIHNob3VsZCBiZSBkb25lLgotICAgIC8vIGxpa2UgY3JlYXRpbmcgYW5v
dGhlciB4IHdpbmRvdyAoc2VlIGd0aywgaXQgYWxsb3dzIHVzZXJzIHRvIGNyZWF0ZQotICAgIC8v
IEd0a1BsdWdpbldpZGdldC4KLQotICAgIFdURjo6UmVmUHRyPFdlYkNvcmU6OlBsdWdpblZpZXc+
IHBsdWdpblZpZXcgPSBXZWJDb3JlOjpQbHVnaW5WaWV3OjpjcmVhdGUKLSAgICAgICAgKHNkLT5m
cmFtZSwgcGx1Z2luU2l6ZSwgZWxlbWVudCwgdXJsLCBwYXJhbU5hbWVzLCBwYXJhbVZhbHVlcywK
LSAgICAgICAgbWltZVR5cGUsIGxvYWRNYW51YWxseSk7Ci0KLSAgICBpZiAocGx1Z2luVmlldy0+
c3RhdHVzKCkgPT0gV2ViQ29yZTo6UGx1Z2luU3RhdHVzTG9hZGVkU3VjY2Vzc2Z1bGx5KQotICAg
ICAgICByZXR1cm4gcGx1Z2luVmlldy5yZWxlYXNlKCk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJB
TShld2tGcmFtZSk7Ci0gICAgVU5VU0VEX1BBUkFNKHBsdWdpblNpemUpOwotICAgIFVOVVNFRF9Q
QVJBTShlbGVtZW50KTsKLSAgICBVTlVTRURfUEFSQU0odXJsKTsKLSAgICBVTlVTRURfUEFSQU0o
cGFyYW1OYW1lcyk7Ci0gICAgVU5VU0VEX1BBUkFNKHBhcmFtVmFsdWVzKTsKLSAgICBVTlVTRURf
UEFSQU0obWltZVR5cGUpOwotICAgIFVOVVNFRF9QQVJBTShsb2FkTWFudWFsbHkpOwotI2VuZGlm
IC8vICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKLSAgICByZXR1cm4gMDsKLX0KLQot
LyoqCi0gKiBAaW50ZXJuYWwKLSAqIFJlcG9ydHMgdGhhdCBlZGl0b3IgY2xpZW50IHNlbGVjdGlv
biB3YXMgY2hhbmdlZC4KLSAqCi0gKiBAcGFyYW0gZXdrRnJhbWUgRnJhbWUKLSAqCi0gKiBFbWl0
cyBzaWduYWw6ICJlZGl0b3JjbGllbnRzZWxlY3Rpb24sY2hhbmdlZCIgd2l0aCBubyBwYXJhbWV0
ZXJzLgotICovCi12b2lkIGV3a19mcmFtZV9lZGl0b3JfY2xpZW50X3NlbGVjdGlvbl9jaGFuZ2Vk
KEV2YXNfT2JqZWN0KiBld2tGcmFtZSkKLXsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFj
a19jYWxsKGV3a0ZyYW1lLCAiZWRpdG9yY2xpZW50LHNlbGVjdGlvbixjaGFuZ2VkIiwgMCk7Ci0g
ICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0RGF0YSk7Ci0gICAg
ZXdrX3ZpZXdfZWRpdG9yX2NsaWVudF9zZWxlY3Rpb25fY2hhbmdlZChzbWFydERhdGEtPnZpZXcp
OwotfQotCi0vKioKLSAqIEBpbnRlcm5hbAotICogUmVwb3J0cyB0aGF0IGVkaXRvciBjbGllbnQn
cyBjb250ZW50cyB3ZXJlIGNoYW5nZWQuCi0gKgotICogQHBhcmFtIG8gRnJhbWUKLSAqCi0gKiBF
bWl0cyBzaWduYWw6ICJlZGl0b3JjbGllbnQsY29udGVudHMsY2hhbmdlZCIgd2l0aCBubyBwYXJh
bWV0ZXJzLgotICovCi12b2lkIGV3a19mcmFtZV9lZGl0b3JfY2xpZW50X2NvbnRlbnRzX2NoYW5n
ZWQoRXZhc19PYmplY3QqIGV3a0ZyYW1lKQotewotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxi
YWNrX2NhbGwoZXdrRnJhbWUsICJlZGl0b3JjbGllbnQsY29udGVudHMsY2hhbmdlZCIsIDApOwot
ICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBzbWFydERhdGEpOwotICAg
IGV3a192aWV3X2VkaXRvcl9jbGllbnRfY29udGVudHNfY2hhbmdlZChzbWFydERhdGEtPnZpZXcp
OwotfQotCi0vKioKLSAqIEBpbnRlcm5hbAotICogRGVmaW5lcyB3aGV0aGVyIHRoZSBmcmFtZSBo
YXMgZGlzcGxheWVkIG1peGVkIGNvbnRlbnQuCi0gKgotICogV2hlbiBhIGZyYW1lIGhhcyBkaXNw
bGF5ZWQgbWl4ZWQgY29udGVudCwgdGhlIGN1cnJlbnRseSBsb2FkZWQgVVJJIGlzIHNlY3VyZSAo
SFRUUFMpIGJ1dCBpdCBoYXMKLSAqIGxvYWRlZCBhbmQgZGlzcGxheWVkIGEgcmVzb3VyY2UsIHN1
Y2ggYXMgYW4gaW1hZ2UsIGZyb20gYW4gaW5zZWN1cmUgKEhUVFApIHNvdXJjZS4KLSAqCi0gKiBA
cGFyYW0gaGFzRGlzcGxheWVkIERvIG9yIGRvIG5vdCBjbGVhciB0aGUgZmxhZyBmcm9tIHRoZSBm
cmFtZS4gSWYgQGMgdHJ1ZSwgdGhlIGNvbnRhaW5lciB2aWV3Ci0gKiAgICAgICAgICAgICAgICAg
ICAgIGlzIGFsc28gbm90aWZpZWQgYW5kIGl0IHRoZW4gZW1pdHMgdGhlICJtaXhlZGNvbnRlbnQs
ZGlzcGxheWVkIiBzaWduYWwuCi0gKgotICogRW1pdHMgc2lnbmFsOiAibWl4ZWRjb250ZW50LGRp
c3BsYXllZCIgd2l0aCBubyBwYXJhbWV0ZXJzIHdoZW4gQHAgaGFzRGlzcGxheWVkIGlzIEBjIHRy
dWUuCi0gKi8KLXZvaWQgZXdrX2ZyYW1lX21peGVkX2NvbnRlbnRfZGlzcGxheWVkX3NldChFdmFz
X09iamVjdCogZXdrRnJhbWUsIGJvb2wgaGFzRGlzcGxheWVkKQotewotICAgIEVXS19GUkFNRV9T
RF9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBzbWFydERhdGEpOwotICAgIHNtYXJ0RGF0YS0+aGFz
RGlzcGxheWVkTWl4ZWRDb250ZW50ID0gaGFzRGlzcGxheWVkOwotCi0gICAgaWYgKGhhc0Rpc3Bs
YXllZCkgewotICAgICAgICBld2tfdmlld19taXhlZF9jb250ZW50X2Rpc3BsYXllZF9zZXQoc21h
cnREYXRhLT52aWV3LCB0cnVlKTsKLSAgICAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tf
Y2FsbChld2tGcmFtZSwgIm1peGVkY29udGVudCxkaXNwbGF5ZWQiLCAwKTsKLSAgICB9Ci19Ci0K
LS8qKgotICogQGludGVybmFsCi0gKiBEZWZpbmVzIHdoZXRoZXIgdGhlIGZyYW1lIGhhcyBydW4g
bWl4ZWQgY29udGVudC4KLSAqCi0gKiBXaGVuIGEgZnJhbWUgaGFzIHJ1biBtaXhlZCBjb250ZW50
LCB0aGUgY3VycmVudGx5IGxvYWRlZCBVUkkgaXMgc2VjdXJlIChIVFRQUykgYnV0IGl0IGhhcwot
ICogbG9hZGVkIGFuZCBydW4gYSByZXNvdXJjZSwgc3VjaCBhcyBhIHNjcmlwdCwgZnJvbSBhbiBp
bnNlY3VyZSAoSFRUUCkgc291cmNlLgotICoKLSAqIEBwYXJhbSBoYXNEaXNwbGF5ZWQgRG8gb3Ig
ZG8gbm90IGNsZWFyIHRoZSBmbGFnIGZyb20gdGhlIGZyYW1lLiBJZiBAYyB0cnVlLCB0aGUgY29u
dGFpbmVyIHZpZXcKLSAqICAgICAgICAgICAgICAgICAgICAgaXMgYWxzbyBub3RpZmllZCBhbmQg
aXQgdGhlbiBlbWl0cyB0aGUgIm1peGVkY29udGVudCxydW4iIHNpZ25hbC4KLSAqCi0gKiBFbWl0
cyBzaWduYWw6ICJtaXhlZGNvbnRlbnQscnVuIiB3aXRoIG5vIHBhcmFtZXRlcnMgd2hlbiBAcCBo
YXNSdW4gaXMgQGMgdHJ1ZS4KLSAqLwotdm9pZCBld2tfZnJhbWVfbWl4ZWRfY29udGVudF9ydW5f
c2V0KEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgYm9vbCBoYXNSdW4pCi17Ci0gICAgRVdLX0ZSQU1F
X1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0RGF0YSk7Ci0gICAgc21hcnREYXRhLT5o
YXNSdW5NaXhlZENvbnRlbnQgPSBoYXNSdW47Ci0KLSAgICBpZiAoaGFzUnVuKSB7Ci0gICAgICAg
IGV3a192aWV3X21peGVkX2NvbnRlbnRfcnVuX3NldChzbWFydERhdGEtPnZpZXcsIHRydWUpOwot
ICAgICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKGV3a0ZyYW1lLCAibWl4ZWRj
b250ZW50LHJ1biIsIDApOwotICAgIH0KLX0KLQotLyoqCi0gKiBAaW50ZXJuYWwKLSAqIFJlcG9y
dHMgdGhhdCByZWZsZWN0ZWQgWFNTIGlzIGVuY291bnRlcmVkIGluIHRoZSBwYWdlIGFuZCBzdXBw
cmVzc2VkLgotICoKLSAqIEBwYXJhbSB4c3NJbmZvIEluZm9ybWF0aW9uIHJlY2VpdmVkIGZyb20g
dGhlIFhTU0F1ZGl0b3Igd2hlbiBYU1MgaXMgCi0gKiBlbmNvdW50ZXJlZCBpbiB0aGUgcGFnZS4g
Ci0gKgotICogRW1pdHMgc2lnbmFsOiAieHNzLGRldGVjdGVkIiB3aXRoIHBvaW50ZXIgdG8gRXdr
X0ZyYW1lX1hzc19Ob3RpZmljYXRpb24uCi0gKi8KLXZvaWQgZXdrX2ZyYW1lX3hzc19kZXRlY3Rl
ZChFdmFzX09iamVjdCogZXdrRnJhbWUsIGNvbnN0IEV3a19GcmFtZV9Yc3NfTm90aWZpY2F0aW9u
KiB4c3NJbmZvKQotewotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdrRnJh
bWUsICJ4c3MsZGV0ZWN0ZWQiLCAodm9pZCopeHNzSW5mbyk7Ci19Ci0KLW5hbWVzcGFjZSBFV0tQ
cml2YXRlIHsKLQotdm9pZCBzZXRDb3JlRnJhbWUoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBXZWJD
b3JlOjpGcmFtZSogY29yZUZyYW1lKQotewotICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJO
KGV3a0ZyYW1lLCBzbWFydERhdGEpOwotICAgIHNtYXJ0RGF0YS0+ZnJhbWUgPSBjb3JlRnJhbWU7
Ci19Ci0KLVdlYkNvcmU6OkZyYW1lKiBjb3JlRnJhbWUoY29uc3QgRXZhc19PYmplY3QqIGV3a0Zy
YW1lKQotewotICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBzbWFydERh
dGEsIDApOwotICAgIHJldHVybiBzbWFydERhdGEtPmZyYW1lOwotfQotCi1FdmFzX09iamVjdCog
a2l0RnJhbWUoY29uc3QgV2ViQ29yZTo6RnJhbWUqIGNvcmVGcmFtZSkKLXsKLSAgICBpZiAoIWNv
cmVGcmFtZSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBXZWJDb3JlOjpGcmFtZUxvYWRlckNs
aWVudEVmbCogZnJhbWVMb2FkZXJDbGllbnQgPSBfZXdrX2ZyYW1lX2xvYWRlcl9lZmxfZ2V0KGNv
cmVGcmFtZSk7Ci0gICAgaWYgKCFmcmFtZUxvYWRlckNsaWVudCkKLSAgICAgICAgcmV0dXJuIDA7
Ci0KLSAgICByZXR1cm4gZnJhbWVMb2FkZXJDbGllbnQtPndlYkZyYW1lKCk7Ci19Ci0KLX0gLy8g
bmFtZXNwYWNlIEVXS1ByaXZhdGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9l
d2tfZnJhbWUuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggZTkwNzg0ZC4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2VmbC9ld2svZXdrX2ZyYW1lLmgKKysrIC9kZXYvbnVsbApAQCAtMSw5ODYgKzAsMCBAQAotLyoK
LSAgICBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBQcm9GVVNJT04gZW1iZWRkZWQgc3lzdGVtcwot
ICAgIENvcHlyaWdodCAoQykgMjAwOS0yMDEwIFNhbXN1bmcgRWxlY3Ryb25pY3MKLQotICAgIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKLSAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYwotICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgotICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLQotICAgIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
Ci0gICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKLSAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KLQotICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAgICBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICAg
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsCi0gICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0qLwotCi0vKioK
LSAqIEBmaWxlICAgIGV3a19mcmFtZS5oCi0gKiBAYnJpZWYgICBXZWJLaXQgZnJhbWUgc21hcnQg
b2JqZWN0LgotICoKLSAqIFRoaXMgb2JqZWN0IGlzIHRoZSBsb3cgbGV2ZWwgYWNjZXNzIHRvIFdl
YktpdC1FRkwgYnJvd3NlcgotICogY29tcG9uZW50LiBJdCByZXByZXNlbnRzIGJvdGggdGhlIG1h
aW4gYW5kIGludGVybmFsIGZyYW1lcyB0aGF0Ci0gKiBIVE1MIHBhZ2VzIGNvbnRhaW4uCi0gKgot
ICogRXZlcnkgZXdrX3ZpZXcgaGFzIGF0IGxlYXN0IG9uZSBmcmFtZSwgY2FsbGVkICJtYWluIGZy
YW1lIiBhbmQKLSAqIHJldHJpZXZlZCB3aXRoIGV3a192aWV3X2ZyYW1lX21haW5fZ2V0KCkuIE9u
ZSBjYW4gcmV0cmlldmUgZnJhbWUncwotICogb3duZXIgdmlldyB3aXRoIGV3a19mcmFtZV92aWV3
X2dldCgpLiBQYXJlbnQgZnJhbWUgY2FuIGJlIHJldHJpZXZlZAotICogd2l0aCBzdGFuZGFyZCBz
bWFydCBvYmplY3QncyBldmFzX29iamVjdF9zbWFydF9wYXJlbnRfZ2V0KCkuCi0gKiBDaGlsZHJl
biBjYW4gYmUgYWNjZXNzZWQgd2l0aCBld2tfZnJhbWVfY2hpbGRyZW5faXRlcmF0b3JfbmV3KCkg
b3IKLSAqIGV3a19mcmFtZV9jaGlsZF9maW5kKCkuCi0gKgotICogVGhlIGZvbGxvd2luZyBzaWdu
YWxzIChzZWUgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKCkpIGFyZSBlbWl0dGVkOgot
ICoKLSAqICAtICJjb250ZW50cyxzaXplLGNoYW5nZWQiLCBFdmFzX0Nvb3JkWzJdOiByZXBvcnRz
IGNvbnRlbnRzIHNpemUKLSAqICAgICB3ZXJlIGNoYW5nZWQgZHVlIG5ldyBsYXlvdXQsIHNjcmlw
dCBhY3Rpb25zIG9yIGFueSBvdGhlciBldmVudHMuCi0gKiAgLSAiZWRpdG9yY2xpZW50LGNvbnRl
bnRzLGNoYW5nZWQiLCB2b2lkOiByZXBvcnRzIHRoYXQgZWRpdG9yIGNsaWVudCdzCi0gKiAgICBj
b250ZW50cyB3ZXJlIGNoYW5nZWQKLSAqICAtICJpY29uLGNoYW5nZWQiLCB2b2lkOiBmcmFtZSBm
YXZpY29uIGNoYW5nZWQuCi0gKiAgLSAibG9hZCxjb21taXR0ZWQiLCB2b2lkOiByZXBvcnRzIGxv
YWQgY29tbWl0dGVkLgotICogIC0gImxvYWQsZG9jdW1lbnQsZmluaXNoZWQiLCB2b2lkOiBmcmFt
ZSBmaW5pc2hlZCBsb2FkaW5nIHRoZSBkb2N1bWVudC4KLSAqICAtICJsb2FkLGVycm9yIiwgY29u
c3QgRXdrX0ZyYW1lX0xvYWRfRXJyb3IqOiByZXBvcnRzIGxvYWQgZmFpbGVkCi0gKiAgICBhbmQg
aXQgZ2l2ZXMgYSBwb2ludGVyIHRvIHN0cnVjdHVyZSBkZWZpbmluZyB0aGUgZXJyb3IgYXMgYW4g
YXJndW1lbnQuCi0gKiAgLSAibG9hZCxmaW5pc2hlZCIsIGNvbnN0IEV3a19GcmFtZV9Mb2FkX0Vy
cm9yKjogcmVwb3J0cyBsb2FkCi0gKiAgICBmaW5pc2hlZCBhbmQgaXQgZ2l2ZXMgQGMgTlVMTCBv
biBzdWNjZXNzIG9yIHBvaW50ZXIgdG8KLSAqICAgIHN0cnVjdHVyZSBkZWZpbmluZyB0aGUgZXJy
b3IuCi0gKiAgLSAibG9hZCxyZXNvdXJjZSxmaW5pc2hlZCIsIHVuc2lnbmVkIGxvbmcqOiByZXBv
cnRzIHJlc291cmNlIGxvYWQgZmluaXNoZWQgYW5kIGl0IGdpdmVzCi0gKiAgICBhIHBvaW50ZXIg
dG8gaXRzIGlkZW50aWZpZXIuCi0gKiAgLSAibG9hZCxyZXNvdXJjZSxmYWlsZWQiLCBFd2tfRnJh
bWVfTG9hZF9FcnJvcio6IHJlcG9ydHMgcmVzb3VyY2UgbG9hZCBmYWlsdXJlIGFuZCBpdAotICog
ICAgZ2l2ZXMgYSBwb2ludGVyIHRvIHN0cnVjdHVyZSBkZWZpbmluZyB0aGUgZXJyb3IgYXMgYW4g
YXJndW1lbnQuCi0gKiAgLSAibG9hZCxmaXJzdGxheW91dCxmaW5pc2hlZCIsIHZvaWQ6IGZyYW1l
IGZpbmlzaGVkIGZpcnN0IGxheW91dC4KLSAqICAtICJsb2FkLG5vbmVtcHR5bGF5b3V0LGZpbmlz
aGVkIiwgdm9pZDogZnJhbWUgZmluaXNoZWQgZmlyc3QKLSAqICAgIG5vbi1lbXB0eSBsYXlvdXQu
Ci0gKiAgLSAibG9hZCxwcm9ncmVzcyIsIGRvdWJsZSo6IGxvYWQgcHJvZ3Jlc3MgaXMgY2hhbmdl
ZCAob3ZlcmFsbCB2YWx1ZQotICogICAgZnJvbSAwLjAgdG8gMS4wLCBjb25uZWN0IHRvIGluZGl2
aWR1YWwgZnJhbWVzIGZvciBmaW5lIGdyYWluZWQpLgotICogIC0gImxvYWQscHJvdmlzaW9uYWwi
LCB2b2lkOiBmcmFtZSBzdGFydGVkIHByb3Zpc2lvbmFsIGxvYWQuCi0gKiAgLSAibG9hZCxwcm92
aXNpb25hbCxmYWlsZWQiLCBFd2tfRnJhbWVfTG9hZF9FcnJvcio6IGZyYW1lIHByb3Zpc2lvbmFs
IGxvYWQgZmFpbGVkLgotICogIC0gImxvYWQsc3RhcnRlZCIsIHZvaWQ6IGZyYW1lIHN0YXJ0ZWQg
bG9hZGluZyB0aGUgZG9jdW1lbnQuCi0gKiAgLSAibWl4ZWRjb250ZW50LGRpc3BsYXllZCIsIHZv
aWQ6IGZyYW1lIGhhcyBsb2FkZWQgYW5kIGRpc3BsYXllZCBtaXhlZCBjb250ZW50LgotICogIC0g
Im1peGVkY29udGVudCxydW4iLCB2b2lkOiBmcmFtZSBoYXMgbG9hZGVkIGFuZCBydW4gbWl4ZWQg
Y29udGVudC4KLSAqICAtICJuYXZpZ2F0aW9uLGZpcnN0Iiwgdm9pZDogZmlyc3QgbmF2aWdhdGlv
biB3YXMgb2NjdXJyZWQuCi0gKiAgLSAicmVkaXJlY3QsY2FuY2VsbGVkIiwgdm9pZDogY2xpZW50
IHJlZGlyZWN0IHdhcyBjYW5jZWxsZWQuCi0gKiAgLSAicmVkaXJlY3QsbG9hZCxwcm92aXNpb25h
bCIsIHZvaWQ6IHJlY2VpdmVkIHNlcnZlciByZWRpcmVjdCBmb3IgcHJvdmlzaW9uYWwgbG9hZC4K
LSAqICAtICJyZWRpcmVjdCxyZXF1ZXN0ZWQiLCBjb25zdCBjaGFyKjogdXJsIG9mIHRoZSBjbGll
bnQgcmVkaXJlY3QgdGhhdCB3aWxsIGJlIHBlcmZvcm1lZC4KLSAqICAtICJyZXNvdXJjZSxyZXF1
ZXN0LG5ldyIsIEV3a19GcmFtZV9SZXNvdXJjZV9SZXF1ZXN0KjogcmVwb3J0cyB0aGF0Ci0gKiAg
ICB0aGVyZSdzIGEgbmV3IHJlc291cmNlIHJlcXVlc3QuCi0gKiAgLSAicmVzb3VyY2UscmVxdWVz
dCx3aWxsc2VuZCIsIEV3a19GcmFtZV9SZXNvdXJjZV9NZXNzYWdlcyo6IGEgcmVzb3VyY2Ugd2ls
bCBiZSByZXF1ZXN0ZWQuCi0gKiAgICBhbmQgdGhlIHBvc3NpYmxlIHJlZGlyZWN0IHJlc3BvbnNl
LgotICogIC0gInJlc291cmNlLHJlc3BvbnNlLHJlY2VpdmVkIiwgRXdrX0ZyYW1lX1Jlc291cmNl
X1Jlc3BvbnNlKjogcmVwb3J0cyB0aGF0IGEgcmVzcG9uc2UKLSAqICAgIHRvIGEgcmVzb3VyY2Ug
cmVxdWVzdCB3YXMgcmVjZWl2ZWQuCi0gKiAgLSAic3RhdGUsc2F2ZSIsIHZvaWQ6IGZyYW1lJ3Mg
c3RhdGUgd2lsbCBiZSBzYXZlZCBhcyBhIGhpc3RvcnkgaXRlbS4KLSAqICAtICJ0aXRsZSxjaGFu
Z2VkIiwgRXdrX1RleHRfV2l0aF9EaXJlY3Rpb24qOiB0aXRsZSBvZiB0aGUgbWFpbiBmcmFtZSB3
YXMgY2hhbmdlZC4KLSAqICAtICJ1cmksY2hhbmdlZCIsIGNvbnN0IGNoYXIqOiB1cmkgb2YgdGhl
IG1haW4gZnJhbWUgd2FzIGNoYW5nZWQuCi0gKiAgLSAieHNzLGRldGVjdGVkIiwgRXdrX0ZyYW1l
X1hzc19Ob3RpZmljYXRpb24qOiByZWZsZWN0ZWQgWFNTIGlzIGVuY291bnRlcmVkIGluIHRoZSBw
YWdlIGFuZCBzdXBwcmVzc2VkLgotICovCi0KLSNpZm5kZWYgZXdrX2ZyYW1lX2gKLSNkZWZpbmUg
ZXdrX2ZyYW1lX2gKLQotI2luY2x1ZGUgImV3a19zZWN1cml0eV9vcmlnaW4uaCIKLQotI2luY2x1
ZGUgPEV2YXMuaD4KLQotI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gIkMiIHsKLSNlbmRpZgot
Ci0vLy8gQ3JlYXRlcyBhIHR5cGUgbmFtZSBmb3IgX0V3a19GcmFtZV9Mb2FkX0Vycm9yLgotdHlw
ZWRlZiBzdHJ1Y3QgX0V3a19GcmFtZV9Mb2FkX0Vycm9yIEV3a19GcmFtZV9Mb2FkX0Vycm9yOwot
LyoqCi0gKiBAYnJpZWYgICBTdHJ1Y3R1cmUgdXNlZCB0byByZXBvcnQgbG9hZCBlcnJvcnMuCi0g
KgotICogTG9hZCBlcnJvcnMgYXJlIHJlcG9ydGVkIGFzIHNpZ25hbCBieSBld2tfdmlldy4gQWxs
IHRoZSBzdHJpbmdzIGFyZQotICogdGVtcG9yYXJ5IHJlZmVyZW5jZXMgYW5kIHNob3VsZCBAYiBu
b3QgYmUgdXNlZCBhZnRlciB0aGUgc2lnbmFsCi0gKiBjYWxsYmFjayByZXR1cm5zLiBJZiBpdCdz
IHJlcXVpcmVkLCBtYWtlIGNvcGllcyB3aXRoIHN0cmR1cCgpIG9yCi0gKiBlaW5hX3N0cmluZ3No
YXJlX2FkZCgpICh0aGV5IGFyZSBub3QgZXZlbiBndWFyYW50ZWVkIHRvIGJlCi0gKiBzdHJpbmdz
aGFyZWQsIHNvIG11c3QgdXNlIGVpbmFfc3RyaW5nc2hhcmVfYWRkKCkgYW5kIG5vdAotICogZWlu
YV9zdHJpbmdzaGFyZV9yZWYoKSkuCi0gKi8KLXN0cnVjdCBfRXdrX0ZyYW1lX0xvYWRfRXJyb3Ig
ewotICAgIGludCBjb2RlOyAvKio8IG51bWVyaWMgZXJyb3IgY29kZSAqLwotICAgIEVpbmFfQm9v
bCBpc19jYW5jZWxsYXRpb247IC8qKjwgaWYgbG9hZCBmYWlsZWQgYmVjYXVzZSBpdCB3YXMgY2Fu
Y2VsZWQgKi8KLSAgICBjb25zdCBjaGFyICpkb21haW47IC8qKjwgZXJyb3IgZG9tYWluIG5hbWUg
Ki8KLSAgICBjb25zdCBjaGFyICpkZXNjcmlwdGlvbjsgLyoqPCBlcnJvciBkZXNjcmlwdGlvbiBh
bHJlYWR5IGxvY2FsaXplZCAqLwotICAgIGNvbnN0IGNoYXIgKmZhaWxpbmdfdXJsOyAvKio8IHRo
ZSB1cmwgdGhhdCBmYWlsZWQgdG8gbG9hZCAqLwotICAgIHVuc2lnbmVkIGxvbmcgcmVzb3VyY2Vf
aWRlbnRpZmllcjsgLyoqPCBpZGVudGlmaWVyIG9mIHJlc291cmNlICovCi0gICAgRXZhc19PYmpl
Y3QgKmZyYW1lOyAvKio8IGZyYW1lIHdoZXJlIHRoZSBmYWlsdXJlIGhhcHBlbmVkICovCi19Owot
Ci0vLy8gQ3JlYXRlcyBhIHR5cGUgbmFtZSBmb3IgX0V3a19GcmFtZV9SZXNvdXJjZV9SZXF1ZXN0
LgotdHlwZWRlZiBzdHJ1Y3QgX0V3a19GcmFtZV9SZXNvdXJjZV9SZXF1ZXN0IEV3a19GcmFtZV9S
ZXNvdXJjZV9SZXF1ZXN0OwotLyoqCi0gKiBAYnJpZWYgICBTdHJ1Y3R1cmUgY29udGFpbmluZyBk
ZXRhaWxzIGFib3V0IGEgcmVzb3VyY2UgcmVxdWVzdC4KLSAqCi0gKiBEZXRhaWxzIGdpdmVuIGJl
Zm9yZSBhIHJlc291cmNlIGlzIGxvYWRlZCBvbiBhIGdpdmVuIGZyYW1lLiBJdCdzIHVzZWQgaW4K
LSAqIEV3a19GcmFtZV9SZXNvdXJjZV9NZXNzYWdlcyB0byBpbmZvcm0gYWJvdXQgdGhlIGRldGFp
bHMgb2YgYSByZXNvdXJjZSByZXF1ZXN0LgotICovCi1zdHJ1Y3QgX0V3a19GcmFtZV9SZXNvdXJj
ZV9SZXF1ZXN0IHsKLSAgICBjb25zdCBjaGFyICp1cmw7IC8qKjwgdXJsIG9mIHRoZSByZXNvdXJj
ZSAqLwotICAgIGNvbnN0IGNoYXIgKmZpcnN0X3BhcnR5OyAvKio8IGZpcnN0IHBhcnR5IGZvciBj
b29raWVzLCBjYW4gbm90IGJlIGNoYW5nZWQgKi8KLSAgICBjb25zdCBjaGFyICpodHRwX21ldGhv
ZDsgLyoqPCBodHRwIG1ldGhvZCwgY2FuIG5vdCBiZSBjaGFuZ2VkICovCi0gICAgY29uc3QgdW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyOyAvKio8IGlkZW50aWZpZXIgb2YgcmVzb3VyY2UsIGNhbiBu
b3QgYmUgY2hhbmdlZCAqLwotICAgIEV2YXNfT2JqZWN0ICpmcmFtZTsgLyoqPCBmcmFtZSB3aGVy
ZSB0aGUgcmVzb3VyY2UgaXMgcmVxdWVzdGVkICovCi0gICAgRWluYV9Cb29sIGlzX21haW5fZnJh
bWVfcmVxdWVzdDsgLyoqIDwgaW5kaWNhdGVzIGlmIHRoZSByZXF1ZXN0IGlzIGZvciB0aGUgbWFp
biBmcmFtZSAqLwotfTsKLQotLy8vIENyZWF0ZXMgYSB0eXBlIG5hbWUgZm9yIF9Fd2tfRnJhbWVf
UmVzb3VyY2VfUmVzcG9uc2UuCi10eXBlZGVmIHN0cnVjdCBfRXdrX0ZyYW1lX1Jlc291cmNlX1Jl
c3BvbnNlIEV3a19GcmFtZV9SZXNvdXJjZV9SZXNwb25zZTsKLQotLyoqCi0gKiBAYnJpZWYgU3Ry
dWN0dXJlIGNvbnRhaW5pbmcgZGV0YWlscyBhYm91dCBhIHJlc3BvbnNlIHRvIGEgcmVzb3VyY2Ug
cmVxdWVzdC4KLSAqCi0gKiBEZXRhaWxzIGdpdmVuIGluIHRoZSByZXNwb25zZSB0byBhIHJlc291
cmNlIHJlcXVlc3QuIEl0J3MgdXNlZCBieQotICogZXdrX2ZyYW1lX3Jlc3BvbnNlX3JlY2VpdmVk
KCkgdG8gaW5mb3JtIGFib3V0IHRoZSBkZXRhaWxzIG9mIGEgcmVzcG9uc2UuCi0gKi8KLXN0cnVj
dCBfRXdrX0ZyYW1lX1Jlc291cmNlX1Jlc3BvbnNlIHsKLSAgICBjb25zdCBjaGFyICp1cmw7IC8q
KjwgdXJsIG9mIHRoZSByZXNvdXJjZSAqLwotICAgIGludCBzdGF0dXNfY29kZTsgLyoqPCBodHRw
IHN0YXR1cyBjb2RlICovCi0gICAgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyOyAvKio8IGlkZW50
aWZpZXIgb2YgcmVzb3VyY2UgKi8KLSAgICBjb25zdCBjaGFyICptaW1lX3R5cGU7IC8qKjwgTUlN
RSB0eXBlIG9mIHRoZSByZXNvdXJjZSAqLwotfTsKLQotLy8vIENyZWF0ZXMgYSB0eXBlIG5hbWUg
Zm9yIF9Fd2tfRnJhbWVfUmVzb3VyY2VfTWVzc2FnZXMuCi10eXBlZGVmIHN0cnVjdCBfRXdrX0Zy
YW1lX1Jlc291cmNlX01lc3NhZ2VzIEV3a19GcmFtZV9SZXNvdXJjZV9NZXNzYWdlczsKLQotc3Ry
dWN0IF9Fd2tfRnJhbWVfUmVzb3VyY2VfTWVzc2FnZXMgewotICAgIEV3a19GcmFtZV9SZXNvdXJj
ZV9SZXF1ZXN0ICpyZXF1ZXN0OyAvKio8IHJlc291cmNlIHJlcXVlc3QgKi8KLSAgICBFd2tfRnJh
bWVfUmVzb3VyY2VfUmVzcG9uc2UgKnJlZGlyZWN0X3Jlc3BvbnNlOyAvKio8IHJlZGlyZWN0IHJl
c3BvbnNlLCBjYW4gbm90IGJlIGNoYW5nZWQgKi8KLX07Ci0KLS8vLyBFbnVtIGNvbnRhaW5pbmcg
dGV4dCBkaXJlY3Rpb25hbGl0eSB2YWx1ZXMuCi10eXBlZGVmIGVudW0gewotICAgIEVXS19URVhU
X0RJUkVDVElPTl9ERUZBVUxULCAvKio8IE5hdHVyYWwgd3JpdGluZyBkaXJlY3Rpb24gKCJpbmhl
cml0IikgKi8KLSAgICBFV0tfVEVYVF9ESVJFQ1RJT05fTEVGVF9UT19SSUdIVCwKLSAgICBFV0tf
VEVYVF9ESVJFQ1RJT05fUklHSFRfVE9fTEVGVAotfSBFd2tfVGV4dF9EaXJlY3Rpb247Ci0KLS8v
LyBDcmVhdGVzIGEgdHlwZSBuYW1lIGZvciBFd2tfVGV4dF9XaXRoX0RpcmVjdGlvbi4KLXR5cGVk
ZWYgc3RydWN0IF9Fd2tfVGV4dF9XaXRoX0RpcmVjdGlvbiBFd2tfVGV4dF9XaXRoX0RpcmVjdGlv
bjsKLQotc3RydWN0IF9Fd2tfVGV4dF9XaXRoX0RpcmVjdGlvbiB7Ci0gICAgY29uc3QgY2hhciAq
c3RyaW5nOwotICAgIEV3a19UZXh0X0RpcmVjdGlvbiBkaXJlY3Rpb247Ci19OwotCi0vLy8gQ3Jl
YXRlcyBhIHR5cGUgbmFtZSBmb3IgRXdrX0ZyYW1lX1hzc19Ob3RpZmljYXRpb24uCi10eXBlZGVm
IHN0cnVjdCBfRXdrX0ZyYW1lX1hzc19Ob3RpZmljYXRpb24gRXdrX0ZyYW1lX1hzc19Ob3RpZmlj
YXRpb247Ci0KLS8qKgotICogQGJyaWVmICAgU3RydWN0dXJlIHVzZWQgdG8gcmVwb3J0IHJlZmxl
Y3RlZCBYU1MgaXMgZW5jb3VudGVyZWQgaW4gdGhlIHBhZ2UuCi0gKgotICogVGhpcyBzdHJ1Y3R1
cmUgY29udGFpbnMgaW5mb3JtYXRpb24gcmVjZWl2ZWQgZnJvbSB0aGUgWFNTQXVkaXRvciB3aGVu
IHJlZmxlY3RlZCBYU1MgCi0gKiBpcyBlbmNvdW50ZXJlZCBpbiB0aGUgcGFnZS4gVGhlIHN0cmlu
ZyBpcyB0ZW1wb3JhcnkgcmVmZXJlbmNlIGFuZCBzaG91bGQgQGIgbm90IAotICogYmUgdXNlZCBh
ZnRlciB0aGUgc2lnbmFsIGNhbGxiYWNrIHJldHVybnMuIElmIGl0J3MgcmVxdWlyZWQsIG1ha2Ug
YSBjb3B5IG9mIGl0LgotICovCi1zdHJ1Y3QgX0V3a19GcmFtZV9Yc3NfTm90aWZpY2F0aW9uIHsK
LSAgICBjb25zdCBjaGFyICppbnNlY3VyZV91cmw7IC8qKjwgaW5zZWN1cmUgdXJsIG9mIHRoZSBk
b2N1bWVudCAqLwotICAgIEVpbmFfQm9vbCBpc19lbnRpcmVfcGFnZV9ibG9ja2VkOyAvKiogPCBp
bmRpY2F0ZXMgaWYgdGhlIGVudGlyZSBwYWdlIHdhcyBibG9ja2VkIGJ5IFhTU0F1ZGl0b3IgKi8K
LX07Ci0KLS8vLyBFbnVtIGNvbnRhaW5pbmcgaGl0IHRlc3QgZGF0YSB0eXBlcwotdHlwZWRlZiBl
bnVtIHsKLSAgICBFV0tfSElUX1RFU1RfUkVTVUxUX0NPTlRFWFRfRE9DVU1FTlQgPSAxIDw8IDEs
Ci0gICAgRVdLX0hJVF9URVNUX1JFU1VMVF9DT05URVhUX0xJTksgPSAxIDw8IDIsCi0gICAgRVdL
X0hJVF9URVNUX1JFU1VMVF9DT05URVhUX0lNQUdFID0gMSA8PCAzLAotICAgIEVXS19ISVRfVEVT
VF9SRVNVTFRfQ09OVEVYVF9NRURJQSA9IDEgPDwgNCwKLSAgICBFV0tfSElUX1RFU1RfUkVTVUxU
X0NPTlRFWFRfU0VMRUNUSU9OID0gMSA8PCA1LAotICAgIEVXS19ISVRfVEVTVF9SRVNVTFRfQ09O
VEVYVF9FRElUQUJMRSA9IDEgPDwgNgotfSBFd2tfSGl0X1Rlc3RfUmVzdWx0X0NvbnRleHQ7Ci0K
LS8vLyBFbnVtIGNvbnRhaW5pbmcgbmF2aWdhdGlvbiB0eXBlcwotdHlwZWRlZiBlbnVtICB7Ci0g
ICAgRVdLX05BVklHQVRJT05fVFlQRV9MSU5LX0NMSUNLRUQsCi0gICAgRVdLX05BVklHQVRJT05f
VFlQRV9GT1JNX1NVQk1JVFRFRCwKLSAgICBFV0tfTkFWSUdBVElPTl9UWVBFX0JBQ0tfRk9SV0FS
RCwKLSAgICBFV0tfTkFWSUdBVElPTl9UWVBFX1JFTE9BRCwKLSAgICBFV0tfTkFWSUdBVElPTl9U
WVBFX0ZPUk1fUkVTVUJNSVRURUQsCi0gICAgRVdLX05BVklHQVRJT05fVFlQRV9PVEhFUgotfSBF
d2tfTmF2aWdhdGlvbl9UeXBlOwotCi0vLy8gQ3JlYXRlcyBhIHR5cGUgbmFtZSBmb3IgX0V3a19I
aXRfVGVzdC4KLXR5cGVkZWYgc3RydWN0IF9Fd2tfSGl0X1Rlc3QgRXdrX0hpdF9UZXN0OwotLy8v
IFN0cnVjdHVyZSB1c2VkIHRvIHJlcG9ydCBoaXQgdGVzdCByZXN1bHQuCi1zdHJ1Y3QgX0V3a19I
aXRfVGVzdCB7Ci0gICAgaW50IHg7IC8qKjwgdGhlIGhvcml6b250YWwgcG9zaXRpb24gb2YgdGhl
IGhpdCB0ZXN0ICovCi0gICAgaW50IHk7IC8qKjwgdGhlIHZlcnRpY2FsIHBvc2l0aW9uIG9mIHRo
ZSBoaXQgdGVzdCAqLwotICAgIHN0cnVjdCB7Ci0gICAgICAgIGludCB4LCB5LCB3LCBoOwotICAg
IH0gYm91bmRpbmdfYm94OyAvKio8IERFUFJFQ0FURUQsIHNlZSBld2tfZnJhbWVfaGl0X3Rlc3Rf
bmV3KCkgKi8KLSAgICBFd2tfVGV4dF9XaXRoX0RpcmVjdGlvbiB0aXRsZTsgLyoqPCB0aXRsZSBv
ZiB0aGUgZWxlbWVudCAqLwotICAgIGNvbnN0IGNoYXIgKmFsdGVybmF0ZV90ZXh0OyAvKio8IHRo
ZSBhbHRlcm5hdGUgdGV4dCBmb3IgaW1hZ2UsIGFyZWEsIGlucHV0IGFuZCBhcHBsZXQgKi8KLSAg
ICBFdmFzX09iamVjdCAqZnJhbWU7IC8qKjwgdGhlIHBvaW50ZXIgdG8gZnJhbWUgd2hlcmUgaGl0
IHRlc3Qgd2FzIHJlcXVlc3RlZCAqLwotICAgIHN0cnVjdCB7Ci0gICAgICAgIGNvbnN0IGNoYXIg
KnRleHQ7IC8qKjwgdGhlIHRleHQgb2YgdGhlIGxpbmsgKi8KLSAgICAgICAgY29uc3QgY2hhciAq
dXJsOyAvKio8IFVSTCBvZiB0aGUgbGluayAqLwotICAgICAgICBjb25zdCBjaGFyICp0aXRsZTsg
LyoqPCB0aGUgdGl0bGUgb2YgbGluayAqLwotICAgICAgICBFdmFzX09iamVjdCAqdGFyZ2V0X2Zy
YW1lOwotICAgIH0gbGluazsKLSAgICBjb25zdCBjaGFyICppbWFnZV91cmk7Ci0gICAgY29uc3Qg
Y2hhciAqbWVkaWFfdXJpOwotCi0gICAgRXdrX0hpdF9UZXN0X1Jlc3VsdF9Db250ZXh0IGNvbnRl
eHQ7Ci19OwotCi0vLy8gUmVwcmVzZW50cyBhY3Rpb25zIG9mIHRvdWNoIGV2ZW50cy4KLXR5cGVk
ZWYgZW51bSB7Ci0gICAgRVdLX1RPVUNIX1NUQVJULAotICAgIEVXS19UT1VDSF9NT1ZFLAotICAg
IEVXS19UT1VDSF9FTkQsCi0gICAgRVdLX1RPVUNIX0NBTkNFTAotfSBFd2tfVG91Y2hfRXZlbnRf
VHlwZTsKLQotLy8vIENyZWF0ZXMgYSB0eXBlIG5hbWUgZm9yIF9Fd2tfVG91Y2hfUG9pbnQuCi10
eXBlZGVmIHN0cnVjdCBfRXdrX1RvdWNoX1BvaW50IEV3a19Ub3VjaF9Qb2ludDsKLS8vLyBSZXBy
ZXNlbnRzIGEgdG91Y2ggcG9pbnQuCi1zdHJ1Y3QgX0V3a19Ub3VjaF9Qb2ludCB7Ci0gICAgaW50
IGlkOyAvKio8IGlkZW50aWZpZXIgb2YgdGhlIHRvdWNoIGV2ZW50ICovCi0gICAgaW50IHg7IC8q
KjwgdGhlIGhvcml6b250YWwgcG9zaXRpb24gb2YgdGhlIHRvdWNoIGV2ZW50ICovCi0gICAgaW50
IHk7IC8qKjwgdGhlIGhvcml6b250YWwgcG9zaXRpb24gb2YgdGhlIHRvdWNoIGV2ZW50ICovCi0g
ICAgRXZhc19Ub3VjaF9Qb2ludF9TdGF0ZSBzdGF0ZTsgLyoqPCBzdGF0ZSBvZiB0aGUgdG91Y2gg
ZXZlbnQgKi8KLX07Ci0KLXR5cGVkZWYgZW51bSB7Ci0gICAgRVdLX1RFWFRfU0VMRUNUSU9OX05P
TkUsCi0gICAgRVdLX1RFWFRfU0VMRUNUSU9OX0NBUkVULAotICAgIEVXS19URVhUX1NFTEVDVElP
Tl9SQU5HRQotfSBFd2tfVGV4dF9TZWxlY3Rpb25fVHlwZTsKLQotLyoqCi0gKiBSZXByZXNlbnRz
IHRoZSB2YWxpZGl0eSBvZiBhIFguNTA5IGNlcnRpZmljYXRlIHJlbGF0ZWQgdG8gdGhlIGN1cnJl
bnQgZnJhbWUuCi0gKgotICogQSBjZXJ0aWZpY2F0ZSBpcyBjb25zaWRlcmVkIHVudHJ1c3RlZCB3
aGVuIGFueSBwcm9ibGVtIGlzIGZvdW5kIGluIGl0OiBpdCBtYXkgaGF2ZQotICogZXhwaXJlZCwg
dGhlIGNlcnRpZmljYXRlJ3MgQ29tbW9uIE5hbWUgZG9lcyBub3QgbWF0Y2ggdGhlIGN1cnJlbnQg
aG9zdCwgdGhlIGNlcnRpZmljYXRlCi0gKiBkb2VzIG5vdCB2YWxpZGF0ZSBhZ2FpbnN0IHRoZSBj
dXJyZW50IHNldCBvZiByb290IENBIGNlcnRpZmljYXRlcyBldGMuCi0gKgotICogQHNhIGV3a19m
cmFtZV9jZXJ0aWZpY2F0ZV9zdGF0dXNfZ2V0LCBld2tfbmV0d29ya190bHNfY2FfY2VydGlmaWNh
dGVzX3BhdGhfc2V0Ci0gKi8KLXR5cGVkZWYgZW51bSB7Ci0gICAgRVdLX0NFUlRJRklDQVRFX1NU
QVRVU19OT19DRVJUSUZJQ0FURSA9IDEgPDwgMSwgLyoqPCBObyBjZXJ0aWZpY2F0ZSBwcm92aWRl
ZCAobm9uLUhUVFBTIGNvbm5lY3Rpb24pLiAqLwotICAgIEVXS19DRVJUSUZJQ0FURV9TVEFUVVNf
VU5UUlVTVEVEID0gMSA8PCAyLCAvKio8IFRoZSBjZXJ0aWZpY2F0ZSBwcm92aWRlZCBpcyBub3Qg
dHJ1c3RlZC4gKi8KLSAgICBFV0tfQ0VSVElGSUNBVEVfU1RBVFVTX1RSVVNURUQgPSAxIDw8IDMg
LyoqPCBUaGUgY2VydGlmaWNhdGUgaXMgdmFsaWQgYW5kIGZ1bGx5IHRydXN0ZWQuICovCi19IEV3
a19DZXJ0aWZpY2F0ZV9TdGF0dXM7Ci0KLS8qKgotICogUmV0cmlldmVzIHRoZSBld2tfdmlldyBv
YmplY3QgdGhhdCBvd25zIHRoaXMgZnJhbWUuCi0gKgotICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0
IHRvIGdldCB2aWV3IG9iamVjdAotICoKLSAqIEByZXR1cm4gdmlldyBvYmplY3Qgb3IgQGMgTlVM
TCBvbiBmYWlsdXJlCi0gKi8KLUVBUEkgRXZhc19PYmplY3QgKmV3a19mcmFtZV92aWV3X2dldChj
b25zdCBFdmFzX09iamVjdCAqbyk7Ci0KLS8qKgotICogUmV0cmlldmVzIHRoZSBFd2tfU2VjdXJp
dHlfT3JpZ2luIG9mIHRoaXMgZnJhbWUuCi0gKgotICogVGhlIHJldHVybmVkIG9iamVjdCBzaG91
bGQgYmUgZnJlZWQgYnkgZXdrX3NlY3VyaXR5X29yaWdpbl9mcmVlKCkuCi0gKgotICogQHBhcmFt
IG8gZnJhbWUgb2JqZWN0IHRvIGdldCB0aGUgc2VjdXJpdHkgb3JpZ2luCi0gKgotICogQHJldHVy
biBzZWN1cml0eSBvcmlnaW4gb2JqZWN0Ci0gKi8KLUVBUEkgRXdrX1NlY3VyaXR5X09yaWdpbiAq
ZXdrX2ZyYW1lX3NlY3VyaXR5X29yaWdpbl9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOwotCi0v
KioKLSAqIFJldHVybnMgYSBuZXcgaXRlcmF0b3Igb3ZlciBhbGwgZGlyZWN0IGNoaWxkcmVuIGZy
YW1lcy4KLSAqCi0gKiBLZWVwIGZyYW1lIG9iamVjdCBpbnRhY3Qgd2hpbGUgaXRlcmF0aW9uIGhh
cHBlbnMgb3RoZXJ3aXNlIGZyYW1lCi0gKiBtYXkgYmUgZGVzdHJveWVkIHdoaWxlIGl0ZXJhdGVk
LgotICoKLSAqIEl0ZXJhdGlvbiByZXN1bHRzIGFyZSBFdmFzX09iamVjdCosIHNvIGdpdmUgZWlu
YV9pdGVyYXRvcl9uZXh0KCkgYQotICogcG9pbnRlciB0byBpdC4KLSAqCi0gKiBSZXR1cm5lZCBp
dGVyYXRvciBzaG91bGQgYmUgZnJlZWQgYnkgZWluYV9pdGVyYXRvcl9mcmVlKCkuCi0gKgotICog
QHBhcmFtIG8gZnJhbWUgb2JqZWN0IHRvIGNyZWF0ZSB0aGUgaXRlcmF0b3IKLSAqCi0gKiBAcmV0
dXJuIGEgbmV3bHkgYWxsb2NhdGVkIGl0ZXJhdG9yIG9uIHN1Y2Vzcywgb3IgQGMgTlVMTCBpZiBu
b3QgcG9zc2libGUgdG8KLSAqICAgICAgY3JlYXRlIHRoZSBpdGVyYXRvcgotICovCi1FQVBJIEVp
bmFfSXRlcmF0b3IgKmV3a19mcmFtZV9jaGlsZHJlbl9pdGVyYXRvcl9uZXcoRXZhc19PYmplY3Qg
Km8pOwotCi0vKioKLSAqIEZpbmRzIGEgY2hpbGQgZnJhbWUgYnkgaXRzIG5hbWUsIHJlY3Vyc2l2
ZWx5LgotICoKLSAqIEZvciBwcmUtZGVmaW5lZCBuYW1lcywgcmV0dXJucyBAYSBvIGlmIEBhIG5h
bWUgaXMgIl9zZWxmIiBvcgotICogIl9jdXJyZW50IiwgcmV0dXJucyBAYSBvJ3MgcGFyZW50IGZy
YW1lIGlmIEBhIG5hbWUgaXMgIl9wYXJlbnQiLAotICogYW5kIHJldHVybnMgdGhlIG1haW4gZnJh
bWUgaWYgQGEgbmFtZSBpcyAiX3RvcCIuIEFsc28gcmV0dXJucyBAYSBvCi0gKiBpZiBpdCBpcyB0
aGUgbWFpbiBmcmFtZSBhbmQgQGEgbmFtZSBpcyBlaXRoZXIgIl9wYXJlbnQiIG9yCi0gKiAiX3Rv
cCIuIEZvciBvdGhlciBuYW1lcywgdGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBmaXJzdCBmcmFt
ZSB0aGF0Ci0gKiBtYXRjaGVzIEBhIG5hbWUuIFRoaXMgZnVuY3Rpb24gc2VhcmNoZXMgQGEgbyBh
bmQgaXRzIGRlc2NlbmRlbnRzCi0gKiBmaXJzdCwgdGhlbiBAYSBvJ3MgcGFyZW50IGFuZCBpdHMg
Y2hpbGRyZW4gbW92aW5nIHVwIHRoZSBoaWVyYXJjaHkKLSAqIHVudGlsIGEgbWF0Y2ggaXMgZm91
bmQuIElmIG5vIG1hdGNoIGlzIGZvdW5kIGluIEBhIG8ncyBoaWVyYXJjaHksCi0gKiB0aGlzIGZ1
bmN0aW9uIHdpbGwgc2VhcmNoIGZvciBhIG1hdGNoaW5nIGZyYW1lIGluIG90aGVyIG1haW4gZnJh
bWUKLSAqIGhpZXJhcmNoaWVzLgotICoKLSAqIEBwYXJhbSBvIGZyYW1lIG9iamVjdCB0byBmaW5k
IGEgY2hpbGQgZnJhbWUKLSAqIEBwYXJhbSBuYW1lIGNoaWxkIGZyYW1lIG5hbWUKLSAqCi0gKiBA
cmV0dXJuIGNoaWxkIGZyYW1lIG9mIHRoZSBnaXZlbiBmcmFtZSwgb3IgQGMgTlVMTCBpZiB0aGUg
dGhlIGNoaWxkIHdhc24ndCBmb3VuZAotICovCi1FQVBJIEV2YXNfT2JqZWN0ICAgKmV3a19mcmFt
ZV9jaGlsZF9maW5kKEV2YXNfT2JqZWN0ICpvLCBjb25zdCBjaGFyICpuYW1lKTsKLQotLyoqCi0g
KiBBc2tzIHRoZSBtYWluIGZyYW1lIHRvIGxvYWQgdGhlIGdpdmVuIFVSSS4KLSAqCi0gKiBAcGFy
YW0gbyBmcmFtZSBvYmplY3QgdG8gbG9hZCB1cmkKLSAqIEBwYXJhbSB1cmkgdW5pZm9ybSByZXNv
dXJjZSBpZGVudGlmaWVyIHRvIGxvYWQKLSAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBz
dWNjZXNzLCBvciBAYyBFSU5BX0ZBTFNFIG9uIGZhaWx1cmUKLSAqLwotRUFQSSBFaW5hX0Jvb2wg
ICAgZXdrX2ZyYW1lX3VyaV9zZXQoRXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKnVyaSk7Ci0K
LS8qKgotICogR2V0cyB0aGUgdXJpIG9mIHRoaXMgZnJhbWUuCi0gKgotICogSXQgcmV0dXJucyBh
biBpbnRlcm5hbCBzdHJpbmcgYW5kIHNob3VsZCBub3QKLSAqIGJlIG1vZGlmaWVkLiBUaGUgc3Ry
aW5nIGlzIGd1YXJhbnRlZWQgdG8gYmUgc3RyaW5nc2hhcmVkLgotICoKLSAqIEBwYXJhbSBvIGZy
YW1lIG9iamVjdCB0byBnZXQgdXJpCi0gKgotICogQHJldHVybiBmcmFtZSB1cmkgb24gc3VjY2Vz
cyBvciBAYyBOVUxMIG9uIGZhaWx1cmUKLSAqLwotRUFQSSBjb25zdCBjaGFyICAqZXdrX2ZyYW1l
X3VyaV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOwotCi0vKioKLSAqIEdldHMgdGhlIHRpdGxl
IG9mIHRoaXMgZnJhbWUuCi0gKgotICogSXQgcmV0dXJucyBhbiBpbnRlcm5hbCBzdHJpbmcgYW5k
IHNob3VsZCBub3QKLSAqIGJlIG1vZGlmaWVkLiBUaGUgc3RyaW5nIGlzIGd1YXJhbnRlZWQgdG8g
YmUgc3RyaW5nc2hhcmVkLgotICoKLSAqIEBwYXJhbSBvIGZyYW1lIG9iamVjdCB0byBnZXQgdGl0
bGUKLSAqCi0gKiBAcmV0dXJuIGZyYW1lIHRpdGxlIG9uIHN1Y2Nlc3Mgb3IgQGMgTlVMTCBvbiBm
YWlsdXJlCi0gKi8KLUVBUEkgY29uc3QgRXdrX1RleHRfV2l0aF9EaXJlY3Rpb24gICpld2tfZnJh
bWVfdGl0bGVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKLQotLyoqCi0gKiBHZXRzIHRoZSBu
YW1lIG9mIHRoaXMgZnJhbWUuCi0gKgotICogSXQgcmV0dXJucyBhbiBpbnRlcm5hbCBzdHJpbmcg
YW5kIHNob3VsZCBub3QKLSAqIGJlIG1vZGlmaWVkLiBUaGUgc3RyaW5nIGlzIGd1YXJhbnRlZWQg
dG8gYmUgc3RyaW5nc2hhcmVkLgotICoKLSAqIEBwYXJhbSBvIGZyYW1lIG9iamVjdCB0byBnZXQg
bmFtZQotICoKLSAqIEByZXR1cm4gZnJhbWUgbmFtZSBvbiBzdWNjZXNzIG9yIEBjIE5VTEwgb24g
ZmFpbHVyZQotICovCi1FQVBJIGNvbnN0IGNoYXIgICpld2tfZnJhbWVfbmFtZV9nZXQoY29uc3Qg
RXZhc19PYmplY3QgKm8pOwotCi0vKioKLSAqIEdldHMgbGFzdCBrbm93biBjb250ZW50cyBzaXpl
LgotICoKLSAqIEBwYXJhbSBvIGZyYW1lIG9iamVjdCB0byBnZXQgY29udGVudHMgc2l6ZQotICog
QHBhcmFtIHcgcG9pbnRlciB0byBzdG9yZSBjb250ZW50cyBzaXplIHdpZHRoLCBtYXkgYmUgQGMg
TlVMTAotICogQHBhcmFtIGggcG9pbnRlciB0byBzdG9yZSBjb250ZW50cyBzaXplIGhlaWdodCwg
bWF5IGJlIEBjIE5VTEwKLSAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzIG9y
IEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZSBhbmQKLSAqICAgICAgICAgQGEgdyBhbmQgQGEgaCB3
aWxsIGJlIHplcm9lZAotICovCi1FQVBJIEVpbmFfQm9vbCAgICBld2tfZnJhbWVfY29udGVudHNf
c2l6ZV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8sIEV2YXNfQ29vcmQgKncsIEV2YXNfQ29vcmQg
KmgpOwotCi0vKioKLSAqIFJlcXVlc3RzIGxvYWRpbmcgdGhlIGdpdmVuIGNvbnRlbnRzIGluIHRo
aXMgZnJhbWUuCi0gKgotICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0IHRvIGxvYWQgZG9jdW1lbnQK
LSAqIEBwYXJhbSBjb250ZW50cyB3aGF0IHRvIGxvYWQgaW50byBmcmFtZQotICogQHBhcmFtIGNv
bnRlbnRzX3NpemUgc2l6ZSBvZiBAYSBjb250ZW50cyAoaW4gYnl0ZXMpLAotICogICAgICAgIGlm
IEBjIDAgaXMgZ2l2ZW4sIGxlbmd0aCBvZiBAYSBjb250ZW50cyBpcyB1c2VkCi0gKiBAcGFyYW0g
bWltZV90eXBlIHR5cGUgb2YgQGEgY29udGVudHMgZGF0YSwgaWYgQGMgTlVMTCBpcyBnaXZlbiAi
dGV4dC9odG1sIiBpcyBhc3N1bWVkCi0gKiBAcGFyYW0gZW5jb2RpbmcgZW5jb2RpbmcgZm9yIEBh
IGNvbnRlbnRzIGRhdGEsIGlmIEBjIE5VTEwgaXMgZ2l2ZW4gIlVURi04IiBpcyBhc3N1bWVkCi0g
KiBAcGFyYW0gYmFzZV91cmkgYmFzZSB1cmkgdG8gdXNlIGZvciByZWxhdGl2ZSByZXNvdXJjZXMs
IG1heSBiZSBAYyBOVUxMLAotICogICAgICAgIGlmIHByb3ZpZGVkIEBiIG11c3QgYmUgYW4gYWJz
b2x1dGUgdXJpCi0gKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2Vzc2Z1bCByZXF1
ZXN0LCBAYyBFSU5BX0ZBTFNFIG9uIGVycm9ycwotICovCi1FQVBJIEVpbmFfQm9vbCAgICBld2tf
ZnJhbWVfY29udGVudHNfc2V0KEV2YXNfT2JqZWN0ICpvLCBjb25zdCBjaGFyICpjb250ZW50cywg
c2l6ZV90IGNvbnRlbnRzX3NpemUsIGNvbnN0IGNoYXIgKm1pbWVfdHlwZSwgY29uc3QgY2hhciAq
ZW5jb2RpbmcsIGNvbnN0IGNoYXIgKmJhc2VfdXJpKTsKLQotLyoqCi0gKiBSZXF1ZXN0cyBsb2Fk
aW5nIGFsdGVybmF0aXZlIGNvbnRlbnRzIGZvciB1bnJlYWNoYWJsZSBVUkkgaW4gdGhpcyBmcmFt
ZS4KLSAqCi0gKiBUaGlzIGlzIHNpbWlsYXIgdG8gZXdrX2ZyYW1lX2NvbnRlbnRzX3NldCgpLCBi
dXQgaXMgdXNlZCB3aGVuIHNvbWUKLSAqIFVSSSB3YXMgZmFpbGVkIHRvIGxvYWQsIHVzaW5nIHRo
ZSBwcm92aWRlZCBjb250ZW50IGluc3RlYWQuIFRoZSBtYWluCi0gKiBkaWZmZXJlbmNlIGlzIHRo
YXQgYmFjay1mb3J3YXJkIG5hdmlnYXRpb24gbGlzdCBpcyBub3QgY2hhbmdlZC4KLSAqCi0gKiBA
cGFyYW0gbyBmcmFtZSBvYmplY3QgdG8gbG9hZCBhbHRlcm5hdGl2ZSBjb250ZW50Ci0gKiBAcGFy
YW0gY29udGVudHMgd2hhdCB0byBsb2FkIGludG8gZnJhbWUsIG11c3QgQGIgbm90IGJlIEBjIE5V
TEwKLSAqIEBwYXJhbSBjb250ZW50c19zaXplIHNpemUgb2YgQGEgY29udGVudHMgKGluIGJ5dGVz
KSwKLSAqICAgICAgICBpZiBAYyAwIGlzIGdpdmVuLCBsZW5ndGggb2YgQGEgY29udGVudHMgaXMg
dXNlZAotICogQHBhcmFtIG1pbWVfdHlwZSB0eXBlIG9mIEBhIGNvbnRlbnRzIGRhdGEsIGlmIEBj
IE5VTEwgaXMgZ2l2ZW4gInRleHQvaHRtbCIgaXMgYXNzdW1lZAotICogQHBhcmFtIGVuY29kaW5n
IGVuY29kaW5nIHVzZWQgZm9yIEBhIGNvbnRlbnRzIGRhdGEsIGlmIEBjIE5VTEwgaXMgZ2l2ZW4g
IlVURi04IiBpcyBhc3N1bWVkCi0gKiBAcGFyYW0gYmFzZV91cmkgYmFzZSBVUkkgdG8gdXNlIGZv
ciByZWxhdGl2ZSByZXNvdXJjZXMsIG1heSBiZSBAYyBOVUxMLAotICogICAgICAgIGlmIHByb3Zp
ZGVkIG11c3QgYmUgYW4gYWJzb2x1dGUgdXJpCi0gKiBAcGFyYW0gdW5yZWFjaGFibGVfdXJpIHRo
ZSBVUkkgdGhhdCBmYWlsZWQgdG8gbG9hZCBhbmQgaXMgZ2V0dGluZyB0aGUKLSAqICAgICAgICBh
bHRlcm5hdGl2ZSByZXByZXNlbnRhdGlvbiwgbXVzdCBAYiBub3QgYmUgQGMgTlVMTAotICoKLSAq
IEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3NmdWwgcmVxdWVzdCwgQGMgRUlOQV9GQUxT
RSBvbiBlcnJvcnMKLSAqLwotRUFQSSBFaW5hX0Jvb2wgICAgZXdrX2ZyYW1lX2NvbnRlbnRzX2Fs
dGVybmF0ZV9zZXQoRXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKmNvbnRlbnRzLCBzaXplX3Qg
Y29udGVudHNfc2l6ZSwgY29uc3QgY2hhciAqbWltZV90eXBlLCBjb25zdCBjaGFyICplbmNvZGlu
ZywgY29uc3QgY2hhciAqYmFzZV91cmksIGNvbnN0IGNoYXIgKnVucmVhY2hhYmxlX3VyaSk7Ci0K
LS8qKgotICogUmVxdWVzdHMgZXhlY3V0aW9uIG9mIHRoZSBnaXZlbiBzY3JpcHQuCi0gKgotICog
VGhlIHJldHVybmVkIHN0cmluZyBAYiBzaG91bGQgYmUgZnJlZWQgYnkgZWluYV9zdHJpbmdzaGFy
ZV9kZWwoKSBhZnRlciB1c2UuCi0gKgotICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0IHRvIGV4ZWN1
dGUgc2NyaXB0Ci0gKiBAcGFyYW0gc2NyaXB0IEphdmEgU2NyaXB0IHRvIGV4ZWN1dGUKLSAqCi0g
KiBAcmV0dXJuIG5ld2x5IGFsbG9jYXRlZCBzdHJpbmcgZm9yIHJlc3VsdCBvciBAYyBOVUxMIGlm
IHRoZSByZXN1bHQgY2Fubm90IGJlIGNvbnZlcnRlZCB0byBzdHJpbmcgb3IgZmFpbHVyZQotICov
Ci1FQVBJIGNvbnN0IGNoYXIgICAgICAgICpld2tfZnJhbWVfc2NyaXB0X2V4ZWN1dGUoRXZhc19P
YmplY3QgKm8sIGNvbnN0IGNoYXIgKnNjcmlwdCk7Ci0KLS8qKgotICogUXVlcmllcyBpZiB0aGUg
ZnJhbWUgaXMgZWRpdGFibGUuCi0gKgotICogQHBhcmFtIG8gdGhlIGZyYW1lIG9iamVjdCB0byBx
dWVyeSBlZGl0YWJsZSBzdGF0ZQotICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIHRoZSBm
cmFtZSBpcyBlZGl0YWJsZSwgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UKLSAqLwotRUFQSSBFaW5h
X0Jvb2wgICAgZXdrX2ZyYW1lX2VkaXRhYmxlX2dldChjb25zdCBFdmFzX09iamVjdCAqbyk7Ci0K
LS8qKgotICogU2V0cyBlZGl0YWJsZSBzdGF0ZSBmb3IgZnJhbWUuCi0gKgotICogQHBhcmFtIG8g
dGhlIGZyYW1lIG9iamVjdCB0byBzZXQgZWRpdGFibGUgc3RhdGUKLSAqIEBwYXJhbSBlZGl0YWJs
ZSBhIG5ldyBzdGF0ZSB0byBzZXQKLSAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNj
ZXNzLCBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZQotICovCi1FQVBJIEVpbmFfQm9vbCAgICBld2tf
ZnJhbWVfZWRpdGFibGVfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgZWRpdGFibGUpOwot
Ci0vKioKLSAqIEdldHMgdGhlIGNvcHkgb2YgdGhlIHNlbGVjdGVkIHRleHQuCi0gKgotICogVGhl
IHJldHVybmVkIHN0cmluZyBAYiBzaG91bGQgYmUgZnJlZWQgYnkgZWluYV9zdHJpbmdzaGFyZV9k
ZWwoKSBhZnRlciB1c2UuCi0gKgotICogQHBhcmFtIG8gdGhlIGZyYW1lIG9iamVjdCB0byBnZXQg
c2VsZWN0ZWQgdGV4dAotICoKLSAqIEByZXR1cm4gYSBuZXdseSBhbGxvY2F0ZWQgc3RyaW5nIG9y
IEBjIE5VTEwgaWYgbm90aGluZyBpcyBzZWxlY3RlZCBvciBvbiBmYWlsdXJlCi0gKi8KLUVBUEkg
Y29uc3QgY2hhciAgICAgICAgKmV3a19mcmFtZV9zZWxlY3Rpb25fZ2V0KGNvbnN0IEV2YXNfT2Jq
ZWN0ICpvKTsKLQotLyoqCi0gKiBTZWFyY2hlcyB0aGUgZ2l2ZW4gc3RyaW5nIGluIGEgZG9jdW1l
bnQuCi0gKgotICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0IHdoZXJlIHRvIHNlYXJjaCB0aGUgdGV4
dAotICogQHBhcmFtIHN0cmluZyByZWZlcmVuY2Ugc3RyaW5nIHRvIHNlYXJjaAotICogQHBhcmFt
IGNhc2Vfc2Vuc2l0aXZlIGlmIHNlYXJjaCBzaG91bGQgYmUgY2FzZSBzZW5zaXRpdmUgb3Igbm90
Ci0gKiBAcGFyYW0gZm9yd2FyZCBpZiBzZWFyY2ggaXMgZnJvbSBjdXJzb3IgYW5kIG9uIG9yIGJh
Y2t3YXJkcwotICogQHBhcmFtIHdyYXAgaWYgc2VhcmNoIHNob3VsZCB3cmFwIGF0IHRoZSBlbmQK
LSAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiB0aGUgZ2l2ZW4gc3RyaW5nIHdhcyBmb3Vu
ZCwgQGMgRUlOQV9GQUxTRSBpZiBub3Qgb3IgZmFpbHVyZQotICovCi1FQVBJIEVpbmFfQm9vbCAg
ICBld2tfZnJhbWVfdGV4dF9zZWFyY2goY29uc3QgRXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIg
KnN0cmluZywgRWluYV9Cb29sIGNhc2Vfc2Vuc2l0aXZlLCBFaW5hX0Jvb2wgZm9yd2FyZCwgRWlu
YV9Cb29sIHdyYXApOwotCi0vKioKLSAqIE1hcmtzIG1hdGNoZXMgdGhlIGdpdmVuIHN0cmluZyBp
biBhIGRvY3VtZW50LgotICoKLSAqIEBwYXJhbSBvIGZyYW1lIG9iamVjdCB3aGVyZSB0byBzZWFy
Y2ggdGV4dAotICogQHBhcmFtIHN0cmluZyByZWZlcmVuY2Ugc3RyaW5nIHRvIG1hdGNoCi0gKiBA
cGFyYW0gY2FzZV9zZW5zaXRpdmUgaWYgbWF0Y2ggc2hvdWxkIGJlIGNhc2Ugc2Vuc2l0aXZlIG9y
IG5vdAotICogQHBhcmFtIGhpZ2hsaWdodCBpZiBtYXRjaGVzIHNob3VsZCBiZSBoaWdobGlnaHRl
ZAotICogQHBhcmFtIGxpbWl0IG1heGltdW0gYW1vdW50IG9mIG1hdGNoZXMsIG9yIHplcm8gdG8g
dW5saW1pdGVkCi0gKgotICogQHJldHVybiBudW1iZXIgb2YgbWF0Y2hlZCBAYSBzdHJpbmcKLSAq
LwotRUFQSSB1bnNpZ25lZCBpbnQgZXdrX2ZyYW1lX3RleHRfbWF0Y2hlc19tYXJrKEV2YXNfT2Jq
ZWN0ICpvLCBjb25zdCBjaGFyICpzdHJpbmcsIEVpbmFfQm9vbCBjYXNlX3NlbnNpdGl2ZSwgRWlu
YV9Cb29sIGhpZ2hsaWdodCwgdW5zaWduZWQgaW50IGxpbWl0KTsKLQotLyoqCi0gKiBVbm1hcmtz
IGFsbCBtYXJrZWQgbWF0Y2hlcyBpbiBhIGRvY3VtZW50LgotICogUmV2ZXJzZXMgdGhlIGVmZmVj
dCBvZiBld2tfZnJhbWVfdGV4dF9tYXRjaGVzX21hcmsoKS4KLSAqCi0gKiBAcGFyYW0gbyBmcmFt
ZSBvYmplY3Qgd2hlcmUgdG8gdW5tYXJrIG1hdGNoZXMKLSAqCi0gKiBAcmV0dXJuIEBjIEVJTkFf
VFJVRSBvbiBzdWNjZXNzLCBAYyBFSU5BX0ZBTFNFIG9uIGZhaWx1cmUKLSAqLwotRUFQSSBFaW5h
X0Jvb2wgICAgZXdrX2ZyYW1lX3RleHRfbWF0Y2hlc191bm1hcmtfYWxsKEV2YXNfT2JqZWN0ICpv
KTsKLQotLyoqCi0gKiBTZXRzIHdoZXRoZXIgbWF0Y2hlcyBtYXJrZWQgd2l0aCBld2tfZnJhbWVf
dGV4dF9tYXRjaGVzX21hcmsoKSBzaG91bGQgYmUgaGlnaGxpZ2h0ZWQuCi0gKgotICogQHBhcmFt
IG8gZnJhbWUgb2JqZWN0IHdoZXJlIHRvIHNldCBpZiBtYXRjaGVzIGFyZSBoaWdobGlnaHRlZCBv
ciBub3QKLSAqIEBwYXJhbSBoaWdobGlnaHQgQGMgRUlOQV9UUlVFIGlmIG1hdGNoZXMgYXJlIGhp
Z2hsaWdodGVkLCBAYyBFSU5BX0ZBTFNFIGlmIG5vdAotICoKLSAqIEByZXR1cm4gQGMgRUlOQV9U
UlVFIG9uIHN1Y2Nlc3MsIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZQotICovCi1FQVBJIEVpbmFf
Qm9vbCAgICBld2tfZnJhbWVfdGV4dF9tYXRjaGVzX2hpZ2hsaWdodF9zZXQoRXZhc19PYmplY3Qg
Km8sIEVpbmFfQm9vbCBoaWdobGlnaHQpOwotCi0vKioKLSAqIFJldHVybnMgd2hldGhlciBtYXRj
aGVzIG1hcmtlZCB3aXRoIGV3a19mcmFtZV90ZXh0X21hdGNoZXNfbWFyaygpIGFyZSBoaWdobGln
aHRlZC4KLSAqCi0gKiBAcGFyYW0gbyBmcmFtZSBvYmplY3QgdG8gcXVlcnkgaWYgbWF0Y2hlcyBh
cmUgaGlnaGxpZ2h0ZWQgb3Igbm90Ci0gKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgbWF0
Y2hlcyBhcmUgaGlnaGxpZ2h0ZWQsIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlCi0gKi8KLUVBUEkg
RWluYV9Cb29sICAgIGV3a19mcmFtZV90ZXh0X21hdGNoZXNfaGlnaGxpZ2h0X2dldChjb25zdCBF
dmFzX09iamVjdCAqbyk7Ci0KLS8qKgotICogUmV0dXJucyB0aGUgcG9zaXRpb24gb2YgdGhlIG4t
dGggbWF0Y2hlZCB0ZXh0IGluIHRoZSBmcmFtZS4KLSAqCi0gKiBAcGFyYW0gbyBmcmFtZSBvYmpl
Y3Qgd2hlcmUgbWF0Y2hlcyBhcmUgbWFya2VkCi0gKiBAcGFyYW0gbiBpbmRleCBvZiBlbGVtZW50
IAotICogQHBhcmFtIHggdGhlIHBvaW50ZXIgdG8gc3RvcmUgdGhlIGhvcml6b250YWwgcG9zaXRp
b24gb2YgQGEgbiBtYXRjaGVkIHRleHQsIG1heSBiZSBAYyBOVUxMCi0gKiBAcGFyYW0geSB0aGUg
cG9pbnRlciB0byBzdG9yZSB0aGUgdmVydGljYWwgcG9zaXRpb24gb2YgQGEgbiBtYXRjaGVkIHRl
eHQsIG1heSBiZSBAYyBOVUxMCi0gKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2Vz
cywgQGMgRUlOQV9GQUxTRSB3aGVuIG5vIG1hdGNoZXMgd2VyZSBmb3VuZCBvcgotICogICAgICAg
ICBAYSBuIGlzIGJpZ2dlciB0aGFuIHNlYXJjaCByZXN1bHRzIG9yIG9uIGZhaWx1cmUKLSAqLwot
RUFQSSBFaW5hX0Jvb2wgICAgZXdrX2ZyYW1lX3RleHRfbWF0Y2hlc19udGhfcG9zX2dldChjb25z
dCBFdmFzX09iamVjdCAqbywgc2l6ZV90IG4sIGludCAqeCwgaW50ICp5KTsKLQotLyoqCi0gKiBB
c2tzIGZyYW1lIHRvIHN0b3AgbG9hZGluZy4KLSAqCi0gKiBAcGFyYW0gbyBmcmFtZSBvYmplY3Qg
dG8gc3RvcCBsb2FkaW5nCi0gKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2Vzcywg
QGMgRUlOQV9GQUxTRSBvdGhlcndpc2UKLSAqLwotRUFQSSBFaW5hX0Jvb2wgICAgZXdrX2ZyYW1l
X3N0b3AoRXZhc19PYmplY3QgKm8pOwotCi0vKioKLSAqIEFza3MgZnJhbWUgdG8gcmVsb2FkIGN1
cnJlbnQgZG9jdW1lbnQuCi0gKgotICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0IHRvIHJlbG9hZCBj
dXJyZW50IGRvY3VtZW50Ci0gKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2Vzcywg
QGMgRUlOQV9GQUxTRSBvdGhlcndpc2UKLSAqCi0gKiBAc2VlIGV3a19mcmFtZV9yZWxvYWRfZnVs
bCgpCi0gKi8KLUVBUEkgRWluYV9Cb29sICAgIGV3a19mcmFtZV9yZWxvYWQoRXZhc19PYmplY3Qg
Km8pOwotCi0vKioKLSAqIEFza3MgZnJhbWUgdG8gZnVsbHkgcmVsb2FkIGN1cnJlbnQgZG9jdW1l
bnQsIHVzaW5nIG5vIHByZXZpb3VzIGNhY2hlcy4KLSAqCi0gKiBAcGFyYW0gbyBmcmFtZSBvYmpl
Y3QgdG8gcmVsb2FkIGN1cnJlbnQgZG9jdW1lbnQKLSAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJV
RSBvbiBzdWNjZXNzLCBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZQotICovCi1FQVBJIEVpbmFfQm9v
bCAgICBld2tfZnJhbWVfcmVsb2FkX2Z1bGwoRXZhc19PYmplY3QgKm8pOwotCi0vKioKLSAqIEFz
a3MgdGhlIGZyYW1lIHRvIG5hdmlnYXRlIGJhY2sgaW4gdGhlIGhpc3RvcnkuCi0gKgotICogQHBh
cmFtIG8gZnJhbWUgb2JqZWN0IHRvIG5hdmlnYXRlIGJhY2sKLSAqCi0gKiBAcmV0dXJuIEBjIEVJ
TkFfVFJVRSBvbiBzdWNjZXNzLCBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZQotICoKLSAqIEBzZWUg
ZXdrX2ZyYW1lX25hdmlnYXRlKCkKLSAqLwotRUFQSSBFaW5hX0Jvb2wgICAgZXdrX2ZyYW1lX2Jh
Y2soRXZhc19PYmplY3QgKm8pOwotCi0vKioKLSAqIEFza3MgZnJhbWUgdG8gbmF2aWdhdGUgZm9y
d2FyZCBpbiB0aGUgaGlzdG9yeS4KLSAqCi0gKiBAcGFyYW0gbyBmcmFtZSBvYmplY3QgdG8gbmF2
aWdhdGUgZm9yd2FyZAotICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3MsIEBj
IEVJTkFfRkFMU0Ugb3RoZXJ3aXNlCi0gKgotICogQHNlZSBld2tfZnJhbWVfbmF2aWdhdGUoKQot
ICovCi1FQVBJIEVpbmFfQm9vbCAgICBld2tfZnJhbWVfZm9yd2FyZChFdmFzX09iamVjdCAqbyk7
Ci0KLS8qKgotICogTmF2aWdhdGVzIGJhY2sgb3IgZm9yd2FyZCBpbiB0aGUgaGlzdG9yeS4KLSAq
Ci0gKiBAcGFyYW0gbyBmcmFtZSBvYmplY3QgdG8gbmF2aWdhdGUKLSAqIEBwYXJhbSBzdGVwcyBp
ZiBwb3NpdGl2ZSBuYXZpZ2F0ZXMgdGhhdCBhbW91bnQgZm9yd2FyZHMsIGlmIG5lZ2F0aXZlCi0g
KiAgICAgICAgZG9lcyBiYWNrd2FyZHMKLSAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBz
dWNjZXNzLCBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZQotICovCi1FQVBJIEVpbmFfQm9vbCAgICBl
d2tfZnJhbWVfbmF2aWdhdGUoRXZhc19PYmplY3QgKm8sIGludCBzdGVwcyk7Ci0KLS8qKgotICog
UXVlcmllcyBpZiBpdCdzIHBvc3NpYmxlIHRvIG5hdmlnYXRlIGJhY2t3YXJkcyBvbmUgaXRlbSBp
biB0aGUgaGlzdG9yeS4KLSAqCi0gKiBAcGFyYW0gbyBmcmFtZSBvYmplY3QgdG8gcXVlcnkgaWYg
YmFja3dhcmQgbmF2aWdhdGlvbiBpcyBwb3NzaWJsZQotICoKLSAqIEByZXR1cm4gQGMgRUlOQV9U
UlVFIGlmIGl0J3MgcG9zc2libGUgdG8gbmF2aWdhdGUgYmFja3dhcmRzIG9uZSBpdGVtIGluIHRo
ZSBoaXN0b3J5LCBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZQotICoKLSAqIEBzZWUgZXdrX2ZyYW1l
X25hdmlnYXRlX3Bvc3NpYmxlKCkKLSAqLwotRUFQSSBFaW5hX0Jvb2wgICAgZXdrX2ZyYW1lX2Jh
Y2tfcG9zc2libGUoRXZhc19PYmplY3QgKm8pOwotCi0vKioKLSAqIFF1ZXJpZXMgaWYgaXQncyBw
b3NzaWJsZSB0byBuYXZpZ2F0ZSBmb3J3YXJkcyBvbmUgaXRlbSBpbiB0aGUgaGlzdG9yeS4KLSAq
Ci0gKiBAcGFyYW0gbyBmcmFtZSBvYmplY3QgdG8gcXVlcnkgaWYgZm9yd2FyZCBuYXZpZ2F0aW9u
IGlzIHBvc3NpYmxlCi0gKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgaXQncyBwb3NzaWJs
ZSB0byBuYXZpZ2F0ZSBmb3J3YXJkcyBpbiB0aGUgaGlzdG9yeSwgQGMgRUlOQV9GQUxTRSBvdGhl
cndpc2UKLSAqCi0gKiBAc2VlIGV3a19mcmFtZV9uYXZpZ2F0ZV9wb3NzaWJsZSgpCi0gKi8KLUVB
UEkgRWluYV9Cb29sICAgIGV3a19mcmFtZV9mb3J3YXJkX3Bvc3NpYmxlKEV2YXNfT2JqZWN0ICpv
KTsKLQotLyoqCi0gKiBRdWVyaWVzIGlmIGl0J3MgcG9zc2libGUgdG8gbmF2aWdhdGUgZ2l2ZW4g
QGEgc3RlcHMgaW4gdGhlIGhpc3RvcnkuCi0gKgotICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0IHRv
IHF1ZXJ5IGlmIGlzIHBvc3NpYmxlIHRvIG5hdmlnYXRlIEBhIHN0ZXBzIGluIHRoZSBoaXN0b3J5
Ci0gKiBAcGFyYW0gc3RlcHMgcG9zaXRpdmUgdmFsdWUgbmF2aWdhdGVzIHRoYXQgYW1vdW50IGZv
cndhcmRzLCBuZWdhdGl2ZSB2YWx1ZSAKLSAqICAgICAgICBkb2VzIGJhY2t3YXJkcwotICoKLSAq
IEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIGl0J3MgcG9zc2libGUgdG8gbmF2aWdhdGUgQGEgc3Rl
cHMgaW4gdGhlIGhpc3RvcnksIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlCi0gKi8KLUVBUEkgRWlu
YV9Cb29sICAgIGV3a19mcmFtZV9uYXZpZ2F0ZV9wb3NzaWJsZShFdmFzX09iamVjdCAqbywgaW50
IHN0ZXBzKTsKLQotLyoqCi0gKiBHZXRzIHRoZSBjdXJyZW50IHBhZ2Ugem9vbSBsZXZlbCB1c2Vk
IGJ5IHRoaXMgZnJhbWUuCi0gKgotICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0IHRvIGdldCB6b29t
IGxldmVsCi0gKgotICogQHJldHVybiBwYWdlIHpvb20gbGV2ZWwgZm9yIHRoZSBmcmFtZSBvciBA
YyAtMS4wIG9uIGZhaWx1cmUKLSAqCi0gKiBAc2VlIGV3a19mcmFtZV90ZXh0X3pvb21fZ2V0KCkK
LSAqLwotRUFQSSBmbG9hdCAgICAgICAgZXdrX2ZyYW1lX3BhZ2Vfem9vbV9nZXQoY29uc3QgRXZh
c19PYmplY3QgKm8pOwotCi0vKioKLSAqIFNldHMgdGhlIGN1cnJlbnQgcGFnZSB6b29tIGxldmVs
IHVzZWQgYnkgdGhpcyBmcmFtZS4KLSAqCi0gKiBAcGFyYW0gbyBmcmFtZSBvYmplY3QgdG8gY2hh
bmdlIHpvb20gbGV2ZWwKLSAqIEBwYXJhbSBwYWdlX3pvb21fZmFjdG9yIGEgbmV3IHpvb20gbGV2
ZWwKLSAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzIG9yIEBjIEVJTkFfRkFM
U0Ugb24gZmFpbHVyZQotICoKLSAqIEBzZWUgZXdrX2ZyYW1lX3RleHRfem9vbV9zZXQoKQotICov
Ci1FQVBJIEVpbmFfQm9vbCAgICBld2tfZnJhbWVfcGFnZV96b29tX3NldChFdmFzX09iamVjdCAq
bywgZmxvYXQgcGFnZV96b29tX2ZhY3Rvcik7Ci0KLS8qKgotICogR2V0cyB0aGUgY3VycmVudCB0
ZXh0IHpvb20gbGV2ZWwgdXNlZCBieSB0aGlzIGZyYW1lLgotICoKLSAqIEBwYXJhbSBvIGZyYW1l
IG9iamVjdCB0byBnZXQgem9vbSBsZXZlbAotICoKLSAqIEByZXR1cm4gdGV4dCB6b29tIGxldmVs
IGZvciB0aGUgZnJhbWUgb3IgQGMgLTEuMCBvbiBmYWlsdXJlCi0gKgotICogQHNlZSBld2tfZnJh
bWVfcGFnZV96b29tX2dldCgpCi0gKi8KLUVBUEkgZmxvYXQgICAgICAgIGV3a19mcmFtZV90ZXh0
X3pvb21fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKLQotLyoqCi0gKiBTZXRzIHRoZSBjdXJy
ZW50IHRleHQgem9vbSBsZXZlbCB1c2VkIGJ5IHRoaXMgZnJhbWUuCi0gKgotICogQHBhcmFtIG8g
ZnJhbWUgb2JqZWN0IHRvIGNoYW5nZSB6b29tIGxldmVsCi0gKiBAcGFyYW0gdGV4dFpvb21GYWN0
b3IgYSBuZXcgem9vbSBsZXZlbAotICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nl
c3Mgb3IgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJlCi0gKgotICogQHNlZSBld2tfZnJhbWVfcGFn
ZV96b29tX3NldCgpCi0gKi8KLUVBUEkgRWluYV9Cb29sICAgIGV3a19mcmFtZV90ZXh0X3pvb21f
c2V0KEV2YXNfT2JqZWN0ICpvLCBmbG9hdCB0ZXh0X3pvb21fZmFjdG9yKTsKLQotLyoqCi0gKiBG
cmVlcyBoaXQgdGVzdCBpbnN0YW5jZSBjcmVhdGVkIGJ5IGV3a19mcmFtZV9oaXRfdGVzdF9uZXco
KS4KLSAqCi0gKiBAcGFyYW0gaGl0X3Rlc3QgaW5zdGFuY2UKLSAqLwotRUFQSSB2b2lkICAgICAg
ICAgIGV3a19mcmFtZV9oaXRfdGVzdF9mcmVlKEV3a19IaXRfVGVzdCAqaGl0X3Rlc3QpOwotCi0v
KioKLSAqIENyZWF0ZXMgYSBuZXcgaGl0IHRlc3QgZm9yIHRoZSBnaXZlbiBmcmFtZSBhbmQgcG9p
bnQuCi0gKgotICogVGhlIHJldHVybmVkIG9iamVjdCBzaG91bGQgYmUgZnJlZWQgYnkgZXdrX2Zy
YW1lX2hpdF90ZXN0X2ZyZWUoKS4KLSAqCi0gKiBAcGFyYW0gbyBmcmFtZSBvYmplY3QgdG8gZG8g
aGl0IHRlc3Qgb24KLSAqIEBwYXJhbSB4IHRoZSBob3Jpem9udGFsIHBvc2l0aW9uIHRvIHF1ZXJ5
Ci0gKiBAcGFyYW0geSB0aGUgdmVydGljYWwgcG9zaXRpb24gdG8gcXVlcnkKLSAqCi0gKiBAcmV0
dXJuIGEgbmV3bHkgYWxsb2NhdGVkIGhpdCB0ZXN0IG9uIHN1Y2Nlc3MsIEBjIE5VTEwgb3RoZXJ3
aXNlCi0gKi8KLUVBUEkgRXdrX0hpdF9UZXN0ICpld2tfZnJhbWVfaGl0X3Rlc3RfbmV3KGNvbnN0
IEV2YXNfT2JqZWN0ICpvLCBpbnQgeCwgaW50IHkpOwotCi0vKioKLSAqIFNldHMgYSByZWxhdGl2
ZSBzY3JvbGwgb2YgdGhlIGdpdmVuIGZyYW1lLgotICoKLSAqIFRoaXMgZnVuY3Rpb24gZG9lcyBz
Y3JvbGwgQGEgZHggYW5kIEBhIGR5IHBpeGVscwotICogZnJvbSB0aGUgY3VycmVudCBwb3NpdGlv
biBvZiBzY3JvbGwuCi0gKgotICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0IHRvIHNjcm9sbAotICog
QHBhcmFtIGR4IGhvcml6b250YWwgb2Zmc2V0IHRvIHNjcm9sbAotICogQHBhcmFtIGR5IHZlcnRp
Y2FsIG9mZnNldCB0byBzY3JvbGwKLSAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNj
ZXNzLCBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZQotICovCi1FQVBJIEVpbmFfQm9vbCAgICBld2tf
ZnJhbWVfc2Nyb2xsX2FkZChFdmFzX09iamVjdCAqbywgaW50IGR4LCBpbnQgZHkpOwotCi0vKioK
LSAqIFNldHMgYW4gYWJzb2x1dGUgc2Nyb2xsIG9mIHRoZSBnaXZlbiBmcmFtZS4KLSAqCi0gKiBC
b3RoIHZhbHVlcyBhcmUgZnJvbSB6ZXJvIHRvIHRoZSBjb250ZW50cyBzaXplIG1pbnVzIHRoZSB2
aWV3cG9ydAotICogc2l6ZS4gU2VlIGV3a19mcmFtZV9zY3JvbGxfc2l6ZV9nZXQoKS4KLSAqCi0g
KiBAcGFyYW0gbyBmcmFtZSBvYmplY3QgdG8gc2Nyb2xsCi0gKiBAcGFyYW0geCBob3Jpem9udGFs
IHBvc2l0aW9uIHRvIHNjcm9sbAotICogQHBhcmFtIHkgdmVydGljYWwgcG9zaXRpb24gdG8gc2Ny
b2xsCi0gKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcywgQGMgRUlOQV9GQUxT
RSBvdGhlcndpc2UKLSAqLwotRUFQSSBFaW5hX0Jvb2wgICAgZXdrX2ZyYW1lX3Njcm9sbF9zZXQo
RXZhc19PYmplY3QgKm8sIGludCB4LCBpbnQgeSk7Ci0KLS8qKgotICogR2V0cyB0aGUgcG9zc2li
bGUgc2Nyb2xsIHNpemUgb2YgdGhlIGdpdmVuIGZyYW1lLgotICoKLSAqIFBvc3NpYmxlIHNjcm9s
bCBzaXplIGlzIGNvbnRlbnRzIHNpemUgbWludXMgdGhlIHZpZXdwb3J0Ci0gKiBzaXplLiBJdCdz
IHRoZSBsYXN0IGFsbG93ZWQgdmFsdWUgZm9yIGV3a19mcmFtZV9zY3JvbGxfc2V0KCkKLSAqCi0g
KiBAcGFyYW0gbyBmcmFtZSBvYmplY3QgdG8gZ2V0IHNjcm9sbCBzaXplCi0gKiBAcGFyYW0gdyB0
aGUgcG9pbnRlciB0byBzdG9yZSB0aGUgaG9yaXpvbnRhbCBzaXplIHRoYXQgaXMgcG9zc2libGUg
dG8gc2Nyb2xsLAotICogICAgICAgIG1heSBiZSBAYyBOVUxMCi0gKiBAcGFyYW0gaCB0aGUgcG9p
bnRlciB0byBzdG9yZSB0aGUgdmVydGljYWwgc2l6ZSB0aGF0IGlzIHBvc3NpYmxlIHRvIHNjcm9s
bCwKLSAqICAgICAgICBtYXkgYmUgQGMgTlVMTAotICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVF
IG9uIHN1Y2Nlc3MsIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlIGFuZAotICogICAgICAgICB2YWx1
ZXMgYXJlIHplcm9lZAotICovCi1FQVBJIEVpbmFfQm9vbCAgICBld2tfZnJhbWVfc2Nyb2xsX3Np
emVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvLCBpbnQgKncsIGludCAqaCk7Ci0KLS8qKgotICog
R2V0cyB0aGUgY3VycmVudCBzY3JvbGwgcG9zaXRpb24gb2YgZ2l2ZW4gZnJhbWUuCi0gKgotICog
QHBhcmFtIG8gZnJhbWUgb2JqZWN0IHRvIGdldCB0aGUgY3VycmVudCBzY3JvbGwgcG9zaXRpb24K
LSAqIEBwYXJhbSB4IHRoZSBwb2ludGVyIHRvIHN0b3JlIHRoZSBob3Jpem9udGFsIHBvc2l0aW9u
LCBtYXkgYmUgQGMgTlVMTAotICogQHBhcmFtIHkgdGhlIHBvaW50ZXIgdG8gc3RvcmUgdGhlIHZl
cnRpY2FsIHBvc2l0aW9uLiBtYXkgYmUgQGMgTlVMTAotICoKLSAqIEByZXR1cm4gQGMgRUlOQV9U
UlVFIG9uIHN1Y2Nlc3MsIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlIGFuZAotICogICAgICAgICB2
YWx1ZXMgYXJlIHplcm9lZC4KLSAqLwotRUFQSSBFaW5hX0Jvb2wgICAgZXdrX2ZyYW1lX3Njcm9s
bF9wb3NfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvLCBpbnQgKngsIGludCAqeSk7Ci0KLS8qKgot
ICogR2V0cyB0aGUgdmlzaWJsZSBjb250ZW50IGdlb21ldHJ5IG9mIHRoZSBmcmFtZS4KLSAqCi0g
KiBAcGFyYW0gbyBmcmFtZSBvYmplY3QgdG8gcXVlcnkgdmlzaWJsZSBjb250ZW50IGdlb21ldHJ5
Ci0gKiBAcGFyYW0gaW5jbHVkZV9zY3JvbGxiYXJzIHdoZW5ldmVyIHRvIGluY2x1ZGUgc2Nyb2xs
YmFycyBzaXplCi0gKiBAcGFyYW0geCB0aGUgcG9pbnRlciB0byBzdG9yZSB0aGUgaG9yaXpvbnRh
bCBwb3NpdGlvbiwgbWF5IGJlIEBjIE5VTEwKLSAqIEBwYXJhbSB5IHRoZSBwb2ludGVyIHRvIHN0
b3JlIHRoZSB2ZXJ0aWNhbCBwb3NpdGlvbiwgbWF5IGJlIEBjIE5VTEwKLSAqIEBwYXJhbSB3IHRo
ZSBwb2ludGVyIHRvIHN0b3JlIHdpZHRoLCBtYXkgYmUgQGMgTlVMTAotICogQHBhcmFtIGggdGhl
IHBvaW50ZXIgdG8gc3RvcmUgaGVpZ2h0LCBtYXkgYmUgQGMgTlVMTAotICoKLSAqIEByZXR1cm4g
QGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3MsIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlIGFuZAotICog
ICAgICAgICB2YWx1ZXMgYXJlIHplcm9lZAotICovCi1FQVBJIEVpbmFfQm9vbCAgICBld2tfZnJh
bWVfdmlzaWJsZV9jb250ZW50X2dlb21ldHJ5X2dldChjb25zdCBFdmFzX09iamVjdCAqbywgRWlu
YV9Cb29sIGluY2x1ZGVfc2Nyb2xsYmFycywgaW50ICp4LCBpbnQgKnksIGludCAqdywgaW50ICpo
KTsKLQotLyoqCi0gKiBRdWVyaWVzIGlmIHRoZSBmcmFtZSBzaG91bGQgYmUgcmVwYWludGVkIGNv
bXBsZXRlbHkuCi0gKgotICogRnVuY3Rpb24gdGVsbHMgaWYgZGlydHkgYXJlYXMgc2hvdWxkIGJl
IHJlcGFpbnRlZCAKLSAqIGV2ZW4gaWYgdGhleSBhcmUgb3V0IG9mIHRoZSBzY3JlZW4uCi0gKgot
ICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0IHRvIHF1ZXJ5IGlmIHRoZSBmcmFtZSBzaG91bGQgYmUg
cmVwYWludGVkIGNvbXBsZXRlbHkKLSAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiBhbnkg
ZGlydHkgYXJlYXMgc2hvdWxkIGJlIHJlcGFpbnRlZCwgQGMgRUlOQV9GQUxTRQotICogICAgICAg
ICBvdGhlcndpc2UKLSAqLwotRUFQSSBFaW5hX0Jvb2wgICAgZXdrX2ZyYW1lX3BhaW50X2Z1bGxf
Z2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKLQotLyoqCi0gKiBTZXRzIGlmIHRoZSBmcmFtZSBz
aG91bGQgYmUgcmVwYWludGVkIGNvbXBsZXRlbHkuCi0gKgotICogRnVuY3Rpb24gc2V0cyBpZiBk
aXJ0eSBhcmVhcyBzaG91bGQgYmUgcmVwYWludGVkIAotICogZXZlbiBpZiB0aGV5IGFyZSBvdXQg
b2YgdGhlIHNjcmVlbi4KLSAqCi0gKiBAcGFyYW0gbyBmcmFtZSBvYmplY3QgdG8gc2V0IGlmIHRo
ZSBmcmFtZSBzaG91bGQgYmUgcmVwYWludGVkIGNvbXBsZXRlbHkKLSAqIEBwYXJhbSBmbGFnIEBj
IEVJTkFfVFJVRSB0byByZXBhaW50IHRoZSBmcmFtZSBjb21wbGV0ZWx5LAotICogICAgICAgICAg
ICAgQGMgRUlOQV9GQUxTRSBpZiBub3QKLSAqLwotRUFQSSB2b2lkICAgICAgICAgZXdrX2ZyYW1l
X3BhaW50X2Z1bGxfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgZmxhZyk7Ci0KLS8qKgot
ICogRmVlZHMgdGhlIGZvY3VzIGluIGV2ZW50IHRvIHRoZSBmcmFtZS4KLSAqCi0gKiBAcGFyYW0g
byBmcmFtZSBvYmplY3QgdG8gZmVlZCBmb2N1cwotICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVF
IGlmIHRoZSBmb2N1cyB3YXMgaGFuZGxlZCwgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UKLSAqLwot
RUFQSSBFaW5hX0Jvb2wgICAgZXdrX2ZyYW1lX2ZlZWRfZm9jdXNfaW4oRXZhc19PYmplY3QgKm8p
OwotCi0vKioKLSAqIEZlZWRzIHRoZSBmb2N1cyBvdXQgZXZlbnQgdG8gdGhlIGZyYW1lLgotICoK
LSAqIEBwYXJhbSBvIGZyYW1lIG9iamVjdCB0byByZW1vdmUgZm9jdXMKLSAqCi0gKiBAcmV0dXJu
IEBjIEVJTkFfRkFMU0Ugc2luY2UgdGhlIGZlYXR1cmUgaXMgbm90IGltcGxlbWVudGVkCi0gKi8K
LUVBUEkgRWluYV9Cb29sICAgIGV3a19mcmFtZV9mZWVkX2ZvY3VzX291dChFdmFzX09iamVjdCAq
byk7Ci0KLS8qKgotICogR2V0cyB0aGUgZ2VvbWV0cnksIHJlbGF0aXZlIHRvIHRoZSBmcmFtZSwg
b2YgdGhlIGZvY3VzZWQgZWxlbWVudCBpbiB0aGUKLSAqIGRvY3VtZW50LgotICoKLSAqIEBwYXJh
bSBvIGZyYW1lIG9iamVjdCBjb250YWluaW5nIHRoZSBmb2N1c2VkIGVsZW1lbnQKLSAqIEBwYXJh
bSB4IHBvaW50ZXIgd2hlcmUgdG8gc3RvcmUgdGhlIFggdmFsdWUgb2YgdGhlIGdlb21ldHJ5LCBt
YXkgYmUgQGMgTlVMTAotICogQHBhcmFtIHggcG9pbnRlciB3aGVyZSB0byBzdG9yZSB0aGUgWSB2
YWx1ZSBvZiB0aGUgZ2VvbWV0cnksIG1heSBiZSBAYyBOVUxMCi0gKiBAcGFyYW0geCBwb2ludGVy
IHdoZXJlIHRvIHN0b3JlIHdpZHRoIG9mIHRoZSBnZW9tZXRyeSwgbWF5IGJlIEBjIE5VTEwKLSAq
IEBwYXJhbSB4IHBvaW50ZXIgd2hlcmUgdG8gc3RvcmUgaGVpZ2h0IG9mIHRoZSBnZW9tZXRyeSwg
bWF5IGJlIEBjIE5VTEwKLSAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiB0aGUgZnJhbWUg
Y29udGFpbnMgdGhlIGN1cnJlbnRseSBmb2N1c2VkIGVsZW1lbnQgYW5kCi0gKiBpdHMgZ2VvbWV0
cnkgd2FzIGNvcnJlY3RseSBmZXRjaGVkLCBAYyBFSU5BX0ZBTFNFIGluIGFueSBvdGhlciBjYXNl
Ci0gKi8KLUVBUEkgRWluYV9Cb29sIGV3a19mcmFtZV9mb2N1c2VkX2VsZW1lbnRfZ2VvbWV0cnlf
Z2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvLCBpbnQgKngsIGludCAqeSwgaW50ICp3LCBpbnQgKmgp
OwotCi0vKioKLSAqIEZlZWRzIHRoZSBtb3VzZSB3aGVlbCBldmVudCB0byB0aGUgZnJhbWUuCi0g
KgotICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0IHRvIGZlZWQgdGhlIG1vdXNlIHdoZWVsIGV2ZW50
Ci0gKiBAcGFyYW0gZXYgdGhlIG1vdXNlIHdoZWVsIGV2ZW50Ci0gKgotICogQHJldHVybiBAYyBF
SU5BX1RSVUUgaWYgdGhlIG1vdXNlIHdoZWVsIGV2ZW50IHdhcyBoYW5kbGVkLCBAYyBFSU5BX0ZB
TFNFIG90aGVyd2lzZQotICovCi1FQVBJIEVpbmFfQm9vbCAgICBld2tfZnJhbWVfZmVlZF9tb3Vz
ZV93aGVlbChFdmFzX09iamVjdCAqbywgY29uc3QgRXZhc19FdmVudF9Nb3VzZV9XaGVlbCAqZXYp
OwotCi0vKioKLSAqIEZlZWRzIHRoZSBtb3VzZSBkb3duIGV2ZW50IHRvIHRoZSBmcmFtZS4KLSAq
Ci0gKiBAcGFyYW0gbyBmcmFtZSBvYmplY3QgdG8gZmVlZCB0aGUgbW91c2UgZG93biBldmVudAot
ICogQHBhcmFtIGV2IHRoZSBtb3VzZSBkb3duIGV2ZW50Ci0gKgotICogQHJldHVybiBAYyBFSU5B
X1RSVUUgaWYgdGhlIG1vdXNlIGRvd24gZXZlbnQgd2FzIGhhbmRsZWQsIEBjIEVJTkFfRkFMU0Ug
b3RoZXJ3aXNlCi0gKi8KLUVBUEkgRWluYV9Cb29sICAgIGV3a19mcmFtZV9mZWVkX21vdXNlX2Rv
d24oRXZhc19PYmplY3QgKm8sIGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfRG93biAqZXYpOwotCi0v
KioKLSAqIEZlZWRzIHRoZSBtb3VzZSB1cCBldmVudCB0byB0aGUgZnJhbWUuCi0gKgotICogQHBh
cmFtIG8gZnJhbWUgb2JqZWN0IHRvIGZlZWQgdGhlIG1vdXNlIHVwIGV2ZW50Ci0gKiBAcGFyYW0g
ZXYgdGhlIG1vdXNlIHVwIGV2ZW50Ci0gKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgdGhl
IG1vdXNlIHVwIGV2ZW50IHdhcyBoYW5kbGVkLCBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZQotICov
Ci1FQVBJIEVpbmFfQm9vbCAgICBld2tfZnJhbWVfZmVlZF9tb3VzZV91cChFdmFzX09iamVjdCAq
bywgY29uc3QgRXZhc19FdmVudF9Nb3VzZV9VcCAqZXYpOwotCi0vKioKLSAqIEZlZWRzIHRoZSBt
b3VzZSBtb3ZlIGV2ZW50IHRvIHRoZSBmcmFtZS4KLSAqCi0gKiBAcGFyYW0gbyBmcmFtZSBvYmpl
Y3QgdG8gZmVlZCB0aGUgbW91c2UgbW92ZSBldmVudAotICogQHBhcmFtIGV2IHRoZSBtb3VzZSBt
b3ZlIGV2ZW50Ci0gKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgdGhlIG1vdXNlIG1vdmUg
ZXZlbnQgd2FzIGhhbmRsZWQsIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlCi0gKi8KLUVBUEkgRWlu
YV9Cb29sICAgIGV3a19mcmFtZV9mZWVkX21vdXNlX21vdmUoRXZhc19PYmplY3QgKm8sIGNvbnN0
IEV2YXNfRXZlbnRfTW91c2VfTW92ZSAqZXYpOwotCi0vKioKLSAqIEZlZWRzIHRoZSB0b3VjaCBl
dmVudCB0byB0aGUgZnJhbWUuCi0gKgotICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0IHRvIGZlZWQg
dG91Y2ggZXZlbnQKLSAqIEBwYXJhbSBhY3Rpb24gdGhlIGFjdGlvbiBvZiB0b3VjaCBldmVudAot
ICogQHBhcmFtIHBvaW50cyBhIGxpc3Qgb2YgcG9pbnRzIChFd2tfVG91Y2hfUG9pbnQpIHRvIHBy
b2Nlc3MKLSAqIEBwYXJhbSBtZXRhU3RhdGUgbW9kaWZpZXJzIHN0YXRlIG9mIHRvdWNoIGV2ZW50
LiBVc2VycyBhcmUgZXhwZWN0ZWQgdG8gcGFzcyBPUmVkIHZhbHVlcyBvZiB0aGUgRUNPUkVfRVZF
TlRfTU9ESUZJRVIgbWFjcm9zIGluIEVjb3JlX0lucHV0LmgsIHN1Y2ggYXMgRUNPUkVfRVZFTlRf
TU9ESUZJRVJfQUxUIG9yIEVDT1JFX0VWRU5UX01PRElGSUVSX1NISUZUCi0gKgotICogQHJldHVy
biBAYyBFSU5BX1RSVUUgaWYgdG91Y2ggZXZlbnQgd2FzIGhhbmRsZWQsIEBjIEVJTkFfRkFMU0Ug
b3RoZXJ3aXNlCi0gKi8KLUVBUEkgRWluYV9Cb29sICAgIGV3a19mcmFtZV9mZWVkX3RvdWNoX2V2
ZW50KEV2YXNfT2JqZWN0ICpvLCBFd2tfVG91Y2hfRXZlbnRfVHlwZSBhY3Rpb24sIEVpbmFfTGlz
dCAqcG9pbnRzLCB1bnNpZ25lZCBtb2RpZmllcnMpOwotCi0vKioKLSAqIEZlZWRzIHRoZSBrZXli
b2FyZCBrZXkgZG93biBldmVudCB0byB0aGUgZnJhbWUuCi0gKgotICogQHBhcmFtIG8gZnJhbWUg
b2JqZWN0IHRvIGZlZWQgZXZlbnQKLSAqIEBwYXJhbSBldiBrZXlib2FyZCBrZXkgZG93biBldmVu
dAotICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIHRoZSBrZXkgZG93biBldmVudCB3YXMg
aGFuZGxlZCwgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UKLSAqLwotRUFQSSBFaW5hX0Jvb2wgICAg
ZXdrX2ZyYW1lX2ZlZWRfa2V5X2Rvd24oRXZhc19PYmplY3QgKm8sIGNvbnN0IEV2YXNfRXZlbnRf
S2V5X0Rvd24gKmV2KTsKLQotLyoqCi0gKiBGZWVkcyB0aGUga2V5Ym9hcmQga2V5IHVwIGV2ZW50
IHRvIHRoZSBmcmFtZS4KLSAqCi0gKiBAcGFyYW0gbyBmcmFtZSBvYmplY3QgdG8gZmVlZCBldmVu
dAotICogQHBhcmFtIGV2IGtleWJvYXJkIGtleSB1cCBldmVudAotICoKLSAqIEByZXR1cm4gQGMg
RUlOQV9UUlVFIGlmIHRoZSBrZXkgdXAgZXZlbnQgd2FzIGhhbmRsZWQsIEBjIEVJTkFfRkFMU0Ug
b3RoZXJ3aXNlCi0gKi8KLUVBUEkgRWluYV9Cb29sICAgIGV3a19mcmFtZV9mZWVkX2tleV91cChF
dmFzX09iamVjdCAqbywgY29uc3QgRXZhc19FdmVudF9LZXlfVXAgKmV2KTsKLQotLyoqCi0gKiBS
ZXR1cm5zIGN1cnJlbnQgdGV4dCBzZWxlY3Rpb24gdHlwZS4KLSAqCi0gKiBAcGFyYW0gbyBhIGZy
YW1lIG9iamVjdCB0byBjaGVjayBzZWxlY3Rpb24gdHlwZQotICogQHJldHVybiBjdXJyZW50IHRl
eHQgc2VsZWN0aW9uIHR5cGUgb24gc3VjY2VzcyBvciBubyBzZWxlY3Rpb24gb3RoZXJ3aXNlCi0g
Ki8KLUVBUEkgRXdrX1RleHRfU2VsZWN0aW9uX1R5cGUgZXdrX2ZyYW1lX3RleHRfc2VsZWN0aW9u
X3R5cGVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKLQotLyoqCi0gKiBHZXRzIHRoZSBmcmFt
ZSBzb3VyY2UuCi0gKgotICogSXQncyBwYXJ0IG9mIEhUTUwgc2F2aW5nIGZlYXR1cmUuIEN1cnJl
bnRseSBvbmx5IEhUTUwgZG9jdW1lbnRzIGFyZSBzdXBwb3J0ZWQuCi0gKgotICogQHBhcmFtIG8g
ZnJhbWUgc21hcnQgb2JqZWN0IHRvIGdldCB0aGUgZnJhbWUgc291cmNlCi0gKiBAcGFyYW0gZnJh
bWVfc291cmNlIGEgcG9pbnRlciB0byBzdG9yZSB0aGUgc291cmNlIG9mIGZyYW1lLAotICogICAg
ICAgIG11c3QgQGIgbm90IGJlIEBjIE5VTEwsIHRoaXMgdmFsdWUgQGIgc2hvdWxkIGJlIGZyZWVk
IGFmdGVyIHVzZQotICoKLSAqIEByZXR1cm4gQGMgbGVuZ3RoIG9mIEBhIGZyYW1lX3NvdXJjZSBv
biBzdWNjZXNzLCBvciBAYyAtMSBvbiBmYWlsdXJlCi0gKgotICogQHNlZSBld2tfZnJhbWVfcmVz
b3VyY2VzX2xvY2F0aW9uX2dldCgpCi0gKi8KLUVBUEkgc3NpemVfdCBld2tfZnJhbWVfc291cmNl
X2dldChjb25zdCBFdmFzX09iamVjdCAqbywgY2hhciAqKmZyYW1lX3NvdXJjZSk7Ci0KLS8qKgot
ICogR2V0cyB0aGUgcmVzb3VyY2UgbGlzdCBvZiB0aGlzIGZyYW1lLgotICoKLSAqIEl0J3MgcGFy
dCBvZiBIVE1MIHNhdmluZyBmZWF0dXJlLiBDdXJyZW50bHkgb25seSBsb2NhdGlvbnMgb2YgaW1h
Z2VzIGFyZSBzdXBwb3J0ZWQuCi0gKiBBbiBhcHBsaWNhdGlvbiBtaWdodCBmaW5kIHRoZXNlIHZh
bHVlcyBpbiBmcmFtZSBzb3VyY2UgYW5kCi0gKiByZXBsYWNlIHRoZW0gdG8gdGhlIGxvY2FsIHBh
dGhzLiBWYWx1ZXMgYXJlIG5vdCBkdXBsaWNhdGVkIGFuZCB0aGV5IGFyZSBkZWNvZGVkLgotICoK
LSAqIEBwYXJhbSBvIGZyYW1lIHNtYXJ0IG9iamVjdCB0byBnZXQgdGhlIHJlc291cmNlcyBsaXN0
Ci0gKiBAcmV0dXJuIEBjIEVpbmFfTGlzdCB3aXRoIGxvY2F0aW9uIG9mIHJlc291cmNlcyBvbiBz
dWNjZXNzLCBvciBAYyBOVUxMIG9uIGZhaWx1cmUsCi0gKiAgICAgICAgIHRoZSBFaW5hX0xpc3Qg
c2hvdWxkIGJlIGZyZWVkIGFmdGVyIHVzZQotICoKLSAqIEBzZWUgZXdrX2ZyYW1lX3NvdXJjZV9n
ZXQoKQotICovCi1FQVBJIEVpbmFfTGlzdCAqZXdrX2ZyYW1lX3Jlc291cmNlc19sb2NhdGlvbl9n
ZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOwotCi0vKioKLSAqIFJldHJpZXZlIHRoZSBmcmFtZSdz
IGNvbnRlbnRzIGluIHBsYWluIHRleHQuCi0gKgotICogVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRo
ZSBjb250ZW50cyBvZiB0aGUgZ2l2ZW4gZnJhbWUgY29udmVydGVkIHRvIHBsYWluIHRleHQsCi0g
KiByZW1vdmluZyBhbGwgdGhlIEhUTUwgZm9ybWF0dGluZy4KLSAqCi0gKiBUaGUgcmV0dXJuZWQg
c3RyaW5nIEBiIHNob3VsZCBiZSBmcmVlZCBieSBlaW5hX3N0cmluZ3NoYXJlX2RlbCgpIGFmdGVy
IHVzZS4KLSAqCi0gKiBAcGFyYW0gZXdrRnJhbWUgRnJhbWUgb2JqZWN0IHdob3NlIGNvbnRlbnRz
IHRvIHJldHJpZXZlLgotICoKLSAqIEByZXR1cm4gQSBuZXdseSBhbGxvY2F0ZWQgc3RyaW5nICh3
aGljaCBtdXN0IGJlIGZyZWVkIGJ5IHRoZSBjYWxsZXIgd2l0aCBAYyBmcmVlKCkpCi0gKiAgICAg
ICAgIG9yIEBjIE5VTEwgaW4gY2FzZSBvZiBmYWlsdXJlLgotICovCi1FQVBJIGNvbnN0IGNoYXIg
KmV3a19mcmFtZV9wbGFpbl90ZXh0X2dldChjb25zdCBFdmFzX09iamVjdCAqbyk7Ci0KLS8qKgot
ICogUmV0dXJucyB3aGV0aGVyIHRoZSBmcmFtZSBoYXMgZGlzcGxheWVkIG1peGVkIGNvbnRlbnQu
Ci0gKgotICogV2hlbiBhIGZyYW1lIGhhcyBkaXNwbGF5ZWQgbWl4ZWQgY29udGVudCwgaXRzIGN1
cnJlbnQgVVJJIGlzIGFuIEhUVFBTIG9uZSwgYnV0IGl0IGhhcwotICogbG9hZGVkIGFuZCBkaXNw
bGF5ZWQgYSByZXNvdXJjZSAoc3VjaCBhcyBhbiBpbWFnZSkgZnJvbSBhbiBpbnNlY3VyZSAobm9u
LUhUVFBTKSBVUkkuCi0gKiBCb3RoIHRoZSBmcmFtZSBhbmQgdGhlIGNvbnRhaW5lciB2aWV3IHNl
bmQgYSAibWl4ZWRjb250ZW50LGRpc3BsYXllZCIgc2lnbmFsIGluIHRoaXMgY2FzZS4KLSAqCi0g
KiBUaGUgc3RhdHVzIGlzIHJlc2V0IG9ubHkgd2hlbiBhIGxvYWQgZXZlbnQgb2NjdXJzIChlZy4g
dGhlIHBhZ2UgaXMgcmVsb2FkZWQgb3IgYSBuZXcgcGFnZSBpcyBsb2FkZWQpLgotICoKLSAqIEBw
YXJhbSBvIFRoZSBmcmFtZSB0byBxdWVyeS4KLSAqCi0gKiBAc2EgZXdrX3ZpZXdfbWl4ZWRfY29u
dGVudF9kaXNwbGF5ZWRfZ2V0Ci0gKi8KLUVBUEkgRWluYV9Cb29sIGV3a19mcmFtZV9taXhlZF9j
b250ZW50X2Rpc3BsYXllZF9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOwotCi0vKioKLSAqIFJl
dHVybnMgd2hldGhlciB0aGUgZnJhbWUgaGFzIHJ1biBtaXhlZCBjb250ZW50LgotICoKLSAqIFdo
ZW4gYSBmcmFtZSBoYXMgcnVuIG1peGVkIGNvbnRlbnQsIGl0cyBjdXJyZW50IFVSSSBpcyBhbiBI
VFRQUyBvbmUsIGJ1dCBpdCBoYXMKLSAqIGxvYWRlZCBhbmQgcnVuIGEgcmVzb3VyY2UgKHN1Y2gg
YXMgYW4gaW1hZ2UpIGZyb20gYW4gaW5zZWN1cmUgKG5vbi1IVFRQUykgVVJJLgotICogQm90aCB0
aGUgZnJhbWUgYW5kIHRoZSBjb250YWluZXIgdmlldyBzZW5kIGEgIm1peGVkY29udGVudCxydW4i
IHNpZ25hbCBpbiB0aGlzIGNhc2UuCi0gKgotICogVGhlIHN0YXR1cyBpcyByZXNldCBvbmx5IHdo
ZW4gYSBsb2FkIGV2ZW50IG9jY3VycyAoZWcuIHRoZSBwYWdlIGlzIHJlbG9hZGVkIG9yIGEgbmV3
IHBhZ2UgaXMgbG9hZGVkKS4KLSAqCi0gKiBAcGFyYW0gbyBUaGUgZnJhbWUgdG8gcXVlcnkuCi0g
KgotICogQHNhIGV3a192aWV3X21peGVkX2NvbnRlbnRfcnVuX2dldAotICovCi1FQVBJIEVpbmFf
Qm9vbCBld2tfZnJhbWVfbWl4ZWRfY29udGVudF9ydW5fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpv
KTsKLQotLyoqCi0gKiBSZXR1cm5zIHRoZSB2YWxpZGl0eSBvZiB0aGUgWC41MDkgY2VydGlmaWNh
dGUgcmVsYXRlZCB0byB0aGUgY3VycmVudCBmcmFtZS4KLSAqLwotRUFQSSBFd2tfQ2VydGlmaWNh
dGVfU3RhdHVzIGV3a19mcmFtZV9jZXJ0aWZpY2F0ZV9zdGF0dXNfZ2V0KEV2YXNfT2JqZWN0ICpv
KTsKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi19Ci0jZW5kaWYKLSNlbmRpZiAvLyBld2tfZnJhbWVf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZV9wcml2YXRlLmgg
Yi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lX3ByaXZhdGUuaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDk0YzFlMi4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX2ZyYW1lX3ByaXZhdGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDkzICswLDAgQEAK
LS8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgUHJvRlVTSU9OIGVtYmVkZGVkIHN5c3Rl
bXMKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCi0KLSAg
ICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCi0gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgotICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8K
LSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLAotICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotKi8KLQot
I2lmbmRlZiBld2tfZnJhbWVfcHJpdmF0ZV9oCi0jZGVmaW5lIGV3a19mcmFtZV9wcml2YXRlX2gK
LQotI2luY2x1ZGUgImV3a19mcmFtZS5oIgotI2luY2x1ZGUgPEV2YXMuaD4KLSNpbmNsdWRlIDx3
dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgRnJhbWVMb2Fk
ZXJDbGllbnRFZmw7Ci1jbGFzcyBIaXN0b3J5SXRlbTsKLWNsYXNzIEhUTUxQbHVnSW5FbGVtZW50
OwotY2xhc3MgSFRNTEZyYW1lT3duZXJFbGVtZW50OwotY2xhc3MgVVJMOwotY2xhc3MgRnJhbWU7
Ci1jbGFzcyBJbnRTaXplOwotY2xhc3MgV2lkZ2V0OwotfQotCi1FdmFzX09iamVjdCogZXdrX2Zy
YW1lX2FkZChFdmFzKiBjYW52YXMpOwotYm9vbCBld2tfZnJhbWVfaW5pdChFdmFzX09iamVjdCog
ZXdrRnJhbWUsIEV2YXNfT2JqZWN0KiB2aWV3LCBQYXNzT3duUHRyPFdlYkNvcmU6OkZyYW1lTG9h
ZGVyQ2xpZW50RWZsPiBmcmFtZUxvYWRlckNsaWVudCk7Ci1FdmFzX09iamVjdCogZXdrX2ZyYW1l
X2NoaWxkX2FkZChFdmFzX09iamVjdCogZXdrRnJhbWUsIGNvbnN0IFdURjo6U3RyaW5nJiBuYW1l
LCBXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCk7Ci12b2lkIGV3
a19mcmFtZV92aWV3X3NldChFdmFzX09iamVjdCogZXdrRnJhbWUsIEV2YXNfT2JqZWN0KiBuZXdQ
YXJlbnQpOwotCi12b2lkIGV3a19mcmFtZV9jb3JlX2dvbmUoRXZhc19PYmplY3QqIGV3a0ZyYW1l
KTsKLQotdm9pZCBld2tfZnJhbWVfbG9hZF9jb21taXR0ZWQoRXZhc19PYmplY3QqIGV3a0ZyYW1l
KTsKLXZvaWQgZXdrX2ZyYW1lX2xvYWRfc3RhcnRlZChFdmFzX09iamVjdCogZXdrRnJhbWUpOwot
dm9pZCBld2tfZnJhbWVfbG9hZF9wcm92aXNpb25hbChFdmFzX09iamVjdCogZXdrRnJhbWUpOwot
dm9pZCBld2tfZnJhbWVfbG9hZF9wcm92aXNpb25hbF9mYWlsZWQoRXZhc19PYmplY3QqIGV3a0Zy
YW1lLCBjb25zdCBFd2tfRnJhbWVfTG9hZF9FcnJvciogZXJyb3IpOwotdm9pZCBld2tfZnJhbWVf
bG9hZF9maXJzdGxheW91dF9maW5pc2hlZChFdmFzX09iamVjdCogZXdrRnJhbWUpOwotdm9pZCBl
d2tfZnJhbWVfbG9hZF9maXJzdGxheW91dF9ub25lbXB0eV9maW5pc2hlZChFdmFzX09iamVjdCog
ZXdrRnJhbWUpOwotdm9pZCBld2tfZnJhbWVfbG9hZF9kb2N1bWVudF9maW5pc2hlZChFdmFzX09i
amVjdCogZXdrRnJhbWUpOwotdm9pZCBld2tfZnJhbWVfbG9hZF9maW5pc2hlZChFdmFzX09iamVj
dCogZXdrRnJhbWUsIGNvbnN0IGNoYXIqIGVycm9yRG9tYWluLCBpbnQgZXJyb3JDb2RlLCBib29s
IGlzQ2FuY2VsbGF0aW9uLCBjb25zdCBjaGFyKiBlcnJvckRlc2NyaXB0aW9uLCBjb25zdCBjaGFy
KiBmYWlsaW5nVXJsKTsKLXZvaWQgZXdrX2ZyYW1lX2xvYWRfcmVzb3VyY2VfZmluaXNoZWQoRXZh
c19PYmplY3QqIGV3a0ZyYW1lLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpOwotdm9pZCBld2tf
ZnJhbWVfbG9hZF9yZXNvdXJjZV9mYWlsZWQoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBFd2tfRnJh
bWVfTG9hZF9FcnJvciogZXJyb3IpOwotdm9pZCBld2tfZnJhbWVfbG9hZF9lcnJvcihFdmFzX09i
amVjdCogZXdrRnJhbWUsIGNvbnN0IGNoYXIqIGVycm9yRG9tYWluLCBpbnQgZXJyb3JDb2RlLCBi
b29sIGlzQ2FuY2VsbGF0aW9uLCBjb25zdCBjaGFyKiBlcnJvckRlc2NyaXB0aW9uLCBjb25zdCBj
aGFyKiBmYWlsaW5nVXJsKTsKLXZvaWQgZXdrX2ZyYW1lX2xvYWRfcHJvZ3Jlc3NfY2hhbmdlZChF
dmFzX09iamVjdCogZXdrRnJhbWUpOwotCi12b2lkIGV3a19mcmFtZV9yZWRpcmVjdF9jYW5jZWxs
ZWQoRXZhc19PYmplY3QqIGV3a0ZyYW1lKTsKLXZvaWQgZXdrX2ZyYW1lX3JlZGlyZWN0X3Byb3Zp
c2lvbmFsX2xvYWQoRXZhc19PYmplY3QqIGV3a0ZyYW1lKTsKLXZvaWQgZXdrX2ZyYW1lX3JlZGly
ZWN0X3JlcXVlc3RlZChFdmFzX09iamVjdCogZXdrRnJhbWUsIGNvbnN0IGNoYXIqIHVybCk7Ci12
b2lkIGV3a19mcmFtZV9yZXF1ZXN0X3dpbGxfc2VuZChFdmFzX09iamVjdCogZXdrRnJhbWUsIEV3
a19GcmFtZV9SZXNvdXJjZV9NZXNzYWdlcyogbWVzc2FnZXMpOwotdm9pZCBld2tfZnJhbWVfcmVx
dWVzdF9hc3NpZ25faWRlbnRpZmllcihFdmFzX09iamVjdCogZXdrRnJhbWUsIGNvbnN0IEV3a19G
cmFtZV9SZXNvdXJjZV9SZXF1ZXN0KiByZXF1ZXN0KTsKLXZvaWQgZXdrX2ZyYW1lX3Jlc3BvbnNl
X3JlY2VpdmVkKEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgRXdrX0ZyYW1lX1Jlc291cmNlX1Jlc3Bv
bnNlKiByZXNwb25zZSk7Ci12b2lkIGV3a19mcmFtZV92aWV3X3N0YXRlX3NhdmUoRXZhc19PYmpl
Y3QqIGV3a0ZyYW1lLCBXZWJDb3JlOjpIaXN0b3J5SXRlbSogaXRlbSk7Ci0KLXZvaWQgZXdrX2Zy
YW1lX2NvbnRlbnRzX3NpemVfY2hhbmdlZChFdmFzX09iamVjdCogZXdrRnJhbWUsIEV2YXNfQ29v
cmQgd2lkdGgsIEV2YXNfQ29vcmQgaGVpZ2h0KTsKLXZvaWQgZXdrX2ZyYW1lX3RpdGxlX3NldChF
dmFzX09iamVjdCogZXdrRnJhbWUsIGNvbnN0IEV3a19UZXh0X1dpdGhfRGlyZWN0aW9uKiB0aXRs
ZSk7Ci0KLXZvaWQgZXdrX2ZyYW1lX3ZpZXdfY3JlYXRlX2Zvcl92aWV3KEV2YXNfT2JqZWN0KiBl
d2tGcmFtZSwgRXZhc19PYmplY3QqIHZpZXcpOwotYm9vbCBld2tfZnJhbWVfdXJpX2NoYW5nZWQo
RXZhc19PYmplY3QqIGV3a0ZyYW1lKTsKLXZvaWQgZXdrX2ZyYW1lX2ZvcmNlX2xheW91dChFdmFz
X09iamVjdCogZXdrRnJhbWUpOwotdm9pZCBld2tfZnJhbWVfaWNvbl9jaGFuZ2VkKEV2YXNfT2Jq
ZWN0KiBld2tGcmFtZSk7Ci0KLVdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGV3a19m
cmFtZV9wbHVnaW5fY3JlYXRlKEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgY29uc3QgV2ViQ29yZTo6
SW50U2l6ZSYgcGx1Z2luU2l6ZSwgV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQqIGVsZW1lbnQs
IGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4m
IHBhcmFtTmFtZXMsIGNvbnN0IFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYgcGFyYW1WYWx1ZXMs
IGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBsb2FkTWFudWFsbHkpOwotCi12b2lk
IGV3a19mcmFtZV9lZGl0b3JfY2xpZW50X2NvbnRlbnRzX2NoYW5nZWQoRXZhc19PYmplY3QqIGV3
a0ZyYW1lKTsKLXZvaWQgZXdrX2ZyYW1lX2VkaXRvcl9jbGllbnRfc2VsZWN0aW9uX2NoYW5nZWQo
RXZhc19PYmplY3QqIGV3a0ZyYW1lKTsKLQotdm9pZCBld2tfZnJhbWVfbWl4ZWRfY29udGVudF9k
aXNwbGF5ZWRfc2V0KEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgYm9vbCBoYXNEaXNwbGF5ZWQpOwot
dm9pZCBld2tfZnJhbWVfbWl4ZWRfY29udGVudF9ydW5fc2V0KEV2YXNfT2JqZWN0KiBld2tGcmFt
ZSwgYm9vbCBoYXNSdW4pOwotCi12b2lkIGV3a19mcmFtZV94c3NfZGV0ZWN0ZWQoRXZhc19PYmpl
Y3QqIGV3a0ZyYW1lLCBjb25zdCBFd2tfRnJhbWVfWHNzX05vdGlmaWNhdGlvbiogeHNzSW5mbyk7
Ci0KLW5hbWVzcGFjZSBFV0tQcml2YXRlIHsKLXZvaWQgc2V0Q29yZUZyYW1lKEV2YXNfT2JqZWN0
KiBld2tGcmFtZSwgV2ViQ29yZTo6RnJhbWUqIGNvcmVGcmFtZSk7Ci1XZWJDb3JlOjpGcmFtZSAq
Y29yZUZyYW1lKGNvbnN0IEV2YXNfT2JqZWN0ICpld2tGcmFtZSk7Ci1FdmFzX09iamVjdCoga2l0
RnJhbWUoY29uc3QgV2ViQ29yZTo6RnJhbWUqIGNvcmVGcmFtZSk7Ci19IC8vIG5hbWVzcGFjZSBF
V0tQcml2YXRlCi0KLSNlbmRpZiAvLyBld2tfZnJhbWVfcHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2hpc3RvcnkuY3BwIGIvU291cmNlL1dlYktpdC9lZmwv
ZXdrL2V3a19oaXN0b3J5LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzdmMGE2
ZC4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2hpc3RvcnkuY3BwCisr
KyAvZGV2L251bGwKQEAgLTEsNDAzICswLDAgQEAKLS8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA5
LTIwMTAgUHJvRlVTSU9OIGVtYmVkZGVkIHN5c3RlbXMKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDkt
MjAxMCBTYW1zdW5nIEVsZWN0cm9uaWNzCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAg
ICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gICAgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAgICBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCi0gICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBD
T1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICAgIEJvc3Rv
biwgTUEgMDIxMTAtMTMwMSwgVVNBLgotKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgImV3a19oaXN0b3J5LmgiCi0KLSNpbmNsdWRlICJCYWNrRm9yd2FyZExpc3QuaCIKLSNpbmNs
dWRlICJDYWlyb1V0aWxpdGllc0VmbC5oIgotI2luY2x1ZGUgIkhpc3RvcnlJdGVtLmgiCi0jaW5j
bHVkZSAiSWNvbkRhdGFiYXNlQmFzZS5oIgotI2luY2x1ZGUgIkltYWdlLmgiCi0jaW5jbHVkZSAi
SW50U2l6ZS5oIgotI2luY2x1ZGUgIlBhZ2UuaCIKLSNpbmNsdWRlICJQYWdlR3JvdXAuaCIKLSNp
bmNsdWRlICJld2tfaGlzdG9yeV9wcml2YXRlLmgiCi0jaW5jbHVkZSAiZXdrX3ByaXZhdGUuaCIK
LSNpbmNsdWRlIDxFaW5hLmg+Ci0jaW5jbHVkZSA8ZWluYV9zYWZldHlfY2hlY2tzLmg+Ci0jaW5j
bHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgotCi1zdHJ1Y3QgX0V3a19IaXN0b3J5IHsKLSAgICBX
ZWJDb3JlOjpCYWNrRm9yd2FyZExpc3QqIGNvcmU7Ci19OwotCi0jZGVmaW5lIEVXS19ISVNUT1JZ
X0NPUkVfR0VUX09SX1JFVFVSTihoaXN0b3J5LCBjb3JlXywgLi4uKSAgICAgIFwKLSAgICBpZiAo
IShoaXN0b3J5KSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAotICAgICAgICBDUklUSUNBTCgiaGlzdG9yeSBpcyBOVUxMLiIpOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCi0gICAgICAgIHJldHVybiBfX1ZBX0FSR1NfXzsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGlmICghKGhpc3RvcnkpLT5j
b3JlKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIENS
SVRJQ0FMKCJoaXN0b3J5LT5jb3JlIGlzIE5VTEwuIik7ICAgICAgICAgICAgICAgICAgICAgIFwK
LSAgICAgICAgcmV0dXJuIF9fVkFfQVJHU19fOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAotICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCi0gICAgaWYgKCEoaGlzdG9yeSktPmNvcmUtPmVuYWJsZWQo
KSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgRVJSKCJoaXN0b3J5LT5j
b3JlIGlzIGRpc2FibGVkIS4iKTsgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICByZXR1
cm4gX19WQV9BUkdTX187ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0g
ICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKLSAgICBXZWJDb3JlOjpCYWNrRm9yd2FyZExpc3QqIGNvcmVfID0gKGhpc3Rvcnkp
LT5jb3JlCi0KLQotc3RydWN0IF9Fd2tfSGlzdG9yeV9JdGVtIHsKLSAgICBXZWJDb3JlOjpIaXN0
b3J5SXRlbSogY29yZTsKLQotICAgIGNvbnN0IGNoYXIqIHRpdGxlOwotICAgIGNvbnN0IGNoYXIq
IGFsdGVybmF0ZVRpdGxlOwotICAgIGNvbnN0IGNoYXIqIHVyaTsKLSAgICBjb25zdCBjaGFyKiBv
cmlnaW5hbFVyaTsKLX07Ci0KLSNkZWZpbmUgRVdLX0hJU1RPUllfSVRFTV9DT1JFX0dFVF9PUl9S
RVRVUk4oaXRlbSwgY29yZV8sIC4uLikgXAotICAgIGlmICghKGl0ZW0pKSB7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIENSSVRJQ0FMKCJpdGVt
IGlzIE5VTEwuIik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgcmV0dXJu
IF9fVkFfQVJHU19fOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIH0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
Ci0gICAgaWYgKCEoaXRlbSktPmNvcmUpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKLSAgICAgICAgQ1JJVElDQUwoIml0ZW0tPmNvcmUgaXMgTlVMTC4iKTsgICAgICAg
ICAgICAgICAgICAgICAgXAotICAgICAgICByZXR1cm4gX19WQV9BUkdTX187ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBXZWJDb3JlOjpIaXN0b3J5SXRl
bSogY29yZV8gPSAoaXRlbSktPmNvcmUKLQotc3RhdGljIGlubGluZSBFaW5hX0xpc3QqIF9ld2tf
aGlzdG9yeV9pdGVtX2xpc3RfZ2V0KGNvbnN0IFdlYkNvcmU6Okhpc3RvcnlJdGVtVmVjdG9yJiBj
b3JlSXRlbXMpCi17Ci0gICAgRWluYV9MaXN0KiByZXN1bHQgPSAwOwotICAgIHVuc2lnbmVkIGlu
dCBzaXplOwotCi0gICAgc2l6ZSA9IGNvcmVJdGVtcy5zaXplKCk7Ci0gICAgZm9yICh1bnNpZ25l
ZCBpbnQgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKLSAgICAgICAgRXdrX0hpc3RvcnlfSXRlbSog
aXRlbSA9IGV3a19oaXN0b3J5X2l0ZW1fbmV3X2Zyb21fY29yZShjb3JlSXRlbXNbaV0uZ2V0KCkp
OwotICAgICAgICBpZiAoaXRlbSkKLSAgICAgICAgICAgIHJlc3VsdCA9IGVpbmFfbGlzdF9hcHBl
bmQocmVzdWx0LCBpdGVtKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1FaW5h
X0Jvb2wgZXdrX2hpc3RvcnlfY2xlYXIoRXdrX0hpc3RvcnkqIGhpc3RvcnkpCi17Ci0gICAgRVdL
X0hJU1RPUllfQ09SRV9HRVRfT1JfUkVUVVJOKGhpc3RvcnksIGNvcmUsIGZhbHNlKTsKLQotICAg
IFdlYkNvcmU6OlBhZ2UqIHBhZ2UgPSBjb3JlLT5wYWdlKCk7Ci0gICAgaWYgKHBhZ2UgJiYgcGFn
ZS0+Z3JvdXBQdHIoKSkKLSAgICAgICAgcGFnZS0+Z3JvdXBQdHIoKS0+cmVtb3ZlVmlzaXRlZExp
bmtzKCk7Ci0KLSAgICBjb25zdCBpbnQgbGltaXQgPSBld2tfaGlzdG9yeV9saW1pdF9nZXQoaGlz
dG9yeSk7Ci0gICAgZXdrX2hpc3RvcnlfbGltaXRfc2V0KGhpc3RvcnksIDApOwotICAgIGV3a19o
aXN0b3J5X2xpbWl0X3NldChoaXN0b3J5LCBsaW1pdCk7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0K
LQotRWluYV9Cb29sIGV3a19oaXN0b3J5X2ZvcndhcmQoRXdrX0hpc3RvcnkqIGhpc3RvcnkpCi17
Ci0gICAgRVdLX0hJU1RPUllfQ09SRV9HRVRfT1JfUkVUVVJOKGhpc3RvcnksIGNvcmUsIGZhbHNl
KTsKLSAgICBpZiAoY29yZS0+Zm9yd2FyZExpc3RDb3VudCgpIDwgMSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIGNvcmUtPmdvRm9yd2FyZCgpOwotICAgIHJldHVybiB0cnVlOwotfQotCi1F
aW5hX0Jvb2wgZXdrX2hpc3RvcnlfYmFjayhFd2tfSGlzdG9yeSogaGlzdG9yeSkKLXsKLSAgICBF
V0tfSElTVE9SWV9DT1JFX0dFVF9PUl9SRVRVUk4oaGlzdG9yeSwgY29yZSwgZmFsc2UpOwotICAg
IGlmIChjb3JlLT5iYWNrTGlzdENvdW50KCkgPCAxKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgY29yZS0+Z29CYWNrKCk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLUVpbmFfQm9vbCBld2tf
aGlzdG9yeV9oaXN0b3J5X2l0ZW1fYWRkKEV3a19IaXN0b3J5KiBoaXN0b3J5LCBjb25zdCBFd2tf
SGlzdG9yeV9JdGVtKiBpdGVtKQotewotICAgIEVXS19ISVNUT1JZX0NPUkVfR0VUX09SX1JFVFVS
TihoaXN0b3J5LCBoaXN0b3J5X2NvcmUsIGZhbHNlKTsKLSAgICBFV0tfSElTVE9SWV9JVEVNX0NP
UkVfR0VUX09SX1JFVFVSTihpdGVtLCBpdGVtX2NvcmUsIGZhbHNlKTsKLSAgICBoaXN0b3J5X2Nv
cmUtPmFkZEl0ZW0oaXRlbV9jb3JlKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotRWluYV9Cb29s
IGV3a19oaXN0b3J5X2hpc3RvcnlfaXRlbV9zZXQoRXdrX0hpc3RvcnkqIGhpc3RvcnksIGNvbnN0
IEV3a19IaXN0b3J5X0l0ZW0qIGl0ZW0pCi17Ci0gICAgRVdLX0hJU1RPUllfQ09SRV9HRVRfT1Jf
UkVUVVJOKGhpc3RvcnksIGhpc3RvcnlfY29yZSwgZmFsc2UpOwotICAgIEVXS19ISVNUT1JZX0lU
RU1fQ09SRV9HRVRfT1JfUkVUVVJOKGl0ZW0sIGl0ZW1fY29yZSwgZmFsc2UpOwotICAgIGhpc3Rv
cnlfY29yZS0+Z29Ub0l0ZW0oaXRlbV9jb3JlKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotRXdr
X0hpc3RvcnlfSXRlbSogZXdrX2hpc3RvcnlfaGlzdG9yeV9pdGVtX2JhY2tfZ2V0KGNvbnN0IEV3
a19IaXN0b3J5KiBoaXN0b3J5KQotewotICAgIEVXS19ISVNUT1JZX0NPUkVfR0VUX09SX1JFVFVS
TihoaXN0b3J5LCBjb3JlLCAwKTsKLSAgICByZXR1cm4gZXdrX2hpc3RvcnlfaXRlbV9uZXdfZnJv
bV9jb3JlKGNvcmUtPmJhY2tJdGVtKCkpOwotfQotCi1Fd2tfSGlzdG9yeV9JdGVtKiBld2tfaGlz
dG9yeV9oaXN0b3J5X2l0ZW1fY3VycmVudF9nZXQoY29uc3QgRXdrX0hpc3RvcnkqIGhpc3Rvcnkp
Ci17Ci0gICAgRVdLX0hJU1RPUllfQ09SRV9HRVRfT1JfUkVUVVJOKGhpc3RvcnksIGNvcmUsIDAp
OwotICAgIFdlYkNvcmU6Okhpc3RvcnlJdGVtKiBjdXJyZW50SXRlbSA9IGNvcmUtPmN1cnJlbnRJ
dGVtKCk7Ci0gICAgaWYgKGN1cnJlbnRJdGVtKQotICAgICAgICByZXR1cm4gZXdrX2hpc3Rvcnlf
aXRlbV9uZXdfZnJvbV9jb3JlKGN1cnJlbnRJdGVtKTsKLSAgICByZXR1cm4gMDsKLX0KLQotRXdr
X0hpc3RvcnlfSXRlbSogZXdrX2hpc3RvcnlfaGlzdG9yeV9pdGVtX2ZvcndhcmRfZ2V0KGNvbnN0
IEV3a19IaXN0b3J5KiBoaXN0b3J5KQotewotICAgIEVXS19ISVNUT1JZX0NPUkVfR0VUX09SX1JF
VFVSTihoaXN0b3J5LCBjb3JlLCAwKTsKLSAgICByZXR1cm4gZXdrX2hpc3RvcnlfaXRlbV9uZXdf
ZnJvbV9jb3JlKGNvcmUtPmZvcndhcmRJdGVtKCkpOwotfQotCi1Fd2tfSGlzdG9yeV9JdGVtKiBl
d2tfaGlzdG9yeV9oaXN0b3J5X2l0ZW1fbnRoX2dldChjb25zdCBFd2tfSGlzdG9yeSogaGlzdG9y
eSwgaW50IGluZGV4KQotewotICAgIEVXS19ISVNUT1JZX0NPUkVfR0VUX09SX1JFVFVSTihoaXN0
b3J5LCBjb3JlLCAwKTsKLSAgICByZXR1cm4gZXdrX2hpc3RvcnlfaXRlbV9uZXdfZnJvbV9jb3Jl
KGNvcmUtPml0ZW1BdEluZGV4KGluZGV4KSk7Ci19Ci0KLUVpbmFfQm9vbCBld2tfaGlzdG9yeV9o
aXN0b3J5X2l0ZW1fY29udGFpbnMoY29uc3QgRXdrX0hpc3RvcnkqIGhpc3RvcnksIGNvbnN0IEV3
a19IaXN0b3J5X0l0ZW0qIGl0ZW0pCi17Ci0gICAgRVdLX0hJU1RPUllfQ09SRV9HRVRfT1JfUkVU
VVJOKGhpc3RvcnksIGhpc3RvcnlfY29yZSwgZmFsc2UpOwotICAgIEVXS19ISVNUT1JZX0lURU1f
Q09SRV9HRVRfT1JfUkVUVVJOKGl0ZW0sIGl0ZW1fY29yZSwgZmFsc2UpOwotICAgIHJldHVybiBo
aXN0b3J5X2NvcmUtPmNvbnRhaW5zSXRlbShpdGVtX2NvcmUpOwotfQotCi1FaW5hX0xpc3QqIGV3
a19oaXN0b3J5X2ZvcndhcmRfbGlzdF9nZXQoY29uc3QgRXdrX0hpc3RvcnkqIGhpc3RvcnkpCi17
Ci0gICAgRVdLX0hJU1RPUllfQ09SRV9HRVRfT1JfUkVUVVJOKGhpc3RvcnksIGNvcmUsIDApOwot
ICAgIFdlYkNvcmU6Okhpc3RvcnlJdGVtVmVjdG9yIGl0ZW1zOwotICAgIGludCBsaW1pdCA9IGNv
cmUtPmZvcndhcmRMaXN0Q291bnQoKTsKLSAgICBjb3JlLT5mb3J3YXJkTGlzdFdpdGhMaW1pdChs
aW1pdCwgaXRlbXMpOwotICAgIHJldHVybiBfZXdrX2hpc3RvcnlfaXRlbV9saXN0X2dldChpdGVt
cyk7Ci19Ci0KLUVpbmFfTGlzdCogZXdrX2hpc3RvcnlfZm9yd2FyZF9saXN0X2dldF93aXRoX2xp
bWl0KGNvbnN0IEV3a19IaXN0b3J5KiBoaXN0b3J5LCBpbnQgbGltaXQpCi17Ci0gICAgRVdLX0hJ
U1RPUllfQ09SRV9HRVRfT1JfUkVUVVJOKGhpc3RvcnksIGNvcmUsIDApOwotICAgIFdlYkNvcmU6
Okhpc3RvcnlJdGVtVmVjdG9yIGl0ZW1zOwotICAgIGNvcmUtPmZvcndhcmRMaXN0V2l0aExpbWl0
KGxpbWl0LCBpdGVtcyk7Ci0gICAgcmV0dXJuIF9ld2tfaGlzdG9yeV9pdGVtX2xpc3RfZ2V0KGl0
ZW1zKTsKLX0KLQotaW50IGV3a19oaXN0b3J5X2ZvcndhcmRfbGlzdF9sZW5ndGgoY29uc3QgRXdr
X0hpc3RvcnkqIGhpc3RvcnkpCi17Ci0gICAgRVdLX0hJU1RPUllfQ09SRV9HRVRfT1JfUkVUVVJO
KGhpc3RvcnksIGNvcmUsIDApOwotICAgIHJldHVybiBjb3JlLT5mb3J3YXJkTGlzdENvdW50KCk7
Ci19Ci0KLUVpbmFfTGlzdCogZXdrX2hpc3RvcnlfYmFja19saXN0X2dldChjb25zdCBFd2tfSGlz
dG9yeSogaGlzdG9yeSkKLXsKLSAgICBFV0tfSElTVE9SWV9DT1JFX0dFVF9PUl9SRVRVUk4oaGlz
dG9yeSwgY29yZSwgMCk7Ci0gICAgV2ViQ29yZTo6SGlzdG9yeUl0ZW1WZWN0b3IgaXRlbXM7Ci0g
ICAgaW50IGxpbWl0ID0gY29yZS0+YmFja0xpc3RDb3VudCgpOwotICAgIGNvcmUtPmJhY2tMaXN0
V2l0aExpbWl0KGxpbWl0LCBpdGVtcyk7Ci0gICAgcmV0dXJuIF9ld2tfaGlzdG9yeV9pdGVtX2xp
c3RfZ2V0KGl0ZW1zKTsKLX0KLQotRWluYV9MaXN0KiBld2tfaGlzdG9yeV9iYWNrX2xpc3RfZ2V0
X3dpdGhfbGltaXQoY29uc3QgRXdrX0hpc3RvcnkqIGhpc3RvcnksIGludCBsaW1pdCkKLXsKLSAg
ICBFV0tfSElTVE9SWV9DT1JFX0dFVF9PUl9SRVRVUk4oaGlzdG9yeSwgY29yZSwgMCk7Ci0gICAg
V2ViQ29yZTo6SGlzdG9yeUl0ZW1WZWN0b3IgaXRlbXM7Ci0gICAgY29yZS0+YmFja0xpc3RXaXRo
TGltaXQobGltaXQsIGl0ZW1zKTsKLSAgICByZXR1cm4gX2V3a19oaXN0b3J5X2l0ZW1fbGlzdF9n
ZXQoaXRlbXMpOwotfQotCi1pbnQgZXdrX2hpc3RvcnlfYmFja19saXN0X2xlbmd0aChjb25zdCBF
d2tfSGlzdG9yeSogaGlzdG9yeSkKLXsKLSAgICBFV0tfSElTVE9SWV9DT1JFX0dFVF9PUl9SRVRV
Uk4oaGlzdG9yeSwgY29yZSwgMCk7Ci0gICAgcmV0dXJuIGNvcmUtPmJhY2tMaXN0Q291bnQoKTsK
LX0KLQotaW50IGV3a19oaXN0b3J5X2xpbWl0X2dldChjb25zdCBFd2tfSGlzdG9yeSogaGlzdG9y
eSkKLXsKLSAgICBFV0tfSElTVE9SWV9DT1JFX0dFVF9PUl9SRVRVUk4oaGlzdG9yeSwgY29yZSwg
MCk7Ci0gICAgcmV0dXJuIGNvcmUtPmNhcGFjaXR5KCk7Ci19Ci0KLUVpbmFfQm9vbCBld2tfaGlz
dG9yeV9saW1pdF9zZXQoY29uc3QgRXdrX0hpc3RvcnkqIGhpc3RvcnksIGludCBsaW1pdCkKLXsK
LSAgICBFV0tfSElTVE9SWV9DT1JFX0dFVF9PUl9SRVRVUk4oaGlzdG9yeSwgY29yZSwgZmFsc2Up
OwotICAgIGNvcmUtPnNldENhcGFjaXR5KGxpbWl0KTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQot
RXdrX0hpc3RvcnlfSXRlbSogZXdrX2hpc3RvcnlfaXRlbV9uZXdfZnJvbV9jb3JlKFdlYkNvcmU6
Okhpc3RvcnlJdGVtKiBjb3JlKQotewotICAgIEV3a19IaXN0b3J5X0l0ZW0qIGl0ZW07Ci0KLSAg
ICBpZiAoIWNvcmUpIHsKLSAgICAgICAgRVJSKCJXZWJDb3JlOjpIaXN0b3J5SXRlbSBpcyBOVUxM
LiIpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBjb3JlLT5yZWYoKTsKLQotICAg
IGl0ZW0gPSBuZXcgRXdrX0hpc3RvcnlfSXRlbTsKLSAgICBtZW1zZXQoaXRlbSwgMCwgc2l6ZW9m
KCppdGVtKSk7Ci0gICAgaXRlbS0+Y29yZSA9IGNvcmU7Ci0KLSAgICByZXR1cm4gaXRlbTsKLX0K
LQotRXdrX0hpc3RvcnlfSXRlbSogZXdrX2hpc3RvcnlfaXRlbV9uZXcoY29uc3QgY2hhciogdXJp
LCBjb25zdCBjaGFyKiB0aXRsZSkKLXsKLSAgICBXVEY6OlN0cmluZyBoaXN0b3J5VXJpID0gV1RG
OjpTdHJpbmc6OmZyb21VVEY4KHVyaSk7Ci0gICAgV1RGOjpTdHJpbmcgaGlzdG9yeVRpdGxlID0g
V1RGOjpTdHJpbmc6OmZyb21VVEY4KHRpdGxlKTsKLSAgICBXVEY6OlJlZlB0cjxXZWJDb3JlOjpI
aXN0b3J5SXRlbT4gY29yZSA9IFdlYkNvcmU6Okhpc3RvcnlJdGVtOjpjcmVhdGUoaGlzdG9yeVVy
aSwgaGlzdG9yeVRpdGxlKTsKLSAgICBFd2tfSGlzdG9yeV9JdGVtKiBpdGVtID0gZXdrX2hpc3Rv
cnlfaXRlbV9uZXdfZnJvbV9jb3JlKGNvcmUucmVsZWFzZSgpLmxlYWtSZWYoKSk7Ci0gICAgcmV0
dXJuIGl0ZW07Ci19Ci0KLXN0YXRpYyBpbmxpbmUgdm9pZCBfZXdrX2hpc3RvcnlfaXRlbV9mcmVl
KEV3a19IaXN0b3J5X0l0ZW0qIGl0ZW0sIFdlYkNvcmU6Okhpc3RvcnlJdGVtKiBjb3JlKQotewot
ICAgIGNvcmUtPmRlcmVmKCk7Ci0gICAgZGVsZXRlIGl0ZW07Ci19Ci0KLXZvaWQgZXdrX2hpc3Rv
cnlfaXRlbV9mcmVlKEV3a19IaXN0b3J5X0l0ZW0qIGl0ZW0pCi17Ci0gICAgRVdLX0hJU1RPUllf
SVRFTV9DT1JFX0dFVF9PUl9SRVRVUk4oaXRlbSwgY29yZSk7Ci0gICAgX2V3a19oaXN0b3J5X2l0
ZW1fZnJlZShpdGVtLCBjb3JlKTsKLX0KLQotdm9pZCBld2tfaGlzdG9yeV9pdGVtX2xpc3RfZnJl
ZShFaW5hX0xpc3QqIGhpc3RvcnlfaXRlbXMpCi17Ci0gICAgdm9pZCogZGVsZXRlSXRlbTsKLSAg
ICBFSU5BX0xJU1RfRlJFRShoaXN0b3J5X2l0ZW1zLCBkZWxldGVJdGVtKSB7Ci0gICAgICAgIEV3
a19IaXN0b3J5X0l0ZW0qIGl0ZW0gPSAoRXdrX0hpc3RvcnlfSXRlbSopZGVsZXRlSXRlbTsKLSAg
ICAgICAgX2V3a19oaXN0b3J5X2l0ZW1fZnJlZShpdGVtLCBpdGVtLT5jb3JlKTsKLSAgICB9Ci19
Ci0KLWNvbnN0IGNoYXIqIGV3a19oaXN0b3J5X2l0ZW1fdGl0bGVfZ2V0KGNvbnN0IEV3a19IaXN0
b3J5X0l0ZW0qIGl0ZW0pCi17Ci0gICAgRVdLX0hJU1RPUllfSVRFTV9DT1JFX0dFVF9PUl9SRVRV
Uk4oaXRlbSwgY29yZSwgMCk7Ci0gICAgLy8gaGlkZSB0aGUgZm9sbG93aW5nIG9wdGltemF0aW9u
IGZyb20gb3V0c2lkZQotICAgIEV3a19IaXN0b3J5X0l0ZW0qIGhpc3RvcnlJdGVtID0gY29uc3Rf
Y2FzdDxFd2tfSGlzdG9yeV9JdGVtKj4oaXRlbSk7Ci0gICAgZWluYV9zdHJpbmdzaGFyZV9yZXBs
YWNlKCZoaXN0b3J5SXRlbS0+dGl0bGUsIGNvcmUtPnRpdGxlKCkudXRmOCgpLmRhdGEoKSk7Ci0g
ICAgcmV0dXJuIGhpc3RvcnlJdGVtLT50aXRsZTsKLX0KLQotY29uc3QgY2hhciogZXdrX2hpc3Rv
cnlfaXRlbV90aXRsZV9hbHRlcm5hdGVfZ2V0KGNvbnN0IEV3a19IaXN0b3J5X0l0ZW0qIGl0ZW0p
Ci17Ci0gICAgRVdLX0hJU1RPUllfSVRFTV9DT1JFX0dFVF9PUl9SRVRVUk4oaXRlbSwgY29yZSwg
MCk7Ci0gICAgLy8gaGlkZSB0aGUgZm9sbG93aW5nIG9wdGltemF0aW9uIGZyb20gb3V0c2lkZQot
ICAgIEV3a19IaXN0b3J5X0l0ZW0qIGhpc3RvcnlJdGVtID0gY29uc3RfY2FzdDxFd2tfSGlzdG9y
eV9JdGVtKj4oaXRlbSk7Ci0gICAgZWluYV9zdHJpbmdzaGFyZV9yZXBsYWNlKCZoaXN0b3J5SXRl
bS0+YWx0ZXJuYXRlVGl0bGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcmUtPmFs
dGVybmF0ZVRpdGxlKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgcmV0dXJuIGhpc3RvcnlJdGVtLT5h
bHRlcm5hdGVUaXRsZTsKLX0KLQotdm9pZCBld2tfaGlzdG9yeV9pdGVtX3RpdGxlX2FsdGVybmF0
ZV9zZXQoRXdrX0hpc3RvcnlfSXRlbSogaXRlbSwgY29uc3QgY2hhciogdGl0bGUpCi17Ci0gICAg
RVdLX0hJU1RPUllfSVRFTV9DT1JFX0dFVF9PUl9SRVRVUk4oaXRlbSwgY29yZSk7Ci0gICAgaWYg
KCFlaW5hX3N0cmluZ3NoYXJlX3JlcGxhY2UoJml0ZW0tPmFsdGVybmF0ZVRpdGxlLCB0aXRsZSkp
Ci0gICAgICAgIHJldHVybjsKLSAgICBjb3JlLT5zZXRBbHRlcm5hdGVUaXRsZShXVEY6OlN0cmlu
Zzo6ZnJvbVVURjgodGl0bGUpKTsKLX0KLQotY29uc3QgY2hhciogZXdrX2hpc3RvcnlfaXRlbV91
cmlfZ2V0KGNvbnN0IEV3a19IaXN0b3J5X0l0ZW0qIGl0ZW0pCi17Ci0gICAgRVdLX0hJU1RPUllf
SVRFTV9DT1JFX0dFVF9PUl9SRVRVUk4oaXRlbSwgY29yZSwgMCk7Ci0gICAgLy8gaGlkZSB0aGUg
Zm9sbG93aW5nIG9wdGltemF0aW9uIGZyb20gb3V0c2lkZQotICAgIEV3a19IaXN0b3J5X0l0ZW0q
IGhpc3RvcnlJdGVtID0gY29uc3RfY2FzdDxFd2tfSGlzdG9yeV9JdGVtKj4oKGl0ZW0pKTsKLSAg
ICBlaW5hX3N0cmluZ3NoYXJlX3JlcGxhY2UoJmhpc3RvcnlJdGVtLT51cmksIGNvcmUtPnVybFN0
cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgIHJldHVybiBoaXN0b3J5SXRlbS0+dXJpOwotfQot
Ci1jb25zdCBjaGFyKiBld2tfaGlzdG9yeV9pdGVtX3VyaV9vcmlnaW5hbF9nZXQoY29uc3QgRXdr
X0hpc3RvcnlfSXRlbSogaXRlbSkKLXsKLSAgICBFV0tfSElTVE9SWV9JVEVNX0NPUkVfR0VUX09S
X1JFVFVSTihpdGVtLCBjb3JlLCAwKTsKLSAgICAvLyBoaWRlIHRoZSBmb2xsb3dpbmcgb3B0aW16
YXRpb24gZnJvbSBvdXRzaWRlCi0gICAgRXdrX0hpc3RvcnlfSXRlbSogaGlzdG9yeUl0ZW0gPSBj
b25zdF9jYXN0PEV3a19IaXN0b3J5X0l0ZW0qPihpdGVtKTsKLSAgICBlaW5hX3N0cmluZ3NoYXJl
X3JlcGxhY2UoJmhpc3RvcnlJdGVtLT5vcmlnaW5hbFVyaSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29yZS0+b3JpZ2luYWxVUkxTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAgICBy
ZXR1cm4gaGlzdG9yeUl0ZW0tPm9yaWdpbmFsVXJpOwotfQotCi1FdmFzX09iamVjdCogZXdrX2hp
c3RvcnlfaXRlbV9pY29uX29iamVjdF9hZGQoY29uc3QgRXdrX0hpc3RvcnlfSXRlbSogaXRlbSwg
RXZhcyogY2FudmFzKQotewotICAgIEVXS19ISVNUT1JZX0lURU1fQ09SRV9HRVRfT1JfUkVUVVJO
KGl0ZW0sIGNvcmUsIDApOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChjYW52
YXMsIDApOwotCi0gICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gc3VyZmFjZSA9IFdlYkNvcmU6
Omljb25EYXRhYmFzZSgpLnN5bmNocm9ub3VzTmF0aXZlSWNvbkZvclBhZ2VVUkwoY29yZS0+dXJs
KCksIFdlYkNvcmU6OkludFNpemUoMTYsIDE2KSk7Ci0gICAgaWYgKCFzdXJmYWNlKSB7Ci0gICAg
ICAgIEVSUigiaWNvbiBpcyBOVUxMLiIpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAg
ICByZXR1cm4gc3VyZmFjZSA/IFdlYkNvcmU6OmV2YXNPYmplY3RGcm9tQ2Fpcm9JbWFnZVN1cmZh
Y2UoY2FudmFzLCBzdXJmYWNlLmdldCgpKS5sZWFrUmVmKCkgOiAwOwotfQotCi1FaW5hX0Jvb2wg
ZXdrX2hpc3RvcnlfaXRlbV9wYWdlX2NhY2hlX2V4aXN0cyhjb25zdCBFd2tfSGlzdG9yeV9JdGVt
KiBpdGVtKQotewotICAgIEVXS19ISVNUT1JZX0lURU1fQ09SRV9HRVRfT1JfUkVUVVJOKGl0ZW0s
IGNvcmUsIGZhbHNlKTsKLSAgICByZXR1cm4gY29yZS0+aXNJblBhZ2VDYWNoZSgpOwotfQotCi1F
aW5hX0Jvb2wgZXdrX2hpc3RvcnlfaXRlbV92aXNpdF9sYXN0X2ZhaWxlZChjb25zdCBFd2tfSGlz
dG9yeV9JdGVtKiBpdGVtKQotewotICAgIEVXS19ISVNUT1JZX0lURU1fQ09SRV9HRVRfT1JfUkVU
VVJOKGl0ZW0sIGNvcmUsIHRydWUpOwotICAgIHJldHVybiBjb3JlLT5sYXN0VmlzaXRXYXNGYWls
dXJlKCk7Ci19Ci0KLQotLyogaW50ZXJuYWwgbWV0aG9kcyAqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotLyoqCi0gKiBAaW50ZXJuYWwKLSAqCi0g
KiBDcmVhdGVzIGhpc3RvcnkgZm9yIGdpdmVuIHZpZXcuIENhbGxlZCBpbnRlcm5hbGx5IGJ5IGV3
a192aWV3IGFuZAotICogc2hvdWxkIG5ldmVyIGJlIGNhbGxlZCBmcm9tIG91dHNpZGUuCi0gKgot
ICogQHBhcmFtIGNvcmUgV2ViQ29yZTo6QmFja0ZvcndhcmRMaXN0IGluc3RhbmNlIHRvIHVzZSBp
bnRlcm5hbGx5LgotICoKLSAqIEByZXR1cm4gbmV3bHkgYWxsb2NhdGVkIGhpc3RvcnkgaW5zdGFu
Y2Ugb3IgQGMgTlVMTCBvbiBlcnJvcnMuCi0gKi8KLUV3a19IaXN0b3J5KiBld2tfaGlzdG9yeV9u
ZXcoV2ViQ29yZTo6QmFja0ZvcndhcmRMaXN0KiBjb3JlKQotewotICAgIEV3a19IaXN0b3J5KiBo
aXN0b3J5OwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChjb3JlLCAwKTsKLSAg
ICBEQkcoImNvcmU9JXAiLCBjb3JlKTsKLQotICAgIGhpc3RvcnkgPSBuZXcgRXdrX0hpc3Rvcnk7
Ci0gICAgaGlzdG9yeS0+Y29yZSA9IGNvcmU7Ci0gICAgY29yZS0+cmVmKCk7Ci0KLSAgICByZXR1
cm4gaGlzdG9yeTsKLX0KLQotLyoqCi0gKiBAaW50ZXJuYWwKLSAqCi0gKiBEZXN0cm95cyBwcmV2
aW91c2x5IGFsbG9jYXRlZCBoaXN0b3J5IGluc3RhbmNlLiBUaGlzIGlzIGNhbGxlZAotICogYXV0
b21hdGljYWxseSBieSBld2tfdmlldyBhbmQgc2hvdWxkIG5ldmVyIGJlIGNhbGxlZCBmcm9tIG91
dHNpZGUuCi0gKgotICogQHBhcmFtIGhpc3RvcnkgaW5zdGFuY2UgdG8gZnJlZQotICovCi12b2lk
IGV3a19oaXN0b3J5X2ZyZWUoRXdrX0hpc3RvcnkqIGhpc3RvcnkpCi17Ci0gICAgREJHKCJoaXN0
b3J5PSVwIiwgaGlzdG9yeSk7Ci0gICAgaGlzdG9yeS0+Y29yZS0+ZGVyZWYoKTsKLSAgICBkZWxl
dGUgaGlzdG9yeTsKLX0KLQotbmFtZXNwYWNlIEVXS1ByaXZhdGUgewotCi1XZWJDb3JlOjpIaXN0
b3J5SXRlbSogY29yZUhpc3RvcnlJdGVtKGNvbnN0IEV3a19IaXN0b3J5X0l0ZW0qIGV3a0hpc3Rv
cnlJdGVtKQotewotICAgIEVXS19ISVNUT1JZX0lURU1fQ09SRV9HRVRfT1JfUkVUVVJOKGV3a0hp
c3RvcnlJdGVtLCBjb3JlLCAwKTsKLSAgICByZXR1cm4gY29yZTsKLX0KLQotfSAvLyBuYW1lc3Bh
Y2UgRVdLUHJpdmF0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19oaXN0
b3J5LmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2hpc3RvcnkuaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMWQwNDc2Yi4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX2hpc3RvcnkuaAorKysgL2Rldi9udWxsCkBAIC0xLDM5MyArMCwwIEBACi0vKgot
ICAgIENvcHlyaWdodCAoQykgMjAwOS0yMDEwIFByb0ZVU0lPTiBlbWJlZGRlZCBzeXN0ZW1zCi0g
ICAgQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgU2Ftc3VuZyBFbGVjdHJvbmljcwotCi0gICAgVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgotICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCi0gICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCi0gICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
LSAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQotICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgotCi0gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAgIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gICAg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKLSAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSovCi0KLSNpZm5k
ZWYgZXdrX2hpc3RvcnlfaAotI2RlZmluZSBld2tfaGlzdG9yeV9oCi0KLSNpbmNsdWRlIDxFaW5h
Lmg+Ci0jaW5jbHVkZSA8RXZhcy5oPgotCi0jaWZkZWYgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIg
ewotI2VuZGlmCi0KLS8qKgotICogQGZpbGUgZXdrX2hpc3RvcnkuaAotICogQGJyaWVmIFRoZSBo
aXN0b3J5IChiYWNrLWZvcndhcmQgbGlzdCkgYXNzb2NpYXRlZCB3aXRoIGEgZ2l2ZW4gZXdrX3Zp
ZXcuCi0gKgotICogQ2hhbmdpbmcgdGhlIGhpc3RvcnkgYWZmZWN0cyBpbW1lZGlhdGVseSB0aGUg
dmlldywgY2hhbmdpbmcgdGhlCi0gKiBjdXJyZW50IHVyaSwgZm9yIGV4YW1wbGUuCi0gKgotICog
V2hlbiBld2tfdmlldyBpcyBuYXZpZ2F0ZWQgb3IgdXJpcyBhcmUgc2V0LCBoaXN0b3J5IGF1dG9t
YXRpY2FsbHkKLSAqIHVwZGF0ZXMuIFRoYXQncyB3aHkgbm8gZGlyZWN0IGFjY2VzcyB0byBoaXN0
b3J5IHN0cnVjdHVyZSBpcwotICogYWxsb3dlZC4KLSAqLwotdHlwZWRlZiBzdHJ1Y3QgX0V3a19I
aXN0b3J5ICAgICAgICAgRXdrX0hpc3Rvcnk7Ci0KLS8qKgotICogUmVwcmVzZW50cyBvbmUgaXRl
bSBmcm9tIEV3a19IaXN0b3J5LgotICovCi10eXBlZGVmIHN0cnVjdCBfRXdrX0hpc3RvcnlfSXRl
bSAgICBFd2tfSGlzdG9yeV9JdGVtOwotCi0KLQotLyoqCi0gKiBDbGVhciB0aGUgY3VycmVudCBo
aXN0b3J5LCBpZiB0aGVyZSBpcyBhbnkuCi0gKgotICogQHBhcmFtIGhpc3Rvcnkgd2hpY2ggaGlz
dG9yeSBpbnN0YW5jZSB0byBtb2RpZnkuCi0gKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24g
c3VjY2VzcywgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJlLgotICovCi1FQVBJIEVpbmFfQm9vbCAg
ICAgICAgIGV3a19oaXN0b3J5X2NsZWFyKEV3a19IaXN0b3J5ICpoaXN0b3J5KTsKLQotLyoqCi0g
KiBHbyBmb3J3YXJkIGluIGhpc3Rvcnkgb25lIGl0ZW0sIGlmIHBvc3NpYmxlLgotICoKLSAqIEBw
YXJhbSBoaXN0b3J5IHdoaWNoIGhpc3RvcnkgaW5zdGFuY2UgdG8gbW9kaWZ5LgotICoKLSAqIEBy
ZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3MsIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZS4K
LSAqLwotRUFQSSBFaW5hX0Jvb2wgICAgICAgICBld2tfaGlzdG9yeV9mb3J3YXJkKEV3a19IaXN0
b3J5ICpoaXN0b3J5KTsKLQotLyoqCi0gKiBHbyBiYWNrIGluIGhpc3Rvcnkgb25lIGl0ZW0sIGlm
IHBvc3NpYmxlLgotICoKLSAqIEBwYXJhbSBoaXN0b3J5IHdoaWNoIGhpc3RvcnkgaW5zdGFuY2Ug
dG8gbW9kaWZ5LgotICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3MsIEBjIEVJ
TkFfRkFMU0Ugb24gZmFpbHVyZS4KLSAqLwotRUFQSSBFaW5hX0Jvb2wgICAgICAgICBld2tfaGlz
dG9yeV9iYWNrKEV3a19IaXN0b3J5ICpoaXN0b3J5KTsKLQotLyoqCi0gKiBBZGRzIHRoZSBnaXZl
biBpdGVtIHRvIGhpc3RvcnkuCi0gKgotICogTWVtb3J5IGhhbmRsaW5nOiBUaGlzIHdpbGwgbm90
IG1vZGlmeSBvciBldmVuIHRha2UgcmVmZXJlbmNlcyB0bwotICogZ2l2ZW4gaXRlbSAoRXdrX0hp
c3RvcnlfSXRlbSksIHNvIHlvdSBzaG91bGQgc3RpbGwgaGFuZGxlIGl0IHdpdGgKLSAqIGV3a19o
aXN0b3J5X2l0ZW1fZnJlZSgpLgotICoKLSAqIEBwYXJhbSBoaXN0b3J5IHdoaWNoIGhpc3Rvcnkg
aW5zdGFuY2UgdG8gbW9kaWZ5LgotICogQHBhcmFtIGl0ZW0gcmVmZXJlbmNlIHRvIGFkZCB0byBo
aXN0b3J5LiBVbm1vZGlmaWVkLiBNdXN0IEBiIG5vdCBiZSBAYyBOVUxMLgotICoKLSAqIEByZXR1
cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3MsIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZS4KLSAq
LwotRUFQSSBFaW5hX0Jvb2wgICAgICAgICBld2tfaGlzdG9yeV9oaXN0b3J5X2l0ZW1fYWRkKEV3
a19IaXN0b3J5ICpoaXN0b3J5LCBjb25zdCBFd2tfSGlzdG9yeV9JdGVtICppdGVtKTsKLQotLyoq
Ci0gKiBTZXRzIHRoZSBnaXZlbiBpdGVtIGFzIGN1cnJlbnQgaW4gaGlzdG9yeSAoZ28gdG8gaXRl
bSkuCi0gKgotICogTWVtb3J5IGhhbmRsaW5nOiBUaGlzIHdpbGwgbm90IG1vZGlmeSBvciBldmVu
IHRha2UgcmVmZXJlbmNlcyB0bwotICogZ2l2ZW4gaXRlbSAoRXdrX0hpc3RvcnlfSXRlbSksIHNv
IHlvdSBzaG91bGQgc3RpbGwgaGFuZGxlIGl0IHdpdGgKLSAqIGV3a19oaXN0b3J5X2l0ZW1fZnJl
ZSgpLgotICoKLSAqIEBwYXJhbSBoaXN0b3J5IHdoaWNoIGhpc3RvcnkgaW5zdGFuY2UgdG8gbW9k
aWZ5LgotICogQHBhcmFtIGl0ZW0gcmVmZXJlbmNlIHRvIGdvIHRvIGhpc3RvcnkuIFVubW9kaWZp
ZWQuIE11c3QgQGIgbm90IGJlIEBjIE5VTEwuCi0gKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUg
b24gc3VjY2VzcywgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJlLgotICovCi1FQVBJIEVpbmFfQm9v
bCAgICAgICAgIGV3a19oaXN0b3J5X2hpc3RvcnlfaXRlbV9zZXQoRXdrX0hpc3RvcnkgKmhpc3Rv
cnksICBjb25zdCBFd2tfSGlzdG9yeV9JdGVtICppdGVtKTsKLQotLyoqCi0gKiBHZXQgdGhlIGZp
cnN0IGl0ZW0gZnJvbSBiYWNrIGxpc3QsIGlmIGFueS4KLSAqCi0gKiBAcGFyYW0gaGlzdG9yeSB3
aGljaCBoaXN0b3J5IGluc3RhbmNlIHRvIHF1ZXJ5LgotICoKLSAqIEByZXR1cm4gdGhlIEBiIG5l
d2x5IGFsbG9jYXRlZCBpdGVtIGluc3RhbmNlLiBUaGlzIG1lbW9yeSBtdXN0IGJlCi0gKiAgICAg
ICAgIHJlbGVhc2VkIHdpdGggZXdrX2hpc3RvcnlfaXRlbV9mcmVlKCkgYWZ0ZXIgdXNlLgotICov
Ci1FQVBJIEV3a19IaXN0b3J5X0l0ZW0gKmV3a19oaXN0b3J5X2hpc3RvcnlfaXRlbV9iYWNrX2dl
dChjb25zdCBFd2tfSGlzdG9yeSAqaGlzdG9yeSk7Ci0KLS8qKgotICogR2V0IHRoZSBjdXJyZW50
IGl0ZW0gaW4gaGlzdG9yeSwgaWYgYW55LgotICoKLSAqIEBwYXJhbSBoaXN0b3J5IHdoaWNoIGhp
c3RvcnkgaW5zdGFuY2UgdG8gcXVlcnkuCi0gKgotICogQHJldHVybiB0aGUgQGIgbmV3bHkgYWxs
b2NhdGVkIGl0ZW0gaW5zdGFuY2Ugb3IgQGMgTlVMTCBvbiBlcnJvci4gVGhpcyBtZW1vcnkKLSAq
ICAgICAgICAgbXVzdCBiZSByZWxlYXNlZCB3aXRoIGV3a19oaXN0b3J5X2l0ZW1fZnJlZSgpIGFm
dGVyIHVzZS4KLSAqLwotRUFQSSBFd2tfSGlzdG9yeV9JdGVtICpld2tfaGlzdG9yeV9oaXN0b3J5
X2l0ZW1fY3VycmVudF9nZXQoY29uc3QgRXdrX0hpc3RvcnkgKmhpc3RvcnkpOwotCi0vKioKLSAq
IEdldCB0aGUgZmlyc3QgaXRlbSBmcm9tIGZvcndhcmQgbGlzdCwgaWYgYW55LgotICoKLSAqIEBw
YXJhbSBoaXN0b3J5IHdoaWNoIGhpc3RvcnkgaW5zdGFuY2UgdG8gcXVlcnkuCi0gKgotICogQHJl
dHVybiB0aGUgQGIgbmV3bHkgYWxsb2NhdGVkIGl0ZW0gaW5zdGFuY2UuIFRoaXMgbWVtb3J5IG11
c3QgYmUKLSAqICAgICAgICAgcmVsZWFzZWQgd2l0aCBld2tfaGlzdG9yeV9pdGVtX2ZyZWUoKSBh
ZnRlciB1c2UuCi0gKi8KLUVBUEkgRXdrX0hpc3RvcnlfSXRlbSAqZXdrX2hpc3RvcnlfaGlzdG9y
eV9pdGVtX2ZvcndhcmRfZ2V0KGNvbnN0IEV3a19IaXN0b3J5ICpoaXN0b3J5KTsKLQotLyoqCi0g
KiBHZXQgaXRlbSBhdCBnaXZlbiBwb3NpdGlvbiwgaWYgYW55IGF0IHRoYXQgaW5kZXguCi0gKgot
ICogQHBhcmFtIGhpc3Rvcnkgd2hpY2ggaGlzdG9yeSBpbnN0YW5jZSB0byBxdWVyeS4KLSAqIEBw
YXJhbSBpbmRleCBwb3NpdGlvbiBvZiBpdGVtIHRvIGdldC4KLSAqCi0gKiBAcmV0dXJuIHRoZSBA
YiBuZXdseSBhbGxvY2F0ZWQgaXRlbSBpbnN0YW5jZS4gVGhpcyBtZW1vcnkgbXVzdCBiZQotICog
ICAgICAgICByZWxlYXNlZCB3aXRoIGV3a19oaXN0b3J5X2l0ZW1fZnJlZSgpIGFmdGVyIHVzZS4K
LSAqLwotRUFQSSBFd2tfSGlzdG9yeV9JdGVtICpld2tfaGlzdG9yeV9oaXN0b3J5X2l0ZW1fbnRo
X2dldChjb25zdCBFd2tfSGlzdG9yeSAqaGlzdG9yeSwgaW50IGluZGV4KTsKLQotLyoqCi0gKiBR
dWVyaWVzIGlmIGdpdmVuIGl0ZW0gaXMgaW4gaGlzdG9yeS4KLSAqCi0gKiBNZW1vcnkgaGFuZGxp
bmc6IFRoaXMgd2lsbCBub3QgbW9kaWZ5IG9yIGV2ZW4gdGFrZSByZWZlcmVuY2VzIHRvCi0gKiBn
aXZlbiBpdGVtIChFd2tfSGlzdG9yeV9JdGVtKSwgc28geW91IHNob3VsZCBzdGlsbCBoYW5kbGUg
aXQgd2l0aAotICogZXdrX2hpc3RvcnlfaXRlbV9mcmVlKCkuCi0gKgotICogQHBhcmFtIGhpc3Rv
cnkgd2hpY2ggaGlzdG9yeSBpbnN0YW5jZSB0byBtb2RpZnkuCi0gKiBAcGFyYW0gaXRlbSByZWZl
cmVuY2UgdG8gY2hlY2sgaW4gaGlzdG9yeS4gTXVzdCBAYiBub3QgYmUgQGMgTlVMTC4KLSAqCi0g
KiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiBpbiBoaXN0b3J5LCBAYyBFSU5BX0ZBTFNFIGlmIG5v
dCBvciBmYWlsdXJlLgotICovCi1FQVBJIEVpbmFfQm9vbCAgICAgICAgIGV3a19oaXN0b3J5X2hp
c3RvcnlfaXRlbV9jb250YWlucyhjb25zdCBFd2tfSGlzdG9yeSAqaGlzdG9yeSwgY29uc3QgRXdr
X0hpc3RvcnlfSXRlbSAqaXRlbSk7Ci0KLS8qKgotICogR2V0IHRoZSB3aG9sZSBmb3J3YXJkIGxp
c3QuCi0gKgotICogQHBhcmFtIGhpc3Rvcnkgd2hpY2ggaGlzdG9yeSBpbnN0YW5jZSB0byBxdWVy
eS4KLSAqCi0gKiBAcmV0dXJuIGEgbmV3bHkgYWxsb2NhdGVkIGxpc3Qgb2YgQGIgbmV3bHkgYWxs
b2NhdGVkIGl0ZW0KLSAqICAgICAgICAgaW5zdGFuY2UuIFRoaXMgbWVtb3J5IG9mIGVhY2ggaXRl
bSBtdXN0IGJlIHJlbGVhc2VkIHdpdGgKLSAqICAgICAgICAgZXdrX2hpc3RvcnlfaXRlbV9mcmVl
KCkgYWZ0ZXIgdXNlLiB1c2UKLSAqICAgICAgICAgZXdrX2hpc3RvcnlfaXRlbV9saXN0X2ZyZWUo
KSBmb3IgY29udmVuaWVuY2UuCi0gKgotICogQHNlZSBld2tfaGlzdG9yeV9pdGVtX2xpc3RfZnJl
ZSgpCi0gKiBAc2VlIGV3a19oaXN0b3J5X2ZvcndhcmRfbGlzdF9nZXRfd2l0aF9saW1pdCgpCi0g
Ki8KLUVBUEkgRWluYV9MaXN0ICAgICAgICAqZXdrX2hpc3RvcnlfZm9yd2FyZF9saXN0X2dldChj
b25zdCBFd2tfSGlzdG9yeSAqaGlzdG9yeSk7Ci0KLS8qKgotICogR2V0IHRoZSBmb3J3YXJkIGxp
c3Qgd2l0aGluIHRoZSBnaXZlbiBsaW1pdC4KLSAqCi0gKiBAcGFyYW0gaGlzdG9yeSB3aGljaCBo
aXN0b3J5IGluc3RhbmNlIHRvIHF1ZXJ5LgotICogQHBhcmFtIGxpbWl0IHRoZSBtYXhpbXVtIG51
bWJlciBvZiBpdGVtcyB0byByZXR1cm4uCi0gKgotICogQHJldHVybiBhIG5ld2x5IGFsbG9jYXRl
ZCBsaXN0IG9mIEBiIG5ld2x5IGFsbG9jYXRlZCBpdGVtCi0gKiAgICAgICAgIGluc3RhbmNlLiBU
aGlzIG1lbW9yeSBvZiBlYWNoIGl0ZW0gbXVzdCBiZSByZWxlYXNlZCB3aXRoCi0gKiAgICAgICAg
IGV3a19oaXN0b3J5X2l0ZW1fZnJlZSgpIGFmdGVyIHVzZS4gdXNlCi0gKiAgICAgICAgIGV3a19o
aXN0b3J5X2l0ZW1fbGlzdF9mcmVlKCkgZm9yIGNvbnZlbmllbmNlLgotICoKLSAqIEBzZWUgZXdr
X2hpc3RvcnlfaXRlbV9saXN0X2ZyZWUoKQotICogQHNlZSBld2tfaGlzdG9yeV9mb3J3YXJkX2xp
c3RfbGVuZ3RoKCkKLSAqIEBzZWUgZXdrX2hpc3RvcnlfZm9yd2FyZF9saXN0X2dldCgpCi0gKi8K
LUVBUEkgRWluYV9MaXN0ICAgICAgICAqZXdrX2hpc3RvcnlfZm9yd2FyZF9saXN0X2dldF93aXRo
X2xpbWl0KGNvbnN0IEV3a19IaXN0b3J5ICpoaXN0b3J5LCBpbnQgbGltaXQpOwotCi0vKioKLSAq
IEdldCB0aGUgd2hvbGUgc2l6ZSBvZiBmb3J3YXJkIGxpc3QuCi0gKgotICogQHBhcmFtIGhpc3Rv
cnkgd2hpY2ggaGlzdG9yeSBpbnN0YW5jZSB0byBxdWVyeS4KLSAqCi0gKiBAcmV0dXJuIG51bWJl
ciBvZiBlbGVtZW50cyBpbiB3aG9sZSBsaXN0LgotICoKLSAqIEBzZWUgZXdrX2hpc3RvcnlfZm9y
d2FyZF9saXN0X2dldF93aXRoX2xpbWl0KCkKLSAqLwotRUFQSSBpbnQgICAgICAgICAgICAgICBl
d2tfaGlzdG9yeV9mb3J3YXJkX2xpc3RfbGVuZ3RoKGNvbnN0IEV3a19IaXN0b3J5ICpoaXN0b3J5
KTsKLQotLyoqCi0gKiBHZXQgdGhlIHdob2xlIGJhY2sgbGlzdC4KLSAqCi0gKiBAcGFyYW0gaGlz
dG9yeSB3aGljaCBoaXN0b3J5IGluc3RhbmNlIHRvIHF1ZXJ5LgotICoKLSAqIEByZXR1cm4gYSBu
ZXdseSBhbGxvY2F0ZWQgbGlzdCBvZiBAYiBuZXdseSBhbGxvY2F0ZWQgaXRlbQotICogICAgICAg
ICBpbnN0YW5jZS4gVGhpcyBtZW1vcnkgb2YgZWFjaCBpdGVtIG11c3QgYmUgcmVsZWFzZWQgd2l0
aAotICogICAgICAgICBld2tfaGlzdG9yeV9pdGVtX2ZyZWUoKSBhZnRlciB1c2UuIHVzZQotICog
ICAgICAgICBld2tfaGlzdG9yeV9pdGVtX2xpc3RfZnJlZSgpIGZvciBjb252ZW5pZW5jZS4KLSAq
Ci0gKiBAc2VlIGV3a19oaXN0b3J5X2l0ZW1fbGlzdF9mcmVlKCkKLSAqIEBzZWUgZXdrX2hpc3Rv
cnlfYmFja19saXN0X2dldF93aXRoX2xpbWl0KCkKLSAqLwotRUFQSSBFaW5hX0xpc3QgICAgICAg
ICpld2tfaGlzdG9yeV9iYWNrX2xpc3RfZ2V0KGNvbnN0IEV3a19IaXN0b3J5ICpoaXN0b3J5KTsK
LQotLyoqCi0gKiBHZXQgdGhlIGJhY2sgbGlzdCB3aXRoaW4gdGhlIGdpdmVuIGxpbWl0LgotICoK
LSAqIEBwYXJhbSBoaXN0b3J5IHdoaWNoIGhpc3RvcnkgaW5zdGFuY2UgdG8gcXVlcnkuCi0gKiBA
cGFyYW0gbGltaXQgdGhlIG1heGltdW0gbnVtYmVyIG9mIGl0ZW1zIHRvIHJldHVybi4KLSAqCi0g
KiBAcmV0dXJuIGEgbmV3bHkgYWxsb2NhdGVkIGxpc3Qgb2YgQGIgbmV3bHkgYWxsb2NhdGVkIGl0
ZW0KLSAqICAgICAgICAgaW5zdGFuY2UuIFRoaXMgbWVtb3J5IG9mIGVhY2ggaXRlbSBtdXN0IGJl
IHJlbGVhc2VkIHdpdGgKLSAqICAgICAgICAgZXdrX2hpc3RvcnlfaXRlbV9mcmVlKCkgYWZ0ZXIg
dXNlLiB1c2UKLSAqICAgICAgICAgZXdrX2hpc3RvcnlfaXRlbV9saXN0X2ZyZWUoKSBmb3IgY29u
dmVuaWVuY2UuCi0gKgotICogQHNlZSBld2tfaGlzdG9yeV9pdGVtX2xpc3RfZnJlZSgpCi0gKiBA
c2VlIGV3a19oaXN0b3J5X2JhY2tfbGlzdF9sZW5ndGgoKQotICogQHNlZSBld2tfaGlzdG9yeV9i
YWNrX2xpc3RfZ2V0KCkKLSAqLwotRUFQSSBFaW5hX0xpc3QgICAgICAgICpld2tfaGlzdG9yeV9i
YWNrX2xpc3RfZ2V0X3dpdGhfbGltaXQoY29uc3QgRXdrX0hpc3RvcnkgKmhpc3RvcnksIGludCBs
aW1pdCk7Ci0KLS8qKgotICogR2V0IHRoZSB3aG9sZSBzaXplIG9mIGJhY2sgbGlzdC4KLSAqCi0g
KiBAcGFyYW0gaGlzdG9yeSB3aGljaCBoaXN0b3J5IGluc3RhbmNlIHRvIHF1ZXJ5LgotICoKLSAq
IEByZXR1cm4gbnVtYmVyIG9mIGVsZW1lbnRzIGluIHdob2xlIGxpc3QuCi0gKgotICogQHNlZSBl
d2tfaGlzdG9yeV9iYWNrX2xpc3RfZ2V0X3dpdGhfbGltaXQoKQotICovCi1FQVBJIGludCAgICAg
ICAgICAgICAgIGV3a19oaXN0b3J5X2JhY2tfbGlzdF9sZW5ndGgoY29uc3QgRXdrX0hpc3Rvcnkg
Kmhpc3RvcnkpOwotCi0vKioKLSAqIEdldCBtYXhpbXVtIGNhcGFjaXR5IG9mIGdpdmVuIGhpc3Rv
cnkuCi0gKgotICogQHBhcmFtIGhpc3Rvcnkgd2hpY2ggaGlzdG9yeSBpbnN0YW5jZSB0byBxdWVy
eS4KLSAqCi0gKiBAcmV0dXJuIG1heGltdW0gbnVtYmVyIG9mIGVudHJpZXMgdGhpcyBoaXN0b3J5
IHdpbGwgaG9sZC4KLSAqLwotRUFQSSBpbnQgICAgICAgICAgICAgICBld2tfaGlzdG9yeV9saW1p
dF9nZXQoY29uc3QgRXdrX0hpc3RvcnkgKmhpc3RvcnkpOwotCi0vKioKLSAqIFNldCBtYXhpbXVt
IGNhcGFjaXR5IG9mIGdpdmVuIGhpc3RvcnkuCi0gKgotICogQHBhcmFtIGhpc3Rvcnkgd2hpY2gg
aGlzdG9yeSBpbnN0YW5jZSB0byBtb2RpZnkuCi0gKiBAcGFyYW0gbGltaXQgbWF4aW11bSBzaXpl
IHRvIGFsbG93LgotICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3MsIEBjIEVJ
TkFfRkFMU0Ugb3RoZXJ3aXNlLgotICovCi1FQVBJIEVpbmFfQm9vbCAgICAgICAgIGV3a19oaXN0
b3J5X2xpbWl0X3NldChjb25zdCBFd2tfSGlzdG9yeSAqaGlzdG9yeSwgaW50IGxpbWl0KTsKLQot
LyoqCi0gKiBDcmVhdGUgYSBuZXcgaGlzdG9yeSBpdGVtIHdpdGggZ2l2ZW4gVVJJIGFuZCB0aXRs
ZS4KLSAqCi0gKiBAcGFyYW0gdXJpIHdoZXJlIHRoaXMgcmVzb3VyY2UgaXMgbG9jYXRlZC4KLSAq
IEBwYXJhbSB0aXRsZSByZXNvdXJjZSB0aXRsZS4KLSAqCi0gKiBAcmV0dXJuIG5ld2x5IGFsbG9j
YXRlZCBoaXN0b3J5IGl0ZW0gb3IgQGMgTlVMTCBvbiBlcnJvcnMuIFlvdSBtdXN0Ci0gKiAgICAg
ICAgIGZyZWUgdGhpcyBpdGVtIHdpdGggZXdrX2hpc3RvcnlfaXRlbV9mcmVlKCkuCi0gKi8KLUVB
UEkgRXdrX0hpc3RvcnlfSXRlbSAqZXdrX2hpc3RvcnlfaXRlbV9uZXcoY29uc3QgY2hhciAqdXJp
LCBjb25zdCBjaGFyICp0aXRsZSk7Ci0KLS8qKgotICogRnJlZSBnaXZlbiBoaXN0b3J5IGl0ZW0g
aW5zdGFuY2UuCi0gKgotICogQHBhcmFtIGl0ZW0gd2hhdCB0byBmcmVlLgotICovCi1FQVBJIHZv
aWQgICAgICAgICAgICAgIGV3a19oaXN0b3J5X2l0ZW1fZnJlZShFd2tfSGlzdG9yeV9JdGVtICpp
dGVtKTsKLQotLyoqCi0gKiBGcmVlIGdpdmVuIGxpc3QgYW5kIGFzc29jaWF0ZWQgaGlzdG9yeSBp
dGVtcyBpbnN0YW5jZXMuCi0gKgotICogQHBhcmFtIGhpc3RvcnlfaXRlbXMgbGlzdCBvZiBpdGVt
cyB0byBmcmVlIChib3RoIGxpc3Qgbm9kZXMgYW5kCi0gKiAgICAgICAgaXRlbSBpbnN0YW5jZXMp
LgotICovCi1FQVBJIHZvaWQgICAgICAgICAgICAgIGV3a19oaXN0b3J5X2l0ZW1fbGlzdF9mcmVl
KEVpbmFfTGlzdCAqaGlzdG9yeV9pdGVtcyk7Ci0KLS8qKgotICogUXVlcnkgdGl0bGUgZm9yIGdp
dmVuIGhpc3RvcnkgaXRlbS4KLSAqCi0gKiBAcGFyYW0gaXRlbSBoaXN0b3J5IGl0ZW0gdG8gcXVl
cnkuCi0gKgotICogQHJldHVybiB0aGUgdGl0bGUgcG9pbnRlciwgdGhhdCBtYXkgYmUgQGMgTlVM
TC4gVGhpcyBwb2ludGVyIGlzCi0gKiAgICAgICAgIGd1YXJhbnRlZWQgdG8gYmUgZWluYV9zdHJp
bmdzaGFyZSwgc28gd2hlbmV2ZXIgcG9zc2libGUKLSAqICAgICAgICAgc2F2ZSB5b3Vyc2VsZiBz
b21lIGNwdSBjeWNsZXMgYW5kIHVzZQotICogICAgICAgICBlaW5hX3N0cmluZ3NoYXJlX3JlZigp
IGluc3RlYWQgb2YgZWluYV9zdHJpbmdzaGFyZV9hZGQoKSBvcgotICogICAgICAgICBzdHJkdXAo
KS4KLSAqLwotRUFQSSBjb25zdCBjaGFyICAgICAgICpld2tfaGlzdG9yeV9pdGVtX3RpdGxlX2dl
dChjb25zdCBFd2tfSGlzdG9yeV9JdGVtICppdGVtKTsKLQotLyoqCi0gKiBRdWVyeSBhbHRlcm5h
dGUgdGl0bGUgZm9yIGdpdmVuIGhpc3RvcnkgaXRlbS4KLSAqCi0gKiBAcGFyYW0gaXRlbSBoaXN0
b3J5IGl0ZW0gdG8gcXVlcnkuCi0gKgotICogQHJldHVybiB0aGUgYWx0ZXJuYXRlIHRpdGxlIHBv
aW50ZXIsIHRoYXQgbWF5IGJlIEBjIE5VTEwuIFRoaXMKLSAqICAgICAgICAgcG9pbnRlciBpcyBn
dWFyYW50ZWVkIHRvIGJlIGVpbmFfc3RyaW5nc2hhcmUsIHNvIHdoZW5ldmVyCi0gKiAgICAgICAg
IHBvc3NpYmxlIHNhdmUgeW91cnNlbGYgc29tZSBjcHUgY3ljbGVzIGFuZCB1c2UKLSAqICAgICAg
ICAgZWluYV9zdHJpbmdzaGFyZV9yZWYoKSBpbnN0ZWFkIG9mIGVpbmFfc3RyaW5nc2hhcmVfYWRk
KCkgb3IKLSAqICAgICAgICAgc3RyZHVwKCkuCi0gKi8KLUVBUEkgY29uc3QgY2hhciAgICAgICAq
ZXdrX2hpc3RvcnlfaXRlbV90aXRsZV9hbHRlcm5hdGVfZ2V0KGNvbnN0IEV3a19IaXN0b3J5X0l0
ZW0gKml0ZW0pOwotCi0vKioKLSAqIFNldCBhbHRlcm5hdGUgdGl0bGUgZm9yIGdpdmVuIGhpc3Rv
cnkgaXRlbS4KLSAqCi0gKiBAcGFyYW0gaXRlbSBoaXN0b3J5IGl0ZW0gdG8gcXVlcnkuCi0gKiBA
cGFyYW0gdGl0bGUgbmV3IGFsdGVybmF0ZSB0aXRsZSB0byB1c2UgZm9yIGdpdmVuIGl0ZW0uIE5v
Ci0gKiAgICAgICAgcmVmZXJlbmNlcyBhcmUga2VwdCBhZnRlciB0aGlzIGZ1bmN0aW9uIHJldHVy
bnMuCi0gKi8KLUVBUEkgdm9pZCAgICAgICAgICAgICAgZXdrX2hpc3RvcnlfaXRlbV90aXRsZV9h
bHRlcm5hdGVfc2V0KEV3a19IaXN0b3J5X0l0ZW0gKml0ZW0sIGNvbnN0IGNoYXIgKnRpdGxlKTsK
LQotLyoqCi0gKiBRdWVyeSBVUkkgZm9yIGdpdmVuIGhpc3RvcnkgaXRlbS4KLSAqCi0gKiBAcGFy
YW0gaXRlbSBoaXN0b3J5IGl0ZW0gdG8gcXVlcnkuCi0gKgotICogQHJldHVybiB0aGUgVVJJIHBv
aW50ZXIsIHRoYXQgbWF5IGJlIEBjIE5VTEwuIFRoaXMgcG9pbnRlciBpcwotICogICAgICAgICBn
dWFyYW50ZWVkIHRvIGJlIGVpbmFfc3RyaW5nc2hhcmUsIHNvIHdoZW5ldmVyIHBvc3NpYmxlCi0g
KiAgICAgICAgIHNhdmUgeW91cnNlbGYgc29tZSBjcHUgY3ljbGVzIGFuZCB1c2UKLSAqICAgICAg
ICAgZWluYV9zdHJpbmdzaGFyZV9yZWYoKSBpbnN0ZWFkIG9mIGVpbmFfc3RyaW5nc2hhcmVfYWRk
KCkgb3IKLSAqICAgICAgICAgc3RyZHVwKCkuCi0gKi8KLUVBUEkgY29uc3QgY2hhciAgICAgICAq
ZXdrX2hpc3RvcnlfaXRlbV91cmlfZ2V0KGNvbnN0IEV3a19IaXN0b3J5X0l0ZW0gKml0ZW0pOwot
Ci0vKioKLSAqIFF1ZXJ5IG9yaWdpbmFsIFVSSSBmb3IgZ2l2ZW4gaGlzdG9yeSBpdGVtLgotICoK
LSAqIEBwYXJhbSBpdGVtIGhpc3RvcnkgaXRlbSB0byBxdWVyeS4KLSAqCi0gKiBAcmV0dXJuIHRo
ZSBvcmlnaW5hbCBVUkkgcG9pbnRlciwgdGhhdCBtYXkgYmUgQGMgTlVMTC4gVGhpcyBwb2ludGVy
Ci0gKiAgICAgICAgIGlzIGd1YXJhbnRlZWQgdG8gYmUgZWluYV9zdHJpbmdzaGFyZSwgc28gd2hl
bmV2ZXIgcG9zc2libGUKLSAqICAgICAgICAgc2F2ZSB5b3Vyc2VsZiBzb21lIGNwdSBjeWNsZXMg
YW5kIHVzZQotICogICAgICAgICBlaW5hX3N0cmluZ3NoYXJlX3JlZigpIGluc3RlYWQgb2YgZWlu
YV9zdHJpbmdzaGFyZV9hZGQoKSBvcgotICogICAgICAgICBzdHJkdXAoKS4KLSAqLwotRUFQSSBj
b25zdCBjaGFyICAgICAgICpld2tfaGlzdG9yeV9pdGVtX3VyaV9vcmlnaW5hbF9nZXQoY29uc3Qg
RXdrX0hpc3RvcnlfSXRlbSAqaXRlbSk7Ci0KLS8qKgotICogQWRkIGFuIEV2YXNfT2JqZWN0IG9m
IHR5cGUgJ2ltYWdlJyB0byBnaXZlbiBjYW52YXMgd2l0aCBoaXN0b3J5IGl0ZW0gaWNvbi4KLSAq
Ci0gKiBUaGlzIGlzIGFuIHV0aWxpdHkgZnVuY3Rpb24gdGhhdCBjcmVhdGVzIGFuIEV2YXNfT2Jq
ZWN0IG9mIHR5cGUKLSAqIGltYWdlIHNldCB0byBoYXZlIGZpbGwgYWx3YXlzIG1hdGNoIG9iamVj
dCBzaXplCi0gKiAoZXZhc19vYmplY3RfaW1hZ2VfZmlsbGVkX2FkZCgpKSwgc2F2aW5nIHNvbWUg
Y29kZSB0byB1c2UgaXQgZnJvbSBFdmFzLgotICoKLSAqIEBub3RlIGluIG9yZGVyIHRvIGhhdmUg
dGhpcyB3b3JraW5nLCBvbmUgbXVzdCBvcGVuIGljb24gZGF0YWJhc2UKLSAqICAgICAgIHdpdGgg
ZXdrX3NldHRpbmdzX2ljb25fZGF0YWJhc2VfcGF0aF9zZXQoKS4KLSAqCi0gKiBAcGFyYW0gaXRl
bSBoaXN0b3J5IGl0ZW0gdG8gcXVlcnkuCi0gKiBAcGFyYW0gY2FudmFzIGV2YXMgaW5zdGFuY2Ug
d2hlcmUgdG8gYWRkIHJlc3VsdGluZyBvYmplY3QuCi0gKgotICogQHJldHVybiBuZXdseSBhbGxv
Y2F0ZWQgRXZhc19PYmplY3QgaW5zdGFuY2Ugb3IgQGMgTlVMTCBvbgotICogICAgICAgICBlcnJv
cnMuIERlbGV0ZSB0aGUgb2JqZWN0IHdpdGggZXZhc19vYmplY3RfZGVsKCkuCi0gKi8KLUVBUEkg
RXZhc19PYmplY3QgICAgICAqZXdrX2hpc3RvcnlfaXRlbV9pY29uX29iamVjdF9hZGQoY29uc3Qg
RXdrX0hpc3RvcnlfSXRlbSAqaXRlbSwgRXZhcyAqY2FudmFzKTsKLQotLyoqCi0gKiBRdWVyeSBp
ZiBnaXZlbiBpdGVtIGlzIHN0aWxsIGluIHBhZ2UgY2FjaGUuCi0gKgotICogQHBhcmFtIGl0ZW0g
aGlzdG9yeSBpdGVtIHRvIHF1ZXJ5LgotICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIGlu
IGNhY2hlLCBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZS4KLSAqLwotRUFQSSBFaW5hX0Jvb2wgICAg
ICAgICBld2tfaGlzdG9yeV9pdGVtX3BhZ2VfY2FjaGVfZXhpc3RzKGNvbnN0IEV3a19IaXN0b3J5
X0l0ZW0gKml0ZW0pOwotCi0vKioKLSAqIFF1ZXJ5IGlmIGxhc3QgdmlzaXQgdG8gaXRlbSB3YXMg
ZmFpbHVyZSBvciBub3QuCi0gKgotICogQHBhcmFtIGl0ZW0gaGlzdG9yeSBpdGVtIHRvIHF1ZXJ5
LgotICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIGxhc3QgdmlzaXQgd2FzIGZhaWx1cmUs
IEBjIEVJTkFfRkFMU0UgaWYgaXQKLSAqICAgICAgICAgd2FzIGZpbmUuCi0gKi8KLUVBUEkgRWlu
YV9Cb29sICAgICAgICAgZXdrX2hpc3RvcnlfaXRlbV92aXNpdF9sYXN0X2ZhaWxlZChjb25zdCBF
d2tfSGlzdG9yeV9JdGVtICppdGVtKTsKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi19Ci0jZW5kaWYK
LSNlbmRpZiAvLyBld2tfaGlzdG9yeV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9l
d2svZXdrX2hpc3RvcnlfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19oaXN0
b3J5X3ByaXZhdGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDcyZjFiNS4uMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2hpc3RvcnlfcHJpdmF0ZS5oCisr
KyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDkt
MjAxMCBQcm9GVVNJT04gZW1iZWRkZWQgc3lzdGVtcwotICAgIENvcHlyaWdodCAoQykgMjAwOS0y
MDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKLQotICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAgICBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICAgIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICAg
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KLQotICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gICAgTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAgICBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLQotICAgIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UKLSAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gICAgQm9zdG9u
LCBNQSAwMjExMC0xMzAxLCBVU0EuCi0qLwotCi0jaWZuZGVmIGV3a19oaXN0b3J5X3ByaXZhdGVf
aAotI2RlZmluZSBld2tfaGlzdG9yeV9wcml2YXRlX2gKLQotI2luY2x1ZGUgIkJhY2tGb3J3YXJk
TGlzdC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBIaXN0b3J5SXRlbTsKLWNsYXNz
IEJhY2tGb3J3YXJkTGlzdDsKLX0KLQotRXdrX0hpc3RvcnlfSXRlbSAqZXdrX2hpc3RvcnlfaXRl
bV9uZXdfZnJvbV9jb3JlKFdlYkNvcmU6Okhpc3RvcnlJdGVtICpjb3JlKTsKLUV3a19IaXN0b3J5
KiBld2tfaGlzdG9yeV9uZXcoV2ViQ29yZTo6QmFja0ZvcndhcmRMaXN0KiBoaXN0b3J5KTsKLXZv
aWQgZXdrX2hpc3RvcnlfZnJlZShFd2tfSGlzdG9yeSogaGlzdG9yeSk7Ci0KLW5hbWVzcGFjZSBF
V0tQcml2YXRlIHsKLVdlYkNvcmU6Okhpc3RvcnlJdGVtICpjb3JlSGlzdG9yeUl0ZW0oY29uc3Qg
RXdrX0hpc3RvcnlfSXRlbSAqZXdrSGlzdG9yeUl0ZW0pOwotfSAvLyBuYW1lc3BhY2UgRVdLUHJp
dmF0ZQotCi0jZW5kaWYgLy8gZXdrX2hpc3RvcnlfcHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2VmbC9ld2svZXdrX2pzLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tf
anMuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ODFkNGQxLi4wMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfanMuY3BwCisrKyAvZGV2L251bGwKQEAgLTEs
NzUxICswLDAgQEAKLS8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDExIFByb0ZVU0lPTiBlbWJlZGRl
ZCBzeXN0ZW1zCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAg
ICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0g
ICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KLSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLgotKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgImV3a19qcy5oIgot
Ci0jaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCi0KLSNpbmNsdWRlICJOUF9qc29iamVj
dC5oIgotI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKLSNpbmNsdWRlICJld2tfanNfcHJpdmF0ZS5o
IgotI2luY2x1ZGUgImV3a19wcml2YXRlLmgiCi0jaW5jbHVkZSAibnBydW50aW1lLmgiCi0jaW5j
bHVkZSAibnBydW50aW1lX2ltcGwuaCIKLSNpbmNsdWRlIDxzdHJpbmcuaD4KLQotI2RlZmluZSBF
SU5BX01BR0lDX0NIRUNLX09SX1JFVFVSTihvLCAuLi4pIFwKLSAgICBpZiAoIUVJTkFfTUFHSUNf
Q0hFQ0sobywgRVdLX0pTX09CSkVDVF9NQUdJQykpIHsgXAotICAgICAgICBFSU5BX01BR0lDX0ZB
SUwobywgRVdLX0pTX09CSkVDVF9NQUdJQyk7IFwKLSAgICAgICAgcmV0dXJuIF9fVkFfQVJHU19f
OyBcCi0gICAgfQotCi1zdHJ1Y3QgX0V3a19KU19DbGFzcyB7Ci0gICAgY29uc3QgRXdrX0pTX0Ns
YXNzX01ldGEqIG1ldGE7Ci0gICAgRWluYV9IYXNoKiBtZXRob2RzOyAvLyBLZXk9TlBJZGVudGlm
aWVyKG5hbWUpLCB2YWx1ZT1wb2ludGVyIHRvIG1ldGEtPm1ldGhvZHMuCi0gICAgRWluYV9IYXNo
KiBwcm9wZXJ0aWVzOyAvLyBLZXk9TlBJZGVudGlmaWVyKG5hbWUpLCB2YWx1ZT1wb2ludGVyIHRv
IG1ldGEtPnByb3BlcnRpZXMuCi0gICAgRXdrX0pTX0RlZmF1bHQgZGVmYXVsdF9wcm9wOwotfTsK
LQotc3RhdGljIEVpbmFfQm9vbCBld2tfanNfbnB2YXJpYW50X3RvX3ZhcmlhbnQoRXdrX0pTX1Zh
cmlhbnQqIGRhdGEsIGNvbnN0IE5QVmFyaWFudCogcmVzdWx0KTsKLQotc3RhdGljIEVpbmFfQm9v
bCBld2tfanNfdmFyaWFudF90b19ucHZhcmlhbnQoY29uc3QgRXdrX0pTX1ZhcmlhbnQqIGRhdGEs
IE5QVmFyaWFudCogcmVzdWx0KQotewotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZB
TChkYXRhLCBmYWxzZSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHJlc3Vs
dCwgZmFsc2UpOwotICAgIGNvbnN0IGNoYXIqIHN0cmluZ192YWx1ZTsKLQotICAgIHN3aXRjaCAo
ZGF0YS0+dHlwZSkgewotICAgIGNhc2UgRVdLX0pTX1ZBUklBTlRfVk9JRDoKLSAgICAgICAgVk9J
RF9UT19OUFZBUklBTlQoKnJlc3VsdCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRVdLX0pT
X1ZBUklBTlRfTlVMTDoKLSAgICAgICAgTlVMTF9UT19OUFZBUklBTlQoKnJlc3VsdCk7Ci0gICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgRVdLX0pTX1ZBUklBTlRfSU5UMzI6Ci0gICAgICAgIElOVDMy
X1RPX05QVkFSSUFOVChkYXRhLT52YWx1ZS5pLCAqcmVzdWx0KTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBFV0tfSlNfVkFSSUFOVF9ET1VCTEU6Ci0gICAgICAgIERPVUJMRV9UT19OUFZBUklB
TlQoZGF0YS0+dmFsdWUuZCwgKnJlc3VsdCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRVdL
X0pTX1ZBUklBTlRfU1RSSU5HOgotICAgICAgICBzdHJpbmdfdmFsdWUgPSBlaW5hX3N0cmluZ3No
YXJlX2FkZChkYXRhLT52YWx1ZS5zKTsKLSAgICAgICAgaWYgKHN0cmluZ192YWx1ZSkKLSAgICAg
ICAgICAgIFNUUklOR1pfVE9fTlBWQVJJQU5UKHN0cmluZ192YWx1ZSwgKnJlc3VsdCk7Ci0gICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBFV0tfSlNfVkFSSUFOVF9CT09MOgotICAgICAgICBCT09MRUFOX1RPX05QVkFSSUFOVChk
YXRhLT52YWx1ZS5iLCAqcmVzdWx0KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFV0tfSlNf
VkFSSUFOVF9PQkpFQ1Q6Ci0gICAgICAgIE9CSkVDVF9UT19OUFZBUklBTlQocmVpbnRlcnByZXRf
Y2FzdDxOUE9iamVjdCo+KGRhdGEtPnZhbHVlLm8pLCAqcmVzdWx0KTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHJldHVy
biB0cnVlOwotfQotCi0vLyBUaGVzZSBtZXRob2RzIGFyZSB1c2VkIGJ5IE5QQUksIHRoYXRzIHRo
ZSByZWFzb24gdG8gdXNlIGJvb2wgaW5zdGVhZCBvZiBFaW5hX0Jvb2wuCi1zdGF0aWMgYm9vbCBl
d2tfanNfcHJvcGVydHlfaGFzKE5QT2JqZWN0KiBucE9iamVjdCwgTlBJZGVudGlmaWVyIG5hbWUp
Ci17Ci0gICAgRXdrX0pTX09iamVjdCogb2JqZWN0ID0gcmVpbnRlcnByZXRfY2FzdDxFd2tfSlNf
T2JqZWN0Kj4obnBPYmplY3QpOwotCi0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFM
KG5wT2JqZWN0LCBmYWxzZSk7Ci0gICAgRUlOQV9NQUdJQ19DSEVDS19PUl9SRVRVUk4ob2JqZWN0
LCBmYWxzZSk7Ci0KLSAgICBpZiAoIV9OUE5fSWRlbnRpZmllcklzU3RyaW5nKG5hbWUpKSB7Ci0g
ICAgICAgIEVSUigiaW50IE5QSWRlbnRpZmllciBpcyBub3Qgc3VwcG9ydGVkLiIpOwotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgY2hhciogcHJvcF9uYW1lID0gX05QTl9VVEY4
RnJvbUlkZW50aWZpZXIobmFtZSk7Ci0gICAgYm9vbCBmYWlsID0gZWluYV9oYXNoX2ZpbmQob2Jq
ZWN0LT5wcm9wZXJ0aWVzLCBwcm9wX25hbWUpOyAvLyBGSVhNRTogc2hvdWxkIHNlYXJjaCBtZXRo
b2RzIHRvbz8KLSAgICBmcmVlKHByb3BfbmFtZSk7Ci0KLSAgICByZXR1cm4gZmFpbDsKLX0KLQot
c3RhdGljIGJvb2wgZXdrX2pzX3Byb3BlcnR5X2dldChOUE9iamVjdCogbnBPYmplY3QsIE5QSWRl
bnRpZmllciBuYW1lLCBOUFZhcmlhbnQqIHJlc3VsdCkKLXsKLSAgICBFd2tfSlNfT2JqZWN0KiBv
YmplY3QgPSByZWludGVycHJldF9jYXN0PEV3a19KU19PYmplY3QqPihucE9iamVjdCk7Ci0gICAg
RXdrX0pTX1ZhcmlhbnQqIHZhbHVlOwotICAgIEV3a19KU19Qcm9wZXJ0eSogcHJvcDsKLSAgICBi
b29sIGZhaWwgPSBmYWxzZTsKLQotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChu
cE9iamVjdCwgZmFsc2UpOwotICAgIEVJTkFfTUFHSUNfQ0hFQ0tfT1JfUkVUVVJOKG9iamVjdCwg
ZmFsc2UpOwotCi0gICAgaWYgKCFfTlBOX0lkZW50aWZpZXJJc1N0cmluZyhuYW1lKSkgewotICAg
ICAgICBFUlIoImludCBOUElkZW50aWZpZXIgaXMgbm90IHN1cHBvcnRlZC4iKTsKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHZhbHVlID0gc3RhdGljX2Nhc3Q8RXdrX0pTX1Zh
cmlhbnQqPihtYWxsb2Moc2l6ZW9mKEV3a19KU19WYXJpYW50KSkpOwotICAgIGlmICghdmFsdWUp
IHsKLSAgICAgICAgRVJSKCJDb3VsZCBub3QgYWxsb2NhdGUgbWVtb3J5IGZvciBld2tfanNfdmFy
aWFudCIpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgcHJvcCA9IHN0YXRp
Y19jYXN0PEV3a19KU19Qcm9wZXJ0eSo+KGVpbmFfaGFzaF9maW5kKG9iamVjdC0+Y2xzLT5wcm9w
ZXJ0aWVzLCBuYW1lKSk7Ci0gICAgaWYgKHByb3AgJiYgcHJvcC0+Z2V0KSB7IC8vIENsYXNzIGhh
cyBwcm9wZXJ0eSBhbmQgcHJvcGVydHkgaGFzIGdldHRlci4KLSAgICAgICAgZmFpbCA9IHByb3At
PmdldChvYmplY3QsIHByb3AtPm5hbWUsIHZhbHVlKTsKLSAgICAgICAgaWYgKCFmYWlsKQotICAg
ICAgICAgICAgZmFpbCA9IGV3a19qc192YXJpYW50X3RvX25wdmFyaWFudCh2YWx1ZSwgcmVzdWx0
KTsKLSAgICB9IGVsc2UgaWYgKG9iamVjdC0+Y2xzLT5kZWZhdWx0X3Byb3AuZ2V0KSB7IC8vIERl
ZmF1bHQgZ2V0dGVyIGV4aXN0cy4KLSAgICAgICAgZmFpbCA9IG9iamVjdC0+Y2xzLT5kZWZhdWx0
X3Byb3AuZ2V0KG9iamVjdCwgcHJvcC0+bmFtZSwgdmFsdWUpOwotICAgICAgICBpZiAoIWZhaWwp
Ci0gICAgICAgICAgICBmYWlsID0gZXdrX2pzX3ZhcmlhbnRfdG9fbnB2YXJpYW50KHZhbHVlLCBy
ZXN1bHQpOwotICAgIH0gZWxzZSB7IC8vIEZhbGxiYWNrIHRvIG9iamVjdHMgaGFzaCBtYXAuCi0g
ICAgICAgIGNoYXIqIHByb3BfbmFtZSA9IF9OUE5fVVRGOEZyb21JZGVudGlmaWVyKG5hbWUpOwot
ICAgICAgICBmcmVlKHZhbHVlKTsKLSAgICAgICAgdmFsdWUgPSBzdGF0aWNfY2FzdDxFd2tfSlNf
VmFyaWFudCo+KGVpbmFfaGFzaF9maW5kKG9iamVjdC0+cHJvcGVydGllcywgcHJvcF9uYW1lKSk7
Ci0gICAgICAgIGZyZWUocHJvcF9uYW1lKTsKLSAgICAgICAgaWYgKHZhbHVlKQotICAgICAgICAg
ICAgcmV0dXJuIGV3a19qc192YXJpYW50X3RvX25wdmFyaWFudCh2YWx1ZSwgcmVzdWx0KTsKLSAg
ICB9Ci0KLSAgICBmcmVlKHZhbHVlKTsKLSAgICByZXR1cm4gZmFpbDsKLX0KLQotc3RhdGljIGJv
b2wgZXdrX2pzX3Byb3BlcnR5X3NldChOUE9iamVjdCogbnBPYmplY3QsIE5QSWRlbnRpZmllciBu
YW1lLCBjb25zdCBOUFZhcmlhbnQqIG5wVmFsdWUpCi17Ci0gICAgRXdrX0pTX09iamVjdCogb2Jq
ZWN0ID0gcmVpbnRlcnByZXRfY2FzdDxFd2tfSlNfT2JqZWN0Kj4obnBPYmplY3QpOwotICAgIEV3
a19KU19WYXJpYW50KiB2YWx1ZTsKLSAgICBFd2tfSlNfUHJvcGVydHkqIHByb3A7Ci0gICAgYm9v
bCBmYWlsID0gZmFsc2U7Ci0KLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwobnBP
YmplY3QsIGZhbHNlKTsKLSAgICBFSU5BX01BR0lDX0NIRUNLX09SX1JFVFVSTihvYmplY3QsIGZh
bHNlKTsKLQotICAgIGlmICghX05QTl9JZGVudGlmaWVySXNTdHJpbmcobmFtZSkpIHsKLSAgICAg
ICAgRVJSKCJpbnQgTlBJZGVudGlmaWVyIGlzIG5vdCBzdXBwb3J0ZWQuIik7Ci0gICAgICAgIHJl
dHVybiBmYWlsOwotICAgIH0KLQotICAgIHZhbHVlID0gc3RhdGljX2Nhc3Q8RXdrX0pTX1Zhcmlh
bnQqPihtYWxsb2Moc2l6ZW9mKEV3a19KU19WYXJpYW50KSkpOwotICAgIGlmICghdmFsdWUpIHsK
LSAgICAgICAgRVJSKCJDb3VsZCBub3QgYWxsb2NhdGUgbWVtb3J5IGZvciBld2tfanNfdmFyaWFu
dCIpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgZXdrX2pzX25wdmFyaWFu
dF90b192YXJpYW50KHZhbHVlLCBucFZhbHVlKTsKLSAgICBjaGFyKiBwcm9wX25hbWUgPSBfTlBO
X1VURjhGcm9tSWRlbnRpZmllcihuYW1lKTsKLSAgICBwcm9wID0gc3RhdGljX2Nhc3Q8RXdrX0pT
X1Byb3BlcnR5Kj4oZWluYV9oYXNoX2ZpbmQob2JqZWN0LT5jbHMtPnByb3BlcnRpZXMsIHByb3Bf
bmFtZSkpOwotICAgIGlmIChwcm9wICYmIHByb3AtPnNldCkKLSAgICAgICAgZmFpbCA9IHByb3At
PnNldChvYmplY3QsIHByb3AtPm5hbWUsIHZhbHVlKTsgLy8gQ2xhc3MgaGFzIHByb3BlcnR5IGFu
ZCBwcm9wZXJ0eSBoYXMgc2V0dGVyLgotICAgIGVsc2UgaWYgKG9iamVjdC0+Y2xzLT5kZWZhdWx0
X3Byb3Auc2V0KQotICAgICAgICBmYWlsID0gb2JqZWN0LT5jbHMtPmRlZmF1bHRfcHJvcC5zZXQo
b2JqZWN0LCBwcm9wX25hbWUsIHZhbHVlKTsgLy8gRGVmYXVsdCBnZXR0ZXIgZXhpc3RzLgotICAg
IGVsc2UgeyAvLyBGYWxsYmFjayB0byBvYmplY3RzIGhhc2ggbWFwLgotICAgICAgICB2b2lkKiBv
bGQgPSBlaW5hX2hhc2hfc2V0KG9iamVjdC0+cHJvcGVydGllcywgcHJvcF9uYW1lLCB2YWx1ZSk7
Ci0gICAgICAgIGZyZWUob2xkKTsKLSAgICAgICAgZmFpbCA9IHRydWU7Ci0gICAgfQotCi0gICAg
ZnJlZShwcm9wX25hbWUpOwotICAgIHJldHVybiBmYWlsOwotfQotCi1zdGF0aWMgYm9vbCBld2tf
anNfcHJvcGVydHlfcmVtb3ZlKE5QT2JqZWN0KiBucE9iamVjdCwgTlBJZGVudGlmaWVyIG5hbWUp
Ci17Ci0gICAgRXdrX0pTX09iamVjdCogb2JqZWN0ID0gcmVpbnRlcnByZXRfY2FzdDxFd2tfSlNf
T2JqZWN0Kj4obnBPYmplY3QpOwotICAgIEV3a19KU19Qcm9wZXJ0eSogcHJvcDsKLSAgICBib29s
IGZhaWwgPSBmYWxzZTsKLQotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChucE9i
amVjdCwgZmFsc2UpOwotICAgIEVJTkFfTUFHSUNfQ0hFQ0tfT1JfUkVUVVJOKG9iamVjdCwgZmFs
c2UpOwotCi0gICAgaWYgKCFfTlBOX0lkZW50aWZpZXJJc1N0cmluZyhuYW1lKSkgewotICAgICAg
ICBFUlIoImludCBOUElkZW50aWZpZXIgaXMgbm90IHN1cHBvcnRlZC4iKTsKLSAgICAgICAgcmV0
dXJuIGZhaWw7Ci0gICAgfQotCi0gICAgY2hhciogcHJvcF9uYW1lID0gX05QTl9VVEY4RnJvbUlk
ZW50aWZpZXIobmFtZSk7Ci0gICAgcHJvcCA9IHN0YXRpY19jYXN0PEV3a19KU19Qcm9wZXJ0eSo+
KGVpbmFfaGFzaF9maW5kKG9iamVjdC0+Y2xzLT5wcm9wZXJ0aWVzLCBwcm9wX25hbWUpKTsKLSAg
ICBpZiAocHJvcCAmJiBwcm9wLT5kZWwpCi0gICAgICAgIGZhaWwgPSBwcm9wLT5kZWwob2JqZWN0
LCBwcm9wLT5uYW1lKTsgLy8gQ2xhc3MgaGFzIHByb3BlcnR5IGFuZCBwcm9wZXJ0eSBoYXMgZ2V0
dGVyLgotICAgIGVsc2UgaWYgKG9iamVjdC0+Y2xzLT5kZWZhdWx0X3Byb3AuZGVsKQotICAgICAg
ICBmYWlsID0gb2JqZWN0LT5jbHMtPmRlZmF1bHRfcHJvcC5kZWwob2JqZWN0LCBwcm9wX25hbWUp
OwotICAgIGVsc2UKLSAgICAgICAgZmFpbCA9IGVpbmFfaGFzaF9kZWwob2JqZWN0LT5wcm9wZXJ0
aWVzLCBwcm9wX25hbWUsIDApOwotCi0gICAgZnJlZShwcm9wX25hbWUpOwotICAgIHJldHVybiBm
YWlsOwotfQotCi1zdGF0aWMgYm9vbCBld2tfanNfcHJvcGVydGllc19lbnVtZXJhdGUoTlBPYmpl
Y3QqIG5wT2JqZWN0LCBOUElkZW50aWZpZXIqKiB2YWx1ZSwgdWludDMyX3QqIGNvdW50KQotewot
ICAgIEV3a19KU19PYmplY3QqIG9iamVjdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8RXdrX0pTX09iamVj
dCo+KG5wT2JqZWN0KTsKLSAgICBFaW5hX0l0ZXJhdG9yKiBpdDsKLSAgICBjaGFyKiBrZXk7Ci0g
ICAgaW50IGkgPSAwOwotCi0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKG5wT2Jq
ZWN0LCBmYWxzZSk7Ci0gICAgRUlOQV9NQUdJQ19DSEVDS19PUl9SRVRVUk4ob2JqZWN0LCBmYWxz
ZSk7Ci0KLSAgICAqY291bnQgPSBlaW5hX2hhc2hfcG9wdWxhdGlvbihvYmplY3QtPnByb3BlcnRp
ZXMpOwotICAgICp2YWx1ZSA9IHN0YXRpY19jYXN0PE5QSWRlbnRpZmllcio+KG1hbGxvYyhzaXpl
b2YoTlBJZGVudGlmaWVyKSAqICpjb3VudCkpOwotICAgIGlmICghKnZhbHVlKSB7Ci0gICAgICAg
IEVSUigiQ291bGQgbm90IGFsbG9jYXRlIG1lbW9yeSBmb3IgTlBJZGVudGlmaWVyIik7Ci0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBpdCA9IGVpbmFfaGFzaF9pdGVyYXRvcl9r
ZXlfbmV3KG9iamVjdC0+cHJvcGVydGllcyk7Ci0gICAgRUlOQV9JVEVSQVRPUl9GT1JFQUNIKGl0
LCBrZXkpCi0gICAgICAgICgqdmFsdWUpW2krK10gPSBfTlBOX0dldFN0cmluZ0lkZW50aWZpZXIo
a2V5KTsKLQotICAgIGVpbmFfaXRlcmF0b3JfZnJlZShpdCk7Ci0gICAgcmV0dXJuIHRydWU7Ci19
Ci0KLXN0YXRpYyBib29sIGV3a19qc19tZXRob2RfaGFzKE5QT2JqZWN0KiBucE9iamVjdCwgTlBJ
ZGVudGlmaWVyIG5hbWUpCi17Ci0gICAgRXdrX0pTX09iamVjdCogb2JqZWN0ID0gcmVpbnRlcnBy
ZXRfY2FzdDxFd2tfSlNfT2JqZWN0Kj4obnBPYmplY3QpOwotCi0gICAgRUlOQV9TQUZFVFlfT05f
TlVMTF9SRVRVUk5fVkFMKG5wT2JqZWN0LCBmYWxzZSk7Ci0gICAgRUlOQV9NQUdJQ19DSEVDS19P
Ul9SRVRVUk4ob2JqZWN0LCBmYWxzZSk7Ci0KLSAgICBpZiAoIV9OUE5fSWRlbnRpZmllcklzU3Ry
aW5nKG5hbWUpKSB7Ci0gICAgICAgIEVSUigiaW50IE5QSWRlbnRpZmllciBpcyBub3Qgc3VwcG9y
dGVkLiIpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHJldHVybiBlaW5hX2hh
c2hfZmluZChvYmplY3QtPmNscy0+bWV0aG9kcywgbmFtZSk7IC8vIFJldHVybnMgcG9pbnRlciBp
ZiBmb3VuZCh0cnVlKSwgMChmYWxzZSkgb3RoZXJ3aXNlLgotfQotCi1zdGF0aWMgYm9vbCBld2tf
anNfbWV0aG9kX2ludm9rZShOUE9iamVjdCogbnBPYmplY3QsIE5QSWRlbnRpZmllciBuYW1lLCBj
b25zdCBOUFZhcmlhbnQqIG5wQXJncywgdWludDMyX3QgbnBBcmdDb3VudCwgTlBWYXJpYW50KiBy
ZXN1bHQpCi17Ci0gICAgRXdrX0pTX09iamVjdCogb2JqZWN0ID0gcmVpbnRlcnByZXRfY2FzdDxF
d2tfSlNfT2JqZWN0Kj4obnBPYmplY3QpOwotICAgIEV3a19KU19NZXRob2QqIG1ldGhvZDsKLSAg
ICBFd2tfSlNfVmFyaWFudCogYXJnczsKLSAgICBFd2tfSlNfVmFyaWFudCogcmV0X3ZhbDsKLQot
ICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChucE9iamVjdCwgZmFsc2UpOwotICAg
IEVJTkFfTUFHSUNfQ0hFQ0tfT1JfUkVUVVJOKG9iamVjdCwgZmFsc2UpOwotCi0gICAgaWYgKCFf
TlBOX0lkZW50aWZpZXJJc1N0cmluZyhuYW1lKSkgewotICAgICAgICBFUlIoImludCBOUElkZW50
aWZpZXIgaXMgbm90IHN1cHBvcnRlZC4iKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0K
LQotICAgIG1ldGhvZCA9IHN0YXRpY19jYXN0PEV3a19KU19NZXRob2QqPihlaW5hX2hhc2hfZmlu
ZChvYmplY3QtPmNscy0+bWV0aG9kcywgbmFtZSkpOwotICAgIGlmICghbWV0aG9kKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICBhcmdzID0gc3RhdGljX2Nhc3Q8RXdrX0pTX1ZhcmlhbnQq
PihtYWxsb2Moc2l6ZW9mKEV3a19KU19WYXJpYW50KSAgKm5wQXJnQ291bnQpKTsKLSAgICBpZiAo
IWFyZ3MpIHsKLSAgICAgICAgRVJSKCJDb3VsZCBub3QgYWxsb2NhdGUgbWVtb3J5IGZvciBld2tf
anNfdmFyaWFudCIpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgZm9yICh1
aW50MzJfdCBpID0gMDsgaSA8IG5wQXJnQ291bnQ7IGkrKykKLSAgICAgICAgZXdrX2pzX25wdmFy
aWFudF90b192YXJpYW50KCZhcmdzW2ldLCAmbnBBcmdzW2ldKTsKLSAgICByZXRfdmFsID0gbWV0
aG9kLT5pbnZva2Uob2JqZWN0LCBhcmdzLCBucEFyZ0NvdW50KTsKLSAgICBld2tfanNfdmFyaWFu
dF90b19ucHZhcmlhbnQocmV0X3ZhbCwgcmVzdWx0KTsKLQotICAgIGV3a19qc192YXJpYW50X2Zy
ZWUocmV0X3ZhbCk7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotc3RhdGljIEVpbmFfQm9vbCBl
d2tfanNfbnBvYmplY3RfcHJvcGVydHlfZ2V0KEV3a19KU19PYmplY3QqIGpzT2JqZWN0LCBjb25z
dCBjaGFyKiBuYW1lLCBFd2tfSlNfVmFyaWFudCogdmFsdWUpCi17Ci0gICAgTlBJZGVudGlmaWVy
IGlkID0gX05QTl9HZXRTdHJpbmdJZGVudGlmaWVyKG5hbWUpOwotICAgIE5QVmFyaWFudCB2YXI7
Ci0gICAgYm9vbCBmYWlsID0gX05QTl9HZXRQcm9wZXJ0eSgwLCByZWludGVycHJldF9jYXN0PE5Q
T2JqZWN0Kj4oanNPYmplY3QpLCBpZCwgJnZhcik7Ci0gICAgaWYgKCFmYWlsKQotICAgICAgICBm
YWlsID0gZXdrX2pzX25wdmFyaWFudF90b192YXJpYW50KHZhbHVlLCAmdmFyKTsKLSAgICByZXR1
cm4gZmFpbDsKLX0KLQotc3RhdGljIEVpbmFfQm9vbCBld2tfanNfbnBvYmplY3RfcHJvcGVydHlf
c2V0KEV3a19KU19PYmplY3QqIGpzT2JqZWN0LCBjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBFd2tf
SlNfVmFyaWFudCogdmFsdWUpCi17Ci0gICAgTlBJZGVudGlmaWVyIGlkID0gX05QTl9HZXRTdHJp
bmdJZGVudGlmaWVyKG5hbWUpOwotICAgIE5QVmFyaWFudCB2YXI7Ci0gICAgYm9vbCBmYWlsID0g
ZXdrX2pzX3ZhcmlhbnRfdG9fbnB2YXJpYW50KHZhbHVlLCAmdmFyKTsKLSAgICBpZiAoZmFpbCkK
LSAgICAgICAgZmFpbCA9IF9OUE5fU2V0UHJvcGVydHkoMCwgcmVpbnRlcnByZXRfY2FzdDxOUE9i
amVjdCo+KGpzT2JqZWN0KSwgaWQsICZ2YXIpOwotICAgIHJldHVybiBmYWlsOwotfQotCi1zdGF0
aWMgRWluYV9Cb29sIGV3a19qc19ucG9iamVjdF9wcm9wZXJ0eV9kZWwoRXdrX0pTX09iamVjdCog
anNPYmplY3QsIGNvbnN0IGNoYXIqIG5hbWUpCi17Ci0gICAgTlBJZGVudGlmaWVyIGlkID0gX05Q
Tl9HZXRTdHJpbmdJZGVudGlmaWVyKG5hbWUpOwotICAgIHJldHVybiBfTlBOX1JlbW92ZVByb3Bl
cnR5KDAsIHJlaW50ZXJwcmV0X2Nhc3Q8TlBPYmplY3QqPihqc09iamVjdCksIGlkKTsKLX0KLQot
c3RhdGljIHZvaWQgZXdrX2pzX3Byb3BlcnR5X2ZyZWUoRXdrX0pTX1Byb3BlcnR5KiBwcm9wKQot
ewotICAgIGZyZWUoY29uc3RfY2FzdDxjaGFyKj4ocHJvcC0+bmFtZSkpOwotICAgIGlmIChwcm9w
LT52YWx1ZS50eXBlID09IEVXS19KU19WQVJJQU5UX1NUUklORykKLSAgICAgICAgZWluYV9zdHJp
bmdzaGFyZV9kZWwocHJvcC0+dmFsdWUudmFsdWUucyk7Ci0gICAgZWxzZSBpZiAocHJvcC0+dmFs
dWUudHlwZSA9PSBFV0tfSlNfVkFSSUFOVF9PQkpFQ1QpCi0gICAgICAgIGV3a19qc19vYmplY3Rf
ZnJlZShwcm9wLT52YWx1ZS52YWx1ZS5vKTsKLSAgICBmcmVlKHByb3ApOwotfQotCi0vKioKLSAq
IENyZWF0ZSBhIEV3a19KU19DbGFzcyB0byBiZSB1c2VkIGluIEBhIGV3a19qc19vYmplY3RfbmV3
LgotICoKLSAqIEBwYXJhbSBtZXRhIEBhIEV3a19KU19DbGFzc19NZXRhIHRoYXQgZGVzY3JpYmVz
IHRoZSBjbGFzcyB0byBiZSBjcmVhdGVkLgotICoKLSAqIEByZXR1cm4gVGhlIEV3a19KU19DbGFz
cyBjcmVhdGVkLgotICovCi1Fd2tfSlNfQ2xhc3MqIGV3a19qc19jbGFzc19uZXcoY29uc3QgRXdr
X0pTX0NsYXNzX01ldGEqIGpzTWV0YUNsYXNzKQotewotICAgIEV3a19KU19DbGFzcyogY2xzOwot
Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGpzTWV0YUNsYXNzLCAwKTsKLQot
ICAgIGNscyA9IHN0YXRpY19jYXN0PEV3a19KU19DbGFzcyo+KG1hbGxvYyhzaXplb2YoRXdrX0pT
X0NsYXNzKSkpOwotICAgIGlmICghY2xzKSB7Ci0gICAgICAgIEVSUigiQ291bGQgbm90IGFsbG9j
YXRlIG1lbW9yeSBmb3IgZXdrX2pzX2NsYXNzIik7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0K
LQotICAgIGNscy0+bWV0YSA9IGpzTWV0YUNsYXNzOwotICAgIGNscy0+ZGVmYXVsdF9wcm9wID0g
Y2xzLT5tZXRhLT5kZWZhdWx0X3Byb3A7Ci0KLSAgICAvLyBEb24ndCBmcmVlIG1ldGhvZHMgc2lu
Y2UgdGhleSBwb2ludCB0byBtZXRhIGNsYXNzIG1ldGhvZHMod2lsbCBiZSBmcmVlZCB3aGVuIG1l
dGEgY2xhc3MgaXMgZnJlZWQpLgotICAgIGNscy0+bWV0aG9kcyA9IGVpbmFfaGFzaF9wb2ludGVy
X25ldygwKTsKLSAgICBmb3IgKGludCBpID0gMDsgY2xzLT5tZXRhLT5tZXRob2RzICYmIGNscy0+
bWV0YS0+bWV0aG9kc1tpXS5uYW1lOyBpKyspIHsKLSAgICAgICAgTlBJZGVudGlmaWVyIGlkID0g
X05QTl9HZXRTdHJpbmdJZGVudGlmaWVyKGNscy0+bWV0YS0+bWV0aG9kc1tpXS5uYW1lKTsKLSAg
ICAgICAgZWluYV9oYXNoX2FkZChjbHMtPm1ldGhvZHMsIGlkLCAmY2xzLT5tZXRhLT5tZXRob2Rz
W2ldKTsKLSAgICB9Ci0KLSAgICAvLyBEb24ndCBmcmVlIHByb3BlcnRpZXMgc2luY2UgdGhleSBw
b2ludCB0byBjbHMtPm1ldGEgY2xhc3MgcHJvcGVydGllcyh3aWxsIGJlIGZyZWVkIHdoZW4gY2xz
LT5tZXRhIGNsYXNzIGlzIGZyZWVkKS4KLSAgICBjbHMtPnByb3BlcnRpZXMgPSBlaW5hX2hhc2hf
cG9pbnRlcl9uZXcoMCk7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGNscy0+bWV0YS0+cHJvcGVydGll
cyAmJiBjbHMtPm1ldGEtPnByb3BlcnRpZXNbaV0ubmFtZTsgaSsrKSB7Ci0gICAgICAgIE5QSWRl
bnRpZmllciBpZCA9IF9OUE5fR2V0U3RyaW5nSWRlbnRpZmllcihjbHMtPm1ldGEtPnByb3BlcnRp
ZXNbaV0ubmFtZSk7Ci0gICAgICAgIGVpbmFfaGFzaF9hZGQoY2xzLT5wcm9wZXJ0aWVzLCBpZCwg
JmNscy0+bWV0YS0+cHJvcGVydGllc1tpXSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIGNsczsKLX0K
LQotLyoqCi0gKiBSZWxlYXNlIHJlc291cmNlcyBhbGxvY2F0ZWQgYnkgQGEgY2xzLgotICoKLSAq
IEBwYXJhbSBjbHMgQGEgRXdrX0pTX0NsYXNzIHRvIGJlIHJlbGVhc2VkLgotICovCi12b2lkIGV3
a19qc19jbGFzc19mcmVlKEV3a19KU19DbGFzcyoganNDbGFzcykKLXsKLSAgICBFSU5BX1NBRkVU
WV9PTl9OVUxMX1JFVFVSTihqc0NsYXNzKTsKLSAgICBlaW5hX2hhc2hfZnJlZShqc0NsYXNzLT5t
ZXRob2RzKTsKLSAgICBlaW5hX2hhc2hfZnJlZShqc0NsYXNzLT5wcm9wZXJ0aWVzKTsKLSAgICBm
cmVlKGpzQ2xhc3MpOwotfQotCi1zdGF0aWMgTlBDbGFzcyBFV0tfTlBDTEFTUyA9IHsKLSAgICBO
UF9DTEFTU19TVFJVQ1RfVkVSU0lPTiwKLSAgICAwLCAvLyBOUEFsbG9jYXRlRnVuY3Rpb25QdHIK
LSAgICAwLCAvLyBOUERlYWxsb2NhdGVGdW5jdGlvblB0cgotICAgIDAsIC8vIE5QSW52YWxpZGF0
ZUZ1bmN0aW9uUHRyCi0gICAgZXdrX2pzX21ldGhvZF9oYXMsIC8vIE5QSGFzTWV0aG9kRnVuY3Rp
b25QdHIKLSAgICBld2tfanNfbWV0aG9kX2ludm9rZSwgLy8gTlBJbnZva2VGdW5jdGlvblB0cgot
ICAgIDAsIC8vIE5QSW52b2tlRGVmYXVsdEZ1bmN0aW9uUHRyCi0gICAgZXdrX2pzX3Byb3BlcnR5
X2hhcywgLy8gTlBIYXNQcm9wZXJ0eUZ1bmN0aW9uUHRyCi0gICAgZXdrX2pzX3Byb3BlcnR5X2dl
dCwgLy8gTlBHZXRQcm9wZXJ0eUZ1bmN0aW9uUHRyCi0gICAgZXdrX2pzX3Byb3BlcnR5X3NldCwg
Ly8gTlBTZXRQcm9wZXJ0eUZ1bmN0aW9uUHRyCi0gICAgZXdrX2pzX3Byb3BlcnR5X3JlbW92ZSwg
Ly8gTlBSZW1vdmVQcm9wZXJ0eUZ1bmN0aW9uUHRyCi0gICAgZXdrX2pzX3Byb3BlcnRpZXNfZW51
bWVyYXRlLCAvLyBOUEVudW1lcmF0aW9uRnVuY3Rpb25QdHIKLSAgICAwIC8vIE5QQ29uc3RydWN0
RnVuY3Rpb24KLX07Ci0KLXN0YXRpYyBFd2tfSlNfT2JqZWN0KiBld2tfanNfbnBvYmplY3RfdG9f
b2JqZWN0KE5QT2JqZWN0KiBucE9iamVjdCkKLXsKLSAgICBOUElkZW50aWZpZXIqIHZhbHVlczsK
LSAgICB1aW50MzJfdCBucF9wcm9wc19jb3VudDsKLSAgICBFd2tfSlNfQ2xhc3MqIGNsczsKLSAg
ICBFd2tfSlNfT2JqZWN0KiBvYmplY3Q7Ci0gICAgRWluYV9JdGVyYXRvciogaXQ7Ci0gICAgRXdr
X0pTX1Byb3BlcnR5KiBwcm9wOwotICAgIEphdmFTY3JpcHRPYmplY3QqIGpzbzsKLQotICAgIGlm
IChFSU5BX01BR0lDX0NIRUNLKHJlaW50ZXJwcmV0X2Nhc3Q8RXdrX0pTX09iamVjdCo+KG5wT2Jq
ZWN0KSwgRVdLX0pTX09CSkVDVF9NQUdJQykpCi0gICAgICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PEV3a19KU19PYmplY3QqPihucE9iamVjdCk7Ci0KLSAgICBpZiAoIV9OUE5fRW51bWVyYXRl
KDAsIG5wT2JqZWN0LCAmdmFsdWVzLCAmbnBfcHJvcHNfY291bnQpKQotICAgICAgICByZXR1cm4g
MDsKLQotICAgIGNscyA9IHN0YXRpY19jYXN0PEV3a19KU19DbGFzcyo+KG1hbGxvYyhzaXplb2Yo
RXdrX0pTX0NsYXNzKSkpOwotICAgIGlmICghY2xzKSB7Ci0gICAgICAgIEVSUigiQ291bGQgbm90
IGFsbG9jYXRlIG1lbW9yeSBmb3IgZXdrX2pzX2NsYXNzIik7Ci0gICAgICAgIHJldHVybiAwOwot
ICAgIH0KLQotICAgIGNscy0+bWV0YSA9IDA7Ci0gICAgRXdrX0pTX0RlZmF1bHQgZGVmID0gewot
ICAgICAgICBld2tfanNfbnBvYmplY3RfcHJvcGVydHlfc2V0LAotICAgICAgICBld2tfanNfbnBv
YmplY3RfcHJvcGVydHlfZ2V0LAotICAgICAgICBld2tfanNfbnBvYmplY3RfcHJvcGVydHlfZGVs
Ci0gICAgfTsKLSAgICBjbHMtPmRlZmF1bHRfcHJvcCA9IGRlZjsKLSAgICBjbHMtPm1ldGhvZHMg
PSBlaW5hX2hhc2hfcG9pbnRlcl9uZXcoMCk7Ci0gICAgY2xzLT5wcm9wZXJ0aWVzID0gZWluYV9o
YXNoX3BvaW50ZXJfbmV3KHJlaW50ZXJwcmV0X2Nhc3Q8RWluYV9GcmVlX0NiPihld2tfanNfcHJv
cGVydHlfZnJlZSkpOwotICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBucF9wcm9wc19jb3Vu
dDsgaSsrKSB7Ci0gICAgICAgIGlmIChfTlBOX0hhc1Byb3BlcnR5KDAsIG5wT2JqZWN0LCB2YWx1
ZXNbaV0pKSB7Ci0gICAgICAgICAgICBOUFZhcmlhbnQgdmFyOwotICAgICAgICAgICAgRXdrX0pT
X1Byb3BlcnR5KiBwcm9wID0gc3RhdGljX2Nhc3Q8RXdrX0pTX1Byb3BlcnR5Kj4oY2FsbG9jKHNp
emVvZihFd2tfSlNfUHJvcGVydHkpLCAxKSk7Ci0gICAgICAgICAgICBpZiAoIXByb3ApIHsKLSAg
ICAgICAgICAgICAgICBFUlIoIkNvdWxkIG5vdCBhbGxvY2F0ZSBtZW1vcnkgZm9yIGV3a19qc19w
cm9wZXJ0eSIpOwotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICB9Ci0K
LSAgICAgICAgICAgIF9OUE5fR2V0UHJvcGVydHkoMCwgbnBPYmplY3QsIHZhbHVlc1tpXSwgJnZh
cik7Ci0gICAgICAgICAgICBld2tfanNfbnB2YXJpYW50X3RvX3ZhcmlhbnQoJihwcm9wLT52YWx1
ZSksICZ2YXIpOwotICAgICAgICAgICAgcHJvcC0+bmFtZSA9IF9OUE5fVVRGOEZyb21JZGVudGlm
aWVyKHZhbHVlc1tpXSk7Ci0gICAgICAgICAgICBlaW5hX2hhc2hfYWRkKGNscy0+cHJvcGVydGll
cywgdmFsdWVzW2ldLCBwcm9wKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIENhbid0IHVz
ZSBld2tfanNfb2JqZWN0X25ldyhjbHMpIGJlY2F1c2UgaXQgZXhwZWN0cyBjbHMtPm1ldGEgdG8g
ZXhpc3QuCi0gICAgb2JqZWN0ID0gc3RhdGljX2Nhc3Q8RXdrX0pTX09iamVjdCo+KG1hbGxvYyhz
aXplb2YoRXdrX0pTX09iamVjdCkpKTsKLSAgICBpZiAoIW9iamVjdCkgewotICAgICAgICBFUlIo
IkNvdWxkIG5vdCBhbGxvY2F0ZSBtZW1vcnkgZm9yIGV3a19qc19vYmplY3QiKTsKLSAgICAgICAg
Z290byBlcnJvcjsKLSAgICB9Ci0KLSAgICBmcmVlKHZhbHVlcyk7Ci0gICAgRUlOQV9NQUdJQ19T
RVQob2JqZWN0LCBFV0tfSlNfT0JKRUNUX01BR0lDKTsKLSAgICBvYmplY3QtPm5hbWUgPSAwOwot
ICAgIG9iamVjdC0+Y2xzID0gY2xzOwotICAgIG9iamVjdC0+dmlldyA9IDA7Ci0KLSAgICBqc28g
PSByZWludGVycHJldF9jYXN0PEphdmFTY3JpcHRPYmplY3QqPihucE9iamVjdCk7Ci0gICAgaWYg
KCFzdHJjbXAoIkFycmF5IiwganNvLT5pbXAtPm1ldGhvZFRhYmxlKCktPmNsYXNzTmFtZShqc28t
PmltcCkuYXNjaWkoKS5kYXRhKCkpKQotICAgICAgICBvYmplY3QtPnR5cGUgPSBFV0tfSlNfT0JK
RUNUX0FSUkFZOwotICAgIGVsc2UgaWYgKCFzdHJjbXAoIkZ1bmN0aW9uIiwganNvLT5pbXAtPm1l
dGhvZFRhYmxlKCktPmNsYXNzTmFtZShqc28tPmltcCkuYXNjaWkoKS5kYXRhKCkpKQotICAgICAg
ICBvYmplY3QtPnR5cGUgPSBFV0tfSlNfT0JKRUNUX0ZVTkNUSU9OOwotICAgIGVsc2UKLSAgICAg
ICAgb2JqZWN0LT50eXBlID0gRVdLX0pTX09CSkVDVF9PQkpFQ1Q7Ci0KLSAgICBpZiAoZWluYV9o
YXNoX3BvcHVsYXRpb24oY2xzLT5wcm9wZXJ0aWVzKSA8IDI1KQotICAgICAgICBvYmplY3QtPnBy
b3BlcnRpZXMgPSBlaW5hX2hhc2hfc3RyaW5nX3NtYWxsX25ldygwKTsKLSAgICBlbHNlCi0gICAg
ICAgIG9iamVjdC0+cHJvcGVydGllcyA9IGVpbmFfaGFzaF9zdHJpbmdfc3VwZXJmYXN0X25ldygw
KTsKLQotICAgIGl0ID0gZWluYV9oYXNoX2l0ZXJhdG9yX2RhdGFfbmV3KGNscy0+cHJvcGVydGll
cyk7Ci0gICAgRUlOQV9JVEVSQVRPUl9GT1JFQUNIKGl0LCBwcm9wKSB7Ci0gICAgICAgIGNvbnN0
IGNoYXIqIGtleSA9IHByb3AtPm5hbWU7Ci0gICAgICAgIEV3a19KU19WYXJpYW50KiB2YWx1ZSA9
ICZwcm9wLT52YWx1ZTsKLSAgICAgICAgZWluYV9oYXNoX2FkZChvYmplY3QtPnByb3BlcnRpZXMs
IGtleSwgdmFsdWUpOwotICAgIH0KLQotICAgIGVpbmFfaXRlcmF0b3JfZnJlZShpdCk7Ci0gICAg
b2JqZWN0LT5iYXNlID0gKnJlaW50ZXJwcmV0X2Nhc3Q8SmF2YVNjcmlwdE9iamVjdCo+KG5wT2Jq
ZWN0KTsKLQotICAgIHJldHVybiBvYmplY3Q7Ci0KLWVycm9yOgotICAgIGV3a19qc19jbGFzc19m
cmVlKGNscyk7Ci0gICAgZnJlZSh2YWx1ZXMpOwotICAgIHJldHVybiAwOwotfQotCi1zdGF0aWMg
RWluYV9Cb29sIGV3a19qc19ucHZhcmlhbnRfdG9fdmFyaWFudChFd2tfSlNfVmFyaWFudCogZGF0
YSwgY29uc3QgTlBWYXJpYW50KiByZXN1bHQpCi17Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9S
RVRVUk5fVkFMKGRhdGEsIGZhbHNlKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9W
QUwocmVzdWx0LCBmYWxzZSk7Ci0gICAgc3dpdGNoIChyZXN1bHQtPnR5cGUpIHsKLSAgICBjYXNl
IE5QVmFyaWFudFR5cGVfVm9pZDoKLSAgICAgICAgZGF0YS0+dHlwZSA9IEVXS19KU19WQVJJQU5U
X1ZPSUQ7Ci0gICAgICAgIGRhdGEtPnZhbHVlLm8gPSAwOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIE5QVmFyaWFudFR5cGVfTnVsbDoKLSAgICAgICAgZGF0YS0+dHlwZSA9IEVXS19KU19WQVJJ
QU5UX05VTEw7Ci0gICAgICAgIGRhdGEtPnZhbHVlLm8gPSAwOwotICAgICAgICBicmVhazsKLSAg
ICBjYXNlIE5QVmFyaWFudFR5cGVfSW50MzI6Ci0gICAgICAgIGRhdGEtPnR5cGUgPSBFV0tfSlNf
VkFSSUFOVF9JTlQzMjsKLSAgICAgICAgZGF0YS0+dmFsdWUuaSA9IE5QVkFSSUFOVF9UT19JTlQz
MigqcmVzdWx0KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBOUFZhcmlhbnRUeXBlX0RvdWJs
ZToKLSAgICAgICAgZGF0YS0+dHlwZSA9IEVXS19KU19WQVJJQU5UX0RPVUJMRTsKLSAgICAgICAg
ZGF0YS0+dmFsdWUuZCA9IE5QVkFSSUFOVF9UT19ET1VCTEUoKnJlc3VsdCk7Ci0gICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgTlBWYXJpYW50VHlwZV9TdHJpbmc6Ci0gICAgICAgIGRhdGEtPnZhbHVl
LnMgPSBlaW5hX3N0cmluZ3NoYXJlX2FkZF9sZW5ndGgoTlBWQVJJQU5UX1RPX1NUUklORygqcmVz
dWx0KS5VVEY4Q2hhcmFjdGVycywgTlBWQVJJQU5UX1RPX1NUUklORygqcmVzdWx0KS5VVEY4TGVu
Z3RoKTsKLSAgICAgICAgZGF0YS0+dHlwZSA9IEVXS19KU19WQVJJQU5UX1NUUklORzsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBOUFZhcmlhbnRUeXBlX0Jvb2w6Ci0gICAgICAgIGRhdGEtPnR5
cGUgPSBFV0tfSlNfVkFSSUFOVF9CT09MOwotICAgICAgICBkYXRhLT52YWx1ZS5iID0gTlBWQVJJ
QU5UX1RPX0JPT0xFQU4oKnJlc3VsdCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgTlBWYXJp
YW50VHlwZV9PYmplY3Q6Ci0gICAgICAgIGRhdGEtPnR5cGUgPSBFV0tfSlNfVkFSSUFOVF9PQkpF
Q1Q7Ci0gICAgICAgIGRhdGEtPnZhbHVlLm8gPSBld2tfanNfbnBvYmplY3RfdG9fb2JqZWN0KE5Q
VkFSSUFOVF9UT19PQkpFQ1QoKnJlc3VsdCkpOwotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0
OgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0j
ZW5kaWYgLy8gRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCi0KLUV3a19KU19PYmplY3QqIGV3
a19qc19vYmplY3RfbmV3KGNvbnN0IEV3a19KU19DbGFzc19NZXRhKiBqc01ldGFDbGFzcykKLXsK
LSNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKLSAgICBFd2tfSlNfT2JqZWN0KiBvYmpl
Y3Q7Ci0KLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoanNNZXRhQ2xhc3MsIDAp
OwotCi0gICAgb2JqZWN0ID0gc3RhdGljX2Nhc3Q8RXdrX0pTX09iamVjdCo+KG1hbGxvYyhzaXpl
b2YoRXdrX0pTX09iamVjdCkpKTsKLSAgICBpZiAoIW9iamVjdCkgewotICAgICAgICBFUlIoIkNv
dWxkIG5vdCBhbGxvY2F0ZSBtZW1vcnkgZm9yIGV3a19qc19vYmplY3QiKTsKLSAgICAgICAgcmV0
dXJuIDA7Ci0gICAgfQotCi0gICAgRUlOQV9NQUdJQ19TRVQob2JqZWN0LCBFV0tfSlNfT0JKRUNU
X01BR0lDKTsKLSAgICBvYmplY3QtPmNscyA9IGV3a19qc19jbGFzc19uZXcoanNNZXRhQ2xhc3Mp
OwotICAgIG9iamVjdC0+dmlldyA9IDA7Ci0gICAgb2JqZWN0LT5uYW1lID0gMDsKLSAgICBvYmpl
Y3QtPnR5cGUgPSBFV0tfSlNfT0JKRUNUX09CSkVDVDsKLQotICAgIGlmIChlaW5hX2hhc2hfcG9w
dWxhdGlvbihvYmplY3QtPmNscy0+cHJvcGVydGllcykgPCAyNSkKLSAgICAgICAgb2JqZWN0LT5w
cm9wZXJ0aWVzID0gZWluYV9oYXNoX3N0cmluZ19zbWFsbF9uZXcocmVpbnRlcnByZXRfY2FzdDxF
aW5hX0ZyZWVfQ2I+KGV3a19qc192YXJpYW50X2ZyZWUpKTsKLSAgICBlbHNlCi0gICAgICAgIG9i
amVjdC0+cHJvcGVydGllcyA9IGVpbmFfaGFzaF9zdHJpbmdfc3VwZXJmYXN0X25ldyhyZWludGVy
cHJldF9jYXN0PEVpbmFfRnJlZV9DYj4oZXdrX2pzX3ZhcmlhbnRfZnJlZSkpOwotCi0gICAgZm9y
IChpbnQgaSA9IDA7IG9iamVjdC0+Y2xzLT5tZXRhLT5wcm9wZXJ0aWVzICYmIG9iamVjdC0+Y2xz
LT5tZXRhLT5wcm9wZXJ0aWVzW2ldLm5hbWU7IGkrKykgewotICAgICAgICBFd2tfSlNfUHJvcGVy
dHkgcHJvcCA9IG9iamVjdC0+Y2xzLT5tZXRhLT5wcm9wZXJ0aWVzW2ldOwotICAgICAgICBjb25z
dCBjaGFyKiBrZXkgPSBvYmplY3QtPmNscy0+bWV0YS0+cHJvcGVydGllc1tpXS5uYW1lOwotICAg
ICAgICBFd2tfSlNfVmFyaWFudCogdmFsdWUgPSBzdGF0aWNfY2FzdDxFd2tfSlNfVmFyaWFudCo+
KG1hbGxvYyhzaXplb2YoRXdrX0pTX1ZhcmlhbnQpKSk7Ci0gICAgICAgIGlmICghdmFsdWUpIHsK
LSAgICAgICAgICAgIEVSUigiQ291bGQgbm90IGFsbG9jYXRlIG1lbW9yeSBmb3IgZXdrX2pzX3Zh
cmlhbnQiKTsKLSAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgIH0KLSAgICAgICAgaWYg
KHByb3AuZ2V0KQotICAgICAgICAgICAgcHJvcC5nZXQob2JqZWN0LCBrZXksIHZhbHVlKTsKLSAg
ICAgICAgZWxzZSB7Ci0gICAgICAgICAgICB2YWx1ZS0+dHlwZSA9IHByb3AudmFsdWUudHlwZTsK
LSAgICAgICAgICAgIHN3aXRjaCAodmFsdWUtPnR5cGUpIHsKLSAgICAgICAgICAgIGNhc2UgRVdL
X0pTX1ZBUklBTlRfVk9JRDoKLSAgICAgICAgICAgIGNhc2UgRVdLX0pTX1ZBUklBTlRfTlVMTDoK
LSAgICAgICAgICAgICAgICB2YWx1ZS0+dmFsdWUubyA9IDA7Ci0gICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICBjYXNlIEVXS19KU19WQVJJQU5UX1NUUklORzoKLSAgICAgICAgICAg
ICAgICB2YWx1ZS0+dmFsdWUucyA9IGVpbmFfc3RyaW5nc2hhcmVfYWRkKHByb3AudmFsdWUudmFs
dWUucyk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIEVXS19KU19W
QVJJQU5UX0JPT0w6Ci0gICAgICAgICAgICAgICAgdmFsdWUtPnZhbHVlLmIgPSBwcm9wLnZhbHVl
LnZhbHVlLmI7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIEVXS19K
U19WQVJJQU5UX0lOVDMyOgotICAgICAgICAgICAgICAgIHZhbHVlLT52YWx1ZS5pID0gcHJvcC52
YWx1ZS52YWx1ZS5pOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBF
V0tfSlNfVkFSSUFOVF9ET1VCTEU6Ci0gICAgICAgICAgICAgICAgdmFsdWUtPnZhbHVlLmQgPSBw
cm9wLnZhbHVlLnZhbHVlLmQ7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBj
YXNlIEVXS19KU19WQVJJQU5UX09CSkVDVDoKLSAgICAgICAgICAgICAgICB2YWx1ZS0+dmFsdWUu
byA9IHByb3AudmFsdWUudmFsdWUubzsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfQotICAgICAgICBlaW5hX2hhc2hfYWRkKG9iamVjdC0+cHJvcGVydGll
cywga2V5LCB2YWx1ZSk7Ci0gICAgfQotCi0gICAgb2JqZWN0LT5iYXNlLm9iamVjdC5yZWZlcmVu
Y2VDb3VudCA9IDE7Ci0gICAgb2JqZWN0LT5iYXNlLm9iamVjdC5fY2xhc3MgPSAmRVdLX05QQ0xB
U1M7Ci0gICAgcmV0dXJuIG9iamVjdDsKLQotZXJyb3I6Ci0gICAgZXdrX2pzX29iamVjdF9mcmVl
KG9iamVjdCk7Ci0gICAgcmV0dXJuIDA7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShqc01ldGFD
bGFzcyk7Ci0gICAgcmV0dXJuIDA7Ci0jZW5kaWYKLX0KLQotdm9pZCBld2tfanNfb2JqZWN0X2Zy
ZWUoRXdrX0pTX09iamVjdCoganNPYmplY3QpCi17Ci0jaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJ
Tl9BUEkpCi0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oanNPYmplY3QpOwotICAgIEVJ
TkFfTUFHSUNfQ0hFQ0tfT1JfUkVUVVJOKGpzT2JqZWN0KTsKLSAgICBFaW5hX0Jvb2wgc2NyaXB0
X29iaiA9ICFqc09iamVjdC0+Y2xzLT5tZXRhOwotCi0gICAgZWluYV9oYXNoX2ZyZWUoanNPYmpl
Y3QtPnByb3BlcnRpZXMpOwotICAgIGVpbmFfc3RyaW5nc2hhcmVfZGVsKGpzT2JqZWN0LT5uYW1l
KTsKLQotICAgIGV3a19qc19jbGFzc19mcmVlKGNvbnN0X2Nhc3Q8RXdrX0pTX0NsYXNzKj4oanNP
YmplY3QtPmNscykpOwotCi0gICAgRUlOQV9NQUdJQ19TRVQoanNPYmplY3QsIEVJTkFfTUFHSUNf
Tk9ORSk7Ci0KLSAgICBpZiAoc2NyaXB0X29iaikKLSAgICAgICAgZnJlZShqc09iamVjdCk7Ci0j
ZWxzZQotICAgIFVOVVNFRF9QQVJBTShqc09iamVjdCk7Ci0jZW5kaWYKLX0KLQotRXZhc19PYmpl
Y3QqIGV3a19qc19vYmplY3Rfdmlld19nZXQoY29uc3QgRXdrX0pTX09iamVjdCoganNPYmplY3Qp
Ci17Ci0jaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCi0gICAgRUlOQV9TQUZFVFlfT05f
TlVMTF9SRVRVUk5fVkFMKGpzT2JqZWN0LCAwKTsKLSAgICBFSU5BX01BR0lDX0NIRUNLX09SX1JF
VFVSTihqc09iamVjdCwgMCk7Ci0gICAgcmV0dXJuIGpzT2JqZWN0LT52aWV3OwotI2Vsc2UKLSAg
ICBVTlVTRURfUEFSQU0oanNPYmplY3QpOwotICAgIHJldHVybiAwOwotI2VuZGlmCi19Ci0KLUVp
bmFfSGFzaCogZXdrX2pzX29iamVjdF9wcm9wZXJ0aWVzX2dldChjb25zdCBFd2tfSlNfT2JqZWN0
KiBqc09iamVjdCkKLXsKLSNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKLSAgICBFSU5B
X1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoanNPYmplY3QsIDApOwotICAgIEVJTkFfTUFHSUNf
Q0hFQ0tfT1JfUkVUVVJOKGpzT2JqZWN0LCAwKTsKLSAgICByZXR1cm4ganNPYmplY3QtPnByb3Bl
cnRpZXM7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShqc09iamVjdCk7Ci0gICAgcmV0dXJuIDA7
Ci0jZW5kaWYKLX0KLQotY29uc3QgY2hhciogZXdrX2pzX29iamVjdF9uYW1lX2dldChjb25zdCBF
d2tfSlNfT2JqZWN0KiBqc09iamVjdCkKLXsKLSNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQ
SSkKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoanNPYmplY3QsIDApOwotICAg
IEVJTkFfTUFHSUNfQ0hFQ0tfT1JfUkVUVVJOKGpzT2JqZWN0LCAwKTsKLSAgICByZXR1cm4ganNP
YmplY3QtPm5hbWU7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShqc09iamVjdCk7Ci0gICAgcmV0
dXJuIDA7Ci0jZW5kaWYKLX0KLQotRWluYV9Cb29sIGV3a19qc19vYmplY3RfaW52b2tlKEV3a19K
U19PYmplY3QqIGpzT2JqZWN0LCBFd2tfSlNfVmFyaWFudCogYXJncywgaW50IGFyZ0NvdW50LCBF
d2tfSlNfVmFyaWFudCogcmVzdWx0KQotewotI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJ
KQotICAgIE5QVmFyaWFudCogbnBfYXJnczsKLSAgICBOUFZhcmlhbnQgbnBfcmVzdWx0OwotICAg
IGJvb2wgZmFpbCA9IGZhbHNlOwotCi0gICAgRUlOQV9NQUdJQ19DSEVDS19PUl9SRVRVUk4oanNP
YmplY3QsIGZhbHNlKTsKLSAgICBpZiAoZXdrX2pzX29iamVjdF90eXBlX2dldChqc09iamVjdCkg
IT0gRVdLX0pTX09CSkVDVF9GVU5DVElPTikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlm
IChhcmdDb3VudCkKLSAgICAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGFyZ3Ms
IGZhbHNlKTsKLQotICAgIG5wX2FyZ3MgPSBzdGF0aWNfY2FzdDxOUFZhcmlhbnQqPihtYWxsb2Mo
c2l6ZW9mKE5QVmFyaWFudCkgICphcmdDb3VudCkpOwotICAgIGlmICghbnBfYXJncykgewotICAg
ICAgICBFUlIoIkNvdWxkIG5vdCBhbGxvY2F0ZSBtZW1vcnkgdG8gbWV0aG9kIGFyZ3VtZW50cyIp
OwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgZm9yIChpbnQgaSA9IDA7IGkg
PCBhcmdDb3VudDsgaSsrKQotICAgICAgICBpZiAoIWV3a19qc192YXJpYW50X3RvX25wdmFyaWFu
dCgmYXJnc1tpXSwgJm5wX2FyZ3NbaV0pKQotICAgICAgICAgICAgZ290byBlbmQ7Ci0KLSAgICBp
ZiAoIShmYWlsID0gX05QTl9JbnZva2VEZWZhdWx0KDAsIHJlaW50ZXJwcmV0X2Nhc3Q8TlBPYmpl
Y3QqPihqc09iamVjdCksIG5wX2FyZ3MsIGFyZ0NvdW50LCAmbnBfcmVzdWx0KSkpCi0gICAgICAg
IGdvdG8gZW5kOwotICAgIGlmIChyZXN1bHQpCi0gICAgICAgIGZhaWwgPSBld2tfanNfbnB2YXJp
YW50X3RvX3ZhcmlhbnQocmVzdWx0LCAmbnBfcmVzdWx0KTsKLQotZW5kOgotICAgIGZyZWUobnBf
YXJncyk7Ci0gICAgcmV0dXJuIGZhaWw7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShqc09iamVj
dCk7Ci0gICAgVU5VU0VEX1BBUkFNKGFyZ3MpOwotICAgIFVOVVNFRF9QQVJBTShhcmdDb3VudCk7
Ci0gICAgVU5VU0VEX1BBUkFNKHJlc3VsdCk7Ci0gICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCi19
Ci0KLUV3a19KU19PYmplY3RfVHlwZSBld2tfanNfb2JqZWN0X3R5cGVfZ2V0KGNvbnN0IEV3a19K
U19PYmplY3QqIGpzT2JqZWN0KQotewotI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQot
ICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChqc09iamVjdCwgRVdLX0pTX09CSkVD
VF9PQkpFQ1QpOwotICAgIEVJTkFfTUFHSUNfQ0hFQ0tfT1JfUkVUVVJOKGpzT2JqZWN0LCBFV0tf
SlNfT0JKRUNUX09CSkVDVCk7Ci0KLSAgICByZXR1cm4ganNPYmplY3QtPnR5cGU7Ci0jZWxzZQot
ICAgIFVOVVNFRF9QQVJBTShqc09iamVjdCk7Ci0gICAgcmV0dXJuIEVXS19KU19PQkpFQ1RfSU5W
QUxJRDsKLSNlbmRpZgotfQotCi12b2lkIGV3a19qc19vYmplY3RfdHlwZV9zZXQoRXdrX0pTX09i
amVjdCoganNPYmplY3QsIEV3a19KU19PYmplY3RfVHlwZSB0eXBlKQotewotI2lmIEVOQUJMRShO
RVRTQ0FQRV9QTFVHSU5fQVBJKQotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKGpzT2Jq
ZWN0KTsKLSAgICBFSU5BX01BR0lDX0NIRUNLX09SX1JFVFVSTihqc09iamVjdCk7Ci0KLSAgICBq
c09iamVjdC0+dHlwZSA9IHR5cGU7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShqc09iamVjdCk7
Ci0gICAgVU5VU0VEX1BBUkFNKHR5cGUpOwotI2VuZGlmCi19Ci0KLXZvaWQgZXdrX2pzX3Zhcmlh
bnRfZnJlZShFd2tfSlNfVmFyaWFudCoganNWYXJpYW50KQotewotI2lmIEVOQUJMRShORVRTQ0FQ
RV9QTFVHSU5fQVBJKQotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKGpzVmFyaWFudCk7
Ci0gICAgaWYgKGpzVmFyaWFudC0+dHlwZSA9PSBFV0tfSlNfVkFSSUFOVF9TVFJJTkcpCi0gICAg
ICAgIGVpbmFfc3RyaW5nc2hhcmVfZGVsKGpzVmFyaWFudC0+dmFsdWUucyk7Ci0gICAgZWxzZSBp
ZiAoanNWYXJpYW50LT50eXBlID09IEVXS19KU19WQVJJQU5UX09CSkVDVCkKLSAgICAgICAgZXdr
X2pzX29iamVjdF9mcmVlKGpzVmFyaWFudC0+dmFsdWUubyk7Ci0gICAgZnJlZShqc1ZhcmlhbnQp
OwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oanNWYXJpYW50KTsKLSNlbmRpZgotfQotCi12b2lk
IGV3a19qc192YXJpYW50X2FycmF5X2ZyZWUoRXdrX0pTX1ZhcmlhbnQqIGpzVmFyaWFudCwgaW50
IGNvdW50KQotewotI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQotICAgIEVJTkFfU0FG
RVRZX09OX05VTExfUkVUVVJOKGpzVmFyaWFudCk7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBj
b3VudDsgaSsrKSB7Ci0gICAgICAgIGlmIChqc1ZhcmlhbnRbaV0udHlwZSA9PSBFV0tfSlNfVkFS
SUFOVF9TVFJJTkcpCi0gICAgICAgICAgICBlaW5hX3N0cmluZ3NoYXJlX2RlbChqc1ZhcmlhbnRb
aV0udmFsdWUucyk7Ci0gICAgICAgIGVsc2UgaWYgKGpzVmFyaWFudFtpXS50eXBlID09IEVXS19K
U19WQVJJQU5UX09CSkVDVCkKLSAgICAgICAgICAgIGV3a19qc19vYmplY3RfZnJlZShqc1Zhcmlh
bnRbaV0udmFsdWUubyk7Ci0gICAgfQotICAgIGZyZWUoanNWYXJpYW50KTsKLSNlbHNlCi0gICAg
VU5VU0VEX1BBUkFNKGpzVmFyaWFudCk7Ci0gICAgVU5VU0VEX1BBUkFNKGNvdW50KTsKLSNlbmRp
ZgotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19qcy5oIGIvU291cmNl
L1dlYktpdC9lZmwvZXdrL2V3a19qcy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBh
NzQzNjIwLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfanMuaAorKysg
L2Rldi9udWxsCkBAIC0xLDIwOSArMCwwIEBACi0vKgotICAgIENvcHlyaWdodCAoQykgMjAxMSBQ
cm9GVVNJT04gZW1iZWRkZWQgc3lzdGVtcwotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICAgIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gICAgTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0g
ICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAgICBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICAgIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0gICAgWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQotICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUg
Q09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAgICBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSovCi0KLS8qKgotICogQGZpbGUgICAgZXdrX2pzLmgK
LSAqIEBicmllZiAgIEFsbG93cyB0byBleHBvcnQgb2JqZWN0cyB0byBKYXZhU2NyaXB0IEFQSS4K
LSAqLwotCi0jaWZuZGVmIGV3a19qc19oCi0jZGVmaW5lIGV3a19qc19oCi0KLSNpbmNsdWRlIDxF
aW5hLmg+Ci0jaW5jbHVkZSA8RXZhcy5oPgotCi0jaWZkZWYgX19jcGx1c3BsdXMKLWV4dGVybiAi
QyIgewotI2VuZGlmCi0KLSNkZWZpbmUgRVdLX0pTX0NMQVNTX01FVEFfVkVSU0lPTiAwCi0KLXR5
cGVkZWYgc3RydWN0IF9Fd2tfSlNfT2JqZWN0IEV3a19KU19PYmplY3Q7Ci10eXBlZGVmIHN0cnVj
dCBfRXdrX0pTX0NsYXNzX01ldGEgRXdrX0pTX0NsYXNzX01ldGE7Ci10eXBlZGVmIHN0cnVjdCBf
RXdrX0pTX1ZhcmlhbnQgRXdrX0pTX1ZhcmlhbnQ7Ci10eXBlZGVmIHN0cnVjdCBfRXdrX0pTX01l
dGhvZCBFd2tfSlNfTWV0aG9kOwotdHlwZWRlZiBzdHJ1Y3QgX0V3a19KU19Qcm9wZXJ0eSBFd2tf
SlNfUHJvcGVydHk7Ci10eXBlZGVmIHN0cnVjdCBfRXdrX0pTX0RlZmF1bHQgRXdrX0pTX0RlZmF1
bHQ7Ci10eXBlZGVmIEVpbmFfQm9vbCAoKkV3a19KU19TZXRfQ2IpKEV3a19KU19PYmplY3QgKm9i
aiwgY29uc3QgY2hhciAqbmFtZSwgY29uc3QgRXdrX0pTX1ZhcmlhbnQgKnZhbHVlKTsKLXR5cGVk
ZWYgRWluYV9Cb29sICgqRXdrX0pTX0dldF9DYikoRXdrX0pTX09iamVjdCAqb2JqLCBjb25zdCBj
aGFyICpuYW1lLCBFd2tfSlNfVmFyaWFudCAqdmFsdWUpOwotdHlwZWRlZiBFaW5hX0Jvb2wgKCpF
d2tfSlNfRGVsX0NiKShFd2tfSlNfT2JqZWN0ICpvYmosIGNvbnN0IGNoYXIgKm5hbWUpOwotdHlw
ZWRlZiBFd2tfSlNfVmFyaWFudCogKCpFd2tfSlNfSW52b2tlX0NiKShFd2tfSlNfT2JqZWN0ICpv
YmosIEV3a19KU19WYXJpYW50ICphcmdzLCBpbnQgYXJnQ291bnQpOwotCi10eXBlZGVmIGVudW0g
ewotICAgIEVXS19KU19WQVJJQU5UX1ZPSUQsCi0gICAgRVdLX0pTX1ZBUklBTlRfTlVMTCwKLSAg
ICBFV0tfSlNfVkFSSUFOVF9CT09MLAotICAgIEVXS19KU19WQVJJQU5UX0lOVDMyLAotICAgIEVX
S19KU19WQVJJQU5UX0RPVUJMRSwKLSAgICBFV0tfSlNfVkFSSUFOVF9TVFJJTkcsCi0gICAgRVdL
X0pTX1ZBUklBTlRfT0JKRUNUCi19IEV3a19KU19WYXJpYW50X1R5cGU7Ci0KLXR5cGVkZWYgZW51
bSB7Ci0gICAgRVdLX0pTX09CSkVDVF9PQkpFQ1QsCi0gICAgRVdLX0pTX09CSkVDVF9BUlJBWSwK
LSAgICBFV0tfSlNfT0JKRUNUX0ZVTkNUSU9OLAotICAgIEVXS19KU19PQkpFQ1RfSU5WQUxJRAot
fSBFd2tfSlNfT2JqZWN0X1R5cGU7Ci0KLXN0cnVjdCBfRXdrX0pTX1ZhcmlhbnQgewotICAgIEV3
a19KU19WYXJpYW50X1R5cGUgdHlwZTsKLSAgICB1bmlvbiB7Ci0gICAgICAgIEVpbmFfQm9vbCBi
OwotICAgICAgICBpbnQgaTsKLSAgICAgICAgZG91YmxlIGQ7Ci0gICAgICAgIGNvbnN0IGNoYXIg
KnM7Ci0gICAgICAgIEV3a19KU19PYmplY3QgKm87Ci0gICAgfSB2YWx1ZTsKLX07Ci0KLXN0cnVj
dCBfRXdrX0pTX01ldGhvZCB7Ci0gICAgY29uc3QgY2hhciAqbmFtZTsKLSAgICBFd2tfSlNfSW52
b2tlX0NiIGludm9rZTsKLX07Ci0KLXN0cnVjdCBfRXdrX0pTX1Byb3BlcnR5IHsKLSAgICBjb25z
dCBjaGFyICpuYW1lOwotICAgIEV3a19KU19TZXRfQ2Igc2V0OwotICAgIEV3a19KU19HZXRfQ2Ig
Z2V0OwotICAgIEV3a19KU19EZWxfQ2IgZGVsOwotICAgIEV3a19KU19WYXJpYW50IHZhbHVlOwot
fTsKLQotc3RydWN0IF9Fd2tfSlNfRGVmYXVsdCB7Ci0gICAgRXdrX0pTX1NldF9DYiBzZXQ7Ci0g
ICAgRXdrX0pTX0dldF9DYiBnZXQ7Ci0gICAgRXdrX0pTX0RlbF9DYiBkZWw7Ci19OwotCi1zdHJ1
Y3QgX0V3a19KU19DbGFzc19NZXRhIHsKLSAgICB1bnNpZ25lZCBpbnQgdmVyc2lvbjsgLy8gZGVm
aW5lCi0gICAgY29uc3QgRXdrX0pTX01ldGhvZCAqbWV0aG9kczsgLy8gbnVsbCB0ZXJtaW5hdGVk
IGFycmF5Ci0gICAgY29uc3QgRXdrX0pTX1Byb3BlcnR5ICpwcm9wZXJ0aWVzOyAvLyBudWxsIHRl
cm1pbmF0ZWQgYXJyYXkKLSAgICBFd2tfSlNfRGVmYXVsdCBkZWZhdWx0X3Byb3A7Ci19OwotCi0v
KioKLSAqIEdldHMgRWluYV9IYXNoIHdpdGggb2JqZWN0J3MgcHJvcGVydGllcy4KLSAqCi0gKiBA
cGFyYW0gb2JqIE9iamVjdCB3aG9zZSBwcm9wZXJ0aWVzIGFyZSB3YW50ZWQuCi0gKgotICogQHJl
dHVybiBvYmplY3QncyBwcm9wZXJ0aWVzLgotICovCi1FQVBJIEVpbmFfSGFzaCAqZXdrX2pzX29i
amVjdF9wcm9wZXJ0aWVzX2dldChjb25zdCBFd2tfSlNfT2JqZWN0ICpvYmopOwotCi0vKioKLSAq
IEdldHMgbmFtZSBvZiB0aGUgb2JqZWN0LgotICoKLSAqIEBwYXJhbSBvYmogT2JqZWN0IHdob3Nl
IG5hbWUgaXMgd2FudGVkLgotICoKLSAqIEByZXR1cm4gbmFtZSBvZiBvYmplY3QuCi0gKi8KLQot
RUFQSSBjb25zdCBjaGFyICpld2tfanNfb2JqZWN0X25hbWVfZ2V0KGNvbnN0IEV3a19KU19PYmpl
Y3QgKm9iaik7Ci0KLS8qKgotICogUmV0dXJucyB0aGUgdmlldyBhc3NvY2lhdGVkIHdpdGggYW4g
RXdrX0pTX09iamVjdC4KLSAqCi0gKiBUaGUgcmV0dXJuZWQgdmlldyBpcyB0aGUgb25lIHBhc3Nl
ZCB0byBld2tfdmlld19qc19vYmplY3RfYWRkLiBSaWdodCBub3csCi0gKiB0aGUgb2JqZWN0IGlz
IGFsd2F5cyBhZGRlZCB0byB0aGUgdmlldydzIG1haW4gZnJhbWUuCi0gKgotICogQHBhcmFtIG9i
aiBUaGUgb2JqZWN0IHRvIGJlIHF1ZXJpZWQuCi0gKgotICogQHJldHVybiBUaGUgdmlldyB3aG9z
ZSBtYWluIGZyYW1lIHRoZSBvYmplY3QgaGFzIGJlZW4gaW5zZXJ0ZWQgaW50bywgb3IKLSAqICAg
ICAgICAgQGMgTlVMTCBpZiB0aGUgb2JqZWN0IGhhcyBub3QgYmVlbiBhZGRlZCB0byBhIHZpZXcg
eWV0LgotICoKLSAqIEBzYSBld2tfdmlld19qc19vYmplY3RfYWRkLCBld2tfdmlld19mcmFtZV9t
YWluX2dldAotICovCi1FQVBJIEV2YXNfT2JqZWN0ICpld2tfanNfb2JqZWN0X3ZpZXdfZ2V0KGNv
bnN0IEV3a19KU19PYmplY3QgKm9iaik7Ci0KLS8qKgotICogUmVsZWFzZSByZXNvdXJjZXMgYWxs
b2NhdGVkIGJ5IEBhIHZhci4KLSAqCi0gKiBAcGFyYW0gdmFyIEBhIEV3a19KU19WYXJpYW50IHRv
IGJlIHJlbGVhc2UKLSAqLwotRUFQSSB2b2lkIGV3a19qc192YXJpYW50X2ZyZWUoRXdrX0pTX1Zh
cmlhbnQgKnZhcik7Ci0KLS8qKgotICogUmVsZWFzZSByZXNvdXJjZXMgYWxsb2NhdGVkIGJ5IEBh
IHZhci4KLSAqCi0gKiBAcGFyYW0gdmFyIEBhIEV3a19KU19WYXJpYW50IHRvIGJlIHJlbGVhc2UK
LSAqIEBwYXJhbSBjb3VudCBAYSBzaXplIG9mIGFycmF5Ci0gKi8KLUVBUEkgdm9pZCBld2tfanNf
dmFyaWFudF9hcnJheV9mcmVlKEV3a19KU19WYXJpYW50ICp2YXIsIGludCBjb3VudCk7Ci0KLS8q
KgotICogQ3JlYXRlIGEgRXdrX0pTX09iamVjdCB0byBiZSB1c2VkIGluIEBhIGV3a192aWV3X2pz
X29iamVjdF9hZGQuIFRoZSBNZXRhIGNsYXNzJ3MKLSAqIG1ldGhvZHMgYW5kIHByb3BlcnRpZXMg
YXJlIG5vdCBtb2RpZmllZCBidXQgcmVmZXJlbmNlcyB0byBpdCBhcmUga2VwdCBhcyBsb25nCi0g
KiBhcyB0aGUgb2JqZWN0IGNyZWF0ZWQgZnJvbSBpdCBsaXZlcy4gQWxsIHByb3BlcnRpZXMgY3Jl
YXRlZCBoZXJlCi0gKiB3aWxsIGJlIGFkZGVkIHRvIHRoZSBvYmplY3QgaGFzaCBvZiBwcm9wZXJ0
aWVzLiBQcm9wZXJ0aWVzIHVzaW5nIGRlZmF1bHRfcHJvcCdzCi0gKiBnZXQvc2V0L2RlbCBtZXRo
b2RzIHNob3VsZCBhbHNvIGJlIGFkZGVkIHRvIHRoZSBvYmplY3RzIGhhc2goc2VlOgotICogQGEg
ZXdrX2pzX29iamVjdF9wcm9wZXJ0aWVzX2dldCkuIE1ldGhvZHMgbXVzdCBmcmVlIHRoZSBhcmd1
bWVudHMgdGhleSByZWNlaXZlKHNlZToKLSAqIEBhIGV3a19qc192YXJpYW5nX2FycmF5X2ZyZWUp
LgotICoKLSAqCi0gKiBAcGFyYW0gY2xzIEBhIEV3a19KU19DbGFzcyB0aGF0IGRlc2NyaWJlcyB0
aGUgb2JqZWN0IHRvIGJlIGNyZWF0ZWQuCi0gKgotICogQHJldHVybiBUaGUgRXdrX0pTX09iamVj
dCBjcmVhdGVkLgotICovCi1FQVBJIEV3a19KU19PYmplY3QgKmV3a19qc19vYmplY3RfbmV3KGNv
bnN0IEV3a19KU19DbGFzc19NZXRhICptZXRhX2Nscyk7Ci0KLS8qKgotICogUmVsZWFzZSByZXNv
dXJjZXMgYWxsb2NhdGVkIGJ5IEBhIG9iai4KLSAqCi0gKiBAcGFyYW0gb2JqIEBhIEV3a19KU19P
YmplY3QgdG8gYmUgcmVsZWFzZWQuCi0gKi8KLUVBUEkgdm9pZCBld2tfanNfb2JqZWN0X2ZyZWUo
RXdrX0pTX09iamVjdCAqb2JqKTsKLQotLyoqCi0gKiBDYWxscyB0aGUgZnVuY3Rpb24gdGhpcyBv
YmplY3QgcmVwcmVzZW50cy4KLSAqCi0gKiBAcGFyYW0gb2JqIE9iamVjdCB0aGF0IHJlcHJlc2Vu
dHMgZnVuY3Rpb24uCi0gKiBAcGFyYW0gYXJncyBBcmd1bWVudHMgdG8gYmUgcGFzc2VkIHRvIGZ1
bmN0aW9uLgotICogQHBhcmFtIGFyZ19jb3VudCBOdW1iZXIgb2YgYXJndW1lbnRzLgotICogQHBh
cmFtIHJlc3VsdCBSZXR1cm4gdmFsdWUgb2YgdGhlIGludm9rZWQgZnVuY3Rpb24uCi0gKgotICog
QHJldHVybiBAYyBFSU5BX1RSVUUgaWYgZnVuY3Rpb24gd2FzIGV4ZWN1dGVkLCBAYyBFSU5BX0ZB
TFNFIGlmIGZ1bmN0aW9uIHdhcyBub3QgZXhlY3V0ZWQuCi0gKi8KLUVBUEkgRWluYV9Cb29sIGV3
a19qc19vYmplY3RfaW52b2tlKEV3a19KU19PYmplY3QgKm9iaiwgRXdrX0pTX1ZhcmlhbnQgKmFy
Z3MsIGludCBhcmdfY291bnQsIEV3a19KU19WYXJpYW50ICpyZXN1bHQpOwotCi0vKioKLSAqIFJl
dHVybnMgdGhlIHR5cGUgdGhpcyBvYmplY3QgcmVwcmVzZW50cy4KLSAqCi0gKiBAcGFyYW0gb2Jq
IE9iamVjdAotICoKLSAqIEByZXR1cm4gQGMgRVdLX0pTX09CSkVDVCBpZiBpdCBpcyBhbiBvYmpl
Y3QsIEBjIEVXS19KU19BUlJBWSBpZiBpdCBpcyBhbiBhcnJheSBhbmQKLSAqIEBjIEVXS19KU19G
VU5DVElPTiBpZiBpdCBpcyBhIGZ1bmN0aW9uLgotICovCi1FQVBJIEV3a19KU19PYmplY3RfVHlw
ZSBld2tfanNfb2JqZWN0X3R5cGVfZ2V0KGNvbnN0IEV3a19KU19PYmplY3QgKm9iaik7Ci0KLS8q
KgotICogU2V0cyB0aGUgdHlwZSB0aGlzIG9iamVjdCByZXByZXNlbnRzLgotICoKLSAqIEBwYXJh
bSBvYmogT2JqZWN0Ci0gKiBAcGFyYW0gdHlwZSBUeXBlCi0gKgotICovCi1FQVBJIHZvaWQgZXdr
X2pzX29iamVjdF90eXBlX3NldChFd2tfSlNfT2JqZWN0ICpvYmosIEV3a19KU19PYmplY3RfVHlw
ZSB0eXBlKTsKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi19Ci0jZW5kaWYKLQotI2VuZGlmIC8vIGV3
a19qc19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2pzX3ByaXZhdGUu
aCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfanNfcHJpdmF0ZS5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAxN2ZjMzY2Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvZWZs
L2V3ay9ld2tfanNfcHJpdmF0ZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotLyoK
LSAgICBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBQcm9GVVNJT04gZW1iZWRkZWQgc3lzdGVtcwot
Ci0gICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgotICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCi0gICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi0gICAgVGhpcyBsaWJy
YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0g
ICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKLSAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAgIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRl
IHRvCi0gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSov
Ci0KLSNpZm5kZWYgZXdrX2pzX3ByaXZhdGVfaAotI2RlZmluZSBld2tfanNfcHJpdmF0ZV9oCi0K
LSNpbmNsdWRlICJOUF9qc29iamVjdC5oIgotI2luY2x1ZGUgImV3a19qcy5oIgotCi0jaWYgRU5B
QkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCi0jZGVmaW5lIEVXS19KU19PQkpFQ1RfTUFHSUMgMHg2
OTY5NjkKLQotdHlwZWRlZiBzdHJ1Y3QgX0V3a19KU19DbGFzcyBFd2tfSlNfQ2xhc3M7Ci1zdHJ1
Y3QgX0V3a19KU19PYmplY3QgewotICAgIEphdmFTY3JpcHRPYmplY3QgYmFzZTsKLSAgICBjb25z
dCBjaGFyKiBuYW1lOwotICAgIGNvbnN0IEV3a19KU19DbGFzcyogY2xzOwotICAgIEVpbmFfSGFz
aCogcHJvcGVydGllczsKLSAgICBFdmFzX09iamVjdCogdmlldzsgLy8gZXdrX3ZpZXc6IGNoZWNr
IGlmIHRoaXMgb2JqZWN0IGhhcyBhbHJlYWR5IGJlZW4gYWRkZWQgdG8gYW5vdGhlciBld2tfdmll
dwotICAgIEV3a19KU19PYmplY3RfVHlwZSB0eXBlOwotICAgIEVJTkFfTUFHSUM7Ci19OwotI2Vu
ZGlmIC8vIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQotCi0jZW5kaWYgLy8gZXdrX2pzX3By
aXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19tYWluLmNwcCBi
L1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfbWFpbi5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDI2OTg3NjIuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3
a19tYWluLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDIxNCArMCwwIEBACi0vKgotICAgIENvcHly
aWdodCAoQykgMjAwOS0yMDEwIFByb0ZVU0lPTiBlbWJlZGRlZCBzeXN0ZW1zCi0gICAgQ29weXJp
Z2h0IChDKSAyMDA5LTIwMTEgU2Ftc3VuZyBFbGVjdHJvbmljcwotCi0gICAgVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICAgIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
Ci0gICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCi0gICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAgICBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQotICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgotCi0gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gICAgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwKLSAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSovCi0KLSNpbmNsdWRlICJjb25m
aWcuaCIKLSNpbmNsdWRlICJld2tfbWFpbi5oIgotCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgot
I2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRlICJQYWdlQ2FjaGUuaCIKLSNpbmNsdWRlICJQ
YWdlR3JvdXAuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybVN0cmF0ZWdpZXNFZmwuaCIKLSNpbmNsdWRl
ICJSZXNvdXJjZUhhbmRsZS5oIgotI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKLSNpbmNs
dWRlICJTZXR0aW5ncy5oIgotI2luY2x1ZGUgIlNvdXBOZXR3b3JrU2Vzc2lvbi5oIgotI2luY2x1
ZGUgIlN0b3JhZ2VUcmFja2VyLmgiCi0jaW5jbHVkZSAiU3RvcmFnZVRyYWNrZXJDbGllbnRFZmwu
aCIKLSNpbmNsdWRlICJld2tfYXV0aF9zb3VwX3ByaXZhdGUuaCIKLSNpbmNsdWRlICJld2tfbmV0
d29yay5oIgotI2luY2x1ZGUgImV3a19wcml2YXRlLmgiCi0jaW5jbHVkZSAiZXdrX3NldHRpbmdz
LmgiCi0jaW5jbHVkZSAiZXdrX3NldHRpbmdzX3ByaXZhdGUuaCIKLSNpbmNsdWRlICJydW50aW1l
L0luaXRpYWxpemVUaHJlYWRpbmcuaCIKLSNpbmNsdWRlICJydW50aW1lL09wZXJhdGlvbnMuaCIK
LSNpbmNsdWRlIDxFY29yZS5oPgotI2luY2x1ZGUgPEVjb3JlX0V2YXMuaD4KLSNpbmNsdWRlIDxF
ZGplLmg+Ci0jaW5jbHVkZSA8RWZyZWV0Lmg+Ci0jaW5jbHVkZSA8RWluYS5oPgotI2luY2x1ZGUg
PEV2YXMuaD4KLSNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgotI2luY2x1ZGUgPGdsaWIuaD4KLSNp
bmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4KLSNpbmNsdWRlIDxzdGRsaWIuaD4KLSNpbmNsdWRlIDxz
eXMvc3RhdC5oPgotI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KLQotI2lmZGVmIEhBVkVfRUNP
UkVfWAotI2luY2x1ZGUgPEVjb3JlX1guaD4KLSNlbmRpZgotCi1zdGF0aWMgaW50IF9ld2tJbml0
Q291bnQgPSAwOwotCi0vKioKLSAqIFx2YXIgICAgIF9ld2tfbG9nX2RvbQotICogQGJyaWVmICAg
dGhlIGxvZyBkb21haW4gaWRlbnRpZmllciB0aGF0IGlzIHVzZWQgd2l0aCBFSU5BJ3MgbWFjcm9z
Ci0gKi8KLWludCBfZXdrX2xvZ19kb20gPSAtMTsKLQotc3RhdGljIEVpbmFfQm9vbCBfZXdrX2lu
aXRfYm9keSh2b2lkKTsKLQotaW50IGV3a19pbml0KHZvaWQpCi17Ci0gICAgaWYgKF9ld2tJbml0
Q291bnQpCi0gICAgICAgIHJldHVybiArK19ld2tJbml0Q291bnQ7Ci0KLSAgICBpZiAoIWVpbmFf
aW5pdCgpKQotICAgICAgICBnb3RvIGVycm9yX2VpbmE7Ci0KLSAgICBfZXdrX2xvZ19kb20gPSBl
aW5hX2xvZ19kb21haW5fcmVnaXN0ZXIoImV3ZWJraXQiLCBFSU5BX0NPTE9SX09SQU5HRSk7Ci0g
ICAgaWYgKF9ld2tfbG9nX2RvbSA8IDApIHsKLSAgICAgICAgRUlOQV9MT0dfQ1JJVCgiY291bGQg
bm90IHJlZ2lzdGVyIGxvZyBkb21haW4gJ2V3ZWJraXQnIik7Ci0gICAgICAgIGdvdG8gZXJyb3Jf
bG9nX2RvbWFpbjsKLSAgICB9Ci0KLSAgICBpZiAoIWV2YXNfaW5pdCgpKSB7Ci0gICAgICAgIENS
SVRJQ0FMKCJjb3VsZCBub3QgaW5pdCBldmFzLiIpOwotICAgICAgICBnb3RvIGVycm9yX2V2YXM7
Ci0gICAgfQotCi0gICAgaWYgKCFlY29yZV9pbml0KCkpIHsKLSAgICAgICAgQ1JJVElDQUwoImNv
dWxkIG5vdCBpbml0IGVjb3JlLiIpOwotICAgICAgICBnb3RvIGVycm9yX2Vjb3JlOwotICAgIH0K
LQotICAgIGlmICghZWNvcmVfZXZhc19pbml0KCkpIHsKLSAgICAgICAgQ1JJVElDQUwoImNvdWxk
IG5vdCBpbml0IGVjb3JlX2V2YXMuIik7Ci0gICAgICAgIGdvdG8gZXJyb3JfZWNvcmVfZXZhczsK
LSAgICB9Ci0KLSAgICBpZiAoIWVmcmVldF9pbml0KCkpIHsKLSAgICAgICAgQ1JJVElDQUwoImNv
dWxkIG5vdCBpbml0IGVmcmVldC4iKTsKLSAgICAgICAgZ290byBlcnJvcl9lZnJlZXQ7Ci0gICAg
fQotCi0gICAgaWYgKCFlZGplX2luaXQoKSkgewotICAgICAgICBDUklUSUNBTCgiY291bGQgbm90
IGluaXQgZWRqZS4iKTsKLSAgICAgICAgZ290byBlcnJvcl9lZGplOwotICAgIH0KLQotI2lmZGVm
IEhBVkVfRUNPUkVfWAotICAgIGlmICghZWNvcmVfeF9pbml0KDApKSB7Ci0gICAgICAgIENSSVRJ
Q0FMKCJjb3VsZCBub3QgaW5pdCBlY29yZV94LiIpOwotICAgICAgICBnb3RvIGVycm9yX2Vjb3Jl
X3g7Ci0gICAgfQotI2VuZGlmCi0KLSAgICBpZiAoIV9ld2tfaW5pdF9ib2R5KCkpIHsKLSAgICAg
ICAgQ1JJVElDQUwoImNvdWxkIG5vdCBpbml0IGJvZHkiKTsKLSAgICAgICAgZ290byBlcnJvcl9l
ZGplOwotICAgIH0KLQotICAgIHJldHVybiArK19ld2tJbml0Q291bnQ7Ci0KLSNpZmRlZiBIQVZF
X0VDT1JFX1gKLWVycm9yX2Vjb3JlX3g6Ci0gICAgZWRqZV9zaHV0ZG93bigpOwotI2VuZGlmCi1l
cnJvcl9lZGplOgotICAgIGVmcmVldF9zaHV0ZG93bigpOwotZXJyb3JfZWZyZWV0OgotICAgIGVj
b3JlX2V2YXNfc2h1dGRvd24oKTsKLWVycm9yX2Vjb3JlX2V2YXM6Ci0gICAgZWNvcmVfc2h1dGRv
d24oKTsKLWVycm9yX2Vjb3JlOgotICAgIGV2YXNfc2h1dGRvd24oKTsKLWVycm9yX2V2YXM6Ci0g
ICAgZWluYV9sb2dfZG9tYWluX3VucmVnaXN0ZXIoX2V3a19sb2dfZG9tKTsKLSAgICBfZXdrX2xv
Z19kb20gPSAtMTsKLWVycm9yX2xvZ19kb21haW46Ci0gICAgZWluYV9zaHV0ZG93bigpOwotZXJy
b3JfZWluYToKLSAgICByZXR1cm4gMDsKLX0KLQotaW50IGV3a19zaHV0ZG93bih2b2lkKQotewot
ICAgIF9ld2tJbml0Q291bnQtLTsKLSAgICBpZiAoX2V3a0luaXRDb3VudCkKLSAgICAgICAgcmV0
dXJuIF9ld2tJbml0Q291bnQ7Ci0KLSNpZmRlZiBIQVZFX0VDT1JFX1gKLSAgICBlY29yZV94X3No
dXRkb3duKCk7Ci0jZW5kaWYKLSAgICBlZGplX3NodXRkb3duKCk7Ci0gICAgZWZyZWV0X3NodXRk
b3duKCk7Ci0gICAgZWNvcmVfZXZhc19zaHV0ZG93bigpOwotICAgIGVjb3JlX3NodXRkb3duKCk7
Ci0gICAgZXZhc19zaHV0ZG93bigpOwotICAgIGVpbmFfbG9nX2RvbWFpbl91bnJlZ2lzdGVyKF9l
d2tfbG9nX2RvbSk7Ci0gICAgX2V3a19sb2dfZG9tID0gLTE7Ci0gICAgZWluYV9zaHV0ZG93bigp
OwotCi0gICAgcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyBXZWJDb3JlOjpTdG9yYWdlVHJhY2tlckNs
aWVudEVmbCogdHJhY2tlckNsaWVudCgpCi17Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElD
X0xPQ0FMKFdlYkNvcmU6OlN0b3JhZ2VUcmFja2VyQ2xpZW50RWZsLCB0cmFja2VyQ2xpZW50LCAo
KSk7Ci0gICAgcmV0dXJuICZ0cmFja2VyQ2xpZW50OwotfQotCi1FaW5hX0Jvb2wgX2V3a19pbml0
X2JvZHkodm9pZCkKLXsKLSNpZiAhR0xJQl9DSEVDS19WRVJTSU9OKDIsIDM1LCAwKQotICAgIGdf
dHlwZV9pbml0KCk7Ci0jZW5kaWYKLQotICAgIGlmICghZWNvcmVfbWFpbl9sb29wX2dsaWJfaW50
ZWdyYXRlKCkpCi0gICAgICAgIFdBUk4oIkVjb3JlIHdhcyBub3QgY29tcGlsZWQgd2l0aCBHTGli
IHN1cHBvcnQsIHNvbWUgcGx1Z2lucyB3aWxsIG5vdCAiCi0gICAgICAgICAgICAid29yayAoaWU6
IEFkb2JlIEZsYXNoKSIpOwotCi0gICAgV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6aW5pdGlh
bGl6ZVRocmVhZGluZygpOwotI2lmICFMT0dfRElTQUJMRUQKLSAgICBXZWJDb3JlOjppbml0aWFs
aXplTG9nZ2luZ0NoYW5uZWxzSWZOZWNlc3NhcnkoKTsKLSNlbmRpZiAvLyAhTE9HX0RJU0FCTEVE
Ci0gICAgV2ViQ29yZTo6U2V0dGluZ3M6OnNldERlZmF1bHRNaW5ET01UaW1lckludGVydmFsKDAu
MDA0KTsKLQotICAgIFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6aW5pdGlhbGl6ZSgpOwotCi0gICAg
Ly8gUGFnZSBjYWNoZSBjYXBhY2l0eSAoaW4gcGFnZXMpLiBDb21tZW50IGZyb20gTWFjIHBvcnQ6
Ci0gICAgLy8gKFJlc2VhcmNoIGluZGljYXRlcyB0aGF0IHZhbHVlIC8gcGFnZSBkcm9wcyBzdWJz
dGFudGlhbGx5IGFmdGVyIDMgcGFnZXMuKQotICAgIC8vIEZJWE1FOiBDYWxjdWxhdGUgYmFzZWQg
b24gYXZhaWxhYmxlIHJlc291cmNlcwotICAgIGV3a19zZXR0aW5nc19wYWdlX2NhY2hlX2NhcGFj
aXR5X3NldCgzKTsKLSAgICBXZWJDb3JlOjpQYWdlR3JvdXA6OnNldFNob3VsZFRyYWNrVmlzaXRl
ZExpbmtzKHRydWUpOwotCi0gICAgU3RyaW5nIGxvY2FsU3RvcmFnZURpcmVjdG9yeSA9IFN0cmlu
Zzo6ZnJvbVVURjgoZWZyZWV0X2RhdGFfaG9tZV9nZXQoKSkgKyAiL1dlYktpdEVmbC9Mb2NhbFN0
b3JhZ2UiOwotICAgIFN0cmluZyB3ZWJEYXRhYmFzZURpcmVjdG9yeSA9IFN0cmluZzo6ZnJvbVVU
RjgoZWZyZWV0X2NhY2hlX2hvbWVfZ2V0KCkpICsgIi9XZWJLaXRFZmwvRGF0YWJhc2VzIjsKLSAg
ICBTdHJpbmcgYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSA9IFN0cmluZzo6ZnJvbVVURjgoZWZy
ZWV0X2NhY2hlX2hvbWVfZ2V0KCkpICsgIi9XZWJLaXRFZmwvQXBwbGljYXRpb25zIjsKLSAgICBT
dHJpbmcgZmlsZVN5c3RlbURpcmVjdG9yeSA9IFN0cmluZzo6ZnJvbVVURjgoZWZyZWV0X2RhdGFf
aG9tZV9nZXQoKSkgKyAiL1dlYktpdEVmbC9GaWxlU3lzdGVtIjsKLQotICAgIGV3a19zZXR0aW5n
c19sb2NhbF9zdG9yYWdlX3BhdGhfc2V0KGxvY2FsU3RvcmFnZURpcmVjdG9yeS51dGY4KCkuZGF0
YSgpKTsKLSAgICBld2tfc2V0dGluZ3Nfd2ViX2RhdGFiYXNlX3BhdGhfc2V0KHdlYkRhdGFiYXNl
RGlyZWN0b3J5LnV0ZjgoKS5kYXRhKCkpOwotICAgIGV3a19zZXR0aW5nc19hcHBsaWNhdGlvbl9j
YWNoZV9wYXRoX3NldChhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5LnV0ZjgoKS5kYXRhKCkpOwot
ICAgIGV3a19zZXR0aW5nc19maWxlX3N5c3RlbV9wYXRoX3NldChmaWxlU3lzdGVtRGlyZWN0b3J5
LnV0ZjgoKS5kYXRhKCkpOwotCi0gICAgZXdrX25ldHdvcmtfdGxzX2NlcnRpZmljYXRlX2NoZWNr
X3NldChmYWxzZSk7Ci0KLSAgICBXZWJDb3JlOjpTdG9yYWdlVHJhY2tlcjo6aW5pdGlhbGl6ZVRy
YWNrZXIobG9jYWxTdG9yYWdlRGlyZWN0b3J5LnV0ZjgoKS5kYXRhKCksIHRyYWNrZXJDbGllbnQo
KSk7Ci0KLSAgICBTb3VwU2Vzc2lvbkZlYXR1cmUqIGF1dGhfZGlhbG9nID0gc3RhdGljX2Nhc3Q8
U291cFNlc3Npb25GZWF0dXJlKj4oZ19vYmplY3RfbmV3KEVXS19UWVBFX1NPVVBfQVVUSF9ESUFM
T0csIDApKTsKLSAgICBzb3VwX3Nlc3Npb25fYWRkX2ZlYXR1cmUoV2ViQ29yZTo6U291cE5ldHdv
cmtTZXNzaW9uOjpkZWZhdWx0U2Vzc2lvbigpLnNvdXBTZXNzaW9uKCksIGF1dGhfZGlhbG9nKTsK
LQotICAgIFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpzZXRJZ25vcmVTU0xFcnJvcnModHJ1ZSk7
Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3
ay9ld2tfbWFpbi5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19tYWluLmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA1OGUyOWMuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktp
dC9lZmwvZXdrL2V3a19tYWluLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1OSArMCwwIEBACi0vKgot
ICAgIENvcHlyaWdodCAoQykgMjAwOS0yMDEwIFByb0ZVU0lPTiBlbWJlZGRlZCBzeXN0ZW1zCi0g
ICAgQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgU2Ftc3VuZyBFbGVjdHJvbmljcwotCi0gICAgVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgotICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCi0gICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCi0gICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
LSAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQotICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgotCi0gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAgIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gICAg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKLSAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSovCi0KLS8qKgot
ICogQGZpbGUgICAgZXdrX21haW4uaAotICogQGJyaWVmICAgVGhlIG1haW4gZmlsZSBvZiBXZWJL
aXQtRUZMLCBub3QgdGllZCB0byBhbnkgdmlldyBvYmplY3QuCi0gKi8KLQotI2lmbmRlZiBld2tf
bWFpbl9oCi0jZGVmaW5lIGV3a19tYWluX2gKLQotI2luY2x1ZGUgPEVpbmEuaD4KLQotI2lmZGVm
IF9fY3BsdXNwbHVzCi1leHRlcm4gIkMiIHsKLSNlbmRpZgotCi0vKioKLSAqIEluaXRpYWxpemVz
IHdlYmtpdCdzIGluc3RhbmNlLgotICoKLSAqIC0gaW5pdGlhbGl6ZXMgY29tcG9uZW50cyBuZWVk
ZWQgYnkgRWZsLAotICogLSBzZXRzIHdlYiBkYXRhYmFzZSBsb2NhdGlvbiwKLSAqIC0gc2V0cyBw
YWdlIGNhY2hlIGNhcGFjaXR5LAotICogLSBpbmNyZWFzZXMgYSByZWZlcmVuY2UgY291bnQgb2Yg
d2Via2l0J3MgaW5zdGFuY2UuCi0gKgotICogQHJldHVybiBhIHJlZmVyZW5jZSBjb3VudCBvZiB3
ZWJraXQncyBpbnN0YW5jZSBvbiBzdWNjZXNzIG9yIDAgb24gZmFpbHVyZQotICovCi1FQVBJIGlu
dCBld2tfaW5pdCh2b2lkKTsKLQotLyoqCi0gKiBEZWNyZWFzZXMgYSByZWZlcmVuY2UgY291bnQg
b2Ygd2Via2l0J3MgaW5zdGFuY2UsIHBvc3NpYmx5IGRlc3Ryb3lpbmcgaXQuCi0gKgotICogSWYg
dGhlIHJlZmVyZW5jZSBjb3VudCByZWFjaGVzIDAgd2Via2l0J3MgaW5zdGFuY2UgaXMgZGVzdHJv
eWVkLgotICoKLSAqIEByZXR1cm4gYSByZWZlcmVuY2UgY291bnQgb2Ygd2Via2l0J3MgaW5zdGFu
Y2UKLSAqLwotRUFQSSBpbnQgZXdrX3NodXRkb3duKHZvaWQpOwotCi0jaWZkZWYgX19jcGx1c3Bs
dXMKLX0KLSNlbmRpZgotI2VuZGlmIC8vIGV3a19tYWluX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvZWZsL2V3ay9ld2tfbmV0d29yay5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdr
X25ldHdvcmsuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZTFiMWVjLi4wMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfbmV0d29yay5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSw4MCArMCwwIEBACi0vKgotICAgIENvcHlyaWdodCAoQykgMjAxMSBTYW1zdW5n
IEVsZWN0cm9uaWNzCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0K
LSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
Ci0gICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4g
IElmIG5vdCwgd3JpdGUgdG8KLSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICAgIEJvc3RvbiwgTUEgMDIxMTAt
MTMwMSwgVVNBLgotKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgImV3a19uZXR3
b3JrLmgiCi0KLSNpbmNsdWRlICJOZXR3b3JrU3RhdGVOb3RpZmllci5oIgotI2luY2x1ZGUgIlBy
b3h5UmVzb2x2ZXJTb3VwLmgiCi0jaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKLSNpbmNsdWRl
ICJTb3VwTmV0d29ya1Nlc3Npb24uaCIKLSNpbmNsdWRlICJld2tfcHJpdmF0ZS5oIgotI2luY2x1
ZGUgPEVpbmEuaD4KLSNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4KLSNpbmNsdWRlIDx3dGYvdGV4
dC9DU3RyaW5nLmg+Ci0KLXZvaWQgZXdrX25ldHdvcmtfcHJveHlfdXJpX3NldChjb25zdCBjaGFy
KiBwcm94eSkKLXsKLSAgICBpZiAoIXByb3h5KQotICAgICAgICBFUlIoIm5vIHByb3h5IHVyaS4g
cmVtb3ZlIHByb3h5IGZlYXR1cmUgaW4gc291cC4iKTsKLSAgICBXZWJDb3JlOjpTb3VwTmV0d29y
a1Nlc3Npb246OmRlZmF1bHRTZXNzaW9uKCkuc2V0SFRUUFByb3h5KHByb3h5LCAwKTsKLX0KLQot
Y29uc3QgY2hhciogZXdrX25ldHdvcmtfcHJveHlfdXJpX2dldCh2b2lkKQotewotICAgIGNoYXIq
IHVyaSA9IFdlYkNvcmU6OlNvdXBOZXR3b3JrU2Vzc2lvbjo6ZGVmYXVsdFNlc3Npb24oKS5odHRw
UHJveHkoKTsKLSAgICBpZiAoIXVyaSkgewotICAgICAgICBFUlIoIm5vIHByb3h5IHVyaSIpOwot
ICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICByZXR1cm4gZWluYV9zdHJpbmdzaGFyZV9h
ZGQodXJpKTsKLX0KLQotRWluYV9Cb29sIGV3a19uZXR3b3JrX3Rsc19jZXJ0aWZpY2F0ZV9jaGVj
a19nZXQoKQotewotICAgIHVuc2lnbmVkIHBvbGljeSA9IFdlYkNvcmU6OlNvdXBOZXR3b3JrU2Vz
c2lvbjo6ZGVmYXVsdFNlc3Npb24oKS5zc2xQb2xpY3koKTsKLSAgICByZXR1cm4gcG9saWN5ICYg
V2ViQ29yZTo6U291cE5ldHdvcmtTZXNzaW9uOjpTU0xTdHJpY3Q7Ci19Ci0KLXZvaWQgZXdrX25l
dHdvcmtfdGxzX2NlcnRpZmljYXRlX2NoZWNrX3NldChFaW5hX0Jvb2wgZW5hYmxlKQotewotICAg
IHVuc2lnbmVkIHBvbGljeSA9IFdlYkNvcmU6OlNvdXBOZXR3b3JrU2Vzc2lvbjo6ZGVmYXVsdFNl
c3Npb24oKS5zc2xQb2xpY3koKTsKLSAgICBpZiAoZW5hYmxlICYmICEocG9saWN5IHwgV2ViQ29y
ZTo6U291cE5ldHdvcmtTZXNzaW9uOjpTU0xTdHJpY3QpKQotICAgICAgICBwb2xpY3kgfD0gV2Vi
Q29yZTo6U291cE5ldHdvcmtTZXNzaW9uOjpTU0xTdHJpY3Q7Ci0gICAgZWxzZSBpZiAoIWVuYWJs
ZSAmJiAocG9saWN5IHwgV2ViQ29yZTo6U291cE5ldHdvcmtTZXNzaW9uOjpTU0xTdHJpY3QpKQot
ICAgICAgICBwb2xpY3kgJj0gfldlYkNvcmU6OlNvdXBOZXR3b3JrU2Vzc2lvbjo6U1NMU3RyaWN0
OwotICAgIFdlYkNvcmU6OlNvdXBOZXR3b3JrU2Vzc2lvbjo6ZGVmYXVsdFNlc3Npb24oKS5zZXRT
U0xQb2xpY3kocG9saWN5KTsKLX0KLQotY29uc3QgY2hhciogZXdrX25ldHdvcmtfdGxzX2NhX2Nl
cnRpZmljYXRlc19wYXRoX2dldCgpCi17Ci0gICAgY29uc3QgY2hhciogYnVuZGxlUGF0aCA9IDA7
Ci0KLSAgICBTb3VwU2Vzc2lvbiogZGVmYXVsdFNlc3Npb24gPSBXZWJDb3JlOjpTb3VwTmV0d29y
a1Nlc3Npb246OmRlZmF1bHRTZXNzaW9uKCkuc291cFNlc3Npb24oKTsKLSAgICBnX29iamVjdF9n
ZXQoZGVmYXVsdFNlc3Npb24sICJzc2wtY2EtZmlsZSIsICZidW5kbGVQYXRoLCBOVUxMKTsKLQot
ICAgIHJldHVybiBidW5kbGVQYXRoOwotfQotCi12b2lkIGV3a19uZXR3b3JrX3Rsc19jYV9jZXJ0
aWZpY2F0ZXNfcGF0aF9zZXQoY29uc3QgY2hhciogYnVuZGxlUGF0aCkKLXsKLSAgICBTb3VwU2Vz
c2lvbiogZGVmYXVsdFNlc3Npb24gPSBXZWJDb3JlOjpTb3VwTmV0d29ya1Nlc3Npb246OmRlZmF1
bHRTZXNzaW9uKCkuc291cFNlc3Npb24oKTsKLSAgICBnX29iamVjdF9zZXQoZGVmYXVsdFNlc3Np
b24sICJzc2wtY2EtZmlsZSIsIGJ1bmRsZVBhdGgsIE5VTEwpOwotfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9lZmwvZXdrL2V3a19uZXR3b3JrLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2sv
ZXdrX25ldHdvcmsuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTBhZGQwZS4uMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX25ldHdvcmsuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDEwNyArMCwwIEBACi0vKgotICAgIENvcHlyaWdodCAoQykgMjAxMSBTYW1zdW5n
IEVsZWN0cm9uaWNzCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0K
LSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
Ci0gICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4g
IElmIG5vdCwgd3JpdGUgdG8KLSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICAgIEJvc3RvbiwgTUEgMDIxMTAt
MTMwMSwgVVNBLgotKi8KLQotLyoqCi0gKiBAZmlsZSAgICBld2tfbmV0d29yay5oCi0gKiBAYnJp
ZWYgICBEZXNjcmliZXMgdGhlIG5ldHdvcmsgQVBJLgotICovCi0KLSNpZm5kZWYgZXdrX25ldHdv
cmtfaAotI2RlZmluZSBld2tfbmV0d29ya19oCi0KLSNpbmNsdWRlIDxFaW5hLmg+Ci0KLSNpZmRl
ZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJDIiB7Ci0jZW5kaWYKLQotLyoqCi0gKiBTZXRzIHRoZSBn
aXZlbiBwcm94eSBVUkkgdG8gbmV0d29yayBiYWNrZW5kLgotICoKLSAqIEBwYXJhbSBwcm94eSBV
UkkgdG8gc2V0Ci0gKi8KLUVBUEkgdm9pZCAgICAgICAgICAgICBld2tfbmV0d29ya19wcm94eV91
cmlfc2V0KGNvbnN0IGNoYXIgKnByb3h5KTsKLQotLyoqCi0gKiBHZXRzIHRoZSBwcm94eSBVUkkg
ZnJvbSB0aGUgbmV0d29yayBiYWNrZW5kLgotICoKLSAqIFRoZSByZXR1cm5lZCBzdHJpbmcgc2hv
dWxkIGJlIGZyZWVkIGJ5IGVpbmFfc3RyaW5nc2hhcmVfZGVsKCkgYWZ0ZXIgdXNlLgotICoKLSAq
IEByZXR1cm4gY3VycmVudCBwcm94eSBVUkkgb3IgQGMgTlVMTCBpZiBpdCdzIG5vdCBzZXQKLSAq
LwotRUFQSSBjb25zdCBjaGFyICAgICAgKmV3a19uZXR3b3JrX3Byb3h5X3VyaV9nZXQodm9pZCk7
Ci0KLS8qKgotICogUmV0dXJucyB3aGV0aGVyIEhUVFBTIGNvbm5lY3Rpb25zIHNob3VsZCBjaGVj
ayB0aGUgcmVjZWl2ZWQgY2VydGlmaWNhdGUgYW5kIGVycm9yIG91dCBpZiBpdCBpcyBpbnZhbGlk
LgotICoKLSAqIEJ5IGRlZmF1bHQsIEhUVFBTIGNvbm5lY3Rpb25zIGFyZSBwZXJmb3JtZWQgcmVn
YXJkbGVzcyBvZiB0aGUgdmFsaWRpdHkgb2YgdGhlIGNlcnRpZmljYXRlIHByb3ZpZGVkLgotICoK
LSAqIEBzYSBld2tfbmV0d29ya190bHNfY2FfY2VydGlmaWNhdGVzX3BhdGhfc2V0Ci0gKi8KLUVB
UEkgRWluYV9Cb29sICAgICAgICBld2tfbmV0d29ya190bHNfY2VydGlmaWNhdGVfY2hlY2tfZ2V0
KHZvaWQpOwotCi0vKioKLSAqIFNldHMgd2hldGhlciBIVFRQUyBjb25uZWN0aW9ucyBzaG91bGQg
Y2hlY2sgdGhlIHJlY2VpdmVkIGNlcnRpZmljYXRlIGFuZCBlcnJvciBvdXQgaWYgaXQgaXMgaW52
YWxpZC4KLSAqCi0gKiBCeSBkZWZhdWx0LCBIVFRQUyBjb25uZWN0aW9ucyBhcmUgcGVyZm9ybWVk
IHJlZ2FyZGxlc3Mgb2YgdGhlIHZhbGlkaXR5IG9mIHRoZSBjZXJ0aWZpY2F0ZSBwcm92aWRlZC4K
LSAqCi0gKiBAcGFyYW0gZW5hYmxlIFdoZXRoZXIgdG8gY2hlY2sgdGhlIHByb3ZpZGVkIGNlcnRp
ZmljYXRlcyBvciBub3QuCi0gKgotICogQHNhIGV3a19uZXR3b3JrX3Rsc19jYV9jZXJ0aWZpY2F0
ZXNfcGF0aF9zZXQKLSAqLwotRUFQSSB2b2lkICAgICAgICAgICAgIGV3a19uZXR3b3JrX3Rsc19j
ZXJ0aWZpY2F0ZV9jaGVja19zZXQoRWluYV9Cb29sIGVuYWJsZSk7Ci0KLS8qKgotICogUmV0dXJu
cyB0aGUgcGF0aCB0byBhIGZpbGUgY29udGFpbmluZyB0aGUgcGxhdGZvcm0ncyByb290IFguNTA5
IENBIGNlcnRpZmljYXRlcy4KLSAqCi0gKiBUaGUgZmlsZSBpcyBhIGxpc3Qgb2YgY29uY2F0ZW5h
dGVkIFBFTS1mb3JtYXQgWC41MDkgY2VydGlmaWNhdGVzIHVzZWQgYXMgcm9vdCBDQSBjZXJ0aWZp
Y2F0ZXMuCi0gKiBUaGV5IGFyZSB1c2VkIHRvIHZhbGlkYXRlIGFsbCB0aGUgY2VydGlmaWNhdGVz
IHJlY2VpdmVkIHdoZW4gYSBUTFMgY29ubmVjdGlvbiAoc3VjaCBhcyBhbiBIVFRQUyBvbmUpIGlz
IG1hZGUuCi0gKgotICogSWYgQGMgZXdrX25ldHdvcmtfdGxzX2NlcnRpZmljYXRlX2NoZWNrX2dl
dCgpIHJldHVybnMgQGMgRUlOQV9UUlVFLCB0aGUgY2VydGlmaWNhdGVzIHNldCBieSB0aGlzIGZ1
bmN0aW9uCi0gKiB3aWxsIGJlIHVzZWQgdG8gZGVjaWRlIHdoZXRoZXIgYSBjZXJ0aWZpY2F0ZSBw
cm92aWRlZCBieSBhIHdlYiBzaXRlIGlzIGludmFsaWQgYW5kIHRoZSByZXF1ZXN0IHNob3VsZCB0
aGVuCi0gKiBiZSBjYW5jZWxsZWQuCi0gKgotICogQnkgZGVmYXVsdCwgdGhlIHBhdGggaXMgbm90
IHNldCwgc28gYWxsIGNlcnRpZmljYXRlcyBhcmUgY29uc2lkZXJlZCBhcyBub3Qgc2lnbmVkIGJ5
IGEgdHJ1c3RlZCByb290IENBLgotICoKLSAqIEBzYSBld2tfbmV0d29ya190bHNfY2VydGlmaWNh
dGVfY2hlY2tfc2V0Ci0gKi8KLUVBUEkgY29uc3QgY2hhciAgICAgICpld2tfbmV0d29ya190bHNf
Y2FfY2VydGlmaWNhdGVzX3BhdGhfZ2V0KHZvaWQpOwotCi0vKioKLSAqIFNldHMgdGhlIHBhdGgg
dG8gYSBmaWxlIGNvbnRhaW5pbmcgdGhlIHBsYXRmb3JtJ3Mgcm9vdCBYLjUwOSBDQSBjZXJ0aWZp
Y2F0ZXMuCi0gKgotICogVGhlIGZpbGUgaXMgYSBsaXN0IG9mIGNvbmNhdGVuYXRlZCBQRU0tZm9y
bWF0IFguNTA5IGNlcnRpZmljYXRlcyB1c2VkIGFzIHJvb3QgQ0EgY2VydGlmaWNhdGVzLgotICog
VGhleSBhcmUgdXNlZCB0byB2YWxpZGF0ZSBhbGwgdGhlIGNlcnRpZmljYXRlcyByZWNlaXZlZCB3
aGVuIGEgVExTIGNvbm5lY3Rpb24gKHN1Y2ggYXMgYW4gSFRUUFMgb25lKSBpcyBtYWRlLgotICoK
LSAqIElmIEBjIGV3a19uZXR3b3JrX3Rsc19jZXJ0aWZpY2F0ZV9jaGVja19nZXQoKSByZXR1cm5z
IEBjIEVJTkFfVFJVRSwgdGhlIGNlcnRpZmljYXRlcyBzZXQgYnkgdGhpcyBmdW5jdGlvbgotICog
d2lsbCBiZSB1c2VkIHRvIGRlY2lkZSB3aGV0aGVyIGEgY2VydGlmaWNhdGUgcHJvdmlkZWQgYnkg
YSB3ZWIgc2l0ZSBpcyBpbnZhbGlkIGFuZCB0aGUgcmVxdWVzdCBzaG91bGQgdGhlbgotICogYmUg
Y2FuY2VsbGVkLgotICoKLSAqIEJ5IGRlZmF1bHQsIHRoZSBwYXRoIGlzIG5vdCBzZXQsIHNvIGFs
bCBjZXJ0aWZpY2F0ZXMgYXJlIGNvbnNpZGVyZWQgYXMgbm90IHNpZ25lZCBieSBhIHRydXN0ZWQg
cm9vdCBDQS4KLSAqCi0gKiBAcGFyYW0gcGF0aCBUaGUgcGF0aCB0byB0aGUgY2VydGlmaWNhdGUg
YnVuZGxlLgotICoKLSAqIEBzYSBld2tfbmV0d29ya190bHNfY2VydGlmaWNhdGVfY2hlY2tfc2V0
Ci0gKi8KLUVBUEkgdm9pZCAgICAgICAgICAgICBld2tfbmV0d29ya190bHNfY2FfY2VydGlmaWNh
dGVzX3BhdGhfc2V0KGNvbnN0IGNoYXIgKnBhdGgpOwotCi0jaWZkZWYgX19jcGx1c3BsdXMKLX0K
LSNlbmRpZgotI2VuZGlmIC8vIGV3a19uZXR3b3JrX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvZWZsL2V3ay9ld2tfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19wcml2
YXRlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjOTE0OTQuLjAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19wcml2YXRlLmgKKysrIC9kZXYvbnVsbApAQCAt
MSw1MSArMCwwIEBACi0vKgotICAgIENvcHlyaWdodCAoQykgMjAwOS0yMDEwIFByb0ZVU0lPTiBl
bWJlZGRlZCBzeXN0ZW1zCi0gICAgQ29weXJpZ2h0IChDKSAyMDA5LTIwMTIgU2Ftc3VuZyBFbGVj
dHJvbmljcwotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgotICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gICAgdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi0gICAg
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKLSAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICAgIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0gICAgWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAg
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBu
b3QsIHdyaXRlIHRvCi0gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4KLSovCi0KLSNpZm5kZWYgZXdrX3ByaXZhdGVfaAotI2RlZmluZSBld2tfcHJpdmF0ZV9o
Ci0KLSNpbmNsdWRlICJBUElDYXN0LmgiCi0jaW5jbHVkZSA8RXZhcy5oPgotCi0vLyBJZiBkZWZp
bmVkLCBld2sgd2lsbCBkbyB0eXBlIGNoZWNraW5nIHRvIGVuc3VyZSBvYmplY3RzIGFyZSBvZiBj
b3JyZWN0IHR5cGUKLSNkZWZpbmUgRVdLX1RZUEVfQ0hFQ0sgMQotI2RlZmluZSBFV0tfQVJHQl9C
WVRFU19TSVpFIDQKLQotLy8gZm9yd2FyZCBkZWNsYXJhdGlvbnMKLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLWNsYXNzIEdyYXBoaWNzQ29udGV4dDNEOwotY2xhc3MgR3JhcGhpY3NMYXllcjsKLX0KLQot
c3RydWN0IEV3a19XaW5kb3dfT2JqZWN0X0NsZWFyZWRfRXZlbnQgewotICAgIEpTQ29udGV4dFJl
ZiBjb250ZXh0OwotICAgIEpTT2JqZWN0UmVmIHdpbmRvd09iamVjdDsKLSAgICBFdmFzX09iamVj
dCogZnJhbWU7Ci19OwotCi1leHRlcm4gaW50IF9ld2tfbG9nX2RvbTsKLQotI2RlZmluZSBDUklU
SUNBTCguLi4pIEVJTkFfTE9HX0RPTV9DUklUKF9ld2tfbG9nX2RvbSwgX19WQV9BUkdTX18pCi0j
ZGVmaW5lIEVSUiguLi4pIEVJTkFfTE9HX0RPTV9FUlIoX2V3a19sb2dfZG9tLCBfX1ZBX0FSR1Nf
XykKLSNkZWZpbmUgV0FSTiguLi4pIEVJTkFfTE9HX0RPTV9XQVJOKF9ld2tfbG9nX2RvbSwgX19W
QV9BUkdTX18pCi0jZGVmaW5lIElORk8oLi4uKSBFSU5BX0xPR19ET01fSU5GTyhfZXdrX2xvZ19k
b20sIF9fVkFfQVJHU19fKQotI2RlZmluZSBEQkcoLi4uKSBFSU5BX0xPR19ET01fREJHKF9ld2tf
bG9nX2RvbSwgX19WQV9BUkdTX18pCi0KLSNlbmRpZiAvLyBld2tfcHJpdmF0ZV9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3NlY3VyaXR5X29yaWdpbi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2VmbC9ld2svZXdrX3NlY3VyaXR5X29yaWdpbi5jcHAKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGVhYWQwNzEuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9lZmwv
ZXdrL2V3a19zZWN1cml0eV9vcmlnaW4uY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTY2ICswLDAg
QEAKLS8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uCi0KLSAgICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCi0gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgotICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAg
ICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAotICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgImV3a19zZWN1cml0eV9vcmlnaW4uaCIKLQotI2lu
Y2x1ZGUgIkFwcGxpY2F0aW9uQ2FjaGUuaCIKLSNpbmNsdWRlICJBcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZS5oIgotI2luY2x1ZGUgIkRhdGFiYXNlTWFuYWdlci5oIgotI2luY2x1ZGUgIlNlY3VyaXR5
T3JpZ2luLmgiCi0jaW5jbHVkZSAiZXdrX3NlY3VyaXR5X29yaWdpbl9wcml2YXRlLmgiCi0jaW5j
bHVkZSAiZXdrX3dlYl9kYXRhYmFzZS5oIgotI2luY2x1ZGUgImV3a193ZWJfZGF0YWJhc2VfcHJp
dmF0ZS5oIgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+Ci0KLXN0cnVjdCBfRXdrX1NlY3VyaXR5X09yaWdpbiB7Ci0gICAgUmVmUHRyPFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbjsKLSAgICBjb25zdCBjaGFyKiBwcm90
b2NvbDsKLSAgICBjb25zdCBjaGFyKiBob3N0OwotICAgIGNvbnN0IGNoYXIqIG9yaWdpblN0cmlu
ZzsKLX07Ci0KLWNvbnN0IGNoYXIqIGV3a19zZWN1cml0eV9vcmlnaW5fcHJvdG9jb2xfZ2V0KGNv
bnN0IEV3a19TZWN1cml0eV9PcmlnaW4qIG9yaWdpbikKLXsKLSAgICBFSU5BX1NBRkVUWV9PTl9O
VUxMX1JFVFVSTl9WQUwob3JpZ2luLCAwKTsKLSAgICByZXR1cm4gb3JpZ2luLT5wcm90b2NvbDsK
LX0KLQotY29uc3QgY2hhciogZXdrX3NlY3VyaXR5X29yaWdpbl9ob3N0X2dldChjb25zdCBFd2tf
U2VjdXJpdHlfT3JpZ2luKiBvcmlnaW4pCi17Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRV
Uk5fVkFMKG9yaWdpbiwgMCk7Ci0gICAgcmV0dXJuIG9yaWdpbi0+aG9zdDsKLX0KLQotY29uc3Qg
Y2hhciogZXdrX3NlY3VyaXR5X29yaWdpbl9zdHJpbmdfZ2V0KGNvbnN0IEV3a19TZWN1cml0eV9P
cmlnaW4qIG9yaWdpbikKLXsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwob3Jp
Z2luLCAwKTsKLSAgICByZXR1cm4gb3JpZ2luLT5vcmlnaW5TdHJpbmc7Ci19Ci0KLXVpbnQzMl90
IGV3a19zZWN1cml0eV9vcmlnaW5fcG9ydF9nZXQoY29uc3QgRXdrX1NlY3VyaXR5X09yaWdpbiog
b3JpZ2luKQotewotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChvcmlnaW4sIDAp
OwotICAgIHJldHVybiBvcmlnaW4tPnNlY3VyaXR5T3JpZ2luLT5wb3J0KCk7Ci19Ci0KLXVpbnQ2
NF90IGV3a19zZWN1cml0eV9vcmlnaW5fd2ViX2RhdGFiYXNlX3VzYWdlX2dldChjb25zdCBFd2tf
U2VjdXJpdHlfT3JpZ2luKiBvcmlnaW4pCi17Ci0jaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAg
ICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwob3JpZ2luLCAwKTsKLQotICAgIHJldHVy
biBXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS51c2FnZUZvck9yaWdpbihvcmln
aW4tPnNlY3VyaXR5T3JpZ2luLmdldCgpKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKG9yaWdp
bik7Ci0gICAgcmV0dXJuIDA7Ci0jZW5kaWYKLX0KLQotdWludDY0X3QgZXdrX3NlY3VyaXR5X29y
aWdpbl93ZWJfZGF0YWJhc2VfcXVvdGFfZ2V0KGNvbnN0IEV3a19TZWN1cml0eV9PcmlnaW4qIG9y
aWdpbikKLXsKLSNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAgIEVJTkFfU0FGRVRZX09OX05V
TExfUkVUVVJOX1ZBTChvcmlnaW4sIDApOwotCi0gICAgcmV0dXJuIFdlYkNvcmU6OkRhdGFiYXNl
TWFuYWdlcjo6bWFuYWdlcigpLnF1b3RhRm9yT3JpZ2luKG9yaWdpbi0+c2VjdXJpdHlPcmlnaW4u
Z2V0KCkpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0ob3JpZ2luKTsKLSAgICByZXR1cm4gMDsK
LSNlbmRpZgotfQotCi12b2lkIGV3a19zZWN1cml0eV9vcmlnaW5fd2ViX2RhdGFiYXNlX3F1b3Rh
X3NldChjb25zdCBFd2tfU2VjdXJpdHlfT3JpZ2luKiBvcmlnaW4sIHVpbnQ2NF90IHF1b3RhKQot
ewotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKG9yaWdpbik7Ci0KLSNpZiBFTkFCTEUo
U1FMX0RBVEFCQVNFKQotICAgIFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLnNl
dFF1b3RhKG9yaWdpbi0+c2VjdXJpdHlPcmlnaW4uZ2V0KCksIHF1b3RhKTsKLSNlbmRpZgotfQot
Ci12b2lkIGV3a19zZWN1cml0eV9vcmlnaW5fYXBwbGljYXRpb25fY2FjaGVfcXVvdGFfc2V0KGNv
bnN0IEV3a19TZWN1cml0eV9PcmlnaW4qIG9yaWdpbiwgaW50NjRfdCBxdW90YSkKLXsKLSAgICBF
SU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihvcmlnaW4pOwotICAgIFdlYkNvcmU6OmNhY2hlU3Rv
cmFnZSgpLnN0b3JlVXBkYXRlZFF1b3RhRm9yT3JpZ2luKG9yaWdpbi0+c2VjdXJpdHlPcmlnaW4u
Z2V0KCksIHF1b3RhKTsKLX0KLQotdm9pZCBld2tfc2VjdXJpdHlfb3JpZ2luX2FwcGxpY2F0aW9u
X2NhY2hlX2NsZWFyKGNvbnN0IEV3a19TZWN1cml0eV9PcmlnaW4qIG9yaWdpbikKLXsKLSAgICBF
SU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihvcmlnaW4pOwotICAgIFdlYkNvcmU6OkFwcGxpY2F0
aW9uQ2FjaGU6OmRlbGV0ZUNhY2hlRm9yT3JpZ2luKG9yaWdpbi0+c2VjdXJpdHlPcmlnaW4uZ2V0
KCkpOwotfQotCi1FaW5hX0xpc3QqIGV3a19zZWN1cml0eV9vcmlnaW5fd2ViX2RhdGFiYXNlX2dl
dF9hbGwoY29uc3QgRXdrX1NlY3VyaXR5X09yaWdpbiogb3JpZ2luKQotewotICAgIEVJTkFfU0FG
RVRZX09OX05VTExfUkVUVVJOX1ZBTChvcmlnaW4sIDApOwotCi0gICAgRWluYV9MaXN0KiBkYXRh
YmFzZXMgPSAwOwotI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0gICAgVmVjdG9yPFdURjo6U3Ry
aW5nPiBuYW1lczsKLQotICAgIGlmICghV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2Vy
KCkuZGF0YWJhc2VOYW1lc0Zvck9yaWdpbihvcmlnaW4tPnNlY3VyaXR5T3JpZ2luLmdldCgpLCBu
YW1lcykpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IG5hbWVzLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgIEV3a19XZWJfRGF0YWJhc2UqIGRhdGFiYXNl
ID0gZXdrX3dlYl9kYXRhYmFzZV9uZXcob3JpZ2luLT5zZWN1cml0eU9yaWdpbi5nZXQoKSwgbmFt
ZXNbaV0udXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgIGRhdGFiYXNlcyA9IGVpbmFfbGlzdF9hcHBl
bmQoZGF0YWJhc2VzLCBkYXRhYmFzZSk7Ci0gICAgfQotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0o
b3JpZ2luKTsKLSNlbmRpZgotICAgIHJldHVybiBkYXRhYmFzZXM7Ci19Ci0KLXZvaWQgZXdrX3Nl
Y3VyaXR5X29yaWdpbl9mcmVlKEV3a19TZWN1cml0eV9PcmlnaW4qIG9yaWdpbikKLXsKLSAgICBF
SU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihvcmlnaW4pOwotCi0gICAgb3JpZ2luLT5zZWN1cml0
eU9yaWdpbiA9IDA7Ci0gICAgZWluYV9zdHJpbmdzaGFyZV9kZWwob3JpZ2luLT5ob3N0KTsKLSAg
ICBlaW5hX3N0cmluZ3NoYXJlX2RlbChvcmlnaW4tPnByb3RvY29sKTsKLSAgICBlaW5hX3N0cmlu
Z3NoYXJlX2RlbChvcmlnaW4tPm9yaWdpblN0cmluZyk7Ci0KLSAgICBkZWxldGUgb3JpZ2luOwot
fQotCi1Fd2tfU2VjdXJpdHlfT3JpZ2luKiBld2tfc2VjdXJpdHlfb3JpZ2luX25ld19mcm9tX3N0
cmluZyhjb25zdCBjaGFyKiB1cmwpCi17Ci0gICAgcmV0dXJuIGV3a19zZWN1cml0eV9vcmlnaW5f
bmV3KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKFN0cmluZzo6ZnJv
bVVURjgodXJsKSkuZ2V0KCkpOwotfQotCi0vKioKLSAqIEBpbnRlcm5hbAotICogQ3JlYXRlcyBh
IEVXSyB3cmFwcGVyIGZvciBXZWJDb3JlIFNlY3VyaXR5IE9yaWdpbiBvYmplY3QuCi0gKgotICog
QHBhcmFtIGNvcmVPcmlnaW4gV2ViQ29yZSBTZWN1cml0eSBPcmlnaW4gb2JqZWN0Ci0gKgotICog
QHJldHVybiBhIEVXSyB3cmFwcGVyIG9mIFdlYkNvcmUgU2VjdXJpdHkgT3JpZ2luIG9iamVjdCB3
aGljaCBzaG91bGQgYmUKLSAqIGZyZWVkIGJ5IGV3a19zZWN1cml0eV9vcmlnaW5fZnJlZSgpCi0g
Ki8KLUV3a19TZWN1cml0eV9PcmlnaW4qIGV3a19zZWN1cml0eV9vcmlnaW5fbmV3KFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luKiBjb3JlT3JpZ2luKQotewotICAgIEV3a19TZWN1cml0eV9PcmlnaW4q
IG9yaWdpbiA9IG5ldyBFd2tfU2VjdXJpdHlfT3JpZ2luOwotCi0gICAgb3JpZ2luLT5zZWN1cml0
eU9yaWdpbiA9IGNvcmVPcmlnaW47Ci0gICAgb3JpZ2luLT5wcm90b2NvbCA9IGVpbmFfc3RyaW5n
c2hhcmVfYWRkKGNvcmVPcmlnaW4tPnByb3RvY29sKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgb3Jp
Z2luLT5ob3N0ID0gZWluYV9zdHJpbmdzaGFyZV9hZGQoY29yZU9yaWdpbi0+aG9zdCgpLnV0Zjgo
KS5kYXRhKCkpOwotICAgIG9yaWdpbi0+b3JpZ2luU3RyaW5nID0gZWluYV9zdHJpbmdzaGFyZV9h
ZGQob3JpZ2luLT5zZWN1cml0eU9yaWdpbi0+dG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLQot
ICAgIHJldHVybiBvcmlnaW47Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2sv
ZXdrX3NlY3VyaXR5X29yaWdpbi5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19zZWN1cml0
eV9vcmlnaW4uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTk5Njk3Mi4uMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3NlY3VyaXR5X29yaWdpbi5oCisrKyAv
ZGV2L251bGwKQEAgLTEsMTc1ICswLDAgQEAKLS8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDEyIElu
dGVsIENvcnBvcmF0aW9uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
Ci0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCi0gICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KLSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICAgIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSwgVVNBLgotKi8KLQotLyoqCi0gKiBAZmlsZSAgICBld2tfc2VjdXJpdHlfb3JpZ2lu
LmgKLSAqIEBicmllZiAgIFNlY3VyaXR5IE9yaWdpbiBBUEkuCi0gKgotICogU2VjdXJpdHkgT3Jp
Z2luIGlzIHRoZSBtZWNoYW5pc20gdGhhdCBkZWZpbmVzIHRoZSBhY2Nlc3MgbGltaXRzIG9mIGEg
d2Vic2l0ZS4KLSAqIEJhc2VkIG9uIGluZm9ybWF0aW9uIHN1Y2ggYXMgZG9tYWluLCBwcm90b2Nv
bCBhbmQgcG9ydCwgeW91IGNhbiBncmFudCBvciBub3QKLSAqIGF1dGhvcml6YXRpb24gZm9yIGFj
Y2Vzc2luZyBkYXRhIGFuZCBwZXJmb3JtaW5nIGNlcnRhaW4gdGFza3MuIERhdGFiYXNlIHF1b3Rh
Ci0gKiBjYW4gYWxzbyBiZSBkZWZpbmVkIGJhc2VkIG9uIHRoZSBzZWN1cml0eSBvcmlnaW4uCi0g
KgotICogVGhlIGRhdGFiYXNlIHJlbGF0ZWQgZnVuY3Rpb25zIHdpbGwgZG8gbm90aGluZyBpZiBX
ZWJLaXQgaXMgYnVpbHQgd2l0aG91dCBXZWIKLSAqIFNRTCBEYXRhYmFzZSBzdXBwb3J0LgotICov
Ci0KLSNpZm5kZWYgZXdrX3NlY3VyaXR5X29yaWdpbl9oCi0jZGVmaW5lIGV3a19zZWN1cml0eV9v
cmlnaW5faAotCi0jaW5jbHVkZSA8RWluYS5oPgotCi0jaWZkZWYgX19jcGx1c3BsdXMKLWV4dGVy
biAiQyIgewotI2VuZGlmCi0KLXR5cGVkZWYgc3RydWN0IF9Fd2tfU2VjdXJpdHlfT3JpZ2luIEV3
a19TZWN1cml0eV9PcmlnaW47Ci0KLS8qKgotICogUmV0dXJucyB0aGUgcHJvdG9jb2wgb2YgdGhl
IHNlY3VyaXR5IG9yaWdpbi4KLSAqCi0gKiBAcGFyYW0gbyBzZWN1cml0eSBvcmlnaW4gb2JqZWN0
Ci0gKgotICogSXQgcmV0dXJucyBhIGludGVybmFsIHN0cmluZyB3aGljaCBzaG91bGQgbm90Ci0g
KiBiZSBtb2RpZmllZC4gVGhlIHN0cmluZyBpcyBndWFyYW50ZWVkIHRvIGJlIHN0cmluZ3NoYXJl
ZC4KLSAqCi0gKiBAcmV0dXJuIHRoZSBwcm90b2NvbCBzY2hlbWUgb3IgQGMgTlVMTCBpZiB0aGVy
ZSBpcyBub3QgYSBwcm90b2NvbCBzY2hlbWUKLSAqLwotRUFQSSBjb25zdCBjaGFyICAgICAgICAg
ICpld2tfc2VjdXJpdHlfb3JpZ2luX3Byb3RvY29sX2dldChjb25zdCBFd2tfU2VjdXJpdHlfT3Jp
Z2luICpvKTsKLQotLyoqCi0gKiBSZXR1cm5zIHRoZSBob3N0IG9mIHRoZSBzZWN1cml0eSBvcmln
aW4uCi0gKgotICogSXQgcmV0dXJucyBhIGludGVybmFsIHN0cmluZyB3aGljaCBzaG91bGQgbm90
Ci0gKiBiZSBtb2RpZmllZC4gVGhlIHN0cmluZyBpcyBndWFyYW50ZWVkIHRvIGJlIHN0cmluZ3No
YXJlZC4KLSAqCi0gKiBAcGFyYW0gbyBzZWN1cml0eSBvcmlnaW4gb2JqZWN0Ci0gKgotICogQHJl
dHVybiB0aGUgaG9zdCBkb21haW4gb3IgQGMgTlVMTCBpZiB0aGVyZSBpcyBub3QgYSBob3N0IHNj
aGVtZQotICovCi1FQVBJIGNvbnN0IGNoYXIgICAgICAgICAgKmV3a19zZWN1cml0eV9vcmlnaW5f
aG9zdF9nZXQoY29uc3QgRXdrX1NlY3VyaXR5X09yaWdpbiAqbyk7Ci0KLS8qKgotICogQ29udmVy
dCB0aGlzIEV3a19TZWN1cml0eV9PcmlnaW4gaW50byBhIHN0cmluZy4KLSAqIFRoZSBzdHJpbmcg
cmVwcmVzZW50YXRpb24gb2YgYSBzZWN1cml0eSBvcmlnaW4gaXMgc2ltaWxhciB0byBhIFVSTCwg
ZXhjZXB0IGl0IGxhY2tzIGEgcGF0aCBjb21wb25lbnQuCi0gKiBUaGUgc3RyaW5nIHJlcHJlc2Vu
dGF0aW9uIGRvZXMgbm90IGVuY29kZSB0aGUgdmFsdWUgb2YgdGhlIHNlY3VyaXR5IG9yaWdpbidz
IGRvbWFpbiBwcm9wZXJ0eS4KLSAqCi0gKiBAcGFyYW0gbyBzZWN1cml0eSBvcmlnaW4gb2JqZWN0
Ci0gKgotICogQHJldHVybiB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHNlY3VyaXR5IG9y
aWdpbiBvciBAYyBOVUxMIGlmIHRoZXJlIGlzIG5vdCBhIHByb3BlciBzZWN1cml0eSBvcmlnaW4g
c2NoZW1lCi0gKi8KLUVBUEkgY29uc3QgY2hhciAgICAgICAgICAqZXdrX3NlY3VyaXR5X29yaWdp
bl9zdHJpbmdfZ2V0KGNvbnN0IEV3a19TZWN1cml0eV9PcmlnaW4gKm8pOwotCi0vKioKLSAqIFJl
dHVybnMgdGhlIHBvcnQgb2YgdGhlIHNlY3VyaXR5IG9yaWdpbi4KLSAqCi0gKiBAcGFyYW0gbyBz
ZWN1cml0eSBvcmlnaW4gb2JqZWN0Ci0gKgotICogQHJldHVybiB0aGUgcG9ydCBvciBAYyAwIGlm
IHRoZXJlIGlzIG5vdCBhIHByb3BlciBzZWN1cml0eSBvcmlnaW4gc2NoZW1lCi0gKi8KLUVBUEkg
dWludDMyX3QgICAgICAgICAgICAgZXdrX3NlY3VyaXR5X29yaWdpbl9wb3J0X2dldChjb25zdCBF
d2tfU2VjdXJpdHlfT3JpZ2luICpvKTsKLQotLyoqCi0gKiBSZXRyaWV2ZXMgdGhlIHVzYWdlIG9m
IGEgZGF0YWJhc2UgZm9yIGEgc2VjdXJpdHkgb3JpZ2luLgotICoKLSAqIFRoaXMgZnVuY3Rpb24g
d29uJ3Qgd29yayBpZiBXZWIgU1FMIERhdGFiYXNlIHdhcyBub3QgZW5hYmxlZCB3aGVuCi0gKiBi
dWlsZGluZyBXZWJLaXQgYW5kIHdpbGwganVzdCByZXR1cm4gMC4KLSAqCi0gKiBAcGFyYW0gbyBz
ZWN1cml0eSBvcmlnaW4gb2JqZWN0IG9yIEBjIDAgaWYgdGhlcmUgaXMgbm90IGEgcHJvcGVyIHNl
Y3VyaXR5IG9yaWdpbiBzY2hlbWUKLSAqCi0gKiBAcmV0dXJuIHRoZSB1c2FnZSBpbiBieXRlcwot
ICovCi1FQVBJIHVpbnQ2NF90ICAgICAgICAgICAgIGV3a19zZWN1cml0eV9vcmlnaW5fd2ViX2Rh
dGFiYXNlX3VzYWdlX2dldChjb25zdCBFd2tfU2VjdXJpdHlfT3JpZ2luICpvKTsKLQotLyoqCi0g
KiBSZXRyaWV2ZXMgdGhlIHF1b3RhIG9mIGEgZGF0YWJhc2UgZm9yIGEgc2VjdXJpdHkgb3JpZ2lu
LgotICoKLSAqIFRoaXMgZnVuY3Rpb24gd29uJ3Qgd29yayBpZiBXZWIgU1FMIERhdGFiYXNlIHdh
cyBub3QgZW5hYmxlZCB3aGVuCi0gKiBidWlsZGluZyBXZWJLaXQgYW5kIHdpbGwganVzdCByZXR1
cm4gMC4KLSAqCi0gKiBAcGFyYW0gbyBzZWN1cml0eSBvcmlnaW4gb2JqZWN0Ci0gKgotICogQHJl
dHVybiB0aGUgcXVvdGEgaW4gYnl0ZXMgb3IgQGMgMCBpZiB0aGVyZSBpcyBub3QgYSBwcm9wZXIg
c2VjdXJpdHkgb3JpZ2luIHNjaGVtZQotICovCi1FQVBJIHVpbnQ2NF90ICAgICAgICAgICAgIGV3
a19zZWN1cml0eV9vcmlnaW5fd2ViX2RhdGFiYXNlX3F1b3RhX2dldChjb25zdCBFd2tfU2VjdXJp
dHlfT3JpZ2luICpvKTsKLQotLyoqCi0gKiBTZXRzIHRoZSBkYXRhYmFzZSB1c2FnZSBxdW90YSBm
b3IgYSBzZWN1cml0eSBvcmlnaW4uCi0gKgotICogVGhpcyBmdW5jdGlvbiB3b24ndCB3b3JrIGlm
IFdlYiBTUUwgRGF0YWJhc2Ugd2FzIG5vdCBlbmFibGVkIHdoZW4KLSAqIGJ1aWxkaW5nIFdlYktp
dC4KLSAqCi0gKiBAcGFyYW0gbyBzZWN1cml0eSBvcmlnaW4gb2JqZWN0Ci0gKiBAcGFyYW0gcXVv
dGEgdGhlIHVzYWdlIHF1b3RhIGluIGJ5dGVzCi0gKi8KLUVBUEkgdm9pZCAgICAgICAgICAgICAg
ICAgZXdrX3NlY3VyaXR5X29yaWdpbl93ZWJfZGF0YWJhc2VfcXVvdGFfc2V0KGNvbnN0IEV3a19T
ZWN1cml0eV9PcmlnaW4gKm8sIHVpbnQ2NF90IHF1b3RhKTsKLQotLyoqCi0gKiBTZXRzIHRoZSBh
cHBsaWNhdGlvbiBjYWNoZSB1c2FnZSBxdW90YSBmb3IgYSBzZWN1cml0eSBvcmlnaW4uCi0gKgot
ICogQHBhcmFtIG8gc2VjdXJpdHkgb3JpZ2luIG9iamVjdAotICogQHBhcmFtIHF1b3RhIHRoZSB1
c2FnZSBxdW90YSBpbiBieXRlcwotICovCi1FQVBJIHZvaWQgICAgICAgICAgICAgICAgIGV3a19z
ZWN1cml0eV9vcmlnaW5fYXBwbGljYXRpb25fY2FjaGVfcXVvdGFfc2V0KGNvbnN0IEV3a19TZWN1
cml0eV9PcmlnaW4gKm8sIGludDY0X3QgcXVvdGEpOwotCi0vKioKLSAqIENsZWFycyB0aGUgYXBw
bGljYXRpb24gY2FjaGUgZm9yIGEgc2VjdXJpdHkgb3JpZ2luLgotICoKLSAqIEBwYXJhbSBvIHNl
Y3VyaXR5IG9yaWdpbiBvYmplY3QuCi0gKi8KLUVBUEkgdm9pZCAgICAgICAgICAgICAgICAgZXdr
X3NlY3VyaXR5X29yaWdpbl9hcHBsaWNhdGlvbl9jYWNoZV9jbGVhcihjb25zdCBFd2tfU2VjdXJp
dHlfT3JpZ2luICpvKTsKLQotLyoqCi0gKiBSZXR1cm4gdGhlIGxpc3Qgb2Ygd2ViIGRhdGFiYXNl
cyBpbiB0aGUgc2VjdXJpdHkgb3JpZ2luLgotICoKLSAqIEVhY2ggaXRlbSBvZiB0aGUgbGlzdCBz
aG91bGQgYmUgcmVsZWFzZSB1c2luZyBld2tfd2ViX2RhdGFiYXNlX2ZyZWUoKSBvcgotICogdXNl
IGV3a193ZWJfZGF0YWJhc2VfbGlzdF9mcmVlKCkgYXMgY29udmVuaWVuY2UuCi0gKgotICogVGhp
cyBmdW5jdGlvbiB3b24ndCB3b3JrIGlmIFdlYiBTUUwgRGF0YWJhc2Ugd2FzIG5vdCBlbmFibGVk
IHdoZW4KLSAqIGJ1aWxkaW5nIFdlYktpdCBhbmQgd2lsbCBqdXN0IHJldHVybiBAYyBOVUxMLgot
ICoKLSAqIEBwYXJhbSBvIHNlY3VyaXR5IG9yaWdpbiBvYmplY3QKLSAqCi0gKiBAcmV0dXJuIGxp
c3Qgb2Ygd2ViIGRhdGFiYXNlcyBpbiB0aGUgc2VjdXJpdHkgb3JpZ2luIG9yIEBjIE5VTEwgaWYg
dGhlcmUgaXMgbm90IGEgcHJvcGVyIHNlY3VyaXR5IG9yaWdpbiBzY2hlbWUKLSAqCi0gKiBAc2Vl
IGV3a193ZWJfZGF0YWJhc2VfZnJlZSgpCi0gKiBAc2VlIGV3a193ZWJfZGF0YWJhc2VfbGlzdF9m
cmVlKCkKLSAqLwotRUFQSSBFaW5hX0xpc3QgICAgICAgICAgICpld2tfc2VjdXJpdHlfb3JpZ2lu
X3dlYl9kYXRhYmFzZV9nZXRfYWxsKGNvbnN0IEV3a19TZWN1cml0eV9PcmlnaW4gKm8pOwotCi0v
KioKLSAqIFJlbGVhc2UgYWxsIHJlc291cmNlcyBhbGxvY2F0ZWQgYnkgYSBzZWN1cml0eSBvcmln
aW4gb2JqZWN0LgotICoKLSAqIEBwYXJhbSBvIHNlY3VyaXR5IG9yaWdpbiBvYmplY3QKLSAqLwot
RUFQSSB2b2lkICAgICAgICAgICAgICAgICBld2tfc2VjdXJpdHlfb3JpZ2luX2ZyZWUoRXdrX1Nl
Y3VyaXR5X09yaWdpbiAqbyk7Ci0KLS8qKgotICogQ3JlYXRlcyBhIHNlY3VyaXR5IG9yaWdpbiBm
b3IgYSB1cmwuCi0gKgotICogQHBhcmFtIHVybCB0aGUgdXJsIGZvciB0aGUgc2VjdXJpdHkgb3Jp
Z2luLgotICoKLSAqIEByZXR1cm4gdGhlIHNlY3VyaXR5IG9yaWdpbiBvYmplY3QKLSAqLwotRUFQ
SSBFd2tfU2VjdXJpdHlfT3JpZ2luICpld2tfc2VjdXJpdHlfb3JpZ2luX25ld19mcm9tX3N0cmlu
Zyhjb25zdCBjaGFyICp1cmwpOwotCi0jaWZkZWYgX19jcGx1c3BsdXMKLX0KLSNlbmRpZgotI2Vu
ZGlmIC8vIGV3a19zZWN1cml0eV9vcmlnaW5faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9l
ZmwvZXdrL2V3a19zZWN1cml0eV9vcmlnaW5fcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9lZmwv
ZXdrL2V3a19zZWN1cml0eV9vcmlnaW5fcHJpdmF0ZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA1Njg2YjRhLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tf
c2VjdXJpdHlfb3JpZ2luX3ByaXZhdGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAK
LS8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uCi0KLSAgICBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
Ci0gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgot
ICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAgICB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAotICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotKi8KLQotI2lmbmRl
ZiBld2tfc2VjdXJpdHlfb3JpZ2luX3ByaXZhdGVfaAotI2RlZmluZSBld2tfc2VjdXJpdHlfb3Jp
Z2luX3ByaXZhdGVfaAotCi0vLyBmb3J3YXJkIGRlY2xhcmF0aW9ucwotbmFtZXNwYWNlIFdlYkNv
cmUgewotY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci19Ci0KLUV3a19TZWN1cml0eV9PcmlnaW4qIGV3
a19zZWN1cml0eV9vcmlnaW5fbmV3KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pOwot
Ci0jZW5kaWYgLy8gZXdrX3NlY3VyaXR5X29yaWdpbl9wcml2YXRlX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfc2VjdXJpdHlfcG9saWN5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvZWZsL2V3ay9ld2tfc2VjdXJpdHlfcG9saWN5LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggOWU0ZDVhNS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdr
X3NlY3VyaXR5X3BvbGljeS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi0vKgot
ICAgIENvcHlyaWdodCAoQykgMjAxMiBQcm9GVVNJT04gZW1iZWRkZWQgc3lzdGVtcwotCi0gICAg
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgotICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCi0gICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi0gICAgVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKLSAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQotICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgotCi0gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAgIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0g
ICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKLSAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJld2tfc2VjdXJpdHlfcG9saWN5LmgiCi0KLSNp
bmNsdWRlICJVUkwuaCIKLSNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgotI2luY2x1ZGUgIlNl
Y3VyaXR5UG9saWN5LmgiCi0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi12b2lkIGV3a19z
ZWN1cml0eV9wb2xpY3lfd2hpdGVsaXN0X29yaWdpbl9hZGQoY29uc3QgY2hhciogc291cmNlVXJs
LCBjb25zdCBjaGFyKiBkZXN0aW5hdGlvblVybCwgRWluYV9Cb29sIGFsbG93U3ViZG9tYWlucykK
LXsKLSAgICBjb25zdCBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHNvdXJjZSA9IFNlY3VyaXR5T3Jp
Z2luOjpjcmVhdGVGcm9tU3RyaW5nKHNvdXJjZVVybCk7Ci0gICAgY29uc3QgVVJMIGRlc3RpbmF0
aW9uKFVSTCgpLCBkZXN0aW5hdGlvblVybCk7Ci0KLSAgICBTZWN1cml0eVBvbGljeTo6YWRkT3Jp
Z2luQWNjZXNzV2hpdGVsaXN0RW50cnkoKnNvdXJjZSwgZGVzdGluYXRpb24ucHJvdG9jb2woKSwg
ZGVzdGluYXRpb24uaG9zdCgpLCBhbGxvd1N1YmRvbWFpbnMpOwotfQotCi12b2lkIGV3a19zZWN1
cml0eV9wb2xpY3lfd2hpdGVsaXN0X29yaWdpbl9kZWwoY29uc3QgY2hhciogc291cmNlVXJsLCBj
b25zdCBjaGFyKiBkZXN0aW5hdGlvblVybCwgRWluYV9Cb29sIGFsbG93U3ViZG9tYWlucykKLXsK
LSAgICBjb25zdCBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHNvdXJjZSA9IFNlY3VyaXR5T3JpZ2lu
OjpjcmVhdGVGcm9tU3RyaW5nKHNvdXJjZVVybCk7Ci0gICAgY29uc3QgVVJMIGRlc3RpbmF0aW9u
KFVSTCgpLCBkZXN0aW5hdGlvblVybCk7Ci0KLSAgICBTZWN1cml0eVBvbGljeTo6cmVtb3ZlT3Jp
Z2luQWNjZXNzV2hpdGVsaXN0RW50cnkoKnNvdXJjZSwgZGVzdGluYXRpb24ucHJvdG9jb2woKSwg
ZGVzdGluYXRpb24uaG9zdCgpLCBhbGxvd1N1YmRvbWFpbnMpOwotfQotCi12b2lkIGV3a19zZWN1
cml0eV9wb2xpY3lfd2hpdGVsaXN0X29yaWdpbl9yZXNldCgpCi17Ci0gICAgU2VjdXJpdHlQb2xp
Y3k6OnJlc2V0T3JpZ2luQWNjZXNzV2hpdGVsaXN0cygpOwotfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9lZmwvZXdrL2V3a19zZWN1cml0eV9wb2xpY3kuaCBiL1NvdXJjZS9XZWJLaXQvZWZs
L2V3ay9ld2tfc2VjdXJpdHlfcG9saWN5LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDMzOWYxNDhiLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfc2VjdXJp
dHlfcG9saWN5LmgKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi0vKgotICAgIENvcHly
aWdodCAoQykgMjAxMiBQcm9GVVNJT04gZW1iZWRkZWQgc3lzdGVtcwotCi0gICAgVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICAg
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCi0gICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCi0gICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAgICBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQotICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgotCi0gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gICAgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKLSAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSovCi0KLSNpZm5kZWYgZXdr
X3NlY3VyaXR5X3BvbGljeV9oCi0jZGVmaW5lIGV3a19zZWN1cml0eV9wb2xpY3lfaAotCi0jaWZk
ZWYgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIgewotI2VuZGlmCi0KLSNpbmNsdWRlIDxFaW5hLmg+
Ci0KLS8qKgotICogQWxsb3dzIGEgcGFnZSBmcm9tIEBwIHNvdXJjZV91cmwgdG8gcmVxdWVzdCBh
IHJlc291cmNlIGZyb20gQHAgZGVzdGluYXRpb25fdXJsLgotICoKLSAqIEBwYXJhbSBzb3VyY2Vf
dXJsIFNvdXJjZSBVUkw7IHByb3RvY29sIGFuZCBkb21haW4gb25seSAoZS5nLiBhcHA6Ly9jbG9j
ay56aXApCi0gKiBAcGFyYW0gZGVzdGluYXRpb25fdXJsIERlc3RpbmF0aW9uIFVSTDsgcHJvdG9j
b2wgYW5kIGRvbWFpbiBvbmx5IChlLmcuIGh0dHA6Ly9hcGkuZXhhbXBsZS5jb20pCi0gKiBAcGFy
YW0gYWxsb3dfc3ViZG9tYWlucyBFSU5BX1RSVUUgaWYgc3ViZG9tYWlucyBvZiBkZXN0aW5hdGlv
biBVUkxzIHNob3VsZCBiZSB3aGl0ZWxpc3RlZAotICovCi1FQVBJIHZvaWQgZXdrX3NlY3VyaXR5
X3BvbGljeV93aGl0ZWxpc3Rfb3JpZ2luX2FkZChjb25zdCBjaGFyICpzb3VyY2VfdXJsLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hh
ciAqZGVzdGluYXRpb25fdXJsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRWluYV9Cb29sIGFsbG93X3N1YmRvbWFpbnMpOwotCi0vKioKLSAqIFJl
bW92ZSBhIHdoaXRlbGlzdCBpdGVtIGFkZGVkIHdpdGggZXdrX3NlY3VyaXR5X3BvbGljeV93aGl0
ZWxpc3Rfb3JpZ2luX2RlbCgpLgotICoKLSAqIEBwYXJhbSBzb3VyY2VfdXJsIFNvdXJjZSBVUkw7
IHByb3RvY29sIGFuZCBkb21haW4gb25seSAoZS5nLiBhcHA6Ly9jbG9jay56aXApCi0gKiBAcGFy
YW0gZGVzdGluYXRpb25fdXJsIERlc3RpbmF0aW9uIFVSTDsgcHJvdG9jb2wgYW5kIGRvbWFpbiBv
bmx5IChlLmcuIGh0dHA6Ly9hcGkuZXhhbXBsZS5jb20pCi0gKiBAcGFyYW0gYWxsb3dfc3ViZG9t
YWlucyBFSU5BX1RSVUUgaWYgc3ViZG9tYWlucyBvZiBkZXN0aW5hdGlvbiBVUkxzIHNob3VsZCBi
ZSB3aGl0ZWxpc3RlZAotICovCi1FQVBJIHZvaWQgZXdrX3NlY3VyaXR5X3BvbGljeV93aGl0ZWxp
c3Rfb3JpZ2luX2RlbChjb25zdCBjaGFyICpzb3VyY2VfdXJsLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZGVzdGluYXRpb25f
dXJsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RWluYV9Cb29sIGFsbG93X3N1YmRvbWFpbnMpOwotCi0vKioKLSAqIFJlc2V0cyB0aGUgd2hpdGVs
aXN0IHRvIEVXZWJLaXQncyBkZWZhdWx0LCBlbXB0eSBsaXN0LgotICovCi1FQVBJIHZvaWQgZXdr
X3NlY3VyaXR5X3BvbGljeV93aGl0ZWxpc3Rfb3JpZ2luX3Jlc2V0KCk7Ci0KLSNpZmRlZiBfX2Nw
bHVzcGx1cwotfQotI2VuZGlmCi0KLSNlbmRpZiAvLyBld2tfc2VjdXJpdHlfcG9saWN5X2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfc2V0dGluZ3MuY3BwIGIvU291cmNl
L1dlYktpdC9lZmwvZXdrL2V3a19zZXR0aW5ncy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDcyZDA2NjEuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19z
ZXR0aW5ncy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNzYgKzAsMCBAQAotLyoKLSAgICBDb3B5
cmlnaHQgKEMpIDIwMDktMjAxMCBQcm9GVVNJT04gZW1iZWRkZWQgc3lzdGVtcwotICAgIENvcHly
aWdodCAoQykgMjAwOS0yMDEwIFNhbXN1bmcgRWxlY3Ryb25pY3MKLSAgICBDb3B5cmlnaHQgKEMp
IDIwMTIgSW50ZWwgQ29ycG9yYXRpb24KLSAgICBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICAgIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gICAgTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gICAg
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAgICBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICAgIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0gICAgWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQotICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09Q
WUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAgICBCb3N0b24s
IE1BIDAyMTEwLTEzMDEsIFVTQS4KLSovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl
ICJld2tfc2V0dGluZ3MuaCIKLQotI2luY2x1ZGUgIkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgi
Ci0jaW5jbHVkZSAiQ2Fpcm9VdGlsaXRpZXNFZmwuaCIKLSNpbmNsdWRlICJDcm9zc09yaWdpblBy
ZWZsaWdodFJlc3VsdENhY2hlLmgiCi0jaW5jbHVkZSAiRGF0YWJhc2VNYW5hZ2VyLmgiCi0jaW5j
bHVkZSAiRm9udENhY2hlLmgiCi0jaW5jbHVkZSAiRnJhbWVWaWV3LmgiCi0jaW5jbHVkZSAiR0ND
b250cm9sbGVyLmgiCi0jaW5jbHVkZSAiSWNvbkRhdGFiYXNlLmgiCi0jaW5jbHVkZSAiSW1hZ2Uu
aCIKLSNpbmNsdWRlICJJbnRTaXplLmgiCi0jaW5jbHVkZSAiVVJMLmgiCi0jaW5jbHVkZSAiTWVt
b3J5Q2FjaGUuaCIKLSNpbmNsdWRlICJQYWdlQ2FjaGUuaCIKLSNpbmNsdWRlICJSdW50aW1lRW5h
YmxlZEZlYXR1cmVzLmgiCi0jaW5jbHVkZSAiU2V0dGluZ3MuaCIKLSNpbmNsdWRlICJTdG9yYWdl
VGhyZWFkLmgiCi0jaW5jbHVkZSAiU3RvcmFnZVRyYWNrZXIuaCIKLSNpbmNsdWRlICJXZWJLaXRW
ZXJzaW9uLmgiCi0jaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCi0jaW5jbHVkZSAiZXdrX3ByaXZh
dGUuaCIKLSNpbmNsdWRlIDxFaW5hLmg+Ci0jaW5jbHVkZSA8ZWluYV9zYWZldHlfY2hlY2tzLmg+
Ci0jaW5jbHVkZSA8ZXJybm8uaD4KLSNpbmNsdWRlIDxzdHJpbmcuaD4KLSNpbmNsdWRlIDx1bmlz
dGQuaD4KLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NT
dHJpbmcuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgotCi0jaWYg
T1MoVU5JWCkKLSNpbmNsdWRlIDxzeXMvc3RhdC5oPgotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgot
I2luY2x1ZGUgPHN5cy91dHNuYW1lLmg+Ci0jZWxpZiBPUyhXSU5ET1dTKQotI2luY2x1ZGUgIlN5
c3RlbUluZm8uaCIKLSNlbmRpZgotCi1zdGF0aWMgY29uc3QgY2hhciogc19vZmZsaW5lQXBwQ2Fj
aGVQYXRoID0gMDsKLQotc3RhdGljIGNvbnN0IGNoYXIqIF9ld2tfaWNvbl9kYXRhYmFzZV9wYXRo
ID0gMDsKLQotc3RhdGljIGNvbnN0IGNoYXIqIHNfd2ViRGF0YWJhc2VQYXRoID0gMDsKLXN0YXRp
YyBjb25zdCBjaGFyKiBzX2xvY2FsU3RvcmFnZVBhdGggPSAwOwotc3RhdGljIGNvbnN0IGNoYXIq
IHNfY3NzTWVkaWFUeXBlID0gMDsKLXN0YXRpYyB1aW50NjRfdCBzX3dlYkRhdGFiYXNlUXVvdGEg
PSAxICogMTAyNCAqIDEwMjQ7IC8vIDFNQi4KLQotc3RhdGljIFdURjo6U3RyaW5nIF9ld2tfc2V0
dGluZ3Nfd2Via2l0X3BsYXRmb3JtX2dldCgpCi17Ci0gICAgV1RGOjpTdHJpbmcgdWFQbGF0Zm9y
bTsKLSNpZiBQTEFURk9STShYMTEpCi0gICAgdWFQbGF0Zm9ybSA9ICJYMTEiOwotI2Vsc2UKLSAg
ICB1YVBsYXRmb3JtID0gIlVua25vd24iOwotI2VuZGlmCi0gICAgcmV0dXJuIHVhUGxhdGZvcm07
Ci19Ci0KLXN0YXRpYyBXVEY6OlN0cmluZyBfZXdrX3NldHRpbmdzX3dlYmtpdF9vc192ZXJzaW9u
X2dldCgpCi17Ci0gICAgV1RGOjpTdHJpbmcgdWFPc1ZlcnNpb247Ci0jaWYgT1MoREFSV0lOKQot
I2lmIENQVShYODYpIHx8IENQVShYODZfNjQpCi0gICAgdWFPc1ZlcnNpb24gPSAiSW50ZWwgTWFj
IE9TIFgiOwotI2Vsc2UKLSAgICB1YU9zVmVyc2lvbiA9ICJQUEMgTWFjIE9TIFgiOwotI2VuZGlm
Ci0jZWxpZiBPUyhVTklYKQotICAgIHN0cnVjdCB1dHNuYW1lIG5hbWU7Ci0KLSAgICBpZiAodW5h
bWUoJm5hbWUpICE9IC0xKQotICAgICAgICB1YU9zVmVyc2lvbiA9IG1ha2VTdHJpbmcobmFtZS5z
eXNuYW1lLCAnICcsIG5hbWUubWFjaGluZSk7Ci0gICAgZWxzZQotICAgICAgICB1YU9zVmVyc2lv
biA9ICJVbmtub3duIjsKLSNlbGlmIE9TKFdJTkRPV1MpCi0gICAgdWFPc1ZlcnNpb24gPSB3aW5k
b3dzVmVyc2lvbkZyb1VBU3RyaW5nKCk7Ci0jZWxzZQotICAgIHVhT3NWZXJzaW9uID0gIlVua25v
d24iOwotI2VuZGlmCi0gICAgcmV0dXJuIHVhT3NWZXJzaW9uOwotfQotCi11aW50NjRfdCBld2tf
c2V0dGluZ3Nfd2ViX2RhdGFiYXNlX2RlZmF1bHRfcXVvdGFfZ2V0KCkKLXsKLSAgICByZXR1cm4g
c193ZWJEYXRhYmFzZVF1b3RhOwotfQotCi12b2lkIGV3a19zZXR0aW5nc193ZWJfZGF0YWJhc2Vf
ZGVmYXVsdF9xdW90YV9zZXQodWludDY0X3QgbWF4aW11bVNpemUpCi17Ci0gICAgc193ZWJEYXRh
YmFzZVF1b3RhID0gbWF4aW11bVNpemU7Ci19Ci0KLXZvaWQgZXdrX3NldHRpbmdzX2xvY2FsX3N0
b3JhZ2VfcGF0aF9zZXQoY29uc3QgY2hhciogcGF0aCkKLXsKLSAgICBXZWJDb3JlOjpTdG9yYWdl
VHJhY2tlcjo6dHJhY2tlcigpLnNldERhdGFiYXNlRGlyZWN0b3J5UGF0aChXVEY6OlN0cmluZzo6
ZnJvbVVURjgocGF0aCkpOwotICAgIGVpbmFfc3RyaW5nc2hhcmVfcmVwbGFjZSgmc19sb2NhbFN0
b3JhZ2VQYXRoLCBwYXRoKTsKLX0KLQotY29uc3QgY2hhciogZXdrX3NldHRpbmdzX2xvY2FsX3N0
b3JhZ2VfcGF0aF9nZXQodm9pZCkKLXsKLSAgICByZXR1cm4gc19sb2NhbFN0b3JhZ2VQYXRoOwot
fQotCi12b2lkIGV3a19zZXR0aW5nc19sb2NhbF9zdG9yYWdlX2RhdGFiYXNlX2NsZWFyKCkKLXsK
LSAgICBXZWJDb3JlOjpTdG9yYWdlVHJhY2tlcjo6dHJhY2tlcigpLmRlbGV0ZUFsbE9yaWdpbnMo
KTsKLX0KLQotdm9pZCBld2tfc2V0dGluZ3NfbG9jYWxfc3RvcmFnZV9kYXRhYmFzZV9vcmlnaW5f
Y2xlYXIoY29uc3QgY2hhciogdXJsKQotewotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJO
KHVybCk7Ci0KLSAgICBjb25zdCBXZWJDb3JlOjpVUkwga3VybChXZWJDb3JlOjpVUkwoKSwgV1RG
OjpTdHJpbmc6OmZyb21VVEY4KHVybCkpOwotICAgIFdlYkNvcmU6OlN0b3JhZ2VUcmFja2VyOjp0
cmFja2VyKCkuZGVsZXRlT3JpZ2luKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoa3Vy
bCkuZ2V0KCkpOwotfQotCi12b2lkIGV3a19zZXR0aW5nc193ZWJfZGF0YWJhc2VfcGF0aF9zZXQo
Y29uc3QgY2hhciogcGF0aCkKLXsKLSNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAgIFdlYkNv
cmU6OkRhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLnNldERhdGFiYXNlRGlyZWN0b3J5UGF0aChX
VEY6OlN0cmluZzo6ZnJvbVVURjgocGF0aCkpOwotICAgIGVpbmFfc3RyaW5nc2hhcmVfcmVwbGFj
ZSgmc193ZWJEYXRhYmFzZVBhdGgsIHBhdGgpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0ocGF0
aCk7Ci0jZW5kaWYKLX0KLQotY29uc3QgY2hhciogZXdrX3NldHRpbmdzX3dlYl9kYXRhYmFzZV9w
YXRoX2dldCh2b2lkKQotewotICAgIHJldHVybiBzX3dlYkRhdGFiYXNlUGF0aDsKLX0KLQotRWlu
YV9Cb29sIGV3a19zZXR0aW5nc19pY29uX2RhdGFiYXNlX3BhdGhfc2V0KGNvbnN0IGNoYXIqIGRp
cmVjdG9yeSkKLXsKLSAgICBXZWJDb3JlOjpJY29uRGF0YWJhc2U6OmRlbGF5RGF0YWJhc2VDbGVh
bnVwKCk7Ci0KLSAgICBpZiAoZGlyZWN0b3J5KSB7Ci0gICAgICAgIGlmIChXZWJDb3JlOjppY29u
RGF0YWJhc2UoKS5pc0VuYWJsZWQoKSkgewotICAgICAgICAgICAgRVJSKCJJY29uRGF0YWJhc2Ug
aXMgYWxyZWFkeSBvcGVuOiAlcyIsIF9ld2tfaWNvbl9kYXRhYmFzZV9wYXRoKTsKLSAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotCi0gICAgICAgIHN0cnVjdCBzdGF0IHN0Owot
Ci0gICAgICAgIGlmIChzdGF0KGRpcmVjdG9yeSwgJnN0KSkgewotICAgICAgICAgICAgRVJSKCJj
b3VsZCBub3Qgc3RhdCglcyk6ICVzIiwgZGlyZWN0b3J5LCBzdHJlcnJvcihlcnJubykpOwotICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCFTX0lTRElS
KHN0LnN0X21vZGUpKSB7Ci0gICAgICAgICAgICBFUlIoIm5vdCBhIGRpcmVjdG9yeTogJXMiLCBk
aXJlY3RvcnkpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0KLSAgICAg
ICAgaWYgKGFjY2VzcyhkaXJlY3RvcnksIFJfT0sgfCBXX09LKSkgewotICAgICAgICAgICAgRVJS
KCJjb3VsZCBub3QgYWNjZXNzIGRpcmVjdG9yeSAnJXMnIGZvciByZWFkIGFuZCB3cml0ZTogJXMi
LAotICAgICAgICAgICAgICAgIGRpcmVjdG9yeSwgc3RyZXJyb3IoZXJybm8pKTsKLSAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotCi0gICAgICAgIFdlYkNvcmU6Omljb25EYXRh
YmFzZSgpLnNldEVuYWJsZWQodHJ1ZSk7Ci0gICAgICAgIFdlYkNvcmU6Omljb25EYXRhYmFzZSgp
Lm9wZW4oV1RGOjpTdHJpbmc6OmZyb21VVEY4KGRpcmVjdG9yeSksIFdlYkNvcmU6Okljb25EYXRh
YmFzZTo6ZGVmYXVsdERhdGFiYXNlRmlsZW5hbWUoKSk7Ci0KLSAgICAgICAgZWluYV9zdHJpbmdz
aGFyZV9yZXBsYWNlKCZfZXdrX2ljb25fZGF0YWJhc2VfcGF0aCwgZGlyZWN0b3J5KTsKLSAgICB9
IGVsc2UgewotICAgICAgICBXZWJDb3JlOjppY29uRGF0YWJhc2UoKS5zZXRFbmFibGVkKGZhbHNl
KTsKLSAgICAgICAgV2ViQ29yZTo6aWNvbkRhdGFiYXNlKCkuY2xvc2UoKTsKLQotICAgICAgICBl
aW5hX3N0cmluZ3NoYXJlX2RlbChfZXdrX2ljb25fZGF0YWJhc2VfcGF0aCk7Ci0gICAgICAgIF9l
d2tfaWNvbl9kYXRhYmFzZV9wYXRoID0gMDsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0K
LWNvbnN0IGNoYXIqIGV3a19zZXR0aW5nc19pY29uX2RhdGFiYXNlX3BhdGhfZ2V0KHZvaWQpCi17
Ci0gICAgcmV0dXJuIF9ld2tfaWNvbl9kYXRhYmFzZV9wYXRoOwotfQotCi1FaW5hX0Jvb2wgZXdr
X3NldHRpbmdzX2ljb25fZGF0YWJhc2VfY2xlYXIodm9pZCkKLXsKLSAgICBpZiAoIVdlYkNvcmU6
Omljb25EYXRhYmFzZSgpLmlzRW5hYmxlZCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
aWYgKCFXZWJDb3JlOjppY29uRGF0YWJhc2UoKS5pc09wZW4oKSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotCi0gICAgV2ViQ29yZTo6aWNvbkRhdGFiYXNlKCkucmVtb3ZlQWxsSWNvbnMoKTsKLSAg
ICByZXR1cm4gdHJ1ZTsKLX0KLQotRXZhc19PYmplY3QqIGV3a19zZXR0aW5nc19pY29uX2RhdGFi
YXNlX2ljb25fb2JqZWN0X2dldChjb25zdCBjaGFyKiB1cmwsIEV2YXMqIGNhbnZhcykKLXsKLSAg
ICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwodXJsLCAwKTsKLSAgICBFSU5BX1NBRkVU
WV9PTl9OVUxMX1JFVFVSTl9WQUwoY2FudmFzLCAwKTsKLQotICAgIFdlYkNvcmU6OlVSTCBrdXJs
KFdlYkNvcmU6OlVSTCgpLCBXVEY6OlN0cmluZzo6ZnJvbVVURjgodXJsKSk7Ci0gICAgUmVmUHRy
PGNhaXJvX3N1cmZhY2VfdD4gc3VyZmFjZSA9IFdlYkNvcmU6Omljb25EYXRhYmFzZSgpLnN5bmNo
cm9ub3VzTmF0aXZlSWNvbkZvclBhZ2VVUkwoa3VybC5zdHJpbmcoKSwgV2ViQ29yZTo6SW50U2l6
ZSgxNiwgMTYpKTsKLQotICAgIGlmICghc3VyZmFjZSkgewotICAgICAgICBFUlIoIm5vIGljb24g
Zm9yIHVybCAlcyIsIHVybCk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIHJldHVy
biBzdXJmYWNlID8gV2ViQ29yZTo6ZXZhc09iamVjdEZyb21DYWlyb0ltYWdlU3VyZmFjZShjYW52
YXMsIHN1cmZhY2UuZ2V0KCkpLmxlYWtSZWYoKSA6IDA7Ci19Ci0KLXZvaWQgZXdrX3NldHRpbmdz
X29iamVjdF9jYWNoZV9jYXBhY2l0eV9zZXQodW5zaWduZWQgbWluRGVhZENhcGFjaXR5LCB1bnNp
Z25lZCBtYXhEZWFkQ2FwYWNpdHksIHVuc2lnbmVkIHRvdGFsQ2FwYWNpdHkpCi17Ci0gICAgV2Vi
Q29yZTo6bWVtb3J5Q2FjaGUoKS0+c2V0Q2FwYWNpdGllcyhtaW5EZWFkQ2FwYWNpdHksIG1heERl
YWRDYXBhY2l0eSwgdG90YWxDYXBhY2l0eSk7Ci19Ci0KLUVpbmFfQm9vbCBld2tfc2V0dGluZ3Nf
b2JqZWN0X2NhY2hlX2VuYWJsZV9nZXQoKQotewotICAgIHJldHVybiAhV2ViQ29yZTo6bWVtb3J5
Q2FjaGUoKS0+ZGlzYWJsZWQoKTsKLX0KLQotdm9pZCBld2tfc2V0dGluZ3Nfb2JqZWN0X2NhY2hl
X2VuYWJsZV9zZXQoRWluYV9Cb29sIGVuYWJsZSkKLXsKLSAgICBXZWJDb3JlOjptZW1vcnlDYWNo
ZSgpLT5zZXREaXNhYmxlZCghZW5hYmxlKTsKLX0KLQotRWluYV9Cb29sIGV3a19zZXR0aW5nc19z
aGFkb3dfZG9tX2VuYWJsZV9nZXQoKQotewotICAgIHJldHVybiBmYWxzZTsKLX0KLQotRWluYV9C
b29sIGV3a19zZXR0aW5nc19zaGFkb3dfZG9tX2VuYWJsZV9zZXQoRWluYV9Cb29sIGVuYWJsZSkK
LXsKLSAgICBVTlVTRURfUEFSQU0oZW5hYmxlKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXVu
c2lnbmVkIGV3a19zZXR0aW5nc19wYWdlX2NhY2hlX2NhcGFjaXR5X2dldCgpCi17Ci0gICAgcmV0
dXJuIFdlYkNvcmU6OnBhZ2VDYWNoZSgpLT5jYXBhY2l0eSgpOwotfQotCi12b2lkIGV3a19zZXR0
aW5nc19wYWdlX2NhY2hlX2NhcGFjaXR5X3NldCh1bnNpZ25lZCBwYWdlcykKLXsKLSAgICBXZWJD
b3JlOjpwYWdlQ2FjaGUoKS0+c2V0Q2FwYWNpdHkocGFnZXMpOwotfQotCi12b2lkIGV3a19zZXR0
aW5nc19tZW1vcnlfY2FjaGVfY2xlYXIoKQotewotICAgIC8vIFR1cm4gdGhlIGNhY2hlIG9uIGFu
ZCBvZmYuIERpc2FibGluZyB0aGUgb2JqZWN0IGNhY2hlIHdpbGwgcmVtb3ZlIGFsbAotICAgIC8v
IHJlc291cmNlcyBmcm9tIHRoZSBjYWNoZS4gVGhleSBtYXkgc3RpbGwgbGl2ZSBvbiBpZiB0aGV5
IGFyZSByZWZlcmVuY2VkCi0gICAgLy8gYnkgc29tZSBXZWIgcGFnZSB0aG91Z2guCi0gICAgaWYg
KCFXZWJDb3JlOjptZW1vcnlDYWNoZSgpLT5kaXNhYmxlZCgpKSB7Ci0gICAgICAgIFdlYkNvcmU6
Om1lbW9yeUNhY2hlKCktPnNldERpc2FibGVkKHRydWUpOwotICAgICAgICBXZWJDb3JlOjptZW1v
cnlDYWNoZSgpLT5zZXREaXNhYmxlZChmYWxzZSk7Ci0gICAgfQotCi0gICAgaW50IHBhZ2VDYXBh
Y2l0eSA9IFdlYkNvcmU6OnBhZ2VDYWNoZSgpLT5jYXBhY2l0eSgpOwotICAgIC8vIFNldHRpbmcg
c2l6ZSB0byAwLCBtYWtlcyBhbGwgcGFnZXMgYmUgcmVsZWFzZWQuCi0gICAgV2ViQ29yZTo6cGFn
ZUNhY2hlKCktPnNldENhcGFjaXR5KDApOwotICAgIFdlYkNvcmU6OnBhZ2VDYWNoZSgpLT5zZXRD
YXBhY2l0eShwYWdlQ2FwYWNpdHkpOwotCi0gICAgLy8gSW52YWxpZGF0aW5nIHRoZSBmb250IGNh
Y2hlIGFuZCBmcmVlaW5nIGFsbCBpbmFjdGl2ZSBmb250IGRhdGEuCi0gICAgV2ViQ29yZTo6Zm9u
dENhY2hlKCkuaW52YWxpZGF0ZSgpOwotCi0gICAgLy8gRW1wdHkgdGhlIENyb3NzLU9yaWdpbiBQ
cmVmbGlnaHQgY2FjaGUKLSAgICBXZWJDb3JlOjpDcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENh
Y2hlOjpzaGFyZWQoKS5lbXB0eSgpOwotCi0gICAgLy8gRHJvcCBKSVQgY29tcGlsZWQgY29kZSBm
cm9tIEV4ZWN1dGFibGVBbGxvY2F0b3IuCi0gICAgV2ViQ29yZTo6Z2NDb250cm9sbGVyKCkuZGlz
Y2FyZEFsbENvbXBpbGVkQ29kZSgpOwotICAgIC8vIEdhcmJhZ2UgQ29sbGVjdCB0byByZWxlYXNl
IHRoZSByZWZlcmVuY2VzIG9mIENhY2hlZFJlc291cmNlIGZyb20gZGVhZCBvYmplY3RzLgotICAg
IFdlYkNvcmU6OmdjQ29udHJvbGxlcigpLmdhcmJhZ2VDb2xsZWN0Tm93KCk7Ci0KLSAgICAvLyBG
YXN0TWFsbG9jIGhhcyBsb2NrLWZyZWUgdGhyZWFkIHNwZWNpZmljIGNhY2hlcyB0aGF0IGNhbiBv
bmx5IGJlIGNsZWFyZWQgZnJvbSB0aGUgdGhyZWFkIGl0c2VsZi4KLSAgICBXZWJDb3JlOjpTdG9y
YWdlVGhyZWFkOjpyZWxlYXNlRmFzdE1hbGxvY0ZyZWVNZW1vcnlJbkFsbFRocmVhZHMoKTsKLSAg
ICBXZWJDb3JlOjpXb3JrZXJUaHJlYWQ6OnJlbGVhc2VGYXN0TWFsbG9jRnJlZU1lbW9yeUluQWxs
VGhyZWFkcygpOwotICAgIFdURjo6cmVsZWFzZUZhc3RNYWxsb2NGcmVlTWVtb3J5KCk7Ci19Ci0K
LXZvaWQgZXdrX3NldHRpbmdzX3JlcGFpbnRfdGhyb3R0bGluZ19zZXQoZG91YmxlIGRlZmVycmVk
UmVwYWludERlbGF5LCBkb3VibGUgaW5pdGlhbERlZmVycmVkUmVwYWludERlbGF5RHVyaW5nTG9h
ZGluZywgZG91YmxlIG1heERlZmVycmVkUmVwYWludERlbGF5RHVyaW5nTG9hZGluZywgZG91Ymxl
IGRlZmVycmVkUmVwYWludERlbGF5SW5jcmVtZW50RHVyaW5nTG9hZGluZykKLXsKLSAgICAvLyBG
SVhNRTogRUZMIHNob3VsZCBzd2l0Y2ggdG8gbGF5ZXIgZmx1c2ggdGhyb3R0bGluZy4KLSAgICBV
TlVTRURfUEFSQU0oZGVmZXJyZWRSZXBhaW50RGVsYXkpOwotICAgIFVOVVNFRF9QQVJBTShpbml0
aWFsRGVmZXJyZWRSZXBhaW50RGVsYXlEdXJpbmdMb2FkaW5nKTsKLSAgICBVTlVTRURfUEFSQU0o
bWF4RGVmZXJyZWRSZXBhaW50RGVsYXlEdXJpbmdMb2FkaW5nKTsKLSAgICBVTlVTRURfUEFSQU0o
ZGVmZXJyZWRSZXBhaW50RGVsYXlJbmNyZW1lbnREdXJpbmdMb2FkaW5nKTsKLX0KLQotLyoqCi0g
KiBAaW50ZXJuYWwKLSAqCi0gKiBHZXRzIHRoZSBkZWZhdWx0IHVzZXIgYWdlbnQgc3RyaW5nLgot
ICoKLSAqIEByZXR1cm4gYSBwb2ludGVyIHRvIGFuIGVpbmFfc3RyaW5nc2hhcmUgY29udGFpbmlu
ZyB0aGUgdXNlciBhZ2VudCBzdHJpbmcKLSAqLwotY29uc3QgY2hhciogZXdrX3NldHRpbmdzX2Rl
ZmF1bHRfdXNlcl9hZ2VudF9nZXQoKQotewotICAgIFdURjo6U3RyaW5nIHVhVmVyc2lvbiA9IFN0
cmluZzo6bnVtYmVyKFdFQktJVF9NQUpPUl9WRVJTSU9OKSArICcuJyArIFN0cmluZzo6bnVtYmVy
KFdFQktJVF9NSU5PUl9WRVJTSU9OKSArICcrJzsKLSAgICBXVEY6OlN0cmluZyBzdGF0aWNVYSA9
ICJNb3ppbGxhLzUuMCAoIiArIF9ld2tfc2V0dGluZ3Nfd2Via2l0X3BsYXRmb3JtX2dldCgpICsg
IjsgIiArIF9ld2tfc2V0dGluZ3Nfd2Via2l0X29zX3ZlcnNpb25fZ2V0KCkgKyAiKSBBcHBsZVdl
YktpdC8iICsgdWFWZXJzaW9uICsgIiAoS0hUTUwsIGxpa2UgR2Vja28pIFZlcnNpb24vNS4wIFNh
ZmFyaS8iICsgdWFWZXJzaW9uOwotCi0gICAgcmV0dXJuIGVpbmFfc3RyaW5nc2hhcmVfYWRkKHN0
YXRpY1VhLnV0ZjgoKS5kYXRhKCkpOwotfQotCi0vKioKLSAqIEBpbnRlcm5hbAotICoKLSAqIFNl
dHMgdGhlIGdpdmVuIHBhdGggdG8gdGhlIGRpcmVjdG9yeSB3aGVyZSBXZWJLaXQgd2lsbCB3cml0
ZSBmb3IKLSAqIHRoZSBIVE1MNSBmaWxlIHN5c3RlbSBBUEkuCi0gKgotICogQHBhcmFtIHBhdGgg
dGhlIG5ldyBmaWxlIHN5c3RlbSBkaXJlY3RvcnkgcGF0aAotICovCi12b2lkIGV3a19zZXR0aW5n
c19maWxlX3N5c3RlbV9wYXRoX3NldChjb25zdCBjaGFyKiBwYXRoKQotewotICAgIFVOVVNFRF9Q
QVJBTShwYXRoKTsKLX0KLQotdm9pZCBld2tfc2V0dGluZ3NfYXBwbGljYXRpb25fY2FjaGVfcGF0
aF9zZXQoY29uc3QgY2hhciogcGF0aCkKLXsKLSAgICBXZWJDb3JlOjpjYWNoZVN0b3JhZ2UoKS5z
ZXRDYWNoZURpcmVjdG9yeShXVEY6OlN0cmluZzo6ZnJvbVVURjgocGF0aCkpOwotICAgIGVpbmFf
c3RyaW5nc2hhcmVfcmVwbGFjZSgmc19vZmZsaW5lQXBwQ2FjaGVQYXRoLCBwYXRoKTsKLX0KLQot
Y29uc3QgY2hhciogZXdrX3NldHRpbmdzX2FwcGxpY2F0aW9uX2NhY2hlX3BhdGhfZ2V0KCkKLXsK
LSAgICByZXR1cm4gc19vZmZsaW5lQXBwQ2FjaGVQYXRoOwotfQotCi1pbnQ2NF90IGV3a19zZXR0
aW5nc19hcHBsaWNhdGlvbl9jYWNoZV9tYXhfcXVvdGFfZ2V0KCkKLXsKLSAgICByZXR1cm4gV2Vi
Q29yZTo6Y2FjaGVTdG9yYWdlKCkubWF4aW11bVNpemUoKTsKLX0KLQotdm9pZCBld2tfc2V0dGlu
Z3NfYXBwbGljYXRpb25fY2FjaGVfbWF4X3F1b3RhX3NldChpbnQ2NF90IG1heGltdW1TaXplKQot
ewotICAgIGV3a19zZXR0aW5nc19hcHBsaWNhdGlvbl9jYWNoZV9jbGVhcigpOwotCi0gICAgV2Vi
Q29yZTo6Y2FjaGVTdG9yYWdlKCkuc2V0TWF4aW11bVNpemUobWF4aW11bVNpemUpOwotfQotCi12
b2lkIGV3a19zZXR0aW5nc19hcHBsaWNhdGlvbl9jYWNoZV9jbGVhcigpCi17Ci0gICAgV2ViQ29y
ZTo6Y2FjaGVTdG9yYWdlKCkuZGVsZXRlQWxsRW50cmllcygpOwotfQotCi1kb3VibGUgZXdrX3Nl
dHRpbmdzX2RlZmF1bHRfdGltZXJfaW50ZXJ2YWxfZ2V0KHZvaWQpCi17Ci0gICAgcmV0dXJuIFdl
YkNvcmU6OlNldHRpbmdzOjpkZWZhdWx0TWluRE9NVGltZXJJbnRlcnZhbCgpOwotfQotCi12b2lk
IGV3a19zZXR0aW5nc19jc3NfbWVkaWFfdHlwZV9zZXQoY29uc3QgY2hhciogdHlwZSkKLXsKLSAg
ICBlaW5hX3N0cmluZ3NoYXJlX3JlcGxhY2UoJnNfY3NzTWVkaWFUeXBlLCB0eXBlKTsKLX0KLQot
Y29uc3QgY2hhciogZXdrX3NldHRpbmdzX2Nzc19tZWRpYV90eXBlX2dldCgpCi17Ci0gICAgcmV0
dXJuIHNfY3NzTWVkaWFUeXBlOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdr
L2V3a19zZXR0aW5ncy5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19zZXR0aW5ncy5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NmE2OTAyLi4wMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJLaXQvZWZsL2V3ay9ld2tfc2V0dGluZ3MuaAorKysgL2Rldi9udWxsCkBAIC0xLDQwOCAr
MCwwIEBACi0vKgotICAgIENvcHlyaWdodCAoQykgMjAwOS0yMDEwIFByb0ZVU0lPTiBlbWJlZGRl
ZCBzeXN0ZW1zCi0gICAgQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgU2Ftc3VuZyBFbGVjdHJvbmlj
cwotICAgIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbgotCi0gICAgVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgot
ICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCi0gICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCi0gICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAg
ICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQotICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgotCi0gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAgIGFsb25nIHdpdGggdGhpcyBsaWJy
YXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gICAgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0
aCBGbG9vciwKLSAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSovCi0KLSNpZm5kZWYg
ZXdrX3NldHRpbmdzX2gKLSNkZWZpbmUgZXdrX3NldHRpbmdzX2gKLQotI2luY2x1ZGUgPEVpbmEu
aD4KLSNpbmNsdWRlIDxFdmFzLmg+Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJDIiB7
Ci0jZW5kaWYKLQotLyoqCi0gKiBAZmlsZSBld2tfc2V0dGluZ3MuaAotICoKLSAqIEBicmllZiBH
ZW5lcmFsIHB1cnBvc2Ugc2V0dGluZ3MsIG5vdCB0aWVkIHRvIGFueSB2aWV3IG9iamVjdC4KLSAq
LwotCi0vKioKLSAqIFJldHVybnMgdGhlIGRlZmF1bHQgcXVvdGEgZm9yIFdlYiBEYXRhYmFzZSBk
YXRhYmFzZXMuIEJ5IGRlZmF1bHQKLSAqIHRoaXMgdmFsdWUgaXMgMU1CLgotICoKLSAqIEByZXR1
cm4gdGhlIGN1cnJlbnQgZGVmYXVsdCBkYXRhYmFzZSBxdW90YSBpbiBieXRlcwotICovCi1FQVBJ
IHVpbnQ2NF90ICAgICAgICAgZXdrX3NldHRpbmdzX3dlYl9kYXRhYmFzZV9kZWZhdWx0X3F1b3Rh
X2dldCh2b2lkKTsKLQotLyoqCi0gKiBTZXRzIHRoZSBkZWZhdWx0IG1heGltdW0gc2l6ZSAoaW4g
Ynl0ZXMpIGFuIEhUTUw1IFdlYiBEYXRhYmFzZSBkYXRhYmFzZSBjYW4gaGF2ZS4KLSAqCi0gKiBC
eSBkZWZhdWx0LCB0aGlzIHZhbHVlIGlzIDFNQi4KLSAqCi0gKiBAcGFyYW0gbWF4aW11bV9zaXpl
IHRoZSBuZXcgbWF4aW11bSBzaXplIGEgZGF0YWJhc2UgaXMgYWxsb3dlZAotICovCi1FQVBJIHZv
aWQgICAgICAgICAgICAgZXdrX3NldHRpbmdzX3dlYl9kYXRhYmFzZV9kZWZhdWx0X3F1b3RhX3Nl
dCh1aW50NjRfdCBtYXhpbXVtX3NpemUpOwotCi0vKioKLSAqIFNldHMgdGhlIGN1cnJlbnQgcGF0
aCB0byB0aGUgZGlyZWN0b3J5IFdlYktpdCB3aWxsIHdyaXRlIFdlYgotICogRGF0YWJhc2UgZGF0
YWJhc2VzLgotICoKLSAqIEJ5IGRlZmF1bHQsIHRoZSB2YWx1ZSBpcyBAYyB+Ly5jYWNoZS9XZWJL
aXRFZmwvRGF0YWJhc2VzCi0gKgotICogQHBhcmFtIHBhdGggdGhlIG5ldyBkYXRhYmFzZSBkaXJl
Y3RvcnkgcGF0aAotICovCi1FQVBJIHZvaWQgICAgICAgICAgICAgZXdrX3NldHRpbmdzX3dlYl9k
YXRhYmFzZV9wYXRoX3NldChjb25zdCBjaGFyICpwYXRoKTsKLQotLyoqCi0gKiBTZXRzIHRoZSBj
dXJyZW50IHBhdGggdG8gdGhlIGRpcmVjdG9yeSB3aGVyZSBXZWJLaXQgd2lsbCB3cml0ZSB0aGUK
LSAqIEhUTUw1IGxvY2FsIHN0b3JhZ2UgaW5kZXhpbmcgZGF0YWJhc2UgKHRoZSBvbmUga2VlcGlu
ZyB0cmFjayBvZgotICogaW5kaXZpZHVhbCB2aWV3cycgbG9jYWwgc3RvcmFnZSBkYXRhYmFzZXMp
LgotICoKLSAqIEJ5IGRlZmF1bHQsIHRoZSB2YWx1ZSBpcyBAYyB+Ly5sb2NhbC9zaGFyZS9XZWJL
aXRFZmwvTG9jYWxTdG9yYWdlCi0gKgotICogQHBhcmFtIHBhdGggdGhlIG5ldyBsb2NhbCBzdG9y
YWdlIGRhdGFiYXNlIGRpcmVjdG9yeSBwYXRoCi0gKgotICogQG5vdGUgWW91IG1heSB3YW50IHRv
IGNhbGwKLSAqIGV3a192aWV3X3NldHRpbmdfbG9jYWxfc3RvcmFnZV9kYXRhYmFzZV9wYXRoX3Nl
dCgpIG9uIHRoZSBzYW1lIEBwCi0gKiBwYXRoLCBoZXJlLCBmb3IgeW91ciB2aWV3cy4KLSAqLwot
RUFQSSB2b2lkIGV3a19zZXR0aW5nc19sb2NhbF9zdG9yYWdlX3BhdGhfc2V0KGNvbnN0IGNoYXIq
IHBhdGgpOwotCi0vKioKLSAqIFJldHVybnMgZGlyZWN0b3J5J3MgcGF0aCB3aGVyZSB0aGUgSFRN
TDUgbG9jYWwgc3RvcmFnZSBpbmRleGluZwotICogZGF0YWJhc2UgaXMgc3RvcmVkLgotICoKLSAq
IFRoaXMgaXMgZ3VhcmFudGVlZCB0byBiZSBlaW5hLXN0cmluZ3NoYXJlZCwgc28gd2hlbmV2ZXIg
cG9zc2libGUKLSAqIHNhdmUgeW91cnNlbGYgc29tZSBjcHUgY3ljbGVzIGFuZCB1c2UgZWluYV9z
dHJpbmdzaGFyZV9yZWYoKQotICogaW5zdGVhZCBvZiBlaW5hX3N0cmluZ3NoYXJlX2FkZCgpIG9y
IHN0cmR1cCgpLgotICoKLSAqIEJ5IGRlZmF1bHQsIHRoZSB2YWx1ZSBpcyBAYyB+Ly5sb2NhbC9z
aGFyZS9XZWJLaXRFZmwvTG9jYWxTdG9yYWdlCi0gKgotICogQHJldHVybiBkYXRhYmFzZSBwYXRo
IG9yIEBjIE5VTEwsIG9uIGVycm9ycy4KLSAqCi0gKiBAc2VlIGV3a19zZXR0aW5nc19sb2NhbF9z
dG9yYWdlX3BhdGhfc2V0KCkKLSAqLwotRUFQSSBjb25zdCBjaGFyKiBld2tfc2V0dGluZ3NfbG9j
YWxfc3RvcmFnZV9wYXRoX2dldCh2b2lkKTsKLQotLyoqCi0gKiBSZW1vdmVzIEBiIGFsbCBIVE1M
IDUgbG9jYWwgc3RvcmFnZSBkYXRhYmFzZXMuCi0gKi8KLUVBUEkgdm9pZCBld2tfc2V0dGluZ3Nf
bG9jYWxfc3RvcmFnZV9kYXRhYmFzZV9jbGVhcigpOwotCi0vKioKLSAqIENsZWFycyB0aGUgSFRN
TCA1IGxvY2FsIHN0b3JhZ2UgZGF0YWJhc2UgZm9yIHRoZSBnaXZlbiBVUkwKLSAqIChvcmlnaW4p
LgotICoKLSAqIEBwYXJhbSB1cmwgd2hpY2ggVVJMIHRvIGNsZWFyIGxvY2FsIHN0b3JhZ2UgdG8u
Ci0gKgotICogQWZ0ZXIgdGhpcyBjYWxsLCB0aGUgZmlsZSBob2xkaW5nIHRoZSBsb2NhbCBzdG9y
YWdlIGRhdGFiYXNlIGZvcgotICogdGhhdCBvcmlnaW4gd2lsbCBiZSBkZWxldGVkLCBhbG9uZyB3
aXRoIGl0cyBlbnRyeSBvbiB0aGUgbG9jYWwKLSAqIHN0b3JhZ2UgZmlsZXMgZGF0YWJhc2UgKGEg
ZmlsZSBzdG9yZWQgdW5kZXIgdGhlIHBhdGggcmV0dXJuZWQgYnkKLSAqIGV3a19zZXR0aW5nc19s
b2NhbF9zdG9yYWdlX3BhdGhfZ2V0KCkpLgotICovCi1FQVBJIHZvaWQgZXdrX3NldHRpbmdzX2xv
Y2FsX3N0b3JhZ2VfZGF0YWJhc2Vfb3JpZ2luX2NsZWFyKGNvbnN0IGNoYXIgKnVybCk7Ci0KLS8q
KgotICogUmV0dXJucyBkaXJlY3RvcnkgcGF0aCB3aGVyZSB3ZWIgZGF0YWJhc2UgaXMgc3RvcmVk
LgotICoKLSAqIEJ5IGRlZmF1bHQsIHRoZSB2YWx1ZSBpcyBAYyB+Ly5jYWNoZS9XZWJLaXRFZmwv
RGF0YWJhc2VzCi0gKgotICogVGhpcyBpcyBndWFyYW50ZWVkIHRvIGJlIGVpbmFfc3RyaW5nc2hh
cmUsIHNvIHdoZW5ldmVyIHBvc3NpYmxlCi0gKiBzYXZlIHlvdXJzZWxmIHNvbWUgY3B1IGN5Y2xl
cyBhbmQgdXNlIGVpbmFfc3RyaW5nc2hhcmVfcmVmKCkKLSAqIGluc3RlYWQgb2YgZWluYV9zdHJp
bmdzaGFyZV9hZGQoKSBvciBzdHJkdXAoKS4KLSAqCi0gKiBAcmV0dXJuIGRhdGFiYXNlIHBhdGgg
b3IgQGMgTlVMTCBpZiBub25lIG9yIHdlYiBkYXRhYmFzZSBpcyBub3Qgc3VwcG9ydGVkCi0gKi8K
LUVBUEkgY29uc3QgY2hhciAgICAgICpld2tfc2V0dGluZ3Nfd2ViX2RhdGFiYXNlX3BhdGhfZ2V0
KHZvaWQpOwotCi0vKioKLSAqIFNldHMgZGlyZWN0b3J5IHdoZXJlIHRvIHN0b3JlIGljb24gZGF0
YWJhc2UsIG9wZW5pbmcgb3IgY2xvc2luZyBkYXRhYmFzZS4KLSAqCi0gKiBJY29uIGRhdGFiYXNl
IG11c3QgYmUgb3BlbmVkIG9ubHkgb25jZS4gSWYgeW91IHRyeSB0byBzZXQgYSBwYXRoIHdoZW4g
dGhlIGljb24KLSAqIGRhdGFiYXNlIGlzIGFscmVhZHkgb3BlbiwgdGhpcyBmdW5jdGlvbiByZXR1
cm5zIEBjIEVJTkFfRkFMU0UuCi0gKgotICogQHBhcmFtIGRpcmVjdG9yeSB3aGVyZSB0byBzdG9y
ZSBpY29uIGRhdGFiYXNlLCBtdXN0IGJlCi0gKiAgICAgICAgd3JpdGUtYWJsZSwgaWYgQGMgTlVM
TCBpcyBnaXZlbiwgdGhlbiBkYXRhYmFzZSBpcyBjbG9zZWQKLSAqCi0gKiBAcmV0dXJuIEBjIEVJ
TkFfVFJVRSBvbiBzdWNjZXNzLCBAYyBFSU5BX0ZBTFNFIG9uIGVycm9ycwotICovCi1FQVBJIEVp
bmFfQm9vbCAgICAgICAgZXdrX3NldHRpbmdzX2ljb25fZGF0YWJhc2VfcGF0aF9zZXQoY29uc3Qg
Y2hhciAqcGF0aCk7Ci0KLS8qKgotICogUmV0dXJucyBkaXJlY3RvcnkgcGF0aCB3aGVyZSBpY29u
IGRhdGFiYXNlIGlzIHN0b3JlZC4KLSAqCi0gKiBUaGlzIGlzIGd1YXJhbnRlZWQgdG8gYmUgZWlu
YV9zdHJpbmdzaGFyZSwgc28gd2hlbmV2ZXIgcG9zc2libGUKLSAqIHNhdmUgeW91cnNlbGYgc29t
ZSBjcHUgY3ljbGVzIGFuZCB1c2UgZWluYV9zdHJpbmdzaGFyZV9yZWYoKQotICogaW5zdGVhZCBv
ZiBlaW5hX3N0cmluZ3NoYXJlX2FkZCgpIG9yIHN0cmR1cCgpLgotICoKLSAqIEByZXR1cm4gZGF0
YWJhc2UgcGF0aCBvciBAYyBOVUxMIGlmIG5vbmUgaXMgc2V0Ci0gKi8KLUVBUEkgY29uc3QgY2hh
ciAgICAgICpld2tfc2V0dGluZ3NfaWNvbl9kYXRhYmFzZV9wYXRoX2dldCh2b2lkKTsKLQotLyoq
Ci0gKiBSZW1vdmVzIGFsbCBrbm93biBpY29ucyBmcm9tIGRhdGFiYXNlLgotICoKLSAqIERhdGFi
YXNlIG11c3QgYmUgb3BlbmVkIHdpdGggZXdrX3NldHRpbmdzX2ljb25fZGF0YWJhc2VfcGF0aF9z
ZXQoKQotICogaW4gb3JkZXIgdG8gd29yay4KLSAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBv
biBzdWNjZXNzIG9yIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlLCBsaWtlCi0gKiAgICAgICAgIGNs
b3NlZCBkYXRhYmFzZS4KLSAqLwotRUFQSSBFaW5hX0Jvb2wgICAgICAgIGV3a19zZXR0aW5nc19p
Y29uX2RhdGFiYXNlX2NsZWFyKHZvaWQpOwotCi0vKioKLSAqIEdldHMgaW1hZ2UgcmVwcmVzZW50
aW5nIHRoZSBnaXZlbiBVUkwuCi0gKgotICogVGhpcyBpcyBhbiB1dGlsaXR5IGZ1bmN0aW9uIHRo
YXQgY3JlYXRlcyBhbiBFdmFzX09iamVjdCBvZiB0eXBlCi0gKiBpbWFnZSBzZXQgdG8gaGF2ZSBm
aWxsIGFsd2F5cyBtYXRjaCBvYmplY3Qgc2l6ZQotICogKGV2YXNfb2JqZWN0X2ltYWdlX2ZpbGxl
ZF9hZGQoKSksIHNhdmluZyBzb21lIGNvZGUgdG8gdXNlIGl0IGZyb20gRXZhcy4KLSAqCi0gKiBA
bm90ZSBJbiBvcmRlciB0byBoYXZlIHRoaXMgd29ya2luZywgb25lIG11c3Qgb3BlbiBpY29uIGRh
dGFiYXNlCi0gKiAgICAgICB3aXRoIGV3a19zZXR0aW5nc19pY29uX2RhdGFiYXNlX3BhdGhfc2V0
KCkuCi0gKgotICogQG5vdGUgVGhlICJsb2FkLGZpbmlzaGVkIiBzaWduYWwgZG9lc24ndCBndWFy
YW50ZWUgdGhhdCBpY29ucyBhcmUgY29tcGxldGVseSBsb2FkZWQgYW5kCi0gKiAgICAgICAgc2F2
ZWQgdG8gZGF0YWJhc2UuIEljb24gY2FuIGJlIHRha2VuIGFmdGVyIHRoZSAiaWNvbixyZWNlaXZl
ZCIgc2lnbmFsLgotICoKLSAqIEBwYXJhbSB1cmwgd2hpY2ggdXJsIHRvIHF1ZXJ5IGljb24KLSAq
IEBwYXJhbSBjYW52YXMgZXZhcyBpbnN0YW5jZSB3aGVyZSB0byBhZGQgcmVzdWx0aW5nIG9iamVj
dAotICoKLSAqIEByZXR1cm4gbmV3bHkgYWxsb2NhdGVkIEV2YXNfT2JqZWN0IGluc3RhbmNlIG9y
IEBjIE5VTEwgb24KLSAqICAgICAgICAgZXJyb3JzLiBEZWxldGUgdGhlIG9iamVjdCB3aXRoIGV2
YXNfb2JqZWN0X2RlbCgpLgotICovCi1FQVBJIEV2YXNfT2JqZWN0ICAgICAqZXdrX3NldHRpbmdz
X2ljb25fZGF0YWJhc2VfaWNvbl9vYmplY3RfZ2V0KGNvbnN0IGNoYXIgKnVybCwgRXZhcyAqY2Fu
dmFzKTsKLQotLyoqCi0gKiBTZXRzIHRoZSBwYXRoIHdoZXJlIHRoZSBhcHBsaWNhdGlvbiBjYWNo
ZSB3aWxsIGJlIHN0b3JlZC4KLSAqCi0gKiBUaGUgT2ZmbGluZSBBcHBsaWNhdGlvbiBDYWNoaW5n
IEFQSXMgYXJlIHBhcnQgb2YgSFRNTDUgYW5kIGFsbG93IGFwcGxpY2F0aW9ucyB0byBzdG9yZSBk
YXRhIGxvY2FsbHkgdGhhdCBpcyBhY2Nlc3NlZAotICogd2hlbiB0aGUgbmV0d29yayBjYW5ub3Qg
YmUgcmVhY2hlZC4KLSAqCi0gKiBCeSBkZWZhdWx0LCB0aGUgcGF0aCBpcyBAYyB+Ly5jYWNoZS9X
ZWJLaXRFZmwvQXBwbGljYXRpb25zCi0gKiBPbmNlIHRoZSBwYXRoIGlzIHNldCwgdGhlIGZlYXR1
cmUgaXMgZW5hYmxlZCBhbmQgdGhlIHBhdGggY2Fubm90IGJlIGNoYW5nZWQuCi0gKgotICogQHBh
cmFtIHBhdGggd2hlcmUgdG8gc3RvcmUgY2FjaGUsIG11c3QgYmUgd3JpdGUtYWJsZS4KLSAqCi0g
KiBAc2EgZXdrX3ZpZXdfc2V0dGluZ19hcHBsaWNhdGlvbl9jYWNoZV9zZXQKLSAqLwotRUFQSSB2
b2lkICAgICAgICAgICAgIGV3a19zZXR0aW5nc19hcHBsaWNhdGlvbl9jYWNoZV9wYXRoX3NldChj
b25zdCBjaGFyICpwYXRoKTsKLQotLyoqCi0gKiBSZXR1cm5zIHRoZSBwYXRoIHdoZXJlIHRoZSBI
VE1MNSBhcHBsaWNhdGlvbiBjYWNoZSBpcyBzdG9yZWQuCi0gKgotICogVGhlIE9mZmxpbmUgQXBw
bGljYXRpb24gQ2FjaGluZyBBUElzIGFyZSBwYXJ0IG9mIEhUTUw1IGFuZCBhbGxvdyBhcHBsaWNh
dGlvbnMgdG8gc3RvcmUgZGF0YSBsb2NhbGx5IHRoYXQgaXMgYWNjZXNzZWQKLSAqIHdoZW4gdGhl
IG5ldHdvcmsgY2Fubm90IGJlIHJlYWNoZWQuCi0gKgotICogQnkgZGVmYXVsdCwgdGhlIHBhdGgg
aXMgQGMgfi8uY2FjaGUvV2ViS2l0RWZsL0FwcGxpY2F0aW9ucwotICoKLSAqIEByZXR1cm4gZWlu
YV9zdHJpbmdzaGFyZSdkIHBhdGggdmFsdWUuCi0gKgotICogQHNhIGV3a192aWV3X3NldHRpbmdf
YXBwbGljYXRpb25fY2FjaGVfc2V0Ci0gKi8KLUVBUEkgY29uc3QgY2hhciAgICAgICpld2tfc2V0
dGluZ3NfYXBwbGljYXRpb25fY2FjaGVfcGF0aF9nZXQodm9pZCk7Ci0KLS8qKgotICogUmV0dXJu
cyB0aGUgbWF4aW11bSBzaXplLCBpbiBieXRlcywgb2YgdGhlIGFwcGxpY2F0aW9uIGNhY2hlIGZv
ciBIVE1MNSBPZmZsaW5lIFdlYiBBcHBsaWNhdGlvbnMuCi0gKgotICogQnkgZGVmYXVsdCwgYXBw
bGljYXRpb25zIGFyZSBhbGxvd2VkIHVubGltaXRlZCBzdG9yYWdlIHNwYWNlLgotICoKLSAqIEBz
YSBld2tfdmlld19zZXR0aW5nX29mZmluZV9hcHBfY2FjaGVfc2V0Ci0gKi8KLUVBUEkgaW50NjRf
dCAgICAgICAgICBld2tfc2V0dGluZ3NfYXBwbGljYXRpb25fY2FjaGVfbWF4X3F1b3RhX2dldCh2
b2lkKTsKLQotLyoqCi0gKiBTZXRzIHRoZSBtYXhpbXVtIHNpemUsIGluIGJ5dGVzLCBvZiB0aGUg
YXBwbGljYXRpb24gY2FjaGUgZm9yIEhUTUw1IE9mZmxpbmUgV2ViIEFwcGxpY2F0aW9ucy4KLSAq
Ci0gKiBCeSBkZWZhdWx0LCBhcHBsaWNhdGlvbnMgYXJlIGFsbG93ZWQgdW5saW1pdGVkIHN0b3Jh
Z2Ugc3BhY2UuCi0gKgotICogTm90ZSB0aGF0IGNhbGxpbmcgdGhpcyBmdW5jdGlvbiB3aWxsIGRl
bGV0ZSBhbGwgdGhlIGVudHJpZXMgY3VycmVudGx5IGluIHRoZSBhcHAgY2FjaGUuCi0gKgotICog
QHBhcmFtIG1heGltdW1fc2l6ZSB0aGUgbmV3IG1heGltdW0gc2l6ZSwgaW4gYnl0ZXMuCi0gKgot
ICogQHNhIGV3a192aWV3X3NldHRpbmdfYXBwbGljYXRpb25fY2FjaGVfZW5hYmxlZF9zZXQKLSAq
LwotRUFQSSB2b2lkICAgICAgICAgICAgIGV3a19zZXR0aW5nc19hcHBsaWNhdGlvbl9jYWNoZV9t
YXhfcXVvdGFfc2V0KGludDY0X3QgbWF4aW11bV9zaXplKTsKLQotLyoqCi0gKiBSZW1vdmVzIGFs
bCBlbnRyaWVzIGZyb20gdGhlIEhUTUw1IGFwcGxpY2F0aW9uIGNhY2hlLgotICoKLSAqIEBzYSBl
d2tfdmlld19zZXR0aW5nX2FwcGxpY2F0aW9uX2NhY2hlX2VuYWJsZWRfc2V0LCBld2tfc2V0dGlu
Z3NfYXBwbGljYXRpb25fY2FjaGVfcGF0aF9zZXQKLSAqLwotRUFQSSB2b2lkICAgICAgICAgICAg
IGV3a19zZXR0aW5nc19hcHBsaWNhdGlvbl9jYWNoZV9jbGVhcih2b2lkKTsKLQotLyoqCi0gKiBS
ZXR1cm5zIHdoZXRoZXIgdGhlIGluLW1lbW9yeSBvYmplY3QgY2FjaGUgaXMgZW5hYmxlZC4KLSAq
Ci0gKiBUaGUgb2JqZWN0IGNhY2hlIGlzIHJlc3BvbnNpYmxlIGZvciBob2xkaW5nIHJlc291cmNl
cyBzdWNoIGFzIHNjcmlwdHMsIHN0eWxlc2hlZXRzCi0gKiBhbmQgaW1hZ2VzIGluIG1lbW9yeS4K
LSAqCi0gKiBCeSBkZWZhdWx0LCB0aGUgY2FjaGUgaXMgZW5hYmxlZC4KLSAqCi0gKiBAcmV0dXJu
IEBjIEVJTkFfVFJVRSBpZiB0aGUgY2FjaGUgaXMgZW5hYmxlZCBvciBAYyBFSU5BX0ZBTFNFIGlm
IG5vdAotICoKLSAqIEBzYSBld2tfc2V0dGluZ3Nfb2JqZWN0X2NhY2hlX2NhcGFjaXR5X3NldAot
ICovCi1FQVBJIEVpbmFfQm9vbCAgICAgICAgZXdrX3NldHRpbmdzX29iamVjdF9jYWNoZV9lbmFi
bGVfZ2V0KHZvaWQpOwotCi0vKioKLSAqIEVuYWJsZXMvZGlzYWJsZXMgdGhlIGluLW1lbW9yeSBv
YmplY3QgY2FjaGUgb2YgV2ViQ29yZSwgcG9zc2libHkgY2xlYXJpbmcgaXQuCi0gKgotICogVGhl
IG9iamVjdCBjYWNoZSBpcyByZXNwb25zaWJsZSBmb3IgaG9sZGluZyByZXNvdXJjZXMgc3VjaCBh
cyBzY3JpcHRzLCBzdHlsZXNoZWV0cwotICogYW5kIGltYWdlcyBpbiBtZW1vcnkuCi0gKgotICog
QnkgZGVmYXVsdCwgdGhlIGNhY2hlIGlzIGVuYWJsZWQuCi0gKgotICogRGlzYWJsaW5nIHRoZSBj
YWNoZSB3aWxsIHJlbW92ZSBhbGwgcmVzb3VyY2VzIGZyb20gdGhlIGNhY2hlLgotICogVGhleSBt
YXkgc3RpbGwgbGl2ZSBvbiBpZiB0aGV5IGFyZSByZWZlcmVuY2VkIGJ5IHNvbWUgV2ViIHBhZ2Ug
dGhvdWdoLgotICoKLSAqIEBwYXJhbSBzZXQgQGMgRUlOQV9UUlVFIHRvIGVuYWJsZSBtZW1vcnkg
Y2FjaGUsIEBjIEVJTkFfRkFMU0UgdG8gZGlzYWJsZQotICovCi1FQVBJIHZvaWQgICAgICAgICAg
ICAgZXdrX3NldHRpbmdzX29iamVjdF9jYWNoZV9lbmFibGVfc2V0KEVpbmFfQm9vbCBzZXQpOwot
Ci0vKioKLSAqIFJldHVybnMgd2hldGhlciBTaGFkb3cgRE9NIGlzIGVuYWJsZWQuCi0gKgotICog
U2hhZG93IERPTSBpcyBhIG1ldGhvZCBvZiBlc3RhYmxpc2hpbmcgYW5kIG1haW50YWluaW5nIGZ1
bmN0aW9uYWwgYm91bmRhcmllcyBiZXR3ZWVuCi0gKiBET00gc3VidHJlZXMgYW5kIGhvdyB0aGVz
ZSBzdWJ0cmVlcyBpbnRlcmFjdCB3aXRoIGVhY2ggb3RoZXIgd2l0aGluIGEgZG9jdW1lbnQgdHJl
ZSwKLSAqIHRodXMgZW5hYmxpbmcgYmV0dGVyIGZ1bmN0aW9uYWwgZW5jYXBzdWxhdGlvbiB3aXRo
aW4gRE9NLgotICoKLSAqIEJ5IGRlZmF1bHQsIFNoYWRvdyBET00gaXMgZGlzYWJsZWQuCi0gKgot
ICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgU2hhZG93IERPTSBpcyBlbmFibGVkIG9yIEBjIEVJ
TkFfRkFMU0UgaWYgbm90Ci0gKgotICogQHNhIGV3a19zZXR0aW5nc19zaGFkb3dfZG9tX2VuYWJs
ZV9zZXQKLSAqLwotRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3NldHRpbmdzX3NoYWRvd19kb21fZW5h
YmxlX2dldCh2b2lkKTsKLQotLyoqCi0gKiBFbmFibGVzL2Rpc2FibGVzIFNoYWRvdyBET00gZnVu
Y3Rpb25hbGl0eS4KLSAqCi0gKiBTaGFkb3cgRE9NIGlzIGEgbWV0aG9kIG9mIGVzdGFibGlzaGlu
ZyBhbmQgbWFpbnRhaW5pbmcgZnVuY3Rpb25hbCBib3VuZGFyaWVzIGJldHdlZW4KLSAqIERPTSBz
dWJ0cmVlcyBhbmQgaG93IHRoZXNlIHN1YnRyZWVzIGludGVyYWN0IHdpdGggZWFjaCBvdGhlciB3
aXRoaW4gYSBkb2N1bWVudCB0cmVlLAotICogdGh1cyBlbmFibGluZyBiZXR0ZXIgZnVuY3Rpb25h
bCBlbmNhcHN1bGF0aW9uIHdpdGhpbiBET00uCi0gKgotICogQnkgZGVmYXVsdCwgU2hhZG93IERP
TSBpcyBkaXNhYmxlZC4KLSAqCi0gKiBAcGFyYW0gc2V0IEBjIEVJTkFfVFJVRSB0byBlbmFibGUg
U2hhZG93IERPTSwgQGMgRUlOQV9GQUxTRSB0byBkaXNhYmxlCi0gKi8KLUVBUEkgRWluYV9Cb29s
ICAgIGV3a19zZXR0aW5nc19zaGFkb3dfZG9tX2VuYWJsZV9zZXQoRWluYV9Cb29sIGVuYWJsZSk7
Ci0KLS8qKgotICogRGVmaW5lcyB0aGUgY2FwYWNpdGllcyBmb3IgdGhlIGluLW1lbW9yeSBvYmpl
Y3QgY2FjaGUuCi0gKgotICogVGhlIG9iamVjdCBjYWNoZSBpcyByZXNwb25zaWJsZSBmb3IgaG9s
ZGluZyByZXNvdXJjZXMgc3VjaCBhcyBzY3JpcHRzLCBzdHlsZXNoZWV0cwotICogYW5kIGltYWdl
cyBpbiBtZW1vcnkuCi0gKgotICogQnkgZGVmYXVsdCwgQHAgbWluX2RlYWRfYnl0ZXMgaXMgMCBh
bmQgYm90aCBAcCBtYXhfZGVhZF9ieXRlcyBhbmQgQHAgdG90YWxfYnl0ZXMgYXJlIDhNQi4KLSAq
Ci0gKiBAcGFyYW0gbWluX2RlYWRfYnl0ZXMgVGhlIG1heGltdW0gbnVtYmVyIG9mIGJ5dGVzIHRo
YXQgZGVhZCByZXNvdXJjZXMgc2hvdWxkIGNvbnN1bWUgd2hlbgotICogICAgICAgICAgICAgICAg
ICAgICAgIHRoZSBjYWNoZSBpcyB1bmRlciBwcmVzc3VyZS4KLSAqIEBwYXJhbSBtYXhfZGVhZF9i
eXRlcyBUaGUgbWF4aW11bSBudW1iZXIgb2YgYnl0ZXMgdGhhdCBkZWFkIHJlc291cmNlcyBzaG91
bGQgY29uc3VtZSB3aGVuCi0gKiAgICAgICAgICAgICAgICAgICAgICAgdGhlIGNhY2hlIGlzIG5v
dCB1bmRlciBwcmVzc3VyZS4KLSAqIEBwYXJhbSB0b3RhbF9ieXRlcyAgICBUaGUgbWF4aW11bSBu
dW1iZXIgb2YgYnl0ZXMgdGhhdCB0aGUgY2FjaGUgc2hvdWxkIGNvbnN1bWUgb3ZlcmFsbC4KLSAq
Ci0gKiBAcGFyYW0gY2FwYWNpdHkgdGhlIG1heGltdW0gbnVtYmVyIG9mIGJ5dGVzIHRoYXQgdGhl
IGNhY2hlIHNob3VsZCBjb25zdW1lIG92ZXJhbGwKLSAqLwotRUFQSSB2b2lkICAgICAgICAgICAg
IGV3a19zZXR0aW5nc19vYmplY3RfY2FjaGVfY2FwYWNpdHlfc2V0KHVuc2lnbmVkIG1pbl9kZWFk
X2J5dGVzLCB1bnNpZ25lZCBtYXhfZGVhZF9ieXRlcywgdW5zaWduZWQgdG90YWxfYnl0ZXMpOwot
Ci0vKioKLSAqIFJldHVybnMgdGhlIG1heGltdW0gbnVtYmVyIG9mIHBhZ2VzIGluIHRoZSBtZW1v
cnkgcGFnZSBjYWNoZS4KLSAqCi0gKiBCeSBkZWZhdWx0LCBtYXhpbXVtIG51bWJlciBvZiBwYWdl
cyBpcyAzLgotICoKLSAqIEByZXR1cm4gIFRoZSBtYXhpbXVtIG51bWJlciBvZiBwYWdlcyBpbiB0
aGUgbWVtb3J5IHBhZ2UgY2FjaGUuCi0gKgotICogQHNhIGV3a19zZXR0aW5nc19wYWdlX2NhY2hl
X2NhcGFjaXR5X3NldAotICovCi1FQVBJIHVuc2lnbmVkICAgICAgICAgZXdrX3NldHRpbmdzX3Bh
Z2VfY2FjaGVfY2FwYWNpdHlfZ2V0KHZvaWQpOwotCi0vKioKLSAqIERlZmluZXMgdGhlIGNhcGFj
aXR5IGZvciB0aGUgbWVtb3J5IHBhZ2UgY2FjaGUuCi0gKgotICogVGhlIHBhZ2UgY2FjaGUgaXMg
cmVzcG9uc2libGUgZm9yIGhvbGRpbmcgdmlzaXRlZCB3ZWIgcGFnZXMgaW4gbWVtb3J5LiBTbyBp
dCBpbXByb3ZlcyB1c2VyIGV4cGVyaWVuY2Ugd2hlbiBuYXZpZ2F0aW5nIGZvcnRoIG9yIGJhY2sK
LSAqIHRvIHBhZ2VzIGluIHRoZSBmb3J3YXJkL2JhY2sgaGlzdG9yeSBhcyB0aGUgY2FjaGVkIHBh
Z2VzIGRvIG5vdCByZXF1aXJlIHRvIGJlIGxvYWRlZCBmcm9tIHNlcnZlci4KLSAqCi0gKiBCeSBk
ZWZhdWx0LCBAcCBwYWdlcyBpcyAzLgotICoKLSAqIEBwYXJhbSBwYWdlcyBUaGUgbWF4aW11bSBu
dW1iZXIgb2YgcGFnZXMgdG8ga2VlcCBpbiB0aGUgbWVtb3J5IHBhZ2UgY2FjaGUuCi0gKi8KLUVB
UEkgdm9pZCAgICAgICAgICAgICBld2tfc2V0dGluZ3NfcGFnZV9jYWNoZV9jYXBhY2l0eV9zZXQo
dW5zaWduZWQgcGFnZXMpOwotCi0vKioKLSAqIENsZWFycyBhbGwgbWVtb3J5IGNhY2hlcy4KLSAq
Ci0gKiBUaGlzIGZ1bmN0aW9uIGNsZWFycyBhbGwgbWVtb3J5IGNhY2hlcywgd2hpY2ggaW5jbHVk
ZSB0aGUgb2JqZWN0IGNhY2hlIChmb3IgcmVzb3VyY2VzIHN1Y2ggYXMKLSAqIGltYWdlcywgc2Ny
aXB0cyBhbmQgc3R5bGVzaGVldHMpLCB0aGUgcGFnZSBjYWNoZSwgdGhlIGZvbnQgY2FjaGUgYW5k
IHRoZSBDcm9zcy1PcmlnaW4gUHJlZmxpZ2h0Ci0gKiBjYWNoZS4KLSAqLwotRUFQSSB2b2lkICAg
ICAgICAgICAgIGV3a19zZXR0aW5nc19tZW1vcnlfY2FjaGVfY2xlYXIodm9pZCk7Ci0KLS8qKgot
ICogU2V0cyB2YWx1ZXMgZm9yIHJlcGFpbnQgdGhyb3R0bGluZy4KLSAqCi0gKiBJdCBhbGxvd3Mg
dG8gc2xvdyBkb3duIHBhZ2UgbG9hZGluZyBhbmQKLSAqIHNob3VsZCBlbnN1cmUgZGlzcGxheWlu
ZyBhIGNvbnRlbnQgd2l0aCBtYW55IGNzcy9naWYgYW5pbWF0aW9ucy4KLSAqCi0gKiBUaGVzZSB2
YWx1ZXMgY2FuIGJlIHVzZWQgYXMgYSBleGFtcGxlIGZvciByZXBhaW50cyB0aHJvdHRsaW5nLgot
ICogMCwgICAgIDAsICAgMCwgICAgMCAgICAtIGRlZmF1bHQgV2ViQ29yZSdzIHZhbHVlcywgdGhl
c2UgZG8gbm90IGRlbGF5IGFueSByZXBhaW50cwotICogMC4wMjUsIDAsICAgMi41LCAgMC41ICAt
IHJlY29tbWVuZGVkIHZhbHVlcyBmb3IgZHluYW1pYyBjb250ZW50Ci0gKiAwLjAxLCAgMCwgICAx
LCAgICAwLjIgIC0gbWluaW1hbCBsZXZlbAotICogMC4wMjUsIDEsICAgNSwgICAgMC41ICAtIG1l
ZGl1bSBsZXZlbAotICogMC4xLCAgIDIsICAgMTAsICAgMSAgICAtIGhlYXZ5IGxldmVsCi0gKgot
ICogQHBhcmFtIGRlZmVycmVkX3JlcGFpbnRfZGVsYXkgYSBub3JtYWwgZGVsYXkKLSAqIEBwYXJh
bSBpbml0aWFsX2RlZmVycmVkX3JlcGFpbnRfZGVsYXlfZHVyaW5nX2xvYWRpbmcgbmVnYXRpdmUg
dmFsdWUgd291bGQgbWVhbiB0aGF0IGZpcnN0IGZldyByZXBhaW50cyBoYXBwZW4gd2l0aG91dCBh
IGRlbGF5Ci0gKiBAcGFyYW0gbWF4X2RlZmVycmVkX3JlcGFpbnRfZGVsYXlfZHVyaW5nX2xvYWRp
bmcgdGhlIGRlbGF5IGdyb3dzIG9uIGVhY2ggcmVwYWludCB0byB0aGlzIG1heGltdW0gdmFsdWUK
LSAqIEBwYXJhbSBkZWZlcnJlZF9yZXBhaW50X2RlbGF5X2luY3JlbWVudF9kdXJpbmdfbG9hZGlu
ZyBvbiBlYWNoIHJlcGFpbnQgdGhlIGRlbGF5IGluY3Jlc2VzIGJ5IHRoaXMgYW1vdW50Ci0gKi8K
LUVBUEkgdm9pZCAgICAgICAgICAgICBld2tfc2V0dGluZ3NfcmVwYWludF90aHJvdHRsaW5nX3Nl
dChkb3VibGUgZGVmZXJyZWRfcmVwYWludF9kZWxheSwgZG91YmxlIGluaXRpYWxfZGVmZXJyZWRf
cmVwYWludF9kZWxheV9kdXJpbmdfbG9hZGluZywgZG91YmxlIG1heF9kZWZlcnJlZF9yZXBhaW50
X2RlbGF5X2R1cmluZ19sb2FkaW5nLCBkb3VibGUgZGVmZXJyZWRfcmVwYWludF9kZWxheV9pbmNy
ZW1lbnRfZHVyaW5nX2xvYWRpbmcpOwotCi0vKioKLSAqIEdldHMgdGhlIGRlZmF1bHQgaW50ZXJ2
YWwgZm9yIERPTVRpbWVycyBvbiBhbGwgcGFnZXMuCi0gKgotICogRE9NVGltZXIgcHJvY2Vzc2Vz
IGphdmFzY3JpcHQgZnVuY3Rpb24gcmVnaXN0ZXJlZCBieSBzZXRJbnRlcnZhbCgpIGJhc2VkIG9u
IGludGVydmFsIHZhbHVlLgotICoKLSAqIEByZXR1cm4gZGVmYXVsdCBtaW5pbXVtIGludGVydmFs
IGZvciBET01UaW1lcnMKLSAqLwotRUFQSSBkb3VibGUgICAgICAgICAgIGV3a19zZXR0aW5nc19k
ZWZhdWx0X3RpbWVyX2ludGVydmFsX2dldCh2b2lkKTsKLQotLyoqCi0gKiBTZXRzIHRoZSBDU1Mg
bWVkaWEgdHlwZS4KLSAqCi0gKiBTZXR0aW5nIHRoaXMgd2lsbCBvdmVycmlkZSB0aGUgbm9ybWFs
IHZhbHVlIG9mIHRoZSBDU1MgbWVkaWEgcHJvcGVydHkuCi0gKgotICogU2V0dGluZyB0aGUgdmFs
dWUgdG8gQGMgTlVMTCB3aWxsIHJlc3RvcmUgdGhlIGludGVybmFsIGRlZmF1bHQgdmFsdWUuCi0g
KgotICogQHBhcmFtIHR5cGUgY3NzIG1lZGlhIHR5cGUgdG8gYmUgc2V0LCBtdXN0IGJlIHdyaXRl
LWFibGUKLSAqCi0gKiBAc2EgZXdrX3NldHRpbmdzX2Nzc19tZWRpYV90eXBlX2dldAotICovCi1F
QVBJIHZvaWQgICAgICAgICAgICAgZXdrX3NldHRpbmdzX2Nzc19tZWRpYV90eXBlX3NldChjb25z
dCBjaGFyICp0eXBlKTsKLQotLyoqCi0gKiBSZXR1cm5zIHRoZSBjdXJyZW50IENTUyBtZWRpYSB0
eXBlLgotICoKLSAqIEl0IHdpbGwgb25seSByZXR1cm4gdGhlIHZhbHVlIHNldCB0aHJvdWdoIGV3
a19zZXR0aW5nc19jc3NfbWVkaWFfdHlwZV9zZXQgYW5kIG5vdCB0aGUgb25lIHVzZWQgaW50ZXJu
YWxseS4KLSAqCi0gKiBUaGlzIGlzIGd1YXJhbnRlZWQgdG8gYmUgZWluYV9zdHJpbmdzaGFyZSwg
c28gd2hlbmV2ZXIgcG9zc2libGUKLSAqIHNhdmUgeW91cnNlbGYgc29tZSBjcHUgY3ljbGVzIGFu
ZCB1c2UgZWluYV9zdHJpbmdzaGFyZV9yZWYoKQotICogaW5zdGVhZCBvZiBlaW5hX3N0cmluZ3No
YXJlX2FkZCgpIG9yIHN0cmR1cCgpLgotICogCi0gKiBAcmV0dXJuIGNzcyBtZWRpYSB0eXBlIHNl
dCBieSB1c2VyIG9yIEBjIE5VTEwgaWYgbm9uZSBpcyBzZXQKLSAqCi0gKiBAc2EgZXdrX3NldHRp
bmdzX2Nzc19tZWRpYV90eXBlX3NldAotICovCi1FQVBJIGNvbnN0IGNoYXIgICAgICAqZXdrX3Nl
dHRpbmdzX2Nzc19tZWRpYV90eXBlX2dldCh2b2lkKTsKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi19
Ci0jZW5kaWYKLSNlbmRpZiAvLyBld2tfc2V0dGluZ3NfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9lZmwvZXdrL2V3a19zZXR0aW5nc19wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9l
d2svZXdrX3NldHRpbmdzX3ByaXZhdGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
NTU4ZjdiOC4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3NldHRpbmdz
X3ByaXZhdGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLS8qCi0gICAgQ29weXJp
Z2h0IChDKSAyMDA5LTIwMTAgUHJvRlVTSU9OIGVtYmVkZGVkIHN5c3RlbXMKLSAgICBDb3B5cmln
aHQgKEMpIDIwMDktMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCi0KLSAgICBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
LSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
Ci0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNl
ZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAgICB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAotICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotKi8KLQotI2lmbmRlZiBld2tfc2V0
dGluZ3NfcHJpdmF0ZV9oCi0jZGVmaW5lIGV3a19zZXR0aW5nc19wcml2YXRlX2gKLQotY29uc3Qg
Y2hhciogZXdrX3NldHRpbmdzX2RlZmF1bHRfdXNlcl9hZ2VudF9nZXQoKTsKLQotdm9pZCBld2tf
c2V0dGluZ3NfZmlsZV9zeXN0ZW1fcGF0aF9zZXQoY29uc3QgY2hhciAqcGF0aCk7Ci0KLSNlbmRp
ZiAvLyBld2tfc2V0dGluZ3NfcHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX3RvdWNoX2V2ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdG91
Y2hfZXZlbnQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZWIxZDM5Li4wMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdG91Y2hfZXZlbnQuY3BwCisrKyAv
ZGV2L251bGwKQEAgLTEsMTE4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ft
c3VuZyBFbGVjdHJvbmljcwotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIEVOQUJM
RShUT1VDSF9FVkVOVFMpCi0KLSNpbmNsdWRlICJQbGF0Zm9ybVRvdWNoUG9pbnQuaCIKLSNpbmNs
dWRlICJld2tfdG91Y2hfZXZlbnRfcHJpdmF0ZS5oIgotI2luY2x1ZGUgPEVjb3JlX0lucHV0Lmg+
Ci0jaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+Ci0KLWNsYXNzIFdlYktpdFBsYXRmb3JtVG91
Y2hQb2ludCA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybVRvdWNoUG9pbnQgewotcHVibGljOgot
ICAgIFdlYktpdFBsYXRmb3JtVG91Y2hQb2ludCh1bnNpZ25lZCBpZCwgY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmIHdpbmRvd1BvcywgV2ViQ29yZTo6UGxhdGZvcm1Ub3VjaFBvaW50OjpTdGF0ZSBz
dGF0ZSkKLSAgICB7Ci0gICAgICAgIG1faWQgPSBpZDsKLSAgICAgICAgbV9zdGF0ZSA9IHN0YXRl
OwotICAgICAgICBtX3NjcmVlblBvcyA9IHdpbmRvd1BvczsKLSAgICAgICAgbV9wb3MgPSB3aW5k
b3dQb3M7Ci0gICAgfQotfTsKLQotaW5saW5lIHN0YXRpYyBXZWJDb3JlOjpQbGF0Zm9ybVRvdWNo
UG9pbnQ6OlN0YXRlIHRvUGxhdGZvcm1Ub3VjaFBvaW50U3RhdGUoRXZhc19Ub3VjaF9Qb2ludF9T
dGF0ZSB0eXBlKQotewotICAgIHN3aXRjaCAodHlwZSkgewotICAgIGNhc2UgRVZBU19UT1VDSF9Q
T0lOVF9VUDoKLSAgICAgICAgcmV0dXJuIFdlYkNvcmU6OlBsYXRmb3JtVG91Y2hQb2ludDo6VG91
Y2hSZWxlYXNlZDsKLSAgICBjYXNlIEVWQVNfVE9VQ0hfUE9JTlRfRE9XTjoKLSAgICAgICAgcmV0
dXJuIFdlYkNvcmU6OlBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hQcmVzc2VkOwotICAgIGNhc2Ug
RVZBU19UT1VDSF9QT0lOVF9NT1ZFOgotICAgICAgICByZXR1cm4gV2ViQ29yZTo6UGxhdGZvcm1U
b3VjaFBvaW50OjpUb3VjaE1vdmVkOwotICAgIGNhc2UgRVZBU19UT1VDSF9QT0lOVF9TVElMTDoK
LSAgICAgICAgcmV0dXJuIFdlYkNvcmU6OlBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hTdGF0aW9u
YXJ5OwotICAgIGNhc2UgRVZBU19UT1VDSF9QT0lOVF9DQU5DRUw6Ci0gICAgICAgIHJldHVybiBX
ZWJDb3JlOjpQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoQ2FuY2VsbGVkOwotICAgIH0KLQotICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotCi0gICAgcmV0dXJuIFdlYkNvcmU6OlBsYXRmb3JtVG91
Y2hQb2ludDo6VG91Y2hDYW5jZWxsZWQ7Ci19Ci0KLWNsYXNzIFdlYktpdFBsYXRmb3JtVG91Y2hF
dmVudCA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybVRvdWNoRXZlbnQgewotcHVibGljOgotICAg
IFdlYktpdFBsYXRmb3JtVG91Y2hFdmVudChjb25zdCBFaW5hX0xpc3QqIHBvaW50cywgY29uc3Qg
V2ViQ29yZTo6SW50UG9pbnQmIHBvcywgRXdrX1RvdWNoX0V2ZW50X1R5cGUgYWN0aW9uLCB1bnNp
Z25lZCBtb2RpZmllcnMpCi0gICAgewotICAgICAgICBzd2l0Y2ggKGFjdGlvbikgewotICAgICAg
ICBjYXNlIEVXS19UT1VDSF9TVEFSVDoKLSAgICAgICAgICAgIG1fdHlwZSA9IFdlYkNvcmU6OlBs
YXRmb3JtRXZlbnQ6OlRvdWNoU3RhcnQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2Fz
ZSBFV0tfVE9VQ0hfTU9WRToKLSAgICAgICAgICAgIG1fdHlwZSA9IFdlYkNvcmU6OlBsYXRmb3Jt
RXZlbnQ6OlRvdWNoTW92ZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEVXS19U
T1VDSF9FTkQ6Ci0gICAgICAgICAgICBtX3R5cGUgPSBXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjpU
b3VjaEVuZDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEVXS19UT1VDSF9DQU5D
RUw6Ci0gICAgICAgICAgICBtX3R5cGUgPSBXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjpUb3VjaENh
bmNlbDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCi0g
ICAgICAgIGlmIChtb2RpZmllcnMgJiBFQ09SRV9FVkVOVF9NT0RJRklFUl9BTFQpCi0gICAgICAg
ICAgICBtX21vZGlmaWVycyB8PSBXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjpBbHRLZXk7Ci0gICAg
ICAgIGlmIChtb2RpZmllcnMgJiBFQ09SRV9FVkVOVF9NT0RJRklFUl9DVFJMKQotICAgICAgICAg
ICAgbV9tb2RpZmllcnMgfD0gV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6Q3RybEtleTsKLSAgICAg
ICAgaWYgKG1vZGlmaWVycyAmIEVDT1JFX0VWRU5UX01PRElGSUVSX1NISUZUKQotICAgICAgICAg
ICAgbV9tb2RpZmllcnMgfD0gV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6U2hpZnRLZXk7Ci0gICAg
ICAgIGlmIChtb2RpZmllcnMgJiBFQ09SRV9FVkVOVF9NT0RJRklFUl9XSU4pCi0gICAgICAgICAg
ICBtX21vZGlmaWVycyB8PSBXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjpNZXRhS2V5OwotCi0gICAg
ICAgIG1fdGltZXN0YW1wID0gY3VycmVudFRpbWUoKTsKLQotICAgICAgICBjb25zdCBFaW5hX0xp
c3QqIGxpc3Q7Ci0gICAgICAgIHZvaWQqIGl0ZW07Ci0gICAgICAgIEVJTkFfTElTVF9GT1JFQUNI
KHBvaW50cywgbGlzdCwgaXRlbSkgewotICAgICAgICAgICAgRXdrX1RvdWNoX1BvaW50KiBwb2lu
dCA9IHN0YXRpY19jYXN0PEV3a19Ub3VjaF9Qb2ludCo+KGl0ZW0pOwotICAgICAgICAgICAgV2Vi
Q29yZTo6SW50UG9pbnQgcG50ID0gV2ViQ29yZTo6SW50UG9pbnQocG9pbnQtPnggLSBwb3MueCgp
LCBwb2ludC0+eSAtIHBvcy55KCkpOwotICAgICAgICAgICAgbV90b3VjaFBvaW50cy5hcHBlbmQo
V2ViS2l0UGxhdGZvcm1Ub3VjaFBvaW50KHBvaW50LT5pZCwgcG50LCB0b1BsYXRmb3JtVG91Y2hQ
b2ludFN0YXRlKHBvaW50LT5zdGF0ZSkpKTsKLSAgICAgICAgfQotICAgIH0KLX07Ci0KLW5hbWVz
cGFjZSBFV0tQcml2YXRlIHsKLQotV2ViQ29yZTo6UGxhdGZvcm1Ub3VjaEV2ZW50IHBsYXRmb3Jt
VG91Y2hFdmVudChFdmFzX0Nvb3JkIHgsIEV2YXNfQ29vcmQgeSwgRWluYV9MaXN0KiBwb2ludHMs
IEV3a19Ub3VjaF9FdmVudF9UeXBlIGFjdGlvbiwgdW5zaWduZWQgbW9kaWZpZXJzKQotewotICAg
IHJldHVybiBXZWJLaXRQbGF0Zm9ybVRvdWNoRXZlbnQocG9pbnRzLCBXZWJDb3JlOjpJbnRQb2lu
dCh4LCB5KSwgYWN0aW9uLCBtb2RpZmllcnMpOwotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUo
VE9VQ0hfRVZFTlRTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a190b3Vj
aF9ldmVudF9wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3RvdWNoX2V2ZW50
X3ByaXZhdGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDc3NzhiZi4uMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3RvdWNoX2V2ZW50X3ByaXZhdGUuaAor
KysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIg
U2Ftc3VuZyBFbGVjdHJvbmljcwotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgZXdrX3RvdWNoX2V2ZW50X3ByaXZh
dGVfaAotI2RlZmluZSBld2tfdG91Y2hfZXZlbnRfcHJpdmF0ZV9oCi0KLSNpZiBFTkFCTEUoVE9V
Q0hfRVZFTlRTKQotCi0jaW5jbHVkZSAiUGxhdGZvcm1Ub3VjaEV2ZW50LmgiCi0jaW5jbHVkZSAi
ZXdrX2ZyYW1lLmgiCi0KLW5hbWVzcGFjZSBFV0tQcml2YXRlIHsKLVdlYkNvcmU6OlBsYXRmb3Jt
VG91Y2hFdmVudCBwbGF0Zm9ybVRvdWNoRXZlbnQoRXZhc19Db29yZCB4LCBFdmFzX0Nvb3JkIHks
IEVpbmFfTGlzdCogcG9pbnRzLCBFd2tfVG91Y2hfRXZlbnRfVHlwZSBhY3Rpb24sIHVuc2lnbmVk
IG1vZGlmaWVycyk7Ci19IC8vIG5hbWVzcGFjZSBFV0tQcml2YXRlCi0KLSNlbmRpZiAvLyBFTkFC
TEUoVE9VQ0hfRVZFTlRTKQotCi0jZW5kaWYgLy8gZXdrX3RvdWNoX2V2ZW50X3ByaXZhdGVfaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGJlYTU2YTEuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNw
cAorKysgL2Rldi9udWxsCkBAIC0xLDQzMjAgKzAsMCBAQAotLyoKLSAgICBDb3B5cmlnaHQgKEMp
IDIwMDktMjAxMCBQcm9GVVNJT04gZW1iZWRkZWQgc3lzdGVtcwotICAgIENvcHlyaWdodCAoQykg
MjAwOS0yMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKLSAgICBDb3B5cmlnaHQgKEMpIDIwMTIgSW50
ZWwgQ29ycG9yYXRpb24KLSAgICBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gICAgTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gICAgdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgot
Ci0gICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICAgIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0gICAgWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZQotICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIu
ICBJZiBub3QsIHdyaXRlIHRvCi0gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAgICBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KLSovCi0KLSNkZWZpbmUgX19TVERDX0ZPUk1BVF9NQUNST1MKLSNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJld2tfdmlldy5oIgotCi0jaW5jbHVkZSAiQWNjZWxlcmF0
ZWRDb21wb3NpdGluZ0NvbnRleHRFZmwuaCIKLSNpbmNsdWRlICJCYWNrRm9yd2FyZENvbnRyb2xs
ZXIuaCIKLSNpbmNsdWRlICJCYWNrRm9yd2FyZExpc3QuaCIKLSNpbmNsdWRlICJCcmlkZ2UuaCIK
LSNpbmNsdWRlICJDaHJvbWUuaCIKLSNpbmNsdWRlICJDaHJvbWVDbGllbnRFZmwuaCIKLSNpbmNs
dWRlICJDb250ZXh0TWVudUNsaWVudEVmbC5oIgotI2luY2x1ZGUgIkNvbnRleHRNZW51Q29udHJv
bGxlci5oIgotI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCi0jaW5jbHVkZSAiRHJhZ0NsaWVu
dEVmbC5oIgotI2luY2x1ZGUgIkR1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5oIgotI2luY2x1ZGUg
IkVkaXRvci5oIgotI2luY2x1ZGUgIkVkaXRvckNsaWVudEVmbC5oIgotI2luY2x1ZGUgIkVmbFNj
cmVlblV0aWxpdGllcy5oIgotI2luY2x1ZGUgIkV2ZW50SGFuZGxlci5oIgotI2luY2x1ZGUgIkZv
Y3VzQ29udHJvbGxlci5oIgotI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50RWZsLmgiCi0jaW5j
bHVkZSAiRnJhbWVTZWxlY3Rpb24uaCIKLSNpbmNsdWRlICJGcmFtZVZpZXcuaCIKLSNpbmNsdWRl
ICJHcmFwaGljc0NvbnRleHQuaCIKLSNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgotI2luY2x1ZGUg
IkhUTUxJbnB1dEVsZW1lbnQuaCIKLSNpbmNsdWRlICJIVE1MTmFtZXMuaCIKLSNpbmNsdWRlICJJ
bnNwZWN0b3JDbGllbnRFZmwuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCi0j
aW5jbHVkZSAiSW50U2l6ZS5oIgotI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgotI2luY2x1ZGUg
IkpTRE9NV2luZG93LmgiCi0jaW5jbHVkZSAiSlNMb2NrLmgiCi0jaW5jbHVkZSAiTWFpbkZyYW1l
LmgiCi0jaW5jbHVkZSAiTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgiCi0jaW5jbHVkZSAiT3BlcmF0
aW9ucy5oIgotI2luY2x1ZGUgIlBhZ2VHcm91cC5oIgotI2luY2x1ZGUgIlBsYXRmb3JtTW91c2VF
dmVudC5oIgotI2luY2x1ZGUgIlBvcHVwTWVudUNsaWVudC5oIgotI2luY2x1ZGUgIlByb2dyZXNz
VHJhY2tlci5oIgotI2luY2x1ZGUgIlByb2dyZXNzVHJhY2tlckNsaWVudEVmbC5oIgotI2luY2x1
ZGUgIlJlZlB0ckNhaXJvLmgiCi0jaW5jbHVkZSAiUmVuZGVyVGhlbWVFZmwuaCIKLSNpbmNsdWRl
ICJSZXNvdXJjZUhhbmRsZS5oIgotI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIK
LSNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCi0jaW5jbHVkZSAiU2Vzc2lvbklELmgiCi0j
aW5jbHVkZSAiU2V0dGluZ3MuaCIKLSNpbmNsdWRlICJTb3VwTmV0d29ya1Nlc3Npb24uaCIKLSNp
bmNsdWRlICJjX2luc3RhbmNlLmgiCi0jaW5jbHVkZSAiZXdrX2NvbnRleHRtZW51X3ByaXZhdGUu
aCIKLSNpbmNsdWRlICJld2tfZnJhbWUuaCIKLSNpbmNsdWRlICJld2tfZnJhbWVfcHJpdmF0ZS5o
IgotI2luY2x1ZGUgImV3a19oaXN0b3J5X3ByaXZhdGUuaCIKLSNpbmNsdWRlICJld2tfanNfcHJp
dmF0ZS5oIgotI2luY2x1ZGUgImV3a19wcml2YXRlLmgiCi0jaW5jbHVkZSAiZXdrX3NldHRpbmdz
X3ByaXZhdGUuaCIKLSNpbmNsdWRlICJld2tfdmlld19wcml2YXRlLmgiCi0jaW5jbHVkZSAiZXdr
X3dpbmRvd19mZWF0dXJlc19wcml2YXRlLmgiCi0jaW5jbHVkZSA8RWNvcmUuaD4KLSNpbmNsdWRl
IDxFY29yZV9FdmFzLmg+Ci0jaW5jbHVkZSA8RWRqZS5oPgotI2luY2x1ZGUgPEVpbmEuaD4KLSNp
bmNsdWRlIDxFdmFzLmg+Ci0jaW5jbHVkZSA8ZWluYV9zYWZldHlfY2hlY2tzLmg+Ci0jaW5jbHVk
ZSA8aW50dHlwZXMuaD4KLSNpbmNsdWRlIDxsaW1pdHM+Ci0jaW5jbHVkZSA8bWF0aC5oPgotI2lu
Y2x1ZGUgPHN5cy90aW1lLmg+Ci0KLSNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKQotI2lu
Y2x1ZGUgIkRldmljZU1vdGlvbkNsaWVudEVmbC5oIgotI2luY2x1ZGUgIkRldmljZU9yaWVudGF0
aW9uQ2xpZW50RWZsLmgiCi0jZW5kaWYKLQotI2lmIEVOQUJMRShHRU9MT0NBVElPTikKLSNpbmNs
dWRlICJHZW9sb2NhdGlvbkNsaWVudE1vY2suaCIKLSNpbmNsdWRlICJHZW9sb2NhdGlvbkNvbnRy
b2xsZXIuaCIKLSNlbmRpZgotCi0jaWYgRU5BQkxFKFZJQlJBVElPTikKLSNpbmNsdWRlICJWaWJy
YXRpb25DbGllbnRFZmwuaCIKLSNlbmRpZgotCi0jaWYgRU5BQkxFKEJBVFRFUllfU1RBVFVTKQot
I2luY2x1ZGUgIkJhdHRlcnlDbGllbnRFZmwuaCIKLSNlbmRpZgotCi0jaWYgRU5BQkxFKElOUFVU
X1RZUEVfQ09MT1IpCi0jaW5jbHVkZSAiQ29sb3JDaG9vc2VyQ2xpZW50LmgiCi0jZW5kaWYKLQot
I2lmIEVOQUJMRShOQVZJR0FUT1JfQ09OVEVOVF9VVElMUykKLSNpbmNsdWRlICJOYXZpZ2F0b3JD
b250ZW50VXRpbHNDbGllbnRFZmwuaCIKLSNlbmRpZgotCi1zdGF0aWMgY29uc3QgZmxvYXQgem9v
bU1pbmltdW0gPSAwLjA1Owotc3RhdGljIGNvbnN0IGZsb2F0IHpvb21NYXhpbXVtID0gNC4wOwot
Ci1zdGF0aWMgY29uc3QgY2hhciBld2tWaWV3VHlwZVN0cmluZ1tdID0gIkVXS19WaWV3IjsKLQot
c3RhdGljIGNvbnN0IHNpemVfdCBld2tWaWV3UmVwYWludHNTaXplSW5pdGlhbCA9IDMyOwotc3Rh
dGljIGNvbnN0IHNpemVfdCBld2tWaWV3UmVwYWludHNTaXplU3RlcCA9IDg7Ci1zdGF0aWMgY29u
c3Qgc2l6ZV90IGV3a1ZpZXdSZXBhaW50c1NpemVNYXhpbXVtRnJlZSA9IDY0OwotCi1zdGF0aWMg
Y29uc3QgRXZhc19TbWFydF9DYl9EZXNjcmlwdGlvbiBfZXdrX3ZpZXdfY2FsbGJhY2tfbmFtZXNb
XSA9IHsKLSAgICB7ICJjb2xvcmNob29zZXIsY3JlYXRlIiwgIih5eXl5KSIgfSwKLSAgICB7ICJj
b2xvcmNob29zZXIsd2lsbGRlbGV0ZSIsICIiIH0sCi0gICAgeyAiY29sb3JjaG9vc2VyLGNvbG9y
LGNoYW5nZWQiLCAiKHl5eXkpIiB9LAotICAgIHsgImRvd25sb2FkLHJlcXVlc3QiLCAicCIgfSwK
LSAgICB7ICJlZGl0b3JjbGllbnQsY29udGVudHMsY2hhbmdlZCIsICIiIH0sCi0gICAgeyAiZWRp
dG9yY2xpZW50LHNlbGVjdGlvbixjaGFuZ2VkIiwgIiIgfSwKLSAgICB7ICJmcmFtZSxjcmVhdGVk
IiwgInAiIH0sCi0gICAgeyAiaWNvbixyZWNlaXZlZCIsICIiIH0sCi0gICAgeyAiaW5wdXRtZXRo
b2QsY2hhbmdlZCIsICJiIiB9LAotICAgIHsgImpzLHdpbmRvd29iamVjdCxjbGVhciIsICIiIH0s
Ci0gICAgeyAibGluayxob3ZlcixpbiIsICJwIiB9LAotICAgIHsgImxpbmssaG92ZXIsb3V0Iiwg
IiIgfSwKLSAgICB7ICJsb2FkLGRvY3VtZW50LGZpbmlzaGVkIiwgInAiIH0sCi0gICAgeyAibG9h
ZCxlcnJvciIsICJwIiB9LAotICAgIHsgImxvYWQsZmluaXNoZWQiLCAicCIgfSwKLSAgICB7ICJs
b2FkLG5ld3dpbmRvdyxzaG93IiwgIiIgfSwKLSAgICB7ICJsb2FkLHByb2dyZXNzIiwgImQiIH0s
Ci0gICAgeyAibG9hZCxwcm92aXNpb25hbCIsICIiIH0sCi0gICAgeyAibG9hZCxzdGFydGVkIiwg
IiIgfSwKLSAgICB7ICJtZW51YmFyLHZpc2libGUsZ2V0IiwgImIiIH0sCi0gICAgeyAibWVudWJh
cix2aXNpYmxlLHNldCIsICJiIiB9LAotICAgIHsgInBvcHVwLGNyZWF0ZWQiLCAicCIgfSwKLSAg
ICB7ICJwb3B1cCx3aWxsZGVsZXRlIiwgInAiIH0sCi0gICAgeyAicmVhZHkiLCAiIiB9LAotICAg
IHsgInNjcm9sbGJhcnMsdmlzaWJsZSxnZXQiLCAiYiIgfSwKLSAgICB7ICJzY3JvbGxiYXJzLHZp
c2libGUsc2V0IiwgImIiIH0sCi0gICAgeyAic3RhdHVzYmFyLHRleHQsc2V0IiwgInMiIH0sCi0g
ICAgeyAic3RhdHVzYmFyLHZpc2libGUsZ2V0IiwgImIiIH0sCi0gICAgeyAic3RhdHVzYmFyLHZp
c2libGUsc2V0IiwgImIiIH0sCi0gICAgeyAidGl0bGUsY2hhbmdlZCIsICJzIiB9LAotICAgIHsg
InRvb2xiYXJzLHZpc2libGUsZ2V0IiwgImIiIH0sCi0gICAgeyAidG9vbGJhcnMsdmlzaWJsZSxz
ZXQiLCAiYiIgfSwKLSAgICB7ICJ0b29sdGlwLHRleHQsc2V0IiwgInMiIH0sCi0gICAgeyAidG9v
bHRpcCx0ZXh0LHVuc2V0IiwgInMiIH0sCi0gICAgeyAidXJpLGNoYW5nZWQiLCAicyIgfSwKLSAg
ICB7ICJ2aWV3LHJlc2l6ZWQiLCAiIiB9LAotICAgIHsgInpvb20sYW5pbWF0ZWQsZW5kIiwgIiIg
fSwKLSAgICB7IDAsIDAgfQotfTsKLQotc3RydWN0IEVkaXRvckNvbW1hbmQgewotICAgIEV3a19F
ZGl0b3JfQ29tbWFuZCBld2tFZGl0b3JDb21tYW5kOwotICAgIGNvbnN0IGNoYXIqIGVkaXRvckNv
bW1hbmRTdHJpbmc7Ci19OwotCi0vKioKLSAqIEBicmllZiBBIHRhYmxlIGdyb3VwaW5nIEV3a19F
ZGl0b3JfQ29tbWFuZCBlbnVtcyB3aXRoIGNvcnJlc3BvbmRpbmcgY29tbWFuZAotICogc3RyaW5n
cyB1c2VkIGJ5IFdlYkNvcmU6OkVkaXRvckNvbW1hbmQsIGtlZXBpbmcgYm90aCBpbiBzeW5jLgot
ICoKLSAqIEBpbnRlcm5hbAotICovCi1zdGF0aWMgY29uc3QgRWRpdG9yQ29tbWFuZCBlZGl0b3JD
b21tYW5kc1tdID0gewotICAgIHsgRVdLX0VESVRPUl9DT01NQU5EX1VORE8sICJVbmRvIiB9LAot
ICAgIHsgRVdLX0VESVRPUl9DT01NQU5EX1JFRE8sICJSZWRvIiB9LAotICAgIHsgRVdLX0VESVRP
Ul9DT01NQU5EX1RPR0dMRV9CT0xELCAiVG9nZ2xlQm9sZCIgfSwKLSAgICB7IEVXS19FRElUT1Jf
Q09NTUFORF9UT0dHTEVfSVRBTElDLCAiVG9nZ2xlSXRhbGljIiB9LAotICAgIHsgRVdLX0VESVRP
Ul9DT01NQU5EX1RPR0dMRV9VTkRFUkxJTkUsICJUb2dnbGVVbmRlcmxpbmUiIH0sCi0gICAgeyBF
V0tfRURJVE9SX0NPTU1BTkRfVE9HR0xFX1NUUklLRVRIUk9VR0gsICJTdHJpa2V0aHJvdWdoIiB9
LAotICAgIHsgRVdLX0VESVRPUl9DT01NQU5EX1RPR0dMRV9TVUJTQ1JJUFQsICJTdWJTY3JpcHQi
IH0sCi0gICAgeyBFV0tfRURJVE9SX0NPTU1BTkRfVE9HR0xFX1NVUEVSU0NSSVBULCAiU3VwZXJT
Y3JpcHQiIH0sCi0gICAgeyBFV0tfRURJVE9SX0NPTU1BTkRfSU5ERU5ULCAiSW5kZW50IiB9LAot
ICAgIHsgRVdLX0VESVRPUl9DT01NQU5EX09VVERFTlQsICJPdXRkZW50IiB9LAotICAgIHsgRVdL
X0VESVRPUl9DT01NQU5EX0lOU0VSVF9PUkRFUkVETElTVCwgIkluc2VydE9yZGVyZWRMaXN0IiB9
LAotICAgIHsgRVdLX0VESVRPUl9DT01NQU5EX0lOU0VSVF9VTk9SREVSRURMSVNULCAiSW5zZXJ0
VW5vcmRlcmVkTGlzdCIgfSwKLSAgICB7IEVXS19FRElUT1JfQ09NTUFORF9JTlNFUlRfSU1BR0Us
ICJJbnNlcnRJbWFnZSIgfSwKLSAgICB7IEVXS19FRElUT1JfQ09NTUFORF9JTlNFUlRfVEVYVCwg
Ikluc2VydFRleHQiIH0sCi0gICAgeyBFV0tfRURJVE9SX0NPTU1BTkRfSU5TRVJUX0hUTUwsICJJ
bnNlcnRIVE1MIiB9LAotICAgIHsgRVdLX0VESVRPUl9DT01NQU5EX0lOU0VSVF9QQVJBR1JBUEgs
ICJJbnNlcnRQYXJhZ3JhcGgiIH0sCi0gICAgeyBFV0tfRURJVE9SX0NPTU1BTkRfSU5TRVJUX1BB
UkFHUkFQSF9TRVBBUkFUT1IsICJJbnNlcnROZXdMaW5lIiB9LAotICAgIHsgRVdLX0VESVRPUl9D
T01NQU5EX0lOU0VSVF9MSU5FX1NFUEFSQVRPUiwgIkluc2VydExpbmVCcmVhayIgfSwKLSAgICB7
IEVXS19FRElUT1JfQ09NTUFORF9CQUNLX0NPTE9SLCAiQmFja0NvbG9yIiB9LAotICAgIHsgRVdL
X0VESVRPUl9DT01NQU5EX0ZPUkVfQ09MT1IsICJGb3JlQ29sb3IiIH0sCi0gICAgeyBFV0tfRURJ
VE9SX0NPTU1BTkRfSElMSVRFX0NPTE9SLCAiSGlsaXRlQ29sb3IiIH0sCi0gICAgeyBFV0tfRURJ
VE9SX0NPTU1BTkRfRk9OVF9TSVpFLCAiRm9udFNpemUiIH0sCi0gICAgeyBFV0tfRURJVE9SX0NP
TU1BTkRfQUxJR05fQ0VOVEVSLCAiQWxpZ25DZW50ZXIiIH0sCi0gICAgeyBFV0tfRURJVE9SX0NP
TU1BTkRfQUxJR05fSlVTVElGSUVELCAiQWxpZ25KdXN0aWZpZWQiIH0sCi0gICAgeyBFV0tfRURJ
VE9SX0NPTU1BTkRfQUxJR05fTEVGVCwgIkFsaWduTGVmdCIgfSwKLSAgICB7IEVXS19FRElUT1Jf
Q09NTUFORF9BTElHTl9SSUdIVCwgIkFsaWduUmlnaHQiIH0sCi0gICAgeyBFV0tfRURJVE9SX0NP
TU1BTkRfTU9WRV9UT19ORVhUX0NIQVIsICJNb3ZlRm9yd2FyZCIgfSwKLSAgICB7IEVXS19FRElU
T1JfQ09NTUFORF9NT1ZFX1RPX1BSRVZJT1VTX0NIQVIsICJNb3ZlQmFja3dhcmQiIH0sCi0gICAg
eyBFV0tfRURJVE9SX0NPTU1BTkRfTU9WRV9UT19ORVhUX1dPUkQsICJNb3ZlV29yZEZvcndhcmQi
IH0sCi0gICAgeyBFV0tfRURJVE9SX0NPTU1BTkRfTU9WRV9UT19QUkVWSU9VU19XT1JELCAiTW92
ZVdvcmRCYWNrd2FyZCIgfSwKLSAgICB7IEVXS19FRElUT1JfQ09NTUFORF9NT1ZFX1RPX05FWFRf
TElORSwgIk1vdmVEb3duIiB9LAotICAgIHsgRVdLX0VESVRPUl9DT01NQU5EX01PVkVfVE9fUFJF
VklPVVNfTElORSwgIk1vdmVVcCIgfSwKLSAgICB7IEVXS19FRElUT1JfQ09NTUFORF9NT1ZFX1RP
X0JFR0lOTklOR19PRl9MSU5FLCAiTW92ZVRvQmVnaW5uaW5nT2ZMaW5lIiB9LAotICAgIHsgRVdL
X0VESVRPUl9DT01NQU5EX01PVkVfVE9fRU5EX09GX0xJTkUsICJNb3ZlVG9FbmRPZkxpbmUiIH0s
Ci0gICAgeyBFV0tfRURJVE9SX0NPTU1BTkRfTU9WRV9UT19CRUdJTk5JTkdfT0ZfUEFSQUdSQVBI
LCAiTW92ZVRvQmVnaW5uaW5nT2ZQYXJhZ3JhcGgiIH0sCi0gICAgeyBFV0tfRURJVE9SX0NPTU1B
TkRfTU9WRV9UT19FTkRfT0ZfUEFSQUdSQVBILCAiTW92ZVRvRW5kT2ZQYXJhZ3JhcGgiIH0sCi0g
ICAgeyBFV0tfRURJVE9SX0NPTU1BTkRfTU9WRV9UT19CRUdJTk5JTkdfT0ZfRE9DVU1FTlQsICJN
b3ZlVG9CZWdpbm5pbmdPZkRvY3VtZW50IiB9LAotICAgIHsgRVdLX0VESVRPUl9DT01NQU5EX01P
VkVfVE9fRU5EX09GX0RPQ1VNRU5ULCAiTW92ZVRvRW5kT2ZEb2N1bWVudCIgfSwKLSAgICB7IEVX
S19FRElUT1JfQ09NTUFORF9TRUxFQ1RfTk9ORSwgIlNlbGVjdE5vbmUiIH0sCi0gICAgeyBFV0tf
RURJVE9SX0NPTU1BTkRfU0VMRUNUX0FMTCwgIlNlbGVjdEFsbCIgfSwKLSAgICB7IEVXS19FRElU
T1JfQ09NTUFORF9TRUxFQ1RfUEFSQUdSQVBILCAiU2VsZWN0UGFyYWdyYXBoIiB9LAotICAgIHsg
RVdLX0VESVRPUl9DT01NQU5EX1NFTEVDVF9TRU5URU5DRSwgIlNlbGVjdFNlbnRlbmNlIiB9LAot
ICAgIHsgRVdLX0VESVRPUl9DT01NQU5EX1NFTEVDVF9MSU5FLCAiU2VsZWN0TGluZSIgfSwKLSAg
ICB7IEVXS19FRElUT1JfQ09NTUFORF9TRUxFQ1RfV09SRCwgIlNlbGVjdFdvcmQiIH0sCi0gICAg
eyBFV0tfRURJVE9SX0NPTU1BTkRfU0VMRUNUX05FWFRfQ0hBUiwgIk1vdmVGb3J3YXJkQW5kTW9k
aWZ5U2VsZWN0aW9uIiB9LAotICAgIHsgRVdLX0VESVRPUl9DT01NQU5EX1NFTEVDVF9QUkVWSU9V
U19DSEFSLCAiTW92ZUJhY2t3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uIiB9LAotICAgIHsgRVdLX0VE
SVRPUl9DT01NQU5EX1NFTEVDVF9ORVhUX1dPUkQsICJNb3ZlV29yZEZvcndhcmRBbmRNb2RpZnlT
ZWxlY3Rpb24iIH0sCi0gICAgeyBFV0tfRURJVE9SX0NPTU1BTkRfU0VMRUNUX1BSRVZJT1VTX1dP
UkQsICJNb3ZlV29yZEJhY2t3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uIiB9LAotICAgIHsgRVdLX0VE
SVRPUl9DT01NQU5EX1NFTEVDVF9ORVhUX0xJTkUsICJNb3ZlRG93bkFuZE1vZGlmeVNlbGVjdGlv
biIgfSwKLSAgICB7IEVXS19FRElUT1JfQ09NTUFORF9TRUxFQ1RfUFJFVklPVVNfTElORSwgIk1v
dmVVcEFuZE1vZGlmeVNlbGVjdGlvbiIgfSwKLSAgICB7IEVXS19FRElUT1JfQ09NTUFORF9TRUxF
Q1RfU1RBUlRfT0ZfTElORSwgIk1vdmVUb0JlZ2lubmluZ09mTGluZUFuZE1vZGlmeVNlbGVjdGlv
biIgfSwKLSAgICB7IEVXS19FRElUT1JfQ09NTUFORF9TRUxFQ1RfRU5EX09GX0xJTkUsICJNb3Zl
VG9FbmRPZkxpbmVBbmRNb2RpZnlTZWxlY3Rpb24iIH0sCi0gICAgeyBFV0tfRURJVE9SX0NPTU1B
TkRfU0VMRUNUX1NUQVJUX09GX1BBUkFHUkFQSCwgIk1vdmVUb0JlZ2lubmluZ09mUGFyYWdyYXBo
QW5kTW9kaWZ5U2VsZWN0aW9uIiB9LAotICAgIHsgRVdLX0VESVRPUl9DT01NQU5EX1NFTEVDVF9F
TkRfT0ZfUEFSQUdSQVBILCAiTW92ZVRvRW5kT2ZQYXJhZ3JhcGhBbmRNb2RpZnlTZWxlY3Rpb24i
IH0sCi0gICAgeyBFV0tfRURJVE9SX0NPTU1BTkRfU0VMRUNUX1NUQVJUX09GX0RPQ1VNRU5ULCAi
TW92ZVRvQmVnaW5uaW5nT2ZEb2N1bWVudEFuZE1vZGlmeVNlbGVjdGlvbiIgfSwKLSAgICB7IEVX
S19FRElUT1JfQ09NTUFORF9TRUxFQ1RfRU5EX09GX0RPQ1VNRU5ULCAiTW92ZVRvRW5kT2ZEb2N1
bWVudEFuZE1vZGlmeVNlbGVjdGlvbiIgfSwKLSAgICB7IEVXS19FRElUT1JfQ09NTUFORF9ERUxF
VEVfV09SRF9CQUNLV0FSRCwgIkRlbGV0ZVdvcmRCYWNrd2FyZCIgfSwKLSAgICB7IEVXS19FRElU
T1JfQ09NTUFORF9ERUxFVEVfV09SRF9GT1JXQVJELCAiRGVsZXRlV29yZEZvcndhcmQiIH0sCi0g
ICAgeyBFV0tfRURJVE9SX0NPTU1BTkRfTk9ORSwgMCB9IC8vIEVXS19FRElUT1JfQ09NTUFORF9O
T05FIG11c3QgYmUgdGhlIGxhc3QgZWxlbWVudC4KLX07Ci0KLS8qKgotICogQGJyaWVmIFByaXZh
dGUgZGF0YSB0aGF0IGlzIHVzZWQgaW50ZXJuYWxseSBieSBFRkwgV2ViS2l0Ci0gKiBhbmQgc2hv
dWxkIG5ldmVyIGJlIG1vZGlmaWVkIGZyb20gb3V0c2lkZS4KLSAqCi0gKiBAaW50ZXJuYWwKLSAq
Lwotc3RydWN0IF9Fd2tfVmlld19Qcml2YXRlX0RhdGEgewotICAgIE93blB0cjxXZWJDb3JlOjpQ
YWdlPiBwYWdlOwotICAgIFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzIHZpZXdwb3J0QXJndW1l
bnRzOwotICAgIEV3a19IaXN0b3J5KiBoaXN0b3J5OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJD
b3JlOjpBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dD4gYWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0NvbnRleHQ7Ci0jaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCi0gICAgV2ViQ29yZTo6Q29s
b3JDaG9vc2VyQ2xpZW50KiBjb2xvckNob29zZXJDbGllbnQ7Ci0jZW5kaWYKLSAgICBzdHJ1Y3Qg
ewotICAgICAgICBFd2tfTWVudSBtZW51OwotICAgICAgICBXZWJDb3JlOjpQb3B1cE1lbnVDbGll
bnQqIG1lbnVDbGllbnQ7Ci0gICAgfSBwb3B1cDsKLSAgICB1bnNpZ25lZCBpbnQgaW1oOyAvKio8
IGlucHV0IG1ldGhvZCBoaW50cyAqLwotICAgIHN0cnVjdCB7Ci0gICAgICAgIGJvb2wgdmlld0Ns
ZWFyZWQgOiAxOwotICAgICAgICBib29sIG5lZWRUb3VjaEV2ZW50cyA6IDE7Ci0gICAgICAgIGJv
b2wgaGFzRGlzcGxheWVkTWl4ZWRDb250ZW50IDogMTsKLSAgICAgICAgYm9vbCBoYXNSdW5NaXhl
ZENvbnRlbnQgOiAxOwotICAgIH0gZmxhZ3M7Ci0gICAgc3RydWN0IHsKLSAgICAgICAgY29uc3Qg
Y2hhciogdXNlckFnZW50OwotICAgICAgICBjb25zdCBjaGFyKiB1c2VyU3R5bGVzaGVldDsKLSAg
ICAgICAgY29uc3QgY2hhciogZW5jb2RpbmdEZWZhdWx0OwotICAgICAgICBjb25zdCBjaGFyKiBl
bmNvZGluZ0N1c3RvbTsKLSAgICAgICAgY29uc3QgY2hhciogdGhlbWU7Ci0gICAgICAgIGNvbnN0
IGNoYXIqIGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aDsKLSAgICAgICAgaW50IGZvbnRNaW5pbXVt
U2l6ZTsKLSAgICAgICAgaW50IGZvbnRNaW5pbXVtTG9naWNhbFNpemU7Ci0gICAgICAgIGludCBm
b250RGVmYXVsdFNpemU7Ci0gICAgICAgIGludCBmb250TW9ub3NwYWNlU2l6ZTsKLSAgICAgICAg
Y29uc3QgY2hhciogZm9udFN0YW5kYXJkOwotICAgICAgICBjb25zdCBjaGFyKiBmb250Q3Vyc2l2
ZTsKLSAgICAgICAgY29uc3QgY2hhciogZm9udE1vbm9zcGFjZTsKLSAgICAgICAgY29uc3QgY2hh
ciogZm9udEZhbnRhc3k7Ci0gICAgICAgIGNvbnN0IGNoYXIqIGZvbnRTZXJpZjsKLSAgICAgICAg
Y29uc3QgY2hhciogZm9udFNhbnNTZXJpZjsKLSAgICAgICAgYm9vbCBhdXRvTG9hZEltYWdlcyA6
IDE7Ci0gICAgICAgIGJvb2wgYXV0b1Nocmlua0ltYWdlcyA6IDE7Ci0gICAgICAgIGJvb2wgZW5h
YmxlQXV0b1Jlc2l6ZVdpbmRvdyA6IDE7Ci0gICAgICAgIGJvb2wgZW5hYmxlRGV2ZWxvcGVyRXh0
cmFzIDogMTsKLSAgICAgICAgYm9vbCBlbmFibGVTY3JpcHRzIDogMTsKLSAgICAgICAgYm9vbCBl
bmFibGVQbHVnaW5zIDogMTsKLSAgICAgICAgYm9vbCBlbmFibGVGcmFtZUZsYXR0ZW5pbmcgOiAx
OwotI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKLSAgICAgICAgYm9vbCBlbmFibGVGdWxsc2Ny
ZWVuIDogMTsKLSNlbmRpZgotICAgICAgICBib29sIGVuY29kaW5nRGV0ZWN0b3IgOiAxOwotICAg
ICAgICBib29sIGh5cGVybGlua0F1ZGl0aW5nRW5hYmxlZCA6IDE7Ci0gICAgICAgIGJvb2wgc2Ny
aXB0c0Nhbk9wZW5XaW5kb3dzIDogMTsKLSAgICAgICAgYm9vbCBzY3JpcHRzQ2FuQ2xvc2VXaW5k
b3dzIDogMTsKLSNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi0gICAgICAgIGJvb2wgc2hvdWxkRGlz
cGxheUNhcHRpb25zIDogMTsKLSAgICAgICAgYm9vbCBzaG91bGREaXNwbGF5U3VidGl0bGVzIDog
MTsKLSAgICAgICAgYm9vbCBzaG91bGREaXNwbGF5VGV4dERlc2NyaXB0aW9uczogMTsKLSNlbmRp
ZgotICAgICAgICBib29sIHNjcmlwdHNDYW5BY2Nlc3NDbGlwYm9hcmQgOiAxOwotICAgICAgICBi
b29sIHJlc2l6YWJsZVRleHRhcmVhcyA6IDE7Ci0gICAgICAgIGJvb2wgcHJpdmF0ZUJyb3dzaW5n
IDogMTsKLSAgICAgICAgYm9vbCBjYXJldEJyb3dzaW5nIDogMTsKLSAgICAgICAgYm9vbCBzcGF0
aWFsTmF2aWdhdGlvbiA6IDE7Ci0gICAgICAgIGJvb2wgbG9jYWxTdG9yYWdlIDogMTsKLSAgICAg
ICAgYm9vbCBvZmZsaW5lQXBwQ2FjaGUgOiAxOwotICAgICAgICBib29sIHBhZ2VDYWNoZSA6IDE7
Ci0gICAgICAgIGJvb2wgZW5hYmxlWFNTQXVkaXRvciA6IDE7Ci0gICAgICAgIGJvb2wgd2ViR0xF
bmFibGVkIDogMTsKLSAgICAgICAgYm9vbCB0YWJzVG9MaW5rcyA6IDE7Ci0gICAgICAgIHN0cnVj
dCB7Ci0gICAgICAgICAgICBmbG9hdCBtaW5TY2FsZTsKLSAgICAgICAgICAgIGZsb2F0IG1heFNj
YWxlOwotICAgICAgICAgICAgRWluYV9Cb29sIHVzZXJTY2FsYWJsZSA6IDE7Ci0gICAgICAgIH0g
em9vbVJhbmdlOwotICAgICAgICBkb3VibGUgZG9tVGltZXJJbnRlcnZhbDsKLSAgICAgICAgYm9v
bCBhbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMcyA6IDE7Ci0gICAgICAgIGJvb2wgYWxs
b3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzIDogMTsKLSAgICB9IHNldHRpbmdzOwotICAgIHN0cnVj
dCB7Ci0gICAgICAgIHN0cnVjdCB7Ci0gICAgICAgICAgICBkb3VibGUgc3RhcnQ7Ci0gICAgICAg
ICAgICBkb3VibGUgZW5kOwotICAgICAgICAgICAgZG91YmxlIGR1cmF0aW9uOwotICAgICAgICB9
IHRpbWU7Ci0gICAgICAgIHN0cnVjdCB7Ci0gICAgICAgICAgICBmbG9hdCBzdGFydDsKLSAgICAg
ICAgICAgIGZsb2F0IGVuZDsKLSAgICAgICAgICAgIGZsb2F0IHJhbmdlOwotICAgICAgICB9IHpv
b207Ci0gICAgICAgIHN0cnVjdCB7Ci0gICAgICAgICAgICBFdmFzX0Nvb3JkIHgsIHk7Ci0gICAg
ICAgIH0gY2VudGVyOwotICAgICAgICBFY29yZV9BbmltYXRvciogYW5pbWF0b3I7Ci0gICAgfSBh
bmltYXRlZFpvb207Ci0gICAgY29uc3QgY2hhciogY3Vyc29yR3JvdXA7Ci0gICAgRXZhc19PYmpl
Y3QqIGN1cnNvck9iamVjdDsKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIEV2YXNfT2JqZWN0
KiBpbnNwZWN0b3JWaWV3OwotI2VuZGlmCi0jaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi0gICAg
RXdrX0NvbnRleHRfTWVudSogY29udGV4dE1lbnU7Ci0jZW5kaWYKLX07Ci0KLSNpZm5kZWYgRVdL
X1RZUEVfQ0hFQ0sKLSNkZWZpbmUgRVdLX1ZJRVdfVFlQRV9DSEVDSyhld2tWaWV3LCAuLi4pIGRv
IHsgfSB3aGlsZSAoMCkKLSNlbHNlCi0jZGVmaW5lIEVXS19WSUVXX1RZUEVfQ0hFQ0soZXdrVmll
dywgLi4uKSBcCi0gICAgZG8geyBcCi0gICAgICAgIGNvbnN0IGNoYXIqIF90bXBfb3R5cGUgPSBl
dmFzX29iamVjdF90eXBlX2dldChld2tWaWV3KTsgXAotICAgICAgICBjb25zdCBFdmFzX1NtYXJ0
KiBfdG1wX3MgPSBldmFzX29iamVjdF9zbWFydF9zbWFydF9nZXQoZXdrVmlldyk7IFwKLSAgICAg
ICAgaWYgKEVJTkFfVU5MSUtFTFkoIV90bXBfcykpIHsgXAotICAgICAgICAgICAgRUlOQV9MT0df
Q1JJVCBcCi0gICAgICAgICAgICAgICAgKCIlcCAoJXMpIGlzIG5vdCBhIHNtYXJ0IG9iamVjdCEi
LCBld2tWaWV3LCBcCi0gICAgICAgICAgICAgICAgX3RtcF9vdHlwZSA/IF90bXBfb3R5cGUgOiAi
KG51bGwpIik7IFwKLSAgICAgICAgICAgIHJldHVybiBfX1ZBX0FSR1NfXzsgXAotICAgICAgICB9
IFwKLSAgICAgICAgY29uc3QgRXZhc19TbWFydF9DbGFzcyogX3RtcF9zYyA9IGV2YXNfc21hcnRf
Y2xhc3NfZ2V0KF90bXBfcyk7IFwKLSAgICAgICAgaWYgKEVJTkFfVU5MSUtFTFkoIV90bXBfc2Mp
KSB7IFwKLSAgICAgICAgICAgIEVJTkFfTE9HX0NSSVQgXAotICAgICAgICAgICAgICAgICgiJXAg
KCVzKSBpcyBub3QgYSBzbWFydCBvYmplY3QhIiwgZXdrVmlldywgXAotICAgICAgICAgICAgICAg
IF90bXBfb3R5cGUgPyBfdG1wX290eXBlIDogIihudWxsKSIpOyBcCi0gICAgICAgICAgICByZXR1
cm4gX19WQV9BUkdTX187IFwKLSAgICAgICAgfSBcCi0gICAgICAgIGlmIChFSU5BX1VOTElLRUxZ
KF90bXBfc2MtPmRhdGEgIT0gZXdrVmlld1R5cGVTdHJpbmcpKSB7IFwKLSAgICAgICAgICAgIEVJ
TkFfTE9HX0NSSVQgXAotICAgICAgICAgICAgICAgICgiJXAgKCVzKSBpcyBub3Qgb2YgYW4gZXdr
X3ZpZXcgKG5lZWQgJXAsIGdvdCAlcCkhIiwgXAotICAgICAgICAgICAgICAgIGV3a1ZpZXcsIF90
bXBfb3R5cGUgPyBfdG1wX290eXBlIDogIihudWxsKSIsIFwKLSAgICAgICAgICAgICAgICBld2tW
aWV3VHlwZVN0cmluZywgX3RtcF9zYy0+ZGF0YSk7IFwKLSAgICAgICAgICAgIHJldHVybiBfX1ZB
X0FSR1NfXzsgXAotICAgICAgICB9IFwKLSAgICB9IHdoaWxlICgwKQotI2VuZGlmCi0KLSNkZWZp
bmUgRVdLX1ZJRVdfU0RfR0VUKGV3a1ZpZXcsIHBvaW50ZXIpIFwKLSAgICBFd2tfVmlld19TbWFy
dF9EYXRhKiBwb2ludGVyID0gc3RhdGljX2Nhc3Q8RXdrX1ZpZXdfU21hcnRfRGF0YSo+KGV2YXNf
b2JqZWN0X3NtYXJ0X2RhdGFfZ2V0KGV3a1ZpZXcpKQotCi0jZGVmaW5lIEVXS19WSUVXX1NEX0dF
VF9PUl9SRVRVUk4oZXdrVmlldywgcG9pbnRlciwgLi4uKSBcCi0gICAgRVdLX1ZJRVdfVFlQRV9D
SEVDSyhld2tWaWV3LCBfX1ZBX0FSR1NfXyk7IFwKLSAgICBFV0tfVklFV19TRF9HRVQoZXdrVmll
dywgcG9pbnRlcik7IFwKLSAgICBpZiAoIXBvaW50ZXIpIHsgXAotICAgICAgICBDUklUSUNBTCgi
bm8gc21hcnQgZGF0YSBmb3Igb2JqZWN0ICVwICglcykiLCBcCi0gICAgICAgICAgICAgICAgIGV3
a1ZpZXcsIGV2YXNfb2JqZWN0X3R5cGVfZ2V0KGV3a1ZpZXcpKTsgXAotICAgICAgICByZXR1cm4g
X19WQV9BUkdTX187IFwKLSAgICB9Ci0KLSNkZWZpbmUgRVdLX1ZJRVdfUFJJVl9HRVQoc21hcnRE
YXRhLCBwb2ludGVyKSBcCi0gICAgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwb2ludGVyID0gc21h
cnREYXRhLT5fcHJpdgotCi0jZGVmaW5lIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFy
dERhdGEsIHBvaW50ZXIsIC4uLikgXAotICAgIEVXS19WSUVXX1BSSVZfR0VUKHNtYXJ0RGF0YSwg
cG9pbnRlcik7IFwKLSAgICBpZiAoIXBvaW50ZXIpIHsgXAotICAgICAgICBDUklUSUNBTCgibm8g
cHJpdmF0ZSBkYXRhIGZvciBvYmplY3QgJXAgKCVzKSIsIFwKLSAgICAgICAgICAgICAgICAgc21h
cnREYXRhLT5zZWxmLCBldmFzX29iamVjdF90eXBlX2dldChzbWFydERhdGEtPnNlbGYpKTsgXAot
ICAgICAgICByZXR1cm4gX19WQV9BUkdTX187IFwKLSAgICB9Ci0KLXN0YXRpYyB2b2lkIF9ld2tf
dmlld19zbWFydF9jaGFuZ2VkKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSkKLXsKLSAg
ICBpZiAoc21hcnREYXRhLT5jaGFuZ2VkLmFueSkKLSAgICAgICAgcmV0dXJuOwotICAgIHNtYXJ0
RGF0YS0+Y2hhbmdlZC5hbnkgPSB0cnVlOwotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NoYW5nZWQo
c21hcnREYXRhLT5zZWxmKTsKLX0KLQotLy8gRGVmYXVsdCBFdmVudCBIYW5kbGluZyAvLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi1zdGF0aWMgRWluYV9Cb29s
IF9ld2tfdmlld19zbWFydF9mb2N1c19pbihFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEp
Ci17Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVQoc21hcnREYXRhLCBwcml2KTsKLSAgICBXZWJDb3Jl
OjpGb2N1c0NvbnRyb2xsZXIqIGZvY3VzQ29udHJvbGxlciA9ICZwcml2LT5wYWdlLT5mb2N1c0Nv
bnRyb2xsZXIoKTsKLSAgICBEQkcoImV3a1ZpZXc9JXAsIGZvY3VzQ29udHJvbGxlcj0lcCIsIHNt
YXJ0RGF0YS0+c2VsZiwgZm9jdXNDb250cm9sbGVyKTsKLQotICAgIGZvY3VzQ29udHJvbGxlci0+
c2V0QWN0aXZlKHRydWUpOwotICAgIGZvY3VzQ29udHJvbGxlci0+c2V0Rm9jdXNlZCh0cnVlKTsK
LSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRf
Zm9jdXNfb3V0KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSkKLXsKLSAgICBFV0tfVklF
V19QUklWX0dFVChzbWFydERhdGEsIHByaXYpOwotICAgIFdlYkNvcmU6OkZvY3VzQ29udHJvbGxl
ciogZm9jdXNDb250cm9sbGVyID0gJnByaXYtPnBhZ2UtPmZvY3VzQ29udHJvbGxlcigpOwotICAg
IERCRygiZXdrVmlldz0lcCwgZmM9JXAiLCBzbWFydERhdGEtPnNlbGYsIGZvY3VzQ29udHJvbGxl
cik7Ci0KLSAgICBmb2N1c0NvbnRyb2xsZXItPnNldEFjdGl2ZShmYWxzZSk7Ci0gICAgZm9jdXND
b250cm9sbGVyLT5zZXRGb2N1c2VkKGZhbHNlKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotc3Rh
dGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfbW91c2Vfd2hlZWwoRXdrX1ZpZXdfU21hcnRf
RGF0YSogc21hcnREYXRhLCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX1doZWVsKiB3aGVlbEV2ZW50
KQotewotICAgIHJldHVybiBld2tfZnJhbWVfZmVlZF9tb3VzZV93aGVlbChzbWFydERhdGEtPm1h
aW5fZnJhbWUsIHdoZWVsRXZlbnQpOwotfQotCi1zdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19z
bWFydF9tb3VzZV9kb3duKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSwgY29uc3QgRXZh
c19FdmVudF9Nb3VzZV9Eb3duKiBkb3duRXZlbnQpCi17Ci0gICAgcmV0dXJuIGV3a19mcmFtZV9m
ZWVkX21vdXNlX2Rvd24oc21hcnREYXRhLT5tYWluX2ZyYW1lLCBkb3duRXZlbnQpOwotfQotCi1z
dGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFydF9tb3VzZV91cChFd2tfVmlld19TbWFydF9E
YXRhKiBzbWFydERhdGEsIGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfVXAqIHVwRXZlbnQpCi17Ci0g
ICAgcmV0dXJuIGV3a19mcmFtZV9mZWVkX21vdXNlX3VwKHNtYXJ0RGF0YS0+bWFpbl9mcmFtZSwg
dXBFdmVudCk7Ci19Ci0KLXN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X21vdXNlX21v
dmUoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhLCBjb25zdCBFdmFzX0V2ZW50X01vdXNl
X01vdmUqIG1vdmVFdmVudCkKLXsKLSAgICByZXR1cm4gZXdrX2ZyYW1lX2ZlZWRfbW91c2VfbW92
ZShzbWFydERhdGEtPm1haW5fZnJhbWUsIG1vdmVFdmVudCk7Ci19Ci0KLXN0YXRpYyBFaW5hX0Jv
b2wgX2V3a192aWV3X3NtYXJ0X2tleV9kb3duKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0
YSwgY29uc3QgRXZhc19FdmVudF9LZXlfRG93biogZG93bkV2ZW50KQotewotICAgIEV2YXNfT2Jq
ZWN0KiBmcmFtZSA9IGV3a192aWV3X2ZyYW1lX2ZvY3VzZWRfZ2V0KHNtYXJ0RGF0YS0+c2VsZik7
Ci0KLSAgICBpZiAoIWZyYW1lKQotICAgICAgICBmcmFtZSA9IHNtYXJ0RGF0YS0+bWFpbl9mcmFt
ZTsKLQotICAgIHJldHVybiBld2tfZnJhbWVfZmVlZF9rZXlfZG93bihmcmFtZSwgZG93bkV2ZW50
KTsKLX0KLQotc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfa2V5X3VwKEV3a19WaWV3
X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSwgY29uc3QgRXZhc19FdmVudF9LZXlfVXAqIHVwRXZlbnQp
Ci17Ci0gICAgRXZhc19PYmplY3QqIGZyYW1lID0gZXdrX3ZpZXdfZnJhbWVfZm9jdXNlZF9nZXQo
c21hcnREYXRhLT5zZWxmKTsKLQotICAgIGlmICghZnJhbWUpCi0gICAgICAgIGZyYW1lID0gc21h
cnREYXRhLT5tYWluX2ZyYW1lOwotCi0gICAgcmV0dXJuIGV3a19mcmFtZV9mZWVkX2tleV91cChm
cmFtZSwgdXBFdmVudCk7Ci19Ci0KLXN0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9hZGRfY29u
c29sZV9tZXNzYWdlKEV3a19WaWV3X1NtYXJ0X0RhdGEqLCBjb25zdCBjaGFyKiBtZXNzYWdlLCB1
bnNpZ25lZCBpbnQgbGluZU51bWJlciwgY29uc3QgY2hhciogc291cmNlSUQpCi17Ci0gICAgSU5G
TygiY29uc29sZSBtZXNzYWdlOiAlcyBAJWQ6ICVzXG4iLCBzb3VyY2VJRCwgbGluZU51bWJlciwg
bWVzc2FnZSk7Ci19Ci0KLXN0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9ydW5famF2YXNjcmlw
dF9hbGVydChFd2tfVmlld19TbWFydF9EYXRhKiwgRXZhc19PYmplY3QqIC8qZnJhbWUqLywgY29u
c3QgY2hhciogbWVzc2FnZSkKLXsKLSAgICBJTkZPKCJqYXZhc2NyaXB0IGFsZXJ0OiAlc1xuIiwg
bWVzc2FnZSk7Ci19Ci0KLXN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X3J1bl9qYXZh
c2NyaXB0X2NvbmZpcm0oRXdrX1ZpZXdfU21hcnRfRGF0YSosIEV2YXNfT2JqZWN0KiAvKmZyYW1l
Ki8sIGNvbnN0IGNoYXIqIG1lc3NhZ2UpCi17Ci0gICAgSU5GTygiamF2YXNjcmlwdCBjb25maXJt
OiAlcyIsIG1lc3NhZ2UpOwotICAgIElORk8oImphdmFzY3JpcHQgY29uZmlybSAoSEFSRCBDT0RF
RCk/IFlFUyIpOwotICAgIHJldHVybiB0cnVlOwotfQotCi1zdGF0aWMgRWluYV9Cb29sIF9ld2tf
dmlld19zbWFydF9ydW5fYmVmb3JlX3VubG9hZF9jb25maXJtKEV3a19WaWV3X1NtYXJ0X0RhdGEq
LCBFdmFzX09iamVjdCogLypmcmFtZSovLCBjb25zdCBjaGFyKiBtZXNzYWdlKQotewotICAgIElO
Rk8oImJlZm9yZSB1bmxvYWQgY29uZmlybTogJXMiLCBtZXNzYWdlKTsKLSAgICByZXR1cm4gdHJ1
ZTsKLX0KLQotc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfc2hvdWxkX2ludGVycnVw
dF9qYXZhc2NyaXB0KEV3a19WaWV3X1NtYXJ0X0RhdGEqKQotewotICAgIElORk8oInNob3VsZCBp
bnRlcnJ1cHQgamF2YXNjcmlwdD9cbiIKLSAgICAgICAgIlx0KEhBUkQgQ09ERUQpIE5PIik7Ci0g
ICAgcmV0dXJuIGZhbHNlOwotfQotCi1zdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFydF9y
dW5famF2YXNjcmlwdF9wcm9tcHQoRXdrX1ZpZXdfU21hcnRfRGF0YSosIEV2YXNfT2JqZWN0KiAv
KmZyYW1lKi8sIGNvbnN0IGNoYXIqIG1lc3NhZ2UsIGNvbnN0IGNoYXIqIGRlZmF1bHRWYWx1ZSwg
Y29uc3QgY2hhcioqIHZhbHVlKQotewotICAgICp2YWx1ZSA9IGVpbmFfc3RyaW5nc2hhcmVfYWRk
KCJ0ZXN0Iik7Ci0gICAgRWluYV9Cb29sIHJlc3VsdCA9IHRydWU7Ci0gICAgSU5GTygiamF2YXNj
cmlwdCBwcm9tcHQ6XG4iCi0gICAgICAgICJcdCAgICAgIG1lc3NhZ2U6ICVzXG4iCi0gICAgICAg
ICJcdGRlZmF1bHQgdmFsdWU6ICVzXG4iCi0gICAgICAgICJcdGdpdmluZyBhbnN3ZXI6ICVzXG4i
Ci0gICAgICAgICJcdCAgICAgICBidXR0b246ICVzIiwgbWVzc2FnZSwgZGVmYXVsdFZhbHVlLCAq
dmFsdWUsIHJlc3VsdCA/ICJvayIgOiAiY2FuY2VsIik7Ci0KLSAgICByZXR1cm4gcmVzdWx0Owot
fQotCi0vLyBFdmVudCBIYW5kbGluZyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8KLXN0YXRpYyB2b2lkIF9ld2tfdmlld19vbl9mb2N1c19pbih2
b2lkKiBkYXRhLCBFdmFzKiwgRXZhc19PYmplY3QqLCB2b2lkKikKLXsKLSAgICBFd2tfVmlld19T
bWFydF9EYXRhKiBzbWFydERhdGEgPSBzdGF0aWNfY2FzdDxFd2tfVmlld19TbWFydF9EYXRhKj4o
ZGF0YSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc21hcnREYXRhLT5hcGkpOwot
ICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNtYXJ0RGF0YS0+YXBpLT5mb2N1c19pbik7
Ci0gICAgc21hcnREYXRhLT5hcGktPmZvY3VzX2luKHNtYXJ0RGF0YSk7Ci19Ci0KLXN0YXRpYyB2
b2lkIF9ld2tfdmlld19vbl9mb2N1c19vdXQodm9pZCogZGF0YSwgRXZhcyosIEV2YXNfT2JqZWN0
Kiwgdm9pZCopCi17Ci0gICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhID0gc3RhdGlj
X2Nhc3Q8RXdrX1ZpZXdfU21hcnRfRGF0YSo+KGRhdGEpOwotICAgIEVJTkFfU0FGRVRZX09OX05V
TExfUkVUVVJOKHNtYXJ0RGF0YS0+YXBpKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVS
TihzbWFydERhdGEtPmFwaS0+Zm9jdXNfb3V0KTsKLSAgICBzbWFydERhdGEtPmFwaS0+Zm9jdXNf
b3V0KHNtYXJ0RGF0YSk7Ci19Ci0KLXN0YXRpYyB2b2lkIF9ld2tfdmlld19vbl9tb3VzZV93aGVl
bCh2b2lkKiBkYXRhLCBFdmFzKiwgRXZhc19PYmplY3QqLCB2b2lkKiBldmVudEluZm8pCi17Ci0g
ICAgRXZhc19FdmVudF9Nb3VzZV9XaGVlbCogd2hlZWxFdmVudCA9IHN0YXRpY19jYXN0PEV2YXNf
RXZlbnRfTW91c2VfV2hlZWwqPihldmVudEluZm8pOwotICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEq
IHNtYXJ0RGF0YSA9IHN0YXRpY19jYXN0PEV3a19WaWV3X1NtYXJ0X0RhdGEqPihkYXRhKTsKLSAg
ICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzbWFydERhdGEtPmFwaSk7Ci0gICAgRUlOQV9T
QUZFVFlfT05fTlVMTF9SRVRVUk4oc21hcnREYXRhLT5hcGktPm1vdXNlX3doZWVsKTsKLSAgICBz
bWFydERhdGEtPmFwaS0+bW91c2Vfd2hlZWwoc21hcnREYXRhLCB3aGVlbEV2ZW50KTsKLX0KLQot
c3RhdGljIHZvaWQgX2V3a192aWV3X29uX21vdXNlX2Rvd24odm9pZCogZGF0YSwgRXZhcyosIEV2
YXNfT2JqZWN0Kiwgdm9pZCogZXZlbnRJbmZvKQotewotICAgIEV2YXNfRXZlbnRfTW91c2VfRG93
biogZG93bkV2ZW50ID0gc3RhdGljX2Nhc3Q8RXZhc19FdmVudF9Nb3VzZV9Eb3duKj4oZXZlbnRJ
bmZvKTsKLSAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEgPSBzdGF0aWNfY2FzdDxF
d2tfVmlld19TbWFydF9EYXRhKj4oZGF0YSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRV
Uk4oc21hcnREYXRhLT5hcGkpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNtYXJ0
RGF0YS0+YXBpLT5tb3VzZV9kb3duKTsKLSAgICBzbWFydERhdGEtPmFwaS0+bW91c2VfZG93bihz
bWFydERhdGEsIGRvd25FdmVudCk7Ci19Ci0KLXN0YXRpYyB2b2lkIF9ld2tfdmlld19vbl9tb3Vz
ZV91cCh2b2lkKiBkYXRhLCBFdmFzKiwgRXZhc19PYmplY3QqLCB2b2lkKiBldmVudEluZm8pCi17
Ci0gICAgRXZhc19FdmVudF9Nb3VzZV9VcCogdXBFdmVudCA9IHN0YXRpY19jYXN0PEV2YXNfRXZl
bnRfTW91c2VfVXAqPihldmVudEluZm8pOwotICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0
RGF0YSA9IHN0YXRpY19jYXN0PEV3a19WaWV3X1NtYXJ0X0RhdGEqPihkYXRhKTsKLSAgICBFSU5B
X1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzbWFydERhdGEtPmFwaSk7Ci0gICAgRUlOQV9TQUZFVFlf
T05fTlVMTF9SRVRVUk4oc21hcnREYXRhLT5hcGktPm1vdXNlX3VwKTsKLSAgICBzbWFydERhdGEt
PmFwaS0+bW91c2VfdXAoc21hcnREYXRhLCB1cEV2ZW50KTsKLX0KLQotc3RhdGljIHZvaWQgX2V3
a192aWV3X29uX21vdXNlX21vdmUodm9pZCogZGF0YSwgRXZhcyosIEV2YXNfT2JqZWN0Kiwgdm9p
ZCogZXZlbnRJbmZvKQotewotICAgIEV2YXNfRXZlbnRfTW91c2VfTW92ZSogbW92ZUV2ZW50ID0g
c3RhdGljX2Nhc3Q8RXZhc19FdmVudF9Nb3VzZV9Nb3ZlKj4oZXZlbnRJbmZvKTsKLSAgICBFd2tf
Vmlld19TbWFydF9EYXRhKiBzbWFydERhdGEgPSBzdGF0aWNfY2FzdDxFd2tfVmlld19TbWFydF9E
YXRhKj4oZGF0YSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc21hcnREYXRhLT5h
cGkpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNtYXJ0RGF0YS0+YXBpLT5tb3Vz
ZV9tb3ZlKTsKLSAgICBzbWFydERhdGEtPmFwaS0+bW91c2VfbW92ZShzbWFydERhdGEsIG1vdmVF
dmVudCk7Ci19Ci0KLXN0YXRpYyB2b2lkIF9ld2tfdmlld19vbl9rZXlfZG93bih2b2lkKiBkYXRh
LCBFdmFzKiwgRXZhc19PYmplY3QqLCB2b2lkKiBldmVudEluZm8pCi17Ci0gICAgRXZhc19FdmVu
dF9LZXlfRG93biogZG93bkV2ZW50ID0gc3RhdGljX2Nhc3Q8RXZhc19FdmVudF9LZXlfRG93bio+
KGV2ZW50SW5mbyk7Ci0gICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhID0gc3RhdGlj
X2Nhc3Q8RXdrX1ZpZXdfU21hcnRfRGF0YSo+KGRhdGEpOwotICAgIEVJTkFfU0FGRVRZX09OX05V
TExfUkVUVVJOKHNtYXJ0RGF0YS0+YXBpKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVS
TihzbWFydERhdGEtPmFwaS0+a2V5X2Rvd24pOwotICAgIHNtYXJ0RGF0YS0+YXBpLT5rZXlfZG93
bihzbWFydERhdGEsIGRvd25FdmVudCk7Ci19Ci0KLXN0YXRpYyB2b2lkIF9ld2tfdmlld19vbl9r
ZXlfdXAodm9pZCogZGF0YSwgRXZhcyosIEV2YXNfT2JqZWN0Kiwgdm9pZCogZXZlbnRJbmZvKQot
ewotICAgIEV2YXNfRXZlbnRfS2V5X1VwKiB1cEV2ZW50ID0gc3RhdGljX2Nhc3Q8RXZhc19FdmVu
dF9LZXlfVXAqPihldmVudEluZm8pOwotICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0
YSA9IHN0YXRpY19jYXN0PEV3a19WaWV3X1NtYXJ0X0RhdGEqPihkYXRhKTsKLSAgICBFSU5BX1NB
RkVUWV9PTl9OVUxMX1JFVFVSTihzbWFydERhdGEtPmFwaSk7Ci0gICAgRUlOQV9TQUZFVFlfT05f
TlVMTF9SRVRVUk4oc21hcnREYXRhLT5hcGktPmtleV91cCk7Ci0gICAgc21hcnREYXRhLT5hcGkt
PmtleV91cChzbWFydERhdGEsIHVwRXZlbnQpOwotfQotCi1zdGF0aWMgRXZhc19TbWFydF9DbGFz
cyBfcGFyZW50X3NjID0gRVZBU19TTUFSVF9DTEFTU19JTklUX05VTEw7Ci0KLXN0YXRpYyBFd2tf
Vmlld19Qcml2YXRlX0RhdGEqIF9ld2tfdmlld19wcml2X25ldyhFd2tfVmlld19TbWFydF9EYXRh
KiBzbWFydERhdGEpCi17Ci0gICAgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2ID0gbmV3IEV3
a19WaWV3X1ByaXZhdGVfRGF0YTsKLSAgICBtZW1zZXQocHJpdiwgMCwgc2l6ZW9mKEV3a19WaWV3
X1ByaXZhdGVfRGF0YSkpOwotICAgIEF0b21pY1N0cmluZyBzdHJpbmc7Ci0gICAgV2ViQ29yZTo6
VVJMIHVybDsKLQotICAgIFdlYkNvcmU6OlBhZ2U6OlBhZ2VDbGllbnRzIHBhZ2VDbGllbnRzOwot
ICAgIHBhZ2VDbGllbnRzLmNocm9tZUNsaWVudCA9IG5ldyBXZWJDb3JlOjpDaHJvbWVDbGllbnRF
Zmwoc21hcnREYXRhLT5zZWxmKTsKLSNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKLSAgICBwYWdl
Q2xpZW50cy5jb250ZXh0TWVudUNsaWVudCA9IG5ldyBXZWJDb3JlOjpDb250ZXh0TWVudUNsaWVu
dEVmbDsKLSNlbmRpZgotICAgIHBhZ2VDbGllbnRzLmVkaXRvckNsaWVudCA9IG5ldyBXZWJDb3Jl
OjpFZGl0b3JDbGllbnRFZmwoc21hcnREYXRhLT5zZWxmKTsKLSAgICBwYWdlQ2xpZW50cy5kcmFn
Q2xpZW50ID0gbmV3IFdlYkNvcmU6OkRyYWdDbGllbnRFZmw7Ci0jaWYgRU5BQkxFKElOU1BFQ1RP
UikKLSAgICBwYWdlQ2xpZW50cy5pbnNwZWN0b3JDbGllbnQgPSBuZXcgV2ViQ29yZTo6SW5zcGVj
dG9yQ2xpZW50RWZsKHNtYXJ0RGF0YS0+c2VsZik7Ci0jZW5kaWYKLSAgICBwYWdlQ2xpZW50cy5s
b2FkZXJDbGllbnRGb3JNYWluRnJhbWUgPSBuZXcgV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRF
Zmwoc21hcnREYXRhLT5zZWxmKTsKLSAgICBwYWdlQ2xpZW50cy5wcm9ncmVzc1RyYWNrZXJDbGll
bnQgPSBuZXcgV2ViQ29yZTo6UHJvZ3Jlc3NUcmFja2VyQ2xpZW50RWZsKHNtYXJ0RGF0YS0+c2Vs
Zik7Ci0gICAgcHJpdi0+cGFnZSA9IGFkb3B0UHRyKG5ldyBXZWJDb3JlOjpQYWdlKHBhZ2VDbGll
bnRzKSk7Ci0KLSNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKQotICAgIFdlYkNvcmU6OnBy
b3ZpZGVEZXZpY2VNb3Rpb25Ubyhwcml2LT5wYWdlLmdldCgpLCBuZXcgV2ViQ29yZTo6RGV2aWNl
TW90aW9uQ2xpZW50RWZsKTsKLSAgICBXZWJDb3JlOjpwcm92aWRlRGV2aWNlT3JpZW50YXRpb25U
byhwcml2LT5wYWdlLmdldCgpLCBuZXcgV2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb25DbGllbnRF
ZmwpOwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoVklCUkFUSU9OKQotICAgIFdlYkNvcmU6OnByb3Zp
ZGVWaWJyYXRpb25Ubyhwcml2LT5wYWdlLmdldCgpLCBuZXcgV2ViQ29yZTo6VmlicmF0aW9uQ2xp
ZW50RWZsKHNtYXJ0RGF0YS0+c2VsZikpOwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoQkFUVEVSWV9T
VEFUVVMpCi0gICAgV2ViQ29yZTo6cHJvdmlkZUJhdHRlcnlUbyhwcml2LT5wYWdlLmdldCgpLCBu
ZXcgQmF0dGVyeUNsaWVudEVmbChzbWFydERhdGEtPnNlbGYpKTsKLSNlbmRpZgotCi0jaWYgRU5B
QkxFKE5BVklHQVRPUl9DT05URU5UX1VUSUxTKQotICAgIFdlYkNvcmU6OnByb3ZpZGVOYXZpZ2F0
b3JDb250ZW50VXRpbHNUbyhwcml2LT5wYWdlLmdldCgpLCBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNv
cmU6Ok5hdmlnYXRvckNvbnRlbnRVdGlsc0NsaWVudEVmbD4oc21hcnREYXRhLT5zZWxmKSk7Ci0j
ZW5kaWYKLQotI2lmIEVOQUJMRShHRU9MT0NBVElPTikKLSAgICBpZiAoRHVtcFJlbmRlclRyZWVT
dXBwb3J0RWZsOjpkdW1wUmVuZGVyVHJlZU1vZGVFbmFibGVkKCkpIHsKLSAgICAgICAgV2ViQ29y
ZTo6R2VvbG9jYXRpb25DbGllbnRNb2NrKiBtb2NrID0gbmV3IFdlYkNvcmU6Okdlb2xvY2F0aW9u
Q2xpZW50TW9jazsKLSAgICAgICAgV2ViQ29yZTo6cHJvdmlkZUdlb2xvY2F0aW9uVG8ocHJpdi0+
cGFnZS5nZXQoKSwgbW9jayk7Ci0gICAgICAgIG1vY2stPnNldENvbnRyb2xsZXIoV2ViQ29yZTo6
R2VvbG9jYXRpb25Db250cm9sbGVyOjpmcm9tKHByaXYtPnBhZ2UuZ2V0KCkpKTsKLSAgICB9Ci0j
ZW5kaWYKLQotICAgIFdlYkNvcmU6OlNldHRpbmdzJiBwYWdlU2V0dGluZ3MgPSBwcml2LT5wYWdl
LT5zZXR0aW5ncygpOwotCi0gICAgV2ViQ29yZTo6TGF5b3V0TWlsZXN0b25lcyBsYXlvdXRNaWxl
c3RvbmVzID0gV2ViQ29yZTo6RGlkRmlyc3RMYXlvdXQgfCBXZWJDb3JlOjpEaWRGaXJzdFZpc3Vh
bGx5Tm9uRW1wdHlMYXlvdXQ7Ci0gICAgcHJpdi0+cGFnZS0+YWRkTGF5b3V0TWlsZXN0b25lcyhs
YXlvdXRNaWxlc3RvbmVzKTsKLQotICAgIC8vIEZJWE1FOiBOb29uZSBpcyBzdXBwb3NlZCB0byBk
byB0aGlzIG1hbnVhbGx5LgotICAgIHByaXYtPnZpZXdwb3J0QXJndW1lbnRzLndpZHRoID0gV2Vi
Q29yZTo6Vmlld3BvcnRBcmd1bWVudHM6OlZhbHVlQXV0bzsKLSAgICBwcml2LT52aWV3cG9ydEFy
Z3VtZW50cy5oZWlnaHQgPSBXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50czo6VmFsdWVBdXRvOwot
ICAgIHByaXYtPnZpZXdwb3J0QXJndW1lbnRzLnpvb20gPSBXZWJDb3JlOjpWaWV3cG9ydEFyZ3Vt
ZW50czo6VmFsdWVBdXRvOwotICAgIHByaXYtPnZpZXdwb3J0QXJndW1lbnRzLm1pblpvb20gPSBX
ZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50czo6VmFsdWVBdXRvOwotICAgIHByaXYtPnZpZXdwb3J0
QXJndW1lbnRzLm1heFpvb20gPSBXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50czo6VmFsdWVBdXRv
OwotICAgIHByaXYtPnZpZXdwb3J0QXJndW1lbnRzLnVzZXJab29tID0gdHJ1ZTsKLQotICAgIHBh
Z2VTZXR0aW5ncy5zZXRMb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkodHJ1ZSk7Ci0gICAgcGFnZVNl
dHRpbmdzLnNldERlZmF1bHRUZXh0RW5jb2RpbmdOYW1lKCJpc28tODg1OS0xIik7Ci0gICAgcGFn
ZVNldHRpbmdzLnNldERlZmF1bHRGaXhlZEZvbnRTaXplKDEyKTsKLSAgICBwYWdlU2V0dGluZ3Mu
c2V0RGVmYXVsdEZvbnRTaXplKDE2KTsKLSAgICBwYWdlU2V0dGluZ3Muc2V0U2VyaWZGb250RmFt
aWx5KCJzZXJpZiIpOwotICAgIHBhZ2VTZXR0aW5ncy5zZXRGaXhlZEZvbnRGYW1pbHkoIm1vbm90
eXBlIik7Ci0gICAgcGFnZVNldHRpbmdzLnNldFNhbnNTZXJpZkZvbnRGYW1pbHkoInNhbnMiKTsK
LSAgICBwYWdlU2V0dGluZ3Muc2V0U3RhbmRhcmRGb250RmFtaWx5KCJzYW5zIik7Ci0gICAgcGFn
ZVNldHRpbmdzLnNldEh5cGVybGlua0F1ZGl0aW5nRW5hYmxlZChmYWxzZSk7Ci0gICAgV2ViQ29y
ZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zZXRDU1NSZWdpb25z
RW5hYmxlZCh0cnVlKTsKLSAgICBwYWdlU2V0dGluZ3Muc2V0U2NyaXB0RW5hYmxlZCh0cnVlKTsK
LSAgICBwYWdlU2V0dGluZ3Muc2V0UGx1Z2luc0VuYWJsZWQodHJ1ZSk7Ci0gICAgcGFnZVNldHRp
bmdzLnNldExvY2FsU3RvcmFnZUVuYWJsZWQodHJ1ZSk7Ci0gICAgcGFnZVNldHRpbmdzLnNldE9m
ZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZCh0cnVlKTsKLSAgICBwYWdlU2V0dGluZ3Mu
c2V0VXNlc1BhZ2VDYWNoZSh0cnVlKTsKLSAgICBwYWdlU2V0dGluZ3Muc2V0VXNlc0VuY29kaW5n
RGV0ZWN0b3IoZmFsc2UpOwotI2lmIEVOQUJMRShXRUJfQVVESU8pCi0gICAgcGFnZVNldHRpbmdz
LnNldFdlYkF1ZGlvRW5hYmxlZChmYWxzZSk7Ci0jZW5kaWYKLSAgICBwYWdlU2V0dGluZ3Muc2V0
V2ViR0xFbmFibGVkKHRydWUpOwotICAgIHBhZ2VTZXR0aW5ncy5zZXRYU1NBdWRpdG9yRW5hYmxl
ZCh0cnVlKTsKLSNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCi0gICAgcGFnZVNldHRpbmdzLnNl
dEZ1bGxTY3JlZW5FbmFibGVkKHRydWUpOwotI2VuZGlmCi0gICAgcGFnZVNldHRpbmdzLnNldElu
dGVyYWN0aXZlRm9ybVZhbGlkYXRpb25FbmFibGVkKHRydWUpOwotICAgIHBhZ2VTZXR0aW5ncy5z
ZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZCh0cnVlKTsKLSAgICBwYWdlU2V0dGluZ3Mu
c2V0Rm9yY2VDb21wb3NpdGluZ01vZGUodHJ1ZSk7Ci0gICAgY2hhciogZGVidWdWaXN1YWxzRW52
aXJvbm1lbnQgPSBnZXRlbnYoIldFQktJVF9TSE9XX0NPTVBPU0lUSU5HX0RFQlVHX1ZJU1VBTFMi
KTsKLSAgICBib29sIHNob3dEZWJ1Z1Zpc3VhbHMgPSBkZWJ1Z1Zpc3VhbHNFbnZpcm9ubWVudCAm
JiAhc3RyY21wKGRlYnVnVmlzdWFsc0Vudmlyb25tZW50LCAiMSIpOwotICAgIHBhZ2VTZXR0aW5n
cy5zZXRTaG93RGVidWdCb3JkZXJzKHNob3dEZWJ1Z1Zpc3VhbHMpOwotICAgIHBhZ2VTZXR0aW5n
cy5zZXRTaG93UmVwYWludENvdW50ZXIoc2hvd0RlYnVnVmlzdWFscyk7Ci0KLSAgICB1cmwgPSBw
YWdlU2V0dGluZ3MudXNlclN0eWxlU2hlZXRMb2NhdGlvbigpOwotICAgIHByaXYtPnNldHRpbmdz
LnVzZXJTdHlsZXNoZWV0ID0gZWluYV9zdHJpbmdzaGFyZV9hZGQodXJsLnN0cmluZygpLnV0Zjgo
KS5kYXRhKCkpOwotCi0gICAgcHJpdi0+c2V0dGluZ3MuZW5jb2RpbmdEZWZhdWx0ID0gZWluYV9z
dHJpbmdzaGFyZV9hZGQocGFnZVNldHRpbmdzLmRlZmF1bHRUZXh0RW5jb2RpbmdOYW1lKCkudXRm
OCgpLmRhdGEoKSk7Ci0gICAgcHJpdi0+c2V0dGluZ3MuZW5jb2RpbmdDdXN0b20gPSAwOwotCi0g
ICAgc3RyaW5nID0gcGFnZVNldHRpbmdzLmxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCgpOwotICAg
IHByaXYtPnNldHRpbmdzLmxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCA9IGVpbmFfc3RyaW5nc2hh
cmVfYWRkKHN0cmluZy5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLQotICAgIHByaXYtPnNldHRp
bmdzLmZvbnRNaW5pbXVtU2l6ZSA9IHBhZ2VTZXR0aW5ncy5taW5pbXVtRm9udFNpemUoKTsKLSAg
ICBwcml2LT5zZXR0aW5ncy5mb250TWluaW11bUxvZ2ljYWxTaXplID0gcGFnZVNldHRpbmdzLm1p
bmltdW1Mb2dpY2FsRm9udFNpemUoKTsKLSAgICBwcml2LT5zZXR0aW5ncy5mb250RGVmYXVsdFNp
emUgPSBwYWdlU2V0dGluZ3MuZGVmYXVsdEZvbnRTaXplKCk7Ci0gICAgcHJpdi0+c2V0dGluZ3Mu
Zm9udE1vbm9zcGFjZVNpemUgPSBwYWdlU2V0dGluZ3MuZGVmYXVsdEZpeGVkRm9udFNpemUoKTsK
LQotICAgIHN0cmluZyA9IHBhZ2VTZXR0aW5ncy5zdGFuZGFyZEZvbnRGYW1pbHkoKTsKLSAgICBw
cml2LT5zZXR0aW5ncy5mb250U3RhbmRhcmQgPSBlaW5hX3N0cmluZ3NoYXJlX2FkZChzdHJpbmcu
c3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgc3RyaW5nID0gcGFnZVNldHRpbmdzLmN1cnNp
dmVGb250RmFtaWx5KCk7Ci0gICAgcHJpdi0+c2V0dGluZ3MuZm9udEN1cnNpdmUgPSBlaW5hX3N0
cmluZ3NoYXJlX2FkZChzdHJpbmcuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgc3RyaW5n
ID0gcGFnZVNldHRpbmdzLmZpeGVkRm9udEZhbWlseSgpOwotICAgIHByaXYtPnNldHRpbmdzLmZv
bnRNb25vc3BhY2UgPSBlaW5hX3N0cmluZ3NoYXJlX2FkZChzdHJpbmcuc3RyaW5nKCkudXRmOCgp
LmRhdGEoKSk7Ci0gICAgc3RyaW5nID0gcGFnZVNldHRpbmdzLmZhbnRhc3lGb250RmFtaWx5KCk7
Ci0gICAgcHJpdi0+c2V0dGluZ3MuZm9udEZhbnRhc3kgPSBlaW5hX3N0cmluZ3NoYXJlX2FkZChz
dHJpbmcuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgc3RyaW5nID0gcGFnZVNldHRpbmdz
LnNlcmlmRm9udEZhbWlseSgpOwotICAgIHByaXYtPnNldHRpbmdzLmZvbnRTZXJpZiA9IGVpbmFf
c3RyaW5nc2hhcmVfYWRkKHN0cmluZy5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAgICBzdHJp
bmcgPSBwYWdlU2V0dGluZ3Muc2Fuc1NlcmlmRm9udEZhbWlseSgpOwotICAgIHByaXYtPnNldHRp
bmdzLmZvbnRTYW5zU2VyaWYgPSBlaW5hX3N0cmluZ3NoYXJlX2FkZChzdHJpbmcuc3RyaW5nKCku
dXRmOCgpLmRhdGEoKSk7Ci0KLSAgICBwcml2LT5zZXR0aW5ncy5hdXRvTG9hZEltYWdlcyA9IHBh
Z2VTZXR0aW5ncy5sb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkoKTsKLSAgICBwcml2LT5zZXR0aW5n
cy5hdXRvU2hyaW5rSW1hZ2VzID0gcGFnZVNldHRpbmdzLnNocmlua3NTdGFuZGFsb25lSW1hZ2Vz
VG9GaXQoKTsKLSAgICBwcml2LT5zZXR0aW5ncy5lbmFibGVBdXRvUmVzaXplV2luZG93ID0gdHJ1
ZTsKLSAgICBwcml2LT5zZXR0aW5ncy5lbmFibGVEZXZlbG9wZXJFeHRyYXMgPSBwYWdlU2V0dGlu
Z3MuZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCgpOwotICAgIHByaXYtPnNldHRpbmdzLmVuYWJsZVNj
cmlwdHMgPSBwYWdlU2V0dGluZ3MuaXNTY3JpcHRFbmFibGVkKCk7Ci0gICAgcHJpdi0+c2V0dGlu
Z3MuZW5hYmxlUGx1Z2lucyA9IHBhZ2VTZXR0aW5ncy5hcmVQbHVnaW5zRW5hYmxlZCgpOwotICAg
IHByaXYtPnNldHRpbmdzLmVuYWJsZUZyYW1lRmxhdHRlbmluZyA9IHBhZ2VTZXR0aW5ncy5mcmFt
ZUZsYXR0ZW5pbmdFbmFibGVkKCk7Ci0jaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQotICAgIHBy
aXYtPnNldHRpbmdzLmVuYWJsZUZ1bGxzY3JlZW4gPSBwYWdlU2V0dGluZ3MuZnVsbFNjcmVlbkVu
YWJsZWQoKTsKLSNlbmRpZgotICAgIHByaXYtPnNldHRpbmdzLmVuYWJsZVhTU0F1ZGl0b3IgPSBw
YWdlU2V0dGluZ3MueHNzQXVkaXRvckVuYWJsZWQoKTsKLSAgICBwcml2LT5zZXR0aW5ncy5oeXBl
cmxpbmtBdWRpdGluZ0VuYWJsZWQgPSBwYWdlU2V0dGluZ3MuaHlwZXJsaW5rQXVkaXRpbmdFbmFi
bGVkKCk7Ci0gICAgcHJpdi0+c2V0dGluZ3Muc2NyaXB0c0Nhbk9wZW5XaW5kb3dzID0gcGFnZVNl
dHRpbmdzLmphdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHkoKTsKLSAgICBwcml2
LT5zZXR0aW5ncy5zY3JpcHRzQ2FuQ2xvc2VXaW5kb3dzID0gcGFnZVNldHRpbmdzLmFsbG93U2Ny
aXB0c1RvQ2xvc2VXaW5kb3dzKCk7Ci0jaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotICAgIHByaXYt
PnNldHRpbmdzLnNob3VsZERpc3BsYXlDYXB0aW9ucyA9IHBhZ2VTZXR0aW5ncy5zaG91bGREaXNw
bGF5Q2FwdGlvbnMoKTsKLSAgICBwcml2LT5zZXR0aW5ncy5zaG91bGREaXNwbGF5U3VidGl0bGVz
ID0gcGFnZVNldHRpbmdzLnNob3VsZERpc3BsYXlTdWJ0aXRsZXMoKTsKLSAgICBwcml2LT5zZXR0
aW5ncy5zaG91bGREaXNwbGF5VGV4dERlc2NyaXB0aW9ucyA9IHBhZ2VTZXR0aW5ncy5zaG91bGRE
aXNwbGF5VGV4dERlc2NyaXB0aW9ucygpOwotI2VuZGlmCi0gICAgcHJpdi0+c2V0dGluZ3Muc2Ny
aXB0c0NhbkFjY2Vzc0NsaXBib2FyZCA9IHBhZ2VTZXR0aW5ncy5qYXZhU2NyaXB0Q2FuQWNjZXNz
Q2xpcGJvYXJkKCkgJiYgcGFnZVNldHRpbmdzLkRPTVBhc3RlQWxsb3dlZCgpOwotICAgIHByaXYt
PnNldHRpbmdzLnJlc2l6YWJsZVRleHRhcmVhcyA9IHBhZ2VTZXR0aW5ncy50ZXh0QXJlYXNBcmVS
ZXNpemFibGUoKTsKLSAgICBwcml2LT5zZXR0aW5ncy5wcml2YXRlQnJvd3NpbmcgPSBwcml2LT5w
YWdlLT51c2VzRXBoZW1lcmFsU2Vzc2lvbigpOwotICAgIHByaXYtPnNldHRpbmdzLmNhcmV0QnJv
d3NpbmcgPSBwYWdlU2V0dGluZ3MuY2FyZXRCcm93c2luZ0VuYWJsZWQoKTsKLSAgICBwcml2LT5z
ZXR0aW5ncy5zcGF0aWFsTmF2aWdhdGlvbiA9IHBhZ2VTZXR0aW5ncy5zcGF0aWFsTmF2aWdhdGlv
bkVuYWJsZWQoKTsKLSAgICBwcml2LT5zZXR0aW5ncy5sb2NhbFN0b3JhZ2UgPSBwYWdlU2V0dGlu
Z3MubG9jYWxTdG9yYWdlRW5hYmxlZCgpOwotICAgIHByaXYtPnNldHRpbmdzLm9mZmxpbmVBcHBD
YWNoZSA9IHRydWU7IC8vIFhYWCBubyBmdW5jdGlvbiB0byByZWFkIHNldHRpbmc7IHRoaXMga2Vl
cHMgdGhlIG9yaWdpbmFsIHNldHRpbmcKLSAgICBwcml2LT5zZXR0aW5ncy5wYWdlQ2FjaGUgPSBw
YWdlU2V0dGluZ3MudXNlc1BhZ2VDYWNoZSgpOwotICAgIHByaXYtPnNldHRpbmdzLmVuY29kaW5n
RGV0ZWN0b3IgPSBwYWdlU2V0dGluZ3MudXNlc0VuY29kaW5nRGV0ZWN0b3IoKTsKLSAgICBwcml2
LT5zZXR0aW5ncy53ZWJHTEVuYWJsZWQgPSBwYWdlU2V0dGluZ3Mud2ViR0xFbmFibGVkKCk7Ci0g
ICAgcHJpdi0+c2V0dGluZ3MudGFic1RvTGlua3MgPSB0cnVlOwotCi0gICAgcHJpdi0+c2V0dGlu
Z3MudXNlckFnZW50ID0gZXdrX3NldHRpbmdzX2RlZmF1bHRfdXNlcl9hZ2VudF9nZXQoKTsKLQot
ICAgIC8vIFNpbmNlIHRoZXJlJ3Mgbm8gc2NhbGUgc2VwYXJhdGVkIGZyb20gem9vbWluZyBpbiB3
ZWJraXQtZWZsLCB0aGlzIGZ1bmN0aW9uYWxpdHkgb2YKLSAgICAvLyB2aWV3cG9ydCBtZXRhIHRh
ZyBpcyBpbXBsZW1lbnRlZCB1c2luZyB6b29tLiBXaGVuIHNjYWxlIHpvb20gaXMgc3VwcG9ydGVk
IGJ5IHdlYmtpdC1lZmwsCi0gICAgLy8gdGhpcyBmdW5jdGlvbmFsaXR5IHdpbGwgYmUgbW9kaWZp
ZWQgYnkgdGhlIHNjYWxlIHpvb20gcGF0Y2guCi0gICAgcHJpdi0+c2V0dGluZ3Muem9vbVJhbmdl
Lm1pblNjYWxlID0gem9vbU1pbmltdW07Ci0gICAgcHJpdi0+c2V0dGluZ3Muem9vbVJhbmdlLm1h
eFNjYWxlID0gem9vbU1heGltdW07Ci0gICAgcHJpdi0+c2V0dGluZ3Muem9vbVJhbmdlLnVzZXJT
Y2FsYWJsZSA9IHRydWU7Ci0KLSAgICBwcml2LT5zZXR0aW5ncy5kb21UaW1lckludGVydmFsID0g
cGFnZVNldHRpbmdzLmRlZmF1bHRNaW5ET01UaW1lckludGVydmFsKCk7Ci0KLSAgICBwcml2LT5z
ZXR0aW5ncy5hbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMcyA9IHBhZ2VTZXR0aW5ncy5h
bGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMcygpOwotICAgIHByaXYtPnNldHRpbmdzLmFs
bG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcyA9IHBhZ2VTZXR0aW5ncy5hbGxvd0ZpbGVBY2Nlc3NG
cm9tRmlsZVVSTHMoKTsKLQotICAgIHByaXYtPmhpc3RvcnkgPSBld2tfaGlzdG9yeV9uZXcoc3Rh
dGljX2Nhc3Q8V2ViQ29yZTo6QmFja0ZvcndhcmRMaXN0Kj4ocHJpdi0+cGFnZS0+YmFja0Zvcndh
cmQoKS5jbGllbnQoKSkpOwotCi0jaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi0gICAgcHJpdi0+
Y29udGV4dE1lbnUgPSAwOwotI2VuZGlmCi0KLSAgICByZXR1cm4gcHJpdjsKLX0KLQotc3RhdGlj
IHZvaWQgX2V3a192aWV3X3ByaXZfZGVsKEV3a19WaWV3X1ByaXZhdGVfRGF0YSogcHJpdikKLXsK
LSAgICBpZiAoIXByaXYpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8qIGRvIG5vdCBkZWxldGUg
cHJpdi0+bWFpbl9mcmFtZSAqLwotCi0gICAgZWluYV9zdHJpbmdzaGFyZV9kZWwocHJpdi0+c2V0
dGluZ3MudXNlckFnZW50KTsKLSAgICBlaW5hX3N0cmluZ3NoYXJlX2RlbChwcml2LT5zZXR0aW5n
cy51c2VyU3R5bGVzaGVldCk7Ci0gICAgZWluYV9zdHJpbmdzaGFyZV9kZWwocHJpdi0+c2V0dGlu
Z3MuZW5jb2RpbmdEZWZhdWx0KTsKLSAgICBlaW5hX3N0cmluZ3NoYXJlX2RlbChwcml2LT5zZXR0
aW5ncy5lbmNvZGluZ0N1c3RvbSk7Ci0gICAgZWluYV9zdHJpbmdzaGFyZV9kZWwocHJpdi0+c2V0
dGluZ3MuZm9udFN0YW5kYXJkKTsKLSAgICBlaW5hX3N0cmluZ3NoYXJlX2RlbChwcml2LT5zZXR0
aW5ncy5mb250Q3Vyc2l2ZSk7Ci0gICAgZWluYV9zdHJpbmdzaGFyZV9kZWwocHJpdi0+c2V0dGlu
Z3MuZm9udE1vbm9zcGFjZSk7Ci0gICAgZWluYV9zdHJpbmdzaGFyZV9kZWwocHJpdi0+c2V0dGlu
Z3MuZm9udEZhbnRhc3kpOwotICAgIGVpbmFfc3RyaW5nc2hhcmVfZGVsKHByaXYtPnNldHRpbmdz
LmZvbnRTZXJpZik7Ci0gICAgZWluYV9zdHJpbmdzaGFyZV9kZWwocHJpdi0+c2V0dGluZ3MuZm9u
dFNhbnNTZXJpZik7Ci0gICAgZWluYV9zdHJpbmdzaGFyZV9kZWwocHJpdi0+c2V0dGluZ3MubG9j
YWxTdG9yYWdlRGF0YWJhc2VQYXRoKTsKLQotICAgIGlmIChwcml2LT5hbmltYXRlZFpvb20uYW5p
bWF0b3IpCi0gICAgICAgIGVjb3JlX2FuaW1hdG9yX2RlbChwcml2LT5hbmltYXRlZFpvb20uYW5p
bWF0b3IpOwotCi0gICAgZXdrX2hpc3RvcnlfZnJlZShwcml2LT5oaXN0b3J5KTsKLQotICAgIGlm
IChwcml2LT5jdXJzb3JPYmplY3QpCi0gICAgICAgIGV2YXNfb2JqZWN0X2RlbChwcml2LT5jdXJz
b3JPYmplY3QpOwotCi0jaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi0gICAgaWYgKHByaXYtPmNv
bnRleHRNZW51KQotICAgICAgICBld2tfY29udGV4dF9tZW51X2ZyZWUocHJpdi0+Y29udGV4dE1l
bnUpOwotI2VuZGlmCi0KLSAgICBwcml2LT5hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCA9
IG51bGxwdHI7Ci0KLSAgICBkZWxldGUgcHJpdjsKLX0KLQotc3RhdGljIHZvaWQgX2V3a192aWV3
X2FjY2VsZXJhdGVkX2NvbXBvc2l0aW5nX2NiKHZvaWQqIGRhdGEsIEV2YXNfT2JqZWN0KikKLXsK
LSAgICBzdGF0aWNfY2FzdDxXZWJDb3JlOjpBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCo+
KGRhdGEpLT5mbHVzaEFuZFJlbmRlckxheWVycygpOwotfQotCi1zdGF0aWMgdm9pZCBfZXdrX3Zp
ZXdfc21hcnRfYWRkKEV2YXNfT2JqZWN0KiBld2tWaWV3KQotewotICAgIGNvbnN0IEV2YXNfU21h
cnQqIHNtYXJ0ID0gZXZhc19vYmplY3Rfc21hcnRfc21hcnRfZ2V0KGV3a1ZpZXcpOwotICAgIGNv
bnN0IEV2YXNfU21hcnRfQ2xhc3MqIHNtYXJ0Q2xhc3MgPSBldmFzX3NtYXJ0X2NsYXNzX2dldChz
bWFydCk7Ci0gICAgY29uc3QgRXdrX1ZpZXdfU21hcnRfQ2xhc3MqIGFwaSA9IHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgRXdrX1ZpZXdfU21hcnRfQ2xhc3MqPihzbWFydENsYXNzKTsKLSAgICBFV0tf
VklFV19TRF9HRVQoZXdrVmlldywgc21hcnREYXRhKTsKLQotICAgIGlmICghc21hcnREYXRhKSB7
Ci0gICAgICAgIHNtYXJ0RGF0YSA9IHN0YXRpY19jYXN0PEV3a19WaWV3X1NtYXJ0X0RhdGEqPihj
YWxsb2MoMSwgc2l6ZW9mKEV3a19WaWV3X1NtYXJ0X0RhdGEpKSk7Ci0gICAgICAgIGlmICghc21h
cnREYXRhKSB7Ci0gICAgICAgICAgICBDUklUSUNBTCgiY291bGQgbm90IGFsbG9jYXRlIEV3a19W
aWV3X1NtYXJ0X0RhdGEiKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAg
ICBldmFzX29iamVjdF9zbWFydF9kYXRhX3NldChld2tWaWV3LCBzbWFydERhdGEpOwotICAgIH0K
LQotICAgIHNtYXJ0RGF0YS0+YmdfY29sb3IuciA9IDI1NTsKLSAgICBzbWFydERhdGEtPmJnX2Nv
bG9yLmcgPSAyNTU7Ci0gICAgc21hcnREYXRhLT5iZ19jb2xvci5iID0gMjU1OwotICAgIHNtYXJ0
RGF0YS0+YmdfY29sb3IuYSA9IDI1NTsKLQotICAgIHNtYXJ0RGF0YS0+c2VsZiA9IGV3a1ZpZXc7
Ci0gICAgc21hcnREYXRhLT5hcGkgPSBhcGk7Ci0KLSAgICBfcGFyZW50X3NjLmFkZChld2tWaWV3
KTsKLQotICAgIHNtYXJ0RGF0YS0+X3ByaXYgPSBfZXdrX3ZpZXdfcHJpdl9uZXcoc21hcnREYXRh
KTsKLSAgICBpZiAoIXNtYXJ0RGF0YS0+X3ByaXYpCi0gICAgICAgIHJldHVybjsKLQotICAgIEVX
S19WSUVXX1BSSVZfR0VUKHNtYXJ0RGF0YSwgcHJpdik7Ci0KLSAgICBzbWFydERhdGEtPmltYWdl
ID0gZXZhc19vYmplY3RfaW1hZ2VfYWRkKHNtYXJ0RGF0YS0+YmFzZS5ldmFzKTsKLSAgICBpZiAo
RUlOQV9VTkxJS0VMWSghc21hcnREYXRhLT5pbWFnZSkpIHsKLSAgICAgICAgRVJSKCJDb3VsZCBu
b3QgY3JlYXRlIGJhY2tpbmcgc3RvcmUgb2JqZWN0LiIpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgZXZhc19vYmplY3RfaW1hZ2VfYWxwaGFfc2V0KHNtYXJ0RGF0YS0+aW1hZ2UsIGZh
bHNlKTsKLSAgICBldmFzX29iamVjdF9pbWFnZV9maWxsZWRfc2V0KHNtYXJ0RGF0YS0+aW1hZ2Us
IHRydWUpOwotICAgIGV2YXNfb2JqZWN0X2ltYWdlX3Ntb290aF9zY2FsZV9zZXQoc21hcnREYXRh
LT5pbWFnZSwgc21hcnREYXRhLT56b29tX3dlYWtfc21vb3RoX3NjYWxlKTsKLSAgICBldmFzX29i
amVjdF9wYXNzX2V2ZW50c19zZXQoc21hcnREYXRhLT5pbWFnZSwgdHJ1ZSk7Ci0gICAgZXZhc19v
YmplY3Rfc21hcnRfbWVtYmVyX2FkZChzbWFydERhdGEtPmltYWdlLCBld2tWaWV3KTsKLSAgICBl
dmFzX29iamVjdF9zaG93KHNtYXJ0RGF0YS0+aW1hZ2UpOwotCi0gICAgcHJpdi0+YWNjZWxlcmF0
ZWRDb21wb3NpdGluZ0NvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OkFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdDb250ZXh0Pihld2tWaWV3LCBzbWFydERhdGEtPmltYWdlKTsKLQotICAg
IC8vIFNldCB0aGUgcGl4ZWwgZ2V0IGNhbGxiYWNrLgotICAgIGV2YXNfb2JqZWN0X2ltYWdlX3Bp
eGVsc19nZXRfY2FsbGJhY2tfc2V0KHNtYXJ0RGF0YS0+aW1hZ2UsIF9ld2tfdmlld19hY2NlbGVy
YXRlZF9jb21wb3NpdGluZ19jYiwgcHJpdi0+YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQu
Z2V0KCkpOwotCi0gICAgc21hcnREYXRhLT5ldmVudHNfcmVjdCA9IGV2YXNfb2JqZWN0X3JlY3Rh
bmdsZV9hZGQoc21hcnREYXRhLT5iYXNlLmV2YXMpOwotICAgIGV2YXNfb2JqZWN0X2NvbG9yX3Nl
dChzbWFydERhdGEtPmV2ZW50c19yZWN0LCAwLCAwLCAwLCAwKTsKLSAgICBldmFzX29iamVjdF9z
bWFydF9tZW1iZXJfYWRkKHNtYXJ0RGF0YS0+ZXZlbnRzX3JlY3QsIGV3a1ZpZXcpOwotICAgIGV2
YXNfb2JqZWN0X3Nob3coc21hcnREYXRhLT5ldmVudHNfcmVjdCk7Ci0KLSAgICBzbWFydERhdGEt
Pm1haW5fZnJhbWUgPSBld2tfZnJhbWVfYWRkKHNtYXJ0RGF0YS0+YmFzZS5ldmFzKTsKLSAgICBp
ZiAoIXNtYXJ0RGF0YS0+bWFpbl9mcmFtZSkgewotICAgICAgICBFUlIoIkNvdWxkIG5vdCBjcmVh
dGUgbWFpbiBmcmFtZSBvYmplY3QuIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBp
ZiAoIWV3a19mcmFtZV9pbml0KHNtYXJ0RGF0YS0+bWFpbl9mcmFtZSwgZXdrVmlldywgYWRvcHRQ
dHIoc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmwqPigmcHJpdi0+cGFn
ZS0+bWFpbkZyYW1lKCkubG9hZGVyKCkuY2xpZW50KCkpKSkpIHsKLSAgICAgICAgRVJSKCJDb3Vs
ZCBub3QgaW5pdGlhbGl6ZSBtYWluIGZybWUgb2JqZWN0LiIpOwotICAgICAgICBldmFzX29iamVj
dF9kZWwoc21hcnREYXRhLT5tYWluX2ZyYW1lKTsKLSAgICAgICAgc21hcnREYXRhLT5tYWluX2Zy
YW1lID0gMDsKLQotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIEVXS1ByaXZhdGU6OnNldENv
cmVGcmFtZShzbWFydERhdGEtPm1haW5fZnJhbWUsICZwcml2LT5wYWdlLT5tYWluRnJhbWUoKSk7
Ci0gICAgcHJpdi0+cGFnZS0+bWFpbkZyYW1lKCkudHJlZSgpLnNldE5hbWUoU3RyaW5nKCkpOwot
ICAgIHByaXYtPnBhZ2UtPm1haW5GcmFtZSgpLmluaXQoKTsKLQotICAgIGV2YXNfb2JqZWN0X25h
bWVfc2V0KHNtYXJ0RGF0YS0+bWFpbl9mcmFtZSwgIkVXS19GcmFtZTptYWluIik7Ci0gICAgZXZh
c19vYmplY3Rfc21hcnRfbWVtYmVyX2FkZChzbWFydERhdGEtPm1haW5fZnJhbWUsIGV3a1ZpZXcp
OwotICAgIGV2YXNfb2JqZWN0X3Nob3coc21hcnREYXRhLT5tYWluX2ZyYW1lKTsKLQotI2RlZmlu
ZSBDT05ORUNUKHMsIGMpIGV2YXNfb2JqZWN0X2V2ZW50X2NhbGxiYWNrX2FkZChld2tWaWV3LCBz
LCBjLCBzbWFydERhdGEpCi0gICAgQ09OTkVDVChFVkFTX0NBTExCQUNLX0ZPQ1VTX0lOLCBfZXdr
X3ZpZXdfb25fZm9jdXNfaW4pOwotICAgIENPTk5FQ1QoRVZBU19DQUxMQkFDS19GT0NVU19PVVQs
IF9ld2tfdmlld19vbl9mb2N1c19vdXQpOwotICAgIENPTk5FQ1QoRVZBU19DQUxMQkFDS19NT1VT
RV9XSEVFTCwgX2V3a192aWV3X29uX21vdXNlX3doZWVsKTsKLSAgICBDT05ORUNUKEVWQVNfQ0FM
TEJBQ0tfTU9VU0VfRE9XTiwgX2V3a192aWV3X29uX21vdXNlX2Rvd24pOwotICAgIENPTk5FQ1Qo
RVZBU19DQUxMQkFDS19NT1VTRV9VUCwgX2V3a192aWV3X29uX21vdXNlX3VwKTsKLSAgICBDT05O
RUNUKEVWQVNfQ0FMTEJBQ0tfTU9VU0VfTU9WRSwgX2V3a192aWV3X29uX21vdXNlX21vdmUpOwot
ICAgIENPTk5FQ1QoRVZBU19DQUxMQkFDS19LRVlfRE9XTiwgX2V3a192aWV3X29uX2tleV9kb3du
KTsKLSAgICBDT05ORUNUKEVWQVNfQ0FMTEJBQ0tfS0VZX1VQLCBfZXdrX3ZpZXdfb25fa2V5X3Vw
KTsKLSN1bmRlZiBDT05ORUNUCi19Ci0KLXN0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9kZWwo
RXZhc19PYmplY3QqIGV3a1ZpZXcpCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUKGV3a1ZpZXcsIHNt
YXJ0RGF0YSk7Ci0gICAgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2ID0gc21hcnREYXRhID8g
c21hcnREYXRhLT5fcHJpdiA6IDA7Ci0KLSAgICBld2tfdmlld19zdG9wKGV3a1ZpZXcpOwotICAg
IF9wYXJlbnRfc2MuZGVsKGV3a1ZpZXcpOwotICAgIF9ld2tfdmlld19wcml2X2RlbChwcml2KTsK
LX0KLQotc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X3Jlc2l6ZShFdmFzX09iamVjdCogZXdr
VmlldywgRXZhc19Db29yZCB3aWR0aCwgRXZhc19Db29yZCBoZWlnaHQpCi17Ci0gICAgRVdLX1ZJ
RVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEpOwotICAgIEVXS19WSUVXX1BS
SVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYpOwotCi0gICAgLy8gdGhlc2Ugc2hvdWxk
IGJlIHF1ZXVlZCBhbmQgcHJvY2Vzc2VkIGluIGNhbGN1bGF0ZSBhcyB3ZWxsIQotICAgIGV2YXNf
b2JqZWN0X3Jlc2l6ZShzbWFydERhdGEtPmltYWdlLCB3aWR0aCwgaGVpZ2h0KTsKLSAgICBldmFz
X29iamVjdF9pbWFnZV9zaXplX3NldChzbWFydERhdGEtPmltYWdlLCB3aWR0aCwgaGVpZ2h0KTsK
LSAgICBldmFzX29iamVjdF9pbWFnZV9maWxsX3NldChzbWFydERhdGEtPmltYWdlLCAwLCAwLCB3
aWR0aCwgaGVpZ2h0KTsKLQotICAgIHByaXYtPmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0
LT5yZXNpemUoV2ViQ29yZTo6SW50U2l6ZSh3aWR0aCwgaGVpZ2h0KSk7Ci0KLSAgICBzbWFydERh
dGEtPmNoYW5nZWQuc2l6ZSA9IHRydWU7Ci0gICAgX2V3a192aWV3X3NtYXJ0X2NoYW5nZWQoc21h
cnREYXRhKTsKLX0KLQotc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X21vdmUoRXZhc19PYmpl
Y3QqIGV3a1ZpZXcsIEV2YXNfQ29vcmQgLyp4Ki8sIEV2YXNfQ29vcmQgLyp5Ki8pCi17Ci0gICAg
RVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEpOwotICAgIHNtYXJ0
RGF0YS0+Y2hhbmdlZC5wb3NpdGlvbiA9IHRydWU7Ci0gICAgX2V3a192aWV3X3NtYXJ0X2NoYW5n
ZWQoc21hcnREYXRhKTsKLX0KLQotc3RhdGljIGlubGluZSB2b2lkIF9ld2tfdmlld19zY3JlZW5f
bW92ZSh1aW50MzJfdCogaW1hZ2UsIHNpemVfdCBkZXN0aW5hdGlvblgsIHNpemVfdCBkZXN0aW5h
dGlvblksIHNpemVfdCBzb3VyY2VYLCBzaXplX3Qgc291cmNlWSwgc2l6ZV90IGNvcHlXaWR0aCwg
c2l6ZV90IGNvcHlIZWlnaHQsIHNpemVfdCBpbWFnZVdpZHRoKQotewotICAgIHVpbnQzMl90KiBz
b3VyY2VCZWdpbiA9IGltYWdlICsgKGltYWdlV2lkdGggKiBzb3VyY2VZKSArIHNvdXJjZVg7Ci0g
ICAgdWludDMyX3QqIGRlc3RpbmF0aW9uQmVnaW4gPSBpbWFnZSArIChpbWFnZVdpZHRoICogZGVz
dGluYXRpb25ZKSArIGRlc3RpbmF0aW9uWDsKLQotICAgIHNpemVfdCBjb3B5TGVuZ3RoID0gY29w
eVdpZHRoICogNDsKLQotICAgIGludCBtb3ZlTGluZVVwRG93bjsKLSAgICBpbnQgcm93OwotCi0g
ICAgaWYgKHNvdXJjZVkgPj0gZGVzdGluYXRpb25ZKSB7Ci0gICAgICAgIHJvdyA9IDA7Ci0gICAg
ICAgIG1vdmVMaW5lVXBEb3duID0gMTsKLSAgICB9IGVsc2UgewotICAgICAgICByb3cgPSBjb3B5
SGVpZ2h0IC0gMTsKLSAgICAgICAgbW92ZUxpbmVVcERvd24gPSAtMTsKLSAgICB9Ci0KLSAgICB1
aW50MzJfdCogc291cmNlLCAqIGRlc3RpbmF0aW9uOwotICAgIGlmICgoZGVzdGluYXRpb25YID4g
c291cmNlWCAmJiBkZXN0aW5hdGlvblggPCBzb3VyY2VYICsgY29weVdpZHRoKQotICAgICAgICB8
fCAoZGVzdGluYXRpb25YIDwgc291cmNlWCAmJiBkZXN0aW5hdGlvblggKyBjb3B5V2lkdGggPiBz
b3VyY2VYKSkgewotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvcHlIZWlnaHQ7ICsr
aSwgcm93ICs9IG1vdmVMaW5lVXBEb3duKSB7Ci0gICAgICAgICAgICBzb3VyY2UgPSBzb3VyY2VC
ZWdpbiArIChpbWFnZVdpZHRoICogcm93KTsKLSAgICAgICAgICAgIGRlc3RpbmF0aW9uID0gZGVz
dGluYXRpb25CZWdpbiArIChpbWFnZVdpZHRoICogcm93KTsKLSAgICAgICAgICAgIG1lbW1vdmUo
ZGVzdGluYXRpb24sIHNvdXJjZSwgY29weUxlbmd0aCk7Ci0gICAgICAgIH0KLSAgICB9IGVsc2Ug
ewotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvcHlIZWlnaHQ7ICsraSwgcm93ICs9
IG1vdmVMaW5lVXBEb3duKSB7Ci0gICAgICAgICAgICBzb3VyY2UgPSBzb3VyY2VCZWdpbiArIChp
bWFnZVdpZHRoICogcm93KTsKLSAgICAgICAgICAgIGRlc3RpbmF0aW9uID0gZGVzdGluYXRpb25C
ZWdpbiArIChpbWFnZVdpZHRoICogcm93KTsKLSAgICAgICAgICAgIG1lbWNweShkZXN0aW5hdGlv
biwgc291cmNlLCBjb3B5TGVuZ3RoKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotc3RhdGljIHZv
aWQgX2V3a192aWV3X3NtYXJ0X2NhbGN1bGF0ZShFdmFzX09iamVjdCogZXdrVmlldykKLXsKLSAg
ICBFV0tfVklFV19TRF9HRVQoZXdrVmlldywgc21hcnREYXRhKTsKLSAgICBFV0tfVklFV19QUklW
X0dFVChzbWFydERhdGEsIHByaXYpOwotICAgIEV2YXNfQ29vcmQgeCwgeSwgd2lkdGgsIGhlaWdo
dDsKLQotICAgIHNtYXJ0RGF0YS0+Y2hhbmdlZC5hbnkgPSBmYWxzZTsKLQotICAgIGlmICghc21h
cnREYXRhLT5tYWluX2ZyYW1lKQotICAgICAgICByZXR1cm47Ci0KLSAgICBldmFzX29iamVjdF9n
ZW9tZXRyeV9nZXQoZXdrVmlldywgJngsICZ5LCAmd2lkdGgsICZoZWlnaHQpOwotCi0gICAgREJH
KCJld2tWaWV3PSVwIGdlbz1bJWQsICVkICsgJWR4JWRdLCBjaGFuZ2VkOiBzaXplPSVodXUiLAot
ICAgICAgICBld2tWaWV3LCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBzbWFydERhdGEtPmNoYW5nZWQu
c2l6ZSk7Ci0KLSAgICBpZiAoc21hcnREYXRhLT5jaGFuZ2VkLnNpemUgJiYgKCh3aWR0aCAhPSBz
bWFydERhdGEtPnZpZXcudykgfHwgKGhlaWdodCAhPSBzbWFydERhdGEtPnZpZXcuaCkpKSB7Ci0g
ICAgICAgIFdlYkNvcmU6OkZyYW1lVmlldyogdmlldyA9IHByaXYtPnBhZ2UtPm1haW5GcmFtZSgp
LnZpZXcoKTsKLSAgICAgICAgaWYgKHZpZXcpIHsKLSAgICAgICAgICAgIHZpZXctPnJlc2l6ZSh3
aWR0aCwgaGVpZ2h0KTsKLSAgICAgICAgICAgIHZpZXctPmZvcmNlTGF5b3V0KCk7Ci0gICAgICAg
ICAgICB2aWV3LT5hZGp1c3RWaWV3U2l6ZSgpOwotICAgICAgICB9Ci0gICAgICAgIGV2YXNfb2Jq
ZWN0X3Jlc2l6ZShzbWFydERhdGEtPm1haW5fZnJhbWUsIHdpZHRoLCBoZWlnaHQpOwotICAgICAg
ICBldmFzX29iamVjdF9yZXNpemUoc21hcnREYXRhLT5ldmVudHNfcmVjdCwgd2lkdGgsIGhlaWdo
dCk7Ci0gICAgICAgIHNtYXJ0RGF0YS0+Y2hhbmdlZC5mcmFtZV9yZWN0ID0gdHJ1ZTsKLSAgICAg
ICAgc21hcnREYXRhLT52aWV3LncgPSB3aWR0aDsKLSAgICAgICAgc21hcnREYXRhLT52aWV3Lmgg
PSBoZWlnaHQ7Ci0KLSAgICAgICAgLy8gVGhpcyBjYWxsYmFjayBpcyBhIGdvb2QgcGxhY2UgZS5n
LiB0byBjaGFuZ2UgZml4ZWQgbGF5b3V0IHNpemUgKGV3a192aWV3X2ZpeGVkX2xheW91dF9zaXpl
X3NldCkuCi0gICAgICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdrVmlldywg
InZpZXcscmVzaXplZCIsIDApOwotICAgIH0KLSAgICBzbWFydERhdGEtPmNoYW5nZWQuc2l6ZSA9
IGZhbHNlOwotCi0gICAgaWYgKHNtYXJ0RGF0YS0+Y2hhbmdlZC5wb3NpdGlvbiAmJiAoKHggIT0g
c21hcnREYXRhLT52aWV3LngpIHx8ICh5ICE9IHNtYXJ0RGF0YS0+dmlldy55KSkpIHsKLSAgICAg
ICAgZXZhc19vYmplY3RfbW92ZShzbWFydERhdGEtPm1haW5fZnJhbWUsIHgsIHkpOwotICAgICAg
ICBldmFzX29iamVjdF9tb3ZlKHNtYXJ0RGF0YS0+aW1hZ2UsIHgsIHkpOwotICAgICAgICBldmFz
X29iamVjdF9tb3ZlKHNtYXJ0RGF0YS0+ZXZlbnRzX3JlY3QsIHgsIHkpOwotICAgICAgICBzbWFy
dERhdGEtPmNoYW5nZWQuZnJhbWVfcmVjdCA9IHRydWU7Ci0gICAgICAgIHNtYXJ0RGF0YS0+dmll
dy54ID0geDsKLSAgICAgICAgc21hcnREYXRhLT52aWV3LnkgPSB5OwotICAgIH0KLSAgICBzbWFy
dERhdGEtPmNoYW5nZWQucG9zaXRpb24gPSBmYWxzZTsKLQotICAgIGlmIChzbWFydERhdGEtPmNo
YW5nZWQuZnJhbWVfcmVjdCkgewotICAgICAgICBwcml2LT5wYWdlLT5tYWluRnJhbWUoKS52aWV3
KCktPmZyYW1lUmVjdHNDaGFuZ2VkKCk7Ci0gICAgICAgIHNtYXJ0RGF0YS0+Y2hhbmdlZC5mcmFt
ZV9yZWN0ID0gZmFsc2U7Ci0gICAgfQotfQotCi1zdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRf
c2hvdyhFdmFzX09iamVjdCogZXdrVmlldykKLXsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVU
VVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJO
KHNtYXJ0RGF0YSwgcHJpdik7Ci0KLSAgICBpZiAoZXZhc19vYmplY3RfY2xpcGVlc19nZXQoc21h
cnREYXRhLT5iYXNlLmNsaXBwZXIpKQotICAgICAgICBldmFzX29iamVjdF9zaG93KHNtYXJ0RGF0
YS0+YmFzZS5jbGlwcGVyKTsKLSAgICBldmFzX29iamVjdF9zaG93KHNtYXJ0RGF0YS0+aW1hZ2Up
OwotfQotCi1zdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfaGlkZShFdmFzX09iamVjdCogZXdr
VmlldykKLXsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0
YSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdik7Ci0K
LSAgICBldmFzX29iamVjdF9oaWRlKHNtYXJ0RGF0YS0+YmFzZS5jbGlwcGVyKTsKLSAgICBldmFz
X29iamVjdF9oaWRlKHNtYXJ0RGF0YS0+aW1hZ2UpOwotfQotCi1zdGF0aWMgRWluYV9Cb29sIF9l
d2tfdmlld19zbWFydF9jb250ZW50c19yZXNpemUoRXdrX1ZpZXdfU21hcnRfRGF0YSosIGludCAv
KndpZHRoKi8sIGludCAvKmhlaWdodCovKQotewotICAgIHJldHVybiB0cnVlOwotfQotCi1zdGF0
aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFydF96b29tX3NldChFd2tfVmlld19TbWFydF9EYXRh
KiBzbWFydERhdGEsIGZsb2F0IHpvb20sIEV2YXNfQ29vcmQgY2VudGVyWCwgRXZhc19Db29yZCBj
ZW50ZXJZKQotewotICAgIGRvdWJsZSBweCwgcHk7Ci0gICAgRXZhc19Db29yZCB4LCB5LCB3aWR0
aCwgaGVpZ2h0OwotICAgIEVpbmFfQm9vbCByZXN1bHQ7Ci0KLSAgICBld2tfZnJhbWVfc2Nyb2xs
X3NpemVfZ2V0KHNtYXJ0RGF0YS0+bWFpbl9mcmFtZSwgJndpZHRoLCAmaGVpZ2h0KTsKLSAgICBl
d2tfZnJhbWVfc2Nyb2xsX3Bvc19nZXQoc21hcnREYXRhLT5tYWluX2ZyYW1lLCAmeCwgJnkpOwot
Ci0gICAgaWYgKHdpZHRoICsgc21hcnREYXRhLT52aWV3LncgPiAwKQotICAgICAgICBweCA9IHN0
YXRpY19jYXN0PGRvdWJsZT4oeCArIGNlbnRlclgpIC8gKHdpZHRoICsgc21hcnREYXRhLT52aWV3
LncpOwotICAgIGVsc2UKLSAgICAgICAgcHggPSAwLjA7Ci0KLSAgICBpZiAoaGVpZ2h0ICsgc21h
cnREYXRhLT52aWV3LmggPiAwKQotICAgICAgICBweSA9IHN0YXRpY19jYXN0PGRvdWJsZT4oeSAr
IGNlbnRlclkpIC8gKGhlaWdodCArIHNtYXJ0RGF0YS0+dmlldy5oKTsKLSAgICBlbHNlCi0gICAg
ICAgIHB5ID0gMC4wOwotCi0gICAgcmVzdWx0ID0gZXdrX2ZyYW1lX3BhZ2Vfem9vbV9zZXQoc21h
cnREYXRhLT5tYWluX2ZyYW1lLCB6b29tKTsKLQotICAgIGV3a19mcmFtZV9zY3JvbGxfc2l6ZV9n
ZXQoc21hcnREYXRhLT5tYWluX2ZyYW1lLCAmd2lkdGgsICZoZWlnaHQpOwotICAgIHggPSAod2lk
dGggKyBzbWFydERhdGEtPnZpZXcudykgKiBweCAtIGNlbnRlclg7Ci0gICAgeSA9IChoZWlnaHQg
KyBzbWFydERhdGEtPnZpZXcuaCkgKiBweSAtIGNlbnRlclk7Ci0gICAgZXdrX2ZyYW1lX3Njcm9s
bF9zZXQoc21hcnREYXRhLT5tYWluX2ZyYW1lLCB4LCB5KTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotCi1zdGF0aWMgdm9pZCBfZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9tYXJrX3N0b3AoRXdrX1Zp
ZXdfU21hcnRfRGF0YSogc21hcnREYXRhKQotewotICAgIHNtYXJ0RGF0YS0+YW5pbWF0ZWRfem9v
bS56b29tLnN0YXJ0ID0gMC4wOwotICAgIHNtYXJ0RGF0YS0+YW5pbWF0ZWRfem9vbS56b29tLmVu
ZCA9IDAuMDsKLSAgICBzbWFydERhdGEtPmFuaW1hdGVkX3pvb20uem9vbS5jdXJyZW50ID0gMC4w
OwotfQotCi1zdGF0aWMgdm9pZCBfZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9maW5pc2goRXdrX1Zp
ZXdfU21hcnRfRGF0YSogc21hcnREYXRhKQotewotICAgIEVXS19WSUVXX1BSSVZfR0VUKHNtYXJ0
RGF0YSwgcHJpdik7Ci0gICAgZWNvcmVfYW5pbWF0b3JfZGVsKHByaXYtPmFuaW1hdGVkWm9vbS5h
bmltYXRvcik7Ci0gICAgcHJpdi0+YW5pbWF0ZWRab29tLmFuaW1hdG9yID0gMDsKLSAgICBfZXdr
X3ZpZXdfem9vbV9hbmltYXRlZF9tYXJrX3N0b3Aoc21hcnREYXRhKTsKLSAgICBldmFzX29iamVj
dF9zbWFydF9jYWxsYmFja19jYWxsKHNtYXJ0RGF0YS0+c2VsZiwgInpvb20sYW5pbWF0ZWQsZW5k
IiwgMCk7Ci19Ci0KLXN0YXRpYyBmbG9hdCBfZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9jdXJyZW50
KEV3a19WaWV3X1ByaXZhdGVfRGF0YSogcHJpdikKLXsKLSAgICBkb3VibGUgbm93ID0gZWNvcmVf
bG9vcF90aW1lX2dldCgpOwotICAgIGRvdWJsZSBkZWx0YSA9IG5vdyAtIHByaXYtPmFuaW1hdGVk
Wm9vbS50aW1lLnN0YXJ0OwotCi0gICAgaWYgKGRlbHRhID4gcHJpdi0+YW5pbWF0ZWRab29tLnRp
bWUuZHVyYXRpb24pCi0gICAgICAgIGRlbHRhID0gcHJpdi0+YW5pbWF0ZWRab29tLnRpbWUuZHVy
YXRpb247Ci0gICAgaWYgKGRlbHRhIDwgMC4wKSAvLyB0aW1lIHdlbnQgYmFjaywgY2xvY2sgYWRq
dXN0ZWQ/Ci0gICAgICAgIGRlbHRhID0gMC4wOwotCi0gICAgZGVsdGEgLz0gcHJpdi0+YW5pbWF0
ZWRab29tLnRpbWUuZHVyYXRpb247Ci0KLSAgICByZXR1cm4gKChwcml2LT5hbmltYXRlZFpvb20u
em9vbS5yYW5nZSAqIGRlbHRhKQotICAgICAgICAgICAgKyBwcml2LT5hbmltYXRlZFpvb20uem9v
bS5zdGFydCk7Ci19Ci0KLXN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X3pvb21fd2Vh
a19zZXQoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhLCBmbG9hdCB6b29tLCBFdmFzX0Nv
b3JkIGNlbnRlclgsIEV2YXNfQ29vcmQgY2VudGVyWSkKLXsKLSAgICBmbG9hdCBzY2FsZSA9IHpv
b20gLyBzbWFydERhdGEtPmFuaW1hdGVkX3pvb20uem9vbS5zdGFydDsKLSAgICBFdmFzX0Nvb3Jk
IHcgPSBzbWFydERhdGEtPnZpZXcudyAqIHNjYWxlOwotICAgIEV2YXNfQ29vcmQgaCA9IHNtYXJ0
RGF0YS0+dmlldy5oICogc2NhbGU7Ci0gICAgRXZhc19Db29yZCBkZWx0YVgsIGRlbHRhWSwgY29u
dGVudFdpZHRoLCBjb250ZW50SGVpZ2h0OwotICAgIEV2YXNfT2JqZWN0KiBjbGlwID0gZXZhc19v
YmplY3RfY2xpcF9nZXQoc21hcnREYXRhLT5pbWFnZSk7Ci0KLSAgICBld2tfZnJhbWVfY29udGVu
dHNfc2l6ZV9nZXQoc21hcnREYXRhLT5tYWluX2ZyYW1lLCAmY29udGVudFdpZHRoLCAmY29udGVu
dEhlaWdodCk7Ci0gICAgaWYgKHNtYXJ0RGF0YS0+dmlldy53ID4gMCAmJiBzbWFydERhdGEtPnZp
ZXcuaCA+IDApIHsKLSAgICAgICAgZGVsdGFYID0gKHcgKiAoc21hcnREYXRhLT52aWV3LncgLSBj
ZW50ZXJYKSkgLyBzbWFydERhdGEtPnZpZXcudzsKLSAgICAgICAgZGVsdGFZID0gKGggKiAoc21h
cnREYXRhLT52aWV3LmggLSBjZW50ZXJZKSkgLyBzbWFydERhdGEtPnZpZXcuaDsKLSAgICB9IGVs
c2UgewotICAgICAgICBkZWx0YVggPSAwOwotICAgICAgICBkZWx0YVkgPSAwOwotICAgIH0KLQot
ICAgIGV2YXNfb2JqZWN0X2ltYWdlX2ZpbGxfc2V0KHNtYXJ0RGF0YS0+aW1hZ2UsIGNlbnRlclgg
KyBkZWx0YVgsIGNlbnRlclkgKyBkZWx0YVksIHcsIGgpOwotCi0gICAgaWYgKHNtYXJ0RGF0YS0+
dmlldy53ID4gMCAmJiBzbWFydERhdGEtPnZpZXcuaCA+IDApIHsKLSAgICAgICAgZGVsdGFYID0g
KChzbWFydERhdGEtPnZpZXcudyAtIHcpICogY2VudGVyWCkgLyBzbWFydERhdGEtPnZpZXcudzsK
LSAgICAgICAgZGVsdGFZID0gKChzbWFydERhdGEtPnZpZXcuaCAtIGgpICogY2VudGVyWSkgLyBz
bWFydERhdGEtPnZpZXcuaDsKLSAgICB9IGVsc2UgewotICAgICAgICBkZWx0YVggPSAwOwotICAg
ICAgICBkZWx0YVkgPSAwOwotICAgIH0KLSAgICBldmFzX29iamVjdF9tb3ZlKGNsaXAsIHNtYXJ0
RGF0YS0+dmlldy54ICsgZGVsdGFYLCBzbWFydERhdGEtPnZpZXcueSArIGRlbHRhWSk7Ci0KLSAg
ICBpZiAoY29udGVudFdpZHRoIDwgc21hcnREYXRhLT52aWV3LncpCi0gICAgICAgIHcgPSBjb250
ZW50V2lkdGggKiBzY2FsZTsKLSAgICBpZiAoY29udGVudEhlaWdodCA8IHNtYXJ0RGF0YS0+dmll
dy5oKQotICAgICAgICBoID0gY29udGVudEhlaWdodCAqIHNjYWxlOwotICAgIGV2YXNfb2JqZWN0
X3Jlc2l6ZShjbGlwLCB3LCBoKTsKLQotICAgIHJldHVybiB0cnVlOwotfQotCi1zdGF0aWMgdm9p
ZCBfZXdrX3ZpZXdfc21hcnRfem9vbV93ZWFrX3Ntb290aF9zY2FsZV9zZXQoRXdrX1ZpZXdfU21h
cnRfRGF0YSogc21hcnREYXRhLCBFaW5hX0Jvb2wgc21vb3RoX3NjYWxlKQotewotICAgIGV2YXNf
b2JqZWN0X2ltYWdlX3Ntb290aF9zY2FsZV9zZXQoc21hcnREYXRhLT5pbWFnZSwgc21vb3RoX3Nj
YWxlKTsKLX0KLQotc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfem9vbV9hbmltYXRvcl9jYih2
b2lkKiBkYXRhKQotewotICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSA9IHN0YXRp
Y19jYXN0PEV3a19WaWV3X1NtYXJ0X0RhdGEqPihkYXRhKTsKLSAgICBFdmFzX0Nvb3JkIGNlbnRl
clgsIGNlbnRlclk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVQoc21hcnREYXRhLCBwcml2KTsKLSAg
ICBkb3VibGUgbm93ID0gZWNvcmVfbG9vcF90aW1lX2dldCgpOwotCi0gICAgY2VudGVyWCA9IHBy
aXYtPmFuaW1hdGVkWm9vbS5jZW50ZXIueDsKLSAgICBjZW50ZXJZID0gcHJpdi0+YW5pbWF0ZWRa
b29tLmNlbnRlci55OwotCi0gICAgLy8gVE9ETzogcHJvZ3Jlc3NpdmVseSBjZW50ZXIgKGN4LCBj
eSkgLT4gKHZpZXcueCArIHZpZXcuaC8yLCB2aWV3LnkgKyB2aWV3LmgvMikKLSAgICBpZiAoY2Vu
dGVyWCA+PSBzbWFydERhdGEtPnZpZXcudykKLSAgICAgICAgY2VudGVyWCA9IHNtYXJ0RGF0YS0+
dmlldy53IC0gMTsKLSAgICBpZiAoY2VudGVyWSA+PSBzbWFydERhdGEtPnZpZXcuaCkKLSAgICAg
ICAgY2VudGVyWSA9IHNtYXJ0RGF0YS0+dmlldy5oIC0gMTsKLQotICAgIGlmICgobm93ID49IHBy
aXYtPmFuaW1hdGVkWm9vbS50aW1lLmVuZCkKLSAgICAgICAgfHwgKG5vdyA8IHByaXYtPmFuaW1h
dGVkWm9vbS50aW1lLnN0YXJ0KSkgewotICAgICAgICBfZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9m
aW5pc2goc21hcnREYXRhKTsKLSAgICAgICAgZXdrX3ZpZXdfem9vbV9zZXQoc21hcnREYXRhLT5z
ZWxmLCBwcml2LT5hbmltYXRlZFpvb20uem9vbS5lbmQsIGNlbnRlclgsIGNlbnRlclkpOwotICAg
ICAgICBzbWFydERhdGEtPmFwaS0+c2MuY2FsY3VsYXRlKHNtYXJ0RGF0YS0+c2VsZik7Ci0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBzbWFydERhdGEtPmFuaW1hdGVkX3pvb20u
em9vbS5jdXJyZW50ID0gX2V3a192aWV3X3pvb21fYW5pbWF0ZWRfY3VycmVudChwcml2KTsKLSAg
ICBzbWFydERhdGEtPmFwaS0+em9vbV93ZWFrX3NldChzbWFydERhdGEsIHNtYXJ0RGF0YS0+YW5p
bWF0ZWRfem9vbS56b29tLmN1cnJlbnQsIGNlbnRlclgsIGNlbnRlclkpOwotICAgIHJldHVybiB0
cnVlOwotfQotCi1zdGF0aWMgdm9pZCBfZXdrX3ZpZXdfem9vbV9hbmltYXRpb25fc3RhcnQoRXdr
X1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhKQotewotICAgIEVXS19WSUVXX1BSSVZfR0VUX09S
X1JFVFVSTihzbWFydERhdGEsIHByaXYpOwotICAgIGlmIChwcml2LT5hbmltYXRlZFpvb20uYW5p
bWF0b3IpCi0gICAgICAgIHJldHVybjsKLSAgICBwcml2LT5hbmltYXRlZFpvb20uYW5pbWF0b3Ig
PSBlY29yZV9hbmltYXRvcl9hZGQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIChfZXdrX3ZpZXdfem9vbV9hbmltYXRvcl9jYiwgc21hcnREYXRhKTsKLX0KLQotc3RhdGlj
IFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRlcyBfZXdrX3ZpZXdfdmlld3BvcnRfYXR0cmlidXRl
c19jb21wdXRlKEV3a19WaWV3X1ByaXZhdGVfRGF0YSogcHJpdikKLXsKLSAgICBpbnQgZGVza3Rv
cFdpZHRoID0gOTgwOwotICAgIFdlYkNvcmU6OkludFJlY3QgYXZhaWxhYmxlUmVjdCA9IGVuY2xv
c2luZ0ludFJlY3QocHJpdi0+cGFnZS0+Y2hyb21lKCkuY2xpZW50KCkucGFnZVJlY3QoKSk7Ci0g
ICAgV2ViQ29yZTo6SW50UmVjdCBkZXZpY2VSZWN0ID0gZW5jbG9zaW5nSW50UmVjdChwcml2LT5w
YWdlLT5jaHJvbWUoKS5jbGllbnQoKS53aW5kb3dSZWN0KCkpOwotCi0gICAgV2ViQ29yZTo6Vmll
d3BvcnRBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMgPSBXZWJDb3JlOjpjb21wdXRlVmlld3BvcnRBdHRy
aWJ1dGVzKHByaXYtPnZpZXdwb3J0QXJndW1lbnRzLCBkZXNrdG9wV2lkdGgsIGRldmljZVJlY3Qu
d2lkdGgoKSwgZGV2aWNlUmVjdC5oZWlnaHQoKSwgcHJpdi0+cGFnZS0+ZGV2aWNlU2NhbGVGYWN0
b3IoKSwgYXZhaWxhYmxlUmVjdC5zaXplKCkpOwotICAgIFdlYkNvcmU6OnJlc3RyaWN0TWluaW11
bVNjYWxlRmFjdG9yVG9WaWV3cG9ydFNpemUoYXR0cmlidXRlcywgYXZhaWxhYmxlUmVjdC5zaXpl
KCksIHByaXYtPnBhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCkpOwotICAgIFdlYkNvcmU6OnJlc3Ry
aWN0U2NhbGVGYWN0b3JUb0luaXRpYWxTY2FsZUlmTm90VXNlclNjYWxhYmxlKGF0dHJpYnV0ZXMp
OwotCi0gICAgcmV0dXJuIGF0dHJpYnV0ZXM7Ci19Ci0KLXN0YXRpYyBFaW5hX0Jvb2wgX2V3a192
aWV3X3NtYXJ0X2Rpc2FibGVfcmVuZGVyKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSkK
LXsKLSAgICBXQVJOKCJub3Qgc3VwcG9ydGVkIGJ5IGVuZ2luZS4gc21hcnREYXRhPSVwIiwgc21h
cnREYXRhKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXN0YXRpYyBFaW5hX0Jvb2wgX2V3a192
aWV3X3NtYXJ0X2VuYWJsZV9yZW5kZXIoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhKQot
ewotICAgIFdBUk4oIm5vdCBzdXBwb3J0ZWQgYnkgZW5naW5lLiBzbWFydERhdGE9JXAiLCBzbWFy
dERhdGEpOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQotc3RhdGljIGNvbnN0IGNoYXIqIF9ld2tf
dmlld19lZGl0b3JfY29tbWFuZF9zdHJpbmdfZ2V0KEV3a19WaWV3X1ByaXZhdGVfRGF0YSosIEV3
a19FZGl0b3JfQ29tbWFuZCBld2tDb21tYW5kKQotewotICAgIHN0YXRpYyBFZmxVbmlxdWVQdHI8
RWluYV9IYXNoPiBlZGl0b3JDb21tYW5kSGFzaDsKLQotICAgIGlmICghZWRpdG9yQ29tbWFuZEhh
c2gpIHsKLSAgICAgICAgZWRpdG9yQ29tbWFuZEhhc2ggPSBFZmxVbmlxdWVQdHI8RWluYV9IYXNo
PihlaW5hX2hhc2hfaW50MzJfbmV3KDApKTsKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGVkaXRv
ckNvbW1hbmRzW2ldLmV3a0VkaXRvckNvbW1hbmQgIT0gRVdLX0VESVRPUl9DT01NQU5EX05PTkU7
IGkrKykKLSAgICAgICAgICAgIGVpbmFfaGFzaF9hZGQoZWRpdG9yQ29tbWFuZEhhc2guZ2V0KCks
ICZlZGl0b3JDb21tYW5kc1tpXS5ld2tFZGl0b3JDb21tYW5kLCBlZGl0b3JDb21tYW5kc1tpXS5l
ZGl0b3JDb21tYW5kU3RyaW5nKTsKLSAgICB9Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgY2hhcio+KGVpbmFfaGFzaF9maW5kKGVkaXRvckNvbW1hbmRIYXNoLmdldCgpLCAmZXdr
Q29tbWFuZCkpOwotfQotCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc21hcnRfc2V0KEV3a19WaWV3X1Nt
YXJ0X0NsYXNzKiBhcGkpCi17Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGFw
aSwgZmFsc2UpOwotCi0gICAgaWYgKGFwaS0+dmVyc2lvbiAhPSBFV0tfVklFV19TTUFSVF9DTEFT
U19WRVJTSU9OKSB7Ci0gICAgICAgIEVJTkFfTE9HX0NSSVQKLSAgICAgICAgICAgICgiRXdrX1Zp
ZXdfU21hcnRfQ2xhc3MgJXAgaXMgdmVyc2lvbiAlbHUgd2hpbGUgJWx1IHdhcyBleHBlY3RlZC4i
LAotICAgICAgICAgICAgYXBpLCBhcGktPnZlcnNpb24sIEVXS19WSUVXX1NNQVJUX0NMQVNTX1ZF
UlNJT04pOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgaWYgKEVJTkFfVU5M
SUtFTFkoIV9wYXJlbnRfc2MuYWRkKSkKLSAgICAgICAgZXZhc19vYmplY3Rfc21hcnRfY2xpcHBl
ZF9zbWFydF9zZXQoJl9wYXJlbnRfc2MpOwotCi0gICAgZXZhc19vYmplY3Rfc21hcnRfY2xpcHBl
ZF9zbWFydF9zZXQoJmFwaS0+c2MpOwotICAgIGFwaS0+c2MuYWRkID0gX2V3a192aWV3X3NtYXJ0
X2FkZDsKLSAgICBhcGktPnNjLmRlbCA9IF9ld2tfdmlld19zbWFydF9kZWw7Ci0gICAgYXBpLT5z
Yy5yZXNpemUgPSBfZXdrX3ZpZXdfc21hcnRfcmVzaXplOwotICAgIGFwaS0+c2MubW92ZSA9IF9l
d2tfdmlld19zbWFydF9tb3ZlOwotICAgIGFwaS0+c2MuY2FsY3VsYXRlID0gX2V3a192aWV3X3Nt
YXJ0X2NhbGN1bGF0ZTsKLSAgICBhcGktPnNjLnNob3cgPSBfZXdrX3ZpZXdfc21hcnRfc2hvdzsK
LSAgICBhcGktPnNjLmhpZGUgPSBfZXdrX3ZpZXdfc21hcnRfaGlkZTsKLSAgICBhcGktPnNjLmRh
dGEgPSBld2tWaWV3VHlwZVN0cmluZzsgLyogdXNlZCBieSB0eXBlIGNoZWNraW5nICovCi0gICAg
YXBpLT5zYy5jYWxsYmFja3MgPSBfZXdrX3ZpZXdfY2FsbGJhY2tfbmFtZXM7Ci0KLSAgICBhcGkt
PmNvbnRlbnRzX3Jlc2l6ZSA9IF9ld2tfdmlld19zbWFydF9jb250ZW50c19yZXNpemU7Ci0gICAg
YXBpLT56b29tX3NldCA9IF9ld2tfdmlld19zbWFydF96b29tX3NldDsKLSAgICBhcGktPnpvb21f
d2Vha19zZXQgPSBfZXdrX3ZpZXdfc21hcnRfem9vbV93ZWFrX3NldDsKLSAgICBhcGktPnpvb21f
d2Vha19zbW9vdGhfc2NhbGVfc2V0ID0gX2V3a192aWV3X3NtYXJ0X3pvb21fd2Vha19zbW9vdGhf
c2NhbGVfc2V0OwotICAgIGFwaS0+ZGlzYWJsZV9yZW5kZXIgPSBfZXdrX3ZpZXdfc21hcnRfZGlz
YWJsZV9yZW5kZXI7Ci0gICAgYXBpLT5lbmFibGVfcmVuZGVyID0gX2V3a192aWV3X3NtYXJ0X2Vu
YWJsZV9yZW5kZXI7Ci0KLSAgICBhcGktPmZvY3VzX2luID0gX2V3a192aWV3X3NtYXJ0X2ZvY3Vz
X2luOwotICAgIGFwaS0+Zm9jdXNfb3V0ID0gX2V3a192aWV3X3NtYXJ0X2ZvY3VzX291dDsKLSAg
ICBhcGktPm1vdXNlX3doZWVsID0gX2V3a192aWV3X3NtYXJ0X21vdXNlX3doZWVsOwotICAgIGFw
aS0+bW91c2VfZG93biA9IF9ld2tfdmlld19zbWFydF9tb3VzZV9kb3duOwotICAgIGFwaS0+bW91
c2VfdXAgPSBfZXdrX3ZpZXdfc21hcnRfbW91c2VfdXA7Ci0gICAgYXBpLT5tb3VzZV9tb3ZlID0g
X2V3a192aWV3X3NtYXJ0X21vdXNlX21vdmU7Ci0gICAgYXBpLT5rZXlfZG93biA9IF9ld2tfdmll
d19zbWFydF9rZXlfZG93bjsKLSAgICBhcGktPmtleV91cCA9IF9ld2tfdmlld19zbWFydF9rZXlf
dXA7Ci0KLSAgICBhcGktPmFkZF9jb25zb2xlX21lc3NhZ2UgPSBfZXdrX3ZpZXdfc21hcnRfYWRk
X2NvbnNvbGVfbWVzc2FnZTsKLSAgICBhcGktPnJ1bl9qYXZhc2NyaXB0X2FsZXJ0ID0gX2V3a192
aWV3X3NtYXJ0X3J1bl9qYXZhc2NyaXB0X2FsZXJ0OwotICAgIGFwaS0+cnVuX2phdmFzY3JpcHRf
Y29uZmlybSA9IF9ld2tfdmlld19zbWFydF9ydW5famF2YXNjcmlwdF9jb25maXJtOwotICAgIGFw
aS0+cnVuX2JlZm9yZV91bmxvYWRfY29uZmlybSA9IF9ld2tfdmlld19zbWFydF9ydW5fYmVmb3Jl
X3VubG9hZF9jb25maXJtOwotICAgIGFwaS0+cnVuX2phdmFzY3JpcHRfcHJvbXB0ID0gX2V3a192
aWV3X3NtYXJ0X3J1bl9qYXZhc2NyaXB0X3Byb21wdDsKLSAgICBhcGktPnNob3VsZF9pbnRlcnJ1
cHRfamF2YXNjcmlwdCA9IF9ld2tfdmlld19zbWFydF9zaG91bGRfaW50ZXJydXB0X2phdmFzY3Jp
cHQ7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotc3RhdGljIGlubGluZSBFdmFzX1NtYXJ0KiBf
ZXdrX3ZpZXdfc21hcnRfY2xhc3NfbmV3KCkKLXsKLSAgICBzdGF0aWMgRXdrX1ZpZXdfU21hcnRf
Q2xhc3MgYXBpID0gRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9OQU1FX1ZFUlNJT04oZXdrVmll
d1R5cGVTdHJpbmcpOwotICAgIHN0YXRpYyBFdmFzX1NtYXJ0KiBzbWFydCA9IDA7Ci0KLSAgICBp
ZiAoRUlOQV9VTkxJS0VMWSghc21hcnQpKSB7Ci0gICAgICAgIGV3a192aWV3X3NtYXJ0X3NldCgm
YXBpKTsKLSAgICAgICAgc21hcnQgPSBldmFzX3NtYXJ0X2NsYXNzX25ldygmYXBpLnNjKTsKLSAg
ICB9Ci0KLSAgICByZXR1cm4gc21hcnQ7Ci19Ci0KLUV2YXNfT2JqZWN0KiBld2tfdmlld19hZGQo
RXZhcyogY2FudmFzKQotewotICAgIHJldHVybiBldmFzX29iamVjdF9zbWFydF9hZGQoY2FudmFz
LCBfZXdrX3ZpZXdfc21hcnRfY2xhc3NfbmV3KCkpOwotfQotCi12b2lkIGV3a192aWV3X2ZpeGVk
X2xheW91dF9zaXplX3NldChFdmFzX09iamVjdCogZXdrVmlldywgRXZhc19Db29yZCB3aWR0aCwg
RXZhc19Db29yZCBoZWlnaHQpCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tW
aWV3LCBzbWFydERhdGEpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERh
dGEsIHByaXYpOwotCi0gICAgV2ViQ29yZTo6RnJhbWVWaWV3KiB2aWV3ID0gcHJpdi0+cGFnZS0+
bWFpbkZyYW1lKCkudmlldygpOwotICAgIGlmICghdmlldykKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgV2ViQ29yZTo6SW50U2l6ZSBsYXlvdXRTaXplKHdpZHRoLCBoZWlnaHQpOwotICAgIGlmIChs
YXlvdXRTaXplLndpZHRoKCkgPD0gMCAmJiBsYXlvdXRTaXplLmhlaWdodCgpIDw9IDApIHsKLSAg
ICAgICAgaWYgKCF2aWV3LT51c2VGaXhlZExheW91dCgpKQotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICB2aWV3LT5zZXRVc2VGaXhlZExheW91dChmYWxzZSk7Ci0gICAgfSBlbHNlIHsKLSAg
ICAgICAgV2ViQ29yZTo6SW50U2l6ZSBmaXhlZExheW91dFNpemUgPSB2aWV3LT5maXhlZExheW91
dFNpemUoKTsKLSAgICAgICAgaWYgKGZpeGVkTGF5b3V0U2l6ZSA9PSBsYXlvdXRTaXplKQotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB2aWV3LT5zZXRGaXhlZExheW91dFNpemUobGF5b3V0
U2l6ZSk7Ci0gICAgICAgIHZpZXctPnNldFVzZUZpeGVkTGF5b3V0KHRydWUpOwotICAgIH0KLQot
ICAgIHZpZXctPnNldE5lZWRzTGF5b3V0KCk7Ci19Ci0KLXZvaWQgZXdrX3ZpZXdfZml4ZWRfbGF5
b3V0X3NpemVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFdmFzX0Nvb3JkKiB3aWR0
aCwgRXZhc19Db29yZCogaGVpZ2h0KQotewotICAgIGlmICh3aWR0aCkKLSAgICAgICAgKndpZHRo
ID0gMDsKLSAgICBpZiAoaGVpZ2h0KQotICAgICAgICAqaGVpZ2h0ID0gMDsKLSAgICBFV0tfVklF
V19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSk7Ci0gICAgRVdLX1ZJRVdfUFJJ
Vl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdik7Ci0gICAgV2ViQ29yZTo6RnJhbWVWaWV3
KiB2aWV3ID0gcHJpdi0+cGFnZS0+bWFpbkZyYW1lKCkudmlldygpOwotICAgIGlmICh2aWV3LT51
c2VGaXhlZExheW91dCgpKSB7Ci0gICAgICAgIFdlYkNvcmU6OkludFNpemUgc2l6ZSA9IHZpZXct
PmZpeGVkTGF5b3V0U2l6ZSgpOwotICAgICAgICBpZiAod2lkdGgpCi0gICAgICAgICAgICAqd2lk
dGggPSBzaXplLndpZHRoKCk7Ci0gICAgICAgIGlmIChoZWlnaHQpCi0gICAgICAgICAgICAqaGVp
Z2h0ID0gc2l6ZS5oZWlnaHQoKTsKLSAgICB9Ci19Ci0KLXZvaWQgZXdrX3ZpZXdfdGhlbWVfc2V0
KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBjaGFyKiBwYXRoKQotewotICAgIEVXS19WSUVX
X1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhKTsKLSAgICBFV0tfVklFV19QUklW
X0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2KTsKLSAgICBpZiAoIWVpbmFfc3RyaW5nc2hh
cmVfcmVwbGFjZSgmcHJpdi0+c2V0dGluZ3MudGhlbWUsIHBhdGgpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBXZWJDb3JlOjpSZW5kZXJUaGVtZUVmbCYgdGhlbWUgPSBzdGF0aWNfY2FzdDxXZWJD
b3JlOjpSZW5kZXJUaGVtZUVmbCY+KHByaXYtPnBhZ2UtPnRoZW1lKCkpOwotICAgIHRoZW1lLnNl
dFRoZW1lUGF0aChwYXRoKTsKLX0KLQotY29uc3QgY2hhciogZXdrX3ZpZXdfdGhlbWVfZ2V0KGNv
bnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQotewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRV
Uk4oZXdrVmlldywgc21hcnREYXRhLCAwKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRV
Uk4oc21hcnREYXRhLCBwcml2LCAwKTsKLSAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3MudGhlbWU7
Ci19Ci0KLUV2YXNfT2JqZWN0KiBld2tfdmlld19mcmFtZV9tYWluX2dldChjb25zdCBFdmFzX09i
amVjdCogZXdrVmlldykKLXsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcs
IHNtYXJ0RGF0YSwgMCk7Ci0gICAgcmV0dXJuIHNtYXJ0RGF0YS0+bWFpbl9mcmFtZTsKLX0KLQot
RXZhc19PYmplY3QqIGV3a192aWV3X2ZyYW1lX2ZvY3VzZWRfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0
KiBld2tWaWV3KQotewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21h
cnREYXRhLCAwKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBw
cml2LCAwKTsKLQotICAgIFdlYkNvcmU6OkZyYW1lKiBjb3JlID0gcHJpdi0+cGFnZS0+Zm9jdXND
b250cm9sbGVyKCkuZm9jdXNlZEZyYW1lKCk7Ci0gICAgaWYgKCFjb3JlKQotICAgICAgICByZXR1
cm4gMDsKLQotICAgIFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsJiBjbGllbnQgPSBzdGF0
aWNfY2FzdDxXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbCY+KGNvcmUtPmxvYWRlcigpLmNs
aWVudCgpKTsKLSAgICByZXR1cm4gY2xpZW50LndlYkZyYW1lKCk7Ci19Ci0KLUVpbmFfQm9vbCBl
d2tfdmlld191cmlfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBjaGFyKiB1cmkpCi17
Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNl
KTsKLSAgICByZXR1cm4gZXdrX2ZyYW1lX3VyaV9zZXQoc21hcnREYXRhLT5tYWluX2ZyYW1lLCB1
cmkpOwotfQotCi1jb25zdCBjaGFyKiBld2tfdmlld191cmlfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0
KiBld2tWaWV3KQotewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21h
cnREYXRhLCAwKTsKLSAgICByZXR1cm4gZXdrX2ZyYW1lX3VyaV9nZXQoc21hcnREYXRhLT5tYWlu
X2ZyYW1lKTsKLX0KLQotY29uc3QgRXdrX1RleHRfV2l0aF9EaXJlY3Rpb24qIGV3a192aWV3X3Rp
dGxlX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKLXsKLSAgICBFV0tfVklFV19TRF9H
RVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgMCk7Ci0gICAgcmV0dXJuIGV3a19mcmFt
ZV90aXRsZV9nZXQoc21hcnREYXRhLT5tYWluX2ZyYW1lKTsKLX0KLQotRWluYV9Cb29sIGV3a192
aWV3X2VkaXRhYmxlX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKLXsKLSAgICBFV0tf
VklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwotICAgIHJl
dHVybiBld2tfZnJhbWVfZWRpdGFibGVfZ2V0KHNtYXJ0RGF0YS0+bWFpbl9mcmFtZSk7Ci19Ci0K
LXZvaWQgZXdrX3ZpZXdfYmdfY29sb3Jfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBpbnQgcmVk
LCBpbnQgZ3JlZW4sIGludCBibHVlLCBpbnQgYWxwaGEpCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VU
X09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExf
UkVUVVJOKHNtYXJ0RGF0YS0+YXBpKTsKLQotICAgIGlmIChhbHBoYSA8IDApIHsKLSAgICAgICAg
V0FSTigiQWxwaGEgbGVzcyB0aGFuIHplcm8gKCVkKS4iLCBhbHBoYSk7Ci0gICAgICAgIGFscGhh
ID0gMDsKLSAgICB9IGVsc2UgaWYgKGFscGhhID4gMjU1KSB7Ci0gICAgICAgIFdBUk4oIkFscGhh
IGlzIGxhcmdlciB0aGFuIDI1NSAoJWQpLiIsIGFscGhhKTsKLSAgICAgICAgYWxwaGEgPSAyNTU7
Ci0gICAgfQotCi0jZGVmaW5lIENIRUNLX1BSRU1VTF9DT0xPUihjb2xvciwgYWxwaGEpICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBpZiAoY29sb3IgPCAwKSB7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
Ci0gICAgICAgIFdBUk4oIkNvbG9yIGNvbXBvbmVudCAiICNjb2xvciAiIGlzIGxlc3MgdGhhbiB6
ZXJvICglZCkuIiwgY29sb3IpOyAgICAgICAgIFwKLSAgICAgICAgY29sb3IgPSAwOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAg
fSBlbHNlIGlmIChjb2xvciA+IGFscGhhKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgV0FSTigiQ29sb3IgY29tcG9uZW50ICIgI2Nv
bG9yICIgaXMgZ3JlYXRlciB0aGFuIGFscGhhICglZCwgYWxwaGE9JWQpLiIsIFwKLSAgICAgICAg
ICAgIGNvbG9yLCBhbHBoYSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAotICAgICAgICBjb2xvciA9IGFscGhhOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfQotICAgIENI
RUNLX1BSRU1VTF9DT0xPUihyZWQsIGFscGhhKTsKLSAgICBDSEVDS19QUkVNVUxfQ09MT1IoZ3Jl
ZW4sIGFscGhhKTsKLSAgICBDSEVDS19QUkVNVUxfQ09MT1IoYmx1ZSwgYWxwaGEpOwotI3VuZGVm
IENIRUNLX1BSRU1VTF9DT0xPUgotCi0gICAgc21hcnREYXRhLT5iZ19jb2xvci5yID0gcmVkOwot
ICAgIHNtYXJ0RGF0YS0+YmdfY29sb3IuZyA9IGdyZWVuOwotICAgIHNtYXJ0RGF0YS0+YmdfY29s
b3IuYiA9IGJsdWU7Ci0gICAgc21hcnREYXRhLT5iZ19jb2xvci5hID0gYWxwaGE7Ci0KLSAgICBl
dmFzX29iamVjdF9pbWFnZV9hbHBoYV9zZXQoc21hcnREYXRhLT5pbWFnZSwgYWxwaGEgPCAyNTUp
OwotCi0gICAgV2ViQ29yZTo6RnJhbWVWaWV3KiB2aWV3ID0gc21hcnREYXRhLT5fcHJpdi0+cGFn
ZS0+bWFpbkZyYW1lKCkudmlldygpOwotICAgIGlmICh2aWV3KSB7Ci0gICAgICAgIFdlYkNvcmU6
OkNvbG9yIGNvbG9yOwotCi0gICAgICAgIGlmICghYWxwaGEpCi0gICAgICAgICAgICBjb2xvciA9
IFdlYkNvcmU6OkNvbG9yKDAsIDAsIDAsIDApOwotICAgICAgICBlbHNlIGlmIChhbHBoYSA9PSAy
NTUpCi0gICAgICAgICAgICBjb2xvciA9IFdlYkNvcmU6OkNvbG9yKHJlZCwgZ3JlZW4sIGJsdWUs
IGFscGhhKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgY29sb3IgPSBXZWJDb3JlOjpDb2xv
cihyZWQgKiAyNTUgLyBhbHBoYSwgZ3JlZW4gKiAyNTUgLyBhbHBoYSwgYmx1ZSAqIDI1NSAvIGFs
cGhhLCBhbHBoYSk7Ci0KLSAgICAgICAgdmlldy0+dXBkYXRlQmFja2dyb3VuZFJlY3Vyc2l2ZWx5
KGNvbG9yLCAhYWxwaGEpOwotICAgIH0KLX0KLQotdm9pZCBld2tfdmlld19iZ19jb2xvcl9nZXQo
Y29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcsIGludCogcmVkLCBpbnQqIGdyZWVuLCBpbnQqIGJs
dWUsIGludCogYWxwaGEpCi17Ci0gICAgaWYgKHJlZCkKLSAgICAgICAgKnJlZCA9IDA7Ci0gICAg
aWYgKGdyZWVuKQotICAgICAgICAqZ3JlZW4gPSAwOwotICAgIGlmIChibHVlKQotICAgICAgICAq
Ymx1ZSA9IDA7Ci0gICAgaWYgKGFscGhhKQotICAgICAgICAqYWxwaGEgPSAwOwotICAgIEVXS19W
SUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhKTsKLSAgICBpZiAocmVkKQot
ICAgICAgICAqcmVkID0gc21hcnREYXRhLT5iZ19jb2xvci5yOwotICAgIGlmIChncmVlbikKLSAg
ICAgICAgKmdyZWVuID0gc21hcnREYXRhLT5iZ19jb2xvci5nOwotICAgIGlmIChibHVlKQotICAg
ICAgICAqYmx1ZSA9IHNtYXJ0RGF0YS0+YmdfY29sb3IuYjsKLSAgICBpZiAoYWxwaGEpCi0gICAg
ICAgICphbHBoYSA9IHNtYXJ0RGF0YS0+YmdfY29sb3IuYTsKLX0KLQotRWluYV9Cb29sIGV3a192
aWV3X3RleHRfc2VhcmNoKGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBjaGFyKiBz
dHJpbmcsIEVpbmFfQm9vbCBjYXNlU2Vuc2l0aXZlLCBFaW5hX0Jvb2wgZm9yd2FyZCwgRWluYV9C
b29sIHdyYXApCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFy
dERhdGEsIGZhbHNlKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRh
LCBwcml2LCBmYWxzZSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHN0cmlu
ZywgZmFsc2UpOwotCi0gICAgV2ViQ29yZTo6RmluZE9wdGlvbnMgb3B0aW9ucyA9IChjYXNlU2Vu
c2l0aXZlID8gMCA6IFdlYkNvcmU6OkNhc2VJbnNlbnNpdGl2ZSkgfCAoZm9yd2FyZCA/IDAgOiBX
ZWJDb3JlOjpCYWNrd2FyZHMpIHwgKHdyYXAgPyBXZWJDb3JlOjpXcmFwQXJvdW5kIDogMCk7Ci0g
ICAgcmV0dXJuIHByaXYtPnBhZ2UtPmZpbmRTdHJpbmcoU3RyaW5nOjpmcm9tVVRGOChzdHJpbmcp
LCBvcHRpb25zKTsKLX0KLQotLyoqCi0gKiBNYXJrIG1hdGNoZXMgdGhlIGdpdmVuIHRleHQgc3Ry
aW5nIGluIGRvY3VtZW50LgotICoKLSAqIEBwYXJhbSBld2tWaWV3IHZpZXcgb2JqZWN0IHdoZXJl
IHRvIHNlYXJjaCB0ZXh0LgotICogQHBhcmFtIHN0cmluZyByZWZlcmVuY2Ugc3RyaW5nIHRvIG1h
dGNoLgotICogQHBhcmFtIGNhc2VTZW5zaXRpdmUgaWYgbWF0Y2ggc2hvdWxkIGJlIGNhc2Ugc2Vu
c2l0aXZlIG9yIG5vdC4KLSAqIEBwYXJhbSBoZWlnaHRpZ2hsaWdodCBpZiBtYXRjaGVzIHNob3Vs
ZCBiZSBoaWdobGlnaHRlZC4KLSAqIEBwYXJhbSBsaW1pdCBtYXhpbXVtIGFtb3VudCBvZiBtYXRj
aGVzLCBvciB6ZXJvIHRvIHVubGltaXRlZC4KLSAqCi0gKiBAcmV0dXJuIG51bWJlciBvZiBtYXRj
aGVzLgotICovCi11bnNpZ25lZCBpbnQgZXdrX3ZpZXdfdGV4dF9tYXRjaGVzX21hcmsoRXZhc19P
YmplY3QqIGV3a1ZpZXcsIGNvbnN0IGNoYXIqIHN0cmluZywgRWluYV9Cb29sIGNhc2VTZW5zaXRp
dmUsIEVpbmFfQm9vbCBoaWdobGlnaHQsIHVuc2lnbmVkIGludCBsaW1pdCkKLXsKLSAgICBFV0tf
VklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgMCk7Ci0gICAgRVdLX1ZJ
RVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgMCk7Ci0gICAgRUlOQV9TQUZF
VFlfT05fTlVMTF9SRVRVUk5fVkFMKHN0cmluZywgMCk7Ci0gICAgV1RGOjpUZXh0Q2FzZVNlbnNp
dGl2aXR5IHNlbnNpdGl2ZTsKLQotICAgIGlmIChjYXNlU2Vuc2l0aXZlKQotICAgICAgICBzZW5z
aXRpdmUgPSBXVEY6OlRleHRDYXNlU2Vuc2l0aXZlOwotICAgIGVsc2UKLSAgICAgICAgc2Vuc2l0
aXZlID0gV1RGOjpUZXh0Q2FzZUluc2Vuc2l0aXZlOwotCi0gICAgcmV0dXJuIHByaXYtPnBhZ2Ut
Pm1hcmtBbGxNYXRjaGVzRm9yVGV4dChTdHJpbmc6OmZyb21VVEY4KHN0cmluZyksIHNlbnNpdGl2
ZSwgaGlnaGxpZ2h0LCBsaW1pdCk7Ci19Ci0KLUVpbmFfQm9vbCBld2tfdmlld190ZXh0X21hdGNo
ZXNfdW5tYXJrX2FsbChFdmFzX09iamVjdCogZXdrVmlldykKLXsKLSAgICBFV0tfVklFV19TRF9H
RVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwotICAgIEVXS19WSUVXX1BS
SVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKLSAgICBwcml2LT5wYWdl
LT51bm1hcmtBbGxUZXh0TWF0Y2hlcygpOwotICAgIHJldHVybiB0cnVlOwotfQotCi1FaW5hX0Jv
b2wgZXdrX3ZpZXdfdGV4dF9tYXRjaGVzX2hpZ2hsaWdodF9zZXQoRXZhc19PYmplY3QqIGV3a1Zp
ZXcsIEVpbmFfQm9vbCBoaWdobGlnaHQpCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVS
Tihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKLSAgICByZXR1cm4gZXdrX2ZyYW1lX3RleHRf
bWF0Y2hlc19oaWdobGlnaHRfc2V0KHNtYXJ0RGF0YS0+bWFpbl9mcmFtZSwgaGlnaGxpZ2h0KTsK
LX0KLQotRWluYV9Cb29sIGV3a192aWV3X3RleHRfbWF0Y2hlc19oaWdobGlnaHRfZ2V0KGNvbnN0
IEV2YXNfT2JqZWN0KiBld2tWaWV3KQotewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4o
ZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7Ci0gICAgcmV0dXJuIGV3a19mcmFtZV90ZXh0X21h
dGNoZXNfaGlnaGxpZ2h0X2dldChzbWFydERhdGEtPm1haW5fZnJhbWUpOwotfQotCi1FaW5hX0Jv
b2wgZXdrX3ZpZXdfZWRpdGFibGVfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFaW5hX0Jvb2wg
ZWRpdGFibGUpCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFy
dERhdGEsIGZhbHNlKTsKLSAgICByZXR1cm4gZXdrX2ZyYW1lX2VkaXRhYmxlX3NldChzbWFydERh
dGEtPm1haW5fZnJhbWUsIGVkaXRhYmxlKTsKLX0KLQotY29uc3QgY2hhciogZXdrX3ZpZXdfc2Vs
ZWN0aW9uX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKLXsKLSAgICBFV0tfVklFV19T
RF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgMCk7Ci0gICAgRVdLX1ZJRVdfUFJJ
Vl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgMCk7Ci0gICAgQ1N0cmluZyBzZWxlY3Rl
ZFN0cmluZyA9IHByaXYtPnBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFt
ZSgpLmVkaXRvcigpLnNlbGVjdGVkVGV4dCgpLnV0ZjgoKTsKLSAgICBpZiAoc2VsZWN0ZWRTdHJp
bmcuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBlaW5hX3N0cmluZ3No
YXJlX2FkZChzZWxlY3RlZFN0cmluZy5kYXRhKCkpOwotfQotCi1FaW5hX0Jvb2wgZXdrX3ZpZXdf
ZWRpdG9yX2NvbW1hbmRfZXhlY3V0ZShjb25zdCBFdmFzX09iamVjdCogZXdrVmlldywgY29uc3Qg
RXdrX0VkaXRvcl9Db21tYW5kIGNvbW1hbmQsIGNvbnN0IGNoYXIqIHZhbHVlKQotewotICAgIEVX
S19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7Ci0gICAg
RVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwotCi0g
ICAgY29uc3QgY2hhciogY29tbWFuZFN0cmluZyA9IF9ld2tfdmlld19lZGl0b3JfY29tbWFuZF9z
dHJpbmdfZ2V0KHByaXYsIGNvbW1hbmQpOwotICAgIGlmICghY29tbWFuZFN0cmluZykKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIHByaXYtPnBhZ2UtPmZvY3VzQ29udHJvbGxl
cigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmVkaXRvcigpLmNvbW1hbmQoY29tbWFuZFN0cmluZyku
ZXhlY3V0ZShXVEY6OlN0cmluZzo6ZnJvbVVURjgodmFsdWUpKTsKLX0KLQotRWluYV9Cb29sIGV3
a192aWV3X2NvbnRleHRfbWVudV9mb3J3YXJkX2V2ZW50KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBj
b25zdCBFdmFzX0V2ZW50X01vdXNlX0Rvd24qIGRvd25FdmVudCkKLXsKLSNpZiBFTkFCTEUoQ09O
VEVYVF9NRU5VUykKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0
RGF0YSwgZmFsc2UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEs
IHByaXYsIGZhbHNlKTsKLSAgICBFaW5hX0Jvb2wgbW91c2VfcHJlc3NfaGFuZGxlZCA9IGZhbHNl
OwotCi0gICAgcHJpdi0+cGFnZS0+Y29udGV4dE1lbnVDb250cm9sbGVyKCkuY2xlYXJDb250ZXh0
TWVudSgpOwotICAgIGlmIChwcml2LT5jb250ZXh0TWVudSkKLSAgICAgICAgZXdrX2NvbnRleHRf
bWVudV9mcmVlKHByaXYtPmNvbnRleHRNZW51KTsKLQotICAgIFdlYkNvcmU6OkZyYW1lJiBtYWlu
RnJhbWUgPSBwcml2LT5wYWdlLT5tYWluRnJhbWUoKTsKLSAgICBFdmFzX0Nvb3JkIHgsIHk7Ci0g
ICAgZXZhc19vYmplY3RfZ2VvbWV0cnlfZ2V0KHNtYXJ0RGF0YS0+c2VsZiwgJngsICZ5LCAwLCAw
KTsKLQotICAgIFdlYkNvcmU6OlBsYXRmb3JtTW91c2VFdmVudCBldmVudChkb3duRXZlbnQsIFdl
YkNvcmU6OkludFBvaW50KHgsIHkpKTsKLQotICAgIGlmIChtYWluRnJhbWUudmlldygpKSB7Ci0g
ICAgICAgIG1vdXNlX3ByZXNzX2hhbmRsZWQgPQotICAgICAgICAgICAgbWFpbkZyYW1lLmV2ZW50
SGFuZGxlcigpLmhhbmRsZU1vdXNlUHJlc3NFdmVudChldmVudCk7Ci0gICAgfQotCi0gICAgaWYg
KCFtYWluRnJhbWUuZXZlbnRIYW5kbGVyKCkuc2VuZENvbnRleHRNZW51RXZlbnQoZXZlbnQpKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBXZWJDb3JlOjpDb250ZXh0TWVudSogY29yZU1l
bnUgPQotICAgICAgICBwcml2LT5wYWdlLT5jb250ZXh0TWVudUNvbnRyb2xsZXIoKS5jb250ZXh0
TWVudSgpOwotICAgIGlmICghY29yZU1lbnUpIHsKLSAgICAgICAgLy8gV2ViQ29yZSBkZWNpZGVk
IG5vdCB0byBjcmVhdGUgYSBjb250ZXh0IG1lbnUsIHJldHVybiB0cnVlIGlmIGV2ZW50Ci0gICAg
ICAgIC8vIHdhcyBoYW5kbGVkIGJ5IGhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50Ci0gICAgICAgIHJl
dHVybiBtb3VzZV9wcmVzc19oYW5kbGVkOwotICAgIH0KLQotICAgIHByaXYtPmNvbnRleHRNZW51
ID0gZXdrX2NvbnRleHRfbWVudV9uZXcoZXdrVmlldywgJnByaXYtPnBhZ2UtPmNvbnRleHRNZW51
Q29udHJvbGxlcigpLCBjb3JlTWVudSk7Ci0gICAgaWYgKCFwcml2LT5jb250ZXh0TWVudSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgZXdrX2NvbnRleHRfbWVudV9zaG93KHByaXYtPmNv
bnRleHRNZW51KTsKLQotICAgIHJldHVybiB0cnVlOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0o
ZXdrVmlldyk7Ci0gICAgVU5VU0VEX1BBUkFNKGRvd25FdmVudCk7Ci0gICAgcmV0dXJuIGZhbHNl
OwotI2VuZGlmCi19Ci0KLWRvdWJsZSBld2tfdmlld19sb2FkX3Byb2dyZXNzX2dldChjb25zdCBF
dmFzX09iamVjdCogZXdrVmlldykKLXsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3
a1ZpZXcsIHNtYXJ0RGF0YSwgLTEuMCk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJO
KHNtYXJ0RGF0YSwgcHJpdiwgLTEuMCk7Ci0gICAgcmV0dXJuIHByaXYtPnBhZ2UtPnByb2dyZXNz
KCkuZXN0aW1hdGVkUHJvZ3Jlc3MoKTsKLX0KLQotRWluYV9Cb29sIGV3a192aWV3X3N0b3AoRXZh
c19PYmplY3QqIGV3a1ZpZXcpCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tW
aWV3LCBzbWFydERhdGEsIGZhbHNlKTsKLSAgICByZXR1cm4gZXdrX2ZyYW1lX3N0b3Aoc21hcnRE
YXRhLT5tYWluX2ZyYW1lKTsKLX0KLQotRWluYV9Cb29sIGV3a192aWV3X3JlbG9hZChFdmFzX09i
amVjdCogZXdrVmlldykKLXsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcs
IHNtYXJ0RGF0YSwgZmFsc2UpOwotICAgIHJldHVybiBld2tfZnJhbWVfcmVsb2FkKHNtYXJ0RGF0
YS0+bWFpbl9mcmFtZSk7Ci19Ci0KLUVpbmFfQm9vbCBld2tfdmlld19yZWxvYWRfZnVsbChFdmFz
X09iamVjdCogZXdrVmlldykKLXsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1Zp
ZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwotICAgIHJldHVybiBld2tfZnJhbWVfcmVsb2FkX2Z1bGwo
c21hcnREYXRhLT5tYWluX2ZyYW1lKTsKLX0KLQotRWluYV9Cb29sIGV3a192aWV3X2JhY2soRXZh
c19PYmplY3QqIGV3a1ZpZXcpCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tW
aWV3LCBzbWFydERhdGEsIGZhbHNlKTsKLSAgICByZXR1cm4gZXdrX2ZyYW1lX2JhY2soc21hcnRE
YXRhLT5tYWluX2ZyYW1lKTsKLX0KLQotRWluYV9Cb29sIGV3a192aWV3X2ZvcndhcmQoRXZhc19P
YmplY3QqIGV3a1ZpZXcpCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3
LCBzbWFydERhdGEsIGZhbHNlKTsKLSAgICByZXR1cm4gZXdrX2ZyYW1lX2ZvcndhcmQoc21hcnRE
YXRhLT5tYWluX2ZyYW1lKTsKLX0KLQotRWluYV9Cb29sIGV3a192aWV3X25hdmlnYXRlKEV2YXNf
T2JqZWN0KiBld2tWaWV3LCBpbnQgc3RlcHMpCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JF
VFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKLSAgICByZXR1cm4gZXdrX2ZyYW1lX25h
dmlnYXRlKHNtYXJ0RGF0YS0+bWFpbl9mcmFtZSwgc3RlcHMpOwotfQotCi1FaW5hX0Jvb2wgZXdr
X3ZpZXdfYmFja19wb3NzaWJsZShFdmFzX09iamVjdCogZXdrVmlldykKLXsKLSAgICBFV0tfVklF
V19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwotICAgIHJldHVy
biBld2tfZnJhbWVfYmFja19wb3NzaWJsZShzbWFydERhdGEtPm1haW5fZnJhbWUpOwotfQotCi1F
aW5hX0Jvb2wgZXdrX3ZpZXdfZm9yd2FyZF9wb3NzaWJsZShFdmFzX09iamVjdCogZXdrVmlldykK
LXsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFs
c2UpOwotICAgIHJldHVybiBld2tfZnJhbWVfZm9yd2FyZF9wb3NzaWJsZShzbWFydERhdGEtPm1h
aW5fZnJhbWUpOwotfQotCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfbmF2aWdhdGVfcG9zc2libGUoRXZh
c19PYmplY3QqIGV3a1ZpZXcsIGludCBzdGVwcykKLXsKLSAgICBFV0tfVklFV19TRF9HRVRfT1Jf
UkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwotICAgIHJldHVybiBld2tfZnJhbWVf
bmF2aWdhdGVfcG9zc2libGUoc21hcnREYXRhLT5tYWluX2ZyYW1lLCBzdGVwcyk7Ci19Ci0KLUVp
bmFfQm9vbCBld2tfdmlld19oaXN0b3J5X2VuYWJsZV9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3
a1ZpZXcpCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERh
dGEsIGZhbHNlKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBw
cml2LCBmYWxzZSk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYkNvcmU6OkJhY2tGb3J3YXJk
TGlzdCo+KHByaXYtPnBhZ2UtPmJhY2tGb3J3YXJkKCkuY2xpZW50KCkpLT5lbmFibGVkKCk7Ci19
Ci0KLUVpbmFfQm9vbCBld2tfdmlld19oaXN0b3J5X2VuYWJsZV9zZXQoRXZhc19PYmplY3QqIGV3
a1ZpZXcsIEVpbmFfQm9vbCBlbmFibGUpCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVS
Tihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9S
RVRVUk4oc21hcnREYXRhLCBwcml2LCBmYWxzZSk7Ci0gICAgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6
QmFja0ZvcndhcmRMaXN0Kj4ocHJpdi0+cGFnZS0+YmFja0ZvcndhcmQoKS5jbGllbnQoKSktPnNl
dEVuYWJsZWQoZW5hYmxlKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotRXdrX0hpc3RvcnkqIGV3
a192aWV3X2hpc3RvcnlfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQotewotICAgIEVX
S19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCAwKTsKLSAgICBFV0tf
VklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCAwKTsKLSAgICBpZiAoIXN0
YXRpY19jYXN0PFdlYkNvcmU6OkJhY2tGb3J3YXJkTGlzdCo+KHByaXYtPnBhZ2UtPmJhY2tGb3J3
YXJkKCkuY2xpZW50KCkpLT5lbmFibGVkKCkpIHsKLSAgICAgICAgRVJSKCJhc2tlZCBoaXN0b3J5
LCBidXQgaXQncyBkaXNhYmxlZCEgUmV0dXJuaW5nIDAhIik7Ci0gICAgICAgIHJldHVybiAwOwot
ICAgIH0KLSAgICByZXR1cm4gcHJpdi0+aGlzdG9yeTsKLX0KLQotRWluYV9Cb29sIGV3a192aWV3
X3Zpc2l0ZWRfbGlua19hZGQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IGNoYXIqIHZpc2l0
ZWRVcmwpCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERh
dGEsIGZhbHNlKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBw
cml2LCBmYWxzZSk7Ci0KLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwocHJpdi0+
cGFnZSwgZmFsc2UpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChwcml2LT5w
YWdlLT5ncm91cFB0cigpLCBmYWxzZSk7Ci0KLSAgICBXZWJDb3JlOjpVUkwga3VybChXZWJDb3Jl
OjpVUkwoKSwgV1RGOjpTdHJpbmc6OmZyb21VVEY4KHZpc2l0ZWRVcmwpKTsKLSAgICBwcml2LT5w
YWdlLT5ncm91cFB0cigpLT5hZGRWaXNpdGVkTGluayhrdXJsKTsKLSAgICByZXR1cm4gdHJ1ZTsK
LX0KLQotZmxvYXQgZXdrX3ZpZXdfem9vbV9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcp
Ci17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIC0x
LjApOwotICAgIHJldHVybiBld2tfZnJhbWVfcGFnZV96b29tX2dldChzbWFydERhdGEtPm1haW5f
ZnJhbWUpOwotfQotCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfem9vbV9zZXQoRXZhc19PYmplY3QqIGV3
a1ZpZXcsIGZsb2F0IHpvb20sIEV2YXNfQ29vcmQgY2VudGVyWCwgRXZhc19Db29yZCBjZW50ZXJZ
KQotewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBm
YWxzZSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVQoc21hcnREYXRhLCBwcml2KTsKLQotICAgIEVJ
TkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEtPmFwaSwgZmFsc2UpOwotICAg
IEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEtPmFwaS0+em9vbV9zZXQs
IGZhbHNlKTsKLQotICAgIGlmICghcHJpdi0+c2V0dGluZ3Muem9vbVJhbmdlLnVzZXJTY2FsYWJs
ZSkgewotICAgICAgICBXQVJOKCJ1c2VyU2NhbGFibGUgaXMgZmFsc2UiKTsKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGlmICh6b29tIDwgcHJpdi0+c2V0dGluZ3Muem9vbVJh
bmdlLm1pblNjYWxlKSB7Ci0gICAgICAgIFdBUk4oInpvb20gbGV2ZWwgaXMgPCAlZiA6ICVmIiwg
cHJpdi0+c2V0dGluZ3Muem9vbVJhbmdlLm1pblNjYWxlLCB6b29tKTsKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIH0KLSAgICBpZiAoem9vbSA+IHByaXYtPnNldHRpbmdzLnpvb21SYW5nZS5t
YXhTY2FsZSkgewotICAgICAgICBXQVJOKCJ6b29tIGxldmVsIGlzID4gJWYgOiAlZiIsIHByaXYt
PnNldHRpbmdzLnpvb21SYW5nZS5tYXhTY2FsZSwgem9vbSk7Ci0gICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICB9Ci0KLSAgICBfZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9tYXJrX3N0b3Aoc21hcnRE
YXRhKTsKLSAgICByZXR1cm4gc21hcnREYXRhLT5hcGktPnpvb21fc2V0KHNtYXJ0RGF0YSwgem9v
bSwgY2VudGVyWCwgY2VudGVyWSk7Ci19Ci0KLWZsb2F0IGV3a192aWV3X3BhZ2Vfem9vbV9nZXQo
Y29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JF
VFVSTihld2tWaWV3LCBzbWFydERhdGEsIC0xLjApOwotICAgIHJldHVybiBld2tfZnJhbWVfcGFn
ZV96b29tX2dldChzbWFydERhdGEtPm1haW5fZnJhbWUpOwotfQotCi1FaW5hX0Jvb2wgZXdrX3Zp
ZXdfcGFnZV96b29tX3NldChFdmFzX09iamVjdCogZXdrVmlldywgZmxvYXQgcGFnZVpvb21GYWN0
b3IpCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEs
IGZhbHNlKTsKLSAgICByZXR1cm4gZXdrX2ZyYW1lX3BhZ2Vfem9vbV9zZXQoc21hcnREYXRhLT5t
YWluX2ZyYW1lLCBwYWdlWm9vbUZhY3Rvcik7Ci19Ci0KLWZsb2F0IGV3a192aWV3X3NjYWxlX2dl
dChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKLXsKLSAgICBFV0tfVklFV19TRF9HRVRfT1Jf
UkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgLTEuMCk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRf
T1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgLTEuMCk7Ci0gICAgcmV0dXJuIHByaXYtPnBhZ2Ut
PnBhZ2VTY2FsZUZhY3RvcigpOwotfQotCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2NhbGVfc2V0KEV2
YXNfT2JqZWN0KiBld2tWaWV3LCBmbG9hdCBzY2FsZUZhY3RvciwgRXZhc19Db29yZCBzY3JvbGxY
LCBFdmFzX0Nvb3JkIHNjcm9sbFkpCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihl
d2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRV
Uk4oc21hcnREYXRhLCBwcml2LCBmYWxzZSk7Ci0KLSAgICBmbG9hdCBjdXJyZW50U2NhbGVGYWN0
b3IgPSBld2tfdmlld19zY2FsZV9nZXQoZXdrVmlldyk7Ci0gICAgaWYgKGN1cnJlbnRTY2FsZUZh
Y3RvciA9PSAtMSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcHJpdi0+cGFnZS0+c2V0
UGFnZVNjYWxlRmFjdG9yKHNjYWxlRmFjdG9yLCBXZWJDb3JlOjpJbnRQb2ludChzY3JvbGxYLCBz
Y3JvbGxZKSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWZsb2F0IGV3a192aWV3X3RleHRfem9v
bV9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VU
X09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIC0xLjApOwotICAgIHJldHVybiBld2tfZnJh
bWVfdGV4dF96b29tX2dldChzbWFydERhdGEtPm1haW5fZnJhbWUpOwotfQotCi1FaW5hX0Jvb2wg
ZXdrX3ZpZXdfdGV4dF96b29tX3NldChFdmFzX09iamVjdCogZXdrVmlldywgZmxvYXQgdGV4dFpv
b21GYWN0b3IpCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFy
dERhdGEsIGZhbHNlKTsKLSAgICByZXR1cm4gZXdrX2ZyYW1lX3RleHRfem9vbV9zZXQoc21hcnRE
YXRhLT5tYWluX2ZyYW1lLCB0ZXh0Wm9vbUZhY3Rvcik7Ci19Ci0KLUVpbmFfQm9vbCBld2tfdmll
d196b29tX3dlYWtfc21vb3RoX3NjYWxlX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykK
LXsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFs
c2UpOwotICAgIHJldHVybiBzbWFydERhdGEtPnpvb21fd2Vha19zbW9vdGhfc2NhbGU7Ci19Ci0K
LXZvaWQgZXdrX3ZpZXdfem9vbV93ZWFrX3Ntb290aF9zY2FsZV9zZXQoRXZhc19PYmplY3QqIGV3
a1ZpZXcsIEVpbmFfQm9vbCBzbW9vdGhTY2FsZSkKLXsKLSAgICBFV0tfVklFV19TRF9HRVRfT1Jf
UkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSk7Ci0gICAgc21vb3RoU2NhbGUgPSAhIXNtb290aFNj
YWxlOwotICAgIGlmIChzbWFydERhdGEtPnpvb21fd2Vha19zbW9vdGhfc2NhbGUgPT0gc21vb3Ro
U2NhbGUpCi0gICAgICAgIHJldHVybjsKLSAgICBzbWFydERhdGEtPnpvb21fd2Vha19zbW9vdGhf
c2NhbGUgPSBzbW9vdGhTY2FsZTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzbWFy
dERhdGEtPmFwaSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc21hcnREYXRhLT5h
cGktPnpvb21fd2Vha19zbW9vdGhfc2NhbGVfc2V0KTsKLSAgICBzbWFydERhdGEtPmFwaS0+em9v
bV93ZWFrX3Ntb290aF9zY2FsZV9zZXQoc21hcnREYXRhLCBzbW9vdGhTY2FsZSk7Ci19Ci0KLUVp
bmFfQm9vbCBld2tfdmlld196b29tX3dlYWtfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBmbG9h
dCB6b29tLCBFdmFzX0Nvb3JkIGNlbnRlclgsIEV2YXNfQ29vcmQgY2VudGVyWSkKLXsKLSAgICBF
V0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwotICAg
IEVXS19WSUVXX1BSSVZfR0VUKHNtYXJ0RGF0YSwgcHJpdik7Ci0KLSAgICBFSU5BX1NBRkVUWV9P
Tl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5hcGksIGZhbHNlKTsKLSAgICBFSU5BX1NBRkVU
WV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5hcGktPnpvb21fd2Vha19zZXQsIGZhbHNl
KTsKLQotICAgIGlmICghcHJpdi0+c2V0dGluZ3Muem9vbVJhbmdlLnVzZXJTY2FsYWJsZSkgewot
ICAgICAgICBXQVJOKCJ1c2VyU2NhbGFibGUgaXMgZmFsc2UiKTsKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIH0KLQotICAgIGlmICh6b29tIDwgcHJpdi0+c2V0dGluZ3Muem9vbVJhbmdlLm1p
blNjYWxlKSB7Ci0gICAgICAgIFdBUk4oInpvb20gbGV2ZWwgaXMgPCAlZiA6ICVmIiwgcHJpdi0+
c2V0dGluZ3Muem9vbVJhbmdlLm1pblNjYWxlLCB6b29tKTsKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIH0KLSAgICBpZiAoem9vbSA+IHByaXYtPnNldHRpbmdzLnpvb21SYW5nZS5tYXhTY2Fs
ZSkgewotICAgICAgICBXQVJOKCJ6b29tIGxldmVsIGlzID4gJWYgOiAlZiIsIHByaXYtPnNldHRp
bmdzLnpvb21SYW5nZS5tYXhTY2FsZSwgem9vbSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICB9Ci0KLSAgICBzbWFydERhdGEtPmFuaW1hdGVkX3pvb20uem9vbS5zdGFydCA9IGV3a19mcmFt
ZV9wYWdlX3pvb21fZ2V0KHNtYXJ0RGF0YS0+bWFpbl9mcmFtZSk7Ci0gICAgc21hcnREYXRhLT5h
bmltYXRlZF96b29tLnpvb20uZW5kID0gem9vbTsKLSAgICBzbWFydERhdGEtPmFuaW1hdGVkX3pv
b20uem9vbS5jdXJyZW50ID0gem9vbTsKLSAgICByZXR1cm4gc21hcnREYXRhLT5hcGktPnpvb21f
d2Vha19zZXQoc21hcnREYXRhLCB6b29tLCBjZW50ZXJYLCBjZW50ZXJZKTsKLX0KLQotRWluYV9C
b29sIGV3a192aWV3X3pvb21fYW5pbWF0ZWRfbWFya19zdGFydChFdmFzX09iamVjdCogZXdrVmll
dywgZmxvYXQgem9vbSkKLXsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcs
IHNtYXJ0RGF0YSwgZmFsc2UpOwotICAgIHNtYXJ0RGF0YS0+YW5pbWF0ZWRfem9vbS56b29tLnN0
YXJ0ID0gem9vbTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotRWluYV9Cb29sIGV3a192aWV3X3pv
b21fYW5pbWF0ZWRfbWFya19lbmQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGZsb2F0IHpvb20pCi17
Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNl
KTsKLSAgICBzbWFydERhdGEtPmFuaW1hdGVkX3pvb20uem9vbS5lbmQgPSB6b29tOwotICAgIHJl
dHVybiB0cnVlOwotfQotCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9tYXJrX2N1
cnJlbnQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGZsb2F0IHpvb20pCi17Ci0gICAgRVdLX1ZJRVdf
U0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKLSAgICBzbWFydERh
dGEtPmFuaW1hdGVkX3pvb20uem9vbS5jdXJyZW50ID0gem9vbTsKLSAgICByZXR1cm4gdHJ1ZTsK
LX0KLQotRWluYV9Cb29sIGV3a192aWV3X3pvb21fYW5pbWF0ZWRfbWFya19zdG9wKEV2YXNfT2Jq
ZWN0KiBld2tWaWV3KQotewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywg
c21hcnREYXRhLCBmYWxzZSk7Ci0gICAgX2V3a192aWV3X3pvb21fYW5pbWF0ZWRfbWFya19zdG9w
KHNtYXJ0RGF0YSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLUVpbmFfQm9vbCBld2tfdmlld196
b29tX2FuaW1hdGVkX3NldChFdmFzX09iamVjdCogZXdrVmlldywgZmxvYXQgem9vbSwgZmxvYXQg
ZHVyYXRpb24sIEV2YXNfQ29vcmQgY2VudGVyWCwgRXZhc19Db29yZCBjZW50ZXJZKQotewotICAg
IGRvdWJsZSBub3c7Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFy
dERhdGEsIGZhbHNlKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRh
LCBwcml2LCBmYWxzZSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0
RGF0YS0+YXBpLCBmYWxzZSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNt
YXJ0RGF0YS0+YXBpLT56b29tX3dlYWtfc2V0LCBmYWxzZSk7Ci0KLSAgICBpZiAoIXByaXYtPnNl
dHRpbmdzLnpvb21SYW5nZS51c2VyU2NhbGFibGUpIHsKLSAgICAgICAgV0FSTigidXNlclNjYWxh
YmxlIGlzIGZhbHNlIik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBpZiAo
em9vbSA8IHByaXYtPnNldHRpbmdzLnpvb21SYW5nZS5taW5TY2FsZSkgewotICAgICAgICBXQVJO
KCJ6b29tIGxldmVsIGlzIDwgJWYgOiAlZiIsIHByaXYtPnNldHRpbmdzLnpvb21SYW5nZS5taW5T
Y2FsZSwgem9vbSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgaWYgKHpvb20g
PiBwcml2LT5zZXR0aW5ncy56b29tUmFuZ2UubWF4U2NhbGUpIHsKLSAgICAgICAgV0FSTigiem9v
bSBsZXZlbCBpcyA+ICVmIDogJWYiLCBwcml2LT5zZXR0aW5ncy56b29tUmFuZ2UubWF4U2NhbGUs
IHpvb20pOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgaWYgKHByaXYtPmFu
aW1hdGVkWm9vbS5hbmltYXRvcikKLSAgICAgICAgcHJpdi0+YW5pbWF0ZWRab29tLnpvb20uc3Rh
cnQgPSBfZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9jdXJyZW50KHByaXYpOwotICAgIGVsc2Ugewot
ICAgICAgICBwcml2LT5hbmltYXRlZFpvb20uem9vbS5zdGFydCA9IGV3a19mcmFtZV9wYWdlX3pv
b21fZ2V0KHNtYXJ0RGF0YS0+bWFpbl9mcmFtZSk7Ci0gICAgICAgIF9ld2tfdmlld196b29tX2Fu
aW1hdGlvbl9zdGFydChzbWFydERhdGEpOwotICAgIH0KLQotICAgIGlmIChjZW50ZXJYIDwgMCkK
LSAgICAgICAgY2VudGVyWCA9IDA7Ci0gICAgaWYgKGNlbnRlclkgPCAwKQotICAgICAgICBjZW50
ZXJZID0gMDsKLQotICAgIG5vdyA9IGVjb3JlX2xvb3BfdGltZV9nZXQoKTsKLSAgICBwcml2LT5h
bmltYXRlZFpvb20udGltZS5zdGFydCA9IG5vdzsKLSAgICBwcml2LT5hbmltYXRlZFpvb20udGlt
ZS5lbmQgPSBub3cgKyBkdXJhdGlvbjsKLSAgICBwcml2LT5hbmltYXRlZFpvb20udGltZS5kdXJh
dGlvbiA9IGR1cmF0aW9uOwotICAgIHByaXYtPmFuaW1hdGVkWm9vbS56b29tLmVuZCA9IHpvb207
Ci0gICAgcHJpdi0+YW5pbWF0ZWRab29tLnpvb20ucmFuZ2UgPSAocHJpdi0+YW5pbWF0ZWRab29t
Lnpvb20uZW5kIC0gcHJpdi0+YW5pbWF0ZWRab29tLnpvb20uc3RhcnQpOwotICAgIHByaXYtPmFu
aW1hdGVkWm9vbS5jZW50ZXIueCA9IGNlbnRlclg7Ci0gICAgcHJpdi0+YW5pbWF0ZWRab29tLmNl
bnRlci55ID0gY2VudGVyWTsKLSAgICBzbWFydERhdGEtPmFuaW1hdGVkX3pvb20uem9vbS5jdXJy
ZW50ID0gcHJpdi0+YW5pbWF0ZWRab29tLnpvb20uc3RhcnQ7Ci0gICAgc21hcnREYXRhLT5hbmlt
YXRlZF96b29tLnpvb20uc3RhcnQgPSBwcml2LT5hbmltYXRlZFpvb20uem9vbS5zdGFydDsKLSAg
ICBzbWFydERhdGEtPmFuaW1hdGVkX3pvb20uem9vbS5lbmQgPSBwcml2LT5hbmltYXRlZFpvb20u
em9vbS5lbmQ7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdW5zaWduZWQgaW50IGV3a192aWV3
X2ltaF9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCi17Ci0gICAgRVdLX1ZJRVdfU0Rf
R0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIDApOwotICAgIEVXS19WSUVXX1BSSVZf
R0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIDApOwotICAgIHJldHVybiBwcml2LT5pbWg7
Ci19Ci0KLUVpbmFfQm9vbCBld2tfdmlld19lbmFibGVfcmVuZGVyKGNvbnN0IEV2YXNfT2JqZWN0
KiBld2tWaWV3KQotewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21h
cnREYXRhLCBmYWxzZSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0
RGF0YS0+YXBpLT5lbmFibGVfcmVuZGVyLCBmYWxzZSk7Ci0gICAgcmV0dXJuIHNtYXJ0RGF0YS0+
YXBpLT5lbmFibGVfcmVuZGVyKHNtYXJ0RGF0YSk7Ci19Ci0KLUVpbmFfQm9vbCBld2tfdmlld19k
aXNhYmxlX3JlbmRlcihjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKLXsKLSAgICBFV0tfVklF
V19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwotICAgIEVJTkFf
U0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEtPmFwaS0+ZGlzYWJsZV9yZW5kZXIs
IGZhbHNlKTsKLSAgICByZXR1cm4gc21hcnREYXRhLT5hcGktPmRpc2FibGVfcmVuZGVyKHNtYXJ0
RGF0YSk7Ci19Ci0KLWNvbnN0IGNoYXIqIGV3a192aWV3X3NldHRpbmdfdXNlcl9hZ2VudF9nZXQo
Y29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JF
VFVSTihld2tWaWV3LCBzbWFydERhdGEsIDApOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JF
VFVSTihzbWFydERhdGEsIHByaXYsIDApOwotICAgIHJldHVybiBwcml2LT5zZXR0aW5ncy51c2Vy
QWdlbnQ7Ci19Ci0KLUVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX3VzZXJfYWdlbnRfc2V0KEV2
YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBjaGFyKiB1c2VyQWdlbnQpCi17Ci0gICAgRVdLX1ZJ
RVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKLSAgICBFV0tf
VklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBmYWxzZSk7Ci0gICAgaWYg
KGVpbmFfc3RyaW5nc2hhcmVfcmVwbGFjZSgmcHJpdi0+c2V0dGluZ3MudXNlckFnZW50LCB1c2Vy
QWdlbnQpKSB7Ci0gICAgICAgIFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsJiBjbGllbnQg
PSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbCY+KHByaXYtPnBhZ2Ut
Pm1haW5GcmFtZSgpLmxvYWRlcigpLmNsaWVudCgpKTsKLSAgICAgICAgY2xpZW50LnNldEN1c3Rv
bVVzZXJBZ2VudChTdHJpbmc6OmZyb21VVEY4KHVzZXJBZ2VudCkpOwotICAgIH0KLSAgICByZXR1
cm4gdHJ1ZTsKLX0KLQotY29uc3QgY2hhciogZXdrX3ZpZXdfc2V0dGluZ191c2VyX3N0eWxlc2hl
ZXRfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQotewotICAgIEVXS19WSUVXX1NEX0dF
VF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCAwKTsKLSAgICBFV0tfVklFV19QUklWX0dF
VF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCAwKTsKLSAgICByZXR1cm4gcHJpdi0+c2V0dGlu
Z3MudXNlclN0eWxlc2hlZXQ7Ci19Ci0KLUVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX3VzZXJf
c3R5bGVzaGVldF9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IGNoYXIqIHVyaSkKLXsK
LSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2Up
OwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNl
KTsKLSAgICBpZiAoZWluYV9zdHJpbmdzaGFyZV9yZXBsYWNlKCZwcml2LT5zZXR0aW5ncy51c2Vy
U3R5bGVzaGVldCwgdXJpKSkgewotICAgICAgICBXZWJDb3JlOjpVUkwga3VybChXZWJDb3JlOjpV
UkwoKSwgU3RyaW5nOjpmcm9tVVRGOCh1cmkpKTsKLSAgICAgICAgcHJpdi0+cGFnZS0+c2V0dGlu
Z3MoKS5zZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uKGt1cmwpOwotICAgIH0KLSAgICByZXR1cm4g
dHJ1ZTsKLX0KLQotRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfYXV0b19sb2FkX2ltYWdlc19n
ZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09S
X1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKLSAgICBFV0tfVklFV19QUklWX0dF
VF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBmYWxzZSk7Ci0gICAgcmV0dXJuIHByaXYtPnNl
dHRpbmdzLmF1dG9Mb2FkSW1hZ2VzOwotfQotCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19h
dXRvX2xvYWRfaW1hZ2VzX3NldChFdmFzX09iamVjdCogZXdrVmlldywgRWluYV9Cb29sIGF1dG9t
YXRpYykKLXsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0
YSwgZmFsc2UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHBy
aXYsIGZhbHNlKTsKLSAgICBhdXRvbWF0aWMgPSAhIWF1dG9tYXRpYzsKLSAgICBpZiAocHJpdi0+
c2V0dGluZ3MuYXV0b0xvYWRJbWFnZXMgIT0gYXV0b21hdGljKSB7Ci0gICAgICAgIHByaXYtPnBh
Z2UtPnNldHRpbmdzKCkuc2V0TG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KGF1dG9tYXRpYyk7Ci0g
ICAgICAgIHByaXYtPnNldHRpbmdzLmF1dG9Mb2FkSW1hZ2VzID0gYXV0b21hdGljOwotICAgIH0K
LSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfYXV0b19z
aHJpbmtfaW1hZ2VzX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKLXsKLSAgICBFV0tf
VklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwotICAgIEVX
S19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKLSAgICBy
ZXR1cm4gcHJpdi0+c2V0dGluZ3MuYXV0b1Nocmlua0ltYWdlczsKLX0KLQotRWluYV9Cb29sIGV3
a192aWV3X3NldHRpbmdfYXV0b19zaHJpbmtfaW1hZ2VzX3NldChFdmFzX09iamVjdCogZXdrVmll
dywgRWluYV9Cb29sIGF1dG9tYXRpYykKLXsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJO
KGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JF
VFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKLSAgICBhdXRvbWF0aWMgPSAhIWF1dG9tYXRp
YzsKLSAgICBpZiAocHJpdi0+c2V0dGluZ3MuYXV0b1Nocmlua0ltYWdlcyAhPSBhdXRvbWF0aWMp
IHsKLSAgICAgICAgcHJpdi0+cGFnZS0+c2V0dGluZ3MoKS5zZXRTaHJpbmtzU3RhbmRhbG9uZUlt
YWdlc1RvRml0KGF1dG9tYXRpYyk7Ci0gICAgICAgIHByaXYtPnNldHRpbmdzLmF1dG9TaHJpbmtJ
bWFnZXMgPSBhdXRvbWF0aWM7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotfQotCi1FaW5hX0Jv
b2wgZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfYXV0b19yZXNpemVfd2luZG93X2dldChjb25zdCBF
dmFzX09iamVjdCogZXdrVmlldykKLXsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3
a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVS
TihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKLSAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3MuZW5h
YmxlQXV0b1Jlc2l6ZVdpbmRvdzsKLX0KLQotRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZW5h
YmxlX2F1dG9fcmVzaXplX3dpbmRvd19zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEVpbmFfQm9v
bCByZXNpemFibGUpCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBz
bWFydERhdGEsIGZhbHNlKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnRE
YXRhLCBwcml2LCBmYWxzZSk7Ci0gICAgcHJpdi0+c2V0dGluZ3MuZW5hYmxlQXV0b1Jlc2l6ZVdp
bmRvdyA9IHJlc2l6YWJsZTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotRWluYV9Cb29sIGV3a192
aWV3X3NldHRpbmdfZW5hYmxlX3NjcmlwdHNfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3
KQotewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBm
YWxzZSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwg
ZmFsc2UpOwotICAgIHJldHVybiBwcml2LT5zZXR0aW5ncy5lbmFibGVTY3JpcHRzOwotfQotCi1F
aW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfc2NyaXB0c19zZXQoRXZhc19PYmplY3Qq
IGV3a1ZpZXcsIEVpbmFfQm9vbCBlbmFibGUpCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JF
VFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9P
Ul9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBmYWxzZSk7Ci0gICAgZW5hYmxlID0gISFlbmFibGU7
Ci0gICAgaWYgKHByaXYtPnNldHRpbmdzLmVuYWJsZVNjcmlwdHMgIT0gZW5hYmxlKSB7Ci0gICAg
ICAgIHByaXYtPnBhZ2UtPnNldHRpbmdzKCkuc2V0U2NyaXB0RW5hYmxlZChlbmFibGUpOwotICAg
ICAgICBwcml2LT5zZXR0aW5ncy5lbmFibGVTY3JpcHRzID0gZW5hYmxlOwotICAgIH0KLSAgICBy
ZXR1cm4gdHJ1ZTsKLX0KLQotRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZW5hYmxlX3BsdWdp
bnNfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQotewotICAgIEVXS19WSUVXX1NEX0dF
VF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7Ci0gICAgRVdLX1ZJRVdfUFJJ
Vl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwotICAgIHJldHVybiBwcml2
LT5zZXR0aW5ncy5lbmFibGVQbHVnaW5zOwotfQotCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGlu
Z19lbmFibGVfcGx1Z2luc19zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEVpbmFfQm9vbCBlbmFi
bGUpCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEs
IGZhbHNlKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2
LCBmYWxzZSk7Ci0gICAgZW5hYmxlID0gISFlbmFibGU7Ci0gICAgaWYgKHByaXYtPnNldHRpbmdz
LmVuYWJsZVBsdWdpbnMgIT0gZW5hYmxlKSB7Ci0gICAgICAgIHByaXYtPnBhZ2UtPnNldHRpbmdz
KCkuc2V0UGx1Z2luc0VuYWJsZWQoZW5hYmxlKTsKLSAgICAgICAgcHJpdi0+c2V0dGluZ3MuZW5h
YmxlUGx1Z2lucyA9IGVuYWJsZTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLUVpbmFf
Qm9vbCBld2tfdmlld19zZXR0aW5nX2VuYWJsZV9mcmFtZV9mbGF0dGVuaW5nX2dldChjb25zdCBF
dmFzX09iamVjdCogZXdrVmlldykKLXsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3
a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVS
TihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKLSAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3MuZW5h
YmxlRnJhbWVGbGF0dGVuaW5nOwotfQotCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19lbmFi
bGVfZnJhbWVfZmxhdHRlbmluZ19zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEVpbmFfQm9vbCBl
bmFibGUpCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERh
dGEsIGZhbHNlKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBw
cml2LCBmYWxzZSk7Ci0gICAgZW5hYmxlID0gISFlbmFibGU7Ci0gICAgaWYgKHByaXYtPnNldHRp
bmdzLmVuYWJsZUZyYW1lRmxhdHRlbmluZyAhPSBlbmFibGUpIHsKLSAgICAgICAgcHJpdi0+cGFn
ZS0+c2V0dGluZ3MoKS5zZXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkKGVuYWJsZSk7Ci0gICAgICAg
IHByaXYtPnNldHRpbmdzLmVuYWJsZUZyYW1lRmxhdHRlbmluZyA9IGVuYWJsZTsKLSAgICB9Ci0g
ICAgcmV0dXJuIHRydWU7Ci19Ci0KLUVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX3NjcmlwdHNf
Y2FuX29wZW5fd2luZG93c19nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCi17Ci0gICAg
RVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKLSAg
ICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBmYWxzZSk7Ci0g
ICAgcmV0dXJuIHByaXYtPnNldHRpbmdzLnNjcmlwdHNDYW5PcGVuV2luZG93czsKLX0KLQotRWlu
YV9Cb29sIGV3a192aWV3X3NldHRpbmdfc2NyaXB0c19jYW5fb3Blbl93aW5kb3dzX3NldChFdmFz
X09iamVjdCogZXdrVmlldywgRWluYV9Cb29sIGFsbG93KQotewotICAgIEVXS19WSUVXX1NEX0dF
VF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7Ci0gICAgRVdLX1ZJRVdfUFJJ
Vl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwotICAgIGFsbG93ID0gISFh
bGxvdzsKLSAgICBpZiAocHJpdi0+c2V0dGluZ3Muc2NyaXB0c0Nhbk9wZW5XaW5kb3dzICE9IGFs
bG93KSB7Ci0gICAgICAgIHByaXYtPnBhZ2UtPnNldHRpbmdzKCkuc2V0SmF2YVNjcmlwdENhbk9w
ZW5XaW5kb3dzQXV0b21hdGljYWxseShhbGxvdyk7Ci0gICAgICAgIHByaXYtPnNldHRpbmdzLnNj
cmlwdHNDYW5PcGVuV2luZG93cyA9IGFsbG93OwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0K
LQotRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfc2NyaXB0c19jYW5fY2xvc2Vfd2luZG93c19n
ZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09S
X1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKLSAgICBFV0tfVklFV19QUklWX0dF
VF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBmYWxzZSk7Ci0gICAgcmV0dXJuIHByaXYtPnNl
dHRpbmdzLnNjcmlwdHNDYW5DbG9zZVdpbmRvd3M7Ci19Ci0KLUVpbmFfQm9vbCBld2tfdmlld19z
ZXR0aW5nX3NjcmlwdHNfY2FuX2Nsb3NlX3dpbmRvd3Nfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3
LCBFaW5hX0Jvb2wgYWxsb3cpCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tW
aWV3LCBzbWFydERhdGEsIGZhbHNlKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4o
c21hcnREYXRhLCBwcml2LCBmYWxzZSk7Ci0gICAgYWxsb3cgPSAhIWFsbG93OwotICAgIGlmIChw
cml2LT5zZXR0aW5ncy5zY3JpcHRzQ2FuQ2xvc2VXaW5kb3dzICE9IGFsbG93KSB7Ci0gICAgICAg
IHByaXYtPnBhZ2UtPnNldHRpbmdzKCkuc2V0QWxsb3dTY3JpcHRzVG9DbG9zZVdpbmRvd3MoYWxs
b3cpOwotICAgICAgICBwcml2LT5zZXR0aW5ncy5zY3JpcHRzQ2FuQ2xvc2VXaW5kb3dzID0gYWxs
b3c7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotfQotCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0
dGluZ19zY3JpcHRzX2Nhbl9hY2Nlc3NfY2xpcGJvYXJkX2dldChjb25zdCBFdmFzX09iamVjdCog
ZXdrVmlldykKLXsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0
RGF0YSwgZmFsc2UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEs
IHByaXYsIGZhbHNlKTsKLSAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3Muc2NyaXB0c0NhbkFjY2Vz
c0NsaXBib2FyZDsKLX0KLQotRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfc2NyaXB0c19jYW5f
YWNjZXNzX2NsaXBib2FyZF9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEVpbmFfQm9vbCBhbGxv
dykKLXsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwg
ZmFsc2UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYs
IGZhbHNlKTsKLSAgICBhbGxvdyA9ICEhYWxsb3c7Ci0gICAgaWYgKHByaXYtPnNldHRpbmdzLnNj
cmlwdHNDYW5BY2Nlc3NDbGlwYm9hcmQgIT0gYWxsb3cpIHsKLSAgICAgICAgcHJpdi0+cGFnZS0+
c2V0dGluZ3MoKS5zZXRKYXZhU2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJkKGFsbG93KTsKLSAgICAg
ICAgcHJpdi0+cGFnZS0+c2V0dGluZ3MoKS5zZXRET01QYXN0ZUFsbG93ZWQoYWxsb3cpOwotICAg
ICAgICBwcml2LT5zZXR0aW5ncy5zY3JpcHRzQ2FuQWNjZXNzQ2xpcGJvYXJkID0gYWxsb3c7Ci0g
ICAgfQotICAgIHJldHVybiB0cnVlOwotfQotCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19y
ZXNpemFibGVfdGV4dGFyZWFzX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKLXsKLSAg
ICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwot
ICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsK
LSAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3MucmVzaXphYmxlVGV4dGFyZWFzOwotfQotCi1FaW5h
X0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19yZXNpemFibGVfdGV4dGFyZWFzX3NldChFdmFzX09iamVj
dCogZXdrVmlldywgRWluYV9Cb29sIGVuYWJsZSkKLXsKLSAgICBFV0tfVklFV19TRF9HRVRfT1Jf
UkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VU
X09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKLSAgICBlbmFibGUgPSAhIWVuYWJs
ZTsKLSAgICBpZiAocHJpdi0+c2V0dGluZ3MucmVzaXphYmxlVGV4dGFyZWFzICE9IGVuYWJsZSkg
ewotICAgICAgICBwcml2LT5wYWdlLT5zZXR0aW5ncygpLnNldFRleHRBcmVhc0FyZVJlc2l6YWJs
ZShlbmFibGUpOwotICAgICAgICBwcml2LT5zZXR0aW5ncy5yZXNpemFibGVUZXh0YXJlYXMgPSBl
bmFibGU7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotfQotCi1FaW5hX0Jvb2wgZXdrX3ZpZXdf
c2V0dGluZ19wcml2YXRlX2Jyb3dzaW5nX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykK
LXsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFs
c2UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZh
bHNlKTsKLSAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3MucHJpdmF0ZUJyb3dzaW5nOwotfQotCi1F
aW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19wcml2YXRlX2Jyb3dzaW5nX3NldChFdmFzX09iamVj
dCogZXdrVmlldywgRWluYV9Cb29sIGVuYWJsZSkKLXsKLSAgICBFV0tfVklFV19TRF9HRVRfT1Jf
UkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VU
X09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKLSAgICBlbmFibGUgPSAhIWVuYWJs
ZTsKLSAgICBpZiAocHJpdi0+c2V0dGluZ3MucHJpdmF0ZUJyb3dzaW5nICE9IGVuYWJsZSkgewot
ICAgICAgICBwcml2LT5wYWdlLT5lbmFibGVMZWdhY3lQcml2YXRlQnJvd3NpbmcoZW5hYmxlKTsK
LSAgICAgICAgcHJpdi0+c2V0dGluZ3MucHJpdmF0ZUJyb3dzaW5nID0gZW5hYmxlOwotICAgIH0K
LSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfYXBwbGlj
YXRpb25fY2FjaGVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQotewotICAgIEVXS19W
SUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7Ci0gICAgRVdL
X1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwotICAgIHJl
dHVybiBwcml2LT5zZXR0aW5ncy5vZmZsaW5lQXBwQ2FjaGU7Ci19Ci0KLUVpbmFfQm9vbCBld2tf
dmlld19zZXR0aW5nX2FwcGxpY2F0aW9uX2NhY2hlX3NldChFdmFzX09iamVjdCogZXdrVmlldywg
RWluYV9Cb29sIGVuYWJsZSkKLXsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1Zp
ZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihz
bWFydERhdGEsIHByaXYsIGZhbHNlKTsKLSAgICBlbmFibGUgPSAhIWVuYWJsZTsKLSAgICBpZiAo
cHJpdi0+c2V0dGluZ3Mub2ZmbGluZUFwcENhY2hlICE9IGVuYWJsZSkgewotICAgICAgICBwcml2
LT5wYWdlLT5zZXR0aW5ncygpLnNldE9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZChl
bmFibGUpOwotICAgICAgICBwcml2LT5zZXR0aW5ncy5vZmZsaW5lQXBwQ2FjaGUgPSBlbmFibGU7
Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotfQotCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGlu
Z19jYXJldF9icm93c2luZ19nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCi17Ci0gICAg
RVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKLSAg
ICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBmYWxzZSk7Ci0g
ICAgcmV0dXJuIHByaXYtPnNldHRpbmdzLmNhcmV0QnJvd3Npbmc7Ci19Ci0KLUVpbmFfQm9vbCBl
d2tfdmlld19zZXR0aW5nX2NhcmV0X2Jyb3dzaW5nX3NldChFdmFzX09iamVjdCogZXdrVmlldywg
RWluYV9Cb29sIGVuYWJsZSkKLXsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1Zp
ZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihz
bWFydERhdGEsIHByaXYsIGZhbHNlKTsKLSAgICBlbmFibGUgPSAhIWVuYWJsZTsKLSAgICBpZiAo
cHJpdi0+c2V0dGluZ3MuY2FyZXRCcm93c2luZyAhPSBlbmFibGUpIHsKLSAgICAgICAgcHJpdi0+
cGFnZS0+c2V0dGluZ3MoKS5zZXRDYXJldEJyb3dzaW5nRW5hYmxlZChlbmFibGUpOwotICAgICAg
ICBwcml2LT5zZXR0aW5ncy5jYXJldEJyb3dzaW5nID0gZW5hYmxlOwotICAgIH0KLSAgICByZXR1
cm4gdHJ1ZTsKLX0KLQotY29uc3QgY2hhciogZXdrX3ZpZXdfc2V0dGluZ19lbmNvZGluZ19jdXN0
b21fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQotewotICAgIEVXS19WSUVXX1NEX0dF
VF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCAwKTsKLSAgICBFV0tfVklFV19QUklWX0dF
VF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCAwKTsKLSAgICBFdmFzX09iamVjdCogbWFpbl9m
cmFtZSA9IGV3a192aWV3X2ZyYW1lX21haW5fZ2V0KGV3a1ZpZXcpOwotICAgIFdlYkNvcmU6OkZy
YW1lKiBjb3JlX2ZyYW1lID0gRVdLUHJpdmF0ZTo6Y29yZUZyYW1lKG1haW5fZnJhbWUpOwotCi0g
ICAgU3RyaW5nIG92ZXJyaWRlRW5jb2RpbmcgPSBjb3JlX2ZyYW1lLT5sb2FkZXIoKS5kb2N1bWVu
dExvYWRlcigpLT5vdmVycmlkZUVuY29kaW5nKCk7Ci0KLSAgICBpZiAob3ZlcnJpZGVFbmNvZGlu
Zy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgZWluYV9zdHJpbmdzaGFyZV9y
ZXBsYWNlKCZwcml2LT5zZXR0aW5ncy5lbmNvZGluZ0N1c3RvbSwgb3ZlcnJpZGVFbmNvZGluZy51
dGY4KCkuZGF0YSgpKTsKLSAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3MuZW5jb2RpbmdDdXN0b207
Ci19Ci0KLUVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2VuY29kaW5nX2N1c3RvbV9zZXQoRXZh
c19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IGNoYXIqIGVuY29kaW5nKQotewotICAgIEVXS19WSUVX
X1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7Ci0gICAgRVdLX1ZJ
RVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwotICAgIEV2YXNf
T2JqZWN0KiBtYWluX2ZyYW1lID0gZXdrX3ZpZXdfZnJhbWVfbWFpbl9nZXQoZXdrVmlldyk7Ci0g
ICAgV2ViQ29yZTo6RnJhbWUqIGNvcmVGcmFtZSA9IEVXS1ByaXZhdGU6OmNvcmVGcmFtZShtYWlu
X2ZyYW1lKTsKLSAgICBEQkcoIiVzIiwgZW5jb2RpbmcpOwotICAgIGlmIChlaW5hX3N0cmluZ3No
YXJlX3JlcGxhY2UoJnByaXYtPnNldHRpbmdzLmVuY29kaW5nQ3VzdG9tLCBlbmNvZGluZykpCi0g
ICAgICAgIGNvcmVGcmFtZS0+bG9hZGVyKCkucmVsb2FkV2l0aE92ZXJyaWRlRW5jb2RpbmcoU3Ry
aW5nOjpmcm9tVVRGOChlbmNvZGluZykpOwotICAgIHJldHVybiB0cnVlOwotfQotCi1jb25zdCBj
aGFyKiBld2tfdmlld19zZXR0aW5nX2VuY29kaW5nX2RlZmF1bHRfZ2V0KGNvbnN0IEV2YXNfT2Jq
ZWN0KiBld2tWaWV3KQotewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywg
c21hcnREYXRhLCAwKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRh
LCBwcml2LCAwKTsKLSAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3MuZW5jb2RpbmdEZWZhdWx0Owot
fQotCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19lbmNvZGluZ19kZWZhdWx0X3NldChFdmFz
X09iamVjdCogZXdrVmlldywgY29uc3QgY2hhciogZW5jb2RpbmcpCi17Ci0gICAgRVdLX1ZJRVdf
U0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKLSAgICBFV0tfVklF
V19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBmYWxzZSk7Ci0gICAgaWYgKGVp
bmFfc3RyaW5nc2hhcmVfcmVwbGFjZSgmcHJpdi0+c2V0dGluZ3MuZW5jb2RpbmdEZWZhdWx0LCBl
bmNvZGluZykpCi0gICAgICAgIHByaXYtPnBhZ2UtPnNldHRpbmdzKCkuc2V0RGVmYXVsdFRleHRF
bmNvZGluZ05hbWUoU3RyaW5nOjpmcm9tVVRGOChlbmNvZGluZykpOwotICAgIHJldHVybiB0cnVl
OwotfQotCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19lbmNvZGluZ19kZXRlY3Rvcl9zZXQo
RXZhc19PYmplY3QqIGV3a1ZpZXcsIEVpbmFfQm9vbCBlbmFibGUpCi17Ci0gICAgRVdLX1ZJRVdf
U0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKLSAgICBFV0tfVklF
V19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBmYWxzZSk7Ci0gICAgZW5hYmxl
ID0gISFlbmFibGU7Ci0gICAgaWYgKHByaXYtPnNldHRpbmdzLmVuY29kaW5nRGV0ZWN0b3IgIT0g
ZW5hYmxlKSB7Ci0gICAgICAgIHByaXYtPnBhZ2UtPnNldHRpbmdzKCkuc2V0VXNlc0VuY29kaW5n
RGV0ZWN0b3IoZW5hYmxlKTsKLSAgICAgICAgcHJpdi0+c2V0dGluZ3MuZW5jb2RpbmdEZXRlY3Rv
ciA9IGVuYWJsZTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLUVpbmFfQm9vbCBld2tf
dmlld19zZXR0aW5nX2VuY29kaW5nX2RldGVjdG9yX2dldChjb25zdCBFdmFzX09iamVjdCogZXdr
VmlldykKLXsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0
YSwgZmFsc2UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHBy
aXYsIGZhbHNlKTsKLSAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3MuZW5jb2RpbmdEZXRlY3RvcjsK
LX0KLQotRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2RldmVsb3Blcl9leHRyYXNf
Z2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQotewotICAgIEVXS19WSUVXX1NEX0dFVF9P
Ul9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9H
RVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwotICAgIHJldHVybiBwcml2LT5z
ZXR0aW5ncy5lbmFibGVEZXZlbG9wZXJFeHRyYXM7Ci19Ci0KLUVpbmFfQm9vbCBld2tfdmlld19z
ZXR0aW5nX2VuYWJsZV9kZXZlbG9wZXJfZXh0cmFzX3NldChFdmFzX09iamVjdCogZXdrVmlldywg
RWluYV9Cb29sIGVuYWJsZSkKLXsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1Zp
ZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihz
bWFydERhdGEsIHByaXYsIGZhbHNlKTsKLSAgICBlbmFibGUgPSAhIWVuYWJsZTsKLSAgICBpZiAo
cHJpdi0+c2V0dGluZ3MuZW5hYmxlRGV2ZWxvcGVyRXh0cmFzICE9IGVuYWJsZSkgewotICAgICAg
ICBwcml2LT5wYWdlLT5zZXR0aW5ncygpLnNldERldmVsb3BlckV4dHJhc0VuYWJsZWQoZW5hYmxl
KTsKLSAgICAgICAgcHJpdi0+c2V0dGluZ3MuZW5hYmxlRGV2ZWxvcGVyRXh0cmFzID0gZW5hYmxl
OwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotaW50IGV3a192aWV3X3NldHRpbmdfZm9u
dF9taW5pbXVtX3NpemVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQotewotICAgIEVX
S19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCAwKTsKLSAgICBFV0tf
VklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCAwKTsKLSAgICByZXR1cm4g
cHJpdi0+c2V0dGluZ3MuZm9udE1pbmltdW1TaXplOwotfQotCi1FaW5hX0Jvb2wgZXdrX3ZpZXdf
c2V0dGluZ19mb250X21pbmltdW1fc2l6ZV9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGludCBz
aXplKQotewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRh
LCBmYWxzZSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJp
diwgZmFsc2UpOwotICAgIGlmIChwcml2LT5zZXR0aW5ncy5mb250TWluaW11bVNpemUgIT0gc2l6
ZSkgewotICAgICAgICBwcml2LT5wYWdlLT5zZXR0aW5ncygpLnNldE1pbmltdW1Gb250U2l6ZShz
aXplKTsKLSAgICAgICAgcHJpdi0+c2V0dGluZ3MuZm9udE1pbmltdW1TaXplID0gc2l6ZTsKLSAg
ICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWludCBld2tfdmlld19zZXR0aW5nX2ZvbnRfbWlu
aW11bV9sb2dpY2FsX3NpemVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQotewotICAg
IEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCAwKTsKLSAgICBF
V0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCAwKTsKLSAgICByZXR1
cm4gcHJpdi0+c2V0dGluZ3MuZm9udE1pbmltdW1Mb2dpY2FsU2l6ZTsKLX0KLQotRWluYV9Cb29s
IGV3a192aWV3X3NldHRpbmdfZm9udF9taW5pbXVtX2xvZ2ljYWxfc2l6ZV9zZXQoRXZhc19PYmpl
Y3QqIGV3a1ZpZXcsIGludCBzaXplKQotewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4o
ZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVU
VVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwotICAgIGlmIChwcml2LT5zZXR0aW5ncy5mb250
TWluaW11bUxvZ2ljYWxTaXplICE9IHNpemUpIHsKLSAgICAgICAgcHJpdi0+cGFnZS0+c2V0dGlu
Z3MoKS5zZXRNaW5pbXVtTG9naWNhbEZvbnRTaXplKHNpemUpOwotICAgICAgICBwcml2LT5zZXR0
aW5ncy5mb250TWluaW11bUxvZ2ljYWxTaXplID0gc2l6ZTsKLSAgICB9Ci0gICAgcmV0dXJuIHRy
dWU7Ci19Ci0KLWludCBld2tfdmlld19zZXR0aW5nX2ZvbnRfZGVmYXVsdF9zaXplX2dldChjb25z
dCBFdmFzX09iamVjdCogZXdrVmlldykKLXsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJO
KGV3a1ZpZXcsIHNtYXJ0RGF0YSwgMCk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJO
KHNtYXJ0RGF0YSwgcHJpdiwgMCk7Ci0gICAgcmV0dXJuIHByaXYtPnNldHRpbmdzLmZvbnREZWZh
dWx0U2l6ZTsKLX0KLQotRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZm9udF9kZWZhdWx0X3Np
emVfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBpbnQgc2l6ZSkKLXsKLSAgICBFV0tfVklFV19T
RF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwotICAgIEVXS19WSUVX
X1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKLSAgICBpZiAocHJp
di0+c2V0dGluZ3MuZm9udERlZmF1bHRTaXplICE9IHNpemUpIHsKLSAgICAgICAgcHJpdi0+cGFn
ZS0+c2V0dGluZ3MoKS5zZXREZWZhdWx0Rm9udFNpemUoc2l6ZSk7Ci0gICAgICAgIHByaXYtPnNl
dHRpbmdzLmZvbnREZWZhdWx0U2l6ZSA9IHNpemU7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwot
fQotCi1pbnQgZXdrX3ZpZXdfc2V0dGluZ19mb250X21vbm9zcGFjZV9zaXplX2dldChjb25zdCBF
dmFzX09iamVjdCogZXdrVmlldykKLXsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3
a1ZpZXcsIHNtYXJ0RGF0YSwgMCk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNt
YXJ0RGF0YSwgcHJpdiwgMCk7Ci0gICAgcmV0dXJuIHByaXYtPnNldHRpbmdzLmZvbnRNb25vc3Bh
Y2VTaXplOwotfQotCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19mb250X21vbm9zcGFjZV9z
aXplX3NldChFdmFzX09iamVjdCogZXdrVmlldywgaW50IHNpemUpCi17Ci0gICAgRVdLX1ZJRVdf
U0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKLSAgICBFV0tfVklF
V19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBmYWxzZSk7Ci0gICAgaWYgKHBy
aXYtPnNldHRpbmdzLmZvbnRNb25vc3BhY2VTaXplICE9IHNpemUpIHsKLSAgICAgICAgcHJpdi0+
cGFnZS0+c2V0dGluZ3MoKS5zZXREZWZhdWx0Rml4ZWRGb250U2l6ZShzaXplKTsKLSAgICAgICAg
cHJpdi0+c2V0dGluZ3MuZm9udE1vbm9zcGFjZVNpemUgPSBzaXplOwotICAgIH0KLSAgICByZXR1
cm4gdHJ1ZTsKLX0KLQotY29uc3QgY2hhciogZXdrX3ZpZXdfZm9udF9mYW1pbHlfbmFtZV9nZXQo
Y29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV3a19Gb250X0ZhbWlseSBmb250RmFtaWx5KQot
ewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCAwKTsK
LSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCAwKTsKLQot
ICAgIHN3aXRjaCAoZm9udEZhbWlseSkgewotICAgIGNhc2UgRVdLX0ZPTlRfRkFNSUxZX1NUQU5E
QVJEOgotICAgICAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3MuZm9udFN0YW5kYXJkOwotICAgIGNh
c2UgRVdLX0ZPTlRfRkFNSUxZX0NVUlNJVkU6Ci0gICAgICAgIHJldHVybiBwcml2LT5zZXR0aW5n
cy5mb250Q3Vyc2l2ZTsKLSAgICBjYXNlIEVXS19GT05UX0ZBTUlMWV9GQU5UQVNZOgotICAgICAg
ICByZXR1cm4gcHJpdi0+c2V0dGluZ3MuZm9udEZhbnRhc3k7Ci0gICAgY2FzZSBFV0tfRk9OVF9G
QU1JTFlfTU9OT1NQQUNFOgotICAgICAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3MuZm9udE1vbm9z
cGFjZTsKLSAgICBjYXNlIEVXS19GT05UX0ZBTUlMWV9TRVJJRjoKLSAgICAgICAgcmV0dXJuIHBy
aXYtPnNldHRpbmdzLmZvbnRTZXJpZjsKLSAgICBjYXNlIEVXS19GT05UX0ZBTUlMWV9TQU5TX1NF
UklGOgotICAgICAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3MuZm9udFNhbnNTZXJpZjsKLSAgICB9
Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLUVpbmFfQm9vbCBld2tfdmlld19mb250X2ZhbWlseV9uYW1l
X3NldChFdmFzX09iamVjdCogZXdrVmlldywgRXdrX0ZvbnRfRmFtaWx5IGZvbnRGYW1pbHksIGNv
bnN0IGNoYXIqIG5hbWUpCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3
LCBzbWFydERhdGEsIGZhbHNlKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21h
cnREYXRhLCBwcml2LCBmYWxzZSk7Ci0KLSAgICBzd2l0Y2ggKGZvbnRGYW1pbHkpIHsKLSAgICBj
YXNlIEVXS19GT05UX0ZBTUlMWV9TVEFOREFSRDoKLSAgICAgICAgZWluYV9zdHJpbmdzaGFyZV9y
ZXBsYWNlKCZwcml2LT5zZXR0aW5ncy5mb250U3RhbmRhcmQsIG5hbWUpOwotICAgICAgICBwcml2
LT5wYWdlLT5zZXR0aW5ncygpLnNldFN0YW5kYXJkRm9udEZhbWlseShBdG9taWNTdHJpbmc6OmZy
b21VVEY4KG5hbWUpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFV0tfRk9OVF9GQU1JTFlf
Q1VSU0lWRToKLSAgICAgICAgZWluYV9zdHJpbmdzaGFyZV9yZXBsYWNlKCZwcml2LT5zZXR0aW5n
cy5mb250Q3Vyc2l2ZSwgbmFtZSk7Ci0gICAgICAgIHByaXYtPnBhZ2UtPnNldHRpbmdzKCkuc2V0
Q3Vyc2l2ZUZvbnRGYW1pbHkoQXRvbWljU3RyaW5nOjpmcm9tVVRGOChuYW1lKSk7Ci0gICAgICAg
IGJyZWFrOwotICAgIGNhc2UgRVdLX0ZPTlRfRkFNSUxZX0ZBTlRBU1k6Ci0gICAgICAgIGVpbmFf
c3RyaW5nc2hhcmVfcmVwbGFjZSgmcHJpdi0+c2V0dGluZ3MuZm9udEZhbnRhc3ksIG5hbWUpOwot
ICAgICAgICBwcml2LT5wYWdlLT5zZXR0aW5ncygpLnNldEZhbnRhc3lGb250RmFtaWx5KEF0b21p
Y1N0cmluZzo6ZnJvbVVURjgobmFtZSkpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEVXS19G
T05UX0ZBTUlMWV9NT05PU1BBQ0U6Ci0gICAgICAgIGVpbmFfc3RyaW5nc2hhcmVfcmVwbGFjZSgm
cHJpdi0+c2V0dGluZ3MuZm9udE1vbm9zcGFjZSwgbmFtZSk7Ci0gICAgICAgIHByaXYtPnBhZ2Ut
PnNldHRpbmdzKCkuc2V0Rml4ZWRGb250RmFtaWx5KEF0b21pY1N0cmluZzo6ZnJvbVVURjgobmFt
ZSkpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEVXS19GT05UX0ZBTUlMWV9TRVJJRjoKLSAg
ICAgICAgZWluYV9zdHJpbmdzaGFyZV9yZXBsYWNlKCZwcml2LT5zZXR0aW5ncy5mb250U2VyaWYs
IG5hbWUpOwotICAgICAgICBwcml2LT5wYWdlLT5zZXR0aW5ncygpLnNldFNlcmlmRm9udEZhbWls
eShBdG9taWNTdHJpbmc6OmZyb21VVEY4KG5hbWUpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBFV0tfRk9OVF9GQU1JTFlfU0FOU19TRVJJRjoKLSAgICAgICAgZWluYV9zdHJpbmdzaGFyZV9y
ZXBsYWNlKCZwcml2LT5zZXR0aW5ncy5mb250U2Fuc1NlcmlmLCBuYW1lKTsKLSAgICAgICAgcHJp
di0+cGFnZS0+c2V0dGluZ3MoKS5zZXRTYW5zU2VyaWZGb250RmFtaWx5KEF0b21pY1N0cmluZzo6
ZnJvbVVURjgobmFtZSkpOwotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLUVpbmFfQm9vbCBl
d2tfdmlld19zZXR0aW5nX3NwYXRpYWxfbmF2aWdhdGlvbl9nZXQoY29uc3QgRXZhc19PYmplY3Qq
IGV3a1ZpZXcpCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFy
dERhdGEsIGZhbHNlKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRh
LCBwcml2LCBmYWxzZSk7Ci0gICAgcmV0dXJuIHByaXYtPnNldHRpbmdzLnNwYXRpYWxOYXZpZ2F0
aW9uOwotfQotCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19zcGF0aWFsX25hdmlnYXRpb25f
c2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFaW5hX0Jvb2wgZW5hYmxlKQotewotICAgIEVXS19W
SUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7Ci0gICAgRVdL
X1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwotICAgIGVu
YWJsZSA9ICEhZW5hYmxlOwotICAgIGlmIChwcml2LT5zZXR0aW5ncy5zcGF0aWFsTmF2aWdhdGlv
biAhPSBlbmFibGUpIHsKLSAgICAgICAgcHJpdi0+cGFnZS0+c2V0dGluZ3MoKS5zZXRTcGF0aWFs
TmF2aWdhdGlvbkVuYWJsZWQoZW5hYmxlKTsKLSAgICAgICAgcHJpdi0+c2V0dGluZ3Muc3BhdGlh
bE5hdmlnYXRpb24gPSBlbmFibGU7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotfQotCi1FaW5h
X0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19sb2NhbF9zdG9yYWdlX2dldChjb25zdCBFdmFzX09iamVj
dCogZXdrVmlldykKLXsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNt
YXJ0RGF0YSwgZmFsc2UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERh
dGEsIHByaXYsIGZhbHNlKTsKLSAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3MubG9jYWxTdG9yYWdl
OwotfQotCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19sb2NhbF9zdG9yYWdlX3NldChFdmFz
X09iamVjdCogZXdrVmlldywgRWluYV9Cb29sIGVuYWJsZSkKLXsKLSAgICBFV0tfVklFV19TRF9H
RVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwotICAgIEVXS19WSUVXX1BS
SVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKLSAgICBlbmFibGUgPSAh
IWVuYWJsZTsKLSAgICBpZiAocHJpdi0+c2V0dGluZ3MubG9jYWxTdG9yYWdlICE9IGVuYWJsZSkg
ewotICAgICAgICBwcml2LT5wYWdlLT5zZXR0aW5ncygpLnNldExvY2FsU3RvcmFnZUVuYWJsZWQo
ZW5hYmxlKTsKLSAgICAgICAgcHJpdi0+c2V0dGluZ3MubG9jYWxTdG9yYWdlID0gZW5hYmxlOwot
ICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdf
cGFnZV9jYWNoZV9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCi17Ci0gICAgRVdLX1ZJ
RVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKLSAgICBFV0tf
VklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBmYWxzZSk7Ci0gICAgcmV0
dXJuIHByaXYtPnNldHRpbmdzLnBhZ2VDYWNoZTsKLX0KLQotRWluYV9Cb29sIGV3a192aWV3X3Nl
dHRpbmdfcGFnZV9jYWNoZV9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEVpbmFfQm9vbCBlbmFi
bGUpCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEs
IGZhbHNlKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2
LCBmYWxzZSk7Ci0gICAgZW5hYmxlID0gISFlbmFibGU7Ci0gICAgaWYgKHByaXYtPnNldHRpbmdz
LnBhZ2VDYWNoZSAhPSBlbmFibGUpIHsKLSAgICAgICAgcHJpdi0+cGFnZS0+c2V0dGluZ3MoKS5z
ZXRVc2VzUGFnZUNhY2hlKGVuYWJsZSk7Ci0gICAgICAgIHByaXYtPnNldHRpbmdzLnBhZ2VDYWNo
ZSA9IGVuYWJsZTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWNvbnN0IGNoYXIqIGV3
a192aWV3X3NldHRpbmdfbG9jYWxfc3RvcmFnZV9kYXRhYmFzZV9wYXRoX2dldChjb25zdCBFdmFz
X09iamVjdCogZXdrVmlldykKLXsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1Zp
ZXcsIHNtYXJ0RGF0YSwgMCk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0
RGF0YSwgcHJpdiwgMCk7Ci0gICAgcmV0dXJuIHByaXYtPnNldHRpbmdzLmxvY2FsU3RvcmFnZURh
dGFiYXNlUGF0aDsKLX0KLQotRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfbG9jYWxfc3RvcmFn
ZV9kYXRhYmFzZV9wYXRoX3NldChFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgY2hhciogcGF0
aCkKLXsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwg
ZmFsc2UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYs
IGZhbHNlKTsKLSAgICBpZiAoZWluYV9zdHJpbmdzaGFyZV9yZXBsYWNlKCZwcml2LT5zZXR0aW5n
cy5sb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgsIHBhdGgpKQotICAgICAgICBwcml2LT5wYWdlLT5z
ZXR0aW5ncygpLnNldExvY2FsU3RvcmFnZURhdGFiYXNlUGF0aChTdHJpbmc6OmZyb21VVEY4KHBh
dGgpKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdf
bWluaW11bV90aW1lcl9pbnRlcnZhbF9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGRvdWJsZSBp
bnRlcnZhbCkKLXsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0
RGF0YSwgZmFsc2UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEs
IHByaXYsIGZhbHNlKTsKLSAgICBpZiAoZmFicyhwcml2LT5zZXR0aW5ncy5kb21UaW1lckludGVy
dmFsIC0gaW50ZXJ2YWwpID49IHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6ZXBzaWxvbigp
KSB7Ci0gICAgICAgIHByaXYtPnBhZ2UtPnNldHRpbmdzKCkuc2V0TWluRE9NVGltZXJJbnRlcnZh
bChpbnRlcnZhbCk7Ci0gICAgICAgIHByaXYtPnNldHRpbmdzLmRvbVRpbWVySW50ZXJ2YWwgPSBp
bnRlcnZhbDsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWRvdWJsZSBld2tfdmlld19z
ZXR0aW5nX21pbmltdW1fdGltZXJfaW50ZXJ2YWxfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tW
aWV3KQotewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRh
LCAtMS4wKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2
LCAtMS4wKTsKLSAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3MuZG9tVGltZXJJbnRlcnZhbDsKLX0K
LQotRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZW5hYmxlX3dlYmdsX2dldChjb25zdCBFdmFz
X09iamVjdCogZXdrVmlldykKLXsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1Zp
ZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihz
bWFydERhdGEsIHByaXYsIGZhbHNlKTsKLSAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3Mud2ViR0xF
bmFibGVkOwotfQotCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfd2ViZ2xfc2V0
KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFaW5hX0Jvb2wgZW5hYmxlKQotewotICAgIEVXS19WSUVX
X1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7Ci0gICAgRVdLX1ZJ
RVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwotICAgIGVuYWJs
ZSA9ICEhZW5hYmxlOwotICAgIGlmIChwcml2LT5zZXR0aW5ncy53ZWJHTEVuYWJsZWQgIT0gZW5h
YmxlKSB7Ci0gICAgICAgIHByaXYtPnBhZ2UtPnNldHRpbmdzKCkuc2V0V2ViR0xFbmFibGVkKGVu
YWJsZSk7Ci0gICAgICAgIHByaXYtPnNldHRpbmdzLndlYkdMRW5hYmxlZCA9IGVuYWJsZTsKLSAg
ICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLUVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2lu
Y2x1ZGVfbGlua3NfaW5fZm9jdXNfY2hhaW5fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3
KQotewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBm
YWxzZSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwg
ZmFsc2UpOwotICAgIHJldHVybiBwcml2LT5zZXR0aW5ncy50YWJzVG9MaW5rczsKLX0KLQotRWlu
YV9Cb29sIGV3a192aWV3X3NldHRpbmdfaW5jbHVkZV9saW5rc19pbl9mb2N1c19jaGFpbl9zZXQo
RXZhc19PYmplY3QqIGV3a1ZpZXcsIEVpbmFfQm9vbCBlbmFibGUpCi17Ci0gICAgRVdLX1ZJRVdf
U0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKLSAgICBFV0tfVklF
V19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBmYWxzZSk7Ci0gICAgZW5hYmxl
ID0gISFlbmFibGU7Ci0gICAgcHJpdi0+c2V0dGluZ3MudGFic1RvTGlua3MgPSBlbmFibGU7Ci0g
ICAgcmV0dXJuIHRydWU7Ci19Ci0KLUVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2VuYWJsZV9o
eXBlcmxpbmtfYXVkaXRpbmdfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQotewotICAg
IEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7Ci0g
ICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwot
ICAgIHJldHVybiBwcml2LT5zZXR0aW5ncy5oeXBlcmxpbmtBdWRpdGluZ0VuYWJsZWQ7Ci19Ci0K
LUVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2VuYWJsZV9oeXBlcmxpbmtfYXVkaXRpbmdfc2V0
KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFaW5hX0Jvb2wgZW5hYmxlKQotewotICAgIEVXS19WSUVX
X1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7Ci0gICAgRVdLX1ZJ
RVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwotICAgIGVuYWJs
ZSA9ICEhZW5hYmxlOwotICAgIGlmIChwcml2LT5zZXR0aW5ncy5oeXBlcmxpbmtBdWRpdGluZ0Vu
YWJsZWQgIT0gZW5hYmxlKSB7Ci0gICAgICAgIHByaXYtPnBhZ2UtPnNldHRpbmdzKCkuc2V0SHlw
ZXJsaW5rQXVkaXRpbmdFbmFibGVkKGVuYWJsZSk7Ci0gICAgICAgIHByaXYtPnNldHRpbmdzLmh5
cGVybGlua0F1ZGl0aW5nRW5hYmxlZCA9IGVuYWJsZTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7
Ci19Ci0KLUVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2FsbG93X3VuaXZlcnNhbF9hY2Nlc3Nf
ZnJvbV9maWxlX3VybHNfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFaW5hX0Jvb2wgZW5hYmxl
KQotewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBm
YWxzZSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwg
ZmFsc2UpOwotICAgIGVuYWJsZSA9ICEhZW5hYmxlOwotICAgIGlmIChwcml2LT5zZXR0aW5ncy5h
bGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMcyAhPSBlbmFibGUpIHsKLSAgICAgICAgcHJp
di0+cGFnZS0+c2V0dGluZ3MoKS5zZXRBbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMcyhl
bmFibGUpOwotICAgICAgICBwcml2LT5zZXR0aW5ncy5hbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21G
aWxlVVJMcyA9IGVuYWJsZTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLUVpbmFfQm9v
bCBld2tfdmlld19zZXR0aW5nX2FsbG93X3VuaXZlcnNhbF9hY2Nlc3NfZnJvbV9maWxlX3VybHNf
Z2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQotewotICAgIEVXS19WSUVXX1NEX0dFVF9P
Ul9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9H
RVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwotICAgIHJldHVybiBwcml2LT5z
ZXR0aW5ncy5hbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMczsKLX0KLQotRWluYV9Cb29s
IGV3a192aWV3X3NldHRpbmdfYWxsb3dfZmlsZV9hY2Nlc3NfZnJvbV9maWxlX3VybHNfc2V0KEV2
YXNfT2JqZWN0KiBld2tWaWV3LCBFaW5hX0Jvb2wgZW5hYmxlKQotewotICAgIEVXS19WSUVXX1NE
X0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7Ci0gICAgRVdLX1ZJRVdf
UFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwotICAgIGVuYWJsZSA9
ICEhZW5hYmxlOwotICAgIGlmIChwcml2LT5zZXR0aW5ncy5hbGxvd0ZpbGVBY2Nlc3NGcm9tRmls
ZVVSTHMgIT0gZW5hYmxlKSB7Ci0gICAgICAgIHByaXYtPnBhZ2UtPnNldHRpbmdzKCkuc2V0QWxs
b3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzKGVuYWJsZSk7Ci0gICAgICAgIHByaXYtPnNldHRpbmdz
LmFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcyA9IGVuYWJsZTsKLSAgICB9Ci0gICAgcmV0dXJu
IHRydWU7Ci19Ci0KLUVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2FsbG93X2ZpbGVfYWNjZXNz
X2Zyb21fZmlsZV91cmxzX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKLXsKLSAgICBF
V0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwotICAg
IEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKLSAg
ICByZXR1cm4gcHJpdi0+c2V0dGluZ3MuYWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzOwotfQot
Ci1Fd2tfVmlld19TbWFydF9EYXRhKiBld2tfdmlld19zbWFydF9kYXRhX2dldChjb25zdCBFdmFz
X09iamVjdCogZXdrVmlldykKLXsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1Zp
ZXcsIHNtYXJ0RGF0YSwgMCk7Ci0gICAgcmV0dXJuIHNtYXJ0RGF0YTsKLX0KLQotLyoqCi0gKiBE
byBsYXlvdXQgaWYgcmVxdWlyZWQsIGFwcGxpZWQgcmVjdXJzaXZlbHkuCi0gKgotICogQHBhcmFt
IHByaXYgcHJpdmF0ZSBoYW5kbGUgcG9pbnRlciBvZiB0aGUgdmlldyB0byBsYXlvdXQuCi0gKgot
ICogQG5vdGUgdGhpcyBpcyBub3QgZm9yIGdlbmVyYWwgdXNlIGJ1dCBqdXN0IGZvciBzdWJjbGFz
c2VzIHRoYXQgd2FudAotICogICAgICAgdG8gZGVmaW5lIHRoZWlyIG93biBiYWNraW5nIHN0b3Jl
LgotICovCi12b2lkIGV3a192aWV3X2xheW91dF9pZl9uZWVkZWRfcmVjdXJzaXZlKEV3a19WaWV3
X1ByaXZhdGVfRGF0YSogcHJpdikKLXsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihw
cml2KTsKLQotICAgIFdlYkNvcmU6OkZyYW1lVmlldyogdmlldyA9IHByaXYtPnBhZ2UtPm1haW5G
cmFtZSgpLnZpZXcoKTsKLSAgICBpZiAoIXZpZXcpIHsKLSAgICAgICAgRVJSKCJubyBtYWluIGZy
YW1lIHZpZXciKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICB2aWV3LT51cGRhdGVMYXlv
dXRBbmRTdHlsZUlmTmVlZGVkUmVjdXJzaXZlKCk7Ci19Ci0KLS8qKgotICogQGludGVybmFsCi0g
KiBSZXBvcnRzIHRoZSB2aWV3IGlzIHJlYWR5IHRvIGJlIGRpc3BsYXllZCBhcyBhbGwgZWxlbWVu
dHMgYXJlIGFyZWFkeS4KLSAqCi0gKiBFbWl0cyBzaWduYWw6ICJyZWFkeSIgd2l0aCBubyBwYXJh
bWV0ZXJzLgotICovCi12b2lkIGV3a192aWV3X3JlYWR5KEV2YXNfT2JqZWN0KiBld2tWaWV3KQot
ewotICAgIERCRygiZXdrVmlldz0lcCIsIGV3a1ZpZXcpOwotICAgIGV2YXNfb2JqZWN0X3NtYXJ0
X2NhbGxiYWNrX2NhbGwoZXdrVmlldywgInJlYWR5IiwgMCk7Ci19Ci0KLS8qKgotICogQGludGVy
bmFsCi0gKiBSZXBvcnRzIHRoZSBzdGF0ZSBvZiBpbnB1dCBtZXRob2QgY2hhbmdlZC4gVGhpcyBp
cyB0cmlnZ2VyZWQsIGZvciBleGFtcGxlCi0gKiB3aGVuIGEgaW5wdXQgZmllbGQgcmVjZWl2ZWQv
bG9zdCBmb2N1cwotICoKLSAqIEVtaXRzIHNpZ25hbDogImlucHV0bWV0aG9kLGNoYW5nZWQiIHdp
dGggYSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciBpdCdzCi0gKiBlbmFibGVkIG9yIG5vdC4K
LSAqLwotdm9pZCBld2tfdmlld19pbnB1dF9tZXRob2Rfc3RhdGVfc2V0KEV2YXNfT2JqZWN0KiBl
d2tWaWV3LCBib29sIGFjdGl2ZSkKLXsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3
a1ZpZXcsIHNtYXJ0RGF0YSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVQoc21hcnREYXRhLCBwcml2
KTsKLSAgICBXZWJDb3JlOjpGcmFtZSYgZm9jdXNlZEZyYW1lID0gcHJpdi0+cGFnZS0+Zm9jdXND
b250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7Ci0KLSAgICBwcml2LT5pbWggPSAwOwot
ICAgIGlmIChmb2N1c2VkRnJhbWUuZG9jdW1lbnQoKQotICAgICAgICAmJiBmb2N1c2VkRnJhbWUu
ZG9jdW1lbnQoKS0+Zm9jdXNlZEVsZW1lbnQoKQotICAgICAgICAmJiBpc0hUTUxJbnB1dEVsZW1l
bnQoZm9jdXNlZEZyYW1lLmRvY3VtZW50KCktPmZvY3VzZWRFbGVtZW50KCkpKSB7Ci0gICAgICAg
IFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudDsKLQotICAgICAgICBpbnB1
dEVsZW1lbnQgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50Kj4oZm9jdXNl
ZEZyYW1lLmRvY3VtZW50KCktPmZvY3VzZWRFbGVtZW50KCkpOwotICAgICAgICBpZiAoaW5wdXRF
bGVtZW50KSB7Ci0gICAgICAgICAgICAvLyBmb3IgcGFzc3dvcmQgZmllbGRzLCBhY3RpdmUgPT0g
ZmFsc2UKLSAgICAgICAgICAgIGlmICghYWN0aXZlKSB7Ci0gICAgICAgICAgICAgICAgYWN0aXZl
ID0gaW5wdXRFbGVtZW50LT5pc1Bhc3N3b3JkRmllbGQoKTsKLSAgICAgICAgICAgICAgICBwcml2
LT5pbWggPSBpbnB1dEVsZW1lbnQtPmlzUGFzc3dvcmRGaWVsZCgpICogRVdLX0lNSF9QQVNTV09S
RDsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgLy8gU2V0IGlucHV0IG1l
dGhvZCBoaW50cyBmb3IgIm51bWJlciIsICJ0ZWwiLCAiZW1haWwiLCBhbmQgInVybCIgaW5wdXQg
ZWxlbWVudHMuCi0gICAgICAgICAgICAgICAgcHJpdi0+aW1oIHw9IGlucHV0RWxlbWVudC0+aXNU
ZWxlcGhvbmVGaWVsZCgpICogRVdLX0lNSF9URUxFUEhPTkU7Ci0gICAgICAgICAgICAgICAgcHJp
di0+aW1oIHw9IGlucHV0RWxlbWVudC0+aXNOdW1iZXJGaWVsZCgpICogRVdLX0lNSF9OVU1CRVI7
Ci0gICAgICAgICAgICAgICAgcHJpdi0+aW1oIHw9IGlucHV0RWxlbWVudC0+aXNFbWFpbEZpZWxk
KCkgKiBFV0tfSU1IX0VNQUlMOwotICAgICAgICAgICAgICAgIHByaXYtPmltaCB8PSBpbnB1dEVs
ZW1lbnQtPmlzVVJMRmllbGQoKSAqIEVXS19JTUhfVVJMOwotICAgICAgICAgICAgfQotICAgICAg
ICB9Ci0gICAgfQotCi0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChld2tWaWV3
LCAiaW5wdXRtZXRob2QsY2hhbmdlZCIsICh2b2lkKilhY3RpdmUpOwotfQotCi0vKioKLSAqIEBp
bnRlcm5hbAotICogVGhlIHZpZXcgdGl0bGUgd2FzIGNoYW5nZWQgYnkgdGhlIGZyYW1lIGxvYWRl
ci4KLSAqCi0gKiBFbWl0cyBzaWduYWw6ICJ0aXRsZSxjaGFuZ2VkIiB3aXRoIHBvaW50ZXIgdG8g
bmV3IHRpdGxlIHN0cmluZy4KLSAqLwotdm9pZCBld2tfdmlld190aXRsZV9zZXQoRXZhc19PYmpl
Y3QqIGV3a1ZpZXcsIGNvbnN0IEV3a19UZXh0X1dpdGhfRGlyZWN0aW9uKiB0aXRsZSkKLXsKLSAg
ICBEQkcoImV3a1ZpZXc9JXAsIHRpdGxlPSVzIiwgZXdrVmlldywgKHRpdGxlICYmIHRpdGxlLT5z
dHJpbmcpID8gdGl0bGUtPnN0cmluZyA6ICIobnVsbCkiKTsKLSAgICBldmFzX29iamVjdF9zbWFy
dF9jYWxsYmFja19jYWxsKGV3a1ZpZXcsICJ0aXRsZSxjaGFuZ2VkIiwgKHZvaWQqKXRpdGxlKTsK
LX0KLQotLyoqCi0gKiBAaW50ZXJuYWwKLSAqIFJlcG9ydHMgdGhhdCBtYWluIGZyYW1lJ3MgdXJp
IGNoYW5nZWQuCi0gKgotICogRW1pdHMgc2lnbmFsOiAidXJpLGNoYW5nZWQiIHdpdGggcG9pbnRl
ciB0byB0aGUgbmV3IHVyaSBzdHJpbmcuCi0gKi8KLXZvaWQgZXdrX3ZpZXdfdXJpX2NoYW5nZWQo
RXZhc19PYmplY3QqIGV3a1ZpZXcpCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihl
d2tWaWV3LCBzbWFydERhdGEpOwotICAgIGNvbnN0IGNoYXIqIHVyaSA9IGV3a19mcmFtZV91cmlf
Z2V0KHNtYXJ0RGF0YS0+bWFpbl9mcmFtZSk7Ci0gICAgREJHKCJld2tWaWV3PSVwLCB1cmk9JXMi
LCBld2tWaWV3LCB1cmkgPyB1cmkgOiAiKG51bGwpIik7Ci0gICAgZXZhc19vYmplY3Rfc21hcnRf
Y2FsbGJhY2tfY2FsbChld2tWaWV3LCAidXJpLGNoYW5nZWQiLCAodm9pZCopdXJpKTsKLX0KLQot
LyoqCi0gKiBAaW50ZXJuYWwKLSAqIFJlcG9ydHMgdGhhdCBhIERPTSBkb2N1bWVudCBvYmplY3Qg
aGFzIGZpbmlzaGVkIGxvYWRpbmcgZm9yIEBwIGZyYW1lLgotICoKLSAqIEBwYXJhbSBld2tWaWV3
IFZpZXcgd2hpY2ggY29udGFpbnMgdGhlIGZyYW1lLgotICogQHBhcmFtIGZyYW1lIFRoZSBmcmFt
ZSB3aG9zZSBsb2FkIGhhcyB0cmlnZ2VyZWQgdGhlIGV2ZW50LgotICoKLSAqIEVtaXRzIHNpZ25h
bDogImxvYWQsZG9jdW1lbnQsZmluaXNoZWQiIHdpdGggQHAgZnJhbWUgYXMgdGhlIHBhcmFtZXRl
ci4KLSAqLwotdm9pZCBld2tfdmlld19sb2FkX2RvY3VtZW50X2ZpbmlzaGVkKEV2YXNfT2JqZWN0
KiBld2tWaWV3LCBFdmFzX09iamVjdCogZnJhbWUpCi17Ci0gICAgZXZhc19vYmplY3Rfc21hcnRf
Y2FsbGJhY2tfY2FsbChld2tWaWV3LCAibG9hZCxkb2N1bWVudCxmaW5pc2hlZCIsIGZyYW1lKTsK
LX0KLQotLyoqCi0gKiBAaW50ZXJuYWwKLSAqIFJlcG9ydHMgdGhlIHZpZXcgc3RhcnRlZCBsb2Fk
aW5nIHNvbWV0aGluZy4KLSAqCi0gKiBAcGFyYW0gZXdrVmlldyBWaWV3LgotICogQHBhcmFtIGV3
a0ZyYW1lIEZyYW1lIGJlaW5nIGxvYWRlZC4KLSAqCi0gKiBFbWl0cyBzaWduYWw6ICJsb2FkLHN0
YXJ0ZWQiIHdpdGggbm8gcGFyYW1ldGVycy4KLSAqLwotdm9pZCBld2tfdmlld19sb2FkX3N0YXJ0
ZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV2YXNfT2JqZWN0KiBld2tGcmFtZSkKLXsKLSAgICBE
QkcoImV3a1ZpZXc9JXAsIGV3a0ZyYW1lPSVwIiwgZXdrVmlldywgZXdrRnJhbWUpOwotICAgIGV2
YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdrVmlldywgImxvYWQsc3RhcnRlZCIsIGV3
a0ZyYW1lKTsKLX0KLQotLyoqCi0gKiBSZXBvcnRzIHRoZSBmcmFtZSBzdGFydGVkIGxvYWRpbmcg
c29tZXRoaW5nLgotICoKLSAqIEBwYXJhbSBld2tWaWV3IFZpZXcuCi0gKgotICogRW1pdHMgc2ln
bmFsOiAibG9hZCxzdGFydGVkIiBvbiBtYWluIGZyYW1lIHdpdGggbm8gcGFyYW1ldGVycy4KLSAq
Lwotdm9pZCBld2tfdmlld19mcmFtZV9tYWluX2xvYWRfc3RhcnRlZChFdmFzX09iamVjdCogZXdr
VmlldykKLXsKLSAgICBEQkcoImV3a1ZpZXc9JXAiLCBld2tWaWV3KTsKLSAgICBFdmFzX09iamVj
dCogZnJhbWUgPSBld2tfdmlld19mcmFtZV9tYWluX2dldChld2tWaWV3KTsKLSAgICBldmFzX29i
amVjdF9zbWFydF9jYWxsYmFja19jYWxsKGZyYW1lLCAibG9hZCxzdGFydGVkIiwgMCk7Ci19Ci0K
LS8qKgotICogQGludGVybmFsCi0gKiBSZXBvcnRzIHRoZSBtYWluIGZyYW1lIHN0YXJ0ZWQgcHJv
dmlzaW9uYWwgbG9hZC4KLSAqCi0gKiBAcGFyYW0gZXdrVmlldyBWaWV3LgotICoKLSAqIEVtaXRz
IHNpZ25hbDogImxvYWQscHJvdmlzaW9uYWwiIG9uIFZpZXcgd2l0aCBubyBwYXJhbWV0ZXJzLgot
ICovCi12b2lkIGV3a192aWV3X2xvYWRfcHJvdmlzaW9uYWwoRXZhc19PYmplY3QqIGV3a1ZpZXcp
Ci17Ci0gICAgREJHKCJld2tWaWV3PSVwIiwgZXdrVmlldyk7Ci0gICAgZXZhc19vYmplY3Rfc21h
cnRfY2FsbGJhY2tfY2FsbChld2tWaWV3LCAibG9hZCxwcm92aXNpb25hbCIsIDApOwotfQotCi0v
KioKLSAqIEBpbnRlcm5hbAotICogUmVwb3J0cyB0aGUgbWFpbiBmcmFtZSBwcm92aXNpb25hbCBs
b2FkIGZhaWxlZC4KLSAqCi0gKiBAcGFyYW0gZXdrVmlldyBWaWV3LgotICogQHBhcmFtIGVycm9y
IExvYWQgZXJyb3IuCi0gKgotICogRW1pdHMgc2lnbmFsOiAibG9hZCxwcm92aXNpb25hbCIgb24g
VmlldyB3aXRoIHBvaW50ZXIgdG8gRXdrX0ZyYW1lX0xvYWRfRXJyb3IuCi0gKi8KLXZvaWQgZXdr
X3ZpZXdfbG9hZF9wcm92aXNpb25hbF9mYWlsZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0
IEV3a19GcmFtZV9Mb2FkX0Vycm9yKiBlcnJvcikKLXsKLSAgICBEQkcoImV3a1ZpZXc9JXAsIGVy
cm9yPSVwIiwgZXdrVmlldywgZXJyb3IpOwotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNr
X2NhbGwoZXdrVmlldywgImxvYWQscHJvdmlzaW9uYWwsZmFpbGVkIiwgY29uc3RfY2FzdDxFd2tf
RnJhbWVfTG9hZF9FcnJvcio+KGVycm9yKSk7Ci19Ci0KLS8qKgotICogQGludGVybmFsCi0gKiBS
ZXBvcnRzIHZpZXcgY2FuIGJlIHNob3duIGFmdGVyIGEgbmV3IHdpbmRvdyBpcyBjcmVhdGVkLgot
ICoKLSAqIEBwYXJhbSBld2tWaWV3IEZyYW1lLgotICoKLSAqIEVtaXRzIHNpZ25hbDogImxvYWQs
bmV3d2luZG93LHNob3ciIG9uIHZpZXcgd2l0aCBubyBwYXJhbWV0ZXJzLgotICovCi12b2lkIGV3
a192aWV3X2xvYWRfc2hvdyhFdmFzX09iamVjdCogZXdrVmlldykKLXsKLSAgICBEQkcoImV3a1Zp
ZXc9JXAiLCBld2tWaWV3KTsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKGV3
a1ZpZXcsICJsb2FkLG5ld3dpbmRvdyxzaG93IiwgMCk7Ci19Ci0KLS8qKgotICogQGludGVybmFs
Ci0gKiBSZXBvcnRzIGFuIG9ubG9hZCBldmVudCBmb3IgQHAgZnJhbWUuCi0gKgotICogQHBhcmFt
IGV3a1ZpZXcgVmlldyB3aGljaCBjb250YWlucyB0aGUgZnJhbWUuCi0gKiBAcGFyYW0gZnJhbWUg
VGhlIGZyYW1lIHdob3NlIG9ubG9hZCBldmVudCB3YXMgcmVjZWl2ZWQuCi0gKgotICogRW1pdHMg
c2lnbmFsOiAib25sb2FkLGV2ZW50IiB3aXRoIEBwIGZyYW1lIGFzIHRoZSBwYXJhbWV0ZXIuCi0g
Ki8KLXZvaWQgZXdrX3ZpZXdfb25sb2FkX2V2ZW50KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFdmFz
X09iamVjdCogZnJhbWUpCi17Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChl
d2tWaWV3LCAib25sb2FkLGV2ZW50IiwgZnJhbWUpOwotfQotCi0vKioKLSAqIEBpbnRlcm5hbAot
ICogUmVwb3J0cyB0aGUgbWFpbiBmcmFtZSByZWNlaXZlZCBhbiBpY29uLgotICoKLSAqIEBwYXJh
bSBld2tWaWV3IFZpZXcuCi0gKgotICogRW1pdHMgc2lnbmFsOiAiaWNvbixyZWNlaXZlZCIgd2l0
aCBubyBwYXJhbWV0ZXJzLgotICovCi12b2lkIGV3a192aWV3X2ZyYW1lX21haW5faWNvbl9yZWNl
aXZlZChFdmFzX09iamVjdCogZXdrVmlldykKLXsKLSAgICBEQkcoImV3a1ZpZXc9JXAiLCBld2tW
aWV3KTsKLSAgICBFdmFzX09iamVjdCogZnJhbWUgPSBld2tfdmlld19mcmFtZV9tYWluX2dldChl
d2tWaWV3KTsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKGZyYW1lLCAiaWNv
bixyZWNlaXZlZCIsIDApOwotfQotCi0vKioKLSAqIEBpbnRlcm5hbAotICogUmVwb3J0cyBsb2Fk
IGZpbmlzaGVkLCBvcHRpb25hbGx5IHdpdGggZXJyb3IgaW5mb3JtYXRpb24uCi0gKgotICogRW1p
dHMgc2lnbmFsOiAibG9hZCxmaW5pc2hlZCIgd2l0aCBwb2ludGVyIHRvICNFd2tfRnJhbWVfTG9h
ZF9FcnJvcgotICogaWYgYW55IGVycm9yLCBvciBAYyAwIGlmIHN1Y2Nlc3NmdWwgbG9hZC4KLSAq
Ci0gKiBAbm90ZSB0aGVyZSBzaG91bGQgbm90IGJlIGFueSBlcnJvciBzdHVmZiBoZXJlLCBidXQg
dHJ5aW5nIHRvIGJlCi0gKiAgICAgICBjb21wYXRpYmxlIHdpdGggcHJldmlvdXMgV2ViS2l0Lgot
ICovCi12b2lkIGV3a192aWV3X2xvYWRfZmluaXNoZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNv
bnN0IEV3a19GcmFtZV9Mb2FkX0Vycm9yKiBlcnJvcikKLXsKLSAgICBEQkcoImV3a1ZpZXc9JXAs
IGVycm9yPSVwIiwgZXdrVmlldywgZXJyb3IpOwotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxi
YWNrX2NhbGwoZXdrVmlldywgImxvYWQsZmluaXNoZWQiLCAodm9pZCopZXJyb3IpOwotfQotCi0v
KioKLSAqIEBpbnRlcm5hbAotICogUmVwb3J0cyBsb2FkIGZhaWxlZCB3aXRoIGVycm9yIGluZm9y
bWF0aW9uLgotICoKLSAqIEVtaXRzIHNpZ25hbDogImxvYWQsZXJyb3IiIHdpdGggcG9pbnRlciB0
byBFd2tfRnJhbWVfTG9hZF9FcnJvci4KLSAqLwotdm9pZCBld2tfdmlld19sb2FkX2Vycm9yKEV2
YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBFd2tfRnJhbWVfTG9hZF9FcnJvciogZXJyb3IpCi17
Ci0gICAgREJHKCJld2tWaWV3PSVwLCBlcnJvcj0lcCIsIGV3a1ZpZXcsIGVycm9yKTsKLSAgICBl
dmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKGV3a1ZpZXcsICJsb2FkLGVycm9yIiwgKHZv
aWQqKWVycm9yKTsKLX0KLQotLyoqCi0gKiBAaW50ZXJuYWwKLSAqIFJlcG9ydHMgbG9hZCBwcm9n
cmVzcyBjaGFuZ2VkLgotICoKLSAqIEVtaXRzIHNpZ25hbDogImxvYWQscHJvZ3Jlc3MiIHdpdGgg
cG9pbnRlciB0byBhIGRvdWJsZSBmcm9tIDAuMCB0byAxLjAuCi0gKi8KLXZvaWQgZXdrX3ZpZXdf
bG9hZF9wcm9ncmVzc19jaGFuZ2VkKEV2YXNfT2JqZWN0KiBld2tWaWV3KQotewotICAgIEVXS19W
SUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhKTsKLSAgICBFV0tfVklFV19Q
UklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2KTsKLQotICAgIC8vIEV2YXNfQ29vcmQg
d2lkdGgsIGhlaWdodDsKLSAgICBkb3VibGUgcHJvZ3Jlc3MgPSBwcml2LT5wYWdlLT5wcm9ncmVz
cygpLmVzdGltYXRlZFByb2dyZXNzKCk7Ci0KLSAgICBEQkcoImV3a1ZpZXc9JXAgKHA9JTAuM2Yp
IiwgZXdrVmlldywgcHJvZ3Jlc3MpOwotCi0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tf
Y2FsbChld2tWaWV3LCAibG9hZCxwcm9ncmVzcyIsICZwcm9ncmVzcyk7Ci19Ci0KLS8qKgotICog
QGludGVybmFsCi0gKiBSZXBvcnRzIHZpZXcgQHBhcmFtIGV3a1ZpZXcgc2hvdWxkIGJlIHJlc3Rv
cmVkIHRvIGRlZmF1bHQgY29uZGl0aW9ucwotICoKLSAqIEBwYXJhbSBld2tWaWV3IFZpZXcuCi0g
KiBAcGFyYW0gZnJhbWUgRnJhbWUgdGhhdCBvcmlnaW5hdGVkIHJlc3RvcmUuCi0gKgotICogRW1p
dHMgc2lnbmFsOiAicmVzdG9yZSIgd2l0aCBmcmFtZS4KLSAqLwotdm9pZCBld2tfdmlld19yZXN0
b3JlX3N0YXRlKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFdmFzX09iamVjdCogZnJhbWUpCi17Ci0g
ICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChld2tWaWV3LCAicmVzdG9yZSIsIGZy
YW1lKTsKLX0KLQotLyoqCi0gKiBAaW50ZXJuYWwKLSAqIERlbGVnYXRlcyB0byBicm93c2VyIHRo
ZSBjcmVhdGlvbiBvZiBhIG5ldyB3aW5kb3cuIElmIGl0IGlzIG5vdCBpbXBsZW1lbnRlZCwKLSAq
IGN1cnJlbnQgdmlldyBpcyByZXR1cm5lZCwgc28gbmF2aWdhdGlvbiBtaWdodCBjb250aW51ZSBp
biBzYW1lIHdpbmRvdy4gSWYKLSAqIGJyb3dzZXIgc3VwcG9ydHMgdGhlIGNyZWF0aW9uIG9mIG5l
dyB3aW5kb3dzLCBhIG5ldyBFd2tfV2luZG93X0ZlYXR1cmVzIGlzCi0gKiBjcmVhdGVkIGFuZCBw
YXNzZWQgdG8gYnJvd3Nlci4gSWYgaXQgaW50ZW5kcyB0byBrZWVwIHRoZSByZXF1ZXN0IGZvciBv
cGVuaW5nCi0gKiB0aGUgd2luZG93IGxhdGVyIGl0IG11c3QgaW5jcmVtZW50cyB0aGUgRXdrX1dp
bndkb3dfRmVhdHVyZXMgcmVmIGNvdW50IGJ5Ci0gKiBjYWxsaW5nIGV3a193aW5kb3dfZmVhdHVy
ZXNfcmVmKHdpbmRvd19mZWF0dXJlcykuIE90aGVyd2lzZSB0aGlzIHN0cnVjdCB3aWxsCi0gKiBi
ZSBmcmVlZCBhZnRlciByZXR1cm5pbmcgdG8gdGhpcyBmdW5jdGlvbi4KLSAqCi0gKiBAcGFyYW0g
ZXdrVmlldyBDdXJyZW50IHZpZXcuCi0gKiBAcGFyYW0gamF2YXNjcmlwdCBAYyB0cnVlIGlmIHRo
ZSBuZXcgd2luZG93IGlzIG9yaWdpbmF0ZWQgZnJvbSBqYXZhc2NyaXB0LAotICogQGMgZmFsc2Ug
b3RoZXJ3aXNlCi0gKiBAcGFyYW0gd2luZG93X2ZlYXR1cmVzIEZlYXR1cmVzIG9mIHRoZSBuZXcg
d2luZG93IGJlaW5nIGNyZWF0ZWQuIElmIGl0J3MgQGMKLSAqIDAsIGl0IHdpbGwgYmUgY3JlYXRl
ZCBhIHdpbmRvdyB3aXRoIGRlZmF1bHQgZmVhdHVyZXMuCi0gKgotICogQHJldHVybiBOZXcgdmll
dywgaW4gY2FzZSBzbWFydCBjbGFzcyBpbXBsZW1lbnRzIHRoZSBjcmVhdGlvbiBvZiBuZXcgd2lu
ZG93czsKLSAqIGVsc2UsIGN1cnJlbnQgdmlldyBAcGFyYW0gZXdrVmlldyBvciBAYyAwIG9uIGZh
aWx1cmUuCi0gKgotICogQHNlZSBld2tfd2luZG93X2ZlYXR1cmVzX3JlZigpLgotICovCi1FdmFz
X09iamVjdCogZXdrX3ZpZXdfd2luZG93X2NyZWF0ZShFdmFzX09iamVjdCogZXdrVmlldywgYm9v
bCBqYXZhc2NyaXB0LCBjb25zdCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyogY29yZUZlYXR1cmVz
KQotewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCAw
KTsKLQotICAgIGlmICghc21hcnREYXRhLT5hcGktPndpbmRvd19jcmVhdGUpCi0gICAgICAgIHJl
dHVybiBld2tWaWV3OwotCi0gICAgRXdrX1dpbmRvd19GZWF0dXJlcyogd2luZG93RmVhdHVyZXMg
PSBld2tfd2luZG93X2ZlYXR1cmVzX25ld19mcm9tX2NvcmUoY29yZUZlYXR1cmVzKTsKLSAgICBp
ZiAoIXdpbmRvd0ZlYXR1cmVzKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIEV2YXNfT2JqZWN0
KiB2aWV3ID0gc21hcnREYXRhLT5hcGktPndpbmRvd19jcmVhdGUoc21hcnREYXRhLCBqYXZhc2Ny
aXB0LCB3aW5kb3dGZWF0dXJlcyk7Ci0gICAgZXdrX3dpbmRvd19mZWF0dXJlc191bnJlZih3aW5k
b3dGZWF0dXJlcyk7Ci0KLSAgICByZXR1cm4gdmlldzsKLX0KLQotLyoqCi0gKiBAaW50ZXJuYWwK
LSAqIFJlcG9ydHMgYSB3aW5kb3cgc2hvdWxkIGJlIGNsb3NlZC4gSXQncyBjbGllbnQgcmVzcG9u
c2liaWxpdHkgdG8gZGVjaWRlIGlmCi0gKiB0aGUgd2luZG93IHNob3VsZCBpbiBmYWN0IGJlIGNs
b3NlZC4gU28sIGlmIG9ubHkgd2luZG93cyBjcmVhdGVkIGJ5IGphdmFzY3JpcHQKLSAqIGFyZSBh
bGxvd2VkIHRvIGJlIGNsb3NlZCBieSB0aGlzIGNhbGwsIGJyb3dzZXIgbmVlZHMgdG8gc2F2ZSB0
aGUgamF2YXNjcmlwdAotICogZmxhZyB3aGVuIHRoZSB3aW5kb3cgaXMgY3JlYXRlZC4gU2luY2Ug
YSB3aW5kb3cgY2FuIGNsb3NlIGl0c2VsZiAoZm9yIGV4YW1wbGUKLSAqIHdpdGggYSAnc2VsZi5j
bG9zZSgpJyBpbiBKYXZhc2NyaXB0KSBicm93c2VyIG11c3QgcG9zdHBvbmUgdGhlIGRlbGV0aW9u
IHRvIGFuCi0gKiBpZGxlci4KLSAqCi0gKiBAcGFyYW0gZXdrVmlldyBWaWV3IHRvIGJlIGNsb3Nl
ZC4KLSAqLwotdm9pZCBld2tfdmlld193aW5kb3dfY2xvc2UoRXZhc19PYmplY3QqIGV3a1ZpZXcp
Ci17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEpOwot
Ci0gICAgZXdrX3ZpZXdfc3RvcChld2tWaWV3KTsKLSAgICBpZiAoIXNtYXJ0RGF0YS0+YXBpLT53
aW5kb3dfY2xvc2UpCi0gICAgICAgIHJldHVybjsKLSAgICBzbWFydERhdGEtPmFwaS0+d2luZG93
X2Nsb3NlKHNtYXJ0RGF0YSk7Ci19Ci0KLS8qKgotICogQGludGVybmFsCi0gKiBSZXBvcnRzIG1v
dXNlIGhhcyBtb3ZlZCBvdmVyIGEgbGluay4KLSAqCi0gKiBFbWl0cyBzaWduYWw6ICJsaW5rLGhv
dmVyLGluIgotICovCi12b2lkIGV3a192aWV3X21vdXNlX2xpbmtfaG92ZXJfaW4oRXZhc19PYmpl
Y3QqIGV3a1ZpZXcsIHZvaWQqIGRhdGEpCi17Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJh
Y2tfY2FsbChld2tWaWV3LCAibGluayxob3ZlcixpbiIsIGRhdGEpOwotfQotCi0vKioKLSAqIEBp
bnRlcm5hbAotICogUmVwb3J0cyBtb3VzZSBpcyBub3Qgb3ZlciBhIGxpbmsgYW55bW9yZS4KLSAq
Ci0gKiBFbWl0cyBzaWduYWw6ICJsaW5rLGhvdmVyLG91dCIKLSAqLwotdm9pZCBld2tfdmlld19t
b3VzZV9saW5rX2hvdmVyX291dChFdmFzX09iamVjdCogZXdrVmlldykKLXsKLSAgICBldmFzX29i
amVjdF9zbWFydF9jYWxsYmFja19jYWxsKGV3a1ZpZXcsICJsaW5rLGhvdmVyLG91dCIsIDApOwot
fQotCi0vKioKLSAqIEBpbnRlcm5hbAotICogU2V0IHRvb2xiYXIgdmlzaWJsZS4KLSAqCi0gKiBF
bWl0cyBzaWduYWw6ICJ0b29sYmFycyx2aXNpYmxlLHNldCIgd2l0aCBhIHBvaW50ZXIgdG8gYSBi
b29sZWFuLgotICovCi12b2lkIGV3a192aWV3X3Rvb2xiYXJzX3Zpc2libGVfc2V0KEV2YXNfT2Jq
ZWN0KiBld2tWaWV3LCBib29sIHZpc2libGUpCi17Ci0gICAgREJHKCJld2tWaWV3PSVwICh2aXNp
YmxlPSVkKSIsIGV3a1ZpZXcsICEhdmlzaWJsZSk7Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2Fs
bGJhY2tfY2FsbChld2tWaWV3LCAidG9vbGJhcnMsdmlzaWJsZSxzZXQiLCAmdmlzaWJsZSk7Ci19
Ci0KLS8qKgotICogQGludGVybmFsCi0gKiBHZXQgdG9vbGJhciB2aXNpYmlsaXR5LgotICoKLSAq
IEBwYXJhbSBld2tWaWV3IFZpZXcuCi0gKiBAcGFyYW0gdmlzaWJsZSBib29sZWFuIHBvaW50ZXIg
aW4gd2hpY2ggdG8gc2F2ZSB0aGUgcmVzdWx0LiBJdCBkZWZhdWx0cwotICogdG8gQGMgRkFMU0Us
IGkuZS4gaWYgYnJvd3NlciBkb2VzIG5vIGxpc3RlbiB0byBlbWl0dGVkIHNpZ25hbCwgaXQgbWVh
bnMKLSAqIHRoZXJlIGFyZSBubyB0b29sYmFycyBhbmQgdGhlcmVmb3JlIHRoZXkgYXJlIG5vdCB2
aXNpYmxlLgotICoKLSAqIEVtaXRzIHNpZ25hbDogInRvb2xiYXJzLHZpc2libGUsZ2V0IiB3aXRo
IGEgcG9pbnRlciB0byBhIGJvb2xlYW4uCi0gKi8KLXZvaWQgZXdrX3ZpZXdfdG9vbGJhcnNfdmlz
aWJsZV9nZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGJvb2wqIHZpc2libGUpCi17Ci0gICAgREJH
KCIlcywgZXdrVmlldz0lcCIsIF9fZnVuY19fLCBld2tWaWV3KTsKLSAgICAqdmlzaWJsZSA9IGZh
bHNlOwotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdrVmlldywgInRvb2xi
YXJzLHZpc2libGUsZ2V0IiwgdmlzaWJsZSk7Ci19Ci0KLS8qKgotICogQGludGVybmFsCi0gKiBT
ZXQgc3RhdHVzYmFyIHZpc2libGUuCi0gKgotICogQHBhcmFtIGV3a1ZpZXcgVmlldy4KLSAqIEBw
YXJhbSB2aXNpYmxlIEBjIFRSVUUgaWYgc3RhdHVzYmFyIGFyZSB2aXNpYmxlLCBAYyBGQUxTRSBv
dGhlcndpc2UuCi0gKgotICogRW1pdHMgc2lnbmFsOiAic3RhdHVzYmFyLHZpc2libGUsc2V0IiB3
aXRoIGEgcG9pbnRlciB0byBhIGJvb2xlYW4uCi0gKi8KLXZvaWQgZXdrX3ZpZXdfc3RhdHVzYmFy
X3Zpc2libGVfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBib29sICB2aXNpYmxlKQotewotICAg
IERCRygiZXdrVmlldz0lcCAodmlzaWJsZT0lZCkiLCBld2tWaWV3LCAhIXZpc2libGUpOwotICAg
IGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdrVmlldywgInN0YXR1c2Jhcix2aXNp
YmxlLHNldCIsICZ2aXNpYmxlKTsKLX0KLQotLyoqCi0gKiBAaW50ZXJuYWwKLSAqIEdldCBzdGF0
dXNiYXIgdmlzaWJpbGl0eS4KLSAqCi0gKiBAcGFyYW0gZXdrVmlldyBWaWV3LgotICogQHBhcmFt
IHZpc2libGUgYm9vbGVhbiBwb2ludGVyIGluIHdoaWNoIHRvIHNhdmUgdGhlIHJlc3VsdC4gSXQg
ZGVmYXVsdHMKLSAqIHRvIEBjIEZBTFNFLCBpLmUuIGlmIGJyb3dzZXIgZG9lcyBubyBsaXN0ZW4g
dG8gZW1pdHRlZCBzaWduYWwsIGl0IG1lYW5zCi0gKiB0aGVyZSBpcyBubyBzdGF0dXNiYXIgYW5k
IHRoZXJlZm9yZSBpdCBpcyBub3QgdmlzaWJsZS4KLSAqCi0gKiBFbWl0cyBzaWduYWw6ICJzdGF0
dXNiYXIsdmlzaWJsZSxnZXQiIHdpdGggYSBwb2ludGVyIHRvIGEgYm9vbGVhbi4KLSAqLwotdm9p
ZCBld2tfdmlld19zdGF0dXNiYXJfdmlzaWJsZV9nZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGJv
b2wqIHZpc2libGUpCi17Ci0gICAgREJHKCIlcywgZXdrVmlldz0lcCIsIF9fZnVuY19fLCBld2tW
aWV3KTsKLSAgICAqdmlzaWJsZSA9IGZhbHNlOwotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxi
YWNrX2NhbGwoZXdrVmlldywgInN0YXR1c2Jhcix2aXNpYmxlLGdldCIsIHZpc2libGUpOwotfQot
Ci0vKioKLSAqIEBpbnRlcm5hbAotICogU2V0IHRleHQgb2Ygc3RhdHVzYmFyCi0gKgotICogQHBh
cmFtIGV3a1ZpZXcgVmlldy4KLSAqIEBwYXJhbSB0ZXh0IE5ldyB0ZXh0IHRvIHB1dCBvbiBzdGF0
dXNiYXIuCi0gKgotICogRW1pdHMgc2lnbmFsOiAic3RhdHVzYmFyLHRleHQsc2V0IiB3aXRoIGEg
c3RyaW5nLgotICovCi12b2lkIGV3a192aWV3X3N0YXR1c2Jhcl90ZXh0X3NldChFdmFzX09iamVj
dCogZXdrVmlldywgY29uc3QgY2hhciogdGV4dCkKLXsKLSAgICBEQkcoImV3a1ZpZXc9JXAgKHRl
eHQ9JXMpIiwgZXdrVmlldywgdGV4dCk7Ci0gICAgSU5GTygic3RhdHVzIGJhciB0ZXh0IHNldDog
JXMiLCB0ZXh0KTsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKGV3a1ZpZXcs
ICJzdGF0dXNiYXIsdGV4dCxzZXQiLCAodm9pZCopdGV4dCk7Ci19Ci0KLS8qKgotICogQGludGVy
bmFsCi0gKiBTZXQgc2Nyb2xsYmFycyB2aXNpYmxlLgotICoKLSAqIEBwYXJhbSBld2tWaWV3IFZp
ZXcuCi0gKiBAcGFyYW0gdmlzaWJsZSBAYyBUUlVFIGlmIHNjcm9sbGJhcnMgYXJlIHZpc2libGUs
IEBjIEZBTFNFIG90aGVyd2lzZS4KLSAqCi0gKiBFbWl0cyBzaWduYWw6ICJzY3JvbGxiYXJzLHZp
c2libGUsc2V0IiB3aXRoIGEgcG9pbnRlciB0byBhIGJvb2xlYW4uCi0gKi8KLXZvaWQgZXdrX3Zp
ZXdfc2Nyb2xsYmFyc192aXNpYmxlX3NldChFdmFzX09iamVjdCogZXdrVmlldywgYm9vbCB2aXNp
YmxlKQotewotICAgIERCRygiZXdrVmlldz0lcCAodmlzaWJsZT0lZCkiLCBld2tWaWV3LCAhIXZp
c2libGUpOwotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdrVmlldywgInNj
cm9sbGJhcnMsdmlzaWJsZSxzZXQiLCAmdmlzaWJsZSk7Ci19Ci0KLS8qKgotICogQGludGVybmFs
Ci0gKiBHZXQgc2Nyb2xsYmFycyB2aXNpYmlsaXR5LgotICoKLSAqIEBwYXJhbSBld2tWaWV3IFZp
ZXcuCi0gKiBAcGFyYW0gdmlzaWJsZSBib29sZWFuIHBvaW50ZXIgaW4gd2hpY2ggdG8gc2F2ZSB0
aGUgcmVzdWx0LiBJdCBkZWZhdWx0cwotICogdG8gQGMgRkFMU0UsIGkuZS4gaWYgYnJvd3NlciBk
b2VzIG5vIGxpc3RlbiB0byBlbWl0dGVkIHNpZ25hbCwgaXQgbWVhbnMKLSAqIHRoZXJlIGFyZSBu
byBzY3JvbGxiYXJzIGFuZCB0aGVyZWZvcmUgdGhleSBhcmUgbm90IHZpc2libGUuCi0gKgotICog
RW1pdHMgc2lnbmFsOiAic2Nyb2xsYmFycyx2aXNpYmxlLGdldCIgd2l0aCBhIHBvaW50ZXIgdG8g
YSBib29sZWFuLgotICovCi12b2lkIGV3a192aWV3X3Njcm9sbGJhcnNfdmlzaWJsZV9nZXQoRXZh
c19PYmplY3QqIGV3a1ZpZXcsIGJvb2wqIHZpc2libGUpCi17Ci0gICAgREJHKCIlcywgZXdrVmll
dz0lcCIsIF9fZnVuY19fLCBld2tWaWV3KTsKLSAgICAqdmlzaWJsZSA9IGZhbHNlOwotICAgIGV2
YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdrVmlldywgInNjcm9sbGJhcnMsdmlzaWJs
ZSxnZXQiLCB2aXNpYmxlKTsKLX0KLQotLyoqCi0gKiBAaW50ZXJuYWwKLSAqIFNldCBtZW51YmFy
IHZpc2libGUuCi0gKgotICogQHBhcmFtIGV3a1ZpZXcgVmlldy4KLSAqIEBwYXJhbSB2aXNpYmxl
IEBjIFRSVUUgaWYgbWVudWJhciBpcyB2aXNpYmxlLCBAYyBGQUxTRSBvdGhlcndpc2UuCi0gKgot
ICogRW1pdHMgc2lnbmFsOiAibWVudWJhcix2aXNpYmxlLHNldCIgd2l0aCBhIHBvaW50ZXIgdG8g
YSBib29sZWFuLgotICovCi12b2lkIGV3a192aWV3X21lbnViYXJfdmlzaWJsZV9zZXQoRXZhc19P
YmplY3QqIGV3a1ZpZXcsIGJvb2wgdmlzaWJsZSkKLXsKLSAgICBEQkcoImV3a1ZpZXc9JXAgKHZp
c2libGU9JWQpIiwgZXdrVmlldywgISF2aXNpYmxlKTsKLSAgICBldmFzX29iamVjdF9zbWFydF9j
YWxsYmFja19jYWxsKGV3a1ZpZXcsICJtZW51YmFyLHZpc2libGUsc2V0IiwgJnZpc2libGUpOwot
fQotCi0vKioKLSAqIEBpbnRlcm5hbAotICogR2V0IG1lbnViYXIgdmlzaWJpbGl0eS4KLSAqCi0g
KiBAcGFyYW0gZXdrVmlldyBWaWV3LgotICogQHBhcmFtIHZpc2libGUgYm9vbGVhbiBwb2ludGVy
IGluIHdoaWNoIHRvIHNhdmUgdGhlIHJlc3VsdC4gSXQgZGVmYXVsdHMKLSAqIHRvIEBjIEZBTFNF
LCBpLmUuIGlmIGJyb3dzZXIgZG9lcyBubyBsaXN0ZW4gdG8gZW1pdHRlZCBzaWduYWwsIGl0IG1l
YW5zCi0gKiB0aGVyZSBpcyBubyBtZW51YmFyIGFuZCB0aGVyZWZvcmUgaXQgaXMgbm90IHZpc2li
bGUuCi0gKgotICogRW1pdHMgc2lnbmFsOiAibWVudWJhcix2aXNpYmxlLGdldCIgd2l0aCBhIHBv
aW50ZXIgdG8gYSBib29sZWFuLgotICovCi12b2lkIGV3a192aWV3X21lbnViYXJfdmlzaWJsZV9n
ZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGJvb2wqIHZpc2libGUpCi17Ci0gICAgREJHKCIlcywg
ZXdrVmlldz0lcCIsIF9fZnVuY19fLCBld2tWaWV3KTsKLSAgICAqdmlzaWJsZSA9IGZhbHNlOwot
ICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdrVmlldywgIm1lbnViYXIsdmlz
aWJsZSxnZXQiLCB2aXNpYmxlKTsKLX0KLQotLyoqCi0gKiBAaW50ZXJuYWwKLSAqLwotdm9pZCBl
d2tfdmlld190b29sdGlwX3RleHRfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBjaGFy
KiB0ZXh0KQotewotICAgIERCRygiZXdrVmlldz0lcCB0ZXh0PSVzIiwgZXdrVmlldywgdGV4dCk7
Ci0gICAgaWYgKHRleHQgJiYgKnRleHQpCi0gICAgICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxi
YWNrX2NhbGwoZXdrVmlldywgInRvb2x0aXAsdGV4dCxzZXQiLCAodm9pZCopdGV4dCk7Ci0gICAg
ZWxzZQotICAgICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKGV3a1ZpZXcsICJ0
b29sdGlwLHRleHQsdW5zZXQiLCAwKTsKLX0KLQotLyoqCi0gKiBAaW50ZXJuYWwKLSAqCi0gKiBA
cGFyYW0gZXdrVmlldyBWaWV3LgotICogQHBhcmFtIG1lc3NhZ2UgU3RyaW5nIHRvIHNob3cgb24g
Y29uc29sZS4KLSAqIEBwYXJhbSBsaW5lTnVtYmVyIExpbmUgbnVtYmVyLgotICogQHNvdXJjZUlE
IFNvdXJjZSBpZC4KLSAqCi0gKi8KLXZvaWQgZXdrX3ZpZXdfYWRkX2NvbnNvbGVfbWVzc2FnZShF
dmFzX09iamVjdCogZXdrVmlldywgY29uc3QgY2hhciogbWVzc2FnZSwgdW5zaWduZWQgaW50IGxp
bmVOdW1iZXIsIGNvbnN0IGNoYXIqIHNvdXJjZUlEKQotewotICAgIERCRygiZXdrVmlldz0lcCBt
ZXNzYWdlPSVzIGxpbmVOdW1iZXI9JXUgc291cmNlSUQ9JXMiLCBld2tWaWV3LCBtZXNzYWdlLCBs
aW5lTnVtYmVyLCBzb3VyY2VJRCk7Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tW
aWV3LCBzbWFydERhdGEpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNtYXJ0RGF0
YS0+YXBpKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzbWFydERhdGEtPmFwaS0+
YWRkX2NvbnNvbGVfbWVzc2FnZSk7Ci0gICAgc21hcnREYXRhLT5hcGktPmFkZF9jb25zb2xlX21l
c3NhZ2Uoc21hcnREYXRhLCBtZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VJRCk7Ci19Ci0KLWJv
b2wgZXdrX3ZpZXdfZm9jdXNfY2FuX2N5Y2xlKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tfRm9j
dXNfRGlyZWN0aW9uIGRpcmVjdGlvbikKLXsKLSAgICBEQkcoImV3a1ZpZXc9JXAgZGlyZWN0aW9u
PSVkIiwgZXdrVmlldywgZGlyZWN0aW9uKTsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJO
KGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVU
VVJOX1ZBTChzbWFydERhdGEtPmFwaSwgZmFsc2UpOwotCi0gICAgaWYgKCFzbWFydERhdGEtPmFw
aS0+Zm9jdXNfY2FuX2N5Y2xlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4g
c21hcnREYXRhLT5hcGktPmZvY3VzX2Nhbl9jeWNsZShzbWFydERhdGEsIGRpcmVjdGlvbik7Ci19
Ci0KLXZvaWQgZXdrX3ZpZXdfcnVuX2phdmFzY3JpcHRfYWxlcnQoRXZhc19PYmplY3QqIGV3a1Zp
ZXcsIEV2YXNfT2JqZWN0KiBmcmFtZSwgY29uc3QgY2hhciogbWVzc2FnZSkKLXsKLSAgICBEQkco
ImV3a1ZpZXc9JXAgZnJhbWU9JXAgbWVzc2FnZT0lcyIsIGV3a1ZpZXcsIGZyYW1lLCBtZXNzYWdl
KTsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSk7Ci0g
ICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc21hcnREYXRhLT5hcGkpOwotCi0gICAgaWYg
KCFzbWFydERhdGEtPmFwaS0+cnVuX2phdmFzY3JpcHRfYWxlcnQpCi0gICAgICAgIHJldHVybjsK
LQotICAgIHNtYXJ0RGF0YS0+YXBpLT5ydW5famF2YXNjcmlwdF9hbGVydChzbWFydERhdGEsIGZy
YW1lLCBtZXNzYWdlKTsKLX0KLQotYm9vbCBld2tfdmlld19ydW5famF2YXNjcmlwdF9jb25maXJt
KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFdmFzX09iamVjdCogZnJhbWUsIGNvbnN0IGNoYXIqIG1l
c3NhZ2UpCi17Ci0gICAgREJHKCJld2tWaWV3PSVwIGZyYW1lPSVwIG1lc3NhZ2U9JXMiLCBld2tW
aWV3LCBmcmFtZSwgbWVzc2FnZSk7Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tW
aWV3LCBzbWFydERhdGEsIGZhbHNlKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9W
QUwoc21hcnREYXRhLT5hcGksIGZhbHNlKTsKLQotICAgIGlmICghc21hcnREYXRhLT5hcGktPnJ1
bl9qYXZhc2NyaXB0X2NvbmZpcm0pCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVy
biBzbWFydERhdGEtPmFwaS0+cnVuX2phdmFzY3JpcHRfY29uZmlybShzbWFydERhdGEsIGZyYW1l
LCBtZXNzYWdlKTsKLX0KLQotYm9vbCBld2tfdmlld19ydW5fYmVmb3JlX3VubG9hZF9jb25maXJt
KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFdmFzX09iamVjdCogZnJhbWUsIGNvbnN0IGNoYXIqIG1l
c3NhZ2UpCi17Ci0gICAgREJHKCJld2tWaWV3PSVwIGZyYW1lPSVwIG1lc3NhZ2U9JXMiLCBld2tW
aWV3LCBmcmFtZSwgbWVzc2FnZSk7Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tW
aWV3LCBzbWFydERhdGEsIGZhbHNlKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9W
QUwoc21hcnREYXRhLT5hcGksIGZhbHNlKTsKLQotICAgIGlmICghc21hcnREYXRhLT5hcGktPnJ1
bl9iZWZvcmVfdW5sb2FkX2NvbmZpcm0pCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJl
dHVybiBzbWFydERhdGEtPmFwaS0+cnVuX2JlZm9yZV91bmxvYWRfY29uZmlybShzbWFydERhdGEs
IGZyYW1lLCBtZXNzYWdlKTsKLX0KLQotYm9vbCBld2tfdmlld19ydW5famF2YXNjcmlwdF9wcm9t
cHQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV2YXNfT2JqZWN0KiBmcmFtZSwgY29uc3QgY2hhciog
bWVzc2FnZSwgY29uc3QgY2hhciogZGVmYXVsdFZhbHVlLCBjb25zdCBjaGFyKiogdmFsdWUpCi17
Ci0gICAgREJHKCJld2tWaWV3PSVwIGZyYW1lPSVwIG1lc3NhZ2U9JXMiLCBld2tWaWV3LCBmcmFt
ZSwgbWVzc2FnZSk7Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFy
dERhdGEsIGZhbHNlKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnRE
YXRhLT5hcGksIGZhbHNlKTsKLQotICAgIGlmICghc21hcnREYXRhLT5hcGktPnJ1bl9qYXZhc2Ny
aXB0X3Byb21wdCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIHNtYXJ0RGF0
YS0+YXBpLT5ydW5famF2YXNjcmlwdF9wcm9tcHQoc21hcnREYXRhLCBmcmFtZSwgbWVzc2FnZSwg
ZGVmYXVsdFZhbHVlLCB2YWx1ZSk7Ci19Ci0KLS8qKgotICogQGludGVybmFsCi0gKiBEZWxlZ2F0
ZXMgdG8gY2xpZW50IHRvIGRlY2lkZSB3aGV0aGVyIGEgc2NyaXB0IG11c3QgYmUgc3RvcHBlZCBi
ZWNhdXNlIGl0J3MKLSAqIHJ1bm5pbmcgZm9yIHRvbyBsb25nLiBJZiBjbGllbnQgZG9lcyBub3Qg
aW1wbGVtZW50IGl0LCBpdCBnb2VzIHRvIGRlZmF1bHQKLSAqIGltcGxlbWVudGF0aW9uLCB3aGlj
aCBsb2dzIGFuZCByZXR1cm5zIGZhbHNlLiBDbGllbnQgbWF5IHJlbW92ZSBsb2cgYnkKLSAqIHNl
dHRpbmcgdGhpcyBmdW5jdGlvbiAwLCB3aGljaCB3aWxsIGp1c3QgcmV0dXJuIGZhbHNlLgotICoK
LSAqIEBwYXJhbSBld2tWaWV3IFZpZXcuCi0gKgotICogQHJldHVybiBAYyB0cnVlIGlmIHNjcmlw
dCBzaG91bGQgYmUgc3RvcHBlZDsgQGMgZmFsc2Ugb3RoZXJ3aXNlCi0gKi8KLWJvb2wgZXdrX3Zp
ZXdfc2hvdWxkX2ludGVycnVwdF9qYXZhc2NyaXB0KEV2YXNfT2JqZWN0KiBld2tWaWV3KQotewot
ICAgIERCRygiZXdrVmlldz0lcCIsIGV3a1ZpZXcpOwotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9S
RVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVM
TF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+YXBpLCBmYWxzZSk7Ci0KLSAgICBpZiAoIXNtYXJ0RGF0
YS0+YXBpLT5zaG91bGRfaW50ZXJydXB0X2phdmFzY3JpcHQpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLQotICAgIHJldHVybiBzbWFydERhdGEtPmFwaS0+c2hvdWxkX2ludGVycnVwdF9qYXZhc2Ny
aXB0KHNtYXJ0RGF0YSk7Ci19Ci0KLS8qKgotICogQGludGVybmFsCi0gKiBUaGlzIGlzIGNhbGxl
ZCB3aGVuZXZlciB0aGUgYXBwbGljYXRpb24gaXMgYXNraW5nIHRvIHN0b3JlIGRhdGEgdG8gdGhl
IGNhY2hlIGFuZCB0aGUKLSAqIHF1b3RhIGFsbG9jYXRlZCB0byB0aGF0IGFwcGxpY2F0aW9uIGlz
IGV4Y2VlZGVkLiBCcm93c2VyIG1heSB1c2UgdGhpcyB0byBpbmNyZWFzZSB0aGUKLSAqIHNpemUg
b2YgcXVvdGEgYmVmb3JlIHRoZSBvcmlnaW5hdGluZyBvcGVyYXRpb24gZmFpbHMuCi0gKgotICog
QHBhcmFtIGV3a1ZpZXcgVmlldy4KLSAqIEBwYXJhbSBvcmlnaW4gU2VjdXJpdHkgb3JpZ2luLgot
ICogQHBhcmFtIGRlZmF1bHRPcmlnaW5RdW90YSBEZWZhdWx0IHF1b3RhIGZvciBvcmlnaW4uCi0g
KiBAcGFyYW0gdG90YWxTcGFjZU5lZWRlZCBUaGUgdG90YWwgc3BhY2UgbmVlZGVkIGluIHRoZSBj
YWNoZSBpbiBvcmRlciB0byBmdWxmaWxsCi0gKiBhcHBsaWNhdGlvbidzIHJlcXVpcmVtZW50Lgot
ICovCi1pbnQ2NF90IGV3a192aWV3X2V4Y2VlZGVkX2FwcGxpY2F0aW9uX2NhY2hlX3F1b3RhKEV2
YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tfU2VjdXJpdHlfT3JpZ2luICpvcmlnaW4sIGludDY0X3Qg
ZGVmYXVsdE9yaWdpblF1b3RhLCBpbnQ2NF90IHRvdGFsU3BhY2VOZWVkZWQpCi17Ci0gICAgREJH
KCJld2tWaWV3PSVwIiwgZXdrVmlldyk7Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihl
d2tWaWV3LCBzbWFydERhdGEsIDApOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZB
TChzbWFydERhdGEtPmFwaSwgMCk7Ci0gICAgaWYgKCFzbWFydERhdGEtPmFwaS0+ZXhjZWVkZWRf
YXBwbGljYXRpb25fY2FjaGVfcXVvdGEpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgSU5GTygi
ZGVmYXVsdE9yaWdpblF1b3RhPSUiIFBSSXU2NCAiIHRvdGFsU3BhY2VOZWVkZWQ9JSIgUFJJdTY0
LCBkZWZhdWx0T3JpZ2luUXVvdGEsIHRvdGFsU3BhY2VOZWVkZWQpOwotICAgIHJldHVybiBzbWFy
dERhdGEtPmFwaS0+ZXhjZWVkZWRfYXBwbGljYXRpb25fY2FjaGVfcXVvdGEoc21hcnREYXRhLCBv
cmlnaW4sIGRlZmF1bHRPcmlnaW5RdW90YSwgdG90YWxTcGFjZU5lZWRlZCk7Ci19Ci0KLS8qKgot
ICogQGludGVybmFsCi0gKiBUaGlzIGlzIGNhbGxlZCB3aGVuZXZlciB0aGUgd2ViIHNpdGUgc2hv
d24gaW4gQHBhcmFtIGZyYW1lIGlzIGFza2luZyB0byBzdG9yZSBkYXRhCi0gKiB0byB0aGUgZGF0
YWJhc2UgQHBhcmFtIGRhdGFiYXNlTmFtZSBhbmQgdGhlIHF1b3RhIGFsbG9jYXRlZCB0byB0aGF0
IHdlYiBzaXRlCi0gKiBpcyBleGNlZWRlZC4gQnJvd3NlciBtYXkgdXNlIHRoaXMgdG8gaW5jcmVh
c2UgdGhlIHNpemUgb2YgcXVvdGEgYmVmb3JlIHRoZQotICogb3JpZ2luYXRpbmcgb3BlcmF0aW9u
YSBmYWlscy4KLSAqCi0gKiBAcGFyYW0gZXdrVmlldyBWaWV3LgotICogQHBhcmFtIGZyYW1lIFRo
ZSBmcmFtZSB3aG9zZSB3ZWIgcGFnZSBleGNlZWRlZCBpdHMgZGF0YWJhc2UgcXVvdGEuCi0gKiBA
cGFyYW0gZGF0YWJhc2VOYW1lIERhdGFiYXNlIG5hbWUuCi0gKiBAcGFyYW0gY3VycmVudFNpemUg
Q3VycmVudCBzaXplIG9mIHRoaXMgZGF0YWJhc2UKLSAqIEBwYXJhbSBleHBlY3RlZFNpemUgVGhl
IGV4cGVjdGVkIHNpemUgb2YgdGhpcyBkYXRhYmFzZSBpbiBvcmRlciB0byBmdWxmaWxsCi0gKiBz
aXRlJ3MgcmVxdWlyZW1lbnQuCi0gKi8KLXVpbnQ2NF90IGV3a192aWV3X2V4Y2VlZGVkX2RhdGFi
YXNlX3F1b3RhKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFdmFzX09iamVjdCogZnJhbWUsIGNvbnN0
IGNoYXIqIGRhdGFiYXNlTmFtZSwgdWludDY0X3QgY3VycmVudFNpemUsIHVpbnQ2NF90IGV4cGVj
dGVkU2l6ZSkKLXsKLSAgICBEQkcoImV3a1ZpZXc9JXAiLCBld2tWaWV3KTsKLSAgICBFV0tfVklF
V19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgMCk7Ci0gICAgRUlOQV9TQUZF
VFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+YXBpLCAwKTsKLSAgICBpZiAoIXNtYXJ0
RGF0YS0+YXBpLT5leGNlZWRlZF9kYXRhYmFzZV9xdW90YSkKLSAgICAgICAgcmV0dXJuIDA7Ci0K
LSAgICBJTkZPKCJjdXJyZW50U2l6ZT0lIiBQUkl1NjQgIiBleHBlY3RlZFNpemU9JSIgUFJJdTY0
LCBjdXJyZW50U2l6ZSwgZXhwZWN0ZWRTaXplKTsKLSAgICByZXR1cm4gc21hcnREYXRhLT5hcGkt
PmV4Y2VlZGVkX2RhdGFiYXNlX3F1b3RhKHNtYXJ0RGF0YSwgZnJhbWUsIGRhdGFiYXNlTmFtZSwg
Y3VycmVudFNpemUsIGV4cGVjdGVkU2l6ZSk7Ci19Ci0KLS8qKgotICogQGludGVybmFsCi0gKiBP
cGVuIHBhbmVsIHRvIGNob29zZSBhIGZpbGUuCi0gKgotICogQHBhcmFtIGV3a1ZpZXcgVmlldy4K
LSAqIEBwYXJhbSBmcmFtZSBGcmFtZSBpbiB3aGljaCBvcGVyYXRpb24gaXMgcmVxdWlyZWQuCi0g
KiBAcGFyYW0gYWxsb3dzTXVsdGlwbGVGaWxlcyBAYyB0cnVlIHdoZW4gbW9yZSB0aGFuIG9uZSBm
aWxlIG1heSBiZSBzZWxlY3RlZCwgQGMgZmFsc2Ugb3RoZXJ3aXNlLgotICogQHBhcmFtIGFjY2Vw
dE1JTUVUeXBlcyBMaXN0IG9mIGFjY2VwdGVkIG1pbWUgdHlwZXMuIEl0IGlzIHBhc3NlZCB0byBj
aGlsZCBvYmplY3RzIGFzIGFuIEVpbmFfTGlzdCBvZiBjaGFyIHBvaW50ZXJzIHRoYXQgaXMgZnJl
ZWQgYXV0b21hdGljYWxseS4KLSAqIEBwYXJhbSBzZWxlY3RlZEZpbGVuYW1lcyBMaXN0IG9mIGZp
bGVzIHNlbGVjdGVkLgotICoKLSAqIEByZXR1cm4gQGZhbHNlIGlmIHVzZXIgY2FuY2VsZWQgZmls
ZSBzZWxlY3Rpb247IEB0cnVlIGlmIGNvbmZpcm1lZC4KLSAqLwotYm9vbCBld2tfdmlld19ydW5f
b3Blbl9wYW5lbChFdmFzX09iamVjdCogZXdrVmlldywgRXZhc19PYmplY3QqIGZyYW1lLCBFd2tf
RmlsZV9DaG9vc2VyKiBmaWxlQ2hvb3NlciwgRWluYV9MaXN0Kiogc2VsZWN0ZWRGaWxlbmFtZXMp
Ci17Ci0gICAgREJHKCJld2tWaWV3PSVwIGZyYW1lPSVwIGFsbG93c19tdWx0aXBsZV9maWxlcz0l
ZCIsIGV3a1ZpZXcsIGZyYW1lLCBld2tfZmlsZV9jaG9vc2VyX2FsbG93c19tdWx0aXBsZV9maWxl
c19nZXQoZmlsZUNob29zZXIpKTsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1Zp
ZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZB
TChzbWFydERhdGEtPmFwaSwgZmFsc2UpOwotCi0gICAgaWYgKCFzbWFydERhdGEtPmFwaS0+cnVu
X29wZW5fcGFuZWwpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICpzZWxlY3RlZEZpbGVu
YW1lcyA9IDA7Ci0gICAgYm9vbCBjb25maXJtID0gc21hcnREYXRhLT5hcGktPnJ1bl9vcGVuX3Bh
bmVsKHNtYXJ0RGF0YSwgZnJhbWUsIGZpbGVDaG9vc2VyLCBzZWxlY3RlZEZpbGVuYW1lcyk7ICAg
IAotICAgIGlmICghY29uZmlybSAmJiAqc2VsZWN0ZWRGaWxlbmFtZXMpCi0gICAgICAgIEVSUigi
Q2FuY2VsZWQgZmlsZSBzZWxlY3Rpb24sIGJ1dCBzZWxlY3RlZCBmaWxlbmFtZXMgIT0gMC4gRnJl
ZSBuYW1lcyBiZWZvcmUgcmV0dXJuLiIpOwotCi0gICAgcmV0dXJuIGNvbmZpcm07Ci19Ci0KLS8q
KgotICogQGludGVybmFsCi0gKgotICogTWFya2VkIHRoZSBjaGFuZ2UgdG8gY2FsbCBmcmFtZVJl
Y3RzQ2hhbmdlZC4KLSAqLwotdm9pZCBld2tfdmlld19mcmFtZV9yZWN0X2NoYW5nZWQoRXZhc19P
YmplY3QqIGV3a1ZpZXcpCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3
LCBzbWFydERhdGEpOwotCi0gICAgc21hcnREYXRhLT5jaGFuZ2VkLmZyYW1lX3JlY3QgPSB0cnVl
OwotICAgIF9ld2tfdmlld19zbWFydF9jaGFuZ2VkKHNtYXJ0RGF0YSk7Ci19Ci0KLVdURjo6UGFz
c1JlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGV3a192aWV3X3BsdWdpbl9jcmVhdGUoRXZhc19PYmpl
Y3QqIGV3a1ZpZXcsIEV2YXNfT2JqZWN0KiBmcmFtZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYg
cGx1Z2luU2l6ZSwgV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFdl
YkNvcmU6OlVSTCYgdXJsLCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mIHBhcmFtTmFt
ZXMsIGNvbnN0IFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYgcGFyYW1WYWx1ZXMsIGNvbnN0IFdU
Rjo6U3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBsb2FkTWFudWFsbHkpCi17Ci0gICAgREJHKCJld2tW
aWV3PSVwLCBmcmFtZT0lcCwgc2l6ZT0lZHglZCwgZWxlbWVudD0lcCwgdXJsPSVzLCBtaW1lVHlw
ZT0lcyIsCi0gICAgICAgIGV3a1ZpZXcsIGZyYW1lLCBwbHVnaW5TaXplLndpZHRoKCksIHBsdWdp
blNpemUuaGVpZ2h0KCksIGVsZW1lbnQsCi0gICAgICAgIHVybC5zdHJpbmcoKS51dGY4KCkuZGF0
YSgpLCBtaW1lVHlwZS51dGY4KCkuZGF0YSgpKTsKLQotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9S
RVRVUk4oZXdrVmlldywgc21hcnREYXRhLCAwKTsKLSAgICBzbWFydERhdGEtPmNoYW5nZWQuZnJh
bWVfcmVjdCA9IHRydWU7Ci0gICAgX2V3a192aWV3X3NtYXJ0X2NoYW5nZWQoc21hcnREYXRhKTsK
LQotICAgIHJldHVybiBld2tfZnJhbWVfcGx1Z2luX2NyZWF0ZQotICAgICAgICAgICAgICAgKGZy
YW1lLCBwbHVnaW5TaXplLCBlbGVtZW50LCB1cmwsIHBhcmFtTmFtZXMsIHBhcmFtVmFsdWVzLAot
ICAgICAgICAgICAgICAgbWltZVR5cGUsIGxvYWRNYW51YWxseSk7Ci19Ci0KLS8qKgotICogQGlu
dGVybmFsCi0gKgotICogQ3JlYXRlcyBhIG5ldyBwb3B1cCB3aXRoIG9wdGlvbnMgd2hlbiBhIHNl
bGVjdCB3aWRnZXQgd2FzIGNsaWNrZWQuCi0gKgotICogQHBhcmFtIGNsaWVudCBQb3B1cE1lbnVD
bGllbnQgaW5zdGFuY2UgdGhhdCBhbGxvd3MgY29tbXVuaWNhdGlvbiB3aXRoIHdlYmtpdC4KLSAq
IEBwYXJhbSBzZWxlY3RlZCBTZWxlY3RlZCBpdGVtLgotICogQHBhcmFtIHJlY3QgTWVudSdzIHBv
c2l0aW9uLgotICoKLSAqIEVtaXRzOiAicG9wdXAsY3JlYXRlIiB3aXRoIGEgbGlzdCBvZiBFd2tf
TWVudSBjb250YWluaW5nIGVhY2ggaXRlbSdzIGRhdGEKLSAqLwotdm9pZCBld2tfdmlld19wb3B1
cF9uZXcoRXZhc19PYmplY3QqIGV3a1ZpZXcsIFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCogY2xp
ZW50LCBpbnQgLypzZWxlY3RlZCovLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiByZWN0KQotewot
ICAgIElORk8oImV3a1ZpZXc9JXAiLCBld2tWaWV3KTsKLSAgICBFV0tfVklFV19TRF9HRVRfT1Jf
UkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVU
VVJOKHNtYXJ0RGF0YSwgcHJpdik7Ci0KLSAgICBpZiAocHJpdi0+cG9wdXAubWVudUNsaWVudCkK
LSAgICAgICAgZXdrX3ZpZXdfcG9wdXBfZGVzdHJveShld2tWaWV3KTsKLQotICAgIHByaXYtPnBv
cHVwLm1lbnVDbGllbnQgPSBjbGllbnQ7Ci0KLSAgICAvLyBwb3B1bGF0ZSBpdGVtcwotICAgIGNv
bnN0IGludCBzaXplID0gY2xpZW50LT5saXN0U2l6ZSgpOwotICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgIEV3a19NZW51X0l0ZW0qIGl0ZW0gPSBuZXcgRXdrX01l
bnVfSXRlbTsKLSAgICAgICAgaWYgKGNsaWVudC0+aXRlbUlzU2VwYXJhdG9yKGkpKQotICAgICAg
ICAgICAgaXRlbS0+dHlwZSA9IEVXS19NRU5VX1NFUEFSQVRPUjsKLSAgICAgICAgZWxzZSBpZiAo
Y2xpZW50LT5pdGVtSXNMYWJlbChpKSkKLSAgICAgICAgICAgIGl0ZW0tPnR5cGUgPSBFV0tfTUVO
VV9HUk9VUDsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgaXRlbS0+dHlwZSA9IEVXS19NRU5V
X09QVElPTjsKLSAgICAgICAgaXRlbS0+dGV4dCA9IGVpbmFfc3RyaW5nc2hhcmVfYWRkKGNsaWVu
dC0+aXRlbVRleHQoaSkudXRmOCgpLmRhdGEoKSk7Ci0KLSAgICAgICAgcHJpdi0+cG9wdXAubWVu
dS5pdGVtcyA9IGVpbmFfbGlzdF9hcHBlbmQocHJpdi0+cG9wdXAubWVudS5pdGVtcywgaXRlbSk7
Ci0gICAgfQotCi0gICAgcHJpdi0+cG9wdXAubWVudS54ID0gcmVjdC54KCk7Ci0gICAgcHJpdi0+
cG9wdXAubWVudS55ID0gcmVjdC55KCk7Ci0gICAgcHJpdi0+cG9wdXAubWVudS53aWR0aCA9IHJl
Y3Qud2lkdGgoKTsKLSAgICBwcml2LT5wb3B1cC5tZW51LmhlaWdodCA9IHJlY3QuaGVpZ2h0KCk7
Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChld2tWaWV3LCAicG9wdXAsY3Jl
YXRlIiwgJnByaXYtPnBvcHVwLm1lbnUpOwotfQotCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfcG9wdXBf
ZGVzdHJveShFdmFzX09iamVjdCogZXdrVmlldykKLXsKLSAgICBJTkZPKCJld2tWaWV3PSVwIiwg
ZXdrVmlldyk7Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERh
dGEsIGZhbHNlKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBw
cml2LCBmYWxzZSk7Ci0KLSAgICBpZiAoIXByaXYtPnBvcHVwLm1lbnVDbGllbnQpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLQotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdr
VmlldywgInBvcHVwLHdpbGxkZWxldGUiLCAmcHJpdi0+cG9wdXAubWVudSk7Ci0KLSAgICB2b2lk
KiBpdGVtdjsKLSAgICBFSU5BX0xJU1RfRlJFRShwcml2LT5wb3B1cC5tZW51Lml0ZW1zLCBpdGVt
dikgewotICAgICAgICBFd2tfTWVudV9JdGVtKiBpdGVtID0gc3RhdGljX2Nhc3Q8RXdrX01lbnVf
SXRlbSo+KGl0ZW12KTsKLSAgICAgICAgZWluYV9zdHJpbmdzaGFyZV9kZWwoaXRlbS0+dGV4dCk7
Ci0gICAgICAgIGRlbGV0ZSBpdGVtOwotICAgIH0KLSAgICBwcml2LT5wb3B1cC5tZW51Q2xpZW50
LT5wb3B1cERpZEhpZGUoKTsKLSAgICBwcml2LT5wb3B1cC5tZW51Q2xpZW50ID0gMDsKLQotICAg
IHJldHVybiB0cnVlOwotfQotCi12b2lkIGV3a192aWV3X3BvcHVwX3NlbGVjdGVkX3NldChFdmFz
X09iamVjdCogZXdrVmlldywgaW50IGluZGV4KQotewotICAgIElORk8oImV3a1ZpZXc9JXAiLCBl
d2tWaWV3KTsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0
YSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdik7Ci0g
ICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4ocHJpdi0+cG9wdXAubWVudUNsaWVudCk7Ci0K
LSAgICBwcml2LT5wb3B1cC5tZW51Q2xpZW50LT52YWx1ZUNoYW5nZWQoaW5kZXgpOwotfQotCi0j
aWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCi0vKioKLSAqIEBpbnRlcm5hbAotICoKLSAqIENy
ZWF0ZXMgYSBuZXcgY29sb3IgY2hvb3NlciB3aXRoIGFuIGluaXRpYWwgc2VsZWN0ZWQgY29sb3Iu
Ci0gKgotICogQHBhcmFtIGNsaWVudCBDb2xvckNob29zZXJDbGllbnQgaW5zdGFuY2UgdGhhdCBh
bGxvd3MgY29tbXVuaWNhdGlvbiB3aXRoIHdlYmtpdC4KLSAqIEBwYXJhbSBpbml0aWFsQ29sb3Ig
VGhlIGluaXRpYWwgc2VsZWN0ZWQgY29sb3IuCi0gKgotICovCi12b2lkIGV3a192aWV3X2NvbG9y
X2Nob29zZXJfbmV3KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBXZWJDb3JlOjpDb2xvckNob29zZXJD
bGllbnQqIGNsaWVudCwgY29uc3QgV2ViQ29yZTo6Q29sb3ImIGluaXRpYWxDb2xvcikKLXsKLSAg
ICBJTkZPKCJld2tWaWV3PSVwIiwgZXdrVmlldyk7Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JF
VFVSTihld2tWaWV3LCBzbWFydERhdGEpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVS
TihzbWFydERhdGEsIHByaXYpOwotCi0gICAgaWYgKHByaXYtPmNvbG9yQ2hvb3NlckNsaWVudCkK
LSAgICAgICAgZXdrX3ZpZXdfY29sb3JfY2hvb3Nlcl9kZXN0cm95KGV3a1ZpZXcpOwotCi0gICAg
cHJpdi0+Y29sb3JDaG9vc2VyQ2xpZW50ID0gY2xpZW50OwotCi0gICAgRXdrX0NvbG9yIGNvbG9y
OwotICAgIGNvbG9yLnIgPSBpbml0aWFsQ29sb3IucmVkKCk7Ci0gICAgY29sb3IuZyA9IGluaXRp
YWxDb2xvci5ncmVlbigpOwotICAgIGNvbG9yLmIgPSBpbml0aWFsQ29sb3IuYmx1ZSgpOwotICAg
IGNvbG9yLmEgPSBpbml0aWFsQ29sb3IuYWxwaGEoKTsKLQotICAgIGV2YXNfb2JqZWN0X3NtYXJ0
X2NhbGxiYWNrX2NhbGwoZXdrVmlldywgImNvbG9yY2hvb3NlcixjcmVhdGUiLCAmY29sb3IpOwot
fQotCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfY29sb3JfY2hvb3Nlcl9kZXN0cm95KEV2YXNfT2JqZWN0
KiBld2tWaWV3KQotewotICAgIElORk8oImV3a1ZpZXc9JXAiLCBld2tWaWV3KTsKLSAgICBFV0tf
VklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwotICAgIEVX
S19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKLQotICAg
IGlmICghcHJpdi0+Y29sb3JDaG9vc2VyQ2xpZW50KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKGV3a1ZpZXcsICJjb2xvcmNob29z
ZXIsd2lsbGRlbGV0ZSIsIDApOwotCi0gICAgcHJpdi0+Y29sb3JDaG9vc2VyQ2xpZW50LT5kaWRF
bmRDaG9vc2VyKCk7Ci0gICAgcHJpdi0+Y29sb3JDaG9vc2VyQ2xpZW50ID0gMDsKLQotICAgIHJl
dHVybiB0cnVlOwotfQotCi12b2lkIGV3a192aWV3X2NvbG9yX2Nob29zZXJfY29sb3Jfc2V0KEV2
YXNfT2JqZWN0ICpld2tWaWV3LCBpbnQgciwgaW50IGcsIGludCBiKQotewotICAgIElORk8oImV3
a1ZpZXc9JXAiLCBld2tWaWV3KTsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1Zp
ZXcsIHNtYXJ0RGF0YSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0
YSwgcHJpdik7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4ocHJpdi0+Y29sb3JDaG9v
c2VyQ2xpZW50KTsKLQotICAgIC8vIEFscGhhIGNoYW5uZWwgaXMgbm90IGFsbG93ZWQsIHNlZSBD
b2xvcklucHV0VHlwZTo6c2FuaXRpemVWYWx1ZSgpLgotICAgIHByaXYtPmNvbG9yQ2hvb3NlckNs
aWVudC0+ZGlkQ2hvb3NlQ29sb3IoV2ViQ29yZTo6Q29sb3IociwgZywgYikpOwotfQotCi0vKioK
LSAqIEBpbnRlcm5hbAotICoKLSAqIFRoZSBzZWxlY3RlZCBjb2xvciBvZiB0aGUgY29sb3IgaW5w
dXQgYXNzb2NpYXRlZCB3aXRoIHRoZSBjb2xvciBjaG9vc2VyIGhhcwotICogY2hhbmdlZC4gVXN1
YWxseSB0aGUgYnJvd3NlciBzaG91bGQgdXBkYXRlZCB0aGUgY3VycmVudCBzZWxlY3RlZCB2YWx1
ZSBvbiB0aGUKLSAqIGNvbG9yIHBpY2tlciBpZiB0aGUgdXNlciBpcyBub3QgaW50ZXJhY3Rpbmcu
Ci0gKgotICogQHBhcmFtIG5ld0NvbG9yIFRoZSBuZXcgc2VsZWN0ZWQgY29sb3IuCi0gKgotICov
Ci12b2lkIGV3a192aWV3X2NvbG9yX2Nob29zZXJfY2hhbmdlZChFdmFzX09iamVjdCogZXdrVmll
dywgY29uc3QgV2ViQ29yZTo6Q29sb3ImIG5ld0NvbG9yKQotewotICAgIElORk8oImV3a1ZpZXc9
JXAiLCBld2tWaWV3KTsKLQotICAgIEV3a19Db2xvciBjb2xvcjsKLSAgICBjb2xvci5yID0gbmV3
Q29sb3IucmVkKCk7Ci0gICAgY29sb3IuZyA9IG5ld0NvbG9yLmdyZWVuKCk7Ci0gICAgY29sb3Iu
YiA9IG5ld0NvbG9yLmJsdWUoKTsKLSAgICBjb2xvci5hID0gbmV3Q29sb3IuYWxwaGEoKTsKLQot
ICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdrVmlldywgImNvbG9yY2hvb3Nl
cixjb2xvcixjaGFuZ2VkIiwgJmNvbG9yKTsKLX0KLSNlbmRpZgotCi0vKioKLSAqIEBpbnRlcm5h
bAotICogUmVxdWVzdCBhIGRvd25sb2FkIHRvIHVzZXIuCi0gKgotICogQHBhcmFtIGV3a1ZpZXcg
Vmlldy4KLSAqIEBvYXJhbSBkb3dubG9hZCBFd2tfRG93bmxvYWQgc3RydWN0IHRvIGJlIHNlbnQu
Ci0gKgotICogRW1pdHM6ICJkb3dubG9hZCxyZXF1ZXN0IiB3aXRoIGFuIEV3a19Eb3dubG9hZCBj
b250YWluaW5nIHRoZSBkZXRhaWxzIG9mIHRoZQotICogcmVxdWVzdGVkIGRvd25sb2FkLiBUaGUg
ZG93bmxvYWQgcGVyIHNlIG11c3QgYmUgaGFuZGxlZCBvdXRzaWRlIG9mIHdlYmtpdC4KLSAqLwot
dm9pZCBld2tfdmlld19kb3dubG9hZF9yZXF1ZXN0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tf
RG93bmxvYWQqIGRvd25sb2FkKQotewotICAgIERCRygiZXdrVmlldz0lcCIsIGV3a1ZpZXcpOwot
ICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdrVmlldywgImRvd25sb2FkLHJl
cXVlc3QiLCBkb3dubG9hZCk7Ci19Ci0KLSNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkK
LS8qKgotICogQGludGVybmFsCi0gKiBSZXBvcnRzIHRoZSBKUyB3aW5kb3cgb2JqZWN0IHdhcyBj
bGVhcmVkLgotICoKLSAqIEBwYXJhbSBld2tWaWV3IHZpZXcuCi0gKiBAcGFyYW0gZnJhbWUgdGhl
IGZyYW1lLgotICovCi12b2lkIGV3a192aWV3X2pzX3dpbmRvd19vYmplY3RfY2xlYXIoRXZhc19P
YmplY3QqIGV3a1ZpZXcsIEV2YXNfT2JqZWN0KiBmcmFtZSkKLXsKLSAgICBldmFzX29iamVjdF9z
bWFydF9jYWxsYmFja19jYWxsKGV3a1ZpZXcsICJqcyx3aW5kb3dvYmplY3QsY2xlYXIiLCBmcmFt
ZSk7Ci19Ci0jZW5kaWYKLQotLyoqCi0gKiBAaW50ZXJuYWwKLSAqIFJlcG9ydHMgdGhlIHZpZXdw
b3J0IGhhcyBjaGFuZ2VkLgotICoKLSAqIEBwYXJhbSBhcmd1bWVudHMgdmlld3BvcnQgYXJndW1l
bnQuCi0gKgotICogRW1pdHMgc2lnbmFsOiAidmlld3BvcnQsY2hhbmdlZCIgd2l0aCBubyBwYXJh
bWV0ZXJzLgotICovCi12b2lkIGV3a192aWV3X3ZpZXdwb3J0X2F0dHJpYnV0ZXNfc2V0KEV2YXNf
T2JqZWN0KiBld2tWaWV3LCBjb25zdCBXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50cyYgYXJndW1l
bnRzKQotewotICAgIEVXS19WSUVXX1NEX0dFVChld2tWaWV3LCBzbWFydERhdGEpOwotICAgIEVX
S19WSUVXX1BSSVZfR0VUKHNtYXJ0RGF0YSwgcHJpdik7Ci0KLSAgICBwcml2LT52aWV3cG9ydEFy
Z3VtZW50cyA9IGFyZ3VtZW50czsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxs
KGV3a1ZpZXcsICJ2aWV3cG9ydCxjaGFuZ2VkIiwgMCk7Ci19Ci0KLXZvaWQgZXdrX3ZpZXdfdmll
d3BvcnRfYXR0cmlidXRlc19nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcsIGludCogd2lk
dGgsIGludCogaGVpZ2h0LCBmbG9hdCogaW5pdFNjYWxlLCBmbG9hdCogbWF4U2NhbGUsIGZsb2F0
KiBtaW5TY2FsZSwgZmxvYXQqIGRldmljZVBpeGVsUmF0aW8sIEVpbmFfQm9vbCogdXNlclNjYWxh
YmxlKQotewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRh
KTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2KTsKLSAg
ICBXZWJDb3JlOjpWaWV3cG9ydEF0dHJpYnV0ZXMgYXR0cmlidXRlcyA9IF9ld2tfdmlld192aWV3
cG9ydF9hdHRyaWJ1dGVzX2NvbXB1dGUocHJpdik7Ci0KLSAgICBpZiAod2lkdGgpCi0gICAgICAg
ICp3aWR0aCA9IGF0dHJpYnV0ZXMubGF5b3V0U2l6ZS53aWR0aCgpOwotICAgIGlmIChoZWlnaHQp
Ci0gICAgICAgICpoZWlnaHQgPSBhdHRyaWJ1dGVzLmxheW91dFNpemUuaGVpZ2h0KCk7Ci0gICAg
aWYgKGluaXRTY2FsZSkKLSAgICAgICAgKmluaXRTY2FsZSA9IGF0dHJpYnV0ZXMuaW5pdGlhbFNj
YWxlOwotICAgIGlmIChtYXhTY2FsZSkKLSAgICAgICAgKm1heFNjYWxlID0gYXR0cmlidXRlcy5t
YXhpbXVtU2NhbGU7Ci0gICAgaWYgKG1pblNjYWxlKQotICAgICAgICAqbWluU2NhbGUgPSBhdHRy
aWJ1dGVzLm1pbmltdW1TY2FsZTsKLSAgICBpZiAoZGV2aWNlUGl4ZWxSYXRpbykKLSAgICAgICAg
KmRldmljZVBpeGVsUmF0aW8gPSBwcml2LT5wYWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpOwotICAg
IGlmICh1c2VyU2NhbGFibGUpCi0gICAgICAgICp1c2VyU2NhbGFibGUgPSBzdGF0aWNfY2FzdDxi
b29sPihhdHRyaWJ1dGVzLnVzZXJTY2FsYWJsZSk7Ci19Ci0KLUVpbmFfQm9vbCBld2tfdmlld196
b29tX3JhbmdlX3NldChFdmFzX09iamVjdCogZXdrVmlldywgZmxvYXQgbWluU2NhbGUsIGZsb2F0
IG1heFNjYWxlKQotewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21h
cnREYXRhLCBmYWxzZSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0
YSwgcHJpdiwgZmFsc2UpOwotCi0gICAgaWYgKG1heFNjYWxlIDwgbWluU2NhbGUpIHsKLSAgICAg
ICAgV0FSTigibWluU2NhbGUgaXMgbGFyZ2VyIHRoYW4gbWF4U2NhbGUiKTsKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHByaXYtPnNldHRpbmdzLnpvb21SYW5nZS5taW5TY2Fs
ZSA9IG1pblNjYWxlOwotICAgIHByaXYtPnNldHRpbmdzLnpvb21SYW5nZS5tYXhTY2FsZSA9IG1h
eFNjYWxlOwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWZsb2F0IGV3a192aWV3X3pvb21fcmFu
Z2VfbWluX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKLXsKLSAgICBFV0tfVklFV19T
RF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgLTEuMCk7Ci0gICAgRVdLX1ZJRVdf
UFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgLTEuMCk7Ci0KLSAgICByZXR1cm4g
cHJpdi0+c2V0dGluZ3Muem9vbVJhbmdlLm1pblNjYWxlOwotfQotCi1mbG9hdCBld2tfdmlld196
b29tX3JhbmdlX21heF9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCi17Ci0gICAgRVdL
X1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIC0xLjApOwotICAgIEVX
S19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIC0xLjApOwotCi0gICAg
cmV0dXJuIHByaXYtPnNldHRpbmdzLnpvb21SYW5nZS5tYXhTY2FsZTsKLX0KLQotRWluYV9Cb29s
IGV3a192aWV3X3VzZXJfc2NhbGFibGVfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFaW5hX0Jv
b2wgdXNlclNjYWxhYmxlKQotewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmll
dywgc21hcnREYXRhLCBmYWxzZSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNt
YXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwotCi0gICAgcHJpdi0+c2V0dGluZ3Muem9vbVJhbmdlLnVz
ZXJTY2FsYWJsZSA9IHVzZXJTY2FsYWJsZTsKLQotICAgIHJldHVybiB0cnVlOwotfQotCi1FaW5h
X0Jvb2wgZXdrX3ZpZXdfdXNlcl9zY2FsYWJsZV9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1Zp
ZXcpCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEs
IGZhbHNlKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2
LCBmYWxzZSk7Ci0KLSAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3Muem9vbVJhbmdlLnVzZXJTY2Fs
YWJsZTsKLX0KLQotRWluYV9Cb29sIGV3a192aWV3X2RldmljZV9waXhlbF9yYXRpb19zZXQoRXZh
c19PYmplY3QqIGV3a1ZpZXcsIGZsb2F0IHJhdGlvKQotewotICAgIEVXS19WSUVXX1NEX0dFVF9P
Ul9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9H
RVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwotCi0gICAgcHJpdi0+cGFnZS0+
c2V0RGV2aWNlU2NhbGVGYWN0b3IocmF0aW8pOwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWZs
b2F0IGV3a192aWV3X2RldmljZV9waXhlbF9yYXRpb19nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3
a1ZpZXcpCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERh
dGEsIC0xLjApOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHBy
aXYsIC0xLjApOwotCi0gICAgcmV0dXJuIHByaXYtPnBhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCk7
Ci19Ci0KLXZvaWQgZXdrX3ZpZXdfdGV4dF9kaXJlY3Rpb25fc2V0KEV2YXNfT2JqZWN0KiBld2tW
aWV3LCBFd2tfVGV4dF9EaXJlY3Rpb24gZGlyZWN0aW9uKQotewotICAgIEVXS19WSUVXX1NEX0dF
VF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9P
Ul9SRVRVUk4oc21hcnREYXRhLCBwcml2KTsKLQotICAgIC8vIFRoZSBFZGl0b3I6OnNldEJhc2VX
cml0aW5nRGlyZWN0aW9uKCkgZnVuY3Rpb24gY2hlY2tzIGlmIHdlIGNhbiBjaGFuZ2UKLSAgICAv
LyB0aGUgdGV4dCBkaXJlY3Rpb24gb2YgdGhlIHNlbGVjdGVkIG5vZGUgYW5kIHVwZGF0ZXMgaXRz
IERPTSAiZGlyIgotICAgIC8vIGF0dHJpYnV0ZSBhbmQgaXRzIENTUyAiZGlyZWN0aW9uIiBwcm9w
ZXJ0eS4KLSAgICAvLyBTbywgd2UganVzdCBjYWxsIHRoZSBmdW5jdGlvbiBhcyBTYWZhcmkgZG9l
cy4KLSAgICBXZWJDb3JlOjpGcmFtZSYgZm9jdXNlZEZyYW1lID0gcHJpdi0+cGFnZS0+Zm9jdXND
b250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7Ci0KLSAgICBXZWJDb3JlOjpFZGl0b3Im
IGVkaXRvciA9IGZvY3VzZWRGcmFtZS5lZGl0b3IoKTsKLSAgICBpZiAoIWVkaXRvci5jYW5FZGl0
KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7Ci0gICAgY2Fz
ZSBFV0tfVEVYVF9ESVJFQ1RJT05fREVGQVVMVDoKLSAgICAgICAgZWRpdG9yLnNldEJhc2VXcml0
aW5nRGlyZWN0aW9uKE5hdHVyYWxXcml0aW5nRGlyZWN0aW9uKTsKLSAgICBjYXNlIEVXS19URVhU
X0RJUkVDVElPTl9MRUZUX1RPX1JJR0hUOgotICAgICAgICBlZGl0b3Iuc2V0QmFzZVdyaXRpbmdE
aXJlY3Rpb24oTGVmdFRvUmlnaHRXcml0aW5nRGlyZWN0aW9uKTsKLSAgICBjYXNlIEVXS19URVhU
X0RJUkVDVElPTl9SSUdIVF9UT19MRUZUOgotICAgICAgICBlZGl0b3Iuc2V0QmFzZVdyaXRpbmdE
aXJlY3Rpb24oUmlnaHRUb0xlZnRXcml0aW5nRGlyZWN0aW9uKTsKLSAgICB9Ci0KLSAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotdm9pZCBld2tfdmlld190cmFuc2l0aW9uX3RvX2NvbW1p
dGVkX2Zvcl9uZXdwYWdlKEV2YXNfT2JqZWN0KiBld2tWaWV3KQotewotICAgIEVXS19WSUVXX1NE
X0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhKTsKLSAgICBFV0tfVklFV19QUklWX0dF
VF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2KTsKLQotICAgIGV3a192aWV3X2Rpc2FibGVfcmVu
ZGVyKGV3a1ZpZXcpOwotICAgIHByaXYtPmZsYWdzLnZpZXdDbGVhcmVkID0gZmFsc2U7Ci19Ci0K
LQotLyoqCi0gKiBAaW50ZXJuYWwKLSAqIFJlcG9ydHMgdGhhdCBhIG5hdmlnYXRpb24gcG9saWN5
IGRlY2lzaW9uIHNob3VsZCBiZSB0YWtlbi4gSWYgQHJldHVybgotICogaXMgdHJ1ZSwgdGhlIG5h
dmlnYXRpb24gcmVxdWVzdCB3aWxsIGJlIGFjY2VwdGVkLCBvdGhlcndpc2UgaXQgd2lsbCBiZQot
ICogaWdub3JlZC4KLSAqCi0gKiBAcGFyYW0gZXdrVmlldyBWaWV3IHRvIGxvYWQKLSAqIEBwYXJh
bSByZXF1ZXN0IFJlcXVlc3Qgd2hpY2ggY29udGFpbiB1cmwgdG8gbmF2aWdhdGUKLSAqIEBwYXJh
bSBuYXZpZ2F0aW9uVHlwZSBuYXZpZ2F0aW9uIHR5cGUKLSAqCi0gKiBAcmV0dXJuIHRydWUgaWYg
dGhlIGNsaWVudCBhY2NlcHRlZCB0aGUgbmF2aWdhdGlvbiByZXF1ZXN0LCBmYWxzZSBvdGhlcndp
c2UuIElmIHRoZQotICogY2xpZW50IGRpZCBub3QgbWFrZSBhIGRlY2lzaW9uLCB3ZSByZXR1cm4g
dHJ1ZSBieSBkZWZhdWx0IHNpbmNlIHRoZSBkZWZhdWx0IHBvbGljeQotICogaXMgdG8gYWNjZXB0
LgotICovCi1ib29sIGV3a192aWV3X25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uKEV2YXNfT2Jq
ZWN0KiBld2tWaWV3LCBFd2tfRnJhbWVfUmVzb3VyY2VfUmVxdWVzdCogcmVxdWVzdCwgV2ViQ29y
ZTo6TmF2aWdhdGlvblR5cGUgbmF2aWdhdGlvblR5cGUpCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VU
X09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKLSAgICBFSU5BX1NBRkVUWV9P
Tl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5hcGksIGZhbHNlKTsKLQotICAgIGlmICghc21h
cnREYXRhLT5hcGktPm5hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uKQotICAgICAgICByZXR1cm4g
dHJ1ZTsKLQotICAgIEV3a19OYXZpZ2F0aW9uX1R5cGUgdHlwZTsKLSAgICBzd2l0Y2ggKG5hdmln
YXRpb25UeXBlKSB7Ci0gICAgY2FzZSBXZWJDb3JlOjpOYXZpZ2F0aW9uVHlwZUxpbmtDbGlja2Vk
OgotICAgICAgICB0eXBlID0gRVdLX05BVklHQVRJT05fVFlQRV9MSU5LX0NMSUNLRUQ7Ci0gICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgV2ViQ29yZTo6TmF2aWdhdGlvblR5cGVGb3JtU3VibWl0dGVk
OgotICAgICAgICB0eXBlID0gRVdLX05BVklHQVRJT05fVFlQRV9GT1JNX1NVQk1JVFRFRDsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBXZWJDb3JlOjpOYXZpZ2F0aW9uVHlwZUJhY2tGb3J3YXJk
OgotICAgICAgICB0eXBlID0gRVdLX05BVklHQVRJT05fVFlQRV9CQUNLX0ZPUldBUkQ7Ci0gICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgV2ViQ29yZTo6TmF2aWdhdGlvblR5cGVSZWxvYWQ6Ci0gICAg
ICAgIHR5cGUgPSBFV0tfTkFWSUdBVElPTl9UWVBFX1JFTE9BRDsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBXZWJDb3JlOjpOYXZpZ2F0aW9uVHlwZUZvcm1SZXN1Ym1pdHRlZDoKLSAgICAgICAg
dHlwZSA9IEVXS19OQVZJR0FUSU9OX1RZUEVfRk9STV9SRVNVQk1JVFRFRDsKLSAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBXZWJDb3JlOjpOYXZpZ2F0aW9uVHlwZU90aGVyOgotICAgICAgICB0eXBl
ID0gRVdLX05BVklHQVRJT05fVFlQRV9PVEhFUjsKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVs
dDoKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0K
LQotICAgIHJldHVybiBzbWFydERhdGEtPmFwaS0+bmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24o
c21hcnREYXRhLCByZXF1ZXN0LCB0eXBlKTsKLX0KLQotRWluYV9Cb29sIGV3a192aWV3X2pzX29i
amVjdF9hZGQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV3a19KU19PYmplY3QqIG9iamVjdCwgY29u
c3QgY2hhciogb2JqZWN0TmFtZSkKLXsKLSNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkK
LSAgICBpZiAob2JqZWN0LT52aWV3KSAvLyBvYmplY3QgaGFzIGFscmVhZHkgYmVlbiBhZGRlZCB0
byBhbm90aGVyIGV3a192aWV3Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBvYmplY3QtPm5h
bWUgPSBlaW5hX3N0cmluZ3NoYXJlX2FkZChvYmplY3ROYW1lKTsKLSAgICBFV0tfVklFV19TRF9H
RVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwotICAgIEVXS19WSUVXX1BS
SVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKLQotICAgIFdlYkNvcmU6
OkpTRE9NV2luZG93KiB3aW5kb3cgPSB0b0pTRE9NV2luZG93KCZwcml2LT5wYWdlLT5tYWluRnJh
bWUoKSwgV2ViQ29yZTo6bWFpblRocmVhZE5vcm1hbFdvcmxkKCkpOwotICAgIEpTQzo6SlNMb2Nr
SG9sZGVyIGxvY2sod2luZG93LT5nbG9iYWxFeGVjKCkpOwotICAgIEpTQzo6QmluZGluZ3M6OlJv
b3RPYmplY3QqIHJvb3Q7Ci0gICAgcm9vdCA9IHByaXYtPnBhZ2UtPm1haW5GcmFtZSgpLnNjcmlw
dCgpLmJpbmRpbmdSb290T2JqZWN0KCk7Ci0KLSAgICBpZiAoIXdpbmRvdykgewotICAgICAgICBF
UlIoIldhcm5pbmc6IGNvdWxkbid0IGdldCB3aW5kb3cgb2JqZWN0Iik7Ci0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICB9Ci0KLSAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlY3V0ZVN0YXRlID0gd2lu
ZG93LT5nbG9iYWxFeGVjKCk7Ci0KLSAgICBvYmplY3QtPnZpZXcgPSBld2tWaWV3OwotICAgIEpT
Qzo6SlNPYmplY3QqIHJ1bnRpbWVPYmplY3QgPSAoSlNDOjpKU09iamVjdCopSlNDOjpCaW5kaW5n
czo6Q0luc3RhbmNlOjpjcmVhdGUoKE5QT2JqZWN0KilvYmplY3QsIHJvb3QpLT5jcmVhdGVSdW50
aW1lT2JqZWN0KGV4ZWN1dGVTdGF0ZSk7Ci0gICAgSlNDOjpJZGVudGlmaWVyIGlkID0gSlNDOjpJ
ZGVudGlmaWVyKGV4ZWN1dGVTdGF0ZSwgb2JqZWN0TmFtZSk7Ci0KLSAgICBKU0M6OlB1dFByb3Bl
cnR5U2xvdCBzbG90KHdpbmRvdyk7Ci0gICAgd2luZG93LT5tZXRob2RUYWJsZSgpLT5wdXQod2lu
ZG93LCBleGVjdXRlU3RhdGUsIGlkLCBydW50aW1lT2JqZWN0LCBzbG90KTsKLSAgICByZXR1cm4g
dHJ1ZTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGV3a1ZpZXcpOwotICAgIFVOVVNFRF9QQVJB
TShvYmplY3QpOwotICAgIFVOVVNFRF9QQVJBTShvYmplY3ROYW1lKTsKLSAgICByZXR1cm4gZmFs
c2U7Ci0jZW5kaWYgLy8gRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCi19Ci0KLS8qKgotICog
QGludGVybmFsCi0gKiBSZXBvcnRzIHRoYXQgdGhlIGNvbnRlbnRzIGhhdmUgcmVzaXplZC4gVGhl
IGV3a192aWV3IGNhbGxzIGNvbnRlbnRzX3Jlc2l6ZSwKLSAqIHdoaWNoIGNhbiBiZSByZWltcGxl
bWVudGVkIGFzIG5lZWRlZC4KLSAqCi0gKiBAcGFyYW0gZXdrVmlldyB2aWV3LgotICogQHBhcmFt
IHdpZHRoIG5ldyBjb250ZW50IHdpZHRoLgotICogQHBhcmFtIGhlaWdodCBuZXcgY29udGVudCBo
ZWlnaHQuCi0gKi8KLXZvaWQgZXdrX3ZpZXdfY29udGVudHNfc2l6ZV9jaGFuZ2VkKEV2YXNfT2Jq
ZWN0KiBld2tWaWV3LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCi17Ci0gICAgRVdLX1ZJRVdfU0Rf
R0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEpOwotICAgIEVJTkFfU0FGRVRZX09OX05V
TExfUkVUVVJOKHNtYXJ0RGF0YS0+YXBpKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVS
TihzbWFydERhdGEtPmFwaS0+Y29udGVudHNfcmVzaXplKTsKLQotICAgIGlmICghc21hcnREYXRh
LT5hcGktPmNvbnRlbnRzX3Jlc2l6ZShzbWFydERhdGEsIHdpZHRoLCBoZWlnaHQpKQotICAgICAg
ICBFUlIoImZhaWxlZCB0byByZXNpemUgY29udGVudHMgdG8gJWR4JWQiLCB3aWR0aCwgaGVpZ2h0
KTsKLX0KLQotLyoqCi0gKiBAaW50ZXJuYWwKLSAqIEdldHMgcGFnZSBzaXplIGZyb20gZnJhbWV2
aWV3LgotICoKLSAqIEBwYXJhbSBld2tWaWV3IHZpZXcuCi0gKgotICogQHJldHVybiBwYWdlIHNp
emUsIG9yIC0xLjAgc2l6ZSBvbiBmYWlsdXJlCi0gKi8KLVdlYkNvcmU6OkZsb2F0UmVjdCBld2tf
dmlld19wYWdlX3JlY3RfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQotewotICAgIEVX
S19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBXZWJDb3JlOjpGbG9h
dFJlY3QoLTEuMCwgLTEuMCwgLTEuMCwgLTEuMCkpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09S
X1JFVFVSTihzbWFydERhdGEsIHByaXYsIFdlYkNvcmU6OkZsb2F0UmVjdCgtMS4wLCAtMS4wLCAt
MS4wLCAtMS4wKSk7Ci0KLSAgICByZXR1cm4gcHJpdi0+cGFnZS0+bWFpbkZyYW1lKCkudmlldygp
LT5mcmFtZVJlY3QoKTsKLX0KLQotI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCi12b2lkIGV3a192
aWV3X25lZWRfdG91Y2hfZXZlbnRzX3NldChFdmFzX09iamVjdCogZXdrVmlldywgYm9vbCBuZWVk
ZWQpCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUKGV3a1ZpZXcsIHNtYXJ0RGF0YSk7Ci0gICAgRVdL
X1ZJRVdfUFJJVl9HRVQoc21hcnREYXRhLCBwcml2KTsKLQotICAgIHByaXYtPmZsYWdzLm5lZWRU
b3VjaEV2ZW50cyA9IG5lZWRlZDsKLX0KLQotYm9vbCBld2tfdmlld19uZWVkX3RvdWNoX2V2ZW50
c19nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VU
X09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKLSAgICBFV0tfVklFV19QUklW
X0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBmYWxzZSk7Ci0gICAgcmV0dXJuIHByaXYt
PmZsYWdzLm5lZWRUb3VjaEV2ZW50czsKLX0KLSNlbmRpZgotCi1pbmxpbmUgc3RhdGljIFdlYkNv
cmU6OlBhZ2U6OlZpZXdNb2RlIHRvVmlld01vZGUoRXdrX1ZpZXdfTW9kZSB2aWV3TW9kZSkKLXsK
LSAgICBzd2l0Y2ggKHZpZXdNb2RlKSB7Ci0gICAgY2FzZSBFV0tfVklFV19NT0RFX0lOVkFMSUQ6
Ci0gICAgICAgIHJldHVybiBXZWJDb3JlOjpQYWdlOjpWaWV3TW9kZUludmFsaWQ7Ci0gICAgY2Fz
ZSBFV0tfVklFV19NT0RFX1dJTkRPV0VEOgotICAgICAgICByZXR1cm4gV2ViQ29yZTo6UGFnZTo6
Vmlld01vZGVXaW5kb3dlZDsKLSAgICBjYXNlIEVXS19WSUVXX01PREVfRkxPQVRJTkc6Ci0gICAg
ICAgIHJldHVybiBXZWJDb3JlOjpQYWdlOjpWaWV3TW9kZUZsb2F0aW5nOwotICAgIGNhc2UgRVdL
X1ZJRVdfTU9ERV9GVUxMU0NSRUVOOgotICAgICAgICByZXR1cm4gV2ViQ29yZTo6UGFnZTo6Vmll
d01vZGVGdWxsc2NyZWVuOwotICAgIGNhc2UgRVdLX1ZJRVdfTU9ERV9NQVhJTUlaRUQ6Ci0gICAg
ICAgIHJldHVybiBXZWJDb3JlOjpQYWdlOjpWaWV3TW9kZU1heGltaXplZDsKLSAgICBjYXNlIEVX
S19WSUVXX01PREVfTUlOSU1JWkVEOgotICAgICAgICByZXR1cm4gV2ViQ29yZTo6UGFnZTo6Vmll
d01vZGVNaW5pbWl6ZWQ7Ci0gICAgfQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotCi0gICAg
cmV0dXJuIFdlYkNvcmU6OlBhZ2U6OlZpZXdNb2RlSW52YWxpZDsKLX0KLQotaW5saW5lIHN0YXRp
YyBFd2tfVmlld19Nb2RlIHRvRXdrVmlld01vZGUoV2ViQ29yZTo6UGFnZTo6Vmlld01vZGUgdmll
d01vZGUpCi17Ci0gICAgc3dpdGNoICh2aWV3TW9kZSkgewotICAgIGNhc2UgV2ViQ29yZTo6UGFn
ZTo6Vmlld01vZGVJbnZhbGlkOgotICAgICAgICByZXR1cm4gRVdLX1ZJRVdfTU9ERV9JTlZBTElE
OwotICAgIGNhc2UgV2ViQ29yZTo6UGFnZTo6Vmlld01vZGVXaW5kb3dlZDoKLSAgICAgICAgcmV0
dXJuIEVXS19WSUVXX01PREVfV0lORE9XRUQ7Ci0gICAgY2FzZSBXZWJDb3JlOjpQYWdlOjpWaWV3
TW9kZUZsb2F0aW5nOgotICAgICAgICByZXR1cm4gRVdLX1ZJRVdfTU9ERV9GTE9BVElORzsKLSAg
ICBjYXNlIFdlYkNvcmU6OlBhZ2U6OlZpZXdNb2RlRnVsbHNjcmVlbjoKLSAgICAgICAgcmV0dXJu
IEVXS19WSUVXX01PREVfRlVMTFNDUkVFTjsKLSAgICBjYXNlIFdlYkNvcmU6OlBhZ2U6OlZpZXdN
b2RlTWF4aW1pemVkOgotICAgICAgICByZXR1cm4gRVdLX1ZJRVdfTU9ERV9NQVhJTUlaRUQ7Ci0g
ICAgY2FzZSBXZWJDb3JlOjpQYWdlOjpWaWV3TW9kZU1pbmltaXplZDoKLSAgICAgICAgcmV0dXJu
IEVXS19WSUVXX01PREVfTUlOSU1JWkVEOwotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLQotICAgIHJldHVybiBFV0tfVklFV19NT0RFX0lOVkFMSUQ7Ci19Ci0KLUVpbmFfQm9vbCBl
d2tfdmlld19tb2RlX3NldChFdmFzX09iamVjdCogZXdrVmlldywgRXdrX1ZpZXdfTW9kZSB2aWV3
TW9kZSkKLXsKLSNpZiBFTkFCTEUoVklFV19NT0RFX0NTU19NRURJQSkKLSAgICBFV0tfVklFV19T
RF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwotICAgIEVXS19WSUVX
X1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKLQotICAgIHByaXYt
PnBhZ2UtPnNldFZpZXdNb2RlKHRvVmlld01vZGUodmlld01vZGUpKTsKLSAgICByZXR1cm4gdHJ1
ZTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGV3a1ZpZXcpOwotICAgIFVOVVNFRF9QQVJBTSh2
aWV3TW9kZSk7Ci0gICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCi19Ci0KLUV3a19WaWV3X01vZGUg
ZXdrX3ZpZXdfbW9kZV9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCi17Ci0jaWYgRU5B
QkxFKFZJRVdfTU9ERV9DU1NfTUVESUEpCi0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihl
d2tWaWV3LCBzbWFydERhdGEsIEVXS19WSUVXX01PREVfSU5WQUxJRCk7Ci0gICAgRVdLX1ZJRVdf
UFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgRVdLX1ZJRVdfTU9ERV9JTlZBTElE
KTsKLQotICAgIHJldHVybiB0b0V3a1ZpZXdNb2RlKHByaXYtPnBhZ2UtPnZpZXdNb2RlKCkpOwot
I2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oZXdrVmlldyk7Ci0gICAgcmV0dXJuIEVXS19WSUVXX01P
REVfSU5WQUxJRDsKLSNlbmRpZgotfQotCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfbWl4ZWRfY29udGVu
dF9kaXNwbGF5ZWRfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQotewotICAgIEVXS19W
SUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7Ci0gICAgRVdL
X1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwotICAgIHJl
dHVybiBwcml2LT5mbGFncy5oYXNEaXNwbGF5ZWRNaXhlZENvbnRlbnQ7Ci19Ci0KLUVpbmFfQm9v
bCBld2tfdmlld19taXhlZF9jb250ZW50X3J1bl9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1Zp
ZXcpCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEs
IGZhbHNlKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2
LCBmYWxzZSk7Ci0gICAgcmV0dXJuIHByaXYtPmZsYWdzLmhhc1J1bk1peGVkQ29udGVudDsKLX0K
LQotLyoqCi0gKiBAaW50ZXJuYWwKLSAqIFJlcG9ydHMgdGhlIHZpZXcgdGhhdCBlZGl0b3IgY2xp
ZW50IHNlbGVjdGlvbiBoYXMgY2hhbmdlZC4KLSAqCi0gKiBAcGFyYW0gZXdrVmlldyBWaWV3Lgot
ICoKLSAqIEVtaXRzIHNpZ25hbDogImVkaXRvcmNsaWVudHNlbGVjdGlvbixjaGFuZ2VkIiB3aXRo
IG5vIHBhcmFtZXRlcnMuCi0gKi8KLXZvaWQgZXdrX3ZpZXdfZWRpdG9yX2NsaWVudF9zZWxlY3Rp
b25fY2hhbmdlZChFdmFzX09iamVjdCogZXdrVmlldykKLXsKLSAgICBldmFzX29iamVjdF9zbWFy
dF9jYWxsYmFja19jYWxsKGV3a1ZpZXcsICJlZGl0b3JjbGllbnQsc2VsZWN0aW9uLGNoYW5nZWQi
LCAwKTsKLX0KLQotLyoqCi0gKiBAaW50ZXJuYWwKLSAqIFJlcG9ydHMgdG8gdGhlIHZpZXcgdGhh
dCBlZGl0b3IgY2xpZW50J3MgY29udGVudHMgd2VyZSBjaGFuZ2VkLgotICoKLSAqIEBwYXJhbSBl
d2tWaWV3IFZpZXcuCi0gKgotICogRW1pdHMgc2lnbmFsOiAiZWRpdG9yY2xpZW50LGNvbnRlbnRz
LGNoYW5nZWQiIHdpdGggbm8gcGFyYW1ldGVycy4KLSAqLwotdm9pZCBld2tfdmlld19lZGl0b3Jf
Y2xpZW50X2NvbnRlbnRzX2NoYW5nZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcpCi17Ci0gICAgZXZh
c19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChld2tWaWV3LCAiZWRpdG9yY2xpZW50LGNvbnRl
bnRzLGNoYW5nZWQiLCAwKTsKLX0KLQotLyoqCi0gKiBAaW50ZXJuYWwKLSAqIERlZmluZXMgd2hl
dGhlciB0aGUgdmlldyBoYXMgZGlzcGxheWVkIG1peGVkIGNvbnRlbnQuCi0gKgotICogV2hlbiBh
IHZpZXcgaGFzIGRpc3BsYXllZCBtaXhlZCBjb250ZW50LCBhbnkgb2YgaXRzIGZyYW1lcyBoYXMg
bG9hZGVkIGFuIEhUVFBTIFVSSQotICogd2hpY2ggaGFzIGl0c2VsZiBsb2FkZWQgYW5kIGRpc3Bs
YXllZCBhIHJlc291cmNlIChzdWNoIGFzIGFuIGltYWdlKSBmcm9tIGFuIGluc2VjdXJlLAotICog
dGhhdCBpcywgbm9uLUhUVFBTLCBVUkkuCi0gKgotICogQHBhcmFtIGhhc0Rpc3BsYXllZCBEbyBv
ciBkbyBub3QgY2xlYXIgdGhlIGZsYWcgZnJvbSB0aGUgdmlldy4KLSAqCi0gKiBFbWl0cyBzaWdu
YWw6ICJtaXhlZGNvbnRlbnQsZGlzcGxheWVkIiB3aXRoIG5vIHBhcmFtZXRlcnMgd2hlbiBAcCBo
YXNEaXNwbGF5ZWQgaXMgQGMgdHJ1ZS4KLSAqLwotdm9pZCBld2tfdmlld19taXhlZF9jb250ZW50
X2Rpc3BsYXllZF9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGJvb2wgaGFzRGlzcGxheWVkKQot
ewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhKTsKLSAg
ICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2KTsKLQotICAgIHBy
aXYtPmZsYWdzLmhhc0Rpc3BsYXllZE1peGVkQ29udGVudCA9IGhhc0Rpc3BsYXllZDsKLQotICAg
IGlmIChoYXNEaXNwbGF5ZWQpCi0gICAgICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2Nh
bGwoZXdrVmlldywgIm1peGVkY29udGVudCxkaXNwbGF5ZWQiLCAwKTsKLX0KLQotLyoqCi0gKiBA
aW50ZXJuYWwKLSAqIERlZmluZXMgd2hldGhlciB0aGUgdmlldyBoYXMgcnVuIG1peGVkIGNvbnRl
bnQuCi0gKgotICogV2hlbiBhIHZpZXcgaGFzIHJ1biBtaXhlZCBjb250ZW50LCBhbnkgb2YgaXRz
IGZyYW1lcyBoYXMgbG9hZGVkIGFuIEhUVFBTIFVSSQotICogd2hpY2ggaGFzIGl0c2VsZiBsb2Fk
ZWQgYW5kIHJ1biBhIHJlc291cmNlIChzdWNoIGFzIGEgc2NyaXB0KSBmcm9tIGFuIGluc2VjdXJl
LAotICogdGhhdCBpcywgbm9uLUhUVFBTLCBVUkkuCi0gKgotICogQHBhcmFtIGhhc1J1biBEbyBv
ciBkbyBub3QgY2xlYXIgdGhlIGZsYWcgZnJvbSB0aGUgdmlldy4KLSAqCi0gKiBFbWl0cyBzaWdu
YWw6ICJtaXhlZGNvbnRlbnQscnVuIiB3aXRoIG5vIHBhcmFtZXRlcnMgd2hlbiBAcCBoYXNSdW4g
aXMgQGMgdHJ1ZS4KLSAqLwotdm9pZCBld2tfdmlld19taXhlZF9jb250ZW50X3J1bl9zZXQoRXZh
c19PYmplY3QqIGV3a1ZpZXcsIGJvb2wgaGFzUnVuKQotewotICAgIEVXS19WSUVXX1NEX0dFVF9P
Ul9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9S
RVRVUk4oc21hcnREYXRhLCBwcml2KTsKLQotICAgIHByaXYtPmZsYWdzLmhhc1J1bk1peGVkQ29u
dGVudCA9IGhhc1J1bjsKLQotICAgIGlmIChoYXNSdW4pCi0gICAgICAgIGV2YXNfb2JqZWN0X3Nt
YXJ0X2NhbGxiYWNrX2NhbGwoZXdrVmlldywgIm1peGVkY29udGVudCxydW4iLCAwKTsKLX0KLQot
RWluYV9Cb29sIGV3a192aWV3X3Zpc2liaWxpdHlfc3RhdGVfc2V0KEV2YXNfT2JqZWN0KiBld2tW
aWV3LCBFd2tfUGFnZV9WaXNpYmlsaXR5X1N0YXRlIHBhZ2VWaXNpYmlsaXR5U3RhdGUsIEVpbmFf
Qm9vbCkKLXsKLSNpZiBFTkFCTEUoUEFHRV9WSVNJQklMSVRZX0FQSSkKLSAgICBFV0tfVklFV19T
RF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwotICAgIEVXS19WSUVX
X1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKLQotICAgIC8vIFdl
YktpdCBkb2VzIG5vdCBjdXJlbnRseSBzdXBwb3J0IHRoZSAidW5sb2FkZWQiIHN0YXRlLgotICAg
IGlmIChwYWdlVmlzaWJpbGl0eVN0YXRlID09IEVXS19QQUdFX1ZJU0lCSUxJVFlfU1RBVEVfVU5M
T0FERUQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHByaXYtPnBhZ2UtPnNldElzVmlz
aWJsZShwYWdlVmlzaWJpbGl0eVN0YXRlID09IEVXS19QQUdFX1ZJU0lCSUxJVFlfU1RBVEVfVklT
SUJMRSk7Ci0gICAgaWYgKHBhZ2VWaXNpYmlsaXR5U3RhdGUgPT0gRVdLX1BBR0VfVklTSUJJTElU
WV9TVEFURV9QUkVSRU5ERVIpCi0gICAgICAgIHByaXYtPnBhZ2UtPnNldElzUHJlcmVuZGVyKCk7
Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLSNlbHNlCi0gICAgREJHKCJQQUdFX1ZJU0lCSUxJVFlfQVBJ
IGlzIGRpc2FibGVkLiIpOwotICAgIFVOVVNFRF9QQVJBTShld2tWaWV3KTsKLSAgICBVTlVTRURf
UEFSQU0ocGFnZVZpc2liaWxpdHlTdGF0ZSk7Ci0gICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCi19
Ci0KLUV3a19QYWdlX1Zpc2liaWxpdHlfU3RhdGUgZXdrX3ZpZXdfdmlzaWJpbGl0eV9zdGF0ZV9n
ZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCi17Ci0jaWYgRU5BQkxFKFBBR0VfVklTSUJJ
TElUWV9BUEkpCi0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERh
dGEsIEVXS19QQUdFX1ZJU0lCSUxJVFlfU1RBVEVfVklTSUJMRSk7Ci0gICAgRVdLX1ZJRVdfUFJJ
Vl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgRVdLX1BBR0VfVklTSUJJTElUWV9TVEFU
RV9WSVNJQkxFKTsKLQotCi0gICAgc3dpdGNoIChwcml2LT5wYWdlLT52aXNpYmlsaXR5U3RhdGUo
KSkgewotICAgIGNhc2UgV2ViQ29yZTo6UGFnZVZpc2liaWxpdHlTdGF0ZVZpc2libGU6Ci0gICAg
ICAgIHJldHVybiBFV0tfUEFHRV9WSVNJQklMSVRZX1NUQVRFX1ZJU0lCTEU7Ci0gICAgY2FzZSBX
ZWJDb3JlOjpQYWdlVmlzaWJpbGl0eVN0YXRlSGlkZGVuOgotICAgICAgICByZXR1cm4gRVdLX1BB
R0VfVklTSUJJTElUWV9TVEFURV9ISURERU47Ci0gICAgY2FzZSBXZWJDb3JlOjpQYWdlVmlzaWJp
bGl0eVN0YXRlUHJlcmVuZGVyOgotICAgICAgICByZXR1cm4gRVdLX1BBR0VfVklTSUJJTElUWV9T
VEFURV9QUkVSRU5ERVI7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgfQotI2Vsc2UKLSAgICBEQkcoIlBBR0VfVklTSUJJTElUWV9BUEkgaXMgZGlzYWJs
ZWQuIik7Ci0gICAgVU5VU0VEX1BBUkFNKGV3a1ZpZXcpOwotI2VuZGlmCi0KLSAgICByZXR1cm4g
RVdLX1BBR0VfVklTSUJJTElUWV9TVEFURV9WSVNJQkxFOwotfQotCi1FaW5hX0Jvb2wgZXdrX3Zp
ZXdfc2V0dGluZ19lbmFibGVfeHNzX2F1ZGl0b3JfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tW
aWV3KQotewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRh
LCBmYWxzZSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJp
diwgZmFsc2UpOwotICAgIHJldHVybiBwcml2LT5zZXR0aW5ncy5lbmFibGVYU1NBdWRpdG9yOwot
fQotCi12b2lkIGV3a192aWV3X3NldHRpbmdfZW5hYmxlX3hzc19hdWRpdG9yX3NldChFdmFzX09i
amVjdCogZXdrVmlldywgRWluYV9Cb29sIGVuYWJsZSkKLXsKLSAgICBFV0tfVklFV19TRF9HRVQo
ZXdrVmlldywgc21hcnREYXRhKTsKLSAgICBFV0tfVklFV19QUklWX0dFVChzbWFydERhdGEsIHBy
aXYpOwotICAgIGVuYWJsZSA9ICEhZW5hYmxlOwotICAgIGlmIChwcml2LT5zZXR0aW5ncy5lbmFi
bGVYU1NBdWRpdG9yICE9IGVuYWJsZSkgewotICAgICAgICBwcml2LT5wYWdlLT5zZXR0aW5ncygp
LnNldFhTU0F1ZGl0b3JFbmFibGVkKGVuYWJsZSk7Ci0gICAgICAgIHByaXYtPnNldHRpbmdzLmVu
YWJsZVhTU0F1ZGl0b3IgPSBlbmFibGU7Ci0gICAgfQotfQotCi1FaW5hX0Jvb2wgZXdrX3ZpZXdf
c2V0dGluZ19zaG91bGRfZGlzcGxheV9zdWJ0aXRsZXNfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpl
d2tWaWV3KQotewotI2lmIEVOQUJMRShWSURFT19UUkFDSykKLSAgICBFV0tfVklFV19TRF9HRVRf
T1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwotICAgIEVXS19WSUVXX1BSSVZf
R0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKLSAgICByZXR1cm4gcHJpdi0+
c2V0dGluZ3Muc2hvdWxkRGlzcGxheVN1YnRpdGxlczsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFN
KGV3a1ZpZXcpOwotICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgotfQotCi1FaW5hX0Jvb2wgZXdr
X3ZpZXdfc2V0dGluZ19zaG91bGRfZGlzcGxheV9jYXB0aW9uc19nZXQoY29uc3QgRXZhc19PYmpl
Y3QgKmV3a1ZpZXcpCi17Ci0jaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotICAgIEVXS19WSUVXX1NE
X0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7Ci0gICAgRVdLX1ZJRVdf
UFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwotICAgIHJldHVybiBw
cml2LT5zZXR0aW5ncy5zaG91bGREaXNwbGF5Q2FwdGlvbnM7Ci0jZWxzZQotICAgIFVOVVNFRF9Q
QVJBTShld2tWaWV3KTsKLSAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYKLX0KLQotdm9pZCBld2tf
dmlld19zZXR0aW5nX3Nob3VsZF9kaXNwbGF5X2NhcHRpb25zX3NldChFdmFzX09iamVjdCAqZXdr
VmlldywgRWluYV9Cb29sIGVuYWJsZSkKLXsKLSNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi0gICAg
RVdLX1ZJRVdfU0RfR0VUKGV3a1ZpZXcsIHNtYXJ0RGF0YSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9H
RVQoc21hcnREYXRhLCBwcml2KTsKLSAgICBlbmFibGUgPSAhIWVuYWJsZTsKLSAgICBpZiAocHJp
di0+c2V0dGluZ3Muc2hvdWxkRGlzcGxheUNhcHRpb25zICE9IGVuYWJsZSkgewotICAgICAgICBw
cml2LT5wYWdlLT5zZXR0aW5ncygpLnNldFNob3VsZERpc3BsYXlDYXB0aW9ucyhlbmFibGUpOwot
ICAgICAgICBwcml2LT5zZXR0aW5ncy5zaG91bGREaXNwbGF5Q2FwdGlvbnMgPSBlbmFibGU7Ci0g
ICAgfQotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oZXdrVmlldyk7Ci0gICAgVU5VU0VEX1BBUkFN
KGVuYWJsZSk7Ci0jZW5kaWYKLX0KLQotdm9pZCBld2tfdmlld19zZXR0aW5nX3Nob3VsZF9kaXNw
bGF5X3N1YnRpdGxlc19zZXQoRXZhc19PYmplY3QgKmV3a1ZpZXcsIEVpbmFfQm9vbCBlbmFibGUp
Ci17Ci0jaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotICAgIEVXS19WSUVXX1NEX0dFVChld2tWaWV3
LCBzbWFydERhdGEpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUKHNtYXJ0RGF0YSwgcHJpdik7Ci0g
ICAgZW5hYmxlID0gISFlbmFibGU7Ci0gICAgaWYgKHByaXYtPnNldHRpbmdzLnNob3VsZERpc3Bs
YXlTdWJ0aXRsZXMgIT0gZW5hYmxlKSB7Ci0gICAgICAgIHByaXYtPnBhZ2UtPnNldHRpbmdzKCku
c2V0U2hvdWxkRGlzcGxheVN1YnRpdGxlcyhlbmFibGUpOwotICAgICAgICBwcml2LT5zZXR0aW5n
cy5zaG91bGREaXNwbGF5U3VidGl0bGVzID0gZW5hYmxlOwotICAgIH0KLSNlbHNlCi0gICAgVU5V
U0VEX1BBUkFNKGV3a1ZpZXcpOwotICAgIFVOVVNFRF9QQVJBTShlbmFibGUpOwotI2VuZGlmCi19
Ci0KLUVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX3Nob3VsZF9kaXNwbGF5X3RleHRfZGVzY3Jp
cHRpb25zX2dldChjb25zdCBFdmFzX09iamVjdCAqZXdrVmlldykKLXsKLSNpZiBFTkFCTEUoVklE
RU9fVFJBQ0spCi0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERh
dGEsIGZhbHNlKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBw
cml2LCBmYWxzZSk7Ci0gICAgcmV0dXJuIHByaXYtPnNldHRpbmdzLnNob3VsZERpc3BsYXlUZXh0
RGVzY3JpcHRpb25zOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oZXdrVmlldyk7Ci0gICAgcmV0
dXJuIGZhbHNlOwotI2VuZGlmCi19Ci0KLXZvaWQgZXdrX3ZpZXdfc2V0dGluZ19zaG91bGRfZGlz
cGxheV90ZXh0X2Rlc2NyaXB0aW9uc19zZXQoRXZhc19PYmplY3QgKmV3a1ZpZXcsIEVpbmFfQm9v
bCBlbmFibGUpCi17Ci0jaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotICAgIEVXS19WSUVXX1NEX0dF
VChld2tWaWV3LCBzbWFydERhdGEpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUKHNtYXJ0RGF0YSwg
cHJpdik7Ci0gICAgZW5hYmxlID0gISFlbmFibGU7Ci0gICAgaWYgKHByaXYtPnNldHRpbmdzLnNo
b3VsZERpc3BsYXlUZXh0RGVzY3JpcHRpb25zICE9IGVuYWJsZSkgewotICAgICAgICBwcml2LT5w
YWdlLT5zZXR0aW5ncygpLnNldFNob3VsZERpc3BsYXlUZXh0RGVzY3JpcHRpb25zKGVuYWJsZSk7
Ci0gICAgICAgIHByaXYtPnNldHRpbmdzLnNob3VsZERpc3BsYXlUZXh0RGVzY3JpcHRpb25zID0g
ZW5hYmxlOwotICAgIH0KLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGV3a1ZpZXcpOwotICAgIFVO
VVNFRF9QQVJBTShlbmFibGUpOwotI2VuZGlmCi19Ci0KLXZvaWQgZXdrX3ZpZXdfaW5zcGVjdG9y
X3Nob3coY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCi17Ci0jaWYgRU5BQkxFKElOU1BFQ1RP
UikKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSk7Ci0g
ICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdik7Ci0KLSAgICBw
cml2LT5wYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2hvdygpOwotI2Vsc2UKLSAgICBVTlVT
RURfUEFSQU0oZXdrVmlldyk7Ci0jZW5kaWYKLX0KLQotdm9pZCBld2tfdmlld19pbnNwZWN0b3Jf
Y2xvc2UoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCi17Ci0jaWYgRU5BQkxFKElOU1BFQ1RP
UikKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSk7Ci0g
ICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdik7Ci0KLSAgICBw
cml2LT5wYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuY2xvc2UoKTsKLSNlbHNlCi0gICAgVU5V
U0VEX1BBUkFNKGV3a1ZpZXcpOwotI2VuZGlmCi19Ci0KLUV2YXNfT2JqZWN0KiBld2tfdmlld19p
bnNwZWN0b3Jfdmlld19nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCi17Ci0jaWYgRU5B
QkxFKElOU1BFQ1RPUikKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNt
YXJ0RGF0YSwgMCk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwg
cHJpdiwgMCk7Ci0KLSAgICByZXR1cm4gcHJpdi0+aW5zcGVjdG9yVmlldzsKLSNlbHNlCi0gICAg
VU5VU0VEX1BBUkFNKGV3a1ZpZXcpOwotICAgIHJldHVybiAwOwotI2VuZGlmCi19Ci0KLXZvaWQg
ZXdrX3ZpZXdfaW5zcGVjdG9yX3ZpZXdfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFdmFzX09i
amVjdCogaW5zcGVjdG9yVmlldykKLXsKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIEVXS19W
SUVXX1NEX0dFVChld2tWaWV3LCBzbWFydERhdGEpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUKHNt
YXJ0RGF0YSwgcHJpdik7Ci0KLSAgICBwcml2LT5pbnNwZWN0b3JWaWV3ID0gaW5zcGVjdG9yVmll
dzsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGV3a1ZpZXcpOwotICAgIFVOVVNFRF9QQVJBTShp
bnNwZWN0b3JWaWV3KTsKLSNlbmRpZgotfQotCi12b2lkIGV3a192aWV3X3Jvb3RfZ3JhcGhpY3Nf
bGF5ZXJfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBXZWJDb3JlOjpHcmFwaGljc0xheWVyKiBy
b290TGF5ZXIpCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFy
dERhdGEpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYp
OwotCi0gICAgcHJpdi0+YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQtPnNldFJvb3RHcmFw
aGljc0xheWVyKHJvb3RMYXllcik7Ci19Ci0KLXZvaWQgZXdrX3ZpZXdfbWFya19mb3Jfc3luYyhF
dmFzX09iamVjdCogZXdrVmlldykKLXsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3
a1ZpZXcsIHNtYXJ0RGF0YSk7Ci0KLSAgICAvLyBNYXJrIHRoZSBpbWFnZSBhcyAiZGlydHkiIG1l
YW5pbmcgaXQgbmVlZHMgYW4gdXBkYXRlIG5leHQgdGltZSBldmFzIHJlbmRlcnMuCi0gICAgLy8g
SXQgd2lsbCBjYWxsIHRoZSBwaXhlbCBnZXQgY2FsbGJhY2sgdGhlbi4KLSAgICBldmFzX29iamVj
dF9pbWFnZV9waXhlbHNfZGlydHlfc2V0KHNtYXJ0RGF0YS0+aW1hZ2UsIHRydWUpOwotfQotCi12
b2lkIGV3a192aWV3X2ZvcmNlX3BhaW50KEV2YXNfT2JqZWN0KiBld2tWaWV3KQotewotICAgIEVX
S19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhKTsKLSAgICBFV0tfVklF
V19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2KTsKLQotICAgIHByaXYtPmFjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LT5mbHVzaEFuZFJlbmRlckxheWVycygpOwotfQotCi12
b2lkIGV3a192aWV3X2N1cnNvcl9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IFdlYkNv
cmU6OkN1cnNvciYgY3Vyc29yKQotewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdr
Vmlldywgc21hcnREYXRhKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnRE
YXRhLCBwcml2KTsKLQotICAgIGNvbnN0IGNoYXIqIGdyb3VwID0gY3Vyc29yLnBsYXRmb3JtQ3Vy
c29yKCk7Ci0gICAgaWYgKCFncm91cCB8fCBncm91cCA9PSBwcml2LT5jdXJzb3JHcm91cCkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgcHJpdi0+Y3Vyc29yR3JvdXAgPSBncm91cDsKLQotICAgIGlm
IChwcml2LT5jdXJzb3JPYmplY3QpCi0gICAgICAgIGV2YXNfb2JqZWN0X2RlbChwcml2LT5jdXJz
b3JPYmplY3QpOwotICAgIHByaXYtPmN1cnNvck9iamVjdCA9IGVkamVfb2JqZWN0X2FkZChzbWFy
dERhdGEtPmJhc2UuZXZhcyk7Ci0KLSAgICBFY29yZV9FdmFzKiBlY29yZUV2YXMgPSBlY29yZV9l
dmFzX2Vjb3JlX2V2YXNfZ2V0KHNtYXJ0RGF0YS0+YmFzZS5ldmFzKTsKLSAgICBpZiAoIXByaXYt
PnNldHRpbmdzLnRoZW1lIHx8ICFlZGplX29iamVjdF9maWxlX3NldChwcml2LT5jdXJzb3JPYmpl
Y3QsIHByaXYtPnNldHRpbmdzLnRoZW1lLCBncm91cCkpIHsKLSAgICAgICAgZXZhc19vYmplY3Rf
ZGVsKHByaXYtPmN1cnNvck9iamVjdCk7Ci0gICAgICAgIHByaXYtPmN1cnNvck9iamVjdCA9IDA7
Ci0KLSAgICAgICAgZWNvcmVfZXZhc19vYmplY3RfY3Vyc29yX3NldChlY29yZUV2YXMsIDAsIDAs
IDAsIDApOwotI2lmZGVmIEhBVkVfRUNPUkVfWAotICAgICAgICBXZWJDb3JlOjphcHBseUZhbGxi
YWNrQ3Vyc29yKGVjb3JlRXZhcywgZ3JvdXApOwotI2VuZGlmCi0gICAgfSBlbHNlIHsKLSAgICAg
ICAgRXZhc19Db29yZCB3aWR0aCwgaGVpZ2h0OwotICAgICAgICBlZGplX29iamVjdF9zaXplX21p
bl9nZXQocHJpdi0+Y3Vyc29yT2JqZWN0LCAmd2lkdGgsICZoZWlnaHQpOwotICAgICAgICBpZiAo
d2lkdGggPD0gMCB8fCBoZWlnaHQgPD0gMCkKLSAgICAgICAgICAgIGVkamVfb2JqZWN0X3NpemVf
bWluX2NhbGMocHJpdi0+Y3Vyc29yT2JqZWN0LCAmd2lkdGgsICZoZWlnaHQpOwotICAgICAgICBp
ZiAod2lkdGggPD0gMCB8fCBoZWlnaHQgPD0gMCkgewotICAgICAgICAgICAgd2lkdGggPSAxNjsK
LSAgICAgICAgICAgIGhlaWdodCA9IDE2OwotICAgICAgICB9Ci0gICAgICAgIGV2YXNfb2JqZWN0
X3Jlc2l6ZShwcml2LT5jdXJzb3JPYmplY3QsIHdpZHRoLCBoZWlnaHQpOwotCi0gICAgICAgIGNv
bnN0IGNoYXIqIGRhdGE7Ci0gICAgICAgIGludCBob3RzcG90WCA9IDA7Ci0gICAgICAgIGRhdGEg
PSBlZGplX29iamVjdF9kYXRhX2dldChwcml2LT5jdXJzb3JPYmplY3QsICJob3QueCIpOwotICAg
ICAgICBpZiAoZGF0YSkKLSAgICAgICAgICAgIGhvdHNwb3RYID0gYXRvaShkYXRhKTsKLQotICAg
ICAgICBpbnQgaG90c3BvdFkgPSAwOwotICAgICAgICBkYXRhID0gZWRqZV9vYmplY3RfZGF0YV9n
ZXQocHJpdi0+Y3Vyc29yT2JqZWN0LCAiaG90LnkiKTsKLSAgICAgICAgaWYgKGRhdGEpCi0gICAg
ICAgICAgICBob3RzcG90WSA9IGF0b2koZGF0YSk7Ci0KLSAgICAgICAgZWNvcmVfZXZhc19vYmpl
Y3RfY3Vyc29yX3NldChlY29yZUV2YXMsIHByaXYtPmN1cnNvck9iamVjdCwgRVZBU19MQVlFUl9N
QVgsIGhvdHNwb3RYLCBob3RzcG90WSk7Ci0gICAgfQotfQotCi1FaW5hX0Jvb2wgZXdrX3ZpZXdf
c2V0dGluZ19lbmFibGVfZnVsbHNjcmVlbl9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcp
Ci17Ci0jaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9S
RVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRf
T1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwotICAgIHJldHVybiBwcml2LT5zZXR0
aW5ncy5lbmFibGVGdWxsc2NyZWVuOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oZXdrVmlldyk7
Ci0gICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCi19Ci0KLUVpbmFfQm9vbCBld2tfdmlld19zZXR0
aW5nX2VuYWJsZV9mdWxsc2NyZWVuX3NldChFdmFzX09iamVjdCogZXdrVmlldywgRWluYV9Cb29s
IGVuYWJsZSkKLXsKLSNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCi0gICAgRVdLX1ZJRVdfU0Rf
R0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKLSAgICBFV0tfVklFV19Q
UklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBmYWxzZSk7Ci0gICAgZW5hYmxlID0g
ISFlbmFibGU7Ci0gICAgaWYgKHByaXYtPnNldHRpbmdzLmVuYWJsZUZ1bGxzY3JlZW4gIT0gZW5h
YmxlKSB7Ci0gICAgICAgIHByaXYtPnBhZ2UtPnNldHRpbmdzKCkuc2V0RnVsbFNjcmVlbkVuYWJs
ZWQoZW5hYmxlKTsKLSAgICAgICAgcHJpdi0+c2V0dGluZ3MuZW5hYmxlRnVsbHNjcmVlbiA9IGVu
YWJsZTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShl
d2tWaWV3KTsKLSAgICBVTlVTRURfUEFSQU0oZW5hYmxlKTsKLSAgICByZXR1cm4gZmFsc2U7Ci0j
ZW5kaWYKLX0KLQotI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKLS8qKgotICogQGludGVybmFs
Ci0gKiBDYWxscyBmdWxsc2NyZWVuX2VudGVyIGNhbGxiYWNrIG9yIGZhbGxzIGJhY2sgdG8gZGVm
YXVsdCBiZWhhdmlvciBhbmQgZW5hYmxlcyBmdWxsc2NyZWVuIG1vZGUuCi0gKi8KLXZvaWQgZXdr
X3ZpZXdfZnVsbHNjcmVlbl9lbnRlcihjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKLXsKLSAg
ICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSk7Ci0KLSAgICBp
ZiAoIXNtYXJ0RGF0YS0+YXBpLT5mdWxsc2NyZWVuX2VudGVyIHx8ICFzbWFydERhdGEtPmFwaS0+
ZnVsbHNjcmVlbl9lbnRlcihzbWFydERhdGEpKSB7Ci0gICAgICAgIEVjb3JlX0V2YXMqIGVjb3Jl
RXZhcyA9IGVjb3JlX2V2YXNfZWNvcmVfZXZhc19nZXQoc21hcnREYXRhLT5iYXNlLmV2YXMpOwot
ICAgICAgICBlY29yZV9ldmFzX2Z1bGxzY3JlZW5fc2V0KGVjb3JlRXZhcywgdHJ1ZSk7Ci0gICAg
fQotfQotCi0vKioKLSAqIEBpbnRlcm5hbAotICogQ2FsbHMgZnVsbHNjcmVlbl9leGl0IGNhbGxi
YWNrIG9yIGZhbGxzIGJhY2sgdG8gZGVmYXVsdCBiZWhhdmlvciBhbmQgZGlzYWJsZXMgZnVsbHNj
cmVlbiBtb2RlLgotICovCi12b2lkIGV3a192aWV3X2Z1bGxzY3JlZW5fZXhpdChjb25zdCBFdmFz
X09iamVjdCogZXdrVmlldykKLXsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1Zp
ZXcsIHNtYXJ0RGF0YSk7Ci0KLSAgICBpZiAoIXNtYXJ0RGF0YS0+YXBpLT5mdWxsc2NyZWVuX2V4
aXQgfHwgIXNtYXJ0RGF0YS0+YXBpLT5mdWxsc2NyZWVuX2V4aXQoc21hcnREYXRhKSkgewotICAg
ICAgICBFY29yZV9FdmFzKiBlY29yZUV2YXMgPSBlY29yZV9ldmFzX2Vjb3JlX2V2YXNfZ2V0KHNt
YXJ0RGF0YS0+YmFzZS5ldmFzKTsKLSAgICAgICAgZWNvcmVfZXZhc19mdWxsc2NyZWVuX3NldChl
Y29yZUV2YXMsIGZhbHNlKTsKLSAgICB9Ci19Ci0jZW5kaWYKLQotRXdrX0NvbnRleHRfTWVudSog
ZXdrX3ZpZXdfY29udGV4dF9tZW51X2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKLXsK
LSNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJO
KGV3a1ZpZXcsIHNtYXJ0RGF0YSwgMCk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJO
KHNtYXJ0RGF0YSwgcHJpdiwgMCk7Ci0KLSAgICByZXR1cm4gcHJpdi0+Y29udGV4dE1lbnU7Ci0j
ZWxzZQotICAgIFVOVVNFRF9QQVJBTShld2tWaWV3KTsKLSAgICByZXR1cm4gMDsKLSNlbmRpZgot
fQotCi1FdmFzX09iamVjdCogZXdrX3ZpZXdfc2NyZWVuc2hvdF9jb250ZW50c19nZXQoY29uc3Qg
RXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IEVpbmFfUmVjdGFuZ2xlKiBhcmVhKQotewotICAg
IGlmICghYXJlYSB8fCAhYXJlYS0+dyB8fCAhYXJlYS0+aCkgewotICAgICAgICBFUlIoImVtcHR5
IGFyZWEgaXMgbm90IGFsbG93ZWQiKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAg
RVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIDApOwotICAgIEVX
S19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIDApOwotCi0gICAgRXZh
cyogY2FudmFzID0gZXZhc19vYmplY3RfZXZhc19nZXQoZXdrVmlldyk7Ci0gICAgRUlOQV9TQUZF
VFlfT05fTlVMTF9SRVRVUk5fVkFMKGNhbnZhcywgMCk7Ci0KLSAgICBFdmFzX09iamVjdCogc2Ny
ZWVuc2hvdEltYWdlID0gZXZhc19vYmplY3RfaW1hZ2VfYWRkKGNhbnZhcyk7Ci0gICAgZXZhc19v
YmplY3RfaW1hZ2Vfc2l6ZV9zZXQoc2NyZWVuc2hvdEltYWdlLCBhcmVhLT53LCBhcmVhLT5oKTsK
LSAgICBldmFzX29iamVjdF9pbWFnZV9maWxsX3NldChzY3JlZW5zaG90SW1hZ2UsIDAsIDAsIGFy
ZWEtPncsIGFyZWEtPmgpOwotICAgIGV2YXNfb2JqZWN0X3Jlc2l6ZShzY3JlZW5zaG90SW1hZ2Us
IGFyZWEtPncsIGFyZWEtPmgpOwotICAgIGV2YXNfb2JqZWN0X2ltYWdlX2NvbG9yc3BhY2Vfc2V0
KHNjcmVlbnNob3RJbWFnZSwgRVZBU19DT0xPUlNQQUNFX0FSR0I4ODg4KTsKLQotICAgIHByaXYt
PmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LT5leHRyYWN0SW1hZ2VEYXRhKHNjcmVlbnNo
b3RJbWFnZSwgV2ViQ29yZTo6SW50UmVjdCgqYXJlYSkpOwotCi0gICAgcmV0dXJuIHNjcmVlbnNo
b3RJbWFnZTsKLX0KLQotbmFtZXNwYWNlIEVXS1ByaXZhdGUgewotCi1XZWJDb3JlOjpQYWdlKiBj
b3JlUGFnZShjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKLXsKLSAgICBFV0tfVklFV19TRF9H
RVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgMCk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9H
RVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgMCk7Ci0gICAgcmV0dXJuIHByaXYtPnBhZ2Uu
Z2V0KCk7Ci19Ci0KLVdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiogc3RvcmFnZVNlc3Np
b24oY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09S
X1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIDApOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09S
X1JFVFVSTihzbWFydERhdGEsIHByaXYsIDApOwotICAgIHJldHVybiAmV2ViQ29yZTo6TmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKTsKLX0KLQotfSAvLyBuYW1l
c3BhY2UgRVdLUHJpdmF0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192
aWV3LmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMTkzOGQwZS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9l
d2svZXdrX3ZpZXcuaAorKysgL2Rldi9udWxsCkBAIC0xLDI0ODIgKzAsMCBAQAotLyoKLSAgICBD
b3B5cmlnaHQgKEMpIDIwMDktMjAxMCBQcm9GVVNJT04gZW1iZWRkZWQgc3lzdGVtcwotICAgIENv
cHlyaWdodCAoQykgMjAwOS0yMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKLSAgICBDb3B5cmlnaHQg
KEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24KLQotICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAgICBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICAgIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgot
ICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KLQotICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gICAgTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAgICBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLQotICAgIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKLSAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxl
IENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gICAgQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0qLwotCi0vKioKLSAqIEBmaWxlICAgIGV3a192aWV3
LmgKLSAqIEBicmllZiAgIFdlYktpdCBtYWluIHNtYXJ0IG9iamVjdC4KLSAqCi0gKiBUaGlzIG9i
amVjdCBhbGxvd3MgdGhlIGhpZ2ggbGV2ZWwgYWNjZXNzIHRvIFdlYktpdC1FRkwgY29tcG9uZW50
LgotICogSXQgaXMgcmVzcG9uc2libGUgZm9yIG1hbmFnaW5nIHRoZSBtYWluIGZyYW1lIGFuZCBv
dGhlcgotICogY3JpdGljYWwgcmVzb3VyY2VzLgotICoKLSAqIEV2ZXJ5IGV3a192aWV3IGhhcyBh
dCBsZWFzdCBvbmUgZnJhbWUsIGNhbGxlZCAibWFpbiBmcmFtZSIgYW5kCi0gKiByZXRyaWV2ZWQg
d2l0aCBld2tfdmlld19mcmFtZV9tYWluX2dldCgpLiBEaXJlY3QgZnJhbWUgYWNjZXNzIGlzCi0g
KiBvZnRlbiBkaXNjb3VyYWdlZCwgaXQgaXMgcmVjb21tZW5kZWQgdG8gdXNlIGV3a192aWV3IGZ1
bmN0aW9ucwotICogaW5zdGVhZC4KLSAqCi0gKiBUaGUgZm9sbG93aW5nIHNpZ25hbHMgKHNlZSBl
dmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQoKSkgYXJlIGVtaXR0ZWQ6Ci0gKgotICogIC0g
ImNvbG9yY2hvb3NlcixjcmVhdGUiLCBFd2tfQ29sb3I6IGEgbmV3IGNvbG9yIGNob29zZXIgc2hv
dWxkIGJlIGNyZWF0ZWQuCi0gKiAgLSAiY29sb3JjaG9vc2VyLHdpbGxkZWxldGUiLCB2b2lkOiBy
ZXBvcnRzIHRoYXQgYSBwcmV2aW91c2x5IGNyZWF0ZWQgY29sb3IKLSAqICAgIGNob29zZXIgd2ls
bCBiZSBkZWxldGVkLgotICogIC0gImNvbG9yY2hvb3Nlcixjb2xvcixjaGFuZ2VkIiwgRXdrX0Nv
bG9yOiB0aGUgdmFsdWUgYXQgdGhlIGNvbG9yIGlucHV0IHdpZGdldAotICogICAgY29ycmVzcG9u
ZGluZyB0byB0aGUgY29sb3IgY2hvb3NlciBoYXMgY2hhbmdlZC4KLSAqICAtICJkb3dubG9hZCxy
ZXF1ZXN0IiwgRXdrX0Rvd25sb2FkOiByZXBvcnRzIGEgZG93bmxvYWQgaXMgYmVpbmcgcmVxdWVz
dGVkCi0gKiAgLSAiZWRpdG9yY2xpZW50LGNvbnRlbnRzLGNoYW5nZWQiLCB2b2lkOiByZXBvcnRz
IHRvIHRoZSB2aWV3IHRoYXQgZWRpdG9yCi0gKiAgICBjbGllbnQncyBjb250ZW50cyB3ZXJlIGNo
YW5nZWQKLSAqICAtICJmcmFtZSxjcmVhdGVkIiwgRXZhc19PYmplY3QqOiBhIG5ldyBmcmFtZSBp
cyBjcmVhdGVkLgotICogIC0gImljb24scmVjZWl2ZWQiLCB2b2lkOiBtYWluIGZyYW1lIHJlY2Vp
dmVkIGFuIGljb24uCi0gKiAgLSAiaW5wdXRtZXRob2QsY2hhbmdlZCIsIEVpbmFfQm9vbDogcmVw
b3J0cyB0aGF0IGlucHV0IG1ldGhvZCB3YXMgY2hhbmdlZCBhbmQKLSAqICAgIGl0IGdpdmVzIGEg
Ym9vbGVhbiB2YWx1ZSB3aGV0aGVyIGl0J3MgZW5hYmxlZCBvciBub3QgYXMgYW4gYXJndW1lbnQu
Ci0gKiAgLSAiaW5zcGVjdG9yLHZpZXcsY2xvc2UiLCBFdmFzX09iamVjdCo6IHJlcXVlc3QgdG8g
Y2xvc2UgdGhlIHZpZXcgZm9yIGluc3BlY3Rvci4KLSAqICAtICJpbnNwZWN0b3IsdmlldyxjcmVh
dGUiLCB2b2lkOiByZXF1ZXN0IHRvIGNyZWF0ZSB0aGUgbmV3IHZpZXcgZm9yIGluc3BlY3Rvci4K
LSAqICAtICJqcyx3aW5kb3dvYmplY3QsY2xlYXIiLCB2b2lkOiBSZXBvcnQgdGhhdCB0aGUgSlMg
d2luZG93IG9iamVjdCBoYXMgYmVlbiBjbGVhcmVkLgotICogIC0gImxpbmssaG92ZXIsaW4iLCBj
b25zdCBjaGFyICpsaW5rWzJdOiByZXBvcnRzIG1vdXNlIGlzIG92ZXIgYSBsaW5rLgotICogICAg
SXQgZ2l2ZXMgdGhlIHVybCBpbiBsaW5rWzBdIGFuZCBsaW5rJ3MgdGl0bGUgaW4gbGlua1sxXSBh
cyBhbiBhcmd1bWVudC4KLSAqICAtICJsaW5rLGhvdmVyLG91dCIsIHZvaWQ6IHJlcG9ydHMgbW91
c2UgbW92ZWQgb3V0IGZyb20gYSBsaW5rLgotICogIC0gImxvYWQsZG9jdW1lbnQsZmluaXNoZWQi
LCBFdmFzX09iamVjdCo6IGEgRE9NIGRvY3VtZW50IG9iamVjdCBpbiBhIGZyYW1lIGhhcyBmaW5p
c2hlZCBsb2FkaW5nLgotICogIC0gImxvYWQsZXJyb3IiLCBjb25zdCBFd2tfRnJhbWVfTG9hZF9F
cnJvcio6IHJlcG9ydHMgbG9hZCBmYWlsZWQKLSAqICAtICJsb2FkLGZpbmlzaGVkIiwgY29uc3Qg
RXdrX0ZyYW1lX0xvYWRfRXJyb3IqOiByZXBvcnRzIGxvYWQKLSAqICAgIGZpbmlzaGVkIGFuZCBp
dCBnaXZlcyBAYyBOVUxMIG9uIHN1Y2Nlc3Mgb3IgcG9pbnRlciB0bwotICogICAgc3RydWN0dXJl
IGRlZmluaW5nIHRoZSBlcnJvci4KLSAqICAtICJsb2FkLG5ld3dpbmRvdyxzaG93Iiwgdm9pZDog
cmVwb3J0cyB0aGF0IGEgbmV3IHdpbmRvdyB3YXMgY3JlYXRlZCBhbmQgY2FuIGJlIHNob3duLgot
ICogICAgYW5kIGl0IGdpdmVzIGEgcG9pbnRlciB0byBzdHJ1Y3R1cmUgZGVmaW5pbmcgdGhlIGVy
cm9yIGFzIGFuIGFyZ3VtZW50LgotICogIC0gImxvYWQscHJvZ3Jlc3MiLCBkb3VibGUqOiBsb2Fk
IHByb2dyZXNzIGlzIGNoYW5nZWQgKG92ZXJhbGwgdmFsdWUKLSAqICAgIGZyb20gMC4wIHRvIDEu
MCwgY29ubmVjdCB0byBpbmRpdmlkdWFsIGZyYW1lcyBmb3IgZmluZSBncmFpbmVkKS4KLSAqICAt
ICJsb2FkLHByb3Zpc2lvbmFsIiwgdm9pZDogdmlldyBzdGFydGVkIHByb3Zpc2lvbmFsIGxvYWQu
Ci0gKiAgLSAibG9hZCxwcm92aXNpb25hbCxmYWlsZWQiLCBFd2tfRnJhbWVfTG9hZF9FcnJvcio6
IHZpZXcgcHJvdmlzaW9uYWwgbG9hZCBmYWlsZWQuCi0gKiAgLSAibG9hZCxyZXNvdXJjZSxmaW5p
c2hlZCIsIHVuc2lnbmVkIGxvbmcqOiByZXBvcnRzIHJlc291cmNlIGxvYWQgZmluaXNoZWQgYW5k
IGl0IGdpdmVzCi0gKiAgICBhIHBvaW50ZXIgdG8gaXRzIGlkZW50aWZpZXIuCi0gKiAgLSAibG9h
ZCxyZXNvdXJjZSxmYWlsZWQiLCBFd2tfRnJhbWVfTG9hZF9FcnJvcio6IHJlcG9ydHMgcmVzb3Vy
Y2UgbG9hZCBmYWlsdXJlIGFuZCBpdAotICogICAgZ2l2ZXMgYSBwb2ludGVyIHRvIHN0cnVjdHVy
ZSBkZWZpbmluZyB0aGUgZXJyb3IgYXMgYW4gYXJndW1lbnQuCi0gKiAgLSAibG9hZCxzdGFydGVk
IiwgRXZhc19PYmplY3QqOiBmcmFtZSBzdGFydGVkIGxvYWRpbmcgdGhlIGRvY3VtZW50LgotICog
IC0gIm1lbnViYXIsdmlzaWJsZSxnZXQiLCBFaW5hX0Jvb2wgKjogZXhwZWN0cyBhIEBjIEVJTkFf
VFJVRSBpZiBtZW51YmFyIGlzCi0gKiAgICB2aXNpYmxlOyBAYyBFSU5BX0ZBTFNFLCBvdGhlcndp
c2UuCi0gKiAgLSAibWVudWJhcix2aXNpYmxlLHNldCIsIEVpbmFfQm9vbDogc2V0cyBtZW51YmFy
IHZpc2liaWxpdHkuCi0gKiAgLSAibWl4ZWRjb250ZW50LGRpc3BsYXllZCIsIHZvaWQ6IGFueSBv
ZiB0aGUgY29udGFpbmluZyBmcmFtZXMgaGFzIGxvYWRlZCBhbmQgZGlzcGxheWVkIG1peGVkIGNv
bnRlbnQuCi0gKiAgLSAibWl4ZWRjb250ZW50LHJ1biIsIHZvaWQ6IGFueSBvZiB0aGUgY29udGFp
bmluZyBmcmFtZXMgaGFzIGxvYWRlZCBhbmQgcnVuIG1peGVkIGNvbnRlbnQuCi0gKiAgLSAibmF2
aWdhdGUsd2l0aCxkYXRhIiwgRXdrX1ZpZXdfTmF2aWdhdGlvbl9EYXRhKjogcmVwb3J0cyB0aGF0
IHZpZXcgZGlkIG5hdmlnYXRpb24gYW5kIGdpdmVzIHRoZSBuYXZpZ2F0aW9uIGRldGFpbHMuCi0g
KiAgLSAicGVyZm9ybSxjbGllbnQscmVkaXJlY3QiLCBFd2tfVmlld19SZWRpcmVjdGlvbl9EYXRh
KjogcmVwb3J0cyB0aGF0IHZpZXcgcGVyZm9ybWVkIGEgY2xpZW50IHJlZGlyZWN0IGFuZCBnaXZl
cyB0aGUgcmVkaXJlY3Rpb24gZGV0YWlscy4KLSAqICAtICJwZXJmb3JtLHNlcnZlcixyZWRpcmVj
dCIsIEV3a19WaWV3X1JlZGlyZWN0aW9uX0RhdGEqOiByZXBvcnRzIHRoYXQgdmlldyBwZXJmb3Jt
ZWQgYSBzZXJ2ZXIgcmVkaXJlY3QgYW5kIGdpdmVzIHRoZSByZWRpcmVjdGlvbiBkZXRhaWxzLgot
ICogIC0gInByb3RvY29saGFuZGxlcixyZWdpc3RyYXRpb24scmVxdWVzdGVkIiwgRXdrX0N1c3Rv
bV9IYW5kbGVyX0RhdGE6IGFkZCBhIGhhbmRsZXIgdXJsIGZvciB0aGUgZ2l2ZW4gcHJvdG9jb2wu
Ci0gKiAgLSAicHJvdG9jb2xoYW5kbGVyLGlzcmVnaXN0ZXJlZCIsIEV3a19DdXN0b21fSGFuZGxl
cl9EYXRhOiBxdWVyeSB3aGV0aGVyIHRoZSBoYW5kbGVyIGlzIHJlZ2lzdGVyZWQgb3Igbm90Lgot
ICogIC0gInByb3RvY29saGFuZGxlcix1bnJlZ2lzdHJhdGlvbixyZXF1ZXN0ZWQiLCBFd2tfQ3Vz
dG9tX0hhbmRsZXJfRGF0YTogcmVtb3ZlIGEgaGFuZGxlciB1cmwgZm9yIHRoZSBnaXZlbiBwcm90
b2NvbC4KLSAqICAtICJvbmxvYWQsZXZlbnQiLCBFdmFzX09iamVjdCo6IGEgZnJhbWUgb25sb2Fk
IGV2ZW50IGhhcyBiZWVuIHJlY2VpdmVkLgotICogIC0gInBvcHVsYXRlLHZpc2l0ZWQsbGlua3Mi
OiB0ZWxscyB0aGUgY2xpZW50IHRvIGZpbGwgdGhlIHZpc2l0ZWQgbGlua3Mgc2V0LgotICogIC0g
InJlYWR5Iiwgdm9pZDogcGFnZSBpcyBmdWxseSBsb2FkZWQuCi0gKiAgLSAicmVzb3VyY2UscmVx
dWVzdCxuZXciLCBFd2tfRnJhbWVfUmVzb3VyY2VfUmVxdWVzdCo6IHJlcG9ydHMgdGhhdAotICog
ICAgdGhlcmUncyBhIG5ldyByZXNvdXJjZSByZXF1ZXN0LgotICogIC0gInJlc291cmNlLHJlcXVl
c3Qsd2lsbHNlbmQiLCBFd2tfRnJhbWVfUmVzb3VyY2VfTWVzc2FnZXMqOiBhIHJlc291cmNlIHdp
bGwgYmUgcmVxdWVzdGVkLgotICogICAgYW5kIHRoZSBwb3NzaWJsZSByZWRpcmVjdCByZXNwb25z
ZS4KLSAqICAtICJyZXNvdXJjZSxyZXNwb25zZSxyZWNlaXZlZCIsIEV3a19GcmFtZV9SZXNvdXJj
ZV9SZXNwb25zZSo6IHRoZSBuZXR3b3JrIHJlc3BvbnNlIGZvciBhIHJlc291cmNlLgotICogIC0g
InNjcm9sbGJhcnMsdmlzaWJsZSxnZXQiLCBFaW5hX0Jvb2wgKjogZXhwZWN0cyBhIEBjIEVJTkFf
VFJVRSBpZiBzY3JvbGxiYXJzCi0gKiAgICBhcmUgdmlzaWJsZTsgQGMgRUlOQV9GQUxTRSwgb3Ro
ZXJ3aXNlLgotICogIC0gInNjcm9sbGJhcnMsdmlzaWJsZSxzZXQiLCBFaW5hX0Jvb2w6IHNldHMg
c2Nyb2xsYmFycyB2aXNpYmlsaXR5LgotICogIC0gInN0YXR1c2Jhcix0ZXh0LHNldCIsIGNvbnN0
IGNoYXIgKjogc2V0cyBzdGF0dXNiYXIgdGV4dC4KLSAqICAtICJzdGF0dXNiYXIsdmlzaWJsZSxn
ZXQiLCBFaW5hX0Jvb2wgKjogZXhwZWN0cyBhIEBjIEVJTkFfVFJVRSBpZiBzdGF0dXNiYXIgaXMK
LSAqICAgIHZpc2libGU7IEBjIEVJTkFfRkFMU0UsIG90aGVyd2lzZS4KLSAqICAtICJzdGF0dXNi
YXIsdmlzaWJsZSxzZXQiLCBFaW5hX0Jvb2w6IHNldHMgc3RhdHVzYmFyIHZpc2liaWxpdHkuCi0g
KiAgLSAidGl0bGUsY2hhbmdlZCIsIEV3a19UZXh0X1dpdGhfRGlyZWN0aW9uKjogdGl0bGUgb2Yg
dGhlIG1haW4gZnJhbWUgd2FzIGNoYW5nZWQuCi0gKiAgLSAidG9vbGJhcnMsdmlzaWJsZSxnZXQi
LCBFaW5hX0Jvb2wgKjogZXhwZWN0cyBhIEBjIEVJTkFfVFJVRSBpZiB0b29sYmFyCi0gKiAgICBp
cyB2aXNpYmxlOyBAYyBFSU5BX0ZBTFNFLCBvdGhlcndpc2UuCi0gKiAgLSAidG9vbGJhcnMsdmlz
aWJsZSxzZXQiLCBFaW5hX0Jvb2w6IHNldHMgdG9vbGJhciB2aXNpYmlsaXR5LgotICogIC0gInBv
cHVwLGNyZWF0ZSIsIEV3a19NZW51OiByZXBvcnRzIHRoYXQgYSBuZXcgbWVudSB3YXMgY3JlYXRl
ZC4KLSAqICAtICJwb3B1cCx3aWxsZGVsZXRlZCIsIEV3a19NZW51OiByZXBvcnRzIHRoYXQgYSBw
cmV2aW91c2x5IGNyZWF0ZWQgbWVudQotICogICAgd2lsbCBiZSBkZWxldGVkLgotICogIC0gInJl
c3RvcmUiLCBFdmFzX09iamVjdCAqOiByZXBvcnRzIHRoYXQgdmlldyBzaG91bGQgYmUgcmVzdG9y
ZWQgdG8gZGVmYXVsdCBjb25kaXRpb25zCi0gKiAgICBhbmQgaXQgZ2l2ZXMgYSBmcmFtZSB0aGF0
IG9yaWdpbmF0ZWQgcmVzdG9yZSBhcyBhbiBhcmd1bWVudC4KLSAqICAtICJ0b29sdGlwLHRleHQs
c2V0IiwgY29uc3QgY2hhcio6IHRvb2x0aXAgd2FzIHNldC4KLSAqICAtICJ0b29sdGlwLHRleHQs
dW5zZXQiLCB2b2lkOiB0b29sdGlwIHdhcyB1bnNldC4KLSAqICAtICJ1cmksY2hhbmdlZCIsIGNv
bnN0IGNoYXIqOiB1cmkgb2YgdGhlIG1haW4gZnJhbWUgd2FzIGNoYW5nZWQuCi0gKiAgLSAidmll
dyxyZXNpemVkIiwgdm9pZDogdmlldyBvYmplY3QncyBzaXplIHdhcyBjaGFuZ2VkLgotICogIC0g
InZpZXdwb3J0LGNoYW5nZWQiLCB2b2lkOiByZXBvcnRzIHRoYXQgdmlld3BvcnQgd2FzIGNoYW5n
ZWQuCi0gKiAgLSAiem9vbSxhbmltYXRlZCxlbmQiLCB2b2lkOiByZXF1ZXN0ZWQgYW5pbWF0ZWQg
em9vbSBpcyBmaW5pc2hlZC4KLSAqLwotCi0jaWZuZGVmIGV3a192aWV3X2gKLSNkZWZpbmUgZXdr
X3ZpZXdfaAotCi0jaW5jbHVkZSAiZXdrX2NvbnRleHRtZW51LmgiCi0jaW5jbHVkZSAiZXdrX2Zp
bGVfY2hvb3Nlci5oIgotI2luY2x1ZGUgImV3a19mcmFtZS5oIgotI2luY2x1ZGUgImV3a19oaXN0
b3J5LmgiCi0jaW5jbHVkZSAiZXdrX2pzLmgiCi0jaW5jbHVkZSAiZXdrX3dpbmRvd19mZWF0dXJl
cy5oIgotCi0jaW5jbHVkZSA8RXZhcy5oPgotCi0jaWZkZWYgX19jcGx1c3BsdXMKLWV4dGVybiAi
QyIgewotI2VuZGlmCi0KLS8vLyBDcmVhdGVzIGEgdHlwZSBuYW1lIGZvciBAYSBfRXdrX1ZpZXdf
U21hcnRfRGF0YS4KLXR5cGVkZWYgc3RydWN0IF9Fd2tfVmlld19TbWFydF9EYXRhIEV3a19WaWV3
X1NtYXJ0X0RhdGE7Ci0KLS8vLyBDcmVhdGVzIGEgdHlwZSBuYW1lIGZvciBhIFJlc291cmNlIEhh
bmRsZXIgQ2FsbGJhY2sKLXR5cGVkZWYgdm9pZCogKCpFd2tfVmlld19SZXNvdXJjZV9IYW5kbGVy
X0NiKShjb25zdCBjaGFyICosIHNpemVfdCAqLCBjaGFyICoqLCB2b2lkICopOwotCi0vLy8gQ3Jl
YXRlcyBhIHR5cGUgbmFtZSBmb3IgQGEgX0V3a19WaWV3X1NtYXJ0X0NsYXNzLgotdHlwZWRlZiBz
dHJ1Y3QgX0V3a19WaWV3X1NtYXJ0X0NsYXNzIEV3a19WaWV3X1NtYXJ0X0NsYXNzOwotCi0vLyBE
ZWZpbmVzIHRoZSBkaXJlY3Rpb24gb2YgZm9jdXMgY2hhbmdlLiBLZWVwIGluIHN5bmMgd2l0aAot
Ly8gV2ViQ29yZTo6Rm9jdXNEaXJlY3Rpb24uCi1lbnVtIF9Fd2tfRm9jdXNfRGlyZWN0aW9uIHsK
LSAgICBFV0tfRk9DVVNfRElSRUNUSU9OX0ZPUldBUkQgPSAxLAotICAgIEVXS19GT0NVU19ESVJF
Q1RJT05fQkFDS1dBUkQsCi19OwotdHlwZWRlZiBlbnVtIF9Fd2tfRm9jdXNfRGlyZWN0aW9uIEV3
a19Gb2N1c19EaXJlY3Rpb247Ci0KLS8vLyBFd2sgdmlldydzIGNsYXNzLCB0byBiZSBvdmVycmlk
ZGVuIGJ5IHN1Yi1jbGFzc2VzLgotc3RydWN0IF9Fd2tfVmlld19TbWFydF9DbGFzcyB7Ci0gICAg
RXZhc19TbWFydF9DbGFzcyBzYzsgLyoqPCBBbGwgYnV0ICdkYXRhJyBpcyBmcmVlIHRvIGJlIGNo
YW5nZWQuICovCi0gICAgdW5zaWduZWQgbG9uZyB2ZXJzaW9uOwotCi0gICAgRXZhc19PYmplY3Qg
Kigqd2luZG93X2NyZWF0ZSkoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIEVpbmFfQm9vbCBqYXZh
c2NyaXB0LCBjb25zdCBFd2tfV2luZG93X0ZlYXR1cmVzICp3aW5kb3dfZmVhdHVyZXMpOyAvKio8
IGNyZWF0ZXMgYSBuZXcgd2luZG93LCByZXF1ZXN0ZWQgYnkgd2Via2l0ICovCi0gICAgdm9pZCAo
KndpbmRvd19jbG9zZSkoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QpOyAvKio8IGNsb3NlcyBhIHdp
bmRvdyAqLwotICAgIEVpbmFfQm9vbCAoKmNvbnRlbnRzX3Jlc2l6ZSkoRXdrX1ZpZXdfU21hcnRf
RGF0YSAqc2QsIGludCB3LCBpbnQgaCk7Ci0gICAgRWluYV9Cb29sICgqem9vbV9zZXQpKEV3a19W
aWV3X1NtYXJ0X0RhdGEgKnNkLCBmbG9hdCB6b29tLCBFdmFzX0Nvb3JkIGN4LCBFdmFzX0Nvb3Jk
IGN5KTsKLSAgICBFaW5hX0Jvb2wgKCp6b29tX3dlYWtfc2V0KShFd2tfVmlld19TbWFydF9EYXRh
ICpzZCwgZmxvYXQgem9vbSwgRXZhc19Db29yZCBjeCwgRXZhc19Db29yZCBjeSk7Ci0gICAgdm9p
ZCAoKnpvb21fd2Vha19zbW9vdGhfc2NhbGVfc2V0KShFd2tfVmlld19TbWFydF9EYXRhICpzZCwg
RWluYV9Cb29sIHNtb290aF9zY2FsZSk7Ci0gICAgRWluYV9Cb29sICgqZGlzYWJsZV9yZW5kZXIp
KEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkKTsKLSAgICBFaW5hX0Jvb2wgKCplbmFibGVfcmVuZGVy
KShFd2tfVmlld19TbWFydF9EYXRhICpzZCk7Ci0KLSAgICAvLyBldmVudCBoYW5kbGluZzoKLSAg
ICAvLyAgLSByZXR1cm5zIHRydWUgaWYgaGFuZGxlZAotICAgIC8vICAtIGlmIG92ZXJyaWRkZW4s
IGhhdmUgdG8gY2FsbCBwYXJlbnQgbWV0aG9kIGlmIGRlc2lyZWQKLSAgICBFaW5hX0Jvb2wgKCpm
b2N1c19pbikoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QpOwotICAgIEVpbmFfQm9vbCAoKmZvY3Vz
X291dCkoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QpOwotICAgIEVpbmFfQm9vbCAoKmZ1bGxzY3Jl
ZW5fZW50ZXIpKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkKTsKLSAgICBFaW5hX0Jvb2wgKCpmdWxs
c2NyZWVuX2V4aXQpKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkKTsKLSAgICBFaW5hX0Jvb2wgKCpt
b3VzZV93aGVlbCkoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIGNvbnN0IEV2YXNfRXZlbnRfTW91
c2VfV2hlZWwgKmV2KTsKLSAgICBFaW5hX0Jvb2wgKCptb3VzZV9kb3duKShFd2tfVmlld19TbWFy
dF9EYXRhICpzZCwgY29uc3QgRXZhc19FdmVudF9Nb3VzZV9Eb3duICpldik7Ci0gICAgRWluYV9C
b29sICgqbW91c2VfdXApKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBjb25zdCBFdmFzX0V2ZW50
X01vdXNlX1VwICpldik7Ci0gICAgRWluYV9Cb29sICgqbW91c2VfbW92ZSkoRXdrX1ZpZXdfU21h
cnRfRGF0YSAqc2QsIGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfTW92ZSAqZXYpOwotICAgIEVpbmFf
Qm9vbCAoKmtleV9kb3duKShFd2tfVmlld19TbWFydF9EYXRhICpzZCwgY29uc3QgRXZhc19FdmVu
dF9LZXlfRG93biAqZXYpOwotICAgIEVpbmFfQm9vbCAoKmtleV91cCkoRXdrX1ZpZXdfU21hcnRf
RGF0YSAqc2QsIGNvbnN0IEV2YXNfRXZlbnRfS2V5X1VwICpldik7Ci0KLSAgICB2b2lkICgqYWRk
X2NvbnNvbGVfbWVzc2FnZSkoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIGNvbnN0IGNoYXIgKm1l
c3NhZ2UsIHVuc2lnbmVkIGludCBsaW5lTnVtYmVyLCBjb25zdCBjaGFyICpzb3VyY2VJRCk7Ci0g
ICAgdm9pZCAoKnJ1bl9qYXZhc2NyaXB0X2FsZXJ0KShFd2tfVmlld19TbWFydF9EYXRhICpzZCwg
RXZhc19PYmplY3QgKmZyYW1lLCBjb25zdCBjaGFyICptZXNzYWdlKTsKLSAgICBFaW5hX0Jvb2wg
KCpydW5famF2YXNjcmlwdF9jb25maXJtKShFd2tfVmlld19TbWFydF9EYXRhICpzZCwgRXZhc19P
YmplY3QgKmZyYW1lLCBjb25zdCBjaGFyICptZXNzYWdlKTsKLSAgICBFaW5hX0Jvb2wgKCpydW5f
YmVmb3JlX3VubG9hZF9jb25maXJtKShFd2tfVmlld19TbWFydF9EYXRhICpzZCwgRXZhc19PYmpl
Y3QgKmZyYW1lLCBjb25zdCBjaGFyICptZXNzYWdlKTsKLSAgICBFaW5hX0Jvb2wgKCpydW5famF2
YXNjcmlwdF9wcm9tcHQpKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBFdmFzX09iamVjdCAqZnJh
bWUsIGNvbnN0IGNoYXIgKm1lc3NhZ2UsIGNvbnN0IGNoYXIgKmRlZmF1bHRWYWx1ZSwgY29uc3Qg
Y2hhciAqKnZhbHVlKTsKLSAgICBFaW5hX0Jvb2wgKCpzaG91bGRfaW50ZXJydXB0X2phdmFzY3Jp
cHQpKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkKTsKLSAgICBpbnQ2NF90ICgqZXhjZWVkZWRfYXBw
bGljYXRpb25fY2FjaGVfcXVvdGEpKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBFd2tfU2VjdXJp
dHlfT3JpZ2luKiBvcmlnaW4sIGludDY0X3QgZGVmYXVsdE9yaWdpblF1b3RhLCBpbnQ2NF90IHRv
dGFsU3BhY2VOZWVkZWQpOwotICAgIHVpbnQ2NF90ICgqZXhjZWVkZWRfZGF0YWJhc2VfcXVvdGEp
KEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBFdmFzX09iamVjdCAqZnJhbWUsIGNvbnN0IGNoYXIg
KmRhdGFiYXNlTmFtZSwgdWludDY0X3QgY3VycmVudF9zaXplLCB1aW50NjRfdCBleHBlY3RlZF9z
aXplKTsKLQotICAgIEVpbmFfQm9vbCAoKnJ1bl9vcGVuX3BhbmVsKShFd2tfVmlld19TbWFydF9E
YXRhICpzZCwgRXZhc19PYmplY3QgKmZyYW1lLCBFd2tfRmlsZV9DaG9vc2VyICpmaWxlX2Nob29z
ZXIsIEVpbmFfTGlzdCAqKnNlbGVjdGVkX2ZpbGVuYW1lcyk7Ci0KLSAgICBFaW5hX0Jvb2wgKCpu
YXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbikoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIEV3a19G
cmFtZV9SZXNvdXJjZV9SZXF1ZXN0ICpyZXF1ZXN0LCBFd2tfTmF2aWdhdGlvbl9UeXBlIG5hdmln
YXRpb25fdHlwZSk7Ci0gICAgRWluYV9Cb29sICgqZm9jdXNfY2FuX2N5Y2xlKShFd2tfVmlld19T
bWFydF9EYXRhICpzZCwgRXdrX0ZvY3VzX0RpcmVjdGlvbiBkaXJlY3Rpb24pOwotfTsKLQotLyoq
Ci0gKiBUaGUgdmVyc2lvbiB5b3UgaGF2ZSB0byBwdXQgaW50byB0aGUgdmVyc2lvbiBmaWVsZAot
ICogaW4gdGhlIEBhIEV3a19WaWV3X1NtYXJ0X0NsYXNzIHN0cnVjdHVyZS4KLSAqLwotI2RlZmlu
ZSBFV0tfVklFV19TTUFSVF9DTEFTU19WRVJTSU9OIDlVTAotCi0vKioKLSAqIEluaXRpYWxpemVz
IGEgd2hvbGUgQGEgRXdrX1ZpZXdfU21hcnRfQ2xhc3Mgc3RydWN0dXJlLgotICoKLSAqIEBwYXJh
bSBzbWFydF9jbGFzc19pbml0IGluaXRpYWxpemVyIHRvIHVzZSBmb3IgdGhlICJiYXNlIiBmaWVs
ZAotICogQGEgRXZhc19TbWFydF9DbGFzcwotICoKLSAqIEBzZWUgRVdLX1ZJRVdfU01BUlRfQ0xB
U1NfSU5JVF9OVUxMCi0gKiBAc2VlIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVRfVkVSU0lPTgot
ICogQHNlZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUX05BTUVfVkVSU0lPTgotICovCi0jZGVm
aW5lIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVQoc21hcnRfY2xhc3NfaW5pdCkge3NtYXJ0X2Ns
YXNzX2luaXQsIEVXS19WSUVXX1NNQVJUX0NMQVNTX1ZFUlNJT04sIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDB9Ci0KLS8qKgotICogSW5pdGlhbGl6ZXMgdG8gemVybyBhIHdob2xlIEBhIEV3
a19WaWV3X1NtYXJ0X0NsYXNzIHN0cnVjdHVyZS4KLSAqCi0gKiBAc2VlIEVXS19WSUVXX1NNQVJU
X0NMQVNTX0lOSVRfVkVSU0lPTgotICogQHNlZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUX05B
TUVfVkVSU0lPTgotICogQHNlZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUCi0gKi8KLSNkZWZp
bmUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9OVUxMIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lO
SVQoRVZBU19TTUFSVF9DTEFTU19JTklUX05VTEwpCi0KLS8qKgotICogSW5pdGlhbGl6ZXMgdG8g
emVybyBhIHdob2xlIEBhIEV3a19WaWV3X1NtYXJ0X0NsYXNzIHN0cnVjdHVyZQotICogYW5kIHNl
dHMgdGhlIHZlcnNpb24uCi0gKgotICogU2ltaWxhciB0byBAYSBFV0tfVklFV19TTUFSVF9DTEFT
U19JTklUX05VTEwsIGJ1dCBpdCBzZXRzIHRoZSB2ZXJzaW9uIGZpZWxkIG9mCi0gKiBAYSBFdmFz
X1NtYXJ0X0NsYXNzIChiYXNlIGZpZWxkKSB0byBsYXRlc3QgQGEgRVZBU19TTUFSVF9DTEFTU19W
RVJTSU9OLgotICoKLSAqIEBzZWUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9OVUxMCi0gKiBA
c2VlIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVRfTkFNRV9WRVJTSU9OCi0gKiBAc2VlIEVXS19W
SUVXX1NNQVJUX0NMQVNTX0lOSVQKLSAqLwotI2RlZmluZSBFV0tfVklFV19TTUFSVF9DTEFTU19J
TklUX1ZFUlNJT04gRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVChFVkFTX1NNQVJUX0NMQVNTX0lO
SVRfVkVSU0lPTikKLQotLyoqCi0gKiBJbml0aWFsaXplcyB0byB6ZXJvIGEgd2hvbGUgQGEgRXdr
X1ZpZXdfU21hcnRfQ2xhc3Mgc3RydWN0dXJlCi0gKiBhbmQgc2V0cyB0aGUgbmFtZSBhbmQgdmVy
c2lvbi4KLSAqCi0gKiBTaW1pbGFyIHRvIEBhIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVRfTlVM
TCwgYnV0IGl0IHNldHMgdGhlIHZlcnNpb24gZmllbGQgb2YKLSAqIEBhIEV2YXNfU21hcnRfQ2xh
c3MgKGJhc2UgZmllbGQpIHRvIGxhdGVzdCBAYSBFVkFTX1NNQVJUX0NMQVNTX1ZFUlNJT04KLSAq
IGFuZCB0aGUgbmFtZSB0byB0aGUgc3BlY2lmaWMgdmFsdWUuCi0gKgotICogSXQgd2lsbCBrZWVw
IGEgcmVmZXJlbmNlIHRvIHRoZSBuYW1lIGZpZWxkIGFzIGEgImNvbnN0IGNoYXIgKiIsIHRoYXQg
aXMsCi0gKiBuYW1lIG11c3QgYmUgYXZhaWxhYmxlIHdoaWxlIHRoZSBzdHJ1Y3R1cmUgaXMgdXNl
ZCAoaGludDogc3RhdGljIG9yIGdsb2JhbCEpCi0gKiBhbmQgaXQgd2lsbCBub3QgYmUgbW9kaWZp
ZWQuCi0gKgotICogQHNlZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUX05VTEwKLSAqIEBzZWUg
RVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9WRVJTSU9OCi0gKiBAc2VlIEVXS19WSUVXX1NNQVJU
X0NMQVNTX0lOSVQKLSAqLwotI2RlZmluZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUX05BTUVf
VkVSU0lPTihuYW1lKSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUKEVWQVNfU01BUlRfQ0xBU1Nf
SU5JVF9OQU1FX1ZFUlNJT04obmFtZSkpCi0KLS8vLyBEZWZpbmVzIHRoZSBpbnB1dCBtZXRob2Qg
aGludHMuCi1lbnVtIF9Fd2tfSW1oIHsKLSAgICBFV0tfSU1IX1RFTEVQSE9ORSA9ICgxIDw8IDAp
LAotICAgIEVXS19JTUhfTlVNQkVSID0gKDEgPDwgMSksCi0gICAgRVdLX0lNSF9FTUFJTCA9ICgx
IDw8IDIpLAotICAgIEVXS19JTUhfVVJMID0gKDEgPDwgMyksCi0gICAgRVdLX0lNSF9QQVNTV09S
RCA9ICgxIDw8IDQpCi19OwotLy8vIENyZWF0ZXMgYSB0eXBlIG5hbWUgZm9yIEBhIF9Fd2tfSW1o
LgotdHlwZWRlZiBlbnVtIF9Fd2tfSW1oIEV3a19JbWg7Ci0KLS8vLyBDcmVhdGVzIGEgdHlwZSBu
YW1lIGZvciBAYSBfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhLgotdHlwZWRlZiBzdHJ1Y3QgX0V3a19W
aWV3X1ByaXZhdGVfRGF0YSBFd2tfVmlld19Qcml2YXRlX0RhdGE7Ci0KLS8vLyBEZWZpbmVzIHRo
ZSB0eXBlcyBvZiB0aGUgaXRlbXMgZm9yIHRoZSBjb250ZXh0IG1lbnUuCi1lbnVtIF9Fd2tfTWVu
dV9JdGVtX1R5cGUgewotICAgIEVXS19NRU5VX1NFUEFSQVRPUiwKLSAgICBFV0tfTUVOVV9HUk9V
UCwKLSAgICBFV0tfTUVOVV9PUFRJT04KLX07Ci0vLy8gQ3JlYXRlcyBhIHR5cGUgbmFtZSBmb3Ig
QGEgX0V3a19NZW51X0l0ZW1fVHlwZS4KLXR5cGVkZWYgZW51bSBfRXdrX01lbnVfSXRlbV9UeXBl
IEV3a19NZW51X0l0ZW1fVHlwZTsKLQotLy8vIENyZWF0ZXMgYSB0eXBlIG5hbWUgZm9yIEBhIF9F
d2tfTWVudV9JdGVtLgotdHlwZWRlZiBzdHJ1Y3QgX0V3a19NZW51X0l0ZW0gRXdrX01lbnVfSXRl
bTsKLS8vLyBDb250YWlucyBkYXRhIG9mIGVhY2ggbWVudSBpdGVtLgotc3RydWN0IF9Fd2tfTWVu
dV9JdGVtIHsKLSAgICBjb25zdCBjaGFyICp0ZXh0OyAvKio8IFRleHQgb2YgdGhlIGl0ZW0uICov
Ci0gICAgRXdrX01lbnVfSXRlbV9UeXBlIHR5cGU7IC8qKiBUeXBlIG9mIHRoZSBpdGVtLiAqLwot
fTsKLQotLy8vIENyZWF0ZXMgYSB0eXBlIG5hbWUgZm9yIEBhIF9Fd2tfTWVudS4KLXR5cGVkZWYg
c3RydWN0IF9Fd2tfTWVudSBFd2tfTWVudTsKLS8vLyBDb250YWlucyBQb3B1cCBtZW51IGRhdGEu
Ci1zdHJ1Y3QgX0V3a19NZW51IHsKLSAgICAgICAgRWluYV9MaXN0ICppdGVtczsgLyoqPCBMaXN0
IG9mIGl0ZW1zLiAqLwotICAgICAgICBpbnQgeDsgLyoqPCBUaGUgaG9yaXpvbnRhbCBwb3NpdGlv
biBvZiBQb3B1cCBtZW51LiAqLwotICAgICAgICBpbnQgeTsgLyoqPCBUaGUgdmVydGljYWwgcG9z
aXRpb24gb2YgUG9wdXAgbWVudS4gKi8KLSAgICAgICAgaW50IHdpZHRoOyAvKio8IFBvcHVwIG1l
bnUgd2lkdGguICovCi0gICAgICAgIGludCBoZWlnaHQ7IC8qKjwgUG9wdXAgbWVudSBoZWlnaHQu
ICovCi19OwotCi0vLy8gQ3JlYXRlcyBhIHR5cGUgbmFtZSBmb3IgQGEgX0V3a19Eb3dubG9hZC4K
LXR5cGVkZWYgc3RydWN0IF9Fd2tfRG93bmxvYWQgRXdrX0Rvd25sb2FkOwotLy8vIENvbnRhaW5z
IERvd25sb2FkIGRhdGEuCi1zdHJ1Y3QgX0V3a19Eb3dubG9hZCB7Ci0gICAgY29uc3QgY2hhciAq
dXJsOyAvKio8IFVSTCBvZiByZXNvdXJjZS4gKi8KLSAgICBjb25zdCBjaGFyICpzdWdnZXN0ZWRf
bmFtZTsgLyoqPCBzdWdnZXN0ZWQgbmFtZSBmcm9tIGRvd25sb2FkIGF0dHJpYnV0ZXMgKi8KLSAg
ICAvKiB0byBiZSBleHRlbmRlZCAqLwotfTsKLQotLy8vIENyZWF0ZXMgYSB0eXBlIG5hbWUgZm9y
IEBhIF9Fd2tfVmlld19OYXZpZ2F0aW9uX0RhdGEuCi10eXBlZGVmIHN0cnVjdCBfRXdrX1ZpZXdf
TmF2aWdhdGlvbl9EYXRhIEV3a19WaWV3X05hdmlnYXRpb25fRGF0YTsKLQotLyoqCi0gKiBAYnJp
ZWYgU3RydWN0dXJlIGNvbnRhaW5pbmcgZGV0YWlscyBhYm91dCBhIHZpZXcgbmF2aWdhdGlvbi4K
LSAqCi0gKiBEZXRhaWxzIG9mIGEgdmlldyBuYXZpZ2F0aW9uLiBJdCBpcyB1c2VkIGluICJuYXZp
Z2F0ZSx3aXRoLGRhdGEiIHNpZ25hbC4KLSAqLwotc3RydWN0IF9Fd2tfVmlld19OYXZpZ2F0aW9u
X0RhdGEgewotICAgIGNvbnN0IGNoYXIgKnVybDsgIC8qKjwgVVJMIGZvciB0aGUgaGlzdG9yeS4g
Ki8KLSAgICBjb25zdCBjaGFyICp0aXRsZTsgIC8qKjwgVGl0bGUgb2YgdGhlIG5hdmlnYXRlZCBw
YWdlLiAqLwotICAgIEV3a19GcmFtZV9SZXNvdXJjZV9SZXF1ZXN0ICpyZXF1ZXN0OyAgLyoqPCBO
YXZpZ2F0aW9uIHJlcXVlc3QuICovCi0gICAgRXdrX0ZyYW1lX1Jlc291cmNlX1Jlc3BvbnNlICpy
ZXNwb25zZTsgIC8qKjwgTmF2aWdhdGlvbiByZXNwb25zZS4gKi8KLSAgICBFaW5hX0Jvb2wgaGFz
X3N1YnN0aXR1dGVfZGF0YTsgIC8qKjwgRGF0YSBzdWJzdGl0dXRpb24gZmxhZy4gKi8KLSAgICBj
b25zdCBjaGFyICpjbGllbnRfcmVkaXJlY3Rfc291cmNlOyAgLyoqPCBDbGllbnQgcmVkaXJlY3Qg
c291cmNlIFVSTC4gKi8KLX07Ci0KLQotLy8vIENyZWF0ZXMgYSB0eXBlIG5hbWUgZm9yIEBhIF9F
d2tfVmlld19SZWRpcmVjdGlvbl9EYXRhLgotdHlwZWRlZiBzdHJ1Y3QgX0V3a19WaWV3X1JlZGly
ZWN0aW9uX0RhdGEgRXdrX1ZpZXdfUmVkaXJlY3Rpb25fRGF0YTsKLQotLyoqCi0gKiBAYnJpZWYg
U3RydWN0dXJlIGNvbnRhaW5pbmcgZGV0YWlscyBhYm91dCBhIHZpZXcgcmVkaXJlY3Rpb24uCi0g
KgotICogRGV0YWlscyBvZiBhIGNsaWVudCBvciBzZXJ2ZXIgcmVkaXJlY3Rpb24uIEl0IGlzIHVz
ZWQgaW4gInBlcmZvcm0sY2xpZW50LHJlZGlyZWN0IiBhbmQgInBlcmZvcm0sc2VydmVyLHJlZGly
ZWN0IiBzaWduYWxzLgotICovCi1zdHJ1Y3QgX0V3a19WaWV3X1JlZGlyZWN0aW9uX0RhdGEgewot
ICAgIGNvbnN0IGNoYXIgKnNvdXJjZV91cmw7ICAvKio8IFJlZGlyZWN0IHNvdXJjZSBVUkwuICov
Ci0gICAgY29uc3QgY2hhciAqZGVzdGluYXRpb25fdXJsOyAgLyoqPCBSZWRpcmVjdCBkZXN0aW5h
dGlvbiBVUkwuICovIAotfTsKLQotLy8vIENyZWF0ZXMgYSB0eXBlIG5hbWUgZm9yIEBhIF9Fd2tf
Q29sb3IuCi10eXBlZGVmIHN0cnVjdCBfRXdrX0NvbG9yIEV3a19Db2xvcjsKLS8vLyBSZXByZXNl
bnRzIGEgY29sb3IgdXNpbmcgdGhlIFJHQkEgZm9ybWF0Lgotc3RydWN0IF9Fd2tfQ29sb3Igewot
ICAgIHVuc2lnbmVkIGNoYXIgcjsgLyoqPCBSZWQgY2hhbm5lbC4gKi8KLSAgICB1bnNpZ25lZCBj
aGFyIGc7IC8qKjwgR3JlZW4gY2hhbm5lbC4gKi8KLSAgICB1bnNpZ25lZCBjaGFyIGI7IC8qKjwg
Qmx1ZSBjaGFubmVsLiAqLwotICAgIHVuc2lnbmVkIGNoYXIgYTsgLyoqPCBBbHBoYSBjaGFubmVs
LiAqLwotfTsKLQotLy8vIERlZmluZXMgdGhlIGhhbmRsZXIgc3RhdGVzLgotZW51bSBfRXdrX0N1
c3RvbV9IYW5kbGVyc19TdGF0ZSB7Ci0gICAgRVdLX0NVU1RPTV9IQU5ETEVSU19ORVcsCi0gICAg
RVdLX0NVU1RPTV9IQU5ETEVSU19SRUdJU1RFUkVELAotICAgIEVXS19DVVNUT01fSEFORExFUlNf
REVDTElORUQKLX07Ci0vLy8gQ3JlYXRlcyBhIHR5cGUgbmFtZSBmb3IgQGEgX0V3a19DdXN0b21f
SGFuZGxlcnNfU3RhdGUuCi10eXBlZGVmIGVudW0gX0V3a19DdXN0b21fSGFuZGxlcnNfU3RhdGUg
RXdrX0N1c3RvbV9IYW5kbGVyc19TdGF0ZTsKLQotLy8vIENyZWF0ZXMgYSB0eXBlIG5hbWUgZm9y
IEBhIF9Fd2tfQ3VzdG9tX0hhbmRsZXJfRGF0YS4KLXR5cGVkZWYgc3RydWN0IF9Fd2tfQ3VzdG9t
X0hhbmRsZXJfRGF0YSBFd2tfQ3VzdG9tX0hhbmRsZXJfRGF0YTsKLS8vLyBDb250YWlucyB0aGUg
dGFyZ2V0IHNjaGVtZSBhbmQgdGhlIHVybCB3aGljaCB0YWtlIGNhcmUgb2YgdGhlIHRhcmdldC4K
LXN0cnVjdCBfRXdrX0N1c3RvbV9IYW5kbGVyX0RhdGEgewotICAgIEV2YXNfT2JqZWN0ICpld2tW
aWV3OyAvKio8IFJlZmVyZW5jZSB0byB0aGUgdmlldyBvYmplY3QuICovCi0gICAgY29uc3QgY2hh
ciAqc2NoZW1lOyAvKio8IFJlZmVyZW5jZSB0byB0aGUgc2NoZW1lIHRoYXQgd2lsbCBiZSBoYW5k
bGVkLiAoZWcuICJhcHBsaWNhdGlvbi94LXNvdXAiKSAqLwotICAgIGNvbnN0IGNoYXIgKmJhc2Vf
dXJsOyAvKio8IFJlZmVyZW5jZSB0byB0aGUgcmVzb2x2ZWQgdXJsIGlmIHRoZSB1cmwgaXMgcmVs
YXRpdmUgdXJsLiAoZWcuICJodHRwczovL3d3dy5leGFtcGxlLmNvbS8iKSAqLwotICAgIGNvbnN0
IGNoYXIgKnVybDsgLyoqPCBSZWZlcmVuY2UgdG8gdGhlIHVybCB3aGljaCB3aWxsIGhhbmRsZSB0
aGUgZ2l2ZW4gcHJvdG9jb2wuIChlZy4gInNvdXA/dXJsPSVzIikgKi8KLSAgICBjb25zdCBjaGFy
ICp0aXRsZTsgLyoqPCBSZWZlcmVuY2UgdG8gdGhlIGRlc2NyaXB0aXZlIHRpdGxlIG9mIHRoZSBo
YW5kbGVyLiAoZWcuICJTb3VwV2ViIikgKi8KLSAgICBFd2tfQ3VzdG9tX0hhbmRsZXJzX1N0YXRl
IHJlc3VsdDsgLyoqPCBSZXN1bHQgb2YgdGhlIHF1ZXJ5IHRoYXQgdGhlIHByb3RvY29sIGhhbmRs
ZXIgaXMgcmVnaXN0ZXJlZCBvciBub3QuICovCi19OwotCi0vKioKLSAqIEBicmllZiBDb250YWlu
cyBhbiBpbnRlcm5hbCBWaWV3IGRhdGEuCi0gKgotICogSXQgaXMgdG8gYmUgY29uc2lkZXJlZCBw
cml2YXRlIGJ5IHVzZXJzLCBidXQgbWF5IGJlIGV4dGVuZGVkIG9yCi0gKiBjaGFuZ2VkIGJ5IHN1
Yi1jbGFzc2VzICh0aGF0J3Mgd2h5IGl0J3MgaW4gdGhlIHB1YmxpYyBoZWFkZXIgZmlsZSkuCi0g
Ki8KLXN0cnVjdCBfRXdrX1ZpZXdfU21hcnRfRGF0YSB7Ci0gICAgRXZhc19PYmplY3RfU21hcnRf
Q2xpcHBlZF9EYXRhIGJhc2U7Ci0gICAgY29uc3QgRXdrX1ZpZXdfU21hcnRfQ2xhc3MgKmFwaTsg
LyoqPCBSZWZlcmVuY2UgdG8gY2FzdGVkIGNsYXNzIGluc3RhbmNlLiAqLwotICAgIEV2YXNfT2Jq
ZWN0ICpzZWxmOyAvKio8IFJlZmVyZW5jZSB0byBvd25lciBvYmplY3QuICovCi0gICAgRXZhc19P
YmplY3QgKm1haW5fZnJhbWU7IC8qKjwgUmVmZXJlbmNlIHRvIG1haW4gZnJhbWUgb2JqZWN0LiAq
LwotICAgIEV2YXNfT2JqZWN0ICppbWFnZTsgLyoqPCBSZWZlcmVuY2UgdG8gZXZhc19vYmplY3Rf
aW1hZ2UgZm9yIGRyYXdpbmcgd2ViIGNvbnRlbnQgKi8KLSAgICBFdmFzX09iamVjdCAqZXZlbnRz
X3JlY3Q7IC8qKjwgVGhlIHJlY3RhbmdsZSB0aGF0IHJlY2VpdmVzIG1vdXNlIGV2ZW50cy4gKi8K
LSAgICBFd2tfVmlld19Qcml2YXRlX0RhdGEgKl9wcml2OyAvKio8IFNob3VsZCBAYiBuZXZlciBi
ZSBhY2Nlc3NlZCwgYysrIHN0dWZmLiAqLwotICAgIHN0cnVjdCB7Ci0gICAgICAgIEV2YXNfQ29v
cmQgeCwgeSwgdywgaDsKLSAgICB9IHZpZXc7IC8qKjwgQ29udGFpbnMgdGhlIHBvc2l0aW9uIGFu
ZCBzaXplIG9mIGxhc3QgdXNlZCB2aWV3cG9ydC4gKi8KLSAgICBzdHJ1Y3QgewotICAgICAgICBz
dHJ1Y3QgewotICAgICAgICAgICAgZmxvYXQgc3RhcnQ7Ci0gICAgICAgICAgICBmbG9hdCBlbmQ7
Ci0gICAgICAgICAgICBmbG9hdCBjdXJyZW50OyAvKio8IGlmID4gMC4wLCB0aGVuIGRvaW5nIGFu
aW1hdGVkIHpvb20uICovCi0gICAgICAgIH0gem9vbTsKLSAgICB9IGFuaW1hdGVkX3pvb207Ci0g
ICAgc3RydWN0IHsKLSAgICAgICAgdW5zaWduZWQgY2hhciByLCBnLCBiLCBhOwotICAgIH0gYmdf
Y29sb3I7IC8qKjwgS2VlcHMgdGhlIGJhY2tncm91bmQgY29sb3IuICovCi0gICAgRWluYV9Cb29s
IHpvb21fd2Vha19zbW9vdGhfc2NhbGU6MTsKLSAgICBzdHJ1Y3QgewotICAgICAgICBFaW5hX0Jv
b2wgYW55OjE7Ci0gICAgICAgIEVpbmFfQm9vbCBzaXplOjE7Ci0gICAgICAgIEVpbmFfQm9vbCBw
b3NpdGlvbjoxOwotICAgICAgICBFaW5hX0Jvb2wgZnJhbWVfcmVjdDoxOwotICAgIH0gY2hhbmdl
ZDsgLyoqPCBLZWVwcyB3aGF0IGNoYW5nZWQgc2luY2UgbGFzdCBzbWFydF9jYWxjdWxhdGUuICov
Ci0gICAgc3RydWN0IHsKLSAgICAgICAgRXZhc19Db29yZCB4LCB5OwotICAgICAgICBmbG9hdCB6
b29tOwotICAgIH0gcHJldmlvdXNWaWV3OwotfTsKLQotLy8vIERlZmluZXMgdGhlIG1vZGVzIG9m
IHZpZXcuCi1lbnVtIF9Fd2tfVmlld19Nb2RlIHsKLSAgICBFV0tfVklFV19NT0RFX0lOVkFMSUQs
Ci0gICAgRVdLX1ZJRVdfTU9ERV9XSU5ET1dFRCwKLSAgICBFV0tfVklFV19NT0RFX0ZMT0FUSU5H
LAotICAgIEVXS19WSUVXX01PREVfRlVMTFNDUkVFTiwKLSAgICBFV0tfVklFV19NT0RFX01BWElN
SVpFRCwKLSAgICBFV0tfVklFV19NT0RFX01JTklNSVpFRAotfTsKLS8vLyBDcmVhdGVzIGEgdHlw
ZSBuYW1lIGZvciBAYSBfRXdrX1ZpZXdfTW9kZS4KLXR5cGVkZWYgZW51bSBfRXdrX1ZpZXdfTW9k
ZSBFd2tfVmlld19Nb2RlOwotCi0vLy8gRGVmaW5lcyB0aGUgZm9udCBmYW1pbGllcy4KLWVudW0g
X0V3a19Gb250X0ZhbWlseSB7Ci0gICAgRVdLX0ZPTlRfRkFNSUxZX1NUQU5EQVJEID0gMCwKLSAg
ICBFV0tfRk9OVF9GQU1JTFlfQ1VSU0lWRSwKLSAgICBFV0tfRk9OVF9GQU1JTFlfRkFOVEFTWSwK
LSAgICBFV0tfRk9OVF9GQU1JTFlfTU9OT1NQQUNFLAotICAgIEVXS19GT05UX0ZBTUlMWV9TRVJJ
RiwKLSAgICBFV0tfRk9OVF9GQU1JTFlfU0FOU19TRVJJRgotfTsKLS8vLyBDcmVhdGVzIGEgdHlw
ZSBuYW1lIGZvciBAYSBfRXdrX0ZvbnRfRmFtaWx5LgotdHlwZWRlZiBlbnVtIF9Fd2tfRm9udF9G
YW1pbHkgRXdrX0ZvbnRfRmFtaWx5OwotCi0vLy8gQ29udGFpbnMgY29tbWFuZHMgdG8gZXhlY3V0
ZS4KLWVudW0gX0V3a19FZGl0b3JfQ29tbWFuZCB7Ci0gICAgRVdLX0VESVRPUl9DT01NQU5EX05P
TkUgPSAtMSwKLSAgICBFV0tfRURJVE9SX0NPTU1BTkRfVU5ETyA9IDAsCi0gICAgRVdLX0VESVRP
Ul9DT01NQU5EX1JFRE8sCi0gICAgRVdLX0VESVRPUl9DT01NQU5EX1RPR0dMRV9CT0xELAotICAg
IEVXS19FRElUT1JfQ09NTUFORF9UT0dHTEVfSVRBTElDLAotICAgIEVXS19FRElUT1JfQ09NTUFO
RF9UT0dHTEVfVU5ERVJMSU5FLAotICAgIEVXS19FRElUT1JfQ09NTUFORF9UT0dHTEVfU1RSSUtF
VEhST1VHSCwKLSAgICBFV0tfRURJVE9SX0NPTU1BTkRfVE9HR0xFX1NVQlNDUklQVCwKLSAgICBF
V0tfRURJVE9SX0NPTU1BTkRfVE9HR0xFX1NVUEVSU0NSSVBULAotICAgIEVXS19FRElUT1JfQ09N
TUFORF9JTkRFTlQsCi0gICAgRVdLX0VESVRPUl9DT01NQU5EX09VVERFTlQsCi0gICAgRVdLX0VE
SVRPUl9DT01NQU5EX0lOU0VSVF9PUkRFUkVETElTVCwKLSAgICBFV0tfRURJVE9SX0NPTU1BTkRf
SU5TRVJUX1VOT1JERVJFRExJU1QsCi0gICAgRVdLX0VESVRPUl9DT01NQU5EX0lOU0VSVF9JTUFH
RSwKLSAgICBFV0tfRURJVE9SX0NPTU1BTkRfSU5TRVJUX1RFWFQsCi0gICAgRVdLX0VESVRPUl9D
T01NQU5EX0lOU0VSVF9IVE1MLAotICAgIEVXS19FRElUT1JfQ09NTUFORF9JTlNFUlRfUEFSQUdS
QVBILAotICAgIEVXS19FRElUT1JfQ09NTUFORF9JTlNFUlRfUEFSQUdSQVBIX1NFUEFSQVRPUiwK
LSAgICBFV0tfRURJVE9SX0NPTU1BTkRfSU5TRVJUX0xJTkVfU0VQQVJBVE9SLAotICAgIEVXS19F
RElUT1JfQ09NTUFORF9CQUNLX0NPTE9SLAotICAgIEVXS19FRElUT1JfQ09NTUFORF9GT1JFX0NP
TE9SLAotICAgIEVXS19FRElUT1JfQ09NTUFORF9ISUxJVEVfQ09MT1IsCi0gICAgRVdLX0VESVRP
Ul9DT01NQU5EX0ZPTlRfU0laRSwKLSAgICBFV0tfRURJVE9SX0NPTU1BTkRfQUxJR05fQ0VOVEVS
LAotICAgIEVXS19FRElUT1JfQ09NTUFORF9BTElHTl9KVVNUSUZJRUQsCi0gICAgRVdLX0VESVRP
Ul9DT01NQU5EX0FMSUdOX0xFRlQsCi0gICAgRVdLX0VESVRPUl9DT01NQU5EX0FMSUdOX1JJR0hU
LAotICAgIEVXS19FRElUT1JfQ09NTUFORF9NT1ZFX1RPX05FWFRfQ0hBUiwKLSAgICBFV0tfRURJ
VE9SX0NPTU1BTkRfTU9WRV9UT19QUkVWSU9VU19DSEFSLAotICAgIEVXS19FRElUT1JfQ09NTUFO
RF9NT1ZFX1RPX05FWFRfV09SRCwKLSAgICBFV0tfRURJVE9SX0NPTU1BTkRfTU9WRV9UT19QUkVW
SU9VU19XT1JELAotICAgIEVXS19FRElUT1JfQ09NTUFORF9NT1ZFX1RPX05FWFRfTElORSwKLSAg
ICBFV0tfRURJVE9SX0NPTU1BTkRfTU9WRV9UT19QUkVWSU9VU19MSU5FLAotICAgIEVXS19FRElU
T1JfQ09NTUFORF9NT1ZFX1RPX0JFR0lOTklOR19PRl9MSU5FLAotICAgIEVXS19FRElUT1JfQ09N
TUFORF9NT1ZFX1RPX0VORF9PRl9MSU5FLAotICAgIEVXS19FRElUT1JfQ09NTUFORF9NT1ZFX1RP
X0JFR0lOTklOR19PRl9QQVJBR1JBUEgsCi0gICAgRVdLX0VESVRPUl9DT01NQU5EX01PVkVfVE9f
RU5EX09GX1BBUkFHUkFQSCwKLSAgICBFV0tfRURJVE9SX0NPTU1BTkRfTU9WRV9UT19CRUdJTk5J
TkdfT0ZfRE9DVU1FTlQsCi0gICAgRVdLX0VESVRPUl9DT01NQU5EX01PVkVfVE9fRU5EX09GX0RP
Q1VNRU5ULAotICAgIEVXS19FRElUT1JfQ09NTUFORF9TRUxFQ1RfTk9ORSwKLSAgICBFV0tfRURJ
VE9SX0NPTU1BTkRfU0VMRUNUX0FMTCwKLSAgICBFV0tfRURJVE9SX0NPTU1BTkRfU0VMRUNUX1BB
UkFHUkFQSCwKLSAgICBFV0tfRURJVE9SX0NPTU1BTkRfU0VMRUNUX1NFTlRFTkNFLAotICAgIEVX
S19FRElUT1JfQ09NTUFORF9TRUxFQ1RfTElORSwKLSAgICBFV0tfRURJVE9SX0NPTU1BTkRfU0VM
RUNUX1dPUkQsCi0gICAgRVdLX0VESVRPUl9DT01NQU5EX1NFTEVDVF9ORVhUX0NIQVIsCi0gICAg
RVdLX0VESVRPUl9DT01NQU5EX1NFTEVDVF9QUkVWSU9VU19DSEFSLAotICAgIEVXS19FRElUT1Jf
Q09NTUFORF9TRUxFQ1RfTkVYVF9XT1JELAotICAgIEVXS19FRElUT1JfQ09NTUFORF9TRUxFQ1Rf
UFJFVklPVVNfV09SRCwKLSAgICBFV0tfRURJVE9SX0NPTU1BTkRfU0VMRUNUX05FWFRfTElORSwK
LSAgICBFV0tfRURJVE9SX0NPTU1BTkRfU0VMRUNUX1BSRVZJT1VTX0xJTkUsCi0gICAgRVdLX0VE
SVRPUl9DT01NQU5EX1NFTEVDVF9TVEFSVF9PRl9MSU5FLAotICAgIEVXS19FRElUT1JfQ09NTUFO
RF9TRUxFQ1RfRU5EX09GX0xJTkUsCi0gICAgRVdLX0VESVRPUl9DT01NQU5EX1NFTEVDVF9TVEFS
VF9PRl9QQVJBR1JBUEgsCi0gICAgRVdLX0VESVRPUl9DT01NQU5EX1NFTEVDVF9FTkRfT0ZfUEFS
QUdSQVBILAotICAgIEVXS19FRElUT1JfQ09NTUFORF9TRUxFQ1RfU1RBUlRfT0ZfRE9DVU1FTlQs
Ci0gICAgRVdLX0VESVRPUl9DT01NQU5EX1NFTEVDVF9FTkRfT0ZfRE9DVU1FTlQsCi0gICAgRVdL
X0VESVRPUl9DT01NQU5EX0RFTEVURV9XT1JEX0JBQ0tXQVJELAotICAgIEVXS19FRElUT1JfQ09N
TUFORF9ERUxFVEVfV09SRF9GT1JXQVJECi19OwotCi0vLy8gQ3JlYXRlcyBhIHR5cGUgbmFtZSBm
b3IgQGEgX0V3a19FZGl0b3JfQ29tbWFuZC4KLXR5cGVkZWYgZW51bSBfRXdrX0VkaXRvcl9Db21t
YW5kIEV3a19FZGl0b3JfQ29tbWFuZDsKLQotLyoqCi0gKiBTZXRzIHRoZSBzbWFydCBjbGFzcyBh
cGksIGVuYWJsaW5nIHZpZXcgdG8gYmUgaW5oZXJpdGVkLgotICoKLSAqIEBwYXJhbSBhcGkgY2xh
c3MgZGVmaW5pdGlvbiB0byBzZXQsIGFsbCBtZW1iZXJzIHdpdGggdGhlCi0gKiAgICAgICAgZXhj
ZXB0aW9uIG9mIEBhIEV2YXNfU21hcnRfQ2xhc3MtPmRhdGEgbWF5IGJlIG92ZXJyaWRkZW4sIG11
c3QKLSAqICAgICAgICBAYiBub3QgYmUgQGMgTlVMTAotICoKLSAqIEBub3RlIEBhIEV2YXNfU21h
cnRfQ2xhc3MtPmRhdGEgaXMgdXNlZCB0byBpbXBsZW1lbnQgdHlwZSBjaGVja2luZyBhbmQKLSAq
ICAgICAgIGlzIG5vdCBzdXBwb3NlZCB0byBiZSBjaGFuZ2VkL292ZXJyaWRkZW4uIElmIHlvdSBu
ZWVkIGV4dHJhCi0gKiAgICAgICBkYXRhIGZvciB5b3VyIHNtYXJ0IGNsYXNzIHRvIHdvcmssIGp1
c3QgZXh0ZW5kCi0gKiAgICAgICBFd2tfVmlld19TbWFydF9DbGFzcyBpbnN0ZWFkLgotICoKLSAq
IEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3Mgb3IgQGMgRUlOQV9GQUxTRSBvbiBmYWls
dXJlIChwcm9iYWJseQotICogICAgICAgICB2ZXJzaW9uIG1pc21hdGNoKQotICovCi1FQVBJIEVp
bmFfQm9vbCAgICBld2tfdmlld19zbWFydF9zZXQoRXdrX1ZpZXdfU21hcnRfQ2xhc3MgKmFwaSk7
Ci0KLS8qKgotICogQ3JlYXRlcyBhIG5ldyBFRkwgV2ViS2l0IFZpZXcgb2JqZWN0LgotICoKLSAq
IFZpZXcgb2JqZWN0cyBhcmUgdGhlIHJlY29tbWVuZGVkIHdheSB0byBkZWFsIHdpdGggRUZMIFdl
YktpdCBhcyBpdAotICogYWJzdHJhY3RzIHRoZSBjb21wbGV4IHBpZWNlcyBvZiB0aGUgcHJvY2Vz
cy4KLSAqCi0gKiBFYWNoIHZpZXcgaXMgY29tcG9zZWQgYnkgYSBzZXQgb2YgZnJhbWVzLiBUaGUg
c2V0IGhhcyBhdCBsZWFzdCBvbmUKLSAqIGZyYW1lLCBjYWxsZWQgJ21haW5fZnJhbWUnLiBTZWUg
ZXdrX3ZpZXdfZnJhbWVfbWFpbl9nZXQoKSBhbmQKLSAqIGV3a192aWV3X2ZyYW1lX2ZvY3VzZWRf
Z2V0KCkuCi0gKgotICogQHBhcmFtIGUgY2FudmFzIG9iamVjdCB3aGVyZSB0byBjcmVhdGUgdGhl
IHZpZXcgb2JqZWN0Ci0gKgotICogQHJldHVybiB2aWV3IG9iamVjdCBvbiBzdWNjZXNzIG9yIEBj
IE5VTEwgb24gZmFpbHVyZQotICoKLSAqIEBzZWUgZXdrX3ZpZXdfdXJpX3NldCgpCi0gKi8KLUVB
UEkgRXZhc19PYmplY3QgKmV3a192aWV3X2FkZChFdmFzICplKTsKLQotLyoqCi0gKiBTZXRzIGEg
Zml4ZWQgbGF5b3V0IHNpemUgdG8gYmUgdXNlZCwgZGlzc29jaWF0aW5nIGl0IGZyb20gdmlld3Bv
cnQgc2l6ZS4KLSAqCi0gKiBTZXR0aW5nIGEgd2lkdGggZGlmZmVyZW50IHRoYW4gemVybyBlbmFi
bGVzIGZpeGVkIGxheW91dCBvbiB0aGF0Ci0gKiBzaXplLiBJdCdzIGF1dG9tYXRpY2FsbHkgc2Nh
bGVkIGJhc2VkIG9uIHpvb20sIGJ1dCB3aWxsIG5vdCBjaGFuZ2UKLSAqIGlmIHZpZXdwb3J0IGNo
YW5nZXMuCi0gKgotICogU2V0dGluZyBib3RoIEBhIHcgYW5kIEBhIGggdG8gemVybyB3aWxsIGRp
c2FibGUgZml4ZWQgbGF5b3V0LgotICoKLSAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIGNoYW5n
ZSBmaXhlZCBsYXlvdXQKLSAqIEBwYXJhbSB3IGZpeGVkIHdpZHRoIHRvIHVzZSwgdGhpcyBzaXpl
IHdpbGwgYmUgYXV0b21hdGljYWxseSBzY2FsZWQKLSAqICAgICAgICBiYXNlZCBvbiB6b29tIGxl
dmVsCi0gKiBAcGFyYW0gaCBmaXhlZCBoZWlnaHQgdG8gdXNlLCB0aGlzIHNpemUgd2lsbCBiZSBh
dXRvbWF0aWNhbGx5IHNjYWxlZAotICogICAgICAgIGJhc2VkIG9uIHpvb20gbGV2ZWwKLSAqLwot
RUFQSSB2b2lkICAgICAgICAgZXdrX3ZpZXdfZml4ZWRfbGF5b3V0X3NpemVfc2V0KEV2YXNfT2Jq
ZWN0ICpvLCBFdmFzX0Nvb3JkIHcsIEV2YXNfQ29vcmQgaCk7Ci0KLS8qKgotICogR2V0cyBmaXhl
ZCBsYXlvdXQgc2l6ZS4KLSAqCi0gKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBnZXQgZml4ZWQg
bGF5b3V0IHNpemUKLSAqIEBwYXJhbSB3IHRoZSBwb2ludGVyIHRvIHN0b3JlIGZpeGVkIHdpZHRo
LCByZXR1cm5zIEBjIE5VTEwgb24gZmFpbHVyZSBvciBpZiB0aGVyZSBpcyBubwotICogICAgICAg
IGZpeGVkIGxheW91dCBpbiB1c2UKLSAqIEBwYXJhbSBoIHRoZSBwb2ludGVyIHRvIHN0b3JlIGZp
eGVkIGhlaWdodCwgcmV0dXJucyBAYyBOVUxMIG9uIGZhaWx1cmUgb3IgaWYgdGhlcmUgaXMgbm8K
LSAqICAgICAgICBmaXhlZCBsYXlvdXQgaW4gdXNlCi0gKi8KLUVBUEkgdm9pZCAgICAgICAgIGV3
a192aWV3X2ZpeGVkX2xheW91dF9zaXplX2dldChjb25zdCBFdmFzX09iamVjdCAqbywgRXZhc19D
b29yZCAqdywgRXZhc19Db29yZCAqaCk7Ci0KLS8qKgotICogU2V0cyB0aGUgdGhlbWUgcGF0aCB0
aGF0IHdpbGwgYmUgdXNlZCBieSB0aGlzIHZpZXcuCi0gKgotICogVGhpcyBhbHNvIHNldHMgdGhl
IHRoZW1lIG9uIHRoZSBtYWluIGZyYW1lLiBBcyBmcmFtZXMgaW5oZXJpdCB0aGVtZQotICogZnJv
bSB0aGVpciBwYXJlbnQsIHRoaXMgd2lsbCBoYXZlIGFsbCBmcmFtZXMgd2l0aCB1bnNldCB0aGVt
ZSB0bwotICogdXNlIHRoaXMgb25lLgotICoKLSAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIGNo
YW5nZSB0aGVtZQotICogQHBhcmFtIHBhdGggdGhlbWUgcGF0aAotICovCi1FQVBJIHZvaWQgICAg
ICAgICBld2tfdmlld190aGVtZV9zZXQoRXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKnBhdGgp
OwotCi0vKioKLSAqIEdldHMgdGhlIHRoZW1lIHNldCBvbiB0aGlzIHZpZXcuCi0gKgotICogVGhp
cyByZXR1cm5zIHRoZSB2YWx1ZSBzZXQgYnkgZXdrX3ZpZXdfdGhlbWVfc2V0KCkuCi0gKgotICog
QHBhcmFtIG8gdmlldyBvYmplY3QgdG8gZ2V0IHRoZW1lIHBhdGgKLSAqCi0gKiBAcmV0dXJuIHRo
ZSB0aGVtZSBwYXRoLCBtYXkgYmUgQGMgTlVMTCBpZiBub3Qgc2V0Ci0gKi8KLUVBUEkgY29uc3Qg
Y2hhciAgKmV3a192aWV3X3RoZW1lX2dldChjb25zdCBFdmFzX09iamVjdCAqbyk7Ci0KLS8qKgot
ICogR2V0cyB0aGUgb2JqZWN0IHRoYXQgcmVwcmVzZW50cyB0aGUgbWFpbiBmcmFtZS4KLSAqCi0g
KiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBnZXQgbWFpbiBmcmFtZQotICoKLSAqIEByZXR1cm4g
ZnJhbWUgc21hcnQgb2JqZWN0IG9yIEBjIE5VTEwgaWYgbm9uZSB5ZXQKLSAqLwotRUFQSSBFdmFz
X09iamVjdCAqZXdrX3ZpZXdfZnJhbWVfbWFpbl9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOwot
Ci0vKioKLSAqIEdldHMgdGhlIGN1cnJlbnRseSBmb2N1c2VkIGZyYW1lIG9iamVjdC4KLSAqCi0g
KiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBnZXQgZm9jdXNlZCBmcmFtZQotICoKLSAqIEByZXR1
cm4gZnJhbWUgc21hcnQgb2JqZWN0IG9yIEBjIE5VTEwgaWYgbm9uZSB5ZXQKLSAqLwotRUFQSSBF
dmFzX09iamVjdCAqZXdrX3ZpZXdfZnJhbWVfZm9jdXNlZF9nZXQoY29uc3QgRXZhc19PYmplY3Qg
Km8pOwotCi0vKioKLSAqIEFza3MgdGhlIG1haW4gZnJhbWUgdG8gbG9hZCB0aGUgZ2l2ZW4gVVJJ
LgotICoKLSAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIGxvYWQgQGEgdXJpCi0gKiBAcGFyYW0g
dXJpIHVuaWZvcm0gcmVzb3VyY2UgaWRlbnRpZmllciB0byBsb2FkCi0gKgotICogQHJldHVybiBA
YyBFSU5BX1RSVUUgb24gc3VjY2Vzc2Z1bCByZXF1ZXN0IG9yIEBjIEVJTkFfRkFMU0Ugb24gZmFp
bHVyZQotICovCi1FQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld191cmlfc2V0KEV2YXNfT2JqZWN0
ICpvLCBjb25zdCBjaGFyICp1cmkpOwotCi0vKioKLSAqIEdldHMgdGhlIGN1cnJlbnQgdXJpIGxv
YWRlZCBieSBtYWluIGZyYW1lLgotICoKLSAqIEl0IHJldHVybnMgYSBpbnRlcm5hbCBzdHJpbmcg
YW5kIHNob3VsZCBub3QKLSAqIGJlIG1vZGlmaWVkLiBUaGUgc3RyaW5nIGlzIGd1YXJhbnRlZWQg
dG8gYmUgc3RyaW5nc2hhcmVkLgotICoKLSAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIGdldCBj
dXJyZW50IHVyaS4KLSAqCi0gKiBAcmV0dXJuIGN1cnJlbnQgdXJpIG9uIHN1Y2Nlc3Mgb3IgQGMg
TlVMTCBvbiBmYWlsdXJlCi0gKi8KLUVBUEkgY29uc3QgY2hhciAgKmV3a192aWV3X3VyaV9nZXQo
Y29uc3QgRXZhc19PYmplY3QgKm8pOwotCi0vKioKLSAqIEdldHMgdGhlIGN1cnJlbnQgdGl0bGUg
b2YgdGhlIG1haW4gZnJhbWUuCi0gKgotICogSXQgcmV0dXJucyBhIGludGVybmFsIHN0cmluZyBh
bmQgc2hvdWxkIG5vdAotICogYmUgbW9kaWZpZWQuIFRoZSBzdHJpbmcgaXMgZ3VhcmFudGVlZCB0
byBiZSBzdHJpbmdzaGFyZWQuCi0gKgotICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gZ2V0IGN1
cnJlbnQgdGl0bGUKLSAqCi0gKiBAcmV0dXJuIGN1cnJlbnQgdGl0bGUgb24gc3VjY2VzcyBvciBA
YyBOVUxMIG9uIGZhaWx1cmUKLSAqLwotRUFQSSBjb25zdCBFd2tfVGV4dF9XaXRoX0RpcmVjdGlv
biAgKmV3a192aWV3X3RpdGxlX2dldChjb25zdCBFdmFzX09iamVjdCAqbyk7Ci0KLS8qKgotICog
UXVlcmllcyBpZiB0aGUgbWFpbiBmcmFtZSBpcyBlZGl0YWJsZS4KLSAqCi0gKiBAcGFyYW0gbyB2
aWV3IG9iamVjdCB0byBxdWVyeSBlZGl0YWJsZSBzdGF0ZQotICoKLSAqIEByZXR1cm4gQGMgRUlO
QV9UUlVFIGlmIHRoZSBtYWluIGZyYW1lIGlzIGVkaXRhYmxlLCBAYyBFSU5BX0ZBTFNFIG90aGVy
d2lzZQotICovCi1FQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld19lZGl0YWJsZV9nZXQoY29uc3Qg
RXZhc19PYmplY3QgKm8pOwotCi0vKioKLSAqIFNldHMgaWYgbWFpbiBmcmFtZSBpcyBlZGl0YWJs
ZS4KLSAqCi0gKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBzZXQgZWRpdGFibGUgc3RhdGUKLSAq
IEBwYXJhbSBlZGl0YWJsZSBhIG5ldyBzdGF0ZSB0byBzZXQKLSAqCi0gKiBAcmV0dXJuIEBjIEVJ
TkFfVFJVRSBvbiBzdWNjZXNzIG9yIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlCi0gKi8KLUVBUEkg
RWluYV9Cb29sICAgIGV3a192aWV3X2VkaXRhYmxlX3NldChFdmFzX09iamVjdCAqbywgRWluYV9C
b29sIGVkaXRhYmxlKTsKLQotLyoqCi0gKiBTZXRzIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIGFuZCB0
cmFuc3BhcmVuY3kgb2YgdGhlIHZpZXcuCi0gKgotICogSnVzdCBhcyBpbiBFdmFzLCBjb2xvcnMg
YXJlIHByZS1tdWx0aXBsaWVkLCBzbyA1MCUgcmVkIGlzCi0gKiAoMTI4LCAwLCAwLCAxMjgpIGFu
ZCBub3QgKDI1NSwgMCwgMCwgMTI4KSEKLSAqCi0gKiBAd2FybmluZyBXYXRjaCBvdXQgcGVyZm9y
bWFuY2UgaXNzdWVzIHdpdGggdHJhbnNwYXJlbmN5ISBPYmplY3QKLSAqICAgICAgICAgIHdpbGwg
YmUgaGFuZGxlZCBhcyB0cmFuc3BhcmVudCBpbWFnZSBieSBldmFzIGV2ZW4gaWYgdGhlCi0gKiAg
ICAgICAgICB3ZWJwYWdlIHNwZWNpZmllcyBhIGJhY2tncm91bmQgY29sb3IuIFRoYXQgbWVhbiB5
b3UnbGwgcGF5Ci0gKiAgICAgICAgICBhIHByaWNlIGV2ZW4gaWYgaXQncyBub3QgcmVhbGx5IHRy
YW5zcGFyZW50LCB0aHVzCi0gKiAgICAgICAgICBzY3JvbGxpbmcvcGFubmluZyBhbmQgem9vbWlu
ZyB3aWxsIGJlIGxpa2VseSBzbG93ZXIgdGhhbgotICogICAgICAgICAgaWYgdHJhbnNwYXJlbmN5
IGlzIG9mZi4KLSAqCi0gKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBjaGFuZ2UgdGhlIGJhY2tn
cm91bmQgY29sb3IKLSAqIEBwYXJhbSByIHJlZCBjb2xvciBjb21wb25lbnQKLSAqIEBwYXJhbSBn
IGdyZWVuIGNvbG9yIGNvbXBvbmVudAotICogQHBhcmFtIGIgYmx1ZSBjb2xvciBjb21wb25lbnQK
LSAqIEBwYXJhbSBhIHRyYW5zcGFyZW5jeQotICovCi1FQVBJIHZvaWQgICAgICAgICBld2tfdmll
d19iZ19jb2xvcl9zZXQoRXZhc19PYmplY3QgKm8sIGludCByLCBpbnQgZywgaW50IGIsIGludCBh
KTsKLQotLyoqCi0gKiBHZXRzIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIG9mIHRoZSB2aWV3LgotICoK
LSAqIEp1c3QgYXMgaW4gRXZhcywgY29sb3JzIGFyZSBwcmUtbXVsdGlwbGllZCwgc28gNTAlIHJl
ZCBpcwotICogKDEyOCwgMCwgMCwgMTI4KSBhbmQgbm90ICgyNTUsIDAsIDAsIDEyOCkhCi0gKgot
ICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gZ2V0IHRoZSBiYWNrZ3JvdW5kIGNvbG9yCi0gKiBA
cGFyYW0gciB0aGUgcG9pbnRlciB0byBzdG9yZSByZWQgY29sb3IgY29tcG9uZW50Ci0gKiBAcGFy
YW0gZyB0aGUgcG9pbnRlciB0byBzdG9yZSBncmVlbiBjb2xvciBjb21wb25lbnQKLSAqIEBwYXJh
bSBiIHRoZSBwb2ludGVyIHRvIHN0b3JlIGJsdWUgY29sb3IgY29tcG9uZW50Ci0gKiBAcGFyYW0g
YSB0aGUgcG9pbnRlciB0byBzdG9yZSBhbHBoYSB2YWx1ZQotICovCi1FQVBJIHZvaWQgICAgICAg
ICBld2tfdmlld19iZ19jb2xvcl9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8sIGludCAqciwgaW50
ICpnLCBpbnQgKmIsIGludCAqYSk7Ci0KLS8qKgotICogR2V0cyB0aGUgY29weSBvZiB0aGUgc2Vs
ZWN0ZWQgdGV4dC4KLSAqCi0gKiBUaGUgcmV0dXJuZWQgc3RyaW5nIEBiIHNob3VsZCBiZSBmcmVl
ZCBieSBlaW5hX3N0cmluZ3NoYXJlX2RlbCgpIGFmdGVyIHVzZS4KLSAqCi0gKiBAcGFyYW0gbyB2
aWV3IG9iamVjdCB0byBnZXQgc2VsZWN0ZWQgdGV4dAotICoKLSAqIEByZXR1cm4gYSBuZXdseSBh
bGxvY2F0ZWQgc3RyaW5nIG9yIEBjIE5VTEwgaWYgbm90aGluZyBpcyBzZWxlY3RlZCBvciBvbiBm
YWlsdXJlCi0gKi8KLUVBUEkgY29uc3QgY2hhciAgICAgICAgKmV3a192aWV3X3NlbGVjdGlvbl9n
ZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOwotCi0vKioKLSAqIEZvcndhcmRzIGEgcmVxdWVzdCBv
ZiBhIG5ldyBDb250ZXh0IE1lbnUgdG8gV2ViQ29yZS4KLSAqCi0gKiBAcGFyYW0gbyB2aWV3IG9i
amVjdCB0byBmb3J3YXJkIGEgcmVxdWVzdCBvZiBhIG5ldyBDb250ZXh0IE1lbnUKLSAqIEBwYXJh
bSBldiBtb3VzZSBkb3duIGV2ZW50IGRhdGEKLSAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBp
ZiBvcGVyYXRpb24gd2FzIGV4ZWN1dGVkLCBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZQotICovCi1F
QVBJIEVpbmFfQm9vbCAgICBld2tfdmlld19jb250ZXh0X21lbnVfZm9yd2FyZF9ldmVudChFdmFz
X09iamVjdCAqbywgY29uc3QgRXZhc19FdmVudF9Nb3VzZV9Eb3duICpldik7Ci0KLS8qKgotICog
RXhlY3V0ZXMgZWRpdG9yIGNvbW1hbmQuCi0gKgotICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8g
ZXhlY3V0ZSBjb21tYW5kCi0gKiBAcGFyYW0gY29tbWFuZCBlZGl0b3IgY29tbWFuZCB0byBleGVj
dXRlCi0gKiBAcGFyYW0gdmFsdWUgdGhlIHZhbHVlIHRvIGJlIHBhc3NlZCBpbnRvIGNvbW1hbmQK
LSAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzIG9yIEBjIEVJTkFfRkFMU0Ug
b24gZmFpbHVyZQotICovCi1FQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld19lZGl0b3JfY29tbWFu
ZF9leGVjdXRlKGNvbnN0IEV2YXNfT2JqZWN0ICpvLCBjb25zdCBFd2tfRWRpdG9yX0NvbW1hbmQg
Y29tbWFuZCwgY29uc3QgY2hhciAqdmFsdWUpOwotCi0vKioKLSAqIERlc3Ryb3lzIGEgcHJldmlv
dXNseSBjcmVhdGVkIGNvbG9yIGNob29zZXIuCi0gKgotICogQmVmb3JlIGRlc3Ryb3lpbmcsIGl0
IGluZm9ybXMgY2xpZW50IHRoYXQgY29sb3IgY2hvb3NlcidzIGRhdGEgaXMgcmVhZHkgdG8gYmUK
LSAqIGRlc3Ryb3llZCBieSBzZW5kaW5nIGEgImNvbG9yY2hvb3Nlcix3aWxsZGVsZXRlIi4gVGhl
biBpdCByZW1vdmVzIGFueSByZWZlcmVuY2UKLSAqIHRvIHRoZSBjb2xvciBjaG9vc2VyIGluc2lk
ZSB3ZWJraXQuIEl0J3Mgc2FmZSB0byBjYWxsIHRoaXMgZnVuY3Rpb24gZWl0aGVyIGZyb20KLSAq
IGluc2lkZSB3ZWJraXQgb3IgZnJvbSBicm93c2VyLgotICoKLSAqIEBwYXJhbSBvIHZpZXcgb2Jq
ZWN0Ci0gKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgaW4gY2FzZSBjb2xvciBjaG9vc2VyIHdh
cyBzdWNjZXNzZnVsbHkgZGVzdHJveWVkIG9yIEBjIEVJTkFfVFJVRSBpbgotICogY2FzZSB0aGVy
ZSB3YXNuJ3QgYW55IGNvbG9yIGNob29zZXIgdG8gYmUgZGVzdHJveWVkCi0gKi8KLUVBUEkgRWlu
YV9Cb29sICAgIGV3a192aWV3X2NvbG9yX2Nob29zZXJfZGVzdHJveShFdmFzX09iamVjdCogbyk7
Ci0KLS8qKgotICogQ2hhbmdlcyB0aGUgc2VsZWN0ZWQgY29sb3IuCi0gKgotICogQ2hhbmdlcyB0
aGUgY29sb3Igc2VsZWN0ZWQgaW4gdGhlIGNvbG9yIGlucHV0IHdpZGdldC4gVGhlIGJyb3dzZXIg
c2hvdWxkIGNhbGwKLSAqIHRoaXMgd2hlbiB0aGUgdXNlciBjaG9vc2VzIGEgbmV3IGNvbG9yLiBJ
dCdzIGxpa2VseSB0aGF0IGV3a192aWV3X2NvbG9yX2Nob29zZXJfZGVzdHJveQotICogd2lsbCBi
ZSBjYWxsZWQgYWZ0ZXJ3YXJkcy4KLSAqCi0gKiBAcGFyYW0gbyB2aWV3IG9iamVjdAotICogQHBh
cmFtIHIgcmVkIGNvbG9yIGNvbXBvbmVudAotICogQHBhcmFtIGcgZ3JlZW4gY29sb3IgY29tcG9u
ZW50Ci0gKiBAcGFyYW0gYiBibHVlIGNvbG9yIGNvbXBvbmVudAotICovCi1FQVBJIHZvaWQgICAg
ICAgICBld2tfdmlld19jb2xvcl9jaG9vc2VyX2NvbG9yX3NldChFdmFzX09iamVjdCogbywgaW50
IHIsIGludCBnLCBpbnQgYik7Ci0KLS8qKgotICogQ2hhbmdlcyBjdXJyZW50bHkgc2VsZWN0ZWQg
aXRlbS4KLSAqCi0gKiBDaGFuZ2VzIHRoZSBvcHRpb24gc2VsZWN0ZWQgaW4gc2VsZWN0IHdpZGdl
dC4gVGhpcyBpcyBjYWxsZWQgYnkgYnJvd3NlcgotICogd2hlbmV2ZXIgdXNlciBoYXMgY2hvc2Vu
IGEgZGlmZmVyZW50IGl0ZW0uIE1vc3QgbGlrZWx5IGFmdGVyIGNhbGxpbmcgdGhpcywgYQotICog
Y2FsbCB0byBld2tfdmlld19wb3B1cF9kZXN0cm95IG1pZ2h0IGJlIG1hZGUgaW4gb3JkZXIgdG8g
Y2xvc2UgdGhlIHBvcHVwLgotICoKLSAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIGNoYW5nZSBj
dXJyZW50bHkgc2VsZWN0ZWQgaXRlbQotICogQGluZGV4IGluZGV4IGEgbmV3IGluZGV4IHRvIHNl
dAotICovCi1FQVBJIHZvaWQgICAgICAgICBld2tfdmlld19wb3B1cF9zZWxlY3RlZF9zZXQoRXZh
c19PYmplY3QgKm8sIGludCBpbmRleCk7Ci0KLS8qKgotICogRGVzdHJveXMgYSBwcmV2aW91c2x5
IGNyZWF0ZWQgbWVudS4KLSAqCi0gKiBCZWZvcmUgZGVzdHJveWluZywgaXQgaW5mb3JtcyBjbGll
bnQgdGhhdCBtZW51J3MgZGF0YSBpcyByZWFkeSB0byBiZQotICogZGVzdHJveWVkIGJ5IHNlbmRp
bmcgYSAicG9wdXAsd2lsbGRlbGV0ZSIgd2l0aCBhIGxpc3Qgb2YgbWVudSBpdGVtcy4gVGhlbiBp
dAotICogcmVtb3ZlcyBhbnkgcmVmZXJlbmNlIHRvIG1lbnUgaW5zaWRlIHdlYmtpdC4gSXQncyBz
YWZlIHRvIGNhbGwgdGhpcwotICogZnVuY3Rpb24gZWl0aGVyIGZyb20gaW5zaWRlIHdlYmtpdCBv
ciBmcm9tIGJyb3dzZXIuCi0gKgotICogQHBhcmFtIG8gdmlldyBvYmplY3QKLSAqCi0gKiBAcmV0
dXJuIEBjIEVJTkFfVFJVRSBpbiBjYXNlIG1lbnUgd2FzIHN1Y2Nlc3NmdWxseSBkZXN0cm95ZWQg
b3IgQGMgRUlOQV9UUlVFIGluCi0gKiBjYXNlIHRoZXJlIHdhc24ndCBhbnkgbWVudSB0byBiZSBk
ZXN0cm95ZWQKLSAqLwotRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfcG9wdXBfZGVzdHJveShF
dmFzX09iamVjdCAqbyk7Ci0KLS8qKgotICogU2VhcmNoZXMgdGhlIGdpdmVuIHN0cmluZyBpbiBh
IGRvY3VtZW50LgotICoKLSAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHdoZXJlIHRvIHNlYXJjaCB0
aGUgdGV4dAotICogQHBhcmFtIHN0cmluZyByZWZlcmVuY2Ugc3RyaW5nIHRvIHNlYXJjaAotICog
QHBhcmFtIGNhc2Vfc2Vuc2l0aXZlIGlmIHNlYXJjaCBzaG91bGQgYmUgY2FzZSBzZW5zaXRpdmUg
b3Igbm90Ci0gKiBAcGFyYW0gZm9yd2FyZCBpZiBzZWFyY2ggaXMgZnJvbSBjdXJzb3IgYW5kIG9u
IG9yIGJhY2t3YXJkcwotICogQHBhcmFtIHdyYXAgaWYgc2VhcmNoIHNob3VsZCB3cmFwIGF0IHRo
ZSBlbmQKLSAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiB0aGUgZ2l2ZW4gc3RyaW5nIHdh
cyBmb3VuZCwgQGMgRUlOQV9GQUxTRSBpZiBub3Qgb3IgZmFpbHVyZQotICovCi1FQVBJIEVpbmFf
Qm9vbCAgICBld2tfdmlld190ZXh0X3NlYXJjaChjb25zdCBFdmFzX09iamVjdCAqbywgY29uc3Qg
Y2hhciAqc3RyaW5nLCBFaW5hX0Jvb2wgY2FzZV9zZW5zaXRpdmUsIEVpbmFfQm9vbCBmb3J3YXJk
LCBFaW5hX0Jvb2wgd3JhcCk7Ci0KLS8qKgotICogTWFya3MgbWF0Y2hlcyB0aGUgZ2l2ZW4gc3Ry
aW5nIGluIGEgZG9jdW1lbnQuCi0gKgotICogQHBhcmFtIG8gdmlldyBvYmplY3Qgd2hlcmUgdG8g
c2VhcmNoIHRleHQKLSAqIEBwYXJhbSBzdHJpbmcgcmVmZXJlbmNlIHN0cmluZyB0byBtYXRjaAot
ICogQHBhcmFtIGNhc2Vfc2Vuc2l0aXZlIGlmIG1hdGNoIHNob3VsZCBiZSBjYXNlIHNlbnNpdGl2
ZSBvciBub3QKLSAqIEBwYXJhbSBoaWdobGlnaHQgaWYgbWF0Y2hlcyBzaG91bGQgYmUgaGlnaGxp
Z2h0ZWQKLSAqIEBwYXJhbSBsaW1pdCBtYXhpbXVtIGFtb3VudCBvZiBtYXRjaGVzLCBvciB6ZXJv
IHRvIHVubGltaXRlZAotICoKLSAqIEByZXR1cm4gbnVtYmVyIG9mIG1hdGNoZWQgQGEgc3RyaW5n
Ci0gKi8KLUVBUEkgdW5zaWduZWQgaW50IGV3a192aWV3X3RleHRfbWF0Y2hlc19tYXJrKEV2YXNf
T2JqZWN0ICpvLCBjb25zdCBjaGFyICpzdHJpbmcsIEVpbmFfQm9vbCBjYXNlX3NlbnNpdGl2ZSwg
RWluYV9Cb29sIGhpZ2hsaWdodCwgdW5zaWduZWQgaW50IGxpbWl0KTsKLQotLyoqCi0gKiBVbm1h
cmtzIGFsbCBtYXJrZWQgbWF0Y2hlcyBpbiBhIGRvY3VtZW50LgotICoKLSAqIFJldmVyc2VzIHRo
ZSBlZmZlY3Qgb2YgZXdrX2ZyYW1lX3RleHRfbWF0Y2hlc19tYXJrKCkuCi0gKgotICogQHBhcmFt
IG8gdmlldyBvYmplY3Qgd2hlcmUgdG8gdW5tYXJrIG1hdGNoZXMKLSAqCi0gKiBAcmV0dXJuIEBj
IEVJTkFfVFJVRSBvbiBzdWNjZXNzIG9yIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZQotICovCi1F
QVBJIEVpbmFfQm9vbCAgICBld2tfdmlld190ZXh0X21hdGNoZXNfdW5tYXJrX2FsbChFdmFzX09i
amVjdCAqbyk7Ci0KLS8qKgotICogU2V0cyBpZiBzaG91bGQgaGlnaGxpZ2h0IG1hdGNoZXMgbWFy
a2VkIHdpdGggZXdrX2ZyYW1lX3RleHRfbWF0Y2hlc19tYXJrKCkuCi0gKgotICogQHBhcmFtIG8g
dmlldyBvYmplY3Qgd2hlcmUgdG8gc2V0IGlmIG1hdGNoZXMgYXJlIGhpZ2hsaWdodGVkIG9yIG5v
dAotICogQHBhcmFtIGhpZ2hsaWdodCBAYyBFSU5BX1RSVUUgaWYgbWF0Y2hlcyBhcmUgaGlnaGxp
Z2h0ZWQsIEBjIEVJTkFfRkFMU0UgaWYgbm90Ci0gKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUg
b24gc3VjY2VzcyBvciBAYyBFSU5BX0ZBTFNFIG9uIGZhaWx1cmUKLSAqLwotRUFQSSBFaW5hX0Jv
b2wgICAgZXdrX3ZpZXdfdGV4dF9tYXRjaGVzX2hpZ2hsaWdodF9zZXQoRXZhc19PYmplY3QgKm8s
IEVpbmFfQm9vbCBoaWdobGlnaHQpOwotCi0vKioKLSAqIEdldHMgaWYgc2hvdWxkIGhpZ2hsaWdo
dCBtYXRjaGVzIG1hcmtlZCB3aXRoIGV3a19mcmFtZV90ZXh0X21hdGNoZXNfbWFyaygpLgotICoK
LSAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIHF1ZXJ5IGlmIG1hdGNoZXMgYXJlIGhpZ2hsaWdo
dGVkIG9yIG5vdAotICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIG1hdGNoZXMgYXJlIGhp
Z2hsaWdodGVkLCBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZQotICovCi1FQVBJIEVpbmFfQm9vbCAg
ICBld2tfdmlld190ZXh0X21hdGNoZXNfaGlnaGxpZ2h0X2dldChjb25zdCBFdmFzX09iamVjdCAq
byk7Ci0KLS8qKgotICogR2V0cyB0aGUgY3VycmVudCBsb2FkIHByb2dyZXNzIG9mIHBhZ2UuCi0g
KgotICogVGhlIHByb2dyZXNzIGVzdGltYXRlcyBmcm9tIDAuMCB0byAxLjAuCi0gKgotICogQHBh
cmFtIG8gdmlldyBvYmplY3QgdG8gZ2V0IHRoZSBjdXJyZW50IHByb2dyZXNzCi0gKgotICogQHJl
dHVybiB0aGUgbG9hZCBwcm9ncmVzIG9mIHBhZ2UsIHZhbHVlIGZyb20gMC4wIHRvIDEuMCBvbiBz
dWNjZXNzCi0gKiAgICAgICBvciAtMS4wIG9uIGZhaWx1cmUKLSAqLwotRUFQSSBkb3VibGUgICAg
ICAgZXdrX3ZpZXdfbG9hZF9wcm9ncmVzc19nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOwotCi0v
KioKLSAqIEFza3MgdGhlIG1haW4gZnJhbWUgdG8gc3RvcCBsb2FkaW5nLgotICoKLSAqIEBwYXJh
bSBvIHZpZXcgb2JqZWN0IHRvIHN0b3AgbG9hZGluZwotICoKLSAqIEByZXR1cm4gQGMgRUlOQV9U
UlVFIG9uIHN1Y2Nlc3Mgb3IgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UuCi0gKi8KLUVBUEkgRWlu
YV9Cb29sICAgIGV3a192aWV3X3N0b3AoRXZhc19PYmplY3QgKm8pOwotCi0vKioKLSAqIEFza3Mg
dGhlIG1haW4gZnJhbWUgdG8gcmVsb2FkIHRoZSBjdXJyZW50IGRvY3VtZW50LgotICoKLSAqIEBw
YXJhbSBvIHZpZXcgb2JqZWN0IHRvIHJlbG9hZCBjdXJyZW50IGRvY3VtZW50Ci0gKgotICogQHJl
dHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcyBvciBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZQot
ICoKLSAqIEBzZWUgZXdrX3ZpZXdfcmVsb2FkX2Z1bGwoKQotICovCi1FQVBJIEVpbmFfQm9vbCAg
ICBld2tfdmlld19yZWxvYWQoRXZhc19PYmplY3QgKm8pOwotCi0vKioKLSAqIEFza3MgdGhlIG1h
aW4gZnJhbWUgdG8gZnVsbHkgcmVsb2FkIHRoZSBjdXJyZW50IGRvY3VtZW50LCB1c2luZyBubyBj
YWNoZXMuCi0gKgotICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gcmVsb2FkIGN1cnJlbnQgZG9j
dW1lbnQKLSAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzIG8gckBjIEVJTkFf
RkFMU0Ugb3RoZXJ3aXNlCi0gKgotICogQHNlZSBld2tfdmlld19yZWxvYWQoKQotICovCi1FQVBJ
IEVpbmFfQm9vbCAgICBld2tfdmlld19yZWxvYWRfZnVsbChFdmFzX09iamVjdCAqbyk7Ci0KLS8q
KgotICogQXNrcyB0aGUgZnJhbWUgdG8gbmF2aWdhdGUgYmFjayBpbiB0aGUgaGlzdG9yeS4KLSAq
Ci0gKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBuYXZpZ2F0ZSBiYWNrCi0gKgotICogQHJldHVy
biBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcyBvciBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZQotICoK
LSAqIEBzZWUgZXdrX2ZyYW1lX2JhY2soKQotICovCi1FQVBJIEVpbmFfQm9vbCAgICBld2tfdmll
d19iYWNrKEV2YXNfT2JqZWN0ICpvKTsKLQotLyoqCi0gKiBBc2tzIGZyYW1lIHRvIG5hdmlnYXRl
IGZvcndhcmQgaW4gdGhlIGhpc3RvcnkuCi0gKgotICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8g
bmF2aWdhdGUgZm9yd2FyZAotICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3Mg
b3IgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UKLSAqCi0gKiBAc2VlIGV3a19mcmFtZV9mb3J3YXJk
KCkKLSAqLwotRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfZm9yd2FyZChFdmFzX09iamVjdCAq
byk7Ci0KLS8qKgotICogTmF2aWdhdGVzIGJhY2sgb3IgZm9yd2FyZCBpbiB0aGUgaGlzdG9yeS4K
LSAqCi0gKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBuYXZpZ2F0ZSBpbiB0aGUgaGlzdG9yeQot
ICogQHBhcmFtIHN0ZXBzIGlmIHBvc2l0aXZlIG5hdmlnYXRlcyB0aGF0IGFtb3VudCBmb3J3YXJk
cywgaWYgbmVnYXRpdmUKLSAqICAgICAgICBkb2VzIGJhY2t3YXJkcwotICoKLSAqIEByZXR1cm4g
QGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3Mgb3IgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UKLSAqCi0g
KiBAc2VlIGV3a19mcmFtZV9uYXZpZ2F0ZSgpCi0gKi8KLUVBUEkgRWluYV9Cb29sICAgIGV3a192
aWV3X25hdmlnYXRlKEV2YXNfT2JqZWN0ICpvLCBpbnQgc3RlcHMpOwotCi0vKioKLSAqIFF1ZXJp
ZXMgaWYgaXQncyBwb3NzaWJsZSB0byBuYXZpZ2F0ZSBiYWNrd2FyZHMgb25lIGl0ZW0gaW4gdGhl
IGhpc3RvcnkuCi0gKgotICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gcXVlcnkgaWYgYmFja3dh
cmQgbmF2aWdhdGlvbiBpcyBwb3NzaWJsZQotICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlm
IGl0J3MgcG9zc2libGUgdG8gbmF2aWdhdGUgYmFja3dhcmQgb25lIGl0ZW0gaW4gdGhlIGhpc3Rv
cnksIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlCi0gKiBAc2VlIGV3a192aWV3X25hdmlnYXRlX3Bv
c3NpYmxlKCkKLSAqLwotRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfYmFja19wb3NzaWJsZShF
dmFzX09iamVjdCAqbyk7Ci0KLS8qKgotICogUXVlcmllcyBpZiBpdCdzIHBvc3NpYmxlIHRvIG5h
dmlnYXRlIGZvcndhcmRzIG9uZSBpdGVtIGluIHRoZSBoaXN0b3J5LgotICoKLSAqIEBwYXJhbSBv
IHZpZXcgb2JqZWN0IHRvIHF1ZXJ5IGlmIGZvcndhcmQgbmF2aWdhdGlvbiBpcyBwb3NzaWJsZQot
ICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIGl0J3MgcG9zc2libGUgdG8gbmF2aWdhdGUg
Zm9yd2FyZHMgaW4gdGhlIGhpc3RvcnksIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlCi0gKgotICog
QHNlZSBld2tfdmlld19uYXZpZ2F0ZV9wb3NzaWJsZSgpCi0gKi8KLUVBUEkgRWluYV9Cb29sICAg
IGV3a192aWV3X2ZvcndhcmRfcG9zc2libGUoRXZhc19PYmplY3QgKm8pOwotCi0vKioKLSAqIFF1
ZXJpZXMgaWYgaXQncyBwb3NzaWJsZSB0byBuYXZpZ2F0ZSBnaXZlbiBAYSBzdGVwcyBpbiB0aGUg
aGlzdG9yeS4KLSAqCi0gKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBxdWVyeSBpZiBpdCdzIHBv
c3NpYmxlIHRvIG5hdmlnYXRlIEBhIHN0ZXBzIGluIHRoZSBoaXN0b3J5Ci0gKiBAcGFyYW0gc3Rl
cHMgaWYgcG9zaXRpdmUgbmF2aWdhdGVzIHRoYXQgYW1vdW50IGZvcndhcmRzLCBpZiBuZWdhdGl2
ZQotICogICAgICAgIGRvZXMgYmFja3dhcmRzCi0gKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUg
aWYgaXQncyBwb3NzaWJsZSB0byBuYXZpZ2F0ZSBAYSBzdGVwcyBpbiB0aGUgaGlzdG9yeSwgQGMg
RUlOQV9GQUxTRSBvdGhlcndpc2UKLSAqLwotRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfbmF2
aWdhdGVfcG9zc2libGUoRXZhc19PYmplY3QgKm8sIGludCBzdGVwcyk7Ci0KLS8qKgotICogUXVl
cmllcyBpZiBuYXZpZ2F0aW9uIGluIHRoZSBoaXN0b3J5IChiYWNrLWZvcndhcmQgbGlzdHMpIGlz
IGVuYWJsZWQuCi0gKgotICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gcXVlcnkgaWYgbmF2aWdh
dGlvbiBoaXN0b3J5IGlzIGVuYWJsZWQKLSAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiB2
aWV3IGtlZXBzIGhpc3RvcnksIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlCi0gKi8KLUVBUEkgRWlu
YV9Cb29sICAgIGV3a192aWV3X2hpc3RvcnlfZW5hYmxlX2dldChjb25zdCBFdmFzX09iamVjdCAq
byk7Ci0KLS8qKgotICogRW5hYmxlcy9kaXNhYmxlcyBuYXZpZ2F0aW9uIGluIHRoZSBoaXN0b3J5
IChiYWNrLWZvcndhcmQgbGlzdHMpLgotICoKLSAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIGVu
YWJsZS9kaXNhYmxlIG5hdmlnYXRpb24gaW4gdGhlIGhpc3RvcnkKLSAqIEBwYXJhbSBlbmFibGUg
QGMgRUlOQV9UUlVFIHRvIGVuYWJsZSBuYXZpZ2F0aW9uIGluIHRoZSBoaXN0b3J5LAotICogICAg
ICAgIEBjIEVJTkFfRkFMU0UgdG8gZGlzYWJsZQotICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVF
IG9uIHN1Y2Nlc3Mgb3IgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UKLSAqLwotRUFQSSBFaW5hX0Jv
b2wgICAgZXdrX3ZpZXdfaGlzdG9yeV9lbmFibGVfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jv
b2wgZW5hYmxlKTsKLQotLyoqCi0gKiBHZXRzIHRoZSBoaXN0b3J5IChiYWNrLWZvcndhcmQgbGlz
dCkgYXNzb2NpYXRlZCB3aXRoIHRoaXMgdmlldy4KLSAqCi0gKiBUaGUgcmV0dXJuZWQgaW5zdGFu
Y2UgaXMgdW5pcXVlIGZvciB0aGlzIHZpZXcgYW5kIHRodXMgbXVsdGlwbGUgY2FsbHMKLSAqIHRv
IHRoaXMgZnVuY3Rpb24gd2l0aCB0aGUgc2FtZSB2aWV3IGFzIHBhcmFtZXRlciByZXR1cm5zIHRo
ZSBzYW1lCi0gKiBoYW5kbGUuIFRoaXMgaGFuZGxlIGlzIGFsaXZlIHdoaWxlIHZpZXcgaXMgYWxp
dmUsIHRodXMgb25lCi0gKiBtaWdodCB3YW50IHRvIGxpc3RlbiBmb3IgRVZBU19DQUxMQkFDS19E
RUwgb24gZ2l2ZW4gdmlldwotICogKEBhIG8pIHRvIGtub3cgd2hlbiB0byBzdG9wIHVzaW5nIHJl
dHVybmVkIGhhbmRsZS4KLSAqCi0gKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBnZXQgbmF2aWdh
dGlvbiBoaXN0b3J5Ci0gKgotICogQHJldHVybiB0aGUgaGlzdG9yeSBpbnN0YW5jZSBoYW5kbGUg
YXNzb2NpYXRlZCB3aXRoIHRoaXMKLSAqICAgICAgICAgdmlldyBvbiBzdWNjZXMgb3IgQGMgTlVM
TCBvbiBmYWlsdXJlIChpbmNsdWRpbmcgd2hlbiB0aGUgaGlzdG9yeQotICogICAgICAgICBuYXZp
Z2F0aW9uIGlzIG5vdCBlbmFibGVkIHdpdGggZXdrX3ZpZXdfaGlzdG9yeV9lbmFibGVfc2V0KCkp
Ci0gKgotICogQHNlZSBld2tfdmlld19oaXN0b3J5X2VuYWJsZV9zZXQoKQotICovCi1FQVBJIEV3
a19IaXN0b3J5ICpld2tfdmlld19oaXN0b3J5X2dldChjb25zdCBFdmFzX09iamVjdCAqbyk7Ci0K
LS8qKgotICogQWRkcyBAYSB2aXNpdGVkX3VybCB0byB0aGUgdmlldydzIHZpc2l0ZWQgbGlua3Mg
Y2FjaGUuCi0gKgotICogVGhpcyBmdW5jdGlvbiBpcyB0byBiZSBpbnZva2VkIGJ5IHRoZSBjbGll
bnQgbWFuYWdpbmcgcGVyc2lzdGVudCBoaXN0b3J5IHN0b3JhZ2UKLSAqIHdoZW4gInBvcHVsYXRl
LHZpc2l0ZWQsbGlua3MiIHNpZ25hbCBpcyByZWNlaXZlZC4KLSAqCi0gKiBAcGFyYW0gbyB2aWV3
IG9iamVjdCB0byBhZGQgdmlzaXRlZCBsaW5rcyBkYXRhLgotICogQHBhcmFtIHZpc2l0ZWRfdXJs
IHZpc2l0ZWQgdXJsLgotICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3MsIEBj
IEVJTkFfRkFMU0Ugb24gZmFpbHVyZS4KLSAqLwotRUFQSSBFaW5hX0Jvb2wgIGV3a192aWV3X3Zp
c2l0ZWRfbGlua19hZGQoRXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKnZpc2l0ZWRfdXJsKTsK
LQotLyoqCi0gKiBHZXRzIHRoZSBjdXJyZW50IHBhZ2Ugem9vbSBsZXZlbCBvZiB0aGUgbWFpbiBm
cmFtZS4KLSAqCi0gKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBnZXQgdGhlIHpvb20gbGV2ZWwK
LSAqCi0gKiBAcmV0dXJuIGN1cnJlbnQgem9vbSBsZXZlbCBpbiB1c2Ugb24gc3VjY2VzcyBvciBA
YyAtMS4wIG9uIGZhaWx1cmUKLSAqLwotRUFQSSBmbG9hdCAgICAgICAgZXdrX3ZpZXdfcGFnZV96
b29tX2dldChjb25zdCBFdmFzX09iamVjdCAqbyk7Ci0KLS8qKgotICogU2V0cyB0aGUgY3VycmVu
dCBwYWdlIHpvb20gbGV2ZWwgb2YgdGhlIG1haW4gZnJhbWUuCi0gKgotICogQHBhcmFtIG8gdmll
dyBvYmplY3QgdG8gc2V0IHRoZSB6b29tIGxldmVsCi0gKiBAcGFyYW0gcGFnZV96b29tX2ZhY3Rv
ciBhIG5ldyBsZXZlbCB0byBzZXQKLSAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNj
ZXNzIG9yIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlCi0gKi8KLUVBUEkgRWluYV9Cb29sICAgIGV3
a192aWV3X3BhZ2Vfem9vbV9zZXQoRXZhc19PYmplY3QgKm8sIGZsb2F0IHBhZ2Vfem9vbV9mYWN0
b3IpOwotCi0vKioKLSAqIEdldHMgdGhlIGN1cnJlbnQgc2NhbGUgZmFjdG9yIG9mIHRoZSBwYWdl
LgotICoKLSAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIGdldCB0aGUgc2NhbGUgZmFjdG9yIAot
ICoKLSAqIEByZXR1cm4gY3VycmVudCBzY2FsZSBmYWN0b3IgaW4gdXNlIG9uIHN1Y2Nlc3Mgb3Ig
QGMgLTEuMCBvbiBmYWlsdXJlCi0gKi8KLUVBUEkgZmxvYXQgICAgICAgIGV3a192aWV3X3NjYWxl
X2dldChjb25zdCBFdmFzX09iamVjdCAqbyk7Ci0KLS8qKgotICogU2NhbGVzIHRoZSBjdXJyZW50
IHBhZ2UsIGNlbnRlcmVkIGF0IHRoZSBnaXZlbiBwb2ludC4KLSAqCi0gKiBAcGFyYW0gbyB2aWV3
IG9iamVjdCB0byBzZXQgdGhlIHpvb20gbGV2ZWwKLSAqIEBwYXJhbSBzY2FsZV9mYWN0b3IgYSBu
ZXcgbGV2ZWwgdG8gc2V0Ci0gKiBAcGFyYW0gY3ggeCBvZiBjZW50ZXIgY29vcmRpbmF0ZQotICog
QHBhcmFtIGN5IHkgb2YgY2VudGVyIGNvb3JkaW5hdGUKLSAqCi0gKiBAcmV0dXJuIEBjIEVJTkFf
VFJVRSBvbiBzdWNjZXNzIG9yIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlCi0gKi8KLUVBUEkgRWlu
YV9Cb29sICAgIGV3a192aWV3X3NjYWxlX3NldChFdmFzX09iamVjdCAqbywgZmxvYXQgc2NhbGVf
ZmFjdG9yLCBFdmFzX0Nvb3JkIGN4LCBFdmFzX0Nvb3JkIGN5KTsKLQotLyoqCi0gKiBHZXRzIHRo
ZSBjdXJyZW50IHRleHQgem9vbSBsZXZlbCBvZiB0aGUgbWFpbiBmcmFtZS4KLSAqCi0gKiBAcGFy
YW0gbyB2aWV3IG9iamVjdCB0byBnZXQgdGhlIHpvb20gbGV2ZWwKLSAqCi0gKiBAcmV0dXJuIGN1
cnJlbnQgem9vbSBsZXZlbCBpbiB1c2Ugb24gc3VjY2VzcyBvciBAYyAtMS4wIG9uIGZhaWx1cmUK
LSAqLwotRUFQSSBmbG9hdCAgICAgICAgZXdrX3ZpZXdfdGV4dF96b29tX2dldChjb25zdCBFdmFz
X09iamVjdCAqbyk7Ci0KLS8qKgotICogU2V0cyB0aGUgY3VycmVudCB0ZXh0IHpvb20gbGV2ZWwg
b2YgdGhlIG1haW4gZnJhbWUuCi0gKgotICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gc2V0IHRo
ZSB6b29tIGxldmVsCi0gKiBAcGFyYW0gdGV4dFpvb21GYWN0b3IgYSBuZXcgbGV2ZWwgdG8gc2V0
Ci0gKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcyBvciBAYyBFSU5BX0ZBTFNF
IG90aGVyd2lzZQotICovCi1FQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld190ZXh0X3pvb21fc2V0
KEV2YXNfT2JqZWN0ICpvLCBmbG9hdCB0ZXh0X3pvb21fZmFjdG9yKTsKLQotLyoqCi0gKiBHZXRz
IHRoZSBjdXJyZW50IHpvb20gbGV2ZWwgb2YgdGhlIG1haW4gZnJhbWUuCi0gKgotICogQHBhcmFt
IG8gdmlldyBvYmplY3QgdG8gZ2V0IHRoZSB6b29tIGxldmVsCi0gKgotICogQHJldHVybiBjdXJy
ZW50IHpvb20gbGV2ZWwgaW4gdXNlIG9uIHN1Y2Nlc3Mgb3IgQGMgLTEuMCBvbiBmYWlsdXJlCi0g
Ki8KLUVBUEkgZmxvYXQgICAgICAgIGV3a192aWV3X3pvb21fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0
ICpvKTsKLQotLyoqCi0gKiBTZXRzIHRoZSBjdXJyZW50IHpvb20gbGV2ZWwgb2YgdGhlIG1haW4g
ZnJhbWUsIGNlbnRlcmVkIGF0IHRoZSBnaXZlbiBwb2ludC4KLSAqCi0gKiBAcGFyYW0gbyB2aWV3
IG9iamVjdCB0byBzZXQgdGhlIHpvb20gbGV2ZWwKLSAqIEBwYXJhbSB6b29tIGEgbmV3IGxldmVs
IHRvIHNldAotICogQHBhcmFtIGN4IHggb2YgY2VudGVyIGNvb3JkaW5hdGUKLSAqIEBwYXJhbSBj
eSB5IG9mIGNlbnRlciBjb29yZGluYXRlCi0gKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24g
c3VjY2VzcyBvciBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZQotICovCi1FQVBJIEVpbmFfQm9vbCAg
ICBld2tfdmlld196b29tX3NldChFdmFzX09iamVjdCAqbywgZmxvYXQgem9vbSwgRXZhc19Db29y
ZCBjeCwgRXZhc19Db29yZCBjeSk7Ci0KLS8qKgotICogUXVlcmllcyBpZiB0aGUgc21vb3RoIHNj
YWxlIGlzIGVuYWJsZWQgd2hpbGUgdGhlIHdlYWsgem9vbS4KLSAqCi0gKiBAcGFyYW0gbyB2aWV3
IG9iamVjdCB0byBxdWVyeSBpZiB0aGUgc21vb3RoIHNjYWxlIGlzIGVuYWJsZWQgd2hpbGUgdGhl
IHdlYWsgem9vbQotICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIHRoZSBzbW9vdGggc2Nh
bGUgaXMgZW5hYmxlZCB3aGlsZSB0aGUgd2VhayB6b29tLCBvcgotICogICAgICAgICBAYyBFSU5B
X0ZBTFNFIGlmIG5vdCBvciBvbiBmYWlsdXJlCi0gKi8KLUVBUEkgRWluYV9Cb29sICAgIGV3a192
aWV3X3pvb21fd2Vha19zbW9vdGhfc2NhbGVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKLQot
LyoqCi0gKiBFbmFibGVzL2Rpc2FibGVzIHRoZSBzbW9vdGggc2NhbGUgd2hpbGUgdGhlIHdlYWsg
em9vbS4KLSAqCi0gKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBzZXQgdGhlIHNtb290aCBzY2Fs
ZSB3aGlsZSB0aGUgd2VhayB6b29tCi0gKiBAcGFyYW0gc21vb3RoX3NjYWxlIEBjIEVJTkFfVFJV
RSB0byBlbmFibGUgdGhlIHNtb290aCBzY2FsZQotICogICAgICAgIEBjIEVJTkFfRkFMU0UgdG8g
ZGlzYWJsZQotICovCi1FQVBJIHZvaWQgICAgICAgICBld2tfdmlld196b29tX3dlYWtfc21vb3Ro
X3NjYWxlX3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIHNtb290aF9zY2FsZSk7Ci0KLS8q
KgotICogU2V0cyB0aGUgY3VycmVudCB6b29tIGxldmVsIG9mIGJhY2tpbmcgc3RvcmUsIGNlbnRl
cmVkIGF0IGdpdmVuIHBvaW50LgotICoKLSAqIFVubGlrZSBld2tfdmlld196b29tX3NldCgpLCB0
aGlzIGNhbGwgZG8gbm90IGFzayBXZWJLaXQgdG8gcmVuZGVyCi0gKiBhdCBuZXcgc2l6ZSwgYnV0
IHNjYWxlIHdoYXQgaXMgYWxyZWFkeSByZW5kZXJlZCwgYmVpbmcgbXVjaCBmYXN0ZXIKLSAqIGJ1
dCB3b3JzZSBxdWFsaXR5LgotICoKLSAqIE9mdGVuIG9uZSBzaG91bGQgdXNlIGV3a192aWV3X3pv
b21fYW5pbWF0ZWRfc2V0KCksIGl0IHdpbGwgY2FsbCB0aGUKLSAqIHNhbWUgbWFjaGluZXJ5IGlu
dGVybmFsbHkuCi0gKgotICogQG5vdGUgdGhpcyB3aWxsIHNldCB2YXJpYWJsZXMgdXNlZCBieSBl
d2tfdmlld196b29tX2FuaW1hdGVkX3NldCgpCi0gKiAgICAgICBzbyBzdWItY2xhc3NlcyB3aWxs
IG5vdCByZXNldCBpbnRlcm5hbCBzdGF0ZSBvbiB0aGVpcgotICogICAgICAgImNhbGN1bGF0ZSIg
cGhhc2UuIFRvIHVuc2V0IHRob3NlIGFuZCBlbmFibGUgc3ViLWNsYXNzZXMgdG8KLSAqICAgICAg
IHJlc2V0IHRoZWlyIGludGVybmFsIHN0YXRlLCBjYWxsCi0gKiAgICAgICBld2tfdmlld196b29t
X2FuaW1hdGVkX21hcmtfc3RvcCgpLiBOYW1lbHksIHRoaXMgY2FsbCB3aWxsCi0gKiAgICAgICBz
ZXQgZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9tYXJrX3N0YXJ0KCkgdG8gYWN0dWFsIHdlYmtpdCB6
b29tCi0gKiAgICAgICBsZXZlbCwgZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9tYXJrX2VuZCgpIGFu
ZAotICogICAgICAgZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9tYXJrX2N1cnJlbnQoKSB0byBnaXZl
biB6b29tIGxldmVsLgotICoKLSAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIHNldCB0aGUgd2Vh
ayB6b29tIGxldmVsCi0gKiBAcGFyYW0gem9vbSBhIG5ldyBsZXZlbCB0byBzY2FsZSBiYWNraW5n
IHN0b3JlCi0gKiBAcGFyYW0gY3ggaG9yaXpvbnRhbCBjZW50ZXIgb2Zmc2V0LCByZWxhdGl2ZSB0
byBvYmplY3QgKHcvMiBpcyBtaWRkbGUpCi0gKiBAcGFyYW0gY3kgdmVydGljYWwgY2VudGVyIG9m
ZnNldCwgcmVsYXRpdmUgdG8gb2JqZWN0IChoLzIgaXMgbWlkZGxlKQotICoKLSAqIEByZXR1cm4g
QGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3Mgb3IgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UKLSAqLwot
RUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfem9vbV93ZWFrX3NldChFdmFzX09iamVjdCAqbywg
ZmxvYXQgem9vbSwgRXZhc19Db29yZCBjeCwgRXZhc19Db29yZCBjeSk7Ci0KLS8qKgotICogU2V0
cyBzdGFydCBvZiBhbiBpbnRlcm5hbCB6b29tIGFuaW1hdGlvbiBzdGF0ZSB0byB0aGUgZ2l2ZW4g
em9vbS4KLSAqCi0gKiBUaGlzIGRvZXMgbm90IG1vZGlmeSBhbnkgYWN0dWFsIHpvb20gaW4gV2Vi
S2l0IG9yIGJhY2tpbmcgc3RvcmUsCi0gKiBqdXN0IHNldCBuZWVkZWQgZmxhZyBzbyBzdWItY2xh
c3NlcyBrbm93cyB0aGV5IHNob3VsZCBub3QgcmVzZXQKLSAqIHRoZWlyIGFuIGludGVybmFsIHN0
YXRlLgotICoKLSAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIHNldCBzdGFydCBvZiBhbiBpbnRl
cm5hbCB6b29tIGFuaW1hdGlvbgotICogQHBhcmFtIHpvb20gYSBuZXcgc3RhcnQgdmFsdWUKLSAq
Ci0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzIG9yIEBjIEVJTkFfRkFMU0Ugb3Ro
ZXJ3aXNlCi0gKgotICogQHNlZSBld2tfdmlld196b29tX2FuaW1hdGVkX3NldCgpCi0gKiBAc2Vl
IGV3a192aWV3X3pvb21fd2Vha19zZXQoKQotICogQHNlZSBld2tfdmlld196b29tX2FuaW1hdGVk
X21hcmtfc3RvcCgpCi0gKiBAc2VlIGV3a192aWV3X3pvb21fYW5pbWF0ZWRfbWFya19lbmQoKQot
ICogQHNlZSBld2tfdmlld196b29tX2FuaW1hdGVkX21hcmtfY3VycmVudCgpCi0gKi8KLUVBUEkg
RWluYV9Cb29sICAgIGV3a192aWV3X3pvb21fYW5pbWF0ZWRfbWFya19zdGFydChFdmFzX09iamVj
dCAqbywgZmxvYXQgem9vbSk7Ci0KLS8qKgotICogU2V0cyBlbmQgb2YgYW4gaW50ZXJuYWwgem9v
bSBhbmltYXRpb24gc3RhdGUgdG8gZ2l2ZW4gem9vbS4KLSAqCi0gKiBUaGlzIGRvZXMgbm90IG1v
ZGlmeSBhbnkgYWN0dWFsIHpvb20gaW4gV2ViS2l0IG9yIGJhY2tpbmcgc3RvcmUsCi0gKiBqdXN0
IHNldCBuZWVkZWQgZmxhZyBzbyBzdWItY2xhc3NlcyBrbm93cyB0aGV5IHNob3VsZCBub3QgcmVz
ZXQKLSAqIHRoZWlyIGFuIGludGVybmFsIHN0YXRlLgotICoKLSAqIEBwYXJhbSBvIHZpZXcgb2Jq
ZWN0IHRvIHNldCBlbmQgb2YgYW4gaW50ZXJuYWwgem9vbSBhbmltYXRpb24KLSAqIEBwYXJhbSB6
b29tIGEgbmV3IGVuZCB2YWx1ZQotICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nl
c3Mgb3IgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UKLSAqCi0gKiBAc2VlIGV3a192aWV3X3pvb21f
YW5pbWF0ZWRfc2V0KCkKLSAqIEBzZWUgZXdrX3ZpZXdfem9vbV93ZWFrX3NldCgpCi0gKiBAc2Vl
IGV3a192aWV3X3pvb21fYW5pbWF0ZWRfbWFya19zdG9wKCkKLSAqIEBzZWUgZXdrX3ZpZXdfem9v
bV9hbmltYXRlZF9tYXJrX3N0YXJ0KCkKLSAqIEBzZWUgZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9t
YXJrX2N1cnJlbnQoKQotICovCi1FQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld196b29tX2FuaW1h
dGVkX21hcmtfZW5kKEV2YXNfT2JqZWN0ICpvLCBmbG9hdCB6b29tKTsKLQotLyoqCi0gKiBTZXRz
IGFuIGludGVybmFsIGN1cnJlbnQgem9vbSBhbmltYXRpb24gc3RhdGUgdG8gZ2l2ZW4gem9vbS4K
LSAqCi0gKiBUaGlzIGRvZXMgbm90IG1vZGlmeSBhbnkgYWN0dWFsIHpvb20gaW4gV2ViS2l0IG9y
IGJhY2tpbmcgc3RvcmUsCi0gKiBqdXN0IHNldCBuZWVkZWQgZmxhZyBzbyBzdWItY2xhc3NlcyBr
bm93cyB0aGV5IHNob3VsZCBub3QgcmVzZXQKLSAqIHRoZWlyIGFuIGludGVybmFsIHN0YXRlLgot
ICoKLSAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIHNldCBhbiBpbnRlcm5hbCBjdXJyZW50IHpv
b20gYW5pbWF0aW9uCi0gKiBAcGFyYW0gem9vbSBhIG5ldyBjdXJyZW50IHZhbHVlCi0gKgotICog
QHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcyBvciBAYyBFSU5BX0ZBTFNFIG90aGVyd2lz
ZQotICoKLSAqIEBzZWUgZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9zZXQoKQotICogQHNlZSBld2tf
dmlld196b29tX3dlYWtfc2V0KCkKLSAqIEBzZWUgZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9tYXJr
X3N0b3AoKQotICogQHNlZSBld2tfdmlld196b29tX2FuaW1hdGVkX21hcmtfc3RhcnQoKQotICog
QHNlZSBld2tfdmlld196b29tX2FuaW1hdGVkX21hcmtfZW5kKCkKLSAqLwotRUFQSSBFaW5hX0Jv
b2wgICAgZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9tYXJrX2N1cnJlbnQoRXZhc19PYmplY3QgKm8s
IGZsb2F0IHpvb20pOwotCi0vKioKLSAqIFVubWFya3MgYW4gaW50ZXJuYWwgem9vbSBhbmltYXRp
b24gc3RhdGUuCi0gKgotICogVGhlIHN0YXJ0LCBlbmQgYW5kIGN1cnJlbnQgdmFsdWVzIG9mIGFu
IGludGVybmFsIHpvb20gYW5pbWF0aW9uIGFyZSB6ZXJvZWQuCi0gKgotICogQHBhcmFtIG8gdmll
dyBvYmplY3QgdG8gdW5tYXJrIGFuIGludGVybmFsIHpvb20gYW5pbWF0aW9uIHN0YXRlCi0gKgot
ICogQHNlZSBld2tfdmlld196b29tX2FuaW1hdGVkX21hcmtfc3RhcnQoKQotICogQHNlZSBld2tf
dmlld196b29tX2FuaW1hdGVkX21hcmtfZW5kKCkKLSAqIEBzZWUgZXdrX3ZpZXdfem9vbV9hbmlt
YXRlZF9tYXJrX2N1cnJlbnQoKQotICogQHNlZSBld2tfdmlld196b29tX3dlYWtfc2V0KCkKLSAq
LwotRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9tYXJrX3N0b3AoRXZh
c19PYmplY3QgKm8pOwotCi0vKioKLSAqIFNldHMgdGhlIGN1cnJlbnQgem9vbSBsZXZlbCB3aGls
ZSBhbmltYXRpbmcuCi0gKgotICogSWYgdGhlIHZpZXcgd2FzIGFscmVhZHkgYW5pbWF0aW5nIHRv
IGFub3RoZXIgem9vbSwgaXQgd2lsbCBzdGFydAotICogZnJvbSBjdXJyZW50IHBvaW50IHRvIHRo
ZSBuZXh0IHByb3ZpZGVkIHpvb20gKEBhIHpvb20gcGFyYW1ldGVyKQotICogYW5kIGR1cmF0aW9u
IChAYSBkdXJhdGlvbiBwYXJhbWV0ZXIpLgotICoKLSAqIFRoaXMgaXMgdGhlIHJlY29tbWVuZGVk
IHdheSB0byBkbyB0cmFuc2l0aW9ucyBmcm9tIG9uZSBsZXZlbCB0bwotICogYW5vdGhlci4gSG93
ZXZlciwgb25lIG1heSB3aXNoIHRvIGRvIHRob3NlIGZyb20gb3V0c2lkZSwgaW4gdGhhdAotICog
Y2FzZSB1c2UgZXdrX3ZpZXdfem9vbV93ZWFrX3NldCgpIGFuZCBsYXRlciBjb250cm9sIGludGVy
bWVkaWF0ZQotICogc3RhdGVzIHdpdGggZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9tYXJrX2N1cnJl
bnQoKSwKLSAqIGV3a192aWV3X3pvb21fYW5pbWF0ZWRfbWFya19lbmQoKSBhbmQKLSAqIGV3a192
aWV3X3pvb21fYW5pbWF0ZWRfbWFya19zdG9wKCkuCi0gKgotICogQHBhcmFtIG8gdmlldyBvYmpl
Y3QgdG8gYW5pbWF0ZQotICogQHBhcmFtIHpvb20gZmluYWwgem9vbSBsZXZlbCB0byB1c2UKLSAq
IEBwYXJhbSBkdXJhdGlvbiB0aW1lIGluIHNlY29uZHMgdGhlIGFuaW1hdGlvbiBzaG91bGQgdGFr
ZS4KLSAqIEBwYXJhbSBjeCBvZmZzZXQgaW5zaWRlIG9iamVjdCB0aGF0IGRlZmluZXMgem9vbSBj
ZW50ZXIuIDAgaXMgbGVmdCBzaWRlCi0gKiBAcGFyYW0gY3kgb2Zmc2V0IGluc2lkZSBvYmplY3Qg
dGhhdCBkZWZpbmVzIHpvb20gY2VudGVyLiAwIGlzIHRvcCBzaWRlCi0gKiBAcmV0dXJuIEBjIEVJ
TkFfVFJVRSBpZiBhbmltYXRpb24gd2lsbCBiZSBzdGFydGVkLCBAYyBFSU5BX0ZBTFNFIGlmIG5v
dAotICogICAgICAgICAgICBiZWNhdXNlIHpvb20gaXMgdG9vIHNtYWxsL2JpZwotICovCi1FQVBJ
IEVpbmFfQm9vbCAgICBld2tfdmlld196b29tX2FuaW1hdGVkX3NldChFdmFzX09iamVjdCAqbywg
ZmxvYXQgem9vbSwgZmxvYXQgZHVyYXRpb24sIEV2YXNfQ29vcmQgY3gsIEV2YXNfQ29vcmQgY3kp
OwotCi0vKioKLSAqIEVuYWJsZXMgKHJlc3VtZXMpIHJlbmRlcmluZy4KLSAqCi0gKiBAcGFyYW0g
byB2aWV3IG9iamVjdCB0byBlbmFibGUgcmVuZGVyaW5nCi0gKgotICogQHJldHVybiBAYyBFSU5B
X1RSVUUgaWYgcmVuZGVyaW5nIHdhcyBlbmFibGVkLCBAYyBFSU5BX0ZBTFNFCi0gKiAgICAgICAg
IG90aGVyd2lzZSAoZXJyb3JzLCByZW5kZXJpbmcgc3VzcGVuc2lvbiBmZWF0dXJlIG5vdCBzdXBw
b3J0ZWQpCi0gKgotICogQHNlZSBld2tfdmlld19kaXNhYmxlX3JlbmRlcigpCi0gKi8KLUVBUEkg
RWluYV9Cb29sICAgIGV3a192aWV3X2VuYWJsZV9yZW5kZXIoY29uc3QgRXZhc19PYmplY3QgKm8p
OwotCi0vKioKLSAgKiBEaXNhYmxlcyAoc3VzcGVuZHMpIHJlbmRlcmluZy4KLSAgKgotICAqIEBw
YXJhbSBvIHZpZXcgb2JqZWN0IHRvIGRpc2FibGUgcmVuZGVyaW5nCi0gICoKLSAgKiBAcmV0dXJu
IEBjIEVJTkFfVFJVRSBpZiByZW5kZXJpbmcgd2FzIGRpc2FibGVkLCBAYyBFSU5BX0ZBTFNFCi0g
ICogICAgICAgICBvdGhlcndpc2UgKGVycm9ycywgcmVuZGVyaW5nIHN1c3BlbnNpb24gbm90IHN1
cHBvcnRlZCkKLSAgKi8KLUVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X2Rpc2FibGVfcmVuZGVy
KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKLQotLyoqCi0gKiBHZXRzIHRoZSBpbnB1dCBtZXRob2Qg
aGludHMuCi0gKgotICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gZ2V0IHRoZSBpbnB1dCBtZXRo
b2QgaGludHMKLSAqCi0gKiBAc2VlIEV3a19JbWgKLSAqCi0gKiBAcmV0dXJuIHRoZSBpbnB1dCBt
ZXRob2QgaGludHMgYXMgQGEgRXdrX0ltaCBiaXRzLWZpZWxkCi0gKi8KLUVBUEkgdW5zaWduZWQg
aW50IGV3a192aWV3X2ltaF9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOwotCi0vKioKLSAqIEdl
dHMgdGhlIHVzZXIgYWdlbnQgc3RyaW5nLgotICoKLSAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRv
IGdldCB0aGUgdXNlciBhZ2VudCBzdHJpbmcKLSAqCi0gKiBAcmV0dXJuIHRoZSB1c2VyIGFnZW50
IHN0cmluZwotICovCi1FQVBJIGNvbnN0IGNoYXIgICpld2tfdmlld19zZXR0aW5nX3VzZXJfYWdl
bnRfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKLQotLyoqCi0gKiBTZXRzIHRoZSB1c2VyIGFn
ZW50IHN0cmluZy4KLSAqCi0gKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBzZXQgdGhlIHVzZXIg
YWdlbnQgc3RyaW5nCi0gKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcyBvciBA
YyBFSU5BX0ZBTFNFIG9uIGZhaWx1cmUKLSAqLwotRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdf
c2V0dGluZ191c2VyX2FnZW50X3NldChFdmFzX09iamVjdCAqbywgY29uc3QgY2hhciAqdXNlcl9h
Z2VudCk7Ci0KLS8qKgotICogUXVlcmllcyBpZiB0aGUgaW1hZ2VzIGFyZSBsb2FkZWQgYXV0b21h
dGljYWxseS4KLSAqCi0gKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBxdWVyeSBpZiB0aGUgaW1h
Z2VzIGFyZSBsb2FkZWQgYXV0b21hdGljYWxseQotICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVF
IGlmIHRoZSBpbWFnZXMgYXJlIGxvYWRlZCBhdXRvbWF0aWNhbGx5LAotICogICAgICAgICBAYyBF
SU5BX0ZBTFNFIGlmIG5vdCBvciBvbiBmYWlsdXJlCi0gKi8KLUVBUEkgRWluYV9Cb29sICAgIGV3
a192aWV3X3NldHRpbmdfYXV0b19sb2FkX2ltYWdlc19nZXQoY29uc3QgRXZhc19PYmplY3QgKm8p
OwotCi0vKioKLSAqIEVuYWJsZXMvZGlzYWJsZXMgYXV0byBsb2FkaW5nIG9mIHRoZSBpbWFnZXMu
Ci0gKgotICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gc2V0IGF1dG8gbG9hZGluZyBvZiB0aGUg
aW1hZ2VzCi0gKiBAcGFyYW0gYXV0b21hdGljIEBjIEVJTkFfVFJVRSB0byBlbmFibGUgYXV0byBs
b2FkaW5nIG9mIHRoZSBpbWFnZXMsCi0gKiAgICAgICAgQGMgRUlOQV9GQUxTRSB0byBkaXNhYmxl
Ci0gKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcyBvciBAYyBFSU5BX0ZBTFNF
IG9uIGZhaWx1cmUKLSAqLwotRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfc2V0dGluZ19hdXRv
X2xvYWRfaW1hZ2VzX3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIGF1dG9tYXRpYyk7Ci0K
LS8qKgotICogUXVlcmllcyBpZiB0aGUgaW1hZ2VzIGFyZSBzaHJpbmtlZCBhdXRvbWF0aWNhbGx5
Ci0gKgotICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gcXVlcnkgaWYgdGhlIGltYWdlcyBhcmUg
c2hyaW5rZWQgYXV0b21hdGljYWxseQotICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIHRo
ZSBpbWFnZXMgYXJlIHNocmlua2VkIGF1dG9tYXRpY2FsbHksCi0gKiAgICAgICAgIEBjIEVJTkFf
RkFMU0UgaWYgbm90IG9yIG9uIGZhaWx1cmUKLSAqLwotRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3Zp
ZXdfc2V0dGluZ19hdXRvX3Nocmlua19pbWFnZXNfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsK
LQotLyoqCi0gKiBFbmFibGVzL2Rpc2FibGVzIGF1dG8gc2hyaW5raW5nIG9mIHRoZSBpbWFnZXMu
Ci0gKgotICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gc2V0IGF1dG8gc2hyaW5raW5nIG9mIHRo
ZSBpbWFnZXMKLSAqIEBwYXJhbSBhdXRvbWF0aWMgQGMgRUlOQV9UUlVFIHRvIGVuYWJsZSBhdXRv
IHNocmlua2luZyBvZiB0aGUgaW1hZ2VzLAotICogICAgICAgIEBjIEVJTkFfRkFMU0UgdG8gZGlz
YWJsZQotICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3Mgb3IgQGMgRUlOQV9G
QUxTRSBvbiBmYWlsdXJlCi0gKi8KLUVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3NldHRpbmdf
YXV0b19zaHJpbmtfaW1hZ2VzX3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIGF1dG9tYXRp
Yyk7Ci0KLS8qKgotICogUXVlcmllcyBpZiB0aGUgdmlldyBjYW4gYmUgcmVzaXplZCBhdXRvbWF0
aWNhbGx5LgotICoKLSAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIHF1ZXJ5IGlmIHRoZSB2aWV3
IGNhbiBiZSByZXNpemVkIGF1dG9tYXRpY2FsbHkKLSAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJV
RSBpZiB2aWV3IGNhbiBiZSByZXNpemVkIGF1dG9tYXRpY2FsbHksCi0gKiAgICAgICAgIEBjIEVJ
TkFfRkFMU0UgaWYgbm90IG9yIG9uIGZhaWx1cmUKLSAqLwotRUFQSSBFaW5hX0Jvb2wgICAgZXdr
X3ZpZXdfc2V0dGluZ19lbmFibGVfYXV0b19yZXNpemVfd2luZG93X2dldChjb25zdCBFdmFzX09i
amVjdCAqbyk7Ci0KLS8qKgotICogRW5hYmxlcy9kaXNhYmxlcyBpZiB0aGUgdmlldyBjYW4gYmUg
cmVzaXplZCBhdXRvbWF0aWNhbGx5LgotICoKLSAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIHNl
dCBpZiB0aGUgdmlldyBjYW4gYmUgcmVzaXplZCBhdXRvbWF0aWNhbGx5Ci0gKiBAcGFyYW0gcmVz
aXphYmxlIEBjIEVJTkFfVFJVRSBpZiB2aWV3IGNhbiBiZSByZXNpemFibGUgYXV0b21hdGljYWxs
eSwKLSAqICAgICAgICBAYyBFSU5BX1RSVUUgaWYgbm90Ci0gKgotICogQHJldHVybiBAYyBFSU5B
X1RSVUUgb24gc3VjY2VzcyBvciBAYyBFSU5BX0ZBTFNFIG9uIGZhaWx1cmUKLSAqLwotRUFQSSBF
aW5hX0Jvb2wgICAgZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfYXV0b19yZXNpemVfd2luZG93X3Nl
dChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIHJlc2l6YWJsZSk7Ci0KLS8qKgotICogUXVlcmll
cyBpZiB0aGUgc2NyaXB0cyBjYW4gYmUgZXhlY3V0ZWQuCi0gKgotICogQHBhcmFtIG8gdmlldyBv
YmplY3QgdG8gcXVlcnkgaWYgdGhlIHNjcmlwdHMgY2FuIGJlIGV4ZWN1dGVkCi0gKgotICogQHJl
dHVybiBAYyBFSU5BX1RSVUUgaWYgdGhlIHNjcmlwdHMgY2FuIGJlIGV4ZWN1dGVkCi0gKiAgICAg
ICAgIEBjIEVJTkFfRkFMU0UgaWYgbm90IG9yIG9uIGZhaWx1cmUKLSAqLwotRUFQSSBFaW5hX0Jv
b2wgICAgZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfc2NyaXB0c19nZXQoY29uc3QgRXZhc19PYmpl
Y3QgKm8pOwotCi0vKioKLSAqIEVuYWJsZXMvZGlzYWJsZXMgc2NyaXB0cyBleGVjdXRpbmcuCi0g
KgotICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gc2V0IHNjcmlwdCBleGVjdXRpbmcKLSAqIEBw
YXJhbSBlbmFibGUgQGMgRUlOQV9UUlVFIHRvIGVuYWJsZSBzY3JpcHRzIGV4ZWN1dGluZwotICog
ICAgICAgIEBjIEVJTkFfRkFMU0UgdG8gZGlzYWJsZQotICoKLSAqIEByZXR1cm4gQGMgRUlOQV9U
UlVFIG9uIHN1Y2Nlc3Mgb3IgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJlCi0gKi8KLUVBUEkgRWlu
YV9Cb29sICAgIGV3a192aWV3X3NldHRpbmdfZW5hYmxlX3NjcmlwdHNfc2V0KEV2YXNfT2JqZWN0
ICpvLCBFaW5hX0Jvb2wgZW5hYmxlKTsKLQotLyoqCi0gKiBRdWVyaWVzIGlmIHRoZSBwbHVnLWlu
cyBhcmUgZW5hYmxlZC4KLSAqCi0gKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBxdWVyeSBpZiB0
aGUgcGx1Zy1pbnMgYXJlIGVuYWJsZWQKLSAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiB0
aGUgcGx1Z2lucyBhcmUgZW5hYmxlZAotICogICAgICAgICBAYyBFSU5BX0ZBTFNFIGlmIG5vdCBv
ciBvbiBmYWlsdXJlCi0gKi8KLUVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3NldHRpbmdfZW5h
YmxlX3BsdWdpbnNfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKLQotLyoqCi0gKiBFbmFibGVz
L2Rpc2FibGVzIHRoZSBwbHVnLWlucy4KLSAqCi0gKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBz
ZXQgdGhlIHBsdWctaW5zCi0gKiBAcGFyYW0gZW5hYmxlIEBjIEVJTkFfVFJVRSB0byBlbmFibGUg
dGhlIHBsdWctaW5zCi0gKiAgICAgICAgQGMgRUlOQV9GQUxTRSB0byBkaXNhYmxlCi0gKgotICog
QHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcyBvciBAYyBFSU5BX0ZBTFNFIG9uIGZhaWx1
cmUKLSAqLwotRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfcGx1Z2lu
c19zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBlbmFibGUpOwotCi0vKioKLSAqIFF1ZXJp
ZXMgaWYgdGhlIGZyYW1lIGZsYXR0ZW5pbmcgZmVhdHVyZSBpcyBlbmFibGVkLgotICoKLSAqIEBw
YXJhbSBvIHZpZXcgb2JqZWN0IHRvIHF1ZXJ5IGlmIHRoZSBmcmFtZSBmbGF0dGVuaW5nIGZlYXR1
cmUgaXMgZW5hYmxlZAotICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIHRoZSBmcmFtZSBm
bGF0dGVuaW5nIGZlYXR1cmUgaXMgZW5hYmxlZCwKLSAqICAgICAgICAgQGMgRUlOQV9GQUxTRSBp
ZiBub3Qgb3Igb24gZmFpbHVyZQotICovCi1FQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld19zZXR0
aW5nX2VuYWJsZV9mcmFtZV9mbGF0dGVuaW5nX2dldChjb25zdCBFdmFzX09iamVjdCAqbyk7Ci0K
LS8qKgotICogRW5hYmxlcy9kaXNhYmxlcyB0aGUgZnJhbWUgZmxhdHRlbmluZyBmZWF0dXJlLgot
ICoKLSAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIHNldCB0aGUgZnJhbWUgZmxhdHRlbmluZyBm
ZWF0dXJlCi0gKiBAcGFyYW0gZW5hYmxlIEBjIEVJTkFfVFJVRSB0byBlbmFibGUgdGhlIGZyYW1l
IGZsYXR0ZW5pbmcgZmVhdHVyZQotICogICAgICAgIEBjIEVJTkFfRkFMU0UgdG8gZGlzYWJsZQot
ICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3Mgb3IgQGMgRUlOQV9GQUxTRSBv
biBmYWlsdXJlCi0gKi8KLUVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3NldHRpbmdfZW5hYmxl
X2ZyYW1lX2ZsYXR0ZW5pbmdfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgZW5hYmxlKTsK
LQotLyoqCi0gKiBRdWVyaWVzIGlmIHRoZSBzY3JpcHRzIGNhbiBvcGVuIHRoZSBuZXcgd2luZG93
cy4KLSAqCi0gKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBxdWVyeSBpZiB0aGUgc2NyaXB0cyBj
YW4gb3BlbiB0aGUgbmV3IHdpbmRvd3MKLSAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiB0
aGUgc2NyaXB0cyBjYW4gb3BlbiB0aGUgbmV3IHdpbmRvd3MKLSAqICAgICAgICAgQGMgRUlOQV9G
QUxTRSBpZiBub3Qgb3Igb24gZmFpbHVyZQotICovCi1FQVBJIEVpbmFfQm9vbCAgICBld2tfdmll
d19zZXR0aW5nX3NjcmlwdHNfY2FuX29wZW5fd2luZG93c19nZXQoY29uc3QgRXZhc19PYmplY3Qg
Km8pOwotCi0vKioKLSAqIEVuYWJsZXMvZGlzYWJsZXMgaWYgdGhlIHNjcmlwdHMgY2FuIG9wZW4g
dGhlIG5ldyB3aW5kb3dzLgotICoKLSAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIHNldCBpZiB0
aGUgc2NyaXB0cyBjYW4gb3BlbiB0aGUgbmV3IHdpbmRvd3MKLSAqIEBwYXJhbSBhbGxvdyBAYyBF
SU5BX1RSVUUgaWYgdGhlIHNjcmlwdHMgY2FuIG9wZW4gdGhlIG5ldyB3aW5kb3dzCi0gKiAgICAg
ICAgQGMgRUlOQV9GQUxTRSBpZiBub3QKLSAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBz
dWNjZXNzIG9yIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZSAoc2NyaXB0cyBhcmUgZGlzYWJsZWQp
Ci0gKgotICogQHNlZSBld2tfdmlld19zZXR0aW5nX2VuYWJsZV9zY3JpcHRzX3NldAotICovCi1F
QVBJIEVpbmFfQm9vbCAgICBld2tfdmlld19zZXR0aW5nX3NjcmlwdHNfY2FuX29wZW5fd2luZG93
c19zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBhbGxvdyk7Ci0KLS8qKgotICogUmV0dXJu
cyB3aGV0aGVyIHNjcmlwdHMgY2FuIGNsb3NlIHdpbmRvd3MgYXV0b21hdGljYWxseS4KLSAqCi0g
KiBAcGFyYW0gbyBWaWV3IHdob3NlIHNldHRpbmdzIHRvIGNoZWNrLgotICoKLSAqIEByZXR1cm4g
QGMgRUlOQV9UUlVFIGlmIHNjcmlwdHMgY2FuIGNsb3NlIHdpbmRvd3MsIEBjIEVJTkFfRkFMU0Ug
b3RoZXJ3aXNlLgotICovCi1FQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld19zZXR0aW5nX3Njcmlw
dHNfY2FuX2Nsb3NlX3dpbmRvd3NfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKLQotLyoqCi0g
KiBTZXRzIHdoZXRoZXIgc2NyaXB0cyBhcmUgYWxsb3dlZCB0byBjbG9zZSB3aW5kb3dzIGF1dG9t
YXRpY2FsbHkuCi0gKgotICogQHBhcmFtIG8gVmlldyB3aG9zZSBzZXR0aW5ncyB0byBjaGFuZ2Uu
Ci0gKiBAcGFyYW0gYWxsb3cgQGMgRUlOQV9UUlVFIHRvIGFsbG93IHNjcmlwdHMgdG8gY2xvc2Ug
d2luZG93cywKLSAqICAgICAgICAgICAgICBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZS4KLSAqCi0g
KiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiB0aGUgc2V0dGluZyBjb3VsZCBiZSBjaGFuZ2VkIHN1
Y2Nlc3NmdWxseSwKLSAqICAgICAgICAgQGMgRUlOQV9GQUxTRSBpbiBjYXNlIGFuIGVycm9yIG9j
Y3VycmVkLgotICovCi1FQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld19zZXR0aW5nX3NjcmlwdHNf
Y2FuX2Nsb3NlX3dpbmRvd3Nfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgYWxsb3cpOwot
Ci0vKioKLSAqIFJldHVybnMgd2hldGhlciBzY3JpcHRzIGNhbiBhY2Nlc3MgY2xpcGJvYXJkLgot
ICoKLSAqIEBwYXJhbSBvIFZpZXcgd2hvc2Ugc2V0dGluZ3MgdG8gY2hlY2suCi0gKgotICogQHJl
dHVybiBAYyBFSU5BX1RSVUUgaWYgc2NyaXB0cyBjYW4gYWNjZXNzIGNsaXBib2FyZCwgQGMgRUlO
QV9GQUxTRSBvdGhlcndpc2UuCi0gKi8KLUVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3NldHRp
bmdfc2NyaXB0c19jYW5fYWNjZXNzX2NsaXBib2FyZF9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8p
OwotCi0vKioKLSAqIFNldHMgd2hldGhlciBzY3JpcHRzIGFyZSBhbGxvd2VkIHRvIGFjY2VzcyBj
bGlwYm9hcmQuCi0gKgotICogVGhlIGRlZmF1bHQgdmFsdWUgaXMgQGMgRUlOQV9GQUxTRS4gSWYg
c2V0IHRvIEBjIEVJTkFfVFJVRSwgZG9jdW1lbnQuZXhlY0NvbW1hbmQoKQotICogYWxsb3dzIGN1
dCwgY29weSBhbmQgcGFzdGUgY29tbWFuZHMuIAotICoKLSAqIEBwYXJhbSBvIFZpZXcgd2hvc2Ug
c2V0dGluZ3MgdG8gY2hhbmdlLgotICogQHBhcmFtIGFsbG93IEBjIEVJTkFfVFJVRSB0byBhbGxv
dyBzY3JpcHRzIGFjY2VzcyBjbGlwYm9hcmQsCi0gKiAgICAgICAgICAgICAgQGMgRUlOQV9GQUxT
RSBvdGhlcndpc2UuCi0gKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgdGhlIHNldHRpbmcg
Y291bGQgYmUgY2hhbmdlZCBzdWNjZXNzZnVsbHksCi0gKiAgICAgICAgIEBjIEVJTkFfRkFMU0Ug
aW4gY2FzZSBhbiBlcnJvciBvY2N1cnJlZC4KLSAqLwotRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3Zp
ZXdfc2V0dGluZ19zY3JpcHRzX2Nhbl9hY2Nlc3NfY2xpcGJvYXJkX3NldChFdmFzX09iamVjdCAq
bywgRWluYV9Cb29sIGFsbG93KTsKLQotLyoqCi0gKiBRdWVyaWVzIGlmIEhUTUwgZWxlbWVudHMg
QGMgdGV4dGFyZWEgY2FuIGJlIHJlc2l6YWJsZS4KLSAqCi0gKiBAcGFyYW0gbyB2aWV3IG9iamVj
dCB0byBxdWVyeSBpZiB0aGUgdGV4dGFyZWEgZWxlbWVudHMgY2FuIGJlIHJlc2l6YWJsZQotICoK
LSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIHRoZSB0ZXh0YXJlYSBlbGVtZW50cyBjYW4gYmUg
cmVzaXphYmxlCi0gKiAgICAgICAgIEBjIEVJTkFfRkFMU0UgaWYgbm90IG9yIG9uIGZhaWx1cmUK
LSAqLwotRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfc2V0dGluZ19yZXNpemFibGVfdGV4dGFy
ZWFzX2dldChjb25zdCBFdmFzX09iamVjdCAqbyk7Ci0KLS8qKgotICogRW5hYmxlcy9kaXNhYmxl
cyBpZiBIVE1MIGVsZW1lbnRzIEBjIHRleHRhcmVhIGNhbiBiZSByZXNpemFibGUuCi0gKgotICog
QHBhcmFtIG8gdmlldyBvYmplY3QgdG8gc2V0IGlmIHRoZSB0ZXh0YXJlYSBlbGVtZW50cyBjYW4g
YmUgcmVzaXphYmxlCi0gKiBAcGFyYW0gZW5hYmxlIEBjIEVJTkFfVFJVRSBpZiB0aGUgdGV4dGFy
ZWEgZWxlbWVudHMgY2FuIGJlIHJlc2l6YWJsZQotICogICAgICAgIEBjIEVJTkFfRkFMU0UgaWYg
bm90Ci0gKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcyBvciBAYyBFSU5BX0ZB
TFNFIG9uIGZhaWx1cmUKLSAqLwotRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfc2V0dGluZ19y
ZXNpemFibGVfdGV4dGFyZWFzX3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIGVuYWJsZSk7
Ci0KLS8qKgotICogR2V0cyB0aGUgdXNlciBzdHlsZSBzaGVldC4KLSAqCi0gKiBAcGFyYW0gbyB2
aWV3IG9iamVjdCB0byBnZXQgdGhlIHVzZXIgc3R5bGUgc2hlZXQKLSAqCi0gKiBAcmV0dXJuIHRo
ZSB1c2VyIHN0eWxlIHNoZWV0Ci0gKi8KLUVBUEkgY29uc3QgY2hhciAgKmV3a192aWV3X3NldHRp
bmdfdXNlcl9zdHlsZXNoZWV0X2dldChjb25zdCBFdmFzX09iamVjdCAqbyk7Ci0KLS8qKgotICog
U2V0cyB0aGUgdXNlciBzdHlsZSBzaGVldC4KLSAqCi0gKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0
byBzZXQgdGhlIHVzZXIgc3R5bGUgc2hlZXQKLSAqIEBwYXJhbSB1cmkgdW5pZm9ybSByZXNvdXJj
ZSBpZGVudGlmaWVyIHRvIHVzZXIgc3R5bGUgc2hlZXQKLSAqCi0gKiBAcmV0dXJuIEBjIEVJTkFf
VFJVRSBvbiBzdWNjZXNzIG9yIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZQotICovCi1FQVBJIEVp
bmFfQm9vbCAgICBld2tfdmlld19zZXR0aW5nX3VzZXJfc3R5bGVzaGVldF9zZXQoRXZhc19PYmpl
Y3QgKm8sIGNvbnN0IGNoYXIgKnVyaSk7Ci0KLS8qKgotICogUXVlcmllcyBpZiB0aGUgcHJpdmF0
ZSBicm93c2luZyBmZWF0dXJlIGlzIGVuYWJsZWQuCi0gKgotICogQHBhcmFtIG8gdmlldyBvYmpl
Y3QgdG8gcXVlcnkgaWYgdGhlIHByaXZhdGUgYnJvd3NpbmcgZmVhdHVyZSBpcyBlbmFibGVkCi0g
KgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgdGhlIHByaXZhdGUgYnJvd3NpbmcgZmVhdHVy
ZSBpcyBlbmFibGVkLCBvcgotICogICAgICAgICBAYyBFSU5BX0ZBTFNFIGlmIG5vdCBvciBvbiBm
YWlsdXJlCi0gKgotICogQHNlZSBld2tfdmlld19zZXR0aW5nX3ByaXZhdGVfYnJvd3Npbmdfc2V0
Ci0gKi8KLUVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3NldHRpbmdfcHJpdmF0ZV9icm93c2lu
Z19nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOwotCi0vKioKLSAqIEVuYWJsZXMvZGlzYWJsZXMg
dGhlIHByaXZhdGUgYnJvd3NpbmcgZmVhdHVyZS4KLSAqCi0gKiBXaGVuIHRoaXMgb3B0aW9uIGlz
IHNldCwgV2ViQ29yZSB3aWxsIGF2b2lkIHN0b3JpbmcgYW55IHJlY29yZCBvZiBicm93c2luZwot
ICogYWN0aXZpdHkgIHRoYXQgbWF5IHBlcnNpc3Qgb24gZGlzayBvciByZW1haW4gZGlzcGxheWVk
IHdoZW4gdGhlCi0gKiBvcHRpb24gaXMgcmVzZXQuCi0gKgotICogVGhpcyBvcHRpb24gZG9lcyBu
b3QgYWZmZWN0IHRoZSBzdG9yYWdlIG9mIHN1Y2ggaW5mb3JtYXRpb24gaW4gUkFNLgotICoKLSAq
IFRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIHJlc3BlY3QgdGhpcyBzZXR0aW5nOgotICogIC0gSFRN
TDUvRE9NIFN0b3JhZ2UKLSAqICAtIEljb24gRGF0YWJhc2UKLSAqICAtIENvbnNvbGUgTWVzc2Fn
ZXMKLSAqICAtIE1lbW9yeUNhY2hlCi0gKiAgLSBBcHBsaWNhdGlvbiBDYWNoZQotICogIC0gQmFj
ay9Gb3J3YXJkIFBhZ2UgSGlzdG9yeQotICogIC0gUGFnZSBTZWFyY2ggUmVzdWx0cwotICogIC0g
SFRUUCBDb29raWVzCi0gKiAgLSBQbHVnLWlucyAodGhhdCBzdXBwb3J0IE5QTlZwcml2YXRlTW9k
ZUJvb2wpCi0gKgotICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gc2V0IHRoZSBwcml2YXRlIGJy
b3dzaW5nIGZlYXR1cmUKLSAqIEBwYXJhbSBlbmFibGUgQGMgRUlOQV9UUlVFIHRvIGVuYWJsZSB0
aGUgcHJpdmF0ZSBicm93c2luZyBmZWF0dXJlCi0gKiAgICAgICAgQGMgRUlOQV9GQUxTRSB0byBk
aXNhYmxlCi0gKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcyBvciBAYyBFSU5B
X0ZBTFNFIG9uIGZhaWx1cmUKLSAqLwotRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfc2V0dGlu
Z19wcml2YXRlX2Jyb3dzaW5nX3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIGVuYWJsZSk7
Ci0KLS8qKgotICogUmV0dXJucyB3aGV0aGVyIEhUTUw1IGFwcGxpY2F0aW9uIGNhY2hlIHN1cHBv
cnQgaXMgZW5hYmxlZCBmb3IgdGhpcyB2aWV3LgotICoKLSAqIFRoZSBPZmZsaW5lIEFwcGxpY2F0
aW9uIENhY2hpbmcgQVBJcyBhcmUgcGFydCBvZiBIVE1MNSBhbmQgYWxsb3cgYXBwbGljYXRpb25z
IHRvIHN0b3JlIGRhdGEgbG9jYWxseSB0aGF0IGlzIGFjY2Vzc2VkCi0gKiB3aGVuIHRoZSBuZXR3
b3JrIGNhbm5vdCBiZSByZWFjaGVkLgotICoKLSAqIEFwcGxpY2F0aW9uIGNhY2hlIHN1cHBvcnQg
aXMgZW5hYmxlZCBieSBkZWZhdWx0LgotICoKLSAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHdob3Nl
IHNldHRpbmdzIHRvIHF1ZXJ5Ci0gKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgdGhlIGFw
cGxpY2F0aW9uIGNhY2hlIGlzIGVuYWJsZWQsCi0gKiAgICAgICAgIEBjIEVJTkFfRkFMU0UgaWYg
bm90IG9yIG9uIGZhaWx1cmUKLSAqCi0gKiBAc2EgZXdrX3NldHRpbmdzX2FwcGxpY2F0aW9uX2Nh
Y2hlX3BhdGhfc2V0Ci0gKi8KLUVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3NldHRpbmdfYXBw
bGljYXRpb25fY2FjaGVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKLQotLyoqCi0gKiBFbmFi
bGVzL2Rpc2FibGVzIHRoZSBIVE1MNSBhcHBsaWNhdGlvbiBjYWNoZSBmb3IgdGhpcyB2aWV3Lgot
ICoKLSAqIFRoZSBPZmZsaW5lIEFwcGxpY2F0aW9uIENhY2hpbmcgQVBJcyBhcmUgcGFydCBvZiBI
VE1MNSBhbmQgYWxsb3cgYXBwbGljYXRpb25zIHRvIHN0b3JlIGRhdGEgbG9jYWxseSB0aGF0IGlz
IGFjY2Vzc2VkCi0gKiB3aGVuIHRoZSBuZXR3b3JrIGNhbm5vdCBiZSByZWFjaGVkLgotICoKLSAq
IEFwcGxpY2F0aW9uIGNhY2hlIHN1cHBvcnQgaXMgZW5hYmxlZCBieSBkZWZhdWx0LgotICoKLSAq
IEBwYXJhbSBvIHZpZXcgb2JqZWN0IHdob3NlIHNldHRpbmdzIHRvIGNoYW5nZQotICogQHBhcmFt
IGVuYWJsZSBAYyBFSU5BX1RSVUUgdG8gZW5hYmxlIHRoZSBhcHBsaWNhdGlvbiBjYWNoZSwKLSAq
ICAgICAgICBAYyBFSU5BX0ZBTFNFIHRvIGRpc2FibGUKLSAqCi0gKiBAcmV0dXJuIEBjIEVJTkFf
VFJVRSBvbiBzdWNjZXNzIG9yIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZQotICoKLSAqIEBzYSBl
d2tfc2V0dGluZ3NfYXBwbGljYXRpb25fY2FjaGVfcGF0aF9zZXQKLSAqLwotRUFQSSBFaW5hX0Jv
b2wgICAgZXdrX3ZpZXdfc2V0dGluZ19hcHBsaWNhdGlvbl9jYWNoZV9zZXQoRXZhc19PYmplY3Qg
Km8sIEVpbmFfQm9vbCBlbmFibGUpOwotCi0vKioKLSAqIFF1ZXJpZXMgaWYgdGhlIGNhcmV0IGJy
b3dzaW5nIGZlYXR1cmUgaXMgZW5hYmxlZC4KLSAqCi0gKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0
byBxdWVyeSBpZiB0aGUgY2FyZXQgYnJvd3NpbmcgZmVhdHVyZSBpcyBlbmFibGVkCi0gKgotICog
QHJldHVybiBAYyBFSU5BX1RSVUUgaWYgdGhlIGNhcmV0IGJyb3dzaW5nIGZlYXR1cmUgaXMgZW5h
YmxlZCwKLSAqICAgICAgICAgQGMgRUlOQV9GQUxTRSBpZiBub3Qgb3Igb24gZmFpbHVyZQotICov
Ci1FQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld19zZXR0aW5nX2NhcmV0X2Jyb3dzaW5nX2dldChj
b25zdCBFdmFzX09iamVjdCAqbyk7Ci0KLS8qKgotICogRW5hYmxlcy9kaXNhYmxlcyB0aGUgY2Fy
ZXQgYnJvd3NpbmcgZmVhdHVyZS4KLSAqCi0gKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBzZXQg
Y2FyZXQgYnJvd3NpbmcgZmVhdHVyZQotICogQHBhcmFtIGVuYWJsZSBAYyBFSU5BX1RSVUUgdG8g
ZW5hYmxlIHRoZSBjYXJldCBicm93c2luZyBmZWF0dXJlCi0gKiAgICAgICAgQGMgRUlOQV9GQUxT
RSB0byBkaXNhYmxlCi0gKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcyBvciBA
YyBFSU5BX0ZBTFNFIG9uIGZhaWx1cmUKLSAqLwotRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdf
c2V0dGluZ19jYXJldF9icm93c2luZ19zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBlbmFi
bGUpOwotCi0vKioKLSAqIEdldHMgdGhlIGN1cnJlbnQgZW5jb2RpbmcuCi0gKgotICogQHBhcmFt
IG8gdmlldyBvYmplY3QgdG8gZ2V0IHRoZSBjdXJyZW50IGVuY29kaW5nCi0gKgotICogQHJldHVy
biBAYyBlaW5hX3N0cmluc2hhcmUgY29udGFpbmluZyB0aGUgY3VycmVudCBlbmNvZGluZywgb3IK
LSAqICAgICAgICAgQGMgTlVMTCBpZiBpdCdzIG5vdCBzZXQKLSAqLwotRUFQSSBjb25zdCBjaGFy
ICAqZXdrX3ZpZXdfc2V0dGluZ19lbmNvZGluZ19jdXN0b21fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0
ICpvKTsKLQotLyoqCi0gKiBTZXRzIHRoZSBlbmNvZGluZyBhbmQgcmVsb2FkcyB0aGUgcGFnZS4K
LSAqCi0gKiBAcGFyYW0gbyB2aWV3IHRvIHNldCB0aGUgZW5jb2RpbmcKLSAqIEBwYXJhbSBlbmNv
ZGluZyB0aGUgbmV3IGVuY29kaW5nIHRvIHNldCBvciBAYyBOVUxMIHRvIHJlc3RvcmUgdGhlIGRl
ZmF1bHQgb25lCi0gKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcyBAYyBFSU5B
X0ZBTFNFIG90aGVyd2lzZQotICovCi1FQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld19zZXR0aW5n
X2VuY29kaW5nX2N1c3RvbV9zZXQoRXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKmVuY29kaW5n
KTsKLQotLyoqCi0gKiBHZXRzIHRoZSBkZWZhdWx0IGVuY29kaW5nLgotICoKLSAqIEBwYXJhbSBv
IHZpZXcgb2JqZWN0IHRvIGdldCB0aGUgZGVmYXVsdCBlbmNvZGluZwotICoKLSAqIEByZXR1cm4g
QGMgZWluYV9zdHJpbnNoYXJlIGNvbnRhaW5pbmcgdGhlIGRlZmF1bHQgZW5jb2RpbmcsIG9yCi0g
KiAgICAgICAgIEBjIE5VTEwgaWYgaXQncyBub3Qgc2V0Ci0gKi8KLUVBUEkgY29uc3QgY2hhciAg
KmV3a192aWV3X3NldHRpbmdfZW5jb2RpbmdfZGVmYXVsdF9nZXQoY29uc3QgRXZhc19PYmplY3Qg
Km8pOwotCi0vKioKLSAqIFNldHMgdGhlIGRlZmF1bHQgZW5jb2RpbmcuCi0gKgotICogQHBhcmFt
IG8gdmlldyB0byBzZXQgdGhlIGRlZmF1bHQgZW5jb2RpbmcKLSAqIEBwYXJhbSBlbmNvZGluZyB0
aGUgbmV3IGVuY29kaW5nIHRvIHNldAotICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1
Y2Nlc3MgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UKLSAqLwotRUFQSSBFaW5hX0Jvb2wgICAgZXdr
X3ZpZXdfc2V0dGluZ19lbmNvZGluZ19kZWZhdWx0X3NldChFdmFzX09iamVjdCAqbywgY29uc3Qg
Y2hhciAqZW5jb2RpbmcpOwotCi0vKioKLSAqIEdldHMgdGhlIG1pbmltdW0gZm9udCBzaXplLgot
ICoKLSAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIGdldCB0aGUgbWluaW11bSBmb250IHNpemUK
LSAqCi0gKiBAcmV0dXJuIHRoZSBtaW5pbXVtIGZvbnQgc2l6ZSwgb3IgQGMgMCBvbiBmYWlsdXJl
Ci0gKi8KLUVBUEkgaW50ICAgICAgICAgIGV3a192aWV3X3NldHRpbmdfZm9udF9taW5pbXVtX3Np
emVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKLQotLyoqCi0gKiBTZXRzIHRoZSBtaW5pbXVt
IGZvbnQgc2l6ZS4KLSAqCi0gKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBzZXQgdGhlIG1pbmlt
dW0gZm9udCBzaXplCi0gKiBAcGFyYW0gc2l6ZSBhIG5ldyBtaW5pbXVtIGZvbnQgc2l6ZSB0byBz
ZXQKLSAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzIEBjIEVJTkFfRkFMU0Ug
b3RoZXJ3aXNlCi0gKi8KLUVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3NldHRpbmdfZm9udF9t
aW5pbXVtX3NpemVfc2V0KEV2YXNfT2JqZWN0ICpvLCBpbnQgc2l6ZSk7Ci0KLS8qKgotICogR2V0
cyB0aGUgbWluaW11bSBsb2dpY2FsIGZvbnQgc2l6ZS4KLSAqCi0gKiBAcGFyYW0gbyB2aWV3IG9i
amVjdCB0byBnZXQgdGhlIG1pbmltdW0gbG9naWNhbCBmb250IHNpemUKLSAqCi0gKiBAcmV0dXJu
IHRoZSBtaW5pbXVtIGxvZ2ljYWwgZm9udCBzaXplLCBvciBAYyAwIG9uIGZhaWx1cmUKLSAqLwot
RUFQSSBpbnQgICAgICAgICAgZXdrX3ZpZXdfc2V0dGluZ19mb250X21pbmltdW1fbG9naWNhbF9z
aXplX2dldChjb25zdCBFdmFzX09iamVjdCAqbyk7Ci0KLS8qKgotICogU2V0cyB0aGUgbWluaW11
bSBsb2dpY2FsIGZvbnQgc2l6ZS4KLSAqCi0gKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBzZXQg
dGhlIG1pbmltdW0gZm9udCBzaXplCi0gKiBAcGFyYW0gc2l6ZSBhIG5ldyBtaW5pbXVtIGxvZ2lj
YWwgZm9udCBzaXplIHRvIHNldAotICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nl
c3MgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UKLSAqLwotRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3Zp
ZXdfc2V0dGluZ19mb250X21pbmltdW1fbG9naWNhbF9zaXplX3NldChFdmFzX09iamVjdCAqbywg
aW50IHNpemUpOwotCi0vKioKLSAqIEdldHMgdGhlIGRlZmF1bHQgZm9udCBzaXplLgotICoKLSAq
IEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIGdldCB0aGUgZGVmYXVsdCBmb250IHNpemUKLSAqCi0g
KiBAcmV0dXJuIHRoZSBkZWZhdWx0IGZvbnQgc2l6ZSwgb3IgQGMgMCBvbiBmYWlsdXJlCi0gKi8K
LUVBUEkgaW50ICAgICAgICAgIGV3a192aWV3X3NldHRpbmdfZm9udF9kZWZhdWx0X3NpemVfZ2V0
KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKLQotLyoqCi0gKiBTZXRzIHRoZSBkZWZhdWx0IGZvbnQg
c2l6ZS4KLSAqCi0gKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBzZXQgdGhlIGRlZmF1bHQgZm9u
dCBzaXplCi0gKiBAcGFyYW0gc2l6ZSBhIG5ldyBkZWZhdWx0IGZvbnQgc2l6ZSB0byBzZXQKLSAq
Ci0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3
aXNlCi0gKi8KLUVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3NldHRpbmdfZm9udF9kZWZhdWx0
X3NpemVfc2V0KEV2YXNfT2JqZWN0ICpvLCBpbnQgc2l6ZSk7Ci0KLS8qKgotICogR2V0cyB0aGUg
TW9ub3NwYWNlIGZvbnQgc2l6ZS4KLSAqCi0gKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBnZXQg
dGhlIE1vbm9zcGFjZSBmb250IHNpemUKLSAqCi0gKiBAcmV0dXJuIHRoZSBNb25vc3BhY2UgZm9u
dCBzaXplLCBvciBAYyAwIG9uIGZhaWx1cmUKLSAqLwotRUFQSSBpbnQgICAgICAgICAgZXdrX3Zp
ZXdfc2V0dGluZ19mb250X21vbm9zcGFjZV9zaXplX2dldChjb25zdCBFdmFzX09iamVjdCAqbyk7
Ci0KLS8qKgotICogU2V0cyB0aGUgTW9ub3NwYWNlIGZvbnQgc2l6ZS4KLSAqCi0gKiBAcGFyYW0g
byB2aWV3IG9iamVjdCB0byBzZXQgdGhlIE1vbm9zcGFjZSBmb250IHNpemUKLSAqIEBwYXJhbSBz
aXplIGEgbmV3IE1vbm9zcGFjZSBmb250IHNpemUgdG8gc2V0Ci0gKgotICogQHJldHVybiBAYyBF
SU5BX1RSVUUgb24gc3VjY2VzcyBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZQotICovCi1FQVBJIEVp
bmFfQm9vbCAgICBld2tfdmlld19zZXR0aW5nX2ZvbnRfbW9ub3NwYWNlX3NpemVfc2V0KEV2YXNf
T2JqZWN0ICpvLCBpbnQgc2l6ZSk7Ci0KLS8qKgotICogR2V0cyB0aGUgbmFtZSBvZiBmb250IGZv
ciB0aGUgZ2l2ZW4gZm9udCBmYW1pbHkuCi0gKgotICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8g
Z2V0IG5hbWUgb2YgZm9udCB0aGUgZm9yIGZvbnQgZmFtaWx5Ci0gKiBAcGFyYW0gZm9udF9mYW1p
bHkgdGhlIGZvbnQgZmFtaWx5IGFzIEBhIEV3a19Gb250X0ZhbWlseSBlbnVtIHRvIGdldCBmb250
IG5hbWUKLSAqCi0gKiBAcmV0dXJuIHRoZSBuYW1lIG9mIGZvbnQgZmFtaWx5Ci0gKi8KLUVBUEkg
Y29uc3QgY2hhciAqZXdrX3ZpZXdfZm9udF9mYW1pbHlfbmFtZV9nZXQoY29uc3QgRXZhc19PYmpl
Y3QgKm8sIEV3a19Gb250X0ZhbWlseSBmb250X2ZhbWlseSk7Ci0KLS8qKgotICogU2V0cyB0aGUg
Zm9udCBmb3IgdGhlIGdpdmVuIGZhbWlseS4KLSAqCi0gKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0
byBzZXQgZm9udCBmb3IgdGhlIGdpdmVuIGZhbWlseQotICogQHBhcmFtIGZvbnRfZmFtaWx5IHRo
ZSBmb250IGZhbWlseSBhcyBAYSBFd2tfRm9udF9GYW1pbHkgZW51bQotICogQHBhcmFtIG5hbWUg
dGhlIGZvbnQgbmFtZSB0byBzZXQKLSAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNj
ZXNzIG9yIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZQotICovCi1FQVBJIEVpbmFfQm9vbCBld2tf
dmlld19mb250X2ZhbWlseV9uYW1lX3NldChFdmFzX09iamVjdCAqbywgRXdrX0ZvbnRfRmFtaWx5
IGZvbnRfZmFtaWx5LCBjb25zdCBjaGFyICpuYW1lKTsKLQotLyoqCi0gKiBRdWVyaWVzIGlmIHRo
ZSBzcGF0aWFsIG5hdmlhZ3Rpb24gZmVhdHVyZSBpcyBlbmFibGVkLgotICoKLSAqIEBwYXJhbSBv
IHZpZXcgb2JqZWN0IHRvIHF1ZXJ5IGlmIHNwYXRpYWwgbmF2aWdhdGlvbiBmZWF0dXJlIGlzIGVu
YWJsZWQKLSAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiBzcGF0aWFsIG5hdmlnYXRpb24g
aXMgZW5hYmxlZCwKLSAqICAgICAgICAgQGMgRUlOQV9GQUxTRSBpZiBub3Qgb3Igb24gZmFpbHVy
ZQotICovCi1FQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld19zZXR0aW5nX3NwYXRpYWxfbmF2aWdh
dGlvbl9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOwotCi0vKioKLSAqIEVuYWJsZXMvZGlzYWJs
ZXMgdGhlIHNwYXRpYWwgbmF2aWdhdGlvbiBmZWF0dXJlLgotICoKLSAqIEBwYXJhbSBvIHZpZXcg
b2JqZWN0IHRvIHNldCBzcGF0aWFsIG5hdmlnYXRpb24gZmVhdHVyZQotICogQHBhcmFtIGVuYWJs
ZSBAYyBFSU5BX1RSVUUgdG8gZW5hYmxlIHRoZSBzcGF0aWFsIG5hdmlnYXRpb24gZmVhdHVyZSwK
LSAqICAgICAgICBAYyBFSU5BX0ZBTFNFIHRvIGRpc2FibGUKLSAqCi0gKiBAcmV0dXJuIEBjIEVJ
TkFfVFJVRSBvbiBzdWNjZXNzIG9yIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZQotICovCi1FQVBJ
IEVpbmFfQm9vbCAgICBld2tfdmlld19zZXR0aW5nX3NwYXRpYWxfbmF2aWdhdGlvbl9zZXQoRXZh
c19PYmplY3QgKm8sIEVpbmFfQm9vbCBlbmFibGUpOwotCi0vKioKLSAqIFF1ZXJpZXMgaWYgdGhl
IGxvY2FsIHN0b3JhZ2UgZmVhdHVyZSBvZiBIVE1MNSBpcyBlbmFibGVkLgotICoKLSAqIEBwYXJh
bSBvIHZpZXcgb2JqZWN0IHRvIHF1ZXJ5IGlmIHRoZSBsb2NhbCBzdG9yYWdlIGZlYXR1cmUgaXMg
ZW5hYmxlZAotICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIGxvY2FsIHN0b3JhZ2UgaXMg
ZW5hYmxlZCwKLSAqICAgICAgICAgQGMgRUlOQV9GQUxTRSBpZiBub3Qgb3Igb24gZmFpbHVyZQot
ICovCi1FQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld19zZXR0aW5nX2xvY2FsX3N0b3JhZ2VfZ2V0
KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKLQotLyoqCi0gKiBFbmFibGVzL2Rpc2FibGVzIHRoZSBs
b2NhbCBzdG9yYWdlIGZlYXR1cmUgb2YgSFRNTDUuCi0gKgotICogUGxlYXNlIG5vdGljZSB0aGF0
IGJ5IGRlZmF1bHQgdGhlcmUgaXMgbm8gc3RvcmFnZSBwYXRoIHNwZWNpZmllZCBmb3IgdGhlIGRh
dGFiYXNlLgotICogVGhpcyBtZWFucyB0aGF0IHRoZSBjb250ZW50cyBvZiBAYyB3aW5kb3cubG9j
YWxTdG9yYWdlIHdpbGwgbm90IGJlIHNhdmVkIHRvIGRpc2sgYW5kCi0gKiB3aWxsIGJlIGxvc3Qg
d2hlbiB0aGUgdmlldyBpcyByZW1vdmVkLgotICogVG8gc2V0IHRoZSBwYXRoIHdoZXJlIHRoZSBz
dG9yYWdlIGRhdGFiYXNlIHdpbGwgYmUgc3RvcmVkLCB1c2UKLSAqIGV3a192aWV3X3NldHRpbmdf
bG9jYWxfc3RvcmFnZV9kYXRhYmFzZV9wYXRoX3NldC4KLSAqCi0gKiBAcGFyYW0gbyB2aWV3IG9i
amVjdCB0byBzZXQgaWYgbG9jYWwgc3RvcmFnZSBpcyBlbmFibGVkCi0gKiBAcGFyYW0gZW5hYmxl
IEBjIEVJTkFfVFJVRSB0byBlbmFibGUgdGhlIGxvY2FsIHN0b3JhZ2UgZmVhdHVyZSwKLSAqICAg
ICAgICBAYyBFSU5BX0ZBTFNFIHRvIGRpc2FibGUKLSAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJV
RSBvbiBzdWNjZXNzIG9yIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZQotICoKLSAqIEBzYSBld2tf
dmlld19zZXR0aW5nX2xvY2FsX3N0b3JhZ2VfZGF0YWJhc2VfcGF0aF9zZXQKLSAqLwotRUFQSSBF
aW5hX0Jvb2wgICAgZXdrX3ZpZXdfc2V0dGluZ19sb2NhbF9zdG9yYWdlX3NldChFdmFzX09iamVj
dCAqbywgRWluYV9Cb29sIGVuYWJsZSk7Ci0KLS8qKgotICogUmV0dXJucyB0aGUgcGF0aCB3aGVy
ZSB0aGUgSFRNTDUgbG9jYWwgc3RvcmFnZSBkYXRhYmFzZSBpcyBzdG9yZWQgb24gZGlzay4KLSAq
Ci0gKiBCeSBkZWZhdWx0LCB0aGVyZSBpcyBubyBwYXRoIHNldCwgd2hpY2ggbWVhbnMgY2hhbmdl
cyB0byBAYyB3aW5kb3cubG9jYWxTdG9yYWdlIHdpbGwgbm90Ci0gKiBiZSBzYXZlZCB0byBkaXNr
IHdoYXRzb2V2ZXIuCi0gKgotICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gZ2V0IHRoZSBkYXRh
YmFzZSBwYXRoIHRvIHRoZSBsb2NhbCBzdG9yYWdlIGZlYXR1cmUKLSAqCi0gKiBAcmV0dXJuIEBj
IGVpbmFfc3RyaW5nc2hhcmUgY29udGFpbmluZyB0aGUgZGF0YWJhc2UgcGF0aCB0byB0aGUgbG9j
YWwgc3RvcmFnZSBmZWF0dXJlLCBvcgotICogICAgICAgICBAYyBOVUxMIGlmIGl0J3Mgbm90IHNl
dAotICoKLSAqIEBzYSBld2tfdmlld19zZXR0aW5nX2xvY2FsX3N0b3JhZ2VfZGF0YWJhc2VfcGF0
aF9zZXQKLSAqLwotRUFQSSBjb25zdCBjaGFyICAqZXdrX3ZpZXdfc2V0dGluZ19sb2NhbF9zdG9y
YWdlX2RhdGFiYXNlX3BhdGhfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKLQotLyoqCi0gKiBT
ZXRzIHRoZSBwYXRoIHdoZXJlIHRoZSBIVE1MNSBsb2NhbCBzdG9yYWdlIGRhdGFiYXNlIGlzIHN0
b3JlZCBvbiBkaXNrLgotICoKLSAqIEJ5IGRlZmF1bHQsIHRoZXJlIGlzIG5vIHBhdGggc2V0LCB3
aGljaCBtZWFucyBjaGFuZ2VzIHRvIEBjIHdpbmRvdy5sb2NhbFN0b3JhZ2Ugd2lsbCBub3QKLSAq
IGJlIHNhdmVkIHRvIGRpc2sgd2hhdHNvZXZlci4KLSAqCi0gKiBAcGFyYW0gbyB2aWV3IG9iamVj
dCB0byBzZXQgdGhlIGRhdGFiYXNlIHBhdGggdG8gdGhlIGxvY2FsIHN0b3JhZ2UgZmVhdHVyZQot
ICogQHBhcmFtIHBhdGggYSBuZXcgZGF0YWJhc2UgcGF0aCB0byB0aGUgbG9jYWwgc3RvcmFnZSBm
ZWF0dXJlCi0gKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcyBvciBAYyBFSU5B
X0ZBTFNFIG9uIGZhaWx1cmUKLSAqCi0gKiBAc2EgZXdrX3ZpZXdfc2V0dGluZ19sb2NhbF9zdG9y
YWdlX3NldAotICovCi1FQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld19zZXR0aW5nX2xvY2FsX3N0
b3JhZ2VfZGF0YWJhc2VfcGF0aF9zZXQoRXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKnBhdGgp
OwotCi0vKioKLSAqIFF1ZXJpZXMgaWYgdGhlIHBhZ2UgY2FjaGUgZmVhdHVyZSBpcyBlbmFibGVk
LgotICoKLSAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIHF1ZXJ5IGlmIHBhZ2UgY2FjaGUgZmVh
dHVyZSBpcyBlbmFibGVkCi0gKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgcGFnZSBjYWNo
ZSBpcyBlbmFibGVkLAotICogICAgICAgICBAYyBFSU5BX0ZBTFNFIGlmIG5vdCBvciBvbiBmYWls
dXJlCi0gKi8KLUVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3NldHRpbmdfcGFnZV9jYWNoZV9n
ZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOwotCi0vKioKLSAqIEVuYWJsZXMvZGlzYWJsZXMgdGhl
IHBhZ2UgY2FjaGUgZmVhdHVyZS4KLSAqCi0gKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBzZXQg
cGFnZSBjYWNoZSBmZWF0dXJlCi0gKiBAcGFyYW0gZW5hYmxlIEBjIEVJTkFfVFJVRSB0byBlbmFi
bGUgdGhlIHBhZ2UgY2FjaGUgZmVhdHVyZSwKLSAqICAgICAgICBAYyBFSU5BX0ZBTFNFIHRvIGRp
c2FibGUKLSAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzIG9yIEBjIEVJTkFf
RkFMU0Ugb24gZmFpbHVyZQotICovCi1FQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld19zZXR0aW5n
X3BhZ2VfY2FjaGVfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgZW5hYmxlKTsKLQotLyoq
Ci0gKiBRdWVyaWVzIGlmIHRoZSBlbmNvZGluZyBkZXRlY3RvciBpcyBlbmFibGVkLgotICoKLSAq
IEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIHF1ZXJ5IGlmIHRoZSBlbmNvZGluZyBkZXRlY3RvciBp
cyBlbmFibGVkCi0gKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgdGhlIGVuY29kaW5nIGZl
YXR1cmUgaXMgZW5hYmxlZCwKLSAqICAgICAgICAgQGMgRUlOQV9GQUxTRSBpZiBub3Qgb3Igb24g
ZmFpbHVyZQotICovCi1FQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld19zZXR0aW5nX2VuY29kaW5n
X2RldGVjdG9yX2dldChjb25zdCBFdmFzX09iamVjdCAqbyk7Ci0KLS8qKgotICogRW5hYmxlcy9k
aXNhYmxlcyB0aGUgZW5jb2RpbmcgZGV0ZWN0b3IuCi0gKgotICogQHBhcmFtIG8gdmlldyBvYmpl
Y3QgdG8gc2V0IHRoZSBlbmNvZGluZyBkZXRlY3RvcgotICogQHBhcmFtIGVuYWJsZSBAYyBFSU5B
X1RSVUUgdG8gZW5hYmxlIHRoZSBlbmNvZGluZyBkZXRlY3RvciwKLSAqICAgICAgICBAYyBFSU5B
X0ZBTFNFIHRvIGRpc2FibGUKLSAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNz
IG9yIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlCi0gKi8KLUVBUEkgRWluYV9Cb29sICAgIGV3a192
aWV3X3NldHRpbmdfZW5jb2RpbmdfZGV0ZWN0b3Jfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jv
b2wgZW5hYmxlKTsKLQotLyoqCi0gKiBRdWVyaWVzIGlmIGRldmVsb3BlciBleHRlbnNpb25zIGFy
ZSBlbmFibGVkLgotICoKLSAqIEN1cnJlbnRseSwgdGhpcyBpcyB1c2VkIHRvIGtub3cgd2hldGhl
ciB0aGUgV2ViIEluc3BlY3RvciBpcyBlbmFibGVkIGZvciBhCi0gKiBnaXZlbiB2aWV3LgotICoK
LSAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIHF1ZXJ5IGlmIGRldmVsb3BlciBleHRlbnNpb25z
IGFyZSBlbmFibGVkCi0gKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgZGV2ZWxvcGVyIGV4
dGVuc2lvbnMgYXJlIGVuYWJsZWQsIEBjIEVJTkFfRkFMU0UKLSAqICAgICAgICAgb3RoZXJ3aXNl
Ci0gKi8KLUVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2RldmVsb3Bl
cl9leHRyYXNfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKLQotLyoqCi0gKiBFbmFibGVzL2Rp
c2FibGVzIGRldmVsb3BlciBleHRlbnNpb25zLgotICoKLSAqIFRoaXMgY3VycmVudGx5IGNvbnRy
b2xzIHdoZXRoZXIgdGhlIFdlYiBJbnNwZWN0b3Igc2hvdWxkIGJlIGVuYWJsZWQuCi0gKgotICog
QHBhcmFtIG8gdmlldyBvYmplY3QgdG8gc2V0IGRldmVsb3BlciBleHRlbnNpb25zCi0gKiBAcGFy
YW0gZW5hYmxlIEBjIEVJTkFfVFJVRSB0byBlbmFibGUgZGV2ZWxvcGVyIGV4dHJhcywgQGMgRUlO
QV9GQUxTRSB0bwotICogICAgICAgICAgICAgICBkaXNhYmxlCi0gKgotICogQHJldHVybiBAYyBF
SU5BX1RSVUUgb24gc3VjY2VzcyBvciBARUlOQV9GQUxTRSBvbiBmYWlsdXJlCi0gKi8KLUVBUEkg
RWluYV9Cb29sICAgIGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2RldmVsb3Blcl9leHRyYXNfc2V0
KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgZW5hYmxlKTsKLQotLyoqCi0gKiBTZXRzIHRoZSBt
aW5pbXVtIGludGVydmFsIGZvciBET01UaW1lcnMgb24gY3VycmVudCBwYWdlLgotICoKLSAqIEBw
YXJhbSBvIHZpZXcgb2JqZWN0IHRvIHNldCB0aGUgbWluaW11bSBpbnRlcnZhbAotICoKLSAqIEBy
ZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3Mgb3IgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJl
Ci0gKi8KLUVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3NldHRpbmdfbWluaW11bV90aW1lcl9p
bnRlcnZhbF9zZXQoRXZhc19PYmplY3QgKm8sIGRvdWJsZSBpbnRlcnZhbCk7Ci0KLS8qKgotICog
R2V0cyB0aGUgbWluaW11bSBpbnRlcnZhbCBmb3IgRE9NVGltZXJzIG9uIGN1cnJlbnQgcGFnZS4K
LSAqCi0gKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBnZXQgdGhlIG1pbmltdW0gaW50ZXJ2YWwK
LSAqCi0gKiBAcmV0dXJuIHRoZSBtaW5pbXVtIGludGVydmFsIG9uIHN1Y2Nlc3Mgb3IgQGMgLTEu
MCBvbiBmYWlsdXJlCi0gKi8KLUVBUEkgZG91YmxlICAgICAgIGV3a192aWV3X3NldHRpbmdfbWlu
aW11bV90aW1lcl9pbnRlcnZhbF9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOwotCi0vKioKLSAq
IFF1ZXJpZXMgd2hldGhlciBXZWJHTCBzdXBwb3J0IGlzIGVuYWJsZWQuCi0gKgotICogV2ViR0wg
c3VwcG9ydCBpcyBlbmFibGVkIGJ5IGRlZmF1bHQuCi0gKgotICogQHBhcmFtIG8gdmlldyBvYmpl
Y3QgdG8gcXVlcnkgd2hldGhlciBXZWJHTCBzdXBwb3J0IGlzIGVuYWJsZWQKLSAqCi0gKiBAcmV0
dXJuIEBjIEVJTkFfVFJVRSBpZiBXZWJHTCBzdXBwb3J0IGVuYWJsZWQsCi0gKiAgICAgICAgIEBj
IEVJTkFfRkFMU0UgaWYgbm90IG9yIG9uIGZhaWx1cmUKLSAqLwotRUFQSSBFaW5hX0Jvb2wgZXdr
X3ZpZXdfc2V0dGluZ19lbmFibGVfd2ViZ2xfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKLQot
LyoqCi0gKiBFbmFibGVzL2Rpc2FibGVzIFdlYkdMIHN1cHBvcnQuCi0gKgotICogV2ViR0wgc3Vw
cG9ydCBpcyBlbmFibGVkIGJ5IGRlZmF1bHQuCi0gKgotICogQHBhcmFtIG8gdmlldyBvYmplY3Qg
dG8gc2V0IFdlYkdMCi0gKiBAcGFyYW0gZW5hYmxlIEBjIEVJTkFfVFJVRSB0byBlbmFibGUgV2Vi
R0wgc3VwcG9ydCwKLSAqICAgICAgICBAYyBFSU5BX0ZBTFNFIHRvIGRpc2FibGUKLSAqCi0gKiBA
cmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzIG9yIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVy
ZQotICovCi1FQVBJIEVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2VuYWJsZV93ZWJnbF9zZXQo
RXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBlbmFibGUpOwotCi0vKioKLSAqIFF1ZXJpZXMgaWYg
dGFiIGtleSBmb2N1c2luZyBvZiBwYWdlIGVsZW1lbnRzIGlzIGVuYWJsZWQuCi0gKgotICogV2hl
biB0aGlzIHNldHRpbmcgaXMgZW5hYmxlZCwgdGhlIGVsZW1lbnRzIGluIHRoZSBwYWdlIChsaW5r
cyBhbmQgZm9ybSBjb250cm9scykgd2lsbCBiZSBjeWNsZWQgdGhyb3VnaCBieSBwcmVzc2luZyB0
aGUgdGFiIGtleS4KLSAqIFRhYiBrZXkgZm9jdXNpbmcgb2YgcGFnZSBlbGVtZW50cyBpcyBlbmFi
bGVkIGJ5IGRlZmF1bHQuCi0gKgotICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gcXVlcnkgaWYg
dGFiIGtleSBmb2N1c2luZyBvZiBwYWdlIGVsZW1lbnRzIGlzIGVuYWJsZWQKLSAqCi0gKiBAcmV0
dXJuIEBjIEVJTkFfVFJVRSBpZiB0YWIga2V5IGZvY3VzaW5nIG9mIHBhZ2UgZWxlbWVudHMgaXMg
ZW5hYmxlZCwgQGMgRUlOQV9GQUxTRQotICogICAgICAgICBvdGhlcndpc2UKLSAqLwotRUFQSSBF
aW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19pbmNsdWRlX2xpbmtzX2luX2ZvY3VzX2NoYWluX2dl
dChjb25zdCBFdmFzX09iamVjdCAqbyk7Ci0KLS8qKgotICogRW5hYmxlcy9kaXNhYmxlcyB0YWIg
a2V5IGZvY3VzaW5nIG9mIHBhZ2UgZWxlbWVudHMuCi0gKgotICogV2hlbiB0aGlzIHNldHRpbmcg
aXMgZW5hYmxlZCwgdGhlIGVsZW1lbnRzIGluIHRoZSBwYWdlIChsaW5rcyBhbmQgZm9ybSBjb250
cm9scykgd2lsbCBiZSBjeWNsZWQgdGhyb3VnaCBieSBwcmVzc2luZyB0aGUgdGFiIGtleS4KLSAq
IFRhYiBrZXkgZm9jdXNpbmcgb2YgcGFnZSBlbGVtZW50cyBpcyBlbmFibGVkIGJ5IGRlZmF1bHQu
Ci0gKgotICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gc2V0IHRhYiBrZXkgZm9jdXNpbmcgb2Yg
cGFnZSBlbGVtZW50cwotICogQHBhcmFtIGVuYWJsZSBAYyBFSU5BX1RSVUUgdG8gZW5hYmxlIHRh
YiBrZXkgZm9jdXNpbmcgb2YgcGFnZSBlbGVtZW50cywgQGMgRUlOQV9GQUxTRSB0bwotICogICAg
ICAgICAgICAgICBkaXNhYmxlCi0gKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2Vz
cyBvciBARUlOQV9GQUxTRSBvbiBmYWlsdXJlCi0gKi8KLUVBUEkgRWluYV9Cb29sIGV3a192aWV3
X3NldHRpbmdfaW5jbHVkZV9saW5rc19pbl9mb2N1c19jaGFpbl9zZXQoRXZhc19PYmplY3QgKm8s
IEVpbmFfQm9vbCBlbmFibGUpOwotCi0vKioKLSAqIFF1ZXJpZXMgaWYgaHlwZXJsaW5rIGF1ZGl0
aW5nIGlzIGVuYWJsZWQuCi0gKgotICogSHlwZXJsaW5rIGF1ZGl0aW5nIGlzIHVzZWQgaWYgYSBo
eXBlcmxpbmsgY3JlYXRlZCBieSBhbiBAYyBhIG9yIEBjIGFyZWEgZWxlbWVudCBoYXMgYSBAYyBw
aW5nIGF0dHJpYnV0ZS4KLSAqIFBsZWFzZSByZWZlciB0byB0aGUgaHlwZXJsaW5rIGF1ZGl0aW5n
IHNwZWNpZmljYXRpb24gYXQgaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1
cnJlbnQtd29yay8jaHlwZXJsaW5rLWF1ZGl0aW5nLgotICogSHlwZXJsaW5rIGF1ZGl0aW5nIGlz
IGRpc2FibGVkIGJ5IGRlZmF1bHQuCi0gKgotICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gcXVl
cnkgaWYgIGh5cGVybGluayBhdWRpdGluZyBpcyBlbmFibGVkCi0gKgotICogQHJldHVybiBAYyBF
SU5BX1RSVUUgaWYgaHlwZXJsaW5rIGF1ZGl0aW5nIGlzIGVuYWJsZWQsIEBjIEVJTkFfRkFMU0UK
LSAqICAgICAgICAgb3RoZXJ3aXNlCi0gKi8KLUVBUEkgRWluYV9Cb29sIGV3a192aWV3X3NldHRp
bmdfZW5hYmxlX2h5cGVybGlua19hdWRpdGluZ19nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOwot
Ci0vKioKLSAqIEVuYWJsZXMvZGlzYWJsZXMgaHlwZXJsaW5rIGF1ZGl0aW5nLgotICoKLSAqIEh5
cGVybGluayBhdWRpdGluZyBpcyB1c2VkIGlmIGEgaHlwZXJsaW5rIGNyZWF0ZWQgYnkgYW4gQGMg
YSBvciBAYyBhcmVhIGVsZW1lbnQgaGFzIGEgQGMgcGluZyBhdHRyaWJ1dGUuCi0gKiBQbGVhc2Ug
cmVmZXIgdG8gdGhlIGh5cGVybGluayBhdWRpdGluZyBzcGVjaWZpY2F0aW9uIGF0IGh0dHA6Ly93
d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvI2h5cGVybGluay1hdWRp
dGluZy4KLSAqIEh5cGVybGluayBhdWRpdGluZyBpcyBkaXNhYmxlZCBieSBkZWZhdWx0LgotICoK
LSAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIHNldCBoeXBlcmxpbmsgYXVkaXRpbmcKLSAqIEBw
YXJhbSBlbmFibGUgQGMgRUlOQV9UUlVFIHRvIGVuYWJsZSBoeXBlcmxpbmsgYXVkaXRpbmcsIEBj
IEVJTkFfRkFMU0UgdG8KLSAqICAgICAgICAgICAgICAgZGlzYWJsZQotICoKLSAqIEByZXR1cm4g
QGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3Mgb3IgQEVJTkFfRkFMU0Ugb24gZmFpbHVyZQotICovCi1F
QVBJIEVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2VuYWJsZV9oeXBlcmxpbmtfYXVkaXRpbmdf
c2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgZW5hYmxlKTsKLQotLyoqCi0gKiBFbmFibGVz
L2Rpc2FibGVzIGFsbG93aW5nIHVuaXZlcnNhbCBhY2Nlc3MgZnJvbSBmaWxlIFVSTHMuCi0gKgot
ICogVGhpcyBzZXR0aW5nIHNwZWNpZmllcyB3aGV0aGVyIGxvY2FsbHkgbG9hZGVkIGRvY3VtZW50
cyBhcmUgYWxsb3dlZCB0byBhY2Nlc3MgcmVtb3RlIHVybHMuCi0gKiBCeSBkZWZhdWx0IHRoaXMg
c2V0dGluZyBpcyBlbmFibGVkLgotICoKLSAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIHNldCBh
bGxvd2luZyB1bml2ZXJzYWwgYWNjZXNzIGZyb20gZmlsZSBVUkxzCi0gKiBAcGFyYW0gZW5hYmxl
IEBjIEVJTkFfVFJVRSB0byBlbmFibGUgdW5pdmVyc2FsIGFjY2VzcyBmcm9tIGZpbGUgVVJMcywK
LSAqICAgICAgICBAYyBFSU5BX0ZBTFNFIHRvIGRpc2FibGUKLSAqCi0gKiBAcmV0dXJuIEBjIEVJ
TkFfVFJVRSBvbiBzdWNjZXNzIG9yIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZQotICovCi1FQVBJ
IEVpbmFfQm9vbCAgICBld2tfdmlld19zZXR0aW5nX2FsbG93X3VuaXZlcnNhbF9hY2Nlc3NfZnJv
bV9maWxlX3VybHNfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgZmxhZyk7Ci0KLS8qKgot
ICogR2V0cyBpZiBhbGxvd2luZyB1bml2ZXJzYWwgYWNjZXNzIGZyb20gZmlsZSBVUkxzIGlzIGVu
YWJsZWQuCi0gKgotICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gcXVlcnkgaWYgYWxsb3dpbmcg
dW5pdmVyc2FsIGFjY2VzcyBmcm9tIGZpbGUgVVJMcyBpcyBlbmFibGVkLgotICoKLSAqIEByZXR1
cm4gQGMgRUlOQV9UUlVFIGlmIGFsbG93aW5nIHVuaXZlcnNhbCBhY2Nlc3MgZnJvbSBmaWxlIFVS
THMgaXMgZW5hYmxlZCwgQGMgRUlOQV9GQUxTRQotICogICAgICAgICBvdGhlcndpc2UKLSAqCi0g
KiBAc2VlIGV3a192aWV3X3NldHRpbmdfYWxsb3dfdW5pdmVyc2FsX2FjY2Vzc19mcm9tX2ZpbGVf
dXJsc19zZXQoKQotICovCi1FQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld19zZXR0aW5nX2FsbG93
X3VuaXZlcnNhbF9hY2Nlc3NfZnJvbV9maWxlX3VybHNfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpv
KTsKLQotLyoqCi0gKiBFbmFibGVzL2Rpc2FibGVzIGFsbG93aW5nIGZpbGUgYWNjZXNzIGZyb20g
ZmlsZSBVUkxzLgotICoKLSAqIFRoaXMgc2V0dGluZyBzcGVjaWZpZXMgd2hldGhlciBsb2NhbGx5
IGxvYWRlZCBkb2N1bWVudHMgYXJlIGFsbG93ZWQgdG8gYWNjZXNzIG90aGVyIGxvY2FsIHVybHMu
Ci0gKiBCeSBkZWZhdWx0IHRoaXMgc2V0dGluZyBpcyBlbmFibGVkLgotICoKLSAqIEBwYXJhbSBv
IHZpZXcgb2JqZWN0IHRvIHNldCBhbGxvd2luZyBmaWxlIGFjY2VzcyBmcm9tIGZpbGUgVVJMcwot
ICogQHBhcmFtIGVuYWJsZSBAYyBFSU5BX1RSVUUgdG8gZW5hYmxlIGZpbGUgYWNjZXNzIGZyb20g
ZmlsZSBVUkxzLAotICogICAgICAgIEBjIEVJTkFfRkFMU0UgdG8gZGlzYWJsZQotICoKLSAqIEBy
ZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3Mgb3IgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJl
Ci0gKi8KLUVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3NldHRpbmdfYWxsb3dfZmlsZV9hY2Nl
c3NfZnJvbV9maWxlX3VybHNfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgZmxhZyk7Ci0K
LS8qKgotICogR2V0cyBpZiBhbGxvd2luZyBmaWxlIGFjY2VzcyBmcm9tIGZpbGUgVVJMcyBpcyBl
bmFibGVkLgotICoKLSAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIHF1ZXJ5IGlmIGFsbG93aW5n
IGZpbGUgYWNjZXNzIGZyb20gZmlsZSBVUkxzIGlzIGVuYWJsZWQuCi0gKgotICogQHJldHVybiBA
YyBFSU5BX1RSVUUgaWYgYWxsb3dpbmcgZmlsZSBhY2Nlc3MgZnJvbSBmaWxlIFVSTHMgaXMgZW5h
YmxlZCwgQGMgRUlOQV9GQUxTRQotICogICAgICAgICBvdGhlcndpc2UKLSAqCi0gKiBAc2VlIGV3
a192aWV3X3NldHRpbmdfYWxsb3dfZmlsZV9hY2Nlc3NfZnJvbV9maWxlX3VybHNfc2V0KCkKLSAq
LwotRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfc2V0dGluZ19hbGxvd19maWxlX2FjY2Vzc19m
cm9tX2ZpbGVfdXJsc19nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOwotCi0vKioKLSAqIEdldHMg
dGhlIGludGVybmFsIGRhdGEgb2YgQGEgby4KLSAqCi0gKiBUaGlzIGlzIHNpbWlsYXIgdG8gZXZh
c19vYmplY3Rfc21hcnRfZGF0YV9nZXQoKSwgYnV0IGFkZGl0aW9uYWxseSBkb2VzIHR5cGUgY2hl
Y2tpbmcuCi0gKgotICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gZ2V0IHRoZSBpbnRlcm5hbCBk
YXRhCi0gKgotICogQHJldHVybiB0aGUgaW50ZXJuYWwgZGF0YSBvZiBAYSBvLCBvciBAYyBOVUxM
IG9uIGZhaWx1cmUKLSAqLwotRUFQSSBFd2tfVmlld19TbWFydF9EYXRhICpld2tfdmlld19zbWFy
dF9kYXRhX2dldChjb25zdCBFdmFzX09iamVjdCAqbyk7Ci0KLS8qKgotICogUHJvY2VzcyBzY3Jv
bGxzLgotICoKLSAqIEBwYXJhbSBwcml2IHRoZSBwb2ludGVyIHRvIHRoZSBwcml2YXRlIGRhdGEg
b2YgdGhlIHZpZXcgdG8gcHJvY2VzcyBzY3JvbGxzCi0gKgotICogQG5vdGUgVGhpcyBpcyBub3Qg
Zm9yIGdlbmVyYWwgdXNlIGJ1dCBqdXN0IGZvciBzdWJjbGFzc2VzIHRoYXQgd2FudAotICogICAg
ICAgdG8gZGVmaW5lIHRoZWlyIG93biBiYWNraW5nIHN0b3JlLgotICovCi1FQVBJIHZvaWQgZXdr
X3ZpZXdfc2Nyb2xsc19wcm9jZXNzKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkKTsKLQotLyoqCi0g
KiBHZXRzIHRoZSBhdHRyaWJ1dGVzIG9mIHRoZSB2aWV3cG9ydCBtZXRhIHRhZy4KLSAqCi0gKiBQ
cm9wZXJ0aWVzIGFyZSByZXR1cm5lZCBpbiB0aGUgcmVzcGVjdGl2ZSBwb2ludGVycy4gUGFzc2lu
ZyBAYyBOVUxMIHRvIGFueSBvZgotICogdGhlc2UgcG9pbnRlcnMgd2lsbCBtYWtlIHRoYXQgcHJv
cGVydHkgdG8gbm90IGJlIHJldHVybmVkLgotICoKLSAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRv
IGdldCB0aGUgdmlld3BvcnQgYXR0cmlidXRlcwotICogQHBhcmFtIHcgdGhlIHBvaW50ZXIgdG8g
c3RvcmUgdGhlIHdpZHRoIG9mIHRoZSB2aWV3cG9ydAotICogQHBhcmFtIGggdGhlIHBvaW50ZXIg
dG8gc3RvcmUgdGhlIGhlaWdodCBvZiB0aGUgdmlld3BvcnQKLSAqIEBwYXJhbSBpbml0X3NjYWxl
IHRoZSBwb2ludGVyIHRvIHN0b3JlIHRoZSBpbml0aWFsIHNjYWxlIHZhbHVlCi0gKiBAcGFyYW0g
bWF4X3NjYWxlIHRoZSBwb2ludGVyIHRvIHN0b3JlIHRoZSBtYXhpbXVtIHNjYWxlIHZhbHVlCi0g
KiBAcGFyYW0gbWluX3NjYWxlIHRoZSBwb2ludGVyIHRvIHN0b3JlIHRoZSBtaW5pbXVtIHNjYWxl
IHZhbHVlCi0gKiBAcGFyYW0gZGV2aWNlX3BpeGVsX3JhdGlvIHRoZSBwb2ludGVyIHRvIHN0b3Jl
IHRoZSBkZXZpY2UgcGl4ZWwgcmF0aW8gdmFsdWUKLSAqIEBwYXJhbSB1c2VyX3NjYWxhYmxlIHRo
ZSBwb2ludGVyIHRvIHN0b3JlIGlmIHVzZXIgY2FuIHNjYWxlIHZpZXdwb3J0Ci0gKi8KLUVBUEkg
dm9pZCBld2tfdmlld192aWV3cG9ydF9hdHRyaWJ1dGVzX2dldChjb25zdCBFdmFzX09iamVjdCAq
bywgaW50ICp3LCBpbnQgKmgsIGZsb2F0ICppbml0X3NjYWxlLCBmbG9hdCAqbWF4X3NjYWxlLCBm
bG9hdCAqbWluX3NjYWxlLCBmbG9hdCAqZGV2aWNlX3BpeGVsX3JhdGlvICwgRWluYV9Cb29sICp1
c2VyX3NjYWxhYmxlKTsKLQotLyoqCi0gKiBTZXRzIHRoZSB6b29tIHJhbmdlLgotICoKLSAqIEBw
YXJhbSBvIHZpZXcgb2JqZWN0IHRvIHNldCB0aGUgem9vbSByYW5nZQotICogQHBhcmFtIG1pbl9z
Y2FsZSB0aGUgbWluaW11bSB2YWx1ZSBvZiB0aGUgem9vbSByYW5nZQotICogQHBhcmFtIG1heF9z
Y2FsZSB0aGUgbWF4aW11bSB2YWx1ZSBvZiB0aGUgem9vbSByYW5nZQotICoKLSAqIEByZXR1cm4g
QGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3MsIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZQotICovCi1F
QVBJIEVpbmFfQm9vbCBld2tfdmlld196b29tX3JhbmdlX3NldChFdmFzX09iamVjdCAqbywgZmxv
YXQgbWluX3NjYWxlLCBmbG9hdCBtYXhfc2NhbGUpOwotCi0vKioKLSAqIEdldHMgdGhlIG1pbmlt
dW0gdmFsdWUgb2YgdGhlIHpvb20gcmFuZ2UuCi0gKgotICogQHBhcmFtIG8gdmlldyBvYmplY3Qg
dG8gZ2V0IHRoZSBtaW5pbXVtIHZhbHVlIG9mIHRoZSB6b29tIHJhbmdlCi0gKgotICogQHJldHVy
biB0aGUgbWluaW11bSB2YWx1ZSBvZiB0aGUgem9vbSByYW5nZSBvbiBzdWNjZXNzLCBvcgotICog
ICAgICAgICBAYyAtMSBvbiBmYWlsdXJlCi0gKi8KLUVBUEkgZmxvYXQgZXdrX3ZpZXdfem9vbV9y
YW5nZV9taW5fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKLQotLyoqCi0gKiBHZXRzIHRoZSBt
YXhpbXVtIHZhbHVlIG9mIHRoZSB6b29tIHJhbmdlLgotICoKLSAqIEBwYXJhbSBvIHZpZXcgb2Jq
ZWN0IHRvIGdldCB0aGUgbWF4aW11bSB2YWx1ZSBvZiB0aGUgem9vbSByYW5nZQotICoKLSAqIEBy
ZXR1cm4gdGhlIG1heGltdW0gdmFsdWUgb2YgdGhlIHpvb20gcmFuZ2Ugb24gc3VjY2Vzcywgb3IK
LSAqICAgICAgICAgQGMgLTEuMCBvbiBmYWlsdXJlCi0gKi8KLUVBUEkgZmxvYXQgZXdrX3ZpZXdf
em9vbV9yYW5nZV9tYXhfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKLQotLyoqCi0gKiBFbmFi
bGVzL2Rpc2FibGVzIHRoZSB6b29tLgotICoKLSAqIEBwYXJhbSBvIHZpZXcgdG8gc2V0IHpvb20K
LSAqIEBwYXJhbSB1c2VyX3NjYWxhYmxlIEBjIEVJTkFfVFJVRSB0byBlbmFibGUgem9vbSwgQGMg
RUlOQV9GQUxTRSB0byBkaXNhYmxlCi0gKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3Vj
Y2VzcyBvciBAYyBFSU5BX0ZBTFNFIG9uIGZhaWx1cmUKLSAqLwotRUFQSSBFaW5hX0Jvb2wgZXdr
X3ZpZXdfdXNlcl9zY2FsYWJsZV9zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCB1c2VyX3Nj
YWxhYmxlKTsKLQotLyoqCi0gKiBRdWVyaWVzIGlmIHRoZSB6b29tIGlzIGVuYWJsZWQuCi0gKgot
ICogQHBhcmFtIG8gdmlldyB0byBxdWVyeSBpZiB6b29tIGlzIGVuYWJsZWQKLSAqCi0gKiBAcmV0
dXJuIEBjIEVJTkFfVFJVRSBpZiB0aGUgem9vbSBpcyBlbmFibGVkLCBAYyBFSU5BX0ZBTFNFIGlm
IG5vdCBvciBvbiBmYWlsdXJlCi0gKi8KLUVBUEkgRWluYV9Cb29sIGV3a192aWV3X3VzZXJfc2Nh
bGFibGVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKLQotLyoqCi0gKiBRdWVyaWVzIHRoZSBy
YXRpbyBiZXR3ZWVuIHRoZSBDU1MgdW5pdHMgYW5kIGRldmljZSBwaXhlbHMgd2hlbiB0aGUgY29u
dGVudCBpcyB1bnNjYWxlZC4KLSAqCi0gKiBXaGVuIGRlc2lnbmluZyB0b3VjaC1mcmllbmRseSBj
b250ZW50cywga25vd2luZyB0aGUgYXBwcm94aW1hdGVkIHRhcmdldCBzaXplIG9uIGEgZGV2aWNl
Ci0gKiBpcyBpbXBvcnRhbnQgZm9yIGNvbnRlbnRzIHByb3ZpZGVycyBpbiBvcmRlciB0byBnZXQg
dGhlIGludGVudGVkIGxheW91dCBhbmQgZWxlbWVudAotICogc2l6ZXMuCi0gKgotICogQXMgbW9z
dCBmaXJzdCBnZW5lcmF0aW9uIHRvdWNoIGRldmljZXMgaGFkIGEgUFBJIG9mIGFwcHJveGltYXRl
bHkgMTYwLCB0aGlzIGJlY2FtZSBhCi0gKiBkZS1mYWN0byB2YWx1ZSwgd2hlbiB1c2VkIGluIGNv
bmp1bmN0aW9uIHdpdGggdGhlIHZpZXdwb3J0IG1ldGEgdGFnLgotICoKLSAqIERldmljZXMgd2l0
aCBhIGhpZ2hlciBQUEkgbGVhcm5pbmcgdG93YXJkcyAyNDAgb3IgMzIwLCBhcHBsaWVzIGEgcHJl
LXNjYWxpbmcgb24gYWxsCi0gKiBjb250ZW50LCBvZiBlaXRoZXIgMS41IG9yIDIuMCwgbm90IGFm
ZmVjdGluZyB0aGUgQ1NTIHNjYWxlIG9yIHBpbmNoIHpvb21pbmcuCi0gKgotICogVGhpcyB2YWx1
ZSBjYW4gYmUgc2V0IHVzaW5nIHRoaXMgcHJvcGVydHkgYW5kIGl0IGlzIGV4cG9zZWQgdG8gQ1NT
IG1lZGlhIHF1ZXJpZXMgdXNpbmcKLSAqIHRoZSAtd2Via2l0LWRldmljZS1waXhlbC1yYXRpbyBx
dWVyeS4KLSAqCi0gKiBGb3IgaW5zdGFuY2UsIGlmIHlvdSB3YW50IHRvIGxvYWQgYW4gaW1hZ2Ug
d2l0aG91dCBoYXZpbmcgaXQgdXBzY2FsZWQgb24gYSB3ZWIgdmlldwotICogdXNpbmcgYSBkZXZp
Y2UgcGl4ZWwgcmF0aW8gb2YgMi4wIGl0IGNhbiBiZSBkb25lIGJ5IGxvYWRpbmcgYW4gaW1hZ2Ug
b2Ygc2F5IDEwMHgxMDAKLSAqIHBpeGVscyBidXQgc2hvd2luZyBpdCBhdCBoYWxmIHRoZSBzaXpl
LgotICoKLSAqIEBtZWRpYSAoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAxLjUpIHsK
LSAqICAgICAuaWNvbiB7Ci0gKiAgICAgICAgIHdpZHRoOiA1MHB4OwotICogICAgICAgICBoZWln
aHQ6IDUwcHg7Ci0gKiAgICAgICAgIHVybDogIi9pbWFnZXMvaWNvbkAyeC5wbmciOyAvLyBUaGlz
IGlzIGFjdHVhbGx5IGEgMTAweDEwMCBpbWFnZQotICogICAgIH0KLSAqIH0KLSAqCi0gKiBJZiB0
aGUgYWJvdmUgaXMgdXNlZCBvbiBhIGRldmljZSB3aXRoIGRldmljZSBwaXhlbCByYXRpbyBvZiAx
LjUsIGl0IHdpbGwgYmUgc2NhbGVkCi0gKiBkb3duIGJ1dCBzdGlsbCBwcm92aWRlIGEgYmV0dGVy
IGxvb2tpbmcgaW1hZ2UuCi0gKgotICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gZ2V0IGRldmlj
ZSBwaXhlbCByYXRpbwotICoKLSAqIEByZXR1cm4gdGhlIHJhdGlvIGJldHdlZW4gdGhlIENTUyB1
bml0cyBhbmQgZGV2aWNlIHBpeGVscywKLSAqICAgICAgICAgb3IgQGMgLTEuMCBvbiBmYWlsdXJl
Ci0gKi8KLUVBUEkgZmxvYXQgZXdrX3ZpZXdfZGV2aWNlX3BpeGVsX3JhdGlvX2dldChjb25zdCBF
dmFzX09iamVjdCAqbyk7Ci0KLS8qKgotICogU2V0cyB0aGUgcmF0aW8gYmV0d2VlbiB0aGUgQ1NT
IHVuaXRzIGFuZCBkZXZpY2UgcGl4ZWxzIHdoZW4gdGhlIGNvbnRlbnQgaXMgdW5zY2FsZWQuCi0g
KgotICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gc2V0IGRldmljZSBwaXhlbCByYXRpbwotICoK
LSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIHRoZSBkZXZpY2UgcGl4ZWwgcmF0aW8gd2FzIHNl
dCwgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UKLSAqCi0gKiBAc2VlIGV3a192aWV3X2RldmljZV9w
aXhlbF9yYXRpb19nZXQoKQotICovCi1FQVBJIEVpbmFfQm9vbCBld2tfdmlld19kZXZpY2VfcGl4
ZWxfcmF0aW9fc2V0KEV2YXNfT2JqZWN0ICpvLCBmbG9hdCByYXRpbyk7Ci0KLS8qKgotICogQ2hh
bmdlcyB0aGUgdGV4dCBkaXJlY3Rpb24gb2YgdGhlIHNlbGVjdGVkIGlucHV0IG5vZGUuCi0gKgot
ICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gc2V0IHRleHQgZGlyZWN0aW9uLgotICogQHBhcmFt
IGRpcmVjdGlvbiB0ZXh0IGRpcmVjdGlvbi4KLSAqLwotRUFQSSB2b2lkIGV3a192aWV3X3RleHRf
ZGlyZWN0aW9uX3NldChFdmFzX09iamVjdCAqbywgRXdrX1RleHRfRGlyZWN0aW9uIGRpcmVjdGlv
bik7Ci0KLS8qKgotICogU2V0cyB0aGUgdmlldyBtb2RlLgotICoKLSAqIFRoZSB2aWV3LW1vZGUg
bWVkaWEgZmVhdHVyZSBkZXNjcmliZXMgdGhlIG1vZGUgaW4gd2hpY2ggdGhlCi0gKiBXZWIgYXBw
bGljYXRpb24gaXMgYmVpbmcgc2hvd24gYXMgYSBydW5uaW5nIGFwcGxpY2F0aW9uLgotICoKLSAq
IEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIGNoYW5nZSB0aGUgdmlldyBtb2RlCi0gKiBAcGFyYW0g
dmlld19tb2RlIHBhZ2UgdmlldyBtb2RlIHRvIHNldAotICoKLSAqIEByZXR1cm4gQGMgRUlOQV9U
UlVFIG9uIHN1Y2Nlc3Mgb3IgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UKLSAqLwotRUFQSSBFaW5h
X0Jvb2wgZXdrX3ZpZXdfbW9kZV9zZXQoRXZhc19PYmplY3QgKm8sIEV3a19WaWV3X01vZGUgdmll
d19tb2RlKTsKLQotLyoqCi0gKiBHZXRzIHRoZSB2aWV3IG1vZGUuCi0gKgotICogQHBhcmFtIG8g
dmlldyBvYmplY3QgdG8gZ2V0IHRoZSB2aWV3IG1vZGUKLSAqCi0gKiBAcmV0dXJuIGVudW0gdmFs
dWUgb2YgQGEgRXdrX1ZpZXdfTW9kZSB0aGF0IGluZGljYXRlcyBjdXJyZW50IHZpZXcgbW9kZSBv
biBzdWNjZXNzIG9yCi0gKiAgICAgICAgIEVXS19WSUVXX01PREVfSU5WQUxJRCBvdGhlcndpc2UK
LSAqCi0gKiBAc2VlIGV3a192aWV3X21vZGVfc2V0KCkKLSAqLwotRUFQSSBFd2tfVmlld19Nb2Rl
IGV3a192aWV3X21vZGVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKLQotLyoqCi0gKiBDcmVh
dGVzIGEgSlMgb2JqZWN0IG5hbWVkIEBhIG9ial9uYW1lIGFzIHByb3BlcnR5IG9mIHRoZSB3aW5k
b3cgb2JqZWN0LiBUaGlzIHNob3VsZCBiZSBjYWxsZWQgb24gYSBjYWxsYmFjayBjb25uZWN0ZWR0
byB0aGUKLSAqIGpzLHdpbmRvd29iamVjdCxjbGVhciBzaWduYWwuCi0gKgotICogQHBhcmFtIG8g
dmlldy4KLSAqIEBwYXJhbSBvYmogb2JqZWN0IHRoYXQgd2lsbCBiZSBhZGRlZChzZWU6IEBhIGV3
a19qc19vYmplY3RfbmV3KS4KLSAqIEBwYXJhbSBvYmpfbmFtZSBuYW1lIG9mIHRoZSBvYmplY3Qu
Ci0gKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgb2JqZWN0IHdhcyBhZGRlZCwgQGMgRUlO
QV9GQUxTRSBpZiBub3QuCi0gKi8KLUVBUEkgRWluYV9Cb29sIGV3a192aWV3X2pzX29iamVjdF9h
ZGQoRXZhc19PYmplY3QgKm8sIEV3a19KU19PYmplY3QgKm9iaiwgY29uc3QgY2hhciAqb2JqX25h
bWUpOwotCi0vLy8gRGVmaW5lcyB0aGUgcGFnZSB2aXNpYmlsaXR5IHN0YXR1cy4KLWVudW0gX0V3
a19QYWdlX1Zpc2liaWxpdHlfU3RhdGUgewotICAgIEVXS19QQUdFX1ZJU0lCSUxJVFlfU1RBVEVf
VklTSUJMRSwKLSAgICBFV0tfUEFHRV9WSVNJQklMSVRZX1NUQVRFX0hJRERFTiwKLSAgICBFV0tf
UEFHRV9WSVNJQklMSVRZX1NUQVRFX1BSRVJFTkRFUiwKLSAgICBFV0tfUEFHRV9WSVNJQklMSVRZ
X1NUQVRFX1VOTE9BREVECi19OwotLy8vIENyZWF0ZXMgYSB0eXBlIG5hbWUgZm9yIEBhIF9Fd2tf
UGFnZV9WaXNpYmlsaXR5X1N0YXRlLgotdHlwZWRlZiBlbnVtIF9Fd2tfUGFnZV9WaXNpYmlsaXR5
X1N0YXRlIEV3a19QYWdlX1Zpc2liaWxpdHlfU3RhdGU7Ci0KLS8qKgotICogU2V0cyB0aGUgdmlz
aWJpbGl0eSBzdGF0ZSBvZiB0aGUgcGFnZS4KLSAqCi0gKiBUaGlzIGZ1bmN0aW9uIGxldCBXZWJL
aXQga25vd3MgdGhlIHZpc2liaWxpdHkgc3RhdHVzIG9mIHRoZSBwYWdlLgotICogV2ViS2l0IHdp
bGwgc2F2ZSB0aGUgY3VycmVudCBzdGF0dXMsIGFuZCBmaXJlIGEgInZpc2liaWxpdHljaGFuZ2Ui
Ci0gKiBldmVudCB3aGljaCB3ZWIgYXBwbGljYXRpb24gY2FuIGxpc3Rlbi4gV2ViIGFwcGxpY2F0
aW9uIGNvdWxkIHNsb3cKLSAqIGRvd24gb3Igc3RvcCBpdHNlbGYgd2hlbiBpdCBnZXRzIGEgInZp
c2liaWxpdHljaGFuZ2UiIGV2ZW50IGFuZCBpdHMKLSAqIHZpc2liaWxpdHkgc3RhdGUgaXMgaGlk
ZGVuLiBJZiBpdHMgdmlzaWJpbGl0eSBzdGF0ZSBpcyB2aXNpYmxlLCB0aGVuCi0gKiB0aGUgd2Vi
IGFwcGxpY2F0aW9uIGNvdWxkIHVzZSBtb3JlIHJlc291cmNlcy4KLSAqCi0gKiBUaGlzIGZlYXR1
cmUgbWFrZXMgdGhhdCB3ZWIgYXBwbGljYXRpb24gY291bGQgdXNlIHRoZSByZXNvdXJjZXMgZWZm
aWNpZW50bHksCi0gKiBzdWNoIGFzIHBvd2VyLCBDUFUsIGFuZCBldGMuCi0gKgotICogSWYgbW9y
ZSBkZXRhaWxlZCBkZXNjcmlwdGlvbiBpcyBuZWVkZWQsIHBsZWFzZSBzZWUgdGhlIHNwZWNpZmlj
YXRpb24uCi0gKiAoaHR0cDovL3d3dy53My5vcmcvVFIvcGFnZS12aXNpYmlsaXR5KQotICoKLSAq
IEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIHNldCB0aGUgdmlzaWJpbGl0eSBzdGF0ZS4KLSAqIEBw
YXJhbSBwYWdlX3Zpc2libGVfc3RhdGUgdGhlIHZpc2libGUgc3RhdGUgb2YgdGhlIHBhZ2UgdG8g
c2V0LgotICogQHBhcmFtIGluaXRpYWxfc3RhdGUgQGMgRUlOQV9UUlVFIGlmIHRoaXMgZnVuY3Rp
b24gaXMgY2FsbGVkIGF0IHBhZ2UgaW5pdGlhbGl6YXRpb24gdGltZSwKLSAqICAgICAgICAgICAg
ICAgICAgICAgIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlLgotICoKLSAqIEByZXR1cm4gQGMgRUlO
QV9UUlVFIG9uIHN1Y2Nlc3Mgb3IgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJlLgotICovCi1FQVBJ
IEVpbmFfQm9vbCBld2tfdmlld192aXNpYmlsaXR5X3N0YXRlX3NldChFdmFzX09iamVjdCAqbywg
RXdrX1BhZ2VfVmlzaWJpbGl0eV9TdGF0ZSBwYWdlX3Zpc2libGVfc3RhdGUsIEVpbmFfQm9vbCBp
bml0aWFsX3N0YXRlKTsKLQotLyoqCi0gKiBHZXRzIHRoZSB2aXNpYmlsaXR5IHN0YXRlIG9mIHRo
ZSBwYWdlLgotICoKLSAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0Ci0gKgotICogQHJldHVybiBlbnVt
IHZhbHVlIG9mIEBhIEV3a19QYWdlX1Zpc2liaWxpdHlfU3RhdGUgdGhhdCBpbmRpY2F0ZXMgY3Vy
cmVudCB2aXNpYmlsaXR5IHN0YXR1cyBvZiB0aGUgcGFnZS4KLSAqCi0gKiBAc2VlIGV3a192aWV3
X3Zpc2liaWxpdHlfc3RhdGVfc2V0KCkKLSAqLwotRUFQSSBFd2tfUGFnZV9WaXNpYmlsaXR5X1N0
YXRlIGV3a192aWV3X3Zpc2liaWxpdHlfc3RhdGVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsK
LQotLyoqCi0gKiBSZXR1cm5zIHdoZXRoZXIgdGhlIHZpZXcgaGFzIGRpc3BsYXllZCBtaXhlZCBj
b250ZW50LgotICoKLSAqIFdoZW4gYSB2aWV3IGhhcyBkaXNwbGF5ZWQgbWl4ZWQgY29udGVudCwg
YW55IG9mIGl0cyBmcmFtZXMgaGFzIGxvYWRlZCBhbiBIVFRQUyBVUkkKLSAqIHdoaWNoIGhhcyBp
dHNlbGYgbG9hZGVkIGFuZCBkaXNwbGF5ZWQgYSByZXNvdXJjZSAoc3VjaCBhcyBhbiBpbWFnZSkg
ZnJvbSBhbiBpbnNlY3VyZSwKLSAqIHRoYXQgaXMsIG5vbi1IVFRQUywgVVJJLgotICoKLSAqIFRo
ZSBzdGF0dXMgaXMgcmVzZXQgb25seSB3aGVuIGEgbG9hZCBldmVudCBvY2N1cnMgKGVnLiB0aGUg
cGFnZSBpcyByZWxvYWRlZCBvciBhIG5ldyBwYWdlIGlzIGxvYWRlZCkuCi0gKgotICogV2hlbiBv
bmUgb2YgdGhlIGNvbnRhaW5pbmcgZnJhbWVzIGRpc3BsYXlzIG1peGVkIGNvbnRlbnQsIHRoZSB2
aWV3IGVtaXRzIHRoZSAibWl4ZWRjb250ZW50LGRpc3BsYXllZCIgc2lnbmFsLgotICoKLSAqIEBw
YXJhbSBvIFRoZSB2aWV3IHRvIHF1ZXJ5LgotICoKLSAqIEBzYSBld2tfZnJhbWVfbWl4ZWRfY29u
dGVudF9kaXNwbGF5ZWRfZ2V0Ci0gKi8KLUVBUEkgRWluYV9Cb29sIGV3a192aWV3X21peGVkX2Nv
bnRlbnRfZGlzcGxheWVkX2dldChjb25zdCBFdmFzX09iamVjdCAqbyk7Ci0KLS8qKgotICogUmV0
dXJucyB3aGV0aGVyIHRoZSB2aWV3IGhhcyBydW4gbWl4ZWQgY29udGVudC4KLSAqCi0gKiBXaGVu
IGEgdmlldyBoYXMgcnVuIG1peGVkIGNvbnRlbnQsIGFueSBvZiBpdHMgZnJhbWVzIGhhcyBsb2Fk
ZWQgYW4gSFRUUFMgVVJJCi0gKiB3aGljaCBoYXMgaXRzZWxmIGxvYWRlZCBhbmQgcnVuIGEgcmVz
b3VyY2UgKHN1Y2ggYXMgYW4gaW1hZ2UpIGZyb20gYW4gaW5zZWN1cmUsCi0gKiB0aGF0IGlzLCBu
b24tSFRUUFMsIFVSSS4KLSAqCi0gKiBUaGUgc3RhdHVzIGlzIHJlc2V0IG9ubHkgd2hlbiBhIGxv
YWQgZXZlbnQgb2NjdXJzIChlZy4gdGhlIHBhZ2UgaXMgcmVsb2FkZWQgb3IgYSBuZXcgcGFnZSBp
cyBsb2FkZWQpLgotICoKLSAqIFdoZW4gb25lIG9mIHRoZSBjb250YWluaW5nIGZyYW1lcyBydW5z
IG1peGVkIGNvbnRlbnQsIHRoZSB2aWV3IGVtaXRzIHRoZSAibWl4ZWRjb250ZW50LHJ1biIgc2ln
bmFsLgotICoKLSAqIEBwYXJhbSBvIFRoZSB2aWV3IHRvIHF1ZXJ5LgotICoKLSAqIEBzYSBld2tf
ZnJhbWVfbWl4ZWRfY29udGVudF9ydW5fZ2V0Ci0gKi8KLUVBUEkgRWluYV9Cb29sIGV3a192aWV3
X21peGVkX2NvbnRlbnRfcnVuX2dldChjb25zdCBFdmFzX09iamVjdCAqbyk7Ci0KLS8qKgotICog
UmV0dXJucyB3aGV0aGVyIFhTU0F1ZGl0b3IgZmVhdHVyZSBpcyBlbmFibGVkLgotICoKLSAqIEBw
YXJhbSBvIHZpZXcgb2JqZWN0IHRvIHF1ZXJ5IHdoZXRoZXIgWFNTQXVkaXRvciBmZWF0dXJlIGlz
IGVuYWJsZWQuCi0gKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgdGhlIFhTU0F1ZGl0b3Ig
ZmVhdHVyZSBpcyBlbmFibGVkLAotICogICAgICAgICBAYyBFSU5BX0ZBTFNFIGlmIG5vdCBvciBv
biBmYWlsdXJlLgotICovCi1FQVBJIEVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2VuYWJsZV94
c3NfYXVkaXRvcl9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOwotCi0vKioKLSAqIEVuYWJsZXMv
ZGlzYWJsZXMgdGhlIFhTU0F1ZGl0b3IgZmVhdHVyZS4KLSAqIAotICogVGhlIFhTU0F1ZGl0b3Ig
KGNyb3NzLXNpdGUgc2NyaXB0aW5nIHByb3RlY3Rpb24pIGZlYXR1cmUgcHJvdmlkZXMgcHJvdGVj
dGlvbiAKLSAqIGZyb20gcmVmbGVjdGVkIFhTUyBhdHRhY2tzIG9uIHZ1bG5lcmFibGUgd2ViIHNp
dGVzLiBXaGVuIFhTUyBpcyBlbmNvdW50ZXJlZAotICogaW4gdGhlIHBhZ2UsIGZyYW1lIHNlbmRz
IGEgc2lnbmFsICJ4c3MsZGV0ZWN0ZWQiIHdpdGggYWRkaXRpb25hbCBpbmZvcm1hdGlvbiAKLSAq
IG9uIHdoZXRoZXIgdGhlIGVudGlyZSBwYWdlIHdhcyBibG9ja2VkIG9yIG9ubHkgaW5qZWN0ZWQg
c2NyaXB0cyB3ZXJlIHJlbW92ZWQuIAotICogVGhpcyBmZWF0dXJlIGlzIGVuYWJsZWQgYnkgZGVm
YXVsdC4KLSAqCi0gKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBzZXQgdGhlIFhTU0F1ZGl0b3Ig
ZmVhdHVyZS4KLSAqIEBwYXJhbSBlbmFibGUgQGMgRUlOQV9UUlVFIHRvIGVuYWJsZSB0aGUgWFNT
QXVkaXRvciBmZWF0dXJlLAotICogICAgICAgIEBjIEVJTkFfRkFMU0UgdG8gZGlzYWJsZS4KLSAq
LwotRUFQSSB2b2lkIGV3a192aWV3X3NldHRpbmdfZW5hYmxlX3hzc19hdWRpdG9yX3NldChFdmFz
X09iamVjdCAqbywgRWluYV9Cb29sIGVuYWJsZSk7Ci0KLS8qKgotICogUmV0dXJucyB3aGV0aGVy
IHZpZGVvIGNhcHRpb25zIGRpc3BsYXkgZmVhdHVyZSBpcyBlbmFibGVkLgotICoKLSAqIFZpZGVv
IGNhcHRpb25zIGRpc3BsYXkgaXMgZGlzYWJsZWQgYnkgZGVmYXVsdC4KLSAqCi0gKiBAcGFyYW0g
byB2aWV3IG9iamVjdCB0byBxdWVyeSB3aGV0aGVyIHZpZGVvIGNhcHRpb25zIGRpc3BsYXkgZmVh
dHVyZSBpcyBlbmFibGVkLgotICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIHRoZSB2aWRl
byBjYXB0aW9ucyBkaXNwbGF5IGZlYXR1cmUgaXMgZW5hYmxlZCwKLSAqICAgICAgICAgQGMgRUlO
QV9GQUxTRSBpZiBub3Qgb3Igb24gZmFpbHVyZS4KLSAqLwotRUFQSSBFaW5hX0Jvb2wgZXdrX3Zp
ZXdfc2V0dGluZ19zaG91bGRfZGlzcGxheV9jYXB0aW9uc19nZXQoY29uc3QgRXZhc19PYmplY3Qg
Km8pOwotCi0vKioKLSAqIEVuYWJsZXMvZGlzYWJsZXMgdGhlIHZpZGVvIGNhcHRpb25zIGRpc3Bs
YXkgZmVhdHVyZS4KLSAqCi0gKiBUaGUgdmlkZW8gY2FwdGlvbnMgZGlzcGxheSBmZWF0dXJlIGlz
IHBhcnQgb2YgdHJhY2sgc3VwcG9ydCBmb3IgSFRNTDUgdmlkZW8uCi0gKgotICogQHBhcmFtIG8g
dmlldyBvYmplY3QgdG8gc2V0IHRoZSB2aWRlbyBjYXB0aW9ucyBkaXNwbGF5IGZlYXR1cmUuCi0g
KiBAcGFyYW0gZW5hYmxlIEBjIEVJTkFfVFJVRSB0byBlbmFibGUgdGhlIHZpZGVvIGNhcHRpb25z
IGRpc3BsYXkgZmVhdHVyZSwKLSAqIEBjIEVJTkFfRkFMU0UgdG8gZGlzYWJsZS4KLSAqLwotRUFQ
SSB2b2lkIGV3a192aWV3X3NldHRpbmdfc2hvdWxkX2Rpc3BsYXlfY2FwdGlvbnNfc2V0KEV2YXNf
T2JqZWN0ICpvLCBFaW5hX0Jvb2wgZW5hYmxlKTsKLQotLyoqCi0gKiBSZXR1cm5zIHdoZXRoZXIg
dmlkZW8gc3VidGl0bGVzIGRpc3BsYXkgZmVhdHVyZSBpcyBlbmFibGVkLgotICoKLSAqIFZpZGVv
IHN1YnRpdGxlcyBkaXNwbGF5IGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQuCi0gKgotICogQHBhcmFt
IG8gdmlldyBvYmplY3QgdG8gcXVlcnkgd2hldGhlciB2aWRlbyBzdWJ0aXRsZXMgZGlzcGxheSBm
ZWF0dXJlIGlzIGVuYWJsZWQuCi0gKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgdGhlIHZp
ZGVvIHN1YnRpdGxlcyBkaXNwbGF5IGZlYXR1cmUgaXMgZW5hYmxlZCwKLSAqICAgICAgICAgQGMg
RUlOQV9GQUxTRSBpZiBub3Qgb3Igb24gZmFpbHVyZS4KLSAqLwotRUFQSSBFaW5hX0Jvb2wgZXdr
X3ZpZXdfc2V0dGluZ19zaG91bGRfZGlzcGxheV9zdWJ0aXRsZXNfZ2V0KGNvbnN0IEV2YXNfT2Jq
ZWN0ICpvKTsKLQotLyoqCi0gKiBFbmFibGVzL2Rpc2FibGVzIHRoZSB2aWRlbyBzdWJ0aXRsZXMg
ZGlzcGxheSBmZWF0dXJlLgotICoKLSAqIFRoZSB2aWRlbyBzdWJ0aXRsZXMgZGlzcGxheSBmZWF0
dXJlIGlzIHBhcnQgb2YgdHJhY2sgc3VwcG9ydCBmb3IgSFRNTDUgdmlkZW8uCi0gKgotICogQHBh
cmFtIG8gdmlldyBvYmplY3QgdG8gc2V0IHRoZSB2aWRlbyBzdWJ0aXRsZXMgZGlzcGxheSBmZWF0
dXJlLgotICogQHBhcmFtIGVuYWJsZSBAYyBFSU5BX1RSVUUgdG8gZW5hYmxlIHRoZSB2aWRlbyBz
dWJ0aXRsZXMgZGlzcGxheSBmZWF0dXJlLAotICogQGMgRUlOQV9GQUxTRSB0byBkaXNhYmxlLgot
ICovCi1FQVBJIHZvaWQgZXdrX3ZpZXdfc2V0dGluZ19zaG91bGRfZGlzcGxheV9zdWJ0aXRsZXNf
c2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgZW5hYmxlKTsKLQotLyoqCi0gKiBSZXR1cm5z
IHdoZXRoZXIgdmlkZW8gdGV4dCBkZXNjcmlwdGlvbnMgZGlzcGxheSBmZWF0dXJlIGlzIGVuYWJs
ZWQuCi0gKgotICogVmlkZW8gdGV4dCBkZXNjcmlwdGlvbnMgZGlzcGxheSBpcyBkaXNhYmxlZCBi
eSBkZWZhdWx0LgotICoKLSAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIHF1ZXJ5IHdoZXRoZXIg
dmlkZW8gdGV4dCBkZXNjcmlwdGlvbnMgZGlzcGxheSBmZWF0dXJlIGlzIGVuYWJsZWQuCi0gKgot
ICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgdGhlIHZpZGVvIHRleHQgZGVzY3JpcHRpb25zIGRp
c3BsYXkgZmVhdHVyZSBpcyBlbmFibGVkLAotICogICAgICAgICBAYyBFSU5BX0ZBTFNFIGlmIG5v
dCBvciBvbiBmYWlsdXJlLgotICovCi1FQVBJIEVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX3No
b3VsZF9kaXNwbGF5X3RleHRfZGVzY3JpcHRpb25zX2dldChjb25zdCBFdmFzX09iamVjdCAqbyk7
Ci0KLS8qKgotICogRW5hYmxlcy9kaXNhYmxlcyB0aGUgdmlkZW8gdGV4dCBkZXNjcmlwdGlvbnMg
ZGlzcGxheSBmZWF0dXJlLgotICoKLSAqIFRoZSB2aWRlbyB0ZXh0IGRlc2NyaXB0aW9ucyBkaXNw
bGF5IGZlYXR1cmUgaXMgcGFydCBvZiB0cmFjayBzdXBwb3J0IGZvciBIVE1MNSB2aWRlby4KLSAq
Ci0gKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBzZXQgdGhlIHZpZGVvIHRleHQgZGVzY3JpcHRp
b25zIGRpc3BsYXkgZmVhdHVyZS4KLSAqIEBwYXJhbSBlbmFibGUgQGMgRUlOQV9UUlVFIHRvIGVu
YWJsZSB0aGUgdmlkZW8gdGV4dCBkZXNjcmlwdGlvbnMgZGlzcGxheSBmZWF0dXJlLAotICogQGMg
RUlOQV9GQUxTRSB0byBkaXNhYmxlLgotICovCi1FQVBJIHZvaWQgZXdrX3ZpZXdfc2V0dGluZ19z
aG91bGRfZGlzcGxheV90ZXh0X2Rlc2NyaXB0aW9uc19zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFf
Qm9vbCBlbmFibGUpOwotCi0vKioKLSAqIFNob3cgdGhlIGluc3BlY3RvciB0byBkZWJ1ZyBhIHdl
YiBwYWdlLgotICoKLSAqIFRoZSBmb2xsb3dpbmcgc2lnbmFscyBhcmUgZW1paXRlZC4KLSAqICJp
bnNwZWN0b3IsdmlldyxjcmVhdGUiIGFuZCAiaW5zcGVjdG9yLHZpZXcsY2xvc2UiCi0gKiBUaGUg
Zmlyc3Qgb25lIHdpbGwgYmUgY2FsbGVkIHRvIHJlcXVlc3QgdGhlIHZpZXcgZm9yIGluc3BlY3Rv
ciBvbiB2aWV3IHRoYXQgd2lsbCBiZSBpbnNwZWN0ZWQuCi0gKiBUaGlzIGNhbGxiYWNrIHNob3Vs
ZCBjcmVhdGUgdGhlIHZpZXcgZm9yIGluc3BlY3RvciBhbmQgc2V0IHRoZSB2aWV3IHdpdGggZXdr
X3ZpZXdfaW5zcGVjdG9yX3ZpZXdfc2V0KCkuCi0gKiBUaGUgc2Vjb25kIG9uZSB3aWxsIGJlIGNh
bGxlZCB0byBjbG9zZSB0aGUgdmlldyBmb3IgaW5zcGVjdG9yIG9uIHZpZXcgaGF2aW5nIHRoZSBp
bnNwZWN0b3IgYWZ0ZXIgZGlzY29ubmVjdGluZyBmcm9udGVuZAotICogVGhpcyBjYWxsYmFjayBz
aG91bGQgcmVtb3ZlIHRoZSB2aWV3IGZvciBpbnNwZWN0b3IuCi0gKgotICogV2hlbiB0aGUgdmll
dyBoYXZpbmcgdGhlIGluc3BlY3RvciBpcyByZW1vdmVkLAotICogcGxlYXNlIGVtaXQgdGhlICJp
bnNwZWN0b3IsdmlldyxkZXN0cm95IiBzaWduYWwgb24gdmlldyBmb3IgaW5zcGVjdG9yLgotICoK
LSAqIEBwYXJhbSBvIFRoZSB2aWV3IHRvIHNob3cgdGhlIGluc3BlY3Rvci4KLSAqCi0gKiBAc2Vl
IGV3a192aWV3X2luc3BlY3Rvcl9jbG9zZSgpCi0gKiBAc2VlIGV3a192aWV3X2luc3BlY3Rvcl92
aWV3X3NldCgpCi0gKi8KLUVBUEkgdm9pZCBld2tfdmlld19pbnNwZWN0b3Jfc2hvdyhjb25zdCBF
dmFzX09iamVjdCAqbyk7Ci0KLS8qKgotICogQ2xvc2UgdGhlIGluc3BlY3RvciB2aWV3Ci0gKgot
ICogQHBhcmFtIG8gVGhlIHZpZXcgdG8gY2xvc2UgdGhlIGluc3BlY3Rvci4KLSAqCi0gKiBAc2Vl
IGV3a192aWV3X2luc3BlY3Rvcl9zaG93KCkKLSAqIEBzZWUgZXdrX3ZpZXdfaW5zcGVjdG9yX3Zp
ZXdfZ2V0KCkKLSAqLwotRUFQSSB2b2lkIGV3a192aWV3X2luc3BlY3Rvcl9jbG9zZShjb25zdCBF
dmFzX09iamVjdCAqbyk7Ci0KLS8qKgotICogR2V0IHRoZSB2aWV3IG9mIGluc3BlY3Rvci4KLSAq
Ci0gKiBAcGFyYW0gbyBUaGUgdmlldyB0aGF0IGlzIGluc3BlY3RlZC4KLSAqCi0gKiBAcmV0dXJu
IHZpZXcgb2JqZWN0IG9uIHN1Y2Nlc3Mgb3IgQGMgTlVMTCBvbiBmYWlsdXJlCi0gKi8KLUVBUEkg
RXZhc19PYmplY3QqIGV3a192aWV3X2luc3BlY3Rvcl92aWV3X2dldChjb25zdCBFdmFzX09iamVj
dCAqbyk7Ci0KLS8qKgotICogU2V0IHRoZSB2aWV3IG9mIGluc3BlY3Rvci4KLSAqCi0gKiBAcGFy
YW0gbyBUaGUgdmlldyB0aGF0IGlzIGluc3BlY3RlZC4KLSAqIEBwYXJhbSBpbnNwZWN0b3Jfdmll
dyBUaGUgdmlldyBvZiBpbnNwZWN0b3IuCi0gKi8KLUVBUEkgdm9pZCBld2tfdmlld19pbnNwZWN0
b3Jfdmlld19zZXQoRXZhc19PYmplY3QgKm8sIEV2YXNfT2JqZWN0ICppbnNwZWN0b3Jfdmlldyk7
Ci0KLS8qKgotICogRW5hYmxlcy9kaXNhYmxlcyB0aGUgZnVsbHNjcmVlbiBtb2RlIGJ5IGphdmFz
Y3JpcHQgZnVsbHNjcmVlbiBBUEkuCi0gKiBUaGUgamF2YXNjcmlwdCBBUEkgYWxsb3dzIHRvIHJl
cXVlc3QgZnVsbCBzY3JlZW4gbW9kZSwgZm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlOgotICogaHR0
cDovL2R2Y3MudzMub3JnL2hnL2Z1bGxzY3JlZW4vcmF3LWZpbGUvdGlwL092ZXJ2aWV3Lmh0bWwK
LSAqCi0gKiBEZWZhdWx0IHZhbHVlIGZvciBqYXZhc2NyaXB0IGZ1bGxzY3JlZW4gQVBJIHNldHRp
bmcgaXMgQGMgRUlOQV9UUlVFLgotICoKLSAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIGVuYWJs
ZSBqYXZhc2NyaXB0IGZ1bGxzY3JlZW4gQVBJCi0gKiBAcGFyYW0gZW5hYmxlIEBjIEVJTkFfVFJV
RSB0byBlbmFibGUgamF2YXNjcmlwdCBmdWxsc2NyZWVuIEFQSSBvcgotICogICAgICAgICAgICAg
ICBAYyBFSU5BX0ZBTFNFIHRvIGRpc2FibGUKLSAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBv
biBzdWNjZXNzIG9yIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZQotICovCi1FQVBJIEVpbmFfQm9v
bCBld2tfdmlld19zZXR0aW5nX2VuYWJsZV9mdWxsc2NyZWVuX3NldChFdmFzX09iamVjdCAqbywg
RWluYV9Cb29sIGVuYWJsZSk7Ci0KLS8qKgotICogUXVlcmllcyBpZiB0aGUgZnVsbHNjcmVlbiBt
b2RlIGlzIGVuYWJsZWQuCi0gKgotICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gcXVlcnkgd2hl
dGhlciBqYXZhc2NyaXB0IGZ1bGxzY3JlZW4gQVBJIGlzIGVuYWJsZWQKLSAqCi0gKiBAcmV0dXJu
IEBjIEVJTkFfVFJVRSBpZiB0aGUgamF2YXNjcmlwdCBmdWxsc2NyZWVuIEFQSSBpcyBlbmFibGVk
Ci0gKiAgICAgICAgIEBjIEVJTkFfRkFMU0UgaWYgbm90IG9yIG9uIGZhaWx1cmUKLSAqLwotRUFQ
SSBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfZnVsbHNjcmVlbl9nZXQoY29uc3Qg
RXZhc19PYmplY3QgKm8pOwotCi0vKioKLSAqIEdldHMgdGhlIGNvbnRleHQgbWVudSBvYmplY3Qu
Ci0gKiBAcGFyYW0gbyBUaGUgdmlldyB0aGF0IGNvbnRhaW5zIGNvbnRleHQgbWVudS4KLSAqCi0g
KiBAcmV0dXJuIGNvbnRleHQgbWVudSBzdHJ1Y3R1cmUgb24gc3VjY2VzcyBvciBAYyBOVUxMIG9u
IGZhaWx1cmUKLSAqLwotRUFQSSBFd2tfQ29udGV4dF9NZW51ICpld2tfdmlld19jb250ZXh0X21l
bnVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKLQotLyoqCi0gKiBHZXRzIHRoZSBpbWFnZSBv
YmplY3Qgb2YgdGhlIHNwZWNpZmllZCBhcmVhIG9mIHRoZSB2aWV3LgotICoKLSAqIFRoZSByZXR1
cm5lZCBpbWFnZSBvYmplY3QgQGIgc2hvdWxkIGJlIGZyZWVkIGFmdGVyIHVzZS4KLSAqCi0gKiBA
cGFyYW0gbyB2aWV3IG9iamVjdCB0byBiZSBjYXB0dXJlZAotICogQHBhcmFtIGFyZWEgVGhlIGFy
ZWEgb2YgdGhlIHZpZXcgd2lsbCBiZSBjYXB0dXJlZC4KLSAqCi0gKiBAcmV0dXJuIG5ld2x5IGFs
bG9jYXRlZCBpbWFnZSBvYmplY3Qgb24gc3VjZXNzIG9yIEBjIE5VTEwgb24gZmFpbHVyZS4KLSAq
LwotRUFQSSBFdmFzX09iamVjdCAqZXdrX3ZpZXdfc2NyZWVuc2hvdF9jb250ZW50c19nZXQoY29u
c3QgRXZhc19PYmplY3QgKm8sIGNvbnN0IEVpbmFfUmVjdGFuZ2xlICphcmVhKTsKLQotI2lmZGVm
IF9fY3BsdXNwbHVzCi19Ci0jZW5kaWYKLSNlbmRpZiAvLyBld2tfdmlld19oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktp
dC9lZmwvZXdrL2V3a192aWV3X3ByaXZhdGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMTM1MTg4MC4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdf
cHJpdmF0ZS5oCisrKyAvZGV2L251bGwKQEAgLTEsMTU0ICswLDAgQEAKLS8qCi0gICAgQ29weXJp
Z2h0IChDKSAyMDA5LTIwMTAgUHJvRlVTSU9OIGVtYmVkZGVkIHN5c3RlbXMKLSAgICBDb3B5cmln
aHQgKEMpIDIwMDktMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCi0gICAgQ29weXJpZ2h0IChDKSAy
MDEyIEludGVsIENvcnBvcmF0aW9uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv
dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gICAgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAgICBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCi0gICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZ
SU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICAgIEJvc3Rvbiwg
TUEgMDIxMTAtMTMwMSwgVVNBLgotKi8KLQotI2lmbmRlZiBld2tfdmlld19wcml2YXRlX2gKLSNk
ZWZpbmUgZXdrX3ZpZXdfcHJpdmF0ZV9oCi0KLSNpbmNsdWRlICJGcmFtZS5oIgotI2luY2x1ZGUg
Ik5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIgotI2luY2x1ZGUgIlBhZ2UuaCIKLSNpbmNsdWRlICJX
aWRnZXQuaCIKLSNpbmNsdWRlICJld2tfdmlldy5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0j
aWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCi1jbGFzcyBDb2xvcjsKLWNsYXNzIENvbG9yQ2hv
b3NlckNsaWVudDsKLSNlbmRpZgotCi1jbGFzcyBDdXJzb3I7Ci1jbGFzcyBHcmFwaGljc0NvbnRl
eHQzRDsKLWNsYXNzIEdyYXBoaWNzTGF5ZXI7Ci1jbGFzcyBIVE1MUGx1Z0luRWxlbWVudDsKLWNs
YXNzIEludFJlY3Q7Ci1jbGFzcyBJbnRTaXplOwotY2xhc3MgUG9wdXBNZW51Q2xpZW50OwotfQot
Ci12b2lkIGV3a192aWV3X2N1cnNvcl9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IFdl
YkNvcmU6OkN1cnNvciYgY3Vyc29yKTsKLXZvaWQgZXdrX3ZpZXdfcmVhZHkoRXZhc19PYmplY3Qq
IGV3a1ZpZXcpOwotdm9pZCBld2tfdmlld19pbnB1dF9tZXRob2Rfc3RhdGVfc2V0KEV2YXNfT2Jq
ZWN0KiBld2tWaWV3LCBib29sIGFjdGl2ZSk7Ci12b2lkIGV3a192aWV3X3RpdGxlX3NldChFdmFz
X09iamVjdCogZXdrVmlldywgY29uc3QgRXdrX1RleHRfV2l0aF9EaXJlY3Rpb24qIHRpdGxlKTsK
LXZvaWQgZXdrX3ZpZXdfdXJpX2NoYW5nZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcpOwotdm9pZCBl
d2tfdmlld19sb2FkX2RvY3VtZW50X2ZpbmlzaGVkKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFdmFz
X09iamVjdCogZnJhbWUpOwotdm9pZCBld2tfdmlld19sb2FkX3N0YXJ0ZWQoRXZhc19PYmplY3Qq
IGV3a1ZpZXcsIEV2YXNfT2JqZWN0KiBld2tGcmFtZSk7Ci12b2lkIGV3a192aWV3X2xvYWRfcHJv
dmlzaW9uYWwoRXZhc19PYmplY3QqIGV3a1ZpZXcpOwotdm9pZCBld2tfdmlld19sb2FkX3Byb3Zp
c2lvbmFsX2ZhaWxlZChFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgRXdrX0ZyYW1lX0xvYWRf
RXJyb3IqIGVycm9yKTsKLXZvaWQgZXdrX3ZpZXdfZnJhbWVfbWFpbl9sb2FkX3N0YXJ0ZWQoRXZh
c19PYmplY3QqIGV3a1ZpZXcpOwotdm9pZCBld2tfdmlld19mcmFtZV9tYWluX2NsZWFyZWQoRXZh
c19PYmplY3QqIGV3a1ZpZXcpOwotdm9pZCBld2tfdmlld19mcmFtZV9tYWluX2ljb25fcmVjZWl2
ZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcpOwotdm9pZCBld2tfdmlld19sb2FkX2ZpbmlzaGVkKEV2
YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBFd2tfRnJhbWVfTG9hZF9FcnJvciogZXJyb3IpOwot
dm9pZCBld2tfdmlld19sb2FkX2Vycm9yKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBFd2tf
RnJhbWVfTG9hZF9FcnJvciogZXJyb3IpOwotdm9pZCBld2tfdmlld19sb2FkX3Byb2dyZXNzX2No
YW5nZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcpOwotdm9pZCBld2tfdmlld19sb2FkX3Nob3coRXZh
c19PYmplY3QqIGV3a1ZpZXcpOwotdm9pZCBld2tfdmlld19vbmxvYWRfZXZlbnQoRXZhc19PYmpl
Y3QqIGV3a1ZpZXcsIEV2YXNfT2JqZWN0KiBmcmFtZSk7Ci12b2lkIGV3a192aWV3X3Jlc3RvcmVf
c3RhdGUoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV2YXNfT2JqZWN0KiBmcmFtZSk7Ci1FdmFzX09i
amVjdCogZXdrX3ZpZXdfd2luZG93X2NyZWF0ZShFdmFzX09iamVjdCogZXdrVmlldywgYm9vbCBq
YXZhc2NyaXB0LCBjb25zdCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyogY29yZUZlYXR1cmVzKTsK
LXZvaWQgZXdrX3ZpZXdfd2luZG93X2Nsb3NlKEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKLQotdm9p
ZCBld2tfdmlld19tb3VzZV9saW5rX2hvdmVyX2luKEV2YXNfT2JqZWN0KiBld2tWaWV3LCB2b2lk
KiBkYXRhKTsKLXZvaWQgZXdrX3ZpZXdfbW91c2VfbGlua19ob3Zlcl9vdXQoRXZhc19PYmplY3Qq
IGV3a1ZpZXcpOwotCi12b2lkIGV3a192aWV3X3Rvb2xiYXJzX3Zpc2libGVfc2V0KEV2YXNfT2Jq
ZWN0KiBld2tWaWV3LCBib29sIHZpc2libGUpOwotdm9pZCBld2tfdmlld190b29sYmFyc192aXNp
YmxlX2dldChFdmFzX09iamVjdCogZXdrVmlldywgYm9vbCogdmlzaWJsZSk7Ci0KLXZvaWQgZXdr
X3ZpZXdfc3RhdHVzYmFyX3Zpc2libGVfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBib29sIHZp
c2libGUpOwotdm9pZCBld2tfdmlld19zdGF0dXNiYXJfdmlzaWJsZV9nZXQoRXZhc19PYmplY3Qq
IGV3a1ZpZXcsIGJvb2wqIHZpc2libGUpOwotdm9pZCBld2tfdmlld19zdGF0dXNiYXJfdGV4dF9z
ZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IGNoYXIqIHRleHQpOwotCi12b2lkIGV3a192
aWV3X3Njcm9sbGJhcnNfdmlzaWJsZV9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGJvb2wgdmlz
aWJsZSk7Ci12b2lkIGV3a192aWV3X3Njcm9sbGJhcnNfdmlzaWJsZV9nZXQoRXZhc19PYmplY3Qq
IGV3a1ZpZXcsIGJvb2wqIHZpc2libGUpOwotCi12b2lkIGV3a192aWV3X21lbnViYXJfdmlzaWJs
ZV9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGJvb2wgdmlzaWJsZSk7Ci12b2lkIGV3a192aWV3
X21lbnViYXJfdmlzaWJsZV9nZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGJvb2wqIHZpc2libGUp
OwotCi12b2lkIGV3a192aWV3X3Rvb2x0aXBfdGV4dF9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcs
IGNvbnN0IGNoYXIqIHRleHQpOwotCi12b2lkIGV3a192aWV3X2FkZF9jb25zb2xlX21lc3NhZ2Uo
RXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IGNoYXIqIG1lc3NhZ2UsIHVuc2lnbmVkIGludCBs
aW5lTnVtYmVyLCBjb25zdCBjaGFyKiBzb3VyY2VJRCk7Ci0KLXZvaWQgZXdrX3ZpZXdfcnVuX2ph
dmFzY3JpcHRfYWxlcnQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV2YXNfT2JqZWN0KiBmcmFtZSwg
Y29uc3QgY2hhciogbWVzc2FnZSk7Ci1ib29sIGV3a192aWV3X3J1bl9qYXZhc2NyaXB0X2NvbmZp
cm0oRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV2YXNfT2JqZWN0KiBmcmFtZSwgY29uc3QgY2hhciog
bWVzc2FnZSk7Ci1ib29sIGV3a192aWV3X3J1bl9iZWZvcmVfdW5sb2FkX2NvbmZpcm0oRXZhc19P
YmplY3QqIGV3a1ZpZXcsIEV2YXNfT2JqZWN0KiBmcmFtZSwgY29uc3QgY2hhciogbWVzc2FnZSk7
Ci1ib29sIGV3a192aWV3X3J1bl9qYXZhc2NyaXB0X3Byb21wdChFdmFzX09iamVjdCogZXdrVmll
dywgRXZhc19PYmplY3QqIGZyYW1lLCBjb25zdCBjaGFyKiBtZXNzYWdlLCBjb25zdCBjaGFyKiBk
ZWZhdWx0VmFsdWUsIGNvbnN0IGNoYXIqKiB2YWx1ZSk7Ci1ib29sIGV3a192aWV3X3Nob3VsZF9p
bnRlcnJ1cHRfamF2YXNjcmlwdChFdmFzX09iamVjdCogZXdrVmlldyk7Ci1pbnQ2NF90IGV3a192
aWV3X2V4Y2VlZGVkX2FwcGxpY2F0aW9uX2NhY2hlX3F1b3RhKEV2YXNfT2JqZWN0KiBld2tWaWV3
LCBFd2tfU2VjdXJpdHlfT3JpZ2luICpvcmlnaW4sIGludDY0X3QgZGVmYXVsdE9yaWdpblF1b3Rh
LCBpbnQ2NF90IHRvdGFsU3BhY2VOZWVkZWQpOwotdWludDY0X3QgZXdrX3ZpZXdfZXhjZWVkZWRf
ZGF0YWJhc2VfcXVvdGEoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV2YXNfT2JqZWN0KiBmcmFtZSwg
Y29uc3QgY2hhciogZGF0YWJhc2VOYW1lLCB1aW50NjRfdCBjdXJyZW50U2l6ZSwgdWludDY0X3Qg
ZXhwZWN0ZWRTaXplKTsKLQotYm9vbCBld2tfdmlld19ydW5fb3Blbl9wYW5lbChFdmFzX09iamVj
dCogZXdrVmlldywgRXZhc19PYmplY3QqIGZyYW1lLCBFd2tfRmlsZV9DaG9vc2VyKiBmaWxlQ2hv
b3NlciwgRWluYV9MaXN0Kiogc2VsZWN0ZWRGaWxlbmFtZXMpOwotCi1XZWJDb3JlOjpQYWdlKiBl
d2tfdmlld19jb3JlX3BhZ2VfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKLQotdm9p
ZCBld2tfdmlld19mcmFtZV9yZWN0X2NoYW5nZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcpOwotCi1X
VEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBld2tfdmlld19wbHVnaW5fY3JlYXRlKEV2
YXNfT2JqZWN0KiBld2tWaWV3LCBFdmFzX09iamVjdCogZnJhbWUsIGNvbnN0IFdlYkNvcmU6Oklu
dFNpemUmIHBsdWdpblNpemUsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50KiBlbGVtZW50LCBj
b25zdCBXZWJDb3JlOjpVUkwmIHVybCwgY29uc3QgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiBw
YXJhbU5hbWVzLCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mIHBhcmFtVmFsdWVzLCBj
b25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUsIGJvb2wgbG9hZE1hbnVhbGx5KTsKLQotI2lmIEVO
QUJMRShJTlBVVF9UWVBFX0NPTE9SKQotdm9pZCBld2tfdmlld19jb2xvcl9jaG9vc2VyX25ldyhF
dmFzX09iamVjdCogZXdrVmlldywgV2ViQ29yZTo6Q29sb3JDaG9vc2VyQ2xpZW50KiBjbGllbnQs
IGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBpbml0aWFsQ29sb3IpOwotdm9pZCBld2tfdmlld19jb2xv
cl9jaG9vc2VyX2NoYW5nZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IFdlYkNvcmU6OkNv
bG9yJiBuZXdDb2xvcik7Ci0jZW5kaWYKLQotdm9pZCBld2tfdmlld19wb3B1cF9uZXcoRXZhc19P
YmplY3QqIGV3a1ZpZXcsIFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCogY2xpZW50LCBpbnQgc2Vs
ZWN0ZWQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHJlY3QpOwotdm9pZCBld2tfdmlld192aWV3
cG9ydF9hdHRyaWJ1dGVzX3NldChFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgV2ViQ29yZTo6
Vmlld3BvcnRBcmd1bWVudHMmIGFyZ3VtZW50cyk7Ci0KLXZvaWQgZXdrX3ZpZXdfZG93bmxvYWRf
cmVxdWVzdChFdmFzX09iamVjdCogZXdrVmlldywgRXdrX0Rvd25sb2FkKiBkb3dubG9hZCk7Ci0K
LXZvaWQgZXdrX3ZpZXdfZWRpdG9yX2NsaWVudF9jb250ZW50c19jaGFuZ2VkKEV2YXNfT2JqZWN0
KiBld2tWaWV3KTsKLXZvaWQgZXdrX3ZpZXdfZWRpdG9yX2NsaWVudF9zZWxlY3Rpb25fY2hhbmdl
ZChFdmFzX09iamVjdCogZXdrVmlldyk7Ci0KLWJvb2wgZXdrX3ZpZXdfZm9jdXNfY2FuX2N5Y2xl
KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tfRm9jdXNfRGlyZWN0aW9uIGRpcmVjdGlvbik7Ci0K
LSNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKLXZvaWQgZXdrX3ZpZXdfanNfd2luZG93
X29iamVjdF9jbGVhcihFdmFzX09iamVjdCogZXdrVmlldywgRXZhc19PYmplY3QqIGZyYW1lKTsK
LSNlbmRpZgotCi0jaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLXZvaWQgZXdrX3ZpZXdfbmVlZF90
b3VjaF9ldmVudHNfc2V0KEV2YXNfT2JqZWN0KiwgYm9vbCBuZWVkZWQpOwotYm9vbCBld2tfdmll
d19uZWVkX3RvdWNoX2V2ZW50c19nZXQoY29uc3QgRXZhc19PYmplY3QqKTsKLSNlbmRpZgotCi12
b2lkIGV3a192aWV3X2xheW91dF9pZl9uZWVkZWRfcmVjdXJzaXZlKEV3a19WaWV3X1ByaXZhdGVf
RGF0YSogcHJpdik7Ci0KLWJvb2wgZXdrX3ZpZXdfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24o
RXZhc19PYmplY3QqIGV3a1ZpZXcsIEV3a19GcmFtZV9SZXNvdXJjZV9SZXF1ZXN0KiByZXF1ZXN0
LCBXZWJDb3JlOjpOYXZpZ2F0aW9uVHlwZSk7Ci0KLXZvaWQgZXdrX3ZpZXdfY29udGVudHNfc2l6
ZV9jaGFuZ2VkKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFdmFzX0Nvb3JkIHdpZHRoLCBFdmFzX0Nv
b3JkIGhlaWdodCk7Ci0KLVdlYkNvcmU6OkZsb2F0UmVjdCBld2tfdmlld19wYWdlX3JlY3RfZ2V0
KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKLQotdm9pZCBld2tfdmlld19taXhlZF9jb250
ZW50X2Rpc3BsYXllZF9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGJvb2wgaGFzRGlzcGxheWVk
KTsKLXZvaWQgZXdrX3ZpZXdfbWl4ZWRfY29udGVudF9ydW5fc2V0KEV2YXNfT2JqZWN0KiBld2tW
aWV3LCBib29sIGhhc1J1bik7Ci0KLXZvaWQgZXdrX3ZpZXdfcm9vdF9ncmFwaGljc19sYXllcl9z
ZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqIHJvb3RMYXll
cik7Ci12b2lkIGV3a192aWV3X21hcmtfZm9yX3N5bmMoRXZhc19PYmplY3QqIGV3a1ZpZXcpOwot
Ci12b2lkIGV3a192aWV3X2ZvcmNlX3BhaW50KEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKLQotI2lm
IEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKLXZvaWQgZXdrX3ZpZXdfZnVsbHNjcmVlbl9lbnRlcihj
b25zdCBFdmFzX09iamVjdCogZXdrVmlldyk7Ci12b2lkIGV3a192aWV3X2Z1bGxzY3JlZW5fZXhp
dChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldyk7Ci0jZW5kaWYKLQotbmFtZXNwYWNlIEVXS1By
aXZhdGUgewotV2ViQ29yZTo6UGFnZSAqY29yZVBhZ2UoY29uc3QgRXZhc19PYmplY3QgKmV3a1Zp
ZXcpOwotUGxhdGZvcm1QYWdlQ2xpZW50IGNvcmVQYWdlQ2xpZW50KEV2YXNfT2JqZWN0KiBld2tW
aWV3KTsKLVdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiogc3RvcmFnZVNlc3Npb24oY29u
c3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpOwotfSAvLyBuYW1lc3BhY2UgRVdLUHJpdmF0ZQotCi0j
ZW5kaWYgLy8gZXdrX3ZpZXdfcHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX3dlYl9kYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3dl
Yl9kYXRhYmFzZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcxYTgwYjcuLjAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a193ZWJfZGF0YWJhc2UuY3BwCisr
KyAvZGV2L251bGwKQEAgLTEsMTgyICswLDAgQEAKLS8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDEy
IEludGVsIENvcnBvcmF0aW9uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gICAgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCi0gICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICAgIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgotKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgImV3
a193ZWJfZGF0YWJhc2UuaCIKLQotI2luY2x1ZGUgIkRhdGFiYXNlTWFuYWdlci5oIgotI2luY2x1
ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCi0jaW5jbHVkZSAiZXdrX3NlY3VyaXR5X29yaWdpbi5oIgot
I2luY2x1ZGUgImV3a19zZWN1cml0eV9vcmlnaW5fcHJpdmF0ZS5oIgotI2luY2x1ZGUgImV3a193
ZWJfZGF0YWJhc2VfcHJpdmF0ZS5oIgotI2luY2x1ZGUgPEVpbmEuaD4KLSNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgotI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgotCi1zdHJ1Y3QgX0V3a19XZWJfRGF0YWJhc2UgewotICAgIFdURjo6
UmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbjsKLSAgICBXVEY6
OlN0cmluZyBjb3JlTmFtZTsKLSAgICBjb25zdCBjaGFyKiBkaXNwbGF5TmFtZTsKLSAgICBjb25z
dCBjaGFyKiBmaWxlbmFtZTsKLSAgICBjb25zdCBjaGFyKiBuYW1lOwotfTsKLQotY29uc3QgY2hh
ciogZXdrX3dlYl9kYXRhYmFzZV9kaXNwbGF5X25hbWVfZ2V0KEV3a19XZWJfRGF0YWJhc2UqIGRh
dGFiYXNlKQotewotI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0gICAgaWYgKGRhdGFiYXNlLT5k
aXNwbGF5TmFtZSkKLSAgICAgICAgcmV0dXJuIGRhdGFiYXNlLT5kaXNwbGF5TmFtZTsKLQotICAg
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiBvcmlnaW4gPSBkYXRhYmFzZS0+c2VjdXJpdHlPcmln
aW4uZ2V0KCk7Ci0gICAgV2ViQ29yZTo6RGF0YWJhc2VEZXRhaWxzIGRldGFpbHMgPSBXZWJDb3Jl
OjpEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5kZXRhaWxzRm9yTmFtZUFuZE9yaWdpbihkYXRh
YmFzZS0+bmFtZSwgb3JpZ2luKTsKLSAgICBkYXRhYmFzZS0+ZGlzcGxheU5hbWUgPSBlaW5hX3N0
cmluZ3NoYXJlX2FkZChkZXRhaWxzLmRpc3BsYXlOYW1lKCkudXRmOCgpLmRhdGEoKSk7Ci0KLSAg
ICByZXR1cm4gZGF0YWJhc2UtPmRpc3BsYXlOYW1lOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0o
ZGF0YWJhc2UpOwotICAgIHJldHVybiAwOwotI2VuZGlmCi19Ci0KLXVpbnQ2NF90IGV3a193ZWJf
ZGF0YWJhc2VfZXhwZWN0ZWRfc2l6ZV9nZXQoY29uc3QgRXdrX1dlYl9EYXRhYmFzZSogZGF0YWJh
c2UpCi17Ci0jaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAgICBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbiogb3JpZ2luID0gZGF0YWJhc2UtPnNlY3VyaXR5T3JpZ2luLmdldCgpOwotICAgIFdlYkNv
cmU6OkRhdGFiYXNlRGV0YWlscyBkZXRhaWxzID0gV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjpt
YW5hZ2VyKCkuZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4oZGF0YWJhc2UtPm5hbWUsIG9yaWdpbik7
Ci0gICAgcmV0dXJuIGRldGFpbHMuZXhwZWN0ZWRVc2FnZSgpOwotI2Vsc2UKLSAgICBVTlVTRURf
UEFSQU0oZGF0YWJhc2UpOwotICAgIHJldHVybiAwOwotI2VuZGlmCi19Ci0KLWNvbnN0IGNoYXIq
IGV3a193ZWJfZGF0YWJhc2VfZmlsZW5hbWVfZ2V0KEV3a19XZWJfRGF0YWJhc2UqIGRhdGFiYXNl
KQotewotI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0gICAgaWYgKGRhdGFiYXNlLT5maWxlbmFt
ZSkKLSAgICAgICAgcmV0dXJuIGRhdGFiYXNlLT5maWxlbmFtZTsKLQotICAgIFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luKiBvcmlnaW4gPSBkYXRhYmFzZS0+c2VjdXJpdHlPcmlnaW4uZ2V0KCk7Ci0g
ICAgV1RGOjpTdHJpbmcgcGF0aCA9IFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigp
LmZ1bGxQYXRoRm9yRGF0YWJhc2Uob3JpZ2luLCBkYXRhYmFzZS0+Y29yZU5hbWUpOwotICAgIGRh
dGFiYXNlLT5maWxlbmFtZSA9IGVpbmFfc3RyaW5nc2hhcmVfYWRkKHBhdGgudXRmOCgpLmRhdGEo
KSk7Ci0KLSAgICByZXR1cm4gZGF0YWJhc2UtPmZpbGVuYW1lOwotI2Vsc2UKLSAgICBVTlVTRURf
UEFSQU0oZGF0YWJhc2UpOwotICAgIHJldHVybiAwOwotI2VuZGlmCi19Ci0KLWNvbnN0IGNoYXIq
IGV3a193ZWJfZGF0YWJhc2VfbmFtZV9nZXQoRXdrX1dlYl9EYXRhYmFzZSogZGF0YWJhc2UpCi17
Ci0jaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAgICBpZiAoZGF0YWJhc2UtPm5hbWUpCi0gICAg
ICAgIHJldHVybiBkYXRhYmFzZS0+bmFtZTsKLQotICAgIGRhdGFiYXNlLT5uYW1lID0gZWluYV9z
dHJpbmdzaGFyZV9hZGQoZGF0YWJhc2UtPmNvcmVOYW1lLnV0ZjgoKS5kYXRhKCkpOwotCi0gICAg
cmV0dXJuIGRhdGFiYXNlLT5uYW1lOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oZGF0YWJhc2Up
OwotICAgIHJldHVybiAwOwotI2VuZGlmCi19Ci0KLUV3a19TZWN1cml0eV9PcmlnaW4qIGV3a193
ZWJfZGF0YWJhc2Vfc2VjdXJpdHlfb3JpZ2luX2dldChjb25zdCBFd2tfV2ViX0RhdGFiYXNlKiBk
YXRhYmFzZSkKLXsKLSAgICByZXR1cm4gZXdrX3NlY3VyaXR5X29yaWdpbl9uZXcoZGF0YWJhc2Ut
PnNlY3VyaXR5T3JpZ2luLmdldCgpKTsKLX0KLQotdWludDY0X3QgZXdrX3dlYl9kYXRhYmFzZV9z
aXplX2dldChjb25zdCBFd2tfV2ViX0RhdGFiYXNlKiBkYXRhYmFzZSkKLXsKLSNpZiBFTkFCTEUo
U1FMX0RBVEFCQVNFKQotICAgIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiBvcmlnaW4gPSBkYXRh
YmFzZS0+c2VjdXJpdHlPcmlnaW4uZ2V0KCk7Ci0gICAgV2ViQ29yZTo6RGF0YWJhc2VEZXRhaWxz
IGRldGFpbHMgPSBXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5kZXRhaWxzRm9y
TmFtZUFuZE9yaWdpbihkYXRhYmFzZS0+bmFtZSwgb3JpZ2luKTsKLSAgICByZXR1cm4gZGV0YWls
cy5jdXJyZW50VXNhZ2UoKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGRhdGFiYXNlKTsKLSAg
ICByZXR1cm4gMDsKLSNlbmRpZgotfQotCi12b2lkIGV3a193ZWJfZGF0YWJhc2VfcmVtb3ZlKEV3
a19XZWJfRGF0YWJhc2UqIGRhdGFiYXNlKQotewotI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0g
ICAgV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuZGVsZXRlRGF0YWJhc2UoZGF0
YWJhc2UtPnNlY3VyaXR5T3JpZ2luLmdldCgpLCBkYXRhYmFzZS0+Y29yZU5hbWUpOwotI2Vsc2UK
LSAgICBVTlVTRURfUEFSQU0oZGF0YWJhc2UpOwotI2VuZGlmCi19Ci0KLXZvaWQgZXdrX3dlYl9k
YXRhYmFzZV9yZW1vdmVfYWxsKHZvaWQpCi17Ci0jaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAg
ICBXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5kZWxldGVBbGxEYXRhYmFzZXMo
KTsKLSNlbmRpZgotfQotCi12b2lkIGV3a193ZWJfZGF0YWJhc2VfZnJlZShFd2tfV2ViX0RhdGFi
YXNlKiBkYXRhYmFzZSkKLXsKLSNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAgIGVpbmFfc3Ry
aW5nc2hhcmVfZGVsKGRhdGFiYXNlLT5kaXNwbGF5TmFtZSk7Ci0gICAgZWluYV9zdHJpbmdzaGFy
ZV9kZWwoZGF0YWJhc2UtPmZpbGVuYW1lKTsKLSAgICBlaW5hX3N0cmluZ3NoYXJlX2RlbChkYXRh
YmFzZS0+bmFtZSk7Ci0KLSAgICBkZWxldGUgZGF0YWJhc2U7Ci0jZWxzZQotICAgIFVOVVNFRF9Q
QVJBTShkYXRhYmFzZSk7Ci0jZW5kaWYKLX0KLQotdm9pZCBld2tfd2ViX2RhdGFiYXNlX2xpc3Rf
ZnJlZShFaW5hX0xpc3QqIGRhdGFiYXNlTGlzdCkKLXsKLSAgICB2b2lkKiBkYXRhYmFzZTsKLSAg
ICBFSU5BX0xJU1RfRlJFRShkYXRhYmFzZUxpc3QsIGRhdGFiYXNlKQotICAgICAgICBld2tfd2Vi
X2RhdGFiYXNlX2ZyZWUoc3RhdGljX2Nhc3Q8RXdrX1dlYl9EYXRhYmFzZSo+KGRhdGFiYXNlKSk7
Ci19Ci0KLS8qKgotICogQGludGVybmFsCi0gKiBDcmVhdGVzIGEgd3JhcHBlciByZXByZXNlbnRp
bmcgYSBXZWIgRGF0YWJhc2UuCi0gKgotICogQHBhcmFtIGNvcmVPcmlnaW4gV2ViQ29yZSBTZWN1
cml0eSBPcmlnaW4gb2JqZWN0Ci0gKiBAcGFyYW0gY29yZU5hbWUgV2ViIERhdGFiYXNlIG5hbWUK
LSAqCi0gKiBAcmV0dXJuIGEgd3JhcHBlciBmb3IgbWFuaXB1bGF0aW5nIGEgV2ViIERhdGFiYXNl
LiBJdCBzaG91bGQgYmUgZnJlZWQKLSAqIGJ5IGV3a193ZWJfZGF0YWJhc2VfZnJlZSgpLgotICov
Ci1Fd2tfV2ViX0RhdGFiYXNlKiBld2tfd2ViX2RhdGFiYXNlX25ldyhXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbiogY29yZU9yaWdpbiwgY29uc3QgV1RGOjpTdHJpbmcmIGNvcmVOYW1lKQotewotI2lm
IEVOQUJMRShTUUxfREFUQUJBU0UpCi0gICAgRXdrX1dlYl9EYXRhYmFzZSogZGF0YWJhc2UgPSBu
ZXcgRXdrX1dlYl9EYXRhYmFzZTsKLQotICAgIGRhdGFiYXNlLT5zZWN1cml0eU9yaWdpbiA9IGNv
cmVPcmlnaW47Ci0gICAgZGF0YWJhc2UtPmNvcmVOYW1lID0gY29yZU5hbWU7Ci0gICAgZGF0YWJh
c2UtPmRpc3BsYXlOYW1lID0gMDsKLSAgICBkYXRhYmFzZS0+ZmlsZW5hbWUgPSAwOwotICAgIGRh
dGFiYXNlLT5uYW1lID0gMDsKLQotICAgIHJldHVybiBkYXRhYmFzZTsKLSNlbHNlCi0gICAgVU5V
U0VEX1BBUkFNKGNvcmVPcmlnaW4pOwotICAgIFVOVVNFRF9QQVJBTShjb3JlTmFtZSk7Ci0gICAg
cmV0dXJuIDA7Ci0jZW5kaWYKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9l
d2tfd2ViX2RhdGFiYXNlLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3dlYl9kYXRhYmFz
ZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YmFhNTRmLi4wMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfd2ViX2RhdGFiYXNlLmgKKysrIC9kZXYvbnVsbApA
QCAtMSwxMzYgKzAsMCBAQAotLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9y
YXRpb24KLQotICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKLSAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICAgIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLQotICAgIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCi0gICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLQotICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAgICBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bwotICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBV
U0EuCi0qLwotCi0vKioKLSAqIEBmaWxlICAgIGV3a193ZWJfZGF0YWJhc2UuaAotICogQGJyaWVm
ICAgV2ViIERhdGFiYXNlIEFQSS4KLSAqCi0gKiBUaGlzIEFQSSBwcm92aWRlcyBmdW5jdGlvbnMg
Zm9yIG1hbmFnaW5nIFdlYiBEYXRhYmFzZSBjcmVhdGVkIGZvciBhIHNlY3VyaXR5Ci0gKiBvcmln
aW4uIFdlYktpdCBuZWVkcyB0byBiZSBjb21waWxlZCB3aXRoIFdlYiBEYXRhYmFzZSBzdXBwb3J0
IGluIG9yZGVyIHRvIHVzZQotICogdGhpcyBBUEkuCi0gKi8KLQotI2lmbmRlZiBld2tfd2ViX2Rh
dGFiYXNlX2gKLSNkZWZpbmUgZXdrX3dlYl9kYXRhYmFzZV9oCi0KLSNpbmNsdWRlICJld2tfc2Vj
dXJpdHlfb3JpZ2luLmgiCi0KLSNpbmNsdWRlIDxFdmFzLmg+Ci0KLSNpZmRlZiBfX2NwbHVzcGx1
cwotZXh0ZXJuICJDIiB7Ci0jZW5kaWYKLQotdHlwZWRlZiBzdHJ1Y3QgX0V3a19XZWJfRGF0YWJh
c2UgRXdrX1dlYl9EYXRhYmFzZTsKLQotLyoqCi0gKiBSZXR1cm5zIHRoZSB1c2VyIGZyaWVuZGx5
IG5hbWUgb2YgdGhlIGRhdGFiYXNlLgotICoKLSAqIEl0IHJldHVybnMgYSBpbnRlcm5hbCBzdHJp
bmcgd2hpY2ggc2hvdWxkIG5vdAotICogYmUgbW9kaWZpZWQuIFRoZSBzdHJpbmcgaXMgZ3VhcmFu
dGVlZCB0byBiZSBzdHJpbmdzaGFyZWQuCi0gKgotICogQHBhcmFtIG8gd2ViIGRhdGFiYXNlIG9i
amVjdAotICoKLSAqIEByZXR1cm4gdGhlIGRhdGFiYXNlIG5hbWUKLSAqLwotRUFQSSBjb25zdCBj
aGFyICAqZXdrX3dlYl9kYXRhYmFzZV9kaXNwbGF5X25hbWVfZ2V0KEV3a19XZWJfRGF0YWJhc2Ug
Km8pOwotCi0vKioKLSAqIFJldHVybnMgdGhlIHNpemUgb2YgdGhlIGRhdGFiYXNlIGV4cGVjdGVk
IGJ5IHRoZSB3ZWIgYXV0aG9yLgotICoKLSAqIEBwYXJhbSBvIHdlYiBkYXRhYmFzZSBvYmplY3QK
LSAqCi0gKiBAcmV0dXJuIGV4cGVjdGVkIHNpemUKLSAqLwotRUFQSSB1aW50NjRfdCAgICAgZXdr
X3dlYl9kYXRhYmFzZV9leHBlY3RlZF9zaXplX2dldChjb25zdCBFd2tfV2ViX0RhdGFiYXNlICpv
KTsKLQotLyoqCi0gKiBSZXR1cm5zIHRoZSBhYnNvbHV0ZSBwYXRoIHRvIHRoZSBkYXRhYmFzZSBm
aWxlLgotICoKLSAqIEl0IHJldHVybnMgYSBpbnRlcm5hbCBzdHJpbmcgd2hpY2ggc2hvdWxkIG5v
dAotICogYmUgbW9kaWZpZWQuIFRoZSBzdHJpbmcgaXMgZ3VhcmFudGVlZCB0byBiZSBzdHJpbmdz
aGFyZWQuCi0gKgotICogQHBhcmFtIG8gd2ViIGRhdGFiYXNlIG9iamVjdAotICoKLSAqIEByZXR1
cm4gdGhlIGRhdGFiYXNlIHBhdGgKLSAqLwotRUFQSSBjb25zdCBjaGFyICAqZXdrX3dlYl9kYXRh
YmFzZV9maWxlbmFtZV9nZXQoRXdrX1dlYl9EYXRhYmFzZSAqbyk7Ci0KLS8qKgotICogUmV0dXJu
cyB0aGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UuCi0gKgotICogSXQgcmV0dXJucyBhIGludGVybmFs
IHN0cmluZyB3aGljaCBzaG91bGQgbm90Ci0gKiBiZSBtb2RpZmllZC4gVGhlIHN0cmluZyBpcyBn
dWFyYW50ZWVkIHRvIGJlIHN0cmluZ3NoYXJlZC4KLSAqCi0gKiBAcGFyYW0gbyB3ZWIgZGF0YWJh
c2Ugb2JqZWN0Ci0gKgotICogQHJldHVybiB0aGUgZGF0YWJhc2UgbmFtZQotICovCi1FQVBJIGNv
bnN0IGNoYXIgICpld2tfd2ViX2RhdGFiYXNlX25hbWVfZ2V0KEV3a19XZWJfRGF0YWJhc2UgKm8p
OwotCi0vKioKLSAqIFJldHJpZXZlcyB0aGUgc2VjdXJpdHkgb3JpZ2luIG9mIHRoZSBkYXRhYmFz
ZS4KLSAqCi0gKiBUaGUgcmV0dXJuZWQgdmFsdWUgc2hvdWxkIGJlIGZyZWVkIGJ5IGV3a19zZWN1
cml0eV9vcmlnaW5fZnJlZSgpLgotICoKLSAqIEBwYXJhbSBvIHdlYiBkYXRhYmFzZSBvYmplY3QK
LSAqCi0gKiBAcmV0dXJuIHRoZSBzZWN1cml0eSBvcmlnaW4KLSAqLwotRUFQSSBFd2tfU2VjdXJp
dHlfT3JpZ2luICpld2tfd2ViX2RhdGFiYXNlX3NlY3VyaXR5X29yaWdpbl9nZXQoY29uc3QgRXdr
X1dlYl9EYXRhYmFzZSAqbyk7Ci0KLS8qKgotICogUmV0dXJucyB0aGUgc2l6ZSBvZiB0aGUgZGF0
YWJhc2UuCi0gKgotICogQHBhcmFtIG8gd2ViIGRhdGFiYXNlIG9iamVjdAotICoKLSAqIEByZXR1
cm4gdGhlIGN1cnJlbnQgc2l6ZSBvZiB0aGUgZGF0YWJhc2UKLSAqLwotRUFQSSB1aW50NjRfdCAg
ICAgZXdrX3dlYl9kYXRhYmFzZV9zaXplX2dldChjb25zdCBFd2tfV2ViX0RhdGFiYXNlICpvKTsK
LQotLyoqCi0gKiBSZW1vdmUgdGhlIGRhdGFiYXNlIGZyb20gdGhlIHNlY3VyaXR5IG9yaWdpbiBh
bmQgZGVzdHJveSBhbGwgZGF0YS4KLSAqCi0gKiBAcGFyYW0gbyB3ZWIgZGF0YWJhc2Ugb2JqZWN0
Ci0gKi8KLUVBUEkgdm9pZCAgICAgICAgIGV3a193ZWJfZGF0YWJhc2VfcmVtb3ZlKEV3a19XZWJf
RGF0YWJhc2UgKm8pOwotCi0vKioKLSAqIFJlbW92ZSBhbGwgdGhlIGRhdGFiYXNlcyBpbiB0aGUg
Y3VycmVudCBkZWZhdWx0IHBhdGguCi0gKi8KLUVBUEkgdm9pZCAgICAgICAgIGV3a193ZWJfZGF0
YWJhc2VfcmVtb3ZlX2FsbCh2b2lkKTsKLQotLyoqCi0gKiBSZWxlYXNlIGFsbCByZXNvdXJjZXMg
YWxsb2NhdGVkIGJ5IGEgd2ViIGRhdGFiYXNlIG9iamVjdC4KLSAqCi0gKiBAcGFyYW0gbyB3ZWIg
ZGF0YWJhc2Ugb2JqZWN0Ci0gKi8KLUVBUEkgdm9pZCAgICAgICAgIGV3a193ZWJfZGF0YWJhc2Vf
ZnJlZShFd2tfV2ViX0RhdGFiYXNlICpvKTsKLQotLyoqCi0gKiBDb252ZW5pZW5jZSBmdW5jdGlv
biBmb3IgcmVsZWFzaW5nIGFsbCB3ZWIgZGF0YWJhc2Ugb2JqZWN0cyBmcm9tIGEgbGlzdC4KLSAq
Ci0gKiBAcGFyYW0gZGF0YWJhc2VfbGlzdCBsaXN0IG9mIHdlYiBkYXRhYmFzZSBvYmplY3RzIHRv
IGJlIGZyZWVkCi0gKi8KLUVBUEkgdm9pZCAgICAgICAgIGV3a193ZWJfZGF0YWJhc2VfbGlzdF9m
cmVlKEVpbmFfTGlzdCAqZGF0YWJhc2VfbGlzdCk7Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotfQot
I2VuZGlmCi0jZW5kaWYgLy8gZXdrX3dlYl9kYXRhYmFzZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9ld2svZXdrX3dlYl9kYXRhYmFzZV9wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0
L2VmbC9ld2svZXdrX3dlYl9kYXRhYmFzZV9wcml2YXRlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDcyNDA1ZmUuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3
a193ZWJfZGF0YWJhc2VfcHJpdmF0ZS5oCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAot
LyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24KLQotICAgIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
LSAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYwotICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgotICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLQotICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0g
ICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKLSAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KLQotICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAgICBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICAgIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCi0gICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0qLwotCi0jaWZuZGVm
IGV3a193ZWJfZGF0YWJhc2VfcHJpdmF0ZV9oCi0jZGVmaW5lIGV3a193ZWJfZGF0YWJhc2VfcHJp
dmF0ZV9oCi0KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci19Ci0KLUV3a19XZWJfRGF0YWJhc2UqIGV3
a193ZWJfZGF0YWJhc2VfbmV3KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiBjb3JlT3JpZ2luLCBj
b25zdCBXVEY6OlN0cmluZyYgY29yZU5hbWUpOwotCi0jZW5kaWYgLy8gZXdrX3dlYl9kYXRhYmFz
ZV9wcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfd2luZG93
X2ZlYXR1cmVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfd2luZG93X2ZlYXR1cmVz
LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzAwMDI4Yi4uMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3dpbmRvd19mZWF0dXJlcy5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSwxMjEgKzAsMCBAQAotLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMTAgUHJvRlVT
SU9OIGVtYmVkZGVkIHN5c3RlbXMKLSAgICBDb3B5cmlnaHQgKEMpIDIwMTAgU2Ftc3VuZyBFbGVj
dHJvbmljcwotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgotICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gICAgdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi0gICAg
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKLSAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICAgIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0gICAgWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAg
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBu
b3QsIHdyaXRlIHRvCi0gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4KLSovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJld2tfd2luZG93X2Zl
YXR1cmVzLmgiCi0KLSNpbmNsdWRlICJXaW5kb3dGZWF0dXJlcy5oIgotI2luY2x1ZGUgImV3a19w
cml2YXRlLmgiCi0jaW5jbHVkZSA8RWluYS5oPgotCi0vKioKLSAqIFxzdHJ1Y3QgIF9Fd2tfV2lu
ZG93X0ZlYXR1cmVzCi0gKiBAYnJpZWYgICBDb250YWlucyB0aGUgd2luZG93IGZlYXR1cmVzIGRh
dGEuCi0gKi8KLXN0cnVjdCBfRXdrX1dpbmRvd19GZWF0dXJlcyB7Ci0gICAgdW5zaWduZWQgaW50
IF9fcmVmOwotICAgIFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzKiBjb3JlOwotfTsKLQotdm9pZCBl
d2tfd2luZG93X2ZlYXR1cmVzX3VucmVmKEV3a19XaW5kb3dfRmVhdHVyZXMqIHdpbmRvd0ZlYXR1
cmVzKQotewotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHdpbmRvd0ZlYXR1cmVzKTsK
LSAgICBFSU5BX1NBRkVUWV9PTl9GQUxTRV9SRVRVUk4od2luZG93RmVhdHVyZXMtPl9fcmVmID4g
MCk7Ci0KLSAgICBpZiAoLS13aW5kb3dGZWF0dXJlcy0+X19yZWYpCi0gICAgICAgIHJldHVybjsK
LQotICAgIGRlbGV0ZSB3aW5kb3dGZWF0dXJlcy0+Y29yZTsKLSAgICB3aW5kb3dGZWF0dXJlcy0+
Y29yZSA9IDA7Ci0gICAgZGVsZXRlIHdpbmRvd0ZlYXR1cmVzOwotfQotCi12b2lkIGV3a193aW5k
b3dfZmVhdHVyZXNfcmVmKEV3a19XaW5kb3dfRmVhdHVyZXMqIHdpbmRvd0ZlYXR1cmVzKQotewot
ICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHdpbmRvd0ZlYXR1cmVzKTsKLSAgICB3aW5k
b3dGZWF0dXJlcy0+X19yZWYrKzsKLX0KLQotdm9pZCBld2tfd2luZG93X2ZlYXR1cmVzX2Jvb2xf
cHJvcGVydHlfZ2V0KGNvbnN0IEV3a19XaW5kb3dfRmVhdHVyZXMqIHdpbmRvd0ZlYXR1cmVzLCBF
aW5hX0Jvb2wqIHRvb2xiYXJWaXNpYmxlLCBFaW5hX0Jvb2wqIHN0YXR1c2JhclZpc2libGUsIEVp
bmFfQm9vbCogc2Nyb2xsYmFyc1Zpc2libGUsIEVpbmFfQm9vbCogbWVudWJhclZpc2libGUsIEVp
bmFfQm9vbCogbG9jYXRpb25iYXJWaXNpYmxlLCBFaW5hX0Jvb2wqIGZ1bGxTY3JlZW4pCi17Ci0g
ICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4od2luZG93RmVhdHVyZXMpOwotICAgIEVJTkFf
U0FGRVRZX09OX05VTExfUkVUVVJOKHdpbmRvd0ZlYXR1cmVzLT5jb3JlKTsKLQotICAgIGlmICh0
b29sYmFyVmlzaWJsZSkKLSAgICAgICAgKnRvb2xiYXJWaXNpYmxlID0gd2luZG93RmVhdHVyZXMt
PmNvcmUtPnRvb2xCYXJWaXNpYmxlOwotCi0gICAgaWYgKHN0YXR1c2JhclZpc2libGUpCi0gICAg
ICAgICpzdGF0dXNiYXJWaXNpYmxlID0gd2luZG93RmVhdHVyZXMtPmNvcmUtPnN0YXR1c0JhclZp
c2libGU7Ci0KLSAgICBpZiAoc2Nyb2xsYmFyc1Zpc2libGUpCi0gICAgICAgICpzY3JvbGxiYXJz
VmlzaWJsZSA9IHdpbmRvd0ZlYXR1cmVzLT5jb3JlLT5zY3JvbGxiYXJzVmlzaWJsZTsKLQotICAg
IGlmIChtZW51YmFyVmlzaWJsZSkKLSAgICAgICAgKm1lbnViYXJWaXNpYmxlID0gd2luZG93RmVh
dHVyZXMtPmNvcmUtPm1lbnVCYXJWaXNpYmxlOwotCi0gICAgaWYgKGxvY2F0aW9uYmFyVmlzaWJs
ZSkKLSAgICAgICAgKmxvY2F0aW9uYmFyVmlzaWJsZSA9IHdpbmRvd0ZlYXR1cmVzLT5jb3JlLT5s
b2NhdGlvbkJhclZpc2libGU7Ci0KLSAgICBpZiAoZnVsbFNjcmVlbikKLSAgICAgICAgKmZ1bGxT
Y3JlZW4gPSB3aW5kb3dGZWF0dXJlcy0+Y29yZS0+ZnVsbHNjcmVlbjsKLX0KLQotdm9pZCBld2tf
d2luZG93X2ZlYXR1cmVzX2ludF9wcm9wZXJ0eV9nZXQoY29uc3QgRXdrX1dpbmRvd19GZWF0dXJl
cyogd2luZG93RmVhdHVyZXMsIGludCogeCwgaW50KiB5LCBpbnQqIHdpZHRoLCBpbnQqIGhlaWdo
dCkKLXsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTih3aW5kb3dGZWF0dXJlcyk7Ci0g
ICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4od2luZG93RmVhdHVyZXMtPmNvcmUpOwotCi0g
ICAgaWYgKHgpCi0gICAgICAgICp4ID0gd2luZG93RmVhdHVyZXMtPmNvcmUtPnhTZXQgPyBzdGF0
aWNfY2FzdDxpbnQ+KHdpbmRvd0ZlYXR1cmVzLT5jb3JlLT54KSA6IC0xOwotCi0gICAgaWYgKHkp
Ci0gICAgICAgICp5ID0gd2luZG93RmVhdHVyZXMtPmNvcmUtPnlTZXQgPyBzdGF0aWNfY2FzdDxp
bnQ+KHdpbmRvd0ZlYXR1cmVzLT5jb3JlLT55KSA6IC0xOwotCi0gICAgaWYgKHdpZHRoKQotICAg
ICAgICAqd2lkdGggPSB3aW5kb3dGZWF0dXJlcy0+Y29yZS0+d2lkdGhTZXQgPyBzdGF0aWNfY2Fz
dDxpbnQ+KHdpbmRvd0ZlYXR1cmVzLT5jb3JlLT53aWR0aCkgOiAtMTsKLQotICAgIGlmIChoZWln
aHQpCi0gICAgICAgICpoZWlnaHQgPSB3aW5kb3dGZWF0dXJlcy0+Y29yZS0+aGVpZ2h0U2V0ID8g
c3RhdGljX2Nhc3Q8aW50Pih3aW5kb3dGZWF0dXJlcy0+Y29yZS0+aGVpZ2h0KSA6IC0xOwotfQot
Ci0vKiBpbnRlcm5hbCBtZXRob2RzICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKiovCi0KLS8qKgotICogQGludGVybmFsCi0gKgotICogQ3JlYXRlcyBh
IG5ldyBFd2tfV2luZG93X0ZlYXR1cmVzIG9iamVjdC4KLSAqCi0gKiBAcGFyYW0gY29yZSBpZiBu
b3QgQGMgMCBhIG5ldyBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyBpcyBhbGxvY2F0ZWQgY29weWlu
ZyBjb3JlIGZlYXR1cmVzIGFuZAotICogaXQgaXMgZW1iZWRkZWQgaW5zaWRlIHRoZSBFd2tfV2lu
ZG93X0ZlYXR1cmVzIHdob3NlIHJlZiBjb3VudCBpcyBpbml0aWFsaXplZCwgaWYgY29yZSBpcyBA
YyAwIGEgbmV3IG9uZSBpcyBjcmVhdGVkIHdpdGggdGhlIGRlZmF1bHQgZmVhdHVyZXMuCi0gKiBA
cmV0dXJuIGEgbmV3IGFsbG9jYXRlZCB0aGUgRXdrX1dpbmRvd19GZWF0dXJlcyBvYmplY3Qgb24g
c3VjZXNzIG9yIEBjIDAgb24gZmFpbHVyZQotICovCi1Fd2tfV2luZG93X0ZlYXR1cmVzKiBld2tf
d2luZG93X2ZlYXR1cmVzX25ld19mcm9tX2NvcmUoY29uc3QgV2ViQ29yZTo6V2luZG93RmVhdHVy
ZXMqIGNvcmUpCi17Ci0gICAgRXdrX1dpbmRvd19GZWF0dXJlcyogd2luZG93X2ZlYXR1cmVzID0g
bmV3IEV3a19XaW5kb3dfRmVhdHVyZXM7Ci0KLSAgICBpZiAoY29yZSkKLSAgICAgICAgd2luZG93
X2ZlYXR1cmVzLT5jb3JlID0gbmV3IFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzKCpjb3JlKTsKLSAg
ICBlbHNlCi0gICAgICAgIHdpbmRvd19mZWF0dXJlcy0+Y29yZSA9IG5ldyBXZWJDb3JlOjpXaW5k
b3dGZWF0dXJlcygpOwotCi0gICAgd2luZG93X2ZlYXR1cmVzLT5fX3JlZiA9IDE7Ci0KLSAgICBy
ZXR1cm4gd2luZG93X2ZlYXR1cmVzOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwv
ZXdrL2V3a193aW5kb3dfZmVhdHVyZXMuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfd2lu
ZG93X2ZlYXR1cmVzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ2N2E0NWUuLjAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a193aW5kb3dfZmVhdHVyZXMuaAor
KysgL2Rldi9udWxsCkBAIC0xLDk0ICswLDAgQEAKLS8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDEw
IFByb0ZVU0lPTiBlbWJlZGRlZCBzeXN0ZW1zCi0gICAgQ29weXJpZ2h0IChDKSAyMDEwIFNhbXN1
bmcgRWxlY3Ryb25pY3MKLQotICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICAgIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICAgIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
LQotICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAgICBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLQotICAgIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UKLSAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bwotICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gICAgQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCi0qLwotCi0vKioKLSAqIEBmaWxlICAgIGV3a193aW5kb3dfZmVhdHVyZXMu
aAotICogQGJyaWVmICAgQWNjZXNzIHRvIHRoZSBmZWF0dXJlcyBvZiB3aW5kb3cuCi0gKi8KLQot
I2lmbmRlZiBld2tfd2luZG93X2ZlYXR1cmVzX2gKLSNkZWZpbmUgZXdrX3dpbmRvd19mZWF0dXJl
c19oCi0KLSNpbmNsdWRlIDxFaW5hLmg+Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJD
IiB7Ci0jZW5kaWYKLQotLyoqIENyZWF0ZXMgYSB0eXBlIG5hbWUgZm9yIF9Fd2tfV2luZG93X0Zl
YXR1cmVzLiAqLwotdHlwZWRlZiBzdHJ1Y3QgX0V3a19XaW5kb3dfRmVhdHVyZXMgRXdrX1dpbmRv
d19GZWF0dXJlczsKLQotLyoqCi0gKiBEZWNyZWFzZXMgdGhlIHJlZmVyZWNlIGNvdW50IG9mIGFu
IEV3a19XaW5kb3dfRmVhdHVyZXMsIHBvc3NpYmx5IGZyZWVpbmcgaXQuCi0gKgotICogV2hlbiB0
aGUgcmVmZXJlbmNlIGNvdW50IG9mIHRoZSBvYmplY3QgcmVhY2hlcyAwLCBpdCBpcyBmcmVlZC4K
LSAqCi0gKiBAcGFyYW0gd2luZG93X2ZlYXR1cmVzIHRoZSBvYmplY3QgdG8gZGVjcmVhc2UgcmVm
ZXJlbmNlIGNvdW50Ci0gKi8KLUVBUEkgdm9pZCAgICAgICAgIGV3a193aW5kb3dfZmVhdHVyZXNf
dW5yZWYoRXdrX1dpbmRvd19GZWF0dXJlcyAqd2luZG93X2ZlYXR1cmVzKTsKLQotLyoqCi0gKiBJ
bmNyZWFzZXMgdGhlIHJlZmVyZW5jZSBjb3VudCBvZiBhbiBFd2tfV2luZG93X0ZlYXR1cmVzLgot
ICoKLSAqIEBwYXJhbSB3aW5kb3dfZmVhdHVyZXMgdGhlIG9iamVjdCB0byBpbmNyZWFzZSByZWZl
cmVuY2UgY291bnQKLSAqLwotRUFQSSB2b2lkICAgICAgICAgZXdrX3dpbmRvd19mZWF0dXJlc19y
ZWYoRXdrX1dpbmRvd19GZWF0dXJlcyAqd2luZG93X2ZlYXR1cmVzKTsKLQotLyoqCi0gKiBHZXRz
IGJvb2xlYW4gcHJvcGVydGllcyBvZiBhbiBFd2tfV2luZG93X0ZlYXR1cmVzLgotICoKLSAqIFBy
b3BlcnRpZXMgYXJlIHJldHVybmVkIGluIHRoZSByZXNwZWN0aXZlIHBvaW50ZXJzLiBQYXNzaW5n
IEBjIE5VTEwgdG8gYW55IG9mCi0gKiB0aGVzZSBwb2ludGVycyB3aWxsIGNhdXNlIHRoYXQgcHJv
cGVydHkgdG8gbm90IGJlIHJldHVybmVkLgotICoKLSAqIEBwYXJhbSB3aW5kb3dfZmVhdHVyZXMg
dGhlIG9iamVjdCB0byBnZXQgYm9vbGVhbiBwcm9wZXJ0aWVzCi0gKiBAcGFyYW0gdG9vbGJhcl92
aXNpYmxlIHRoZSBwb2ludGVyIHRvIHN0b3JlIGlmIHRvb2xiYXIgaXMgdmlzaWJsZQotICogQHBh
cmFtIHN0YXR1c2Jhcl92aXNpYmxlIHRoZSBwb2ludGVyIHRvIHN0b3JlIGlmIHN0YXR1c2JhciBp
cyB2aXNpYmxlCi0gKiBAcGFyYW0gc2Nyb2xsYmFyc192aXNpYmxlIHRoZSBwb2ludGVyIHRvIHN0
b3JlIGlmIHNjcm9sbGJhcnMgaXMgdmlzaWJsZQotICogQHBhcmFtIG1lbnViYXJfdmlzaWJsZSB0
aGUgcG9pbnRlciB0byBzdG9yZSBpZiBtZW51YmFyIGlzIHZpc2libGUKLSAqIEBwYXJhbSBsb2Nh
dGlvbmJhcl92aXNpYmxlIHRoZSBwb2ludGVyIHRvIHN0b3JlIGlmIGxvY2F0aW9uYmFyIGlzIHZp
c2libGUKLSAqIEBwYXJhbSBmdWxsc2NyZWVuIHRoZSBwb2ludGVyIHRvIHN0b3JlIGlmIGZ1bGxz
Y3JlZW4gaXMgZW5hYmxlZAotICoKLSAqIEBzZWUgZXdrX3dpbmRvd19mZWF0dXJlc19pbnRfcHJv
cGVydHlfZ2V0Ci0gKi8KLUVBUEkgdm9pZCAgICAgICAgIGV3a193aW5kb3dfZmVhdHVyZXNfYm9v
bF9wcm9wZXJ0eV9nZXQoY29uc3QgRXdrX1dpbmRvd19GZWF0dXJlcyAqd2luZG93X2ZlYXR1cmVz
LCBFaW5hX0Jvb2wgKnRvb2xiYXJfdmlzaWJsZSwgRWluYV9Cb29sICpzdGF0dXNiYXJfdmlzaWJs
ZSwgRWluYV9Cb29sICpzY3JvbGxiYXJzX3Zpc2libGUsIEVpbmFfQm9vbCAqbWVudWJhcl92aXNp
YmxlLCBFaW5hX0Jvb2wgKmxvY2F0aW9uYmFyX3Zpc2libGUsIEVpbmFfQm9vbCAqZnVsbHNjcmVl
bik7Ci0KLS8qKgotICogR2V0cyBpbnQgcHJvcGVydGllcyBvZiBhbiBFd2tfV2luZG93X0ZlYXR1
cmVzLgotICoKLSAqIFByb3BlcnRpZXMgYXJlIHJldHVybmVkIGluIHRoZSByZXNwZWN0aXZlIHBv
aW50ZXJzLiBQYXNzaW5nIEBjIE5VTEwgdG8gYW55IG9mCi0gKiB0aGVzZSBwb2ludGVycyB3aWxs
IGNhdXNlIHRoYXQgcHJvcGVydHkgdG8gbm90IGJlIHJldHVybmVkLgotICoKLSAqIE1ha2Ugc3Vy
ZSB0byBjaGVjayBpZiB0aGUgdmFsdWUgcmV0dXJuZWQgaXMgbGVzcyB0aGFuIDAgYmVmb3JlIHVz
aW5nIGl0LCBzaW5jZSBpbgotICogdGhhdCBjYXNlIGl0IG1lYW5zIHRoYXQgcHJvcGVydHkgd2Fz
IG5vdCBzZXQgaW4gd2luZG93X2ZlYXR1cmVzIG9iamVjdC4KLSAqCi0gKiBAcGFyYW0gd2luZG93
X2ZlYXR1cmVzIHRoZSB3aW5kb3cncyBmZWF0dXJlcwotICogQHBhcmFtIHggdGhlIHBvaW50ZXIg
dG8gc3RvcmUgeCBwb3NpdGlvbgotICogQHBhcmFtIHkgdGhlIHBvaW50ZXIgdG8gc3RvcmUgeSBw
b3NpdGlvbgotICogQHBhcmFtIHcgdGhlIHBvaW50ZXIgdG8gc3RvcmUgd2lkdGgKLSAqIEBwYXJh
bSBoIHRoZSBwb2ludGVyIHRvIHN0b3JlIGhlaWdodAotICoKLSAqIEBzZWUgZXdrX3dpbmRvd19m
ZWF0dXJlc19ib29sX3Byb3BlcnR5X2dldAotICovCi1FQVBJIHZvaWQgICAgICAgICBld2tfd2lu
ZG93X2ZlYXR1cmVzX2ludF9wcm9wZXJ0eV9nZXQoY29uc3QgRXdrX1dpbmRvd19GZWF0dXJlcyAq
d2luZG93X2ZlYXR1cmVzLCBpbnQgKngsIGludCAqeSwgaW50ICp3LCBpbnQgKmgpOwotCi0jaWZk
ZWYgX19jcGx1c3BsdXMKLX0KLSNlbmRpZgotI2VuZGlmIC8vIGV3a193aW5kb3dfZmVhdHVyZXNf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a193aW5kb3dfZmVhdHVyZXNf
cHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a193aW5kb3dfZmVhdHVyZXNfcHJp
dmF0ZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNjU4NTkyLi4wMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfd2luZG93X2ZlYXR1cmVzX3ByaXZhdGUuaAor
KysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLS8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA5
LTIwMTAgUHJvRlVTSU9OIGVtYmVkZGVkIHN5c3RlbXMKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDkt
MjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAg
ICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gICAgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAgICBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCi0gICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBD
T1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICAgIEJvc3Rv
biwgTUEgMDIxMTAtMTMwMSwgVVNBLgotKi8KLQotI2lmbmRlZiBld2tfd2luZG93X2ZlYXR1cmVz
X3ByaXZhdGVfaAotI2RlZmluZSBld2tfd2luZG93X2ZlYXR1cmVzX3ByaXZhdGVfaAotCi1Fd2tf
V2luZG93X0ZlYXR1cmVzKiBld2tfd2luZG93X2ZlYXR1cmVzX25ld19mcm9tX2NvcmUoY29uc3Qg
V2ViQ29yZTo6V2luZG93RmVhdHVyZXMqIGNvcmUpOwotCi0jZW5kaWYgLy8gZXdrX3dpbmRvd19m
ZWF0dXJlc19wcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3RzL1Vu
aXRUZXN0VXRpbHMvRVdLVGVzdEJhc2UuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvdGVzdHMvVW5p
dFRlc3RVdGlscy9FV0tUZXN0QmFzZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDdkZmY0OWYuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvdGVzdHMvVW5pdFRlc3RV
dGlscy9FV0tUZXN0QmFzZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw2MyArMCwwIEBACi0vKgot
ICAgIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCi0KLSAgICBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0g
ICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1
YmxpYwotICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgotICAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAg
ICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNl
ZSB0aGUgR05VCi0gICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KLQotICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
ZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCi0gICAgSW5j
LiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EK
LSovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJFV0tUZXN0QmFzZS5oIgotCi0j
aW5jbHVkZSAiRVdLVGVzdEVudmlyb25tZW50LmgiCi0jaW5jbHVkZSA8RVdlYktpdC5oPgotI2lu
Y2x1ZGUgPEVjb3JlLmg+Ci0jaW5jbHVkZSA8RWRqZS5oPgotCi1leHRlcm4gRVdLVW5pdFRlc3Rz
OjpFV0tUZXN0RW52aXJvbm1lbnQqIGVudmlyb25tZW50OwotCi1uYW1lc3BhY2UgRVdLVW5pdFRl
c3RzIHsKLQotRVdLVGVzdEJhc2U6OkVXS1Rlc3RCYXNlKCkKLXsKLX0KLQotRXZhc19PYmplY3Qq
IEVXS1Rlc3RCYXNlOjp3ZWJWaWV3KCkKLXsKLSAgICByZXR1cm4gbV9ld2tUZXN0Vmlldy53ZWJW
aWV3KCk7Ci19Ci0KLXZvaWQgRVdLVGVzdEJhc2U6OlNldFVwKCkKLXsKLSAgICBBU1NFUlRfVFJV
RShtX2V3a1Rlc3RWaWV3LmluaXQoKSk7Ci19Ci0KLXZvaWQgRVdLVGVzdEJhc2U6Om9uTG9hZEZp
bmlzaGVkKHZvaWQqIGRhdGEsIEV2YXNfT2JqZWN0KiB3ZWJWaWV3LCB2b2lkKiBldmVudEluZm8p
Ci17Ci0gICAgZWNvcmVfbWFpbl9sb29wX3F1aXQoKTsKLX0KLQotdm9pZCBFV0tUZXN0QmFzZTo6
d2FpdFVudGlsTG9hZEZpbmlzaGVkKCkKLXsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFj
a19hZGQod2ViVmlldygpLCAibG9hZCxmaW5pc2hlZCIsIG9uTG9hZEZpbmlzaGVkLCAwKTsKLSAg
ICBlY29yZV9tYWluX2xvb3BfYmVnaW4oKTsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFj
a19kZWwod2ViVmlldygpLCAibG9hZCxmaW5pc2hlZCIsIG9uTG9hZEZpbmlzaGVkKTsKLX0KLQot
dm9pZCBFV0tUZXN0QmFzZTo6bG9hZFVybChjb25zdCBjaGFyKiB1cmwpCi17Ci0gICAgQVNTRVJU
X1RSVUUoZXdrX3ZpZXdfdXJpX3NldCh3ZWJWaWV3KCksIHVybCkpOwotICAgIHdhaXRVbnRpbExv
YWRGaW5pc2hlZCgpOwotfQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0
cy9Vbml0VGVzdFV0aWxzL0VXS1Rlc3RCYXNlLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0cy9V
bml0VGVzdFV0aWxzL0VXS1Rlc3RCYXNlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDBlMjIzNTEuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvdGVzdHMvVW5pdFRlc3RV
dGlscy9FV0tUZXN0QmFzZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotLyoKLSAg
ICBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcwotCi0gICAgVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICAg
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJs
aWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLQotICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gICAg
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUg
dGhlIEdOVQotICAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVz
c2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
aWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotICAgIEluYy4s
IDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCi0q
LwotCi0jaWZuZGVmIEVXS1Rlc3RCYXNlX2gKLSNkZWZpbmUgRVdLVGVzdEJhc2VfaAotCi0jaW5j
bHVkZSAiRVdLVGVzdENvbmZpZy5oIgotI2luY2x1ZGUgIkVXS1Rlc3RWaWV3LmgiCi0jaW5jbHVk
ZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotbmFtZXNwYWNlIEVXS1VuaXRUZXN0cyB7Ci0KLWNsYXNzIEVX
S1Rlc3RCYXNlOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMg
dm9pZCBvbkxvYWRGaW5pc2hlZCh2b2lkKiBkYXRhLCBFdmFzX09iamVjdCogd2ViVmlldywgdm9p
ZCogZXZlbnRJbmZvKTsKLQotICAgIEV2YXNfT2JqZWN0KiB3ZWJWaWV3KCk7Ci0gICAgdmlydHVh
bCB2b2lkIFNldFVwKCk7Ci1wcm90ZWN0ZWQ6Ci0gICAgRVdLVGVzdEJhc2UoKTsKLQotICAgIHZv
aWQgbG9hZFVybChjb25zdCBjaGFyKiB1cmwgPSBDb25maWc6OmRlZmF1bHRUZXN0UGFnZSk7Ci0g
ICAgdm9pZCB3YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKLQotICAgIEVXS1Rlc3RWaWV3IG1fZXdr
VGVzdFZpZXc7Ci19OwotCi19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9l
ZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0tUZXN0Q29uZmlnLmggYi9Tb3VyY2UvV2ViS2l0L2Vm
bC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXS1Rlc3RDb25maWcuaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZmY0NGFlZS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0
cy9Vbml0VGVzdFV0aWxzL0VXS1Rlc3RDb25maWcuaAorKysgL2Rldi9udWxsCkBAIC0xLDMxICsw
LDAgQEAKLS8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKLQot
ICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKLSAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2Vy
IEdlbmVyYWwgUHVibGljCi0gICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gICAgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAg
ICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgotICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gU2VlIHRoZSBHTlUKLSAgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgotCi0gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwKLSAgICBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjEx
MS0xMzA3IFVTQQotKi8KLQotI2lmbmRlZiBFV0tUZXN0Q29uZmlnX2gKLSNkZWZpbmUgRVdLVGVz
dENvbmZpZ19oCi0KLW5hbWVzcGFjZSBFV0tVbml0VGVzdHMgewotbmFtZXNwYWNlIENvbmZpZyB7
Ci1zdGF0aWMgY29uc3QgaW50IGRlZmF1bHRWaWV3V2lkdGggPSA2MDA7Ci1zdGF0aWMgY29uc3Qg
aW50IGRlZmF1bHRWaWV3SGVpZ2h0ID0gODAwOwotc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IGRl
ZmF1bHRUaGVtZVBhdGggPSBERUZBVUxUX1RIRU1FX1BBVEggIi9kZWZhdWx0LmVkaiI7Ci1zdGF0
aWMgY29uc3QgY2hhciogY29uc3QgZGVmYXVsdFRlc3RQYWdlID0gImZpbGU6Ly8iIERFRkFVTFRf
VEVTVF9QQUdFX0RJUiAiL2RlZmF1bHRfdGVzdF9wYWdlLmh0bWwiOwotfQotfQotCi0jZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLVGVz
dEVudmlyb25tZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMv
RVdLVGVzdEVudmlyb25tZW50LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmEx
ZmVhNC4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxz
L0VXS1Rlc3RFbnZpcm9ubWVudC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi0v
KgotICAgIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCi0KLSAgICBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
Ci0gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs
IFB1YmxpYwotICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgotICAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
LSAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
IFNlZSB0aGUgR05VCi0gICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KLQotICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAgIGFsb25nIHdpdGggdGhpcyBsaWJy
YXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCi0gICAg
SW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBV
U0EKLSovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJFV0tUZXN0RW52aXJvbm1l
bnQuaCIKLQotI2luY2x1ZGUgPEVXZWJLaXQuaD4KLSNpbmNsdWRlIDxFY29yZS5oPgotI2luY2x1
ZGUgPEVkamUuaD4KLQotbmFtZXNwYWNlIEVXS1VuaXRUZXN0cyB7Ci0KLUVXS1Rlc3RFbnZpcm9u
bWVudDo6RVdLVGVzdEVudmlyb25tZW50KGJvb2wgdXNlWDExV2luZG93KQotICAgIDogbV91c2VY
MTFXaW5kb3codXNlWDExV2luZG93KQotewotfQotCi12b2lkIEVXS1Rlc3RFbnZpcm9ubWVudDo6
U2V0VXAoKQotewotICAgIEFTU0VSVF9HVChld2tfaW5pdCgpLCAwKTsKLQotICAgIGNvbnN0IGNo
YXIqIHByb3h5VXJsID0gZ2V0ZW52KCJodHRwX3Byb3h5Iik7Ci0gICAgaWYgKHByb3h5VXJsKQot
ICAgICAgICBld2tfbmV0d29ya19wcm94eV91cmlfc2V0KHByb3h5VXJsKTsKLX0KLQotdm9pZCBF
V0tUZXN0RW52aXJvbm1lbnQ6OlRlYXJEb3duKCkKLXsKLSAgICBld2tfc2h1dGRvd24oKTsKLX0K
LQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9F
V0tUZXN0RW52aXJvbm1lbnQuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3RzL1VuaXRUZXN0VXRp
bHMvRVdLVGVzdEVudmlyb25tZW50LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdj
YTY5NjYuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvdGVzdHMvVW5pdFRlc3RVdGls
cy9FV0tUZXN0RW52aXJvbm1lbnQuaAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLS8q
Ci0gICAgQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKLQotICAgIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
LSAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwg
UHVibGljCi0gICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCi0gICAgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgot
ICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
U2VlIHRoZSBHTlUKLSAgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgotCi0gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLSAgICBJ
bmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVT
QQotKi8KLQotI2lmbmRlZiBFV0tUZXN0RW52aXJvbm1lbnRfaAotI2RlZmluZSBFV0tUZXN0RW52
aXJvbm1lbnRfaAotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotbmFtZXNwYWNlIEVXS1Vu
aXRUZXN0cyB7Ci0KLWNsYXNzIEVXS1Rlc3RFbnZpcm9ubWVudCA6IHB1YmxpYyA6OnRlc3Rpbmc6
OkVudmlyb25tZW50IHsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBFV0tUZXN0RW52aXJvbm1lbnQo
Ym9vbCB1c2VYMTFXaW5kb3cpOwotCi0gICAgdmlydHVhbCB2b2lkIFNldFVwKCk7Ci0gICAgdmly
dHVhbCB2b2lkIFRlYXJEb3duKCk7Ci1wcml2YXRlOgotICAgIGJvb2wgbV91c2VYMTFXaW5kb3c7
Ci19OwotCi19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvdGVzdHMv
VW5pdFRlc3RVdGlscy9FV0tUZXN0Vmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0cy9V
bml0VGVzdFV0aWxzL0VXS1Rlc3RWaWV3LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggNzNiM2QwYi4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0cy9Vbml0VGVz
dFV0aWxzL0VXS1Rlc3RWaWV3LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLS8q
Ci0gICAgQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKLQotICAgIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
LSAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwg
UHVibGljCi0gICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCi0gICAgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgot
ICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
U2VlIHRoZSBHTlUKLSAgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgotCi0gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLSAgICBJ
bmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVT
QQotKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkVXS1Rlc3RWaWV3LmgiCi0K
LSNpbmNsdWRlIDxFV2ViS2l0Lmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotCi1uYW1lc3Bh
Y2UgRVdLVW5pdFRlc3RzIHsKLQotRVdLVGVzdFZpZXc6OkVXS1Rlc3RWaWV3KCkKLXsKLX0KLQot
Ym9vbCBFV0tUZXN0Vmlldzo6aW5pdChpbnQgd2lkdGgsIGludCBoZWlnaHQpCi17Ci0gICAgbV93
ZWJWaWV3ID0gbnVsbHB0cjsKLQotICAgIG1fZWNvcmVFdmFzID0gRWZsVW5pcXVlUHRyPEVjb3Jl
X0V2YXM+KGVjb3JlX2V2YXNfbmV3KDAsIDAsIDAsIHdpZHRoLCBoZWlnaHQsIDApKTsKLSAgICBp
ZiAoIW1fZWNvcmVFdmFzKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBlY29yZV9ldmFz
X3Nob3cobV9lY29yZUV2YXMuZ2V0KCkpOwotICAgIEV2YXMqIGV2YXMgPSBlY29yZV9ldmFzX2dl
dChtX2Vjb3JlRXZhcy5nZXQoKSk7Ci0gICAgaWYgKCFldmFzKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgICBtX3dlYlZpZXcgPSBhZG9wdFJlZihld2tfdmlld19hZGQoZXZhcykpOwotICAg
IGlmICghbV93ZWJWaWV3KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBld2tfdmlld190
aGVtZV9zZXQobV93ZWJWaWV3LmdldCgpLCBDb25maWc6OmRlZmF1bHRUaGVtZVBhdGgpOwotCi0g
ICAgZXZhc19vYmplY3RfcmVzaXplKG1fd2ViVmlldy5nZXQoKSwgd2lkdGgsIGhlaWdodCk7Ci0g
ICAgZXZhc19vYmplY3Rfc2hvdyhtX3dlYlZpZXcuZ2V0KCkpOwotICAgIGV2YXNfb2JqZWN0X2Zv
Y3VzX3NldChtX3dlYlZpZXcuZ2V0KCksIEVJTkFfVFJVRSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19
Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMv
RVdLVGVzdFZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdL
VGVzdFZpZXcuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWU0ODY5YS4uMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXS1Rlc3RWaWV3
LmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi0vKgotICAgIENvcHlyaWdodCAoQykg
MjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICAgIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICAg
IHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAgICBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VCi0gICAgTGVz
c2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLQotICAgIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQotICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRv
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCi0gICAgSW5jLiwgNTkgVGVtcGxlIFBsYWNl
LCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKLSovCi0KLSNpZm5kZWYgRVdL
VGVzdFZpZXdfaAotI2RlZmluZSBFV0tUZXN0Vmlld19oCi0KLSNpbmNsdWRlICJFV0tUZXN0Q29u
ZmlnLmgiCi0jaW5jbHVkZSA8RWNvcmVfRXZhcy5oPgotI2luY2x1ZGUgPEV2YXMuaD4KLSNpbmNs
dWRlIDx3dGYvZWZsL1JlZlB0ckVmbC5oPgotI2luY2x1ZGUgPHd0Zi9lZmwvVW5pcXVlUHRyRWZs
Lmg+Ci0KLW5hbWVzcGFjZSBFV0tVbml0VGVzdHMgewotCi1jbGFzcyBFV0tUZXN0VmlldyB7Ci1w
dWJsaWM6Ci0gICAgRVdLVGVzdFZpZXcoKTsKLQotICAgIEV2YXNfT2JqZWN0KiB3ZWJWaWV3KCkg
eyByZXR1cm4gbV93ZWJWaWV3LmdldCgpOyB9Ci0KLSAgICBib29sIGluaXQoaW50IHdpZHRoID0g
Q29uZmlnOjpkZWZhdWx0Vmlld1dpZHRoLCBpbnQgaGVpZ2h0ID0gQ29uZmlnOjpkZWZhdWx0Vmll
d0hlaWdodCk7Ci1wcml2YXRlOgotICAgIEVXS1Rlc3RWaWV3KGNvbnN0IEVXS1Rlc3RWaWV3Jik7
Ci0gICAgRVdLVGVzdFZpZXcmIG9wZXJhdG9yPShjb25zdCBFV0tUZXN0VmlldyYpOwotCi0gICAg
RWZsVW5pcXVlUHRyPEVjb3JlX0V2YXM+IG1fZWNvcmVFdmFzOwotICAgIFJlZlB0cjxFdmFzX09i
amVjdD4gbV93ZWJWaWV3OwotfTsKLQotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvZWZsL3Rlc3RzL3Jlc291cmNlcy9kZWZhdWx0X3Rlc3RfcGFnZS5odG1sIGIvU291cmNl
L1dlYktpdC9lZmwvdGVzdHMvcmVzb3VyY2VzL2RlZmF1bHRfdGVzdF9wYWdlLmh0bWwKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVkZDgxZTcuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YktpdC9lZmwvdGVzdHMvcmVzb3VyY2VzL2RlZmF1bHRfdGVzdF9wYWdlLmh0bWwKKysrIC9kZXYv
bnVsbApAQCAtMSw2ICswLDAgQEAKLTxIVE1MPgotPEJPRFk+Ci08SDIgYWxpZ249ImNlbnRlciI+
RUZMIFVuaXQgVGVzdHM8L0gyPgotPEgyIGFsaWduPSJjZW50ZXIiPkRlZmF1bHQgVGVzdGluZyBX
ZWIgUGFnZTwvSDI+Ci08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2VmbC90ZXN0cy90ZXN0X2V3a19jb250ZXh0bWVudS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC90
ZXN0cy90ZXN0X2V3a19jb250ZXh0bWVudS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAyOTQwZTEuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvdGVzdHMvdGVzdF9l
d2tfY29udGV4dG1lbnUuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTI0ICswLDAgQEAKLS8qCi0g
ICAgQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKLQotICAgIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAg
ICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVi
bGljCi0gICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCi0gICAgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAg
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2Vl
IHRoZSBHTlUKLSAgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgotCi0gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExl
c3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLSAgICBJbmMu
LCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQot
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaW5jbHVkZSAiVW5pdFRlc3RVdGlscy9FV0tU
ZXN0QmFzZS5oIgotI2luY2x1ZGUgIlVuaXRUZXN0VXRpbHMvRVdLVGVzdENvbmZpZy5oIgotI2lu
Y2x1ZGUgPEVXZWJLaXQuaD4KLSNpbmNsdWRlIDxFY29yZS5oPgotI2luY2x1ZGUgPHd0Zi9Pd25Q
dHIuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgotCi11c2luZyBuYW1lc3BhY2UgRVdL
VW5pdFRlc3RzOwotCi0vKioKLSAqIEBicmllZiBDaGVja2luZyB3aGV0aGVyIGZ1bmN0aW9uIGNy
ZWF0ZXMgcHJvcGVyIG1lbnUgaXRlbS4KLSAqCi0gKiBUaGlzIHRlc3QgY3JlYXRlcyBhIG1lbnUg
aXRlbSBhbmQgY2hlY2tzIGlmIGFsbCBtZW51IGl0ZW0ncyBhdHRyaWJ1dGVzIGFyZQotICogdGhl
IHNhbWUgYXMgcGFzc2VkIHRvIHRlc3RlZCBmdW5jdGlvbi4KLSAqLwotVEVTVF9GKEVXS1Rlc3RC
YXNlLCBld2tfY29udGV4dF9tZW51X2l0ZW1fbmV3KQotewotICAgIGxvYWRVcmwoKTsKLQotICAg
IEV2YXMqIGV2YXMgPSBldmFzX29iamVjdF9ldmFzX2dldCh3ZWJWaWV3KCkpOwotICAgIEFTU0VS
VF9UUlVFKGV2YXMpOwotCi0gICAgRXZhc19FdmVudF9Nb3VzZV9Eb3duIG1vdXNlRG93bjsKLSAg
ICBtb3VzZURvd24uYnV0dG9uID0gMzsKLSAgICBtb3VzZURvd24ub3V0cHV0LnggPSAwOwotICAg
IG1vdXNlRG93bi5vdXRwdXQueSA9IDA7Ci0gICAgbW91c2VEb3duLmNhbnZhcy54ID0gMDsKLSAg
ICBtb3VzZURvd24uY2FudmFzLnkgPSAwOwotICAgIG1vdXNlRG93bi5kYXRhID0gMDsKLSAgICBt
b3VzZURvd24ubW9kaWZpZXJzID0gY29uc3RfY2FzdDxFdmFzX01vZGlmaWVyKj4oZXZhc19rZXlf
bW9kaWZpZXJfZ2V0KGV2YXMpKTsKLSAgICBtb3VzZURvd24ubG9ja3MgPSBjb25zdF9jYXN0PEV2
YXNfTG9jayo+KGV2YXNfa2V5X2xvY2tfZ2V0KGV2YXMpKTsKLSAgICBtb3VzZURvd24uZmxhZ3Mg
PSBFVkFTX0JVVFRPTl9OT05FOwotICAgIG1vdXNlRG93bi50aW1lc3RhbXAgPSBlY29yZV9sb29w
X3RpbWVfZ2V0KCk7Ci0gICAgbW91c2VEb3duLmV2ZW50X2ZsYWdzID0gRVZBU19FVkVOVF9GTEFH
X05PTkU7Ci0gICAgbW91c2VEb3duLmRldiA9IDA7Ci0KLSAgICBBU1NFUlRfVFJVRShld2tfdmll
d19jb250ZXh0X21lbnVfZm9yd2FyZF9ldmVudCh3ZWJWaWV3KCksICZtb3VzZURvd24pKTsKLQot
ICAgIEV3a19Db250ZXh0X01lbnUqIGNvbnRleHRNZW51ID0gZXdrX3ZpZXdfY29udGV4dF9tZW51
X2dldCh3ZWJWaWV3KCkpOwotCi0gICAgQVNTRVJUX1RSVUUoY29udGV4dE1lbnUpOwotCi0gICAg
RXdrX0NvbnRleHRfTWVudV9JdGVtX1R5cGUgaXRlbVR5cGUgPSBFV0tfQUNUSU9OX1RZUEU7Ci0g
ICAgRXdrX0NvbnRleHRfTWVudV9BY3Rpb24gaXRlbUFjdGlvbiA9IEVXS19DT05URVhUX01FTlVf
SVRFTV9DVVNUT01fVEFHX05PX0FDVElPTjsKLSAgICBjb25zdCBjaGFyKiBpdGVtVGl0bGUgPSAi
VGVzdCBJdGVtIjsKLSAgICBib29sIGl0ZW1DaGVja2VkID0gZmFsc2U7Ci0gICAgYm9vbCBpdGVt
RW5hYmxlZCA9IGZhbHNlOwotCi0gICAgRXdrX0NvbnRleHRfTWVudV9JdGVtKiBjb250ZXh0TWVu
dUl0ZW0gPSBld2tfY29udGV4dF9tZW51X2l0ZW1fbmV3KGl0ZW1UeXBlLCBpdGVtQWN0aW9uLCBj
b250ZXh0TWVudSwgMCwgaXRlbVRpdGxlLCBpdGVtQ2hlY2tlZCwgaXRlbUVuYWJsZWQpOwotCi0g
ICAgQVNTRVJUX1RSVUUoY29udGV4dE1lbnVJdGVtKTsKLQotICAgIEVYUEVDVF9FUShpdGVtVHlw
ZSwgZXdrX2NvbnRleHRfbWVudV9pdGVtX3R5cGVfZ2V0KGNvbnRleHRNZW51SXRlbSkpOwotICAg
IEVYUEVDVF9FUShpdGVtQWN0aW9uLCBld2tfY29udGV4dF9tZW51X2l0ZW1fYWN0aW9uX2dldChj
b250ZXh0TWVudUl0ZW0pKTsKLSAgICBFWFBFQ1RfRVEoY29udGV4dE1lbnUsIGV3a19jb250ZXh0
X21lbnVfaXRlbV9wYXJlbnRfZ2V0KGNvbnRleHRNZW51SXRlbSkpOwotICAgIEVYUEVDVF9TVFJF
UShpdGVtVGl0bGUsIGV3a19jb250ZXh0X21lbnVfaXRlbV90aXRsZV9nZXQoY29udGV4dE1lbnVJ
dGVtKSk7Ci0gICAgRVhQRUNUX0VRKGl0ZW1DaGVja2VkLCBld2tfY29udGV4dF9tZW51X2l0ZW1f
Y2hlY2tlZF9nZXQoY29udGV4dE1lbnVJdGVtKSk7Ci0gICAgRVhQRUNUX0VRKGl0ZW1FbmFibGVk
LCBld2tfY29udGV4dF9tZW51X2l0ZW1fZW5hYmxlZF9nZXQoY29udGV4dE1lbnVJdGVtKSk7Ci0K
LSAgICBld2tfY29udGV4dF9tZW51X2l0ZW1fZnJlZShjb250ZXh0TWVudUl0ZW0pOwotfQotCi0v
KioKLSAqIEBicmllZiBDaGVja2luZyB3aGV0aGVyIGZ1bmN0aW9uIHJldHVybnMgcHJvcGVyIHBh
cmVudCBtZW51LgotICoKLSAqIFRoaXMgdGVzdCBjcmVhdGVzIGEgY29udGV4dCBtZW51cywgYW5k
IGNoZWNrcyBpZiBjcmVhdGVkIGNvbnRleHQgbWVudSdzCi0gKiBwYXJlbnQgaXMgdGhlIHNhbWUg
Zm9yIGVhY2ggb2YgbWVudSBpdGVtcy4KLSAqLwotVEVTVF9GKEVXS1Rlc3RCYXNlLCBld2tfY29u
dGV4dF9tZW51X2l0ZW1fcGFyZW50X2dldCkKLXsKLSAgICBsb2FkVXJsKCk7Ci0KLSAgICBFdmFz
KiBldmFzID0gZXZhc19vYmplY3RfZXZhc19nZXQod2ViVmlldygpKTsKLSAgICBBU1NFUlRfVFJV
RShldmFzKTsKLQotICAgIEV2YXNfRXZlbnRfTW91c2VfRG93biBtb3VzZURvd247Ci0gICAgbW91
c2VEb3duLmJ1dHRvbiA9IDM7Ci0gICAgbW91c2VEb3duLm91dHB1dC54ID0gMDsKLSAgICBtb3Vz
ZURvd24ub3V0cHV0LnkgPSAwOwotICAgIG1vdXNlRG93bi5jYW52YXMueCA9IDA7Ci0gICAgbW91
c2VEb3duLmNhbnZhcy55ID0gMDsKLSAgICBtb3VzZURvd24uZGF0YSA9IDA7Ci0gICAgbW91c2VE
b3duLm1vZGlmaWVycyA9IGNvbnN0X2Nhc3Q8RXZhc19Nb2RpZmllcio+KGV2YXNfa2V5X21vZGlm
aWVyX2dldChldmFzKSk7Ci0gICAgbW91c2VEb3duLmxvY2tzID0gY29uc3RfY2FzdDxFdmFzX0xv
Y2sqPihldmFzX2tleV9sb2NrX2dldChldmFzKSk7Ci0gICAgbW91c2VEb3duLmZsYWdzID0gRVZB
U19CVVRUT05fTk9ORTsKLSAgICBtb3VzZURvd24udGltZXN0YW1wID0gZWNvcmVfbG9vcF90aW1l
X2dldCgpOwotICAgIG1vdXNlRG93bi5ldmVudF9mbGFncyA9IEVWQVNfRVZFTlRfRkxBR19OT05F
OwotICAgIG1vdXNlRG93bi5kZXYgPSAwOwotCi0gICAgQVNTRVJUX1RSVUUoZXdrX3ZpZXdfY29u
dGV4dF9tZW51X2ZvcndhcmRfZXZlbnQod2ViVmlldygpLCAmbW91c2VEb3duKSk7Ci0KLSAgICBF
d2tfQ29udGV4dF9NZW51KiBjb250ZXh0TWVudSA9IGV3a192aWV3X2NvbnRleHRfbWVudV9nZXQo
d2ViVmlldygpKTsKLQotICAgIEFTU0VSVF9UUlVFKGNvbnRleHRNZW51KTsKLQotICAgIGNvbnN0
IEVpbmFfTGlzdCogY29udGV4dE1lbnVJdGVtcyA9IGV3a19jb250ZXh0X21lbnVfaXRlbV9saXN0
X2dldChjb250ZXh0TWVudSk7Ci0KLSAgICBBU1NFUlRfVFJVRShjb250ZXh0TWVudUl0ZW1zKTsK
LQotICAgIGNvbnN0IEVpbmFfTGlzdCogbGlzdEl0ZXJhdG9yOwotICAgIHZvaWQqIGRhdGE7Ci0g
ICAgRUlOQV9MSVNUX0ZPUkVBQ0goY29udGV4dE1lbnVJdGVtcywgbGlzdEl0ZXJhdG9yLCBkYXRh
KQotICAgICAgICBFWFBFQ1RfRVEoY29udGV4dE1lbnUsIGV3a19jb250ZXh0X21lbnVfaXRlbV9w
YXJlbnRfZ2V0KHN0YXRpY19jYXN0PEV3a19Db250ZXh0X01lbnVfSXRlbSo+KGRhdGEpKSk7Ci19
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0cy90ZXN0X2V3a19mcmFtZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0cy90ZXN0X2V3a19mcmFtZS5jcHAKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGEyNzAxYzYuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9l
ZmwvdGVzdHMvdGVzdF9ld2tfZnJhbWUuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNjYgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiAgUmVkIGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIElUUyBDT05UUklCVVRPUlMKLSAqIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBCi0gKiBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBIT0xERVJTIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwKLSAqIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVAotICog
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0j
aW5jbHVkZSAiVW5pdFRlc3RVdGlscy9FV0tUZXN0QmFzZS5oIgotI2luY2x1ZGUgIlVuaXRUZXN0
VXRpbHMvRVdLVGVzdENvbmZpZy5oIgotI2luY2x1ZGUgPEVXZWJLaXQuaD4KLQotdXNpbmcgbmFt
ZXNwYWNlIEVXS1VuaXRUZXN0czsKLQotc3RhdGljIHZvaWQgaW5pdEJ1ZmZlcihjaGFyKiogYnVm
ZmVyKQotewotICAgIGZyZWUoKmJ1ZmZlcik7Ci0gICAgKmJ1ZmZlciA9IDA7Ci19Ci0KLS8qKgot
ICogQGJyaWVmIFVuaXQgdGVzdCBmb3IgZXdrX2ZyYW1lX3NvdXJjZV9nZXQuCi0gKi8KLVRFU1Rf
RihFV0tUZXN0QmFzZSwgZXdrX2ZyYW1lX3NvdXJjZV9nZXQpCi17Ci0gICAgY2hhciogYnVmZmVy
ID0gMDsKLSAgICBzc2l6ZV90IGZhaWxlZCA9IC0xOyAKLQotICAgIC8vIENoZWNraW5nIGlmIGZ1
bmN0aW9uIHdvcmtzIHByb3Blcmx5IHdpdGhvdXQgbG9hZGluZyB1cmwuCi0gICAgc3NpemVfdCBy
ZWFkID0gZXdrX2ZyYW1lX3NvdXJjZV9nZXQoZXdrX3ZpZXdfZnJhbWVfbWFpbl9nZXQod2ViVmll
dygpKSwgJmJ1ZmZlcik7Ci0gICAgQVNTRVJUX0VRKHJlYWQsIGZhaWxlZCk7Ci0gICAgaW5pdEJ1
ZmZlcigmYnVmZmVyKTsKLQotICAgIC8vIEZJWE1FOiBCVUcgNDkyNDYgaGFzIGNoYW5nZWQgbG9h
ZCBiZWhhdmlvciB3aGVuIG1hbGZvcm1lZCB1cmwgaXMgaW5wdXRlZC4gVGltZXIgb3BlcmF0aW9u
IG1pZ2h0IGJlIG5lZWRlZCB0byBzeW5jIHdpdGggV0syLgotICAgIC8vIFNlZSBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA1NjIwIGZvciBtb3JlIGRldGFpbHMuCi0g
ICAgLy8gQ2hlY2tpbmcgaWYgZnVuY3Rpb24gd29ya3MgcHJvcGVybHkgd2hlbiBsb2FkaW5nIG5v
bi1leGlzdGluZyB1cmwuCi0gICAgLy8gbG9hZFVybCgiaHR0cDovL3d3dy5hYmNkZWZnXl4uY29t
Iik7Ci0gICAgLy8gcmVhZCA9IGV3a19mcmFtZV9zb3VyY2VfZ2V0KGV3a192aWV3X2ZyYW1lX21h
aW5fZ2V0KHdlYlZpZXcoKSksICZidWZmZXIpOwotICAgIC8vIEFTU0VSVF9FUShyZWFkLCBmYWls
ZWQpOwotICAgIC8vIGluaXRCdWZmZXIoJmJ1ZmZlcik7Ci0KLSAgICAvLyBDaGVja2luZyBpZiBm
dW5jdGlvbiB3b3JrcyBwcm9wZXJseSB3aGVuIGZpbmlzaGluZyBsb2FkIHVybC4KLSAgICBsb2Fk
VXJsKCk7Ci0gICAgcmVhZCA9IGV3a19mcmFtZV9zb3VyY2VfZ2V0KGV3a192aWV3X2ZyYW1lX21h
aW5fZ2V0KHdlYlZpZXcoKSksICZidWZmZXIpOwotICAgIEFTU0VSVF9HVChyZWFkLCAwKTsKLSAg
ICBpbml0QnVmZmVyKCZidWZmZXIpOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwv
dGVzdHMvdGVzdF9ld2tfc2V0dGluZy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0cy90ZXN0
X2V3a19zZXR0aW5nLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTM5ODk2NC4u
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0cy90ZXN0X2V3a19zZXR0aW5nLmNw
cAorKysgL2Rldi9udWxsCkBAIC0xLDE4OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDEzIENpc2NvIFN5c3RlbXMsIEluYy4gCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkIGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIElUUyBDT05UUklC
VVRPUlMKLSAqIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBCi0gKiBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0g
KiBIT0xERVJTIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwKLSAqIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVAotICogTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaW5jbHVkZSAiVW5pdFRlc3RVdGlscy9F
V0tUZXN0QmFzZS5oIgotI2luY2x1ZGUgIlVuaXRUZXN0VXRpbHMvRVdLVGVzdENvbmZpZy5oIgot
I2luY2x1ZGUgPEVXZWJLaXQuaD4KLQotdXNpbmcgbmFtZXNwYWNlIEVXS1VuaXRUZXN0czsKLQot
LyoqCi0gKiBAYnJpZWYgVW5pdCB0ZXN0IGZvciBjaGVja2luZyBzZXQvZ2V0IG9mIGRlZmF1bHQg
cXVvdGEgZm9yIFdlYiBEYXRhYmFzZSBkYXRhYmFzZXMgYnkgZXdrIHNldHRpbmdzIEFQSS4KLSAq
LwotVEVTVF9GKEVXS1Rlc3RCYXNlLCBld2tfc2V0dGluZ3Nfd2ViX2RhdGFiYXNlX2RlZmF1bHRf
cXVvdGEpCi17Ci0gICAgQVNTRVJUX0VRKDEgKiAxMDI0ICogMTAyNCwgZXdrX3NldHRpbmdzX3dl
Yl9kYXRhYmFzZV9kZWZhdWx0X3F1b3RhX2dldCgpKTsKLQotICAgIGV3a19zZXR0aW5nc193ZWJf
ZGF0YWJhc2VfZGVmYXVsdF9xdW90YV9zZXQoMiAqIDEwMjQgKiAxMDI0KTsKLSAgICBBU1NFUlRf
RVEoMiAqIDEwMjQgKiAxMDI0LCBld2tfc2V0dGluZ3Nfd2ViX2RhdGFiYXNlX2RlZmF1bHRfcXVv
dGFfZ2V0KCkpOwotCi0gICAgZXdrX3NldHRpbmdzX3dlYl9kYXRhYmFzZV9kZWZhdWx0X3F1b3Rh
X3NldCgzICogMTAyNCAqIDEwMjQpOwotICAgIEFTU0VSVF9FUSgzICogMTAyNCAqIDEwMjQsIGV3
a19zZXR0aW5nc193ZWJfZGF0YWJhc2VfZGVmYXVsdF9xdW90YV9nZXQoKSk7Ci19Ci0KLS8qKgot
ICogQGJyaWVmIFVuaXQgdGVzdCBmb3IgY2hlY2tpbmcgc2V0L2dldCBvZiBkaXJlY3RvcnkgcGF0
aCB3aGVyZSBXZWIgRGF0YWJhc2UgZGF0YWJhc2VzIGlzIHN0b3JlZCBieSBld2sgc2V0dGluZ3Mg
QVBJLgotICovCi1URVNUX0YoRVdLVGVzdEJhc2UsIGV3a19zZXR0aW5nc193ZWJfZGF0YWJhc2Vf
cGF0aCkKLXsKLSAgICBjaGFyKiBob21lUGF0aCA9IGdldGVudigiSE9NRSIpOwotICAgIGNoYXIq
IGRlZmF1bHRQYXRoID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4obWFsbG9jKHN0cmxlbihob21l
UGF0aCkgKyBzdHJsZW4oIi8uY2FjaGUvV2ViS2l0RWZsL0RhdGFiYXNlcyIpICsgMSkpOwotCi0j
aWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAgICBzdHJuY3B5KGRlZmF1bHRQYXRoLCBob21lUGF0
aCwgc3RybGVuKGhvbWVQYXRoKSArIDEpOwotICAgIEFTU0VSVF9TVFJFUShzdHJjYXQoZGVmYXVs
dFBhdGgsICIvLmNhY2hlL1dlYktpdEVmbC9EYXRhYmFzZXMiKSwgZXdrX3NldHRpbmdzX3dlYl9k
YXRhYmFzZV9wYXRoX2dldCgpKTsKLSNlbHNlCi0gICAgQVNTRVJUX1NUUkVRKDAsIGV3a19zZXR0
aW5nc193ZWJfZGF0YWJhc2VfcGF0aF9nZXQoKSk7Ci0jZW5kaWYKLSAgICBmcmVlKGRlZmF1bHRQ
YXRoKTsKLQotICAgIGV3a19zZXR0aW5nc193ZWJfZGF0YWJhc2VfcGF0aF9zZXQoIn4vZGF0YS93
ZWJraXREQiIpOwotI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0gICAgQVNTRVJUX1NUUkVRKCJ+
L2RhdGEvd2Via2l0REIiLCBld2tfc2V0dGluZ3Nfd2ViX2RhdGFiYXNlX3BhdGhfZ2V0KCkpOwot
I2Vsc2UKLSAgICBBU1NFUlRfU1RSRVEoMCwgZXdrX3NldHRpbmdzX3dlYl9kYXRhYmFzZV9wYXRo
X2dldCgpKTsKLSNlbmRpZgotCi0gICAgZXdrX3NldHRpbmdzX3dlYl9kYXRhYmFzZV9wYXRoX3Nl
dCgifi90bXAvd2Via2l0Iik7Ci0jaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkgICAgCi0gICAgQVNT
RVJUX1NUUkVRKCJ+L3RtcC93ZWJraXQiLCBld2tfc2V0dGluZ3Nfd2ViX2RhdGFiYXNlX3BhdGhf
Z2V0KCkpOwotI2Vsc2UKLSAgICBBU1NFUlRfU1RSRVEoMCwgZXdrX3NldHRpbmdzX3dlYl9kYXRh
YmFzZV9wYXRoX2dldCgpKTsKLSNlbmRpZgotfQotCi0vKioKLSAqIEBicmllZiBVbml0IHRlc3Qg
Zm9yIGNoZWNraW5nIHNldC9nZXQgb2YgZGlyZWN0b3J5IHBhdGggd2hlcmUgdGhlIEhUTUw1IGxv
Y2FsIHN0b3JhZ2UgaW5kZXhpbmcgZGF0YWJhc2UgaXMgc3RvcmVkIGJ5IGV3ayBzZXR0aW5ncyBB
UEkuCi0gKi8KLVRFU1RfRihFV0tUZXN0QmFzZSwgZXdrX3NldHRpbmdzX2xvY2FsX3N0b3JhZ2Vf
cGF0aCkKLXsKLSAgICBjaGFyKiBob21lUGF0aCA9IGdldGVudigiSE9NRSIpOwotICAgIGNoYXIq
IGRlZmF1bHRQYXRoID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4obWFsbG9jKHN0cmxlbihob21l
UGF0aCkgKyBzdHJsZW4oIi8ubG9jYWwvc2hhcmUvV2ViS2l0RWZsL0xvY2FsU3RvcmFnZSIpICsg
MSkpOwotCi0gICAgc3RybmNweShkZWZhdWx0UGF0aCwgaG9tZVBhdGgsIHN0cmxlbihob21lUGF0
aCkgKyAxKTsKLSAgICBBU1NFUlRfU1RSRVEoc3RyY2F0KGRlZmF1bHRQYXRoLCAiLy5sb2NhbC9z
aGFyZS9XZWJLaXRFZmwvTG9jYWxTdG9yYWdlIiksIGV3a19zZXR0aW5nc19sb2NhbF9zdG9yYWdl
X3BhdGhfZ2V0KCkpOwotICAgIGZyZWUoZGVmYXVsdFBhdGgpOwotCi0gICAgZXdrX3NldHRpbmdz
X2xvY2FsX3N0b3JhZ2VfcGF0aF9zZXQoIn4vZGF0YS93ZWJraXREQiIpOwotICAgIEFTU0VSVF9T
VFJFUSgifi9kYXRhL3dlYmtpdERCIiwgZXdrX3NldHRpbmdzX2xvY2FsX3N0b3JhZ2VfcGF0aF9n
ZXQoKSk7Ci0KLSAgICBld2tfc2V0dGluZ3NfbG9jYWxfc3RvcmFnZV9wYXRoX3NldCgifi90bXAv
d2Via2l0Iik7Ci0gICAgQVNTRVJUX1NUUkVRKCJ+L3RtcC93ZWJraXQiLCBld2tfc2V0dGluZ3Nf
bG9jYWxfc3RvcmFnZV9wYXRoX2dldCgpKTsKLX0KLQotLyoqCi0gKiBAYnJpZWYgVW5pdCB0ZXN0
IGZvciBjaGVja2luZyBzZXQvZ2V0IG9mIGRpcmVjdG9yeSBwYXRoIHdoZXJlIGljb24gZGF0YWJh
c2UgaXMgc3RvcmVkIGJ5IGV3ayBzZXR0aW5ncyBBUEkuCi0gKi8KLVRFU1RfRihFV0tUZXN0QmFz
ZSwgZXdrX3NldHRpbmdzX2ljb25fZGF0YWJhc2VfcGF0aCkKLXsKLSAgICBBU1NFUlRfU1RSRVEo
MCwgZXdrX3NldHRpbmdzX2ljb25fZGF0YWJhc2VfcGF0aF9nZXQoKSk7Ci0KLSAgICBBU1NFUlRf
VFJVRShld2tfc2V0dGluZ3NfaWNvbl9kYXRhYmFzZV9wYXRoX3NldCgiL3RtcCIpKTsKLSAgICBB
U1NFUlRfU1RSRVEoIi90bXAiLCBld2tfc2V0dGluZ3NfaWNvbl9kYXRhYmFzZV9wYXRoX2dldCgp
KTsKLQotICAgIEFTU0VSVF9UUlVFKGV3a19zZXR0aW5nc19pY29uX2RhdGFiYXNlX3BhdGhfc2V0
KDApKTsKLSAgICBBU1NFUlRfU1RSRVEoMCwgZXdrX3NldHRpbmdzX2ljb25fZGF0YWJhc2VfcGF0
aF9nZXQoKSk7Ci19Ci0KLS8qKgotICogQGJyaWVmIFVuaXQgdGVzdCBmb3IgY2hlY2tpbmcgc2V0
L2dldCBvZiBwYXRoIHdoZXJlIHRoZSBIVE1MNSBhcHBsaWNhdGlvbiBjYWNoZSBpcyBzdG9yZWQg
YnkgZXdrIHNldHRpbmdzIEFQSS4KLSAqLwotVEVTVF9GKEVXS1Rlc3RCYXNlLCBld2tfc2V0dGlu
Z3NfYXBwbGljYXRpb25fY2FjaGVfcGF0aCkKLXsKLSAgICBjaGFyKiBob21lUGF0aCA9IGdldGVu
digiSE9NRSIpOwotICAgIGNoYXIqIGRlZmF1bHRQYXRoID0gcmVpbnRlcnByZXRfY2FzdDxjaGFy
Kj4obWFsbG9jKHN0cmxlbihob21lUGF0aCkgKyBzdHJsZW4oIi8uY2FjaGUvV2ViS2l0RWZsL0Fw
cGxpY2F0aW9ucyIpICsgMSkpOwotCi0gICAgc3RybmNweShkZWZhdWx0UGF0aCwgaG9tZVBhdGgs
IHN0cmxlbihob21lUGF0aCkgKyAxKTsKLSAgICBBU1NFUlRfU1RSRVEoc3RyY2F0KGRlZmF1bHRQ
YXRoLCAiLy5jYWNoZS9XZWJLaXRFZmwvQXBwbGljYXRpb25zIiksIGV3a19zZXR0aW5nc19hcHBs
aWNhdGlvbl9jYWNoZV9wYXRoX2dldCgpKTsKLSAgICBmcmVlKGRlZmF1bHRQYXRoKTsKLQotICAg
IGV3a19zZXR0aW5nc19hcHBsaWNhdGlvbl9jYWNoZV9wYXRoX3NldCgifi9kYXRhL3dlYmtpdEFw
cCIpOwotICAgIEFTU0VSVF9TVFJFUSgifi9kYXRhL3dlYmtpdEFwcCIsIGV3a19zZXR0aW5nc19h
cHBsaWNhdGlvbl9jYWNoZV9wYXRoX2dldCgpKTsKLQotICAgIGV3a19zZXR0aW5nc19hcHBsaWNh
dGlvbl9jYWNoZV9wYXRoX3NldCgifi90bXAvd2Via2l0QXBwIik7Ci0gICAgQVNTRVJUX1NUUkVR
KCJ+L3RtcC93ZWJraXRBcHAiLCBld2tfc2V0dGluZ3NfYXBwbGljYXRpb25fY2FjaGVfcGF0aF9n
ZXQoKSk7Ci19Ci0KLS8qKgotICogQGJyaWVmIFVuaXQgdGVzdCBmb3IgY2hlY2tpbmcgc2V0L2dl
dCBvZiBtYXhpbXVtIHNpemUgb2YgdGhlIGFwcGxpY2F0aW9uIGNhY2hlIGZvciBIVE1MNSBPZmZs
aW5lIFdlYiBBcHBsaWNhdGlvbnMgYnkgZXdrIHNldHRpbmdzIEFQSS4KLSAqLwotVEVTVF9GKEVX
S1Rlc3RCYXNlLCBld2tfc2V0dGluZ3NfYXBwbGljYXRpb25fY2FjaGVfbWF4X3F1b3RhKQotewot
ICAgIEFTU0VSVF9FUShzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptYXgoKSwgZXdrX3Nl
dHRpbmdzX2FwcGxpY2F0aW9uX2NhY2hlX21heF9xdW90YV9nZXQoKSk7Ci0KLSAgICBld2tfc2V0
dGluZ3NfYXBwbGljYXRpb25fY2FjaGVfbWF4X3F1b3RhX3NldCgzICogMTAyNCAqIDEwMjQpOwot
ICAgIEFTU0VSVF9FUSgzICogMTAyNCAqIDEwMjQsIGV3a19zZXR0aW5nc19hcHBsaWNhdGlvbl9j
YWNoZV9tYXhfcXVvdGFfZ2V0KCkpOwotCi0gICAgZXdrX3NldHRpbmdzX2FwcGxpY2F0aW9uX2Nh
Y2hlX21heF9xdW90YV9zZXQoNSAqIDEwMjQgKiAxMDI0KTsKLSAgICBBU1NFUlRfRVEoNSAqIDEw
MjQgKiAxMDI0LCBld2tfc2V0dGluZ3NfYXBwbGljYXRpb25fY2FjaGVfbWF4X3F1b3RhX2dldCgp
KTsKLX0KLQotLyoqCi0gKiBAYnJpZWYgVW5pdCB0ZXN0IGZvciBjaGVja2luZyBzZXQvZ2V0IG9m
IGluLW1lbW9yeSBvYmplY3QgY2FjaGUgRW5hYmxlcy9EaXNhYmxlcyBzdGF0dXMgYnkgZXdrIHNl
dHRpbmdzIEFQSS4KLSAqLwotVEVTVF9GKEVXS1Rlc3RCYXNlLCBld2tfc2V0dGluZ3Nfb2JqZWN0
X2NhY2hlX2VuYWJsZSkKLXsKLSAgICBBU1NFUlRfVFJVRShld2tfc2V0dGluZ3Nfb2JqZWN0X2Nh
Y2hlX2VuYWJsZV9nZXQoKSk7Ci0KLSAgICBld2tfc2V0dGluZ3Nfb2JqZWN0X2NhY2hlX2VuYWJs
ZV9zZXQoZmFsc2UpOwotICAgIEFTU0VSVF9GQUxTRShld2tfc2V0dGluZ3Nfb2JqZWN0X2NhY2hl
X2VuYWJsZV9nZXQoKSk7Ci0KLSAgICBld2tfc2V0dGluZ3Nfb2JqZWN0X2NhY2hlX2VuYWJsZV9z
ZXQodHJ1ZSk7Ci0gICAgQVNTRVJUX1RSVUUoZXdrX3NldHRpbmdzX29iamVjdF9jYWNoZV9lbmFi
bGVfZ2V0KCkpOwotfQotCi0vKioKLSAqIEBicmllZiBVbml0IHRlc3QgZm9yIGNoZWNraW5nIHNl
dC9nZXQgb2YgbWF4aW11bSBudW1iZXIgb2YgcGFnZXMgaW4gdGhlIG1lbW9yeSBwYWdlIGNhY2hl
IGJ5IGV3ayBzZXR0aW5ncyBBUEkuCi0gKi8KLVRFU1RfRihFV0tUZXN0QmFzZSwgZXdrX3NldHRp
bmdzX3BhZ2VfY2FjaGVfY2FwYWNpdHkpCi17Ci0gICAgQVNTRVJUX0VRKDMsIGV3a19zZXR0aW5n
c19wYWdlX2NhY2hlX2NhcGFjaXR5X2dldCgpKTsKLQotICAgIGV3a19zZXR0aW5nc19wYWdlX2Nh
Y2hlX2NhcGFjaXR5X3NldCg1KTsKLSAgICBBU1NFUlRfRVEoNSwgZXdrX3NldHRpbmdzX3BhZ2Vf
Y2FjaGVfY2FwYWNpdHlfZ2V0KCkpOwotfQotCi0vKioKLSAqIEBicmllZiBVbml0IHRlc3QgZm9y
IGNoZWNraW5nIHNldC9nZXQgb2YgY3NzIG1lZGlhIHR5cGUgYnkgZXdrIHNldHRpbmdzIEFQSS4K
LSAqLwotVEVTVF9GKEVXS1Rlc3RCYXNlLCBld2tfc2V0dGluZ3NfY3NzX21lZGlhX3R5cGUpCi17
Ci0gICAgQVNTRVJUX1NUUkVRKDAsIGV3a19zZXR0aW5nc19jc3NfbWVkaWFfdHlwZV9nZXQoKSk7
Ci0KLSAgICBld2tfc2V0dGluZ3NfY3NzX21lZGlhX3R5cGVfc2V0KCJoYW5kaGVsZCIpOwotICAg
IEFTU0VSVF9TVFJFUSgiaGFuZGhlbGQiLCBld2tfc2V0dGluZ3NfY3NzX21lZGlhX3R5cGVfZ2V0
KCkpOwotCi0gICAgZXdrX3NldHRpbmdzX2Nzc19tZWRpYV90eXBlX3NldCgidHYiKTsKLSAgICBB
U1NFUlRfU1RSRVEoInR2IiwgZXdrX3NldHRpbmdzX2Nzc19tZWRpYV90eXBlX2dldCgpKTsKLQot
ICAgIGV3a19zZXR0aW5nc19jc3NfbWVkaWFfdHlwZV9zZXQoInNjcmVlbiIpOwotICAgIEFTU0VS
VF9TVFJFUSgic2NyZWVuIiwgZXdrX3NldHRpbmdzX2Nzc19tZWRpYV90eXBlX2dldCgpKTsKLQot
ICAgIGV3a19zZXR0aW5nc19jc3NfbWVkaWFfdHlwZV9zZXQoMCk7Ci0gICAgQVNTRVJUX1NUUkVR
KDAsIGV3a19zZXR0aW5nc19jc3NfbWVkaWFfdHlwZV9nZXQoKSk7Ci19CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2VmbC90ZXN0cy90ZXN0X2V3a192aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQv
ZWZsL3Rlc3RzL3Rlc3RfZXdrX3ZpZXcuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBhNTUxODMzLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3RzL3Rlc3RfZXdr
X3ZpZXcuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTMwICswLDAgQEAKLS8qCi0gICAgQ29weXJp
Z2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKLQotICAgIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAgICBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0gICAg
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCi0gICAgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUK
LSAgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0g
ICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwg
d3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLSAgICBJbmMuLCA1OSBUZW1w
bGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQotKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotCi0jaW5jbHVkZSAiVW5pdFRlc3RVdGlscy9FV0tUZXN0QmFzZS5o
IgotI2luY2x1ZGUgIlVuaXRUZXN0VXRpbHMvRVdLVGVzdENvbmZpZy5oIgotI2luY2x1ZGUgPEVX
ZWJLaXQuaD4KLSNpbmNsdWRlIDxFY29yZS5oPgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KLSNp
bmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgotCi11c2luZyBuYW1lc3BhY2UgRVdLVW5pdFRlc3Rz
OwotCi0vKioKLSogQGJyaWVmIENoZWNraW5nIHdoZXRoZXIgZnVuY3Rpb24gcHJvcGVybHkgcmV0
dXJucyBjb3JyZWN0IHZhbHVlLgotKi8KLVRFU1RfRihFV0tUZXN0QmFzZSwgZXdrX3ZpZXdfZWRp
dGFibGVfZ2V0KQotewotICAgIGxvYWRVcmwoKTsKLSAgICBld2tfdmlld19lZGl0YWJsZV9zZXQo
d2ViVmlldygpLCB0cnVlKTsKLSAgICBBU1NFUlRfVFJVRShld2tfdmlld19lZGl0YWJsZV9nZXQo
d2ViVmlldygpKSk7Ci19Ci0KLS8qKgotKiBAYnJpZWYgQ2hlY2tpbmcgd2hldGhlciBmdW5jdGlv
biByZXR1cm5zIGNvcnJlY3QgdXJpIHN0cmluZy4KLSovCi1URVNUX0YoRVdLVGVzdEJhc2UsIGV3
a192aWV3X3VyaV9nZXQpCi17Ci0gICAgbG9hZFVybCgpOwotICAgIEFTU0VSVF9TVFJFUShDb25m
aWc6OmRlZmF1bHRUZXN0UGFnZSwgZXdrX3ZpZXdfdXJpX2dldCh3ZWJWaWV3KCkpKTsKLX0KLQot
LyoqCi0qIEBicmllZiBDaGVja2luZyB3aGV0aGVyIGZ1bmN0aW9uIHByb3Blcmx5IGdldC9zZXQg
ZnVsbHNjcmVlbiBzZXR0aW5nIHZhbHVlLgotKi8KLVRFU1RfRihFV0tUZXN0QmFzZSwgZXdrX3Zp
ZXdfc2V0dGluZ19lbmFibGVfZnVsbHNjcmVlbikKLXsKLSAgICBsb2FkVXJsKCk7Ci0jaWYgRU5B
QkxFKEZVTExTQ1JFRU5fQVBJKQotICAgIEFTU0VSVF9UUlVFKGV3a192aWV3X3NldHRpbmdfZW5h
YmxlX2Z1bGxzY3JlZW5fZ2V0KHdlYlZpZXcoKSkpOwotCi0gICAgQVNTRVJUX1RSVUUoZXdrX3Zp
ZXdfc2V0dGluZ19lbmFibGVfZnVsbHNjcmVlbl9zZXQod2ViVmlldygpLCB0cnVlKSk7Ci0gICAg
QVNTRVJUX1RSVUUoZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfZnVsbHNjcmVlbl9nZXQod2ViVmll
dygpKSk7Ci0KLSAgICBBU1NFUlRfVFJVRShld2tfdmlld19zZXR0aW5nX2VuYWJsZV9mdWxsc2Ny
ZWVuX3NldCh3ZWJWaWV3KCksIGZhbHNlKSk7Ci0gICAgQVNTRVJUX0ZBTFNFKGV3a192aWV3X3Nl
dHRpbmdfZW5hYmxlX2Z1bGxzY3JlZW5fZ2V0KHdlYlZpZXcoKSkpOwotI2Vsc2UKLSAgICBBU1NF
UlRfRkFMU0UoZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfZnVsbHNjcmVlbl9nZXQod2ViVmlldygp
KSk7Ci0KLSAgICBBU1NFUlRfRkFMU0UoZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfZnVsbHNjcmVl
bl9zZXQod2ViVmlldygpLCB0cnVlKSk7Ci0gICAgQVNTRVJUX0ZBTFNFKGV3a192aWV3X3NldHRp
bmdfZW5hYmxlX2Z1bGxzY3JlZW5fZ2V0KHdlYlZpZXcoKSkpOwotCi0gICAgQVNTRVJUX0ZBTFNF
KGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2Z1bGxzY3JlZW5fc2V0KHdlYlZpZXcoKSwgZmFsc2Up
KTsKLSAgICBBU1NFUlRfRkFMU0UoZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfZnVsbHNjcmVlbl9n
ZXQod2ViVmlldygpKSk7Ci0jZW5kaWYKLX0KLQotLyoqCi0gKiBAYnJpZWYgQ2hlY2tpbmcgd2hl
dGhlciBmdW5jdGlvbiByZXR1cm5zIHByb3BlciBjb250ZXh0IG1lbnUgc3RydWN0dXJlLgotICoK
LSAqIFRoaXMgdGVzdCBjcmVhdGVzIGEgY29udGV4dCBtZW51IGFuZCBjaGVja3MgaWYgY29udGV4
dCBtZW51IHN0cnVjdHVyZQotICogaXMgbm90IE5VTEw7Ci0gKi8KLVRFU1RfRihFV0tUZXN0QmFz
ZSwgZXdrX3ZpZXdfY29udGV4dF9tZW51X2dldCkKLXsKLSAgICBsb2FkVXJsKCk7Ci0KLSAgICBF
dmFzKiBldmFzID0gZXZhc19vYmplY3RfZXZhc19nZXQod2ViVmlldygpKTsKLSAgICBBU1NFUlRf
VFJVRShldmFzKTsKLQotICAgIEV2YXNfRXZlbnRfTW91c2VfRG93biBtb3VzZURvd247Ci0gICAg
bW91c2VEb3duLmJ1dHRvbiA9IDM7Ci0gICAgbW91c2VEb3duLm91dHB1dC54ID0gMDsKLSAgICBt
b3VzZURvd24ub3V0cHV0LnkgPSAwOwotICAgIG1vdXNlRG93bi5jYW52YXMueCA9IDA7Ci0gICAg
bW91c2VEb3duLmNhbnZhcy55ID0gMDsKLSAgICBtb3VzZURvd24uZGF0YSA9IDA7Ci0gICAgbW91
c2VEb3duLm1vZGlmaWVycyA9IGNvbnN0X2Nhc3Q8RXZhc19Nb2RpZmllcio+KGV2YXNfa2V5X21v
ZGlmaWVyX2dldChldmFzKSk7Ci0gICAgbW91c2VEb3duLmxvY2tzID0gY29uc3RfY2FzdDxFdmFz
X0xvY2sqPihldmFzX2tleV9sb2NrX2dldChldmFzKSk7Ci0gICAgbW91c2VEb3duLmZsYWdzID0g
RVZBU19CVVRUT05fTk9ORTsKLSAgICBtb3VzZURvd24udGltZXN0YW1wID0gZWNvcmVfbG9vcF90
aW1lX2dldCgpOwotICAgIG1vdXNlRG93bi5ldmVudF9mbGFncyA9IEVWQVNfRVZFTlRfRkxBR19O
T05FOwotICAgIG1vdXNlRG93bi5kZXYgPSAwOwotCi0gICAgQVNTRVJUX1RSVUUoZXdrX3ZpZXdf
Y29udGV4dF9tZW51X2ZvcndhcmRfZXZlbnQod2ViVmlldygpLCAmbW91c2VEb3duKSk7Ci0KLSAg
ICBBU1NFUlRfVFJVRShld2tfdmlld19jb250ZXh0X21lbnVfZ2V0KHdlYlZpZXcoKSkpOwotfQot
Ci1URVNUX0YoRVdLVGVzdEJhc2UsIGV3a192aWV3X3NjcmVlbnNob3RfY29udGVudHNfZ2V0KQot
ewotICAgIGxvYWRVcmwoKTsKLQotICAgIEV2YXNfQ29vcmQgd2lkdGgsIGhlaWdodDsKLQotICAg
IEVpbmFfUmVjdGFuZ2xlIGFyZWE7Ci0gICAgYXJlYS54ID0gMTA7Ci0gICAgYXJlYS55ID0gMTA7
Ci0gICAgYXJlYS53ID0gMjA7Ci0gICAgYXJlYS5oID0gMzA7Ci0gICAgRXZhc19PYmplY3QqIHNj
cmVlbnNob3QgPSBld2tfdmlld19zY3JlZW5zaG90X2NvbnRlbnRzX2dldCh3ZWJWaWV3KCksICZh
cmVhKTsKLSAgICBldmFzX29iamVjdF9nZW9tZXRyeV9nZXQoc2NyZWVuc2hvdCwgMCwgMCwgJndp
ZHRoLCAmaGVpZ2h0KTsKLSAgICBBU1NFUlRfRVEoYXJlYS53LCB3aWR0aCk7Ci0gICAgQVNTRVJU
X0VRKGFyZWEuaCwgaGVpZ2h0KTsKLSAgICBldmFzX29iamVjdF9kZWwoc2NyZWVuc2hvdCk7Ci0K
LSAgICBzY3JlZW5zaG90ID0gZXdrX3ZpZXdfc2NyZWVuc2hvdF9jb250ZW50c19nZXQod2ViVmll
dygpLCAwKTsKLSAgICBBU1NFUlRfRkFMU0Uoc2NyZWVuc2hvdCk7Ci0KLSAgICBhcmVhLncgPSAw
OwotICAgIGFyZWEuaCA9IDA7Ci0gICAgc2NyZWVuc2hvdCA9IGV3a192aWV3X3NjcmVlbnNob3Rf
Y29udGVudHNfZ2V0KHdlYlZpZXcoKSwgJmFyZWEpOwotICAgIEFTU0VSVF9GQUxTRShzY3JlZW5z
aG90KTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3RzL3Rlc3RfcnVubmVy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3RzL3Rlc3RfcnVubmVyLmNwcApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggZThmM2MwOC4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2VmbC90ZXN0cy90ZXN0X3J1bm5lci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBA
Ci0vKgotICAgIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCi0KLSAgICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCi0gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5l
cmFsIFB1YmxpYwotICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgotICAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi0gICAgVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKLSAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuIFNlZSB0aGUgR05VCi0gICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KLQotICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAgIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCi0g
ICAgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMw
NyBVU0EKLSovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2luY2x1ZGUgIlVuaXRUZXN0VXRp
bHMvRVdLVGVzdEJhc2UuaCIKLSNpbmNsdWRlICJVbml0VGVzdFV0aWxzL0VXS1Rlc3RFbnZpcm9u
bWVudC5oIgotI2luY2x1ZGUgPGdldG9wdC5oPgotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0K
LXVzaW5nIG5hbWVzcGFjZSBFV0tVbml0VGVzdHM7Ci0KLUVXS1Rlc3RFbnZpcm9ubWVudCogZW52
aXJvbm1lbnQgPSAwOwotCi1zdGF0aWMgaW50IHBhcnNlQ3VzdG9tQXJndW1lbnRzKGludCBhcmdj
LCBjaGFyKiogYXJndikKLXsKLSAgICBpbnQgdXNlWDExV2luZG93ID0gMDsKLSAgICBzdGF0aWMg
Y29uc3Qgb3B0aW9uIG9wdGlvbnNbXSA9IHsKLSAgICAgICAgeyJ1c2VYMTFXaW5kb3ciLCBub19h
cmd1bWVudCwgJnVzZVgxMVdpbmRvdywgdHJ1ZX0sCi0gICAgICAgIHswLCAwLCAwLCAwfQotICAg
IH07Ci0KLSAgICBpbnQgb3B0aW9uOwotICAgIHdoaWxlICgob3B0aW9uID0gZ2V0b3B0X2xvbmco
YXJnYywgYXJndiwgIiIsIG9wdGlvbnMsIDApKSAhPSAtMSkgeyB9Ci0KLSAgICByZXR1cm4gdXNl
WDExV2luZG93OwotfQotCi1pbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCi17Ci0gICAg
aW50IHVzZVgxMVdpbmRvdyA9IHBhcnNlQ3VzdG9tQXJndW1lbnRzKGFyZ2MsIGFyZ3YpOwotICAg
IGVudmlyb25tZW50ID0gbmV3IEVXS1Rlc3RFbnZpcm9ubWVudCh1c2VYMTFXaW5kb3cpOwotICAg
IHRlc3Rpbmc6OkFkZEdsb2JhbFRlc3RFbnZpcm9ubWVudChlbnZpcm9ubWVudCk7Ci0gICAgOjp0
ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7Ci0KLSAgICByZXR1cm4gUlVOX0FM
TF9URVNUUygpOwotfQo=
</data>
<flag name="review"
          id="257915"
          type_id="1"
          status="+"
          setter="gyuyoung.kim"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>233416</attachid>
            <date>2014-06-20 02:02:55 -0700</date>
            <delta_ts>2014-06-23 06:35:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>Patch</filename>
            <type>text/plain</type>
            <size>1519804</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggMmEyNTBmMy4uOTg5ZWRiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAor
MjAxNC0wNi0yMCAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3VuZy5jb20+CisKKyAgICAg
ICAgW0VGTF0gUmVtb3ZlIHRoZSBXZWJLaXQxIEVGTCBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzQwOTYKKworICAgICAgICBSZXZpZXdlZCBi
eSBHeXV5b3VuZyBLaW0uCisKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZTogUmVtb3ZlZC4K
KyAgICAgICAgKiBlZmw6IFJlbW92ZWQgZW50aXJlIGVmbCBkaXJlY3RvcnkuCisKIDIwMTQtMDYt
MTggIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAg
ICBBZGQgRlRMIHRvIFdpbmRvd3MgYnVpbGQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybUVmbC5jbWFrZQpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjVhZTUzOC4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtRWZsLmNtYWtlCisrKyAvZGV2L251bGwKQEAgLTEsMjcxICswLDAgQEAKLWxp
c3QoQVBQRU5EIFdlYktpdF9JTkNMVURFX0RJUkVDVE9SSUVTCi0gICAgIiR7V0VCS0lUX0RJUn0v
ZWZsL2V3ayIKLSAgICAiJHtXRUJLSVRfRElSfS9lZmwvV2ViQ29yZVN1cHBvcnQiCi0gICAgIiR7
V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2VmbCIKLSAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8iCi0gICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL2Vm
bCIKLSAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUiCi0gICAg
IiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlIgotICAgICIke1dFQkNP
UkVfRElSfS9wbGF0Zm9ybS9tb2NrIgotICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9uZXR3
b3JrL3NvdXAiCi0gICAgJHtDQUlST19JTkNMVURFX0RJUlN9Ci0gICAgJHtFQ09SRV9FVkFTX0lO
Q0xVREVfRElSU30KLSAgICAke0VDT1JFX0lOQ0xVREVfRElSU30KLSAgICAke0VDT1JFX0lOUFVU
X0lOQ0xVREVfRElSU30KLSAgICAke0VDT1JFX1hfSU5DTFVERV9ESVJTfQotICAgICR7RURKRV9J
TkNMVURFX0RJUlN9Ci0gICAgJHtFRlJFRVRfSU5DTFVERV9ESVJTfQotICAgICR7RUlOQV9JTkNM
VURFX0RJUlN9Ci0gICAgJHtFT19JTkNMVURFX0RJUlN9Ci0gICAgJHtFVkFTX0lOQ0xVREVfRElS
U30KLSAgICAke0dMSUJfSU5DTFVERV9ESVJTfQotICAgICR7SEFSRkJVWlpfSU5DTFVERV9ESVJT
fQotICAgICR7TElCU09VUF9JTkNMVURFX0RJUlN9Ci0gICAgJHtMSUJYTUwyX0lOQ0xVREVfRElS
fQotICAgICR7TElCWFNMVF9JTkNMVURFX0RJUn0KLSAgICAke1NRTElURV9JTkNMVURFX0RJUn0K
LSkKLQotaWYgKEVOQUJMRV9WSURFTykKLSAgICBsaXN0KEFQUEVORCBXZWJLaXRfSU5DTFVERV9E
SVJFQ1RPUklFUwotICAgICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyIgotICAgICAgICAke0dTVFJFQU1FUl9BUFBfSU5DTFVERV9ESVJTfQotICAgICAgICAk
e0dTVFJFQU1FUl9QQlVUSUxTX0lOQ0xVREVfRElSU30KLSAgICAgICAgJHtHU1RSRUFNRVJfVklE
RU9fSU5DTFVERV9ESVJTfQotICAgICkKLWVuZGlmICgpCi0KLWlmIChFTkFCTEVfVklERU9fVFJB
Q0spCi0gICAgbGlzdChBUFBFTkQgV2ViS2l0X0lOQ0xVREVfRElSRUNUT1JJRVMKLSAgICAgICAg
IiR7V0VCQ09SRV9ESVJ9L2h0bWwvdHJhY2siCi0gICAgKQotZW5kaWYgKCkKLQotaWYgKEVOQUJM
RV9OT1RJRklDQVRJT05TKQotICAgIGxpc3QoQVBQRU5EIFdlYktpdF9JTkNMVURFX0RJUkVDVE9S
SUVTCi0gICAgICAgICIke1dFQkNPUkVfRElSfS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMiCi0gICAg
KQotZW5kaWYgKCkKLQotaWYgKEVOQUJMRV9WSUJSQVRJT04pCi0gICAgbGlzdChBUFBFTkQgV2Vi
S2l0X0lOQ0xVREVfRElSRUNUT1JJRVMKLSAgICAgICAgIiR7V0VCQ09SRV9ESVJ9L01vZHVsZXMv
dmlicmF0aW9uIgotICAgICkKLWVuZGlmICgpCi0KLWlmIChFTkFCTEVfQkFUVEVSWV9TVEFUVVMp
Ci0gICAgbGlzdChBUFBFTkQgV2ViS2l0X0lOQ0xVREVfRElSRUNUT1JJRVMKLSAgICAgICAgIiR7
V0VCQ09SRV9ESVJ9L01vZHVsZXMvYmF0dGVyeSIKLSAgICApCi1lbmRpZiAoKQotCi1pZiAoRU5B
QkxFX05BVklHQVRPUl9DT05URU5UX1VUSUxTKQotICAgIGxpc3QoQVBQRU5EIFdlYktpdF9JTkNM
VURFX0RJUkVDVE9SSUVTCi0gICAgICAgICIke1dFQkNPUkVfRElSfS9Nb2R1bGVzL25hdmlnYXRv
cmNvbnRlbnR1dGlscyIKLSAgICApCi1lbmRpZiAoKQotCi1pZiAoV1RGX1VTRV8zRF9HUkFQSElD
UykKLSAgICBsaXN0KEFQUEVORCBXZWJLaXRfSU5DTFVERV9ESVJFQ1RPUklFUwotICAgICAgICAi
JHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMiCi0gICAgICAgICIke1dF
QkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAiCi0gICAgICAgICIke1RISVJEUEFS
VFlfRElSfS9BTkdMRS9pbmNsdWRlL0tIUiIKLSAgICAgICAgIiR7VEhJUkRQQVJUWV9ESVJ9L0FO
R0xFL2luY2x1ZGUvR0xTTEFORyIKLSAgICApCi1lbmRpZiAoKQotCi1pZiAoRU5BQkxFX0dFT0xP
Q0FUSU9OKQotICAgIGxpc3QoQVBQRU5EIFdlYktpdF9JTkNMVURFX0RJUkVDVE9SSUVTCi0gICAg
ICAgICIke1dFQkNPUkVfRElSfS9Nb2R1bGVzL2dlb2xvY2F0aW9uIgotICAgICkKLWVuZGlmICgp
Ci0KLWlmIChFTkFCTEVfQUNDRVNTSUJJTElUWSkKLSAgICBsaXN0KEFQUEVORCBXZWJLaXRfSU5D
TFVERV9ESVJFQ1RPUklFUwotICAgICAgICAiJHtXRUJDT1JFX0RJUn0vYWNjZXNzaWJpbGl0eSIK
LSAgICAgICAgIiR7V0VCQ09SRV9ESVJ9L2FjY2Vzc2liaWxpdHkvYXRrIgotICAgICAgICAke0FU
S19JTkNMVURFX0RJUlN9Ci0gICAgKQotICAgIGxpc3QoQVBQRU5EIFdlYktpdF9MSUJSQVJJRVMK
LSAgICAgICAgJHtBVEtfTElCUkFSSUVTfQotICAgICkKLWVuZGlmICgpCi0KLWxpc3QoQVBQRU5E
IFdlYktpdF9TT1VSQ0VTCi0gICAgZWZsL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9z
aXRpbmdDb250ZXh0RWZsLmNwcAotICAgIGVmbC9XZWJDb3JlU3VwcG9ydC9CYXR0ZXJ5Q2xpZW50
RWZsLmNwcAotICAgIGVmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwCi0gICAg
ZWZsL1dlYkNvcmVTdXBwb3J0L0NvbG9yQ2hvb3NlckVmbC5jcHAKLSAgICBlZmwvV2ViQ29yZVN1
cHBvcnQvQ29udGV4dE1lbnVDbGllbnRFZmwuY3BwCi0gICAgZWZsL1dlYkNvcmVTdXBwb3J0L0Rl
dmljZU1vdGlvbkNsaWVudEVmbC5jcHAKLSAgICBlZmwvV2ViQ29yZVN1cHBvcnQvRGV2aWNlT3Jp
ZW50YXRpb25DbGllbnRFZmwuY3BwCi0gICAgZWZsL1dlYkNvcmVTdXBwb3J0L0RyYWdDbGllbnRF
ZmwuY3BwCi0gICAgZWZsL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5j
cHAKLSAgICBlZmwvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmNwcAotICAgIGVmbC9X
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHAKLSAgICBlZmwvV2ViQ29yZVN1
cHBvcnQvRnJhbWVOZXR3b3JraW5nQ29udGV4dEVmbC5jcHAKLSAgICBlZmwvV2ViQ29yZVN1cHBv
cnQvSWNvbkRhdGFiYXNlQ2xpZW50RWZsLmNwcAotICAgIGVmbC9XZWJDb3JlU3VwcG9ydC9JbnNw
ZWN0b3JDbGllbnRFZmwuY3BwCi0gICAgZWZsL1dlYkNvcmVTdXBwb3J0L05hdmlnYXRvckNvbnRl
bnRVdGlsc0NsaWVudEVmbC5jcHAKLSAgICBlZmwvV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9u
UHJlc2VudGVyQ2xpZW50RWZsLmNwcAotICAgIGVmbC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0
cmF0ZWdpZXNFZmwuY3BwCi0gICAgZWZsL1dlYkNvcmVTdXBwb3J0L1Byb2dyZXNzVHJhY2tlckNs
aWVudEVmbC5jcHAKLSAgICBlZmwvV2ViQ29yZVN1cHBvcnQvUG9wdXBNZW51RWZsLmNwcAotICAg
IGVmbC9XZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVFZmwuY3BwCi0gICAgZWZsL1dlYkNv
cmVTdXBwb3J0L1N0b3JhZ2VUcmFja2VyQ2xpZW50RWZsLmNwcAotICAgIGVmbC9XZWJDb3JlU3Vw
cG9ydC9WaWJyYXRpb25DbGllbnRFZmwuY3BwCi0KLSAgICBlZmwvZXdrL2V3a19hdXRoLmNwcAot
ICAgIGVmbC9ld2svZXdrX2F1dGhfc291cC5jcHAKLSAgICBlZmwvZXdrL2V3a19jb250ZXh0bWVu
dS5jcHAKLSAgICBlZmwvZXdrL2V3a19jb29raWVzLmNwcAotICAgIGVmbC9ld2svZXdrX2N1c3Rv
bV9oYW5kbGVyLmNwcAotICAgIGVmbC9ld2svZXdrX2ZpbGVfY2hvb3Nlci5jcHAKLSAgICBlZmwv
ZXdrL2V3a19mcmFtZS5jcHAKLSAgICBlZmwvZXdrL2V3a19oaXN0b3J5LmNwcAotICAgIGVmbC9l
d2svZXdrX2pzLmNwcAotICAgIGVmbC9ld2svZXdrX21haW4uY3BwCi0gICAgZWZsL2V3ay9ld2tf
bmV0d29yay5jcHAKLSAgICBlZmwvZXdrL2V3a19zZWN1cml0eV9vcmlnaW4uY3BwCi0gICAgZWZs
L2V3ay9ld2tfc2VjdXJpdHlfcG9saWN5LmNwcAotICAgIGVmbC9ld2svZXdrX3NldHRpbmdzLmNw
cAotICAgIGVmbC9ld2svZXdrX3RvdWNoX2V2ZW50LmNwcAotICAgIGVmbC9ld2svZXdrX3ZpZXcu
Y3BwCi0gICAgZWZsL2V3ay9ld2tfd2ViX2RhdGFiYXNlLmNwcAotICAgIGVmbC9ld2svZXdrX3dp
bmRvd19mZWF0dXJlcy5jcHAKLSkKLQotbGlzdChBUFBFTkQgV2ViS2l0X0xJQlJBUklFUwotICAg
ICR7Q0FJUk9fTElCUkFSSUVTfQotICAgICR7Q01BS0VfRExfTElCU30KLSAgICAke0VDT1JFX0VW
QVNfTElCUkFSSUVTfQotICAgICR7RUNPUkVfSU5QVVRfTElCUkFSSUVTfQotICAgICR7RUNPUkVf
TElCUkFSSUVTfQotICAgICR7RURKRV9MSUJSQVJJRVN9Ci0gICAgJHtFRlJFRVRfTElCUkFSSUVT
fQotICAgICR7RUlOQV9MSUJSQVJJRVN9Ci0gICAgJHtFT19MSUJSQVJJRVN9Ci0gICAgJHtFVkFT
X0xJQlJBUklFU30KLSAgICAke0ZPTlRDT05GSUdfTElCUkFSSUVTfQotICAgICR7RlJFRVRZUEUy
X0xJQlJBUklFU30KLSAgICAke0dMSUJfR09CSkVDVF9MSUJSQVJJRVN9Ci0gICAgJHtHTElCX0xJ
QlJBUklFU30KLSAgICAke0hBUkZCVVpaX0xJQlJBUklFU30KLSAgICAke0pQRUdfTElCUkFSSUVT
fQotICAgICR7TElCU09VUF9MSUJSQVJJRVN9Ci0gICAgJHtMSUJYTUwyX0xJQlJBUklFU30KLSAg
ICAke1BOR19MSUJSQVJJRVN9Ci0gICAgJHtTUUxJVEVfTElCUkFSSUVTfQotKQotCi1pZiAoRU5B
QkxFX0VDT1JFX1gpCi0gICAgbGlzdChBUFBFTkQgV2ViS2l0X0xJQlJBUklFUwotICAgICAgICAk
e0VDT1JFX1hfTElCUkFSSUVTfQotICAgICkKLWVuZGlmICgpCi0KLWlmIChTSEFSRURfQ09SRSkK
LSAgICBzZXQoTElCU19QUklWQVRFICItbCR7V1RGX09VVFBVVF9OQU1FfSAtbCR7SmF2YVNjcmlw
dENvcmVfT1VUUFVUX05BTUV9IC1sJHtXZWJDb3JlX09VVFBVVF9OQU1FfSIpCi1lbHNlICgpCi0g
ICAgc2V0KExJQlNfUFJJVkFURSAiIikKLWVuZGlmICgpCi0KLWNvbmZpZ3VyZV9maWxlKGVmbC9l
d2Via2l0LnBjLmluICR7Q01BS0VfQklOQVJZX0RJUn0vV2ViS2l0L2VmbC9ld2Via2l0LnBjIEBP
TkxZKQotY29uZmlndXJlX2ZpbGUoZWZsL0VXZWJLaXRDb25maWcuY21ha2UuaW4gJHtDTUFLRV9C
SU5BUllfRElSfS9XZWJLaXQvZWZsL0VXZWJLaXRDb25maWcuY21ha2UgQE9OTFkpCi1jb25maWd1
cmVfZmlsZShlZmwvRVdlYktpdENvbmZpZ1ZlcnNpb24uY21ha2UuaW4gJHtDTUFLRV9CSU5BUllf
RElSfS9XZWJLaXQvZWZsL0VXZWJLaXRDb25maWdWZXJzaW9uLmNtYWtlIEBPTkxZKQotaW5zdGFs
bChGSUxFUyAke0NNQUtFX0JJTkFSWV9ESVJ9L1dlYktpdC9lZmwvZXdlYmtpdC5wYyBERVNUSU5B
VElPTiBsaWIvcGtnY29uZmlnKQotaW5zdGFsbChGSUxFUwotICAgICAgICAke0NNQUtFX0JJTkFS
WV9ESVJ9L1dlYktpdC9lZmwvRVdlYktpdENvbmZpZy5jbWFrZQotICAgICAgICAke0NNQUtFX0JJ
TkFSWV9ESVJ9L1dlYktpdC9lZmwvRVdlYktpdENvbmZpZ1ZlcnNpb24uY21ha2UKLSAgICAgICAg
REVTVElOQVRJT04gbGliL2NtYWtlL0VXZWJLaXQpCi0KLXVuc2V0KExJQlNfUFJJVkFURSkKLQot
c2V0KEVXZWJLaXRfSEVBREVSUwotICAgICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9lZmwv
ZXdrL0VXZWJLaXQuaAotICAgICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9lZmwvZXdrL2V3
a19hdXRoLmgKLSAgICAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vZWZsL2V3ay9ld2tfY29u
dGV4dG1lbnUuaAotICAgICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9lZmwvZXdrL2V3a19j
b29raWVzLmgKLSAgICAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vZWZsL2V3ay9ld2tfZmls
ZV9jaG9vc2VyLmgKLSAgICAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vZWZsL2V3ay9ld2tf
ZnJhbWUuaAotICAgICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9lZmwvZXdrL2V3a19oaXN0
b3J5LmgKLSAgICAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vZWZsL2V3ay9ld2tfanMuaAot
ICAgICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9lZmwvZXdrL2V3a19tYWluLmgKLSAgICAk
e0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vZWZsL2V3ay9ld2tfbmV0d29yay5oCi0gICAgJHtD
TUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2VmbC9ld2svZXdrX3NlY3VyaXR5X29yaWdpbi5oCi0g
ICAgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2VmbC9ld2svZXdrX3NlY3VyaXR5X3BvbGlj
eS5oCi0gICAgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2VmbC9ld2svZXdrX3NldHRpbmdz
LmgKLSAgICAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vZWZsL2V3ay9ld2tfdmlldy5oCi0g
ICAgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2VmbC9ld2svZXdrX3dlYl9kYXRhYmFzZS5o
Ci0gICAgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2VmbC9ld2svZXdrX3dpbmRvd19mZWF0
dXJlcy5oCi0pCi0KLWluc3RhbGwoRklMRVMgJHtFV2ViS2l0X0hFQURFUlN9Ci0gICAgICAgIERF
U1RJTkFUSU9OIGluY2x1ZGUvJHtXZWJLaXRfT1VUUFVUX05BTUV9LSR7UFJPSkVDVF9WRVJTSU9O
X01BSk9SfSkKLQotaW5jbHVkZV9kaXJlY3Rvcmllcygke1RISVJEUEFSVFlfRElSfS9ndGVzdC9p
bmNsdWRlKQotCi1zZXQoRVdLVW5pdFRlc3RzX0xJQlJBUklFUwotICAgICR7RUNPUkVfRVZBU19M
SUJSQVJJRVN9Ci0gICAgJHtFQ09SRV9MSUJSQVJJRVN9Ci0gICAgJHtFREpFX0xJQlJBUklFU30K
LSAgICAke0VWQVNfTElCUkFSSUVTfQotICAgIEphdmFTY3JpcHRDb3JlCi0gICAgV1RGCi0gICAg
V2ViQ29yZQotICAgIFdlYktpdAotICAgIGd0ZXN0Ci0pCi0KLXNldChFV0tVbml0VGVzdHNfSU5D
TFVERV9ESVJFQ1RPUklFUwotICAgICIke0NNQUtFX1NPVVJDRV9ESVJ9L1NvdXJjZSIKLSAgICAi
JHtXRUJLSVRfRElSfS9lZmwvZXdrIgotICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0iCi0gICAg
IiR7V1RGX0RJUn0iCi0gICAgIiR7V1RGX0RJUn0vd3RmIgotICAgICR7RUNPUkVfSU5DTFVERV9E
SVJTfQotICAgICR7RUNPUkVfRVZBU19JTkNMVURFX0RJUlN9Ci0gICAgJHtFVkFTX0lOQ0xVREVf
RElSU30KLSAgICAke0VESkVfSU5DTFVERV9ESVJTfQotKQotCi1saXN0KEFQUEVORCBFV0tVbml0
VGVzdHNfSU5DTFVERV9ESVJFQ1RPUklFUyAiJHtXVEZfRElSfS93dGYvZ29iamVjdCIpCi1saXN0
KEFQUEVORCBFV0tVbml0VGVzdHNfTElCUkFSSUVTCi0gICAgJHtHTElCX0dUSFJFQURfTElCUkFS
SUVTfQotICAgICR7R0xJQl9MSUJSQVJJRVN9Ci0pCi0KLXNldChERUZBVUxUX1RFU1RfUEFHRV9E
SVIgJHtDTUFLRV9TT1VSQ0VfRElSfS9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0cy9yZXNvdXJjZXMp
Ci0KLWFkZF9kZWZpbml0aW9ucygtRERFRkFVTFRfVEVTVF9QQUdFX0RJUj1cIiR7REVGQVVMVF9U
RVNUX1BBR0VfRElSfVwiCi0gICAgLURERUZBVUxUX1RIRU1FX1BBVEg9XCIke1RIRU1FX0JJTkFS
WV9ESVJ9XCIKLSAgICAtREdURVNUX0xJTktFRF9BU19TSEFSRURfTElCUkFSWT0xCi0pCi0KLWFk
ZF9saWJyYXJ5KGV3a1Rlc3RVdGlscwotICAgICR7V0VCS0lUX0RJUn0vZWZsL3Rlc3RzL1VuaXRU
ZXN0VXRpbHMvRVdLVGVzdEJhc2UuY3BwCi0gICAgJHtXRUJLSVRfRElSfS9lZmwvdGVzdHMvVW5p
dFRlc3RVdGlscy9FV0tUZXN0RW52aXJvbm1lbnQuY3BwCi0gICAgJHtXRUJLSVRfRElSfS9lZmwv
dGVzdHMvVW5pdFRlc3RVdGlscy9FV0tUZXN0Vmlldy5jcHAKLSkKLXRhcmdldF9saW5rX2xpYnJh
cmllcyhld2tUZXN0VXRpbHMgJHtFV0tVbml0VGVzdHNfTElCUkFSSUVTfSkKLQotc2V0KFdFQktJ
VF9FRkxfVEVTVF9ESVIgIiR7V0VCS0lUX0RJUn0vZWZsL3Rlc3RzLyIpCi1zZXQoV0VCS0lUX0VG
TF9URVNUX1JVTlRJTUVfT1VUUFVUX0RJUkVDVE9SWSAke0NNQUtFX1JVTlRJTUVfT1VUUFVUX0RJ
UkVDVE9SWX0vVGVzdFdlYktpdEFQSS9FV2ViS2l0KQotCi1zZXQoRVdLVW5pdFRlc3RzX0JJTkFS
SUVTCi0gICAgdGVzdF9ld2tfY29udGV4dG1lbnUKLSAgICB0ZXN0X2V3a19mcmFtZQotICAgIHRl
c3RfZXdrX3NldHRpbmcKLSAgICB0ZXN0X2V3a192aWV3Ci0pCi0KLWlmIChFTkFCTEVfQVBJX1RF
U1RTKQotICAgIGZvcmVhY2ggKHRlc3ROYW1lICR7RVdLVW5pdFRlc3RzX0JJTkFSSUVTfSkKLSAg
ICAgICAgYWRkX2V4ZWN1dGFibGUoJHt0ZXN0TmFtZX0gJHtXRUJLSVRfRUZMX1RFU1RfRElSfS8k
e3Rlc3ROYW1lfS5jcHAgJHtXRUJLSVRfRUZMX1RFU1RfRElSfS90ZXN0X3J1bm5lci5jcHApCi0g
ICAgICAgIGFkZF90ZXN0KCR7dGVzdE5hbWV9ICR7V0VCS0lUX0VGTF9URVNUX1JVTlRJTUVfT1VU
UFVUX0RJUkVDVE9SWX0vJHt0ZXN0TmFtZX0pCi0gICAgICAgIHNldF90ZXN0c19wcm9wZXJ0aWVz
KCR7dGVzdE5hbWV9IFBST1BFUlRJRVMgVElNRU9VVCA2MCkKLSAgICAgICAgc2V0X3RhcmdldF9w
cm9wZXJ0aWVzKCR7dGVzdE5hbWV9IFBST1BFUlRJRVMgUlVOVElNRV9PVVRQVVRfRElSRUNUT1JZ
ICR7V0VCS0lUX0VGTF9URVNUX1JVTlRJTUVfT1VUUFVUX0RJUkVDVE9SWX0pCi0gICAgICAgIHRh
cmdldF9saW5rX2xpYnJhcmllcygke3Rlc3ROYW1lfSAke0VXS1VuaXRUZXN0c19MSUJSQVJJRVN9
IGV3a1Rlc3RVdGlscykKLSAgICBlbmRmb3JlYWNoICgpCi1lbmRpZiAoKQotCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VM
b2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQxMDc2OGYuLjAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTc0MTAgKzAs
MCBAQAotMjAxNC0wNS0xNiAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+
Ci0KLSAgICAgICAgW0NNYWtlXSBJbXByb3ZlIGhhbmRsaW5nIG9mIExJQl9JTlNUQUxMX0RJUiwg
RVhFQ19JTlNUQUxMX0RJUiwgYW5kIExJQkVYRUNfSU5TVEFMTF9ESVIKLSAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMjgxOQotCi0gICAgICAgIFJldmll
d2VkIGJ5IENhcmxvcyBHYXJjaWEgQ2FtcG9zLgotCi0gICAgICAgICogRVdlYktpdENvbmZpZy5j
bWFrZS5pbjogTElCX0lOU1RBTExfRElSIGlzIGFsd2F5cyBhYnNvbHV0ZSBub3csIHNvIHdlIGRv
bid0IG5lZWQKLSAgICAgICAgdG8gcHJlZml4IGl0IHdpdGggdGhlIHByZWZpeC4KLSAgICAgICAg
KiBld2Via2l0LnBjLmluOiBJbnN0ZWFkIG9mIGhhcmQtY29kaW5nIHRoZSBwYXRoIHRvIHRoZSBs
aWJyYXJ5IGluc3RhbGxhdGlvbiBkaXJlY3RvcnkgdXNlIExJQl9JTlNUQUxMX0RJUi4KLQotMjAx
NC0wNS0xNiAgUGlvdHIgR3JhZCAgPHAuZ3JhZEBzYW1zdW5nLmNvbT4KLQotICAgICAgICBbRUZM
XSBCdWlsZCBicmVhayBhZnRlciAxNjg5NzguCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMzMwMTIuCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24g
RnJhc2VyLgotCi0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAgKF9ld2tfdmll
d19wcml2X25ldyk6Ci0KLTIwMTQtMDUtMTIgIEtyenlzenRvZiBXb2xhbnNraSAgPGsud29sYW5z
a2lAc2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW0VGTF1bV0sxXSBFbmFibGUgcmVnaW9uIGJhc2Vk
IGNvbHVtbnMKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEzMjY0NgotCi0gICAgICAgIFJldmlld2VkIGJ5IEd5dXlvdW5nIEtpbS4KLQotICAgICAgICBF
bmFibGUgbmV3IG11bHRpLWNvbHVtbiBtb2RlIGFzIGl0IHdhcyBlbmFibGVkIGluIFdLMiAocjE2
ODA0NikuCi0KLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoX2V3a192aWV3
X3ByaXZfbmV3KToKLQotMjAxNC0wNS0wNyAgTWFudWVsIFJlZ28gQ2FzYXNub3ZhcyAgPHJlZ29A
aWdhbGlhLmNvbT4KLQotICAgICAgICBbQ1NTIEdyaWQgTGF5b3V0XSBSZW1vdmUgcnVudGltZSBm
ZWF0dXJlCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MzIzODIKLQotICAgICAgICBSZXZpZXdlZCBieSBCZW5qYW1pbiBQb3VsYWluLgotCi0gICAgICAg
IFJlbW92ZSBjc3NHcmlkTGF5b3V0RW5hYmxlZCBzZXR0aW5nIHVzYWdlLgotCi0gICAgICAgICog
V2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcDoKLSAgICAgICAgKER1
bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6c2V0Q1NTR3JpZExheW91dEVuYWJsZWQpOiBEZWxldGVk
LgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5oOgot
Ci0yMDE0LTA1LTAxICBSeXVhbiBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KLQotICAg
ICAgICBbRUZMXVtXSzFdIERyb3AgZXdrX3ZpZXdfc2V0dGluZ190aWxlZF9iYWNraW5nc3RvcmUg
QVBJcwotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMy
MjQwCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJzIENhcmxzc29uLgotCi0gICAgICAgIFNp
bmNlIHdlIG1vdmVkIHRvIHVzZSBUZXh0dXJlTWFwcGVyLCB0aGlzIG9wdGlvbiBpcyBtZWFuaW5n
bGVzcyBub3cuCi0gICAgICAgIFJlbW92ZWQgZXdrX3ZpZXdfc2V0dGluZ190aWxlZF9iYWNraW5n
X3N0b3JlX2VuYWJsZWRfe2dldHxzZXR9IGFuZCByZWxhdGVkIGNvZGVzLgotCi0gICAgICAgICog
ZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAgKGV3a192aWV3X3NldHRpbmdfdGlsZWRfYmFja2lu
Z19zdG9yZV9lbmFibGVkX3NldCk6IERlbGV0ZWQuCi0gICAgICAgIChld2tfdmlld19zZXR0aW5n
X3RpbGVkX2JhY2tpbmdfc3RvcmVfZW5hYmxlZF9nZXQpOiBEZWxldGVkLgotICAgICAgICAqIGV3
ay9ld2tfdmlldy5oOgotICAgICAgICAqIHRlc3RzL3Rlc3RfZXdrX3ZpZXcuY3BwOgotICAgICAg
ICAoVEVTVF9GKTogRGVsZXRlZC4KLQotMjAxNC0wNS0wMSAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNo
b2lAc2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW0VGTF0gVGhlcmUgYXJlIG1hbnkgd2FybmluZ3Mg
d2l0aCBzb2Z0d2FyZSBiYWNrZW5kCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMzI0MjIKLQotICAgICAgICBSZXZpZXdlZCBieSBHeXV5b3VuZyBLaW0u
Ci0KLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoX2V3a192aWV3X3ByaXZf
bmV3KToKLSAgICAgICAgKGV3a192aWV3X2N1cnNvcl9zZXQpOgotCi0yMDE0LTA0LTMwICBBbGV4
ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgotCi0gICAgICAgIFJvbGwgb3V0IGZpeCBm
b3IgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMTYzNzoKLSAgICAg
ICAgQ2xlYW4gdXAgdW5uZWNlc3NhcnkgbWV0aG9kcyBpbiB0aGUgQmFja0ZvcndhcmRDbGllbnQg
aW50ZXJmYWNlCi0KLSAgICAgICAgSXQgYnJva2UgYSByZWdyZXNzaW9uIHRlc3QgYW5kIGFuIEFQ
SSB0ZXN0LgotCi0gICAgICAgICogZXdrL2V3a19oaXN0b3J5LmNwcDoKLSAgICAgICAgKGV3a19o
aXN0b3J5X2NsZWFyKToKLSAgICAgICAgKGV3a19oaXN0b3J5X25ldyk6Ci0gICAgICAgIChld2tf
aGlzdG9yeV9mcmVlKToKLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoX2V3
a192aWV3X3ByaXZfbmV3KToKLSAgICAgICAgKGV3a192aWV3X2hpc3RvcnlfZW5hYmxlX2dldCk6
Ci0gICAgICAgIChld2tfdmlld19oaXN0b3J5X2VuYWJsZV9zZXQpOgotICAgICAgICAoZXdrX3Zp
ZXdfaGlzdG9yeV9nZXQpOgotCi0yMDE0LTA0LTMwICBCcmlhbiBKLiBCdXJnICA8YnVyZ0Bjcy53
YXNoaW5ndG9uLmVkdT4KLQotICAgICAgICBDbGVhbiB1cCB1bm5lY2Vzc2FyeSBtZXRob2RzIGlu
IHRoZSBCYWNrRm9yd2FyZENsaWVudCBpbnRlcmZhY2UKLSAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMTYzNwotCi0gICAgICAgIFJldmlld2VkIGJ5IEFu
ZHJlYXMgS2xpbmcuCi0KLSAgICAgICAgUmVtb3ZlIHVzZXMgb2YgcmVmZXJlbmNlIGNvdW50aW5n
IGZvciBCYWNrRm9yd2FyZExpc3QuCi0gICAgICAgIFVzZSByZWZlcmVuY2VzIHRvIEJhY2tGb3J3
YXJkQ2xpZW50IGluc3RlYWQgb2YgcG9pbnRlcnMuCi0gICAgICAgIFN0b3AgdXNpbmcgQmFja0Zv
cndhcmRDbGllbnQ6OnBhZ2UoKSBzaW5jZSBpdCB3YXMgcmVtb3ZlZC4KLQotICAgICAgICAqIGV3
ay9ld2tfaGlzdG9yeS5jcHA6Ci0gICAgICAgIChld2tfaGlzdG9yeV9jbGVhcik6Ci0gICAgICAg
IChld2tfaGlzdG9yeV9uZXcpOgotICAgICAgICAoZXdrX2hpc3RvcnlfZnJlZSk6Ci0gICAgICAg
ICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAgKF9ld2tfdmlld19wcml2X25ldyk6Ci0gICAg
ICAgIChld2tfdmlld19oaXN0b3J5X2VuYWJsZV9nZXQpOgotICAgICAgICAoZXdrX3ZpZXdfaGlz
dG9yeV9lbmFibGVfc2V0KToKLSAgICAgICAgKGV3a192aWV3X2hpc3RvcnlfZ2V0KToKLQotMjAx
NC0wNC0yNCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgotCi0gICAg
ICAgIEZvbnRDYWNoZTo6Zm9udENhY2hlKCkgbmV2ZXIgcmV0dXJucyBudWxscHRyIHNvIGl0IGNh
biBiZSBtYWRlIHRvIHJldHVybiBhIHJlZmVyZW5jZSBpbnN0ZWFkCi0gICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzIxMTAKLQotICAgICAgICBSZXZpZXdl
ZCBieSBUaW0gSG9ydG9uLgotCi0gICAgICAgIFVwZGF0ZXMgY2FsbGVycyB0byB1c2UgJy4nIGlu
c3RlYWQgb2YgJy0+Jy4KLQotICAgICAgICBObyBuZXcgdGVzdHMgYXJlIG5lY2Vzc2FyeSBiZWNh
dXNlIHRoZXJlIHNob3VsZCBiZSBubyBiZWhhdmlvciBjaGFuZ2UuCi0KLSAgICAgICAgKiBld2sv
ZXdrX3NldHRpbmdzLmNwcDoKLSAgICAgICAgKGV3a19zZXR0aW5nc19tZW1vcnlfY2FjaGVfY2xl
YXIpOgotCi0yMDE0LTA0LTIzICBIeW93b24gS2ltICA8aHcxMDA4LmtpbUBzYW1zdW5nLmNvbT4K
LQotICAgICAgICBbRUZMXVtXSzFdIEFkZCAqY29uc3QqIGtleXdvcmQgdG8gX2dldCgpIEFQSXMK
LSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMjA5NAot
Ci0gICAgICAgIFJldmlld2VkIGJ5IEd5dXlvdW5nIEtpbS4KLQotICAgICAgICBTb21lIF9nZXQo
KSBFRkwgQVBJcyBkb24ndCBoYXZlICpjb25zdCoga2V5d29yZCB0aG91Z2ggdGhlIF9nZXQoKSBB
UElzIGRvbid0IG1vZGlmeSBwYXNzZWQgYXJndW1lbnQuCi0gICAgICAgIFdlIG5lZWQgdG8gYWRk
ICpjb25zdCoga2V5d29yZCB0byB0aG9zZSBBUElzLgotCi0gICAgICAgICogZXdrL2V3a19oaXN0
b3J5LmNwcDoKLSAgICAgICAgKGV3a19oaXN0b3J5X2xpbWl0X2dldCk6Ci0gICAgICAgICogZXdr
L2V3a19oaXN0b3J5Lmg6Ci0gICAgICAgICogZXdrL2V3a19qcy5jcHA6Ci0gICAgICAgIChld2tf
anNfb2JqZWN0X3R5cGVfZ2V0KToKLSAgICAgICAgKiBld2svZXdrX2pzLmg6Ci0KLTIwMTQtMDQt
MjIgIFJ5dWFuIENob2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxd
W1dLMV0gVGhlcmUgYXJlIG1hbnkgZmFpbHVyZXMgaW4gZmFzdC9mb3JtcyBzaW5jZSByMTYzMDMz
Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzIwMzkK
LQotICAgICAgICBSZXZpZXdlZCBieSBHeXV5b3VuZyBLaW0uCi0KLSAgICAgICAgKiBld2svZXdr
X3ZpZXcuY3BwOiBBZGRlZCBicmVhayBzdGF0ZW1lbnRzIHdoaWNoIGlzIG1pc3Npbmcgd2hpbGUg
cmVtb3ZlIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0KLSAgICAgICAgKGV3a192aWV3X25h
dmlnYXRpb25fcG9saWN5X2RlY2lzaW9uKToKLQotMjAxNC0wNC0yMiAgUnl1YW4gQ2hvaSAgPHJ5
dWFuLmNob2lAc2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW0VGTF1bV0sxXSBUaGVyZSBhcmUgbWFu
eSB3YXJuaW5ncyBpbiBsYXlvdXQgdGVzdCBzaW5jZSByMTY3NDI4Ci0gICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzE5ODUKLQotICAgICAgICBSZXZpZXdl
ZCBieSBHeXV5b3VuZyBLaW0uCi0KLSAgICAgICAgU2luY2UgcjE2NzQyOCwgaW1wbGVtZW50YXRp
b24gb2YgZmx1c2ggbWV0aG9kIHdhcyByZW1vdmVkLCBidXQgZXdrX3ZpZXdfZnJhbWVfbWFpbl9j
bGVhcmVkCi0gICAgICAgIHN0aWxsIGNoZWNrZWQgYW5kIGdlbmVyYXRlZCBtYW55IHdhcm5pbmdz
LgotCi0gICAgICAgIE5vdywgZXdrX3ZpZXdfZnJhbWVfbWFpbl9jbGVhcmVkIGlzIG5vdCByZXF1
aXJlZCBiZWNhdXNlIGZsdXNoIGlzIGFscmVhZHkKLSAgICAgICAgbWVhbmluZ2xlc3MgYW5kIG90
aGVycyBhcmUgY292ZXJlZCBieSBld2tfZnJhbWVfdmlld19jcmVhdGVfZm9yX3ZpZXcuCi0gICAg
ICAgIFNvLCB0aGlzIHBhdGNoIHJlbW92ZWQgZXdrX3ZpZXdfZnJhbWVfbWFpbl9jbGVhcmVkIGFu
ZCByZWxhdGVkIGNvZGUgd2hpY2ggaXMgYWxyZWFkeSBkZWFkLgotCi0gICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29yZTo6RnJh
bWVMb2FkZXJDbGllbnRFZmw6OnRyYW5zaXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2UpOgotICAg
ICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChld2tfdmlld19mcmFtZV9tYWluX2Ns
ZWFyZWQpOiBEZWxldGVkLgotICAgICAgICAoZXdrX3ZpZXdfZGlkX2ZpcnN0X3Zpc3VhbGx5X25v
bmVtcHR5X2xheW91dCk6IERlbGV0ZWQuCi0gICAgICAgIChld2tfdmlld19kaXNwYXRjaF9kaWRf
ZmluaXNoX2xvYWRpbmcpOiBEZWxldGVkLgotICAgICAgICAqIGV3ay9ld2tfdmlldy5oOiBSZW1v
dmVkIGZsdXNoIHNtYXJ0IG1ldGhvZC4KLQotMjAxNC0wNC0xOCAgUGhpbGlwcGUgTm9ybWFuZCAg
PHBub3JtYW5kQGlnYWxpYS5jb20+Ci0KLSAgICAgICAgUmVtb3ZlIE5FVFdPUktfSU5GTyBzdXBw
b3J0Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzE4
NDEKLQotICAgICAgICBSZXZpZXdlZCBieSBHeXV5b3VuZyBLaW0uCi0KLSAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9OZXR3b3JrSW5mb0NsaWVudEVmbC5jcHA6IFJlbW92ZWQuCi0gICAgICAgICog
V2ViQ29yZVN1cHBvcnQvTmV0d29ya0luZm9DbGllbnRFZmwuaDogUmVtb3ZlZC4KLSAgICAgICAg
KiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoX2V3a192aWV3X3ByaXZfbmV3KToKLQotMjAx
NC0wNC0xNyAgSmVvbmdldW4gS2ltICA8amVfanVsaWUua2ltQHNhbXN1bmcuY29tPgotCi0gICAg
ICAgIFtFRkxdW1dLMV0gU1NMIFN0cmljdCBpcyBzZXQgYWNjb3JkaW5nIHRvIGlucHV0IHBhcmFt
ZXRlci4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEz
MTczNC4KLQotICAgICAgICBSZXZpZXdlZCBieSBHeXV5b3VuZyBLaW0uCi0KLSAgICAgICAgVGhl
IHBhcmFtLCAnZW5hYmxlJywgc2hvdWxkIGJlIHVzZWQgZm9yIHNldHRpbmcgU1NMLVN0cmljdC4K
LSAgICAgICAgSWYgaXQgaXMgdHJ1ZSwgU1NMU3RyaWN0IGlzIHNldC4gT3RoZXJ3aXNlLCBTU0xT
dHJpY3QgaXMgdW5zZXQuCi0KLSAgICAgICAgKiBld2svZXdrX25ldHdvcmsuY3BwOgotICAgICAg
ICAoZXdrX25ldHdvcmtfdGxzX2NlcnRpZmljYXRlX2NoZWNrX3NldCk6Ci0KLTIwMTQtMDQtMTcg
IEh5b3dvbiBLaW0gIDxodzEwMDgua2ltQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxdIFJl
bW92ZSBkZXByZWNhdGVkIGV3a19wYWludCBjb2RlLgotICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMxMjY2Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgR3l1
eW91bmcgS2ltLgotCi0gICAgICAgIGV3a19wYWludCByZWxhdGVkIGNvZGUgd2FzIGRlcHJlY2F0
ZWQgc2luY2UgcjE2NjYzNy4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVk
Q29tcG9zaXRpbmdDb250ZXh0RWZsLmNwcDoKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJv
bWVDbGllbnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZsOjppbnZh
bGlkYXRlUm9vdFZpZXcpOiBEZWxldGVkLgotICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50
RWZsOjppbnZhbGlkYXRlQ29udGVudHNBbmRSb290Vmlldyk6IERlbGV0ZWQuCi0gICAgICAgIChX
ZWJDb3JlOjpDaHJvbWVDbGllbnRFZmw6OmludmFsaWRhdGVDb250ZW50c0ZvclNsb3dTY3JvbGwp
OiBEZWxldGVkLgotICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZsOjpzY3JvbGwpOiBE
ZWxldGVkLgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oOgotICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEVmbC5jcHA6Ci0gICAgICAgICog
ZXdrL2V3a19wYWludF9jb250ZXh0LmNwcDogUmVtb3ZlZC4KLSAgICAgICAgKiBld2svZXdrX3Bh
aW50X2NvbnRleHRfcHJpdmF0ZS5oOiBSZW1vdmVkLgotICAgICAgICAqIGV3ay9ld2tfdmlldy5j
cHA6Ci0gICAgICAgIChfZXdrX3ZpZXdfcHJpdl9kZWwpOgotICAgICAgICAoX2V3a192aWV3X3Nt
YXJ0X2NhbGN1bGF0ZSk6Ci0gICAgICAgIChld2tfdmlld19zbWFydF9zZXQpOgotICAgICAgICAo
X2V3a192aWV3X3JlcGFpbnRzX3Jlc2l6ZSk6IERlbGV0ZWQuCi0gICAgICAgIChfZXdrX3ZpZXdf
cmVwYWludF9hZGQpOiBEZWxldGVkLgotICAgICAgICAoX2V3a192aWV3X3JlcGFpbnRzX2ZsdXNo
KTogRGVsZXRlZC4KLSAgICAgICAgKF9ld2tfdmlld19zbWFydF9mbHVzaCk6IERlbGV0ZWQuCi0g
ICAgICAgIChld2tfdmlld19yZXBhaW50c19wb3ApOiBEZWxldGVkLgotICAgICAgICAoZXdrX3Zp
ZXdfcmVwYWludF9hZGQpOiBEZWxldGVkLgotICAgICAgICAoZXdrX3ZpZXdfcGFpbnQpOiBEZWxl
dGVkLgotICAgICAgICAoZXdrX3ZpZXdfcGFpbnRfY29udGVudHMpOiBEZWxldGVkLgotICAgICAg
ICAoZXdrX3ZpZXdfcmVwYWludCk6IERlbGV0ZWQuCi0gICAgICAgIChld2tfdmlld19zY3JvbGwp
OiBEZWxldGVkLgotICAgICAgICAoZXdrX3ZpZXdfdGlsZWRfYmFja2luZ19zdG9yZV9pbnZhbGlk
YXRlKTogRGVsZXRlZC4KLSAgICAgICAgKiBld2svZXdrX3ZpZXdfcHJpdmF0ZS5oOgotCi0yMDE0
LTA0LTE2ICBKZW9uZ2V1biBLaW0gIDxqZV9qdWxpZS5raW1Ac2Ftc3VuZy5jb20+Ci0KLSAgICAg
ICAgW0VGTF0gQ2xlYW51cCB0aGUgYnVpbGQgZnJvbSB1bnVzZWQgcGFyYW1ldGVycyBpbiBXZWJL
aXQtZWZsLgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTMxNjc3LgotCi0gICAgICAgIFJldmlld2VkIGJ5IEd5dXlvdW5nIEtpbS4KLQotICAgICAgICBD
aGFuZ2VkIEFTU0VSVCB0byBBU1NFUlRfVU5VU0VEIGlmIGl0J3MganVzdCB1c2VkIGZvciBBU1NF
UlQuCi0KLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoZXdrX3ZpZXdfc2Ny
b2xsKToKLQotMjAxNC0wNC0xNSAgSHlvd29uIEtpbSAgPGh3MTAwOC5raW1Ac2Ftc3VuZy5jb20+
Ci0KLSAgICAgICAgW0VGTF0gRml4IHByb2JsZW1zIHdpdGggdGhlIHBpeGVsIGR1bXAuCi0gICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzEyNjUKLQotICAg
ICAgICBSZXZpZXdlZCBieSBHeXV5b3VuZyBLaW0uCi0KLSAgICAgICAgUGFpbnRpbmcgYW5kIGNv
bXBvc2l0aW5nIHBhdGhzIG9mIFdlYktpdC1FRkwgd2VyZSB0b3RhbGx5IG1vZGlmaWVkIGZyb20g
cjE2Njc2OC4KLSAgICAgICAgSG93ZXZlciBwaXhlbCBkdW1wIGNvZGVzIHN0aWxsIGNhbGwgZGVw
cmVjYXRlZCBmdW5jdGlvbnMgbGlrZSBld2tfdmlld19wYWludCgpLAotICAgICAgICB3aGljaCBj
YXVzZXMgdGhhdCBub3RoaW5nIGlzIGRyYXduLgotCi0gICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBu
ZXcgbWVtYmVyIGZ1bmN0aW9ucyB0byBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCB0byBz
dXBwb3J0IHBpeGVsIGR1bXAuCi0gICAgICAgIE9uZSBvZiBuZXcgZnVuY3Rpb25zIGlzIEFjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjpleHRyYWN0SW1hZ2VEYXRhKCksCi0gICAgICAgIHdo
aWNoIHJlcGxhY2VzIGRlcHJlY2F0ZWQgZnVuY3Rpb24gY2FsbHMuIEJlc2lkZXMgdGhlIGV4dHJh
Y3RJbWFnZURhdGEoKSBpcyBpbnZva2VkIGJ5Ci0gICAgICAgIGV3a192aWV3X3NjcmVlbnNob3Rf
Y29udGVudHNfZ2V0KCkgaW4gb3JkZXIgdG8gdGFrZSB0aGUgdmlzaWJsZSBjb250ZW50IGRpc3Bs
YXllZCBvbiB0aGUgRUZMIHdlYnZpZXcuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9BY2Nl
bGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQp
OgotICAgICAgICBDcmVhdGUgVGV4dHVyZU1hcHBlciB3aXRoIGEgcHJvcGVyIGJhY2tlbmQuCi0g
ICAgICAgIChXZWJDb3JlOjpBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6Zmx1c2hQZW5k
aW5nTGF5ZXJDaGFuZ2VzKToKLSAgICAgICAgUmV2aXNlIGEgbnVsbCBjaGVjayBmb3IgbV9yb290
TGF5ZXIuCi0gICAgICAgIChXZWJDb3JlOjpBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6
cGFpbnRUb0dyYXBoaWNzQ29udGV4dCk6Ci0gICAgICAgIFJlbW92ZSBhIGNyZWF0aW9uIGNoZWNr
IGZvciBUZXh0dXJlTWFwcGVyR0wuCi0gICAgICAgIChXZWJDb3JlOjpBY2NlbGVyYXRlZENvbXBv
c2l0aW5nQ29udGV4dDo6cGFpbnRUb0N1cnJlbnRHTENvbnRleHQpOgotICAgICAgICBEaXR0by4K
LSAgICAgICAgKFdlYkNvcmU6OkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjpleHRyYWN0
SW1hZ2VEYXRhKToKLSAgICAgICAgRXh0cmFjdCBpbWFnZSBkYXRhIGZyb20gdGhlIHZpZXcgYW5k
IGNvcHkgaXQgdG8gZ2l2ZW4gRXZhc19PYmplY3QuCi0gICAgICAgIChXZWJDb3JlOjpBY2NlbGVy
YXRlZENvbXBvc2l0aW5nQ29udGV4dDo6Z2V0SW1hZ2VEYXRhKToKLSAgICAgICAgR2V0IGltYWdl
IGRhdGEgZnJvbSB0aGUgdmlldyBhbmQgcmV0dXJuIGl0IGFzIGNhaXJvX3N1cmZhY2VfdCBvbiBz
b2Z0d2FyZSBtb2RlLgotICAgICAgICAoV2ViQ29yZTo6QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Nv
bnRleHQ6OmdldEltYWdlRGF0YUdMKToKLSAgICAgICAgR2V0IGltYWdlIGRhdGEgZnJvbSB0aGUg
dmlldyBhbmQgcmV0dXJuIGl0IGFzIGNhaXJvX3N1cmZhY2VfdCBvbiBHTCBtb2RlLgotICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0RWZsLmg6Ci0g
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcDoKLSAg
ICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6Zm9yY2VQYWludCk6IFJlcGFpbnQgdGhl
IGVudGlyZSB3ZWJ2aWV3IGJlZm9yZSBwaXhlbCBkdW1wLgotICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5oOgotICAgICAgICAqIGV3ay9ld2tfdmlldy5j
cHA6Ci0gICAgICAgIChld2tfdmlld19tYXJrX2Zvcl9zeW5jKTogUmVtb3ZlIGFuIHVubmVjZXNz
YXJ5IGxpbmUuCi0gICAgICAgIChld2tfdmlld19mb3JjZV9wYWludCk6IENhbGwgZmx1c2hBbmRS
ZW5kZXJMYXllcnMoKS4KLSAgICAgICAgKGV3a192aWV3X3NjcmVlbnNob3RfY29udGVudHNfZ2V0
KTogUmVtb3ZlICdzY2FsZScgcGFyYW1ldGVyIGFuZCByZXBsYWNlIGV3a192aWV3X3BhaW50KCkK
LSAgICAgICAgd2l0aCBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6ZXh0cmFjdEltYWdl
RGF0YSgpLgotICAgICAgICAqIGV3ay9ld2tfdmlldy5oOgotICAgICAgICAqIGV3ay9ld2tfdmll
d19wcml2YXRlLmg6Ci0gICAgICAgICogdGVzdHMvdGVzdF9ld2tfdmlldy5jcHA6Ci0gICAgICAg
IChURVNUX0YpOgotCi0yMDE0LTA0LTEyICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBj
cmYuY2Fub24uZnI+Ci0KLSAgICAgICAgW1NPVVBdIExpYnNvdXAgaW50ZXJuYWwgY3JlZGVudGlh
bCBzZXR0aW5nIHNob3VsZCBiZSBjb250cm9sbGVkIGJ5IGxvYWRlciBkZWNpc2lvbgotICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMwOTYzCi0KLSAgICAg
ICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNs
aWVudEVmbDo6c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UpOiBTaW1pbGFybHkgdG8gR1RLLCBs
ZXQgc291cC9sb2FkZXIgbGF5ZXIgaGFuZGxlIHdoZW4gdG8gdXNlIGNyZWRlbnRpYWwgc3RvcmFn
ZS4gUmV0dXJuIGFsd2F5cyB0cnVlICAKLQotMjAxNC0wNC0wOCAgUnl1YW4gQ2hvaSAgPHJ5dWFu
LmNob2lAc2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgVW5yZXZpZXdlZCBFRkwgYnVpbGQgZml4IGF0
dGVtcHQgc2luY2UgcjE2Njk1NgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHJhZ0NsaWVu
dEVmbC5jcHA6IFJlbmFtZSBDbGlwYm9hcmQgdG8gRGF0YVRyYW5zZmVyLgotICAgICAgICAoV2Vi
Q29yZTo6RHJhZ0NsaWVudEVmbDo6d2lsbFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKToKLSAgICAg
ICAgKFdlYkNvcmU6OkRyYWdDbGllbnRFZmw6OnN0YXJ0RHJhZyk6IERpdHRvLgotICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0RyYWdDbGllbnRFZmwuaDoKLQotMjAxNC0wNC0wOCAgR3l1eW91bmcg
S2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgotCi0gICAgICAgIENoYW5nZSBOYXZpZ2F0
b3JDb250ZW50VXRpbHMgY2xpZW50IG93bmVyc2hpcCBmcm9tIHBvcnQgc2lkZSB0byBOYXZpZ2F0
b3JDb250ZW50VXRpbHMKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEzMTI5OQotCi0gICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgotCi0gICAg
ICAgIEVGTCBhbmQgR1RLIHBvcnRzIGhhdmUgbWFuYWdlZCBvd24gY2xpZW50IG9mIE5hdmlnYXRv
ckNvbnRlbnRVdGlscyB0aG91Z2ggaXQgaXMgb25seSBwYXNzZWQgdG8KLSAgICAgICAgTmF2aWdh
dG9yQ29udGVudFV0aWxzLiBUaGUgTmF2aWdhdG9yQ29udGVudFV0aWxzIGhhcyB1c2VkIHRoZSBj
bGllbnQgdG8gY2FsbCBwb3J0IGZ1bmN0aW9ucy4gU28sCi0gICAgICAgIHRoZXJlIGlzIG5vIHJl
YXNvbiBwb3J0IGltcGxlbWVudGF0aW9uIG5lZWRzIHRvIG1hbmFnZSB0aGUgb3duZXJzaGlwLiBU
byBtYW5hZ2UgdGhlIGNsaWVudCBpcwotICAgICAgICB1bm5lY2Vzc2FyeSB3b3JrIGluIGN1cnJl
bnQgaW1wbGVtZW50YXRpb24uCi0KLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAg
ICAoX2V3a192aWV3X3ByaXZfbmV3KToKLQotMjAxNC0wNC0wNyAgSHlvd29uIEtpbSAgPGh3MTAw
OC5raW1Ac2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgTW92ZSB0byB1c2luZyBzdGQ6OnVuaXF1ZV9w
dHIgZm9yIG9wZW5nbCwgdGV4bWFwLCB0cmFuc2Zvcm1zIGFuZCBlZmwgaW4gV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEzMTI3NgotCi0gICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgotCi0gICAg
ICAgIFJlcGxhY2UgdXNlcyBvZiBPd25QdHIgZm9yIFRleHR1cmVNYXBwZXIgaW4gQWNjZWxlcmF0
ZWRDb21wb3NpdGluZ0NvbnRleHRFZmwgd2l0aCBzdGQ6OnVuaXF1ZV9wdHIuCi0KLSAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dEVmbC5oOgotCi0y
MDE0LTA0LTA2ICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+Ci0KLSAg
ICAgICAgW0VGTF1bV0sxXSBBcHBseSBzdGQ6OnVuaXF1ZV9wdHI8PiB0byBOYXZpZ2F0b3JDb250
ZW50VXRpbHNDbGllbnRFZmwKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEzMDk1OAotCi0gICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgotCi0g
ICAgICAgIEFzIGEgc3RlcCBvZiByZXBsYWNpbmcgT3duUHRyIHdpdGggc3RkOjp1bmlxdWVfcHRy
LCB0aGlzIHBhdGNoIHJlcGxhY2VzCi0gICAgICAgIE93blB0ciB3aXRoIHRoZSBzdGQ6OnVuaXF1
ZV9wdHIgZm9yIE5hdmlnYXRvckNvbnRlbnRVdGlsc0NsaWVudEVmbC4KLQotICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L05hdmlnYXRvckNvbnRlbnRVdGlsc0NsaWVudEVmbC5jcHA6Ci0gICAgICAg
IChXZWJDb3JlOjpOYXZpZ2F0b3JDb250ZW50VXRpbHNDbGllbnRFZmw6OmNyZWF0ZSk6IERlbGV0
ZWQuCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvTmF2aWdhdG9yQ29udGVudFV0aWxzQ2xpZW50
RWZsLmg6Ci0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAgKF9ld2tfdmlld19w
cml2X25ldyk6Ci0KLTIwMTQtMDQtMDUgIFJ5dWFuIENob2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcu
Y29tPgotCi0gICAgICAgIFtFRkxdW1dLMV0gQXBwbHkgb3ZlcnJpZGUgYW5kIGZpbmFsIGtleXdv
cmQgZm9yIENocm9tZUNsaWVudEVmbAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTMxMjYxCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgR3l1eW91bmcgS2lt
LgotCi0gICAgICAgIFRoZXJlIGFyZSB1bm5lY2Vzc2FyeSB2aXJ0dWFsIG1ldGhvZHMgaW4gQ2hy
b21lQ2xpZW50RWZsLgotICAgICAgICBBbG1vc3QgbWV0aG9kcyBhcmUgYWxyZWFkeSByZW1vdmVk
IGZyb20gcGFyZW50IGNsYXNzIGFuZAotICAgICAgICB0aGUgb3RoZXJzIGRvZXMgbm90IG5lZWQg
dG8gYmUgdmlydHVhbCBtZXRob2QuCi0KLSAgICAgICAgVGhpcyBwYXRjaCByZW1vdmVkIHRoZW0g
YW5kIGFwcGxpZWQgb3ZlcnJpZGUgYW5kIGZpbmFsLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBv
cnQvQ2hyb21lQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEVm
bDo6c2NoZWR1bGVBbmltYXRpb24pOgotICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZs
OjpzZXJ2aWNlU2NyaXB0ZWRBbmltYXRpb25zKTogRGVsZXRlZC4KLSAgICAgICAgKFdlYkNvcmU6
OkNocm9tZUNsaWVudEVmbDo6Y2FuY2VsR2VvbG9jYXRpb25QZXJtaXNzaW9uRm9yRnJhbWUpOiBE
ZWxldGVkLgotICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZsOjppbnZhbGlkYXRlQ29u
dGVudHMpOiBEZWxldGVkLgotICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZsOjpjYW5j
ZWxHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0Rm9yRnJhbWUpOiBEZWxldGVkLgotICAgICAg
ICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZsOjppY29uRm9yRmlsZXMpOiBEZWxldGVkLgotICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oOgotICAgICAgICAoV2ViQ29y
ZTo6Q2hyb21lQ2xpZW50RWZsOjpzY3JvbGxSZWN0SW50b1ZpZXcpOiBEZWxldGVkLgotICAgICAg
ICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZsOjpudW1XaGVlbEV2ZW50SGFuZGxlcnNDaGFuZ2Vk
KTogRGVsZXRlZC4KLQotMjAxNC0wNC0wMyAgSHlvd29uIEtpbSAgPGh3MTAwOC5raW1Ac2Ftc3Vu
Zy5jb20+Ci0KLSAgICAgICAgW0VGTF0gU2hvdWxkIGZsdXNoIGFuZCByZW5kZXIgbGF5ZXJzIGFm
dGVyIHRoZSByb290IGxheWVyIGlzIGNoYW5nZWQuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzExMDgKLQotICAgICAgICBSZXZpZXdlZCBieSBHeXV5
b3VuZyBLaW0uCi0KLSAgICAgICAgSWYgdGhlcmUgaXMgbm8gdXBkYXRlIGV2ZW50IGFmdGVyIHJv
b3QgbGF5ZXIgaXMgY2hhbmdlZCwgb2xkIHdlYnZpZXcgY2FuIGJlIHNob3duLgotICAgICAgICBC
ZWNhdXNlIHRoZSBzeW5jVGltZXIgaXMgbm90IGJlaW5nIHRyaWdnZXJlZCBieSByb290IGxheWVy
IGNoYW5nZS4KLSAgICAgICAgV2Ugc2hvdWxkIGZsdXNoIGFuZCByZW5kZXIgbGF5ZXJzIGJ5IHN0
YXJ0aW5nIHN5bmNUaW1lciB3aGVuIHRoZSByb290IGxheWVyIGlzIGNoYW5nZWQuCi0KLSAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dEVmbC5jcHA6
Ci0gICAgICAgIChXZWJDb3JlOjpBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6c2V0Um9v
dEdyYXBoaWNzTGF5ZXIpOiBBZGQgbV9zeW5jVGltZXIuc3RhcnRPbmVTaG90KDApOwotICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0RWZsLmg6Ci0g
ICAgICAgIChXZWJDb3JlOjpBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6c2V0Um9vdEdy
YXBoaWNzTGF5ZXIpOiBNb3ZlIGltcGxlbWVudGF0aW9uIGZyb20gaGVhZGVyIHRvIHNvdXJjZS4K
LQotMjAxNC0wNC0wMiAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3VuZy5jb20+Ci0KLSAg
ICAgICAgW0VGTF1bV0sxXSBVc2UgRXZhc19Ub3VjaF9Qb2ludF9TdGF0ZSBpbnN0ZWFkIG9mIEV3
a19Ub3VjaF9Qb2ludF9UeXBlCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMzExNTEKLQotICAgICAgICBSZXZpZXdlZCBieSBHeXV5b3VuZyBLaW0uCi0K
LSAgICAgICAgTGlrZSBld2Via2l0Miwgd2UnZCBiZXRlciB0byB1c2UgRUZMIHR5cGUgaW5zdGVh
ZCBvZiBXZWJLaXQgc3BlY2lmaWMgdHlwZQotICAgICAgICBJbiBhZGRpdGlvbiwgY2hhbmdlZCB0
eXBlIG9mIGlkIGFzIGludCB0byBtYXRjaCB3aXRoIGV3ZWJraXQyLgotCi0gICAgICAgICogZXdr
L2V3a19mcmFtZS5oOiBSZXBsYWNlIEV3a19Ub3VjaF9Qb2ludF9UeXBlIHRvIEV2YXNfVG91Y2hf
UG9pbnRfU3RhdGUuCi0gICAgICAgICogZXdrL2V3a190b3VjaF9ldmVudC5jcHA6Ci0gICAgICAg
ICh0b1BsYXRmb3JtVG91Y2hQb2ludFN0YXRlKToKLQotMjAxNC0wNC0wMiAgTWFydGluIEhvY2sg
IDxtaG9ja0BhcHBsZS5jb20+Ci0KLSAgICAgICAgVW5pZnkgcHJpdmF0ZSBicm93c2luZyB3aXRo
IHNlc3Npb25zLgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTMwMDk5Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQWxleGV5IFByb3NrdXJ5YWtvdi4KLQot
ICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChfZXdrX3ZpZXdfcHJpdl9uZXcp
OiBDaGFuZ2UgV2ViQ29yZTo6U2V0dGluZ3M6OnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSB0byBQ
YWdlOjpzZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpLgotICAgICAgICAoZXdrX3ZpZXdfc2V0dGlu
Z19wcml2YXRlX2Jyb3dzaW5nX3NldCk6IENoYW5nZSBXZWJDb3JlOjpTZXR0aW5nczo6c2V0UHJp
dmF0ZUJyb3dzaW5nRW5hYmxlZCgpIHRvIFBhZ2U6OmVuYWJsZUxlZ2FjeVByaXZhdGVCcm93c2lu
ZygpLgotCi0yMDE0LTA0LTAyICBIeW93b24gS2ltICA8aHcxMDA4LmtpbUBzYW1zdW5nLmNvbT4K
LQotICAgICAgICBbRUZMXSBDb21wb3NpdGUgYWxsIGxheWVycyBpbnRvIG9uZSBldmFzX29iamVj
dCB1c2luZyBUZXh0dXJlTWFwcGVyLgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTMwOTY5Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgR3l1eW91bmcgS2lt
LgotCi0gICAgICAgIFRoZSBFRkwgcG9ydCB1c2VzIHR3byBldmFzX29iamVjdHMgdG8gcmVuZGVy
IHRoZSBlbnRpcmUgd2VicGFnZTogYmFja2luZ19zdG9yZSBhbmQgY29tcG9zaXRpbmdPYmplY3Qu
Ci0gICAgICAgIGJhY2tpbmdfc3RvcmUgaXMgdXNlZCB0byBwYWludCBhIG5vbi1jb21wb3NpdGVk
IGxheWVyIHdpdGggZXdrIGZ1bmN0aW9ucywKLSAgICAgICAgd2hlcmVhcyBjb21wb3NpdGluZ09i
amVjdCBpcyB1c2VkIHRvIHBhaW50IG90aGVyIGxheWVycyB3aXRoIFRleHR1cmVNYXBwZXIuCi0g
ICAgICAgIFRoZXNlIGV2YXNfb2JqZWN0cyBhcmUgZXZlbnR1YWxseSBjb21wb3NpdGVkIGludG8g
dGhlIHdpbmRvdyBidWZmZXIgYnkgRXZhcy4KLQotICAgICAgICBUaGlzIHBhdGNoIG1vdmVzIHRv
IHVzZSBvbmx5IG9uZSBldmFzX29iamVjdCBieSBpbnRlZ3JhdGluZyB0aGVzZSB0d28gZXZhc19v
YmplY3RzLAotICAgICAgICBhbmQgbWFrZXMgdGhhdCBUZXh0dXJlTWFwcGVyIGhhbmRsZXMgYWxs
IHJlbmRlcmluZyBwYXRocyBsaWtlIFdlYktpdDIuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3Jl
OjpBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Nv
bnRleHQpOgotICAgICAgICAoV2ViQ29yZTo6QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6
On5BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCk6Ci0gICAgICAgIChXZWJDb3JlOjpBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6cmVzaXplKToKLSAgICAgICAgKFdlYkNvcmU6OkFj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjpmbHVzaEFuZFJlbmRlckxheWVycyk6Ci0gICAg
ICAgIChXZWJDb3JlOjpBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6Zmx1c2hQZW5kaW5n
TGF5ZXJDaGFuZ2VzKToKLSAgICAgICAgKFdlYkNvcmU6OkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdD
b250ZXh0OjpwYWludFRvR3JhcGhpY3NDb250ZXh0KToKLSAgICAgICAgKFdlYkNvcmU6OkFjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjpwYWludFRvQ3VycmVudEdMQ29udGV4dCk6Ci0gICAg
ICAgIChXZWJDb3JlOjpBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6Y29tcG9zaXRlTGF5
ZXJzKToKLSAgICAgICAgKFdlYkNvcmU6OkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0Ojpp
bml0aWFsaXplKTogRGVsZXRlZC4KLSAgICAgICAgKFdlYkNvcmU6OkFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdDb250ZXh0OjpjYW5Db21wb3NpdGUpOiBEZWxldGVkLgotICAgICAgICAoV2ViQ29yZTo6
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OmNvbXBvc2l0ZUxheWVyc1RvQ29udGV4dCk6
IERlbGV0ZWQuCi0gICAgICAgIChXZWJDb3JlOjpBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4
dDo6YXR0YWNoUm9vdEdyYXBoaWNzTGF5ZXIpOiBEZWxldGVkLgotICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0RWZsLmg6Ci0gICAgICAgIChXZWJD
b3JlOjpBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6c2V0Um9vdEdyYXBoaWNzTGF5ZXIp
OgotICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChfZXdrX3ZpZXdfcHJpdl9u
ZXcpOgotICAgICAgICAoX2V3a192aWV3X2FjY2VsZXJhdGVkX2NvbXBvc2l0aW5nX2NiKToKLSAg
ICAgICAgKF9ld2tfdmlld19zbWFydF9hZGQpOgotICAgICAgICAoX2V3a192aWV3X3NtYXJ0X3Jl
c2l6ZSk6Ci0gICAgICAgIChfZXdrX3ZpZXdfc21hcnRfY2FsY3VsYXRlKToKLSAgICAgICAgKF9l
d2tfdmlld19zbWFydF9zaG93KToKLSAgICAgICAgKF9ld2tfdmlld19zbWFydF9oaWRlKToKLSAg
ICAgICAgKF9ld2tfdmlld19zbWFydF9mbHVzaCk6Ci0gICAgICAgIChfZXdrX3ZpZXdfc21hcnRf
em9vbV93ZWFrX3NldCk6Ci0gICAgICAgIChfZXdrX3ZpZXdfc21hcnRfem9vbV93ZWFrX3Ntb290
aF9zY2FsZV9zZXQpOgotICAgICAgICAoZXdrX3ZpZXdfYmdfY29sb3Jfc2V0KToKLSAgICAgICAg
KGV3a192aWV3X3Njcm9sbCk6Ci0gICAgICAgIChld2tfdmlld19yb290X2dyYXBoaWNzX2xheWVy
X3NldCk6Ci0gICAgICAgIChld2tfdmlld19tYXJrX2Zvcl9zeW5jKToKLSAgICAgICAgKF9ld2tf
dmlld19zY3JvbGxzX2ZsdXNoKTogRGVsZXRlZC4KLSAgICAgICAgKF9ld2tfdmlld19zY3JvbGxf
cHJvY2Vzcyk6IERlbGV0ZWQuCi0gICAgICAgIChfZXdrX3ZpZXdfc21hcnRfc2Nyb2xsc19wcm9j
ZXNzKTogRGVsZXRlZC4KLSAgICAgICAgKF9ld2tfdmlld19zbWFydF9yZXBhaW50c19wcm9jZXNz
KTogRGVsZXRlZC4KLSAgICAgICAgKGV3a192aWV3X3Njcm9sbHNfcHJvY2Vzcyk6IERlbGV0ZWQu
Ci0gICAgICAgIChfZXdrX3ZpZXdfYWNjZWxlcmF0ZWRfY29tcG9zaXRpbmdfY29udGV4dF9jcmVh
dGVfaWZfbmVlZGVkKTogRGVsZXRlZC4KLSAgICAgICAgKF9ld2tfdmlld19hY2NlbGVyYXRlZF9j
b21wb3NpdGluZ19vYmplY3RfY3JlYXRlX2lmX25lZWRlZCk6IERlbGV0ZWQuCi0gICAgICAgICog
ZXdrL2V3a192aWV3Lmg6Ci0KLTIwMTQtMDMtMjMgIEh5b3dvbiBLaW0gIDxodzEwMDgua2ltQHNh
bXN1bmcuY29tPgotCi0gICAgICAgIE1vdmUgYWxsIEVGTCB0eXBlZGVmcyBpbnRvIEVmbFR5cGVk
ZWZzLmguCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MzA1MTEKLQotICAgICAgICBSZXZpZXdlZCBieSBHeXV5b3VuZyBLaW0uCi0KLSAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9CYXR0ZXJ5Q2xpZW50RWZsLmg6IFJlbW92ZSBFRkwgdHlwZWRlZnMuCi0g
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmg6IERpdHRv
LgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5oOiBEaXR0by4KLSAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZU5ldHdvcmtpbmdDb250ZXh0RWZsLmg6IERpdHRv
LgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L05hdmlnYXRvckNvbnRlbnRVdGlsc0NsaWVudEVm
bC5oOiBEaXR0by4KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9Qcm9ncmVzc1RyYWNrZXJDbGll
bnRFZmwuaDogRGl0dG8uCi0KLTIwMTQtMDMtMjAgIEh5b3dvbiBLaW0gIDxodzEwMDgua2ltQHNh
bXN1bmcuY29tPgotCi0gICAgICAgIE1vdmUgdG8gdXNpbmcgc3RkOjp1bmlxdWVfcHRyIGZvciBF
Rkwgb2JqZWN0cy4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEyOTg1MwotCi0gICAgICAgIFJldmlld2VkIGJ5IEd5dXlvdW5nIEtpbS4KLQotICAgICAg
ICBFZmxVbmlxdWVQdHIgaXMgYSB0ZW1wbGF0ZSBhbGlhcyBvZiBzdGQ6OnVuaXF1ZV9wdHIKLSAg
ICAgICAgd2l0aCBhIGN1c3RvbSBkZWxldGVyIGZvciBlYWNoIEVmbCBPYmplY3RzLCB3aGljaCBp
cyBtb3RpdmF0ZWQgYnkgR1VuaXF1ZVB0ci4KLSAgICAgICAgVGhpcyBwYXRjaCByZXBsYWNlcyB1
c2VzIG9mIE93blB0ciBhbmQgUGFzc093blB0ciBmb3IgRWZsIG9iamVjdHMgd2l0aCBFZmxVbmlx
dWVQdHIuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5n
Q29udGV4dEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpBY2NlbGVyYXRlZENvbXBvc2l0aW5n
Q29udGV4dDo6aW5pdGlhbGl6ZSk6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0
ZWRDb21wb3NpdGluZ0NvbnRleHRFZmwuaDoKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9CYXR0
ZXJ5Q2xpZW50RWZsLmg6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVT
dXBwb3J0RWZsLmg6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmg6
Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVOZXR3b3JraW5nQ29udGV4dEVmbC5oOgot
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L05hdmlnYXRvckNvbnRlbnRVdGlsc0NsaWVudEVmbC5o
OgotICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChfZXdrX3ZpZXdfZWRpdG9y
X2NvbW1hbmRfc3RyaW5nX2dldCk6Ci0gICAgICAgICogdGVzdHMvVW5pdFRlc3RVdGlscy9FV0tU
ZXN0Vmlldy5jcHA6Ci0gICAgICAgIChFV0tVbml0VGVzdHM6OkVXS1Rlc3RWaWV3Ojppbml0KToK
LSAgICAgICAgKiB0ZXN0cy9Vbml0VGVzdFV0aWxzL0VXS1Rlc3RWaWV3Lmg6Ci0KLTIwMTQtMDMt
MTQgIE1hY2llaiBTdGFjaG93aWFrICA8bWpzQGFwcGxlLmNvbT4KLQotICAgICAgICBSZXBsYWNl
ICJBcHBsZSBDb21wdXRlciwgSW5jLiIgd2l0aCAiQXBwbGUgSW5jLiIgaW4gY29weXJpZ2h0IGhl
YWRlcnMKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEz
MDI3NgotICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTYyNjY5Mjc+Ci0KLSAgICAgICAgUmV2aWV3
ZWQgYnkgU2ltb24gRnJhc2VyLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xp
ZW50RWZsLmNwcDoKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9Db250ZXh0TWVudUNsaWVudEVm
bC5jcHA6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ29udGV4dE1lbnVDbGllbnRFZmwuaDoK
LSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EZXZpY2VNb3Rpb25DbGllbnRFZmwuY3BwOgotICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0RldmljZU9yaWVudGF0aW9uQ2xpZW50RWZsLmNwcDoKLSAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuaDoKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudEVmbC5jcHA6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRFZmwuaDoKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZU5ldHdvcmtp
bmdDb250ZXh0RWZsLmNwcDoKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZU5ldHdvcmtp
bmdDb250ZXh0RWZsLmg6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50
RWZsLmg6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvTmF2aWdhdG9yQ29udGVudFV0aWxzQ2xp
ZW50RWZsLmNwcDoKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9OYXZpZ2F0b3JDb250ZW50VXRp
bHNDbGllbnRFZmwuaDoKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9OZXR3b3JrSW5mb0NsaWVu
dEVmbC5jcHA6Ci0KLTIwMTQtMDMtMTIgIFNlcmdpbyBWaWxsYXIgU2VuaW4gIDxzdmlsbGFyQGln
YWxpYS5jb20+Ci0KLSAgICAgICAgUmVuYW1lIERFRklORV9TVEFUSUNfTE9DQUwgdG8gREVQUkVD
QVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMjk2MTIKLQotICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxl
ci4KLQotICAgICAgICBGb3IgbmV3IGNvZGUgdXNlIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxUPiBp
bnN0ZWFkLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzRWZs
LmNwcDoKLSAgICAgICAgKFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6aW5pdGlhbGl6ZSk6Ci0gICAg
ICAgICogZXdrL2V3a19tYWluLmNwcDoKLSAgICAgICAgKHRyYWNrZXJDbGllbnQpOgotCi0yMDE0
LTAzLTEyICBCcmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgotCi0gICAgICAgIFdlYiBJbnNw
ZWN0b3I6IFJlbW92ZSB1bnVzZWQgY2FsbElkIHBhcmFtZXRlciBmcm9tIGV2YWx1YXRlSW5XZWJJ
bnNwZWN0b3IKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEyOTc0NAotCi0gICAgICAgIFJldmlld2VkIGJ5IFRpbW90aHkgSGF0Y2hlci4KLQotICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHA6Ci0gICAgICAg
IChEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OmV2YWx1YXRlSW5XZWJJbnNwZWN0b3IpOgotICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5oOgotCi0yMDE0
LTAzLTEyICBIeW93b24gS2ltICA8aHcxMDA4LmtpbUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBb
RUZMXSBSZXZpc2UgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VmbCBpbXBsZW1lbnRhdGlvbi4KLSAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDA3MgotCi0g
ICAgICAgIFJldmlld2VkIGJ5IEd5dXlvdW5nIEtpbS4KLQotICAgICAgICBUaGlzIHBhdGNoIHJl
dmlzZXMgdGhlIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFZmwgY2xhc3MgaW1wbGVtZW50YXRpb24K
LSAgICAgICAgc2ltaWxhciB3aXRoIGd0ayBwb3J0LgotICAgICAgICBBbmQgYWNjZWxlcmF0ZWQg
Y29tcG9zaXRpbmcgd2lsbCBiZSBlbmFibGVkIGJ5IGRlZmF1bHQgb24gV0sxIGVmbC4KLQotICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0RWZsLmNw
cDoKLSAgICAgICAgKFdlYkNvcmU6OkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjpBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCk6Ci0gICAgICAgIChXZWJDb3JlOjpBY2NlbGVyYXRl
ZENvbXBvc2l0aW5nQ29udGV4dDo6aW5pdGlhbGl6ZSk6Ci0gICAgICAgIChXZWJDb3JlOjpBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6c3luY0xheWVycyk6Ci0gICAgICAgIChXZWJDb3Jl
OjpBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6cmVzaXplKToKLSAgICAgICAgKFdlYkNv
cmU6OkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjpjYW5Db21wb3NpdGUpOgotICAgICAg
ICAoV2ViQ29yZTo6QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OmZsdXNoQW5kUmVuZGVy
TGF5ZXJzKToKLSAgICAgICAgKFdlYkNvcmU6OkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0
OjpmbHVzaFBlbmRpbmdMYXllckNoYW5nZXMpOgotICAgICAgICAoV2ViQ29yZTo6QWNjZWxlcmF0
ZWRDb21wb3NpdGluZ0NvbnRleHQ6OmNvbXBvc2l0ZUxheWVyc1RvQ29udGV4dCk6Ci0gICAgICAg
IChXZWJDb3JlOjpBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6YXR0YWNoUm9vdEdyYXBo
aWNzTGF5ZXIpOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRp
bmdDb250ZXh0RWZsLmg6Ci0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAgKF9l
d2tfdmlld19wcml2X25ldyk6Ci0gICAgICAgIChfZXdrX3ZpZXdfYWNjZWxlcmF0ZWRfY29tcG9z
aXRpbmdfY2IpOgotICAgICAgICAoX2V3a192aWV3X2FjY2VsZXJhdGVkX2NvbXBvc2l0aW5nX2Nv
bnRleHRfY3JlYXRlX2lmX25lZWRlZCk6Ci0KLTIwMTQtMDMtMTAgIEh5b3dvbiBLaW0gIDxodzEw
MDgua2ltQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxdIE1vZGlmeSBhY2NlbGVyYXRlZCBj
b21wb3NpdGluZyByZWxhdGVkIGZ1bmN0aW9ucyBpbiBld2tfdmlldy4KLSAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyOTg3NQotCi0gICAgICAgIFJldmll
d2VkIGJ5IEd5dXlvdW5nIEtpbS4KLQotICAgICAgICBUaGUgY29tcG9zaXRpbmcgb2JqZWN0IHdp
bGwgYmUgY3JlYXRlZCB3aGVuIHJvb3QgbGF5ZXIgaXMgYXR0YWNoZWQuCi0gICAgICAgIFNvIHdl
IGRvbid0IG5lZWQgdG8gZXhwb3NlIHRoZSBjcmVhdGUgZnVuY3Rpb24uCi0gICAgICAgIEFuZCB0
aGlzIHBhdGNoIGFkZHMgc2hvdygpLCBoaWRlKCkgYW5kIHJlc2l6ZSgpIGZvciBjb21wb3NpdGlu
ZyBvYmplY3QuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0
aW5nQ29udGV4dEVmbC5oOiBtb3ZlIHJlc2l6ZSgpIHRvIHB1YmxpYy4KLSAgICAgICAgKiBld2sv
ZXdrX3ZpZXcuY3BwOgotICAgICAgICAoX2V3a192aWV3X3NtYXJ0X3Jlc2l6ZSk6IGFkZCB0byBy
ZXNpemUgdGhlIGNvbXBvc2l0aW5nIG9iamVjdC4KLSAgICAgICAgKF9ld2tfdmlld19zbWFydF9z
aG93KTogYWRkIHRvIHNob3cgdGhlIGNvbXBvc2l0aW5nIG9iamVjdC4KLSAgICAgICAgKF9ld2tf
dmlld19zbWFydF9oaWRlKTogYWRkIHRvIGhpZGUgdGhlIGNvbXBvc2l0aW5nIG9iamVjdC4KLSAg
ICAgICAgKF9ld2tfdmlld19hY2NlbGVyYXRlZF9jb21wb3NpdGluZ19jb250ZXh0X2NyZWF0ZV9p
Zl9uZWVkZWQpOgotICAgICAgICBtb2RpZnkgdGhlIGNyZWF0aW9uIGZvciB0aGUgY29tcG9zaXRp
bmcgb2JqZWN0LgotICAgICAgICAoX2V3a192aWV3X2FjY2VsZXJhdGVkX2NvbXBvc2l0aW5nX29i
amVjdF9jcmVhdGVfaWZfbmVlZGVkKToKLSAgICAgICAgYWRkIGEgcmV0dXJuIHZhbHVlLgotICAg
ICAgICAoZXdrX3ZpZXdfcm9vdF9ncmFwaGljc19sYXllcl9zZXQpOgotICAgICAgICBJZiByb290
IGxheWVyIGlzIG5vdCAwLCB3ZSBjcmVhdGUgdGhlIGNvbXBvc2l0aW5nIG9iamVjdCBhbmQgQWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuCi0gICAgICAgICogZXdrL2V3a192aWV3X3ByaXZh
dGUuaDogcmVtb3ZlIHRvIGV4cG9zZSB0aGUgY29tcG9zaXRpbmcgb2JqZWN0IGNyZWF0aW9uIEFQ
SS4KLQotMjAxNC0wMy0wNyAgSHlvd29uIEtpbSAgPGh3MTAwOC5raW1Ac2Ftc3VuZy5jb20+Ci0K
LSAgICAgICAgW0VGTF0gUmVwbGFjZSBHcmFwaGljc0NvbnRleHQzRCB3aXRoIEV2YXNfR0wgaW4g
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjk2NzYKLQotICAgICAgICBSZXZpZXdlZCBieSBHeXV5
b3VuZyBLaW0uCi0KLSAgICAgICAgVGV4dHVyZU1hcHBlckdMIGhhcyBpdHMgb3duIEdyYXBoaWNz
Q29udGV4dDNEIGNyZWF0ZWQgYnkgY3JlYXRlRm9yQ3VycmVudEdMQ29udGV4dCgpLgotICAgICAg
ICBTbyBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCBkb2Vzbid0IG5lZWQgdG8gY3JlYXRl
IGFuZCBzZXQgaXQgdG8gVGV4dHVyZU1hcHBlckdMLgotCi0gICAgICAgIFdlIG5vdyBzaG91bGQg
ZG8gJ21ha2VDdXJyZW50Q29udGV4dCcgd2l0aCBhIHBsYXRmb3JtIHNwZWNpZmljIGNvbnRleHQg
YmVmb3JlIGNyZWF0ZUZvckN1cnJlbnRHTENvbnRleHQoKS4KLSAgICAgICAgVGhpcyBwYXRjaCBy
ZW1vdmVzIEdyYXBoaWNzQ29udGV4dDNEIHJlbGF0ZWQgY29kZXMgaW4gQWNjZWxlcmF0ZWRDb21w
b3NpdGluZ0NvbnRleHQKLSAgICAgICAgYW5kIGFkZHMgRXZhc0dMQ29udGV4dC9TdXJmYWNlIHRv
IGl0IGluc3RlYWQuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBv
c2l0aW5nQ29udGV4dEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpBY2NlbGVyYXRlZENvbXBv
c2l0aW5nQ29udGV4dDo6aW5pdGlhbGl6ZSk6Ci0gICAgICAgIChXZWJDb3JlOjpBY2NlbGVyYXRl
ZENvbXBvc2l0aW5nQ29udGV4dDo6cmVzaXplKToKLSAgICAgICAgKFdlYkNvcmU6OkFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdDb250ZXh0OjpyZW5kZXJMYXllcnMpOgotICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0RWZsLmg6Ci0gICAgICAgICogZXdr
L2V3a192aWV3LmNwcDoKLSAgICAgICAgKiBld2svZXdrX3ZpZXdfcHJpdmF0ZS5oOgotCi0yMDE0
LTAzLTA0ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+Ci0KLSAgICAgICAgRW5hYmxl
IGRldmljZSBwaXhlbCByZXBhaW50IHJlY3QgdHJhY2tpbmcuCi0gICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjk3MTIKLQotICAgICAgICBSZXZpZXdlZCBi
eSBTaW1vbiBGcmFzZXIuCi0KLSAgICAgICAgVHJhY2tlZCByZXBhaW50IHJlY3RzIGFyZSBkZXZp
Y2UgcGl4ZWwgc25hcHBlZCBub3cgdG8gc3VwcG9ydCBoaURQSSB0ZXN0IGNhc2VzLgotCi0gICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcDoKLSAgICAg
ICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6dHJhY2tlZFJlcGFpbnRSZWN0cyk6Ci0KLTIw
MTQtMDItMjUgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KLQotICAgICAg
ICBHZXQgcmlkIG9mIFZpc2l0ZWRMaW5rU3RyYXRlZ3kKLSAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyOTMyNAotCi0gICAgICAgIFJldmlld2VkIGJ5IERh
biBCZXJuc3RlaW4uCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdp
ZXNFZmwuY3BwOgotICAgICAgICAoUGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpnZXRQbHVnaW5JbmZv
KToKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNFZmwuaDoKLQot
MjAxNC0wMi0yNCAgUmVuYXRhIEhvZG92YW4gIDxyaG9kb3Zhbi51LXN6ZWdlZEBwYXJ0bmVyLnNh
bXN1bmcuY29tPgotCi0gICAgICAgIEdldCByaWQgb2YgdGhlIHVudXNlZCAnaW1tZWRpYXRlJyBw
YXJhbWV0ZXJzIGZyb20gcmVwYWludCByZWxhdGVkIGZ1bmN0aW9ucwotICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI5MTExCi0KLSAgICAgICAgUmV2aWV3
ZWQgYnkgU2ltb24gRnJhc2VyLgotCi0gICAgICAgIFJlbW92aW5nIHRoZSAnaW1tZWRpYXRlJyBw
YXJhbWV0ZXJzIGZyb20gcmVwYWludCByZWxhdGVkIGZ1bmN0aW9ucyAtIGFjY29yaW5nCi0gICAg
ICAgIHRvIHRoZSBGSVhNRSBpbiBSZW5kZXJWaWV3OjpyZXBhaW50Vmlld1JlY3RhbmdsZSgpIC0g
c2luY2UgdGhleSBoYXZlIG5vIGVmZmVjdC4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0No
cm9tZUNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRFZmw6Omlu
dmFsaWRhdGVDb250ZW50cyk6Ci0gICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRFZmw6Omlu
dmFsaWRhdGVSb290Vmlldyk6Ci0gICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRFZmw6Omlu
dmFsaWRhdGVDb250ZW50c0FuZFJvb3RWaWV3KToKLSAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNs
aWVudEVmbDo6aW52YWxpZGF0ZUNvbnRlbnRzRm9yU2xvd1Njcm9sbCk6Ci0gICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmg6Ci0KLTIwMTQtMDItMjMgIEd5dXlvdW5nIEtp
bSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBDaGFuZ2UgYSB1cmwgcGFy
YW1ldGVyIHR5cGUgd2l0aCBVUkwgaW4gTmF2aWdhdG9yQ29udGVudFV0aWxzCi0gICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjkyMDIKLQotICAgICAgICBS
ZXZpZXdlZCBieSBTYW0gV2VpbmlnLgotCi0gICAgICAgIEl0IHdvdWxkIGJlIGdvb2QgaWYgd2Ug
dXNlICpVUkwqIGZvciB1cmwgcGFyYW1ldGVycyBpbnN0ZWFkIG9mIHVzaW5nIFN0cmluZy4KLQot
ICAgICAgICBNZXJnZSBmcm9tIGJsaW5rLiBodHRwczovL3NyYy5jaHJvbWl1bS5vcmcvdmlld3Zj
L2JsaW5rP3ZpZXc9cmV2JnJldmlzaW9uPTE2NTQ1OC4KLQotICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L05hdmlnYXRvckNvbnRlbnRVdGlsc0NsaWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3Jl
OjpOYXZpZ2F0b3JDb250ZW50VXRpbHNDbGllbnRFZmw6OnJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVy
KToKLSAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvckNvbnRlbnRVdGlsc0NsaWVudEVmbDo6aXNQ
cm90b2NvbEhhbmRsZXJSZWdpc3RlcmVkKToKLSAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvckNv
bnRlbnRVdGlsc0NsaWVudEVmbDo6dW5yZWdpc3RlclByb3RvY29sSGFuZGxlcik6Ci0gICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvTmF2aWdhdG9yQ29udGVudFV0aWxzQ2xpZW50RWZsLmg6Ci0KLTIw
MTQtMDItMTcgIFNlcmdpbyBDb3JyZWlhICA8c2VyZ2lvLmNvcnJlaWFAb3BlbmJvc3NhLm9yZz4K
LQotICAgICAgICBSZXBsYWNlIHVzZXMgb2YgUGFzc093blB0ci9Pd25QdHIgd2l0aCBzdGQ6OnVu
aXF1ZV9wdHIgaW4gV2ViQ29yZS9pbnNwZWN0b3IKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEyODY4MQotCi0gICAgICAgIFJldmlld2VkIGJ5IFRpbW90
aHkgSGF0Y2hlci4KLQotICAgICAgICBBbm90aGVyIHN0ZXAgdG93YXJkcyBnZXR0aW5nIHJpZCBv
ZiBQYXNzT3duUHRyL093blB0ciwgbm93IHRhcmdldGluZwotICAgICAgICBXZWJDb3JlL2luc3Bl
Y3Rvci8qLiBCZXNpZGVzIGZpbGVzIGluIHRoZXJlLCBhIGZldyBvdGhlciBmaWxlcyBpbgotICAg
ICAgICBKYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IsIFdlYktpdC8sIFdlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC8KLSAgICAgICAgYW5kIFdlYkNvcmUvdGVzdGluZyB3ZXJlIHRvdWNo
ZWQuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRFZmwuY3BwOgot
Ci0yMDE0LTAyLTE1ICBSeXVhbiBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KLQotICAg
ICAgICBbRUZMXVtXSzFdIERvIG5vdCBpbmNsdWRlIGNhaXJvIGhlYWRlciBpbiB0aGUgcHVibGlj
IGhlYWRlcnMKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEyODc3OQotCi0gICAgICAgIFJldmlld2VkIGJ5IEd5dXlvdW5nIEtpbS4KLQotICAgICAgICBB
bHRob3VnaCBld2Via2l0IHVzZWQgY2Fpcm8gaW50ZXJuYWxseSwgaXQncyBub3QgZ29vZCBmb3Ig
RUZMIGRldmVsb3BlcnMKLSAgICAgICAgdG8gdXNlIGl0LgotICAgICAgICBJbmRlZWQsIGFsbW9z
dCBBUElzIHdoaWNoIHJldHVybnMgY2Fpcm9fc3VyZmFjZSBhcmUgZHVwbGljYXRlZCB3aXRoIG90
aGVyIEFQSXMKLSAgICAgICAgd2hpY2ggcmV0dXJucyBldmFzX29iamVjdC4KLQotICAgICAgICAq
IGV3ay9ld2tfaGlzdG9yeS5jcHA6Ci0gICAgICAgIFJlbW92ZWQgZXdrX2hpc3RvcnlfaXRlbV9p
Y29uX3N1cmZhY2VfZ2V0LgotICAgICAgICBld2tfaGlzdG9yeV9pdGVtX2ljb25fb2JqZWN0X2Fk
ZCB3aWxsIGJlIHVzZWQgaW5zdGVhZC4KLSAgICAgICAgKiBld2svZXdrX2hpc3RvcnkuaDoKLSAg
ICAgICAgKiBld2svZXdrX3NldHRpbmdzLmNwcDoKLSAgICAgICAgUmVtb3ZlZCBld2tfc2V0dGlu
Z3NfaWNvbl9kYXRhYmFzZV9pY29uX3N1cmZhY2VfZ2V0LgotICAgICAgICBld2tfc2V0dGluZ3Nf
aWNvbl9kYXRhYmFzZV9pY29uX29iamVjdF9nZXQgd2lsbCBiZSB1c2VkIGluc3RlYWQuCi0gICAg
ICAgICogZXdrL2V3a19zZXR0aW5ncy5oOgotICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0g
ICAgICAgIChld2tfdmlld19zY3JlZW5zaG90X2NvbnRlbnRzX2dldCk6Ci0gICAgICAgIEltcGxl
bWVudGVkIHRvIHJlcGxhY2UgZXdrX3ZpZXdfcGFpbnQgYW5kIGV3a192aWV3X3BhaW50X2NvbnRl
bnRzLgotICAgICAgICAqIGV3ay9ld2tfdmlldy5oOgotICAgICAgICAqIHRlc3RzL3Rlc3RfZXdr
X3ZpZXcuY3BwOgotICAgICAgICAoVEVTVF9GKTogQWRkZWQgdGVzdCBjYXNlIGZvciBld2tfdmll
d19zY3JlZW5zaG90X2NvbnRlbnRzX2dldAotCi0yMDE0LTAyLTEzICBSeXVhbiBDaG9pICA8cnl1
YW4uY2hvaUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBbRUZMXVtXSzFdIERvIG5vdCBpbmNsdWRl
IGxpYnNvdXAgaGVhZGVyIGluIHRoZSBwdWJsaWMgaGVhZGVycwotICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI4NzAxCi0KLSAgICAgICAgUmV2aWV3ZWQg
YnkgR3l1eW91bmcgS2ltLgotCi0gICAgICAgIEFsdGhvdWdoIGV3ZWJraXQgdXNlZCBsaWJzb3Vw
IGludGVybmFsbHksIGl0J3Mgbm90IGdvb2QgZm9yIEVGTCBkZXZlbG9wZXJzCi0gICAgICAgIHRv
IHVzZSBpdC4KLSAgICAgICAgSW5zdGVhZCwgd2Ugc2hvdWxkIHByb3ZpZGUgc29tZSB3cmFwcGVy
IEFQSXMgbGlrZSBld2tfbmV0d29ya19wcm94eV91cmlfc2V0Ci0gICAgICAgIGZvciBmdXR1cmUg
Y2hhbmdlcy4KLQotICAgICAgICAqIGV3ay9ld2tfbmV0d29yay5jcHA6IFJlbW92ZWQgc291cCBy
ZWxhdGVkIGhlYWRlcixBUElzIGFuZCBjb21tZW50cy4KLSAgICAgICAgKGV3a19uZXR3b3JrX3Rs
c19jYV9jZXJ0aWZpY2F0ZXNfcGF0aF9zZXQpOgotICAgICAgICAqIGV3ay9ld2tfbmV0d29yay5o
OiBEaXR0by4KLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOiBEaXR0by4KLSAgICAgICAgKiBl
d2svZXdrX3ZpZXcuaDogRGl0dG8uCi0KLTIwMTQtMDItMTIgIFJhcGhhZWwgS3VibyBkYSBDb3N0
YSAgPHJhcGhhZWwua3Viby5kYS5jb3N0YUBpbnRlbC5jb20+Ci0KLSAgICAgICAgVXBkYXRlIHRo
ZSBIVE1MIE1lZGlhIENhcHR1cmUgaW1wbGVtZW50YXRpb24uCi0gICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTg0NjUKLQotICAgICAgICBSZXZpZXdlZCBi
eSBEYXJpbiBBZGxlci4KLQotICAgICAgICBNYWtlIHRoZSBpbXBsZW1lbnRhdGlvbiBpbiBXZWJL
aXQgY29tcGF0aWJsZSB3aXRoIHRoZSAyMDEzLTA1LTA5Ci0gICAgICAgIHZlcnNpb24gb2YgdGhl
IHNwZWMsIHdoaWNoIG1ha2VzIHRoZSAiY2FwdHVyZSIgYXR0cmlidXRlIGEgYm9vbGVhbgotICAg
ICAgICBpbnN0ZWFkIG9mIGFuIGVudW0uCi0KLSAgICAgICAgKiBld2svZXdrX2ZpbGVfY2hvb3Nl
ci5jcHA6Ci0gICAgICAgIChld2tfZmlsZV9jaG9vc2VyX2NhcHR1cmVfZ2V0KTogUmV0dXJuIGFu
IEVpbmFfQm9vbCBub3cuCi0gICAgICAgICogZXdrL2V3a19maWxlX2Nob29zZXIuaDogR2V0IHJp
ZCBvZiBFd2tfRmlsZV9DaG9vc2VyX0NhcHR1cmVfVHlwZS4KLQotMjAxNC0wMi0wOSAgUnl1YW4g
Q2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW0VGTF0gUmVtb3ZlIFBh
Z2VDbGllbnRFZmwKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEyODUwOAotCi0gICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCi0KLSAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dEVmbC5jcHA6
Ci0gICAgICAgIFJlbW92ZWQgZGVwZW5kZW5jaWVzIG9mIFBhZ2VDbGllbnRFZmwuCi0gICAgICAg
IChXZWJDb3JlOjpBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6aW5pdGlhbGl6ZSk6Ci0g
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdl
YkNvcmU6OkNocm9tZUNsaWVudEVmbDo6cGxhdGZvcm1QYWdlQ2xpZW50KToKLSAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9QYWdlQ2xpZW50RWZsLmNwcDogUmVtb3ZlZC4KLSAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9QYWdlQ2xpZW50RWZsLmg6IFJlbW92ZWQuCi0gICAgICAgICogZXdrL2V3a192
aWV3LmNwcDoKLSAgICAgICAgKF9ld2tfdmlld19wcml2X25ldyk6Ci0KLTIwMTQtMDItMDggIFJ5
b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+Ci0KLSAgICAgICAgQ2xlYW51cCB0aGUgaW50
ZXJmYWNlIG9mIEZyYW1lU2VsZWN0aW9uCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMjg0ODEKLQotICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEts
aW5nLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZs
LmNwcDoKLSAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6c2VsZWN0aW9uUmVjdGFu
Z2xlKToKLQotMjAxNC0wMi0wOCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+Ci0KLSAg
ICAgICAgQ2hhbmdlIFRleHRJdGVyYXRvciB0byB1c2UgU3RyaW5nVmlldywgcHJlcGFyaW5nIHRv
IHdlYW4gaXQgZnJvbSBkZXByZWNhdGVkQ2hhcmFjdGVycwotICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI4MjMzCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkg
QW5kZXJzIENhcmxzc29uLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50
RWZsLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEVmbDo6Y2hlY2tTcGVsbGlu
Z09mU3RyaW5nKTogVXNlIFN0cmluZ1ZpZXcuCi0gICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGll
bnRFZmw6OmNoZWNrR3JhbW1hck9mU3RyaW5nKTogRGl0dG8uCi0gICAgICAgICogV2ViQ29yZVN1
cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmg6IERpdHRvLgotCi0yMDE0LTAyLTA3ICBHYXZpbiBCYXJy
YWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KLQotICAgICAgICBSZW1vdmUgaXNJbml0
aWFsU3RhdGUgZmxhZyBmcm9tIFBhZ2U6OnNldFZpZXdTdGF0ZQotICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI4NDI4Ci0KLSAgICAgICAgUmV2aWV3ZWQg
YnkgU2FtIFdlaW5pZy4KLQotICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChl
d2tfdmlld192aXNpYmlsaXR5X3N0YXRlX3NldCk6Ci0gICAgICAgICAgICAtIGRvbid0IHBhc3Mg
aXNJbml0aWFsU3RhdGUgdG8gc2V0Vmlld1N0YXRlLgotCi0yMDE0LTAyLTA1ICBBbmRyZWFzIEts
aW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KLQotICAgICAgICBSZW1vdmUgRU5BQkxFKERJUkVDVE9S
WV9VUExPQUQpLgotICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTI4Mjc1PgotCi0gICAg
ICAgIFJ1YmJlci1zdGFtcGVkIGJ5IFJ5b3N1a2UgTml3YS4KLQotICAgICAgICAqIGV3ay9ld2tf
ZmlsZV9jaG9vc2VyLmNwcDoKLSAgICAgICAgKGV3a19maWxlX2Nob29zZXJfYWxsb3dzX2RpcmVj
dG9yeV91cGxvYWRfZ2V0KToKLQotMjAxNC0wMi0wNCAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0Bh
cHBsZS5jb20+Ci0KLSAgICAgICAgUmVtb3ZlIDxpZnJhbWUgc2VhbWxlc3M+IHN1cHBvcnQuCi0g
ICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8xMjgyMTM+Ci0KLSAgICAgICAgUnViYmVyLXN0
YW1wZWQgYnkgQW50dGkgS29pdmlzdG8uCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1w
UmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBS
ZW5kZXJUcmVlU3VwcG9ydEVmbC5oOgotICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAg
ICAgIChfZXdrX3ZpZXdfcHJpdl9uZXcpOgotCi0yMDE0LTAxLTMxICBSeW9zdWtlIE5pd2EgIDxy
bml3YUB3ZWJraXQub3JnPgotCi0gICAgICAgIFJlbW92ZSBpbmxpbmUgbWVtYmVyIGZ1bmN0aW9u
cyBvZiBGcmFtZVNlbGVjdGlvbiB0aGF0IGFjY2VzcyBtX3NlbGVjdGlvbgotICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3OTg2Ci0KLSAgICAgICAgUmV2
aWV3ZWQgYnkgRW5yaWNhIENhc3VjY2kuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1w
UmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwOgotICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0
RWZsOjpzZWxlY3RlZFJhbmdlKToKLSAgICAgICAgKiBld2svZXdrX2ZyYW1lLmNwcDoKLSAgICAg
ICAgKGV3a19mcmFtZV90ZXh0X3NlbGVjdGlvbl90eXBlX2dldCk6Ci0KLTIwMTQtMDEtMzAgIEFu
ZHJlaSBCdWN1ciAgPGFidWN1ckBhZG9iZS5jb20+Ci0KLSAgICAgICAgUmVtb3ZlIHRoZSBBQ0NF
TEVSQVRFRF9DT01QT1NJVElORyBmbGFnCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMjc4MzMKLQotICAgICAgICBSZXZpZXdlZCBieSBBbnR0aSBLb2l2
aXN0by4KLQotICAgICAgICBSZW1vdmUgdGhlIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykg
Y29uZGl0aW9uYWxzIGZyb20gdGhlIGNvZGUgYmFzZSBhbmQgbWFrZSBBQwotICAgICAgICBtYW5k
YXRvcnkuCi0KLSAgICAgICAgQW5vdGhlciBwYXRjaCB3aWxsIGJlIHJlcXVpcmVkIHRvIHJlbW92
ZSB0aGUgZmxhZyBzdXBwb3J0IGZyb20gdGhlIEVGTCBidWlsZCBzeXN0ZW0uCi0KLSAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dEVmbC5jcHA6Ci0g
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHRFZmwu
aDoKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwOgotICAgICAg
ICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZsOjphbGxvd2VkQ29tcG9zaXRpbmdUcmlnZ2Vycyk6
Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmg6Ci0gICAgICAgICog
V2ViQ29yZVN1cHBvcnQvUGFnZUNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChQYWdlQ2xpZW50RWZs
OjphY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCk6Ci0gICAgICAgICogV2ViQ29yZVN1cHBv
cnQvUGFnZUNsaWVudEVmbC5oOgotICAgICAgICAqIGV3ay9ld2tfcHJpdmF0ZS5oOgotICAgICAg
ICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChfZXdrX3ZpZXdfcHJpdl9uZXcpOgotICAg
ICAgICAoX2V3a192aWV3X3ByaXZfZGVsKToKLSAgICAgICAgKGV3a192aWV3X21hcmtfZm9yX3N5
bmMpOgotICAgICAgICAqIGV3ay9ld2tfdmlld19wcml2YXRlLmg6Ci0KLTIwMTQtMDEtMjkgIFJ5
dWFuIENob2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgotCi0gICAgICAgIEVGTCBwb3J0IHNo
b3VsZCBzdG9wIHVzaW5nIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0gbWFjcm9zCi0gICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjc4MDEKLQotICAg
ICAgICBSZXZpZXdlZCBieSBBbmRlcnMgQ2FybHNzb24uCi0KLSAgICAgICAgSW5zdGVhZCBvZiBD
T01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNUyB3aXRoIHN0YXRpY19jYXN0LCB0aGlzIHBhdGNo
Ci0gICAgICAgIGFkZGVkIHN3aXRjaCBhbmQgY29udmVyc2lvbiBmdW5jdGlvbnMgaWYgbmVlZGVk
LgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHA6IFJl
bW92ZWQuCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3Bw
OgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6Ci0gICAgICAgICogZXdrL2V3a19jb250ZXh0bWVu
dS5jcHA6Ci0gICAgICAgICh0b0V3a0NvbnRleHRNZW51QWN0aW9uKToKLSAgICAgICAgKiBld2sv
ZXdrX2NvbnRleHRtZW51Lmg6Ci0gICAgICAgIEFkZGVkIG1pc3NpbmcgZW51bSB2YXJpYWJsZXMu
IFRoZXNlIGFyZSByZXF1aXJlZCBub3QgdG8gYnJlYWsgdGhlIGJ1aWxkLgotICAgICAgICAqIGV3
ay9ld2tfZnJhbWUuY3BwOgotICAgICAgICAoZXdrX2ZyYW1lX3RleHRfc2VsZWN0aW9uX3R5cGVf
Z2V0KToKLSAgICAgICAgKiBld2svZXdrX3RvdWNoX2V2ZW50LmNwcDoKLSAgICAgICAgKHRvUGxh
dGZvcm1Ub3VjaFBvaW50U3RhdGUpOgotICAgICAgICAoV2ViS2l0UGxhdGZvcm1Ub3VjaEV2ZW50
OjpXZWJLaXRQbGF0Zm9ybVRvdWNoRXZlbnQpOgotICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6
Ci0gICAgICAgIChld2tfdmlld190ZXh0X2RpcmVjdGlvbl9zZXQpOgotICAgICAgICAoZXdrX3Zp
ZXdfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24pOgotICAgICAgICAodG9WaWV3TW9kZSk6Ci0g
ICAgICAgICh0b0V3a1ZpZXdNb2RlKToKLSAgICAgICAgKGV3a192aWV3X21vZGVfc2V0KToKLSAg
ICAgICAgKGV3a192aWV3X21vZGVfZ2V0KToKLSAgICAgICAgKGV3a192aWV3X3Zpc2liaWxpdHlf
c3RhdGVfZ2V0KToKLSAgICAgICAgKiBld2svZXdrX3ZpZXdfcHJpdmF0ZS5oOgotCi0yMDE0LTAx
LTI4ICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KLQotICAgICAgICBSZW1v
dmUgdW5uZWNlc3NhcnkgZm9yd2FyZCBkZWNsYXJhdGlvbnMgb2YgTWVzc2FnZVBvcnRDaGFubmVs
LCBNZXNzYWdlUG9ydENoYW5uZWxBcnJheSBpbiBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuaAot
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3NjU0Ci0K
LSAgICAgICAgUmV2aWV3ZWQgYnkgQWxleGV5IFByb3NrdXJ5YWtvdi4KLQotICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5oOiBSZW1vdmUgdGhlIGZvcndh
cmQgZGVjbGFyYXRpb25zIG9mIE1lc3NhZ2VQb3J0Q2hhbm5lbAotICAgICAgICBhbmQgTWVzc2Fn
ZVBvcnRDaGFubmVsQXJyYXkuIFRoZXkgd2VyZSBtb3N0IGxpa2VseSBhdCBvbmUgcG9pbnQgdXNl
ZCBpbiBEUlQgc3VwcG9ydCBtZXRob2RzLCBidXQgYXJlCi0gICAgICAgIG5vdCBuZWNlc3Nhcnkg
YW55bW9yZS4KLQotMjAxNC0wMS0yNyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGln
YWxpYS5jb20+Ci0KLSAgICAgICAgW0dUS10gTWFrZSB3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0
X2dldF93ZWJfdmlldygpIHdvcmsgd2l0aCBDdXN0b21Qcm90b2NvbHMKLSAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNzYxNAotCi0gICAgICAgIFJldmll
d2VkIGJ5IEd1c3Rhdm8gTm9yb25oYSBTaWx2YS4KLQotICAgICAgICBSZW1vdmUgaW5pdGlhdGlu
Z1BhZ2VJRCgpIG1ldGhvZCBmb3JtIHRoZSBGcmFtZU5ldHdvcmtpbmdDb250ZXh0LgotCi0gICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVOZXR3b3JraW5nQ29udGV4dEVmbC5jcHA6Ci0gICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVOZXR3b3JraW5nQ29udGV4dEVmbC5oOgotCi0yMDE0
LTAxLTI3ICBSeXVhbiBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBb
RUZMXVtXSzFdIFJlbW92ZSBld2tfaGlzdG9yeV9pdGVtX3RpbWVfbGFzdF92aXNpdGVkX2dldCBh
bmQgZXdrX2hpc3RvcnlfaXRlbV92aXNpdF9jb3VudAotICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3NjYyCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgR3l1
eW91bmcgS2ltLgotCi0gICAgICAgIFRoZXNlIEFQSXMgYXJlIGV4cG9zaW5nIFdlYkNvcmUncyBp
bnRlcm5hbCBzdHJ1Y3R1cmUsIGJ1dCB0aGV5IHJlbW92ZWQKLSAgICAgICAgZnJvbSBXZWJDb3Jl
IHNpbmNlIDE2MjgwOC4KLQotICAgICAgICBUaGlzIHBhdGNoIHJlbW92ZWQgbm90IHRvIHN1cHBv
cnQgdGhlbSBiZWNhdXNlIGFwcGxpY2F0aW9ucyBjYW4gZG8gaXQKLSAgICAgICAgaWYgdGhleSB3
YW50LgotCi0gICAgICAgICogZXdrL2V3a19oaXN0b3J5LmNwcDoKLSAgICAgICAgKiBld2svZXdr
X2hpc3RvcnkuaDoKLQotMjAxNC0wMS0yNiAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3Vu
Zy5jb20+Ci0KLSAgICAgICAgVW5yZXZpZXdlZCBidWlsZCBmaXggb24gdGhlIEVGTCBidWlsZCBz
aW5jZSByMTYyODA4Ci0KLSAgICAgICAgbGFzdFZpc2l0ZWRUaW1lIGFuZCB2aXNpdENvdW50IGFy
ZSByZW1vdmVkIGZyb20gV2ViQ29yZTo6SGlzdG9yeUl0ZW0KLQotICAgICAgICAqIGV3ay9ld2tf
aGlzdG9yeS5jcHA6Ci0gICAgICAgIChld2tfaGlzdG9yeV9pdGVtX25ldyk6Ci0gICAgICAgIChl
d2tfaGlzdG9yeV9pdGVtX3RpbWVfbGFzdF92aXNpdGVkX2dldCk6Ci0gICAgICAgIChld2tfaGlz
dG9yeV9pdGVtX3Zpc2l0X2NvdW50KToKLQotMjAxNC0wMS0yNSAgQW5kZXJzIENhcmxzc29uICA8
YW5kZXJzY2FAYXBwbGUuY29tPgotCi0gICAgICAgIFJlbW92ZSBhbiB1bnVzZWQgRnJhbWVMb2Fk
ZXJDbGllbnQgZnVuY3Rpb24KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEyNzYyOAotCi0gICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCi0K
LSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHA6Ci0gICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuaDoKLQotMjAxNC0wMS0y
NSAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW0VGTF1b
V0sxXSBGaXggYnJva2VuIHJlbmRlcmluZyB3aGlsZSBuYXZpZ2F0aW5nIGhpc3RvcnkgaW4gRVdl
YkxhdW5jaGVyCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMjc2MDEKLQotICAgICAgICBSZXZpZXdlZCBieSBBbmRlcnMgQ2FybHNzb24uCi0KLSAgICAg
ICAgV2hlbiBzY3JvbGxlZCBhZnRlciByZXF1ZXN0ZWQgcmVwYWludHMsIHJlbmRlcmluZyB3YXMg
YnJva2VuIGJlY2F1c2Ugc2Nyb2xsRGVsdGEKLSAgICAgICAgY2hhbmdlZCByZXBhaW50cyBhcmVh
LgotCi0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAgKGV3a192aWV3X3Njcm9s
bCk6Ci0KLTIwMTQtMDEtMjQgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4K
LQotICAgICAgICBSZW1vdmUgYmFjay9mb3J3YXJkIGxpc3QgcmVsYXRlZCBmdW5jdGlvbnMgZnJv
bSBQYWdlCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
Mjc1OTYKLQotICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgotCi0gICAgICAgICog
ZXdrL2V3a19mcmFtZS5jcHA6Ci0gICAgICAgIChld2tfZnJhbWVfbmF2aWdhdGUpOgotICAgICAg
ICAoZXdrX2ZyYW1lX25hdmlnYXRlX3Bvc3NpYmxlKToKLQotMjAxNC0wMS0yMyAgSm9zZXBoIFBl
Y29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgotCi0gICAgICAgIFdlYiBJbnNwZWN0b3I6IFJl
bW92ZSByZWNvbXBpbGVBbGxKU0Z1bmN0aW9ucyB0aW1lciBpbiBTY3JpcHREZWJ1Z1NlcnZlcgot
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3NDA5Ci0K
LSAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCi0KLSAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9JbnNwZWN0b3JDbGllbnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yRnJvbnRlbmRDbGllbnRFZmw6OmRlc3Ryb3lJbnNwZWN0b3JXaW5kb3cpOgotICAgICAgICBJ
bmNsdWRlIEluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb24uCi0KLTIwMTQtMDEtMjMgIFNpbW9uIEZy
YXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+Ci0KLSAgICAgICAgRml4IEVGTC4KLQotICAg
ICAgICAqIGV3ay9ld2tfZnJhbWUuY3BwOgotICAgICAgICAoZXdrX2ZyYW1lX3Zpc2libGVfY29u
dGVudF9nZW9tZXRyeV9nZXQpOgotCi0yMDE0LTAxLTIyICBSeXVhbiBDaG9pICA8cnl1YW4uY2hv
aUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBbRUZMXSBSZW1vdmUgdW5uZWNlc3Nhcnkgc21hcnQg
bWV0aG9kIHNpbmNlIGV3a192aWV3X3RpbGVkIHJlbW92ZWQKLSAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNzQxNwotCi0gICAgICAgIFJldmlld2VkIGJ5
IEd5dXlvdW5nIEtpbS4KLQotICAgICAgICBwcmVfcmVuZGVyIHJlbGF0ZWQgY29kZXMgaXMgb25s
eSBmb3IgZXdrX3ZpZXdfdGlsZWQuCi0gICAgICAgIEluIGFkZGl0aW9uLCB3ZSBkb24ndCBoYXZl
IGFueSByZXF1aXJlbWVudCB0byBvdmVycmlkZSByZXBhaW50c19wcm9jZXNzCi0gICAgICAgIGFu
ZCBzY3JvbGxfcHJvY2VzcyBub3cuCi0KLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAg
ICAgICAoX2V3a192aWV3X3NtYXJ0X3JlcGFpbnRzX3Byb2Nlc3MpOgotICAgICAgICAoX2V3a192
aWV3X3NtYXJ0X2NhbGN1bGF0ZSk6Ci0gICAgICAgIChld2tfdmlld19zbWFydF9zZXQpOgotICAg
ICAgICAoZXdrX3ZpZXdfc2Nyb2xsc19wcm9jZXNzKToKLSAgICAgICAgKiBld2svZXdrX3ZpZXcu
aDoKLQotMjAxNC0wMS0xOSAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3VuZy5jb20+Ci0K
LSAgICAgICAgW0VGTF1bV0sxXSBSZW1vdmUgYW5kIHJlZmFjdG9yIHRoZSBBUElzIHdoaWNoIHVz
ZSBzaW5nbGUgYW5kIGJhc2Uga2V5d29yZAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTI3MjE0Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgR3l1eW91bmcg
S2ltLgotCi0gICAgICAgIFNpbmNlIHJlbW92ZWQgZXdrX3ZpZV90aWxlZCwgd2UgZG9uJ3QgbmVl
ZCB0byB1c2Ugc2luZ2xlIG9yIGJhc2UgaW4gdGhlIEFQSSBuYW1lLgotICAgICAgICBSZW1vdmVk
IHRoZW0gYW5kIGNsZWFuIHVwIHRoZSBjb2RlLgotCi0gICAgICAgICogZXdrL2V3a192aWV3LmNw
cDoKLSAgICAgICAgKGV3a192aWV3X3NtYXJ0X3NldCk6Ci0gICAgICAgIChfZXdrX3ZpZXdfc21h
cnRfY2xhc3NfbmV3KToKLSAgICAgICAgKGV3a192aWV3X2FkZCk6Ci0gICAgICAgICogZXdrL2V3
a192aWV3Lmg6Ci0gICAgICAgICogZXdrL2V3a192aWV3X3ByaXZhdGUuaDoKLSAgICAgICAgUmVt
b3ZlZCB0aGUgY2xhc3MgbmFtZXMgYW5kIG1hY3JvIHRvIGRpc3Rpbmd1aXNoIHNpbmdsZSBvciB0
aWxlZC4KLSAgICAgICAgKiB0ZXN0cy9Vbml0VGVzdFV0aWxzL0VXS1Rlc3RWaWV3LmNwcDoKLSAg
ICAgICAgKEVXS1VuaXRUZXN0czo6RVdLVGVzdFZpZXc6OmluaXQpOgotCi0yMDE0LTAxLTE4ICBC
cmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgotCi0gICAgICAgIEFub3RoZXIgYnVpbGQgZml4
IGF0dGVtcHQgZm9yIFdpbmRvd3MgYW5kIEVGTCBXZWJLaXQxLgotCi0gICAgICAgICogZXdrL2V3
a19wYWludF9jb250ZXh0LmNwcDoKLSAgICAgICAgKGV3a19wYWludF9jb250ZXh0X3BhaW50X2Nv
bnRlbnRzKToKLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoX2V3a192aWV3
X3NtYXJ0X3JlcGFpbnRzX3Byb2Nlc3MpOgotCi0yMDE0LTAxLTE4ICBCcmlhbiBCdXJnICA8YmJ1
cmdAYXBwbGUuY29tPgotCi0gICAgICAgIFdlYiBJbnNwZWN0b3I6IFBhZ2Ugc2hvdWxkIHVzZSBz
dGQ6OnVuaXF1ZV9wdHIgZm9yIEluc3BlY3RvckNvbnRyb2xsZXIKLSAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNzA2OAotCi0gICAgICAgIFJldmlld2Vk
IGJ5IEpvc2VwaCBQZWNvcmFyby4KLQotICAgICAgICBDb252ZXJ0IGNhbGwgc2l0ZXMgdG8gdXNl
IGEgSW5zcGVjdG9yQ29udHJvbGxlciByZWZlcmVuY2UuCi0gICAgICAgIENvbnZlcnQgaW5zdGFu
dGlhdGlvbnMgb2YgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQgdG8gdXNlIHN0ZDo6dW5pcXVlX3B0
ci4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5j
cHA6Ci0gICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OmV2YWx1YXRlSW5XZWJJbnNw
ZWN0b3IpOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEVmbC5jcHA6
Ci0gICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnRFZmw6Om9wZW5JbnNwZWN0b3JGcm9u
dGVuZCk6Ci0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAgKGV3a192aWV3X2lu
c3BlY3Rvcl9zaG93KToKLSAgICAgICAgKGV3a192aWV3X2luc3BlY3Rvcl9jbG9zZSk6Ci0KLTIw
MTQtMDEtMTcgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KLQotICAgICAg
ICBSZW1vdmUgYW5vdGhlciB1bnVzZWQgRnJhbWVMb2FkZXJDbGllbnQgY2FsbGJhY2sKLSAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNzE5MgotCi0gICAg
ICAgIFJldmlld2VkIGJ5IERhbiBCZXJuc3RlaW4uCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHA6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRFZmwuaDoKLQotMjAxNC0wMS0xNyAgQW5kZXJzIENhcmxzc29uICA8YW5k
ZXJzY2FAYXBwbGUuY29tPgotCi0gICAgICAgIFJlbW92ZSBkaWRQZXJmb3JtRmlyc3ROYXZpZ2F0
aW9uIGZyb20gYWxsIEZyYW1lTG9hZGVyQ2xpZW50IHN1YmNsYXNzZXMKLSAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNzE5MAotCi0gICAgICAgIFJldmll
d2VkIGJ5IERhbiBCZXJuc3RlaW4uCi0KLSAgICAgICAgQWNjb3JkaW5nIHRvIHRoZSBFRmwgbWFp
bnRhaW5lcnMsIHRoaXMgaXMgbm90IHVzZWQgYnkgYW55IGFwcGxpY2F0aW9ucyBzbyBpdCdzIHNh
ZmUgdG8gcmVtb3ZlIGl0LgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRFZmwuY3BwOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
RWZsLmg6Ci0gICAgICAgICogZXdrL2V3a19mcmFtZS5jcHA6Ci0gICAgICAgICogZXdrL2V3a19m
cmFtZV9wcml2YXRlLmg6Ci0KLTIwMTQtMDEtMTYgIEphZWh1biBMaW0gIDxsamFlaHVuLmxpbUBz
YW1zdW5nLmNvbT4KLQotICAgICAgICBVc2UgZmluYWwgaW5zdGVhZCBvZiBGSU5BTAotCi0gICAg
ICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4LgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvUHJv
Z3Jlc3NUcmFja2VyQ2xpZW50RWZsLmg6Ci0KLTIwMTQtMDEtMTYgIFBldGVyIE1vbG5hciAgPHBt
b2xuYXIudS1zemVnZWRAcGFydG5lci5zYW1zdW5nLmNvbT4KLQotICAgICAgICBSZW1vdmUgd29y
a2Fyb3VuZCBmb3IgY29tcGlsZXJzIG5vdCBzdXBwb3J0aW5nIGV4cGxpY2l0IG92ZXJyaWRlIGNv
bnRyb2wKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEy
NzExMQotCi0gICAgICAgIFJldmlld2VkIGJ5IEFuZGVycyBDYXJsc3Nvbi4KLQotICAgICAgICBO
b3cgYWxsIGNvbXBpbGVycyBzdXBwb3J0IGV4cGxpY2l0IG92ZXJyaWRlIGNvbnRyb2wsIHRoaXMg
d29ya2Fyb3VuZCBjYW4gYmUgcmVtb3ZlZC4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0lu
c3BlY3RvckNsaWVudEVmbC5oOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1Byb2dyZXNzVHJh
Y2tlckNsaWVudEVmbC5oOgotCi0yMDE0LTAxLTE1ICBSeXVhbiBDaG9pICA8cnl1YW4uY2hvaUBz
YW1zdW5nLmNvbT4KLQotICAgICAgICBbRUZMXVtXSzFdIEltcGxlbWVudCBQcm9ncmVzc1RyYWNr
ZXJDbGllbnRFZmwgdG8gZml4IHRoZSBjcmFzaAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3MDMxCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgR3l1eW91
bmcgS2ltLgotCi0gICAgICAgIEltcGxtZW1lbnRlZCBhbmQgbW92ZWQgUHJvZ3Jlc3NUcmFja2Vy
Q2xpZW50IGxvZ2ljIGZyb20gRnJhbWVMb2FkZXJDbGllbnRFZmwuCi0gICAgICAgIFByb2dyZXNz
VHJhY2tlckNsaWVudCBzaG91bGQgYmUgaW5kZW5wZW5kZW50IGluc3RhbmNlIHNpbmNlIHIxNjIw
MzQKLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcDoK
LSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5oOgotICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L1Byb2dyZXNzVHJhY2tlckNsaWVudEVmbC5jcHA6Ci0gICAgICAg
IChXZWJDb3JlOjpQcm9ncmVzc1RyYWNrZXJDbGllbnRFZmw6OlByb2dyZXNzVHJhY2tlckNsaWVu
dEVmbCk6Ci0gICAgICAgIChXZWJDb3JlOjpQcm9ncmVzc1RyYWNrZXJDbGllbnRFZmw6OnByb2dy
ZXNzVHJhY2tlckRlc3Ryb3llZCk6Ci0gICAgICAgIChXZWJDb3JlOjpQcm9ncmVzc1RyYWNrZXJD
bGllbnRFZmw6OnByb2dyZXNzU3RhcnRlZCk6Ci0gICAgICAgIChXZWJDb3JlOjpQcm9ncmVzc1Ry
YWNrZXJDbGllbnRFZmw6OnByb2dyZXNzRXN0aW1hdGVDaGFuZ2VkKToKLSAgICAgICAgKFdlYkNv
cmU6OlByb2dyZXNzVHJhY2tlckNsaWVudEVmbDo6cHJvZ3Jlc3NGaW5pc2hlZCk6Ci0gICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvUHJvZ3Jlc3NUcmFja2VyQ2xpZW50RWZsLmg6IEFkZGVkLgotICAg
ICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChfZXdrX3ZpZXdfcHJpdl9uZXcpOgot
Ci0yMDE0LTAxLTEzICBSeXVhbiBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KLQotICAg
ICAgICBbRUZMXSBEbyBub3Qgc3RvcmUgcmVmZXJlbmNlIHZhcmlhYmxlcyBhcyBhIHBvaW50ZXIg
aW4gcHJpdmF0ZSBkYXRhIHN0cnVjdHVyZQotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTI2OTQ1Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgR3l1eW91bmcg
S2ltLgotCi0gICAgICAgIFJlbW92ZSBwYWdlU2V0dGluZ3MsIG1haW5GcmFtZSBhbmQgc3RvcmFn
ZVNlc3Npb24gdmFyaWFibGVzIGZyb20gRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhLgotCi0gICAgICAg
ICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAgKF9ld2tfdmlld19wcml2X25ldyk6Ci0gICAg
ICAgIChfZXdrX3ZpZXdfc21hcnRfYWRkKToKLSAgICAgICAgKF9ld2tfdmlld19zbWFydF9yZXBh
aW50c19wcm9jZXNzKToKLSAgICAgICAgKF9ld2tfdmlld19zbWFydF9jYWxjdWxhdGUpOgotICAg
ICAgICAoZXdrX3ZpZXdfZml4ZWRfbGF5b3V0X3NpemVfc2V0KToKLSAgICAgICAgKGV3a192aWV3
X2ZpeGVkX2xheW91dF9zaXplX2dldCk6Ci0gICAgICAgIChld2tfdmlld19iZ19jb2xvcl9zZXQp
OgotICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ191c2VyX2FnZW50X3NldCk6Ci0gICAgICAgIChl
d2tfdmlld19zZXR0aW5nX3VzZXJfc3R5bGVzaGVldF9zZXQpOgotICAgICAgICAoZXdrX3ZpZXdf
c2V0dGluZ19hdXRvX2xvYWRfaW1hZ2VzX3NldCk6Ci0gICAgICAgIChld2tfdmlld19zZXR0aW5n
X2F1dG9fc2hyaW5rX2ltYWdlc19zZXQpOgotICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19lbmFi
bGVfc2NyaXB0c19zZXQpOgotICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfcGx1Z2lu
c19zZXQpOgotICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfZnJhbWVfZmxhdHRlbmlu
Z19zZXQpOgotICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19zY3JpcHRzX2Nhbl9vcGVuX3dpbmRv
d3Nfc2V0KToKLSAgICAgICAgKGV3a192aWV3X3NldHRpbmdfc2NyaXB0c19jYW5fY2xvc2Vfd2lu
ZG93c19zZXQpOgotICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19zY3JpcHRzX2Nhbl9hY2Nlc3Nf
Y2xpcGJvYXJkX3NldCk6Ci0gICAgICAgIChld2tfdmlld19zZXR0aW5nX3Jlc2l6YWJsZV90ZXh0
YXJlYXNfc2V0KToKLSAgICAgICAgKGV3a192aWV3X3NldHRpbmdfcHJpdmF0ZV9icm93c2luZ19z
ZXQpOgotICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19hcHBsaWNhdGlvbl9jYWNoZV9zZXQpOgot
ICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19jYXJldF9icm93c2luZ19zZXQpOgotICAgICAgICAo
ZXdrX3ZpZXdfc2V0dGluZ19lbmNvZGluZ19kZWZhdWx0X3NldCk6Ci0gICAgICAgIChld2tfdmll
d19zZXR0aW5nX2VuY29kaW5nX2RldGVjdG9yX3NldCk6Ci0gICAgICAgIChld2tfdmlld19zZXR0
aW5nX2VuYWJsZV9kZXZlbG9wZXJfZXh0cmFzX3NldCk6Ci0gICAgICAgIChld2tfdmlld19zZXR0
aW5nX2ZvbnRfbWluaW11bV9zaXplX3NldCk6Ci0gICAgICAgIChld2tfdmlld19zZXR0aW5nX2Zv
bnRfbWluaW11bV9sb2dpY2FsX3NpemVfc2V0KToKLSAgICAgICAgKGV3a192aWV3X3NldHRpbmdf
Zm9udF9kZWZhdWx0X3NpemVfc2V0KToKLSAgICAgICAgKGV3a192aWV3X3NldHRpbmdfZm9udF9t
b25vc3BhY2Vfc2l6ZV9zZXQpOgotICAgICAgICAoZXdrX3ZpZXdfZm9udF9mYW1pbHlfbmFtZV9z
ZXQpOgotICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19zcGF0aWFsX25hdmlnYXRpb25fc2V0KToK
LSAgICAgICAgKGV3a192aWV3X3NldHRpbmdfbG9jYWxfc3RvcmFnZV9zZXQpOgotICAgICAgICAo
ZXdrX3ZpZXdfc2V0dGluZ19wYWdlX2NhY2hlX3NldCk6Ci0gICAgICAgIChld2tfdmlld19zZXR0
aW5nX2xvY2FsX3N0b3JhZ2VfZGF0YWJhc2VfcGF0aF9zZXQpOgotICAgICAgICAoZXdrX3ZpZXdf
c2V0dGluZ19taW5pbXVtX3RpbWVyX2ludGVydmFsX3NldCk6Ci0gICAgICAgIChld2tfdmlld19z
ZXR0aW5nX2VuYWJsZV93ZWJnbF9zZXQpOgotICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19lbmFi
bGVfaHlwZXJsaW5rX2F1ZGl0aW5nX3NldCk6Ci0gICAgICAgIChld2tfdmlld19zZXR0aW5nX2Fs
bG93X3VuaXZlcnNhbF9hY2Nlc3NfZnJvbV9maWxlX3VybHNfc2V0KToKLSAgICAgICAgKGV3a192
aWV3X3NldHRpbmdfYWxsb3dfZmlsZV9hY2Nlc3NfZnJvbV9maWxlX3VybHNfc2V0KToKLSAgICAg
ICAgKGV3a192aWV3X2xheW91dF9pZl9uZWVkZWRfcmVjdXJzaXZlKToKLSAgICAgICAgKGV3a192
aWV3X3BhaW50KToKLSAgICAgICAgKGV3a192aWV3X3BhaW50X2NvbnRlbnRzKToKLSAgICAgICAg
KGV3a192aWV3X2pzX29iamVjdF9hZGQpOgotICAgICAgICAoZXdrX3ZpZXdfcGFnZV9yZWN0X2dl
dCk6Ci0gICAgICAgIChld2tfdmlld19zb3VwX3Nlc3Npb25fZ2V0KToKLSAgICAgICAgKGV3a192
aWV3X3NvdXBfc2Vzc2lvbl9zZXQpOgotICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVf
eHNzX2F1ZGl0b3Jfc2V0KToKLSAgICAgICAgKGV3a192aWV3X3NldHRpbmdfc2hvdWxkX2Rpc3Bs
YXlfY2FwdGlvbnNfc2V0KToKLSAgICAgICAgKGV3a192aWV3X3NldHRpbmdfc2hvdWxkX2Rpc3Bs
YXlfc3VidGl0bGVzX3NldCk6Ci0gICAgICAgIChld2tfdmlld19zZXR0aW5nX3Nob3VsZF9kaXNw
bGF5X3RleHRfZGVzY3JpcHRpb25zX3NldCk6Ci0gICAgICAgIChld2tfdmlld19zZXR0aW5nX2Vu
YWJsZV9mdWxsc2NyZWVuX3NldCk6Ci0gICAgICAgIChld2tfdmlld19zZXR0aW5nX3RpbGVkX2Jh
Y2tpbmdfc3RvcmVfZW5hYmxlZF9zZXQpOgotICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ190aWxl
ZF9iYWNraW5nX3N0b3JlX2VuYWJsZWRfZ2V0KToKLSAgICAgICAgKGV3a192aWV3X3RpbGVkX2Jh
Y2tpbmdfc3RvcmVfaW52YWxpZGF0ZSk6Ci0gICAgICAgIChFV0tQcml2YXRlOjpzdG9yYWdlU2Vz
c2lvbik6Ci0KLTIwMTQtMDEtMTMgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2Fs
aWEuY29tPgotCi0gICAgICAgIFtTT1VQXSBBZGQgU291cE5ldHdvcmtTZXNzaW9uIGNsYXNzIHRv
IHdyYXAgYSBTb3VwU2Vzc2lvbgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTI2ODEzCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgR3VzdGF2byBOb3Jvbmhh
IFNpbHZhLgotCi0gICAgICAgIFVzZSB0aGUgbmV3IFNvdXBOZXR3b3JrU2Vzc2lvbiBBUEkuCi0K
LSAgICAgICAgKiBld2svZXdrX2Nvb2tpZXMuY3BwOgotICAgICAgICAoZXdrX2Nvb2tpZXNfZmls
ZV9zZXQpOgotICAgICAgICAqIGV3ay9ld2tfbWFpbi5jcHA6Ci0gICAgICAgIChfZXdrX2luaXRf
Ym9keSk6Ci0gICAgICAgICogZXdrL2V3a19uZXR3b3JrLmNwcDoKLSAgICAgICAgKGV3a19uZXR3
b3JrX3Byb3h5X3VyaV9zZXQpOgotICAgICAgICAoZXdrX25ldHdvcmtfcHJveHlfdXJpX2dldCk6
Ci0gICAgICAgIChld2tfbmV0d29ya190bHNfY2VydGlmaWNhdGVfY2hlY2tfZ2V0KToKLSAgICAg
ICAgKGV3a19uZXR3b3JrX3Rsc19jZXJ0aWZpY2F0ZV9jaGVja19zZXQpOgotICAgICAgICAoZXdr
X25ldHdvcmtfdGxzX2NhX2NlcnRpZmljYXRlc19wYXRoX2dldCk6Ci0gICAgICAgIChld2tfbmV0
d29ya190bHNfY2FfY2VydGlmaWNhdGVzX3BhdGhfc2V0KToKLSAgICAgICAgKGV3a19uZXR3b3Jr
X2RlZmF1bHRfc291cF9zZXNzaW9uX2dldCk6Ci0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoK
LSAgICAgICAgKGV3a192aWV3X3NvdXBfc2Vzc2lvbl9nZXQpOgotICAgICAgICAoZXdrX3ZpZXdf
c291cF9zZXNzaW9uX3NldCk6Ci0KLTIwMTQtMDEtMTIgIEppbndvbyBTb25nICA8amlud29vNy5z
b25nQHNhbXN1bmcuY29tPgotCi0gICAgICAgIEZpeCBidWlsZCB3YXJuaW5ncyBieSB1bnVzZWQg
cGFyYW1ldGVyCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMjY4NjcKLQotICAgICAgICBSZXZpZXdlZCBieSBHeXV5b3VuZyBLaW0uCi0KLSAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuaDoKLSAgICAgICAgKFdlYkNvcmU6OkVk
aXRvckNsaWVudEVmbDo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgpOiBSZW1vdmUgdW51c2VkIHBhcmFt
ZXRlciAnY2hlY2tpbmdUeXBlcycuCi0KLTIwMTQtMDEtMTEgIEFuZGVycyBDYXJsc3NvbiAgPGFu
ZGVyc2NhQGFwcGxlLmNvbT4KLQotICAgICAgICBCdWlsZCBmaXguCi0KLSAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlckNsaWVudEVmbDo6cHJvZ3Jlc3NTdGFydGVkKToKLQotMjAxNC0wMS0xMCAgQW5k
ZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgotCi0gICAgICAgIFR3ZWFrIFByb2dy
ZXNzVHJhY2tlckNsaWVudCBmdW5jdGlvbnMKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEyNjgwOAotCi0gICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWlu
aWcuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHA6
Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6cHJvZ3Jlc3NTdGFydGVk
KToKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpwcm9ncmVzc0VzdGlt
YXRlQ2hhbmdlZCk6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6cHJv
Z3Jlc3NGaW5pc2hlZCk6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRFZmwuaDoKLQotMjAxNC0wMS0xMCAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUu
Y29tPgotCi0gICAgICAgIE1vdmUgcHJvZ3Jlc3MgdHJhY2tpbmcgZnVuY3Rpb25zIGZyb20gRnJh
bWVMb2FkZXJDbGllbnQgdG8gYSBuZXcgUHJvZ3Jlc3NUcmFja2VyQ2xpZW50Ci0gICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjY4MDEKLQotICAgICAgICBS
ZXZpZXdlZCBieSBTYW0gV2VpbmlnLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRFZmwuaDoKLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAo
X2V3a192aWV3X3ByaXZfbmV3KToKLQotMjAxNC0wMS0wOCAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNo
b2lAc2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW0VGTF0gTWVyZ2UgZXdrX3ZpZXdfc2luZ2xlIGlu
dG8gZXdrX3ZpZXcKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEyNjUwOAotCi0gICAgICAgIFJldmlld2VkIGJ5IEd5dXlvdW5nIEtpbS4KLQotICAgICAg
ICBTaW5jZSBld2tfdmlld190aWxlZCBpcyByZW1vdmVkIGF0IHIxNjExMzQsIHdlIGRvbid0IG5l
ZWQgdG8ga2VlcAotICAgICAgICBld2tfdmlld19zaW5nbGUgb3V0IG9mIGV3a192aWV3LmNwcC4K
LQotICAgICAgICBUaGlzIHBhdGNoIG1vdmVzIHRoZSBsb2dpYyBvZiBld2tfdmlld19zaW5nbGUg
dG8gZXdrX3ZpZXcgYW5kIHJlZmFjdG9ycyBpdC4KLSAgICAgICAgSW4gYWRkaXRpb24sIHJlcGxh
Y2VzIDAuMDAwMDEgdG8gZXBpc2lsb24uCi0KLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgot
ICAgICAgICAoX2V3a192aWV3X3NtYXJ0X2FkZCk6Ci0gICAgICAgIChfZXdrX3ZpZXdfc21hcnRf
cmVzaXplKTogTWVyZ2VkIHdpdGggdGhlIGxvZ2ljIG9mIGV3a192aWV3X3NpbmdsZS4KLSAgICAg
ICAgKF9ld2tfdmlld19zY3JlZW5fbW92ZSk6IE1vdmVkIGZyb20gZXdrX3ZpZXdfc2luZ2xlLmNw
cC4KLSAgICAgICAgKF9ld2tfdmlld19zY3JvbGxfcHJvY2Vzcyk6IERpdHRvLgotICAgICAgICAo
X2V3a192aWV3X3NtYXJ0X3Njcm9sbHNfcHJvY2Vzcyk6IERpdHRvLgotICAgICAgICAoX2V3a192
aWV3X3NtYXJ0X3JlcGFpbnRzX3Byb2Nlc3MpOiBEaXR0by4KLSAgICAgICAgKF9ld2tfdmlld19z
bWFydF9jYWxjdWxhdGUpOiBSZW1vdmVkIHVubmVjZXNzYXJ5IGNoZWNrIHJvdXRpbmUgZm9yIHNj
cm9sbHNfcHJvY2Vzcy4KLSAgICAgICAgKF9ld2tfdmlld19zbWFydF96b29tX3dlYWtfc2V0KToK
LSAgICAgICAgKF9ld2tfdmlld19zbWFydF96b29tX3dlYWtfc21vb3RoX3NjYWxlX3NldCk6Ci0g
ICAgICAgIChld2tfdmlld19iYXNlX3NtYXJ0X3NldCk6IE1lcmdlZCBzbWFydCBtZXRob2Qgb2Yg
ZXdrX3ZpZXdfc2luZ2xlLgotICAgICAgICAoZXdrX3ZpZXdfc2luZ2xlX3NtYXJ0X3NldCk6Ci0g
ICAgICAgIChfZXdrX3ZpZXdfc2luZ2xlX3NtYXJ0X2NsYXNzX25ldyk6Ci0gICAgICAgIChld2tf
dmlld19zaW5nbGVfYWRkKToKLSAgICAgICAgKGV3a192aWV3X2JnX2NvbG9yX3NldCk6Ci0gICAg
ICAgIChld2tfdmlld19wcmVfcmVuZGVyX3JlZ2lvbik6Ci0gICAgICAgIChld2tfdmlld19zY3Jv
bGxzX3Byb2Nlc3MpOgotICAgICAgICAqIGV3ay9ld2tfdmlldy5oOgotICAgICAgICAqIGV3ay9l
d2tfdmlld19wcml2YXRlLmg6IFJlbW92ZWQgdW5uY2Vzc2FyeSBmdW5jdGlvbnMuCi0gICAgICAg
ICogZXdrL2V3a192aWV3X3NpbmdsZS5jcHA6IFJlbW92ZWQuCi0KLTIwMTQtMDEtMDggIEFuZGVy
cyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KLQotICAgICAgICBBZGQgV1RGOjpTdHJp
bmdWaWV3IGFuZCB1c2UgaXQgZm9yIGdyYW1tYXIgY2hlY2tpbmcKLSAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNjY0NAotCi0gICAgICAgIFJldmlld2Vk
IGJ5IEFudHRpIEtvaXZpc3RvLgotCi0gICAgICAgIFVwZGF0ZSB0byBtYXRjaCBXZWJDb3JlIGNo
YW5nZXMuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuaDoKLSAg
ICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEVmbDo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgpOgot
Ci0yMDE0LTAxLTA1ICBKaW53b28gU29uZyAgPGppbndvbzcuc29uZ0BzYW1zdW5nLmNvbT4KLQot
ICAgICAgICBbRUZMXSBGaXggZmFpbGluZyBXZWJLaXQxIEFQSSB0ZXN0IG9mIGV3a192aWV3X3Nl
dHRpbmdfdGlsZWRfYmFja2luZ19zdG9yZQotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTI2NTA5Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgR3l1eW91bmcg
S2ltLgotCi0gICAgICAgIEluIFdlYktpdDEgRUZMIHBvcnQsIHVuaXQgdGVzdCB3YXMgdXNpbmcg
YSB3ZWJ2aWV3IGJhc2VkIG9uIHRpbGVkIGJhY2tpbmcgc3RvcmUsCi0gICAgICAgIHNvIGV3a192
aWV3X3NldHRpbmdfdGlsZWRfYmFja2luZ19zdG9yZV9lbmFibGVkX3NldCgpIHdhcyBzZXQgYXMg
dHJ1ZSBhcyBkZWZhdWx0LgotICAgICAgICBBcyB3ZSBkbyBub3QgbmVlZCB0byB1c2UgdGlsZWQg
YmFja2luZyBzdG9yZSwgd2UgZGlzYWJsZSB0aWxlZCBiYWNraW5nIHN0b3JlCi0gICAgICAgIGFu
ZCByZW1vdmUgdW5uZWNlc3NhcnkgRXdrVmlld1R5cGUgaW4gdW5pdCB0ZXN0IHdlYnZpZXcuCi0K
LSAgICAgICAgKiB0ZXN0cy9Vbml0VGVzdFV0aWxzL0VXS1Rlc3RWaWV3LmNwcDoKLSAgICAgICAg
KEVXS1VuaXRUZXN0czo6RVdLVGVzdFZpZXc6OmluaXQpOgotICAgICAgICAqIHRlc3RzL1VuaXRU
ZXN0VXRpbHMvRVdLVGVzdFZpZXcuaDoKLSAgICAgICAgKiB0ZXN0cy90ZXN0X2V3a192aWV3LmNw
cDogRml4IHdyb25nIGNvbW1lbnQgaW4gdGhlIHVuaXQgdGVzdC4KLQotMjAxNC0wMS0wMiAgR2F2
aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+Ci0KLSAgICAgICAgTWVyZ2Ug
ZGlkTW92ZU9uc2NyZWVuIC8gcGFnZSB2aXNpYmlsaXR5IHRvIGlzVmlzaWJsZQotICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI2MjY4Ci0KLSAgICAgICAg
UmV2aWV3ZWQgYnkgVGltIEhvcnRvbi4KLQotICAgICAgICBUaGUgb25zY3JlZW4gc3RhdGUgbW9z
dCBjbG9zZWx5IHRyYWNrcyB2aWV3IHZpc2liaWxpdHkgKHRob3VnaCBjdXJyZW50bHkKLSAgICAg
ICAgYWxzbyB0cmFja3MgYSBtaXggb2YgaW4td2luZG93IHN0YXRlKS4gTWFrZSBtb3JlIGNvbnNp
c3RlbnQsIHNpbXBsaWZ5LAotICAgICAgICBhbmQgbW92ZSBhbGwgYW5pbWF0aW9uIHN1c3BlbnNp
b24gbG9naWMgdG8gUGFnZSwgc28gaXQgY2FuIGJlIGNvbnRyb2xsZWQKLSAgICAgICAgYnkgdGhl
IFBhZ2VUaHJvdHRsZXIuCi0KLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAo
ZXdrX3ZpZXdfdmlzaWJpbGl0eV9zdGF0ZV9zZXQpOgotICAgICAgICAgICAgLSBzZXRWaXNpYmls
aXR5U3RhdGUgLT4gc2V0SXNWaXNpYmxlL3NldElzUHJlcmVuZGVyLgotCi0yMDEzLTEyLTI5ICBS
eXVhbiBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBbRUZMXSBSZW1v
dmUgZXdrX3ZpZXdfdGlsZWQKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEyNTk2MQotCi0gICAgICAgIFJldmlld2VkIGJ5IEd5dXlvdW5nIEtpbS4KLQot
ICAgICAgICBXZSBkaWRuJ3QgdXNlIGV3a192aWV3X3RpbGVkIHZlcnkgbG9uZyB0aW1lIHdoaWxl
IHdlIGZvY3VzZWQgd2Via2l0Mi9lZmwuCi0gICAgICAgIFRoZXJlIGFyZSBtYW55IGJ1Z3MgYW5k
IHdlIGRvbid0IGhhdmUgcGxhbiB0byBmaXggdGhlbS4KLSAgICAgICAgSW5zdGVhZCwgV2Ugd2ls
bCB1c2UgV2ViQ29yZSdzIFRpbGVkQmFja2luZ1N0b3JlIGFuZCBpdCBsb29rcyBtb3JlIHN0YWJs
ZS4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcDoK
LSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjp0cmFuc2l0aW9uVG9Db21t
aXR0ZWRGb3JOZXdQYWdlKToKLSAgICAgICAgKiBld2svZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUu
Y3BwOiBSZW1vdmVkLgotICAgICAgICAqIGV3ay9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcml2
YXRlLmg6IFJlbW92ZWQuCi0gICAgICAgICogZXdrL2V3a190aWxlZF9tYXRyaXguY3BwOiBSZW1v
dmVkLgotICAgICAgICAqIGV3ay9ld2tfdGlsZWRfbWF0cml4X3ByaXZhdGUuaDogUmVtb3ZlZC4K
LSAgICAgICAgKiBld2svZXdrX3RpbGVkX21vZGVsLmNwcDogUmVtb3ZlZC4KLSAgICAgICAgKiBl
d2svZXdrX3RpbGVkX21vZGVsX3ByaXZhdGUuaDogUmVtb3ZlZC4KLSAgICAgICAgKiBld2svZXdr
X3ZpZXcuY3BwOgotICAgICAgICAqIGV3ay9ld2tfdmlldy5oOgotICAgICAgICAqIGV3ay9ld2tf
dmlld19wcml2YXRlLmg6Ci0gICAgICAgICogZXdrL2V3a192aWV3X3RpbGVkLmNwcDogUmVtb3Zl
ZC4KLSAgICAgICAgKiB0ZXN0cy9Vbml0VGVzdFV0aWxzL0VXS1Rlc3RWaWV3LmNwcDoKLSAgICAg
ICAgKEVXS1VuaXRUZXN0czo6RVdLVGVzdFZpZXc6OmluaXQpOgotCi0yMDEzLTEyLTIzICBSeXVh
biBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBVbnJldmlld2VkIGJ1
aWxkIGZpeCBhZnRlciByMTYxMDMzCi0KLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAg
ICAgICAoZXdrX3ZpZXdfanNfb2JqZWN0X2FkZCk6IFBhc3NlZCB0aGlzT2JqZWN0IHRvIGNvbnN0
cnVjdG9yIG9mIFB1dFByb3BlcnR5U2xvdC4KLQotMjAxMy0xMi0xMSAgSm9zZXBoIFBlY29yYXJv
ICA8cGVjb3Jhcm9AYXBwbGUuY29tPgotCi0gICAgICAgIFdlYiBJbnNwZWN0b3I6IFB1c2ggTW9y
ZSBJbnNwZWN0b3IgUmVxdWlyZWQgQ2xhc3NlcyBEb3duIGludG8gSmF2YVNjcmlwdENvcmUKLSAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNTMyNAotCi0g
ICAgICAgIFJldmlld2VkIGJ5IFRpbW90aHkgSGF0Y2hlci4KLQotICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHA6Ci0gICAgICAgICogZXdrL2V3a19m
cmFtZS5jcHA6Ci0KLTIwMTMtMTEtMjMgIFhhYmllciBSb2RyaWd1ZXogQ2FsdmFyICA8Y2FsdmFy
aXNAaWdhbGlhLmNvbT4KLQotICAgICAgICBbR1N0cmVhbWVyXSBSZW1vdmUgMC4xMCBjb2RlcGF0
aAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0NTM0
Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgUGhpbGlwcGUgTm9ybWFuZC4KLQotICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJFZmwuY3BwOiBSZW1vdmVkLgot
Ci0yMDEzLTExLTIxICBQZXRlciBNb2xuYXIgIDxwbW9sbmFyLnUtc3plZ2VkQHBhcnRuZXIuc2Ft
c3VuZy5jb20+Ci0KLSAgICAgICAgUmVtb3ZlIEVOQUJMRV9XT1JLRVJTCi0gICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDU3ODQKLQotICAgICAgICBSZXZp
ZXdlZCBieSBEYXJpbiBBZGxlci4KLQotICAgICAgICAqIGV3ay9ld2tfc2V0dGluZ3MuY3BwOgot
ICAgICAgICAoZXdrX3NldHRpbmdzX21lbW9yeV9jYWNoZV9jbGVhcik6Ci0KLTIwMTMtMTEtMTgg
IFJ5dWFuIENob2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxdIElu
aXRpYWxpemUgZWZyZWV0IGJlZm9yZSBnZXR0aW5nIGRpcmVjdG9yaWVzCi0gICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQ1NjAKLQotICAgICAgICBSZXZp
ZXdlZCBieSBHeXV5b3VuZyBLaW0uCi0KLSAgICAgICAgZWZyZWV0IGlzIHVzZWQgdG8gZ2V0IHNl
dmVyYWwgZGlyZWN0b3JpZXMgaW5jbHVkaW5nIGhvbWUgZGllcmVjdG9yeSBzaW5jZQotICAgICAg
ICByMTIzNzMxLCBidXQgaXQgZG9lcyBub3QgY2FsbCBlZnJlZXRfaW5pdC9lZnJlZXRfc2h1dGRv
d24gZXhwbGljaXRseS4KLQotICAgICAgICAqIGV3ay9ld2tfbWFpbi5jcHA6IENhbGwgZWZyZWV0
X2luaXQoKS9lZnJlZXRfc2h1dGRvd24oKSBleHBsaWNpdGx5LgotICAgICAgICAoZXdrX2luaXQp
OgotICAgICAgICAoZXdrX3NodXRkb3duKToKLQotMjAxMy0xMS0xOCAgUnl1YW4gQ2hvaSAgPHJ5
dWFuLmNob2lAc2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW0VGTF0gQWRkIEVXZWJLaXRDb25maWcu
Y21ha2UgYW5kIEVXZWJLaXQyQ29uZmlnLmNtYWtlCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQ0NzgKLQotICAgICAgICBSZXZpZXdlZCBieSBHeXV5
b3VuZyBLaW0uCi0KLSAgICAgICAgRVdlYktpdCBpcyBidWlsdCB1c2luZyBDTWFrZSBidXQgYXBw
bGljYXRpb25zIHVzZSAqLnBjIHRvIHVzZSBpdC4KLSAgICAgICAgVGhpcyBwYXRjaCBwcm92aWRl
cyBFV2ViS2l0Q29uZmlnLmNtYWtlIGFuZCBFV2ViS2l0MkNvbmZpZy5jbWFrZQotICAgICAgICBm
b3IgYXBwbGljYXRpb25zIHdoaWNoIHVzZSBFV2Via2l0IGFuZCBpcyBjb21waWxlZCBieSBDTWFr
ZS4KLQotICAgICAgICAqIEVXZWJLaXRDb25maWcuY21ha2UuaW46IEFkZGVkLgotICAgICAgICAq
IEVXZWJLaXRDb25maWdWZXJzaW9uLmNtYWtlLmluOiBBZGRlZC4KLQotMjAxMy0xMS0xNSAgQWxi
ZXJ0byBHYXJjaWEgIDxiZXJ0b0BpZ2FsaWEuY29tPgotCi0gICAgICAgIFtFRkxdIExlYWsgaW4g
ZXdrX2ZyYW1lX2NlcnRpZmljYXRlX3N0YXR1c19nZXQoKQotICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0NDAxCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkg
Q2FybG9zIEdhcmNpYSBDYW1wb3MuCi0KLSAgICAgICAgVGhlIFNvdXBNZXNzYWdlIG9iamVjdCBp
cyBiZWluZyBsZWFrZWQuIEluIGluIHRoaXMgY2FzZSB0aGF0Ci0gICAgICAgIG9iamVjdCBpcyBu
b3QgZXZlbiBuZWNlc3Nhcnkgc2luY2UgUmVzb3VyY2VSZXF1ZXN0IGFscmVhZHkKLSAgICAgICAg
cHJvdmlkZXMgYSB3YXkgdG8gZ2V0IHRoZSBzb3VwIGZsYWdzIGRpcmVjdGx5LgotCi0gICAgICAg
ICogZXdrL2V3a19mcmFtZS5jcHA6Ci0gICAgICAgIChld2tfZnJhbWVfY2VydGlmaWNhdGVfc3Rh
dHVzX2dldCk6Ci0KLTIwMTMtMTEtMTAgIFRpYm9yIE1lc3phcm9zICA8bXRpYm9yQGluZi51LXN6
ZWdlZC5odT4KLQotICAgICAgICBDbGVhbnVwIHRoZSBFRkwgLS1taW5pbWFsIGJ1aWxkIGZyb20g
dW51c2VkIHBhcmFtZXRlcnMKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEyNDA0OAotCi0gICAgICAgIFJldmlld2VkIGJ5IEd5dXlvdW5nIEtpbS4KLQot
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChX
ZWJDb3JlOjpDaHJvbWVDbGllbnRFZmw6OmNyZWF0ZVdpbmRvdyk6Ci0gICAgICAgICogZXdrL2V3
a19zZXR0aW5ncy5jcHA6Ci0gICAgICAgIChld2tfc2V0dGluZ3Nfd2ViX2RhdGFiYXNlX3BhdGhf
c2V0KToKLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoZXdrX3ZpZXdfdmlz
aWJpbGl0eV9zdGF0ZV9zZXQpOgotICAgICAgICAoZXdrX3ZpZXdfdmlzaWJpbGl0eV9zdGF0ZV9n
ZXQpOgotCi0yMDEzLTExLTA1ICBYYWJpZXIgUm9kcmlndWV6IENhbHZhciAgPGNhbHZhcmlzQGln
YWxpYS5jb20+Ci0KLSAgICAgICAgW0dTdHJlYW1lcl0gUmVtb3ZlIE5BVElWRV9GVUxMU0NSRUVO
X1ZJREVPIHN1cHBvcnQKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEyMzQzNwotCi0gICAgICAgIFJldmlld2VkIGJ5IFBoaWxpcHBlIE5vcm1hbmQuCi0K
LSAgICAgICAgUmVtb3ZlZCBzb21lIGRlYWQgY29kZSBhcyBubyBHU3RyZWFtZXIgcG9ydCBpcyB1
c2luZyB0aGUgbmF0aXZlCi0gICAgICAgIGZ1bGxzY3JlZW4gdmlkZW8gc3VwcG9ydC4KLQotICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJFZmwuaDogUmVt
b3ZlZC4KLQotMjAxMy0xMS0wMSAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3VuZy5jb20+
Ci0KLSAgICAgICAgW0VGTF1bV0sxXSBSZW5kZXJpbmcgaXMgYnJva2VuIHdoZW4gc2Nyb2xsZWQg
ZXdrX3ZpZXdfc2luZ2xlIHJlcGVhdGVkbHkKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEyMzYwOQotCi0gICAgICAgIFJldmlld2VkIGJ5IEd5dXlvdW5n
IEtpbS4KLQotICAgICAgICBld2tfdmlld19zaW5nbGUgYWRkcyB3cm9uZyB1cGRhdGVSZWN0cyBl
eGNlcHQgbGFzdCBvbmUgaW4gc2Nyb2xsc19wcm9jZXNzLAotICAgICAgICBiZWNhdXNlIHByZXZp
b3VzIHVwZGF0ZVJlY3RzIGFyZSBub3QgY29uc2lkZXJlZCBhY2N1bXVsYXRlZCBzY3JvbGxPZmZz
ZXRzLgotCi0gICAgICAgICogZXdrL2V3a192aWV3X3NpbmdsZS5jcHA6Ci0gICAgICAgIChfZXdr
X3ZpZXdfc2luZ2xlX3NtYXJ0X3Njcm9sbHNfcHJvY2Vzcyk6Ci0gICAgICAgIE1lcmdlZCBzY3Jv
bGxPZmZzZXRzIHRvIGNhbGN1bGF0ZSB1cGRhdGVSZWN0cyBvbmNlLgotICAgICAgICBJdCB3aWxs
IGFsc28gcmVkdWNlIHVubmVjZXNzYXJ5IG1lbW9yeSBjb3B5IG9wZXJhdGlvbnMuCi0KLTIwMTMt
MTAtMTYgIEpvY2hlbiBFaXNpbmdlciAgPGpvY2hlbkBjaHJvbWl1bS5vcmc+Ci0KLSAgICAgICAg
QSBwYWdlIHNob3VsZCBleGl0IGZ1bGxzY3JlZW4gbW9kZSBpZiBpdCBvcGVucyBhIG5ldyBwb3B1
cAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIyODY1
Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgSmVyIE5vYmxlLgotCi0gICAgICAgIElmIGEgZnVsbHNj
cmVlbiBwYWdlIG9wZW5zIGEgcG9wdXAsIHRoZSBwb3B1cCB3b3VsZCBiZSBoaWRkZW4gYW5kCi0g
ICAgICAgIHRoZXJlZm9yZSBpbnZpc2libGUgdG8gdGhlIHVzZXIuIFRvIGF2b2lkIHRoaXMsIGV4
aXQgZnVsbHNjcmVlbiBtb2RlCi0gICAgICAgIGJlZm9yZSBvcGVuaW5nIGEgbmV3IHdpbmRvdy4K
LQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHA6Ci0gICAgICAg
IChXZWJDb3JlOjpDaHJvbWVDbGllbnRFZmw6OmNyZWF0ZVdpbmRvdyk6Ci0KLTIwMTMtMTAtMDcg
IFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KLQotICAgICAgICBDb25zb2xpZGF0ZSBmaW5k
U3RyaW5nIGZ1bmN0aW9ucwotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTIyNDgwCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCi0KLSAg
ICAgICAgKiBld2svZXdrX2ZyYW1lLmNwcDoKLSAgICAgICAgKGV3a19mcmFtZV90ZXh0X3NlYXJj
aCk6Ci0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAgKGV3a192aWV3X3RleHRf
c2VhcmNoKToKLQotMjAxMy0xMC0wNyAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgotCi0g
ICAgICAgIENUVEU6IFVzZSByZWZlcmVuY2VzIGluIGFuZCBhcm91bmQgRHJhZ0NvbnRyb2xsZXIK
LSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMjQyNwot
Ci0gICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCi0KLSAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9EcmFnQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkRyYWdDbGllbnRF
Zmw6OndpbGxQZXJmb3JtRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKToKLSAgICAgICAgKFdlYkNvcmU6
OkRyYWdDbGllbnRFZmw6OndpbGxQZXJmb3JtRHJhZ1NvdXJjZUFjdGlvbik6Ci0gICAgICAgIChX
ZWJDb3JlOjpEcmFnQ2xpZW50RWZsOjphY3Rpb25NYXNrRm9yRHJhZyk6Ci0gICAgICAgIChXZWJD
b3JlOjpEcmFnQ2xpZW50RWZsOjpzdGFydERyYWcpOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L0RyYWdDbGllbnRFZmwuaDoKLQotMjAxMy0xMC0wNCAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJz
Y2FAYXBwbGUuY29tPgotCi0gICAgICAgIEZyYW1lUG9saWN5RnVuY3Rpb24gc2hvdWxkIGJlIGFu
IHN0ZDo6ZnVuY3Rpb24KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEyMjM2MgotCi0gICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgotCi0gICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwOgotICAgICAgICAo
V2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmNhbGxQb2xpY3lGdW5jdGlvbik6Ci0gICAg
ICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hXaWxsU3VibWl0Rm9y
bSk6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEZWNp
ZGVQb2xpY3lGb3JSZXNwb25zZSk6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVu
dEVmbDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24pOgotICAgICAgICAo
V2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvbik6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRFZmwuaDoKLQotMjAxMy0xMC0wMyAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgotCi0g
ICAgICAgIFJlbW92ZSBzaG91bGRSdWJiZXJCYW5kSW5EaXJlY3Rpb24gZnJvbSB0aGUgV0tCdW5k
bGVQYWdlVUlDbGllbnQKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEyMjMwOQotCi0gICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCi0KLSAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuaDoKLQotMjAxMy0xMC0wMSAg
U2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgotCi0gICAgICAgIENUVEU6IERPTVdyYXBwZXJX
b3JsZHMgc2hvdWxkIGJlIHBhc3NlZCBhcm91bmQgYnkgcmVmZXJlbmNlCi0gICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjIyMDYKLQotICAgICAgICBSZXZp
ZXdlZCBieSBBbmRyZWFzIEtsaW5nLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJl
bmRlclRyZWVTdXBwb3J0RWZsLmNwcDoKLSAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEVm
bDo6ZXZhbHVhdGVTY3JpcHRJbklzb2xhdGVkV29ybGQpOgotICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZCk6Ci0gICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuaDoKLQotMjAxMy0wOS0z
MCAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgotCi0gICAgICAgIEZpeCB0aGUgYnVpbGQu
Ci0KLSAgICAgICAgKiBld2svZXdrX3NldHRpbmdzLmNwcDoKLQotMjAxMy0wOS0zMCAgU2FtIFdl
aW5pZyAgPHNhbUB3ZWJraXQub3JnPgotCi0gICAgICAgIFJlbW92ZSBzdXBwb3J0IGZvciBET01G
aWxlU3lzdGVtCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMjIxMzcKLQotICAgICAgICBSZXZpZXdlZCBieSBBbmRlcnMgQ2FybHNzb24uCi0KLSAgICAg
ICAgKiBld2svZXdrX3NldHRpbmdzLmNwcDoKLSAgICAgICAgKGV3a19zZXR0aW5nc19maWxlX3N5
c3RlbV9wYXRoX3NldCk6Ci0KLTIwMTMtMDktMjggIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUu
Y29tPgotCi0gICAgICAgIEFkZCBGcmFtZTo6bWFpbkZyYW1lIGFuZCBGcmFtZTo6aXNNYWluRnJh
bWUKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMjA2
NAotCi0gICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCi0KLSAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hXaWxsU2VuZFJlcXVlc3QpOgotICAgICAgICAo
V2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmFzc2lnbklkZW50aWZpZXJUb0luaXRpYWxS
ZXF1ZXN0KToKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjp1cGRhdGVH
bG9iYWxIaXN0b3J5KToKLSAgICAgICAgQ2FsbCBpc01haW5GcmFtZS4KLQotMjAxMy0wOS0yNiAg
RGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+Ci0KLSAgICAgICAgcmVuYW1lIEtVUkwgdG8g
VVJMCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjIx
NAotCi0gICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCi0KLSAgICAgICAgKiBtYW55
IGZpbGVzOiBSZW5hbWVkLCB1c2luZyBzY3JpcHQuCi0KLTIwMTMtMDktMjcgIERhcmluIEFkbGVy
ICA8ZGFyaW5AYXBwbGUuY29tPgotCi0gICAgICAgIEFkZCBlbXB0eSBNYWluRnJhbWUgY2xhc3MK
LSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMTc3MAot
Ci0gICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCi0KLSAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dEVmbC5jcHA6Ci0gICAgICAgICog
V2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKiBld2svZXdr
X3ZpZXcuY3BwOgotICAgICAgICBJbmNsdWRlIE1haW5GcmFtZS5oIGluc3RlYWQgb2YgRnJhbWUu
aCBhcyBuZWVkZWQuCi0KLTIwMTMtMDktMjUgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBs
ZS5jb20+Ci0KLSAgICAgICAgUmVmYWN0b3IgUnVudGltZUVuYWJsZWRGZWF0dXJlcyBhcyBhIFNp
bmdsZXRvbi4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEyMTg4My4KLQotICAgICAgICBSZXZpZXdlZCBieSBKZXIgTm9ibGUuCi0KLSAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwOgotICAgICAgICAoRHVt
cFJlbmRlclRyZWVTdXBwb3J0RWZsOjpzZXRDU1NSZWdpb25zRW5hYmxlZCk6IFVzZSBzaW5nbGV0
b24uCi0gICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OnNldFNlYW1sZXNzSUZyYW1l
c0VuYWJsZWQpOiBEaXR0by4KLSAgICAgICAgKiBld2svZXdrX3NldHRpbmdzLmNwcDoKLSAgICAg
ICAgKGV3a19zZXR0aW5nc19zaGFkb3dfZG9tX2VuYWJsZV9nZXQpOiBEaXR0by4KLSAgICAgICAg
KGV3a19zZXR0aW5nc19zaGFkb3dfZG9tX2VuYWJsZV9zZXQpOgotICAgICAgICAqIGV3ay9ld2tf
dmlldy5jcHA6Ci0gICAgICAgIChfZXdrX3ZpZXdfcHJpdl9uZXcpOiBEaXR0by4KLQotMjAxMy0w
OS0yMCAgTWFyaW8gU2FuY2hleiBQcmFkYSAgPG1hcmlvLnByYWRhQHNhbXN1bmcuY29tPgotCi0g
ICAgICAgIFtBVEtdIERvIG5vdCBleHBvc2UgYXJpYS1oZWxwIGluIEFUSyBiYXNlZCBwbGF0Zm9y
bXMKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMTY3
NQotCi0gICAgICAgIFJldmlld2VkIGJ5IENocmlzIEZsZWl6YWNoLgotCi0gICAgICAgIFJlbW92
ZWQgYWNjZXNzaWJpbGl0eUhlbHBUZXh0KCkgaGVscGVyIG1ldGhvZCBmcm9tCi0gICAgICAgIER1
bXBSZW5kZXJTdXBwb3J0RWZsJ3MgQVBJLCBzaW5jZSBpdCdzIG5vdCBsb25nZXIgbmVlZGVkLgot
Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcDog
UmVtb3ZlZCBtZXRob2QuCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVT
dXBwb3J0RWZsLmg6IERpdHRvLgotCi0yMDEzLTA5LTE2ICBFbnJpY2EgQ2FzdWNjaSAgPGVucmlj
YUBhcHBsZS5jb20+Ci0KLSAgICAgICAgUmVtb3ZlIHVudXNlZCBmdW5jdGlvbiBkaWRTZXRTZWxl
Y3Rpb25UeXBlc0ZvclBhc3RlYm9hcmQgZnJvbSBFZGl0b3JDbGllbnQuCi0gICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjE0NjQKLQotICAgICAgICBSZXZp
ZXdlZCBieSBEYXJpbiBBZGxlci4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNs
aWVudEVmbC5jcHA6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmg6
Ci0KLTIwMTMtMDktMTIgIE1pa2hhaWwgUG96ZG55YWtvdiAgPG1pa2hhaWwucG96ZG55YWtvdkBp
bnRlbC5jb20+Ci0KLSAgICAgICAgUmVtb3ZlIGhvbWUtYnJld2VkIG51bGxwdHIKLSAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExOTYyNAotCi0gICAgICAg
IFJldmlld2VkIGJ5IEFuZGVycyBDYXJsc3Nvbi4KLQotICAgICAgICBUaGUgc3RhbmRhcmQgQysr
MTEgbnVsbHB0ciBhbmQgc3RkOjpudWxscHRyX3QgdHlwZSBzaG91bGQgYmUgdXNlZCBub3cuCi0K
LSAgICAgICAgKiB0ZXN0cy9Vbml0VGVzdFV0aWxzL0VXS1Rlc3RWaWV3LmNwcDoKLQotMjAxMy0w
OS0xMCAgTWFyY2VsbyBNb3JhaXMgIDxtLm1vcmFpc0BzYW1zdW5nLmNvbT4KLQotICAgICAgICBb
RUZMXSBXZWJJbnNwZWN0b3I6IE1vdmUgdG8gbmV3IHdlYmluc3BlY3RvcgotICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE5NTU5Ci0KLSAgICAgICAgUmV2
aWV3ZWQgYnkgR3l1eW91bmcgS2ltLgotCi0gICAgICAgIExvYWRpbmcgdGhlIG5ldyBXZWIgSW5z
cGVjdG9yIHBhZ2UgaW5zdGVhZCBvZiB0aGUgb2xkIGluc3BlY3Rvci4KLSAgICAgICAgQ28tYXV0
aG9yOiBBbmRyZSBMb3VyZWlybyA8YW5kcmUudmxAc2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yQ2xpZW50RWZsOjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQpOgotCi0yMDEzLTA5LTA1
ICBSeXVhbiBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBbQ01BS0Vd
IEFkZCBjKysweCBpbnRvIENYWF9GTEFHUyBhcyBhIGRlZmF1bHQKLSAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMDgxMgotCi0gICAgICAgIFVucmV2aWV3
ZWQgYnVpbGQgZml4IGZvciBFRkwgcG9ydHMuCi0KLSAgICAgICAgKiB0ZXN0cy9Vbml0VGVzdFV0
aWxzL0VXS1Rlc3RDb25maWcuaDogQWRkIHNwYWNlIGJldHdlZW4gc3RyaW5ncy4KLQotMjAxMy0w
OC0yOCAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW0VG
TF0gTGV0IFBhZ2UgY3JlYXRlIHRoZSBtYWluIEZyYW1lCi0gICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjAzNjAKLQotICAgICAgICBSZXZpZXdlZCBieSBE
YXJpbiBBZGxlci4KLQotICAgICAgICBQYWdlIGFsd2F5cyBjcmVhdGVzIHRoZSBtYWluIEZyYW1l
IGJ5IGl0c2VsZiBhZnRlciByMTU0NjE2LgotICAgICAgICBUaGlzIHBhdGNoIGZvbGxvd3MgdGhl
IGNoYW5nZXMgZm9yIFdlYktpdC9FZmwgbGlrZSBvdGhlciBwb3J0cy4KLQotICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpjcmVhdGVGcmFtZSk6Ci0gICAgICAgIE1vdmVkIHRoZSBs
b2dpYyBvZiBld2tfdmlld19mcmFtZV9jcmVhdGUuCi0gICAgICAgICogZXdrL2V3a19mcmFtZS5j
cHA6Ci0gICAgICAgIChld2tfZnJhbWVfaW5pdCk6Ci0gICAgICAgIChld2tfZnJhbWVfY2hpbGRf
YWRkKToKLSAgICAgICAgTW92ZWQgY29uc3RydWN0aW9uIGxvZ2ljIG9mIEZyYW1lIGFuZCBGcmFt
ZUxvZGVyQ2xpZW50RWZsIGZyb20gZXdrX3ZpZXcuCi0gICAgICAgIChFV0tQcml2YXRlOjpzZXRD
b3JlRnJhbWUpOgotICAgICAgICAqIGV3ay9ld2tfZnJhbWVfcHJpdmF0ZS5oOgotICAgICAgICAq
IGV3ay9ld2tfdmlldy5jcHA6IFJlbW92ZWQgX2V3a192aWV3X2NvcmVfZnJhbWVfbmV3LgotICAg
ICAgICAoX2V3a192aWV3X3ByaXZfbmV3KToKLSAgICAgICAgKF9ld2tfdmlld19zbWFydF9hZGQp
OgotICAgICAgICAoZXdrX3ZpZXdfZnJhbWVfcmVjdF9jaGFuZ2VkKToKLSAgICAgICAgKiBld2sv
ZXdrX3ZpZXdfcHJpdmF0ZS5oOgotCi0yMDEzLTA4LTI0ICBEYXJpbiBBZGxlciAgPGRhcmluQGFw
cGxlLmNvbT4KLQotICAgICAgICBGcmFtZTo6dHJlZSBzaG91bGQgcmV0dXJuIGEgcmVmZXJlbmNl
IGluc3RlYWQgb2YgYSBwb2ludGVyCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMjAyNTkKLQotICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5n
LgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNw
cDoKLSAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6Y2xlYXJGcmFtZU5hbWUpOgot
ICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpmcmFtZUNoaWxkcmVuKToKLSAgICAg
ICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6ZnJhbWVQYXJlbnQpOgotICAgICAgICAqIGV3
ay9ld2tfZnJhbWUuY3BwOgotICAgICAgICAoX2V3a19mcmFtZV9jaGlsZHJlbl9pdGVyYXRvcl9u
ZXh0KToKLSAgICAgICAgKGV3a19mcmFtZV9jaGlsZF9maW5kKToKLSAgICAgICAgKGV3a19mcmFt
ZV9uYW1lX2dldCk6Ci0gICAgICAgIChld2tfZnJhbWVfY2hpbGRfYWRkKToKLSAgICAgICAgKiBl
d2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoZXdrX3ZpZXdfZnJhbWVfY3JlYXRlKToKLSAgICAg
ICAgVXNlIHRyZWUoKS4gaW5zdGVhZCBvZiB0cmVlKCktPi4KLQotMjAxMy0wOC0yMiAgQW5kcmVh
cyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+Ci0KLSAgICAgICAgRUZMIGJ1aWxkIGp1aWNlLgot
Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcDoKLSAgICAgICAg
KGtpdCk6Ci0KLTIwMTMtMDgtMjAgIFByYXRpayBTb2xhbmtpICA8cHNvbGFua2lAYXBwbGUuY29t
PgotCi0gICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8xMjAwMjk+IERvY3VtZW50OjptYXJr
ZXJzKCkgc2hvdWxkIHJldHVybiBhIHJlZmVyZW5jZQotCi0gICAgICAgIFJldmlld2VkIGJ5IEFu
ZHJlYXMgS2xpbmcuCi0KLSAgICAgICAgRG9jdW1lbnQ6Om1fbWFya2VycyBpcyBuZXZlciBOVUxM
IHNvIHJldHVybiBhIHJlZmVyZW5jZSBmcm9tIERvY3VtZW50OjptYXJrZXJzKCkuIEFsc28gbWFy
awotICAgICAgICBtX21hcmtlcnMgYXMgY29uc3QgYW5kIGluaXRpYWxpemUgaXQgaW4gbWVtYmVy
IGluaXRpYWxpemF0aW9uLgotCi0gICAgICAgICogZXdrL2V3a19mcmFtZS5jcHA6Ci0gICAgICAg
IChld2tfZnJhbWVfdGV4dF9tYXRjaGVzX3VubWFya19hbGwpOgotICAgICAgICAoZXdrX2ZyYW1l
X3RleHRfbWF0Y2hlc19udGhfcG9zX2dldCk6Ci0KLTIwMTMtMDgtMTkgIFByYXRpayBTb2xhbmtp
ICA8cHNvbGFua2lAYXBwbGUuY29tPgotCi0gICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8x
MTk5MTg+IEZyYW1lOjpzZWxlY3Rpb24oKSBzaG91bGQgcmV0dXJuIGEgcmVmZXJlbmNlCi0KLSAg
ICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCi0KLSAgICAgICAgbV9zZWxlY3Rpb24gaXMg
bmV2ZXIgTlVMTCBzbyByZXR1cm4gYSByZWZlcmVuY2UgZnJvbSBGcmFtZTo6c2VsZWN0aW9uKCku
IEFsc28gcmVtb3ZlZCBzb21lCi0gICAgICAgIHVubmVjZXNzYXJ5IG51bGwgY2hlY2tzIGFuZCBh
c3NlcnQgZGlmZiB0cyBleHBvc2VkIGFzIGEgcmVzdWx0LgotCi0gICAgICAgICogV2ViQ29yZVN1
cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcDoKLSAgICAgICAgKER1bXBSZW5kZXJU
cmVlU3VwcG9ydEVmbDo6c2VsZWN0aW9uUmVjdGFuZ2xlKToKLSAgICAgICAgKER1bXBSZW5kZXJU
cmVlU3VwcG9ydEVmbDo6Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UpOgotICAgICAgICAoRHVt
cFJlbmRlclRyZWVTdXBwb3J0RWZsOjpzZWxlY3RlZFJhbmdlKToKLSAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xp
ZW50RWZsOjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVudCk6Ci0gICAgICAgICogZXdrL2V3a19m
cmFtZS5jcHA6Ci0gICAgICAgIChld2tfZnJhbWVfdGV4dF9zZWxlY3Rpb25fdHlwZV9nZXQpOgot
Ci0yMDEzLTA4LTE2ICBKYWVodW4gTGltICA8bGphZWh1bi5saW1Ac2Ftc3VuZy5jb20+Ci0KLSAg
ICAgICAgW0VGTF0gVW5yZXZpZXdlZCBidWlsZCBmaXggYWZ0ZXIgcjE1NDE5MgotCi0gICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcDoKLSAgICAgICAg
KER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6ZXZhbHVhdGVTY3JpcHRJbklzb2xhdGVkV29ybGQp
OgotCi0yMDEzLTA4LTE2ICBQcmF0aWsgU29sYW5raSAgPHBzb2xhbmtpQGFwcGxlLmNvbT4KLQot
ICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTE5ODUyPiBGcmFtZTo6c2NyaXB0Q29udHJv
bGxlcigpIHNob3VsZCByZXR1cm4gYSByZWZlcmVuY2UKLQotICAgICAgICBSZXZpZXdlZCBieSBB
bmRyZWFzIEtsaW5nLgotCi0gICAgICAgIG1fc2NyaXB0IGlzIG5ldmVyIE5VTEwgc28gd2UgY2Fu
IGp1c3QgcmV0dXJuIGEgcmVmZXJlbmNlLiBBbHNvIHJlbW92ZSBzb21lIHBvaW50bGVzcyBudWxs
Ci0gICAgICAgIGNoZWNrcyBhcyBhIHJlc3VsdCBvZiBkb2luZyB0aGlzLgotCi0gICAgICAgICog
V2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcDoKLSAgICAgICAgKER1
bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6ZXZhbHVhdGVTY3JpcHRJbklzb2xhdGVkV29ybGQpOgot
ICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpnbG9iYWxDb250ZXh0UmVmRm9yRnJh
bWUpOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcDoK
LSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZENsZWFy
V2luZG93T2JqZWN0SW5Xb3JsZCk6Ci0gICAgICAgICogZXdrL2V3a19mcmFtZS5jcHA6Ci0gICAg
ICAgIChld2tfZnJhbWVfc2NyaXB0X2V4ZWN1dGUpOgotICAgICAgICAqIGV3ay9ld2tfdmlldy5j
cHA6Ci0gICAgICAgIChld2tfdmlld19qc19vYmplY3RfYWRkKToKLQotMjAxMy0wOC0xNSAgUnl1
YW4gQ2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW0VGTF0gVW5yZXZp
ZXdlZCBidWlsZCBmaXggYWZ0ZXIgcjE1NDE0MiBhbmQgcjE1NDE0NC4KLQotICAgICAgICAqIGV3
ay9ld2tfZnJhbWUuY3BwOiBGb2xsb3cgdGhlIGNoYW5nZXMgb2YgcjE1NDE0Mi4KLSAgICAgICAg
KGV3a19mcmFtZV91cmlfc2V0KToKLSAgICAgICAgKGV3a19mcmFtZV9jZXJ0aWZpY2F0ZV9zdGF0
dXNfZ2V0KToKLQotMjAxMy0wOC0xNSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUu
Y29tPgotCi0gICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8xMTk4NTk+IEZyYW1lOjpsb2Fk
ZXIoKSBzaG91bGQgcmV0dXJuIGEgcmVmZXJlbmNlCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQW5k
cmVhcyBLbGluZy4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5j
cHA6Ci0gICAgICAgIChraXQpOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJU
cmVlU3VwcG9ydEVmbC5jcHA6Ci0gICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OmNh
bGxTaG91bGRDbG9zZU9uV2ViVmlldyk6Ci0gICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRF
Zmw6OmNsZWFyT3BlbmVyKToKLSAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6ZnJh
bWVDaGlsZHJlbik6Ci0gICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OnJlc3BvbnNl
TWltZVR5cGUpOgotICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpwcm92aXNpb25h
bFVSTCk6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3Bw
OgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmNhbGxQb2xpY3lGdW5j
dGlvbik6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hE
ZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24pOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVM
b2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6
Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6dXBkYXRlR2xvYmFsSGlz
dG9yeVJlZGlyZWN0TGlua3MpOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRF
Zmw6OnVwZGF0ZUdsb2JhbEhpc3RvcnkpOgotICAgICAgICAqIGV3ay9ld2tfZnJhbWUuY3BwOgot
ICAgICAgICAoX2V3a19mcmFtZV9sb2FkZXJfZWZsX2dldCk6Ci0gICAgICAgIChfZXdrX2ZyYW1l
X3NtYXJ0X2RlbCk6Ci0gICAgICAgIChfZXdrX2ZyYW1lX2NvbnRlbnRzX3NldF9pbnRlcm5hbCk6
Ci0gICAgICAgIChld2tfZnJhbWVfc3RvcCk6Ci0gICAgICAgIChld2tfZnJhbWVfcmVsb2FkKToK
LSAgICAgICAgKGV3a19mcmFtZV9yZWxvYWRfZnVsbCk6Ci0gICAgICAgIChld2tfZnJhbWVfY2hp
bGRfYWRkKToKLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoZXdrX3ZpZXdf
ZnJhbWVfZm9jdXNlZF9nZXQpOgotICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ191c2VyX2FnZW50
X3NldCk6Ci0gICAgICAgIChld2tfdmlld19zZXR0aW5nX2VuY29kaW5nX2N1c3RvbV9nZXQpOgot
ICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19lbmNvZGluZ19jdXN0b21fc2V0KToKLQotMjAxMy0w
OC0xMiAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW0VG
TF1bV0sxXSBVUkwgcHJpbnRpbmcgY29kZSBpbiBEdW1wUmVuZGVyVHJlZSBkb2Vzbid0IG1hdGNo
IFdUUiBvciBNYWMgRFJUCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMTk1ODUKLQotICAgICAgICBSZXZpZXdlZCBieSBHeXV5b3VuZyBLaW0uCi0KLSAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwOgotICAg
ICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpwcm92aXNpb25hbFVSTCk6Ci0gICAgICAg
IEltcGxlbWVudGVkIHRvIHBhc3MgcHJvdmlzaW9uYWxVUkwgb2YgbWFpbiBmcmFtZSB0byBEdW1w
UmVuZGVyVHJlZUNocm9tZS4KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJl
ZVN1cHBvcnRFZmwuaDoKLQotMjAxMy0wOC0wOSAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFw
cGxlLmNvbT4KLQotICAgICAgICBSRUdSRVNTSU9OIChyMTQyNzU1KTogd2luZG93Lm9wZW4gY3Jl
YXRlcyBhbiBpbnZpc2libGUgd2luZG93IHdoZW4gd2lkdGggYW5kIGhlaWdodCBhcmUgMAotICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE5NjMzCi0KLSAg
ICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9DaHJvbWVDbGllbnRFZmwuY3BwOiAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZsOjpzZXRXaW5k
b3dSZWN0KToKLSAgICAgICAgT25jZSBhZ2FpbiwgdGhlIHBhc3NlZCByZWN0IGNhbm5vdCBiZSBl
bXB0eS4KLQotMjAxMy0wNy0yNyAgTWFyayBSb3dlICA8bXJvd2VAYXBwbGUuY29tPgotCi0gICAg
ICAgIExvZ2dpbmcgc2hvdWxkIGJlIGNvbmZpZ3VyYWJsZSB1c2luZyBodW1hbi1yZWFkYWJsZSBj
aGFubmVsIG5hbWVzIHJhdGhlciB0aGFuIGNyYXp5IGJpdG1hc2tzCi0gICAgICAgIDxodHRwOi8v
d2Via2l0Lm9yZy9iLzExOTAzMT4KLQotICAgICAgICBJbXBsZW1lbnQgc2hhcmVkIGxvZ2ljIGZv
ciBpbml0aWFsaXppbmcgbG9nZ2luZyBjaGFubmVscyBiYXNlZCBvbiBodW1hbi1yZWFkYWJsZSBj
aGFubmVsIG5hbWVzIGluIFdURiwKLSAgICAgICAgYW5kIHJld29yayB0aGUgV2ViQ29yZSwgV2Vi
S2l0IGFuZCBXZWJLaXQyIGxvZ2dpbmcgaW5pdGlhbGl6YXRpb24gb24gdG9wIG9mIGl0LgotCi0g
ICAgICAgIExvZ2dpbmcgY2hhbm5lbHMgbWF5IG5vdyBiZSBlbmFibGVkIGJ5IHByb3ZpZGluZyBh
IGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIGNoYW5uZWwgbmFtZXMsIHdpdGggdGhlIHNwZWNpYWwK
LSAgICAgICAgImFsbCIgbmFtZSBlbmFibGluZyBhbGwgY2hhbm5lbHMuIENoYW5uZWwgbmFtZXMg
cHJlZml4ZWQgd2l0aCBhIGxlYWRpbmcgIi0iIHdpbGwgcmVzdWx0IGluIHRoZSBuYW1lZCBjaGFu
bmVsCi0gICAgICAgIGJlaW5nIGRpc2FibGVkLiBGb3IgaW5zdGFuY2UsIHNwZWNpZnlpbmcgImFs
bCwtaGlzdG9yeSwtbG9hZGluZyIgd2lsbCByZXN1bHQgaW4gYWxsIGxvZ2dpbmcgY2hhbm5lbHMg
ZXhjZXB0Ci0gICAgICAgIGZvciBoaXN0b3J5IGFuZCBsb2FkaW5nIGJlaW5nIGVuYWJsZWQuCi0K
LSAgICAgICAgRm9yIE9TIFggZGV2ZWxvcGVycywgdGhpcyBhbHNvIGNoYW5nZXMgdGhlIG5hbWUg
b2YgdGhlIHVzZXIgZGVmYXVsdHMgdXNlZCB0byBlbmFibGUgbG9nZ2luZy4gVGhpcyBpcyBkb25l
IHRvIGFsbG93Ci0gICAgICAgIHRoZSBvbGQgdXNlciBkZWZhdWx0cyB0byByZW1haW4gc2V0IGZv
ciB0aG9zZSBwZW9wbGUgdGhhdCBuZWVkIHRvIHN3aXRjaCBiZXR3ZWVuIHZlcnNpb24gb2YgV2Vi
S2l0IGJlZm9yZSBhbmQKLSAgICAgICAgYWZ0ZXIgdGhpcyBjaGFuZ2UuIFdoZXJlIHRoZSBvbGQg
dXNlciBkZWZhdWx0IGtleXMgd2VyZSBXZWJDb3JlTG9nTGV2ZWwsIFdlYktpdExvZ0xldmVsIGFu
ZCBXZWJLaXQyTG9nTGV2ZWwsCi0gICAgICAgIHRoZSBuZXcgdXNlciBkZWZhdWx0IGtleXMgYXJl
IFdlYkNvcmVMb2dnaW5nLCBXZWJLaXRMb2dnaW5nIGFuZCBXZWJLaXQyTG9nZ2luZy4KLQotICAg
ICAgICBGb3IgR1RLIGRldmVsb3BlcnMsIHRoaXMgY2hhbmdlcyB0aGUgc2VwYXJhdG9yIHVzZWQg
aW4gdGhlIFdFQktJVF9ERUJVRyBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBhIGNvbW1hIGZvcgot
ICAgICAgICBjb25zaXN0ZW5jeSB3aXRoIHRoZSBvdGhlciBwbGF0Zm9ybXMgYW5kIHRvIGVuYWJs
ZSBtb3JlIGNvZGUgc2hhcmluZy4KLQotICAgICAgICBXaGlsZSBkb2luZyB0aGlzIHdvcmsgSSd2
ZSBhbHNvIHRha2VuIHRoZSBvcHBvcnR1bml0eSB0byBlbGltaW5hdGUgdGhlIG5lZWQgdG8gdG91
Y2ggbXVsdGlwbGUgZmlsZXMgd2hlbgotICAgICAgICBhZGRpbmcgYSBuZXcgbG9nZ2luZyBjaGFu
bmVsLiBOb3cgb25seSB0aGUgaGVhZGVyIGluIHRoZSByZWxldmFudCBwcm9qZWN0IG5lZWRzIHRv
IGJlIHVwZGF0ZWQuCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KLQotICAgICAg
ICAqIGV3ay9ld2tfbWFpbi5jcHA6IFN3aXRjaCBmcm9tIFdlYkNvcmUncyBJbml0aWFsaXplTG9n
Z2luZy5oIHRvIExvZ2dpbmcuaC4KLQotMjAxMy0wNy0yNyAgSmFja3kgSmlhbmcgIDx6aGFqaWFu
Z0BibGFja2JlcnJ5LmNvbT4KLQotICAgICAgICBSZXBsYWNlIGFsbCB1c2VzIG9mIEdyYXBoaWNz
TGF5ZXI6OmNyZWF0ZSBmdW5jdGlvbiB3aXRoIHRoZSBvbmUgdGhhdCB0YWtlcyBhIEdyYXBoaWNz
TGF5ZXJGYWN0b3J5Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMTkxODYKLQotICAgICAgICBSZXZpZXdlZCBieSBBbmRlcnMgQ2FybHNzb24uCi0KLSAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dEVmbC5j
cHA6Ci0gICAgICAgIChXZWJDb3JlOjpBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6YXR0
YWNoUm9vdEdyYXBoaWNzTGF5ZXIpOgotCi0yMDEzLTA3LTI1ICBBbmRyZWFzIEtsaW5nICA8YWts
aW5nQGFwcGxlLmNvbT4KLQotICAgICAgICBDaHJvbWVDbGllbnQ6OmZvY3VzZWROb2RlQ2hhbmdl
ZCgpIHNob3VsZCBiZSBmb2N1c2VkRWxlbWVudENoYW5nZWQoKS4KLSAgICAgICAgPGh0dHA6Ly93
ZWJraXQub3JnL2IvMTE5MTEwPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEFuZGVycyBDYXJsc3Nv
bi4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHA6Ci0gICAg
ICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRFZmw6OmZvY3VzZWRFbGVtZW50Q2hhbmdlZCk6Ci0g
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmg6Ci0KLTIwMTMtMDctMTUg
IEt3YW5nIFl1bCBTZW8gIDxza3l1bEBjb21wYW55MTAwLm5ldD4KLQotICAgICAgICBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OmNyZWF0ZURlZmF1bHRTZXNzaW9uIGlzIG9ubHkgaW1wbGVtZW50ZWQg
YnkgU291cAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTE4Njc5Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQWxleGV5IFByb3NrdXJ5YWtvdi4KLQotICAg
ICAgICBSZXBsYWNlIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y3JlYXRlRGVmYXVsdFNlc3Npb24o
KSB3aXRoCi0gICAgICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNz
aW9uKCkuCi0KLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoX2V3a192aWV3
X3ByaXZfbmV3KToKLSAgICAgICAgKEVXS1ByaXZhdGU6OnN0b3JhZ2VTZXNzaW9uKToKLQotMjAx
My0wNy0wOSAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3VuZy5jb20+Ci0KLSAgICAgICAg
W0VGTF0gQWRkIGV3a192aWV3X2RldmljZV9waXhlbF9yYXRpb19zZXQKLSAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExODUyMQotCi0gICAgICAgIFJldmll
d2VkIGJ5IEd5dXlvdW5nIEtpbS4KLQotICAgICAgICBld2Via2l0IGFuZCBld2Via2l0MiBoYXZl
IGRpZmZlcmVudCBhcHByb2FjaCBhYm91dCBnZXR0aW5nIGRldmljZSBwaXhlbCByYXRpby4KLSAg
ICAgICAgZXdlYmtpdCBkZXBlbmRzIG9uIGRlcHJlY2F0ZWRUYXJnZXREUEkgYW5kIGVjb3JlX3hf
ZHBpX2dldCwKLSAgICAgICAgYnV0IGV3ZWJraXQyIHVzZSBQYWdlOjpkZXZpY2VTY2FsZUZhY3Rv
ci4KLQotICAgICAgICBUaGlzIHBhdGNoIHdpbGwgYWRkIGV3a192aWV3X2RldmljZV9waXhlbF9y
YXRpb19zZXQgYW5kIHVzZSBQYWdlOjpkZXZpY2VTY2FsZUZhY3RvcigpCi0gICAgICAgIGluc3Rl
YWQgb2YgVmlld3BvcnRBcmd1bWVudHM6OmRlcHJlY2F0ZWRUYXJnZXREUEkgbGlrZSBld2Via2l0
Mi4KLQotICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChfZXdrX3ZpZXdfcHJp
dl9uZXcpOgotICAgICAgICAoX2V3a192aWV3X3ZpZXdwb3J0X2F0dHJpYnV0ZXNfY29tcHV0ZSk6
IFVzZSBQYWdlOjpkZXZpY2VTY2FsZUZhY3RvcigpLgotICAgICAgICAoZXdrX3ZpZXdfdmlld3Bv
cnRfYXR0cmlidXRlc19nZXQpOiBEaXR0by4KLSAgICAgICAgKGV3a192aWV3X2RldmljZV9waXhl
bF9yYXRpb19zZXQpOiBBZGRlZC4KLSAgICAgICAgKGV3a192aWV3X2RldmljZV9waXhlbF9yYXRp
b19nZXQpOgotICAgICAgICAqIGV3ay9ld2tfdmlldy5oOgotICAgICAgICBVcGRhdGUgZG9jdW1l
bnQgb2YgZXdrX3ZpZXdfZGV2aWNlX3BpeGVsX3JhdGlvX2dldCAoZnJvbSBld2Via2l0MikgYW5k
Ci0gICAgICAgIGFkZGVkIGV3a192aWV3X2RldmljZV9waXhlbF9yYXRpb19zZXQuCi0KLTIwMTMt
MDYtMjcgIEthbmdpbCBIYW4gIDxrYW5naWwuaGFuQHNhbXN1bmcuY29tPgotCi0gICAgICAgIEFk
b3B0IGlzL3RvSFRNTElucHV0RWxlbWVudCBmb3IgY29kZSBjbGVhbnVwCi0gICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTgxMzAKLQotICAgICAgICBSZXZp
ZXdlZCBieSBBbnR0aSBLb2l2aXN0by4KLQotICAgICAgICBUbyBlbmhhbmNlIHJlYWRhYmlsaXR5
LCB0aGlzIHBhdGNoIGFkb3B0cyBpcy90b0hUTUxJbnB1dEVsZW1lbnQuCi0gICAgICAgIFRoaXMg
YWxzbyBoZWxwcyBvdXQgdG8gcmVkdWNlIGR1cGxpY2F0ZWQgdXNlIG9mIHN0YXRpY19jYXN0Lgot
Ci0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAgKGV3a192aWV3X2lucHV0X21l
dGhvZF9zdGF0ZV9zZXQpOgotCi0yMDEzLTA2LTI2ICBSeXVhbiBDaG9pICA8cnl1YW4uY2hvaUBz
YW1zdW5nLmNvbT4KLQotICAgICAgICBbRUZMXVtSRUdSRVNTSU9OXSBDcmFzaCBhZnRlciByMTUx
NTQwIHdpdGggZGVidWcgYnVpbGQKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTExODExMQotCi0gICAgICAgIFJldmlld2VkIGJ5IEd5dXlvdW5nIEtpbS4K
LQotICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChld2tfdmlld19zY3JvbGwp
OiBGaXhlZCBBU1NFUlQgY29uZGl0aW9ucyB3cm9uZ2x5IHJlZmFjdG9yZWQuCi0KLTIwMTMtMDYt
MjEgIENocmlzdG9waGUgRHVtZXogIDxjaC5kdW1lekBzaXNhLnNhbXN1bmcuY29tPgotCi0gICAg
ICAgIFJFR1JFU1NJT04gKHIxNTA2NjMpOiBVc2luZyB3ZWJraXRBdWRpb0NvbnRleHQgaW4gSW5z
cGVjdG9yIG1ha2VzIGl0IHVuZGVmaW5lZCBldmVyeXdoZXJlCi0gICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTc4MjUKLQotICAgICAgICBSZXZpZXdlZCBi
eSBLZW50YXJvIEhhcmEuCi0KLSAgICAgICAgVXNlIFNldHRpbmdzIHRvIGVuYWJsZSBXZWIgQXVk
aW8gaW5zdGVhZCBvZiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzLgotCi0gICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcDoKLSAgICAgICAgKER1bXBSZW5k
ZXJUcmVlU3VwcG9ydEVmbDo6c2V0V2ViQXVkaW9FbmFibGVkKToKLSAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuaDoKLSAgICAgICAgKiBld2svZXdrX3Zp
ZXcuY3BwOgotICAgICAgICAoX2V3a192aWV3X3ByaXZfbmV3KToKLQotMjAxMy0wNi0xNyAgU2Vv
a2p1IEt3b24gIDxzZW9ranUua3dvbkBnbWFpbC5jb20+Ci0KLSAgICAgICAgW0VGTF0gUmVtb3Zl
IHVubmVlZGVkIFdlYkNvcmUgbmFtZXNwYWNlIGluIEZyYW1lTG9hZGVyQ2xpZW50RWZsCi0gICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTc3MTgKLQotICAg
ICAgICBSZXZpZXdlZCBieSBDaHJpc3RvcGhlIER1bWV6LgotCi0gICAgICAgICogV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwOiBSZW1vdmUgJ3VzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlJy4KLQotMjAxMy0wNi0xNyAgUnV0aCBGb25nICA8cnV0aF9mb25nQGFwcGxlLmNvbT4K
LQotICAgICAgICBSRUdSRVNTSU9OOiBJbXBvcnRhbnQgY29udHJvbHMgYXJlIG1pc3NpbmcgZnJv
bSA8dmlkZW8+IGVsZW1lbnQgVUksIHdoZW4gY29tcGFyZWQgdG8gUXVpY2tUaW1lCi0gICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDU5OQotCi0gICAgICAg
IEFkZCBhICJEb3dubG9hZCBWaWRlbyIvIkRvd25sb2FkIEF1ZGlvIiBjb250ZXh0IG1lbnUgaXRl
bSB0byBkb3dubG9hZCBtZWRpYQotICAgICAgICBlbGVtZW50cy4KLQotICAgICAgICBSZXZpZXdl
ZCBieSBCZXRoIERha2luLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvQXNzZXJ0TWF0Y2hp
bmdFbnVtcy5jcHA6Ci0gICAgICAgICogZXdrL2V3a19jb250ZXh0bWVudS5oOgotICAgICAgICBV
cGRhdGVkIHRvIGluY2x1ZGUgbmV3IEVXSyBlbnVtIHR5cGUgZm9yICJEb3dubG9hZCBWaWRlby9B
dWRpbyIgY29udGV4dCBtZW51IGl0ZW0uCi0KLTIwMTMtMDYtMTMgIFJ5dWFuIENob2kgIDxyeXVh
bi5jaG9pQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxdIFJlZmFjdG9yIGV3a192aWV3X3Nj
cm9sbCB0byByZW1vdmUgaW50ZXJuYWwgc3RydWN0dXJlLgotICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1NzEzCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkg
R3l1eW91bmcgS2ltLgotCi0gICAgICAgIEFmdGVyIHJlbW92ZWQgYy1pc20gZnJvbSBXZWJLaXQv
RWZsLCBUaGVyZSBpcyBubyByZWFzb24gdG8ga2VlcCBpbnRlcm5hbAotICAgICAgICBzdHJ1Y3R1
cmVzIGxpa2UgRXdrX1Njcm9sbF9SZXF1ZXN0LgotICAgICAgICBUaGlzIHBhdGNoIHJlZmFjdG9y
ZWQgZXdrX3ZpZXdfc2Nyb2xsIHRvIHVzZSBXVEYgaW5zdGVhZCBvZiBFd2tfU2Nyb2xsX1JlcXVl
c3QKLSAgICAgICAgYW5kIHNjcm9sbHMgb2YgU21hcnREYXRhLgotCi0gICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNs
aWVudEVmbDo6c2Nyb2xsKToKLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOiBSZW1vdmVkIGZ1
bmN0aW9ucyB0byBtYW5hZ2UgRXdrX1Njcm9sbF9SZXF1ZXN0LgotICAgICAgICAoX0V3a19WaWV3
X1ByaXZhdGVfRGF0YSk6Ci0gICAgICAgIChfZXdrX3ZpZXdfc2Nyb2xsc19mbHVzaCk6Ci0gICAg
ICAgIChfZXdrX3ZpZXdfcHJpdl9kZWwpOgotICAgICAgICAoX2V3a192aWV3X3NtYXJ0X2NhbGN1
bGF0ZSk6Ci0gICAgICAgIChld2tfdmlld19zY3JvbGxfb2Zmc2V0c19nZXQpOgotICAgICAgICAo
ZXdrX3ZpZXdfc2Nyb2xsX3JlY3RzX2dldCk6Ci0gICAgICAgIChld2tfdmlld19zY3JvbGwpOgot
ICAgICAgICAqIGV3ay9ld2tfdmlldy5oOiBSZW1vdmVkIEV3a19TY3JvbGxfUmVxdWVzdCB3aGlj
aCBpcyBwcml2YXRlIHN0cnVjdHVyZS4KLSAgICAgICAgKiBld2svZXdrX3ZpZXdfcHJpdmF0ZS5o
OgotICAgICAgICAoV2ViQ29yZSk6Ci0gICAgICAgICogZXdrL2V3a192aWV3X3NpbmdsZS5jcHA6
Ci0gICAgICAgIChfZXdrX3ZpZXdfc2luZ2xlX3Njcm9sbF9wcm9jZXNzX3NpbmdsZSk6Ci0gICAg
ICAgIChfZXdrX3ZpZXdfc2luZ2xlX3NtYXJ0X3Njcm9sbHNfcHJvY2Vzcyk6Ci0gICAgICAgICog
ZXdrL2V3a192aWV3X3RpbGVkLmNwcDoKLSAgICAgICAgKF9ld2tfdmlld190aWxlZF9zbWFydF9z
Y3JvbGxzX3Byb2Nlc3MpOgotCi0yMDEzLTA1LTI4ICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFw
cGxlLmNvbT4KLQotICAgICAgICBEb2N1bWVudDo6c2V0Rm9jdXNlZE5vZGUoKSBzaG91bGQgYmUg
c2V0Rm9jdXNlZEVsZW1lbnQoKS4KLSAgICAgICAgPGh0dHA6Ly93ZWJraXQub3JnL2IvMTE2ODU3
PgotCi0gICAgICAgIFJldmlld2VkIGJ5IEFudHRpIEtvaXZpc3RvLgotCi0gICAgICAgICogZXdr
L2V3a19mcmFtZS5jcHA6Ci0gICAgICAgIChld2tfZnJhbWVfZm9jdXNlZF9lbGVtZW50X2dlb21l
dHJ5X2dldCk6Ci0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAgKGV3a192aWV3
X2lucHV0X21ldGhvZF9zdGF0ZV9zZXQpOgotCi0yMDEzLTA1LTI4ICBSeXVhbiBDaG9pICA8cnl1
YW4uY2hvaUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBbRUZMXSBwYyBmaWxlcyBzaG91bGQgaGF2
ZSBoYXJmYnV6eiBkZXBlbmRlbmN5LgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTE2ODUyCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgR3l1eW91bmcgS2lt
LgotCi0gICAgICAgICogZXdlYmtpdC5wYy5pbjogQWRkZWQgaGFyZmJ1enogYXMgUmVxdWlyZWQg
cGFja2FnZS4KLQotMjAxMy0wNS0yNSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxl
LmNvbT4KLQotICAgICAgICBVbnByZWZpeCBQYWdlIFZpc2liaWxpdHkgQVBJCi0gICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDIzNDAKLQotICAgICAgICBS
ZXZpZXdlZCBieSBUaW0gSG9ydG9uLgotCi0gICAgICAgIFJlbmFtZSAicHJldmlldyIgc3RhdGUg
dG8gInVubG9hZGVkIiBzdGF0ZS4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Fzc2VydE1h
dGNoaW5nRW51bXMuY3BwOgotICAgICAgICAqIGV3ay9ld2tfdmlldy5oOgotCi0yMDEzLTA1LTI0
ICBTZW9ranUgS3dvbiAgPHNlb2tqdS5rd29uQGdtYWlsLmNvbT4KLQotICAgICAgICBbRUZMXSBS
ZW1vdmUgb2Jzb2xldGUgUGFnZSBmb3J3YXJkIGRlY2xhcmF0aW9uIGZyb20gSW5zcGVjdG9yQ2xp
ZW50RWZsLmgKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTExNjc1MgotCi0gICAgICAgIFJldmlld2VkIGJ5IENocmlzdG9waGUgRHVtZXouCi0KLSAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRFZmwuaDoKLQotMjAxMy0wNS0yNCAg
Q2hyaXN0b3BoZSBEdW1leiAgPGNoLmR1bWV6QHNpc2Euc2Ftc3VuZy5jb20+Ci0KLSAgICAgICAg
UmVtb3ZlIGN1c3RvbSBjb2RlIGZvciB3ZWJraXRBdWRpb0NvbnRleHQgZ2xvYmFsIGNvbnN0cnVj
dG9yIGdldHRlcgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTE2NTMwCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCi0KLSAgICAg
ICAgVXNlIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMgaW5zdGVhZCBvZiBTZXR0aW5ncyB0byB0b2dn
bGUgV2ViIEF1ZGlvIHN1cHBvcnQuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVu
ZGVyVHJlZVN1cHBvcnRFZmwuY3BwOgotICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZs
OjpzZXRXZWJBdWRpb0VuYWJsZWQpOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5k
ZXJUcmVlU3VwcG9ydEVmbC5oOgotICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAg
IChfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKToKLSAgICAgICAgKF9ld2tfdmlld19wcml2X25ldyk6
Ci0gICAgICAgICogZXdrL2V3a192aWV3Lmg6IFJlbW92ZSBwdWJsaWMgQVBJIHRvIHRvZ2dsZSBX
ZWIgQXVkaW8gc3VwcG9ydCBhcyBpdCBpcyBubyBsb25nZXIKLSAgICAgICAgYSB2aWV3IHNwZWNp
ZmljIGZlYXR1cmUuCi0KLTIwMTMtMDUtMTkgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFw
cGxlLmNvbT4KLQotICAgICAgICBSZW1vdmUgQ2hyb21lQ2xpZW50Ojp3ZWJWaWV3KCkKLSAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNjA1NAotCi0gICAg
ICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgotCi0gICAgICAgIFRoaXMgYmxhdGFudGx5IGhv
cnJpYmxlIGxheWVyIHZpb2xhdGlvbiB3YXMgb25seSB1c2VkIHRvIGtub3cgaWYgYSBDaHJvbWVD
bGllbnQgaXMgYW4gZW1wdHkKLSAgICAgICAgY2xpZW50IG9yIG5vdC4gV2UgYWxyZWFkeSBoYXZl
IGEgKHNsaWdodGx5IGxlc3MgaG9ycmlibGUpIHdheSB0byBkbyB0aGF0LgotCi0gICAgICAgICog
V2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmg6Ci0gICAgICAgIChDaHJvbWVDbGllbnRF
ZmwpOgotCi0yMDEzLTA1LTE4ICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUB3ZWJraXQub3Jn
PgotCi0gICAgICAgIFtDTWFrZV0gUmVwbGFjZSAqX0xJQlJBUllfTkFNRSB3aXRoICpfT1VUUFVU
X05BTUUKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEx
NDU1NAotCi0gICAgICAgIFJldmlld2VkIGJ5IEd5dXlvdW5nIEtpbS4KLQotICAgICAgICBVc2lu
ZyB2YXJpYWJsZXMgYXMgdGFyZ2V0IG5hbWVzIGlzIHZlcnkgdW5jb21tb24gaW4gQ01ha2UuCi0g
ICAgICAgIFRoZSB1c3VhbCB3YXkgdG8gc3BlY2lmeSB0aGUgbmFtZSBvZiB0aGUgcmVzdWx0aW5n
IGJpbmFyeQotICAgICAgICBpcyB0byBzZXQgdGhlIE9VVFBVVF9OQU1FIHRhcmdldCBwcm9wZXJ0
eS4KLQotICAgICAgICAqIGV3ZWJraXQucGMuaW46Ci0KLTIwMTMtMDUtMTYgIFNlb2tqdSBLd29u
ICA8c2Vva2p1Lmt3b25AZ21haWwuY29tPgotCi0gICAgICAgIFtFRkxdIGluc3BlY3Rvci1wcm90
b2NvbC9wYWdlL2phdmFzY3JpcHREaWFsb2dFdmVudHMuaHRtbCBpcyBmYWlsaW5nCi0gICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTQ3ODEKLQotICAgICAg
ICBSZXZpZXdlZCBieSBDaHJpc3RvcGhlIER1bWV6LgotCi0gICAgICAgIFdlIG5lZWQgdG8gbWFr
ZSBhIGRpc3RpbmN0aW9uIGJldHdlZW4gcnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsIGFuZCBj
b25maXJtLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcDoK
LSAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEVmbDo6cnVuQmVmb3JlVW5sb2FkQ29uZmly
bVBhbmVsKToKLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOiBBZGQgZXdrX3ZpZXdfcnVuX2Jl
Zm9yZV91bmxvYWRfY29uZmlybSBBUEkuCi0gICAgICAgIChfZXdrX3ZpZXdfc21hcnRfcnVuX2Jl
Zm9yZV91bmxvYWRfY29uZmlybSk6Ci0gICAgICAgIChld2tfdmlld19iYXNlX3NtYXJ0X3NldCk6
Ci0gICAgICAgIChld2tfdmlld19ydW5fYmVmb3JlX3VubG9hZF9jb25maXJtKToKLSAgICAgICAg
KiBld2svZXdrX3ZpZXcuaDogQWRkIHNtYXJ0IGNsYXNzIG1lbWJlciBmdW5jdGlvbiBmb3IgcnVu
QmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsLgotICAgICAgICAqIGV3ay9ld2tfdmlld19wcml2YXRl
Lmg6Ci0KLTIwMTMtMDUtMTYgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgotCi0g
ICAgICAgIFBhZ2U6OmNocm9tZSgpIHNob3VsZCByZXR1cm4gYSByZWZlcmVuY2UuCi0gICAgICAg
IDxodHRwOi8vd2Via2l0Lm9yZy9iLzExNjE4NT4KLQotICAgICAgICBSZXZpZXdlZCBieSBBbmRl
cnMgQ2FybHNzb24uCi0KLTIwMTMtMDUtMTMgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFw
cGxlLmNvbT4KLQotICAgICAgICBGcmFtZTo6ZWRpdG9yKCkgc2hvdWxkIHJldHVybiBhIHJlZmVy
ZW5jZQotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE2
MDM3Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCi0KLSAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwOgotICAgICAgICAoRHVtcFJl
bmRlclRyZWVTdXBwb3J0RWZsOjpleGVjdXRlQ29yZUNvbW1hbmRCeU5hbWUpOgotICAgICAgICAo
RHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjppc0NvbW1hbmRFbmFibGVkKToKLSAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29yZTo6RWRp
dG9yQ2xpZW50RWZsOjpyZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uKToKLSAgICAgICAgKFdlYkNv
cmU6OkVkaXRvckNsaWVudEVmbDo6aGFuZGxlRWRpdGluZ0tleWJvYXJkRXZlbnQpOgotICAgICAg
ICAqIGV3ay9ld2tfZnJhbWUuY3BwOgotICAgICAgICAoZXdrX2ZyYW1lX2VkaXRhYmxlX3NldCk6
Ci0gICAgICAgIChld2tfZnJhbWVfc2VsZWN0aW9uX2dldCk6Ci0gICAgICAgIChld2tfZnJhbWVf
dGV4dF9zZWFyY2gpOgotICAgICAgICAoZXdrX2ZyYW1lX3RleHRfbWF0Y2hlc19tYXJrKToKLSAg
ICAgICAgKGV3a19mcmFtZV90ZXh0X21hdGNoZXNfaGlnaGxpZ2h0X3NldCk6Ci0gICAgICAgIChl
d2tfZnJhbWVfdGV4dF9tYXRjaGVzX2hpZ2hsaWdodF9nZXQpOgotICAgICAgICAqIGV3ay9ld2tf
dmlldy5jcHA6Ci0gICAgICAgIChld2tfdmlld19zZWxlY3Rpb25fZ2V0KToKLSAgICAgICAgKGV3
a192aWV3X2VkaXRvcl9jb21tYW5kX2V4ZWN1dGUpOgotCi0yMDEzLTA1LTEyICBUaW1vdGh5IEhh
dGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KLQotICAgICAgICBBZGQgc3VwcG9ydCBmb3IgdXBk
YXRpbmcgdGhlIFdlYiBJbnNwZWN0b3IgdG9vbGJhciBoZWlnaHQuCi0KLSAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNTk5NgotCi0gICAgICAgIFJldmll
d2VkIGJ5IEpvc2VwaCBQZWNvcmFybyBhbmQgQmVuamFtaW4gUG91bGFpbi4KLQotICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JGcm9udGVuZENsaWVudEVmbDo6c2V0VG9vbGJhckhlaWdodCk6Ci0gICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50RWZsLmg6Ci0KLTIwMTMtMDUtMTIgIEFu
ZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KLQotICAgICAgICBTdG9wIGluY2x1
ZGluZyBVbnVzZWRQYXJhbS5oCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMTYwMDMKLQotICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgotCi0g
ICAgICAgIFVudXNlZFBhcmFtLmggaXMgZW1wdHkgbm93IHNvIHRoZXJlJ3Mgbm8gbmVlZCB0byBp
bmNsdWRlIGl0IGFueW1vcmUuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVy
VHJlZVN1cHBvcnRFZmwuY3BwOgotICAgICAgICAqIGV3ay9ld2tfanMuY3BwOgotICAgICAgICAq
IGV3ay9ld2tfc2VjdXJpdHlfb3JpZ2luLmNwcDoKLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3Bw
OgotICAgICAgICAqIGV3ay9ld2tfd2ViX2RhdGFiYXNlLmNwcDoKLQotMjAxMy0wNS0wOCAgSm9z
ZSBMZWppbiBQSiAgPGpvc2UubGVqaW5AZ21haWwuY29tPgotCi0gICAgICAgIFtFRkxdIENvcnJl
Y3QgZG9jdW1lbnRhdGlvbiBmb3IgZXdrX3NldHRpbmdzIEFQSXMKLSAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNTUwNwotCi0gICAgICAgIFJldmlld2Vk
IGJ5IEd5dXlvdW5nIEtpbS4KLQotICAgICAgICBDb3JyZWN0ZWQgZG9jdW1lbnRhdGlvbiBmb3Ig
ZXdrX3NldHRpbmdzIEFQSXMuCi0KLSAgICAgICAgKiBld2svZXdrX3NldHRpbmdzLmg6Ci0KLTIw
MTMtMDUtMDcgIEppbndvbyBTb25nICA8amlud29vNy5zb25nQHNhbXN1bmcuY29tPgotCi0gICAg
ICAgIFtFRkxdIFJlbW92ZSB0aGUgZXdrX3NldHRpbmdzX3NoYWRvd19kb21fZW5hYmxlX3NldC9n
ZXQgQVBJcyBmcm9tIHVuaXQgdGVzdAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTE1NzcxCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgR3l1eW91bmcgS2lt
LgotCi0gICAgICAgIFVuaXQgdGVzdCBpcyBmYWlsaW5nIHNpbmNlIHIxNDk3MDIuIFJlbW92ZSB0
aGUgdGVzdCBjYXNlIHJlbGF0ZWQgdG8gc2hhZG93IGRvbS4KLQotICAgICAgICAqIHRlc3RzL3Rl
c3RfZXdrX3NldHRpbmcuY3BwOgotCi0yMDEzLTA0LTI2ICBKb3NlIExlamluIFBKICA8am9zZS5s
ZWppbkBnbWFpbC5jb20+Ci0KLSAgICAgICAgW0VGTF0gQWRkIHVuaXQgdGVzdCBjYXNlcyBmb3Ig
ZXdrX3NldHRpbmdzIEFQSXMKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTExNDg5NwotCi0gICAgICAgIFJldmlld2VkIGJ5IEd5dXlvdW5nIEtpbS4KLQot
ICAgICAgICBBZGRlZCB1bml0IHRlc3RzIGZvciBld2tfc2V0dGluZ3MgQVBJcy4KLQotICAgICAg
ICAqIHRlc3RzL3Rlc3RfZXdrX3NldHRpbmcuY3BwOgotICAgICAgICAoVEVTVF9GKToKLQotMjAx
My0wNC0yNSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgotCi0gICAgICAg
IFdlYiBJbnNwZWN0b3I6IENvbnNvbGVNZXNzYWdlIHNob3VsZCBpbmNsdWRlIGxpbmUgYW5kIGNv
bHVtbiBudW1iZXIgd2hlcmUgcG9zc2libGUKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTExNDkyOQotCi0gICAgICAgIFJldmlld2VkIGJ5IFRpbW90aHkg
SGF0Y2hlci4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHA6
Ci0gICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRFZmw6OmFkZE1lc3NhZ2VUb0NvbnNvbGUp
OgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oOgotICAgICAgICAo
Q2hyb21lQ2xpZW50RWZsKToKLQotMjAxMy0wNC0yNSAgQ29tbWl0IFF1ZXVlICA8cm5pd2FAd2Vi
a2l0Lm9yZz4KLQotICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTQ5MDMyLgotICAg
ICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8xNDkwMzIKLSAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNTE1MQotCi0gICAgICAgIEVG
TCBXSzEgQVBJIHRlc3QgaGFzIGJlZW4gYnJva2VuIGFmdGVyIHIxNDkwMzIgKFJlcXVlc3RlZCBi
eQotICAgICAgICBneXV5b3VuZyBvbiAjd2Via2l0KS4KLQotICAgICAgICAqIHRlc3RzL3Rlc3Rf
ZXdrX3NldHRpbmcuY3BwOgotICAgICAgICAoVEVTVF9GKToKLQotMjAxMy0wNC0yNCAgSm9zZSBM
ZWppbiBQSiAgPGpvc2UubGVqaW5AZ21haWwuY29tPgotCi0gICAgICAgIFtFRkxdIEFkZCB1bml0
IHRlc3QgY2FzZXMgZm9yIGV3a19zZXR0aW5ncyBBUElzCi0gICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTQ4OTcKLQotICAgICAgICBSZXZpZXdlZCBieSBH
eXV5b3VuZyBLaW0uCi0gIAotICAgICAgICBBZGRlZCB1bml0IHRlc3RzIGZvciBld2tfc2V0dGlu
Z3MgQVBJcy4KLQotICAgICAgICAqIHRlc3RzL3Rlc3RfZXdrX3NldHRpbmcuY3BwOgotICAgICAg
ICAoVEVTVF9GKToKLQotMjAxMy0wNC0xOSAgSm9zZSBMZWppbiBQSiAgPGpvc2UubGVqaW5AZ21h
aWwuY29tPgotCi0gICAgICAgIFtFRkxdIEFkZCBtZXRob2QgaW4gZXdrX3NldHRpbmdzIGZvciBz
ZXR0aW5nIHRoZSBDU1MgbWVkaWEgdHlwZQotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTEzMjg0Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgR3l1eW91bmcg
S2ltLgotCi0gICAgICAgIEFkZGVkIEFQSXMgdG8gc2V0IGFuZCBnZXQgQ1NTIG1lZGlhIHR5cGUu
Ci0gICAgICAgIEFkZGVkIHVuaXQgdGVzdHMgZm9yIHRoZXNlIEFQSXMuCi0KLSAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlckNsaWVudEVmbDo6b3ZlcnJpZGVNZWRpYVR5cGUpOgotICAgICAgICAqIGV3
ay9ld2tfc2V0dGluZ3MuY3BwOgotICAgICAgICAoZXdrX3NldHRpbmdzX2Nzc19tZWRpYV90eXBl
X3NldCk6Ci0gICAgICAgIChld2tfc2V0dGluZ3NfY3NzX21lZGlhX3R5cGVfZ2V0KToKLSAgICAg
ICAgKiBld2svZXdrX3NldHRpbmdzLmg6Ci0gICAgICAgICogdGVzdHMvdGVzdF9ld2tfc2V0dGlu
Zy5jcHA6IEFkZGVkLgotICAgICAgICAoVEVTVF9GKToKLQotMjAxMy0wNC0xNyAgR2VvZmZyZXkg
R2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgotCi0gICAgICAgIFJlbmFtZWQgSlNHbG9iYWxEYXRh
IHRvIFZNCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MTQ3NzcKLQotICAgICAgICBSZXZpZXdlZCBieSBQaGlsIFBpemxvLgotCi0gICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcDoKLSAgICAgICAgKER1bXBS
ZW5kZXJUcmVlU3VwcG9ydEVmbDo6amF2YVNjcmlwdE9iamVjdHNDb3VudCk6Ci0KLTIwMTMtMDQt
MTYgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+Ci0KLSAgICAgICAgTW9yZSBFRkwg
YnVpbGQgZml4ZXMuCi0KLSAgICAgICAgKiBld2svZXdrX2ZyYW1lLmNwcDoKLSAgICAgICAgKiBl
d2svZXdrX3ZpZXcuY3BwOgotCi0yMDEzLTA0LTE2ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJr
aXQub3JnPgotCi0gICAgICAgIEVGTCBidWlsZCBmaXggYWZ0ZXIgcjE0ODU0NS4KLQotICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHA6Ci0KLTIwMTMt
MDQtMTYgIE1hbnVlbCBSZWdvIENhc2Fzbm92YXMgIDxyZWdvQGlnYWxpYS5jb20+Ci0KLSAgICAg
ICAgUkVHUkVTU0lPTiAocjE0ODUwNik6IFVzZSBvZiBkZXByZWNhdGVkIGxpYnNvdXAgQVBJCi0g
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTQ2NzkKLQot
ICAgICAgICBSZXZpZXdlZCBieSBHeXV5b3VuZyBLaW0uCi0KLSAgICAgICAgUmVtb3ZlIGRlcHJl
Y2F0ZWQgbGlic291cCBBUEkgdXNhZ2UuCi0KLSAgICAgICAgKiBld2svZXdrX25ldHdvcmsuY3Bw
OgotICAgICAgICAoZXdrX25ldHdvcmtfcHJveHlfdXJpX3NldCk6Ci0gICAgICAgIChld2tfbmV0
d29ya19wcm94eV91cmlfZ2V0KToKLQotMjAxMy0wNC0xNiAgTWFudWVsIFJlZ28gQ2FzYXNub3Zh
cyAgPHJlZ29AaWdhbGlhLmNvbT4KLQotICAgICAgICBbR1RLXVtFRkxdIFJlbW92ZSBkZXByZWNh
dGVkIGxpYnNvdXAgQVBJIHVzYWdlCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDQ4OTQKLQotICAgICAgICBSZXZpZXdlZCBieSBQaGlsaXBwZSBOb3Jt
YW5kLgotCi0gICAgICAgIFJlbW92ZSBMSUJTT1VQX1VTRV9VTlNUQUJMRV9SRVFVRVNUX0FQSSBh
bmQgb25seSBpbmNsdWRlCi0gICAgICAgIGxpYnNvdXAvc291cC5oLgotCi0yMDEzLTA0LTE0ICBD
aHJpc3RvcGhlIER1bWV6ICA8Y2guZHVtZXpAc2lzYS5zYW1zdW5nLmNvbT4KLQotICAgICAgICBV
bnJldmlld2VkIGJ1aWxkIGZpeCBmb3IgV2ViS2l0MSBFRkwgYWZ0ZXIgcjE0ODM3MyBkdWUgdG8g
bWlzc2luZwotICAgICAgICBoZWFkZXIgaW5jbHVkZXMuCi0KLSAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwOgotICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0VkaXRvckNsaWVudEVmbC5jcHA6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRFZmwuY3BwOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNs
aWVudEVmbC5jcHA6Ci0gICAgICAgICogZXdrL2V3a19mcmFtZS5jcHA6Ci0gICAgICAgICogZXdr
L2V3a192aWV3LmNwcDoKLSAgICAgICAgKiBld2svZXdrX3ZpZXdfcHJpdmF0ZS5oOgotICAgICAg
ICAoV2ViQ29yZSk6Ci0KLTIwMTMtMDQtMTMgIEVkIEJhcnRvc2ggIDxiYXJ0b3NoQGdtYWlsLmNv
bT4KLQotICAgICAgICBbRUZMXSAtLW1pbmltYWwgYnVpbGQgZmFpbHMgd2l0aCBlcnJvcjogJ1Zp
ZXdNb2RlSW52YWxpZCcgaXMgbm90IGEgbWVtYmVyIG9mICdXZWJDb3JlOjpQYWdlJwotICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE0MDQ4Ci0KLSAgICAg
ICAgUmV2aWV3ZWQgYnkgR3l1eW91bmcgS2ltLgotCi0gICAgICAgIFdyYXBwZWQgdmlldy1tb2Rl
IG1lZGlhIHJlbGF0ZWQgY29kZSBpbnRvICNpZiBFTkFCTEUoVklFV19NT0RFX0NTU19NRURJQSkK
LQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwOgotICAg
ICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChld2tfdmlld19tb2RlX3NldCk6Ci0K
LTIwMTMtMDQtMTAgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+Ci0KLSAg
ICAgICAgTWFzcyByZW1vdmUgYWxsIHRoZSBlbXB0eSBkaXJlY3RvcmllcwotCi0gICAgICAgIFJ1
YmJlcnN0YW1wZWQgYnkgUnlvc3VrZSBOaXdhLgotCi0gICAgICAgICogRGVmYXVsdFRoZW1lL3dp
ZGdldC9idXR0b246IFJlbW92ZWQuCi0gICAgICAgICogRGVmYXVsdFRoZW1lL3dpZGdldC9jaGVj
azogUmVtb3ZlZC4KLSAgICAgICAgKiBEZWZhdWx0VGhlbWUvd2lkZ2V0L2NvbWJvOiBSZW1vdmVk
LgotICAgICAgICAqIERlZmF1bHRUaGVtZS93aWRnZXQvZW50cnk6IFJlbW92ZWQuCi0gICAgICAg
ICogRGVmYXVsdFRoZW1lL3dpZGdldC9maWxlOiBSZW1vdmVkLgotICAgICAgICAqIERlZmF1bHRU
aGVtZS93aWRnZXQvbWVkaWFjb250cm9sL2Z1bGxzY3JlZW5idXR0b246IFJlbW92ZWQuCi0gICAg
ICAgICogRGVmYXVsdFRoZW1lL3dpZGdldC9tZWRpYWNvbnRyb2wvbXV0ZWJ1dHRvbjogUmVtb3Zl
ZC4KLSAgICAgICAgKiBEZWZhdWx0VGhlbWUvd2lkZ2V0L21lZGlhY29udHJvbC9wbGF5cGF1c2Vi
dXR0b246IFJlbW92ZWQuCi0gICAgICAgICogRGVmYXVsdFRoZW1lL3dpZGdldC9tZWRpYWNvbnRy
b2wvc2Vla2JhY2t3YXJkYnV0dG9uOiBSZW1vdmVkLgotICAgICAgICAqIERlZmF1bHRUaGVtZS93
aWRnZXQvbWVkaWFjb250cm9sL3NlZWtmb3J3YXJkYnV0dG9uOiBSZW1vdmVkLgotICAgICAgICAq
IERlZmF1bHRUaGVtZS93aWRnZXQvbWVkaWFjb250cm9sL3RvZ2dsZWNhcHRpb25zYnV0dG9uOiBS
ZW1vdmVkLgotICAgICAgICAqIERlZmF1bHRUaGVtZS93aWRnZXQvcHJvZ3Jlc3NiYXI6IFJlbW92
ZWQuCi0gICAgICAgICogRGVmYXVsdFRoZW1lL3dpZGdldC9yYWRpbzogUmVtb3ZlZC4KLSAgICAg
ICAgKiBEZWZhdWx0VGhlbWUvd2lkZ2V0L3Njcm9sbGJhcjogUmVtb3ZlZC4KLSAgICAgICAgKiBE
ZWZhdWx0VGhlbWUvd2lkZ2V0L3NlYXJjaC9jYW5jZWw6IFJlbW92ZWQuCi0gICAgICAgICogRGVm
YXVsdFRoZW1lL3dpZGdldC9zZWFyY2gvZGVjb3JhdGlvbjogUmVtb3ZlZC4KLSAgICAgICAgKiBE
ZWZhdWx0VGhlbWUvd2lkZ2V0L3NlYXJjaC9maWVsZDogUmVtb3ZlZC4KLSAgICAgICAgKiBEZWZh
dWx0VGhlbWUvd2lkZ2V0L3NsaWRlcjogUmVtb3ZlZC4KLSAgICAgICAgKiBEZWZhdWx0VGhlbWUv
d2lkZ2V0L3NwaW5uZXI6IFJlbW92ZWQuCi0KLTIwMTMtMDQtMDkgIEVkIEJhcnRvc2ggIDxiYXJ0
b3NoQGdtYWlsLmNvbT4KLQotICAgICAgICBbRUZMXSAtLW1pbmltYWwgYnVpbGQgZmFpbHMgd2l0
aCBlcnJvcjogYHNldFNlYW1sZXNzSUZyYW1lc0VuYWJsZWQnIGlzIG5vdCBhIG1lbWJlciBvZiBg
V2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlcycKLSAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMzk1MQotCi0gICAgICAgIFJldmlld2VkIGJ5IExh
c3psbyBHb21ib3MuCi0KLSAgICAgICAgV3JhcHBlZCBjb2RlIHJlbGF0ZWQgdG8gaWZyYW1lIHNl
YW1sZXNzIGludG8gI2lmIEVOQUJMRShJRlJBTUVfU0VBTUxFU1MpCi0KLSAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwOgotICAgICAgICAoRHVtcFJl
bmRlclRyZWVTdXBwb3J0RWZsOjpzZXRTZWFtbGVzc0lGcmFtZXNFbmFibGVkKToKLSAgICAgICAg
KiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoX2V3a192aWV3X3ByaXZfbmV3KToKLQotMjAx
My0wNC0wOCAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3VuZy5jb20+Ci0KLSAgICAgICAg
W0VGTF0gcmVuZGVyaW5nIHdhcyBicm9rZW4gd2hlbiBzY3JvbGxlZCBld2tfdmlld19zaW5nbGUK
LSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNDEzNQot
Ci0gICAgICAgIFJldmlld2VkIGJ5IEd5dXlvdW5nIEtpbS4KLQotICAgICAgICBld2tfdmlld19z
aW5nbGUgdXNlIG1lbWNweSgpIHRvIGNvcHkgcHJldmlvdXMgYnVmZmVyIGZvciBzY3JvbGxpbmcs
IGJ1dAotICAgICAgICBtZW1jcHkoKSBzaG91bGQgbm90IGJlIHVzZWQgd2hlbiBzb3VyY2UgYnVm
ZmVyIGFuZCBkZXN0aW5hdGlvbiBidWZmZXIgYXJlCi0gICAgICAgIG92ZXJ3cmFwcGVkLgotCi0g
ICAgICAgICogZXdrL2V3a192aWV3X3NpbmdsZS5jcHA6Ci0gICAgICAgIChfZXdrX3ZpZXdfc2Ny
ZWVuX21vdmUpOgotCi0yMDEzLTA0LTA3ICBFZCBCYXJ0b3NoICA8YmFydG9zaEBnbWFpbC5jb20+
Ci0KLSAgICAgICAgW0VGTF0gLS1taW5pbWFsIGJ1aWxkIGZhaWxzIHdpdGggZXJyb3I6IGV4cGVj
dGVkIGA7JyBiZWZvcmUgYHJldHVybicKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTExMzk1MwotCi0gICAgICAgIFVucmV2aWV3ZWQuCi0KLSAgICAgICAg
KiBld2svZXdrX3NlY3VyaXR5X29yaWdpbi5jcHA6Ci0gICAgICAgIChld2tfc2VjdXJpdHlfb3Jp
Z2luX3dlYl9kYXRhYmFzZV9xdW90YV9nZXQpOiBBZGRlZCBtaXNzaW5nIHNlbWljb2xvbi4KLQot
MjAxMy0wNC0wNSAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgotCi0gICAgICAg
IE1hZGUgVVNFKEpTQykgdW5jb25kaXRpb25hbAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE0MDU4Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJz
IENhcmxzc29uLgotCi0gICAgICAgICogZXdrL2V3a19mcmFtZS5jcHA6Ci0gICAgICAgIChld2tf
ZnJhbWVfc2NyaXB0X2V4ZWN1dGUpOgotCi0yMDEzLTA0LTA0ICBDaHJpc3RvcGhlIER1bWV6ICA8
Y2guZHVtZXpAc2lzYS5zYW1zdW5nLmNvbT4KLQotICAgICAgICBbQ2Fpcm9dIEZpeCBjYW52YXMg
ZHJhd2luZyBvZiBTVkctYmFzZWQgcGF0dGVybnMgYW5kIHJlbW92ZSBOYXRpdmVJbWFnZUNhaXJv
Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTM5MjkK
LQotICAgICAgICBSZXZpZXdlZCBieSBNYXJ0aW4gUm9iaW5zb24uCi0KLSAgICAgICAgVXBkYXRl
IGNvZGUgbm93IHRoYXQgUGFzc05hdGl2ZUltYWdlUHRyIGlzIG5vdyBhIHR5cGVkZWYgdG8gUGFz
c1JlZlB0cjxjYWlyb19zdXJmYWNlX3Q+Ci0gICAgICAgIGluc3RlYWQgb2YgTmF0aXZlSW1hZ2VD
YWlybyouCi0KLSAgICAgICAgKiBld2svZXdrX2hpc3RvcnkuY3BwOgotICAgICAgICAoZXdrX2hp
c3RvcnlfaXRlbV9pY29uX3N1cmZhY2VfZ2V0KToKLSAgICAgICAgKGV3a19oaXN0b3J5X2l0ZW1f
aWNvbl9vYmplY3RfYWRkKToKLSAgICAgICAgKiBld2svZXdrX3NldHRpbmdzLmNwcDoKLSAgICAg
ICAgKGV3a19zZXR0aW5nc19pY29uX2RhdGFiYXNlX2ljb25fc3VyZmFjZV9nZXQpOgotICAgICAg
ICAoZXdrX3NldHRpbmdzX2ljb25fZGF0YWJhc2VfaWNvbl9vYmplY3RfZ2V0KToKLQotMjAxMy0w
My0zMSAgS2FuZ2lsIEhhbiAgPGthbmdpbC5oYW5Ac2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW0VG
TF0gUmVtb3ZlIHVudXNlZCBzdGRpby5oIGluY2x1ZGVzCi0gICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTM2NTUKLQotICAgICAgICBSZXZpZXdlZCBieSBB
bmRyZWFzIEtsaW5nLgotCi0gICAgICAgIFdlIGRvIG5vdCBoYXZlIHRvIGluY2x1ZGUgdW51c2Vk
IGhlYWRlciBmaWxlLgotCi0gICAgICAgICogZXdrL2V3a190aWxlZF9iYWNraW5nX3N0b3JlLmNw
cDoKLSAgICAgICAgKiBld2svZXdrX3RpbGVkX21hdHJpeC5jcHA6Ci0gICAgICAgICogZXdrL2V3
a190aWxlZF9tb2RlbC5jcHA6Ci0gICAgICAgICh0aWxlX2FjY291bnQpOgotCi0yMDEzLTAzLTI3
ICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KLQotICAgICAgICBBZGQgc3Vw
cG9ydCBmb3IgZG9jay10by1yaWdodCBvZiB0aGUgV2ViIEluc3BlY3RvciBpbiB0aGUgTWFjIHBv
cnQuCi0KLSAgICAgICAgVW5mb3J0dW5hdGVseSB0aGlzIHJlcXVpcmVzIFNhZmFyaSBjaGFuZ2Vz
LCBzbyBpdCBpcyBkaXNhYmxlZCBpbiB0aGUgbmlnaHRseSBidWlsZHMuCi0KLSAgICAgICAgaHR0
cHM6Ly93ZWJraXQub3JnL2IvMTEzMzQxCi0gICAgICAgIHJkYXI6Ly9wcm9ibGVtLzEwMzY4MTUy
Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgSm9zZXBoIFBlY29yYXJvLgotCi0gICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckZyb250ZW5kQ2xpZW50RWZsOjphdHRhY2hXaW5kb3cpOgotICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRFZmw6OnNldEF0dGFjaGVkV2luZG93V2lkdGgpOgot
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEVmbC5oOgotICAgICAgICAo
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRFZmwpOgotCi0yMDEzLTAzLTI2ICBIYXlhdG8gSXRvICA8
aGF5YXRvQGNocm9taXVtLm9yZz4KLQotICAgICAgICBBbGxvdyBTaGFkb3dDb250ZW50cyBpbiBI
aXRUZXN0cyBieSBkZWZhdWx0LgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTEzMTcxCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292
LgotCi0gICAgICAgICogZXdrL2V3a19mcmFtZS5jcHA6Ci0gICAgICAgIChld2tfZnJhbWVfaGl0
X3Rlc3RfbmV3KToKLQotMjAxMy0wMy0yMCAgSm9zZSBMZWppbiBQSiAgPGpvc2UubGVqaW5AZ21h
aWwuY29tPgotCi0gICAgICAgIGV3a19zZXR0aW5nc19tZW1vcnlfY2FjaGVfY2xlYXIgc2hvdWxk
IGNsZWFyIEpTIGdhcmJhZ2UgYW5kIHJlbGVhc2UgRmFzdE1hbGxvYydzIGZyZWUgcGFnZXMgdG8g
T1MKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjUz
NgotCi0gICAgICAgIFJldmlld2VkIGJ5IEd5dXlvdW5nIEtpbS4KLQotICAgICAgICBBZGRlZCBj
aGFuZ2VzIHRvIGNsZWFyIEpTIGdhcmJhZ2UgYW5kIHJlbGVhc2UgRmFzdE1hbGxvYydzIGZyZWUg
cGFnZXMgdG8gT1MKLSAgICAgICAgd2hpbGUgY2FsbGluZyBld2tfc2V0dGluZ3NfbWVtb3J5X2Nh
Y2hlX2NsZWFyIEFQSS4gCi0KLSAgICAgICAgKiBld2svZXdrX3NldHRpbmdzLmNwcDoKLSAgICAg
ICAgKGV3a19zZXR0aW5nc19tZW1vcnlfY2FjaGVfY2xlYXIpOgotCi0yMDEzLTAzLTIwICBKdW5n
SmlrIExlZSAgPGp1bmdqaWsubGVlQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxdIERpc2Fi
bGUgUkVRVUVTVF9BTklNQVRJT05fRlJBTUVfVElNRVIgdG8gcmVuZGVyIGEgbmV3IGFuaW1hdGlv
biBmcmFtZS4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTExMjExNAotCi0gICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2Vu
LgotCi0gICAgICAgIEFkZCBkdW1teSBmdW5jdGlvbnMgZm9yIFdLMS4KLQotICAgICAgICBFeGFt
cGxlIHRlc3QgY2FzZTogTWFudWFsVGVzdHMvYW5pbWF0aW9uL3RyYW5zaXRpb24tb24tYW5kLW9m
ZnNjcmVlbi1hbmltYXRpb24uaHRtbAotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21l
Q2xpZW50RWZsLmNwcDogQWRkIGR1bW15IGZ1bmN0aW9ucyBmb3IgV0sxLgotICAgICAgICAoV2Vi
Q29yZSk6Ci0gICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRFZmw6OnNjaGVkdWxlQW5pbWF0
aW9uKToKLSAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEVmbDo6c2VydmljZVNjcmlwdGVk
QW5pbWF0aW9ucyk6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmg6
Ci0gICAgICAgIChDaHJvbWVDbGllbnRFZmwpOgotCi0yMDEzLTAzLTE1ICBOYXRlIENoYXBpbiAg
PGphcGhldEBjaHJvbWl1bS5vcmc+Ci0KLSAgICAgICAgSGlkZSBNYWluUmVzb3VyY2VMb2FkZXIg
ZnJvbSB0aGUgb3V0c2lkZSB3b3JsZAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTA5OTcxCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4K
LQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcDoKLSAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpjb252ZXJ0TWFpblJlc291cmNl
TG9hZFRvRG93bmxvYWQpOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50RWZsLmg6Ci0gICAgICAgIChGcmFtZUxvYWRlckNsaWVudEVmbCk6Ci0KLTIwMTMtMDMtMTUg
IEFiaGlzaGVrIEFyeWEgIDxpbmZlcm5vQGNocm9taXVtLm9yZz4KLQotICAgICAgICBSZXBsYWNl
IHN0YXRpY19jYXN0cyB3aXRoIHRvKiBoZWxwZXIgZnVuY3Rpb25zLgotICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEyNDAxCi0KLSAgICAgICAgUmV2aWV3
ZWQgYnkgU3RlcGhlbiBDaGVubmV5LgotCi0gICAgICAgIHRvKiBoZWxwZXIgZnVuY3Rpb25zIGFy
ZSBwcmVmZXJyZWQgb3ZlciBzdGF0aWNfY2FzdCBjYWxscyBzaW5jZSB0aGV5Ci0gICAgICAgIGhl
bHAgdG8gY2F0Y2ggYmFkIGNhc3RzIGVhc2lseSBvbiB0aGUgdGVzdGluZyBpbmZyYXN0cnVjdHVy
ZS4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcDoK
LSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpyZWRpcmVjdERhdGFUb1Bs
dWdpbik6Ci0KLTIwMTMtMDMtMTQgIE1hbnVlbCBSZWdvIENhc2Fzbm92YXMgIDxyZWdvQGlnYWxp
YS5jb20+Ci0KLSAgICAgICAgQWRkIHNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQgc2V0
dGluZyB0byBXZWJDb3JlOjpQYWdlCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDk0MDQKLQotICAgICAgICBSZXZpZXdlZCBieSBUb255IENoYW5nLgot
Ci0gICAgICAgIFVzZSBuZXcgc2V0dGluZ3MgZm9yIHNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCBh
bmQKLSAgICAgICAgc2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZC4KLQotICAgICAgICBS
ZW1vdmUgY29kZSByZWxhdGVkIHRvIERSVCBhcyBpdCBpcyBub3QgbmVlZGVkIGFueW1vcmUuCi0K
LSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwOgot
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5oOgotICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJD
b3JlOjpFZGl0b3JDbGllbnRFZmw6OnNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCk6Ci0gICAgICAg
IChXZWJDb3JlOjpFZGl0b3JDbGllbnRFZmw6OmlzU2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5h
YmxlZCk6Ci0gICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRFZmw6OkVkaXRvckNsaWVudEVm
bCk6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmg6Ci0gICAgICAg
IChFZGl0b3JDbGllbnRFZmwpOgotCi0yMDEzLTAzLTE0ICBKZXN1cyBTYW5jaGV6LVBhbGVuY2lh
ICA8amVzdXMucGFsZW5jaWFAb3BlbmJvc3NhLm9yZz4KLQotICAgICAgICBbRUZMXSBVc2UgQ1JP
U1NfUExBVEZPUk1fQ09OVEVYVF9NRU5VCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMTE4NzcKLQotICAgICAgICBSZXZpZXdlZCBieSBDYWlvIE1hcmNl
bG8gZGUgT2xpdmVpcmEgRmlsaG8uCi0KLSAgICAgICAgQWRqdXN0IENvbnRleHRNZW51Q2xpZW50
IHRvIHVzZSB0aGUgQ1JPU1NfUExBVEZPUk1fQ09OVEVYVF9NRU5VUyBVU0UgZmxhZwotICAgICAg
ICBieSBpbXBsZW1lbnRpbmcgY3VzdG9taXplTWVudSgpIGluc3RlYWQgb2YgZ2V0Q3VzdG9tTWVu
dUZyb21EZWZhdWx0SXRlbXMoKQotICAgICAgICBhbmQgYnkgY2FsbGluZyBjb3JlTWVudS0+aXRl
bXMoKSBpbnN0ZWFkIG9mIGNvcmVNZW51LT5wbGF0Zm9ybURlc2NyaXB0aW9uKCkuCi0KLSAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9Db250ZXh0TWVudUNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChX
ZWJDb3JlOjpDb250ZXh0TWVudUNsaWVudEVmbDo6Y3VzdG9taXplTWVudSk6Ci0gICAgICAgICog
V2ViQ29yZVN1cHBvcnQvQ29udGV4dE1lbnVDbGllbnRFZmwuaDoKLSAgICAgICAgKENvbnRleHRN
ZW51Q2xpZW50RWZsKToKLSAgICAgICAgKiBld2svZXdrX2NvbnRleHRtZW51LmNwcDoKLSAgICAg
ICAgKGV3a19jb250ZXh0X21lbnVfbmV3KToKLQotMjAxMy0wMy0xNCAgSm9uYXRoYW4gTGl1ICA8
bmV0MTQ3QGdtYWlsLmNvbT4KLQotICAgICAgICBGaXggZGV0ZWN0aW9uIG9mIEludGVsIE1hYyBP
UyBYIHBsYXRmb3JtIG9uIEludGVsIE1hYyA2NC1iaXQKLSAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjMxMgotCi0gICAgICAgIFJldmlld2VkIGJ5IFNp
bW9uIEhhdXNtYW5uLgotCi0gICAgICAgICogZXdrL2V3a19zZXR0aW5ncy5jcHA6Ci0gICAgICAg
IChfZXdrX3NldHRpbmdzX3dlYmtpdF9vc192ZXJzaW9uX2dldCk6Ci0KLTIwMTMtMDMtMTMgIFBh
dmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+Ci0KLSAgICAgICAgV2ViIEluc3Bl
Y3RvcjogZ2V0IHJpZCBvZiBoaWRkZW5QYW5lbHMgZmlsdGVyCi0gICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTIyNTIKLQotICAgICAgICBSZXZpZXdlZCBi
eSBWc2V2b2xvZCBWbGFzb3YuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JD
bGllbnRFZmwuY3BwOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEVm
bC5oOgotICAgICAgICAoSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRFZmwpOgotCi0yMDEzLTAzLTA2
ICBLcnp5c3p0b2YgQ3plY2ggIDxrLmN6ZWNoQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxd
IE1pc3NpbmcgaW1wbGVtZW50YXRpb24gb2YgQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJFZmwgYW5k
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnRFZmwgZmlsZXMKLSAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDU4NAotCi0gICAgICAgIFJldmlld2VkIGJ5IEd5
dXlvdW5nIEtpbS4KLQotICAgICAgICBBZGRzIHN1cHBvcnQgZm9yIGhlbHAgdGV4dCBpbiBEdW1w
UmVuZGVyVHJlZS4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3Vw
cG9ydEVmbC5jcHA6Ci0gICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OmFjY2Vzc2li
aWxpdHlIZWxwVGV4dCk6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVT
dXBwb3J0RWZsLmg6Ci0KLTIwMTMtMDMtMDYgIEJlbmphbWluIFBvdWxhaW4gIDxiZW5qYW1pbkB3
ZWJraXQub3JnPgotCi0gICAgICAgIFdlYktpdFRlc3RSdW5uZXIgbmVlZHMgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZWxlbWVudERvZXNBdXRvQ29tcGxldGVGb3JFbGVtZW50V2l0aElkCi0gICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MjY5NgotCi0gICAgICAg
IFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9E
dW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1
bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5oOgotCi0yMDEzLTAzLTA1ICBHZW9mZnJleSBHYXJlbiAg
PGdnYXJlbkBhcHBsZS5jb20+Ci0KLSAgICAgICAgUmVtb3ZlZCBzb21lIGRlYWQgY29kZSBpbiB0
aGUgcGFnZSBjYWNoZQotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTExNTI1Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQWxleGV5IFByb3NrdXJ5YWtvdi4K
LQotICAgICAgICBQYWdlIGNhY2hlIGF1dG9yZWxlYXNlIGRvZXNuJ3QgZXhpc3QgYW55bW9yZSwg
c28gdGhlcmUncyBubyBuZWVkIHRvIGtlZXAKLSAgICAgICAgYXJvdW5kIHRoZXNlIG9sZHMgaGFj
a3MuCi0KLSAgICAgICAgKiBld2svZXdrX3NldHRpbmdzLmNwcDoKLSAgICAgICAgKGV3a19zZXR0
aW5nc19tZW1vcnlfY2FjaGVfY2xlYXIpOgotCi0yMDEzLTAzLTAzICBBZGFtIEJhcnRoICA8YWJh
cnRoQHdlYmtpdC5vcmc+Ci0KLSAgICAgICAgVW5yZXZpZXdlZCBhdHRlbXB0ZWQgYnVpbGQgZml4
LiBBZGRzIGJhY2sgc29tZSBpbmNsdWRlcyByZW1vdmVkIGluCi0gICAgICAgIGh0dHA6Ly90cmFj
LndlYmtpdC5vcmcvY2hhbmdlc2V0LzE0NDU2NS4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHA6Ci0gICAgICAgICogZXdrL2V3a19mcmFtZS5j
cHA6Ci0KLTIwMTMtMDMtMDMgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KLQotICAg
ICAgICBVbnJldmlld2VkIHJvbGxvdXQgb2YgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9yMTQ0NTMw
Ci0gICAgICAgIEFzIGRlc2NyaWJlZCBpbiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTExMTY3IGFuZAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTExMDM1LCB0aGlzIHBhdGNoIGNhdXNlZCBhCi0gICAgICAgIGxhcmdlIG51
bWJlciBvZiBBU1NFUlRzIGluIGNocm9taXVtLXdpbi4KLQotICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHA6Ci0gICAgICAgICogZXdrL2V3a19mcmFt
ZS5jcHA6Ci0KLTIwMTMtMDMtMDIgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5j
b20+Ci0KLSAgICAgICAgTW92ZSBjb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8gZnJv
bSBUZXN0UnVubmVyIHRvIEludGVybmFscwotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTA5NzcyCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBL
bGluZy4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVm
bC5jcHA6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZs
Lmg6Ci0KLTIwMTMtMDItMjggIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+Ci0K
LSAgICAgICAgUmVkdWNlIGFtb3VudCBvZiByZWJ1aWxkaW5nIHdoZW4gdG91Y2hpbmcgbmV0d29y
a2luZyBoZWFkZXJzCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMTEwMzUKLQotICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KLQotICAgICAg
ICBBZGRpbmcgaW5jbHVkZXMgdGhhdCBhcmUgbm93IG5lY2Vzc2FyeSBiZWNhdXNlIFdlYkNvcmUg
aGVhZGVycyBkb24ndCBoYXZlIHRoZW0KLSAgICAgICAgYW55IG1vcmUuCi0KLSAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwOgotICAgICAgICAqIGV3
ay9ld2tfZnJhbWUuY3BwOgotCi0yMDEzLTAzLTAxICBKYXNvbiBBbmRlcnNzZW4gIDxqYW5kZXJz
c2VuQGdtYWlsLmNvbT4KLQotICAgICAgICBNb3ZlIG1hcmtlclRleHRGb3JMaXN0SXRlbSBmcm9t
IFRlc3RSdW5uZXIgdG8gSW50ZXJuYWxzCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMTA5MzkKLQotICAgICAgICBSZXZpZXdlZCBieSBCZW5qYW1pbiBQ
b3VsYWluLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0
RWZsLmNwcDoKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRF
ZmwuaDoKLQotMjAxMy0wMy0wMSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFp
bC5jb20+Ci0KLSAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE0NDQyMiBhbmQgcjE0
NDQyNC4KLSAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTQ0NDIyCi0g
ICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzE0NDQyNAotICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTExMTY3Ci0KLSAgICAgICAg
Q2F1c2VkIG92ZXIgMjAgdGVzdHMgdG8gZmFpbCBhc3NlcnRpb24gb24gQ2hyb21pdW0gV2luIHBv
cnQgYXMKLSAgICAgICAgQVNTRVJUSU9OIEZBSUxFRDogbV9wbGF0Zm9ybVJlcXVlc3RVcGRhdGVk
IChSZXF1ZXN0ZWQgYnkKLSAgICAgICAgdG95b3NoaW0gb24gI3dlYmtpdCkuCi0KLSAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwOgotICAgICAgICAq
IGV3ay9ld2tfZnJhbWUuY3BwOgotCi0yMDEzLTAyLTI4ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8
YXBAYXBwbGUuY29tPgotCi0gICAgICAgIFJlZHVjZSBhbW91bnQgb2YgcmVidWlsZGluZyB3aGVu
IHRvdWNoaW5nIG5ldHdvcmtpbmcgaGVhZGVycwotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTExMDM1Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBT
ZWlkZWwuCi0KLSAgICAgICAgQWRkaW5nIGluY2x1ZGVzIHRoYXQgYXJlIG5vdyBuZWNlc3Nhcnkg
YmVjYXVzZSBXZWJDb3JlIGhlYWRlcnMgZG9uJ3QgaGF2ZSB0aGVtCi0gICAgICAgIGFueSBtb3Jl
LgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNw
cDoKLSAgICAgICAgKiBld2svZXdrX2ZyYW1lLmNwcDoKLQotMjAxMy0wMi0yOCAgU2Vva2p1IEt3
b24gIDxzZW9ranUua3dvbkBnbWFpbC5jb20+Ci0KLSAgICAgICAgW0VGTF0gRm9jdXMgcHJvYmxl
bSBpbiBpbnNwZWN0b3IvZXh0ZW5zaW9ucy9leHRlbnNpb25zLXBhbmVsLmh0bWwKLSAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3MDc3Ci0KLSAgICAgICAg
UmV2aWV3ZWQgYnkgTGFzemxvIEdvbWJvcy4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0lu
c3BlY3RvckNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVu
ZENsaWVudEVmbDo6YnJpbmdUb0Zyb250KTogU2V0IGZvY3VzIG9uIGluc3BlY3RvclZpZXcuCi0K
LTIwMTMtMDItMjMgIEphc29uIEFuZGVyc3NlbiAgPGphbmRlcnNzZW5AZ21haWwuY29tPgotCi0g
ICAgICAgIE1vdmUgc2V0QXV0b2ZpbGxlZCBmcm9tIFRlc3RSdW5uZXIgdG8gV2ViQ29yZQotICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwNTIxCi0KLSAg
ICAgICAgUmV2aWV3ZWQgYnkgQmVuamFtaW4gUG91bGFpbi4KLQotICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHA6Ci0gICAgICAgICogV2ViQ29yZVN1
cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmg6Ci0KLTIwMTMtMDItMjIgIEd5dXlvdW5n
IEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBbRUZMXSBVc2UgRUlO
QV9MT0cgaW5zdGVhZCBvZiBmcHJpbnRmIAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTEwMzEzCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgTGFzemxvIEdv
bWJvcy4KLQotICAgICAgICBSZXBsYWNlIGZwcmludGYgd2l0aCBFSU5BX0xPRy4KLQotICAgICAg
ICAqIGV3ay9ld2tfZnJhbWUuY3BwOgotICAgICAgICAoX2V3a19mcmFtZV9kZWJ1Zyk6Ci0KLTIw
MTMtMDItMTkgIFRvbnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KLQotICAgICAgICBDb252
ZXJ0IDMgc2V0dGluZ3MgdG8gdXNlIFNldHRpbmdzLmluCi0gICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDk4NzUKLQotICAgICAgICBSZXZpZXdlZCBieSBS
eW9zdWtlIE5pd2EuCi0KLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoX2V3
a192aWV3X3ByaXZfbmV3KTogUmVuYW1lIGlzRE9NUGFzdGVBbGxvd2VkIHRvIERPTVBhc3RlQWxs
b3dlZC4KLQotMjAxMy0wMi0xOCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNv
bT4KLQotICAgICAgICBDbGVhbiB1cCB0aGUgYm9vbGVhbiBhcmd1bWVudCB0byB2aXNpYmxlQ29u
dGVudFJlY3QKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTExMDE2NwotCi0gICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KLQotICAgICAgICBS
ZXBsYWNlIHRoZSBib29sZWFuIGFyZ3VtZW50IHRvIHZpc2libGVDb250ZW50UmVjdCgpIHdpdGgK
LSAgICAgICAgYW4gZW51bS4KLQotICAgICAgICAqIGV3ay9ld2tfZnJhbWUuY3BwOgotICAgICAg
ICAoZXdrX2ZyYW1lX3Zpc2libGVfY29udGVudF9nZW9tZXRyeV9nZXQpOgotCi0yMDEzLTAyLTE4
ICBNaWNoYcWCIFBha3XFgmEgdmVsIFJ1dGthICA8bS5wYWt1bGFAc2Ftc3VuZy5jb20+Ci0KLSAg
ICAgICAgW0VGTF0gRml4IGJ1aWxkIHdoZW4gQ09OVEVYVF9NRU5VUyBmbGFnIGlzIHR1cm5lZCBv
ZmYKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwOTky
NAotCi0gICAgICAgIFJldmlld2VkIGJ5IEd5dXlvdW5nIEtpbS4KLQotICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0NvbnRleHRNZW51Q2xpZW50RWZsLmNwcDoKLSAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9Db250ZXh0TWVudUNsaWVudEVmbC5oOgotICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6
Ci0gICAgICAgIChfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKToKLSAgICAgICAgKF9ld2tfdmlld19w
cml2X25ldyk6Ci0gICAgICAgIChfZXdrX3ZpZXdfcHJpdl9kZWwpOgotICAgICAgICAoZXdrX3Zp
ZXdfY29udGV4dF9tZW51X2dldCk6Ci0KLTIwMTMtMDItMTggIEdyemVnb3J6IEN6YWprb3dza2kg
IDxnLmN6YWprb3dza2lAc2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW1dLMl1bRUZMXSBVbmlmaWVk
IHRleHQgY2hlY2tlciBpbXBsZW1lbnRhdGlvbgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3NjgyCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJz
IENhcmxzc29uLgotCi0gICAgICAgIEFkZCBhbiBlbXB0eSBjaGVja1RleHRPZlBhcmFncmFwaCBp
bXBsZW1lbnRhdGlvbiBmb3IgV0sxLUVGTAotICAgICAgICB0byBkbyBub3QgYnJlYWsgYnVpbGQg
d2hlbiBXVEZfVVNFX1VOSUZJRURfVEVYVF9DSEVDS0lORwotICAgICAgICBpcyBlbmFibGVkLgot
Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmg6Ci0gICAgICAgIChF
ZGl0b3JDbGllbnRFZmwpOgotICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50RWZsOjpjaGVj
a1RleHRPZlBhcmFncmFwaCk6Ci0KLTIwMTMtMDItMTUgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAg
PGFsbGFuLmplbnNlbkBkaWdpYS5jb20+Ci0KLSAgICAgICAgU2ltcGxpZnkgaGl0VGVzdFJlc3Vs
dEF0UG9pbnQgYW5kIG5vZGVzRnJvbVJlY3QgQVBJcwotICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU3MjAKLQotICAgICAgICBSZXZpZXdlZCBieSBKdWxp
ZW4gQ2hhZmZyYWl4LgotCi0gICAgICAgIFVwZGF0ZSBjYWxscyB0byBuZXcgQVBJLgotCi0gICAg
ICAgICogZXdrL2V3a19mcmFtZS5jcHA6Ci0gICAgICAgIChld2tfZnJhbWVfaGl0X3Rlc3RfbmV3
KToKLQotMjAxMy0wMi0xMyAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQGRp
Z2lhLmNvbT4KLQotICAgICAgICBbUXRdIHdpbmRvdy5vcGVuIHBhc3NlcyBoZWlnaHQgYW5kIHdp
ZHRoIHBhcmFtZXRlcnMgZXZlbiBpZiBub3QgZGVmaW5lZCBpbiBhIHBhZ2UKLSAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNzcwNQotCi0gICAgICAgIFJl
dmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgotCi0gICAgICAgIERvIG5vdCBy
ZXNpemUgd2luZG93IHdoZW4gZGVmYXVsdCBzaXplIGlzIHJlcXVlc3RlZC4KLQotICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpD
aHJvbWVDbGllbnRFZmw6OnNldFdpbmRvd1JlY3QpOgotCi0yMDEzLTAyLTEyICBIdWFuZyBEb25n
c3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgotCi0gICAgICAgIFtUZXhNYXBdIEFwcGx5
IGZyYW1lcy1wZXItc2Vjb25kIGRlYnVnIGNvdW50ZXIgdG8gV0sxLgotICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5NTQwCi0KLSAgICAgICAgUmV2aWV3
ZWQgYnkgTm9hbSBSb3NlbnRoYWwuCi0KLSAgICAgICAgTWFrZSBBY2NlbGVyYXRlZENvbXBvc2l0
aW5nQ29udGV4dEVmbCB1c2UgVGV4dHVyZU1hcHBlckZQU0NvdW50ZXIuCi0KLSAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dEVmbC5jcHA6Ci0gICAg
ICAgIChXZWJDb3JlOjpBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6cmVuZGVyTGF5ZXJz
KToKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4
dEVmbC5oOgotICAgICAgICAoQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQpOgotCi0yMDEz
LTAyLTExICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgotCi0gICAgICAgIERpc2Fi
bGUgZGVsZXRlIGJ1dHRvbiBjb250cm9sbGVyIG9uIG5vbi1NYWMgcG9ydHMgYW5kIGRlbGV0ZSBF
ZGl0b3JDbGllbnQ6OnNob3VsZFNob3dEZWxldGVJbnRlcmZhY2UKLSAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwOTUzNAotCi0gICAgICAgIFJldmlld2Vk
IGJ5IEFuZGVycyBDYXJsc3Nvbi4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNs
aWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3JlKToKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9FZGl0b3JDbGllbnRFZmwuaDoKLSAgICAgICAgKEVkaXRvckNsaWVudEVmbCk6Ci0KLTIwMTMt
MDItMDggIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+Ci0KLSAgICAgICAg
TW92ZSB3b3JrZXJUaHJlYWRDb3VudCBmcm9tIFRlc3RSdW5uZXIgdG8gV2ViQ29yZSBJbnRlcm5h
bHMKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwOTIz
OQotCi0gICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgotCi0gICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcDoKLSAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuaDoKLQotMjAxMy0wMi0wNyAgQmVuamFt
aW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNvbT4KLQotICAgICAgICBNb3ZlIHBhdXNlQW5p
bWF0aW9uL3BhdXNlVHJhbnNpdGlvbiBmcm9tIFRlc3RSdW5uZXIgdG8gSW50ZXJuYWxzCi0gICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDkxMDcKLQotICAg
ICAgICBSZXZpZXdlZCBieSBBbmRlcnMgQ2FybHNzb24uCi0KLSAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwOgotICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5oOgotCi0yMDEzLTAyLTA0ICBCZW5qYW1pbiBQ
b3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgotCi0gICAgICAgIEtpbGwgc3VzcGVuZEFuaW1h
dGlvbigpLCByZXN1bWVBbmltYXRpb24oKSBhbmQgbnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKCkg
ZnJvbSBEUlQvV1RSOyB1c2UgSW50ZXJuYWxzCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMDg3NDEKLQotICAgICAgICBSZXZpZXdlZCBieSBUb255IENo
YW5nLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZs
LmNwcDoKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwu
aDoKLQotMjAxMy0wMi0wNCAgQmFsYXpzIEtlbGVtZW4gIDxrYmFsYXpzQHdlYmtpdC5vcmc+Ci0K
LSAgICAgICAgW1NvdXBdIFdyYXAgU291cFNlc3Npb24gYnkgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDg2MTUK
LQotICAgICAgICBSZXZpZXdlZCBieSBBbGV4ZXkgUHJvc2t1cnlha292LgotCi0gICAgICAgIENo
YW5nZWQgdG8gaG9sZCB0aGUgU291cFNlc3Npb24gcG9pbnRlciBpbiBhIE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbgotICAgICAgICBzbyB3ZSBjYW4gcGFzcyBpdCB0byBXZWJDb3JlLiBfRXdrX1ZpZXdf
UHJpdmF0ZV9EYXRhIGhhcyB0byBiZQotICAgICAgICBjaGFuZ2VkIGZvciB0aGF0IHJlYXNvbi4K
LQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTmV0d29ya2luZ0NvbnRleHRFZmwuY3Bw
OgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVOZXR3b3JraW5nQ29udGV4dEVmbDo6c3RvcmFnZVNl
c3Npb24pOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTmV0d29ya2luZ0NvbnRleHRF
ZmwuaDoKLSAgICAgICAgKEZyYW1lTmV0d29ya2luZ0NvbnRleHRFZmwpOgotICAgICAgICAqIGV3
ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKToKLSAgICAg
ICAgKF9ld2tfdmlld19wcml2X25ldyk6Ci0gICAgICAgIChld2tfdmlld19zb3VwX3Nlc3Npb25f
Z2V0KToKLSAgICAgICAgKGV3a192aWV3X3NvdXBfc2Vzc2lvbl9zZXQpOgotICAgICAgICAoRVdL
UHJpdmF0ZTo6c3RvcmFnZVNlc3Npb24pOgotICAgICAgICAoRVdLUHJpdmF0ZSk6Ci0gICAgICAg
ICogZXdrL2V3a192aWV3X3ByaXZhdGUuaDoKLSAgICAgICAgKEVXS1ByaXZhdGUpOgotCi0yMDEz
LTAyLTAzICBLd2FuZ1lvbmcgQ2hvaSAgPGt5MC5jaG9pQHNhbXN1bmcuY29tPgotCi0gICAgICAg
IEZpeCBidWlsZCB3YXJuaW5nIGFmdGVyIHIxNDE0NzMKLSAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODc4MgotCi0gICAgICAgIFJldmlld2VkIGJ5IEtl
bnRhcm8gSGFyYS4KLQotICAgICAgICBGaXggLVd1bnVzZWQtcGFyYW1ldGVyIGJ1aWxkIHdhcm5p
bmcuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuY3BwOgotICAg
ICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50RWZsOjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YUZv
clJhbmdlKToKLQotMjAxMy0wMS0zMSAgQXVyaW1hcyBMaXV0aWthcyAgPGF1cmltYXNAY2hyb21p
dW0ub3JnPgotCi0gICAgICAgIEVkaXRvcjo6bV9jb21wb3NpdGlvbk5vZGUgbm90IHVwZGF0ZWQg
b24gSFRNTElucHV0RWxlbWVudDo6c2V0VmFsdWUoKQotICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3NzM3Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgUnlv
c3VrZSBOaXdhLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmNw
cDoKLSAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEVmbDo6cmVzcG9uZFRvQ2hhbmdlZFNl
bGVjdGlvbik6Ci0gICAgICAgICAgICBBZGRpbmcgYSBjYWxsIHRvIHRoZSBuZXdseSByZWZhY3Rv
cmVkIG1ldGhvZC4KLQotMjAxMy0wMS0zMSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJv
dEBnbWFpbC5jb20+Ci0KLSAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE0MTQ3OS4K
LSAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTQxNDc5Ci0gICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDg1NjQKLQotICAgICAg
ICBicmVha3MgY2hyb21pdW0gdGVzdCAoUmVxdWVzdGVkIGJ5IG1vcnJpdGEgb24gI3dlYmtpdCku
Ci0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuY3BwOgotICAgICAg
ICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50RWZsOjpyZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uKToK
LQotMjAxMy0wMS0zMSAgQXVyaW1hcyBMaXV0aWthcyAgPGF1cmltYXNAY2hyb21pdW0ub3JnPgot
Ci0gICAgICAgIEVkaXRvcjo6bV9jb21wb3NpdGlvbk5vZGUgbm90IHVwZGF0ZWQgb24gSFRNTElu
cHV0RWxlbWVudDo6c2V0VmFsdWUoKQotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTA3NzM3Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgUnlvc3VrZSBOaXdh
LgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmNwcDoKLSAgICAg
ICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEVmbDo6cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbik6
Ci0gICAgICAgICAgICBBZGRpbmcgYSBjYWxsIHRvIHRoZSBuZXdseSByZWZhY3RvcmVkIG1ldGhv
ZC4KLQotMjAxMy0wMS0zMSAgRW5yaWNhIENhc3VjY2kgIDxlbnJpY2FAYXBwbGUuY29tPgotCi0g
ICAgICAgIFdlYktpdDI6IHByb3ZpZGUgbmV3IGJ1bmRsZSBBUElzIHRvIGFsbG93IGJ1bmRsZSBj
bGllbnRzIHRvIGJlIG5vdGlmaWVkIG9mIHBhc3RlYm9hcmQgYWNjZXNzLgotICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA4Mzk2LgotICAgICAgICA8cmRh
cjovL3Byb2JsZW0vMTI5MjA0NjE+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQWxleGV5IFByb3Nr
dXJ5YWtvdi4KLQotICAgICAgICBBZGRzIHN0dWIgaW1wbGVtZW50YXRpb24gZm9yIFdlYktpdCBv
ZiB0aGUgbmV3IEVkaXRvckNsaWVudCBtZXRob2RzLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBv
cnQvRWRpdG9yQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEVm
bDo6d2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKToKLSAgICAgICAgKFdlYkNvcmU6OkVk
aXRvckNsaWVudEVmbDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGFGb3JSYW5nZSk6Ci0gICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmg6Ci0KLTIwMTMtMDEtMzEgIENocmlz
dG9waGUgRHVtZXogIDxkY2hyaXNAZ21haWwuY29tPgotCi0gICAgICAgIFtFRkxdIERpc2FibGUg
V2ViIEludGVudHMKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEwODQ1NwotCi0gICAgICAgIFJldmlld2VkIGJ5IEFsZXhleSBQcm9za3VyeWFrb3YuCi0K
LSAgICAgICAgUmVtb3ZlIGNvZGUgcmVsYXRlZCB0byBXZWIgSW50ZW50cyBmcm9tIEVGTAotICAg
ICAgICBXZWJLaXQuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1
cHBvcnRFZmwuY3BwOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3Vw
cG9ydEVmbC5oOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZs
LmNwcDoKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5oOgot
ICAgICAgICAoRnJhbWVMb2FkZXJDbGllbnRFZmwpOgotICAgICAgICAqIGV3ay9FV2ViS2l0Lmg6
Ci0gICAgICAgICogZXdrL2V3a19mcmFtZS5jcHA6Ci0gICAgICAgICogZXdrL2V3a19mcmFtZS5o
OgotICAgICAgICAqIGV3ay9ld2tfZnJhbWVfcHJpdmF0ZS5oOgotICAgICAgICAqIGV3ay9ld2tf
aW50ZW50LmNwcDogUmVtb3ZlZC4KLSAgICAgICAgKiBld2svZXdrX2ludGVudC5oOiBSZW1vdmVk
LgotICAgICAgICAqIGV3ay9ld2tfaW50ZW50X3ByaXZhdGUuaDogUmVtb3ZlZC4KLSAgICAgICAg
KiBld2svZXdrX2ludGVudF9yZXF1ZXN0LmNwcDogUmVtb3ZlZC4KLSAgICAgICAgKiBld2svZXdr
X2ludGVudF9yZXF1ZXN0Lmg6IFJlbW92ZWQuCi0KLTIwMTMtMDEtMzEgIFNoZXJpZmYgQm90ICA8
d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgotCi0gICAgICAgIFVucmV2aWV3ZWQsIHJvbGxp
bmcgb3V0IHIxNDExMTAuCi0gICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0
LzE0MTExMAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTA4MzQ5Ci0KLSAgICAgICAgVGhpcyBwYXRjaCBicm9rZSBXSzItRUZMIHVuaXQgdGVzdHMgKFJl
cXVlc3RlZCBieSBncnplZ29yeiBvbgotICAgICAgICAjd2Via2l0KS4KLQotICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5oOgotCi0yMDEzLTAxLTMwICBIdWFuZyBEb25n
c3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgotCi0gICAgICAgIFtUZXhNYXBdIFJlbW92
ZSBHcmFwaGljc0xheWVyIGluIFRleHR1cmVNYXBwZXJMYXllci4KLSAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNzA3MwotCi0gICAgICAgIFJldmlld2Vk
IGJ5IE5vYW0gUm9zZW50aGFsLgotCi0gICAgICAgIEluY2x1ZGUgR3JhcGhpY3NMYXllclRleHR1
cmVNYXBwZXIuaCB0byB1c2UgdG9UZXh0dXJlTWFwcGVyTGF5ZXIoKS4KLQotICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0RWZsLmNwcDoKLQotMjAx
My0wMS0yOSAgR3J6ZWdvcnogQ3phamtvd3NraSAgPGcuY3phamtvd3NraUBzYW1zdW5nLmNvbT4K
LQotICAgICAgICBbRUZMXSBVbmlmaWVkIHRleHQgY2hlY2tlciBpbXBsZW1lbnRhdGlvbi4KLSAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNzY4MgotCi0g
ICAgICAgIFJldmlld2VkIGJ5IEFuZGVycyBDYXJsc3Nvbi4KLQotICAgICAgICBBZGQgYW4gZW1w
dHkgY2hlY2tUZXh0T2ZQYXJhZ3JhcGggaW1wbGVtZW50YXRpb24gZm9yIFdLMS1FRkwKLSAgICAg
ICAgdG8gZG8gbm90IGJyZWFrIGJ1aWxkIHdoZW4gV1RGX1VTRV9VTklGSUVEX1RFWFRfQ0hFQ0tJ
TkcKLSAgICAgICAgaXMgZW5hYmxlZC4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRv
ckNsaWVudEVmbC5oOgotICAgICAgICAoRWRpdG9yQ2xpZW50RWZsKToKLSAgICAgICAgKFdlYkNv
cmU6OkVkaXRvckNsaWVudEVmbDo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgpOgotCi0yMDEzLTAxLTI4
ICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgotCi0gICAgICAgIFtU
ZXhNYXBdIEVuYWJsZSBkZWJ1ZyBib3JkZXJzIGFuZCByZXBhaW50IGNvdW50ZXIgdmlhIFNldHRp
bmdzLgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3
MTk4Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQmVuamFtaW4gUG91bGFpbi4KLQotICAgICAgICBJ
ZiBXRUJLSVRfU0hPV19DT01QT1NJVElOR19ERUJVR19WSVNVQUxTIGlzIHNldCB0byAxLCBzZXQK
LSAgICAgICAgc2hvd0RlYnVnQm9yZGVycyBhbmQgc2hvd1JlcGFpbnRDb3VudGVyIGluIFNldHRp
bmdzIHRvIHRydWUuCi0KLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoX2V3
a192aWV3X3ByaXZfbmV3KToKLQotMjAxMy0wMS0yMiAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJz
Y2FAYXBwbGUuY29tPgotCi0gICAgICAgIFVzZSBhIHBsYXRmb3JvbSBzdHJhdGVneSBmb3IgbG9j
YWwgc3RvcmFnZQotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTA3NjAwCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KLQotICAgICAg
ICBVcGRhdGUgZm9yIG5ldyBzdG9yYWdlIHN0cmF0ZWd5LgotCi0gICAgICAgICogV2ViQ29yZVN1
cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzRWZsLmNwcDoKLSAgICAgICAgKFBsYXRmb3JtU3RyYXRl
Z2llc0VmbDo6Y3JlYXRlU3RvcmFnZVN0cmF0ZWd5KToKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9QbGF0Zm9ybVN0cmF0ZWdpZXNFZmwuaDoKLSAgICAgICAgKFBsYXRmb3JtU3RyYXRlZ2llc0Vm
bCk6Ci0KLTIwMTMtMDEtMjIgIEtyenlzenRvZiBDemVjaCAgPGsuY3plY2hAc2Ftc3VuZy5jb20+
Ci0KLSAgICAgICAgW0VGTF0gQWRkcyBBY2Nlc3NpYmlsaXR5IHN1cHBvcnQgdG8gd2sxLgotICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3NDQwCi0KLSAg
ICAgICAgUmV2aWV3ZWQgYnkgR3l1eW91bmcgS2ltLgotCi0gICAgICAgIEFkZHMgcG9zc2liaWxp
dHkgb2YgZm9jdXNpbmcgYW5kIHJldHJpZXZpbmcgYWNjZXNzaWJsZSBvYmplY3QuCi0KLSAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwOgotICAgICAg
ICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpyb290QWNjZXNzaWJsZUVsZW1lbnQpOgotICAg
ICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpmb2N1c2VkQWNjZXNzaWJsZUVsZW1lbnQp
OgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5oOgot
Ci0yMDEzLTAxLTE1ICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+Ci0K
LSAgICAgICAgVW5yZXZpZXdlZC4gRml4IGJ1aWxkIGJyZWFrIGJ5IHIxMzk3OTYuCi0KLSAgICAg
ICAgKiBld2svZXdrX2ZyYW1lLmNwcDoKLSAgICAgICAgKGV3a19mcmFtZV90ZXh0X21hdGNoZXNf
bWFyayk6Ci0KLTIwMTMtMDEtMTMgIEt3YW5nWW9uZyBDaG9pICA8a3kwLmNob2lAc2Ftc3VuZy5j
b20+Ci0KLSAgICAgICAgW0VGTF0gVW5yZXZpZXdlZCBidWlsZCBmaXggYWZ0ZXIgcjEzOTU0MQot
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2NzQ5Ci0K
LSAgICAgICAgdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgSlNDOjpKU0NlbGw6Om1ldGhvZFRhYmxl
KCkgY29uc3QnCi0KLSAgICAgICAgKiBld2svZXdrX2pzLmNwcDoKLSAgICAgICAgKiBld2svZXdr
X3ZpZXcuY3BwOgotCi0yMDEzLTAxLTExICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+
Ci0KLSAgICAgICAgSklUVGh1bmtzIHNob3VsZCBub3QgY29tcGlsZSBvbmx5IGJlY2F1c2Ugb2Yg
bHVjawotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA1
Njk2Ci0KLSAgICAgICAgUnViYmVyIHN0YW1wZWQgYnkgU2FtIFdlaW5pZy4KLQotICAgICAgICAq
IGV3ay9FV2ViS2l0Lmg6Ci0gICAgICAgICogZXdrL2V3a19tYWluLmNwcDoKLQotMjAxMy0wMS0x
MSAgS3dhbmdZb25nIENob2kgIDxreTAuY2hvaUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBbRUZM
XSBGaXggdW51c2VkIHBhcmFtZXRlciBidWlsZCBlcnJvcgotICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2NjM5Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkg
S2VudGFybyBIYXJhLgotCi0gICAgICAgIFVzZSBVTlVTRURfUEFSQU0gbWFjcm8gdG8gZml4IGJ1
aWxkIGVycm9yLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBw
b3J0RWZsLmNwcDoKLSAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6aW50ZW50TWVz
c2FnZVBvcnRzKToKLSAgICAgICAgKiBld2svZXdrX2NvbnRleHRtZW51LmNwcDoKLSAgICAgICAg
KGV3a19jb250ZXh0X21lbnVfZGVzdHJveSk6Ci0gICAgICAgIChld2tfY29udGV4dF9tZW51X2l0
ZW1fc2VsZWN0KToKLSAgICAgICAgKiBld2svZXdrX2ZpbGVfY2hvb3Nlci5jcHA6Ci0gICAgICAg
IChld2tfZmlsZV9jaG9vc2VyX2NhcHR1cmVfZ2V0KToKLSAgICAgICAgKiBld2svZXdrX2ZyYW1l
LmNwcDoKLSAgICAgICAgKGV3a19mcmFtZV9mZWVkX3RvdWNoX2V2ZW50KToKLSAgICAgICAgKiBl
d2svZXdrX2ludGVudC5jcHA6Ci0gICAgICAgIChld2tfaW50ZW50X2FjdGlvbl9nZXQpOgotICAg
ICAgICAoZXdrX2ludGVudF90eXBlX2dldCk6Ci0gICAgICAgIChld2tfaW50ZW50X3NlcnZpY2Vf
Z2V0KToKLSAgICAgICAgKGV3a19pbnRlbnRfc3VnZ2VzdGlvbnNfZ2V0KToKLSAgICAgICAgKGV3
a19pbnRlbnRfZXh0cmFfZ2V0KToKLSAgICAgICAgKGV3a19pbnRlbnRfZXh0cmFfbmFtZXNfZ2V0
KToKLSAgICAgICAgKiBld2svZXdrX2ludGVudF9yZXF1ZXN0LmNwcDoKLSAgICAgICAgKGV3a19p
bnRlbnRfcmVxdWVzdF9yZWYpOgotICAgICAgICAoZXdrX2ludGVudF9yZXF1ZXN0X3VucmVmKToK
LSAgICAgICAgKGV3a19pbnRlbnRfcmVxdWVzdF9pbnRlbnRfZ2V0KToKLSAgICAgICAgKiBld2sv
ZXdrX3NlY3VyaXR5X29yaWdpbi5jcHA6Ci0gICAgICAgIChld2tfc2VjdXJpdHlfb3JpZ2luX3dl
Yl9kYXRhYmFzZV91c2FnZV9nZXQpOgotICAgICAgICAoZXdrX3NlY3VyaXR5X29yaWdpbl93ZWJf
ZGF0YWJhc2VfcXVvdGFfZ2V0KToKLSAgICAgICAgKiBld2svZXdrX3NldHRpbmdzLmNwcDoKLSAg
ICAgICAgKGV3a19zZXR0aW5nc19zaGFkb3dfZG9tX2VuYWJsZV9zZXQpOgotICAgICAgICAqIGV3
ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChld2tfdmlld19jb250ZXh0X21lbnVfZm9yd2FyZF9l
dmVudCk6Ci0gICAgICAgIChld2tfdmlld19zZXR0aW5nX3Nob3VsZF9kaXNwbGF5X3N1YnRpdGxl
c19nZXQpOgotICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19zaG91bGRfZGlzcGxheV9jYXB0aW9u
c19nZXQpOgotICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19zaG91bGRfZGlzcGxheV9jYXB0aW9u
c19zZXQpOgotICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19zaG91bGRfZGlzcGxheV9zdWJ0aXRs
ZXNfc2V0KToKLSAgICAgICAgKGV3a192aWV3X3NldHRpbmdfc2hvdWxkX2Rpc3BsYXlfdGV4dF9k
ZXNjcmlwdGlvbnNfZ2V0KToKLSAgICAgICAgKGV3a192aWV3X3NldHRpbmdfc2hvdWxkX2Rpc3Bs
YXlfdGV4dF9kZXNjcmlwdGlvbnNfc2V0KToKLQotMjAxMy0wMS0xMCAgQ2hyaXN0b3BoZSBEdW1l
eiAgPGNocmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgotCi0gICAgICAgIFtFRkxdIEFkZCBnc3Ry
ZWFtZXIgMS4wLjUgdG8gamhidWlsZAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTA2MTc4Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgTGFzemxvIEdvbWJv
cy4KLQotICAgICAgICBGaXggY29tcGlsYXRpb24gZXJyb3Igd2hlbiB1c2luZyBnc3RyZWFtZXIg
MS4wLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxl
ckVmbC5jcHA6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnVsbHNjcmVlblZpZGVvQ29udHJv
bGxlckVmbC5oOgotCi0yMDEzLTAxLTA4ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4K
LQotICAgICAgICBSZW1vdmVkIHRoZSBuZWVkIGZvciB0aGUgUHJvcG9zZWREYXRhYmFzZSBtZWNo
YW5pc20uCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MDYyOTIuCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KLQotICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpDaHJv
bWVDbGllbnRFZmw6OmV4Y2VlZGVkRGF0YWJhc2VRdW90YSk6Ci0gICAgICAgICogV2ViQ29yZVN1
cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmg6Ci0gICAgICAgIChDaHJvbWVDbGllbnRFZmwpOgotCi0y
MDEzLTAxLTA3ICBNaWtlIFdlc3QgIDxta3dzdEBjaHJvbWl1bS5vcmc+Ci0KLSAgICAgICAgTWFr
ZSB0aGUgSUZSQU1FX1NFQU1MRVNTIGZsYWcgcnVudGltZS1lbmFibGVkLgotICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2MjEzCi0KLSAgICAgICAgUmV2
aWV3ZWQgYnkgT2phbiBWYWZhaS4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5k
ZXJUcmVlU3VwcG9ydEVmbC5jcHA6Ci0gICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6
OnNldFNlYW1sZXNzSUZyYW1lc0VuYWJsZWQpOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1
bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5oOgotICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0g
ICAgICAgIChfZXdrX3ZpZXdfcHJpdl9uZXcpOgotICAgICAgICAgICAgQWRkIGEgdG9nZ2xlIGZv
ciBzZWFtbGVzcyBJRnJhbWVzIHRvIEVGTCdzIERSVFN1cG9ydC4KLQotMjAxMy0wMS0wNCAgQWRh
bSBLbGVpbiAgPGFkYW1rQGNocm9taXVtLm9yZz4KLQotICAgICAgICBSZW1vdmUgRU5BQkxFX01V
VEFUSU9OX09CU0VSVkVSUyAjZGVmaW5lCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMDU0NTkKLQotICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtlIE5p
d2EuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwu
Y3BwOgotICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpkZWxpdmVyQWxsTXV0YXRp
b25zSWZOZWNlc3NhcnkpOgotCi0yMDEyLTEyLTIzICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBA
YXBwbGUuY29tPgotCi0gICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMjgwODM3Nz4gTmV0d29yayBw
cm9jZXNzIHNob3VsZCByZXNwZWN0IGNvb2tpZSBhY2NlcHQgcG9saWN5Ci0gICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDU2ODQKLQotICAgICAgICBSZXZp
ZXdlZCBieSBTYW0gV2VpbmlnLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1T
dHJhdGVnaWVzRWZsLmNwcDoKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0
ZWdpZXNFZmwuaDoKLSAgICAgICAgQ29va2llc1N0cmF0ZWd5IG5vIGxvbmdlciBoYXMgbm90aWZ5
Q29va2llc0NoYW5nZWQoKS4gVGhpcyBwb3J0IGRpZG4ndCB1c2UgaXQgYW55d2F5LgotCi0yMDEy
LTEyLTIyICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgotCi0gICAgICAgIEFk
ZCBhIHNlcGFyYXRlIGNsYXNzIGZvciBuZXR3b3JraW5nIHJlbGF0ZWQgc3RvcmFnZQotICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA1Njc2Ci0KLSAgICAg
ICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1Bs
YXRmb3JtU3RyYXRlZ2llc0VmbC5jcHA6Ci0gICAgICAgIChQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6
OmNvb2tpZXNGb3JET00pOgotICAgICAgICAoUGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpzZXRDb29r
aWVzRnJvbURPTSk6Ci0gICAgICAgIChQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6OmNvb2tpZXNFbmFi
bGVkKToKLSAgICAgICAgKFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6Y29va2llUmVxdWVzdEhlYWRl
ckZpZWxkVmFsdWUpOgotICAgICAgICAoUGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpnZXRSYXdDb29r
aWVzKToKLSAgICAgICAgKFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6ZGVsZXRlQ29va2llKToKLSAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNFZmwuaDoKLSAgICAgICAg
Q29va2llIGZ1bmN0aW9ucyBub3cgdGFrZSBhIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgbm90IGEg
TmV0d29ya2luZ0NvbnRleHQuCi0KLTIwMTItMTItMjEgIFNlb2tqdSBLd29uICA8c2Vva2p1Lmt3
b25AZ21haWwuY29tPgotCi0gICAgICAgIFtFRkxdIEFkZCBndWFyZCBhcm91bmQgQ29udGV4dE1l
bnVJdGVtVGFnSW5zcGVjdEVsZW1lbnQKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEwNTI2NwotCi0gICAgICAgIFJldmlld2VkIGJ5IFJ5b3N1a2UgTml3
YS4KLQotICAgICAgICBOZWVkIElOU1BFQ1RPUiBndWFyZCBmb3IgdXNpbmcgQ29udGV4dE1lbnVJ
dGVtVGFnSW5zcGVjdEVsZW1lbnQuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9Bc3NlcnRN
YXRjaGluZ0VudW1zLmNwcDoKLQotMjAxMi0xMi0yMSAgS2FuZ2lsIEhhbiAgPGthbmdpbC5oYW5A
c2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW0VGTF1bV0sxXSBPYnNvbGV0ZSBhIGNhc2UgaW4gdGVz
dF9ld2tfZnJhbWUgYXBpIHRlc3QgdG8gbm90IG1ha2UgYm90IHNpY2sKLSAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNTE0MgotCi0gICAgICAgIFJldmll
d2VkIGJ5IEd5dXlvdW5nIEtpbS4KLQotICAgICAgICBCVUcgNDkyNDYgaGFzIGNoYW5nZWQgbG9h
ZCBiZWhhdmlvciBvbiBtYWxmb3JtZWQgdXJsIGlucHV0LgotICAgICAgICBUaGF0IGlzIHdoeSB0
ZXN0X2V3a19mcmFtZSBhcGkgdGVzdCBpcyB0aW1lZCBvdXQuCi0gICAgICAgIFRvIG5vdCBtYWtl
IGJvdCBzaWNrLCB0aGlzIHBhdGNoIGNvbW1lbnRzIG91dCB0aGF0IHRlc3QgY2FzZSBhdCBhIG1v
bWVudC4KLQotICAgICAgICAqIHRlc3RzL3Rlc3RfZXdrX2ZyYW1lLmNwcDoKLSAgICAgICAgKFRF
U1RfRik6Ci0KLTIwMTItMTItMjAgIFJ5dWFuIENob2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29t
PgotCi0gICAgICAgIFtFRkxdIEJ1aWxkIGJyZWFrIHdpdGggbGF0ZXN0IEVGTCBsaWJyYXJpZXMu
Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDQ4MjcK
LQotICAgICAgICBSZXZpZXdlZCBieSBMYXN6bG8gR29tYm9zLgotCi0gICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmg6IFJlbW92ZWQgdW5uZWNlc3NhcnkgZGVjbGFyYXRp
b24uCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmg6
IERpdHRvLgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5oOiBEaXR0
by4KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZU5ldHdvcmtpbmdDb250ZXh0RWZsLmg6
IERpdHRvLgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1BhZ2VDbGllbnRFZmwuaDogRGl0dG8u
Ci0KLTIwMTItMTItMTggIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+Ci0KLSAg
ICAgICAgUmVtb3ZlIHVubmVjZXNzYXJ5IGZ1bmN0aW9ucyBmcm9tIENvb2tpZXNTdHJhdGVneQot
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA1MzY5Ci0K
LSAgICAgICAgUmV2aWV3ZWQgYnkgQnJhZHkgRWlkc29uLgotCi0gICAgICAgICogV2ViQ29yZVN1
cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzRWZsLmNwcDoKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9QbGF0Zm9ybVN0cmF0ZWdpZXNFZmwuaDoKLQotMjAxMi0xMi0xNiAgU2Vva2p1IEt3b24gIDxz
ZW9ranUua3dvbkBnbWFpbC5jb20+Ci0KLSAgICAgICAgRml4IHVudXNlZCBwYXJhbWV0ZXIgY29t
cGlsZSB3YXJuaW5ncwotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTA1MDg5Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgS2VudGFybyBIYXJhLgotCi0gICAg
ICAgIFVzZSBVTlVTRURfUEFSQU0gbWFjcm8gdG8gZml4IGJ1aWxkIHdhcm5pbmcgLVd1bnVzZWQt
cGFyYW1ldGVyLgotCi0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAgKGV3a192
aWV3X2luc3BlY3Rvcl9zaG93KToKLSAgICAgICAgKGV3a192aWV3X2luc3BlY3Rvcl9jbG9zZSk6
Ci0gICAgICAgIChld2tfdmlld19pbnNwZWN0b3Jfdmlld19nZXQpOgotICAgICAgICAoZXdrX3Zp
ZXdfaW5zcGVjdG9yX3ZpZXdfc2V0KToKLQotMjAxMi0xMi0xNSAgQW5kZXJzIENhcmxzc29uICA8
YW5kZXJzY2FAYXBwbGUuY29tPgotCi0gICAgICAgIFJlbmFtZSBGcmFtZUxvYWRlckNsaWVudDo6
ZG93bmxvYWQgdG8gY29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkCi0gICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDUxMjIKLQotICAgICAgICBS
ZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgotCi0gICAgICAgIFVwZGF0ZSBmb3IgV2ViQ29yZSBj
aGFuZ2VzLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwu
Y3BwOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmNvbnZlcnRNYWlu
UmVzb3VyY2VMb2FkVG9Eb3dubG9hZCk6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRFZmwuaDoKLSAgICAgICAgKEZyYW1lTG9hZGVyQ2xpZW50RWZsKToKLQotMjAx
Mi0xMi0xNSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+Ci0KLSAgICAgICAgUmUtbGFu
ZGluZyBwYXRjaCBmb3IgIkludHJvZHVjaW5nIHRoZSBEYXRhYmFzZVN0cmF0ZWd5IGFuZCBkYXRh
YmFzZSBzZXJ2ZXJzIi4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEwNDkzNC4KLQotICAgICAgICBOb3QgcmV2aWV3ZWQuCi0KLSAgICAgICAgTWVyZ2Vk
IGZyb20gcjEzNzc2Ny4gUHJldmlvdXNseSByZXZpZXdlZCBieSBTYW0gV2VpbmlnLgotCi0gICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzRWZsLmNwcDoKLSAgICAgICAg
KFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6Y3JlYXRlRGF0YWJhc2VTdHJhdGVneSk6Ci0gICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzRWZsLmg6Ci0gICAgICAgIChQbGF0
Zm9ybVN0cmF0ZWdpZXNFZmwpOgotCi0yMDEyLTEyLTE0ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5y
ZXZpZXcuYm90QGdtYWlsLmNvbT4KLQotICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCBy
MTM3NzY3LgotICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8xMzc3NjcK
LSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNTA2Mgot
Ci0gICAgICAgIEJyb2tlIE1hYyBidWlsZHMuIChSZXF1ZXN0ZWQgYnkgbWxhbSBvbiAjd2Via2l0
KS4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0VmbC5jcHA6
Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzRWZsLmg6Ci0gICAg
ICAgIChQbGF0Zm9ybVN0cmF0ZWdpZXNFZmwpOgotCi0yMDEyLTEyLTE0ICBNYXJrIExhbSAgPG1h
cmsubGFtQGFwcGxlLmNvbT4KLQotICAgICAgICBJbnRyb2R1Y2luZyB0aGUgRGF0YWJhc2VTdHJh
dGVneSBhbmQgZGF0YWJhc2Ugc2VydmVycy4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwNDkzNC4KLQotICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2Vp
bmlnLgotCi0gICAgICAgIFRoZSBkYXRhYmFzZSBzZXJ2ZXIgaXMgY3VycmVudGx5IGEgcGxhY2Vo
b2xkZXIgdGhhdCBkb2VzIG5vdGhpbmcuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9QbGF0
Zm9ybVN0cmF0ZWdpZXNFZmwuY3BwOgotICAgICAgICAoUGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpj
cmVhdGVEYXRhYmFzZVN0cmF0ZWd5KToKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9QbGF0Zm9y
bVN0cmF0ZWdpZXNFZmwuaDoKLSAgICAgICAgKFBsYXRmb3JtU3RyYXRlZ2llc0VmbCk6Ci0KLTIw
MTItMTItMTMgIFNlb2tqdSBLd29uICA8c2Vva2p1Lmt3b25AZ21haWwuY29tPgotCi0gICAgICAg
IEZpeCB1bnVzZWQgcGFyYW1ldGVyIGNvbXBpbGUgd2FybmluZ3MKLSAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDkwNwotCi0gICAgICAgIFJldmlld2Vk
IGJ5IEtlbnRhcm8gSGFyYS4KLQotICAgICAgICBVc2UgVU5VU0VEX1BBUkFNIG1hY3JvIHRvIGZp
eCBidWlsZCB3YXJuaW5nIC1XdW51c2VkLXBhcmFtZXRlcgotICAgICAgICB3aGVuIEVOQUJMRV9J
TlNQRUNUT1IgaXMgZGlzYWJsZWQuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVu
ZGVyVHJlZVN1cHBvcnRFZmwuY3BwOgotICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZs
OjpldmFsdWF0ZUluV2ViSW5zcGVjdG9yKToKLQotMjAxMi0xMi0xMyAgSnVzc2kgS3Vra29uZW4g
IDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+Ci0KLSAgICAgICAgW0VGTF1bR1RLXSBEb24ndCBj
YWxsIGRlcHJlY2F0ZWQgZ190eXBlX2luaXQgd2hlbiBnbGliID0+IDIuMzUKLSAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzIwOQotCi0gICAgICAgIFJl
dmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgotCi0gICAgICAgIGdfdHlwZV9p
bml0KCkgaXMgZGVwcmVjYXRlZCBmcm9tIDIuMzUuMCBvbndhcmRzLiBEb24ndCBjYWxsIGl0Ci0g
ICAgICAgIGluIHRoYXQgY2FzZSB0byBhdm9pZCB3YXJuaW5ncyBhbmQvb3IgYnVpbGQgZmFpbHVy
ZS4KLQotICAgICAgICAqIGV3ay9ld2tfbWFpbi5jcHA6Ci0gICAgICAgIChfZXdrX2luaXRfYm9k
eSk6Ci0KLTIwMTItMTItMTMgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNv
bT4KLQotICAgICAgICBSZWdyZXNzaW9uKHIxMzc1NjgpOiBCcm9rZSBsYXlvdXQgdGVzdCBvbiBF
RkwgV0sxCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MDQ4OTUKLQotICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4K
LQotICAgICAgICBGaXggbGF5b3V0IHRlc3QgY3Jhc2ggYWZ0ZXIgcjEzNzU2OCBiZWNhdXNlIGV3
a192aWV3LmNwcCBoYXMga2VwdCB1bnVzZWQgbmV0d29ya0luZm9DbGllbnQgbWVtYmVyIHZhcmlh
YmxlCi0gICAgICAgIHVzaW5nIE93blB0ci4gVGhlIHIxMzc1NjggbGV0cyBOZXR3b3JrSW5mb0Ns
aWVudEVmbCBkZXN0cm95IGJ5IFdlYkNvcmU6Ok5ldHdvcmtJbmZvQ29udHJvbGxlci4KLQotICAg
ICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRh
KToKLSAgICAgICAgKF9ld2tfdmlld19wcml2X25ldyk6Ci0KLTIwMTItMTItMTIgIEd5dXlvdW5n
IEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBOZXR3b3JrSW5mb0Nv
bnRyb2xsZXIgbmVlZHMgdG8gc3VwcG9ydCBkZXN0cnVjdG9yCi0gICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDQ2NDIKLQotICAgICAgICBSZXZpZXdlZCBi
eSBLZW50YXJvIEhhcmEuCi0KLSAgICAgICAgVGhvdWdoIE5ldHdvcmtJbmZvQ29udHJvbGxlciBj
YW4gYmUgcmVmZXJlbmNlZCBieSBlYWNoIHBvcnQgaW4gb3JkZXIgdG8gdXBkYXRlIG5ldHdvcmsg
c3RhdHVzIGNoYW5nZSwKLSAgICAgICAgdGhlcmUgaXMgbm8gdmlydHVhbCBpbnRlcmZhY2UgdG8g
ZGVzdHJveSBpdC4gQmVzaWRlIGVhY2ggcG9ydCBjbGllbnQgYWxzbyBuZWVkcyB0byBiZSBkZXN0
cm95ZWQgd2hlbgotICAgICAgICBjb250cm9sbGVyIGlzIGRlc3Ryb3llZC4KLQotICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L05ldHdvcmtJbmZvQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdlYkNv
cmU6Ok5ldHdvcmtJbmZvQ2xpZW50RWZsOjpuZXR3b3JrSW5mb0NvbnRyb2xsZXJEZXN0cm95ZWQp
OgotICAgICAgICAoV2ViQ29yZSk6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvTmV0d29ya0lu
Zm9DbGllbnRFZmwuaDoKLSAgICAgICAgKE5ldHdvcmtJbmZvQ2xpZW50RWZsKToKLQotMjAxMi0x
Mi0xMiAgU2Vva2p1IEt3b24gIDxzZW9ranUua3dvbkBnbWFpbC5jb20+Ci0KLSAgICAgICAgW0VG
TF0gUmVmYWN0b3IgZHVwbGljYXRlIGNvZGUgaW50byBFZmxJbnNwZWN0b3JVdGlsaXRpZXMKLSAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDMyOQotCi0g
ICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgotCi0gICAgICAg
IFJlbW92ZSBkdXBsaWNhdGVkIHdvcmsgdG8gZ2V0IHRoZSByZXNvdXJjZSBwYXRoIGZvciBpbnNw
ZWN0b3IuCi0gICAgICAgIEFuZCB1c2UgV2ViQ29yZTo6aW5zcGVjdG9yUmVzb3VyY2VQYXRoKCku
Ci0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRFZmwuY3BwOgotICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50RWZsOjppbnNwZWN0b3JGaWxlc1BhdGgpOgot
Ci0yMDEyLTEyLTEyICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KLQotICAgICAgICBF
bmNhcHN1bGF0ZSBleHRlcm5hbGx5IHVzZWQgd2ViZGF0YWJhc2UgQVBJcyBpbiBEYXRhYmFzZU1h
bmFnZXIuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MDQ3NDEuCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KLQotICAgICAgICBVc2Ug
RGF0YWJhc2VNYW5hZ2VyIGluc3RlYWQgb2YgYWNjZXNzaW5nIERhdGFiYXNlVHJhY2tlciwgQWJz
dHJhY3REYXRhYmFzZSwKLSAgICAgICAgYW5kIERhdGFiYXNlQ29udGV4dCBkaXJlY3RseS4gVGhp
cyBpcyB0byBwcmVwYXJlIGZvciB1cGNvbWluZyB3ZWJraXQyCi0gICAgICAgIHJlZmFjdG9yaW5n
LgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcDoKLSAgICAg
ICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEVmbDo6ZXhjZWVkZWREYXRhYmFzZVF1b3RhKToKLSAg
ICAgICAgKiBld2svZXdrX3NlY3VyaXR5X29yaWdpbi5jcHA6Ci0gICAgICAgIChld2tfc2VjdXJp
dHlfb3JpZ2luX3dlYl9kYXRhYmFzZV91c2FnZV9nZXQpOgotICAgICAgICAoZXdrX3NlY3VyaXR5
X29yaWdpbl93ZWJfZGF0YWJhc2VfcXVvdGFfZ2V0KToKLSAgICAgICAgKGV3a19zZWN1cml0eV9v
cmlnaW5fd2ViX2RhdGFiYXNlX3F1b3RhX3NldCk6Ci0gICAgICAgIChld2tfc2VjdXJpdHlfb3Jp
Z2luX3dlYl9kYXRhYmFzZV9nZXRfYWxsKToKLSAgICAgICAgKiBld2svZXdrX3NldHRpbmdzLmNw
cDoKLSAgICAgICAgKGV3a19zZXR0aW5nc193ZWJfZGF0YWJhc2VfcGF0aF9zZXQpOgotICAgICAg
ICAqIGV3ay9ld2tfd2ViX2RhdGFiYXNlLmNwcDoKLSAgICAgICAgKGV3a193ZWJfZGF0YWJhc2Vf
ZGlzcGxheV9uYW1lX2dldCk6Ci0gICAgICAgIChld2tfd2ViX2RhdGFiYXNlX2V4cGVjdGVkX3Np
emVfZ2V0KToKLSAgICAgICAgKGV3a193ZWJfZGF0YWJhc2VfZmlsZW5hbWVfZ2V0KToKLSAgICAg
ICAgKGV3a193ZWJfZGF0YWJhc2Vfc2l6ZV9nZXQpOgotICAgICAgICAoZXdrX3dlYl9kYXRhYmFz
ZV9yZW1vdmUpOgotICAgICAgICAoZXdrX3dlYl9kYXRhYmFzZV9yZW1vdmVfYWxsKToKLQotMjAx
Mi0xMi0xMiAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KLQotICAgICAgICBN
YWtlIExPRygpIHdvcmsgaW4gV2ViUHJvY2VzcyBhbmQgTmV0d29ya1Byb2Nlc3MKLSAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDcxOAotCi0gICAgICAg
IFJldmlld2VkIGJ5IFRpbSBIb3J0b24uCi0KLSAgICAgICAgKiBld2svZXdrX21haW4uY3BwOiBJ
bmNsdWRlIEluaXRpYWxpemVMb2dnaW5nLmgKLQotMjAxMi0xMi0xMSAgS2lob25nIEt3b24gIDxr
aWhvbmcua3dvbkBzYW1zdW5nLmNvbT4KLQotICAgICAgICBWaWJyYXRpb24gQVBJOiBJREwgdHlw
ZSBkb2Vzbid0IG1hdGNoIGltcGxlbWVudGF0aW9uIHR5cGUKLSAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzg5OQotCi0gICAgICAgIFJldmlld2VkIGJ5
IEtlbnRhcm8gSGFyYS4KLQotICAgICAgICBBY2NvcmRpbmcgdG8gV2ViSURMLCAidW5zaWduZWQg
bG9uZyIgY29ycmVzcG9uZHMgdG8gInVuc2lnbmVkIiBpbiB0aGUgcGxhdGZvcm0uCi0gICAgICAg
IFRoZXJlZm9yZSB1bnNpZ25lZCBsb25nIG5lZWQgdG8gYmUgY2hhbmdlZCB0byB1bnNpZ25lZCBm
b3IgdGhlIFZpYnJhdGlvbiBBUEkuCi0gICAgICAgIC0gQ2hhbmdlIGEgcGFyYW1ldGVyIHR5cGUg
b2YgdmlicmF0ZSBmdW5jdGlvbiBmcm9tIHVuc2lnbmVkIGxvbmcgdG8gdW5zaWduZWQuCi0KLSAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9WaWJyYXRpb25DbGllbnRFZmwuY3BwOgotICAgICAgICAo
V2ViQ29yZTo6VmlicmF0aW9uQ2xpZW50RWZsOjp2aWJyYXRlKToKLSAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9WaWJyYXRpb25DbGllbnRFZmwuaDoKLSAgICAgICAgKFZpYnJhdGlvbkNsaWVudEVm
bCk6Ci0KLTIwMTItMTItMTEgIFNlb2tqdSBLd29uICA8c2Vva2p1Lmt3b25AZ21haWwuY29tPgot
Ci0gICAgICAgIFtFRkxdIFJlbW92ZSB1bnVzZWQgaGVhZGVycwotICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0NjYxCi0KLSAgICAgICAgUmV2aWV3ZWQg
YnkgUnlvc3VrZSBOaXdhLgotCi0gICAgICAgIEhlYWRlciBpbmNsdXNpb24gY2xlYW51cC4KLSAg
ICAgICAgUmVtb3ZlICJOb3RJbXBsZW1lbnRlZC5oIi4KLQotICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1BvcHVwTWVudUVmbC5jcHA6Ci0gICAgICAgICogZXdrL2V3a19pbnRlbnQuY3BwOgotCi0y
MDEyLTEyLTExICBNaWtlIFdlc3QgIDxta3dzdEBjaHJvbWl1bS5vcmc+Ci0KLSAgICAgICAgV2Vi
IEluc3BlY3RvcjogQ29uc29sZVR5cGVzIHNob3VsZCBub3QgZXhwb3NlIE1lc3NhZ2VUeXBlIC0g
aXQgc2hvdWxkIGJlIHByaXZhdGUgdG8gaW5zcGVjdG9yLgotICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjYzNzEKLQotICAgICAgICBSZXZpZXdlZCBieSBQ
YXZlbCBGZWxkbWFuLgotCi0gICAgICAgIERyb3BzIFdlYkNvcmU6Ok1lc3NhZ2VUeXBlIGZyb20g
dGhlIGFkZE1lc3NhZ2VUb0NvbnNvbGUgbWV0aG9kLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBv
cnQvQ2hyb21lQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEVm
bDo6YWRkTWVzc2FnZVRvQ29uc29sZSk6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21l
Q2xpZW50RWZsLmg6Ci0gICAgICAgIChDaHJvbWVDbGllbnRFZmwpOgotCi0yMDEyLTEyLTA1ICBI
YWx0b24gSHVvICA8aGFsdG9uLmh1b0BpbnRlbC5jb20+Ci0KLSAgICAgICAgW0NNYWtlXSBVbmlm
eSBjb2Rpbmcgc3R5bGUgZm9yIENNYWtlIGZpbGVzCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDM2MDUKLQotICAgICAgICBSZXZpZXdlZCBieSBMYXN6
bG8gR29tYm9zLgotCi0gICAgICAgIFVwZGF0ZSBjbWFrZSBmaWxlcyguY21ha2UsIENNYWtlTGlz
dHMudHh0KSB3aXRoIGZvbGxvd2luZyBzdHlsZSBydWxlczoKLSAgICAgICAgMS4gSW5kZW50YXRp
b24KLSAgICAgICAgMS4xIFVzZSBzcGFjZXMsIG5vdCB0YWJzLgotICAgICAgICAxLjIgRm91ciBz
cGFjZXMgYXMgaW5kZW50LgotICAgICAgICAyLiBTcGFjaW5nCi0gICAgICAgIDIuMSBQbGFjZSBv
bmUgc3BhY2UgYmV0d2VlbiBjb250cm9sIHN0YXRlbWVudHMgYW5kIHRoZWlyIHBhcmVudGhlc2Vz
LgotICAgICAgICAgICAgRm9yIGVnLCBpZiAoKSwgZWxzZSAoKSwgZWxzZWlmICgpLCBlbmRpZiAo
KSwgZm9yZWFjaCAoKSwKLSAgICAgICAgICAgIGVuZGZvcmVhY2ggKCksIHdoaWxlICgpLCBlbmR3
aGlsZSAoKSwgYnJlYWsgKCkuCi0gICAgICAgIDIuMiBEbyBub3QgcGxhY2Ugc3BhY2VzIGJldHdl
ZW4gZnVuY3Rpb24gYW5kIG1hY3JvIHN0YXRlbWVudHMgYW5kCi0gICAgICAgICAgICB0aGVpciBw
YXJlbnRoZXNlcy4gRm9yIGVnLCBtYWNybygpLCBlbmRtYWNybygpLCBmdW5jdGlvbigpLAotICAg
ICAgICAgICAgZW5kZnVuY3Rpb24oKS4KLSAgICAgICAgMi4zIERvIG5vdCBwbGFjZSBzcGFjZXMg
YmV0d2VlbiBhIGNvbW1hbmQgb3IgZnVuY3Rpb24gb3IgbWFjcm8gYW5kIGl0cwotICAgICAgICAg
ICAgcGFyZW50aGVzZXMsIG9yIGJldHdlZW4gYSBwYXJlbnRoZXNpcyBhbmQgaXRzIGNvbnRlbnQu
IEZvciBlZywKLSAgICAgICAgICAgIG1lc3NhZ2UoInRlc3RpbmciKSBub3QgbWVzc2FnZSggInRl
c3RpbmciKSBvciBtZXNzYWdlICgidGVzdGluZyIgKQotICAgICAgICAyLjQgTm8gc3BhY2UgYXQg
bGluZSBlbmRpbmcuCi0gICAgICAgIDMuIExvd2VyY2FzZSB3aGVuIGNhbGwgY29tbWFuZHMgbWFj
cm9zIGFuZCBmdW5jdGlvbnMuIEZvciBlZywKLSAgICAgICAgICAgYWRkX2V4ZWN1dGFibGUoKSBu
b3QgQUREX0VYRUNVVEFCTEUoKSwgc2V0KCkgbm90IFNFVCgpLgotCi0gICAgICAgICogRGVmYXVs
dFRoZW1lL0NNYWtlTGlzdHMudHh0OgotCi0yMDEyLTExLTMwICBNaWhhaSBNYWVyZWFuICA8bW1h
ZXJlYW5AYWRvYmUuY29tPgotCi0gICAgICAgIFtDU1NSZWdpb25zXSB3aGVuIFdlYktpdCB1c2Vz
IFY4LCB0aGVyZSBzaG91bGQgYmUgYSBzaW5nbGUgdmFyaWFibGUgdG8gc3RvcmUgaWYgdGhlIENT
UyBSZWdpb25zIGZlYXR1cmUgaXMgZW5hYmxlZAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAxMTkyCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgSGFqaW1l
IE1vcml0YS4KLQotICAgICAgICBSZW1vdmVkIHRoZSBDU1MgUmVnaW9ucyBmbGFnIGluIFNldHRp
bmdzIGFuZCBzd2l0Y2hlZCB0byB1c2luZyB0aGUgbmV3IGZsYWcgSSBoYXZlIGFkZGVkIGluIFJ1
bnRpbWVFbmFibGVkRmVhdHVyZXMuCi0KLSAgICAgICAgVGVzdHM6IE5vIG5ldyB0ZXN0cyBiZWNh
dXNlIHRoZXJlIGlzIG5vIGZ1bmN0aW9uYWwgY2hhbmdlLgotCi0gICAgICAgICogV2ViQ29yZVN1
cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcDoKLSAgICAgICAgKER1bXBSZW5kZXJU
cmVlU3VwcG9ydEVmbDo6c2V0Q1NTUmVnaW9uc0VuYWJsZWQpOgotICAgICAgICAqIGV3ay9ld2tf
dmlldy5jcHA6Ci0gICAgICAgIChfZXdrX3ZpZXdfcHJpdl9uZXcpOgotCi0yMDEyLTExLTI5ICBB
bGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgotCi0gICAgICAgIFtXSzJdIEZvcndh
cmQgY29va2llIGphciBjYWxscyB0byBOZXR3b3JrUHJvY2VzcwotICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzNDU3Ci0KLSAgICAgICAgUmV2aWV3ZWQg
YnkgRGFyaW4gQWRsZXIuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0
ZWdpZXNFZmwuY3BwOgotICAgICAgICAoUGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpjb29raWVzRm9y
RE9NKToKLSAgICAgICAgKFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6c2V0Q29va2llc0Zyb21ET00p
OgotICAgICAgICAoUGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpjb29raWVzRW5hYmxlZCk6Ci0gICAg
ICAgIChQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVl
KToKLSAgICAgICAgKFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6Z2V0UmF3Q29va2llcyk6Ci0gICAg
ICAgIChQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6OmRlbGV0ZUNvb2tpZSk6Ci0gICAgICAgIChQbGF0
Zm9ybVN0cmF0ZWdpZXNFZmw6OmdldEhvc3RuYW1lc1dpdGhDb29raWVzKToKLSAgICAgICAgKFBs
YXRmb3JtU3RyYXRlZ2llc0VmbDo6ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKToKLSAgICAgICAg
KFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6ZGVsZXRlQWxsQ29va2llcyk6Ci0KLTIwMTItMTEtMjkg
IFJ5dWFuIENob2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxdIEJy
b2tlbiByZW5kZXJpbmcgb2NjdXJzIHdoZW4gc2Nyb2xsaW5nIGluIGV3a192aWV3X3NpbmdsZS4K
LSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3MzI1Ci0K
LSAgICAgICAgUmV2aWV3ZWQgYnkgR3l1eW91bmcgS2ltLgotCi0gICAgICAgIEFmdGVyIHIxMDQ2
ODcsIGJyb2tlbiByZW5kZXJpbmcgb2NjdXJzIHdoZW4gc2Nyb2xsaW5nIGNvbnRlbnRzLgotICAg
ICAgICBJdCdzIGJlY2F1c2Ugc2Nyb2xsV2lkdGggY2FuIGJlIHNtYWxsZXIgdGhhbiB3aWR0aCBv
ZiBpbWFnZSBidWZmZXIuCi0KLSAgICAgICAgVGhpcyBwYXRjaCBmaXhlcyBpdCBhbmQgcmVuYW1l
cyBwYXJhbWV0ZXIgdG8gYXZvaWQgY29uZnVzaW9uLgotCi0gICAgICAgICogZXdrL2V3a192aWV3
X3NpbmdsZS5jcHA6Ci0gICAgICAgIChfZXdrX3ZpZXdfc2NyZWVuX21vdmUpOgotICAgICAgICAo
X2V3a192aWV3X3NpbmdsZV9zY3JvbGxfcHJvY2Vzc19zaW5nbGUpOgotCi0yMDEyLTExLTI4ICBS
eXVhbiBDaG9pICA8cnl1YW4uY2hvaUBnbWFpbC5jb20+Ci0KLSAgICAgICAgW0VGTF0gR2VuZXJh
dGUgYmlnX2J1dHRvbl90aGVtZS5lZGoKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEwMzUxMQotCi0gICAgICAgIFJldmlld2VkIGJ5IEd5dXlvdW5nIEtp
bS4KLQotICAgICAgICBiaWdfYnV0dG9uX3RoZW1lLmVkaiwgYmluYXJ5IGZpbGUgd2hpY2ggaXMg
dXNlZCBmb3IgdGVzdCwgc2hvdWxkIGJlIGdlbmVyYXRlZC4KLQotICAgICAgICAqIERlZmF1bHRU
aGVtZS9DTWFrZUxpc3RzLnR4dDoKLSAgICAgICAgSW50cm9kdWNlZCBtYWNybyBhbmQgbmV3IHRh
cmdldCB0byBzaGFyZSBmaWxlcyBvZiBkZWZhdWx0IHRoZW1lIGluc3RlYWQKLSAgICAgICAgb2Yg
YWRkaW5nIG1hbnkgZmlsZXMgZm9yIGJpZ19idXR0b25fdGhlbWUuCi0gICAgICAgICogRGVmYXVs
dFRoZW1lL3dpZGdldC9idXR0b24vYnV0dG9uLmVkYzoKLSAgICAgICAgSW1wbGVtZW50ZWQgZm9y
IGJpZ19idXR0b25fdGhlbWUuCi0KLTIwMTItMTEtMjggIFJ5dWFuIENob2kgIDxyeXVhbi5jaG9p
QGdtYWlsLmNvbT4KLQotICAgICAgICBbRUZMXSBSZWZhY3RvciB0aGVtZSB0byBjaG9vc2Ugd2hl
dGhlciB0byBzdXBwb3J0IGZvcmVncm91bmQgY29sb3Igb2Ygc2VsZWN0aW9uCi0gICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDIwMzcKLQotICAgICAgICBS
ZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KLQotICAgICAgICAqIERlZmF1
bHRUaGVtZS9kZWZhdWx0LmVkYzoKLSAgICAgICAgUmVmYWN0b3JlZCBjb2xvciBjbGFzc2VzIGZy
b20gYWN0aXZlL2luYWN0aXZlIHRvIGZvcmVncm91bmQvYmFja2dyb3VuZC4KLQotMjAxMi0xMS0y
NyAgSmFtZXMgU2ltb25zZW4gIDxzaW1vbmphbUBjaHJvbWl1bS5vcmc+Ci0KLSAgICAgICAgQ29u
c29saWRhdGUgRnJhbWVMb2FkZXI6OmxvYWQoKSBpbnRvIG9uZSBmdW5jdGlvbiB0YWtpbmcgYSBG
cmFtZUxvYWRSZXF1ZXN0Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMDIxNTEKLQotICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgotCi0gICAg
ICAgICogZXdrL2V3a19mcmFtZS5jcHA6Ci0gICAgICAgIChfZXdrX2ZyYW1lX2NvbnRlbnRzX3Nl
dF9pbnRlcm5hbCk6Ci0KLTIwMTItMTEtMjcgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5i
b3RAZ21haWwuY29tPgotCi0gICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMzU3ODYu
Ci0gICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzEzNTc4NgotICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzMzc5Ci0KLSAgICAg
ICAgSXQgbWFkZSAzIHBsdWdpbiB0ZXN0cyB0aW1lb3V0IG9uIHNldmVyYWwgcGxhdGZvcm1zIChS
ZXF1ZXN0ZWQKLSAgICAgICAgYnkgT3NzeSBvbiAjd2Via2l0KS4KLQotICAgICAgICAqIGV3ay9l
d2tfZnJhbWUuY3BwOgotICAgICAgICAoZXdrX2ZyYW1lX3VyaV9zZXQpOgotICAgICAgICAoX2V3
a19mcmFtZV9jb250ZW50c19zZXRfaW50ZXJuYWwpOgotCi0yMDEyLTExLTI2ICBKYW1lcyBTaW1v
bnNlbiAgPHNpbW9uamFtQGNocm9taXVtLm9yZz4KLQotICAgICAgICBDb25zb2xpZGF0ZSBGcmFt
ZUxvYWRlcjo6bG9hZCgpIGludG8gb25lIGZ1bmN0aW9uIHRha2luZyBhIEZyYW1lTG9hZFJlcXVl
c3QKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjE1
MQotCi0gICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCi0KLSAgICAgICAgKiBld2svZXdr
X2ZyYW1lLmNwcDoKLSAgICAgICAgKF9ld2tfZnJhbWVfY29udGVudHNfc2V0X2ludGVybmFsKToK
LQotMjAxMi0xMS0yNCAgVmlhdGNoZXNsYXYgT3N0YXBlbmtvICA8di5vc3RhcGVua29Ac2Ftc3Vu
Zy5jb20+Ci0KLSAgICAgICAgW0VGTF0gTGF5b3V0IHRlc3QgY29tZXMgdG8gY3Jhc2ggb24gV0sx
Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDMxNzAK
LQotICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KLQotICAg
ICAgICBTd2l0Y2ggb2ZmIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIGZvciBXSzEgYmVjYXVzZSBH
cmFwaGljc0NvbnRleHQzRCBpcwotICAgICAgICBtaXNzaW5nIGRpcmVjdCByZW5kZXJpbmcgaW1w
bGVtZW50YXRpb24gdGhhdCBpcyByZXF1aXJlZCBmb3IgRUZMIFdLMS4KLQotICAgICAgICAqIGV3
ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChfZXdrX3ZpZXdfcHJpdl9uZXcpOgotCi0yMDEyLTEx
LTIxICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgotCi0g
ICAgICAgIERpc2FtYmlndWF0ZSBpbm5lck5vZGVGcmFtZVBvaW50IGFuZCBtYWluRnJhbWVQb2lu
dCAKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4MTM5
Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgSnVsaWVuIENoYWZmcmFpeC4KLQotICAgICAgICAqIGV3
ay9ld2tfZnJhbWUuY3BwOgotICAgICAgICAoZXdrX2ZyYW1lX2hpdF90ZXN0X25ldyk6Ci0KLTIw
MTItMTEtMjAgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgotCi0g
ICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMzUyOTUuCi0gICAgICAgIGh0dHA6Ly90
cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzEzNTI5NQotICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAyODM0Ci0KLSAgICAgICAgVGhpcyBwYXRjaCBjYXVz
ZXMgYXNzZXJ0aW9uIHRvIHNvbWUgbGF5b3V0IHRlc3RzIG9uIGNocm9taXVtCi0gICAgICAgIChS
ZXF1ZXN0ZWQgYnkgamlhbmxpIG9uICN3ZWJraXQpLgotCi0gICAgICAgICogZXdrL2V3a19mcmFt
ZS5jcHA6Ci0gICAgICAgIChld2tfZnJhbWVfdXJpX3NldCk6Ci0gICAgICAgIChfZXdrX2ZyYW1l
X2NvbnRlbnRzX3NldF9pbnRlcm5hbCk6Ci0KLTIwMTItMTEtMjAgIEphbWVzIFNpbW9uc2VuICA8
c2ltb25qYW1AY2hyb21pdW0ub3JnPgotCi0gICAgICAgIENvbnNvbGlkYXRlIEZyYW1lTG9hZGVy
Ojpsb2FkKCkgaW50byBvbmUgZnVuY3Rpb24gdGFraW5nIGEgRnJhbWVMb2FkUmVxdWVzdAotICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAyMTUxCi0KLSAg
ICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KLQotICAgICAgICAqIGV3ay9ld2tfZnJhbWUu
Y3BwOgotICAgICAgICAoX2V3a19mcmFtZV9jb250ZW50c19zZXRfaW50ZXJuYWwpOgotCi0yMDEy
LTExLTE5ICBUb255IENoYW5nICA8dG9ueUBjaHJvbWl1bS5vcmc+Ci0KLSAgICAgICAgUmVtb3Zl
ICdpcycgcHJlZml4IGZyb20gV2ViU2V0dGluZ3M6OmlzV2ViU2VjdXJpdHlFbmFibGVkIGFuZCBX
ZWJTZXR0aW5nczo6aXNTcGF0aWFsTmF2aWdhdGlvbkVuYWJsZWQKLSAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjU0OAotCi0gICAgICAgIFJldmlld2Vk
IGJ5IEFkYW0gQmFydGguCi0KLSAgICAgICAgUmVuYW1lIGNhbGwgdG8gV2ViQ29yZTo6U2V0dGlu
Z3MuCi0KLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoX2V3a192aWV3X3By
aXZfbmV3KToKLQotMjAxMi0xMS0xNiAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBn
bWFpbC5jb20+Ci0KLSAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEzNDY5NC4KLSAg
ICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTM0Njk0Ci0gICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDI0ODEKLQotICAgICAgICBp
dCBtYWRlIEFQSSB0ZXN0IGNyYXNoIG9uIEVGTCBwb3J0IChSZXF1ZXN0ZWQgYnkgZ3l1eW91bmcg
b24KLSAgICAgICAgI3dlYmtpdCkuCi0KLSAgICAgICAgKiBEZWZhdWx0VGhlbWUvZGVmYXVsdC5l
ZGM6Ci0KLTIwMTItMTEtMTUgIEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuICA8a2VubmV0aEB3
ZWJraXQub3JnPgotCi0gICAgICAgIFJlbmFtZSBtZW1iZXIgdmFycyBpbiBWaWV3cG9ydEFyZ3Vt
ZW50IHRvIG1hdGNoIGNzcy1kZXZpY2UtYWRhcHQKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjM1NQotCi0gICAgICAgIFJldmlld2VkIGJ5IEd5dXlv
dW5nIEtpbS4KLQotICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChfZXdrX3Zp
ZXdfcHJpdl9uZXcpOiBVcGRhdGUgdG8gcmVmbGVjdCBuYW1lIGNoYW5nZS4KLQotMjAxMi0xMS0x
NSAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFVu
cmV2aWV3ZWQuIEZpeCBidWlsZCBicmVhayB3aGVuIHVzaW5nIC0tbm8tdGlsZWQtYmFja2luZy1z
dG9yZSBvcHRpb24uCi0KLSAgICAgICAgKiBld2svZXdrX2ZyYW1lX3ByaXZhdGUuaDoKLSAgICAg
ICAgKFdlYkNvcmUpOgotCi0yMDEyLTExLTE0ICBSeXVhbiBDaG9pICA8cnl1YW4uY2hvaUBnbWFp
bC5jb20+Ci0KLSAgICAgICAgW0VGTF0gUG9ydCB0aWxlZCBiYWNraW5nIHN0b3JlCi0gICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTM1MgotCi0gICAgICAg
IFJldmlld2VkIGJ5IEd5dXlvdW5nIEtpbS4KLQotICAgICAgICBBZGRlZCBld2tfdmlld19zZXR0
aW5nX3RpbGVkX2JhY2tpbmdfc3RvcmVfZW5hYmxlZF97Z2V0fHNldH0gdG8gZ2l2ZSBwb3NzaWJp
bGl0eQotICAgICAgICB0byB1c2UgV2ViQ29yZSdzIHRpbGVkIGJhY2tpbmcgc3RvcmUgaW4gV2Vi
S2l0L0VmbCBwb3J0LiBUaGlzIG1ha2VzIFdlYktpdC9FZmwKLSAgICAgICAgY29tcGxpYW50IHdp
dGggV2ViS2l0J3MgZ2VuZXJpYyBzb2x1dGlvbiBvZiB0aWxlZCBiYWNraW5nIHN0b3JlLgotCi0g
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdl
YkNvcmU6OkNocm9tZUNsaWVudEVmbDo6aW52YWxpZGF0ZVJvb3RWaWV3KToKLSAgICAgICAgKFdl
YkNvcmUpOgotICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZsOjp2aXNpYmxlUmVjdEZv
clRpbGVkQmFja2luZ1N0b3JlKToKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGll
bnRFZmwuaDoKLSAgICAgICAgKENocm9tZUNsaWVudEVmbCk6Ci0gICAgICAgICogZXdrL2V3a19m
cmFtZV9wcml2YXRlLmg6Ci0gICAgICAgIERlY2xhcmVkIG1pc3NpbmcgY2xhc3NlcyB3aGljaCB1
c2VkIGluIHRoaXMgZmlsZS4KLSAgICAgICAgKiBld2svZXdrX3BhaW50X2NvbnRleHQuY3BwOgot
ICAgICAgICAoZXdrX3BhaW50X2NvbnRleHRfcGFpbnQpOiBJbXBsZW1lbnRlZCB0byBwYWludCB0
aWxlZCBiYWNraW5nIHN0b3JlCi0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAg
KGV3a192aWV3X3NldHRpbmdfdGlsZWRfYmFja2luZ19zdG9yZV9lbmFibGVkX3NldCk6Ci0gICAg
ICAgIEFkZGVkIEFQSSB0byBlbmFibGUvZGlzYWJsZSB0aGUgV2ViQ29yZSdzIHRpbGVkIGJhY2tp
bmcgc3RvcmUuCi0gICAgICAgIChld2tfdmlld19zZXR0aW5nX3RpbGVkX2JhY2tpbmdfc3RvcmVf
ZW5hYmxlZF9nZXQpOgotICAgICAgICBBZGRlZCBBUEkgdG8gcXVlcnkgaWYgdGhlIFdlYkNvcmUn
cyB0aWxlZCBiYWNraW5nIHN0b3JlIGlzIGVuYWJsZWQuCi0gICAgICAgIChld2tfdmlld190aWxl
ZF9iYWNraW5nX3N0b3JlX2ludmFsaWRhdGUpOgotICAgICAgICAqIGV3ay9ld2tfdmlldy5oOgot
ICAgICAgICAqIGV3ay9ld2tfdmlld19wcml2YXRlLmg6Ci0gICAgICAgICogZXdrL2V3a192aWV3
X3NpbmdsZS5jcHA6Ci0gICAgICAgIChfZXdrX3ZpZXdfc2luZ2xlX3NtYXJ0X3JlcGFpbnRzX3By
b2Nlc3MpOgotICAgICAgICBJbXBsZW1lbnRlZCB0byB1cGRhdGUgdmlzaWJsZSBhcmVhIG9mIHRp
bGVkIGJhY2tpbmcgc3RvcmUuCi0gICAgICAgICogdGVzdHMvdGVzdF9ld2tfdmlldy5jcHA6IEFk
ZGVkIHRlc3QgY2FzZSBvZiBld2tfdmlld19zZXR0aW5nX3RpbGVkX2JhY2tpbmdfc3RvcmUuCi0g
ICAgICAgIChURVNUX0YpOgotCi0yMDEyLTExLTE0ICBSeXVhbiBDaG9pICA8cnl1YW4uY2hvaUBn
bWFpbC5jb20+Ci0KLSAgICAgICAgW0VGTF0gUmVmYWN0b3IgdGhlbWUgdG8gY2hvb3NlIHdoZXRo
ZXIgdG8gc3VwcG9ydCBmb3JlZ3JvdW5kIGNvbG9yIG9mIHNlbGVjdGlvbgotICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAyMDM3Ci0KLSAgICAgICAgUmV2
aWV3ZWQgYnkgR3l1eW91bmcgS2ltLgotCi0gICAgICAgICogRGVmYXVsdFRoZW1lL2RlZmF1bHQu
ZWRjOgotICAgICAgICBSZWZhY3RvcmVkIGNvbG9yIGNsYXNzZXMgZnJvbSBhY3RpdmUvaW5hY3Rp
dmUgdG8gZm9yZWdyb3VuZC9iYWNrZ3JvdW5kLgotCi0yMDEyLTExLTEyICBLeXVuZ1RhZSBLaW0g
IDxrdGYua2ltQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxdIEluIGV3a190aWxlZF9iYWNr
aW5nX3N0b3JlX3ByZV9yZW5kZXJfcmVnaW9uLCB0aGUgJ3NsaWNlcicgbWF5IGJlIHVuaW5pdGlh
bGl6ZWQKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEw
MjAzOAotCi0gICAgICAgIFJldmlld2VkIGJ5IEd5dXlvdW5nIEtpbS4KLQotICAgICAgICBUbyBm
aXggYnVpbGQgd2FybmluZyAtV3VuaW5pdGlhbGl6ZWQsCi0gICAgICAgIGluaXRpYWxpemUgdGhl
ICdzbGljZXInIGluIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3ByZV9yZW5kZXJfcmVnaW9uLgot
Ci0gICAgICAgICogZXdrL2V3a190aWxlZF9iYWNraW5nX3N0b3JlLmNwcDoKLSAgICAgICAgKGV3
a190aWxlZF9iYWNraW5nX3N0b3JlX3ByZV9yZW5kZXJfcmVnaW9uKToKLQotMjAxMi0xMS0wOSAg
UmFwaGFlbCBLdWJvIGRhIENvc3RhICA8cmFwaGFlbC5rdWJvLmRhLmNvc3RhQGludGVsLmNvbT4K
LQotICAgICAgICBbRUZMXVtEUlRdIEZvcmNlIGEgcmVwYWludCBiZWZvcmUgdHJhY2tpbmcgcmVw
YWludCByZWN0cy4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEwMTc0MwotCi0gICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFu
c2VuLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZs
LmNwcDoKLSAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6Zm9yY2VMYXlvdXQpOiBB
ZGRlZC4KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwu
aDoKLQotMjAxMi0xMS0wNyAgRW1pbCBBIEVrbHVuZCAgPGVhZUBjaHJvbWl1bS5vcmc+Ci0KLSAg
ICAgICAgVW5yZXZpZXdlZCBFRkwgYnVpbGQgZml4LgotCi0gICAgICAgICogZXdrL2V3a192aWV3
LmNwcDoKLQotMjAxMi0xMS0wMSAgU2VvbmFlIEtpbSAgPHN1bmFlbHV2LmtpbUBzYW1zdW5nLmNv
bT4KLQotICAgICAgICBbRUZMXVtEUlRdIFN1cHBvcnQgR2VvbG9jYXRpb24KLSAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3NDI3Ci0KLSAgICAgICAgUmV2
aWV3ZWQgYnkgR3l1eW91bmcgS2ltLiAKLQotICAgICAgICBJbXBsZW1lbnQgbWV0aG9kcyB0byB1
c2UgR2VvbG9jYXRpb25DbGllbnRNb2NrIGluIER1bXBSZW5kZXJUcmVlLgotICAgICAgICBUaGlz
IGNsaWVudCBhdHRhY2hlcyB0byB0aGUgcGFnZSB3aGVuZXZlciBhIHZpZXcgaXMgY3JlYXRlZC4K
LQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHA6
Ci0gICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OmF0dGFjaENsaWVudFRvUGFnZSk6
Ci0gICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OnJlc2V0R2VvbG9jYXRpb25DbGll
bnRNb2NrKToKLSAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6c2V0TW9ja0dlb2xv
Y2F0aW9uUGVybWlzc2lvbik6Ci0gICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OnNl
dE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKToKLSAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9y
dEVmbDo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKToKLSAgICAg
ICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6bnVtYmVyT2ZQZW5kaW5nR2VvbG9jYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdHMpOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJU
cmVlU3VwcG9ydEVmbC5oOgotCi0yMDEyLTEwLTMxICBNaWNoYcWCIFBha3XFgmEgdmVsIFJ1dGth
ICA8bS5wYWt1bGFAc2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW0VGTF1bRFJUXSBFdmVudFNlbmRl
ciByZXF1aXJlcyBjb250ZXh0Q2xpY2sgaW1wbGVtZW50YXRpb24KLSAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg2MDkxCi0KLSAgICAgICAgUmV2aWV3ZWQg
YnkgR3l1eW91bmcgS2ltLgotCi0gICAgICAgIEFkZCBhIHBvaW50ZXIgdG8gcGFyZW50IG1lbnUg
aW4gRXdrX0NvbnRleHRfTWVudV9JdGVtIGFuZCBhIGdldHRlcgotICAgICAgICBmdW5jdGlvbiB0
byBhbGxvdyBzZWxlY3RpbmcgYSBjb250ZXh0IG1lbnUgaXRlbSB3aXRob3V0IGhhdmluZwotICAg
ICAgICBwYXJlbnQgbWVudSBwb2ludGVyIGluIER1bXBSZW5kZXJUcmVlIEV2ZW50U2VuZGVyLgot
ICAgICAgICBUaHJlZSB1bml0IHRlc3RzIGFkZGVkIGR1ZSBld2sgQVBJIGNoYW5nZXMuCi0KLSAg
ICAgICAgKiBld2svZXdrX2NvbnRleHRtZW51LmNwcDoKLSAgICAgICAgKF9Fd2tfQ29udGV4dF9N
ZW51X0l0ZW0pOgotICAgICAgICAoZXdrX2NvbnRleHRfbWVudV9pdGVtX25ldyk6Ci0gICAgICAg
IChld2tfY29udGV4dF9tZW51X2l0ZW1fcGFyZW50X2dldCk6Ci0gICAgICAgIChld2tfY29udGV4
dF9tZW51X2l0ZW1fYXBwZW5kKToKLSAgICAgICAgKiBld2svZXdrX2NvbnRleHRtZW51Lmg6Ci0g
ICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAgKGV3a192aWV3X2NvbnRleHRfbWVu
dV9nZXQpOgotICAgICAgICAqIGV3ay9ld2tfdmlldy5oOgotICAgICAgICAqIHRlc3RzL3Rlc3Rf
ZXdrX2NvbnRleHRtZW51LmNwcDogQWRkZWQuCi0gICAgICAgIChURVNUX0YpOgotICAgICAgICAq
IHRlc3RzL3Rlc3RfZXdrX3ZpZXcuY3BwOgotICAgICAgICAoVEVTVF9GKToKLQotMjAxMi0xMC0z
MCAgU2Vva2p1IEt3b24gIDxzZW9ranUua3dvbkBzYW1zdW5nLmNvbT4KLQotICAgICAgICBbRUZM
XSBGaXggZmFpbHVyZSB0byBoaWdobGlnaHQgbm9kZXMgb24gd2ViIGluc3BlY3RvcgotICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwMzAzCi0KLSAgICAg
ICAgUmV2aWV3ZWQgYnkgR3l1eW91bmcgS2ltLgotCi0gICAgICAgIEl0IGlzIG5vdCB3b3JraW5n
IHRvIGhpZ2hsaWdodCBub2RlcyBvbiB3ZWIgaW5zcGVjdG9yCi0gICAgICAgIHdoZW4gdXNpbmcg
J1NpbmdsZSBCYWNraW5nIFN0b3JlJy4KLSAgICAgICAgQWRkIGNvZGUgZm9yIGRyYXdpbmcgaXQg
aWYgdGhlcmUgaXMgdGhlIGhpZ2hsaWdodGVkIG5vZGUuCi0KLSAgICAgICAgKiBld2svZXdrX3Zp
ZXdfc2luZ2xlLmNwcDoKLSAgICAgICAgKF9ld2tfdmlld19zaW5nbGVfc21hcnRfcmVwYWludHNf
cHJvY2Vzcyk6Ci0KLTIwMTItMTAtMzAgIEppbndvbyBTb25nICA8amlud29vNy5zb25nQHNhbXN1
bmcuY29tPgotCi0gICAgICAgIFtFRkxdIFJlZmFjdG9yIHRvb2x0aXAgY2FsbGJhY2sgc2lnbmFs
IGluIFdlYktpdDEKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEwMDU3MQotCi0gICAgICAgIFJldmlld2VkIGJ5IEd5dXlvdW5nIEtpbS4KLQotICAgICAg
ICBTZXBhcmF0ZSB0b29sdGlwIGNhbGxiYWNrIHNpZ25hbCBpbnRvICd0b29sdGlwLHRleHQsc2V0
JwotICAgICAgICBhbmQgJ3Rvb2x0aXAsdGV4dCx1bnNldCcgdG8gYmUgY29uc2lzdGVudCB3aXRo
IFdlYktpdDIuCi0KLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoZXdrX3Zp
ZXdfdG9vbHRpcF90ZXh0X3NldCk6Ci0gICAgICAgICogZXdrL2V3a192aWV3Lmg6Ci0KLTIwMTIt
MTAtMjYgIEh5b3dvbiBLaW0gIDxodzEwMDgua2ltQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtU
ZXhtYXBdW0VGTF0gSW1wbGVtZW50YXRpb24gb2YgQUMgcmVsYXRlZCBmdW5jdGlvbnMgaW4gQ2hy
b21lQ2xpZW50RWZsIGFuZCBld2tWaWV3LgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODIzMTUKLQotICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJv
aGRlIENocmlzdGlhbnNlbi4KLQotICAgICAgICBUaGlzIHBhdGNoIGltcGxlbWVudHMgYWNjZWxl
cmF0ZWQtY29tcG9zaXRpbmctcmVsYXRlZCBmdW5jdGlvbnMKLSAgICAgICAgdG8gZW50ZXIgYWNj
ZWxlcmF0ZWQtY29tcG9zaXRpbmcgbW9kZSBhbmQgc3luYyBsYXllcnMgCi0gICAgICAgIGluIENo
cm9tZUNsaWVudEVmbCBhbmQgZXdrVmlldy4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0No
cm9tZUNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRFZmw6OmF0
dGFjaFJvb3RHcmFwaGljc0xheWVyKToKLSAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEVm
bDo6c2V0TmVlZHNPbmVTaG90RHJhd2luZ1N5bmNocm9uaXphdGlvbik6Ci0gICAgICAgIChXZWJD
b3JlOjpDaHJvbWVDbGllbnRFZmw6OnNjaGVkdWxlQ29tcG9zaXRpbmdMYXllckZsdXNoKToKLSAg
ICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEVmbDo6YWxsb3dlZENvbXBvc2l0aW5nVHJpZ2dl
cnMpOgotICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChfRXdrX1ZpZXdfUHJp
dmF0ZV9EYXRhKToKLSAgICAgICAgKF9ld2tfdmlld19wcml2X25ldyk6Ci0gICAgICAgIChfZXdr
X3ZpZXdfcHJpdl9kZWwpOgotICAgICAgICAoX2V3a192aWV3X2FjY2VsZXJhdGVkX2NvbXBvc2l0
aW5nX2NiKToKLSAgICAgICAgU3luYyBhbmQgcmVuZGVyIGxheWVycy4KLSAgICAgICAgKF9ld2tf
dmlld19hY2NlbGVyYXRlZF9jb21wb3NpdGluZ19jb250ZXh0X2NyZWF0ZV9pZl9uZWVkZWQpOgot
ICAgICAgICBDcmVhdGUgYSBuZXcgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuCi0gICAg
ICAgIChld2tfdmlld19hY2NlbGVyYXRlZF9jb21wb3NpdGluZ19vYmplY3RfY3JlYXRlKToKLSAg
ICAgICAgQ3JlYXRlIGEgbmV3IGV2YXNfaW1hZ2Vfb2JqZWN0IGFjdCBhcyByZW5kZXIgdGFyZ2V0
IHN1cmZhY2UuCi0gICAgICAgIChld2tfdmlld19hY2NlbGVyYXRlZF9jb21wb3NpdGluZ19jb250
ZXh0X2dldCk6Ci0gICAgICAgIFJldHVybiB0aGUgR3JhcGhpY3NDb250ZXh0M0QgZm9yIGFjY2Vs
ZXJhdGVkIGNvbXBvc2l0aW5nLiAKLSAgICAgICAgKGV3a192aWV3X3Jvb3RfZ3JhcGhpY3NfbGF5
ZXJfc2V0KToKLSAgICAgICAgU2V0IHRoZSByb290IGxheWVyIHRvIEFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdDb250ZXh0LgotICAgICAgICAoZXdrX3ZpZXdfbWFya19mb3Jfc3luYyk6Ci0gICAgICAg
IE1hcmsgdGhlIGV2YXNfaW1hZ2Vfb2JqZWN0IGZvciBhY2NlbGVyYXRlZCBjb21wb3NpdGluZyBh
cyBkaXJ0eSB0byBtYWtlIGl0IHVwZGF0ZS4KLSAgICAgICAgKiBld2svZXdrX3ZpZXdfcHJpdmF0
ZS5oOgotICAgICAgICAoV2ViQ29yZSk6Ci0KLTIwMTItMTAtMjQgIEJyYWR5IEVpZHNvbiAgPGJl
aWRzb25AYXBwbGUuY29tPgotCi0gICAgICAgIEFkZCBhIHN0cmF0ZWd5IGZvciBsb2FkZXIgY3Vz
dG9taXphdGlvbi4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEwMDI3OAotCi0gICAgICAgIFJldmlld2VkIGJ5IEFsZXhleSBQcm9za3VyeWFrb3YuCi0K
LSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNFZmwuY3BwOgotICAg
ICAgICAoUGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpjcmVhdGVMb2FkZXJTdHJhdGVneSk6Ci0gICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzRWZsLmg6Ci0gICAgICAgIChQ
bGF0Zm9ybVN0cmF0ZWdpZXNFZmwpOgotCi0yMDEyLTEwLTIzICBBbGV4ZXkgUHJvc2t1cnlha292
ICA8YXBAYXBwbGUuY29tPgotCi0gICAgICAgIEFkZCBhIHN0cmF0ZWd5IGZvciBzaGFyZWQgd29y
a2VycwotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAw
MTY1Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQnJhZHkgRWlkc29uLgotCi0gICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzRWZsLmNwcDoKLSAgICAgICAgKFBsYXRmb3Jt
U3RyYXRlZ2llc0VmbDo6Y3JlYXRlUGFzdGVib2FyZFN0cmF0ZWd5KToKLSAgICAgICAgKFBsYXRm
b3JtU3RyYXRlZ2llc0VmbDo6Y3JlYXRlU2hhcmVkV29ya2VyU3RyYXRlZ3kpOgotICAgICAgICAo
UGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpjcmVhdGVWaXNpdGVkTGlua1N0cmF0ZWd5KToKLSAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNFZmwuaDoKLQotMjAxMi0xMC0y
MyAgSHlvd29uIEtpbSAgPGh3MTAwOC5raW1Ac2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW1RleG1h
cF1bRUZMXSBBZGQgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHRFZmwgdG8gdGhlIGJ1aWxk
IHN5c3RlbS4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTg4NjMwCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgR3l1eW91bmcgS2ltLgotCi0gICAgICAgICog
V2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHRFZmwuY3BwOiBNb2Rp
ZnkgdGhlICNpbmNsdWRlIGZpbGUuCi0KLTIwMTItMTAtMjMgIEFuZHJhcyBCZWNzaSAgPGFuZHJh
cy5iZWNzaUBkaWdpYS5jb20+Ci0KLSAgICAgICAgUmVtb3ZlIGRldmljZVBpeGVsUmF0aW8gZnJv
bSBWaWV3cG9ydEF0dHJpYnV0ZXMKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTk5ODQ1Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KLQot
ICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChfZXdrX3ZpZXdfdmlld3BvcnRf
YXR0cmlidXRlc19jb21wdXRlKToKLSAgICAgICAgUGFzcyB0aGUgZGV2aWNlIHBpeGVsIHJhdGlv
IGFzIGEgZnVuY3Rpb24gYXJndW1lbnQuCi0KLTIwMTItMTAtMjIgIFJ5dWFuIENob2kgIDxyeXVh
bi5jaG9pQGdtYWlsLmNvbT4KLQotICAgICAgICBbRUZMXSBwYyBmaWxlcyBzaG91bGQgdXNlIERB
VEFfSU5TVEFMTF9ESVIgZm9yIGRhdGFkaXIKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTk5OTYxCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgR3l1eW91bmcg
S2ltLgotCi0gICAgICAgICogZXdlYmtpdC5wYy5pbjogVXNlZCBEQVRBX0lOU1RBTExfRElSIGlu
c3RlYWQgb2YgaGFyZGNvZGVkIGBzaGFyZWQvWFhYYAotCi0yMDEyLTEwLTIyICBKb2NlbHluIFR1
cmNvdHRlICA8am9jZWx5bi50dXJjb3R0ZUBkaWdpYS5jb20+Ci0KLSAgICAgICAgW1F0XSBGaXgg
IkFTU0VSVElPTiBGQUlMRUQ6ICFkb2N1bWVudC0+aW5QYWdlQ2FjaGUoKSIgd2hlbiBsb2FkaW5n
IGEgcGFnZQotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTg1MTQKLQotICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4K
LQotICAgICAgICAqIGV3ay9ld2tfZnJhbWUuY3BwOgotICAgICAgICAoZXdrX2ZyYW1lX3ZpZXdf
Y3JlYXRlX2Zvcl92aWV3KToKLQotMjAxMi0xMC0yMSAgU2Vva2p1IEt3b24gIDxzZW9ranUua3dv
bkBzYW1zdW5nLmNvbT4KLQotICAgICAgICBbRUZMXSBGaXggZmFpbHVyZSB0byBhY2Nlc3MgdGhl
IGluc3BlY3RvciByZXNvdXJjZXMKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTk5ODE2Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgR3l1eW91bmcgS2ltLgot
Ci0gICAgICAgIGFjY2VzcygpIHJldHVybnMgLTEsIGlmIHBhdGggaGFzIGEgZmlsZSBwcm90b2Nv
bCBsaWtlICJmaWxlOi8vIi4KLSAgICAgICAgQW5kIEkgaGF2ZSByZW1vdmVkIGl0IGZyb20gdGhl
IGZpcnN0IGFyZ3VtZW50IG9mIGFjY2VzcygpLgotICAgICAgICBJZiBub3QsIGluc3BlY3RvckJh
c2VVUkwoKSBvciBpbnNwZWN0b3JGaWxlc1BhdGgoKSBhbHdheXMgcmV0dXJucyBXRUJfSU5TUEVD
VE9SX0RJUi4KLSAgICAgICAgVGhlbiBhbGwgbGF5b3V0IHRlc3QgcmVsYXRlZCB0byBpbnNwZWN0
b3IgY2FuIGZhaWwgYWZ0ZXIgaW5zdGFsbGluZyB3ZWJraXQgcGFja2FnZS4KLQotICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JDbGllbnRFZmw6Omluc3BlY3RvckZpbGVzUGF0aCk6Ci0KLTIwMTItMTAtMjAg
IFJhcGhhZWwgS3VibyBkYSBDb3N0YSAgPHJhcGhhZWwua3Viby5kYS5jb3N0YUBpbnRlbC5jb20+
Ci0KLSAgICAgICAgW0VGTF1bRFJUXSBJbXBsZW1lbnQgdHJhY2tpbmcgYW5kIHBhaW50aW5nIHJl
cGFpbnQgcmVjdGFuZ2xlcy4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTk5ODM4Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgR3l1eW91bmcgS2ltLgotCi0g
ICAgICAgIEFkZCB0aGUgcmVxdWlyZWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0IHBsdW1iaW5nIGZ1
bmN0aW9ucyB0bwotICAgICAgICBpbnRlcmFjdCB3aXRoIEZyYW1lVmlldyBhbmQgdHJhY2svb2J0
YWluIHJlcGFpbnQgcmVjdGFuZ2xlcyBmb3IKLSAgICAgICAgRHVtcFJlbmRlclRyZWUuCi0KLSAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwOgotICAg
ICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpzZXRTZWxlY3RUcmFpbGluZ1doaXRlc3Bh
Y2VFbmFibGVkKToKLSAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6c2V0VHJhY2tz
UmVwYWludHMpOgotICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpyZXNldFRyYWNr
ZWRSZXBhaW50cyk6Ci0gICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OmlzVHJhY2tp
bmdSZXBhaW50cyk6Ci0gICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OnRyYWNrZWRS
ZXBhaW50UmVjdHMpOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3Vw
cG9ydEVmbC5oOgotCi0yMDEyLTEwLTE4ICBLYW5naWwgSGFuICA8a2FuZ2lsLmhhbkBzYW1zdW5n
LmNvbT4KLQotICAgICAgICBbRUZMXSBBZGQgdW5pdCB0ZXN0IGZvciBld2tfZnJhbWVfc291cmNl
X2dldC4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1
OTg0Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgR3l1eW91bmcgS2ltLgotCi0gICAgICAgIEFkZCB0
aHJlZSB1bml0IHRlc3QgY2FzZXMgdG8gdmVyaWZ5IGV3a19mcmFtZV9zb3VyY2VfZ2V0IGZ1bmN0
aW9uLgotICAgICAgICBBZGRpdGlvbmFsbHksIGluc2VydCBjb2RlIHRvIGNoZWNrIGlmIHVyaSBl
eGlzdHMgaW4gb3JkZXIgdG8gcmV0dXJuIGVycm9yIHNpbmNlIHZpZXcgaXRzZWxmIGhhcyBibGFu
ayBodG1sLgotCi0gICAgICAgICogZXdrL2V3a19mcmFtZS5jcHA6Ci0gICAgICAgIChld2tfZnJh
bWVfc291cmNlX2dldCk6Ci0gICAgICAgICogdGVzdHMvdGVzdF9ld2tfZnJhbWUuY3BwOiBBZGRl
ZC4KLSAgICAgICAgKGluaXRCdWZmZXIpOgotICAgICAgICAoVEVTVF9GKToKLQotMjAxMi0xMC0x
NyAgQnl1bmd3b28gTGVlICA8Ync4MC5sZWVAc2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgRml4IGJ1
aWxkIHdhcm5pbmdzIDogLVd1bnVzZWQtcGFyYW1ldGVyLCAtV3VudXNlZC12YXJpYWJsZQotICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTk1MzkKLQotICAg
ICAgICBSZXZpZXdlZCBieSBLZW50YXJvIEhhcmEuCi0KLSAgICAgICAgRml4IGJ1aWxkIHdhcm5p
bmdzIGFib3V0IHVudXNlZCBwYXJhbWV0ZXIgb3IgdW51c2VkIHZhcmlhYmxlIHdoZW4KLSAgICAg
ICAgV1RGX1VTRV9USUxFRF9CQUNLSU5HX1NUT1JFIG9wdGlvbiBpcyBlbmFibGVkLgotCi0gICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdlYkNv
cmU6OkNocm9tZUNsaWVudEVmbDo6YXR0YWNoUm9vdEdyYXBoaWNzTGF5ZXIpOgotICAgICAgICAo
V2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZsOjpkZWxlZ2F0ZWRTY3JvbGxSZXF1ZXN0ZWQpOgotCi0y
MDEyLTEwLTE3ICBCeXVuZ3dvbyBMZWUgIDxidzgwLmxlZUBzYW1zdW5nLmNvbT4KLQotICAgICAg
ICBbRUZMXSBBZGQgYmFja2dyb3VuZCBjb2xvciB0byB0aGUgY2hlY2tib3ggdGhlbWUuCi0gICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODc4OAotCi0gICAg
ICAgIFJldmlld2VkIGJ5IEd5dXlvdW5nIEtpbS4KLQotICAgICAgICBCYWNrZ3JvdW5kIGNvbG9y
IGlzIGFkZGVkIHRvIHRoZSBjaGVja2JveCB0aGVtZSBmb3IgaWRlbnRpZnlpbmcKLSAgICAgICAg
Y2hlY2tib3ggc3RhdHVzIGVhc2lseS4KLQotICAgICAgICBDaGVja2JveCB0aGVtZSB1c2VzIGlt
YWdlcyB3aGljaCBoYXMgdHJhbnNwYXJlbnQgYmFja2dyb3VuZCwgYW5kIHRoZQotICAgICAgICB0
aGVtZSBpdHNlbGYgZG9lc24ndCBoYXZlIHRoZSBiYWNrZ3JvdW5kIGNvbG9yLgotCi0gICAgICAg
IFdoZW4gdGhlIGJhY2tncm91bmQgb2YgY2hlY2tib3ggaXMgYmxhY2ssIGNoZWNrZWQvdW5jaGVj
a2VkIHN0YXR1cwotICAgICAgICBjYW5ub3QgYmUgZGlzdGluZ3Vpc2hlZCBiZWNhdXNlIGNoZWNr
IG1hcmsgY29sb3IgaXMgYmxhY2suCi0KLSAgICAgICAgQW5kIGl0IGlzIGhhcmQgdG8gaWRlbnRp
Znkgd2hldGhlciB0aGUgY2hlY2tib3ggaXMgZGlzYWJsZWQgb3Igbm90LAotICAgICAgICBiZWNh
dXNlIHRoZXJlIGlzIG5vIGJhY2tncm91bmQgY29sb3IgaW4gdGhlIGNoZWNrYm94IHRoZW1lLgot
Ci0gICAgICAgIEluc3RlYWQgb2YgYWRkaW5nIGJhY2tncm91bmQgY29sb3IgdG8gdGhlIGVkYyBz
Y3JpcHQsIGJhY2tncm91bmQKLSAgICAgICAgaW1hZ2VzIGFyZSBhZGRlZCBiZWNhdXNlIHRoZSBz
aGFwZSBvZiB0aGUgY2hlY2sgYm94IGNhbiBiZSB2YXJpb3VzLgotCi0gICAgICAgICogRGVmYXVs
dFRoZW1lL3dpZGdldC9jaGVjay9jaGVjay5lZGM6Ci0gICAgICAgICogRGVmYXVsdFRoZW1lL3dp
ZGdldC9jaGVjay9pbWdfY2hlY2tfYmdfZW5hYmxlZC5wbmc6IEFkZGVkLgotICAgICAgICAqIERl
ZmF1bHRUaGVtZS93aWRnZXQvY2hlY2svaW1nX2NoZWNrX2JnX2Rpc2FibGVkLnBuZzogQWRkZWQu
Ci0KLTIwMTItMTAtMTcgIEJ5dW5nd29vIExlZSAgPGJ3ODAubGVlQHNhbXN1bmcuY29tPgotCi0g
ICAgICAgIFtFRkxdIEFkZCBiYWNrZ3JvdW5kIGNvbG9yIHRvIHRoZSByYWRpbyBidXR0b24gdGhl
bWUuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODg1
MgotCi0gICAgICAgIFJldmlld2VkIGJ5IEd5dXlvdW5nIEtpbS4KLQotICAgICAgICBCYWNrZ3Jv
dW5kIGNvbG9yIGlzIGFkZGVkIHRvIHRoZSByYWRpbyBidXR0b24gdGhlbWUgZm9yIGlkZW50aWZ5
aW5nCi0gICAgICAgIHJhZGlvIGJ1dHRvbiBzdGF0dXMgZWFzaWx5LgotCi0gICAgICAgIFJhZGlv
IGJ1dHRvbiB0aGVtZSB1c2VzIGltYWdlcyB3aGljaCBoYXMgdHJhbnNwYXJlbnQgYmFja2dyb3Vu
ZC4KLQotICAgICAgICBXaGVuIHRoZSBiYWNrZ3JvdW5kIG9mIHJhZGlvIGJ1dHRvbiBpcyBibGFj
aywgY2hlY2tlZC91bmNoZWNrZWQgc3RhdHVzCi0gICAgICAgIGNhbm5vdCBiZSBkaXN0aW5ndWlz
aGVkIGJlY2F1c2UgY2hlY2sgbWFyayBjb2xvciBpcyBibGFjay4KLQotICAgICAgICBBbmQgaXQg
aXMgaGFyZCB0byBpZGVudGlmeSB3aGV0aGVyIHRoZSByYWRpbyBidXR0b24gaXMgZGlzYWJsZWQg
b3Igbm90LAotICAgICAgICBiZWNhdXNlIHRoZXJlIGlzIG5vIGJhY2tncm91bmQgY29sb3IgaW4g
dGhlIHJhZGlvIGJ1dHRvbiB0aGVtZS4KLQotICAgICAgICAqIERlZmF1bHRUaGVtZS93aWRnZXQv
cmFkaW8vaW1nX3JhZGlvX2JnX2Rpc2FibGVkLnBuZzogQWRkZWQuCi0gICAgICAgICogRGVmYXVs
dFRoZW1lL3dpZGdldC9yYWRpby9pbWdfcmFkaW9fYmdfZW5hYmxlZC5wbmc6IEFkZGVkLgotICAg
ICAgICAqIERlZmF1bHRUaGVtZS93aWRnZXQvcmFkaW8vcmFkaW8uZWRjOgotCi0yMDEyLTEwLTE1
ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+Ci0KLSAgICAg
ICAgW0VGTF1bV0syXSBJbXBsZW1lbnQgRmF2aWNvbnMgQVBJCi0gICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05OTA4NwotCi0gICAgICAgIFJldmlld2VkIGJ5
IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgotCi0gICAgICAgIFJlbW92ZSBld2tfdXRpbCBu
b3cgdGhhdCBpdHMgY29kZSBoYXMgYmVlbiBtb3ZlZAotICAgICAgICB0byBDYWlyb1V0aWxpdGll
c0VmbCBpbiBXZWJDb3JlLgotCi0gICAgICAgICogZXdrL2V3a19oaXN0b3J5LmNwcDoKLSAgICAg
ICAgKGV3a19oaXN0b3J5X2l0ZW1faWNvbl9vYmplY3RfYWRkKToKLSAgICAgICAgKiBld2svZXdr
X3NldHRpbmdzLmNwcDoKLSAgICAgICAgKGV3a19zZXR0aW5nc19pY29uX2RhdGFiYXNlX2ljb25f
b2JqZWN0X2dldCk6Ci0KLTIwMTItMTAtMTUgIERvbmd3b28gSm9zaHVhIEltICA8ZHcuaW1Ac2Ft
c3VuZy5jb20+Ci0KLSAgICAgICAgW0VGTF0gU2V0IHRoZSBiYXNlcGF0aCBvZiB0aGUgRmlsZSBT
eXN0ZW0gQVBJLgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTgzNDQKLQotICAgICAgICBSZXZpZXdlZCBieSBHeXV5b3VuZyBLaW0uCi0KLSAgICAgICAg
U2V0IHRoZSBiYXNlcGF0aCBvZiB0aGUgRmlsZSBTeXN0ZW0gQVBJIHVzaW5nIHRoZSBpbnRlcm5h
bCBzZXR0ZXIgZnVuY3Rpb24uCi0KLSAgICAgICAgKiBld2svZXdrX21haW4uY3BwOgotICAgICAg
ICAoX2V3a19pbml0X2JvZHkpOiBDYWxsIHRoZSBzZXR0ZXIgZnVuY3Rpb24gd2l0aCB0aGUgZGVm
YXVsdCBwYXRoLgotICAgICAgICAqIGV3ay9ld2tfc2V0dGluZ3MuY3BwOgotICAgICAgICAoZXdr
X3NldHRpbmdzX2ZpbGVfc3lzdGVtX3BhdGhfc2V0KTogU2V0IHRoZSBnaXZlbiBwYXRoIGFzIHRo
ZSBiYXNlIHBhdGggb2YgdGhlIGZpbGUgc3lzdGVtLgotICAgICAgICAqIGV3ay9ld2tfc2V0dGlu
Z3NfcHJpdmF0ZS5oOiBBZGQgZXdrX3NldHRpbmdzX2ZpbGVfc3lzdGVtX3BhdGhfc2V0LgotCi0y
MDEyLTEwLTE0ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+Ci0KLSAgICAgICAgTWFrZSBV
c2VyU2NyaXB0IGFuZCBVc2VyU3R5bGVTaGVldCB2YWx1ZSBvYmplY3RzIHRoYXQgYXJlIGNvcHlh
YmxlCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05OTI3
NQotCi0gICAgICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0b24uCi0KLSAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwOgotICAgICAgICAoRHVtcFJlbmRl
clRyZWVTdXBwb3J0RWZsOjphZGRVc2VyU2NyaXB0KToKLSAgICAgICAgKER1bXBSZW5kZXJUcmVl
U3VwcG9ydEVmbDo6YWRkVXNlclN0eWxlU2hlZXQpOgotICAgICAgICBVcGRhdGUgZm9yIG5ldyBQ
YWdlR3JvdXAgZnVuY3Rpb24gc2lnbmF0dXJlcy4KLQotMjAxMi0xMC0xMSAgR3l1eW91bmcgS2lt
ICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxdIFJlbW92ZSAid2Vi
IiB3b3JkIGluIHdlYiBpbnNwZWN0b3IKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTk4NzI0Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgTGFzemxvIEdvbWJv
cy4KLQotICAgICAgICAqd2ViKiB3b3JkIGlzIHJlZHVuZGFudCBpbiB3ZWIgaW5zcGVjdG9yLiBC
ZXNpZGUgcjEzMDQ5NCBhbmQgcjEzMDQ3OSByZW1vdmVkICp3ZWIqIGZyb20gRUZMIFdLMi4KLQot
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEVmbC5jcHA6Ci0gICAgICAg
IChXZWJDb3JlOjpub3RpZnlJbnNwZWN0b3JEZXN0cm95KToKLSAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckNsaWVudEVmbDo6b3Blbkluc3BlY3RvckZyb250ZW5kKToKLSAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50RWZsOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudEVm
bCk6Ci0gICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudEVmbDo6fkluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50RWZsKToKLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAg
ICAgICAoZXdrX3ZpZXdfaW5zcGVjdG9yX3Nob3cpOgotICAgICAgICAoZXdrX3ZpZXdfaW5zcGVj
dG9yX2Nsb3NlKToKLSAgICAgICAgKGV3a192aWV3X2luc3BlY3Rvcl92aWV3X2dldCk6Ci0gICAg
ICAgIChld2tfdmlld19pbnNwZWN0b3Jfdmlld19zZXQpOgotICAgICAgICAqIGV3ay9ld2tfdmll
dy5oOgotCi0yMDEyLTEwLTEwICBKb24gTGVlICA8am9ubGVlQGFwcGxlLmNvbT4KLQotICAgICAg
ICBbV0syXSBBY3RpdmF0ZSBwbHVnaW5zIHdoZW4gdXNlciBjbGlja3Mgb24gc25hcHNob3QKLSAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4MzI4Ci0gICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS8xMjQyNjY4MT4KLQotICAgICAgICBSZXZpZXdlZCBieSBCcmFk
eSBFaWRzb24uCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVm
bC5oOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OnJlY3JlYXRlUGx1
Z2luKTogU3R1YiBpbXBsZW1lbnRhdGlvbiBvZiByZWNyZWF0ZVBsdWdpbigpLgotCi0yMDEyLTEw
LTEwICBSeXVhbiBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBbRUZM
XSBVc2UgZXdrX3ZpZXdfcGFpbnQgaW5zdGVhZCBvZiBld2tfdmlld19wYWludF9jb250ZW50cyBp
biBld2tfdmlld19zaW5nbGUuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05ODcxNgotCi0gICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hy
aXN0aWFuc2VuLgotCi0gICAgICAgIGV3a192aWV3X3BhaW50IGlzIHRoZSB3cmFwcGVyIG9mIFNj
cm9sbFZpZXc6OnBhaW50IGFuZAotICAgICAgICBld2tfdmlld19wYWludF9jb250ZW50cyBpcyB0
aGUgd3JhcHBlciBvZiBGcmFtZVZpZXc6OnBhaW50Q29udGVudHMuCi0KLSAgICAgICAgQmVjYXVz
ZSBGcmFtZVZpZXc6OnBhaW50Q29udGVudHMganVzdCBkcmF3IGNvbnRlbnRzLAotICAgICAgICBl
d2tfdmlld19zaW5nbGUgc2hvdWxkIHVzZSBld2tfdmlld19wYWludCBpbnN0ZWFkIG9mIGV3a192
aWV3X3BhaW50X2NvbnRlbnRzCi0gICAgICAgIGxpa2Ugb3RoZXIgcG9ydHMuCi0KLSAgICAgICAg
KiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoZXdrX3ZpZXdfcGFpbnQpOgotICAgICAgICBN
b3ZlZCB1cGRhdGVMYXlvdXRBbmRTdHlsZUlmTmVlZGVkUmVjdXJzaXZlIHRvIHNoYXJlIGV3a192
aWV3X3BhaW50LgotICAgICAgICAqIGV3ay9ld2tfdmlld19zaW5nbGUuY3BwOgotICAgICAgICAo
X2V3a192aWV3X3NpbmdsZV9zbWFydF9yZXBhaW50c19wcm9jZXNzKToKLSAgICAgICAgTW9kaWZp
ZWQgdG8gY2FsbCBld2tfdmlld19wYWludC4KLQotMjAxMi0xMC0xMCAgSmFlaHVuIExpbSAgPGxq
YWVodW4ubGltQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxdIFVzZSBFdmFzIGZ1bmN0aW9u
IGluc3RlYWQgb2YgbWVtY3B5Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05ODQ4MwotCi0gICAgICAgIFJldmlld2VkIGJ5IEd5dXlvdW5nIEtpbS4KLQot
ICAgICAgICBFdmFzIHN1cHBvcnRzIGV2YXNfb2JqZWN0X2ltYWdlX2RhdGFfY29weV9zZXQoKSB0
byBjb3B5IHJhdyBpbWFnZSBkYXRhLgotICAgICAgICBDaGFuZ2UgbWVtY3B5KCkgd2l0aCBldmFz
X29iamVjdF9pbWFnZV9kYXRhX2NvcHlfc2V0KCkuCi0KLSAgICAgICAgU3BlbGwgb3V0IHZhcmlh
YmxlIG5hbWVzIGFuZCByZWZhY3RvciB2YXJpYWJsZSBkZWNsYXJhdGlvbiBzdGF0ZW1lbnRzLgot
Ci0gICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gZnVuY3Rpb25hbGl0eSB3YXMgY2hhbmdlZC4KLQot
ICAgICAgICAqIGV3ay9ld2tfdXRpbC5jcHA6Ci0gICAgICAgIChld2tfdXRpbF9pbWFnZV9mcm9t
X2NhaXJvX3N1cmZhY2VfYWRkKToKLQotMjAxMi0xMC0wNyAgQ2FpbyBNYXJjZWxvIGRlIE9saXZl
aXJhIEZpbGhvICA8Y2Fpby5vbGl2ZWlyYUBvcGVuYm9zc2Eub3JnPgotCi0gICAgICAgIFJlbmFt
ZSBmaXJzdC9zZWNvbmQgdG8ga2V5L3ZhbHVlIGluIEhhc2hNYXAgaXRlcmF0b3JzCi0gICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04Mjc4NAotCi0gICAgICAg
IFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVt
cFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcDoKLSAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9y
dEVmbDo6ZXZhbHVhdGVTY3JpcHRJbklzb2xhdGVkV29ybGQpOgotICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0VmbC5jcHA6Ci0gICAgICAgIChQbGF0Zm9ybVN0cmF0
ZWdpZXNFZmw6OmdldFBsdWdpbkluZm8pOgotICAgICAgICAqIGV3ay9ld2tfaW50ZW50LmNwcDoK
LSAgICAgICAgKGV3a19pbnRlbnRfZXh0cmFfZ2V0KToKLQotMjAxMi0xMC0wNSAgQ2hyaXN0b3Bo
ZSBEdW1leiAgPGNocmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgotCi0gICAgICAgIFtFRkxdIEZp
eCB3aW5kb3cgcmVzaXppbmcgLyBtb3ZpbmcgaW4gV0sxIGFuZCBXS1RSCi0gICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODQ4NgotCi0gICAgICAgIFJldmll
d2VkIGJ5IEd5dXlvdW5nIEtpbS4KLQotICAgICAgICBGaXggQ2hyb21lQ2xpZW50RWZsOjp3aW5k
b3dSZWN0KCkgY29kZSB0byB1c2UKLSAgICAgICAgZWNvcmVfZXZhc19yZXF1ZXN0X2dlb21ldHJ5
X2dldCgpIGluc3RlYWQgb2YKLSAgICAgICAgZXZhc19vYmplY3RfZ2VvbWV0cnlfZ2V0KCkgYW5k
IHRoZXJlZm9yZSBhdm9pZAotICAgICAgICByZXR1cm5pbmcgaW5jb3JyZWN0IHZhbHVlcyB3aGVu
IHRoZSBlbmdpbmUgaGFzCi0gICAgICAgIG5vdCBwcm9jZXNzZWQgYSBjYWxsIHRvIGVjb3JlX2V2
YXNfbW92ZV9yZXNpemUoKQotICAgICAgICB5ZXQuIFRoaXMgZml4ZXMgYSBjb3VwbGUgb2YgbGF5
b3V0IHRlc3RzLgotCi0gICAgICAgIFRoZSBjb2RlIHdhcyBhbHNvIHJlZmFjdG9yZWQgYSBiaXQg
Zm9yCi0gICAgICAgIGNvbnNpc3RlbmN5IHdpdGggdGhlIFdlYktpdDIgRUZMIGltcGxlbWVudGF0
aW9uLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcDoKLSAg
ICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEVmbDo6d2luZG93UmVjdCk6Ci0gICAgICAgIChX
ZWJDb3JlOjpDaHJvbWVDbGllbnRFZmw6OnNldFdpbmRvd1JlY3QpOgotCi0yMDEyLTEwLTA0ICBT
aW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgotCi0gICAgICAgIEZpbmFsIHBh
cnQgb2YgInN5bmMiIHRvICJmbHVzaCIgcmVuYW1pbmcKLSAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4NDMwCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgVGlt
IEhvcnRvbi4KLQotICAgICAgICBDaGFuZ2UgbWV0aG9kIG5hbWVzIG9uIEdyYXBoaWNzTGF5ZXIg
YW5kIEdyYXBoaWNzTGF5ZXJDbGllbnQgdGhhdAotICAgICAgICByZWZlciB0byAic3luYyIgdG8g
dXNlIHRoZSB0ZXJtICJmbHVzaCIgaW5zdGVhZCwgdG8gYmUgY29uc2lzdGVudAotICAgICAgICB3
aXRoIHRoZSByZXN0IG9mIHRoZSBjb2RlLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvQWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHRFZmwuY3BwOgotICAgICAgICAoV2ViQ29yZTo6QWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OnN5bmNMYXllcnNOb3cpOgotICAgICAgICAoV2Vi
Q29yZTo6QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OmF0dGFjaFJvb3RHcmFwaGljc0xh
eWVyKToKLQotMjAxMi0xMC0wNCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNv
bT4KLQotICAgICAgICBTdGFuZGFyZGl6ZSBvbiAiZmx1c2giIHRlcm1pbm9sb2d5IGZvciBjb21w
b3NpdGluZyBsYXllciBmbHVzaGluZy9zeW5jaW5nCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODMyMQotCi0gICAgICAgIFJldmlld2VkIGJ5IFNpbW9u
IEZyYXNlci4KLQotICAgICAgICBSZW5hbWUgY29tcG9zaXRpbmctcmVsYXRlZCBtZXRob2RzIHRo
YXQgcmVmZXIgdG8gInN5bmNpbmciIHRvIGluc3RlYWQKLSAgICAgICAgcmVmZXIgdG8gImZsdXNo
aW5nIi4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHA6Ci0g
ICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRFZmw6OnNjaGVkdWxlQ29tcG9zaXRpbmdMYXll
ckZsdXNoKToKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuaDoKLSAg
ICAgICAgKENocm9tZUNsaWVudEVmbCk6Ci0KLTIwMTItMTAtMDQgIENocmlzdG9waGUgRHVtZXog
IDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KLQotICAgICAgICBbRUZMXSB3ZWJpbnRlbnRz
L3dlYi1pbnRlbnRzLWZhaWx1cmUuaHRtbCBpcyBmYWlsaW5nCi0gICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODM0OQotCi0gICAgICAgIFJldmlld2VkIGJ5
IEd5dXlvdW5nIEtpbS4KLQotICAgICAgICBBZnRlciByMTMwMzQ0LCBPcGFxdWVKU1N0cmluZygp
LnN0cmluZygpIHJldHVybnMKLSAgICAgICAgYW4gZW1wdHkgc3RyaW5nIGluc3RlYWQgb2YgYSBu
dWxsIG9uZS4gVGhlcmVmb3JlLAotICAgICAgICB3ZSBuZWVkIHRvIHVwZGF0ZSB0aGUgY2hlY2sg
aW4KLSAgICAgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpzZW5kV2ViSW50ZW50UmVzcG9u
c2UoKS4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVm
bC5jcHA6Ci0gICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OnNlbmRXZWJJbnRlbnRS
ZXNwb25zZSk6Ci0KLTIwMTItMTAtMDQgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1
bWV6QGludGVsLmNvbT4KLQotICAgICAgICBSZWdyZXNzaW9uKHIxMzAzNjMpOiBCcm9rZSB1bml0
IHRlc3RzCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05
ODM0MQotCi0gICAgICAgIFJldmlld2VkIGJ5IEd5dXlvdW5nIEtpbS4KLQotICAgICAgICBGaXgg
V2ViS2l0RUZMIHVuaXQgdGVzdHMgdG8gdXNlIFgxMSBhcwotICAgICAgICB3ZWxsLgotCi0gICAg
ICAgICogdGVzdHMvVW5pdFRlc3RVdGlscy9FV0tUZXN0QmFzZS5jcHA6Ci0gICAgICAgIChFV0tV
bml0VGVzdHM6OkVXS1Rlc3RCYXNlOjpTZXRVcCk6Ci0gICAgICAgICogdGVzdHMvVW5pdFRlc3RV
dGlscy9FV0tUZXN0RW52aXJvbm1lbnQuaDoKLSAgICAgICAgKEVXS1Rlc3RFbnZpcm9ubWVudCk6
Ci0gICAgICAgICogdGVzdHMvVW5pdFRlc3RVdGlscy9FV0tUZXN0Vmlldy5jcHA6Ci0gICAgICAg
IChFV0tVbml0VGVzdHM6OkVXS1Rlc3RWaWV3Ojppbml0KToKLSAgICAgICAgKiB0ZXN0cy9Vbml0
VGVzdFV0aWxzL0VXS1Rlc3RWaWV3Lmg6Ci0gICAgICAgIChFV0tUZXN0Vmlldyk6Ci0KLTIwMTIt
MTAtMDMgIFJ5dWFuIENob2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtF
RkxdIERlZmF1bHQuZWRqIHNob3VsZCBiZSBnZW5lcmF0ZWQgYWx0aG91Z2ggRU5BQkxFX1dFQktJ
VCBkaXNhYmxlZC4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTk3NzUzCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgTGFzemxvIEdvbWJvcy4KLQotICAgICAg
ICBkZWZhdWx0LmVkaiBpcyB1c2VkIGluIGJvdGggd2Via2l0L2VmbCBhbmQgd2Via2l0Mi9lZmwu
Ci0gICAgICAgIEhvd2V2ZXIsIGl0IGhhcyBiZWVuIGdlbmVyYXRlZCBvbmx5IHdoZW4gRU5BQkxF
X1dFQktJVCBpcyBlbmFibGVkLgotCi0gICAgICAgIFRoaXMgcGF0Y2ggc2VwYXJhdGVzIHRoZSBz
Y3JpcHQgd2hpY2ggZ2VuZXJhdGVzIGRlZmF1bHQuZWRqCi0gICAgICAgIGZyb20gc291cmNlL3dl
YmtpdC9wbGF0Zm9ybWVmbC5jbWFrZS4KLQotICAgICAgICAqIERlZmF1bHRUaGVtZS9DTWFrZUxp
c3RzLnR4dDoKLSAgICAgICAgRXh0cmFjdGVkIGZyb20gU291cmNlL1dlYktpdC9QbGF0Zm9ybUVm
bC5jbWFrZSBhbmQgc2FuaXRpemVkLgotCi0yMDEyLTEwLTAzICBDaHJpc3RvcGhlIER1bWV6ICA8
Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+Ci0KLSAgICAgICAgW0VGTF0gRW5hYmxlIHVzZSBv
ZiBYMTEgaW4gRHVtcFJlbmRlclRyZWUgLyBXZWJLaXRUZXN0UnVubmVyCi0gICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODIzMQotCi0gICAgICAgIFJldmll
d2VkIGJ5IEd5dXlvdW5nIEtpbS4KLQotICAgICAgICBJbml0aWFsaXplIGVjb3JlX3ggbGlicmFy
eSBpbiBld2tfbWFpbiBzaW5jZSBpdCBpcyB1c2VkIGJ5Ci0gICAgICAgIFdlYktpdEVGTC4KLQot
ICAgICAgICAqIGV3ay9ld2tfbWFpbi5jcHA6Ci0gICAgICAgIChld2tfaW5pdCk6Ci0gICAgICAg
IChld2tfc2h1dGRvd24pOgotCi0yMDEyLTEwLTAzICBLYW5naWwgSGFuICA8a2FuZ2lsLmhhbkBz
YW1zdW5nLmNvbT4KLQotICAgICAgICBGaXggdW51c2VkIHBhcmFtZXRlciBjb21waWxlIHdhcm5p
bmdzLgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTgy
NDMKLQotICAgICAgICBSZXZpZXdlZCBieSBBbGV4ZXkgUHJvc2t1cnlha292LgotCi0gICAgICAg
IEZpeGVkIHVudXNlZCBwYXJhbWV0ZXIgY29tcGlsZSB3YXJuaW5nIGJ5IHJlbW92aW5nIHBhZ2Ug
cGFyYW1ldGVyIG5hbWUgYW5kIFVOVVNFRF9QQVJBTSB1c2FnZS4KLQotICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0VmbC5jcHA6Ci0gICAgICAgIChQbGF0Zm9ybVN0
cmF0ZWdpZXNFZmw6OmdldFBsdWdpbkluZm8pOgotCi0yMDEyLTEwLTAzICBKaW53b28gU29uZyAg
PGppbndvbzcuc29uZ0BzYW1zdW5nLmNvbT4KLQotICAgICAgICBbRUZMXSBDaGFuZ2UgdGhlIHJl
dmVyc2VkIGV4cGVjdGVkIGFuZCBhY3R1YWwgcGFyYW1ldGVyIGluIFdlYktpdDEgdW5pdCB0ZXN0
cwotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTgyNzYK
LQotICAgICAgICBSZXZpZXdlZCBieSBMYXN6bG8gR29tYm9zLgotCi0gICAgICAgIEV4cGVjdGVk
IHZhbHVlIHNob3VsZCBiZSBhdCBmaXJzdCBhbmQgYWN0dWFsIHZhbHVlIGJlIGZvbGxvd2VkIGlu
IEFTU0VSVF9TVFJFUSgpLgotCi0gICAgICAgICogdGVzdHMvdGVzdF9ld2tfdmlldy5jcHA6Ci0g
ICAgICAgIChURVNUX0YpOgotCi0yMDEyLTEwLTAyICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNn
YXJjaWFAaWdhbGlhLmNvbT4KLQotICAgICAgICBbR1RLXSBBZGQgQVBJIHRvIGdldCB0aGUgd2Vi
IHZpZXcgdGhhdCBpbml0aWF0ZWQgYSBjdXN0b20gVVJJIHJlcXVlc3QgdG8gV2ViS2l0MiBHVEsr
Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05Nzg5NQot
Ci0gICAgICAgIFJldmlld2VkIGJ5IE1hcnRpbiBSb2JpbnNvbi4KLQotICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0ZyYW1lTmV0d29ya2luZ0NvbnRleHRFZmwuY3BwOgotICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVOZXR3b3JraW5nQ29udGV4dEVmbDo6aW5pdGlhdGluZ1BhZ2VJRCk6IFN0dWIKLSAg
ICAgICAgaW1wbGVtZW50YXRpb24uCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVOZXR3
b3JraW5nQ29udGV4dEVmbC5oOgotICAgICAgICAoRnJhbWVOZXR3b3JraW5nQ29udGV4dEVmbCk6
IEFkZGVkLgotCi0yMDEyLTEwLTAyICBLcnp5c3p0b2YgQ3plY2ggIDxrLmN6ZWNoQHNhbXN1bmcu
Y29tPgotCi0gICAgICAgIFtFRkxdW1VUXSBSZWZhY3RvcmluZyBhbiBpbXBsZW1lbnRhdGlvbiBv
ZiB0ZXN0aW5nIGZyYW1ld29yayBmb3Igd2sxLgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQ5MjUKLQotICAgICAgICBSZXZpZXdlZCBieSBHeXV5b3Vu
ZyBLaW0uCi0KLSAgICAgICAgVGhlIHJlYXNvbiBvZiBjaGFuZ2luZywgd2FzIHRvIGFkanVzdCBj
dXJyZW50IGltcGxlbWVudGF0aW9uIHRvIHVzZSBndGVzdCBmZWF0dXJlcwotICAgICAgICByZWxh
dGVkIHRvIGNsZWFuaW5nIChTZXRVcCwgVGVhckRvd24pLCBjbGVhbmluZyBjb2RlIGluIHRlcm1z
IG9mIHVzZWxlc3MgbWV0aG9kcwotICAgICAgICBhbmQgbGFzdGx5IHRvIG1ha2UgZnJhbWV3b3Jr
IGVhc2llciB0byB1c2UuCi0KLSAgICAgICAgKiB0ZXN0cy9Vbml0VGVzdFV0aWxzL0VXS1Rlc3RC
YXNlLmNwcDoKLSAgICAgICAgKEVXS1VuaXRUZXN0czo6RVdLVGVzdEJhc2U6OkVXS1Rlc3RCYXNl
KToKLSAgICAgICAgKEVXS1VuaXRUZXN0czo6RVdLVGVzdEJhc2U6OndlYlZpZXcpOiBSZXR1cm5z
IGN1cnJlbnQgd2Vidmlldy4KLSAgICAgICAgKEVXS1VuaXRUZXN0czo6RVdLVGVzdEJhc2U6OlNl
dFVwKToKLSAgICAgICAgQmVmb3JlIHRlc3QgaXMgc3RhcnRlZCwgU2V0VXAgaXMgY2FsbGVkLgot
ICAgICAgICBVc2VkIHRoaXMgdG8gaW5pdGlhbGl6ZSB0ZXN0IHZpZXcuCi0gICAgICAgIChFV0tV
bml0VGVzdHM6OkVXS1Rlc3RCYXNlOjpvbkxvYWRGaW5pc2hlZCk6Ci0gICAgICAgIChFV0tVbml0
VGVzdHM6OkVXS1Rlc3RCYXNlOjp3YWl0VW50aWxMb2FkRmluaXNoZWQpOiBJdCB3YWl0cyB0aWxs
IHRlc3QgcGFnZSB3aWxsIGJlIHByb3Blcmx5IGxvYWRlZC4KLSAgICAgICAgKEVXS1VuaXRUZXN0
czo6RVdLVGVzdEJhc2U6OmxvYWRVcmwpOiBTdGFydHMgbG9hZGluZyB0ZXN0IHBhZ2UuCi0gICAg
ICAgICogdGVzdHMvVW5pdFRlc3RVdGlscy9FV0tUZXN0QmFzZS5oOgotICAgICAgICAqIHRlc3Rz
L1VuaXRUZXN0VXRpbHMvRVdLVGVzdEVudmlyb25tZW50LmNwcDoKLSAgICAgICAgVXNlZCB0byBo
YXZlIGdsb2JhbCBTZXRVcCBhbmQgVGVhckRvd24uCi0gICAgICAgIEdsb2JhbCBTZXRVcCBzdGFy
dHMgaW5pdGlhbGl6YXRpb24gb2Ygd2Via2l0IHdoZXJlYXNlCi0gICAgICAgIGdsb2JhbCBUZWFy
RG93biBzaHV0cyBpdCBkb3duLiBHZW5lcmFsbHkgd2Ugd291bGQgbGlrZSB0byBoYXZlCi0gICAg
ICAgIG9ubHkgb25lIGluaXRpYWxpemF0aW9uIG9mIHdlYmtpdCB3aGlsZSB0ZXN0cyBhcmUgZXhl
Y3V0ZWQuCi0gICAgICAgIChFV0tVbml0VGVzdHMpOgotICAgICAgICAoRVdLVW5pdFRlc3RzOjpF
V0tUZXN0RW52aXJvbm1lbnQ6OkVXS1Rlc3RFbnZpcm9ubWVudCk6Ci0gICAgICAgIChFV0tVbml0
VGVzdHM6OkVXS1Rlc3RFbnZpcm9ubWVudDo6U2V0VXApOiBTdGFydHMgaW5pdGlhbGl6YXRpb24g
b2Ygd2Via2l0LgotICAgICAgICAoRVdLVW5pdFRlc3RzOjpFV0tUZXN0RW52aXJvbm1lbnQ6OlRl
YXJEb3duKTogU2h1dHMgZG93biBvZiB3ZWJraXQuCi0gICAgICAgICogdGVzdHMvVW5pdFRlc3RV
dGlscy9FV0tUZXN0RW52aXJvbm1lbnQuaDoKLSAgICAgICAgKEVXS1VuaXRUZXN0cyk6Ci0gICAg
ICAgIChFV0tUZXN0RW52aXJvbm1lbnQpOgotICAgICAgICAoRVdLVW5pdFRlc3RzOjpFV0tUZXN0
RW52aXJvbm1lbnQ6OnVzZVgxMVdpbmRvdyk6Ci0gICAgICAgICogdGVzdHMvVW5pdFRlc3RVdGls
cy9FV0tUZXN0Vmlldy5jcHA6Ci0gICAgICAgIChFV0tVbml0VGVzdHM6OkVXS1Rlc3RWaWV3OjpF
V0tUZXN0Vmlldyk6Ci0gICAgICAgIChFV0tVbml0VGVzdHM6OkVXS1Rlc3RWaWV3Ojppbml0KTog
U3RhcnRzIGluaXRpYWxpemF0aW9uIG9mIHRlc3Qgdmlldy4KLSAgICAgICAgKiB0ZXN0cy9Vbml0
VGVzdFV0aWxzL0VXS1Rlc3RWaWV3Lmg6Ci0gICAgICAgIChFV0tUZXN0Vmlldyk6Ci0gICAgICAg
ICogdGVzdHMvdGVzdF9ld2tfdmlldy5jcHA6IGFkanVzdGVkIGN1cnJlbnQgdW5pdCB0ZXN0cyB0
byBuZXcgaW1wbGVtZW50YXRpb24uCi0gICAgICAgIChURVNUX0YpOgotICAgICAgICAqIHRlc3Rz
L3Rlc3RfcnVubmVyLmNwcDogZW50cnkgcG9pbnQgb2YgYWxsIHRlc3RzLgotICAgICAgICAocGFy
c2VDdXN0b21Bcmd1bWVudHMpOgotICAgICAgICAobWFpbik6Ci0KLTIwMTItMTAtMDEgIEJyYWR5
IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgotCi0gICAgICAgIFJlbW92ZSB0aGUgU2FmYXJp
IDIgLT4gU2FmYXJpIDMgaWNvbiBkYXRhYmFzZSBpbXBvcnQgY29kZS4KLSAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4MTEzCi0KLSAgICAgICAgUmV2aWV3
ZWQgYnkgTWFjaWVqIFN0YWNob3dpYWsuCi0KLSAgICAgICAgTnVrZSB0aGUgcGVyZm9ybUltcG9y
dCgpIEljb25EYXRhYmFzZUNsaWVudCBtZXRob2QuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9JY29uRGF0YWJhc2VDbGllbnRFZmwuY3BwOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0lj
b25EYXRhYmFzZUNsaWVudEVmbC5oOgotCi0yMDEyLTA5LTI4ICBNaWtoYWlsIFBvemRueWFrb3Yg
IDxtaWtoYWlsLnBvemRueWFrb3ZAaW50ZWwuY29tPgotCi0gICAgICAgIENvZGUgaW5zaWRlIEZy
YW1lTG9hZGVyQ2xpZW50OjpjYW5TaG93TUlNRVR5cGUoKSBpbXBsZW1lbnRhdGlvbnMgY2FuIGJl
IHNoYXJlZCBhbW9uZyBkaWZmZXJlbnQgV0sgcG9ydHMKLSAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3NTQ3Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQWRh
bSBCYXJ0aC4KLQotICAgICAgICBOZXdseSBhZGRlZCBXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5
OjpjYW5TaG93TUlNRVR5cGUoKSBmdW5jdGlvbiBpcyB1c2VkCi0gICAgICAgIGluc2lkZSBXZWJD
b3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6Y2FuU2hvd01JTUVUeXBlKCkuCi0KLSAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJD
b3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6Y2FuU2hvd01JTUVUeXBlKToKLQotMjAxMi0wOS0y
OCAgTWlraGFpbCBQb3pkbnlha292ICA8bWlraGFpbC5wb3pkbnlha292QGludGVsLmNvbT4KLQot
ICAgICAgICBbRUZMXVtEUlRdIEVGTCBEUlQgc2hvdWxkIGRpc2FibGUgdmlzaXRlZCBsaW5rcyB0
cmFja2luZyBieSBkZWZhdWx0Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05Nzg4MQotCi0gICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hy
aXN0aWFuc2VuLgotCi0gICAgICAgIEFkZGVkIGF1eCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6
OnNldFNob3VsZFRyYWNrVmlzaXRlZExpbmtzKCkgZnVuY3Rpb24uCi0KLSAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwOgotICAgICAgICAoRHVtcFJl
bmRlclRyZWVTdXBwb3J0RWZsOjpzZXRTaG91bGRUcmFja1Zpc2l0ZWRMaW5rcyk6Ci0gICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmg6Ci0KLTIwMTItMDkt
MjcgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KLQotICAg
ICAgICBbRUZMXSBObyB3YXkgdG8gZXhpdCB2aWRlbyBmdWxsc2NyZWVuIG1vZGUgb25jZSBlbnRl
cmVkCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzYz
MQotCi0gICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgotCi0g
ICAgICAgIEZpeCBkZWZhdWx0IHRoZW1lIHNvIHRoYXQgd2UgaGF2ZSAyIGZ1bGxzY3JlZW4gYnV0
dG9ucywgb25lCi0gICAgICAgIHRvIGVudGVyIGZ1bGxzY3JlZW4gbW9kZSBhbmQgYW5vdGhlciB0
byBleGl0IGl0LgotCi0gICAgICAgIE5ldyBpY29uIGJ5IEFsZXhhbmRlciBTaGFsYW1vdi4KLQot
ICAgICAgICAqIERlZmF1bHRUaGVtZS93aWRnZXQvbWVkaWFjb250cm9sL2Z1bGxzY3JlZW5idXR0
b24vZW50ZXJmdWxsc2NyZWVuYnV0dG9uLnBuZzogQWRkZWQuCi0gICAgICAgICogRGVmYXVsdFRo
ZW1lL3dpZGdldC9tZWRpYWNvbnRyb2wvZnVsbHNjcmVlbmJ1dHRvbi9leGl0ZnVsbHNjcmVlbmJ1
dHRvbi5wbmc6IEFkZGVkLgotICAgICAgICAqIERlZmF1bHRUaGVtZS93aWRnZXQvbWVkaWFjb250
cm9sL2Z1bGxzY3JlZW5idXR0b24vZnVsbHNjcmVlbl9idXR0b24uZWRjOgotICAgICAgICAqIERl
ZmF1bHRUaGVtZS93aWRnZXQvbWVkaWFjb250cm9sL2Z1bGxzY3JlZW5idXR0b24vZnVsbHNjcmVl
bmJ1dHRvbi5wbmc6IFJlbW92ZWQuCi0KLTIwMTItMDktMjYgIEppbndvbyBTb25nICA8amlud29v
Ny5zb25nQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxdIEZpeCB0aGUgdHlwbyBpbiB0aGUg
ZXdrX3ZpZXdfZnVsbHNjcmVlbl9leGl0KCkKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTk3NjM1Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgR3l1eW91bmcg
S2ltLgotCi0gICAgICAgIEZpeCB0aGUgc2lsbHkgdHlwbyBpbiB0aGUgZXdrX3ZpZXdfZnVsbHNj
cmVlbl9leGl0KCkgQVBJLgotCi0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAg
KGV3a192aWV3X2Z1bGxzY3JlZW5fZXhpdCk6Ci0KLTIwMTItMDktMjUgIEppbndvbyBTb25nICA8
amlud29vNy5zb25nQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxdIEFkZCBmdWxsc2NyZWVu
IHNldC9nZXQgQVBJcyBhbmQgY2FsbGJhY2tzCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05NzQyMQotCi0gICAgICAgIFJldmlld2VkIGJ5IEd5dXlvdW5n
IEtpbS4KLQotICAgICAgICBBZGQgc2V0dGluZyBBUElzIGZvciBKYXZhU2NyaXB0IEZ1bGxzY3Jl
ZW4gQVBJIGFuZCBhbHNvIGFkZCB0d28gY2FsbGJhY2tzIHRvIGV3a192aWV3IEFQSSwKLSAgICAg
ICAgc28gdGhhdCBVSSBjb3VsZCBjdXN0b21pc2UgYmVoYXZpb3Igd2hlbiBmdWxsc2NyZWVuIG1v
ZGUgaXMgcmVxdWVzdGVkLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50
RWZsLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEVmbDo6ZW50ZXJGdWxsU2Ny
ZWVuRm9yRWxlbWVudCk6Ci0gICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRFZmw6OmV4aXRG
dWxsU2NyZWVuRm9yRWxlbWVudCk6Ci0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAg
ICAgKF9Fd2tfVmlld19Qcml2YXRlX0RhdGEpOgotICAgICAgICAoX2V3a192aWV3X3ByaXZfbmV3
KToKLSAgICAgICAgKGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2Z1bGxzY3JlZW5fZ2V0KToKLSAg
ICAgICAgKGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2Z1bGxzY3JlZW5fc2V0KToKLSAgICAgICAg
KGV3a192aWV3X2Z1bGxzY3JlZW5fZW50ZXIpOgotICAgICAgICAoZXdrX3ZpZXdfZnVsbHNjcmVl
bl9leGl0KToKLSAgICAgICAgKiBld2svZXdrX3ZpZXcuaDoKLSAgICAgICAgKiBld2svZXdrX3Zp
ZXdfcHJpdmF0ZS5oOgotICAgICAgICAqIHRlc3RzL3Rlc3RfZXdrX3ZpZXcuY3BwOgotICAgICAg
ICAoZXdrVmlld0VuYWJsZUZ1bGxzY3JlZW5DYik6Ci0gICAgICAgIChURVNUKToKLQotMjAxMi0w
OS0yNSAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+Ci0KLSAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1Mzk3Ci0gICAgICAgIE5lZWQgdG8gbWVy
Z2UgZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0IGFuZCAKLSAgICAgICAgZGlkTmV3Rmly
c3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Ci0gICAgICAgIC1hbmQgY29ycmVzcG9uZGluZy0KLSAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEwNzkxNjgwPgotCi0gICAgICAgIFJldmlld2VkIGJ5IFNh
bSBXZWluaWcuCi0KLSAgICAgICAgUmVtb3ZlIGRpc3BhdGNoRGlkRmlyc3RMYXlvdXQsIAotICAg
ICAgICBkaXNwYXRjaERpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCwgYW5kIAotICAgICAg
ICBkaXNwYXRjaERpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dC4gVGhlaXIgZnVuY3Rp
b25hbGl0eSAKLSAgICAgICAgaXMgbm93IHJlcGxhY2VkIGJ5IGRpc3BhdGNoRGlkTGF5b3V0KExh
eW91dE1pbGVzdG9uZU9wdGlvbnMpCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6
OmRpc3BhdGNoRGlkTGF5b3V0KToKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudEVmbC5oOgotICAgICAgICAoRnJhbWVMb2FkZXJDbGllbnRFZmwpOgotCi0gICAgICAg
IEl0IGlzIG5vdyBuZWNlc3NhcnkgdG8gb3B0IGludG8gZ2V0dGluZyBhbnkgb2YgdGhlIAotICAg
ICAgICAibGF5b3V0IG1pbGVzdG9uZSIgbm90aWZpY2F0aW9ucy4KLSAgICAgICAgKiBld2svZXdr
X3ZpZXcuY3BwOgotICAgICAgICAoX2V3a192aWV3X3ByaXZfbmV3KToKLQotMjAxMi0wOS0yNCAg
RG9taW5payBSw7Z0dHNjaGVzICA8ZG9taW5pay5yb3R0c2NoZXNAaW50ZWwuY29tPgotCi0gICAg
ICAgIFtFRkxdW0RSVF0gRW5hYmxlIFJlZ2lvbnMgc3VwcG9ydAotICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODM4OTcKLQotICAgICAgICBSZXZpZXdlZCBi
eSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KLQotICAgICAgICBBY3RpdmF0aW5nIENTUyBy
ZWdpb25zIGJ5IGRlZmF1bHQgZm9yIEVXSyB2aWV3cy4KLQotICAgICAgICAqIGV3ay9ld2tfdmll
dy5jcHA6IFN3aXRjaCBDU1MgcmVnaW9ucyBvbiBieSBkZWZhdWx0LgotICAgICAgICAoX2V3a192
aWV3X3ByaXZfbmV3KToKLQotMjAxMi0wOS0yMyAgQnl1bmd3b28gTGVlICA8Ync4MC5sZWVAZ21h
aWwuY29tPgotCi0gICAgICAgIEZpeCBidWlsZCB3YXJuaW5ncyA6IC1XdW51c2VkLXBhcmFtZXRl
ciwgLVdwYXJlbnRoZXNlcywgLVd1bmluaXRpYWxpemVkLgotICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTczMDYKLQotICAgICAgICBSZXZpZXdlZCBieSBC
ZW5qYW1pbiBQb3VsYWluLgotCi0gICAgICAgIEZpeCBidWlsZCB3YXJuaW5nIGFib3V0IC1XdW51
c2VkLXBhcmFtZXRlciBvbiBGcmFtZUxvYWRlckNsaWVudEVmbC5jcHAKLSAgICAgICAgYnkgdXNp
bmcgQVNTRVJUX1VOVVNFRCgpIG1hY3JvLgotICAgICAgICBGaXggYnVpbGQgd2FybmluZyBhYm91
ZyAtV3BhcmVudGhlc2VzIG9uIGV3a19mcmFtZS5jcHAgYnkgYWRkaW5nCi0gICAgICAgIGFkZGl0
aW9uYWwgYnJhY2UgZm9yIHRoZSBhc3NpZ24gc3RhdGVtZW50LgotCi0gICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29yZTo6RnJh
bWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMpOgotICAgICAgICAqIGV3
ay9ld2tfZnJhbWUuY3BwOgotICAgICAgICAoZXdrX2ZyYW1lX3Jlc291cmNlc19sb2NhdGlvbl9n
ZXQpOgotCi0yMDEyLTA5LTIxICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBp
bnRlbC5jb20+Ci0KLSAgICAgICAgW0VGTF0gRXZlbnRTZW5kZXIgc2hvdWxkIG1pbWljIENUUkwr
byBlbWFjcyBzaG9ydGN1dAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9OTcyMjQKLQotICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlz
dGlhbnNlbi4KLQotICAgICAgICBGaXggYmFkIHVzZSBvZiB0ZW1wb3Jhcnkgb2JqZWN0IGNhdXNp
bmcgd3JvbmcgZWRpdGluZwotICAgICAgICBjYWxsYmFjayBkdW1waW5nLgotCi0gICAgICAgICog
V2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkVk
aXRvckNsaWVudEVmbDo6c2hvdWxkSW5zZXJ0VGV4dCk6Ci0KLTIwMTItMDktMjAgIEppbndvbyBT
b25nICA8amlud29vNy5zb25nQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxdIENoYW5nZSB0
aGUgbG9nIG1hY3JvIG5hbWVzIHRvIGJlIG1vcmUgY29uc2lzdGVudCB3aXRoIEVJTkEgTE9HCi0g
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzE1OAotCi0g
ICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgotCi0gICAgICAg
IFNvbWUgbG9nIG1hY3JvIG5hbWVzIGluIFdlYktpdDEgYXJlIGluY29uc2lzdGVudCB3aXRoIEVJ
TkEgTE9HIG5hbWVzCi0gICAgICAgIHN1Y2ggYXMgV1JOL0lORiBub3QgV0FSTi9JTkZPLgotCi0g
ICAgICAgICAgI2RlZmluZSBXUk4oLi4uKSBFSU5BX0xPR19ET01fV0FSTihfZXdrX2xvZ19kb20s
IF9fVkFfQVJHU19fKQotICAgICAgICAgICNkZWZpbmUgSU5GKC4uLikgRUlOQV9MT0dfRE9NX0lO
Rk8oX2V3a19sb2dfZG9tLCBfX1ZBX0FSR1NfXykKLQotICAgICAgICBUaGlzIHBhdGNoIGNoYW5n
ZXMgdGhlIHN1Y2ggbmFtZXMgdG8gYmUgY29uc2lzdGVudCB3aXRoIEVJTkEgTE9HJ3MgbmFtZXMu
Ci0KLSAgICAgICAgKiBld2svZXdrX2ZyYW1lLmNwcDoKLSAgICAgICAgKF9ld2tfZnJhbWVfc21h
cnRfcmVzaXplKToKLSAgICAgICAgKGV3a19mcmFtZV9zb3VyY2VfZ2V0KToKLSAgICAgICAgKGV3
a19mcmFtZV91cmlfY2hhbmdlZCk6Ci0gICAgICAgICogZXdrL2V3a19tYWluLmNwcDoKLSAgICAg
ICAgKF9ld2tfaW5pdF9ib2R5KToKLSAgICAgICAgKiBld2svZXdrX3ByaXZhdGUuaDoKLSAgICAg
ICAgKiBld2svZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUuY3BwOgotICAgICAgICAoX2V3a190aWxl
ZF9iYWNraW5nX3N0b3JlX3JlbmRlcik6Ci0gICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3Rv
cmVfcmVjYWxjX3JlbmRlcmVycyk6Ci0gICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVf
c21hcnRfY2FsY3VsYXRlX29mZnNldF9mb3JjZSk6Ci0gICAgICAgIChfZXdrX3RpbGVkX2JhY2tp
bmdfc3RvcmVfc21hcnRfY2FsY3VsYXRlX29mZnNldCk6Ci0gICAgICAgIChld2tfdGlsZWRfYmFj
a2luZ19zdG9yZV9wcmVfcmVuZGVyX3JlbGF0aXZlX3JhZGl1cyk6Ci0gICAgICAgICogZXdrL2V3
a190aWxlZF9tYXRyaXguY3BwOgotICAgICAgICAoZXdrX3RpbGVfbWF0cml4X2ZyZWUpOgotICAg
ICAgICAoZXdrX3RpbGVfbWF0cml4X3RpbGVfZXhhY3RfZ2V0KToKLSAgICAgICAgKF9ld2tfdGls
ZV9tYXRyaXhfc2xpY2VyX3NldHVwKToKLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAg
ICAgICAoX2V3a192aWV3X3NtYXJ0X2FkZF9jb25zb2xlX21lc3NhZ2UpOgotICAgICAgICAoX2V3
a192aWV3X3NtYXJ0X3J1bl9qYXZhc2NyaXB0X2FsZXJ0KToKLSAgICAgICAgKF9ld2tfdmlld19z
bWFydF9ydW5famF2YXNjcmlwdF9jb25maXJtKToKLSAgICAgICAgKF9ld2tfdmlld19zbWFydF9z
aG91bGRfaW50ZXJydXB0X2phdmFzY3JpcHQpOgotICAgICAgICAoX2V3a192aWV3X3NtYXJ0X3J1
bl9qYXZhc2NyaXB0X3Byb21wdCk6Ci0gICAgICAgIChfZXdrX3ZpZXdfc21hcnRfcHJlX3JlbmRl
cl9yZWdpb24pOgotICAgICAgICAoX2V3a192aWV3X3NtYXJ0X3ByZV9yZW5kZXJfcmVsYXRpdmVf
cmFkaXVzKToKLSAgICAgICAgKF9ld2tfdmlld19zbWFydF9wcmVfcmVuZGVyX3N0YXJ0KToKLSAg
ICAgICAgKF9ld2tfdmlld19zbWFydF9wcmVfcmVuZGVyX2NhbmNlbCk6Ci0gICAgICAgIChfZXdr
X3ZpZXdfc21hcnRfZGlzYWJsZV9yZW5kZXIpOgotICAgICAgICAoX2V3a192aWV3X3NtYXJ0X2Vu
YWJsZV9yZW5kZXIpOgotICAgICAgICAoZXdrX3ZpZXdfYmdfY29sb3Jfc2V0KToKLSAgICAgICAg
KGV3a192aWV3X3pvb21fc2V0KToKLSAgICAgICAgKGV3a192aWV3X3pvb21fd2Vha19zZXQpOgot
ICAgICAgICAoZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9zZXQpOgotICAgICAgICAoZXdrX3ZpZXdf
c3RhdHVzYmFyX3RleHRfc2V0KToKLSAgICAgICAgKGV3a192aWV3X2V4Y2VlZGVkX2FwcGxpY2F0
aW9uX2NhY2hlX3F1b3RhKToKLSAgICAgICAgKGV3a192aWV3X2V4Y2VlZGVkX2RhdGFiYXNlX3F1
b3RhKToKLSAgICAgICAgKGV3a192aWV3X3Njcm9sbCk6Ci0gICAgICAgIChld2tfdmlld19wb3B1
cF9uZXcpOgotICAgICAgICAoZXdrX3ZpZXdfcG9wdXBfZGVzdHJveSk6Ci0gICAgICAgIChld2tf
dmlld19wb3B1cF9zZWxlY3RlZF9zZXQpOgotICAgICAgICAoZXdrX3ZpZXdfY29sb3JfY2hvb3Nl
cl9uZXcpOgotICAgICAgICAoZXdrX3ZpZXdfY29sb3JfY2hvb3Nlcl9kZXN0cm95KToKLSAgICAg
ICAgKGV3a192aWV3X2NvbG9yX2Nob29zZXJfY29sb3Jfc2V0KToKLSAgICAgICAgKGV3a192aWV3
X2NvbG9yX2Nob29zZXJfY2hhbmdlZCk6Ci0gICAgICAgIChld2tfdmlld196b29tX3JhbmdlX3Nl
dCk6Ci0gICAgICAgICogZXdrL2V3a192aWV3X3ByaXZhdGUuaDoKLQotMjAxMi0wOS0xOSAgSmlu
d29vIFNvbmcgIDxqaW53b283LnNvbmdAc2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgRml4IHVudXNl
ZCBwYXJhbWV0ZXIgY29tcGlsZSB3YXJuaW5ncyBpbiBXZWJLaXQvV2ViS2l0MgotICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTY3NDIKLQotICAgICAgICBS
ZXZpZXdlZCBieSBHeXV5b3VuZyBLaW0uCi0KLSAgICAgICAgRml4IHVudXNlZCBwYXJhbWV0ZXIg
Y29tcGlsZSB3YXJuaW5nIG1lc3NhZ2VzKC1XdW51c2VkLXBhcmFtZXRlcikgaW4gV2ViS2l0IGR1
cmluZyBFRkwgYnVpbGQuCi0gICAgICAgIFdlYkNvcmUncyB3YXJuaW5nIG1lc3NhZ2VzIHdlcmUg
Zml4ZWQgaW4gcjEyODU3MC4KLSAKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGll
bnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZsOjpjcmVhdGVXaW5k
b3cpOgotICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZsOjptb3VzZURpZE1vdmVPdmVy
RWxlbWVudCk6Ci0gICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRFZmw6OnByaW50KToKLSAg
ICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEVmbDo6cmVhY2hlZE1heEFwcENhY2hlU2l6ZSk6
Ci0gICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRFZmw6OmludmFsaWRhdGVDb250ZW50cyk6
Ci0gICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRFZmw6OmludmFsaWRhdGVSb290Vmlldyk6
Ci0gICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRFZmw6OmludmFsaWRhdGVDb250ZW50c0Fu
ZFJvb3RWaWV3KToKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuY3Bw
OgotICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50RWZsOjpoYW5kbGVJbnB1dE1ldGhvZEtl
eWRvd24pOgotICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50RWZsOjpnZXRHdWVzc2VzRm9y
V29yZCk6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3Bw
OgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkUmVj
ZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZENhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToK
LSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERlY2lkZVBv
bGljeUZvck5ld1dpbmRvd0FjdGlvbik6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNs
aWVudEVmbDo6Y3JlYXRlRnJhbWUpOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGll
bnRFZmw6OmNyZWF0ZUphdmFBcHBsZXRXaWRnZXQpOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVM
b2FkZXJDbGllbnRFZmw6OnNob3VsZFN0b3BMb2FkaW5nRm9ySGlzdG9yeUl0ZW0pOgotICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmNhblNob3dNSU1FVHlwZUFzSFRNTCk6
Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6c2V0VGl0bGUpOgotICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkUmVjZWl2ZUNv
bnRlbnRMZW5ndGgpOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmRp
c3BhdGNoRGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKToKLSAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpzZXRNYWluRG9jdW1lbnRFcnJvcik6Ci0gICAgICAgICog
V2ViQ29yZVN1cHBvcnQvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckVmbC5jcHA6Ci0gICAgICAg
IChGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpzaG93SHVkKToKLSAgICAgICAgKEZ1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXI6OnNldFZvbHVtZSk6Ci0gICAgICAgIChGdWxsc2NyZWVuVmlkZW9D
b250cm9sbGVyOjpzZXRDdXJyZW50VGltZSk6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvSW5z
cGVjdG9yQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6Om5vdGlmeVdlYkluc3BlY3Rv
ckRlc3Ryb3kpOgotICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRTZXR0aW5nc0Vm
bDo6Z2V0UHJvcGVydHkpOgotICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRTZXR0
aW5nc0VmbDo6c2V0UHJvcGVydHkpOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1BsYXRmb3Jt
U3RyYXRlZ2llc0VmbC5jcHA6Ci0gICAgICAgIChQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6OmdldFBs
dWdpbkluZm8pOgotICAgICAgICAqIGV3ay9ld2tfYXV0aF9zb3VwLmNwcDoKLSAgICAgICAgKGV3
a19hdXRoX3NvdXBfZGlhbG9nX2NsYXNzX2luaXQpOgotICAgICAgICAoZXdrX2F1dGhfc291cF9k
aWFsb2dfaW5pdCk6Ci0gICAgICAgIChld2tfYXV0aF9zb3VwX2RpYWxvZ19zZXNzaW9uX2ZlYXR1
cmVfaW5pdCk6Ci0gICAgICAgIChzZXNzaW9uX2F1dGhlbnRpY2F0ZSk6Ci0gICAgICAgICogZXdr
L2V3a19maWxlX2Nob29zZXIuY3BwOgotICAgICAgICAoZXdrX2ZpbGVfY2hvb3Nlcl9hbGxvd3Nf
ZGlyZWN0b3J5X3VwbG9hZF9nZXQpOgotICAgICAgICAqIGV3ay9ld2tfZnJhbWUuY3BwOgotICAg
ICAgICAoZXdrX2ZyYW1lX2ZlZWRfZm9jdXNfb3V0KToKLSAgICAgICAgKGV3a19mcmFtZV92aWV3
X3N0YXRlX3NhdmUpOgotICAgICAgICAoZXdrX2ZyYW1lX3BsdWdpbl9jcmVhdGUpOgotICAgICAg
ICAqIGV3ay9ld2tfanMuY3BwOgotICAgICAgICAoZXdrX2pzX29iamVjdF9uZXcpOgotICAgICAg
ICAoZXdrX2pzX29iamVjdF9mcmVlKToKLSAgICAgICAgKGV3a19qc19vYmplY3Rfdmlld19nZXQp
OgotICAgICAgICAoZXdrX2pzX29iamVjdF9wcm9wZXJ0aWVzX2dldCk6Ci0gICAgICAgIChld2tf
anNfb2JqZWN0X25hbWVfZ2V0KToKLSAgICAgICAgKGV3a19qc19vYmplY3RfaW52b2tlKToKLSAg
ICAgICAgKGV3a19qc19vYmplY3RfdHlwZV9nZXQpOgotICAgICAgICAoZXdrX2pzX29iamVjdF90
eXBlX3NldCk6Ci0gICAgICAgIChld2tfanNfdmFyaWFudF9mcmVlKToKLSAgICAgICAgKGV3a19q
c192YXJpYW50X2FycmF5X2ZyZWUpOgotICAgICAgICAqIGV3ay9ld2tfdGlsZWRfbW9kZWwuY3Bw
OgotICAgICAgICAodGlsZV9hY2NvdW50KToKLSAgICAgICAgKF9ld2tfdGlsZV9hY2NvdW50X2Fs
bG9jYXRlZCk6Ci0gICAgICAgIChfZXdrX3RpbGVfYWNjb3VudF9mcmVlZCk6Ci0gICAgICAgICog
ZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAgKF9ld2tfdmlld19zbWFydF9hZGRfY29uc29sZV9t
ZXNzYWdlKToKLSAgICAgICAgKF9ld2tfdmlld19zbWFydF9ydW5famF2YXNjcmlwdF9hbGVydCk6
Ci0gICAgICAgIChfZXdrX3ZpZXdfc21hcnRfcnVuX2phdmFzY3JpcHRfY29uZmlybSk6Ci0gICAg
ICAgIChfZXdrX3ZpZXdfc21hcnRfc2hvdWxkX2ludGVycnVwdF9qYXZhc2NyaXB0KToKLSAgICAg
ICAgKF9ld2tfdmlld19zbWFydF9ydW5famF2YXNjcmlwdF9wcm9tcHQpOgotICAgICAgICAoX2V3
a192aWV3X3NtYXJ0X21vdmUpOgotICAgICAgICAoX2V3a192aWV3X3NtYXJ0X2NvbnRlbnRzX3Jl
c2l6ZSk6Ci0gICAgICAgIChfZXdrX3ZpZXdfZWRpdG9yX2NvbW1hbmRfc3RyaW5nX2dldCk6Ci0g
ICAgICAgIChld2tfdmlld19wb3B1cF9uZXcpOgotICAgICAgICAoZXdrX3ZpZXdfanNfb2JqZWN0
X2FkZCk6Ci0gICAgICAgIChld2tfdmlld19hY2NlbGVyYXRlZF9jb21wb3NpdGluZ19vYmplY3Rf
Y3JlYXRlKToKLSAgICAgICAgKGV3a192aWV3X2FjY2VsZXJhdGVkX2NvbXBvc2l0aW5nX2NvbnRl
eHRfZ2V0KToKLSAgICAgICAgKGV3a192aWV3X3NldHRpbmdfd2ViX2F1ZGlvX2dldCk6Ci0gICAg
ICAgIChld2tfdmlld19zZXR0aW5nX3dlYl9hdWRpb19zZXQpOgotICAgICAgICAqIGV3ay9ld2tf
dmlld19zaW5nbGUuY3BwOgotICAgICAgICAoX2V3a192aWV3X3NpbmdsZV9zbWFydF9iZ19jb2xv
cl9zZXQpOgotICAgICAgICAqIGV3ay9ld2tfdmlld190aWxlZC5jcHA6Ci0gICAgICAgIChfZXdr
X3ZpZXdfdGlsZWRfdXBkYXRlc19wcm9jZXNzX3ByZSk6Ci0gICAgICAgIChfZXdrX3ZpZXdfdGls
ZWRfY29udGVudHNfc2l6ZV9jaGFuZ2VkX2NiKToKLSAgICAgICAgKF9ld2tfdmlld190aWxlZF9z
bWFydF9iZ19jb2xvcl9zZXQpOgotCi0yMDEyLTA5LTE5ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5y
ZXZpZXcuYm90QGdtYWlsLmNvbT4KLQotICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCBy
MTI4OTk1LgotICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8xMjg5OTUK
LSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3MTE0Ci0K
LSAgICAgICAgQ2F1c2VzIHRoZSBhcGkgdGVzdHMgdG8gc2VnZmF1bHQuIChSZXF1ZXN0ZWQgYnkg
cmFrdWNvIG9uCi0gICAgICAgICN3ZWJraXQpLgotCi0gICAgICAgICogdGVzdHMvVW5pdFRlc3RV
dGlscy9FV0tUZXN0QmFzZS5jcHA6Ci0gICAgICAgIChFV0tVbml0VGVzdHM6OkVXS1Rlc3RCYXNl
Ojppbml0KToKLSAgICAgICAgKEVXS1VuaXRUZXN0czo6RVdLVGVzdEJhc2U6OnNodXRkb3duQWxs
KToKLSAgICAgICAgKEVXS1VuaXRUZXN0czo6RVdLVGVzdEJhc2U6OnN0YXJ0VGVzdCk6Ci0gICAg
ICAgIChFV0tVbml0VGVzdHM6OkVXS1Rlc3RCYXNlOjplbmRUZXN0KToKLSAgICAgICAgKEVXS1Vu
aXRUZXN0czo6RVdLVGVzdEJhc2U6OmNyZWF0ZVRlc3QpOgotICAgICAgICAoRVdLVW5pdFRlc3Rz
KToKLSAgICAgICAgKEVXS1VuaXRUZXN0czo6RVdLVGVzdEJhc2U6OnJ1blRlc3QpOgotICAgICAg
ICAqIHRlc3RzL1VuaXRUZXN0VXRpbHMvRVdLVGVzdEJhc2UuaDoKLSAgICAgICAgKEVXS1VuaXRU
ZXN0cyk6Ci0gICAgICAgIChFV0tUZXN0QmFzZSk6Ci0gICAgICAgICogdGVzdHMvVW5pdFRlc3RV
dGlscy9FV0tUZXN0Vmlldy5jcHA6Ci0gICAgICAgIChFV0tVbml0VGVzdHM6OkVXS1Rlc3RFY29y
ZUV2YXM6OkVXS1Rlc3RFY29yZUV2YXMpOgotICAgICAgICAoRVdLVW5pdFRlc3RzOjpFV0tUZXN0
RWNvcmVFdmFzOjpldmFzKToKLSAgICAgICAgKEVXS1VuaXRUZXN0cyk6Ci0gICAgICAgIChFV0tV
bml0VGVzdHM6OkVXS1Rlc3RFY29yZUV2YXM6OnNob3cpOgotICAgICAgICAoRVdLVW5pdFRlc3Rz
OjpFV0tUZXN0Vmlldzo6RVdLVGVzdFZpZXcpOgotICAgICAgICAoRVdLVW5pdFRlc3RzOjpFV0tU
ZXN0Vmlldzo6aW5pdCk6Ci0gICAgICAgIChFV0tVbml0VGVzdHM6OkVXS1Rlc3RWaWV3OjpzaG93
KToKLSAgICAgICAgKEVXS1VuaXRUZXN0czo6RVdLVGVzdFZpZXc6Om1haW5GcmFtZSk6Ci0gICAg
ICAgIChFV0tVbml0VGVzdHM6OkVXS1Rlc3RWaWV3OjpldmFzKToKLSAgICAgICAgKEVXS1VuaXRU
ZXN0czo6RVdLVGVzdFZpZXc6OmJpbmRFdmVudHMpOgotICAgICAgICAqIHRlc3RzL1VuaXRUZXN0
VXRpbHMvRVdLVGVzdFZpZXcuaDoKLSAgICAgICAgKEVXS1Rlc3RFY29yZUV2YXMpOgotICAgICAg
ICAoRVdLVW5pdFRlc3RzKToKLSAgICAgICAgKEVXS1Rlc3RWaWV3KToKLSAgICAgICAgKiB0ZXN0
cy90ZXN0X2V3a192aWV3LmNwcDoKLSAgICAgICAgKGV3a1ZpZXdFZGl0YWJsZUdldENiKToKLSAg
ICAgICAgKFRFU1QpOgotICAgICAgICAoZXdrVmlld1VyaUdldENiKToKLSAgICAgICAgKiB0ZXN0
cy90ZXN0X3J1bm5lci5jcHA6Ci0gICAgICAgIChtYWluKToKLQotMjAxMi0wOS0xOSAgS3J6eXN6
dG9mIEN6ZWNoICA8ay5jemVjaEBzYW1zdW5nLmNvbT4KLQotICAgICAgICBbRUZMXVtVVF0gUmVm
YWN0b3JpbmcgYW4gaW1wbGVtZW50YXRpb24gb2YgdGVzdGluZyBmcmFtZXdvcmsgZm9yIHdrMS4K
LSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk0OTI1Ci0K
LSAgICAgICAgUmV2aWV3ZWQgYnkgR3l1eW91bmcgS2ltLgotCi0gICAgICAgIFRoZSByZWFzb24g
b2YgY2hhbmdpbmcsIHdhcyB0byBhZGp1c3QgY3VycmVudCBpbXBsZW1lbnRhdGlvbiB0byB1c2Ug
Z3Rlc3QgZmVhdHVyZXMKLSAgICAgICAgcmVsYXRlZCB0byBjbGVhbmluZyAoU2V0VXAsIFRlYXJE
b3duKSwgY2xlYW5pbmcgY29kZSBpbiB0ZXJtcyBvZiB1c2VsZXNzIG1ldGhvZHMKLSAgICAgICAg
YW5kIGxhc3RseSB0byBtYWtlIGZyYW1ld29yayBlYXNpZXIgdG8gdXNlLgotCi0gICAgICAgICog
dGVzdHMvVW5pdFRlc3RVdGlscy9FV0tUZXN0QmFzZS5jcHA6Ci0gICAgICAgIChFV0tVbml0VGVz
dHM6OkVXS1Rlc3RCYXNlOjpFV0tUZXN0QmFzZSk6IEFkZGVkIHRvIGluaXRpYWxpemUgdGVzdCB2
aWV3LgotICAgICAgICAoRVdLVW5pdFRlc3RzOjpFV0tUZXN0QmFzZTo6d2ViVmlldyk6IFJldHVy
bnMgY3VycmVudCB3ZWJ2aWV3LgotICAgICAgICAoRVdLVW5pdFRlc3RzOjpFV0tUZXN0QmFzZTo6
U2V0VXApOgotICAgICAgICBCZWZvcmUgdGVzdCBpcyBzdGFydGVkLCBTZXRVcCBpcyBjYWxsZWQu
Ci0gICAgICAgIFVzZWQgdGhpcyB0byBpbml0aWFsaXplIGVmbCBhbmQgdGVzdCB2aWV3LgotICAg
ICAgICAoRVdLVW5pdFRlc3RzOjpFV0tUZXN0QmFzZTo6VGVhckRvd24pOgotICAgICAgICBUZWFy
RG93biBpcyBjYWxsZWQgYXMgc29vbiBhcyB0ZXN0IGlzIGNvbXBsZXRlZC4KLSAgICAgICAgVXNl
ZCB0aGlzIHRvIHByb3Blcmx5IHNodXRkb3duIGVmbCBhbmQgY2xlYW4gdGVzdCB2aWV3LgotICAg
ICAgICAoRVdLVW5pdFRlc3RzOjpFV0tUZXN0QmFzZTo6b25Mb2FkRmluaXNoZWQpOgotICAgICAg
ICAoRVdLVW5pdFRlc3RzOjpFV0tUZXN0QmFzZTo6d2FpdFVudGlsTG9hZEZpbmlzaGVkKTogSXQg
d2FpdHMgdGlsbCB0ZXN0IHBhZ2Ugd2lsbCBiZSBwcm9wZXJseSBsb2FkZWQuCi0gICAgICAgIChF
V0tVbml0VGVzdHM6OkVXS1Rlc3RCYXNlOjpsb2FkVXJsKTogU3RhcnRzIGxvYWRpbmcgdGVzdCBw
YWdlLgotICAgICAgICAqIHRlc3RzL1VuaXRUZXN0VXRpbHMvRVdLVGVzdEJhc2UuaDoKLSAgICAg
ICAgKiB0ZXN0cy9Vbml0VGVzdFV0aWxzL0VXS1Rlc3RWaWV3LmNwcDoKLSAgICAgICAgKEVXS1Vu
aXRUZXN0czo6RVdLVGVzdFZpZXc6OkVXS1Rlc3RWaWV3KToKLSAgICAgICAgKEVXS1VuaXRUZXN0
czo6RVdLVGVzdFZpZXc6OmluaXQpOiBJbml0aWFsaXplIHRlc3Qgdmlldy4KLSAgICAgICAgKiB0
ZXN0cy9Vbml0VGVzdFV0aWxzL0VXS1Rlc3RWaWV3Lmg6Ci0gICAgICAgIChFV0tUZXN0Vmlldyk6
Ci0gICAgICAgICogdGVzdHMvdGVzdF9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChURVNUX0YpOgot
ICAgICAgICAqIHRlc3RzL3Rlc3RfcnVubmVyLmNwcDoKLSAgICAgICAgKG1haW4pOgotCi0yMDEy
LTA5LTE5ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+Ci0K
LSAgICAgICAgW0VGTF0gRUZMJ3MgRFJUIGRvZXMgbm90IHN1cHBvcnQgb3ZlcnJpZGluZyAnV2Vi
S2l0Q1NTUmVnaW9uc0VuYWJsZWQnIHByZWZlcmVuY2UKLSAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3MTAwCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgR3l1
eW91bmcgS2ltLgotCi0gICAgICAgIEFkZCBEdW1wUmVuZGVyVHJlZSBzdXBwb3J0IG1ldGhvZCB0
byBzZXQgdGhlCi0gICAgICAgICdXZWJLaXRDU1NSZWdpb25zRW5hYmxlZCcgcHJlZmVyZW5jZS4K
LQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHA6
Ci0gICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OnNldENTU1JlZ2lvbnNFbmFibGVk
KToKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuaDoK
LQotMjAxMi0wOS0xMyAgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4gIDxrZW5uZXRoQHdlYmtp
dC5vcmc+Ci0KLSAgICAgICAgRXZhc19PYmplY3QqIGlzIGEgcmVmJ2VkIHN0cnVjdHVyZSwgc28g
dHJlYWQgaXQgYXMgc3VjaAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9OTY2NTkKLQotICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgotCi0gICAg
ICAgIFJlcGxhY2UgT3duUHRyPEV2YXNfT2JqZWN0PiB3aXRoIFJlZlB0ci4KLQotICAgICAgICAq
IHRlc3RzL1VuaXRUZXN0VXRpbHMvRVdLVGVzdFZpZXcuY3BwOgotICAgICAgICAoRVdLVW5pdFRl
c3RzOjpFV0tUZXN0Vmlldzo6aW5pdCk6Ci0gICAgICAgICogdGVzdHMvVW5pdFRlc3RVdGlscy9F
V0tUZXN0Vmlldy5oOgotICAgICAgICAoRVdLVGVzdFZpZXcpOgotCi0yMDEyLTA5LTE0ICBHeXV5
b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgVW5yZXZpZXdl
ZCwgcm9sbGluZyBvdXQgcjEyODUwNy4KLSAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9j
aGFuZ2VzZXQvMTI4NTA3Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05NjY1OQotCi0gICAgICAgIFJldmVydC4gcjEyODUwNyBtYWtlcyB0b28gbWFueSBj
cmFzaGVzIGluIEVGTCBsYXlvdXQgdGVzdCBib3RzLgotCi0gICAgICAgICogdGVzdHMvVW5pdFRl
c3RVdGlscy9FV0tUZXN0Vmlldy5jcHA6Ci0gICAgICAgIChFV0tVbml0VGVzdHM6OkVXS1Rlc3RW
aWV3Ojppbml0KToKLSAgICAgICAgKiB0ZXN0cy9Vbml0VGVzdFV0aWxzL0VXS1Rlc3RWaWV3Lmg6
Ci0gICAgICAgIChFV0tUZXN0Vmlldyk6Ci0KLTIwMTItMDktMTMgIENocmlzdG9waGUgRHVtZXog
IDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KLQotICAgICAgICBbRUZMXSBSZW1vdmUgYSBs
b3Qgb2YgQydpc20gZnJvbSBFd2tfVGlsZWRfTWF0cml4Ci0gICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NjYzOAotCi0gICAgICAgIFJldmlld2VkIGJ5IEd5
dXlvdW5nIEtpbS4KLQotICAgICAgICBSZW1vdmUgYSBsb3Qgb2YgQydpc20gZnJvbSBFd2tfVGls
ZWRfTWF0cml4IGFuZAotICAgICAgICBmaXggdGhlIGNvZGUgc28gdGhhdCBpdCBmb2xsb3dzIGNv
ZGluZyBzdHlsZS4KLQotICAgICAgICAqIGV3ay9ld2tfdGlsZWRfbWF0cml4LmNwcDoKLSAgICAg
ICAgKF9Fd2tfVGlsZV9NYXRyaXgpOgotICAgICAgICAoZXdrX3RpbGVfbWF0cml4X2VudHJ5X2dl
dCk6Ci0gICAgICAgIChfZXdrX3RpbGVfbWF0cml4X2NlbGxfZnJlZSk6Ci0gICAgICAgIChfZXdr
X3RpbGVfbWF0cml4X3RpbGVfZnJlZSk6Ci0gICAgICAgIChld2tfdGlsZV9tYXRyaXhfem9vbV9s
ZXZlbF9zZXQpOgotICAgICAgICAoZXdrX3RpbGVfbWF0cml4X2VudHJ5X25ldyk6Ci0gICAgICAg
IChld2tfdGlsZV9tYXRyaXhfaW52YWxpZGF0ZSk6Ci0gICAgICAgIChld2tfdGlsZV9tYXRyaXhf
ZnJlZSk6Ci0gICAgICAgIChld2tfdGlsZV9tYXRyaXhfcmVzaXplKToKLSAgICAgICAgKGV3a190
aWxlX21hdHJpeF9zaXplX2dldCk6Ci0gICAgICAgIChld2tfdGlsZV9tYXRyaXhfdW51c2VkX2Nh
Y2hlX2dldCk6Ci0gICAgICAgIChld2tfdGlsZV9tYXRyaXhfdGlsZV9leGFjdF9nZXQpOgotICAg
ICAgICAoZXdrX3RpbGVfbWF0cml4X3RpbGVfZXhhY3RfZXhpc3RzKToKLSAgICAgICAgKGV3a190
aWxlX21hdHJpeF90aWxlX25ldyk6Ci0gICAgICAgIChld2tfdGlsZV9tYXRyaXhfdGlsZV9wdXQp
OgotICAgICAgICAoZXdrX3RpbGVfbWF0cml4X3RpbGVfdXBkYXRlc19jbGVhcik6Ci0gICAgICAg
IChfZXdrX3RpbGVfbWF0cml4X3NsaWNlcl9zZXR1cCk6Ci0gICAgICAgIChld2tfdGlsZV9tYXRy
aXhfdXBkYXRlKToKLSAgICAgICAgKGV3a190aWxlX21hdHJpeF91cGRhdGVzX3Byb2Nlc3MpOgot
ICAgICAgICAoZXdrX3RpbGVfbWF0cml4X3VwZGF0ZXNfY2xlYXIpOgotICAgICAgICAoZXdrX3Rp
bGVfbWF0cml4X2RiZyk6Ci0gICAgICAgIChld2tfdGlsZV9tYXRyaXhfZnJlZXplKToKLSAgICAg
ICAgKGV3a190aWxlX21hdHJpeF90aGF3KToKLSAgICAgICAgKiBld2svZXdrX3RpbGVkX21hdHJp
eF9wcml2YXRlLmg6Ci0KLTIwMTItMDktMTMgIEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuICA8
a2VubmV0aEB3ZWJraXQub3JnPgotCi0gICAgICAgIEV2YXNfT2JqZWN0KiBpcyBhIHJlZidlZCBz
dHJ1Y3R1cmUsIHNvIHRyZWFkIGl0IGFzIHN1Y2gKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTk2NjU5Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBC
YXJ0aC4KLQotICAgICAgICBSZXBsYWNlIE93blB0cjxFdmFzX09iamVjdD4gd2l0aCBSZWZQdHIu
Ci0KLSAgICAgICAgKiB0ZXN0cy9Vbml0VGVzdFV0aWxzL0VXS1Rlc3RWaWV3LmNwcDoKLSAgICAg
ICAgKEVXS1VuaXRUZXN0czo6RVdLVGVzdFZpZXc6OmluaXQpOgotICAgICAgICAqIHRlc3RzL1Vu
aXRUZXN0VXRpbHMvRVdLVGVzdFZpZXcuaDoKLSAgICAgICAgKEVXS1Rlc3RWaWV3KToKLQotMjAx
Mi0wOS0xMyAgQ2hyaXN0b3BoZSBEdW1leiAgPGNocmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgot
Ci0gICAgICAgIFtFRkxdIFJlbW92ZSBhIGxvdCBvZiBDJ2lzbSBmcm9tIEV3a19UaWxlZF9CYWNr
aW5nX1N0b3JlCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05NjYzMQotCi0gICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2Vu
LgotCi0gICAgICAgIFJlbW92ZSBhIGxvdCBvZiBDJ2lzbSBmcm9tIEV3a19UaWxlZF9CYWNraW5n
X1N0b3JlIGFuZAotICAgICAgICBmaXggY29kaW5nIHN0eWxlLgotCi0gICAgICAgICogZXdrL2V3
a190aWxlZF9iYWNraW5nX3N0b3JlLmNwcDoKLSAgICAgICAgKF9Fd2tfVGlsZWRfQmFja2luZ19T
dG9yZV9JdGVtKToKLSAgICAgICAgKF9Fd2tfVGlsZWRfQmFja2luZ19TdG9yZV9EYXRhKToKLSAg
ICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV91cGRhdGVzX3Byb2Nlc3MpOgotICAgICAg
ICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX2ZsdXNoKToKLSAgICAgICAgKF9ld2tfdGlsZWRf
YmFja2luZ19zdG9yZV90aWxlX25ldyk6Ci0gICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3Rv
cmVfaXRlbV9yZXNpemUpOgotICAgICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3RpbGVf
YXNzb2NpYXRlKToKLSAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV90aWxlX2Rpc3Nv
Y2lhdGUpOgotICAgICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3RpbGVfZGlzc29jaWF0
ZV9hbGwpOgotICAgICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3ByZV9yZW5kZXJfcmVx
dWVzdF9hZGQpOgotICAgICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3ByZV9yZW5kZXJf
cmVxdWVzdF9kZWwpOgotICAgICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3ByZV9yZW5k
ZXJfcmVxdWVzdF9maXJzdCk6Ci0gICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcHJl
X3JlbmRlcl9yZXF1ZXN0X2NsZWFyKToKLSAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9y
ZV9wcmVfcmVuZGVyX3JlcXVlc3RfcHJvY2Vzc19zaW5nbGUpOgotICAgICAgICAoX2V3a190aWxl
ZF9iYWNraW5nX3N0b3JlX2l0ZW1fcHJvY2Vzc19pZGxlcl9zdGFydCk6Ci0gICAgICAgIChfZXdr
X3RpbGVkX2JhY2tpbmdfc3RvcmVfZGlzYWJsZV9yZW5kZXIpOgotICAgICAgICAoX2V3a190aWxl
ZF9iYWNraW5nX3N0b3JlX2VuYWJsZV9yZW5kZXIpOgotICAgICAgICAoX2V3a190aWxlZF9iYWNr
aW5nX3N0b3JlX2l0ZW1fZmlsbCk6Ci0gICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVf
aXRlbV9hZGQpOgotICAgICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX2l0ZW1fc21vb3Ro
X3NjYWxlX3NldCk6Ci0gICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfY2hhbmdlZCk6
Ci0gICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdmlld19jb2xzX2VuZF9kZWwpOgot
ICAgICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3ZpZXdfY29sc19lbmRfYWRkKToKLSAg
ICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV92aWV3X3Jvd19kZWwpOgotICAgICAgICAo
X2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3ZpZXdfcm93c19yYW5nZV9kZWwpOgotICAgICAgICAo
X2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3ZpZXdfcm93c19hbGxfZGVsKToKLSAgICAgICAgKF9l
d2tfdGlsZWRfYmFja2luZ19zdG9yZV9zbWFydF9tZW1iZXJfZGVsKToKLSAgICAgICAgKF9ld2tf
dGlsZWRfYmFja2luZ19zdG9yZV9zbWFydF9tZW1iZXJfYWRkKToKLSAgICAgICAgKF9ld2tfdGls
ZWRfYmFja2luZ19zdG9yZV9tZW1fZGJnKToKLSAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19z
dG9yZV9zaWdfdXNyKToKLSAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9zbWFydF9h
ZGQpOgotICAgICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3NtYXJ0X2RlbCk6Ci0gICAg
ICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfc21hcnRfc2hvdyk6Ci0gICAgICAgIChfZXdr
X3RpbGVkX2JhY2tpbmdfc3RvcmVfc21hcnRfaGlkZSk6Ci0gICAgICAgIChfZXdrX3RpbGVkX2Jh
Y2tpbmdfc3RvcmVfcmVjYWxjX3JlbmRlcmVycyk6Ci0gICAgICAgIChfZXdrX3RpbGVkX2JhY2tp
bmdfc3RvcmVfc21hcnRfY2FsY3VsYXRlX3NpemUpOgotICAgICAgICAoX2V3a190aWxlZF9iYWNr
aW5nX3N0b3JlX3ZpZXdfZGJnKToKLSAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV92
aWV3X3dyYXBfdXApOgotICAgICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3ZpZXdfd3Jh
cF9kb3duKToKLSAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV92aWV3X3dyYXBfbGVm
dCk6Ci0gICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdmlld193cmFwX3JpZ2h0KToK
LSAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV92aWV3X3JlZmlsbCk6Ci0gICAgICAg
IChfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdmlld19wb3NfYXBwbHkpOgotICAgICAgICAoX2V3
a190aWxlZF9iYWNraW5nX3N0b3JlX3NtYXJ0X2NhbGN1bGF0ZV9vZmZzZXRfZm9yY2UpOgotICAg
ICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3NtYXJ0X2NhbGN1bGF0ZV9vZmZzZXQpOgot
ICAgICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3NtYXJ0X2NhbGN1bGF0ZV9wb3MpOgot
ICAgICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX2ZpbGxfcmVuZGVyZXJzKToKLSAgICAg
ICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9zbWFydF9jYWxjdWxhdGUpOgotICAgICAgICAo
ZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcmVuZGVyX2NiX3NldCk6Ci0gICAgICAgIChld2tfdGls
ZWRfYmFja2luZ19zdG9yZV90aWxlX3VudXNlZF9jYWNoZV9nZXQpOgotICAgICAgICAoX2V3a190
aWxlZF9iYWNraW5nX3N0b3JlX3Njcm9sbF9mdWxsX29mZnNldF9zZXRfaW50ZXJuYWwpOgotICAg
ICAgICAoZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfc2Nyb2xsX2Z1bGxfb2Zmc2V0X3NldCk6Ci0g
ICAgICAgIChld2tfdGlsZWRfYmFja2luZ19zdG9yZV9zY3JvbGxfZnVsbF9vZmZzZXRfYWRkKToK
LSAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV96b29tX3NldF9pbnRlcm5hbCk6Ci0g
ICAgICAgIChld2tfdGlsZWRfYmFja2luZ19zdG9yZV96b29tX3NldCk6Ci0gICAgICAgIChld2tf
dGlsZWRfYmFja2luZ19zdG9yZV96b29tX3dlYWtfc2V0KToKLSAgICAgICAgKGV3a190aWxlZF9i
YWNraW5nX3N0b3JlX2ZpeF9vZmZzZXRzKToKLSAgICAgICAgKGV3a190aWxlZF9iYWNraW5nX3N0
b3JlX3pvb21fd2Vha19zbW9vdGhfc2NhbGVfc2V0KToKLSAgICAgICAgKGV3a190aWxlZF9iYWNr
aW5nX3N0b3JlX2FscGhhX3NldCk6Ci0gICAgICAgIChld2tfdGlsZWRfYmFja2luZ19zdG9yZV91
cGRhdGUpOgotICAgICAgICAoZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdXBkYXRlc19wcm9jZXNz
X3ByZV9zZXQpOgotICAgICAgICAoZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdXBkYXRlc19wcm9j
ZXNzX3Bvc3Rfc2V0KToKLSAgICAgICAgKGV3a190aWxlZF9iYWNraW5nX3N0b3JlX2Rpc2FibGVk
X3VwZGF0ZV9zZXQpOgotICAgICAgICAoZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfZmx1c2gpOgot
ICAgICAgICAoZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcHJlX3JlbmRlcl90aWxlX2FkZCk6Ci0g
ICAgICAgIChld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVfcmVuZGVyX3NwaXJhbF9xdWV1ZSk6
Ci0gICAgICAgIChld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVfcmVuZGVyX3JlZ2lvbik6Ci0g
ICAgICAgIChld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVfcmVuZGVyX3JlbGF0aXZlX3JhZGl1
cyk6Ci0gICAgICAgIChld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVfcmVuZGVyX2NhbmNlbCk6
Ci0gICAgICAgIChld2tfdGlsZWRfYmFja2luZ19zdG9yZV9kaXNhYmxlX3JlbmRlcik6Ci0gICAg
ICAgIChld2tfdGlsZWRfYmFja2luZ19zdG9yZV9lbmFibGVfcmVuZGVyKToKLSAgICAgICAgKiBl
d2svZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcHJpdmF0ZS5oOgotICAgICAgICAoX0V3a19UaWxl
X1N0YXRzKToKLSAgICAgICAgKF9Fd2tfVGlsZSk6Ci0gICAgICAgICogZXdrL2V3a192aWV3X3Rp
bGVkLmNwcDoKLSAgICAgICAgKF9ld2tfdmlld190aWxlZF9yZW5kZXJfY2IpOgotICAgICAgICAo
X2V3a192aWV3X3RpbGVkX3NtYXJ0X2JhY2tpbmdfc3RvcmVfYWRkKToKLQotMjAxMi0wOS0xMyAg
S2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4gIDxrZW5uZXRoQHdlYmtpdC5vcmc+Ci0KLSAgICAg
ICAgW0VGTF1bRFJUXSBJbXBsZW1lbnQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmxheWVyVHJlZUFz
VGV4dAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODIy
OTQKLQotICAgICAgICBSZXZpZXdlZCBieSBHeXV5b3VuZyBLaW0uCi0KLSAgICAgICAgQWRkIGEg
c3VwcG9ydCBtZXRob2QgZm9yIGdldHRpbmcgbGF5ZXJUcmVlQXNUZXh0LgotCi0gICAgICAgICog
V2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcDoKLSAgICAgICAgKER1
bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6bGF5ZXJUcmVlQXNUZXh0KToKLSAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuaDoKLQotMjAxMi0wOS0xMiAgU2hl
cmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+Ci0KLSAgICAgICAgVW5yZXZp
ZXdlZCwgcm9sbGluZyBvdXQgcjEyNzg3Ni4KLSAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9y
Zy9jaGFuZ2VzZXQvMTI3ODc2Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05NjYwMAotCi0gICAgICAgIG1vdXNlIGNsaWNrIGRvZXNuJ3Qgd29yayBmb3Ig
c3BpbiBidXR0b24gaWYgc3BpbiBidXR0b24gaW4KLSAgICAgICAgaWZyYW1lIChSZXF1ZXN0ZWQg
YnkgeW9zaW4gb24gI3dlYmtpdCkuCi0KLSAgICAgICAgKiBld2svZXdrX2ZyYW1lLmNwcDoKLSAg
ICAgICAgKGV3a19mcmFtZV9oaXRfdGVzdF9uZXcpOgotCi0yMDEyLTA5LTEyICBLeXVuZ1RhZSBL
aW0gIDxrdGYua2ltQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxdIFN1cHBvcnQgZG93bmxv
YWQgYXR0cmlidXRlIGZlYXR1cmUKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTk2NDYyCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgR3l1eW91bmcgS2ltLgot
Ci0gICAgICAgIEFkZCBzdWdnZXN0ZWRfbmFtZSBmaWVsZCBvbiBfRXdrX0Rvd25sb2FkIGFuZCBz
ZXQgaXQgb24gc3RhcnREb3dubG9hZAotICAgICAgICB0byBnZXQgc3VnZ2VzdGVkIG5hbWUgcGFz
c2VkIGFzIGEgZG93bmxvYWQgYXR0cmlidXRlLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJD
bGllbnRFZmw6OmRvd25sb2FkKToKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50
RWZsOjpzdGFydERvd25sb2FkKToKLSAgICAgICAgKiBld2svZXdrX3ZpZXcuaDoKLQotMjAxMi0w
OS0xMCAgQ2hyaXN0b3BoZSBEdW1leiAgPGNocmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgotCi0g
ICAgICAgIFtFRkxdIENyZWF0ZSBhIHRvZ2dsZSBidXR0b24gZm9yIGNsb3NlZCBjYXB0aW9ucwot
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTYyNTkKLQot
ICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KLQotICAgICAg
ICBBZGQgY2xvc2VkIGNhcHRpb24gdG9nZ2xpbmcgYnV0dG9uIHRvIGRlZmF1bHQgV2ViS2l0RUZM
Ci0gICAgICAgIHRoZW1lLgotCi0gICAgICAgICogRGVmYXVsdFRoZW1lL2RlZmF1bHQuZWRjOgot
ICAgICAgICAqIERlZmF1bHRUaGVtZS93aWRnZXQvbWVkaWFjb250cm9sL3RvZ2dsZWNhcHRpb25z
YnV0dG9uL2Nsb3NlZGNhcHRpb24ucG5nOiBBZGRlZC4KLSAgICAgICAgKiBEZWZhdWx0VGhlbWUv
d2lkZ2V0L21lZGlhY29udHJvbC90b2dnbGVjYXB0aW9uc2J1dHRvbi9jbG9zZWRjYXB0aW9uX2Rp
c2FibGVkLnBuZzogQWRkZWQuCi0gICAgICAgICogRGVmYXVsdFRoZW1lL3dpZGdldC9tZWRpYWNv
bnRyb2wvdG9nZ2xlY2FwdGlvbnNidXR0b24vdG9nZ2xlX2NhcHRpb25zX2J1dHRvbi5lZGM6IEFk
ZGVkLgotCi0yMDEyLTA5LTA5ICBFbWlsIEEgRWtsdW5kICA8ZWFlQGNocm9taXVtLm9yZz4KLQot
ICAgICAgICBSZW5hbWUgTm9kZTo6Z2V0UmVjdC9nZXRQaXhlbFNuYXBwZWRSZWN0IGFuZCByZW1v
dmUgQ29udGFpbmVyTm9kZTo6Z2V0UmVjdAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODE0MTMKLQotICAgICAgICBSZXZpZXdlZCBieSBEYXZpZCBIeWF0
dC4KLQotICAgICAgICBVcGRhdGUgZXdrX2ZyYW1lIHRvIGNhbGwgcGl4ZWxTbmFwcGVkQm91bmRp
bmdCb3guCi0KLSAgICAgICAgKiBld2svZXdrX2ZyYW1lLmNwcDoKLSAgICAgICAgKGV3a19mcmFt
ZV9mb2N1c2VkX2VsZW1lbnRfZ2VvbWV0cnlfZ2V0KToKLQotMjAxMi0wOS0wNyAgQmVuamFtaW4g
UG91bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNvbT4KLQotICAgICAgICBSZW5hbWUgdGhlIHVzdHJp
bmcoKSBhY2Nlc3NvciB0byBzdHJpbmcoKQotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9OTU5MTkKLQotICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBH
YXJlbi4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVm
bC5jcHA6Ci0gICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OnNlbmRXZWJJbnRlbnRS
ZXNwb25zZSk6Ci0gICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OmRlbGl2ZXJXZWJJ
bnRlbnQpOgotICAgICAgICBBc2xvIHVwZGF0ZSB0aGUgY29kZSBmcm9tIHRoZSBVU3RyaW5nLT5T
dHJpbmcgY29udmVyc2lvbiB0aHJvdWdoIFN0cmluZ0ltcGwuCi0KLTIwMTItMDktMDcgIENocmlz
dG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KLQotICAgICAgICBbRUZM
XSBVc2Ugc2FtZSBkZWZhdWx0IG1pbmltdW0gbG9naWNhbCBmb250IHNpemUgaW4gRFJUIGFuZCBX
VFIKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk2MTE2
Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgTWFydGluIFJvYmluc29uLgotCi0gICAgICAgIEFkZCBE
UlQgaGVscGVyIGZ1bmN0aW9uIHRvIHNldCB0aGUgbWluaW11bSBsb2dpY2FsCi0gICAgICAgIGZv
bnQgc2l6ZSBzZXR0aW5nLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRy
ZWVTdXBwb3J0RWZsLmNwcDoKLSAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6c2V0
TWluaW11bUxvZ2ljYWxGb250U2l6ZSk6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJl
bmRlclRyZWVTdXBwb3J0RWZsLmg6Ci0KLTIwMTItMDktMDcgIEFsbGFuIFNhbmRmZWxkIEplbnNl
biAgPGFsbGFuLmplbnNlbkBub2tpYS5jb20+Ci0KLSAgICAgICAgU2ltcGxpZnkgaGl0VGVzdFJl
c3VsdEF0UG9pbnQgYW5kIG5vZGVzRnJvbVJlY3QgQVBJcwotICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU3MjAKLQotICAgICAgICBSZXZpZXdlZCBieSBB
bnRvbmlvIEdvbWVzLgotCi0gICAgICAgIFVwZGF0ZSBjYWxscyB0byBuZXcgQVBJLgotCi0gICAg
ICAgICogZXdrL2V3a19mcmFtZS5jcHA6Ci0gICAgICAgIChld2tfZnJhbWVfaGl0X3Rlc3RfbmV3
KToKLQotMjAxMi0wOS0wNyAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29t
PgotCi0gICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMjc4MzkuCi0gICAgICAgIGh0
dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzEyNzgzOQotICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTA2MDMKLQotICAgICAgICBUaGlzIHBhdGNo
IHdhcyBsYW5kZWQgd2l0aCB3cm9uZyBpbXBsZW1lbnRhdGlvbiBhbmQgcG9saWN5LgotCi0gICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsLmNwcDoK
LSAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6Tm90aWZp
Y2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsKToKLSAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlv
blByZXNlbnRlckNsaWVudEVmbDo6cmVxdWVzdFBlcm1pc3Npb24pOgotICAgICAgICAoV2ViQ29y
ZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpjaGVja1Blcm1pc3Npb24pOgotICAg
ICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpjYW5jZWxSZXF1
ZXN0c0ZvclBlcm1pc3Npb24pOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L05vdGlmaWNhdGlv
blByZXNlbnRlckNsaWVudEVmbC5oOgotICAgICAgICAoTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xp
ZW50RWZsKToKLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoX2V3a192aWV3
X3ByaXZfbmV3KToKLSAgICAgICAgKiBld2svZXdrX3ZpZXcuaDoKLSAgICAgICAgKiBld2svZXdr
X3ZpZXdfcHJpdmF0ZS5oOgotCi0yMDEyLTA5LTA3ICBLaWhvbmcgS3dvbiAgPGtpaG9uZy5rd29u
QHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxdIFN1cHBvcnQgdGhlIHBlcm1pc3Npb24gZnVu
Y3Rpb24gb2YgdGhlIFdlYiBOb3RpZmljYXRpb24uCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDYwMwotCi0gICAgICAgIFJldmlld2VkIGJ5IEd5dXlv
dW5nIEtpbS4KLQotICAgICAgICBJbXBsZW1lbnQgcGVybWlzc2lvbiByZWxhdGVkIGZ1bmN0aW9u
cyBvZiBXZWIgTm90aWZpY2F0aW9ucy4KLSAgICAgICAgY2hlY2tQZXJtaXNzaW9uIGZvciBOb3Rp
ZmljYXRpb24ucGVybWlzc2lvbkxldmVsKCkuCi0gICAgICAgIHJlcXVlc3RQZXJtaXNzaW9uIGZv
ciBOb3RpZmljYXRpb24ucmVxdWVzdFBlcm1pc3Npb24oKS4KLSAgICAgICAgSW4gYWRkaXRpb24s
IGlmIHRoZSBhcHBsaWNhdGlvbihsaWtlIGEgYnJvd3NlcikgaGFzIHBlcm1pdHRlZCBkb21haW5z
IGFscmVhZHksCi0gICAgICAgIGl0IGNhbiBiZSBjYWNoZWQgdXNpbmcgZXdrX3ZpZXdfbm90aWZp
Y2F0aW9uX3Blcm1pc3Npb25zX3N0b3JlLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvTm90
aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6Ok5vdGlm
aWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZs
KToKLSAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6cmVx
dWVzdFBlcm1pc3Npb24pOgotICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVy
Q2xpZW50RWZsOjpjaGVja1Blcm1pc3Npb24pOgotICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0
aW9uUHJlc2VudGVyQ2xpZW50RWZsOjphZGRUb1Blcm1pc3Npb25DYWNoZSk6Ci0gICAgICAgIChX
ZWJDb3JlKToKLSAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVm
bDo6c2V0UGVybWlzc2lvbik6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9u
UHJlc2VudGVyQ2xpZW50RWZsLmg6Ci0gICAgICAgIChXZWJDb3JlKToKLSAgICAgICAgKE5vdGlm
aWNhdGlvblByZXNlbnRlckNsaWVudEVmbCk6Ci0gICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRp
b25QcmVzZW50ZXJDbGllbnRFZmw6OnJlcXVlc3RQZXJtaXNzaW9uKToKLSAgICAgICAgKFdlYkNv
cmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6Y2FuY2VsUmVxdWVzdHNGb3JQZXJt
aXNzaW9uKToKLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoX2V3a192aWV3
X3ByaXZfbmV3KToKLSAgICAgICAgKGV3a192aWV3X25vdGlmaWNhdGlvbl9wZXJtaXNzaW9uX3N0
b3JlKToKLSAgICAgICAgKGV3a192aWV3X25vdGlmaWNhdGlvbl9wZXJtaXNzaW9uc19zZXQpOgot
ICAgICAgICAoZXdrX3ZpZXdfbm90aWZpY2F0aW9uX3Blcm1pc3Npb25fcmVxdWVzdCk6Ci0gICAg
ICAgICogZXdrL2V3a192aWV3Lmg6Ci0gICAgICAgICogZXdrL2V3a192aWV3X3ByaXZhdGUuaDoK
LQotMjAxMi0wOS0wNSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgotCi0gICAgICAgIFBh
cnQgMiBvZiByZW1vdmluZyBQbGF0Zm9ybVN0cmluZy5oLCByZW1vdmUgUGxhdGZvcm1TdHJpbmcu
aAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU5MzEK
LQotICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgotCi0gICAgICAgIFJlbW92ZSBQbGF0
Zm9ybVN0cmluZy5oCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwu
Y3BwOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEVmbC5jcHA6Ci0K
LTIwMTItMDktMDYgIEthbmdpbCBIYW4gIDxrYW5naWwuaGFuQHNhbXN1bmcuY29tPgotCi0gICAg
ICAgIFtFRkxdIFJlbW92ZSB1bm5lY2Vzc2FyeSBsb2dpYyBpbiBld2tfZnJhbWVfc291cmNlX2dl
dC4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1ODI4
Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCi0KLSAg
ICAgICAgUmVtb3ZlZCB1bm5lY2Vzc2FyeSBsb2dpYyB0aGF0IGNoZWNrcyBpZiA8aHRtbD4gdGFn
IGV4aXN0cyBpbiBkb2N1bWVudC4KLSAgICAgICAgV2ViS2l0IGF1dG9tYXRpY2FsbHkgZmlsbCBv
dXQgPGh0bWw+PC9odG1sPiB0YWdzIGlmIHRoZXkgYXJlIG5vdCBleGlzdGVkLgotCi0gICAgICAg
ICogZXdrL2V3a19mcmFtZS5jcHA6Ci0gICAgICAgIChld2tfZnJhbWVfc291cmNlX2dldCk6Ci0K
LTIwMTItMDktMDUgIEthbmdpbCBIYW4gIDxrYW5naWwuaGFuQHNhbXN1bmcuY29tPgotCi0gICAg
ICAgIFtFRkxdIFJlbW92ZSAnKz0nIHVzYWdlIGluIFN0cmluZwotICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU4MDgKLQotICAgICAgICBSZXZpZXdlZCBi
eSBCZW5qYW1pbiBQb3VsYWluLgotCi0gICAgICAgIFJlcGxhY2VkIHVzZSBvZiBTdHJpbmcgb3Bl
cmF0b3IgJys9JyB3aXRoIFN0cmluZ0J1aWxkZXIuYXBwZW5kKigpIGluIG9yZGVyIHRvIGFkb3B0
IGVmZmljaWVudCBTdHJpbmcgY29uY2F0ZW5hdGlvbi4KLQotICAgICAgICAqIGV3ay9ld2tfZnJh
bWUuY3BwOgotICAgICAgICAoZXdrX2ZyYW1lX3NvdXJjZV9nZXQpOiBSZW1vdmVkIHVubmVjZXNz
YXJ5IHN0cmxlbiB1c2FnZS4KLQotMjAxMi0wOS0wNSAgS2F1c3R1YmggQXRyYXdhbGthciAgPGth
dXN0dWJoQG1vdG9yb2xhLmNvbT4KLQotICAgICAgICBbRFJUXSBMVEM6OiBNb3ZlIHByaW50aW5n
IHJlbGF0ZWQgQVBJcyBmcm9tIExheW91dFRlc3RDb250cm9sbGVyIHRvIEludGVybmFscwotICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTI3MzUKLQotICAg
ICAgICBSZXZpZXdlZCBieSBIYWppbWUgTW9yaXRhLgotCi0gICAgICAgIE1vdmUgbnVtYmVyT2ZQ
YWdlcywgcGFnZVByb3BlcnR5ICYgcGFnZVNpemVBbmRNYXJnaW5zSW5QaXhlbHMgaW4gSW50ZXJu
YWxzIGFuZCByZW1vdmUgZHVwbGljYXRlZCBjb2RlIGZyb20gRHVtcHJlbmRlclRyZWUgJiBXZWJr
aXRUZXN0UnVubmVyLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVT
dXBwb3J0RWZsLmNwcDoKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1
cHBvcnRFZmwuaDoKLQotMjAxMi0wOS0wNCAgTWljaGHFgiBQYWt1xYJhIHZlbCBSdXRrYSAgPG0u
cGFrdWxhQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxdIENvbnRleHQgbWVudSByZXN0b3Jl
LiAKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0MTc5
Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgR3l1eW91bmcgS2ltLgotCi0gICAgICAgIEFkZHMgY29u
dGV4dCBtZW51IHN1cHBvcnQgZm9yIEVGTCBwb3J0IHVzaW5nIG5vbi1DUk9TU19QTEFURk9STV9D
T05URVhUX01FTlVTCi0gICAgICAgIGFwcHJvYWNoLCB0aGUgc2FtZSBhcyB1c2VkIGluIFdlYktp
dDIuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9Db250ZXh0TWVudUNsaWVudEVmbC5jcHA6
IEFkZGVkLgotICAgICAgICAoV2ViQ29yZSk6Ci0gICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVu
dUNsaWVudEVmbDo6Y29udGV4dE1lbnVEZXN0cm95ZWQpOgotICAgICAgICAoV2ViQ29yZTo6Q29u
dGV4dE1lbnVDbGllbnRFZmw6OmdldEN1c3RvbU1lbnVGcm9tRGVmYXVsdEl0ZW1zKToKLSAgICAg
ICAgKFdlYkNvcmU6OkNvbnRleHRNZW51Q2xpZW50RWZsOjpjb250ZXh0TWVudUl0ZW1TZWxlY3Rl
ZCk6Ci0gICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVudUNsaWVudEVmbDo6ZG93bmxvYWRVUkwp
OgotICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDbGllbnRFZmw6Omxvb2tVcEluRGljdGlv
bmFyeSk6Ci0gICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVudUNsaWVudEVmbDo6c3BlYWspOgot
ICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDbGllbnRFZmw6OmlzU3BlYWtpbmcpOgotICAg
ICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDbGllbnRFZmw6OnN0b3BTcGVha2luZyk6Ci0gICAg
ICAgIChXZWJDb3JlOjpDb250ZXh0TWVudUNsaWVudEVmbDo6c2VhcmNoV2l0aEdvb2dsZSk6Ci0g
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ29udGV4dE1lbnVDbGllbnRFZmwuaDogQWRkZWQuCi0g
ICAgICAgIChXZWJDb3JlKToKLSAgICAgICAgKENvbnRleHRNZW51Q2xpZW50RWZsKToKLSAgICAg
ICAgKiBld2svZXdrX2NvbnRleHRtZW51LmNwcDogUmVtb3ZlZCBld2tfY29udGV4dF9tZW51X2N1
c3RvbWl6ZSBpbXBsZW1lbnRhdGlvbi4KLSAgICAgICAgKGV3a19jb250ZXh0X21lbnVfZGVzdHJv
eSk6IEFkZGVkIGZyZWVpbmcgY29udGV4dCBtZW51LiAKLSAgICAgICAgKGV3a19jb250ZXh0X21l
bnVfbmV3KTogQWRkZWQgZmlsbGluZyBld2tfY29udGV4dG1lbnUgbGlzdC4KLSAgICAgICAgKGV3
a19jb250ZXh0X21lbnVfaXRlbV9hcHBlbmQpOgotICAgICAgICAqIGV3ay9ld2tfY29udGV4dG1l
bnVfcHJpdmF0ZS5oOiBSZW1vdmVkIGV3a19jb250ZXh0X21lbnVfY3VzdG9taXplIGFuZCBjaGFu
Z2VkIGV3a19jb250ZXh0X21lbnVfbmV3IGRlZmluaXRpb24uCi0gICAgICAgICogZXdrL2V3a192
aWV3LmNwcDoKLSAgICAgICAgKF9Fd2tfVmlld19Qcml2YXRlX0RhdGEpOgotICAgICAgICAoX2V3
a192aWV3X3ByaXZfbmV3KToKLSAgICAgICAgKF9ld2tfdmlld19wcml2X2RlbCk6Ci0gICAgICAg
IChld2tfdmlld19jb250ZXh0X21lbnVfZm9yd2FyZF9ldmVudCk6Ci0KLTIwMTItMDktMDQgIFJ5
dWFuIENob2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxdIERyb3Ag
ZGVmYXVsdCB0aGVtZSBjb25jZXB0Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05NDc3OAotCi0gICAgICAgIFJldmlld2VkIGJ5IEd5dXlvdW5nIEtpbS4K
LQotICAgICAgICAqIGV3ay9ld2tfdmlldy5oOgotICAgICAgICBVcGRhdGVkIGRveHlnZW4gZG9j
dW1lbnQgbm90IHRvIG1lbnRpb24gZGVmYXVsdCB0aGVtZS4KLQotMjAxMi0wOS0wMyAgSmlud29v
IFNvbmcgIDxqaW53b283LnNvbmdAc2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW0VGTF0gRml4IGVf
ZGJ1c19zaHV0ZG93bigpIGVycm9yIHdoZW4gZXhpdGluZyB0aGUgTWluaWJyb3dzZXIKLSAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NjM2Ci0KLSAgICAg
ICAgUmV2aWV3ZWQgYnkgR3l1eW91bmcgS2ltLgotCi0gICAgICAgIEludm9rZSBzdG9wVXBkYXRp
bmcoKSBpbiB0aGUgZGVzdHJ1Y3RvciBvZiBCYXR0ZXJ5Q2xpbmV0RWZsKCkKLSAgICAgICAgdG8g
Y2FsbCBlX3VraXRfc2h1dGRvd24oKSBhbmQgZV9kYnVzX3NodXRkb3duKCkgaWYgYW5kIHdoZW4g
Ci0gICAgICAgIHN0b3BVcGRhdGluZygpIGhhcyBub3QgYmVlbiBjYWxsZWQgZXhwbGljaXRseS4K
LQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0JhdHRlcnlDbGllbnRFZmwuY3BwOgotICAgICAg
ICAoQmF0dGVyeUNsaWVudEVmbDo6fkJhdHRlcnlDbGllbnRFZmwpOgotICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0JhdHRlcnlDbGllbnRFZmwuaDoKLSAgICAgICAgKEJhdHRlcnlDbGllbnRFZmwp
OgotCi0yMDEyLTA5LTAzICBKaW53b28gU29uZyAgPGppbndvbzcuc29uZ0BzYW1zdW5nLmNvbT4K
LQotICAgICAgICBbRUZMXSBVc2UgV2ViS2l0VmVyc2lvbi5oIHRvIGdldCB2ZXJzaW9uIGluZm9y
bWF0aW9uCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05
NTY2OQotCi0gICAgICAgIFJldmlld2VkIGJ5IEd5dXlvdW5nIEtpbS4KLQotICAgICAgICBVc2Ug
V0VCS0lUX01BSk9SX1ZFUlNJT04gYW5kIFdFQktJVF9NSU5PUl9WRVJTSU9OIAotICAgICAgICBp
biB0aGUgV2ViS2l0VmVyc2lvbi5oCi0KLSAgICAgICAgUmVsb2NhdGUgdGhlIFN0b3JhZ2VUcmFj
a2VyLmggdG8ga2VlcCB0aGUgc29ydGVkIG9yZGVyLgotCi0gICAgICAgICogZXdrL2V3a19zZXR0
aW5ncy5jcHA6Ci0gICAgICAgIChld2tfc2V0dGluZ3NfZGVmYXVsdF91c2VyX2FnZW50X2dldCk6
Ci0KLTIwMTItMDktMDEgIEppbndvbyBTb25nICA8amlud29vNy5zb25nQHNhbXN1bmcuY29tPgot
Ci0gICAgICAgIFtFRkxdIFJlZmFjdG9yaW5nIHRoZSBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwK
LSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NTQ0Ci0K
LSAgICAgICAgUmV2aWV3ZWQgYnkgR3l1eW91bmcgS2ltLgotCi0gICAgICAgIFRoZXJlIGFyZSBs
b3RzIG9mIHJlcGVhdGVkIGNvZGVzIGZvciBnZXR0aW5nIHRoZSBXZWJDb3JlOjpGcmFtZSAKLSAg
ICAgICAgYW5kIFdlYkNvcmU6OlBhZ2UuIFRvIHJlZHVjZSB0aGVzZSBkdXBsaWNhdGlvbnMsIHNp
bXBsZSBtYWNyb3MKLSAgICAgICAgYXJlIGFkZGVkLgotCi0gICAgICAgIE5vIG5ldyB0ZXN0cywg
anVzdCByZWZhY3RvcmluZy4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJU
cmVlU3VwcG9ydEVmbC5jcHA6Ci0gICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OmFj
dGl2ZUFuaW1hdGlvbnNDb3VudCk6Ci0gICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6
OmNhbGxTaG91bGRDbG9zZU9uV2ViVmlldyk6Ci0gICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBv
cnRFZmw6OmNsZWFyRnJhbWVOYW1lKToKLSAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEVm
bDo6Y2xlYXJPcGVuZXIpOgotICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjplbGVt
ZW50RG9lc0F1dG9Db21wbGV0ZUZvckVsZW1lbnRXaXRoSWQpOgotICAgICAgICAoRHVtcFJlbmRl
clRyZWVTdXBwb3J0RWZsOjpmcmFtZUNoaWxkcmVuKToKLSAgICAgICAgKER1bXBSZW5kZXJUcmVl
U3VwcG9ydEVmbDo6ZnJhbWVQYXJlbnQpOgotICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0
RWZsOjpsYXlvdXRGcmFtZSk6Ci0gICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6Om51
bWJlck9mUGFnZXMpOgotICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpwYWdlU2l6
ZUFuZE1hcmdpbnNJblBpeGVscyk6Ci0gICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6
OnBhZ2VQcm9wZXJ0eSk6Ci0gICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OnBhdXNl
QW5pbWF0aW9uKToKLSAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6cGF1c2VUcmFu
c2l0aW9uKToKLSAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6cGVuZGluZ1VubG9h
ZEV2ZW50Q291bnQpOgotICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpyZW5kZXJU
cmVlRHVtcCk6Ci0gICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OnJlc3BvbnNlTWlt
ZVR5cGUpOgotICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpzZWxlY3Rpb25SZWN0
YW5nbGUpOgotICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpzdWl0YWJsZURSVEZy
YW1lTmFtZSk6Ci0gICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OnNldERlZmVyc0xv
YWRpbmcpOgotICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpzZXRMb2Fkc1NpdGVJ
Y29uc0lnbm9yaW5nSW1hZ2VMb2FkaW5nU2V0dGluZyk6Ci0gICAgICAgIChEdW1wUmVuZGVyVHJl
ZVN1cHBvcnRFZmw6OmFkZFVzZXJTY3JpcHQpOgotICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBw
b3J0RWZsOjpjbGVhclVzZXJTY3JpcHRzKToKLSAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9y
dEVmbDo6YWRkVXNlclN0eWxlU2hlZXQpOgotICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0
RWZsOjpjbGVhclVzZXJTdHlsZVNoZWV0cyk6Ci0gICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBv
cnRFZmw6OmV4ZWN1dGVDb3JlQ29tbWFuZEJ5TmFtZSk6Ci0gICAgICAgIChEdW1wUmVuZGVyVHJl
ZVN1cHBvcnRFZmw6OmZpbmRTdHJpbmcpOgotICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0
RWZsOjpzZXRDU1NHcmlkTGF5b3V0RW5hYmxlZCk6Ci0gICAgICAgIChEdW1wUmVuZGVyVHJlZVN1
cHBvcnRFZmw6OmlzQ29tbWFuZEVuYWJsZWQpOgotICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBw
b3J0RWZsOjpzZXRTbWFydEluc2VydERlbGV0ZUVuYWJsZWQpOgotICAgICAgICAoRHVtcFJlbmRl
clRyZWVTdXBwb3J0RWZsOjpzZXRTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKToKLSAg
ICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6ZXZhbHVhdGVJbldlYkluc3BlY3Rvcik6
Ci0gICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OmV2YWx1YXRlU2NyaXB0SW5Jc29s
YXRlZFdvcmxkKToKLSAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6Z2xvYmFsQ29u
dGV4dFJlZkZvckZyYW1lKToKLSAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6c2V0
SW50ZXJhY3RpdmVGb3JtVmFsaWRhdGlvbkVuYWJsZWQpOgotICAgICAgICAoRHVtcFJlbmRlclRy
ZWVTdXBwb3J0RWZsOjpzZXRWYWxpZGF0aW9uTWVzc2FnZVRpbWVyTWFnbmlmaWNhdGlvbik6Ci0g
ICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OnNldEF1dGhvckFuZFVzZXJTdHlsZXNF
bmFibGVkKToKLSAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6c2V0Q29tcG9zaXRp
b24pOgotICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpoYXNDb21wb3NpdGlvbik6
Ci0gICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OmNvbXBvc2l0aW9uUmFuZ2UpOgot
ICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpjb25maXJtQ29tcG9zaXRpb24pOgot
ICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpmaXJzdFJlY3RGb3JDaGFyYWN0ZXJS
YW5nZSk6Ci0gICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OnNlbGVjdGVkUmFuZ2Up
OgotCi0yMDEyLTA4LTMxICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRl
bC5jb20+Ci0KLSAgICAgICAgW0VGTF0gQWRkIHByb3BlciBzdXBwb3J0IGZvciBuYXZpZ2F0b3Iu
b25MaW5lIGFuZCBhc3NvY2lhdGVkIGV2ZW50cwotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU1MzIKLQotICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRo
IFJvaGRlIENocmlzdGlhbnNlbi4KLQotICAgICAgICBSZW1vdmUgZXdrX25ldHdvcmtfc3RhdGVf
bm90aWZpZXJfb25saW5lX3NldCgpIEFQSSBzaW5jZQotICAgICAgICB0aGUgRUZMIHBvcnQgbm8g
bG9uZ2VyIHJlbGllcyBvbiB0aGUgY2xpZW50IGFwcGxpY2F0aW9uIHRvCi0gICAgICAgIHByb3Zp
ZGUgaXQgd2l0aCB0aGUgb25saW5lIHN0YXRlLgotCi0gICAgICAgICogZXdrL2V3a19uZXR3b3Jr
LmNwcDoKLSAgICAgICAgKiBld2svZXdrX25ldHdvcmsuaDoKLQotMjAxMi0wOC0zMSAgSmlud29v
IFNvbmcgIDxqaW53b283LnNvbmdAc2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW0VGTF0gU2ltcGxp
ZnkgRnJhbWVMb2FkZXJDbGluZXRFZmwgYnkgYWRkaW5nIGEgcHJpdmF0ZSBtZXRob2QuCi0gICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTQ0NAotCi0gICAg
ICAgIFJldmlld2VkIGJ5IEd5dXlvdW5nIEtpbS4KLQotICAgICAgICBJbiB0aGUgRnJhbWVMb2Fk
ZXJDbGllbnRFZmwsIHRoZSBjb2RlcyB3aGljaCBjaGVja3MgdGhhdCAKLSAgICAgICAgaWYgY3Vy
cmVudCBmcmFtZSBpcyBtYWluIGZyYW1lIGFyZSBmcmVxdWVudGx5IHVzZWQuCi0gICAgICAgIFRo
aXMgcGF0Y2ggYWRkcyBhIHByaXZhdGUgbWV0aG9kIGFuZCByZXBsYWNlcyB0aG9zZSBjb2RlcyAK
LSAgICAgICAgd2l0aCB0aGUgbWV0aG9kIHRvIHNpbXBsaWZ5LgotCi0gICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29yZTo6RnJh
bWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5QYWdlKToK
LSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZFJlY2Vp
dmVJY29uKToKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRj
aERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKToKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVy
Q2xpZW50RWZsOjpkaXNwYXRjaERpZFJlY2VpdmVUaXRsZSk6Ci0gICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRDb21taXRMb2FkKToKLSAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExv
YWQpOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OnRyYW5zaXRpb25U
b0NvbW1pdHRlZEZvck5ld1BhZ2UpOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50RWZsLmg6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6
aXNMb2FkaW5nTWFpbkZyYW1lKToKLQotMjAxMi0wOC0zMCAgQmVuamFtaW4gUG91bGFpbiAgPGJw
b3VsYWluQGFwcGxlLmNvbT4KLQotICAgICAgICBSZXBsYWNlIEpTQzo6VVN0cmluZyBieSBXVEY6
OlN0cmluZwotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTUyNzEKLQotICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KLQotICAgICAgICBS
ZXBsYWNlIFVTdHJpbmcgYnkgU3RyaW5nLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVt
cFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcDoKLSAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9y
dEVmbDo6c2VuZFdlYkludGVudFJlc3BvbnNlKToKLSAgICAgICAgKiBld2svZXdrX2ZyYW1lLmNw
cDoKLSAgICAgICAgKGV3a19mcmFtZV9zY3JpcHRfZXhlY3V0ZSk6Ci0KLTIwMTItMDgtMjkgIEth
bWlsIEJsYW5rICA8ay5ibGFua0BzYW1zdW5nLmNvbT4KLQotICAgICAgICBbRUZMXSBBZGQgc2V0
dGluZyBBUEkgZm9yIGFsbG93IHVuaXZlcnNhbC9maWxlIGFjY2VzcyBmcm9tIGZpbGUgVVJMcy4K
LSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgzMTIxCi0K
LSAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCi0KLSAgICAgICAgTWFrZSBpdCBwb3Nz
aWJsZSB0byBlbmFibGUgYWxsb3cgdW5pdmVyc2FsL2ZpbGUgYWNjZXNzIGZyb20gZmlsZSBVUkxz
LgotICAgICAgICBEZWZhdWx0IHZhbHVlIGZvciBib3RoIHNldHRpbmdzIGlzIHRydWUuCi0KLSAg
ICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoX0V3a19WaWV3X1ByaXZhdGVfRGF0
YSk6Ci0gICAgICAgIChfZXdrX3ZpZXdfcHJpdl9uZXcpOgotICAgICAgICAoZXdrX3ZpZXdfc2V0
dGluZ19hbGxvd191bml2ZXJzYWxfYWNjZXNzX2Zyb21fZmlsZV91cmxzX3NldCk6IEZ1bmN0aW9u
IHNldHMgaWYgbG9jYWxseSBsb2FkZWQgZG9jdW1lbnRzCi0gICAgICAgIGFyZSBhbGxvd2VkIHRv
IGFjY2VzcyByZW1vdGUgdXJscy4KLSAgICAgICAgKGV3a192aWV3X3NldHRpbmdfYWxsb3dfdW5p
dmVyc2FsX2FjY2Vzc19mcm9tX2ZpbGVfdXJsc19nZXQpOgotICAgICAgICAoZXdrX3ZpZXdfc2V0
dGluZ19hbGxvd19maWxlX2FjY2Vzc19mcm9tX2ZpbGVfdXJsc19zZXQpOiBGdW5jdGlvbiBzZXRz
IGlmIGxvY2FsbHkgbG9hZGVkIGRvY3VtZW50cwotICAgICAgICBhcmUgYWxsb3dlZCB0byBhY2Nl
c3Mgb3RoZXIgbG9jYWwgdXJscy4KLSAgICAgICAgKGV3a192aWV3X3NldHRpbmdfYWxsb3dfZmls
ZV9hY2Nlc3NfZnJvbV9maWxlX3VybHNfZ2V0KToKLSAgICAgICAgKiBld2svZXdrX3ZpZXcuaDoK
LQotMjAxMi0wOC0yOSAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3VuZy5jb20+Ci0KLSAg
ICAgICAgW0VGTF0gQWRkICpleHBsaWNpdCoga2V5d29yZCB0byBjb25zdHJ1Y3RvcnMgaW4gV2Vi
Q29yZVN1cHBvcnQKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTk1MzA3Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgS2VudGFybyBIYXJhLgotCi0gICAgICAg
IEFkZGVkIGV4cGxpY2l0IGtleXdvcmQgaW4gY29uc3RydWN0b3JzIGluIG9yZGVyIHRvIGF2b2lk
IGltcGxpY2l0IHR5cGUgY29udmVyc2lvbi4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nv
bG9yQ2hvb3NlckVmbC5oOgotICAgICAgICAoQ29sb3JDaG9vc2VyRWZsKToKLSAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9Qb3B1cE1lbnVFZmwuaDoKLSAgICAgICAgKFBvcHVwTWVudUVmbCk6Ci0g
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51RWZsLmg6Ci0gICAgICAgIChT
ZWFyY2hQb3B1cE1lbnVFZmwpOgotCi0yMDEyLTA4LTI5ICBSeXVhbiBDaG9pICA8cnl1YW4uY2hv
aUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBbRUZMXSBNb3ZlIHNldmVyYWwgZmlsZXMgdG8gcmVt
b3ZlIHdlYmtpdDEgZGVwZW5kZW5jeSBmcm9tIFdlYkNvcmUuCi0gICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTI2NAotCi0gICAgICAgIFJldmlld2VkIGJ5
IEd5dXlvdW5nIEtpbS4KLQotICAgICAgICBDb2xvckNob29zZXJFZmwuY3BwLCBQb3B1cE1lbnVF
ZmwuY3BwIGFuZCBTZWFyY2hQb3B1cE1lbnVFZmwuY3BwIGFyZSBXZWJLaXQxL0VmbAotICAgICAg
ICBzcGVjaWZpYyBmaWxlcyBhbmQgdGhleSBjYW4gbm90IGJlIHNoYXJlZCB3aXRoIFdlYktpdDIv
RWZsLgotCi0gICAgICAgIEluIG9yZGVyIHRvIHJlbW92ZSBXZWJLaXQgZGVwZW5kZW5jeSBmcm9t
IFdlYkNvcmUsIHRoaXMgcGF0Y2ggbW92ZXMgdGhlbQotICAgICAgICB0byBXZWJLaXQvZWZsL1dl
YkNvcmVTdXBwb3J0LgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ29sb3JDaG9vc2VyRWZs
LmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9Db2xvckNob29z
ZXJFZmwuY3BwLgotICAgICAgICAoV2ViQ29yZSk6Ci0gICAgICAgIChXZWJDb3JlOjpDb2xvckNo
b29zZXJFZmw6OkNvbG9yQ2hvb3NlckVmbCk6Ci0gICAgICAgIChXZWJDb3JlOjpDb2xvckNob29z
ZXJFZmw6On5Db2xvckNob29zZXJFZmwpOgotICAgICAgICAoV2ViQ29yZTo6Q29sb3JDaG9vc2Vy
RWZsOjpzZXRTZWxlY3RlZENvbG9yKToKLSAgICAgICAgKFdlYkNvcmU6OkNvbG9yQ2hvb3NlckVm
bDo6ZW5kQ2hvb3Nlcik6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ29sb3JDaG9vc2VyRWZs
Lmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvQ29sb3JDaG9vc2Vy
RWZsLmguCi0gICAgICAgIChXZWJDb3JlKToKLSAgICAgICAgKENvbG9yQ2hvb3NlckVmbCk6Ci0g
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvUG9wdXBNZW51RWZsLmNwcDogUmVuYW1lZCBmcm9tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9Qb3B1cE1lbnVFZmwuY3BwLgotICAgICAgICAoV2Vi
Q29yZSk6Ci0gICAgICAgIChXZWJDb3JlOjpQb3B1cE1lbnVFZmw6OlBvcHVwTWVudUVmbCk6Ci0g
ICAgICAgIChXZWJDb3JlOjpQb3B1cE1lbnVFZmw6On5Qb3B1cE1lbnVFZmwpOgotICAgICAgICAo
V2ViQ29yZTo6UG9wdXBNZW51RWZsOjpzaG93KToKLSAgICAgICAgKFdlYkNvcmU6OlBvcHVwTWVu
dUVmbDo6aGlkZSk6Ci0gICAgICAgIChXZWJDb3JlOjpQb3B1cE1lbnVFZmw6OnVwZGF0ZUZyb21F
bGVtZW50KToKLSAgICAgICAgKFdlYkNvcmU6OlBvcHVwTWVudUVmbDo6ZGlzY29ubmVjdENsaWVu
dCk6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvUG9wdXBNZW51RWZsLmg6IFJlbmFtZWQgZnJv
bSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUG9wdXBNZW51RWZsLmguCi0gICAgICAgIChX
ZWJDb3JlKToKLSAgICAgICAgKFBvcHVwTWVudUVmbCk6Ci0gICAgICAgIChXZWJDb3JlOjpQb3B1
cE1lbnVFZmw6OmNsaWVudCk6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBN
ZW51RWZsLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9TZWFy
Y2hQb3B1cE1lbnVFZmwuY3BwLgotICAgICAgICAoV2ViQ29yZSk6Ci0gICAgICAgIChXZWJDb3Jl
OjpTZWFyY2hQb3B1cE1lbnVFZmw6OlNlYXJjaFBvcHVwTWVudUVmbCk6Ci0gICAgICAgIChXZWJD
b3JlOjpTZWFyY2hQb3B1cE1lbnVFZmw6OnBvcHVwTWVudSk6Ci0gICAgICAgIChXZWJDb3JlOjpT
ZWFyY2hQb3B1cE1lbnVFZmw6OnNhdmVSZWNlbnRTZWFyY2hlcyk6Ci0gICAgICAgIChXZWJDb3Jl
OjpTZWFyY2hQb3B1cE1lbnVFZmw6OmxvYWRSZWNlbnRTZWFyY2hlcyk6Ci0gICAgICAgIChXZWJD
b3JlOjpTZWFyY2hQb3B1cE1lbnVFZmw6OmVuYWJsZWQpOgotICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1NlYXJjaFBvcHVwTWVudUVmbC5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZWZsL1NlYXJjaFBvcHVwTWVudUVmbC5oLgotICAgICAgICAoV2ViQ29yZSk6Ci0gICAg
ICAgIChTZWFyY2hQb3B1cE1lbnVFZmwpOgotCi0yMDEyLTA4LTI4ICBTZW9ranUgS3dvbiAgPHNl
b2tqdS5rd29uQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxdIEFkZCBzdXBwb3J0IGZvciBs
b2NhbGl6YXRpb24gdG8gdGhlIFdlYiBJbnNwZWN0b3IKLSAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkyOTYxCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgR3l1
eW91bmcgS2ltLgotCi0gICAgICAgIEltcGxlbWVudCBJbnNwZWN0b3JGcm9udGVuZENsaWVudEVm
bDo6bG9jYWxpemVkU3RyaW5nc1VSTCgpCi0gICAgICAgIHRvIHJldHVybiB0aGUgVVJMIG9mIHRo
ZSBsb2NhbGl6ZWRTdHJpbmdzLmpzLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvSW5zcGVj
dG9yQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNsaWVudEVmbDo6
b3Blbkluc3BlY3RvckZyb250ZW5kKToKLSAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNsaWVu
dEVmbDo6aW5zcGVjdG9yRmlsZXNQYXRoKToKLSAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZy
b250ZW5kQ2xpZW50RWZsOjpsb2NhbGl6ZWRTdHJpbmdzVVJMKToKLQotMjAxMi0wOC0yOCAgU2hl
cmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+Ci0KLSAgICAgICAgVW5yZXZp
ZXdlZCwgcm9sbGluZyBvdXQgcjEyNjkxNC4KLSAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9y
Zy9jaGFuZ2VzZXQvMTI2OTE0Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05NTIzOQotCi0gICAgICAgIGl0IGJyZWFrcyBldmVyeXRoaW5nIGFuZCBmaXhl
cyBub3RoaW5nIChSZXF1ZXN0ZWQgYnkgcGl6bG8gb24KLSAgICAgICAgI3dlYmtpdCkuCi0KLSAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwOgotICAg
ICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpldmFsdWF0ZVNjcmlwdEluSXNvbGF0ZWRX
b3JsZCk6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzRWZsLmNw
cDoKLSAgICAgICAgKFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6Z2V0UGx1Z2luSW5mbyk6Ci0gICAg
ICAgICogZXdrL2V3a19pbnRlbnQuY3BwOgotICAgICAgICAoZXdrX2ludGVudF9leHRyYV9nZXQp
OgotCi0yMDEyLTA4LTI4ICBDYWlvIE1hcmNlbG8gZGUgT2xpdmVpcmEgRmlsaG8gIDxjYWlvLm9s
aXZlaXJhQG9wZW5ib3NzYS5vcmc+Ci0KLSAgICAgICAgUmVuYW1lIGZpcnN0L3NlY29uZCB0byBr
ZXkvdmFsdWUgaW4gSGFzaE1hcCBpdGVyYXRvcnMKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTgyNzg0Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBT
ZWlkZWwuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRF
ZmwuY3BwOgotICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpldmFsdWF0ZVNjcmlw
dEluSXNvbGF0ZWRXb3JsZCk6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJh
dGVnaWVzRWZsLmNwcDoKLSAgICAgICAgKFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6Z2V0UGx1Z2lu
SW5mbyk6Ci0gICAgICAgICogZXdrL2V3a19pbnRlbnQuY3BwOgotICAgICAgICAoZXdrX2ludGVu
dF9leHRyYV9nZXQpOgotCi0yMDEyLTA4LTI4ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3Bo
ZS5kdW1lekBpbnRlbC5jb20+Ci0KLSAgICAgICAgW0VGTF0gV2ViS2l0IEVGTCB1cGRhdGVzIHZp
ZXcgb24gSFRUUCAyMDQgcmVzcG9uc2UKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTk1MTk5Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hk
ZSBDaHJpc3RpYW5zZW4uCi0KLSAgICAgICAgSWdub3JlIEhUVFAgcmVzcG9uc2VzIHdoaWNoIGhh
dmUgc3RhdHVzIGNvZGUgZXF1YWwKLSAgICAgICAgdG8gMjA0IChObyBDb250ZW50KS4KLQotICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcDoKLSAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERlY2lkZVBvbGljeUZvclJl
c3BvbnNlKToKLQotMjAxMi0wOC0yOCAgVGhpYWdvIE1hcmNvcyBQLiBTYW50b3MgIDx0aGlhZ28u
c2FudG9zQGludGVsLmNvbT4KLQotICAgICAgICBbRUZMXSBSZW5hbWUga25vYiBpbWFnZXMgdG8g
dGh1bWIgb24gdGhlIGRlZmF1bHQgdGhlbWUKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTk1MTg2Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBS
b2hkZSBDaHJpc3RpYW5zZW4uCi0KLSAgICAgICAgV2ViS2l0IHJlZWZlcnMgdG8gdGhlc2UgaGFu
ZGxlcyBhcyB0aHVtYiBpbnN0ZWFkIG9mIGtub2IuIExldCdzIG1ha2UKLSAgICAgICAgaXQgY29o
ZXJlbnQgb24gRUZMLgotCi0gICAgICAgICogRGVmYXVsdFRoZW1lL3dpZGdldC9zbGlkZXIvc2xp
ZGVyLmVkYzoKLSAgICAgICAgKiBEZWZhdWx0VGhlbWUvd2lkZ2V0L3NsaWRlci9zbGlkZXJfdGh1
bWJfaC5wbmc6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2VmbC9EZWZhdWx0VGhlbWUvd2lk
Z2V0L3NsaWRlci9zbGlkZXJfa25vYl9oLnBuZy4KLSAgICAgICAgKiBEZWZhdWx0VGhlbWUvd2lk
Z2V0L3NsaWRlci9zbGlkZXJfdGh1bWJfcHJlc3NfaC5wbmc6IFJlbmFtZWQgZnJvbSBTb3VyY2Uv
V2ViS2l0L2VmbC9EZWZhdWx0VGhlbWUvd2lkZ2V0L3NsaWRlci9zbGlkZXJfa25vYl9wcmVzc19o
LnBuZy4KLSAgICAgICAgKiBEZWZhdWx0VGhlbWUvd2lkZ2V0L3NsaWRlci9zbGlkZXJfdGh1bWJf
cHJlc3Nfdi5wbmc6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2VmbC9EZWZhdWx0VGhlbWUv
d2lkZ2V0L3NsaWRlci9zbGlkZXJfa25vYl9wcmVzc192LnBuZy4KLSAgICAgICAgKiBEZWZhdWx0
VGhlbWUvd2lkZ2V0L3NsaWRlci9zbGlkZXJfdGh1bWJfdi5wbmc6IFJlbmFtZWQgZnJvbSBTb3Vy
Y2UvV2ViS2l0L2VmbC9EZWZhdWx0VGhlbWUvd2lkZ2V0L3NsaWRlci9zbGlkZXJfa25vYl92LnBu
Zy4KLQotMjAxMi0wOC0yOCAgVGhpYWdvIE1hcmNvcyBQLiBTYW50b3MgIDx0aGlhZ28uc2FudG9z
QGludGVsLmNvbT4KLQotICAgICAgICBbRUZMXSBSYW5nZSBpbnB1dCBpZ25vcmVzIHBhZGRpbmcK
LSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk0NTk1Ci0K
LSAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCi0KLSAgICAg
ICAgVXBkYXRlZCBkZWZhdWx0IHRoZW1lIHRvIHBhaW50IHRoZSBzbGlkZXIgdGh1bWIgaW4gYSBk
aWZmZXJlbnQgc3RlcC4KLSAgICAgICAgVGhpcyB3YXMgZG9uZSBieSBzcGxpdHRpbmcgdGhlIHRo
dW1iIGludG8gYSBzZXBhcmF0ZWQgZ3JvdXAuCi0KLSAgICAgICAgKiBEZWZhdWx0VGhlbWUvd2lk
Z2V0L3NsaWRlci9zbGlkZXIuZWRjOgotCi0yMDEyLTA4LTI3ICBTaGVyaWZmIEJvdCAgPHdlYmtp
dC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KLQotICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91
dCByMTI2ODM2LgotICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8xMjY4
MzYKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1MTYz
Ci0KLSAgICAgICAgQnJva2UgYWxsIEFwcGxlIHBvcnRzLCBFRkwsIGFuZCBRdC4gKFJlcXVlc3Rl
ZCBieSB0a2VudCBvbgotICAgICAgICAjd2Via2l0KS4KLQotICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHA6Ci0gICAgICAgIChEdW1wUmVuZGVyVHJl
ZVN1cHBvcnRFZmw6OmV2YWx1YXRlU2NyaXB0SW5Jc29sYXRlZFdvcmxkKToKLSAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNFZmwuY3BwOgotICAgICAgICAoUGxhdGZv
cm1TdHJhdGVnaWVzRWZsOjpnZXRQbHVnaW5JbmZvKToKLSAgICAgICAgKiBld2svZXdrX2ludGVu
dC5jcHA6Ci0gICAgICAgIChld2tfaW50ZW50X2V4dHJhX2dldCk6Ci0KLTIwMTItMDgtMjcgIENh
aW8gTWFyY2VsbyBkZSBPbGl2ZWlyYSBGaWxobyAgPGNhaW8ub2xpdmVpcmFAb3BlbmJvc3NhLm9y
Zz4KLQotICAgICAgICBSZW5hbWUgZmlyc3Qvc2Vjb25kIHRvIGtleS92YWx1ZSBpbiBIYXNoTWFw
IGl0ZXJhdG9ycwotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODI3ODQKLQotICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KLQotICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHA6Ci0gICAgICAgIChE
dW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OmV2YWx1YXRlU2NyaXB0SW5Jc29sYXRlZFdvcmxkKToK
LSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNFZmwuY3BwOgotICAg
ICAgICAoUGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpnZXRQbHVnaW5JbmZvKToKLSAgICAgICAgKiBl
d2svZXdrX2ludGVudC5jcHA6Ci0gICAgICAgIChld2tfaW50ZW50X2V4dHJhX2dldCk6Ci0KLTIw
MTItMDgtMjcgIE1pa2hhaWwgUG96ZG55YWtvdiAgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5j
b20+Ci0KLSAgICAgICAgUmVuYW1lIFJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyIEFQSSB0byBOYXZp
Z2F0b3JDb250ZW50VXRpbHMKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTk0OTIwCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KLQotICAg
ICAgICBSZW5hbWluZyB3aGF0ZXZlciBSZWdpc3RlclByb3RvY29sSGFuZGxlci1wcmVmaXhlZCB0
byBOYXZpZ2F0b3JDb250ZW50VXRpbHMtcHJlZml4ZWQuCi0gICAgICAgIFJlZ2lzdGVyUHJvdG9j
b2xIYW5kbGVyQ2xpZW50RWZsIGlzIHJlbmFtZWQgdG8gTmF2aWdhdG9yQ29udGVudFV0aWxzQ2xp
ZW50RWZsLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvTmF2aWdhdG9yQ29udGVudFV0aWxz
Q2xpZW50RWZsLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBw
b3J0L1JlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyQ2xpZW50RWZsLmNwcC4KLSAgICAgICAgKFdlYkNv
cmUpOgotICAgICAgICAoV2ViQ29yZTo6Y3VzdG9tSGFuZGxlckRhdGFDcmVhdGUpOgotICAgICAg
ICAoV2ViQ29yZTo6Y3VzdG9tSGFuZGxlckRhdGFEZWxldGUpOgotICAgICAgICAoV2ViQ29yZTo6
TmF2aWdhdG9yQ29udGVudFV0aWxzQ2xpZW50RWZsOjpjcmVhdGUpOgotICAgICAgICAoV2ViQ29y
ZTo6TmF2aWdhdG9yQ29udGVudFV0aWxzQ2xpZW50RWZsOjpOYXZpZ2F0b3JDb250ZW50VXRpbHND
bGllbnRFZmwpOgotICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yQ29udGVudFV0aWxzQ2xpZW50
RWZsOjpyZWdpc3RlclByb3RvY29sSGFuZGxlcik6Ci0gICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0
b3JDb250ZW50VXRpbHNDbGllbnRFZmw6OmlzUHJvdG9jb2xIYW5kbGVyUmVnaXN0ZXJlZCk6Ci0g
ICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JDb250ZW50VXRpbHNDbGllbnRFZmw6OnVucmVnaXN0
ZXJQcm90b2NvbEhhbmRsZXIpOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L05hdmlnYXRvckNv
bnRlbnRVdGlsc0NsaWVudEVmbC5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdC9lZmwvV2Vi
Q29yZVN1cHBvcnQvUmVnaXN0ZXJQcm90b2NvbEhhbmRsZXJDbGllbnRFZmwuaC4KLSAgICAgICAg
KE5hdmlnYXRvckNvbnRlbnRVdGlsc0NsaWVudEVmbCk6Ci0gICAgICAgIChXZWJDb3JlOjpOYXZp
Z2F0b3JDb250ZW50VXRpbHNDbGllbnRFZmw6On5OYXZpZ2F0b3JDb250ZW50VXRpbHNDbGllbnRF
ZmwpOgotICAgICAgICAqIGV3ay9ld2tfY3VzdG9tX2hhbmRsZXIuY3BwOgotICAgICAgICAqIGV3
ay9ld2tfY3VzdG9tX2hhbmRsZXJfcHJpdmF0ZS5oOgotICAgICAgICAqIGV3ay9ld2tfdmlldy5j
cHA6Ci0gICAgICAgIChfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKToKLSAgICAgICAgKF9ld2tfdmll
d19wcml2X25ldyk6Ci0KLTIwMTItMDgtMjMgIFJ5dWFuIENob2kgIDxyeXVhbi5jaG9pQHNhbXN1
bmcuY29tPgotCi0gICAgICAgIFtFRkxdIFJlbW92ZSBld2tfdGlsZV9tYXRyaXhfdGlsZV91cGRh
dGUuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MzQz
NwotCi0gICAgICAgIFJldmlld2VkIGJ5IEd5dXlvdW5nIEtpbS4KLQotICAgICAgICAqIGV3ay9l
d2tfdGlsZWRfbWF0cml4LmNwcDoKLSAgICAgICAgUmVtb3ZlZCBld2tfdGlsZV9tYXRyaXhfdGls
ZV91cGRhdGUgYW5kIGV3a190aWxlX21hdHJpeF90aWxlX3VwZGF0ZV9mdWxsCi0gICAgICAgIHdo
aWNoIGFyZSBkZWFkIGNvZGUuCi0gICAgICAgICogZXdrL2V3a190aWxlZF9tYXRyaXhfcHJpdmF0
ZS5oOiBEaXR0by4KLQotMjAxMi0wOC0yMSAgS2lob25nIEt3b24gIDxraWhvbmcua3dvbkBzYW1z
dW5nLmNvbT4KLQotICAgICAgICBbRUZMXVtHVEtdW0JsYWNrQmVycnldIEZpeCBidWlsZCBlcnJv
ciBpbiB0aGUgRGV2aWNlT3JpZW50YXRpb25DbGllbnQKLSAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk0NTg2Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgS2Vu
dGFybyBIYXJhLgotCi0gICAgICAgIEZpeCBidWlsZCBlcnJvciBpbiB0aGUgRGV2aWNlT3JpZW50
YXRpb25DbGllbnRFZmwuY3BwLgotICAgICAgICBJdCBpcyBvY2N1cmVkIGJlY2F1c2UgRGV2aWNl
T3JpZW50YXRpb24gaXMgY2hhbmdlZCB0byBEZXZpY2VPcmllbnRhdGlvbkRhdGEgaW4gdGhlIFdl
YkNvcmUuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EZXZpY2VPcmllbnRhdGlvbkNsaWVu
dEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbkNsaWVudEVmbDo6
bGFzdE9yaWVudGF0aW9uKToKLQotMjAxMi0wOC0yMCAgVGhpYWdvIE1hcmNvcyBQLiBTYW50b3Mg
IDx0aGlhZ28uc2FudG9zQGludGVsLmNvbT4KLQotICAgICAgICBSZWdyZXNzaW9uKHIxMjQ5NDUp
OiBCdWlsZCBpcyBicm9rZW4gd2hlbiB0b3VjaCBldmVudHMgaXMgZGlzYWJsZWQKLSAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk0NDY2Ci0KLSAgICAgICAg
UmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCi0KLSAgICAgICAgQWRkZWQg
bWlzc2luZyBndWFyZHMgYXJvdW5kIHRvdWNoIGV2ZW50cyBjb2RlLgotCi0gICAgICAgICogZXdr
L2V3a190b3VjaF9ldmVudC5jcHA6Ci0gICAgICAgICogZXdrL2V3a190b3VjaF9ldmVudF9wcml2
YXRlLmg6Ci0KLTIwMTItMDgtMTcgIFRoaWFnbyBNYXJjb3MgUC4gU2FudG9zICA8dGhpYWdvLnNh
bnRvc0BpbnRlbC5jb20+Ci0KLSAgICAgICAgW0VGTF0gQ2hhbmdlIGZvbnQgZmFtaWx5L3Njcmlw
dCBvbiBsYXlvdXQgdGVzdHMgY2F1c2VzIGZsYWtpbmVzcwotICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQzMjcKLQotICAgICAgICBSZXZpZXdlZCBieSBL
ZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KLQotICAgICAgICBBbHdheXMgc2V0IHRoZSBmb250
IG9uIFdlYkNvcmUgZXZlbiBpZiB0aGUgZm9udCBmYW1pbHkgaXMgdGhlIHNhbWUuIEl0Ci0gICAg
ICAgIGhhcyB0byBiZSBkb25lIGJlY2F1c2UgdGhlIHNjcmlwdCB2YWx1ZSBtaWdodCBoYXZlIGFs
c28gY2hhbmdlZC4KLSAgICAgICAgU2V0dGluZ3M6OnNldCpGb250RmFtaWx5KCkgaGFzIGFuIGlt
cGxpY2l0IFVTY3JpcHRDb2RlCi0gICAgICAgIHBhcmFtZXRlciB0aGF0IHdpbGwgc2V0IHRoZSBz
Y3JpcHQgYmFjayB0byB0aGUgZGVmYXVsdHMuCi0KLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3Bw
OgotICAgICAgICAoZXdrX3ZpZXdfZm9udF9mYW1pbHlfbmFtZV9zZXQpOgotCi0yMDEyLTA4LTE0
ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+Ci0KLSAgICAgICAgRGVsZXRlIEZyYW1l
Ojpkb21XaW5kb3coKSBhbmQgRnJhbWU6OmV4aXN0aW5nRE9NV2luZG93KCkKLSAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkzOTkwCi0KLSAgICAgICAgUmV2
aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVu
ZGVyVHJlZVN1cHBvcnRFZmwuY3BwOgotICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZs
OjpwZW5kaW5nVW5sb2FkRXZlbnRDb3VudCk6Ci0gICAgICAgICogZXdrL2V3a19mcmFtZS5jcHA6
Ci0gICAgICAgIChld2tfZnJhbWVfaW50ZW50X2RlbGl2ZXIpOgotCi0yMDEyLTA4LTEzICBUb20g
U2VwZXogIDx0c2VwZXpAY2hyb21pdW0ub3JnPgotCi0gICAgICAgIFtjaHJvbWl1bV0gcmVsZWFz
ZSBGcmFtZUxvYWRlckNsaWVudEltcGw6Om1fcGx1Z2luV2lkZ2V0IHJlZnB0ciB1cG9uIFBsdWdp
biBEb2N1bWVudCBkZXRhY2guCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05MzI4MwotCi0gICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgotCi0g
ICAgICAgIENoYW5nZSB0aGUgY2xpZW50IHJlZGlyZWN0RGF0YVRvUGx1Z2luIG1ldGhvZChzKSB0
byBleHBlY3QgdGhlIHBvc3NpYmlsaXR5IG9mCi0gICAgICAgIGEgTlVMTCBhcmd1bWVudCwga2Vl
cGluZyBleGlzdGluZyBiZWhhdmlvdXIgb3RoZXJ3aXNlLgotCi0gICAgICAgICogV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVM
b2FkZXJDbGllbnRFZmw6OnJlZGlyZWN0RGF0YVRvUGx1Z2luKToKLQotMjAxMi0wOC0xMiAgS3J6
eXN6dG9mIEN6ZWNoICA8ay5jemVjaEBzYW1zdW5nLmNvbT4KLQotICAgICAgICBbRUZMXVtVVF0g
RGVsZXRlIHNodXRkb3duIG1ldGhvZC4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTkwNzg1Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwu
Ci0KLSAgICAgICAgRVdLVGVzdEJhc2UgY2xhc3MgYWxyZWFkeSBoYXMgYSBzaHV0ZG93bkFsbCBt
ZXRob2QgdGhhdCBjYW4gYmUgdXNlZCBpbnN0ZWFkIG9mIHNodXRkb3duLgotCi0gICAgICAgICog
dGVzdHMvVW5pdFRlc3RVdGlscy9FV0tUZXN0QmFzZS5jcHA6Ci0gICAgICAgICogdGVzdHMvVW5p
dFRlc3RVdGlscy9FV0tUZXN0QmFzZS5oOgotICAgICAgICAoRVdLVGVzdEJhc2UpOgotCi0yMDEy
LTA4LTA5ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KLQotICAg
ICAgICBIYW5kbGUgU1NMIGVycm9ycyBmb3IgU09VUAotICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTAyNjcKLQotICAgICAgICBSZXZpZXdlZCBieSBNYXJ0
aW4gUm9iaW5zb24uCi0KLSAgICAgICAgSWdub3JlIFNTTCBlcnJvcnMgYnkgZGVmYXVsdCBmb3Ig
Y29tcGF0aWJpbGl0eS4KLQotICAgICAgICAqIGV3ay9ld2tfbWFpbi5jcHA6Ci0gICAgICAgIChf
ZXdrX2luaXRfYm9keSk6Ci0KLTIwMTItMDgtMDcgIFJ5dWFuIENob2kgIDxyeXVhbi5jaG9pQHNh
bXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxdIFJlbW92ZSBQbGF0Zm9ybVRvdWNoRXZlbnRFZmwg
YW5kIFBsYXRmb3JtVG91Y2hQb2ludEVmbAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9OTMyNzAKLQotICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRl
bC4KLQotICAgICAgICAqIGV3ay9ld2tfZnJhbWUuY3BwOgotICAgICAgICAoZXdrX2ZyYW1lX2Zl
ZWRfdG91Y2hfZXZlbnQpOgotICAgICAgICAqIGV3ay9ld2tfdG91Y2hfZXZlbnQuY3BwOiBBZGRl
ZC4KLSAgICAgICAgKFdlYktpdFBsYXRmb3JtVG91Y2hQb2ludCk6Ci0gICAgICAgIChXZWJLaXRQ
bGF0Zm9ybVRvdWNoUG9pbnQ6OldlYktpdFBsYXRmb3JtVG91Y2hQb2ludCk6Ci0gICAgICAgIEFk
ZGVkIHRvIGluaXRpYWxpemUgbWVtYmVycyBvZiBQbGF0Zm9ybVRvdWNoUG9pbnQuCi0gICAgICAg
IChXZWJLaXRQbGF0Zm9ybVRvdWNoRXZlbnQpOgotICAgICAgICAoV2ViS2l0UGxhdGZvcm1Ub3Vj
aEV2ZW50OjpXZWJLaXRQbGF0Zm9ybVRvdWNoRXZlbnQpOgotICAgICAgICBBZGRlZCB0byBpbml0
aWFsaXplIG1lbWJlcnMgb2YgUGxhdGZvcm1Ub3VjaEV2ZW50LgotICAgICAgICAoRVdLUHJpdmF0
ZSk6Ci0gICAgICAgIChFV0tQcml2YXRlOjpwbGF0Zm9ybVRvdWNoRXZlbnQpOgotICAgICAgICBD
b252ZXJ0ZWQgRXdrX1RvdWNoX0V2ZW50IHRvIFBsYXRmb3JtVG91Y2hFdmVudC4KLSAgICAgICAg
KiBld2svZXdrX3RvdWNoX2V2ZW50X3ByaXZhdGUuaDogCi0gICAgICAgIChFV0tQcml2YXRlKToK
LQotMjAxMi0wOC0wNyAgTWlraGFpbCBQb3pkbnlha292ICA8bWlraGFpbC5wb3pkbnlha292QGlu
dGVsLmNvbT4KLQotICAgICAgICBDVVNUT01fU0NIRU1FX0hBTkRMRVIgZmxhZyBzaG91bGQgZGVw
ZW5kIG9uIFJFR0lTVEVSX1BST1RPQ09MX0hBTkRMRVIKLSAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkzMDgxCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQWRh
bSBCYXJ0aC4KLQotICAgICAgICBDVVNUT01fU0NIRU1FX0hBTkRMRVIgI2lmIGd1YXJkcyBhcmUg
ZW5jbG9zZWQgaW4gdGhlIFJFR0lTVEVSX1BST1RPQ09MX0hBTkRMRVIgZ3VhcmRzLgotCi0gICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvUmVnaXN0ZXJQcm90b2NvbEhhbmRsZXJDbGllbnRFZmwuY3Bw
OgotICAgICAgICAoV2ViQ29yZTo6UmVnaXN0ZXJQcm90b2NvbEhhbmRsZXJDbGllbnRFZmw6OnJl
Z2lzdGVyUHJvdG9jb2xIYW5kbGVyKToKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9SZWdpc3Rl
clByb3RvY29sSGFuZGxlckNsaWVudEVmbC5oOgotICAgICAgICAqIGV3ay9ld2tfY3VzdG9tX2hh
bmRsZXIuY3BwOgotICAgICAgICAoZXdrX2N1c3RvbV9oYW5kbGVyX3JlZ2lzdGVyX3Byb3RvY29s
X2hhbmRsZXIpOgotICAgICAgICAqIGV3ay9ld2tfY3VzdG9tX2hhbmRsZXJfcHJpdmF0ZS5oOgot
ICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChfZXdrX3ZpZXdfcHJpdl9uZXcp
OgotCi0yMDEyLTA4LTA2ICBNaWtoYWlsIFBvemRueWFrb3YgIDxtaWtoYWlsLnBvemRueWFrb3ZA
aW50ZWwuY29tPgotCi0gICAgICAgIFtFRkxdIFtHVEtdIFJlZ2lzdGVyIFByb3RvY29sIEhhbmRs
ZXIgQ2xpZW50IGlzIG5ldmVyIGRlbGV0ZWQKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTkyNzQ1Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgR3VzdGF2byBO
b3JvbmhhIFNpbHZhLgotCi0gICAgICAgIEFkZGVkIHVzYWdlIG9mIE93blB0ciB0byBtYW5hZ2Ug
cmVnaXN0ZXIgcHJvdG9jb2wgaGFuZGxlciBjbGllbnQgcG9pbnRlci4KLQotICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1JlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyQ2xpZW50RWZsLmNwcDoKLSAgICAg
ICAgKFdlYkNvcmU6OlJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyQ2xpZW50RWZsOjpjcmVhdGUpOiBG
YWN0b3J5IGZ1bmN0aW9uIHJldHVybmluZyBzbWFydCBwb2ludGVyLgotICAgICAgICAoV2ViQ29y
ZSk6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvUmVnaXN0ZXJQcm90b2NvbEhhbmRsZXJDbGll
bnRFZmwuaDoKLSAgICAgICAgKFJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyQ2xpZW50RWZsKToKLSAg
ICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoX0V3a19WaWV3X1ByaXZhdGVfRGF0
YSk6Ci0gICAgICAgIChfZXdrX3ZpZXdfcHJpdl9uZXcpOgotCi0yMDEyLTA4LTAxICBSeXVhbiBD
aG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBbRUZMXVtSZWdyZXNzaW9u
XSBCdWlsZCBicmVhayB3aXRoIE5FVFNDQVBFX1BMVUdJTl9BUEkgYWZ0ZXIgcjEyMzYwNAotICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTI5MzcKLQotICAg
ICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeC4KLQotICAgICAgICByMTIzNjA0IHJlcGxhY2VkIHN0
cmR1cCB0byBlaW5hX3N0cmluZ3NoYXJlLCBidXQgcmVsYXRlZCBjb2RlcyBhcmUgbm90Ci0gICAg
ICAgIGNoYW5nZWQgcHJvcGVybHkuCi0gICAgICAgIFRoaXMgcGF0Y2ggY2hhbmdlcyByZW1haW5l
ZCBjb2RlIHRvIHVzZSBlaW5hX3N0cmluZ3NoYXJlLgotCi0gICAgICAgICogZXdrL2V3a19qcy5j
cHA6Ci0gICAgICAgIChld2tfanNfdmFyaWFudF90b19ucHZhcmlhbnQpOgotICAgICAgICAoZXdr
X2pzX3Byb3BlcnR5X2ZyZWUpOgotICAgICAgICAoZXdrX2pzX25wdmFyaWFudF90b192YXJpYW50
KToKLSAgICAgICAgKGV3a19qc192YXJpYW50X2ZyZWUpOgotICAgICAgICAoZXdrX2pzX3Zhcmlh
bnRfYXJyYXlfZnJlZSk6Ci0gICAgICAgICogZXdrL2V3a19qcy5oOgotCi0yMDEyLTA3LTI5ICBZ
b3VuZ1RhZWNrIFNvbmcgIDx5b3VuZ3RhZWNrLnNvbmdAc2Ftc3VuZy5jb20+Ci0KLSAgICAgICAg
W1dLMl1bRUZMXSBUSUxFRF9CQUNLSU5HX1NUT1JFIHN1cHBvcnQgb24gRWZsIFdlYktpdDIKLSAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxNTgyCi0KLSAg
ICAgICAgUmV2aWV3ZWQgYnkgTm9hbSBSb3NlbnRoYWwuCi0KLSAgICAgICAgQWRkIGEgZHVtbXkg
ZnVuY3Rpb24gZm9yIGZpeGluZyBidWlsZGluZyBlcnJvciB3aGVuIGVuYWJsaW5nIFRJTEVEX0JB
Q0tJTkdfU1RPUkUuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwu
Y3BwOgotICAgICAgICAoV2ViQ29yZSk6Ci0gICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRF
Zmw6OmRlbGVnYXRlZFNjcm9sbFJlcXVlc3RlZCk6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQv
Q2hyb21lQ2xpZW50RWZsLmg6Ci0gICAgICAgIChDaHJvbWVDbGllbnRFZmwpOgotCi0yMDEyLTA3
LTI3ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+Ci0KLSAg
ICAgICAgW0VGTF0gUmVncmVzc2lvbihyMTIzODU4KTogRGVmYXVsdCBuYXZpZ2F0aW9uIHBvbGlj
eSBkZWNpc2lvbiB3YXMgc3dpdGNoZWQgdG8gInJlamVjdCIKLSAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkyNTA3Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkg
S2VudGFybyBIYXJhLgotCi0gICAgICAgIEFmdGVyIHI5MjQ2NiwgdGhlIGRlZmF1bHQgbmF2aWdh
dGlvbiBwb2xpY3kgaXMgdG8gcmVqZWN0IHRoZSByZXF1ZXN0IGlmIHRoZQotICAgICAgICBjbGll
bnQgZG9lcyBub3QgbWFrZSBhIGRlY2lzaW9uIGV4cGxpY2l0bHkuIFRoZSBkZWZhdWx0IHBvbGlj
eSBzaG91bGQgYmUKLSAgICAgICAgdG8gYWNjZXB0LiBUaGlzIGJyb2tlIGV3a192aWV3IHVuaXQg
dGVzdHMuCi0KLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoZXdrX3ZpZXdf
bmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24pOgotCi0yMDEyLTA3LTI3ICBHeXV5b3VuZyBLaW0g
IDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW0VGTF0gRml4IHdyb25nIHJl
dHVybiB2YWx1ZSBpbiBFV0tfVklFV19YWFggbWFjcm8uCi0gICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MjQ2NgotCi0gICAgICAgIFJldmlld2VkIGJ5IFNp
bW9uIEhhdXNtYW5uLgotCi0gICAgICAgIFRoZXJlIGFyZSB3cm9uZyByZXR1cm4gdmFsdWVzIGlu
IEVXS19WSUVXX1hYWCBtYWNyb3MuIFRoZSB3cm9uZyByZXR1cm4gdmFsdWVzCi0gICAgICAgIHNo
b3VsZCBiZSBmaXhlZC4gSW4gYWRkaXRpb24sIEFQSSBkZXNjcmlwdGlvbiBpcyBhbHNvIG1vZGlm
aWVkIGFjY29yZGluZyB0byByZXR1cm5lZAotICAgICAgICB2YWx1ZSBjaGFuZ2UuCi0KLSAgICAg
ICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19taW5pbXVt
X3RpbWVyX2ludGVydmFsX2dldCk6Ci0gICAgICAgIChld2tfdmlld19uYXZpZ2F0aW9uX3BvbGlj
eV9kZWNpc2lvbik6Ci0gICAgICAgIChld2tfdmlld19wYWdlX3JlY3RfZ2V0KToKLSAgICAgICAg
KGV3a192aWV3X3NldHRpbmdfZW5hYmxlX3hzc19hdWRpdG9yX2dldCk6Ci0gICAgICAgICogZXdr
L2V3a192aWV3Lmg6Ci0KLTIwMTItMDctMjcgIEtpaG9uZyBLd29uICA8a2lob25nLmt3b25Ac2Ft
c3VuZy5jb20+Ci0KLSAgICAgICAgW0VGTF0gQ2hhbmdlIHByb3RvdHlwZSBvZiBydW5fb3Blbl9w
YW5lbAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE5
NTYKLQotICAgICAgICBSZXZpZXdlZCBieSBLZW50YXJvIEhhcmEuCi0KLSAgICAgICAgSW4gb3Jk
ZXIgdG8gc3VwcG9ydCBhbGwgb2YgdGhlIGZpbGUgY2hvb3NlciBhdHRyaWJ1dGVzLAotICAgICAg
ICBjaGFuZ2UgdGhlIHR5cGVzIG9mIHBhcmFtZXRlcnMgaW4gcnVuX29wZW5fcGFuZWwgbWV0aG9k
LgotICAgICAgICBpLmUuLCBjaGFuZ2UgIkVpbmFfQm9vbCBhbGxvd3NfbXVsdGlwbGVfZmlsZXMs
IEVpbmFfTGlzdCAqYWNjZXB0X3R5cGVzIgotICAgICAgICB0byAiRXdrX0ZpbGVfQ2hvb3NlciAq
ZmlsZV9jaG9vc2VyIgotICAgICAgICBJbiBhZGRpdGlvbiwgRWZsIGNhbiBzdXBwb3J0IHRoZSBj
YXB0dXJlIGF0dHJpYnV0ZSBmb3IgSFRNTCBtZWRpYSBjYXB0dXJlLgotCi0gICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkNocm9t
ZUNsaWVudEVmbDo6cnVuT3BlblBhbmVsKToKLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgot
ICAgICAgICAoZXdrX3ZpZXdfcnVuX29wZW5fcGFuZWwpOgotICAgICAgICAqIGV3ay9ld2tfdmll
dy5oOgotICAgICAgICAqIGV3ay9ld2tfdmlld19wcml2YXRlLmg6Ci0KLTIwMTItMDctMjYgIFNl
b2tqdSBLd29uICA8c2Vva2p1Lmt3b25Ac2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW0VGTF0gSGln
aGxpZ2h0IHRoZSBlbGVtZW50IHVuZGVyIG1vdXNlIG9uIHdlYiBpbnNwZWN0b3IKLSAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxNTkyCi0KLSAgICAgICAg
UmV2aWV3ZWQgYnkgS2VudGFybyBIYXJhLgotCi0gICAgICAgIEltcGxlbWVudCBoaWdobGlnaHRp
bmcgdGhlIG5vZGVzIHdoZW4gdXNpbmcgdGhlIHdlYiBpbnNwZWN0b3IuCi0KLSAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yQ2xpZW50RWZsOjpoaWdobGlnaHQpOgotICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yQ2xpZW50RWZsOjpoaWRlSGlnaGxpZ2h0KToKLSAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckNsaWVudEVmbDo6aW52YWxpZGF0ZVZpZXcpOgotICAgICAgICAoV2ViQ29yZSk6Ci0gICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50RWZsLmg6Ci0gICAgICAgIChJbnNwZWN0
b3JDbGllbnRFZmwpOgotICAgICAgICAqIGV3ay9ld2tfcGFpbnRfY29udGV4dC5jcHA6Ci0gICAg
ICAgIChld2tfcGFpbnRfY29udGV4dF9wYWludF9jb250ZW50cyk6Ci0KLTIwMTItMDctMjYgIENo
cmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KLQotICAgICAgICBb
RUZMXVtXSzJdIEltcGxlbWVudCBOZXR3b3JrIEluZm9ybWF0aW9uIHByb3ZpZGVyCi0gICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MjM0MwotCi0gICAgICAg
IFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgotCi0gICAgICAgIE1ha2Ug
TmV0d29ya0luZm9DbGllbnRFZmwgdXNlIE5ldHdvcmtJbmZvUHJvdmlkZXJFZmwKLSAgICAgICAg
ZnJvbSBXZWJDb3JlIHRvIGF2b2lkIGNvZGUgZHVwbGljYXRpb24gd2l0aCBXZWJLaXQyLgotCi0g
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvTmV0d29ya0luZm9DbGllbnRFZmwuY3BwOgotICAgICAg
ICAoV2ViQ29yZTo6TmV0d29ya0luZm9DbGllbnRFZmw6OnN0YXJ0VXBkYXRpbmcpOgotICAgICAg
ICAoV2ViQ29yZTo6TmV0d29ya0luZm9DbGllbnRFZmw6OnN0b3BVcGRhdGluZyk6Ci0gICAgICAg
IChXZWJDb3JlOjpOZXR3b3JrSW5mb0NsaWVudEVmbDo6YmFuZHdpZHRoKToKLSAgICAgICAgKFdl
YkNvcmU6Ok5ldHdvcmtJbmZvQ2xpZW50RWZsOjptZXRlcmVkKToKLSAgICAgICAgKFdlYkNvcmUp
OgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L05ldHdvcmtJbmZvQ2xpZW50RWZsLmg6Ci0gICAg
ICAgIChXZWJDb3JlKToKLSAgICAgICAgKE5ldHdvcmtJbmZvQ2xpZW50RWZsKToKLQotMjAxMi0w
Ny0yNiAgWm9sdGFuIE55dWwgIDx6b2x0YW4ubnl1bEBpbnRlbC5jb20+Ci0KLSAgICAgICAgW0VG
TF0gRUZMIHBvcnQgc2hvdWxkIHVzZSBYREcgcGF0aHMKLSAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxNzE5Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgS2Vu
bmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCi0KLSAgICAgICAgVXNpbmcgeGRnIHBhdGhzIGluc3Rl
YWQgb2YgaG9tZS8ud2Via2l0IGRpcmVjdG9yeSBmb3IgYXBwbGljYXRpb24KLSAgICAgICAgY2Fj
aGUsIHdlYi1kYXRhYmFzZSBhbmQgbG9jYWwtc3RvcmFnZS4KLQotICAgICAgICAqIGV3ay9ld2tf
bWFpbi5jcHA6Ci0gICAgICAgIChfZXdrX2luaXRfYm9keSk6Ci0KLTIwMTItMDctMjYgIEthdXN0
dWJoIEF0cmF3YWxrYXIgIDxrYXVzdHViaEBtb3Rvcm9sYS5jb20+Ci0KLSAgICAgICAgW0RSVF0g
TFRDOjogcGFnZU51bWJlckZvckVsZW1lbnRCeUlkKCkgY291bGQgYmUgbW92ZWQgdG8gSW50ZXJu
YWxzCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MjA5
MQotCi0gICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCi0KLSAgICAgICAgTW92ZSB0aGUg
cGFnZU51bWJlckZvckVsZW1lbnRCeUlkIGZyb20gTGF5b3V0VGVzdENvdHJvbGxlciB0byBJbnRl
cm5hbHMgYW5kCi0gICAgICAgIHJlbW92ZSB0aGUgb2xkIHBsYXRmb3JtIHNwZWNpZmljIGltcGxl
bWVudGF0aW9ucyBhcyBpdCBleGNsdXNpdmVseSB0ZXN0cyBXZWJDb3JlIGZ1bmN0aW9uYWxpdHku
Ci0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3Bw
OgotCi0yMDEyLTA3LTI1ICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+
Ci0KLSAgICAgICAgW0VGTF0gVXNlIGVpbmFfc3RyaW5nc2hhcmVfYWRkIGluc3RlYWQgb2Ygc3Ry
ZHVwLgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTIw
NzIKLQotICAgICAgICBSZXZpZXdlZCBieSBLZW50YXJvIEhhcmEuCi0KLSAgICAgICAgRWluYSBv
ZiBFRkwgbGlicmFyaWVzIHN1cHBvcnRzIGEgc3RyaW5nIGZ1bmN0aW9uYWxpdHkgdGhhdCByZXBs
YWNlcyBzdHJkdXAuIFNvLCBFRkwgcG9ydCBuZWVkcwotICAgICAgICB0byByZXBsYWNlIHN0cmR1
cCB3aXRoIGVpbmFfc3RyaW5nc2hhcmVfYWRkIGZ1bmN0aW9uLgotCi0gICAgICAgIEluIGFkZGl0
aW9uLCBzb21lIEFQSSBkZXNjcmlwdGlvbnMgbmVlZCB0byBiZSBtb2RpZmllZCBhY2NvcmRpbmcg
dG8gZXdrIEFQSXMncyBwYXJhbWV0ZXIgYW5kCi0gICAgICAgIHJldHVybiB0eXBlIGNoYW5nZS4K
LQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHA6Ci0gICAgICAg
IChXZWJDb3JlOjpDaHJvbWVDbGllbnRFZmw6OnJ1bkphdmFTY3JpcHRQcm9tcHQpOgotICAgICAg
ICAqIGV3ay9ld2tfY29va2llcy5jcHA6Ci0gICAgICAgIChld2tfY29va2llc19nZXRfYWxsKToK
LSAgICAgICAgKGV3a19jb29raWVzX2Nvb2tpZV9mcmVlKToKLSAgICAgICAgKiBld2svZXdrX2Nv
b2tpZXMuaDoKLSAgICAgICAgKiBld2svZXdrX2ZyYW1lLmNwcDoKLSAgICAgICAgKGV3a19mcmFt
ZV9zY3JpcHRfZXhlY3V0ZSk6Ci0gICAgICAgIChld2tfZnJhbWVfc2VsZWN0aW9uX2dldCk6Ci0g
ICAgICAgIChld2tfZnJhbWVfcmVzb3VyY2VzX2xvY2F0aW9uX2dldCk6Ci0gICAgICAgIChld2tf
ZnJhbWVfcGxhaW5fdGV4dF9nZXQpOgotICAgICAgICAqIGV3ay9ld2tfZnJhbWUuaDoKLSAgICAg
ICAgKiBld2svZXdrX2ludGVudC5jcHA6Ci0gICAgICAgIChld2tfaW50ZW50X3N1Z2dlc3Rpb25z
X2dldCk6Ci0gICAgICAgIChld2tfaW50ZW50X2V4dHJhX2dldCk6Ci0gICAgICAgIChld2tfaW50
ZW50X2V4dHJhX25hbWVzX2dldCk6Ci0gICAgICAgICogZXdrL2V3a19pbnRlbnQuaDoKLSAgICAg
ICAgKiBld2svZXdrX2pzLmNwcDoKLSAgICAgICAgKGV3a19qc192YXJpYW50X3RvX25wdmFyaWFu
dCk6Ci0gICAgICAgIChld2tfanNfb2JqZWN0X25ldyk6Ci0gICAgICAgICogZXdrL2V3a192aWV3
LmNwcDoKLSAgICAgICAgKF9ld2tfdmlld19zbWFydF9ydW5famF2YXNjcmlwdF9wcm9tcHQpOgot
ICAgICAgICAoZXdrX3ZpZXdfc2VsZWN0aW9uX2dldCk6Ci0gICAgICAgIChld2tfdmlld19ydW5f
amF2YXNjcmlwdF9wcm9tcHQpOgotICAgICAgICAoZXdrX3ZpZXdfcnVuX29wZW5fcGFuZWwpOgot
ICAgICAgICAqIGV3ay9ld2tfdmlldy5oOgotICAgICAgICAqIGV3ay9ld2tfdmlld19wcml2YXRl
Lmg6Ci0KLTIwMTItMDctMjUgIEtpaG9uZyBLd29uICA8a2lob25nLmt3b25Ac2Ftc3VuZy5jb20+
Ci0KLSAgICAgICAgW0VGTF0gQWRkIEZpbGUgQ2hvb3NlciBBUEkKLSAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxOTU3Ci0KLSAgICAgICAgUmV2aWV3ZWQg
YnkgSGFqaW1lIE1vcml0YS4KLQotICAgICAgICBBZGQgQVBJcyBmb3IgZmlsZSBjaG9vc2VyLiBU
aGVzZSBBUElzIGFsbG93IGFuIGFwcGxpY2F0aW9uKGxpa2UgYSBicm93c2VyKSBxdWVyaWVzIGlu
Zm9ybWF0aW9ucwotICAgICAgICBhYm91dCBtdWx0aXBsZSBmaWxlcyBhbGxvd2VkLCBkaXJlY3Rv
cnkgdXBsb2FkIGFsbG93ZWQsIGFjY2VwdCBtaW1ldHlwZXMgbGlzdCwKLSAgICAgICAgYWNjZXB0
IGZpbGUgZXh0ZW50aW9ucyBsaXN0LCBzZWxlY3RlZCBmaWxlcyBsaXN0IGFuZCBjYXB0dXJlIHRv
IHN1cHBvcnQgSFRNTCBtZWRpYSBjYXB0dXJlLgotCi0gICAgICAgICogZXdrL0VXZWJLaXQuaDoK
LSAgICAgICAgKiBld2svZXdrX2ZpbGVfY2hvb3Nlci5jcHA6IEFkZGVkLgotICAgICAgICAoX0V3
a19GaWxlX0Nob29zZXIpOgotICAgICAgICAoZXdrX2ZpbGVfY2hvb3Nlcl9hbGxvd3NfbXVsdGlw
bGVfZmlsZXNfZ2V0KToKLSAgICAgICAgKGV3a19maWxlX2Nob29zZXJfYWxsb3dzX2RpcmVjdG9y
eV91cGxvYWRfZ2V0KToKLSAgICAgICAgKGV3a19maWxlX2Nob29zZXJfYWNjZXB0X21pbWV0eXBl
c19nZXQpOgotICAgICAgICAoZXdrX2ZpbGVfY2hvb3Nlcl9hY2NlcHRfZmlsZV9leHRlbnRpb25z
X2dldCk6Ci0gICAgICAgIChld2tfZmlsZV9jaG9vc2VyX3NlbGVjdGVkX2ZpbGVzX2dldCk6Ci0g
ICAgICAgIChld2tfZmlsZV9jaG9vc2VyX2NhcHR1cmVfZ2V0KToKLSAgICAgICAgKGV3a19maWxl
X2Nob29zZXJfbmV3KToKLSAgICAgICAgKGV3a19maWxlX2Nob29zZXJfZnJlZSk6Ci0gICAgICAg
ICogZXdrL2V3a19maWxlX2Nob29zZXIuaDogQWRkZWQuCi0gICAgICAgICogZXdrL2V3a19maWxl
X2Nob29zZXJfcHJpdmF0ZS5oOiBBZGRlZC4KLSAgICAgICAgKFdlYkNvcmUpOgotCi0yMDEyLTA3
LTIzICBQaWVycmUgUm9zc2kgIDxwaWVycmUucm9zc2lAZ21haWwuY29tPgotCi0gICAgICAgIFVu
aWZ5IG51bVRvdWNoRXZlbnRIYW5kbGVyc0NoYW5nZWQgYW5kIG5lZWRUb3VjaEV2ZW50cyBpbiB0
aGUgY2hyb21lIGNsaWVudAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9OTEwMDYKLQotICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtlIE5pd2EuCi0KLSAg
ICAgICAgUmVtb3ZlZCBudW1Ub3VjaEV2ZW50SGFuZGxlcnNDaGFuZ2VkIHN0dWIuCi0KLSAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuaDoKLQotMjAxMi0wNy0yMiAgS2Vu
dCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+Ci0KLSAgICAgICAgUmVuYW1lIEVOQUJMRV9N
RVRFUl9UQUcgYW5kIEVOQUJMRV9QUk9HUkVTU19UQUcgdG8gRU5BQkxFX01FVEVSX0VMRU1FTlQg
YW5kIEVOQUJMRV9QUk9HUkVTU19FTEVNRU5UIHJlc3BlY3RpdmVseQotICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE5NDEKLQotICAgICAgICBSZXZpZXdl
ZCBieSBLZW50YXJvIEhhcmEuCi0KLSAgICAgICAgQSBmbGFnIG5hbWUgZm9yIGFuIGVsbWVtZW50
IHNob3VsZCBiZSBFTkFCTEVfKl9FTEVNRU5ULgotCi0gICAgICAgICogRGVmYXVsdFRoZW1lL2Rl
ZmF1bHQuZWRjOgotCi0yMDEyLTA3LTIwICBLaWhvbmcgS3dvbiAgPGtpaG9uZy5rd29uQHNhbXN1
bmcuY29tPgotCi0gICAgICAgIFtFRkxdIFJlbW92ZSB1bnVzZWQgaGVhZGVycyBmcm9tIGV3a19z
ZWN1cml0eV9vcmlnaW4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTkxOTE0Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgTm9hbSBSb3NlbnRoYWwuCi0KLSAg
ICAgICAgVGhlcmUgYXJlIHNvbWUgdW51c2VkIGhlYWRlciBpbiB0aGUgZXdrX3NlY3VyaXR5X29y
aWdpbi5oL2NwcAotICAgICAgICBXZSBuZWVkIHRvIHJlbW92ZSB0aGVtLgotCi0gICAgICAgICog
ZXdrL2V3a19zZWN1cml0eV9vcmlnaW4uY3BwOgotICAgICAgICAqIGV3ay9ld2tfc2VjdXJpdHlf
b3JpZ2luLmg6Ci0KLTIwMTItMDctMjAgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1
bWV6QGludGVsLmNvbT4KLQotICAgICAgICBbRUZMXSBQcm94eSBjb25maWd1cmF0aW9uIHNob3Vs
ZCBob25vciB0aGUgbm9fcHJveHkgZW52aXJvbm1lbnQgdmFyaWFibGUKLSAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxNzQ3Ci0KLSAgICAgICAgUmV2aWV3
ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCi0KLSAgICAgICAgVXNlIHRoZSBuZXcg
Y3VzdG9tIHByb3h5IHJlc29sdmVyIGZyb20gV2ViQ29yZSBpbgotICAgICAgICBXZWJLaXQxLUVG
TCdzIGV3a19uZXR3b3JrX3Byb3h5X3VyaV9zZXQoKSAvIGdldCgpLAotICAgICAgICBpbnN0ZWFk
IG9mIHRoZSBsZXNzIGZsZXhpYmxlIFNPVVBfU0VTU0lPTl9QUk9YWV9VUkkKLSAgICAgICAgU291
cFNlc3Npb24gcHJvcGVydHkuCi0KLSAgICAgICAgKiBld2svZXdrX25ldHdvcmsuY3BwOgotICAg
ICAgICAoZXdrX25ldHdvcmtfcHJveHlfdXJpX3NldCk6Ci0gICAgICAgIChld2tfbmV0d29ya19w
cm94eV91cmlfZ2V0KToKLQotMjAxMi0wNy0yMCAgVGhpYWdvIE1hcmNvcyBQLiBTYW50b3MgIDx0
aGlhZ28uc2FudG9zQGludGVsLmNvbT4KLQotICAgICAgICBbRUZMXSBGaXggYnVpbGQgd2hlbiBw
cm90b2NvbCBoYW5kbGVyIGFuZCBjdXN0b20gc2NoZW1lIGlzIGRpc2FibGVkCi0gICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTg0MAotCi0gICAgICAgIFJl
dmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgotCi0gICAgICAgIEZpeGVkIG5h
bWVzcGFjZSBjbG9zaW5nIGJyYWNrZXQgcG9zaXRpb25pbmcuCi0KLSAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9SZWdpc3RlclByb3RvY29sSGFuZGxlckNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChX
ZWJDb3JlKToKLQotMjAxMi0wNy0yMCAgS2lob25nIEt3b24gIDxraWhvbmcua3dvbkBzYW1zdW5n
LmNvbT4KLQotICAgICAgICBbRUZMXSBDaGVjayBwYXJhbWV0ZXJzIG9mIGV3ayBBUElzIGluIGV3
a19zZWN1cml0eV9vcmlnaW4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTkxODMzCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgS2VudGFybyBIYXJhLgotCi0g
ICAgICAgIEZvciBwcmV2ZW50aW5nIGNyYXNoLCBjaGVjayBwYXJhbWV0ZXJzIG9mIGV3ayBBUElz
IGluIHRoZSBld2tfc2VjdXJpdHlfb3JpZ2luLmNwcC4KLQotICAgICAgICAqIGV3ay9ld2tfc2Vj
dXJpdHlfb3JpZ2luLmNwcDoKLSAgICAgICAgKGV3a19zZWN1cml0eV9vcmlnaW5fcG9ydF9nZXQp
OgotICAgICAgICAoZXdrX3NlY3VyaXR5X29yaWdpbl93ZWJfZGF0YWJhc2VfdXNhZ2VfZ2V0KToK
LSAgICAgICAgKGV3a19zZWN1cml0eV9vcmlnaW5fd2ViX2RhdGFiYXNlX3F1b3RhX2dldCk6Ci0g
ICAgICAgIChld2tfc2VjdXJpdHlfb3JpZ2luX3dlYl9kYXRhYmFzZV9xdW90YV9zZXQpOgotICAg
ICAgICAoZXdrX3NlY3VyaXR5X29yaWdpbl9hcHBsaWNhdGlvbl9jYWNoZV9xdW90YV9zZXQpOgot
ICAgICAgICAoZXdrX3NlY3VyaXR5X29yaWdpbl9hcHBsaWNhdGlvbl9jYWNoZV9jbGVhcik6Ci0g
ICAgICAgIChld2tfc2VjdXJpdHlfb3JpZ2luX3dlYl9kYXRhYmFzZV9nZXRfYWxsKToKLSAgICAg
ICAgKGV3a19zZWN1cml0eV9vcmlnaW5fZnJlZSk6Ci0gICAgICAgICogZXdrL2V3a19zZWN1cml0
eV9vcmlnaW4uaDoKLQotMjAxMi0wNy0xOSAgS2lob25nIEt3b24gIDxraWhvbmcua3dvbkBzYW1z
dW5nLmNvbT4KLQotICAgICAgICBbRUZMXSBFbmFibGUgaW50ZXJhY3RpdmUgZm9ybSB2YWxpZGF0
aW9uCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTcx
MQotCi0gICAgICAgIFJldmlld2VkIGJ5IFJ5b3N1a2UgTml3YS4KLQotICAgICAgICBFbmFibGUg
aW50ZXJhY3RpdmUgZm9ybSB2YWxpZGF0aW9uIG9uIHRoZSBFZmwuCi0gICAgICAgIFRoaXMgbWFr
ZXMgd2UgY2FuIHZhbGlkYXRlIGRhdGEgYXQgZm9ybSBlbGVtZW50cy4KLSAgICAgICAgSW4gYWRk
aXRpb24sIGl0IGlzIGFscmVhZHkgZW5hYmxlZCBpbiB0aGUgRFJULgotCi0gICAgICAgICogZXdr
L2V3a192aWV3LmNwcDoKLSAgICAgICAgKF9ld2tfdmlld19wcml2X25ldyk6Ci0KLTIwMTItMDct
MTggIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KLQotICAg
ICAgICBbRUZMXSBBZGQgY2VudHJhbCBlcnJvciBtYW5hZ2VtZW50IHRvIEVGTCBwb3J0Ci0gICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTU5OAotCi0gICAg
ICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgotCi0gICAgICAgIE1h
a2UgdXNlIG9mIEVycm9yc0VmbCBoZWFkZXIgZnJvbSBXZWJDb3JlIGluCi0gICAgICAgIEVGTCdz
IEZyYW1lTG9hZGVyQ2xpZW50IG5vdyB0aGF0IHdlIGhhdmUKLSAgICAgICAgYSBjZW50cmFsIHBs
YWNlIGZvciBlcnJvcnMuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6Y2Fu
Y2VsbGVkRXJyb3IpOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmJs
b2NrZWRFcnJvcik6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6Y2Fu
bm90U2hvd1VSTEVycm9yKToKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZs
OjppbnRlcnJ1cHRlZEZvclBvbGljeUNoYW5nZUVycm9yKToKLSAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyQ2xpZW50RWZsOjpjYW5ub3RTaG93TUlNRVR5cGVFcnJvcik6Ci0gICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6ZmlsZURvZXNOb3RFeGlzdEVycm9yKToKLSAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpwbHVnaW5XaWxsSGFuZGxlTG9h
ZEVycm9yKToKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpzaG91bGRG
YWxsQmFjayk6Ci0KLTIwMTItMDctMTggIFNlb2tqdSBLd29uICA8c2Vva2p1Lmt3b25Ac2Ftc3Vu
Zy5jb20+Ci0KLSAgICAgICAgW0VGTF1bRFJUXSBBZGQgc3VwcG9ydCBmb3IgV2ViIEluc3BlY3Rv
ciBpbiBXZWJLaXQtRUZMIERSVAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODc5MzUKLQotICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgot
Ci0gICAgICAgIEFkZCBpbXBsZW1lbnRhdGlvbiBvZiBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6
OmV2YWx1YXRlSW5XZWJJbnNwZWN0b3IoKS4KLSAgICAgICAgU29tZSBzY3JpcHRzIGZvciB0ZXN0
IHNob3VsZCBiZSBldmFsdWF0ZWQgaW4gZnJvbnRlbmQuCi0KLSAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwOgotICAgICAgICAoRHVtcFJlbmRlclRy
ZWVTdXBwb3J0RWZsOjpldmFsdWF0ZUluV2ViSW5zcGVjdG9yKToKLSAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuaDoKLQotMjAxMi0wNy0xNyAgQ2hyaXN0
b3BoZSBEdW1leiAgPGNocmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgotCi0gICAgICAgIFtFRkxd
IFJlcGxhY2UgMCBieSBOVUxMIGluIHB1YmxpYyBoZWFkZXJzIGRvY3VtZW50YXRpb24KLSAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxNDcwCi0KLSAgICAg
ICAgUmV2aWV3ZWQgYnkgRGlyayBQcmFua2UuCi0KLSAgICAgICAgVXNlIE5VTEwgaW5zdGVhZCBv
ZiAwIGZvciBwb2ludGVyIHR5cGVzIGluIHB1YmxpYwotICAgICAgICBDIGhlYWRlcnMuCi0KLSAg
ICAgICAgKiBld2svZXdrX2NvbnRleHRtZW51Lmg6Ci0gICAgICAgICogZXdrL2V3a19jb29raWVz
Lmg6Ci0gICAgICAgICogZXdrL2V3a19mcmFtZS5oOgotICAgICAgICAqIGV3ay9ld2tfaW50ZW50
Lmg6Ci0gICAgICAgICogZXdrL2V3a19pbnRlbnRfcmVxdWVzdC5oOgotICAgICAgICAqIGV3ay9l
d2tfbmV0d29yay5oOgotICAgICAgICAqIGV3ay9ld2tfc2VjdXJpdHlfb3JpZ2luLmg6Ci0gICAg
ICAgICogZXdrL2V3a19zZXR0aW5ncy5oOgotICAgICAgICAqIGV3ay9ld2tfdmlldy5oOgotICAg
ICAgICAqIGV3ay9ld2tfd2luZG93X2ZlYXR1cmVzLmg6Ci0KLTIwMTItMDctMTcgIFZpdmVrIEdh
bGF0YWdlICA8dml2ZWtnYWxhdGFnZUBnbWFpbC5jb20+Ci0KLSAgICAgICAgV2ViIEluc3BlY3Rv
cjogcmVmYWN0b3IgSW5zcGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdEZyb250ZW5kKCkgdG8gYWNj
ZXB0IEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTkxMTk2Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwg
RmVsZG1hbi4KLQotICAgICAgICBSZWZhY3RvcmluZyBJbnNwZWN0b3JDbGllbnRzLiBJbnNwZWN0
b3JDbGllbnQ6Om9wZW5JbnNwZWN0b3JGcm9udGVuZAotICAgICAgICBub3cgcmV0dXJuaW5nIHRo
ZSBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9J
bnNwZWN0b3JDbGllbnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50
RWZsOjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQpOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0lu
c3BlY3RvckNsaWVudEVmbC5oOgotICAgICAgICAoSW5zcGVjdG9yQ2xpZW50RWZsKToKLQotMjAx
Mi0wNy0xNyAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3VuZy5jb20+Ci0KLSAgICAgICAg
W0VGTF0gTW92ZSBjb2RlcyByZWxhdGVkIHRvIHRoZW1lIHNldHRpbmcgZnJvbSBXaWRnZXQgdG8g
UmVuZGVyVGhlbWUKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTg5ODQyCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5z
ZW4uCi0KLSAgICAgICAgKiBld2svZXdrX2ZyYW1lLmNwcDoKLSAgICAgICAgKGV3a19mcmFtZV92
aWV3X2NyZWF0ZV9mb3Jfdmlldyk6IFJlbW92ZWQgY29kZXMgd2hpY2ggc2V0IHRoZW1lIGluIEZy
YW1lVmlldy4KLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoZXdrX3ZpZXdf
dGhlbWVfc2V0KTogQ2FsbGVkIFJlbmRlclRoZW1lRWZsOjpzZXRUaGVtZVBhdGggaW5zdGVhZCBv
ZiBzZXR0aW5nIHRoZW1lIGluIEZyYW1lVmlldy4KLQotMjAxMi0wNy0xNiAgR3l1eW91bmcgS2lt
ICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgotCi0gICAgICAgIEFkZCBSZWdpc3RlclByb3Rv
Y29sSGFuZGxlckNsaWVudCB0byB0aGUgTW9kdWxlcy9wcm90b2NvbGhhbmRsZXIKLSAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwOTQwCi0KLSAgICAgICAg
UmV2aWV3ZWQgYnkgSGFqaW1lIE1vcml0YS4KLQotICAgICAgICBBcyBhIHN0ZXAgdG8gbGV0IHBy
b3RvY29sIGhhbmRsZXIgYmUgbW92ZWQgdG8gdGhlIG1vZHVsZXMsIFJlZ2lzdGVyUHJvdG9jb2xI
YW5kbGVyQ2xpZW50IG5lZWRzCi0gICAgICAgIHRvIGJlIGFkZGVkIHRvIHRoZSBNb2R1bGVzL3By
b3RvY29saGFuZGxlci4gQmVjYXVzZSBDaHJvbWVDbGllbnQgaGFzIHNvbWUgdmlydHVhbCBmdW5j
dGlvbnMgZm9yCi0gICAgICAgIHByb3RvY29sIGhhbmRsZXJzLCB2aXJ0dWFsIGZ1bmN0aW9ucyBz
aG91bGQgYmUgbW92ZWQgdG8gUmVnaXN0ZXJQcm90b2NvbEhhbmRsZXJDbGllbnQKLQotICAgICAg
ICBJbiBvcmRlciB0byBzdXBwb3J0IHRoaXMsIFJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyQ2xpZW50
RWZsIGNsYXNzIGlzIGFkZGVkIGFuZCBld2tfdmlldyByZWdpc3RlcnMKLSAgICAgICAgUmVnaXN0
ZXJQcm90b2NvbEhhbmRsZXJDbGllbnRFZmwuIEluIGFkZGl0aW9uLCBleGlzdGluZyBjb25jcmV0
ZSBmdW5jdGlvbnMgaW4gQ2hyb21lQ2xpZW50RWZsIGFyZSBtb3ZlZAotICAgICAgICB0byBSZWdp
c3RlclByb3RvY29sSGFuZGxlckNsaWVudEVmbC4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L0Nocm9tZUNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3JlKToKLSAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuaDoKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9S
ZWdpc3RlclByb3RvY29sSGFuZGxlckNsaWVudEVmbC5jcHA6IEFkZGVkLgotICAgICAgICAoV2Vi
Q29yZSk6Ci0gICAgICAgIChXZWJDb3JlOjpjdXN0b21IYW5kbGVyRGF0YUNyZWF0ZSk6Ci0gICAg
ICAgIChXZWJDb3JlOjpjdXN0b21IYW5kbGVyRGF0YURlbGV0ZSk6Ci0gICAgICAgIChXZWJDb3Jl
OjpSZWdpc3RlclByb3RvY29sSGFuZGxlckNsaWVudEVmbDo6UmVnaXN0ZXJQcm90b2NvbEhhbmRs
ZXJDbGllbnRFZmwpOgotICAgICAgICAoV2ViQ29yZTo6UmVnaXN0ZXJQcm90b2NvbEhhbmRsZXJD
bGllbnRFZmw6OnJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyKToKLSAgICAgICAgKFdlYkNvcmU6OlJl
Z2lzdGVyUHJvdG9jb2xIYW5kbGVyQ2xpZW50RWZsOjppc1Byb3RvY29sSGFuZGxlclJlZ2lzdGVy
ZWQpOgotICAgICAgICAoV2ViQ29yZTo6UmVnaXN0ZXJQcm90b2NvbEhhbmRsZXJDbGllbnRFZmw6
OnVucmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIpOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1Jl
Z2lzdGVyUHJvdG9jb2xIYW5kbGVyQ2xpZW50RWZsLmg6IEFkZGVkLgotICAgICAgICAoUmVnaXN0
ZXJQcm90b2NvbEhhbmRsZXJDbGllbnRFZmwpOgotICAgICAgICAoV2ViQ29yZTo6UmVnaXN0ZXJQ
cm90b2NvbEhhbmRsZXJDbGllbnRFZmw6On5SZWdpc3RlclByb3RvY29sSGFuZGxlckNsaWVudEVm
bCk6Ci0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAgKF9ld2tfdmlld19wcml2
X25ldyk6Ci0KLTIwMTItMDctMTYgIEtpaG9uZyBLd29uICA8a2lob25nLmt3b25Ac2Ftc3VuZy5j
b20+Ci0KLSAgICAgICAgUmVtb3ZlIHNldENvbnRyb2xsZXIgZnJvbSBCYXR0ZXJ5Q2xpZW50Ci0g
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDk0NAotCi0g
ICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCi0KLSAgICAgICAgQmF0dGVyeUNsaWVudCBk
b2Vzbid0IG5lZWQgdG8ga2VlcCBtX2NvbnRyb2xsZXIsCi0gICAgICAgIGJlY2F1c2UgQmF0dGVy
eUNvbnRyb2xsZXIgY2FuIGJlIGFjY2Vzc2VkIHVzaW5nIEJhdHRlcnlDb250cm9sbGVyOjpmcm9t
KCkuCi0gICAgICAgIFJlbW92ZSBtX2NvbnRyb2xsZXIgYW5kIEFkZCBld2sgdmlldyBldmFzIG9i
amVjdCB0byBCYXR0ZXJ5Q2xpZW50RWZsLgotICAgICAgICBBbmQgY2hhbmdlIGFsbCBtX2NvbnRy
b2xsZXIgdG8gQmF0dGVyeUNvbnRyb2xsZXI6OmZyb20uCi0KLSAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9CYXR0ZXJ5Q2xpZW50RWZsLmNwcDoKLSAgICAgICAgKEJhdHRlcnlDbGllbnRFZmw6OkJh
dHRlcnlDbGllbnRFZmwpOgotICAgICAgICAoQmF0dGVyeUNsaWVudEVmbDo6ZGlkQ2hhbmdlQmF0
dGVyeVN0YXR1cyk6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvQmF0dGVyeUNsaWVudEVmbC5o
OgotICAgICAgICAoQmF0dGVyeUNsaWVudEVmbCk6Ci0gICAgICAgICogZXdrL2V3a192aWV3LmNw
cDoKLSAgICAgICAgKF9ld2tfdmlld19wcml2X25ldyk6Ci0KLTIwMTItMDctMTUgIEtpaG9uZyBL
d29uICA8a2lob25nLmt3b25Ac2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW0VGTF0gQWRkIGEgQVBJ
IGZvciBnZXR0aW5nIHNlY3VyaXR5IG9yaWdpbiBzdHJpbmcKLSAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwOTM2Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkg
Unlvc3VrZSBOaXdhLgotCi0gICAgICAgIFN1cHBvcnQgdG8gY2hhbmdlIGZyb20gRXdrX1NlY3Vy
aXR5X09yaWdpbiB0byBzdHJpbmcgb24gdGhlIEFQSSBsZXZlbC4KLSAgICAgICAgQWRkIGV3a19z
ZWN1cml0eV9vcmlnaW5fc3RyaW5nX2dldCBmb3IgZ2V0dGluZyBzZWN1cml0eSBvcmlnaW4gc3Ry
aW5nLgotCi0gICAgICAgICogZXdrL2V3a19zZWN1cml0eV9vcmlnaW4uY3BwOgotICAgICAgICAo
X0V3a19TZWN1cml0eV9PcmlnaW4pOgotICAgICAgICAoZXdrX3NlY3VyaXR5X29yaWdpbl9zdHJp
bmdfZ2V0KToKLSAgICAgICAgKGV3a19zZWN1cml0eV9vcmlnaW5fZnJlZSk6Ci0gICAgICAgIChl
d2tfc2VjdXJpdHlfb3JpZ2luX25ldyk6Ci0gICAgICAgICogZXdrL2V3a19zZWN1cml0eV9vcmln
aW4uaDoKLQotMjAxMi0wNy0xNSAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcu
Y29tPgotCi0gICAgICAgIFtFRkxdIE1vdmUgZmlsZXMgZ3VhcmRlZCBieSAjaWZkZWYgdG8gZXhp
c3RpbmcgZmlsZSBsaXN0LgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9OTEzMzYKLQotICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtlIE5pd2EuCi0KLSAg
ICAgICAgU29tZSBFRkwgZmlsZXMgYXJlIGFscmVhZHkgZ3VhcmVkIGJ5ICNpZmRlZi4gU28sIGNt
YWtlIGZpbGVzIGRvZXNuJ3QgbmVlZCB0byBndWFyZAotICAgICAgICB0aGVtIGFnYWluLiBJbiBh
ZGRpdGlvbiwgc29tZSBmaWxlcyBhcmUgbWlzc2luZyAjaWZkZWYgZ3VhcmQgaXRzIGhlYWRlciBm
aWxlcy4gCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EZXZpY2VNb3Rpb25DbGllbnRFZmwu
aDoKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRFZmwuaDoKLSAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9OZXR3b3JrSW5mb0NsaWVudEVmbC5oOgotICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1ZpYnJhdGlvbkNsaWVudEVmbC5oOgotCi0yMDEyLTA3LTEzICBLaWhvbmcg
S3dvbiAgPGtpaG9uZy5rd29uQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxdIEFkZCBjb25z
dCB0byB0aGUgcGFyYW1ldGVyIG9mIGdldHRlcnMgaW4gZXdrX3NlY3VyaXR5X29yaWdpbgotICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTA5NTQKLQotICAg
ICAgICBSZXZpZXdlZCBieSBLZW50YXJvIEhhcmEuCi0KLSAgICAgICAgTW92ZSBpbml0aWFsaXph
dGlvbiBvZiBzdHJpbmdzIGZvciBwcm90b2NvbCBhbmQgaG9zdCB0byB0aGUgZXdrX3NlY3VyaXR5
X29yaWdpbl9uZXcgbWV0aG9kLAotICAgICAgICB3aGljaCBhbGxvd3MgdG8gYWRkIGNvbnN0IHF1
YWxpZmllciBmb3IgZXdrX3NlY3VyaXR5X29yaWdpbl9wcm90b2NvbF9nZXQgYW5kIGV3a19zZWN1
cml0eV9vcmlnaW5faG9zdF9nZXQuCi0gICAgICAgIEluIGFkZGl0aW9uLCBhZGQgbnVsbCBjaGVj
a3MgdG8gdGhlIGdldHRlcnMuCi0KLSAgICAgICAgKiBld2svZXdrX3NlY3VyaXR5X29yaWdpbi5j
cHA6Ci0gICAgICAgIChld2tfc2VjdXJpdHlfb3JpZ2luX3Byb3RvY29sX2dldCk6Ci0gICAgICAg
IChld2tfc2VjdXJpdHlfb3JpZ2luX2hvc3RfZ2V0KToKLSAgICAgICAgKGV3a19zZWN1cml0eV9v
cmlnaW5fbmV3KToKLSAgICAgICAgKiBld2svZXdrX3NlY3VyaXR5X29yaWdpbi5oOgotCi0yMDEy
LTA3LTEzICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+Ci0KLSAgICAg
ICAgW0VGTF0gQWRkICpleHBsaWNpdCoga2V5d29yZCB0byBjb25zdHJ1Y3RvciB3aGljaCBoYXMg
YSBwYXJhbWV0ZXIKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTkxMjA3Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgWm9sdGFuIEhlcmN6ZWcuCi0KLSAgICAg
ICAgQWRkICpleHBsaWNpdCoga2V5d29yZCB0byBjb250cnVjdG9yIHdoaWNoIGhhcyBhIHBhcmFt
ZXRlciBpbiBvcmRlciB0byBhdm9pZCBpbXBsaWNpdCB0eXBlIGNvbnZlcnNpb24uCi0KLSAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuaDoKLSAgICAgICAgKEVkaXRvckNs
aWVudEVmbCk6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50RWZsLmg6
Ci0gICAgICAgIChJbnNwZWN0b3JDbGllbnRFZmwpOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1BhZ2VDbGllbnRFZmwuaDoKLSAgICAgICAgKFBhZ2VDbGllbnRFZmwpOgotICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1ZpYnJhdGlvbkNsaWVudEVmbC5oOgotICAgICAgICAoVmlicmF0aW9uQ2xp
ZW50RWZsKToKLQotMjAxMi0wNy0xMCAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgot
Ci0gICAgICAgIExheW91dFRlc3RDb250cm9sbGVyLmR1bXBDb25maWd1cmF0aW9uRm9yVmlld3Bv
cnQgc2hvdWxkIG1vdmUgdG8gSW50ZXJuYWxzCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD00NTY1MgotCi0gICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2Vp
ZGVsLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZs
LmNwcDoKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwu
aDoKLQotMjAxMi0wNy0wOSAgQ2hyaXN0b3BoZSBEdW1leiAgPGNocmlzdG9waGUuZHVtZXpAaW50
ZWwuY29tPgotCi0gICAgICAgIFtFRkxdIEJhdHRlcnkgc3RhdHVzIGNvZGUgbmVlZHMgcmVmYWN0
b3JpbmcgdG8gYmUgcmV1c2VkIGluIFdlYktpdDIKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTkwNzYwCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgSGFqaW1l
IE1vcml0YS4KLQotICAgICAgICBBZGQgQmF0dGVyeUNsaWVudEVmbCB0byBXZWJLaXQsIHdoaWNo
IHVzZXMgQmF0dGVyeVByb3ZpZGVyRWZsIGZyb20KLSAgICAgICAgV2ViQ29yZSBpbnRlcm5hbGx5
LgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvQmF0dGVyeUNsaWVudEVmbC5jcHA6IEFkZGVk
LgotICAgICAgICAoQmF0dGVyeUNsaWVudEVmbDo6QmF0dGVyeUNsaWVudEVmbCk6Ci0gICAgICAg
IChCYXR0ZXJ5Q2xpZW50RWZsOjpzZXRDb250cm9sbGVyKToKLSAgICAgICAgKEJhdHRlcnlDbGll
bnRFZmw6OnN0YXJ0VXBkYXRpbmcpOgotICAgICAgICAoQmF0dGVyeUNsaWVudEVmbDo6c3RvcFVw
ZGF0aW5nKToKLSAgICAgICAgKEJhdHRlcnlDbGllbnRFZmw6OmJhdHRlcnlDb250cm9sbGVyRGVz
dHJveWVkKToKLSAgICAgICAgKEJhdHRlcnlDbGllbnRFZmw6OmRpZENoYW5nZUJhdHRlcnlTdGF0
dXMpOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0JhdHRlcnlDbGllbnRFZmwuaDogUmVuYW1l
ZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9CYXR0ZXJ5Q2xpZW50RWZsLmguCi0g
ICAgICAgIChXZWJDb3JlKToKLSAgICAgICAgKEJhdHRlcnlDbGllbnRFZmwpOgotICAgICAgICAo
QmF0dGVyeUNsaWVudEVmbDo6fkJhdHRlcnlDbGllbnRFZmwpOgotICAgICAgICAqIGV3ay9ld2tf
dmlldy5jcHA6Ci0gICAgICAgIChfZXdrX3ZpZXdfcHJpdl9uZXcpOgotCi0yMDEyLTA3LTA5ICBB
ZGFtIEtsZWluICA8YWRhbWtAY2hyb21pdW0ub3JnPgotCi0gICAgICAgIFJlbmFtZSBXZWJDb3Jl
OjpXZWJLaXRNdXRhdGlvbk9ic2VydmVyIHRvIFdlYkNvcmU6Ok11dGF0aW9uT2JzZXJ2ZXIKLSAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwODEwCi0KLSAg
ICAgICAgUmV2aWV3ZWQgYnkgT2phbiBWYWZhaS4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHA6Ci0gICAgICAgIChEdW1wUmVuZGVyVHJlZVN1
cHBvcnRFZmw6OmRlbGl2ZXJBbGxNdXRhdGlvbnNJZk5lY2Vzc2FyeSk6Ci0KLTIwMTItMDctMDkg
IEtyenlzenRvZiBDemVjaCAgPGsuY3plY2hAc2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW0VGTF0g
U2ltcGxpZnkgcnVuVGVzdCBmdW5jdGlvbiBieSBkZWZpbmluZyBkZWZhdWx0IGFyZ3VtZW50cy4K
LSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwNTI1Ci0K
LSAgICAgICAgUmV2aWV3ZWQgYnkgQ2hhbmcgU2h1LgotCi0gICAgICAgIERlZmF1bHQgYXJndW1l
bnRzIHdpbGwgc2ltcGxpZnkgbWFjcm8gUlVOX1RFU1QuCi0gICAgICAgIEZ1bmN0aW9uIHdpbGwg
b25seSBoYXZlIG9uZSBtYW5kYXRvcnkgYXJndW1lbnQsIGNhbGxiYWNrIHRlc3QgZnVuY3Rpb24u
Ci0gICAgICAgIEFkZGVkIHN0YXRpYyBtb2RpZmllcnMgdG8gY2FsbGJhY2sgZnVuY3Rpb25zLgot
Ci0gICAgICAgICogdGVzdHMvVW5pdFRlc3RVdGlscy9FV0tUZXN0QmFzZS5oOgotICAgICAgICAo
RVdLVGVzdEJhc2UpOgotICAgICAgICAqIHRlc3RzL3Rlc3RfZXdrX3ZpZXcuY3BwOgotICAgICAg
ICAoZXdrVmlld0VkaXRhYmxlR2V0Q2IpOgotICAgICAgICAoVEVTVCk6Ci0gICAgICAgIChld2tW
aWV3VXJpR2V0Q2IpOgotCi0yMDEyLTA3LTA4ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3Bo
ZS5kdW1lekBpbnRlbC5jb20+Ci0KLSAgICAgICAgW0VGTF0gUkVHUkVTU0lPTiAocjEyMjAzNSk6
IGZ1bGxzY3JlZW4vZXhpdC1mdWxsLXNjcmVlbi1pZnJhbWUuaHRtbCBpcyBjcmFzaGluZwotICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTA3MzUKLQotICAg
ICAgICBSZXZpZXdlZCBieSBBbnRvbmlvIEdvbWVzLgotCi0gICAgICAgIEtlZXAgYSByZWZlcmVu
Y2UgdG8gdGhlIEVsZW1lbnQgcGFzc2VkIHRvIGVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQoKSBz
bwotICAgICAgICB0aGF0IHdlIGNhbiByZXVzZSBpdCBsYXRlciBpbiBleGl0RnVsbFNjcmVlbkZv
ckVsZW1lbnQoKS4gVGhpcyBpcyBuZWVkZWQKLSAgICAgICAgYmVjYXVzZSB0aGUgRWxlbWVudCBw
YXNzZWQgdG8gZXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KCkgbWF5IGJlIG51bGwuCi0gICAgICAg
IFRoaXMgZml4ZXMgdGhlIGNyYXNoIGZvciB0aGUgZnVsbHNjcmVlbi9leGl0LWZ1bGwtc2NyZWVu
LWlmcmFtZS5odG1sCi0gICAgICAgIHRlc3QgaW50cm9kdWNlZCBpbiByMTIyMDM1LgotCi0gICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdlYkNv
cmU6OkNocm9tZUNsaWVudEVmbDo6ZW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudCk6Ci0gICAgICAg
IChXZWJDb3JlOjpDaHJvbWVDbGllbnRFZmw6OmV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudCk6Ci0g
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmg6Ci0gICAgICAgIChDaHJv
bWVDbGllbnRFZmwpOgotCi0yMDEyLTA3LTA3ICBKaW53b28gU29uZyAgPGppbndvbzcuc29uZ0Bz
YW1zdW5nLmNvbT4KLQotICAgICAgICBbRUZMXSBGaXggYnVpbGQgYnJlYWsgd2hlbiBBY2NlbGVy
YXRlZCBDb21wb3NpdGluZyBpcyBvbi4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTkwNzE4Ci0KLSAgICAgICAgVW5yZXZpZXdlZCBidWlsZCBmaXguCi0K
LSAgICAgICAgZXdrX3ZpZXdfYWNjZWxlcmF0ZWRfY29tcG9zaXRpbmdfWFhYIEFQSXMgYXJlIGlu
IGV3a192aWV3X3ByaXZhdGUuaAotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvUGFnZUNsaWVu
dEVmbC5jcHA6Ci0gICAgICAgIChQYWdlQ2xpZW50RWZsOjpjcmVhdGVFdmFzT2JqZWN0Rm9yQWNj
ZWxlcmF0ZWRDb21wb3NpdGluZyk6Ci0gICAgICAgIChQYWdlQ2xpZW50RWZsOjphY2NlbGVyYXRl
ZENvbXBvc2l0aW5nQ29udGV4dCk6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvUGFnZUNsaWVu
dEVmbC5oOgotICAgICAgICAoUGFnZUNsaWVudEVmbCk6Ci0KLTIwMTItMDctMDYgIFNlb2tqdSBL
d29uICA8c2Vva2p1Lmt3b25Ac2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW0VGTF0gQWRkIFdlYiBJ
bnNwZWN0b3IgdG8gV2ViS2l0LUVGTAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9ODM4NjUKLQotICAgICAgICBSZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFu
LgotCi0gICAgICAgIEVGTCBwb3J0IGltcGxlbWVudGF0aW9uIGZvciBXZWIgSW5zcGVjdG9yLgot
ICAgICAgICBJbXBsZW1lbnRhdGlvbiBvZiBJbnNwZWN0b3JDbGllbnRFZmwgYW5kIEluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50RWZsCi0gICAgICAgIGZvciB1c2luZyB0aGUgV2ViIEluc3BlY3RvciBp
biBXZWJLaXQtRUZMIHdpdGggbmV3IEVXSyBBUElzLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBv
cnQvSW5zcGVjdG9yQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6Om5vdGlmeVdlYklu
c3BlY3RvckRlc3Ryb3kpOgotICAgICAgICAoV2ViQ29yZSk6Ci0gICAgICAgIChJbnNwZWN0b3JG
cm9udGVuZFNldHRpbmdzRWZsKToKLSAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5k
U2V0dGluZ3NFZmw6OmdldFByb3BlcnR5KToKLSAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZy
b250ZW5kU2V0dGluZ3NFZmw6OnNldFByb3BlcnR5KToKLSAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckNsaWVudEVmbDo6SW5zcGVjdG9yQ2xpZW50RWZsKToKLSAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckNsaWVudEVmbDo6fkluc3BlY3RvckNsaWVudEVmbCk6Ci0gICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JDbGllbnRFZmw6Omluc3BlY3RvckRlc3Ryb3llZCk6Ci0gICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JDbGllbnRFZmw6Om9wZW5JbnNwZWN0b3JGcm9udGVuZCk6Ci0gICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnRFZmw6OmNsb3NlSW5zcGVjdG9yRnJvbnRlbmQpOgot
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50RWZsOjpicmluZ0Zyb250ZW5kVG9Gcm9u
dCk6Ci0gICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnRFZmw6OnNlbmRNZXNzYWdlVG9G
cm9udGVuZCk6Ci0gICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnRFZmw6OnJlbGVhc2VG
cm9udGVuZFBhZ2UpOgotICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50RWZsOjppbnNw
ZWN0b3JGaWxlc1BhdGgpOgotICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDbGll
bnRFZmw6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50RWZsKToKLSAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckZyb250ZW5kQ2xpZW50RWZsOjp+SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRFZmwpOgot
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRFZmw6OmxvY2FsaXplZFN0
cmluZ3NVUkwpOgotICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRFZmw6
OmhpZGRlblBhbmVscyk6Ci0gICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVu
dEVmbDo6YnJpbmdUb0Zyb250KToKLSAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5k
Q2xpZW50RWZsOjpjbG9zZVdpbmRvdyk6Ci0gICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9u
dGVuZENsaWVudEVmbDo6aW5zcGVjdGVkVVJMQ2hhbmdlZCk6Ci0gICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JGcm9udGVuZENsaWVudEVmbDo6YXR0YWNoV2luZG93KToKLSAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50RWZsOjpkZXRhY2hXaW5kb3cpOgotICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRFZmw6OnNldEF0dGFjaGVkV2luZG93SGVp
Z2h0KToKLSAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50RWZsOjpkZXN0
cm95SW5zcGVjdG9yV2luZG93KToKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JD
bGllbnRFZmwuaDoKLSAgICAgICAgKFdlYkNvcmUpOgotICAgICAgICAoSW5zcGVjdG9yQ2xpZW50
RWZsKToKLSAgICAgICAgKEluc3BlY3RvckZyb250ZW5kQ2xpZW50RWZsKToKLSAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50RWZsOjpkaXNjb25uZWN0SW5zcGVjdG9yQ2xp
ZW50KToKLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoX0V3a19WaWV3X1By
aXZhdGVfRGF0YSk6Ci0gICAgICAgIChfZXdrX3ZpZXdfcHJpdl9uZXcpOgotICAgICAgICAoZXdr
X3ZpZXdfd2ViX2luc3BlY3Rvcl9zaG93KToKLSAgICAgICAgKGV3a192aWV3X3dlYl9pbnNwZWN0
b3JfY2xvc2UpOgotICAgICAgICAoZXdrX3ZpZXdfd2ViX2luc3BlY3Rvcl92aWV3X2dldCk6Ci0g
ICAgICAgIChld2tfdmlld193ZWJfaW5zcGVjdG9yX3ZpZXdfc2V0KToKLSAgICAgICAgKiBld2sv
ZXdrX3ZpZXcuaDoKLQotMjAxMi0wNy0wNSAgS2lob25nIEt3b24gIDxraWhvbmcua3dvbkBzYW1z
dW5nLmNvbT4KLQotICAgICAgICBbRUZMXSBDaGFuZ2UgY2xhc3MgbmFtZSBmcm9tIE5vdGlmaWNh
dGlvbkNsaWVudEVmbCB0byBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwuCi0gICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDU0MgotCi0gICAgICAg
IFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgotCi0gICAgICAgIENoYW5n
ZSBjbGFzcyBuYW1lIGZyb20gTm90aWZpY2F0aW9uQ2xpZW50RWZsIHRvIE5vdGlmaWNhdGlvblBy
ZXNlbnRlckNsaWVudEVmbAotICAgICAgICB0byBiZSBpbiBsaW5lIHdpdGggb3RoZXIgcG9ydHMu
KHF0LCBjaHJvbWl1bSwgYmxhY2tiZXJyeSkKLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0No
cm9tZUNsaWVudEVmbC5jcHA6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9u
UHJlc2VudGVyQ2xpZW50RWZsLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvZWZsL1dl
YkNvcmVTdXBwb3J0L05vdGlmaWNhdGlvbkNsaWVudEVmbC5jcHAuCi0gICAgICAgIChXZWJDb3Jl
KToKLSAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6Tm90
aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsKToKLSAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNh
dGlvblByZXNlbnRlckNsaWVudEVmbDo6fk5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbCk6
Ci0gICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6OnNob3cp
OgotICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpjYW5j
ZWwpOgotICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpu
b3RpZmljYXRpb25PYmplY3REZXN0cm95ZWQpOgotICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0
aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpub3RpZmljYXRpb25Db250cm9sbGVyRGVzdHJveWVkKToK
LSAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6cmVxdWVz
dFBlcm1pc3Npb24pOgotICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xp
ZW50RWZsOjpjaGVja1Blcm1pc3Npb24pOgotICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9u
UHJlc2VudGVyQ2xpZW50RWZsOjpjYW5jZWxSZXF1ZXN0c0ZvclBlcm1pc3Npb24pOgotICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbC5oOiBSZW5h
bWVkIGZyb20gU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9uQ2xp
ZW50RWZsLmguCi0gICAgICAgIChXZWJDb3JlKToKLSAgICAgICAgKE5vdGlmaWNhdGlvblByZXNl
bnRlckNsaWVudEVmbCk6Ci0KLTIwMTItMDctMDIgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFp
bkBhcHBsZS5jb20+Ci0KLSAgICAgICAgRG8gbm90IGRvIGFueSBsb2dnaW5nIGluaXRpYWxpemF0
aW9uIHdoZW4gbG9nZ2luZyBpcyBkaXNhYmxlZAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTAyMjgKLQotICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBG
cmFzZXIuCi0KLSAgICAgICAgKiBld2svZXdrX21haW4uY3BwOgotICAgICAgICAoX2V3a19pbml0
X2JvZHkpOgotCi0yMDEyLTA3LTAyICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3Vu
Zy5jb20+Ci0KLSAgICAgICAgW0VGTF0gUmVuYW1lIE5vdGlmaWNhdGlvblByZXNlbnRlckVmbCB3
aXRoIE5vdGlmaWNhdGlvbkNsaWVudEVmbAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9OTAzNzAKLQotICAgICAgICBSZXZpZXdlZCBieSBDc2FiYSBPc3p0
cm9nb27DoWMuCi0KLSAgICAgICAgQnVnIDgwNDg4IHJlbmFtZWQgTm90aWZpY2F0aW9uUHJlc2Vu
dGVyIHdpdGggTm90aWZpY2F0aW9uQ2xpZW50LiBTbywgRUZMIHBvcnQgbmVlZHMgdG8gYWRqdXN0
IGl0IGFzIHdlbGwuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwu
Y3BwOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L05vdGlmaWNhdGlvbkNsaWVudEVmbC5jcHA6
IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRp
b25QcmVzZW50ZXJDbGllbnRFZmwuY3BwLgotICAgICAgICAoV2ViQ29yZSk6Ci0gICAgICAgIChX
ZWJDb3JlOjpOb3RpZmljYXRpb25DbGllbnRFZmw6Ok5vdGlmaWNhdGlvbkNsaWVudEVmbCk6Ci0g
ICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25DbGllbnRFZmw6On5Ob3RpZmljYXRpb25DbGll
bnRFZmwpOgotICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uQ2xpZW50RWZsOjpzaG93KToK
LSAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkNsaWVudEVmbDo6Y2FuY2VsKToKLSAgICAg
ICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkNsaWVudEVmbDo6bm90aWZpY2F0aW9uT2JqZWN0RGVz
dHJveWVkKToKLSAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkNsaWVudEVmbDo6bm90aWZp
Y2F0aW9uQ29udHJvbGxlckRlc3Ryb3llZCk6Ci0gICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRp
b25DbGllbnRFZmw6OnJlcXVlc3RQZXJtaXNzaW9uKToKLSAgICAgICAgKFdlYkNvcmU6Ok5vdGlm
aWNhdGlvbkNsaWVudEVmbDo6Y2hlY2tQZXJtaXNzaW9uKToKLSAgICAgICAgKFdlYkNvcmU6Ok5v
dGlmaWNhdGlvbkNsaWVudEVmbDo6Y2FuY2VsUmVxdWVzdHNGb3JQZXJtaXNzaW9uKToKLSAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25DbGllbnRFZmwuaDogUmVuYW1lZCBmcm9t
IFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRlckNs
aWVudEVmbC5oLgotICAgICAgICAoV2ViQ29yZSk6Ci0gICAgICAgIChOb3RpZmljYXRpb25DbGll
bnRFZmwpOgotCi0yMDEyLTA2LTI5ICBLcnp5c3p0b2YgQ3plY2ggIDxrLmN6ZWNoQHNhbXN1bmcu
Y29tPiwgVG9tYXN6IE1vcmF3c2tpIDx0Lm1vcmF3c2tpQHNhbXN1bmcuY29tPgotCi0gICAgICAg
IFtFRkxdIEltcGxlbWVudGF0aW9uIG9mIHRlc3RpbmcgZnJhbWV3b3JrIGFuZCB1bml0IHRlc3Rz
IGZvciBXZWJLaXQtRUZMIHBvcnQuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD02ODUwOQotCi0gICAgICAgIFJldmlld2VkIGJ5IENoYW5nIFNodS4KLQot
ICAgICAgICBUZXN0aW5nIGZyYW1ld29yayBpcyBiYXNlZCBvbiBndGVzdCBsaWJyYXJ5LiBHdGVz
dCBsaWJyYXJ5IGlzIHBhcnQgb2YgdGhlIFdlYktpdCBwcm9qZWN0LiBGcmFtZXdvcmsgaXMgZGV2
aWRlZCBpbnRvIGJhc2UgcGFydCBhbmQgdmlldyBwYXJ0LgotICAgICAgICBCYXNlIHBhcnQgdGFr
ZXMgY2FyZSBvZiBlZmwgaW5pdGlhbGl6YXRpb24sIGRlZmluZXMgdGVzdCBtYWNyb3MgYW5kIHBy
ZXBhcmVzIHRlc3QgdG8gcnVuLiBWaWV3IHBhcnQgaXMgYSBjb250ZXh0IG9mIGVhY2ggdGVzdC4K
LQotICAgICAgICAqIHRlc3RzL1VuaXRUZXN0VXRpbHMvRVdLVGVzdEJhc2UuY3BwOiBBZGRlZC4K
LSAgICAgICAgKEVXS1VuaXRUZXN0cyk6Ci0gICAgICAgIChFV0tVbml0VGVzdHM6OkVXS1Rlc3RC
YXNlOjppbml0KToKLSAgICAgICAgKEVXS1VuaXRUZXN0czo6RVdLVGVzdEJhc2U6OnNodXRkb3du
KToKLSAgICAgICAgKEVXS1VuaXRUZXN0czo6RVdLVGVzdEJhc2U6OnNodXRkb3duQWxsKToKLSAg
ICAgICAgKEVXS1VuaXRUZXN0czo6RVdLVGVzdEJhc2U6OnN0YXJ0VGVzdCk6Ci0gICAgICAgIChF
V0tVbml0VGVzdHM6OkVXS1Rlc3RCYXNlOjplbmRUZXN0KToKLSAgICAgICAgKEVXS1VuaXRUZXN0
czo6RVdLVGVzdEJhc2U6OmNyZWF0ZVRlc3QpOgotICAgICAgICAoRVdLVW5pdFRlc3RzOjpFV0tU
ZXN0QmFzZTo6cnVuVGVzdCk6Ci0gICAgICAgICogdGVzdHMvVW5pdFRlc3RVdGlscy9FV0tUZXN0
QmFzZS5oOiBBZGRlZC4KLSAgICAgICAgKEVXS1VuaXRUZXN0cyk6Ci0gICAgICAgIChFV0tUZXN0
QmFzZSk6Ci0gICAgICAgICogdGVzdHMvVW5pdFRlc3RVdGlscy9FV0tUZXN0Q29uZmlnLmg6IEFk
ZGVkLgotICAgICAgICAoQ29uZmlnKToKLSAgICAgICAgKiB0ZXN0cy9Vbml0VGVzdFV0aWxzL0VX
S1Rlc3RWaWV3LmNwcDogQWRkZWQuCi0gICAgICAgIChFV0tVbml0VGVzdHMpOgotICAgICAgICAo
RVdLVW5pdFRlc3RzOjpFV0tUZXN0RWNvcmVFdmFzOjpFV0tUZXN0RWNvcmVFdmFzKToKLSAgICAg
ICAgKEVXS1VuaXRUZXN0czo6RVdLVGVzdEVjb3JlRXZhczo6ZXZhcyk6Ci0gICAgICAgIChFV0tV
bml0VGVzdHM6OkVXS1Rlc3RFY29yZUV2YXM6OnNob3cpOgotICAgICAgICAoRVdLVW5pdFRlc3Rz
OjpFV0tUZXN0Vmlldzo6RVdLVGVzdFZpZXcpOgotICAgICAgICAoRVdLVW5pdFRlc3RzOjpFV0tU
ZXN0Vmlldzo6aW5pdCk6Ci0gICAgICAgIChFV0tVbml0VGVzdHM6OkVXS1Rlc3RWaWV3OjpzaG93
KToKLSAgICAgICAgKEVXS1VuaXRUZXN0czo6RVdLVGVzdFZpZXc6Om1haW5GcmFtZSk6Ci0gICAg
ICAgIChFV0tVbml0VGVzdHM6OkVXS1Rlc3RWaWV3OjpldmFzKToKLSAgICAgICAgKEVXS1VuaXRU
ZXN0czo6RVdLVGVzdFZpZXc6OmJpbmRFdmVudHMpOgotICAgICAgICAqIHRlc3RzL1VuaXRUZXN0
VXRpbHMvRVdLVGVzdFZpZXcuaDogQWRkZWQuCi0gICAgICAgIChFV0tVbml0VGVzdHMpOgotICAg
ICAgICAoRVdLVGVzdEVjb3JlRXZhcyk6Ci0gICAgICAgIChFV0tUZXN0Vmlldyk6Ci0gICAgICAg
IChFV0tVbml0VGVzdHM6OkVXS1Rlc3RWaWV3Ojp3ZWJWaWV3KToKLSAgICAgICAgKiB0ZXN0cy9y
ZXNvdXJjZXMvZGVmYXVsdF90ZXN0X3BhZ2UuaHRtbDogQWRkZWQuCi0gICAgICAgICogdGVzdHMv
dGVzdF9ld2tfdmlldy5jcHA6IEFkZGVkLgotICAgICAgICAoZXdrVmlld0VkaXRhYmxlR2V0Q2Ip
OgotICAgICAgICAoVEVTVCk6Ci0gICAgICAgIChld2tWaWV3VXJpR2V0Q2IpOgotICAgICAgICAq
IHRlc3RzL3Rlc3RfcnVubmVyLmNwcDogQWRkZWQuCi0gICAgICAgIChwYXJzZUN1c3RvbUFyZ3Vt
ZW50cyk6Ci0gICAgICAgIChtYWluKToKLQotMjAxMi0wNi0yOSAgS29ucmFkIFBpYXNjaWsgIDxr
cGlhc2Npa0ByaW0uY29tPgotCi0gICAgICAgIERvbid0IGhhcmRjb2RlIHRhcmdldCBkcGkgb2Yg
MTYwIChpdCBzaG91bGQgYmUgOTYgb24gZGVza3RvcCkKLSAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg4MTE0Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQWRh
bSBCYXJ0aC4KLQotICAgICAgICBVcGRhdGVkIHRoZSBjYWxsIHRvIGNvbXB1dGVWaWV3cG9ydEF0
dHJpYnV0ZXMuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBv
cnRFZmwuY3BwOgotICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpkdW1wQ29uZmln
dXJhdGlvbkZvclZpZXdwb3J0KToKLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAg
ICAoX2V3a192aWV3X3ZpZXdwb3J0X2F0dHJpYnV0ZXNfY29tcHV0ZSk6Ci0KLTIwMTItMDYtMjcg
IFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgotCi0gICAgICAgIFVu
cmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMjEzOTguCi0gICAgICAgIGh0dHA6Ly90cmFjLndlYmtp
dC5vcmcvY2hhbmdlc2V0LzEyMTM5OAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTAxMzYKLQotICAgICAgICBicm9rZSBlZmwgYnVpbGQgKFJlcXVlc3Rl
ZCBieSByeXVhbiBvbiAjd2Via2l0KS4KLQotICAgICAgICAqIHRlc3RzL1VuaXRUZXN0VXRpbHMv
RVdLVGVzdEJhc2UuY3BwOiBSZW1vdmVkLgotICAgICAgICAqIHRlc3RzL1VuaXRUZXN0VXRpbHMv
RVdLVGVzdEJhc2UuaDogUmVtb3ZlZC4KLSAgICAgICAgKiB0ZXN0cy9Vbml0VGVzdFV0aWxzL0VX
S1Rlc3RDb25maWcuaDogUmVtb3ZlZC4KLSAgICAgICAgKiB0ZXN0cy9Vbml0VGVzdFV0aWxzL0VX
S1Rlc3RWaWV3LmNwcDogUmVtb3ZlZC4KLSAgICAgICAgKiB0ZXN0cy9Vbml0VGVzdFV0aWxzL0VX
S1Rlc3RWaWV3Lmg6IFJlbW92ZWQuCi0gICAgICAgICogdGVzdHMvcmVzb3VyY2VzL2RlZmF1bHRf
dGVzdF9wYWdlLmh0bWw6IFJlbW92ZWQuCi0gICAgICAgICogdGVzdHMvdGVzdF9ld2tfdmlldy5j
cHA6IFJlbW92ZWQuCi0gICAgICAgICogdGVzdHMvdGVzdF9ydW5uZXIuY3BwOiBSZW1vdmVkLgot
Ci0yMDEyLTA2LTI3ICBLcnp5c3p0b2YgQ3plY2ggIDxrLmN6ZWNoQHNhbXN1bmcuY29tPgotCi0g
ICAgICAgIFtFRkxdIEltcGxlbWVudGF0aW9uIG9mIHRlc3RpbmcgZnJhbWV3b3JrIGFuZCB1bml0
IHRlc3RzIGZvciBXZWJLaXQtRUZMIHBvcnQuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD02ODUwOQotCi0gICAgICAgIFJldmlld2VkIGJ5IENoYW5nIFNo
dS4KLQotICAgICAgICBUZXN0aW5nIGZyYW1ld29yayBpcyBiYXNlZCBvbiBndGVzdCBsaWJyYXJ5
LiBHdGVzdCBsaWJyYXJ5IGlzIHBhcnQgb2YgdGhlIFdlYktpdCBwcm9qZWN0LiBGcmFtZXdvcmsg
aXMgZGV2aWRlZCBpbnRvIGJhc2UgcGFydCBhbmQgdmlldyBwYXJ0LgotICAgICAgICBCYXNlIHBh
cnQgdGFrZXMgY2FyZSBvZiBlZmwgaW5pdGlhbGl6YXRpb24sIGRlZmluZXMgdGVzdCBtYWNyb3Mg
YW5kIHByZXBhcmVzIHRlc3QgdG8gcnVuLiBWaWV3IHBhcnQgaXMgYSBjb250ZXh0IG9mIGVhY2gg
dGVzdC4KLQotICAgICAgICAqIHRlc3RzL1VuaXRUZXN0VXRpbHMvRVdLVGVzdEJhc2UuY3BwOiBB
ZGRlZC4KLSAgICAgICAgKEVXS1VuaXRUZXN0cyk6Ci0gICAgICAgIChFV0tVbml0VGVzdHM6OkVX
S1Rlc3RCYXNlOjppbml0KToKLSAgICAgICAgKEVXS1VuaXRUZXN0czo6RVdLVGVzdEJhc2U6OnNo
dXRkb3duKToKLSAgICAgICAgKEVXS1VuaXRUZXN0czo6RVdLVGVzdEJhc2U6OnNodXRkb3duQWxs
KToKLSAgICAgICAgKEVXS1VuaXRUZXN0czo6RVdLVGVzdEJhc2U6OnN0YXJ0VGVzdCk6Ci0gICAg
ICAgIChFV0tVbml0VGVzdHM6OkVXS1Rlc3RCYXNlOjplbmRUZXN0KToKLSAgICAgICAgKEVXS1Vu
aXRUZXN0czo6RVdLVGVzdEJhc2U6OmNyZWF0ZVRlc3QpOgotICAgICAgICAoRVdLVW5pdFRlc3Rz
OjpFV0tUZXN0QmFzZTo6cnVuVGVzdCk6Ci0gICAgICAgICogdGVzdHMvVW5pdFRlc3RVdGlscy9F
V0tUZXN0QmFzZS5oOiBBZGRlZC4KLSAgICAgICAgKEVXS1VuaXRUZXN0cyk6Ci0gICAgICAgIChF
V0tUZXN0QmFzZSk6Ci0gICAgICAgICogdGVzdHMvVW5pdFRlc3RVdGlscy9FV0tUZXN0Q29uZmln
Lmg6IEFkZGVkLgotICAgICAgICAoQ29uZmlnKToKLSAgICAgICAgKiB0ZXN0cy9Vbml0VGVzdFV0
aWxzL0VXS1Rlc3RWaWV3LmNwcDogQWRkZWQuCi0gICAgICAgIChFV0tVbml0VGVzdHMpOgotICAg
ICAgICAoRVdLVW5pdFRlc3RzOjpFV0tUZXN0RWNvcmVFdmFzOjpFV0tUZXN0RWNvcmVFdmFzKToK
LSAgICAgICAgKEVXS1VuaXRUZXN0czo6RVdLVGVzdEVjb3JlRXZhczo6ZXZhcyk6Ci0gICAgICAg
IChFV0tVbml0VGVzdHM6OkVXS1Rlc3RFY29yZUV2YXM6OnNob3cpOgotICAgICAgICAoRVdLVW5p
dFRlc3RzOjpFV0tUZXN0Vmlldzo6RVdLVGVzdFZpZXcpOgotICAgICAgICAoRVdLVW5pdFRlc3Rz
OjpFV0tUZXN0Vmlldzo6aW5pdCk6Ci0gICAgICAgIChFV0tVbml0VGVzdHM6OkVXS1Rlc3RWaWV3
OjpzaG93KToKLSAgICAgICAgKEVXS1VuaXRUZXN0czo6RVdLVGVzdFZpZXc6Om1haW5GcmFtZSk6
Ci0gICAgICAgIChFV0tVbml0VGVzdHM6OkVXS1Rlc3RWaWV3OjpldmFzKToKLSAgICAgICAgKEVX
S1VuaXRUZXN0czo6RVdLVGVzdFZpZXc6OmJpbmRFdmVudHMpOgotICAgICAgICAqIHRlc3RzL1Vu
aXRUZXN0VXRpbHMvRVdLVGVzdFZpZXcuaDogQWRkZWQuCi0gICAgICAgIChFV0tVbml0VGVzdHMp
OgotICAgICAgICAoRVdLVGVzdEVjb3JlRXZhcyk6Ci0gICAgICAgIChFV0tUZXN0Vmlldyk6Ci0g
ICAgICAgIChFV0tVbml0VGVzdHM6OkVXS1Rlc3RWaWV3Ojp3ZWJWaWV3KToKLSAgICAgICAgKiB0
ZXN0cy9yZXNvdXJjZXMvZGVmYXVsdF90ZXN0X3BhZ2UuaHRtbDogQWRkZWQuCi0gICAgICAgICog
dGVzdHMvdGVzdF9ld2tfdmlldy5jcHA6IEFkZGVkLgotICAgICAgICAoZXdrVmlld0VkaXRhYmxl
R2V0Q2IpOgotICAgICAgICAoVEVTVCk6Ci0gICAgICAgIChld2tWaWV3VXJpR2V0Q2IpOgotICAg
ICAgICAqIHRlc3RzL3Rlc3RfcnVubmVyLmNwcDogQWRkZWQuCi0gICAgICAgIChwYXJzZUN1c3Rv
bUFyZ3VtZW50cyk6Ci0gICAgICAgIChtYWluKToKLQotMjAxMi0wNi0yNSAgTWFyayBIYWhuZW5i
ZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgotCi0gICAgICAgIEpTTG9jayBzaG91bGQgYmUg
cGVyLUpTR2xvYmFsRGF0YQotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9ODkxMjMKLQotICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KLQot
ICAgICAgICBDaGFuZ2VkIGFsbCBzaXRlcyB0aGF0IHVzZWQgSlNMb2NrIHRvIGluc3RlYWQgdXNl
IHRoZSBuZXcgSlNMb2NrSG9sZGVyCi0gICAgICAgIGFuZCBwYXNzIGluIHRoZSBjb3JyZWN0IEpT
IGNvbnRleHQgdGhhdCB0aGUgY29kZSBpcyBhYm91dCB0byBpbnRlcmFjdCB3aXRoIHRoYXQgCi0g
ICAgICAgIG5lZWRzIHByb3RlY3Rpb24uIEFsc28gYWRkZWQgYSBjb3VwbGUgSlNMb2NrcyB0byBw
bGFjZXMgdGhhdCBkaWRuJ3QgYWxyZWFkeSAKLSAgICAgICAgaGF2ZSBpdCB0aGF0IG5lZWRlZCBp
dC4KLQotICAgICAgICAqIGV3ay9ld2tfZnJhbWUuY3BwOgotICAgICAgICAoZXdrX2ZyYW1lX3Nj
cmlwdF9leGVjdXRlKToKLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoZXdr
X3ZpZXdfanNfb2JqZWN0X2FkZCk6Ci0KLTIwMTItMDYtMjYgIEd5dXlvdW5nIEtpbSAgPGd5dXlv
dW5nLmtpbUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBDaGFuZ2UgcmV0dXJuIHR5cGUgaW4gYmFu
ZHdpZHRoIGF0dHJpYnV0ZSBvZiBuZXR3b3JrIGluZm9ybWF0aW9uIEFQSQotICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODk5NTkKLQotICAgICAgICBSZXZp
ZXdlZCBieSBBZGFtIEJhcnRoLgotCi0gICAgICAgIEFjY29yZGluZyB0byBuZXR3b3JrIGluZm9y
bWF0aW9uIEFQSSBzcGVjLCBiYW5kd2lkdGggYXR0cmlidXRlIHNob3VsZCByZXR1cm4gZG91Ymxl
IHR5cGUuCi0gICAgICAgIEJ1dCwgZXhpc3RpbmcgaW1wbGVtZW50YXRpb24gaGFzIHVzZWQgKmxv
bmcqIGFuZCAqdW5zaWduZWQgaW50KiB0eXBlcy4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L05ldHdvcmtJbmZvQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtJbmZv
Q2xpZW50RWZsOjpiYW5kd2lkdGgpOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L05ldHdvcmtJ
bmZvQ2xpZW50RWZsLmg6Ci0gICAgICAgIChOZXR3b3JrSW5mb0NsaWVudEVmbCk6Ci0KLTIwMTIt
MDYtMjUgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KLQotICAgICAg
ICBbRUZMXSBJbXBsZW1lbnQgTmV0d29yayBJbmZvcm1hdGlvbiBBUEkKLSAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg3MDY3Ci0KLSAgICAgICAgUmV2aWV3
ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCi0KLSAgICAgICAgSW1wbGVtZW50IE5l
dHdvcmtJbmZvQ2xpZW50RWZsLmNwcCB1c2luZyBlZXplIGxpYnJhcnkuIEhvd2V2ZXIsIHRoaXMg
cGF0Y2ggb25seQotICAgICAgICBzdXBwb3J0cyB0aGlzIGZlYXR1cmUgb24gZXRoZXJuZXQgaW50
ZXJmYWNlLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvTmV0d29ya0luZm9DbGllbnRFZmwu
Y3BwOgotICAgICAgICAoV2ViQ29yZSk6Ci0gICAgICAgIChXZWJDb3JlOjpOZXR3b3JrSW5mb0Ns
aWVudEVmbDo6TmV0d29ya0luZm9DbGllbnRFZmwpOgotICAgICAgICAoV2ViQ29yZTo6TmV0d29y
a0luZm9DbGllbnRFZmw6OnN0YXJ0VXBkYXRpbmcpOgotICAgICAgICAoV2ViQ29yZTo6TmV0d29y
a0luZm9DbGllbnRFZmw6OnN0b3BVcGRhdGluZyk6Ci0gICAgICAgIChXZWJDb3JlOjpOZXR3b3Jr
SW5mb0NsaWVudEVmbDo6YmFuZHdpZHRoKToKLSAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtJbmZv
Q2xpZW50RWZsOjptZXRlcmVkKToKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9OZXR3b3JrSW5m
b0NsaWVudEVmbC5oOgotICAgICAgICAoTmV0d29ya0luZm9DbGllbnRFZmwpOgotCi0yMDEyLTA2
LTIzICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KLQotICAgICAg
ICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTIxMDU4LgotICAgICAgICBodHRwOi8vdHJhYy53
ZWJraXQub3JnL2NoYW5nZXNldC8xMjEwNTgKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTg5ODA5Ci0KLSAgICAgICAgUGF0Y2ggY2F1c2VzIHBsdWdpbnMg
dGVzdHMgdG8gY3Jhc2ggaW4gR1RLIGRlYnVnIGJ1aWxkcwotICAgICAgICAoUmVxdWVzdGVkIGJ5
IHpkb2JlcnNlayBvbiAjd2Via2l0KS4KLQotICAgICAgICAqIGV3ay9ld2tfZnJhbWUuY3BwOgot
ICAgICAgICAoZXdrX2ZyYW1lX3NjcmlwdF9leGVjdXRlKToKLSAgICAgICAgKiBld2svZXdrX3Zp
ZXcuY3BwOgotICAgICAgICAoZXdrX3ZpZXdfanNfb2JqZWN0X2FkZCk6Ci0KLTIwMTItMDYtMjIg
IFJ5dWFuIENob2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxdW1dL
Ml0gU3VwcG9ydCBrZXlib2FyZCBldmVudAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODkyNjgKLQotICAgICAgICBSZXZpZXdlZCBieSBDaGFuZyBTaHUu
Ci0KLSAgICAgICAgRXh0cmFjdCBrZXlEb3duQ29tbWFuZHNNYXAgYW5kIGtleVByZXNzQ29tbWFu
ZHNNYXAgdG8gc2hhcmUgV2ViS2l0MS9FZmwgYW5kIFdlYktpdDIvRWZsLgotCi0gICAgICAgICog
V2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkVk
aXRvckNsaWVudEVmbDo6aW50ZXJwcmV0S2V5RXZlbnQpOgotCi0yMDEyLTA2LTIwICBNYXJrIEhh
aG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+Ci0KLSAgICAgICAgSlNMb2NrIHNob3Vs
ZCBiZSBwZXItSlNHbG9iYWxEYXRhCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD04OTEyMwotCi0gICAgICAgIFJldmlld2VkIGJ5IEdhdmluIEJhcnJhY2xv
dWdoLgotCi0gICAgICAgIENoYW5nZWQgYWxsIHNpdGVzIHRoYXQgdXNlZCBKU0xvY2sgdG8gaW5z
dGVhZCB1c2UgdGhlIG5ldyBKU0xvY2tIb2xkZXIKLSAgICAgICAgYW5kIHBhc3MgaW4gdGhlIGNv
cnJlY3QgSlMgY29udGV4dCB0aGF0IHRoZSBjb2RlIGlzIGFib3V0IHRvIGludGVyYWN0IHdpdGgg
dGhhdCAKLSAgICAgICAgbmVlZHMgcHJvdGVjdGlvbi4KLQotICAgICAgICAqIGV3ay9ld2tfZnJh
bWUuY3BwOgotICAgICAgICAoZXdrX2ZyYW1lX3NjcmlwdF9leGVjdXRlKToKLSAgICAgICAgKiBl
d2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoZXdrX3ZpZXdfanNfb2JqZWN0X2FkZCk6Ci0KLTIw
MTItMDYtMjIgIEFteSBPdXN0ZXJob3V0ICA8YW91c3RlcmhAY2hyb21pdW0ub3JnPgotCi0gICAg
ICAgIFJlbmFtZWQgRGV2aWNlT3JpZW50YXRpb24gdG8gRGV2aWNlT3JpZW50YXRpb25EYXRhCi0g
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODY2MwotCi0g
ICAgICAgIFJldmlld2VkIGJ5IFN0ZXZlIEJsb2NrLgotCi0gICAgICAgIFVwZGF0ZWQgZmlsZXMg
dG8gdXNlIHRoZSByZW5hbWVkIERldmljZU9yaWVudGF0aW9uRGF0YSBpbnN0ZWFkIG9mIERldmlj
ZU9yaWVudGF0aW9uLgotICAgICAgICBUaGlzIGNoYW5nZSBtYWtlcyBEZXZpY2VPcmllbnRhdGlv
bkRhdGEgY29uc2lzdGVudCB3aXRoIERldmljZU1vdGlvbkRhdGEuCi0gICAgICAgIAotICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0RldmljZU9yaWVudGF0aW9uQ2xpZW50RWZsLmg6Ci0gICAgICAg
IChEZXZpY2VPcmllbnRhdGlvbkNsaWVudEVmbCk6Ci0KLTIwMTItMDYtMTkgIFNlcmdpbyBWaWxs
YXIgU2VuaW4gIDxzdmlsbGFyQGlnYWxpYS5jb20+Ci0KLSAgICAgICAgQ2FsbGluZyBuYXRpdmVJ
bWFnZUZvckN1cnJlbnRGcmFtZSgpIGNhdXNlcyBhc3NlcnRpb24gZmFpbHVyZTogbV92ZXJpZmll
ci5pc1NhZmVUb1VzZSgpCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD02NzU4MgotCi0gICAgICAgIFJldmlld2VkIGJ5IERhdmlkIExldmluLgotCi0gICAg
ICAgIFVzZSBzeW5jaHJvbm91c05hdGl2ZUljb25Gb3JQYWdlVVJMKCkgdG8gcmV0cmlldmUgZmF2
aWNvbnMuCi0KLSAgICAgICAgKiBld2svZXdrX2hpc3RvcnkuY3BwOgotICAgICAgICAoZXdrX2hp
c3RvcnlfaXRlbV9pY29uX3N1cmZhY2VfZ2V0KToKLSAgICAgICAgKGV3a19oaXN0b3J5X2l0ZW1f
aWNvbl9vYmplY3RfYWRkKToKLSAgICAgICAgKiBld2svZXdrX3NldHRpbmdzLmNwcDoKLSAgICAg
ICAgKGV3a19zZXR0aW5nc19pY29uX2RhdGFiYXNlX2ljb25fc3VyZmFjZV9nZXQpOgotICAgICAg
ICAoZXdrX3NldHRpbmdzX2ljb25fZGF0YWJhc2VfaWNvbl9vYmplY3RfYWRkKToKLQotMjAxMi0w
Ni0xOSAgQ2hyaXN0b3BoZSBEdW1leiAgPGNocmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgotCi0g
ICAgICAgIFtFRkxdIEVGTCdzIExheW91dFRlc3RDb250cm9sbGVyIGRvZXMgbm90IHN1cHBvcnQg
c2V0VGV4dERpcmVjdGlvbgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9ODc0ODEKLQotICAgICAgICBSZXZpZXdlZCBieSBIYWppbWUgTW9yaXRhLgotCi0g
ICAgICAgIEFkZCBuZXcgRXdrX1ZpZXcgbWV0aG9kIHRvIHNldCB0aGUgdGV4dCBkaXJlY3Rpb24s
IGJ5IGNhbGxpbmcKLSAgICAgICAgRWRpdG9yOjpzZXRCYXNlV3JpdGluZ0RpcmVjdGlvbigpIGlu
dGVybmFsbHksIGFzIE1hYyBhbmQgQ2hyb21pdW0KLSAgICAgICAgcG9ydHMgZG8uCi0KLSAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcDoKLSAgICAgICAgKiBl
d2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoZXdrX3ZpZXdfdGV4dF9kaXJlY3Rpb25fc2V0KToK
LSAgICAgICAgKiBld2svZXdrX3ZpZXcuaDoKLQotMjAxMi0wNi0xNSAgQ2hyaXN0b3BoZSBEdW1l
eiAgPGNocmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgotCi0gICAgICAgIFtFRkxdIEVGTCdzIExh
eW91dFRlc3RDb250cm9sbGVyIGRvZXMgbm90IHN1cHBvcnQgdGl0bGVUZXh0RGlyZWN0aW9uCi0g
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NjQ3NQotCi0g
ICAgICAgIFJldmlld2VkIGJ5IEhhamltZSBNb3JpdGEuCi0KLSAgICAgICAgRW1pdCB0aGUgInRp
dGxlLGNoYW5nZWQiIHNpZ25hbCBldmVuIGlmIHRoZSB0aXRsZSBkaXJlY3Rpb24gaGFzCi0gICAg
ICAgIGNoYW5nZWQgYnV0IG5vdCBpdHMgdGV4dC4KLQotICAgICAgICAqIGV3ay9ld2tfZnJhbWUu
Y3BwOgotICAgICAgICAoZXdrX2ZyYW1lX3RpdGxlX3NldCk6Ci0KLTIwMTItMDYtMTQgIFJ5dWFu
IENob2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxdIE1vdmUgY3Vy
c29yIHJlbGF0ZWQgY29kZSBmcm9tIFdpZGdldEVmbCB0byBld2tfdmlldyBhbmQgRWZsU2NyZWVu
VXRpbGl0aWVzLgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODg4MDMKLQotICAgICAgICBSZXZpZXdlZCBieSBDaGFuZyBTaHUuCi0KLSAgICAgICAgQmVj
YXVzZSBXZWJQcm9jZXNzIGNhbiBub3QgY29udHJvbCBjdXJzb3IsCi0gICAgICAgIHNldEN1cnNv
ciBzaG91bGQgYmUgcGFzc2VkIHRvIENocm9tZUNsaWVudCBsaWtlIG90aGVyIHBvcnRzLgotCi0g
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdl
YkNvcmU6OkNocm9tZUNsaWVudEVmbDo6c2V0Q3Vyc29yKToKLSAgICAgICAgKiBld2svZXdrX3Zp
ZXcuY3BwOgotICAgICAgICAoX0V3a19WaWV3X1ByaXZhdGVfRGF0YSk6Ci0gICAgICAgIChfZXdr
X3ZpZXdfcHJpdl9uZXcpOiBDaGVjayB3aGV0aGVyIGVjb3JlX3ggY2FuIGJlIHVzZWQuCi0gICAg
ICAgIChfZXdrX3ZpZXdfcHJpdl9kZWwpOgotICAgICAgICAoX2V3a192aWV3X3NtYXJ0X2FkZCk6
Ci0gICAgICAgIENoYW5nZSBvcmRlciBvZiBpbml0aWFsaXphdGlvbiB0byB1c2UgYmFzZSBzdHJ1
Y3R1cmUgaW4gX2V3a192aWV3X3ByaXZfbmV3LgotICAgICAgICAoZXdrX3ZpZXdfY3Vyc29yX3Nl
dCk6IE1vdmVkIGZyb20gV2lkZ2V0OjphcHBseUN1cnNvci4KLSAgICAgICAgKiBld2svZXdrX3Zp
ZXdfcHJpdmF0ZS5oOgotICAgICAgICAoV2ViQ29yZSk6Ci0KLTIwMTItMDYtMTQgIFN1ZGFyc2Fu
YSBOYWdpbmVuaSAgPHN1ZGFyc2FuYS5uYWdpbmVuaUBsaW51eC5pbnRlbC5jb20+Ci0KLSAgICAg
ICAgW0VGTF0gW0RSVF0gSW1wbGVtZW50IHNldERvbWFpblJlbGF4YXRpb25Gb3JiaWRkZW5Gb3JV
UkxTY2hlbWUgaW4gRUZMIERSVAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODQ1NzcKLQotICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtlIE5pd2EuCi0K
LSAgICAgICAgQWRkIG1pc3NpbmcgaW1wbGVtZW50YXRpb24gc2V0RG9tYWluUmVsYXhhdGlvbkZv
cmJpZGRlbkZvclVSTFNjaGVtZSB0bwotICAgICAgICBFRkwncyBEdW1wUmVuZGVyVHJlZVN1cHBv
cnQgdG8gYWxsb3cgZGlzYWJsaW5nIGRvbWFpbiByZWxheGF0aW9uLgotCi0gICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcDoKLSAgICAgICAgKER1bXBS
ZW5kZXJUcmVlU3VwcG9ydEVmbDo6c2V0RG9tYWluUmVsYXhhdGlvbkZvcmJpZGRlbkZvclVSTFNj
aGVtZSk6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZs
Lmg6Ci0KLTIwMTItMDYtMTMgIEFteSBPdXN0ZXJob3V0ICA8YW91c3RlcmhAY2hyb21pdW0ub3Jn
PgotCi0gICAgICAgIFJlbmFtZSBjdXJyZW50RGV2aWNlTW90aW9uIHRvIGxhc3RNb3Rpb24gaW4g
RGV2aWNlTW90aW9uQ2xpZW50Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD04ODg1NAotCi0gICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCi0KLSAg
ICAgICAgUmVuYW1lIHRoZSBmdW5jdGlvbiBjdXJyZW50RGV2aWNlTW90aW9uIHRvIGxhc3RNb3Rp
b24gaW4gRGV2aWNlTW90aW9uQ2xpZW50LgotICAgICAgICBUaGlzIG1ha2VzIGl0IGNvbnNpc3Rl
bnQgd2l0aCB0aGUgc2ltaWxhciBmdW5jdGlvbiBsYXN0T3JpZW50YXRpb24gaW4gRGV2aWNlT3Jp
ZW50YXRpb25DbGllbnQuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EZXZpY2VNb3Rpb25D
bGllbnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29yZTo6RGV2aWNlTW90aW9uQ2xpZW50RWZsOjps
YXN0TW90aW9uKToKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EZXZpY2VNb3Rpb25DbGllbnRF
ZmwuaDoKLSAgICAgICAgKERldmljZU1vdGlvbkNsaWVudEVmbCk6Ci0KLTIwMTItMDYtMTIgIENo
cmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KLQotICAgICAgICBb
RUZMXSBFbmFibGUgU0hBRE9XX0RPTSBmbGFnCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD04NzczMgotCi0gICAgICAgIFJldmlld2VkIGJ5IEtlbnRhcm8g
SGFyYS4KLQotICAgICAgICBBZGQgRXdrIHNldHRpbmcgdG8gdG9nZ2xlIFNoYWRvdyBET00gc3Vw
cG9ydCBhdCBydW50aW1lLgotCi0gICAgICAgICogZXdrL2V3a19zZXR0aW5ncy5jcHA6Ci0gICAg
ICAgIChld2tfc2V0dGluZ3Nfc2hhZG93X2RvbV9lbmFibGVfZ2V0KToKLSAgICAgICAgKGV3a19z
ZXR0aW5nc19zaGFkb3dfZG9tX2VuYWJsZV9zZXQpOgotICAgICAgICAqIGV3ay9ld2tfc2V0dGlu
Z3MuaDoKLQotMjAxMi0wNi0xMSAgS2F1c3R1YmggQXRyYXdhbGthciAgPGthdXN0dWJoQG1vdG9y
b2xhLmNvbT4KLQotICAgICAgICBbRFJUXSBMVEM6OiBjb3VudGVyVmFsdWVGb3JFbGVtZW50QnlJ
ZCgpIGNvdWxkIGJlIG1vdmVkIHRvIEludGVybmFscy4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg0NDA2Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgSGFq
aW1lIE1vcml0YS4KLQotICAgICAgICBNb3ZlIHRoZSBjb3VudGVyVmFsdWVGb3JFbGVtZW50QnlJ
ZCBmcm9tIExheW91dFRlc3RDb3Ryb2xsZXIgdG8gSW50ZXJuYWxzIGFuZAotICAgICAgICByZW1v
dmUgdGhlIG9sZCBwbGF0Zm9ybSBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbnMgYXMgaXQgZXhjbHVz
aXZlbHkgdGVzdHMgV2ViQ29yZSBmdW5jdGlvbmFsaXR5LgotCi0gICAgICAgICogV2ViQ29yZVN1
cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcDoKLQotMjAxMi0wNi0wNSAgQWRhbSBC
YXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgotCi0gICAgICAgIFJlbW92ZSBzdXBwb3J0IGZvciB0
YXJnZXQtZGVuc2l0eWRwaSBpbiB0aGUgdmlld3BvcnQgbWV0YSB0YWcKLSAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg4MDQ3Ci0KLSAgICAgICAgUmV2aWV3
ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCi0KLSAgICAgICAgKiBld2svZXdrX3Zp
ZXcuY3BwOgotICAgICAgICAoX2V3a192aWV3X3ByaXZfbmV3KToKLQotMjAxMi0wNi0wNSAgRG9u
Z3dvbyBJbSAgPGR3LmltQHNhbXN1bmcuY29tPgotCi0gICAgICAgIEFkZCAnaXNQcm90b2NvbEhh
bmRsZXJSZWdpc3RlcmVkJyBhbmQgJ3VucmVnaXN0ZXJQcm90b2NvbEhhbmRsZXInLgotICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzMxNzYKLQotICAgICAg
ICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgotCi0gICAgICAgIFR3byBtb3JlIEFQSXMgYXJlIGFk
ZGVkIGluIEN1c3RvbSBTY2hlbWUgSGFuZGxlciBzcGVjaWZpY2F0aW9uLgotICAgICAgICBodHRw
Oi8vZGV2LnczLm9yZy9odG1sNS9zcGVjL092ZXJ2aWV3Lmh0bWwjY3VzdG9tLWhhbmRsZXJzCi0g
ICAgICAgIE9uZSBpcyAnaXNQcm90b2NvbEhhbmRsZXJSZWdpc3RlcmVkJyB0byBxdWVyeSB3aGV0
aGVyIHRoZSBzcGVjaWZpYyBVUkwKLSAgICAgICAgaXMgcmVnaXN0ZXJlZCBvciBub3QuCi0gICAg
ICAgIFRoZSBvdGhlciBpcyAndW5yZWdpc3RlclByb3RvY29sSGFuZGxlcicgdG8gcmVtb3ZlIHRo
ZSByZWdpc3RlcmVkIFVSTC4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVu
dEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpjdXN0b21IYW5kbGVyRGF0YUNyZWF0ZSk6Ci0g
ICAgICAgIChXZWJDb3JlOjpjdXN0b21IYW5kbGVyRGF0YURlbGV0ZSk6Ci0gICAgICAgIChXZWJD
b3JlOjpDaHJvbWVDbGllbnRFZmw6OnJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyKToKLSAgICAgICAg
KFdlYkNvcmUpOgotICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZsOjppc1Byb3RvY29s
SGFuZGxlclJlZ2lzdGVyZWQpOiBRdWVyeSBpZiB0aGUgaGFuZGxlciBpcyByZWdpc3RlcmVkLgot
ICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZsOjp1bnJlZ2lzdGVyUHJvdG9jb2xIYW5k
bGVyKTogVW5yZWdpc3RlciB0aGUgcmVnaXN0ZXJlZCBoYW5kbGVyLgotICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oOgotICAgICAgICAoQ2hyb21lQ2xpZW50RWZsKToK
LSAgICAgICAgKiBld2svZXdrX2N1c3RvbV9oYW5kbGVyLmNwcDoKLSAgICAgICAgKGV3a19jdXN0
b21faGFuZGxlcl9pc19wcm90b2NvbF9oYW5kbGVyX3JlZ2lzdGVyZWQpOiBRdWVyeSBpZiB0aGUg
aGFuZGxlciBpcyByZWdpc3RlcmVkLgotICAgICAgICAoZXdrX2N1c3RvbV9oYW5kbGVyX3VucmVn
aXN0ZXJfcHJvdG9jb2xfaGFuZGxlcik6IFVucmVnaXN0ZXIgdGhlIHJlZ2lzdGVyZWQgaGFuZGxl
ci4KLSAgICAgICAgKiBld2svZXdrX2N1c3RvbV9oYW5kbGVyX3ByaXZhdGUuaDogQWRkcyBwcml2
YXRlIGZ1bmN0aW9uLgotICAgICAgICAqIGV3ay9ld2tfdmlldy5oOiBBZGRzIGVudW1lcmF0aW9u
LgotCi0yMDEyLTA2LTA0ICBUb21hc3ogTW9yYXdza2kgIDx0Lm1vcmF3c2tpQHNhbXN1bmcuY29t
PgotCi0gICAgICAgIFtFRkxdIFJlZmFjdG9yIGV3a192aWV3X2NvbnRleHRfcGFpbnQgY29kZS4K
LSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg1NTg4Ci0K
LSAgICAgICAgUmV2aWV3ZWQgYnkgSGFqaW1lIE1vcml0YS4KLQotICAgICAgICBUaGUgbWFpbiBw
dXJwb3NlIG9mIHRoaXMgY2hhbmdlIGlzIHJlZHVjZSBzaXplIG9mIGV3a192aWV3LmgvY3BwIGZp
bGVzIGFuZCBtYWtlIHVzZSBvZiBld2tfdmlld19jb250ZXh0X3BhaW50Ci0gICAgICAgIG9iamVj
dCBieSBld2tfdmlld19zaW5nbGUgYW5kIGV3a192aWV3X3RpbGVkIGluc3RlYWQgb2YgZGlyZWN0
IG9wZXJhdGlvbnMgb24gY2Fpcm8uCi0gICAgICAgIFRoZSBjb2RlIGlzIG1vcmUgb2JqZWN0aXZl
IGFuZCBsb29rcyB2ZXJ5IHNpbXBsZSBub3cuCi0gICAgICAgIFJlbW92ZSBld2tfdmlld19jb250
ZXh0X3BhaW50IGNvZGUgZnJvbSBld2tfdmlldyBoL2NwcCBmaWxlIGFuZCBtb3ZlIGl0IHRvIHNl
cGFyYXRlIG5ldyBld2tfY29udGV4dF9wYWludCBmaWxlLgotICAgICAgICBUaGUgZXdrX3ZpZXdf
Y29udGV4dF9wYWludCBoYXMgYmVlbiByZW5hbWVkIHRvIGV3a19jb250ZXh0X3BhaW50IGFuZCBp
dCBpcyBub3QgYmluZGVkIHRvIHZpZXcgb24gY3JlYXRpb24gdGltZS4KLQotICAgICAgICAqIGV3
ay9ld2tfcGFpbnRfY29udGV4dC5jcHA6IEFkZGVkLgotICAgICAgICBGdW5jdGlvbnMgcmVuYW1l
ZCBhbmQgbW92ZWQgZnJvbSBld2tfdmlldyB0byBld2tfcGFpbnRfY29udGV4dCBmaWxlLgotICAg
ICAgICAoZXdrX3BhaW50X2NvbnRleHRfbmV3KToKLSAgICAgICAgKGV3a19wYWludF9jb250ZXh0
X2Zyb21faW1hZ2VfbmV3KTogTmV3IGZ1bmN0aW9uLgotICAgICAgICAoZXdrX3BhaW50X2NvbnRl
eHRfZnJvbV9pbWFnZV9kYXRhX25ldyk6IE5ldyBmdW5jdGlvbi4KLSAgICAgICAgKGV3a19wYWlu
dF9jb250ZXh0X2ZyZWUpOgotICAgICAgICAoZXdrX3BhaW50X2NvbnRleHRfc2F2ZSk6Ci0gICAg
ICAgIChld2tfcGFpbnRfY29udGV4dF9yZXN0b3JlKToKLSAgICAgICAgKGV3a19wYWludF9jb250
ZXh0X2NsaXApOgotICAgICAgICAoZXdrX3BhaW50X2NvbnRleHRfc2NhbGUpOgotICAgICAgICAo
ZXdrX3BhaW50X2NvbnRleHRfdHJhbnNsYXRlKToKLSAgICAgICAgKGV3a19wYWludF9jb250ZXh0
X3BhaW50KTogQWRkZWQgRnJhbWVWaWV3IHBhcmFtZXRlci4KLSAgICAgICAgKGV3a19wYWludF9j
b250ZXh0X3BhaW50X2NvbnRlbnRzKTogQWRkZWQgRnJhbWVWaWV3IHBhcmFtZXRlci4KLSAgICAg
ICAgKiBld2svZXdrX3BhaW50X2NvbnRleHRfcHJpdmF0ZS5oOiBBZGRlZC4KLSAgICAgICAgKF9F
d2tfUGFpbnRfQ29udGV4dCk6Ci0gICAgICAgICogZXdrL2V3a19wcml2YXRlLmg6IEZ1bmN0aW9u
cyBld2tfdmlld19wYWludCBhbmQgZXdrX3ZpZXdfcGFpbnRfY29udGVudHMgbW92ZWQgZnJvbSBl
d2tfdmlldy5oLgotICAgICAgICAqIGV3ay9ld2tfdGlsZWRfYmFja2luZ19zdG9yZS5oOiBSZW1v
dmVkIHVudXNlZCBpbmNsdWRlLgotICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6IE1vdmVkIGFs
bCBmdW5jdGlvbiByZWxlYXRlZCB0byBwYWludCBjb250ZXh0IG9iamVjdCB0byBuZXcgZXdrX3Bh
aW50X2NvbnRleHQgZmlsZS4KLSAgICAgICAgKF9Fd2tfVmlld19Qcml2YXRlX0RhdGEpOgotICAg
ICAgICAoZXdrX3ZpZXdfcGFpbnQpOiBDaGFuZ2VkIGZ1bmN0aW9uIGFjY29yZGluZyBjaGFuZ2Ug
aW4gZXdrX3BhaW50X2NvbnRleHRfcGFpbnQgZnVuY3Rpb24uCi0gICAgICAgIChld2tfdmlld19w
YWludF9jb250ZW50cyk6IENoYW5nZWQgZnVuY3Rpb24gYWNjb3JkaW5nIGNoYW5nZSBpbiBld2tf
cGFpbnRfY29udGV4dF9wYWludF9jb250ZW50cyBmdW5jdGlvbi4KLSAgICAgICAgKiBld2svZXdr
X3ZpZXcuaDogUmVtb3ZlZCBhbGwgcGFpbnQgY29udGV4dCBmdW5jdGlvbnMgYW5kIGV3a192aWV3
X3BhaW50LCBld2tfdmlld19wYWludF9jb250ZW50cyBmdW5jdGlvbiBmcm9tCi0gICAgICAgIHB1
YmxpYyBBUEkuCi0gICAgICAgICogZXdrL2V3a192aWV3X3NpbmdsZS5jcHA6Ci0gICAgICAgIChf
ZXdrX3ZpZXdfc2luZ2xlX3NtYXJ0X3JlcGFpbnRzX3Byb2Nlc3MpOgotICAgICAgICBSZWZhY3Rv
ciBvZiBfZXdrX3ZpZXdfc2luZ2xlX3NtYXJ0X3JlcGFpbnRzX3Byb2Nlc3MgZnVuY3Rpb24uCi0g
ICAgICAgIFJlbW92ZWQgZ290byBzdGF0ZW1lbnRzLgotICAgICAgICBSZW1vdmVkIHZhcmlhYmxl
cyBkZWNsYXJhdGlvbiBmcm9tIGZ1bmN0aW9uIGJlZ2lubmluZy4KLSAgICAgICAgKiBld2svZXdr
X3ZpZXdfdGlsZWQuY3BwOgotICAgICAgICAoX2V3a192aWV3X3RpbGVkX3JlbmRlcl9jYik6IE1h
a2UgdXNlIG9mIGV3a19wYWludF9jb250ZXh0IG9iamVjdCBpbnN0ZWFkIG9mIGRpcmVjdGlvbiBv
cGVyYXRpb24gb24gY2Fpcm8uCi0gICAgICAgIExvb2tzIHNpbXBsZXIgYW5kIG1vcmUgb2JqZWN0
aXZlLgotCi0yMDEyLTA2LTAzICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5j
b20+Ci0KLSAgICAgICAgQWRkIGV3a19jdXN0b21faGFuZGxlcl9wcml2YXRlLmggZm9yIGV3a19j
dXN0b21faGFuZGxlci5jcHAKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTg4MTYzCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgUnlvc3VrZSBOaXdhLgotCi0g
ICAgICAgIEVGTCBXSzEgZGVjaWRlZCB0byBkaXZpZGUgdXAgZXdrX3ByaXZhdGUuaCBpbnRvIGVh
Y2ggZmlsZSdzIFhYWF9wcml2YXRlLmggZmlsZQotICAgICAgICBpbiBvcmRlciB0byBtYWludGFp
biBpbnRlcm5hbCBmdW5jdGlvbnMgbW9yZSBlYXNpbHkuIEJ1ZyA3MzE3NiBpcyBhZGRpbmcgbmV3
Ci0gICAgICAgIGludGVybmFsIGZ1bmN0aW9ucyB0byBld2tfY3VzdG9tX2hhbmxkZXIuY3BwLiBT
bywgZXdrX2N1c3RvbV9oYW5kbGVyLmNwcCBuZWVkcwotICAgICAgICB0byBoYXZlIF9wcml2YXRl
LmggZmlsZSBhcyB3ZWxsLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50
RWZsLmNwcDoKLSAgICAgICAgKiBld2svZXdrX2N1c3RvbV9oYW5kbGVyLmNwcDoKLSAgICAgICAg
KiBld2svZXdrX2N1c3RvbV9oYW5kbGVyX3ByaXZhdGUuaDogQWRkZWQuCi0gICAgICAgICogZXdr
L2V3a192aWV3X3ByaXZhdGUuaDoKLQotMjAxMi0wNi0wMSAgQ2hyaXN0b3BoZSBEdW1leiAgPGNo
cmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgotCi0gICAgICAgIFtFRkxdIEVGTCBwb3J0IGRvZXMg
bm90IGVuYWJsZSBXRUJfSU5URU5UU19UQUcgZmxhZwotICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODY4NjYKLQotICAgICAgICBSZXZpZXdlZCBieSBBZGFt
IEJhcnRoLgotCi0gICAgICAgIEltcGxlbWVudCByZWdpc3RlckludGVudFNlcnZpY2UoKSBpbiBF
RkwncyBGcmFtZUxvYWRlckNsaWVudC4KLSAgICAgICAgRW1pdCBhICJpbnRlbnQsc2VydmljZSxy
ZWdpc3RlciIgc2lnbmFsIG9uIHRoZSBmcmFtZSB3aGVuIGEgbmV3IFdlYgotICAgICAgICBJbnRl
bnQgc2VydmljZSByZWdpc3RlcnMuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3JlKToKLSAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpyZWdpc3RlckludGVudFNlcnZpY2UpOgotICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmg6Ci0gICAgICAgIChGcmFtZUxv
YWRlckNsaWVudEVmbCk6Ci0gICAgICAgICogZXdrL2V3a19mcmFtZS5jcHA6Ci0gICAgICAgIChl
d2tfZnJhbWVfaW50ZW50X3NlcnZpY2VfcmVnaXN0ZXIpOgotICAgICAgICAqIGV3ay9ld2tfZnJh
bWUuaDoKLSAgICAgICAgKiBld2svZXdrX2ZyYW1lX3ByaXZhdGUuaDoKLQotMjAxMi0wNi0wMSAg
Q2hyaXN0b3BoZSBEdW1leiAgPGNocmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgotCi0gICAgICAg
IFtFRkxdIGV3a19pbnRlbnRfZGF0YV9nZXQoKSBpcyBub3QgbmVlZGVkIGFuZCBjYW4gYmUgcmVt
b3ZlZAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODgw
NzIKLQotICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgotCi0gICAgICAgIFJlbW92ZSBl
d2tfaW50ZW50X2RhdGFfZ2V0KCkgbWV0aG9kIGZyb20gRXdrX0ludGVudC4gSW50ZW50IGRhdGEg
aXMKLSAgICAgICAgc2VyaWFsaXplZCBhbmQgZG9lcyBub3QgbmVlZCB0byBiZSBwdWJsaWNseSBl
eHBvc2VkLiBUaGUgYnJvd3NlciBvbmx5Ci0gICAgICAgIG5lZWRzIGFjdGlvbiBhbmQgdHlwZSB0
byBtYXRjaCB3aXRoIHNlcnZpY2VzLgotCi0gICAgICAgICogZXdrL2V3a19pbnRlbnQuY3BwOgot
ICAgICAgICAoX0V3a19JbnRlbnQpOgotICAgICAgICAoZXdrX2ludGVudF9hY3Rpb25fZ2V0KToK
LSAgICAgICAgKGV3a19pbnRlbnRfdHlwZV9nZXQpOgotICAgICAgICAoZXdrX2ludGVudF9zZXJ2
aWNlX2dldCk6Ci0gICAgICAgIChld2tfaW50ZW50X2ZyZWUpOgotICAgICAgICAqIGV3ay9ld2tf
aW50ZW50Lmg6Ci0KLTIwMTItMDYtMDEgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1
bWV6QGludGVsLmNvbT4KLQotICAgICAgICBbRUZMXSBFRkwncyBMYXlvdXRUZXN0Q29udHJvbGxl
ciBuZWVkcyB0byBpbXBsZW1lbnQgZGVsaXZlcldlYkludGVudAotICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODY4NjUKLQotICAgICAgICBSZXZpZXdlZCBi
eSBBZGFtIEJhcnRoLgotCi0gICAgICAgIEFkZCBtZXRob2Qgb24gRXdrX0ZyYW1lIHRvIGRlbGl2
ZXIgYW4gaW50ZW50LgotICAgICAgICBBZGQgaGVscGVyIGZ1bmN0aW9uIHRvIER1bXBSZW5kZXJU
cmVlU3VwcG9ydEVmbCB0byBkZWxpdmVyIGEgV2ViCi0gICAgICAgIEludGVudC4KLQotICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHA6Ci0gICAgICAg
IChEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OmRlbGl2ZXJXZWJJbnRlbnQpOgotICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5oOgotICAgICAgICAqIGV3
ay9ld2tfZnJhbWUuY3BwOgotICAgICAgICAoZXdrX2ZyYW1lX2ludGVudF9kZWxpdmVyKToKLSAg
ICAgICAgKiBld2svZXdrX2ZyYW1lLmg6Ci0KLTIwMTItMDYtMDEgIFNoZXJpZmYgQm90ICA8d2Vi
a2l0LnJldmlldy5ib3RAZ21haWwuY29tPgotCi0gICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcg
b3V0IHIxMTkyMjguCi0gICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzEx
OTIyOAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODgw
OTgKLQotICAgICAgICBDYXVzZWQgdGhlIEVGTCBkZWJ1ZyBib3QgdG8gY3Jhc2guIChSZXF1ZXN0
ZWQgYnkgcmFrdWNvIG9uCi0gICAgICAgICN3ZWJraXQpLgotCi0gICAgICAgICogZXdrL2V3a19t
YWluLmNwcDoKLSAgICAgICAgKGV3a19pbml0KToKLQotMjAxMi0wNi0wMSAgQ2hyaXN0b3BoZSBE
dW1leiAgPGNocmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgotCi0gICAgICAgIFtFRkxdIFtEUlRd
IGVkaXRpbmcvZXhlY0NvbW1hbmQvcGFzdGUtYW5kLW1hdGNoLXN0eWxlLWV2ZW50Lmh0bWwgY3Jh
c2hlcwotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODY5
NjEKLQotICAgICAgICBSZXZpZXdlZCBieSBDc2FiYSBPc3p0cm9nb27DoWMuCi0KLSAgICAgICAg
Q2FsbCBlY29yZV94X2luaXQoKSBpbiBld2tfaW5pdCgpIHRvIGluaXRpYWxpemUgdGhlIGVjb3Jl
X3ggbGlicmFyeS4KLSAgICAgICAgVGhpcyBhdm9pZHMgY3Jhc2hpbmcgdXBvbmcgY2FsbGluZyBX
ZWJDb3JlOjpzeXN0ZW1CZWVwKCkgd2hpY2ggdXNlcwotICAgICAgICBlY29yZV94X2JlbGwoKSBp
bnRlcm5hbGx5LgotCi0gICAgICAgICogZXdrL2V3a19tYWluLmNwcDoKLSAgICAgICAgKGV3a19p
bml0KToKLQotMjAxMi0wNi0wMSAgTWlraGFpbCBQb3pkbnlha292ICA8bWlraGFpbC5wb3pkbnlh
a292QGludGVsLmNvbT4KLQotICAgICAgICBbRUZMXSBOZXcgc2lnbmFscyBpbiBld2tfdmlldyB0
byBlbmFibGUgZ2xvYmFsIGhpc3RvcnkgZGVsZWdhdGUgZnVuY3Rpb25hbGl0eQotICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODYzNDMKLQotICAgICAgICBS
ZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KLQotICAgICAgICBHbG9iYWwg
aGlzdG9yeSBkZWxlZ2F0ZSBpcyBhbiBpbnRlcmZhY2UgZm9yIFdlYktpdCBjbGllbnRzIHRvIG1h
bmFnZSB0aGVpciBvd24gZ2xvYmFsIGhpc3Rvcnkgc3RvcmUuCi0gICAgICAgIFRoZSBuZXcgZXdr
X3ZpZXcgc2lnbmFscyBkbyB0aGUgZm9sbG93aW5nOgotICAgICAgICAxKSByZXBvcnQgdGhhdCBh
IG5hdmlnYXRpb24gaGFwcGVuZWQgd2l0aGluIHRoZSB2aWV3IGFuZCBnaXZlIHRoZSBuYXZpZ2F0
aW9uIGRldGFpbHMuCi0gICAgICAgIDIpIHJlcG9ydCB0aGF0IHZpZXcgcGVyZm9ybWVkIGEgY2xp
ZW50IHJlZGlyZWN0IGFuZCBnaXZlIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gdXJpcy4KLSAgICAg
ICAgMykgcmVwb3J0IHRoYXQgdmlldyBwZXJmb3JtZWQgYSBzZXJ2ZXIgcmVkaXJlY3QgYW5kIGdp
dmUgc291cmNlIGFuZCBkZXN0aW5hdGlvbiB1cmlzLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXJDbGllbnRFZmw6OnVwZGF0ZUdsb2JhbEhpc3RvcnlSZWRpcmVjdExpbmtzKTogaW1wbGVtZW50
YXRpb24gYWRkZWQuCi0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6dXBk
YXRlR2xvYmFsSGlzdG9yeSk6IGltcGxlbWVudGF0aW9uIGFkZGVkLgotICAgICAgICAqIGV3ay9l
d2tfdmlldy5oOiBBZGRlZCBuZXcgc2lnbmFscyBhbmQgZGF0YSB0eXBlcy4KLQotMjAxMi0wNi0w
MSAgU3VkYXJzYW5hIE5hZ2luZW5pICA8c3VkYXJzYW5hLm5hZ2luZW5pQGxpbnV4LmludGVsLmNv
bT4KLQotICAgICAgICBbRUZMXSBJbXBsZW1lbnQgUGxhdGZvcm1TdHJhdGVnaWVzCi0gICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04Njk0NgotCi0gICAgICAg
IFJldmlld2VkIGJ5IENhcmxvcyBHYXJjaWEgQ2FtcG9zLiAgICAgICAgICAgICAgICAgCi0KLSAg
ICAgICAgRW5hYmxlIFBMQVRGT1JNX1NUUkFURUdJRVMgZm9yIEVGTCBwbGF0Zm9ybS4KLQotICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0VmbC5jcHA6IEFkZGVkLCBj
b2RlIHdhcyBtb3ZlZAotICAgICAgICBmcm9tIHBsYXRmb3JtL1BsdWdpbkRhdGFFZmwuCi0gICAg
ICAgIChQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6OmluaXRpYWxpemUpOiBJbml0aWFsaXplIHBsYXRm
b3JtIHN0cmF0ZWdpZXMuCi0gICAgICAgIChQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6OlBsYXRmb3Jt
U3RyYXRlZ2llc0VmbCk6Ci0gICAgICAgIChQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6OmNyZWF0ZUNv
b2tpZXNTdHJhdGVneSk6IFJldHVybiB0aGlzLgotICAgICAgICAoUGxhdGZvcm1TdHJhdGVnaWVz
RWZsOjpjcmVhdGVQbHVnaW5TdHJhdGVneSk6IERpdHRvLgotICAgICAgICAoUGxhdGZvcm1TdHJh
dGVnaWVzRWZsOjpjcmVhdGVWaXNpdGVkTGlua1N0cmF0ZWd5KTogRGl0dG8uCi0gICAgICAgIChQ
bGF0Zm9ybVN0cmF0ZWdpZXNFZmw6OmNyZWF0ZVBhc3RlYm9hcmRTdHJhdGVneSk6IFJldHVybiAw
LCBzaW5jZQotICAgICAgICBQYXN0ZWJvYXJkU3RyYXRlZ3kgaXMgb25seSB1c2VkIGJ5IG1hYyBj
b2RlIGZvciBub3cuCi0gICAgICAgIChQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6Om5vdGlmeUNvb2tp
ZXNDaGFuZ2VkKTogCi0gICAgICAgIChQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6OnJlZnJlc2hQbHVn
aW5zKTogUmVmcmVzaCB0aGUgcGx1Z2luCi0gICAgICAgIGRhdGFiYXNlLiBDb2RlIGV4ZWN1dGVz
IG9ubHkgd2hlbiBORVRTQ0FQRV9QTFVHSU5fQVBJIGlzIE9OLgotICAgICAgICAoUGxhdGZvcm1T
dHJhdGVnaWVzRWZsOjpnZXRQbHVnaW5JbmZvKTogSW5pdGlhbGl6ZSBwbHVnaW5zIGFuZAotICAg
ICAgICBwb3B1bGF0ZSB0aGUgZ2l2ZW4gdmVjdG9yIHdpdGggcGx1Z2lucyBpbmZvcm1hdGlvbi4g
Q29kZSBleGVjdXRlcwotICAgICAgICBvbmx5IHdoZW4gTkVUU0NBUEVfUExVR0lOX0FQSSBpcyBP
Ti4KLSAgICAgICAgKFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6aXNMaW5rVmlzaXRlZCk6IFJldHVy
biB3aGV0aGVyIHRoZSBnaXZlbgotICAgICAgICBoYXNoIGlzIGEgdmlzaXRlZCBsaW5rIG9mIHRo
ZSBwYWdlIGdyb3VwLgotICAgICAgICAoUGxhdGZvcm1TdHJhdGVnaWVzRWZsOjphZGRWaXNpdGVk
TGluayk6IEFkZCB0aGUgZ2l2ZW4gaGFzaCB0byB0aGUKLSAgICAgICAgcGFnZSBncm91cCB2aXNp
dGVkIGxpbmtzLgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0Vm
bC5oOiBBZGRlZC4KLSAgICAgICAgKFBsYXRmb3JtU3RyYXRlZ2llc0VmbCk6Ci0gICAgICAgICog
ZXdrL2V3a19tYWluLmNwcDogSW5pdGlhbGl6ZSBQbGF0Zm9ybVN0cmF0ZWdpZXNFZmwuCi0gICAg
ICAgIChfZXdrX2luaXRfYm9keSk6Ci0KLTIwMTItMDUtMzEgIEFsZXhhbmRlciBTaGFsYW1vdiAg
PGFsZXhhbmRlci5zaGFsYW1vdkBpbnRlbC5jb20+Ci0KLSAgICAgICAgW0VGTF0gPGlucHV0IHR5
cGU9Im51bWJlciI+IGlzIG5vdCBhIHNwaW5idXR0b24KLSAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg2ODQ2Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgS2Vu
bmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCi0KLSAgICAgICAgSW1wbGVtZW50ZWQgc3Bpbm5lciB3
aWRnZXQuCi0KLSAgICAgICAgKiBEZWZhdWx0VGhlbWUvZGVmYXVsdC5lZGM6Ci0gICAgICAgICog
RGVmYXVsdFRoZW1lL3dpZGdldC9zcGlubmVyL3NwX2JnLnBuZzogQWRkZWQuCi0gICAgICAgICog
RGVmYXVsdFRoZW1lL3dpZGdldC9zcGlubmVyL3NwX2Rvd25fZGVmYXVsdC5wbmc6IEFkZGVkLgot
ICAgICAgICAqIERlZmF1bHRUaGVtZS93aWRnZXQvc3Bpbm5lci9zcF9kb3duX2hvdmVyLnBuZzog
QWRkZWQuCi0gICAgICAgICogRGVmYXVsdFRoZW1lL3dpZGdldC9zcGlubmVyL3NwX2Rvd25fcHJl
c3NlZC5wbmc6IEFkZGVkLgotICAgICAgICAqIERlZmF1bHRUaGVtZS93aWRnZXQvc3Bpbm5lci9z
cF91cF9kZWZhdWx0LnBuZzogQWRkZWQuCi0gICAgICAgICogRGVmYXVsdFRoZW1lL3dpZGdldC9z
cGlubmVyL3NwX3VwX2hvdmVyLnBuZzogQWRkZWQuCi0gICAgICAgICogRGVmYXVsdFRoZW1lL3dp
ZGdldC9zcGlubmVyL3NwX3VwX3ByZXNzZWQucG5nOiBBZGRlZC4KLSAgICAgICAgKiBEZWZhdWx0
VGhlbWUvd2lkZ2V0L3NwaW5uZXIvc3Bpbm5lci5lZGM6IEFkZGVkLgotCi0yMDEyLTA1LTMxICBI
YWppbWUgTW9ycml0YSAgPG1vcnJpdGFAY2hyb21pdW0ub3JnPgotCi0gICAgICAgIFJFR1JFU1NJ
T04ocjExNzU3Mik6IGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxjaGVjay1hc3luYy1yZW1vdmUtZnJh
bWUuaHRtbCBjcmFzaGVzIG9uIE1hYwotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9ODY4NTkKLQotICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtlIE5pd2Eu
Ci0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuaDoKLSAgICAgICAg
KFdlYkNvcmU6OkVkaXRvckNsaWVudEVmbDo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcpOgotCi0y
MDEyLTA1LTMxICBKdXNzaSBLdWtrb25lbiAgPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KLQot
ICAgICAgICBbRUZMXVtEUlRdIExheW91dFRlc3RDb250cm9sbGVyIGRvZXMgbm90IGltcGxlbWVu
dCBjbGVhckFwcGxpY2F0aW9uQ2FjaGVGb3JPcmlnaW4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg2MTk1Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgR3Vz
dGF2byBOb3JvbmhhIFNpbHZhLgotCi0gICAgICAgIGFkZCBuZXcgZnVuY3Rpb24gdG8gY2xlYXIg
c2VjdXJpdHkgb3JpZ2luIGFwcGxpY2F0aW9uIGNhY2hlLAotICAgICAgICBhbmQgYSBmdW5jdGlv
biB0byBjcmVhdGUgYSBzZWN1cml0eSBvcmlnaW4gZnJvbSB1cmwgc3RyaW5nLgotICAgICAgICBS
ZWluZGVudCB0aGUgaGVhZGVyIHRvIG1hdGNoIG5ldyBsb25nZXIgcmV0dXJuIHNpZ25hdHVyZS4K
LQotICAgICAgICAqIGV3ay9ld2tfc2VjdXJpdHlfb3JpZ2luLmNwcDoKLSAgICAgICAgKGV3a19z
ZWN1cml0eV9vcmlnaW5fYXBwbGljYXRpb25fY2FjaGVfY2xlYXIpOgotICAgICAgICAoZXdrX3Nl
Y3VyaXR5X29yaWdpbl9uZXdfZnJvbV9zdHJpbmcpOgotICAgICAgICAqIGV3ay9ld2tfc2VjdXJp
dHlfb3JpZ2luLmg6Ci0KLTIwMTItMDUtMzAgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhl
LmR1bWV6QGludGVsLmNvbT4KLQotICAgICAgICBbRUZMXSBFRkwncyBEUlQgc2hvdWxkIHByaW50
IHRoZSBudW1iZXIgb2YgTWVzc2FnZVBvcnRzIGZvciBuZXcgZWFjaCBuZXcgaW50ZW50Ci0gICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04Njg0MQotCi0gICAg
ICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCi0KLSAgICAgICAgQWRkIEVXS1ByaXZhdGUgbWV0
aG9kIHRvIHJldHJpZXZlIHRoZSBpbnRlcm5hbCBXZWJDb3JlIG9iamVjdCBmb3IgYSBFd2tfSW50
ZW50LgotICAgICAgICBBZGQgaGVscGVyIGZ1bmN0aW9uIHRvIER1bXBSZW5kZXJUcmVlU3VwcG9y
dEVmbCB0aGF0IHJldHVybnMgdGhlIE1lc3NhZ2VQb3J0cyAKLSAgICAgICAgZm9yIGEgRXdrX0lu
dGVudCBvYmplY3Qgc28gdGhhdCB0aGUgRFJUIGNhbiBwcmludCBpbmZvcm1hdGlvbiBhYm91dCB0
aGVtLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZs
LmNwcDoKLSAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6aW50ZW50TWVzc2FnZVBv
cnRzKToKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwu
aDoKLSAgICAgICAgKFdlYkNvcmUpOgotICAgICAgICAqIGV3ay9ld2tfaW50ZW50LmNwcDoKLSAg
ICAgICAgKEVXS1ByaXZhdGUpOgotICAgICAgICAoRVdLUHJpdmF0ZTo6Y29yZUludGVudCk6Ci0g
ICAgICAgICogZXdrL2V3a19pbnRlbnRfcHJpdmF0ZS5oOgotICAgICAgICAoRVdLUHJpdmF0ZSk6
Ci0KLTIwMTItMDUtMzAgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVs
LmNvbT4KLQotICAgICAgICBbRUZMXSBFd2tfSW50ZW50X1JlcXVlc3QncyBwb3N0UmVzdWx0L3Bv
c3RGYWlsdXJlIHNob3VsZCB0YWtlIHNlcmlhbGl6ZWQgc2NyaXB0IHZhbHVlcyBpbiBhcmd1bWVu
dAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODc4MjkK
LQotICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgotCi0gICAgICAgIEV3a19JbnRlbnRf
UmVxdWVzdCdzIHBvc3RSZXN1bHQvcG9zdEZhaWx1cmUgbWV0aG9kcyBub3cgdGFrZQotICAgICAg
ICBTZXJpYWxpemVkU2NyaXB0VmFsdWVzIGluIGFyZ3VtZW50IGluc3RlYWQgb2Ygc3RyaW5ncy4g
VGhlIGNsaWVudCBjYW4KLSAgICAgICAgbm93IHBvc3QgcmVzdWx0cyBvZiBhbnkgdHlwZSwgbm90
IGp1c3Qgc3RyaW5ncywgd2hpY2ggaXMgYWNjb3JkaW5nIHRvCi0gICAgICAgIHNwZWMuIFRob3Nl
IG1ldGhvZHMgYXJlIG5vdyBtb3ZlZCB0byBwcml2YXRlIGhlYWRlciBhbmQgYSBoZWxwZXIKLSAg
ICAgICAgZnVuY3Rpb24gd2FzIGFkZGVkIHRvIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbCBzbyB0
aGF0IHRoZSBEUlQgY2FuCi0gICAgICAgIHN0aWxsIHNlbmQgaW50ZW50IHJlc3VsdHMuCi0KLSAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwOgotICAg
ICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpzZW5kV2ViSW50ZW50UmVzcG9uc2UpOgot
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5oOgotICAg
ICAgICAqIGV3ay9ld2tfaW50ZW50X3ByaXZhdGUuaDoKLSAgICAgICAgKFdlYkNvcmUpOgotICAg
ICAgICAqIGV3ay9ld2tfaW50ZW50X3JlcXVlc3QuY3BwOgotICAgICAgICAoZXdrX2ludGVudF9y
ZXF1ZXN0X3Jlc3VsdF9wb3N0KToKLSAgICAgICAgKGV3a19pbnRlbnRfcmVxdWVzdF9mYWlsdXJl
X3Bvc3QpOgotICAgICAgICAqIGV3ay9ld2tfaW50ZW50X3JlcXVlc3QuaDoKLQotMjAxMi0wNS0y
OSAgQ2hyaXN0b3BoZSBEdW1leiAgPGNocmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgotCi0gICAg
ICAgIFtFRkxdIENvbXBpbGF0aW9uIHdhcm5pbmcgaW4gRHVtcFJlbmRlclRyZWVWaWV3LmNwcAot
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODc2MzYKLQot
ICAgICAgICBSZXZpZXdlZCBieSBGaWxpcCBQaXpsby4KLQotICAgICAgICBGaXggcmV0dXJuIHR5
cGUgb2YgZXhjZWVkZWRfYXBwbGljYXRpb25fY2FjaGVfcXVvdGEgY2FsbGJhY2ssIGl0Ci0gICAg
ICAgIHNob3VsZCBiZSBpbnQ2NF90LCBub3QgdWludDY0X3QuCi0KLSAgICAgICAgKiBld2svZXdr
X3ZpZXcuaDoKLQotMjAxMi0wNS0yNSAgSmVzdXMgU2FuY2hlei1QYWxlbmNpYSAgPGplc3VzLnBh
bGVuY2lhQG9wZW5ib3NzYS5vcmc+Ci0KLSAgICAgICAgV2ViS2l0VGVzdFJ1bm5lciBuZWVkcyB0
byBzdXBwb3J0IGxheW91dFRlc3RDb250cm9sbGVyLnNldEphdmFTY3JpcHRQcm9maWxpbmdFbmFi
bGVkCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MjMy
OAotCi0gICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgotCi0gICAgICAgIFJlbW92ZWQg
dW5uZWVkZWQgc2V0SmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJsZWQgZnVuY3Rpb24gZnJvbSBEUlQg
YWZ0ZXIgaXRzCi0gICAgICAgIG1vdmUgdG8gd2luZG93cy5pbnRlcm5hbHMuc2V0dGluZ3MuCi0K
LSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwOgot
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5oOgotCi0y
MDEyLTA1LTI1ICBNaWtoYWlsIFBvemRueWFrb3YgIDxtaWtoYWlsLnBvemRueWFrb3ZAaW50ZWwu
Y29tPgotCi0gICAgICAgIFtFRkxdIEFQSSBmb3IgUGFnZUdyb3VwIHZpc2l0ZWQgbGlua3MgaGFz
aCBwb3B1bGF0aW5nCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04NjM3MAotCi0gICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFu
c2VuLgotCi0gICAgICAgIEFkZGVkICJwb3B1bGF0ZSx2aXNpdGVkLGxpbmtzIiBld2tfdmlldyBz
aWduYWwgdGhhdCB0ZWxscyB0byB0aGUgY2xpZW50IG1hbmFnaW5nCi0gICAgICAgIHBlcnNpc3Rl
bnQgaGlzdG9yeSBzdG9yYWdlIHRvIGZpbGwgdGhlIHZpc2l0ZWQgbGlua3MgY2FjaGUuCi0gICAg
ICAgIEFkZGVkIEFQSSBmb3IgdGhlIFBhZ2VHcm91cCB2aXNpdGVkIGxpbmtzIGhhc2ggcG9wdWxh
dGluZy4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHA6Ci0g
ICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRFZmw6OnBvcHVsYXRlVmlzaXRlZExpbmtzKTog
SW1wbGVtZW50YXRpb24gYWRkZWQgKHNlbmRzIG5vdGlmaWNhdGlvbikuCi0gICAgICAgIChXZWJD
b3JlKToKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuaDoKLSAgICAg
ICAgKENocm9tZUNsaWVudEVmbCk6Ci0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAg
ICAgKF9Fd2tfVmlld19Qcml2YXRlX0RhdGEpOgotICAgICAgICAoZXdrX3ZpZXdfdmlzaXRlZF9s
aW5rX2FkZCk6IFBhZ2VHcm91cCB2aXNpdGVkIGxpbmtzIGhhc2ggcG9wdWxhdGluZy4KLSAgICAg
ICAgKiBld2svZXdrX3ZpZXcuaDoKLQotMjAxMi0wNS0yNCAgTWlraGFpbCBQb3pkbnlha292ICA8
bWlraGFpbC5wb3pkbnlha292QGludGVsLmNvbT4KLQotICAgICAgICBbRUZMXVtEUlRdIExheW91
dFRlc3RDb250cm9sbGVyJ3Mgc2V0Q2FjaGVNb2RlbCgpIGltcGxlbWVudGF0aW9uCi0gICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04Njg0MAotCi0gICAgICAg
IFJldmlld2VkIGJ5IENzYWJhIE9zenRyb2dvbsOhYy4KLQotICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHA6Ci0gICAgICAgIChEdW1wUmVuZGVyVHJl
ZVN1cHBvcnRFZmw6OnNldERlYWREZWNvZGVkRGF0YURlbGV0aW9uSW50ZXJ2YWwpOiBBdXggd3Jh
cHBlciBmdW5jdGlvbiBmb3IgRFJULgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5k
ZXJUcmVlU3VwcG9ydEVmbC5oOgotCi0yMDEyLTA1LTI0ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hy
aXN0b3BoZS5kdW1lekBpbnRlbC5jb20+Ci0KLSAgICAgICAgW0VGTF0gRUZMJ3MgTGF5b3V0VGVz
dENvbnRyb2xsZXIgbmVlZHMgdG8gaW1wbGVtZW50IHNlbmRXZWJJbnRlbnRSZXNwb25zZQotICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODY4NjcKLQotICAg
ICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgotCi0gICAgICAgIGV3a19pbnRlbnRfcmVxdWVz
dF9mYWlsdXJlX3Bvc3QoKSBzaG91bGQgY2FsbAotICAgICAgICBXZWJDb3JlOjpJbnRlbnRSZXF1
ZXN0Ojpwb3N0RmFpbHVyZSgpLCBub3QKLSAgICAgICAgV2ViQ29yZTo6SW50ZW50UmVxdWVzdDo6
cG9zdFJlc3VsdCgpLgotCi0gICAgICAgICogZXdrL2V3a19pbnRlbnRfcmVxdWVzdC5jcHA6Ci0g
ICAgICAgIChld2tfaW50ZW50X3JlcXVlc3RfZmFpbHVyZV9wb3N0KToKLQotMjAxMi0wNS0yNCAg
Q2hyaXN0b3BoZSBEdW1leiAgPGNocmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgotCi0gICAgICAg
IFtFRkxdIFRoZSBFRkwgcG9ydCBoYXMgbm8gc3VwcG9ydCBmb3IgdGl0bGUgZGlyZWN0aW9uYWxp
dHkKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg2NDYy
Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgR3VzdGF2byBOb3JvbmhhIFNpbHZhLgotCi0gICAgICAg
IERlZmluZSBhIG5ldyBFd2tfVGV4dF9XaXRoX0RpcmVjdGlvbiB0eXBlIHRvIHN0b3JlIHRoZSBk
aXJlY3Rpb24gb2YKLSAgICAgICAgdGhlIHRleHQgYWxvbmcgd2l0aCB0aGUgdGV4dCBpdHNlbGYu
IFRoaXMgaXMgbmVlZGVkIHRvIHN1cHBvcnQgdGV4dAotICAgICAgICBkaXJlY3Rpb25hbGl0eSBp
biBFRkwgcG9ydC4KLQotICAgICAgICBVc2UgdGhlIG5ldyBFd2tfVGV4dF9XaXRoX0RpcmVjdGlv
biB0eXBlIGZvciB0aGUgZnJhbWUgdGl0bGUuIFVwZGF0ZWQKLSAgICAgICAgInRpdGxlLGNoYW5n
ZWQiIHNpZ25hbCwgdGl0bGUgZ2V0dGVyL3NldHRlciBhbmQgRXdrX0hpdF9UZXN0IHN0cnVjdC4K
LQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcDoKLSAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZFJlY2VpdmVU
aXRsZSk6Ci0gICAgICAgICogZXdrL2V3a19mcmFtZS5jcHA6Ci0gICAgICAgIChFd2tfRnJhbWVf
U21hcnRfRGF0YSk6Ci0gICAgICAgIChfZXdrX2ZyYW1lX3NtYXJ0X2RlbCk6Ci0gICAgICAgIChl
d2tfZnJhbWVfdGl0bGVfZ2V0KToKLSAgICAgICAgKGV3a19mcmFtZV9oaXRfdGVzdF9mcmVlKToK
LSAgICAgICAgKGV3a19mcmFtZV9oaXRfdGVzdF9uZXcpOgotICAgICAgICAoZXdrX2ZyYW1lX3Rp
dGxlX3NldCk6Ci0gICAgICAgICogZXdrL2V3a19mcmFtZS5oOgotICAgICAgICAqIGV3ay9ld2tf
ZnJhbWVfcHJpdmF0ZS5oOgotICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChf
RXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKToKLSAgICAgICAgKGV3a192aWV3X3RpdGxlX2dldCk6Ci0g
ICAgICAgIChld2tfdmlld190aXRsZV9zZXQpOgotICAgICAgICAqIGV3ay9ld2tfdmlldy5oOgot
ICAgICAgICAqIGV3ay9ld2tfdmlld19wcml2YXRlLmg6Ci0KLTIwMTItMDUtMjMgIENocmlzdG9w
aGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KLQotICAgICAgICBbRUZMXSBF
RkwncyBEUlQgZG9lcyBub3QgcHJpbnQgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJvciBt
ZXNzYWdlcwotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODU5NTYKLQotICAgICAgICBSZXZpZXdlZCBieSBHdXN0YXZvIE5vcm9uaGEgU2lsdmEuCi0KLSAg
ICAgICAgQWRkIG5ldyAibG9hZCxwcm92aXNpb25hbCxmYWlsZWQiIHNpZ25hbCBvbiB0aGUgZnJh
bWUgYW5kIHRoZSB2aWV3IHRvCi0gICAgICAgIGNvbXBsZW1lbnQgdGhlICJsb2FkLHByb3Zpc2lv
bmFsIiBvbmUuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVm
bC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hE
aWRGYWlsUHJvdmlzaW9uYWxMb2FkKToKLSAgICAgICAgKiBld2svZXdrX2ZyYW1lLmNwcDoKLSAg
ICAgICAgKGV3a19mcmFtZV9sb2FkX3Byb3Zpc2lvbmFsX2ZhaWxlZCk6Ci0gICAgICAgICogZXdr
L2V3a19mcmFtZS5oOgotICAgICAgICAqIGV3ay9ld2tfZnJhbWVfcHJpdmF0ZS5oOgotICAgICAg
ICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChld2tfdmlld19sb2FkX3Byb3Zpc2lvbmFs
X2ZhaWxlZCk6Ci0gICAgICAgICogZXdrL2V3a192aWV3Lmg6Ci0gICAgICAgICogZXdrL2V3a192
aWV3X3ByaXZhdGUuaDoKLQotMjAxMi0wNS0yMyAgQ2hyaXN0b3BoZSBEdW1leiAgPGNocmlzdG9w
aGUuZHVtZXpAaW50ZWwuY29tPgotCi0gICAgICAgIFtFRkxdIEVGTCdzIERSVCBuZWVkcyB0byBj
YWxsIFNldHRpbmdzOjpzZXRWYWxpZGF0aW9uTWVzc2FnZVRpbWVyTWFnbmlmaWNhdGlvbigtMSkK
LSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg2MzY2Ci0K
LSAgICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21lcy4KLQotICAgICAgICBBZGQgaGVscGVy
IGZ1bmN0aW9uIHRvIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbCB0byBzZXQgdGhlIHZhbGlkYXRp
b24KLSAgICAgICAgbWVzc2FnZSB0aW1lciBtYWduaWZpY2F0aW9uLgotCi0gICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcDoKLSAgICAgICAgKER1bXBS
ZW5kZXJUcmVlU3VwcG9ydEVmbDo6c2V0VmFsaWRhdGlvbk1lc3NhZ2VUaW1lck1hZ25pZmljYXRp
b24pOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5o
OgotCi0yMDEyLTA1LTIyICBEb25nd29vIEltICA8ZHcuaW1Ac2Ftc3VuZy5jb20+Ci0KLSAgICAg
ICAgW0VGTF0gSW1wbGVtZW50cyB0aGUgcmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIgbWV0aG9kIGFu
ZCBvcHRpb24uCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03MzYzOAotCi0gICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCi0KLSAgICAgICAg
VGhlIHJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyKCkgbWV0aG9kIGFsbG93cyBXZWIgc2l0ZXMgdG8g
cmVnaXN0ZXIgdGhlbXNlbHZlcwotICAgICAgICBhcyBwb3NzaWJsZSBoYW5kbGVycyBmb3IgcGFy
dGljdWxhciBzY2hlbWVzLgotCi0gICAgICAgIGh0dHA6Ly9kZXYudzMub3JnL2h0bWw1L3NwZWMv
T3ZlcnZpZXcuaHRtbCNkb20tbmF2aWdhdG9yLXJlZ2lzdGVycHJvdG9jb2xoYW5kbGVyCi0KLSAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwOiBBZGRzIGEgbmV3IGZ1
bmN0aW9uLgotICAgICAgICAoV2ViQ29yZSk6Ci0gICAgICAgIChXZWJDb3JlOjpjdXN0b21IYW5k
bGVyc0RhdGFDcmVhdGUpOiBDcmVhdGVzIGFuZCBmaWxscyB0aGUgZGF0YSBvYmplY3QuCi0gICAg
ICAgIChXZWJDb3JlOjpjdXN0b21IYW5kbGVyc0RhdGFEZWxldGUpOiBEZWxldGVzIHRoZSBkYXRh
IG9iamVjdC4KLSAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEVmbDo6cmVnaXN0ZXJQcm90
b2NvbEhhbmRsZXIpOiBSZWdpc3RlcnMgYSBwcm90b2NvbCBhbmQgdGhlIGhhbmRsZXIgb2YgaXQu
Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmg6IEFkZHMgYSBwcm90
b3R5cGUuCi0gICAgICAgIChDaHJvbWVDbGllbnRFZmwpOgotICAgICAgICAqIGV3ay9ld2tfY3Vz
dG9tX2hhbmRsZXJzLmNwcDogQWRkZWQuCi0gICAgICAgIChld2tfY3VzdG9tX2hhbmRsZXJzX3Jl
Z2lzdGVyX3Byb3RvY29sX2hhbmRsZXIpOgotICAgICAgICAqIGV3ay9ld2tfdmlldy5oOiBBZGRz
IERhdGEgc3RydWN0dXJlLgotICAgICAgICAqIGV3ay9ld2tfdmlld19wcml2YXRlLmg6IEFkZHMg
cHJpdmF0ZSBmdW5jdGlvbi4KLQotMjAxMi0wNS0yMiAgS2FuZ2lsIEhhbiAgPGthbmdpbC5oYW5A
c2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW0VGTF1bRFJUXSBJbXBsZW1lbnQgdG91Y2ggZXZlbnQK
LSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg2NzIwCi0K
LSAgICAgICAgUmV2aWV3ZWQgYnkgSGFqaW1lIE1vcml0YS4KLQotICAgICAgICBDdXJyZW50bHkg
RUZMIERSVCBkb2Vzbid0IHN1cHBvcnQgdG91Y2ggZXZlbnQuCi0gICAgICAgIFRoZXJlZm9yZSwg
dGhpcyBwYXRjaCBlbmFibGVkIGl0IGFuZCBpbXBsZW1lbnRlZCBzb21lIGV2ZW50U2VuZGVyIGZ1
bmN0aW9uIGNhbGxiYWNrcy4KLQotICAgICAgICAqIGV3ZWJraXQucGMuaW46Ci0gICAgICAgICog
ZXdrL2V3a19mcmFtZS5jcHA6Ci0gICAgICAgIChld2tfZnJhbWVfZmVlZF90b3VjaF9ldmVudCk6
Ci0gICAgICAgICogZXdrL2V3a19mcmFtZS5oOgotCi0yMDEyLTA1LTIyICBDaHJpc3RvcGhlIER1
bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+Ci0KLSAgICAgICAgW0VGTF0gRUZMJ3Mg
RFJUIG5lZWRzIHRvIHByaW50IGluZm9ybWF0aW9uIGFib3V0IHJlY2VpdmVkIFdlYiBJbnRlbnRz
Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04Njg2NAot
Ci0gICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCi0KLSAgICAgICAgKiBld2svZXdrX2lu
dGVudC5jcHA6Ci0gICAgICAgIChld2tfaW50ZW50X3N1Z2dlc3Rpb25zX2dldCk6IEFkZCBmdW5j
dGlvbiB0byByZXRyaWV2ZSBzdWdnZXN0ZWQKLSAgICAgICAgc2VydmljZSBVUkxzIGZvciBhbiBp
bnRlbnQuCi0gICAgICAgIChld2tfaW50ZW50X2V4dHJhX25hbWVzX2dldCk6IEFkZCBmdW5jdGlv
biB0byByZXRyaWV2ZSBuYW1lcyBvZgotICAgICAgICBleHRyYSBtZXRhZGF0YSBmb3IgYW4gaW50
ZW50LgotICAgICAgICAoZXdrX2ludGVudF9uZXcpOiBDb3JyZWN0bHkgaW5pdGlhbGl6ZSBFd2tf
SW50ZW50IG1lbWJlcnMgdG8gYXZvaWQKLSAgICAgICAgY3Jhc2hlcy4KLSAgICAgICAgKGV3a19p
bnRlbnRfZnJlZSk6IFVucmVmIHNoYXJlZCBzdHJpbmdzLgotICAgICAgICAqIGV3ay9ld2tfaW50
ZW50Lmg6Ci0KLTIwMTItMDUtMjIgIFN1ZGFyc2FuYSBOYWdpbmVuaSAgPHN1ZGFyc2FuYS5uYWdp
bmVuaUBsaW51eC5pbnRlbC5jb20+Ci0KLSAgICAgICAgW0VGTF0gQWRkIHN1cHBvcnQgdG8gZW5h
YmxlL2Rpc2FibGUgRE9NIHBhc3RlIAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9ODUwNDAKLQotICAgICAgICBSZXZpZXdlZCBieSBHdXN0YXZvIE5vcm9u
aGEgU2lsdmEuCi0KLSAgICAgICAgQWRkIHN1cHBvcnQgdG8gZW5hYmxlL2Rpc2FibGUgRE9NIHBh
c3RlIHNldHRpbmcgc28gdGhhdCBkb2N1bWVudC5leGVjQ29tbWFuZCgpCi0gICAgICAgIGFsbG93
cyBwYXN0ZSBjb21tYW5kIHdoZW4gdGhpcyBzZXR0aW5nIGlzIGVuYWJsZWQuIEFsc28sIHVwZGF0
ZSBkb2N1bWVudGF0aW9uCi0gICAgICAgIGZvciBzY3JpcHRzX2Nhbl9hY2Nlc3NfY2xpcGJvYXJk
IHNldHRpbmcgaW4gZXdrX3ZpZXcuCi0KLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAg
ICAgICAoX2V3a192aWV3X3ByaXZfbmV3KToKLSAgICAgICAgKGV3a192aWV3X3NldHRpbmdfc2Ny
aXB0c19jYW5fYWNjZXNzX2NsaXBib2FyZF9zZXQpOgotICAgICAgICAqIGV3ay9ld2tfdmlldy5o
OgotCi0yMDEyLTA1LTIxICBNaWtoYWlsIFBvemRueWFrb3YgIDxtaWtoYWlsLnBvemRueWFrb3ZA
aW50ZWwuY29tPgotCi0gICAgICAgIFtFRkxdIENsaWVudHMgc2hvdWxkIGJlIGFibGUgdG8gc2V0
IHBhZ2UgY2FjaGUgY2FwYWNpdHkuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD04Njk2MAotCi0gICAgICAgIFJldmlld2VkIGJ5IENzYWJhIE9zenRyb2dv
bsOhYy4KLQotICAgICAgICBFeHBvcnRlZCBtZW1vcnkgcGFnZSBjYWNoZSBjYXBhY2l0eSBnZXR0
ZXIgYW5kIHNldHRlciBmdW5jdGlvbnMuCi0gICAgICAgIFRob3NlIHdpbGwgYmUgdXNlZCBib3Ro
IGJ5IGNsaWVudHMgYW5kIERSVCBMYXlvdXQgVGVzdCBDb250cm9sbGVyLgotCi0gICAgICAgICog
ZXdrL2V3a19zZXR0aW5ncy5jcHA6Ci0gICAgICAgIChld2tfc2V0dGluZ3NfcGFnZV9jYWNoZV9j
YXBhY2l0eV9nZXQpOgotICAgICAgICAoZXdrX3NldHRpbmdzX3BhZ2VfY2FjaGVfY2FwYWNpdHlf
c2V0KToKLSAgICAgICAgKiBld2svZXdrX3NldHRpbmdzLmg6Ci0KLTIwMTItMDUtMjEgIENhaW8g
TWFyY2VsbyBkZSBPbGl2ZWlyYSBGaWxobyAgPGNhaW8ub2xpdmVpcmFAb3BlbmJvc3NhLm9yZz4K
LQotICAgICAgICBNb3ZlIHNldEVkaXRpbmdCZWhhdmlvcigpIGZyb20gbGF5b3V0VGVzdENvbnRy
b2xsZXIgdG8gd2luZG93LmludGVybmFscwotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NDI2ODkKLQotICAgICAgICBSZXZpZXdlZCBieSBIYWppbWUgTW9y
aXRhIGFuZCBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KLQotICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHA6Ci0gICAgICAgICogV2ViQ29yZVN1
cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmg6Ci0KLTIwMTItMDUtMjEgIENocmlzdG9w
aGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KLQotICAgICAgICBbRUZMXSBN
aW5vciBzdHlsZSBmaXhlcyBpbiB3ZWIgaW50ZW50cyBjb2RlIGFyZSBuZWVkZWQKLSAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg2OTg2Ci0KLSAgICAgICAg
UmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KLQotICAgICAgICAqIGV3ay9FV2ViS2l0Lmg6IEFkZCBu
ZXcgaW50ZW50IGhlYWRlcnMuCi0gICAgICAgICogZXdrL2V3a19mcmFtZS5oOiBBZGQgbWlzc2lu
ZyB1bmRlcnNjb3JlcyB0byBFd2tJbnRlbnRSZXF1ZXN0IHR5cGUuCi0KLTIwMTItMDUtMjAgIE1p
a2hhaWwgUG96ZG55YWtvdiAgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+Ci0KLSAgICAg
ICAgW0VGTF0gZXdrX3ZpZXcgbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24oKSBpbnB1dCBwYXJh
bWV0ZXJzIHNob3VsZCBiZSBleHRlbmRlZAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODUwNDgKLQotICAgICAgICBSZXZpZXdlZCBieSBBbnRvbmlvIEdv
bWVzLgotCi0gICAgICAgIEludHJvZHVjZWQgbmV3IGVudW0gRXdrX05hdmlnYXRpb25fVHlwZSBj
bG9uaW5nIFdlYkNvcmU6Ok5hdmlnYXRpb25UeXBlLgotICAgICAgICBFeHRlbmRlZCBld2tfdmll
dyBuYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbigpIGlucHV0IHBhcmFtZXRlcnMgd2l0aCBuZXcK
LSAgICAgICAgbmF2aWdhdGlvblR5cGUgcGFyYW1ldGVyLiBUaGlzIHBhcmFtYXRlciBnaXZlcyBt
b3JlIGRhdGEgZm9yIG1ha2luZyBhCi0gICAgICAgIG5hdmlnYXRpb24gcG9saWN5IGRlY2lzaW9u
IGFuZCBhbHNvIHByb3ZpZGVzIGR1bXBpbmcgbmVjZXNzYXJ5IGZvciBtYW55IExheW91dAotICAg
ICAgICB0ZXN0Y2FzZXMuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9Bc3NlcnRNYXRjaGlu
Z0VudW1zLmNwcDoKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVm
bC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hE
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToKLSAgICAgICAgKiBld2svZXdrX2ZyYW1l
Lmg6Ci0gICAgICAgICogZXdrL2V3a192aWV3X3ByaXZhdGUuaDoKLSAgICAgICAgKiBld2svZXdr
X3ZpZXcuY3BwOgotICAgICAgICAoX0V3a19WaWV3X1ByaXZhdGVfRGF0YSk6Ci0gICAgICAgIChl
d2tfdmlld19uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbik6Ci0gICAgICAgICogZXdrL2V3a192
aWV3Lmg6Ci0KLTIwMTItMDUtMTggIFJhcGhhZWwgS3VibyBkYSBDb3N0YSAgPHJha3Vjb0B3ZWJr
aXQub3JnPgotCi0gICAgICAgIFtFRkxdW0RSVF0gTWFrZSBpdCBwb3NzaWJsZSB0byBlbmFibGUg
Q1NTIEdyaWQgTGF5b3V0LgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9ODY5MjEKLQotICAgICAgICBSZXZpZXdlZCBieSBUb255IENoYW5nLgotCi0gICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcDoKLSAgICAg
ICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6c2V0Q1NTR3JpZExheW91dEVuYWJsZWQpOgot
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5oOgotCi0y
MDEyLTA1LTE4ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+
Ci0KLSAgICAgICAgW0VGTF0gV2ViIEludGVudHMgY29kZSBpcyBub3QgY29tcGlsaW5nCi0gICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NTM2NAotCi0gICAg
ICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudEVmbC5jcHA6IEFkZCBtaXNzaW5nIGhlYWRlciBpbmNsdWRlLgotICAg
ICAgICAqIGV3ay9ld2tfaW50ZW50X3ByaXZhdGUuaDogRGl0dG8uCi0gICAgICAgICogZXdrL2V3
a19pbnRlbnRfcmVxdWVzdC5jcHA6Ci0gICAgICAgIChld2tfaW50ZW50X3JlcXVlc3RfbmV3KTog
RG8gbm90IFBhc3NSZWZQdHIgYWZ0ZXIgaXQgYmVjb21lcyAwLgotCi0yMDEyLTA1LTE4ICBDaHJp
c3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+Ci0KLSAgICAgICAgW0VG
TF0gRGVmYXVsdCB2YWx1ZXMgZm9yIGV3a192aWV3IHZpZGVvIHRyYWNrcyBzZXR0aW5ncyBzaG91
bGQgYmUgZG9jdW1lbnRlZAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9ODUxNjkKLQotICAgICAgICBSZXZpZXdlZCBieSBBbnRvbmlvIEdvbWVzLgotCi0g
ICAgICAgIERvY3VtZW50IGRlZmF1bHQgdmFsdWVzIGZvciB2aWRlbyB0cmFja3Mgc2V0dGluZ3Mg
aW4gZXdrX3ZpZXcuCi0KLSAgICAgICAgKiBld2svZXdrX3ZpZXcuaDoKLQotMjAxMi0wNS0xOCAg
TWlraGFpbCBQb3pkbnlha292ICA8bWlraGFpbC5wb3pkbnlha292QGludGVsLmNvbT4KLQotICAg
ICAgICBbRUZMXSBUZXh0IGlucHV0IGV2ZW50cyBhcmUgZW1pdHRlZCBmb3Igbm9kZXMgdGhhdCBk
byBub3QgYWxsb3cgZWRpdGluZy4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTg2ODM2Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBD
aHJpc3RpYW5zZW4uCi0KLSAgICAgICAgVGV4dCBpbnB1dCBldmVudHMgYXJlIG5vdCBhbnltb3Jl
IGVtaXR0ZWQgZm9yIG5vZGVzIHRoYXQgZG8gbm90IGFsbG93IGVkaXRpbmcuCi0gICAgICAgIFRo
aXMgY2FuIGJlIGNoZWNrZWQgd2l0aCBmYXN0L2V2ZW50cy9rZXktZXZlbnRzLWluLWlucHV0LWJ1
dHRvbi5odG1sIHRlc3Qgb3V0cHV0LgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9y
Q2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEVmbDo6aGFuZGxl
RWRpdGluZ0tleWJvYXJkRXZlbnQpOiBSZXR1cm5zIGZhbHNlIGlmIHRoZSBub2RlIGNhbm5vdCBl
ZGl0LgotCi0yMDEyLTA1LTE4ICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgot
Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NTUxNQot
ICAgICAgICBTdGFsZSBmcmFtZSBpbiBXZWJDb3JlOjpTcGVsbENoZWNrZXI6OmRpZENoZWNrU3Vj
Y2VlZGVkCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgUnlvc3VrZSBOaXdhLgotCi0gICAgICAgICog
V2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmg6Ci0gICAgICAgIChXZWJDb3JlOjpFZGl0
b3JDbGllbnRFZmw6OmZyYW1lV2lsbERldGFjaFBhZ2UpOgotCi0yMDEyLTA1LTE4ICBTdWRhcnNh
bmEgTmFnaW5lbmkgIDxzdWRhcnNhbmEubmFnaW5lbmlAbGludXguaW50ZWwuY29tPgotCi0gICAg
ICAgIFtFRkxdIERSVCBuZWVkcyBhbiBpbXBsZW1lbnRhdGlvbiBvZiBsYXlvdXRUZXN0Q29udHJv
bGxlci5zZXRTZXJpYWxpemVIVFRQTG9hZHMKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTg2MTAxCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgUnlvc3VrZSBO
aXdhLgotCi0gICAgICAgIEFkZCBtaXNzaW5nIGltcGxlbWVudGF0aW9uIHNldFNlcmlhbGl6ZUhU
VFBMb2FkcyB0byBFRkwncwotICAgICAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnQgdG8gYWxsb3cg
dGVzdGluZyByZXNvdXJjZSBsb2FkIG9yZGVyLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQv
RHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcDoKLSAgICAgICAgKER1bXBSZW5kZXJUcmVlU3Vw
cG9ydEVmbDo6c2V0U2VyaWFsaXplSFRUUExvYWRzKToKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuaDoKLQotMjAxMi0wNS0xOCAgQ2hyaXN0b3BoZSBE
dW1leiAgPGNocmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgotCi0gICAgICAgIFtFRkxdIGFwcGNh
Y2hlIHRlc3RzIGFyZSBmbGFreQotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODY2MTkKLQotICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtlIE5pd2EuCi0K
LSAgICAgICAgTm8gbG9uZ2VyIHNldCB0aGUgYXBwbGljYXRpb24gY2FjaGUgcGF0aCBpbiBld2tf
bWFpbiBzaW5jZSB0aGUgCi0gICAgICAgIHBhdGggY2FuIG9ubHkgYmUgc2V0IG9uY2UgYW5kIHRo
aXMgcHJldmVudHMgRFJUIChvciBhcHBzKSB0byBzZXQKLSAgICAgICAgaXQuIFVwZGF0ZSB0aGUg
ZXdrX3NldHRpbmdzIGRvY3VtZW50YXRpb24gdG8gcmVmbGVjdCB0aGVzZSAKLSAgICAgICAgY2hh
bmdlcy4KLQotICAgICAgICAqIGV3ay9ld2tfbWFpbi5jcHA6Ci0gICAgICAgIChfZXdrX2luaXRf
Ym9keSk6Ci0gICAgICAgICogZXdrL2V3a19zZXR0aW5ncy5oOgotCi0yMDEyLTA1LTE4ICBDaHJp
c3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+Ci0KLSAgICAgICAgW0VG
TF0gQWRkIHNpbXBsZSBpbXBsZW1lbnRhdGlvbiBvZiBXZWIgSW50ZW50cwotICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODYzNTQKLQotICAgICAgICBSZXZp
ZXdlZCBieSBFcmljIFNlaWRlbC4KLQotICAgICAgICBBZGQgbmV3IEVGTCB3cmFwcGVycyBmb3Ig
V2ViQ29yZSdzIEludGVudCBhbmQgSW50ZW50UmVxdWVzdC4KLSAgICAgICAgSW1wbGVtZW50IGRp
c3BhdGNoSW50ZW50KCkgaW4gRUZMJ3MgRnJhbWVMb2FkZXJDbGllbnQgYW5kIGVtaXQgYSBuZXcK
LSAgICAgICAgImludGVudCxuZXciIHNpZ25hbCBvbiB0aGUgZnJhbWUgdG8gbm90aWZ5IGNsaWVu
dHMgb2YgbmV3IGludGVudAotICAgICAgICByZXF1ZXN0cy4KLQotICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdlYkNvcmUpOgotICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoSW50ZW50KToKLSAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5oOgotICAgICAgICAo
RnJhbWVMb2FkZXJDbGllbnRFZmwpOgotICAgICAgICAqIGV3ay9ld2tfZnJhbWUuY3BwOgotICAg
ICAgICAoZXdrX2ZyYW1lX2ludGVudF9uZXcpOgotICAgICAgICAqIGV3ay9ld2tfZnJhbWUuaDoK
LSAgICAgICAgKiBld2svZXdrX2ZyYW1lX3ByaXZhdGUuaDoKLSAgICAgICAgKiBld2svZXdrX2lu
dGVudC5jcHA6IEFkZGVkLgotICAgICAgICAoX0V3a19JbnRlbnQpOgotICAgICAgICAoZXdrX2lu
dGVudF9hY3Rpb25fZ2V0KToKLSAgICAgICAgKGV3a19pbnRlbnRfdHlwZV9nZXQpOgotICAgICAg
ICAoZXdrX2ludGVudF9kYXRhX2dldCk6Ci0gICAgICAgIChld2tfaW50ZW50X3NlcnZpY2VfZ2V0
KToKLSAgICAgICAgKGV3a19pbnRlbnRfZXh0cmFfZ2V0KToKLSAgICAgICAgKGV3a19pbnRlbnRf
bmV3KToKLSAgICAgICAgKGV3a19pbnRlbnRfZnJlZSk6Ci0gICAgICAgICogZXdrL2V3a19pbnRl
bnQuaDogQWRkZWQuCi0gICAgICAgICogZXdrL2V3a19pbnRlbnRfcHJpdmF0ZS5oOiBBZGRlZC4K
LSAgICAgICAgKFdlYkNvcmUpOgotICAgICAgICAqIGV3ay9ld2tfaW50ZW50X3JlcXVlc3QuY3Bw
OiBBZGRlZC4KLSAgICAgICAgKF9Fd2tfSW50ZW50X1JlcXVlc3QpOgotICAgICAgICAoZXdrX2lu
dGVudF9yZXF1ZXN0X3JlZik6Ci0gICAgICAgIChld2tfaW50ZW50X3JlcXVlc3RfdW5yZWYpOgot
ICAgICAgICAoZXdrX2ludGVudF9yZXF1ZXN0X2ludGVudF9nZXQpOgotICAgICAgICAoZXdrX2lu
dGVudF9yZXF1ZXN0X3Jlc3VsdF9wb3N0KToKLSAgICAgICAgKGV3a19pbnRlbnRfcmVxdWVzdF9m
YWlsdXJlX3Bvc3QpOgotICAgICAgICAoZXdrX2ludGVudF9yZXF1ZXN0X25ldyk6Ci0gICAgICAg
ICogZXdrL2V3a19pbnRlbnRfcmVxdWVzdC5oOiBBZGRlZC4KLQotMjAxMi0wNS0xNyAgUmFwaGFl
bCBLdWJvIGRhIENvc3RhICA8cmFrdWNvQHdlYmtpdC5vcmc+Ci0KLSAgICAgICAgW0VGTF1bRFJU
XSBDYWxsIHJlc2V0SW50ZXJuYWxzT2JqZWN0KCkgYWZ0ZXIgZWFjaCB0ZXN0LgotICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODY3OTMKLQotICAgICAgICBS
ZXZpZXdlZCBieSBBbnRvbmlvIEdvbWVzLgotCi0gICAgICAgIFdlIG5lZWQgdG8gcmVzZXQgdGhl
IGludGVybmFscyBvYmplY3QncyBzZXR0aW5ncyBhZnRlciBydW5uaW5nCi0gICAgICAgIGVhY2gg
dGVzdCBzbyB0aGF0IHRoZXJlIGFyZSBubyBpbnRlcmZlcmVuY2VzIGJldHdlZW4gZWFjaCB0ZXN0
J3MKLSAgICAgICAgcmVzdWx0cy4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5k
ZXJUcmVlU3VwcG9ydEVmbC5jcHA6Ci0gICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6
Omdsb2JhbENvbnRleHRSZWZGb3JGcmFtZSk6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVt
cFJlbmRlclRyZWVTdXBwb3J0RWZsLmg6Ci0KLTIwMTItMDUtMTcgIFN1ZGFyc2FuYSBOYWdpbmVu
aSAgPHN1ZGFyc2FuYS5uYWdpbmVuaUBsaW51eC5pbnRlbC5jb20+Ci0KLSAgICAgICAgTWVtb3J5
IGxlYWsgaW4gTmV0d29ya0luZm9DbGllbnQKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTg2NjAzCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0
aC4KLQotICAgICAgICBGaXggYSBtZW1vcnkgbGVhayBpbiBOZXR3b3JrSW5mb0NsaWVudCBieSB1
c2luZyBPd25QdHIgYW5kIG1ha2luZwotICAgICAgICB0aGUgY2xpZW50IHRvIGJlIG93bmVkIGJ5
IHRoZSBWaWV3LgotCi0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAgKF9Fd2tf
Vmlld19Qcml2YXRlX0RhdGEpOgotICAgICAgICAoX2V3a192aWV3X3ByaXZfbmV3KToKLQotMjAx
Mi0wNS0xNyAgSGlyb25vcmkgQm9ubyAgPGhib25vQGNocm9taXVtLm9yZz4KLQotICAgICAgICBb
UmVmYWN0b3JpbmddIE1vdmUgcGxhdGZvcm0tc3BlY2lmaWMgY29kZSBpbiBFZGl0b3I6OnJlc3Bv
bmRUb0NoYW5nZWRTZWxlY3Rpb24gdG8gdGhlIFdlYktpdCBsYXllcgotICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODY1OTEKLQotICAgICAgICBSZXZpZXdl
ZCBieSBSeW9zdWtlIE5pd2EuCi0KLSAgICAgICAgVGhpcyBjaGFuZ2UgYWRkcyBhIFRleHRDaGVj
a2VyQ2xpZW50OjpzaG91bGRFcmFzZU1hcmtlcnNBZnRlckNoYW5nZVNlbGVjdGlvbgotICAgICAg
ICBmdW5jdGlvbiB0byByZW1vdmUgcGxhdGZvcm0tc3BlY2lmaWMgY29kZSBmcm9tIEVkaXRvcjo6
cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbgotICAgICAgICBmdW5jdGlvbi4KLQotICAgICAgICBO
byBuZXcgdGVzdHMsIG5vIGNoYW5nZSBpbiBiZWhhdmlvci4KLQotICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0VkaXRvckNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGll
bnRFZmw6OnNob3VsZEVyYXNlTWFya2Vyc0FmdGVyQ2hhbmdlU2VsZWN0aW9uKToKLSAgICAgICAg
KFdlYkNvcmUpOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5oOgot
ICAgICAgICAoRWRpdG9yQ2xpZW50RWZsKToKLQotMjAxMi0wNS0xNyAgVGhpYWdvIE1hcmNvcyBQ
LiBTYW50b3MgIDx0aGlhZ28uc2FudG9zQGludGVsLmNvbT4KLQotICAgICAgICBbRUZMXSBBZGQg
QVBJIGZvciBXZWIgRGF0YWJhc2UgaGFuZGxpbmcKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTg1MTc4Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQW50b25p
byBHb21lcy4KLQotICAgICAgICBBZGQgQVBJIGZvciBXZWIgRGF0YWJhc2UuIFRoaXMgQVBJIHdp
bGwgYWxsb3cgYSBicm93c2VyCi0gICAgICAgIHRvIHF1ZXJ5IGluZm9ybWF0aW9uIGFib3V0IHNp
emUsIG5hbWUsIGZpbGVuYW1lIGFuZCByZW1vdmUKLSAgICAgICAgZGF0YWJhc2VzIGJhc2VkIG9u
IHRoZSBvcmlnaW4uIEl0IHdpbGwgYmUgYWxzbyBwb3NzaWJsZSB0bwotICAgICAgICBsaXN0IGFs
bCBkYXRhYmFzZXMgZm9yIGEgZ2l2ZW4gb3JpZ2luLgotCi0gICAgICAgICogZXdrL0VXZWJLaXQu
aDoKLSAgICAgICAgKiBld2svZXdrX3NlY3VyaXR5X29yaWdpbi5jcHA6Ci0gICAgICAgIChld2tf
c2VjdXJpdHlfb3JpZ2luX3dlYl9kYXRhYmFzZV9nZXRfYWxsKToKLSAgICAgICAgKiBld2svZXdr
X3NlY3VyaXR5X29yaWdpbi5oOgotICAgICAgICAqIGV3ay9ld2tfc2V0dGluZ3MuY3BwOgotICAg
ICAgICAqIGV3ay9ld2tfc2V0dGluZ3MuaDoKLSAgICAgICAgKiBld2svZXdrX3dlYl9kYXRhYmFz
ZS5jcHA6IEFkZGVkLgotICAgICAgICAoX0V3a19XZWJfRGF0YWJhc2UpOgotICAgICAgICAoZXdr
X3dlYl9kYXRhYmFzZV9kaXNwbGF5X25hbWVfZ2V0KToKLSAgICAgICAgKGV3a193ZWJfZGF0YWJh
c2VfZXhwZWN0ZWRfc2l6ZV9nZXQpOgotICAgICAgICAoZXdrX3dlYl9kYXRhYmFzZV9maWxlbmFt
ZV9nZXQpOgotICAgICAgICAoZXdrX3dlYl9kYXRhYmFzZV9uYW1lX2dldCk6Ci0gICAgICAgIChl
d2tfd2ViX2RhdGFiYXNlX3NlY3VyaXR5X29yaWdpbl9nZXQpOgotICAgICAgICAoZXdrX3dlYl9k
YXRhYmFzZV9zaXplX2dldCk6Ci0gICAgICAgIChld2tfd2ViX2RhdGFiYXNlX3JlbW92ZSk6Ci0g
ICAgICAgIChld2tfd2ViX2RhdGFiYXNlX3JlbW92ZV9hbGwpOgotICAgICAgICAoZXdrX3dlYl9k
YXRhYmFzZV9mcmVlKToKLSAgICAgICAgKGV3a193ZWJfZGF0YWJhc2VfbGlzdF9mcmVlKToKLSAg
ICAgICAgKGV3a193ZWJfZGF0YWJhc2VfbmV3KToKLSAgICAgICAgKiBld2svZXdrX3dlYl9kYXRh
YmFzZS5oOiBBZGRlZC4KLSAgICAgICAgKiBld2svZXdrX3dlYl9kYXRhYmFzZV9wcml2YXRlLmg6
IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvZWZsL2V3ay9FV2ViS2l0LmguCi0gICAgICAgIChX
ZWJDb3JlKToKLQotMjAxMi0wNS0xNyAgTWFyaXVzeiBHcnplZ29yY3p5ayAgPG1hcml1c3ouZ0Bz
YW1zdW5nLmNvbT4KLQotICAgICAgICBbRUZMXSBbRFJUXSBFRkwncyBEdW1wUmVuZGVyVHJlZSBz
aG91bGQgc3VwcG9ydCBMYXlvdXRUZXN0Q29udHJvbGxlcidzIGR1bXBFZGl0aW5nQ2FsbGJhY2tz
KCkKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg0ODM1
Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCi0KLSAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuY3BwOiBDYWxsIGFwcHJvcHJpYXRlIGNhbGxiYWNrcyBm
b3IgZWRpdGluZyBhY3Rpb25zLgotICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50RWZsOjpz
aG91bGREZWxldGVSYW5nZSk6Ci0gICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRFZmw6OnNo
b3VsZEJlZ2luRWRpdGluZyk6Ci0gICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRFZmw6OnNo
b3VsZEVuZEVkaXRpbmcpOgotICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50RWZsOjpzaG91
bGRJbnNlcnRUZXh0KToKLSAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEVmbDo6c2hvdWxk
Q2hhbmdlU2VsZWN0ZWRSYW5nZSk6Ci0gICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRFZmw6
OnNob3VsZEFwcGx5U3R5bGUpOgotICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50RWZsOjpk
aWRCZWdpbkVkaXRpbmcpOgotICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50RWZsOjpkaWRF
bmRFZGl0aW5nKToKLSAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEVmbDo6c2hvdWxkSW5z
ZXJ0Tm9kZSk6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmg6IEFk
ZCBzdHJ1Y3R1cmVzIG5lZWRlZCBieSBlZGl0aW5nIGNhbGxiYWNrcy4KLSAgICAgICAgKEV3a19T
aG91bGRfSW5zZXJ0X05vZGVfRXZlbnQpOgotICAgICAgICAoRXdrX1Nob3VsZF9JbnNlcnRfVGV4
dF9FdmVudCk6Ci0gICAgICAgIChFd2tfU2hvdWxkX0NoYW5nZV9TZWxlY3RlZF9SYW5nZV9FdmVu
dCk6Ci0gICAgICAgIChFd2tfU2hvdWxkX0FwcGx5X1N0eWxlX0V2ZW50KToKLQotMjAxMi0wNS0x
NyAgR3J6ZWdvcnogQ3phamtvd3NraSAgPGcuY3phamtvd3NraUBzYW1zdW5nLmNvbT4KLQotICAg
ICAgICBbRUZMXSBEbyBub3QgY2hlY2sgTlVMTCBwb2ludGVyIGFsbG9jYXRlZCBieSBuZXcuCi0g
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NjYxMAotCi0g
ICAgICAgIFJldmlld2VkIGJ5IFJ5b3N1a2UgTml3YS4KLQotICAgICAgICBXZWJLaXQtRWZsIGRv
ZXNuJ3QgY2hlY2sgcG9pbnRlcnMgdGhhdCBhcmUgaW5pdGlhbGl6ZWQgYnkgbmV3LgotICAgICAg
ICBUaG9zZSBjaGVja3MgYXJlIG5vdCBuZWVkZWQgYmVjYXVzZSBuZXcgb3BlcmF0b3IgZG9lc24n
dCByZXR1cm4gTlVMTC4KLSAgICAgICAgT25seSBhbiBvdmVybG9hZGVkIHZlcnNpb24gb2YgbmV3
IHJldHVybnMgTlVMTCBwb2ludGVyLgotCi0gICAgICAgICogZXdrL2V3a190aWxlZF9tYXRyaXgu
Y3BwOgotICAgICAgICAoZXdrX3RpbGVfbWF0cml4X2VudHJ5X25ldyk6Ci0gICAgICAgICogZXdr
L2V3a192aWV3LmNwcDoKLSAgICAgICAgKF9ld2tfdmlld19jb3JlX2ZyYW1lX25ldyk6Ci0KLTIw
MTItMDUtMTcgIE1pa2hhaWwgUG96ZG55YWtvdiAgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5j
b20+Ci0KLSAgICAgICAgW0VGTF0gZmFzdC9mcmFtZXMvZnJhbWUtY3Jhc2gtd2l0aC1wYWdlLWNh
Y2hlLmh0bWwgaXMgY3Jhc2hpbmcKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTg1ODc5Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgTm9hbSBSb3NlbnRoYWwu
Ci0KLSAgICAgICAgX2V3a19mcmFtZV9zbWFydF9kZWwoKSBpcyBjb25zaWRlcmluZyBub3cgdGhh
dCB0aGUgZnJhbWUgY2FuIGJlIHByZXNlbnQgaW4gY2FjaGUuCi0gICAgICAgIGxvYWRlcigpLT5k
ZXRhY2hGcm9tUGFyZW50KCkgaXMgb25seSBhcHBsaWVkIGZvciB0aGUgbWFpbiBmcmFtZS4KLSAg
ICAgICAgbG9hZGVyKCktPmNhbmNlbEFuZENsZWFyKCkgaXMgbm90IHVzZWQgYW55bW9yZS4KLQot
ICAgICAgICAqIGV3ay9ld2tfZnJhbWUuY3BwOgotICAgICAgICAoX2V3a19mcmFtZV9zbWFydF9k
ZWwpOgotCi0yMDEyLTA1LTE2ICBUb21hc3ogTW9yYXdza2kgIDx0Lm1vcmF3c2tpQHNhbXN1bmcu
Y29tPgotCi0gICAgICAgIFtFRkxdIFJlc3RvcmUgYWNjaWRlbnRhbGx5IGNoYW5nZWQgY29weXJp
Z2h0cy4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg2
NDcxCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21lcy4KLQotICAgICAgICBSZXN0
b3JlIGFjY2lkZW50YWxseSBjaGFuZ2VkIGNvcHlyaWdodHMuCi0KLSAgICAgICAgKiBld2svZXdr
X2pzX3ByaXZhdGUuaDoKLSAgICAgICAgKiBld2svZXdrX3NlY3VyaXR5X29yaWdpbl9wcml2YXRl
Lmg6Ci0gICAgICAgICogZXdrL2V3a192aWV3X3ByaXZhdGUuaDoKLQotMjAxMi0wNS0xNiAgS2lo
b25nIEt3b24gIDxraWhvbmcua3dvbkBzYW1zdW5nLmNvbT4KLQotICAgICAgICBbRUZMXSBTdXBw
b3J0IGZvciBCYXR0ZXJ5IFN0YXR1cyBBUEkgb24gdGhlIFdlYktpdC1FZmwKLSAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgzMjU0Ci0KLSAgICAgICAgUmV2
aWV3ZWQgYnkgQ2hhbmcgU2h1LgotCi0gICAgICAgIFRoZSBzZXQgb2YgZV9kYnVzIGxpYnJhcmll
cywgZV91a2l0IGxpYnJhcnkgaW4gcGFydGljdWxhciwgZW5hYmxlcyB0byBzdXBwb3J0IGFsbCB0
eXBlcyBvZiBiYXR0ZXJ5IHN0YXR1cyBldmVudHMgKGUuZy4sIGNoYXJnaW5nLCBjaGFyZ2luZ1Rp
bWUsIGRpc2NoYXJnaW5nVGltZSwgbGV2ZWwpLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQv
QmF0dGVyeUNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpCYXR0ZXJ5Q2xpZW50RWZs
OjpCYXR0ZXJ5Q2xpZW50RWZsKToKLSAgICAgICAgKFdlYkNvcmU6OkJhdHRlcnlDbGllbnRFZmw6
OnN0YXJ0VXBkYXRpbmcpOgotICAgICAgICAoV2ViQ29yZTo6QmF0dGVyeUNsaWVudEVmbDo6c3Rv
cFVwZGF0aW5nKToKLSAgICAgICAgKFdlYkNvcmU6OkJhdHRlcnlDbGllbnRFZmw6OnNldEJhdHRl
cnlTdGF0dXMpOgotICAgICAgICAoV2ViQ29yZSk6Ci0gICAgICAgIChXZWJDb3JlOjpCYXR0ZXJ5
Q2xpZW50RWZsOjp0aW1lckZpcmVkKToKLSAgICAgICAgKFdlYkNvcmU6OkJhdHRlcnlDbGllbnRF
Zmw6OmdldEJhdHRlcnlTdGF0dXMpOgotICAgICAgICAoV2ViQ29yZTo6QmF0dGVyeUNsaWVudEVm
bDo6c2V0QmF0dGVyeUNsaWVudCk6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvQmF0dGVyeUNs
aWVudEVmbC5oOgotICAgICAgICAoV2ViQ29yZTo6QmF0dGVyeUNsaWVudEVmbDo6YmF0dGVyeVN0
YXR1cyk6Ci0gICAgICAgIChCYXR0ZXJ5Q2xpZW50RWZsKToKLQotMjAxMi0wNS0xNiAgVGhpYWdv
IE1hcmNvcyBQLiBTYW50b3MgIDx0aGlhZ28uc2FudG9zQGludGVsLmNvbT4KLQotICAgICAgICBb
RUZMXSBGaXggdW5pbml0aWFsaXplZCBzdHJ1Y3QgbWVtYmVyIGFkZGVkIGJ5IHIxMTcyNTgKLSAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg2NjExCi0KLSAg
ICAgICAgUmV2aWV3ZWQgYnkgR3VzdGF2byBOb3JvbmhhIFNpbHZhLgotCi0gICAgICAgIFdoZW4g
YWRkaW5nIGEgbmV3IG1lbWJlciB0byBfRXdrX1ZpZXdfU21hcnRfQ2xhc3MsCi0gICAgICAgIEVX
S19WSUVXX1NNQVJUX0NMQVNTX1ZFUlNJT04gbmVlZHMgdG8gYmUgdXBkYXRlZC4KLQotICAgICAg
ICAqIGV3ay9ld2tfdmlldy5oOgotCi0yMDEyLTA1LTE2ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hy
aXN0b3BoZS5kdW1lekBpbnRlbC5jb20+Ci0KLSAgICAgICAgW0VGTF0gRUZMJ3MgTGF5b3V0VGVz
dENvbnRyb2xsZXIgZG9lcyBub3QgaW1wbGVtZW50IHNldEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5R
dW90YQotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODU1
ODUKLQotICAgICAgICBSZXZpZXdlZCBieSBHdXN0YXZvIE5vcm9uaGEgU2lsdmEuCi0KLSAgICAg
ICAgQWRkIG5ldyBmdW5jdGlvbiB0byBFd2tfU2VjdXJpdHlfT3JpZ2luIHRvIHNldCB0aGUgYXBw
bGljYXRpb24gY2FjaGUKLSAgICAgICAgcXVvdGEuIEltcGxlbWVudCByZWFjaGVkQXBwbGljYXRp
b25DYWNoZU9yaWdpblF1b3RhIGluCi0gICAgICAgIENocm9tZUNsaWVudEVmbC4gQWRkIGZ1bmN0
aW9uIHRvIHRoZSBFd2tfVmlldyB0byByZXBvcnQgdGhhdCB0aGUKLSAgICAgICAgYXBwbGljYXRp
b24gY2FjaGUgcXVvdGEgd2FzIHJlYWNoZWQuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9D
aHJvbWVDbGllbnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZsOjpy
ZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKToKLSAgICAgICAgKiBld2svZXdrX3Nl
Y3VyaXR5X29yaWdpbi5jcHA6Ci0gICAgICAgIChld2tfc2VjdXJpdHlfb3JpZ2luX2FwcGxpY2F0
aW9uX2NhY2hlX3F1b3RhX3NldCk6Ci0gICAgICAgICogZXdrL2V3a19zZWN1cml0eV9vcmlnaW4u
aDoKLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoX0V3a19WaWV3X1ByaXZh
dGVfRGF0YSk6Ci0gICAgICAgIChld2tfdmlld19leGNlZWRlZF9hcHBsaWNhdGlvbl9jYWNoZV9x
dW90YSk6Ci0gICAgICAgICogZXdrL2V3a192aWV3Lmg6Ci0gICAgICAgICogZXdrL2V3a192aWV3
X3ByaXZhdGUuaDoKLQotMjAxMi0wNS0xNiAgTWlraGFpbCBQb3pkbnlha292ICA8bWlraGFpbC5w
b3pkbnlha292QGludGVsLmNvbT4KLQotICAgICAgICBbRUZMXSBFRkwncyBMYXlvdXRUZXN0Q29u
dHJvbGxlciAgZXZhbHVhdGVTY3JpcHRJbklzb2xhdGVkV29ybGQgaW1wbGVtZW50YXRpb24KLSAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgzNzc2Ci0KLSAg
ICAgICAgUmV2aWV3ZWQgYnkgVG9yIEFybmUgVmVzdGLDuC4KLQotICAgICAgICBBZGRlZCBoZWxw
ZXIgbmV3IGZ1bmN0aW9uIGltcGxlbWVudGluZyBKUyBzY3JpcHQgZXZhbHVhdGlvbiBpbiBhbiBp
c29sYXRlZCB3b3JsZC4KLSAgICAgICAgV29ybGRzIGFyZSBjYWNoZWQgYnkgdGhlaXIgaWQuCi0K
LSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwOgot
ICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpldmFsdWF0ZVNjcmlwdEluSXNvbGF0
ZWRXb3JsZCk6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0
RWZsLmg6Ci0KLTIwMTItMDUtMTYgIE1pY2hhxYIgUGFrdcWCYSB2ZWwgUnV0a2EgIDxtLnBha3Vs
YUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBbRUZMXSBBZGQgbmV3IGNvbW1hbmRzIGZvciBFd2tf
RWRpdG9yX0NvbW1hbmQuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03NDkyMQotCi0gICAgICAgIFJldmlld2VkIGJ5IEhhamltZSBNb3JpdGEuCi0KLSAg
ICAgICAgQWRkIG5ldyBjb21tYW5kcyBmb3IgRXdrX0VkaXRvcl9Db21tYW5kIGVudW0gYW5kIGlu
dHJvZHVjZSBuZXcgdGFibGUgdG8ga2VlcAotICAgICAgICBlbnVtIGFuZCBzdHJpbmcgdmFsdWVz
IGluIHN5bmMuCi0KLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOiBBZGRlZCBhIHRhYmxlIHdp
dGggRWRpdG9yQ29tbWFuZCBzdHJ1Y3QgZWxlbWVudHMuCi0gICAgICAgIChFZGl0b3JDb21tYW5k
KTogQWRkZWQgc3RydWN0dXJlIGNvbnNpc3Rpbmcgb2YgZW51bSBhbmQgc3RyaW5nIHZhbHVlLgot
ICAgICAgICAoX0V3a19WaWV3X1ByaXZhdGVfRGF0YSk6Ci0gICAgICAgIChfZXdrX3ZpZXdfZWRp
dG9yX2NvbW1hbmRfc3RyaW5nX2dldCk6IEFkZGVkLgotICAgICAgICAoZXdrX3ZpZXdfZWRpdG9y
X2NvbW1hbmRfZXhlY3V0ZSk6Ci0gICAgICAgICogZXdrL2V3a192aWV3Lmg6IEV3a19FZGl0b3Jf
Q29tbWFuZCBlbnVtIGV4dGVuZGVkLgotCi0yMDEyLTA1LTE1ICBLaWhvbmcgS3dvbiAgPGtpaG9u
Zy5rd29uQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxdIEVuYWJsZSBGdWxsc2NyZWVuIEFQ
SQotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODU4NzAK
LQotICAgICAgICBSZXZpZXdlZCBieSBBbnRvbmlvIEdvbWVzLgotCi0gICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNs
aWVudEVmbDo6c3VwcG9ydHNGdWxsU2NyZWVuRm9yRWxlbWVudCk6Ci0gICAgICAgIEFkZCBjaGVj
ayByb3V0aW5lIGlmIHRoZSBmdWxsIHNjcmVlbiBpcyBlbmFibGVkIGJ5IHBhZ2Ugc2V0dGluZy4K
LSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoX0V3a19WaWV3X1ByaXZhdGVf
RGF0YSk6Ci0gICAgICAgIChfZXdrX3ZpZXdfcHJpdl9uZXcpOgotICAgICAgICBBZGQgZnVsbCBz
Y3JlZW4gc2V0dGluZyB0byBiZSB0cnVlLgotCi0yMDEyLTA1LTE1ICBUb21hc3ogTW9yYXdza2kg
IDx0Lm1vcmF3c2tpQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxdIFNwbGl0IGV3a19wcml2
YXRlLmggZmlsZSB0byBtdWx0aXBsZSBwcml2YXRlIGZpbGVzLgotICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODQ1NzIKLQotICAgICAgICBSZXZpZXdlZCBi
eSBBbnRvbmlvIEdvbWVzLgotCi0gICAgICAgIFNwbGl0IGV3a19wcml2YXRlIGZpbGUgdG8gbXVs
dGlwbGUgcHJpdmF0ZSBmaWxlcy4KLSAgICAgICAgRGVsZXRlIGV3a19sb2dnaW5nLmggYW5kIGV3
a190aWxlZF9wcml2YXRlLmggZmlsZXMgYW5kIHJlbW92ZWQgdGlsZWRfYmFja2luZ19zdG9yZSBs
b2dnaW5nIGRvbWFpbi4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVm
bC5jcHA6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZs
LmNwcDoKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuY3BwOgotICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcDoKLSAgICAgICAg
KiBld2svZXdrX2F1dGguY3BwOgotICAgICAgICAqIGV3ay9ld2tfYXV0aF9zb3VwLmNwcDoKLSAg
ICAgICAgKGRldGFjaCk6Ci0gICAgICAgICogZXdrL2V3a19hdXRoX3NvdXBfcHJpdmF0ZS5oOiBS
ZW5hbWVkIGZyb20gU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19hdXRoX3NvdXAuaC4KLSAgICAg
ICAgKiBld2svZXdrX2NvbnRleHRtZW51X3ByaXZhdGUuaDogQ29waWVkIGZyb20gU291cmNlL1dl
YktpdC9lZmwvZXdrL2V3a19wcml2YXRlLmguCi0gICAgICAgIChXZWJDb3JlKToKLSAgICAgICAg
KiBld2svZXdrX2ZyYW1lLmNwcDoKLSAgICAgICAgKiBld2svZXdrX2ZyYW1lX3ByaXZhdGUuaDog
QWRkZWQuCi0gICAgICAgIChXZWJDb3JlKToKLSAgICAgICAgKEVXS1ByaXZhdGUpOgotICAgICAg
ICAqIGV3ay9ld2tfaGlzdG9yeS5jcHA6Ci0gICAgICAgICogZXdrL2V3a19oaXN0b3J5X3ByaXZh
dGUuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19wcml2YXRlLmguCi0g
ICAgICAgIChXZWJDb3JlKToKLSAgICAgICAgKEVXS1ByaXZhdGUpOgotICAgICAgICAqIGV3ay9l
d2tfanMuY3BwOgotICAgICAgICAqIGV3ay9ld2tfanNfcHJpdmF0ZS5oOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ByaXZhdGUuaC4KLSAgICAgICAgKF9Fd2tfSlNfT2Jq
ZWN0KToKLSAgICAgICAgKiBld2svZXdrX21haW4uY3BwOgotICAgICAgICAqIGV3ay9ld2tfbmV0
d29yay5jcHA6Ci0gICAgICAgICogZXdrL2V3a19wcml2YXRlLmg6Ci0gICAgICAgIChXZWJDb3Jl
KToKLSAgICAgICAgKiBld2svZXdrX3NlY3VyaXR5X29yaWdpbl9wcml2YXRlLmg6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfcHJpdmF0ZS5oLgotICAgICAgICAoV2ViQ29y
ZSk6Ci0gICAgICAgICogZXdrL2V3a19zZXR0aW5ncy5jcHA6Ci0gICAgICAgICogZXdrL2V3a19z
ZXR0aW5nc19wcml2YXRlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tf
cHJpdmF0ZS5oLgotICAgICAgICAqIGV3ay9ld2tfdGlsZWRfYmFja2luZ19zdG9yZS5jcHA6Ci0g
ICAgICAgIChfRXdrX1RpbGVkX0JhY2tpbmdfU3RvcmVfSXRlbSk6Ci0gICAgICAgIChld2tfdGls
ZWRfYmFja2luZ19zdG9yZV9hZGQpOgotICAgICAgICAqIGV3ay9ld2tfdGlsZWRfYmFja2luZ19z
dG9yZV9wcml2YXRlLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3Rp
bGVkX2JhY2tpbmdfc3RvcmUuaC4KLSAgICAgICAgKF9Fd2tfVGlsZV9TdGF0cyk6Ci0gICAgICAg
IChfRXdrX1RpbGUpOgotICAgICAgICAqIGV3ay9ld2tfdGlsZWRfbWF0cml4LmNwcDoKLSAgICAg
ICAgKiBld2svZXdrX3RpbGVkX21hdHJpeF9wcml2YXRlLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2Uv
V2ViS2l0L2VmbC9ld2svZXdrX3RpbGVkX21hdHJpeC5oLgotICAgICAgICAqIGV3ay9ld2tfdGls
ZWRfbW9kZWwuY3BwOgotICAgICAgICAodGlsZV9hY2NvdW50KToKLSAgICAgICAgKiBld2svZXdr
X3RpbGVkX21vZGVsX3ByaXZhdGUuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvZWZsL2V3
ay9ld2tfdGlsZWRfbW9kZWwuaC4KLSAgICAgICAgKiBld2svZXdrX3V0aWwuY3BwOgotICAgICAg
ICAqIGV3ay9ld2tfdXRpbF9wcml2YXRlLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX3V0aWwuaC4KLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAo
X0V3a19WaWV3X1ByaXZhdGVfRGF0YSk6Ci0gICAgICAgICogZXdrL2V3a192aWV3X3ByaXZhdGUu
aDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19wcml2YXRlLmguCi0gICAg
ICAgIChXZWJDb3JlKToKLSAgICAgICAgKEVXS1ByaXZhdGUpOgotICAgICAgICAqIGV3ay9ld2tf
dmlld19zaW5nbGUuY3BwOgotICAgICAgICAqIGV3ay9ld2tfdmlld190aWxlZC5jcHA6Ci0gICAg
ICAgICogZXdrL2V3a193aW5kb3dfZmVhdHVyZXMuY3BwOgotICAgICAgICAqIGV3ay9ld2tfd2lu
ZG93X2ZlYXR1cmVzX3ByaXZhdGUuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9lZmwvZXdr
L2V3a19wcml2YXRlLmguCi0KLTIwMTItMDUtMTQgIFJhcGhhZWwgS3VibyBkYSBDb3N0YSAgPHJh
a3Vjb0B3ZWJraXQub3JnPgotCi0gICAgICAgIFtFRkxdIFJlbW92ZSBld2tfdmlld19jb3JlX3Bh
Z2VfZ2V0KCkuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD04NjMyNgotCi0gICAgICAgIFJldmlld2VkIGJ5IEFudG9uaW8gR29tZXMuCi0KLSAgICAgICAg
UmlnaHQgbm93LCB3ZSBoYXZlIGJvdGggZXdrX3ZpZXdfY29yZV9wYWdlX2dldCgpIGFuZAotICAg
ICAgICBFV0tQcml2YXRlOjpjb3JlUGFnZSgpIGRvaW5nIHRoZSBzYW1lIHRoaW5nLCBidXQgdGhl
IGxhdHRlciBpcwotICAgICAgICBiZXR0ZXIgZW5jYXBzdWxhdGVkLgotCi0gICAgICAgIFJlbW92
ZSB0aGUgZm9ybWVyIHRoZW4uCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRl
ZENvbXBvc2l0aW5nQ29udGV4dEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpBY2NlbGVyYXRl
ZENvbXBvc2l0aW5nQ29udGV4dDo6c3luY0xheWVyc05vdyk6IEFkZAotICAgICAgICBtaXNzaW5n
IGV3a19wcml2YXRlLmggYW5kIHVzZSBFV0tQcml2YXRlOjpjb3JlUGFnZSgpLgotICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpD
aHJvbWVDbGllbnRFZmw6OmNyZWF0ZVdpbmRvdyk6IFVzZQotICAgICAgICBFV0tQcml2YXRlOjpj
b3JlUGFnZSgpLgotICAgICAgICAqIGV3ay9ld2tfcHJpdmF0ZS5oOiBSZW1vdmUgZXdrX3ZpZXdf
Y29yZV9wYWdlX2dldCgpIGRlY2xhcmF0aW9uLgotICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6
Ci0gICAgICAgIChfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKToKLSAgICAgICAgKEVXS1ByaXZhdGU6
OmNvcmVQYWdlKTogRml4IGNvZGluZyBzdHlsZSB3aGlsZSBoZXJlLgotCi0yMDEyLTA1LTExICBE
b21pbmlrIFLDtnR0c2NoZXMgIDxkb21pbmlrLnJvdHRzY2hlc0BpbnRlbC5jb20+Ci0KLSAgICAg
ICAgW0VGTF1bRFJUXSBJbnB1dCBBdHRyaWJ1dGUgUGxhY2Vob2xkZXIgUmVmVGVzdHMgZmFpbGlu
ZwotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODU2MDMK
LQotICAgICAgICBSZXZpZXdlZCBieSBIYWppbWUgTW9yaXRhLgotCi0gICAgICAgIFJlbW92aW5n
IGNvbG9yIGNsYXNzZXMgd2hpY2ggd2UgZG9uJ3QgbmVlZCBhbnltb3JlIGFmdGVyCi0gICAgICAg
IFJlbmRlclRoZW1lRWZsLmNwcCBpcyBsZXNzIGFnZ3Jlc3NpdmVseSBvdmVycmlkaW5nIHN0eWxp
bmcuCi0KLSAgICAgICAgKiBEZWZhdWx0VGhlbWUvZGVmYXVsdC5lZGM6Ci0KLTIwMTItMDUtMTAg
IEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBNb3Zl
IHJlc3VtZUFuaW1hdGlvbnMgdG8gdXNlIEludGVybmFscyBpbnRlcmZhY2UKLSAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg2MDYzCi0KLSAgICAgICAgUmV2
aWV3ZWQgYnkgQWxleGV5IFByb3NrdXJ5YWtvdi4KLQotICAgICAgICBSZW1vdmUgcmVzdW1lQW5p
bWF0aW9ucyBmdW5jdGlvbnMsIGJlY2F1c2UgaXQgaXMgYWJsZSB0byB3b3JrIGluIHRoZSAKLSAg
ICAgICAgY3Jvc3MtcG9ydCB3YXkgdGhyb3VnaCB0aGUgSW50ZXJuYWxzIGludGVyZmFjZS4KLQot
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHA6Ci0g
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmg6Ci0KLTIw
MTItMDUtMTAgIEthbmdpbCBIYW4gIDxrYW5naWwuaGFuQHNhbXN1bmcuY29tPgotCi0gICAgICAg
IFtFRkxdW0RSVF0gRWRpdG9yIGRvZXNuJ3QgY2FuY2VsIGNvbXBvc2l0aW9uIGFzIGNoYW5nZSBv
ZiB2YWx1ZQotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODUxMjIKLQotICAgICAgICBSZXZpZXdlZCBieSBNYXJ0aW4gUm9iaW5zb24uCi0KLSAgICAgICAg
SU1FIGNvbXBvc2l0aW9uIHNob3VsZCBiZSBjYW5jZWxsZWQgd2hlbiB0aGUgdmFsdWUgb2YgaW5w
dXQgZWxlbWVudCBpcyBjaGFuZ2VkIHByb2dyYW1tYXRpY2FsbHkuCi0gICAgICAgIEhvd2V2ZXIs
IEVGTCBwb3J0IGRvZXNuJ3QgY2FuY2VsIGFzIGNoYW5nZSBvZiB2YWx1ZS4KLSAgICAgICAgVGhl
cmVmb3JlLCB0aGlzIHBhdGNoIHdpbGwgZml4IHRoZSBidWcuCi0KLSAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xp
ZW50RWZsOjpyZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uKToKLQotMjAxMi0wNS0xMCAgRG9taW5p
ayBSw7Z0dHNjaGVzICA8ZG9taW5pay5yb3R0c2NoZXNAaW50ZWwuY29tPgotCi0gICAgICAgIFtF
RkxdW0RSVF0gZXdrX3ZpZXdfcGFpbnRfY29udGVudHMgbWF5IHRyaWdnZXIgYXNzZXJ0aW9uIGZh
aWx1cmUKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg1
MDU4Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgR3VzdGF2byBOb3JvbmhhIFNpbHZhLgotCi0gICAg
ICAgIEZpeGluZyBhc3NlcnRpb24gZmFpbHVyZSB0cmlnZ2VyZWQgaW4gbWVkaWEvbWVkaWEtZnJh
Z21lbnQgY2FzZXMuCi0gICAgICAgIFRoZSBhc3NlcnRpb24gaXMgaGl0IGJlY2F1c2Ugb2YgYSBy
YWNlIGJldHdlZW4gc2NoZWR1bGVSZWxheW91dCgpIGFuZAotICAgICAgICB0aGUgRVdLJ3MgaWRs
ZSB0aWxpbmcgcGFpbnRpbmcuIFRoaXMgaXMgZXhwb3NlZCBieSB0ZXN0IGNhc2VzCi0gICAgICAg
IHRoYXQgcmFwaWRseSBpbnNlcnQgY2hpbGQgbm9kZXMgdG8gdGhlIGRvY3VtZW50IHdoaWNoIGxl
YWQgdG8KLSAgICAgICAgc2NoZWR1bGVSZWxheW91dCgpIGNhbGxzLiBVc2luZyB0aGUgZ2VuZXJh
bCBwdXJwb3NlIGRlZmVuc2l2ZQotICAgICAgICBsYXlvdXQgZnVuY3Rpb24sIG5vdCBjYXVzaW5n
IGFueSBleHRyYSByZWxheW91dCB3b3JrIGlmIHRoZXJlJ3MKLSAgICAgICAgbm90aGluZyB0byBi
ZSBkb25lLCBidXQgc3RpbGwgYXZvaWRpbmcgdGhlIGFzc2VydGlvbiBmYWlsdXJlIGlmCi0gICAg
ICAgIGxheW91dCBpcyBuZWVkZWQuCi0KLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAg
ICAgICAoZXdrX3ZpZXdfcGFpbnQpOgotICAgICAgICAoZXdrX3ZpZXdfcGFpbnRfY29udGVudHMp
OgotCi0yMDEyLTA1LTEwICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNv
bT4KLQotICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTE2NjMzLgotICAgICAgICBo
dHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8xMTY2MzMKLSAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg2MDkzCi0KLSAgICAgICAgQnJlYWtzIEVG
TCB0ZXN0cyAoUmVxdWVzdGVkIGJ5IGtvdiBvbiAjd2Via2l0KS4KLQotICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHA6Ci0gICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmg6Ci0KLTIwMTItMDUtMTAgIEFsZXhh
bmRlciBTaGFsYW1vdiAgPGFsZXhhbmRlci5zaGFsYW1vdkBpbnRlbC5jb20+Ci0KLSAgICAgICAg
W0VGTF0gTGF5b3V0VGVzdENvbnRyb2xsZXIgbmVlZHMgaW1wbGVtZW50YXRpb24gb2Ygc2V0VGFi
S2V5Q3ljbGVzVGhyb3VnaEVsZW1lbnRzCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD04Mjg2NAotCi0gICAgICAgIFJldmlld2VkIGJ5IEd1c3Rhdm8gTm9y
b25oYSBTaWx2YS4KLQotICAgICAgICBBZGQgbWlzc2luZyBpbXBsZW1lbnRhdGlvbiBmb3Igc2V0
VGFiS2V5Q3ljbGVzVGhyb3VnaEVsZW1lbnRzIHRvIEVGTCdzCi0gICAgICAgIER1bXBSZW5kZXJU
cmVlU3VwcG9ydC4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3Vw
cG9ydEVmbC5jcHA6Ci0gICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OnNldFRhYktl
eUN5Y2xlc1Rocm91Z2hFbGVtZW50cyk6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJl
bmRlclRyZWVTdXBwb3J0RWZsLmg6Ci0KLTIwMTItMDUtMTAgIE1pa2hhaWwgUG96ZG55YWtvdiAg
PG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+Ci0KLSAgICAgICAgW0VGTF1bRFJUXSBDbGVh
ciBhZGRlZCB1c2VyIHN0eWxlIHNoZWV0cyBiZWZvcmUgYSBuZXcgdGVzdGNhc2UgZXhlY3V0aW9u
LgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODQ3OTIK
LQotICAgICAgICBSZXZpZXdlZCBieSBHdXN0YXZvIE5vcm9uaGEgU2lsdmEuCi0KLSAgICAgICAg
QWRkIGEgaGVscGVyIGZ1bmN0aW9uIGZvciBjbGVhcmluZyBvZiB0aGUgYWRkZWQgdXNlciBzdHls
ZSBzaGVldHMuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBv
cnRFZmwuY3BwOgotICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpjbGVhclVzZXJT
dHlsZVNoZWV0cyk6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBw
b3J0RWZsLmg6Ci0KLTIwMTItMDUtMDkgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1z
dW5nLmNvbT4KLQotICAgICAgICBNb3ZlIHN1c3BlbmRBbmltYXRpb25zIHRvIHVzZSBJbnRlcm5h
bHMgaW50ZXJmYWNlLgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9ODU5ODYKLQotICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtlIE5pd2EuCi0KLSAgICAg
ICAgUmVtb3ZlIHN1c3BlbmRBbmltYXRpb25zIGZ1bmN0aW9ucywgYmVjYXVzZSBpdCBpcyBhYmxl
IHRvIHdvcmsgaW4gdGhlIAotICAgICAgICBjcm9zcy1wb3J0IHdheSB0aHJvdWdoIHRoZSBJbnRl
cm5hbHMgaW50ZXJmYWNlLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRy
ZWVTdXBwb3J0RWZsLmNwcDoKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJl
ZVN1cHBvcnRFZmwuaDoKLQotMjAxMi0wNS0wOSAgQ2hyaXN0b3BoZSBEdW1leiAgPGNocmlzdG9w
aGUuZHVtZXpAaW50ZWwuY29tPgotCi0gICAgICAgIFtFRkxdW0RSVF0gRUZMJ3MgRFJUIG5lZWRz
IHRvIHN1cHBvcnQgTGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEljb25DaGFuZ2VzKCkKLSAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg0NDM1Ci0KLSAgICAg
ICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21lcy4KLQotICAgICAgICBFbWl0IGEgImljb24sY2hh
bmdlZCIgc2lnbmFsIG9uIHRoZSBmcmFtZSB3aGVuIGl0cyBmYXZpb24gY2hhbmdlZC4KLSAgICAg
ICAgQ2xhcmlmeSB0aGF0IHRoZSAiaWNvbixsb2FkZWQiIHNpZ25hbCBpcyBvbmx5IGVtaXR0ZWQg
Zm9yIHRoZSBtYWluCi0gICAgICAgIGZyYW1lLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJD
bGllbnRFZmw6OmRpc3BhdGNoRGlkUmVjZWl2ZUljb24pOgotICAgICAgICAoV2ViQ29yZTo6RnJh
bWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMpOgotICAgICAgICAqIGV3
ay9ld2tfZnJhbWUuY3BwOgotICAgICAgICAoZXdrX2ZyYW1lX2ljb25fY2hhbmdlZCk6Ci0gICAg
ICAgICogZXdrL2V3a19mcmFtZS5oOgotICAgICAgICAqIGV3ay9ld2tfcHJpdmF0ZS5oOgotCi0y
MDEyLTA1LTA5ICBNaWtoYWlsIFBvemRueWFrb3YgIDxtaWtoYWlsLnBvemRueWFrb3ZAaW50ZWwu
Y29tPgotCi0gICAgICAgIFtFRkxdW0RSVF0gTGF5b3V0VGVzdENvbnRyb2xsZXIgYWRkVXNlclNj
cmlwdCBpbXBsZW1lbnRhdGlvbgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODQ3MTgKLQotICAgICAgICBSZXZpZXdlZCBieSBBbnRvbmlvIEdvbWVzLgot
Ci0gICAgICAgIEFkZGVkIGhlbHBlciBmdW5jdGlvbnMgZm9yIGFkZGluZy9jbGVhcmluZyBvZiB1
c2VyIHNjcmlwdHMuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1
cHBvcnRFZmwuY3BwOgotICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjphZGRVc2Vy
U2NyaXB0KToKLSAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6Y2xlYXJVc2VyU2Ny
aXB0cyk6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZs
Lmg6Ci0KLTIwMTItMDUtMDggIEthbmdpbCBIYW4gIDxrYW5naWwuaGFuQHNhbXN1bmcuY29tPgot
Ci0gICAgICAgIFtFRkxdW0RSVF0gSW1wbGVtZW50IFRleHRJbnB1dENvbnRyb2xsZXIuCi0gICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODU1OQotCi0gICAg
ICAgIFJldmlld2VkIGJ5IE1hcnRpbiBSb2JpbnNvbi4KLQotICAgICAgICBUZXh0SW5wdXRDb250
cm9sbGVyIGhhcyBiZWVuIGNyZWF0ZWQgZm9yIGFuIGlucHV0IGVtdWxhdGlvbiBwdXJwb3NlIGlu
IERSVC4KLSAgICAgICAgSG93ZXZlciwgbm90IGxpa2Ugb3RoZXIgcG9ydHMsIEVGTCBkb2Vzbid0
IGhhdmUgaXQuCi0gICAgICAgIFRoZXJlZm9yZSwgdGhpcyBwYXRjaCB3aWxsIGVuYWJsZSBFRkwg
cG9ydCB0byBoYXZlIGFuIGlucHV0IGVtdWxhdGlvbiBpbiBEUlQuCi0KLSAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwOgotICAgICAgICAoRHVtcFJl
bmRlclRyZWVTdXBwb3J0RWZsOjpzZXRDb21wb3NpdGlvbik6Ci0gICAgICAgIChEdW1wUmVuZGVy
VHJlZVN1cHBvcnRFZmw6Omhhc0NvbXBvc2l0aW9uKToKLSAgICAgICAgKER1bXBSZW5kZXJUcmVl
U3VwcG9ydEVmbDo6Y29tcG9zaXRpb25SYW5nZSk6Ci0gICAgICAgIChEdW1wUmVuZGVyVHJlZVN1
cHBvcnRFZmw6OmNvbmZpcm1Db21wb3NpdGlvbik6Ci0gICAgICAgIChEdW1wUmVuZGVyVHJlZVN1
cHBvcnRFZmw6OmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKToKLSAgICAgICAgKER1bXBSZW5k
ZXJUcmVlU3VwcG9ydEVmbDo6c2VsZWN0ZWRSYW5nZSk6Ci0gICAgICAgICogV2ViQ29yZVN1cHBv
cnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmg6Ci0KLTIwMTItMDQtMjMgIFJhcGhhZWwgS3Vi
byBkYSBDb3N0YSAgPHJha3Vjb0B3ZWJraXQub3JnPgotCi0gICAgICAgIFtFRkxdIFBhc3MgYSBX
VEY6OlN0cmluZyBkaXJlY3RseSBmcm9tIERSVCB0byBld2Via2l0IHdoZW4gcG9zc2libGUKLSAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg0NjM0Ci0KLSAg
ICAgICAgUmV2aWV3ZWQgYnkgR3VzdGF2byBOb3JvbmhhIFNpbHZhLgotCi0gICAgICAgIERyb3Ag
dW5uZWNlc3NhcnkgY29uc3QgY2hhciogLT4gV1RGOjpTdHJpbmcgY29udmVyc2lvbnMgYnkKLSAg
ICAgICAgY3JlYXRpbmcgU3RyaW5nIG9iamVjdHMgZGlyZWN0bHkgaW4gTGF5b3V0VGVzdENvbnRy
b2xsZXIgb3V0IG9mCi0gICAgICAgIEpTU3RyaW5nUmVmJ3MgYW5kIHBhc3NpbmcgdGhlbSB0byBE
dW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1w
UmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwOgotICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0
RWZsOjpzZXRWYWx1ZUZvclVzZXIpOgotICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZs
OjphZGRVc2VyU3R5bGVTaGVldCk6Ci0gICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6
OmZpbmRTdHJpbmcpOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3Vw
cG9ydEVmbC5oOgotCi0yMDEyLTA1LTA4ICBLcnp5c3p0b2YgQ3plY2ggIDxrLmN6ZWNoQHNhbXN1
bmcuY29tPgotCi0gICAgICAgIFtFRkxdIFVwZGF0ZSBkb2N1bWVudGF0aW9uIG9mIGV3a19mcmFt
ZV9jb250ZW50c19hbHRlcm5hdGVfc2V0IGFuZCBld2tfdmlld196b29tX3JhbmdlX3NldC4KLSAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg0NTg4Ci0KLSAg
ICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCi0KLSAgICAgICAgSW4gZXdrX2ZyYW1lX2Nv
bnRlbnRzX2FsdGVybmF0ZV9zZXQsIHBhcmFtIHVucmVhY2hhYmxlVXJpIGlzIHJlcXVpcmVkLCBt
dXN0IG5vdCBiZSAwLgotICAgICAgICBJbiBld2tfdmlld196b29tX3JhbmdlX3NldCwgZnVuY3Rp
b24gcmV0dXJucyBFSU5BX0ZBTFNFIG9ubHkgb24gZmFpbHVyZSwKLSAgICAgICAgbm90IHdoZW4g
em9vbSByYW5nZSBpcyBjaGFuZ2VkLgotCi0gICAgICAgICogZXdrL2V3a19mcmFtZS5oOgotICAg
ICAgICAqIGV3ay9ld2tfdmlldy5oOgotCi0yMDEyLTA1LTA3ICBNaWtoYWlsIFBvemRueWFrb3Yg
IDxtaWtoYWlsLnBvemRueWFrb3ZAaW50ZWwuY29tPgotCi0gICAgICAgIFtFRkxdIFBhZ2UgY2Fj
aGluZyBwZXJtaXNzaW9uIGZyb20gRUZMJ3MgRnJhbWVMb2FkZXJDbGllbnQKLSAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg1NjIwCi0KLSAgICAgICAgUmV2
aWV3ZWQgYnkgR3VzdGF2byBOb3JvbmhhIFNpbHZhLgotCi0gICAgICAgIEZyYW1lTG9hZGVyQ2xp
ZW50RWZsOjpjYW5DYWNoZVBhZ2UoKSByZXR1cm5zIHRydWUuCi0KLSAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFt
ZUxvYWRlckNsaWVudEVmbDo6Y2FuQ2FjaGVQYWdlKToKLQotMjAxMi0wNS0wNyAgR3J6ZWdvcnog
Q3phamtvd3NraSAgPGcuY3phamtvd3NraUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBbRUZMXSBJ
Y29uIGRhdGFiYXNlIHBhdGggbWF5IGJlIE5VTEwgd2hlbiBhIG5ldyBwYXRoIHdhcyBzZXQuCi0g
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjQ1NgotCi0g
ICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCi0KLSAgICAgICAgZXdrX3NldHRpbmdz
X2ljb25fZGF0YWJhc2VfcGF0aF9zZXQgY2FsbHMgYXN5bmNocm9ub3VzIG1ldGhvZCBXZWJDb3Jl
OjppY29uRGF0YWJhc2UoKS5vcGVuKCkuCi0gICAgICAgIFRoZXJlIGlzIG5vIG5vdGlmaWNhdGlv
biB3aGVuIHRoZSBuZXcgcGF0aCBpcyBzZXQgYnkgV2ViQ29yZS4KLSAgICAgICAgTW9yZW92ZXIg
ZXdrX3NldHRpbmdzX2ljb25fZGF0YWJhc2VfcGF0aF9zZXQga2VlcHMgdGhlIG5ldyBwYXRoIGlu
IGEgbG9jYWwgdmFyaWFibGUuCi0KLSAgICAgICAgVG8gcmV0cmlldmUgcGF0aCB0byBpY29uIGRh
dGFiYXNlIGV3a19zZXR0aW5nc19pY29uX2RhdGFiYXNlX3BhdGhfZ2V0IGNhbiBiZSBjYWxsZWQu
Ci0gICAgICAgIEl0IGZpcnN0IGNoZWNrcyBmbGFncyB3aGV0aGVyIGljb24gZGF0YWJzZSBpcyBv
cGVuZWQgYW5kIGVuYWJsZWQuIFRoZXJlIGlzIHBvc3NpYmlsaXR5Ci0gICAgICAgIHRoYXQgaWNv
biBkYXRhYmFzZSBoYXMgYmVlbiBzZXQgdGhyb3VnaCBBUEkgYnV0IGl0IGhhc24ndCBiZWVuIG9w
ZW5lZCBieSBXZWJDb3JlIHlldC4KLSAgICAgICAgU28gYXMgYSByZXN1bHQgZXdrX3NldHRpbmdz
X2ljb25fZGF0YWJhc2VfcGF0aF9nZXQgcmV0dXJucyBOVUxMIGJlY2F1c2UgV2ViQ29yZSBoYXNu
J3QKLSAgICAgICAgc2V0IGFuIGFwcHJvcHJpYXRlIGZsYWcgeWV0LgotCi0gICAgICAgIEl0IG1h
eSBoYXBwZW4gd2hpbGUgaWNvbiBkYXRhYmFzZSBzZXQvZ2V0IHNlcXVlbmNlcy4KLSAgICAgICAg
SW5mb3JtYXRpb24gd2hldGhlciBpY29uIGRhdGFiYXNlIGlzIG9wZW5lZC9lbmFibGVkIHNob3Vs
ZCBiZSBleHBvc2VkIGJ5IHNlcGFyYXRlIEFQSS4KLQotICAgICAgICAqIGV3ay9ld2tfc2V0dGlu
Z3MuY3BwOgotICAgICAgICAoZXdrX3NldHRpbmdzX2ljb25fZGF0YWJhc2VfcGF0aF9nZXQpOiBT
a2lwIGNoZWNraW5nIHdoZXRoZXIgaWNvbiBkYXRhYmFzZSBpcyBvcGVuZWQsIGVuYWJsZWQuCi0g
ICAgICAgICogZXdrL2V3a19zZXR0aW5ncy5oOgotCi0yMDEyLTA1LTA3ICBTdWRhcnNhbmEgTmFn
aW5lbmkgIDxzdWRhcnNhbmEubmFnaW5lbmlAbGludXguaW50ZWwuY29tPgotCi0gICAgICAgIFtF
RkxdW0RSVF0gSW1wbGVtZW50IExheW91dFRlc3RDb250cm9sbGVyOjpleGVjQ29tbWFuZAotICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODIyODYKLQotICAg
ICAgICBSZXZpZXdlZCBieSBBbnRvbmlvIEdvbWVzLgotCi0gICAgICAgIEFkZCBtaXNzaW5nIGlt
cGxlbWVudGF0aW9uIGV4ZWNDb21tYW5kIGFuZCBpc0NvbW1hbmRFbmFibGVkIHRvIEVGTCdzCi0g
ICAgICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydCB0byBleGVjdXRlIGFuIGludGVybmFsIGNvbW1h
bmQgYW5kIGNoZWNrIGlmIHRoZQotICAgICAgICBjb21tYW5kIGlzIGVuYWJsZWQuCi0KLSAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwOgotICAgICAg
ICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpleGVjdXRlQ29yZUNvbW1hbmRCeU5hbWUpOgot
ICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjppc0NvbW1hbmRFbmFibGVkKToKLSAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuaDoKLQotMjAx
Mi0wNS0wNiAgTWlraGFpbCBQb3pkbnlha292ICA8bWlraGFpbC5wb3pkbnlha292QGludGVsLmNv
bT4KLQotICAgICAgICBbRUZMXSBFRkwncyBMYXlvdXRUZXN0Q29udHJvbGxlciBzZXRKYXZhU2Ny
aXB0Q2FuQWNjZXNzQ2xpcGJvYXJkIGltcGxlbWVudGF0aW9uCi0gICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MzY4NwotCi0gICAgICAgIFJldmlld2VkIGJ5
IEFudG9uaW8gR29tZXMuCi0KLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAo
X0V3a19WaWV3X1ByaXZhdGVfRGF0YSk6Ci0gICAgICAgIChfZXdrX3ZpZXdfcHJpdl9uZXcpOgot
ICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19zY3JpcHRzX2Nhbl9hY2Nlc3NfY2xpcGJvYXJkX2dl
dCk6Ci0gICAgICAgIChld2tfdmlld19zZXR0aW5nX3NjcmlwdHNfY2FuX2FjY2Vzc19jbGlwYm9h
cmRfc2V0KToKLSAgICAgICAgKiBld2svZXdrX3ZpZXcuaDoKLQotMjAxMi0wNS0wNiAgR3l1eW91
bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgotCi0gICAgICAgIENvbnZlcnQgaXNQ
YWdlQm94VmlzaWJsZSB0byB1c2UgSW50ZXJuYWxzIGludGVyZmFjZS4KLSAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg1NjkyCi0KLSAgICAgICAgUmV2aWV3
ZWQgYnkgRGFyaW4gQWRsZXIuCi0KLSAgICAgICAgUmVtb3ZlIGlzUGFnZUJveFZpc2libGUgZnVu
Y3Rpb25zLCBiZWNhdXNlIGl0IGlzIGFibGUgdG8gd29yayBpbiB0aGUKLSAgICAgICAgY3Jvc3Mt
cG9ydCB3YXkgdGhyb3VnaCB0aGUgSW50ZXJuYWxzIGludGVyZmFjZS4KLQotICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHA6Ci0gICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmg6Ci0KLTIwMTItMDUtMDQgIENo
cmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KLQotICAgICAgICBb
RUZMXSBJbXBsZW1lbnQgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcFJlc291cmNlUmVzcG9uc2VN
SU1FVHlwZXMKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTg0OTQxCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgTWFydGluIFJvYmluc29uLgotCi0gICAgICAg
IEV4dGVuZCBFd2tfRnJhbWVfUmVzb3VyY2VfUmVzcG9uc2Ugc3RydWN0dXJlIHRvIHBhc3MgcmVz
b3VyY2UgTUlNRSB0eXBlCi0gICAgICAgIGluZm9ybWF0aW9uLgotCi0gICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29yZTo6RnJh
bWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0KToKLSAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZSk6
Ci0gICAgICAgICogZXdrL2V3a19mcmFtZS5oOgotCi0yMDEyLTA1LTA0ICBOYXRlIENoYXBpbiAg
PGphcGhldEBjaHJvbWl1bS5vcmc+Ci0KLSAgICAgICAgRG9uJ3QgcmVxdWlyZSBGcmFtZUxvYWRl
ckNsaWVudCB0byBtYW51ZmFjdHVyZSBhIGNvbW1pdERhdGEoKSBjYWxsIGZvciBlbXB0eSBkb2N1
bWVudHMuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
NTUzMwotCi0gICAgICAgIFJldmlld2VkIGJ5IEFsZXhleSBQcm9za3VyeWFrb3YuCi0KLSAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6RnJhbWVMb2FkZXJDbGllbnRFZmwpOgotICAg
ICAgICAoV2ViQ29yZSk6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6
ZmluaXNoZWRMb2FkaW5nKToKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudEVmbC5oOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6Om1ha2VS
ZXByZXNlbnRhdGlvbik6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6
cmV2ZXJ0VG9Qcm92aXNpb25hbFN0YXRlKToKLSAgICAgICAgKEZyYW1lTG9hZGVyQ2xpZW50RWZs
KToKLQotMjAxMi0wNS0wNCAgQ2hyaXN0b3BoZSBEdW1leiAgPGNocmlzdG9waGUuZHVtZXpAaW50
ZWwuY29tPgotCi0gICAgICAgIFtFRkxdIEZyYW1lIGxvYWQgY2FsbGJhY2tzIG91dHB1dCBpcyBt
aXNzaW5nIGZvciByZWRpcmVjdGlvbnMKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTg1MTczCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21l
cy4KLQotICAgICAgICBBZGQgYSBmZXcgcmVkaXJlY3Rpb24tcmVsYXRlZCBzaWduYWxzIG9uIHRo
ZSBld2tfZnJhbWUgc28gdGhhdCBFRkwncwotICAgICAgICBEdW1wUmVuZGVyVHJlZSBjYW4gcHJp
bnQgdGhlIGV4cGVjdGVkIG91dHB1dCB3aGVuCi0gICAgICAgIExheW91dFRlc3RDb250cm9sbGVy
J3MgZHVtcEZyYW1lTG9hZENhbGxiYWNrcygpIHJldHVybnMgdHJ1ZS4KLQotICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaFdpbGxTZW5kUmVxdWVzdCk6Ci0gICAgICAg
IChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9u
c2UpOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlk
UmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKToKLSAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJl
Y3QpOgotICAgICAgICAqIGV3ay9ld2tfZnJhbWUuY3BwOgotICAgICAgICAoZXdrX2ZyYW1lX3Jl
ZGlyZWN0X3Byb3Zpc2lvbmFsX2xvYWQpOgotICAgICAgICAoZXdrX2ZyYW1lX3JlZGlyZWN0X3Jl
cXVlc3RlZCk6Ci0gICAgICAgICogZXdrL2V3a19mcmFtZS5oOgotICAgICAgICAqIGV3ay9ld2tf
cHJpdmF0ZS5oOgotCi0yMDEyLTA1LTA0ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5k
dW1lekBpbnRlbC5jb20+Ci0KLSAgICAgICAgW0VGTF0gTGF5b3V0VGVzdENvbnRyb2xsZXIgZG9l
cyBub3Qgc3VwcG9ydCBvdmVycmlkaW5nIFdlYktpdExvYWRTaXRlSWNvbnNLZXkKLSAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg1MTcxCi0KLSAgICAgICAg
UmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KLQotICAgICAgICBBZGQgYSBoZWxwZXIgZnVuY3Rp
b24gdG8gRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsIHRvIG92ZXJyaWRlIHRoZQotICAgICAgICAi
V2ViS2l0TG9hZFNpdGVJY29uc0tleSIgc2V0dGluZyBvbiB0aGUgdmlldyBwYWdlLgotCi0gICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcDoKLSAgICAg
ICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6c2V0TG9hZHNTaXRlSWNvbnNJZ25vcmluZ0lt
YWdlTG9hZGluZ1NldHRpbmcpOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJU
cmVlU3VwcG9ydEVmbC5oOgotCi0yMDEyLTA1LTAzICBGYWR5IFNhbXVlbCAgPGZzYW11ZWxAY2hy
b21pdW0ub3JnPgotCi0gICAgICAgIFJlbW92aW5nIGxpbmUgaW4gY29tcHV0ZVZpZXdwb3J0QXR0
cmlidXRlcyB0aGF0IGVuZm9yY2VzIGEgbWluaW11bSBzY2FsZSBmYWN0b3IgdG8gbmV2ZXIgYWxs
b3cgem9vbWluZyBvdXQgbW9yZSB0aGFuIHZpZXdwb3J0Ci0gICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MDYwOQotCi0gICAgICAgIFJldmlld2VkIGJ5IEtl
bm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVt
cFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcDoKLSAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9y
dEVmbDo6ZHVtcENvbmZpZ3VyYXRpb25Gb3JWaWV3cG9ydCk6Ci0KLTIwMTItMDQtMTggIEpvbiBI
b25leWN1dHQgIDxqaG9uZXljdXR0QGFwcGxlLmNvbT4KLQotICAgICAgICBGcmFtZUxvYWRlckNs
aWVudDo6ZGlzcGF0Y2hXaWxsU2VuZFN1Ym1pdEV2ZW50KCkgc2hvdWxkIGJlIGdpdmVuIG1vcmUK
LSAgICAgICAgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGZvcm0gYmVpbmcgc3VibWl0dGVkCi0gICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NDI5NwotCi0gICAg
ICAgIFJldmlld2VkIGJ5IEFuZHkgRXN0ZXMuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudEVmbC5oOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGll
bnRFZmw6OmRpc3BhdGNoV2lsbFNlbmRTdWJtaXRFdmVudCk6Ci0gICAgICAgIFVwZGF0ZWQgbWV0
aG9kIGRlY2xhcmF0aW9uLgotCi0yMDEyLTA1LTAyICBFbWlsIEEgRWtsdW5kICA8ZWFlQGNocm9t
aXVtLm9yZz4KLQotICAgICAgICBGaXggdXNhZ2Ugb2YgbGF5b3V0IHR5cGVzIGluIHBsYXRmb3Jt
IGNvZGUKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg1
MzkyCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCi0KLSAgICAgICAgKiBld2sv
ZXdrX2ZyYW1lLmNwcDoKLSAgICAgICAgKGV3a19mcmFtZV9mb2N1c2VkX2VsZW1lbnRfZ2VvbWV0
cnlfZ2V0KToKLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoX0V3a19WaWV3
X1ByaXZhdGVfRGF0YSk6Ci0gICAgICAgIChld2tfdmlld19zY2FsZV9zZXQpOgotCi0yMDEyLTA1
LTAyICBNaWtoYWlsIFBvemRueWFrb3YgIDxtaWtoYWlsLnBvemRueWFrb3ZAaW50ZWwuY29tPgot
Ci0gICAgICAgIFtFRkxdIEh5cGVybGluayBhdWRpdGluZyBld2tfdmlldyBzZXR0aW5nCi0gICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NDQ1MQotCi0gICAg
ICAgIFJldmlld2VkIGJ5IEFudG9uaW8gR29tZXMuCi0KLSAgICAgICAgRXhwb3J0aW5nIG5ldyBl
d2tfdmlldyBzZXR0aW5nOiAgaHlwZXJsaW5rQXVkaXRpbmdFbmFibGVkIC0gZW5ibGVzL2Rpc2Fi
bGVzIGh5cGVybGluayBhdWRpdGluZy4KLQotICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0g
ICAgICAgIChfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKToKLSAgICAgICAgKF9ld2tfdmlld19wcml2
X25ldyk6Ci0gICAgICAgIChld2tfdmlld19zZXR0aW5nX2VuYWJsZV9oeXBlcmxpbmtfYXVkaXRp
bmdfZ2V0KToKLSAgICAgICAgKGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2h5cGVybGlua19hdWRp
dGluZ19zZXQpOgotICAgICAgICAqIGV3ay9ld2tfdmlldy5oOgotCi0yMDEyLTA1LTAyICBEb25n
d29vIEltICA8ZHcuaW1Ac2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW0VGTF0gRml4IHR5cG8gaW50
cm9kdWNlZCBpbiByMTE1ODAwLgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODUzNTQKLQotICAgICAgICBSZXZpZXdlZCBieSBOaWtvbGFzIFppbW1lcm1h
bm4uCi0KLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoX0V3a19WaWV3X1By
aXZhdGVfRGF0YSk6IEFzc2lnbiAxIGJpdCB0byB0aGUgYm9vbGVhbiBhdHRyaWJ1dGUsIHdlYkF1
ZGlvLgotCi0yMDEyLTA1LTAyICBEb25nd29vIEltICA8ZHcuaW1Ac2Ftc3VuZy5jb20+Ci0KLSAg
ICAgICAgW0VGTF0gSW1wbGVtZW50IHRoZSBXZWIgQXVkaW8gQVBJIGZlYXR1cmUuCi0gICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODY4OAotCi0gICAgICAg
IFJldmlld2VkIGJ5IFBoaWxpcHBlIE5vcm1hbmQuCi0KLSAgICAgICAgSW1wbGVtZW50IHRoZSBX
ZWIgQXVkaW8gQVBJIGZlYXR1cmUgb24gdGhlIEVGTCBwb3J0LgotICAgICAgICBodHRwczovL2R2
Y3MudzMub3JnL2hnL2F1ZGlvL3Jhdy1maWxlL3RpcC93ZWJhdWRpby9zcGVjaWZpY2F0aW9uLmh0
bWwKLQotICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6IEFkZCB0aGUgc2V0dGVyL2dldHRlciBv
ZiB0aGUgd2ViYXVkaW8gZmVhdHVyZS4KLSAgICAgICAgKF9Fd2tfVmlld19Qcml2YXRlX0RhdGEp
OgotICAgICAgICAoX2V3a192aWV3X3ByaXZfbmV3KToKLSAgICAgICAgKGV3a192aWV3X3NldHRp
bmdfd2ViX2F1ZGlvX2dldCk6IEVuYWJsZS9kaXNhYmxlIHRoZSBXZWIgQXVkaW8gQVBJIGZlYXR1
cmUuCi0gICAgICAgIChld2tfdmlld19zZXR0aW5nX3dlYl9hdWRpb19zZXQpOiBRdWVyeSBpZiB0
aGUgV2ViIEF1ZGlvIEFQSSBmZWF0dXJlIGlzIGVuYWJsZWQuCi0gICAgICAgICogZXdrL2V3a192
aWV3Lmg6IEFkZCB0aGUgcHJvdG90eXBlcy4KLQotMjAxMi0wNC0yNyAgQ2hyaXN0b3BoZSBEdW1l
eiAgPGNocmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgotCi0gICAgICAgIFtFRkxdIFJlc291cmNl
RXJyb3IgZG9tYWluIG5lZWRzIHRvIGJlIHByb3Blcmx5IHNldCBpbiBGcmFtZUxvYWRlckNsaWVu
dAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODQxMjkK
LQotICAgICAgICBSZXZpZXdlZCBieSBOYXRlIENoYXBpbi4KLQotICAgICAgICBQcm9wZXJseSBz
ZXQgUmVzb3VyY2VFcnJvciBvYmplY3RzJyBkb21haW4gaW5zdGVhZCBvZiB1c2luZyBhIGdlbmVy
aWMKLSAgICAgICAgb25lLiBUaGlzIGFsbG93cyBXZWJLaXQgYW5kIE5TVVJMIGVycm9ycyB0byBi
ZSBkaXN0aW5ndWlzaGVkLCB3aGljaCBpcwotICAgICAgICByZXF1aXJlZCB0byBwcm9wZXJseSBw
cmludCBvdXQgaW5mb3JtYXRpb24gaW4gRUZMJ3MgRHVtcFJlbmRlclRyZWUKLSAgICAgICAgd2hl
biBkdW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzKCkgcmV0dXJucyB0cnVlLgotCi0gICAgICAgICog
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmNhbmNlbGxlZEVycm9yKToKLSAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpibG9ja2VkRXJyb3IpOgotICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmNhbm5vdFNob3dVUkxFcnJvcik6Ci0gICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6aW50ZXJydXB0ZWRGb3JQb2xpY3lDaGFuZ2VF
cnJvcik6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6Y2Fubm90U2hv
d01JTUVUeXBlRXJyb3IpOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6
OmZpbGVEb2VzTm90RXhpc3RFcnJvcik6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNs
aWVudEVmbDo6cGx1Z2luV2lsbEhhbmRsZUxvYWRFcnJvcik6Ci0KLTIwMTItMDQtMjcgIE1pa2hh
aWwgUG96ZG55YWtvdiAgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+Ci0KLSAgICAgICAg
W0VGTF0gdGFic1RvTGlua3MgZXdrX3ZpZXcgc2V0dGluZwotICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODQzNDAKLQotICAgICAgICBFeHBvcnRpbmcgbmV3
IGV3a192aWV3IHNldHRpbmc6IHRhYnNUb0xpbmtzIC0gZW5ibGVzL2Rpc2FibGVzIHRhYiBrZXkg
Zm9jdXNpbmcgb2YgcGFnZSBlbGVtZW50cy4KLQotICAgICAgICBSZXZpZXdlZCBieSBBbnRvbmlv
IEdvbWVzLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcDoK
LSAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEVmbDo6a2V5Ym9hcmRVSU1vZGUpOgotICAg
ICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRh
KToKLSAgICAgICAgKF9ld2tfdmlld19wcml2X25ldyk6Ci0gICAgICAgIChld2tfdmlld19zZXR0
aW5nX2luY2x1ZGVfbGlua3NfaW5fZm9jdXNfY2hhaW5fZ2V0KToKLSAgICAgICAgKGV3a192aWV3
X3NldHRpbmdfaW5jbHVkZV9saW5rc19pbl9mb2N1c19jaGFpbl9zZXQpOgotICAgICAgICAqIGV3
ay9ld2tfdmlldy5oOgotCi0yMDEyLTA0LTI3ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3Bo
ZS5kdW1lekBpbnRlbC5jb20+Ci0KLSAgICAgICAgW0VGTF0gRFJUIHNob3VsZCBzdXBwb3J0IExh
eW91dFRlc3RDb250cm9sbGVyJ3MgZHVtcFJlc291cmNlTG9hZENhbGxiYWNrcygpCi0gICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTg5MQotCi0gICAgICAg
IFJldmlld2VkIGJ5IFBoaWxpcHBlIE5vcm1hbmQuCi0KLSAgICAgICAgTmV3ICJsb2FkLHJlc291
cmNlLGZpbmlzaGVkIiwgImxvYWQscmVzb3VyY2UsZmFpbGVkIiwgYW5kCi0gICAgICAgICJyZXNv
dXJjZSxyZXNwb25zZSxyZWNlaXZlZCIgc2lnbmFscyB3ZXJlIGFkZGVkIHRvIG5vdGlmeSBhYm91
dCBkaWZmZXJlbnQKLSAgICAgICAgcmVzb3VyY2UgbG9hZCBldmVudHMuIFRoZXNlIGFkZGl0aW9u
YWwgc2lnbmFscyBhcmUgbmVlZGVkIGZvciBwcm9wZXIKLSAgICAgICAgc3VwcG9ydCBvZiBMYXlv
dXRUZXN0Q29udHJvbGxlcidzIGR1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3MoKSBpbiBFRkwncwot
ICAgICAgICBEdW1wUmVuZGVyVHJlZS4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50
RWZsOjphc3NpZ25JZGVudGlmaWVyVG9Jbml0aWFsUmVxdWVzdCk6Ci0gICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UpOgotICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkRmluaXNoTG9h
ZGluZyk6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hE
aWRGYWlsTG9hZGluZyk6Ci0gICAgICAgICogZXdrL2V3a19mcmFtZS5jcHA6Ci0gICAgICAgIChl
d2tfZnJhbWVfcmVzcG9uc2VfcmVjZWl2ZWQpOgotICAgICAgICAoZXdrX2ZyYW1lX2xvYWRfZmlu
aXNoZWQpOgotICAgICAgICAoZXdrX2ZyYW1lX2xvYWRfcmVzb3VyY2VfZmluaXNoZWQpOgotICAg
ICAgICAoZXdrX2ZyYW1lX2xvYWRfcmVzb3VyY2VfZmFpbGVkKToKLSAgICAgICAgKGV3a19mcmFt
ZV9sb2FkX2Vycm9yKToKLSAgICAgICAgKiBld2svZXdrX2ZyYW1lLmg6Ci0gICAgICAgICogZXdr
L2V3a19wcml2YXRlLmg6Ci0gICAgICAgICogZXdrL2V3a192aWV3Lmg6Ci0KLTIwMTItMDQtMjYg
IE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgotCi0gICAgICAgIFtDYWly
b10gV3JhcCBjYWlybyBzdXJmYWNlcyBpbiBhIGNsYXNzIHdoZW4gc3RvcmluZyBuYXRpdmUgaW1h
Z2VzCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MzYx
MQotCi0gICAgICAgIFJldmlld2VkIGJ5IEFsZWphbmRybyBHLiBDYXN0cm8uCi0KLSAgICAgICAg
KiBld2svZXdrX2hpc3RvcnkuY3BwOiBVcGRhdGVkIHRvIHJlZmxlY3QgYWRkaXRpb24gb2YgTmF0
aXZlSW1hZ2VDYXJpby4KLSAgICAgICAgKiBld2svZXdrX3NldHRpbmdzLmNwcDogRGl0dG8uCi0K
LTIwMTItMDQtMjYgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNv
bT4KLQotICAgICAgICBbRUZMXSBFbmFibGUgVklERU9fVFJBQ0sgZmVhdHVyZQotICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODQ4MzAKLQotICAgICAgICBS
ZXZpZXdlZCBieSBHdXN0YXZvIE5vcm9uaGEgU2lsdmEuCi0KLSAgICAgICAgQWRkIGZ1bmN0aW9u
cyBvbiB0aGUgZXdrX3ZpZXcgdG8gdG9nZ2xlIHJ1bnRpbWUgc3VwcG9ydCBmb3IgdGV4dAotICAg
ICAgICB0cmFja3MgaW4gSFRNTDUgdmlkZW8uCi0KLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3Bw
OgotICAgICAgICAoX0V3a19WaWV3X1ByaXZhdGVfRGF0YSk6Ci0gICAgICAgIChfZXdrX3ZpZXdf
cHJpdl9uZXcpOgotICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19zaG91bGRfZGlzcGxheV9zdWJ0
aXRsZXNfZ2V0KToKLSAgICAgICAgKGV3a192aWV3X3NldHRpbmdfc2hvdWxkX2Rpc3BsYXlfc3Vi
dGl0bGVzX3NldCk6Ci0gICAgICAgIChld2tfdmlld19zZXR0aW5nX3Nob3VsZF9kaXNwbGF5X2Nh
cHRpb25zX2dldCk6Ci0gICAgICAgIChld2tfdmlld19zZXR0aW5nX3Nob3VsZF9kaXNwbGF5X2Nh
cHRpb25zX3NldCk6Ci0gICAgICAgIChld2tfdmlld19zZXR0aW5nX3Nob3VsZF9kaXNwbGF5X3Rl
eHRfZGVzY3JpcHRpb25zX2dldCk6Ci0gICAgICAgIChld2tfdmlld19zZXR0aW5nX3Nob3VsZF9k
aXNwbGF5X3RleHRfZGVzY3JpcHRpb25zX3NldCk6Ci0gICAgICAgICogZXdrL2V3a192aWV3Lmg6
Ci0KLTIwMTItMDQtMjYgIFN1ZGFyc2FuYSBOYWdpbmVuaSAgPHN1ZGFyc2FuYS5uYWdpbmVuaUBs
aW51eC5pbnRlbC5jb20+Ci0KLSAgICAgICAgW0VGTF0gW0RSVF0gTGF5b3V0VGVzdENvbnRyb2xs
ZXIgbmVlZHMgaW1wbGVtZW50YXRpb24gb2Ygc2V0SmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJsZWQK
LSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg0NTc2Ci0K
LSAgICAgICAgUmV2aWV3ZWQgYnkgTWFydGluIFJvYmluc29uLgotCi0gICAgICAgIEFkZCBtaXNz
aW5nIGltcGxlbWVudGF0aW9uIHNldEphdmFTY3JpcHRQcm9maWxpbmdFbmFibGVkIHRvIEVGTCdz
Ci0gICAgICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydC4gVGhpcyBzZXR0aW5nIGFsbG93cyBsYXlv
dXQgdGVzdHMgdG8gc3RhcnQKLSAgICAgICAgSmF2YVNjcmlwdCBwcm9maWxpbmcuCi0KLSAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwOgotICAgICAg
ICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpzZXRKYXZhU2NyaXB0UHJvZmlsaW5nRW5hYmxl
ZCk6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmg6
Ci0KLTIwMTItMDQtMjYgIE1pa2hhaWwgUG96ZG55YWtvdiAgPG1pa2hhaWwucG96ZG55YWtvdkBp
bnRlbC5jb20+Ci0KLSAgICAgICAgW0VGTF0gV2ViR0wgc3VwcG9ydCBld2tfdmlldyBzZXR0aW5n
Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NDUzNAot
Ci0gICAgICAgIFJldmlld2VkIGJ5IEFudG9uaW8gR29tZXMuCi0KLSAgICAgICAgRXhwb3J0aW5n
IG5ldyBld2tfdmlldyBzZXR0aW5nOiB3ZWJHTEVuYWJsZWQgLSBlbmJsZXMvZGlzYWJsZXMgV2Vi
R0wgc3VwcG9ydC4KLQotICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChfRXdr
X1ZpZXdfUHJpdmF0ZV9EYXRhKToKLSAgICAgICAgKF9ld2tfdmlld19wcml2X25ldyk6Ci0gICAg
ICAgIChld2tfdmlld19zZXR0aW5nX2VuYWJsZV93ZWJnbF9nZXQpOgotICAgICAgICAoZXdrX3Zp
ZXdfc2V0dGluZ19lbmFibGVfd2ViZ2xfc2V0KToKLSAgICAgICAgKiBld2svZXdrX3ZpZXcuaDoK
LQotMjAxMi0wNC0yNiAgQ2hyaXN0b3BoZSBEdW1leiAgPGNocmlzdG9waGUuZHVtZXpAaW50ZWwu
Y29tPgotCi0gICAgICAgIFtFRkxdW0RSVF0gInJlc291cmNlLHJlcXVlc3Qsd2lsbHNlbmQiIHNp
Z25hbCBuZWVkcyB0byBwcm92aWRlIG1vcmUgaW5mb3JtYXRpb24KLSAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg0NjcwCi0KLSAgICAgICAgUmV2aWV3ZWQg
YnkgQW5kcmVhcyBLbGluZy4KLQotICAgICAgICBUaGUgInJlc291cmNlLHJlcXVlc3Qsd2lsbHNl
bmQiIHNpZ25hbCBub3cgcHJvdmlkZXMgbW9yZSBpbmZvcm1hdGlvbgotICAgICAgICBhYm91dCB0
aGUgbmV0d29yayByZXF1ZXN0IGFzIHdlbGwgYXMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHBvc3Np
YmxlCi0gICAgICAgIHJlZGlyZWN0IHJlc3BvbnNlLiBUaGlzIGV4dHJhIGluZm9ybWF0aW9uIHdp
bGwgYmUgbmVlZGVkIHRvIHN1cHBvcnQKLSAgICAgICAgTGF5b3V0VGVzdENvbnRyb2xsZXIncyBk
dW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzKCkgaW4gRUZMJ3MKLSAgICAgICAgRHVtcFJlbmRlclRy
ZWUuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHA6
Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hXaWxsU2Vu
ZFJlcXVlc3QpOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmFzc2ln
bklkZW50aWZpZXJUb0luaXRpYWxSZXF1ZXN0KToKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgot
ICAgICAgICAqIGV3ay9ld2tfZnJhbWUuY3BwOgotICAgICAgICAoZXdrX2ZyYW1lX3JlcXVlc3Rf
d2lsbF9zZW5kKToKLSAgICAgICAgKiBld2svZXdrX2ZyYW1lLmg6Ci0gICAgICAgICogZXdrL2V3
a19wcml2YXRlLmg6Ci0gICAgICAgICogZXdrL2V3a192aWV3Lmg6Ci0KLTIwMTItMDQtMjMgIENo
cmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KLQotICAgICAgICBb
RUZMXSBFRkwncyBMYXlvdXRUZXN0Q29udHJvbGxlciBkb2VzIG5vdCBpbXBsZW1lbnQgZWxlbWVu
dERvZXNBdXRvQ29tcGxldGVGb3JFbGVtZW50V2l0aElkCi0gICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NDQyNQotCi0gICAgICAgIFJldmlld2VkIGJ5IEFu
dG9uaW8gR29tZXMuCi0KLSAgICAgICAgQWRkIGEgaGVscGVyIGZ1bmN0aW9uIHRvIER1bXBSZW5k
ZXJUcmVlU3VwcG9ydEVmbCwgcmV0dXJuaW5nCi0gICAgICAgIHdoZXRoZXIgb3Igbm90IGFuIGVs
ZW1lbnQgZG9lcyBwZXJmb3JtIGF1dG9jb21wbGV0aW9uLgotCi0gICAgICAgICogV2ViQ29yZVN1
cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcDoKLSAgICAgICAgKER1bXBSZW5kZXJU
cmVlU3VwcG9ydEVmbDo6ZWxlbWVudERvZXNBdXRvQ29tcGxldGVGb3JFbGVtZW50V2l0aElkKToK
LSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuaDoKLQot
MjAxMi0wNC0yMCAgVGhpYWdvIE1hcmNvcyBQLiBTYW50b3MgIDx0aGlhZ28uc2FudG9zQGludGVs
LmNvbT4KLQotICAgICAgICBbRUZMXSBBZGQgU2VjdXJpdHkgT3JpZ2luIEFQSQotICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODQwMjMKLQotICAgICAgICBB
ZGRlZCBhbiBBUEkgdG8gZ2V0IGEgU2VjdXJpdHkgT3JpZ2luIGhhbmRsZSBmcm9tIGEgRXdrX0Zy
YW1lLiBUaGlzIGlzCi0gICAgICAgIG5lZWRlZCBmb3IgZmluZSBncmFpbmVkIHNlY3VyaXR5IHBv
bGljeS4gVGhpcyBuZXcgQVBJIHdpbGwgYWxzbyBhbGxvdwotICAgICAgICB0byBkZWZpbmUgcXVv
dGEgYW5kIGdldCB1c2FnZSBpbmZvcm1hdGlvbiBvZiBhIFdlYiBTdG9yYWdlIGJhc2VkIG9uIGl0
cwotICAgICAgICBTZWN1cml0eSBPcmlnaW4uCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQW50b25p
byBHb21lcy4KLQotICAgICAgICAqIGV3ay9FV2ViS2l0Lmg6Ci0gICAgICAgICogZXdrL2V3a19m
cmFtZS5jcHA6Ci0gICAgICAgIChld2tfZnJhbWVfc2VjdXJpdHlfb3JpZ2luX2dldCk6Ci0gICAg
ICAgICogZXdrL2V3a19mcmFtZS5oOgotICAgICAgICAqIGV3ay9ld2tfc2VjdXJpdHlfb3JpZ2lu
LmNwcDogQWRkZWQuCi0gICAgICAgIChld2tfc2VjdXJpdHlfb3JpZ2luX3Byb3RvY29sX2dldCk6
Ci0gICAgICAgIChld2tfc2VjdXJpdHlfb3JpZ2luX2hvc3RfZ2V0KToKLSAgICAgICAgKGV3a19z
ZWN1cml0eV9vcmlnaW5fcG9ydF9nZXQpOgotICAgICAgICAoZXdrX3NlY3VyaXR5X29yaWdpbl93
ZWJfZGF0YWJhc2VfdXNhZ2VfZ2V0KToKLSAgICAgICAgKGV3a19zZWN1cml0eV9vcmlnaW5fd2Vi
X2RhdGFiYXNlX3F1b3RhX2dldCk6Ci0gICAgICAgIChld2tfc2VjdXJpdHlfb3JpZ2luX3dlYl9k
YXRhYmFzZV9xdW90YV9zZXQpOgotICAgICAgICAoZXdrX3NlY3VyaXR5X29yaWdpbl9mcmVlKToK
LSAgICAgICAgKGV3a19zZWN1cml0eV9vcmlnaW5fbmV3KToKLSAgICAgICAgKiBld2svZXdrX3Nl
Y3VyaXR5X29yaWdpbi5oOiBBZGRlZC4KLQotMjAxMi0wNC0yMCAgS2FtaWwgQmxhbmsgIDxrLmJs
YW5rQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxdIEFkZCBzZXR0aW5nIEFQSSBmb3IgYXV0
aG9yIGFuZCB1c2VyIHN0eWxlcy4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTgyODYwCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgRGFuaWVsIEJhdGVzLgot
Ci0gICAgICAgIEFkZCBtaXNzaW5nIGltcGxlbWVudGF0aW9uIHNldEF1dGhvckFuZFVzZXJTdHls
ZXNFbmFibGVkIHRvIEVGTCdzCi0gICAgICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydC4KLQotICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHA6Ci0KLTIw
MTItMDQtMTkgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4K
LQotICAgICAgICBbRUZMXSBkaXNwYXRjaERpZENhbmNlbENsaWVudFJlZGlyZWN0IG5lZWRzIGlt
cGxlbWVudGF0aW9uCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04MzY2OQotCi0gICAgICAgIFJldmlld2VkIGJ5IEFudG9uaW8gR29tZXMuCi0KLSAgICAg
ICAgRW1pdCBhIG5ldyAicmVkaXJlY3QsY2FuY2VsbGVkIiBzaWduYWwgb24gdGhlIGV3a19mcmFt
ZSB3aGVuIGEKLSAgICAgICAgcmVkaXJlY3QgaXMgY2FuY2VsbGVkLiBUaGlzIGlzIG5lZWRlZCBi
eSBFRkwncyBEdW1wUmVuZGVyVHJlZSB0byBkdW1wCi0gICAgICAgIGZyYW1lIGxvYWQgY2FsbGJh
Y2tzIGluZm9ybWF0aW9uLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmRp
c3BhdGNoRGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3QpOgotICAgICAgICAqIGV3ay9ld2tfZnJhbWUu
Y3BwOgotICAgICAgICAoZXdrX2ZyYW1lX3JlZGlyZWN0X2NhbmNlbGxlZCk6Ci0gICAgICAgICog
ZXdrL2V3a19mcmFtZS5oOgotICAgICAgICAqIGV3ay9ld2tfcHJpdmF0ZS5oOgotCi0yMDEyLTA0
LTE3ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+Ci0KLSAg
ICAgICAgRUZMJ3MgTGF5b3V0VGVzdENvbnRyb2xsZXIgZG9lcyBub3QgaW1wbGVtZW50IGNhbGxT
aG91bGRDbG9zZU9uV2ViVmlldwotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODIzMDEKLQotICAgICAgICBSZXZpZXdlZCBieSBNYXJ0aW4gUm9iaW5zb24u
Ci0KLSAgICAgICAgSW1wbGVtZW50IGNhbGxTaG91bGRDbG9zZU9uV2ViVmlldyBpbiBFRkwncyBM
YXlvdXRUZXN0Q29udHJvbGxlciBieQotICAgICAgICBjYWxsaW5nIHNob3VsZENsb3NlKCkgb24g
dGhlIEZyYW1lTG9hZGVyLCBhbGxvd2luZyB0aGUgcmVsYXRlZAotICAgICAgICB0ZXN0IHRvIGJl
IHJlbW92ZWQgZnJvbSB0aGUgc2tpcCBsaXN0LgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQv
RHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcDoKLSAgICAgICAgKER1bXBSZW5kZXJUcmVlU3Vw
cG9ydEVmbDo6Y2FsbFNob3VsZENsb3NlT25XZWJWaWV3KToKLSAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuaDoKLQotMjAxMi0wNC0xNyAgQ2hyaXN0b3Bo
ZSBEdW1leiAgPGNocmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgotCi0gICAgICAgIFtFRkxdIEZy
YW1lTG9hZGVyQ2xpZW50IHNob3VsZCBzZW5kICJsb2FkLGZpbmlzaGVkIiBzaWduYWwgZm9yIGFs
bCBmcmFtZSwgbm90IGp1c3QgdGhlIG1haW4gb25lCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NDA1MgotCi0gICAgICAgIFJldmlld2VkIGJ5IEFudG9u
aW8gR29tZXMuCi0KLSAgICAgICAgRW1pdCB0aGUgImxvYWQsZmluaXNoZWQiIHNpZ25hbCBmcm9t
IGRpc3BhdGNoRGlkRmluaXNoTG9hZCgpIC8gaW5zdGVhZCBvZgotICAgICAgICBwb3N0UHJvZ3Jl
c3NGaW5pc2hlZE5vdGlmaWNhdGlvbigpIGluIG9yZGVyIHRvIHNlbmQgbm90aWZpY2F0aW9ucyBh
bGwgZnJhbWVzLAotICAgICAgICBub3QganVzdCB0aGUgbWFpbiBvbmUuCi0KLSAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlckNsaWVudEVmbDo6cG9zdFByb2dyZXNzRmluaXNoZWROb3RpZmljYXRpb24p
OgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkRmlu
aXNoTG9hZCk6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0
Y2hEaWRGYWlsTG9hZCk6Ci0KLTIwMTItMDQtMTcgIFN1ZGFyc2FuYSBOYWdpbmVuaSAgPHN1ZGFy
c2FuYS5uYWdpbmVuaUBsaW51eC5pbnRlbC5jb20+Ci0KLSAgICAgICAgW0VGTF0gQWRkIHNldHRp
bmcgQVBJIHRvIGVuYWJsZS9kaXNhYmxlIFhTU0F1ZGl0b3IKLSAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgzMjgxCi0KLSAgICAgICAgQWRkIHNldHRpbmcg
QVBJIHRvIGVuYWJsZSBvciBkaXNhYmxlIFdlYktpdCdzIFhTU0F1ZGl0b3IgdG8gcHJvdGVjdCAK
LSAgICAgICAgZnJvbSByZWZsZWN0aXZlIGNyb3NzLXNpdGUgc2NyaXB0aW5nIGF0dGFja3MuIEFs
c28sIGVtaXQgdGhlIHNpZ25hbCAKLSAgICAgICAgJ3hzcyxkZXRlY3RlZCcgYW5kIHByb3ZpZGUg
YWRkaXRpb24gaW5mb3JtYXRpb24gcmVjZWl2ZWQgZnJvbSAKLSAgICAgICAgWFNTQXVkaXRvciB3
aGVuIHJlZmxlY3RlZCBYU1MgaXMgZW5jb3VudGVyZWQgaW4gdGhlIHBhZ2UuCi0KLSAgICAgICAg
UmV2aWV3ZWQgYnkgQW50b25pbyBHb21lcy4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xp
ZW50RWZsOjpkaWREZXRlY3RYU1MpOgotICAgICAgICAqIGV3ay9ld2tfZnJhbWUuY3BwOgotICAg
ICAgICAoZXdrX2ZyYW1lX3hzc19kZXRlY3RlZCk6Ci0gICAgICAgICogZXdrL2V3a19mcmFtZS5o
OgotICAgICAgICAqIGV3ay9ld2tfcHJpdmF0ZS5oOgotICAgICAgICAqIGV3ay9ld2tfdmlldy5j
cHA6Ci0gICAgICAgIChfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKToKLSAgICAgICAgKF9ld2tfdmll
d19wcml2X25ldyk6Ci0gICAgICAgIChld2tfdmlld19zZXR0aW5nX2VuYWJsZV94c3NfYXVkaXRv
cl9nZXQpOgotICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfeHNzX2F1ZGl0b3Jfc2V0
KToKLSAgICAgICAgKiBld2svZXdrX3ZpZXcuaDoKLQotMjAxMi0wNC0xNyAgQ2hyaXN0b3BoZSBE
dW1leiAgPGNocmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgotCi0gICAgICAgIFtFRkxdIERSVCBz
aG91bGQgc3VwcG9ydCBMYXlvdXRUZXN0Q29udHJvbGxlcidzIGR1bXBGcmFtZUxvYWRDYWxsYmFj
a3MoKQotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODMw
MzAKLQotICAgICAgICBSZXZpZXdlZCBieSBBbnRvbmlvIEdvbWVzLgotCi0gICAgICAgIEVtaXQg
ImxvYWQsc3RhcnRlZCIgYW5kICJvbmxvYWQsZXZlbnQiIHNpZ25hbHMgbmVlZGVkIHRvIHN1cHBv
cnQKLSAgICAgICAgTGF5b3V0VGVzdENvbnRyb2xsZXIncyBkdW1wRnJhbWVMb2FkQ2FsbGJhY2tz
KCkgaW4gRUZMJ3MgRHVtcFJlbmRlclRyZWUuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNs
aWVudEVmbDo6ZGlzcGF0Y2hEaWRIYW5kbGVPbmxvYWRFdmVudHMpOgotICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkQ29tbWl0TG9hZCk6Ci0gICAgICAg
IChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRGYWlsTG9hZCk6Ci0g
ICAgICAgICogZXdrL2V3a19mcmFtZS5jcHA6Ci0gICAgICAgIChld2tfZnJhbWVfbG9hZF9jb21t
aXR0ZWQpOgotICAgICAgICAoZXdrX2ZyYW1lX2xvYWRfc3RhcnRlZCk6Ci0gICAgICAgICogZXdr
L2V3a19mcmFtZS5oOgotICAgICAgICAqIGV3ay9ld2tfcHJpdmF0ZS5oOgotICAgICAgICAqIGV3
ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKToKLSAgICAg
ICAgKGV3a192aWV3X2xvYWRfc3RhcnRlZCk6Ci0gICAgICAgIChld2tfdmlld19vbmxvYWRfZXZl
bnQpOgotICAgICAgICAqIGV3ay9ld2tfdmlldy5oOgotCi0yMDEyLTA0LTE3ICBTaGVyaWZmIEJv
dCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KLQotICAgICAgICBVbnJldmlld2VkLCBy
b2xsaW5nIG91dCByMTE0Mzc2LgotICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5n
ZXNldC8xMTQzNzYKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTg0MTU1Ci0KLSAgICAgICAgV3JvbmcgcGF0Y2ggdmVyc2lvbiBjb21taXR0ZWQsIGFza2Vk
IGJ5IHRoZSBwYXRjaCBhdXRob3IuCi0gICAgICAgIChSZXF1ZXN0ZWQgYnkgcmFrdWNvIG9uICN3
ZWJraXQpLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwu
Y3BwOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OnBvc3RQcm9ncmVz
c0ZpbmlzaGVkTm90aWZpY2F0aW9uKToKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xp
ZW50RWZsOjpkaXNwYXRjaERpZEZpbmlzaExvYWQpOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVM
b2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkSGFuZGxlT25sb2FkRXZlbnRzKToKLSAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZENvbW1pdExvYWQpOgot
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkRmFpbExv
YWQpOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmg6Ci0g
ICAgICAgIChGcmFtZUxvYWRlckNsaWVudEVmbCk6Ci0gICAgICAgICogZXdrL2V3a19mcmFtZS5j
cHA6Ci0gICAgICAgICogZXdrL2V3a19mcmFtZS5oOgotICAgICAgICAqIGV3ay9ld2tfcHJpdmF0
ZS5oOgotICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChfRXdrX1ZpZXdfUHJp
dmF0ZV9EYXRhKToKLSAgICAgICAgKiBld2svZXdrX3ZpZXcuaDoKLQotMjAxMi0wNC0xNyAgQ2hy
aXN0b3BoZSBEdW1leiAgPGNocmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgotCi0gICAgICAgIFtF
RkxdIERSVCBzaG91bGQgc3VwcG9ydCBMYXlvdXRUZXN0Q29udHJvbGxlcidzIGR1bXBGcmFtZUxv
YWRDYWxsYmFja3MoKQotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9ODMwMzAKLQotICAgICAgICBSZXZpZXdlZCBieSBBbnRvbmlvIEdvbWVzLgotCi0gICAg
ICAgIEltcGxlbWVudCBzdXBwb3J0IGZvciBMYXlvdXRUZXN0Q29udHJvbGxlcidzIGR1bXBGcmFt
ZUxvYWRDYWxsYmFja3MoKQotICAgICAgICBpbiBFRkwncyBEdW1wUmVuZGVyVHJlZS4gV2Ugbm8g
bG9uZ2VyIGVtaXQgdGhlICJsb2FkLGZpbmlzaGVkIiBzaWduYWwKLSAgICAgICAgZnJvbSBwb3N0
UHJvZ3Jlc3NGaW5pc2hlZE5vdGlmaWNhdGlvbigpIHNpbmNlIGl0IGlzIGFscmVhZHkgZW1pdHRl
ZAotICAgICAgICBmcm9tIGRpc3BhdGNoRGlkRmluaXNoTG9hZCgpLiBUaGlzIGF2b2lkcyB1bndh
bnRlZCBleHRyYSBzaWduYWxzIHdlCi0gICAgICAgIHByZXZlbnQgc29tZSB0ZXN0cyBmcm9tIHBh
c3NpbmcgKGUuZy4KLSAgICAgICAgaHR0cC90ZXN0cy9zZWN1cml0eS9taXhlZENvbnRlbnQvYWJv
dXQtYmxhbmstaWZyYW1lLWluLW1haW4tZnJhbWUuaHRtbCkuCi0KLSAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFt
ZUxvYWRlckNsaWVudEVmbDo6cG9zdFByb2dyZXNzRmluaXNoZWROb3RpZmljYXRpb24pOgotICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkRmluaXNoTG9h
ZCk6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRI
YW5kbGVPbmxvYWRFdmVudHMpOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRF
Zmw6OmRpc3BhdGNoRGlkQ29tbWl0TG9hZCk6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
ckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRGYWlsTG9hZCk6Ci0gICAgICAgICogV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuaDoKLSAgICAgICAgKEZyYW1lTG9hZGVyQ2xpZW50RWZs
KToKLSAgICAgICAgKiBld2svZXdrX2ZyYW1lLmNwcDoKLSAgICAgICAgKGV3a19mcmFtZV9sb2Fk
X2NvbW1pdHRlZCk6Ci0gICAgICAgICogZXdrL2V3a19mcmFtZS5oOgotICAgICAgICAqIGV3ay9l
d2tfcHJpdmF0ZS5oOgotICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChfRXdr
X1ZpZXdfUHJpdmF0ZV9EYXRhKToKLSAgICAgICAgKGV3a192aWV3X29ubG9hZF9ldmVudCk6Ci0g
ICAgICAgICogZXdrL2V3a192aWV3Lmg6Ci0KLTIwMTItMDQtMTcgIE1hcml1c3ogR3J6ZWdvcmN6
eWsgIDxtYXJpdXN6LmdAc2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW0VGTF1bV0syXSBGaXggYnVp
bGQgYnJlYWsgd2hlbiBDT05URVhUX01FTlVTIGlzIGRpc2FibGVkLgotICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODMyODUKLQotICAgICAgICBSZXZpZXdl
ZCBieSBSeW9zdWtlIE5pd2EuCi0KLSAgICAgICAgUmVtb3ZlIFdlYkNvcmUgbmFtZXNwYWNlIGZy
b20gUGFnZUNsaWVudEVmbC4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1BhZ2VDbGllbnRF
ZmwuY3BwOgotICAgICAgICAoV2ViQ29yZSk6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvUGFn
ZUNsaWVudEVmbC5oOgotICAgICAgICAqIGV3ay9ld2tfcHJpdmF0ZS5oOgotICAgICAgICAoRVdL
UHJpdmF0ZSk6Ci0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAgKF9Fd2tfVmll
d19Qcml2YXRlX0RhdGEpOgotICAgICAgICAoX2V3a192aWV3X3ByaXZfbmV3KToKLSAgICAgICAg
KEVXS1ByaXZhdGU6OmNvcmVQYWdlQ2xpZW50KToKLQotMjAxMi0wNC0xMyAgVGhpYWdvIE1hcmNv
cyBQLiBTYW50b3MgIDx0aGlhZ28uc2FudG9zQGludGVsLmNvbT4KLQotICAgICAgICBbRUZMXSBB
ZGQgQVBJIGZvciBjb2xvciBjaG9vc2VyCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD04MzY5MgotCi0gICAgICAgIEFkZGVkIG5ldyBBUEkgdG8gZW5hYmxl
IGJyb3dzZXJzIHRvIGRpc3BsYXkgYSBjdXN0b20gY29sb3IgcGlja2VyCi0gICAgICAgIHdoZW4g
YW4gaW5wdXQgZmllbGQgb2YgdHlwZSAiY29sb3IiIGlzIGFjdGl2YXRlZC4KLQotICAgICAgICBS
ZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KLQotICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3JlKToKLSAgICAg
ICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEVmbDo6Y3JlYXRlQ29sb3JDaG9vc2VyKToKLSAgICAg
ICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEVmbDo6cmVtb3ZlQ29sb3JDaG9vc2VyKToKLSAgICAg
ICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEVmbDo6dXBkYXRlQ29sb3JDaG9vc2VyKToKLSAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuaDoKLSAgICAgICAgKENocm9tZUNs
aWVudEVmbCk6Ci0gICAgICAgICogZXdrL2V3a19wcml2YXRlLmg6Ci0gICAgICAgIChXZWJDb3Jl
KToKLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoX0V3a19WaWV3X1ByaXZh
dGVfRGF0YSk6Ci0gICAgICAgIChld2tfdmlld19jb2xvcl9jaG9vc2VyX25ldyk6Ci0gICAgICAg
IChld2tfdmlld19jb2xvcl9jaG9vc2VyX2Rlc3Ryb3kpOgotICAgICAgICAoZXdrX3ZpZXdfY29s
b3JfY2hvb3Nlcl9jb2xvcl9zZXQpOgotICAgICAgICAoZXdrX3ZpZXdfY29sb3JfY2hvb3Nlcl9j
aGFuZ2VkKToKLSAgICAgICAgKiBld2svZXdrX3ZpZXcuaDoKLQotMjAxMi0wNC0xMSAgU3VkYXJz
YW5hIE5hZ2luZW5pICA8c3VkYXJzYW5hLm5hZ2luZW5pQGxpbnV4LmludGVsLmNvbT4KLQotICAg
ICAgICBbRUZMXSBMYXlvdXRUZXN0Q29udHJvbGxlciBuZWVkcyBpbXBsZW1lbnRhdGlvbiBvZiBw
YWdlUHJvcGVydHkKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTgyNDQ5Ci0KLSAgICAgICAgQWRkIG1pc3NpbmcgaW1wbGVtZW50YXRpb24gcGFnZVByb3Bl
cnR5IHRvIEVGTCdzCi0gICAgICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydC4KLQotICAgICAgICBS
ZXZpZXdlZCBieSBBbnRvbmlvIEdvbWVzLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVt
cFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcDoKLSAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9y
dEVmbDo6cGFnZVByb3BlcnR5KToKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVy
VHJlZVN1cHBvcnRFZmwuaDoKLQotMjAxMi0wNC0xMCAgU3VkYXJzYW5hIE5hZ2luZW5pICA8c3Vk
YXJzYW5hLm5hZ2luZW5pQGxpbnV4LmludGVsLmNvbT4KLQotICAgICAgICBbRUZMXSBMYXlvdXRU
ZXN0Q29udHJvbGxlciBuZWVkcyBpbXBsZW1lbnRhdGlvbiBvZiBhZGRVc2VyU3R5bGVTaGVldAot
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODI0NDYKLQot
ICAgICAgICBBZGQgbWlzc2luZyBpbXBsZW1lbnRhdGlvbiBhZGRVc2VyU3R5bGVTaGVldCB0byBF
RkwncwotICAgICAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnQuCi0KLSAgICAgICAgUmV2aWV3ZWQg
YnkgQW50b25pbyBHb21lcy4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJU
cmVlU3VwcG9ydEVmbC5jcHA6Ci0gICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OmFk
ZFVzZXJTdHlsZVNoZWV0KToKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJl
ZVN1cHBvcnRFZmwuaDoKLQotMjAxMi0wNC0wNCAgUmFwaGFlbCBLdWJvIGRhIENvc3RhICA8cmFr
dWNvQHdlYmtpdC5vcmc+Ci0KLSAgICAgICAgQW5vdGhlciB1bnJldmlld2VkIGF0dGVtcHQgYXQg
Z2V0dGluZyB0aGUgRUZMIGJ1aWxkIGJvdCB0byBhCi0gICAgICAgIGhlYWx0aHkgc3RhdGUgYnkg
Zm9yY2luZyBhIHJlYnVpbGQuCi0KLSAgICAgICAgKiBld2svZXdrX2Nvb2tpZXMuaDoKLQotMjAx
Mi0wNC0wNCAgUmFwaGFlbCBLdWJvIGRhIENvc3RhICA8cmFrdWNvQHdlYmtpdC5vcmc+Ci0KLSAg
ICAgICAgVW5yZXZpZXdlZDsgdG91Y2ggYSBmaWxlIHRvIGNoZWNrIGlmIHRoZSBFRkwgYnVpbGQg
Ym90IGlzIGJhY2sgdG8KLSAgICAgICAgbm9ybWFsLgotCi0gICAgICAgICogZXdrL2V3a19jb29r
aWVzLmg6Ci0KLTIwMTItMDQtMDQgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6
QGludGVsLmNvbT4KLQotICAgICAgICBbRUZMXVtEUlRdIENhdGNoIHRoZSAicmVzb3VyY2UscmVx
dWVzdCx3aWxsc2VuZCIgc2lnbmFsCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD04MjE5MgotCi0gICAgICAgIFJldmlld2VkIGJ5IEd1c3Rhdm8gTm9yb25o
YSBTaWx2YS4KLQotICAgICAgICBFRkwncyBGcmFtZUxvYWRlckNsaWVudCBub3cgZW1pdHMgdGhl
ICJyZXNvdXJjZSxyZXF1ZXN0LHdpbGxzZW5kIgotICAgICAgICBzaWduYWwgb24gdGhlIHZpZXcg
Zm9yIGFsbCByZXNvdXJjZXMgYWJvdXQgdG8gYmUgbG9hZGVkLCBub3QganVzdCB0aGUKLSAgICAg
ICAgbWFpbiBmcmFtZS4gQWxzbyBhZGRzIGEgYm9vbGVhbiBmbGFnIHRvIEV3a19GcmFtZV9SZXNv
dXJjZV9SZXF1ZXN0IHRvCi0gICAgICAgIGRpc3Rpbmd1aXNoIHRoZSByZXF1ZXN0IGZvciB0aGUg
bWFpbiBmcmFtZSBmcm9tIHRob3NlIGZvcgotICAgICAgICBzdWItcmVzb3VyY2VzLgotCi0gICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwOgotICAgICAgICAo
V2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0KToK
LSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjphc3NpZ25JZGVudGlmaWVy
VG9Jbml0aWFsUmVxdWVzdCk6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVm
bDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToKLSAgICAgICAgKiBl
d2svZXdrX2ZyYW1lLmg6Ci0gICAgICAgICogZXdrL2V3a192aWV3Lmg6Ci0KLTIwMTItMDQtMDQg
IFN1ZGFyc2FuYSBOYWdpbmVuaSAgPHN1ZGFyc2FuYS5uYWdpbmVuaUBsaW51eC5pbnRlbC5jb20+
Ci0KLSAgICAgICAgW0VGTF0gRFJUIHN1cHBvcnQgZm9yIGNvbXB1dGVkU3R5bGVJbmNsdWRpbmdW
aXNpdGVkSW5mbwotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODIxOTAKLQotICAgICAgICBBZGQgbWlzc2luZyBpbXBsZW1lbnRhdGlvbiBjb21wdXRlZFN0
eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8gdG8gRUZMJ3MKLSAgICAgICAgRHVtcFJlbmRlclRyZWVT
dXBwb3J0LgotCi0gICAgICAgIFJldmlld2VkIGJ5IEFudG9uaW8gR29tZXMuCi0KLSAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwOgotICAgICAgICAo
RHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpjb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZElu
Zm8pOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5o
OgotCi0yMDEyLTA0LTA0ICBEb21pbmlrIFLDtnR0c2NoZXMgIDxkb21pbmlrLnJvdHRzY2hlc0Bs
aW51eC5pbnRlbC5jb20+Ci0KLSAgICAgICAgW0VGTF1bRFJUXSBGcmFtZWxvYWRlckNsaWVudEVm
bCBuZWVkcyB0byBoYW5kbGUgbWVkaWEgY29udGVudCBjb3JyZWN0bHkKLSAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgzMDIwCi0KLSAgICAgICAgUmV2aWV3
ZWQgYnkgSGFqaW1lIE1vcml0YS4KLQotICAgICAgICBJbXBsZW1lbnRpbmcgaGFuZGxpbmcgb2Yg
bWVkaWEgY29udGVudCB0eXBlIGFuZCBtZWRpYSBkb2N1bWVudHMKLSAgICAgICAgaW4gdGhlIHJl
c3BlY3RpdmUgRnJhbWVMb2FkZXJDbGllbnRFZmwgY2FsbGJhY2tzLgotCi0gICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29yZTo6
RnJhbWVMb2FkZXJDbGllbnRFZmw6OmNvbW1pdHRlZExvYWQpOiBDYW5jZWwgbG9hZGluZyBmb3Ig
bWVkaWEgZG9jdW1lbnRzLgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6
OmNhblNob3dNSU1FVHlwZSk6IExldCBtZWRpYSBjb250ZW50IHR5cGVzIHRocm91Z2guCi0gICAg
ICAgIChXZWJDb3JlKToKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpw
bHVnaW5XaWxsSGFuZGxlTG9hZEVycm9yKTogUmV0dXJuaW5nIGFwcHJvcHJpYXRlIGVycm9yIHR5
cGUuCi0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6c2hvdWxkRmFsbEJh
Y2spOiBGYWxsaW5nIGJhY2sgYXMgd2VsbCBmb3IgbWVkaWEgaGFuZGxlZCBieSBtZWRpYSBwbGF5
ZXIuCi0KLTIwMTItMDQtMDQgIEdyemVnb3J6IEN6YWprb3dza2kgIDxnLmN6YWprb3dza2lAc2Ft
c3VuZy5jb20+Ci0KLSAgICAgICAgW0VGTF0gQ2hhbmdlIGV3a19zZXR0aW5nc19pY29uX2RhdGFi
YXNlX2ljb25fb2JqZWN0X2FkZCB0byBwcm9wZXIgQVBJIG5hbWUuCi0gICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjQzOAotCi0gICAgICAgIFJldmlld2Vk
IGJ5IEFuZHJlYXMgS2xpbmcuCi0KLSAgICAgICAgVGhlIHB1cnBvc2Ugb2YgZXdrX3NldHRpbmdz
X2ljb25fZGF0YWJhc2VfaWNvbl9vYmplY3RfYWRkIGlzIHRvIGdldCBpY29uCi0gICAgICAgIGZv
ciB0aGUgZ2l2ZW4gVVJMLiBUaGlzIGZ1bmN0aW9uIGRvZXNuJ3QgYWRkIGFueXRoaW5nIHRvIGRh
dGFiYXNlLgotICAgICAgICBEb2N1bWVudGF0aW9uIGFuZCBBUEkgbmFtZSBhcmUgYWRqdXN0ZWQu
Ci0KLSAgICAgICAgKiBld2svZXdrX3NldHRpbmdzLmNwcDoKLSAgICAgICAgKGV3a19zZXR0aW5n
c19pY29uX2RhdGFiYXNlX2ljb25fb2JqZWN0X2dldCk6Ci0gICAgICAgICogZXdrL2V3a19zZXR0
aW5ncy5oOgotCi0yMDEyLTA0LTAzICBTdWRhcnNhbmEgTmFnaW5lbmkgIDxzdWRhcnNhbmEubmFn
aW5lbmlAbGludXguaW50ZWwuY29tPgotCi0gICAgICAgIFtFRkxdIERSVCBzdXBwb3J0IGZvciBz
ZXRJbnRlcmFjdGl2ZUZvcm1WYWxpZGF0aW9uRW5hYmxlZAotICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODIwNTAKLQotICAgICAgICBBZGQgYSBzZXR0aW5n
IHNldEludGVyYWN0aXZlRm9ybVZhbGlkYXRpb25FbmFibGVkIHRvIEVGTCdzCi0gICAgICAgIER1
bXBSZW5kZXJUcmVlU3VwcG9ydC4KLQotICAgICAgICBSZXZpZXdlZCBieSBBbnRvbmlvIEdvbWVz
LgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNw
cDoKLSAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6c2V0SW50ZXJhY3RpdmVGb3Jt
VmFsaWRhdGlvbkVuYWJsZWQpOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJU
cmVlU3VwcG9ydEVmbC5oOgotCi0yMDEyLTA0LTAzICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0
b3BoZS5kdW1lekBpbnRlbC5jb20+Ci0KLSAgICAgICAgW0VGTF0gTGF5b3V0VGVzdENvbnRyb2xs
ZXIgbmVlZHMgaW1wbGVtZW50YXRpb24gb2Ygc2V0RGVmZXJzTG9hZGluZwotICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODI4OTAKLQotICAgICAgICBSZXZp
ZXdlZCBieSBQaGlsaXBwZSBOb3JtYW5kLgotCi0gICAgICAgIEltcGxlbWVudCBzZXREZWZlcnNM
b2FkaW5nKCkgaW4gRUZMJ3MgTGF5b3V0VGVzdENvbnRyb2xsZXIgc28gdGhhdCB0aGUKLSAgICAg
ICAgY29ycmVzcG9uZGluZyB0ZXN0IGNhc2UgY2FuIGJlIHJlbW92ZWQgZnJvbSB0aGUgc2tpcCBs
aXN0LgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZs
LmNwcDoKLSAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6c2V0RGVmZXJzTG9hZGlu
Zyk6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmg6
Ci0KLTIwMTItMDQtMDMgIEFsZXhhbmRlciBTaGFsYW1vdiAgPGFsZXhhbmRlci5zaGFsYW1vdkBp
bnRlbC5jb20+Ci0KLSAgICAgICAgW0VGTF0gTGF5b3V0VGVzdENvbnRyb2xsZXIgbmVlZHMgaW1w
bGVtZW50YXRpb24gb2YgcGFnZVNpemVBbmRNYXJnaW5zSW5QaXhlbHMKLSAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgyNTg5Ci0KLSAgICAgICAgQWRkIG1p
c3NpbmcgaW1wbGVtZW50YXRpb24gZm9yIHBhZ2VTaXplQW5kTWFyZ2luc0luUGl4ZWxzIHRvIEVG
TCdzCi0gICAgICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydC4KLQotICAgICAgICBSZXZpZXdlZCBi
eSBQaGlsaXBwZSBOb3JtYW5kLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRl
clRyZWVTdXBwb3J0RWZsLmNwcDoKLSAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6
cGFnZVNpemVBbmRNYXJnaW5zSW5QaXhlbHMpOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1
bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5oOgotCi0yMDEyLTA0LTAyICBBbGV4YW5kZXIgU2hhbGFt
b3YgIDxhbGV4YW5kZXIuc2hhbGFtb3ZAaW50ZWwuY29tPgotCi0gICAgICAgIFtFRkxdIExheW91
dFRlc3RDb250cm9sbGVyIG5lZWRzIGltcGxlbWVudGF0aW9uIG9mIGlzUGFnZUJveFZpc2libGUK
LSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgyNTkxCi0K
LSAgICAgICAgQWRkIG1pc3NpbmcgaW1wbGVtZW50YXRpb24gZm9yIGlzUGFnZUJveFZpc2libGUg
dG8gRUZMJ3MKLSAgICAgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0LgotCi0gICAgICAgIFJldmll
d2VkIGJ5IEhhamltZSBNb3JpdGEuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVu
ZGVyVHJlZVN1cHBvcnRFZmwuY3BwOgotICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZs
Ojppc1BhZ2VCb3hWaXNpYmxlKToKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVy
VHJlZVN1cHBvcnRFZmwuaDoKLQotMjAxMi0wNC0wMSAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcu
a2ltQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFN1cHBvcnQgdGhlIE5ldHdvcmsgSW5mb3JtYXRp
b24gQVBJCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03
MzUyOAotCi0gICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCi0KLSAgICAgICAgQWRkIE5l
dHdvcmtJbmZvQ2xpZW50RWZsIHRvIHN1cHBvcnQgbmV0d29yayBpbmZvcm1hdGlvbiBBUEkuIEhv
d2V2ZXIsCi0gICAgICAgIGZ1bmN0aW9ucyBhcmUgbm90IGltcGxlbWVudGVkIHlldC4KLQotICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L05ldHdvcmtJbmZvQ2xpZW50RWZsLmNwcDogQWRkZWQuCi0g
ICAgICAgIChXZWJDb3JlOjpOZXR3b3JrSW5mb0NsaWVudEVmbDo6TmV0d29ya0luZm9DbGllbnRF
ZmwpOgotICAgICAgICAoV2ViQ29yZSk6Ci0gICAgICAgIChXZWJDb3JlOjpOZXR3b3JrSW5mb0Ns
aWVudEVmbDo6fk5ldHdvcmtJbmZvQ2xpZW50RWZsKToKLSAgICAgICAgKFdlYkNvcmU6Ok5ldHdv
cmtJbmZvQ2xpZW50RWZsOjpzdGFydFVwZGF0aW5nKToKLSAgICAgICAgKFdlYkNvcmU6Ok5ldHdv
cmtJbmZvQ2xpZW50RWZsOjpzdG9wVXBkYXRpbmcpOgotICAgICAgICAoV2ViQ29yZTo6TmV0d29y
a0luZm9DbGllbnRFZmw6OmJhbmR3aWR0aCk6Ci0gICAgICAgIChXZWJDb3JlOjpOZXR3b3JrSW5m
b0NsaWVudEVmbDo6bWV0ZXJlZCk6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvTmV0d29ya0lu
Zm9DbGllbnRFZmwuaDogQWRkZWQuCi0gICAgICAgIChOZXR3b3JrSW5mb0NsaWVudEVmbCk6Ci0g
ICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAgKF9Fd2tfVmlld19Qcml2YXRlX0Rh
dGEpOgotICAgICAgICAoX2V3a192aWV3X3ByaXZfbmV3KToKLQotMjAxMi0wMy0zMCAgUGF0cmlj
ayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Via2l0Lm9yZz4KLQotICAgICAgICBbRUZMXSBDb3JyZWN0
IDx3dGYvKi5oPiBpbmNsdWRlIHBhdGhzLgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODI3NDEKLQotICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEts
aW5nLgotCi0gICAgICAgIE1vZGlmeSB0aGUgI2luY2x1ZGUgZGVjbGFyYXRpb25zIGZvciBzZXZl
cmFsIEVGTC1yZWxhdGVkIGZpbGVzCi0gICAgICAgIHNvIHRoYXQgdGhlIHd0ZiB0eXBlcyBhcmUg
aW5jbHVkZWQgdXNpbmcgdGhlIGZ1bGwgcGF0aC4KLQotICAgICAgICAqIGV3ay9ld2tfZnJhbWUu
Y3BwOgotICAgICAgICAqIGV3ay9ld2tfdGlsZWRfYmFja2luZ19zdG9yZS5jcHA6Ci0gICAgICAg
IChfRXdrX1RpbGVkX0JhY2tpbmdfU3RvcmVfSXRlbSk6Ci0gICAgICAgICogZXdrL2V3a190aWxl
ZF9tYXRyaXguY3BwOgotCi0yMDEyLTAzLTMwICBKZXN1cyBTYW5jaGV6LVBhbGVuY2lhICA8amVz
dXMucGFsZW5jaWFAb3BlbmJvc3NhLm9yZz4KLQotICAgICAgICBBZGQgYSAicHJldmlldyIgc3Rh
dGUgdG8gUGFnZSBWaXNpYmlsaXR5IEFQSSBpbXBsZW1lbnRhdGlvbgotICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODEzNTUKLQotICAgICAgICBSZXZpZXdl
ZCBieSBBZGFtIEJhcnRoLgotCi0gICAgICAgIFVwZGF0aW5nIHRoZSBQYWdlIFZpc2liaWxpdHkg
QVBJIGltcGxlbWVudGF0aW9uIHRvIHRoZSBjdXJyZW50IHNwZWMgdmVyc2lvbi4KLQotICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwOgotICAgICAgICAqIGV3
ay9ld2tfdmlldy5oOgotCi0yMDEyLTAzLTI4ICBOYXRlIENoYXBpbiAgPGphcGhldEBjaHJvbWl1
bS5vcmc+Ci0KLSAgICAgICAgUmVtb3ZlIGRpc3BhdGNoRGlkTG9hZE1haW5SZXNvdXJjZSBjYWxs
YmFjaywgc2luY2Ugbm8KLSAgICAgICAgcG9ydCBpbXBsZW1lbnRzIGl0LgotICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODI1MzkKLQotICAgICAgICBSZXZp
ZXdlZCBieSBBbGV4ZXkgUHJvc2t1cnlha292LgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29yZSk6Ci0gICAgICAgICog
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuaDoKLSAgICAgICAgKEZyYW1lTG9h
ZGVyQ2xpZW50RWZsKToKLQotMjAxMi0wMy0yNyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2Fy
Y2lhQGlnYWxpYS5jb20+Ci0KLSAgICAgICAgW1NPVVBdIEltcGxlbWVudCBtaXNzaW5nIG1ldGhv
ZHMgaW4gQ29va2llSmFyU291cAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODIwODIKLQotICAgICAgICBSZXZpZXdlZCBieSBNYXJ0aW4gUm9iaW5zb24u
Ci0KLSAgICAgICAgKiBld2svZXdrX2Nvb2tpZXMuY3BwOgotICAgICAgICAoZXdrX2Nvb2tpZXNf
Y2xlYXIpOiBVc2Ugc291cENvb2tpZUphcigpIGluc3RlYWQgb2YKLSAgICAgICAgZGVmYXVsdENv
b2tpZUphcigpLgotICAgICAgICAoZXdrX2Nvb2tpZXNfZ2V0X2FsbCk6IERpdHRvLgotICAgICAg
ICAoZXdrX2Nvb2tpZXNfY29va2llX2RlbCk6IERpdHRvLgotICAgICAgICAoZXdrX2Nvb2tpZXNf
cG9saWN5X3NldCk6IERpdHRvLgotICAgICAgICAoZXdrX2Nvb2tpZXNfcG9saWN5X2dldCk6IERp
dHRvLgotCi0yMDEyLTAzLTIzICBHcnplZ29yeiBDemFqa293c2tpICA8Zy5jemFqa293c2tpQHNh
bXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxdW0RSVF0gSW1wbGVtZW50IExheW91dFRlc3RDb250
cm9sbGVyJ3MgbWV0aG9kcyByZWxhdGVkIHdpdGggZWRpdGluZy4KLSAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwMTM2Ci0KLSAgICAgICAgUmV2aWV3ZWQg
YnkgUnlvc3VrZSBOaXdhLgotCi0gICAgICAgIEltcGxlbWVudHMgRHVtcFJlbmRlclRyZWVTdXBw
b3J0RWZsJ3MgYW5kIEVkaXRvckNsaWVudEVmbCdzIG1ldGhvZHMgcmVsYXRlZCB3aXRoIGVkaXRp
bmcuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwu
Y3BwOgotICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpzZXRTbWFydEluc2VydERl
bGV0ZUVuYWJsZWQpOiBOZXcgZnVuY3Rpb24uCi0gICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBv
cnRFZmw6OnNldFNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQpOiBOZXcgZnVuY3Rpb24u
Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmg6Ci0g
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdl
YkNvcmU6OkVkaXRvckNsaWVudEVmbDo6c2V0U21hcnRJbnNlcnREZWxldGVFbmFibGVkKTogTmV3
IGZ1bmN0aW9uLgotICAgICAgICAoV2ViQ29yZSk6Ci0gICAgICAgIChXZWJDb3JlOjpFZGl0b3JD
bGllbnRFZmw6OnNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCk6IEFkZCBpbXBsZW1lbnRhdGlvbi4K
LSAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEVmbDo6c2V0U2VsZWN0VHJhaWxpbmdXaGl0
ZXNwYWNlRW5hYmxlZCk6IE5ldyBmdW5jdGlvbi4KLSAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNs
aWVudEVmbDo6aXNTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKTogQWRkIGltcGxlbWVu
dGF0aW9uLgotICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50RWZsOjpFZGl0b3JDbGllbnRF
ZmwpOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5oOgotICAgICAg
ICAoRWRpdG9yQ2xpZW50RWZsKToKLQotMjAxMi0wMy0yMiAgU3VkYXJzYW5hIE5hZ2luZW5pICA8
c3VkYXJzYW5hLm5hZ2luZW5pQGxpbnV4LmludGVsLmNvbT4KLQotICAgICAgICBbRUZMXSBbRFJU
XSBJbXBsZW1lbnQgTGF5b3V0VGVzdENvbnRyb2xsZXI6Om1hcmtlclRleHRGb3JMaXN0SXRlbSgp
Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTUxMgot
Ci0gICAgICAgIEFkZCBtaXNzaW5nIGltcGxlbWVudGF0aW9uIG1hcmtlclRleHRGb3JMaXN0SXRl
bSB0byBFRkwncyAKLSAgICAgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0LgotCi0gICAgICAgIFJl
dmlld2VkIGJ5IEFudG9uaW8gR29tZXMuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1w
UmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwOgotICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0
RWZsOjptYXJrZXJUZXh0Rm9yTGlzdEl0ZW0pOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1
bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5oOgotCi0yMDEyLTAzLTIyICBTdWRhcnNhbmEgTmFnaW5l
bmkgIDxzdWRhcnNhbmEubmFnaW5lbmlAbGludXguaW50ZWwuY29tPgotCi0gICAgICAgIFtFRkxd
IEltcGxlbWVudCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0RWRpdGluZ0JlaGF2aW9yCi0gICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTEyNAotCi0gICAg
ICAgIEFkZCBtaXNzaW5nIGltcGxlbWVudGF0aW9uIHNldEVkaXRpbmdCZWhhdmlvciB0byBFRkwn
cyAKLSAgICAgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0LiBUaGlzIHNldHRpbmcgY29udHJvbHMg
dmFyaW91cyBlZGl0aW5nCi0gICAgICAgIGJlaGF2aW9ycyB0aGF0IGRpZmZlciBiZXR3ZWVuIHBs
YXRmb3Jtcy4KLQotICAgICAgICBSZXZpZXdlZCBieSBNYXJ0aW4gUm9iaW5zb24uCi0KLSAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwOgotICAgICAg
ICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpzZXRFZGl0aW5nQmVoYXZpb3IpOgotICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5oOgotCi0yMDEyLTAz
LTIyICBLcnp5c3p0b2YgQ3plY2ggIDxrLmN6ZWNoQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtF
RkxdIENoYW5nZSByZXR1cm5lZCB2aWV3IG1vZGUgaW4gY2FzZSBvZiBOVUxMIG9mIGV3a1ZpZXcu
Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTYzNgot
Ci0gICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgotCi0gICAgICAgIEZ1bmN0aW9uIGV3
a192aWV3X21vZGVfZ2V0IHJldHVybnMgd3JvbmcgdmlldyBtb2RlIGluIGNhc2Ugb2YgTlVMTCBv
ZiBld2tWaWV3LgotCi0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAgKF9Fd2tf
Vmlld19Qcml2YXRlX0RhdGEpOgotICAgICAgICAoZXdrX3ZpZXdfbW9kZV9nZXQpOgotCi0yMDEy
LTAzLTIyICBIeW93b24gS2ltICA8aHcxMDA4LmtpbUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBb
RUZMXSBBZGQgUGFnZUNsaWVudEVmbCB0byBXZWJDb3JlU3VwcG9ydC4KLSAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwNzQ4Ci0KLSAgICAgICAgUmV2aWV3
ZWQgYnkgTm9hbSBSb3NlbnRoYWwuCi0KLSAgICAgICAgVGhpcyBwYXRjaCBhZGRzIFBhZ2VDbGll
bnRFZmwgZm9yIGltcGxlbWVudGFpb24gb2YgYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcuCi0KLSAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwOgotICAgICAgICAoV2Vi
Q29yZTo6Q2hyb21lQ2xpZW50RWZsOjpwbGF0Zm9ybVBhZ2VDbGllbnQpOgotICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1BhZ2VDbGllbnRFZmwuY3BwOiBBZGRlZC4KLSAgICAgICAgKFdlYkNvcmUp
OgotICAgICAgICAoV2ViQ29yZTo6UGFnZUNsaWVudEVmbDo6UGFnZUNsaWVudEVmbCk6Ci0gICAg
ICAgIChXZWJDb3JlOjpQYWdlQ2xpZW50RWZsOjp+UGFnZUNsaWVudEVmbCk6Ci0gICAgICAgIChX
ZWJDb3JlOjpQYWdlQ2xpZW50RWZsOjpjcmVhdGVFdmFzT2JqZWN0Rm9yQWNjZWxlcmF0ZWRDb21w
b3NpdGluZyk6Ci0gICAgICAgIEp1c3QgY2FsbCBld2tfdmlld19hY2NlbGVyYXRlZF9jb21wb3Np
dGluZ19vYmplY3RfY3JlYXRlKCkuCi0gICAgICAgIChXZWJDb3JlOjpQYWdlQ2xpZW50RWZsOjph
Y2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCk6Ci0gICAgICAgIEp1c3QgY2FsbCBld2tfdmll
d19hY2NlbGVyYXRlZF9jb21wb3NpdGluZ19jb250ZXh0X2dldCgpLgotICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1BhZ2VDbGllbnRFZmwuaDogQWRkZWQuCi0gICAgICAgIChXZWJDb3JlKToKLSAg
ICAgICAgKFBhZ2VDbGllbnRFZmwpOgotICAgICAgICAoV2ViQ29yZTo6UGFnZUNsaWVudEVmbDo6
dmlldyk6IFJldHVybiBld2tWaWV3LgotICAgICAgICAqIGV3ay9ld2tfcHJpdmF0ZS5oOgotICAg
ICAgICAoV2ViQ29yZSk6Ci0gICAgICAgIChFV0tQcml2YXRlKToKLSAgICAgICAgKiBld2svZXdr
X3ZpZXcuY3BwOgotICAgICAgICAoX0V3a19WaWV3X1ByaXZhdGVfRGF0YSk6IEFkZCBPd25QdHI8
UGFnZUNsaWVudEVmbD4uCi0gICAgICAgIChfZXdrX3ZpZXdfcHJpdl9uZXcpOiBDcmVhdGUgYSBu
ZXcgUGFnZUNsaWVudEVmbC4KLSAgICAgICAgKGV3a192aWV3X2FjY2VsZXJhdGVkX2NvbXBvc2l0
aW5nX29iamVjdF9jcmVhdGUpOiBOb3QgaW1wbGVtZW50ZWQuCi0gICAgICAgIChld2tfdmlld19h
Y2NlbGVyYXRlZF9jb21wb3NpdGluZ19jb250ZXh0X2dldCk6IE5vdCBpbXBsZW1lbnRlZC4KLSAg
ICAgICAgKEVXS1ByaXZhdGU6OmNvcmVQYWdlQ2xpZW50KTogUmV0dXJuIHRoZSBQYWdlQ2xpZW50
RWZsIHBvaW50ZXIuCi0gICAgICAgIChFV0tQcml2YXRlKToKLQotMjAxMi0wMy0xOSAgQWRhbSBC
YXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgotCi0gICAgICAgIFJlbW92ZSBzdXBwb3J0IGZvciAi
bWFnaWMiIGlmcmFtZQotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9ODE1OTAKLQotICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KLQotICAgICAg
ICBSZW1vdmUgRnJhbWVMb2FkZXJDbGllbnQgbWV0aG9kcyB0aGF0IG5vIGxvbmdlciBleGlzdC4K
LQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcDoKLSAg
ICAgICAgKFdlYkNvcmUpOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50RWZsLmg6Ci0gICAgICAgIChGcmFtZUxvYWRlckNsaWVudEVmbCk6Ci0KLTIwMTItMDMtMTYg
IEtpaG9uZyBLd29uICA8a2lob25nLmt3b25Ac2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgU3VwcG9y
dCBmb3IgQmF0dGVyeSBTdGF0dXMgQVBJCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02MjY5OAotCi0gICAgICAgIEFkZCBCYXR0ZXJ5Q2xpZW50RWZsIGNs
YXNzIGltcGxlbWVudGF0aW9uIGZvciB0aGUgbGF5b3V0IHRlc3RzIG5vdy4KLSAgICAgICAgQmF0
dGVyeUNsaWVudEVmbCBjbGFzcyBpcyBub3QgZnVsbHkgaW1wbGVtZW50ZWQgaW4gdGhpcyBwYXRj
aC4KLSAgICAgICAgKEl0IHdpbGwgYmUgY29tcGxldGVkIGJ5IG90aGVyIHBhdGNoIGFzIG5lY2Vz
c2FyeSBpbiB0aGUgRWZsIHBvcnQuKQotICAgICAgICBodHRwOi8vd3d3LnczLm9yZy9UUi9iYXR0
ZXJ5LXN0YXR1cy8KLQotICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgotCi0gICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvQmF0dGVyeUNsaWVudEVmbC5jcHA6IEFkZGVkLgotICAgICAgICAo
V2ViQ29yZSk6Ci0gICAgICAgIChXZWJDb3JlOjpCYXR0ZXJ5Q2xpZW50RWZsOjpCYXR0ZXJ5Q2xp
ZW50RWZsKToKLSAgICAgICAgKFdlYkNvcmU6OkJhdHRlcnlDbGllbnRFZmw6OnNldENvbnRyb2xs
ZXIpOgotICAgICAgICAoV2ViQ29yZTo6QmF0dGVyeUNsaWVudEVmbDo6c3RhcnRVcGRhdGluZyk6
Ci0gICAgICAgIChXZWJDb3JlOjpCYXR0ZXJ5Q2xpZW50RWZsOjpzdG9wVXBkYXRpbmcpOgotICAg
ICAgICAoV2ViQ29yZTo6QmF0dGVyeUNsaWVudEVmbDo6YmF0dGVyeUNvbnRyb2xsZXJEZXN0cm95
ZWQpOgotICAgICAgICAoV2ViQ29yZTo6QmF0dGVyeUNsaWVudEVmbDo6c2V0QmF0dGVyeVN0YXR1
cyk6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvQmF0dGVyeUNsaWVudEVmbC5oOiBBZGRlZC4K
LSAgICAgICAgKFdlYkNvcmUpOgotICAgICAgICAoQmF0dGVyeUNsaWVudEVmbCk6Ci0gICAgICAg
IChXZWJDb3JlOjpCYXR0ZXJ5Q2xpZW50RWZsOjp+QmF0dGVyeUNsaWVudEVmbCk6Ci0gICAgICAg
ICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAgKF9Fd2tfVmlld19Qcml2YXRlX0RhdGEpOgot
ICAgICAgICAoX2V3a192aWV3X3ByaXZfbmV3KToKLQotMjAxMi0wMy0xMyAgSm9uIExlZSAgPGpv
bmxlZUBhcHBsZS5jb20+Ci0KLSAgICAgICAgU2VwYXJhdGUgTk9USUZJQ0FUSU9OUyBhbmQgTEVH
QUNZX05PVElGSUNBVElPTlMKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTgwOTIyCi0gICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMTAzNTA4Mj4KLQotICAg
ICAgICBSZXZpZXdlZCBieSBKaWFuIExpLgotCi0gICAgICAgIFlvdSBjYW4gaW5jbHVkZSBlaXRo
ZXIgTk9USUZJQ0FUSU9OUyBvciBMRUdBQ1lfTk9USUZJQ0FUSU9OUyBhbmQgaGF2ZSBhIGNvbXBs
ZXRlIEFQSS4KLSAgICAgICAgTEVHQUNZX05PVElGSUNBVElPTlMgc2hvdWxkIGNvdmVyIGFsbCBv
ZiB0aGUgcHJldmlvdXMgZnVuY3Rpb25hbGl0eSwgYW5kIE5PVElGSUNBVElPTlMgd2lsbCBjb3Zl
ciB0aGUKLSAgICAgICAgbmV3IEFQSS4gVGhlcmVmb3JlLCBBUElzIHRoYXQgYXJlIGNvbW1vbiBi
ZXR3ZWVuIHRoZSB0d28gd2lsbCBoYXZlOgotICAgICAgICAjaWYgRU5BQkxFKE5PVElGSUNBVElP
TlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKLQotICAgICAgICBUaGlzIHBhdGNo
IGluaXRpYWxseSBzZXRzIGJvdGggdG8gYmUgZXhhY3RseSB0aGUgc2FtZS4gQXMgb3RoZXIgYnVn
cyB3aXRoIHBhdGNoZXMgYmVnaW4gdG8gbWlncmF0ZSB0bwotICAgICAgICB0aGUgbmV3IEFQSSwg
dGhlIGRlZmluZXMgd2lsbCBiZWdpbiB0byBzcGxpdC4gVGhpcyBhbGxvd3MgcG9ydHMgdG8gZGVj
aWRlIHdoaWNoIHNldCBvZiBBUElzIHRvIGluY2x1ZGUuCi0KLSAgICAgICAgVXBkYXRlIGV2ZXJ5
dGhpbmcgdG8gYmUgI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05P
VElGSUNBVElPTlMpCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNw
cDoKLSAgICAgICAgKFdlYkNvcmUpOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNs
aWVudEVmbC5oOgotICAgICAgICAoQ2hyb21lQ2xpZW50RWZsKToKLSAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwuY3BwOgotICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbC5oOgotCi0yMDEyLTAz
LTEzICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+ICYmIEJlbmphbWluIFBvdWxhaW4g
IDxicG91bGFpbkBhcHBsZS5jb20+Ci0KLSAgICAgICAgQWx3YXlzIGVuYWJsZSBFTkFCTEUoQ0xJ
RU5UX0JBU0VEX0dFT0xPQ0FUSU9OKQotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9Nzg4NTMKLQotICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgot
Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcDoKLSAgICAgICAg
KFdlYkNvcmUpOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oOgot
ICAgICAgICAoQ2hyb21lQ2xpZW50RWZsKToKLQotMjAxMi0wMy0xMyAgQ2hhbmdTZW9rIE9oICA8
c2hpdmFtaWRvd0BnbWFpbC5jb20+Ci0KLSAgICAgICAgW0VGTF0gW0RSVF0gSW1wbGVtZW50IHNj
aGVkdWxlQXN5bmNocm9ub3VzS2V5RG93bi4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTc5NjAxCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgR3VzdGF2byBO
b3JvbmhhIFNpbHZhLgotCi0gICAgICAgIEFkZGVkIGEgbmV3IEFQSSB0byBkZWxpdmVyIGFsbCBt
dXRhdGlvbnMgZXhwbGljaXRseS4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5k
ZXJUcmVlU3VwcG9ydEVmbC5jcHA6Ci0gICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6
OmRlbGl2ZXJBbGxNdXRhdGlvbnNJZk5lY2Vzc2FyeSk6Ci0gICAgICAgICogV2ViQ29yZVN1cHBv
cnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmg6Ci0KLTIwMTItMDMtMTMgIEp1bmdKaWsgTGVl
ICA8anVuZ2ppay5sZWVAc2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW0VGTF0gUmVtb3ZlIGEgZHVw
bGljYXRlIGFsbG9jYXRpb24gb2YgbWF0cml4IGVudHJ5LgotICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzkzNjIKLQotICAgICAgICBSZXZpZXdlZCBieSBa
b2x0YW4gSGVyY3plZy4KLQotICAgICAgICBBIG1hdHJpeCBlbnRyeSBpcyBjcmVhdGVkIHdoZW4g
Y2FsbGluZyBld2tfbWF0cml4X25ldy4KLSAgICAgICAgQW5vdGhlciBtYXRyaXggaXMgY3JlYXRl
ZCBpbnNpZGUgZXdrX3RpbGVfbWF0cml4X3pvb21fbGV2ZWxfc2V0LgotICAgICAgICBUaGlzIHBh
dGNoIGlzIGZvciBnZXR0aW5nIHJpZCBvZiBhIGR1cGxpY2F0ZWQgY3JlYXRpb24gb2YgdGhlIG1h
dHJpeC4KLQotICAgICAgICAqIGV3ay9ld2tfdGlsZWRfYmFja2luZ19zdG9yZS5jcHA6Ci0gICAg
ICAgIChfRXdrX1RpbGVkX0JhY2tpbmdfU3RvcmVfSXRlbSk6Ci0gICAgICAgIChfZXdrX3RpbGVk
X2JhY2tpbmdfc3RvcmVfem9vbV9zZXRfaW50ZXJuYWwpOgotICAgICAgICAqIGV3ay9ld2tfdGls
ZWRfbWF0cml4LmNwcDoKLSAgICAgICAgKGV3a190aWxlX21hdHJpeF9uZXcpOgotICAgICAgICAo
ZXdrX3RpbGVfbWF0cml4X3pvb21fbGV2ZWxfc2V0KToKLSAgICAgICAgKGV3a190aWxlX21hdHJp
eF9lbnRyeV9uZXcpOgotICAgICAgICAoZXdrX3RpbGVfbWF0cml4X3NpemVfZ2V0KToKLSAgICAg
ICAgKiBld2svZXdrX3RpbGVkX21hdHJpeC5oOgotCi0yMDEyLTAzLTA5ICBKb24gTGVlICA8am9u
bGVlQGFwcGxlLmNvbT4KLQotICAgICAgICBSZW5hbWUgTm90aWZpY2F0aW9uUHJlc2VudGVyIHRv
IE5vdGlmaWNhdGlvbkNsaWVudAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODA0ODgKLSAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEwOTY1NTU4PgotCi0g
ICAgICAgIFJldmlld2VkIGJ5IEtlbnRhcm8gSGFyYS4KLQotICAgICAgICBSZWZhY3RvciB0byB1
c2UgcmVuYW1lZCBXZWJDb3JlOjpOb3RpZmljYXRpb25DbGllbnQuCi0gICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNs
aWVudEVmbDo6bm90aWZpY2F0aW9uUHJlc2VudGVyKToKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9DaHJvbWVDbGllbnRFZmwuaDoKLSAgICAgICAgKENocm9tZUNsaWVudEVmbCk6Ci0KLTIwMTIt
MDMtMDggIEh5b3dvbiBLaW0gIDxodzEwMDgua2ltQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtU
ZXhtYXBdW0VGTF0gSW1wbGVtZW50YXRpb24gb2YgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRl
eHQgZm9yIEVGTCBwb3J0Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD04MDI2NgotCi0gICAgICAgIFJldmlld2VkIGJ5IE5vYW0gUm9zZW50aGFsLgotCi0g
ICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBFRkwncyBpbXBsZW1lbnRhdGlvbiBvZiBBY2NlbGVyYXRl
ZENvbXBvc2l0aW5nQ29udGV4dCB0byBXZWJDb3JlU3VwcG9ydC4KLQotICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0RWZsLmNwcDogQWRkZWQuCi0g
ICAgICAgIChXZWJDb3JlKToKLSAgICAgICAgKFdlYkNvcmU6OkFjY2VsZXJhdGVkQ29tcG9zaXRp
bmdDb250ZXh0OjpjcmVhdGUpOgotICAgICAgICAoV2ViQ29yZTo6QWNjZWxlcmF0ZWRDb21wb3Np
dGluZ0NvbnRleHQ6OkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0KToKLSAgICAgICAgKFdl
YkNvcmU6OkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0Ojp+QWNjZWxlcmF0ZWRDb21wb3Np
dGluZ0NvbnRleHQpOgotICAgICAgICAoV2ViQ29yZTo6QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Nv
bnRleHQ6OmluaXRpYWxpemUpOgotICAgICAgICAoV2ViQ29yZTo6QWNjZWxlcmF0ZWRDb21wb3Np
dGluZ0NvbnRleHQ6OnN5bmNMYXllcnNOb3cpOgotICAgICAgICAoV2ViQ29yZTo6QWNjZWxlcmF0
ZWRDb21wb3NpdGluZ0NvbnRleHQ6OnJlbmRlckxheWVycyk6Ci0gICAgICAgIChXZWJDb3JlOjpB
Y2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6YXR0YWNoUm9vdEdyYXBoaWNzTGF5ZXIpOgot
ICAgICAgICAoV2ViQ29yZTo6QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OmNvbnRleHQp
OgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0
RWZsLmg6IEFkZGVkLgotICAgICAgICAoV2ViQ29yZSk6Ci0gICAgICAgIChBY2NlbGVyYXRlZENv
bXBvc2l0aW5nQ29udGV4dCk6Ci0KLTIwMTItMDMtMDIgIEdyemVnb3J6IEN6YWprb3dza2kgIDxn
LmN6YWprb3dza2lAc2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW0VGTF0gRW5hYmxpbmcgJ0luc3Bl
Y3QgRWxlbWVudCcgaW4gRXdrX0NvbnRleHRfTWVudV9BY3Rpb24uCi0gICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTY0NgotCi0gICAgICAgIFJldmlld2Vk
IGJ5IEFuZHJlYXMgS2xpbmcuCi0KLSAgICAgICAgSU5TUEVDVE9SIGZlYXR1cmUgaXMgYWxyZWFk
eSBlbmFibGVkIGZvciBXZWJLaXQtRWZsIHBvcnQgKE9wdGlvbnNFZmwuY21ha2UpLgotICAgICAg
ICBBcyBhIHJlc3VsdCBXZWJDb3JlJ3MgQ29udGV4dE1lbnVBY3Rpb24gY29udGFpbnMgQ29udGV4
dE1lbnVJdGVtVGFnSW5zcGVjdEVsZW1lbnQKLSAgICAgICAgYW5kIGVudW1zIG9yZGVyIGhhcyBi
ZWVuIGNoYW5nZWQuIFdlYktpdC1FZmwgaGFzIHRvIHN5bmNocm9uaXplIENvbnRleHRNZW51QWN0
aW9uCi0gICAgICAgIHdpdGggRXdrX0NvbnRleHRfTWVudV9BY3Rpb24uCi0gICAgICAgIFRvIGF2
b2lkIHNpbWlsYXIgY2FzZSBpbiB0aGUgZmVhdHVyZSBJIGFkZGVkIGNoZWNrcyBiZXR3ZWVuIFdl
YkNvcmUgYW5kCi0gICAgICAgIFdlYktpdC1FRkwncyBlbnVtcyBieSB1c2luZyBDT01QSUxFX0FT
U0VSVF9NQVRDSElOR19FTlVNLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvQXNzZXJ0TWF0
Y2hpbmdFbnVtcy5jcHA6Ci0gICAgICAgICogZXdrL2V3a19jb250ZXh0bWVudS5oOgotCi0yMDEy
LTAyLTI5ICBUb21hc3ogTW9yYXdza2kgIDx0Lm1vcmF3c2tpQHNhbXN1bmcuY29tPgotCi0gICAg
ICAgIFtFRkxdIFJlcGxhY2UgbWFsbG9jL2NhbGxvYy9mcmVlIHRvIG5ldy9kZWxldGUuCi0gICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NTg0OAotCi0gICAg
ICAgIFJldmlld2VkIGJ5IEhhamltZSBNb3JpdGEuCi0KLSAgICAgICAgUmVwbGFjZWQgYWxtb3N0
IGFsbCBtYWxsb2MvY2FsbG9jL2ZyZWUgdG8gbmV3L2RlbGV0ZSBvcGVyYXRvciBhbmQgd2hlcmUg
aXQgd2FzIHBvc3NpYmxlIHNtYXJ0IHBvaW50ZXJzIHdlcmUgYWxzbwotICAgICAgICB1c2VkLiBM
ZWZ0IGZldyBjIG1lbW9yeSBhbGxvY2F0aW9uIGJ5IGludGVudGlvbiB0byBub3QgbWl4IGMgYW5k
IGMrKyBtZW1vcnkgbWFuYWdtZW50LiBMZWZ0IG1hbGxvYyBmb3IgRXdrX1RpbGUKLSAgICAgICAg
b2JqZWN0IGR1ZSB0byBjb25zdCBmaWVsZHMgcHJlc2VudCBpbiBFd2tfdGlsZSBzdHJ1Y3R1cmUu
Ci0KLSAgICAgICAgKiBld2svZXdrX2F1dGhfc291cC5jcHA6Ci0gICAgICAgICogZXdrL2V3a19j
b250ZXh0bWVudS5jcHA6Ci0gICAgICAgIChld2tfY29udGV4dF9tZW51X3VucmVmKToKLSAgICAg
ICAgKGV3a19jb250ZXh0X21lbnVfaXRlbV9uZXcpOgotICAgICAgICAoZXdrX2NvbnRleHRfbWVu
dV9pdGVtX2ZyZWUpOgotICAgICAgICAoZXdrX2NvbnRleHRfbWVudV9uZXcpOgotICAgICAgICAq
IGV3ay9ld2tfY29va2llcy5jcHA6Ci0gICAgICAgIChld2tfY29va2llc19nZXRfYWxsKToKLSAg
ICAgICAgKGV3a19jb29raWVzX2Nvb2tpZV9mcmVlKToKLSAgICAgICAgKiBld2svZXdrX2ZyYW1l
LmNwcDoKLSAgICAgICAgKGV3a19mcmFtZV9oaXRfdGVzdF9mcmVlKToKLSAgICAgICAgKGV3a19m
cmFtZV9oaXRfdGVzdF9uZXcpOgotICAgICAgICAqIGV3ay9ld2tfaGlzdG9yeS5jcHA6Ci0gICAg
ICAgIChld2tfaGlzdG9yeV9pdGVtX25ld19mcm9tX2NvcmUpOgotICAgICAgICAoX2V3a19oaXN0
b3J5X2l0ZW1fZnJlZSk6Ci0gICAgICAgIChld2tfaGlzdG9yeV9uZXcpOgotICAgICAgICAoZXdr
X2hpc3RvcnlfZnJlZSk6Ci0gICAgICAgICogZXdrL2V3a190aWxlZF9iYWNraW5nX3N0b3JlLmNw
cDoKLSAgICAgICAgKF9Fd2tfVGlsZWRfQmFja2luZ19TdG9yZV9JdGVtKToKLSAgICAgICAgKF9l
d2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVfcmVuZGVyX3JlcXVlc3RfYWRkKToKLSAgICAgICAg
KF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVfcmVuZGVyX3JlcXVlc3RfZGVsKToKLSAgICAg
ICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVfcmVuZGVyX3JlcXVlc3RfZmx1c2gpOgot
ICAgICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3ByZV9yZW5kZXJfcmVxdWVzdF9jbGVh
cik6Ci0gICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfaXRlbV9hZGQpOgotICAgICAg
ICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX2l0ZW1fZGVsKToKLSAgICAgICAgKiBld2svZXdr
X3RpbGVkX21hdHJpeC5jcHA6Ci0gICAgICAgIChfZXdrX3RpbGVfbWF0cml4X3RpbGVfZnJlZSk6
Ci0gICAgICAgIChld2tfdGlsZV9tYXRyaXhfbmV3KToKLSAgICAgICAgKGV3a190aWxlX21hdHJp
eF96b29tX2xldmVsX3NldCk6Ci0gICAgICAgIChld2tfdGlsZV9tYXRyaXhfaW52YWxpZGF0ZSk6
Ci0gICAgICAgIChld2tfdGlsZV9tYXRyaXhfZnJlZSk6Ci0gICAgICAgICogZXdrL2V3a190aWxl
ZF9tb2RlbC5jcHA6Ci0gICAgICAgICh0aWxlX2FjY291bnQpOgotICAgICAgICAoZXdrX3RpbGVf
dW51c2VkX2NhY2hlX25ldyk6Ci0gICAgICAgIChfZXdrX3RpbGVfdW51c2VkX2NhY2hlX2ZyZWUp
OgotICAgICAgICAoZXdrX3RpbGVfdW51c2VkX2NhY2hlX2NsZWFyKToKLSAgICAgICAgKGV3a190
aWxlX3VudXNlZF9jYWNoZV9mbHVzaCk6Ci0gICAgICAgIChld2tfdGlsZV91bnVzZWRfY2FjaGVf
dGlsZV9nZXQpOgotICAgICAgICAoZXdrX3RpbGVfdW51c2VkX2NhY2hlX3RpbGVfcHV0KToKLSAg
ICAgICAgKiBld2svZXdrX3RpbGVkX3ByaXZhdGUuaDoKLSAgICAgICAgKiBld2svZXdrX3ZpZXcu
Y3BwOgotICAgICAgICAoX0V3a19WaWV3X1ByaXZhdGVfRGF0YSk6Ci0gICAgICAgIChfZXdrX3Zp
ZXdfY29yZV9mcmFtZV9uZXcpOgotICAgICAgICAoX2V3a192aWV3X3ByaXZfbmV3KToKLSAgICAg
ICAgKF9ld2tfdmlld19wcml2X2RlbCk6Ci0gICAgICAgIChld2tfdmlld19jb3JlX3BhZ2VfZ2V0
KToKLSAgICAgICAgKGV3a192aWV3X3BvcHVwX25ldyk6Ci0gICAgICAgIChld2tfdmlld19wb3B1
cF9kZXN0cm95KToKLSAgICAgICAgKEVXS1ByaXZhdGU6OmNvcmVQYWdlKToKLSAgICAgICAgKiBl
d2svZXdrX3dpbmRvd19mZWF0dXJlcy5jcHA6Ci0gICAgICAgIChld2tfd2luZG93X2ZlYXR1cmVz
X3VucmVmKToKLSAgICAgICAgKGV3a193aW5kb3dfZmVhdHVyZXNfbmV3X2Zyb21fY29yZSk6Ci0K
LTIwMTItMDItMjcgIEp1bmdKaWsgTGVlICA8anVuZ2ppay5sZWVAc2Ftc3VuZy5jb20+Ci0KLSAg
ICAgICAgW0VGTF0gUGFpcmluZyB1cCBiZXR3ZWVuIGV2YXNfb2JqZWN0X2ltYWdlX2RhdGFfZ2V0
IGFuZCBldmFzX29iamVjdF9pbWFnZV9kYXRhX3NldC4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5MDMxCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgWm9s
dGFuIEhlcmN6ZWcuCi0KLSAgICAgICAgLSBHZXQgdGhlIHBpeGVsIGRhdGEgd2hlbiB0aGUgY2Fp
cm8gc3VyZmFjZSBpcyBjcmVhdGVkLgotICAgICAgICAtIGV2YXNfb2JqZWN0X2ltYWdlX2RhdGFf
Z2V0IGluY3JlYXNlcyB0aGUgcmVmZXJlbmNlIGNvdW50IGFuZCByZXR1cm5zIHRoZSBpbWFnZSBi
dWZmZXIgcG9pbnRlci4KLSAgICAgICAgZXZhc19vYmplY3RfaW1hZ2VfZGF0YV9zZXQgZGVjcmVh
c2VzIHRoZSByZWZlcmVuY2UgY291bnQgYW5kIHdoZW4gdGhlIHJlZiBjb3VudCBiZWNvbWUgemVy
bywKLSAgICAgICAgdGhlIGZ1bmN0aW9uIHJlbGVhc2VzIHRoZSBjYWNoZWQgaW1hZ2UgaW5zaWRl
IGV2YXMgZW5naW5lLgotICAgICAgICBXZSBzaG91bGQgbWFrZSBhIHBhaXIgYmV0d2VlbiBldmFz
X29iamVjdF9pbWFnZV9kYXRhX3NldC9nZXQgdG8gcmV0dXJuIGV2YXMgcmVzb3VyY2UuCi0KLSAg
ICAgICAgKiBld2svZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUuaDoKLSAgICAgICAgKF9Fd2tfVGls
ZSk6Ci0gICAgICAgICogZXdrL2V3a190aWxlZF9tb2RlbC5jcHA6Ci0gICAgICAgICh0aWxlX2Fj
Y291bnQpOgotICAgICAgICAoZXdrX3RpbGVfbmV3KToKLSAgICAgICAgKiBld2svZXdrX3ZpZXdf
dGlsZWQuY3BwOgotICAgICAgICAoX2V3a192aWV3X3RpbGVkX3JlbmRlcl9jYik6Ci0KLTIwMTIt
MDItMjYgIEhhamltZSBNb3JyaXRhICA8bW9ycml0YUBjaHJvbWl1bS5vcmc+Ci0KLSAgICAgICAg
TW92ZSBDaHJvbWVDbGllbnQ6OnNob3dDb250ZXh0TWVudSgpIHRvIENvbnRleHRNZW51Q2xpZW50
Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTQyNwot
Ci0gICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCi0KLSAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9DaHJvbWVDbGllbnRFZmwuaDoKLSAgICAgICAgKENocm9tZUNsaWVudEVmbCk6Ci0KLTIw
MTItMDItMjQgIEdyemVnb3J6IEN6YWprb3dza2kgIDxnLmN6YWprb3dza2lAc2Ftc3VuZy5jb20+
Ci0KLSAgICAgICAgW0VGTF1bRFJUXSBJbXBsZW1lbnQgc2V0VmFsdWVGb3JVc2VyIGFuZCBzZXRB
dXRvZmlsbGVkLgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NzkyMzcKLQotICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgotCi0gICAgICAg
IEFkZHMgbWlzc2luZyBpbXBsZW1lbnRhdGlvbiBzZXRWYWx1ZUZvclVzZXIgYW5kIHNldEF1dG9m
aWxsZWQgdG8gRUZMJ3MgRHVtcFJlbmRlclRyZWVTdXBwb3J0LgotCi0gICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcDoKLSAgICAgICAgKER1bXBSZW5k
ZXJUcmVlU3VwcG9ydEVmbDo6c2V0VmFsdWVGb3JVc2VyKToKLSAgICAgICAgKER1bXBSZW5kZXJU
cmVlU3VwcG9ydEVmbDo6c2V0QXV0b2ZpbGxlZCk6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQv
RHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmg6Ci0KLTIwMTItMDItMjQgIFNoaW55YSBLYXdhbmFr
YSAgPHNoaW55YWtAY2hyb21pdW0ub3JnPgotCi0gICAgICAgIFNwZWxsQ2hlY2tSZXF1ZXN0IG5l
ZWRzIHRvIGtub3cgdGhlIGNvbnRleHQgd2hlcmUgdGhlIHNwZWxsY2hlY2sgaGFwcGVuZWQuCi0g
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTMyMAotCi0g
ICAgICAgIFJldmlld2VkIGJ5IEhhamltZSBNb3JpdGEuCi0KLSAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9FZGl0b3JDbGllbnRFZmwuaDoKLSAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEVm
bDo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcpOgotCi0yMDEyLTAyLTIxICBSeW9zdWtlIE5pd2Eg
IDxybml3YUB3ZWJraXQub3JnPgotCi0gICAgICAgIFJlbW92ZSB0aGUgcmVtYWluaW5nIHVzZXMg
b2YgQ1NTU3R5bGVEZWNsYXJhdGlvbiBpbiBFZGl0b3IKLSAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4OTM5Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgRW5y
aWNhIENhc3VjY2kuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwu
Y3BwOgotICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50RWZsOjpzaG91bGRBcHBseVN0eWxl
KToKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuaDoKLSAgICAgICAg
KEVkaXRvckNsaWVudEVmbCk6Ci0KLTIwMTItMDItMjIgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdl
YmtpdC5vcmc+Ci0KLSAgICAgICAgUmVtb3ZlIHRoZSByZW1haW5pbmcgdXNlcyBvZiBDU1NTdHls
ZURlY2xhcmF0aW9uIGluIEVkaXRvcgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9Nzg5MzkKLQotICAgICAgICBSZXZpZXdlZCBieSBFbnJpY2EgQ2FzdWNj
aS4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5jcHA6Ci0gICAg
ICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRFZmw6OnNob3VsZEFwcGx5U3R5bGUpOgotICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5oOgotICAgICAgICAoRWRpdG9yQ2xp
ZW50RWZsKToKLQotMjAxMi0wMi0yMCAgS2lob25nIEt3b24gIDxraWhvbmcua3dvbkBzYW1zdW5n
LmNvbT4KLQotICAgICAgICBBZGQgYSBuZXcgQVBJIGZvciB0aGUgVmlicmF0aW9uIEFQSShXM0Mp
LgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzIwMTAK
LQotICAgICAgICBSZXZpZXdlZCBieSBIYWppbWUgTW9yaXRhLgotCi0gICAgICAgIEltcGxlbWVu
dGF0aW9uIGZvciB0aGUgVmlicmF0aW9uIEFQSSBmZWF0dXJlIHRvIHRoZSBFRkwtcG9ydCBsYXll
ci4KLSAgICAgICAgaHR0cDovL2Rldi53My5vcmcvMjAwOS9kYXAvdmlicmF0aW9uLwotICAgICAg
ICBUaGVyZSBhcmUgdHdvIG1ldGhvZHMgZm9yIHZpYnJhdGlvbiBBUEkuCi0gICAgICAgIC0gdmli
cmF0ZSA6IFZpYnJhdGUgZGV2aWNlIGZvciByZWNlaXZpbmcgYXMgYSBwYXJhbWV0ZXIuCi0gICAg
ICAgIC0gY2FuY2VsVmlicmF0ZSA6IENhbmNlbCBjdXJyZW50IHZpYnJhdGlvbi4KLQotICAgICAg
ICAqIENNYWtlTGlzdHNFZmwudHh0OgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1ZpYnJhdGlv
bkNsaWVudEVmbC5jcHA6IEFkZGVkLgotICAgICAgICAoV2ViQ29yZSk6Ci0gICAgICAgIChXZWJD
b3JlOjpWaWJyYXRpb25DbGllbnRFZmw6OlZpYnJhdGlvbkNsaWVudEVmbCk6Ci0gICAgICAgIChX
ZWJDb3JlOjpWaWJyYXRpb25DbGllbnRFZmw6OnZpYnJhdGUpOgotICAgICAgICAoV2ViQ29yZTo6
VmlicmF0aW9uQ2xpZW50RWZsOjpjYW5jZWxWaWJyYXRpb24pOgotICAgICAgICAoV2ViQ29yZTo6
VmlicmF0aW9uQ2xpZW50RWZsOjp2aWJyYXRpb25EZXN0cm95ZWQpOgotICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1ZpYnJhdGlvbkNsaWVudEVmbC5oOiBBZGRlZC4KLSAgICAgICAgKFdlYkNvcmUp
OgotICAgICAgICAoVmlicmF0aW9uQ2xpZW50RWZsKToKLSAgICAgICAgKFdlYkNvcmU6OlZpYnJh
dGlvbkNsaWVudEVmbDo6flZpYnJhdGlvbkNsaWVudEVmbCk6Ci0gICAgICAgICogZXdrL2V3a192
aWV3LmNwcDoKLSAgICAgICAgKF9Fd2tfVmlld19Qcml2YXRlX0RhdGEpOgotICAgICAgICAoX2V3
a192aWV3X3ByaXZfbmV3KToKLQotMjAxMi0wMi0xNyAgUmFwaGFlbCBLdWJvIGRhIENvc3RhICA8
a3Vib0Bwcm9mdXNpb24ubW9iaT4KLQotICAgICAgICBbRUZMXSBVbnJldmlld2VkLCBhZGFwdCB0
byB0aGUgY2hhbmdlcyBpbnRyb2R1Y2VkIGluIHIxMDc5NzMuCi0KLSAgICAgICAgU1ZOIHIxMDc5
NzMgbW92ZWQgc29tZSBsaWJzb3VwIGZlYXR1cmUgaW5pdGlhbGl6YXRpb24gY29kZSB0bwotICAg
ICAgICBXZWJDb3JlLCBidXQgb25seSBjaGFuZ2VkIHRoZSBHVEsrIGJpdHMgaW4gV2ViS2l0Lgot
Ci0gICAgICAgICogZXdrL2V3a19tYWluLmNwcDoKLSAgICAgICAgKF9ld2tfaW5pdF9ib2R5KTog
RG8gbm90IGluaXRpYWxpemUgdGhlIGNvbnRlbnQgc25pZmZlciBhbmQgdGhlCi0gICAgICAgIGRl
Y29kZXIgaGVyZSwgdGhlIGluaXRpYWxpemF0aW9uIGlzIG5vdyBkb25lIGluIFdlYkNvcmUuCi0K
LTIwMTItMDItMTcgIFJhcGhhZWwgS3VibyBkYSBDb3N0YSAgPGt1Ym9AcHJvZnVzaW9uLm1vYmk+
Ci0KLSAgICAgICAgVW5yZXZpZXdlZCwgZml4IHRoZSBidWlsZCB3aXRoIEVOQUJMRShERVZJQ0Vf
T1JJRU5UQVRJT04pIGFmdGVyCi0gICAgICAgIHIxMDc1MTguIFRoZSBFRkwgRVdTIGJvdCBkb2Vz
bid0IGVuYWJsZSB0aGF0IGZsYWcsIHNvIHRoZSBicmVha2FnZQotICAgICAgICB3YXMgbm90IHNw
b3R0ZWQgZWFybGllci4KLQotICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChf
RXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKToKLSAgICAgICAgKF9ld2tfdmlld19wcml2X25ldyk6Ci0K
LTIwMTItMDEtMzEgIFJhcGhhZWwgS3VibyBkYSBDb3N0YSAgPGt1Ym9AcHJvZnVzaW9uLm1vYmk+
Ci0KLSAgICAgICAgW3NvdXBdIEFkZCBzdXBwb3J0IGZvciBtdWx0aXBsZSBTb3VwU2Vzc2lvbnMu
Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzM0MQot
Ci0gICAgICAgIEFkZCB0aGUgbmVjZXNzYXJ5IGluZnJhc3RydWN0dXJlIHRvIHN1cHBvcnQgbXVs
dGlwbGUgU291cFNlc3Npb25zLiBFYWNoCi0gICAgICAgIFdlYlZpZXcgbm93IGhhcyBhICJzZXNz
aW9uIiBwcm9wZXJ0eSwgd2hpY2ggZGVmYXVsdHMgdG8KLSAgICAgICAgUmVzb3VyY2VIYW5kbGU6
OmRlZmF1bHRTZXNzaW9uKCkgYW5kIGNhbiBiZSBjaGFuZ2VkIHRvIGFub3RoZXIKLSAgICAgICAg
U291cFNlc3Npb24gYnkgdGhlIHVzZXIuCi0KLSAgICAgICAgU29tZSBBUEkgaW4gZXdrX25ldHdv
cmsgYW5kIGV3a192aWV3IHdoaWNoIHJlcXVpcmVkIFNvdXBTZXNzaW9uIHRvIGJlIGEKLSAgICAg
ICAgdmFsaWQgdHlwZSBpbiB0aGUgaGVhZGVycyBoYXMgbm93IGJlZW4gbW92ZWQgaW5zaWRlICNp
ZiBVU0UoU09VUCkKLSAgICAgICAgaWZkZWZzIHNvIHdlIGNhbiBhY3R1YWxseSB0aGUgcmVxdWly
ZWQgU291cCBoZWFkZXIgYW5kIGF2b2lkIGJ1aWxkCi0gICAgICAgIHByb2JsZW1zIHdpdGggZHVw
bGljYXRlIHR5cGVkZWZzLgotCi0gICAgICAgICogQ01ha2VMaXN0c0VmbC50eHQ6Ci0gICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwOgotICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmNyZWF0ZU5ldHdvcmtpbmdDb250ZXh0KToKLSAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZU5ldHdvcmtpbmdDb250ZXh0RWZsLmNwcDogQ29w
aWVkIGZyb20gU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVOZXR3b3JraW5n
Q29udGV4dEVmbC5oLgotICAgICAgICAoV2ViQ29yZSk6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFt
ZU5ldHdvcmtpbmdDb250ZXh0RWZsOjpjcmVhdGUpOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVO
ZXR3b3JraW5nQ29udGV4dEVmbDo6RnJhbWVOZXR3b3JraW5nQ29udGV4dEVmbCk6Ci0gICAgICAg
IChXZWJDb3JlOjpGcmFtZU5ldHdvcmtpbmdDb250ZXh0RWZsOjpzb3VwU2Vzc2lvbik6Ci0gICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVOZXR3b3JraW5nQ29udGV4dEVmbC5oOgotICAgICAg
ICAoRnJhbWVOZXR3b3JraW5nQ29udGV4dEVmbCk6Ci0gICAgICAgICogZXdrL2V3a19jb29raWVz
Lmg6IE1lbnRpb24gdGhpcyBBUEkgaXMgb25seSB2YWxpZCB3aXRoIHRoZQotICAgICAgICBkZWZh
dWx0IFNvdXBTZXNzaW9uLgotICAgICAgICAqIGV3ay9ld2tfbmV0d29yay5jcHA6Ci0gICAgICAg
IChld2tfbmV0d29ya19kZWZhdWx0X3NvdXBfc2Vzc2lvbl9nZXQpOiBEZWZpbmUgb25seSBpZiBV
U0UoU09VUCkgaXMgc2V0LgotICAgICAgICAqIGV3ay9ld2tfbmV0d29yay5oOiBEaXR0bywgYW5k
IG1lbnRpb24gdGhpcyBBUEkgaXMgb25seSB2YWxpZCB3aXRoIHRoZQotICAgICAgICBkZWZhdWx0
IFNvdXBTZXNzaW9uLgotICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChfRXdr
X1ZpZXdfUHJpdmF0ZV9EYXRhKToKLSAgICAgICAgKF9ld2tfdmlld19wcml2X25ldyk6Ci0gICAg
ICAgIChld2tfdmlld19zb3VwX3Nlc3Npb25fZ2V0KToKLSAgICAgICAgKGV3a192aWV3X3NvdXBf
c2Vzc2lvbl9zZXQpOgotICAgICAgICAqIGV3ay9ld2tfdmlldy5oOgotICAgICAgICAoKToKLQot
MjAxMi0wMi0xNSAgU2FkcnVsIEhhYmliIENob3dkaHVyeSAgPHNhZHJ1bEBjaHJvbWl1bS5vcmc+
Ci0KLSAgICAgICAgTm90aWZ5IENocm9tZUNsaWVudCB3aGVuIHRvdWNoLWV2ZW50IGhhbmRsZXJz
IGFyZSBpbnN0YWxsZWQvcmVtb3ZlZC4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTc3NDQwCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gRmlzaGVy
IGFuZCBSeW9zdWtlIE5pd2EuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGll
bnRFZmwuaDoKLSAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEVmbDo6bnVtVG91Y2hFdmVu
dEhhbmRsZXJzQ2hhbmdlZCk6Ci0KLTIwMTItMDItMTUgIEd1c3Rhdm8gTGltYSBDaGF2ZXMgIDxn
bGltYUBwcm9mdXNpb24ubW9iaT4KLQotICAgICAgICBbRUZMXSBBZGQgbWlzc2luZyBsaWJzb3Vw
IHRvIChwa2djb25maWcpIGRlcGVuZGVuY3kgcmVxdWlyZW1lbnRzCi0gICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODcwMgotCi0gICAgICAgIFVucmV2aWV3
ZWQgYnVpbGQgZml4LgotCi0gICAgICAgICogZXdlYmtpdC5wYy5pbjogTm93IHRoYXQgYnVnIDc3
ODc0IGhhZCBpdHMgcGF0Y2ggbGFuZGVkLCB3ZQotICAgICAgICBhbHdheXMgcmVxdWlyZSBsaWJz
b3VwIGFzIGEgZGVwZW5kZW5jeSBmb3IgdGhlIEVGTCBwb3J0LiBUaGUKLSAgICAgICAgJ1JlcXVp
cmUnIHNlc3Npb24gb2YgdGhpcyBmaWxlIGhhcyB0byBjb250ZW1wbGF0ZSB0aGF0LCBvdGhlcndp
c2UKLSAgICAgICAgY29kZSBsaW5raW5nIHdpdGggZXdlYmtpdCB3aWxsIGZhaWwgdG8gbG9va3Vw
IHRvIGxpYnNvdXAncyBoZWFkZXIKLSAgICAgICAgZmlsZXMuCi0KLTIwMTItMDItMTMgIFJhcGhh
ZWwgS3VibyBkYSBDb3N0YSAgPGt1Ym9AcHJvZnVzaW9uLm1vYmk+Ci0KLSAgICAgICAgW0NNYWtl
XSBNZXJnZSBXZWJLaXRFZmwuY21ha2UgaW50byBGaW5kRUZMLmNtYWtlLgotICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzg1NjYKLQotICAgICAgICBSZXZp
ZXdlZCBieSBEYW5pZWwgQmF0ZXMuCi0KLSAgICAgICAgKiBDTWFrZUxpc3RzRWZsLnR4dDogRG8g
bm90IGluY2x1ZGUgV2ViS2l0RWZsLmNtYWtlLgotCi0yMDEyLTAyLTExICBOaWtvbGFzIFppbW1l
cm1hbm4gIDxuemltbWVybWFubkByaW0uY29tPgotCi0gICAgICAgIENvbnZlcnQgc3ZnL2FuaW1h
dGlvbnMgdG8gdXNlIFNNSUwgbWV0aG9kcyBmb3IgZHJpdmluZyB0aGUgdGltZWxpbmUKLSAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4NDIyCi0KLSAgICAg
ICAgUmV2aWV3ZWQgYnkgRGlyayBTY2h1bHplLgotCi0gICAgICAgIFJlbW92ZSBTVkcgYW5pbWF0
aW9uIHNhbXBsaW5nIGZ1bmN0aW9uYWxpdHkgcHJvdmlkZWQgZm9yIERSVCwgd2hpY2ggbm8gbG9u
Z2VyIHVzZXMgaXQuCi0gICAgICAgIEluc3RlYWQgd2Ugc3dpdGNoZWQgdGhlIHN2Zy9hbmltYXRp
b25zIHRlc3RzIHRvIHVzZSBTVkdTVkdFbGVtZW50LnNldEN1cnJlbnRUaW1lLgotCi0gICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcDoKLSAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuaDoKLQotMjAxMi0wMi0w
NiAgUmFwaGFlbCBLdWJvIGRhIENvc3RhICA8a3Vib0Bwcm9mdXNpb24ubW9iaT4KLQotICAgICAg
ICBbRUZMXSBEcm9wIHN1cHBvcnQgZm9yIHRoZSBDdXJsIG5ldHdvcmsgYmFja2VuZC4KLSAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3ODc0Ci0KLSAgICAg
ICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCi0KLSAgICAgICAgTm9ib2R5IHNlZW1zIHRvIGJl
IG1haW50YWluaW5nIHRoZSBDdXJsIGJhY2tlbmQgaW4gV2ViQ29yZSwgdGhlCi0gICAgICAgIEVG
TCBwb3J0IGRldmVsb3BlcnMgYWxsIHNlZW0gdG8gYmUgdXNpbmcgdGhlIFNvdXAgYmFja2VuZCBh
bmQgdGhlCi0gICAgICAgIHBvcnQgaXRzZWxmIGhhcyBtYW55IGZlYXR1cmVzIHdoaWNoIGFyZSBv
bmx5IGltcGxlbWVudGVkIGZvciB0aGUKLSAgICAgICAgbGF0dGVyLgotCi0gICAgICAgICogQ01h
a2VMaXN0c0VmbC50eHQ6IFVuY29uZGl0aW9uYWxseSBidWlsZCBzb3VwLWRlcGVuZGVudCBmaWxl
cwotICAgICAgICBhbmQgYWx3YXlzIGFkZCB0aGUgZ2xpYi9zb3VwIGluY2x1ZGUgZGlyZWN0b3Jp
ZXMgYW5kIGxpYnJhcmllcy4KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlz
cGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UpOgotICAgICAgICBSZW1vdmUgVVNFKFNPVVApIGNoZWNr
cy4KLSAgICAgICAgKiBld2svZXdrX2F1dGguY3BwOgotICAgICAgICAoZXdrX2F1dGhfc2hvd19k
aWFsb2dfY2FsbGJhY2tfc2V0KTogRGl0dG8uCi0gICAgICAgIChld2tfYXV0aF9jcmVkZW50aWFs
c19zZXQpOiBEaXR0by4KLSAgICAgICAgKiBld2svZXdrX2Nvb2tpZXMuY3BwOgotICAgICAgICAo
ZXdrX2Nvb2tpZXNfZmlsZV9zZXQpOiBEaXR0by4KLSAgICAgICAgKGV3a19jb29raWVzX2NsZWFy
KTogRGl0dG8uCi0gICAgICAgIChld2tfY29va2llc19nZXRfYWxsKTogRGl0dG8uCi0gICAgICAg
IChld2tfY29va2llc19jb29raWVfZGVsKTogRGl0dG8uCi0gICAgICAgIChld2tfY29va2llc19j
b29raWVfZnJlZSk6IERpdHRvLgotICAgICAgICAoZXdrX2Nvb2tpZXNfcG9saWN5X3NldCk6IERp
dHRvLgotICAgICAgICAoZXdrX2Nvb2tpZXNfcG9saWN5X2dldCk6IERpdHRvLgotICAgICAgICAq
IGV3ay9ld2tfZnJhbWUuY3BwOgotICAgICAgICAoZXdrX2ZyYW1lX2NlcnRpZmljYXRlX3N0YXR1
c19nZXQpOiBEaXR0by4KLSAgICAgICAgKiBld2svZXdrX21haW4uY3BwOgotICAgICAgICAoX2V3
a19pbml0X2JvZHkpOiBEaXR0by4KLSAgICAgICAgKiBld2svZXdrX25ldHdvcmsuY3BwOgotICAg
ICAgICAoZXdrX25ldHdvcmtfcHJveHlfdXJpX3NldCk6IERpdHRvLgotICAgICAgICAoZXdrX25l
dHdvcmtfcHJveHlfdXJpX2dldCk6IERpdHRvLgotICAgICAgICAoZXdrX25ldHdvcmtfdGxzX2Nl
cnRpZmljYXRlX2NoZWNrX2dldCk6IERpdHRvLgotICAgICAgICAoZXdrX25ldHdvcmtfdGxzX2Nl
cnRpZmljYXRlX2NoZWNrX3NldCk6IERpdHRvLgotICAgICAgICAoZXdrX25ldHdvcmtfdGxzX2Nh
X2NlcnRpZmljYXRlc19wYXRoX2dldCk6IERpdHRvLgotICAgICAgICAoZXdrX25ldHdvcmtfdGxz
X2NhX2NlcnRpZmljYXRlc19wYXRoX3NldCk6IERpdHRvLgotICAgICAgICAoZXdrX25ldHdvcmtf
ZGVmYXVsdF9zb3VwX3Nlc3Npb25fZ2V0KTogRGl0dG8uCi0gICAgICAgICogZXdrL2V3a19uZXR3
b3JrLmg6IFVwZGF0ZSBhcGlkb3ggZm9yCi0gICAgICAgIGV3a19uZXR3b3JrX2RlZmF1bHRfc291
cF9zZXNzaW9uX2dldCgpIG5vdyB0aGF0IGxpYnNvdXAgaXMgdGhlCi0gICAgICAgIG9ubHkgYXZh
aWxhYmxlIGJhY2tlbmQuCi0KLTIwMTItMDItMDkgIEd1c3Rhdm8gTGltYSBDaGF2ZXMgIDxnbGlt
YUBwcm9mdXNpb24ubW9iaT4KLQotICAgICAgICBbRUZMXSBJbnRyb2R1Y2luZyBmdW5jdGlvbnMg
dG8gc2V0IGxvY2FsIHN0b3JhZ2UgZGIgcGF0aCBhbmQgY2xlYXIKLSAgICAgICAgdGhvc2UgZGJz
LgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzcxMDcK
LQotICAgICAgICBUaGlzIHBhdGNoIGV4cG9zZXMgdGhlIHdlYiBsb2NhbCBzdG9yYWdlIHRyYWNr
ZXIgZGF0YWJhc2UgcGF0aAotICAgICAgICBzZXR0aW5nIGNhYmFiaWxpdHksIGludHJvZHVjZWQg
b24gYnVnIDc3MDA2LCB0byB0aGUgRUZMIHBvcnQgb2YKLSAgICAgICAgV2ViS2l0LiBQYXJ0aWN1
bGFybHksIHdlIGhhdmUgb3VyIG93biBzdG9yYWdlIHRyYWNrZXIgY2xpZW50Ci0gICAgICAgIG9i
amVjdCwgdG8gaW5pdGlhbGl6ZSB0aGUgc3RvcmFnZSB0cmFja2VyIGJhY2tlbmQgb24gZXdrX2lu
aXQoKS4KLQotICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4K
LQotICAgICAgICAqIENNYWtlTGlzdHNFZmwudHh0OgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1N0b3JhZ2VUcmFja2VyQ2xpZW50RWZsLmNwcDogQWRkZWQuCi0gICAgICAgIChXZWJDb3JlKToK
LSAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VUcmFja2VyQ2xpZW50RWZsOjpkaXNwYXRjaERpZE1v
ZGlmeU9yaWdpbik6Ci0gICAgICAgIChXZWJDb3JlOjpTdG9yYWdlVHJhY2tlckNsaWVudEVmbDo6
ZGlkRmluaXNoTG9hZGluZ09yaWdpbnMpOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1N0b3Jh
Z2VUcmFja2VyQ2xpZW50RWZsLmg6IEFkZGVkLgotICAgICAgICAoV2ViQ29yZSk6Ci0gICAgICAg
IChTdG9yYWdlVHJhY2tlckNsaWVudEVmbCk6Ci0gICAgICAgICogZXdrL2V3a19tYWluLmNwcDoK
LSAgICAgICAgKHRyYWNrZXJDbGllbnQpOgotICAgICAgICAoX2V3a19pbml0X2JvZHkpOgotICAg
ICAgICAqIGV3ay9ld2tfc2V0dGluZ3MuY3BwOgotICAgICAgICAoZXdrX3NldHRpbmdzX2xvY2Fs
X3N0b3JhZ2VfcGF0aF9zZXQpOgotICAgICAgICAoZXdrX3NldHRpbmdzX2xvY2FsX3N0b3JhZ2Vf
cGF0aF9nZXQpOgotICAgICAgICAoZXdrX3NldHRpbmdzX2xvY2FsX3N0b3JhZ2VfZGF0YWJhc2Vf
Y2xlYXIpOgotICAgICAgICAoZXdrX3NldHRpbmdzX2xvY2FsX3N0b3JhZ2VfZGF0YWJhc2Vfb3Jp
Z2luX2NsZWFyKToKLSAgICAgICAgKiBld2svZXdrX3NldHRpbmdzLmg6Ci0KLTIwMTItMDItMDcg
IEtyenlzenRvZiBDemVjaCAgPGsuY3plY2hAc2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW0VGTF0g
QWRkIG1pc3NpbmcgaW5pdGlhbGl6YXRpb24gb2YgZWRpdGFibGUgdmFyaWFibGUuCi0gICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Nzk0OAotCi0gICAgICAg
IFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgotCi0gICAgICAgIFRoZSB2YWx1ZSBvZiBlZGl0YWJs
ZSBpbiBFd2tfRnJhbWVfU21hcnRfRGF0YSBzdHJ1Y3QgaXMgbm90IHNldC4KLQotICAgICAgICAq
IGV3ay9ld2tfZnJhbWUuY3BwOgotICAgICAgICAoZXdrX2ZyYW1lX2VkaXRhYmxlX3NldCk6Ci0K
LTIwMTItMDItMDYgIEp1bmdKaWsgTGVlICA8anVuZ2ppay5sZWVAc2Ftc3VuZy5jb20+Ci0KLSAg
ICAgICAgW0VGTF0gRGVmaW5lIHRvIHByZXZlbnQgYSBzaW5nbGUgYmFja2luZy1zdG9yZSBhcHBs
aWNhdGlvbiBmcm9tIGNhbGxpbmcgdGhlIHRpbGVkIHZpZXcgZnVuY3Rpb24uCi0gICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Nzg0MgotCi0gICAgICAgIFJl
dmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCi0KLSAgICAgICAgVGhlIGRlZmluZSBwcmV2ZW50cyBh
biBhcHBsaWNhdGlvbiB1c2luZyBzaW5nbGUgYmFja2luZyBzdG9yZSBmcm9tIGNhbGxpbmcgdGls
ZWQgY2FjaGUgZnVuY3Rpb24uCi0gICAgICAgIFRoZSB0aWxlZCBBUElzIG9wZW5lZCB0byBvdXRl
ciBzaG91bGQgY2hlY2sgdGhlIHZpZXcgdHlwZSBiZWZvcmUgYmVpbmcgY2FsbGVkLgotCi0gICAg
ICAgICogZXdrL2V3a19wcml2YXRlLmg6Ci0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAg
ICAgICAgKF9Fd2tfVmlld19Qcml2YXRlX0RhdGEpOgotICAgICAgICAoZXdrX3ZpZXdfZnJhbWVf
dmlld19jcmVhdGlvbl9ub3RpZnkpOgotICAgICAgICAqIGV3ay9ld2tfdmlld190aWxlZC5jcHA6
Ci0gICAgICAgIChld2tfdmlld190aWxlZF91bnVzZWRfY2FjaGVfZ2V0KToKLSAgICAgICAgKGV3
a192aWV3X3RpbGVkX3VudXNlZF9jYWNoZV9zZXQpOgotCi0yMDEyLTAyLTA2ICBKdW5nSmlrIExl
ZSAgPGp1bmdqaWsubGVlQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxdIEFkb3B0IEMrKyBz
dHlsZSB1c2luZyBjYW1lbENhc2UgYW5kIGZ1bGwgdmFyaWFibGUgbmFtZXMuCi0gICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjM3OAotCi0gICAgICAgIFJl
dmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCi0KLSAgICAgICAgTW9kaWZ5IHRoZSBjb2RlIHRvIHVz
ZSBjYW1lbENhc2UgYW5kIHNwZWxsIG91dCB2YXJpYWJsZSBuYW1lcyBpbnN0ZWFkIG9mIHVzaW5n
IGFiYnJldmlhdGlvbnMuCi0gICAgICAgIE1vZGlmeSB0aGUgY29tbWVudHMgd2hpY2ggZG8gbm90
IG1hdGNoIHdpdGggYWN0dWFsIHBhcmFtZXRlcnMgYW5kIGNvcnJlY3QgbWlzc3BlbGxlZCB3b3Jk
cy4KLSAgICAgICAgQWRvcHQgRUZMIENvZGluZyBzdHlsZSBpbiBoZWFkZXIgZmlsZXMuCi0gICAg
ICAgIFRoZSBsb2dpYyBvZiB0aGUgY29kZSBpcyBub3QgY2hhbmdlZC4KLQotICAgICAgICAqIGV3
ay9ld2tfY29va2llcy5oOgotICAgICAgICAqIGV3ay9ld2tfZnJhbWUuY3BwOgotICAgICAgICAo
ZXdrX2ZyYW1lX3NlbGVjdGlvbl9nZXQpOgotICAgICAgICAoZXdrX2ZyYW1lX2ZlZWRfZm9jdXNf
aW4pOgotICAgICAgICAoRVdLUHJpdmF0ZTo6Y29yZUZyYW1lKToKLSAgICAgICAgKiBld2svZXdr
X2ZyYW1lLmg6Ci0gICAgICAgICogZXdrL2V3a19oaXN0b3J5LmNwcDoKLSAgICAgICAgKGV3a19o
aXN0b3J5X2l0ZW1fbmV3KToKLSAgICAgICAgKGV3a19oaXN0b3J5X2l0ZW1fdGl0bGVfZ2V0KToK
LSAgICAgICAgKGV3a19oaXN0b3J5X2l0ZW1fdGl0bGVfYWx0ZXJuYXRlX2dldCk6Ci0gICAgICAg
IChld2tfaGlzdG9yeV9pdGVtX3VyaV9nZXQpOgotICAgICAgICAoZXdrX2hpc3RvcnlfaXRlbV91
cmlfb3JpZ2luYWxfZ2V0KToKLSAgICAgICAgKiBld2svZXdrX25ldHdvcmsuaDoKLSAgICAgICAg
KiBld2svZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUuY3BwOgotICAgICAgICAoX0V3a19UaWxlZF9C
YWNraW5nX1N0b3JlX0l0ZW0pOgotICAgICAgICAoX0V3a19UaWxlZF9CYWNraW5nX1N0b3JlX0Rh
dGEpOgotICAgICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3RpbGVfYXNzb2NpYXRlKToK
LSAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV90aWxlX2Rpc3NvY2lhdGUpOgotICAg
ICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3ByZV9yZW5kZXJfcmVxdWVzdF9jbGVhcik6
Ci0gICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcHJlX3JlbmRlcl9yZXF1ZXN0X3By
b2Nlc3Nfc2luZ2xlKToKLSAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9pdGVtX2Zp
bGwpOgotICAgICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX2l0ZW1fYWRkKToKLSAgICAg
ICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9pdGVtX3Ntb290aF9zY2FsZV9zZXQpOgotICAg
ICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3ZpZXdfY29sc19lbmRfYWRkKToKLSAgICAg
ICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV92aWV3X3Jvd3NfYWxsX2RlbCk6Ci0gICAgICAg
IChfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcmVuZGVyKToKLSAgICAgICAgKF9ld2tfdGlsZWRf
YmFja2luZ19zdG9yZV9tZW1fZGJnKToKLSAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9y
ZV9zaWdfdXNyKToKLSAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9zbWFydF9hZGQp
OgotICAgICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3NtYXJ0X2RlbCk6Ci0gICAgICAg
IChfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfc21hcnRfbW92ZSk6Ci0gICAgICAgIChfZXdrX3Rp
bGVkX2JhY2tpbmdfc3RvcmVfc21hcnRfcmVzaXplKToKLSAgICAgICAgKF9ld2tfdGlsZWRfYmFj
a2luZ19zdG9yZV9yZWNhbGNfcmVuZGVyZXJzKToKLSAgICAgICAgKF9ld2tfdGlsZWRfYmFja2lu
Z19zdG9yZV92aWV3X2RiZyk6Ci0gICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdmll
d193cmFwX3VwKToKLSAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV92aWV3X3dyYXBf
ZG93bik6Ci0gICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdmlld193cmFwX2xlZnQp
OgotICAgICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3ZpZXdfcmVmaWxsKToKLSAgICAg
ICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV92aWV3X3Bvc19hcHBseSk6Ci0gICAgICAgIChf
ZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfc21hcnRfY2FsY3VsYXRlX29mZnNldF9mb3JjZSk6Ci0g
ICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfc21hcnRfY2FsY3VsYXRlX29mZnNldCk6
Ci0gICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfc21hcnRfY2FsY3VsYXRlX3Bvcyk6
Ci0gICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfc21hcnRfY2FsY3VsYXRlKToKLSAg
ICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9zY3JvbGxfZnVsbF9vZmZzZXRfc2V0X2lu
dGVybmFsKToKLSAgICAgICAgKGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3Njcm9sbF9mdWxsX29m
ZnNldF9zZXQpOgotICAgICAgICAoZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfc2Nyb2xsX2Z1bGxf
b2Zmc2V0X2FkZCk6Ci0gICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfem9vbV9zZXRf
aW50ZXJuYWwpOgotICAgICAgICAoZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfem9vbV9zZXQpOgot
ICAgICAgICAoZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfem9vbV93ZWFrX3NldCk6Ci0gICAgICAg
IChld2tfdGlsZWRfYmFja2luZ19zdG9yZV9maXhfb2Zmc2V0cyk6Ci0gICAgICAgIChld2tfdGls
ZWRfYmFja2luZ19zdG9yZV9mbHVzaCk6Ci0gICAgICAgIChld2tfdGlsZWRfYmFja2luZ19zdG9y
ZV9wcmVfcmVuZGVyX3JlZ2lvbik6Ci0gICAgICAgIChld2tfdGlsZWRfYmFja2luZ19zdG9yZV9w
cmVfcmVuZGVyX3JlbGF0aXZlX3JhZGl1cyk6Ci0gICAgICAgICogZXdrL2V3a190aWxlZF9iYWNr
aW5nX3N0b3JlLmg6Ci0gICAgICAgIChfRXdrX1RpbGUpOgotICAgICAgICAqIGV3ay9ld2tfdGls
ZWRfbWF0cml4LmNwcDoKLSAgICAgICAgKF9Fd2tfVGlsZV9NYXRyaXgpOgotICAgICAgICAoX2V3
a190aWxlX21hdHJpeF9jZWxsX2ZyZWUpOgotICAgICAgICAoX2V3a190aWxlX21hdHJpeF90aWxl
X2ZyZWUpOgotICAgICAgICAoZXdrX3RpbGVfbWF0cml4X25ldyk6Ci0gICAgICAgIChld2tfdGls
ZV9tYXRyaXhfZnJlZSk6Ci0gICAgICAgIChld2tfdGlsZV9tYXRyaXhfdW51c2VkX2NhY2hlX2dl
dCk6Ci0gICAgICAgIChld2tfdGlsZV9tYXRyaXhfdGlsZV9leGFjdF9nZXQpOgotICAgICAgICAo
ZXdrX3RpbGVfbWF0cml4X3RpbGVfbmV3KToKLSAgICAgICAgKGV3a190aWxlX21hdHJpeF90aWxl
X3B1dCk6Ci0gICAgICAgIChld2tfdGlsZV9tYXRyaXhfZGJnKToKLSAgICAgICAgKGV3a190aWxl
X21hdHJpeF9mcmVlemUpOgotICAgICAgICAoZXdrX3RpbGVfbWF0cml4X3RoYXcpOgotICAgICAg
ICAqIGV3ay9ld2tfdGlsZWRfbWF0cml4Lmg6Ci0gICAgICAgICogZXdrL2V3a190aWxlZF9tb2Rl
bC5jcHA6Ci0gICAgICAgICh0aWxlX2FjY291bnQpOgotICAgICAgICAoZXdrX3RpbGVfdXBkYXRl
c19wcm9jZXNzKToKLSAgICAgICAgKGV3a190aWxlX3VudXNlZF9jYWNoZV90aWxlX3B1dCk6Ci0g
ICAgICAgIChld2tfdGlsZV91bnVzZWRfY2FjaGVfZGJnKToKLSAgICAgICAgKiBld2svZXdrX3Rp
bGVkX21vZGVsLmg6Ci0gICAgICAgICogZXdrL2V3a191dGlsLmg6Ci0gICAgICAgICogZXdrL2V3
a192aWV3LmNwcDoKLSAgICAgICAgKF9Fd2tfVmlld19Qcml2YXRlX0RhdGEpOgotICAgICAgICAo
X2V3a192aWV3X3NtYXJ0X2ZvY3VzX2luKToKLSAgICAgICAgKF9ld2tfdmlld19zbWFydF9wcmVf
cmVuZGVyX3JlZ2lvbik6Ci0gICAgICAgIChld2tfdmlld19wcmVfcmVuZGVyX3JlZ2lvbik6Ci0g
ICAgICAgIChld2tfdmlld190b29sYmFyc192aXNpYmxlX2dldCk6Ci0gICAgICAgIChld2tfdmll
d19zdGF0dXNiYXJfdmlzaWJsZV9nZXQpOgotICAgICAgICAoZXdrX3ZpZXdfc2Nyb2xsYmFyc192
aXNpYmxlX2dldCk6Ci0gICAgICAgIChld2tfdmlld19tZW51YmFyX3Zpc2libGVfZ2V0KToKLSAg
ICAgICAgKGV3a192aWV3X3pvb21fcmFuZ2Vfc2V0KToKLSAgICAgICAgKiBld2svZXdrX3ZpZXcu
aDoKLSAgICAgICAgKiBld2svZXdrX3ZpZXdfc2luZ2xlLmNwcDoKLSAgICAgICAgKF9ld2tfdmll
d19zaW5nbGVfc21hcnRfcmVwYWludHNfcHJvY2Vzcyk6Ci0gICAgICAgICogZXdrL2V3a192aWV3
X3RpbGVkLmNwcDoKLSAgICAgICAgKF9ld2tfdmlld190aWxlZF9zbWFydF9iYWNraW5nX3N0b3Jl
X2FkZCk6Ci0gICAgICAgIChfZXdrX3ZpZXdfdGlsZWRfc21hcnRfYWRkKToKLSAgICAgICAgKGV3
a192aWV3X3RpbGVkX3VudXNlZF9jYWNoZV9nZXQpOgotICAgICAgICAoZXdrX3ZpZXdfdGlsZWRf
dW51c2VkX2NhY2hlX3NldCk6Ci0KLTIwMTItMDItMDUgIENoYW5nU2VvayBPaCAgPHNoaXZhbWlk
b3dAZ21haWwuY29tPgotCi0gICAgICAgIFtFRkxdIEVuYWJsZSBXZWJHTCB3aXRoIGdseCBiYWNr
ZW5kCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzMw
OAotCi0gICAgICAgIFJldmlld2VkIGJ5IE1hcnRpbiBSb2JpbnNvbi4KLQotICAgICAgICBBY3Rp
dmF0ZWQgV2ViR0wgZmVhdHVyZS4KLQotICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAg
ICAgIChfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKToKLSAgICAgICAgKF9ld2tfdmlld19wcml2X25l
dyk6Ci0KLTIwMTItMDItMDUgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNv
bT4KLQotICAgICAgICBbRUZMXSBSZW1vdmUgZ190aHJlYWRfaW5pdCgpIGNhbGxzCi0gICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzgyOAotCi0gICAgICAg
IFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCi0KLSAgICAgICAgZ190aHJlYWRfaW5pdCBoYXMg
YmVlbiBkZXByZWNhdGVkIHNpbmNlIGdsaWIgMi4zMi4gVGhpcyBmdW5jdGlvbiBpcyBubyBsb25n
ZXIgbmVjZXNzYXJ5LgotICAgICAgICBUaGUgR0xpYiB0aHJlYWRpbmcgc3lzdGVtIGlzIGF1dG9t
YXRpY2FsbHkgaW5pdGlhbGl6ZWQgYXQgdGhlIHN0YXJ0IG9mIHlvdXIgcHJvZ3JhbS4KLQotICAg
ICAgICAqIGV3ay9ld2tfbWFpbi5jcHA6Ci0gICAgICAgIChfZXdrX2luaXRfYm9keSk6Ci0KLTIw
MTItMDItMDIgIEt3YW5nSHl1ayBLaW0gIDxoeXVraS5raW1Ac2Ftc3VuZy5jb20+Ci0KLSAgICAg
ICAgW0VGTF0gQWRkIGNvbnRlbnRzU2l6ZSBmbGFnIGludG8gZXdrX3RpbGVkX2JhY2tpbmdfc3Rv
cmUncyBwcml2YXRlIGRhdGEuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD03NzU4NgotCi0gICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCi0K
LSAgICAgICAgQXMgYm90aCB6b29tIGFuZCBjb250ZW50IHNpemUgY2hhbmdlIGFyZSBpZGVudGlm
aWVkIGJ5IG1vZGVsIGZsYWcsCi0gICAgICAgIGV3a190aWxlZF9iYWNraW5nX3N0b3JlIGNhbiBu
b3QgZGV0ZWN0IHRoZSBjb25mbGljdCBiZXR3ZWVuIHRoZW0uCi0gICAgICAgIEluIG9yZGVyIHRv
IHByZXZlbnQgY29uZmxpY3QgYmV0d2VlbiB6b29tIGFuZCBjb250ZW50cyBzaXplIGNoYW5nZSwK
LSAgICAgICAgY29udGVudHNTaXplIGZsYWcgaXMgbmV3bHkgYWRkZWQuCi0KLSAgICAgICAgKiBl
d2svZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUuY3BwOgotICAgICAgICAoX0V3a19UaWxlZF9CYWNr
aW5nX1N0b3JlX0l0ZW0pOgotICAgICAgICAoX0V3a19UaWxlZF9CYWNraW5nX1N0b3JlX0RhdGEp
OgotICAgICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3NtYXJ0X2NhbGN1bGF0ZSk6Ci0g
ICAgICAgIChld2tfdGlsZWRfYmFja2luZ19zdG9yZV9jb250ZW50c19yZXNpemUpOgotCi0yMDEy
LTAyLTAyICBSYXBoYWVsIEt1Ym8gZGEgQ29zdGEgIDxrdWJvQHByb2Z1c2lvbi5tb2JpPgotCi0g
ICAgICAgIFtFRkxdIFJlbW92ZSBjaGVjayBmb3IgRU5BQkxFX0dUS19QTFVHSU5TX1NVUFBPUlQK
LSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3NjQ3Ci0K
LSAgICAgICAgUmV2aWV3ZWQgYnkgTWFydGluIFJvYmluc29uLgotCi0gICAgICAgIFRoZXJlIGlz
IG5vIGNsZWFyIHJlYXNvbiB3aHkgdGhpcyBjaGVjayB3YXMgaW4gcGxhY2UgKGl0IGNhbWUgd2l0
aCB0aGUKLSAgICAgICAgdXBzdHJlYW1pbmcgb2YgdGhlIHBvcnQpLCBidXQgRU5BQkxFX0dUS19Q
TFVHSU5TX1NVUFBPUlQgaXMgbm90IHNldAotICAgICAgICBhbnl3aGVyZSwgYW5kIHRoZSBidWls
ZCBzeXN0ZW0gZG9lcyBub3QgZXZlbiBjaGVjayBmb3IgdGhlIHByZXNlbmNlIG9mCi0gICAgICAg
IEdUSysgd2hlbiBidWlsZGluZy4KLQotICAgICAgICAqIGV3ay9ld2tfbWFpbi5jcHA6Ci0gICAg
ICAgIChfZXdrX2luaXRfYm9keSk6Ci0KLTIwMTItMDEtMzEgIFJ5dWFuIENob2kgIDxyeXVhbi5j
aG9pQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxdIEFkZCBiYXNpYyBEUlQvRWZsIGltcGxl
bWVudGF0aW9uIHRvIHN1cHBvcnQgdmlld3BvcnQgdGVzdC4KLSAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3MzIwCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkg
QW5kcmVhcyBLbGluZy4KLQotICAgICAgICBBZGQgZHVtcENvbmZpZ3VyYXRpb25Gb3JWaWV3cG9y
dC4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5j
cHA6Ci0gICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OmR1bXBDb25maWd1cmF0aW9u
Rm9yVmlld3BvcnQpOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3Vw
cG9ydEVmbC5oOgotCi0yMDEyLTAxLTMxICBLd2FuZ0h5dWsgS2ltICA8aHl1a2kua2ltQHNhbXN1
bmcuY29tPgotCi0gICAgICAgIFtFRkxdIFNldCBjb250ZW50IGhpbnQgaW5mb3JtYXRpb24gZm9y
IGV3a192aWV3X3NpbmdsZS4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTc3MzE5Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgUnlvc3VrZSBOaXdhLgotCi0g
ICAgICAgIFRoZSBjb250ZW50IGhpbnQgaW5mb3JtYXRpb24gY29ycmVzcG9uZGluZyB0byBvcGVu
Z2xfeDExIGVuZ2luZSBpcyBzZXQKLSAgICAgICAgZm9yIHRoZSBpbWFnZSBvYmplY3Qgd2hpY2gg
ZXdrX3ZpZXdfc2luZ2xlIG93bnMgd2hlbiBldmFzIGlzIGJhc2VkIG9uCi0gICAgICAgIG9wZW5n
bF94MTEgZW5naW5lLgotCi0gICAgICAgICogZXdrL2V3a192aWV3X3NpbmdsZS5jcHA6Ci0gICAg
ICAgIChfZXdrX3ZpZXdfc2luZ2xlX3NtYXJ0X2JhY2tpbmdfc3RvcmVfYWRkKToKLQotMjAxMi0w
MS0zMCAgRXVuc29sIFBhcmsgIDxldW5zb2w0Ny5wYXJrQHNhbXN1bmcuY29tPgotCi0gICAgICAg
IFtFRkxdIERlZmluZSB0aGUgbmFtZXMgb2YgdmlldyBzbWFydCBjbGFzcwotICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYzNzAKLQotICAgICAgICBSZXZp
ZXdlZCBieSBBbmRyZWFzIEtsaW5nLgotCi0gICAgICAgIFN0cmluZ3Mgb2YgZXdrX3RpbGVkX3Zp
ZXcncyBuYW1lIHdlcmUgZGVmaW5lZCBkaWZmZXJlbnRseSwKLSAgICAgICAgc28gdGhlIGRlZmlu
aXRpb25zIHdlcmUgbW9kaWZpZWQgdG8gbWFrZSB1c2VycyBub3QgY29uZnVzZWQuCi0KLSAgICAg
ICAgKiBld2svZXdrX3ByaXZhdGUuaDoKLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAg
ICAgICAqIGV3ay9ld2tfdmlld19zaW5nbGUuY3BwOgotICAgICAgICAoX2V3a192aWV3X3Npbmds
ZV9zbWFydF9jbGFzc19uZXcpOgotICAgICAgICAqIGV3ay9ld2tfdmlld190aWxlZC5jcHA6Ci0g
ICAgICAgIChld2tfdmlld190aWxlZF9zbWFydF9zZXQpOgotICAgICAgICAoX2V3a192aWV3X3Rp
bGVkX3NtYXJ0X2NsYXNzX25ldyk6Ci0KLTIwMTItMDEtMjYgIFRvbWFzeiBNb3Jhd3NraSAgPHQu
bW9yYXdza2lAc2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW0VGTF0gQWRkZWQgbWlzc2luZyBORVRT
Q0FQRV9QTFVHSU5fQVBJIG1hY3JvLgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NzcwOTMKLQotICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5n
LgotCi0gICAgICAgIFRoZSBld2tfdmlld19qc193aW5kb3dfb2JqZWN0X2NsZWFyIGZ1bmN0aW9u
IHNob3VsZCBiZSBpbnNpZGUgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpIG1hY3JvLgotCi0g
ICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLQotMjAxMi0wMS0xNyAgR3l1eW91bmcgS2ltICA8
Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxdIFVzZSBzdGF0aWMgY29u
c3QgaW5zdGVkIG9mICNkZWZpbmUgbWFjcm8uCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03NjQ5OQotCi0gICAgICAgIFJldmlld2VkIGJ5IEhhamltZSBN
b3JpdGEuCi0KLSAgICAgICAgV2ViS2l0IGNvZGluZyBzdHlsZSBwcmVmZXJzIGNvbnN0IHRvICNk
ZWZpbmUuIEVGTCBwb3J0IG5lZWRzIHRvIHVzZSBjb25zdCBpbnN0ZWQgb2YgI2RlZmluZSBtYWNy
by4KLSAgICAgICAgVGhpcyBwYXRjaCByZXBsYWNlIGdsb2JhbCB2YXJpYWJsZXMgZGVmaW5lZCBi
eSAjZGVmaW5lIHdpdGggY29uc3QuCi0KLSAgICAgICAgKiBld2svZXdrX3RpbGVkX2JhY2tpbmdf
c3RvcmUuY3BwOgotICAgICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3NtYXJ0X2FkZCk6
Ci0gICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfem9vbV9zZXRfaW50ZXJuYWwpOgot
ICAgICAgICAqIGV3ay9ld2tfdGlsZWRfYmFja2luZ19zdG9yZS5oOgotICAgICAgICAqIGV3ay9l
d2tfdGlsZWRfbWF0cml4LmNwcDoKLSAgICAgICAgKGV3a190aWxlX21hdHJpeF9uZXcpOgotICAg
ICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChfZXdrX3ZpZXdfcmVwYWludF9hZGQp
OgotICAgICAgICAoX2V3a192aWV3X3JlcGFpbnRzX2ZsdXNoKToKLSAgICAgICAgKF9ld2tfdmll
d19zY3JvbGxfYWRkKToKLSAgICAgICAgKF9ld2tfdmlld19zY3JvbGxzX2ZsdXNoKToKLSAgICAg
ICAgKF9ld2tfdmlld19wcml2X25ldyk6Ci0gICAgICAgIChld2tfdmlld19iYXNlX3NtYXJ0X3Nl
dCk6Ci0gICAgICAgICogZXdrL2V3a192aWV3X3RpbGVkLmNwcDoKLSAgICAgICAgKF9ld2tfdmll
d190aWxlZF9zbWFydF9wcmVfcmVuZGVyX3N0YXJ0KToKLQotMjAxMi0wMS0xMyAgUmFwaGFlbCBL
dWJvIGRhIENvc3RhICA8a3Vib0Bwcm9mdXNpb24ubW9iaT4KLQotICAgICAgICBbRUZMXSBFbWl0
ICJyZXNvdXJjZSxyZXF1ZXN0LHdpbGxzZW5kIiBmcm9tIGV3a192aWV3LgotICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYyOTIKLQotICAgICAgICBSZXZp
ZXdlZCBieSBBbmRyZWFzIEtsaW5nLgotCi0gICAgICAgIE1ha2UgZXdrX3ZpZXcgZGlzcGF0Y2gg
dGhlICJyZXNvdXJjZSxyZXF1ZXN0LHdpbGxzZW5kIiBzaWduYWwgYXMgd2VsbCwKLSAgICAgICAg
c28gdGhhdCBpdCBpcyBwb3NzaWJsZSB0byBrbm93IHdoZXRoZXIgdGhlIHJlcXVlc3QgaXMgZm9y
IHRoZSBtYWluCi0gICAgICAgIGZyYW1lIGl0c2VsZiBvciBmb3IgYW55dGhpbmcgZWxzZS4KLQot
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcDoKLSAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaFdpbGxTZW5kUmVxdWVz
dCk6Ci0gICAgICAgICogZXdrL2V3a192aWV3Lmg6Ci0KLTIwMTItMDEtMTYgIFJ5dWFuIENob2kg
IDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxdIEJ1aWxkIGZpeCB3aGVu
IHVzaW5nIHBhbmdvIGFzIGZvbnQgYmFja2VuZHMuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjM2OAotCi0gICAgICAgIFVucmV2aWV3ZWQgYnVpbGQg
Zml4LgotCi0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDogaW5jbHVkZSBSZWZQdHJDYWlyby5o
Ci0KLTIwMTItMDEtMTMgIExlYW5kcm8gUGVyZWlyYSAgPGxlYW5kcm9AcHJvZnVzaW9uLm1vYmk+
Ci0KLSAgICAgICAgW0VGTF0gU2VjdXJpdHlQb2xpY3kgd2hpdGVsaXN0IGludGVyZmFjZSBzaG91
bGQgYmUgZXhwb3NlZCB0byBFV2ViS2l0Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD03NjA4MgotCi0gICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xp
bmcuCi0KLSAgICAgICAgKiBDTWFrZUxpc3RzRWZsLnR4dDogQWRkZWQgcmVmZXJlbmNlIHRvIGV3
a19zZWN1cml0eV9wb2xpY3kue2NwcCxofS4KLSAgICAgICAgKiBld2svRVdlYktpdC5oOiBJbmNs
dWRlIGV3a19zZWN1cml0eV9wb2xpY3kuaC4KLSAgICAgICAgKiBld2svZXdrX3NlY3VyaXR5X3Bv
bGljeS5jcHA6IEFkZGVkLgotICAgICAgICAoZXdrX3NlY3VyaXR5X3BvbGljeV93aGl0ZWxpc3Rf
b3JpZ2luX2FkZCk6IEltcGxlbWVudGVkIHRoaW4gbGF5ZXIgYXJvdW5kIFNlY3VyaXR5UG9saWN5
OjphZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeSgpLgotICAgICAgICAoZXdrX3NlY3VyaXR5
X3BvbGljeV93aGl0ZWxpc3Rfb3JpZ2luX2RlbCk6IEltcGxlbWVudGVkIHRoaW4gbGF5ZXIgYXJv
dW5kIFNlY3VyaXR5UG9saWN5OjpyZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeSgpLgot
ICAgICAgICAoZXdrX3NlY3VyaXR5X3BvbGljeV93aGl0ZWxpc3Rfb3JpZ2luX3Jlc2V0KTogSW1w
bGVtZW50ZWQgdGhpbiBsYXllciBhcm91bmQgU2VjdXJpdHlQb2xpY3k6OnJlc2V0T3JpZ2luQWNj
ZXNzV2hpdGVsaXN0cygpLgotICAgICAgICAqIGV3ay9ld2tfc2VjdXJpdHlfcG9saWN5Lmg6IEFk
ZGVkLgotCi0yMDEyLTAxLTEzICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5j
b20+Ci0KLSAgICAgICAgW0VGTF0gUmVtb3ZlIGV4dGVybiAiQyIgZnJvbSBld2tfcHJpdmF0ZS5o
Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjI1MAot
Ci0gICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCi0KLSAgICAgICAgZXdrX3ByaXZh
dGUuaCBkZWZpbmVzIGludGVybmFsIGZ1bmN0aW9ucyB1c2VkIGJ5IFdlYktpdCBpdHNlbGYuIFRo
ZXJlIGlzIG5vIGNoYW5jZSB0byBiZSB1c2VkIGJ5IEMgYXBwbGljYXRpb24uCi0gICAgICAgIFNv
LCBleHRlcm4gIkMiIGtleXdvcmQgaXMgdW5uZWVkZWQgaW4gZXdrX3ByaXZhdGUuaC4KLQotICAg
ICAgICAqIGV3ay9ld2tfcHJpdmF0ZS5oOgotCi0yMDEyLTAxLTEzICBHcnplZ29yeiBDemFqa293
c2tpICA8Zy5jemFqa293c2tpQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxdIEFkZCAnQ29w
eSBJbWFnZSBBZGRyZXNzJyB0byBjb250ZXh0IG1lbnUuCi0gICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjE1MwotCi0gICAgICAgIFJldmlld2VkIGJ5IEFu
ZHJlYXMgS2xpbmcuCi0KLSAgICAgICAgQWRkcyBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0NP
UFlfSU1BR0VfVVJMX1RPX0NMSVBCT0FSRCB0byBFd2tfQ29udGV4dF9NZW51X0FjdGlvbiB0byBz
eW5jaHJvbml6ZSBpdCB3aXRoIENvbnRleHRNZW51SXRlbS5oCi0KLSAgICAgICAgKiBld2svZXdr
X2NvbnRleHRtZW51Lmg6Ci0KLTIwMTItMDEtMTMgIEt3YW5nSHl1ayBLaW0gIDxoeXVraS5raW1A
c2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW0VGTF0gQWRkIHZpc2libGUgZmllbGQgaW50byBld2tf
dGlsZWRfYmFja2luZ19zdG9yZSdzIGRhdGEuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03NjE2NQotCi0gICAgICAgIFJldmlld2VkIGJ5IE5pa29sYXMg
WmltbWVybWFubi4KLQotICAgICAgICBVc2luZyBvZiBldmFzX29iamVjdF92aXNpYmxlX2dldCgp
IEFQSSBjYW4ndCBndXJhbnRlZSB0aGUgY29ycmVjdG5lc3Mgb2YKLSAgICAgICAgZXZhc19vYmpl
Y3QncyB2aXNpYmxlIHN0YXR1cyBpZiBpdCdzIGNhbGxlZCBpbnNpZGUgb2YgZXZhc19vYmplY3Qn
cwotICAgICAgICBzbWFydF9zaG93KCkgbWV0aG9kLgotICAgICAgICBTbywgYSB2aXNpYmxlIGZs
YWcgZm9yIHRoZSBld2tfdGlsZWRfYmFja2luZ19zdG9yZSBpcyBhZGRlZC4KLSAgICAgICAgSW4g
YWRkaXRpb24sIGFzIHRpbGVzIGFyZSBub3QgdmlzaWJsZSwgZXdrX3RpbGVkX2JhY2tpbmdfc3Rv
cmUgd2lsbCBwdXNoCi0gICAgICAgIGl0cyBvd24gdGlsZXMgaW50byB0aGUgY2FjaGUgd2hlbiBp
dCBkaXNhcGVhci4KLQotICAgICAgICAqIGV3ay9ld2tfdGlsZWRfYmFja2luZ19zdG9yZS5jcHA6
Ci0gICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdXBkYXRlc19wcm9jZXNzKToKLSAg
ICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9pdGVtX3Byb2Nlc3NfaWRsZXJfc3RhcnQp
OgotICAgICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX2l0ZW1fZmlsbCk6Ci0gICAgICAg
IChfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfc21hcnRfbWVtYmVyX2FkZCk6Ci0gICAgICAgIChf
ZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfc21hcnRfc2hvdyk6Ci0gICAgICAgIChfZXdrX3RpbGVk
X2JhY2tpbmdfc3RvcmVfc21hcnRfaGlkZSk6Ci0KLTIwMTItMDEtMTMgIEt3YW5nSHl1ayBLaW0g
IDxoeXVraS5raW1Ac2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW0VGTF0gVW51c2VkIGNvZGUgY2xl
YW51cCBvbiBld2tfdGlsZWRfbW9kZWwuY3BwLgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYwMzEKLQotICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtl
IE5pd2EuCi0KLSAgICAgICAgUmVtb3ZlIHVudXNlZCBjb2RlIGZyb20gZXdrX3RpbGVkX21vZGVs
LmNwcC4KLQotICAgICAgICAqIGV3ay9ld2tfdGlsZWRfbW9kZWwuY3BwOgotCi0yMDEyLTAxLTEy
ICBHcnplZ29yeiBDemFqa293c2tpICA8Zy5jemFqa293c2tpQHNhbXN1bmcuY29tPgotCi0gICAg
ICAgIFtFRkxdIE1vdmUgbWFjcm8gY2hlY2tpbmcgdG8gZnVuY3Rpb25zJyBkZWZpbml0aW9uIGlu
IGV3a19qcy5jcHAuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03NjAzNwotCi0gICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCi0KLSAgICAg
ICAgTW92ZXMgbWFjcm8gY2hlY2tpbmcgdG8gZnVuY3Rpb25zJyBkZWZpbml0aW9uIGluc3RlYWQg
b2YgZHVwbGljYXRlIHRoZW0gaW4gc291cmNlIGRlcGVuZGluZyBvbiBtYWNybyB2YWx1ZS4KLSAg
ICAgICAgSXQncyBrbm93biBwcmFjdGljZSBpbiBXZWJLaXQgYW5kIEVGTCBwb3J0LgotICAgICAg
ICBEdXBsaWNhdGluZyBmdW5jdGlvbnMgaW4gdGhlIHNhbWUgZmlsZSB3aG9zZSByZXR1cm4gdmFs
dWUgaXMgZGlmZmVyZW50IG1heSBjb25mdXNlIHVzZXIsCi0gICAgICAgIGVzcGVjaWFsbHkgaWYg
bWFjcm8gaXNuJ3QgaW5jbHVkZWQgaW4gYSBwYXRjaC4KLQotICAgICAgICAqIGV3ay9ld2tfanMu
Y3BwOgotICAgICAgICAoZXdrX2pzX29iamVjdF9uZXcpOgotICAgICAgICAoZXdrX2pzX29iamVj
dF9mcmVlKToKLSAgICAgICAgKGV3a19qc19vYmplY3Rfdmlld19nZXQpOgotICAgICAgICAoZXdr
X2pzX29iamVjdF9wcm9wZXJ0aWVzX2dldCk6Ci0gICAgICAgIChld2tfanNfb2JqZWN0X25hbWVf
Z2V0KToKLSAgICAgICAgKGV3a19qc19vYmplY3RfaW52b2tlKToKLSAgICAgICAgKGV3a19qc19v
YmplY3RfdHlwZV9nZXQpOgotICAgICAgICAoZXdrX2pzX29iamVjdF90eXBlX3NldCk6Ci0gICAg
ICAgIChld2tfanNfdmFyaWFudF9mcmVlKToKLSAgICAgICAgKGV3a19qc192YXJpYW50X2FycmF5
X2ZyZWUpOgotCi0yMDEyLTAxLTEyICBLd2FuZ0h5dWsgS2ltICA8aHl1a2kua2ltQHNhbXN1bmcu
Y29tPgotCi0gICAgICAgIFtFRkxdIE1vZGlmeSBzb21lIEFQSSdzIGltcGxlbWVudGF0aW9uIHRv
IGxldCBpdCBkaXJlY3RseSBwYXNzIEVpbmFfUmVjdGFuZ2xlIGludG8gSW50UmVjdC4KLSAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc1Njk1Ci0KLSAgICAg
ICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KLQotICAgICAgICBEZXJlZmVyZW5jZSBFaW5h
X1JlY3RhbmdsZSBwb2ludGVycyBzbyB0aGUgc2hvcnRlciBJbnRSZWN0IGNvbnN0cnVjdG9yIGNh
biBiZSB1c2VkLgotCi0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAgKGV3a192
aWV3X3BhaW50X2NvbnRleHRfY2xpcCk6Ci0gICAgICAgIChld2tfdmlld19wYWludF9jb250ZXh0
X3BhaW50KToKLSAgICAgICAgKGV3a192aWV3X3BhaW50X2NvbnRleHRfcGFpbnRfY29udGVudHMp
OgotICAgICAgICAoZXdrX3ZpZXdfcGFpbnQpOgotICAgICAgICAoZXdrX3ZpZXdfcGFpbnRfY29u
dGVudHMpOgotCi0yMDEyLTAxLTExICBKdW5nSmlrIExlZSAgPGp1bmdqaWsubGVlQHNhbXN1bmcu
Y29tPgotCi0gICAgICAgIFtFRkxdIFJlZmFjdG9yIHNpbmdsZSBiYWNraW5nIHN0b3JlIHNjcm9s
bCBjb2RlLgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NzUyNDMKLQotICAgICAgICBSZXZpZXdlZCBieSBab2x0YW4gSGVyY3plZy4KLQotICAgICAgICBS
ZW1vdmUgdGhlIGR1cGxpY2F0ZWQgY29kZSBhbmQgcmVmYWN0b3IgdGhlIHNjcm9sbCBwcm9jZWR1
cmUuCi0gICAgICAgIFdoZXJldmVyIHRoZSBwYWdlIGlzIHNjcm9sbGVkLCB0aGVyZSBhcmUgb25l
IHNjcmVlbiBjb3B5IGFuZCB0d28gdXBkYXRlcy4KLSAgICAgICAgVGhpcyBwYXRjaCBvcHRpbWlz
ZXMgdGhlIHNjcm9sbCBwcm9jZWR1cmUgYnkgbGVzcyBjYWxjdWxhdGlvbi4KLQotICAgICAgICAq
IGV3ay9ld2tfdmlld19zaW5nbGUuY3BwOgotICAgICAgICAoX2V3a192aWV3X3NjcmVlbl9tb3Zl
KToKLSAgICAgICAgKF9ld2tfdmlld19zaW5nbGVfc2Nyb2xsX3Byb2Nlc3Nfc2luZ2xlKToKLQot
MjAxMi0wMS0xMSAgS3dhbmdIeXVrIEtpbSAgPGh5dWtpLmtpbUBzYW1zdW5nLmNvbT4KLQotICAg
ICAgICBbRUZMXSBGaXggcGFnZSByZW5kZXJpbmcgaXNzdWUgb24gZXdrX3ZpZXdfdGlsZWQuCi0g
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NTY4NgotCi0g
ICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCi0KLSAgICAgICAgQXMgZm9yIG5vdyB0
aGUgZGlzY2FyZCBvZiBld2tfdGlsZWRfYmFja2luZ19zdG9yZSBkb2Vzbid0IHJlc2V0IGl0cyBv
d24gY29udGVudHMgc2l6ZSBpbmZvcm1hdGlvbgotICAgICAgICBhbmQgZXdrX3RpbGVkX2JhY2tp
bmdfc3RvcmUganVzdCBpZ25vcmVzIHRoZSByZXF1ZXN0IGlmIG5ldyBjb250ZW50cyBzaXplIGNo
YW5nZSByZXF1ZXN0IHdvdWxkIGNvbnRhaW4KLSAgICAgICAgdGhlIHNhbWUgc2l6ZSBjb21wYXJl
ZCB0byB0aGUgb25lIHRoYXQgaXQgb3ducywKLSAgICAgICAgY29udGVudHMgc2l6ZSBjaGFuZ2Ug
cmVxdWVzdCBjb21pbmcgZnJvbSBDaHJvbWVDbGllbnRFZmw6OmNvbnRlbnRzU2l6ZUNoYW5nZWQo
KSBBUEkgY2FuIGJlIHNraXBwZWQKLSAgICAgICAgYW5kIHRoZXJlZm9yZSB3ZWIgcGFnZSBjYW4n
dCBiZSBwcmVzZW50ZWQgcHJvcGVybHkuCi0gICAgICAgIEluIG9yZGVyIHRvIHJlc29sdmUgdGhp
cywgSSBqdXN0IGFkZCBjb2RlIHRvIHJlc2V0IGNvbnRlbnRzIHNpemUgaW5mb3JtYXRpb24gd2hp
Y2ggZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUgb3ducwotICAgICAgICB3aGVuIGl0IGRpc2NhcmRz
IGl0cyBvd24gZGF0YS4KLQotICAgICAgICAqIGV3ay9ld2tfdGlsZWRfYmFja2luZ19zdG9yZS5j
cHA6Ci0gICAgICAgIChld2tfdGlsZWRfYmFja2luZ19zdG9yZV9mbHVzaCk6Ci0KLTIwMTItMDEt
MTAgIFRvbWFzeiBNb3Jhd3NraSAgPHQubW9yYXdza2lAc2Ftc3VuZy5jb20+Ci0KLSAgICAgICAg
W0VGTF0gQWRkZWQgc21hcnQgcG9pbnRlcnMgdG8gRXdrX1ZpZXdfUGFpbnRfQ29udGV4dCBjbGFz
cyBhbmQgZG9uZSBtaW5vciByZWZhY3RvcmluZy4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTc1ODM3Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgUnlvc3Vr
ZSBOaXdhLgotCi0gICAgICAgIENoYW5nZWQgZ3JhcGhpY0NvbnRleHQgcmF3IHBvaW50ZXIgdG8g
T3duUHRyIHNtYXJ0IHBvaW50ZXIuCi0gICAgICAgIFJlbmFtZWQgY3IgdG8gY2Fpcm8gYW5kIG1h
ZGUgaXQgYSBSZWZQdHIuCi0KLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAo
ZXdrX3ZpZXdfcGFpbnRfY29udGV4dF9uZXcpOiBBZGp1c3QgdG8gYXV0byBwb2ludGVycyB1c2Uu
Ci0gICAgICAgIChld2tfdmlld19wYWludF9jb250ZXh0X2ZyZWUpOiBSZW1vdmVkIGV4cGxpY2l0
IHJhdyBwb2ludGVycyBkZWxldGUuCi0gICAgICAgIEFkanVzdCB0byBhdXRvIHBvaW50ZXJzIHVz
ZToKLSAgICAgICAgKGV3a192aWV3X3BhaW50X2NvbnRleHRfc2F2ZSk6Ci0gICAgICAgIChld2tf
dmlld19wYWludF9jb250ZXh0X3Jlc3RvcmUpOgotICAgICAgICAoZXdrX3ZpZXdfcGFpbnRfY29u
dGV4dF9jbGlwKToKLSAgICAgICAgKGV3a192aWV3X3BhaW50X2NvbnRleHRfcGFpbnQpOgotICAg
ICAgICAoZXdrX3ZpZXdfcGFpbnRfY29udGV4dF9wYWludF9jb250ZW50cyk6Ci0KLTIwMTItMDEt
MDkgIFJhcGhhZWwgS3VibyBkYSBDb3N0YSAgPGt1Ym9AcHJvZnVzaW9uLm1vYmk+Ci0KLSAgICAg
ICAgW0VGTF0gQWRkIGdldHRlciBmb3IgRXdrX0pTX09iamVjdDo6dmlldy4KLSAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc1ODY4Ci0KLSAgICAgICAgUmV2
aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KLQotICAgICAgICBTbyBmYXIgdGhlIHZpZXcgYXNzb2Np
YXRlZCB3aXRoIGEgZ2l2ZW4gSlMgb2JqZWN0IHdhcyBhIHByaXZhdGUKLSAgICAgICAgcHJvcGVy
dHkgb25seSBhY2Nlc3NpYmxlIHRvIGV3ayBpdHNlbGYuIFRoaXMgZG9lcyBub3QgbWFrZSBtdWNo
IHNlbnNlLAotICAgICAgICBhcyBvbmUgb2Z0ZW4gbmVlZHMgdG8ga25vdyB3aGljaCB2aWV3IGEg
Y2VydGFpbiBtZXRob2Qgd2FzIGludm9rZWQKLSAgICAgICAgZnJvbSwgZm9yIGV4YW1wbGUuCi0K
LSAgICAgICAgKiBld2svZXdrX2pzLmNwcDoKLSAgICAgICAgKGV3a19qc19vYmplY3Rfdmlld19n
ZXQpOgotICAgICAgICAqIGV3ay9ld2tfanMuaDoKLQotMjAxMi0wMS0wNiAgSnVuZ0ppayBMZWUg
IDxqdW5namlrLmxlZUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBbRUZMXSBBZGQgbmV3IHByZS1y
ZW5kZXJpbmcgY29kZS4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTczNDMwCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgWm9sdGFuIEhlcmN6ZWcuCi0KLSAg
ICAgICAgQWRkIG5ldyBwcmUtcmVuZGVyaW5nIGNvZGUgdG8gcHJlLXJlbmRlciB0aGUgdmlldyBh
cmVhIG1vcmUgZWZmaWNpZW50bHkuCi0gICAgICAgIEF0IGZpcnN0IGZpbmQgY2VudGVyZWQgdmll
dyBwb3NpdGlvbiB3aGVyZSBiYWNraW5nIHN0b3JlIHN0YXJ0cyB0byBxdWV1aW5nIHRoZSByZW5k
ZXIgcmVxdWVzdCBmcm9tLgotICAgICAgICBBbmQgYXBwZW5kIHRoZSByZXF1ZXN0IGludG8gdGhl
IHRpbGVkIGJhY2tpbmcgc3RvcmUgaW4gc3BpcmFsIG9yZGVyLgotCi0gICAgICAgICogZXdrL2V3
a19wcml2YXRlLmg6Ci0gICAgICAgICogZXdrL2V3a190aWxlZF9iYWNraW5nX3N0b3JlLmNwcDoK
LSAgICAgICAgKGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3ByZV9yZW5kZXJfdGlsZV9hZGQpOgot
ICAgICAgICAoZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcHJlX3JlbmRlcl9zcGlyYWxfcXVldWUp
OgotICAgICAgICAqIGV3ay9ld2tfdGlsZWRfYmFja2luZ19zdG9yZS5oOgotICAgICAgICAqIGV3
ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChfZXdrX3ZpZXdfc21hcnRfcHJlX3JlbmRlcl9zdGFy
dCk6Ci0gICAgICAgIChld2tfdmlld19iYXNlX3NtYXJ0X3NldCk6Ci0gICAgICAgIChld2tfdmll
d19wcmVfcmVuZGVyX3N0YXJ0KToKLSAgICAgICAgKiBld2svZXdrX3ZpZXcuaDoKLSAgICAgICAg
KiBld2svZXdrX3ZpZXdfdGlsZWQuY3BwOgotICAgICAgICAoX2V3a192aWV3X3RpbGVkX3JlY3Rf
Y29sbGlzaW9uX2NoZWNrKToKLSAgICAgICAgKF9ld2tfdmlld190aWxlZF9yZWN0X2NvbGxpc2lv
bl9yZXNvbHZlKToKLSAgICAgICAgKF9ld2tfdmlld190aWxlZF9zbWFydF9wcmVfcmVuZGVyX3N0
YXJ0KToKLSAgICAgICAgKGV3a192aWV3X3RpbGVkX3NtYXJ0X3NldCk6Ci0KLTIwMTItMDEtMDUg
IEt3YW5nSHl1ayBLaW0gIDxoeXVraS5raW1Ac2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW0VGTF0g
SW52YWxpZGF0aW9uIHJlcXVlc3QgZm9yIGV3a192aWV3IGNhbiBiZSBkaXNjYXJkZWQgd2l0aG91
dCByZW5kZXJpbmcuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03MTU2NAotCi0gICAgICAgIFJldmlld2VkIGJ5IEhhamltZSBNb3JpdGEuCi0KLSAgICAg
ICAgQXMgZXdrX3ZpZXcgZGlzY2FyZHMgYSBxdWV1ZSBmb3IgaW52YWxpZGF0aW9uIHJlcXVlc3Rz
Ci0gICAgICAgIGFzIHNvb24gYXMgaXQgcHJvY2VlZHMgdGhlIHJlcGFpbnQgc3RlcCwgdGhlIG5l
d2x5IHByb2R1Y2VkIGludmFsaWRhdGlvbiByZXF1ZXN0cwotICAgICAgICBmcm9tIGV3a192aWV3
X2xheW91dF9pZl9uZWVkZWRfcmVjdXJzaXZlIEFQSSBjYW4gYmUgZGlzY2FyZGVkCi0gICAgICAg
IGFuZCB1bnBhaW50ZWQgZGlydHkgYXJlYSBjYW4gb2NjdXIuCi0gICAgICAgIEFzIHRoaXMgaXNz
dWUgaXMganVzdCBjYXVzZWQgYnkgdXNlIG9mIGZsdXNoIEFQSSBpbiByZXBhaW50IHN0ZXAsCi0g
ICAgICAgIChpbnRlcm5hbCBBUEkpIGV3a192aWV3X3JlcGFpbnRzX2dldCBpcyByZXBsYWNlZCB3
aXRoIGV3a192aWV3X3JlcGFpbnRzX3BvcAotICAgICAgICBpbiBvcmRlciB0byBtYWtlIHN1cmUg
dGhhdCBvbGQgaW52YWxpZGF0aW9uIHJlcXVlc3RzIGFyZSByZW1vdmVkIGZyb20gcXVldWUuCi0g
ICAgICAgIEFuZCBpbiBhZGRpdGlvbiB0byB0aGF0LCBld2tfdmlld19yZXBhaW50X2FkZCBpcyBt
b2RpZmllZAotICAgICAgICBpbiBvcmRlciB0byBsZXQgcXVldWUgb2YgaW52YWxpZGF0aW9uIHJl
cXVlc3RzIGtlZXAgYSBwcm9wZXIgc2l6ZS4KLSAgICAgICAgQXMgYSByZXN1bHQgZmx1c2ggQVBJ
IHdvbid0IGJlIHVzZWQgZm9yIHRoZSByZXBhaW50IHN0ZXAuCi0KLSAgICAgICAgKiBld2svZXdr
X3ByaXZhdGUuaDoKLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoX2V3a192
aWV3X3JlcGFpbnRfYWRkKToKLSAgICAgICAgKF9ld2tfdmlld19zbWFydF9jYWxjdWxhdGUpOgot
ICAgICAgICAoZXdrX3ZpZXdfcmVwYWludHNfcG9wKToKLSAgICAgICAgKiBld2svZXdrX3ZpZXdf
c2luZ2xlLmNwcDoKLSAgICAgICAgKF9ld2tfdmlld19zaW5nbGVfc21hcnRfcmVwYWludHNfcHJv
Y2Vzcyk6Ci0gICAgICAgICogZXdrL2V3a192aWV3X3RpbGVkLmNwcDoKLSAgICAgICAgKF9ld2tf
dmlld190aWxlZF9zbWFydF9yZXBhaW50c19wcm9jZXNzKToKLQotMjAxMi0wMS0wNCAgS3dhbmdI
eXVrIEtpbSAgPGh5dWtpLmtpbUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBbRUZMXSBSZWZhY3Rv
ciB0aGUgd2F5IHVzaW5nIGNhaXJvIGluIGV3a190aWxlZF9iYWNraW5nX3N0b3JlLgotICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ5OTMKLQotICAgICAg
ICBSZXZpZXdlZCBieSBOaWtvbGFzIFppbW1lcm1hbm4uCi0KLSAgICAgICAgRm9yIG5vdyB0aGVy
ZSBhcmUgY2Fpcm8gcmVsYXRlZCBjb2RlIHNjYXR0ZXJlZCBhcm91bmQgdGhlIGV3a190aWxlZF9i
YWNraW5nX3N0b3JlLgotICAgICAgICBGcm9tIHRoZSBwb2ludCBvZiBjb2RlIGNvbXBsZXhpdHkg
dmlldywgaXQgZG9lc24ndCBsb29rIGdvb2QgYW5kIEkgY291bGRuJ3Qgbm90aWNlIGFueSBiZW5l
Zml0IG9mIGl0LgotICAgICAgICBTbywgdGhpcyBwYXRjaCB3aWxsIGxldCBjYWlybyByZWxhdGVk
IGNvZGUgYmUgdXNlZCBvbmx5IGZvciBwYWludGluZyBvcGVyYXRpb24uCi0KLSAgICAgICAgKiBl
d2svZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUuaDoKLSAgICAgICAgKiBld2svZXdrX3RpbGVkX21h
dHJpeC5jcHA6Ci0gICAgICAgIChld2tfdGlsZV9tYXRyaXhfdGlsZV9uZXcpOgotICAgICAgICAq
IGV3ay9ld2tfdGlsZWRfbW9kZWwuY3BwOgotICAgICAgICAoZXdrX3RpbGVfbmV3KToKLSAgICAg
ICAgKGV3a190aWxlX2ZyZWUpOgotICAgICAgICAqIGV3ay9ld2tfdmlld190aWxlZC5jcHA6Ci0g
ICAgICAgIChfZXdrX3ZpZXdfdGlsZWRfcmVuZGVyX2NiKToKLQotMjAxMi0wMS0wMyAgSm9uIExl
ZSAgPGpvbmxlZUBhcHBsZS5jb20+Ci0KLSAgICAgICAgTGVhayBvZiBXZWJOb3RpZmljYXRpb25D
bGllbnQgd2hlbiBwYWdlIGlzIGRlc3Ryb3llZAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ5ODAKLSAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEwNjEx
MjMxPgotCi0gICAgICAgIFJldmlld2VkIGJ5IE1hcmsgUm93ZS4KLQotICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChX
ZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6Om5vdGlmaWNhdGlvbkNvbnRy
b2xsZXJEZXN0cm95ZWQpOiBTdHViIGltcGxlbWVudGF0aW9uLCBiZWNhdXNlCi0gICAgICAgIHRo
ZSBub3RpZmljYXRpb24gcHJlc2VudGVyIGlzIHVuaW1wbGVtZW50ZWQuCi0gICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsLmg6Ci0KLTIwMTItMDEt
MDIgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBb
RUZMXSBSZW1vdmUgd2hpdGVzcGFjZS9kZWNsYXJhdGlvbiBzdHlsZSBleGNlcHRpb24KLSAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc1NDI0Ci0KLSAgICAg
ICAgUmV2aWV3ZWQgYnkgRGF2aWQgTGV2aW4uCi0KLSAgICAgICAgRUZMIHBvcnQgZG9lc24ndCBu
ZWVkIHRvIGF2b2lkICp3aGl0ZXNwYWNlL2RlY2xhcmF0aW9uKiBleGNlcHRpb24gYmVjYXVzZSBv
ZiBjb2RpbmcKLSAgICAgICAgc3R5bGUgY2hhbmdlLiBIb3dldmVyLCBFV2ViTGF1bmNoZXIgYW5k
IE1pbmlCcm93c2VyIG5lZWQgdG8gdXNlIEVGTCBjb2Rpbmcgc3R5bGUgYmVjYXVzZQotICAgICAg
ICB0aGV5IGFyZSBFRkwgYXBwbGljYXRpb24uCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudEVmbC5jcHA6Ci0gICAgICAgICogZXdrL2V3a19mcmFtZS5jcHA6Ci0g
ICAgICAgIChld2tfZnJhbWVfZmVlZF90b3VjaF9ldmVudCk6Ci0gICAgICAgICogZXdrL2V3a190
aWxlZF9tYXRyaXguY3BwOgotICAgICAgICAoZXdrX3RpbGVfbWF0cml4X2ludmFsaWRhdGUpOgot
ICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0KLTIwMTItMDEtMDEgIEV1bm1pIExlZSAgPGV1
bm1pMTUubGVlQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxdIE1vdmUgZnVuY3Rpb24gdG8g
Z2V0IGRwaSB0byB0aGUgV2ViQ29yZS9wbGF0Zm9ybS9lZmwvRWZsU2NyZWVuVXRpbGl0aWVzLmNw
cC4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc1Mjky
Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KLQotICAgICAgICBNb3ZlIGV3
a191dGlsX2RwaV9nZXQoKSBmdW5jdGlvbiBpbiB0aGUgZXdrX3V0aWwuY3BwIHRvIHRoZQotICAg
ICAgICBXZWJDb3JlL3BsYXRmb3JtL2VmbC9FZmxTY3JlZW5VdGlsaXRpZXMuY3BwIGluIG9yZGVy
IHRvIHVzZSBpdCBpbiB0aGUgV2ViS2l0Mi4KLSAgICAgICAgVGhlIGZ1bmN0aW9uJ3MgbmFtZSBp
cyBjaGFuZ2VkIHRvIGdldERQSSgpLgotCi0gICAgICAgICogZXdrL2V3a19wcml2YXRlLmg6Ci0g
ICAgICAgICogZXdrL2V3a191dGlsLmNwcDoKLSAgICAgICAgKGV3a191dGlsX2ltYWdlX2Zyb21f
Y2Fpcm9fc3VyZmFjZV9hZGQpOgotICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAg
IChfZXdrX3ZpZXdfdmlld3BvcnRfYXR0cmlidXRlc19jb21wdXRlKToKLQotMjAxMS0xMi0yNyAg
SnVuZ0ppayBMZWUgIDxqdW5namlrLmxlZUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBbRUZMXSBS
ZW1vdmUgZHVwbGljYXRlIGNvZGUgYW5kIHJlbW92ZSBlbnRyeSBhZnRlciBmcmVlaW5nIHRoZSBt
YXRyaXguCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03
NTA3MwotCi0gICAgICAgIFJldmlld2VkIGJ5IFJ5b3N1a2UgTml3YS4KLQotICAgICAgICBSZW1v
dmUgZHVwbGljYXRlIGV3a190aWxlX3VudXNlZF9jYWNoZV9mcmVlemUgY29kZS4KLSAgICAgICAg
RW50cnkgbWF0cml4IHNob3VsZCBmcmVlIGZpcnN0IGJlZm9yZSByZW1vdmluZyBlbnRyeSBpbiBp
bmxpc3QsCi0gICAgICAgIGJlY2F1c2UgaW4gZWluYV9tYXRyaXhzcGFyY2VfZnJlZSBjYWxsYmFj
ayBlbnRyeSBwb2ludGVyIGlzIHJlZmVyZW5jZWQgdG8gZGVjcmVhc2UgdGhlIHJlZmVyZW5jZSBj
b3VudC4KLQotICAgICAgICAqIGV3ay9ld2tfdGlsZWRfbWF0cml4LmNwcDoKLSAgICAgICAgKGV3
a190aWxlX21hdHJpeF9mcmVlKToKLQotMjAxMS0xMi0yNiAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNo
b2lAc2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW0VGTF0gTGFzdCBwYXJhbWV0ZXIgb2YgZXdrX3Zp
ZXdfc2Nyb2xsIGlzIGFsd2F5cyB0cnVlLgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NzUxNTcKLQotICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEts
aW5nLgotCi0gICAgICAgIFJlbW92ZSB1bm5lY2Vzc2FyeSBwYXJhbWV0ZXIgaW4gZXdrX3ZpZXdf
c2Nyb2xsIGFuZCByZWxhdGVkIGNvZGUsIGJlY2F1c2UKLSAgICAgICAgaXQncyBhbHdheXMgdHJ1
ZSBhbmQgZXdrX3ZpZXdfdGlsZSBjYW4gc2Nyb2xsIHdoZW4gaXQgaXMgb25seSB0cnVlLgotCi0g
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdl
YkNvcmU6OkNocm9tZUNsaWVudEVmbDo6c2Nyb2xsKToKLSAgICAgICAgKiBld2svZXdrX3ByaXZh
dGUuaDoKLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoX2V3a192aWV3X3Nj
cm9sbF9hZGQpOgotICAgICAgICAoZXdrX3ZpZXdfc2Nyb2xsKToKLSAgICAgICAgKiBld2svZXdr
X3ZpZXcuaDoKLSAgICAgICAgKiBld2svZXdrX3ZpZXdfdGlsZWQuY3BwOgotICAgICAgICAoX2V3
a192aWV3X3RpbGVkX3NtYXJ0X3Njcm9sbHNfcHJvY2Vzcyk6Ci0KLTIwMTEtMTItMjMgIFJhcGhh
ZWwgS3VibyBkYSBDb3N0YSAgPGt1Ym9AcHJvZnVzaW9uLm1vYmk+Ci0KLSAgICAgICAgVW5yZXZp
ZXdlZDsgZml4IGJ1aWxkIHdpdGggRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpLgotCi0gICAg
ICAgICogZXdrL2V3a19qcy5jcHA6IEluY2x1ZGUgZXdrX2xvZ2dpbmcuaCBmb3IgRVJSKCkuCi0K
LTIwMTEtMTItMjIgIE1hcml1c3ogR3J6ZWdvcmN6eWsgIDxtYXJpdXN6LmdAc2Ftc3VuZy5jb20+
Ci0KLSAgICAgICAgW0VGTF0gTWlzc2luZyBwbHVnaW5zIHN1cHBvcnQgZm9yIGVmbCBwb3J0Ci0g
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NDUwNQotCi0g
ICAgICAgIFJldmlld2VkIGJ5IEFuZGVycyBDYXJsc3Nvbi4KLQotICAgICAgICBJbXBsZW1lbnRh
dGlvbiBvZiBld2tfZnJhbWVfcGx1Z2luX2NyZWF0ZSgpIC0gY3JlYXRpbmcgUGx1Z2luVmlldy4K
LQotICAgICAgICAqIGV3ay9ld2tfZnJhbWUuY3BwOgotICAgICAgICAoZXdrX2ZyYW1lX3BsdWdp
bl9jcmVhdGUpOgotCi0yMDExLTEyLTIyICBFdW5taSBMZWUgIDxldW5taTE1LmxlZUBzYW1zdW5n
LmNvbT4KLQotICAgICAgICBbRUZMXSBSZW1vdmUgdW51c2VkIHBhcmFtZXRlciBuYW1lcy4KLSAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0NzAyCi0KLSAg
ICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCi0KLSAgICAgICAgKiBld2svZXdrX3ZpZXcu
Y3BwOgotICAgICAgICAoX2V3a192aWV3X29uX2ZvY3VzX2luKToKLSAgICAgICAgKF9ld2tfdmll
d19vbl9mb2N1c19vdXQpOgotICAgICAgICAoX2V3a192aWV3X29uX21vdXNlX3doZWVsKToKLSAg
ICAgICAgKF9ld2tfdmlld19vbl9tb3VzZV9kb3duKToKLSAgICAgICAgKF9ld2tfdmlld19vbl9t
b3VzZV91cCk6Ci0gICAgICAgIChfZXdrX3ZpZXdfb25fbW91c2VfbW92ZSk6Ci0gICAgICAgIChf
ZXdrX3ZpZXdfb25fa2V5X2Rvd24pOgotICAgICAgICAoX2V3a192aWV3X29uX2tleV91cCk6Ci0g
ICAgICAgICogZXdrL2V3a192aWV3X3NpbmdsZS5jcHA6Ci0gICAgICAgIChfZXdrX3ZpZXdfc2lu
Z2xlX29uX2RlbCk6Ci0KLTIwMTEtMTItMjIgIEt3YW5nSHl1ayBLaW0gIDxoeXVraS5raW1Ac2Ft
c3VuZy5jb20+Ci0KLSAgICAgICAgW0VGTF0gSW52YWxpZGF0aW9uIHJlcXVlc3QgZm9yIG91dHNp
ZGUgb2YgdmlzaWJsZSBhcmVhIGRvZXNuJ3Qgc2VlbSB0byBvY2N1ciB3aGVuIHRpbGVkIHZpZXcg
aXMgdXNlZC4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTcwODczCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJzIENhcmxzc29uLgotCi0gICAgICAg
IEluIG9yZGVyIHRvIGd1YXJhbnRlZSB0aGUgcGFpbnQgb3V0c2lkZSBvZiB2aWV3cG9ydCB3aGVu
IGV3a192aWV3X3RpbGVkIGlzIHVzZWQsCi0gICAgICAgIGV3a19mcmFtZV9wYWludF9mdWxsX3Nl
dCBzaG91bGQgYmUgY2FsbGVkIGJ5IGV3a19mcmFtZV92aWV3X2NyZWF0ZV9mb3JfdmlldwotICAg
ICAgICB3aGVuIGZyYW1lIGlzIGNyZWF0ZWQgYmVjYXVzZSBmcmFtZSB2aWV3IGNhbiBiZSBjcmVh
dGVkIG5ld2x5IGFzIHNvb24gYXMgcGFnZSBpcyBjcmVhdGVkLgotICAgICAgICBCdXQgZm9yIHRo
ZSBld2tfdmlld19zaW5nbGUsIGFzIGl0IGRvZXNuJ3QgbmVlZCB0byBwYWludCBvdXRzaWRlIG9m
IHZpZXdwb3J0LAotICAgICAgICBld2tfZnJhbWVfcGFpbnRfZnVsbF9zZXQgbXVzdCBub3QgYmUg
Y2FsbGVkIGZvciBld2tfdmlld19zaW5nbGUuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNs
aWVudEVmbDo6dHJhbnNpdGlvblRvQ29tbWl0dGVkRm9yTmV3UGFnZSk6Ci0gICAgICAgICogZXdr
L2V3a19wcml2YXRlLmg6Ci0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAgKGV3
a192aWV3X2ZyYW1lX3ZpZXdfY3JlYXRpb25fbm90aWZ5KToKLSAgICAgICAgKiBld2svZXdrX3Zp
ZXdfdGlsZWQuY3BwOgotICAgICAgICAoX2V3a192aWV3X3RpbGVkX3NtYXJ0X2FkZCk6Ci0gICAg
ICAgIChld2tfdmlld190aWxlZF9zbWFydF9zZXQpOgotCi0yMDExLTEyLTIxICBNaWNoYcWCIFBh
a3XFgmEgdmVsIFJ1dGthICA8bS5wYWt1bGFAc2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW0VGTF0g
QWRkICdTZWxlY3QgQWxsJyBvcHRpb24gdG8gY29udGV4dCBtZW51cyBpbiBXZWJLaXQtRUZMLgot
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ5MjAKLQot
ICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KLQotICAgICAgICBFbmFibGUgJ1NlbGVj
dCBBbGwnIG9wdGlvbiB0byBjb250ZXh0IG1lbnVzIGNhbGxlZCBvbiBpbnB1dCBmaWVsZHMgaW4g
V2ViS2l0LUVGTAotICAgICAgICBhcyBpdCBpcyBlbmFibGVkIGluIEdUSyBhbmQgUVQgcG9ydHMu
Ci0KLSAgICAgICAgKiBld2svZXdrX2NvbnRleHRtZW51Lmg6IEFkZCBuZXcgY29udGV4dCBtZW51
IG9wdGlvbiAnU2VsZWN0IEFsbCcuCi0KLTIwMTEtMTItMTkgIFJ5dWFuIENob2kgIDxyeXVhbi5j
aG9pQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxdIENoYW5nZSB0aGUgYmVoYXZpb3Igb2Yg
ZXdrX3ZpZXdfc2NhbGVfc2V0LgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NzAwNzgKLQotICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KLQot
ICAgICAgICBSZW1vdmUgY2VudGVyIHBvaW50IGJhc2lzIHpvb20gYWxpZ25tZW50IGZyb20gZXdr
X3ZpZXdfc2NhbGVfc2V0IHRvIGNhbGwKLSAgICAgICAgUGFnZTo6c2V0UGFnZVNjYWxlRmFjdG9y
IHdpdGhvdXQgYW55IGFkanVzdG1lbnQuCi0KLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgot
ICAgICAgICAoZXdrX3ZpZXdfc2NhbGVfc2V0KToKLSAgICAgICAgKiBld2svZXdrX3ZpZXcuaDoK
LQotMjAxMS0xMi0xOSAgUmFwaGFlbCBLdWJvIGRhIENvc3RhICA8a3Vib0Bwcm9mdXNpb24ubW9i
aT4KLQotICAgICAgICBVbnJldmlld2VkOyBmaXggdGhlIGJ1aWxkIHdpdGggRU5BQkxFKFRPVUNI
X0VWRU5UUykgYWZ0ZXIgcjEwMzE2Ny4KLQotICAgICAgICBUaGlzIHBhcnRseSByZXZlcnRzIHIx
MDIyOTc6IHRoZSBUb3VjaHtTdGFydCxNb3ZlLEVuZCxDYW5jZWx9IGV2ZW50cwotICAgICAgICBh
cmUgbm90IGluIGEgc2VwYXJhdGUgZW51bSBhbnltb3JlICh0aGV5IGFyZSBwYXJ0IG9mCi0gICAg
ICAgIFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQpLCBzbyB0aGUgYXNzZXJ0aW9ucyBpbiBBc3NlcnRN
YXRjaGluZ0VudW1zLmNwcAotICAgICAgICBhbHdheXMgZmFpbC4gU2V0dGluZyBFV0tfVE9VQ0hf
U1RBUlQgdG8gVG91Y2hTdGFydCBmZWVscyBldmVuIG1vcmUKLSAgICAgICAgaGFja2lzaCwgc28g
d2UganVzdCBjb252ZXJ0IHRoZSB0eXBlcyBtYW51YWxseSBhZ2FpbiBmb3Igbm93LgotCi0gICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHA6Ci0gICAgICAgICog
ZXdrL2V3a19mcmFtZS5jcHA6Ci0gICAgICAgIChld2tfZnJhbWVfZmVlZF90b3VjaF9ldmVudCk6
Ci0KLTIwMTEtMTItMTcgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KLQotICAgICAgICBN
YWtlIFBsYXRmb3JtVG91Y2hFdmVudCBpbmhlcml0IGZyb20gUGxhdGZvcm1FdmVudAotICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ3NzcKLQotICAgICAg
ICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgotCi0gICAgICAgICogZXdrL2V3a19mcmFtZS5j
cHA6Ci0gICAgICAgIChld2tfZnJhbWVfZmVlZF90b3VjaF9ldmVudCk6Ci0gICAgICAgIFJlbmFt
ZSBUb3VjaEV2ZW50VHlwZSB0byBQbGF0Zm9ybUV2ZW50OjpUeXBlLgotCi0yMDExLTEyLTE2ICBS
eW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgotCi0gICAgICAgIFJlbmFtZSByZWdpc3Rl
ckNvbW1hbmRGb3IoVW5kb3xSZWRvKSB0byByZWdpc3RlcihVbmRvfFJlZG8pU3RlcAotICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ3NDgKLQotICAgICAg
ICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Vk
aXRvckNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRFZmw6OnJl
Z2lzdGVyVW5kb1N0ZXApOgotICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50RWZsOjpyZWdp
c3RlclJlZG9TdGVwKToKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwu
aDoKLQotMjAxMS0xMi0xNiAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgotCi0gICAgICAg
IEdpdmUgUGxhdGZvcm1FdmVudHMgYSBiYXNlIGNsYXNzCi0gICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDY4NQotCi0gICAgICAgIFJldmlld2VkIGJ5IEFu
ZGVycyBDYXJsc3Nvbi4KLQotICAgICAgICBBZGQgYSBiYXNlIGNsYXNzIGZvciBQbGF0Zm9ybU1v
dXNlRXZlbnQsIFBsYXRmb3JtS2V5Ym9hcmRFdmVudCwgUGxhdGZvcm1XaGVlbEV2ZW50Ci0gICAg
ICAgIGFuZCBQbGF0Zm9ybUdlc3R1cmVFdmVudCBhbmQgbW92ZSBUeXBlIGVudW1lcmF0aW9uIGFu
ZCBtb2RpZmllcnMgZG93biB0byBpdC4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRv
ckNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRFZmw6OmhhbmRs
ZUVkaXRpbmdLZXlib2FyZEV2ZW50KToKLQotMjAxMS0xMi0xNiAgUnlvc3VrZSBOaXdhICA8cm5p
d2FAd2Via2l0Lm9yZz4KLQotICAgICAgICBPbmx5IEVkaXRDb21tYW5kQ29tcG9zaXRpb24gc2hv
dWxkIGltcGxlbWVudCB1bmFwcGx5IGFuZCByZWFwcGx5Ci0gICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDQ5MAotCi0gICAgICAgIFJldmlld2VkIGJ5IEVy
aWMgU2VpZGVsLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmNw
cDoKLSAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEVmbDo6cmVnaXN0ZXJDb21tYW5kRm9y
VW5kbyk6Ci0gICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRFZmw6OnJlZ2lzdGVyQ29tbWFu
ZEZvclJlZG8pOgotICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50RWZsOjp1bmRvKToKLSAg
ICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEVmbDo6cmVkbyk6Ci0gICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmg6Ci0KLTIwMTEtMTItMTUgIFJhcGhhZWwgS3VibyBk
YSBDb3N0YSAgPGt1Ym9AcHJvZnVzaW9uLm1vYmk+Ci0KLSAgICAgICAgW0VGTF0gQ2xlYW4gdXAg
YW5kIHJlZmFjdG9yIHRoZSBtZW1vcnkgY2FjaGUgZnVuY3Rpb25zIGluIGV3a19zZXR0aW5ncy4K
LSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyMTQwCi0K
LSAgICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21lcy4KLQotICAgICAgICBVc2UgYSBiZXR0
ZXIgbmFtaW5nIHByZWZpeCwgYXMgImV3a19zZXR0aW5nc19jYWNoZSIgd2FzIHRvbyBnZW5lcmFs
LAotICAgICAgICBhbmQgbWFrZSBpdCBwb3NzaWJsZSB0byBwYXNzIGFsbCBwYXJhbWV0ZXJzIHRv
Ci0gICAgICAgIE1lbW9yeUNhY2hlOjpzZXRDYXBhY2l0aWVzKCkuCi0KLSAgICAgICAgKiBld2sv
ZXdrX3NldHRpbmdzLmNwcDoKLSAgICAgICAgKGV3a19zZXR0aW5nc19vYmplY3RfY2FjaGVfY2Fw
YWNpdHlfc2V0KToKLSAgICAgICAgKGV3a19zZXR0aW5nc19vYmplY3RfY2FjaGVfZW5hYmxlX2dl
dCk6Ci0gICAgICAgIChld2tfc2V0dGluZ3Nfb2JqZWN0X2NhY2hlX2VuYWJsZV9zZXQpOgotICAg
ICAgICAqIGV3ay9ld2tfc2V0dGluZ3MuaDoKLQotMjAxMS0xMi0xNSAgUmFwaGFlbCBLdWJvIGRh
IENvc3RhICA8a3Vib0Bwcm9mdXNpb24ubW9iaT4KLQotICAgICAgICBbRUZMXSBBZGQgYSBmZXcg
bW9yZSB3ZWIgZGF0YWJhc2UgZnVuY3Rpb25zIHRvIGV3a19zZXR0aW5ncy4KLSAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyMTQ4Ci0KLSAgICAgICAgUmV2
aWV3ZWQgYnkgQW50b25pbyBHb21lcy4KLQotICAgICAgICBBZGQgY29kZSB0byBjaGFuZ2UgdGhl
IGRlZmF1bHQgcXVvdGEgKHRoZXJlIGFzIG9ubHkgYSBnZXR0ZXIgc28gZmFyKQotICAgICAgICBh
bmQgb25lIHRvIGNsZWFyIHRoZSBkYXRhYmFzZXMuCi0KLSAgICAgICAgKiBld2svZXdrX3NldHRp
bmdzLmNwcDoKLSAgICAgICAgKGV3a19zZXR0aW5nc193ZWJfZGF0YWJhc2VfZGVmYXVsdF9xdW90
YV9zZXQpOgotICAgICAgICAoZXdrX3NldHRpbmdzX3dlYl9kYXRhYmFzZV9jbGVhcik6Ci0gICAg
ICAgICogZXdrL2V3a19zZXR0aW5ncy5oOgotCi0yMDExLTEyLTE0ICBHeXV5b3VuZyBLaW0gIDxn
eXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW0VGTF0gQ2hhbmdlIGVmbCBzdHls
ZSB2YXJpYWJsZSBuYW1lIHdpdGggV2ViS2l0IHN0eWxlIGZvciBpbnRlcm5hbCBmdW5jdGlvbnMu
Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDQ3NAot
Ci0gICAgICAgIFJldmlld2VkIGJ5IFJ5b3N1a2UgTml3YS4KLQotICAgICAgICBJbiBvcmRlciB0
byBiZSBtb3JlIGNvbXBsaWFudCB3aXRoIFdlYktpdCBjb2Rpbmcgc3R5bGUsIHZhcmlhYmxlIG5h
bWVzIG9mIGludGVybmFsIGZ1bmN0aW9ucwotICAgICAgICBzaG91bGQgYmUgY2hhbmdlZCB3aXRo
IFdlYktpdCBjb2Rpbmcgc3R5bGUuCi0KLSAgICAgICAgKiBld2svZXdrX3ByaXZhdGUuaDoKLSAg
ICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoZXdrX3ZpZXdfc2Nyb2xsKToKLQot
MjAxMS0xMi0xNCAgSmluZyBaaGFvICA8amluZ3poYW9AY2hyb21pdW0ub3JnPgotCi0gICAgICAg
IE9wZW5pbmcgdHdvIHBvcHVwIG1lbnVzIGJ5IGRpc3BhdGNoRXZlbnQoKSBtYWtlcyBwcm9ibGVt
cy4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczMzA0
Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgS2VudCBUYW11cmEuCi0KLSAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xp
ZW50RWZsOjpoYXNPcGVuZWRQb3B1cCk6IE5vdCBpbXBsZW1lbnRlZC4KLSAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuaDogT3ZlcnJpZGVzIGhhc09wZW5lZFBvcHVwKCku
Ci0KLTIwMTEtMTItMTIgIFJhcGhhZWwgS3VibyBkYSBDb3N0YSAgPGt1Ym9AcHJvZnVzaW9uLm1v
Ymk+Ci0KLSAgICAgICAgW0VGTF0gQWRkIEFQSSB0byBxdWVyeSB0aGUgdmFsaWRpdHkgb2YgYSBm
cmFtZSdzIFNTTCBjZXJ0aWZpY2F0ZS4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTc0MzAyCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgR3VzdGF2byBOb3Jv
bmhhIFNpbHZhLgotCi0gICAgICAgICogZXdrL2V3a19mcmFtZS5jcHA6Ci0gICAgICAgIChld2tf
ZnJhbWVfY2VydGlmaWNhdGVfc3RhdHVzX2dldCk6Ci0gICAgICAgICogZXdrL2V3a19mcmFtZS5o
OgotCi0yMDExLTEyLTEyICBSYXBoYWVsIEt1Ym8gZGEgQ29zdGEgIDxrdWJvQHByb2Z1c2lvbi5t
b2JpPgotCi0gICAgICAgIFtFRkxdIEFkZCBBUEkgdG8gbm90aWZ5IHRoYXQgbWl4ZWQgY29udGVu
dCBoYXMgYmVlbiBsb2FkZWQuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD03NDMwMQotCi0gICAgICAgIFJldmlld2VkIGJ5IEd1c3Rhdm8gTm9yb25oYSBT
aWx2YS4KLQotICAgICAgICBXaGVuIG1peGVkIGNvbnRlbnQgaXMgZGlzcGxheWVkL3J1biwgYm90
aCBmcmFtZXMgYW5kIHZpZXdzCi0gICAgICAgIGVtaXQgdGhlIHByb3BlciBzaWduYWxzIHRvIG5v
dGlmeSBBUEkgdXNlcnMuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlk
RGlzcGxheUluc2VjdXJlQ29udGVudCk6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNs
aWVudEVmbDo6ZGlkUnVuSW5zZWN1cmVDb250ZW50KToKLSAgICAgICAgKiBld2svZXdrX2ZyYW1l
LmNwcDoKLSAgICAgICAgKGV3a19mcmFtZV92aWV3X2NyZWF0ZV9mb3Jfdmlldyk6Ci0gICAgICAg
IChld2tfZnJhbWVfbWl4ZWRfY29udGVudF9kaXNwbGF5ZWRfZ2V0KToKLSAgICAgICAgKGV3a19m
cmFtZV9taXhlZF9jb250ZW50X3J1bl9nZXQpOgotICAgICAgICAoZXdrX2ZyYW1lX21peGVkX2Nv
bnRlbnRfZGlzcGxheWVkX3NldCk6Ci0gICAgICAgIChld2tfZnJhbWVfbWl4ZWRfY29udGVudF9y
dW5fc2V0KToKLSAgICAgICAgKiBld2svZXdrX2ZyYW1lLmg6Ci0gICAgICAgICogZXdrL2V3a19w
cml2YXRlLmg6Ci0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAgKGV3a192aWV3
X2ZyYW1lX21haW5fY2xlYXJlZCk6Ci0gICAgICAgIChld2tfdmlld19taXhlZF9jb250ZW50X2Rp
c3BsYXllZF9nZXQpOgotICAgICAgICAoZXdrX3ZpZXdfbWl4ZWRfY29udGVudF9ydW5fZ2V0KToK
LSAgICAgICAgKGV3a192aWV3X21peGVkX2NvbnRlbnRfZGlzcGxheWVkX3NldCk6Ci0gICAgICAg
IChld2tfdmlld19taXhlZF9jb250ZW50X3J1bl9zZXQpOgotICAgICAgICAqIGV3ay9ld2tfdmll
dy5oOgotCi0yMDExLTEyLTEyICBSYXBoYWVsIEt1Ym8gZGEgQ29zdGEgIDxrdWJvQHByb2Z1c2lv
bi5tb2JpPgotCi0gICAgICAgIFtFRkxdIEFkZCBBUEkgdG8gbWFuYWdlIHJvb3QgWC41MDkgQ0Eg
Y2VydGlmaWNhdGVzLgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NzQzMDAKLQotICAgICAgICBSZXZpZXdlZCBieSBNYXJ0aW4gUm9iaW5zb24uCi0KLSAg
ICAgICAgKiBld2svZXdrX25ldHdvcmsuY3BwOgotICAgICAgICAoZXdrX25ldHdvcmtfdGxzX2Nh
X2NlcnRpZmljYXRlc19wYXRoX2dldCk6Ci0gICAgICAgIChld2tfbmV0d29ya190bHNfY2FfY2Vy
dGlmaWNhdGVzX3BhdGhfc2V0KToKLSAgICAgICAgKiBld2svZXdrX25ldHdvcmsuaDoKLQotMjAx
MS0xMi0xMiAgUmFwaGFlbCBLdWJvIGRhIENvc3RhICA8a3Vib0Bwcm9mdXNpb24ubW9iaT4KLQot
ICAgICAgICBbRUZMXSBBZGQgQVBJIHRvIGNvbnRyb2wgd2hldGhlciBTU0wgY2VydGlmaWNhdGVz
IHNob3VsZCBiZSBjaGVja2VkLgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NzQyOTkKLQotICAgICAgICBSZXZpZXdlZCBieSBNYXJ0aW4gUm9iaW5zb24u
Ci0KLSAgICAgICAgKiBld2svZXdrX21haW4uY3BwOgotICAgICAgICAoX2V3a19pbml0X2JvZHkp
OiBFeHBsaWNpdGx5IGRpc2FibGUgY2VydGlmaWNhdGUgY2hlY2tzIGJ5IGRlZmF1bHQuCi0gICAg
ICAgICogZXdrL2V3a19uZXR3b3JrLmNwcDoKLSAgICAgICAgKGV3a19uZXR3b3JrX3Rsc19jZXJ0
aWZpY2F0ZV9jaGVja19nZXQpOgotICAgICAgICAoZXdrX25ldHdvcmtfdGxzX2NlcnRpZmljYXRl
X2NoZWNrX3NldCk6Ci0gICAgICAgICogZXdrL2V3a19uZXR3b3JrLmg6Ci0KLTIwMTEtMTItMDcg
IFJ5dWFuIENob2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxdIElu
dHJvZHVjZSBBc3NlcnRNYXRjaGluZ0VudW1zLmNwcC4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1MjM4Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgRmls
aXAgUGl6bG8uCi0KLSAgICAgICAgQWRkIEFzc2VydE1hdGNoaW5nRW51bXMuY3BwIHRvIGFzc2Vy
dCB0aGF0IHZhcmlvdXMgV2ViS2l0IEFQSSBlbnVtIHZhbHVlcwotICAgICAgICBtYXRjaCB0byBX
ZWJDb3JlIGRlZmluZWQgZW51bSB2YWx1ZXMuCi0KLSAgICAgICAgKiBDTWFrZUxpc3RzRWZsLnR4
dDogYWRkIEFzc2VydE1hdGNoaW5nRW51bXMuY3BwLgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwOiBBZGRlZC4KLSAgICAgICAgKiBld2svZXdrX2ZyYW1l
LmNwcDoKLSAgICAgICAgKGV3a19mcmFtZV9mZWVkX3RvdWNoX2V2ZW50KTogcmVtb3ZlIHN3aXRj
aCBzdGF0ZW1lbnQgd2ljaGkgY29udmVydCBXZWJLaXQgQVBJIGVudW0gdmFsdWUgdG8gV2ViQ29y
ZSBkZWZpbmVkIGVudW0gdmFsdWVzLgotICAgICAgICAoZXdrX2ZyYW1lX3RleHRfc2VsZWN0aW9u
X3R5cGVfZ2V0KTogRGl0dG8uCi0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAg
KGV3a192aWV3X21vZGVfc2V0KTogRGl0dG8uCi0gICAgICAgIChld2tfdmlld19tb2RlX2dldCk6
IERpdHRvLgotICAgICAgICAoZXdrX3ZpZXdfdmlzaWJpbGl0eV9zdGF0ZV9zZXQpOiBEaXR0by4K
LSAgICAgICAgKGV3a192aWV3X3Zpc2liaWxpdHlfc3RhdGVfZ2V0KTogRGl0dG8uCi0gICAgICAg
ICogZXdrL2V3a19mcmFtZS5oOiBmaXggb3JkZXIgb2YgZW51bSB2YWx1ZXMuCi0gICAgICAgICog
ZXdrL2V3a192aWV3Lmg6IGFkZCBtaXNzaW5nIGVudW0gdmFsdWUuCi0KLTIwMTEtMTItMDcgIE1h
cnkgV3UgIDxtYXJ5Lnd1QHRvcmNobW9iaWxlLmNvbS5jbj4KLQotICAgICAgICBDaGFuZ2UgZnVu
Y3Rpb24gbmFtZSBJbml0aWFsaXplTG9nZ2luZ0NoYW5uZWxzSWZOZWNlc3NhcnkgdG8gZm9sbG93
IGNvZGluZyBzdHlsZSBndWlkZWxpbmUKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTczOTg2Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hk
ZSBDaHJpc3RpYW5zZW4uCi0KLSAgICAgICAgKiBld2svZXdrX21haW4uY3BwOgotICAgICAgICAo
X2V3a19pbml0X2JvZHkpOgotCi0yMDExLTEyLTA1ICBSYXBoYWVsIEt1Ym8gZGEgQ29zdGEgIDxr
dWJvQHByb2Z1c2lvbi5tb2JpPgotCi0gICAgICAgIFtFRkxdIERvIG5vdCBsb3NlIG1lc3NhZ2Ug
ZmxhZ3Mgd2hlbiBjb252ZXJ0aW5nIHRvL2Zyb20gU291cCBSZXF1ZXN0cy9SZXNwb25zZXMKLSAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczOTI0Ci0KLSAg
ICAgICAgUmV2aWV3ZWQgYnkgR3VzdGF2byBOb3JvbmhhIFNpbHZhLgotCi0gICAgICAgIEFwcGx5
IHRoZSBzYW1lIGNoYW5nZSBhZGRlZCB0byB0aGUgR1RLKyBwb3J0IGluIHI1NTA4NiB0byBwcmV2
ZW50Ci0gICAgICAgIHNvdXAgbWVzc2FnZSBmbGFncyBmcm9tIGJlaW5nIGxvc3QgYnkgdXBkYXRp
bmcgdGhlIHJlcXVlc3QgZmxhZ3Mgd2hlbgotICAgICAgICBhIHJlc3BvbnNlIGlzIHJlY2VpdmVk
LgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwOgot
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkUmVjZWl2
ZVJlc3BvbnNlKToKLQotMjAxMS0xMi0wNCAgS2FuZ2lsIEhhbiAgPGthbmdpbC5oYW5Ac2Ftc3Vu
Zy5jb20+Ci0KLSAgICAgICAgW0VGTF0gRml4IGJyb2tlbiBVVEYtOCBjaGFyYWN0ZXJzIGlzc3Vl
IG9uIGVkaXRvciBjb21tYW5kLgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NzM1MTYKLQotICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtlIE5pd2EuCi0K
LSAgICAgICAgVGhlIGlzc3VlIGhhcyBiZWVuIGRlc2NyaWJlZCB0aGF0IEtvcmVhbiBjaGFyYWN0
ZXIgaXMgYnJva2VuIG9uIHBhc3RpbmcgY29waWVkIHRleHQuCi0gICAgICAgIEluIG15IGFuYWx5
c2lzLCB0aGlzIGlzIGZyb20gbGFjayBvZiBmb3JtYXQgY2hhbmdlIGJldHdlZW4gQyBzdHlsZSBV
VEYtOCBjaGFyYWN0ZXIgcG9pbnRlciBhbmQgQysrIHN0eWxlIFN0cmluZyByZWZlcmVuY2UuCi0g
ICAgICAgIFRoZXJlZm9yZSwgdGhpcyBwYXRjaCB3aWxsIGNvbnZlcnQgdHlwZXMgdG8gcmVzb2x2
ZSB0aGUgcHJvYmxlbS4KLQotICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChf
ZXdrX3ZpZXdfZWRpdG9yX2NvbW1hbmQpOgotCi0yMDExLTEyLTAzICBDaGFuZ1Nlb2sgT2ggIDxz
aGl2YW1pZG93QGdtYWlsLmNvbT4KLQotICAgICAgICBbRUZMXSBSZXZpc2UgZXdrX3ZpZXdfZml4
ZWRfbGF5b3V0X3NpemVfc2V0Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD03MzQwMQotCi0gICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgotCi0g
ICAgICAgIEltcHJvdmUgcmVhZGFiaWxpdHkgYW5kIHJlcGxhY2UgZm9yY2VMYXlvdXQgdG8gc2V0
TmVlZHNMYXlvdXQsCi0gICAgICAgIHNpbmNlIGl0IHNvbWV0aW1lcyBjYXVzZXMgZG91YmxlIGRy
YXdpbmcuCi0KLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoZXdrX3ZpZXdf
Zml4ZWRfbGF5b3V0X3NpemVfc2V0KToKLQotMjAxMS0xMi0wMiAgSnVuZ0ppayBMZWUgIDxqdW5n
amlrLmxlZUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBbRUZMXSBSZW1vdmUgZW50cnkgcG9pbnRl
ciBiZWZvcmUgZnJlZWluZyBpdCBmcm9tIG1hdHJpeC4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczNjI1Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgUnlv
c3VrZSBOaXdhLgotCi0gICAgICAgIFRvIHByZXZlbnQgbGVhdmluZyBkYW5nbGluZyBwb2ludGVy
IG9uIHRoZSBtYXRyaXgsIHJlbW92ZSB0aGUgZW50cnkgYmVmb3JlIGZyZWVpbmcgaXQuCi0KLSAg
ICAgICAgKiBld2svZXdrX3RpbGVkX21hdHJpeC5jcHA6Ci0gICAgICAgIChld2tfdGlsZV9tYXRy
aXhfZnJlZSk6Ci0KLTIwMTEtMTItMDEgIFJ5dWFuIENob2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcu
Y29tPgotCi0gICAgICAgIFtFRkxdIENsZWFudXAgaW5jbHVkZXMgdG8gcmVkdWNlIGNvZGUgY29t
cGxleGl0eS4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTczNTQwCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgR3VzdGF2byBOb3JvbmhhIFNpbHZhLgotCi0g
ICAgICAgIEVXZWJLaXQuaCBpcyBhIGxpc3Qgb2YgcHVibGljIGhlYWRlciBmaWxlcyBmb3IgYXBw
bGljYXRpb24gdG8gdXNlIFdlYktpdC9FZmwuCi0gICAgICAgIFRoaXMgcGF0Y2ggcmVtb3ZlcyBF
V2ViS2l0LmggaW4gaW50ZXJuYWwgZmlsZXMgdG8gcmVkdWNlIHVubmVjZXNzYXJ5IGluY2x1ZGVz
LgotICAgICAgICBJbiBhZGRpdGlvbiwgcmVvcmRlcnMgb3B0aW9uYWwgaW5jbHVkZXMgdG8gZml4
IHN0eWxlLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcDoK
LSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwOgot
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5jcHA6Ci0gICAgICAgICog
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwOgotICAgICAgICAqIGV3ay9l
d2tfYXV0aF9zb3VwLmNwcDoKLSAgICAgICAgKiBld2svZXdrX2NvbnRleHRtZW51LmNwcDoKLSAg
ICAgICAgKiBld2svZXdrX2Nvb2tpZXMuY3BwOgotICAgICAgICAqIGV3ay9ld2tfZnJhbWUuY3Bw
OgotICAgICAgICAqIGV3ay9ld2tfaGlzdG9yeS5jcHA6Ci0gICAgICAgICogZXdrL2V3a19tYWlu
LmNwcDoKLSAgICAgICAgKiBld2svZXdrX3ByaXZhdGUuaDoKLSAgICAgICAgKiBld2svZXdrX3Nl
dHRpbmdzLmNwcDoKLSAgICAgICAgKiBld2svZXdrX3V0aWwuY3BwOgotICAgICAgICAqIGV3ay9l
d2tfdmlldy5jcHA6Ci0gICAgICAgICogZXdrL2V3a192aWV3X3NpbmdsZS5jcHA6Ci0gICAgICAg
ICogZXdrL2V3a192aWV3X3RpbGVkLmNwcDoKLSAgICAgICAgKiBld2svZXdrX3dpbmRvd19mZWF0
dXJlcy5jcHA6Ci0KLTIwMTEtMTItMDEgIFJhcGhhZWwgS3VibyBkYSBDb3N0YSAgPGt1Ym9AcHJv
ZnVzaW9uLm1vYmk+Ci0KLSAgICAgICAgW0VGTF0gUmVtb3ZlIHRoZSBld2tfcHJvdG9jb2xfaGFu
ZGxlci1yZWxhdGVkIGNvZGUKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTczMDE4Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgTWFydGluIFJvYmluc29uLgot
Ci0gICAgICAgIFRoaXMgZnVuY3Rpb25hbGl0eSBoYXMgYmVlbiBicm9rZW4gc2luY2Ugcjk5MzY0
LCB3aGljaCBzdG9wcGVkIHNldHRpbmcKLSAgICAgICAgdGhlICJ3ZWJraXQtcmVzb3VyY2UiIHBy
b3BlcnR5IG5lZWRlZCBieQotICAgICAgICBld2tfcHJvdG9jb2xfaGFuZGxlcl9zb3VwLmNwcC4K
LQotICAgICAgICBBZnRlciBnaXZpbmcgaXQgc29tZSB0aG91Z2h0LCBpdCBsb29rcyBjbGVhciB0
aGF0IHRoaXMgY29kZSBzaG91bGQgbm90Ci0gICAgICAgIGJlIGluIGV3ayBhdCBhbGw6IGl0IGlz
IHZlcnkgYmFja2VuZC1zcGVjaWZpYyAoZXZlbiBpbiB0aGUgZnVuY3Rpb24KLSAgICAgICAgc2ln
bmF0dXJlcyBpdCBleHBlY3RzKSwgYW5kIGl0IG9ubHkgYWxsb3dzIGNhbGxlcnMgdG8gcmVnaXN0
ZXIgc2NoZW1lcwotICAgICAgICBvbmNlIGFuZCBwcm92aWRlIGEgc2luZ2xlIGhhbmRsZXIgdG8g
YWxsIG9mIHRoZW0sIHdoaWNoIGRvZXMgbm90IG1ha2UKLSAgICAgICAgbXVjaCBzZW5zZS4KLQot
ICAgICAgICBDbGllbnQgY29kZSB1c2luZyBXZWJLaXQtRUZMIHdpdGggdGhlIHNvdXAgYmFja2Vu
ZCBzaG91bGQgYmUKLSAgICAgICAgcmVzcG9uc2libGUgZm9yIGNyZWF0aW5nIHRoZWlyIG93biBy
ZXF1ZXN0IGhhbmRsZXJzIChpZS4gc3ViY2xhc3MKLSAgICAgICAgU291cFJlcXVlc3QpIGluc3Rl
YWQuCi0KLSAgICAgICAgRm9yIHRoYXQgdG8gYmUgcG9zc2libGUsIGEgZnVuY3Rpb24gd2hpY2gg
cmV0dXJucyB0aGUgZGVmYXVsdAotICAgICAgICBTb3VwU2Vzc2lvbiB1c2VkIGJ5IFdlYktpdCBo
YXMgYmVlbiBhZGRlZC4KLQotICAgICAgICAqIENNYWtlTGlzdHNFZmwudHh0OgotICAgICAgICAq
IGV3ay9ld2tfbmV0d29yay5jcHA6Ci0gICAgICAgIChld2tfbmV0d29ya19kZWZhdWx0X3NvdXBf
c2Vzc2lvbl9nZXQpOgotICAgICAgICAqIGV3ay9ld2tfbmV0d29yay5oOgotICAgICAgICAqIGV3
ay9ld2tfcHJpdmF0ZS5oOgotICAgICAgICAqIGV3ay9ld2tfcHJvdG9jb2xfaGFuZGxlci5jcHA6
IFJlbW92ZWQuCi0gICAgICAgICogZXdrL2V3a19wcm90b2NvbF9oYW5kbGVyLmg6IFJlbW92ZWQu
Ci0gICAgICAgICogZXdrL2V3a19wcm90b2NvbF9oYW5kbGVyX3NvdXAuY3BwOiBSZW1vdmVkLgot
ICAgICAgICAqIGV3ay9ld2tfcHJvdG9jb2xfaGFuZGxlcl9zb3VwLmg6IFJlbW92ZWQuCi0gICAg
ICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAgKiBld2svZXdrX3ZpZXcuaDoKLQotMjAx
MS0xMS0zMCAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgotCi0gICAg
ICAgIFVucmV2aWV3ZWQuIEZpeCBidWlsZCBlcnJvciB3aGVuIE5PVElGSUNBVElPTlMgZmVhdHVy
ZSBpcyBlbmFibGVkLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZs
Lmg6Ci0KLTIwMTEtMTEtMzAgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+Ci0K
LSAgICAgICAgUmVtb3ZlIGFuIHVubmVlZGVkIGFyZ3VtZW50IGZyb20gRnJhbWVMb2FkZXJDbGll
bnQ6OmRvd25sb2FkCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03MzQ4NgotCi0gICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCi0KLSAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6ZG93bmxvYWQpOgotICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmg6Ci0gICAgICAgIFVwZGF0ZWQgZm9yIHRo
ZSBjaGFuZ2UuCi0KLTIwMTEtMTEtMzAgIEp1bmdKaWsgTGVlICA8anVuZ2ppay5sZWVAc2Ftc3Vu
Zy5jb20+Ci0KLSAgICAgICAgW0VGTF0gQXBwbHkgYWxwaGEgY2hhbm5lbCBpbnRvIGV3a190aWxl
ZF9iYWNraW5nX3N0b3JlJ3MgdGlsZSBvYmplY3RzLgotICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzMwMTUKLQotICAgICAgICBSZXZpZXdlZCBieSBDaGFu
ZyBTaHUuCi0KLSAgICAgICAgQWRkIGFscGhhX3NldCBBUEkgdG8gdGlsZWQgYmFja2luZyBzdG9y
ZSB0byBhcHBseSBhbHBoYSBjaGFubmVsIG9uIHRpbGUgb2JqZWN0cy4KLQotICAgICAgICAqIGV3
ay9ld2tfdGlsZWRfYmFja2luZ19zdG9yZS5jcHA6Ci0gICAgICAgIChfZXdrX3RpbGVkX2JhY2tp
bmdfc3RvcmVfdGlsZV9hc3NvY2lhdGUpOgotICAgICAgICAoZXdrX3RpbGVkX2JhY2tpbmdfc3Rv
cmVfYWxwaGFfc2V0KToKLSAgICAgICAgKiBld2svZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUuaDoK
LSAgICAgICAgKiBld2svZXdrX3ZpZXcuaDoKLSAgICAgICAgKiBld2svZXdrX3ZpZXdfdGlsZWQu
Y3BwOgotICAgICAgICAoX2V3a192aWV3X3RpbGVkX3NtYXJ0X2JnX2NvbG9yX3NldCk6Ci0gICAg
ICAgIChld2tfdmlld190aWxlZF9zbWFydF9zZXQpOgotCi0yMDExLTExLTMwICBHeXV5b3VuZyBL
aW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW0VGTF0gUmVtb3ZlIGR1
cGxpY2F0ZWQgVUEgaW5mb3JtYXRpb24gZnVuY3Rpb24uCi0gICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MzEwNAotCi0gICAgICAgIFJldmlld2VkIGJ5IEZp
bGlwIFBpemxvLgotCi0gICAgICAgIFRob3VnaCBld2tfc2V0dGluZyBhbHJlYWR5IGltcGxlbWVu
dGVkIGFuIGludGVybmFsIGZ1bmN0aW9uIGZvciBVQSh1c2VyIGFnZW50KSBpbmZvcm1hdGlvbiwK
LSAgICAgICAgRnJhbWVMb2FkZXJDbGllbnRFZmwgaGFzIHVzZWQgZHVwbGljYXRlZCBmdW5jdGlv
biBmb3IgVUEgaW5mb3JtYXRpb24uIFNvLCB0aGlzIHBhdGNoIHJlbW92ZXMKLSAgICAgICAgdGhl
IFVBIGluZm9ybWF0aW9uIGZ1bmN0aW9uIG9mIEZyYW1lTG9hZGVyQ2xpZW50RWZsIGFuZCB1c2Vz
IGFuIGludGVybmFsIFVBIGluZm9ybWF0aW9uIGZ1bmN0aW9uCi0gICAgICAgIG9mIGV3a19zZXR0
aW5nLiBJbiBhZGRpdGlvbiwgVUEgaW5mb21hdGlvbiBmdW5jdGlvbiBpcyBlbmhhbmNlZCBmb3Ig
b3RoZXIgcG9ydHMuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpjb21wb3NlVXNlckFnZW50KToKLSAgICAgICAg
KiBld2svZXdrX3NldHRpbmdzLmNwcDoKLSAgICAgICAgKGV3a19zZXR0aW5nc19kZWZhdWx0X3Vz
ZXJfYWdlbnRfZ2V0KToKLQotMjAxMS0xMS0zMCAgVG9tYXN6IE1vcmF3c2tpICA8dC5tb3Jhd3Nr
aUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBbRUZMXSBBZGRlZCBERUZBVUxUX0NBQ0hFX1NJWkUg
ZGVmaW5lLgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NzMxMjAKLQotICAgICAgICBSZXZpZXdlZCBieSBGaWxpcCBQaXpsby4KLQotICAgICAgICBSZW1v
dmUgZm9ybSBjb2RlIDQwOTYwMDAwIHZhbHVlIHVzZWQgaW4gY29kZSBkaXJlY3RseSBhbmQgcmVw
bGFjZWQgaXQgYnkgREVGQVVMVF9DQUNIRV9TSVpFIGRlZmluZS4gVGhlIGNvZGUKLSAgICAgICAg
bG9va3MgY2xlYW5lciBub3cuCi0KLSAgICAgICAgKiBld2svZXdrX3RpbGVkX21hdHJpeC5jcHA6
Ci0gICAgICAgIChld2tfdGlsZV9tYXRyaXhfbmV3KToKLQotMjAxMS0xMS0yOCAgSnVuZ0ppayBM
ZWUgIDxqdW5namlrLmxlZUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBbRUZMXSBSZW5hbWUgYWJi
cmV2aWF0ZWQgdmFsdWUgbmFtZXMgdG8gY3BwIHN0eWxlIG5hbWVzLgotICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzMxOTMKLQotICAgICAgICBSZXZpZXdl
ZCBieSBBbmRyZWFzIEtsaW5nLgotCi0gICAgICAgIFJlbmFtZSBhYmJyZXZpYXRlZCB2YWx1ZXMg
bmFtZSB0byBjcHAgc3R5bGUgbmFtZXMgaW4gZXdrX3NpbmdsZS90aWxlZF92aWV3LmNwcC4KLQot
ICAgICAgICAqIGV3ay9ld2tfdmlld19zaW5nbGUuY3BwOgotICAgICAgICAoX2V3a192aWV3XzRi
X21vdmVfcmVnaW9uX3VwKToKLSAgICAgICAgKF9ld2tfdmlld180Yl9tb3ZlX3JlZ2lvbl9kb3du
KToKLSAgICAgICAgKF9ld2tfdmlld180Yl9tb3ZlX2xpbmVfbGVmdCk6Ci0gICAgICAgIChfZXdr
X3ZpZXdfNGJfbW92ZV9saW5lX3JpZ2h0KToKLSAgICAgICAgKF9ld2tfdmlld180Yl9tb3ZlX3Jl
Z2lvbl9sZWZ0KToKLSAgICAgICAgKF9ld2tfdmlld180Yl9tb3ZlX3JlZ2lvbl9yaWdodCk6Ci0g
ICAgICAgIChfZXdrX3ZpZXdfNGJfbW92ZV9yZWdpb24pOgotICAgICAgICAoX2V3a192aWV3X3Np
bmdsZV9zY3JvbGxfcHJvY2Vzc19zaW5nbGUpOgotICAgICAgICAoX2V3a192aWV3X3NpbmdsZV9z
bWFydF9yZXBhaW50c19wcm9jZXNzKToKLSAgICAgICAgKiBld2svZXdrX3ZpZXdfdGlsZWQuY3Bw
OgotICAgICAgICAoX2V3a192aWV3X3RpbGVkX3NtYXJ0X3Njcm9sbHNfcHJvY2Vzcyk6Ci0gICAg
ICAgIChfZXdrX3ZpZXdfdGlsZWRfc21hcnRfcmVwYWludHNfcHJvY2Vzcyk6Ci0KLTIwMTEtMTEt
MjYgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgotCi0gICAgICAg
IFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMDExOTMuCi0gICAgICAgIGh0dHA6Ly90cmFjLndl
YmtpdC5vcmcvY2hhbmdlc2V0LzEwMTE5MwotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NzMxNTgKLQotICAgICAgICBCcmVha3MgV2luZG93cyBhbmQgUXQg
bWluaW1hbC4gKFJlcXVlc3RlZCBieSBwZmVsZG1hbiBvbgotICAgICAgICAjd2Via2l0KS4KLQot
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEVmbC5jcHA6Ci0gICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50RWZsLmg6Ci0KLTIwMTEtMTEtMjQgIEt3
YW5nSHl1ayBLaW0gIDxoeXVraS5raW1Ac2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW0VGTF0gQWRk
IGltcGxlbWVudGF0aW9uIGNvbnNpZGVyaW5nIGV3a190aWxlZF9iYWNraW5nX3N0b3JlJ3Mgdmlz
aWJsZSBzdGF0dXMuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03MTc5MQotCi0gICAgICAgIFJldmlld2VkIGJ5IEd1c3Rhdm8gTm9yb25oYSBTaWx2YS4K
LQotICAgICAgICBJbiBvcmRlciB0byBwcmV2ZW50IHJlbmRlcmluZyBhbmQgcHJlLXJlbmRlcmlu
ZyB3aGlsZSBiYWNraW5nIHN0b3JlIGlzIGhpZGRlbiwKLSAgICAgICAgaXRzIHZpc2liaWxpdHkg
aXMgY2hlY2tlZCBhbmQgcHJlLXJlbmRlcmluZyBpcyBoYW5kbGVkIHdoZW5ldmVyIGJhY2tpbmcg
c3RvcmUgaXMgc2hvd24gb3IgaGlkZGVuLgotCi0gICAgICAgICogZXdrL2V3a190aWxlZF9iYWNr
aW5nX3N0b3JlLmNwcDoKLSAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9pdGVtX3By
b2Nlc3NfaWRsZXJfc3RhcnQpOgotICAgICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX2l0
ZW1fZmlsbCk6Ci0gICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfc21hcnRfc2hvdyk6
Ci0gICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfc21hcnRfaGlkZSk6Ci0gICAgICAg
IChld2tfdGlsZWRfYmFja2luZ19zdG9yZV9hZGQpOgotCi0yMDExLTExLTIyICBQYXZlbCBGZWxk
bWFuICA8cGZlbGRtYW5AZ29vZ2xlLmNvbT4KLQotICAgICAgICBXZWIgSW5zcGVjdG9yOiByZW1v
dmUgSW5zcGVjdG9yOjpicmluZ1RvRnJvbnQgZnJvbSB0aGUgcHJvdG9jb2wuCi0gICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjkzNwotCi0gICAgICAgIFJl
dmlld2VkIGJ5IFl1cnkgU2VtaWtoYXRza3kuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9J
bnNwZWN0b3JDbGllbnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50
RWZsOjpicmluZ0Zyb250ZW5kVG9Gcm9udCk6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvSW5z
cGVjdG9yQ2xpZW50RWZsLmg6Ci0KLTIwMTEtMTEtMjEgIFJhcGhhZWwgS3VibyBkYSBDb3N0YSAg
PGt1Ym9AcHJvZnVzaW9uLm1vYmk+Ci0KLSAgICAgICAgW0VGTF0gQWRkIG1vcmUgYXBwY2FjaGUg
ZnVuY3Rpb25zIHRvIGV3a19zZXR0aW5ncy4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTcyMTQzCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBS
b2hkZSBDaHJpc3RpYW5zZW4uCi0KLSAgICAgICAgQWRkIGEgZmV3IG1vcmUgZnVuY3Rpb25zIHRv
IG1ha2UgaXQgcG9zc2libGUgdG8gaGF2ZSBtb3JlIGNvbnRyb2wgb3ZlcgotICAgICAgICB0aGUg
b2ZmbGluZSB3ZWIgYXBwbGljYXRpb24gZmVhdHVyZXMuCi0KLSAgICAgICAgKiBld2svZXdrX3Nl
dHRpbmdzLmNwcDoKLSAgICAgICAgKGV3a19zZXR0aW5nc19hcHBsaWNhdGlvbl9jYWNoZV9tYXhf
cXVvdGFfZ2V0KToKLSAgICAgICAgKGV3a19zZXR0aW5nc19hcHBsaWNhdGlvbl9jYWNoZV9tYXhf
cXVvdGFfc2V0KToKLSAgICAgICAgKGV3a19zZXR0aW5nc19hcHBsaWNhdGlvbl9jYWNoZV9jbGVh
cik6Ci0gICAgICAgICogZXdrL2V3a19zZXR0aW5ncy5oOgotCi0yMDExLTEwLTE3ICBBbnRvbmlv
IEdvbWVzICA8YWdvbWVzQHJpbS5jb20+Ci0KLSAgICAgICAgUGFzcyBhIEZyYW1lKiBwYXJhbWV0
ZXIgaW4gRWRpdG9yQ2xpZW50OjpyZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uCi0gICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MDI0OAotCi0gICAgICAgIFJl
dmlld2VkIGJ5IFJ5b3N1a2UgTml3YS4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRv
ckNsaWVudEVmbC5jcHA6IE1ha2UgdXNlIG9mIHRoZSBuZXdseSBhZGRlZCBGcmFtZSogcGFyYW1l
dGVyLgotICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50RWZsOjpyZXNwb25kVG9DaGFuZ2Vk
U2VsZWN0aW9uKToKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuaDoK
LQotMjAxMS0xMS0xNyAgS3dhbmdIeXVrIEtpbSAgPGh5dWtpLmtpbUBzYW1zdW5nLmNvbT4KLQot
ICAgICAgICBbRUZMXSBBZGQgbWF0cml4IGxpc3QgdG8gcmV1c2UgdGlsZSBtYXRyaXggZm9yIGVh
Y2ggZGlmZmVyZW50IHpvb20gbGV2ZWwuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02ODU5NQotCi0gICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9o
ZGUgQ2hyaXN0aWFuc2VuLgotCi0gICAgICAgIEFkZCBtYXRyaXggbGlzdCB0byBrZWVwIGVhY2gg
dGlsZSBtYXRyaXggY29ycmVzcG9uZGluZyB0byBlYWNoIGRpZmZlcmVudCB6b29tIGxldmVsIHdo
ZW4gem9vbSBsZXZlbCBpcyBjaGFuZ2VkLgotICAgICAgICBUaGVuIGJhY2tpbmcgc3RvcmUgY2Fu
IHJldXNlIHRpbGUgbWF0cml4IGJ5IGdldHRpbmcgaXQgZnJvbSB0aGlzIG1hdHJpeCBsaXN0Lgot
Ci0gICAgICAgICogZXdrL2V3a190aWxlZF9iYWNraW5nX3N0b3JlLmNwcDoKLSAgICAgICAgKF9l
d2tfdGlsZWRfYmFja2luZ19zdG9yZV9tb2RlbF9tYXRyaXhfY3JlYXRlKToKLSAgICAgICAgKF9l
d2tfdGlsZWRfYmFja2luZ19zdG9yZV9zbWFydF9jYWxjdWxhdGUpOgotICAgICAgICAoX2V3a190
aWxlZF9iYWNraW5nX3N0b3JlX3pvb21fc2V0X2ludGVybmFsKToKLSAgICAgICAgKiBld2svZXdr
X3RpbGVkX21hdHJpeC5jcHA6Ci0gICAgICAgIChld2tfdGlsZV9tYXRyaXhfZW50cnlfZ2V0KToK
LSAgICAgICAgKF9ld2tfdGlsZV9tYXRyaXhfY2VsbF9mcmVlKToKLSAgICAgICAgKF9ld2tfdGls
ZV9tYXRyaXhfdGlsZV9mcmVlKToKLSAgICAgICAgKGV3a190aWxlX21hdHJpeF9uZXcpOgotICAg
ICAgICAoZXdrX3RpbGVfbWF0cml4X3pvb21fbGV2ZWxfc2V0KToKLSAgICAgICAgKGV3a190aWxl
X21hdHJpeF9pbnZhbGlkYXRlKToKLSAgICAgICAgKGV3a190aWxlX21hdHJpeF9mcmVlKToKLSAg
ICAgICAgKGV3a190aWxlX21hdHJpeF90aWxlX25ldyk6Ci0gICAgICAgICogZXdrL2V3a190aWxl
ZF9tYXRyaXguaDoKLQotMjAxMS0xMS0xNyAgUmFwaGFlbCBLdWJvIGRhIENvc3RhICA8a3Vib0Bw
cm9mdXNpb24ubW9iaT4KLQotICAgICAgICBbRUZMXSBDbGVhbiB1cCB0aGUgdXNlIG9mIERBVEFf
RElSIGluIHRoZSBidWlsZHN5c3RlbQotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NzI2ODEKLQotICAgICAgICBSZXZpZXdlZCBieSBEYW5pZWwgQmF0ZXMu
Ci0KLSAgICAgICAgSW5zdGVhZCBvZiBtZXNzaW5nIHdpdGggQlVJTERfREFUQV9ESVIgYW5kIFBB
UkVOVF9TQ09QRSwganVzdCB1c2UKLSAgICAgICAgVEhFTUVfQklOQVJZX0RJUiBhcyBkZWZpbmVk
IGluIE9wdGlvbnNFZmwuY21ha2UuCi0KLSAgICAgICAgKiBDTWFrZUxpc3RzRWZsLnR4dDoKLQot
MjAxMS0xMS0xNiAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgotCi0g
ICAgICAgIFtFRkxdIFVzZSBzdGFuZGFyZCBib29sZWFuZCBkYXRhIHR5cGUgaW4gc3RydWN0Lgot
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzI1NjUKLQot
ICAgICAgICBSZXZpZXdlZCBieSBNYXJ0aW4gUm9iaW5zb24uCi0KLSAgICAgICAgQ2hhbmdlICpF
aW5hX0Jvb2wqIHVzYWdlcyB3aXRoICpib29sKiBpbiBtZW1iZXIgdmFyaWFibGVzIG9mIGludGVy
bmFsIHN0cnVjdC4KLQotICAgICAgICAqIGV3ay9ld2tfY29udGV4dG1lbnUuY3BwOgotICAgICAg
ICAqIGV3ay9ld2tfZnJhbWUuY3BwOgotICAgICAgICAqIGV3ay9ld2tfdGlsZWRfYmFja2luZ19z
dG9yZS5jcHA6Ci0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLQotMjAxMS0xMS0xNiAgUmFw
aGFlbCBLdWJvIGRhIENvc3RhICA8a3Vib0Bwcm9mdXNpb24ubW9iaT4KLQotICAgICAgICBbRUZM
XSBBZGQgZXdrX3NldHRpbmdzX21lbW9yeV9jYWNoZV9jbGVhcigpLgotICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzIxNDEKLQotICAgICAgICBSZXZpZXdl
ZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KLQotICAgICAgICBUaGlzIGlzIHRoZSBz
YW1lIGFzIFF0J3MgUVdlYlNldHRpbmdzOjpjbGVhck1lbW9yeUNhY2hlcygpIGFuZCBpcwotICAg
ICAgICByZXNwb25zaWJsZSBmb3IgY2xlYXJpbmcsIGFtb25nIG90aGVycywgdGhlIHBhZ2UsIG1l
bW9yeSBhbmQgZm9udAotICAgICAgICBjYWNoZXMuCi0KLSAgICAgICAgKiBld2svZXdrX3NldHRp
bmdzLmNwcDoKLSAgICAgICAgKGV3a19zZXR0aW5nc19tZW1vcnlfY2FjaGVfY2xlYXIpOgotICAg
ICAgICAqIGV3ay9ld2tfc2V0dGluZ3MuaDoKLQotMjAxMS0xMS0xNiAgUmFwaGFlbCBLdWJvIGRh
IENvc3RhICA8a3Vib0Bwcm9mdXNpb24ubW9iaT4KLQotICAgICAgICBbRUZMXSBDbGVhbiB1cCB0
aGUgd2ViIGRhdGFiYXNlLXJlbGF0ZWQgZnVuY3Rpb25zIGluIGV3a19zZXR0aW5ncy4KLSAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyMTM5Ci0KLSAgICAg
ICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCi0KLSAgICAgICAgTW9z
dGx5IHJlbW92ZSBzb21lIHVubmVjZXNzYXJ5IEVOQUJMRShTUUxfREFUQUJBU0UpIGNoZWNrcyBh
bmQgdXNlIGEKLSAgICAgICAgbW9yZSBzdGFuZGFyZCBuYW1pbmcgc2NoZW1lIGZvciB0aGUgcmVs
YXRlZCBzdGF0aWMgdmFyaWFibGVzLgotCi0gICAgICAgICogZXdrL2V3a19zZXR0aW5ncy5jcHA6
Ci0gICAgICAgIChld2tfc2V0dGluZ3Nfd2ViX2RhdGFiYXNlX2RlZmF1bHRfcXVvdGFfZ2V0KToK
LSAgICAgICAgKGV3a19zZXR0aW5nc193ZWJfZGF0YWJhc2VfcGF0aF9zZXQpOgotICAgICAgICAo
ZXdrX3NldHRpbmdzX3dlYl9kYXRhYmFzZV9wYXRoX2dldCk6Ci0gICAgICAgICogZXdrL2V3a19z
ZXR0aW5ncy5oOiBEb2N1bWVudCB0aGUgZGVmYXVsdCB3ZWIgZGF0YWJhc2UgcGF0aCBvbiBkaXNr
LgotCi0yMDExLTExLTE2ICBSYXBoYWVsIEt1Ym8gZGEgQ29zdGEgIDxrdWJvQHByb2Z1c2lvbi5t
b2JpPgotCi0gICAgICAgIFtFRkxdIENsZWFuIHVwIHRoZSBvZmZsaW5lIGFwcHMtcmVsYXRlZCBm
dW5jdGlvbnMgaW4gZXdrX3NldHRpbmdzLgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NzIxMzIKLQotICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJv
aGRlIENocmlzdGlhbnNlbi4KLQotICAgICAgICBgZXdrX3NldHRpbmdzX2NhY2hlJyBhbmQgYGV3
a192aWV3X3NldHRpbmdfY2FjaGUnIGFyZSB0b28gY29tbW9uCi0gICAgICAgIHByZWZpeGVzIGZv
ciBjb2RlIHRoYXQgaXMgcmVsYXRlZCBvbmx5IHRvIHRoZSBIVE1MNSBhcHAgY2FjaGUKLSAgICAg
ICAgZmVhdHVyZXMuCi0KLSAgICAgICAgVXNlIGBld2tfc2V0dGluZ3NfYXBwbGljYXRpb25fY2Fj
aGUnIGFuZAotICAgICAgICBgZXdrX3ZpZXdfc2V0dGluZ19hcHBsaWNhdGlvbl9jYWNoZScgaW5z
dGVhZC4KLQotICAgICAgICBXaGlsZSBoZXJlLCBpbXByb3ZlIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZCB1c2UgYSBtb3JlIGNvbW1vbiBuYW1pbmcKLSAgICAgICAgc2NoZW1lIGZvciB0aGUgc3RhdGlj
IHZhcmlhYmxlIHdoaWNoIGhvbGRzIHRoZSBjYWNoZSBwYXRoLgotCi0gICAgICAgICogZXdrL2V3
a19tYWluLmNwcDoKLSAgICAgICAgKF9ld2tfaW5pdF9ib2R5KToKLSAgICAgICAgKiBld2svZXdr
X3NldHRpbmdzLmNwcDoKLSAgICAgICAgKGV3a19zZXR0aW5nc19hcHBsaWNhdGlvbl9jYWNoZV9w
YXRoX3NldCk6Ci0gICAgICAgIChld2tfc2V0dGluZ3NfYXBwbGljYXRpb25fY2FjaGVfcGF0aF9n
ZXQpOgotICAgICAgICAqIGV3ay9ld2tfc2V0dGluZ3MuaDoKLSAgICAgICAgKiBld2svZXdrX3Zp
ZXcuY3BwOgotICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19hcHBsaWNhdGlvbl9jYWNoZV9nZXQp
OgotICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19hcHBsaWNhdGlvbl9jYWNoZV9zZXQpOgotICAg
ICAgICAqIGV3ay9ld2tfdmlldy5oOgotCi0yMDExLTExLTE1ICBBbmRlcnMgQ2FybHNzb24gIDxh
bmRlcnNjYUBhcHBsZS5jb20+Ci0KLSAgICAgICAgSG9zdFdpbmRvdyBzY3JlZW5Ub1dpbmRvdy93
aW5kb3dUb1NjcmVlbiBzaG91bGQgYmUgc2NyZWVuVG9Sb290Vmlldy9yb290Vmlld1RvU2NyZWVu
Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjM5Nwot
Ci0gICAgICAgIFJldmlld2VkIGJ5IERhbiBCZXJuc3RlaW4uCi0KLSAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xp
ZW50RWZsOjpyb290Vmlld1RvU2NyZWVuKToKLSAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVu
dEVmbDo6c2NyZWVuVG9Sb290Vmlldyk6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21l
Q2xpZW50RWZsLmg6Ci0KLTIwMTEtMTEtMTQgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFw
cGxlLmNvbT4KLQotICAgICAgICBIb3N0V2luZG93IGludmFsaWRhdGlvbiBmdW5jdGlvbnMgc2hv
dWxkIHVzZSByb290IHZpZXcgY29vcmRpbmF0ZXMKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTcyMzM4Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgRGFuIEJl
cm5zdGVpbi4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHA6
Ci0gICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRFZmw6OmludmFsaWRhdGVSb290Vmlldyk6
Ci0gICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRFZmw6OmludmFsaWRhdGVDb250ZW50c0Fu
ZFJvb3RWaWV3KToKLSAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEVmbDo6aW52YWxpZGF0
ZUNvbnRlbnRzRm9yU2xvd1Njcm9sbCk6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21l
Q2xpZW50RWZsLmg6Ci0KLTIwMTEtMTEtMTUgIEdyemVnb3J6IEN6YWprb3dza2kgIDxnLmN6YWpr
b3dza2lAc2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW0VGTF0gVXNlIEVJTkFfU0FGRVRZX09OX05V
TExfUkVUVVJOX1ZBTCBmb3IgTlVMTCBjaGVja3MgaW5zdGVhZCBvZiBFSU5BX1NBRkVUWV9PTl9G
QUxTRV9SRVRVUk5fVkFMLgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NzAwOTEKLQotICAgICAgICBSZXZpZXdlZCBieSBGaWxpcCBQaXpsby4KLQotICAg
ICAgICBSZXBsYWNlcyBFSU5BX1NBRkVUWV9PTl9GQUxTRV9SRVRVUk5fVkFMIGJ5IEVJTkFfU0FG
RVRZX09OX05VTExfUkVUVVJOX1ZBTCBmb3IgTlVMTCBjaGVja3MgaW4gY29tcGxpYW5jZQotICAg
ICAgICB3aXRoIFdlYktpdC1FRkwgZnVuY3Rpb25zLgotCi0gICAgICAgICogZXdrL2V3a19mcmFt
ZS5jcHA6Ci0gICAgICAgIChld2tfZnJhbWVfY29udGVudHNfc2V0KToKLSAgICAgICAgKGV3a19m
cmFtZV9jb250ZW50c19hbHRlcm5hdGVfc2V0KToKLQotMjAxMS0xMS0xNCAgSm9uZ3Nlb2sgWWFu
ZyAgPGpzNDUueWFuZ0BzYW1zdW5nLmNvbT4KLQotICAgICAgICBbRUZMXSBVcGRhdGUgZXdrX2Zy
YW1lX3NjcmlwdF9leGVjdXRlIHRvIHJldHVybiB0aGUgcmVzdWx0IGZvciBKYXZhU2NyaXB0Ci0g
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTk3MgotCi0g
ICAgICAgIFJldmlld2VkIGJ5IEFudG9uaW8gR29tZXMuCi0KLSAgICAgICAgSXQgZXhlY3V0ZXMg
dGhlIGphdmFzY3JpcHQgYW5kIGNvbnZlcnRzIHRoZSByZXN1bHQgdG8gYSBzdHJpbmcgdXNpbmcg
dG9TdHJpbmcuCi0gICAgICAgIEFuZCBpdCByZXR1cm5zIHRoZSBtZW1vcnktYWxsb2NhdGVkIHBv
aW50ZXIgZm9yIHRoZSB2YWx1ZS4KLQotICAgICAgICAqIGV3ay9ld2tfZnJhbWUuY3BwOgotICAg
ICAgICAoZXdrX2ZyYW1lX3NjcmlwdF9leGVjdXRlKToKLSAgICAgICAgKiBld2svZXdrX2ZyYW1l
Lmg6Ci0KLTIwMTEtMTEtMTMgIFJhcGhhZWwgS3VibyBkYSBDb3N0YSAgPGt1Ym9AcHJvZnVzaW9u
Lm1vYmk+Ci0KLSAgICAgICAgW0VGTF0gSW1wcm92ZSB0aGUgZG9jdW1lbnRhdGlvbiBvZiBld2tf
dmlld19zZXR0aW5nX2xvY2FsX3N0b3JhZ2VfKi4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTcyMTM1Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0
aCBSb2hkZSBDaHJpc3RpYW5zZW4uCi0KLSAgICAgICAgQWRkIHNvbWUgInNlZSBhbHNvIiBwb2lu
dGVycywgbWVudGlvbiB0aGUgZGVmYXVsdCBwYXRocyB1c2VkIGZvciBsb2NhbAotICAgICAgICBz
dG9yYWdlIGFuZCBkb2N1bWVudCBob3cgdGhpbmdzIHdpbGwgbm90IGJlIHBlcnNpc3RlZCB0byBk
aXNrIGlmIGEKLSAgICAgICAgc3RvcmFnZSBwYXRoIGlzIG5vdCBzZXQuCi0KLSAgICAgICAgKiBl
d2svZXdrX3ZpZXcuaDoKLQotMjAxMS0xMS0xMyAgUmFwaGFlbCBLdWJvIGRhIENvc3RhICA8a3Vi
b0Bwcm9mdXNpb24ubW9iaT4KLQotICAgICAgICBbRUZMXSBTaW1wbGlmeSBlaW5hX3N0cmluZ3No
YXJlIHVzYWdlIGluIGV3a19zZXR0aW5ncy4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTcyMTI3Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBS
b2hkZSBDaHJpc3RpYW5zZW4uCi0KLSAgICAgICAgQWN0dWFsbHkgdXNlIHRoZSBlaW5hX3N0cmlu
Z3NoYXJlIGZ1bmN0aW9ucyBpbiBhIHNhbmUgd2F5LgotCi0gICAgICAgICogZXdrL2V3a19zZXR0
aW5ncy5jcHA6Ci0gICAgICAgIChld2tfc2V0dGluZ3Nfd2ViX2RhdGFiYXNlX3BhdGhfc2V0KTog
SnVzdCB1c2UKLSAgICAgICAgZWluYV9zdHJpbmdzaGFyZV9yZXBsYWNlIGluc3RlYWQgb2YgZG9p
bmcgbmVlZGxlc3MgY2hlY2tzIGFuZCB1c2luZwotICAgICAgICBlaW5hX3N0cmluZ3NoYXJlX2Fk
ZC4KLSAgICAgICAgKGV3a19zZXR0aW5nc19jYWNoZV9kaXJlY3RvcnlfcGF0aF9zZXQpOiBEaXR0
by4KLSAgICAgICAgKGV3a19zZXR0aW5nc19pY29uX2RhdGFiYXNlX3BhdGhfc2V0KTogRGl0dG8g
YW5kIGFsd2F5cyBjYWxsCi0gICAgICAgIGVpbmFfc3RyaW5nc2hhcmVfZGVsLCBhcyBwYXNzaW5n
IE5VTEwgdG8gaXQgaXMganVzdCBhIE5PUC4KLQotMjAxMS0xMS0xMSAgSnVuZ0ppayBMZWUgIDxq
dW5namlrLmxlZUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBbRUZMXSBSZW1vdmUgdW51c2VkIGZs
YWdzIGluIHByZS1yZW5kZXIgaW1wbGVtZW50YXRpb24KLSAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1NTA0Ci0KLSAgICAgICAgVGhlIGhpZ2ggcHJpb3Jp
dHkgcHJlLXJlbmRlciBmbGFnIHdhcyBub3QgdXNlZCBhbnl3aGVyZSwKLSAgICAgICAgc28gd2Ug
Y2FuIGdldCByaWQgb2YgdGhlIHdob2xlIGNvbmNlcHQgYW5kIGFsd2F5cyBjb25zaWRlciB0aGUg
cmVxdWVzdHMgaGF2ZSBsb3cgcHJpb3JpdHkKLQotICAgICAgICBSZXZpZXdlZCBieSBEYW5pZWwg
QmF0ZXMuCi0KLSAgICAgICAgKiBld2svZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUuY3BwOgotICAg
ICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3ByZV9yZW5kZXJfcmVxdWVzdF9hZGQpOgot
ICAgICAgICAoZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcHJlX3JlbmRlcl9yZWdpb24pOgotICAg
ICAgICAoZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcHJlX3JlbmRlcl9yZWxhdGl2ZV9yYWRpdXMp
OgotCi0yMDExLTExLTA5ICBSYXBoYWVsIEt1Ym8gZGEgQ29zdGEgIDxrdWJvQHByb2Z1c2lvbi5t
b2JpPgotCi0gICAgICAgIFtFRkxdIFJlbW92ZSB1bm5lY2Vzc2FyeSBjYXN0cyB3aGVuIGNyZWF0
aW5nIHRoZSBXZWJDb3JlU3VwcG9ydCBvYmplY3RzIGluIGV3a192aWV3LgotICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzE4OTEKLQotICAgICAgICBSZXZp
ZXdlZCBieSBBbnRvbmlvIEdvbWVzLgotCi0gICAgICAgIFRoaXMgaXMgQysrIGNvZGUsIHRoZXJl
IGlzIG5vIG5lZWQgdG8gY2FzdCB0aGUgbmV3IG9iamVjdHMgdG8gdGhlaXIKLSAgICAgICAgcGFy
ZW50cyB3aGVuIGNyZWF0aW5nIHRoZW0uCi0KLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgot
ICAgICAgICAoX2V3a192aWV3X3ByaXZfbmV3KToKLQotMjAxMS0xMS0wOSAgVG9tYXN6IE1vcmF3
c2tpICA8dC5tb3Jhd3NraUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBbRUZMXSBSZW1vdmVkIHVu
dXNlZCB2YXJpYWJsZQotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NzE4NzcKLQotICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgotCi0gICAg
ICAgIFJlbW92ZWQgdW51c2VkIHJlY3QgdmFyaWFibGUgZGVjbGFyYXRpb24gYW5kIHJlbmFtZWQg
cmVjdDEgdmFyaWFibGUgdG8gcmVjdC4KLQotICAgICAgICAqIGV3ay9ld2tfdGlsZWRfYmFja2lu
Z19zdG9yZS5jcHA6Ci0gICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfc21hcnRfY2Fs
Y3VsYXRlKToKLQotMjAxMS0xMS0wNyAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1
bmcuY29tPgotCi0gICAgICAgIFtFRkxdIE5lZWQgdG8gcmVwbGFjZSBhcGkncyBvYmplY3QgcGFy
YW1ldGVyIHdpdGggcHJvcGVyIG5hbWUuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD03MTU1MwotCi0gICAgICAgIEZpeCB3cm9uZyBwYXJhbWV0ZXIgbmFt
ZXMgaW4gdGlsZWQgYmFja2luZyBzdG9yZSBmdW5jdGlvbnMgYW5kIGV3a192aWV3X3h4eCBmaWxl
cy4KLQotICAgICAgICBSZXZpZXdlZCBieSBGaWxpcCBQaXpsby4KLQotICAgICAgICAqIGV3ay9l
d2tfdGlsZWRfYmFja2luZ19zdG9yZS5jcHA6Ci0gICAgICAgICogZXdrL2V3a192aWV3X3Npbmds
ZS5jcHA6Ci0gICAgICAgICogZXdrL2V3a192aWV3X3RpbGVkLmNwcDoKLQotMjAxMS0xMS0wNyAg
UmFwaGFlbCBLdWJvIGRhIENvc3RhICA8a3Vib0Bwcm9mdXNpb24ubW9iaT4KLQotICAgICAgICBb
RUZMXSBFbWl0IHRoZSAiZnJhbWUsY3JlYXRlZCIgc2lnbmFsIGVhcmxpZXIuCi0gICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTY5NgotCi0gICAgICAgIFJl
dmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgotCi0gICAgICAgIEZyYW1lTG9h
ZGVyOjpsb2FkVVJMSW50b0NoaWxkRnJhbWUgd2lsbCB0cmlnZ2VyIHRoZSBtYWNoaW5lcnkgdGhh
dCB3aWxsIGNhbGwKLSAgICAgICAgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkU3Rh
cnRQcm92aXNpb25hbExvYWQuIEhvd2V2ZXIsIHNpbmNlIHdlIHdlcmUKLSAgICAgICAgZW1pdHRp
bmcgdGhlICJmcmFtZSxjcmVhdGVkIiBzaWduYWwgYWZ0ZXIgdGhhdCwgYXBwbGljYXRpb25zIHdv
dWxkIGNvbm5lY3QgdG8KLSAgICAgICAgaXQgYWZ0ZXIgc29tZSBvdGhlciBmcmFtZSBzaWduYWxz
IGhhZCBhbHJlYWR5IGJlZW4gZW1pdHRlZC4gU2hvdWxkIGhlbHAgdGVzdHMKLSAgICAgICAgc3Vj
aCBhcyBodHRwL3Rlc3RzL2xvYWRpbmcvZW1wdHktc3ViZnJhbWUuaHRtbCBwYXNzLgotCi0gICAg
ICAgICogZXdrL2V3a19mcmFtZS5jcHA6Ci0gICAgICAgIChld2tfZnJhbWVfY2hpbGRfYWRkKToK
LSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoZXdrX3ZpZXdfZnJhbWVfY3Jl
YXRlKToKLQotMjAxMS0xMS0wNCAgUmFwaGFlbCBLdWJvIGRhIENvc3RhICA8a3Vib0Bwcm9mdXNp
b24ubW9iaT4KLQotICAgICAgICBbRUZMXSBEUlQ6IEZpeCB0aGUgb3JkZXIgb2YgdGhlIGl0ZW1z
IGluIHRoZSBkdW1wZWQgaGlzdG9yeSBsaXN0LgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzE1NjIKLQotICAgICAgICBJdCBkaWQgbm90IG1ha2UgbXVj
aCBzZW5zZSB0byBob2xkIHRoZSBoaXN0b3J5IGxpc3QgaW4gYSBtYXAsIGFzIHdlIGRvIG5vdCBu
ZWVkCi0gICAgICAgIHRoZSBrZXlzLiBBbmQgdGhlIHByaW50ZWQgaXRlbXMgbXVzdCBiZSBzb3J0
ZWQgYnkgdGFyZ2V0LCB3aGljaCBpcyBtb3JlIGVhc2lseQotICAgICAgICBkb25lIHdpdGggYSB2
ZWN0b3IuCi0KLSAgICAgICAgU2hvdWxkIG1ha2UgdGVzdHMgc3VjaCBhcyBodHRwL3Rlc3RzL25h
dmlnYXRpb24vZXJyb3I0MDQtZnJhbWVzLmh0bWwgcGFzcy4KLQotICAgICAgICBSZXZpZXdlZCBi
eSBBbnRvbmlvIEdvbWVzLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRy
ZWVTdXBwb3J0RWZsLmNwcDoKLSAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6Y2hp
bGRIaXN0b3J5SXRlbXMpOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVl
U3VwcG9ydEVmbC5oOgotCi0yMDExLTExLTA0ICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1A
c2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW0VGTF0gVXNlIHN0YW5kYXJkIGJvb2xlYW5kIGRhdGEg
dHlwZS4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcx
NDMzCi0KLSAgICAgICAgVGhpcyBpcyBhIGZvdXJ0aCBzdGVwIGluIG9yZGVyIHRvIGJlIG1vcmUg
Y29tcGxpYW50IHdpdGggV2ViS2l0IGNvZGluZyBzdHlsZS4KLSAgICAgICAgVXNlIHN0YW5kYXJk
IGJvb2xlYW4gZGF0YSB0eXBlIGluc3RlYWQgb2YgZWZsIGJvb2xlYW4gZGF0YSB0eXBlLiBJdCBt
YWtlcyBlZmwgcG9ydAotICAgICAgICBpcyBtb3JlIGNsb3NlIHRvIHdlYmtpdCBjb2Rpbmcgc3R5
bGUuCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgWm9sdGFuIEhlcmN6ZWcuCi0KLSAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwOgotICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKiBld2svZXdrX2NvbnRleHRt
ZW51LmNwcDoKLSAgICAgICAgKiBld2svZXdrX2Nvb2tpZXMuY3BwOgotICAgICAgICAqIGV3ay9l
d2tfZnJhbWUuY3BwOgotICAgICAgICAqIGV3ay9ld2tfaGlzdG9yeS5jcHA6Ci0gICAgICAgICog
ZXdrL2V3a19qcy5jcHA6Ci0gICAgICAgICogZXdrL2V3a19tYWluLmNwcDoKLSAgICAgICAgKiBl
d2svZXdrX25ldHdvcmsuY3BwOgotICAgICAgICAqIGV3ay9ld2tfcHJpdmF0ZS5oOgotICAgICAg
ICAqIGV3ay9ld2tfcHJvdG9jb2xfaGFuZGxlci5jcHA6Ci0gICAgICAgICogZXdrL2V3a19wcm90
b2NvbF9oYW5kbGVyX3NvdXAuY3BwOgotICAgICAgICAqIGV3ay9ld2tfc2V0dGluZ3MuY3BwOgot
ICAgICAgICAqIGV3ay9ld2tfdGlsZWRfYmFja2luZ19zdG9yZS5jcHA6Ci0gICAgICAgICogZXdr
L2V3a190aWxlZF9tYXRyaXguY3BwOgotICAgICAgICAqIGV3ay9ld2tfdGlsZWRfbW9kZWwuY3Bw
OgotICAgICAgICAqIGV3ay9ld2tfdXRpbC5jcHA6Ci0gICAgICAgICogZXdrL2V3a192aWV3LmNw
cDoKLSAgICAgICAgKiBld2svZXdrX3ZpZXdfc2luZ2xlLmNwcDoKLSAgICAgICAgKiBld2svZXdr
X3ZpZXdfdGlsZWQuY3BwOgotCi0yMDExLTExLTAzICBUb21hc3ogTW9yYXdza2kgIDx0Lm1vcmF3
c2tpQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxdIEFkZGVkIGV3a190aWxlX21lbW9yeV9z
aXplX2dldCBmdW5jdGlvbgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NzEyMTMKLQotICAgICAgICBSZXZpZXdlZCBieSBBbmRlcnMgQ2FybHNzb24uCi0K
LSAgICAgICAgQWRkZWQgdGhlIGV3a190aWxlX21lbW9yeV9zaXplX2dldCBmdW5jdGlvbiByZXR1
cm5zIHNpemUgb2YgdXNlZCBtZW1vcnkgYnkgZ2l2ZW4gdGlsZS4gU2ltcGxpZnkgYW5kIGNsZWFu
dXAKLSAgICAgICAgdGhlIGNvZGUuCi0KLSAgICAgICAgKiBld2svZXdrX3RpbGVkX21vZGVsLmNw
cDoKLSAgICAgICAgKGV3a190aWxlX21lbW9yeV9zaXplX2dldCk6Ci0gICAgICAgIChld2tfdGls
ZV91bnVzZWRfY2FjaGVfZmx1c2gpOgotICAgICAgICAoZXdrX3RpbGVfdW51c2VkX2NhY2hlX3Rp
bGVfZ2V0KToKLSAgICAgICAgKGV3a190aWxlX3VudXNlZF9jYWNoZV90aWxlX3B1dCk6Ci0gICAg
ICAgICogZXdrL2V3a190aWxlZF9tb2RlbC5oOgotCi0yMDExLTExLTAzICBEYXJpbiBBZGxlciAg
PGRhcmluQGFwcGxlLmNvbT4KLQotICAgICAgICBDaGFuZ2UgcmVtYWluaW5nIGNhbGxlcnMgb2Yg
cmVsZWFzZVJlZiB0byBjYWxsIGxlYWtSZWYKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTcxNDIyCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gRmlz
aGVyLgotCi0gICAgICAgICogZXdrL2V3a19oaXN0b3J5LmNwcDoKLSAgICAgICAgKGV3a19oaXN0
b3J5X2l0ZW1fbmV3KTogVXNlIGxlYWtSZWYuCi0KLTIwMTEtMTEtMDIgIERhcmluIEFkbGVyICA8
ZGFyaW5AYXBwbGUuY29tPgotCi0gICAgICAgIENoYW5nZSByZW1haW5pbmcgY2FsbGVycyBvZiBy
ZWxlYXNlUmVmIHRvIGNhbGwgbGVha1JlZgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NzE0MjIKLQotICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBGaXNo
ZXIuCi0KLSAgICAgICAgKiBld2svZXdrX2hpc3RvcnkuY3BwOgotICAgICAgICAoZXdrX2hpc3Rv
cnlfaXRlbV9uZXcpOiBVc2UgbGVha1JlZi4KLQotMjAxMS0xMS0wMyAgTWFyayBIYWhuZW5iZXJn
ICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgotCi0gICAgICAgIERlLXZpcnR1YWxpemUgSlNPYmpl
Y3Q6OmNsYXNzTmFtZQotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NzE0MjgKLQotICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgotCi0gICAgICAg
IEFkZGVkIGNsYXNzTmFtZSB0byB0aGUgTWV0aG9kVGFibGUsIGNoYW5nZWQgYWxsIHRoZSB2aXJ0
dWFsIAotICAgICAgICBpbXBsZW1lbnRhdGlvbnMgb2YgY2xhc3NOYW1lIHRvIHN0YXRpYyBvbmVz
LCBhbmQgcmVwbGFjZWQgCi0gICAgICAgIGFsbCBjYWxsIHNpdGVzIHdpdGggY29ycmVzcG9uZGlu
ZyBsb29rdXBzIGluIHRoZSBNZXRob2RUYWJsZS4KLQotICAgICAgICAqIGV3ay9ld2tfanMuY3Bw
OgotICAgICAgICAoZXdrX2pzX25wb2JqZWN0X3RvX29iamVjdCk6Ci0KLTIwMTEtMTEtMDMgIEZh
ZHkgU2FtdWVsICA8ZnNhbXVlbEBjaHJvbWl1bS5vcmc+Ci0KLSAgICAgICAgUmVtb3ZpbmcgbGlu
ZSBpbiBjb21wdXRlVmlld3BvcnRBdHRyaWJ1dGVzIHRoYXQgZW5mb3JjZXMgYSBtaW5pbXVtIHNj
YWxlIGZhY3RvciB0byBuZXZlciBhbGxvdyB6b29taW5nIG91dCBtb3JlIHRoYW4gdmlld3BvcnQK
LSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcwNjA5Ci0K
LSAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCi0KLSAgICAg
ICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoX2V3a192aWV3X3ZpZXdwb3J0X2F0dHJp
YnV0ZXNfY29tcHV0ZSk6Ci0KLTIwMTEtMTEtMDMgIERvbmd3b28gSW0gIDxkdy5pbUBzYW1zdW5n
LmNvbT4KLQotICAgICAgICBbRUZMXSBFbmFibGUgdGhlIFBhZ2UgVmlzaWJpbGl0eSBBUEkuCi0g
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02OTEyNwotCi0g
ICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCi0KLSAgICAgICAgSW1wbGVtZW50IG1ldGhv
ZHMgdG8gZW5hYmxlIHRoZSBQYWdlIFZpc2liaWxpdHkgQVBJIG9uIEVGTCBwb3J0LgotICAgICAg
ICAoaHR0cDovL3d3dy53My5vcmcvVFIvcGFnZS12aXNpYmlsaXR5KQotCi0gICAgICAgIFdoZW4g
dGhlIHZpc2liaWxpdHkgc3RhdHVzIG9mIHRoZSBwYWdlIGlzIGNoYW5nZWQsIGJyb3dzZXIgY291
bGQKLSAgICAgICAgaW5mb3JtIHRoZSBzdGF0dXMgdG8gV2ViS2l0IHVzaW5nIHRoZSBBUElzIGJl
bG93LgotCi0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDogQWRkIHNldHRlci9nZXR0ZXIgZnVu
Y3Rpb25zIHRvIHF1ZXJ5L3NldCBwYWdlIHZpc2liaWxpdHkgc3RhdGUuCi0gICAgICAgIChld2tf
dmlld192aXNpYmlsaXR5X3N0YXRlX3NldCk6IFNldHMgdGhlIHBhZ2UgdmlzaWJpbGl0eSBzdGF0
dXMuCi0gICAgICAgIChld2tfdmlld192aXNpYmlsaXR5X3N0YXRlX2dldCk6IEdldHMgdGhlIHBh
Z2UgdmlzaWJpbGl0eSBzdGF0dXMuCi0gICAgICAgICogZXdrL2V3a192aWV3Lmg6IEFkZCBwdWJs
aWMgcHJvdG90eXBlcy4KLQotMjAxMS0xMS0wMiAgVG9tIFNlcGV6ICA8dHNlcGV6QGNocm9taXVt
Lm9yZz4KLQotICAgICAgICBYU1NBdWRpdG9yIGlzIHNpbGVudAotICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzA5NzMKLQotICAgICAgICBSZXZpZXdlZCBi
eSBBZGFtIEJhcnRoLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpZERl
dGVjdFhTUyk6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwu
aDoKLQotMjAxMS0xMS0wMiAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3VuZy5jb20+Ci0K
LSAgICAgICAgW0VGTF0gRml4IGJ1aWxkIGJyZWFrIHdoZW4gREVCVUdfTUVNX0xFQUtTIGlzIGVu
YWJsZWQuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03
MTM0OQotCi0gICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4LgotCi0gICAgICAgICogZXdrL2V3
a190aWxlZF9iYWNraW5nX3N0b3JlLmNwcDoKLSAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19z
dG9yZV9zbWFydF9kZWwpOiByZW1vdmUgd3JvbmcgYXNzaWdubWVudAotICAgICAgICAqIGV3ay9l
d2tfdGlsZWRfbWF0cml4LmNwcDogZGVmaW5lIF9fU1REQ19GT1JNQVRfTUFDUk9TIHRvIHVzZSBQ
Ukl1NjQKLSAgICAgICAgKGV3a190aWxlX21hdHJpeF9mcmVlKTogcy90aWxlTWF0cml4bS90aWxl
TWF0cml4Ci0gICAgICAgIChld2tfdGlsZV9tYXRyaXhfZGJnKTogcy90bS90aWxlTWF0cml4Ci0g
ICAgICAgICogZXdrL2V3a190aWxlZF9tb2RlbC5jcHA6IGRlZmluZSBfX1NURENfRk9STUFUX01B
Q1JPUyB0byB1c2UgUFJJdTY0Ci0gICAgICAgIChfZXdrX3RpbGVfYWNjb3VudF9nZXQpOiByZW1v
dmUgUkVBTExPQ19PUl9PT01fUkVUCi0KLTIwMTEtMTEtMDIgIENoYW5nU2VvayBPaCAgPHNoaXZh
bWlkb3dAZ21haWwuY29tPgotCi0gICAgICAgIFtFRkxdIERpcnR5IGFyZWEgaXMgbm90IHVwZGF0
ZWQgd2l0aCByZXF1ZXN0QW5pbWF0aW9uRnJhbWUuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MDE3MAotCi0gICAgICAgIFNvbWUgYWRkaXRpb25hbCBk
aXJ0eSBhcmVhcyBjYXVzZWQgYnkgcmUtbGF5b3V0IGhhdmUgaWdub3JlZAotICAgICAgICBzaW5j
ZSB1cGRhdGVMYXlvdXRBbmRTeXRsZUlmTmVlZGVSZWN1cnNpdmUgaXMgY2FsbGVkIGFmdGVyIGdh
dGhlcmluZyBkaXJ0eSBhcmVhIHRvIHJlcGFpbnQuCi0gICAgICAgIFNvIGV3a192aWV3X2xheW91
dF9pZl9uZWVkZWRfcmVjdXJzaXZlIGlzIHJlbG9jYXRlZCBiZWZvcmUgZ2V0dGluZyBkaXJ0eSBh
cmVhcy4KLQotICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KLQotICAgICAgICAqIGV3
ay9ld2tfdmlld19zaW5nbGUuY3BwOgotICAgICAgICAoX2V3a192aWV3X3NpbmdsZV9zbWFydF9y
ZXBhaW50c19wcm9jZXNzKToKLQotMjAxMS0xMC0zMSAgUmFwaGFlbCBLdWJvIGRhIENvc3RhICA8
a3Vib0Bwcm9mdXNpb24ubW9iaT4KLQotICAgICAgICBbRUZMXSBSZW5hbWUgZXdrX3ZpZXdfc2V0
dGluZ19zY3JpcHRzX3dpbmRvd19vcGVuX3tnZXQsc2V0fSBhZnRlciByOTM4MzMKLSAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxMjI4Ci0KLSAgICAgICAg
UmV2aWV3ZWQgYnkgQW50b25pbyBHb21lcy4KLQotICAgICAgICByOTM4MzMgaGFzIGludHJvZHVj
ZWQKLSAgICAgICAgZXdrX3ZpZXdfc2V0dGluZ19zY3JpcHRzX2Nhbl9jbG9zZV93aW5kb3dzX3tn
ZXQsc2V0fSwgYnV0IGl0cwotICAgICAgICBjb3VudGVycGFydCB0byBhbGxvdyBzY3JpcHRzIHRv
IG9wZW4gd2luZG93cyBrZXB0IGl0cyB3ZWlyZCBuYW1lLgotCi0gICAgICAgIFRoaXMgbWFrZXMg
dGhlIGZ1bmN0aW9ucyB0byBhbGxvdyB3aW5kb3dzIHRvIG9wZW4gYW5kIGNsb3NlIHdpbmRvd3Mg
dG8KLSAgICAgICAgaGF2ZSBjb25mdXNpbmdseSBkaWZmZXJlbnQgbmFtZSBwYXR0ZXJucy4KLQot
ICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChfZXdrX3ZpZXdfcHJpdl9uZXcp
OgotICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19zY3JpcHRzX2Nhbl9vcGVuX3dpbmRvd3NfZ2V0
KToKLSAgICAgICAgKGV3a192aWV3X3NldHRpbmdfc2NyaXB0c19jYW5fb3Blbl93aW5kb3dzX3Nl
dCk6Ci0gICAgICAgICogZXdrL2V3a192aWV3Lmg6Ci0KLTIwMTEtMTAtMzEgIFRvbWFzeiBNb3Jh
d3NraSAgPHQubW9yYXdza2lAc2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW0VGTF0gTWFrZSBjYWNo
ZSBmbHVzaCB3aGVuIG1heCBzaXplIG9mIGNhY2hlIGhhcyBiZWVuIGNoYW5nZWQKLSAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcwODA1Ci0KLSAgICAgICAg
UmV2aWV3ZWQgYnkgUnlvc3VrZSBOaXdhLgotCi0gICAgICAgIENhbGxzIHRoZSBld2tfdGlsZV91
bnVzZWRfY2FjaGVfYXV0b19mbHVzaCBmdW5jdGlvbiBhZnRlciBjaGFuZ2luZyBtYXgKLSAgICAg
ICAgc2l6ZSBvZiBjYWNoZSB3aGVuIGV3a190aWxlX3VudXNlZF9jYWNoZV9tYXhfc2V0IGlzIGNh
bGxlZC4gV2l0aG91dAotICAgICAgICB0aGlzIGNoYW5nZSB3aGVuIG5ldyB2YWx1ZSBpcyBsb3dl
ciB0aGFuIHRoZSBvbGQgb25lIHRoZSBjYWNoZSBtYXkgdXNlCi0gICAgICAgIG1vcmUgbWVtb3J5
IHRoYW4gbWF4IHZhbHVlIHNldC4gVGhpcyBzaXR1YXRpb24gaXMgbm90IGV4cGVjdGVkIGJ5IHRo
ZQotICAgICAgICB1c2VyLgotCi0gICAgICAgICogZXdrL2V3a190aWxlZF9tb2RlbC5jcHA6Ci0g
ICAgICAgIChld2tfdGlsZV91bnVzZWRfY2FjaGVfbWF4X3NldCk6Ci0KLTIwMTEtMTAtMjggIEpv
Y2hlbiBFaXNpbmdlciAgPGpvY2hlbkBjaHJvbWl1bS5vcmc+Ci0KLSAgICAgICAgUmVuYW1lIGEg
bnVtYmVyIG9mIG1ldGhvZHMgbWVudGlvbmluZyBKYXZhU2NyaXB0IHRvIGp1c3QgU2NyaXB0IGlu
c3RlYWQKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcx
MTA1Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KLQotICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZCk6
Ci0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAgKF9ld2tfdmlld19wcml2X25l
dyk6Ci0gICAgICAgIChld2tfdmlld19zZXR0aW5nX2VuYWJsZV9zY3JpcHRzX3NldCk6Ci0KLTIw
MTEtMTAtMjcgIEd1c3Rhdm8gTGltYSBDaGF2ZXMgIDxnbGltYUBwcm9mdXNpb24ubW9iaT4KLQot
ICAgICAgICBbRUZMXSBGaXggdmFyaWFibGUgcmVuYW1pbmcgaXNzdWUgaW5zaWRlIGV3a192aWV3
LmNwcAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzEw
MjAKLQotICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeC4KLQotICAgICAgICAqIGV3ay9ld2tf
dmlldy5jcHA6Ci0gICAgICAgIChld2tfdmlld19qc19vYmplY3RfYWRkKToKLQotMjAxMS0xMC0y
NiAgWmFsYW4gQnVqdGFzICA8emJ1anRhc0BnbWFpbC5jb20+Ci0KLSAgICAgICAgTmFtZSB2aWV3
cG9ydCBjaGFuZ2UgZXZlbnQgY29uc2lzdGVudGx5LgotICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzA5MDEKLQotICAgICAgICBSZXZpZXdlZCBieSBLZW5u
ZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KLQotICAgICAgICBVc2UgVmlld3BvcnRQcm9wZXJ0aWVz
RGlkQ2hhbmdlIHRlcm0gY29uc2lzdGVudGx5IHRocm91Z2hvdXQgV2ViS2l0LgotCi0gICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6
OkNocm9tZUNsaWVudEVmbDo6ZGlzcGF0Y2hWaWV3cG9ydFByb3BlcnRpZXNEaWRDaGFuZ2UpOgot
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oOgotCi0yMDExLTEwLTI2
ICBHcnplZ29yeiBDemFqa293c2tpICA8Zy5jemFqa293c2tpQHNhbXN1bmcuY29tPgotCi0gICAg
ICAgIFtFRkxdIFByaXZhdGUgZnVuY3Rpb24gX2V3a192aWV3X3ZpZXdwb3J0X2F0dHJpYnV0ZXNf
Y29tcHV0ZSB0YWtlcyBhbiBpbnRlcm5hbCBkYXRhIG9mIGV3a192aWV3LgotICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjYzNjYKLQotICAgICAgICBSZXZp
ZXdlZCBieSBSeW9zdWtlIE5pd2EuCi0KLSAgICAgICAgUGFzc2VzIHRvIF9ld2tfdmlld192aWV3
cG9ydF9hdHRyaWJ1dGVzX2NvbXB1dGUgYW4gaW50ZXJuYWwgZGF0YSBvZiBld2tfdmlldyBpbnN0
ZWFkIG9mIHRoZSB2aWV3IG9iamVjdC4KLSAgICAgICAgQWRkcyB0byBld2tfdmlld192aWV3cG9y
dF9hdHRyaWJ1dGVzX2dldCBOVUxMIGNoZWNrcyB0byBhdm9pZCB1bmV4cGVjdGVkIHJlc3VsdHMg
c2luY2UgdGhpcyBpcyBBUEkuCi0KLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAg
ICAoX2V3a192aWV3X3ZpZXdwb3J0X2F0dHJpYnV0ZXNfY29tcHV0ZSk6Ci0gICAgICAgIChld2tf
dmlld192aWV3cG9ydF9hdHRyaWJ1dGVzX2dldCk6Ci0KLTIwMTEtMTAtMjUgIEt3YW5nSHl1ayBL
aW0gIDxoeXVraS5raW1Ac2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgRml4IG9jY3VycmVuY2Ugb2Yg
dW5wYWludGVkIHRpbGVzIHdoaWxlIHNjcm9sbGluZyBhbmQgem9vbWluZy4KLSAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcwNzExCi0KLSAgICAgICAgUmV2
aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KLQotICAgICAgICBDYXN0IG9uZSBvZiBvcGVyYXRlZXMgdG8g
ZmxvYXQgdHlwZSB3aGVuIGV3a190aWxlZF9iYWNraW5nX3N0b3JlIGNhbGN1bGF0ZSB0aWxlcyBs
aXN0IG9uIHZpZXdwb3J0LgotICAgICAgICBGb3IgdGhlIHByb3BlciBjYWxjdWxhdGlvbiB0byBn
ZW5lcmF0ZSBhIGZsb2F0IG51bWJlciwgYXQgbGVhc3Qgb25lIG9mIG9wZXJhdGVlcyBtdXN0IGJl
IGEgZmxvYXQgdHlwZS4KLSAgICAgICAgQnV0LCBjdXJyZW50bHkgYm90aCB0d28gb3BlcmF0ZWVz
IHRvIGNhbGN1bGF0ZSB0aGUgbnVtYmVyIG9mIHRpbGVzIG9uIHZpZXdwb3J0IHJvdXRpbmUgYXJl
bid0IGZsb2F0IHR5cGUsCi0gICAgICAgIHNvIGl0IGdlbmVyYXRlcyBzbWFsbGVyIHJlc3VsdCB0
aGFuIGV4cGVjdGVkIHJlc3VsdCB3aGVuIGl0IGlzIHVzaW5nIGNlaWwgQVBJLgotICAgICAgICBB
cyBhIHJlc3VsdCwgaXQgY2FuIGxvc2UgYSBsaW5lIG9mIHRpbGVzIHdoaWNoIHNob3VsZCBiZSBk
aXNwbGF5ZWQgaW4gdmlld3BvcnQgYXJlYSB3aGlsZSBzY3JvbGxpbmcgYW5kIHpvb21pbmcuCi0K
LSAgICAgICAgKiBld2svZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUuY3BwOgotICAgICAgICAoX2V3
a190aWxlZF9iYWNraW5nX3N0b3JlX3JlY2FsY19yZW5kZXJlcnMpOgotICAgICAgICAoZXdrX3Rp
bGVkX2JhY2tpbmdfc3RvcmVfem9vbV93ZWFrX3NldCk6Ci0KLTIwMTEtMTAtMjUgIEt3YW5nSHl1
ayBLaW0gIDxoeXVraS5raW1Ac2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW0VGTF0gTW92ZSBhc3Np
Z25tZW50IG9mIHNvbWUgdmFyaWFibGVzIG91dCBvZiBsb29wIGZvciBld2tfdGlsZWRfYmFja2lu
Z19zdG9yZS4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTY3NTg4Ci0KLSAgICAgICAgU29tZSBvZiB2YXJpYWJsZXMgd2hpY2ggYXJlbid0IHJlbGF0ZWQg
d2l0aCBsb29wIGNvdW50IG9yIG90aGVyIHZhcmlhYmxlcwotICAgICAgICBpbnNpZGUgb2YgbG9v
cCBhcmUgbW92ZWQgb3V0IG9mIGxvb3AuCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0
aC4KLQotICAgICAgICAqIGV3ay9ld2tfdGlsZWRfYmFja2luZ19zdG9yZS5jcHA6Ci0gICAgICAg
IChfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdmlld193cmFwX3VwKToKLSAgICAgICAgKF9ld2tf
dGlsZWRfYmFja2luZ19zdG9yZV92aWV3X3dyYXBfZG93bik6Ci0gICAgICAgIChfZXdrX3RpbGVk
X2JhY2tpbmdfc3RvcmVfdmlld193cmFwX2xlZnQpOgotICAgICAgICAoX2V3a190aWxlZF9iYWNr
aW5nX3N0b3JlX3ZpZXdfd3JhcF9yaWdodCk6Ci0KLTIwMTEtMTAtMjUgIE1hcmsgSGFobmVuYmVy
ZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4KLQotICAgICAgICBSZW1vdmUgcHV0VmlydHVhbAot
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzA3NDAKLQot
ICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KLQotICAgICAgICBSZW1vdmVkIGFs
bCBkZWNsYXJhdGlvbnMgYW5kIGRlZmluaXRpb25zIG9mIHB1dFZpcnR1YWwuCi0gICAgICAgIEFs
c28gcmVwbGFjZWQgYWxsIGNhbGwgc2l0ZXMgdG8gcHV0VmlydHVhbCB3aXRoIGEgCi0gICAgICAg
IGNvcnJlc3BvbmRpbmcgbG9va3VwIGluIHRoZSBNZXRob2RUYWJsZS4KLQotICAgICAgICAqIGV3
ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChld2tfdmlld19qc19vYmplY3RfYWRkKToKLQotMjAx
MS0xMC0yNSAgSXZhbiBCcmlhbm8gIDxpdmFuQHByb2Z1c2lvbi5tb2JpPgotCi0gICAgICAgIFtF
RkxdIEFkZCBmdW5jdGlvbiB0byBnZXQgZ2VvbWV0cnkgb2YgZm9jdXNlZCBlbGVtZW50Ci0gICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MDcyOAotCi0gICAg
ICAgIFJldmlld2VkIGJ5IEFudG9uaW8gR29tZXMuCi0KLSAgICAgICAgQWRkZWQgZnVuY3Rpb24g
dG8gZXdrX2ZyYW1lIHRvIGdldCB0aGUgZ2VvbWV0cnkgb2YgdGhlIGZvY3VzZWQKLSAgICAgICAg
ZWxlbWVudCB3aXRoaW4gdGhlIGZyYW1lIG9iamVjdC4KLQotICAgICAgICAqIGV3ay9ld2tfZnJh
bWUuY3BwOgotICAgICAgICAoZXdrX2ZyYW1lX2ZvY3VzZWRfZWxlbWVudF9nZW9tZXRyeV9nZXQp
OiBSZXRyaWV2ZXMgdGhlIGdlb21ldHJ5IG9mCi0gICAgICAgIHRoZSBmb2N1c2VkIGVsZW1lbnQg
d2l0aGluIHRoZSBnaXZlbiBmcmFtZSBvYmplY3QuCi0gICAgICAgICogZXdrL2V3a19mcmFtZS5o
OgotCi0yMDExLTEwLTI1ICBJdmFuIEJyaWFubyAgPGl2YW5AcHJvZnVzaW9uLm1vYmk+Ci0KLSAg
ICAgICAgW0VGTF0gQWRkIG5lY2Vzc2FyeSBpbmZvcm1hdGlvbiBmb3IgY2FsbGJhY2sgaW5zdHJv
cGVjdGlvbgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NzA3MzUKLQotICAgICAgICBSZXZpZXdlZCBieSBBbnRvbmlvIEdvbWVzLgotCi0gICAgICAgIFBy
b3ZpZGUgdGhlIGluZm9ybWF0aW9uIGFib3V0IHNtYXJ0IGNhbGxiYWNrcyBlbWl0dGVkIGJ5IHRo
ZSBld2tfdmlldwotICAgICAgICBvYmplY3QsIHNvIHRoYXQgdGhlc2UgY2FuIGJlIGVhc2lseSBm
b3J3YXJkZWQgYnkgb3RoZXIgb2JqZWN0cyBvciB1c2VkCi0gICAgICAgIGJ5IGJpbmRpbmdzIGlu
IG90aGVyIGxhbmd1YWdlcyB3aXRob3V0IGhhdmluZyB0byBrZWVwIHRyYWNrIG9mIGFsbCBvZgot
ICAgICAgICB0aGVtIG1hbnVhbGx5LgotCi0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAg
ICAgICAgKGV3a192aWV3X2Jhc2Vfc21hcnRfc2V0KToKLQotMjAxMS0xMC0yNCAgSXZhbiBCcmlh
bm8gIDxpdmFuQHByb2Z1c2lvbi5tb2JpPgotCi0gICAgICAgIFtFRkxdIEJ1aWxkIGZpeC4gUmVu
YW1lIGFsbCBpbnN0YW5jZXMgb2YgYSB2YXJpYWJsZSB3aGVuIGl0IGdldHMgY2hhbmdlZAotICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzA3MzIKLQotICAg
ICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeC4KLQotICAgICAgICAqIGV3ay9ld2tfanMuY3BwOgot
ICAgICAgICAoZXdrX2pzX3Byb3BlcnR5X3NldCk6IHMvb2JqL29iamVjdC8KLSAgICAgICAgKiBl
d2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoZXdrX3ZpZXdfanNfb2JqZWN0X2FkZCk6IHMvZXhl
Yy9leGVjdXRlU3RhdGUvCi0KLTIwMTEtMTAtMjEgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtp
bUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBbRUZMXSBDaGFuZ2UgZWZsIHN0eWxlIGxvY2FsIHZh
cmlhYmxlcyB3aXRoIFdlYktpdCBjb2RpbmcgU3R5bGUuCi0gICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02OTk4OAotCi0gICAgICAgIFJldmlld2VkIGJ5IEFu
dG9uaW8gR29tZXMuCi0KLSAgICAgICAgQ2hhbmdlICpzZCogdmFyaWFibGUgbmFtZSB3aXRoICpz
bWFydERhdGEqLiBTb21lIHZhcmlhYmxlcyB3ZXJlIGNoYW5nZWQgYnkgQnVnIDY5OTg4LgotCi0g
ICAgICAgICogZXdrL2V3a19mcmFtZS5jcHA6Ci0gICAgICAgIChld2tfZnJhbWVfdmlld19nZXQp
OgotICAgICAgICAoZXdrX2ZyYW1lX3VyaV9zZXQpOgotICAgICAgICAoZXdrX2ZyYW1lX3VyaV9n
ZXQpOgotICAgICAgICAoZXdrX2ZyYW1lX2NvbnRlbnRzX3NpemVfZ2V0KToKLSAgICAgICAgKGV3
a19mcmFtZV9sb2FkX2RvY3VtZW50X2ZpbmlzaGVkKToKLSAgICAgICAgKGV3a19mcmFtZV9sb2Fk
X2Vycm9yKToKLSAgICAgICAgKGV3a19mcmFtZV90aXRsZV9zZXQpOgotICAgICAgICAoZXdrX2Zy
YW1lX3VyaV9jaGFuZ2VkKToKLSAgICAgICAgKGV3a19mcmFtZV9lZGl0b3JfY2xpZW50X3NlbGVj
dGlvbl9jaGFuZ2VkKToKLSAgICAgICAgKGV3a19mcmFtZV9lZGl0b3JfY2xpZW50X2NvbnRlbnRz
X2NoYW5nZWQpOgotICAgICAgICAoRVdLUHJpdmF0ZTo6Y29yZUZyYW1lKToKLSAgICAgICAgKiBl
d2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoX2V3a192aWV3X3NtYXJ0X3ByZV9yZW5kZXJfcmVn
aW9uKToKLSAgICAgICAgKF9ld2tfdmlld19zbWFydF9wcmVfcmVuZGVyX3JlbGF0aXZlX3JhZGl1
cyk6Ci0gICAgICAgIChfZXdrX3ZpZXdfc21hcnRfcHJlX3JlbmRlcl9jYW5jZWwpOgotICAgICAg
ICAoX2V3a192aWV3X3NtYXJ0X2Rpc2FibGVfcmVuZGVyKToKLSAgICAgICAgKF9ld2tfdmlld19z
bWFydF9lbmFibGVfcmVuZGVyKToKLSAgICAgICAgKEVXS1ByaXZhdGU6OmNvcmVQYWdlKToKLSAg
ICAgICAgKiBld2svZXdrX3ZpZXdfc2luZ2xlLmNwcDoKLSAgICAgICAgKF9ld2tfdmlld19zaW5n
bGVfc21hcnRfYWRkKToKLSAgICAgICAgKF9ld2tfdmlld19zaW5nbGVfc21hcnRfcmVzaXplKToK
LQotMjAxMS0xMC0yMSAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgot
Ci0gICAgICAgIFtFRkxdIENoYW5nZSBlZmwgc3R5bGUgbG9jYWwgdmFyaWFibGVzIHdpdGggV2Vi
S2l0IGNvZGluZyBTdHlsZS4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTY5OTg4Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21lcy4KLQot
ICAgICAgICBJbiBjb21tb24gd2l0aCBCdWcgNjkwNzMsIHRoaXMgaXMgYSB0aGlyZCBzdGVwIGlu
IG9yZGVyIHRvIGJlIG1vcmUgY29tcGxpYW50IHdpdGggV2ViS2l0IGNvZGluZyBzdHlsZS4KLSAg
ICAgICAgV2UgaGF2ZSB1c2VkIG9uZS1sZXR0ZXJ8IHR3by1sZXR0ZXIgbG9jYWwgdmFyaWFibGUg
YWNjb3JkaW5nIHRvIGVmbCBzdHlsZS4gSG93ZXZlciwgaXQncwotICAgICAgICBtb3JlIGRpZmZp
Y3VsdCBmb3Igb3RoZXIgcmV2aWV3ZXJzIHRvIHJldmlldyBFRkwgcGF0Y2hlcy4gU28sIHRoaXMg
cGF0Y2ggY2hhbmdlcyBlZmwgc3R5bGUKLSAgICAgICAgbG9jYWwgdmFyaWFibGUgd2l0aCBtZWFu
aW5nZnVsIG9uZS4KLQotICAgICAgICAtIFVzZSAqbWVudSogaW5zdGVhZCBvZiAqbyogaW4gY29t
bWVudCBvZiBld2tfY29udGV4dG1lbnUuY3BwLgotICAgICAgICAtIFVzZSAqbGlzdCogaW5zdGVh
ZCBvZiAqbCogbG9jYWwgdmFyaWFibGUKLSAgICAgICAgLSBVc2UgKmV3a1BvbGljeSogaW5zdGVh
ZCBvZiAqZXdrX3BvbGljeSogaW4gZXdrX2Nvb2tpZXMuY3BwCi0gICAgICAgIC0gVXNlICpzbWFy
dERhdGEqIGluc3RlYWQgb2YgKnNkKiBsb2NhbCB2YXJpYWJsZSBmb3IgRXdrX1hYWFhfU21hcnRf
RGF0YSBzdHJ1Y3QuCi0gICAgICAgIC0gVXNlICp3aWR0aCosICpoZWlnaHQqIGluc3RlYWQgb2Yg
KncqLCAqaCogbG9jYWwgdmFyaWFibGVzLgotICAgICAgICAtIFVzZSAqc2Nyb2xsWCosICpzY3Jv
bGxZKiwgKnNjcm9sbFdpZHRoKiwgKnNjcm9sbEhlaWdodCosICpjZW50ZXJYKiwgKmNlbnRlclkq
LCAqZGVsdGFYKiwgKmRlbHRhWSosCi0gICAgICAgICpiYXNlWCosICpiYXNlWSogaW5zdGVhZCBv
ZiAqc3gqLCAqc3kqLCAqc3cqLCAqc2gqLCAqY3gqLCAqY3kqLCAqZHgqLCAqZHkqLCAqYngqLCAq
YnkqLgotICAgICAgICAtIFVzZSAqcmVkKiwgKmdyZWVuKiwgKmJsdWUqLCAqYWxwaGEqLCAqY29u
dGVudFJlZCosICpjb250ZW50R3JlZW4qLCAqY29udGVudEJsdWUqIGFuZCAqY29udGVudEFscGhh
KgotICAgICAgICBpbnN0ZWFkIG9mICpyKiwqZyosKmIqLCphKiwqY3IqLCpjZyosKmNiKiwqY2Eq
LgotICAgICAgICAtIFVzZSAqdGlsZVBvc2l0aW9uWCosICp0aWxlUG9zaXRpb25ZKiBpbnN0ZWFk
IG9mICpveCosKm95KiBpbiB0aWxlZCBiYWNraW5nc3RvcmUgZmlsZXMuCi0gICAgICAgIC0gVXNl
ICpvYmplY3QqIGluc3RlYWQgb2YgKm9iaiogCi0gICAgICAgIC0gVXNlICpsZW5ndGgqIGluc3Rl
YWQgb2YgKmxlbioKLSAgICAgICAgLSBVc2UgKmNvcmVGcmFtZSogaW5zdGVhZCBvZiAqY2YqCi0g
ICAgICAgIC0gVXNlICpidWZmZXIqIGluc3RlYWQgb2YgKmJ1ZioKLSAgICAgICAgLSBVc2UgKml0
ZW0qIGluc3RlYWQgb2YgKmkqCi0gICAgICAgIC0gVXNlICpjdXJyZW50Q29sdW1uKiwgKmN1cnJl
bnRSb3cqIGluc3RlYWQgb2YgKm1fY29sKiwgKm1fcm93KiAKLSAgICAgICAgLSBSZW1vdmUgIl8i
IGluIGxvY2FsIHZhcmlhYmxlLgotICAgICAgICAtIEFuZCBzbyBvbi4KLQotICAgICAgICAqIGV3
ay9ld2tfYXV0aF9zb3VwLmNwcDoKLSAgICAgICAgKiBld2svZXdrX2NvbnRleHRtZW51LmNwcDoK
LSAgICAgICAgKiBld2svZXdrX2Nvb2tpZXMuY3BwOgotICAgICAgICAqIGV3ay9ld2tfZnJhbWUu
Y3BwOgotICAgICAgICAqIGV3ay9ld2tfaGlzdG9yeS5jcHA6Ci0gICAgICAgICogZXdrL2V3a19q
cy5jcHA6Ci0gICAgICAgICogZXdrL2V3a19tYWluLmNwcDoKLSAgICAgICAgKiBld2svZXdrX3Nl
dHRpbmdzLmNwcDoKLSAgICAgICAgKiBld2svZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUuY3BwOgot
ICAgICAgICAqIGV3ay9ld2tfdGlsZWRfbWF0cml4LmNwcDoKLSAgICAgICAgKiBld2svZXdrX3Rp
bGVkX21vZGVsLmNwcDoKLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotCi0yMDExLTEwLTIx
ICBHcnplZ29yeiBDemFqa293c2tpICA8Zy5jemFqa293c2tpQHNhbXN1bmcuY29tPgotCi0gICAg
ICAgIFtFRkxdIGV3a192aWV3X21vZGVfZ2V0IHVzZXMgZGVkaWNhdGVkIG1hY3JvcyBpbnN0ZWFk
IG9mIHN0YW5kYXJkIE5VTEwgY2hlY2tpbmcuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD02NTY4MAotCi0gICAgICAgIFJldmlld2VkIGJ5IFJ5b3N1a2Ug
Tml3YS4KLQotICAgICAgICBHZW5lcmFsbHkgQVBJIG1ldGhvZHMgdXNpbmcgbWFjcm9zIE5VTEwg
Y2hlY2tpbmcgaW4gV2ViS2l0LUVGTC4KLSAgICAgICAgVGhlIG1hY3JvcyBlbnN1cmUgdGhhdCBj
b2RlIGlzIHNtYWxsZXIsIHZlcnNpb24gb2YgdmlldyBvYmplY3QKLSAgICAgICAgaXMgY2hlY2tl
ZCBhbmQgZXJyb3IgbWVzc2FnZSBpcyBkaXNwbGF5ZWQgaWYgTlVMTCBpcyBwYXNzZWQuCi0KLSAg
ICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoZXdrX3ZpZXdfbW9kZV9nZXQpOgot
Ci0yMDExLTEwLTE5ICBSYWZhZWwgQW50b2dub2xsaSAgPGFudG9nbm9sbGlAcHJvZnVzaW9uLm1v
Ymk+Ci0KLSAgICAgICAgW0VGTF0gRml4IHR5cG9zIG9uIGV3a192aWV3IGFuZCBld2tfanMuCi0g
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MDQzMAotCi0g
ICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4LgotCi0gICAgICAgIEZpeGVzIGZvciB0eXBvcyB0
aGF0IHdlcmUgaW50cm9kdWNlZCB3aGVuIHJlbmFtaW5nIHZhcmlhYmxlcyB0byBmb2xsb3cKLSAg
ICAgICAgd2Via2l0IGNvZGluZyBzdHlsZS4KLQotICAgICAgICAqIGV3ay9ld2tfanMuY3BwOgot
ICAgICAgICAoZXdrX2pzX3Byb3BlcnR5X3NldCk6Ci0gICAgICAgIChld2tfanNfY2xhc3NfbmV3
KToKLSAgICAgICAgKGV3a19qc19ucG9iamVjdF90b19vYmplY3QpOgotICAgICAgICAoZXdrX2pz
X29iamVjdF9uZXcpOgotICAgICAgICAoZXdrX2pzX29iamVjdF9pbnZva2UpOgotICAgICAgICAo
ZXdrX2pzX29iamVjdF90eXBlX2dldCk6Ci0gICAgICAgIChld2tfanNfb2JqZWN0X3R5cGVfc2V0
KToKLSAgICAgICAgKGV3a19qc192YXJpYW50X2ZyZWUpOgotICAgICAgICAqIGV3ay9ld2tfdmll
dy5jcHA6Ci0gICAgICAgIChld2tfdmlld19qc19vYmplY3RfYWRkKToKLQotMjAxMS0xMC0xOCAg
UmFwaGFlbCBLdWJvIGRhIENvc3RhICA8a3Vib0Bwcm9mdXNpb24ubW9iaT4KLQotICAgICAgICBb
RUZMXSBEUlQ6IENsZWFyIGxpc3Qgb2YgdmlzaXRlZCBwYWdlcyBiZWZvcmUgZWFjaCB0ZXN0Lgot
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzAzNTUKLQot
ICAgICAgICBSZXZpZXdlZCBieSBBbnRvbmlvIEdvbWVzLgotCi0gICAgICAgIEFkZCBld2tfaGlz
dG9yeV9jbGVhciBhcyBhIHdheSB0byBjbGVhciB0aGUgbGlzdCBvZiB2aXNpdGVkIHBhZ2VzIGlu
IGEKLSAgICAgICAgRXdrX0hpc3RvcnksIGluIGEgc2ltaWxhciBmYXNoaW9uIHRvIFF0J3MgUVdl
Ykhpc3Rvcnk6OmNsZWFyKCkuCi0KLSAgICAgICAgKiBld2svZXdrX2hpc3RvcnkuY3BwOgotICAg
ICAgICAoZXdrX2hpc3RvcnlfY2xlYXIpOgotICAgICAgICAqIGV3ay9ld2tfaGlzdG9yeS5oOgot
Ci0yMDExLTEwLTE4ICBHcnplZ29yeiBDemFqa293c2tpICA8Zy5jemFqa293c2tpQHNhbXN1bmcu
Y29tPgotCi0gICAgICAgIFtFRkxdIFJlbW92ZSBjb25zdCBtb2RpZmllciBmcm9tIGN0eF9tZW51
IGZ1bmN0aW9ucy4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTcwMDkwCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KLQotICAgICAg
ICBGdW5jdGlvbnMgZXdrX2NvbnRleHRfbWVudV9zaG93IGFuZCBld2tfY29udGV4dF9tZW51X2N1
c3RvbV9nZXQKLSAgICAgICAgaGF2ZSBnb3QgY29uc3QgbW9kaWZlciB0byBlbnN1cmUgdGhhdCBF
d2tfQ29udGV4dF9NZW51IHdvbid0IGJlCi0gICAgICAgIGNoYW5nZWQuIFRoZSBtZXRob2RzIGVt
aXQgZXZlbnRzIHRocm91Z2gKLSAgICAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2Fs
bCB3aXRoIEV3a19Db250ZXh0X01lbnUgYXMgcGFyYW1ldGVyCi0gICAgICAgIHdoaWNoIGlzIGNv
bnZlcnRlZCB0byB2b2lkICouIEluIHRoaXMgY2FzZSBhbiBhcHBsaWNhdGlvbiB3aGljaAotICAg
ICAgICByZWNlaXZlcyB0aG9zZSBldmVudHMgbWF5IGNoYW5nZSBFd2tfQ29udGV4dF9NZW51Lgot
Ci0gICAgICAgIEFkZGl0aW9uYWx5IHRoZSBuYW1lIG9mIGV3a19jb250ZXh0X21lbnVfY3VzdG9t
X2dldCBoYXMgYmVlbiBjaGFuZ2VkCi0gICAgICAgIHRvIGV3a19jb250ZXh0X21lbnVfY3VzdG9t
aXplIGJlY2F1c2UgYW4gYXBwbGljYXRpb24gaXMgYWJsZSB0bwotICAgICAgICBtb2RpZnkgdGhl
IGl0ZW1zIG9mIGNvbnRleHQgbWVudS4KLQotICAgICAgICAqIGV3ay9ld2tfY29udGV4dG1lbnUu
Y3BwOgotICAgICAgICAoZXdrX2NvbnRleHRfbWVudV9jdXN0b21pemUpOgotICAgICAgICAoZXdr
X2NvbnRleHRfbWVudV9zaG93KToKLSAgICAgICAgKiBld2svZXdrX3ByaXZhdGUuaDoKLQotMjAx
MS0xMC0xNyAgUmFwaGFlbCBLdWJvIGRhIENvc3RhICA8a3Vib0Bwcm9mdXNpb24ubW9iaT4KLQot
ICAgICAgICBbRUZMXSBFeHBvc2UgdGhlIGtpdCgpIGZyYW1lIGZ1bmN0aW9uIHRvIHRoZSByZXN0
IG9mIGV3ay4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTcwMjUzCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21lcy4KLQotICAgICAgICBO
b3cgdGhhdCB3ZSBoYXZlIHRoZSBFV0tQcml2YXRlIG5hbWVzcGFjZSwgaXQgbWFrZXMgc2Vuc2Ug
dG8gbWFrZSB0aGUKLSAgICAgICAga2l0KCkgZnVuY3Rpb24gYWNjZXNzaWJsZSB0aGVyZSBpbnN0
ZWFkIG9mIGhhdmluZyBpdCBhcyBhIHN0YXRpYyBsb2NhbAotICAgICAgICBmdW5jdGlvbiBpbiBl
d2tfZnJhbWUuCi0KLSAgICAgICAgV2hpbGUgb24gaXQsIGdldCByaWQgb2YgZXdrX2ZyYW1lX2Nv
cmVfZ2V0LCB3aGljaCBpcyBvYnNvbGV0ZSBhZnRlcgotICAgICAgICBFV0tQcml2YXRlOjpjb3Jl
RnJhbWUuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuY3BwOgot
ICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50RWZsOjpyZXNwb25kVG9DaGFuZ2VkU2VsZWN0
aW9uKToKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHA6
Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6Y2FsbFBvbGljeUZ1bmN0
aW9uKToKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERl
Y2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbik6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxv
YWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToK
LSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaWRUcmFuc2ZlckNoaWxk
RnJhbWVUb05ld0RvY3VtZW50KToKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50
RWZsOjpkaXNwYXRjaERpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZCk6Ci0gICAgICAgIChXZWJD
b3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hDcmVhdGVQYWdlKToKLSAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpjcmVhdGVOZXR3b3JraW5nQ29udGV4dCk6
Ci0gICAgICAgICogZXdrL2V3a19mcmFtZS5jcHA6Ci0gICAgICAgIChfZXdrX2ZyYW1lX2xvYWRl
cl9lZmxfZ2V0KToKLSAgICAgICAgKF9ld2tfZnJhbWVfY2hpbGRyZW5faXRlcmF0b3JfbmV4dCk6
Ci0gICAgICAgIChld2tfZnJhbWVfY2hpbGRfZmluZCk6Ci0gICAgICAgIChld2tfZnJhbWVfaGl0
X3Rlc3RfbmV3KToKLSAgICAgICAgKEVXS1ByaXZhdGU6OmtpdEZyYW1lKToKLSAgICAgICAgKiBl
d2svZXdrX3ByaXZhdGUuaDoKLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAo
ZXdrX3ZpZXdfc2V0dGluZ19lbmNvZGluZ19jdXN0b21fZ2V0KToKLSAgICAgICAgKGV3a192aWV3
X3NldHRpbmdfZW5jb2RpbmdfY3VzdG9tX3NldCk6Ci0KLTIwMTEtMTAtMTcgIFJhcGhhZWwgS3Vi
byBkYSBDb3N0YSAgPGt1Ym9AcHJvZnVzaW9uLm1vYmk+Ci0KLSAgICAgICAgW0VGTF0gRG8gbm90
IGNoZWNrIGZvciBGcmFtZTo6Y29udGVudFJlbmRlcmVyKCkgaW4gZXdrX3ZpZXdfcmVwYWludC4K
LSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcwMTE4Ci0K
LSAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCi0KLSAgICAg
ICAgV2hlbiB3ZSBoYXZlIGEgc2Nyb2xsYmFyIHdpdGggYW4gYWN0dWFsIHdpZHRoLCB0aGVyZSBt
aWdodCBiZSBhIGNhbGwKLSAgICAgICAgdG8gQ2hyb21lQ2xpZW50RWZsOjppbnZhbGlkYXRlQ29u
dGVudHNBbmRXaW5kb3coKSBhZnRlcgotICAgICAgICBEb2N1bWVudDo6ZGV0YWNoKCkgd2FzIGNh
bGxlZCwgbWFraW5nIHRoZSBjYWxsIHRvIGNvbnRlbnRSZW5kZXJlcigpCi0gICAgICAgIHJldHVy
biAwIGV2ZW4gdGhvdWdoIGV2ZXJ5dGhpbmcgaXMgZmluZS4KLQotICAgICAgICBFeGFtcGxlIHRl
c3QgY2FzZTogYW5pbWF0aW9ucy9hbmltYXRpb24tc2hvcnRoYW5kLmh0bWwuCi0KLSAgICAgICAg
KiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoZXdrX3ZpZXdfcmVwYWludCk6Ci0KLTIwMTEt
MTAtMTcgIFJhcGhhZWwgS3VibyBkYSBDb3N0YSAgPGt1Ym9AcHJvZnVzaW9uLm1vYmk+Ci0KLSAg
ICAgICAgW0VGTF0gU2V0IGEgZGVmYXVsdCBjaGFyc2V0IHdoZW4gY3JlYXRpbmcgYSB2aWV3Lgot
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njk3NzEKLQot
ICAgICAgICBSZXZpZXdlZCBieSBBbnRvbmlvIEdvbWVzLgotCi0gICAgICAgIE1vc3QgKG9yIGFs
bCkgcG9ydHMgZGVmYXVsdCB0byBpc28tODg1OS0xIHdoZW4gY3JlYXRpbmcgYSB2aWV3IChvciB0
aGVpcgotICAgICAgICBlcXVpdmFsZW50IG9mIGEgdmlldyksIHNvIHdlIHNob3VsZCBkbyB0aGF0
IHRvby4KLQotICAgICAgICBUaGlzIG1ha2VzIGZhc3QvZG9tL0RvY3VtZW50L2RvY3VtZW50LWNo
YXJzZXQuaHRtbCBwYXNzLgotCi0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAg
KF9ld2tfdmlld19wcml2X25ldyk6Ci0KLTIwMTEtMTAtMTQgIE1hcmsgSGFobmVuYmVyZyAgPG1o
YWhuZW5iZXJnQGFwcGxlLmNvbT4KLQotICAgICAgICBSZW5hbWUgdmlydHVhbCBwdXQgdG8gcHV0
VmlydHVhbAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
Njk4NTEKLQotICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KLQotICAgICAgICBSZW5h
bWVkIHZpcnR1YWwgdmVyc2lvbnMgb2YgcHV0IHRvIHB1dFZpcnR1YWwgaW4gcHJlcHJhdGlvbiBm
b3IgCi0gICAgICAgIGFkZGluZyB0aGUgc3RhdGljIHB1dCB0byB0aGUgTWV0aG9kVGFibGUgaW4g
Q2xhc3NJbmZvIHNpbmNlIHRoZSAKLSAgICAgICAgY29tcGlsZXIgZ2V0cyBtYWQgaWYgdGhlIHZp
cnR1YWwgYW5kIHN0YXRpYyB2ZXJzaW9ucyBoYXZlIHRoZSBzYW1lIAotICAgICAgICBuYW1lLgot
Ci0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAgKGV3a192aWV3X2pzX29iamVj
dF9hZGQpOgotCi0yMDExLTEwLTE0ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBs
ZS5jb20+Ci0KLSAgICAgICAgUmVuYW1lIHZpcnR1YWwgcHV0IHRvIHB1dFZpcnR1YWwKLSAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY5ODUxCi0KLSAgICAg
ICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCi0KLSAgICAgICAgUmVuYW1lZCB2aXJ0dWFsIHZl
cnNpb25zIG9mIHB1dCB0byBwdXRWaXJ0dWFsIGluIHByZXByYXRpb24gZm9yIAotICAgICAgICBh
ZGRpbmcgdGhlIHN0YXRpYyBwdXQgdG8gdGhlIE1ldGhvZFRhYmxlIGluIENsYXNzSW5mbyBzaW5j
ZSB0aGUgCi0gICAgICAgIGNvbXBpbGVyIGdldHMgbWFkIGlmIHRoZSB2aXJ0dWFsIGFuZCBzdGF0
aWMgdmVyc2lvbnMgaGF2ZSB0aGUgc2FtZSAKLSAgICAgICAgbmFtZS4KLQotICAgICAgICAqIGV3
ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChld2tfdmlld19qc19vYmplY3RfYWRkKToKLQotMjAx
MS0xMC0xNCAgUmFwaGFlbCBLdWJvIGRhIENvc3RhICA8a3Vib0Bwcm9mdXNpb24ubW9iaT4KLQot
ICAgICAgICBbRUZMXSBCdW1wIGNsYXNzIHZlcnNpb24gYWZ0ZXIgcjk3NDIxLgotICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzAxMDIKLQotICAgICAgICBS
ZXZpZXdlZCBieSBKb3NlcGggUGVjb3Jhcm8uCi0KLSAgICAgICAgcjk3NDIxIGNoYW5nZWQgdGhl
IHNpZ25hdHVyZSBvZiB0aGUgcnVuX29wZW5fcGFuZWwgdmlydHVhbCBtZXRob2QgaW4KLSAgICAg
ICAgRXdrX1NtYXJ0X0NsYXNzLCBzbyB3ZSBuZWVkIHRvIGJ1bXAgdGhlIGNsYXNzIHZlcnNpb24u
Ci0KLSAgICAgICAgKiBld2svZXdrX3ZpZXcuaDoKLQotMjAxMS0xMC0xNCAgUmFwaGFlbCBLdWJv
IGRhIENvc3RhICA8a3Vib0Bwcm9mdXNpb24ubW9iaT4KLQotICAgICAgICBbRUZMXSBBZGQgRHVt
cFJlbmRlclRyZWVTdXBwb3J0RWZsCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD02ODQ1OAotCi0gICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUg
Q2hyaXN0aWFuc2VuLgotCi0gICAgICAgIFRoaXMgY2xhc3MgaXMgc2ltaWxhciB0byB0aGVpciBj
b3VudGVycGFydHMgcHJlc2VudCBpbiB0aGUgUXQgYW5kIEdUSysKLSAgICAgICAgcG9ydHMsIGFu
ZCBpdCBpcyByZXNwb25zaWJsZSBmb3IgcHJvdmlkaW5nIGFuIGludGVyZmFjZSB0byBjZXJ0YWlu
Ci0gICAgICAgIFdlYkNvcmUgbWV0aG9kcyBuZWVkZWQgYnkgRHVtcFJlbmRlclRyZWUuCi0KLSAg
ICAgICAgKiBDTWFrZUxpc3RzRWZsLnR4dDogQ29uZGl0aW9uYWxseSBhZGQgdGhlIHN2ZyBkaXJl
Y3RvcmllcyB0byB0aGUKLSAgICAgICAgaW5jbHVkZSBwYXRoLgotICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHA6IEFkZGVkLgotICAgICAgICAoRHVt
cFJlbmRlclRyZWVTdXBwb3J0RWZsOjpEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwpOgotICAgICAg
ICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjp+RHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsKToK
LSAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6YWN0aXZlQW5pbWF0aW9uc0NvdW50
KToKLSAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6Y2xlYXJGcmFtZU5hbWUpOgot
ICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpjbGVhck9wZW5lcik6Ci0gICAgICAg
IChEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OmNvdW50ZXJWYWx1ZUJ5RWxlbWVudElkKToKLSAg
ICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6ZnJhbWVDaGlsZHJlbik6Ci0gICAgICAg
IChEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OmZyYW1lUGFyZW50KToKLSAgICAgICAgKER1bXBS
ZW5kZXJUcmVlU3VwcG9ydEVmbDo6bGF5b3V0RnJhbWUpOgotICAgICAgICAoRHVtcFJlbmRlclRy
ZWVTdXBwb3J0RWZsOjpudW1iZXJPZlBhZ2VzKToKLSAgICAgICAgKER1bXBSZW5kZXJUcmVlU3Vw
cG9ydEVmbDo6bnVtYmVyT2ZQYWdlc0ZvckVsZW1lbnRJZCk6Ci0gICAgICAgIChEdW1wUmVuZGVy
VHJlZVN1cHBvcnRFZmw6OnBhdXNlQW5pbWF0aW9uKToKLSAgICAgICAgKER1bXBSZW5kZXJUcmVl
U3VwcG9ydEVmbDo6cGF1c2VTVkdBbmltYXRpb24pOgotICAgICAgICAoRHVtcFJlbmRlclRyZWVT
dXBwb3J0RWZsOjpwYXVzZVRyYW5zaXRpb24pOgotICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBw
b3J0RWZsOjpwZW5kaW5nVW5sb2FkRXZlbnRDb3VudCk6Ci0gICAgICAgIChEdW1wUmVuZGVyVHJl
ZVN1cHBvcnRFZmw6OnJlbmRlclRyZWVEdW1wKToKLSAgICAgICAgKER1bXBSZW5kZXJUcmVlU3Vw
cG9ydEVmbDo6cmVzcG9uc2VNaW1lVHlwZSk6Ci0gICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBv
cnRFZmw6OnJlc3VtZUFuaW1hdGlvbnMpOgotICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0
RWZsOjpzZWxlY3Rpb25SZWN0YW5nbGUpOgotICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0
RWZsOjpzdWl0YWJsZURSVEZyYW1lTmFtZSk6Ci0gICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBv
cnRFZmw6OnN1c3BlbmRBbmltYXRpb25zKToKLSAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9y
dEVmbDo6ZmluZFN0cmluZyk6Ci0gICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6Omdh
cmJhZ2VDb2xsZWN0b3JDb2xsZWN0KToKLSAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEVm
bDo6Z2FyYmFnZUNvbGxlY3RvckNvbGxlY3RPbkFsdGVybmF0ZVRocmVhZCk6Ci0gICAgICAgIChE
dW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OmphdmFTY3JpcHRPYmplY3RzQ291bnQpOgotICAgICAg
ICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjp3b3JrZXJUaHJlYWRDb3VudCk6Ci0gICAgICAg
IChEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OmNoaWxkSGlzdG9yeUl0ZW1zKToKLSAgICAgICAg
KER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6aGlzdG9yeUl0ZW1UYXJnZXQpOgotICAgICAgICAo
RHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjppc1RhcmdldEl0ZW0pOgotICAgICAgICAoRHVtcFJl
bmRlclRyZWVTdXBwb3J0RWZsOjpzZXRNb2NrU2Nyb2xsYmFyc0VuYWJsZWQpOgotICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5oOiBBZGRlZC4KLSAgICAg
ICAgKiBld2svZXdrX2ZyYW1lLmNwcDoKLSAgICAgICAgKEVXS1ByaXZhdGU6OmNvcmVGcmFtZSk6
IEV4cG9ydCB0aGUgV2ViQ29yZTo6RnJhbWUqIHJlbGF0ZWQgdG8gYW4KLSAgICAgICAgZXdrX2Zy
YW1lLgotICAgICAgICAqIGV3ay9ld2tfaGlzdG9yeS5jcHA6IFJlbW92ZSBmdW5jdGlvbnMgd2hp
Y2ggaGF2ZSBiZWVuIG1vdmVkIHRvCi0gICAgICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC4K
LSAgICAgICAgKF9ld2tfaGlzdG9yeV9pdGVtX2xpc3RfZ2V0KTogX2V3a19oaXN0b3J5X2l0ZW1f
bmV3IC0+Ci0gICAgICAgIGV3a19oaXN0b3J5X2l0ZW1fbmV3X2Zyb21fY29yZS4KLSAgICAgICAg
KGV3a19oaXN0b3J5X2hpc3RvcnlfaXRlbV9iYWNrX2dldCk6IERpdHRvLgotICAgICAgICAoZXdr
X2hpc3RvcnlfaGlzdG9yeV9pdGVtX2N1cnJlbnRfZ2V0KTogRGl0dG8uCi0gICAgICAgIChld2tf
aGlzdG9yeV9oaXN0b3J5X2l0ZW1fZm9yd2FyZF9nZXQpOiBEaXR0by4KLSAgICAgICAgKGV3a19o
aXN0b3J5X2hpc3RvcnlfaXRlbV9udGhfZ2V0KTogRGl0dG8uCi0gICAgICAgIChld2tfaGlzdG9y
eV9pdGVtX25ldyk6IERpdHRvLgotICAgICAgICAoZXdrX2hpc3RvcnlfaXRlbV9uZXdfZnJvbV9j
b3JlKTogUmVuYW1lIGZyb20gX2V3a19oaXN0b3J5X2l0ZW1fbmV3LgotICAgICAgICAoRVdLUHJp
dmF0ZTo6Y29yZUhpc3RvcnlJdGVtKTogRXhwb3J0IHRoZSBXZWJDb3JlOjpIaXN0b3J5SXRlbSoK
LSAgICAgICAgcmVsYXRlZCB0byBhbiBFd2tfSGlzdG9yeV9JdGVtLgotICAgICAgICAqIGV3ay9l
d2tfcHJpdmF0ZS5oOiBDcmVhdGUgdGhlIEVXS1ByaXZhdGUgbmFtZXNwYWNlLCByZW1vdmUgZnVu
Y3Rpb25zCi0gICAgICAgIHdoaWNoIGhhdmUgYmVlbiBtb3ZlZCB0byBEdW1wUmVuZGVyVHJlZVN1
cHBvcnRFZmwuCi0gICAgICAgICogZXdrL2V3a191dGlsLmNwcDogUmVtb3ZlIGZ1bmN0aW9ucyB3
aGljaCBoYXZlIGJlZW4gbW92ZWQgdG8KLSAgICAgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZs
LgotICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChFV0tQcml2YXRlOjpjb3Jl
UGFnZSk6IEV4cG9ydCB0aGUgV2ViQ29yZTo6UGFnZSogcmVsYXRlZCB0byBhbgotICAgICAgICBl
d2tfdmlldy4KLQotMjAxMS0xMC0xMyAgUmFwaGFlbCBLdWJvIGRhIENvc3RhICA8a3Vib0Bwcm9m
dXNpb24ubW9iaT4KLQotICAgICAgICBbRUZMXTogTW92ZSBmcm9tIEZpbGVDaG9vc2VyU2V0dGlu
Z3MgZGVwcmVjYXRlZEFjY2VwdFR5cGUgdG8gYWNjZXB0TUlNRVR5cGVzCi0gICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MDAwMgotCi0gICAgICAgIFJldmll
d2VkIGJ5IEpvc2VwaCBQZWNvcmFyby4KLQotICAgICAgICBBZGFwdCB0byB0aGUgY2hhbmdlcyBp
bnRyb2R1Y2VkIGluIHI5NzMzNiBhbmQgcjk3MzM4IGJ5IHVzaW5nIGEgdmVjdG9yCi0gICAgICAg
IG9mIHN0cmluZ3MgaW5zdGVhZCBvZiBhIHNpbmdsZSBzdHJpbmcgaW4gcnVuT3BlblBhbmVsKCku
Ci0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwOgotICAgICAg
ICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZsOjpydW5PcGVuUGFuZWwpOgotICAgICAgICAqIGV3
ay9ld2tfcHJpdmF0ZS5oOgotICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChl
d2tfdmlld19ydW5fb3Blbl9wYW5lbCk6IENoYW5nZSBzaWduYXR1cmU7IGFjY2VwdCBhIFZlY3Rv
cjxTdHJpbmc+Ci0gICAgICAgIGluc3RlYWQgb2YgYSBjaGFyKi4gQnVpbGQgYW4gRWluYV9MaXN0
IHRvIHBhc3MgZm9yIGNoaWxkIGNsYXNzZXMuCi0gICAgICAgICogZXdrL2V3a192aWV3Lmg6Ci0K
LTIwMTEtMTAtMTMgIExlYW5kcm8gUGVyZWlyYSAgPGxlYW5kcm9AcHJvZnVzaW9uLm1vYmk+Ci0K
LSAgICAgICAgVW5yZXZpZXdlZDsgcmV2ZXJ0IHNvbWUgY2hhbmdlcyBpbnRyb2R1Y2VkIGluIHI5
NzMyOSB3aGljaCBhcmUKLSAgICAgICAgdW5yZWxhdGVkIHRvIHRoZSBwYXRjaCBhbmQgcmV2ZXJ0
ZWQgb3RoZXIgcGF0Y2hlcyB0aGVtc2VsdmVzLgotCi0gICAgICAgICogZXdrL2V3a19mcmFtZS5j
cHA6Ci0gICAgICAgIChfZXdrX2ZyYW1lX3NtYXJ0X2RlbCk6IFJlbW92ZSB3YXJuaW5nIGFnYWlu
LgotICAgICAgICAoZXdrX2ZyYW1lX2NvbnRlbnRzX3NpemVfZ2V0KTogQ2hlY2sgZm9yIEZyYW1l
IGFuZCBGcmFtZVZpZXcgYWdhaW4uCi0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAg
ICAgKF9ld2tfdmlld19wcml2X25ldyk6IFJldmVydCBiYWNrIGRlZmF1bHQgZm9udCBzaXplIGNo
YW5nZS4KLQotMjAxMS0xMC0xMiAgSm9zZXBoIFBlY29yYXJvICA8am9lcGVja0B3ZWJraXQub3Jn
PgotCi0gICAgICAgIFBhc3MgUGFyc2VkIEFjY2VwdCBBdHRyaWJ1dGUgTUlNRSBUeXBlcyB0byBX
ZWJLaXQgQ2xpZW50cwotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9Njk1OTgKLQotICAgICAgICBSZXZpZXdlZCBieSBLZW50IFRhbXVyYS4KLQotICAgICAg
ICBFRkwgdXNlcyB0aGUgZGVwcmVjYXRlZCBhY2NlcHQgc3RyaW5nLiBUaGV5IGNhbiBzd2l0Y2gK
LSAgICAgICAgdG8gYW4gRWluYV9MaXN0IGlmIHRoZXkgd2FudCB0byB1cGRhdGUgdGhlaXIgQVBJ
LgotCi0gICAgICAgICogc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwOgotICAgICAgICAoV2ViS2l0
OjpDaHJvbWVDbGllbnRJbXBsOjpydW5PcGVuUGFuZWwpOgotCi0yMDExLTEwLTEyICBHeXV5b3Vu
ZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW0VGTF0gQ2hhbmdl
IGVmbCBzdHlsZSBwYXJhbWV0ZXIgdmFyaWFibGVzIHdpdGggV2ViS2l0IGNvZGluZyBTdHlsZQot
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjkwNzMKLQot
ICAgICAgICBSZXZpZXdlZCBieSBBbnRvbmlvIEdvbWVzLgotCi0gICAgICAgIFRoaXMgaXMgYSB0
aGlyZCBzdGVwIGluIG9yZGVyIHRvIGJlIG1vcmUgY29tcGxpYW50IHdpdGggV2ViS2l0IGNvZGlu
ZyBzdHlsZS4KLSAgICAgICAgV2UgaGF2ZSB1c2VkIG9uZS1sZXR0ZXJ8IHR3by1sZXR0ZXIgcGFy
YW1ldGVyIGFjY29yZGluZyB0byBlZmwgc3R5bGUuIEhvd2V2ZXIsIGl0J3MgbW9yZSBkaWZmaWN1
bHQKLSAgICAgICAgZm9yIG90aGVyIHJldmlld2VycyB0byByZXZpZXcgRUZMIHBhdGNoZXMuIFNv
LCB0aGlzIHBhdGNoIGNoYW5nZXMgZWZsIHN0eWxlIHBhcmFtZXRlcnMKLSAgICAgICAgd2l0aCBt
ZWFuaW5nZnVsIG9uZS4KLQotICAgICAgICBNYWpvcnMgY2hhbmdlcyBhcmUgbGlzdGVkIGJlbG93
LAotCi0gICAgICAgIC0gVXNlIGV3a0ZyYW1lIGluc3RlYWQgb2YgbyBwYXJhbWV0ZXIgaW4gZXdr
X2ZyYW1lLmNwcC4KLSAgICAgICAgLSBVc2UgZXdrVmlldyBpbnN0ZWFkIG9mIG8gcGFyYW1ldGVy
IGluIGV3a192aWV3LmNwcC4KLSAgICAgICAgLSBVc2UgbWVudSBhbmQgaXRlbSBpbnN0ZWFkIG9m
IG8gcGFyYW1ldGVyIGluIGV3a19jb250ZXh0bWVudS5jcHAuCi0gICAgICAgIC0gVXNlIGV3a1Rp
bGUgaW5zdGVhZCBvZiBvIHBhcmFtZXRlciBpbiBld2tfdGlsZV94eHguY3BwLgotICAgICAgICAt
IFVzZSB0aWxlIHBhcmFtZXRlciBuYW1lIGluc3RlYWQgb2YgdCBwYXJhbWV0ZXIgaW4gZXdrX3Rp
bGVfeHh4LmNwcC4KLSAgICAgICAgLSBVc2Ugc21hcnREYXRhIGluc3RlYWQgb2Ygc2QgcGFyYW1l
dGVyIGZvciBFd2tfWFhYWF9TbWFydF9EYXRhIHN0cnVjdC4KLSAgICAgICAgLSBVc2Ugd2lkdGgs
IGhlaWdodCBpbnN0ZWFkIG9mIHcsIGggcGFyYW1ldGVyLgotICAgICAgICAtIFVzZSB4eHhFdmVu
dCBpbnN0ZWFkIG9mIGV2IHBhcmFtZXRlciBmb3IgZXZlbnQuIChlLmcuIGRvd25FdmVudCwgdXBF
dmVudCwgd2hlZWxFdmVudCkKLSAgICAgICAgLSBVc2Ugc2Nyb2xsWCwgc2Nyb2xsWSwgc2Nyb2xs
V2lkdGgsIHNjcm9sbEhlaWdodCwgY2VudGVyWCwgY2VudGVyWSwgZGVsdGFYLCBkZWx0YVkgaW5z
dGVhZCBvZiBzeCwgeHksIHN3LAotICAgICAgICBzaCwgY3gsIGN5LCBkeCwgZHkuCi0gICAgICAg
IC0gVXNlIHRpbGVVbnVzZWRDYWNoZSBpbnN0ZWFkIG9mIHR1YyBwYXJhbWV0ZXIgaW4gdGlsZWQg
YmFja2luZyBzdG9yZS4KLSAgICAgICAgLSBVc2UgcmVkLCBncmVlbiwgYmx1ZSBhbmQgYWxwaGEg
aW5zdGVhZCBvZiByLGcsYixhLgotICAgICAgICAtIFJlbW92ZSAiXyIgZnJvbSBwYXJhbWV0ZXIg
dmFyaWFibGUuCi0gICAgICAgIC0gUnVuIGRlbWFyY2hpJ3MgY29kaW5nIHN0eWxlIHNjcmlwdCBm
b3IgZXdrX3RpbGVfeHh4LmNwcCBmaWxlcy4KLSAgICAgICAgLSBSZW1vdmUgKnZvaWQqIHBhcmFt
ZXRlciBpbiBld2tfdGlsZV94eHguY3BwJ3MgaW50ZXJuYWwgZnVuY3Rpb25zLgotCi0gICAgICAg
ICogZXdrL2V3a19hdXRoX3NvdXAuY3BwOgotICAgICAgICAqIGV3ay9ld2tfY29udGV4dG1lbnUu
Y3BwOgotICAgICAgICAqIGV3ay9ld2tfY29va2llcy5jcHA6Ci0gICAgICAgICogZXdrL2V3a19m
cmFtZS5jcHA6Ci0gICAgICAgICogZXdrL2V3a19oaXN0b3J5LmNwcDoKLSAgICAgICAgKiBld2sv
ZXdrX2pzLmNwcDoKLSAgICAgICAgKiBld2svZXdrX3Byb3RvY29sX2hhbmRsZXJfc291cC5jcHA6
Ci0gICAgICAgICogZXdrL2V3a19zZXR0aW5ncy5jcHA6Ci0gICAgICAgICogZXdrL2V3a190aWxl
ZF9iYWNraW5nX3N0b3JlLmNwcDoKLSAgICAgICAgKiBld2svZXdrX3RpbGVkX2JhY2tpbmdfc3Rv
cmUuaDoKLSAgICAgICAgKiBld2svZXdrX3RpbGVkX21hdHJpeC5jcHA6Ci0gICAgICAgICogZXdr
L2V3a190aWxlZF9tYXRyaXguaDoKLSAgICAgICAgKiBld2svZXdrX3RpbGVkX21vZGVsLmNwcDoK
LSAgICAgICAgKiBld2svZXdrX3RpbGVkX21vZGVsLmg6Ci0gICAgICAgICogZXdrL2V3a192aWV3
LmNwcDoKLSAgICAgICAgKiBld2svZXdrX3ZpZXdfc2luZ2xlLmNwcDoKLSAgICAgICAgKiBld2sv
ZXdrX3ZpZXdfdGlsZWQuY3BwOgotICAgICAgICAqIGV3ay9ld2tfd2luZG93X2ZlYXR1cmVzLmNw
cDoKLQotMjAxMS0xMC0xMCAgUmFwaGFlbCBLdWJvIGRhIENvc3RhICA8a3Vib0Bwcm9mdXNpb24u
bW9iaT4KLQotICAgICAgICBbRUZMXSBEbyBub3QgY2FjaGUgYSBmcmFtZSdzIGNvbnRlbnRzIHNp
emUuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02OTc3
MgotCi0gICAgICAgIFJldmlld2VkIGJ5IEFudG9uaW8gR29tZXMuCi0KLSAgICAgICAgQXMgcGFy
dCBvZiB0aGUgcHJvY2VzcyBvZiBleHBlcmltZW50aW5nIHdpdGggaGF2aW5nIHNjcm9sbGJhcnMg
d2l0aAotICAgICAgICBhbiBhY3R1YWwgc2l6ZSwgaXQgYmVjYW1lIGNsZWFyIHRoYXQgc2V0dGlu
ZyB0aGUgY29udGVudHMgc2l6ZSB2aWEKLSAgICAgICAgQ2hyb21lQ2xpZW50Ojpjb250ZW50c1Np
emVDaGFuZ2VkKCkgYW5kIGtlZXBpbmcgdGhlIHZhbHVlIGFyb3VuZCBkb2VzCi0gICAgICAgIG5v
dCB3b3JrLgotCi0gICAgICAgIENhc2UgaW4gcG9pbnQ6IEZyYW1lVmlldzo6YWRqdXN0Vmlld1Np
emUoKSBjYW4gcmVzdWx0IGluIG5lc3RlZAotICAgICAgICBTY3JvbGxWaWV3Ojp1cGRhdGVTY3Jv
bGxiYXJzKCkgY2FsbHMgaW4gd2hpY2ggdGhlIGlubmVybW9zdCBvbmVzIHJ1bgotICAgICAgICBD
aHJvbWVDbGllbnQ6OmNvbnRlbnRzU2l6ZUNoYW5nZWQoKSBiZWZvcmUgdGhlIG91dGVybW9zdCBv
bmVzLiBUaGlzCi0gICAgICAgIG1lYW5zIHRoZSBld2tfZnJhbWUncyBzbWFydCBkYXRhIHdpbGwg
c3RvcmUgYW4gb2xkIHZhbHVlLgotCi0gICAgICAgICogZXdrL2V3a19mcmFtZS5jcHA6Ci0gICAg
ICAgIChld2tfZnJhbWVfY29udGVudHNfc2l6ZV9nZXQpOgotICAgICAgICAoZXdrX2ZyYW1lX2Nv
bnRlbnRzX3NpemVfY2hhbmdlZCk6Ci0KLTIwMTEtMTAtMDkgIFJ5dWFuIENob2kgIDxyeXVhbi5j
aG9pQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxdIFJlZmFjdG9yIHpvb20gcmVsYXRlZCBB
UElzLgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjI4
NDIKLQotICAgICAgICBDdXJyZW50IHpvb20gYXBpcyBjYW4ndCBzdXBwb3J0IHRoZSBjYXNlIG9m
IHVzaW5nIGJvdGggcGFnZSB6b29tIGFuZCB0ZXh0Ci0gICAgICAgIHpvb20uCi0KLSAgICAgICAg
QXMgYSBmaXJzdCBzdGVwIHRvIHJlZmFjdG9yLCB0aGlzIHNwbGl0IGV3a197dmlld3xmcmFtZX1f
em9vbV97Z2V0fHNldH0KLSAgICAgICAgdG8gdXNlIGJvdGggcGFnZV96b29tIGFuZCB0ZXh0IHpv
b20gaW5kaXZpZHVhbGx5LgotICAgICAgICBJbiBhZGRpdGlvbiwgaW50cm9kdWNlIGV3a192aWV3
X3NjYWxlX3tnZXR8c2V0fSB0byBzdXBwb3J0IHByb3BvcnRpb25hbCBzY2FsaW5nLgotCi0gICAg
ICAgIGV3a192aWV3X3pvb21fe2dldHxzZXR9IHdpbGwgcmVtYWluIHVuY2hhbmdlZCB1bnRpbCB0
aGUgYmVoYXZpb3Igb2Ygc21hcnRfem9vbQotICAgICAgICB3YXMgY2hhbmdlZC4KLQotICAgICAg
ICBSZXZpZXdlZCBieSBBbnRvbmlvIEdvbWVzLgotCi0gICAgICAgICogZXdrL2V3a19mcmFtZS5j
cHA6IFJlbW92ZSBld2tfZnJhbWVfem9vbV90ZXh0X29ubHlfe2dldHxzZXR9LgotICAgICAgICAo
ZXdrX2ZyYW1lX3BhZ2Vfem9vbV9nZXQpOiBSZW5hbWVkIGZyb20gZXdrX2ZyYW1lX3pvb21fZ2V0
KCkuCi0gICAgICAgIChld2tfZnJhbWVfcGFnZV96b29tX3NldCk6IFJlbmFtZWQgZnJvbSBld2tf
ZnJhbWVfem9vbV9zZXQoKS4KLSAgICAgICAgKGV3a19mcmFtZV90ZXh0X3pvb21fZ2V0KTogRXh0
cmFjdGVkIGZyb20gZXdrX2ZyYW1lX3pvb21fZ2V0KCkuCi0gICAgICAgIChld2tfZnJhbWVfdGV4
dF96b29tX3NldCk6IEV4dHJhY3RlZCBmcm9tIGV3a19mcmFtZV96b29tX3NldCgpLgotICAgICAg
ICAqIGV3ay9ld2tfZnJhbWUuaDoKLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOiBSZW1vdmUg
ZXdrX3ZpZXdfem9vbV90ZXh0X29ubHlfe2dldHxzZXR9Ci0gICAgICAgIChfZXdrX3ZpZXdfc21h
cnRfem9vbV9zZXQpOiBDaGFuZ2UgZXdrX2ZyYW1lX3pvb21fZ2V0KCkgdG8gZXdrX2ZyYW1lX3Bh
Z2Vfem9vbV9nZXQoKS4KLSAgICAgICAgKGV3a192aWV3X3pvb21fZ2V0KTogQ2hhbmdlIGV3a19m
cmFtZV96b29tX2dldCgpIHRvIGV3a19mcmFtZV9wYWdlX3pvb21fZ2V0KCkuCi0gICAgICAgIChl
d2tfdmlld19wYWdlX3pvb21fZ2V0KTogRXh0cmFjdGVkIGZyb20gZXdrX3ZpZXdfem9vbV9nZXQo
KS4KLSAgICAgICAgKGV3a192aWV3X3BhZ2Vfem9vbV9zZXQpOiBFeHRyYWN0ZWQgZnJvbSBld2tf
dmlld196b29tX3NldCgpLgotICAgICAgICAoZXdrX3ZpZXdfc2NhbGVfZ2V0KTogQWRkZWQuCi0g
ICAgICAgIChld2tfdmlld19zY2FsZV9zZXQpOiBBZGRlZC4KLSAgICAgICAgKGV3a192aWV3X3Rl
eHRfem9vbV9nZXQpOiBFeHRyYWN0ZWQgZnJvbSBld2tfdmlld196b29tX2dldCgpLgotICAgICAg
ICAoZXdrX3ZpZXdfdGV4dF96b29tX3NldCk6IEV4dHJhY3RlZCBmcm9tIGV3a192aWV3X3pvb21f
c2V0KCkuCi0gICAgICAgIChld2tfdmlld196b29tX3dlYWtfc2V0KTogQ2hhbmdlIGV3a19mcmFt
ZV96b29tX2dldCB0byBld2tfZnJhbWVfcGFnZV96b29tX2dldCgpLgotICAgICAgICAoZXdrX3Zp
ZXdfem9vbV9hbmltYXRlZF9zZXQpOiBDaGFuZ2UgZXdrX2ZyYW1lX3pvb21fZ2V0KCkgdG8gZXdr
X2ZyYW1lX3BhZ2Vfem9vbV9nZXQoKS4KLSAgICAgICAgKGV3a192aWV3X3ByZV9yZW5kZXJfcmVn
aW9uKTogQ2hhbmdlIGV3a19mcmFtZV96b29tX2dldCgpIHRvIGV3a19mcmFtZV9wYWdlX3pvb21f
Z2V0KCkuCi0gICAgICAgIChld2tfdmlld19wcmVfcmVuZGVyX3JlbGF0aXZlX3JhZGl1cyk6IENo
YW5nZSBld2tfZnJhbWVfem9vbV9nZXQoKSB0byBld2tfZnJhbWVfcGFnZV96b29tX2dldCgpLgot
ICAgICAgICAqIGV3ay9ld2tfdmlldy5oOgotCi0yMDExLTEwLTA2ICBHeXV5b3VuZyBLaW0gIDxn
eXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW0VGTF0gQ2hhbmdlIGRhdGEgdHlw
ZSBvZiBwYXJhbWV0ZXIgaW4gZXdrX3ZpZXdfdmlld3BvcnRfYXR0cmlidXRlc19nZXQoKS4KLSAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY5NTA1Ci0KLSAg
ICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KLQotICAgICAgICBld2tfdmlld192aWV3
cG9ydF9hdHRyaWJ1dGVzX2dldCgpIGhhcyB1c2VkIGltcGxpY2l0IGNhc3RpbmcgZm9yIHdpZHRo
IGFuZCBoZWlnaHQgb2Ygdmlld3BvcnQuCi0gICAgICAgIEhvd2V2ZXIsIGl0IGlzIGJldHRlciB0
byB1c2UgKmludCogZGF0YSB0eXBlIGFzIHBhcmFtZXRlciBkYXRhIHR5cGUgaW5zdGVhZCBvZiAq
ZmxvYXQqIGNhc3RpbmcuCi0KLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAo
ZXdrX3ZpZXdfdmlld3BvcnRfYXR0cmlidXRlc19nZXQpOgotICAgICAgICAqIGV3ay9ld2tfdmll
dy5oOgotCi0yMDExLTEwLTA0ICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5j
b20+Ci0KLSAgICAgICAgW0VGTF0gT25seSBzZXQgd2hlbiB0aGUgY3VzdG9tIGVuY29kaW5nIGlz
IGRpZmZlcmVudCBmcm9tIGV4aXN0aW5nIHZhbHVlCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD02OTA2MQotCi0gICAgICAgIFJldmlld2VkIGJ5IEhhamlt
ZSBNb3JpdGEuCi0KLSAgICAgICAgT25seSBzZXQgdGhlIGN1c3RvbSBlbmNvZGluZyB2YWx1ZSBp
ZiBpdCBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgY3VycmVudCB2YWx1ZSwgdG8gYXZvaWQKLSAgICAg
ICAgcmVsb2FkaW5nIHRoZSBwYWdlLgotCi0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAg
ICAgICAgKGV3a192aWV3X3NldHRpbmdfZW5jb2RpbmdfY3VzdG9tX3NldCk6Ci0KLTIwMTEtMTAt
MDQgIFLDqW1pIER1cmFmZm9ydCAgPHJlbWkuZHVyYWZmb3J0QHN0LmNvbT4KLQotICAgICAgICBb
RUZMXSBGaXggY29tcGlsYXRpb24gd2hlbiBTUUxpdGUgYW5kL29yIGxpYnhzbHQgYXJlIG5vdCBp
bnN0YWxsZWQgaW4gL3Vzci9pbmNsdWRlCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02OTMzOAotCi0gICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4Ci0K
LSAgICAgICAgKiBDTWFrZUxpc3RzRWZsLnR4dDoKLQotMjAxMS0xMC0wMyAgUnl1YW4gQ2hvaSAg
PHJ5dWFuLmNob2lAc2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW0VGTF0gUmVuYW1lIGV3a190aWxl
ZF8qLmMgdG8gZXdrX3RpbGVkXyouY3BwCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02ODU5OQotCi0gICAgICAgIFVzZSBhIEMrKyBjb21waWxlciBmb3Ig
dGhlc2UgZmlsZXMgYW5kIGZpeCBjb21waWxlIGlzc3VlcyBhbmQgY29kaW5nIHN0eWxlLgotCi0g
ICAgICAgIFJldmlld2VkIGJ5IEhhamltZSBNb3JpdGEuCi0KLSAgICAgICAgKiBDTWFrZUxpc3Rz
RWZsLnR4dDoKLSAgICAgICAgKiBld2svZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUuY3BwOiBSZW5h
bWVkIGZyb20gU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a190aWxlZF9iYWNraW5nX3N0b3JlLmMu
Ci0gICAgICAgICogZXdrL2V3a190aWxlZF9iYWNraW5nX3N0b3JlLmg6Ci0gICAgICAgICogZXdr
L2V3a190aWxlZF9tYXRyaXguY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdC9lZmwvZXdr
L2V3a190aWxlZF9tYXRyaXguYy4KLSAgICAgICAgKiBld2svZXdrX3RpbGVkX21vZGVsLmNwcDog
UmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdGlsZWRfbW9kZWwuYy4KLQot
MjAxMS0wOS0yOSAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgotCi0g
ICAgICAgIFtFRkxdIFVzZSBDKysgdHlwZSBjYXN0IGluc3RlYWQgb2YgQyBzdHlsZSB0eXBlIGNh
c3QKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4MzIx
Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgTWFydGluIFJvYmluc29uLgotCi0gICAgICAgIFRoaXMg
aXMgYSBzZWNvbmQgc3RlcCBpbiBvcmRlciB0byBiZSBtb3JlIGNvbXBsaWFudCB3aXRoIFdlYktp
dCBjb2Rpbmcgc3R5bGUuCi0gICAgICAgIFRoZSBzZWNvbmQgc3RlcCBpcyB0byBjaGFuZ2UgQy10
eXBlIGNhc3Rpbmcgd2l0aCBDKystdHlwZSBjYXN0aW5nIGluIC5jcHAgZmlsZXMuCi0KLSAgICAg
ICAgSW4gYWRkaXRpb24sIHJlbWFpbmVkIGVmbCBzdHlsZSAnKicgcG9pbnRlciBwbGFjZW1lbnRz
IGFyZSBtb3ZlZCB0byB0aGUgcmlnaHQgcGxhY2UgYXMgd2VsbC4KLQotICAgICAgICAqIGV3ay9l
d2tfYXV0aF9zb3VwLmNwcDoKLSAgICAgICAgKiBld2svZXdrX2NvbnRleHRtZW51LmNwcDoKLSAg
ICAgICAgKiBld2svZXdrX2ZyYW1lLmNwcDoKLSAgICAgICAgKiBld2svZXdrX2hpc3RvcnkuY3Bw
OgotICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgICogZXdrL2V3a192aWV3X3Np
bmdsZS5jcHA6Ci0gICAgICAgICogZXdrL2V3a192aWV3X3RpbGVkLmNwcDoKLQotMjAxMS0wOS0y
OSAgUmFwaGFlbCBLdWJvIGRhIENvc3RhICA8a3Vib0Bwcm9mdXNpb24ubW9iaT4KLQotICAgICAg
ICBbRUZMXSBBUEkgdG8gZ2V0IHBsYWluIHRleHQgb2YgdGhlIGZyYW1lCi0gICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NzExNAotCi0gICAgICAgIFJldmll
d2VkIGJ5IFJ5b3N1a2UgTml3YS4KLQotICAgICAgICBBZGQgYSBmdW5jdGlvbiB0byByZXR1cm4g
YSBmcmFtZSdzIGNvbnRlbnRzIGNvbnZlcnRlZCB0byBwbGFpbiB0ZXh0LAotICAgICAgICBhcyBh
bHJlYWR5IGV4cG9zZWQgYnkgb3RoZXIgcG9ydHMgYW5kIG5lZWRlZCBieSBEUlQgd2hlbiBkdW1w
aW5nIGEKLSAgICAgICAgZnJhbWUncyBjb250ZW50cy4KLQotICAgICAgICAqIGV3ay9ld2tfZnJh
bWUuY3BwOgotICAgICAgICAoZXdrX2ZyYW1lX3BsYWluX3RleHRfZ2V0KToKLSAgICAgICAgKiBl
d2svZXdrX2ZyYW1lLmg6Ci0KLTIwMTEtMDktMjggIEt3YW5nSHl1ayBLaW0gIDxoeXVraS5raW1A
c2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW0VGTF0gUmVtb3ZlIHVzZWxlc3MgYXNzaWdubWVudCBj
b2RlIGluIF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV96b29tX3NldF9pbnRlcm5hbC4KLSAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4NTk0Ci0KLSAgICAg
ICAgQXMgdGhlIDFzdCBhc3NpZ25tZW50IG9mIGxvY2FsIHZhcmlhYmxlIGJ4IGluIF9ld2tfdGls
ZWRfYmFja2luZ19zdG9yZV96b29tX3NldF9pbnRlcm5hbAotICAgICAgICBpc24ndCBlZmZlY3Rp
dmUgYXQgYWxsLCB0aGlzIHBhdGNoIGp1c3QgcmVtb3ZlcyBpdC4KLQotICAgICAgICBSZXZpZXdl
ZCBieSBSeW9zdWtlIE5pd2EuCi0KLSAgICAgICAgKiBld2svZXdrX3RpbGVkX2JhY2tpbmdfc3Rv
cmUuYzoKLSAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV96b29tX3NldF9pbnRlcm5h
bCk6Ci0KLTIwMTEtMDktMjggIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNv
bT4KLQotICAgICAgICBbRUZMXSBSZW1vdmUgKnZvaWQqIHBhcmFtZXRlciBpbiBpbnRlcm5hbCBm
dW5jdGlvbnMKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTY4ODY3Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KLQotICAgICAgICBB
cyBhIHN0ZXAgdG8gbGV0IGV3ayBiZSBjb21wbGlhbnQgd2l0aCB3ZWJraXQgY29kaW5nIHN0eWxl
LAotICAgICAgICB3ZSBuZWVkIHRvIHJlbW92ZSAqdm9pZCogcGFyYW1ldGVyIGluIGludGVybmFs
IGZ1bmN0aW9ucy4KLQotICAgICAgICAqIGV3ay9ld2tfcHJpdmF0ZS5oOgotICAgICAgICAqIGV3
ay9ld2tfc2V0dGluZ3MuY3BwOgotICAgICAgICAoZXdrX3NldHRpbmdzX3dlYl9kYXRhYmFzZV9k
ZWZhdWx0X3F1b3RhX2dldCk6Ci0gICAgICAgICogZXdrL2V3a191dGlsLmNwcDoKLSAgICAgICAg
KGV3a191dGlsX2RwaV9nZXQpOgotCi0yMDExLTA5LTI4ICBHcnplZ29yeiBDemFqa293c2tpICA8
Zy5jemFqa293c2tpQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxdIEFsbG93IHRvIHNraXAg
Y291bnQgcGFyYW1ldGVyIGluIGV3a192aWV3X3JlcGFpbnRzX2dldCBhbmQgZXdrX3ZpZXdfc2Ny
b2xsX3JlcXVlc3RzX2dldC4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTY1ODQyCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgUnlvc3VrZSBOaXdhLgotCi0g
ICAgICAgIE1ha2VzIHRoZSBjb3VudCBwYXJhbWV0ZXIgaW4gZXdrX3ZpZXdfcmVwYWludHNfZ2V0
IGFuZCBld2tfdmlld19zY3JvbGxfcmVxdWVzdHNfZ2V0Ci0gICAgICAgIGFzIGFuIG9wdGlvbmFs
IHBhcmFtZXRlci4gRGV2ZWxvcGVyIG1heSBwYXNzIE5VTEwgdG8gc2tpcCByZXR1cm5pbmcgdGhl
IG51bWJlciBvZiBlbGVtZW50cwotICAgICAgICBvZiB0aGUgcmVxdWVzdGVkIGFycmF5LgotCi0g
ICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAgKGV3a192aWV3X3JlcGFpbnRzX2dl
dCk6Ci0gICAgICAgIChld2tfdmlld19zY3JvbGxfcmVxdWVzdHNfZ2V0KToKLQotMjAxMS0wOS0y
OCAgR3J6ZWdvcnogQ3phamtvd3NraSAgPGcuY3phamtvd3NraUBzYW1zdW5nLmNvbT4KLQotICAg
ICAgICBbRUZMXSBVUkwgb2YgcmVzb3VyY2VzIGFyZSBub3QgZGVjb2RlZC4KLSAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2NTQwCi0KLSAgICAgICAgUmV2
aWV3ZWQgYnkgUnlvc3VrZSBOaXdhLgotCi0gICAgICAgIEZpeCBld2tfZnJhbWVfcmVzb3VyY2Vz
X2xvY2F0aW9uX2dldCB3aGljaCB3YXMgcmV0dXJuaW5nIHRoZSBlbmNvZGVkIFVSTCBvZiByZXNv
dXJjZXMuCi0gICAgICAgIEFzIGEgcmVzdWx0IGNoYXJhY3RlcnMgZm9yIGluc3RhbmNlLCAlMjAg
b2NjdXJyZWQuIEZvciBub3cgcmV0dXJuZWQgc3RyaW5ncyBhcmUgZGVjb2RlZC4KLQotICAgICAg
ICAqIGV3ay9ld2tfZnJhbWUuY3BwOgotICAgICAgICAoZXdrX2ZyYW1lX3Jlc291cmNlc19sb2Nh
dGlvbl9nZXQpOgotCi0yMDExLTA5LTI3ICBSYXBoYWVsIEt1Ym8gZGEgQ29zdGEgIDxrdWJvQHBy
b2Z1c2lvbi5tb2JpPgotCi0gICAgICAgIFtFRkxdIE1ha2UgZXdrX3ZpZXcgZW1pdCB0aGUgImxv
YWQsZG9jdW1lbnQsZmluaXNoZWQiIHNpZ25hbC4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTY2NzgyCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQW50b25p
byBHb21lcy4KLQotICAgICAgICBDdXJyZW50bHksIG9ubHkgZXdrX2ZyYW1lIGVtaXRzIHRoZSAi
bG9hZCxkb2N1bWVudCxmaW5pc2hlZCIgc2lnbmFsCi0gICAgICAgIHdoZW4gRnJhbWVMb2FkZXJD
bGllbnRFZmw6OmRpc3BhdGNoRGlkRmluaXNoRG9jdW1lbnRMb2FkKCkgY2FsbHMKLSAgICAgICAg
ZXdrX2ZyYW1lX2xvYWRfZG9jdW1lbnRfZmluaXNoZWQoKS4KLQotICAgICAgICBIb3dldmVyLCBp
biBzb21lIGNhc2VzIGl0IGlzIG5vdCBldmVuIHBvc3NpYmxlIHRvIGNvbm5lY3QgdG8gdGhlCi0g
ICAgICAgICJmcmFtZSxjcmVhdGVkIiBzaWduYWwgdG8gcHJvcGVybHkgbW9uaXRvciB0aGUKLSAg
ICAgICAgImxvYWQsZG9jdW1lbnQsZmluaXNoZWQiIHNpZ25hbCwgYXMgdGhlIGZvcm1lciBpcyBu
b3QgZW1pdHRlZC4KLSAgICAgICAgZmFzdC9mcmFtZXMvZnJhbWUtdW5sb2FkLWNyYXNoLmh0bWws
IGZvciBleGFtcGxlLCBoYXMgYSBwYWdlIHdpdGggYW4KLSAgICAgICAgaWZyYW1lIGluc2lkZSBh
biBpZnJhbWUsIGFuZCB0aGlzIGlubmVybW9zdCBpZnJhbWUgZG9lcyBub3Qgc2VlbSB0byBiZQot
ICAgICAgICBsb2FkZWQgdmlhIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpjcmVhdGVGcmFtZSAod2hp
Y2ggY2FsbHMgYWxsIHRoZQotICAgICAgICBtYWNoaW5lcnkgd2hpY2ggdGhlbiBlbWl0cyB0aGUg
ImZyYW1lLGNyZWF0ZWQiIHNpZ25hbCkuCi0KLSAgICAgICAgV2Ugbm93IG1ha2UgZXdrX2ZyYW1l
X2xvYWRfZG9jdW1lbnRfZmluaXNoZWQoKSBjYWxsIHRoZSBuZXdseS1jcmVhdGVkCi0gICAgICAg
IGV3a192aWV3X2xvYWRfZG9jdW1lbnRfZmluaXNoZWQoKSBmdW5jdGlvbiwgd2hvc2Ugam9iIGlz
IHRvIGVtaXQgdGhlCi0gICAgICAgICJsb2FkLGRvY3VtZW50LHNpZ25hbCIgd2l0aCB0aGUgZnJh
bWUgYXMgaXRzIHBhcmFtZXRlci4gVGhpcyB3YXksIG9uZQotICAgICAgICBjYW4ganVzdCBjb25u
ZWN0IHRvIHRoZSB2aWV3IGFuZCBtYWtlIHN1cmUgYWxsIHRoZSBzaWduYWxzIHdpbGwgZ2V0Ci0g
ICAgICAgIGRlbGl2ZXJlZC4KLQotICAgICAgICAqIGV3ay9ld2tfZnJhbWUuY3BwOgotICAgICAg
ICAoZXdrX2ZyYW1lX2xvYWRfZG9jdW1lbnRfZmluaXNoZWQpOgotICAgICAgICAqIGV3ay9ld2tf
cHJpdmF0ZS5oOgotICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChld2tfdmll
d19sb2FkX2RvY3VtZW50X2ZpbmlzaGVkKToKLSAgICAgICAgKiBld2svZXdrX3ZpZXcuaDoKLQot
MjAxMS0wOS0yNiAgUmFwaGFlbCBLdWJvIGRhIENvc3RhICA8a3Vib0Bwcm9mdXNpb24ubW9iaT4K
LQotICAgICAgICBbQ01ha2VdIFJlbW92ZSBGaW5kRnJlZXR5cGUuY21ha2UKLSAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4Nzc4Ci0KLSAgICAgICAgUmV2
aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KLQotICAgICAgICBDTWFrZSBoYXMgcHJvdmlkZWQgaXRzIG93
biBGaW5kRnJlZXR5cGUuY21ha2UgZm9yZXZlciwgc28gdGhlcmUgaXMgbm8KLSAgICAgICAgbmVl
ZCB0byBoYXZlIGFub3RoZXIgaW1wbGVtZW50YXRpb24gaW4gV2ViS2l0LgotCi0gICAgICAgICog
Q01ha2VMaXN0c0VmbC50eHQ6IFVzZSBGUkVFVFlQRV97TElCUkFSSUVTLElOQ0xVREVfRElSU30g
aW5zdGVhZCBvZgotICAgICAgICBGcmVldHlwZV97TElCUkFSSUVTLElOQ0xVREVfRElSU30uCi0K
LTIwMTEtMDktMjYgIEx1Y2FzIERlIE1hcmNoaSAgPGx1Y2FzLmRlbWFyY2hpQHByb2Z1c2lvbi5t
b2JpPgotCi0gICAgICAgIFtFRkxdIEFkZCB2aXJ0dWFsIG1ldGhvZCB0byBub3RpZnkgdXNlciB3
aGVuIHdyYXBwaW5nIGZvY3VzCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD02ODY5OQotCi0gICAgICAgIFJldmlld2VkIGJ5IEFudG9uaW8gR29tZXMuCi0K
LSAgICAgICAgQWRkIGEgdmlydHVhbCBtZXRob2QgdG8gZXdrX3ZpZXcsIHNvIHRoZSBDaHJvbWUg
Z2V0cyBub3RpZmllZCBpZiB3ZQotICAgICAgICBmaW5pc2hlZCBmb2N1c2luZyBhbGwgdGhlIGl0
ZW1zIGFuZCB3b3VsZCBzdGFydCBvdmVyLiBUaGlzIHdheSB0aGUKLSAgICAgICAgYnJvd3NlciBj
YW4gZGVjaWRlIHRvIGhhbmRsZSB0aGUgc3Vic2VxdWVudCBmb2N1cyBjaGFuZ2VzIGFtb25nIGl0
cwotICAgICAgICB3aWRnZXRzLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xp
ZW50RWZsLmNwcDogY2FsbCBld2tfdmlldydzIHZpcnR1YWwgbWV0aG9kIHRvCi0gICAgICAgIGdp
dmUgaXQgYSBjaGFuY2UgdG8gZ3JhYiBmb2N1cwotICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xp
ZW50RWZsOjpjYW5UYWtlRm9jdXMpOgotICAgICAgICAqIGV3ay9ld2tfcHJpdmF0ZS5oOgotICAg
ICAgICAqIGV3ay9ld2tfdmlldy5jcHA6IGFkZCB2aXJ0dWFsIG1ldGhvZAotICAgICAgICAoZXdr
X3ZpZXdfZm9jdXNfY2FuX2N5Y2xlKToKLSAgICAgICAgKiBld2svZXdrX3ZpZXcuaDogYWRkIGZv
Y3VzIGRpcmVjdGlvbiBlbnVtIGFuZCB2aXJ0dWFsIG1ldGhvZAotCi0yMDExLTA5LTI0ICBBZGFt
IEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+Ci0KLSAgICAgICAgQWx3YXlzIGVuYWJsZSBFTkFC
TEUoT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKQotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njg3NjcKLQotICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNl
aWRlbC4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHA6Ci0g
ICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRFZmw6OnJlYWNoZWRBcHBsaWNhdGlvbkNhY2hl
T3JpZ2luUXVvdGEpOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5o
OgotICAgICAgICAqIGV3ay9ld2tfbWFpbi5jcHA6Ci0gICAgICAgIChfZXdrX2luaXRfYm9keSk6
Ci0gICAgICAgICogZXdrL2V3a19zZXR0aW5ncy5jcHA6Ci0gICAgICAgIChld2tfc2V0dGluZ3Nf
Y2FjaGVfZGlyZWN0b3J5X3BhdGhfc2V0KToKLSAgICAgICAgKGV3a19zZXR0aW5nc19jYWNoZV9k
aXJlY3RvcnlfcGF0aF9nZXQpOgotCi0yMDExLTA5LTIxICBMdWNhcyBEZSBNYXJjaGkgIDxsdWNh
cy5kZW1hcmNoaUBwcm9mdXNpb24ubW9iaT4KLQotICAgICAgICBbRUZMXSBSZXZlcnQgcG9pbnRl
ciBvcGVyYXRvciBjb2Rpbmcgc3R5bGUgaW4gZXdrCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODIzMQotCi0gICAgICAgIFJldmlld2VkIGJ5IEFudG9u
aW8gR29tZXMuCi0KLSAgICAgICAgVGhlIFdlYktpdCBjb2Rpbmcgc3R5bGUgbWFuZGF0ZXMgdGhh
dCAiKC4uLikgaW4gQysrIGNvZGUgLSBCb3RoIHBvaW50ZXIKLSAgICAgICAgdHlwZXMgYW5kIHJl
ZmVyZW5jZSB0eXBlcyBzaG91bGQgYmUgd3JpdHRlbiB3aXRoIG5vIHNwYWNlIGJldHdlZW4gdGhl
Ci0gICAgICAgIHR5cGUgbmFtZSBhbmQgdGhlICogb3IgJi4iLiBVbnRpbCBub3cgRUZMIHBvcnQg
d2FzIHVzaW5nIHRoZQotICAgICAgICBjb2Rpbmctc3R5bGUgb2YgdGhlIGxpYnJhcnkgZm9yIHBs
YXRmb3JtICBjb2RlIGluc3RlYWQgb2YgV2ViS2l0J3MuCi0KLSAgICAgICAgV2UgYXJlIG5vdyB0
cnlpbmcgdG8gYmUgbW9yZSBjb21wbGlhbnQgd2l0aCBXZWJLaXQgY29kaW5nLXN0eWxlIHNvIGl0
J3MKLSAgICAgICAgZWFzaWVyIGZvciBvdGhlciByZXZpZXdlcnMgdG8gcmV2aWV3IEVGTCBjb2Rl
LiBUaGUgZmlyc3Qgc3RlcCBpbiB0aGlzCi0gICAgICAgIGRpcmVjdGlvbiBpcyB0byBtb3ZlIHRo
ZSAnKicgYW5kICcmJyBvZiBwb2ludGVycyBhbmQgcmVmZXJlbmNlcyB0byB0aGUKLSAgICAgICAg
cmlnaHQgcGxhY2UuCi0KLSAgICAgICAgVGhpcyBwYXRjaCB3YXMgZ2VuZXJhdGVkIHdpdGggJ3Vu
Y3J1c3RpZnknIHdpdGggdGhlIGNvbmZpZ3VyZSBmaWxlCi0gICAgICAgIGF0dGFjaGVkIHRvIHRo
ZSByZXNwZWN0aXZlIGJ1dCByZXBvcnQuIFRoZXJlIHdhcyBvbmUgZml4IHRoYXQgaGFkIHRvIGJl
Ci0gICAgICAgIG1hbnVhbGx5IG1hZGUgaW4gb3JkZXIgdG8ga2VlcCB0aGUgJ2NoZWNrLXdlYmtp
dC1zdHlsZScgaGFwcHk6IGEKLSAgICAgICAgZnVuY3Rpb24gZGVmaW5pdGlvbiB3aXRoIGEgbWVh
bmluZ2xlc3MgbmFtZS4gT3RoZXIgZnVuY3Rpb25zIGxpa2UgdGhpcwotICAgICAgICBleGlzdCBi
dXQgdGhleSB3aWxsIGJlIGZpeGVkIGJ5IGEgbGF0ZXIgcGF0Y2guCi0KLSAgICAgICAgU29tZSBu
aWNlIHNpZGUtZWZmZWN0cyBvZiB1c2luZyB1bmNydXN0aWZ5OgotCi0gICAgICAgIC0gV2hpdGVz
cGFjZSBjbGVhbnVwIG9uIGNvbW1lbnRzCi0gICAgICAgIC0gRnVuY3Rpb24gcGFyYW1ldGVycyBh
cmUgYWxpZ25lZCB0byB0aGUgb3BlbiBwYXJlbnRoZXNpcwotICAgICAgICAtIFJlbW92ZSB0YWIg
Y2hhcmFjdGVycwotCi0yMDExLTA5LTIxICBMdWNhcyBEZSBNYXJjaGkgIDxsdWNhcy5kZW1hcmNo
aUBwcm9mdXNpb24ubW9iaT4KLQotICAgICAgICBbRUZMXSBEb24ndCB0cnkgdG8gZnJlZSB1c2Vy
LXByb3ZpZGVkIGxpc3QKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTY4MzU2Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21lcy4KLQotICAg
ICAgICBBIGNvZGluZy1zdHlsZSBjbGVhbnVwIHJldmVhbGVkIHRoYXQgd2Ugd2VyZSB1c2luZyBF
SU5BX0xJU1RfRlJFRSBpbiBhCi0gICAgICAgIHdyb25nIG1hbm5lci4gSWYgd2UgaW50ZW5kZWQg
dG8gZnJlZSB0aGUgZGF0YSwgd2Ugc2hvdWxkIGNhbGwgZnJlZSgpCi0gICAgICAgIChvciB3aGF0
ZXZlciBmdW5jdGlvbiBpcyByZXF1aXJlZCB0byBkZXN0cm95IGl0KS4gSG93ZXZlciBub3Qgb25s
eSBkaWQKLSAgICAgICAgaXQgdXNlIHRoZSB3cm9uZyBFRkwgYXBpIGJ1dCBpdCBhbHNvIGludHJv
ZHVjZWQgYSBjaGFuZ2UgaW4gYmVoYXZpb3IsCi0gICAgICAgIGZyZWVpbmcgdXNlci1wcm92aWRl
ZCBkYXRhLgotCi0gICAgICAgICogZXdrL2V3a19mcmFtZS5jcHA6Ci0gICAgICAgIChld2tfZnJh
bWVfZmVlZF90b3VjaF9ldmVudCk6IGRvIG5vdCBmcmVlIHVzZXItcHJvdmlkZWQgZGF0YS4KLQot
MjAxMS0wOS0yMSAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgotCi0g
ICAgICAgIFtFRkxdIEZpeCBhbHBoYWJldGljYWwgc29ydGluZyBwcm9ibGVtIAotICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njg1MDUKLQotICAgICAgICBS
ZXZpZXdlZCBieSBQaGlsaXBwZSBOb3JtYW5kLgotCi0gICAgICAgICogZXdrL2V3a191dGlsLmNw
cDogRml4IHdyb25nIGFscGhhYmV0aWNhbCBzb3J0aW5nIHByb2JsZW0uCi0KLTIwMTEtMDktMjAg
IFJhcGhhZWwgS3VibyBkYSBDb3N0YSAgPGt1Ym9AcHJvZnVzaW9uLm1vYmk+Ci0KLSAgICAgICAg
W0VGTF0gQ2FsbCBGcmFtZUxvYWRlcjo6ZGV0YWNoRnJvbVBhcmVudCgpIHdoZW4gZGVzdHJveWlu
ZyBhIGZyYW1lLgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NjY4NTUKLQotICAgICAgICBSZXZpZXdlZCBieSBBbnRvbmlvIEdvbWVzLgotCi0gICAgICAg
IE1vc3Qgb3RoZXIgcG9ydHMgY2FsbCB0aGlzIG1ldGhvZCBzb21ld2hlcmUgd2hlbiB0aGUgZnJh
bWUgaXMgYmVpbmcKLSAgICAgICAgcmVtb3ZlZCwgYXMgaXQgcGVyZm9ybXMgc29tZSBkZXN0cnVj
dGlvbiBjYWxscyB3aGljaCwgaW4gb3VyIGNhc2UsIGF0Ci0gICAgICAgIGxlYXN0IG1ha2VzIHN1
cmUgb251bmxvYWQgZXZlbnRzIGdldCBkZWxpdmVyZWQgcHJvcGVybHkgaW4KLSAgICAgICAgZmFz
dC9mcmFtZXMvaWZyYW1lLXJlcGFyZW50aW5nLWFkb3B0LW5vZGUuaHRtbC4KLQotICAgICAgICAq
IGV3ay9ld2tfZnJhbWUuY3BwOgotICAgICAgICAoX2V3a19mcmFtZV9zbWFydF9kZWwpOiBDYWxs
IEZyYW1lTG9hZGVyOjpkZXRhY2hGcm9tUGFyZW50KCkKLQotMjAxMS0wOS0xNyAgTWloYWkgUGFy
cGFyaXRhICA8bWloYWlwQGNocm9taXVtLm9yZz4KLQotICAgICAgICBGcmFtZUxvYWRlckNsaWVu
dCBCYWNrRm9yd2FyZExpc3QtcmVsYXRlZCBtZXRob2RzIGFyZSB1bnN1ZWQKLSAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4MjkzCi0KLSAgICAgICAgUmV2
aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCi0KLSAgICAgICAgUmVtb3ZlIEZyYW1lTG9hZGVyQ2xpZW50
IG1ldGhvZHMgdGhhdCB3ZXJlIGFkZGVkIGJ5IHI1MTYyOSwgc2luY2Ugb25seSAgICAgICAgCi0g
ICAgICAgIHRoZSBvbGQgKHNpbmNlLWRlbGV0ZWQpIEFuZHJvaWQgcG9ydCBuZWVkZWQgdGhlbS4K
LQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcDoKLSAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5oOgotCi0yMDExLTA5
LTE1ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+Ci0KLSAgICAgICAgUmVuYW1lIEVO
QUJMRShEQVRBQkFTRSkgdG8gRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4MjA1Ci0KLSAgICAgICAgUmV2aWV3ZWQg
YnkgRXJpYyBTZWlkZWwuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRF
ZmwuY3BwOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oOgotICAg
ICAgICAqIGV3ay9ld2tfc2V0dGluZ3MuY3BwOgotICAgICAgICAoZXdrX3NldHRpbmdzX3dlYl9k
YXRhYmFzZV9kZWZhdWx0X3F1b3RhX2dldCk6Ci0gICAgICAgIChld2tfc2V0dGluZ3Nfd2ViX2Rh
dGFiYXNlX3BhdGhfc2V0KToKLSAgICAgICAgKGV3a19zZXR0aW5nc193ZWJfZGF0YWJhc2VfcGF0
aF9nZXQpOgotCi0yMDExLTA5LTE0ICBHcnplZ29yeiBDemFqa293c2tpICA8Zy5jemFqa293c2tp
QHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxdIEFkZCBOVUxMIGNoZWNrcyB0byBld2tfd2lu
ZG93X2ZlYXR1cmVzX25ld19mcm9tX2NvcmUgYW5kIGV3a192aWV3X3dpbmRvd19jcmVhdGUuCi0g
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NDkzMgotCi0g
ICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgotCi0gICAgICAgIEl0IHByZXZlbnRzIHRo
ZSBjcmFzaCB3aGlsZSBhbGxvY2F0aW5nIG1lbW9yeSBmb3IgdGhlIG5ldyB3aW5kb3cuCi0KLSAg
ICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoZXdrX3ZpZXdfd2luZG93X2NyZWF0
ZSk6Ci0gICAgICAgICogZXdrL2V3a193aW5kb3dfZmVhdHVyZXMuY3BwOgotICAgICAgICAoZXdr
X3dpbmRvd19mZWF0dXJlc19uZXdfZnJvbV9jb3JlKToKLQotMjAxMS0wOS0xMyAgUmFwaGFlbCBL
dWJvIGRhIENvc3RhICA8a3Vib0Bwcm9mdXNpb24ubW9iaT4KLQotICAgICAgICBbRUZMXSBEbyBu
b3QgYWx3YXlzIHJldHVybiB0aGUgY2FjaGVkIGZyYW1lIG5hbWUuCi0gICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Njg1NgotCi0gICAgICAgIFJldmlld2Vk
IGJ5IEFudG9uaW8gR29tZXMuCi0KLSAgICAgICAgV2hlbiBhIGZyYW1lIGhhcyBpdHMgcGFyZW50
IGNoYW5nZWQgKHZpYSBhZG9wdE5vZGUgYW5kIGFwcGVuZENoaWxkLAotICAgICAgICBmb3IgZXhh
bXBsZSksIHRoZSBmcmFtZSBuYW1lIHdpbGwgY2hhbmdlLCBzbyB3ZSBuZWVkIHRvIGFjY291bnQg
Zm9yCi0gICAgICAgIHRoYXQgY2FzZSBhbmQgY2hhbmdlIHRoZSBjYWNoZWQgbmFtZSB3aGVuIG5l
ZWRlZC4KLQotICAgICAgICBUaGlzIHNob3VsZCBtYWtlIGZhc3QvZnJhbWVzL2lmcmFtZS1yZXBh
cmVudGluZy11bmlxdWUtbmFtZS5odG1sIHBhc3MuCi0KLSAgICAgICAgKiBld2svZXdrX2ZyYW1l
LmNwcDoKLSAgICAgICAgKGV3a19mcmFtZV9uYW1lX2dldCk6Ci0KLTIwMTEtMDktMTIgIEZsYXZp
byBDZW9saW4gIDxmbGF2aW8uY2VvbGluQHByb2Z1c2lvbi5tb2JpPgotCi0gICAgICAgIFJldmll
d2VkIGJ5IE1hcnRpbiBSb2JpbnNvbi4KLQotICAgICAgICBbRUZMXSBBZGQgY3VzdG9tIG5ldHdv
cmsgcmVzb3VyY2UgaGFuZGxlcgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDQ3NTkKLQotICAgICAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3Ig
aGFuZGxpbmcgdXNlci1zcGVjaWZpYyBwcm90b2NvbHMuCi0gICAgICAgIEl0IGFsbG93cyBicm93
c2VycyB0byBpbnRlcmNlcHQgYW5kIGhhbmRsZSBub24tc3RhbmRhcmQgdXJsIHNjaGVtZXMgKHN1
Y2ggYXMgcHJlZmVyZW5jZXM6Ly8pCi0gICAgICAgIGFsbG93aW5nIHRvIGxvYWQgc29tZSByZXNv
dXJjZSBmcm9tIG5vbi1odHRwL2ZpbGUgc3RvcmFnZSwgbGlrZSBhIHRhci96aXAvZWV0LgotCi0g
ICAgICAgICogQ01ha2VMaXN0c0VmbC50eHQ6Ci0gICAgICAgICogZXdrL2V3a19wcm90b2NvbF9o
YW5kbGVyLmNwcDogQWRkZWQuCi0gICAgICAgICogZXdrL2V3a19wcm90b2NvbF9oYW5kbGVyLmg6
IEFkZGVkLgotICAgICAgICAqIGV3ay9ld2tfcHJvdG9jb2xfaGFuZGxlcl9zb3VwLmNwcDogQWRk
ZWQuCi0gICAgICAgICogZXdrL2V3a19wcm90b2NvbF9oYW5kbGVyX3NvdXAuaDogQWRkZWQuCi0g
ICAgICAgICogZXdrL2V3a19wcml2YXRlLmg6Ci0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoK
LSAgICAgICAgKGV3a192aWV3X3Byb3RvY29sX2hhbmRsZXJfc2V0KToKLSAgICAgICAgKGV3a192
aWV3X3Byb3RvY29sX2hhbmRsZXJfdW5zZXQpOgotICAgICAgICAoZXdrX3ZpZXdfcHJvdG9jb2xf
aGFuZGxlcl9yZXNvdXJjZV9nZXQpOgotICAgICAgICAqIGV3ay9ld2tfdmlldy5oOgotCi0yMDEx
LTA5LTA0ICBSeXVhbiBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBb
RUZMXSBSZW5hbWUgZXdrX3ZpZXdfKHNpbmdsZXx0aWxlZCkuYyB0byBld2tfdmlld18oc2luZ2xl
fHRpbGVkKS5jcHAKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTY2NTQyCi0KLSAgICAgICAgVXNlIGEgQysrIGNvbXBpbGVyIGZvciB0aGVzZSBmaWxlcywg
c28gdGhhdCB0aGV5IGNhbiBpbmNsdWRlIHRoZSBDKystdXNpbmcKLSAgICAgICAgZXdrX3ByaXZh
dGUuaC4KLQotICAgICAgICBSZXZpZXdlZCBieSBEYW5pZWwgQmF0ZXMuCi0KLSAgICAgICAgKiBD
TWFrZUxpc3RzRWZsLnR4dDoKLSAgICAgICAgKiBld2svZXdrX3ZpZXdfc2luZ2xlLmNwcDogUmVu
YW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlld19zaW5nbGUuYy4KLSAgICAg
ICAgKF9ld2tfdmlld19zaW5nbGVfb25fZGVsKToKLSAgICAgICAgKF9ld2tfdmlld19zaW5nbGVf
c21hcnRfYWRkKToKLSAgICAgICAgKF9ld2tfdmlld19zaW5nbGVfc21hcnRfYmFja2luZ19zdG9y
ZV9hZGQpOgotICAgICAgICAoX2V3a192aWV3X3NpbmdsZV9zbWFydF9yZXNpemUpOgotICAgICAg
ICAoX2V3a192aWV3XzRiX21vdmVfcmVnaW9uX3VwKToKLSAgICAgICAgKF9ld2tfdmlld180Yl9t
b3ZlX3JlZ2lvbl9kb3duKToKLSAgICAgICAgKF9ld2tfdmlld180Yl9tb3ZlX2xpbmVfbGVmdCk6
Ci0gICAgICAgIChfZXdrX3ZpZXdfNGJfbW92ZV9saW5lX3JpZ2h0KToKLSAgICAgICAgKF9ld2tf
dmlld180Yl9tb3ZlX3JlZ2lvbl9sZWZ0KToKLSAgICAgICAgKF9ld2tfdmlld180Yl9tb3ZlX3Jl
Z2lvbl9yaWdodCk6Ci0gICAgICAgIChfZXdrX3ZpZXdfNGJfbW92ZV9yZWdpb24pOgotICAgICAg
ICAoX2V3a192aWV3X3NpbmdsZV9zY3JvbGxfcHJvY2Vzc19zaW5nbGUpOgotICAgICAgICAoX2V3
a192aWV3X3NpbmdsZV9zbWFydF9zY3JvbGxzX3Byb2Nlc3MpOgotICAgICAgICAoX2V3a192aWV3
X3NpbmdsZV9zbWFydF9yZXBhaW50c19wcm9jZXNzKToKLSAgICAgICAgKF9ld2tfdmlld19zaW5n
bGVfc21hcnRfem9vbV93ZWFrX3NldCk6Ci0gICAgICAgIChfZXdrX3ZpZXdfc2luZ2xlX3NtYXJ0
X3pvb21fd2Vha19zbW9vdGhfc2NhbGVfc2V0KToKLSAgICAgICAgKF9ld2tfdmlld19zaW5nbGVf
c21hcnRfYmdfY29sb3Jfc2V0KToKLSAgICAgICAgKGV3a192aWV3X3NpbmdsZV9zbWFydF9zZXQp
OgotICAgICAgICAoX2V3a192aWV3X3NpbmdsZV9zbWFydF9jbGFzc19uZXcpOgotICAgICAgICAo
ZXdrX3ZpZXdfc2luZ2xlX2FkZCk6Ci0gICAgICAgICogZXdrL2V3a192aWV3X3RpbGVkLmNwcDog
UmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlld190aWxlZC5jLgotICAg
ICAgICAoX2V3a192aWV3X3RpbGVkX3JlbmRlcl9jYik6Ci0gICAgICAgIChfZXdrX3ZpZXdfdGls
ZWRfdXBkYXRlc19wcm9jZXNzX3ByZSk6Ci0gICAgICAgIChfZXdrX3ZpZXdfdGlsZWRfc21hcnRf
YmFja2luZ19zdG9yZV9hZGQpOgotICAgICAgICAoX2V3a192aWV3X3RpbGVkX2NvbnRlbnRzX3Np
emVfY2hhbmdlZF9jYik6Ci0gICAgICAgIChfZXdrX3ZpZXdfdGlsZWRfc21hcnRfYWRkKToKLSAg
ICAgICAgKF9ld2tfdmlld190aWxlZF9zbWFydF9zY3JvbGxzX3Byb2Nlc3MpOgotICAgICAgICAo
X2V3a192aWV3X3RpbGVkX3NtYXJ0X3JlcGFpbnRzX3Byb2Nlc3MpOgotICAgICAgICAoX2V3a192
aWV3X3RpbGVkX3NtYXJ0X2NvbnRlbnRzX3Jlc2l6ZSk6Ci0gICAgICAgIChfZXdrX3ZpZXdfdGls
ZWRfc21hcnRfem9vbV9zZXQpOgotICAgICAgICAoX2V3a192aWV3X3RpbGVkX3NtYXJ0X3pvb21f
d2Vha19zZXQpOgotICAgICAgICAoX2V3a192aWV3X3RpbGVkX3NtYXJ0X3pvb21fd2Vha19zbW9v
dGhfc2NhbGVfc2V0KToKLSAgICAgICAgKF9ld2tfdmlld190aWxlZF9zbWFydF9mbHVzaCk6Ci0g
ICAgICAgIChfZXdrX3ZpZXdfdGlsZWRfc21hcnRfcHJlX3JlbmRlcl9yZWdpb24pOgotICAgICAg
ICAoX2V3a192aWV3X3RpbGVkX3NtYXJ0X3ByZV9yZW5kZXJfcmVsYXRpdmVfcmFkaXVzKToKLSAg
ICAgICAgKF9ld2tfdmlld190aWxlZF9zbWFydF9wcmVfcmVuZGVyX2NhbmNlbCk6Ci0gICAgICAg
IChfZXdrX3ZpZXdfdGlsZWRfc21hcnRfZGlzYWJsZV9yZW5kZXIpOgotICAgICAgICAoX2V3a192
aWV3X3RpbGVkX3NtYXJ0X2VuYWJsZV9yZW5kZXIpOgotICAgICAgICAoZXdrX3ZpZXdfdGlsZWRf
c21hcnRfc2V0KToKLSAgICAgICAgKF9ld2tfdmlld190aWxlZF9zbWFydF9jbGFzc19uZXcpOgot
ICAgICAgICAoZXdrX3ZpZXdfdGlsZWRfYWRkKToKLSAgICAgICAgKGV3a192aWV3X3RpbGVkX3Vu
dXNlZF9jYWNoZV9nZXQpOgotICAgICAgICAoZXdrX3ZpZXdfdGlsZWRfdW51c2VkX2NhY2hlX3Nl
dCk6Ci0KLTIwMTEtMDktMDIgIExlYW5kcm8gUGVyZWlyYSAgPGxlYW5kcm9AcHJvZnVzaW9uLm1v
Ymk+Ci0KLSAgICAgICAgVW5yZXZpZXdlZCBidWlsZCBmaXggYWZ0ZXIgcjY3MTEwLgotCi0gICAg
ICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAgKGV3a192aWV3X25lZWRfdG91Y2hfZXZl
bnRzX2dldCk6IE1ha2UgdGhlIGZ1bmN0aW9uIHNpZ25hdHVyZSBtYXRjaAotICAgICAgICBpdHMg
ZGVjbGFyYXRpb24uCi0KLTIwMTEtMDktMDEgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBz
YW1zdW5nLmNvbT4KLQotICAgICAgICBbRUZMXSBBbGxvdyBjb250cm9sbGluZyBtaW5pbXVtIERP
TVRpbWVyIGludGVydmFsIG9uIGEgcGVyLXBhZ2UgYmFzaXMKLSAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY3MDEyCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkg
S2VubmV0aCBSdXNzZWxsLgotCi0gICAgICAgIFNldCBkZWZhdWx0IG1pbmltdW0gRE9NVGltZXIg
aW50ZXJ2YWwgdG8gNG1zIGluc3RlYWQgb2YgMTBtcy4gQmVjYXVzZSwgNG1zIGlzIGtub3duCi0g
ICAgICAgIHRvIGJldHRlciBtaW5pbXVtIHZhbHVlIGZvciBwZXJmb3JtYW5jZS4gTWFjLCBhbmRy
b2lkLCBjaHJvbWl1bSBhbmQgd2luZG93IHBvcnRzIGFscmVhZHkKLSAgICAgICAgdXNlIDRtcyBp
bnN0ZWFkIG9mIDEwbXMuCi0KLSAgICAgICAgSXQgaXMgZGVzaXJhYmxlIHRvIGJlIGFibGUgdG8g
Y2hhbmdlIHRoZSBtaW5pbXVtIERPTVRpbWVyIGludGVydmFsIG9uIHBlci1wYWdlIGJhc2lzCi0g
ICAgICAgIGluIG9yZGVyIHRvIGF2b2lkIGNvbnN1bWluZyBleGNlc3NpdmUgQ1BVIGFuZCBiYXR0
ZXJ5IGxpZmUgb24gbW9iaWxlIGRldmljZXMuIEluIGFkZGl0aW9uLAotICAgICAgICBvdGhlciBw
b3J0cyBoYXZlIGFscmVhZHkgdXNlZCB0aGlzIHNldHRpbmcgYnkgbWVhbnMgb2YgQnVnIDU0MzEy
LgotCi0gICAgICAgICogZXdrL2V3a19tYWluLmNwcDoKLSAgICAgICAgKF9ld2tfaW5pdF9ib2R5
KToKLSAgICAgICAgKiBld2svZXdrX3NldHRpbmdzLmNwcDoKLSAgICAgICAgKGV3a19zZXR0aW5n
c19kZWZhdWx0X3RpbWVyX2ludGVydmFsX2dldCk6Ci0gICAgICAgICogZXdrL2V3a19zZXR0aW5n
cy5oOgotICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChfZXdrX3ZpZXdfcHJp
dl9uZXcpOgotICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19taW5pbXVtX3RpbWVyX2ludGVydmFs
X3NldCk6Ci0gICAgICAgIChld2tfdmlld19zZXR0aW5nX21pbmltdW1fdGltZXJfaW50ZXJ2YWxf
Z2V0KToKLSAgICAgICAgKiBld2svZXdrX3ZpZXcuaDoKLQotMjAxMS0wOS0wMSAgS3dhbmdIeXVr
IEtpbSAgPGh5dWtpLmtpbUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBbRUZMXSBSZW1vdmUgdW51
c2VkIGNvZGUgcmVsYXRlZCB3aXRoIHByaXYtPnJlbmRlci5wcm9jZXNzX2VudGlyZV9xdWV1ZSBp
biBld2tfdGlsZWRfYmFja2luZ19zdG9yZS4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTYzMzc3Ci0KLSAgICAgICAgcHJpdi0+cmVuZGVyLnByb2Nlc3Nf
ZW50aXJlX3F1ZXVlIGFmZmVjdHMgbm8gbG9naWNhbCBmbG93IG9mIGV3a190aWxlZF9iYWNraW5n
X3N0b3JlLAotICAgICAgICBCdXQsIGV3a192aWV3X3RpbGVkX3Byb2Nlc3NfZW50aXJlX3F1ZXVl
X3NldCBpcyBub3cgcHJvdmlkZWQgYXMgc2V0dGVyIGFwaSBmb3IgaXQuCi0gICAgICAgIFNvIHJl
bW92YWwgb2YgdGhpcyBhcGkgYW5kIHNvbWUgY29kZXMgcmVsYXRlZCB3aXRoIGl0IGlzIHJlcXVp
cmVkLgotCi0gICAgICAgIFJldmlld2VkIGJ5IEFudG9uaW8gR29tZXMuCi0KLSAgICAgICAgKiBl
d2svZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUuYzoKLSAgICAgICAgKF9ld2tfdGlsZWRfYmFja2lu
Z19zdG9yZV9zbWFydF9hZGQpOgotICAgICAgICAoZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfZW5h
YmxlX3JlbmRlcik6Ci0gICAgICAgICogZXdrL2V3a190aWxlZF9iYWNraW5nX3N0b3JlLmg6Ci0g
ICAgICAgICogZXdrL2V3a192aWV3Lmg6Ci0gICAgICAgICogZXdrL2V3a192aWV3X3RpbGVkLmM6
Ci0gICAgICAgIChld2tfdmlld190aWxlZF91bnVzZWRfY2FjaGVfc2V0KToKLQotMjAxMS0wOC0z
MSAgR3J6ZWdvcnogQ3phamtvd3NraSAgPGcuY3phamtvd3NraUBzYW1zdW5nLmNvbT4KLQotICAg
ICAgICBbRUZMXSBGb250cyBBUEkgcmVmYWN0b3JpbmcuCi0gICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NjY1NAotCi0gICAgICAgIFJldmlld2VkIGJ5IEhh
amltZSBNb3JpdGEuCi0KLSAgICAgICAgVGhlcmUgYXJlIHRvbyBtYW55IHNpbWlsYXIgQVBJIHJl
Z2FyZGluZyB0byBmb250cy4KLSAgICAgICAgQWRkIG9uZSBjb25zaXN0ZW50IEFQSSB0byBzZXQv
Z2V0IHRoZSBmb250IG5hbWUgZm9yIHRoZSBmb250IGZhbWlseS4KLSAgICAgICAgUmVtb3ZlIHRo
ZSBwcmV2aW91cyBmb250IEFQSS4KLQotICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAg
ICAgIChld2tfdmlld19mb250X2ZhbWlseV9uYW1lX2dldCk6Ci0gICAgICAgIChld2tfdmlld19m
b250X2ZhbWlseV9uYW1lX3NldCk6Ci0gICAgICAgICogZXdrL2V3a192aWV3Lmg6Ci0KLTIwMTEt
MDgtMzAgIEthdXN0dWJoIEF0cmF3YWxrYXIgIDxrYXVzdHViaEBtb3Rvcm9sYS5jb20+Ci0KLSAg
ICAgICAgVGhlIHVudXNlZCBTY3JvbGxWaWV3KiBhcmd1bWVudCBjYW4gYW5kIHNob3VsZCBiZSBy
ZW1vdmVkIGZyb20KLSAgICAgICAgc2Nyb2xsUmVjdEludG9WaWV3LgotICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjcxMTcKLQotICAgICAgICBSZXZpZXdl
ZCBieSBEYXJpbiBBZGxlci4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVu
dEVmbC5oOgotICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZsOjpzY3JvbGxSZWN0SW50
b1ZpZXcpOgotCi0yMDExLTA4LTMwICBHcnplZ29yeiBDemFqa293c2tpICA8Zy5jemFqa293c2tp
QHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxdIEFkZCBjb25zdCBtb2RpZmllciB0byBwYXNz
ZWQgb2JqZWN0cyB3aGVyZSBpdCdzIHJlY29tbWVuZGVkCi0gICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NzExMAotCi0gICAgICAgIFJldmlld2VkIGJ5IEtl
bnQgVGFtdXJhLgotCi0gICAgICAgIEFkZCBjb25zdCBtb2RpZmllciB0byBwYXNzZWQgRXZhc19P
YmplY3QgaWYgdGhlIGZ1bmN0aW9uIGRvZXNuJ3QgY2hhbmdlIGl0cwotICAgICAgICBwcm9wZXJ0
eSAodGhlIG1vc3QgY2FzZXMgdG8gdGhlIGdldHRlciBmdW5jdGlvbnMpLgotCi0gICAgICAgICog
ZXdrL2V3a19jb250ZXh0bWVudS5jcHA6Ci0gICAgICAgIChld2tfY29udGV4dF9tZW51X2l0ZW1f
bGlzdF9nZXQpOgotICAgICAgICAoZXdrX2NvbnRleHRfbWVudV9pdGVtX3R5cGVfZ2V0KToKLSAg
ICAgICAgKGV3a19jb250ZXh0X21lbnVfaXRlbV9hY3Rpb25fZ2V0KToKLSAgICAgICAgKGV3a19j
b250ZXh0X21lbnVfaXRlbV90aXRsZV9nZXQpOgotICAgICAgICAoZXdrX2NvbnRleHRfbWVudV9p
dGVtX2NoZWNrZWRfZ2V0KToKLSAgICAgICAgKGV3a19jb250ZXh0X21lbnVfaXRlbV9lbmFibGVk
X2dldCk6Ci0gICAgICAgIChld2tfY29udGV4dF9tZW51X2N1c3RvbV9nZXQpOgotICAgICAgICAo
ZXdrX2NvbnRleHRfbWVudV9zaG93KToKLSAgICAgICAgKiBld2svZXdrX2NvbnRleHRtZW51Lmg6
Ci0gICAgICAgICogZXdrL2V3a19mcmFtZS5jcHA6Ci0gICAgICAgIChld2tfZnJhbWVfdGV4dF9t
YXRjaGVzX250aF9wb3NfZ2V0KToKLSAgICAgICAgKGV3a19mcmFtZV90ZXh0X3NlbGVjdGlvbl90
eXBlX2dldCk6Ci0gICAgICAgIChld2tfZnJhbWVfc291cmNlX2dldCk6Ci0gICAgICAgIChld2tf
ZnJhbWVfcmVzb3VyY2VzX2xvY2F0aW9uX2dldCk6Ci0gICAgICAgICogZXdrL2V3a19mcmFtZS5o
OgotICAgICAgICAqIGV3ay9ld2tfcHJpdmF0ZS5oOgotICAgICAgICAqIGV3ay9ld2tfdmlldy5j
cHA6Ci0gICAgICAgIChfZXdrX3ZpZXdfdmlld3BvcnRfYXR0cmlidXRlc19jb21wdXRlKToKLSAg
ICAgICAgKGV3a192aWV3X2ZpeGVkX2xheW91dF9zaXplX2dldCk6Ci0gICAgICAgIChld2tfdmll
d190aGVtZV9nZXQpOgotICAgICAgICAoZXdrX3ZpZXdfaW1oX2dldCk6Ci0gICAgICAgIChld2tf
dmlld19zZXR0aW5nX2VuY29kaW5nX2RldGVjdG9yX2dldCk6Ci0gICAgICAgIChld2tfdmlld19z
ZXR0aW5nX2VuYWJsZV9kZXZlbG9wZXJfZXh0cmFzX2dldCk6Ci0gICAgICAgIChld2tfdmlld19z
ZXR0aW5nX3NwYXRpYWxfbmF2aWdhdGlvbl9nZXQpOgotICAgICAgICAoZXdrX3ZpZXdfc2V0dGlu
Z19sb2NhbF9zdG9yYWdlX2dldCk6Ci0gICAgICAgIChld2tfdmlld19zZXR0aW5nX3BhZ2VfY2Fj
aGVfZ2V0KToKLSAgICAgICAgKGV3a192aWV3X3ZpZXdwb3J0X2F0dHJpYnV0ZXNfZ2V0KToKLSAg
ICAgICAgKGV3a192aWV3X3pvb21fcmFuZ2VfbWluX2dldCk6Ci0gICAgICAgIChld2tfdmlld196
b29tX3JhbmdlX21heF9nZXQpOgotICAgICAgICAoZXdrX3ZpZXdfdXNlcl9zY2FsYWJsZV9nZXQp
OgotICAgICAgICAoZXdrX3ZpZXdfZGV2aWNlX3BpeGVsX3JhdGlvX2dldCk6Ci0gICAgICAgIChl
d2tfdmlld19wYWdlX3JlY3RfZ2V0KToKLSAgICAgICAgKGV3a192aWV3X21vZGVfZ2V0KToKLSAg
ICAgICAgKiBld2svZXdrX3ZpZXcuaDoKLSAgICAgICAgKiBld2svZXdrX3dpbmRvd19mZWF0dXJl
cy5jcHA6Ci0gICAgICAgIChld2tfd2luZG93X2ZlYXR1cmVzX2Jvb2xfcHJvcGVydHlfZ2V0KToK
LSAgICAgICAgKGV3a193aW5kb3dfZmVhdHVyZXNfaW50X3Byb3BlcnR5X2dldCk6Ci0gICAgICAg
ICogZXdrL2V3a193aW5kb3dfZmVhdHVyZXMuaDoKLQotMjAxMS0wOC0yOSAgR3J6ZWdvcnogQ3ph
amtvd3NraSAgPGcuY3phamtvd3NraUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBbRUZMXSBBZGQg
bWlzc2luZyBBUEkgZG9jdW1lbnRhdGlvbi4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTY2OTI3Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgS2VudCBUYW11
cmEuCi0KLSAgICAgICAgQWRkcyBtaXNzaW5nIGRvY3VtZW50YXRpb24gZm9yIGV3a19jb250ZXh0
X21lbnVfaXRlbV9jaGVja2VkX2dldC9zZXQuCi0gICAgICAgIE1vdmVzIEFQSSBkb2N1bWVudGF0
aW9uIGZyb20gY3BwIHRvIHRoZSBoZWFkZXJzLgotICAgICAgICBBZGRzIGJyaWVmIGFuZCBmaWxl
IGNvbW1hbmRzIGZvciBld2tfanMuaC4KLQotICAgICAgICAqIGV3ay9ld2tfY29udGV4dG1lbnUu
aDoKLSAgICAgICAgKiBld2svZXdrX2Nvb2tpZXMuY3BwOgotICAgICAgICAqIGV3ay9ld2tfY29v
a2llcy5oOgotICAgICAgICAqIGV3ay9ld2tfZnJhbWUuY3BwOgotICAgICAgICAqIGV3ay9ld2tf
ZnJhbWUuaDoKLSAgICAgICAgKiBld2svZXdrX2pzLmg6Ci0KLTIwMTEtMDgtMjkgIFJ5dWFuIENo
b2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFJFR1JFU1NJT04ocjkzNjM3
KSBCdWlsZCBicmVhayBiZWNhdXNlIGhlYWRlciBmaWxlIGlzIG1pc3NpbmcuCi0gICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NzExMwotCi0gICAgICAgIFVu
cmV2aWV3ZWQgYnVpbGQgZml4IGFmdGVyIHI5MzYzNy4KLQotICAgICAgICAqIENNYWtlTGlzdHNF
ZmwudHh0OiBBZGQgZXdrX2pzLmggaW4gRVdlYktpdF9IRUFERVJTLgotCi0yMDExLTA4LTI1ICBS
YXBoYWVsIEt1Ym8gZGEgQ29zdGEgIDxrdWJvQHByb2Z1c2lvbi5tb2JpPgotCi0gICAgICAgIFtF
RkxdIEFkZCBBUEkgdG8gYWxsb3cgc2NyaXB0cyB0byBjbG9zZSB3aW5kb3dzIGF1dG9tYXRpY2Fs
bHkgdmlhIEphdmFTY3JpcHQuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD02Njc3NwotCi0gICAgICAgIFJldmlld2VkIGJ5IEFudG9uaW8gR29tZXMuCi0K
LSAgICAgICAgTWFrZSBpdCBwb3NzaWJsZSB0byBhbGxvdyBvciBwcmV2ZW50IHNjcmlwdHMgZnJv
bSBjbG9zaW5nIHdpbmRvd3MKLSAgICAgICAgYXV0b21hdGljYWxseSAodmlhIHdpbmRvdy5jbG9z
ZSwgZm9yIGV4YW1wbGUpLgotCi0gICAgICAgIEJlc2lkZXMgYmVpbmcgdXNlZnVsIGluIGdlbmVy
YWwsIHRoaXMgaXMgcmVxdWlyZWQgYnkgRFJULgotCi0gICAgICAgICogZXdrL2V3a192aWV3LmNw
cDoKLSAgICAgICAgKF9ld2tfdmlld19wcml2X25ldyk6Ci0gICAgICAgIChld2tfdmlld19zZXR0
aW5nX3NjcmlwdHNfY2FuX2Nsb3NlX3dpbmRvd3NfZ2V0KToKLSAgICAgICAgKGV3a192aWV3X3Nl
dHRpbmdfc2NyaXB0c19jYW5fY2xvc2Vfd2luZG93c19zZXQpOgotICAgICAgICAqIGV3ay9ld2tf
dmlldy5oOgotCi0yMDExLTA4LTI1ICBSYXBoYWVsIEt1Ym8gZGEgQ29zdGEgIDxrdWJvQHByb2Z1
c2lvbi5tb2JpPgotCi0gICAgICAgIFtFRkxdIEltcGxlbWVudCBGcmFtZUxvYWRlckNsaWVudDo6
ZGlkVHJhbnNmZXJDaGlsZEZyYW1lVG9OZXdEb2N1bWVudAotICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjY2OTAKLQotICAgICAgICBSZXZpZXdlZCBieSBB
bnRvbmlvIEdvbWVzLgotCi0gICAgICAgIFRoZSBpbXBsZW1lbnRhdGlvbiBpcyBtb3N0bHkgYmFz
ZWQgb24gdGhlIEdUSysgcG9ydCdzLCBhcyB3ZSBqdXN0IG5lZWQKLSAgICAgICAgdG8gdHJhbnNm
ZXIgdGhlIG93bmVyc2hpcCBvZiB0aGUgZnJhbWUgdG8gYSBuZXcgdmlldyBhbmQgYWRqdXN0IHRo
ZQotICAgICAgICBzbWFydCBvYmplY3QgcGFydCBhY2NvcmRpbmdseS4KLQotICAgICAgICBUaGlz
IHNob3VsZCBoZWxwIG1ha2UgZmFzdC9mcmFtZXMvaWZyYW1lLXJlcGFyZW50aW5nLWFkb3B0LW5v
ZGUuaHRtbAotICAgICAgICBwYXNzLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRF
Zmw6OmRpZFRyYW5zZmVyQ2hpbGRGcmFtZVRvTmV3RG9jdW1lbnQpOgotICAgICAgICAqIGV3ay9l
d2tfZnJhbWUuY3BwOgotICAgICAgICAoZXdrX2ZyYW1lX3ZpZXdfc2V0KToKLSAgICAgICAgKGV3
a19mcmFtZV92aWV3X2NyZWF0ZV9mb3Jfdmlldyk6Ci0gICAgICAgICogZXdrL2V3a19wcml2YXRl
Lmg6Ci0KLTIwMTEtMDgtMjQgIEphZWh1biBMaW0gIDxsamFlaHVuLmxpbUBzYW1zdW5nLmNvbT4K
LQotICAgICAgICBbRUZMXSBBZGQgZHVtbXkgSWNvbkRhdGFiYXNlQ2xpZW50RWZsLgotICAgICAg
ICBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTU5NgotCi0gICAgICAg
IEltcGxlbWVudHMgYSBkdW1teSBJY29uRGF0YWJhc2VDbGllbnRFZmwgY2xhc3MuCi0gICAgICAg
IEFkZHMgdHdvIGZpbGVzLCBJY29uRGF0YWJhc2VDbGllbnRFZmwuaCB8IC5jcHAuCi0KLSAgICAg
ICAgUmV2aWV3ZWQgYnkgS2VudCBUYW11cmEuCi0KLSAgICAgICAgKiBDTWFrZUxpc3RzRWZsLnR4
dDoKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9JY29uRGF0YWJhc2VDbGllbnRFZmwuY3BwOiBB
ZGRlZC4KLSAgICAgICAgKFdlYkNvcmU6Okljb25EYXRhYmFzZUNsaWVudEVmbDo6cGVyZm9ybUlt
cG9ydCk6Ci0gICAgICAgIChXZWJDb3JlOjpJY29uRGF0YWJhc2VDbGllbnRFZmw6OmRpZFJlbW92
ZUFsbEljb25zKToKLSAgICAgICAgKFdlYkNvcmU6Okljb25EYXRhYmFzZUNsaWVudEVmbDo6ZGlk
SW1wb3J0SWNvblVSTEZvclBhZ2VVUkwpOgotICAgICAgICAoV2ViQ29yZTo6SWNvbkRhdGFiYXNl
Q2xpZW50RWZsOjpkaWRJbXBvcnRJY29uRGF0YUZvclBhZ2VVUkwpOgotICAgICAgICAoV2ViQ29y
ZTo6SWNvbkRhdGFiYXNlQ2xpZW50RWZsOjpkaWRDaGFuZ2VJY29uRm9yUGFnZVVSTCk6Ci0gICAg
ICAgIChXZWJDb3JlOjpJY29uRGF0YWJhc2VDbGllbnRFZmw6OmRpZEZpbmlzaFVSTEltcG9ydCk6
Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvSWNvbkRhdGFiYXNlQ2xpZW50RWZsLmg6IEFkZGVk
LgotCi0yMDExLTA4LTIzICBLd2FuZ0h5dWsgS2ltICA8aHl1a2kua2ltQHNhbXN1bmcuY29tPgot
Ci0gICAgICAgIFtFRkxdIENoYW5nZSBwYXJhbWV0ZXIgdHlwZSBmb3Igc29tZSBBUElzIGluIGV3
a190aWxlX21hdHJpeC4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTY2NjM5Ci0KLSAgICAgICAgQXMgdHlwZSBvZiBib3RoIGNvbCBhbmQgcm93IHBhcmFt
ZXRlciBmb3IgZXdrX3RpbGVfbWF0cml4J3Mgc29tZSBBUElzIGxpc3RlZCBieSB0aGlzIHBhdGNo
Ci0gICAgICAgIGFyZSBkaWZmZXJlbnQgZnJvbSBlYWNoIG90aGVyIGFuZCBlaW5hX21hdHJpeHNw
YXJzZSBhc3NvY2lhdGVkIHdpdGggZXdrX3RpbGVfbWF0cml4IGlzIG5vdwotICAgICAgICB1c2lu
ZyB1bnNpZ25lZCBsb25nIHR5cGUgZm9yIGJvdGggY29sIGFuZCByb3cgcGFyYW1ldGVyLCByb3cg
cGFyYW1ldGVyIGZvciBld2tfdGlsZV9tYXRyaXgKLSAgICAgICAgaXMgYWxzbyBiZXR0ZXIgdG8g
YmUgc3BlY2lmaWVkIGFzIHVuc2lnbmVkIGxvbmcgdHlwZS4KLQotICAgICAgICBSZXZpZXdlZCBi
eSBBbmRlcnMgQ2FybHNzb24uCi0KLSAgICAgICAgKiBld2svZXdrX3RpbGVkX21hdHJpeC5jOgot
ICAgICAgICAoZXdrX3RpbGVfbWF0cml4X3RpbGVfZXhhY3RfZ2V0KToKLSAgICAgICAgKGV3a190
aWxlX21hdHJpeF90aWxlX2V4YWN0X2V4aXN0cyk6Ci0gICAgICAgIChld2tfdGlsZV9tYXRyaXhf
dGlsZV9uZXcpOgotICAgICAgICAoZXdrX3RpbGVfbWF0cml4X3RpbGVfdXBkYXRlKToKLSAgICAg
ICAgKGV3a190aWxlX21hdHJpeF90aWxlX3VwZGF0ZV9mdWxsKToKLSAgICAgICAgKiBld2svZXdr
X3RpbGVkX21hdHJpeC5oOgotCi0yMDExLTA4LTIzICBSYXBoYWVsIEt1Ym8gZGEgQ29zdGEgIDxr
dWJvQHByb2Z1c2lvbi5tb2JpPgotCi0gICAgICAgIFtFRkxdIEdldCB0aGUgZGVmYXVsdCB2YWx1
ZSBmb3IgYHNjcmlwdHNfd2luZG93X29wZW4nIGZyb20gdGhlIHJpZ2h0IG1ldGhvZC4KLSAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2Nzc1Ci0KLSAgICAg
ICAgUmV2aWV3ZWQgYnkgS2VudCBUYW11cmEuCi0KLSAgICAgICAgRm9yIHNvbWUgdW5rbm93biBy
ZWFzb24sIHRoZSBkZWZhdWx0IHZhbHVlIGZvciB0aGlzIHNldHRpbmcgd2FzIGJlaW5nCi0gICAg
ICAgIG9idGFpbmVkIGZyb20gU2V0dGluZ3M6OmFsbG93U2NyaXB0c1RvQ2xvc2VXaW5kb3dzKCkg
aW5zdGVhZCBvZgotICAgICAgICBTZXR0aW5nczo6amF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0
b21hdGljYWxseSgpLCB3aGljaCBtYWtlcyBubwotICAgICAgICBzZW5zZSBhdCBhbGwuCi0KLSAg
ICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoX2V3a192aWV3X3ByaXZfbmV3KToK
LQotMjAxMS0wOC0yMyAgS3dhbmdIeXVrIEtpbSAgPGh5dWtpLmtpbUBzYW1zdW5nLmNvbT4KLQot
ICAgICAgICBbRUZMXSBDaGFuZ2UgdGhlIHRpbGVkIGJhY2tpbmcgc3RvcmUgdG8gdXNlIGNvbnN0
YW50IHNpemUgb2YgdGlsZS4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTY1ODQ4Ci0KLSAgICAgICAgQXMgY3VycmVudCB0aWxlZCBiYWNraW5nIHN0b3Jl
IGluIFdlYmtpdCBFRkwgaXMgdXNpbmcgdmFyaWFibGUgdGlsZSBzaXplIGFjY29yZGluZyB0byB0
aGUgem9vbSBsZXZlbCwKLSAgICAgICAgdGhlIG51bWJlciBvZiB0aWxlcyBpbiB2aWV3cG9ydCBp
cyBub3Qgc2FtZSBhbHdheXMgYW5kIHRoZSBzcGVlZCBvZiBwYW5uaW5nIGlzIGFsc28gbm90IGNv
bnNpc3RlbnQKLSAgICAgICAgd2hlbmV2ZXIgem9vbSBsZXZlbCBpcyBjaGFuZ2VkLgotICAgICAg
ICBUaGVyZWZvcmUsIHRpbGUgc2l6ZSBzaG91bGQgYmUgY29uc3RhbnQgc2l6ZSBpbiBvcmRlciB0
byBtYWtlIHN1cmUgdGhlIGNvbnNpc3RlbnQgcGFubmluZyBzcGVlZC4KLQotICAgICAgICBSZXZp
ZXdlZCBieSBBbmRlcnMgQ2FybHNzb24uCi0KLSAgICAgICAgKiBld2svZXdrX3RpbGVkX2JhY2tp
bmdfc3RvcmUuYzoKLSAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9tb2RlbF9tYXRy
aXhfY3JlYXRlKToKLSAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9zbWFydF9hZGQp
OgotICAgICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3NtYXJ0X2NhbGN1bGF0ZSk6Ci0g
ICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfem9vbV9zZXRfaW50ZXJuYWwpOgotICAg
ICAgICAoZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfem9vbV93ZWFrX3NldCk6Ci0gICAgICAgIChl
d2tfdGlsZWRfYmFja2luZ19zdG9yZV9mbHVzaCk6Ci0gICAgICAgIChld2tfdGlsZWRfYmFja2lu
Z19zdG9yZV9wcmVfcmVuZGVyX3JlZ2lvbik6Ci0gICAgICAgIChld2tfdGlsZWRfYmFja2luZ19z
dG9yZV9wcmVfcmVuZGVyX3JlbGF0aXZlX3JhZGl1cyk6Ci0gICAgICAgICogZXdrL2V3a190aWxl
ZF9iYWNraW5nX3N0b3JlLmg6Ci0gICAgICAgICogZXdrL2V3a190aWxlZF9tYXRyaXguYzoKLSAg
ICAgICAgKF9ld2tfdGlsZV9tYXRyaXhfY2VsbF9mcmVlKToKLSAgICAgICAgKF9ld2tfdGlsZV9t
YXRyaXhfdGlsZV9mcmVlKToKLSAgICAgICAgKGV3a190aWxlX21hdHJpeF9uZXcpOgotICAgICAg
ICAoZXdrX3RpbGVfbWF0cml4X3RpbGVfZXhhY3RfZ2V0KToKLSAgICAgICAgKGV3a190aWxlX21h
dHJpeF90aWxlX2V4YWN0X2V4aXN0cyk6Ci0gICAgICAgIChld2tfdGlsZV9tYXRyaXhfdGlsZV9u
ZXcpOgotICAgICAgICAoZXdrX3RpbGVfbWF0cml4X3RpbGVfdXBkYXRlKToKLSAgICAgICAgKGV3
a190aWxlX21hdHJpeF90aWxlX3VwZGF0ZV9mdWxsKToKLSAgICAgICAgKF9ld2tfdGlsZV9tYXRy
aXhfc2xpY2VyX3NldHVwKToKLSAgICAgICAgKGV3a190aWxlX21hdHJpeF91cGRhdGUpOgotICAg
ICAgICAoZXdrX3RpbGVfbWF0cml4X2RiZyk6Ci0gICAgICAgICogZXdrL2V3a190aWxlZF9tYXRy
aXguaDoKLSAgICAgICAgKiBld2svZXdrX3RpbGVkX21vZGVsLmM6Ci0gICAgICAgIChld2tfdGls
ZV9uZXcpOgotCi0yMDExLTA4LTIzICBKb25hcyBNLiBHYXN0YWwgPGpnYXN0YWxAcHJvZnVzaW9u
Lm1vYmk+Ci0KLSAgICAgICAgW0VGTF0gRXhwb3J0aW5nIEphdmFTY3JpcHQgb2JqZWN0cyBmb3Ig
RUZMIHBvcnQKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTQzNDQ2Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21lcy4KLQotICAgICAgICBU
aGlzIHBhdGNoIGFsbG93cyB0byBleHBvcnQgb2JqZWN0cyB0byBKYXZhU2NyaXB0IEFQSSwKLSAg
ICAgICAganVzdCBsaWtlIHF0IGRvZXMsIGJ1dCBpdCB1c2VzIHRoZSBuZXRzY2FwZSBhcGkKLSAg
ICAgICAgdG8gZG8gdGhlIGNvbnZlcnRpb24gdG8gamF2YXNjcmlwdCBvYmplY3QuCi0KLSAgICAg
ICAgKiBDTWFrZUxpc3RzLnR4dDoKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6
ZGlzcGF0Y2hEaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQpOgotICAgICAgICAqIGV3ay9FV2Vi
S2l0Lmg6Ci0gICAgICAgICogZXdrL2V3a19qcy5jcHA6IEFkZGVkLgotICAgICAgICAoZXdrX2pz
X3ZhcmlhbnRfdG9fbnB2YXJpYW50KToKLSAgICAgICAgKGV3a19qc19ucHZhcmlhbnRfdG9fdmFy
aWFudCk6Ci0gICAgICAgIChld2tfanNfcHJvcGVydHlfaGFzKToKLSAgICAgICAgKGV3a19qc19w
cm9wZXJ0eV9nZXQpOgotICAgICAgICAoZXdrX2pzX3Byb3BlcnR5X3NldCk6Ci0gICAgICAgIChl
d2tfanNfcHJvcGVydHlfcmVtb3ZlKToKLSAgICAgICAgKGV3a19qc19wcm9wZXJ0aWVzX2VudW1l
cmF0ZSk6Ci0gICAgICAgIChld2tfanNfbWV0aG9kX2hhcyk6Ci0gICAgICAgIChld2tfanNfbWV0
aG9kX2ludm9rZSk6Ci0gICAgICAgIChld2tfanNfY2xhc3NfbmV3KToKLSAgICAgICAgKGV3a19q
c19jbGFzc19mcmVlKToKLSAgICAgICAgKGV3a19qc19vYmplY3RfbmV3KToKLSAgICAgICAgKGV3
a19qc19vYmplY3RfZnJlZSk6Ci0gICAgICAgIChld2tfanNfb2JqZWN0X3Byb3BlcnRpZXNfZ2V0
KToKLSAgICAgICAgKGV3a19qc19vYmplY3RfbmFtZV9nZXQpOgotICAgICAgICAoZXdrX2pzX3Zh
cmlhbnRfZnJlZSk6Ci0gICAgICAgICogZXdrL2V3a19qcy5oOiBBZGRlZC4KLSAgICAgICAgKiBl
d2svZXdrX21haW4uY3BwOgotICAgICAgICAoZXdrX2luaXQpOgotICAgICAgICAqIGV3ay9ld2tf
cHJpdmF0ZS5oOgotICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChld2tfdmll
d19qc193aW5kb3dfb2JqZWN0X2NsZWFyKToKLSAgICAgICAgKGV3a192aWV3X2pzX29iamVjdF9h
ZGQpOgotICAgICAgICAqIGV3ay9ld2tfdmlldy5oOgotCi0yMDExLTA4LTIzICBSYXBoYWVsIEt1
Ym8gZGEgQ29zdGEgIDxrdWJvQHByb2Z1c2lvbi5tb2JpPgotCi0gICAgICAgIFtFRkxdIERvIG5v
dCB0cmVhdCB2YWxpZCBjYXNlcyBpbiBld2tfZnJhbWVfY2hpbGRfYWRkKCkgYXMgZmFpbHVyZXMu
Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NjY5Mgot
Ci0gICAgICAgIFJ1YmJlci1zdGFtcGVkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgot
Ci0gICAgICAgIEZyYW1lOjpwYWdlKCkgYW5kIEZyYW1lVHJlZTo6cGFyZW50KCkgcmV0dXJuaW5n
IDAgd2VyZSBiZWluZyBjb25zaWRlcmVkCi0gICAgICAgIGZhaWx1cmUgY2FzZXMsIGhvd2V2ZXIg
aXQgaXMgcG9zc2libGUgZm9yIHRoZW0gdG8gcmV0dXJuIDAgd2hlbiBzb21lCi0gICAgICAgIGFy
Yml0cmFyeSBKYXZhU2NyaXB0IGlzIHJ1bi4KLQotICAgICAgICBUaGUgZnVuY3Rpb24ncyByZXR1
cm4gdHlwZSBoYXMgYmVlbiBjaGFuZ2VkIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGNvbnZleQotICAg
ICAgICB0aGVzZSBjYXNlcyB0byB0aGUgY2FsbGVyICh3aGljaCBpcyBvbmx5IGV3a192aWV3X2Zy
YW1lX2NyZWF0ZSkuCi0KLSAgICAgICAgVGhpcyBzaG91bGQgbWFrZSB0ZXN0cyBsaWtlCi0gICAg
ICAgIGZhc3QvZG9tL251bGwtcGFnZS1zaG93LW1vZGFsLWRpYWxvZy1jcmFzaC5odG1sIHN0b3Ag
b3V0cHV0dGluZwotICAgICAgICBlcnJvbmVvdXMgbWVzc2FnZXMgdG8gc3RkZXJyLgotCi0gICAg
ICAgICogZXdrL2V3a19mcmFtZS5jcHA6Ci0gICAgICAgIChld2tfZnJhbWVfY2hpbGRfYWRkKToK
LSAgICAgICAgKiBld2svZXdrX3ByaXZhdGUuaDoKLQotMjAxMS0wOC0yMyAgTGVhbmRybyBQZXJl
aXJhICA8bGVhbmRyb0Bwcm9mdXNpb24ubW9iaT4KLQotICAgICAgICBVbnJldmlld2VkIGJ1aWxk
IGZpeCBhZnRlciByNjY2ODUuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6
ZGlzcGF0Y2hEaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQpOgotICAgICAgICBBc3NlcnQgdXNp
bmcgdGhlIHJpZ2h0IHZhcmlhYmxlIG5hbWUuCi0KLTIwMTEtMDgtMjMgIFJhcGhhZWwgS3VibyBk
YSBDb3N0YSAgPGt1Ym9AcHJvZnVzaW9uLm1vYmk+Ci0KLSAgICAgICAgW0VGTF0gVHJlYXQgdGhl
IGNhc2Ugb2YgV2ViQ29yZTo6SGlzdG9yeS0+Y3VycmVudEl0ZW0oKSByZXR1cm5pbmcgTlVMTC4K
LSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2Njk4Ci0K
LSAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCi0KLSAgICAg
ICAgV2ViQ29yZTo6SGlzdG9yeS0+Y3VycmVudEl0ZW0oKSBtYXkgcmV0dXJuIE5VTEwsIGFuZCB3
ZSdkIGJldHRlciB0cmVhdAotICAgICAgICBpdCBpbiBld2tfaGlzdG9yeV9oaXN0b3J5X2l0ZW1f
Y3VycmVudF9nZXQgaXRzZWxmIHRoYW4gcHJvcGFnYXRlIHRoZQotICAgICAgICBpc3N1ZSB0byBf
ZXdrX2hpc3RvcnlfaXRlbV9uZXcuCi0KLSAgICAgICAgKiBld2svZXdrX2hpc3RvcnkuY3BwOgot
ICAgICAgICAoZXdrX2hpc3RvcnlfaGlzdG9yeV9pdGVtX2N1cnJlbnRfZ2V0KToKLSAgICAgICAg
KiBld2svZXdrX2hpc3RvcnkuaDoKLQotMjAxMS0wOC0yMyAgUmFwaGFlbCBLdWJvIGRhIENvc3Rh
ICA8a3Vib0Bwcm9mdXNpb24ubW9iaT4KLQotICAgICAgICBbRUZMXSBBZGQgYXV4aWxpYXJ5IGhp
c3RvcnkgZnVuY3Rpb25zIGZvciBEUlQKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTY2NzAwCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgS2VudCBUYW11cmEu
Ci0KLSAgICAgICAgRUZMJ3MgRHVtcFJlbmRlclRyZWUgaW1wbGVtZW50YXRpb24gbmVlZHMgc29t
ZSBwcml2YXRlLCBhdXhpbGlhcnkKLSAgICAgICAgZnVuY3Rpb25zIGluIGV3ayBpbiBvcmRlciB0
byBpdGVyYXRlIGFuZCBkdW1wIHRoZSBoaXN0b3J5IHRyZWUgd2hlbgotICAgICAgICBuZWNlc3Nh
cnkuCi0KLSAgICAgICAgKiBld2svZXdrX2hpc3RvcnkuY3BwOgotICAgICAgICAoZXdrX2hpc3Rv
cnlfaXRlbV90YXJnZXRfZ2V0KToKLSAgICAgICAgKGV3a19oaXN0b3J5X2l0ZW1fdGFyZ2V0X2lz
KToKLSAgICAgICAgKGV3a19oaXN0b3J5X2l0ZW1fY2hpbGRyZW5fZ2V0KToKLSAgICAgICAgKiBl
d2svZXdrX3ByaXZhdGUuaDoKLQotMjAxMS0wOC0yMyAgUmFwaGFlbCBLdWJvIGRhIENvc3RhICA8
a3Vib0Bwcm9mdXNpb24ubW9iaT4KLQotICAgICAgICBbRUZMXSBBZGQgYXV4aWxpYXJ5IGV3a191
dGlsIGZ1bmN0aW9ucyBmb3IgRFJULgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NjY3MDIKLQotICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRl
IENocmlzdGlhbnNlbi4KLQotICAgICAgICBBZGQgc29tZSBhdXhpbGlhcnkgZnVuY3Rpb25zIG5l
ZWRlZCBieSBFRkwncyBEUlQgaW1wbGVtZW50YXRpb24uIFRoZXkKLSAgICAgICAgYWxsIHJldm9s
dmUgYXJvdW5kIHRhbGtpbmcgdG8gdGhlIGdhcmJhZ2UgY29sbGVjdG9yIGFuZCBjb3VudGluZyB0
aGUKLSAgICAgICAgd29ya2VyIHRocmVhZHMuCi0KLSAgICAgICAgKiBld2svZXdrX3ByaXZhdGUu
aDoKLSAgICAgICAgKiBld2svZXdrX3V0aWwuY3BwOgotICAgICAgICAoZXdrX3V0aWxfamF2YXNj
cmlwdF9nY19jb2xsZWN0KToKLSAgICAgICAgKGV3a191dGlsX2phdmFzY3JpcHRfZ2NfYWx0ZXJu
YXRlX3RocmVhZF9jb2xsZWN0KToKLSAgICAgICAgKGV3a191dGlsX2phdmFzY3JpcHRfZ2Nfb2Jq
ZWN0X2NvdW50X2dldCk6Ci0gICAgICAgIChld2tfdXRpbF93b3JrZXJfdGhyZWFkX2NvdW50KToK
LSAgICAgICAgKGV3a191dGlsX2RwaV9nZXQpOgotCi0yMDExLTA4LTIyICBSYXBoYWVsIEt1Ym8g
ZGEgQ29zdGEgIDxrdWJvQHByb2Z1c2lvbi5tb2JpPgotCi0gICAgICAgIFtFRkxdIEltcGxlbWVu
dCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQK
LSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2Njg1Ci0K
LSAgICAgICAgUmV2aWV3ZWQgYnkgS2VudCBUYW11cmEuCi0KLSAgICAgICAgSW1wbGVtZW50IGRp
c3BhdGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkLCBhcyBpdCBpcyBuZWVkZWQgYnkKLSAg
ICAgICAgRHVtcFJlbmRlclRyZWUgdG8sIGFtb25nIG90aGVyIHRoaW5ncywgcHJvcGVybHkgaW5z
dGFsbCB0aGUgZXZlbnQKLSAgICAgICAgc2VuZGVyIGluIHRoZSB3aW5kb3cgb2JqZWN0LgotCi0g
ICAgICAgIFRoaXMgaW1wbGVtZW50YXRpb24gd29ya3MgYnkgZW1pdHRpbmcgYSAid2luZG93LG9i
amVjdCxjbGVhcmVkIiBzaWduYWwKLSAgICAgICAgd2l0aCBhIHByaXZhdGUgc3RydWN0IGNvbnRh
aW5pbmcgdGhlIHJlcXVpcmVkIGluZm9ybWF0aW9uIChjb250ZXh0LAotICAgICAgICB3aW5kb3cg
b2JqZWN0IGFuZCBmcmFtZSkuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6
ZGlzcGF0Y2hEaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQpOgotICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmg6Ci0gICAgICAgICogZXdrL2V3a19wcml2YXRl
Lmg6Ci0KLTIwMTEtMDgtMjAgIEdyemVnb3J6IEN6YWprb3dza2kgIDxnLmN6YWprb3dza2lAc2Ft
c3VuZy5jb20+Ci0KLSAgICAgICAgW0VGTF0gRml4IGFuZCB1cGRhdGUgZG94eWdlbiBkb2N1bWVu
dGF0aW9uIGZvciBld2tfdmlldy4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTY2MjkzCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgS2VudCBUYW11cmEuCi0K
LSAgICAgICAgKiBld2svZXdrX3ZpZXcuaDoKLQotICAgICAgICBGaXhlcyBkZXNjcmlwdGlvbiBv
ZiBtZXRob2QsIHBhcmFtZXRlcnMgYW5kIHJldHVybmVkIHZhbHVlIG9mIEFQSQotICAgICAgICBy
ZWxhdGVkIHRvIHNldHRpbmdzLgotCi0yMDExLTA4LTIwICBHcnplZ29yeiBDemFqa293c2tpICA8
Zy5jemFqa293c2tpQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxdIEZpeCBhbmQgdXBkYXRl
IGRveHlnZW4gZG9jdW1lbnRhdGlvbiBmb3IgZXdrX3ZpZXcuCi0gICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NjI5MwotCi0gICAgICAgIFJldmlld2VkIGJ5
IEtlbnQgVGFtdXJhLgotCi0gICAgICAgIEZpeGVzIGRlc2NyaXB0aW9uIG9mIG1ldGhvZHMsIHBh
cmFtZXRlcnMgYW5kIHJldHVybmVkIHZhbHVlIG9mIEFQSQotICAgICAgICByZWxhdGVkIHRvIGNh
Y2hlIG9mIHVudXNlZCB0aWxlcywgdGV4dCBzZWFyY2hpbmcgYW5kIHpvb20gbWF0dGVyLgotCi0g
ICAgICAgICogZXdrL2V3a192aWV3Lmg6Ci0KLTIwMTEtMDgtMjAgIEdyemVnb3J6IEN6YWprb3dz
a2kgIDxnLmN6YWprb3dza2lAc2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW0VGTF0gRml4IGFuZCB1
cGRhdGUgZG94eWdlbiBkb2N1bWVudGF0aW9uIGZvciBld2tfdmlldy4KLSAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2MjkzCi0KLSAgICAgICAgUmV2aWV3
ZWQgYnkgS2VudCBUYW11cmEuCi0KLSAgICAgICAgQWRkcyBkb3h5Z2VuIGRvY3VtZW50YXRpb24g
Zm9yIHR5cGVkZWZzLCBkZWZpbmVzIGFuZCBzdHJ1Y3R1cmVzIGluIGV3a192aWV3LmguCi0gICAg
ICAgIE1vdmVzIGluY2x1ZGVzIGFuZCBkZWZpbmVzIGJlbG93IGEgYnJpZWYgb2YgZmlsZS4KLQot
ICAgICAgICAqIGV3ay9ld2tfdmlldy5oOgotCi0yMDExLTA4LTE5ICBLd2FuZ0h5dWsgS2ltICA8
aHl1a2kua2ltQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxdIEFkZCAicmV0dXJuIiBzdGF0
ZW1lbnQgY29ycmVzcG9uZGluZyB0byBhYm5vcm1hbCBjb25kaXRpb24gb24gX2V3a19mcmFtZV9z
bWFydF9hZGQuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02NTQwOAotCi0gICAgICAgIEJhaWwgb3V0IHdoZW4gd2UgZmFpbCB0byBhbGxvY2F0ZSBhbiBF
d2tfRnJhbWVfU21hcnRfRGF0YSBvYmplY3QgcmF0aGVyIHRoYW4gY29udGludWluZyBvbiBhcyBp
ZiB0aGUgYWxsb2NhdGlvbiBoYWQgc3VjY2VlZGVkLgotCi0gICAgICAgIFJldmlld2VkIGJ5IEFk
YW0gUm9iZW4uCi0KLSAgICAgICAgKiBld2svZXdrX2ZyYW1lLmNwcDoKLSAgICAgICAgKF9ld2tf
ZnJhbWVfc21hcnRfYWRkKToKLQotMjAxMS0wOC0xOSAgS3dhbmdIeXVrIEtpbSAgPGh5dWtpLmtp
bUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBbRUZMXSBDaGFuZ2UgY29uZGl0aW9uIGNoZWNraW5n
IGxvZ2ljIHJlbGF0ZWQgd2l0aCBib3RoIGNoYW5nZSBvZiBwb3NpdGlvbiBhbmQgb2Zmc2V0IGZv
ciBiYWNraW5nIHN0b3JlLgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NjYwMjgKLQotICAgICAgICBBcyBiYWNraW5nIHN0b3JlJ3MgcG9zaXRpb24gYW5k
IG9mZnNldCBjaGFuZ2UgY2FuIG9jY3VyIGF0IHRoZSBzYW1lIHRpbWUsCi0gICAgICAgIHRoZSBj
aGVja2luZyBvZiBvZmZzZXQgY2hhbmdlIHNob3VsZG4ndCBiZSAiZWxzZSBpZiIgc3RhdGVtZW50
LgotCi0gICAgICAgIFJldmlld2VkIGJ5IEFkYW0gUm9iZW4uCi0KLSAgICAgICAgKiBld2svZXdr
X3RpbGVkX2JhY2tpbmdfc3RvcmUuYzoKLSAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9y
ZV9zbWFydF9jYWxjdWxhdGUpOgotCi0yMDExLTA4LTE5ICBHcnplZ29yeiBDemFqa293c2tpICA8
Zy5jemFqa293c2tpQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxdIEZpeCBhbmQgdXBkYXRl
IGRveHlnZW4gZG9jdW1lbnRhdGlvbiBmb3IgZXdrX3ZpZXcuCi0gICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NjI5MwotCi0gICAgICAgIFJldmlld2VkIGJ5
IEtlbnQgVGFtdXJhLgotCi0gICAgICAgIEFkZHMgZG94eWdlbiBkb2N1bWVudGF0aW9uIHRvIHRo
ZSBzdHJ1Y3R1cmVzIGluIGV3a192aWV3LmNwcC4KLQotICAgICAgICAqIGV3ay9ld2tfdmlldy5j
cHA6Ci0KLTIwMTEtMDgtMTkgIEt3YW5nSHl1ayBLaW0gIDxoeXVraS5raW1Ac2Ftc3VuZy5jb20+
Ci0KLSAgICAgICAgW0VGTF0gTW9kaWZ5IHR5cGUgb2YgYm90aCBjb2wgYW5kIHJvdyBwYXJhbWV0
ZXJzIGZvciBiYWNraW5nIHN0b3JlJ3MgaW50ZXJuYWwgYXBpLgotICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjUzMDIKLQotICAgICAgICBBcyBib3RoIGNv
bCBhbmQgcm93IHBhcmFtZXRlcidzIHR5cGUgZm9yIGJvdGggX2V3a190aWxlZF9iYWNraW5nX3N0
b3JlX2l0ZW1fZmlsbAotICAgICAgICBhbmQgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfaXRlbV9h
ZGQgYXJlIGRpZmZlcmVudCBmcm9tIGVhY2ggb3RoZXIsIEkgbW9kaWZ5IHR5cGUgb2YgdGhlbS4K
LQotICAgICAgICBSZXZpZXdlZCBieSBBZGFtIFJvYmVuLgotCi0gICAgICAgICogZXdrL2V3a190
aWxlZF9iYWNraW5nX3N0b3JlLmM6Ci0gICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVf
aXRlbV9maWxsKToKLSAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9pdGVtX2FkZCk6
Ci0KLTIwMTEtMDgtMTggIFJ5dWFuIENob2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgotCi0g
ICAgICAgIFtFRkxdIEJyb2tlbiByZW5kZXJpbmcgb2NjdXJlZCB3aGVuIHJlc2l6ZWQgaW4gZXdr
X3ZpZXdfc2luZ2xlLgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NjYyNzEKLQotICAgICAgICBGb3JjZSByZW5kZXJpbmcgd2hlbiBld2tfdmlldyByZXNp
emVkLgotICAgICAgICBJdCdzIGJlY2F1c2UgRXZhc19PYmplY3QgZG9lc24ndCBnZW5lcmF0ZSBh
bnkgcmVuZGVyaW5nIHJlcXVlc3QgYWx0aG91Z2gKLSAgICAgICAgaXQgd2FzIGNoYW5nZWQuCi0K
LSAgICAgICAgUmV2aWV3ZWQgYnkgVG9ueSBDaGFuZy4KLQotICAgICAgICAqIGV3ay9ld2tfdmll
dy5jcHA6Ci0gICAgICAgIChfZXdrX3ZpZXdfc21hcnRfY2FsY3VsYXRlKToKLQotMjAxMS0wOC0x
NyAgQWRhbSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5jb20+Ci0KLSAgICAgICAgTWFrZSBXZWJDb3Jl
IGtlZXAgdHJhY2sgb2YgdGhlIGN1cnJlbnQgZGV2aWNlIHNjYWxlIGZhY3RvcgotCi0gICAgICAg
IEZpeGVzIDxodHRwOi8vd2Via2l0Lm9yZy9iLzY2NDEzPiBXZWJDb3JlIHJlcXVpcmVzIGV2ZXJ5
IFdlYktpdCBwb3J0IHRvIGtlZXAgdHJhY2sgb2YgdGhlCi0gICAgICAgIGRldmljZSBzY2FsZSBm
YWN0b3IKLQotICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KLQotICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHA6Ci0gICAgICAgICogV2ViQ29yZVN1cHBv
cnQvQ2hyb21lQ2xpZW50RWZsLmg6Ci0gICAgICAgIFJlbW92ZWQgZGV2aWNlU2NhbGVGYWN0b3Iu
Ci0KLTIwMTEtMDgtMTUgIERtaXRyeSBUaXRvdiAgPGRpbWljaEBjaHJvbWl1bS5vcmc+Ci0KLSAg
ICAgICAgRnJhbWVMb2FkZXJDbGllbnQ6OnRyYW5zZmVyTG9hZGluZ1Jlc291cmNlRnJvbVBhZ2Ug
ZG9lcyBub3QgaGF2ZSBlbm91Z2ggcGFyYW1ldGVycwotICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjYxNjUKLQotICAgICAgICBSZXZpZXdlZCBieSBEYXJp
biBGaXNoZXIuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVm
bC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6dHJhbnNmZXJM
b2FkaW5nUmVzb3VyY2VGcm9tUGFnZSk6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRFZmwuaDoKLQotMjAxMS0wOC0xMCAgQWRhbSBSb2JlbiAgPGFyb2JlbkBhcHBs
ZS5jb20+Ci0KLSAgICAgICAgQ2xlYXIgdXAgc2NhbGUgZmFjdG9yIHRlcm1pbm9sb2d5Ci0KLSAg
ICAgICAgV2ViS2l0IGJ5IGFuZCBsYXJnZSBkZWFscyB3aXRoIHR3byBzY2FsZSBmYWN0b3JzOiBv
bmUgaW50cmluc2ljIHRvIHRoZSBkZXZpY2Ugb24gd2hpY2ggdGhlCi0gICAgICAgIHNvZnR3YXJl
IGlzIHJ1bm5pbmcsIGFuZCBvbmUgdGhhdCBpcyBwZXItUGFnZSBhbmQgY2FuIGJlIGNvbnRyb2xs
ZWQgdmlhIEFQSSBjYWxscy4gVGhpcwotICAgICAgICBwYXRjaCBuYW1lcyB0aGUgZm9ybWVyICJk
ZXZpY2VTY2FsZUZhY3RvciIgYW5kIHRoZSBsYXR0ZXIgInBhZ2VTY2FsZUZhY3RvciIsIGFuZCBt
YWtlcyB0aGUKLSAgICAgICAgY29kZSB1c2UgdGhvc2UgbmFtZXMuIEl0IHNob3VsZCBpbnRyb2R1
Y2Ugbm8gYmVoYXZpb3IgY2hhbmdlcy4KLQotICAgICAgICBGaXhlcyA8aHR0cDovL3dlYmtpdC5v
cmcvYi81NTc4Nz4gV2ViS2l0IHVzZXMgbXVsdGlwbGUgY29uZmxpY3RpbmcgbmFtZXMgdG8gcmVm
ZXIgdG8gdGhlCi0gICAgICAgIGRldmljZSBzY2FsZSBmYWN0b3IKLQotICAgICAgICBSZXZpZXdl
ZCBieSBTaW1vbiBGcmFzZXIuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGll
bnRFZmwuY3BwOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oOgot
Ci0yMDExLTA4LTEyICBHcnplZ29yeiBDemFqa293c2tpICA8Zy5jemFqa293c2tpQHNhbXN1bmcu
Y29tPgotCi0gICAgICAgIFtFRkxdIEZpeCBhZnRlciByOTE4MTUgLSByZXN0b3JlIGNoYW5nZXMg
ZnJvbSByOTE2NTkuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02NDY4MgotCi0gICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFu
c2VuLgotCi0gICAgICAgIFJlc3RvcmUgcGF0Y2ggZm9yIGZpeCBld2tfdmlld19jb250ZXh0X21l
bnVfZm9yd2FyZF9ldmVudCB3aGljaAotICAgICAgICBoYXMgYmVlbiBvdmVyd3JpdGl0ZW4gYnkg
bWlzdGFrZS4KLQotICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChld2tfdmll
d19jb250ZXh0X21lbnVfZm9yd2FyZF9ldmVudCk6Ci0KLTIwMTEtMDgtMTIgIEdyemVnb3J6IEN6
YWprb3dza2kgIDxnLmN6YWprb3dza2lAc2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW0VGTF0gSFRN
TCBTYXZpbmcgZmVhdHVyZS4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTU1NDU1Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21lcy4KLQot
ICAgICAgICBHZXRzIHRoZSBzb3VyY2UgYW5kIGxvY2F0aW9uIG9mIHJlc291cmNlcyBmb3IgZG9j
dW1lbnQuCi0gICAgICAgIFRPRE86Ci0gICAgICAgIDEuIFN1cHBvcnQgb3RoZXJzIHJlc291cmNl
cyAoY3NzLCBwbHVnaW5zLCBtZWRpYSBmaWxlcykuCi0gICAgICAgIDIuIEN1cnJlbnRseSBvbmx5
IEhUTUwgZG9jdW1lbnRzIGFyZSBzdXBwb3J0ZWQuCi0KLSAgICAgICAgKiBld2svZXdrX2ZyYW1l
LmNwcDoKLSAgICAgICAgKGV3a19mcmFtZV9zb3VyY2VfZ2V0KToKLSAgICAgICAgKGV3a19mcmFt
ZV9yZXNvdXJjZXNfbG9jYXRpb25fZ2V0KToKLSAgICAgICAgKiBld2svZXdrX2ZyYW1lLmg6Ci0K
LTIwMTEtMDgtMTAgIEdyemVnb3J6IEN6YWprb3dza2kgIDxnLmN6YWprb3dza2lAc2Ftc3VuZy5j
b20+Ci0KLSAgICAgICAgW0VGTF0gUmV0dXJuIGZyb20gX2V3a192aWV3X3NtYXJ0X2FkZCBpZiBz
bWFydCBkYXRhIGNhbiBub3QgYmUgYWxsb2NhdGVkCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTg1MwotCi0gICAgICAgIFJldmlld2VkIGJ5IEtlbm5l
dGggUm9oZGUgQ2hyaXN0aWFuc2VuLgotCi0gICAgICAgIEl0IHByZXZlbnRzIHRoZSBjcmFzaCB3
aGlsZSBhbGxvY2F0aW5nIGEgbWVtb3J5IGZvciB2aWV3J3Mgc21hcnQgZGF0YS4KLSAgICAgICAg
T3RoZXJzIGNoZWNraW5nIGFyZSBuZWVkZWQgZm9yIHN1cHBvcnQgc2luZ2xlIGFuZCB0aWxlZCBi
YWNraW5nIHN0b3JlLgotICAgICAgICBBcyBhIHJlc3VsdCBhbiBlbXB0eSB3aW5kb3cgd2lsbCBi
ZSBkaXNwbGF5ZWQuCi0KLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoX2V3
a192aWV3X3NtYXJ0X2FkZCk6Ci0gICAgICAgIChfZXdrX3ZpZXdfc21hcnRfcmVzaXplKToKLSAg
ICAgICAgKF9ld2tfdmlld19zbWFydF9tb3ZlKToKLSAgICAgICAgKF9ld2tfdmlld19zbWFydF9z
aG93KToKLSAgICAgICAgKF9ld2tfdmlld19zbWFydF9oaWRlKToKLSAgICAgICAgKiBld2svZXdr
X3ZpZXdfc2luZ2xlLmM6Ci0gICAgICAgIChfZXdrX3ZpZXdfc2luZ2xlX3NtYXJ0X2FkZCk6Ci0g
ICAgICAgIChfZXdrX3ZpZXdfc2luZ2xlX3NtYXJ0X3Jlc2l6ZSk6Ci0gICAgICAgICogZXdrL2V3
a192aWV3X3RpbGVkLmM6Ci0gICAgICAgIChfZXdrX3ZpZXdfdGlsZWRfc21hcnRfYWRkKToKLQot
MjAxMS0wOC0xMCAgR3J6ZWdvcnogQ3phamtvd3NraSAgPGcuY3phamtvd3NraUBzYW1zdW5nLmNv
bT4KLQotICAgICAgICBbRUZMXSBBUEkgbWV0aG9kcyBjaGVjayBOVUxMIGFuZCByZXR1cm4gcHJv
cGVyIHZhbHVlLgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NjU4NDQKLQotICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNl
bi4KLQotICAgICAgICBDaGVjayBOVUxMIGJlZm9yZSBhY2Nlc3MgdG8gdGhlIHNtYXJ0IGFuZCBw
cml2YXRlIGRhdGEgb2YgdGhlIHZpZXcgb2JqZWN0Ci0gICAgICAgIGFuZCByZXR1cm4gdGhlIHBy
b3BlciB2YWx1ZSBpZiBlcnJvciBvY2N1cnJlZC4KLQotICAgICAgICAqIGV3ay9ld2tfdmlldy5j
cHA6Ci0gICAgICAgIChld2tfdmlld196b29tX3JhbmdlX3NldCk6Ci0gICAgICAgIChld2tfdmll
d196b29tX3JhbmdlX21pbl9nZXQpOgotICAgICAgICAoZXdrX3ZpZXdfem9vbV9yYW5nZV9tYXhf
Z2V0KToKLSAgICAgICAgKGV3a192aWV3X3VzZXJfc2NhbGFibGVfc2V0KToKLSAgICAgICAgKGV3
a192aWV3X3VzZXJfc2NhbGFibGVfZ2V0KToKLSAgICAgICAgKGV3a192aWV3X2RldmljZV9waXhl
bF9yYXRpb19nZXQpOgotICAgICAgICAqIGV3ay9ld2tfdmlldy5oOgotCi0yMDExLTA4LTEwICBL
d2FuZ0h5dWsgS2ltICA8aHl1a2kua2ltQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxdIFJl
bW92ZSB1bnVzZWQgbG9jYWwgdmFyaWFibGUgZnJvbSBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVf
aXRlbV9wcm9jZXNzX2lkbGVyX2NiLgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NjU4NDYKLQotICAgICAgICBBcyBFd2tfVGlsZWRfQmFja2luZ19TdG9y
ZV9JdGVtICppdCBpcyBkZWNsYXJlZCBhcyBsb2NhbCB2YXJpYWJsZSwgYnV0IGl0J3MgbmV2ZXIg
cmVmZXJlbmNlZCBhbnl3aGVyZSwKLSAgICAgICAgaXQgaXMgYmV0dGVyIHRvIGJlIHJlbW92ZWQg
ZnJvbSBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfaXRlbV9wcm9jZXNzX2lkbGVyX2NiLgotCi0g
ICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgotCi0gICAgICAg
ICogZXdrL2V3a190aWxlZF9iYWNraW5nX3N0b3JlLmM6Ci0gICAgICAgIChfZXdrX3RpbGVkX2Jh
Y2tpbmdfc3RvcmVfaXRlbV9wcm9jZXNzX2lkbGVyX2NiKToKLQotMjAxMS0wOC0wOSAgR3l1eW91
bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxdIFNvcnQg
c2lnbmFsIGNvbW1lbnRzIGJ5IGFscGhhYmV0aWNhbCBvcmRlci4KLSAgICAgICAgaHR0cDovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjU1MjAKLQotICAgICAgICBSZXZpZXdlZCBi
eSBLZW50IFRhbXVyYS4KLQotICAgICAgICBTaWduYWxzIGNhdXNlZCBieSBld2sgc3RpbGwgYXJl
IGxpc3RlZCB3aXRob3V0IGFueSBzcGVjaWZpYyBydWxlLgotICAgICAgICBJdCBzdXJlIGlzbid0
IGEgbmljZSB0aGluZyB0byB1bmRlcnN0YW5kIHRoZSBzaWduYWwgbGlzdC4gU28sIHRoaXMgcGF0
Y2gKLSAgICAgICAgbGlzdHMgc2lnbmFscyBieSBhbHBoYWJldGljYWwgb3JkZXIuCi0KLSAgICAg
ICAgKiBld2svZXdrX2NvbnRleHRtZW51Lmg6Ci0gICAgICAgICogZXdrL2V3a19mcmFtZS5oOgot
ICAgICAgICAqIGV3ay9ld2tfdmlldy5oOgotCi0yMDExLTA4LTA5ICBLd2FuZ0h5dWsgS2ltICA8
aHl1a2kua2ltQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxdIEZpeCB3YXJuaW5nIGNhdXNl
ZCBieSB1bmRlZmluZWQgc3RhdGljIGFwaS4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTY1MzAxCi0KLSAgICAgICAgQm90aCBfZXdrX3RpbGVkX2JhY2tp
bmdfc3RvcmVfaXRlbV9yZXF1ZXN0X2FkZCBhbmQgX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX2l0
ZW1fcmVxdWVzdF9kZWwKLSAgICAgICAgYXJlIGRlY2xhcmVkLCBidXQgdGhlaXIgYm9kaWVzIGFy
ZSBub3QgZGVmaW5lZCBhbmQgdGhleSBhcmUgbm90IHJlZmVyZW5jZWQgYW55d2hlcmUuCi0gICAg
ICAgIFRoZXJlZm9yZSwgSSByZW1vdmUgYm90aCB0d28gQVBJJ3MgZGVjbGFyYXRpb24gaW4gb3Jk
ZXIgdG8gcmVzb2x2ZSB3YXJuaW5nIG1lc3NhZ2UgY2F1c2VkIGJ5IHRoZW0uCi0KLSAgICAgICAg
UmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCi0KLSAgICAgICAgKiBld2sv
ZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUuYzoKLQotMjAxMS0wOC0wNSAgR3J6ZWdvcnogQ3phamtv
d3NraSAgPGcuY3phamtvd3NraUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBbRUZMXSBNb3ZlIEFQ
SSBkb2N1bWVudGF0aW9uIG9mIGV3ayBmaWxlcyB0byB0aGUgaGVhZGVycwotICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjUzNzMKLQotICAgICAgICBUaGVy
ZSBhcmUgdHdvIGFyZ3VtZW50cyBmb3IgdGhpczoKLSAgICAgICAgMS4gRGV2ZWxvcGVycyB1c2lu
ZyB3ZWJraXQtZWZsIGZyb20gcGFja2FnZXMgcHJvYmFibHkgd29uJ3QgaGF2ZSB0aGUgQy9DUFAg
ZmlsZXMgd2l0aCB0aGVtCi0gICAgICAgICAgIGFuZCB0aGUgZG94eWdlbiBkb2N1bWVudGF0aW9u
IGNhbiBiZSBnZW5lcmF0ZWQgZnJvbSB0aGUgaGVhZGVycyB3aXRob3V0IHRoZSBuZWVkCi0gICAg
ICAgICAgIGZvciB0aGUgd2hvbGUgc291cmNlIGZpbGVzLgotICAgICAgICAyLiBJdCB3aWxsIGJl
IGNvbnNpc3RlbnQgd2l0aCBzdHJ1Y3R1cmVzIGRlc2NyaXB0aW9ucy4KLQotICAgICAgICBSZXZp
ZXdlZCBieSBLZW50IFRhbXVyYS4KLQotICAgICAgICAqIGV3ay9ld2tfYXV0aC5jcHA6Ci0gICAg
ICAgICogZXdrL2V3a19hdXRoLmg6Ci0gICAgICAgICogZXdrL2V3a19jb250ZXh0bWVudS5jcHA6
Ci0gICAgICAgICogZXdrL2V3a19jb250ZXh0bWVudS5oOgotICAgICAgICAqIGV3ay9ld2tfY29v
a2llcy5jcHA6Ci0gICAgICAgICogZXdrL2V3a19jb29raWVzLmg6Ci0gICAgICAgICogZXdrL2V3
a19mcmFtZS5jcHA6Ci0gICAgICAgICogZXdrL2V3a19mcmFtZS5oOgotICAgICAgICAqIGV3ay9l
d2tfaGlzdG9yeS5jcHA6Ci0gICAgICAgICogZXdrL2V3a19oaXN0b3J5Lmg6Ci0gICAgICAgICog
ZXdrL2V3a19tYWluLmNwcDoKLSAgICAgICAgKiBld2svZXdrX21haW4uaDoKLSAgICAgICAgKiBl
d2svZXdrX25ldHdvcmsuY3BwOgotICAgICAgICAqIGV3ay9ld2tfbmV0d29yay5oOgotICAgICAg
ICAqIGV3ay9ld2tfc2V0dGluZ3MuY3BwOgotICAgICAgICAqIGV3ay9ld2tfc2V0dGluZ3MuaDoK
LSAgICAgICAgKiBld2svZXdrX3dpbmRvd19mZWF0dXJlcy5jcHA6Ci0gICAgICAgICogZXdrL2V3
a193aW5kb3dfZmVhdHVyZXMuaDoKLQotMjAxMS0wOC0wMyAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxk
bWFuQGNocm9taXVtLm9yZz4KLQotICAgICAgICBXZWIgSW5zcGVjdG9yOiByZW1vdmUgTm9kZSBw
YXJhbWV0ZXIgZnJvbSB0aGUgSW5zcGVjdG9yQ2xpZW50OjpoaWdobGlnaHQKLSAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1NTQ5Ci0KLSAgICAgICAgUmV2
aWV3ZWQgYnkgWXVyeSBTZW1pa2hhdHNreS4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0lu
c3BlY3RvckNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnRF
Zmw6OmhpZ2hsaWdodCk6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50
RWZsLmg6Ci0KLTIwMTEtMDgtMDIgIFJhcGhhZWwgS3VibyBkYSBDb3N0YSAgPGt1Ym9AcHJvZnVz
aW9uLm1vYmk+Ci0KLSAgICAgICAgW0VGTF0gSWdub3JlIGVtcHR5IHJlcXVlc3RzIG9uIHBvbGlj
eSBkZWNpc2lvbnMuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02NDUzNgotCi0gICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFu
c2VuLgotCi0gICAgICAgIFRoaXMgaXMgdGhlIHNhbWUgZml4IGludHJvZHVjZWQgaW4gdGhlIEdU
SysgcG9ydCBpbiByNDEzMTM6IGVtcHR5Ci0gICAgICAgIHJlcXVlc3Qgc2hvdWxkIGJlIGlnbm9y
ZWQsIHNvIHRlc3RzIHN1Y2ggYXMKLSAgICAgICAgZmFzdC9sb2FkZXIvZW1wdHktZW1iZWQtc3Jj
LWF0dHJpYnV0ZS5odG1sIGRvIG5vdCBjcmFzaC4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVy
Q2xpZW50RWZsOjpkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlKToKLSAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dp
bmRvd0FjdGlvbik6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlz
cGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToKLQotMjAxMS0wOC0wMiAgRXVu
c29sIFBhcmsgIDxldW5zb2w0Ny5wYXJrQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxdIFJl
bW92ZSBvdmVybGFwcGluZyByZWN1cnNpdmUgbGF5b3V0IGZ1bmN0aW9uIAotICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjMyNDEgCi0KLSAgICAgICAgRmly
c3QsIF9ld2tfdmlld19sYXlvdXRfaWZfbmVlZGVkX3JlY3Vyc2l2ZSBpcyBjYWxsZWQgdHdpY2Ug
aW4gX2V3a192aWV3X3NtYXJ0X2NhbGN1bGF0ZSAKLSAgICAgICAgYW5kIF9ld2tfdmlld190aWxl
ZF91cGRhdGVzX3Byb2Nlc3NfcHJlLHNvIGl0IGlzIG5vIHByb2JsZW0gcmVtb3Zpbmcgb25lIG9m
IHRoZW0uCi0gICAgICAgIFNlY29uZCwgSW4gdGlsZWQgYmFja2luZ3N0b3JlIGNvbmZpZ3VyYXRp
b24sIF9ld2tfdmlld19sYXlvdXRfaWZfbmVlZGVkX3JlY3Vyc2l2ZSBjYWxsZWQgCi0gICAgICAg
IGluIF9ld2tfdmlld19zbWFydF9jYWxjdWxhdGUgd2lsbCByZXN1bHQgaW4gZ2VuZXJhdGluZyBy
ZXBhaW50cyBmb3IgZGlydHkgYXJlYXMgCi0gICAgICAgIGxvY2F0ZWQgb3V0c2lkZSBvZiB2aWV3
cG9ydCBzaW5jZSBtX3BhaW50RW50aXJlQ29udGVudHMgaXMgc2V0LgotICAgICAgICBCdXQsIHRo
ZSBhcmVhcyB3aWxsIG5vdCBiZSBhY3R1YWxseSBwYWludGVkLiBUaHVzLCB0aGUgbGF5b3V0IGlz
IHVubmVjZXNzYXJ5IGV4Y2VwdAotICAgICAgICB3aGVuIHRoZXJlIGlzIHNvbWV0aGluZyB0byBw
YWludCBpbnNpZGUgb2Ygdmlld3BvcnQsIHdoaWNoIHdpbGwgY29uc3VtZSBDUFUgdW5uZWNlc3Nh
cmlseS4KLSAgICAgICAgU28sdGhlIGxheW91dCBmdW5jIHdhcyByZW1vdmVkIGZyb20gX2V3a192
aWV3X3NtYXJ0X2NhbGN1bGF0ZSAKLSAgICAgICAgYW5kIGFkZGVkIHRvIF9ld2tfdmlld19zaW5n
bGVfc21hcnRfcmVwYWludHNfcHJvY2VzcyBmb3Igc2luZ2xlIGJhY2tpbmdzdG9yZS4KLQotICAg
ICAgICBSZXZpZXdlZCBieSBBbnRvbmlvIEdvbWVzLgotCi0gICAgICAgICogZXdrL2V3a192aWV3
LmNwcDoKLSAgICAgICAgKF9ld2tfdmlld19zbWFydF9jYWxjdWxhdGUpOgotICAgICAgICAqIGV3
ay9ld2tfdmlld19zaW5nbGUuYzoKLSAgICAgICAgKF9ld2tfdmlld19zaW5nbGVfc21hcnRfcmVw
YWludHNfcHJvY2Vzcyk6Ci0KLTIwMTEtMDgtMDIgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtp
bUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBbRUZMXSBBZGQgZnVsbHNjcmVlbiBidXR0b24gdG8g
bWVkaWEgY29udHJvbCBVSS4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTY0NDI4Ci0KLSAgICAgICAgSW1wbGVtZW50IGZ1bmN0aW9ucyBmb3IgZnVsbCBz
Y3JlZW4gaW4gQ2hyb21lQ2xpZW50RWZsIGluIG9yZGVyIHRvIGRpc3BsYXkgYSBmdWxsIHNjcmVl
biBidXR0b24gb24gbWVkaWEgY29udHJvbCBVSS4KLSAgICAgICAgV2hlbiBmdWxsIHNjcmVlbiBt
b2RlIGlzIGFjdGl2YXRlZCBieSBwcmVzc2luZyB0aGUgYnV0dG9uLCB0aGUgZnVuY3Rpb25zIGFy
ZSBjYWxsZWQgYnkgRG9jdW1lbnQuIFNvLCBpZiB0aGVyZSBpcyBubyBpbXBsZW1lbnRlZAotICAg
ICAgICBmdW5jdGlvbiwgZnVsbCBzY3JlZW4gYnV0dG9uIHdpbGwgbm90IGJlIHNob3duLgotICAg
ICAgICBJbiBhZGRpdGlvbiwgYSAuZWRjIGZpbGUgYW5kIGFuIGltYWdlIGZpbGUgYXJlIGFkZGVk
IGZvciBmdWxsIHNjcmVlbiBidXR0b24uCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBH
b21lcy4KLQotICAgICAgICAqIERlZmF1bHRUaGVtZS9kZWZhdWx0LmVkYzoKLSAgICAgICAgKiBE
ZWZhdWx0VGhlbWUvd2lkZ2V0L21lZGlhY29udHJvbC9mdWxsc2NyZWVuYnV0dG9uL2Z1bGxzY3Jl
ZW5fYnV0dG9uLmVkYzogQWRkZWQuCi0gICAgICAgICogRGVmYXVsdFRoZW1lL3dpZGdldC9tZWRp
YWNvbnRyb2wvZnVsbHNjcmVlbmJ1dHRvbi9mdWxsc2NyZWVuYnV0dG9uLnBuZzogQWRkZWQuCi0g
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdl
YkNvcmU6OkNocm9tZUNsaWVudEVmbDo6c3VwcG9ydHNGdWxsU2NyZWVuRm9yRWxlbWVudCk6Ci0g
ICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRFZmw6OmVudGVyRnVsbFNjcmVlbkZvckVsZW1l
bnQpOgotICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZsOjpleGl0RnVsbFNjcmVlbkZv
ckVsZW1lbnQpOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oOgot
Ci0yMDExLTA3LTI5ICBNaWNoYWwgUGFrdWxhIHZlbCBSdXRrYSAgPG0ucGFrdWxhQHNhbXN1bmcu
Y29tPgotCi0gICAgICAgIFtFRkxdIEltcGxlbWVudCBFZGl0b3JDbGllbnRFZmw6OnJlc3BvbmRU
b0NoYW5nZWRDb250ZW50cwotICAgICAgICBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD02NDI1OQotCi0gICAgICAgIEltcGxlbWVudHMgcmVzcG9uZFRvQ2hhbmdlZENvbnRl
bnRzIGJ5IGNhbGxpbmcgY2FsbGJhY2sgYm90aCBmcm9tCi0gICAgICAgIGV3a19mcmFtZSBhbmQg
ZXdrX3ZpZXcgd2l0aCBmcmFtZSBhbmQgdmlldyBvYmplY3RzIHJlc3BlY3RpdmVseS4KLQotICAg
ICAgICBSZXZpZXdlZCBieSBBbnRvbmlvIEdvbWVzLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBv
cnQvRWRpdG9yQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEVm
bDo6cmVzcG9uZFRvQ2hhbmdlZENvbnRlbnRzKToKLSAgICAgICAgKiBld2svZXdrX2ZyYW1lLmNw
cDoKLSAgICAgICAgKGV3a19mcmFtZV9lZGl0b3JfY2xpZW50X2NvbnRlbnRzX2NoYW5nZWQpOgot
ICAgICAgICAqIGV3ay9ld2tfZnJhbWUuaDoKLSAgICAgICAgKiBld2svZXdrX3ByaXZhdGUuaDoK
LSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoZXdrX3ZpZXdfZWRpdG9yX2Ns
aWVudF9jb250ZW50c19jaGFuZ2VkKToKLSAgICAgICAgKiBld2svZXdrX3ZpZXcuaDoKLQotMjAx
MS0wNy0yOSAgR3J6ZWdvcnogQ3phamtvd3NraSAgPGcuY3phamtvd3NraUBzYW1zdW5nLmNvbT4K
LQotICAgICAgICBbRUZMXSBNb3ZlIGV3a192aWV3IEFQSSBkb2N1bWVudGF0aW9uIHRvIHRoZSBo
ZWFkZXIgZmlsZQotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NjUzMDUKLQotICAgICAgICBUaGVyZSBhcmUgdHdvIGFyZ3VtZW50cyBmb3IgdGhpczoKLSAg
ICAgICAgMS4gRGV2ZWxvcGVycyB1c2luZyB3ZWJraXQtZWZsIGZyb20gcGFja2FnZXMgcHJvYmFi
bHkgd29uJ3QgaGF2ZSB0aGUgQy9DUFAgZmlsZXMgd2l0aCB0aGVtCi0gICAgICAgICAgIGFuZCB0
aGUgZG94eWdlbiBkb2N1bWVudGF0aW9uIGNhbiBiZSBnZW5lcmF0ZWQgZnJvbSB0aGUgaGVhZGVy
cyB3aXRob3V0IHRoZSBuZWVkCi0gICAgICAgICAgIGZvciB0aGUgd2hvbGUgc291cmNlIGZpbGVz
LgotICAgICAgICAyLiBJdCB3aWxsIGJlIGNvbnNpc3RlbnQgd2l0aCBzdHJ1Y3R1cmVzIGRlc2Ny
aXB0aW9ucy4KLQotICAgICAgICBSZXZpZXdlZCBieSBLZW50IFRhbXVyYS4KLQotICAgICAgICAq
IGV3ay9ld2tfdGlsZWRfbW9kZWwuYzoKLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAg
ICAgICAqIGV3ay9ld2tfdmlldy5oOgotICAgICAgICAqIGV3ay9ld2tfdmlld19zaW5nbGUuYzoK
LSAgICAgICAgKiBld2svZXdrX3ZpZXdfdGlsZWQuYzoKLQotMjAxMS0wNy0yOCAgS2FuZ2lsIEhh
biAgPGthbmdpbC5oYW5Ac2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW0VGTF0gUmVtb3ZlcyBFQVBJ
IGF0dHJpYnV0ZSBpbiBpbnRlcm5hbCBoZWFkZXJzLgotICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjUyNTEKLQotICAgICAgICBSZW1vdmVzIEVBUEkgYXR0
cmlidXRlIGluIHRocmVlIGhlYWRlciBmaWxlcyBiZWNhdXNlIEFQSSBpbiB0aGVzZSBmaWxlcyBp
cyBpbnRlcm5hbGx5IHVzZWQuCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJzIENhcmxzc29u
LgotCi0gICAgICAgICogZXdrL2V3a190aWxlZF9iYWNraW5nX3N0b3JlLmg6Ci0gICAgICAgICog
ZXdrL2V3a190aWxlZF9tYXRyaXguaDoKLSAgICAgICAgKiBld2svZXdrX3RpbGVkX21vZGVsLmg6
Ci0KLTIwMTEtMDctMjggIEthbmdpbCBIYW4gIDxrYW5naWwuaGFuQHNhbXN1bmcuY29tPgotCi0g
ICAgICAgIFtFRkxdIERlZmluZXMgaGVhZGVyIGZpbGVzIHdpbGwgYmUgcHVibGljbHkgaW5zdGFs
bGVkIGV4cGxpY2l0bHkuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD02NDkyMwotCi0gICAgICAgIFRoaXMgcGF0Y2ggbW9kaWZpZXMgYSB3YXkgdG8gZGVm
aW5lIG9wZW4gaGVhZGVyIGxpc3QgZnJvbSBibGFjay1saXN0IHRvIHdoaXRlLWxpc3QuCi0gICAg
ICAgIFBsdXMsICdld2svZXdrX3V0aWwuaCcgd2lsbCBub3QgYmUgaW5zdGFsbGVkIGFueW1vcmUg
YmVjYXVzZSBpdCBvbmx5IGhhcyBpbnRlcm5hbCBBUEkuCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkg
QW5kZXJzIENhcmxzc29uLgotCi0gICAgICAgICogQ01ha2VMaXN0c0VmbC50eHQ6Ci0KLTIwMTEt
MDctMjggIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KLQotICAgICAg
ICBbRUZMXSBGaXggY29kaW5nIHN0eWxlIG9mIHBvaW50ZXIgdHlwZSBpbiBld2sgZmlsZXMuCi0g
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTM1OAotCi0g
ICAgICAgIE1vdmUgJyonIG9wZXJhdG9yIHRvIHZhcmlhYmxlIHNpZGUgYWNjb3JkaW5nIHRvIGVm
bCBjb2Rpbmcgc3R5bGUuCi0gICAgICAgIEJlY2F1c2UsICcqJyBvcGVyYXRvciBpcyBuZXh0IHRv
IHZhcmlhYmxlIGluIEVGTCBjb2Rpbmcgc3R5bGUuCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgS2Vu
dCBUYW11cmEuCi0KLSAgICAgICAgKiBld2svZXdrX2F1dGguY3BwOgotICAgICAgICAoZXdrX2F1
dGhfY3JlZGVudGlhbHNfc2V0KToKLSAgICAgICAgKiBld2svZXdrX2F1dGguaDoKLSAgICAgICAg
KiBld2svZXdrX2F1dGhfc291cC5jcHA6Ci0gICAgICAgIChfRXdrX0F1dGhfRGF0YTo6ZXdrX2F1
dGhfc291cF9kaWFsb2dfY2xhc3NfaW5pdCk6Ci0gICAgICAgIChfRXdrX0F1dGhfRGF0YTo6ZXdr
X2F1dGhfc291cF9kaWFsb2dfaW5pdCk6Ci0gICAgICAgIChfRXdrX0F1dGhfRGF0YTo6ZXdrX2F1
dGhfc291cF9jcmVkZW50aWFsc19zZXQpOgotICAgICAgICAoX0V3a19BdXRoX0RhdGE6OnNlc3Np
b25fYXV0aGVudGljYXRlKToKLSAgICAgICAgKF9Fd2tfQXV0aF9EYXRhOjpmcmVlX2F1dGhfZGF0
YSk6Ci0gICAgICAgIChfRXdrX0F1dGhfRGF0YTo6YXR0YWNoKToKLSAgICAgICAgKF9Fd2tfQXV0
aF9EYXRhOjpkZXRhY2gpOgotICAgICAgICAqIGV3ay9ld2tfYXV0aF9zb3VwLmg6Ci0gICAgICAg
ICogZXdrL2V3a19jb250ZXh0bWVudS5jcHA6Ci0gICAgICAgIChld2tfY29udGV4dF9tZW51X3Jl
Zik6Ci0gICAgICAgIChld2tfY29udGV4dF9tZW51X3VucmVmKToKLSAgICAgICAgKGV3a19jb250
ZXh0X21lbnVfZGVzdHJveSk6Ci0gICAgICAgIChld2tfY29udGV4dF9tZW51X2l0ZW1fbGlzdF9n
ZXQpOgotICAgICAgICAoZXdrX2NvbnRleHRfbWVudV9pdGVtX25ldyk6Ci0gICAgICAgIChld2tf
Y29udGV4dF9tZW51X2l0ZW1fc2VsZWN0KToKLSAgICAgICAgKGV3a19jb250ZXh0X21lbnVfaXRl
bV9mcmVlKToKLSAgICAgICAgKGV3a19jb250ZXh0X21lbnVfaXRlbV90eXBlX2dldCk6Ci0gICAg
ICAgIChld2tfY29udGV4dF9tZW51X2l0ZW1fdHlwZV9zZXQpOgotICAgICAgICAoZXdrX2NvbnRl
eHRfbWVudV9pdGVtX2FjdGlvbl9nZXQpOgotICAgICAgICAoZXdrX2NvbnRleHRfbWVudV9pdGVt
X2FjdGlvbl9zZXQpOgotICAgICAgICAoZXdrX2NvbnRleHRfbWVudV9pdGVtX3RpdGxlX2dldCk6
Ci0gICAgICAgIChld2tfY29udGV4dF9tZW51X2l0ZW1fdGl0bGVfc2V0KToKLSAgICAgICAgKGV3
a19jb250ZXh0X21lbnVfaXRlbV9jaGVja2VkX2dldCk6Ci0gICAgICAgIChld2tfY29udGV4dF9t
ZW51X2l0ZW1fY2hlY2tlZF9zZXQpOgotICAgICAgICAoZXdrX2NvbnRleHRfbWVudV9pdGVtX2Vu
YWJsZWRfZ2V0KToKLSAgICAgICAgKGV3a19jb250ZXh0X21lbnVfbmV3KToKLSAgICAgICAgKGV3
a19jb250ZXh0X21lbnVfZnJlZSk6Ci0gICAgICAgIChld2tfY29udGV4dF9tZW51X2l0ZW1fYXBw
ZW5kKToKLSAgICAgICAgKGV3a19jb250ZXh0X21lbnVfY3VzdG9tX2dldCk6Ci0gICAgICAgIChl
d2tfY29udGV4dF9tZW51X3Nob3cpOgotICAgICAgICAqIGV3ay9ld2tfY29udGV4dG1lbnUuaDoK
LSAgICAgICAgKiBld2svZXdrX2Nvb2tpZXMuY3BwOgotICAgICAgICAoZXdrX2Nvb2tpZXNfZmls
ZV9zZXQpOgotICAgICAgICAoZXdrX2Nvb2tpZXNfY2xlYXIpOgotICAgICAgICAoZXdrX2Nvb2tp
ZXNfZ2V0X2FsbCk6Ci0gICAgICAgIChld2tfY29va2llc19jb29raWVfZGVsKToKLSAgICAgICAg
KGV3a19jb29raWVzX3BvbGljeV9zZXQpOgotICAgICAgICAoZXdrX2Nvb2tpZXNfcG9saWN5X2dl
dCk6Ci0gICAgICAgICogZXdrL2V3a19oaXN0b3J5LmNwcDoKLSAgICAgICAgKF9ld2tfaGlzdG9y
eV9pdGVtX25ldyk6Ci0gICAgICAgIChfZXdrX2hpc3RvcnlfaXRlbV9saXN0X2dldCk6Ci0gICAg
ICAgIChld2tfaGlzdG9yeV9mb3J3YXJkKToKLSAgICAgICAgKGV3a19oaXN0b3J5X2JhY2spOgot
ICAgICAgICAoZXdrX2hpc3RvcnlfaGlzdG9yeV9pdGVtX2FkZCk6Ci0gICAgICAgIChld2tfaGlz
dG9yeV9oaXN0b3J5X2l0ZW1fc2V0KToKLSAgICAgICAgKGV3a19oaXN0b3J5X2hpc3RvcnlfaXRl
bV9iYWNrX2dldCk6Ci0gICAgICAgIChld2tfaGlzdG9yeV9oaXN0b3J5X2l0ZW1fY3VycmVudF9n
ZXQpOgotICAgICAgICAoZXdrX2hpc3RvcnlfaGlzdG9yeV9pdGVtX2ZvcndhcmRfZ2V0KToKLSAg
ICAgICAgKGV3a19oaXN0b3J5X2hpc3RvcnlfaXRlbV9udGhfZ2V0KToKLSAgICAgICAgKGV3a19o
aXN0b3J5X2hpc3RvcnlfaXRlbV9jb250YWlucyk6Ci0gICAgICAgIChld2tfaGlzdG9yeV9mb3J3
YXJkX2xpc3RfZ2V0KToKLSAgICAgICAgKGV3a19oaXN0b3J5X2ZvcndhcmRfbGlzdF9nZXRfd2l0
aF9saW1pdCk6Ci0gICAgICAgIChld2tfaGlzdG9yeV9mb3J3YXJkX2xpc3RfbGVuZ3RoKToKLSAg
ICAgICAgKGV3a19oaXN0b3J5X2JhY2tfbGlzdF9nZXQpOgotICAgICAgICAoZXdrX2hpc3Rvcnlf
YmFja19saXN0X2dldF93aXRoX2xpbWl0KToKLSAgICAgICAgKGV3a19oaXN0b3J5X2JhY2tfbGlz
dF9sZW5ndGgpOgotICAgICAgICAoZXdrX2hpc3RvcnlfbGltaXRfZ2V0KToKLSAgICAgICAgKGV3
a19oaXN0b3J5X2xpbWl0X3NldCk6Ci0gICAgICAgIChld2tfaGlzdG9yeV9pdGVtX25ldyk6Ci0g
ICAgICAgIChfZXdrX2hpc3RvcnlfaXRlbV9mcmVlKToKLSAgICAgICAgKGV3a19oaXN0b3J5X2l0
ZW1fZnJlZSk6Ci0gICAgICAgIChld2tfaGlzdG9yeV9pdGVtX2xpc3RfZnJlZSk6Ci0gICAgICAg
IChld2tfaGlzdG9yeV9pdGVtX3RpdGxlX2dldCk6Ci0gICAgICAgIChld2tfaGlzdG9yeV9pdGVt
X3RpdGxlX2FsdGVybmF0ZV9nZXQpOgotICAgICAgICAoZXdrX2hpc3RvcnlfaXRlbV90aXRsZV9h
bHRlcm5hdGVfc2V0KToKLSAgICAgICAgKGV3a19oaXN0b3J5X2l0ZW1fdXJpX2dldCk6Ci0gICAg
ICAgIChld2tfaGlzdG9yeV9pdGVtX3VyaV9vcmlnaW5hbF9nZXQpOgotICAgICAgICAoZXdrX2hp
c3RvcnlfaXRlbV90aW1lX2xhc3RfdmlzaXRlZF9nZXQpOgotICAgICAgICAoZXdrX2hpc3Rvcnlf
aXRlbV9pY29uX3N1cmZhY2VfZ2V0KToKLSAgICAgICAgKGV3a19oaXN0b3J5X2l0ZW1faWNvbl9v
YmplY3RfYWRkKToKLSAgICAgICAgKGV3a19oaXN0b3J5X2l0ZW1fcGFnZV9jYWNoZV9leGlzdHMp
OgotICAgICAgICAoZXdrX2hpc3RvcnlfaXRlbV92aXNpdF9jb3VudCk6Ci0gICAgICAgIChld2tf
aGlzdG9yeV9pdGVtX3Zpc2l0X2xhc3RfZmFpbGVkKToKLSAgICAgICAgKGV3a19oaXN0b3J5X25l
dyk6Ci0gICAgICAgIChld2tfaGlzdG9yeV9mcmVlKToKLSAgICAgICAgKiBld2svZXdrX21haW4u
Y3BwOgotICAgICAgICAoX2V3a19pbml0X2JvZHkpOgotICAgICAgICAqIGV3ay9ld2tfbmV0d29y
ay5jcHA6Ci0gICAgICAgIChld2tfbmV0d29ya19wcm94eV91cmlfc2V0KToKLSAgICAgICAgKGV3
a19uZXR3b3JrX3Byb3h5X3VyaV9nZXQpOgotICAgICAgICAqIGV3ay9ld2tfbmV0d29yay5oOgot
ICAgICAgICAqIGV3ay9ld2tfcHJpdmF0ZS5oOgotICAgICAgICAqIGV3ay9ld2tfc2V0dGluZ3Mu
Y3BwOgotICAgICAgICAoZXdrX3NldHRpbmdzX2ljb25fZGF0YWJhc2VfcGF0aF9nZXQpOgotICAg
ICAgICAoZXdrX3NldHRpbmdzX2ljb25fZGF0YWJhc2VfaWNvbl9zdXJmYWNlX2dldCk6Ci0gICAg
ICAgIChld2tfc2V0dGluZ3NfaWNvbl9kYXRhYmFzZV9pY29uX29iamVjdF9hZGQpOgotICAgICAg
ICAoZXdrX3NldHRpbmdzX2RlZmF1bHRfdXNlcl9hZ2VudF9nZXQpOgotICAgICAgICAqIGV3ay9l
d2tfdXRpbC5jcHA6Ci0gICAgICAgIChld2tfdXRpbF9pbWFnZV9mcm9tX2NhaXJvX3N1cmZhY2Vf
YWRkKToKLSAgICAgICAgKiBld2svZXdrX3V0aWwuaDoKLSAgICAgICAgKiBld2svZXdrX3dpbmRv
d19mZWF0dXJlcy5jcHA6Ci0gICAgICAgIChld2tfd2luZG93X2ZlYXR1cmVzX3VucmVmKToKLSAg
ICAgICAgKGV3a193aW5kb3dfZmVhdHVyZXNfcmVmKToKLSAgICAgICAgKGV3a193aW5kb3dfZmVh
dHVyZXNfYm9vbF9wcm9wZXJ0eV9nZXQpOgotICAgICAgICAoZXdrX3dpbmRvd19mZWF0dXJlc19p
bnRfcHJvcGVydHlfZ2V0KToKLSAgICAgICAgKGV3a193aW5kb3dfZmVhdHVyZXNfbmV3X2Zyb21f
Y29yZSk6Ci0gICAgICAgICogZXdrL2V3a193aW5kb3dfZmVhdHVyZXMuaDoKLQotMjAxMS0wNy0y
OCAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtF
RkxdIEZpeCBwb2ludGVyIG9wZXJhdG9yIGNvZGluZyBzdHlsZSBpbiBld2tfZnJhbWUuCi0gICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTM1NwotCi0gICAg
ICAgIE1vdmUgJyonIG9wZXJhdG9yIHRvIHZhcmlhYmxlIGFjY29yZGluZyB0byBlZmwgY29kaW5n
IHN0eWxlLgotICAgICAgICBCZWNhdXNlLCAnKicgb3BlcmF0b3IgaXMgbmV4dCB0byB2YXJpYWJs
ZSBpbiBFRkwgY29kaW5nIHN0eWxlLgotCi0gICAgICAgIFJldmlld2VkIGJ5IEtlbnQgVGFtdXJh
LgotCi0gICAgICAgICogZXdrL2V3a19mcmFtZS5jcHA6Ci0gICAgICAgIChfZXdrX2ZyYW1lX2Rl
YnVnKToKLSAgICAgICAgKF9ld2tfZnJhbWVfbG9hZGVyX2VmbF9nZXQpOgotICAgICAgICAoa2l0
KToKLSAgICAgICAgKF9ld2tfZnJhbWVfY2hpbGRyZW5faXRlcmF0b3JfbmV4dCk6Ci0gICAgICAg
IChfZXdrX2ZyYW1lX2NoaWxkcmVuX2l0ZXJhdG9yX2dldF9jb250YWluZXIpOgotICAgICAgICAo
X2V3a19mcmFtZV9zbWFydF9hZGQpOgotICAgICAgICAoX2V3a19mcmFtZV9zbWFydF9kZWwpOgot
ICAgICAgICAoX2V3a19mcmFtZV9zbWFydF9yZXNpemUpOgotICAgICAgICAoX2V3a19mcmFtZV9z
bWFydF9zZXQpOgotICAgICAgICAoX2V3a19mcmFtZV9zbWFydF9jbGFzc19uZXcpOgotICAgICAg
ICAoZXdrX2ZyYW1lX3ZpZXdfZ2V0KToKLSAgICAgICAgKGV3a19mcmFtZV9jaGlsZHJlbl9pdGVy
YXRvcl9uZXcpOgotICAgICAgICAoZXdrX2ZyYW1lX2NoaWxkX2ZpbmQpOgotICAgICAgICAoZXdr
X2ZyYW1lX3VyaV9zZXQpOgotICAgICAgICAoZXdrX2ZyYW1lX3VyaV9nZXQpOgotICAgICAgICAo
ZXdrX2ZyYW1lX3RpdGxlX2dldCk6Ci0gICAgICAgIChld2tfZnJhbWVfbmFtZV9nZXQpOgotICAg
ICAgICAoZXdrX2ZyYW1lX2NvbnRlbnRzX3NpemVfZ2V0KToKLSAgICAgICAgKF9ld2tfZnJhbWVf
Y29udGVudHNfc2V0X2ludGVybmFsKToKLSAgICAgICAgKGV3a19mcmFtZV9jb250ZW50c19zZXQp
OgotICAgICAgICAoZXdrX2ZyYW1lX2NvbnRlbnRzX2FsdGVybmF0ZV9zZXQpOgotICAgICAgICAo
ZXdrX2ZyYW1lX3NjcmlwdF9leGVjdXRlKToKLSAgICAgICAgKGV3a19mcmFtZV9lZGl0YWJsZV9n
ZXQpOgotICAgICAgICAoZXdrX2ZyYW1lX2VkaXRhYmxlX3NldCk6Ci0gICAgICAgIChld2tfZnJh
bWVfc2VsZWN0aW9uX2dldCk6Ci0gICAgICAgIChld2tfZnJhbWVfdGV4dF9zZWFyY2gpOgotICAg
ICAgICAoZXdrX2ZyYW1lX3RleHRfbWF0Y2hlc19tYXJrKToKLSAgICAgICAgKGV3a19mcmFtZV90
ZXh0X21hdGNoZXNfdW5tYXJrX2FsbCk6Ci0gICAgICAgIChld2tfZnJhbWVfdGV4dF9tYXRjaGVz
X2hpZ2hsaWdodF9zZXQpOgotICAgICAgICAoZXdrX2ZyYW1lX3RleHRfbWF0Y2hlc19oaWdobGln
aHRfZ2V0KToKLSAgICAgICAgKF9ld2tfZnJhbWVfcmVjdF9jbXBfbGVzc190aGFuKToKLSAgICAg
ICAgKF9ld2tfZnJhbWVfcmVjdF9pc19uZWdhdGl2ZV92YWx1ZSk6Ci0gICAgICAgIChld2tfZnJh
bWVfdGV4dF9tYXRjaGVzX250aF9wb3NfZ2V0KToKLSAgICAgICAgKGV3a19mcmFtZV9zdG9wKToK
LSAgICAgICAgKGV3a19mcmFtZV9yZWxvYWQpOgotICAgICAgICAoZXdrX2ZyYW1lX3JlbG9hZF9m
dWxsKToKLSAgICAgICAgKGV3a19mcmFtZV9iYWNrKToKLSAgICAgICAgKGV3a19mcmFtZV9mb3J3
YXJkKToKLSAgICAgICAgKGV3a19mcmFtZV9uYXZpZ2F0ZSk6Ci0gICAgICAgIChld2tfZnJhbWVf
YmFja19wb3NzaWJsZSk6Ci0gICAgICAgIChld2tfZnJhbWVfZm9yd2FyZF9wb3NzaWJsZSk6Ci0g
ICAgICAgIChld2tfZnJhbWVfbmF2aWdhdGVfcG9zc2libGUpOgotICAgICAgICAoZXdrX2ZyYW1l
X3pvb21fZ2V0KToKLSAgICAgICAgKGV3a19mcmFtZV96b29tX3NldCk6Ci0gICAgICAgIChld2tf
ZnJhbWVfem9vbV90ZXh0X29ubHlfZ2V0KToKLSAgICAgICAgKGV3a19mcmFtZV96b29tX3RleHRf
b25seV9zZXQpOgotICAgICAgICAoZXdrX2ZyYW1lX2hpdF90ZXN0X2ZyZWUpOgotICAgICAgICAo
ZXdrX2ZyYW1lX2hpdF90ZXN0X25ldyk6Ci0gICAgICAgIChld2tfZnJhbWVfc2Nyb2xsX2FkZCk6
Ci0gICAgICAgIChld2tfZnJhbWVfc2Nyb2xsX3NldCk6Ci0gICAgICAgIChld2tfZnJhbWVfc2Ny
b2xsX3NpemVfZ2V0KToKLSAgICAgICAgKGV3a19mcmFtZV9zY3JvbGxfcG9zX2dldCk6Ci0gICAg
ICAgIChld2tfZnJhbWVfdmlzaWJsZV9jb250ZW50X2dlb21ldHJ5X2dldCk6Ci0gICAgICAgIChl
d2tfZnJhbWVfcGFpbnRfZnVsbF9nZXQpOgotICAgICAgICAoZXdrX2ZyYW1lX3BhaW50X2Z1bGxf
c2V0KToKLSAgICAgICAgKGV3a19mcmFtZV9mZWVkX2ZvY3VzX2luKToKLSAgICAgICAgKGV3a19m
cmFtZV9mZWVkX2ZvY3VzX291dCk6Ci0gICAgICAgIChld2tfZnJhbWVfZmVlZF9tb3VzZV93aGVl
bCk6Ci0gICAgICAgIChld2tfZnJhbWVfZmVlZF9tb3VzZV9kb3duKToKLSAgICAgICAgKGV3a19m
cmFtZV9mZWVkX21vdXNlX3VwKToKLSAgICAgICAgKGV3a19mcmFtZV9mZWVkX21vdXNlX21vdmUp
OgotICAgICAgICAoZXdrX2ZyYW1lX2ZlZWRfdG91Y2hfZXZlbnQpOgotICAgICAgICAoX2V3a19m
cmFtZV9oYW5kbGVfa2V5X3Njcm9sbGluZyk6Ci0gICAgICAgIChld2tfZnJhbWVfZmVlZF9rZXlf
ZG93bik6Ci0gICAgICAgIChld2tfZnJhbWVfZmVlZF9rZXlfdXApOgotICAgICAgICAoZXdrX2Zy
YW1lX3RleHRfc2VsZWN0aW9uX3R5cGVfZ2V0KToKLSAgICAgICAgKGV3a19mcmFtZV9hZGQpOgot
ICAgICAgICAoZXdrX2ZyYW1lX2luaXQpOgotICAgICAgICAoZXdrX2ZyYW1lX2NoaWxkX2FkZCk6
Ci0gICAgICAgIChld2tfZnJhbWVfY29yZV9nb25lKToKLSAgICAgICAgKGV3a19mcmFtZV9jb3Jl
X2dldCk6Ci0gICAgICAgIChld2tfZnJhbWVfbG9hZF9zdGFydGVkKToKLSAgICAgICAgKGV3a19m
cmFtZV9sb2FkX3Byb3Zpc2lvbmFsKToKLSAgICAgICAgKGV3a19mcmFtZV9sb2FkX2ZpbmlzaGVk
KToKLSAgICAgICAgKGV3a19mcmFtZV9sb2FkX2Vycm9yKToKLSAgICAgICAgKGV3a19mcmFtZV9s
b2FkX3Byb2dyZXNzX2NoYW5nZWQpOgotICAgICAgICAoZXdrX2ZyYW1lX2NvbnRlbnRzX3NpemVf
Y2hhbmdlZCk6Ci0gICAgICAgIChld2tfZnJhbWVfdGl0bGVfc2V0KToKLSAgICAgICAgKGV3a19m
cmFtZV92aWV3X2NyZWF0ZV9mb3Jfdmlldyk6Ci0gICAgICAgIChld2tfZnJhbWVfdXJpX2NoYW5n
ZWQpOgotICAgICAgICAoZXdrX2ZyYW1lX2ZvcmNlX2xheW91dCk6Ci0gICAgICAgIChld2tfZnJh
bWVfcGx1Z2luX2NyZWF0ZSk6Ci0gICAgICAgIChld2tfZnJhbWVfZWRpdG9yX2NsaWVudF9zZWxl
Y3Rpb25fY2hhbmdlZCk6Ci0gICAgICAgICogZXdrL2V3a19mcmFtZS5oOgotCi0yMDExLTA3LTI3
ICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW0VG
TF0gQWRkIGR1bW15IE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbAotICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQwNjQKLQotICAgICAgICBBZGQg
ZHVtbXkgZmlsZXMgZm9yIEhUTUw1IE5vdGlmaWNhdGlvbi4gQW5kIGFsc28sIG5vdGlmaWNhdGlv
blByZXNlbnRlcigpIGlzIGFkZGVkIHRvCi0gICAgICAgIENocm9tZUNsaWVudEVmbC4gV2l0aG91
dCB0aGlzIGZ1bmN0aW9uIGltcGxlbWVudGVkLCB0aGVyZSB3b3VsZCBiZSBhIGJ1aWxkIGJyZWFr
IHdoZW4KLSAgICAgICAgRU5BQkxFX05PVElGSUNBVElPTiBpcyBlbmFibGVkLgotCi0gICAgICAg
IFJldmlld2VkIGJ5IEFudG9uaW8gR29tZXMuCi0KLSAgICAgICAgKiBDTWFrZUxpc3RzRWZsLnR4
dDoKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwOgotICAgICAg
ICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZsOjpub3RpZmljYXRpb25QcmVzZW50ZXIpOgotICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oOgotICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbC5jcHA6IEFkZGVkLgotICAg
ICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpOb3RpZmljYXRp
b25QcmVzZW50ZXJDbGllbnRFZmwpOgotICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJl
c2VudGVyQ2xpZW50RWZsOjp+Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsKToKLSAgICAg
ICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6c2hvdyk6Ci0gICAg
ICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6OmNhbmNlbCk6Ci0g
ICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6Om5vdGlmaWNh
dGlvbk9iamVjdERlc3Ryb3llZCk6Ci0gICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVz
ZW50ZXJDbGllbnRFZmw6OnJlcXVlc3RQZXJtaXNzaW9uKToKLSAgICAgICAgKFdlYkNvcmU6Ok5v
dGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6Y2hlY2tQZXJtaXNzaW9uKToKLSAgICAgICAg
KFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6Y2FuY2VsUmVxdWVzdHNG
b3JQZXJtaXNzaW9uKToKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVz
ZW50ZXJDbGllbnRFZmwuaDogQWRkZWQuCi0KLTIwMTEtMDctMjYgIEd5dXlvdW5nIEtpbSAgPGd5
dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBbRUZMXSBGaXggcG9pbnRlciBvcGVy
YXRvciBjb2Rpbmcgc3R5bGUgaW4gZXdrX3ZpZXcuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTE2MwotCi0gICAgICAgIE1vdmUgJyonIG9wZXJhdG9y
IHRvIHZhcmlhYmxlIGFjY29yZGluZyB0byBlZmwgY29kaW5nIHN0eWxlLiBJbiBhZGRpdGlvbiwK
LSAgICAgICAgYWRkIGEgc3BhY2UgYmV0d2VlbiAqIGFuZCB2YXJpYWJsZSBpbiB0eXBlIGNhc3Rp
bmcuCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgS2VudCBUYW11cmEuCi0KLSAgICAgICAgKiBld2sv
ZXdrX3ZpZXcuY3BwOgotICAgICAgICAoX2V3a192aWV3X3NtYXJ0X2NoYW5nZWQpOgotICAgICAg
ICAoX2V3a192aWV3X3JlcGFpbnRzX3Jlc2l6ZSk6Ci0gICAgICAgIChfZXdrX3ZpZXdfcmVwYWlu
dF9hZGQpOgotICAgICAgICAoX2V3a192aWV3X3JlcGFpbnRzX2ZsdXNoKToKLSAgICAgICAgKF9l
d2tfdmlld19zY3JvbGxzX3Jlc2l6ZSk6Ci0gICAgICAgIChfZXdrX3ZpZXdfc2Nyb2xsX2FkZCk6
Ci0gICAgICAgIChfZXdrX3ZpZXdfc2Nyb2xsc19mbHVzaCk6Ci0gICAgICAgIChfZXdrX3ZpZXdf
c21hcnRfZm9jdXNfaW4pOgotICAgICAgICAoX2V3a192aWV3X3NtYXJ0X2ZvY3VzX291dCk6Ci0g
ICAgICAgIChfZXdrX3ZpZXdfc21hcnRfbW91c2Vfd2hlZWwpOgotICAgICAgICAoX2V3a192aWV3
X3NtYXJ0X21vdXNlX2Rvd24pOgotICAgICAgICAoX2V3a192aWV3X3NtYXJ0X21vdXNlX3VwKToK
LSAgICAgICAgKF9ld2tfdmlld19zbWFydF9tb3VzZV9tb3ZlKToKLSAgICAgICAgKF9ld2tfdmll
d19zbWFydF9rZXlfZG93bik6Ci0gICAgICAgIChfZXdrX3ZpZXdfc21hcnRfa2V5X3VwKToKLSAg
ICAgICAgKF9ld2tfdmlld19zbWFydF9hZGRfY29uc29sZV9tZXNzYWdlKToKLSAgICAgICAgKF9l
d2tfdmlld19zbWFydF9ydW5famF2YXNjcmlwdF9hbGVydCk6Ci0gICAgICAgIChfZXdrX3ZpZXdf
c21hcnRfcnVuX2phdmFzY3JpcHRfY29uZmlybSk6Ci0gICAgICAgIChfZXdrX3ZpZXdfc21hcnRf
c2hvdWxkX2ludGVycnVwdF9qYXZhc2NyaXB0KToKLSAgICAgICAgKF9ld2tfdmlld19zbWFydF9y
dW5famF2YXNjcmlwdF9wcm9tcHQpOgotICAgICAgICAoX2V3a192aWV3X29uX2ZvY3VzX2luKToK
LSAgICAgICAgKF9ld2tfdmlld19vbl9mb2N1c19vdXQpOgotICAgICAgICAoX2V3a192aWV3X29u
X21vdXNlX3doZWVsKToKLSAgICAgICAgKF9ld2tfdmlld19vbl9tb3VzZV9kb3duKToKLSAgICAg
ICAgKF9ld2tfdmlld19vbl9tb3VzZV91cCk6Ci0gICAgICAgIChfZXdrX3ZpZXdfb25fbW91c2Vf
bW92ZSk6Ci0gICAgICAgIChfZXdrX3ZpZXdfb25fa2V5X2Rvd24pOgotICAgICAgICAoX2V3a192
aWV3X29uX2tleV91cCk6Ci0gICAgICAgIChfZXdrX3ZpZXdfY29yZV9mcmFtZV9uZXcpOgotICAg
ICAgICAoX2V3a192aWV3X3ByaXZfbmV3KToKLSAgICAgICAgKF9ld2tfdmlld19wcml2X2RlbCk6
Ci0gICAgICAgIChfZXdrX3ZpZXdfc21hcnRfYWRkKToKLSAgICAgICAgKF9ld2tfdmlld19zbWFy
dF9kZWwpOgotICAgICAgICAoX2V3a192aWV3X3NtYXJ0X3Jlc2l6ZSk6Ci0gICAgICAgIChfZXdr
X3ZpZXdfc21hcnRfbW92ZSk6Ci0gICAgICAgIChfZXdrX3ZpZXdfc21hcnRfY2FsY3VsYXRlKToK
LSAgICAgICAgKF9ld2tfdmlld19zbWFydF9jb250ZW50c19yZXNpemUpOgotICAgICAgICAoX2V3
a192aWV3X3NtYXJ0X3pvb21fc2V0KToKLSAgICAgICAgKF9ld2tfdmlld19zbWFydF9mbHVzaCk6
Ci0gICAgICAgIChfZXdrX3ZpZXdfc21hcnRfcHJlX3JlbmRlcl9yZWdpb24pOgotICAgICAgICAo
X2V3a192aWV3X3NtYXJ0X3ByZV9yZW5kZXJfcmVsYXRpdmVfcmFkaXVzKToKLSAgICAgICAgKF9l
d2tfdmlld19zbWFydF9wcmVfcmVuZGVyX2NhbmNlbCk6Ci0gICAgICAgIChfZXdrX3ZpZXdfem9v
bV9hbmltYXRlZF9tYXJrX3N0b3ApOgotICAgICAgICAoX2V3a192aWV3X3pvb21fYW5pbWF0ZWRf
ZmluaXNoKToKLSAgICAgICAgKF9ld2tfdmlld196b29tX2FuaW1hdGVkX2N1cnJlbnQpOgotICAg
ICAgICAoX2V3a192aWV3X3pvb21fYW5pbWF0b3JfY2IpOgotICAgICAgICAoX2V3a192aWV3X3pv
b21fYW5pbWF0aW9uX3N0YXJ0KToKLSAgICAgICAgKF9ld2tfdmlld192aWV3cG9ydF9hdHRyaWJ1
dGVzX2NvbXB1dGUpOgotICAgICAgICAoZXdrX3ZpZXdfYmFzZV9zbWFydF9zZXQpOgotICAgICAg
ICAoZXdrX3ZpZXdfZml4ZWRfbGF5b3V0X3NpemVfc2V0KToKLSAgICAgICAgKGV3a192aWV3X2Zp
eGVkX2xheW91dF9zaXplX2dldCk6Ci0gICAgICAgIChld2tfdmlld190aGVtZV9zZXQpOgotICAg
ICAgICAoZXdrX3ZpZXdfdGhlbWVfZ2V0KToKLSAgICAgICAgKGV3a192aWV3X2ZyYW1lX21haW5f
Z2V0KToKLSAgICAgICAgKGV3a192aWV3X2ZyYW1lX2ZvY3VzZWRfZ2V0KToKLSAgICAgICAgKGV3
a192aWV3X3VyaV9zZXQpOgotICAgICAgICAoZXdrX3ZpZXdfdXJpX2dldCk6Ci0gICAgICAgIChl
d2tfdmlld190aXRsZV9nZXQpOgotICAgICAgICAoZXdrX3ZpZXdfZWRpdGFibGVfZ2V0KToKLSAg
ICAgICAgKGV3a192aWV3X2JnX2NvbG9yX3NldCk6Ci0gICAgICAgIChld2tfdmlld19iZ19jb2xv
cl9nZXQpOgotICAgICAgICAoZXdrX3ZpZXdfdGV4dF9zZWFyY2gpOgotICAgICAgICAoZXdrX3Zp
ZXdfdGV4dF9tYXRjaGVzX21hcmspOgotICAgICAgICAoZXdrX3ZpZXdfdGV4dF9tYXRjaGVzX3Vu
bWFya19hbGwpOgotICAgICAgICAoZXdrX3ZpZXdfdGV4dF9tYXRjaGVzX2hpZ2hsaWdodF9zZXQp
OgotICAgICAgICAoZXdrX3ZpZXdfdGV4dF9tYXRjaGVzX2hpZ2hsaWdodF9nZXQpOgotICAgICAg
ICAoZXdrX3ZpZXdfZWRpdGFibGVfc2V0KToKLSAgICAgICAgKGV3a192aWV3X3NlbGVjdGlvbl9n
ZXQpOgotICAgICAgICAoX2V3a192aWV3X2VkaXRvcl9jb21tYW5kKToKLSAgICAgICAgKGV3a192
aWV3X2V4ZWN1dGVfZWRpdG9yX2NvbW1hbmQpOgotICAgICAgICAoZXdrX3ZpZXdfY29udGV4dF9t
ZW51X2ZvcndhcmRfZXZlbnQpOgotICAgICAgICAoZXdrX3ZpZXdfbG9hZF9wcm9ncmVzc19nZXQp
OgotICAgICAgICAoZXdrX3ZpZXdfc3RvcCk6Ci0gICAgICAgIChld2tfdmlld19yZWxvYWQpOgot
ICAgICAgICAoZXdrX3ZpZXdfcmVsb2FkX2Z1bGwpOgotICAgICAgICAoZXdrX3ZpZXdfYmFjayk6
Ci0gICAgICAgIChld2tfdmlld19mb3J3YXJkKToKLSAgICAgICAgKGV3a192aWV3X25hdmlnYXRl
KToKLSAgICAgICAgKGV3a192aWV3X2JhY2tfcG9zc2libGUpOgotICAgICAgICAoZXdrX3ZpZXdf
Zm9yd2FyZF9wb3NzaWJsZSk6Ci0gICAgICAgIChld2tfdmlld19uYXZpZ2F0ZV9wb3NzaWJsZSk6
Ci0gICAgICAgIChld2tfdmlld19oaXN0b3J5X2VuYWJsZV9nZXQpOgotICAgICAgICAoZXdrX3Zp
ZXdfaGlzdG9yeV9lbmFibGVfc2V0KToKLSAgICAgICAgKGV3a192aWV3X2hpc3RvcnlfZ2V0KToK
LSAgICAgICAgKGV3a192aWV3X3pvb21fZ2V0KToKLSAgICAgICAgKGV3a192aWV3X3pvb21fc2V0
KToKLSAgICAgICAgKGV3a192aWV3X3pvb21fd2Vha19zbW9vdGhfc2NhbGVfZ2V0KToKLSAgICAg
ICAgKGV3a192aWV3X3pvb21fd2Vha19zbW9vdGhfc2NhbGVfc2V0KToKLSAgICAgICAgKGV3a192
aWV3X3pvb21fd2Vha19zZXQpOgotICAgICAgICAoZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9tYXJr
X3N0YXJ0KToKLSAgICAgICAgKGV3a192aWV3X3pvb21fYW5pbWF0ZWRfbWFya19lbmQpOgotICAg
ICAgICAoZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9tYXJrX2N1cnJlbnQpOgotICAgICAgICAoZXdr
X3ZpZXdfem9vbV9hbmltYXRlZF9tYXJrX3N0b3ApOgotICAgICAgICAoZXdrX3ZpZXdfem9vbV9h
bmltYXRlZF9zZXQpOgotICAgICAgICAoZXdrX3ZpZXdfem9vbV90ZXh0X29ubHlfZ2V0KToKLSAg
ICAgICAgKGV3a192aWV3X3pvb21fdGV4dF9vbmx5X3NldCk6Ci0gICAgICAgIChld2tfdmlld19w
cmVfcmVuZGVyX3JlZ2lvbik6Ci0gICAgICAgIChld2tfdmlld19wcmVfcmVuZGVyX3JlbGF0aXZl
X3JhZGl1cyk6Ci0gICAgICAgIChld2tfdmlld19wcmVfcmVuZGVyX2NhbmNlbCk6Ci0gICAgICAg
IChld2tfdmlld19zZXR0aW5nX3VzZXJfYWdlbnRfZ2V0KToKLSAgICAgICAgKGV3a192aWV3X3Nl
dHRpbmdfdXNlcl9hZ2VudF9zZXQpOgotICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ191c2VyX3N0
eWxlc2hlZXRfZ2V0KToKLSAgICAgICAgKGV3a192aWV3X3NldHRpbmdfdXNlcl9zdHlsZXNoZWV0
X3NldCk6Ci0gICAgICAgIChld2tfdmlld19zZXR0aW5nX2F1dG9fbG9hZF9pbWFnZXNfZ2V0KToK
LSAgICAgICAgKGV3a192aWV3X3NldHRpbmdfYXV0b19sb2FkX2ltYWdlc19zZXQpOgotICAgICAg
ICAoZXdrX3ZpZXdfc2V0dGluZ19hdXRvX3Nocmlua19pbWFnZXNfZ2V0KToKLSAgICAgICAgKGV3
a192aWV3X3NldHRpbmdfYXV0b19zaHJpbmtfaW1hZ2VzX3NldCk6Ci0gICAgICAgIChld2tfdmll
d19zZXR0aW5nX2VuYWJsZV9hdXRvX3Jlc2l6ZV93aW5kb3dfZ2V0KToKLSAgICAgICAgKGV3a192
aWV3X3NldHRpbmdfZW5hYmxlX2F1dG9fcmVzaXplX3dpbmRvd19zZXQpOgotICAgICAgICAoZXdr
X3ZpZXdfc2V0dGluZ19lbmFibGVfc2NyaXB0c19nZXQpOgotICAgICAgICAoZXdrX3ZpZXdfc2V0
dGluZ19lbmFibGVfc2NyaXB0c19zZXQpOgotICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19lbmFi
bGVfcGx1Z2luc19nZXQpOgotICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfcGx1Z2lu
c19zZXQpOgotICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfZnJhbWVfZmxhdHRlbmlu
Z19nZXQpOgotICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfZnJhbWVfZmxhdHRlbmlu
Z19zZXQpOgotICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19zY3JpcHRzX3dpbmRvd19vcGVuX2dl
dCk6Ci0gICAgICAgIChld2tfdmlld19zZXR0aW5nX3NjcmlwdHNfd2luZG93X29wZW5fc2V0KToK
LSAgICAgICAgKGV3a192aWV3X3NldHRpbmdfcmVzaXphYmxlX3RleHRhcmVhc19nZXQpOgotICAg
ICAgICAoZXdrX3ZpZXdfc2V0dGluZ19yZXNpemFibGVfdGV4dGFyZWFzX3NldCk6Ci0gICAgICAg
IChld2tfdmlld19zZXR0aW5nX3ByaXZhdGVfYnJvd3NpbmdfZ2V0KToKLSAgICAgICAgKGV3a192
aWV3X3NldHRpbmdfcHJpdmF0ZV9icm93c2luZ19zZXQpOgotICAgICAgICAoZXdrX3ZpZXdfc2V0
dGluZ19vZmZsaW5lX2FwcF9jYWNoZV9nZXQpOgotICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19v
ZmZsaW5lX2FwcF9jYWNoZV9zZXQpOgotICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19jYXJldF9i
cm93c2luZ19nZXQpOgotICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19jYXJldF9icm93c2luZ19z
ZXQpOgotICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19lbmNvZGluZ19jdXN0b21fZ2V0KToKLSAg
ICAgICAgKGV3a192aWV3X3NldHRpbmdfZW5jb2RpbmdfY3VzdG9tX3NldCk6Ci0gICAgICAgIChl
d2tfdmlld19zZXR0aW5nX2VuY29kaW5nX2RlZmF1bHRfZ2V0KToKLSAgICAgICAgKGV3a192aWV3
X3NldHRpbmdfZW5jb2RpbmdfZGVmYXVsdF9zZXQpOgotICAgICAgICAoZXdrX3ZpZXdfc2V0dGlu
Z19lbmNvZGluZ19kZXRlY3Rvcl9zZXQpOgotICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19lbmNv
ZGluZ19kZXRlY3Rvcl9nZXQpOgotICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfZGV2
ZWxvcGVyX2V4dHJhc19nZXQpOgotICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfZGV2
ZWxvcGVyX2V4dHJhc19zZXQpOgotICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19mb250X21pbmlt
dW1fc2l6ZV9nZXQpOgotICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19mb250X21pbmltdW1fc2l6
ZV9zZXQpOgotICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19mb250X21pbmltdW1fbG9naWNhbF9z
aXplX2dldCk6Ci0gICAgICAgIChld2tfdmlld19zZXR0aW5nX2ZvbnRfbWluaW11bV9sb2dpY2Fs
X3NpemVfc2V0KToKLSAgICAgICAgKGV3a192aWV3X3NldHRpbmdfZm9udF9kZWZhdWx0X3NpemVf
Z2V0KToKLSAgICAgICAgKGV3a192aWV3X3NldHRpbmdfZm9udF9kZWZhdWx0X3NpemVfc2V0KToK
LSAgICAgICAgKGV3a192aWV3X3NldHRpbmdfZm9udF9tb25vc3BhY2Vfc2l6ZV9nZXQpOgotICAg
ICAgICAoZXdrX3ZpZXdfc2V0dGluZ19mb250X21vbm9zcGFjZV9zaXplX3NldCk6Ci0gICAgICAg
IChld2tfdmlld19zZXR0aW5nX2ZvbnRfc3RhbmRhcmRfZ2V0KToKLSAgICAgICAgKGV3a192aWV3
X3NldHRpbmdfZm9udF9zdGFuZGFyZF9zZXQpOgotICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19m
b250X2N1cnNpdmVfZ2V0KToKLSAgICAgICAgKGV3a192aWV3X3NldHRpbmdfZm9udF9jdXJzaXZl
X3NldCk6Ci0gICAgICAgIChld2tfdmlld19zZXR0aW5nX2ZvbnRfZmFudGFzeV9nZXQpOgotICAg
ICAgICAoZXdrX3ZpZXdfc2V0dGluZ19mb250X2ZhbnRhc3lfc2V0KToKLSAgICAgICAgKGV3a192
aWV3X3NldHRpbmdfZm9udF9tb25vc3BhY2VfZ2V0KToKLSAgICAgICAgKGV3a192aWV3X3NldHRp
bmdfZm9udF9tb25vc3BhY2Vfc2V0KToKLSAgICAgICAgKGV3a192aWV3X3NldHRpbmdfZm9udF9z
ZXJpZl9nZXQpOgotICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19mb250X3NlcmlmX3NldCk6Ci0g
ICAgICAgIChld2tfdmlld19zZXR0aW5nX2ZvbnRfc2Fuc19zZXJpZl9nZXQpOgotICAgICAgICAo
ZXdrX3ZpZXdfc2V0dGluZ19mb250X3NhbnNfc2VyaWZfc2V0KToKLSAgICAgICAgKGV3a192aWV3
X3NldHRpbmdfc3BhdGlhbF9uYXZpZ2F0aW9uX2dldCk6Ci0gICAgICAgIChld2tfdmlld19zZXR0
aW5nX3NwYXRpYWxfbmF2aWdhdGlvbl9zZXQpOgotICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19s
b2NhbF9zdG9yYWdlX2dldCk6Ci0gICAgICAgIChld2tfdmlld19zZXR0aW5nX2xvY2FsX3N0b3Jh
Z2Vfc2V0KToKLSAgICAgICAgKGV3a192aWV3X3NldHRpbmdfcGFnZV9jYWNoZV9nZXQpOgotICAg
ICAgICAoZXdrX3ZpZXdfc2V0dGluZ19wYWdlX2NhY2hlX3NldCk6Ci0gICAgICAgIChld2tfdmll
d19zZXR0aW5nX2xvY2FsX3N0b3JhZ2VfZGF0YWJhc2VfcGF0aF9nZXQpOgotICAgICAgICAoZXdr
X3ZpZXdfc2V0dGluZ19sb2NhbF9zdG9yYWdlX2RhdGFiYXNlX3BhdGhfc2V0KToKLSAgICAgICAg
KGV3a192aWV3X3NtYXJ0X2RhdGFfZ2V0KToKLSAgICAgICAgKGV3a192aWV3X3JlcGFpbnRzX2dl
dCk6Ci0gICAgICAgIChld2tfdmlld19zY3JvbGxfcmVxdWVzdHNfZ2V0KToKLSAgICAgICAgKGV3
a192aWV3X3JlcGFpbnRfYWRkKToKLSAgICAgICAgKGV3a192aWV3X2xheW91dF9pZl9uZWVkZWRf
cmVjdXJzaXZlKToKLSAgICAgICAgKGV3a192aWV3X3Njcm9sbHNfcHJvY2Vzcyk6Ci0gICAgICAg
IChld2tfdmlld19wYWludF9jb250ZXh0X25ldyk6Ci0gICAgICAgIChld2tfdmlld19wYWludF9j
b250ZXh0X2ZyZWUpOgotICAgICAgICAoZXdrX3ZpZXdfcGFpbnRfY29udGV4dF9zYXZlKToKLSAg
ICAgICAgKGV3a192aWV3X3BhaW50X2NvbnRleHRfcmVzdG9yZSk6Ci0gICAgICAgIChld2tfdmll
d19wYWludF9jb250ZXh0X2NsaXApOgotICAgICAgICAoZXdrX3ZpZXdfcGFpbnRfY29udGV4dF9w
YWludCk6Ci0gICAgICAgIChld2tfdmlld19wYWludF9jb250ZXh0X3BhaW50X2NvbnRlbnRzKToK
LSAgICAgICAgKGV3a192aWV3X3BhaW50X2NvbnRleHRfc2NhbGUpOgotICAgICAgICAoZXdrX3Zp
ZXdfcGFpbnRfY29udGV4dF90cmFuc2xhdGUpOgotICAgICAgICAoZXdrX3ZpZXdfcGFpbnQpOgot
ICAgICAgICAoZXdrX3ZpZXdfcGFpbnRfY29udGVudHMpOgotICAgICAgICAoZXdrX3ZpZXdfcmVh
ZHkpOgotICAgICAgICAoZXdrX3ZpZXdfaW5wdXRfbWV0aG9kX3N0YXRlX3NldCk6Ci0gICAgICAg
IChld2tfdmlld190aXRsZV9zZXQpOgotICAgICAgICAoZXdrX3ZpZXdfdXJpX2NoYW5nZWQpOgot
ICAgICAgICAoZXdrX3ZpZXdfbG9hZF9zdGFydGVkKToKLSAgICAgICAgKGV3a192aWV3X2ZyYW1l
X21haW5fbG9hZF9zdGFydGVkKToKLSAgICAgICAgKGV3a192aWV3X2xvYWRfcHJvdmlzaW9uYWwp
OgotICAgICAgICAoZXdrX3ZpZXdfbG9hZF9zaG93KToKLSAgICAgICAgKGV3a192aWV3X2ZyYW1l
X21haW5fY2xlYXJlZCk6Ci0gICAgICAgIChld2tfdmlld19mcmFtZV9tYWluX2ljb25fcmVjZWl2
ZWQpOgotICAgICAgICAoZXdrX3ZpZXdfbG9hZF9maW5pc2hlZCk6Ci0gICAgICAgIChld2tfdmll
d19sb2FkX2Vycm9yKToKLSAgICAgICAgKGV3a192aWV3X2xvYWRfcHJvZ3Jlc3NfY2hhbmdlZCk6
Ci0gICAgICAgIChld2tfdmlld19yZXN0b3JlX3N0YXRlKToKLSAgICAgICAgKGV3a192aWV3X3dp
bmRvd19jcmVhdGUpOgotICAgICAgICAoZXdrX3ZpZXdfd2luZG93X2Nsb3NlKToKLSAgICAgICAg
KGV3a192aWV3X21vdXNlX2xpbmtfaG92ZXJfaW4pOgotICAgICAgICAoZXdrX3ZpZXdfbW91c2Vf
bGlua19ob3Zlcl9vdXQpOgotICAgICAgICAoZXdrX3ZpZXdfdG9vbGJhcnNfdmlzaWJsZV9zZXQp
OgotICAgICAgICAoZXdrX3ZpZXdfdG9vbGJhcnNfdmlzaWJsZV9nZXQpOgotICAgICAgICAoZXdr
X3ZpZXdfc3RhdHVzYmFyX3Zpc2libGVfc2V0KToKLSAgICAgICAgKGV3a192aWV3X3N0YXR1c2Jh
cl92aXNpYmxlX2dldCk6Ci0gICAgICAgIChld2tfdmlld19zdGF0dXNiYXJfdGV4dF9zZXQpOgot
ICAgICAgICAoZXdrX3ZpZXdfc2Nyb2xsYmFyc192aXNpYmxlX3NldCk6Ci0gICAgICAgIChld2tf
dmlld19zY3JvbGxiYXJzX3Zpc2libGVfZ2V0KToKLSAgICAgICAgKGV3a192aWV3X21lbnViYXJf
dmlzaWJsZV9zZXQpOgotICAgICAgICAoZXdrX3ZpZXdfbWVudWJhcl92aXNpYmxlX2dldCk6Ci0g
ICAgICAgIChld2tfdmlld190b29sdGlwX3RleHRfc2V0KToKLSAgICAgICAgKGV3a192aWV3X2Fk
ZF9jb25zb2xlX21lc3NhZ2UpOgotICAgICAgICAoZXdrX3ZpZXdfcnVuX2phdmFzY3JpcHRfYWxl
cnQpOgotICAgICAgICAoZXdrX3ZpZXdfcnVuX2phdmFzY3JpcHRfY29uZmlybSk6Ci0gICAgICAg
IChld2tfdmlld19ydW5famF2YXNjcmlwdF9wcm9tcHQpOgotICAgICAgICAoZXdrX3ZpZXdfc2hv
dWxkX2ludGVycnVwdF9qYXZhc2NyaXB0KToKLSAgICAgICAgKGV3a192aWV3X2V4Y2VlZGVkX2Rh
dGFiYXNlX3F1b3RhKToKLSAgICAgICAgKGV3a192aWV3X3J1bl9vcGVuX3BhbmVsKToKLSAgICAg
ICAgKGV3a192aWV3X3JlcGFpbnQpOgotICAgICAgICAoZXdrX3ZpZXdfc2Nyb2xsKToKLSAgICAg
ICAgKGV3a192aWV3X2NvcmVfcGFnZV9nZXQpOgotICAgICAgICAoZXdrX3ZpZXdfZnJhbWVfY3Jl
YXRlKToKLSAgICAgICAgKGV3a192aWV3X3BsdWdpbl9jcmVhdGUpOgotICAgICAgICAoZXdrX3Zp
ZXdfcG9wdXBfbmV3KToKLSAgICAgICAgKGV3a192aWV3X3BvcHVwX2Rlc3Ryb3kpOgotICAgICAg
ICAoZXdrX3ZpZXdfcG9wdXBfc2VsZWN0ZWRfc2V0KToKLSAgICAgICAgKGV3a192aWV3X2Rvd25s
b2FkX3JlcXVlc3QpOgotICAgICAgICAoZXdrX3ZpZXdfdmlld3BvcnRfYXR0cmlidXRlc19zZXQp
OgotICAgICAgICAoZXdrX3ZpZXdfdmlld3BvcnRfYXR0cmlidXRlc19nZXQpOgotICAgICAgICAo
ZXdrX3ZpZXdfem9vbV9yYW5nZV9zZXQpOgotICAgICAgICAoZXdrX3ZpZXdfem9vbV9yYW5nZV9t
aW5fZ2V0KToKLSAgICAgICAgKGV3a192aWV3X3pvb21fcmFuZ2VfbWF4X2dldCk6Ci0gICAgICAg
IChld2tfdmlld191c2VyX3NjYWxhYmxlX3NldCk6Ci0gICAgICAgIChld2tfdmlld191c2VyX3Nj
YWxhYmxlX2dldCk6Ci0gICAgICAgIChld2tfdmlld19kZXZpY2VfcGl4ZWxfcmF0aW9fZ2V0KToK
LSAgICAgICAgKGV3a192aWV3X25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uKToKLSAgICAgICAg
KGV3a192aWV3X3BhZ2VfcmVjdF9nZXQpOgotICAgICAgICAoZXdrX3ZpZXdfbmVlZF90b3VjaF9l
dmVudHNfc2V0KToKLSAgICAgICAgKGV3a192aWV3X25lZWRfdG91Y2hfZXZlbnRzX2dldCk6Ci0g
ICAgICAgIChld2tfdmlld19tb2RlX3NldCk6Ci0gICAgICAgIChld2tfdmlld19tb2RlX2dldCk6
Ci0gICAgICAgIChld2tfdmlld19lZGl0b3JfY2xpZW50X3NlbGVjdGlvbl9jaGFuZ2VkKToKLSAg
ICAgICAgKiBld2svZXdrX3ZpZXcuaDoKLQotMjAxMS0wNy0yNiAgU2FkcnVsIEhhYmliIENob3dk
aHVyeSAgPHNhZHJ1bEBjaHJvbWl1bS5vcmc+Ci0KLSAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGRv
d25sb2FkPSdmaWxlbmFtZScgYXR0cmlidXRlIGluIGFuY2hvcnMuCi0gICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NDU4MAotCi0gICAgICAgIFJldmlld2Vk
IGJ5IEFkYW0gQmFydGguCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6c3Rh
cnREb3dubG9hZCk6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRF
ZmwuaDoKLQotMjAxMS0wNy0yNSAgSnVuZ0ppayBMZWUgIDxqdW5namlrLmxlZUBzYW1zdW5nLmNv
bT4KLQotICAgICAgICBbRUZMXSBSZW1vdmUgdW51c2VkIGNvZGUgaW4gZXdrX3RpbGVfbW9kZWwu
YwotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQ1MjEK
LQotICAgICAgICBSZW1vdmUgdW51c2VkIGNvZGUgaW4gZXdrX3RpbGVfbW9kZWwuYy4gRGlydHkg
ZmxhZyBpcyBub3QgcmVmZXJlbmNlZCBhbnl3aGVyZS4KLQotICAgICAgICBSZXZpZXdlZCBieSBE
YW5pZWwgQmF0ZXMuCi0KLSAgICAgICAgKiBld2svZXdrX3RpbGVkX21vZGVsLmM6Ci0gICAgICAg
IChld2tfdGlsZV91bnVzZWRfY2FjaGVfY2xlYXIpOgotICAgICAgICAoZXdrX3RpbGVfdW51c2Vk
X2NhY2hlX2ZsdXNoKToKLSAgICAgICAgKGV3a190aWxlX3VudXNlZF9jYWNoZV90aWxlX2dldCk6
Ci0gICAgICAgIChld2tfdGlsZV91bnVzZWRfY2FjaGVfdGlsZV9wdXQpOgotCi0yMDExLTA3LTI1
ICBHcnplZ29yeiBDemFqa293c2tpICA8Zy5jemFqa293c2tpQHNhbXN1bmcuY29tPgotCi0gICAg
ICAgIFtFRkxdIE1vdmUgbWFjcm8gY2hlY2tpbmcgaW5zaWRlIGV3a192aWV3X2NvbnRleHRfbWVu
dV9mb3J3YXJkX2V2ZW50Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD02NDY4MgotCi0gICAgICAgIFdoZW4gQ09OVEVYVF9NRU5VUyBtYWNybyBpcyBkaXNh
YmxlZCBtZXRob2QgZXdrX3ZpZXdfY29udGV4dF9tZW51X2ZvcndhcmRfZXZlbnQganVzdAotICAg
ICAgICByZXR1cm5zIEVJTkFfRkFMU0UgYW5kIGl0IGF2b2lkIHVuZGVmaW5lZCByZWZlcmVuY2Ug
ZHVyaW5nIGJ1aWxkaW5nLgotCi0gICAgICAgIFJldmlld2VkIGJ5IEtlbnQgVGFtdXJhLgotCi0g
ICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAgKGV3a192aWV3X2NvbnRleHRfbWVu
dV9mb3J3YXJkX2V2ZW50KToKLQotMjAxMS0wNy0yNSAgR3J6ZWdvcnogQ3phamtvd3NraSAgPGcu
Y3phamtvd3NraUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBbRUZMXSBNZXRob2QgZXdrX2NvbnRl
eHRfbWVudV9kZXN0cm95IHJldHVybnMgRUlOQV9GQUxTRSBpZiBDT05URVhUX01FTlVTIG1hY3Jv
IGlzIGRpc2FibGVkCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02NDY4MwotCi0gICAgICAgIEZpeCByZXR1cm5lZCB2YWx1ZSBhbmQgb21pdCBOVUxMIGNo
ZWNraW5nIGlmIENPTlRFWFRfTUVOVVMgbWFjcm8gaXMgZGlzYWJsZWQKLSAgICAgICAgaW4gZXdr
X2NvbnRleHRfbWVudV9kZXN0cm95LiAKLQotICAgICAgICBSZXZpZXdlZCBieSBLZW50IFRhbXVy
YS4KLQotICAgICAgICAqIGV3ay9ld2tfY29udGV4dG1lbnUuY3BwOgotICAgICAgICAoZXdrX2Nv
bnRleHRfbWVudV9kZXN0cm95KToKLQotMjAxMS0wNy0yMiAgTWljaGFsIFBha3VsYSB2ZWwgUnV0
a2EgIDxtLnBha3VsYUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBbRUZMXSBld2tfZnJhbWVfaGl0
X3Rlc3RfbmV3IGVuaGFuY2VtZW50Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD02NDI2MAotCi0gICAgICAgIFJlcGxhY2VzIHN0cnVjdHVyZSAnZmxhZ3Mn
IHdpdGggZW51bSAnY29udGV4dCcgY29udGFpbmluZyBtb3JlIGhpdCB0ZXN0Ci0gICAgICAgIHJl
c3VsdCB0eXBlcyBhbmQgYWRkcyBuZXcgY2hhciogZmllbGRzIHRvIEV3a19IaXRfVGVzdCBzdHJ1
Y3R1cmU6Ci0gICAgICAgIGltYWdlX3VyaSBhbmQgbWVkaWFfdXJpLgotCi0gICAgICAgIFJldmll
d2VkIGJ5IEFudG9uaW8gR29tZXMuCi0KLSAgICAgICAgKiBld2svZXdrX2ZyYW1lLmNwcDoKLSAg
ICAgICAgKGV3a19mcmFtZV9oaXRfdGVzdF9mcmVlKToKLSAgICAgICAgKGV3a19mcmFtZV9oaXRf
dGVzdF9uZXcpOgotICAgICAgICAqIGV3ay9ld2tfZnJhbWUuaDoKLQotMjAxMS0wNy0xOSAgR3l1
eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtFRkxdIEFk
ZCBld2tfbmV0d29yay5jcHB8aCBmaWxlcy4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTYzMzE1Ci0KLSAgICAgICAgZXdrX25ldHdvcmsuY3BwfGggZmls
ZXMgYXJlIGFkZGVkIHRvIGV3ayBpbiBvcmRlciB0byBzdXBwb3J0IEFQSXMgcmVsYXRlZCB0byBu
ZXR3b3JraW5nLgotICAgICAgICBJbiBhZGRpdGlvbiwgZXdrX25ldHdvcmtfc3RhdGVfbm90aWZp
ZXJfb25saW5lX3NldCgpIGlzIGFkZGVkIHRvIGV3a19uZXR3b3JrLmNwcCBpbiBvcmRlcgotICAg
ICAgICB0byBub3RpZnkgTmV0d29ya1N0YXRlTm90aWZpZXIgb2YgbmV0d29yayBzdGF0dXMuCi0K
LSAgICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21lcy4KLQotICAgICAgICAqIENNYWtlTGlz
dHNFZmwudHh0OgotICAgICAgICAqIGV3ay9FV2ViS2l0Lmg6Ci0gICAgICAgICogZXdrL2V3a19u
ZXR3b3JrLmNwcDogQWRkZWQuCi0gICAgICAgIChld2tfbmV0d29ya19wcm94eV91cmlfc2V0KToK
LSAgICAgICAgKGV3a19uZXR3b3JrX3Byb3h5X3VyaV9nZXQpOgotICAgICAgICAoZXdrX25ldHdv
cmtfc3RhdGVfbm90aWZpZXJfb25saW5lX3NldCk6Ci0gICAgICAgICogZXdrL2V3a19uZXR3b3Jr
Lmg6Ci0gICAgICAgICogZXdrL2V3a19zZXR0aW5ncy5jcHA6Ci0gICAgICAgICogZXdrL2V3a19z
ZXR0aW5ncy5oOgotCi0yMDExLTA3LTE1ICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+
Ci0KLSAgICAgICAgUkVHUkVTU0lPTjogTW91c2UgY3Vyc29yIGRvZXNu4oCZdCBoaWRlIHdoZW4g
ZnVsbCBzY3JlZW4gdmlkZW8gSFVEIGhpZGVzCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD02NDYxNQotCi0gICAgICAgIFJldmlld2VkIGJ5IEFuZGVycyBD
YXJsc3Nvbi4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHA6
Ci0gICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRFZmw6OnNldEN1cnNvckhpZGRlblVudGls
TW91c2VNb3Zlcyk6IEFkZGVkIHRoaXMgc3R1Yi4KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9D
aHJvbWVDbGllbnRFZmwuaDoKLQotMjAxMS0wNy0xNCAgSmFlaHVuIExpbSAgPGxqYWVodW4ubGlt
QHNhbXN1bmcuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCi0KLSAgICAg
ICAgW0VGTF0gUmVtb3ZlIEljb25EYXRhYmFzZSBpbml0aWFsaXphdGlvbiBpbiBfZXdrX2luaXRf
Ym9keSgpCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02
MzQ5MQotCi0gICAgICAgIE1ha2UgSWNvbkRhdGFiYXNlIGZlYXR1cmUgb3B0aW9uYWwgYnkgcmVt
b3ZpbmcgaXRzIGluaXRpYWxpemF0aW9uIGZyb20gX2V3a19pbml0X2JvZHkoKS4KLSAgICAgICAg
Tm93IEljb25EYXRhYmFzZSBtdXN0IGJlIGZ1bGx5IG1hbmFnZWQgYnkgYW4gYXBwbGljYXRpb246
Ci0gICAgICAgIGlmIGl0IGRvZXNuJ3Qgd2FudCB0byB1c2UgaXQsIHRoZXJlJ3Mgbm90aGluZyB0
byBkby4gT3RoZXJ3aXNlLCBqdXN0IGNhbGwKLSAgICAgICAgZXdrX3NldHRpbmdzX2ljb25fZGF0
YWJhc2VfcGF0aF9zZXQoKSB3aXRoIHRoZSBkaXJlY3RvcnkgcGF0aC4KLQotICAgICAgICAqIGV3
ay9ld2tfbWFpbi5jcHA6Ci0gICAgICAgIChfZXdrX2luaXRfYm9keSk6Ci0gICAgICAgICogZXdr
L2V3a19zZXR0aW5ncy5jcHA6Ci0gICAgICAgIChld2tfc2V0dGluZ3NfaWNvbl9kYXRhYmFzZV9w
YXRoX3NldCk6Ci0KLTIwMTEtMDctMTIgIEpvc2VwaCBQZWNvcmFybyAgPGpvZXBlY2tAd2Via2l0
Lm9yZz4KLQotICAgICAgICBBcHBsaWNhdGlvbkNhY2hlIHVwZGF0ZSBzaG91bGQgbm90IGltbWVk
aWF0ZWx5IGZhaWwgd2hlbiByZWFjaGluZyBwZXItb3JpZ2luIHF1b3RhCi0gICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NDE3NwotCi0gICAgICAgIFJldmll
d2VkIGJ5IEFsZXhleSBQcm9za3VyeWFrb3YuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9D
aHJvbWVDbGllbnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZsOjpy
ZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKToKLSAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9DaHJvbWVDbGllbnRFZmwuaDoKLQotMjAxMS0wNy0xMSAgSmFlaHVuIExpbSAgPGxqYWVo
dW4ubGltQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IFJ5b3N1a2UgTml3YS4K
LQotICAgICAgICBbRUZMXSBTdXBwb3J0cyB0byBleGVjdXRlICJyZWRvIiBjb21tYW5kLgotICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjI1MzYKLQotICAg
ICAgICBJbXBsZW1lbnRzIGJhc2ljIGZ1bmN0aW9ucyBmb3IgInJlZG8iIGNvbW1hbmQuCi0KLSAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuY3BwOgotICAgICAgICAoV2Vi
Q29yZTo6RWRpdG9yQ2xpZW50RWZsOjpyZWdpc3RlckNvbW1hbmRGb3JVbmRvKToKLSAgICAgICAg
KFdlYkNvcmU6OkVkaXRvckNsaWVudEVmbDo6cmVnaXN0ZXJDb21tYW5kRm9yUmVkbyk6Ci0gICAg
ICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRFZmw6OmNsZWFyVW5kb1JlZG9PcGVyYXRpb25zKToK
LSAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEVmbDo6Y2FuUmVkbyk6Ci0gICAgICAgIChX
ZWJDb3JlOjpFZGl0b3JDbGllbnRFZmw6OnVuZG8pOgotICAgICAgICAoV2ViQ29yZTo6RWRpdG9y
Q2xpZW50RWZsOjpyZWRvKToKLSAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEVmbDo6RWRp
dG9yQ2xpZW50RWZsKToKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwu
aDoKLQotMjAxMS0wNi0yOSAgS2FuZ2lsIEhhbiAgPGthbmdpbC5oYW5Ac2Ftc3VuZy5jb20+Ci0K
LSAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCi0KLSAgICAg
ICAgW0VGTF0gQWRkIEFQSXMgdG8gZ2V0L3NldCB2aWV3IG1vZGUKLSAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYzMjI5Ci0KLSAgICAgICAgSW1wbGVtZW50
IHB1YmxpYyBBUEkgZm9yIGdldHRpbmcvc2V0dGluZyB0aGUgdmlldy1tb2RlIG1lZGlhIGZlYXR1
cmUgYXMgc3BlY2lmaWVkIGluIFczQy4KLQotICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0g
ICAgICAgIChld2tfdmlld19tb2RlX3NldCk6Ci0gICAgICAgIChld2tfdmlld19tb2RlX2dldCk6
Ci0gICAgICAgICogZXdrL2V3a192aWV3Lmg6Ci0KLTIwMTEtMDYtMjkgIE1pY2hhbCBQYWt1bGEg
dmVsIFJ1dGthICA8bS5wYWt1bGFAc2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkg
S2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCi0KLSAgICAgICAgW0VGTF0gQWRkIGV3a19mcmFt
ZV90ZXh0X3NlbGVjdGlvbl90eXBlX2dldCBmdW5jdGlvbgotICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjM0NjIKLQotICAgICAgICBBZGQgYSBtZXRob2Qg
dG8gb2J0YWluIGN1cnJlbnQgV2ViQ29yZTo6VmlzaWJsZVNlbGVjdGlvbiB0ZXh0Ci0gICAgICAg
IHNlbGVjdGlvbiB0eXBlLgotCi0gICAgICAgICogZXdrL2V3a19mcmFtZS5jcHA6Ci0gICAgICAg
IChld2tfZnJhbWVfdGV4dF9zZWxlY3Rpb25fdHlwZV9nZXQpOgotICAgICAgICAqIGV3ay9ld2tf
ZnJhbWUuaDoKLQotMjAxMS0wNi0yOCAgTWljaGFsIFBha3VsYSB2ZWwgUnV0a2EgIDxtLnBha3Vs
YUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlz
dGlhbnNlbi4KLQotICAgICAgICBbRUZMXSBJbXBsZW1lbnQgRWRpdG9yQ2xpZW50RWZsOjpyZXNw
b25kVG9DaGFuZ2VkU2VsZWN0aW9uCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD02MzUyNQotCi0gICAgICAgIFRoaXMgcGF0Y2g6Ci0gICAgICAgIC0gaW1w
bGVtZW50cyBFZGl0b3JDbGllbnRFZmw6OnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24sCi0gICAg
ICAgIC0gYWRkcyBld2tfZnJhbWVfZWRpdG9yX2NsaWVudF9zZWxlY3Rpb25fY2hhbmdlZCBhbmQK
LSAgICAgICAgLSBld2tfdmlld19lZGl0b3JfY2xpZW50X3NlbGVjdGlvbl9jaGFuZ2VkCi0KLSAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuY3BwOgotICAgICAgICAoV2Vi
Q29yZTo6RWRpdG9yQ2xpZW50RWZsOjpyZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uKToKLSAgICAg
ICAgKiBld2svZXdrX2ZyYW1lLmNwcDoKLSAgICAgICAgKGV3a19mcmFtZV9lZGl0b3JfY2xpZW50
X3NlbGVjdGlvbl9jaGFuZ2VkKToKLSAgICAgICAgKiBld2svZXdrX3ByaXZhdGUuaDoKLSAgICAg
ICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoZXdrX3ZpZXdfZWRpdG9yX2NsaWVudF9z
ZWxlY3Rpb25fY2hhbmdlZCk6Ci0KLTIwMTEtMDYtMjggIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5n
LmtpbUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBLZW50IFRhbXVyYS4KLQot
ICAgICAgICBbRUZMXSBDaGFuZ2UgcGVybWlzc2lvbiBvZiBzb21lIGV3ayBmaWxlcy4KLSAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYzNTE3Ci0KLSAgICAg
ICAgQ2hhbmdlIHNvbWUgZmlsZSdzIHBlcm1pc3Npb24gc2FtZSB3aXRoIG90aGVyIGZpbGUncy4K
LQotICAgICAgICAqIGV3ay9ld2tfdGlsZWRfYmFja2luZ19zdG9yZS5jOgotICAgICAgICAqIGV3
ay9ld2tfdGlsZWRfbW9kZWwuYzoKLSAgICAgICAgKiBld2svZXdrX3ZpZXdfc2luZ2xlLmM6Ci0K
LTIwMTEtMDYtMjcgIFJ5dWFuIENob2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgotCi0gICAg
ICAgIFJldmlld2VkIGJ5IEFudG9uaW8gR29tZXMuCi0KLSAgICAgICAgW0VGTF0gUmVtb3ZlIHBy
aXZhdGUgaGVhZGVyIGZpbGVzIGZyb20gRVdlYktpdF9IRUFERVJTLgotICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjM0NDEKLQotICAgICAgICBSZW1vdmUg
ZXdrX3RpbGVkX3ByaXZhdGUuaCwgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUuaCwgZXdrX3RpbGVk
X21hdHJpeC5oLAotICAgICAgICBld2tfdGlsZWRfbW9kZWwuaCBhbmQgY2hlY2sgV1RGX1VTRV9T
T1VQIHRvIHJlbW92ZSBld2tfYXV0aF9zb3VwLmguCi0KLSAgICAgICAgKiBDTWFrZUxpc3RzRWZs
LnR4dDoKLQotMjAxMS0wNi0yNyAgSm9uZ3Nlb2sgWWFuZyAgPGpzNDUueWFuZ0BzYW1zdW5nLmNv
bT4KLQotICAgICAgICBSZXZpZXdlZCBieSBLZW50IFRhbXVyYS4KLQotICAgICAgICBbRUZMXSBV
c2UgYWNjZXB0IGF0dHJpYnV0ZSB3aGVuIGV4ZWN1dGluZyB0aGUgZmlsZSBwaWNrZXIgZm9yIGlu
cHV0IGVsZW1lbnQKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTYzMDYzCi0KLSAgICAgICAgVGhpcyBwYXRjaDoKLSAgICAgICAgLSByZW1vdmUgdGhlIGFy
Z3VtZW50ICJzdWdnZXN0ZWRfZmlsZW5hbWVzIiBmcm9tIGV3a192aWV3X3J1bl9vcGVuX3BhbmVs
Ci0gICAgICAgIC0gYWRkIHRoZSBhcmd1bWVudCAiYWNjZXB0IiB0byBld2tfdmlld19ydW5fb3Bl
bl9wYW5lbAotICAgICAgICAtIGdldCB0aGUgYWNjZXB0IGF0dHJpYnV0ZSBhbmQgcGFzcyB0byBl
d2tfdmlld19ydW5fb3Blbl9wYW5lbCB3aXRoaW4gcnVuT3BlblBhbmVsCi0KLSAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29yZTo6Q2hy
b21lQ2xpZW50RWZsOjpydW5PcGVuUGFuZWwpOgotICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6
Ci0gICAgICAgIChld2tfdmlld19ydW5fb3Blbl9wYW5lbCk6Ci0gICAgICAgICogZXdrL2V3a192
aWV3Lmg6Ci0KLTIwMTEtMDYtMjcgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5n
LmNvbT4KLQotICAgICAgICBVbnJldmlld2VkLiBGaXggc3R5bGUgZXJyb3IuCi0KLSAgICAgICAg
UmVtb3ZlIG1lYW5pbmdsZXNzIHBhcmFtZXRlciBmcm9tIFdlYkNvcmVTdXBwb3J0J3MgaGVhZGVy
IGZpbGVzLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmg6Ci0g
ICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRFZmw6OnNjcm9sbFJlY3RJbnRvVmlldyk6Ci0g
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHJhZ0NsaWVudEVmbC5oOgotICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmg6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFt
ZUxvYWRlckNsaWVudEVmbDo6c2V0V2ViRnJhbWUpOgotCi0yMDExLTA2LTI3ICBLd2FuZ0h5dWsg
S2ltICA8aHl1a2kua2ltQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEtlbm5l
dGggUm9oZGUgQ2hyaXN0aWFuc2VuLgotCi0gICAgICAgIFtFRkxdIFJlbW92ZSBld2tfdGlsZV9t
YXRyaXhfdXBkYXRlc19wcm9jZXNzKCkgY2FsbCBmcm9tIF9ld2tfdGlsZWRfYmFja2luZ19zdG9y
ZV9pdGVtX3Byb2Nlc3NfaWRsZXJfY2IoKS4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTYyOTYzCi0KLSAgICAgICAgQXMgcmVwYWludF9wcm9jZXNzIG9u
IGV3a192aWV3X3RpbGVkIGFscmVhZHkgdGFrZXMgY2FyZSBvZiBkaXJ0eSBhcmVhIGluIHZpc2li
bGUgYXJlYQotICAgICAgICBhbmQgaW4gb3JkZXIgdG8gbGV0IHByZS1yZW5kZXIgd29yayBtb3Jl
IGVmZmljaWVudGx5LAotICAgICAgICBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfaXRlbV9wcm9j
ZXNzX2lkbGVyX2NiKCkgYmV0dGVyIG5vdCBjYWxsIGV3a190aWxlX21hdHJpeF91cGRhdGVzX3By
b2Nlc3MoKS4KLQotICAgICAgICAqIGV3ay9ld2tfdGlsZWRfYmFja2luZ19zdG9yZS5jOgotICAg
ICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX2l0ZW1fcHJvY2Vzc19pZGxlcl9jYik6Ci0K
LTIwMTEtMDYtMjcgIEt3YW5nSHl1ayBLaW0gIDxoeXVraS5raW1Ac2Ftc3VuZy5jb20+Ci0KLSAg
ICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCi0KLSAgICAgICAg
W0VGTF0gUmVtb3ZlIGRlYWQgY29kZSByZWxhdGVkIHdpdGggRXdrX1RpbGVkX0JhY2tpbmdfU3Rv
cmVfSXRlbSdzIHVwZGF0ZSBmaWVsZC4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTYyOTY3Ci0KLSAgICAgICAgQXMgc29tZSBjb2RlIGRvIG5vdCBhZmZl
Y3QgYW55IGxvZ2ljYWwgZmxvdyBvZiB0aWxlZCBiYWNraW5nIHN0b3JlIGV4Y2VwdCBjb25kaXRp
b24gY2hlY2ssCi0gICAgICAgIEkgd291bGQgbGlrZSB0byBjbGVhbiBkZWFkIGNvZGUgcmVsYXRl
ZCB3aXRoIEV3a19UaWxlZF9CYWNraW5nX1N0b3JlX0l0ZW0ncyB1cGRhdGUgZmllbGQKLSAgICAg
ICAgYW5kIEV3a19UaWxlZF9CYWNraW5nX1N0b3JlX0RhdGEncyBxdWV1ZSBmaWVsZCAKLQotICAg
ICAgICAqIGV3ay9ld2tfdGlsZWRfYmFja2luZ19zdG9yZS5jOgotICAgICAgICAoX2V3a190aWxl
ZF9iYWNraW5nX3N0b3JlX2l0ZW1fcHJvY2Vzc19pZGxlcl9jYik6Ci0gICAgICAgIChfZXdrX3Rp
bGVkX2JhY2tpbmdfc3RvcmVfaXRlbV9maWxsKToKLSAgICAgICAgKF9ld2tfdGlsZWRfYmFja2lu
Z19zdG9yZV9pdGVtX2FkZCk6Ci0gICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfaXRl
bV9kZWwpOgotCi0yMDExLTA2LTI2ICBSeXVhbiBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNv
bT4KLQotICAgICAgICBSZXZpZXdlZCBieSBBbnRvbmlvIEdvbWVzLgotCi0gICAgICAgIFtFRkxd
IEZ1bmN0aW9ucyBuZWVkaW5nIEV3a19WaWV3X1ByaXZhdGVfRGF0YSBhcyBwYXJhbWV0ZXIgYXJl
IG5vdCBwYXJ0IG9mIHB1YmxpYyBBUEkuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02MjY4OAotCi0gICAgICAgIE1vdmUgZnVuY3Rpb25zIHdoaWNoIHVz
ZSBFd2tfVmlld19Qcml2YXRlX0RhdGEgYW5kIG1heSBub3QgYmUgcmVxdWlyZWQgYnkKLSAgICAg
ICAgYXBwbGljYXRpb25zIHRvIGV3a19wcml2YXRlLmguCi0KLSAgICAgICAgKiBld2svZXdrX3By
aXZhdGUuaDoKLSAgICAgICAgKiBld2svZXdrX3ZpZXcuaDoKLQotMjAxMS0wNi0yNCAgUnl1YW4g
Q2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQW50
b25pbyBHb21lcy4KLQotICAgICAgICBbRUZMXSBSZW1vdmUgZXdrX2ZyYW1lX3RoZW1lX2dldC9z
ZXQuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MzM3
MAotCi0gICAgICAgIFJlbW92ZSBld2tfZnJhbWVfdGhlbWVfZ2V0L3NldCB0byBhdm9pZCBjb25m
dXNpb24uCi0gICAgICAgIFNldHRpbmcgdGhlbWUgb24gZWFjaCBmcmFtZSBpcyBtZWFuaW5nbGVz
cyBhbmQgZXdrX3ZpZXdfdGhqZW1lX3NldCBjYW4KLSAgICAgICAgZG8gc2FtZSB0aGluZy4KLQot
ICAgICAgICAqIGV3ay9ld2tfZnJhbWUuY3BwOgotICAgICAgICAqIGV3ay9ld2tfZnJhbWUuaDoK
LSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoZXdrX3ZpZXdfdGhlbWVfc2V0
KToKLQotMjAxMS0wNi0yNCAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29t
PgotCi0gICAgICAgIFJldmlld2VkIGJ5IEtlbnQgVGFtdXJhLgotCi0gICAgICAgIFtFRkxdIEFk
ZCBld2tfYXV0aC5oIHRvIEVXZWJLaXQuaAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NjMzMTEKLQotICAgICAgICAqIGV3ay9FV2ViS2l0Lmg6IEFkZCBl
d2tfYXV0aC5oCi0KLTIwMTEtMDYtMjMgIFJ5dWFuIENob2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcu
Y29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEFudG9uaW8gR29tZXMuCi0KLSAgICAgICAgW0VG
TF0gQ3Jhc2ggd2hlbiBydW5uaW5nIEVXZWJMYXVuY2hlcgotICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjI2MjgKLQotICAgICAgICBDYWxsIERvY3VtZW50
V3JpdGVyOjpzZXRFbmNvZGluZyB3aGVuIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpmaW5pc2hlZExv
YWRpbmcoKQotICAgICAgICBsaWtlIG90aGVyIHBvcnRzLgotICAgICAgICBJdCB3aWxsIGNsZWFy
IHBhcnNlciBub3QgdG8gY3Jhc2ggd2hlbiBjYWxsZWQgZW5kSWZOb3RMb2FkaW5nTWFpblJlc291
cmNlKCkuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5j
cHA6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6RnJhbWVMb2FkZXJD
bGllbnRFZmwpOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6Om1ha2VS
ZXByZXNlbnRhdGlvbik6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6
cmV2ZXJ0VG9Qcm92aXNpb25hbFN0YXRlKToKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVy
Q2xpZW50RWZsOjpmaW5pc2hlZExvYWRpbmcpOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50RWZsLmg6Ci0KLTIwMTEtMDYtMjIgIFJ5dWFuIENob2kgIDxyeXVhbi5j
aG9pQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEFudG9uaW8gR29tZXMuCi0K
LSAgICAgICAgW0VGTF0gQWRkIGFuIG9wdGlvbiB0byBlbmFibGUgRGV2aWNlIE9yaWVudGF0aW9u
IEV2ZW50LgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NjMxMjAKLQotICAgICAgICAqIENNYWtlTGlzdHNFZmwudHh0OiBBZGQgZmlsZXMgdG8gYnVpbGQg
d2l0aCBFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OLgotICAgICAgICAqIGV3ay9ld2tfdmlldy5j
cHA6Ci0gICAgICAgIChfZXdrX3ZpZXdfcHJpdl9uZXcpOiBDcmVhdGUgRGV2aWNlT3JpZW50YXRp
b25DbGllbnRFZmwgYW5kIERldmljZU1vdGlvbkNsaWVudEVmbC4KLQotMjAxMS0wNi0yMiAgUnl1
YW4gQ2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkg
QW50b25pbyBHb21lcy4KLQotICAgICAgICBbRUZMXSBBZGQgRGV2aWNlT3JpZW50YXRpb25DbGll
bnRFZmwgYW5kIERldmljZU1vdGlvbkNsaWVudEVmbC4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYzMTI1Ci0KLSAgICAgICAgQWRkIGR1bW15IGZpbGVz
IHRvIGJ1aWxkIHdpdGggRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTi4KLQotICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L0RldmljZU1vdGlvbkNsaWVudEVmbC5jcHA6IEFkZGVkLgotICAgICAgICAo
V2ViQ29yZTo6RGV2aWNlTW90aW9uQ2xpZW50RWZsOjpEZXZpY2VNb3Rpb25DbGllbnRFZmwpOgot
ICAgICAgICAoV2ViQ29yZTo6RGV2aWNlTW90aW9uQ2xpZW50RWZsOjp+RGV2aWNlTW90aW9uQ2xp
ZW50RWZsKToKLSAgICAgICAgKFdlYkNvcmU6OkRldmljZU1vdGlvbkNsaWVudEVmbDo6ZGV2aWNl
TW90aW9uQ29udHJvbGxlckRlc3Ryb3llZCk6Ci0gICAgICAgIChXZWJDb3JlOjpEZXZpY2VNb3Rp
b25DbGllbnRFZmw6OnNldENvbnRyb2xsZXIpOgotICAgICAgICAoV2ViQ29yZTo6RGV2aWNlTW90
aW9uQ2xpZW50RWZsOjpzdGFydFVwZGF0aW5nKToKLSAgICAgICAgKFdlYkNvcmU6OkRldmljZU1v
dGlvbkNsaWVudEVmbDo6c3RvcFVwZGF0aW5nKToKLSAgICAgICAgKFdlYkNvcmU6OkRldmljZU1v
dGlvbkNsaWVudEVmbDo6Y3VycmVudERldmljZU1vdGlvbik6Ci0gICAgICAgICogV2ViQ29yZVN1
cHBvcnQvRGV2aWNlTW90aW9uQ2xpZW50RWZsLmg6IEFkZGVkLgotICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0RldmljZU9yaWVudGF0aW9uQ2xpZW50RWZsLmNwcDogQWRkZWQuCi0gICAgICAgIChX
ZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbkNsaWVudEVmbDo6RGV2aWNlT3JpZW50YXRpb25DbGll
bnRFZmwpOgotICAgICAgICAoV2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb25DbGllbnRFZmw6On5E
ZXZpY2VPcmllbnRhdGlvbkNsaWVudEVmbCk6Ci0gICAgICAgIChXZWJDb3JlOjpEZXZpY2VPcmll
bnRhdGlvbkNsaWVudEVmbDo6ZGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyRGVzdHJveWVkKToK
LSAgICAgICAgKFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uQ2xpZW50RWZsOjpzZXRDb250cm9s
bGVyKToKLSAgICAgICAgKFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uQ2xpZW50RWZsOjpzdGFy
dFVwZGF0aW5nKToKLSAgICAgICAgKFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uQ2xpZW50RWZs
OjpzdG9wVXBkYXRpbmcpOgotICAgICAgICAoV2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb25DbGll
bnRFZmw6Omxhc3RPcmllbnRhdGlvbik6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRGV2aWNl
T3JpZW50YXRpb25DbGllbnRFZmwuaDogQWRkZWQuCi0KLTIwMTEtMDYtMjAgIERpbWl0cmkgR2xh
emtvdiAgPGRnbGF6a292QGNocm9taXVtLm9yZz4KLQotICAgICAgICBSZXZpZXdlZCBieSBLZW50
IFRhbXVyYS4KLQotICAgICAgICBGaWxlQ2hvb3NlciBzaG91bGQgYmUgb25seSBjcmVhdGVkIHdo
ZW4gd2UgbmVlZCB0byBjaG9vc2UgZmlsZXMuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD02MzAzOQotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hy
b21lQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEVmbDo6cnVu
T3BlblBhbmVsKTogQ2hhbmdlZCB0byB1c2Ugc2V0dGluZ3MuCi0KLTIwMTEtMDYtMjAgIEd5dXlv
dW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBVbnJldmlld2Vk
LiBGaXggc3R5bGUgZXJyb3IuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGll
bnRFZmwuaDoKLSAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEVmbDo6cmVxdWVzdENoZWNr
aW5nT2ZTdHJpbmcpOgotCi0yMDExLTA2LTIwICBSeXVhbiBDaG9pICA8cnl1YW4uY2hvaUBzYW1z
dW5nLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBBbnRvbmlvIEdvbWVzLgotCi0gICAgICAg
IFtFRkxdIENocm9tZUNsaWVudEVmbCBkb2Vzbid0IG5lZWQgdG8gY2hlY2sgd2hldGhlciBtX3Zp
ZXcgaXMgbnVsbC4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTYyOTc4Ci0KLSAgICAgICAgUmVtb3ZlIHVubmVjZXNzYXJ5IGNoZWNrIHJvdXRpbmVzIG9m
IG1fdmlldyBiZWNhdXNlIENocm9tZUNsaWVudEVmbCBoYXZlCi0gICAgICAgIHZhbGlkIG1fdmll
dyBhbHdheXMuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3Bw
OgotICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZsOjpDaHJvbWVDbGllbnRFZmwpOiBB
ZGQgQVNTRVJUKG1fdmlldykKLSAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEVmbDo6d2lu
ZG93UmVjdCk6Ci0gICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRFZmw6OnNldFdpbmRvd1Jl
Y3QpOgotICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZsOjpwYWdlUmVjdCk6Ci0KLTIw
MTEtMDYtMjAgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+Ci0KLSAgICAgICAgRUZM
IGJ1aWxkIGZpeCBhZnRlciByODkyOTMuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0
b3JDbGllbnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50RWZsOjpoYW5k
bGVFZGl0aW5nS2V5Ym9hcmRFdmVudCk6Ci0KLTIwMTEtMDYtMTggIERpbWl0cmkgR2xhemtvdiAg
PGRnbGF6a292QGNocm9taXVtLm9yZz4KLQotICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxl
ci4KLQotICAgICAgICBTZXBhcmF0ZSBjb25jZXJucyBvZiBsb2FkaW5nIGZpbGUgaWNvbnMgYW5k
IGNob29zaW5nIGZpbGVzLgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NjI5MzEKLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVm
bC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRFZmw6OmxvYWRJY29uRm9yRmls
ZXMpOiBSZW5hbWVkLgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5o
OgotCi0yMDExLTA2LTE1ICBHcnplZ29yeiBDemFqa293c2tpICA8Zy5jemFqa293c2tpQHNhbXN1
bmcuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEFudG9uaW8gR29tZXMuCi0KLSAgICAgICAg
W0VGTF0gRml4IGFuZCB1cGRhdGUgZG94eWdlbiBkb2N1bWVudGF0aW9uIGZvciBld2tfZnJhbWUu
Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MjUzMwot
Ci0gICAgICAgIFRoaXMgcGF0Y2g6Ci0gICAgICAgICAtIGZpeGVzIG1ldGhvZCBkZXNjcmlwdGlv
bnMsCi0gICAgICAgICAtIGFkZHMgYnJpZWZzIGZvciBzdHJ1Y3R1cmUgYW5kIHR5cGRlZiwKLSAg
ICAgICAgIC0gcmVwbGFjZXMgTlVMTCB0byAwIGluIGRveHlnZW4gZG9jdW1lbnRhdGlvbiAod2Vi
a2l0J3Mgc3R5bGUgcmVxdWlyZWQgaXQpLAotICAgICAgICAgLSByZW1vdmVzIGRvdHMgZnJvbSB0
aGUgZW5kIG9mIHBhcmFtcyBhbmQgcmV0dXJuIGRlc2NyaXB0aW9uIChzZWUgRUZMJ3MgZG9jdW1l
bnRhdGlvbiksCi0gICAgICAgICAtIG1vdmVzIGluY2x1ZGVzIGFuZCBkZWZpbmVzIGJlbG93IGEg
YnJpZWYgb2YgZXdrX2ZyYW1lLmgKLSAgICAgICAgIC0gbW92ZXMgaW50ZXJuYWwgbWV0aG9kcyB0
byB0aGUgZW5kIG9mIGV3a19mcmFtZS5jcHAuCi0KLSAgICAgICAgKiBld2svZXdrX2ZyYW1lLmNw
cDoKLSAgICAgICAgKGV3a19mcmFtZV9hZGQpOgotICAgICAgICAqIGV3ay9ld2tfZnJhbWUuaDoK
LQotMjAxMS0wNi0xNSAgS2FtaWwgQmxhbmsgIDxrLmJsYW5rQHNhbXN1bmcuY29tPgotCi0gICAg
ICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgotCi0gICAgICAgIFtF
RkxdIFNvdXAgYXV0aGVudGljYXRpb24gZmVhdHVyZSBpbXBsZW1lbnRhdGlvbi4KLSAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU0NzUyCi0KLSAgICAgICAg
VGhpcyBpbXBsZW1lbnRhdGlvbiBpcyBiYXNlZCBvbiBHVEsgaW1wbGVtZW50YXRpb24uCi0gICAg
ICAgIER1cmluZyBld2sgaW5pdGlhbGl6YXRpb24gU291cFNlc3Npb25GZWF0dXJlIGlzIGFkZGVk
IHdoaWNoIHByb3ZpZGVzIHBvc3NpYmlsaXR5IHRvIGhhbmRsZSBIVFRQIGJhc2ljIGF1dGguCi0K
LSAgICAgICAgVG8gc3VwcG9ydCBhdXRoZW50aWNhdGlvbiB3ZSBoYXZlIHRvIHNldCBmdW5jdGlv
biAoY2FsbGJhY2spIHZpYSBld2tfYXV0aF9zaG93X2RpYWxvZ19jYWxsYmFja19zZXQoKQotICAg
ICAgICB3aGljaCB3aWxsIGJlIHJlc3BvbnNpYmxlIGZvciBzZXNzaW9uIGF1dGhlbnRpY2F0aW9u
LgotICAgICAgICBJZiBjYWxsYmFjayBpcyBzZXQgYW5kIGF1dGhlbnRpY2F0aW9uIHJlcXVpcmVk
IC0gd2Via2l0IHBhdXNlcyBzb3VwIG1lc3NhZ2UsIGNhbGxzIHByZXZpb3VzbHkgc2V0IGNhbGxi
YWNrCi0gICAgICAgIGFuZCB3YWl0cyBmb3IgYXV0aGVudGljYXRpb24gZGF0YSAodXNlcm5hbWUv
cGFzc3dvcmQpIHdoaWNoIHNob3VsZCBiZSBwYXNzZWQgYnkgZXdrX2F1dGhfY3JlZGVudGlhbHNf
c2V0KCkuCi0KLSAgICAgICAgKiBDTWFrZUxpc3RzRWZsLnR4dDoKLSAgICAgICAgKiBld2svZXdr
X2F1dGguY3BwOiBBZGRlZC4KLSAgICAgICAgKGV3a19hdXRoX3Nob3dfZGlhbG9nX2NhbGxiYWNr
X3NldCk6IFNldHRpbmcgY2FsbGJhY2sgd2hpY2ggc2hvdWxkIGJlIGNhbGxlZCB3aGVuIGF1dGhl
bnRpY2F0aW9uIGlzIHJlcXVpcmVkLgotICAgICAgICAoZXdrX2F1dGhfY3JlZGVudGlhbHNfc2V0
KTogUGFzc2luZyBhdXRoZW50aWNhdGlvbiBkYXRhLgotICAgICAgICAqIGV3ay9ld2tfYXV0aC5o
OiBBZGRlZC4gQXV0aGVudGljYXRpb24gQVBJLgotICAgICAgICAqIGV3ay9ld2tfYXV0aF9zb3Vw
LmNwcDogQWRkZWQuIFNvdXAgYXV0aGVudGljYXRpb24gaW1wbGVtZW50YXRpb24uCi0gICAgICAg
IChfRXdrX0F1dGhfRGF0YTo6ZXdrX2F1dGhfc291cF9kaWFsb2dfY2xhc3NfaW5pdCk6Ci0gICAg
ICAgIChfRXdrX0F1dGhfRGF0YTo6ZXdrX2F1dGhfc291cF9kaWFsb2dfaW5pdCk6Ci0gICAgICAg
IChfRXdrX0F1dGhfRGF0YTo6ZXdrX2F1dGhfc291cF9kaWFsb2dfc2Vzc2lvbl9mZWF0dXJlX2lu
aXQpOgotICAgICAgICAoX0V3a19BdXRoX0RhdGE6OmV3a19hdXRoX3NvdXBfc2hvd19kaWFsb2df
Y2FsbGJhY2tfc2V0KToKLSAgICAgICAgKF9Fd2tfQXV0aF9EYXRhOjpld2tfYXV0aF9zb3VwX2Ny
ZWRlbnRpYWxzX3NldCk6Ci0gICAgICAgIChfRXdrX0F1dGhfRGF0YTo6c2Vzc2lvbl9hdXRoZW50
aWNhdGUpOgotICAgICAgICAoX0V3a19BdXRoX0RhdGE6OmZyZWVfYXV0aF9kYXRhKToKLSAgICAg
ICAgKF9Fd2tfQXV0aF9EYXRhOjphdHRhY2gpOgotICAgICAgICAoX0V3a19BdXRoX0RhdGE6OmRl
dGFjaCk6Ci0gICAgICAgICogZXdrL2V3a19hdXRoX3NvdXAuaDogQWRkZWQuCi0gICAgICAgICog
ZXdrL2V3a19tYWluLmNwcDoKLSAgICAgICAgKF9ld2tfaW5pdF9ib2R5KTogU291cFNlc3Npb25G
ZWF0dXJlIHJlc3BvbnNpYmxlIGZvciBhdXRoZW50aWNhdGlvbiBhZGRlZCB0byBTb3VwU2Vzc2lv
bi4KLQotMjAxMS0wNi0xNSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5j
b20+Ci0KLSAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjg4NzIzLgotICAgICAgICBo
dHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC84ODcyMwotICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjI3MjYKLQotICAgICAgICBTdGFjayBjYW4g
YmUgZW1wdHksIHNvIGl0IG5lZWRzIHRvIGJlIGNoZWNrZWQgYmVmb3JlIGFzCi0gICAgICAgIHBv
aW50ZWQgb3V0IGluIHRoZSBjb21tZW50cyBvZiB0aGUgYnVnLiAoUmVxdWVzdGVkIGJ5IGRlbWFy
Y2hpCi0gICAgICAgIG9uICN3ZWJraXQpLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRp
dG9yQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEVmbDo6cmVn
aXN0ZXJDb21tYW5kRm9yVW5kbyk6Ci0gICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRFZmw6
OnJlZ2lzdGVyQ29tbWFuZEZvclJlZG8pOgotICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50
RWZsOjpjbGVhclVuZG9SZWRvT3BlcmF0aW9ucyk6Ci0gICAgICAgIChXZWJDb3JlOjpFZGl0b3JD
bGllbnRFZmw6OmNhblJlZG8pOgotICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50RWZsOjpy
ZWRvKToKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuaDoKLQotMjAx
MS0wNi0xMyAgTWljaGFsIFBha3VsYSB2ZWwgUnV0a2EgIDxtLnBha3VsYUBzYW1zdW5nLmNvbT4K
LQotICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KLQotICAgICAgICBbRUZMXSBJbnB1
dCBtZXRob2QgaGludHMgbm90IHVwZGF0ZWQgd2hpbGUgY2xpY2tpbmcgbm9uLWlucHV0IGZpZWxk
IGVkaXRhYmxlIGFyZWEKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTYyNTM5Ci0KLSAgICAgICAgVGhpcyBmaXhlcyBhIG1pbm9yIGJ1ZyB3aGVuIGlucHV0
IG1ldGhvZCBoaW50cyBhcmUgbm90IHVwZGF0ZWQgd2hpbGUgZm9jdXMgaXMgCi0gICAgICAgIGNo
YW5nZWQgZnJvbSBlZGl0YWJsZSBhcmVhIHdpdGggaW5wdXQgdGFncyB0byBvdGhlciB3aGljaCBh
cmUgZG9lcyBub3QgaGF2ZSBpbnB1dCAKLSAgICAgICAgdGFnIGkuZS4gdGV4dGFyZWEuCi0KLSAg
ICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoZXdrX3ZpZXdfaW5wdXRfbWV0aG9k
X3N0YXRlX3NldCk6Ci0KLTIwMTEtMDYtMTMgIEphZWh1biBMaW0gIDxsamFlaHVuLmxpbUBzYW1z
dW5nLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KLQotICAgICAgICBb
RUZMXSBTdXBwb3J0cyB0byBleGVjdXRlICJyZWRvIiBjb21tYW5kLgotICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjI1MzYKLQotICAgICAgICBJbXBsZW1l
bnRzIGJhc2ljIGZ1bmN0aW9ucyBmb3IgInJlZG8iIGNvbW1hbmQuCi0KLSAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29yZTo6RWRpdG9y
Q2xpZW50RWZsOjpyZWdpc3RlckNvbW1hbmRGb3JVbmRvKToKLSAgICAgICAgKFdlYkNvcmU6OkVk
aXRvckNsaWVudEVmbDo6cmVnaXN0ZXJDb21tYW5kRm9yUmVkbyk6Ci0gICAgICAgIChXZWJDb3Jl
OjpFZGl0b3JDbGllbnRFZmw6OmNsZWFyVW5kb1JlZG9PcGVyYXRpb25zKToKLSAgICAgICAgKFdl
YkNvcmU6OkVkaXRvckNsaWVudEVmbDo6Y2FuUmVkbyk6Ci0gICAgICAgIChXZWJDb3JlOjpFZGl0
b3JDbGllbnRFZmw6OnJlZG8pOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVu
dEVmbC5oOgotCi0yMDExLTA2LTEzICBHcnplZ29yeiBDemFqa293c2tpICA8Zy5jemFqa293c2tp
QHNhbXN1bmcuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgotCi0gICAg
ICAgIFtFRkxdIFJlbW92ZSBld2tfZnJhbWVfc2VsZWN0XyogZnVuY3Rpb25zIGZyb20gZXdrX2Zy
YW1lLmNwcAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NjIzNjUKLQotICAgICAgICBUaGVzZSBmdW5jdGlvbnMgZG8gbm90IGV4aXN0IGluIGFueSBwdWJs
aWMgaGVhZGVycyBhbmQKLSAgICAgICAgdGhleSBhcmUgbm90IHVzZWQgaW50ZXJuYWxseS4KLSAg
ICAgICAgTW9yZW92ZXIgZXdrX3ZpZXcgaGFzIHRoZSBzYW1lIGZ1bmN0aW9uYWxpdHkgYWRkZWQK
LSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYwNDM1Ci0K
LSAgICAgICAgKiBld2svZXdrX2ZyYW1lLmNwcDoKLQotMjAxMS0wNi0xMyAgUmFwaGFlbCBLdWJv
IGRhIENvc3RhICA8a3Vib0Bwcm9mdXNpb24ubW9iaT4KLQotICAgICAgICBSZXZpZXdlZCBieSBL
ZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KLQotICAgICAgICBbZWZsXSBEaXNhYmxlIHRpbGVk
IGJhY2tpbmcgc3RvcmUgZGVidWcgbWVzc2FnZXMgYnkgZGVmYXVsdC4KLSAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYxNzQ1Ci0KLSAgICAgICAgVGhlc2Ug
bWVzc2FnZXMgcG9sbHV0ZSB0aGUgb3V0cHV0IGFuZCBhcmUgb25seSB1c2VmdWwgdG8gcGVvcGxl
Ci0gICAgICAgIHdvcmtpbmcgb24gVEJTIGl0c2VsZi4gSXQgbWFrZXMgbW9yZSBzZW5zZSB0byBo
YXZlIHRoZW0gZGlzYWJsZWQgYnkKLSAgICAgICAgZGVmYXVsdC4KLQotICAgICAgICAqIGV3ay9l
d2tfdGlsZWRfYmFja2luZ19zdG9yZS5oOgotCi0yMDExLTA2LTEzICBLd2FuZ0h5dWsgS2ltICA8
aHl1a2kua2ltQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9o
ZGUgQ2hyaXN0aWFuc2VuLgotCi0gICAgICAgIFtFRkxdIGNoYW5nZSBvZiBjYWlyb19mb3JtYXRf
dCBjb3JyZXNwb25kaW5nIHRvIEVWQVNfQ09MT1JTUEFDRV9BUkdCODg4OCBjb2xvciBzcGFjZQot
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjI0NDggCi0g
Ci0gICAgICAgIFVzZSBDQUlST19GT1JNQVRfQVJHQjMyIGZvciBFV0sgYXMgcGl4bWFuIGRvZXMg
bm90IHN1cHBvcnQgdGhlIGZhc3QgcGF0aCBmb3IgY29udmVydGluZwotICAgICAgICBmcm9tIEFS
R0IzMiB0byBBR0IyNCB3aGVuIHVzaW5nIHNvdXJjZSBvdmVyIG9wZXJhdGlvbiBpbiBjb21iaW5h
dGlvbiB3aXRoIGEgYmlsaW5lYXIgZmlsdGVyCi0KLSAgICAgICAgKiBld2svZXdrX3RpbGVkX21v
ZGVsLmM6Ci0gICAgICAgIChld2tfdGlsZV9uZXcpOgotICAgICAgICAqIGV3ay9ld2tfdmlld19z
aW5nbGUuYzoKLSAgICAgICAgKF9ld2tfdmlld19zaW5nbGVfc21hcnRfcmVwYWludHNfcHJvY2Vz
cyk6Ci0KLTIwMTEtMDYtMTIgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KLQotICAg
ICAgICBSZXZpZXdlZCBieSBBbGV4ZXkgUHJvc2t1cnlha292LgotCi0gICAgICAgIFJlbmFtZSBG
cmFtZUxvYWRlckNsaWVudDo6aW50ZXJydXB0Rm9yUG9saWN5Q2hhbmdlRXJyb3IgdG8gdXNlIHRo
ZSBwYXN0IHRlbnNlCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02MjUxNgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRF
ZmwuY3BwOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmludGVycnVw
dGVkRm9yUG9saWN5Q2hhbmdlRXJyb3IpOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50RWZsLmg6Ci0KLTIwMTEtMDYtMTAgIEt3YW5nSHl1ayBLaW0gIDxoeXVraS5r
aW1Ac2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJp
c3RpYW5zZW4uCi0KLSAgICAgICAgW0VGTF1hZGQgaW1hZ2UgY29udGVudCBoaW50IGluZm9ybWF0
aW9uIGZvciB0aWxlIGltYWdlIG9iamVjdCB3aGVuIGl0IGlzIGNyZWF0ZWQKLSAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYyNDM2Ci0KLSAgICAgICAgV2hl
biBhcHBsaWNhdGlvbiBpcyB1c2luZyBvcGVuZ2xfeDExIEVjb3JlX0V2YXMsIGl0IGNhbiBiZSB3
b3JraW5nIGFzIGdsIHRleHR1cmUuCi0gICAgICAgIEluIG9yZGVyIHRvIHN1cHBvcnQgdGhpcyBl
bmhhbmNlZCBmZWF0dXJlLCBpbWFnZSBjb250ZW50IGhpbnQgaW5mb3JtYXRpb24gbXVzdCBiZSAK
LSAgICAgICAgc3BlY2lmaWVkIGFzIEVWQVNfSU1BR0VfQ09OVEVOVF9ISU5UX0RZTkFNSUMKLQot
ICAgICAgICAqIGV3ay9ld2tfdGlsZWRfbW9kZWwuYzoKLSAgICAgICAgKGV3a190aWxlX25ldyk6
Ci0KLTIwMTEtMDYtMTAgIEdyemVnb3J6IEN6YWprb3dza2kgIDxnLmN6YWprb3dza2lAc2Ftc3Vu
Zy5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4u
Ci0KLSAgICAgICAgW0VGTF0gUmVwYWludCB0aHJvdHRsaW5nIEFQSS4KLSAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2MTc4Ci0KLSAgICAgICAgVGhlIEFQ
SSBhbGxvd3MgdG8gc2V0IHRoZSB2YWx1ZXMgZm9yIHJlcGFpbnQgdGhyb3R0bGluZy4KLSAgICAg
ICAgSXQgc2hvdWxkIGVuc3VyZSBkaXNwbGF5aW5nIGEgY29udGVudCB3aXRoIG1hbnkgY3NzL2dp
ZiBhbmltYXRpb25zLgotCi0gICAgICAgICogZXdrL2V3a19zZXR0aW5ncy5jcHA6Ci0gICAgICAg
IChld2tfc2V0dGluZ3NfcmVwYWludF90aHJvdHRsaW5nX3NldCk6Ci0gICAgICAgICogZXdrL2V3
a19zZXR0aW5ncy5oOgotCi0yMDExLTA2LTEwICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1A
c2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgS2VudCBUYW11cmEuCi0KLSAgICAg
ICAgW0VGTF0gVXNlIG1ha2VTdHJpbmcoKSB3aGVuIGdldHRpbmcgb3MgdmVyc2lvbgotICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjI0MzQKLQotICAgICAg
ICBXaGVuIG9zIHZlcnNpb24gc3RyaW5nIGlzIGNyZWF0ZWQsIHRvIHVzZSBtYWtlU3RyaW5nKCkg
aXMgYmV0dGVyIHRoYW4KLSAgICAgICAgU3RyaW5nIG9wZXJhdGlvbi4KLQotICAgICAgICAqIGV3
ay9ld2tfc2V0dGluZ3MuY3BwOgotICAgICAgICAoX2V3a19zZXR0aW5nc193ZWJraXRfb3NfdmVy
c2lvbl9nZXQpOgotCi0yMDExLTA2LTA5ICBIeW93b24gS2ltICA8aHcxMDA4LmtpbUBzYW1zdW5n
LmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBBbnRvbmlvIEdvbWVzLgotCi0gICAgICAgIFtF
RkxdIE1ha2UgYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcgYnVpbGQgaW4gV2Via2l0LUVGTAotICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjIzNjEKLQotICAg
ICAgICBBZGQgZnVuY3Rpb25zIGZvciBhY2NlbGVyYXRlZCBjb21wb3NpdGluZyB0byBDaHJvbWVD
bGllbnRFZmwuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3Bw
OgotICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZsOjphdHRhY2hSb290R3JhcGhpY3NM
YXllcik6Ci0gICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRFZmw6OnNldE5lZWRzT25lU2hv
dERyYXdpbmdTeW5jaHJvbml6YXRpb24pOgotICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50
RWZsOjpzY2hlZHVsZUNvbXBvc2l0aW5nTGF5ZXJTeW5jKToKLSAgICAgICAgKFdlYkNvcmU6OkNo
cm9tZUNsaWVudEVmbDo6YWxsb3dlZENvbXBvc2l0aW5nVHJpZ2dlcnMpOgotICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oOgotCi0yMDExLTA1LTMwICBSYXBoYWVsIEt1
Ym8gZGEgQ29zdGEgIDxrdWJvQHByb2Z1c2lvbi5tb2JpPgotCi0gICAgICAgIFJldmlld2VkIGJ5
IEJyZW50IEZ1bGdoYW0uCi0KLSAgICAgICAgW2VmbF0gRG8gbm90IGVuYWJsZSB0aGUgZW5jb2Rp
bmcgZGV0ZWN0b3IgYnkgZGVmYXVsdC4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTYxNzQ0Ci0KLSAgICAgICAgVGhpcyBzaG91bGQgbWF0Y2ggdGhlIGJl
aGF2aW91ciBvZiBvdGhlciBwb3J0cyBtb3JlIGNsb3NlbHksIGFuZCBtYWtlcwotICAgICAgICBh
dCBsZWFzdCBkb20veGh0bWwvbGV2ZWwzL2NvcmUvZG9jdW1lbnRnZXRpbnB1dGVuY29kaW5nMDEu
eGh0bWwgcGFzcy4KLQotICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChfZXdr
X3ZpZXdfcHJpdl9uZXcpOgotCi0yMDExLTA2LTA4ICBKYWVodW4gTGltICA8bGphZWh1bi5saW1A
c2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21lcy4KLQotICAg
ICAgICBbRUZMXSBJbXBsZW1lbnRzICJ1bmRvIiBjb21tYW5kIGV4ZWN1dGlvbgotICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjIyMDEKLQotICAgICAgICBT
dXBwb3J0cyB0byBleGVjdXRlICJVbmRvIiBjb21tYW5kLgotCi0gICAgICAgICogV2ViQ29yZVN1
cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVu
dEVmbDo6cmVnaXN0ZXJDb21tYW5kRm9yVW5kbyk6Ci0gICAgICAgIChXZWJDb3JlOjpFZGl0b3JD
bGllbnRFZmw6OmNsZWFyVW5kb1JlZG9PcGVyYXRpb25zKToKLSAgICAgICAgKFdlYkNvcmU6OkVk
aXRvckNsaWVudEVmbDo6Y2FuVW5kbyk6Ci0gICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRF
Zmw6OnVuZG8pOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5oOgot
Ci0yMDExLTA2LTA4ICBFdW5taSBMZWUgIDxldW5taTE1LmxlZUBzYW1zdW5nLmNvbT4KLQotICAg
ICAgICBSZXZpZXdlZCBieSBBbnRvbmlvIEdvbWVzLgotCi0gICAgICAgIFtFRkxdIHJlbW92ZSBh
ZGp1c3RpbmcgY29kZXMgZm9yIHpvb20ncyBjZW50ZXIgY29vcmRpbmF0ZQotICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjIyNjYKLQotICAgICAgICBJdCBp
cyBwb3NzaWJsZSB0aGF0IHRoZSBhcHBsaWNhdGlvbiBkZXZlbG9wZXJzIGRvbid0IHdhbnQgdG8g
bGltaXQKLSAgICAgICAgem9vbSdzIGNlbnRlciBjb29yZGluYXRlIHRvIHRoZSB2aWV3cG9ydCBm
b3IgaW1wbGVtZW50aW5nIHNvbWUgZWZmZWN0cwotICAgICAgICBhbmQgY2VudGVyIGNvb3JkaW5h
dGUgb3V0IG9mIHRoZSB2aWV3cG9ydCBkb2VzIG5vdCBhZmZlY3QgdG8gdGhlIHpvb20gb3BlcmF0
aW9uLgotICAgICAgICBTbywgSXQgaXMgYmV0dGVyIHRvIGxlYXZlIHpvb20ncyBjZW50ZXIgY29v
cmRpbmF0ZSBmcmVlbHkuCi0KLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAo
ZXdrX3ZpZXdfem9vbV9zZXQpOgotICAgICAgICAoZXdrX3ZpZXdfem9vbV93ZWFrX3NldCk6Ci0K
LTIwMTEtMDYtMDcgIFJ5dWFuIENob2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgotCi0gICAg
ICAgIFJldmlld2VkIGJ5IEFudG9uaW8gR29tZXMuCi0KLSAgICAgICAgW0VGTF0gUmVtb3ZlIEpT
QyBkZXBlbmRlbmN5IGZyb20gV2ViS2l0L2VmbAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjIxNzMKLQotICAgICAgICBDaGFuZ2UgSlNDOjppbml0aWFs
aXplVGhyZWFkaW5nKCkgYW5kIFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWQoKSB0bwotICAgICAg
ICBXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjppbml0aWFsaXplVGhyZWFkaW5nKCkgd2hpY2gg
Y29udGFpbnMgdGhlc2UKLSAgICAgICAgZnVuY3Rpb25zIGFuZCByZW1vdmUgSlNDIGRlcGVuZGVu
Y3kgdG8gYnVpbGQgd2Via2l0L2VmbCB3aXRoIHY4LgotCi0gICAgICAgICogZXdrL2V3a19tYWlu
LmNwcDoKLSAgICAgICAgKF9ld2tfaW5pdF9ib2R5KToKLQotMjAxMS0wNi0wNiAgR3l1eW91bmcg
S2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFVucmV2aWV3ZWQgYnVp
bGQgZml4LgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwu
Y3BwOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OnN0YXJ0RG93bmxv
YWQpOiBDaGFuZ2UgcHJldHR5VVJMKCkgd2l0aCBzdHJpbmcoKS4KLQotMjAxMS0wNi0wNiAgR3l1
eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFJldmlld2Vk
IGJ5IEFudG9uaW8gR29tZXMuCi0KLSAgICAgICAgW0VGTF0gSW1wbGVtZW50IHN0YXJ0RG93bmxv
YWQoKSBpbiBGcmFtZUxvYWRlckNsaWVudEVmbAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjE5OTgKLQotICAgICAgICBJbXBsZW1lbnQgc3RhcnREb3du
bG9hZCgpIHdpdGggZG93bmxvYWQoKS4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50
RWZsOjpzdGFydERvd25sb2FkKToKLQotMjAxMS0wNi0wMyAgU2hlcmlmZiBCb3QgIDx3ZWJraXQu
cmV2aWV3LmJvdEBnbWFpbC5jb20+Ci0KLSAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQg
cjg4MDE0LgotICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC84ODAxNAot
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjIwMTcKLQot
ICAgICAgICBCcm9rZW4gRUZMIGJ1aWxkIChSZXF1ZXN0ZWQgYnkgdG9uaWtpdG9vIG9uICN3ZWJr
aXQpLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3Bw
OgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OnN0YXJ0RG93bmxvYWQp
OgotCi0yMDExLTA2LTAzICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+
Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21lcy4KLQotICAgICAgICBbRUZMXSBJ
bXBsZW1lbnQgc3RhcnREb3dubG9hZCgpIGluIEZyYW1lTG9hZGVyQ2xpZW50RWZsCi0gICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MTk5OAotCi0gICAgICAg
IEltcGxlbWVudCBzdGFydERvd25sb2FkKCkgd2l0aCBkb3dubG9hZCgpLgotCi0gICAgICAgICog
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OnN0YXJ0RG93bmxvYWQpOgotCi0yMDExLTA2LTAyICBH
eXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgUmV2aWV3
ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCi0KLSAgICAgICAgW0VGTF0gSW1wbGVt
ZW50IGhhc1dlYlZpZXcoKSBpbiBGcmFtZUxvYWRlckNsaWVudEVmbAotICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjE5MDUKLQotICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyQ2xpZW50RWZsOjpoYXNXZWJWaWV3KTogSW1wbGVtZW50IGhhc1dlYlZpZXcoKSBm
dW5jdGlvbi4KLQotMjAxMS0wNi0wMiAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3VuZy5j
b20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCi0K
LSAgICAgICAgW0VGTF0gTm8gbmVlZCB0byBpbnZhbGlkYXRlIGVtcHR5IGFyZWFzIGluIENocm9t
ZUNsaWVudEVmbDo6aW52YWxpZGF0ZUNvbnRlbnRzQW5kV2luZG93Ci0gICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MTkwMgotCi0gICAgICAgIEp1c3QgcmV0
dXJuIHRvIHJlZHVjZSB1bm5lY2Vzc2FyeSBjYWxscyB3aGVuIGludmFsaWRhdGVDb250ZW50c0Fu
ZFdpbmRvdwotICAgICAgICByZWNlaXZlZCBlbXB0eSBhcmVhLgotCi0gICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNs
aWVudEVmbDo6aW52YWxpZGF0ZUNvbnRlbnRzQW5kV2luZG93KToKLQotMjAxMS0wNi0wMSAgR3l1
eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFJldmlld2Vk
IGJ5IEtlbnQgVGFtdXJhLgotCi0gICAgICAgIFtFRkxdIEFkZCBudWxsIGNoZWNraW5nIGNvbmRp
dGlvbiB0byBFZGl0b3JDbGllbnRFZmwuY3BwCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD02MTg0NgotCi0gICAgICAgIEFkZCBudWxsIGNoZWNraW5nIGNv
bmRpdGlvbiBmb3IgdXNpbmcgc2V0dGluZ3MoKSBvZiBmcmFtZS4KLQotICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpFZGl0b3JD
bGllbnRFZmw6OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KToKLQotMjAxMS0wNS0zMSAgUmFw
aGFlbCBLdWJvIGRhIENvc3RhICA8a3Vib0Bwcm9mdXNpb24ubW9iaT4KLQotICAgICAgICBSZXZp
ZXdlZCBieSBBZGFtIEJhcnRoLgotCi0gICAgICAgIFtlZmxdIEFkZCBld2sgQVBJIHRvIGVuYWJs
ZS9kaXNhYmxlIGRldmVsb3BlciBleHRyYXMuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD02MTc0NgotCi0gICAgICAgIEFkZCBld2tfdmlld19zZXR0aW5n
X2VuYWJsZV9kZXZlbG9wZXJfZXh0cmFzX3tnZXQsc2V0fSwgd2hpY2ggaXMgdXNlZAotICAgICAg
ICB0byBlbmFibGUgb3IgZGlzYWJsZSBkZXZlbG9wZXIgZXh0cmFzIChjdXJyZW50bHksIHRoZSBX
ZWIgSW5zcGVjdG9yKQotICAgICAgICBpbiBhIGdpdmVuIHZpZXcuCi0KLSAgICAgICAgKiBld2sv
ZXdrX3ZpZXcuY3BwOgotICAgICAgICAoX2V3a192aWV3X3ByaXZfbmV3KToKLSAgICAgICAgKGV3
a192aWV3X3NldHRpbmdfZW5hYmxlX2RldmVsb3Blcl9leHRyYXNfZ2V0KToKLSAgICAgICAgKGV3
a192aWV3X3NldHRpbmdfZW5hYmxlX2RldmVsb3Blcl9leHRyYXNfc2V0KToKLSAgICAgICAgKiBl
d2svZXdrX3ZpZXcuaDoKLQotMjAxMS0wNS0zMCAgUmFwaGFlbCBLdWJvIGRhIENvc3RhICA8a3Vi
b0Bwcm9mdXNpb24ubW9iaT4KLQotICAgICAgICBSZXZpZXdlZCBieSBLZW50IFRhbXVyYS4KLQot
ICAgICAgICBbZWZsXSBGaXggX2V3a19mcmFtZV9jaGlsZHJlbl9pdGVyYXRvcl9uZXh0KCkuCi0g
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MTc0OQotCi0g
ICAgICAgIFRoZSBpdGVyYXRvciB3YXMgcmV0dXJuaW5nIGFsd2F5cyB0aGUgZmlyc3QgY2hpbGQs
IG1ha2luZyB0ZXN0cyBsaWtlCi0gICAgICAgIGZhc3QvaGlzdG9yeS9oaXN0b3J5LWJhY2staW5p
dGlhbC12cy1maW5hbC11cmwuaHRtbCB0byB0aW1lb3V0IGFuZAotICAgICAgICBldmVudHVhbGx5
IHJ1biBvdXQgb2YgbWVtb3J5LgotCi0gICAgICAgICogZXdrL2V3a19mcmFtZS5jcHA6Ci0gICAg
ICAgIChfZXdrX2ZyYW1lX2NoaWxkcmVuX2l0ZXJhdG9yX25leHQpOgotICAgICAgICAoZXdrX2Zy
YW1lX2NoaWxkcmVuX2l0ZXJhdG9yX25ldyk6Ci0KLTIwMTEtMDUtMjggIEFkYW0gQmFydGggIDxh
YmFydGhAd2Via2l0Lm9yZz4KLQotICAgICAgICBSZXZpZXdlZCBieSBBbGV4ZXkgUHJvc2t1cnlh
a292LgotCi0gICAgICAgIEF1ZGl0IGFsbCB1c2VzIG9mIEtVUkw6OnByZXR0eVVSTAotICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjEyMDEKLQotICAgICAg
ICBVcGRhdGUgY2FsbGVycyBvZiBwcmV0dHlVUkwgdG8ganVzdCBjYWxsIHN0cmluZy4KLQotICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJD
b3JlOjpDaHJvbWVDbGllbnRFZmw6Om1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KToKLSAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJD
b3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hXaWxsU2VuZFJlcXVlc3QpOgotICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmFzc2lnbklkZW50aWZpZXJUb0lu
aXRpYWxSZXF1ZXN0KToKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpk
aXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgotICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmRvd25sb2FkKToKLSAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyQ2xpZW50RWZsOjpjYW5jZWxsZWRFcnJvcik6Ci0gICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlckNsaWVudEVmbDo6YmxvY2tlZEVycm9yKToKLSAgICAgICAgKiBld2svZXdrX2Zy
YW1lLmNwcDoKLSAgICAgICAgKGV3a19mcmFtZV9oaXRfdGVzdF9uZXcpOgotICAgICAgICAoZXdr
X2ZyYW1lX3VyaV9jaGFuZ2VkKToKLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAg
ICAoX2V3a192aWV3X3ByaXZfbmV3KToKLSAgICAgICAgKGV3a192aWV3X2ZyYW1lX2NyZWF0ZSk6
Ci0gICAgICAgIChld2tfdmlld19wbHVnaW5fY3JlYXRlKToKLQotMjAxMS0wNS0xNiAgSm9uIExl
ZSAgPGpvbmxlZUBhcHBsZS5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2Vy
LgotCi0gICAgICAgIENhbid0IGhvcml6b250YWxseSBzY3JvbGwgaWZyYW1lcyBhbmQgb3ZlcmZs
b3cgYmVjYXVzZSB3aGVlbCBldmVudHMgYXJlIGFsd2F5cyBhY2NlcHRlZAotICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjA3NzkKLQotICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oOgotICAgICAgICAoV2ViQ29yZTo6Q2hyb21l
Q2xpZW50RWZsOjpzaG91bGRSdWJiZXJCYW5kSW5EaXJlY3Rpb24pOiBEZWZhdWx0IGltcGwgb2Yg
bmV3IENocm9tZUNsaWVudCBtZXRob2QKLSAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEVm
bDo6bnVtV2hlZWxFdmVudEhhbmRsZXJzQ2hhbmdlZCk6IERlZmF1bHQgaW1wbCBvZiBuZXcgQ2hy
b21lQ2xpZW50IG1ldGhvZAotCi0yMDExLTA1LTE2ICBHcnplZ29yeiBDemFqa293c2tpICA8Zy5j
emFqa293c2tpQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEFudG9uaW8gR29t
ZXMuCi0KLSAgICAgICAgW0VGTF0gUmVtb3ZlIEVBUEkgbWFjcm8gZnJvbSBmdW5jdGlvbnMgZGVm
aW5pdGlvbgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NjA3NTQKLQotICAgICAgICBUaGlzIG1hY3JvIHNob3VsZCBiZSB1c2VkIGluIGhlYWRlciBmaWxl
cyBvbmx5LgotICAgICAgICBJdCdzIG5vdCBuZWNlc3NhcnkgdG8gaGF2ZSBpdCBpbiBkZWZpbml0
aW9ucy4KLQotICAgICAgICAqIGV3ay9ld2tfY29va2llcy5jcHA6Ci0gICAgICAgIChld2tfY29v
a2llc19maWxlX3NldCk6Ci0gICAgICAgIChld2tfY29va2llc19jbGVhcik6Ci0gICAgICAgIChl
d2tfY29va2llc19nZXRfYWxsKToKLSAgICAgICAgKGV3a19jb29raWVzX2Nvb2tpZV9kZWwpOgot
ICAgICAgICAoZXdrX2Nvb2tpZXNfY29va2llX2ZyZWUpOgotICAgICAgICAoZXdrX2Nvb2tpZXNf
cG9saWN5X3NldCk6Ci0gICAgICAgIChld2tfY29va2llc19wb2xpY3lfZ2V0KToKLSAgICAgICAg
KiBld2svZXdrX3dpbmRvd19mZWF0dXJlcy5jcHA6Ci0gICAgICAgIChld2tfd2luZG93X2ZlYXR1
cmVzX3VucmVmKToKLSAgICAgICAgKGV3a193aW5kb3dfZmVhdHVyZXNfcmVmKToKLSAgICAgICAg
KGV3a193aW5kb3dfZmVhdHVyZXNfYm9vbF9wcm9wZXJ0eV9nZXQpOgotICAgICAgICAoZXdrX3dp
bmRvd19mZWF0dXJlc19pbnRfcHJvcGVydHlfZ2V0KToKLQotMjAxMS0wNS0xMyAgR3l1eW91bmcg
S2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFVucmV2aWV3ZWQuIEZp
eCBzdHlsZSBlcnJvci4KLQotICAgICAgICAqIGV3ay9ld2tfaGlzdG9yeS5jcHA6Ci0KLTIwMTEt
MDUtMTMgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KLQotICAgICAg
ICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KLQotICAgICAgICBbRUZM
XSBNb3ZlIGV3a192aWV3X2RwaV9nZXQoKSB0byBld2tfdXRpbC5jcHAKLSAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYwNzUzCi0KLSAgICAgICAgTW92ZSBl
d2tfdmlld19kcGlfZ2V0KCkgdG8gZXdrX3V0aWwuY3BwCi0KLSAgICAgICAgKiBld2svZXdrX3By
aXZhdGUuaDoKLSAgICAgICAgKiBld2svZXdrX3V0aWwuY3BwOgotICAgICAgICAoZXdrX3V0aWxf
ZHBpX2dldCk6Ci0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAgKF9ld2tfdmll
d192aWV3cG9ydF9hdHRyaWJ1dGVzX2NvbXB1dGUpOgotCi0yMDExLTA1LTExICBHeXV5b3VuZyBL
aW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQW50
b25pbyBHb21lcy4KLQotICAgICAgICBbRUZMXSBSZW1vdmUgZml4ZWRfbGF5b3V0IHN0cnVjdHVy
ZSBpbiBld2tfdmlldwotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NjA2MTUKLQotICAgICAgICBSZW1vdmUgdW5uZWNlc3NhcnkgZml4ZWRfbGF5b3V0IHN0
cnVjdHVyZS4gVGhlIGV3a192aWV3X2ZpeGVkX2xheW91dF9zaXplX3NldC9nZXQoKQotICAgICAg
ICB1c2UgV2ViQ29yZSdzIGZ1bmN0aW9ucyBkaXJlY3RseS4KLQotICAgICAgICAqIGV3ay9ld2tf
dmlldy5jcHA6Ci0gICAgICAgIChld2tfdmlld19maXhlZF9sYXlvdXRfc2l6ZV9zZXQpOgotICAg
ICAgICAoZXdrX3ZpZXdfZml4ZWRfbGF5b3V0X3NpemVfZ2V0KToKLQotMjAxMS0wNS0xMSAgVG9t
YXN6IE1vcmF3c2tpICA8dC5tb3Jhd3NraUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBSdWJiZXIt
c3RhbXBlZCBieSBEYW5pZWwgQmF0ZXMuCi0KLSAgICAgICAgQWRkZWQgbWlzc2luZyBEQVRBQkFT
RSBtYWNybwotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NjA0MzcKLQotICAgICAgICAqIGV3ay9ld2tfc2V0dGluZ3MuY3BwOgotICAgICAgICAoZXdrX3Nl
dHRpbmdzX3dlYl9kYXRhYmFzZV9kZWZhdWx0X3F1b3RhX2dldCk6Ci0KLTIwMTEtMDUtMDggIEth
bWlsIEJsYW5rICA8ay5ibGFua0BzYW1zdW5nLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBB
bnRvbmlvIEdvbWVzLgotCi0gICAgICAgIEFkZGVkIG5ldyBjb21tYW5kcyB0byBiZSBjYWxsZWQg
YnkgZXdrX3ZpZXdfZWRpdG9yX2NvbW1hbmQuCi0gICAgICAgIER1ZSB0byB0aGlzIGNoYW5nZSBl
d2tfdmlld19zZWxlY3RfKiBmdW5jdGlvbnMgaGF2ZSBiZWVuIHJlbW92ZWQuCi0gICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MDQzNQotCi0gICAgICAgICog
ZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAgKGV3a192aWV3X2V4ZWN1dGVfZWRpdG9yX2NvbW1h
bmQpOgotICAgICAgICAqIGV3ay9ld2tfdmlldy5oOgotCi0yMDExLTA1LTA3ICBUb21hc3ogTW9y
YXdza2kgIDx0Lm1vcmF3c2tpQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IERh
bmllbCBCYXRlcy4KLQotICAgICAgICBbRUZMXSBSZW1vdmUgZXdrX3RpbGVfdW51c2VkX2NhY2hl
X2ZyZWUgZnVuY3Rpb24gZnJvbSBwdWJsaWMgQVBJCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MDE1MQotCi0gICAgICAgIFRoZSBld2tfdGlsZV91bnVz
ZWRfY2FjaGVfZnJlZSBmdW5jdGlvbiBzaG91bGQgYmUgb25seSBjYWxsZWQgYnkKLSAgICAgICAg
ZXdrX3RpbGVfdW51c2VkX2NhY2hlX3VucmVmIGZ1bmN0aW9uLiBDYWxsaW5nIHRoaXMgZnVuY3Rp
b24gd2l0aG91dAotICAgICAgICBjb25zaWRlcmluZyByZWZlcmVuY2UgY291bnRpbmcgbWF5IGxl
YWQgdG8gZmF0YWwgcmVzdWx0cy4KLQotICAgICAgICAqIGV3ay9ld2tfdGlsZWRfbW9kZWwuYzoK
LSAgICAgICAgKF9ld2tfdGlsZV91bnVzZWRfY2FjaGVfZnJlZSk6Ci0gICAgICAgIChld2tfdGls
ZV91bnVzZWRfY2FjaGVfdW5yZWYpOgotICAgICAgICAqIGV3ay9ld2tfdGlsZWRfbW9kZWwuaDoK
LQotMjAxMS0wNS0wNSAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KLQotICAgICAg
ICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KLQotICAgICAgICBSZW5hbWUgU2VsZWN0aW9uQ29u
dHJvbGxlciB0byBGcmFtZVNlbGVjdGlvbgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NjAyMzQKLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRv
ckNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRFZmw6OmhhbmRs
ZUVkaXRpbmdLZXlib2FyZEV2ZW50KToKLQotMjAxMS0wNS0wNCAgQ3JpcyBOZWNrYXIgIDxjZG5A
Y2hyb21pdW0ub3JnPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCi0KLSAgICAg
ICAgRXhwb3NlIFdlYlZpZXcgZGlyZWN0bHkgdGhyb3VnaCBDaHJvbWVDbGllbnQuCi0gICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00OTkwMgotCi0gICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmg6Ci0gICAgICAgIChXZWJDb3JlOjpD
aHJvbWVDbGllbnRFZmw6OndlYlZpZXcpOgotCi0yMDExLTA1LTA0ICBUb21hc3ogTW9yYXdza2kg
IDx0Lm1vcmF3c2tpQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGgg
Um9oZGUgQ2hyaXN0aWFuc2VuLgotCi0gICAgICAgIFtFRkxdIEFkZGVkIGVycm9yIGNoZWNrIGZv
ciBfZXdrX2luaXRfYm9keSByZXN1bHQuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02MDE0OQotCi0gICAgICAgIFRoZSBld2tfaW5pdCBmdW5jdGlvbiBz
aG91bGQgYmUgZmFpbGVkIHdoZW4gX2V3a19pbml0X2JvZHkgZnVuY3Rpb24KLSAgICAgICAgcmV0
dXJuIGZhbHNlLgotCi0gICAgICAgICogZXdrL2V3a19tYWluLmNwcDoKLSAgICAgICAgKGV3a19p
bml0KToKLQotMjAxMS0wNS0wNCAgVGFvIEJhaSAgPG1pY2hhZWxiYWlAY2hyb21pdW0ub3JnPgot
Ci0gICAgICAgIFJldmlld2VkIGJ5IERhdmlkIEtpbHplci4KLQotICAgICAgICBQb3B1bGF0ZSB0
b3VjaC1pY29uIHVybCB0byBGcmFtZUxvYWRlckNsaWVudAotICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTkxNDMKLQotICAgICAgICBSZXNwZWN0IHRoZSBp
bnRlcmZhY2UgY2hhbmdlIGluIEZyYW1lTG9hZGVyQ2xpZW50Ci0KLSAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFt
ZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyk6Ci0gICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuaDoKLQotMjAxMS0wNS0wNCAgR3l1eW91
bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5
IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgotCi0gICAgICAgIFtFRkxdIEluaXRpYWxpemUg
dmlld3BvcnQgYXJndW1lbnQgaW4gZXdrX3ZpZXcuY3BwCi0gICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MDE0NwotCi0gICAgICAgIHZpZXdwb3J0IGNvbXB1
dGF0aW9uIGxvZ2ljIGNhbid0IGJlIHdvcmtlZCBjb3JyZWN0bHkgYmVjYXVzZSB2aWV3cG9ydCBh
cmd1bWVudAotICAgICAgICBpc24ndCBpbml0aWFsaXplZC4gU28sIHdlIG5lZWQgdG8gaW5pdGlh
bGl6ZSB2aWV3cG9ydCBhcmd1bWVudC4KLQotICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0g
ICAgICAgIChfZXdrX3ZpZXdfcHJpdl9uZXcpOgotCi0yMDExLTA1LTAzICBMZWFuZHJvIFBlcmVp
cmEgIDxsZWFuZHJvQHByb2Z1c2lvbi5tb2JpPgotCi0gICAgICAgIFtFRkxdIFVucmV2aWV3ZWQg
YnVpbGQgZml4IGZvciBORVRXT1JLX0JBQ0tFTkQ9Y3VybC4KLQotICAgICAgICBGb3JjZSBsaW5r
aW5nIHdpdGggemxpYiBzbyB0aGF0IHVuY29tcHJlc3MoKSBleGlzdHMuCi0KLSAgICAgICAgKiBD
TWFrZUxpc3RzRWZsLnR4dDogQXBwZW5kIHpsaWIgbGlicmFyaWVzLgotCi0yMDExLTA1LTAyICBH
eXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgVW5yZXZp
ZXdlZC4gU3R5bGUgZXJyb3IgZml4LgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21l
Q2xpZW50RWZsLmNwcDoKLQotMjAxMS0wNC0yOCAgS2FtaWwgQmxhbmsgIDxrLmJsYW5rQHNhbXN1
bmcuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEFudG9uaW8gR29tZXMuCi0KLSAgICAgICAg
TmV3IEFQSSBmb3IgZXhlY3V0aW5nIEVkaXRvciBDb21tYW5kczogSW5zZXJ0VGV4dCwgSW5zZXJ0
SW1hZ2UuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01
NDQzOQotCi0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAgKF9ld2tfdmlld19l
ZGl0b3JfY29tbWFuZCk6IEFkZGVkIHZhbHVlIHBhcmFtZXRlci4KLSAgICAgICAgKGV3a192aWV3
X2V4ZWN1dGVfZWRpdG9yX2NvbW1hbmQpOiBBZGRlZC4KLSAgICAgICAgKiBld2svZXdrX3ZpZXcu
aDogTmV3IEFQSSBhZGRlZC4KLQotMjAxMS0wNC0yNiAgR3J6ZWdvcnogQ3phamtvd3NraSAgPGcu
Y3phamtvd3NraUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBBbnRvbmlvIEdv
bWVzLgotCi0gICAgICAgIFtFRkxdIFVwZGF0ZSBzaWduYWxzIGRlc2NyaXB0aW9uCi0gICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjkwNAotCi0gICAgICAg
IEFkZCwgZml4IHNpZ25hbHMgZGVzY3JpcHRpb24gdGhhdCBhcmUgZW1pdHRlZCBieSBldmFzX29i
amVjdF9zbWFydF9jYWxsY2FiY2tfY2FsbCBpbgotICAgICAgICBld2tfdmlldywgZXdrX2ZyYW1l
LCBld2tfY29udGV4dG1lbnUuCi0KLSAgICAgICAgKiBld2svZXdrX2NvbnRleHRtZW51Lmg6Ci0g
ICAgICAgICogZXdrL2V3a19mcmFtZS5oOgotICAgICAgICAqIGV3ay9ld2tfdmlldy5oOgotCi0y
MDExLTA0LTI1ICBSeXVhbiBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KLQotICAgICAg
ICBSZXZpZXdlZCBieSBBbnRvbmlvIEdvbWVzLgotCi0gICAgICAgIFtFRkxdIFJlbW92ZSBld2tf
ZWFwaS5oCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01
OTA5MQotCi0gICAgICAgICogZXdrL0VXZWJLaXQuaDoKLSAgICAgICAgKiBld2svZXdrX2NvbnRl
eHRtZW51Lmg6Ci0gICAgICAgICogZXdrL2V3a19jb29raWVzLmg6Ci0gICAgICAgICogZXdrL2V3
a19lYXBpLmg6IFJlbW92ZWQuCi0gICAgICAgICogZXdrL2V3a19mcmFtZS5oOgotICAgICAgICAq
IGV3ay9ld2tfaGlzdG9yeS5oOgotICAgICAgICAqIGV3ay9ld2tfbWFpbi5oOgotICAgICAgICAq
IGV3ay9ld2tfc2V0dGluZ3MuaDoKLSAgICAgICAgKiBld2svZXdrX3RpbGVkX21hdHJpeC5oOgot
ICAgICAgICAqIGV3ay9ld2tfdGlsZWRfbW9kZWwuaDoKLSAgICAgICAgKiBld2svZXdrX3dpbmRv
d19mZWF0dXJlcy5oOgotCi0yMDExLTA0LTIxICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQu
b3JnPgotCi0gICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCi0KLSAgICAgICAgQWRkIEZy
YW1lKiB0byB0aGUgYXJndW1lbnQgbGlzdHMgb2YgY2FuQ29weUN1dCBhbmQgY2FuUGFzdGUKLSAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5MTUzCi0KLSAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuY3BwOgotICAgICAgICAoV2Vi
Q29yZTo6RWRpdG9yQ2xpZW50RWZsOjpjYW5Db3B5Q3V0KToKLSAgICAgICAgKFdlYkNvcmU6OkVk
aXRvckNsaWVudEVmbDo6Y2FuUGFzdGUpOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRv
ckNsaWVudEVmbC5oOgotCi0yMDExLTA0LTE5ICBWc2V2b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hy
b21pdW0ub3JnPgotCi0gICAgICAgIFJldmlld2VkIGJ5IFBhdmVsIEZlbGRtYW4uCi0KLSAgICAg
ICAgV2ViIEluc3BlY3RvcjogUmVuYW1lIGxlbmd0aFJlY2VpdmVkIHRvIGVuY29kZWREYXRhTGVu
Z3RoL2RhdGFMZW5ndGgKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTU4ODgzCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0
Y2hEaWRSZWNlaXZlQ29udGVudExlbmd0aCk6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRFZmwuaDoKLQotMjAxMS0wNC0xOCAgU2hlcmlmZiBCb3QgIDx3ZWJraXQu
cmV2aWV3LmJvdEBnbWFpbC5jb20+Ci0KLSAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQg
cjg0MTU1LgotICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC84NDE1NQot
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTg4MDIKLQot
ICAgICAgICAicGFpbnRFbnRpcmVDb250ZW50cyBmbGFnIGlzIHVzZWQgZm9yIHBhaW50aW5nIG91
dHNpZGUgb2YgdGhlCi0gICAgICAgIHNjcmVlbi4gSXQncyBub3QgdGhlIHJpZ2h0IHdheSB0byBm
aXggRUZMIHRpbGVkIGJhY2tpbmcKLSAgICAgICAgc3RvcmUuIiAoUmVxdWVzdGVkIGJ5IGRlbWFy
Y2hpIG9uICN3ZWJraXQpLgotCi0gICAgICAgICogZXdrL2V3a192aWV3X3RpbGVkLmM6Ci0gICAg
ICAgIChfZXdrX3ZpZXdfdGlsZWRfc21hcnRfYWRkKToKLQotMjAxMS0wNC0xOCAgRXVuc29sIFBh
cmsgIDxldW5zb2w0Ny5wYXJrQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEVy
aWMgU2VpZGVsLgotCi0gICAgICAgIFtFRkxdIFNjcm9sbCBkb2Vzbid0IHdvcmsgb24gdGlsZWQg
YmFja2luZyBzdG9yZQotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NTUwMjEKLQotICAgICAgICBTY3JvbGwgZG9lc24ndCB3b3JrIG9uIHRpbGVkIGJhY2tp
bmcgc3RvcmUsIGJ1dCBpdCB3b3JrcyBvbiBzaW5nbGUuCi0gICAgICAgIElmIGV3a19mcmFtZV9w
YWludF9mdWxsX3NldCgpIHNldCBUcnVlLCB2aWV3IHNpemUgcmV0dXJuIGNvbnRlbnQgc2l6ZSBh
bmQgc2Nyb2xsIGNhbid0IGJlIG1hZGUuIAotICAgICAgICBzbywgZXdrX2ZyYW1lX3BhaW50X2Z1
bGxfc2V0KCkgaXMgcmVtb3ZlZCBmcm9tIGV3a190aWxlZF9zbWFydF9hZGQoKS4KLQotICAgICAg
ICAqIGV3ay9ld2tfdmlld190aWxlZC5jOgotICAgICAgICAoX2V3a192aWV3X3RpbGVkX3NtYXJ0
X2FkZCk6Ci0KLTIwMTEtMDQtMTQgIEdyemVnb3J6IEN6YWprb3dza2kgIDxnLmN6YWprb3dza2lA
c2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21lcy4KLQotICAg
ICAgICBNZW1vcnkgY2FjaGUgQVBJCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01ODAxNgotCi0gICAgICAgICogZXdrL2V3a19zZXR0aW5ncy5jcHA6Ci0g
ICAgICAgIChld2tfc2V0dGluZ3NfY2FjaGVfZW5hYmxlX2dldCk6Ci0gICAgICAgIChld2tfc2V0
dGluZ3NfY2FjaGVfZW5hYmxlX3NldCk6Ci0gICAgICAgIChld2tfc2V0dGluZ3NfY2FjaGVfY2Fw
YWNpdHlfc2V0KToKLSAgICAgICAgKiBld2svZXdrX3NldHRpbmdzLmg6Ci0KLTIwMTEtMDQtMTMg
IEdyemVnb3J6IEN6YWprb3dza2kgIDxnLmN6YWprb3dza2lAc2Ftc3VuZy5jb20+Ci0KLSAgICAg
ICAgUmV2aWV3ZWQgYnkgS2VudCBUYW11cmEuCi0KLSAgICAgICAgW0VGTF0gRG94eWdlbiBkb2N1
bWVudGF0aW9uIGZvciBld2tfbWFpbiwgZXdrX2hpc3RvcnkgYW5kIHRvb2xzCi0gICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01ODQyOAotCi0gICAgICAgICog
ZXdrL0VXZWJLaXQuaDoKLSAgICAgICAgKiBld2svZXdrX2VhcGkuaDoKLSAgICAgICAgKiBld2sv
ZXdrX2hpc3RvcnkuaDoKLSAgICAgICAgKiBld2svZXdrX2xvZ2dpbmcuaDoKLSAgICAgICAgKiBl
d2svZXdrX21haW4uY3BwOgotICAgICAgICAqIGV3ay9ld2tfbWFpbi5oOgotICAgICAgICAqIGV3
ay9ld2tfcHJpdmF0ZS5oOgotICAgICAgICAqIGV3ay9ld2tfdXRpbC5jcHA6Ci0gICAgICAgICog
ZXdrL2V3a191dGlsLmg6Ci0KLTIwMTEtMDQtMTEgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtp
bUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlz
dGlhbnNlbi4KLQotICAgICAgICBbRUZMXSBBZGp1c3QgZHBpIHZhbHVlIHRvIHZpZXdwb3J0IGNv
bXB1dGF0aW9uLgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NTgxMzAKLQotICAgICAgICBJbiB2aWV3cG9ydCBjb21wdXRhdGlvbiwgRUZMIHBvcnQgaGF2
ZSB1c2VkIDE2MCB2YWx1ZSBmb3IgRFBJIHNpbmNlIG5vdy4KLSAgICAgICAgQnV0LCB3ZSBoYXZl
IHRvIHVzZSBkZXZpY2UncyBkcGkgdmFsdWUgZm9yIHZpZXdwb3J0IG1ldGEgdGFnIGNvbXB1dGF0
aW9uLgotCi0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAgKF9ld2tfdmlld192
aWV3cG9ydF9hdHRyaWJ1dGVzX2NvbXB1dGUpOgotCi0yMDExLTA0LTEwICBHeXV5b3VuZyBLaW0g
IDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBD
YXJsc29uLgotCi0gICAgICAgIFtFRkxdIEFkZCBzZWVrIGZvcndhcmQgLyBiYWNrd2FyZCBidXR0
b25zIHRvIE1lZGlhQ29udHJvbCBVSS4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTU2ODEwCi0KLSAgICAgICAgQWRkIHNlZWsgZm9yd2FyZCAvIGJhY2t3
YXJkIGJ1dHRvbnMgdG8gbWVkaWEgY29udHJvbC4KLQotICAgICAgICAqIERlZmF1bHRUaGVtZS9k
ZWZhdWx0LmVkYzoKLSAgICAgICAgKiBEZWZhdWx0VGhlbWUvd2lkZ2V0L21lZGlhY29udHJvbC9z
ZWVrYmFja3dhcmRidXR0b24vc2Vla2JhY2t3YXJkX2J1dHRvbi5lZGM6IEFkZGVkLgotICAgICAg
ICAqIERlZmF1bHRUaGVtZS93aWRnZXQvbWVkaWFjb250cm9sL3NlZWtiYWNrd2FyZGJ1dHRvbi9z
ZWVrYmFja3dhcmRidXR0b24ucG5nOiBBZGRlZC4KLSAgICAgICAgKiBEZWZhdWx0VGhlbWUvd2lk
Z2V0L21lZGlhY29udHJvbC9zZWVrZm9yd2FyZGJ1dHRvbi9zZWVrZm9yd2FyZF9idXR0b24uZWRj
OiBBZGRlZC4KLSAgICAgICAgKiBEZWZhdWx0VGhlbWUvd2lkZ2V0L21lZGlhY29udHJvbC9zZWVr
Zm9yd2FyZGJ1dHRvbi9zZWVrZm9yd2FyZGJ1dHRvbi5wbmc6IEFkZGVkLgotCi0yMDExLTA0LTA0
ICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgotCi0gICAgICAgIFJldmlld2Vk
IGJ5IFJ5b3N1a2UgTml3YS4KLQotICAgICAgICBbUmVmYWN0b3JpbmddIFNwZWxsQ2hlY2tpbmdS
ZXN1bHQgc2hvdWxkIGJlIHJlcGxhY2VkIHdpdGggVGV4dENoZWNraW5nUmVzdWx0Ci0gICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjA4NQotICAgICAgICAK
LSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuaDoKLSAgICAgICAgKFdl
YkNvcmU6OkVkaXRvckNsaWVudEVmbDo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcpOgotCi0yMDEx
LTA0LTAxICBHcnplZ29yeiBDemFqa293c2tpICA8Zy5jemFqa293c2tpQHNhbXN1bmcuY29tPgot
Ci0gICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgotCi0gICAg
ICAgIFtFRkxdIFN5bmNocm9uaXphdGlvbiBiZXR3ZWVuIFdlYkNvcmUncyBDb250ZXh0TWVudUl0
ZW0uaCBhbmQgZXdrX2NvbnRleHRtZW51LmgKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTU3MDAwCi0KLSAgICAgICAgKiBld2svZXdrX2NvbnRleHRtZW51
Lmg6Ci0KLTIwMTEtMDMtMzEgIEV2YW4gTWFydGluICA8ZXZhbkBjaHJvbWl1bS5vcmc+Ci0KLSAg
ICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCi0KLSAgICAgICAgPHRpdGxlPiBzaG91bGQg
c3VwcG9ydCBkaXIgYXR0cmlidXRlCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01MDk2MQotCi0gICAgICAgIFVwZGF0ZSB0byBuZXcgRnJhbWVMb2FkZXJD
bGllbnQgaW50ZXJmYWNlLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmRp
c3BhdGNoRGlkUmVjZWl2ZVRpdGxlKToKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xp
ZW50RWZsOjpzZXRUaXRsZSk6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRFZmwuaDoKLQotMjAxMS0wMy0yOSAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNh
bXN1bmcuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEFudG9uaW8gR29tZXMuCi0KLSAgICAg
ICAgW0VGTF0gUmVtb3ZlIHVubmVjZXNzYXJ5IGV3a192aWV3X3ZpZXdwb3J0X2F0dHJpYnV0ZXNf
c2V0KCkgaW52b2NhdGlvbgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NTcyMjIKLQotICAgICAgICBXZWJDb3JlIHNlbmRzIHZpZXdwb3J0IHNpZ25hbCB3
aGVuZXZlciB2aWV3cG9ydCBpcyBjaGFuZ2VkIGJ5IFBhZ2U6OnVwZGF0ZVZpZXdwb3J0QXJndW1l
bnRzKCkuCi0gICAgICAgIFRodXMsIHdlIGRvbid0IG5lZWQgdG8gY2FsbCBld2tfdmlld192aWV3
cG9ydF9hdHRyaWJ1dGVzX3NldCgpIHdpdGggZHVtbXkgdmlld3BvcnQgZGF0YQotICAgICAgICBh
bnltb3JlLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwu
Y3BwOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlk
Q29tbWl0TG9hZCk6Ci0KLTIwMTEtMDMtMjcgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdl
YmtpdC5vcmc+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KLQotICAgICAg
ICBGaXggYWdlbnRPUygpIGluIEZyYW1lTG9hZGVyQ2xpZW50RWZsCi0gICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NzE3NwotCi0gICAgICAgIFJlcGxhY2Ug
b2xkIFBMQVRGT1JNIG1hY3JvIHdpdGggT1MgYW5kIENQVS4KLQotICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OmFnZW50
T1MpOgotCi0yMDExLTAzLTI3ICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUB3ZWJraXQub3Jn
PgotCi0gICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCi0KLSAgICAgICAgW0VGTF0g
VXNlIGFuIGFwcHJvcHJpYXRlIHVzZXIgYWdlbnQgc3RyaW5nCi0gICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NzE3NgotCi0gICAgICAgICogV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29yZTo6Y29tcG9z
ZVVzZXJBZ2VudCk6Ci0KLTIwMTEtMDMtMjUgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29t
PgotCi0gICAgICAgIFJldmlld2VkIGJ5IEFkZWxlIFBldGVyc29uLgotCi0gICAgICAgIFJFR1JF
U1NJT04gKHI3MDc0OCk6IGxhdGVzdCBuaWdodGx5IGJ1aWxkcyBraWxscyBBQ19RdWlja1RpbWUu
anMKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ5MDE2
Ci0KLSAgICAgICAgVXBkYXRlIG9iamVjdENvbnRlbnRUeXBlKCkgaW1wbGVtZW50YXRpb24gdG8g
aGFuZGxlIHRoZQotICAgICAgICBzaG91bGRQcmVmZXJQbHVnSW5zRm9ySW1hZ2VzIGZsYWcuCi0K
LSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHA6Ci0gICAg
ICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6b2JqZWN0Q29udGVudFR5cGUpOgot
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmg6Ci0KLTIwMTEt
MDMtMjQgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KLQotICAgICAg
ICBSZXZpZXdlZCBieSBBbnRvbmlvIEdvbWVzLgotCi0gICAgICAgIFtFRkxdIEFkZCBzb3VuZCAv
IG11dGUgYnV0dG9uIHRvIE1lZGlhQ29udHJvbCBVSQotICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTY3MjYKLQotICAgICAgICBBZGQgc291bmQgLyBtdXRl
IGJ1dHRvbiB0byBNZWRpYUNvbnRyb2wgVUkuCi0KLSAgICAgICAgKiBEZWZhdWx0VGhlbWUvZGVm
YXVsdC5lZGM6Ci0gICAgICAgICogRGVmYXVsdFRoZW1lL3dpZGdldC9tZWRpYWNvbnRyb2wvbXV0
ZWJ1dHRvbi9tdXRlX2J1dHRvbi5lZGM6IEFkZGVkLgotICAgICAgICAqIERlZmF1bHRUaGVtZS93
aWRnZXQvbWVkaWFjb250cm9sL211dGVidXR0b24vbXV0ZWJ1dHRvbi5wbmc6IEFkZGVkLgotICAg
ICAgICAqIERlZmF1bHRUaGVtZS93aWRnZXQvbWVkaWFjb250cm9sL211dGVidXR0b24vdW5tdXRl
YnV0dG9uLnBuZzogQWRkZWQuCi0KLTIwMTEtMDMtMjQgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJl
dmlldy5ib3RAZ21haWwuY29tPgotCi0gICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI4
MTkxNiBhbmQgcjgxOTE3LgotICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNl
dC84MTkxNgotICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC84MTkxNwot
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTcwNzEKLQot
ICAgICAgICBicm9rZSBhIHRlc3Qgb24gcGxhdGZvcm1zIHRoYXQgZG8gbm90IGhhdmUgUXVpY2tU
aW1lIGluc3RhbGxlZAotICAgICAgICAoUmVxdWVzdGVkIGJ5IGVzdGVzIG9uICN3ZWJraXQpLgot
Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwOgotICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6Om9iamVjdENvbnRlbnRUeXBlKToK
LSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5oOgotCi0yMDEx
LTAzLTI0ICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KLQotICAgICAgICBSZXZpZXdl
ZCBieSBEYXJpbiBBZGxlci4KLQotICAgICAgICBSRUdSRVNTSU9OIChyNzA3NDgpOiBsYXRlc3Qg
bmlnaHRseSBidWlsZHMga2lsbHMgQUNfUXVpY2tUaW1lLmpzCi0gICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00OTAxNgotCi0gICAgICAgIFVwZGF0ZSBvYmpl
Y3RDb250ZW50VHlwZSgpIGltcGxlbWVudGF0aW9uIHRvIGhhbmRsZSB0aGUKLSAgICAgICAgc2hv
dWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcyBmbGFnLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXJDbGllbnRFZmw6Om9iamVjdENvbnRlbnRUeXBlKToKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudEVmbC5oOgotCi0yMDExLTAzLTIzICBCcmFkeSBFaWRzb24gIDxi
ZWlkc29uQGFwcGxlLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgotCi0g
ICAgICAgIENoYW5nZSBJY29uRGF0YWJhc2Ugb3BlbmluZyB0byBhbGxvdyBmb3IgYXJiaXRyYXJ5
IGZpbGVuYW1lcwotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NTY5NzcKLQotICAgICAgICAqIGV3ay9ld2tfc2V0dGluZ3MuY3BwOgotICAgICAgICAoZXdr
X3NldHRpbmdzX2ljb25fZGF0YWJhc2VfcGF0aF9zZXQpOgotCi0yMDExLTAzLTIzICBHeXV5b3Vu
ZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkg
QW50b25pbyBHb21lcy4KLQotICAgICAgICBbRUZMXSBBZGQgcGxheSAvIHBhdXNlIGJ1dHRvbiB0
byBtZWRpYSBjb250cm9sCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD01NTQ2MwotCi0gICAgICAgIEFkZCBwbGF5fHBhdXNlIGJ1dHRvbiB0byBtZWRpYSBj
b250cm9sLgotCi0gICAgICAgICogRGVmYXVsdFRoZW1lL2RlZmF1bHQuZWRjOgotICAgICAgICAq
IERlZmF1bHRUaGVtZS93aWRnZXQvbWVkaWFjb250cm9sL3BsYXlwYXVzZWJ1dHRvbi9wYXVzZWJ1
dHRvbi5wbmc6IEFkZGVkLgotICAgICAgICAqIERlZmF1bHRUaGVtZS93aWRnZXQvbWVkaWFjb250
cm9sL3BsYXlwYXVzZWJ1dHRvbi9wbGF5YnV0dG9uLnBuZzogQWRkZWQuCi0gICAgICAgICogRGVm
YXVsdFRoZW1lL3dpZGdldC9tZWRpYWNvbnRyb2wvcGxheXBhdXNlYnV0dG9uL3BsYXlwYXVzZV9i
dXR0b24uZWRjOiBBZGRlZC4KLQotMjAxMS0wMy0yMiAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcu
a2ltQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEFudG9uaW8gR29tZXMuCi0K
LSAgICAgICAgW0VGTF0gQ2hhbmdlIHJldHVybiB2YWx1ZXMgd2l0aCBiZXR0ZXIgb25lIGluIGV3
a19zZXR0aW5nJ3MgZnVuY3Rpb25zCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01NjgxOQotCi0gICAgICAgIEluIGV3a19zZXR0aW5nc19jYWNoZV9kaXJl
Y3RvcnlfcGF0aF9zZXRfeHh4LCB0aGV5IHJldHVybiBmYWxzZSB2YWx1ZQotICAgICAgICB3aGVu
IHNvdXAgaXMgZGlzYWJsZWQuIEl0IGlzIGJldHRlciB0byB1c2UgRUlOQV9TQUZFVFlfT05fVFJV
RV9SRVRVUk5fWFhYLgotCi0gICAgICAgICogZXdrL2V3a19zZXR0aW5ncy5jcHA6Ci0gICAgICAg
IChld2tfc2V0dGluZ3NfcHJveHlfdXJpX2dldCk6Ci0gICAgICAgIChld2tfc2V0dGluZ3NfY2Fj
aGVfZGlyZWN0b3J5X3BhdGhfc2V0KToKLSAgICAgICAgKGV3a19zZXR0aW5nc19jYWNoZV9kaXJl
Y3RvcnlfcGF0aF9nZXQpOgotCi0yMDExLTAzLTIyICBHcnplZ29yeiBDemFqa293c2tpICA8Zy5j
emFqa293c2tpQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEtlbnQgVGFtdXJh
LgotCi0gICAgICAgIEFkZCB2b2lkIHRvIGZ1bmN0aW9uIHdpdGhvdXQgcGFyYW1ldGVycwotICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTY4MjEKLQotICAg
ICAgICAqIGV3ay9ld2tfY29va2llcy5jcHA6Ci0gICAgICAgIChld2tfY29va2llc19jbGVhcik6
Ci0gICAgICAgIChld2tfY29va2llc19wb2xpY3lfZ2V0KToKLSAgICAgICAgKiBld2svZXdrX2Nv
b2tpZXMuaDoKLSAgICAgICAgKiBld2svZXdrX3ByaXZhdGUuaDoKLSAgICAgICAgKiBld2svZXdr
X3NldHRpbmdzLmNwcDoKLSAgICAgICAgKGV3a19zZXR0aW5nc193ZWJfZGF0YWJhc2VfZGVmYXVs
dF9xdW90YV9nZXQpOgotICAgICAgICAoZXdrX3NldHRpbmdzX3dlYl9kYXRhYmFzZV9wYXRoX2dl
dCk6Ci0gICAgICAgIChld2tfc2V0dGluZ3NfcHJveHlfdXJpX2dldCk6Ci0gICAgICAgIChld2tf
c2V0dGluZ3NfZGVmYXVsdF91c2VyX2FnZW50X2dldCk6Ci0gICAgICAgICogZXdrL2V3a19zZXR0
aW5ncy5oOgotICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChld2tfdmlld19k
cGlfZ2V0KToKLQotMjAxMS0wMy0xNyAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+
Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KLQotICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTY0MjUKLSAgICAgICAgTW9yZSBncm91bmR3
b3JrIGZvciBXZWJLaXQyIEljb25EYXRhYmFzZQotCi0gICAgICAgIFVwZGF0ZSBhbHJlYWR5LXVz
ZWQgZnVuY3Rpb24gbmFtZXM6Ci0gICAgICAgICogZXdrL2V3a19oaXN0b3J5LmNwcDoKLSAgICAg
ICAgKGV3a19oaXN0b3J5X2l0ZW1faWNvbl9zdXJmYWNlX2dldCk6Ci0gICAgICAgIChld2tfaGlz
dG9yeV9pdGVtX2ljb25fb2JqZWN0X2FkZCk6Ci0gICAgICAgICogZXdrL2V3a19zZXR0aW5ncy5j
cHA6Ci0gICAgICAgIChld2tfc2V0dGluZ3NfaWNvbl9kYXRhYmFzZV9pY29uX3N1cmZhY2VfZ2V0
KToKLSAgICAgICAgKGV3a19zZXR0aW5nc19pY29uX2RhdGFiYXNlX2ljb25fb2JqZWN0X2FkZCk6
Ci0KLTIwMTEtMDMtMTYgIEpvc2VwaCBQZWNvcmFybyAgPGpvZXBlY2tAd2Via2l0Lm9yZz4KLQot
ICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KLQotICAgICAg
ICBWaWV3cG9ydCBubyBsb25nZXIgYWxsb3dzIGFuIGF1dG8gdmFsdWUgZm9yICJ1c2VyLXNjYWxh
YmxlIgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTU0
MTYKLQotICAgICAgICBNYWtlIHRoZSBkZWZhdWx0IHZhbHVlIGZvciB1c2VyU2NhbGFibGUgYmUg
dHJ1ZS4KLQotICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChld2tfdmlld192
aWV3cG9ydF9hdHRyaWJ1dGVzX2dldCk6Ci0KLTIwMTEtMDMtMTQgIEJyYWR5IEVpZHNvbiAgPGJl
aWRzb25AYXBwbGUuY29tPgotCi0gICAgICAgIFRyeSB0byBmaXggdGhlIEVGTCBidWlsZC1idXN0
YWdlIHRoYXQgdGhlaXIgRVdTIGJvdCBkaWQgbm90IHNlZSwgYnV0IHRoZWlyIGNvcmUtYnVpbGRl
ciBkaWQuICAoc2lnaCkKLQotICAgICAgICAqIGV3ay9ld2tfaGlzdG9yeS5jcHA6Ci0gICAgICAg
IChld2tfaGlzdG9yeV9pdGVtX2ljb25fc3VyZmFjZV9nZXQpOgotICAgICAgICAoZXdrX2hpc3Rv
cnlfaXRlbV9pY29uX29iamVjdF9hZGQpOgotCi0yMDExLTAzLTE0ICBCcmFkeSBFaWRzb24gIDxi
ZWlkc29uQGFwcGxlLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBBbmRlcnMgQ2FybHNzb24u
Ci0KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2MzIw
Ci0gICAgICAgIFJlbW92ZSBIaXN0b3J5SXRlbTo6aWNvbigpIGFuZCB0aGUgV2ViQ29yZSBkZXBl
bmRlbmN5IG9uICJJY29uRGF0YWJhc2VCYXNlOjpkZWZhdWx0SWNvbigpIgotCi0gICAgICAgICog
ZXdrL2V3a19oaXN0b3J5LmNwcDoKLSAgICAgICAgKGV3a19oaXN0b3J5X2l0ZW1faWNvbl9zdXJm
YWNlX2dldCk6IFVzZSBJY29uRGF0YWJhc2UgZGlyZWN0bHkuCi0KLTIwMTEtMDMtMTQgIFJ5dWFu
IENob2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEtl
bm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgotCi0gICAgICAgIFtFRkxdIE1vdmUgY2FjaGVfZGly
ZWN0b3J5IGFwaQotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NTIxMzkKLQotICAgICAgICBNb3ZlIGNhY2hlIGRpcmVjdG9yeSByZWxhdGVkIGFwaXMgZnJv
bSBld2tfdmlldyB0byBld2tfc2V0dGluZ3MgYmVjYXVzZQotICAgICAgICB0aG9zZSBhcmUgbm90
IHJlbGF0ZWQgdG8gZXdrX3ZpZXcuCi0KLSAgICAgICAgKiBld2svZXdrX21haW4uY3BwOgotICAg
ICAgICAoX2V3a19pbml0X2JvZHkpOgotICAgICAgICAqIGV3ay9ld2tfc2V0dGluZ3MuY3BwOgot
ICAgICAgICAoZXdrX3NldHRpbmdzX2NhY2hlX2RpcmVjdG9yeV9wYXRoX3NldCk6Ci0gICAgICAg
IChld2tfc2V0dGluZ3NfY2FjaGVfZGlyZWN0b3J5X3BhdGhfZ2V0KToKLSAgICAgICAgKiBld2sv
ZXdrX3NldHRpbmdzLmg6Ci0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAgKF9l
d2tfdmlld19wcml2X25ldyk6Ci0gICAgICAgIChfZXdrX3ZpZXdfcHJpdl9kZWwpOgotICAgICAg
ICAqIGV3ay9ld2tfdmlldy5oOgotCi0yMDExLTAzLTEyICBSeXVhbiBDaG9pICA8cnl1YW4uY2hv
aUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeC4KLQotICAgICAg
ICBbRUZMXSBGaXggYnVpbGQgYnJlYWsgYmVjYXVzZSBvZiBzZXZlcmFsIHJlYXNvbi4KLSAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2MjQ0Ci0KLSAgICAg
ICAgKiBld2svZXdrX3NldHRpbmdzLmNwcDoKLSAgICAgICAgKGV3a19zZXR0aW5nc19pY29uX2Rh
dGFiYXNlX3BhdGhfc2V0KToKLQotMjAxMS0wMy0xMCAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lA
c2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21lcy4KLQotICAg
ICAgICBbRUZMXSBMaW1pdCB0b3VjaCBldmVudHMgd2hlbiBvbmx5IHBhZ2UgcmVxdWlyZWQgdG91
Y2ggZXZlbnRzLgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NTQ4NTcKLQotICAgICAgICBCbG9jayB0b3VjaCBldmVudHMgd2hlbiBDaHJvbWVDbGllbnQ6
Om5lZWRUb3VjaEV2ZW50cyBnb3QgZmFsc2UuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9D
aHJvbWVDbGllbnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZsOjpu
ZWVkVG91Y2hFdmVudHMpOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVm
bC5oOgotICAgICAgICAqIGV3ay9ld2tfZnJhbWUuY3BwOgotICAgICAgICAoZXdrX2ZyYW1lX2Zl
ZWRfdG91Y2hfZXZlbnQpOgotICAgICAgICAqIGV3ay9ld2tfcHJpdmF0ZS5oOgotICAgICAgICAq
IGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChld2tfdmlld19uZWVkX3RvdWNoX2V2ZW50c19z
ZXQpOgotICAgICAgICAoZXdrX3ZpZXdfbmVlZF90b3VjaF9ldmVudHNfZ2V0KToKLQotMjAxMS0w
My0wOCAgR3J6ZWdvcnogQ3phamtvd3NraSAgPGcuY3phamtvd3NraUBzYW1zdW5nLmNvbT4KLQot
ICAgICAgICBSZXZpZXdlZCBieSBLZW50IFRhbXVyYS4KLQotICAgICAgICBbRUZMXSBEb3h5Z2Vu
IGRvY3VtZW50YXRpb24gZm9yIGV3a193aW5kb3dfZmVhdHVyZXMgYW5kIGV3a19jb250ZXh0X21l
bnUKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU1MDI2
Ci0KLSAgICAgICAgKiBld2svZXdrX2NvbnRleHRtZW51LmNwcDoKLSAgICAgICAgKGV3a19jb250
ZXh0X21lbnVfaXRlbV9zZWxlY3QpOiByZXR1cm5zIEVJTkFfRkFMU0Ugd2hlbiBDT05URVhUX01F
TlUgaXMgZGlzYWJsZWQKLSAgICAgICAgKiBld2svZXdrX2NvbnRleHRtZW51Lmg6Ci0gICAgICAg
ICogZXdrL2V3a193aW5kb3dfZmVhdHVyZXMuY3BwOgotICAgICAgICAqIGV3ay9ld2tfd2luZG93
X2ZlYXR1cmVzLmg6Ci0KLTIwMTEtMDMtMDcgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
LQotICAgICAgICBSZXZpZXdlZCBieSBBbmRlcnMgQ2FybHNzb24uCi0KLSAgICAgICAgUmVwbGFj
ZSBXZWJLaXQyJ3MgZGVjaWRlUG9saWN5Rm9yTUlNRVR5cGUgd2l0aCBkZWNpZGVQb2xpY3lGb3JS
ZXNwb25zZQotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NTU4MjcKLQotICAgICAgICBSZW5hbWVkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lk
ZVBvbGljeUZvck1JTUVUeXBlIHRvIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UKLSAg
ICAgICAgYW5kIHBhc3MgdGhlIGVudGlyZSByZXNwb25zZSwgaW5zdGVhZCBvZiBqdXN0IHRoZSBN
SU1FVHlwZS4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZs
LmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERl
Y2lkZVBvbGljeUZvclJlc3BvbnNlKToKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudEVmbC5oOgotCi0yMDExLTAzLTA0ICBHcnplZ29yeiBDemFqa293c2tpICA8Zy5j
emFqa293c2tpQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEtlbnQgVGFtdXJh
LgotCi0gICAgICAgIFtFRkxdIERveHlnZW4gZG9jdW1lbnRhdGlvbiBmb3IgZXdrX3NldHRpbmdz
Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NTY2Nwot
Ci0gICAgICAgICogZXdrL2V3a19zZXR0aW5ncy5jcHA6Ci0gICAgICAgIChld2tfc2V0dGluZ3Nf
ZGVmYXVsdF91c2VyX2FnZW50X2dldCk6IG9ubHkgc3R5bGUgaXMgZml4ZWQKLSAgICAgICAgKiBl
d2svZXdrX3NldHRpbmdzLmg6Ci0KLTIwMTEtMDMtMDMgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25A
YXBwbGUuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgotCi0gICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NTcyMQotICAgICAgICBH
bG9iYWwgSWNvbkRhdGFiYXNlIHNob3VsZCBiZSByZXR1cm5lZCBieSByZWZlcmVuY2UsIG5vdCBh
cyBhIHBvaW50ZXIKLQotICAgICAgICAqIGV3ay9ld2tfc2V0dGluZ3MuY3BwOgotICAgICAgICAo
ZXdrX3NldHRpbmdzX2ljb25fZGF0YWJhc2VfcGF0aF9zZXQpOgotICAgICAgICAoZXdrX3NldHRp
bmdzX2ljb25fZGF0YWJhc2VfcGF0aF9nZXQpOgotICAgICAgICAoZXdrX3NldHRpbmdzX2ljb25f
ZGF0YWJhc2VfY2xlYXIpOgotICAgICAgICAoZXdrX3NldHRpbmdzX2ljb25fZGF0YWJhc2VfaWNv
bl9zdXJmYWNlX2dldCk6Ci0gICAgICAgIChld2tfc2V0dGluZ3NfaWNvbl9kYXRhYmFzZV9pY29u
X29iamVjdF9hZGQpOgotCi0yMDExLTAzLTAzICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBw
bGUuY29tPgotCi0gICAgICAgIFJlbW92aW5nIGFuIGluY2x1ZGUgb2YgV2ViQ29yZUtleWJvYXJk
VUlNb2RlLmggdGhhdCBJdmUganVzdCBhZGRlZC4gSXQncyBhbHJlYWR5IGluY2x1ZGVkCi0gICAg
ICAgIHZpYSBDaHJvbWVDbGllbnQuaAotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21l
Q2xpZW50RWZsLmg6Ci0KLTIwMTEtMDMtMDIgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBs
ZS5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCi0KLSAgICAgICAgUkVH
UkVTU0lPTiAoV2ViS2l0Mik6IFRhYiBrZXlzIG5vIGxvbmdlciBvYnNlcnZlIEZ1bGwgS2V5Ym9h
cmQgQWNjZXNzCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD01NTYzMwotICAgICAgICA8cmRhcjovL3Byb2JsZW0vODk2MzAyMz4KLQotICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHA6IChXZWJDb3JlOjpDaHJvbWVDbGllbnRF
Zmw6OmtleWJvYXJkVUlNb2RlKToKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGll
bnRFZmwuaDoKLSAgICAgICAgSW1wbGVtZW50IGtleWJvYXJkVUlNb2RlKCkgaW5zdGVhZCBvZiB0
YWJzVG9MaW5rcygpLiBObyBjaGFuZ2UgaW4gZnVuY3Rpb25hbGl0eSwgc2luY2UKLSAgICAgICAg
dGhpcyBwbGF0Zm9ybSBkb2Vzbid0IG9ic2VydmUgb3IgaGF2ZSBmdWxsIGtleWJvYXJkIGFjY2Vz
cyBzdGF0ZS4KLQotMjAxMS0wMy0wMSAgSm9zZXBoIFBlY29yYXJvICA8am9lcGVja0B3ZWJraXQu
b3JnPgotCi0gICAgICAgIFVucmV2aWV3ZWQuIFJvbGwgb3V0IHI4MDA2OCBhbmQgcjgwMDczIGR1
ZSB0byBicmVha2luZyBXZWJLaXQyIFF0IHBvcnQuCi0KLSAgICAgICAgKiBld2svZXdrX3ZpZXcu
Y3BwOgotICAgICAgICAoX2V3a192aWV3X3ZpZXdwb3J0X2F0dHJpYnV0ZXNfY29tcHV0ZSk6Ci0K
LTIwMTEtMDMtMDEgIEpvc2VwaCBQZWNvcmFybyAgPGpvZXBlY2tAd2Via2l0Lm9yZz4KLQotICAg
ICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KLQotICAgICAgICBW
aWV3cG9ydCBXYXJuaW5nL0Vycm9yIE1lc3NhZ2VzIEFyZSBOb3cgSW5hY2N1cmF0ZQotICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTM3MDcKLQotICAgICAg
ICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChfZXdrX3ZpZXdfdmlld3BvcnRfYXR0cmli
dXRlc19jb21wdXRlKTogcGFzcyBhIERvY3VtZW50IGludG8gY29tcHV0ZVZpZXdwb3J0QXR0cmli
dXRlcyBmb3Igd2FybmluZ3MgdG8gYmUgcmVwb3J0ZWQgdG8uCi0KLTIwMTEtMDItMjggIENoYW5n
IFNodSAgPGNzaHVAd2Via2l0Lm9yZz4KLQotICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtlIE5p
d2EuCi0KLSAgICAgICAgUmVtb3ZlIHRoZSBzdXBwb3J0IG9mIEZyYW1lOjppc0NvbnRlbnRFZGl0
YWJsZSBhbmQgaXRzIGRlcGVuZGVuY2llcy4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTU0MjkyCi0KLSAgICAgICAgUmVtb3ZlIHRoZSBXZWJLaXQgc2lk
ZSBpbXBsZW1lbnRhdGlvbi4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVu
dEVmbC5jcHA6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmg6Ci0K
LTIwMTEtMDItMjcgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KLQot
ICAgICAgICBSZXZpZXdlZCBieSBLZW50IFRhbXVyYS4KLQotICAgICAgICBbRUZMXSBSZXN0b3Jl
IHBhcmFtZXRlcnMgb2YgZWZsIGhlYWRlciBmaWxlcy4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU1MjkyCi0KLSAgICAgICAgUmVzdG9yZSBwYXJhbWV0
ZXJzIGluIGVmbCBoZWFkZXIgZmlsZXMuCi0KLSAgICAgICAgKiBld2svZXdrX2ZyYW1lLmg6Ci0g
ICAgICAgICogZXdrL2V3a190aWxlZF9iYWNraW5nX3N0b3JlLmg6Ci0gICAgICAgICogZXdrL2V3
a190aWxlZF9tYXRyaXguaDoKLSAgICAgICAgKiBld2svZXdrX3RpbGVkX21vZGVsLmg6Ci0gICAg
ICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAgKGV3a192aWV3X3ByZV9yZW5kZXJfcmVs
YXRpdmVfcmFkaXVzKToKLSAgICAgICAgKiBld2svZXdrX3ZpZXcuaDoKLSAgICAgICAgKiBld2sv
ZXdrX3dpbmRvd19mZWF0dXJlcy5oOgotCi0yMDExLTAyLTI2ICBHeXV5b3VuZyBLaW0gIDxneXV5
b3VuZy5raW1Ac2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgS2VudCBUYW11cmEu
Ci0KLSAgICAgICAgW0VGTF0gUmVwbGFjZSBXVEZfVVNFX1NPVVAgbWFjcm8gd2l0aCBVU0UoU09V
UCkKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU1Mjk2
Ci0KLSAgICAgICAgZXdrX2Nvb2tpZXMuY3BwIGFuZCBld2tfbWFpbi5jcHAgYXJlIHVzaW5nIFdU
Rl9VU0VfU09VUCBtYWNyby4gCi0gICAgICAgIFNvLCBhY2NvcmRpbmcgdG8gcG9saWN5IGRlY2lz
aW9uIG1hY3JvIHVzYWdlLCB0aGUgbWFjcm8gbmVlZHMgdG8gCi0gICAgICAgIGJlIGNoYW5nZWQg
d2l0aCBVU0UoU09VUCkuCi0KLSAgICAgICAgKiBld2svZXdrX2Nvb2tpZXMuY3BwOgotICAgICAg
ICAoZXdrX2Nvb2tpZXNfZmlsZV9zZXQpOgotICAgICAgICAoZXdrX2Nvb2tpZXNfY2xlYXIpOgot
ICAgICAgICAoZXdrX2Nvb2tpZXNfZ2V0X2FsbCk6Ci0gICAgICAgIChld2tfY29va2llc19jb29r
aWVfZGVsKToKLSAgICAgICAgKGV3a19jb29raWVzX2Nvb2tpZV9mcmVlKToKLSAgICAgICAgKGV3
a19jb29raWVzX3BvbGljeV9zZXQpOgotICAgICAgICAoZXdrX2Nvb2tpZXNfcG9saWN5X2dldCk6
Ci0gICAgICAgICogZXdrL2V3a19tYWluLmNwcDoKLSAgICAgICAgKF9ld2tfaW5pdF9ib2R5KToK
LQotMjAxMS0wMi0yNCAgUGV0ZXIgS2FzdGluZyAgPHBrYXN0aW5nQGdvb2dsZS5jb20+Ci0KLSAg
ICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCi0KLSAgICAgICAgRHJvcCB0aGUgIlU7ICIg
ZW5jcnlwdGlvbiBsZXZlbCBmcm9tIHRoZSBVc2VyIEFnZW50IHN0cmluZy4KLSAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU0NTY2Ci0KLSAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3Jl
Ojpjb21wb3NlVXNlckFnZW50KToKLSAgICAgICAgKiBld2svZXdrX3NldHRpbmdzLmNwcDoKLSAg
ICAgICAgKGV3a19zZXR0aW5nc19kZWZhdWx0X3VzZXJfYWdlbnRfZ2V0KToKLQotMjAxMS0wMi0y
MyAgUGF0cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Via2l0Lm9yZz4KLQotICAgICAgICBSZXZp
ZXdlZCBieSBBbGV4ZXkgUHJvc2t1cnlha292LgotCi0gICAgICAgIFVzZSBBdG9taWNTdHJpbmc6
OmZyb21VVEY4IGluc3RlYWQgb2YgU3RyaW5nOjpmcm9tVVRGOCBmb3IgQXRvbWljU3RyaW5ncwot
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQ5OTIKLQot
ICAgICAgICBBbHNvIHJlbW92ZSB0aGUgV1RGIG5hbWVzcGFjZSBmcm9tIEF0b21pY1N0cmluZyBh
bmQgU3RyaW5nLgotCi0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLQotMjAxMS0wMi0yMiAg
TGFzemxvIEdvbWJvcyAgPGxhc3psby4xLmdvbWJvc0Bub2tpYS5jb20+Ci0KLSAgICAgICAgUmV2
aWV3ZWQgYnkgQWxleGV5IFByb3NrdXJ5YWtvdi4KLQotICAgICAgICBEcm9wIHRoZSBsYW5ndWFn
ZSB0YWcgcGFydCBmcm9tIHRoZSBVc2VyIEFnZW50IHN0cmluZwotICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQ1NjAKLQotICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OmNvbXBv
c2VVc2VyQWdlbnQpOgotICAgICAgICAqIGV3ay9ld2tfc2V0dGluZ3MuY3BwOgotICAgICAgICAo
ZXdrX3NldHRpbmdzX2RlZmF1bHRfdXNlcl9hZ2VudF9nZXQpOgotCi0yMDExLTAyLTIxICBMdWth
c3ogU2xhY2hjaWFrICA8bC5zbGFjaGNpYWtAc2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgUmV2aWV3
ZWQgYnkgQW50b25pbyBHb21lcy4KLQotICAgICAgICBbRUZMXSBGaXhlZCBtaXNzaW5nIHNwYXRp
YWwgbmF2aWdhdGlvbiBzZXR0aW5nIGluaXRpYWxpemF0aW9uLiBEb3h5Z2VuIGNvbW1lbnRzIGFk
ZGVkLgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQ4
MDYKLQotICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChfZXdrX3ZpZXdfcHJp
dl9uZXcpOiBzcGF0aWFsIG5hdmlnYXRpb24gc2V0dGluZyBpbml0aWFsaXphdGlvbiBhZGRlZAot
Ci0yMDExLTAyLTIwICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+Ci0K
LSAgICAgICAgUmV2aWV3ZWQgYnkgS2VudCBUYW11cmEuCi0KLSAgICAgICAgW0VGTF0gRml4IGNv
ZGluZyBzdHlsZSBlcnJvcnMgaW4gdGlsZWQgQlMgYW5kIGV3a193aW5kb3dfZmVhdHVyZS5oCi0g
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NDg0MgotCi0g
ICAgICAgIEZpeCBzdHlsZSBlcnJvcnMgaW4gZXdrIGZpbGVzLgotCi0gICAgICAgICogZXdrL2V3
a190aWxlZF9iYWNraW5nX3N0b3JlLmg6Ci0gICAgICAgICogZXdrL2V3a190aWxlZF9tYXRyaXgu
aDoKLSAgICAgICAgKiBld2svZXdrX3RpbGVkX21vZGVsLmg6Ci0gICAgICAgICogZXdrL2V3a193
aW5kb3dfZmVhdHVyZXMuaDoKLQotMjAxMS0wMi0xOSAgTHVrYXN6IFNsYWNoY2lhayAgPGwuc2xh
Y2hjaWFrQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcu
Ci0KLSAgICAgICAgW0VGTF0gRWxpbWluYXRlZCBlcnJvciB3aGVuIC53ZWJraXQgZGlyZWN0b3J5
IGRvZXNuJ3QgZXhpc3QuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD01NDgxMwotCi0gICAgICAgICogZXdrL2V3a19tYWluLmNwcDoKLSAgICAgICAgKF9l
d2tfaW5pdF9ib2R5KToKLQotMjAxMS0wMi0xOSAgTHVrYXN6IFNsYWNoY2lhayAgPGwuc2xhY2hj
aWFrQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4LgotCi0gICAg
ICAgIFNvdXBTZXNzaW9uIGJ1aWxkIGJyZWFrIGZpeAotICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQ3OTYKLQotICAgICAgICAqIGV3ay9ld2tfc2V0dGlu
Z3MuY3BwOgotICAgICAgICAoZXdrX3NldHRpbmdzX3Byb3h5X3VyaV9zZXQpOgotCi0yMDExLTAy
LTE5ICBMdWthc3ogU2xhY2hjaWFrICA8bC5zbGFjaGNpYWtAc2Ftc3VuZy5jb20+Ci0KLSAgICAg
ICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KLQotICAgICAgICBbRUZMXSBVc2Ugc3RhbmRh
cmQgV2ViQ29yZTo6aG9tZURpcmVjdG9yeVBhdGggbWV0aG9kIGluc3RlYWQgb2YgcmVpbXBsZW1l
bnRpbmcgaXQKLSAgICAgICAgaHR0cHM6Ly93ZWJraXQub3JnL2IvNTQ3ODEKLQotICAgICAgICAq
IGV3ay9ld2tfbWFpbi5jcHA6Ci0gICAgICAgIChfZXdrX2luaXRfYm9keSk6Ci0KLTIwMTEtMDIt
MTkgIENoYXJsaWUgUmVpcyAgPGNyZWlzQGNocm9taXVtLm9yZz4KLQotICAgICAgICBSZXZpZXdl
ZCBieSBNaWhhaSBQYXJwYXJpdGEuCi0KLSAgICAgICAgRW5zdXJlIGxvYWRpbmcgaGFzIHN0b3Bw
ZWQgaW4gSGlzdG9yeUNvbnRyb2xsZXI6OmdvVG9JdGVtCi0gICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NDUxNwotCi0gICAgICAgIEFkZCBhIEZyYW1lTG9h
ZGVyQ2xpZW50IGNhbGxiYWNrIGZvciB3aGV0aGVyIHRvIHN0b3AgbG9hZGluZyBiZWZvcmUgZ29U
b0l0ZW0uCi0KLSAgICAgICAgVGVzdDogaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2ZvcndhcmQtdG8t
ZnJhZ21lbnQtZmlyZXMtb25sb2FkLmh0bWwKLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xp
ZW50RWZsOjpzaG91bGRTdG9wTG9hZGluZ0Zvckhpc3RvcnlJdGVtKTogQWRkZWQuCi0gICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuaDoKLQotMjAxMS0wMi0xOCAg
R3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFJldmll
d2VkIGJ5IEtlbnQgVGFtdXJhLgotCi0gICAgICAgIFtFRkxdIEZpeCBjb2Rpbmcgc3R5bGUgZXJy
b3JzIGluIGV3a19mcmFtZS5oCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD01NDcxOAotCi0gICAgICAgIEZpeCBzdHlsZSBlcnJvcnMgaW4gZXdrX2ZyYW1l
LmguCi0KLSAgICAgICAgKiBld2svZXdrX2ZyYW1lLmg6Ci0KLTIwMTEtMDItMTggIEd5dXlvdW5n
IEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBB
bnRvbmlvIEdvbWVzLgotCi0gICAgICAgIFtFRkxdIFJlbW92ZSBwcm94eSBmZWF0dXJlIG9mIHNv
dXAgd2hlbiBwcm94eSBpcyBudWxsCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01NDYyMQotCi0gICAgICAgIFdoZW4gcHJveHkgdmFsdWUgaXMgTlVMTCwg
cmVtb3ZlIHByb3h5IGZlYXR1cmUgaW4gc291cC4KLQotICAgICAgICAqIGV3ay9ld2tfc2V0dGlu
Z3MuY3BwOgotICAgICAgICAoZXdrX3NldHRpbmdzX3Byb3h5X3VyaV9zZXQpOgotCi0yMDExLTAy
LTE4ICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+Ci0KLSAgICAgICAg
UmV2aWV3ZWQgYnkgS2VudCBUYW11cmEuCi0KLSAgICAgICAgW0VGTF0gRml4IGNvZGluZyBzdHls
ZSBlcnJvcnMgaW4gZXdrX3ZpZXcuaAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NTQ2MjQKLQotICAgICAgICBGaXggc3R5bGUgZXJyb3JzIGluIGV3a192
aWV3LmguCi0KLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoZXdrX3ZpZXdf
cHJlX3JlbmRlcl9yZWxhdGl2ZV9yYWRpdXMpOgotICAgICAgICAqIGV3ay9ld2tfdmlldy5oOgot
Ci0yMDExLTAyLTE4ICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUB3ZWJraXQub3JnPgotCi0g
ICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4IGFmdGVyIHI3ODYzNCBhbmQgcjc4Nzg2LgotCi0g
ICAgICAgICogQ01ha2VMaXN0c0VmbC50eHQ6Ci0KLTIwMTEtMDItMTcgIFJ5dWFuIENob2kgIDxy
eXVhbi5jaG9pQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEtlbnQgVGFtdXJh
LgotCi0gICAgICAgIFtFRkxdIFBvc3NpYmxlIGNyYXNoIG9mIGV3a19mcmFtZV9jb250ZW50c19z
ZXQKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU0MDkx
Ci0KLSAgICAgICAgVXNlIGxlbmd0aCBvZiBjb250ZW50cyBpZiBjb250ZW50c19zaXplIHBhcmFt
ZXRlciBpcyBiaWdnZXIgdGhhbiBsZW5ndGgKLSAgICAgICAgb2YgY29udGVudHMuCi0KLSAgICAg
ICAgKiBld2svZXdrX2ZyYW1lLmNwcDoKLSAgICAgICAgKF9ld2tfZnJhbWVfY29udGVudHNfc2V0
X2ludGVybmFsKToKLQotMjAxMS0wMi0xNyAgR3J6ZWdvcnogQ3phamtvd3NraSAgPGcuY3phamtv
d3NraUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBLZW50IFRhbXVyYS4KLQot
ICAgICAgICBEb3h5Z2VuIGRvY3VtZW50YXRpb24gZm9yIGV3ayBjb29raWVzCi0gICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NDU1MwotCi0gICAgICAgICog
ZXdrL2V3a19jb29raWVzLmNwcDoKLSAgICAgICAgKGV3a19jb29raWVzX2ZpbGVfc2V0KToKLSAg
ICAgICAgKGV3a19jb29raWVzX3BvbGljeV9zZXQpOgotICAgICAgICAoZXdrX2Nvb2tpZXNfcG9s
aWN5X2dldCk6Ci0gICAgICAgICogZXdrL2V3a19jb29raWVzLmg6Ci0KLTIwMTEtMDItMTYgIEd5
dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBVbnJldmll
d2VkIGJ1aWxkIGZpeC4KLQotICAgICAgICBbRUZMXSBCdWlsZCBicmVhayBvbiByNzg2MzQKLSAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU0NjAyCi0KLSAg
ICAgICAgQnVpbGQgZXJyb3IgYmVjYXVzZSBvZiByNzg2MzQuCi0KLSAgICAgICAgKiBDTWFrZUxp
c3RzRWZsLnR4dDoKLQotMjAxMS0wMS0yNiAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xl
LmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtlIE5pd2EuCi0KLSAgICAgICAgUmVm
YWN0b3Jpbmc6IEV4dHJhY3QgVGV4dENoZWNrZXJDbGllbnQgZnJvbSBFZGl0b3JDbGllbnQKLSAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUzMjEzCi0KLSAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuaDoKLSAgICAgICAgKFdlYkNv
cmU6OkVkaXRvckNsaWVudEVmbDo6dGV4dENoZWNrZXIpOgotCi0yMDExLTAyLTA3ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFy
dGguCi0KLSAgICAgICAgQWRkIEVkaXRvckNsaWVudCBjYWxsYmFja3MgdG8gb3ZlcnJpZGUgaXNE
T01QYXN0ZUFsbG93ZWQgYW5kIGphdmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9hcmQKLSAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUyNDE3Ci0KLSAgICAgICAg
QWRkZWQgdHdvIGNhbGxiYWNrIGZ1bmN0aW9ucywgY2FuQ29weUN1dCBhbmQgY2FuUGFzdGUgdG8g
RWRpdG9yQ2xpZW50LiBUaGV5IGFyZSBjdXJyZW50bHkKLSAgICAgICAgbm90IGltcGxlbWVudGVk
LgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmNwcDoKLSAgICAg
ICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEVmbDo6Y2FuQ29weUN1dCk6IEFkZGVkLgotICAgICAg
ICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50RWZsOjpjYW5QYXN0ZSk6IEFkZGVkLgotICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5oOgotCi0yMDExLTAyLTA4ICBBZGFtIEJh
cnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlk
ZWwuCi0KLSAgICAgICAgUmVtb3ZlIG9ycGhhbiBjb2RlIGZyb20gb2xkIHBhcnNlcgotICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTM5ODQKLQotICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oOgotCi0yMDExLTAyLTA4ICBMdWNh
cyBEZSBNYXJjaGkgIDxsdWNhcy5kZW1hcmNoaUBwcm9mdXNpb24ubW9iaT4KLQotICAgICAgICBV
bnJldmlld2VkIGJ1aWxkIGZpeC4KLQotICAgICAgICBbRUZMXSBGaXggd2hlbiBidWlsZGluZyB3
aXRoIGN1cmwgYmFja2VuZC4KLQotICAgICAgICAqIGV3ay9ld2tfc2V0dGluZ3MuY3BwOgotICAg
ICAgICAoZXdrX3NldHRpbmdzX3Byb3h5X3VyaV9nZXQpOgotCi0yMDExLTAyLTA3ICBFbnJpY2Eg
Q2FzdWNjaSAgPGVucmljYUBhcHBsZS5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgQWRhbSBSb2Jl
biBhbmQgRGFyaW4gQWRsZXIuCi0KLSAgICAgICAgV2ViS2l0MjogZHJhZyBhbmQgZHJvcCBzdXBw
b3J0IG9uIFdpbmRvd3MuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD01Mjc3NQotCi0gICAgICAgIFJlbW92ZWQgY3JlYXRlRHJhZ0ltYWdlRm9yTGluayBm
cm9tIERyYWdDbGllbnQuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50RWZs
LmNwcDoKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50RWZsLmg6Ci0KLTIwMTEt
MDItMDcgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdlYmtpdC5vcmc+Ci0KLSAgICAgICAg
UmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KLQotICAgICAgICBbRUZMXSBGcmFtZUxvYWRlckNs
aWVudCBjYWxscyBsb2FkVVJMSW5DaGlsZEZyYW1lIG9uIHRoZSBjaGlsZCdzIGZyYW1lIGxvYWRl
cgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTM4OTIK
LQotICAgICAgICAqIGV3ay9ld2tfZnJhbWUuY3BwOgotICAgICAgICAoZXdrX2ZyYW1lX2NoaWxk
X2FkZCk6IFVzZSB0aGUgbG9hZGVyIG9mIHRoZSBjb3JlIGZyYW1lIGluc3RlYWQuCi0KLTIwMTEt
MDItMDMgIEFkYW0gTGFuZ2xleSAgPGFnbEBjaHJvbWl1bS5vcmc+Ci0KLSAgICAgICAgUmV2aWV3
ZWQgYnkgQWRhbSBCYXJ0aC4KLQotICAgICAgICBQbHVtYiBtaXhlZCBzY3JpcHQgVVJMIHRvIEZy
YW1lTG9hZGVyQ2xpZW50Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD01MjM4NAotCi0gICAgICAgIFJlZ3Jlc3Npb25zIGNvdmVyZWQgYnkgaHR0cC90ZXN0
cy9zZWN1cml0eS9taXhlZENvbnRlbnQvKgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGll
bnRFZmw6OmRpZFJ1bkluc2VjdXJlQ29udGVudCk6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRFZmwuaDoKLQotMjAxMS0wMi0wMSAgR3l1eW91bmcgS2ltICA8Z3l1
eW91bmcua2ltQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEFudG9uaW8gR29t
ZXMuCi0KLSAgICAgICAgW0VGTF0gQWRkIGFuIEFQSSB0byBnZXQgcHJveHkgYWRkcmVzcy4KLSAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUyOTkwCi0KLSAg
ICAgICAgR2V0cyB0aGUgcHJveHkgVVJJIGZyb20gbmV0d29yayBiYWNrZW5kLiBUaGlzIEFQSSBy
ZXR1cm5zIGEgcHJveHkgVVJJCi0gICAgICAgIHdoaWNoIGlzIHNldCB1cCBieSBld2tfc2V0dGlu
Z3NfcHJveHlfdXJpX3NldCgpLiBCdXQsIGl0IG9ubHkgaW1wbGVtZW50cwotICAgICAgICB0aGlz
IEFQSSBmb3IgbGlic291cCBiYWNrZW5kLgotCi0gICAgICAgICogZXdrL2V3a19zZXR0aW5ncy5j
cHA6Ci0gICAgICAgIChld2tfc2V0dGluZ3NfcHJveHlfdXJpX2dldCk6Ci0gICAgICAgICogZXdr
L2V3a19zZXR0aW5ncy5oOgotCi0yMDExLTAxLTI5ICBEYW4gV2luc2hpcCAgPGRhbndAZ25vbWUu
b3JnPgotCi0gICAgICAgIFJldmlld2VkIGJ5IFhhbiBMb3Blei4KLQotICAgICAgICBbR1RLXSBS
ZW1vdmUgSEFWRV9MSUJTT1VQXzJfMjlfOTAgY29uZGl0aW9uYWxzOyB3ZSBkZXBlbmQgb24KLSAg
ICAgICAgbGlic291cCAyLjMzLjEgbm93LgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NTA2NzUKLQotICAgICAgICAqIGV3ay9ld2tfY29va2llcy5jcHA6
Ci0gICAgICAgIChld2tfY29va2llc19maWxlX3NldCk6Ci0gICAgICAgIChld2tfY29va2llc19w
b2xpY3lfc2V0KToKLSAgICAgICAgKGV3a19jb29raWVzX3BvbGljeV9nZXQpOgotCi0yMDExLTAx
LTI4ICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQg
YnkgU2FtIFdlaW5pZy4KLQotICAgICAgICA8c2VsZWN0PiBjYW4ndCBkaXNwbGF5IHJpZ2h0LXRv
LWxlZnQgKHJ0bCkgbGFuZ3VhZ2VzCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xOTc4NQotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xp
ZW50RWZsLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEVmbDo6c2VsZWN0SXRl
bUFsaWdubWVudEZvbGxvd3NNZW51V3JpdGluZ0RpcmVjdGlvbik6IEFkZGVkLgotICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oOgotCi0yMDExLTAxLTI3ICBOYXRlIENo
YXBpbiAgPGphcGhldEBjaHJvbWl1bS5vcmc+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBC
YXJ0aC4KLQotICAgICAgICBVc2UgRG9jdW1lbnQ6OnVybCgpIGluc3RlYWQgb2YgRnJhbWVMb2Fk
ZXI6OnVybCgpLgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NDExNjUKLQotICAgICAgICAqIGV3ay9ld2tfZnJhbWUuY3BwOgotICAgICAgICAoZXdrX2Zy
YW1lX3VyaV9jaGFuZ2VkKToKLQotMjAxMS0wMS0xNCAgUGF0cmljayBHYW5zdGVyZXIgIDxwYXJv
Z2FAd2Via2l0Lm9yZz4KLQotICAgICAgICBVbnJldmlld2VkLiBUcnkgdG8gZml4IEVGTCBidWls
ZC4KLQotICAgICAgICAqIGV3ay9ld2tfZnJhbWUuY3BwOgotICAgICAgICAoZXdrX2ZyYW1lX3Nj
cm9sbF9hZGQpOiBBZGRlZCBXZWJDb3JlIG5hbWVzcGFjZSB0byBJbnRTaXplLgotICAgICAgICAq
IGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChfZXdrX3ZpZXdfdmlld3BvcnRfYXR0cmlidXRl
c19jb21wdXRlKTogRGl0dG8uCi0KLTIwMTEtMDEtMTQgIFRvbnkgR2VudGlsY29yZSAgPHRvbnln
QGNocm9taXVtLm9yZz4KLQotICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeC4KLQotICAgICAg
ICBGaXggUXQgYnVpbGQgYWZ0ZXIgcjc1ODM3Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD01MjQ5NAotCi0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoK
LQotMjAxMS0wMS0wOSAgWGlhbnpodSBXYW5nIDxwaG5peHd4ekBnbWFpbC5jb20+Ci0KLSAgICAg
ICAgUmV2aWV3ZWQgYnkgRGFyaW4gRmlzaGVyLgotCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MTQ0MQotICAgICAgICBjcmVhdGVXaW5kb3cgbWV0aG9k
IHNob3VsZCBvbmx5IGRvIHdpbmRvdy1jcmVhdGluZyB3aXRob3V0IFVSTCBuYXZpZ2F0aW9uCi0K
LSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwOgotICAgICAgICAo
V2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZsOjpjcmVhdGVXaW5kb3cpOgotCi0yMDEwLTEyLTI3ICBS
YWZhZWwgQW50b2dub2xsaSAgPGFudG9nbm9sbGlAcHJvZnVzaW9uLm1vYmk+Ci0KLSAgICAgICAg
UmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCi0KLSAgICAgICAgW0VGTF0g
U2V0IHRoZSBmcmFtZSBzbWFydCBvYmplY3QgYmFzZSBjbGlwcGVyIHRvIG5vbi1zdGF0aWMuCi0g
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MTU1MgotCi0g
ICAgICAgIFRoZSBiYXNlIGNsaXBwZXIgb2YgdGhlIGNsaXBwZWQgc21hcnQgb2JqZWN0LCB3aGlj
aCBpcyB0aGUgcGFyZW50Ci0gICAgICAgIGNsYXNzIG9mIHRoZSBld2tfZnJhbWUgY2xhc3MgaXMg
YSBzdGF0aWMgY2xpcHBlci4gSXQncyBub3JtYWxseSBvbmx5Ci0gICAgICAgIHVzZWQgZm9yIHNo
b3dpbmcvaGlkaW5nIHRoZSBvYmplY3QsIGJ1dCBpbiB0aGUgY2FzZSBvZiB0aGUgZXdrX2ZyYW1l
LAotICAgICAgICBpdCBuZWVkcyB0byBjbGlwIHRoZSBvYmplY3QgdG8gaXRzIGRpbWVuc2lvbiwg
aW4gb3JkZXIgdG8gY2xpcAotICAgICAgICBzY3JvbGxiYXJzIG9mIGlubmVyIGZyYW1lcy4KLQot
ICAgICAgICBTZXR0aW5nIGl0IHRvIG5vbi1zdGF0aWMgbWFrZXMgdGhlIGNsaXBwZXIgdG8gYmUg
YXV0b21hdGljYWxseSBtb3ZlZAotICAgICAgICBieSB0aGUgcGFyZW50IGNsYXNzLCB0aHVzIHN0
YXlpbmcgb24gdGhlIGNvcnJlY3QgcG9zaXRpb24gd2hlbiB0aGUKLSAgICAgICAgZnJhbWUgaXMg
bW92ZWQuCi0KLSAgICAgICAgVGhpcyBjaGFuZ2UgbmVlZGVkIHRvIGJlIGRvbmUgYWZ0ZXIgdGhl
IGFkb3B0aW9uIG9mIHRoZSBzdGF0aWMgY2xpcHBlcgotICAgICAgICBvbiB0aGUgY2xpcHBlZCBz
bWFydCBiYXNlIGNsYXNzLgotCi0gICAgICAgICogZXdrL2V3a19mcmFtZS5jcHA6Ci0gICAgICAg
IChfZXdrX2ZyYW1lX3NtYXJ0X2FkZCk6Ci0KLTIwMTAtMTItMjQgIFJ5dWFuIENob2kgIDxyeXVh
bi5jaG9pQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUg
Q2hyaXN0aWFuc2VuLgotCi0gICAgICAgIFtFRkxdIEFkZCBvcHRpb24gdG8gZW5hYmxlIFRvdWNo
IEV2ZW50cy4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTQ5MTI1Ci0KLSAgICAgICAgSW1wbGVtZW50IGV3a19mcmFtZV9mZWVkX3RvdWNoX2V2ZW50IHRv
IGZlZWQgdG91Y2ggZXZlbnRzLiBCZWNhdXNlIEVGTAotICAgICAgICBkb2Vzbid0IGhhdmUgdG91
Y2ggZXZlbnRzLCBBcHBsaWNhdGlvbiBzaG91bGQgZ2VuZXJhdGUgYW5kIHBhc3MgaXQuCi0KLSAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuaDoKLSAgICAgICAgKFdlYkNv
cmU6OkNocm9tZUNsaWVudEVmbDo6bmVlZFRvdWNoRXZlbnRzKToKLSAgICAgICAgKiBld2svZXdr
X2ZyYW1lLmNwcDoKLSAgICAgICAgKGV3a19mcmFtZV9mZWVkX3RvdWNoX2V2ZW50KToKLSAgICAg
ICAgKiBld2svZXdrX2ZyYW1lLmg6Ci0KLTIwMTAtMTItMjIgIFNhbSBXZWluaWcgIDxzYW1Ad2Vi
a2l0Lm9yZz4KLQotICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KLQotICAgICAgICBX
ZWJLaXQyIG5lZWRzIHRvIG1pcnJvciB0aGUgZnJhbWUgdHJlZSBpbiB0aGUgVUlQcm9jZXNzCi0g
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MTU0NgotCi0g
ICAgICAgIC0gQWRkIGNsaWVudCBmdW5jdGlvbnMgdG8gbm90aWZ5IHRoYXQgYSBmcmFtZSBoYXMg
YmVlbiBhZGRlZCBvcgotICAgICAgICAgIHJlbW92ZWQgZnJvbSB0aGUgcGFnZSBjYWNoZS4KLQot
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcDoKLSAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaWRTYXZlVG9QYWdlQ2FjaGUpOgot
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpZFJlc3RvcmVGcm9tUGFn
ZUNhY2hlKToKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5o
OgotCi0yMDEwLTEyLTIyICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgotCi0gICAg
ICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgotCi0gICAgICAgIEVkaXRvci5oIGRvZXNuJ3Qg
bmVlZCB0byBpbmNsdWRlIFNlbGVjdGlvbkNvbnRyb2xsZXIuaAotICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTE0NDEKLQotICAgICAgICBSZW5hbWVkIFNl
bGVjdGlvbkNvbnRyb2xsZXI6OkVEaXJlY3Rpb24gdG8gU2VsZWN0aW9uRGlyZWN0aW9uLgotCi0g
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdl
YkNvcmU6OkVkaXRvckNsaWVudEVmbDo6aGFuZGxlRWRpdGluZ0tleWJvYXJkRXZlbnQpOgotCi0y
MDEwLTEyLTIzICBMdWNhcyBEZSBNYXJjaGkgIDxsdWNhcy5kZW1hcmNoaUBwcm9mdXNpb24ubW9i
aT4KLQotICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KLQot
ICAgICAgICBbRUZMXSBGaXggQ29udGV4dE1lbnUgcmVtb3ZhbAotICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTE1MzAKLQotICAgICAgICBGaXggQ29udGV4
dE1lbnUgcmVtb3ZhbAotCi0gICAgICAgIEluIHI3NDIwNyB0aGUgc3VwcG9ydCBmb3IgQ29udGV4
dE1lbnUgd2FzIHJlbW92ZWQgZnJvbSBFRkwgd2hpbGUgdGhlCi0gICAgICAgIGNvZGUgaXMgYmVp
bmcgcG9ydGVkIHRvIHRoZSBuZXcgQ1JPU1NfUExBVEZPUk1fTUVOVVMgZHVlIHRvIGJ1aWxkCi0g
ICAgICAgIGJyZWFrYWdlLiAgSG93ZXZlciB0aGVyZSB3ZXJlIHNvbWUgbWlzc2luZyByZW1vdmFs
cyBpbiB0aGUgc2h1dGRvd24KLSAgICAgICAgbG9naWMgdGhhdCBpbnRyb2R1Y2VkIGEgYnVnLCBs
ZWFkaW5nIHRvIGEgc2VnbWVudGF0aW9uIGZhdWx0IHdoZW4KLSAgICAgICAgQ29udGV4Q29udHJv
bGxlciB3YXMgZGVzdHJveWVkLgotCi0gICAgICAgIFRoZSBiZXN0IHdheSB0byBlZmZlY3RpdmVs
eSBkaXNhYmxlIHRoZSBDb250ZXh0TWVudSBpcyB0byBjb25kaXRpb25hbGx5Ci0gICAgICAgIGNv
bXBpbGUgdGhlIG1lYW5pbmdmdWwgc3R1ZmYgYnkgc3Vycm91bmRpbmcgd2l0aCAiI2lmCi0gICAg
ICAgIEVOQUJMRShDT05URVhUX01FTlVTKSIgYW5kIHRoZW4gZGlzYWJsaW5nIGl0IGluIENNYWtl
LgotCi0gICAgICAgICogZXdrL2V3a19jb250ZXh0bWVudS5jcHA6IHN1cnJvdW5kIG5lZWQgcGFy
dHMgd2l0aCAjaWYKLSAgICAgICAgRU5BQkxFKENPTlRFWFRfTUVOVVMpLgotICAgICAgICAoZXdr
X2NvbnRleHRfbWVudV9kZXN0cm95KTogZGl0dG8uCi0gICAgICAgIChld2tfY29udGV4dF9tZW51
X2l0ZW1fc2VsZWN0KTogZGl0dG8uCi0gICAgICAgICogZXdrL2V3a19wcml2YXRlLmg6IGRpdHRv
LgotICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6IGRpdHRvLgotCi0yMDEwLTEyLTIzICBMdWNh
cyBEZSBNYXJjaGkgIDxsdWNhcy5kZW1hcmNoaUBwcm9mdXNpb24ubW9iaT4KLQotICAgICAgICBS
ZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KLQotICAgICAgICBbRUZMXSBD
bGVhbiB3YXJuaW5ncyBpbiBUaWxlZCBCYWNraW5nIFN0b3JlCi0gICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MTUyOQotCi0gICAgICAgIFRpbGVkIGJhY2tp
bmcgc3RvcmUgaW4gRUZMIHdhcyBnaXZpbmcgdGhlIGZvbGxvd2luZyB3YXJuaW5ncyB0aGF0IGFy
ZQotICAgICAgICBnb25lIG5vdzoKLQotICAgICAgICAtIFN0YXRpYyBmdW5jdGlvbiBkZWZpbmVk
IGJ1dCBub3QgdXNlZDsKLSAgICAgICAgLSBDb21wYXJpc29uIGJldHdlZW4gc2lnbmVkIGFuZCB1
bnNpZ25lZCBpbnRlZ2VyIGV4cHJlc3Npb25zOwotCi0gICAgICAgICogZXdrL2V3a190aWxlZF9i
YWNraW5nX3N0b3JlLmM6Ci0gICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfaXRlbV9m
aWxsKToKLSAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9zbWFydF9jYWxjdWxhdGUp
OgotICAgICAgICAqIGV3ay9ld2tfdGlsZWRfbWF0cml4LmM6Ci0gICAgICAgIChfZXdrX3RpbGVf
bWF0cml4X3NsaWNlcl9zZXR1cCk6Ci0KLTIwMTAtMTItMjMgIEd5dXlvdW5nIEtpbSAgPGd5dXlv
dW5nLmtpbUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBVbnJldmlld2VkIGJ1aWxkIHdhcm5pbmcg
Zml4LgotCi0gICAgICAgIFtFRkxdIFJlbW92ZSB3YXJuaW5nIG1lc3NhZ2VzIGR1cmluZyB0aGUg
d2Via2l0IGVmbCBjb21waWxpbmcKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTUxNTIwCi0KLSAgICAgICAgUmVtb3ZlIGJ1aWxkIHdhcm5pbmcgbWVzc2Fn
ZXMuCi0KLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoX2V3a192aWV3X3Nt
YXJ0X3Nob3cpOgotICAgICAgICAoX2V3a192aWV3X3NtYXJ0X2hpZGUpOgotICAgICAgICAqIGV3
ay9ld2tfdmlldy5oOgotCi0yMDEwLTEyLTIyICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1A
c2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21lcy4KLQotICAg
ICAgICBbRUZMXSBTZXRzIGRlZmF1bHQgdXNlciBhZ2VudAotICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDc5MDMKLQotICAgICAgICBJZiBhcHBsY2F0aW9u
KGUuZyBFV2ViTGF1bmNoZXIpIGRvZXNuJ3Qgc2V0IHVzZXIgYWdlbnQsIFdlYktpdCBFRkwgZG9l
c24ndAotICAgICAgICBzZXQgdXNlciBhZ2VudC4gSG93ZXZlciwgd2UgbmVlZCB0byBzZXQgdXNl
ciBhZ2VudCBieSBkZWZhdWx0LiBCZWNhdXNlLCBzb21lCi0gICAgICAgIHdlYiBzaXRlcyBzZW5k
IGRpZmZlcmVudCBwYWdlcyBhY2NvcmRpbmcgdG8gdXNlciBhZ2VudC4KLQotICAgICAgICAqIGV3
ay9ld2tfcHJpdmF0ZS5oOgotICAgICAgICAqIGV3ay9ld2tfc2V0dGluZ3MuY3BwOgotICAgICAg
ICAoX2V3a19zZXR0aW5nc193ZWJraXRfcGxhdGZvcm0pOgotICAgICAgICAoX2V3a19zZXR0aW5n
c193ZWJraXRfb3NfdmVyc2lvbik6Ci0gICAgICAgIChld2tfc2V0dGluZ3NfZGVmYXVsdF91c2Vy
X2FnZW50X2dldCk6Ci0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAgKF9ld2tf
dmlld19wcml2X25ldyk6Ci0KLTIwMTAtMTItMTYgIExlYW5kcm8gUGVyZWlyYSAgPGxlYW5kcm9A
cHJvZnVzaW9uLm1vYmk+Ci0KLSAgICAgICAgW0VGTF0gVW5yZXZpZXdlZCBidWlsZCBmaXguCi0K
LSAgICAgICAgRGlzYWJsZSBDb250ZXh0TWVudSBzdXBwb3J0IGZvciBub3cgd2hpbGUgc3VwcG9y
dCBmb3IKLSAgICAgICAgQ1JPU1NfUExBVEZPUk1fTUVOVVMgaXMgd3JpdHRlbi4KLQotICAgICAg
ICAqIENNYWtlTGlzdHNFZmwudHh0OgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0NvbnRleHRN
ZW51Q2xpZW50RWZsLmNwcDogUmVtb3ZlZC4KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9Db250
ZXh0TWVudUNsaWVudEVmbC5oOiBSZW1vdmVkLgotICAgICAgICAqIGV3ay9ld2tfY29udGV4dG1l
bnUuY3BwOgotICAgICAgICAoZXdrX2NvbnRleHRfbWVudV9pdGVtX2FwcGVuZCk6Ci0gICAgICAg
ICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAgKF9ld2tfdmlld19wcml2X25ldyk6Ci0KLTIw
MTAtMTItMTMgIEFsZXggQnJlZGFyaW9sIEdyaWxvICA8YWJncmlsb0Bwcm9mdXNpb24ubW9iaT4K
LQotICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgotCi0gICAgICAgIFJlbW92ZSBh
ZGphY2VudCB0aWxlcyByZW5kZXJpbmcgcXVldWUuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MDAyMwotCi0gICAgICAgIEluIHRoZSBjdXJyZW50IGlt
cGxlbWVudGF0aW9uIG9mIHRoZSB0aWxlZCBiYWNraW5nIHN0b3JlLCBvbmUgZXh0cmEgcm93Ci0g
ICAgICAgIGFuZCBjb2x1bW4gb2YgdGlsZXMgYXJlIG5lZWRlZCB0byByZW5kZXIgdGhlIGVudGly
ZSB2aWV3cG9ydC4gVGhlc2UKLSAgICAgICAgZXh0cmEgcm93L2NvbCBwcm92ZWQgdG8gYmUgZXhw
ZW5zaXZlIHdoZW4gYmVpbmcgcmVuZGVyZWQsIGFuZCB3ZXJlCi0gICAgICAgIHBvc3Rwb25lZCB0
byBhIHF1ZXVlIHRoYXQgd291bGQgcmVuZGVyIHRoZW0gYWZ0ZXIgcmVuZGVyaW5nIHRoZSBvdGhl
cgotICAgICAgICB0aWxlcyBvZiB0aGUgdmlld3BvcnQgZmlyc3QuIFRoaXMgYXBwcm9hY2ggY29t
cGxpY2F0ZWQgdW5uZWNlc3NhcmlseQotICAgICAgICB0aGUgbG9naWNzIHdpdGggbm8gZ2FpbiBm
b3Iga2VlcGluZyB0aGUgZXh0cmEgcm93IGFuZCBjb2x1bW4uIFRoaXMKLSAgICAgICAgY2hhbmdl
IHJlbW92ZXMgdGhpcyByZW5kZXJpbmcgcXVldWUsIGZvciBsYXRlciByZW1vdmluZyB0aGUgZXh0
cmEgcm93Ci0gICAgICAgIGFuZCBjb2x1bW4gb2YgdGlsZXMuCi0KLSAgICAgICAgKiBld2svZXdr
X3RpbGVkX2JhY2tpbmdfc3RvcmUuYzoKLSAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9y
ZV9wcmVfcmVuZGVyX3JlcXVlc3RfYWRkKToKLSAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19z
dG9yZV9wcmVfcmVuZGVyX3JlcXVlc3RfZmx1c2gpOgotICAgICAgICAoX2V3a190aWxlZF9iYWNr
aW5nX3N0b3JlX3ByZV9yZW5kZXJfcmVxdWVzdF9jbGVhcik6Ci0gICAgICAgIChfZXdrX3RpbGVk
X2JhY2tpbmdfc3RvcmVfcHJlX3JlbmRlcl9yZXF1ZXN0X3Byb2Nlc3Nfc2luZ2xlKToKLSAgICAg
ICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9pdGVtX2ZpbGwpOgotICAgICAgICAoX2V3a190
aWxlZF9iYWNraW5nX3N0b3JlX2l0ZW1fYWRkKToKLSAgICAgICAgKF9ld2tfdGlsZWRfYmFja2lu
Z19zdG9yZV9pdGVtX2RlbCk6Ci0gICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcmVj
YWxjX3JlbmRlcmVycyk6Ci0gICAgICAgIChld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVfcmVu
ZGVyX3JlZ2lvbik6Ci0gICAgICAgIChld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVfcmVuZGVy
X3JlbGF0aXZlX3JhZGl1cyk6Ci0gICAgICAgIChld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVf
cmVuZGVyX2NhbmNlbCk6Ci0KLTIwMTAtMTItMTMgIEFsZXggQnJlZGFyaW9sIEdyaWxvICA8YWJn
cmlsb0Bwcm9mdXNpb24ubW9iaT4KLQotICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5n
LgotCi0gICAgICAgIFJlbW92ZSBvbmUgcm93L2NvbHVtbiBvZiByZW5kZXJlcnMuCi0gICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MDQ1NgotCi0gICAgICAg
IFRoaXMgY2hhbmdlcyB0aGUgYWxnb3JpdGhtIGluIGEgd2F5IHRoYXQgaXQgd2lsbCByZXF1aXJl
IG9uZSBsZXNzIGNvbHVtbgotICAgICAgICBhbmQgcm93IG9mIHJlbmRlcmVycyB0byBmaWxsIHRo
ZSB2aWV3cG9ydC4gVGhlIGRpcmVjdCByZXN1bHQgb2YgdGhpcyBpcwotICAgICAgICB0aGF0IG5v
dyBsZXNzIHRpbGVzIG5lZWQgdG8gYmUgcmVuZGVyZWQgYXQgb25jZSB3aGVuIGRpc3BsYXlpbmcg
dGhlCi0gICAgICAgIHZpZXdwb3J0LgotCi0gICAgICAgICogZXdrL2V3a190aWxlZF9iYWNraW5n
X3N0b3JlLmM6Ci0gICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfc21hcnRfYWRkKToK
LSAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9yZWNhbGNfcmVuZGVyZXJzKToKLSAg
ICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV92aWV3X3dyYXBfdXApOgotICAgICAgICAo
X2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3ZpZXdfd3JhcF9kb3duKToKLSAgICAgICAgKF9ld2tf
dGlsZWRfYmFja2luZ19zdG9yZV92aWV3X3dyYXBfbGVmdCk6Ci0gICAgICAgIChfZXdrX3RpbGVk
X2JhY2tpbmdfc3RvcmVfdmlld193cmFwX3JpZ2h0KToKLSAgICAgICAgKF9ld2tfdGlsZWRfYmFj
a2luZ19zdG9yZV9zbWFydF9jYWxjdWxhdGVfb2Zmc2V0X2ZvcmNlKToKLSAgICAgICAgKF9ld2tf
dGlsZWRfYmFja2luZ19zdG9yZV9zbWFydF9jYWxjdWxhdGVfb2Zmc2V0KToKLSAgICAgICAgKF9l
d2tfdGlsZWRfYmFja2luZ19zdG9yZV9zbWFydF9jYWxjdWxhdGUpOgotICAgICAgICAoX2V3a190
aWxlZF9iYWNraW5nX3N0b3JlX3pvb21fc2V0X2ludGVybmFsKToKLSAgICAgICAgKGV3a190aWxl
ZF9iYWNraW5nX3N0b3JlX3pvb21fd2Vha19zZXQpOgotICAgICAgICAoZXdrX3RpbGVkX2JhY2tp
bmdfc3RvcmVfZml4X29mZnNldHMpOgotICAgICAgICAoZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVf
Zmx1c2gpOgotCi0yMDEwLTEwLTI4ICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29t
PgotCi0gICAgICAgIFJldmlld2VkIGJ5IE9qYW4gVmFmYWkuCi0KLSAgICAgICAgc3BlbGxjaGVj
ayBkb2VzIG5vdCBjaGVjayBwYXN0ZWQgdGV4dAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDAwOTIKLQotICAgICAgICBBZGRlZCBhIHN0dWIgaW1wbGVt
ZW1udGF0aW9uLgotICAgICAgICAKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGll
bnRFZmwuaDoKLSAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEVmbDo6cmVxdWVzdENoZWNr
aW5nT2ZTdHJpbmcpOgotCi0yMDEwLTEyLTA5ICBBbGV4IEJyZWRhcmlvbCBHcmlsbyAgPGFiZ3Jp
bG9AcHJvZnVzaW9uLm1vYmk+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21lcy4K
LQotICAgICAgICBbRUZMXSBBZGQgbWlzc2luZyBmdW5jdGlvbiBpbiBXZWJLaXQtRUZMIEFQSQot
Ci0gICAgICAgIEFkZCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV96b29tX3dlYWtfc21vb3RoX3Nj
YWxlX3NldCBmdW5jdGlvbiBpbgotICAgICAgICBXZWJLaXQtRUZMIEFQSS4gVGhpcyBmdW5jdGlv
biB3YXMgYWxyZWFkeSBpbXBsZW1lbnRlZCBidXQgbWlzc2luZyBpbgotICAgICAgICBoZWFkZXIg
ZmlsZS4KLQotICAgICAgICAqIGV3ay9ld2tfdGlsZWRfYmFja2luZ19zdG9yZS5oOgotCi0yMDEw
LTEyLTA5ICBBbGV4IEJyZWRhcmlvbCBHcmlsbyAgPGFiZ3JpbG9AcHJvZnVzaW9uLm1vYmk+Ci0K
LSAgICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21lcy4KLQotICAgICAgICBbRUZMXSBGaXgg
c2Nyb2xsIG9wZXJhdGlvbiBpbiBXZWJLaXQtRUZMCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MDc1MgotCi0gICAgICAgIEFkZCB0aGUgX2V3a192aWV3
X3Njcm9sbF9hZGQgY2FsbCBpbiBXZWJLaXQtRUZMIHNjcm9sbCBmdW5jdGlvbi4gVGhpcwotICAg
ICAgICBjYWxsIHdhcyB3cm9uZ2x5IHJlbW92ZWQgaW4gcHJldmlvdXMgY29tbWl0IGFuZCBwZXJm
b3JtcyB0aGUgc2Nyb2xsCi0gICAgICAgIG9wZXJhdGlvbiBvbiB0aGUgcGFnZS4KLQotICAgICAg
ICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChld2tfdmlld19zY3JvbGwpOgotCi0yMDEw
LTEyLTAzICBBbGV4IEJyZWRhcmlvbCBHcmlsbyAgPGFiZ3JpbG9AcHJvZnVzaW9uLm1vYmk+Ci0K
LSAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KLQotICAgICAgICBVcGRhdGUgdXNh
Z2Ugb2YgRWluYV9JdGVyYXRvciBkdWUgdG8gRUZMIGNoYW5nZXMuCi0gICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MDQ1NwotCi0gICAgICAgICogZXdrL2V3
a190aWxlZF9tb2RlbC5jOgotICAgICAgICAoZXdrX3RpbGVfdXBkYXRlc19wcm9jZXNzKToKLQot
MjAxMC0xMi0wMSAgSmlhIFB1ICA8anB1QGFwcGxlLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBi
eSBEYXJpbiBBZGxlci4KLQotICAgICAgICBTdXBwb3J0IG11bHRpcGxlIGNvcnJlY3Rpb24gY2Fu
ZGlkYXRlcyBwYW5lbCBmb3IgbWlzc3BlbGxlZCB3b3JkIG9uIE1hYyBPUyBYLgotICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTAxMzcKLSAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzg1NjgwNTk+Ci0KLSAgICAgICAgQWRvcHRlZCBuZXcgZnVuY3Rpb24gc2ln
bmF0dXJlIGRlZmluZWQgaW4gYmFzZSBjbGFzcy4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L0VkaXRvckNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRFZmw6
OmdldEd1ZXNzZXNGb3JXb3JkKToKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGll
bnRFZmwuaDoKLQotMjAxMC0xMS0yMiAgQWxleCBHcmlsbyAgPGFiZ3JpbG9AcHJvZnVzaW9uLm1v
Ymk+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCi0K
LSAgICAgICAgW0VGTF0gVGlsZWQgQmFja2luZyBTdG9yZSBmb3IgV2Via2l0LUVmbAotICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDUzOTcKLQotICAgICAg
ICBUaGlzIHRpbGUgYmFzZWQgYmFja2luZyBzdG9yZSBpcyBhIGdyaWQgb2YgdGlsZXMgd2hlcmUg
ZWFjaCB0aWxlIGlzCi0gICAgICAgIGFuIEV2YXNfT2JqZWN0IHNob3dpbmcgYSBwaWVjZSBvZiB0
aGUgcGFnZSBjb250ZW50LiBUaGUKLSAgICAgICAgbmV3IGV3a192aWV3X3RpbGVkLmMgaXMgYW4g
aW1wbGVtZW50YXRpb24gb2Ygc29tZSBvZiB0aGUgZnVuY3Rpb25zIG9mCi0gICAgICAgIHRoZSBv
cmlnaW5hbCBld2tfdmlldywgdGhhdCBtYWtlcyBjYWxscyB0byB0aGUgVGlsZWQgQmFja2luZyBT
dG9yZQotICAgICAgICBzcGVjaWZpYyBmdW5jdGlvbnMuCi0KLSAgICAgICAgVGhlIHJlbmRlcmlu
ZyBvY2N1cnMgaW4gdGhlIHBpeGVscyBzdG9yZWQgaW4gZWFjaCB0aWxlIChFdmFzX09iamVjdCks
Ci0gICAgICAgIGluIHRoZSBzYW1lIHdheSBhcyB0aGUgcHJldmlvdXMgc2luZ2xlIGJhY2tpbmcg
c3RvcmUuIFRpbGVzIG5vdCBiZWluZwotICAgICAgICBzaG93biBpbiB0aGUgdmlld3BvcnQgYXJl
IHN0b3JlZCBpbiBhIGNhY2hlLCBhbmQgY2FuIGJlIHJldXNlZCBsYXRlcgotICAgICAgICB0byBh
dm9pZCBoYXZpbmcgdG8gYmUgcmVuZGVyZWQgYWdhaW4uCi0KLSAgICAgICAgU2Nyb2xsaW5nIG9j
Y3VycyBhcyBqdXN0IG1vdmluZyB0aGUgdGlsZXMsIHVzaW5nIEV2YXMgbW92ZSBvcGVyYXRpb25z
LAotICAgICAgICBhbmQgd2hlbiBtb3JlIHRoYW4gb25lIHRpbGUgc2l6ZSBpcyBzY3JvbGxlZCwg
YSBzaGlmdCBvZiByb3dzIG9yCi0gICAgICAgIGNvbHVtbnMgbmVlZHMgdG8gYmUgZG9uZS4KLQot
ICAgICAgICAqIENNYWtlTGlzdHNFZmwudHh0OgotICAgICAgICAqIGV3ay9ld2tfdGlsZWRfYmFj
a2luZ19zdG9yZS5jOiBBZGRlZC4KLSAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV91
cGRhdGVzX3Byb2Nlc3MpOgotICAgICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX2ZsdXNo
KToKLSAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV90aWxlX25ldyk6Ci0gICAgICAg
IChfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfaXRlbV9tb3ZlKToKLSAgICAgICAgKF9ld2tfdGls
ZWRfYmFja2luZ19zdG9yZV9pdGVtX3Jlc2l6ZSk6Ci0gICAgICAgIChfZXdrX3RpbGVkX2JhY2tp
bmdfc3RvcmVfdGlsZV9hc3NvY2lhdGUpOgotICAgICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0
b3JlX3RpbGVfZGlzc29jaWF0ZSk6Ci0gICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVf
dGlsZV9kaXNzb2NpYXRlX2FsbCk6Ci0gICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVf
cHJlX3JlbmRlcl9yZXF1ZXN0X2FkZCk6Ci0gICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3Rv
cmVfcHJlX3JlbmRlcl9yZXF1ZXN0X2RlbCk6Ci0gICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdf
c3RvcmVfcHJlX3JlbmRlcl9yZXF1ZXN0X2ZpcnN0KToKLSAgICAgICAgKF9ld2tfdGlsZWRfYmFj
a2luZ19zdG9yZV9wcmVfcmVuZGVyX3JlcXVlc3RfZmx1c2gpOgotICAgICAgICAoX2V3a190aWxl
ZF9iYWNraW5nX3N0b3JlX3ByZV9yZW5kZXJfcmVxdWVzdF9yZW1vdmVfdW5hc3NvY2lhdGVkKToK
LSAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVfcmVuZGVyX3JlcXVlc3RfcmVt
b3ZlX2Fzc29jaWF0ZWQpOgotICAgICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3ByZV9y
ZW5kZXJfcmVxdWVzdF9wcm9jZXNzX3NpbmdsZSk6Ci0gICAgICAgIChfZXdrX3RpbGVkX2JhY2tp
bmdfc3RvcmVfaXRlbV9wcm9jZXNzX2lkbGVyX2NiKToKLSAgICAgICAgKF9ld2tfdGlsZWRfYmFj
a2luZ19zdG9yZV9pdGVtX3Byb2Nlc3NfaWRsZXJfc3RvcCk6Ci0gICAgICAgIChfZXdrX3RpbGVk
X2JhY2tpbmdfc3RvcmVfaXRlbV9wcm9jZXNzX2lkbGVyX3N0YXJ0KToKLSAgICAgICAgKF9ld2tf
dGlsZWRfYmFja2luZ19zdG9yZV9pdGVtX3JlcXVlc3RfZGVsKToKLSAgICAgICAgKF9ld2tfdGls
ZWRfYmFja2luZ19zdG9yZV9pdGVtX3JlcXVlc3RfYWRkKToKLSAgICAgICAgKF9ld2tfdGlsZWRf
YmFja2luZ19zdG9yZV9kaXNhYmxlX3JlbmRlcik6Ci0gICAgICAgIChfZXdrX3RpbGVkX2JhY2tp
bmdfc3RvcmVfZW5hYmxlX3JlbmRlcik6Ci0gICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3Rv
cmVfdmlzaWJsZV90aWxlc19yZWN0KToKLSAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9y
ZV90aWxlX2lzX2luc2lkZV92aWV3cG9ydCk6Ci0gICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdf
c3RvcmVfdGlsZV9pc19hZGphY2VudF90b192aWV3cG9ydCk6Ci0gICAgICAgIChfZXdrX3RpbGVk
X2JhY2tpbmdfc3RvcmVfaXRlbV9maWxsKToKLSAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19z
dG9yZV9pdGVtX2FkZCk6Ci0gICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfaXRlbV9k
ZWwpOgotICAgICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX2l0ZW1fc21vb3RoX3NjYWxl
X3NldCk6Ci0gICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfY2hhbmdlZCk6Ci0gICAg
ICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdmlld19jb2xzX2VuZF9kZWwpOgotICAgICAg
ICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3ZpZXdfY29sc19lbmRfYWRkKToKLSAgICAgICAg
KF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV92aWV3X3Jvd19kZWwpOgotICAgICAgICAoX2V3a190
aWxlZF9iYWNraW5nX3N0b3JlX3ZpZXdfcm93c19yYW5nZV9kZWwpOgotICAgICAgICAoX2V3a190
aWxlZF9iYWNraW5nX3N0b3JlX3ZpZXdfcm93c19hbGxfZGVsKToKLSAgICAgICAgKF9ld2tfdGls
ZWRfYmFja2luZ19zdG9yZV9yZW5kZXIpOgotICAgICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0
b3JlX21vZGVsX21hdHJpeF9jcmVhdGUpOgotICAgICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0
b3JlX3NtYXJ0X21lbWJlcl9kZWwpOgotICAgICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3Jl
X3NtYXJ0X21lbWJlcl9hZGQpOgotICAgICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX21l
bV9kYmcpOgotICAgICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3NpZ191c3IpOgotICAg
ICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3NtYXJ0X2FkZCk6Ci0gICAgICAgIChfZXdr
X3RpbGVkX2JhY2tpbmdfc3RvcmVfc21hcnRfZGVsKToKLSAgICAgICAgKF9ld2tfdGlsZWRfYmFj
a2luZ19zdG9yZV9zbWFydF9tb3ZlKToKLSAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9y
ZV9zbWFydF9yZXNpemUpOgotICAgICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3JlY2Fs
Y19yZW5kZXJlcnMpOgotICAgICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3NtYXJ0X2Nh
bGN1bGF0ZV9zaXplKToKLSAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV92aWV3X2Ri
Zyk6Ci0gICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdmlld193cmFwX3VwKToKLSAg
ICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV92aWV3X3dyYXBfZG93bik6Ci0gICAgICAg
IChfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdmlld193cmFwX2xlZnQpOgotICAgICAgICAoX2V3
a190aWxlZF9iYWNraW5nX3N0b3JlX3ZpZXdfd3JhcF9yaWdodCk6Ci0gICAgICAgIChfZXdrX3Rp
bGVkX2JhY2tpbmdfc3RvcmVfdmlld19yZWZpbGwpOgotICAgICAgICAoX2V3a190aWxlZF9iYWNr
aW5nX3N0b3JlX3ZpZXdfcG9zX2FwcGx5KToKLSAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19z
dG9yZV9zbWFydF9jYWxjdWxhdGVfb2Zmc2V0X2ZvcmNlKToKLSAgICAgICAgKF9ld2tfdGlsZWRf
YmFja2luZ19zdG9yZV9zbWFydF9jYWxjdWxhdGVfb2Zmc2V0KToKLSAgICAgICAgKF9ld2tfdGls
ZWRfYmFja2luZ19zdG9yZV9zbWFydF9jYWxjdWxhdGVfcG9zKToKLSAgICAgICAgKF9ld2tfdGls
ZWRfYmFja2luZ19zdG9yZV9maWxsX3JlbmRlcmVycyk6Ci0gICAgICAgIChfZXdrX3RpbGVkX2Jh
Y2tpbmdfc3RvcmVfc21hcnRfY2FsY3VsYXRlKToKLSAgICAgICAgKGV3a190aWxlZF9iYWNraW5n
X3N0b3JlX2FkZCk6Ci0gICAgICAgIChld2tfdGlsZWRfYmFja2luZ19zdG9yZV9yZW5kZXJfY2Jf
c2V0KToKLSAgICAgICAgKGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3RpbGVfdW51c2VkX2NhY2hl
X2dldCk6Ci0gICAgICAgIChld2tfdGlsZWRfYmFja2luZ19zdG9yZV90aWxlX3VudXNlZF9jYWNo
ZV9zZXQpOgotICAgICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3Njcm9sbF9mdWxsX29m
ZnNldF9zZXRfaW50ZXJuYWwpOgotICAgICAgICAoZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfc2Ny
b2xsX2Z1bGxfb2Zmc2V0X3NldCk6Ci0gICAgICAgIChld2tfdGlsZWRfYmFja2luZ19zdG9yZV9z
Y3JvbGxfZnVsbF9vZmZzZXRfYWRkKToKLSAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9y
ZV96b29tX3NldF9pbnRlcm5hbCk6Ci0gICAgICAgIChld2tfdGlsZWRfYmFja2luZ19zdG9yZV96
b29tX3NldCk6Ci0gICAgICAgIChld2tfdGlsZWRfYmFja2luZ19zdG9yZV96b29tX3dlYWtfc2V0
KToKLSAgICAgICAgKGV3a190aWxlZF9iYWNraW5nX3N0b3JlX2ZpeF9vZmZzZXRzKToKLSAgICAg
ICAgKGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3pvb21fd2Vha19zbW9vdGhfc2NhbGVfc2V0KToK
LSAgICAgICAgKGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3VwZGF0ZSk6Ci0gICAgICAgIChld2tf
dGlsZWRfYmFja2luZ19zdG9yZV91cGRhdGVzX3Byb2Nlc3NfcHJlX3NldCk6Ci0gICAgICAgIChl
d2tfdGlsZWRfYmFja2luZ19zdG9yZV91cGRhdGVzX3Byb2Nlc3NfcG9zdF9zZXQpOgotICAgICAg
ICAoZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdXBkYXRlc19wcm9jZXNzKToKLSAgICAgICAgKGV3
a190aWxlZF9iYWNraW5nX3N0b3JlX3VwZGF0ZXNfY2xlYXIpOgotICAgICAgICAoZXdrX3RpbGVk
X2JhY2tpbmdfc3RvcmVfY29udGVudHNfcmVzaXplKToKLSAgICAgICAgKGV3a190aWxlZF9iYWNr
aW5nX3N0b3JlX2Rpc2FibGVkX3VwZGF0ZV9zZXQpOgotICAgICAgICAoZXdrX3RpbGVkX2JhY2tp
bmdfc3RvcmVfZmx1c2gpOgotICAgICAgICAoZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcHJlX3Jl
bmRlcl9yZWdpb24pOgotICAgICAgICAoZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcHJlX3JlbmRl
cl9yZWxhdGl2ZV9yYWRpdXMpOgotICAgICAgICAoZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcHJl
X3JlbmRlcl9jYW5jZWwpOgotICAgICAgICAoZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfZGlzYWJs
ZV9yZW5kZXIpOgotICAgICAgICAoZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfZW5hYmxlX3JlbmRl
cik6Ci0gICAgICAgIChld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcm9jZXNzX2VudGlyZV9xdWV1
ZV9zZXQpOgotICAgICAgICAqIGV3ay9ld2tfdGlsZWRfYmFja2luZ19zdG9yZS5oOiBBZGRlZC4K
LSAgICAgICAgKiBld2svZXdrX3RpbGVkX21hdHJpeC5jOiBBZGRlZC4KLSAgICAgICAgKF9ld2tf
dGlsZV9tYXRyaXhfY2VsbF9mcmVlKToKLSAgICAgICAgKF9ld2tfdGlsZV9tYXRyaXhfdGlsZV9m
cmVlKToKLSAgICAgICAgKGV3a190aWxlX21hdHJpeF9uZXcpOgotICAgICAgICAoZXdrX3RpbGVf
bWF0cml4X2ZyZWUpOgotICAgICAgICAoZXdrX3RpbGVfbWF0cml4X3Jlc2l6ZSk6Ci0gICAgICAg
IChld2tfdGlsZV9tYXRyaXhfdW51c2VkX2NhY2hlX2dldCk6Ci0gICAgICAgIChld2tfdGlsZV9t
YXRyaXhfdGlsZV9leGFjdF9nZXQpOgotICAgICAgICAoZXdrX3RpbGVfbWF0cml4X3RpbGVfZXhh
Y3RfZXhpc3RzKToKLSAgICAgICAgKGV3a190aWxlX21hdHJpeF90aWxlX25lYXJlc3RfZ2V0KToK
LSAgICAgICAgKGV3a190aWxlX21hdHJpeF90aWxlX25ldyk6Ci0gICAgICAgIChld2tfdGlsZV9t
YXRyaXhfdGlsZV9wdXQpOgotICAgICAgICAoZXdrX3RpbGVfbWF0cml4X3RpbGVfdXBkYXRlKToK
LSAgICAgICAgKGV3a190aWxlX21hdHJpeF90aWxlX3VwZGF0ZV9mdWxsKToKLSAgICAgICAgKGV3
a190aWxlX21hdHJpeF90aWxlX3VwZGF0ZXNfY2xlYXIpOgotICAgICAgICAoX2V3a190aWxlX21h
dHJpeF9zbGljZXJfc2V0dXApOgotICAgICAgICAoZXdrX3RpbGVfbWF0cml4X3VwZGF0ZSk6Ci0g
ICAgICAgIChld2tfdGlsZV9tYXRyaXhfdXBkYXRlc19wcm9jZXNzKToKLSAgICAgICAgKGV3a190
aWxlX21hdHJpeF91cGRhdGVzX2NsZWFyKToKLSAgICAgICAgKGV3a190aWxlX21hdHJpeF9kYmcp
OgotICAgICAgICAoZXdrX3RpbGVfbWF0cml4X2ZyZWV6ZSk6Ci0gICAgICAgIChld2tfdGlsZV9t
YXRyaXhfdGhhdyk6Ci0gICAgICAgICogZXdrL2V3a190aWxlZF9tYXRyaXguaDogQWRkZWQuCi0g
ICAgICAgICogZXdrL2V3a190aWxlZF9tb2RlbC5jOiBBZGRlZC4KLSAgICAgICAgKF9ld2tfdGls
ZV9hY2NvdW50X2dldCk6Ci0gICAgICAgIChfZXdrX3RpbGVfYWNjb3VudF9hbGxvY2F0ZWQpOgot
ICAgICAgICAoX2V3a190aWxlX2FjY291bnRfZnJlZWQpOgotICAgICAgICAoZXdrX3RpbGVfYWNj
b3VudGluZ19kYmcpOgotICAgICAgICAoX2V3a190aWxlX3BhaW50X3JnYjg4OCk6Ci0gICAgICAg
IChfZXdrX3RpbGVfcGFpbnRfcmdiNTY1KToKLSAgICAgICAgKF9ld2tfdGlsZV9wYWludCk6Ci0g
ICAgICAgIChld2tfdGlsZV9uZXcpOgotICAgICAgICAoZXdrX3RpbGVfZnJlZSk6Ci0gICAgICAg
IChld2tfdGlsZV9zaG93KToKLSAgICAgICAgKGV3a190aWxlX2hpZGUpOgotICAgICAgICAoZXdr
X3RpbGVfdmlzaWJsZV9nZXQpOgotICAgICAgICAoZXdrX3RpbGVfdXBkYXRlX2Z1bGwpOgotICAg
ICAgICAoZXdrX3RpbGVfdXBkYXRlX2FyZWEpOgotICAgICAgICAoZXdrX3RpbGVfdXBkYXRlc19w
cm9jZXNzKToKLSAgICAgICAgKGV3a190aWxlX3VwZGF0ZXNfY2xlYXIpOgotICAgICAgICAoZXdr
X3RpbGVfdW51c2VkX2NhY2hlX25ldyk6Ci0gICAgICAgIChld2tfdGlsZV91bnVzZWRfY2FjaGVf
bG9ja19hcmVhKToKLSAgICAgICAgKGV3a190aWxlX3VudXNlZF9jYWNoZV91bmxvY2tfYXJlYSk6
Ci0gICAgICAgIChld2tfdGlsZV91bnVzZWRfY2FjaGVfZnJlZSk6Ci0gICAgICAgIChld2tfdGls
ZV91bnVzZWRfY2FjaGVfY2xlYXIpOgotICAgICAgICAoZXdrX3RpbGVfdW51c2VkX2NhY2hlX3Jl
Zik6Ci0gICAgICAgIChld2tfdGlsZV91bnVzZWRfY2FjaGVfdW5yZWYpOgotICAgICAgICAoZXdr
X3RpbGVfdW51c2VkX2NhY2hlX21heF9zZXQpOgotICAgICAgICAoZXdrX3RpbGVfdW51c2VkX2Nh
Y2hlX21heF9nZXQpOgotICAgICAgICAoZXdrX3RpbGVfdW51c2VkX2NhY2hlX3VzZWRfZ2V0KToK
LSAgICAgICAgKGV3a190aWxlX3VudXNlZF9jYWNoZV9mbHVzaCk6Ci0gICAgICAgIChld2tfdGls
ZV91bnVzZWRfY2FjaGVfYXV0b19mbHVzaCk6Ci0gICAgICAgIChld2tfdGlsZV91bnVzZWRfY2Fj
aGVfZGlydHkpOgotICAgICAgICAoZXdrX3RpbGVfdW51c2VkX2NhY2hlX2ZyZWV6ZSk6Ci0gICAg
ICAgIChld2tfdGlsZV91bnVzZWRfY2FjaGVfdGhhdyk6Ci0gICAgICAgIChld2tfdGlsZV91bnVz
ZWRfY2FjaGVfdGlsZV9nZXQpOgotICAgICAgICAoZXdrX3RpbGVfdW51c2VkX2NhY2hlX3RpbGVf
cHV0KToKLSAgICAgICAgKGV3a190aWxlX3VudXNlZF9jYWNoZV9kYmcpOgotICAgICAgICAqIGV3
ay9ld2tfdGlsZWRfbW9kZWwuaDogQWRkZWQuCi0gICAgICAgICogZXdrL2V3a190aWxlZF9wcml2
YXRlLmg6IEFkZGVkLgotICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChfZXdr
X3ZpZXdfc21hcnRfYWRkKToKLSAgICAgICAgKF9ld2tfdmlld19zbWFydF9jYWxjdWxhdGUpOgot
ICAgICAgICAoX2V3a192aWV3X3NtYXJ0X3Nob3cpOgotICAgICAgICAoX2V3a192aWV3X3NtYXJ0
X2hpZGUpOgotICAgICAgICAoX2V3a192aWV3X3NtYXJ0X3ByZV9yZW5kZXJfcmVsYXRpdmVfcmFk
aXVzKToKLSAgICAgICAgKF9ld2tfdmlld196b29tX2FuaW1hdG9yX2NiKToKLSAgICAgICAgKF9l
d2tfdmlld19zbWFydF9kaXNhYmxlX3JlbmRlcik6Ci0gICAgICAgIChfZXdrX3ZpZXdfc21hcnRf
ZW5hYmxlX3JlbmRlcik6Ci0gICAgICAgIChld2tfdmlld19iYXNlX3NtYXJ0X3NldCk6Ci0gICAg
ICAgIChld2tfdmlld19wcmVfcmVuZGVyX3JlZ2lvbik6Ci0gICAgICAgIChld2tfdmlld19wcmVf
cmVuZGVyX3JlbGF0aXZlX3JhZGl1cyk6Ci0gICAgICAgIChld2tfdmlld19lbmFibGVfcmVuZGVy
KToKLSAgICAgICAgKGV3a192aWV3X2Rpc2FibGVfcmVuZGVyKToKLSAgICAgICAgKGV3a192aWV3
X3Njcm9sbCk6Ci0gICAgICAgIChld2tfdmlld19kaWRfZmlyc3RfdmlzdWFsbHlfbm9uZW1wdHlf
bGF5b3V0KToKLSAgICAgICAgKGV3a192aWV3X2Rpc3BhdGNoX2RpZF9maW5pc2hfbG9hZGluZyk6
Ci0gICAgICAgIChld2tfdmlld190cmFuc2l0aW9uX3RvX2NvbW1pdGVkX2Zvcl9uZXdwYWdlKToK
LSAgICAgICAgKiBld2svZXdrX3ZpZXcuaDoKLSAgICAgICAgKiBld2svZXdrX3ZpZXdfdGlsZWQu
YzogQWRkZWQuCi0gICAgICAgIChfZXdrX3ZpZXdfdGlsZWRfcmVuZGVyX2NiKToKLSAgICAgICAg
KF9ld2tfdmlld190aWxlZF91cGRhdGVzX3Byb2Nlc3NfcHJlKToKLSAgICAgICAgKF9ld2tfdmll
d190aWxlZF9zbWFydF9iYWNraW5nX3N0b3JlX2FkZCk6Ci0gICAgICAgIChfZXdrX3ZpZXdfdGls
ZWRfY29udGVudHNfc2l6ZV9jaGFuZ2VkX2NiKToKLSAgICAgICAgKF9ld2tfdmlld190aWxlZF9z
bWFydF9hZGQpOgotICAgICAgICAoX2V3a192aWV3X3RpbGVkX3NtYXJ0X3Njcm9sbHNfcHJvY2Vz
cyk6Ci0gICAgICAgIChfZXdrX3ZpZXdfdGlsZWRfc21hcnRfcmVwYWludHNfcHJvY2Vzcyk6Ci0g
ICAgICAgIChfZXdrX3ZpZXdfdGlsZWRfc21hcnRfY29udGVudHNfcmVzaXplKToKLSAgICAgICAg
KF9ld2tfdmlld190aWxlZF9zbWFydF96b29tX3NldCk6Ci0gICAgICAgIChfZXdrX3ZpZXdfdGls
ZWRfc21hcnRfem9vbV93ZWFrX3NldCk6Ci0gICAgICAgIChfZXdrX3ZpZXdfdGlsZWRfc21hcnRf
em9vbV93ZWFrX3Ntb290aF9zY2FsZV9zZXQpOgotICAgICAgICAoX2V3a192aWV3X3RpbGVkX3Nt
YXJ0X2ZsdXNoKToKLSAgICAgICAgKF9ld2tfdmlld190aWxlZF9zbWFydF9wcmVfcmVuZGVyX3Jl
Z2lvbik6Ci0gICAgICAgIChfZXdrX3ZpZXdfdGlsZWRfc21hcnRfcHJlX3JlbmRlcl9yZWxhdGl2
ZV9yYWRpdXMpOgotICAgICAgICAoX2V3a192aWV3X3RpbGVkX3NtYXJ0X3ByZV9yZW5kZXJfY2Fu
Y2VsKToKLSAgICAgICAgKF9ld2tfdmlld190aWxlZF9zbWFydF9kaXNhYmxlX3JlbmRlcik6Ci0g
ICAgICAgIChfZXdrX3ZpZXdfdGlsZWRfc21hcnRfZW5hYmxlX3JlbmRlcik6Ci0gICAgICAgIChl
d2tfdmlld190aWxlZF9zbWFydF9zZXQpOgotICAgICAgICAoX2V3a192aWV3X3RpbGVkX3NtYXJ0
X2NsYXNzX25ldyk6Ci0gICAgICAgIChld2tfdmlld190aWxlZF9hZGQpOgotICAgICAgICAoZXdr
X3ZpZXdfdGlsZWRfdW51c2VkX2NhY2hlX2dldCk6Ci0gICAgICAgIChld2tfdmlld190aWxlZF91
bnVzZWRfY2FjaGVfc2V0KToKLSAgICAgICAgKGV3a192aWV3X3RpbGVkX3Byb2Nlc3NfZW50aXJl
X3F1ZXVlX3NldCk6Ci0KLTIwMTAtMTEtMTYgIExlYW5kcm8gUGVyZWlyYSAgPGxlYW5kcm9AcHJv
ZnVzaW9uLm1vYmk+Ci0KLSAgICAgICAgW0VGTF0gVW5yZXZpZXdlZC4gQnVpbGQgZml4LgotCi0g
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuaDogQWxzbyBpbmNs
dWRlCi0gICAgICAgIFJlc291cmNlRXJyb3IuaC4KLQotMjAxMC0xMS0xNiAgUGF0cmljayBHYW5z
dGVyZXIgIDxwYXJvZ2FAd2Via2l0Lm9yZz4KLQotICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFz
IEtsaW5nLgotCi0gICAgICAgIFtDTWFrZV0gQWRkIHBsYXRmb3JtIGRlcGVuZGVudCBpbmNsdWRl
IGRpcmVjdG9yaWVzCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD00OTU1MwotCi0gICAgICAgICogQ01ha2VMaXN0c0VmbC50eHQ6Ci0KLTIwMTAtMTEtMTQg
IFJ5dWFuIENob2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFJldmlld2Vk
IGJ5IE1hcnRpbiBSb2JpbnNvbi4KLQotICAgICAgICBbRUZMXSBhZGQgcGFuZ28gc3VwcG9ydAot
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDYwMjkKLQot
ICAgICAgICBBZGQgcGFuZ28gaW4gaW5jbHVkZSBhbmQgbGlicy4KLQotICAgICAgICAqIENNYWtl
TGlzdHNFZmwudHh0OgotCi0yMDEwLTExLTExICBSeXVhbiBDaG9pICA8cnl1YW4uY2hvaUBzYW1z
dW5nLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgotCi0gICAgICAgIFtH
VEtdIE1vdmUgZm9udCByZWxhdGVkIGZpbGVzLgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDgxMTYKLQotICAgICAgICBBZGQgZnJlZXR5cGUvIHRvIGlu
Y2x1ZGUgcGF0aC4KLQotICAgICAgICAqIENNYWtlTGlzdHNFZmwudHh0OgotCi0yMDEwLTExLTA4
ICBSYWZhZWwgQW50b2dub2xsaSAgPGFudG9nbm9sbGlAcHJvZnVzaW9uLm1vYmk+Ci0KLSAgICAg
ICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21lcy4KLQotICAgICAgICBbRUZMXSBDaGFuZ2UgdGhl
IHVzYWdlIG9mIGVpbmFfaXRlcmF0b3JfbmV4dCBkdWUgdG8gbGF0ZXN0IEVGTCBjaGFuZ2VzLgot
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDkwODIKLQot
ICAgICAgICBBIGNoYW5nZSBvbiBob3cgdGhlIGl0ZXJhdG9yIGZvciBhIHRpbGVyIGlzIHVzZWQg
aW4gRUZMIG5lZWRzIHRvIGJlCi0gICAgICAgIHJlZmxlY3RlZCBpbiBXZWJLaXQtRUZMLiBUaGUg
aXRlcmF0b3Igbm93IHJlY2VpdmVzIGEgcG9pbnRlciB0byBhbgotICAgICAgICBFaW5hX1JlY3Rh
bmdsZSBhbmQgbWFrZXMgaXQgcG9pbnQgdG8gaXRzIGludGVybmFsIHN0cnVjdHVyZS4gVGhlIG9s
ZAotICAgICAgICB1c2FnZSB3YXMgdG8gcmVjZWl2ZSBhIHJlZmVyZW5jZSB0byBhIHByZS1hbGxv
Y2F0ZWQgRWluYV9SZWN0YW5nbGUuCi0KLSAgICAgICAgKiBld2svZXdrX3ZpZXdfc2luZ2xlLmM6
Ci0gICAgICAgIChfZXdrX3ZpZXdfc2luZ2xlX3NtYXJ0X3JlcGFpbnRzX3Byb2Nlc3MpOgotCi0y
MDEwLTExLTA4ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgotCi0gICAgICAg
IFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgotCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD00ODY4NQotICAgICAgICBOb3RpZnkgVUkgcHJvY2VzcyBhYm91
dCBmb2N1c2VkIGZyYW1lCi0KLSAgICAgICAgQWRkZWQgYW4gZW1wdHkgaW1wbGVtZW50YXRpb24g
b2YgdGhlIG5ldyBDaHJvbWVDbGllbnQgbWV0aG9kLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBv
cnQvQ2hyb21lQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEVm
bDo6Zm9jdXNlZEZyYW1lQ2hhbmdlZCk6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21l
Q2xpZW50RWZsLmg6Ci0KLTIwMTAtMTEtMDUgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdl
YmtpdC5vcmc+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgRGF2aWQgS2lsemVyLgotCi0gICAgICAg
IFJlcGxhY2UgQVJSQVlTSVpFIHdpdGggV1RGX0FSUkFZX0xFTkdUSAotICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDg5MDMKLQotICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpFZGl0b3JD
bGllbnRFZmw6OmludGVycHJldEtleUV2ZW50KToKLQotMjAxMC0xMS0wNCAgUnl1YW4gQ2hvaSAg
PHJ5dWFuLmNob2lAc2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0
aC4KLQotICAgICAgICBbRUZMXSBSZWZsZWN0IGxhdGVzdCBFRkwgY2hhbmdlcyByZWxhdGVkIHRv
IHN0cmlkZS4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTQ4OTcxCi0KLSAgICAgICAgUmVtb3ZlIGFkanVzdG1lbnQgY29kZSB0byBjb21wYXJlIHN0cmlk
ZSBvZiBjYWlyb19pbWFnZV9zdXJmZWNlIGFuZCBldmFzX29iamVjdF9pbWFnZSwgYXMgZm9sbG93
aW5nIGNoYW5nZXMgb2YgbGF0ZXN0IEVGTC4KLQotICAgICAgICAqIGV3ay9ld2tfdXRpbC5jcHA6
Ci0gICAgICAgIChld2tfdXRpbF9pbWFnZV9mcm9tX2NhaXJvX3N1cmZhY2VfYWRkKToKLQotMjAx
MC0xMS0wMyAgRGFuaWVsIEJhdGVzICA8ZGJhdGVzQHJpbS5jb20+Ci0KLSAgICAgICAgRm9yIHVu
bmFtZWQgZnJhbWVzLCB3aW5kb3cubmFtZSByZXR1cm5zIGEgZ2VuZXJhdGVkIG5hbWUKLSAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY3NTEKLQotICAgICAg
ICBQYXJ0IDEgb2YgMi4KLQotICAgICAgICBTdWJzdGl0dXRlIEZyYW1lVHJlZTo6dW5pcXVlTmFt
ZSgpIGZvciBGcmFtZVRyZWU6Om5hbWUoKSBpbiB0aGUgRUZMIHBvcnQuCi0KLSAgICAgICAgKiBl
d2svZXdrX2ZyYW1lLmNwcDoKLSAgICAgICAgKGV3a19mcmFtZV9uYW1lX2dldCk6Ci0KLTIwMTAt
MTEtMDIgIERhbmllbCBCYXRlcyAgPGRiYXRlc0ByaW0uY29tPgotCi0gICAgICAgIFJldmlld2Vk
IGJ5IE1hcnRpbiBSb2JpbnNvbi4KLQotICAgICAgICBTZXQgZnJhbWUgbmFtZSBiZWZvcmUgYXBw
ZW5kaW5nIGl0IHRvIHRoZSBmcmFtZSB0cmVlIGluIHRoZSBBcHBsZSBXaW5kb3dzLAotICAgICAg
ICBHVEssIGFuZCBFRkwgcG9ydHMKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTQ4ODA2Ci0KLSAgICAgICAgTWFrZSB0aGUgZnJhbWUgY3JlYXRpb24gcHJv
Y2VzcyBpbiB0aGUgRUZMLXBvcnQgY29uc2lzdGVudCB3aXRoIHRoZQotICAgICAgICBNYWMsIFF0
LCBhbmQgSGFpa3UgcG9ydHMuIEluIHBhcnRpY3VsYXIsIHNldCB0aGUgbmFtZSBvZiB0aGUgbmV3
Ci0gICAgICAgIGZyYW1lIGJlZm9yZSBpdCdzIGFwcGVuZGVkIHRvIHRoZSBmcmFtZSB0cmVlLgot
Ci0gICAgICAgIEF0IHRoaXMgdGltZSB3ZSBjYW5ub3QgdGVzdCB0aGlzIGNoYW5nZSBzaW5jZSBp
dCBpcyBiZWluZyBtYXNrZWQgYnkKLSAgICAgICAgSFRNTEZyYW1lRWxlbWVudEJhc2U6OnNldE5h
bWUoKSA8aHR0cDovL3RyYWMud2Via2l0Lm9yZy9icm93c2VyL3RydW5rL1dlYkNvcmUvaHRtbC9I
VE1MRnJhbWVFbGVtZW50QmFzZS5jcHA/cmV2PTcwOTc2I0wxNjA+LgotICAgICAgICBXZSdsbCBi
ZSBhYmxlIHRvIHRlc3QgdGhpcyBvbmNlIHdlIGZpeCBidWcgIzY3NTEuCi0KLSAgICAgICAgKiBl
d2svZXdrX2ZyYW1lLmNwcDoKLSAgICAgICAgKGV3a19mcmFtZV9jaGlsZF9hZGQpOgotCi0yMDEw
LTExLTAxICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KLQotICAgICAgICBSZXZp
ZXdlZCBieSBBbmRlcnMgQ2FybHNzb24uCi0KLSAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc2NjA1
NDc+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDg2OTkKLSAg
ICAgICAgQ29udGV4dCBtZW51IHN1cHBvcnQgZm9yIFdlYktpdCAyLgotCi0gICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmg6Ci0gICAgICAgIChXZWJDb3JlOjpDaHJvbWVD
bGllbnRFZmw6OnNob3dDb250ZXh0TWVudSk6Ci0KLTIwMTAtMTAtMjkgIERhbmllbCBCYXRlcyAg
PGRiYXRlc0ByaW0uY29tPgotCi0gICAgICAgIE5vIHJldmlldywgcm9sbGluZyBvdXQgNzA5NzEu
Ci0gICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzcwOTcxCi0gICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NzUxCi0KLSAgICAgICAg
Um9sbGluZyBvdXQgY2hhbmdlc2V0IDcwOTcxIDxodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5n
ZXNldC83MDk3MT4gc2luY2UKLSAgICAgICAgaXQgY2F1c2VkIGxheW91dCB0ZXN0IGZhaWx1cmVz
IG9uIGFsbCBib3RzLiBJbiBwYXJ0aWN1bGFyLCB0aGUKLSAgICAgICAgY2hpbGQgY291bnQgaW4g
YSBnZW5lcmF0ZWQgZnJhbWUgbmFtZSBkaWZmZXJzIGFmdGVyIHRoaXMgcGF0Y2guIFdlIG5lZWQK
LSAgICAgICAgdG8gbG9vayBpbnRvIHRoaXMgZnVydGhlci4KLQotICAgICAgICAqIGV3ay9ld2tf
ZnJhbWUuY3BwOgotICAgICAgICAoZXdrX2ZyYW1lX25hbWVfZ2V0KToKLQotMjAxMC0xMC0yOSAg
RGFuaWVsIEJhdGVzICA8ZGJhdGVzQHJpbS5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQWRh
bSBCYXJ0aC4KLQotICAgICAgICBGb3IgdW5uYW1lZCBmcmFtZXMsIHdpbmRvdy5uYW1lIHJldHVy
bnMgYSBnZW5lcmF0ZWQgbmFtZQotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9Njc1MQotCi0gICAgICAgIE1vZGlmaWVkIEVGTC1wb3J0IHRvIHVzZSBGcmFt
ZVRyZWU6OnVuaXF1ZU5hbWUoKS4KLQotICAgICAgICAqIGV3ay9ld2tfZnJhbWUuY3BwOgotICAg
ICAgICAoZXdrX2ZyYW1lX25hbWVfZ2V0KToKLQotMjAxMC0xMC0yOSAgRGFyaW4gQWRsZXIgIDxk
YXJpbkBhcHBsZS5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KLQotICAg
ICAgICBDaGFuZ2UgQmFja0ZvcndhcmRMaXN0IGNsaWVudHMgdG8gdXNlIEJhY2tGb3J3YXJkTGlz
dEltcGwgdG8gcHJlcGFyZSBmb3IgZnVydGhlciByZWZhY3RvcmluZwotICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDg1NzQKLQotICAgICAgICAqIGV3ay9l
d2tfaGlzdG9yeS5jcHA6Ci0gICAgICAgIChld2tfaGlzdG9yeV9uZXcpOgotICAgICAgICAqIGV3
ay9ld2tfcHJpdmF0ZS5oOgotICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChf
ZXdrX3ZpZXdfcHJpdl9uZXcpOgotICAgICAgICAoZXdrX3ZpZXdfaGlzdG9yeV9lbmFibGVfZ2V0
KToKLSAgICAgICAgKGV3a192aWV3X2hpc3RvcnlfZW5hYmxlX3NldCk6Ci0gICAgICAgIChld2tf
dmlld19oaXN0b3J5X2dldCk6Ci0gICAgICAgIFVzZSBCYWNrRm9yd2FyZExpc3RJbXBsLgotCi0y
MDEwLTEwLTI5ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgotCi0gICAgICAg
IFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgotCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD00ODU3NgotICAgICAgICBMZXQgV2ViS2l0MiBjbGllbnQga25v
dyB3aGVuIGEgZnJhbWUgaXMgYSBmcmFtZXNldAotCi0gICAgICAgIEFkZGVkIGEgYmxhbmsgaW1w
bGVtZW50YXRpb24gb2YgdGhlIG5ldyBGcmFtZUxvYWRlckNsaWVudCBtZXRob2QuCi0KLSAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5oOgotICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZEJlY29tZUZyYW1lc2V0KToKLQotMjAx
MC0xMC0yNiAgSmVubiBCcmFpdGh3YWl0ZSAgPGplbm5iQGNocm9taXVtLm9yZz4KLQotICAgICAg
ICBSZXZpZXdlZCBieSBEbWl0cnkgVGl0b3YuCi0KLSAgICAgICAgUmVzb3VyY2UgdHJhY2tpbmcg
ZmFpbHVyZSB3aGVuIHRyeWluZyB0byBtb3ZlIGEgZnJhbWUgYmV0d2VlbiBkb2N1bWVudHMKLSAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ0NzEzCi0KLSAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHA6Ci0gICAgICAg
IChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6dHJhbnNmZXJMb2FkaW5nUmVzb3VyY2VG
cm9tUGFnZSk6Ci0gICAgICAgIEVtcHR5IG1ldGhvZC4KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudEVmbC5oOgotCi0yMDEwLTEwLTIyICBTYW0gV2VpbmlnICA8c2Ft
QHdlYmtpdC5vcmc+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJzIENhcmxzc29uLgotCi0g
ICAgICAgIFdlYktpdDIgbmVlZHMgdG8gcGFzcyB0aGUgY3VycmVudCBldmVudCBtb2RpZmllciBm
bGFncyB3aGVuIHJlcXVlc3RpbmcgYSBuZXcgd2luZG93Ci0gICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00ODE0MAotCi0gICAgICAgICogV2ViQ29yZVN1cHBv
cnQvQ2hyb21lQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEVm
bDo6Y3JlYXRlV2luZG93KToKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRF
ZmwuaDoKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHA6
Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hDcmVhdGVQ
YWdlKToKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5oOgot
ICAgICAgICBBZGQgTmF2aWdhdGlvbkFjdGlvbiBwYXJhbWV0ZXIuCi0KLTIwMTAtMTAtMTkgIFJ5
dWFuIENob2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5
IEVyaWMgU2VpZGVsLgotCi0gICAgICAgIFtFRkxdIEFkZCBzZXR0aW5nIGFwaSBmb3IgZGlzYWJs
aW5nIGF1dG8gcmVzaXplIHdpbmRvdwotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NDc3ODcKLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNs
aWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRFZmw6OnNldFdpbmRv
d1JlY3QpOiBSZXR1cm4gd2hlbgotICAgICAgICBhdXRvX3Jlc2l6ZV93aW5kb3cgd2FzIGRpc2Fi
bGVkLgotICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChfZXdrX3ZpZXdfcHJp
dl9uZXcpOgotICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfYXV0b19yZXNpemVfd2lu
ZG93X2dldCk6IEFkZGVkLgotICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfYXV0b19y
ZXNpemVfd2luZG93X3NldCk6IEFkZGVkLgotICAgICAgICAqIGV3ay9ld2tfdmlldy5oOgotCi0y
MDEwLTEwLTE1ICBOaWtvbGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkByaW0uY29tPgotCi0g
ICAgICAgIFJldmlld2VkIGJ5IERpcmsgU2NodWx6ZS4KLQotICAgICAgICBSZXBsYWNlIHNvbWUg
U3RyaW5nOjpmb3JtYXQoKSB1c2FnZXMgYnkgU3RyaW5nQ29uY2F0ZW5hdGUgaW4gV2ViS2l0Ci0g
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzcxNAotCi0g
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwOgotICAgICAg
ICAoV2ViQ29yZTo6YWdlbnRPUyk6Ci0KLTIwMTAtMTAtMTQgIFJhZmFlbCBBbnRvZ25vbGxpICA8
YW50b2dub2xsaUBwcm9mdXNpb24ubW9iaT4KLQotICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNl
aWRlbC4KLQotICAgICAgICBbRUZMXSBVc2UgZGF0YV9zZXQgYWZ0ZXIgZGF0YV9nZXQgdG8ga2Vl
cCByZWZjb3VudCBjb3JyZWN0LgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDcxMTAKLQotICAgICAgICBUaGUgY2FsbCB0byBldmFzX29iamVjdF9pbWFn
ZV9kYXRhX3NldCB3YXMgbWlzc2VkIGluIHRoaXMgZnVuY3Rpb24sCi0gICAgICAgIHdoaWNoIGNh
dXNlZCB0aGUgcmVmY291bnQgb2YgdGhlIGRhdGEgYmVpbmcgYWx3YXlzIGluY3JlYXNlZCBvbiBl
dmVyeQotICAgICAgICBzY3JvbGwuCi0KLSAgICAgICAgKiBld2svZXdrX3ZpZXdfc2luZ2xlLmM6
Ci0gICAgICAgIChfZXdrX3ZpZXdfc2luZ2xlX3NtYXJ0X3Njcm9sbHNfcHJvY2Vzcyk6Ci0KLTIw
MTAtMTAtMTQgIFJ5dWFuIENob2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgotCi0gICAgICAg
IFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgotCi0gICAgICAgIFtFRkxdIEFkZCBzZXR0aW5nIGFw
aSBmb3IgZW5hYmxpbmcgZW5jb2RpbmcgZGV0ZWN0b3IKLSAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ1NDI3Ci0KLSAgICAgICAgQWRkIHNldHRpbmdzIGFw
aSBmb3IgZW5hYmxpbmcgZW5jb2RpbmcgZGV0ZWN0b3IuCi0KLSAgICAgICAgKiBld2svZXdrX3Zp
ZXcuY3BwOgotICAgICAgICAoX2V3a192aWV3X3ByaXZfbmV3KToKLSAgICAgICAgKGV3a192aWV3
X3NldHRpbmdfZW5jb2RpbmdfZGV0ZWN0b3Jfc2V0KToKLSAgICAgICAgKGV3a192aWV3X3NldHRp
bmdfZW5jb2RpbmdfZGV0ZWN0b3JfZ2V0KToKLSAgICAgICAgKiBld2svZXdrX3ZpZXcuaDoKLQot
MjAxMC0xMC0xMyAgTGVhbmRybyBQZXJlaXJhICA8bGVhbmRyb0Bwcm9mdXNpb24ubW9iaT4KLQot
ICAgICAgICBbRUZMXSBVbnJldmlld2VkLiBCdWlsZCBmaXguCi0KLSAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5oOiBVc2UgU3RyaW5nIGluc3RlYWQgb2YKLSAg
ICAgICAgV2ViQ29yZTo6U3RyaW5nLgotCi0yMDEwLTEwLTEzICBHYXZpbiBCYXJyYWNsb3VnaCAg
PGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBPbGl2ZXIgSHVu
dC4KLQotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDM5
ODcKLSAgICAgICAgU3dpdGNoIFhNTEh0dHBSZXF1ZXN0LCBGaWxlUmVhZGVyLCBhbmQgRmlsZVJl
YWRlclN5bmMgdG8gdXNlIGEgU3RyaW5nYnVpbGRlcgotICAgICAgICB0byBjb25zdHJ1Y3QgdGhl
aXIgaW50ZXJuYWwgcmVzdWx0IHN0cmluZy4gIFJlbW92ZSBTY3JpcHRTdHJpbmcgKHRoaXMgaXMg
bm93Ci0gICAgICAgIHJlZHVuZGFudCkuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVu
dEVmbDo6ZGlzcGF0Y2hEaWRMb2FkUmVzb3VyY2VCeVhNTEh0dHBSZXF1ZXN0KToKLSAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5oOgotCi0yMDEwLTEwLTEzICBH
eXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgUmV2aWV3
ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCi0KLSAgICAgICAgW0VGTF0gU3VwcG9y
dCB2aWV3cG9ydCBjb25maWd1cmF0aW9uIGFuZCBhZGQgbmV3IGFyZ3VtZW50cyBmb3IgV2ViS2l0
IEVGTAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDcw
ODQKLQotICAgICAgICBPcGVyYSBzcGVjIHJlZ2FyZGluZyB0byB2aWV3cG9ydCBtZXRhIHRhZyB3
YXMgYWRqdXN0ZWQgdG8gV2ViQ29yZS4gU28sIEVGTCBwb3J0IAotICAgICAgICBuZWVkcyB0byBi
ZSBtb2RpZmllZCBhY2NvcmRpbmcgdG8gdGhlIGNoYW5nZXMuCi0KLSAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xp
ZW50RWZsOjpkaXNwYXRjaFZpZXdwb3J0RGF0YURpZENoYW5nZSk6Ci0gICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29yZTo6RnJh
bWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkQ29tbWl0TG9hZCk6Ci0gICAgICAgICogZXdr
L2V3a19wcml2YXRlLmg6Ci0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAgKF9l
d2tfdmlld19wcml2X25ldyk6Ci0gICAgICAgIChfZXdrX3ZpZXdfdmlld3BvcnRfYXR0cmlidXRl
c19jb21wdXRlKToKLSAgICAgICAgKGV3a192aWV3X3ZpZXdwb3J0X2F0dHJpYnV0ZXNfc2V0KToK
LSAgICAgICAgKGV3a192aWV3X3ZpZXdwb3J0X2F0dHJpYnV0ZXNfZ2V0KToKLSAgICAgICAgKGV3
a192aWV3X2RldmljZV9waXhlbF9yYXRpb19nZXQpOgotICAgICAgICAqIGV3ay9ld2tfdmlldy5o
OgotCi0yMDEwLTEwLTEyICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+
Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCi0KLSAg
ICAgICAgW0VGTF0gQWRkIGEgbWV0aG9kIHRvIGdldCB0YXJnZXQncyBkcGkgdmFsdWUKLSAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3NTM3Ci0KLSAgICAg
ICAgQWRkIGEgbWV0aG9kIHRvIGdldCB0YXJnZXQgZHBpIHZhbHVlIHVzaW5nIEVjb3JlX1guCi0g
ICAgICAgIFdoZW4gd2Ugc2V0IGxheW91dCBzaXplLCB3ZSBuZWVkIHRvIHVzZSB0aGUgZHBpIHZh
bHVlLgotCi0gICAgICAgICogZXdrL2V3a19wcml2YXRlLmg6Ci0gICAgICAgICogZXdrL2V3a192
aWV3LmNwcDoKLSAgICAgICAgKGV3a192aWV3X3BhZ2VfcmVjdF9nZXQpOgotICAgICAgICAoZXdr
X3ZpZXdfZHBpX2dldCk6Ci0KLTIwMTAtMTAtMDcgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtp
bUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBBbnRvbmlvIEdvbWVzLgotCi0g
ICAgICAgIFtFRkxdIEltcGxlbWVudCBwYWdlUmVjdCgpIGZ1bmN0aW9uCi0gICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzM5NQotCi0gICAgICAgIEltcGxl
bWVudCBwYWdlUmVjdCgpIGluIENocm9tZUNsaWVudEVmbCB1c2luZyBmcmFtZVJlY3QoKS4KLQot
ICAgICAgICAqIENNYWtlTGlzdHNFZmwudHh0OgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0No
cm9tZUNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRFZmw6OnBh
Z2VSZWN0KToKLSAgICAgICAgKiBld2svZXdrX3ByaXZhdGUuaDoKLSAgICAgICAgKiBld2svZXdr
X3ZpZXcuY3BwOgotICAgICAgICAoZXdrX3ZpZXdfcGFnZV9yZWN0X2dldCk6IEFkZGVkLgotCi0y
MDEwLTEwLTA2ICBSeXVhbiBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KLQotICAgICAg
ICBSZXZpZXdlZCBieSBBbnRvbmlvIEdvbWVzLgotCi0gICAgICAgIFtFRkxdIFN1cHBvcnQgUHJv
Z3Jlc3MgVGFnCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD00NTk1MQotCi0gICAgICAgIEltcGxlbWVudCBwcm9ncmVzc2Jhci5lZGMgdG8gc3VwcG9ydCBw
cm9ncmVzcyB0YWcKLQotICAgICAgICAqIENNYWtlTGlzdHNFZmwudHh0OgotICAgICAgICAqIERl
ZmF1bHRUaGVtZS9kZWZhdWx0LmVkYzoKLSAgICAgICAgKiBEZWZhdWx0VGhlbWUvd2lkZ2V0L3By
b2dyZXNzYmFyOiBBZGRlZC4KLSAgICAgICAgKiBEZWZhdWx0VGhlbWUvd2lkZ2V0L3Byb2dyZXNz
YmFyL2J0X2Jhc2UucG5nOiBBZGRlZC4KLSAgICAgICAgKiBEZWZhdWx0VGhlbWUvd2lkZ2V0L3By
b2dyZXNzYmFyL3Byb2dyZXNzYmFyLmVkYzogQWRkZWQuCi0gICAgICAgICogRGVmYXVsdFRoZW1l
L3dpZGdldC9wcm9ncmVzc2Jhci9zaGVsZl9pbnNldC5wbmc6IEFkZGVkLgotCi0yMDEwLTEwLTA1
ICBSeXVhbiBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBSZXZpZXdl
ZCBieSBBbnRvbmlvIEdvbWVzLgotCi0gICAgICAgIFtFRkxdIFJlbW92ZSBzdHJkdXAgaW4gZXdr
X3NldHRpbmcuY3BwIHVzaW5nIGVpbmFfc3RyaW5nc2hhcmUKLSAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2NjEzCi0KLSAgICAgICAgQWRkIHZhcmlhYmxl
cyBzaGFyZWQgYnkgZWluYV9zdHJpbmdzaGFyZSBhbmQgcmVtb3ZlIHN0cmR1cC4KLQotICAgICAg
ICAqIGV3ay9ld2tfbWFpbi5jcHA6Ci0gICAgICAgIChfZXdrX2luaXRfYm9keSk6Ci0gICAgICAg
ICogZXdrL2V3a19zZXR0aW5ncy5jcHA6Ci0gICAgICAgIChld2tfc2V0dGluZ3Nfd2ViX2RhdGFi
YXNlX3BhdGhfc2V0KToKLSAgICAgICAgKGV3a19zZXR0aW5nc193ZWJfZGF0YWJhc2VfcGF0aF9n
ZXQpOgotICAgICAgICAoZXdrX3NldHRpbmdzX2ljb25fZGF0YWJhc2VfcGF0aF9zZXQpOgotICAg
ICAgICAoZXdrX3NldHRpbmdzX2ljb25fZGF0YWJhc2VfcGF0aF9nZXQpOgotICAgICAgICAqIGV3
ay9ld2tfc2V0dGluZ3MuaDoKLQotMjAxMC0xMC0wNCAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcu
a2ltQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hy
aXN0aWFuc2VuLgotCi0gICAgICAgIFtFRkxdIFZpZXdwb3J0IGRhdGEgY2hhbmdlIG5vdGlmaWNh
dGlvbiBieSBCdWcgNDY3NTUKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQ2NzcyCi0KLSAgICAgICAgQnVnIDQ2NzU1IGNoYW5nZXMgdmlydHVhbCBmdW5j
dGlvbiByZWdhcmRpbmcgdG8gdmlld3BvcnQgbWV0YXRhZy4gVGh1cywgRUZMIHBvcnQgCi0gICAg
ICAgIHNob3VsZCBjaGFuZ2UgdGhlIGZ1bmN0aW9uIGFzIHdlbGwgaW4gb3JkZXIgdG8gZ2V0IHZp
ZXdwb3J0IGFyZ3VtZW50cy4KLQotICAgICAgICBBbmQsIHNldEluaXRMYXlvdXRDb21wbGV0ZWQg
LyBnZXRJbml0TGF5b3V0Q29tcGxldGVkKCkgYXJlIHJlbW92ZWQgYmVjYXVzZSB0aGVzZSBmdW5j
dGlvbnMKLSAgICAgICAgYXJlbid0IG5lZWRlZCBhbnltb3JlLgotCi0gICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNs
aWVudEVmbDo6ZGlzcGF0Y2hWaWV3cG9ydERhdGFEaWRDaGFuZ2UpOgotICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xp
ZW50RWZsOjpGcmFtZUxvYWRlckNsaWVudEVmbCk6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxv
YWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRDb21taXRMb2FkKToKLSAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZEZpcnN0TGF5b3V0KToKLSAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5oOgotCi0yMDEwLTEwLTAxICBS
YWZhZWwgQW50b2dub2xsaSAgPGFudG9nbm9sbGlAcHJvZnVzaW9uLm1vYmk+Ci0KLSAgICAgICAg
UmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCi0KLSAgICAgICAgW0VGTF0g
UmVtb3ZlIGNoZWNrIGZvciBJbml0TGF5b3V0Q29tcGxldGVkIG9uIGZpeGVkX2xheW91dF9zaXpl
X3NldC4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3
MDA2Ci0KLSAgICAgICAgVGhpcyBjaGVjayBpc24ndCBuZWVkZWQgYW5kIGlzbid0IGRvbmUgb24g
dGhlIG90aGVyIHBvcnRzLiBUaGUgZml4ZWQKLSAgICAgICAgbGF5b3V0IHByb3BlcnR5IGNhbiBi
ZSBzZXQgYmVmb3JlIHdlIGhhdmUgdGhlIGZpcnN0IGxheW91dC4KLQotICAgICAgICAqIGV3ay9l
d2tfdmlldy5jcHA6Ci0gICAgICAgIChld2tfdmlld19maXhlZF9sYXlvdXRfc2l6ZV9zZXQpOgot
Ci0yMDEwLTEwLTAxICBSYWZhZWwgQW50b2dub2xsaSAgPGFudG9nbm9sbGlAcHJvZnVzaW9uLm1v
Ymk+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCi0K
LSAgICAgICAgW0VGTF0gQ2FsbCBjb250ZW50c19yZXNpemUgd2hlbiB0aGUgbWFpbiBmcmFtZSBn
ZXRzIHJlc2l6ZWQuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD00NzAwNAotCi0gICAgICAgIFRoZSBwcmV2aW91cyBpbXBsZW1lbnRhdGlvbiB3YXMganVz
dCBjYWxsaW5nIGNvbnRlbnRzX3Jlc2l6ZSB3aGVuIHRoZQotICAgICAgICB2aWV3cG9ydCBzaXpl
IGhhZCBjaGFuZ2VkLiBUaGF0J3Mgbm90IGVub3VnaCwgYW5kIGNvbnRlbnRzX3Jlc2l6ZQotICAg
ICAgICBzaG91bGRuJ3QgYmUgY2FsbGVkIGlmIHRoZSBjb250ZW50cyBzaXplIGRpZG4ndCBjaGFu
Z2UuCi0KLSAgICAgICAgTm93IHRoZSBjb250ZW50c19zaXplX2NoYW5nZWQgZnVuY3Rpb24gaXMg
Y2FsbGVkIGRpcmVjdGx5IGZyb20gdGhlCi0gICAgICAgIENocm9tZUNsaWVudEVmbC4KLQotICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJD
b3JlOjpDaHJvbWVDbGllbnRFZmw6OmNvbnRlbnRzU2l6ZUNoYW5nZWQpOgotICAgICAgICAqIGV3
ay9ld2tfcHJpdmF0ZS5oOgotICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChf
ZXdrX3ZpZXdfc21hcnRfY2FsY3VsYXRlKToKLSAgICAgICAgKGV3a192aWV3X2ZpeGVkX2xheW91
dF9zaXplX3NldCk6Ci0gICAgICAgIChld2tfdmlld19jb250ZW50c19zaXplX2NoYW5nZWQpOgot
Ci0yMDEwLTA5LTI5ICBKb8OjbyBQYXVsbyBSZWNoaSBWaXRhICA8anBydml0YUBwcm9mdXNpb24u
bW9iaT4KLQotICAgICAgICBSZXZpZXdlZCBieSBBbnRvbmlvIEdvbWVzLgotCi0gICAgICAgIFtF
RkxdIEdlbmVyYWwgc21hbGwgZml4ZXMuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD00NjgxMwotCi0gICAgICAgIFRoaXMgY29tbWl0IHNwb3RzIGEgY29t
cGFyaXNvbiBiZXR3ZWVuIHNpZ25lZCBhbmQgdW5zaWduZWQgaW50ZWdlcgotICAgICAgICBleHBy
ZXNzaW9ucywgYSBtaXNzaW5nIHJldHVybiBhbmQgYSBuZXZlci1jYWxsZWQgZnVuY3Rpb24uCi0K
LSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyRWZsLmNw
cDoKLSAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OmNhblBsYXkpOgotCi0yMDEw
LTA5LTI4ICBKZW5uIEJyYWl0aHdhaXRlICA8amVubmJAY2hyb21pdW0ub3JnPgotCi0gICAgICAg
IFJldmlld2VkIGJ5IERtaXRyeSBUaXRvdi4KLQotICAgICAgICBBZGRlZCBvbGRQYWdlIHBhcmFt
IHRvIEZyYW1lTG9hZGVyQ2xpZW50OjpkaWRUcmFuc2ZlckNoaWxkRnJhbWVUb05ld0RvY3VtZW50
LgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDY2NjMK
LQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcDoKLSAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaWRUcmFuc2ZlckNoaWxkRnJh
bWVUb05ld0RvY3VtZW50KToKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudEVmbC5oOgotCi0yMDEwLTA5LTI2ICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ft
c3VuZy5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21lcy4KLQotICAgICAg
ICBbRUZMXSBBZGQgc2V0dGluZyBBUEkgdG8gc2V0IGEgbG9jYWwgc3RvcmFnZSBkYXRhYmFzZSBw
YXRoLgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDU0
NDYKLQotICAgICAgICBBZGQgYSBzZXR0aW5nIEFQSSB0byBzZXQgbG9jYWwgc3RvcmFnZSBkYXRh
YmFzZSBwYXRoLgotCi0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAgKF9ld2tf
dmlld19wcml2X25ldyk6Ci0gICAgICAgIChfZXdrX3ZpZXdfcHJpdl9kZWwpOgotICAgICAgICAo
ZXdrX3ZpZXdfc2V0dGluZ19sb2NhbF9zdG9yYWdlX2RhdGFiYXNlX3BhdGhfZ2V0KTogQWRkZWQu
Ci0gICAgICAgIChld2tfdmlld19zZXR0aW5nX2xvY2FsX3N0b3JhZ2VfZGF0YWJhc2VfcGF0aF9z
ZXQpOiBBZGRlZC4KLSAgICAgICAgKiBld2svZXdrX3ZpZXcuaDoKLQotMjAxMC0wOS0yMyAgTHVj
YXMgRGUgTWFyY2hpICA8bHVjYXMuZGVtYXJjaGlAcHJvZnVzaW9uLm1vYmk+Ci0KLSAgICAgICAg
UmV2aWV3ZWQgYnkgQ3NhYmEgT3N6dHJvZ29uw6FjLgotCi0gICAgICAgIFtFRkxdIEZpeCB3YXJu
aW5ncyBkdXJpbmcgYnVpbGQKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQ2MzU0Ci0KLSAgICAgICAgKiBld2svZXdrX2ZyYW1lLmNwcDoKLSAgICAgICAg
KGV3a19mcmFtZV90ZXh0X21hdGNoZXNfbnRoX3Bvc19nZXQpOiBDaGFuZ2UgYXJndW1lbnQgdHlw
ZSBiZWNhdXNlCi0gICAgICAgIGl0J3MgbWVhbnQgdG8gYmUgYWx3YXlzIHBvc2l0aXZlLgotICAg
ICAgICAqIGV3ay9ld2tfZnJhbWUuaDogRGl0dG8uCi0gICAgICAgICogZXdrL2V3a192aWV3LmNw
cDoKLSAgICAgICAgKGV3a192aWV3X2V4Y2VlZGVkX2RhdGFiYXNlX3F1b3RhKTogQWRkIG1pc3Np
bmcgIiUiIGNhdXNpbmcgd2FybmluZyBhYm91dCBudW1iZXIgb2YKLSAgICAgICAgYXJndW1lbnRz
IHRvIHByaW50Zi1saWtlIGZ1bmN0aW9uLgotICAgICAgICAqIGV3ay9ld2tfdmlldy5oOiBBZGQg
bWlzc2luZyBpbml0aWFsaXphdGlvbi4KLQotMjAxMC0wOS0yMSAgTHVjYXMgRGUgTWFyY2hpICA8
bHVjYXMuZGVtYXJjaGlAcHJvZnVzaW9uLm1vYmk+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgS2Vu
bmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCi0KLSAgICAgICAgW0VGTF0gR2V0IGZyZXNoIHRoZW1l
IHdoZW4gcnVubmluZyBFV2ViTGF1bmNoZXIKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTQ2MjEwCi0KLSAgICAgICAgSWYgdXNlciB0cmllZCB0byBydW4g
RVdlYkxhdW5jaGVyIG91dHNpZGUgb2YgdGhlIGJ1aWxkIHRyZWUsIGl0IHdvdWxkCi0gICAgICAg
IG5vdCBmaW5kIHRoZSB0aGVtZSBhbmQgZmFsbGJhY2sgdG8gdGhlIGluc3RhbGxlZCBvbmUuIEhv
d2V2ZXIsIHNpbmNlCi0gICAgICAgIEVXZWJMYXVuY2hlciBpcyBub3QgaW5zdGFsbGVkLCB3ZSBh
bHdheXMgd2FudCB0byB0YWtlIHRoZSB0aGVtZSBmcm9tCi0gICAgICAgIHRoZSBqdXN0IGNvbXBp
bGVkIHNvdXJjZSBjb2RlLiBJZiB1c2VyIGhhZCBuZXZlciBpbnN0YWxsZWQgV2ViS2l0J3MKLSAg
ICAgICAgRUZMIHBvcnQgaXQgY291bGQgZXZlbiByZWNlaXZlIGEgc2VndiBzaW5jZSBubyB0aGVt
ZSB3b3VsZCBiZSBmb3VuZC4KLQotICAgICAgICBOb3cgRVdlYkxhdW5jaGVyIGRvZXMgbm90IGZh
bGxiYWNrIHRvIHRoZSBpbnN0YWxsZWQgdGhlbWUgYW5kIENNYWtlCi0gICAgICAgIGdpdmVzIGFz
IERBVEFfRElSIHRoZSBkaXJlY3Rvcnkgb2YgdGhlIHRoZW1lIGl0IGhhcyBqdXN0IGJ1aWx0Lgot
Ci0KLSAgICAgICAgKiBDTWFrZUxpc3RzRWZsLnR4dDogZXhwb3J0IERBVEFfRElSIHRvIHBhcmVu
dCBDTWFrZUxpc3RzLnR4dCBpbiBvcmRlcgotICAgICAgICB0byBiZSB1c2VkIGJ5IEVXZWJMYXVu
Y2hlci4KLQotMjAxMC0wOS0xNyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+Ci0KLSAg
ICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KLQotICAgICAgICBSRUdSRVNTSU9OIChyNjAx
MDQpOiBab29tIGxldmVsIGlzIHVuZXhwZWN0ZWRseSByZXNldCBvbiBwYWdlIHJlbG9hZAotICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDI4NjMKLQotICAg
ICAgICAqIGV3ay9ld2tfZnJhbWUuY3BwOgotICAgICAgICAoZXdrX2ZyYW1lX3pvb21fZ2V0KToK
LSAgICAgICAgKGV3a19mcmFtZV96b29tX3NldCk6Ci0gICAgICAgIChld2tfZnJhbWVfem9vbV90
ZXh0X29ubHlfc2V0KToKLSAgICAgICAgQ2FsbCBmdW5jdGlvbnMgb24gRnJhbWUgaW5zdGVhZCBv
ZiBGcmFtZVZpZXcuCi0KLTIwMTAtMDktMTYgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29t
PgotCi0gICAgICAgIEZpeCBidWlsZC4KLQotICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0g
ICAgICAgIChld2tfdmlld19pbnB1dF9tZXRob2Rfc3RhdGVfc2V0KTogVXBkYXRlZCBmb3IgY2hh
bmdlCi0gICAgICAgIGluIG5hbWUgb2YgaXNVcmxGaWVsZCB0byBpc1VSTEZpZWxkLgotCi0yMDEw
LTA5LTE0ICBSeXVhbiBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBS
ZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KLQotICAgICAgICBbRUZMXSBl
d2tfZnJhbWVfdmlld19jcmVhdGVfZm9yX3ZpZXcgc2V0IG51bGwgYXMgdGhlbWUuCi0gICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NTc0MQotCi0gICAgICAg
IEFkZCB0aGVtZSBpbiBld2tfdmlldyB0byB1c2UgaW5zdGVhZCBvZiBmcmFtZSdzIHRoZW1lIHdo
aWNoIGlzIG51bGwgaW4KLSAgICAgICAgZXdrX2ZyYW1lX3ZpZXdfY3JlYXRlX2Zvcl92aWV3Lgot
Ci0gICAgICAgICogZXdrL2V3a19mcmFtZS5jcHA6Ci0gICAgICAgIChld2tfZnJhbWVfdmlld19j
cmVhdGVfZm9yX3ZpZXcpOgotICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChl
d2tfdmlld190aGVtZV9zZXQpOgotICAgICAgICAoZXdrX3ZpZXdfdGhlbWVfZ2V0KToKLQotMjAx
MC0wOS0xNCAgTGVhbmRybyBQZXJlaXJhICA8bGVhbmRyb0Bwcm9mdXNpb24ubW9iaT4KLQotICAg
ICAgICBbRUZMXSBVbnJldmlld2VkIGJ1aWxkIGZpeDogcmVtb3ZlICJ2aXJ0dWFsIiBrZXl3b3Jk
IGZyb20KLSAgICAgICAgaW1wbGVtZW50YXRpb24gZmlsZS4KLQotICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1l
TG9hZGVyQ2xpZW50RWZsOjpjYW5TaG93TUlNRVR5cGVBc0hUTUwpOgotCi0yMDEwLTA5LTEzICBS
YWZhZWwgQW50b2dub2xsaSAgPGFudG9nbm9sbGlAcHJvZnVzaW9uLm1vYmk+Ci0KLSAgICAgICAg
VW5yZXZpZXdlZCBidWlsZCBmaXguCi0KLSAgICAgICAgW0VGTF0gRml4IGJ1aWxkIGJyZWFrIHdo
ZW4gZW5hYmxpbmcgSFRNTDUgdmlkZW8gc3VwcG9ydAotICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDU2NzQKLQotICAgICAgICBUaGUgY29ycmVjdCBpbmNs
dWRlIHZhcmlhYmxlIGZvciBMaWJYbWwyIGluIGNtYWtlIGlzCi0gICAgICAgIExJQlhNTDJfSU5D
TFVERV9ESVIgaW5zdGVhZCBvZiBMSUJYTUwyX0lOQ0xVREVfRElSUy4KLQotICAgICAgICAqIENN
YWtlTGlzdHNFZmwudHh0OgotCi0yMDEwLTA5LTEzICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5r
aW1Ac2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJp
c3RpYW5zZW4uCi0KLSAgICAgICAgW0VGTF0gQWRkIHNldHRpbmcgQVBJIGZvciBlbmFibGluZyBw
YWdlIGNhY2hlCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD00NDkzMQotCi0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAgKF9ld2tfdmll
d19wcml2X25ldyk6Ci0gICAgICAgIChld2tfdmlld19zZXR0aW5nX3BhZ2VfY2FjaGVfZ2V0KTog
QWRkZWQuCi0gICAgICAgIChld2tfdmlld19zZXR0aW5nX3BhZ2VfY2FjaGVfc2V0KTogQWRkZWQu
Ci0gICAgICAgICogZXdrL2V3a192aWV3Lmg6Ci0KLTIwMTAtMDktMTMgIEVucmljYSBDYXN1Y2Np
ICA8ZW5yaWNhQGFwcGxlLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgot
Ci0gICAgICAgIFBhc3RlIHNob3VsZCBiZSBpbXBsZW1lbnRlZCBpbiBXZWJDb3JlIGxpa2UgQ29w
eSBhbmQgQ3V0IGZvciBNYWMgYWxzby4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTQ1NDk0Ci0gICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NjYwNTM3Pgot
Ci0gICAgICAgIE9uIHRoZSBNYWMgcGxhdGZvcm0sIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUg
cGFzdGUgb3BlcmF0aW9uIGlzIGFsbCBkb25lCi0gICAgICAgIGF0IHRoZSBXZWJLaXQgbGV2ZWwu
IEluIG9yZGVyIHRvIHN1cHBvcnQgaXQgb24gV2ViS2l0MiBpdCBpcyBuZWNlc3NhcnkgdG8KLSAg
ICAgICAgcmVmYWN0b3IgdGhlIGNvZGUgYW5kIG1vdmUgdGhpcyBmdW5jdGlvbmFsaXR5IGF0IHRo
ZSBsZXZlbCBvZiBXZWJDb3JlIGxpa2UKLSAgICAgICAgd2UgYWxyZWFkeSBoYXZlIG9uIFdpbmRv
d3MuCi0gICAgICAgIFRoZSBvcmlnaW5hbCBjb2RlIHJlbGllcyBvbiBzb21lIGluIEFwcEtpdCBm
dW5jdGlvbnMgdGhhdCBjYWxsIGJhY2sgaW50bwotICAgICAgICBXZWJLaXQgY2F1c2luZyBwcm9i
bGVtcyBpbiBXZWJLaXQyLiBBbGwgdGhpcyBmdW5jdGlvbmFsaXR5IGhhcyBiZWVuIG1vdmVkCi0g
ICAgICAgIGF0IHRoZSBsZXZlbCBvZiB0aGUgZWRpdG9yIGNsaWVudCB3aGVyZSBpdCBjYW4gYmUg
ZGVhbHQgd2l0aCBhcHByb3ByaWF0ZWx5LgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGll
bnRFZmw6OmNhblNob3dNSU1FVHlwZUFzSFRNTCk6IEFkZGVkIHN0dWIuCi0gICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuaDoKLQotMjAxMC0wOS0xMSAgUnl1YW4g
Q2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQW50
b25pbyBHb21lcy4KLQotICAgICAgICBbRUZMXSBGaXggRUZMIGJ1aWxkIGFmdGVyIHI2NzI3NAot
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDU1ODQKLQot
ICAgICAgICBSZW1vdmUgaW5jbHVkZSBvZiBab29tTW9kZS5oIGFuZCBjaGFuZ2Ugc2V0Wm9vbUZh
Y3RvciBhbmQgem9vbUZhY3RvcgotICAgICAgICB0byBwcm9wZXIgYXBpcyBjaGFnZWQgYnkgcjY3
MjY0LgotCi0gICAgICAgICogZXdrL2V3a19mcmFtZS5jcHA6Ci0gICAgICAgIChld2tfZnJhbWVf
em9vbV9nZXQpOgotICAgICAgICAoZXdrX2ZyYW1lX3pvb21fc2V0KToKLSAgICAgICAgKGV3a19m
cmFtZV96b29tX3RleHRfb25seV9nZXQpOgotICAgICAgICAoZXdrX2ZyYW1lX3pvb21fdGV4dF9v
bmx5X3NldCk6Ci0KLTIwMTAtMDktMTAgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4K
LQotICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBGaXNoZXIuCi0KLSAgICAgICAgTW92ZSBjb2Rl
IGZyb20gV2ViS2l0LWxheWVyIHRvIERvY3VtZW50TG9hZGVyCi0gICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NTU2OQotCi0gICAgICAgIFRoaXMgY29kZSBk
aWRuJ3Qga25vdyB0aGF0IHNldEVuY29kaW5nIGNvdWxkIGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1l
cwotICAgICAgICBzYWZlbHkuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6
RnJhbWVMb2FkZXJDbGllbnRFZmwpOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGll
bnRFZmw6OmNvbW1pdHRlZExvYWQpOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGll
bnRFZmw6OmRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNlKToKLSAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyQ2xpZW50RWZsOjpmaW5pc2hlZExvYWRpbmcpOgotICAgICAgICAoV2ViQ29yZTo6
RnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkRmFpbExvYWRpbmcpOgotICAgICAgICAo
V2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OnNldE1haW5Eb2N1bWVudEVycm9yKToKLSAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5oOgotCi0yMDEwLTA5
LTEwICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+Ci0KLSAgICAgICAgUmV2aWV3ZWQg
YnkgRXJpYyBTZWlkZWwuCi0KLSAgICAgICAgTWFpbiByZXNvdXJjZSBieXRlcyBzaG91bGRuJ3Qg
Ym91bmNlIHRocm91Z2ggRnJhbWVMb2FkZXIKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTQ1NDk2Ci0KLSAgICAgICAgTm93IHJldHVybiB0aGUgYnl0ZXMg
dG8gdGhlIERvY3VtZW50TG9hZGVyLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRF
Zmw6OmNvbW1pdHRlZExvYWQpOgotCi0yMDEwLTA5LTA4ICBEYXJpbiBBZGxlciAgPGRhcmluQGFw
cGxlLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgotCi0gICAgICAgIE1v
dmUgZnVuY3Rpb25zIGZyb20gRnJhbWUgdG8gRWRpdG9yIGFzIHBsYW5uZWQKLSAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ1MjE4Ci0KLSAgICAgICAgKiBl
d2svZXdrX2ZyYW1lLmNwcDoKLSAgICAgICAgKGV3a19mcmFtZV9lZGl0YWJsZV9zZXQpOgotICAg
ICAgICAoZXdrX2ZyYW1lX3NlbGVjdGlvbl9nZXQpOgotICAgICAgICAoZXdrX2ZyYW1lX3RleHRf
c2VhcmNoKToKLSAgICAgICAgKGV3a19mcmFtZV90ZXh0X21hdGNoZXNfbWFyayk6Ci0gICAgICAg
IChld2tfZnJhbWVfdGV4dF9tYXRjaGVzX2hpZ2hsaWdodF9zZXQpOgotICAgICAgICAoZXdrX2Zy
YW1lX3RleHRfbWF0Y2hlc19oaWdobGlnaHRfZ2V0KToKLSAgICAgICAgKiBld2svZXdrX3ZpZXcu
Y3BwOgotICAgICAgICAoZXdrX3ZpZXdfc2VsZWN0aW9uX2dldCk6Ci0gICAgICAgIENoYW5nZWQg
Y2FsbCBzaXRlcyB0byB1c2UgZWRpdG9yKCkuCi0KLTIwMTAtMDktMDkgIEd5dXlvdW5nIEtpbSAg
PGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZp
eC4KLQotICAgICAgICBbRUZMXSBGaXggZHVwbGljYXRlIGdzdHJlYW1lciBtYWNybyBpbiBDTWFr
ZUxpc3RFZmwudHh0Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD00NTQzMwotCi0gICAgICAgIEluIFdlYktpdC9lZmwvQ01ha2VMaXN0RWZsLnR4dCwgZHVw
bGljYXRlZCBFTkFCTEVfVklERU8gbWFjcm9zIHdlcmUgYWRkZWQuCi0gICAgICAgIFNvLCB1bm5l
Y2Vzc2FyeSBFTkFCTEVfVklERU8gbWFjcm8gaXMgZGVsZXRlZC4KLQotICAgICAgICAqIENNYWtl
TGlzdHNFZmwudHh0OgotCi0yMDEwLTA5LTA4ICBSeXVhbiBDaG9pICA8cnl1YW4uY2hvaUBzYW1z
dW5nLmNvbT4KLQotICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeC4KLQotICAgICAgICBbRUZM
XSBOZWVkIHRvIGFkZCBjdXN0b20gZGVwZW5kZW5jaWVzLgotICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDUyNDcKLQotICAgICAgICBBZGQgV2ViS2l0X1Ro
ZW1lIGludG8gV2ViS2l0X1NPVVJDRVMgdG8gbWFrZSBpdCB3aGlsZSBidWlsZGluZy4KLQotICAg
ICAgICAqIENNYWtlTGlzdHNFZmwudHh0OgotCi0yMDEwLTA5LTA4ICBMdWNhcyBEZSBNYXJjaGkg
IDxsdWNhcy5kZW1hcmNoaUBwcm9mdXNpb24ubW9iaT4KLQotICAgICAgICBSZXZpZXdlZCBieSBL
ZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KLQotICAgICAgICBbRUZMXSBFeHBvcnQgZGF0YSBk
aXJlY3RvcnkgdGhyb3VnaCBwa2ctY29uZmlnCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD00NTM4NQotCi0gICAgICAgIFVzaW5nIHBrZy1jb25maWcgaXQn
cyBwb3NzaWJsZSBmb3IgYSBicm93c2VyIHRvIGtub3cgdGhlIGxvY2F0aW9uIG9mCi0gICAgICAg
IGluc3RhbGxlZCB0aGVtZXMuIFdoZW4gY29tcGlsaW5nIHRoZSBicm93c2VyLCBhIHZhcmlhYmxl
IG1pZ2h0IGJlCi0gICAgICAgIGRlZmluZWQgd2l0aCB0aGUgZGF0YWRpciwgbGlrZSBiZWxvdzoK
LQotICAgICAgICBnY2MgLW8gYnJvd3NlciBicm93c2VyLmMgJChwa2ctY29uZmlnIC0tbGlicyAt
LWNmbGFncyBld2Via2l0KSBcCi0gICAgICAgICAgIC1ERVdFQktJVF9EQVRBX0RJUj0kKHBrZy1j
b25maWcgLS12YXJpYWJsZT1kYXRhZGlyKQotCi0gICAgICAgICogZXdlYmtpdC5wYy5pbjogRXhw
b3J0IGRhdGFkaXIgdmFyaWFibGUuCi0KLTIwMTAtMDktMDYgIFJ5dWFuIENob2kgIDxyeXVhbi5j
aG9pQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4LgotCi0gICAg
ICAgIFtFRkxdIFJFR1JFU1NJT04oNjY3OTQpIE5lZWQgdG8gZml4IGJ1aWxkIGJyZWFrLgotICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDUyNDEKLQotICAg
ICAgICBBZGQgZHVtbXkgY2xhc3MoRnJhbWVOZXR3b3JraW5nQ29udGV4dEVmbCkgbGlrZSBHVEsr
IHBvcnQgYW5kIGltcGxlbWVudAotICAgICAgICBhcyBFRkwgc3R5bGUuCi0KLSAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlckNsaWVudEVmbDo6Y3JlYXRlTmV0d29ya2luZ0NvbnRleHQpOgotICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTmV0d29ya2luZ0NvbnRleHRFZmwuaDogQWRkZWQuCi0g
ICAgICAgIChXZWJDb3JlOjpGcmFtZU5ldHdvcmtpbmdDb250ZXh0RWZsOjpjcmVhdGUpOgotICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVOZXR3b3JraW5nQ29udGV4dEVmbDo6Y29yZUZyYW1lKToKLSAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTmV0d29ya2luZ0NvbnRleHRFZmw6OkZyYW1lTmV0d29ya2lu
Z0NvbnRleHRFZmwpOgotCi0yMDEwLTA5LTA0ICBMdWNhcyBEZSBNYXJjaGkgIDxsdWNhcy5kZW1h
cmNoaUBwcm9mdXNpb24ubW9iaT4KLQotICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRl
IENocmlzdGlhbnNlbi4KLQotICAgICAgICBbRUZMXSBNb3ZlIHRlc3QgYnJvd3NlciB0byBXZWJL
aXRUb29scyBkaXJlY3RvcnkKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQ1MjEyCi0KLSAgICAgICAgRm9sbG93IG90aGVyIHBvcnRzIGxpa2UgUVQgYW5k
IEdUSyB3aGljaCBtb3ZlZCB0aGUgdGVzdCBicm93c2VyIHRvCi0gICAgICAgIFdlYktpdFRvb2xz
IGRpcmVjdG9yeS4KLQotICAgICAgICAqIENNYWtlTGlzdHNFZmwudHh0OiBSZW1vdmUgYnVpbGQg
Zm9yIHRlc3QgYnJvd3Nlci4KLSAgICAgICAgKiBFV2ViTGF1bmNoZXIvbWFpbi5jOiBSZW1vdmVk
LgotCi0yMDEwLTA5LTAzICBKZXN1cyBTYW5jaGV6LVBhbGVuY2lhICA8amVzdXMucGFsZW5jaWFA
b3BlbmJvc3NhLm9yZz4KLQotICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KLQotICAg
ICAgICBBZGQgTmV0d29ya2luZ0NvbnRleHQgdG8gYXZvaWQgbGF5ZXIgdmlvbGF0aW9ucwotICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDIyOTIKLQotICAg
ICAgICBBZGQgY3JlYXRlTmV0d29ya2luZ0NvbnRleHQgdG8gRUZMJ3MgRnJhbWVMb2FkZXJDbGll
bnQuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHA6
Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6Y3JlYXRlTmV0d29ya2lu
Z0NvbnRleHQpOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZs
Lmg6Ci0KLTIwMTAtMDktMDMgIEx1Y2FzIERlIE1hcmNoaSAgPGx1Y2FzLmRlbWFyY2hpQHByb2Z1
c2lvbi5tb2JpPgotCi0gICAgICAgIFJldmlld2VkIGJ5IE1hcnRpbiBSb2JpbnNvbi4KLQotICAg
ICAgICBbRUZMXSBSZWdyZXNzaW9uICg2NjUzMSkgQnVpbGQgYnJlYWsgd2l0aCBHbGliIFN1cHBv
cnQKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ1MDEx
Ci0KLSAgICAgICAgTW92ZSBHdGtUeXBlZGVmcy5oIHRvIEdUeXBlZGVmcy5oIGFuZCBsZXQgaXQg
aW5zaWRlIGdvYmplY3QgZGlyZWN0b3J5Ci0gICAgICAgIHNpbmNlIHdoZW4gZ2xpYiBpcyBlbmFi
bGVkLCBFRkwgcG9ydCBuZWVkcyBpdCwgdG9vLgotCi0gICAgICAgICogQ01ha2VMaXN0c0VmbC50
eHQ6IEluY2x1ZGUgZ29iamVjdCBkaXJlY3RvcnkgdG8gZmluZCBuZXcgaGVhZGVyCi0gICAgICAg
IGZpbGUuCi0KLTIwMTAtMDktMDMgIEx1Y2FzIERlIE1hcmNoaSAgPGx1Y2FzLmRlbWFyY2hpQHBy
b2Z1c2lvbi5tb2JpPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEFudG9uaW8gR29tZXMuCi0KLSAg
ICAgICAgW0VGTF0gSW5zdGFsbCBkZWZhdWx0IHRoZW1lCi0gICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NTE1NAotCi0gICAgICAgIFNpbmNlIGEgdGhlbWUg
aXMgbmVlZGVkIGluIG9yZGVyIHRvIGNyZWF0ZSBhIG5ldyBicm93c2VyLCBpbnN0YWxsIHRoZQot
ICAgICAgICBkZWZhdWx0IG9uZSB0byBzZXJ2ZSBhcyBleGFtcGxlIGFuZCBmYWxsLWJhY2suCi0K
LSAgICAgICAgKiBDTWFrZUxpc3RzRWZsLnR4dDoKLQotMjAxMC0wOS0wMiAgTHVjYXMgRGUgTWFy
Y2hpICA8bHVjYXMuZGVtYXJjaGlAcHJvZnVzaW9uLm1vYmk+Ci0KLSAgICAgICAgUmV2aWV3ZWQg
YnkgQW50b25pbyBHb21lcy4KLQotICAgICAgICBbRUZMXSBOYW1lIGluc3RhbGwgZGlyZWN0b3Jp
ZXMgYWNjb3JkaW5nIHRvIGxpYnJhcnkgbmFtZQotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDUxMjYKLQotICAgICAgICAqIENNYWtlTGlzdHNFZmwudHh0
OiBpbmNsdWRlIGRpcmV0b3J5IGZvbGxvd3MgbGlicmFyeSBuYW1lLgotICAgICAgICAqIGV3ZWJr
aXQucGMuaW46IERpdHRvLgotCi0yMDEwLTA4LTMxICBEYXZlIEh5YXR0ICA8aHlhdHRAYXBwbGUu
Y29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCi0KLSAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ0ODYzLCBkaXNlbnRhbmdsZSBzdHls
ZSByZWNhbGMgZnJvbSBsYXlvdXQsIHNvIHRoYXQKLSAgICAgICAgdGhlIGZvcm1lciBjYW4gb2Nj
dXIgaW4gbW9yZSBwbGFjZXMgd2l0aG91dCBoYXZpbmcgdG8gZG8gdGhlIGxhdHRlci4KLQotICAg
ICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChld2tfdmlld19sYXlvdXRfaWZfbmVl
ZGVkX3JlY3Vyc2l2ZSk6Ci0KLTIwMTAtMDgtMzEgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9y
Zz4KLQotICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KLQotICAgICAgICBBZGQgYWJp
bGl0eSB0byBjb3VudCB0ZXh0IG1hdGNoZXMgd2l0aG91dCBtYXJraW5nCi0gICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00Mzk5NgotCi0gICAgICAgICogZXdr
L2V3a19mcmFtZS5jcHA6Ci0gICAgICAgIChld2tfZnJhbWVfdGV4dF9tYXRjaGVzX21hcmspOiBT
d2l0Y2hlZCB0byBjYWxsCi0gICAgICAgIGNvdW50TWF0Y2hlc0ZvclRleHQoKSBpbnN0ZWFkIG9m
IG1hcmtBbGxNYXRjaGVzRm9yVGV4dCgpLgotCi0yMDEwLTA4LTMxICBHeXV5b3VuZyBLaW0gIDxn
eXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgVW5yZXZpZXdlZCBidWlsZCBmaXgu
Ci0KLSAgICAgICAgW0VGTF0gQnVpbGQgYnJlYWsgZm9yIHI2NjQ1NgotICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9wb3N0X2J1Zy5jZ2kKLQotICAgICAgICBSZXBsYWNlIGZpcnN0UmVj
dHNGb3JNYXJrZXJzIHdpdGggcmVuZGVyZWRSZWN0c0Zvck1hcmtlcnMuCi0KLSAgICAgICAgKiBl
d2svZXdrX2ZyYW1lLmNwcDoKLSAgICAgICAgKGV3a19mcmFtZV90ZXh0X21hdGNoZXNfbnRoX3Bv
c19nZXQpOgotCi0yMDEwLTA4LTMwICBLYW1pbCBCbGFuayAgPGsuYmxhbmtAc2Ftc3VuZy5jb20+
Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KLQotICAgICAgICBbRUZMXSBBZGRl
ZCBBUEkgd2hpY2ggcmV0dXJucyBwb3NpdGlvbiBvZiBuLXRoIHRleHQgbWF0Y2hlcyBtYXJrCi0g
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NDI1OAotCi0g
ICAgICAgICogZXdrL2V3a19mcmFtZS5jcHA6IAotICAgICAgICAoX2V3a19mcmFtZV9yZWN0X2Nt
cF9sZXNzX3RoYW4pOiBQcml2YXRlLgotICAgICAgICAoX2V3a19mcmFtZV9yZWN0X2lzX25lZ2F0
aXZlX3ZhbHVlKTogUHJpdmF0ZS4KLSAgICAgICAgKGV3a19mcmFtZV90ZXh0X21hdGNoZXNfbnRo
X3Bvc19nZXQpOiBBZGRlZC4gRnVuY3Rpb24gcmV0dXJucyBwb3NpdGlvbiBvZgotICAgICAgICBu
LXRoIHRleHQgbWF0Y2ggaW4gZnJhbWUuCi0gICAgICAgICogZXdrL2V3a19mcmFtZS5oOgotCi0y
MDEwLTA4LTMwICBSeXVhbiBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KLQotICAgICAg
ICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgotCi0gICAgICAgIFtFRkxdVXJsIG9mIEhpc3RvcnlJ
dGVtIHdhcyBicm9rZW4gZm9yIHNwZWNpYWwgY2hhcmFjdGVyIGxpa2Uga29yZWFuCi0gICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NDQ5NQotCi0gICAgICAg
IFJlbW92ZSB1bm5lY2Vzc2FyeSBjb2RlLiBUaGlzIG1ha2VzIGEgYnVnIHdpdGggY29tcGxpY2F0
ZWQgVVJMLgotCi0gICAgICAgICogZXdrL2V3a19mcmFtZS5jcHA6Ci0gICAgICAgIChld2tfZnJh
bWVfdmlld19zdGF0ZV9zYXZlKToKLQotMjAxMC0wOC0zMCAgTWlrb8WCYWogTWHFgmVja2kgIDxt
Lm1hbGVja2lAc2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hk
ZSBDaHJpc3RpYW5zZW4KLQotICAgICAgICBbRUZMXSBBZGRlZCBpbml0aWFsIHNldHRpbmcgdG8g
dHVybiBvbiBvZmZsaW5lIHBhZ2VzLgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NDQyMzkKLQotICAgICAgICAqIGV3ay9ld2tfbWFpbi5jcHA6IFRvcm4g
b2ZmIG5vbi1FRkwgaW5pdCB0byBfZXdrX2luaXRfYm9keQotICAgICAgICAoZXdrX2luaXQpOiBD
aGFuZ2VkIG5vbi1FRkwgaW5pdCB0byBjYWxsIF9ld2tfaW5pdF9ib2R5Ci0gICAgICAgIChfZXdr
X2luaXRfYm9keSk6IE1vdmVkIGludGVybmFsIGluaXQgaGVyZSBhbmQgYWRkZWQgY2FjaGUgZGly
ZWN0b3J5IHBhdGggc2V0dGluZy4KLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOiBBZGRlZCBu
ZXcgY29uZmlnIGl0ZW1zOiBvZmZsaW5lX2FwcF9jYWNoZSBhbmQgY2FjaGVfZGlyZWN0b3J5Ci0g
ICAgICAgIChfZXdrX3ZpZXdfcHJpdl9uZXcpOiBjcmVhdGluZyBjYWNoZV9kaXJlY3Rvcnkgc3Ry
aW5nCi0gICAgICAgIChfZXdrX3ZpZXdfcHJpdl9kZWwpOiBkZWxldGluZyBjYWNoZV9kaXJlY3Rv
cnkgc3RyaW5nCi0gICAgICAgIChld2tfdmlld19zZXR0aW5nX29mZmxpbmVfYXBwX2NhY2hlX2dl
dCk6Ci0gICAgICAgIChld2tfdmlld19zZXR0aW5nX29mZmxpbmVfYXBwX2NhY2hlX3NldCk6Ci0g
ICAgICAgIChld2tfdmlld19zZXR0aW5nX2NhY2hlX2RpcmVjdG9yeV9nZXQpOgotICAgICAgICAo
ZXdrX3ZpZXdfc2V0dGluZ19jYWNoZV9kaXJlY3Rvcnlfc2V0KToKLSAgICAgICAgKiBld2svZXdr
X3ZpZXcuaDogYWRkZWQgb2ZmbGluZV9hcHBfY2FjaGUgYW5kIGNhY2hlX2RpcmVjdG9yeSBwcm9w
cyB0byBld2sgQVBJCi0KLTIwMTAtMDgtMjYgIE1pcm9zbGF3IFN6eW1hbnNraSAgPG1pcm9zbGF3
LnNAc2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJp
c3RpYW5zZW4uCi0KLSAgICAgICAgW0VGTF0gQWRkZWQgbmV3IGNhbGxiYWNrIHdoZW4gdmlldydz
IHNpemUgaXMgY2hhbmdlZCB0byBmaXggaXNzdWUgd2l0aCBjaGFuZ2luZyBsYXlvdXQgc2l6ZQot
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQzMzcKLQot
ICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChfZXdrX3ZpZXdfc21hcnRfY2Fs
Y3VsYXRlKToKLQotMjAxMC0wOC0yNSAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1
bmcuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEFudG9uaW8gR29tZXMuCi0KLSAgICAgICAg
W0VGTF0gQWRkIGR1bW15IEZ1bGxTY3JlZW5WaWRlb0NvbnRyb2xsZXJFZmwgdG8gV2ViS2l0IEVG
TAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQ1OTAK
LQotICAgICAgICBBZGQgRnVsbFNjcmVlblZpZGVvQ29udHJvbGxlckVmbCB0byBXZWJDb3JlU3Vw
cG9ydC4gSG93ZXZlciwKLSAgICAgICAgdGhpcyBpcyBub3QgaW1wbGVtZW50ZWQgeWV0LgotCi0g
ICAgICAgICogQ01ha2VMaXN0c0VmbC50eHQ6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnVs
bHNjcmVlblZpZGVvQ29udHJvbGxlckVmbC5jcHA6IEFkZGVkLgotICAgICAgICAoRnVsbHNjcmVl
blZpZGVvQ29udHJvbGxlcjo6RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcik6Ci0gICAgICAgIChG
dWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjp+RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcik6Ci0g
ICAgICAgIChGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpzZXRNZWRpYUVsZW1lbnQpOgotICAg
ICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6c2hvd0h1ZCk6Ci0gICAgICAgIChGdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyOjpoaWRlSHVkKToKLSAgICAgICAgKEZ1bGxzY3JlZW5WaWRl
b0NvbnRyb2xsZXI6OmVudGVyRnVsbHNjcmVlbik6Ci0gICAgICAgIChGdWxsc2NyZWVuVmlkZW9D
b250cm9sbGVyOjp1cGRhdGVIdWRQb3NpdGlvbik6Ci0gICAgICAgIChGdWxsc2NyZWVuVmlkZW9D
b250cm9sbGVyOjpleGl0T25Vc2VyUmVxdWVzdCk6Ci0gICAgICAgIChGdWxsc2NyZWVuVmlkZW9D
b250cm9sbGVyOjpleGl0RnVsbHNjcmVlbik6Ci0gICAgICAgIChGdWxsc2NyZWVuVmlkZW9Db250
cm9sbGVyOjpjYW5QbGF5KToKLSAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OnBs
YXkpOgotICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6cGF1c2UpOgotICAgICAg
ICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6cGxheVN0YXRlQ2hhbmdlZCk6Ci0gICAgICAg
IChGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjp0b2dnbGVQbGF5KToKLSAgICAgICAgKEZ1bGxz
Y3JlZW5WaWRlb0NvbnRyb2xsZXI6OnZvbHVtZSk6Ci0gICAgICAgIChGdWxsc2NyZWVuVmlkZW9D
b250cm9sbGVyOjptdXRlZCk6Ci0gICAgICAgIChGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpz
ZXRWb2x1bWUpOgotICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6dm9sdW1lQ2hh
bmdlZCk6Ci0gICAgICAgIChGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjptdXRlQ2hhbmdlZCk6
Ci0gICAgICAgIChGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpjdXJyZW50VGltZSk6Ci0gICAg
ICAgIChGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpzZXRDdXJyZW50VGltZSk6Ci0gICAgICAg
IChGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpkdXJhdGlvbik6Ci0gICAgICAgIChGdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyOjpwZXJjZW50TG9hZGVkKToKLSAgICAgICAgKEZ1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXI6OmJlZ2luU2Vlayk6Ci0gICAgICAgIChGdWxsc2NyZWVuVmlkZW9Db250
cm9sbGVyOjpkb1NlZWspOgotICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6ZW5k
U2Vlayk6Ci0gICAgICAgICh0aW1lVG9TdHJpbmcpOgotICAgICAgICAoRnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlcjo6dXBkYXRlSHVkUHJvZ3Jlc3NCYXIpOgotICAgICAgICAoRnVsbHNjcmVlblZp
ZGVvQ29udHJvbGxlcjo6Y3JlYXRlSHVkKToKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyRWZsLmg6IEFkZGVkLgotICAgICAgICAoRnVsbHNjcmVlblZp
ZGVvQ29udHJvbGxlcjo6bWVkaWFFbGVtZW50KToKLQotMjAxMC0wOC0yNSAgR3l1eW91bmcgS2lt
ICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEFudG9u
aW8gR29tZXMuCi0KLSAgICAgICAgW0VGTF0gQWRkIHNldHRpbmcgQVBJIGZvciBlbmFibGluZyBs
b2NhbCBzdG9yYWdlLgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NDQzMTkKLQotICAgICAgICBBZGQgQVBJIGZvciBlbmFibGluZy9kaXNhYmxpbmcgbG9j
YWwgc3RvcmFnZS4KLQotICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChfZXdr
X3ZpZXdfcHJpdl9uZXcpOgotICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19sb2NhbF9zdG9yYWdl
X2dldCk6IEFkZGVkCi0gICAgICAgIChld2tfdmlld19zZXR0aW5nX2xvY2FsX3N0b3JhZ2Vfc2V0
KTogQWRkZWQKLSAgICAgICAgKiBld2svZXdrX3ZpZXcuaDoKLQotMjAxMC0wOC0yNSAgSmFlaHVu
IExpbSAgPGxqYWVodW4ubGltQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEFu
dG9uaW8gR29tZXMuCi0KLSAgICAgICAgW0VGTF0gZW5hYmxlIGxpYnNvdXAncyBjb250ZW50IGRl
Y29kZSBmZWF0dXJlCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD00NDE0NwotCi0gICAgICAgIGxpYnNvdXAncyBjb250ZW50IGRlY29kZSBmZWF0dXJlIGlz
IGVuYWJsZWQgZHVyaW5nIGluaXRpYWxpemF0b24uCi0KLSAgICAgICAgKiBld2svZXdrX21haW4u
Y3BwOgotICAgICAgICAoZXdrX2luaXQpOgotCi0yMDEwLTA4LTI1ICBSYWZhZWwgQW50b2dub2xs
aSAgPGFudG9nbm9sbGlAcHJvZnVzaW9uLm1vYmk+Ci0KLSAgICAgICAgVW5yZXZpZXdlZCBidWls
ZCBmaXguCi0KLSAgICAgICAgW0VGTF0gQnVpbGQgZml4IGZvciByZXZpc2lvbiA2NTMzMgotICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQ1NDMKLQotICAg
ICAgICBVc2UgR3RocmVhZF9MSUJSQVJJRVMgaW5zdGVhZCBvZiBHVEhSRUFEX0xJQlJBUklFUy4g
VGhpcyBmaXgKLSAgICAgICAgdGhlIGJ1aWxkIHdoZW4gdXNpbmcgRU5BQkxFX0dMSUJfU1VQUE9S
VD1PTiBhbmQgTkVUV09SS19CQUNLRU5EPWN1cmwuCi0KLSAgICAgICAgKiBDTWFrZUxpc3RzRWZs
LnR4dDoKLQotMjAxMC0wOC0yNCAgTHVrYXN6IFNsYWNoY2lhayAgPGwuc2xhY2hjaWFrQHNhbXN1
bmcuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEFudG9uaW8gR29tZXMuCi0KLSAgICAgICAg
W0VGTF0gRXh0ZW5kZWQgRUZMIFdlYlZpZXcgQVBJIHRvIGFsbG93IGVuYWJsZS9kaXNhYmxlIEZy
YW1lIEZsYXR0ZW5pbmcKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTQ0MjUzCi0KLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgotICAgICAgICAoZXdr
X3ZpZXdfc2V0dGluZ19lbmFibGVfZnJhbWVfZmxhdHRlbmluZ19nZXQpOgotICAgICAgICAoZXdr
X3ZpZXdfc2V0dGluZ19lbmFibGVfZnJhbWVfZmxhdHRlbmluZ19zZXQpOgotICAgICAgICAqIGV3
ay9ld2tfdmlldy5oOgotCi0yMDEwLTA4LTIzICBMZWFuZHJvIFBlcmVpcmEgIDxsZWFuZHJvQHBy
b2Z1c2lvbi5tb2JpPgotCi0gICAgICAgIFtFRkxdIEJ1aWxkIGZpeCBmb3IgcGxhdGZvcm1zIHRo
YXQgZG8gbm90IHJlcXVpcmUgbGlua2luZyB3aXRoICJkbCIuCi0gICAgICAgIENNYWtlIGluY2x1
ZGVzIHRoZSB2YXJpYWJsZSBDTUFLRV9ETF9MSUJTIHRoYXQgZXZhbHVhdGVzIHRvIHRoZQotICAg
ICAgICBwbGF0Zm9ybS1zcGVjaWZpYyBsaWJyYXJpZXMuCi0KLSAgICAgICAgKiBDTWFrZUxpc3Rz
RWZsLnR4dDogVXNlICR7Q01BS0VfRExfTElCU30gaW5zdGVhZCBvZiBkbC4KLQotMjAxMC0wOC0y
MiAgUmFmYWVsIEFudG9nbm9sbGkgIDxhbnRvZ25vbGxpQHByb2Z1c2lvbi5tb2JpPgotCi0gICAg
ICAgIFJldmlld2VkIGJ5IEFudG9uaW8gR29tZXMuCi0KLSAgICAgICAgW0VGTF0gUmVtb3ZlIGR1
cGxpY2F0ZWQgaW5jbHVkZSBlbnRyeSBmcm9tIGRlZmF1bHQgdGhlbWUuCi0gICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NDM0NQotCi0gICAgICAgIFRoaXMg
dXNlZCB0byBjcmVhdGUgdGhlIGdyb3VwIHdlYmtpdC93aWRnZXQvZW50cnkgdHdpY2UgaW4KLSAg
ICAgICAgdGhlIHRoZW1lLiBJdCdzIGxlYWRpbmcgdG8gYSBidWcgd2l0aCB0aGUgbmV3ZXIgdmVy
c2lvbnMgb2YKLSAgICAgICAgRUZMLgotCi0gICAgICAgICogRGVmYXVsdFRoZW1lL2RlZmF1bHQu
ZWRjOgotCi0yMDEwLTA4LTIyICBEYW5pZWwgQmF0ZXMgIDxkYmF0ZXNAcmltLmNvbT4KLQotICAg
ICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KLQotICAgICAgICBFbmNhcHN1bGF0ZSBkb2N1
bWVudCBtYXJrZXIgbWFuYWdlbWVudCBpbnRvIERvY3VtZW50TWFya2VyQ29udHJvbGxlcgotICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQzODMKLQotICAg
ICAgICBNb2RpZnkgY2FsbCBzaXRlcyBpbiB0aGUgRUZMIHBvcnQgdG8gdXNlIERvY3VtZW50TWFy
a2VyQ29udHJvbGxlci4KLQotICAgICAgICBObyBmdW5jdGlvbmFsaXR5IHdhcyBjaGFuZ2VkLCBz
byBubyBuZXcgdGVzdHMuCi0KLSAgICAgICAgKiBld2svZXdrX2ZyYW1lLmNwcDoKLSAgICAgICAg
KGV3a19mcmFtZV90ZXh0X21hdGNoZXNfdW5tYXJrX2FsbCk6Ci0KLTIwMTAtMDgtMjAgIExlYW5k
cm8gUGVyZWlyYSAgPGxlYW5kcm9AcHJvZnVzaW9uLm1vYmk+Ci0KLSAgICAgICAgW0VGTF0gVW5y
ZXZpZXdlZC4gRml4IGJ1aWxkIHdoZW4gdXNpbmcgR05VIGdvbGQuCi0gICAgICAgIFdoZW4gbGlu
a2luZyB3aXRoIEdOVSBnb2xkLCBzb21lIHN5bWJvbHMgYXJlIG5vdCBmb3VuZDogZXhwbGljaXRs
eQotICAgICAgICBsaW5rIHdpdGggdGhlIHJlcXVpcmVkIGxpYnJhcmllcy4KLQotICAgICAgICAq
IENNYWtlTGlzdHNFZmwudHh0OiBEZXBlbmQgb24gRm9udGNvbmZpZywgUE5HLCBKUEVHIGFuZCBk
bAotICAgICAgICBsaWJyYXJpZXMuCi0KLTIwMTAtMDgtMTUgIEd5dXlvdW5nIEtpbSAgPGd5dXlv
dW5nLmtpbUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBBbnRvbmlvIEdvbWVz
LgotCi0gICAgICAgIFtFRkxdIEVuYWJsZSBsb2NhbFN0b3JhZ2Ugb2YgSFRNTDUgZm9yIFdlYktp
dCBFRkwKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ0
MDIwCi0KLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOiAKLSAgICAgICAgKF9ld2tfdmlld19w
cml2X25ldyk6Ci0KLTIwMTAtMDgtMTEgIFJhZmFlbCBBbnRvZ25vbGxpICA8YW50b2dub2xsaUBw
cm9mdXNpb24ubW9iaT4KLQotICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlz
dGlhbnNlbi4KLQotICAgICAgICBbRUZMXSBBZGRpbmcgbmV3IHRoZW1lIGZvciB3aWRnZXRzLgot
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDM4NjAKLQot
ICAgICAgICBPcmlnaW5hbCB0aGVtZSB3YXMgdGhlcmUgZm9yIGEgbG9uZyB0aW1lLiBUaGlzIGlz
IGEgbmV3Ci0gICAgICAgIGZyZXNoIG9uZS4KLQotICAgICAgICAqIERlZmF1bHRUaGVtZS9kZWZh
dWx0LmVkYzoKLSAgICAgICAgKiBEZWZhdWx0VGhlbWUvd2lkZ2V0L2J1dHRvbi9idXR0b24uZWRj
OgotICAgICAgICAqIERlZmF1bHRUaGVtZS93aWRnZXQvYnV0dG9uL2ltZ19idXR0b25fZm9jdXMu
cG5nOgotICAgICAgICAqIERlZmF1bHRUaGVtZS93aWRnZXQvYnV0dG9uL2ltZ19idXR0b25faG92
ZXIucG5nOgotICAgICAgICAqIERlZmF1bHRUaGVtZS93aWRnZXQvYnV0dG9uL2ltZ19idXR0b25f
bm9ybWFsLnBuZzoKLSAgICAgICAgKiBEZWZhdWx0VGhlbWUvd2lkZ2V0L2J1dHRvbi9pbWdfYnV0
dG9uX3ByZXNzLnBuZzoKLSAgICAgICAgKiBEZWZhdWx0VGhlbWUvd2lkZ2V0L2NoZWNrL2NoZWNr
LmVkYzoKLSAgICAgICAgKiBEZWZhdWx0VGhlbWUvd2lkZ2V0L2NoZWNrL2ltZ19jaGVja19vZmYu
cG5nOgotICAgICAgICAqIERlZmF1bHRUaGVtZS93aWRnZXQvY2hlY2svaW1nX2NoZWNrX29mZl9m
b2N1cy5wbmc6Ci0gICAgICAgICogRGVmYXVsdFRoZW1lL3dpZGdldC9jaGVjay9pbWdfY2hlY2tf
b2ZmX2hvdmVyLnBuZzoKLSAgICAgICAgKiBEZWZhdWx0VGhlbWUvd2lkZ2V0L2NoZWNrL2ltZ19j
aGVja19vbi5wbmc6Ci0gICAgICAgICogRGVmYXVsdFRoZW1lL3dpZGdldC9jaGVjay9pbWdfY2hl
Y2tfb25fZm9jdXMucG5nOgotICAgICAgICAqIERlZmF1bHRUaGVtZS93aWRnZXQvY2hlY2svaW1n
X2NoZWNrX29uX2hvdmVyLnBuZzoKLSAgICAgICAgKiBEZWZhdWx0VGhlbWUvd2lkZ2V0L2NvbWJv
L2NvbWJvLmVkYzoKLSAgICAgICAgKiBEZWZhdWx0VGhlbWUvd2lkZ2V0L2NvbWJvL2NvbWJvX2Zv
Y3VzLnBuZzoKLSAgICAgICAgKiBEZWZhdWx0VGhlbWUvd2lkZ2V0L2NvbWJvL2NvbWJvX2ZvY3Vz
X2J1dHRvbi5wbmc6Ci0gICAgICAgICogRGVmYXVsdFRoZW1lL3dpZGdldC9jb21iby9jb21ib19o
b3Zlci5wbmc6Ci0gICAgICAgICogRGVmYXVsdFRoZW1lL3dpZGdldC9jb21iby9jb21ib19ob3Zl
cl9idXR0b24ucG5nOgotICAgICAgICAqIERlZmF1bHRUaGVtZS93aWRnZXQvY29tYm8vY29tYm9f
bm9ybWFsLnBuZzoKLSAgICAgICAgKiBEZWZhdWx0VGhlbWUvd2lkZ2V0L2NvbWJvL2NvbWJvX25v
cm1hbF9idXR0b24ucG5nOgotICAgICAgICAqIERlZmF1bHRUaGVtZS93aWRnZXQvY29tYm8vY29t
Ym9fcHJlc3MucG5nOgotICAgICAgICAqIERlZmF1bHRUaGVtZS93aWRnZXQvY29tYm8vY29tYm9f
cHJlc3NfYnV0dG9uLnBuZzoKLSAgICAgICAgKiBEZWZhdWx0VGhlbWUvd2lkZ2V0L2NvbWJvL2lj
b24ucG5nOgotICAgICAgICAqIERlZmF1bHRUaGVtZS93aWRnZXQvZW50cnkvaW1nX2ZvY3VzZWQu
cG5nOgotICAgICAgICAqIERlZmF1bHRUaGVtZS93aWRnZXQvZW50cnkvaW1nX2hvdmVyZWQucG5n
OgotICAgICAgICAqIERlZmF1bHRUaGVtZS93aWRnZXQvZW50cnkvaW1nX25vcm1hbC5wbmc6Ci0g
ICAgICAgICogRGVmYXVsdFRoZW1lL3dpZGdldC9maWxlL2ZpbGVfZm9jdXMucG5nOgotICAgICAg
ICAqIERlZmF1bHRUaGVtZS93aWRnZXQvZmlsZS9maWxlX2hvdmVyLnBuZzoKLSAgICAgICAgKiBE
ZWZhdWx0VGhlbWUvd2lkZ2V0L2ZpbGUvZmlsZV9ub3JtYWwucG5nOgotICAgICAgICAqIERlZmF1
bHRUaGVtZS93aWRnZXQvZmlsZS9maWxlX3ByZXNzLnBuZzoKLSAgICAgICAgKiBEZWZhdWx0VGhl
bWUvd2lkZ2V0L3JhZGlvL2ltZ19yYWRpb19vZmYucG5nOgotICAgICAgICAqIERlZmF1bHRUaGVt
ZS93aWRnZXQvcmFkaW8vaW1nX3JhZGlvX29mZl9mb2N1cy5wbmc6Ci0gICAgICAgICogRGVmYXVs
dFRoZW1lL3dpZGdldC9yYWRpby9pbWdfcmFkaW9fb2ZmX2hvdmVyLnBuZzoKLSAgICAgICAgKiBE
ZWZhdWx0VGhlbWUvd2lkZ2V0L3JhZGlvL2ltZ19yYWRpb19vbi5wbmc6Ci0gICAgICAgICogRGVm
YXVsdFRoZW1lL3dpZGdldC9yYWRpby9pbWdfcmFkaW9fb25fZm9jdXMucG5nOgotICAgICAgICAq
IERlZmF1bHRUaGVtZS93aWRnZXQvcmFkaW8vaW1nX3JhZGlvX29uX2hvdmVyLnBuZzoKLSAgICAg
ICAgKiBEZWZhdWx0VGhlbWUvd2lkZ2V0L3JhZGlvL3JhZGlvLmVkYzoKLSAgICAgICAgKiBEZWZh
dWx0VGhlbWUvd2lkZ2V0L3Njcm9sbGJhci9zY3JvbGxiYXIuZWRjOgotICAgICAgICAqIERlZmF1
bHRUaGVtZS93aWRnZXQvc2Nyb2xsYmFyL3Njcm9sbGJhcl9oLnBuZzoKLSAgICAgICAgKiBEZWZh
dWx0VGhlbWUvd2lkZ2V0L3Njcm9sbGJhci9zY3JvbGxiYXJfaGlsaWdodC5wbmc6IFJlbW92ZWQu
Ci0gICAgICAgICogRGVmYXVsdFRoZW1lL3dpZGdldC9zY3JvbGxiYXIvc2Nyb2xsYmFyX2tub2Jf
aC5wbmc6Ci0gICAgICAgICogRGVmYXVsdFRoZW1lL3dpZGdldC9zY3JvbGxiYXIvc2Nyb2xsYmFy
X2tub2Jfdi5wbmc6Ci0gICAgICAgICogRGVmYXVsdFRoZW1lL3dpZGdldC9zY3JvbGxiYXIvc2Ny
b2xsYmFyX3YucG5nOgotICAgICAgICAqIERlZmF1bHRUaGVtZS93aWRnZXQvc2VhcmNoL2NhbmNl
bC9jYW5jZWxfbm9ybWFsX2J1dHRvbjIucG5nOgotICAgICAgICAqIERlZmF1bHRUaGVtZS93aWRn
ZXQvc2VhcmNoL2RlY29yYXRpb24vZGVjb3JhdGlvbl9ub3JtYWxfYnV0dG9uLnBuZzoKLSAgICAg
ICAgKiBEZWZhdWx0VGhlbWUvd2lkZ2V0L3NlYXJjaC9maWVsZC9maWVsZF9mb2N1c2VkLnBuZzoK
LSAgICAgICAgKiBEZWZhdWx0VGhlbWUvd2lkZ2V0L3NlYXJjaC9maWVsZC9maWVsZF9ob3ZlcmVk
LnBuZzoKLSAgICAgICAgKiBEZWZhdWx0VGhlbWUvd2lkZ2V0L3NlYXJjaC9maWVsZC9maWVsZF9u
b3JtYWwucG5nOgotICAgICAgICAqIERlZmF1bHRUaGVtZS93aWRnZXQvc2xpZGVyL3NsaWRlci5l
ZGM6Ci0gICAgICAgICogRGVmYXVsdFRoZW1lL3dpZGdldC9zbGlkZXIvc2xpZGVyX2ZpbGxfaC5w
bmc6IEFkZGVkLgotICAgICAgICAqIERlZmF1bHRUaGVtZS93aWRnZXQvc2xpZGVyL3NsaWRlcl9m
aWxsX3YucG5nOiBBZGRlZC4KLSAgICAgICAgKiBEZWZhdWx0VGhlbWUvd2lkZ2V0L3NsaWRlci9z
bGlkZXJfaC5wbmc6Ci0gICAgICAgICogRGVmYXVsdFRoZW1lL3dpZGdldC9zbGlkZXIvc2xpZGVy
X2hpbGlnaHQucG5nOiBSZW1vdmVkLgotICAgICAgICAqIERlZmF1bHRUaGVtZS93aWRnZXQvc2xp
ZGVyL3NsaWRlcl9rbm9iX2gucG5nOgotICAgICAgICAqIERlZmF1bHRUaGVtZS93aWRnZXQvc2xp
ZGVyL3NsaWRlcl9rbm9iX3ByZXNzX2gucG5nOiBBZGRlZC4KLSAgICAgICAgKiBEZWZhdWx0VGhl
bWUvd2lkZ2V0L3NsaWRlci9zbGlkZXJfa25vYl9wcmVzc192LnBuZzogQWRkZWQuCi0gICAgICAg
ICogRGVmYXVsdFRoZW1lL3dpZGdldC9zbGlkZXIvc2xpZGVyX2tub2Jfdi5wbmc6Ci0gICAgICAg
ICogRGVmYXVsdFRoZW1lL3dpZGdldC9zbGlkZXIvc2xpZGVyX3YucG5nOgotCi0yMDEwLTA4LTEy
ICBSYWZhZWwgQW50b2dub2xsaSAgPGFudG9nbm9sbGlAcHJvZnVzaW9uLm1vYmk+Ci0KLSAgICAg
ICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCi0KLSAgICAgICAgW0VG
TF0gTWFraW5nIENNYWtlIGtlZXAgdHJhY2sgb2YgdGhlbWUgZGVwZW5kZW5jaWVzLgotICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDM4NjIKLQotICAgICAg
ICBBZGRpbmcgdGhlbWUgc291cmNlIGZpbGVzIGFuZCBpbWFnZXMgYXMgZGVwZW5kZW5jaWVzIG9m
IHRoZSB0aGVtZS4KLQotICAgICAgICAqIENNYWtlTGlzdHNFZmwudHh0OgotCi0yMDEwLTA4LTEx
ICBSYWZhZWwgQW50b2dub2xsaSAgPGFudG9nbm9sbGlAcHJvZnVzaW9uLm1vYmk+Ci0KLSAgICAg
ICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCi0KLSAgICAgICAgW0VG
TF0gQWRkIHNldHRpbmcgZm9yIGVuYWJsaW5nIHNwYXRpYWwgbmF2aWdhdGlvbi4KLSAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQzNTY5Ci0KLSAgICAgICAg
QWRkaW5nIGFwaSBmb3IgZW5hYmxpbmcvZGlzYWJsaW5nIHNwYXRpYWwgbmF2aWdhdGlvbi4KLQot
ICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6IEJvdGggZnVuY3Rpb25zIGJlbG93IGFkZGVkLgot
ICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19zcGF0aWFsX25hdmlnYXRpb25fZ2V0KToKLSAgICAg
ICAgKGV3a192aWV3X3NldHRpbmdfc3BhdGlhbF9uYXZpZ2F0aW9uX3NldCk6Ci0gICAgICAgICog
ZXdrL2V3a192aWV3Lmg6IHNhbWUgYXMgZXdrX3ZpZXcuY3BwLgotCi0yMDEwLTA4LTExICBSeXVh
biBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBB
bnRvbmlvIEdvbWVzLgotCi0gICAgICAgIEltcGxlbWVudGF0aW9uIGRpc3BhdGNoRGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvbgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NDM1NDQKLQotICAgICAgICBBZGQgZXdrX3ZpZXdfbmF2aWdhdGlvbl9w
b2xpY3lfZGVjaXNpb24gdG8gZGVjaWRlIHdoZXRoZXIgdXJsIHdoaWNoCi0gICAgICAgIHVzZXIg
Y2xpY2tlZCB3aWxsIGJlIGxvYWRlZCBvciBub3QuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
ckNsaWVudEVmbDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToKLSAg
ICAgICAgKiBld2svZXdrX3ByaXZhdGUuaDoKLSAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgot
ICAgICAgICAoZXdrX3ZpZXdfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24pOgotICAgICAgICAq
IGV3ay9ld2tfdmlldy5oOgotCi0yMDEwLTA4LTEwICBSeXVhbiBDaG9pICA8cnl1YW4uY2hvaUBz
YW1zdW5nLmNvbT4KLQotICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeC4KLQotICAgICAgICBb
RUZMXVJFR1JFU1NJT04oNjUwMjEpIG5lZWQgdG8gZml4IGJ1aWxkIGJyZWFrCi0gICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00Mzc2NwotCi0gICAgICAgIFJl
bW92ZSBBdG9taWNTdHJpbmdXVEYgYW5kIGNoYW5nZSBuYW1lc3BhY2UgVGV4dENhc2VJbnNlbnNp
dGl2ZS4KLQotICAgICAgICAqIGV3ay9ld2tfZnJhbWUuY3BwOgotICAgICAgICAoZXdrX2ZyYW1l
X3BsdWdpbl9jcmVhdGUpOgotICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Ci0gICAgICAgIChl
d2tfdmlld190ZXh0X3NlYXJjaCk6Ci0gICAgICAgIChld2tfdmlld190ZXh0X21hdGNoZXNfbWFy
ayk6Ci0gICAgICAgIChld2tfdmlld19zZXR0aW5nX2ZvbnRfY3Vyc2l2ZV9zZXQpOgotCi0yMDEw
LTA4LTA2ICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KLQotICAg
ICAgICBSdWJiZXIgc3RhbXBlZCBieSBTYW0gV2VpbmlnCi0KLSAgICAgICAgQnVnIDQzNTk0IC0g
QWRkIHN0cmluZyBmb3J3YXJkcyB0byBGb3J3YXJkLmgKLSAgICAgICAgVGhpcyBhbGxvd3MgdXMg
dG8gcmVtb3ZlIGZvcndhcmQgZGVjbGFyYXRpb25zIGZvciB0aGVzZSBjbGFzc2VzIGZyb20KLSAg
ICAgICAgV2ViQ29yZS9XZWJLaXQgKGEgc3RlcCBpbiBtb3ZpbmcgdGhlc2UgY2xhc3MgZnJvbSBX
ZWJDb3JlOjogdG8gV1RGOjopLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9y
Q2xpZW50RWZsLmg6Ci0KLTIwMTAtMDgtMDYgIEplc3NpZSBCZXJsaW4gIDxqYmVybGluQGFwcGxl
LmNvbT4KLQotICAgICAgICBSb2xsIG91dCBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNl
dC82NDgwMSwgd2hpY2ggYnJva2UgdGhlIFNhZmFyaSBXaW5kb3dzIEJ1aWxkLgotICAgICAgICBV
bnJldmlld2VkLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50RWZs
Lmg6Ci0KLTIwMTAtMDgtMDMgIExlYW5kcm8gUGVyZWlyYSAgPGxlYW5kcm9AcHJvZnVzaW9uLm1v
Ymk+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCi0K
LSAgICAgICAgSW1wbGVtZW50IEhUTUw1IHNsaWRlciB0aGVtZSAodXNpbmcgdGhlIHNjcm9sbGJh
ciB0aGVtZSBhcyBiYXNlKS4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQzNDMwCi0KLSAgICAgICAgKiBEZWZhdWx0VGhlbWUvZGVmYXVsdC5lZGM6IElu
Y2x1ZGUgc2xpZGVyLmVkYy4KLSAgICAgICAgKiBEZWZhdWx0VGhlbWUvd2lkZ2V0L3NsaWRlci9z
bGlkZXIuZWRjOiBBZGRlZC4KLSAgICAgICAgKiBEZWZhdWx0VGhlbWUvd2lkZ2V0L3NsaWRlci9z
bGlkZXJfaC5wbmc6IENvcGllZCBmcm9tIFdlYktpdC9lZmwvRGVmYXVsdFRoZW1lL3dpZGdldC9z
Y3JvbGxiYXIvc2Nyb2xsYmFyX2gucG5nLgotICAgICAgICAqIERlZmF1bHRUaGVtZS93aWRnZXQv
c2xpZGVyL3NsaWRlcl9oaWxpZ2h0LnBuZzogQ29waWVkIGZyb20gV2ViS2l0L2VmbC9EZWZhdWx0
VGhlbWUvd2lkZ2V0L3Njcm9sbGJhci9zY3JvbGxiYXJfaGlsaWdodC5wbmcuCi0gICAgICAgICog
RGVmYXVsdFRoZW1lL3dpZGdldC9zbGlkZXIvc2xpZGVyX2tub2JfaC5wbmc6IENvcGllZCBmcm9t
IFdlYktpdC9lZmwvRGVmYXVsdFRoZW1lL3dpZGdldC9zY3JvbGxiYXIvc2Nyb2xsYmFyX2tub2Jf
aC5wbmcuCi0gICAgICAgICogRGVmYXVsdFRoZW1lL3dpZGdldC9zbGlkZXIvc2xpZGVyX2tub2Jf
di5wbmc6IENvcGllZCBmcm9tIFdlYktpdC9lZmwvRGVmYXVsdFRoZW1lL3dpZGdldC9zY3JvbGxi
YXIvc2Nyb2xsYmFyX2tub2Jfdi5wbmcuCi0gICAgICAgICogRGVmYXVsdFRoZW1lL3dpZGdldC9z
bGlkZXIvc2xpZGVyX3YucG5nOiBDb3BpZWQgZnJvbSBXZWJLaXQvZWZsL0RlZmF1bHRUaGVtZS93
aWRnZXQvc2Nyb2xsYmFyL3Njcm9sbGJhcl92LnBuZy4KLQotMjAxMC0wOC0wMyAgcnl1YW4gY2hv
aSAgPHJ5dWFuLmNob2lAc2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4g
QWRsZXIuCi0KLSAgICAgICAgW0VGTF0gUkVHUkVTU0lPTig2NDQyNSkgbmVlZCB0byBmaXggYnVp
bGQgYnJlYWsKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTQzMzIyCi0KLSAgICAgICAganVzdCBhZGQgaW5jbHVkZSBwYXRoIG1pc3NlZCBhZnRlciByNjQ0
MjUKLQotICAgICAgICAqIENNYWtlTGlzdHNFZmwudHh0OgotCi0yMDEwLTA3LTI3ICBMdWl6IEFn
b3N0aW5pICA8bHVpei5hZ29zdGluaUBvcGVuYm9zc2Eub3JnPgotCi0gICAgICAgIFJldmlld2Vk
IGJ5IERhcmluIEZpc2hlci4KLQotICAgICAgICBQb3B1cE1lbnUgcmVmYWN0b3JpbmcgaW4gcHJl
cGFyYXRpb24gdG8gV2ViS2l0MgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDI1OTIKLQotICAgICAgICBBcyBDaHJvbWVDbGllbnQgd2FzIG1hZGUgcmVz
cG9uc2libGUgZm9yIHByb3ZpZGluZyBQb3B1cE1lbnUgYW5kIFNlYXJjaFBvcHVwTWVudQotICAg
ICAgICBpbnN0YW5jZXMsIGNvbmNyZXRlIGNsYXNzZXMgdGhhdCBpbmhlcml0IGZyb20gQ2hyb21l
Q2xpZW50IG5lZWRlZCB0byBiZSBjaGFuZ2VkIHRvCi0gICAgICAgIGltcGxlbWVudCB0aGUgbmV3
IG1ldGhvZHMuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3Bw
OgotICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZsOjpzZWxlY3RJdGVtV3JpdGluZ0Rp
cmVjdGlvbklzTmF0dXJhbCk6Ci0gICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRFZmw6OmNy
ZWF0ZVBvcHVwTWVudSk6Ci0gICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRFZmw6OmNyZWF0
ZVNlYXJjaFBvcHVwTWVudSk6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50
RWZsLmg6Ci0KLTIwMTAtMDgtMDIgIEplcmVteSBPcmxvdyAgPGpvcmxvd0BjaHJvbWl1bS5vcmc+
Ci0KLSAgICAgICAgU3BlY3VsYXRpdmUgcmV2ZXJ0IG9mIDY0NDI1IGR1ZSB0byBDaHJvbWl1bSBp
bnN0YWJpbGl0eQotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NDMzNDcKLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHA6
Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmg6Ci0KLTIwMTAtMDct
MjcgIEx1aXogQWdvc3RpbmkgIDxsdWl6LmFnb3N0aW5pQG9wZW5ib3NzYS5vcmc+Ci0KLSAgICAg
ICAgUmV2aWV3ZWQgYnkgRGFyaW4gRmlzaGVyLgotCi0gICAgICAgIFBvcHVwTWVudSByZWZhY3Rv
cmluZyBpbiBwcmVwYXJhdGlvbiB0byBXZWJLaXQyCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MjU5MgotCi0gICAgICAgIEFzIENocm9tZUNsaWVudCB3
YXMgbWFkZSByZXNwb25zaWJsZSBmb3IgcHJvdmlkaW5nIFBvcHVwTWVudSBhbmQgU2VhcmNoUG9w
dXBNZW51Ci0gICAgICAgIGluc3RhbmNlcywgY29uY3JldGUgY2xhc3NlcyB0aGF0IGluaGVyaXQg
ZnJvbSBDaHJvbWVDbGllbnQgbmVlZGVkIHRvIGJlIGNoYW5nZWQgdG8KLSAgICAgICAgaW1wbGVt
ZW50IHRoZSBuZXcgbWV0aG9kcy4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNs
aWVudEVmbC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRFZmw6OnNlbGVjdEl0
ZW1Xcml0aW5nRGlyZWN0aW9uSXNOYXR1cmFsKToKLSAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNs
aWVudEVmbDo6Y3JlYXRlUG9wdXBNZW51KToKLSAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVu
dEVmbDo6Y3JlYXRlU2VhcmNoUG9wdXBNZW51KToKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9D
aHJvbWVDbGllbnRFZmwuaDoKLQotMjAxMC0wNy0zMSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2
aWV3LmJvdEBnbWFpbC5jb20+Ci0KLSAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjY0
NDIyLgotICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC82NDQyMgotICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDMzMDQKLQotICAg
ICAgICBCdWlsZCBmaXhlcyBhcmUgbmVlZGVkIGZvciBTbm93IExlb3BhcmQgYW5kIFdpbmRvd3Mu
Ci0gICAgICAgIChSZXF1ZXN0ZWQgYnkgbGNhIG9uICN3ZWJraXQpLgotCi0gICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9DaHJvbWVDbGllbnRFZmwuaDoKLQotMjAxMC0wNy0yNyAgTHVpeiBBZ29zdGluaSAgPGx1aXou
YWdvc3RpbmlAb3BlbmJvc3NhLm9yZz4KLQotICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBGaXNo
ZXIuCi0KLSAgICAgICAgUG9wdXBNZW51IHJlZmFjdG9yaW5nIGluIHByZXBhcmF0aW9uIHRvIFdl
YktpdDIKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQy
NTkyCi0KLSAgICAgICAgQXMgQ2hyb21lQ2xpZW50IHdhcyBtYWRlIHJlc3BvbnNpYmxlIGZvciBw
cm92aWRpbmcgUG9wdXBNZW51IGFuZCBTZWFyY2hQb3B1cE1lbnUKLSAgICAgICAgaW5zdGFuY2Vz
LCBjb25jcmV0ZSBjbGFzc2VzIHRoYXQgaW5oZXJpdCBmcm9tIENocm9tZUNsaWVudCBuZWVkZWQg
dG8gYmUgY2hhbmdlZCB0bwotICAgICAgICBpbXBsZW1lbnQgdGhlIG5ldyBtZXRob2RzLgotCi0g
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcDoKLSAgICAgICAgKFdl
YkNvcmU6OkNocm9tZUNsaWVudEVmbDo6c2VsZWN0SXRlbVdyaXRpbmdEaXJlY3Rpb25Jc05hdHVy
YWwpOgotICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZsOjpjcmVhdGVQb3B1cE1lbnUp
OgotICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZsOjpjcmVhdGVTZWFyY2hQb3B1cE1l
bnUpOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oOgotCi0yMDEw
LTA3LTI2ICBTdGV2ZSBCbG9jayAgPHN0ZXZlYmxvY2tAZ29vZ2xlLmNvbT4KLQotICAgICAgICBS
ZXZpZXdlZCBieSBKZXJlbXkgT3Jsb3cuCi0KLSAgICAgICAgUGFnZSBjbGllbnRzIHNob3VsZCBi
ZSBwYXNzZWQgdG8gUGFnZSBjb25zdHJ1Y3RvciB2aWEgc3RydWN0dXJlIG9mIHBvaW50ZXJzCi0g
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MjgzNAotCi0g
ICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAgICAgKF9ld2tfdmlld19wcml2X25ldyk6
Ci0KLTIwMTAtMDctMjYgIFJhZmFlbCBBbnRvZ25vbGxpICA8YW50b2dub2xsaUBwcm9mdXNpb24u
bW9iaT4KLQotICAgICAgICBSZXZpZXdlZCBieSBBbnRvbmlvIEdvbWVzLgotCi0gICAgICAgIFtF
RkxdIE1vdmUgQ01ha2VMaXN0c0VmbC50eHQgdG8gV2ViS2l0L2VmbC8KLSAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQzMDAyCi0KLSAgICAgICAgVGhpcyBz
aG91bGQgcmVkdWNlIHRoZSBub2lzZSBpbiBXZWJLaXQvQ2hhbmdlTG9nIHRoYXQgY29tZXMgZnJv
bSBFRkwKLSAgICAgICAgcG9ydC4gTW9zdCBvZiB0aGUgY2hhbmdlcyBvbiBFRkwgcG9ydCBzaG91
bGQgYmUgbG9nZ2VkIGluCi0gICAgICAgIFdlYktpdC9lZmwvQ2hhbmdlTG9nLgotCi0gICAgICAg
ICogQ01ha2VMaXN0c0VmbC50eHQ6IFJlbmFtZWQgZnJvbSBXZWJLaXQvQ01ha2VMaXN0c0VmbC50
eHQuCi0KLTIwMTAtMDctMjMgIFJhZmFlbCBBbnRvZ25vbGxpICA8YW50b2dub2xsaUBwcm9mdXNp
b24ubW9iaT4KLQotICAgICAgICBSZXZpZXdlZCBieSBBbnRvbmlvIEdvbWVzLgotCi0gICAgICAg
IFtFRkxdIENsZWFudXAgZ2xpYiBzdXBwb3J0IChtYWtlIGl0IG9wdGlvbmFsKQotICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDI0ODAKLQotICAgICAgICBQ
dXQgc29tZSBpZmRlZnMgb24gZ2xpYiBjYWxscy4KLQotICAgICAgICAqIGV3ay9ld2tfbWFpbi5j
cHA6Ci0gICAgICAgIChld2tfaW5pdCk6Ci0KLTIwMTAtMDctMjMgIFJhZmFlbCBBbnRvZ25vbGxp
ICA8YW50b2dub2xsaUBwcm9mdXNpb24ubW9iaT4KLQotICAgICAgICBSZXZpZXdlZCBieSBBbnRv
bmlvIEdvbWVzLgotCi0gICAgICAgIFtFRkxdIEFkZCBzdXBwb3J0IGZvciB1c2luZyBsaWJjdXJs
IG5ldHdvcmsgYmFja2VuZC4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQyMjg2Ci0KLSAgICAgICAgUHV0IHNvbWUgaWZkZWZzIGFyb3VuZCBzb3VwIGNh
bGxzLgotCi0gICAgICAgICogZXdrL2V3a19jb29raWVzLmNwcDoKLSAgICAgICAgKGV3a19jb29r
aWVzX2ZpbGVfc2V0KToKLSAgICAgICAgKGV3a19jb29raWVzX2NsZWFyKToKLSAgICAgICAgKGV3
a19jb29raWVzX2dldF9hbGwpOgotICAgICAgICAoZXdrX2Nvb2tpZXNfY29va2llX2RlbCk6Ci0g
ICAgICAgIChld2tfY29va2llc19jb29raWVfZnJlZSk6Ci0gICAgICAgIChld2tfY29va2llc19w
b2xpY3lfc2V0KToKLSAgICAgICAgKGV3a19jb29raWVzX3BvbGljeV9nZXQpOgotICAgICAgICAq
IGV3ay9ld2tfbWFpbi5jcHA6Ci0gICAgICAgIChld2tfaW5pdCk6Ci0KLTIwMTAtMDctMjMgIEx1
Y2FzIERlIE1hcmNoaSAgPGx1Y2FzLmRlbWFyY2hpQHByb2Z1c2lvbi5tb2JpPgotCi0gICAgICAg
IFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgotCi0gICAgICAgIE5vdGlm
eSBicm93c2VyIHdoZW4gd2luZG93IHNoYWxsIGJlIGNsb3NlZC4KLQotICAgICAgICBUaGlzIGlz
IHVzZWQgZm9yIHdpbmRvdy5jbG9zZSgpIGV2ZW50cyBKYXZhc2NyaXB0LCB0aG91Z2ggaXQgd291
bGQgYmUKLSAgICAgICAgdHJpZ2dlcmVkIGZvciBhbnkgZXZlbnQgb24gV2ViQ29yZSB0aGF0IG1p
Z2h0IGFzayBmb3IgdGhlIHdpbmRvdyB0byBiZQotICAgICAgICBjbG9zZWQuCi0KLSAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQyODkwCi0KLSAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwOgotICAgICAgICAoV2ViQ29yZTo6
Q2hyb21lQ2xpZW50RWZsOjpjbG9zZVdpbmRvd1Nvb24pOiBjYWxsIG5ldyBmdW5jdGlvbiBhbmQg
bW92ZXMgaXRzCi0gICAgICAgIHByZXZpb3VzIGZ1bmN0aW9uYWxpdHkgdGhlcmUuCi0gICAgICAg
ICogZXdrL2V3a19wcml2YXRlLmg6Ci0gICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKLSAgICAg
ICAgKGV3a192aWV3X3dpbmRvd19jbG9zZSk6IHN0b3AgYWxsIGxvYWRlcnMgYXMgd2FzIGJlaW5n
IGRvbmUgcHJldmlvdXNseSBhbmQKLSAgICAgICAgbm90aWZ5IGJyb3dzZXIgYWZ0ZXJ3YXJkcy4K
LSAgICAgICAgKiBld2svZXdrX3ZpZXcuaDogZGVjbGFyZSBuZXcgdmlydHVhbCBtZXRob2QuCi0K
LTIwMTAtMDctMjMgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KLQot
ICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KLQotICAgICAg
ICBbRUZMXSBTZXQgcHJveHkgYWRkcmVzcyBmb3IgU291cAotICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDI3MjEKLQotICAgICAgICBTZXRzIHRoZSBnaXZl
biBwcm94eSBVUkkgZm9yIGxpYnNvdXAgbmV0d29yayBiYWNrZW5kLiBUaGlzIG1ldGhvZCB3aWxs
Ci0gICAgICAgIHN1cHBvcnQgbGliY3VybCBuZXR3b3JrIGJhY2tlbmQgbGF0ZXIuCi0KLSAgICAg
ICAgKiBFV2ViTGF1bmNoZXIvbWFpbi5jOgotICAgICAgICAobWFpbik6IEludm9rZSBwcm94eSBz
ZXQgbWV0aG9kCi0gICAgICAgICogZXdrL2V3a19zZXR0aW5ncy5jcHA6Ci0gICAgICAgIChld2tf
c2V0dGluZ3NfcHJveHlfdXJpX3NldCk6IFNldHMgcHJveHkgVVJJLgotICAgICAgICAqIGV3ay9l
d2tfc2V0dGluZ3MuaDoKLQotMjAxMC0wNy0xNiAgTGVhbmRybyBQZXJlaXJhICA8bGVhbmRyb0Bw
cm9mdXNpb24ubW9iaT4KLQotICAgICAgICBSZXZpZXdlZCBieSBHdXN0YXZvIE5vcm9uaGEgU2ls
dmEuCi0gICAgICAgIAotICAgICAgICBDcmVhdGluZyBDaGFuZ2VMb2cgZm9yIHRoZSBFRkwgcG9y
dC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0VXZWJLaXRDb25maWcuY21ha2UuaW4g
Yi9Tb3VyY2UvV2ViS2l0L2VmbC9FV2ViS2l0Q29uZmlnLmNtYWtlLmluCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBjNTY1ODgyLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvZWZs
L0VXZWJLaXRDb25maWcuY21ha2UuaW4KKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1z
ZXQoRVdFQktJVF9GT1VORCBUUlVFKQotCi1zZXQoRVdFQktJVF9WRVJTSU9OX01BSk9SIEBQUk9K
RUNUX1ZFUlNJT05fTUFKT1JAKQotc2V0KEVXRUJLSVRfVkVSU0lPTl9NSU5PUiBAUFJPSkVDVF9W
RVJTSU9OX01JTk9SQCkKLXNldChFV0VCS0lUX1ZFUlNJT04gQFBST0pFQ1RfVkVSU0lPTkApCi0K
LXNldChfU0hBUkVEX0NPUkUgQFNIQVJFRF9DT1JFQCkKLXNldChfbGliZGlyICJATElCX0lOU1RB
TExfRElSQCIpCi0KLWZpbmRfcGF0aChFV0VCS0lUX0lOQ0xVREVfRElSIEVXZWJLaXQuaCBISU5U
UyAiQENNQUtFX0lOU1RBTExfUFJFRklYQC9pbmNsdWRlL0BXZWJLaXRfT1VUUFVUX05BTUVALUBQ
Uk9KRUNUX1ZFUlNJT05fTUFKT1JAIikKLWZpbmRfbGlicmFyeShFV0VCS0lUX0xJQlJBUlkgTkFN
RVMgZXdlYmtpdCBISU5UUyAke19saWJkaXJ9KQotCi1pZiAoX1NIQVJFRF9DT1JFKQotICAgIGZp
bmRfbGlicmFyeShfd2ViY29yZV9saWJyYXJ5IE5BTUVTIHdlYmNvcmVfZWZsIEhJTlRTICR7X2xp
YmRpcn0pCi0gICAgZmluZF9saWJyYXJ5KF9qYXZhc2NyaXB0X2xpYnJhcnkgTkFNRVMgamF2YXNj
cmlwdGNvcmVfZWZsIEhJTlRTICR7X2xpYmRpcn0pCi0KLSAgICBsaXN0KEFQUEVORCBFV0VCS0lU
X0xJQlJBUlkgJHtfd2ViY29yZV9saWJyYXJ5fSAke19qYXZhc2NyaXB0X2xpYnJhcnl9KQotZW5k
aWYgKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0VXZWJLaXRDb25maWdWZXJzaW9u
LmNtYWtlLmluIGIvU291cmNlL1dlYktpdC9lZmwvRVdlYktpdENvbmZpZ1ZlcnNpb24uY21ha2Uu
aW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY0NzMzODguLjAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYktpdC9lZmwvRVdlYktpdENvbmZpZ1ZlcnNpb24uY21ha2UuaW4KKysrIC9kZXYv
bnVsbApAQCAtMSwxMSArMCwwIEBACi1zZXQoUEFDS0FHRV9WRVJTSU9OICJAUFJPSkVDVF9WRVJT
SU9OQCIpCi0KLSMgQ2hlY2sgd2hldGhlciB0aGUgcmVxdWVzdGVkIFBBQ0tBR0VfRklORF9WRVJT
SU9OIGlzIGNvbXBhdGlibGUKLWlmICgiJHtQQUNLQUdFX1ZFUlNJT059IiBWRVJTSU9OX0xFU1Mg
IiR7UEFDS0FHRV9GSU5EX1ZFUlNJT059IikKLSAgIHNldChQQUNLQUdFX1ZFUlNJT05fQ09NUEFU
SUJMRSBGQUxTRSkKLWVsc2UgKCkKLSAgIHNldChQQUNLQUdFX1ZFUlNJT05fQ09NUEFUSUJMRSBU
UlVFKQotICAgaWYgKCIke1BBQ0tBR0VfVkVSU0lPTn0iIFZFUlNJT05fRVFVQUwgIiR7UEFDS0FH
RV9GSU5EX1ZFUlNJT059IikKLSAgICAgIHNldChQQUNLQUdFX1ZFUlNJT05fRVhBQ1QgVFJVRSkK
LSAgIGVuZGlmICgpCi1lbmRpZiAoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2Vi
Q29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHRFZmwuY3BwIGIvU291cmNl
L1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHRF
ZmwuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMWQyZDU1Li4wMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRp
bmdDb250ZXh0RWZsLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDIzNyArMCwwIEBACi0vKgotICAg
IENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCi0KLSAgICBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICAg
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAgICB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAotICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotCi0jaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQotCi0jaW5jbHVkZSAiQWNjZWxl
cmF0ZWRDb21wb3NpdGluZ0NvbnRleHRFZmwuaCIKLSNpbmNsdWRlICJDYWlyb1V0aWxpdGllcy5o
IgotI2luY2x1ZGUgIkNhaXJvVXRpbGl0aWVzRWZsLmgiCi0jaW5jbHVkZSAiRnJhbWVWaWV3Lmgi
Ci0jaW5jbHVkZSAiR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaCIKLSNpbmNsdWRlICJNYWlu
RnJhbWUuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybUNvbnRleHRDYWlyby5oIgotI2luY2x1ZGUgIlRl
eHR1cmVNYXBwZXJHTC5oIgotI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJMYXllci5oIgotI2luY2x1
ZGUgImV3a19wcml2YXRlLmgiCi0jaW5jbHVkZSAiZXdrX3ZpZXdfcHJpdmF0ZS5oIgotCi1jb25z
dCBkb3VibGUgY29tcG9zaXRpbmdGcmFtZVJhdGUgPSA2MDsKLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6QWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0NvbnRleHQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV2YXNfT2JqZWN0KiBjb21wb3NpdGluZ09i
amVjdCkKLSAgICA6IG1fdmlldyhld2tWaWV3KQotICAgICwgbV9jb21wb3NpdGluZ09iamVjdChj
b21wb3NpdGluZ09iamVjdCkKLSAgICAsIG1fcm9vdExheWVyKG51bGxwdHIpCi0gICAgLCBtX3N5
bmNUaW1lcih0aGlzLCAmQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OnN5bmNMYXllcnMp
Ci0gICAgLCBtX2lzQWNjZWxlcmF0ZWQodHJ1ZSkKLXsKLSAgICBBU1NFUlQobV92aWV3KTsKLSAg
ICBBU1NFUlQobV9jb21wb3NpdGluZ09iamVjdCk7Ci0KLSAgICBFdmFzKiBldmFzID0gZXZhc19v
YmplY3RfZXZhc19nZXQobV92aWV3KTsKLSAgICBjb25zdCBjaGFyKiBlbmdpbmUgPSBlY29yZV9l
dmFzX2VuZ2luZV9uYW1lX2dldChlY29yZV9ldmFzX2Vjb3JlX2V2YXNfZ2V0KGV2YXMpKTsKLSAg
ICBpZiAoIXN0cm5jbXAoZW5naW5lLCAib3BlbmdsX3gxMSIsIHN0cmxlbigib3BlbmdsX3gxMSIp
KSkgewotICAgICAgICBtX2V2YXNHTCA9IEVmbFVuaXF1ZVB0cjxFdmFzX0dMPihldmFzX2dsX25l
dyhldmFzX29iamVjdF9ldmFzX2dldChtX3ZpZXcpKSk7Ci0gICAgICAgIGlmIChtX2V2YXNHTCkK
LSAgICAgICAgICAgIG1fZXZhc0dMQ29udGV4dCA9IEV2YXNHTENvbnRleHQ6OmNyZWF0ZShtX2V2
YXNHTC5nZXQoKSk7Ci0gICAgfQotCi0gICAgaWYgKG1fZXZhc0dMQ29udGV4dCkgewotICAgICAg
ICBtX3RleHR1cmVNYXBwZXIgPSBUZXh0dXJlTWFwcGVyOjpjcmVhdGUoVGV4dHVyZU1hcHBlcjo6
T3BlbkdMTW9kZSk7Ci0gICAgICAgIHN0YXRpY19jYXN0PFRleHR1cmVNYXBwZXJHTCo+KG1fdGV4
dHVyZU1hcHBlci5nZXQoKSktPnNldEVuYWJsZUVkZ2VEaXN0YW5jZUFudGlhbGlhc2luZyh0cnVl
KTsKLSAgICB9IGVsc2UgewotICAgICAgICBtX3RleHR1cmVNYXBwZXIgPSBUZXh0dXJlTWFwcGVy
OjpjcmVhdGUoVGV4dHVyZU1hcHBlcjo6U29mdHdhcmVNb2RlKTsKLSAgICAgICAgbV9pc0FjY2Vs
ZXJhdGVkID0gZmFsc2U7Ci0gICAgfQotfQotCi1BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4
dDo6fkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0KCkKLXsKLX0KLQotdm9pZCBBY2NlbGVy
YXRlZENvbXBvc2l0aW5nQ29udGV4dDo6c3luY0xheWVycyhUaW1lcjxBY2NlbGVyYXRlZENvbXBv
c2l0aW5nQ29udGV4dD4qKQotewotICAgIGV3a192aWV3X21hcmtfZm9yX3N5bmMobV92aWV3KTsK
LX0KLQotdm9pZCBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6cmVzaXplKGNvbnN0IElu
dFNpemUmIHNpemUpCi17Ci0gICAgaWYgKG1fdmlld1NpemUgPT0gc2l6ZSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgbV92aWV3U2l6ZSA9IHNpemU7Ci0KLSAgICBpZiAoIW1faXNBY2NlbGVyYXRl
ZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgc3RhdGljIEV2YXNfR0xfQ29uZmlnIGV2YXNHTENv
bmZpZyA9IHsKLSAgICAgICAgRVZBU19HTF9SR0JBXzg4ODgsCi0gICAgICAgIEVWQVNfR0xfREVQ
VEhfQklUXzgsCi0gICAgICAgIEVWQVNfR0xfU1RFTkNJTF9OT05FLAotICAgICAgICBFVkFTX0dM
X09QVElPTlNfTk9ORSwKLSAgICAgICAgRVZBU19HTF9NVUxUSVNBTVBMRV9OT05FCi0gICAgfTsK
LQotICAgIG1fZXZhc0dMU3VyZmFjZSA9IEV2YXNHTFN1cmZhY2U6OmNyZWF0ZShtX2V2YXNHTC5n
ZXQoKSwgJmV2YXNHTENvbmZpZywgc2l6ZSk7Ci0gICAgaWYgKCFtX2V2YXNHTFN1cmZhY2UpIHsK
LSAgICAgICAgRVJSKCJGYWlsZWQgdG8gY3JlYXRlIGEgRXZhc0dMU3VyZmFjZS4iKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIEV2YXNfTmF0aXZlX1N1cmZhY2UgbmF0aXZlU3VyZmFj
ZTsKLSAgICBldmFzX2dsX25hdGl2ZV9zdXJmYWNlX2dldChtX2V2YXNHTC5nZXQoKSwgbV9ldmFz
R0xTdXJmYWNlLT5zdXJmYWNlKCksICZuYXRpdmVTdXJmYWNlKTsKLSAgICBldmFzX29iamVjdF9p
bWFnZV9uYXRpdmVfc3VyZmFjZV9zZXQobV9jb21wb3NpdGluZ09iamVjdCwgJm5hdGl2ZVN1cmZh
Y2UpOwotCi0gICAgaWYgKCFldmFzX2dsX21ha2VfY3VycmVudChtX2V2YXNHTC5nZXQoKSwgbV9l
dmFzR0xTdXJmYWNlLT5zdXJmYWNlKCksIG1fZXZhc0dMQ29udGV4dC0+Y29udGV4dCgpKSkgewot
ICAgICAgICBFUlIoIkZhaWxlZCB0byBldmFzX2dsX21ha2VfY3VycmVudC4iKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIGV2YXNfZ2xfYXBpX2dldChtX2V2YXNHTC5nZXQoKSktPmds
Vmlld3BvcnQoMCwgMCwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsKLSAgICBldmFzX2ds
X2FwaV9nZXQobV9ldmFzR0wuZ2V0KCkpLT5nbENsZWFyQ29sb3IoMSwgMSwgMSwgMSk7Ci0gICAg
ZXZhc19nbF9hcGlfZ2V0KG1fZXZhc0dMLmdldCgpKS0+Z2xDbGVhcihHTF9DT0xPUl9CVUZGRVJf
QklUKTsKLX0KLQotdm9pZCBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6Zmx1c2hBbmRS
ZW5kZXJMYXllcnMoKQotewotICAgIE1haW5GcmFtZSYgZnJhbWUgPSBFV0tQcml2YXRlOjpjb3Jl
UGFnZShtX3ZpZXcpLT5tYWluRnJhbWUoKTsKLSAgICBpZiAoIWZyYW1lLmNvbnRlbnRSZW5kZXJl
cigpIHx8ICFmcmFtZS52aWV3KCkpCi0gICAgICAgIHJldHVybjsKLSAgICBmcmFtZS52aWV3KCkt
PnVwZGF0ZUxheW91dEFuZFN0eWxlSWZOZWVkZWRSZWN1cnNpdmUoKTsKLQotICAgIGlmICghZmx1
c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChtX2lz
QWNjZWxlcmF0ZWQpCi0gICAgICAgIHBhaW50VG9DdXJyZW50R0xDb250ZXh0KCk7Ci0gICAgZWxz
ZQotICAgICAgICBwYWludFRvR3JhcGhpY3NDb250ZXh0KCk7Ci19Ci0KLWJvb2wgQWNjZWxlcmF0
ZWRDb21wb3NpdGluZ0NvbnRleHQ6OmZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlcygpCi17Ci0gICAg
aWYgKG1fcm9vdExheWVyKQotICAgICAgICBtX3Jvb3RMYXllci0+Zmx1c2hDb21wb3NpdGluZ1N0
YXRlRm9yVGhpc0xheWVyT25seSgpOwotICAgIHJldHVybiBFV0tQcml2YXRlOjpjb3JlUGFnZSht
X3ZpZXcpLT5tYWluRnJhbWUoKS52aWV3KCktPmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUluY2x1ZGlu
Z1N1YmZyYW1lcygpOwotfQotCi12b2lkIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0Ojpw
YWludFRvR3JhcGhpY3NDb250ZXh0KCkKLXsKLSAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBz
dXJmYWNlID0gY3JlYXRlU3VyZmFjZUZvckltYWdlKG1fY29tcG9zaXRpbmdPYmplY3QpOwotICAg
IGlmICghc3VyZmFjZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgUGxhdGZvcm1Db250ZXh0Q2Fp
cm8gcGxhdGZvcm1Db250ZXh0KGNhaXJvX2NyZWF0ZShzdXJmYWNlLmdldCgpKSk7Ci0gICAgR3Jh
cGhpY3NDb250ZXh0IGNvbnRleHQoJnBsYXRmb3JtQ29udGV4dCk7Ci0gICAgbV90ZXh0dXJlTWFw
cGVyLT5zZXRHcmFwaGljc0NvbnRleHQoJmNvbnRleHQpOwotCi0gICAgY29tcG9zaXRlTGF5ZXJz
KCk7Ci19Ci0KLXZvaWQgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OnBhaW50VG9DdXJy
ZW50R0xDb250ZXh0KCkKLXsKLSAgICBpZiAoIWV2YXNfZ2xfbWFrZV9jdXJyZW50KG1fZXZhc0dM
LmdldCgpLCBtX2V2YXNHTFN1cmZhY2UtPnN1cmZhY2UoKSwgbV9ldmFzR0xDb250ZXh0LT5jb250
ZXh0KCkpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBldmFzX2dsX2FwaV9nZXQobV9ldmFzR0wu
Z2V0KCkpLT5nbFZpZXdwb3J0KDAsIDAsIG1fdmlld1NpemUud2lkdGgoKSwgbV92aWV3U2l6ZS5o
ZWlnaHQoKSk7Ci0gICAgZXZhc19nbF9hcGlfZ2V0KG1fZXZhc0dMLmdldCgpKS0+Z2xDbGVhcihH
TF9DT0xPUl9CVUZGRVJfQklUKTsKLQotICAgIGNvbXBvc2l0ZUxheWVycygpOwotfQotCi12b2lk
IEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0Ojpjb21wb3NpdGVMYXllcnMoKQotewotICAg
IFRleHR1cmVNYXBwZXJMYXllciogY3VycmVudFJvb3RMYXllciA9IHRvVGV4dHVyZU1hcHBlckxh
eWVyKG1fcm9vdExheWVyKTsKLSAgICBpZiAoIWN1cnJlbnRSb290TGF5ZXIpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIGN1cnJlbnRSb290TGF5ZXItPnNldFRleHR1cmVNYXBwZXIobV90ZXh0dXJl
TWFwcGVyLmdldCgpKTsKLSAgICBjdXJyZW50Um9vdExheWVyLT5hcHBseUFuaW1hdGlvbnNSZWN1
cnNpdmVseSgpOwotCi0gICAgbV90ZXh0dXJlTWFwcGVyLT5iZWdpblBhaW50aW5nKCk7Ci0gICAg
bV90ZXh0dXJlTWFwcGVyLT5iZWdpbkNsaXAoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgRmxvYXRS
ZWN0KEZsb2F0UG9pbnQoKSwgbV92aWV3U2l6ZSkpOwotICAgIGN1cnJlbnRSb290TGF5ZXItPnBh
aW50KCk7Ci0gICAgbV9mcHNDb3VudGVyLnVwZGF0ZUZQU0FuZERpc3BsYXkobV90ZXh0dXJlTWFw
cGVyLmdldCgpKTsKLSAgICBtX3RleHR1cmVNYXBwZXItPmVuZENsaXAoKTsKLSAgICBtX3RleHR1
cmVNYXBwZXItPmVuZFBhaW50aW5nKCk7Ci0KLSAgICBpZiAoY3VycmVudFJvb3RMYXllci0+ZGVz
Y2VuZGFudHNPclNlbGZIYXZlUnVubmluZ0FuaW1hdGlvbnMoKSAmJiAhbV9zeW5jVGltZXIuaXNB
Y3RpdmUoKSkKLSAgICAgICAgbV9zeW5jVGltZXIuc3RhcnRPbmVTaG90KDEgLyBjb21wb3NpdGlu
Z0ZyYW1lUmF0ZSk7Ci19Ci0KLXZvaWQgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OnNl
dFJvb3RHcmFwaGljc0xheWVyKEdyYXBoaWNzTGF5ZXIqIHJvb3RMYXllcikKLXsKLSAgICBtX3Jv
b3RMYXllciA9IHJvb3RMYXllcjsKLQotICAgIGlmICghbV9zeW5jVGltZXIuaXNBY3RpdmUoKSkK
LSAgICAgICAgbV9zeW5jVGltZXIuc3RhcnRPbmVTaG90KDApOwotfQotCi12b2lkIEFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdDb250ZXh0OjpleHRyYWN0SW1hZ2VEYXRhKEV2YXNfT2JqZWN0KiBidWZm
ZXIsIGNvbnN0IEludFJlY3QmIHJlY3QpCi17Ci0gICAgQVNTRVJUKGJ1ZmZlcik7Ci0KLSAgICBF
dmFzX0Nvb3JkIHdpZHRoLCBoZWlnaHQ7Ci0gICAgZXZhc19vYmplY3RfaW1hZ2Vfc2l6ZV9nZXQo
YnVmZmVyLCAmd2lkdGgsICZoZWlnaHQpOwotCi0gICAgQVNTRVJUKHJlY3Qud2lkdGgoKSA9PSB3
aWR0aCk7Ci0gICAgQVNTRVJUKHJlY3QuaGVpZ2h0KCkgPT0gaGVpZ2h0KTsKLQotICAgIFJlZlB0
cjxjYWlyb19zdXJmYWNlX3Q+IGltYWdlRGF0YTsKLSAgICBpZiAobV9pc0FjY2VsZXJhdGVkKSB7
Ci0gICAgICAgIGltYWdlRGF0YSA9IGdldEltYWdlRGF0YUdMKHJlY3QpOwotICAgICAgICBmbGlw
SW1hZ2VTdXJmYWNlVmVydGljYWxseShpbWFnZURhdGEuZ2V0KCkpOwotICAgIH0gZWxzZQotICAg
ICAgICBpbWFnZURhdGEgPSBnZXRJbWFnZURhdGEocmVjdCk7Ci0KLSAgICBldmFzX29iamVjdF9p
bWFnZV9kYXRhX2NvcHlfc2V0KGJ1ZmZlciwgc3RhdGljX2Nhc3Q8dm9pZCo+KGNhaXJvX2ltYWdl
X3N1cmZhY2VfZ2V0X2RhdGEoaW1hZ2VEYXRhLmdldCgpKSkpOwotfQotCi1QYXNzUmVmUHRyPGNh
aXJvX3N1cmZhY2VfdD4gQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OmdldEltYWdlRGF0
YShjb25zdCBJbnRSZWN0JiByZWN0KQotewotICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IHNv
dXJjZSA9IGNyZWF0ZVN1cmZhY2VGb3JJbWFnZShtX2NvbXBvc2l0aW5nT2JqZWN0KTsKLSAgICBl
dmFzX29iamVjdF9pbWFnZV9kYXRhX3NldChtX2NvbXBvc2l0aW5nT2JqZWN0LCBzdGF0aWNfY2Fz
dDx2b2lkKj4oY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfZGF0YShzb3VyY2UuZ2V0KCkpKSk7Ci0K
LSAgICBpZiAobV92aWV3U2l6ZSA9PSByZWN0LnNpemUoKSkKLSAgICAgICAgcmV0dXJuIHNvdXJj
ZS5yZWxlYXNlKCk7Ci0KLSAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBkZXN0aW5hdGlvbiA9
IGFkb3B0UmVmKGNhaXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRlKENBSVJPX0ZPUk1BVF9BUkdCMzIs
IHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSkpOwotICAgIGNvcHlSZWN0RnJvbU9uZVN1cmZh
Y2VUb0Fub3RoZXIoc291cmNlLmdldCgpLCBkZXN0aW5hdGlvbi5nZXQoKSwgLUludFNpemUocmVj
dC54KCksIHJlY3QueSgpKSwgSW50UmVjdChJbnRQb2ludCgpLCByZWN0LnNpemUoKSksIEludFNp
emUoKSwgQ0FJUk9fT1BFUkFUT1JfU09VUkNFKTsKLSAgICByZXR1cm4gZGVzdGluYXRpb24ucmVs
ZWFzZSgpOwotfQotCi1QYXNzUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gQWNjZWxlcmF0ZWRDb21w
b3NpdGluZ0NvbnRleHQ6OmdldEltYWdlRGF0YUdMKGNvbnN0IEludFJlY3QmIHJlY3QpCi17Ci0g
ICAgaWYgKCFldmFzX2dsX21ha2VfY3VycmVudChtX2V2YXNHTC5nZXQoKSwgbV9ldmFzR0xTdXJm
YWNlLT5zdXJmYWNlKCksIG1fZXZhc0dMQ29udGV4dC0+Y29udGV4dCgpKSkKLSAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0KLSAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBzb3VyY2UgPSBhZG9w
dFJlZihjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZShDQUlST19GT1JNQVRfQVJHQjMyLCByZWN0
LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpKTsKLSAgICB1aW50OF90KiBzb3VyY2VQdHIgPSBzdGF0
aWNfY2FzdDx1aW50OF90Kj4oY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfZGF0YShzb3VyY2UuZ2V0
KCkpKTsKLQotICAgIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0M0QgPSBzdGF0aWNfY2FzdDxU
ZXh0dXJlTWFwcGVyR0wqPihtX3RleHR1cmVNYXBwZXIuZ2V0KCkpLT5ncmFwaGljc0NvbnRleHQz
RCgpOwotICAgIGNvbnRleHQzRC0+cmVhZFBpeGVscyhyZWN0LngoKSwgcmVjdC55KCksIHJlY3Qu
d2lkdGgoKSwgcmVjdC5oZWlnaHQoKSwgR3JhcGhpY3NDb250ZXh0M0Q6OkJHUkEsIEdyYXBoaWNz
Q29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCBzb3VyY2VQdHIpOwotICAgIHJldHVybiBzb3VyY2Uu
cmVsZWFzZSgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBVU0Uo
VEVYVFVSRV9NQVBQRVJfR0wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3Jl
U3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dEVmbC5oIGIvU291cmNlL1dlYktp
dC9lZmwvV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHRFZmwuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTg5OTZhMi4uMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4
dEVmbC5oCisrKyAvZGV2L251bGwKQEAgLTEsODEgKzAsMCBAQAotLyoKLSAgICBDb3B5cmlnaHQg
KEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcwotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICAgIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gICAgTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
Ci0gICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAgICBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICAg
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0gICAg
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQotICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gICAgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAgICBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSovCi0KLSNpZm5kZWYgQWNjZWxlcmF0ZWRDb21w
b3NpdGluZ0NvbnRleHRFZmxfaAotI2RlZmluZSBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4
dEVmbF9oCi0KLSNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCi0jaW5jbHVkZSAiRXZhc0dMQ29u
dGV4dC5oIgotI2luY2x1ZGUgIkV2YXNHTFN1cmZhY2UuaCIKLSNpbmNsdWRlICJUZXh0dXJlTWFw
cGVyRlBTQ291bnRlci5oIgotI2luY2x1ZGUgIlRpbWVyLmgiCi0jaW5jbHVkZSA8d3RmL05vbmNv
cHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL2VmbC9VbmlxdWVQdHJFZmwuaD4KLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1jbGFzcyBHcmFwaGljc0xheWVyOwotY2xhc3MgSG9zdFdpbmRvdzsKLWNs
YXNzIFRleHR1cmVNYXBwZXI7Ci1jbGFzcyBUZXh0dXJlTWFwcGVyTGF5ZXI7Ci0KLWNsYXNzIEFj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0IHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShB
Y2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCk7Ci1wdWJsaWM6Ci0gICAgQWNjZWxlcmF0ZWRD
b21wb3NpdGluZ0NvbnRleHQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV2YXNfT2JqZWN0KiBjb21w
b3NpdGluZ09iamVjdCk7Ci0gICAgfkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0KCk7Ci0K
LSAgICB2b2lkIHNldFJvb3RHcmFwaGljc0xheWVyKEdyYXBoaWNzTGF5ZXIqIHJvb3RMYXllcik7
Ci0gICAgdm9pZCByZXNpemUoY29uc3QgSW50U2l6ZSYpOwotICAgIHZvaWQgZmx1c2hBbmRSZW5k
ZXJMYXllcnMoKTsKLQotICAgIHZvaWQgZXh0cmFjdEltYWdlRGF0YShFdmFzX09iamVjdCosIGNv
bnN0IEludFJlY3QmKTsKLQotcHJpdmF0ZToKLSAgICB2b2lkIHBhaW50VG9HcmFwaGljc0NvbnRl
eHQoKTsKLSAgICB2b2lkIHBhaW50VG9DdXJyZW50R0xDb250ZXh0KCk7Ci0gICAgdm9pZCBjb21w
b3NpdGVMYXllcnMoKTsKLQotICAgIGJvb2wgZmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzKCk7Ci0g
ICAgdm9pZCBzeW5jTGF5ZXJzKFRpbWVyPEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0Piop
OwotCi0gICAgUGFzc1JlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IGdldEltYWdlRGF0YShjb25zdCBJ
bnRSZWN0Jik7Ci0gICAgUGFzc1JlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IGdldEltYWdlRGF0YUdM
KGNvbnN0IEludFJlY3QmKTsKLQotICAgIEV2YXNfT2JqZWN0KiBtX3ZpZXc7Ci0gICAgRXZhc19P
YmplY3QqIG1fY29tcG9zaXRpbmdPYmplY3Q7Ci0KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVy
ZU1hcHBlcj4gbV90ZXh0dXJlTWFwcGVyOwotICAgIEdyYXBoaWNzTGF5ZXIqIG1fcm9vdExheWVy
OwotICAgIFRpbWVyPEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0PiBtX3N5bmNUaW1lcjsK
LQotICAgIEVmbFVuaXF1ZVB0cjxFdmFzX0dMPiBtX2V2YXNHTDsKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8RXZhc0dMQ29udGV4dD4gbV9ldmFzR0xDb250ZXh0OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxF
dmFzR0xTdXJmYWNlPiBtX2V2YXNHTFN1cmZhY2U7Ci0KLSAgICBUZXh0dXJlTWFwcGVyRlBTQ291
bnRlciBtX2Zwc0NvdW50ZXI7Ci0KLSAgICBJbnRTaXplIG1fdmlld1NpemU7Ci0gICAgYm9vbCBt
X2lzQWNjZWxlcmF0ZWQ7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAv
LyBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCi0jZW5kaWYgLy8gQWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0NvbnRleHRFZmxfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBv
cnQvQmF0dGVyeUNsaWVudEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9y
dC9CYXR0ZXJ5Q2xpZW50RWZsLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2Ey
MDI1ZS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9CYXR0
ZXJ5Q2xpZW50RWZsLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDYwICswLDAgQEAKLS8qCi0gKiAg
Q29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICogIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiAgdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgot
ICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiAgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKLSAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcu
TElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiAgQm9zdG9uLCBNQSAw
MjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkJh
dHRlcnlDbGllbnRFZmwuaCIKLQotI2lmIEVOQUJMRShCQVRURVJZX1NUQVRVUykKLQotI2luY2x1
ZGUgIkJhdHRlcnlDb250cm9sbGVyLmgiCi0jaW5jbHVkZSAiZXdrX3ZpZXdfcHJpdmF0ZS5oIgot
Ci1CYXR0ZXJ5Q2xpZW50RWZsOjpCYXR0ZXJ5Q2xpZW50RWZsKEV2YXNfT2JqZWN0KiB2aWV3KQot
ICAgIDogbV92aWV3KHZpZXcpCi0gICAgLCBtX3Byb3ZpZGVyKHRoaXMpCi17Ci19Ci0KLUJhdHRl
cnlDbGllbnRFZmw6On5CYXR0ZXJ5Q2xpZW50RWZsKCkKLXsKLSAgICBtX3Byb3ZpZGVyLnN0b3BV
cGRhdGluZygpOwotfQotCi12b2lkIEJhdHRlcnlDbGllbnRFZmw6OnN0YXJ0VXBkYXRpbmcoKQot
ewotICAgIG1fcHJvdmlkZXIuc3RhcnRVcGRhdGluZygpOwotfQotCi12b2lkIEJhdHRlcnlDbGll
bnRFZmw6OnN0b3BVcGRhdGluZygpCi17Ci0gICAgbV9wcm92aWRlci5zdG9wVXBkYXRpbmcoKTsK
LX0KLQotdm9pZCBCYXR0ZXJ5Q2xpZW50RWZsOjpiYXR0ZXJ5Q29udHJvbGxlckRlc3Ryb3llZCgp
Ci17Ci0gICAgZGVsZXRlIHRoaXM7Ci19Ci0KLXZvaWQgQmF0dGVyeUNsaWVudEVmbDo6ZGlkQ2hh
bmdlQmF0dGVyeVN0YXR1cyhjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0
cjxXZWJDb3JlOjpCYXR0ZXJ5U3RhdHVzPiBzdGF0dXMpCi17Ci0gICAgV2ViQ29yZTo6QmF0dGVy
eUNvbnRyb2xsZXI6OmZyb20oRVdLUHJpdmF0ZTo6Y29yZVBhZ2UobV92aWV3KSktPmRpZENoYW5n
ZUJhdHRlcnlTdGF0dXMoZXZlbnRUeXBlLCBzdGF0dXMpOwotfQotCi0jZW5kaWYgLy8gRU5BQkxF
KEJBVFRFUllfU1RBVFVTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1
cHBvcnQvQmF0dGVyeUNsaWVudEVmbC5oIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBv
cnQvQmF0dGVyeUNsaWVudEVmbC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMTFh
Y2M5Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0JhdHRl
cnlDbGllbnRFZmwuaAorKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLS8qCi0gKiAgQ29w
eXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICogIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiAgdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoK
LSAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiAgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UKLSAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bwotICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiAgQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCi0gKi8KLQotI2lmbmRlZiBCYXR0ZXJ5Q2xpZW50RWZsX2gKLSNkZWZpbmUg
QmF0dGVyeUNsaWVudEVmbF9oCi0KLSNpZiBFTkFCTEUoQkFUVEVSWV9TVEFUVVMpCi0KLSNpbmNs
dWRlICJCYXR0ZXJ5Q2xpZW50LmgiCi0jaW5jbHVkZSAiQmF0dGVyeVByb3ZpZGVyRWZsLmgiCi0j
aW5jbHVkZSAiQmF0dGVyeVByb3ZpZGVyRWZsQ2xpZW50LmgiCi0jaW5jbHVkZSAiQmF0dGVyeVN0
YXR1cy5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLWNsYXNzIEJhdHRlcnlDb250cm9sbGVyOwotfQotCi1jbGFzcyBCYXR0ZXJ5Q2xpZW50RWZs
IDogcHVibGljIFdlYkNvcmU6OkJhdHRlcnlDbGllbnQsIHB1YmxpYyBXZWJDb3JlOjpCYXR0ZXJ5
UHJvdmlkZXJFZmxDbGllbnQgewotcHVibGljOgotICAgIGV4cGxpY2l0IEJhdHRlcnlDbGllbnRF
ZmwoRXZhc19PYmplY3QqIHZpZXcpOwotICAgIHZpcnR1YWwgfkJhdHRlcnlDbGllbnRFZmwoKTsK
LQotICAgIC8vIEJhdHRlcnlDbGllbnQgaW50ZXJmYWNlLgotICAgIHZpcnR1YWwgdm9pZCBzdGFy
dFVwZGF0aW5nKCk7Ci0gICAgdmlydHVhbCB2b2lkIHN0b3BVcGRhdGluZygpOwotICAgIHZpcnR1
YWwgdm9pZCBiYXR0ZXJ5Q29udHJvbGxlckRlc3Ryb3llZCgpOwotCi1wcml2YXRlOgotICAgIC8v
IEJhdHRlcnlQcm92aWRlckVmbENsaWVudCBpbnRlcmZhY2UuCi0gICAgdmlydHVhbCB2b2lkIGRp
ZENoYW5nZUJhdHRlcnlTdGF0dXMoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NS
ZWZQdHI8V2ViQ29yZTo6QmF0dGVyeVN0YXR1cz4pOwotCi0gICAgRXZhc19PYmplY3QqIG1fdmll
dzsKLSAgICBXZWJDb3JlOjpCYXR0ZXJ5UHJvdmlkZXJFZmwgbV9wcm92aWRlcjsKLX07Ci0KLSNl
bmRpZiAvLyBFTkFCTEUoQkFUVEVSWV9TVEFUVVMpCi0KLSNlbmRpZiAvLyBCYXR0ZXJ5Q2xpZW50
RWZsX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9t
ZUNsaWVudEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVD
bGllbnRFZmwuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2M2YyNmFkLi4wMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVm
bC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw2MjYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAwNiBaYWNrIFJ1c2luIDx6YWNrQGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDYg
QXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAwOCBL
ZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbgotICogQ29weXJpZ2h0IChDKSAyMDA4IERpZWdvIEdv
bnphbGV6Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBQcm9GVVNJT04gZW1iZWRkZWQgc3lz
dGVtcwotICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcwotICog
Q29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFy
eSgtaWVzKS4KLSAqCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQot
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAi
Q2hyb21lQ2xpZW50RWZsLmgiCi0KLSNpbmNsdWRlICJBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5o
IgotI2luY2x1ZGUgIkZpbGVDaG9vc2VyLmgiCi0jaW5jbHVkZSAiRmlsZUljb25Mb2FkZXIuaCIK
LSNpbmNsdWRlICJGbG9hdFJlY3QuaCIKLSNpbmNsdWRlICJGcmFtZS5oIgotI2luY2x1ZGUgIkZy
YW1lTG9hZGVyLmgiCi0jaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnRFZmwuaCIKLSNpbmNsdWRl
ICJIaXRUZXN0UmVzdWx0LmgiCi0jaW5jbHVkZSAiSW50UmVjdC5oIgotI2luY2x1ZGUgIlVSTC5o
IgotI2luY2x1ZGUgIk5hdmlnYXRpb25BY3Rpb24uaCIKLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRl
ZC5oIgotI2luY2x1ZGUgIlBvcHVwTWVudUVmbC5oIgotI2luY2x1ZGUgIlNlYXJjaFBvcHVwTWVu
dUVmbC5oIgotI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCi0jaW5jbHVkZSAiVmlld3BvcnRB
cmd1bWVudHMuaCIKLSNpbmNsdWRlICJXaW5kb3dGZWF0dXJlcy5oIgotI2luY2x1ZGUgImV3a19j
dXN0b21faGFuZGxlcl9wcml2YXRlLmgiCi0jaW5jbHVkZSAiZXdrX2ZpbGVfY2hvb3Nlcl9wcml2
YXRlLmgiCi0jaW5jbHVkZSAiZXdrX2ZyYW1lX3ByaXZhdGUuaCIKLSNpbmNsdWRlICJld2tfcHJp
dmF0ZS5oIgotI2luY2x1ZGUgImV3a19zZWN1cml0eV9vcmlnaW5fcHJpdmF0ZS5oIgotI2luY2x1
ZGUgImV3a192aWV3X3ByaXZhdGUuaCIKLSNpbmNsdWRlIDxFY29yZV9FdmFzLmg+Ci0jaW5jbHVk
ZSA8RXZhcy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLSNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KLQotI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUo
TEVHQUNZX05PVElGSUNBVElPTlMpCi0jaW5jbHVkZSAiTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xp
ZW50RWZsLmgiCi0jZW5kaWYKLQotI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0jaW5jbHVkZSAi
RGF0YWJhc2VEZXRhaWxzLmgiCi0jaW5jbHVkZSAiRGF0YWJhc2VNYW5hZ2VyLmgiCi0jZW5kaWYK
LQotI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQotI2luY2x1ZGUgIkNvbG9yQ2hvb3NlckVm
bC5oIgotI2VuZGlmCi0KLSNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCi0jaW5jbHVkZSAiU2V0
dGluZ3MuaCIKLSNlbmRpZgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotc3RhdGljIGlu
bGluZSBFdmFzX09iamVjdCoga2l0KEZyYW1lKiBmcmFtZSkKLXsKLSAgICBpZiAoIWZyYW1lKQot
ICAgICAgICByZXR1cm4gMDsKLQotICAgIEZyYW1lTG9hZGVyQ2xpZW50RWZsJiBjbGllbnQgPSBz
dGF0aWNfY2FzdDxGcmFtZUxvYWRlckNsaWVudEVmbCY+KGZyYW1lLT5sb2FkZXIoKS5jbGllbnQo
KSk7Ci0gICAgcmV0dXJuIGNsaWVudC53ZWJGcmFtZSgpOwotfQotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLUNocm9tZUNsaWVudEVmbDo6Q2hyb21lQ2xpZW50RWZsKEV2YXNfT2JqZWN0KiB2aWV3
KQotICAgIDogbV92aWV3KHZpZXcpCi17Ci0gICAgQVNTRVJUKG1fdmlldyk7Ci19Ci0KLUNocm9t
ZUNsaWVudEVmbDo6fkNocm9tZUNsaWVudEVmbCgpCi17Ci19Ci0KLXZvaWQgQ2hyb21lQ2xpZW50
RWZsOjpjaHJvbWVEZXN0cm95ZWQoKQotewotICAgIGRlbGV0ZSB0aGlzOwotfQotCi12b2lkIENo
cm9tZUNsaWVudEVmbDo6Zm9jdXNlZEVsZW1lbnRDaGFuZ2VkKEVsZW1lbnQqKQotewotICAgIG5v
dEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgQ2hyb21lQ2xpZW50RWZsOjpmb2N1c2VkRnJhbWVD
aGFuZ2VkKEZyYW1lKikKLXsKLX0KLQotRmxvYXRSZWN0IENocm9tZUNsaWVudEVmbDo6d2luZG93
UmVjdCgpCi17Ci0gICAgaW50IHgsIHksIHdpZHRoLCBoZWlnaHQ7Ci0KLSAgICBFY29yZV9FdmFz
KiBlZSA9IGVjb3JlX2V2YXNfZWNvcmVfZXZhc19nZXQoZXZhc19vYmplY3RfZXZhc19nZXQobV92
aWV3KSk7Ci0gICAgZWNvcmVfZXZhc19yZXF1ZXN0X2dlb21ldHJ5X2dldChlZSwgJngsICZ5LCAm
d2lkdGgsICZoZWlnaHQpOwotCi0gICAgcmV0dXJuIEZsb2F0UmVjdCh4LCB5LCB3aWR0aCwgaGVp
Z2h0KTsKLX0KLQotdm9pZCBDaHJvbWVDbGllbnRFZmw6OnNldFdpbmRvd1JlY3QoY29uc3QgRmxv
YXRSZWN0JiByZWN0KQotewotICAgIGlmICghZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfYXV0b19y
ZXNpemVfd2luZG93X2dldChtX3ZpZXcpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBFY29yZV9F
dmFzKiBlZSA9IGVjb3JlX2V2YXNfZWNvcmVfZXZhc19nZXQoZXZhc19vYmplY3RfZXZhc19nZXQo
bV92aWV3KSk7Ci0gICAgZWNvcmVfZXZhc19tb3ZlX3Jlc2l6ZShlZSwgcmVjdC54KCksIHJlY3Qu
eSgpLCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpOwotfQotCi1GbG9hdFJlY3QgQ2hyb21l
Q2xpZW50RWZsOjpwYWdlUmVjdCgpCi17Ci0gICAgcmV0dXJuIGV3a192aWV3X3BhZ2VfcmVjdF9n
ZXQobV92aWV3KTsKLX0KLQotdm9pZCBDaHJvbWVDbGllbnRFZmw6OmZvY3VzKCkKLXsKLSAgICBl
dmFzX29iamVjdF9mb2N1c19zZXQobV92aWV3LCBFSU5BX1RSVUUpOwotfQotCi12b2lkIENocm9t
ZUNsaWVudEVmbDo6dW5mb2N1cygpCi17Ci0gICAgZXZhc19vYmplY3RfZm9jdXNfc2V0KG1fdmll
dywgRUlOQV9GQUxTRSk7Ci19Ci0KLVBhZ2UqIENocm9tZUNsaWVudEVmbDo6Y3JlYXRlV2luZG93
KEZyYW1lKiBmcmFtZSwgY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYsIGNvbnN0IFdpbmRvd0ZlYXR1
cmVzJiBmZWF0dXJlcywgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYpCi17Ci0jaWYgRU5BQkxFKEZV
TExTQ1JFRU5fQVBJKQotICAgIGlmIChmcmFtZS0+ZG9jdW1lbnQoKSAmJiBmcmFtZS0+ZG9jdW1l
bnQoKS0+d2Via2l0Q3VycmVudEZ1bGxTY3JlZW5FbGVtZW50KCkpCi0gICAgICAgIGZyYW1lLT5k
b2N1bWVudCgpLT53ZWJraXRDYW5jZWxGdWxsU2NyZWVuKCk7Ci0jZWxzZQotICAgIFVOVVNFRF9Q
QVJBTShmcmFtZSk7Ci0jZW5kaWYKLQotICAgIEV2YXNfT2JqZWN0KiBuZXdWaWV3ID0gZXdrX3Zp
ZXdfd2luZG93X2NyZWF0ZShtX3ZpZXcsIEVJTkFfVFJVRSwgJmZlYXR1cmVzKTsKLSAgICBpZiAo
IW5ld1ZpZXcpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgcmV0dXJuIEVXS1ByaXZhdGU6OmNv
cmVQYWdlKG5ld1ZpZXcpOwotfQotCi12b2lkIENocm9tZUNsaWVudEVmbDo6c2hvdygpCi17Ci0g
ICAgZXdrX3ZpZXdfcmVhZHkobV92aWV3KTsKLX0KLQotYm9vbCBDaHJvbWVDbGllbnRFZmw6OmNh
blJ1bk1vZGFsKCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBmYWxzZTsK
LX0KLQotdm9pZCBDaHJvbWVDbGllbnRFZmw6OnJ1bk1vZGFsKCkKLXsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOwotfQotCi12b2lkIENocm9tZUNsaWVudEVmbDo6c2V0VG9vbGJhcnNWaXNpYmxlKGJv
b2wgdmlzaWJsZSkKLXsKLSAgICBld2tfdmlld190b29sYmFyc192aXNpYmxlX3NldChtX3ZpZXcs
IHZpc2libGUpOwotfQotCi1ib29sIENocm9tZUNsaWVudEVmbDo6dG9vbGJhcnNWaXNpYmxlKCkK
LXsKLSAgICBib29sIHZpc2libGU7Ci0KLSAgICBld2tfdmlld190b29sYmFyc192aXNpYmxlX2dl
dChtX3ZpZXcsICZ2aXNpYmxlKTsKLSAgICByZXR1cm4gdmlzaWJsZTsKLX0KLQotdm9pZCBDaHJv
bWVDbGllbnRFZmw6OnNldFN0YXR1c2JhclZpc2libGUoYm9vbCB2aXNpYmxlKQotewotICAgIGV3
a192aWV3X3N0YXR1c2Jhcl92aXNpYmxlX3NldChtX3ZpZXcsIHZpc2libGUpOwotfQotCi1ib29s
IENocm9tZUNsaWVudEVmbDo6c3RhdHVzYmFyVmlzaWJsZSgpCi17Ci0gICAgYm9vbCB2aXNpYmxl
OwotCi0gICAgZXdrX3ZpZXdfc3RhdHVzYmFyX3Zpc2libGVfZ2V0KG1fdmlldywgJnZpc2libGUp
OwotICAgIHJldHVybiB2aXNpYmxlOwotfQotCi12b2lkIENocm9tZUNsaWVudEVmbDo6c2V0U2Ny
b2xsYmFyc1Zpc2libGUoYm9vbCB2aXNpYmxlKQotewotICAgIGV3a192aWV3X3Njcm9sbGJhcnNf
dmlzaWJsZV9zZXQobV92aWV3LCB2aXNpYmxlKTsKLX0KLQotYm9vbCBDaHJvbWVDbGllbnRFZmw6
OnNjcm9sbGJhcnNWaXNpYmxlKCkKLXsKLSAgICBib29sIHZpc2libGU7Ci0KLSAgICBld2tfdmll
d19zY3JvbGxiYXJzX3Zpc2libGVfZ2V0KG1fdmlldywgJnZpc2libGUpOwotICAgIHJldHVybiB2
aXNpYmxlOwotfQotCi12b2lkIENocm9tZUNsaWVudEVmbDo6c2V0TWVudWJhclZpc2libGUoYm9v
bCB2aXNpYmxlKQotewotICAgIGV3a192aWV3X21lbnViYXJfdmlzaWJsZV9zZXQobV92aWV3LCB2
aXNpYmxlKTsKLX0KLQotYm9vbCBDaHJvbWVDbGllbnRFZmw6Om1lbnViYXJWaXNpYmxlKCkKLXsK
LSAgICBib29sIHZpc2libGU7Ci0KLSAgICBld2tfdmlld19tZW51YmFyX3Zpc2libGVfZ2V0KG1f
dmlldywgJnZpc2libGUpOwotICAgIHJldHVybiB2aXNpYmxlOwotfQotCi12b2lkIENocm9tZUNs
aWVudEVmbDo6Y3JlYXRlU2VsZWN0UG9wdXAoUG9wdXBNZW51Q2xpZW50KiBjbGllbnQsIGludCBz
ZWxlY3RlZCwgY29uc3QgSW50UmVjdCYgcmVjdCkKLXsKLSAgICBld2tfdmlld19wb3B1cF9uZXco
bV92aWV3LCBjbGllbnQsIHNlbGVjdGVkLCByZWN0KTsKLX0KLQotYm9vbCBDaHJvbWVDbGllbnRF
Zmw6OmRlc3Ryb3lTZWxlY3RQb3B1cCgpCi17Ci0gICAgcmV0dXJuIGV3a192aWV3X3BvcHVwX2Rl
c3Ryb3kobV92aWV3KTsKLX0KLQotdm9pZCBDaHJvbWVDbGllbnRFZmw6OnNldFJlc2l6YWJsZShi
b29sKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgQ2hyb21lQ2xpZW50RWZs
OjpjbG9zZVdpbmRvd1Nvb24oKQotewotICAgIGV3a192aWV3X3dpbmRvd19jbG9zZShtX3ZpZXcp
OwotfQotCi1ib29sIENocm9tZUNsaWVudEVmbDo6Y2FuVGFrZUZvY3VzKEZvY3VzRGlyZWN0aW9u
IGNvcmVEaXJlY3Rpb24pCi17Ci0gICAgLy8gVGhpcyBpcyBjYWxsZWQgd2hlbiBjeWNsaW5nIHRo
cm91Z2ggbGlua3MvZm9jdXNhYmxlIG9iamVjdHMgYW5kIHdlCi0gICAgLy8gcmVhY2ggdGhlIGxh
c3QgZm9jdXNhYmxlIG9iamVjdC4KLSAgICBBU1NFUlQoY29yZURpcmVjdGlvbiA9PSBGb2N1c0Rp
cmVjdGlvbkZvcndhcmQgfHwgY29yZURpcmVjdGlvbiA9PSBGb2N1c0RpcmVjdGlvbkJhY2t3YXJk
KTsKLQotICAgIEV3a19Gb2N1c19EaXJlY3Rpb24gZGlyZWN0aW9uID0gc3RhdGljX2Nhc3Q8RXdr
X0ZvY3VzX0RpcmVjdGlvbj4oY29yZURpcmVjdGlvbik7Ci0KLSAgICByZXR1cm4gIWV3a192aWV3
X2ZvY3VzX2Nhbl9jeWNsZShtX3ZpZXcsIGRpcmVjdGlvbik7Ci19Ci0KLXZvaWQgQ2hyb21lQ2xp
ZW50RWZsOjp0YWtlRm9jdXMoRm9jdXNEaXJlY3Rpb24pCi17Ci0gICAgdW5mb2N1cygpOwotfQot
Ci1ib29sIENocm9tZUNsaWVudEVmbDo6Y2FuUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKCkK
LXsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBDaHJvbWVDbGllbnRFZmw6OnJ1bkJlZm9y
ZVVubG9hZENvbmZpcm1QYW5lbChjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIEZyYW1lKiBmcmFtZSkK
LXsKLSAgICByZXR1cm4gZXdrX3ZpZXdfcnVuX2JlZm9yZV91bmxvYWRfY29uZmlybShtX3ZpZXcs
IGtpdChmcmFtZSksIG1lc3NhZ2UudXRmOCgpLmRhdGEoKSk7Ci19Ci0KLXZvaWQgQ2hyb21lQ2xp
ZW50RWZsOjphZGRNZXNzYWdlVG9Db25zb2xlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VMZXZlbCwg
Y29uc3QgU3RyaW5nJiBtZXNzYWdlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgbGluZU51bWJlciwgdW5zaWduZWQgY29sdW1uTnVtYmVyLCBjb25z
dCBTdHJpbmcmIHNvdXJjZUlEKQotewotICAgIFVOVVNFRF9QQVJBTShjb2x1bW5OdW1iZXIpOwot
ICAgIGV3a192aWV3X2FkZF9jb25zb2xlX21lc3NhZ2UobV92aWV3LCBtZXNzYWdlLnV0ZjgoKS5k
YXRhKCksIGxpbmVOdW1iZXIsIHNvdXJjZUlELnV0ZjgoKS5kYXRhKCkpOwotfQotCi12b2lkIENo
cm9tZUNsaWVudEVmbDo6cnVuSmF2YVNjcmlwdEFsZXJ0KEZyYW1lKiBmcmFtZSwgY29uc3QgU3Ry
aW5nJiBtZXNzYWdlKQotewotICAgIGV3a192aWV3X3J1bl9qYXZhc2NyaXB0X2FsZXJ0KG1fdmll
dywga2l0KGZyYW1lKSwgbWVzc2FnZS51dGY4KCkuZGF0YSgpKTsKLX0KLQotYm9vbCBDaHJvbWVD
bGllbnRFZmw6OnJ1bkphdmFTY3JpcHRDb25maXJtKEZyYW1lKiBmcmFtZSwgY29uc3QgU3RyaW5n
JiBtZXNzYWdlKQotewotICAgIHJldHVybiBld2tfdmlld19ydW5famF2YXNjcmlwdF9jb25maXJt
KG1fdmlldywga2l0KGZyYW1lKSwgbWVzc2FnZS51dGY4KCkuZGF0YSgpKTsKLX0KLQotYm9vbCBD
aHJvbWVDbGllbnRFZmw6OnJ1bkphdmFTY3JpcHRQcm9tcHQoRnJhbWUqIGZyYW1lLCBjb25zdCBT
dHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVmYXVsdFZhbHVlLCBTdHJpbmcmIHJlc3Vs
dCkKLXsKLSAgICBjb25zdCBjaGFyKiB2YWx1ZSA9IDA7Ci0gICAgZXdrX3ZpZXdfcnVuX2phdmFz
Y3JpcHRfcHJvbXB0KG1fdmlldywga2l0KGZyYW1lKSwgbWVzc2FnZS51dGY4KCkuZGF0YSgpLCBk
ZWZhdWx0VmFsdWUudXRmOCgpLmRhdGEoKSwgJnZhbHVlKTsKLSAgICBpZiAodmFsdWUpIHsKLSAg
ICAgICAgcmVzdWx0ID0gU3RyaW5nOjpmcm9tVVRGOCh2YWx1ZSk7Ci0gICAgICAgIGVpbmFfc3Ry
aW5nc2hhcmVfZGVsKHZhbHVlKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJl
dHVybiBmYWxzZTsKLX0KLQotdm9pZCBDaHJvbWVDbGllbnRFZmw6OnNldFN0YXR1c2JhclRleHQo
Y29uc3QgU3RyaW5nJiBzdHJpbmcpCi17Ci0gICAgZXdrX3ZpZXdfc3RhdHVzYmFyX3RleHRfc2V0
KG1fdmlldywgc3RyaW5nLnV0ZjgoKS5kYXRhKCkpOwotfQotCi1ib29sIENocm9tZUNsaWVudEVm
bDo6c2hvdWxkSW50ZXJydXB0SmF2YVNjcmlwdCgpCi17Ci0gICAgcmV0dXJuIGV3a192aWV3X3No
b3VsZF9pbnRlcnJ1cHRfamF2YXNjcmlwdChtX3ZpZXcpOwotfQotCi1LZXlib2FyZFVJTW9kZSBD
aHJvbWVDbGllbnRFZmw6OmtleWJvYXJkVUlNb2RlKCkKLXsKLSAgICByZXR1cm4gZXdrX3ZpZXdf
c2V0dGluZ19pbmNsdWRlX2xpbmtzX2luX2ZvY3VzX2NoYWluX2dldChtX3ZpZXcpID8gS2V5Ym9h
cmRBY2Nlc3NUYWJzVG9MaW5rcyA6IEtleWJvYXJkQWNjZXNzRGVmYXVsdDsKLX0KLQotSW50UmVj
dCBDaHJvbWVDbGllbnRFZmw6OndpbmRvd1Jlc2l6ZXJSZWN0KCkgY29uc3QKLXsKLSAgICBub3RJ
bXBsZW1lbnRlZCgpOwotICAgIC8vIEltcGxlbWVudGluZyB0aGlzIGZ1bmN0aW9uIHdpbGwgbWFr
ZSByZXBhaW50IGJlaW5nCi0gICAgLy8gY2FsbGVkIGR1cmluZyByZXNpemUsIGJ1dCBhcyB0aGlz
IHdpbGwgYmUgZG9uZSB3aXRoCi0gICAgLy8gYSBtaW5vciBkZWxheSBpdCBhZGRzIGEgd2VpcmQg
ImZpbGxpbmciIGVmZmVjdCBkdWUKLSAgICAvLyB0byB1cyB1c2luZyBhbiBldmFzIGltYWdlIGZv
ciBzaG93aW5nIHRoZSBjYWlybwotICAgIC8vIGNvbnRleHQuIFNvIGluc3RlYWQgb2YgaW1wbGVt
ZW50aW5nIHRoaXMgZnVuY3Rpb24KLSAgICAvLyB3ZSBjYWxsIHBhaW50IGRpcmVjdGx5IGR1cmlu
ZyByZXNpemUgd2l0aAotICAgIC8vIHRoZSBuZXcgb2JqZWN0IHNpemUgYXMgaXRzIGFyZ3VtZW50
LgotICAgIHJldHVybiBJbnRSZWN0KCk7Ci19Ci0KLXZvaWQgQ2hyb21lQ2xpZW50RWZsOjpjb250
ZW50c1NpemVDaGFuZ2VkKEZyYW1lKiBmcmFtZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSkgY29uc3QK
LXsKLSAgICBld2tfZnJhbWVfY29udGVudHNfc2l6ZV9jaGFuZ2VkKGtpdChmcmFtZSksIHNpemUu
d2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7Ci0gICAgaWYgKGV3a192aWV3X2ZyYW1lX21haW5fZ2V0
KG1fdmlldykgPT0ga2l0KGZyYW1lKSkKLSAgICAgICAgZXdrX3ZpZXdfY29udGVudHNfc2l6ZV9j
aGFuZ2VkKG1fdmlldywgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsKLX0KLQotSW50UmVj
dCBDaHJvbWVDbGllbnRFZmw6OnJvb3RWaWV3VG9TY3JlZW4oY29uc3QgSW50UmVjdCYgcmVjdCkg
Y29uc3QKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiByZWN0OwotfQotCi1J
bnRQb2ludCBDaHJvbWVDbGllbnRFZmw6OnNjcmVlblRvUm9vdFZpZXcoY29uc3QgSW50UG9pbnQm
IHBvaW50KSBjb25zdAotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIHBvaW50
OwotfQotCi1QbGF0Zm9ybVBhZ2VDbGllbnQgQ2hyb21lQ2xpZW50RWZsOjpwbGF0Zm9ybVBhZ2VD
bGllbnQoKSBjb25zdAotewotICAgIHJldHVybiBtX3ZpZXc7Ci19Ci0KLXZvaWQgQ2hyb21lQ2xp
ZW50RWZsOjpzY3JvbGxiYXJzTW9kZURpZENoYW5nZSgpIGNvbnN0Ci17Ci19Ci0KLXZvaWQgQ2hy
b21lQ2xpZW50RWZsOjptb3VzZURpZE1vdmVPdmVyRWxlbWVudChjb25zdCBIaXRUZXN0UmVzdWx0
JiBoaXQsIHVuc2lnbmVkIC8qbW9kaWZpZXJGbGFncyovKQotewotICAgIC8vIEZJWE1FLCBjb21w
YXJlIHdpdGggb2xkIGxpbmssIGxvb2sgYXQgUXQgaW1wbC4KLSAgICBib29sIGlzTGluayA9IGhp
dC5pc0xpdmVMaW5rKCk7Ci0gICAgaWYgKGlzTGluaykgewotICAgICAgICBVUkwgdXJsID0gaGl0
LmFic29sdXRlTGlua1VSTCgpOwotICAgICAgICBpZiAoIXVybC5pc0VtcHR5KCkgJiYgdXJsICE9
IG1faG92ZXJlZExpbmtVUkwpIHsKLSAgICAgICAgICAgIGNvbnN0IGNoYXIqIGxpbmtbMl07Ci0g
ICAgICAgICAgICBUZXh0RGlyZWN0aW9uIGRpcjsKLSAgICAgICAgICAgIENTdHJpbmcgdXJsU3Ry
ID0gdXJsLnN0cmluZygpLnV0ZjgoKTsKLSAgICAgICAgICAgIENTdHJpbmcgdGl0bGVTdHIgPSBo
aXQudGl0bGUoZGlyKS51dGY4KCk7Ci0gICAgICAgICAgICBsaW5rWzBdID0gdXJsU3RyLmRhdGEo
KTsKLSAgICAgICAgICAgIGxpbmtbMV0gPSB0aXRsZVN0ci5kYXRhKCk7Ci0gICAgICAgICAgICBl
d2tfdmlld19tb3VzZV9saW5rX2hvdmVyX2luKG1fdmlldywgbGluayk7Ci0gICAgICAgICAgICBt
X2hvdmVyZWRMaW5rVVJMID0gdXJsOwotICAgICAgICB9Ci0gICAgfSBlbHNlIGlmICghaXNMaW5r
ICYmICFtX2hvdmVyZWRMaW5rVVJMLmlzRW1wdHkoKSkgewotICAgICAgICBld2tfdmlld19tb3Vz
ZV9saW5rX2hvdmVyX291dChtX3ZpZXcpOwotICAgICAgICBtX2hvdmVyZWRMaW5rVVJMID0gVVJM
KCk7Ci0gICAgfQotfQotCi12b2lkIENocm9tZUNsaWVudEVmbDo6c2V0VG9vbFRpcChjb25zdCBT
dHJpbmcmIHRvb2xUaXAsIFRleHREaXJlY3Rpb24pCi17Ci0gICAgZXdrX3ZpZXdfdG9vbHRpcF90
ZXh0X3NldChtX3ZpZXcsIHRvb2xUaXAudXRmOCgpLmRhdGEoKSk7Ci19Ci0KLXZvaWQgQ2hyb21l
Q2xpZW50RWZsOjpwcmludChGcmFtZSopCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQot
dm9pZCBDaHJvbWVDbGllbnRFZmw6OnJlYWNoZWRNYXhBcHBDYWNoZVNpemUoaW50NjRfdCAvKnNw
YWNlTmVlZGVkKi8pCi17Ci0gICAgLy8gRklYTUU6IEZyZWUgc29tZSBzcGFjZS4KLSAgICBub3RJ
bXBsZW1lbnRlZCgpOwotfQotCi12b2lkIENocm9tZUNsaWVudEVmbDo6cmVhY2hlZEFwcGxpY2F0
aW9uQ2FjaGVPcmlnaW5RdW90YShTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBpbnQ2NF90IHRvdGFs
U3BhY2VOZWVkZWQpCi17Ci0gICAgRXdrX1NlY3VyaXR5X09yaWdpbiogZXdrT3JpZ2luID0gZXdr
X3NlY3VyaXR5X29yaWdpbl9uZXcob3JpZ2luKTsKLSAgICBpbnQ2NF90IGRlZmF1bHRPcmlnaW5R
dW90YSA9IFdlYkNvcmU6OmNhY2hlU3RvcmFnZSgpLmRlZmF1bHRPcmlnaW5RdW90YSgpOwotCi0g
ICAgaW50NjRfdCBuZXdRdW90YSA9IGV3a192aWV3X2V4Y2VlZGVkX2FwcGxpY2F0aW9uX2NhY2hl
X3F1b3RhKG1fdmlldywgZXdrT3JpZ2luLCBkZWZhdWx0T3JpZ2luUXVvdGEsIHRvdGFsU3BhY2VO
ZWVkZWQpOwotICAgIGlmIChuZXdRdW90YSkKLSAgICAgICAgZXdrX3NlY3VyaXR5X29yaWdpbl9h
cHBsaWNhdGlvbl9jYWNoZV9xdW90YV9zZXQoZXdrT3JpZ2luLCBuZXdRdW90YSk7Ci0KLSAgICBl
d2tfc2VjdXJpdHlfb3JpZ2luX2ZyZWUoZXdrT3JpZ2luKTsKLX0KLQotdm9pZCBDaHJvbWVDbGll
bnRFZmw6OnBvcHVsYXRlVmlzaXRlZExpbmtzKCkKLXsKLSAgICBldmFzX29iamVjdF9zbWFydF9j
YWxsYmFja19jYWxsKG1fdmlldywgInBvcHVsYXRlLHZpc2l0ZWQsbGlua3MiLCAwKTsKLX0KLQot
I2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCi12b2lkIENocm9tZUNsaWVudEVmbDo6bmVlZFRvdWNo
RXZlbnRzKGJvb2wgbmVlZGVkKQotewotICAgIGV3a192aWV3X25lZWRfdG91Y2hfZXZlbnRzX3Nl
dChtX3ZpZXcsIG5lZWRlZCk7Ci19Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShTUUxfREFUQUJBU0Up
Ci12b2lkIENocm9tZUNsaWVudEVmbDo6ZXhjZWVkZWREYXRhYmFzZVF1b3RhKEZyYW1lKiBmcmFt
ZSwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUsIERhdGFiYXNlRGV0YWlscyBkZXRhaWxzKQot
ewotICAgIHVpbnQ2NF90IHF1b3RhOwotICAgIFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4gPSBmcmFt
ZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKTsKLQotICAgIHF1b3RhID0gZXdrX3ZpZXdf
ZXhjZWVkZWRfZGF0YWJhc2VfcXVvdGEobV92aWV3LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAga2l0KGZyYW1lKSwgZGF0YWJhc2VOYW1lLnV0ZjgoKS5kYXRh
KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWxz
LmN1cnJlbnRVc2FnZSgpLCBkZXRhaWxzLmV4cGVjdGVkVXNhZ2UoKSk7Ci0KLSAgICAvKiBpZiBj
bGllbnQgZGlkIG5vdCBzZXQgcXVvdGEsIGFuZCBkYXRhYmFzZSBpcyBiZWluZyBjcmVhdGVkIG5v
dywgdGhlCi0gICAgICogZGVmYXVsdCBxdW90YSBpcyBhcHBsaWVkCi0gICAgICovCi0gICAgaWYg
KCFxdW90YSAmJiAhRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuaGFzRW50cnlGb3JPcmlnaW4o
b3JpZ2luKSkKLSAgICAgICAgcXVvdGEgPSBld2tfc2V0dGluZ3Nfd2ViX2RhdGFiYXNlX2RlZmF1
bHRfcXVvdGFfZ2V0KCk7Ci0KLSAgICBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5zZXRRdW90
YShvcmlnaW4sIHF1b3RhKTsKLX0KLSNlbmRpZgotCi0jaWYgRU5BQkxFKE5PVElGSUNBVElPTlMp
IHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKLU5vdGlmaWNhdGlvbkNsaWVudCogQ2hy
b21lQ2xpZW50RWZsOjpub3RpZmljYXRpb25QcmVzZW50ZXIoKSBjb25zdAotewotICAgIG5vdElt
cGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShJTlBV
VF9UWVBFX0NPTE9SKQotUGFzc093blB0cjxDb2xvckNob29zZXI+IENocm9tZUNsaWVudEVmbDo6
Y3JlYXRlQ29sb3JDaG9vc2VyKENvbG9yQ2hvb3NlckNsaWVudCogY29sb3JDaG9vc2VyQ2xpZW50
LCBjb25zdCBDb2xvciYgaW5pdGlhbENvbG9yKQotewotICAgIGV3a192aWV3X2NvbG9yX2Nob29z
ZXJfbmV3KG1fdmlldywgY29sb3JDaG9vc2VyQ2xpZW50LCBpbml0aWFsQ29sb3IpOwotCi0gICAg
cmV0dXJuIGFkb3B0UHRyKG5ldyBDb2xvckNob29zZXJFZmwodGhpcykpOwotfQotCi12b2lkIENo
cm9tZUNsaWVudEVmbDo6cmVtb3ZlQ29sb3JDaG9vc2VyKCkKLXsKLSAgICBld2tfdmlld19jb2xv
cl9jaG9vc2VyX2Rlc3Ryb3kobV92aWV3KTsKLX0KLQotdm9pZCBDaHJvbWVDbGllbnRFZmw6OnVw
ZGF0ZUNvbG9yQ2hvb3Nlcihjb25zdCBDb2xvciYgY29sb3IpCi17Ci0gICAgZXdrX3ZpZXdfY29s
b3JfY2hvb3Nlcl9jaGFuZ2VkKG1fdmlldywgY29sb3IpOwotfQotI2VuZGlmCi0KLXZvaWQgQ2hy
b21lQ2xpZW50RWZsOjpydW5PcGVuUGFuZWwoRnJhbWUqIGZyYW1lLCBQYXNzUmVmUHRyPEZpbGVD
aG9vc2VyPiBwcnBGaWxlQ2hvb3NlcikKLXsKLSAgICBSZWZQdHI8RmlsZUNob29zZXI+IGNob29z
ZXIgPSBwcnBGaWxlQ2hvb3NlcjsKLSAgICBFaW5hX0xpc3QqIHNlbGVjdGVkRmlsZW5hbWVzID0g
MDsKLSAgICBFd2tfRmlsZV9DaG9vc2VyKiBmaWxlQ2hvb3NlciA9IGV3a19maWxlX2Nob29zZXJf
bmV3KGNob29zZXIuZ2V0KCkpOwotICAgIGJvb2wgY29uZmlybSA9IGV3a192aWV3X3J1bl9vcGVu
X3BhbmVsKG1fdmlldywga2l0KGZyYW1lKSwgZmlsZUNob29zZXIsICZzZWxlY3RlZEZpbGVuYW1l
cyk7Ci0gICAgZXdrX2ZpbGVfY2hvb3Nlcl9mcmVlKGZpbGVDaG9vc2VyKTsKLSAgICBpZiAoIWNv
bmZpcm0pCi0gICAgICAgIHJldHVybjsKLQotICAgIHZvaWQqIGZpbGVuYW1lOwotICAgIFZlY3Rv
cjxTdHJpbmc+IGZpbGVuYW1lczsKLSAgICBFSU5BX0xJU1RfRlJFRShzZWxlY3RlZEZpbGVuYW1l
cywgZmlsZW5hbWUpIHsKLSAgICAgICAgZmlsZW5hbWVzLmFwcGVuZChTdHJpbmc6OmZyb21VVEY4
KHN0YXRpY19jYXN0PGNoYXIqPihmaWxlbmFtZSkpKTsKLSAgICAgICAgZnJlZShmaWxlbmFtZSk7
Ci0gICAgfQotCi0gICAgaWYgKGNob29zZXItPnNldHRpbmdzKCkuYWxsb3dzTXVsdGlwbGVGaWxl
cykKLSAgICAgICAgY2hvb3Nlci0+Y2hvb3NlRmlsZXMoZmlsZW5hbWVzKTsKLSAgICBlbHNlCi0g
ICAgICAgIGNob29zZXItPmNob29zZUZpbGUoZmlsZW5hbWVzWzBdKTsKLX0KLQotdm9pZCBDaHJv
bWVDbGllbnRFZmw6OnNldEN1cnNvcihjb25zdCBDdXJzb3ImIGN1cnNvcikKLXsKLSAgICBld2tf
dmlld19jdXJzb3Jfc2V0KG1fdmlldywgY3Vyc29yKTsKLX0KLQotdm9pZCBDaHJvbWVDbGllbnRF
Zmw6OnNldEN1cnNvckhpZGRlblVudGlsTW91c2VNb3Zlcyhib29sKQotewotICAgIG5vdEltcGxl
bWVudGVkKCk7Ci19Ci0KLSNpZiBFTkFCTEUoUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpICYmICFV
U0UoUkVRVUVTVF9BTklNQVRJT05fRlJBTUVfVElNRVIpCi12b2lkIENocm9tZUNsaWVudEVmbDo6
c2NoZWR1bGVBbmltYXRpb24oKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0jZW5kaWYK
LQotdm9pZCBDaHJvbWVDbGllbnRFZmw6OmxvYWRJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0
cmluZz4mLCBGaWxlSWNvbkxvYWRlciopCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQot
dm9pZCBDaHJvbWVDbGllbnRFZmw6OmRpc3BhdGNoVmlld3BvcnRQcm9wZXJ0aWVzRGlkQ2hhbmdl
KGNvbnN0IFZpZXdwb3J0QXJndW1lbnRzJiBhcmd1bWVudHMpIGNvbnN0Ci17Ci0gICAgZXdrX3Zp
ZXdfdmlld3BvcnRfYXR0cmlidXRlc19zZXQobV92aWV3LCBhcmd1bWVudHMpOwotfQotCi1ib29s
IENocm9tZUNsaWVudEVmbDo6c2VsZWN0SXRlbVdyaXRpbmdEaXJlY3Rpb25Jc05hdHVyYWwoKQot
ewotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIENocm9tZUNsaWVudEVmbDo6c2VsZWN0SXRl
bUFsaWdubWVudEZvbGxvd3NNZW51V3JpdGluZ0RpcmVjdGlvbigpCi17Ci0gICAgcmV0dXJuIGZh
bHNlOwotfQotCi1ib29sIENocm9tZUNsaWVudEVmbDo6aGFzT3BlbmVkUG9wdXAoKSBjb25zdAot
ewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1QYXNzUmVm
UHRyPFBvcHVwTWVudT4gQ2hyb21lQ2xpZW50RWZsOjpjcmVhdGVQb3B1cE1lbnUoUG9wdXBNZW51
Q2xpZW50KiBjbGllbnQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQb3B1cE1l
bnVFZmwoY2xpZW50KSk7Ci19Ci0KLVBhc3NSZWZQdHI8U2VhcmNoUG9wdXBNZW51PiBDaHJvbWVD
bGllbnRFZmw6OmNyZWF0ZVNlYXJjaFBvcHVwTWVudShQb3B1cE1lbnVDbGllbnQqIGNsaWVudCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNlYXJjaFBvcHVwTWVudUVmbChjbGll
bnQpKTsKLX0KLQotdm9pZCBDaHJvbWVDbGllbnRFZmw6OmF0dGFjaFJvb3RHcmFwaGljc0xheWVy
KEZyYW1lKiwgR3JhcGhpY3NMYXllciogcm9vdExheWVyKQotewotICAgIGV3a192aWV3X3Jvb3Rf
Z3JhcGhpY3NfbGF5ZXJfc2V0KG1fdmlldywgcm9vdExheWVyKTsKLX0KLQotdm9pZCBDaHJvbWVD
bGllbnRFZmw6OnNldE5lZWRzT25lU2hvdERyYXdpbmdTeW5jaHJvbml6YXRpb24oKQotewotICAg
IGV3a192aWV3X21hcmtfZm9yX3N5bmMobV92aWV3KTsKLX0KLQotdm9pZCBDaHJvbWVDbGllbnRF
Zmw6OnNjaGVkdWxlQ29tcG9zaXRpbmdMYXllckZsdXNoKCkKLXsKLSAgICBld2tfdmlld19tYXJr
X2Zvcl9zeW5jKG1fdmlldyk7Ci19Ci0KLUNocm9tZUNsaWVudDo6Q29tcG9zaXRpbmdUcmlnZ2Vy
RmxhZ3MgQ2hyb21lQ2xpZW50RWZsOjphbGxvd2VkQ29tcG9zaXRpbmdUcmlnZ2VycygpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIEFsbFRyaWdnZXJzOwotfQotCi0jaWYgRU5BQkxFKEZVTExTQ1JFRU5f
QVBJKQotYm9vbCBDaHJvbWVDbGllbnRFZmw6OnN1cHBvcnRzRnVsbFNjcmVlbkZvckVsZW1lbnQo
Y29uc3QgV2ViQ29yZTo6RWxlbWVudCogZWxlbWVudCwgYm9vbCB3aXRoS2V5Ym9hcmQpCi17Ci0g
ICAgVU5VU0VEX1BBUkFNKHdpdGhLZXlib2FyZCk7Ci0KLSAgICBpZiAoIWVsZW1lbnQtPmRvY3Vt
ZW50KCkucGFnZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIGVsZW1lbnQt
PmRvY3VtZW50KCkucGFnZSgpLT5zZXR0aW5ncygpLmZ1bGxTY3JlZW5FbmFibGVkKCk7Ci19Ci0K
LXZvaWQgQ2hyb21lQ2xpZW50RWZsOjplbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KFdlYkNvcmU6
OkVsZW1lbnQqIGVsZW1lbnQpCi17Ci0gICAgLy8gS2VlcCBhIHJlZmVyZW5jZSB0byB0aGUgZWxl
bWVudCB0byB1c2UgaXQgbGF0ZXIgaW4KLSAgICAvLyBleGl0RnVsbFNjcmVlbkZvckVsZW1lbnQo
KS4KLSAgICBtX2Z1bGxTY3JlZW5FbGVtZW50ID0gZWxlbWVudDsKLQotICAgIGVsZW1lbnQtPmRv
Y3VtZW50KCkud2Via2l0V2lsbEVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQoZWxlbWVudCk7Ci0g
ICAgZXdrX3ZpZXdfZnVsbHNjcmVlbl9lbnRlcihtX3ZpZXcpOwotICAgIGVsZW1lbnQtPmRvY3Vt
ZW50KCkud2Via2l0RGlkRW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChlbGVtZW50KTsKLX0KLQot
dm9pZCBDaHJvbWVDbGllbnRFZmw6OmV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudChXZWJDb3JlOjpF
bGVtZW50KikKLXsKLSAgICAvLyBUaGUgZWxlbWVudCBwYXNzZWQgaW50byB0aGlzIGZ1bmN0aW9u
IGlzIG5vdCByZWxpYWJsZSwgaS5lLiBpdCBjb3VsZAotICAgIC8vIGJlIG51bGwuIEluIGFkZGl0
aW9uIHRoZSBwYXJhbWV0ZXIgbWF5IGJlIGRpc2FwcGVhcmluZyBpbiB0aGUgZnV0dXJlLgotICAg
IC8vIFNvIHdlIHVzZSB0aGUgcmVmZXJlbmNlIHRvIHRoZSBlbGVtZW50IHdlIHNhdmVkIGFib3Zl
LgotICAgIEFTU0VSVChtX2Z1bGxTY3JlZW5FbGVtZW50KTsKLQotICAgIG1fZnVsbFNjcmVlbkVs
ZW1lbnQtPmRvY3VtZW50KCkud2Via2l0V2lsbEV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudChtX2Z1
bGxTY3JlZW5FbGVtZW50LmdldCgpKTsKLSAgICBld2tfdmlld19mdWxsc2NyZWVuX2V4aXQobV92
aWV3KTsKLSAgICBtX2Z1bGxTY3JlZW5FbGVtZW50LT5kb2N1bWVudCgpLndlYmtpdERpZEV4aXRG
dWxsU2NyZWVuRm9yRWxlbWVudChtX2Z1bGxTY3JlZW5FbGVtZW50LmdldCgpKTsKLQotICAgIG1f
ZnVsbFNjcmVlbkVsZW1lbnQuY2xlYXIoKTsKLX0KLSNlbmRpZgotCi0jaWYgVVNFKFRJTEVEX0JB
Q0tJTkdfU1RPUkUpCi12b2lkIENocm9tZUNsaWVudEVmbDo6ZGVsZWdhdGVkU2Nyb2xsUmVxdWVz
dGVkKGNvbnN0IEludFBvaW50JikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi1JbnRS
ZWN0IENocm9tZUNsaWVudEVmbDo6dmlzaWJsZVJlY3RGb3JUaWxlZEJhY2tpbmdTdG9yZSgpIGNv
bnN0Ci17Ci0gICAgV2ViQ29yZTo6RmxvYXRSZWN0IHJlY3QgPSBld2tfdmlld19wYWdlX3JlY3Rf
Z2V0KG1fdmlldyk7Ci0gICAgY29uc3QgRXZhc19PYmplY3QqIGZyYW1lID0gZXdrX3ZpZXdfZnJh
bWVfbWFpbl9nZXQobV92aWV3KTsKLQotICAgIGludCB4LCB5OwotICAgIGV3a19mcmFtZV9zY3Jv
bGxfcG9zX2dldChmcmFtZSwgJngsICZ5KTsKLSAgICByZXR1cm4gSW50UmVjdCh4LCB5LCByZWN0
LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpOwotfQotI2VuZGlmCi0KLX0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oIGIvU291cmNl
L1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDQ5ZWU4NDAuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9l
ZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmgKKysrIC9kZXYvbnVsbApAQCAtMSwx
ODcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBIb2xnZXIgSGFucyBQZXRlciBG
cmV5dGhlcgotICogQ29weXJpZ2h0IChDKSAyMDA4IElOZFQgLSBJbnN0aXR1dG8gTm9raWEgZGUg
VGVjbm9sb2dpYQotICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgUHJvRlVTSU9OIGVtYmVkZGVk
IHN5c3RlbXMKLSAqIENvcHlyaWdodCAoQykgMjAwOS0yMDEwIFNhbXN1bmcgRWxlY3Ryb25pY3MK
LSAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNp
ZGlhcnkoLWllcykuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoK
LSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0g
KiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgotICovCi0KLSNpZm5kZWYgQ2hyb21lQ2xpZW50RWZsX2gKLSNkZWZpbmUgQ2hyb21lQ2xp
ZW50RWZsX2gKLQotI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgotI2luY2x1ZGUgIlVSTC5oIgot
I2luY2x1ZGUgIlBvcHVwTWVudS5oIgotCi0jaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCi0j
aW5jbHVkZSAiQ29sb3JDaG9vc2VyLmgiCi0jZW5kaWYKLQotI2lmIEVOQUJMRShOT1RJRklDQVRJ
T05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCi0jaW5jbHVkZSAiTm90aWZpY2F0
aW9uQ2xpZW50LmgiCi0jZW5kaWYKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBDaHJv
bWVDbGllbnRFZmwgZmluYWwgOiBwdWJsaWMgQ2hyb21lQ2xpZW50IHsKLXB1YmxpYzoKLSAgICBl
eHBsaWNpdCBDaHJvbWVDbGllbnRFZmwoRXZhc19PYmplY3QqIHZpZXcpOwotICAgIHZpcnR1YWwg
fkNocm9tZUNsaWVudEVmbCgpOwotCi0gICAgdmlydHVhbCB2b2lkIGNocm9tZURlc3Ryb3llZCgp
IG92ZXJyaWRlOwotCi0gICAgdmlydHVhbCB2b2lkIHNldFdpbmRvd1JlY3QoY29uc3QgRmxvYXRS
ZWN0Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBGbG9hdFJlY3Qgd2luZG93UmVjdCgpIG92ZXJy
aWRlOwotCi0gICAgdmlydHVhbCBGbG9hdFJlY3QgcGFnZVJlY3QoKSBvdmVycmlkZTsKLQotICAg
IHZpcnR1YWwgdm9pZCBmb2N1cygpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB1bmZvY3Vz
KCkgb3ZlcnJpZGU7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgY2FuVGFrZUZvY3VzKEZvY3VzRGlyZWN0
aW9uKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgdGFrZUZvY3VzKEZvY3VzRGlyZWN0aW9u
KSBvdmVycmlkZTsKLQotICAgIHZpcnR1YWwgdm9pZCBmb2N1c2VkRWxlbWVudENoYW5nZWQoRWxl
bWVudCopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBmb2N1c2VkRnJhbWVDaGFuZ2VkKEZy
YW1lKikgb3ZlcnJpZGU7Ci0KLSAgICB2aXJ0dWFsIFBhZ2UqIGNyZWF0ZVdpbmRvdyhGcmFtZSos
IGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmLCBjb25zdCBXaW5kb3dGZWF0dXJlcyYsIGNvbnN0IE5h
dmlnYXRpb25BY3Rpb24mKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2hvdygpIG92ZXJy
aWRlOwotCi0gICAgdmlydHVhbCBib29sIGNhblJ1bk1vZGFsKCkgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCB2b2lkIHJ1bk1vZGFsKCkgb3ZlcnJpZGU7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0VG9v
bGJhcnNWaXNpYmxlKGJvb2wpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCB0b29sYmFyc1Zp
c2libGUoKSBvdmVycmlkZTsKLQotICAgIHZpcnR1YWwgdm9pZCBzZXRTdGF0dXNiYXJWaXNpYmxl
KGJvb2wpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBzdGF0dXNiYXJWaXNpYmxlKCkgb3Zl
cnJpZGU7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0U2Nyb2xsYmFyc1Zpc2libGUoYm9vbCkgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCBib29sIHNjcm9sbGJhcnNWaXNpYmxlKCkgb3ZlcnJpZGU7Ci0K
LSAgICB2aXJ0dWFsIHZvaWQgc2V0TWVudWJhclZpc2libGUoYm9vbCkgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCBib29sIG1lbnViYXJWaXNpYmxlKCkgb3ZlcnJpZGU7Ci0KLSAgICB2b2lkIGNyZWF0
ZVNlbGVjdFBvcHVwKFBvcHVwTWVudUNsaWVudCosIGludCBzZWxlY3RlZCwgY29uc3QgSW50UmVj
dCYpOwotICAgIGJvb2wgZGVzdHJveVNlbGVjdFBvcHVwKCk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQg
c2V0UmVzaXphYmxlKGJvb2wpIG92ZXJyaWRlOwotCi0gICAgdmlydHVhbCB2b2lkIGFkZE1lc3Nh
Z2VUb0NvbnNvbGUoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1l
c3NhZ2UsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIHVuc2lnbmVkIGNvbHVtbk51bWJlciwgY29uc3Qg
U3RyaW5nJiBzb3VyY2VJRCkgb3ZlcnJpZGU7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgY2FuUnVuQmVm
b3JlVW5sb2FkQ29uZmlybVBhbmVsKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIHJ1bkJl
Zm9yZVVubG9hZENvbmZpcm1QYW5lbChjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIEZyYW1lKikgb3Zl
cnJpZGU7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgY2xvc2VXaW5kb3dTb29uKCkgb3ZlcnJpZGU7Ci0K
LSAgICB2aXJ0dWFsIHZvaWQgcnVuSmF2YVNjcmlwdEFsZXJ0KEZyYW1lKiwgY29uc3QgU3RyaW5n
Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIHJ1bkphdmFTY3JpcHRDb25maXJtKEZyYW1l
KiwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIHJ1bkphdmFTY3Jp
cHRQcm9tcHQoRnJhbWUqLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVm
YXVsdFZhbHVlLCBTdHJpbmcmIHJlc3VsdCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNl
dFN0YXR1c2JhclRleHQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29s
IHNob3VsZEludGVycnVwdEphdmFTY3JpcHQoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFdlYkNv
cmU6OktleWJvYXJkVUlNb2RlIGtleWJvYXJkVUlNb2RlKCkgb3ZlcnJpZGU7Ci0KLSAgICB2aXJ0
dWFsIEludFJlY3Qgd2luZG93UmVzaXplclJlY3QoKSBjb25zdCBvdmVycmlkZTsKLQotICAgIHZp
cnR1YWwgdm9pZCBjb250ZW50c1NpemVDaGFuZ2VkKEZyYW1lKiwgY29uc3QgSW50U2l6ZSYpIGNv
bnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgSW50UG9pbnQgc2NyZWVuVG9Sb290Vmlldyhjb25z
dCBJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgSW50UmVjdCByb290Vmll
d1RvU2NyZWVuKGNvbnN0IEludFJlY3QmKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFBs
YXRmb3JtUGFnZUNsaWVudCBwbGF0Zm9ybVBhZ2VDbGllbnQoKSBjb25zdCBvdmVycmlkZTsKLQot
ICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxiYXJzTW9kZURpZENoYW5nZSgpIGNvbnN0IG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgdm9pZCBtb3VzZURpZE1vdmVPdmVyRWxlbWVudChjb25zdCBIaXRUZXN0
UmVzdWx0JiwgdW5zaWduZWQgbW9kaWZpZXJGbGFncykgb3ZlcnJpZGU7Ci0KLSAgICB2aXJ0dWFs
IHZvaWQgc2V0VG9vbFRpcChjb25zdCBTdHJpbmcmLCBUZXh0RGlyZWN0aW9uKSBvdmVycmlkZTsK
LQotICAgIHZpcnR1YWwgdm9pZCBwcmludChGcmFtZSopIG92ZXJyaWRlOwotCi0jaWYgRU5BQkxF
KFNRTF9EQVRBQkFTRSkKLSAgICB2aXJ0dWFsIHZvaWQgZXhjZWVkZWREYXRhYmFzZVF1b3RhKEZy
YW1lKiwgY29uc3QgU3RyaW5nJiwgRGF0YWJhc2VEZXRhaWxzKSBvdmVycmlkZTsKLSNlbmRpZgot
Ci0jaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9O
UykKLSAgICB2aXJ0dWFsIFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkNsaWVudCogbm90aWZpY2F0aW9u
UHJlc2VudGVyKCkgY29uc3Qgb3ZlcnJpZGU7Ci0jZW5kaWYKLQotICAgIHZpcnR1YWwgdm9pZCBy
ZWFjaGVkTWF4QXBwQ2FjaGVTaXplKGludDY0X3Qgc3BhY2VOZWVkZWQpIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgdm9pZCByZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKFNlY3VyaXR5
T3JpZ2luKiwgaW50NjRfdCB0b3RhbFNwYWNlTmVlZGVkKSBvdmVycmlkZTsKLQotICAgIHZpcnR1
YWwgdm9pZCBwb3B1bGF0ZVZpc2l0ZWRMaW5rcygpIG92ZXJyaWRlOwotCi0jaWYgRU5BQkxFKFRP
VUNIX0VWRU5UUykKLSAgICB2aXJ0dWFsIHZvaWQgbmVlZFRvdWNoRXZlbnRzKGJvb2wpIG92ZXJy
aWRlOwotI2VuZGlmCi0KLSAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoUm9vdEdyYXBoaWNzTGF5ZXIo
RnJhbWUqLCBHcmFwaGljc0xheWVyKikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldE5l
ZWRzT25lU2hvdERyYXdpbmdTeW5jaHJvbml6YXRpb24oKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IHZvaWQgc2NoZWR1bGVDb21wb3NpdGluZ0xheWVyRmx1c2goKSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIENvbXBvc2l0aW5nVHJpZ2dlckZsYWdzIGFsbG93ZWRDb21wb3NpdGluZ1RyaWdnZXJzKCkg
Y29uc3Qgb3ZlcnJpZGU7Ci0KLSNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCi0gICAgdmlydHVh
bCBib29sIHN1cHBvcnRzRnVsbFNjcmVlbkZvckVsZW1lbnQoY29uc3QgV2ViQ29yZTo6RWxlbWVu
dCosIGJvb2wgd2l0aEtleWJvYXJkKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZW50ZXJG
dWxsU2NyZWVuRm9yRWxlbWVudChXZWJDb3JlOjpFbGVtZW50Kikgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCB2b2lkIGV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudChXZWJDb3JlOjpFbGVtZW50Kikgb3Zl
cnJpZGU7Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQotICAgIHZpcnR1
YWwgUGFzc093blB0cjxDb2xvckNob29zZXI+IGNyZWF0ZUNvbG9yQ2hvb3NlcihDb2xvckNob29z
ZXJDbGllbnQqLCBjb25zdCBDb2xvciYpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVtb3ZlQ29sb3JD
aG9vc2VyKCk7Ci0gICAgdm9pZCB1cGRhdGVDb2xvckNob29zZXIoY29uc3QgQ29sb3ImKTsKLSNl
bmRpZgotCi0gICAgdmlydHVhbCB2b2lkIHJ1bk9wZW5QYW5lbChGcmFtZSosIFBhc3NSZWZQdHI8
RmlsZUNob29zZXI+KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgbG9hZEljb25Gb3JGaWxl
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYsIEZpbGVJY29uTG9hZGVyKikgb3ZlcnJpZGU7Ci0KLSAg
ICB2aXJ0dWFsIHZvaWQgc2V0Q3Vyc29yKGNvbnN0IEN1cnNvciYpIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdm9pZCBzZXRDdXJzb3JIaWRkZW5VbnRpbE1vdXNlTW92ZXMoYm9vbCkgb3ZlcnJpZGU7
Ci0KLSNpZiBFTkFCTEUoUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpICYmICFVU0UoUkVRVUVTVF9B
TklNQVRJT05fRlJBTUVfVElNRVIpCi0gICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlQW5pbWF0aW9u
KCkgb3ZlcnJpZGU7Ci0jZW5kaWYKLQotICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxSZWN0SW50b1Zp
ZXcoY29uc3QgSW50UmVjdCYpIGNvbnN0IG92ZXJyaWRlIHsgfQotCi0gICAgdmlydHVhbCB2b2lk
IGludmFsaWRhdGVSb290Vmlldyhjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGUgeyB9Ci0gICAgdmly
dHVhbCB2b2lkIGludmFsaWRhdGVDb250ZW50c0FuZFJvb3RWaWV3KGNvbnN0IEludFJlY3QmKSBv
dmVycmlkZSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZUNvbnRlbnRzRm9yU2xvd1Nj
cm9sbChjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGUgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHNjcm9s
bChjb25zdCBJbnRTaXplJiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFJlY3QmKSBvdmVycmlk
ZSB7IH0KLQotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFZpZXdwb3J0UHJvcGVydGllc0RpZENo
YW5nZShjb25zdCBWaWV3cG9ydEFyZ3VtZW50cyYpIGNvbnN0IG92ZXJyaWRlOwotCi0gICAgdmly
dHVhbCBib29sIHNlbGVjdEl0ZW1Xcml0aW5nRGlyZWN0aW9uSXNOYXR1cmFsKCkgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCBib29sIHNlbGVjdEl0ZW1BbGlnbm1lbnRGb2xsb3dzTWVudVdyaXRpbmdE
aXJlY3Rpb24oKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgaGFzT3BlbmVkUG9wdXAoKSBj
b25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8UG9wdXBNZW51PiBjcmVhdGVQ
b3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50KikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBQ
YXNzUmVmUHRyPFNlYXJjaFBvcHVwTWVudT4gY3JlYXRlU2VhcmNoUG9wdXBNZW51KFBvcHVwTWVu
dUNsaWVudCopIGNvbnN0IG92ZXJyaWRlOwotCi0gICAgdmlydHVhbCB2b2lkIG51bVdoZWVsRXZl
bnRIYW5kbGVyc0NoYW5nZWQodW5zaWduZWQpIG92ZXJyaWRlIHsgfQotCi0jaWYgVVNFKFRJTEVE
X0JBQ0tJTkdfU1RPUkUpCi0gICAgdmlydHVhbCB2b2lkIGRlbGVnYXRlZFNjcm9sbFJlcXVlc3Rl
ZChjb25zdCBJbnRQb2ludCYgc2Nyb2xsUG9pbnQpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgSW50
UmVjdCB2aXNpYmxlUmVjdEZvclRpbGVkQmFja2luZ1N0b3JlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0j
ZW5kaWYKLQotICAgIEV2YXNfT2JqZWN0KiBtX3ZpZXc7Ci0gICAgVVJMIG1faG92ZXJlZExpbmtV
Ukw7Ci0jaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQotICAgIFJlZlB0cjxFbGVtZW50PiBtX2Z1
bGxTY3JlZW5FbGVtZW50OwotI2VuZGlmCi19OwotfQotCi0jZW5kaWYgLy8gQ2hyb21lQ2xpZW50
RWZsX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0NvbG9y
Q2hvb3NlckVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9Db2xvckNo
b29zZXJFZmwuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MDAzYmUxLi4wMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0NvbG9yQ2hvb3NlckVm
bC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw2MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChj
KSAyMDEyLCBJbnRlbCBDb3Jwb3JhdGlvbgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZSBtZXQ6Ci0gKgotICogKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIHRoaXMKLSAqICAgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGlj
ZSwKLSAqICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbgotICogICBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqICogTmVpdGhlciB0aGUgbmFtZSBvZiBJ
bnRlbCBDb3Jwb3JhdGlvbiBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMgbWF5Ci0g
KiAgIGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQKLSAqICAgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIgotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UKLSAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRQotICogTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQotICogUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxFKElOUFVU
X1RZUEVfQ09MT1IpCi0KLSNpbmNsdWRlICJDb2xvckNob29zZXJFZmwuaCIKLQotI2luY2x1ZGUg
IkNocm9tZUNsaWVudEVmbC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUNvbG9yQ2hvb3Nl
ckVmbDo6Q29sb3JDaG9vc2VyRWZsKENocm9tZUNsaWVudEVmbCogY2hyb21lQ2xpZW50KQotICAg
IDogbV9jaHJvbWVDbGllbnQoY2hyb21lQ2xpZW50KQotewotICAgIEFTU0VSVChtX2Nocm9tZUNs
aWVudCk7Ci19Ci0KLUNvbG9yQ2hvb3NlckVmbDo6fkNvbG9yQ2hvb3NlckVmbCgpCi17Ci19Ci0K
LXZvaWQgQ29sb3JDaG9vc2VyRWZsOjpzZXRTZWxlY3RlZENvbG9yKGNvbnN0IENvbG9yJiBjb2xv
cikKLXsKLSAgICBtX2Nocm9tZUNsaWVudC0+dXBkYXRlQ29sb3JDaG9vc2VyKGNvbG9yKTsKLX0K
LQotdm9pZCBDb2xvckNob29zZXJFZmw6OmVuZENob29zZXIoKQotewotICAgIG1fY2hyb21lQ2xp
ZW50LT5yZW1vdmVDb2xvckNob29zZXIoKTsKLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKElO
UFVUX1RZUEVfQ09MT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3Vw
cG9ydC9Db2xvckNob29zZXJFZmwuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0
L0NvbG9yQ2hvb3NlckVmbC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1N2VlMzdk
Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0NvbG9yQ2hv
b3NlckVmbC5oCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoYykgMjAxMiwgSW50ZWwgQ29ycG9yYXRpb24KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUgbWV0OgotICoKLSAqICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzCi0gKiAgIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBu
b3RpY2UsCi0gKiAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24KLSAqICAgYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgSW50ZWwgQ29ycG9yYXRpb24gbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzIG1h
eQotICogICBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0Ci0gKiAgIHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
LSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFCi0gKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUKLSAqIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKLSAqIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgQ29sb3JDaG9vc2VyRWZsX2gKLSNkZWZpbmUg
Q29sb3JDaG9vc2VyRWZsX2gKLQotI2luY2x1ZGUgIkNvbG9yLmgiCi0jaW5jbHVkZSAiQ29sb3JD
aG9vc2VyLmgiCi0KLSNpbmNsdWRlIDxFdmFzLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
Y2xhc3MgQ2hyb21lQ2xpZW50RWZsOwotCi1jbGFzcyBDb2xvckNob29zZXJFZmwgOiBwdWJsaWMg
Q29sb3JDaG9vc2VyIHsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBDb2xvckNob29zZXJFZmwoQ2hy
b21lQ2xpZW50RWZsKik7Ci0gICAgfkNvbG9yQ2hvb3NlckVmbCgpOwotCi0gICAgLy8gQ29sb3JD
aG9vc2VyIGltcGxlbWVudGF0aW9uLgotICAgIHZpcnR1YWwgdm9pZCBzZXRTZWxlY3RlZENvbG9y
KGNvbnN0IENvbG9yJik7Ci0gICAgdmlydHVhbCB2b2lkIGVuZENob29zZXIoKTsKLQotcHJpdmF0
ZToKLSAgICBDaHJvbWVDbGllbnRFZmwqIG1fY2hyb21lQ2xpZW50OwotfTsKLQotfQotCi0jZW5k
aWYgLy8gQ29sb3JDaG9vc2VyRWZsX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dl
YkNvcmVTdXBwb3J0L0NvbnRleHRNZW51Q2xpZW50RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZs
L1dlYkNvcmVTdXBwb3J0L0NvbnRleHRNZW51Q2xpZW50RWZsLmNwcApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMWI0YWE1ZC4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9X
ZWJDb3JlU3VwcG9ydC9Db250ZXh0TWVudUNsaWVudEVmbC5jcHAKKysrIC9kZXYvbnVsbApAQCAt
MSw5MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgSWdhbGlhIFMuTC4KLSAqIENv
cHlyaWdodCAoQykgMjAxMCBQcm9GVVNJT04gZW1iZWRkZWQgc3lzdGVtcwotICogQ29weXJpZ2h0
IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkNvbnRleHRN
ZW51Q2xpZW50RWZsLmgiCi0KLSNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKLQotI2luY2x1ZGUg
IkNvbnRleHRNZW51LmgiCi0jaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgotI2luY2x1ZGUgIlVS
TC5oIgotI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0jaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi12b2lkIENvbnRleHRNZW51Q2xpZW50RWZs
Ojpjb250ZXh0TWVudURlc3Ryb3llZCgpCi17Ci0gICAgZGVsZXRlIHRoaXM7Ci19Ci0KLVBhc3NP
d25QdHI8Q29udGV4dE1lbnU+IENvbnRleHRNZW51Q2xpZW50RWZsOjpjdXN0b21pemVNZW51KFBh
c3NPd25QdHI8Q29udGV4dE1lbnU+IG1lbnUpCi17Ci0gICAgLy8gV2UgaWdub3JlIHRoaXMgY2xp
ZW50IGNhbGxiYWNrIGFuZCBkbyBjb250ZXh0IG1lbnUgY3VzdG9taXphdGlvbiB3aGVuIHdlIGFy
ZSB0b2xkIHRvIHNob3cgdGhlIG1lbnUuCi0gICAgcmV0dXJuIG1lbnU7Ci19Ci0KLXZvaWQgQ29u
dGV4dE1lbnVDbGllbnRFZmw6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKENvbnRleHRNZW51SXRl
bSosIGNvbnN0IENvbnRleHRNZW51KikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12
b2lkIENvbnRleHRNZW51Q2xpZW50RWZsOjpkb3dubG9hZFVSTChjb25zdCBVUkwmKQotewotICAg
IG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgQ29udGV4dE1lbnVDbGllbnRFZmw6Omxvb2tV
cEluRGljdGlvbmFyeShGcmFtZSopCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9p
ZCBDb250ZXh0TWVudUNsaWVudEVmbDo6c3BlYWsoY29uc3QgU3RyaW5nJikKLXsKLSAgICBub3RJ
bXBsZW1lbnRlZCgpOwotfQotCi1ib29sIENvbnRleHRNZW51Q2xpZW50RWZsOjppc1NwZWFraW5n
KCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQotdm9p
ZCBDb250ZXh0TWVudUNsaWVudEVmbDo6c3RvcFNwZWFraW5nKCkKLXsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOwotfQotCi12b2lkIENvbnRleHRNZW51Q2xpZW50RWZsOjpzZWFyY2hXaXRoR29vZ2xl
KGNvbnN0IEZyYW1lKikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi19Ci0KLSNlbmRp
ZiAvLyBFTkFCTEUoQ09OVEVYVF9NRU5VUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZs
L1dlYkNvcmVTdXBwb3J0L0NvbnRleHRNZW51Q2xpZW50RWZsLmggYi9Tb3VyY2UvV2ViS2l0L2Vm
bC9XZWJDb3JlU3VwcG9ydC9Db250ZXh0TWVudUNsaWVudEVmbC5oCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAzZmU1NmU1Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dl
YkNvcmVTdXBwb3J0L0NvbnRleHRNZW51Q2xpZW50RWZsLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1
OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgSWdhbGlhIFMuTC4KLSAqIENvcHly
aWdodCAoQykgMjAxMCBQcm9GVVNJT04gZW1iZWRkZWQgc3lzdGVtcwotICogQ29weXJpZ2h0IChD
KSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
Ci0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2lmbmRlZiBDb250ZXh0TWVudUNsaWVudEVmbF9oCi0jZGVmaW5lIENv
bnRleHRNZW51Q2xpZW50RWZsX2gKLQotI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQotCi0jaW5j
bHVkZSAiQ29udGV4dE1lbnVDbGllbnQuaCIKLQotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIENvbnRleHRNZW51OwotCi1jbGFzcyBDb250
ZXh0TWVudUNsaWVudEVmbCA6IHB1YmxpYyBDb250ZXh0TWVudUNsaWVudCB7Ci1wdWJsaWM6Ci0g
ICAgdmlydHVhbCB2b2lkIGNvbnRleHRNZW51RGVzdHJveWVkKCk7Ci0KLSAgICB2aXJ0dWFsIFBh
c3NPd25QdHI8Q29udGV4dE1lbnU+IGN1c3RvbWl6ZU1lbnUoUGFzc093blB0cjxDb250ZXh0TWVu
dT4pOwotICAgIHZpcnR1YWwgdm9pZCBjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250ZXh0TWVu
dUl0ZW0qLCBjb25zdCBDb250ZXh0TWVudSopOwotCi0gICAgdmlydHVhbCB2b2lkIGRvd25sb2Fk
VVJMKGNvbnN0IFVSTCYpOwotICAgIHZpcnR1YWwgdm9pZCBsb29rVXBJbkRpY3Rpb25hcnkoRnJh
bWUqKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3BlYWsoY29uc3QgU3RyaW5nJik7Ci0gICAgdmlydHVh
bCBib29sIGlzU3BlYWtpbmcoKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3RvcFNwZWFraW5nKCk7Ci0g
ICAgdmlydHVhbCB2b2lkIHNlYXJjaFdpdGhHb29nbGUoY29uc3QgRnJhbWUqKTsKLX07Ci19Ci0K
LSNlbmRpZiAvLyBFTkFCTEUoQ09OVEVYVF9NRU5VUykKLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRGV2aWNlTW90aW9uQ2xpZW50RWZsLmNwcCBi
L1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0RldmljZU1vdGlvbkNsaWVudEVmbC5j
cHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhkNDViOWQuLjAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRGV2aWNlTW90aW9uQ2xpZW50RWZsLmNw
cAorKysgL2Rldi9udWxsCkBAIC0xLDcyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTEgU2Ftc3VuZyBFbGVjdHJvbmljcwotICoKLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcu
aCIKLQotI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCi0jaW5jbHVkZSAiRGV2aWNlTW90
aW9uQ2xpZW50RWZsLmgiCi0KLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLURldmljZU1vdGlvbkNsaWVudEVmbDo6RGV2aWNlTW90aW9uQ2xpZW50
RWZsKCkKLXsKLX0KLQotRGV2aWNlTW90aW9uQ2xpZW50RWZsOjp+RGV2aWNlTW90aW9uQ2xpZW50
RWZsKCkKLXsKLX0KLQotdm9pZCBEZXZpY2VNb3Rpb25DbGllbnRFZmw6OmRldmljZU1vdGlvbkNv
bnRyb2xsZXJEZXN0cm95ZWQoKQotewotICAgIGRlbGV0ZSB0aGlzOwotfQotCi12b2lkIERldmlj
ZU1vdGlvbkNsaWVudEVmbDo6c2V0Q29udHJvbGxlcihEZXZpY2VNb3Rpb25Db250cm9sbGVyKiBj
b250cm9sbGVyKQotewotICAgIG1fY29udHJvbGxlciA9IGNvbnRyb2xsZXI7Ci19Ci0KLXZvaWQg
RGV2aWNlTW90aW9uQ2xpZW50RWZsOjpzdGFydFVwZGF0aW5nKCkKLXsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOwotfQotCi12b2lkIERldmljZU1vdGlvbkNsaWVudEVmbDo6c3RvcFVwZGF0aW5nKCkK
LXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi1EZXZpY2VNb3Rpb25EYXRhKiBEZXZpY2VN
b3Rpb25DbGllbnRFZmw6Omxhc3RNb3Rpb24oKSBjb25zdAotewotICAgIG5vdEltcGxlbWVudGVk
KCk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLX0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRGV2aWNlTW90aW9uQ2xpZW50RWZsLmggYi9Tb3VyY2Uv
V2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9EZXZpY2VNb3Rpb25DbGllbnRFZmwuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTAzZGJiZC4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9EZXZpY2VNb3Rpb25DbGllbnRFZmwuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDQ4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgU2Ftc3VuZyBF
bGVjdHJvbmljcwotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0g
KiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICog
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KLSAqCi0gKi8KLSNpZm5kZWYgRGV2aWNlTW90aW9uQ2xpZW50RWZsX2gKLSNkZWZpbmUgRGV2
aWNlTW90aW9uQ2xpZW50RWZsX2gKLQotI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCi0K
LSNpbmNsdWRlICJEZXZpY2VNb3Rpb25DbGllbnQuaCIKLSNpbmNsdWRlICJEZXZpY2VNb3Rpb25E
YXRhLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgRGV2aWNlTW90aW9uQ2xpZW50
RWZsIDogcHVibGljIERldmljZU1vdGlvbkNsaWVudCB7Ci1wdWJsaWM6Ci0gICAgRGV2aWNlTW90
aW9uQ2xpZW50RWZsKCk7Ci0gICAgdmlydHVhbCB+RGV2aWNlTW90aW9uQ2xpZW50RWZsKCk7Ci0K
LSAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udHJvbGxlcihEZXZpY2VNb3Rpb25Db250cm9sbGVyKik7
Ci0gICAgdmlydHVhbCB2b2lkIHN0YXJ0VXBkYXRpbmcoKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3Rv
cFVwZGF0aW5nKCk7Ci0gICAgdmlydHVhbCBEZXZpY2VNb3Rpb25EYXRhKiBsYXN0TW90aW9uKCkg
Y29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIGRldmljZU1vdGlvbkNvbnRyb2xsZXJEZXN0cm95ZWQo
KTsKLQotcHJpdmF0ZToKLSAgICBEZXZpY2VNb3Rpb25Db250cm9sbGVyKiBtX2NvbnRyb2xsZXI7
Ci19OwotCi19IC8vIG5hbWVzcGVjZSBXZWJDb3JlCi0KLSNlbmRpZgotI2VuZGlmIC8vIERldmlj
ZU1vdGlvbkNsaWVudEVmbF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3Jl
U3VwcG9ydC9EZXZpY2VPcmllbnRhdGlvbkNsaWVudEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Vm
bC9XZWJDb3JlU3VwcG9ydC9EZXZpY2VPcmllbnRhdGlvbkNsaWVudEVmbC5jcHAKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJkYTdkZmEuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktp
dC9lZmwvV2ViQ29yZVN1cHBvcnQvRGV2aWNlT3JpZW50YXRpb25DbGllbnRFZmwuY3BwCisrKyAv
ZGV2L251bGwKQEAgLTEsNzIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBTYW1z
dW5nIEVsZWN0cm9uaWNzCi0gKgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0j
aWYgRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikKLSNpbmNsdWRlICJEZXZpY2VPcmllbnRhdGlv
bkNsaWVudEVmbC5oIgotCi0jaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1EZXZpY2VPcmllbnRhdGlvbkNsaWVudEVmbDo6RGV2aWNlT3JpZW50YXRp
b25DbGllbnRFZmwoKQotewotfQotCi1EZXZpY2VPcmllbnRhdGlvbkNsaWVudEVmbDo6fkRldmlj
ZU9yaWVudGF0aW9uQ2xpZW50RWZsKCkKLXsKLX0KLQotdm9pZCBEZXZpY2VPcmllbnRhdGlvbkNs
aWVudEVmbDo6ZGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyRGVzdHJveWVkKCkKLXsKLSAgICBk
ZWxldGUgdGhpczsKLX0KLQotdm9pZCBEZXZpY2VPcmllbnRhdGlvbkNsaWVudEVmbDo6c2V0Q29u
dHJvbGxlcihEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIqIGNvbnRyb2xsZXIpCi17Ci0gICAg
bV9jb250cm9sbGVyID0gY29udHJvbGxlcjsKLX0KLQotdm9pZCBEZXZpY2VPcmllbnRhdGlvbkNs
aWVudEVmbDo6c3RhcnRVcGRhdGluZygpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQot
dm9pZCBEZXZpY2VPcmllbnRhdGlvbkNsaWVudEVmbDo6c3RvcFVwZGF0aW5nKCkKLXsKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOwotfQotCi1EZXZpY2VPcmllbnRhdGlvbkRhdGEqIERldmljZU9yaWVu
dGF0aW9uQ2xpZW50RWZsOjpsYXN0T3JpZW50YXRpb24oKSBjb25zdAotewotICAgIG5vdEltcGxl
bWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLX0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRGV2aWNlT3JpZW50YXRpb25DbGllbnRFZmwu
aCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0RldmljZU9yaWVudGF0aW9uQ2xp
ZW50RWZsLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBiYjE5N2MuLjAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRGV2aWNlT3JpZW50YXRpb25D
bGllbnRFZmwuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTEgU2Ftc3VuZyBFbGVjdHJvbmljcwotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICog
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICog
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqCi0gKi8KLSNpZm5kZWYgRGV2aWNlT3JpZW50YXRp
b25DbGllbnRFZmxfaAotI2RlZmluZSBEZXZpY2VPcmllbnRhdGlvbkNsaWVudEVmbF9oCi0KLSNp
bmNsdWRlICJEZXZpY2VPcmllbnRhdGlvbkNsaWVudC5oIgotI2luY2x1ZGUgIkRldmljZU9yaWVu
dGF0aW9uRGF0YS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIERldmljZU9yaWVu
dGF0aW9uQ2xpZW50RWZsIDogcHVibGljIERldmljZU9yaWVudGF0aW9uQ2xpZW50IHsKLXB1Ymxp
YzoKLSAgICBEZXZpY2VPcmllbnRhdGlvbkNsaWVudEVmbCgpOwotICAgIHZpcnR1YWwgfkRldmlj
ZU9yaWVudGF0aW9uQ2xpZW50RWZsKCk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udHJvbGxl
cihEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIqKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3RhcnRV
cGRhdGluZygpOwotICAgIHZpcnR1YWwgdm9pZCBzdG9wVXBkYXRpbmcoKTsKLSAgICB2aXJ0dWFs
IERldmljZU9yaWVudGF0aW9uRGF0YSogbGFzdE9yaWVudGF0aW9uKCkgY29uc3Q7Ci0gICAgdmly
dHVhbCB2b2lkIGRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlckRlc3Ryb3llZCgpOwotCi1wcml2
YXRlOgotICAgIERldmljZU9yaWVudGF0aW9uQ29udHJvbGxlciogbV9jb250cm9sbGVyOwotfTsK
LQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRGV2aWNlT3JpZW50YXRpb25D
bGllbnRFZmxfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQv
RHJhZ0NsaWVudEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9EcmFn
Q2xpZW50RWZsLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWNmN2U1MC4uMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50RWZs
LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDY4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDcgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykg
MjAwOCBJTmRUIC0gSW5zdGl0dXRvIE5va2lhIGRlIFRlY25vbG9naWEKLSAqIENvcHlyaWdodCAo
QykgMjAwOS0yMDEwIFByb0ZVU0lPTiBlbWJlZGRlZCBzeXN0ZW1zCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDktMjAxMCBTYW1zdW5nIEVsZWN0cm9uaWNzCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJEcmFnQ2xp
ZW50RWZsLmgiCi0KLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgotCi11c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi12b2lkIERyYWdDbGllbnRFZmw6
OndpbGxQZXJmb3JtRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKERyYWdEZXN0aW5hdGlvbkFjdGlvbiwg
RHJhZ0RhdGEmKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgRHJhZ0NsaWVu
dEVmbDo6d2lsbFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKERyYWdTb3VyY2VBY3Rpb24sIGNvbnN0
IEludFBvaW50JiwgRGF0YVRyYW5zZmVyJikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQot
Ci1EcmFnRGVzdGluYXRpb25BY3Rpb24gRHJhZ0NsaWVudEVmbDo6YWN0aW9uTWFza0ZvckRyYWco
RHJhZ0RhdGEmKQotewotICAgIHJldHVybiBEcmFnRGVzdGluYXRpb25BY3Rpb25Bbnk7Ci19Ci0K
LURyYWdTb3VyY2VBY3Rpb24gRHJhZ0NsaWVudEVmbDo6ZHJhZ1NvdXJjZUFjdGlvbk1hc2tGb3JQ
b2ludChjb25zdCBJbnRQb2ludCYpCi17Ci0gICAgcmV0dXJuIERyYWdTb3VyY2VBY3Rpb25Bbnk7
Ci19Ci0KLXZvaWQgRHJhZ0NsaWVudEVmbDo6c3RhcnREcmFnKERyYWdJbWFnZVJlZiwgY29uc3Qg
SW50UG9pbnQmLCBjb25zdCBJbnRQb2ludCYsIERhdGFUcmFuc2ZlciYsIEZyYW1lJiwgYm9vbCkK
LXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIERyYWdDbGllbnRFZmw6OmRyYWdD
b250cm9sbGVyRGVzdHJveWVkKCkKLXsKLSAgICBkZWxldGUgdGhpczsKLX0KLQotfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHJhZ0NsaWVudEVmbC5oIGIv
U291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHJhZ0NsaWVudEVmbC5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2OTg3YzQ2Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJL
aXQvZWZsL1dlYkNvcmVTdXBwb3J0L0RyYWdDbGllbnRFZmwuaAorKysgL2Rldi9udWxsCkBAIC0x
LDUzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAwNyBIb2xnZXIgSGFucyBQZXRlciBG
cmV5dGhlcgotICogQ29weXJpZ2h0IChDKSAyMDA4IElOZFQgLSBJbnN0aXR1dG8gTm9raWEgZGUg
VGVjbm9sb2dpYQotICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgUHJvRlVTSU9OIGVtYmVkZGVk
IHN5c3RlbXMKLSAqIENvcHlyaWdodCAoQykgMjAwOS0yMDEwIFNhbXN1bmcgRWxlY3Ryb25pY3MK
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlLCBJbmMu
ICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZy
b20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09O
VFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIERy
YWdDbGllbnRFZmxfaAotI2RlZmluZSBEcmFnQ2xpZW50RWZsX2gKLQotI2luY2x1ZGUgIkRyYWdD
bGllbnQuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBEcmFnQ2xpZW50RWZsIDog
cHVibGljIFdlYkNvcmU6OkRyYWdDbGllbnQgewotcHVibGljOgotICAgIHZpcnR1YWwgdm9pZCBk
cmFnQ29udHJvbGxlckRlc3Ryb3llZCgpOwotCi0gICAgdmlydHVhbCB2b2lkIHdpbGxQZXJmb3Jt
RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbiwgV2Vi
Q29yZTo6RHJhZ0RhdGEmKTsKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbFBlcmZvcm1EcmFnU291cmNl
QWN0aW9uKFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50
JiwgV2ViQ29yZTo6RGF0YVRyYW5zZmVyJik7Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpEcmFnRGVz
dGluYXRpb25BY3Rpb24gYWN0aW9uTWFza0ZvckRyYWcoV2ViQ29yZTo6RHJhZ0RhdGEmKTsKLSAg
ICB2aXJ0dWFsIFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24gZHJhZ1NvdXJjZUFjdGlvbk1hc2tG
b3JQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgd2luZG93UG9pbnQpOwotICAgIHZpcnR1
YWwgdm9pZCBzdGFydERyYWcoV2ViQ29yZTo6RHJhZ0ltYWdlUmVmLCBjb25zdCBXZWJDb3JlOjpJ
bnRQb2ludCYgZHJhZ0ltYWdlT3JpZ2luLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZXZlbnRQ
b3MsIFdlYkNvcmU6OkRhdGFUcmFuc2ZlciYsIFdlYkNvcmU6OkZyYW1lJiwgYm9vbCBsaW5rRHJh
ZyA9IGZhbHNlKTsKLX07Ci0KLX0KLQotI2VuZGlmIC8vIERyYWdDbGllbnRFZmxfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBw
b3J0RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJU
cmVlU3VwcG9ydEVmbC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk2N2Y4MTcu
LjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRl
clRyZWVTdXBwb3J0RWZsLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDc1NCArMCwwIEBACi0vKgot
ICAgIENvcHlyaWdodCAoQykgMjAxMSBQcm9GVVNJT04gZW1iZWRkZWQgc3lzdGVtcwotICAgIENv
cHlyaWdodCAoQykgMjAxMSBTYW1zdW5nIEVsZWN0cm9uaWNzCi0gICAgQ29weXJpZ2h0IChDKSAy
MDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICAgIENvcHlyaWdo
dCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0KLSAgICBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0g
ICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAg
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAgICB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLAotICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIkR1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5oIgotCi0jaW5j
bHVkZSAiRnJhbWVMb2FkZXJDbGllbnRFZmwuaCIKLSNpbmNsdWRlICJld2tfZnJhbWVfcHJpdmF0
ZS5oIgotI2luY2x1ZGUgImV3a19oaXN0b3J5X3ByaXZhdGUuaCIKLSNpbmNsdWRlICJld2tfcHJp
dmF0ZS5oIgotI2luY2x1ZGUgImV3a192aWV3X3ByaXZhdGUuaCIKLQotI2luY2x1ZGUgPEFQSUNh
c3QuaD4KLSNpbmNsdWRlIDxBbmltYXRpb25Db250cm9sbGVyLmg+Ci0jaW5jbHVkZSA8RE9NV2lu
ZG93Lmg+Ci0jaW5jbHVkZSA8RG9jdW1lbnRMb2FkZXIuaD4KLSNpbmNsdWRlIDxFZGl0b3IuaD4K
LSNpbmNsdWRlIDxFZGl0b3JDbGllbnRFZmwuaD4KLSNpbmNsdWRlIDxFaW5hLmg+Ci0jaW5jbHVk
ZSA8RXZhcy5oPgotI2luY2x1ZGUgPEZpbmRPcHRpb25zLmg+Ci0jaW5jbHVkZSA8RmxvYXRTaXpl
Lmg+Ci0jaW5jbHVkZSA8Rm9jdXNDb250cm9sbGVyLmg+Ci0jaW5jbHVkZSA8RnJhbWVMb2FkZXIu
aD4KLSNpbmNsdWRlIDxGcmFtZVNlbGVjdGlvbi5oPgotI2luY2x1ZGUgPEZyYW1lVmlldy5oPgot
I2luY2x1ZGUgPEhUTUxJbnB1dEVsZW1lbnQuaD4KLSNpbmNsdWRlIDxJbnNwZWN0b3JDb250cm9s
bGVyLmg+Ci0jaW5jbHVkZSA8SW50UmVjdC5oPgotI2luY2x1ZGUgPEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbi5oPgotI2luY2x1ZGUgPEpTRE9NV2luZG93Lmg+Ci0jaW5jbHVkZSA8SlNFbGVtZW50Lmg+
Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvT3BhcXVlSlNTdHJpbmcuaD4KLSNpbmNsdWRlIDxN
ZW1vcnlDYWNoZS5oPgotI2luY2x1ZGUgPE11dGF0aW9uT2JzZXJ2ZXIuaD4KLSNpbmNsdWRlIDxQ
YWdlR3JvdXAuaD4KLSNpbmNsdWRlIDxQcmludENvbnRleHQuaD4KLSNpbmNsdWRlIDxSZW5kZXJU
cmVlQXNUZXh0Lmg+Ci0jaW5jbHVkZSA8UmVzb3VyY2VMb2FkU2NoZWR1bGVyLmg+Ci0jaW5jbHVk
ZSA8UnVudGltZUVuYWJsZWRGZWF0dXJlcy5oPgotI2luY2x1ZGUgPFNjaGVtZVJlZ2lzdHJ5Lmg+
Ci0jaW5jbHVkZSA8U2NyaXB0Q29udHJvbGxlci5oPgotI2luY2x1ZGUgPFNldHRpbmdzLmg+Ci0j
aW5jbHVkZSA8VGV4dEl0ZXJhdG9yLmg+Ci0jaW5jbHVkZSA8VmlzaWJsZVNlbGVjdGlvbi5oPgot
I2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+Ci0jaW5jbHVkZSA8YmluZGluZ3MvanMv
R0NDb250cm9sbGVyLmg+Ci0jaW5jbHVkZSA8aGlzdG9yeS9IaXN0b3J5SXRlbS5oPgotI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0KLSNpZiBFTkFCTEUoR0VPTE9DQVRJT04pCi0jaW5jbHVkZSA8
R2VvbG9jYXRpb25DbGllbnRNb2NrLmg+Ci0jaW5jbHVkZSA8R2VvbG9jYXRpb25Db250cm9sbGVy
Lmg+Ci0jaW5jbHVkZSA8R2VvbG9jYXRpb25FcnJvci5oPgotI2luY2x1ZGUgPEdlb2xvY2F0aW9u
UG9zaXRpb24uaD4KLSNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KLSNlbmRpZgotCi0jaWYg
SEFWRShBQ0NFU1NJQklMSVRZKQotI2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKLSNpbmNsdWRl
ICJBY2Nlc3NpYmlsaXR5T2JqZWN0LmgiCi0jaW5jbHVkZSAiV2ViS2l0QWNjZXNzaWJsZVdyYXBw
ZXJBdGsuaCIKLSNlbmRpZgotCi0jZGVmaW5lIERSVF9TVVBQT1JUX0ZSQU1FX0dFVF9PUl9SRVRV
Uk4oZXdrRnJhbWUsIGZyYW1lLCAuLi4pIFwKLSAgICBXZWJDb3JlOjpGcmFtZSogZnJhbWUgPSBF
V0tQcml2YXRlOjpjb3JlRnJhbWUoZXdrRnJhbWUpOyAgXAotICAgIGlmICghZnJhbWUpICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHJldHVy
biBfX1ZBX0FSR1NfXzsKLQotI2RlZmluZSBEUlRfU1VQUFJUX1BBR0VfR0VUX09SX1JFVFVSTihl
d2tWaWV3LCBwYWdlLCAuLi4pIFwKLSAgICBXZWJDb3JlOjpQYWdlKiBwYWdlID0gRVdLUHJpdmF0
ZTo6Y29yZVBhZ2UoZXdrVmlldyk7ICBcCi0gICAgaWYgKCFwYWdlKSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICByZXR1cm4gX19WQV9BUkdTX187
Ci0KLWJvb2wgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpzX2RydFJ1biA9IGZhbHNlOwotCi12
b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6c2V0RHVtcFJlbmRlclRyZWVNb2RlRW5hYmxl
ZChib29sIGVuYWJsZWQpCi17Ci0gICAgc19kcnRSdW4gPSBlbmFibGVkOwotfQotCi1ib29sIER1
bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6ZHVtcFJlbmRlclRyZWVNb2RlRW5hYmxlZCgpCi17Ci0g
ICAgcmV0dXJuIHNfZHJ0UnVuOwotfQotCi1ib29sIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6
Y2FsbFNob3VsZENsb3NlT25XZWJWaWV3KEV2YXNfT2JqZWN0KiBld2tGcmFtZSkKLXsKLSAgICBE
UlRfU1VQUE9SVF9GUkFNRV9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBmcmFtZSwgZmFsc2UpOwot
Ci0gICAgcmV0dXJuIGZyYW1lLT5sb2FkZXIoKS5zaG91bGRDbG9zZSgpOwotfQotCi12b2lkIER1
bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6Y2xlYXJGcmFtZU5hbWUoRXZhc19PYmplY3QqIGV3a0Zy
YW1lKQotewotICAgIERSVF9TVVBQT1JUX0ZSQU1FX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIGZy
YW1lKTsKLQotICAgIGZyYW1lLT50cmVlKCkuY2xlYXJOYW1lKCk7Ci19Ci0KLXZvaWQgRHVtcFJl
bmRlclRyZWVTdXBwb3J0RWZsOjpjbGVhck9wZW5lcihFdmFzX09iamVjdCogZXdrRnJhbWUpCi17
Ci0gICAgRFJUX1NVUFBPUlRfRlJBTUVfR0VUX09SX1JFVFVSTihld2tGcmFtZSwgZnJhbWUpOwot
Ci0gICAgZnJhbWUtPmxvYWRlcigpLnNldE9wZW5lcigwKTsKLX0KLQotU3RyaW5nIER1bXBSZW5k
ZXJUcmVlU3VwcG9ydEVmbDo6bGF5ZXJUcmVlQXNUZXh0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tG
cmFtZSkKLXsKLSAgICBEUlRfU1VQUE9SVF9GUkFNRV9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBm
cmFtZSwgU3RyaW5nKCkpOwotCi0gICAgcmV0dXJuIGZyYW1lLT5sYXllclRyZWVBc1RleHQoKTsK
LX0KLQotRWluYV9MaXN0KiBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OmZyYW1lQ2hpbGRyZW4o
Y29uc3QgRXZhc19PYmplY3QqIGV3a0ZyYW1lKQotewotICAgIERSVF9TVVBQT1JUX0ZSQU1FX0dF
VF9PUl9SRVRVUk4oZXdrRnJhbWUsIGZyYW1lLCAwKTsKLQotICAgIEVpbmFfTGlzdCogY2hpbGRG
cmFtZXMgPSAwOwotCi0gICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgZnJhbWUt
PnRyZWUoKS5jaGlsZENvdW50KCk7IGluZGV4KyspIHsKLSAgICAgICAgV2ViQ29yZTo6RnJhbWUg
KmNoaWxkRnJhbWUgPSBmcmFtZS0+dHJlZSgpLmNoaWxkKGluZGV4KTsKLSAgICAgICAgV2ViQ29y
ZTo6RnJhbWVMb2FkZXJDbGllbnRFZmwmIGNsaWVudCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkZy
YW1lTG9hZGVyQ2xpZW50RWZsJj4oY2hpbGRGcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkpOwotCi0g
ICAgICAgIGNoaWxkRnJhbWVzID0gZWluYV9saXN0X2FwcGVuZChjaGlsZEZyYW1lcywgY2xpZW50
LndlYkZyYW1lKCkpOwotICAgIH0KLQotICAgIHJldHVybiBjaGlsZEZyYW1lczsKLX0KLQotV2Vi
Q29yZTo6RnJhbWUqIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6ZnJhbWVQYXJlbnQoY29uc3Qg
RXZhc19PYmplY3QqIGV3a0ZyYW1lKQotewotICAgIERSVF9TVVBQT1JUX0ZSQU1FX0dFVF9PUl9S
RVRVUk4oZXdrRnJhbWUsIGZyYW1lLCAwKTsKLQotICAgIHJldHVybiBmcmFtZS0+dHJlZSgpLnBh
cmVudCgpOwotfQotCi12b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6bGF5b3V0RnJhbWUo
RXZhc19PYmplY3QqIGV3a0ZyYW1lKQotewotICAgIERSVF9TVVBQT1JUX0ZSQU1FX0dFVF9PUl9S
RVRVUk4oZXdrRnJhbWUsIGZyYW1lKTsKLQotICAgIGlmICghZnJhbWUtPnZpZXcoKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgZnJhbWUtPnZpZXcoKS0+bGF5b3V0KCk7Ci19Ci0KLXVuc2lnbmVk
IER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6cGVuZGluZ1VubG9hZEV2ZW50Q291bnQoY29uc3Qg
RXZhc19PYmplY3QqIGV3a0ZyYW1lKQotewotICAgIERSVF9TVVBQT1JUX0ZSQU1FX0dFVF9PUl9S
RVRVUk4oZXdrRnJhbWUsIGZyYW1lLCAwKTsKLQotICAgIHJldHVybiBmcmFtZS0+ZG9jdW1lbnQo
KS0+ZG9tV2luZG93KCktPnBlbmRpbmdVbmxvYWRFdmVudExpc3RlbmVycygpOwotfQotCi1TdHJp
bmcgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpyZW5kZXJUcmVlRHVtcChFdmFzX09iamVjdCog
ZXdrRnJhbWUpCi17Ci0gICAgRFJUX1NVUFBPUlRfRlJBTUVfR0VUX09SX1JFVFVSTihld2tGcmFt
ZSwgZnJhbWUsIFN0cmluZygpKTsKLQotICAgIFdlYkNvcmU6OkZyYW1lVmlldyAqZnJhbWVWaWV3
ID0gZnJhbWUtPnZpZXcoKTsKLQotICAgIGlmIChmcmFtZVZpZXcgJiYgZnJhbWVWaWV3LT5sYXlv
dXRQZW5kaW5nKCkpCi0gICAgICAgIGZyYW1lVmlldy0+bGF5b3V0KCk7Ci0KLSAgICByZXR1cm4g
V2ViQ29yZTo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihmcmFtZSk7Ci19Ci0KLVN0cmluZyBEdW1w
UmVuZGVyVHJlZVN1cHBvcnRFZmw6OnJlc3BvbnNlTWltZVR5cGUoY29uc3QgRXZhc19PYmplY3Qq
IGV3a0ZyYW1lKQotewotICAgIERSVF9TVVBQT1JUX0ZSQU1FX0dFVF9PUl9SRVRVUk4oZXdrRnJh
bWUsIGZyYW1lLCBTdHJpbmcoKSk7Ci0KLSAgICBXZWJDb3JlOjpEb2N1bWVudExvYWRlciAqZG9j
dW1lbnRMb2FkZXIgPSBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKTsKLQotICAgIGlm
ICghZG9jdW1lbnRMb2FkZXIpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLQotICAgIHJldHVy
biBkb2N1bWVudExvYWRlci0+cmVzcG9uc2VNSU1FVHlwZSgpOwotfQotCi1XZWJDb3JlOjpJbnRS
ZWN0IER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6c2VsZWN0aW9uUmVjdGFuZ2xlKGNvbnN0IEV2
YXNfT2JqZWN0KiBld2tGcmFtZSkKLXsKLSAgICBEUlRfU1VQUE9SVF9GUkFNRV9HRVRfT1JfUkVU
VVJOKGV3a0ZyYW1lLCBmcmFtZSwgV2ViQ29yZTo6SW50UmVjdCgpKTsKLQotICAgIHJldHVybiBl
bmNsb3NpbmdJbnRSZWN0KGZyYW1lLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb25Cb3VuZHMoKSk7Ci19
Ci0KLS8vIENvbXBhcmUgd2l0aCAiV2ViS2l0L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9GcmFt
ZUxvYWREZWxlZ2F0ZS5tbQotU3RyaW5nIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6c3VpdGFi
bGVEUlRGcmFtZU5hbWUoY29uc3QgRXZhc19PYmplY3QqIGV3a0ZyYW1lKQotewotICAgIERSVF9T
VVBQT1JUX0ZSQU1FX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIGZyYW1lLCBTdHJpbmcoKSk7Ci0K
LSAgICBjb25zdCBTdHJpbmcgZnJhbWVOYW1lKGV3a19mcmFtZV9uYW1lX2dldChld2tGcmFtZSkp
OwotCi0gICAgaWYgKGV3a0ZyYW1lID09IGV3a192aWV3X2ZyYW1lX21haW5fZ2V0KGV3a19mcmFt
ZV92aWV3X2dldChld2tGcmFtZSkpKSB7Ci0gICAgICAgIGlmICghZnJhbWVOYW1lLmlzRW1wdHko
KSkKLSAgICAgICAgICAgIHJldHVybiBTdHJpbmcoIm1haW4gZnJhbWUgXCIiKSArIGZyYW1lTmFt
ZSArIFN0cmluZygiXCIiKTsKLQotICAgICAgICByZXR1cm4gU3RyaW5nKCJtYWluIGZyYW1lIik7
Ci0gICAgfQotCi0gICAgaWYgKCFmcmFtZU5hbWUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4g
U3RyaW5nKCJmcmFtZSBcIiIpICsgZnJhbWVOYW1lICsgU3RyaW5nKCJcIiIpOwotCi0gICAgcmV0
dXJuIFN0cmluZygiZnJhbWUgKGFub255bW91cykiKTsKLX0KLQotY29uc3QgV2ViQ29yZTo6VVJM
IER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6cHJvdmlzaW9uYWxVUkwoY29uc3QgRXZhc19PYmpl
Y3QqIGV3a0ZyYW1lKQotewotICAgIERSVF9TVVBQT1JUX0ZSQU1FX0dFVF9PUl9SRVRVUk4oZXdr
RnJhbWUsIGZyYW1lLCBXZWJDb3JlOjpVUkwoKSk7Ci0KLSAgICBXZWJDb3JlOjpEb2N1bWVudExv
YWRlciogcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlciA9IGZyYW1lLT5sb2FkZXIoKS5wcm92aXNp
b25hbERvY3VtZW50TG9hZGVyKCk7Ci0gICAgaWYgKCFwcm92aXNpb25hbERvY3VtZW50TG9hZGVy
KQotICAgICAgICByZXR1cm4gV2ViQ29yZTo6VVJMKCk7Ci0KLSAgICByZXR1cm4gcHJvdmlzaW9u
YWxEb2N1bWVudExvYWRlci0+dXJsKCk7Ci19Ci0KLXZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0
RWZsOjpzZXRWYWx1ZUZvclVzZXIoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgbm9k
ZU9iamVjdCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKLXsKLSAgICBKU0M6OkV4ZWNTdGF0ZSogZXhl
YyA9IHRvSlMoY29udGV4dCk7Ci0gICAgV2ViQ29yZTo6RWxlbWVudCogZWxlbWVudCA9IFdlYkNv
cmU6OnRvRWxlbWVudCh0b0pTKGV4ZWMsIG5vZGVPYmplY3QpKTsKLSAgICBpZiAoIWVsZW1lbnQp
Ci0gICAgICAgIHJldHVybjsKLSAgICBXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVs
ZW1lbnQgPSBlbGVtZW50LT50b0lucHV0RWxlbWVudCgpOwotICAgIGlmICghaW5wdXRFbGVtZW50
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBpbnB1dEVsZW1lbnQtPnNldFZhbHVlRm9yVXNlcih2
YWx1ZSk7Ci19Ci0KLXZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpzZXREZWZlcnNMb2Fk
aW5nKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBib29sIGRlZmVycykKLXsKLSAgICBEUlRfU1VQUFJU
X1BBR0VfR0VUX09SX1JFVFVSTihld2tWaWV3LCBwYWdlKTsKLQotICAgIHBhZ2UtPnNldERlZmVy
c0xvYWRpbmcoZGVmZXJzKTsKLX0KLQotdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OnNl
dExvYWRzU2l0ZUljb25zSWdub3JpbmdJbWFnZUxvYWRpbmdTZXR0aW5nKEV2YXNfT2JqZWN0KiBl
d2tWaWV3LCBib29sIGxvYWRzU2l0ZUljb25zSWdub3JpbmdJbWFnZUxvYWRpbmdQcmVmZXJlbmNl
cykKLXsKLSAgICBEUlRfU1VQUFJUX1BBR0VfR0VUX09SX1JFVFVSTihld2tWaWV3LCBwYWdlKTsK
LQotICAgIHBhZ2UtPnNldHRpbmdzKCkuc2V0TG9hZHNTaXRlSWNvbnNJZ25vcmluZ0ltYWdlTG9h
ZGluZ1NldHRpbmcobG9hZHNTaXRlSWNvbnNJZ25vcmluZ0ltYWdlTG9hZGluZ1ByZWZlcmVuY2Vz
KTsKLX0KLQotdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OnNldE1pbmltdW1Mb2dpY2Fs
Rm9udFNpemUoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGludCBzaXplKQotewotICAgIERSVF9TVVBQ
UlRfUEFHRV9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHBhZ2UpOwotCi0gICAgcGFnZS0+c2V0dGlu
Z3MoKS5zZXRNaW5pbXVtTG9naWNhbEZvbnRTaXplKHNpemUpOwotfQotCi12b2lkIER1bXBSZW5k
ZXJUcmVlU3VwcG9ydEVmbDo6YWRkVXNlclNjcmlwdChjb25zdCBFdmFzX09iamVjdCogZXdrVmll
dywgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBib29sIHJ1bkF0U3RhcnQsIGJvb2wgYWxsRnJh
bWVzKQotewotICAgIERSVF9TVVBQUlRfUEFHRV9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHBhZ2Up
OwotCi0gICAgcGFnZS0+Z3JvdXAoKS5hZGRVc2VyU2NyaXB0VG9Xb3JsZChXZWJDb3JlOjptYWlu
VGhyZWFkTm9ybWFsV29ybGQoKSwgc291cmNlQ29kZSwgV2ViQ29yZTo6VVJMKCksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZWN0b3I8U3RyaW5nPigpLCBWZWN0b3I8
U3RyaW5nPigpLCBydW5BdFN0YXJ0ID8gV2ViQ29yZTo6SW5qZWN0QXREb2N1bWVudFN0YXJ0IDog
V2ViQ29yZTo6SW5qZWN0QXREb2N1bWVudEVuZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGFsbEZyYW1lcyA/IFdlYkNvcmU6OkluamVjdEluQWxsRnJhbWVzIDogV2Vi
Q29yZTo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkpOwotfQotCi12b2lkIER1bXBSZW5kZXJUcmVlU3Vw
cG9ydEVmbDo6Y2xlYXJVc2VyU2NyaXB0cyhjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKLXsK
LSAgICBEUlRfU1VQUFJUX1BBR0VfR0VUX09SX1JFVFVSTihld2tWaWV3LCBwYWdlKTsKLQotICAg
IHBhZ2UtPmdyb3VwKCkucmVtb3ZlVXNlclNjcmlwdHNGcm9tV29ybGQoV2ViQ29yZTo6bWFpblRo
cmVhZE5vcm1hbFdvcmxkKCkpOwotfQotCi12b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6
YWRkVXNlclN0eWxlU2hlZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IFN0cmlu
ZyYgc291cmNlQ29kZSwgYm9vbCBhbGxGcmFtZXMpCi17Ci0gICAgRFJUX1NVUFBSVF9QQUdFX0dF
VF9PUl9SRVRVUk4oZXdrVmlldywgcGFnZSk7Ci0KLSAgICBwYWdlLT5ncm91cCgpLmFkZFVzZXJT
dHlsZVNoZWV0VG9Xb3JsZChXZWJDb3JlOjptYWluVGhyZWFkTm9ybWFsV29ybGQoKSwgc291cmNl
Q29kZSwgV2ViQ29yZTo6VVJMKCksIFZlY3RvcjxTdHJpbmc+KCksIFZlY3RvcjxTdHJpbmc+KCks
IGFsbEZyYW1lcyA/IFdlYkNvcmU6OkluamVjdEluQWxsRnJhbWVzIDogV2ViQ29yZTo6SW5qZWN0
SW5Ub3BGcmFtZU9ubHkpOwotfQotCi12b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6Y2xl
YXJVc2VyU3R5bGVTaGVldHMoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCi17Ci0gICAgRFJU
X1NVUFBSVF9QQUdFX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgcGFnZSk7Ci0KLSAgICBwYWdlLT5n
cm91cCgpLnJlbW92ZVVzZXJTdHlsZVNoZWV0c0Zyb21Xb3JsZChXZWJDb3JlOjptYWluVGhyZWFk
Tm9ybWFsV29ybGQoKSk7Ci19Ci0KLXZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpleGVj
dXRlQ29yZUNvbW1hbmRCeU5hbWUoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IGNo
YXIqIG5hbWUsIGNvbnN0IGNoYXIqIHZhbHVlKQotewotICAgIERSVF9TVVBQUlRfUEFHRV9HRVRf
T1JfUkVUVVJOKGV3a1ZpZXcsIHBhZ2UpOwotCi0gICAgcGFnZS0+Zm9jdXNDb250cm9sbGVyKCku
Zm9jdXNlZE9yTWFpbkZyYW1lKCkuZWRpdG9yKCkuY29tbWFuZChuYW1lKS5leGVjdXRlKHZhbHVl
KTsKLX0KLQotYm9vbCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OmZpbmRTdHJpbmcoY29uc3Qg
RXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IFN0cmluZyYgdGV4dCwgV2ViQ29yZTo6RmluZE9w
dGlvbnMgb3B0aW9ucykKLXsKLSAgICBEUlRfU1VQUFJUX1BBR0VfR0VUX09SX1JFVFVSTihld2tW
aWV3LCBwYWdlLCBmYWxzZSk7Ci0KLSAgICByZXR1cm4gcGFnZS0+ZmluZFN0cmluZyh0ZXh0LCBv
cHRpb25zKTsKLX0KLQotdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OnNldENTU1JlZ2lv
bnNFbmFibGVkKGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3LCBib29sIGVuYWJsZWQpCi17Ci0g
ICAgRFJUX1NVUFBSVF9QQUdFX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgcGFnZSk7Ci0KLSAgICBX
ZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNldENTU1Jl
Z2lvbnNFbmFibGVkKGVuYWJsZWQpOwotfQotCi12b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVm
bDo6c2V0V2ViQXVkaW9FbmFibGVkKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBib29sIGVuYWJsZWQp
Ci17Ci0jaWYgRU5BQkxFKFdFQl9BVURJTykKLSAgICBEUlRfU1VQUFJUX1BBR0VfR0VUX09SX1JF
VFVSTihld2tWaWV3LCBwYWdlKTsKLQotICAgIHBhZ2UtPnNldHRpbmdzKCkuc2V0V2ViQXVkaW9F
bmFibGVkKGVuYWJsZWQpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oZXdrVmlldyk7Ci0gICAg
VU5VU0VEX1BBUkFNKGVuYWJsZWQpOwotI2VuZGlmCi19Ci0KLWJvb2wgRHVtcFJlbmRlclRyZWVT
dXBwb3J0RWZsOjppc0NvbW1hbmRFbmFibGVkKGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3LCBj
b25zdCBjaGFyKiBuYW1lKQotewotICAgIERSVF9TVVBQUlRfUEFHRV9HRVRfT1JfUkVUVVJOKGV3
a1ZpZXcsIHBhZ2UsIGZhbHNlKTsKLQotICAgIHJldHVybiBwYWdlLT5mb2N1c0NvbnRyb2xsZXIo
KS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3IoKS5jb21tYW5kKG5hbWUpLmlzRW5hYmxlZCgp
OwotfQotCi12b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6Zm9yY2VMYXlvdXQoRXZhc19P
YmplY3QqIGV3a0ZyYW1lKQotewotICAgIGV3a19mcmFtZV9mb3JjZV9sYXlvdXQoZXdrRnJhbWUp
OwotfQotCi12b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6Zm9yY2VQYWludChFdmFzX09i
amVjdCogZXdrVmlldykKLXsKLSAgICBld2tfdmlld19mb3JjZV9wYWludChld2tWaWV3KTsKLX0K
LQotdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OnNldFRyYWNrc1JlcGFpbnRzKEV2YXNf
T2JqZWN0KiBld2tGcmFtZSwgYm9vbCBlbmFibGVkKQotewotICAgIERSVF9TVVBQT1JUX0ZSQU1F
X0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIGZyYW1lKTsKLQotICAgIGlmIChmcmFtZS0+dmlldygp
KQotICAgICAgICBmcmFtZS0+dmlldygpLT5zZXRUcmFja3NSZXBhaW50cyhlbmFibGVkKTsKLX0K
LQotdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OnJlc2V0VHJhY2tlZFJlcGFpbnRzKEV2
YXNfT2JqZWN0KiBld2tGcmFtZSkKLXsKLSAgICBEUlRfU1VQUE9SVF9GUkFNRV9HRVRfT1JfUkVU
VVJOKGV3a0ZyYW1lLCBmcmFtZSk7Ci0KLSAgICBpZiAoZnJhbWUtPnZpZXcoKSkKLSAgICAgICAg
ZnJhbWUtPnZpZXcoKS0+cmVzZXRUcmFja2VkUmVwYWludHMoKTsKLX0KLQotYm9vbCBEdW1wUmVu
ZGVyVHJlZVN1cHBvcnRFZmw6OmlzVHJhY2tpbmdSZXBhaW50cyhjb25zdCBFdmFzX09iamVjdCog
ZXdrRnJhbWUpCi17Ci0gICAgRFJUX1NVUFBPUlRfRlJBTUVfR0VUX09SX1JFVFVSTihld2tGcmFt
ZSwgZnJhbWUsIGZhbHNlKTsKLQotICAgIGlmICghZnJhbWUtPnZpZXcoKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIGZyYW1lLT52aWV3KCktPmlzVHJhY2tpbmdSZXBhaW50
cygpOwotfQotCi1FaW5hX0xpc3QqIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6dHJhY2tlZFJl
cGFpbnRSZWN0cyhjb25zdCBFdmFzX09iamVjdCogZXdrRnJhbWUpCi17Ci0gICAgRFJUX1NVUFBP
UlRfRlJBTUVfR0VUX09SX1JFVFVSTihld2tGcmFtZSwgZnJhbWUsIDApOwotCi0gICAgaWYgKCFm
cmFtZS0+dmlldygpKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIGNvbnN0IFZlY3RvcjxXZWJD
b3JlOjpGbG9hdFJlY3Q+JiByZXBhaW50UmVjdHMgPSBmcmFtZS0+dmlldygpLT50cmFja2VkUmVw
YWludFJlY3RzKCk7Ci0gICAgc2l6ZV90IGNvdW50ID0gcmVwYWludFJlY3RzLnNpemUoKTsKLSAg
ICBFaW5hX0xpc3QqIHJlY3RMaXN0ID0gMDsKLQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
Y291bnQ7ICsraSkgewotICAgICAgICBFaW5hX1JlY3RhbmdsZSogcmVjdCA9IGVpbmFfcmVjdGFu
Z2xlX25ldyhyZXBhaW50UmVjdHNbaV0ueCgpLCByZXBhaW50UmVjdHNbaV0ueSgpLCByZXBhaW50
UmVjdHNbaV0ud2lkdGgoKSwgcmVwYWludFJlY3RzW2ldLmhlaWdodCgpKTsKLSAgICAgICAgcmVj
dExpc3QgPSBlaW5hX2xpc3RfYXBwZW5kKHJlY3RMaXN0LCByZWN0KTsKLSAgICB9Ci0KLSAgICBy
ZXR1cm4gcmVjdExpc3Q7Ci19Ci0KLXZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpnYXJi
YWdlQ29sbGVjdG9yQ29sbGVjdCgpCi17Ci0gICAgV2ViQ29yZTo6Z2NDb250cm9sbGVyKCkuZ2Fy
YmFnZUNvbGxlY3ROb3coKTsKLX0KLQotdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6Omdh
cmJhZ2VDb2xsZWN0b3JDb2xsZWN0T25BbHRlcm5hdGVUaHJlYWQoYm9vbCB3YWl0VW50aWxEb25l
KQotewotICAgIFdlYkNvcmU6OmdjQ29udHJvbGxlcigpLmdhcmJhZ2VDb2xsZWN0T25BbHRlcm5h
dGVUaHJlYWRGb3JEZWJ1Z2dpbmcod2FpdFVudGlsRG9uZSk7Ci19Ci0KLXNpemVfdCBEdW1wUmVu
ZGVyVHJlZVN1cHBvcnRFZmw6OmphdmFTY3JpcHRPYmplY3RzQ291bnQoKQotewotICAgIHJldHVy
biBXZWJDb3JlOjpKU0RPTVdpbmRvdzo6Y29tbW9uVk0oKS5oZWFwLm9iamVjdENvdW50KCk7Ci19
Ci0KLXZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpzZXREZWFkRGVjb2RlZERhdGFEZWxl
dGlvbkludGVydmFsKGRvdWJsZSBpbnRlcnZhbCkKLXsKLSAgICBXZWJDb3JlOjptZW1vcnlDYWNo
ZSgpLT5zZXREZWFkRGVjb2RlZERhdGFEZWxldGlvbkludGVydmFsKHN0ZDo6Y2hyb25vOjptaWxs
aXNlY29uZHMgeyBzdGF0aWNfY2FzdDxzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzOjpyZXA+KGlu
dGVydmFsICogMTAwMCkgfSk7Ci19Ci0KLUhpc3RvcnlJdGVtQ2hpbGRyZW5WZWN0b3IgRHVtcFJl
bmRlclRyZWVTdXBwb3J0RWZsOjpjaGlsZEhpc3RvcnlJdGVtcyhjb25zdCBFd2tfSGlzdG9yeV9J
dGVtKiBld2tIaXN0b3J5SXRlbSkKLXsKLSAgICBXZWJDb3JlOjpIaXN0b3J5SXRlbSogaGlzdG9y
eUl0ZW0gPSBFV0tQcml2YXRlOjpjb3JlSGlzdG9yeUl0ZW0oZXdrSGlzdG9yeUl0ZW0pOwotICAg
IEhpc3RvcnlJdGVtQ2hpbGRyZW5WZWN0b3Iga2lkczsKLQotICAgIGlmICghaGlzdG9yeUl0ZW0p
Ci0gICAgICAgIHJldHVybiBraWRzOwotCi0gICAgY29uc3QgV2ViQ29yZTo6SGlzdG9yeUl0ZW1W
ZWN0b3ImIGNoaWxkcmVuID0gaGlzdG9yeUl0ZW0tPmNoaWxkcmVuKCk7Ci0gICAgY29uc3QgdW5z
aWduZWQgc2l6ZSA9IGNoaWxkcmVuLnNpemUoKTsKLQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgRXdrX0hpc3RvcnlfSXRlbSoga2lkID0gZXdrX2hp
c3RvcnlfaXRlbV9uZXdfZnJvbV9jb3JlKGNoaWxkcmVuW2ldLmdldCgpKTsKLSAgICAgICAga2lk
cy5hcHBlbmQoa2lkKTsKLSAgICB9Ci0KLSAgICByZXR1cm4ga2lkczsKLX0KLQotU3RyaW5nIER1
bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6aGlzdG9yeUl0ZW1UYXJnZXQoY29uc3QgRXdrX0hpc3Rv
cnlfSXRlbSogZXdrSGlzdG9yeUl0ZW0pCi17Ci0gICAgV2ViQ29yZTo6SGlzdG9yeUl0ZW0qIGhp
c3RvcnlJdGVtID0gRVdLUHJpdmF0ZTo6Y29yZUhpc3RvcnlJdGVtKGV3a0hpc3RvcnlJdGVtKTsK
LQotICAgIGlmICghaGlzdG9yeUl0ZW0pCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLQotICAg
IHJldHVybiBoaXN0b3J5SXRlbS0+dGFyZ2V0KCk7Ci19Ci0KLWJvb2wgRHVtcFJlbmRlclRyZWVT
dXBwb3J0RWZsOjppc1RhcmdldEl0ZW0oY29uc3QgRXdrX0hpc3RvcnlfSXRlbSogZXdrSGlzdG9y
eUl0ZW0pCi17Ci0gICAgV2ViQ29yZTo6SGlzdG9yeUl0ZW0qIGhpc3RvcnlJdGVtID0gRVdLUHJp
dmF0ZTo6Y29yZUhpc3RvcnlJdGVtKGV3a0hpc3RvcnlJdGVtKTsKLQotICAgIGlmICghaGlzdG9y
eUl0ZW0pCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiBoaXN0b3J5SXRlbS0+
aXNUYXJnZXRJdGVtKCk7Ci19Ci0KLXZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpldmFs
dWF0ZUluV2ViSW5zcGVjdG9yKGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBTdHJp
bmcmIHNjcmlwdCkKLXsKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIERSVF9TVVBQUlRfUEFH
RV9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHBhZ2UpOwotCi0gICAgcGFnZS0+aW5zcGVjdG9yQ29u
dHJvbGxlcigpLmV2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmQoc2NyaXB0KTsKLSNlbHNlCi0gICAg
VU5VU0VEX1BBUkFNKGV3a1ZpZXcpOwotICAgIFVOVVNFRF9QQVJBTShzY3JpcHQpOwotI2VuZGlm
Ci19Ci0KLXZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpldmFsdWF0ZVNjcmlwdEluSXNv
bGF0ZWRXb3JsZChjb25zdCBFdmFzX09iamVjdCogZXdrRnJhbWUsIGludCB3b3JsZElELCBKU09i
amVjdFJlZiBnbG9iYWxPYmplY3QsIGNvbnN0IFN0cmluZyYgc2NyaXB0KQotewotICAgIERSVF9T
VVBQT1JUX0ZSQU1FX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIGZyYW1lKTsKLQotICAgIC8vIENv
bW1lbnQgZnJvbSBtYWM6IFN0YXJ0IG9mZiB3aXRoIHNvbWUgZ3Vlc3MgYXQgYSBmcmFtZSBhbmQg
YSBnbG9iYWwgb2JqZWN0LCB3ZSdsbCB0cnkgdG8gZG8gYmV0dGVyLi4uIQotICAgIFdlYkNvcmU6
OkpTRE9NV2luZG93KiBhbnlXb3JsZEdsb2JhbE9iamVjdCA9IGZyYW1lLT5zY3JpcHQoKS5nbG9i
YWxPYmplY3QoV2ViQ29yZTo6bWFpblRocmVhZE5vcm1hbFdvcmxkKCkpOwotCi0gICAgLy8gQ29t
bWVudCBmcm9tIG1hYzogVGhlIGdsb2JhbCBvYmplY3QgaXMgcHJvYmFibHkgYSBzaGVsbCBvYmpl
Y3Q/IC0gaWYgc28sIHdlIGtub3cgaG93IHRvIHVzZSB0aGlzIQotICAgIEpTQzo6SlNPYmplY3Qq
IGdsb2JhbE9iamVjdE9iaiA9IHRvSlMoZ2xvYmFsT2JqZWN0KTsKLSAgICBpZiAoIXN0cmNtcChn
bG9iYWxPYmplY3RPYmotPmNsYXNzSW5mbygpLT5jbGFzc05hbWUsICJKU0RPTVdpbmRvd1NoZWxs
IikpCi0gICAgICAgIGFueVdvcmxkR2xvYmFsT2JqZWN0ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6
SlNET01XaW5kb3dTaGVsbCo+KGdsb2JhbE9iamVjdE9iaiktPndpbmRvdygpOwotCi0gICAgLy8g
Q29tbWVudCBmcm9tIG1hYzogR2V0IHRoZSBmcmFtZSBmcm9tIHRoZSBnbG9iYWwgb2JqZWN0IHdl
J3ZlIHNldHRsZWQgb24uCi0gICAgV2ViQ29yZTo6RnJhbWUqIGdsb2JhbEZyYW1lID0gYW55V29y
bGRHbG9iYWxPYmplY3QtPmltcGwoKS5mcmFtZSgpOwotICAgIGlmICghZ2xvYmFsRnJhbWUpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXImIHByb3h5ID0g
Z2xvYmFsRnJhbWUtPnNjcmlwdCgpOwotCi0gICAgc3RhdGljIFdURjo6SGFzaE1hcDxpbnQsIFdU
Rjo6UmVmUHRyPFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZCA+ID4gd29ybGRNYXA7Ci0KLSAgICBX
VEY6OlJlZlB0cjxXZWJDb3JlOjpET01XcmFwcGVyV29ybGQ+IHNjcmlwdFdvcmxkOwotICAgIGlm
ICghd29ybGRJRCkKLSAgICAgICAgc2NyaXB0V29ybGQgPSBXZWJDb3JlOjpTY3JpcHRDb250cm9s
bGVyOjpjcmVhdGVXb3JsZCgpOwotICAgIGVsc2UgewotICAgICAgICBXVEY6Okhhc2hNYXA8aW50
LCBSZWZQdHI8V2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkID4gPjo6Y29uc3RfaXRlcmF0b3IgaXQg
PSB3b3JsZE1hcC5maW5kKHdvcmxkSUQpOwotICAgICAgICBpZiAoaXQgIT0gd29ybGRNYXAuZW5k
KCkpCi0gICAgICAgICAgICBzY3JpcHRXb3JsZCA9ICgqaXQpLnZhbHVlOwotICAgICAgICBlbHNl
IHsKLSAgICAgICAgICAgIHNjcmlwdFdvcmxkID0gV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6
Y3JlYXRlV29ybGQoKTsKLSAgICAgICAgICAgIHdvcmxkTWFwLnNldCh3b3JsZElELCBzY3JpcHRX
b3JsZCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBUaGUgY29kZSBiZWxvdyBpcyBvbmx5
IHZhbGlkIGZvciBKU0MsIFY4IHNwZWNpZmljIGNvZGUgaXMgdG8gYmUgYWRkZWQKLSAgICAvLyB3
aGVuIFY4IHdpbGwgYmUgc3VwcG9ydGVkIGluIEVGTCBwb3J0LiBTZWUgUXQgaW1wbGVtZW5hdGlv
bi4KLSAgICBwcm94eS5leGVjdXRlU2NyaXB0SW5Xb3JsZCgqc2NyaXB0V29ybGQsIHNjcmlwdCwg
dHJ1ZSk7Ci19Ci0KLUpTR2xvYmFsQ29udGV4dFJlZiBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6
Omdsb2JhbENvbnRleHRSZWZGb3JGcmFtZShjb25zdCBFdmFzX09iamVjdCogZXdrRnJhbWUpCi17
Ci0gICAgRFJUX1NVUFBPUlRfRlJBTUVfR0VUX09SX1JFVFVSTihld2tGcmFtZSwgZnJhbWUsIDAp
OwotCi0gICAgcmV0dXJuIHRvR2xvYmFsUmVmKGZyYW1lLT5zY3JpcHQoKS5nbG9iYWxPYmplY3Qo
V2ViQ29yZTo6bWFpblRocmVhZE5vcm1hbFdvcmxkKCkpLT5nbG9iYWxFeGVjKCkpOwotfQotCi12
b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6c2V0TW9ja1Njcm9sbGJhcnNFbmFibGVkKGJv
b2wgZW5hYmxlKQotewotICAgIFdlYkNvcmU6OlNldHRpbmdzOjpzZXRNb2NrU2Nyb2xsYmFyc0Vu
YWJsZWQoZW5hYmxlKTsKLX0KLQotdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OmRlbGl2
ZXJBbGxNdXRhdGlvbnNJZk5lY2Vzc2FyeSgpCi17Ci0gICAgV2ViQ29yZTo6TXV0YXRpb25PYnNl
cnZlcjo6ZGVsaXZlckFsbE11dGF0aW9ucygpOwotfQotCi12b2lkIER1bXBSZW5kZXJUcmVlU3Vw
cG9ydEVmbDo6c2V0SW50ZXJhY3RpdmVGb3JtVmFsaWRhdGlvbkVuYWJsZWQoRXZhc19PYmplY3Qq
IGV3a1ZpZXcsIGJvb2wgZW5hYmxlZCkKLXsKLSAgICBEUlRfU1VQUFJUX1BBR0VfR0VUX09SX1JF
VFVSTihld2tWaWV3LCBwYWdlKTsKLQotICAgIHBhZ2UtPnNldHRpbmdzKCkuc2V0SW50ZXJhY3Rp
dmVGb3JtVmFsaWRhdGlvbkVuYWJsZWQoZW5hYmxlZCk7Ci19Ci0KLXZvaWQgRHVtcFJlbmRlclRy
ZWVTdXBwb3J0RWZsOjpzZXRWYWxpZGF0aW9uTWVzc2FnZVRpbWVyTWFnbmlmaWNhdGlvbihFdmFz
X09iamVjdCogZXdrVmlldywgaW50IHZhbHVlKQotewotICAgIERSVF9TVVBQUlRfUEFHRV9HRVRf
T1JfUkVUVVJOKGV3a1ZpZXcsIHBhZ2UpOwotCi0gICAgcGFnZS0+c2V0dGluZ3MoKS5zZXRWYWxp
ZGF0aW9uTWVzc2FnZVRpbWVyTWFnbmlmaWNhdGlvbih2YWx1ZSk7Ci19Ci0KLXZvaWQgRHVtcFJl
bmRlclRyZWVTdXBwb3J0RWZsOjpzZXRBdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZChFdmFzX09i
amVjdCogZXdrVmlldywgYm9vbCBlbmFibGVkKQotewotICAgIERSVF9TVVBQUlRfUEFHRV9HRVRf
T1JfUkVUVVJOKGV3a1ZpZXcsIHBhZ2UpOwotCi0gICAgcGFnZS0+c2V0dGluZ3MoKS5zZXRBdXRo
b3JBbmRVc2VyU3R5bGVzRW5hYmxlZChlbmFibGVkKTsKLX0KLQotdm9pZCBEdW1wUmVuZGVyVHJl
ZVN1cHBvcnRFZmw6OnNldFNlcmlhbGl6ZUhUVFBMb2Fkcyhib29sIGVuYWJsZWQpCi17Ci0gICAg
V2ViQ29yZTo6cmVzb3VyY2VMb2FkU2NoZWR1bGVyKCktPnNldFNlcmlhbExvYWRpbmdFbmFibGVk
KGVuYWJsZWQpOwotfQotCi12b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6c2V0U2hvdWxk
VHJhY2tWaXNpdGVkTGlua3MoYm9vbCBzaG91bGRUcmFjaykKLXsKLSAgICBXZWJDb3JlOjpQYWdl
R3JvdXA6OnNldFNob3VsZFRyYWNrVmlzaXRlZExpbmtzKHNob3VsZFRyYWNrKTsKLX0KLQotdm9p
ZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OnNldENvbXBvc2l0aW9uKEV2YXNfT2JqZWN0KiBl
d2tWaWV3LCBjb25zdCBjaGFyKiB0ZXh0LCBpbnQgc3RhcnQsIGludCBsZW5ndGgpCi17Ci0gICAg
RFJUX1NVUFBSVF9QQUdFX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgcGFnZSk7Ci0KLSAgICBXZWJD
b3JlOjpFZGl0b3ImIGVkaXRvciA9IHBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1h
aW5GcmFtZSgpLmVkaXRvcigpOwotICAgIGlmICghZWRpdG9yLmNhbkVkaXQoKSAmJiAhZWRpdG9y
Lmhhc0NvbXBvc2l0aW9uKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGNvbnN0IFN0cmluZyBj
b21wb3NpdGlvblN0cmluZyA9IFN0cmluZzo6ZnJvbVVURjgodGV4dCk7Ci0gICAgVmVjdG9yPFdl
YkNvcmU6OkNvbXBvc2l0aW9uVW5kZXJsaW5lPiB1bmRlcmxpbmVzOwotICAgIHVuZGVybGluZXMu
YXBwZW5kKFdlYkNvcmU6OkNvbXBvc2l0aW9uVW5kZXJsaW5lKDAsIGNvbXBvc2l0aW9uU3RyaW5n
Lmxlbmd0aCgpLCBXZWJDb3JlOjpDb2xvcigwLCAwLCAwKSwgZmFsc2UpKTsKLSAgICBlZGl0b3Iu
c2V0Q29tcG9zaXRpb24oY29tcG9zaXRpb25TdHJpbmcsIHVuZGVybGluZXMsIHN0YXJ0LCBzdGFy
dCArIGxlbmd0aCk7Ci19Ci0KLWJvb2wgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpoYXNDb21w
b3NpdGlvbihjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKLXsKLSAgICBEUlRfU1VQUFJUX1BB
R0VfR0VUX09SX1JFVFVSTihld2tWaWV3LCBwYWdlLCBmYWxzZSk7Ci0KLSAgICByZXR1cm4gcGFn
ZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCkuZWRpdG9yKCkuaGFzQ29t
cG9zaXRpb24oKTsKLX0KLQotYm9vbCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OmNvbXBvc2l0
aW9uUmFuZ2UoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGludCogc3RhcnQsIGludCogbGVuZ3RoKQot
ewotICAgICpzdGFydCA9ICpsZW5ndGggPSAwOwotCi0gICAgRFJUX1NVUFBSVF9QQUdFX0dFVF9P
Ul9SRVRVUk4oZXdrVmlldywgcGFnZSwgZmFsc2UpOwotCi0gICAgV2ViQ29yZTo6RWRpdG9yJiBl
ZGl0b3IgPSBwYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0
b3IoKTsKLSAgICBpZiAoIWVkaXRvci5oYXNDb21wb3NpdGlvbigpKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICAqc3RhcnQgPSBlZGl0b3IuY29tcG9zaXRpb25TdGFydCgpOwotICAgICps
ZW5ndGggPSBlZGl0b3IuY29tcG9zaXRpb25FbmQoKSAtICpzdGFydDsKLSAgICByZXR1cm4gdHJ1
ZTsKLX0KLQotdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OmNvbmZpcm1Db21wb3NpdGlv
bihFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgY2hhciogdGV4dCkKLXsKLSAgICBEUlRfU1VQ
UFJUX1BBR0VfR0VUX09SX1JFVFVSTihld2tWaWV3LCBwYWdlKTsKLQotICAgIFdlYkNvcmU6OkVk
aXRvciYgZWRpdG9yID0gcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1l
KCkuZWRpdG9yKCk7Ci0KLSAgICBpZiAoIWVkaXRvci5oYXNDb21wb3NpdGlvbigpKSB7Ci0gICAg
ICAgIGVkaXRvci5pbnNlcnRUZXh0KFN0cmluZzo6ZnJvbVVURjgodGV4dCksIDApOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKHRleHQpIHsKLSAgICAgICAgZWRpdG9yLmNvbmZp
cm1Db21wb3NpdGlvbihTdHJpbmc6OmZyb21VVEY4KHRleHQpKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSAgICBlZGl0b3IuY29uZmlybUNvbXBvc2l0aW9uKCk7Ci19Ci0KLVdlYkNvcmU6Oklu
dFJlY3QgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpmaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5n
ZShFdmFzX09iamVjdCogZXdrVmlldywgaW50IGxvY2F0aW9uLCBpbnQgbGVuZ3RoKQotewotICAg
IERSVF9TVVBQUlRfUEFHRV9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHBhZ2UsIFdlYkNvcmU6Oklu
dFJlY3QoKSk7Ci0KLSAgICBpZiAoKGxvY2F0aW9uICsgbGVuZ3RoIDwgbG9jYXRpb24pICYmIChs
b2NhdGlvbiArIGxlbmd0aCkpCi0gICAgICAgIGxlbmd0aCA9IDA7Ci0KLSAgICBXZWJDb3JlOjpG
cmFtZSYgZnJhbWUgPSBwYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUo
KTsKLQotICAgIFJlZlB0cjxXZWJDb3JlOjpSYW5nZT4gcmFuZ2UgPSBXZWJDb3JlOjpUZXh0SXRl
cmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKGZyYW1lLnNlbGVjdGlvbigpLnJvb3RF
ZGl0YWJsZUVsZW1lbnRPckRvY3VtZW50RWxlbWVudCgpLCBsb2NhdGlvbiwgbGVuZ3RoKTsKLSAg
ICBpZiAoIXJhbmdlKQotICAgICAgICByZXR1cm4gV2ViQ29yZTo6SW50UmVjdCgpOwotCi0gICAg
cmV0dXJuIGZyYW1lLmVkaXRvcigpLmZpcnN0UmVjdEZvclJhbmdlKHJhbmdlLmdldCgpKTsKLX0K
LQotYm9vbCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OnNlbGVjdGVkUmFuZ2UoRXZhc19PYmpl
Y3QqIGV3a1ZpZXcsIGludCogc3RhcnQsIGludCogbGVuZ3RoKQotewotICAgIGlmICghKHN0YXJ0
ICYmIGxlbmd0aCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIERSVF9TVVBQUlRfUEFH
RV9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHBhZ2UsIGZhbHNlKTsKLQotICAgIFdlYkNvcmU6OkZy
YW1lJiBmcmFtZSA9IHBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgp
OwotICAgIGNvbnN0IFdlYkNvcmU6OlZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbiA9IGZyYW1l
LnNlbGVjdGlvbigpLnNlbGVjdGlvbigpOwotICAgIFJlZlB0cjxXZWJDb3JlOjpSYW5nZT4gcmFu
Z2UgPSBzZWxlY3Rpb24udG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKTsKLSAgICBpZiAoIXJhbmdl
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBXZWJDb3JlOjpFbGVtZW50KiBzZWxlY3Rp
b25Sb290ID0gc2VsZWN0aW9uLnJvb3RFZGl0YWJsZUVsZW1lbnQoKTsKLSAgICBXZWJDb3JlOjpF
bGVtZW50KiBzY29wZSA9IHNlbGVjdGlvblJvb3QgPyBzZWxlY3Rpb25Sb290IDogZnJhbWUuZG9j
dW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50KCk7Ci0KLSAgICBSZWZQdHI8V2ViQ29yZTo6UmFuZ2U+
IHRlc3RSYW5nZSA9IFdlYkNvcmU6OlJhbmdlOjpjcmVhdGUoc2NvcGUtPmRvY3VtZW50KCksIHNj
b3BlLCAwLCByYW5nZS0+c3RhcnRDb250YWluZXIoKSwgcmFuZ2UtPnN0YXJ0T2Zmc2V0KCkpOwot
ICAgICpzdGFydCA9IFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgodGVzdFJhbmdl
LmdldCgpKTsKLQotICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWM7Ci0gICAgdGVzdFJhbmdl
LT5zZXRFbmQocmFuZ2UtPmVuZENvbnRhaW5lcigpLCByYW5nZS0+ZW5kT2Zmc2V0KCksIGVjKTsK
LSAgICAqbGVuZ3RoID0gV2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aCh0ZXN0UmFu
Z2UuZ2V0KCkpOwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQgRHVtcFJlbmRlclRyZWVT
dXBwb3J0RWZsOjpzZXREb21haW5SZWxheGF0aW9uRm9yYmlkZGVuRm9yVVJMU2NoZW1lKGJvb2wg
Zm9yYmlkZGVuLCBjb25zdCBTdHJpbmcmIHNjaGVtZSkKLXsKLSAgICBXZWJDb3JlOjpTY2hlbWVS
ZWdpc3RyeTo6c2V0RG9tYWluUmVsYXhhdGlvbkZvcmJpZGRlbkZvclVSTFNjaGVtZShmb3JiaWRk
ZW4sIHNjaGVtZSk7Ci19Ci0KLXZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpyZXNldEdl
b2xvY2F0aW9uQ2xpZW50TW9jayhjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKLXsKLSNpZiBF
TkFCTEUoR0VPTE9DQVRJT04pCi0gICAgRFJUX1NVUFBSVF9QQUdFX0dFVF9PUl9SRVRVUk4oZXdr
VmlldywgcGFnZSk7Ci0KLSAgICBXZWJDb3JlOjpHZW9sb2NhdGlvbkNsaWVudE1vY2sqIG1vY2sg
PSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpHZW9sb2NhdGlvbkNsaWVudE1vY2sqPihXZWJDb3JlOjpH
ZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmZyb20ocGFnZSktPmNsaWVudCgpKTsKLSAgICBtb2NrLT5y
ZXNldCgpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oZXdrVmlldyk7Ci0jZW5kaWYKLX0KLQot
dm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OnNldE1vY2tHZW9sb2NhdGlvblBlcm1pc3Np
b24oY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcsIGJvb2wgYWxsb3dlZCkKLXsKLSNpZiBFTkFC
TEUoR0VPTE9DQVRJT04pCi0gICAgRFJUX1NVUFBSVF9QQUdFX0dFVF9PUl9SRVRVUk4oZXdrVmll
dywgcGFnZSk7Ci0KLSAgICBXZWJDb3JlOjpHZW9sb2NhdGlvbkNsaWVudE1vY2sqIG1vY2sgPSBz
dGF0aWNfY2FzdDxXZWJDb3JlOjpHZW9sb2NhdGlvbkNsaWVudE1vY2sqPihXZWJDb3JlOjpHZW9s
b2NhdGlvbkNvbnRyb2xsZXI6OmZyb20ocGFnZSktPmNsaWVudCgpKTsKLSAgICBtb2NrLT5zZXRQ
ZXJtaXNzaW9uKGFsbG93ZWQpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oZXdrVmlldyk7Ci0g
ICAgVU5VU0VEX1BBUkFNKGFsbG93ZWQpOwotI2VuZGlmCi19Ci0KLXZvaWQgRHVtcFJlbmRlclRy
ZWVTdXBwb3J0RWZsOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihjb25zdCBFdmFzX09iamVj
dCogZXdrVmlldywgZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBkb3VibGUgYWNj
dXJhY3ksIGJvb2wgY2FuUHJvdmlkZUFsdGl0dWRlLCBkb3VibGUgYWx0aXR1ZGUsIGJvb2wgY2Fu
UHJvdmlkZUFsdGl0dWRlQWNjdXJhY3ksIGRvdWJsZSBhbHRpdHVkZUFjY3VyYWN5LCBib29sIGNh
blByb3ZpZGVIZWFkaW5nLCBkb3VibGUgaGVhZGluZywgYm9vbCBjYW5Qcm92aWRlU3BlZWQsIGRv
dWJsZSBzcGVlZCkKLXsKLSNpZiBFTkFCTEUoR0VPTE9DQVRJT04pCi0gICAgRFJUX1NVUFBSVF9Q
QUdFX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgcGFnZSk7Ci0KLSAgICBXZWJDb3JlOjpHZW9sb2Nh
dGlvbkNsaWVudE1vY2sqIG1vY2sgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpHZW9sb2NhdGlvbkNs
aWVudE1vY2sqPihXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmZyb20ocGFnZSktPmNs
aWVudCgpKTsKLSAgICBtb2NrLT5zZXRQb3NpdGlvbihXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0
aW9uOjpjcmVhdGUoY3VycmVudFRpbWUoKSwgbGF0aXR1ZGUsIGxvbmdpdHVkZSwgYWNjdXJhY3ks
IGNhblByb3ZpZGVBbHRpdHVkZSwgYWx0aXR1ZGUsIGNhblByb3ZpZGVBbHRpdHVkZUFjY3VyYWN5
LCBhbHRpdHVkZUFjY3VyYWN5LCBjYW5Qcm92aWRlSGVhZGluZywgaGVhZGluZywgY2FuUHJvdmlk
ZVNwZWVkLCBzcGVlZCkpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oZXdrVmlldyk7Ci0gICAg
VU5VU0VEX1BBUkFNKGxhdGl0dWRlKTsKLSAgICBVTlVTRURfUEFSQU0obG9uZ2l0dWRlKTsKLSAg
ICBVTlVTRURfUEFSQU0oYWNjdXJhY3kpOwotICAgIFVOVVNFRF9QQVJBTShjYW5Qcm92aWRlQWx0
aXR1ZGUpOwotICAgIFVOVVNFRF9QQVJBTShhbHRpdHVkZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGNh
blByb3ZpZGVBbHRpdHVkZUFjY3VyYWN5KTsKLSAgICBVTlVTRURfUEFSQU0oYWx0aXR1ZGVBY2N1
cmFjeSk7Ci0gICAgVU5VU0VEX1BBUkFNKGNhblByb3ZpZGVIZWFkaW5nKTsKLSAgICBVTlVTRURf
UEFSQU0oaGVhZGluZyk7Ci0gICAgVU5VU0VEX1BBUkFNKGNhblByb3ZpZGVTcGVlZCk7Ci0gICAg
VU5VU0VEX1BBUkFNKHNwZWVkKTsKLSNlbmRpZgotfQotCi12b2lkIER1bXBSZW5kZXJUcmVlU3Vw
cG9ydEVmbDo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKGNvbnN0
IEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBjaGFyKiBlcnJvck1lc3NhZ2UpCi17Ci0jaWYg
RU5BQkxFKEdFT0xPQ0FUSU9OKQotICAgIERSVF9TVVBQUlRfUEFHRV9HRVRfT1JfUkVUVVJOKGV3
a1ZpZXcsIHBhZ2UpOwotCi0gICAgV2ViQ29yZTo6R2VvbG9jYXRpb25DbGllbnRNb2NrKiBtb2Nr
ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6R2VvbG9jYXRpb25DbGllbnRNb2NrKj4oV2ViQ29yZTo6
R2VvbG9jYXRpb25Db250cm9sbGVyOjpmcm9tKHBhZ2UpLT5jbGllbnQoKSk7Ci0gICAgbW9jay0+
c2V0UG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKGVycm9yTWVzc2FnZSk7Ci0jZWxzZQotICAgIFVO
VVNFRF9QQVJBTShld2tWaWV3KTsKLSAgICBVTlVTRURfUEFSQU0oZXJyb3JNZXNzYWdlKTsKLSNl
bmRpZgotfQotCi1pbnQgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpudW1iZXJPZlBlbmRpbmdH
ZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0cyhjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykK
LXsKLSNpZiBFTkFCTEUoR0VPTE9DQVRJT04pCi0gICAgRFJUX1NVUFBSVF9QQUdFX0dFVF9PUl9S
RVRVUk4oZXdrVmlldywgcGFnZSwgLTEpOwotCi0gICAgV2ViQ29yZTo6R2VvbG9jYXRpb25DbGll
bnRNb2NrKiBtb2NrID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6R2VvbG9jYXRpb25DbGllbnRNb2Nr
Kj4oV2ViQ29yZTo6R2VvbG9jYXRpb25Db250cm9sbGVyOjpmcm9tKHBhZ2UpLT5jbGllbnQoKSk7
Ci0gICAgcmV0dXJuIG1vY2stPm51bWJlck9mUGVuZGluZ1Blcm1pc3Npb25SZXF1ZXN0cygpOwot
I2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oZXdrVmlldyk7Ci0gICAgcmV0dXJuIDA7Ci0jZW5kaWYK
LX0KLQotI2lmIEhBVkUoQUNDRVNTSUJJTElUWSkKLUF0a09iamVjdCogRHVtcFJlbmRlclRyZWVT
dXBwb3J0RWZsOjpyb290QWNjZXNzaWJsZUVsZW1lbnQoY29uc3QgRXZhc19PYmplY3QqIGV3a0Zy
YW1lKQotewotICAgIERSVF9TVVBQT1JUX0ZSQU1FX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIGZy
YW1lLCAwKTsKLQotICAgIGlmICghV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6YWNjZXNzaWJpbGl0
eUVuYWJsZWQoKSkKLSAgICAgICAgV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6ZW5hYmxlQWNjZXNz
aWJpbGl0eSgpOwotCi0gICAgaWYgKCFmcmFtZS0+ZG9jdW1lbnQoKSkKLSAgICAgICAgcmV0dXJu
IDA7Ci0KLSAgICBBdGtPYmplY3QqIHdyYXBwZXIgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+YXhPYmpl
Y3RDYWNoZSgpLT5yb290T2JqZWN0KCktPndyYXBwZXIoKTsKLSAgICBpZiAoIXdyYXBwZXIpCi0g
ICAgICAgIHJldHVybiAwOwotCi0gICAgcmV0dXJuIHdyYXBwZXI7Ci19Ci0KLUF0a09iamVjdCog
RHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpmb2N1c2VkQWNjZXNzaWJsZUVsZW1lbnQoY29uc3Qg
RXZhc19PYmplY3QqIGV3a0ZyYW1lKQotewotICAgIEF0a09iamVjdCogd3JhcHBlciA9IHJvb3RB
Y2Nlc3NpYmxlRWxlbWVudChld2tGcmFtZSk7Ci0gICAgaWYgKCF3cmFwcGVyKQotICAgICAgICBy
ZXR1cm4gMDsKLQotICAgIHJldHVybiB3ZWJraXRBY2Nlc3NpYmxlR2V0Rm9jdXNlZEVsZW1lbnQo
V0VCS0lUX0FDQ0VTU0lCTEUod3JhcHBlcikpOwotfQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuaCBi
L1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVm
bC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0OTU2YjI5Li4wMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVm
bC5oCisrKyAvZGV2L251bGwKQEAgLTEsMTM4ICswLDAgQEAKLS8qCi0gICAgQ29weXJpZ2h0IChD
KSAyMDExIFByb0ZVU0lPTiBlbWJlZGRlZCBzeXN0ZW1zCi0gICAgQ29weXJpZ2h0IChDKSAyMDEx
IFNhbXN1bmcgRWxlY3Ryb25pY3MKLSAgICBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9y
YXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAgICBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
LSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gICAg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAgICBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCi0gICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICAgIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotKi8KLQotI2lmbmRlZiBEdW1wUmVuZGVyVHJlZVN1
cHBvcnRFZmxfaAotI2RlZmluZSBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmxfaAotCi0jaW5jbHVk
ZSAiVVJMLmgiCi0jaW5jbHVkZSA8RWluYS5oPgotI2luY2x1ZGUgPEZpbmRPcHRpb25zLmg+Ci0j
aW5jbHVkZSA8SW50UmVjdC5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FQSUNhc3QuaD4K
LSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1N0cmluZ1JlZi5oPgotI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotI2lmIEhBVkUoQUND
RVNTSUJJTElUWSkKLSNpbmNsdWRlIDxhdGsvYXRrLmg+Ci0jZW5kaWYKLQotdHlwZWRlZiBzdHJ1
Y3QgX0V3a19IaXN0b3J5X0l0ZW0gRXdrX0hpc3RvcnlfSXRlbTsKLQotdHlwZWRlZiBWZWN0b3I8
RXdrX0hpc3RvcnlfSXRlbSo+IEhpc3RvcnlJdGVtQ2hpbGRyZW5WZWN0b3I7Ci0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLWNsYXNzIEZyYW1lOwotfQotCi1jbGFzcyBFQVBJIER1bXBSZW5kZXJUcmVl
U3VwcG9ydEVmbCB7Ci1wdWJsaWM6Ci0gICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsKCkgeyB9
Ci0KLSAgICB+RHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsKCkgeyB9Ci0KLSAgICBzdGF0aWMgdm9p
ZCBzZXREdW1wUmVuZGVyVHJlZU1vZGVFbmFibGVkKGJvb2wpOwotICAgIHN0YXRpYyBib29sIGR1
bXBSZW5kZXJUcmVlTW9kZUVuYWJsZWQoKTsKLQotICAgIHN0YXRpYyBib29sIGNhbGxTaG91bGRD
bG9zZU9uV2ViVmlldyhFdmFzX09iamVjdCogZXdrRnJhbWUpOwotICAgIHN0YXRpYyB2b2lkIGNs
ZWFyRnJhbWVOYW1lKEV2YXNfT2JqZWN0KiBld2tGcmFtZSk7Ci0gICAgc3RhdGljIHZvaWQgY2xl
YXJPcGVuZXIoRXZhc19PYmplY3QqIGV3a0ZyYW1lKTsKLSAgICBzdGF0aWMgU3RyaW5nIGNvdW50
ZXJWYWx1ZUJ5RWxlbWVudElkKGNvbnN0IEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgY29uc3QgY2hh
ciogZWxlbWVudElkKTsKLSAgICBzdGF0aWMgRWluYV9MaXN0KiBmcmFtZUNoaWxkcmVuKGNvbnN0
IEV2YXNfT2JqZWN0KiBld2tGcmFtZSk7Ci0gICAgc3RhdGljIFdlYkNvcmU6OkZyYW1lKiBmcmFt
ZVBhcmVudChjb25zdCBFdmFzX09iamVjdCogZXdrRnJhbWUpOwotICAgIHN0YXRpYyB2b2lkIGxh
eW91dEZyYW1lKEV2YXNfT2JqZWN0KiBld2tGcmFtZSk7Ci0gICAgc3RhdGljIHVuc2lnbmVkIHBl
bmRpbmdVbmxvYWRFdmVudENvdW50KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tGcmFtZSk7Ci0gICAg
c3RhdGljIFN0cmluZyByZW5kZXJUcmVlRHVtcChFdmFzX09iamVjdCogZXdrRnJhbWUpOwotICAg
IHN0YXRpYyBTdHJpbmcgcmVzcG9uc2VNaW1lVHlwZShjb25zdCBFdmFzX09iamVjdCogZXdrRnJh
bWUpOwotICAgIHN0YXRpYyBXZWJDb3JlOjpJbnRSZWN0IHNlbGVjdGlvblJlY3RhbmdsZShjb25z
dCBFdmFzX09iamVjdCogZXdrRnJhbWUpOwotICAgIHN0YXRpYyBTdHJpbmcgc3VpdGFibGVEUlRG
cmFtZU5hbWUoY29uc3QgRXZhc19PYmplY3QqIGV3a0ZyYW1lKTsKLSAgICBzdGF0aWMgY29uc3Qg
V2ViQ29yZTo6VVJMIHByb3Zpc2lvbmFsVVJMKGNvbnN0IEV2YXNfT2JqZWN0KiBld2tGcmFtZSk7
Ci0gICAgc3RhdGljIFN0cmluZyBsYXllclRyZWVBc1RleHQoY29uc3QgRXZhc19PYmplY3QqIGV3
a0ZyYW1lKTsKLSAgICBzdGF0aWMgdm9pZCBzZXRWYWx1ZUZvclVzZXIoSlNDb250ZXh0UmVmLCBK
U1ZhbHVlUmVmIG5vZGVPYmplY3QsIGNvbnN0IFN0cmluZyYgdmFsdWUpOwotICAgIHN0YXRpYyB2
b2lkIHNldERlZmVyc0xvYWRpbmcoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGJvb2wgZGVmZXJzKTsK
LSAgICBzdGF0aWMgdm9pZCBzZXRMb2Fkc1NpdGVJY29uc0lnbm9yaW5nSW1hZ2VMb2FkaW5nU2V0
dGluZyhFdmFzX09iamVjdCogZXdrVmlldywgYm9vbCBsb2Fkc1NpdGVJY29uc0lnbm9yaW5nSW1h
Z2VMb2FkaW5nUHJlZmVyZW5jZXMpOwotICAgIHN0YXRpYyB2b2lkIHNldE1pbmltdW1Mb2dpY2Fs
Rm9udFNpemUoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGludCBzaXplKTsKLQotICAgIHN0YXRpYyB2
b2lkIGFkZFVzZXJTY3JpcHQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IFN0cmlu
ZyYgc291cmNlQ29kZSwgYm9vbCBydW5BdFN0YXJ0LCBib29sIGFsbEZyYW1lcyk7Ci0gICAgc3Rh
dGljIHZvaWQgY2xlYXJVc2VyU2NyaXB0cyhjb25zdCBFdmFzX09iamVjdCogZXdrVmlldyk7Ci0g
ICAgc3RhdGljIHZvaWQgYWRkVXNlclN0eWxlU2hlZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1Zp
ZXcsIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSwgYm9vbCBhbGxGcmFtZXMpOwotICAgIHN0YXRp
YyB2b2lkIGNsZWFyVXNlclN0eWxlU2hlZXRzKGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KTsK
LSAgICBzdGF0aWMgdm9pZCBleGVjdXRlQ29yZUNvbW1hbmRCeU5hbWUoY29uc3QgRXZhc19PYmpl
Y3QqIGV3a1ZpZXcsIGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IGNoYXIqIHZhbHVlKTsKLSAgICBz
dGF0aWMgYm9vbCBmaW5kU3RyaW5nKGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBT
dHJpbmcmIHRleHQsIFdlYkNvcmU6OkZpbmRPcHRpb25zKTsKLSAgICBzdGF0aWMgYm9vbCBpc0Nv
bW1hbmRFbmFibGVkKGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBjaGFyKiBuYW1l
KTsKLSAgICBzdGF0aWMgdm9pZCBzZXRDU1NSZWdpb25zRW5hYmxlZChjb25zdCBFdmFzX09iamVj
dCogZXdrVmlldywgYm9vbCBlbmFibGVkKTsKLSAgICBzdGF0aWMgdm9pZCBzZXRXZWJBdWRpb0Vu
YWJsZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGJvb2wpOwotCi0gICAgc3RhdGljIHZvaWQgZm9y
Y2VMYXlvdXQoRXZhc19PYmplY3QqIGV3a0ZyYW1lKTsKLSAgICBzdGF0aWMgdm9pZCBmb3JjZVBh
aW50KEV2YXNfT2JqZWN0KiBld2tGcmFtZSk7Ci0gICAgc3RhdGljIHZvaWQgc2V0VHJhY2tzUmVw
YWludHMoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBib29sIGVuYWJsZWQpOwotICAgIHN0YXRpYyB2
b2lkIHJlc2V0VHJhY2tlZFJlcGFpbnRzKEV2YXNfT2JqZWN0KiBld2tGcmFtZSk7Ci0gICAgc3Rh
dGljIGJvb2wgaXNUcmFja2luZ1JlcGFpbnRzKGNvbnN0IEV2YXNfT2JqZWN0KiBld2tGcmFtZSk7
Ci0gICAgc3RhdGljIEVpbmFfTGlzdCogdHJhY2tlZFJlcGFpbnRSZWN0cyhjb25zdCBFdmFzX09i
amVjdCogZXdrRnJhbWUpOwotCi0gICAgc3RhdGljIHZvaWQgZ2FyYmFnZUNvbGxlY3RvckNvbGxl
Y3QoKTsKLSAgICBzdGF0aWMgdm9pZCBnYXJiYWdlQ29sbGVjdG9yQ29sbGVjdE9uQWx0ZXJuYXRl
VGhyZWFkKGJvb2wgd2FpdFVudGlsRG9uZSk7Ci0gICAgc3RhdGljIHNpemVfdCBqYXZhU2NyaXB0
T2JqZWN0c0NvdW50KCk7Ci0KLSAgICBzdGF0aWMgdm9pZCBzZXREZWFkRGVjb2RlZERhdGFEZWxl
dGlvbkludGVydmFsKGRvdWJsZSk7Ci0KLSAgICBzdGF0aWMgSGlzdG9yeUl0ZW1DaGlsZHJlblZl
Y3RvciBjaGlsZEhpc3RvcnlJdGVtcyhjb25zdCBFd2tfSGlzdG9yeV9JdGVtKik7Ci0gICAgc3Rh
dGljIFN0cmluZyBoaXN0b3J5SXRlbVRhcmdldChjb25zdCBFd2tfSGlzdG9yeV9JdGVtKik7Ci0g
ICAgc3RhdGljIGJvb2wgaXNUYXJnZXRJdGVtKGNvbnN0IEV3a19IaXN0b3J5X0l0ZW0qKTsKLSAg
ICBzdGF0aWMgdm9pZCBldmFsdWF0ZUluV2ViSW5zcGVjdG9yKGNvbnN0IEV2YXNfT2JqZWN0KiBl
d2tWaWV3LCBjb25zdCBTdHJpbmcmIHNjcmlwdCk7Ci0gICAgc3RhdGljIHZvaWQgZXZhbHVhdGVT
Y3JpcHRJbklzb2xhdGVkV29ybGQoY29uc3QgRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBpbnQgd29y
bGRJRCwgSlNPYmplY3RSZWYgZ2xvYmFsT2JqZWN0LCBjb25zdCBTdHJpbmcmIHNjcmlwdCk7Ci0g
ICAgc3RhdGljIEpTR2xvYmFsQ29udGV4dFJlZiBnbG9iYWxDb250ZXh0UmVmRm9yRnJhbWUoY29u
c3QgRXZhc19PYmplY3QqIGV3a0ZyYW1lKTsKLQotICAgIHN0YXRpYyB2b2lkIHNldE1vY2tTY3Jv
bGxiYXJzRW5hYmxlZChib29sKTsKLQotICAgIHN0YXRpYyB2b2lkIGRlbGl2ZXJBbGxNdXRhdGlv
bnNJZk5lY2Vzc2FyeSgpOwotICAgIHN0YXRpYyB2b2lkIHNldEludGVyYWN0aXZlRm9ybVZhbGlk
YXRpb25FbmFibGVkKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBib29sIGVuYWJsZWQpOwotICAgIHN0
YXRpYyB2b2lkIHNldFZhbGlkYXRpb25NZXNzYWdlVGltZXJNYWduaWZpY2F0aW9uKEV2YXNfT2Jq
ZWN0KiBld2tWaWV3LCBpbnQgdmFsdWUpOwotICAgIHN0YXRpYyB2b2lkIHNldEF1dGhvckFuZFVz
ZXJTdHlsZXNFbmFibGVkKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBib29sKTsKLSAgICBzdGF0aWMg
dm9pZCBzZXREb21haW5SZWxheGF0aW9uRm9yYmlkZGVuRm9yVVJMU2NoZW1lKGJvb2wgZm9yYmlk
ZGVuLCBjb25zdCBTdHJpbmcmIHNjaGVtZSk7Ci0gICAgc3RhdGljIHZvaWQgc2V0U2VyaWFsaXpl
SFRUUExvYWRzKGJvb2wpOwotICAgIHN0YXRpYyB2b2lkIHNldFNob3VsZFRyYWNrVmlzaXRlZExp
bmtzKGJvb2wpOwotICAgIAotICAgIC8vIFRleHRJbnB1dENvbnRyb2xsZXIKLSAgICBzdGF0aWMg
dm9pZCBzZXRDb21wb3NpdGlvbihFdmFzX09iamVjdCosIGNvbnN0IGNoYXIqLCBpbnQsIGludCk7
Ci0gICAgc3RhdGljIGJvb2wgaGFzQ29tcG9zaXRpb24oY29uc3QgRXZhc19PYmplY3QqKTsKLSAg
ICBzdGF0aWMgYm9vbCBjb21wb3NpdGlvblJhbmdlKEV2YXNfT2JqZWN0KiwgaW50KiwgaW50Kik7
Ci0gICAgc3RhdGljIHZvaWQgY29uZmlybUNvbXBvc2l0aW9uKEV2YXNfT2JqZWN0KiwgY29uc3Qg
Y2hhciopOwotICAgIHN0YXRpYyBXZWJDb3JlOjpJbnRSZWN0IGZpcnN0UmVjdEZvckNoYXJhY3Rl
clJhbmdlKEV2YXNfT2JqZWN0KiwgaW50LCBpbnQpOwotICAgIHN0YXRpYyBib29sIHNlbGVjdGVk
UmFuZ2UoRXZhc19PYmplY3QqLCBpbnQqLCBpbnQqKTsKLQotICAgIC8vIEdlb2xvY2F0aW9uCi0g
ICAgc3RhdGljIHZvaWQgcmVzZXRHZW9sb2NhdGlvbkNsaWVudE1vY2soY29uc3QgRXZhc19PYmpl
Y3QqKTsKLSAgICBzdGF0aWMgdm9pZCBzZXRNb2NrR2VvbG9jYXRpb25QZXJtaXNzaW9uKGNvbnN0
IEV2YXNfT2JqZWN0KiwgYm9vbCBhbGxvd2VkKTsKLSAgICBzdGF0aWMgdm9pZCBzZXRNb2NrR2Vv
bG9jYXRpb25Qb3NpdGlvbihjb25zdCBFdmFzX09iamVjdCosIGRvdWJsZSBsYXRpdHVkZSwgZG91
YmxlIGxvbmdpdHVkZSwgZG91YmxlIGFjY3VyYWN5LCBib29sIGNhblByb3ZpZGVBbHRpdHVkZSwg
ZG91YmxlIGFsdGl0dWRlLCBib29sIGNhblByb3ZpZGVBbHRpdHVkZUFjY3VyYWN5LCBkb3VibGUg
YWx0aXR1ZGVBY2N1cmFjeSwgYm9vbCBjYW5Qcm92aWRlSGVhZGluZywgZG91YmxlIGhlYWRpbmcs
IGJvb2wgY2FuUHJvdmlkZVNwZWVkLCBkb3VibGUgc3BlZWQpOwotICAgIHN0YXRpYyB2b2lkIHNl
dE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uVW5hdmFpbGFibGVFcnJvcihjb25zdCBFdmFzX09iamVj
dCosIGNvbnN0IGNoYXIqIGVycm9yTWVzc2FnZSk7Ci0gICAgc3RhdGljIGludCBudW1iZXJPZlBl
bmRpbmdHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0cyhjb25zdCBFdmFzX09iamVjdCopOwot
Ci0jaWYgSEFWRShBQ0NFU1NJQklMSVRZKQotICAgIHN0YXRpYyBBdGtPYmplY3QqIGZvY3VzZWRB
Y2Nlc3NpYmxlRWxlbWVudChjb25zdCBFdmFzX09iamVjdCopOwotICAgIHN0YXRpYyBBdGtPYmpl
Y3QqIHJvb3RBY2Nlc3NpYmxlRWxlbWVudChjb25zdCBFdmFzX09iamVjdCopOwotI2VuZGlmCi0K
LXByaXZhdGU6Ci0gICAgc3RhdGljIGJvb2wgc19kcnRSdW47Ci19OwotCi0jZW5kaWYgLy8gRHVt
cFJlbmRlclRyZWVTdXBwb3J0RWZsX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dl
YkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJD
b3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBiOTgwMTI2Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBw
b3J0L0VkaXRvckNsaWVudEVmbC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NTQgKzAsMCBAQAot
LyoKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDcgQWxwIFRva2VyIDxhbHBAYXRva2VyLmNvbT4KLSAq
ICBDb3B5cmlnaHQgKEMpIDIwMDggTnVhbnRpIEx0ZC4KLSAqICBDb3B5cmlnaHQgKEMpIDIwMDgg
SU5kVCAtIEluc3RpdHV0byBOb2tpYSBkZSBUZWNub2xvZ2lhCi0gKiAgQ29weXJpZ2h0IChDKSAy
MDA5LTIwMTAgUHJvRlVTSU9OIGVtYmVkZGVkIHN5c3RlbXMKLSAqICBDb3B5cmlnaHQgKEMpIDIw
MDktMjAxMCBTYW1zdW5nIEVsZWN0cm9uaWNzCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0gKiAgTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
Ci0gKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0g
KiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0g
KiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5l
cmFsIFB1YmxpYwotICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwg
d3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRWRpdG9yQ2xpZW50RWZsLmgiCi0K
LSNpbmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUgIkR1bXBSZW5kZXJUcmVlU3VwcG9ydEVm
bC5oIgotI2luY2x1ZGUgIkVkaXRvci5oIgotI2luY2x1ZGUgIkVmbEtleWJvYXJkVXRpbGl0aWVz
LmgiCi0jaW5jbHVkZSAiRXZlbnROYW1lcy5oIgotI2luY2x1ZGUgIkZvY3VzQ29udHJvbGxlci5o
IgotI2luY2x1ZGUgIkZyYW1lLmgiCi0jaW5jbHVkZSAiS2V5Ym9hcmRFdmVudC5oIgotI2luY2x1
ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0jaW5jbHVkZSAiUGFnZS5oIgotI2luY2x1ZGUgIlBsYXRm
b3JtS2V5Ym9hcmRFdmVudC5oIgotI2luY2x1ZGUgIlNldHRpbmdzLmgiCi0jaW5jbHVkZSAiVW5k
b1N0ZXAuaCIKLSNpbmNsdWRlICJXaW5kb3dzS2V5Ym9hcmRDb2Rlcy5oIgotI2luY2x1ZGUgImV3
a19mcmFtZV9wcml2YXRlLmgiCi0jaW5jbHVkZSAiZXdrX3ByaXZhdGUuaCIKLSNpbmNsdWRlICJl
d2tfdmlld19wcml2YXRlLmgiCi0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLXZvaWQgRWRpdG9yQ2xpZW50RWZsOjp3aWxsU2V0SW5wdXRNZXRob2RT
dGF0ZSgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBFZGl0b3JDbGllbnRF
Zmw6OnNldElucHV0TWV0aG9kU3RhdGUoYm9vbCBhY3RpdmUpCi17Ci0gICAgZXdrX3ZpZXdfaW5w
dXRfbWV0aG9kX3N0YXRlX3NldChtX3ZpZXcsIGFjdGl2ZSk7Ci19Ci0KLWJvb2wgRWRpdG9yQ2xp
ZW50RWZsOjpzaG91bGREZWxldGVSYW5nZShSYW5nZSogcmFuZ2UpCi17Ci0gICAgZXZhc19vYmpl
Y3Rfc21hcnRfY2FsbGJhY2tfY2FsbChtX3ZpZXcsICJlZGl0b3JjbGllbnQscmFuZ2UsZGVsZXRl
IiwgcmFuZ2UpOwotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIEVkaXRvckNsaWVudEVmbDo6
aXNDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoKQotewotICAgIG5vdEltcGxlbWVudGVk
KCk7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1ib29sIEVkaXRvckNsaWVudEVmbDo6aXNHcmFt
bWFyQ2hlY2tpbmdFbmFibGVkKCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVy
biBmYWxzZTsKLX0KLQotaW50IEVkaXRvckNsaWVudEVmbDo6c3BlbGxDaGVja2VyRG9jdW1lbnRU
YWcoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLWJvb2wg
RWRpdG9yQ2xpZW50RWZsOjpzaG91bGRCZWdpbkVkaXRpbmcoUmFuZ2UqIHJhbmdlKQotewotICAg
IGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3LCAiZWRpdG9yY2xpZW50LGVk
aXRpbmcsYmVnaW4iLCByYW5nZSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgRWRpdG9y
Q2xpZW50RWZsOjpzaG91bGRFbmRFZGl0aW5nKFJhbmdlKiByYW5nZSkKLXsKLSAgICBldmFzX29i
amVjdF9zbWFydF9jYWxsYmFja19jYWxsKG1fdmlldywgImVkaXRvcmNsaWVudCxlZGl0aW5nLGVu
ZCIsIHJhbmdlKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBFZGl0b3JDbGllbnRFZmw6
OnNob3VsZEluc2VydFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBSYW5nZSogcmFuZ2UsIEVkaXRv
ckluc2VydEFjdGlvbiBhY3Rpb24pCi17Ci0gICAgQ1N0cmluZyBwcm90ZWN0ZWRUZXh0ID0gdGV4
dC51dGY4KCk7Ci0gICAgRXdrX1Nob3VsZF9JbnNlcnRfVGV4dF9FdmVudCBzaG91bGRJbnNlcnRU
ZXh0RXZlbnQgPSB7IHByb3RlY3RlZFRleHQuZGF0YSgpLCByYW5nZSwgYWN0aW9uIH07Ci0gICAg
ZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChtX3ZpZXcsICJlZGl0b3JjbGllbnQsdGV4
dCxpbnNlcnQiLCAmc2hvdWxkSW5zZXJ0VGV4dEV2ZW50KTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0K
LQotYm9vbCBFZGl0b3JDbGllbnRFZmw6OnNob3VsZENoYW5nZVNlbGVjdGVkUmFuZ2UoUmFuZ2Uq
IGZyb21SYW5nZSwgUmFuZ2UqIHRvUmFuZ2UsIEVBZmZpbml0eSBhZmZpbml0eSwgYm9vbCBzdGls
bFNlbGVjdGluZykKLXsKLSAgICBFd2tfU2hvdWxkX0NoYW5nZV9TZWxlY3RlZF9SYW5nZV9FdmVu
dCBzaG91bGRDaGFuZ2VTZWxlY3RlZFJhbmdlRXZlbnQgPSB7IGZyb21SYW5nZSwgdG9SYW5nZSwg
YWZmaW5pdHksIHN0aWxsU2VsZWN0aW5nIH07Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJh
Y2tfY2FsbChtX3ZpZXcsICJlZGl0b3JjbGllbnQsc2VsZWN0ZWQscmFuZ2UsY2hhbmdlIiwgJnNo
b3VsZENoYW5nZVNlbGVjdGVkUmFuZ2VFdmVudCk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJv
b2wgRWRpdG9yQ2xpZW50RWZsOjpzaG91bGRBcHBseVN0eWxlKFN0eWxlUHJvcGVydGllcyogc3R5
bGUsIFJhbmdlKiByYW5nZSkKLXsKLSAgICBFd2tfU2hvdWxkX0FwcGx5X1N0eWxlX0V2ZW50IHNo
b3VsZEFwcGx5U3R5bGVFdmVudCA9IHsgc3R5bGUsIHJhbmdlIH07Ci0gICAgZXZhc19vYmplY3Rf
c21hcnRfY2FsbGJhY2tfY2FsbChtX3ZpZXcsICJlZGl0b3JjbGllbnQsc3R5bGUsYXBwbHkiLCAm
c2hvdWxkQXBwbHlTdHlsZUV2ZW50KTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBFZGl0
b3JDbGllbnRFZmw6OnNob3VsZE1vdmVSYW5nZUFmdGVyRGVsZXRlKFJhbmdlKiwgUmFuZ2UqKQot
ewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQgRWRp
dG9yQ2xpZW50RWZsOjpkaWRCZWdpbkVkaXRpbmcoKQotewotICAgIGV2YXNfb2JqZWN0X3NtYXJ0
X2NhbGxiYWNrX2NhbGwobV92aWV3LCAiZWRpdG9yY2xpZW50LGVkaXRpbmcsYmVnYW4iLCAwKTsK
LX0KLQotdm9pZCBFZGl0b3JDbGllbnRFZmw6OnJlc3BvbmRUb0NoYW5nZWRDb250ZW50cygpCi17
Ci0gICAgRXZhc19PYmplY3QqIGZyYW1lID0gZXdrX3ZpZXdfZnJhbWVfZm9jdXNlZF9nZXQobV92
aWV3KTsKLQotICAgIGlmICghZnJhbWUpCi0gICAgICAgIGZyYW1lID0gZXdrX3ZpZXdfZnJhbWVf
bWFpbl9nZXQobV92aWV3KTsKLQotICAgIGlmICghZnJhbWUpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIGV3a19mcmFtZV9lZGl0b3JfY2xpZW50X2NvbnRlbnRzX2NoYW5nZWQoZnJhbWUpOwotfQot
Ci12b2lkIEVkaXRvckNsaWVudEVmbDo6cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbihGcmFtZSog
Y29yZUZyYW1lKQotewotICAgIGlmICghY29yZUZyYW1lKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBpZiAoY29yZUZyYW1lLT5lZGl0b3IoKS5pZ25vcmVDb21wb3NpdGlvblNlbGVjdGlvbkNoYW5n
ZSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBFdmFzX09iamVjdCogd2ViRnJhbWUgPSBFV0tQ
cml2YXRlOjpraXRGcmFtZShjb3JlRnJhbWUpOwotICAgIGV3a19mcmFtZV9lZGl0b3JfY2xpZW50
X3NlbGVjdGlvbl9jaGFuZ2VkKHdlYkZyYW1lKTsKLQotICAgIGNvcmVGcmFtZS0+ZWRpdG9yKCku
Y2FuY2VsQ29tcG9zaXRpb25JZlNlbGVjdGlvbklzSW52YWxpZCgpOwotfQotCi12b2lkIEVkaXRv
ckNsaWVudEVmbDo6ZGlkRW5kRWRpdGluZygpCi17Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2Fs
bGJhY2tfY2FsbChtX3ZpZXcsICJlZGl0b3JjbGllbnQsZWRpdGluZyxlbmRlZCIsIDApOwotfQot
Ci12b2lkIEVkaXRvckNsaWVudEVmbDo6ZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKQot
ewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgRWRpdG9yQ2xpZW50RWZsOjp3aWxs
V3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoV2ViQ29yZTo6UmFuZ2UqKQotewotfQotCi12b2lk
IEVkaXRvckNsaWVudEVmbDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJDb3Jl
OjpSYW5nZSosIFZlY3RvcjxTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+ID4mKQotewotfQotCi12b2lkIEVkaXRvckNsaWVudEVmbDo6cmVnaXN0ZXJVbmRvU3Rl
cChXVEY6OlBhc3NSZWZQdHI8VW5kb1N0ZXA+IHN0ZXApCi17Ci0gICAgaWYgKCFtX2lzSW5SZWRv
KQotICAgICAgICByZWRvU3RhY2suY2xlYXIoKTsKLSAgICB1bmRvU3RhY2sucHJlcGVuZChzdGVw
KTsKLX0KLQotdm9pZCBFZGl0b3JDbGllbnRFZmw6OnJlZ2lzdGVyUmVkb1N0ZXAoV1RGOjpQYXNz
UmVmUHRyPFVuZG9TdGVwPiBzdGVwKQotewotICAgIHJlZG9TdGFjay5wcmVwZW5kKHN0ZXApOwot
fQotCi12b2lkIEVkaXRvckNsaWVudEVmbDo6Y2xlYXJVbmRvUmVkb09wZXJhdGlvbnMoKQotewot
ICAgIHVuZG9TdGFjay5jbGVhcigpOwotICAgIHJlZG9TdGFjay5jbGVhcigpOwotfQotCi1ib29s
IEVkaXRvckNsaWVudEVmbDo6Y2FuQ29weUN1dChGcmFtZSosIGJvb2wgZGVmYXVsdFZhbHVlKSBj
b25zdAotewotICAgIHJldHVybiBkZWZhdWx0VmFsdWU7Ci19Ci0KLWJvb2wgRWRpdG9yQ2xpZW50
RWZsOjpjYW5QYXN0ZShGcmFtZSosIGJvb2wgZGVmYXVsdFZhbHVlKSBjb25zdAotewotICAgIHJl
dHVybiBkZWZhdWx0VmFsdWU7Ci19Ci0KLWJvb2wgRWRpdG9yQ2xpZW50RWZsOjpjYW5VbmRvKCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gIXVuZG9TdGFjay5pc0VtcHR5KCk7Ci19Ci0KLWJvb2wgRWRp
dG9yQ2xpZW50RWZsOjpjYW5SZWRvKCkgY29uc3QKLXsKLSAgICByZXR1cm4gIXJlZG9TdGFjay5p
c0VtcHR5KCk7Ci19Ci0KLXZvaWQgRWRpdG9yQ2xpZW50RWZsOjp1bmRvKCkKLXsKLSAgICBpZiAo
Y2FuVW5kbygpKSB7Ci0gICAgICAgIFJlZlB0cjxXZWJDb3JlOjpVbmRvU3RlcD4gc3RlcCA9IHVu
ZG9TdGFjay50YWtlRmlyc3QoKTsKLSAgICAgICAgc3RlcC0+dW5hcHBseSgpOwotICAgIH0KLX0K
LQotdm9pZCBFZGl0b3JDbGllbnRFZmw6OnJlZG8oKQotewotICAgIGlmIChjYW5SZWRvKCkpIHsK
LSAgICAgICAgUmVmUHRyPFdlYkNvcmU6OlVuZG9TdGVwPiBzdGVwID0gcmVkb1N0YWNrLnRha2VG
aXJzdCgpOwotCi0gICAgICAgIEFTU0VSVCghbV9pc0luUmVkbyk7Ci0gICAgICAgIG1faXNJblJl
ZG8gPSB0cnVlOwotICAgICAgICBzdGVwLT5yZWFwcGx5KCk7Ci0gICAgICAgIG1faXNJblJlZG8g
PSBmYWxzZTsKLSAgICB9Ci19Ci0KLWJvb2wgRWRpdG9yQ2xpZW50RWZsOjpzaG91bGRJbnNlcnRO
b2RlKE5vZGUqIG5vZGUsIFJhbmdlKiByYW5nZSwgRWRpdG9ySW5zZXJ0QWN0aW9uIGFjdGlvbikK
LXsKLSAgICBFd2tfU2hvdWxkX0luc2VydF9Ob2RlX0V2ZW50IGluc2VydE5vZGVFdmVudCA9IHsg
bm9kZSwgcmFuZ2UsIGFjdGlvbiB9OwotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2Nh
bGwobV92aWV3LCAiZWRpdG9yY2xpZW50LG5vZGUsaW5zZXJ0IiwgJmluc2VydE5vZGVFdmVudCk7
Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQgRWRpdG9yQ2xpZW50RWZsOjpwYWdlRGVzdHJv
eWVkKCkKLXsKLSAgICBkZWxldGUgdGhpczsKLX0KLQotYm9vbCBFZGl0b3JDbGllbnRFZmw6OnNt
YXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCgpCi17Ci0gICAgV2ViQ29yZTo6UGFnZSogY29yZVBhZ2Ug
PSBFV0tQcml2YXRlOjpjb3JlUGFnZShtX3ZpZXcpOwotICAgIGlmICghY29yZVBhZ2UpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gY29yZVBhZ2UtPnNldHRpbmdzKCkuc21hcnRJ
bnNlcnREZWxldGVFbmFibGVkKCk7Ci19Ci0KLWJvb2wgRWRpdG9yQ2xpZW50RWZsOjppc1NlbGVj
dFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoKQotewotICAgIFdlYkNvcmU6OlBhZ2UqIGNvcmVQ
YWdlID0gRVdLUHJpdmF0ZTo6Y29yZVBhZ2UobV92aWV3KTsKLSAgICBpZiAoIWNvcmVQYWdlKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIGNvcmVQYWdlLT5zZXR0aW5ncygpLnNl
bGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoKTsKLX0KLQotdm9pZCBFZGl0b3JDbGllbnRF
Zmw6OnRvZ2dsZUNvbnRpbnVvdXNTcGVsbENoZWNraW5nKCkKLXsKLSAgICBub3RJbXBsZW1lbnRl
ZCgpOwotfQotCi12b2lkIEVkaXRvckNsaWVudEVmbDo6dG9nZ2xlR3JhbW1hckNoZWNraW5nKCkK
LXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi1jb25zdCBjaGFyKiBFZGl0b3JDbGllbnRF
Zmw6OmludGVycHJldEtleUV2ZW50KGNvbnN0IEtleWJvYXJkRXZlbnQqIGV2ZW50KQotewotICAg
IEFTU0VSVChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5rZXlkb3duRXZlbnQgfHwgZXZl
bnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkua2V5cHJlc3NFdmVudCk7Ci0KLSAgICBpZiAoZXZl
bnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkua2V5ZG93bkV2ZW50KQotICAgICAgICByZXR1cm4g
Z2V0S2V5RG93bkNvbW1hbmROYW1lKGV2ZW50KTsKLQotICAgIHJldHVybiBnZXRLZXlQcmVzc0Nv
bW1hbmROYW1lKGV2ZW50KTsKLX0KLQotYm9vbCBFZGl0b3JDbGllbnRFZmw6OmhhbmRsZUVkaXRp
bmdLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50KQotewotICAgIE5vZGUqIG5vZGUg
PSBldmVudC0+dGFyZ2V0KCktPnRvTm9kZSgpOwotICAgIEFTU0VSVChub2RlKTsKLSAgICBGcmFt
ZSogZnJhbWUgPSBub2RlLT5kb2N1bWVudCgpLmZyYW1lKCk7Ci0gICAgQVNTRVJUKGZyYW1lKTsK
LQotICAgIGNvbnN0IFBsYXRmb3JtS2V5Ym9hcmRFdmVudCoga2V5RXZlbnQgPSBldmVudC0+a2V5
RXZlbnQoKTsKLSAgICBpZiAoIWtleUV2ZW50KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICBib29sIGNhcmV0QnJvd3NpbmcgPSBmcmFtZS0+c2V0dGluZ3MoKS5jYXJldEJyb3dzaW5nRW5h
YmxlZCgpOwotICAgIGlmIChjYXJldEJyb3dzaW5nKSB7Ci0gICAgICAgIHN3aXRjaCAoa2V5RXZl
bnQtPndpbmRvd3NWaXJ0dWFsS2V5Q29kZSgpKSB7Ci0gICAgICAgIGNhc2UgVktfTEVGVDoKLSAg
ICAgICAgICAgIGZyYW1lLT5zZWxlY3Rpb24oKS5tb2RpZnkoa2V5RXZlbnQtPnNoaWZ0S2V5KCkg
PyBGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCA6IEZyYW1lU2VsZWN0aW9uOjpBbHRl
cmF0aW9uTW92ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERpcmVj
dGlvbkxlZnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXlFdmVu
dC0+Y3RybEtleSgpID8gV29yZEdyYW51bGFyaXR5IDogQ2hhcmFjdGVyR3JhbnVsYXJpdHksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2VyVHJpZ2dlcmVkKTsKLSAg
ICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBjYXNlIFZLX1JJR0hUOgotICAgICAgICAg
ICAgZnJhbWUtPnNlbGVjdGlvbigpLm1vZGlmeShrZXlFdmVudC0+c2hpZnRLZXkoKSA/IEZyYW1l
U2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kIDogRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25N
b3ZlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGlyZWN0aW9uUmln
aHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXlFdmVudC0+Y3Ry
bEtleSgpID8gV29yZEdyYW51bGFyaXR5IDogQ2hhcmFjdGVyR3JhbnVsYXJpdHksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2VyVHJpZ2dlcmVkKTsKLSAgICAgICAg
ICAgIHJldHVybiB0cnVlOwotICAgICAgICBjYXNlIFZLX1VQOgotICAgICAgICAgICAgZnJhbWUt
PnNlbGVjdGlvbigpLm1vZGlmeShrZXlFdmVudC0+c2hpZnRLZXkoKSA/IEZyYW1lU2VsZWN0aW9u
OjpBbHRlcmF0aW9uRXh0ZW5kIDogRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25Nb3ZlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGlyZWN0aW9uQmFja3dhcmQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXlFdmVudC0+Y3RybEtleSgp
ID8gUGFyYWdyYXBoR3JhbnVsYXJpdHkgOiBMaW5lR3JhbnVsYXJpdHksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBVc2VyVHJpZ2dlcmVkKTsKLSAgICAgICAgICAgIHJl
dHVybiB0cnVlOwotICAgICAgICBjYXNlIFZLX0RPV046Ci0gICAgICAgICAgICBmcmFtZS0+c2Vs
ZWN0aW9uKCkubW9kaWZ5KGtleUV2ZW50LT5zaGlmdEtleSgpID8gRnJhbWVTZWxlY3Rpb246OkFs
dGVyYXRpb25FeHRlbmQgOiBGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbk1vdmUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEaXJlY3Rpb25Gb3J3YXJkLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5RXZlbnQtPmN0cmxLZXkoKSA/IFBh
cmFncmFwaEdyYW51bGFyaXR5IDogTGluZUdyYW51bGFyaXR5LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVXNlclRyaWdnZXJlZCk7Ci0gICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIEVkaXRvcjo6Q29tbWFuZCBjb21tYW5kID0g
ZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoaW50ZXJwcmV0S2V5RXZlbnQoZXZlbnQpKTsKLQotICAg
IGlmIChrZXlFdmVudC0+dHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd24pIHsKLSAg
ICAgICAgLy8gV2ViS2l0IGRvZXNuJ3QgaGF2ZSBlbm91Z2ggaW5mb3JtYXRpb24gYWJvdXQgbW9k
ZSB0byBkZWNpZGUgaG93IGNvbW1hbmRzIHRoYXQganVzdCBpbnNlcnQgdGV4dCBpZiBleGVjdXRl
ZCB2aWEgRWRpdG9yIHNob3VsZCBiZSB0cmVhdGVkLAotICAgICAgICAvLyBzbyB3ZSBsZWF2ZSBp
dCB1cG9uIFdlYkNvcmUgdG8gZWl0aGVyIGhhbmRsZSB0aGVtIGltbWVkaWF0ZWx5IChlLmcuIFRh
YiB0aGF0IGNoYW5nZXMgZm9jdXMpIG9yIGxldCBhIGtleXByZXNzIGV2ZW50IGJlIGdlbmVyYXRl
ZAotICAgICAgICAvLyAoZS5nLiBUYWIgdGhhdCBpbnNlcnRzIGEgVGFiIGNoYXJhY3Rlciwgb3Ig
RW50ZXIpLgotICAgICAgICByZXR1cm4gIWNvbW1hbmQuaXNUZXh0SW5zZXJ0aW9uKCkgJiYgY29t
bWFuZC5leGVjdXRlKGV2ZW50KTsKLSAgICB9Ci0KLSAgICBpZiAoY29tbWFuZC5leGVjdXRlKGV2
ZW50KSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAvLyBEb24ndCBhbGxvdyB0ZXh0IGlu
c2VydGlvbiBmb3Igbm9kZXMgdGhhdCBjYW5ub3QgZWRpdC4KLSAgICBpZiAoIWZyYW1lLT5lZGl0
b3IoKS5jYW5FZGl0KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vIERvbid0IGlu
c2VydCBudWxsIG9yIGNvbnRyb2wgY2hhcmFjdGVycyBhcyB0aGV5IGNhbiByZXN1bHQgaW4gdW5l
eHBlY3RlZCBiZWhhdmlvdXIKLSAgICBpZiAoZXZlbnQtPmNoYXJDb2RlKCkgPCAnICcpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vIERvbid0IGluc2VydCBhbnl0aGluZyBpZiBhIG1v
ZGlmaWVyIGlzIHByZXNzZWQKLSAgICBpZiAoa2V5RXZlbnQtPmN0cmxLZXkoKSB8fCBrZXlFdmVu
dC0+YWx0S2V5KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiBmcmFtZS0+
ZWRpdG9yKCkuaW5zZXJ0VGV4dChldmVudC0+a2V5RXZlbnQoKS0+dGV4dCgpLCBldmVudCk7Ci19
Ci0KLXZvaWQgRWRpdG9yQ2xpZW50RWZsOjpoYW5kbGVLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZl
bnQqIGV2ZW50KQotewotICAgIGlmIChoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVudChldmVudCkp
Ci0gICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwotfQotCi12b2lkIEVkaXRvckNs
aWVudEVmbDo6aGFuZGxlSW5wdXRNZXRob2RLZXlkb3duKEtleWJvYXJkRXZlbnQqKQotewotfQot
Ci1FZGl0b3JDbGllbnRFZmw6OkVkaXRvckNsaWVudEVmbChFdmFzX09iamVjdCogdmlldykKLSAg
ICA6IG1faXNJblJlZG8oZmFsc2UpCi0gICAgLCBtX3ZpZXcodmlldykKLXsKLSAgICBub3RJbXBs
ZW1lbnRlZCgpOwotfQotCi1FZGl0b3JDbGllbnRFZmw6On5FZGl0b3JDbGllbnRFZmwoKQotewot
ICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgRWRpdG9yQ2xpZW50RWZsOjp0ZXh0Rmll
bGREaWRCZWdpbkVkaXRpbmcoRWxlbWVudCopCi17Ci19Ci0KLXZvaWQgRWRpdG9yQ2xpZW50RWZs
Ojp0ZXh0RmllbGREaWRFbmRFZGl0aW5nKEVsZW1lbnQqKQotewotICAgIG5vdEltcGxlbWVudGVk
KCk7Ci19Ci0KLXZvaWQgRWRpdG9yQ2xpZW50RWZsOjp0ZXh0RGlkQ2hhbmdlSW5UZXh0RmllbGQo
RWxlbWVudCopCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotYm9vbCBFZGl0b3JDbGll
bnRFZmw6OmRvVGV4dEZpZWxkQ29tbWFuZEZyb21FdmVudChFbGVtZW50KiwgS2V5Ym9hcmRFdmVu
dCopCi17Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi12b2lkIEVkaXRvckNsaWVudEVmbDo6dGV4
dFdpbGxCZURlbGV0ZWRJblRleHRGaWVsZChFbGVtZW50KikKLXsKLSAgICBub3RJbXBsZW1lbnRl
ZCgpOwotfQotCi12b2lkIEVkaXRvckNsaWVudEVmbDo6dGV4dERpZENoYW5nZUluVGV4dEFyZWEo
RWxlbWVudCopCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotYm9vbCBFZGl0b3JDbGll
bnRFZmw6OnNob3VsZEVyYXNlTWFya2Vyc0FmdGVyQ2hhbmdlU2VsZWN0aW9uKFRleHRDaGVja2lu
Z1R5cGUpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQgRWRpdG9yQ2xpZW50
RWZsOjppZ25vcmVXb3JkSW5TcGVsbERvY3VtZW50KGNvbnN0IFN0cmluZyYpCi17Ci0gICAgbm90
SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBFZGl0b3JDbGllbnRFZmw6OmxlYXJuV29yZChjb25z
dCBTdHJpbmcmKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgRWRpdG9yQ2xp
ZW50RWZsOjpjaGVja1NwZWxsaW5nT2ZTdHJpbmcoU3RyaW5nVmlldywgaW50KiwgaW50KikKLXsK
LSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi1TdHJpbmcgRWRpdG9yQ2xpZW50RWZsOjpnZXRB
dXRvQ29ycmVjdFN1Z2dlc3Rpb25Gb3JNaXNzcGVsbGVkV29yZChjb25zdCBTdHJpbmcmKQotewot
ICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIFN0cmluZygpOwotfQotCi12b2lkIEVk
aXRvckNsaWVudEVmbDo6Y2hlY2tHcmFtbWFyT2ZTdHJpbmcoU3RyaW5nVmlldywgVmVjdG9yPEdy
YW1tYXJEZXRhaWw+JiwgaW50KiwgaW50KikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQot
Ci12b2lkIEVkaXRvckNsaWVudEVmbDo6dXBkYXRlU3BlbGxpbmdVSVdpdGhHcmFtbWFyU3RyaW5n
KGNvbnN0IFN0cmluZyYsIGNvbnN0IEdyYW1tYXJEZXRhaWwmKQotewotICAgIG5vdEltcGxlbWVu
dGVkKCk7Ci19Ci0KLXZvaWQgRWRpdG9yQ2xpZW50RWZsOjp1cGRhdGVTcGVsbGluZ1VJV2l0aE1p
c3NwZWxsZWRXb3JkKGNvbnN0IFN0cmluZyYpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0K
LQotdm9pZCBFZGl0b3JDbGllbnRFZmw6OnNob3dTcGVsbGluZ1VJKGJvb2wpCi17Ci0gICAgbm90
SW1wbGVtZW50ZWQoKTsKLX0KLQotYm9vbCBFZGl0b3JDbGllbnRFZmw6OnNwZWxsaW5nVUlJc1No
b3dpbmcoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQot
Ci12b2lkIEVkaXRvckNsaWVudEVmbDo6Z2V0R3Vlc3Nlc0ZvcldvcmQoY29uc3QgU3RyaW5nJiAv
KndvcmQqLywgY29uc3QgU3RyaW5nJiAvKmNvbnRleHQqLywgVmVjdG9yPFN0cmluZz4mIC8qZ3Vl
c3NlcyovKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5oIGIvU291cmNl
L1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDI2NTM5MmQuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9l
ZmwvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmgKKysrIC9kZXYvbnVsbApAQCAtMSwx
NjAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4g
PHppbW1lcm1hbm5Aa2RlLm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAwNiBaYWNrIFJ1c2luIDx6
YWNrQGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgSW5jLgotICogQ29weXJp
Z2h0IChDKSAyMDA4IElOZFQgLSBJbnN0aXR1dG8gTm9raWEgZGUgVGVjbm9sb2dpYQotICogQ29w
eXJpZ2h0IChDKSAyMDA5LTIwMTAgUHJvRlVTSU9OIGVtYmVkZGVkIHN5c3RlbXMKLSAqIENvcHly
aWdodCAoQykgMjAwOS0yMDEwIFNhbXN1bmcgRWxlY3Ryb25pY3MKLSAqCi0gKiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aWZuZGVmIEVkaXRvckNsaWVudEVmbF9oCi0jZGVmaW5lIEVkaXRvckNsaWVudEVmbF9oCi0KLSNp
bmNsdWRlICJFZGl0b3JDbGllbnQuaCIKLQotI2luY2x1ZGUgIkVkaXRvckluc2VydEFjdGlvbi5o
IgotI2luY2x1ZGUgIlRleHRBZmZpbml0eS5oIgotI2luY2x1ZGUgIlRleHRDaGVja2VyQ2xpZW50
LmgiCi0jaW5jbHVkZSA8d3RmL0RlcXVlLmg+Ci0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+Ci0KLXN0cnVjdCBFd2tfU2hvdWxkX0luc2Vy
dF9Ob2RlX0V2ZW50IHsKLSAgICBXZWJDb3JlOjpOb2RlKiBub2RlOwotICAgIFdlYkNvcmU6OlJh
bmdlKiByYW5nZTsKLSAgICBXZWJDb3JlOjpFZGl0b3JJbnNlcnRBY3Rpb24gYWN0aW9uOwotfTsK
LQotc3RydWN0IEV3a19TaG91bGRfSW5zZXJ0X1RleHRfRXZlbnQgewotICAgIGNvbnN0IGNoYXIq
IHRleHQ7Ci0gICAgV2ViQ29yZTo6UmFuZ2UqIHJhbmdlOwotICAgIFdlYkNvcmU6OkVkaXRvcklu
c2VydEFjdGlvbiBhY3Rpb247Ci19OwotCi1zdHJ1Y3QgRXdrX1Nob3VsZF9DaGFuZ2VfU2VsZWN0
ZWRfUmFuZ2VfRXZlbnQgewotICAgIFdlYkNvcmU6OlJhbmdlKiBmcm9tUmFuZ2U7Ci0gICAgV2Vi
Q29yZTo6UmFuZ2UqIHRvUmFuZ2U7Ci0gICAgV2ViQ29yZTo6RUFmZmluaXR5IGFmZmluaXR5Owot
ICAgIGJvb2wgc3RpbGxTZWxlY3Rpbmc7Ci19OwotCi1zdHJ1Y3QgRXdrX1Nob3VsZF9BcHBseV9T
dHlsZV9FdmVudCB7Ci0gICAgV2ViQ29yZTo6U3R5bGVQcm9wZXJ0aWVzKiBzdHlsZTsKLSAgICBX
ZWJDb3JlOjpSYW5nZSogcmFuZ2U7Ci19OwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBQ
YWdlOwotCi1jbGFzcyBFZGl0b3JDbGllbnRFZmwgOiBwdWJsaWMgRWRpdG9yQ2xpZW50LCBwdWJs
aWMgVGV4dENoZWNrZXJDbGllbnQgewotcHJvdGVjdGVkOgotICAgIGJvb2wgbV9pc0luUmVkbzsK
LSAgICBXVEY6OkRlcXVlPFdURjo6UmVmUHRyPFdlYkNvcmU6OlVuZG9TdGVwPiA+IHVuZG9TdGFj
azsKLSAgICBXVEY6OkRlcXVlPFdURjo6UmVmUHRyPFdlYkNvcmU6OlVuZG9TdGVwPiA+IHJlZG9T
dGFjazsKLQotcHVibGljOgotICAgIGV4cGxpY2l0IEVkaXRvckNsaWVudEVmbChFdmFzX09iamVj
dCogdmlldyk7Ci0gICAgfkVkaXRvckNsaWVudEVmbCgpOwotCi0gICAgLy8gZnJvbSBFZGl0b3JD
bGllbnQKLSAgICB2aXJ0dWFsIHZvaWQgcGFnZURlc3Ryb3llZCgpOwotCi0gICAgdmlydHVhbCBi
b29sIHNob3VsZERlbGV0ZVJhbmdlKFJhbmdlKik7Ci0gICAgdmlydHVhbCBib29sIHNtYXJ0SW5z
ZXJ0RGVsZXRlRW5hYmxlZCgpOwotICAgIHZpcnR1YWwgYm9vbCBpc1NlbGVjdFRyYWlsaW5nV2hp
dGVzcGFjZUVuYWJsZWQoKTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNDb250aW51b3VzU3BlbGxDaGVj
a2luZ0VuYWJsZWQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgdG9nZ2xlQ29udGludW91c1NwZWxsQ2hl
Y2tpbmcoKTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNHcmFtbWFyQ2hlY2tpbmdFbmFibGVkKCk7Ci0g
ICAgdmlydHVhbCB2b2lkIHRvZ2dsZUdyYW1tYXJDaGVja2luZygpOwotICAgIHZpcnR1YWwgaW50
IHNwZWxsQ2hlY2tlckRvY3VtZW50VGFnKCk7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQmVn
aW5FZGl0aW5nKFJhbmdlKik7Ci0gICAgdmlydHVhbCBib29sIHNob3VsZEVuZEVkaXRpbmcoUmFu
Z2UqKTsKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSW5zZXJ0Tm9kZShOb2RlKiwgUmFuZ2UqLCBF
ZGl0b3JJbnNlcnRBY3Rpb24pOwotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRJbnNlcnRUZXh0KGNv
bnN0IFN0cmluZyYsIFJhbmdlKiwgRWRpdG9ySW5zZXJ0QWN0aW9uKTsKLSAgICB2aXJ0dWFsIGJv
b2wgc2hvdWxkQ2hhbmdlU2VsZWN0ZWRSYW5nZShSYW5nZSogZnJvbVJhbmdlLCBSYW5nZSogdG9S
YW5nZSwgRUFmZmluaXR5LCBib29sIHN0aWxsU2VsZWN0aW5nKTsKLQotICAgIHZpcnR1YWwgYm9v
bCBzaG91bGRBcHBseVN0eWxlKFN0eWxlUHJvcGVydGllcyosIFJhbmdlKik7Ci0KLSAgICB2aXJ0
dWFsIGJvb2wgc2hvdWxkTW92ZVJhbmdlQWZ0ZXJEZWxldGUoUmFuZ2UqLCBSYW5nZSopOwotCi0g
ICAgdmlydHVhbCB2b2lkIGRpZEJlZ2luRWRpdGluZygpOwotICAgIHZpcnR1YWwgdm9pZCByZXNw
b25kVG9DaGFuZ2VkQ29udGVudHMoKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVzcG9uZFRvQ2hhbmdl
ZFNlbGVjdGlvbihGcmFtZSopOwotICAgIHZpcnR1YWwgdm9pZCBkaWRFbmRFZGl0aW5nKCk7Ci0g
ICAgdmlydHVhbCB2b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChXZWJDb3JlOjpS
YW5nZSopOwotICAgIHZpcnR1YWwgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgp
OwotICAgIHZpcnR1YWwgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYkNv
cmU6OlJhbmdlKiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+ID4mIHBhc3RlYm9hcmREYXRhKTsKLQotICAgIHZpcnR1
YWwgdm9pZCByZWdpc3RlclVuZG9TdGVwKFdURjo6UGFzc1JlZlB0cjxVbmRvU3RlcD4pOwotICAg
IHZpcnR1YWwgdm9pZCByZWdpc3RlclJlZG9TdGVwKFdURjo6UGFzc1JlZlB0cjxVbmRvU3RlcD4p
OwotICAgIHZpcnR1YWwgdm9pZCBjbGVhclVuZG9SZWRvT3BlcmF0aW9ucygpOwotCi0gICAgdmly
dHVhbCBib29sIGNhbkNvcHlDdXQoRnJhbWUqLCBib29sIGRlZmF1bHRWYWx1ZSkgY29uc3Q7Ci0g
ICAgdmlydHVhbCBib29sIGNhblBhc3RlKEZyYW1lKiwgYm9vbCBkZWZhdWx0VmFsdWUpIGNvbnN0
OwotICAgIHZpcnR1YWwgYm9vbCBjYW5VbmRvKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGNh
blJlZG8oKSBjb25zdDsKLQotICAgIHZpcnR1YWwgdm9pZCB1bmRvKCk7Ci0gICAgdmlydHVhbCB2
b2lkIHJlZG8oKTsKLQotICAgIHZpcnR1YWwgY29uc3QgY2hhciogaW50ZXJwcmV0S2V5RXZlbnQo
Y29uc3QgS2V5Ym9hcmRFdmVudCopOwotICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVFZGl0aW5nS2V5
Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50Kik7Ci0gICAgdmlydHVhbCB2b2lkIGhhbmRsZUtleWJv
YXJkRXZlbnQoS2V5Ym9hcmRFdmVudCopOwotICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVJbnB1dE1l
dGhvZEtleWRvd24oS2V5Ym9hcmRFdmVudCopOwotCi0gICAgdmlydHVhbCB2b2lkIHRleHRGaWVs
ZERpZEJlZ2luRWRpdGluZyhFbGVtZW50Kik7Ci0gICAgdmlydHVhbCB2b2lkIHRleHRGaWVsZERp
ZEVuZEVkaXRpbmcoRWxlbWVudCopOwotICAgIHZpcnR1YWwgdm9pZCB0ZXh0RGlkQ2hhbmdlSW5U
ZXh0RmllbGQoRWxlbWVudCopOwotICAgIHZpcnR1YWwgYm9vbCBkb1RleHRGaWVsZENvbW1hbmRG
cm9tRXZlbnQoRWxlbWVudCosIEtleWJvYXJkRXZlbnQqKTsKLSAgICB2aXJ0dWFsIHZvaWQgdGV4
dFdpbGxCZURlbGV0ZWRJblRleHRGaWVsZChFbGVtZW50Kik7Ci0gICAgdmlydHVhbCB2b2lkIHRl
eHREaWRDaGFuZ2VJblRleHRBcmVhKEVsZW1lbnQqKTsKLQotICAgIHZpcnR1YWwgYm9vbCBzaG91
bGRFcmFzZU1hcmtlcnNBZnRlckNoYW5nZVNlbGVjdGlvbihUZXh0Q2hlY2tpbmdUeXBlKSBjb25z
dDsKLSAgICB2aXJ0dWFsIHZvaWQgaWdub3JlV29yZEluU3BlbGxEb2N1bWVudChjb25zdCBTdHJp
bmcmKTsKLSAgICB2aXJ0dWFsIHZvaWQgbGVhcm5Xb3JkKGNvbnN0IFN0cmluZyYpOwotICAgIHZp
cnR1YWwgdm9pZCBjaGVja1NwZWxsaW5nT2ZTdHJpbmcoU3RyaW5nVmlldywgaW50KiBtaXNzcGVs
bGluZ0xvY2F0aW9uLCBpbnQqIG1pc3NwZWxsaW5nTGVuZ3RoKTsKLSAgICB2aXJ0dWFsIFN0cmlu
ZyBnZXRBdXRvQ29ycmVjdFN1Z2dlc3Rpb25Gb3JNaXNzcGVsbGVkV29yZChjb25zdCBTdHJpbmcm
IG1pc3NwZWxsZWRXb3JkKTsKLSAgICB2aXJ0dWFsIHZvaWQgY2hlY2tHcmFtbWFyT2ZTdHJpbmco
U3RyaW5nVmlldywgV1RGOjpWZWN0b3I8R3JhbW1hckRldGFpbD4mLCBpbnQqIGJhZEdyYW1tYXJM
b2NhdGlvbiwgaW50KiBiYWRHcmFtbWFyTGVuZ3RoKTsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRl
U3BlbGxpbmdVSVdpdGhHcmFtbWFyU3RyaW5nKGNvbnN0IFN0cmluZyYsIGNvbnN0IEdyYW1tYXJE
ZXRhaWwmKTsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU3BlbGxpbmdVSVdpdGhNaXNzcGVsbGVk
V29yZChjb25zdCBTdHJpbmcmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2hvd1NwZWxsaW5nVUkoYm9v
bCBzaG93KTsKLSAgICB2aXJ0dWFsIGJvb2wgc3BlbGxpbmdVSUlzU2hvd2luZygpOwotICAgIHZp
cnR1YWwgdm9pZCBnZXRHdWVzc2VzRm9yV29yZChjb25zdCBTdHJpbmcmIHdvcmQsIGNvbnN0IFN0
cmluZyYgY29udGV4dCwgV1RGOjpWZWN0b3I8U3RyaW5nPiYgZ3Vlc3Nlcyk7Ci0gICAgdmlydHVh
bCB2b2lkIHdpbGxTZXRJbnB1dE1ldGhvZFN0YXRlKCk7Ci0gICAgdmlydHVhbCB2b2lkIHNldElu
cHV0TWV0aG9kU3RhdGUoYm9vbCBlbmFibGVkKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENo
ZWNraW5nT2ZTdHJpbmcoV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OlRleHRDaGVja2luZ1JlcXVl
c3Q+KSB7IH0KLSNpZiBVU0UoVU5JRklFRF9URVhUX0NIRUNLSU5HKQotICAgIHZpcnR1YWwgVmVj
dG9yPFRleHRDaGVja2luZ1Jlc3VsdD4gY2hlY2tUZXh0T2ZQYXJhZ3JhcGgoU3RyaW5nVmlldywg
VGV4dENoZWNraW5nVHlwZU1hc2spIHsgcmV0dXJuIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+
KCk7IH0KLSNlbmRpZgotICAgIHZpcnR1YWwgVGV4dENoZWNrZXJDbGllbnQqIHRleHRDaGVja2Vy
KCkgeyByZXR1cm4gdGhpczsgfQotCi1wcml2YXRlOgotICAgIEV2YXNfT2JqZWN0ICptX3ZpZXc7
Ci19OwotfQotCi0jZW5kaWYgLy8gRWRpdG9yQ2xpZW50RWZsX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWY3YTNmYS4uMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHAKKysr
IC9kZXYvbnVsbApAQCAtMSwxMDE1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYg
WmFjayBSdXNpbiA8emFja0BrZGUub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDExIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAwOCBOb2tp
YSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKLSAqIENvcHlyaWdodCAo
QykgMjAwOCBDb2xsYWJvcmEgTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0
IChDKSAyMDA4IEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDggS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4KLSAqIENvcHlyaWdodCAoQykgMjAwOS0yMDEw
IFByb0ZVU0lPTiBlbWJlZGRlZCBzeXN0ZW1zCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBT
YW1zdW5nIEVsZWN0cm9uaWNzCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRp
b24KLSAqCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRnJhbWVM
b2FkZXJDbGllbnRFZmwuaCIKLQotI2luY2x1ZGUgIkFQSUNhc3QuaCIKLSNpbmNsdWRlICJEb2N1
bWVudExvYWRlci5oIgotI2luY2x1ZGUgIkVycm9yc0VmbC5oIgotI2luY2x1ZGUgIkZvcm1TdGF0
ZS5oIgotI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCi0jaW5jbHVkZSAiRnJhbWVOZXR3b3JraW5n
Q29udGV4dEVmbC5oIgotI2luY2x1ZGUgIkZyYW1lVHJlZS5oIgotI2luY2x1ZGUgIkZyYW1lVmll
dy5oIgotI2luY2x1ZGUgIkhUTUxGb3JtRWxlbWVudC5oIgotI2luY2x1ZGUgIkhUVFBTdGF0dXND
b2Rlcy5oIgotI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKLSNpbmNsdWRlICJNYWluRnJh
bWUuaCIKLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgotI2luY2x1ZGUgIlBhZ2UuaCIKLSNp
bmNsdWRlICJQbHVnaW5EYXRhYmFzZS5oIgotI2luY2x1ZGUgIlByb2dyZXNzVHJhY2tlci5oIgot
I2luY2x1ZGUgIlJlbmRlcldpZGdldC5oIgotI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgot
I2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKLSNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVy
LmgiCi0jaW5jbHVkZSAiU2V0dGluZ3MuaCIKLSNpbmNsdWRlICJXZWJLaXRWZXJzaW9uLmgiCi0j
aW5jbHVkZSAiZXdrX2ZyYW1lX3ByaXZhdGUuaCIKLSNpbmNsdWRlICJld2tfcHJpdmF0ZS5oIgot
I2luY2x1ZGUgImV3a19zZXR0aW5ncy5oIgotI2luY2x1ZGUgImV3a19zZXR0aW5nc19wcml2YXRl
LmgiCi0jaW5jbHVkZSAiZXdrX3ZpZXdfcHJpdmF0ZS5oIgotI2luY2x1ZGUgPEVjb3JlX0V2YXMu
aD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nQ29uY2F0ZW5hdGUuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1GcmFtZUxvYWRlckNs
aWVudEVmbDo6RnJhbWVMb2FkZXJDbGllbnRFZmwoRXZhc19PYmplY3QqIHZpZXcpCi0gICAgOiBt
X3ZpZXcodmlldykKLSAgICAsIG1fZnJhbWUoMCkKLSAgICAsIG1fdXNlckFnZW50KCIiKQotICAg
ICwgbV9jdXN0b21Vc2VyQWdlbnQoIiIpCi0gICAgLCBtX3BsdWdpblZpZXcoMCkKLSAgICAsIG1f
aGFzU2VudFJlc3BvbnNlVG9QbHVnaW4oZmFsc2UpCi17Ci19Ci0KLXN0YXRpYyBTdHJpbmcgY29t
cG9zZVVzZXJBZ2VudCgpCi17Ci0gICAgcmV0dXJuIFN0cmluZyhld2tfc2V0dGluZ3NfZGVmYXVs
dF91c2VyX2FnZW50X2dldCgpKTsKLX0KLQotdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6c2V0
Q3VzdG9tVXNlckFnZW50KGNvbnN0IFN0cmluZyYgYWdlbnQpCi17Ci0gICAgbV9jdXN0b21Vc2Vy
QWdlbnQgPSBhZ2VudDsKLX0KLQotY29uc3QgU3RyaW5nJiBGcmFtZUxvYWRlckNsaWVudEVmbDo6
Y3VzdG9tVXNlckFnZW50KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9jdXN0b21Vc2VyQWdlbnQ7
Ci19Ci0KLVN0cmluZyBGcmFtZUxvYWRlckNsaWVudEVmbDo6dXNlckFnZW50KGNvbnN0IFVSTCYp
Ci17Ci0gICAgaWYgKCFtX2N1c3RvbVVzZXJBZ2VudC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVy
biBtX2N1c3RvbVVzZXJBZ2VudDsKLQotICAgIGlmIChtX3VzZXJBZ2VudC5pc0VtcHR5KCkpCi0g
ICAgICAgIG1fdXNlckFnZW50ID0gY29tcG9zZVVzZXJBZ2VudCgpOwotICAgIHJldHVybiBtX3Vz
ZXJBZ2VudDsKLX0KLQotdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6Y2FsbFBvbGljeUZ1bmN0
aW9uKEZyYW1lUG9saWN5RnVuY3Rpb24gZnVuY3Rpb24sIFBvbGljeUFjdGlvbiBhY3Rpb24pCi17
Ci0gICAgZnVuY3Rpb24oYWN0aW9uKTsKLX0KLQotV1RGOjpQYXNzUmVmUHRyPERvY3VtZW50TG9h
ZGVyPiBGcmFtZUxvYWRlckNsaWVudEVmbDo6Y3JlYXRlRG9jdW1lbnRMb2FkZXIoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdWJzdGl0dXRlRGF0YSYgc3Vic3RpdHV0ZURh
dGEpCi17Ci0gICAgUmVmUHRyPERvY3VtZW50TG9hZGVyPiBsb2FkZXIgPSBEb2N1bWVudExvYWRl
cjo6Y3JlYXRlKHJlcXVlc3QsIHN1YnN0aXR1dGVEYXRhKTsKLSAgICBpZiAoc3Vic3RpdHV0ZURh
dGEuaXNWYWxpZCgpKQotICAgICAgICBsb2FkZXItPnNldERlZmVyTWFpblJlc291cmNlRGF0YUxv
YWQoZmFsc2UpOwotICAgIHJldHVybiBsb2FkZXIucmVsZWFzZSgpOwotfQotCi12b2lkIEZyYW1l
TG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaFdpbGxTdWJtaXRGb3JtKFBhc3NSZWZQdHI8Rm9ybVN0
YXRlPiwgRnJhbWVQb2xpY3lGdW5jdGlvbiBmdW5jdGlvbikKLXsKLSAgICAvLyBGSVhNRTogVGhp
cyBpcyBzdXJlbHkgdG9vIHNpbXBsZQotICAgIEFTU0VSVChmdW5jdGlvbik7Ci0gICAgY2FsbFBv
bGljeUZ1bmN0aW9uKGZ1bmN0aW9uLCBQb2xpY3lVc2UpOwotfQotCi12b2lkIEZyYW1lTG9hZGVy
Q2xpZW50RWZsOjpjb21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IGNo
YXIqIGRhdGEsIGludCBsZW5ndGgpCi17Ci0gICAgaWYgKCFtX3BsdWdpblZpZXcpIHsKLSAgICAg
ICAgbG9hZGVyLT5jb21taXREYXRhKGRhdGEsIGxlbmd0aCk7Ci0KLSAgICAgICAgLy8gTGV0IHRo
ZSBtZWRpYSBkb2N1bWVudCBoYW5kbGUgdGhlIHJlc3Qgb2YgbG9hZGluZyBpdHNlbGYsIGNhbmNl
bCBoZXJlLgotICAgICAgICBGcmFtZSogY29yZUZyYW1lID0gbG9hZGVyLT5mcmFtZSgpOwotICAg
ICAgICBpZiAoY29yZUZyYW1lICYmIGNvcmVGcmFtZS0+ZG9jdW1lbnQoKS0+aXNNZWRpYURvY3Vt
ZW50KCkpCi0gICAgICAgICAgICBsb2FkZXItPmNhbmNlbE1haW5SZXNvdXJjZUxvYWQocGx1Z2lu
V2lsbEhhbmRsZUxvYWRFcnJvcihsb2FkZXItPnJlc3BvbnNlKCkpKTsKLSAgICB9Ci0KLSAgICAv
LyBXZSByZS1jaGVjayBoZXJlIGFzIHRoZSBwbHVnaW4gY2FuIGhhdmUgYmVlbiBjcmVhdGVkCi0g
ICAgaWYgKG1fcGx1Z2luVmlldykgewotICAgICAgICBpZiAoIW1faGFzU2VudFJlc3BvbnNlVG9Q
bHVnaW4pIHsKLSAgICAgICAgICAgIG1fcGx1Z2luVmlldy0+ZGlkUmVjZWl2ZVJlc3BvbnNlKGxv
YWRlci0+cmVzcG9uc2UoKSk7Ci0gICAgICAgICAgICBtX2hhc1NlbnRSZXNwb25zZVRvUGx1Z2lu
ID0gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICBtX3BsdWdpblZpZXctPmRpZFJlY2VpdmVEYXRh
KGRhdGEsIGxlbmd0aCk7Ci0gICAgfQotfQotCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpk
aXNwYXRjaERpZFJlcGxhY2VTdGF0ZVdpdGhpblBhZ2UoKQotewotICAgIG5vdEltcGxlbWVudGVk
KCk7Ci19Ci0KLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkUHVzaFN0YXRl
V2l0aGluUGFnZSgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBGcmFtZUxv
YWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRQb3BTdGF0ZVdpdGhpblBhZ2UoKQotewotICAgIG5v
dEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNo
RGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKERvY3VtZW50TG9hZGVyKiwgdW5zaWdu
ZWQgbG9uZyAvKmlkZW50aWZpZXIqLywgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKQot
ewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6
OmRpc3BhdGNoRGlkQ2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoRG9jdW1lbnRMb2FkZXIq
LCB1bnNpZ25lZCBsb25nIC8qaWRlbnRpZmllciovLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSYpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBGcmFtZUxvYWRlckNs
aWVudEVmbDo6ZGlzcGF0Y2hXaWxsU2VuZFJlcXVlc3QoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwg
dW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBSZXNvdXJjZVJlcXVlc3QmIGNvcmVSZXF1ZXN0LCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiBjb3JlUmVzcG9uc2UpCi17Ci0gICAgQ1N0cmluZyB1cmwg
PSBjb3JlUmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCk7Ci0gICAgQ1N0cmluZyBmaXJzdFBh
cnR5ID0gY29yZVJlcXVlc3QuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKS5zdHJpbmcoKS51dGY4KCk7
Ci0gICAgQ1N0cmluZyBodHRwTWV0aG9kID0gY29yZVJlcXVlc3QuaHR0cE1ldGhvZCgpLnV0Zjgo
KTsKLSAgICBEQkcoIlJlc291cmNlIHVybD0lcywgZmlyc3RfcGFydHk9JXMsIGh0dHBfbWV0aG9k
PSVzIiwgdXJsLmRhdGEoKSwgZmlyc3RQYXJ0eS5kYXRhKCksIGh0dHBNZXRob2QuZGF0YSgpKTsK
LQotICAgIC8vIFdlIHdhbnQgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiBhIHJlcXVlc3QgZm9yIGEg
ZG9jdW1lbnQgdG8gYmUgbG9hZGVkIGludG8KLSAgICAvLyB0aGUgbWFpbiBmcmFtZSwgYSBzdWIt
ZnJhbWUsIG9yIHRoZSBzdWItb2JqZWN0cyBpbiB0aGF0IGRvY3VtZW50LgotICAgIGJvb2wgaXNN
YWluRnJhbWVSZXF1ZXN0ID0gZmFsc2U7Ci0gICAgaWYgKGxvYWRlcikgewotICAgICAgICAgICAg
Y29uc3QgRnJhbWVMb2FkZXIqIGZyYW1lTG9hZGVyID0gbG9hZGVyLT5mcmFtZUxvYWRlcigpOwot
ICAgICAgICAgICAgaXNNYWluRnJhbWVSZXF1ZXN0ID0gKGxvYWRlciA9PSBmcmFtZUxvYWRlci0+
cHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcigpICYmIGZyYW1lTG9hZGVyLT5mcmFtZSgpLmlzTWFp
bkZyYW1lKCkpOwotICAgIH0KLQotICAgIEV3a19GcmFtZV9SZXNvdXJjZV9SZXF1ZXN0IHJlcXVl
c3QgPSB7IDAsIGZpcnN0UGFydHkuZGF0YSgpLCBodHRwTWV0aG9kLmRhdGEoKSwgaWRlbnRpZmll
ciwgbV9mcmFtZSwgaXNNYWluRnJhbWVSZXF1ZXN0IH07Ci0gICAgRXdrX0ZyYW1lX1Jlc291cmNl
X1JlcXVlc3Qgb3JpZyA9IHJlcXVlc3Q7IC8qIEluaXRpYWxpemUgY29uc3QgZmllbGRzLiAqLwot
Ci0gICAgb3JpZy51cmwgPSByZXF1ZXN0LnVybCA9IHVybC5kYXRhKCk7Ci0KLSAgICBFd2tfRnJh
bWVfUmVzb3VyY2VfUmVzcG9uc2UqIHJlZGlyZWN0UmVzcG9uc2U7Ci0gICAgRXdrX0ZyYW1lX1Jl
c291cmNlX1Jlc3BvbnNlIHJlc3BvbnNlQnVmZmVyOwotICAgIENTdHJpbmcgcmVkaXJlY3RVcmws
IG1pbWVUeXBlOwotCi0gICAgaWYgKGNvcmVSZXNwb25zZS5pc051bGwoKSkKLSAgICAgICAgcmVk
aXJlY3RSZXNwb25zZSA9IDA7Ci0gICAgZWxzZSB7Ci0gICAgICAgIHJlZGlyZWN0VXJsID0gY29y
ZVJlc3BvbnNlLnVybCgpLnN0cmluZygpLnV0ZjgoKTsKLSAgICAgICAgbWltZVR5cGUgPSBjb3Jl
UmVzcG9uc2UubWltZVR5cGUoKS51dGY4KCk7Ci0gICAgICAgIHJlc3BvbnNlQnVmZmVyLnVybCA9
IHJlZGlyZWN0VXJsLmRhdGEoKTsKLSAgICAgICAgcmVzcG9uc2VCdWZmZXIuc3RhdHVzX2NvZGUg
PSBjb3JlUmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKTsKLSAgICAgICAgcmVzcG9uc2VCdWZmZXIu
aWRlbnRpZmllciA9IGlkZW50aWZpZXI7Ci0gICAgICAgIHJlc3BvbnNlQnVmZmVyLm1pbWVfdHlw
ZSA9IG1pbWVUeXBlLmRhdGEoKTsKLSAgICAgICAgcmVkaXJlY3RSZXNwb25zZSA9ICZyZXNwb25z
ZUJ1ZmZlcjsKLSAgICB9Ci0KLSAgICBFd2tfRnJhbWVfUmVzb3VyY2VfTWVzc2FnZXMgbWVzc2Fn
ZXMgPSB7ICZyZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlIH07Ci0gICAgZXdrX2ZyYW1lX3JlcXVl
c3Rfd2lsbF9zZW5kKG1fZnJhbWUsICZtZXNzYWdlcyk7Ci0gICAgZXZhc19vYmplY3Rfc21hcnRf
Y2FsbGJhY2tfY2FsbChtX3ZpZXcsICJyZXNvdXJjZSxyZXF1ZXN0LHdpbGxzZW5kIiwgJm1lc3Nh
Z2VzKTsKLQotICAgIGlmIChyZXF1ZXN0LnVybCAhPSBvcmlnLnVybCkgewotICAgICAgICBjb3Jl
UmVxdWVzdC5zZXRVUkwoVVJMKFVSTCgpLCByZXF1ZXN0LnVybCkpOwotCi0gICAgICAgIC8vIENh
bGxpbmcgY2xpZW50IG1pZ2h0IGhhdmUgY2hhbmdlZCBvdXIgdXJsIHBvaW50ZXIuCi0gICAgICAg
IC8vIEZyZWUgdGhlIG5ldyBhbGxvY2F0ZWQgc3RyaW5nLgotICAgICAgICBmcmVlKGNvbnN0X2Nh
c3Q8Y2hhcio+KHJlcXVlc3QudXJsKSk7Ci0gICAgfQotfQotCi1ib29sIEZyYW1lTG9hZGVyQ2xp
ZW50RWZsOjpzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZShEb2N1bWVudExvYWRlciosIHVuc2ln
bmVkIGxvbmcpCi17Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQgRnJhbWVMb2FkZXJDbGll
bnRFZmw6OmFzc2lnbklkZW50aWZpZXJUb0luaXRpYWxSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllciwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBj
b3JlUmVxdWVzdCkKLXsKLSAgICBDU3RyaW5nIHVybCA9IGNvcmVSZXF1ZXN0LnVybCgpLnN0cmlu
ZygpLnV0ZjgoKTsKLSAgICBDU3RyaW5nIGZpcnN0UGFydHkgPSBjb3JlUmVxdWVzdC5maXJzdFBh
cnR5Rm9yQ29va2llcygpLnN0cmluZygpLnV0ZjgoKTsKLSAgICBDU3RyaW5nIGh0dHBNZXRob2Qg
PSBjb3JlUmVxdWVzdC5odHRwTWV0aG9kKCkudXRmOCgpOwotICAgIERCRygiUmVzb3VyY2UgdXJs
PSVzLCBGaXJzdCBwYXJ0eT0lcywgSFRUUCBtZXRob2Q9JXMiLCB1cmwuZGF0YSgpLCBmaXJzdFBh
cnR5LmRhdGEoKSwgaHR0cE1ldGhvZC5kYXRhKCkpOwotCi0gICAgYm9vbCBpc01haW5GcmFtZVJl
cXVlc3QgPSBmYWxzZTsKLSAgICBpZiAobG9hZGVyKSB7Ci0gICAgICAgICAgICBjb25zdCBGcmFt
ZUxvYWRlciogZnJhbWVMb2FkZXIgPSBsb2FkZXItPmZyYW1lTG9hZGVyKCk7Ci0gICAgICAgICAg
ICBpc01haW5GcmFtZVJlcXVlc3QgPSAobG9hZGVyID09IGZyYW1lTG9hZGVyLT5wcm92aXNpb25h
bERvY3VtZW50TG9hZGVyKCkgJiYgZnJhbWVMb2FkZXItPmZyYW1lKCkuaXNNYWluRnJhbWUoKSk7
Ci0gICAgfQotCi0gICAgRXdrX0ZyYW1lX1Jlc291cmNlX1JlcXVlc3QgcmVxdWVzdCA9IHsgdXJs
LmRhdGEoKSwgZmlyc3RQYXJ0eS5kYXRhKCksIGh0dHBNZXRob2QuZGF0YSgpLCBpZGVudGlmaWVy
LCBtX2ZyYW1lLCBpc01haW5GcmFtZVJlcXVlc3QgfTsKLSAgICBld2tfZnJhbWVfcmVxdWVzdF9h
c3NpZ25faWRlbnRpZmllcihtX2ZyYW1lLCAmcmVxdWVzdCk7Ci0gICAgZXZhc19vYmplY3Rfc21h
cnRfY2FsbGJhY2tfY2FsbChtX3ZpZXcsICJyZXNvdXJjZSxyZXF1ZXN0LG5ldyIsICZyZXF1ZXN0
KTsKLX0KLQotdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZnJhbWVMb2FkZXJEZXN0cm95ZWQo
KQotewotICAgIGlmIChtX2ZyYW1lKQotICAgICAgICBld2tfZnJhbWVfY29yZV9nb25lKG1fZnJh
bWUpOwotICAgIG1fZnJhbWUgPSAwOwotCi0gICAgZGVsZXRlIHRoaXM7Ci19Ci0KLXZvaWQgRnJh
bWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNlKERvY3VtZW50TG9h
ZGVyKiBsb2FkZXIsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgY29yZVJlc3BvbnNlKQotewotICAgIC8vIFVwZGF0ZSBvdXIga25vd2xlZGdlIG9mIHJl
cXVlc3Qgc291cCBmbGFncyAtIHNvbWUgYXJlIG9ubHkgc2V0Ci0gICAgLy8gYWZ0ZXIgdGhlIHJl
cXVlc3QgaXMgZG9uZS4KLSAgICBsb2FkZXItPnJlcXVlc3QoKS5zZXRTb3VwTWVzc2FnZUZsYWdz
KGNvcmVSZXNwb25zZS5zb3VwTWVzc2FnZUZsYWdzKCkpOwotCi0gICAgbV9yZXNwb25zZSA9IGNv
cmVSZXNwb25zZTsKLQotICAgIENTdHJpbmcgbWltZVR5cGUgPSBjb3JlUmVzcG9uc2UubWltZVR5
cGUoKS51dGY4KCk7Ci0gICAgRXdrX0ZyYW1lX1Jlc291cmNlX1Jlc3BvbnNlIHJlc3BvbnNlID0g
eyAwLCBjb3JlUmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSwgaWRlbnRpZmllciwgbWltZVR5cGUu
ZGF0YSgpIH07Ci0gICAgQ1N0cmluZyB1cmwgPSBjb3JlUmVzcG9uc2UudXJsKCkuc3RyaW5nKCku
dXRmOCgpOwotICAgIHJlc3BvbnNlLnVybCA9IHVybC5kYXRhKCk7Ci0KLSAgICBld2tfZnJhbWVf
cmVzcG9uc2VfcmVjZWl2ZWQobV9mcmFtZSwgJnJlc3BvbnNlKTsKLSAgICBldmFzX29iamVjdF9z
bWFydF9jYWxsYmFja19jYWxsKG1fdmlldywgInJlc291cmNlLHJlc3BvbnNlLHJlY2VpdmVkIiwg
JnJlc3BvbnNlKTsKLX0KLQotdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEZWNp
ZGVQb2xpY3lGb3JSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QsIEZyYW1lUG9saWN5RnVuY3Rpb24g
ZnVuY3Rpb24pCi17Ci0gICAgLy8gd2UgbmVlZCB0byBjYWxsIGRpcmVjdGx5IGhlcmUgKGN1cnJl
bnRseSBjYWxsUG9saWN5RnVuY3Rpb24gZG9lcyB0aGF0ISkKLSAgICBBU1NFUlQoZnVuY3Rpb24p
OwotCi0gICAgaWYgKHJlc291cmNlUmVxdWVzdC5pc051bGwoKSkgewotICAgICAgICBjYWxsUG9s
aWN5RnVuY3Rpb24oZnVuY3Rpb24sIFBvbGljeUlnbm9yZSk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICAvLyBJZ25vcmUgcmVzcG9uc2VzIHdpdGggYW4gSFRUUCBzdGF0dXMgY29kZSBv
ZiAyMDQgKE5vIENvbnRlbnQpCi0gICAgaWYgKHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgPT0g
SFRUUE5vQ29udGVudCkgewotICAgICAgICBjYWxsUG9saWN5RnVuY3Rpb24oZnVuY3Rpb24sIFBv
bGljeUlnbm9yZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoY2FuU2hvd01J
TUVUeXBlKHJlc3BvbnNlLm1pbWVUeXBlKCkpKQotICAgICAgICBjYWxsUG9saWN5RnVuY3Rpb24o
ZnVuY3Rpb24sIFBvbGljeVVzZSk7Ci0gICAgZWxzZQotICAgICAgICBjYWxsUG9saWN5RnVuY3Rp
b24oZnVuY3Rpb24sIFBvbGljeURvd25sb2FkKTsKLX0KLQotdm9pZCBGcmFtZUxvYWRlckNsaWVu
dEVmbDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oY29uc3QgTmF2aWdh
dGlvbkFjdGlvbiYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0LCBQYXNz
UmVmUHRyPEZvcm1TdGF0ZT4sIGNvbnN0IFN0cmluZyYsIEZyYW1lUG9saWN5RnVuY3Rpb24gZnVu
Y3Rpb24pCi17Ci0gICAgQVNTRVJUKGZ1bmN0aW9uKTsKLSAgICBBU1NFUlQobV9mcmFtZSk7Ci0K
LSAgICBpZiAocmVzb3VyY2VSZXF1ZXN0LmlzTnVsbCgpKSB7Ci0gICAgICAgIGNhbGxQb2xpY3lG
dW5jdGlvbihmdW5jdGlvbiwgUG9saWN5SWdub3JlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIC8vIGlmIG5vdCBhY2NlcHROYXZpZ2F0aW9uUmVxdWVzdCAtIGxvb2sgYXQgUXQgLT4g
UG9saWN5SWdub3JlOwotICAgIC8vIEZJWE1FOiBkbyBwcm9wZXIgY2hlY2sgYW5kIG9ubHkgcmVz
ZXQgZm9ybXMgd2hlbiBvbiBQb2xpY3lJZ25vcmUKLSAgICBGcmFtZSogZiA9IEVXS1ByaXZhdGU6
OmNvcmVGcmFtZShtX2ZyYW1lKTsKLSAgICBmLT5sb2FkZXIoKS5yZXNldE11bHRpcGxlRm9ybVN1
Ym1pc3Npb25Qcm90ZWN0aW9uKCk7Ci0gICAgY2FsbFBvbGljeUZ1bmN0aW9uKGZ1bmN0aW9uLCBQ
b2xpY3lVc2UpOwotfQotCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9u
LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCwgUGFzc1JlZlB0cjxGb3Jt
U3RhdGU+LCBGcmFtZVBvbGljeUZ1bmN0aW9uIGZ1bmN0aW9uKQotewotICAgIEFTU0VSVChmdW5j
dGlvbik7Ci0gICAgQVNTRVJUKG1fZnJhbWUpOwotCi0gICAgaWYgKHJlc291cmNlUmVxdWVzdC5p
c051bGwoKSkgewotICAgICAgICBjYWxsUG9saWN5RnVuY3Rpb24oZnVuY3Rpb24sIFBvbGljeUln
bm9yZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBpZiBub3QgYWNjZXB0TmF2
aWdhdGlvblJlcXVlc3QgLSBsb29rIGF0IFF0IC0+IFBvbGljeUlnbm9yZTsKLSAgICAvLyBGSVhN
RTogZG8gcHJvcGVyIGNoZWNrIGFuZCBvbmx5IHJlc2V0IGZvcm1zIHdoZW4gb24gUG9saWN5SWdu
b3JlCi0gICAgQ1N0cmluZyB1cmwgPSByZXNvdXJjZVJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRm
OCgpOwotICAgIENTdHJpbmcgZmlyc3RQYXJ0eSA9IHJlc291cmNlUmVxdWVzdC5maXJzdFBhcnR5
Rm9yQ29va2llcygpLnN0cmluZygpLnV0ZjgoKTsKLSAgICBDU3RyaW5nIGh0dHBNZXRob2QgPSBy
ZXNvdXJjZVJlcXVlc3QuaHR0cE1ldGhvZCgpLnV0ZjgoKTsKLSAgICBFd2tfRnJhbWVfUmVzb3Vy
Y2VfUmVxdWVzdCByZXF1ZXN0ID0geyB1cmwuZGF0YSgpLCBmaXJzdFBhcnR5LmRhdGEoKSwgaHR0
cE1ldGhvZC5kYXRhKCksIDAsIG1fZnJhbWUsIGZhbHNlIH07Ci0gICAgYm9vbCByZXQgPSBld2tf
dmlld19uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbihtX3ZpZXcsICZyZXF1ZXN0LCBhY3Rpb24u
dHlwZSgpKTsKLQotICAgIFBvbGljeUFjdGlvbiBwb2xpY3k7Ci0gICAgaWYgKCFyZXQpCi0gICAg
ICAgIHBvbGljeSA9IFBvbGljeUlnbm9yZTsKLSAgICBlbHNlIHsKLSAgICAgICAgaWYgKGFjdGlv
bi50eXBlKCkgPT0gTmF2aWdhdGlvblR5cGVGb3JtU3VibWl0dGVkIHx8IGFjdGlvbi50eXBlKCkg
PT0gTmF2aWdhdGlvblR5cGVGb3JtUmVzdWJtaXR0ZWQpIHsKLSAgICAgICAgICAgIEZyYW1lKiBm
ID0gRVdLUHJpdmF0ZTo6Y29yZUZyYW1lKG1fZnJhbWUpOwotICAgICAgICAgICAgZi0+bG9hZGVy
KCkucmVzZXRNdWx0aXBsZUZvcm1TdWJtaXNzaW9uUHJvdGVjdGlvbigpOwotICAgICAgICB9Ci0g
ICAgICAgIHBvbGljeSA9IFBvbGljeVVzZTsKLSAgICB9Ci0gICAgY2FsbFBvbGljeUZ1bmN0aW9u
KGZ1bmN0aW9uLCBwb2xpY3kpOwotfQotCi1QYXNzUmVmUHRyPFdpZGdldD4gRnJhbWVMb2FkZXJD
bGllbnRFZmw6OmNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiBwbHVnaW5TaXplLCBIVE1MUGx1
Z0luRWxlbWVudCogZWxlbWVudCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMsIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIGJvb2wgbG9hZE1hbnVhbGx5KQotewotICAgIEFTU0VSVChtX2ZyYW1l
KTsKLSAgICBBU1NFUlQobV92aWV3KTsKLQotICAgIHJldHVybiBld2tfdmlld19wbHVnaW5fY3Jl
YXRlKG1fdmlldywgbV9mcmFtZSwgcGx1Z2luU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBlbGVtZW50LCB1cmwsIHBhcmFtTmFtZXMsIHBhcmFtVmFsdWVzLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbWVUeXBlLCBsb2FkTWFudWFsbHkpOwotfQot
Ci1QYXNzUmVmUHRyPEZyYW1lPiBGcmFtZUxvYWRlckNsaWVudEVmbDo6Y3JlYXRlRnJhbWUoY29u
c3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBv
d25lckVsZW1lbnQsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIGJvb2wgLyphbGxvd3NTY3JvbGxp
bmcqLywgaW50IC8qbWFyZ2luV2lkdGgqLywgaW50IC8qbWFyZ2luSGVpZ2h0Ki8pCi17Ci0gICAg
QVNTRVJUKG1fZnJhbWUpOwotICAgIEFTU0VSVChtX3ZpZXcpOwotCi0gICAgRXZhc19PYmplY3Qq
IHN1YkZyYW1lID0gZXdrX2ZyYW1lX2NoaWxkX2FkZChtX2ZyYW1lLCBuYW1lLCBvd25lckVsZW1l
bnQpOwotICAgIGlmICghc3ViRnJhbWUpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgV2ViQ29y
ZTo6RnJhbWUqIGNvcmVTdWJGcmFtZSA9IEVXS1ByaXZhdGU6OmNvcmVGcmFtZShzdWJGcmFtZSk7
Ci0gICAgQVNTRVJUKGNvcmVTdWJGcmFtZSk7Ci0KLSAgICAvLyBUaGUgY3JlYXRpb24gb2YgdGhl
IGZyYW1lIG1heSBoYXZlIHJ1biBhcmJpdHJhcnkgSmF2YVNjcmlwdCB0aGF0IHJlbW92ZWQgaXQg
ZnJvbSB0aGUgcGFnZSBhbHJlYWR5LgotICAgIGlmICghY29yZVN1YkZyYW1lLT5wYWdlKCkpIHsK
LSAgICAgICAgZXZhc19vYmplY3RfZGVsKHN1YkZyYW1lKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0g
ICAgfQotCi0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChtX3ZpZXcsICJmcmFt
ZSxjcmVhdGVkIiwgc3ViRnJhbWUpOwotICAgIEVXS1ByaXZhdGU6OmNvcmVGcmFtZShtX2ZyYW1l
KS0+bG9hZGVyKCkubG9hZFVSTEludG9DaGlsZEZyYW1lKHVybCwgcmVmZXJyZXIsIGNvcmVTdWJG
cmFtZSk7Ci0KLSAgICAvLyBUaGUgZnJhbWUncyBvbmxvYWQgaGFuZGxlciBtYXkgaGF2ZSByZW1v
dmVkIGl0IGZyb20gdGhlIGRvY3VtZW50LgotICAgIC8vIFNlZSBmYXN0L2RvbS9udWxsLXBhZ2Ut
c2hvdy1tb2RhbC1kaWFsb2ctY3Jhc2guaHRtbCBmb3IgYW4gZXhhbXBsZS4KLSAgICBpZiAoIWNv
cmVTdWJGcmFtZS0+dHJlZSgpLnBhcmVudCgpKSB7Ci0gICAgICAgIGV2YXNfb2JqZWN0X2RlbChz
dWJGcmFtZSk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIGV3a192aWV3X2ZyYW1l
X3JlY3RfY2hhbmdlZChtX3ZpZXcpOwotCi0gICAgcmV0dXJuIGNvcmVTdWJGcmFtZTsKLX0KLQot
dm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6cmVkaXJlY3REYXRhVG9QbHVnaW4oV2lkZ2V0KiBw
bHVnaW5XaWRnZXQpCi17Ci0gICAgbV9wbHVnaW5WaWV3ID0gdG9QbHVnaW5WaWV3KHBsdWdpbldp
ZGdldCk7Ci0gICAgaWYgKHBsdWdpbldpZGdldCkKLSAgICAgICAgbV9oYXNTZW50UmVzcG9uc2VU
b1BsdWdpbiA9IGZhbHNlOwotfQotCi1QYXNzUmVmUHRyPFdpZGdldD4gRnJhbWVMb2FkZXJDbGll
bnRFZmw6OmNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgSW50U2l6ZSYsIEhUTUxBcHBsZXRF
bGVtZW50KiwgY29uc3QgVVJMJiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgLypwYXJh
bU5hbWVzKi8sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiAvKnBhcmFtVmFsdWVzKi8pCi17Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKLX0KLQotT2JqZWN0Q29udGVudFR5cGUg
RnJhbWVMb2FkZXJDbGllbnRFZmw6Om9iamVjdENvbnRlbnRUeXBlKGNvbnN0IFVSTCYgdXJsLCBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIHNob3VsZFByZWZlclBsdWdJbnNGb3JJbWFnZXMp
Ci17Ci0gICAgLy8gRklYTUU6IG9uY2UgcGx1Z2luIHN1cHBvcnQgaXMgZW5hYmxlZCwgdGhpcyBt
ZXRob2QgbmVlZHMgdG8gY29ycmVjdGx5IGhhbmRsZSB0aGUgJ3Nob3VsZFByZWZlclBsdWdJbnNG
b3JJbWFnZXMnIGZsYWcuIFNlZQotICAgIC8vIFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpkZWZhdWx0
T2JqZWN0Q29udGVudFR5cGUoKSBmb3IgYW4gZXhhbXBsZS4KLSAgICBVTlVTRURfUEFSQU0oc2hv
dWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcyk7Ci0KLSAgICBpZiAodXJsLmlzRW1wdHkoKSAmJiBt
aW1lVHlwZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBPYmplY3RDb250ZW50Tm9uZTsKLQot
ICAgIC8vIFdlIGRvbid0IHVzZSBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRNSU1FVHlwZUZvclBhdGgo
KSBiZWNhdXNlIGl0IHJldHVybnMgImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIgdXBvbiBmYWls
dXJlCi0gICAgU3RyaW5nIHR5cGUgPSBtaW1lVHlwZTsKLSAgICBpZiAodHlwZS5pc0VtcHR5KCkp
Ci0gICAgICAgIHR5cGUgPSBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRNSU1FVHlwZUZvckV4dGVuc2lv
bih1cmwucGF0aCgpLnN1YnN0cmluZyh1cmwucGF0aCgpLnJldmVyc2VGaW5kKCcuJykgKyAxKSk7
Ci0KLSAgICBpZiAodHlwZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBPYmplY3RDb250ZW50
RnJhbWU7Ci0KLSAgICBpZiAoTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZU1JTUVU
eXBlKHR5cGUpKQotICAgICAgICByZXR1cm4gT2JqZWN0Q29udGVudEltYWdlOwotCi0jaWYgMCAv
LyBQbHVnaW5EYXRhYmFzZSBpcyBkaXNhYmxlZCB1bnRpbCB3ZSBoYXZlIFBsdWdpbiBzeXN0ZW0g
ZG9uZS4KLSAgICBpZiAoUGx1Z2luRGF0YWJhc2U6Omluc3RhbGxlZFBsdWdpbnMoKS0+aXNNSU1F
VHlwZVJlZ2lzdGVyZWQobWltZVR5cGUpKQotICAgICAgICByZXR1cm4gT2JqZWN0Q29udGVudE5l
dHNjYXBlUGx1Z2luOwotI2VuZGlmCi0KLSAgICBpZiAoTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBw
b3J0ZWROb25JbWFnZU1JTUVUeXBlKHR5cGUpKQotICAgICAgICByZXR1cm4gT2JqZWN0Q29udGVu
dEZyYW1lOwotCi0gICAgaWYgKHVybC5wcm90b2NvbCgpID09ICJhYm91dCIpCi0gICAgICAgIHJl
dHVybiBPYmplY3RDb250ZW50RnJhbWU7Ci0KLSAgICByZXR1cm4gT2JqZWN0Q29udGVudE5vbmU7
Ci19Ci0KLVN0cmluZyBGcmFtZUxvYWRlckNsaWVudEVmbDo6b3ZlcnJpZGVNZWRpYVR5cGUoKSBj
b25zdAotewotICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGV3a19zZXR0aW5nc19jc3NfbWVk
aWFfdHlwZV9nZXQoKSk7Ci19Ci0KLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNo
RGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCi17Ci0g
ICAgaWYgKCZ3b3JsZCAhPSAmbWFpblRocmVhZE5vcm1hbFdvcmxkKCkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBFV0tQcml2YXRlOjpjb3JlRnJhbWUobV9mcmFt
ZSk7Ci0gICAgQVNTRVJUKGNvcmVGcmFtZSk7Ci0KLSAgICBpZiAoIWNvcmVGcmFtZS0+c2V0dGlu
Z3MoKS5pc1NjcmlwdEVuYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgRXdrX1dpbmRv
d19PYmplY3RfQ2xlYXJlZF9FdmVudCBldmVudDsKLSAgICBldmVudC5jb250ZXh0ID0gdG9HbG9i
YWxSZWYoY29yZUZyYW1lLT5zY3JpcHQoKS5nbG9iYWxPYmplY3QobWFpblRocmVhZE5vcm1hbFdv
cmxkKCkpLT5nbG9iYWxFeGVjKCkpOwotICAgIGV2ZW50LndpbmRvd09iamVjdCA9IHRvUmVmKGNv
cmVGcmFtZS0+c2NyaXB0KCkuZ2xvYmFsT2JqZWN0KG1haW5UaHJlYWROb3JtYWxXb3JsZCgpKSk7
Ci0gICAgZXZlbnQuZnJhbWUgPSBtX2ZyYW1lOwotCi0gICAgZXZhc19vYmplY3Rfc21hcnRfY2Fs
bGJhY2tfY2FsbChtX3ZpZXcsICJ3aW5kb3csb2JqZWN0LGNsZWFyZWQiLCAmZXZlbnQpOwotCi0j
aWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCi0gICAgZXdrX3ZpZXdfanNfd2luZG93X29i
amVjdF9jbGVhcihtX3ZpZXcsIG1fZnJhbWUpOwotI2VuZGlmCi19Ci0KLXZvaWQgRnJhbWVMb2Fk
ZXJDbGllbnRFZmw6OnJlZ2lzdGVyRm9ySWNvbk5vdGlmaWNhdGlvbihib29sKQotewotICAgIG5v
dEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OnNldE1haW5G
cmFtZURvY3VtZW50UmVhZHkoYm9vbCkKLXsKLSAgICAvLyB0aGlzIGlzIG9ubHkgaW50ZXJlc3Rp
bmcgb25jZSB3ZSBwcm92aWRlIGFuIGV4dGVybmFsIEFQSSBmb3IgdGhlIERPTQotfQotCi1ib29s
IEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpoYXNXZWJWaWV3KCkgY29uc3QKLXsKLSAgICBpZiAoIW1f
dmlldykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJv
b2wgRnJhbWVMb2FkZXJDbGllbnRFZmw6Omhhc0ZyYW1lVmlldygpIGNvbnN0Ci17Ci0gICAgbm90
SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCBGcmFtZUxvYWRlckNs
aWVudEVmbDo6ZGlzcGF0Y2hEaWRGaW5pc2hMb2FkKCkKLXsKLSAgICBld2tfZnJhbWVfbG9hZF9m
aW5pc2hlZChtX2ZyYW1lLCAwLCAwLCAwLCAwLCAwKTsKLX0KLQotdm9pZCBGcmFtZUxvYWRlckNs
aWVudEVmbDo6ZnJhbWVMb2FkQ29tcGxldGVkKCkKLXsKLSAgICAvLyBOb3RlOiBDYW4gYmUgY2Fs
bGVkIG11bHRpcGxlIHRpbWVzLgotfQotCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpzYXZl
Vmlld1N0YXRlVG9JdGVtKEhpc3RvcnlJdGVtKiBpdGVtKQotewotICAgIGV3a19mcmFtZV92aWV3
X3N0YXRlX3NhdmUobV9mcmFtZSwgaXRlbSk7Ci19Ci0KLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRF
Zmw6OnJlc3RvcmVWaWV3U3RhdGUoKQotewotICAgIEFTU0VSVChtX2ZyYW1lKTsKLSAgICBBU1NF
UlQobV92aWV3KTsKLQotICAgIGV3a192aWV3X3Jlc3RvcmVfc3RhdGUobV92aWV3LCBtX2ZyYW1l
KTsKLX0KLQotdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6dXBkYXRlR2xvYmFsSGlzdG9yeVJl
ZGlyZWN0TGlua3MoKQotewotICAgICAgICBXZWJDb3JlOjpGcmFtZSogZnJhbWUgPSBFV0tQcml2
YXRlOjpjb3JlRnJhbWUobV9mcmFtZSk7Ci0gICAgICAgIGlmICghZnJhbWUpCi0gICAgICAgICAg
ICByZXR1cm47Ci0KLSAgICAgICAgV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqIGxvYWRlciA9IGZy
YW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpOwotICAgICAgICBpZiAoIWxvYWRlcikKLSAg
ICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBpZiAoIWxvYWRlci0+Y2xpZW50UmVkaXJlY3RT
b3VyY2VGb3JIaXN0b3J5KCkuaXNOdWxsKCkpIHsKLSAgICAgICAgICAgIGNvbnN0IENTdHJpbmcm
IHNvdXJjZVVSTCA9IGxvYWRlci0+Y2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5KCkudXRm
OCgpOwotICAgICAgICAgICAgY29uc3QgQ1N0cmluZyYgZGVzdGluYXRpb25VUkwgPSBsb2FkZXIt
PmNsaWVudFJlZGlyZWN0RGVzdGluYXRpb25Gb3JIaXN0b3J5KCkudXRmOCgpOwotICAgICAgICAg
ICAgRXdrX1ZpZXdfUmVkaXJlY3Rpb25fRGF0YSBkYXRhID0geyBzb3VyY2VVUkwuZGF0YSgpLCBk
ZXN0aW5hdGlvblVSTC5kYXRhKCkgfTsKLSAgICAgICAgICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2Nh
bGxiYWNrX2NhbGwobV92aWV3LCAicGVyZm9ybSxjbGllbnQscmVkaXJlY3QiLCAmZGF0YSk7Ci0g
ICAgICAgIH0KLQotICAgICAgICBpZiAoIWxvYWRlci0+c2VydmVyUmVkaXJlY3RTb3VyY2VGb3JI
aXN0b3J5KCkuaXNOdWxsKCkpIHsKLSAgICAgICAgICAgIGNvbnN0IENTdHJpbmcmIHNvdXJjZVVS
TCA9IGxvYWRlci0+c2VydmVyUmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5KCkudXRmOCgpOwotICAg
ICAgICAgICAgY29uc3QgQ1N0cmluZyYgZGVzdGluYXRpb25VUkwgPSBsb2FkZXItPnNlcnZlclJl
ZGlyZWN0RGVzdGluYXRpb25Gb3JIaXN0b3J5KCkudXRmOCgpOwotICAgICAgICAgICAgRXdrX1Zp
ZXdfUmVkaXJlY3Rpb25fRGF0YSBkYXRhID0geyBzb3VyY2VVUkwuZGF0YSgpLCBkZXN0aW5hdGlv
blVSTC5kYXRhKCkgfTsKLSAgICAgICAgICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2Nh
bGwobV92aWV3LCAicGVyZm9ybSxzZXJ2ZXIscmVkaXJlY3QiLCAmZGF0YSk7Ci0gICAgICAgIH0K
LX0KLQotYm9vbCBGcmFtZUxvYWRlckNsaWVudEVmbDo6c2hvdWxkR29Ub0hpc3RvcnlJdGVtKEhp
c3RvcnlJdGVtKiBpdGVtKSBjb25zdAotewotICAgIC8vIEZJWE1FOiBUaGlzIGlzIGEgdmVyeSBz
aW1wbGUgaW1wbGVtZW50YXRpb24uIE1vcmUgc29waGlzdGljYXRlZAotICAgIC8vIGltcGxlbWVu
dGF0aW9uIHdvdWxkIGRlbGVnYXRlIHRoZSBkZWNpc2lvbiB0byBhIFBvbGljeURlbGVnYXRlLgot
ICAgIC8vIFNlZSBtYWMgaW1wbGVtZW50YXRpb24gZm9yIGV4YW1wbGUuCi0gICAgcmV0dXJuIGl0
ZW07Ci19Ci0KLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpZERpc3BsYXlJbnNlY3VyZUNv
bnRlbnQoKQotewotICAgIGV3a19mcmFtZV9taXhlZF9jb250ZW50X2Rpc3BsYXllZF9zZXQobV9m
cmFtZSwgdHJ1ZSk7Ci19Ci0KLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpZFJ1bkluc2Vj
dXJlQ29udGVudChTZWN1cml0eU9yaWdpbiosIGNvbnN0IFVSTCYpCi17Ci0gICAgZXdrX2ZyYW1l
X21peGVkX2NvbnRlbnRfcnVuX3NldChtX2ZyYW1lLCB0cnVlKTsKLX0KLQotdm9pZCBGcmFtZUxv
YWRlckNsaWVudEVmbDo6ZGlkRGV0ZWN0WFNTKGNvbnN0IFVSTCYgaW5zZWN1cmVVUkwsIGJvb2wg
ZGlkQmxvY2tFbnRpcmVQYWdlKQotewotICAgIENTdHJpbmcgY3MgPSBpbnNlY3VyZVVSTC5zdHJp
bmcoKS51dGY4KCk7Ci0gICAgRXdrX0ZyYW1lX1hzc19Ob3RpZmljYXRpb24geHNzSW5mbyA9IHsg
Y3MuZGF0YSgpLCBkaWRCbG9ja0VudGlyZVBhZ2UgfTsKLQotICAgIGV3a19mcmFtZV94c3NfZGV0
ZWN0ZWQobV9mcmFtZSwgJnhzc0luZm8pOwotfQotCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZs
Ojpmb3JjZUxheW91dCgpCi17Ci0gICAgZXdrX2ZyYW1lX2ZvcmNlX2xheW91dChtX2ZyYW1lKTsK
LX0KLQotdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6Zm9yY2VMYXlvdXRGb3JOb25IVE1MKCkK
LXsKLX0KLQotdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6c2V0Q29waWVzT25TY3JvbGwoKQot
ewotICAgIC8vIGFwcGFyZW50bHkgbWFjIHNwZWNpZmljIChRdCBjb21tZW50KQotfQotCi12b2lk
IEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkZXRhY2hlZEZyb21QYXJlbnQyKCkKLXsKLX0KLQotdm9p
ZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGV0YWNoZWRGcm9tUGFyZW50MygpCi17Ci19Ci0KLXZv
aWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmxvYWRlZEZyb21DYWNoZWRQYWdlKCkKLXsKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRj
aERpZEhhbmRsZU9ubG9hZEV2ZW50cygpCi17Ci0gICAgZXdrX3ZpZXdfb25sb2FkX2V2ZW50KG1f
dmlldywgbV9mcmFtZSk7Ci19Ci0KLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNo
RGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKCkKLXsKLSAgICBld2tf
ZnJhbWVfcmVkaXJlY3RfcHJvdmlzaW9uYWxfbG9hZChtX2ZyYW1lKTsKLX0KLQotdm9pZCBGcmFt
ZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRDYW5jZWxDbGllbnRSZWRpcmVjdCgpCi17Ci0g
ICAgZXdrX2ZyYW1lX3JlZGlyZWN0X2NhbmNlbGxlZChtX2ZyYW1lKTsKLX0KLQotdm9pZCBGcmFt
ZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0KGNvbnN0
IFVSTCYgdXJsLCBkb3VibGUsIGRvdWJsZSkKLXsKLSAgICBld2tfZnJhbWVfcmVkaXJlY3RfcmVx
dWVzdGVkKG1fZnJhbWUsIHVybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLX0KLQotdm9pZCBG
cmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRDaGFuZ2VMb2NhdGlvbldpdGhpblBhZ2Uo
KQotewotICAgIGV3a19mcmFtZV91cmlfY2hhbmdlZChtX2ZyYW1lKTsKLQotICAgIGlmICghaXNM
b2FkaW5nTWFpbkZyYW1lKCkpCi0gICAgICAgIHJldHVybjsKLSAgICBld2tfdmlld191cmlfY2hh
bmdlZChtX3ZpZXcpOwotfQotCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaFdp
bGxDbG9zZSgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBGcmFtZUxvYWRl
ckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpCi17Ci0gICAgLy8gSWNvbkNvbnRy
b2xsZXIgbG9hZHMgaWNvbnMgb25seSBmb3IgdGhlIG1haW4gZnJhbWUuCi0gICAgQVNTRVJUKGlz
TG9hZGluZ01haW5GcmFtZSgpKTsKLQotICAgIGV3a192aWV3X2ZyYW1lX21haW5faWNvbl9yZWNl
aXZlZChtX3ZpZXcpOwotfQotCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERp
ZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCkKLXsKLSAgICBld2tfZnJhbWVfbG9hZF9wcm92aXNpb25h
bChtX2ZyYW1lKTsKLSAgICBpZiAoaXNMb2FkaW5nTWFpbkZyYW1lKCkpCi0gICAgICAgIGV3a192
aWV3X2xvYWRfcHJvdmlzaW9uYWwobV92aWV3KTsKLX0KLQotdm9pZCBGcmFtZUxvYWRlckNsaWVu
dEVmbDo6ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYg
dGl0bGUpCi17Ci0gICAgRXdrX1RleHRfV2l0aF9EaXJlY3Rpb24gZXdrVGl0bGU7Ci0gICAgQ1N0
cmluZyBjcyA9IHRpdGxlLnN0cmluZygpLnV0ZjgoKTsKLSAgICBld2tUaXRsZS5zdHJpbmcgPSBj
cy5kYXRhKCk7Ci0gICAgZXdrVGl0bGUuZGlyZWN0aW9uID0gKHRpdGxlLmRpcmVjdGlvbigpID09
IExUUikgPyBFV0tfVEVYVF9ESVJFQ1RJT05fTEVGVF9UT19SSUdIVCA6IEVXS19URVhUX0RJUkVD
VElPTl9SSUdIVF9UT19MRUZUOwotICAgIGV3a19mcmFtZV90aXRsZV9zZXQobV9mcmFtZSwgJmV3
a1RpdGxlKTsKLQotICAgIGlmICghaXNMb2FkaW5nTWFpbkZyYW1lKCkpCi0gICAgICAgIHJldHVy
bjsKLSAgICBld2tfdmlld190aXRsZV9zZXQobV92aWV3LCAmZXdrVGl0bGUpOwotfQotCi12b2lk
IEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZENoYW5nZUljb25zKFdlYkNvcmU6Oklj
b25UeXBlIGljb25UeXBlKQotewotICAgIC8vIE90aGVyIHRvdWNoIHR5cGVzIGFyZSBhcHBsZS1z
cGVjaWZpYwotICAgIEFTU0VSVF9VTlVTRUQoaWNvblR5cGUsIGljb25UeXBlID09IFdlYkNvcmU6
OkZhdmljb24pOwotICAgIGV3a19mcmFtZV9pY29uX2NoYW5nZWQobV9mcmFtZSk7Ci19Ci0KLXZv
aWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpCi17Ci0gICAg
ZXdrX2ZyYW1lX3VyaV9jaGFuZ2VkKG1fZnJhbWUpOwotICAgIGV3a19mcmFtZV9sb2FkX2NvbW1p
dHRlZChtX2ZyYW1lKTsKLSAgICBpZiAoIWlzTG9hZGluZ01haW5GcmFtZSgpKQotICAgICAgICBy
ZXR1cm47Ci0gICAgZXdrX3ZpZXdfdGl0bGVfc2V0KG1fdmlldywgMCk7Ci0gICAgZXdrX3ZpZXdf
dXJpX2NoYW5nZWQobV92aWV3KTsKLX0KLQotdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlz
cGF0Y2hEaWRGaW5pc2hEb2N1bWVudExvYWQoKQotewotICAgIGV3a19mcmFtZV9sb2FkX2RvY3Vt
ZW50X2ZpbmlzaGVkKG1fZnJhbWUpOwotfQotCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpk
aXNwYXRjaERpZExheW91dChMYXlvdXRNaWxlc3RvbmVzIG1pbGVzdG9uZXMpCi17Ci0gICAgaWYg
KG1pbGVzdG9uZXMgJiBEaWRGaXJzdExheW91dCkKLSAgICAgICAgZXdrX2ZyYW1lX2xvYWRfZmly
c3RsYXlvdXRfZmluaXNoZWQobV9mcmFtZSk7Ci0gICAgaWYgKG1pbGVzdG9uZXMgJiBEaWRGaXJz
dFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQpCi0gICAgICAgIGV3a19mcmFtZV9sb2FkX2ZpcnN0bGF5
b3V0X25vbmVtcHR5X2ZpbmlzaGVkKG1fZnJhbWUpOwotfQotCi12b2lkIEZyYW1lTG9hZGVyQ2xp
ZW50RWZsOjpkaXNwYXRjaFNob3coKQotewotICAgIGV3a192aWV3X2xvYWRfc2hvdyhtX3ZpZXcp
OwotfQotCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpjYW5jZWxQb2xpY3lDaGVjaygpCi17
Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6
d2lsbENoYW5nZVRpdGxlKERvY3VtZW50TG9hZGVyKikKLXsKLSAgICAvLyBubyBuZWVkIGZvciwg
ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUgaXMgdGhlIHJpZ2h0IGNhbGxiYWNrCi19Ci0KLXZvaWQg
RnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpZENoYW5nZVRpdGxlKERvY3VtZW50TG9hZGVyKikKLXsK
LSAgICAvLyBubyBuZWVkIGZvciwgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUgaXMgdGhlIHJpZ2h0
IGNhbGxiYWNrCi19Ci0KLWJvb2wgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmNhbkhhbmRsZVJlcXVl
c3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikgY29uc3QKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgp
OwotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpjYW5T
aG93TUlNRVR5cGVBc0hUTUwoY29uc3QgU3RyaW5nJiAvKk1JTUVUeXBlKi8pIGNvbnN0Ci17Ci0g
ICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgRnJhbWVM
b2FkZXJDbGllbnRFZmw6OmNhblNob3dNSU1FVHlwZShjb25zdCBTdHJpbmcmIE1JTUVUeXBlKSBj
b25zdAotewotICAgIGlmIChNSU1FVHlwZVJlZ2lzdHJ5OjpjYW5TaG93TUlNRVR5cGUoTUlNRVR5
cGUpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotI2lmIDAgLy8gUGx1Z2luRGF0YWJhc2UgaXMg
ZGlzYWJsZWQgdW50aWwgd2UgaGF2ZSBQbHVnaW4gc3lzdGVtIGRvbmUuCi0gICAgaWYgKFBsdWdp
bkRhdGFiYXNlOjppbnN0YWxsZWRQbHVnaW5zKCktPmlzTUlNRVR5cGVSZWdpc3RlcmVkKE1JTUVU
eXBlKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0jZW5kaWYKLQotICAgIHJldHVybiBmYWxzZTsK
LX0KLQotYm9vbCBGcmFtZUxvYWRlckNsaWVudEVmbDo6cmVwcmVzZW50YXRpb25FeGlzdHNGb3JV
UkxTY2hlbWUoY29uc3QgU3RyaW5nJikgY29uc3QKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0K
LVN0cmluZyBGcmFtZUxvYWRlckNsaWVudEVmbDo6Z2VuZXJhdGVkTUlNRVR5cGVGb3JVUkxTY2hl
bWUoY29uc3QgU3RyaW5nJikgY29uc3QKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJl
dHVybiBTdHJpbmcoKTsKLX0KLQotdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZmluaXNoZWRM
b2FkaW5nKERvY3VtZW50TG9hZGVyKikKLXsKLSAgICBpZiAoIW1fcGx1Z2luVmlldykKLSAgICAg
ICAgcmV0dXJuOwotICAgIG1fcGx1Z2luVmlldy0+ZGlkRmluaXNoTG9hZGluZygpOwotICAgIG1f
cGx1Z2luVmlldyA9IDA7Ci0gICAgbV9oYXNTZW50UmVzcG9uc2VUb1BsdWdpbiA9IGZhbHNlOwot
fQotCi0KLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OnByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQo
KQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRF
Zmw6OmRpZEZpbmlzaExvYWQoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQg
RnJhbWVMb2FkZXJDbGllbnRFZmw6OnByZXBhcmVGb3JEYXRhU291cmNlUmVwbGFjZW1lbnQoKQot
ewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6
OnNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mLCBjb25zdCBVUkwmKQotewotICAg
IC8vIG5vIG5lZWQgZm9yLCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZSBpcyB0aGUgcmlnaHQgY2Fs
bGJhY2sKLX0KLQotdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRSZWNlaXZl
Q29udGVudExlbmd0aChEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgLyppZGVudGlmaWVy
Ki8sIGludCAvKmRhdGFMZW5ndGgqLykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12
b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZEZpbmlzaExvYWRpbmcoRG9jdW1l
bnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpCi17Ci0gICAgZXdrX2ZyYW1lX2xv
YWRfcmVzb3VyY2VfZmluaXNoZWQobV9mcmFtZSwgaWRlbnRpZmllcik7Ci0gICAgZXZhc19vYmpl
Y3Rfc21hcnRfY2FsbGJhY2tfY2FsbChtX3ZpZXcsICJsb2FkLHJlc291cmNlLGZpbmlzaGVkIiwg
JmlkZW50aWZpZXIpOwotfQotCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERp
ZEZhaWxMb2FkaW5nKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBj
b25zdCBSZXNvdXJjZUVycm9yJiBlcnIpCi17Ci0gICAgRXdrX0ZyYW1lX0xvYWRfRXJyb3IgZXJy
b3I7Ci0gICAgQ1N0cmluZyBlcnJvckRvbWFpbiA9IGVyci5kb21haW4oKS51dGY4KCk7Ci0gICAg
Q1N0cmluZyBlcnJvckRlc2NyaXB0aW9uID0gZXJyLmxvY2FsaXplZERlc2NyaXB0aW9uKCkudXRm
OCgpOwotICAgIENTdHJpbmcgZmFpbGluZ1VybCA9IGVyci5mYWlsaW5nVVJMKCkudXRmOCgpOwot
Ci0gICAgREJHKCJld2tGcmFtZT0lcCwgcmVzb3VyY2U9JWxkLCBlcnJvcj0lcyAoJWQsIGNhbmNl
bGxhdGlvbj0laGh1KSBcIiVzXCIsIHVybD0lcyIsCi0gICAgICAgIG1fZnJhbWUsIGlkZW50aWZp
ZXIsIGVycm9yRG9tYWluLmRhdGEoKSwgZXJyLmVycm9yQ29kZSgpLCBlcnIuaXNDYW5jZWxsYXRp
b24oKSwKLSAgICAgICAgZXJyb3JEZXNjcmlwdGlvbi5kYXRhKCksIGZhaWxpbmdVcmwuZGF0YSgp
KTsKLQotICAgIGVycm9yLmNvZGUgPSBlcnIuZXJyb3JDb2RlKCk7Ci0gICAgZXJyb3IuaXNfY2Fu
Y2VsbGF0aW9uID0gZXJyLmlzQ2FuY2VsbGF0aW9uKCk7Ci0gICAgZXJyb3IuZG9tYWluID0gZXJy
b3JEb21haW4uZGF0YSgpOwotICAgIGVycm9yLmRlc2NyaXB0aW9uID0gZXJyb3JEZXNjcmlwdGlv
bi5kYXRhKCk7Ci0gICAgZXJyb3IuZmFpbGluZ191cmwgPSBmYWlsaW5nVXJsLmRhdGEoKTsKLSAg
ICBlcnJvci5yZXNvdXJjZV9pZGVudGlmaWVyID0gaWRlbnRpZmllcjsKLSAgICBlcnJvci5mcmFt
ZSA9IG1fZnJhbWU7Ci0KLSAgICBld2tfZnJhbWVfbG9hZF9yZXNvdXJjZV9mYWlsZWQobV9mcmFt
ZSwgJmVycm9yKTsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG1fdmlldywg
ImxvYWQscmVzb3VyY2UsZmFpbGVkIiwgJmVycm9yKTsKLX0KLQotYm9vbCBGcmFtZUxvYWRlckNs
aWVudEVmbDo6ZGlzcGF0Y2hEaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUoRG9jdW1lbnRM
b2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwg
aW50IC8qbGVuZ3RoKi8pCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gZmFs
c2U7Ci19Ci0KLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkTG9hZFJlc291
cmNlQnlYTUxIdHRwUmVxdWVzdCh1bnNpZ25lZCBsb25nLCBjb25zdCBTdHJpbmcmKQotewotICAg
IG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3Bh
dGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnIpCi17Ci0g
ICAgRXdrX0ZyYW1lX0xvYWRfRXJyb3IgZXJyb3I7Ci0gICAgQ1N0cmluZyBlcnJvckRvbWFpbiA9
IGVyci5kb21haW4oKS51dGY4KCk7Ci0gICAgQ1N0cmluZyBlcnJvckRlc2NyaXB0aW9uID0gZXJy
LmxvY2FsaXplZERlc2NyaXB0aW9uKCkudXRmOCgpOwotICAgIENTdHJpbmcgZmFpbGluZ1VybCA9
IGVyci5mYWlsaW5nVVJMKCkudXRmOCgpOwotCi0gICAgREJHKCJld2tGcmFtZT0lcCwgZXJyb3I9
JXMgKCVkLCBjYW5jZWxsYXRpb249JWhodSkgXCIlc1wiLCB1cmw9JXMiLAotICAgICAgICBtX2Zy
YW1lLCBlcnJvckRvbWFpbi5kYXRhKCksIGVyci5lcnJvckNvZGUoKSwgZXJyLmlzQ2FuY2VsbGF0
aW9uKCksCi0gICAgICAgIGVycm9yRGVzY3JpcHRpb24uZGF0YSgpLCBmYWlsaW5nVXJsLmRhdGEo
KSk7Ci0KLSAgICBlcnJvci5jb2RlID0gZXJyLmVycm9yQ29kZSgpOwotICAgIGVycm9yLmlzX2Nh
bmNlbGxhdGlvbiA9IGVyci5pc0NhbmNlbGxhdGlvbigpOwotICAgIGVycm9yLmRvbWFpbiA9IGVy
cm9yRG9tYWluLmRhdGEoKTsKLSAgICBlcnJvci5kZXNjcmlwdGlvbiA9IGVycm9yRGVzY3JpcHRp
b24uZGF0YSgpOwotICAgIGVycm9yLmZhaWxpbmdfdXJsID0gZmFpbGluZ1VybC5kYXRhKCk7Ci0g
ICAgZXJyb3IucmVzb3VyY2VfaWRlbnRpZmllciA9IDA7Ci0gICAgZXJyb3IuZnJhbWUgPSBtX2Zy
YW1lOwotCi0gICAgZXdrX2ZyYW1lX2xvYWRfcHJvdmlzaW9uYWxfZmFpbGVkKG1fZnJhbWUsICZl
cnJvcik7Ci0gICAgaWYgKGlzTG9hZGluZ01haW5GcmFtZSgpKQotICAgICAgICBld2tfdmlld19s
b2FkX3Byb3Zpc2lvbmFsX2ZhaWxlZChtX3ZpZXcsICZlcnJvcik7Ci0KLSAgICBkaXNwYXRjaERp
ZEZhaWxMb2FkKGVycik7Ci19Ci0KLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNo
RGlkRmFpbExvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyKQotewotICAgIGV3a19mcmFtZV9s
b2FkX2Vycm9yKG1fZnJhbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgZXJyLmRvbWFpbigp
LnV0ZjgoKS5kYXRhKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgZXJyLmVycm9yQ29kZSgp
LCBlcnIuaXNDYW5jZWxsYXRpb24oKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBlcnIubG9j
YWxpemVkRGVzY3JpcHRpb24oKS51dGY4KCkuZGF0YSgpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgIGVyci5mYWlsaW5nVVJMKCkudXRmOCgpLmRhdGEoKSk7Ci0KLSAgICBld2tfZnJhbWVfbG9h
ZF9maW5pc2hlZChtX2ZyYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVyci5kb21h
aW4oKS51dGY4KCkuZGF0YSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVyci5lcnJv
ckNvZGUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnIuaXNDYW5jZWxsYXRpb24o
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnIubG9jYWxpemVkRGVzY3JpcHRpb24o
KS51dGY4KCkuZGF0YSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVyci5mYWlsaW5n
VVJMKCkudXRmOCgpLmRhdGEoKSk7Ci19Ci0KLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmNv
bnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChEb2N1bWVudExvYWRlciosIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpCi17Ci0gICAg
aWYgKCFtX3ZpZXcpCi0gICAgICAgIHJldHVybjsKLQotICAgIENTdHJpbmcgdXJsID0gcmVxdWVz
dC51cmwoKS5zdHJpbmcoKS51dGY4KCk7Ci0gICAgRXdrX0Rvd25sb2FkIGRvd25sb2FkOwotCi0g
ICAgZG93bmxvYWQudXJsID0gdXJsLmRhdGEoKTsKLSAgICBkb3dubG9hZC5zdWdnZXN0ZWRfbmFt
ZSA9IDA7Ci0gICAgZXdrX3ZpZXdfZG93bmxvYWRfcmVxdWVzdChtX3ZpZXcsICZkb3dubG9hZCk7
Ci19Ci0KLVJlc291cmNlRXJyb3IgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmNhbmNlbGxlZEVycm9y
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKLXsKLSAgICByZXR1cm4gV2ViQ29yZTo6
Y2FuY2VsbGVkRXJyb3IocmVxdWVzdCk7Ci19Ci0KLVJlc291cmNlRXJyb3IgRnJhbWVMb2FkZXJD
bGllbnRFZmw6OmJsb2NrZWRFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCi17
Ci0gICAgcmV0dXJuIFdlYkNvcmU6OmJsb2NrZWRFcnJvcihyZXF1ZXN0KTsKLX0KLQotUmVzb3Vy
Y2VFcnJvciBGcmFtZUxvYWRlckNsaWVudEVmbDo6Y2Fubm90U2hvd1VSTEVycm9yKGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCkKLXsKLSAgICByZXR1cm4gV2ViQ29yZTo6Y2Fubm90U2hv
d1VSTEVycm9yKHJlcXVlc3QpOwotfQotCi1SZXNvdXJjZUVycm9yIEZyYW1lTG9hZGVyQ2xpZW50
RWZsOjppbnRlcnJ1cHRlZEZvclBvbGljeUNoYW5nZUVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCkKLXsKLSAgICByZXR1cm4gV2ViQ29yZTo6aW50ZXJydXB0ZWRGb3JQb2xpY3lD
aGFuZ2VFcnJvcihyZXF1ZXN0KTsKLX0KLQotUmVzb3VyY2VFcnJvciBGcmFtZUxvYWRlckNsaWVu
dEVmbDo6Y2Fubm90U2hvd01JTUVUeXBlRXJyb3IoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UpCi17Ci0gICAgcmV0dXJuIFdlYkNvcmU6OmNhbm5vdFNob3dNSU1FVHlwZUVycm9yKHJl
c3BvbnNlKTsKLX0KLQotUmVzb3VyY2VFcnJvciBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZmlsZURv
ZXNOb3RFeGlzdEVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQotewotICAg
IHJldHVybiBXZWJDb3JlOjpmaWxlRG9lc05vdEV4aXN0RXJyb3IocmVzcG9uc2UpOwotfQotCi1S
ZXNvdXJjZUVycm9yIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpwbHVnaW5XaWxsSGFuZGxlTG9hZEVy
cm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQotewotICAgIHJldHVybiBXZWJD
b3JlOjpwbHVnaW5XaWxsSGFuZGxlTG9hZEVycm9yKHJlc3BvbnNlKTsKLX0KLQotYm9vbCBGcmFt
ZUxvYWRlckNsaWVudEVmbDo6c2hvdWxkRmFsbEJhY2soY29uc3QgUmVzb3VyY2VFcnJvciYgZXJy
b3IpCi17Ci0gICAgcmV0dXJuICEoZXJyb3IuaXNDYW5jZWxsYXRpb24oKSB8fCBlcnJvci5lcnJv
ckNvZGUoKSA9PSBQb2xpY3lFcnJvckZyYW1lTG9hZEludGVycnVwdGVkQnlQb2xpY3lDaGFuZ2Ug
fHwgZXJyb3IuZXJyb3JDb2RlKCkgPT0gUGx1Z2luRXJyb3JXaWxsSGFuZGxlTG9hZCk7Ci19Ci0K
LWJvb2wgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmNhbkNhY2hlUGFnZSgpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIHRydWU7Ci19Ci0KLUZyYW1lKiBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hD
cmVhdGVQYWdlKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mKQotewotICAgIGlmICghbV92aWV3KQot
ICAgICAgICByZXR1cm4gMDsKLQotICAgIEV2YXNfT2JqZWN0KiBuZXdWaWV3ID0gZXdrX3ZpZXdf
d2luZG93X2NyZWF0ZShtX3ZpZXcsIEVJTkFfRkFMU0UsIDApOwotICAgIEV2YXNfT2JqZWN0KiBt
YWluRnJhbWU7Ci0gICAgaWYgKCFuZXdWaWV3KQotICAgICAgICBtYWluRnJhbWUgPSBtX2ZyYW1l
OwotICAgIGVsc2UKLSAgICAgICAgbWFpbkZyYW1lID0gZXdrX3ZpZXdfZnJhbWVfbWFpbl9nZXQo
bmV3Vmlldyk7Ci0KLSAgICByZXR1cm4gRVdLUHJpdmF0ZTo6Y29yZUZyYW1lKG1haW5GcmFtZSk7
Ci19Ci0KLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoVW5hYmxlVG9JbXBsZW1l
bnRQb2xpY3koY29uc3QgUmVzb3VyY2VFcnJvciYpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsK
LX0KLQotdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6c2V0TWFpbkRvY3VtZW50RXJyb3IoRG9j
dW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKLXsKLSAgICBpZiAoIW1f
cGx1Z2luVmlldykKLSAgICAgICAgcmV0dXJuOwotICAgIG1fcGx1Z2luVmlldy0+ZGlkRmFpbChl
cnJvcik7Ci0gICAgbV9wbHVnaW5WaWV3ID0gMDsKLSAgICBtX2hhc1NlbnRSZXNwb25zZVRvUGx1
Z2luID0gZmFsc2U7Ci19Ci0KLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OnN0YXJ0RG93bmxv
YWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIHN1Z2dlc3Rl
ZE5hbWUpCi17Ci0gICAgaWYgKCFtX3ZpZXcpCi0gICAgICAgIHJldHVybjsKLQotICAgIENTdHJp
bmcgdXJsID0gcmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCk7Ci0gICAgQ1N0cmluZyBzdWdn
ZXN0ZWROYW1lU3RyaW5nID0gc3VnZ2VzdGVkTmFtZS51dGY4KCk7Ci0gICAgRXdrX0Rvd25sb2Fk
IGRvd25sb2FkOwotCi0gICAgZG93bmxvYWQudXJsID0gdXJsLmRhdGEoKTsKLSAgICBkb3dubG9h
ZC5zdWdnZXN0ZWRfbmFtZSA9IHN1Z2dlc3RlZE5hbWVTdHJpbmcuZGF0YSgpOwotICAgIGV3a192
aWV3X2Rvd25sb2FkX3JlcXVlc3QobV92aWV3LCAmZG93bmxvYWQpOwotfQotCi12b2lkIEZyYW1l
TG9hZGVyQ2xpZW50RWZsOjp1cGRhdGVHbG9iYWxIaXN0b3J5KCkKLXsKLSAgICBXZWJDb3JlOjpG
cmFtZSogZnJhbWUgPSBFV0tQcml2YXRlOjpjb3JlRnJhbWUobV9mcmFtZSk7Ci0gICAgaWYgKCFm
cmFtZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqIGxv
YWRlciA9IGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpOwotICAgIGlmICghbG9hZGVy
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBjb25zdCBGcmFtZUxvYWRlciogZnJhbWVMb2FkZXIg
PSBsb2FkZXItPmZyYW1lTG9hZGVyKCk7Ci0gICAgY29uc3QgYm9vbCBpc01haW5GcmFtZVJlcXVl
c3QgPSBmcmFtZUxvYWRlciAmJiAobG9hZGVyID09IGZyYW1lTG9hZGVyLT5wcm92aXNpb25hbERv
Y3VtZW50TG9hZGVyKCkpICYmIGZyYW1lTG9hZGVyLT5mcmFtZSgpLmlzTWFpbkZyYW1lKCk7Ci0g
ICAgY29uc3QgQ1N0cmluZyYgdXJsRm9ySGlzdG9yeSA9IGxvYWRlci0+dXJsRm9ySGlzdG9yeSgp
LnN0cmluZygpLnV0ZjgoKTsKLSAgICBjb25zdCBDU3RyaW5nJiB0aXRsZSA9IGxvYWRlci0+dGl0
bGUoKS5zdHJpbmcoKS51dGY4KCk7Ci0gICAgY29uc3QgQ1N0cmluZyYgZmlyc3RQYXJ0eSA9IGxv
YWRlci0+cmVxdWVzdCgpLmZpcnN0UGFydHlGb3JDb29raWVzKCkuc3RyaW5nKCkudXRmOCgpOwot
ICAgIGNvbnN0IENTdHJpbmcmIGNsaWVudFJlZGlyZWN0U291cmNlID0gbG9hZGVyLT5jbGllbnRS
ZWRpcmVjdFNvdXJjZUZvckhpc3RvcnkoKS51dGY4KCk7Ci0gICAgY29uc3QgQ1N0cmluZyYgb3Jp
Z2luYWxVUkwgPSBsb2FkZXItPm9yaWdpbmFsVVJMKCkuc3RyaW5nKCkudXRmOCgpOwotICAgIGNv
bnN0IENTdHJpbmcmIGh0dHBNZXRob2QgPSBsb2FkZXItPnJlcXVlc3QoKS5odHRwTWV0aG9kKCku
dXRmOCgpOwotICAgIGNvbnN0IENTdHJpbmcmIHJlc3BvbnNlVVJMID0gbG9hZGVyLT5yZXNwb25z
ZVVSTCgpLnN0cmluZygpLnV0ZjgoKTsKLSAgICBjb25zdCBDU3RyaW5nJiBtaW1lVHlwZSA9IGxv
YWRlci0+cmVzcG9uc2UoKS5taW1lVHlwZSgpLnV0ZjgoKTsKLQotICAgIEV3a19GcmFtZV9SZXNv
dXJjZV9SZXF1ZXN0IHJlcXVlc3QgPSB7IG9yaWdpbmFsVVJMLmRhdGEoKSwgZmlyc3RQYXJ0eS5k
YXRhKCksIGh0dHBNZXRob2QuZGF0YSgpLCAwLCBtX2ZyYW1lLCBpc01haW5GcmFtZVJlcXVlc3Qg
fTsKLSAgICBFd2tfRnJhbWVfUmVzb3VyY2VfUmVzcG9uc2UgcmVzcG9uc2UgPSB7IHJlc3BvbnNl
VVJMLmRhdGEoKSwgbG9hZGVyLT5yZXNwb25zZSgpLmh0dHBTdGF0dXNDb2RlKCksIDAsIG1pbWVU
eXBlLmRhdGEoKSB9OwotICAgIGJvb2wgaGFzU3Vic3RpdHV0ZURhdGEgPSBsb2FkZXItPnN1YnN0
aXR1dGVEYXRhKCkuaXNWYWxpZCgpOwotCi0gICAgRXdrX1ZpZXdfTmF2aWdhdGlvbl9EYXRhIGRh
dGEgPSB7IHVybEZvckhpc3RvcnkuZGF0YSgpLCB0aXRsZS5kYXRhKCksICZyZXF1ZXN0LCAmcmVz
cG9uc2UsIGhhc1N1YnN0aXR1dGVEYXRhLCBjbGllbnRSZWRpcmVjdFNvdXJjZS5kYXRhKCkgfTsK
LQotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3LCAibmF2aWdhdGUs
d2l0aCxkYXRhIiwgJmRhdGEpOwotfQotCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpzYXZl
UGxhdGZvcm1EYXRhVG9DYWNoZWRGcmFtZShDYWNoZWRGcmFtZSopCi17Ci0gICAgbm90SW1wbGVt
ZW50ZWQoKTsKLX0KLQotdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6dHJhbnNpdGlvblRvQ29t
bWl0dGVkRnJvbUNhY2hlZEZyYW1lKENhY2hlZEZyYW1lKikKLXsKLX0KLQotdm9pZCBGcmFtZUxv
YWRlckNsaWVudEVmbDo6dHJhbnNpdGlvblRvQ29tbWl0dGVkRm9yTmV3UGFnZSgpCi17Ci0gICAg
QVNTRVJUKG1fZnJhbWUpOwotICAgIEFTU0VSVChtX3ZpZXcpOwotCi0gICAgZXdrX2ZyYW1lX3Zp
ZXdfY3JlYXRlX2Zvcl92aWV3KG1fZnJhbWUsIG1fdmlldyk7Ci19Ci0KLXZvaWQgRnJhbWVMb2Fk
ZXJDbGllbnRFZmw6OmRpZFNhdmVUb1BhZ2VDYWNoZSgpCi17Ci19Ci0KLXZvaWQgRnJhbWVMb2Fk
ZXJDbGllbnRFZmw6OmRpZFJlc3RvcmVGcm9tUGFnZUNhY2hlKCkKLXsKLX0KLQotdm9pZCBGcmFt
ZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRCZWNvbWVGcmFtZXNldChib29sKQotewotfQot
Ci1QYXNzUmVmUHRyPEZyYW1lTmV0d29ya2luZ0NvbnRleHQ+IEZyYW1lTG9hZGVyQ2xpZW50RWZs
OjpjcmVhdGVOZXR3b3JraW5nQ29udGV4dCgpCi17Ci0gICAgcmV0dXJuIEZyYW1lTmV0d29ya2lu
Z0NvbnRleHRFZmw6OmNyZWF0ZShFV0tQcml2YXRlOjpjb3JlRnJhbWUobV9mcmFtZSksIG1fZnJh
bWUpOwotfQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudEVmbC5oIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ZjhjZmIzOC4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudEVmbC5oCisrKyAvZGV2L251bGwKQEAgLTEsMjE4ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgWmFjayBSdXNpbiA8emFja0BrZGUub3JnPgotICogQ29w
eXJpZ2h0IChDKSAyMDA2LCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
IENvcHlyaWdodCAoQykgMjAwOCBDb2xsYWJvcmEgTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICogQ29weXJpZ2h0IChDKSAyMDA4IElOZFQgLSBJbnN0aXR1dG8gTm9raWEgZGUgVGVjbm9sb2dp
YQotICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgUHJvRlVTSU9OIGVtYmVkZGVkIHN5c3RlbXMK
LSAqIENvcHlyaWdodCAoQykgMjAwOS0yMDEwIFNhbXN1bmcgRWxlY3Ryb25pY3MKLSAqCi0gKiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
Ci0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaWZuZGVmIEZyYW1lTG9hZGVyQ2xpZW50RWZsX2gKLSNkZWZpbmUgRnJhbWVMb2Fk
ZXJDbGllbnRFZmxfaAotCi0jaW5jbHVkZSAiRVdlYktpdC5oIgotI2luY2x1ZGUgIkZyYW1lTG9h
ZGVyQ2xpZW50LmgiCi0jaW5jbHVkZSAiUGx1Z2luVmlldy5oIgotI2luY2x1ZGUgIlJlc291cmNl
RXJyb3IuaCIKLSNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCi0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotY2xhc3MgRm9ybVN0YXRlOwotCi1jbGFzcyBGcmFtZUxvYWRlckNsaWVudEVmbCA6
IHB1YmxpYyBGcmFtZUxvYWRlckNsaWVudCB7Ci0gcHVibGljOgotICAgIGV4cGxpY2l0IEZyYW1l
TG9hZGVyQ2xpZW50RWZsKEV2YXNfT2JqZWN0ICp2aWV3KTsKLSAgICB2aXJ0dWFsIH5GcmFtZUxv
YWRlckNsaWVudEVmbCgpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBmcmFtZUxvYWRlckRlc3Ryb3ll
ZCgpOwotCi0gICAgdm9pZCBzZXRXZWJGcmFtZShFdmFzX09iamVjdCAqZnJhbWUpIHsgbV9mcmFt
ZSA9IGZyYW1lOyB9Ci0gICAgRXZhc19PYmplY3QqIHdlYkZyYW1lKCkgY29uc3QgeyByZXR1cm4g
bV9mcmFtZTsgfQotICAgIEV2YXNfT2JqZWN0KiB3ZWJWaWV3KCkgY29uc3QgeyByZXR1cm4gbV92
aWV3OyB9Ci0KLSAgICB2b2lkIHNldEN1c3RvbVVzZXJBZ2VudChjb25zdCBTdHJpbmcmKTsKLSAg
ICBjb25zdCBTdHJpbmcmIGN1c3RvbVVzZXJBZ2VudCgpIGNvbnN0OwotCi0gICAgdmlydHVhbCBi
b29sIGhhc1dlYlZpZXcoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgaGFzRnJhbWVWaWV3KCkg
Y29uc3Q7Ci0KLSAgICB2b2lkIGNhbGxQb2xpY3lGdW5jdGlvbihGcmFtZVBvbGljeUZ1bmN0aW9u
LCBQb2xpY3lBY3Rpb24pOwotCi0gICAgdmlydHVhbCB2b2lkIG1ha2VSZXByZXNlbnRhdGlvbihE
b2N1bWVudExvYWRlciopIHsgfQotICAgIHZpcnR1YWwgdm9pZCBmb3JjZUxheW91dCgpOwotICAg
IHZpcnR1YWwgdm9pZCBmb3JjZUxheW91dEZvck5vbkhUTUwoKTsKLQotICAgIHZpcnR1YWwgdm9p
ZCBzZXRDb3BpZXNPblNjcm9sbCgpOwotCi0gICAgdmlydHVhbCB2b2lkIGRldGFjaGVkRnJvbVBh
cmVudDIoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoZWRGcm9tUGFyZW50MygpOwotCi0gICAg
dmlydHVhbCB2b2lkIGxvYWRlZEZyb21DYWNoZWRQYWdlKCk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQg
YXNzaWduSWRlbnRpZmllclRvSW5pdGlhbFJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwotCi0gICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0KERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQg
bG9uZyAgaWRlbnRpZmllciwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVkaXJlY3RSZXNwb25zZSk7Ci0gICAgdmlydHVhbCBib29sIHNob3VsZFVzZUNyZWRlbnRp
YWxTdG9yYWdlKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uo
RG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlJik7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRQdXNoU3Rh
dGVXaXRoaW5QYWdlKCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUG9wU3RhdGVXaXRo
aW5QYWdlKCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVwbGFjZVN0YXRlV2l0aGlu
UGFnZSgpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENsZWFyV2luZG93T2JqZWN0SW5X
b3JsZChXZWJDb3JlOjpET01XcmFwcGVyV29ybGQmKTsKLQotICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaERpZENhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKERvY3VtZW50TG9hZGVyKiwgdW5z
aWduZWQgbG9uZyAgaWRlbnRpZmllciwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKTsK
LSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UoRG9jdW1lbnRMb2Fk
ZXIqLCB1bnNpZ25lZCBsb25nICBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7
Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGgoRG9jdW1l
bnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGludCBkYXRhTGVuZ3RoKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hMb2FkaW5nKERvY3VtZW50TG9hZGVyKiwg
dW5zaWduZWQgbG9uZyAgaWRlbnRpZmllcik7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlk
RmFpbExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nICBpZGVudGlmaWVyLCBj
b25zdCBSZXNvdXJjZUVycm9yJik7Ci0gICAgdmlydHVhbCBib29sIGRpc3BhdGNoRGlkTG9hZFJl
c291cmNlRnJvbU1lbW9yeUNhY2hlKERvY3VtZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGludCBsZW5ndGgpOwotICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZExvYWRSZXNvdXJjZUJ5WE1MSHR0cFJlcXVlc3QodW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVN0cmluZyk7Ci0KLSAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEaWRIYW5kbGVPbmxvYWRFdmVudHMoKTsKLSAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWQoKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDYW5jZWxDbGllbnRSZWRpcmVjdCgpOwotICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgVVJMJiwg
ZG91YmxlLCBkb3VibGUpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUxvY2F0
aW9uV2l0aGluUGFnZSgpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxDbG9zZSgpOwot
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uKCk7Ci0gICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKTsKLSAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYpOwotICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKFdlYkNvcmU6Okljb25UeXBlKTsK
LSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2FkKCk7Ci0gICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJik7
Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWQoY29uc3QgUmVzb3VyY2VFcnJv
ciYpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpbmlzaERvY3VtZW50TG9hZCgpOwot
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpbmlzaExvYWQoKTsKLSAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hEaWRMYXlvdXQoTGF5b3V0TWlsZXN0b25lcyk7Ci0KLSAgICB2aXJ0dWFsIEZy
YW1lKiBkaXNwYXRjaENyZWF0ZVBhZ2UoY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbiYp
OwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFNob3coKTsKLQotICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmLCBGcmFtZVBvbGljeUZ1bmN0aW9uKTsKLSAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oY29uc3QgTmF2aWdh
dGlvbkFjdGlvbiYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFdURjo6UGFzc1JlZlB0cjxGb3Jt
U3RhdGU+LCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgRnJhbWVQb2xpY3lGdW5jdGlvbik7Ci0g
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihj
b25zdCBOYXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgV1RGOjpQYXNz
UmVmUHRyPEZvcm1TdGF0ZT4sIEZyYW1lUG9saWN5RnVuY3Rpb24pOwotICAgIHZpcnR1YWwgdm9p
ZCBjYW5jZWxQb2xpY3lDaGVjaygpOwotCi0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoVW5hYmxl
VG9JbXBsZW1lbnRQb2xpY3koY29uc3QgUmVzb3VyY2VFcnJvciYpOwotCi0gICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoV2lsbFNlbmRTdWJtaXRFdmVudChXVEY6OlBhc3NSZWZQdHI8Rm9ybVN0YXRl
PikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbFN1Ym1pdEZvcm0oV1RGOjpQYXNz
UmVmUHRyPEZvcm1TdGF0ZT4sIEZyYW1lUG9saWN5RnVuY3Rpb24pOwotCi0gICAgdmlydHVhbCB2
b2lkIHJldmVydFRvUHJvdmlzaW9uYWxTdGF0ZShEb2N1bWVudExvYWRlciopIHsgfQotICAgIHZp
cnR1YWwgdm9pZCBzZXRNYWluRG9jdW1lbnRFcnJvcihEb2N1bWVudExvYWRlciosIGNvbnN0IFJl
c291cmNlRXJyb3ImKTsKLQotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGcmFtZT4gY3JlYXRlRnJh
bWUoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBuYW1lLCBIVE1MRnJhbWVPd25lckVsZW1lbnQq
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIs
IGJvb2wgYWxsb3dzU2Nyb2xsaW5nLCBpbnQgbWFyZ2luV2lkdGgsIGludCBtYXJnaW5IZWlnaHQp
OwotCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdpZGdldD4gY3JlYXRlUGx1Z2luKGNvbnN0IElu
dFNpemUmLCBIVE1MUGx1Z0luRWxlbWVudCosIGNvbnN0IFVSTCYsIGNvbnN0IFdURjo6VmVjdG9y
PFN0cmluZz4mLCBjb25zdCBXVEY6OlZlY3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJiwgYm9v
bCk7Ci0gICAgdmlydHVhbCB2b2lkIHJlY3JlYXRlUGx1Z2luKFdpZGdldCopIHsgfQotICAgIHZp
cnR1YWwgdm9pZCByZWRpcmVjdERhdGFUb1BsdWdpbihXaWRnZXQqIHBsdWdpbldpZGdldCk7Ci0g
ICAgdmlydHVhbCBQYXNzUmVmUHRyPFdpZGdldD4gY3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25z
dCBJbnRTaXplJiwgSFRNTEFwcGxldEVsZW1lbnQqLCBjb25zdCBVUkwmIGJhc2VVUkwsIGNvbnN0
IFdURjo6VmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFdURjo6VmVjdG9yPFN0cmlu
Zz4mIHBhcmFtVmFsdWVzKTsKLSAgICB2aXJ0dWFsIFN0cmluZyBvdmVycmlkZU1lZGlhVHlwZSgp
IGNvbnN0OwotCi0gICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyRm9ySWNvbk5vdGlmaWNhdGlvbihi
b29sKTsKLQotICAgIHZpcnR1YWwgT2JqZWN0Q29udGVudFR5cGUgb2JqZWN0Q29udGVudFR5cGUo
Y29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBzaG91bGRQcmVmZXJQbHVn
SW5zRm9ySW1hZ2VzKTsKLQotICAgIHZpcnR1YWwgdm9pZCBzZXRNYWluRnJhbWVEb2N1bWVudFJl
YWR5KGJvb2wpOwotCi0gICAgdmlydHVhbCB2b2lkIHN0YXJ0RG93bmxvYWQoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWROYW1lID0gU3RyaW5nKCkpOwotCi0g
ICAgdmlydHVhbCB2b2lkIHdpbGxDaGFuZ2VUaXRsZShEb2N1bWVudExvYWRlciopOwotICAgIHZp
cnR1YWwgdm9pZCBkaWRDaGFuZ2VUaXRsZShEb2N1bWVudExvYWRlciopOwotCi0gICAgdmlydHVh
bCB2b2lkIGNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBjaGFyKiwgaW50KTsK
LSAgICB2aXJ0dWFsIHZvaWQgZmluaXNoZWRMb2FkaW5nKERvY3VtZW50TG9hZGVyKik7Ci0KLSAg
ICB2aXJ0dWFsIHZvaWQgdXBkYXRlR2xvYmFsSGlzdG9yeSgpOwotICAgIHZpcnR1YWwgdm9pZCB1
cGRhdGVHbG9iYWxIaXN0b3J5UmVkaXJlY3RMaW5rcygpOwotICAgIHZpcnR1YWwgYm9vbCBzaG91
bGRHb1RvSGlzdG9yeUl0ZW0oSGlzdG9yeUl0ZW0qKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQg
ZGlkRGlzcGxheUluc2VjdXJlQ29udGVudCgpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSdW5JbnNl
Y3VyZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBVUkwmKTsKLSAgICB2aXJ0dWFsIHZv
aWQgZGlkRGV0ZWN0WFNTKGNvbnN0IFVSTCYsIGJvb2wgZGlkQmxvY2tFbnRpcmVQYWdlKTsKLQot
ICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBjYW5jZWxsZWRFcnJvcihjb25zdCBSZXNvdXJjZVJl
cXVlc3QmKTsKLSAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0IFJl
c291cmNlUmVxdWVzdCYpOwotICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBjYW5ub3RTaG93VVJM
RXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7Ci0gICAgdmlydHVhbCBSZXNvdXJjZUVycm9y
IGludGVycnVwdGVkRm9yUG9saWN5Q2hhbmdlRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7
Ci0KLSAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgY2Fubm90U2hvd01JTUVUeXBlRXJyb3IoY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBmaWxlRG9l
c05vdEV4aXN0RXJyb3IoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAgIHZpcnR1YWwgUmVz
b3VyY2VFcnJvciBwbHVnaW5XaWxsSGFuZGxlTG9hZEVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmKTsKLQotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRGYWxsQmFjayhjb25zdCBSZXNvdXJjZUVy
cm9yJik7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgY2FuSGFuZGxlUmVxdWVzdChjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgY2FuU2hvd01JTUVUeXBlKGNvbnN0
IFN0cmluZyYpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBjYW5TaG93TUlNRVR5cGVBc0hUTUwo
Y29uc3QgU3RyaW5nJiBNSU1FVHlwZSkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIHJlcHJlc2Vu
dGF0aW9uRXhpc3RzRm9yVVJMU2NoZW1lKGNvbnN0IFN0cmluZyYpIGNvbnN0OwotICAgIHZpcnR1
YWwgU3RyaW5nIGdlbmVyYXRlZE1JTUVUeXBlRm9yVVJMU2NoZW1lKGNvbnN0IFN0cmluZyYpIGNv
bnN0OwotCi0gICAgdmlydHVhbCB2b2lkIGZyYW1lTG9hZENvbXBsZXRlZCgpOwotICAgIHZpcnR1
YWwgdm9pZCBzYXZlVmlld1N0YXRlVG9JdGVtKEhpc3RvcnlJdGVtKik7Ci0gICAgdmlydHVhbCB2
b2lkIHJlc3RvcmVWaWV3U3RhdGUoKTsKLSAgICB2aXJ0dWFsIHZvaWQgcHJvdmlzaW9uYWxMb2Fk
U3RhcnRlZCgpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkKCk7Ci0gICAgdmlydHVh
bCB2b2lkIHByZXBhcmVGb3JEYXRhU291cmNlUmVwbGFjZW1lbnQoKTsKLQotICAgIHZpcnR1YWwg
V1RGOjpQYXNzUmVmUHRyPERvY3VtZW50TG9hZGVyPiBjcmVhdGVEb2N1bWVudExvYWRlcihjb25z
dCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdWJzdGl0dXRlRGF0YSYpOwotICAgIHZpcnR1YWwg
dm9pZCBzZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiB0aXRsZSwgY29uc3QgVVJM
Jik7Ci0KLSAgICB2aXJ0dWFsIFN0cmluZyB1c2VyQWdlbnQoY29uc3QgVVJMJik7Ci0KLSAgICB2
aXJ0dWFsIHZvaWQgc2F2ZVBsYXRmb3JtRGF0YVRvQ2FjaGVkRnJhbWUoQ2FjaGVkRnJhbWUqKTsK
LSAgICB2aXJ0dWFsIHZvaWQgdHJhbnNpdGlvblRvQ29tbWl0dGVkRnJvbUNhY2hlZEZyYW1lKENh
Y2hlZEZyYW1lKik7Ci0gICAgdmlydHVhbCB2b2lkIHRyYW5zaXRpb25Ub0NvbW1pdHRlZEZvck5l
d1BhZ2UoKTsKLQotICAgIHZpcnR1YWwgdm9pZCBkaWRTYXZlVG9QYWdlQ2FjaGUoKTsKLSAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVzdG9yZUZyb21QYWdlQ2FjaGUoKTsKLQotICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaERpZEJlY29tZUZyYW1lc2V0KGJvb2wpOwotCi0gICAgdmlydHVhbCBib29sIGNh
bkNhY2hlUGFnZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBjb252ZXJ0TWFpblJlc291cmNl
TG9hZFRvRG93bmxvYWQoRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0KLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29y
ZTo6RnJhbWVOZXR3b3JraW5nQ29udGV4dD4gY3JlYXRlTmV0d29ya2luZ0NvbnRleHQoKTsKLSBw
cml2YXRlOgotICAgIGJvb2wgaXNMb2FkaW5nTWFpbkZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9m
cmFtZSA9PSBld2tfdmlld19mcmFtZV9tYWluX2dldChtX3ZpZXcpOyB9Ci0KLSAgICBFdmFzX09i
amVjdCAqbV92aWV3OwotICAgIEV2YXNfT2JqZWN0ICptX2ZyYW1lOwotCi0gICAgUmVzb3VyY2VS
ZXNwb25zZSBtX3Jlc3BvbnNlOwotICAgIFN0cmluZyBtX3VzZXJBZ2VudDsKLSAgICBTdHJpbmcg
bV9jdXN0b21Vc2VyQWdlbnQ7Ci0KLSAgICBSZXNvdXJjZUVycm9yIG1fbG9hZEVycm9yOwotCi0g
ICAgLy8gUGx1Z2luIHZpZXcgdG8gcmVkaXJlY3QgZGF0YSB0bwotICAgIFBsdWdpblZpZXcqIG1f
cGx1Z2luVmlldzsKLSAgICBib29sIG1faGFzU2VudFJlc3BvbnNlVG9QbHVnaW47Ci19OwotCi19
Ci0KLSNlbmRpZiAvLyBGcmFtZUxvYWRlckNsaWVudEVmbF9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZU5ldHdvcmtpbmdDb250ZXh0RWZsLmNwcCBi
L1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTmV0d29ya2luZ0NvbnRleHRF
ZmwuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyODNiMTFhLi4wMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTmV0d29ya2luZ0NvbnRl
eHRFZmwuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNjEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykK
LSAqIENvcHlyaWdodCAoQykgMjAxMCBTYW1zdW5nIEVsZWN0cm9uaWNzCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTIgUHJvRlVTSU9OIGVtYmVkZGVkIHN5c3RlbXMKLSAqCi0gKiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
LSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRnJhbWVOZXR3b3JraW5nQ29udGV4dEVmbC5oIgot
Ci0jaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLSNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5o
IgotI2luY2x1ZGUgImV3a19mcmFtZS5oIgotI2luY2x1ZGUgImV3a192aWV3LmgiCi0jaW5jbHVk
ZSAiZXdrX3ZpZXdfcHJpdmF0ZS5oIgotCi0jaW5jbHVkZSA8RXZhcy5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLVBhc3NSZWZQdHI8RnJhbWVOZXR3b3JraW5nQ29udGV4dEVmbD4gRnJhbWVO
ZXR3b3JraW5nQ29udGV4dEVmbDo6Y3JlYXRlKEZyYW1lKiBmcmFtZSwgRXZhc19PYmplY3QqIGV3
a0ZyYW1lKQotewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgRnJhbWVOZXR3b3JraW5nQ29udGV4
dEVmbChmcmFtZSwgZXdrRnJhbWUpKTsKLX0KLQotRnJhbWVOZXR3b3JraW5nQ29udGV4dEVmbDo6
RnJhbWVOZXR3b3JraW5nQ29udGV4dEVmbChGcmFtZSogZnJhbWUsIEV2YXNfT2JqZWN0KiBld2tG
cmFtZSkKLSAgICA6IEZyYW1lTmV0d29ya2luZ0NvbnRleHQoZnJhbWUpCi0gICAgLCBtX2V3a0Zy
YW1lKGV3a0ZyYW1lKQotewotfQotCi1OZXR3b3JrU3RvcmFnZVNlc3Npb24mIEZyYW1lTmV0d29y
a2luZ0NvbnRleHRFZmw6OnN0b3JhZ2VTZXNzaW9uKCkgY29uc3QKLXsKLSAgICBpZiAoTmV0d29y
a1N0b3JhZ2VTZXNzaW9uKiBzZXNzaW9uID0gRVdLUHJpdmF0ZTo6c3RvcmFnZVNlc3Npb24oZXdr
X2ZyYW1lX3ZpZXdfZ2V0KG1fZXdrRnJhbWUpKSkKLSAgICAgICAgcmV0dXJuICpzZXNzaW9uOwot
ICAgIHJldHVybiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigp
OwotfQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9G
cmFtZU5ldHdvcmtpbmdDb250ZXh0RWZsLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3Vw
cG9ydC9GcmFtZU5ldHdvcmtpbmdDb250ZXh0RWZsLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDhhNzY0OWUuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1
cHBvcnQvRnJhbWVOZXR3b3JraW5nQ29udGV4dEVmbC5oCisrKyAvZGV2L251bGwKQEAgLTEsNTIg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQv
b3IgaXRzIHN1YnNpZGlhcnkoLWllcykKLSAqIENvcHlyaWdodCAoQykgMjAxMCBTYW1zdW5nIEVs
ZWN0cm9uaWNzCi0gKgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBGcmFtZU5ldHdvcmtpbmdDb250ZXh0
RWZsX2gKLSNkZWZpbmUgRnJhbWVOZXR3b3JraW5nQ29udGV4dEVmbF9oCi0KLSNpbmNsdWRlICJG
cmFtZU5ldHdvcmtpbmdDb250ZXh0LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3Mg
RnJhbWVOZXR3b3JraW5nQ29udGV4dEVmbCA6IHB1YmxpYyBXZWJDb3JlOjpGcmFtZU5ldHdvcmtp
bmdDb250ZXh0IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxGcmFtZU5ldHdvcmtp
bmdDb250ZXh0RWZsPiBjcmVhdGUoRnJhbWUqLCBFdmFzX09iamVjdCopOwotCi0gICAgV2ViQ29y
ZTo6RnJhbWUqIGNvcmVGcmFtZSgpIGNvbnN0IHsgcmV0dXJuIGZyYW1lKCk7IH0KLQotcHJpdmF0
ZToKLSAgICB2aXJ0dWFsIFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc3RvcmFnZVNl
c3Npb24oKSBjb25zdDsKLQotICAgIEZyYW1lTmV0d29ya2luZ0NvbnRleHRFZmwoRnJhbWUqLCBF
dmFzX09iamVjdCopOwotCi0gICAgRXZhc19PYmplY3QqIG1fZXdrRnJhbWU7Ci19OwotCi19Ci0K
LSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvSWNv
bkRhdGFiYXNlQ2xpZW50RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0
L0ljb25EYXRhYmFzZUNsaWVudEVmbC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDRlMzUxMzcuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQv
SWNvbkRhdGFiYXNlQ2xpZW50RWZsLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAK
LS8qCi0gKiAgQ29weXJpZ2h0IChDKSAyMDExIFNhbXN1bmcgRWxlY3Ryb25pY3MKLSAqCi0gKiAg
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgotICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqICBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqICBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgotICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCi0gKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCi0gKgotICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqICBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bwotICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0
cmVldCwgRmlmdGggRmxvb3IsCi0gKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkljb25EYXRhYmFzZUNsaWVudEVmbC5o
IgotCi0jaWYgRU5BQkxFKElDT05EQVRBQkFTRSkKLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5o
IgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXZvaWQgSWNvbkRhdGFiYXNlQ2xpZW50RWZsOjpk
aWRSZW1vdmVBbGxJY29ucygpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBJ
Y29uRGF0YWJhc2VDbGllbnRFZmw6OmRpZEltcG9ydEljb25VUkxGb3JQYWdlVVJMKGNvbnN0IFN0
cmluZyYpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBJY29uRGF0YWJhc2VD
bGllbnRFZmw6OmRpZEltcG9ydEljb25EYXRhRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmKQotewot
ICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgSWNvbkRhdGFiYXNlQ2xpZW50RWZsOjpk
aWRDaGFuZ2VJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmKQotewotICAgIG5vdEltcGxlbWVu
dGVkKCk7Ci19Ci0KLXZvaWQgSWNvbkRhdGFiYXNlQ2xpZW50RWZsOjpkaWRGaW5pc2hVUkxJbXBv
cnQoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLX0KLQotI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9JY29uRGF0YWJhc2VDbGllbnRF
ZmwuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ljb25EYXRhYmFzZUNsaWVu
dEVmbC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMTRjZGJhLi4wMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ljb25EYXRhYmFzZUNsaWVudEVm
bC5oCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotLyogCi0gKiAgQ29weXJpZ2h0IChD
KSAyMDExIFNhbXN1bmcgRWxlY3Ryb25pY3MKLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiAgTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
Ci0gKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0g
KiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgot
ICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UKLSAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0g
KiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2lmbmRlZiBJY29uRGF0YWJh
c2VDbGllbnRFZmxfaAotI2RlZmluZSBJY29uRGF0YWJhc2VDbGllbnRFZmxfaAotCi0jaWYgRU5B
QkxFKElDT05EQVRBQkFTRSkKLQotI2luY2x1ZGUgIkljb25EYXRhYmFzZUNsaWVudC5oIgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEljb25EYXRhYmFzZUNsaWVudEVmbCA6IHB1Ymxp
YyBJY29uRGF0YWJhc2VDbGllbnQgewotcHVibGljOgotICAgIHZpcnR1YWwgdm9pZCBkaWRSZW1v
dmVBbGxJY29ucygpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRJbXBvcnRJY29uVVJMRm9yUGFnZVVS
TChjb25zdCBTdHJpbmcmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkSW1wb3J0SWNvbkRhdGFGb3JQ
YWdlVVJMKGNvbnN0IFN0cmluZyYpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VJY29uRm9y
UGFnZVVSTChjb25zdCBTdHJpbmcmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoVVJMSW1w
b3J0KCk7Ci19OwotCi19Ci0KLSNlbmRpZgotI2VuZGlmIC8vIEljb25EYXRhYmFzZUNsaWVudEVm
bF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0
b3JDbGllbnRFZmwuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvSW5zcGVj
dG9yQ2xpZW50RWZsLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGQzOTkzYi4u
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JD
bGllbnRFZmwuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjI3ICswLDAgQEAKLS8qCi0gKiAgQ29w
eXJpZ2h0IChDKSAyMDA4IElOZFQgLSBJbnN0aXR1dG8gTm9raWEgZGUgVGVjbm9sb2dpYQotICog
IENvcHlyaWdodCAoQykgMjAwOS0yMDEwIFByb0ZVU0lPTiBlbWJlZGRlZCBzeXN0ZW1zCi0gKiAg
Q29weXJpZ2h0IChDKSAyMDA5LTIwMTAgU2Ftc3VuZyBFbGVjdHJvbmljcwotICoKLSAqICBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
Ci0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs
IFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
LSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQotICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCi0gKgotICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0gKiAgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIx
MTAtMTMwMSAgVVNBCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkluc3Bl
Y3RvckNsaWVudEVmbC5oIgotCi0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLQotI2luY2x1ZGUgIkVm
bEluc3BlY3RvclV0aWxpdGllcy5oIgotI2luY2x1ZGUgIkZyYW1lVmlldy5oIgotI2luY2x1ZGUg
Ikluc3BlY3RvckNvbnRyb2xsZXIuaCIKLSNpbmNsdWRlICJNYWluRnJhbWUuaCIKLSNpbmNsdWRl
ICJOb3RJbXBsZW1lbnRlZC5oIgotI2luY2x1ZGUgImV3a192aWV3X3ByaXZhdGUuaCIKLSNpbmNs
dWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRCYXNlLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQv
Q1N0cmluZy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLXN0YXRpYyB2b2lkIG5vdGlmeUluc3BlY3RvckRlc3Ryb3kodm9pZCogdXNl
ckRhdGEsIEV2YXNfT2JqZWN0KiAvKndlYnZpZXcqLywgdm9pZCogLypldmVudEluZm8qLykKLXsK
LSAgICBJbnNwZWN0b3JGcm9udGVuZENsaWVudEVmbCogaW5zcGVjdG9yRnJvbnRlbmRDbGllbnQg
PSBzdGF0aWNfY2FzdDxJbnNwZWN0b3JGcm9udGVuZENsaWVudEVmbCo+KHVzZXJEYXRhKTsKLSAg
ICBpZiAoaW5zcGVjdG9yRnJvbnRlbmRDbGllbnQpCi0gICAgICAgIGluc3BlY3RvckZyb250ZW5k
Q2xpZW50LT5kZXN0cm95SW5zcGVjdG9yV2luZG93KHRydWUpOwotfQotCi1zdGF0aWMgdm9pZCBp
bnZhbGlkYXRlVmlldyhFdmFzX09iamVjdCogd2ViVmlldykKLXsKLSAgICBFdmFzX0Nvb3JkIHdp
ZHRoLCBoZWlnaHQ7Ci0gICAgRXZhc19PYmplY3QqIG1haW5GcmFtZSA9IGV3a192aWV3X2ZyYW1l
X21haW5fZ2V0KHdlYlZpZXcpOwotICAgIGlmIChtYWluRnJhbWUgJiYgZXdrX2ZyYW1lX2NvbnRl
bnRzX3NpemVfZ2V0KG1haW5GcmFtZSwgJndpZHRoLCAmaGVpZ2h0KSkgewotICAgICAgICBXZWJD
b3JlOjpQYWdlKiBwYWdlID0gRVdLUHJpdmF0ZTo6Y29yZVBhZ2Uod2ViVmlldyk7Ci0gICAgICAg
IGlmIChwYWdlKQotICAgICAgICAgICAgcGFnZS0+bWFpbkZyYW1lKCkudmlldygpLT5pbnZhbGlk
YXRlUmVjdChXZWJDb3JlOjpJbnRSZWN0KDAsIDAsIHdpZHRoLCBoZWlnaHQpKTsKLSAgICB9Ci19
Ci0KLWNsYXNzIEluc3BlY3RvckZyb250ZW5kU2V0dGluZ3NFZmwgOiBwdWJsaWMgSW5zcGVjdG9y
RnJvbnRlbmRDbGllbnRMb2NhbDo6U2V0dGluZ3MgewotcHVibGljOgotICAgIHZpcnR1YWwgU3Ry
aW5nIGdldFByb3BlcnR5KGNvbnN0IFN0cmluZyYgLypuYW1lKi8pCi0gICAgewotICAgICAgICBu
b3RJbXBsZW1lbnRlZCgpOwotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgfQotCi0gICAg
dmlydHVhbCB2b2lkIHNldFByb3BlcnR5KGNvbnN0IFN0cmluZyYgLypuYW1lKi8sIGNvbnN0IFN0
cmluZyYgLyp2YWx1ZSovKQotICAgIHsKLSAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICB9
Ci19OwotCi1JbnNwZWN0b3JDbGllbnRFZmw6Okluc3BlY3RvckNsaWVudEVmbChFdmFzX09iamVj
dCogd2ViVmlldykKLSAgICA6IG1faW5zcGVjdGVkVmlldyh3ZWJWaWV3KQotICAgICwgbV9pbnNw
ZWN0b3JWaWV3KDApCi0gICAgLCBtX2Zyb250ZW5kQ2xpZW50KDApCi17Ci19Ci0KLUluc3BlY3Rv
ckNsaWVudEVmbDo6fkluc3BlY3RvckNsaWVudEVmbCgpCi17Ci0gICAgaWYgKG1fZnJvbnRlbmRD
bGllbnQpIHsKLSAgICAgICAgbV9mcm9udGVuZENsaWVudC0+ZGlzY29ubmVjdEluc3BlY3RvckNs
aWVudCgpOwotICAgICAgICBtX2Zyb250ZW5kQ2xpZW50ID0gMDsKLSAgICB9Ci19Ci0KLXZvaWQg
SW5zcGVjdG9yQ2xpZW50RWZsOjppbnNwZWN0b3JEZXN0cm95ZWQoKQotewotICAgIGNsb3NlSW5z
cGVjdG9yRnJvbnRlbmQoKTsKLSAgICBkZWxldGUgdGhpczsKLX0KLQotSW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsKiBJbnNwZWN0b3JDbGllbnRFZmw6Om9wZW5JbnNwZWN0b3JGcm9udGVuZChJbnNw
ZWN0b3JDb250cm9sbGVyKikKLXsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxs
KG1faW5zcGVjdGVkVmlldywgImluc3BlY3Rvcix2aWV3LGNyZWF0ZSIsIDApOwotCi0gICAgRXZh
c19PYmplY3QqIGluc3BlY3RvclZpZXcgPSBld2tfdmlld19pbnNwZWN0b3Jfdmlld19nZXQobV9p
bnNwZWN0ZWRWaWV3KTsKLSAgICBpZiAoIWluc3BlY3RvclZpZXcpCi0gICAgICAgIHJldHVybiAw
OwotCi0gICAgbV9pbnNwZWN0b3JWaWV3ID0gaW5zcGVjdG9yVmlldzsKLQotICAgIFN0cmluZyBp
bnNwZWN0b3JVcmkgPSBpbnNwZWN0b3JGaWxlc1BhdGgoKSArICIvTWFpbi5odG1sIjsKLSAgICBl
d2tfdmlld191cmlfc2V0KG1faW5zcGVjdG9yVmlldywgaW5zcGVjdG9yVXJpLnV0ZjgoKS5kYXRh
KCkpOwotCi0gICAgYXV0byBmcm9udGVuZENsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVj
dG9yRnJvbnRlbmRDbGllbnRFZmw+KG1faW5zcGVjdGVkVmlldywgbV9pbnNwZWN0b3JWaWV3LCB0
aGlzKTsKLSAgICBtX2Zyb250ZW5kQ2xpZW50ID0gZnJvbnRlbmRDbGllbnQuZ2V0KCk7Ci0KLSAg
ICBJbnNwZWN0b3JDb250cm9sbGVyJiBjb250cm9sbGVyID0gRVdLUHJpdmF0ZTo6Y29yZVBhZ2Uo
bV9pbnNwZWN0b3JWaWV3KS0+aW5zcGVjdG9yQ29udHJvbGxlcigpOwotICAgIGNvbnRyb2xsZXIu
c2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoc3RkOjptb3ZlKGZyb250ZW5kQ2xpZW50KSk7Ci0g
ICAgCi0gICAgcmV0dXJuIHRoaXM7Ci19Ci0KLXZvaWQgSW5zcGVjdG9yQ2xpZW50RWZsOjpjbG9z
ZUluc3BlY3RvckZyb250ZW5kKCkKLXsKLSAgICBpZiAobV9mcm9udGVuZENsaWVudCkKLSAgICAg
ICAgbV9mcm9udGVuZENsaWVudC0+ZGVzdHJveUluc3BlY3RvcldpbmRvdyhmYWxzZSk7Ci19Ci0K
LXZvaWQgSW5zcGVjdG9yQ2xpZW50RWZsOjpicmluZ0Zyb250ZW5kVG9Gcm9udCgpCi17Ci0gICAg
bV9mcm9udGVuZENsaWVudC0+YnJpbmdUb0Zyb250KCk7Ci19Ci0KLXZvaWQgSW5zcGVjdG9yQ2xp
ZW50RWZsOjpoaWdobGlnaHQoKQotewotICAgIGludmFsaWRhdGVWaWV3KG1faW5zcGVjdGVkVmll
dyk7Ci19Ci0KLXZvaWQgSW5zcGVjdG9yQ2xpZW50RWZsOjpoaWRlSGlnaGxpZ2h0KCkKLXsKLSAg
ICBpbnZhbGlkYXRlVmlldyhtX2luc3BlY3RlZFZpZXcpOwotfQotCi1ib29sIEluc3BlY3RvckNs
aWVudEVmbDo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKLXsK
LSAgICBQYWdlKiBmcm9udGVuZFBhZ2UgPSBFV0tQcml2YXRlOjpjb3JlUGFnZShtX2luc3BlY3Rv
clZpZXcpOwotICAgIHJldHVybiBkb0Rpc3BhdGNoTWVzc2FnZU9uRnJvbnRlbmRQYWdlKGZyb250
ZW5kUGFnZSwgbWVzc2FnZSk7Ci19Ci0KLXZvaWQgSW5zcGVjdG9yQ2xpZW50RWZsOjpyZWxlYXNl
RnJvbnRlbmRQYWdlKCkKLXsKLSAgICBtX2luc3BlY3RvclZpZXcgPSAwOwotICAgIG1fZnJvbnRl
bmRDbGllbnQgPSAwOwotfQotCi1TdHJpbmcgSW5zcGVjdG9yQ2xpZW50RWZsOjppbnNwZWN0b3JG
aWxlc1BhdGgoKQotewotICAgIHJldHVybiAiZmlsZTovLyIgKyBpbnNwZWN0b3JSZXNvdXJjZVBh
dGgoKTsKLX0KLQotSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRFZmw6Okluc3BlY3RvckZyb250ZW5k
Q2xpZW50RWZsKEV2YXNfT2JqZWN0KiBpbnNwZWN0ZWRWaWV3LCBFdmFzX09iamVjdCogaW5zcGVj
dG9yVmlldywgSW5zcGVjdG9yQ2xpZW50RWZsKiBpbnNwZWN0b3JDbGllbnQpCi0gICAgOiBJbnNw
ZWN0b3JGcm9udGVuZENsaWVudExvY2FsKCZFV0tQcml2YXRlOjpjb3JlUGFnZShpbnNwZWN0ZWRW
aWV3KS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLCBFV0tQcml2YXRlOjpjb3JlUGFnZShpbnNwZWN0
b3JWaWV3KSwgc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JGcm9udGVuZFNldHRpbmdzRWZsPigp
KQotICAgICwgbV9pbnNwZWN0ZWRWaWV3KGluc3BlY3RlZFZpZXcpCi0gICAgLCBtX2luc3BlY3Rv
clZpZXcoaW5zcGVjdG9yVmlldykKLSAgICAsIG1faW5zcGVjdG9yQ2xpZW50KGluc3BlY3RvckNs
aWVudCkKLXsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQobV9pbnNwZWN0b3JW
aWV3LCAiaW5zcGVjdG9yLHZpZXcsZGVzdHJveSIsIG5vdGlmeUluc3BlY3RvckRlc3Ryb3ksIHRo
aXMpOwotfQotCi1JbnNwZWN0b3JGcm9udGVuZENsaWVudEVmbDo6fkluc3BlY3RvckZyb250ZW5k
Q2xpZW50RWZsKCkKLXsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19kZWwobV9pbnNw
ZWN0b3JWaWV3LCAiaW5zcGVjdG9yLHZpZXcsZGVzdHJveSIsIG5vdGlmeUluc3BlY3RvckRlc3Ry
b3kpOwotCi0gICAgaWYgKG1faW5zcGVjdG9yQ2xpZW50KSB7Ci0gICAgICAgIG1faW5zcGVjdG9y
Q2xpZW50LT5yZWxlYXNlRnJvbnRlbmRQYWdlKCk7Ci0gICAgICAgIG1faW5zcGVjdG9yQ2xpZW50
ID0gMDsKLSAgICB9Ci19Ci0KLVN0cmluZyBJbnNwZWN0b3JGcm9udGVuZENsaWVudEVmbDo6bG9j
YWxpemVkU3RyaW5nc1VSTCgpCi17Ci0gICAgcmV0dXJuIG1faW5zcGVjdG9yQ2xpZW50LT5pbnNw
ZWN0b3JGaWxlc1BhdGgoKSArICIvbG9jYWxpemVkU3RyaW5ncy5qcyI7Ci19Ci0KLXZvaWQgSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnRFZmw6OmJyaW5nVG9Gcm9udCgpCi17Ci0gICAgZXZhc19vYmpl
Y3RfZm9jdXNfc2V0KG1faW5zcGVjdG9yVmlldywgdHJ1ZSk7Ci19Ci0KLXZvaWQgSW5zcGVjdG9y
RnJvbnRlbmRDbGllbnRFZmw6OmNsb3NlV2luZG93KCkKLXsKLSAgICBkZXN0cm95SW5zcGVjdG9y
V2luZG93KHRydWUpOwotfQotCi12b2lkIEluc3BlY3RvckZyb250ZW5kQ2xpZW50RWZsOjppbnNw
ZWN0ZWRVUkxDaGFuZ2VkKGNvbnN0IFN0cmluZyYpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsK
LX0KLQotdm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudEVmbDo6YXR0YWNoV2luZG93KERvY2tT
aWRlKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnRFZmw6OmRldGFjaFdpbmRvdygpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0K
LQotdm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudEVmbDo6c2V0QXR0YWNoZWRXaW5kb3dIZWln
aHQodW5zaWduZWQpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBJbnNwZWN0
b3JGcm9udGVuZENsaWVudEVmbDo6c2V0QXR0YWNoZWRXaW5kb3dXaWR0aCh1bnNpZ25lZCkKLXsK
LSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIEluc3BlY3RvckZyb250ZW5kQ2xpZW50
RWZsOjpzZXRUb29sYmFySGVpZ2h0KHVuc2lnbmVkKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7
Ci19Ci0KLXZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRFZmw6OmRlc3Ryb3lJbnNwZWN0b3JX
aW5kb3coYm9vbCBub3RpZnlJbnNwZWN0b3JDb250cm9sbGVyKQotewotICAgIGlmIChub3RpZnlJ
bnNwZWN0b3JDb250cm9sbGVyKQotICAgICAgICBFV0tQcml2YXRlOjpjb3JlUGFnZShtX2luc3Bl
Y3RlZFZpZXcpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuZGlzY29ubmVjdEZyb250ZW5kKEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbjo6SW5zcGVjdG9yRGVzdHJveWVkKTsKLQot
ICAgIGlmIChtX2luc3BlY3RvckNsaWVudCkKLSAgICAgICAgbV9pbnNwZWN0b3JDbGllbnQtPnJl
bGVhc2VGcm9udGVuZFBhZ2UoKTsKLQotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2Nh
bGwobV9pbnNwZWN0ZWRWaWV3LCAiaW5zcGVjdG9yLHZpZXcsY2xvc2UiLCBtX2luc3BlY3RvclZp
ZXcpOwotfQotCi19Ci0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNv
cmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEVmbC5oIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29y
ZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50RWZsLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGQ4YWRhYzQuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBv
cnQvSW5zcGVjdG9yQ2xpZW50RWZsLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMDIgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICogQ29weXJpZ2h0IChDKSAyMDA4IElOZFQgLSBJbnN0aXR1dG8gTm9raWEgZGUgVGVjbm9s
b2dpYQotICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgUHJvRlVTSU9OIGVtYmVkZGVkIHN5c3Rl
bXMKLSAqIENvcHlyaWdodCAoQykgMjAwOS0yMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBs
ZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
Ci0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgSW5zcGVjdG9y
Q2xpZW50RWZsX2gKLSNkZWZpbmUgSW5zcGVjdG9yQ2xpZW50RWZsX2gKLQotI2lmIEVOQUJMRShJ
TlNQRUNUT1IpCi0KLSNpbmNsdWRlICJJbnNwZWN0b3JDbGllbnQuaCIKLSNpbmNsdWRlICJJbnNw
ZWN0b3JGb3J3YXJkaW5nLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2Nh
bC5oIgotI2luY2x1ZGUgPEV2YXMuaD4KLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBJbnNwZWN0b3JGcm9udGVuZENsaWVudEVmbDsKLQotY2xh
c3MgSW5zcGVjdG9yQ2xpZW50RWZsIDogcHVibGljIEluc3BlY3RvckNsaWVudCwgcHVibGljIElu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbCB7Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQgSW5zcGVjdG9y
Q2xpZW50RWZsKEV2YXNfT2JqZWN0Kik7Ci0gICAgfkluc3BlY3RvckNsaWVudEVmbCgpOwotCi0g
ICAgdmlydHVhbCB2b2lkIGluc3BlY3RvckRlc3Ryb3llZCgpOwotCi0gICAgdmlydHVhbCBJbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwqIG9wZW5JbnNwZWN0b3JGcm9udGVuZChJbnNwZWN0b3JDb250
cm9sbGVyKik7Ci0gICAgdmlydHVhbCB2b2lkIGNsb3NlSW5zcGVjdG9yRnJvbnRlbmQoKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgYnJpbmdGcm9udGVuZFRvRnJvbnQoKTsKLQotICAgIHZpcnR1YWwgdm9p
ZCBoaWdobGlnaHQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgaGlkZUhpZ2hsaWdodCgpOwotCi0gICAg
dmlydHVhbCBib29sIHNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcmKTsKLQotICAg
IHZvaWQgcmVsZWFzZUZyb250ZW5kUGFnZSgpOwotICAgIFN0cmluZyBpbnNwZWN0b3JGaWxlc1Bh
dGgoKTsKLQotcHJpdmF0ZToKLSAgICBFdmFzX09iamVjdCogbV9pbnNwZWN0ZWRWaWV3OwotICAg
IEV2YXNfT2JqZWN0KiBtX2luc3BlY3RvclZpZXc7Ci0gICAgSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnRFZmwqIG1fZnJvbnRlbmRDbGllbnQ7Ci19OwotCi1jbGFzcyBJbnNwZWN0b3JGcm9udGVuZENs
aWVudEVmbCA6IHB1YmxpYyBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsIHsKLXB1YmxpYzoK
LSAgICBJbnNwZWN0b3JGcm9udGVuZENsaWVudEVmbChFdmFzX09iamVjdCosIEV2YXNfT2JqZWN0
KiwgSW5zcGVjdG9yQ2xpZW50RWZsKik7Ci0gICAgfkluc3BlY3RvckZyb250ZW5kQ2xpZW50RWZs
KCk7Ci0KLSAgICB2aXJ0dWFsIFN0cmluZyBsb2NhbGl6ZWRTdHJpbmdzVVJMKCk7Ci0KLSAgICB2
aXJ0dWFsIHZvaWQgYnJpbmdUb0Zyb250KCk7Ci0gICAgdmlydHVhbCB2b2lkIGNsb3NlV2luZG93
KCk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgaW5zcGVjdGVkVVJMQ2hhbmdlZChjb25zdCBTdHJpbmcm
KTsKLQotICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hXaW5kb3coRG9ja1NpZGUpOwotICAgIHZpcnR1
YWwgdm9pZCBkZXRhY2hXaW5kb3coKTsKLQotICAgIHZpcnR1YWwgdm9pZCBzZXRBdHRhY2hlZFdp
bmRvd0hlaWdodCh1bnNpZ25lZCk7Ci0gICAgdmlydHVhbCB2b2lkIHNldEF0dGFjaGVkV2luZG93
V2lkdGgodW5zaWduZWQpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRUb29sYmFySGVpZ2h0KHVuc2ln
bmVkKSBvdmVycmlkZTsKLQotICAgIHZvaWQgZGlzY29ubmVjdEluc3BlY3RvckNsaWVudCgpIHsg
bV9pbnNwZWN0b3JDbGllbnQgPSAwOyB9Ci0gICAgdm9pZCBkZXN0cm95SW5zcGVjdG9yV2luZG93
KGJvb2wgbm90aWZ5SW5zcGVjdG9yQ29udHJvbGxlcik7Ci0KLXByaXZhdGU6Ci0gICAgRXZhc19P
YmplY3QqIG1faW5zcGVjdGVkVmlldzsKLSAgICBFdmFzX09iamVjdCogbV9pbnNwZWN0b3JWaWV3
OwotICAgIEluc3BlY3RvckNsaWVudEVmbCogbV9pbnNwZWN0b3JDbGllbnQ7Ci0KLX07Ci19Ci0K
LSNlbmRpZgotI2VuZGlmIC8vIEluc3BlY3RvckNsaWVudEVmbF9oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9OYXZpZ2F0b3JDb250ZW50VXRpbHNDbGllbnRF
ZmwuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvTmF2aWdhdG9yQ29udGVu
dFV0aWxzQ2xpZW50RWZsLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDRkYTJm
My4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9OYXZpZ2F0
b3JDb250ZW50VXRpbHNDbGllbnRFZmwuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsOTAgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCi0gKgotICog
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIk5hdmlnYXRvckNvbnRlbnRV
dGlsc0NsaWVudEVmbC5oIgotCi0jaWYgRU5BQkxFKE5BVklHQVRPUl9DT05URU5UX1VUSUxTKQot
Ci0jaW5jbHVkZSAiZXdrX2N1c3RvbV9oYW5kbGVyX3ByaXZhdGUuaCIKLSNpbmNsdWRlIDx3dGYv
dGV4dC9DU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RhdGljIEV3a19DdXN0
b21fSGFuZGxlcl9EYXRhKiBjdXN0b21IYW5kbGVyRGF0YUNyZWF0ZShFdmFzX09iamVjdCogZXdr
VmlldywgY29uc3QgY2hhciogc2NoZW1lLCBjb25zdCBjaGFyKiBiYXNlVVJMLCBjb25zdCBjaGFy
KiB1cmwpCi17Ci0gICAgRXdrX0N1c3RvbV9IYW5kbGVyX0RhdGEqIGRhdGEgPSBuZXcgRXdrX0N1
c3RvbV9IYW5kbGVyX0RhdGE7Ci0gICAgZGF0YS0+ZXdrVmlldyA9IGV3a1ZpZXc7Ci0gICAgZGF0
YS0+c2NoZW1lID0gZWluYV9zdHJpbmdzaGFyZV9hZGQoc2NoZW1lKTsKLSAgICBkYXRhLT5iYXNl
X3VybCA9IGVpbmFfc3RyaW5nc2hhcmVfYWRkKGJhc2VVUkwpOwotICAgIGRhdGEtPnVybCA9IGVp
bmFfc3RyaW5nc2hhcmVfYWRkKHVybCk7Ci0gICAgcmV0dXJuIGRhdGE7Ci19Ci0KLXN0YXRpYyB2
b2lkIGN1c3RvbUhhbmRsZXJEYXRhRGVsZXRlKEV3a19DdXN0b21fSGFuZGxlcl9EYXRhKiBkYXRh
KQotewotICAgIGVpbmFfc3RyaW5nc2hhcmVfZGVsKGRhdGEtPnNjaGVtZSk7Ci0gICAgZWluYV9z
dHJpbmdzaGFyZV9kZWwoZGF0YS0+YmFzZV91cmwpOwotICAgIGVpbmFfc3RyaW5nc2hhcmVfZGVs
KGRhdGEtPnVybCk7Ci0gICAgZGVsZXRlIGRhdGE7Ci19Ci0KLU5hdmlnYXRvckNvbnRlbnRVdGls
c0NsaWVudEVmbDo6TmF2aWdhdG9yQ29udGVudFV0aWxzQ2xpZW50RWZsKEV2YXNfT2JqZWN0KiB2
aWV3KQotICAgIDogbV92aWV3KHZpZXcpCi17Ci19Ci0KLXZvaWQgTmF2aWdhdG9yQ29udGVudFV0
aWxzQ2xpZW50RWZsOjpyZWdpc3RlclByb3RvY29sSGFuZGxlcihjb25zdCBTdHJpbmcmIHNjaGVt
ZSwgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRs
ZSkKLXsKLSAgICBFd2tfQ3VzdG9tX0hhbmRsZXJfRGF0YSogZGF0YSA9IGN1c3RvbUhhbmRsZXJE
YXRhQ3JlYXRlKG1fdmlldywgc2NoZW1lLnV0ZjgoKS5kYXRhKCksIGJhc2VVUkwuc3RyaW5nKCku
dXRmOCgpLmRhdGEoKSwgdXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgIGRhdGEtPnRp
dGxlID0gZWluYV9zdHJpbmdzaGFyZV9hZGQodGl0bGUudXRmOCgpLmRhdGEoKSk7Ci0gICAgZXdr
X2N1c3RvbV9oYW5kbGVyX3JlZ2lzdGVyX3Byb3RvY29sX2hhbmRsZXIoZGF0YSk7Ci0gICAgZWlu
YV9zdHJpbmdzaGFyZV9kZWwoZGF0YS0+dGl0bGUpOwotICAgIGN1c3RvbUhhbmRsZXJEYXRhRGVs
ZXRlKGRhdGEpOwotfQotCi0jaWYgRU5BQkxFKENVU1RPTV9TQ0hFTUVfSEFORExFUikKLU5hdmln
YXRvckNvbnRlbnRVdGlsc0NsaWVudDo6Q3VzdG9tSGFuZGxlcnNTdGF0ZSBOYXZpZ2F0b3JDb250
ZW50VXRpbHNDbGllbnRFZmw6OmlzUHJvdG9jb2xIYW5kbGVyUmVnaXN0ZXJlZChjb25zdCBTdHJp
bmcmIHNjaGVtZSwgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBVUkwmIHVybCkKLXsKLSAgICBF
d2tfQ3VzdG9tX0hhbmRsZXJfRGF0YSogZGF0YSA9IGN1c3RvbUhhbmRsZXJEYXRhQ3JlYXRlKG1f
dmlldywgc2NoZW1lLnV0ZjgoKS5kYXRhKCksIGJhc2VVUkwuc3RyaW5nKCkudXRmOCgpLmRhdGEo
KSwgdXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgIE5hdmlnYXRvckNvbnRlbnRVdGls
c0NsaWVudDo6Q3VzdG9tSGFuZGxlcnNTdGF0ZSByZXN1bHQgPSBzdGF0aWNfY2FzdDxDdXN0b21I
YW5kbGVyc1N0YXRlPihld2tfY3VzdG9tX2hhbmRsZXJfcmVnaXN0ZXJfcHJvdG9jb2xfaGFuZGxl
cihkYXRhKSk7Ci0gICAgY3VzdG9tSGFuZGxlckRhdGFEZWxldGUoZGF0YSk7Ci0KLSAgICByZXR1
cm4gcmVzdWx0OwotfQotCi12b2lkIE5hdmlnYXRvckNvbnRlbnRVdGlsc0NsaWVudEVmbDo6dW5y
ZWdpc3RlclByb3RvY29sSGFuZGxlcihjb25zdCBTdHJpbmcmIHNjaGVtZSwgY29uc3QgVVJMJiBi
YXNlVVJMLCBjb25zdCBVUkwmIHVybCkKLXsKLSAgICBFd2tfQ3VzdG9tX0hhbmRsZXJfRGF0YSog
ZGF0YSA9IGN1c3RvbUhhbmRsZXJEYXRhQ3JlYXRlKG1fdmlldywgc2NoZW1lLnV0ZjgoKS5kYXRh
KCksIGJhc2VVUkwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgdXJsLnN0cmluZygpLnV0ZjgoKS5k
YXRhKCkpOwotICAgIGV3a19jdXN0b21faGFuZGxlcl9yZWdpc3Rlcl9wcm90b2NvbF9oYW5kbGVy
KGRhdGEpOwotICAgIGN1c3RvbUhhbmRsZXJEYXRhRGVsZXRlKGRhdGEpOwotfQotI2VuZGlmCi0K
LX0KLQotI2VuZGlmIC8vIEVOQUJMRShOQVZJR0FUT1JfQ09OVEVOVF9VVElMUykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L05hdmlnYXRvckNvbnRlbnRVdGls
c0NsaWVudEVmbC5oIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvTmF2aWdhdG9y
Q29udGVudFV0aWxzQ2xpZW50RWZsLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVi
NDhiMWIuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvTmF2
aWdhdG9yQ29udGVudFV0aWxzQ2xpZW50RWZsLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKLSAqCi0g
KiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaWZuZGVmIE5hdmlnYXRvckNvbnRlbnRVdGlsc0NsaWVudEVmbF9oCi0jZGVm
aW5lIE5hdmlnYXRvckNvbnRlbnRVdGlsc0NsaWVudEVmbF9oCi0KLSNpZiBFTkFCTEUoTkFWSUdB
VE9SX0NPTlRFTlRfVVRJTFMpCi0jaW5jbHVkZSAiTmF2aWdhdG9yQ29udGVudFV0aWxzQ2xpZW50
LmgiCi0KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci1jbGFzcyBOYXZpZ2F0b3JDb250ZW50VXRpbHNDbGllbnRFZmwgOiBwdWJsaWMgV2ViQ29yZTo6
TmF2aWdhdG9yQ29udGVudFV0aWxzQ2xpZW50IHsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBOYXZp
Z2F0b3JDb250ZW50VXRpbHNDbGllbnRFZmwoRXZhc19PYmplY3QqIHZpZXcpOwotCi0gICAgfk5h
dmlnYXRvckNvbnRlbnRVdGlsc0NsaWVudEVmbCgpIHsgfQotICAgIHZpcnR1YWwgdm9pZCByZWdp
c3RlclByb3RvY29sSGFuZGxlcihjb25zdCBTdHJpbmcmIHNjaGVtZSwgY29uc3QgVVJMJiBiYXNl
VVJMLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHRpdGxlKTsKLQotI2lmIEVOQUJMRShDVVNU
T01fU0NIRU1FX0hBTkRMRVIpCi0gICAgdmlydHVhbCBDdXN0b21IYW5kbGVyc1N0YXRlIGlzUHJv
dG9jb2xIYW5kbGVyUmVnaXN0ZXJlZChjb25zdCBTdHJpbmcmIHNjaGVtZSwgY29uc3QgVVJMJiBi
YXNlVVJMLCBjb25zdCBVUkwmKTsKLSAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3RlclByb3RvY29s
SGFuZGxlcihjb25zdCBTdHJpbmcmIHNjaGVtZSwgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBV
UkwmKTsKLSNlbmRpZgotCi1wcml2YXRlOgotICAgIEV2YXNfT2JqZWN0KiBtX3ZpZXc7Ci19Owot
fQotCi0jZW5kaWYKLSNlbmRpZiAvLyBOYXZpZ2F0b3JDb250ZW50VXRpbHNDbGllbnRFZmxfaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9u
UHJlc2VudGVyQ2xpZW50RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0
L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGM0ZTVjYTguLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29y
ZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsLmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDc0ICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IChDKSAyMDExIFNhbXN1bmcgRWxl
Y3Ryb25pY3MKLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiAgdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoK
LSAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiAgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UKLSAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bwotICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiAgQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIk5vdGlm
aWNhdGlvblByZXNlbnRlckNsaWVudEVmbC5oIgotCi0jaWYgRU5BQkxFKE5PVElGSUNBVElPTlMp
IHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRl
ZC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLU5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVu
dEVmbDo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsKCkKLXsKLX0KLQotTm90aWZpY2F0
aW9uUHJlc2VudGVyQ2xpZW50RWZsOjp+Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsKCkK
LXsKLX0KLQotYm9vbCBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6OnNob3coTm90aWZp
Y2F0aW9uKiBub3RpZmljYXRpb24pCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1
cm4gZmFsc2U7Ci19Ci0KLXZvaWQgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpjYW5j
ZWwoTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24pCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsK
LX0KLQotdm9pZCBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6Om5vdGlmaWNhdGlvbk9i
amVjdERlc3Ryb3llZChOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbikKLXsKLSAgICBub3RJbXBs
ZW1lbnRlZCgpOwotfQotCi12b2lkIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6bm90
aWZpY2F0aW9uQ29udHJvbGxlckRlc3Ryb3llZCgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsK
LX0KLQotdm9pZCBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6OnJlcXVlc3RQZXJtaXNz
aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8Vm9pZENhbGxi
YWNrPiBjYWxsYmFjaykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi1Ob3RpZmljYXRp
b25DbGllbnQ6OlBlcm1pc3Npb24gTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpjaGVj
a1Blcm1pc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKLXsKLSAgICBub3RJ
bXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBQZXJtaXNzaW9uRGVuaWVkOwotfQotCi12b2lkIE5v
dGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6Y2FuY2VsUmVxdWVzdHNGb3JQZXJtaXNzaW9u
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQo
KTsKLX0KLQotfQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3Jl
U3VwcG9ydC9Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwuaCBiL1NvdXJjZS9XZWJLaXQv
ZWZsL1dlYkNvcmVTdXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbC5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlY2U1Y2NmLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbC5o
CisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgKEMpIDIw
MTEgU2Ftc3VuZyBFbGVjdHJvbmljcwotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAq
ICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAg
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQotICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiAgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqICBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaWZuZGVmIE5vdGlmaWNhdGlvblBy
ZXNlbnRlckNsaWVudEVmbF9oCi0jZGVmaW5lIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVm
bF9oCi0KLSNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklD
QVRJT05TKQotI2luY2x1ZGUgIk5vdGlmaWNhdGlvbi5oIgotI2luY2x1ZGUgIk5vdGlmaWNhdGlv
bkNsaWVudC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIE5vdGlmaWNhdGlvblBy
ZXNlbnRlckNsaWVudEVmbCA6IHB1YmxpYyBOb3RpZmljYXRpb25DbGllbnQgewotCi1wdWJsaWM6
Ci0gICAgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsKCk7Ci0gICAgfk5vdGlmaWNhdGlv
blByZXNlbnRlckNsaWVudEVmbCgpOwotCi0gICAgdmlydHVhbCBib29sIHNob3coTm90aWZpY2F0
aW9uKik7Ci0gICAgdmlydHVhbCB2b2lkIGNhbmNlbChOb3RpZmljYXRpb24qKTsKLSAgICB2aXJ0
dWFsIHZvaWQgbm90aWZpY2F0aW9uT2JqZWN0RGVzdHJveWVkKE5vdGlmaWNhdGlvbiopOwotICAg
IHZpcnR1YWwgdm9pZCBub3RpZmljYXRpb25Db250cm9sbGVyRGVzdHJveWVkKCk7Ci0gICAgdmly
dHVhbCB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNz
UmVmUHRyPFZvaWRDYWxsYmFjaz4pOwotICAgIHZpcnR1YWwgTm90aWZpY2F0aW9uQ2xpZW50OjpQ
ZXJtaXNzaW9uIGNoZWNrUGVybWlzc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7Ci0gICAg
dmlydHVhbCB2b2lkIGNhbmNlbFJlcXVlc3RzRm9yUGVybWlzc2lvbihTY3JpcHRFeGVjdXRpb25D
b250ZXh0Kik7Ci19OwotCi19Ci0jZW5kaWYKLSNlbmRpZiAvLyBOb3RpZmljYXRpb25QcmVzZW50
ZXJDbGllbnRFZmxfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBv
cnQvUGxhdGZvcm1TdHJhdGVnaWVzRWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVT
dXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0VmbC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGU0NGRmYTQuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1
cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzRWZsLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE1MyAr
MCwwIEBACi0vKgotICAgIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNyBBcHBsZSBJbmMuICBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICAgIENvcHlyaWdodCAoQykgMjAwOCBUcm9sbHRlY2ggQVNBCi0g
ICAgQ29weXJpZ2h0IChDKSAyMDA4IENvbGxhYm9yYSBMdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gICAgQ29weXJpZ2h0IChDKSAyMDA4IElOZFQgLSBJbnN0aXR1dG8gTm9raWEgZGUgVGVjbm9s
b2dpYQotICAgIENvcHlyaWdodCAoQykgMjAwOS0yMDEwIFByb0ZVU0lPTiBlbWJlZGRlZCBzeXN0
ZW1zCi0gICAgQ29weXJpZ2h0IChDKSAyMDA5LTIwMTEgU2Ftc3VuZyBFbGVjdHJvbmljcwotICAg
IENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbgotCi0gICAgVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICAgIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
Ci0gICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCi0gICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAgICBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQotICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgotCi0gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gICAgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwKLSAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSovCi0KLSNpbmNsdWRlICJjb25m
aWcuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybVN0cmF0ZWdpZXNFZmwuaCIKLQotI2luY2x1ZGUgIk5v
dEltcGxlbWVudGVkLmgiCi0jaW5jbHVkZSAiUGFnZS5oIgotI2luY2x1ZGUgIlBhZ2VHcm91cC5o
IgotI2luY2x1ZGUgIlBsYXRmb3JtQ29va2llSmFyLmgiCi0jaW5jbHVkZSAiUGx1Z2luRGF0YWJh
c2UuaCIKLSNpbmNsdWRlICJQbHVnaW5QYWNrYWdlLmgiCi0KLXVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwotCi12b2lkIFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6aW5pdGlhbGl6ZSgpCi17Ci0gICAg
REVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFBsYXRmb3JtU3RyYXRlZ2llc0VmbCwgcGxh
dGZvcm1TdHJhdGVnaWVzLCAoKSk7Ci0gICAgc2V0UGxhdGZvcm1TdHJhdGVnaWVzKCZwbGF0Zm9y
bVN0cmF0ZWdpZXMpOwotfQotCi1QbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6OlBsYXRmb3JtU3RyYXRl
Z2llc0VmbCgpCi17Ci19Ci0KLUNvb2tpZXNTdHJhdGVneSogUGxhdGZvcm1TdHJhdGVnaWVzRWZs
OjpjcmVhdGVDb29raWVzU3RyYXRlZ3koKQotewotICAgIHJldHVybiB0aGlzOwotfQotCi1EYXRh
YmFzZVN0cmF0ZWd5KiBQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6OmNyZWF0ZURhdGFiYXNlU3RyYXRl
Z3koKQotewotICAgIHJldHVybiB0aGlzOwotfQotCi1Mb2FkZXJTdHJhdGVneSogUGxhdGZvcm1T
dHJhdGVnaWVzRWZsOjpjcmVhdGVMb2FkZXJTdHJhdGVneSgpCi17Ci0gICAgcmV0dXJuIHRoaXM7
Ci19Ci0KLVBhc3RlYm9hcmRTdHJhdGVneSogUGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpjcmVhdGVQ
YXN0ZWJvYXJkU3RyYXRlZ3koKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJu
IDA7Ci19Ci0KLVBsdWdpblN0cmF0ZWd5KiBQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6OmNyZWF0ZVBs
dWdpblN0cmF0ZWd5KCkKLXsKLSAgICByZXR1cm4gdGhpczsKLX0KLQotU2hhcmVkV29ya2VyU3Ry
YXRlZ3kqIFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6Y3JlYXRlU2hhcmVkV29ya2VyU3RyYXRlZ3ko
KQotewotICAgIHJldHVybiB0aGlzOwotfQotCi1TdG9yYWdlU3RyYXRlZ3kqIFBsYXRmb3JtU3Ry
YXRlZ2llc0VmbDo6Y3JlYXRlU3RvcmFnZVN0cmF0ZWd5KCkKLXsKLSAgICByZXR1cm4gdGhpczsK
LX0KLQotLy8gQ29va2llc1N0cmF0ZWd5Ci1TdHJpbmcgUGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpj
b29raWVzRm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3Qg
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCkKLXsKLSAgICByZXR1cm4gV2ViQ29yZTo6
Y29va2llc0ZvckRPTShzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwpOwotfQotCi12b2lkIFBsYXRm
b3JtU3RyYXRlZ2llc0VmbDo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYgdXJsLCBj
b25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZykKLXsKLSAgICBXZWJDb3JlOjpzZXRDb29raWVzRnJv
bURPTShzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwsIGNvb2tpZVN0cmluZyk7Ci19Ci0KLWJvb2wg
UGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpjb29raWVzRW5hYmxlZChjb25zdCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwp
Ci17Ci0gICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZXNFbmFibGVkKHNlc3Npb24sIGZpcnN0UGFy
dHksIHVybCk7Ci19Ci0KLVN0cmluZyBQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6OmNvb2tpZVJlcXVl
c3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwg
Y29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCkKLXsKLSAgICByZXR1cm4gV2Vi
Q29yZTo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwg
dXJsKTsKLX0KLQotYm9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6OmdldFJhd0Nvb2tpZXMoY29u
c3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFVSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKLXsKLSAgICByZXR1
cm4gV2ViQ29yZTo6Z2V0UmF3Q29va2llcyhzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwsIHJhd0Nv
b2tpZXMpOwotfQotCi12b2lkIFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6ZGVsZXRlQ29va2llKGNv
bnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgY29va2llTmFtZSkKLXsKLSAgICBXZWJDb3JlOjpkZWxldGVDb29raWUoc2Vzc2lv
biwgdXJsLCBjb29raWVOYW1lKTsKLX0KLQotdm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6OnJl
ZnJlc2hQbHVnaW5zKCkKLXsKLSNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKLSAgICBQ
bHVnaW5EYXRhYmFzZTo6aW5zdGFsbGVkUGx1Z2lucygpLT5yZWZyZXNoKCk7Ci0jZW5kaWYKLX0K
LQotdm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6OmdldFBsdWdpbkluZm8oY29uc3QgUGFnZSos
IFZlY3RvcjxQbHVnaW5JbmZvPiYgb3V0UGx1Z2lucykKLXsKLSNpZiBFTkFCTEUoTkVUU0NBUEVf
UExVR0lOX0FQSSkKLSAgICBQbHVnaW5EYXRhYmFzZTo6aW5zdGFsbGVkUGx1Z2lucygpLT5yZWZy
ZXNoKCk7Ci0gICAgY29uc3QgVmVjdG9yPFBsdWdpblBhY2thZ2UqPiYgcGx1Z2lucyA9IFBsdWdp
bkRhdGFiYXNlOjppbnN0YWxsZWRQbHVnaW5zKCktPnBsdWdpbnMoKTsKLSAgICBvdXRQbHVnaW5z
LnJlc2l6ZShwbHVnaW5zLnNpemUoKSk7Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBs
dWdpbnMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgUGx1Z2luUGFja2FnZSogcGFja2FnZSA9IHBs
dWdpbnNbaV07Ci0KLSAgICAgICAgUGx1Z2luSW5mbyBwbHVnaW5JbmZvOwotICAgICAgICBwbHVn
aW5JbmZvLm5hbWUgPSBwYWNrYWdlLT5uYW1lKCk7Ci0gICAgICAgIHBsdWdpbkluZm8uZmlsZSA9
IHBhY2thZ2UtPmZpbGVOYW1lKCk7Ci0gICAgICAgIHBsdWdpbkluZm8uZGVzYyA9IHBhY2thZ2Ut
PmRlc2NyaXB0aW9uKCk7Ci0KLSAgICAgICAgY29uc3QgTUlNRVRvRGVzY3JpcHRpb25zTWFwJiBt
aW1lVG9EZXNjcmlwdGlvbnMgPSBwYWNrYWdlLT5taW1lVG9EZXNjcmlwdGlvbnMoKTsKLSAgICAg
ICAgTUlNRVRvRGVzY3JpcHRpb25zTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBtaW1lVG9EZXNj
cmlwdGlvbnMuZW5kKCk7Ci0gICAgICAgIGZvciAoTUlNRVRvRGVzY3JpcHRpb25zTWFwOjpjb25z
dF9pdGVyYXRvciBpdCA9IG1pbWVUb0Rlc2NyaXB0aW9ucy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsr
aXQpIHsKLSAgICAgICAgICAgIE1pbWVDbGFzc0luZm8gbWltZTsKLQotICAgICAgICAgICAgbWlt
ZS50eXBlID0gaXQtPmtleTsKLSAgICAgICAgICAgIG1pbWUuZGVzYyA9IGl0LT52YWx1ZTsKLSAg
ICAgICAgICAgIG1pbWUuZXh0ZW5zaW9ucyA9IHBhY2thZ2UtPm1pbWVUb0V4dGVuc2lvbnMoKS5n
ZXQobWltZS50eXBlKTsKLSAgICAgICAgICAgIHBsdWdpbkluZm8ubWltZXMuYXBwZW5kKG1pbWUp
OwotICAgICAgICB9Ci0KLSAgICAgICAgb3V0UGx1Z2lucy5hcHBlbmQocGx1Z2luSW5mbyk7Ci0g
ICAgfQotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0ob3V0UGx1Z2lucyk7Ci0jZW5kaWYKLX0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRl
Z2llc0VmbC5oIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJh
dGVnaWVzRWZsLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU3MzdhNGYuLjAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVn
aWVzRWZsLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2NCArMCwwIEBACi0vKgotICAgIENvcHlyaWdo
dCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbgotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICAgIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gICAgTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
Ci0gICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAgICBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICAg
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0gICAg
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQotICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gICAgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAgICBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSovCi0KLSNpZm5kZWYgUGxhdGZvcm1TdHJhdGVn
aWVzRWZsX2gKLSNkZWZpbmUgUGxhdGZvcm1TdHJhdGVnaWVzRWZsX2gKLQotI2luY2x1ZGUgIkNv
b2tpZXNTdHJhdGVneS5oIgotI2luY2x1ZGUgIkRhdGFiYXNlU3RyYXRlZ3kuaCIKLSNpbmNsdWRl
ICJMb2FkZXJTdHJhdGVneS5oIgotI2luY2x1ZGUgIlBhc3RlYm9hcmRTdHJhdGVneS5oIgotI2lu
Y2x1ZGUgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgotI2luY2x1ZGUgIlBsdWdpblN0cmF0ZWd5Lmgi
Ci0jaW5jbHVkZSAiU2hhcmVkV29ya2VyU3RyYXRlZ3kuaCIKLSNpbmNsdWRlICJTdG9yYWdlU3Ry
YXRlZ3kuaCIKLQotY2xhc3MgUGxhdGZvcm1TdHJhdGVnaWVzRWZsIDogcHVibGljIFdlYkNvcmU6
OlBsYXRmb3JtU3RyYXRlZ2llcywgcHJpdmF0ZSBXZWJDb3JlOjpDb29raWVzU3RyYXRlZ3ksIHBy
aXZhdGUgV2ViQ29yZTo6RGF0YWJhc2VTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpMb2FkZXJT
dHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpQbHVnaW5TdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3Jl
OjpTaGFyZWRXb3JrZXJTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpTdG9yYWdlU3RyYXRlZ3kg
ewotcHVibGljOgotICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemUoKTsKLQotcHJpdmF0ZToKLSAg
ICBQbGF0Zm9ybVN0cmF0ZWdpZXNFZmwoKTsKLQotICAgIC8vIFdlYkNvcmU6OlBsYXRmb3JtU3Ry
YXRlZ2llcwotICAgIHZpcnR1YWwgV2ViQ29yZTo6Q29va2llc1N0cmF0ZWd5KiBjcmVhdGVDb29r
aWVzU3RyYXRlZ3koKTsKLSAgICB2aXJ0dWFsIFdlYkNvcmU6OkRhdGFiYXNlU3RyYXRlZ3kqIGNy
ZWF0ZURhdGFiYXNlU3RyYXRlZ3koKTsKLSAgICB2aXJ0dWFsIFdlYkNvcmU6OkxvYWRlclN0cmF0
ZWd5KiBjcmVhdGVMb2FkZXJTdHJhdGVneSgpOwotICAgIHZpcnR1YWwgV2ViQ29yZTo6UGFzdGVi
b2FyZFN0cmF0ZWd5KiBjcmVhdGVQYXN0ZWJvYXJkU3RyYXRlZ3koKTsKLSAgICB2aXJ0dWFsIFdl
YkNvcmU6OlBsdWdpblN0cmF0ZWd5KiBjcmVhdGVQbHVnaW5TdHJhdGVneSgpOwotICAgIHZpcnR1
YWwgV2ViQ29yZTo6U2hhcmVkV29ya2VyU3RyYXRlZ3kqIGNyZWF0ZVNoYXJlZFdvcmtlclN0cmF0
ZWd5KCk7Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpTdG9yYWdlU3RyYXRlZ3kqIGNyZWF0ZVN0b3Jh
Z2VTdHJhdGVneSgpOwotCi0gICAgLy8gV2ViQ29yZTo6Q29va2llc1N0cmF0ZWd5Ci0gICAgdmly
dHVhbCBTdHJpbmcgY29va2llc0ZvckRPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNl
c3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlVS
TCYpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBXZWJDb3JlOjpO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFN0cmluZyYpOwotICAgIHZpcnR1YWwgYm9vbCBjb29r
aWVzRW5hYmxlZChjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBX
ZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYpOwotICAgIHZpcnR1
YWwgU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFdlYkNvcmU6Ok5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgV2ViQ29yZTo6VVJMJik7Ci0gICAgdmlydHVhbCBib29sIGdldFJhd0Nvb2tpZXMoY29uc3Qg
V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBXZWJDb3JlOjpVUkwmLCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpOwot
ICAgIHZpcnR1YWwgdm9pZCBkZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgU3RyaW5nJik7Ci0KLSAgICAv
LyBXZWJDb3JlOjpEYXRhYmFzZVN0cmF0ZWd5Ci0gICAgLy8gLSBVc2luZyBkZWZhdWx0IGltcGxl
bWVudGF0aW9uLgotCi0gICAgLy8gV2ViQ29yZTo6UGx1Z2luU3RyYXRlZ3kKLSAgICB2aXJ0dWFs
IHZvaWQgcmVmcmVzaFBsdWdpbnMoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UGx1Z2luSW5mbyhj
b25zdCBXZWJDb3JlOjpQYWdlKiwgVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+Jik7Ci19Owot
Ci0jZW5kaWYgLy8gUGxhdGZvcm1TdHJhdGVnaWVzRWZsX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L1BvcHVwTWVudUVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2VmbC9XZWJDb3JlU3VwcG9ydC9Qb3B1cE1lbnVFZmwuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBjNGRkOTkyLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNv
cmVTdXBwb3J0L1BvcHVwTWVudUVmbC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw3OCArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAwOCBJTmRUIC0gSW5zdGl0dXRvIE5va2lhIGRl
IFRlY25vbG9naWEKLSAqIENvcHlyaWdodCAoQykgMjAwOS0yMDEwIFByb0ZVU0lPTiBlbWJlZGRl
ZCBzeXN0ZW1zCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBTYW1zdW5nIEVsZWN0cm9uaWNz
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJz
aWRpYXJ5KC1pZXMpLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAq
Ci0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQot
ICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4KLSAqCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlBvcHVwTWVu
dUVmbC5oIgotCi0jaW5jbHVkZSAiQ2hyb21lLmgiCi0jaW5jbHVkZSAiQ2hyb21lQ2xpZW50RWZs
LmgiCi0jaW5jbHVkZSAiRnJhbWUuaCIKLSNpbmNsdWRlICJGcmFtZVZpZXcuaCIKLSNpbmNsdWRl
ICJQYWdlLmgiCi0jaW5jbHVkZSAiUG9wdXBNZW51Q2xpZW50LmgiCi0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotUG9wdXBNZW51RWZsOjpQb3B1cE1lbnVFZmwoUG9wdXBNZW51Q2xpZW50KiBjbGll
bnQpCi0gICAgOiBtX3BvcHVwQ2xpZW50KGNsaWVudCkKLSAgICAsIG1fdmlldygwKQotewotfQot
Ci1Qb3B1cE1lbnVFZmw6On5Qb3B1cE1lbnVFZmwoKQotewotICAgIC8vIFRlbGwgY2xpZW50IHRv
IGRlc3Ryb3kgZGF0YSByZWxhdGVkIHRvIHRoaXMgcG9wdXAgc2luY2UgdGhpcyBvYmplY3QgaXMK
LSAgICAvLyBnb2luZyBhd2F5LgotICAgIGlmIChtX3ZpZXcpCi0gICAgICAgIGhpZGUoKTsKLX0K
LQotdm9pZCBQb3B1cE1lbnVFZmw6OnNob3coY29uc3QgSW50UmVjdCYgcmVjdCwgRnJhbWVWaWV3
KiB2aWV3LCBpbnQgaW5kZXgpCi17Ci0gICAgQVNTRVJUKG1fcG9wdXBDbGllbnQpOwotICAgIENo
cm9tZUNsaWVudEVmbCYgY2hyb21lQ2xpZW50ID0gc3RhdGljX2Nhc3Q8Q2hyb21lQ2xpZW50RWZs
Jj4odmlldy0+ZnJhbWUoKS5wYWdlKCktPmNocm9tZSgpLmNsaWVudCgpKTsKLQotICAgIG1fdmll
dyA9IHZpZXc7Ci0gICAgY2hyb21lQ2xpZW50LmNyZWF0ZVNlbGVjdFBvcHVwKG1fcG9wdXBDbGll
bnQsIGluZGV4LCByZWN0KTsKLX0KLQotdm9pZCBQb3B1cE1lbnVFZmw6OmhpZGUoKQotewotICAg
IEFTU0VSVChtX3ZpZXcpOwotICAgIENocm9tZUNsaWVudEVmbCYgY2hyb21lQ2xpZW50ID0gc3Rh
dGljX2Nhc3Q8Q2hyb21lQ2xpZW50RWZsJj4obV92aWV3LT5mcmFtZSgpLnBhZ2UoKS0+Y2hyb21l
KCkuY2xpZW50KCkpOwotCi0gICAgY2hyb21lQ2xpZW50LmRlc3Ryb3lTZWxlY3RQb3B1cCgpOwot
fQotCi12b2lkIFBvcHVwTWVudUVmbDo6dXBkYXRlRnJvbUVsZW1lbnQoKQotewotICAgIGNsaWVu
dCgpLT5zZXRUZXh0RnJvbUl0ZW0oY2xpZW50KCktPnNlbGVjdGVkSW5kZXgoKSk7Ci19Ci0KLXZv
aWQgUG9wdXBNZW51RWZsOjpkaXNjb25uZWN0Q2xpZW50KCkKLXsKLSAgICBtX3BvcHVwQ2xpZW50
ID0gMDsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBv
cnQvUG9wdXBNZW51RWZsLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9Qb3B1
cE1lbnVFZmwuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWFiOWQ1Ni4uMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9Qb3B1cE1lbnVFZmwuaAor
KysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAg
Tm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgotICoKLSAqIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0g
KiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaWZuZGVmIFBv
cHVwTWVudUVmbF9oCi0jZGVmaW5lIFBvcHVwTWVudUVmbF9oCi0KLSNpbmNsdWRlICJJbnRSZWN0
LmgiCi0jaW5jbHVkZSAiUG9wdXBNZW51LmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4K
LSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNs
YXNzIEZyYW1lVmlldzsKLWNsYXNzIFNjcm9sbGJhcjsKLWNsYXNzIFBvcHVwTWVudUNsaWVudDsK
LQotY2xhc3MgUG9wdXBNZW51RWZsIDogcHVibGljIFBvcHVwTWVudSB7Ci1wdWJsaWM6Ci0gICAg
ZXhwbGljaXQgUG9wdXBNZW51RWZsKFBvcHVwTWVudUNsaWVudCopOwotICAgIH5Qb3B1cE1lbnVF
ZmwoKTsKLQotICAgIHZpcnR1YWwgdm9pZCBzaG93KGNvbnN0IEludFJlY3QmLCBGcmFtZVZpZXcq
LCBpbnQgaW5kZXgpOwotICAgIHZpcnR1YWwgdm9pZCBoaWRlKCk7Ci0gICAgdmlydHVhbCB2b2lk
IHVwZGF0ZUZyb21FbGVtZW50KCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpc2Nvbm5lY3RDbGllbnQo
KTsKLQotcHJpdmF0ZToKLSAgICBQb3B1cE1lbnVDbGllbnQqIGNsaWVudCgpIGNvbnN0IHsgcmV0
dXJuIG1fcG9wdXBDbGllbnQ7IH0KLQotICAgIFBvcHVwTWVudUNsaWVudCogbV9wb3B1cENsaWVu
dDsKLSAgICBGcmFtZVZpZXcqIG1fdmlldzsKLX07Ci0KLX0KLQotI2VuZGlmIC8vIFBvcHVwTWVu
dUVmbF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9Qcm9n
cmVzc1RyYWNrZXJDbGllbnRFZmwuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBv
cnQvUHJvZ3Jlc3NUcmFja2VyQ2xpZW50RWZsLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggNzMxZjQyZC4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3Vw
cG9ydC9Qcm9ncmVzc1RyYWNrZXJDbGllbnRFZmwuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNjIg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBTYW1zdW5nIEVsZWN0cm9uaWNzCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJQcm9ncmVzc1RyYWNrZXJD
bGllbnRFZmwuaCIKLQotI2luY2x1ZGUgIkZyYW1lLmgiCi0jaW5jbHVkZSAiTm90SW1wbGVtZW50
ZWQuaCIKLSNpbmNsdWRlICJld2tfZnJhbWVfcHJpdmF0ZS5oIgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLVByb2dyZXNzVHJhY2tlckNsaWVudEVmbDo6UHJvZ3Jlc3NUcmFja2VyQ2xpZW50RWZs
KEV2YXNfT2JqZWN0KiB2aWV3KQotICAgIDogbV92aWV3KHZpZXcpCi17Ci0gICAgQVNTRVJUKG1f
dmlldyk7Ci19Ci0gICAgCi12b2lkIFByb2dyZXNzVHJhY2tlckNsaWVudEVmbDo6cHJvZ3Jlc3NU
cmFja2VyRGVzdHJveWVkKCkKLXsKLSAgICBkZWxldGUgdGhpczsKLX0KLSAgICAKLXZvaWQgUHJv
Z3Jlc3NUcmFja2VyQ2xpZW50RWZsOjpwcm9ncmVzc1N0YXJ0ZWQoRnJhbWUmIG9yaWdpbmF0aW5n
UHJvZ3Jlc3NGcmFtZSkKLXsKLSAgICBld2tfZnJhbWVfbG9hZF9zdGFydGVkKEVXS1ByaXZhdGU6
OmtpdEZyYW1lKCZvcmlnaW5hdGluZ1Byb2dyZXNzRnJhbWUpKTsKLSAgICBwcm9ncmVzc0VzdGlt
YXRlQ2hhbmdlZChvcmlnaW5hdGluZ1Byb2dyZXNzRnJhbWUpOwotfQotCi12b2lkIFByb2dyZXNz
VHJhY2tlckNsaWVudEVmbDo6cHJvZ3Jlc3NFc3RpbWF0ZUNoYW5nZWQoRnJhbWUmIG9yaWdpbmF0
aW5nUHJvZ3Jlc3NGcmFtZSkKLXsKLSAgICBld2tfZnJhbWVfbG9hZF9wcm9ncmVzc19jaGFuZ2Vk
KEVXS1ByaXZhdGU6OmtpdEZyYW1lKCZvcmlnaW5hdGluZ1Byb2dyZXNzRnJhbWUpKTsKLX0KLQot
dm9pZCBQcm9ncmVzc1RyYWNrZXJDbGllbnRFZmw6OnByb2dyZXNzRmluaXNoZWQoRnJhbWUmKQot
ewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L1Byb2dyZXNzVHJhY2tl
ckNsaWVudEVmbC5oIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvUHJvZ3Jlc3NU
cmFja2VyQ2xpZW50RWZsLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ1N2RhYjAu
LjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvUHJvZ3Jlc3NU
cmFja2VyQ2xpZW50RWZsLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE0IFNhbXN1bmcgRWxlY3Ryb25pY3MKLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRl
ZiBQcm9ncmVzc1RyYWNrZXJDbGllbnRFZmxfaAotI2RlZmluZSBQcm9ncmVzc1RyYWNrZXJDbGll
bnRFZmxfaAotCi0jaW5jbHVkZSAiUHJvZ3Jlc3NUcmFja2VyQ2xpZW50LmgiCi0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotY2xhc3MgUHJvZ3Jlc3NUcmFja2VyQ2xpZW50RWZsIGZpbmFsIDogcHVi
bGljIFdlYkNvcmU6OlByb2dyZXNzVHJhY2tlckNsaWVudCB7Ci1wdWJsaWM6Ci0gICAgZXhwbGlj
aXQgUHJvZ3Jlc3NUcmFja2VyQ2xpZW50RWZsKEV2YXNfT2JqZWN0Kik7Ci0gICAgCi1wcml2YXRl
OgotICAgIHZpcnR1YWwgdm9pZCBwcm9ncmVzc1RyYWNrZXJEZXN0cm95ZWQoKSBvdmVycmlkZTsK
LQotICAgIHZpcnR1YWwgdm9pZCBwcm9ncmVzc1N0YXJ0ZWQoV2ViQ29yZTo6RnJhbWUmIG9yaWdp
bmF0aW5nUHJvZ3Jlc3NGcmFtZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHByb2dyZXNz
RXN0aW1hdGVDaGFuZ2VkKFdlYkNvcmU6OkZyYW1lJiBvcmlnaW5hdGluZ1Byb2dyZXNzRnJhbWUp
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBwcm9ncmVzc0ZpbmlzaGVkKFdlYkNvcmU6OkZy
YW1lJiBvcmlnaW5hdGluZ1Byb2dyZXNzRnJhbWUpIG92ZXJyaWRlOwotCi0gICAgRXZhc19PYmpl
Y3QqIG1fdmlldzsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFBy
b2dyZXNzVHJhY2tlckNsaWVudEVmbF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9X
ZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVFZmwuY3BwIGIvU291cmNlL1dlYktpdC9lZmwv
V2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51RWZsLmNwcApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMjBlY2IwOS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJD
b3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVFZmwuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNTYg
KzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDggSU5kVCAtIEluc3RpdHV0byBOb2tp
YSBkZSBUZWNub2xvZ2lhCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgUHJvRlVTSU9OIGVt
YmVkZGVkIHN5c3RlbXMKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBTYW1zdW5nIEVsZWN0
cm9uaWNzCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0
cyBzdWJzaWRpYXJ5KC1pZXMpLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExlc3Nl
ciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJs
aWMKLSAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRv
IHRoZSBGcmVlIFNvZnR3YXJlCi0gKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNlYXJjaFBvcHVwTWVudUVmbC5oIgotCi0jaW5j
bHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1TZWFyY2hQ
b3B1cE1lbnVFZmw6OlNlYXJjaFBvcHVwTWVudUVmbChQb3B1cE1lbnVDbGllbnQqIGNsaWVudCkK
LSAgICA6IG1fcG9wdXAoYWRvcHRSZWYobmV3IFBvcHVwTWVudUVmbChjbGllbnQpKSkKLXsKLSAg
ICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi1Qb3B1cE1lbnUqIFNlYXJjaFBvcHVwTWVudUVmbDo6
cG9wdXBNZW51KCkKLXsKLSAgICByZXR1cm4gbV9wb3B1cC5nZXQoKTsKLX0KLQotdm9pZCBTZWFy
Y2hQb3B1cE1lbnVFZmw6OnNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcmLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9p
ZCBTZWFyY2hQb3B1cE1lbnVFZmw6OmxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJp
bmcmLCBWZWN0b3I8U3RyaW5nPiYpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotYm9v
bCBTZWFyY2hQb3B1cE1lbnVFZmw6OmVuYWJsZWQoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7
Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZs
L1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudUVmbC5oIGIvU291cmNlL1dlYktpdC9lZmwv
V2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51RWZsLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDdlZWM4NGUuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29y
ZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51RWZsLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBp
dHMgc3Vic2lkaWFyeSgtaWVzKS4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCi0gKgotICovCi0KLSNpZm5kZWYgU2VhcmNoUG9wdXBNZW51RWZsX2gKLSNk
ZWZpbmUgU2VhcmNoUG9wdXBNZW51RWZsX2gKLQotI2luY2x1ZGUgIlBvcHVwTWVudUVmbC5oIgot
I2luY2x1ZGUgIlNlYXJjaFBvcHVwTWVudS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNs
YXNzIFNlYXJjaFBvcHVwTWVudUVmbCA6IHB1YmxpYyBTZWFyY2hQb3B1cE1lbnUgewotcHVibGlj
OgotICAgIGV4cGxpY2l0IFNlYXJjaFBvcHVwTWVudUVmbChQb3B1cE1lbnVDbGllbnQqKTsKLQot
ICAgIHZpcnR1YWwgUG9wdXBNZW51KiBwb3B1cE1lbnUoKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2F2
ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgVmVjdG9yPFN0
cmluZz4mIHNlYXJjaEl0ZW1zKTsKLSAgICB2aXJ0dWFsIHZvaWQgbG9hZFJlY2VudFNlYXJjaGVz
KGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgVmVjdG9yPFN0cmluZz4mIHNlYXJjaEl0ZW1zKTsK
LSAgICB2aXJ0dWFsIGJvb2wgZW5hYmxlZCgpOwotCi1wcml2YXRlOgotICAgIFJlZlB0cjxQb3B1
cE1lbnVFZmw+IG1fcG9wdXA7Ci19OwotCi19Ci0KLSNlbmRpZiAvLyBTZWFyY2hQb3B1cE1lbnVF
ZmxfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvU3RvcmFn
ZVRyYWNrZXJDbGllbnRFZmwuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQv
U3RvcmFnZVRyYWNrZXJDbGllbnRFZmwuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA5ZDlkMjY5Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0
L1N0b3JhZ2VUcmFja2VyQ2xpZW50RWZsLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAg
QEAKLS8qCi0gKiAgQ29weXJpZ2h0IChDKSAyMDEyIFByb0ZVU0lPTiBFbWJlZGRlZCBTeXN0ZW1z
Ci0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiAg
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KLSAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJTdG9yYWdlVHJhY2tl
ckNsaWVudEVmbC5oIgotCi0jaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi12b2lkIFN0b3JhZ2VUcmFja2VyQ2xpZW50RWZsOjpkaXNwYXRjaERpZE1v
ZGlmeU9yaWdpbihjb25zdCBTdHJpbmcmKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0K
LXZvaWQgU3RvcmFnZVRyYWNrZXJDbGllbnRFZmw6OmRpZEZpbmlzaExvYWRpbmdPcmlnaW5zKCkK
LXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9TdG9yYWdlVHJhY2tlckNsaWVudEVmbC5oIGIvU291cmNl
L1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvU3RvcmFnZVRyYWNrZXJDbGllbnRFZmwuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjJlYWUyMC4uMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9TdG9yYWdlVHJhY2tlckNsaWVudEVmbC5oCisrKyAv
ZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgKEMpIDIwMTIgUHJv
RlVTSU9OIEVtYmVkZGVkIFN5c3RlbXMKLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0g
KiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiAg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICog
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKLSAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiAg
Qm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2lmbmRlZiBTdG9yYWdlVHJhY2tl
ckNsaWVudEVmbF9oCi0jZGVmaW5lIFN0b3JhZ2VUcmFja2VyQ2xpZW50RWZsX2gKLQotI2luY2x1
ZGUgIlN0b3JhZ2VUcmFja2VyQ2xpZW50LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xh
c3MgU3RvcmFnZVRyYWNrZXJDbGllbnRFZmwgOiBwdWJsaWMgU3RvcmFnZVRyYWNrZXJDbGllbnQg
ewotcHVibGljOgotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZE1vZGlmeU9yaWdpbihjb25z
dCBTdHJpbmcmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZ09yaWdpbnMoKTsK
LX07Ci0KLX0KLQotI2VuZGlmIC8vIFN0b3JhZ2VUcmFja2VyQ2xpZW50RWZsX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L1ZpYnJhdGlvbkNsaWVudEVmbC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9WaWJyYXRpb25DbGllbnRFZmwu
Y3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2Mjg5Y2M1Li4wMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L1ZpYnJhdGlvbkNsaWVudEVmbC5jcHAK
KysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAoQykgMjAx
MiBTYW1zdW5nIEVsZWN0cm9uaWNzCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICog
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNp
bmNsdWRlICJWaWJyYXRpb25DbGllbnRFZmwuaCIKLQotI2lmIEVOQUJMRShWSUJSQVRJT04pCi0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotVmlicmF0aW9uQ2xpZW50RWZsOjpWaWJyYXRpb25DbGll
bnRFZmwoRXZhc19PYmplY3QqIHZpZXcpCi0gICAgOiBtX3ZpZXcodmlldykKLXsKLX0KLQotdm9p
ZCBWaWJyYXRpb25DbGllbnRFZmw6OnZpYnJhdGUoY29uc3QgdW5zaWduZWQmIHRpbWUpCi17Ci0g
ICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChtX3ZpZXcsICJ2aWJyYXRpb24sdmli
cmF0ZSIsICh2b2lkKikmdGltZSk7Ci19Ci0KLXZvaWQgVmlicmF0aW9uQ2xpZW50RWZsOjpjYW5j
ZWxWaWJyYXRpb24oKQotewotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92
aWV3LCAidmlicmF0aW9uLGNhbmNlbCIsIDApOwotfQotCi12b2lkIFZpYnJhdGlvbkNsaWVudEVm
bDo6dmlicmF0aW9uRGVzdHJveWVkKCkKLXsKLSAgICBkZWxldGUgdGhpczsKLX0KLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFZJQlJBVElPTikKLQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvVmlicmF0aW9uQ2xpZW50RWZs
LmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9WaWJyYXRpb25DbGllbnRFZmwu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWJjNDI3MC4uMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9WaWJyYXRpb25DbGllbnRFZmwuaAorKysg
L2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IChDKSAyMDEyIFNh
bXN1bmcgRWxlY3Ryb25pY3MKLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiAgdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv
dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiAgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UKLSAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiAgQm9zdG9u
LCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2lmbmRlZiBWaWJyYXRpb25DbGllbnRFZmxf
aAotI2RlZmluZSBWaWJyYXRpb25DbGllbnRFZmxfaAotCi0jaWYgRU5BQkxFKFZJQlJBVElPTikK
LQotI2luY2x1ZGUgIlZpYnJhdGlvbkNsaWVudC5oIgotI2luY2x1ZGUgPEV2YXMuaD4KLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBWaWJyYXRpb25DbGllbnRFZmwgOiBwdWJsaWMgVmli
cmF0aW9uQ2xpZW50IHsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBWaWJyYXRpb25DbGllbnRFZmwo
RXZhc19PYmplY3QqIHZpZXcpOwotICAgIHZpcnR1YWwgflZpYnJhdGlvbkNsaWVudEVmbCgpIHsg
fQotCi0gICAgdmlydHVhbCB2b2lkIHZpYnJhdGUoY29uc3QgdW5zaWduZWQmIHRpbWUpOwotICAg
IHZpcnR1YWwgdm9pZCBjYW5jZWxWaWJyYXRpb24oKTsKLQotICAgIHZpcnR1YWwgdm9pZCB2aWJy
YXRpb25EZXN0cm95ZWQoKTsKLQotcHJpdmF0ZToKLSAgICBFdmFzX09iamVjdCogbV92aWV3Owot
fTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYKLSNlbmRpZiAvLyBWaWJyYXRp
b25DbGllbnRFZmxfaAotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2Via2l0LnBj
LmluIGIvU291cmNlL1dlYktpdC9lZmwvZXdlYmtpdC5wYy5pbgpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggNDA1NmUwMC4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2Vi
a2l0LnBjLmluCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotcHJlZml4PUBDTUFLRV9J
TlNUQUxMX1BSRUZJWEAKLWV4ZWNfcHJlZml4PSR7cHJlZml4fQotbGliZGlyPUBMSUJfSU5TVEFM
TF9ESVJACi1pbmNsdWRlZGlyPSR7cHJlZml4fS9pbmNsdWRlCi1kYXRhZGlyPSR7cHJlZml4fS9A
REFUQV9JTlNUQUxMX0RJUkAKLQotTmFtZTogV2ViS2l0LUVGTAotRGVzY3JpcHRpb246IFdlYiBj
b250ZW50IGVuZ2luZSBmb3IgRUZMIGFwcGxpY2F0aW9ucwotVmVyc2lvbjogQFBST0pFQ1RfVkVS
U0lPTkAKLVJlcXVpcmVzOiBjYWlybyBldmFzIGVjb3JlIGhhcmZidXp6IGxpYnNvdXAtMi40IGVj
b3JlLWlucHV0Ci1MaWJzOiAtTCR7bGliZGlyfSAtbGV3ZWJraXQgQEVYVFJBX0VXRUJLSVRfTElO
S0AKLUxpYnMucHJpdmF0ZTogQExJQlNfUFJJVkFURUAKLUNmbGFnczogLUkke2luY2x1ZGVkaXJ9
L0BXZWJLaXRfT1VUUFVUX05BTUVALUBQUk9KRUNUX1ZFUlNJT05fTUFKT1JACmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svRVdlYktpdC5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdr
L0VXZWJLaXQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjgyNDExZi4uMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svRVdlYktpdC5oCisrKyAvZGV2L251bGwKQEAg
LTEsNTAgKzAsMCBAQAotLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDgtMjAwOSBJTmRUIC0gSW5z
dGl0dXRvIE5va2lhIGRlIFRlY25vbG9naWEKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBQ
cm9GVVNJT04gZW1iZWRkZWQgc3lzdGVtcwotICAgIENvcHlyaWdodCAoQykgMjAwOS0yMDEwIFNh
bXN1bmcgRWxlY3Ryb25pY3MKLQotICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICAgIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICAgIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KLQotICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAgICBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLQotICAgIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKLSAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcu
TElCLiAgSWYgbm90LCB3cml0ZSB0bwotICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gICAgQm9zdG9uLCBNQSAw
MjExMC0xMzAxLCBVU0EuCi0qLwotCi0vKioKLSAqIEBmaWxlICAgIEVXZWJLaXQuaAotICogQGJy
aWVmICAgQ29udGFpbnMgdGhlIGhlYWRlciBmaWxlcyB0aGF0IGFyZSByZXF1aXJlZCBieSBXZWJL
aXQtRUZMLgotICoKLSAqIEl0IGluY2x1ZGVzIHRoZSBhbGwgaGVhZGVyIGZpbGVzIHRoYXQgYXJl
IGV4cG9ydGVkIHRvIHB1YmxpYyBBUEkgYW5kIEV2YXMgaGVhZGVyLgotICovCi0KLSNpZm5kZWYg
RVdlYktpdF9oCi0jZGVmaW5lIEVXZWJLaXRfaAotCi0jaW5jbHVkZSAiZXdrX2F1dGguaCIKLSNp
bmNsdWRlICJld2tfY29udGV4dG1lbnUuaCIKLSNpbmNsdWRlICJld2tfY29va2llcy5oIgotI2lu
Y2x1ZGUgImV3a19maWxlX2Nob29zZXIuaCIKLSNpbmNsdWRlICJld2tfZnJhbWUuaCIKLSNpbmNs
dWRlICJld2tfaGlzdG9yeS5oIgotI2luY2x1ZGUgImV3a19qcy5oIgotI2luY2x1ZGUgImV3a19t
YWluLmgiCi0jaW5jbHVkZSAiZXdrX25ldHdvcmsuaCIKLSNpbmNsdWRlICJld2tfc2VjdXJpdHlf
b3JpZ2luLmgiCi0jaW5jbHVkZSAiZXdrX3NlY3VyaXR5X3BvbGljeS5oIgotI2luY2x1ZGUgImV3
a19zZXR0aW5ncy5oIgotI2luY2x1ZGUgImV3a192aWV3LmgiCi0jaW5jbHVkZSAiZXdrX3dlYl9k
YXRhYmFzZS5oIgotI2luY2x1ZGUgImV3a193aW5kb3dfZmVhdHVyZXMuaCIKLQotI2luY2x1ZGUg
PEV2YXMuaD4gCi0KLSNlbmRpZiAvLyBFV2ViS2l0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvZWZsL2V3ay9ld2tfYXV0aC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2F1dGgu
Y3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNTBiOGI2Li4wMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfYXV0aC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwz
MyArMCwwIEBACi0vKgotICAgIENvcHlyaWdodCAoQykgMjAxMSBTYW1zdW5nIEVsZWN0cm9uaWNz
Ci0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu
c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
LSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KLSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLAotICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgot
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgImV3a19hdXRoLmgiCi0KLSNpbmNs
dWRlICJld2tfYXV0aF9zb3VwX3ByaXZhdGUuaCIKLQotdm9pZCBld2tfYXV0aF9zaG93X2RpYWxv
Z19jYWxsYmFja19zZXQoRXdrX0F1dGhfU2hvd19EaWFsb2dfQ2FsbGJhY2sgY2FsbGJhY2spCi17
Ci0gICAgZXdrX2F1dGhfc291cF9zaG93X2RpYWxvZ19jYWxsYmFja19zZXQoY2FsbGJhY2spOwot
fQotCi12b2lkIGV3a19hdXRoX2NyZWRlbnRpYWxzX3NldChjaGFyKiB1c2VybmFtZSwgY2hhciog
cGFzc3dvcmQsIHZvaWQqIGRhdGEpCi17Ci0gICAgZXdrX2F1dGhfc291cF9jcmVkZW50aWFsc19z
ZXQodXNlcm5hbWUsIHBhc3N3b3JkLCBkYXRhKTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvZWZsL2V3ay9ld2tfYXV0aC5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19hdXRoLmgK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJmZDIwMDAuLjAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYktpdC9lZmwvZXdrL2V3a19hdXRoLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2MiArMCww
IEBACi0vKgotICAgIENvcHlyaWdodCAoQykgMjAxMSBTYW1zdW5nIEVsZWN0cm9uaWNzCi0KLSAg
ICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCi0gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgotICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8K
LSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLAotICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotKi8KLQot
LyoqCi0gKiBAZmlsZSAgICBld2tfYXV0aC5oCi0gKiBAYnJpZWYgICBEZXNjcmliZXMgdGhlIGF1
dGhlbnRpY2F0aW9uIEFQSS4KLSAqLwotCi0jaWZuZGVmIGV3a19hdXRoX2gKLSNkZWZpbmUgZXdr
X2F1dGhfaAotCi0jaW5jbHVkZSA8RWluYS5oPgotCi0jaWZkZWYgX19jcGx1c3BsdXMKLWV4dGVy
biAiQyIgewotI2VuZGlmCi0KLS8qKgotICogQ2FsbGJhY2sgdG8gYmUgY2FsbGVkIHdoZW4gYXV0
aGVudGljYXRpb24gaXMgcmVxdWlyZWQuCi0gKgotICogQHBhcmFtIHJlYWxtIGF1dGgncyByZWFs
bQotICogQHBhcmFtIHVyaSB1cmkKLSAqIEBwYXJhbSBkYXRhIHBvaW50cyB0byBXZWJLaXRBdXRo
RGF0YQotICovCi10eXBlZGVmIHZvaWQgKCpFd2tfQXV0aF9TaG93X0RpYWxvZ19DYWxsYmFjayko
Y29uc3QgY2hhciAqcmVhbG0sIGNvbnN0IGNoYXIgKnVyaSwgdm9pZCAqZGF0YSk7Ci0KLS8qKgot
ICogU2V0cyBjYWxsYmFjayB0byBiZSBjYWxsZWQgd2hlbiBhdXRoZW50aWNhdGlvbiBpcyByZXF1
aXJlZC4KLSAqCi0gKiBAcGFyYW0gY2FsbGJhY2sgY2FsbGJhY2sgdG8gYmUgY2FsbGVkCi0gKi8K
LUVBUEkgdm9pZCBld2tfYXV0aF9zaG93X2RpYWxvZ19jYWxsYmFja19zZXQoRXdrX0F1dGhfU2hv
d19EaWFsb2dfQ2FsbGJhY2spOwotCi0vKioKLSAqIENhbGxzIGF1dGhlbnRpY2F0aW9uIG1ldGhv
ZCBmb3Igc2V0dGluZyBjcmVkZW50aWFscy4KLSAqCi0gKiBAcGFyYW0gdXNlcm5hbWUgdXNlcm5h
bWUKLSAqIEBwYXJhbSBwYXNzd29yZCB1c2VyIHBhc3N3b3JkCi0gKiBAcGFyYW0gZGF0YSBzb3Vw
IGF1dGhlbnRpY2F0aW9uIGRhdGEKLSAqLwotRUFQSSB2b2lkIGV3a19hdXRoX2NyZWRlbnRpYWxz
X3NldChjaGFyICp1c2VybmFtZSwgY2hhciAqcGFzc3dvcmQsIHZvaWQgKmRhdGEpOwotCi0jaWZk
ZWYgX19jcGx1c3BsdXMKLX0KLSNlbmRpZgotI2VuZGlmIC8vIGV3a19hdXRoX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfYXV0aF9zb3VwLmNwcCBiL1NvdXJjZS9XZWJL
aXQvZWZsL2V3ay9ld2tfYXV0aF9zb3VwLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggM2QzZTkzZi4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2F1dGhf
c291cC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzcgKzAsMCBAQAotLyoKLSAgICBDb3B5cmln
aHQgKEMpIDIwMDkgSWdhbGlhIFMuTC4KLSAgICBDb3B5cmlnaHQgKEMpIDIwMTEgU2Ftc3VuZyBF
bGVjdHJvbmljcwotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gICAgTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gICAgdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi0g
ICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKLSAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICAgIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0gICAgWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQot
ICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvCi0gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAgICBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4KLSovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJld2tfYXV0aF9z
b3VwX3ByaXZhdGUuaCIKLQotI2luY2x1ZGUgImV3a19hdXRoLmgiCi0jaW5jbHVkZSA8Z2xpYi1v
YmplY3QuaD4KLSNpbmNsdWRlIDxnbGliLmg+Ci0jaW5jbHVkZSA8bGlic291cC9zb3VwLmg+Ci0K
LS8qKgotICogI0V3a19Tb3VwX0F1dGhfRGlhbG9nIGlzIGEgI1NvdXBTZXNzaW9uRmVhdHVyZSB0
aGF0IHlvdSBjYW4gYXR0YWNoIHRvIHlvdXIKLSAqICNTb3VwU2Vzc2lvbiB0byBwcm92aWRlIGEg
c2ltcGxlIGF1dGhlbnRpY2F0aW9uIGRpYWxvZyB3aGlsZQotICogaGFuZGxpbmcgSFRUUCBiYXNp
YyBhdXRoLiBJdCBpcyBidWlsdCBhcyBhIHNpbXBsZSBDLW9ubHkgbW9kdWxlCi0gKiB0byBlYXNl
IHJldXNlLgotICovCi0KLXR5cGVkZWYgc3RydWN0IF9Fd2tfQXV0aF9EYXRhIHsKLSAgICBTb3Vw
TWVzc2FnZSogbWVzc2FnZTsKLSAgICBTb3VwQXV0aCogYXV0aDsKLSAgICBTb3VwU2Vzc2lvbiog
c2Vzc2lvbjsKLX0gRXdrX0F1dGhfRGF0YTsKLQotc3RhdGljIEV3a19BdXRoX1Nob3dfRGlhbG9n
X0NhbGxiYWNrIGV3a19hdXRoX3Nob3dfZGlhbG9nX2NhbGxiYWNrID0gMDsKLQotc3RhdGljIHZv
aWQgZXdrX2F1dGhfc291cF9kaWFsb2dfc2Vzc2lvbl9mZWF0dXJlX2luaXQoU291cFNlc3Npb25G
ZWF0dXJlSW50ZXJmYWNlKiwgZ3BvaW50ZXIpOwotc3RhdGljIHZvaWQgYXR0YWNoKFNvdXBTZXNz
aW9uRmVhdHVyZSosIFNvdXBTZXNzaW9uKik7Ci1zdGF0aWMgdm9pZCBkZXRhY2goU291cFNlc3Np
b25GZWF0dXJlKiwgU291cFNlc3Npb24qKTsKLXN0YXRpYyB2b2lkIGZyZWVfYXV0aF9kYXRhKEV3
a19BdXRoX0RhdGEqKTsKLQotR19ERUZJTkVfVFlQRV9XSVRIX0NPREUoRXdrX1NvdXBfQXV0aF9E
aWFsb2csIGV3a19hdXRoX3NvdXBfZGlhbG9nLCBHX1RZUEVfT0JKRUNULAotICAgICAgICAgICAg
ICAgICAgICAgICAgR19JTVBMRU1FTlRfSU5URVJGQUNFKFNPVVBfVFlQRV9TRVNTSU9OX0ZFQVRV
UkUsIGV3a19hdXRoX3NvdXBfZGlhbG9nX3Nlc3Npb25fZmVhdHVyZV9pbml0KSkKLQotc3RhdGlj
IHZvaWQgZXdrX2F1dGhfc291cF9kaWFsb2dfY2xhc3NfaW5pdChFd2tfU291cF9BdXRoX0RpYWxv
Z0NsYXNzKikKLXsKLX0KLQotc3RhdGljIHZvaWQgZXdrX2F1dGhfc291cF9kaWFsb2dfaW5pdChF
d2tfU291cF9BdXRoX0RpYWxvZyopCi17Ci19Ci0KLXN0YXRpYyB2b2lkIGV3a19hdXRoX3NvdXBf
ZGlhbG9nX3Nlc3Npb25fZmVhdHVyZV9pbml0KFNvdXBTZXNzaW9uRmVhdHVyZUludGVyZmFjZSog
ZmVhdHVyZUludGVyZmFjZSwgZ3BvaW50ZXIgLyppbnRlcmZhY2VEYXRhKi8pCi17Ci0gICAgZmVh
dHVyZUludGVyZmFjZS0+YXR0YWNoID0gYXR0YWNoOwotICAgIGZlYXR1cmVJbnRlcmZhY2UtPmRl
dGFjaCA9IGRldGFjaDsKLX0KLQotLyoqCi0gKiBAaW50ZXJuYWwKLSAqICBTZXRzIGNhbGxiYWNr
IHRvIGJlIGNhbGxlZCB3aGVuIGF1dGhlbnRpY2F0aW9uIGlzIHJlcXVpcmVkLgotICovCi12b2lk
IGV3a19hdXRoX3NvdXBfc2hvd19kaWFsb2dfY2FsbGJhY2tfc2V0KEV3a19BdXRoX1Nob3dfRGlh
bG9nX0NhbGxiYWNrIGNhbGxiYWNrKQotewotICAgIGV3a19hdXRoX3Nob3dfZGlhbG9nX2NhbGxi
YWNrID0gY2FsbGJhY2s7Ci19Ci0KLS8qKgotICogQGludGVybmFsCi0gKiAgTWV0aG9kIGZvciBz
ZXR0aW5nIGNyZWRlbnRpYWxzCi0gKgotICogIEBwYXJhbSB1c2VybmFtZSB1c2VybmFtZQotICog
IEBwYXJhbSBwYXNzd29yZCBwYXNzd29yZAotICogIEBwYXJhbSBkYXRhIHNvdXAgYXV0aGVudGlj
YXRpb24gZGF0YQotICovCi12b2lkIGV3a19hdXRoX3NvdXBfY3JlZGVudGlhbHNfc2V0KGNvbnN0
IGNoYXIqIHVzZXJuYW1lLCBjb25zdCBjaGFyKiBwYXNzd29yZCwgdm9pZCogZGF0YSkKLXsKLSAg
ICBpZiAoIWRhdGEpCi0gICAgICAgIHJldHVybjsKLQotICAgIEV3a19BdXRoX0RhdGEqIGF1dGhl
bnRpY2F0aW9uRGF0YSA9IHN0YXRpY19jYXN0PEV3a19BdXRoX0RhdGEqPihkYXRhKTsKLSAgICBz
b3VwX2F1dGhfYXV0aGVudGljYXRlKGF1dGhlbnRpY2F0aW9uRGF0YS0+YXV0aCwgdXNlcm5hbWUs
IHBhc3N3b3JkKTsKLSAgICBzb3VwX3Nlc3Npb25fdW5wYXVzZV9tZXNzYWdlKGF1dGhlbnRpY2F0
aW9uRGF0YS0+c2Vzc2lvbiwgYXV0aGVudGljYXRpb25EYXRhLT5tZXNzYWdlKTsKLSAgICBmcmVl
X2F1dGhfZGF0YShhdXRoZW50aWNhdGlvbkRhdGEpOwotfQotCi1zdGF0aWMgdm9pZCBzZXNzaW9u
X2F1dGhlbnRpY2F0ZShTb3VwU2Vzc2lvbiogc2Vzc2lvbiwgU291cE1lc3NhZ2UqIG1lc3NhZ2Us
IFNvdXBBdXRoKiBhdXRoLCBnYm9vbGVhbiAvKnJldHJ5aW5nKi8sIGdwb2ludGVyIC8qdXNlcl9k
YXRhKi8pCi17Ci0gICAgU291cFVSSSogdXJpOwotICAgIEV3a19BdXRoX0RhdGEqIGF1dGhlbnRp
Y2F0aW9uRGF0YTsKLSAgICBjb25zdCBjaGFyKiByZWFsbTsKLQotICAgIGlmICghZXdrX2F1dGhf
c2hvd19kaWFsb2dfY2FsbGJhY2spCi0gICAgICAgIHJldHVybjsKLQotICAgIHNvdXBfc2Vzc2lv
bl9wYXVzZV9tZXNzYWdlKHNlc3Npb24sIG1lc3NhZ2UpOwotICAgIC8vIFdlIG5lZWQgdG8gbWFr
ZSBzdXJlIHRoZSBtZXNzYWdlIHN0aWNrcyBhcm91bmQgd2hlbiBwYXVzaW5nIGl0LgotICAgIGdf
b2JqZWN0X3JlZihtZXNzYWdlKTsKLSAgICBnX29iamVjdF9yZWYoc2Vzc2lvbik7Ci0gICAgZ19v
YmplY3RfcmVmKGF1dGgpOwotCi0gICAgYXV0aGVudGljYXRpb25EYXRhID0gbmV3IEV3a19BdXRo
X0RhdGE7Ci0gICAgYXV0aGVudGljYXRpb25EYXRhLT5tZXNzYWdlID0gbWVzc2FnZTsKLSAgICBh
dXRoZW50aWNhdGlvbkRhdGEtPmF1dGggPSBhdXRoOwotICAgIGF1dGhlbnRpY2F0aW9uRGF0YS0+
c2Vzc2lvbiA9IHNlc3Npb247Ci0KLSAgICB1cmkgPSBzb3VwX21lc3NhZ2VfZ2V0X3VyaShhdXRo
ZW50aWNhdGlvbkRhdGEtPm1lc3NhZ2UpOwotICAgIHJlYWxtID0gc291cF9hdXRoX2dldF9yZWFs
bShhdXRoZW50aWNhdGlvbkRhdGEtPmF1dGgpOwotCi0gICAgLy8gQ2FsbCBhcHBsaWNhdGlvbiBt
ZXRob2QgcmVzcG9uc2libGUgZm9yIHNob3dpbmcgYXV0aGVudGljYXRpb24gZGlhbG9nIGFuZCBz
ZW5kaW5nIGJhY2sgYXV0aG9yaXphdGlvbiBkYXRhLgotICAgIGV3a19hdXRoX3Nob3dfZGlhbG9n
X2NhbGxiYWNrKHJlYWxtLCBzb3VwX3VyaV90b19zdHJpbmcodXJpLCBUUlVFKSwgYXV0aGVudGlj
YXRpb25EYXRhKTsKLX0KLQotc3RhdGljIHZvaWQgZnJlZV9hdXRoX2RhdGEoRXdrX0F1dGhfRGF0
YSogYXV0aERhdGEpCi17Ci0gICAgZ19vYmplY3RfdW5yZWYoYXV0aERhdGEtPm1lc3NhZ2UpOwot
ICAgIGdfb2JqZWN0X3VucmVmKGF1dGhEYXRhLT5zZXNzaW9uKTsKLSAgICBnX29iamVjdF91bnJl
ZihhdXRoRGF0YS0+YXV0aCk7Ci0gICAgZGVsZXRlIGF1dGhEYXRhOwotfQotCi1zdGF0aWMgdm9p
ZCBhdHRhY2goU291cFNlc3Npb25GZWF0dXJlKiBtYW5hZ2VyLCBTb3VwU2Vzc2lvbiogc2Vzc2lv
bikKLXsKLSAgICBnX3NpZ25hbF9jb25uZWN0KHNlc3Npb24sICJhdXRoZW50aWNhdGUiLCBHX0NB
TExCQUNLKHNlc3Npb25fYXV0aGVudGljYXRlKSwgbWFuYWdlcik7Ci19Ci0KLXN0YXRpYyB2b2lk
IGRldGFjaChTb3VwU2Vzc2lvbkZlYXR1cmUqIG1hbmFnZXIsIFNvdXBTZXNzaW9uKiBzZXNzaW9u
KQotewotICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyhzZXNzaW9uLCAo
dm9pZCopc2Vzc2lvbl9hdXRoZW50aWNhdGUsIG1hbmFnZXIpOwotfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9lZmwvZXdrL2V3a19hdXRoX3NvdXBfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktp
dC9lZmwvZXdrL2V3a19hdXRoX3NvdXBfcHJpdmF0ZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBjMzY0ZjYxLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tf
YXV0aF9zb3VwX3ByaXZhdGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLS8qCi0g
ICAgQ29weXJpZ2h0IChDKSAyMDA5IElnYWxpYSBTLkwuCi0gICAgQ29weXJpZ2h0IChDKSAyMDEx
IFNhbXN1bmcgRWxlY3Ryb25pY3MKLQotICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAgICBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICAgIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICAgIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KLQotICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAgICBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLQotICAgIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UKLSAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJ
TkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gICAgQm9zdG9uLCBN
QSAwMjExMC0xMzAxLCBVU0EuCi0qLwotCi0jaWZuZGVmIGV3a19hdXRoX3NvdXBfcHJpdmF0ZV9o
Ci0jZGVmaW5lIGV3a19hdXRoX3NvdXBfcHJpdmF0ZV9oCi0KLSNpbmNsdWRlICJld2tfYXV0aC5o
IgotI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+Ci0jaW5jbHVkZSA8Z2xpYi5oPgotCi0jZGVmaW5l
IEVXS19UWVBFX1NPVVBfQVVUSF9ESUFMT0cgICAgICAgICAgICAoZXdrX2F1dGhfc291cF9kaWFs
b2dfZ2V0X3R5cGUoKSkKLSNkZWZpbmUgRVdLX1NPVVBfQVVUSF9ESUFMT0cob2JqZWN0KSAgICAg
ICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2JqZWN0KSwgRVdLX1RZUEVfU09VUF9B
VVRIX0RJQUxPRywgRXdrX1NvdXBfQXV0aF9EaWFsb2cpKQotI2RlZmluZSBFV0tfU09VUF9BVVRI
X0RJQUxPR19DTEFTUyhrbGFzcykgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyks
IEVXS19UWVBFX1NPVVBfQVVUSF9ESUFMT0csIEV3a19Tb3VwX0F1dGhfRGlhbG9nKSkKLSNkZWZp
bmUgRVdLX0lTX1NPVVBfQVVUSF9ESUFMT0cob2JqZWN0KSAgICAgIChHX1RZUEVfQ0hFQ0tfSU5T
VEFOQ0VfVFlQRSgob2JqZWN0KSwgRVdLX1RZUEVfU09VUF9BVVRIX0RJQUxPRykpCi0jZGVmaW5l
IEVXS19JU19TT1VQX0FVVEhfRElBTE9HX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNT
X1RZUEUoKGtsYXNzKSwgRVdLX1RZUEVfU09VUF9BVVRIX0RJQUxPRykpCi0jZGVmaW5lIEVXS19T
T1VQX0FVVEhfRElBTE9HX0dFVF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFT
Uygob2JqKSwgRVdLX1RZUEVfU09VUF9BVVRIX0RJQUxPRywgRXdrX1NvdXBfQXV0aF9EaWFsb2cp
KQotCi10eXBlZGVmIHN0cnVjdCB7Ci0gICAgR09iamVjdCBwYXJlbnRfaW5zdGFuY2U7Ci19IEV3
a19Tb3VwX0F1dGhfRGlhbG9nOwotCi10eXBlZGVmIHN0cnVjdCB7Ci0gICAgR09iamVjdENsYXNz
IHBhcmVudF9jbGFzczsKLX0gRXdrX1NvdXBfQXV0aF9EaWFsb2dDbGFzczsKLQotR1R5cGUgZXdr
X2F1dGhfc291cF9kaWFsb2dfZ2V0X3R5cGUodm9pZCk7Ci0KLS8qKgotICogIFNldHMgY2FsbGJh
Y2sgdG8gYmUgY2FsbGVkIHdoZW4gYXV0aGVudGljYXRpb24gaXMgcmVxdWlyZWQuCi0gKi8KLXZv
aWQgZXdrX2F1dGhfc291cF9zaG93X2RpYWxvZ19jYWxsYmFja19zZXQoRXdrX0F1dGhfU2hvd19E
aWFsb2dfQ2FsbGJhY2sgY2FsbGJhY2spOwotCi12b2lkIGV3a19hdXRoX3NvdXBfY3JlZGVudGlh
bHNfc2V0KGNvbnN0IGNoYXIgKnVzZXJuYW1lLCBjb25zdCBjaGFyICpwYXNzd29yZCwgdm9pZCAq
ZGF0YSk7Ci0KLSNlbmRpZiAvLyBld2tfYXV0aF9zb3VwX3ByaXZhdGVfaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19jb250ZXh0bWVudS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2VmbC9ld2svZXdrX2NvbnRleHRtZW51LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggZGViMWI3ZS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2NvbnRl
eHRtZW51LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ3OCArMCwwIEBACi0vKgotICAgIENvcHly
aWdodCAoQykgMjAxMCBQcm9GVVNJT04gZW1iZWRkZWQgc3lzdGVtcwotICAgIENvcHlyaWdodCAo
QykgMjAxMCBTYW1zdW5nIEVsZWN0cm9uaWNzCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAgICBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
LSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gICAg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAgICBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCi0gICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICAgIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lu
Y2x1ZGUgImV3a19jb250ZXh0bWVudS5oIgotCi0jaW5jbHVkZSAiQ29udGV4dE1lbnUuaCIKLSNp
bmNsdWRlICJDb250ZXh0TWVudUNvbnRyb2xsZXIuaCIKLSNpbmNsdWRlICJDb250ZXh0TWVudUl0
ZW0uaCIKLSNpbmNsdWRlICJld2tfY29udGV4dG1lbnVfcHJpdmF0ZS5oIgotI2luY2x1ZGUgPEVp
bmEuaD4KLSNpbmNsdWRlIDxlaW5hX3NhZmV0eV9jaGVja3MuaD4KLSNpbmNsdWRlIDx3dGYvdGV4
dC9DU3RyaW5nLmg+Ci0KLS8qKgotICogXHN0cnVjdCAgX0V3a19Db250ZXh0X01lbnUKLSAqIEBi
cmllZiAgIENvbnRhaW5zIHRoZSBjb250ZXh0IG1lbnUgZGF0YS4KLSAqLwotc3RydWN0IF9Fd2tf
Q29udGV4dF9NZW51IHsKLSAgICB1bnNpZ25lZCBpbnQgX19yZWY7IC8qKjwgdGhlIHJlZmVyZW5j
ZSBjb3VudCBvZiB0aGUgb2JqZWN0ICovCi0jaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi0gICAg
V2ViQ29yZTo6Q29udGV4dE1lbnVDb250cm9sbGVyKiBjb250cm9sbGVyOyAvKio8IHRoZSBXZWJD
b3JlJ3Mgb2JqZWN0IHdoaWNoIGlzIHJlc3BvbnNpYmxlIGZvciB0aGUgY29udGV4dCBtZW51ICov
Ci0jZW5kaWYKLSAgICBFdmFzX09iamVjdCogdmlldzsgLyoqPCB0aGUgdmlldyBvYmplY3QgKi8K
LQotICAgIEVpbmFfTGlzdCogaXRlbXM7IC8qKjwgdGhlIGxpc3Qgb2YgaXRlbXMgKi8KLX07Ci0K
LS8qKgotICogXHN0cnVjdCAgX0V3a19Db250ZXh0X01lbnVfSXRlbQotICogQGJyaWVmICAgUmVw
cmVzZW50cyBvbmUgaXRlbSBvZiB0aGUgY29udGV4dCBtZW51IG9iamVjdC4KLSAqLwotc3RydWN0
IF9Fd2tfQ29udGV4dF9NZW51X0l0ZW0gewotICAgIEV3a19Db250ZXh0X01lbnVfSXRlbV9UeXBl
IHR5cGU7IC8qKjwgY29udGFpbnMgdGhlIHR5cGUgb2YgdGhlIGl0ZW0gKi8KLSAgICBFd2tfQ29u
dGV4dF9NZW51X0FjdGlvbiBhY3Rpb247IC8qKjwgY29udGFpbnMgdGhlIGFjdGlvbiBvZiB0aGUg
aXRlbSAqLwotCi0gICAgY29uc3QgY2hhciogdGl0bGU7IC8qKjwgY29udGFpbnMgdGhlIHRpdGxl
IG9mIHRoZSBpdGVtICovCi0gICAgRXdrX0NvbnRleHRfTWVudSogc3VibWVudTsgLyoqPCBjb250
YWlucyB0aGUgcG9pbnRlciB0byB0aGUgc3VibWVudSBvZiB0aGUgaXRlbSAqLwotICAgIEV3a19D
b250ZXh0X01lbnUqIHBhcmVudE1lbnU7IC8qKjwgY29udGFpbnMgdGhlIHBvaW50ZXIgdG8gcGFy
ZW50IG1lbnUgb2YgdGhlIGl0ZW0gKi8KLQotICAgIGJvb2wgY2hlY2tlZCA6IDE7Ci0gICAgYm9v
bCBlbmFibGVkIDogMTsKLX07Ci0KLSNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKLWlubGluZSBz
dGF0aWMgRXdrX0NvbnRleHRfTWVudV9BY3Rpb24gdG9Fd2tDb250ZXh0TWVudUFjdGlvbihXZWJD
b3JlOjpDb250ZXh0TWVudUFjdGlvbiBhY3Rpb24pCi17Ci0gICAgc3dpdGNoIChhY3Rpb24pIHsK
LSAgICBjYXNlIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ05vQWN0aW9uOgotICAgICAgICBy
ZXR1cm4gRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19OT19BQ1RJT047Ci0gICAgY2FzZSBXZWJD
b3JlOjpDb250ZXh0TWVudUl0ZW1UYWdPcGVuTGlua0luTmV3V2luZG93OgotICAgICAgICByZXR1
cm4gRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19PUEVOX0xJTktfSU5fTkVXX1dJTkRPVzsKLSAg
ICBjYXNlIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ0Rvd25sb2FkTGlua1RvRGlzazoKLSAg
ICAgICAgcmV0dXJuIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfRE9XTkxPQURfTElOS19UT19E
SVNLOwotICAgIGNhc2UgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnQ29weUxpbmtUb0NsaXBi
b2FyZDoKLSAgICAgICAgcmV0dXJuIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfQ09QWV9MSU5L
X1RPX0NMSVBCT0FSRDsKLSAgICBjYXNlIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ09wZW5J
bWFnZUluTmV3V2luZG93OgotICAgICAgICByZXR1cm4gRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RB
R19PUEVOX0lNQUdFX0lOX05FV19XSU5ET1c7Ci0gICAgY2FzZSBXZWJDb3JlOjpDb250ZXh0TWVu
dUl0ZW1UYWdEb3dubG9hZEltYWdlVG9EaXNrOgotICAgICAgICByZXR1cm4gRVdLX0NPTlRFWFRf
TUVOVV9JVEVNX1RBR19ET1dOTE9BRF9JTUFHRV9UT19ESVNLOwotICAgIGNhc2UgV2ViQ29yZTo6
Q29udGV4dE1lbnVJdGVtVGFnQ29weUltYWdlVG9DbGlwYm9hcmQ6Ci0gICAgICAgIHJldHVybiBF
V0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0NPUFlfSU1BR0VfVE9fQ0xJUEJPQVJEOwotICAgIGNh
c2UgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnQ29weUltYWdlVXJsVG9DbGlwYm9hcmQ6Ci0g
ICAgICAgIHJldHVybiBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0NPUFlfSU1BR0VfVVJMX1RP
X0NMSVBCT0FSRDsKLSAgICBjYXNlIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ09wZW5GcmFt
ZUluTmV3V2luZG93OgotICAgICAgICByZXR1cm4gRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19P
UEVOX0ZSQU1FX0lOX05FV19XSU5ET1c7Ci0gICAgY2FzZSBXZWJDb3JlOjpDb250ZXh0TWVudUl0
ZW1UYWdDb3B5OgotICAgICAgICByZXR1cm4gRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19DT1BZ
OwotICAgIGNhc2UgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnR29CYWNrOgotICAgICAgICBy
ZXR1cm4gRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19HT19CQUNLOwotICAgIGNhc2UgV2ViQ29y
ZTo6Q29udGV4dE1lbnVJdGVtVGFnR29Gb3J3YXJkOgotICAgICAgICByZXR1cm4gRVdLX0NPTlRF
WFRfTUVOVV9JVEVNX1RBR19HT19GT1JXQVJEOwotICAgIGNhc2UgV2ViQ29yZTo6Q29udGV4dE1l
bnVJdGVtVGFnU3RvcDoKLSAgICAgICAgcmV0dXJuIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdf
U1RPUDsKLSAgICBjYXNlIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ1JlbG9hZDoKLSAgICAg
ICAgcmV0dXJuIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfUkVMT0FEOwotICAgIGNhc2UgV2Vi
Q29yZTo6Q29udGV4dE1lbnVJdGVtVGFnQ3V0OgotICAgICAgICByZXR1cm4gRVdLX0NPTlRFWFRf
TUVOVV9JVEVNX1RBR19DVVQ7Ci0gICAgY2FzZSBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdQ
YXN0ZToKLSAgICAgICAgcmV0dXJuIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfUEFTVEU7Ci0g
ICAgY2FzZSBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdTZWxlY3RBbGw6Ci0gICAgICAgIHJl
dHVybiBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1NFTEVDVF9BTEw7Ci0gICAgY2FzZSBXZWJD
b3JlOjpDb250ZXh0TWVudUl0ZW1UYWdTcGVsbGluZ0d1ZXNzOgotICAgICAgICByZXR1cm4gRVdL
X0NPTlRFWFRfTUVOVV9JVEVNX1RBR19TUEVMTElOR19HVUVTUzsKLSAgICBjYXNlIFdlYkNvcmU6
OkNvbnRleHRNZW51SXRlbVRhZ05vR3Vlc3Nlc0ZvdW5kOgotICAgICAgICByZXR1cm4gRVdLX0NP
TlRFWFRfTUVOVV9JVEVNX1RBR19OT19HVUVTU0VTX0ZPVU5EOwotICAgIGNhc2UgV2ViQ29yZTo6
Q29udGV4dE1lbnVJdGVtVGFnSWdub3JlU3BlbGxpbmc6Ci0gICAgICAgIHJldHVybiBFV0tfQ09O
VEVYVF9NRU5VX0lURU1fVEFHX0lHTk9SRV9TUEVMTElORzsKLSAgICBjYXNlIFdlYkNvcmU6OkNv
bnRleHRNZW51SXRlbVRhZ0xlYXJuU3BlbGxpbmc6Ci0gICAgICAgIHJldHVybiBFV0tfQ09OVEVY
VF9NRU5VX0lURU1fVEFHX0xFQVJOX1NQRUxMSU5HOwotICAgIGNhc2UgV2ViQ29yZTo6Q29udGV4
dE1lbnVJdGVtVGFnT3RoZXI6Ci0gICAgICAgIHJldHVybiBFV0tfQ09OVEVYVF9NRU5VX0lURU1f
VEFHX09USEVSOwotICAgIGNhc2UgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnU2VhcmNoSW5T
cG90bGlnaHQ6Ci0gICAgICAgIHJldHVybiBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1NFQVJD
SF9JTl9TUE9UTElHSFQ7Ci0gICAgY2FzZSBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdTZWFy
Y2hXZWI6Ci0gICAgICAgIHJldHVybiBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1NFQVJDSF9X
RUI7Ci0gICAgY2FzZSBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdMb29rVXBJbkRpY3Rpb25h
cnk6Ci0gICAgICAgIHJldHVybiBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0xPT0tfVVBfSU5f
RElDVElPTkFSWTsKLSAgICBjYXNlIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ09wZW5XaXRo
RGVmYXVsdEFwcGxpY2F0aW9uOgotICAgICAgICByZXR1cm4gRVdLX0NPTlRFWFRfTUVOVV9JVEVN
X1RBR19PUEVOX1dJVEhfREVGQVVMVF9BUFBMSUNBVElPTjsKLSAgICBjYXNlIFdlYkNvcmU6OkNv
bnRleHRNZW51SXRlbVBERkFjdHVhbFNpemU6Ci0gICAgICAgIHJldHVybiBFV0tfQ09OVEVYVF9N
RU5VX0lURU1fUERGQUNUVUFMX1NJWkU7Ci0gICAgY2FzZSBXZWJDb3JlOjpDb250ZXh0TWVudUl0
ZW1QREZab29tSW46Ci0gICAgICAgIHJldHVybiBFV0tfQ09OVEVYVF9NRU5VX0lURU1fUERGWk9P
TV9JTjsKLSAgICBjYXNlIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVBERlpvb21PdXQ6Ci0gICAg
ICAgIHJldHVybiBFV0tfQ09OVEVYVF9NRU5VX0lURU1fUERGWk9PTV9PVVQ7Ci0gICAgY2FzZSBX
ZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1QREZBdXRvU2l6ZToKLSAgICAgICAgcmV0dXJuIEVXS19D
T05URVhUX01FTlVfSVRFTV9QREZBVVRPX1NJWkU7Ci0gICAgY2FzZSBXZWJDb3JlOjpDb250ZXh0
TWVudUl0ZW1QREZTaW5nbGVQYWdlOgotICAgICAgICByZXR1cm4gRVdLX0NPTlRFWFRfTUVOVV9J
VEVNX1BERlNJTkdMRV9QQUdFOwotICAgIGNhc2UgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtUERG
RmFjaW5nUGFnZXM6Ci0gICAgICAgIHJldHVybiBFV0tfQ09OVEVYVF9NRU5VX0lURU1fUERGRkFD
SU5HX1BBR0VTOwotICAgIGNhc2UgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtUERGQ29udGludW91
czoKLSAgICAgICAgcmV0dXJuIEVXS19DT05URVhUX01FTlVfSVRFTV9QREZDT05USU5VT1VTOwot
ICAgIGNhc2UgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtUERGTmV4dFBhZ2U6Ci0gICAgICAgIHJl
dHVybiBFV0tfQ09OVEVYVF9NRU5VX0lURU1fUERGTkVYVF9QQUdFOwotICAgIGNhc2UgV2ViQ29y
ZTo6Q29udGV4dE1lbnVJdGVtUERGUHJldmlvdXNQYWdlOgotICAgICAgICByZXR1cm4gRVdLX0NP
TlRFWFRfTUVOVV9JVEVNX1BERlBSRVZJT1VTX1BBR0U7Ci0gICAgY2FzZSBXZWJDb3JlOjpDb250
ZXh0TWVudUl0ZW1UYWdPcGVuTGluazoKLSAgICAgICAgcmV0dXJuIEVXS19DT05URVhUX01FTlVf
SVRFTV9UQUdfT1BFTl9MSU5LOwotICAgIGNhc2UgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFn
SWdub3JlR3JhbW1hcjoKLSAgICAgICAgcmV0dXJuIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdf
SUdOT1JFX0dSQU1NQVI7Ci0gICAgY2FzZSBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdTcGVs
bGluZ01lbnU6Ci0gICAgICAgIHJldHVybiBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1NQRUxM
SU5HX01FTlU7Ci0gICAgY2FzZSBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdTaG93U3BlbGxp
bmdQYW5lbDoKLSAgICAgICAgcmV0dXJuIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfU0hPV19T
UEVMTElOR19QQU5FTDsKLSAgICBjYXNlIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ0NoZWNr
U3BlbGxpbmc6Ci0gICAgICAgIHJldHVybiBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0NIRUNL
X1NQRUxMSU5HOwotICAgIGNhc2UgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnQ2hlY2tTcGVs
bGluZ1doaWxlVHlwaW5nOgotICAgICAgICByZXR1cm4gRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RB
R19DSEVDS19TUEVMTElOR19XSElMRV9UWVBJTkc7Ci0gICAgY2FzZSBXZWJDb3JlOjpDb250ZXh0
TWVudUl0ZW1UYWdDaGVja0dyYW1tYXJXaXRoU3BlbGxpbmc6Ci0gICAgICAgIHJldHVybiBFV0tf
Q09OVEVYVF9NRU5VX0lURU1fVEFHX0NIRUNLX0dSQU1NQVJfV0lUSF9TUEVMTElORzsKLSAgICBj
YXNlIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ0ZvbnRNZW51OgotICAgICAgICByZXR1cm4g
RVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19GT05UX01FTlU7Ci0gICAgY2FzZSBXZWJDb3JlOjpD
b250ZXh0TWVudUl0ZW1UYWdTaG93Rm9udHM6Ci0gICAgICAgIHJldHVybiBFV0tfQ09OVEVYVF9N
RU5VX0lURU1fVEFHX1NIT1dfRk9OVFM7Ci0gICAgY2FzZSBXZWJDb3JlOjpDb250ZXh0TWVudUl0
ZW1UYWdCb2xkOgotICAgICAgICByZXR1cm4gRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19CT0xE
OwotICAgIGNhc2UgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnSXRhbGljOgotICAgICAgICBy
ZXR1cm4gRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19JVEFMSUM7Ci0gICAgY2FzZSBXZWJDb3Jl
OjpDb250ZXh0TWVudUl0ZW1UYWdVbmRlcmxpbmU6Ci0gICAgICAgIHJldHVybiBFV0tfQ09OVEVY
VF9NRU5VX0lURU1fVEFHX1VOREVSTElORTsKLSAgICBjYXNlIFdlYkNvcmU6OkNvbnRleHRNZW51
SXRlbVRhZ091dGxpbmU6Ci0gICAgICAgIHJldHVybiBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFH
X09VVExJTkU7Ci0gICAgY2FzZSBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdTdHlsZXM6Ci0g
ICAgICAgIHJldHVybiBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1NUWUxFUzsKLSAgICBjYXNl
IFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ1Nob3dDb2xvcnM6Ci0gICAgICAgIHJldHVybiBF
V0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1NIT1dfQ09MT1JTOwotICAgIGNhc2UgV2ViQ29yZTo6
Q29udGV4dE1lbnVJdGVtVGFnU3BlZWNoTWVudToKLSAgICAgICAgcmV0dXJuIEVXS19DT05URVhU
X01FTlVfSVRFTV9UQUdfU1BFRUNIX01FTlU7Ci0gICAgY2FzZSBXZWJDb3JlOjpDb250ZXh0TWVu
dUl0ZW1UYWdTdGFydFNwZWFraW5nOgotICAgICAgICByZXR1cm4gRVdLX0NPTlRFWFRfTUVOVV9J
VEVNX1RBR19TVEFSVF9TUEVBS0lORzsKLSAgICBjYXNlIFdlYkNvcmU6OkNvbnRleHRNZW51SXRl
bVRhZ1N0b3BTcGVha2luZzoKLSAgICAgICAgcmV0dXJuIEVXS19DT05URVhUX01FTlVfSVRFTV9U
QUdfU1RPUF9TUEVBS0lORzsKLSAgICBjYXNlIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ1dy
aXRpbmdEaXJlY3Rpb25NZW51OgotICAgICAgICByZXR1cm4gRVdLX0NPTlRFWFRfTUVOVV9JVEVN
X1RBR19XUklUSU5HX0RJUkVDVElPTl9NRU5VOwotICAgIGNhc2UgV2ViQ29yZTo6Q29udGV4dE1l
bnVJdGVtVGFnRGVmYXVsdERpcmVjdGlvbjoKLSAgICAgICAgcmV0dXJuIEVXS19DT05URVhUX01F
TlVfSVRFTV9UQUdfREVGQVVMVF9ESVJFQ1RJT047Ci0gICAgY2FzZSBXZWJDb3JlOjpDb250ZXh0
TWVudUl0ZW1UYWdMZWZ0VG9SaWdodDoKLSAgICAgICAgcmV0dXJuIEVXS19DT05URVhUX01FTlVf
SVRFTV9UQUdfTEVGVF9UT19SSUdIVDsKLSAgICBjYXNlIFdlYkNvcmU6OkNvbnRleHRNZW51SXRl
bVRhZ1JpZ2h0VG9MZWZ0OgotICAgICAgICByZXR1cm4gRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RB
R19SSUdIVF9UT19MRUZUOwotICAgIGNhc2UgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnUERG
U2luZ2xlUGFnZVNjcm9sbGluZzoKLSAgICAgICAgcmV0dXJuIEVXS19DT05URVhUX01FTlVfSVRF
TV9UQUdfUERGU0lOR0xFX1BBR0VfU0NST0xMSU5HOwotICAgIGNhc2UgV2ViQ29yZTo6Q29udGV4
dE1lbnVJdGVtVGFnUERGRmFjaW5nUGFnZXNTY3JvbGxpbmc6Ci0gICAgICAgIHJldHVybiBFV0tf
Q09OVEVYVF9NRU5VX0lURU1fVEFHX1BERkZBQ0lOR19QQUdFU19TQ1JPTExJTkc7Ci0jaWYgRU5B
QkxFKElOU1BFQ1RPUikKLSAgICBjYXNlIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ0luc3Bl
Y3RFbGVtZW50OgotICAgICAgICByZXR1cm4gRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19JTlNQ
RUNUX0VMRU1FTlQ7Ci0jZW5kaWYKLSAgICBjYXNlIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRh
Z1RleHREaXJlY3Rpb25NZW51OgotICAgICAgICByZXR1cm4gRVdLX0NPTlRFWFRfTUVOVV9JVEVN
X1RBR19URVhUX0RJUkVDVElPTl9NRU5VOwotICAgIGNhc2UgV2ViQ29yZTo6Q29udGV4dE1lbnVJ
dGVtVGFnVGV4dERpcmVjdGlvbkRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBFV0tfQ09OVEVYVF9N
RU5VX0lURU1fVEFHX1RFWFRfRElSRUNUSU9OX0RFRkFVTFQ7Ci0gICAgY2FzZSBXZWJDb3JlOjpD
b250ZXh0TWVudUl0ZW1UYWdUZXh0RGlyZWN0aW9uTGVmdFRvUmlnaHQ6Ci0gICAgICAgIHJldHVy
biBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1RFWFRfRElSRUNUSU9OX0xFRlRfVE9fUklHSFQ7
Ci0gICAgY2FzZSBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdUZXh0RGlyZWN0aW9uUmlnaHRU
b0xlZnQ6Ci0gICAgICAgIHJldHVybiBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1RFWFRfRElS
RUNUSU9OX1JJR0hUX1RPX0xFRlQ7Ci0gICAgY2FzZSBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1U
YWdPcGVuTWVkaWFJbk5ld1dpbmRvdzoKLSAgICAgICAgcmV0dXJuIEVXS19DT05URVhUX01FTlVf
SVRFTV9PUEVOX01FRElBX0lOX05FV19XSU5ET1c7Ci0gICAgY2FzZSBXZWJDb3JlOjpDb250ZXh0
TWVudUl0ZW1UYWdEb3dubG9hZE1lZGlhVG9EaXNrOgotICAgICAgICByZXR1cm4gRVdLX0NPTlRF
WFRfTUVOVV9JVEVNX1RBR19ET1dOTE9BRF9NRURJQV9UT19ESVNLOwotICAgIGNhc2UgV2ViQ29y
ZTo6Q29udGV4dE1lbnVJdGVtVGFnQ29weU1lZGlhTGlua1RvQ2xpcGJvYXJkOgotICAgICAgICBy
ZXR1cm4gRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19DT1BZX01FRElBX0xJTktfVE9fQ0xJUEJP
QVJEOwotICAgIGNhc2UgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnVG9nZ2xlTWVkaWFDb250
cm9sczoKLSAgICAgICAgcmV0dXJuIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfVE9HR0xFX01F
RElBX0NPTlRST0xTOwotICAgIGNhc2UgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnVG9nZ2xl
TWVkaWFMb29wOgotICAgICAgICByZXR1cm4gRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19UT0dH
TEVfTUVESUFfTE9PUDsKLSAgICBjYXNlIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ0VudGVy
VmlkZW9GdWxsc2NyZWVuOgotICAgICAgICByZXR1cm4gRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RB
R19FTlRFUl9WSURFT19GVUxMU0NSRUVOOwotICAgIGNhc2UgV2ViQ29yZTo6Q29udGV4dE1lbnVJ
dGVtVGFnTWVkaWFQbGF5UGF1c2U6Ci0gICAgICAgIHJldHVybiBFV0tfQ09OVEVYVF9NRU5VX0lU
RU1fVEFHX01FRElBX1BMQVlfUEFVU0U7Ci0gICAgY2FzZSBXZWJDb3JlOjpDb250ZXh0TWVudUl0
ZW1UYWdNZWRpYU11dGU6Ci0gICAgICAgIHJldHVybiBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFH
X01FRElBX01VVEU7Ci0gICAgY2FzZSBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdEaWN0YXRp
b25BbHRlcm5hdGl2ZToKLSAgICAgICAgcmV0dXJuIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdf
RElDVEFUSU9OX0FMVEVSTkFUSVZFOwotICAgIGNhc2UgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVt
VGFnT3BlbkxpbmtJblRoaXNXaW5kb3c6Ci0gICAgICAgIHJldHVybiBFV0tfQ09OVEVYVF9NRU5V
X0lURU1fVEFHX09QRU5fTElOS19JTl9USElTX1dJTkRPVzsKLSAgICBjYXNlIFdlYkNvcmU6OkNv
bnRleHRNZW51SXRlbVRhZ1RvZ2dsZVZpZGVvRnVsbHNjcmVlbjoKLSAgICAgICAgcmV0dXJuIEVX
S19DT05URVhUX01FTlVfSVRFTV9UQUdfVE9HR0xFX1ZJREVPX0ZVTExfU0NSRUVOOwotICAgIGNh
c2UgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtQmFzZUN1c3RvbVRhZzoKLSAgICAgICAgcmV0dXJu
IEVXS19DT05URVhUX01FTlVfSVRFTV9CQVNFX0NVU1RPTV9UQUc7Ci0gICAgY2FzZSBXZWJDb3Jl
OjpDb250ZXh0TWVudUl0ZW1DdXN0b21UYWdOb0FjdGlvbjoKLSAgICAgICAgcmV0dXJuIEVXS19D
T05URVhUX01FTlVfSVRFTV9DVVNUT01fVEFHX05PX0FDVElPTjsKLSAgICBjYXNlIFdlYkNvcmU6
OkNvbnRleHRNZW51SXRlbUxhc3RDdXN0b21UYWc6Ci0gICAgICAgIHJldHVybiBFV0tfQ09OVEVY
VF9NRU5VX0lURU1fTEFTVF9DVVNUT01fVEFHOwotICAgIGNhc2UgV2ViQ29yZTo6Q29udGV4dE1l
bnVJdGVtQmFzZUFwcGxpY2F0aW9uVGFnOgotICAgICAgICByZXR1cm4gRVdLX0NPTlRFWFRfTUVO
VV9JVEVNX0JBU0VfQVBQTElDQVRJT05fVEFHOwotICAgIH0KLX0KLSNlbmRpZgotCi12b2lkIGV3
a19jb250ZXh0X21lbnVfcmVmKEV3a19Db250ZXh0X01lbnUqIG1lbnUpCi17Ci0gICAgRUlOQV9T
QUZFVFlfT05fTlVMTF9SRVRVUk4obWVudSk7Ci0gICAgbWVudS0+X19yZWYrKzsKLX0KLQotdm9p
ZCBld2tfY29udGV4dF9tZW51X3VucmVmKEV3a19Db250ZXh0X01lbnUqIG1lbnUpCi17Ci0gICAg
RUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4obWVudSk7Ci0gICAgdm9pZCogaXRlbTsKLQotICAg
IGlmICgtLW1lbnUtPl9fcmVmKQotICAgICAgICByZXR1cm47Ci0KLSAgICBFSU5BX0xJU1RfRlJF
RShtZW51LT5pdGVtcywgaXRlbSkKLSAgICAgICAgZXdrX2NvbnRleHRfbWVudV9pdGVtX2ZyZWUo
c3RhdGljX2Nhc3Q8RXdrX0NvbnRleHRfTWVudV9JdGVtKj4oaXRlbSkpOwotCi0gICAgZGVsZXRl
IG1lbnU7Ci19Ci0KLUVpbmFfQm9vbCBld2tfY29udGV4dF9tZW51X2Rlc3Ryb3koRXdrX0NvbnRl
eHRfTWVudSogbWVudSkKLXsKLSNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKLSAgICBFSU5BX1NB
RkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwobWVudSwgZmFsc2UpOwotICAgIEVJTkFfU0FGRVRZX09O
X05VTExfUkVUVVJOX1ZBTChtZW51LT5jb250cm9sbGVyLCBmYWxzZSk7Ci0gICAgbWVudS0+Y29u
dHJvbGxlci0+Y2xlYXJDb250ZXh0TWVudSgpOwotICAgIGV3a19jb250ZXh0X21lbnVfZnJlZSht
ZW51KTsKLSAgICByZXR1cm4gdHJ1ZTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKG1lbnUpOwot
ICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgotfQotCi1jb25zdCBFaW5hX0xpc3QqIGV3a19jb250
ZXh0X21lbnVfaXRlbV9saXN0X2dldChjb25zdCBFd2tfQ29udGV4dF9NZW51KiBtZW51KQotewot
ICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChtZW51LCAwKTsKLQotICAgIHJldHVy
biBtZW51LT5pdGVtczsKLX0KLQotRXdrX0NvbnRleHRfTWVudV9JdGVtKiBld2tfY29udGV4dF9t
ZW51X2l0ZW1fbmV3KEV3a19Db250ZXh0X01lbnVfSXRlbV9UeXBlIHR5cGUsIEV3a19Db250ZXh0
X01lbnVfQWN0aW9uIGFjdGlvbiwgRXdrX0NvbnRleHRfTWVudSogcGFyZW50TWVudSwKLSAgICBF
d2tfQ29udGV4dF9NZW51KiBzdWJtZW51LCBjb25zdCBjaGFyKiB0aXRsZSwgRWluYV9Cb29sIGNo
ZWNrZWQsIEVpbmFfQm9vbCBlbmFibGVkKQotewotICAgIEV3a19Db250ZXh0X01lbnVfSXRlbSog
aXRlbSA9IG5ldyBFd2tfQ29udGV4dF9NZW51X0l0ZW07Ci0gICAgaXRlbS0+dHlwZSA9IHR5cGU7
Ci0gICAgaXRlbS0+YWN0aW9uID0gYWN0aW9uOwotICAgIGl0ZW0tPnRpdGxlID0gZWluYV9zdHJp
bmdzaGFyZV9hZGQodGl0bGUpOwotICAgIGl0ZW0tPnBhcmVudE1lbnUgPSBwYXJlbnRNZW51Owot
ICAgIGl0ZW0tPnN1Ym1lbnUgPSBzdWJtZW51OwotICAgIGl0ZW0tPmNoZWNrZWQgPSBjaGVja2Vk
OwotICAgIGl0ZW0tPmVuYWJsZWQgPSBlbmFibGVkOwotCi0gICAgcmV0dXJuIGl0ZW07Ci19Ci0K
LUVpbmFfQm9vbCBld2tfY29udGV4dF9tZW51X2l0ZW1fc2VsZWN0KEV3a19Db250ZXh0X01lbnUq
IG1lbnUsIEV3a19Db250ZXh0X01lbnVfSXRlbSogaXRlbSkKLXsKLSNpZiBFTkFCTEUoQ09OVEVY
VF9NRU5VUykKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwobWVudSwgZmFsc2Up
OwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChpdGVtLCBmYWxzZSk7Ci0gICAg
V2ViQ29yZTo6Q29udGV4dE1lbnVBY3Rpb24gYWN0aW9uID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6
Q29udGV4dE1lbnVBY3Rpb24+KGl0ZW0tPmFjdGlvbik7Ci0gICAgV2ViQ29yZTo6Q29udGV4dE1l
bnVJdGVtVHlwZSB0eXBlID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVHlw
ZT4oaXRlbS0+dHlwZSk7Ci0KLSAgICAvLyBEb24ndCBjYXJlIGFib3V0IHRpdGxlIGFuZCBzdWJt
ZW51IGFzIHRoZXkncmUgbm90IHVzZWQgYWZ0ZXIgdGhpcyBwb2ludC4KLSAgICBXZWJDb3JlOjpD
b250ZXh0TWVudUl0ZW0gY29yZSh0eXBlLCBhY3Rpb24sIFdURjo6U3RyaW5nKCkpOwotICAgIG1l
bnUtPmNvbnRyb2xsZXItPmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKCZjb3JlKTsKLSAgICByZXR1
cm4gdHJ1ZTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKG1lbnUpOwotICAgIFVOVVNFRF9QQVJB
TShpdGVtKTsKLSAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYKLX0KLQotdm9pZCBld2tfY29udGV4
dF9tZW51X2l0ZW1fZnJlZShFd2tfQ29udGV4dF9NZW51X0l0ZW0qIGl0ZW0pCi17Ci0gICAgRUlO
QV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oaXRlbSk7Ci0KLSAgICBlaW5hX3N0cmluZ3NoYXJlX2Rl
bChpdGVtLT50aXRsZSk7Ci0gICAgZGVsZXRlIGl0ZW07Ci19Ci0KLUV3a19Db250ZXh0X01lbnVf
SXRlbV9UeXBlIGV3a19jb250ZXh0X21lbnVfaXRlbV90eXBlX2dldChjb25zdCBFd2tfQ29udGV4
dF9NZW51X0l0ZW0qIGl0ZW0pCi17Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFM
KGl0ZW0sIEVXS19BQ1RJT05fVFlQRSk7Ci0gICAgcmV0dXJuIGl0ZW0tPnR5cGU7Ci19Ci0KLUVp
bmFfQm9vbCBld2tfY29udGV4dF9tZW51X2l0ZW1fdHlwZV9zZXQoRXdrX0NvbnRleHRfTWVudV9J
dGVtKiBpdGVtLCBFd2tfQ29udGV4dF9NZW51X0l0ZW1fVHlwZSB0eXBlKQotewotICAgIEVJTkFf
U0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChpdGVtLCBmYWxzZSk7Ci0gICAgaXRlbS0+dHlwZSA9
IHR5cGU7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLUV3a19Db250ZXh0X01lbnVfQWN0aW9uIGV3
a19jb250ZXh0X21lbnVfaXRlbV9hY3Rpb25fZ2V0KGNvbnN0IEV3a19Db250ZXh0X01lbnVfSXRl
bSogaXRlbSkKLXsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoaXRlbSwgRVdL
X0NPTlRFWFRfTUVOVV9JVEVNX1RBR19OT19BQ1RJT04pOwotICAgIHJldHVybiBpdGVtLT5hY3Rp
b247Ci19Ci0KLUVpbmFfQm9vbCBld2tfY29udGV4dF9tZW51X2l0ZW1fYWN0aW9uX3NldChFd2tf
Q29udGV4dF9NZW51X0l0ZW0qIGl0ZW0sIEV3a19Db250ZXh0X01lbnVfQWN0aW9uIGFjdGlvbikK
LXsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoaXRlbSwgZmFsc2UpOwotICAg
IGl0ZW0tPmFjdGlvbiA9IGFjdGlvbjsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotY29uc3QgY2hh
ciogZXdrX2NvbnRleHRfbWVudV9pdGVtX3RpdGxlX2dldChjb25zdCBFd2tfQ29udGV4dF9NZW51
X0l0ZW0qIGl0ZW0pCi17Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGl0ZW0s
IDApOwotICAgIHJldHVybiBpdGVtLT50aXRsZTsKLX0KLQotY29uc3QgY2hhciogZXdrX2NvbnRl
eHRfbWVudV9pdGVtX3RpdGxlX3NldChFd2tfQ29udGV4dF9NZW51X0l0ZW0qIGl0ZW0sIGNvbnN0
IGNoYXIqIHRpdGxlKQotewotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChpdGVt
LCAwKTsKLSAgICBlaW5hX3N0cmluZ3NoYXJlX3JlcGxhY2UoJml0ZW0tPnRpdGxlLCB0aXRsZSk7
Ci0gICAgcmV0dXJuIGl0ZW0tPnRpdGxlOwotfQotCi1FaW5hX0Jvb2wgZXdrX2NvbnRleHRfbWVu
dV9pdGVtX2NoZWNrZWRfZ2V0KGNvbnN0IEV3a19Db250ZXh0X01lbnVfSXRlbSogaXRlbSkKLXsK
LSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoaXRlbSwgZmFsc2UpOwotICAgIHJl
dHVybiBpdGVtLT5jaGVja2VkOwotfQotCi1FaW5hX0Jvb2wgZXdrX2NvbnRleHRfbWVudV9pdGVt
X2NoZWNrZWRfc2V0KEV3a19Db250ZXh0X01lbnVfSXRlbSogaXRlbSwgRWluYV9Cb29sIGNoZWNr
ZWQpCi17Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGl0ZW0sIGZhbHNlKTsK
LSAgICBpdGVtLT5jaGVja2VkID0gY2hlY2tlZDsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotRWlu
YV9Cb29sIGV3a19jb250ZXh0X21lbnVfaXRlbV9lbmFibGVkX2dldChjb25zdCBFd2tfQ29udGV4
dF9NZW51X0l0ZW0qIGl0ZW0pCi17Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFM
KGl0ZW0sIGZhbHNlKTsKLSAgICByZXR1cm4gaXRlbS0+ZW5hYmxlZDsKLX0KLQotRWluYV9Cb29s
IGV3a19jb250ZXh0X21lbnVfaXRlbV9lbmFibGVkX3NldChFd2tfQ29udGV4dF9NZW51X0l0ZW0q
IGl0ZW0sIEVpbmFfQm9vbCBlbmFibGVkKQotewotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVU
VVJOX1ZBTChpdGVtLCBmYWxzZSk7Ci0gICAgaXRlbS0+ZW5hYmxlZCA9IGVuYWJsZWQ7Ci0gICAg
cmV0dXJuIHRydWU7Ci19Ci0KLUV3a19Db250ZXh0X01lbnUqIGV3a19jb250ZXh0X21lbnVfaXRl
bV9wYXJlbnRfZ2V0KGNvbnN0IEV3a19Db250ZXh0X01lbnVfSXRlbSogaXRlbSkKLXsKLSAgICBF
SU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoaXRlbSwgMCk7Ci0KLSAgICByZXR1cm4gaXRl
bS0+cGFyZW50TWVudTsKLX0KLQotLyogaW50ZXJuYWwgbWV0aG9kcyAqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi0jaWYgRU5BQkxFKENPTlRF
WFRfTUVOVVMpCi0vKioKLSAqIEBpbnRlcm5hbAotICoKLSAqIENyZWF0ZXMgYW4gZW1wdHkgY29u
dGV4dCBtZW51IG9uIHZpZXcuCi0gKgotICogQHBhcmFtIHZpZXcgdGhlIHZpZXcgb2JqZWN0Ci0g
KiBAcGFyYW0gY29udHJvbGxlciB0aGUgV2ViQ29yZSdzIGNvbnRleHQgbWVudSBjb250cm9sbGVy
Ci0gKiBAcmV0dXJuIG5ld2x5IGFsbG9jYXRlZCB0aGUgY29udGV4dCBtZW51IG9uIHN1Y2Nlc3Mg
b3IgQGMgMCBvbiBlcnJvcnMKLSAqCi0gKiBAbm90ZSBlbWl0cyBhIHNpZ25hbCAiY29udGV4dG1l
bnUsbmV3IgotICovCi1Fd2tfQ29udGV4dF9NZW51KiBld2tfY29udGV4dF9tZW51X25ldyhFdmFz
X09iamVjdCogdmlldywgV2ViQ29yZTo6Q29udGV4dE1lbnVDb250cm9sbGVyKiBjb250cm9sbGVy
LCBXZWJDb3JlOjpDb250ZXh0TWVudSogY29yZU1lbnUpCi17Ci0gICAgRXdrX0NvbnRleHRfTWVu
dSogbWVudTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwodmlldywgMCk7Ci0g
ICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGNvbnRyb2xsZXIsIDApOwotCi0gICAg
bWVudSA9IG5ldyBFd2tfQ29udGV4dF9NZW51OwotCi0gICAgbWVudS0+X19yZWYgPSAxOwotICAg
IG1lbnUtPnZpZXcgPSB2aWV3OwotICAgIG1lbnUtPmNvbnRyb2xsZXIgPSBjb250cm9sbGVyOwot
ICAgIG1lbnUtPml0ZW1zID0gMDsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxs
KG1lbnUtPnZpZXcsICJjb250ZXh0bWVudSxuZXciLCBtZW51KTsKLQotICAgIGNvbnN0IFZlY3Rv
cjxXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW0+JiBpdGVtc0xpc3QgPSBjb3JlTWVudS0+aXRlbXMo
KTsKLSAgICBmb3IgKFZlY3RvcjxXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW0+Ojpjb25zdF9pdGVy
YXRvciBpdGVyID0gaXRlbXNMaXN0LmJlZ2luKCk7IGl0ZXIgIT0gaXRlbXNMaXN0LmVuZCgpOyAr
K2l0ZXIpCi0gICAgICAgIGV3a19jb250ZXh0X21lbnVfaXRlbV9hcHBlbmQobWVudSwgKml0ZXIp
OwotCi0gICAgcmV0dXJuIG1lbnU7Ci19Ci0KLS8qKgotICogQGludGVybmFsCi0gKgotICogRnJl
ZXMgdGhlIGNvbnRleHQgbWVudS4KLSAqCi0gKiBAcGFyYW0gbWVudSB0aGUgdmlldyBvYmplY3QK
LSAqIEByZXR1cm4gQGMgdHJ1ZSBvbiBzdWNjZXNzLCBvciBAYyBmYWxzZSBvbiBmYWlsdXJlCi0g
KgotICogQG5vdGUgZW1pdHMgYSBzaWduYWwgImNvbnRleHRtZW51LGZyZWUiCi0gKgotICogQHNl
ZSBld2tfY29udGV4dF9tZW51X3VucmVmCi0gKiBAc2VlIGV3a19jb250ZXh0X21lbnVfZGVzdHJv
eQotICovCi1ib29sIGV3a19jb250ZXh0X21lbnVfZnJlZShFd2tfQ29udGV4dF9NZW51KiBtZW51
KQotewotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChtZW51LCBmYWxzZSk7Ci0g
ICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChtZW51LT52aWV3LCAiY29udGV4dG1l
bnUsZnJlZSIsIG1lbnUpOwotICAgIGV3a19jb250ZXh0X21lbnVfdW5yZWYobWVudSk7Ci0gICAg
cmV0dXJuIHRydWU7Ci19Ci0KLS8qKgotICogQGludGVybmFsCi0gKgotICogQXBwZW5kcyB0aGUg
V2ViQ29yZSdzIGl0ZW0gdG8gdGhlIGNvbnRleHQgbWVudSBvYmplY3QuCi0gKgotICogQHBhcmFt
IG1lbnUgdGhlIGNvbnRleHQgbWVudSBvYmplY3QKLSAqIEBwYXJhbSBjb3JlIHRoZSBXZWJDb3Jl
J3MgY29udGV4dCBtZW51IGl0ZW0gdGhhdCB3aWxsIGJlIGFkZGVkIHRvIHRoZSBjb250ZXh0IG1l
bnUKLSAqIEBub3RlIGVtaXRzIGEgc2lnbmFsICJjb250ZXh0bWVudSxpdGVtLGFwcGVuZGVkIgot
ICoKLSAqIEBzZWUgZXdrX2NvbnRleHRfbWVudV9pdGVtX25ldwotICovCi12b2lkIGV3a19jb250
ZXh0X21lbnVfaXRlbV9hcHBlbmQoRXdrX0NvbnRleHRfTWVudSogbWVudSwgY29uc3QgV2ViQ29y
ZTo6Q29udGV4dE1lbnVJdGVtJiBjb3JlKQotewotICAgIEV3a19Db250ZXh0X01lbnVfSXRlbV9U
eXBlIHR5cGUgPSBzdGF0aWNfY2FzdDxFd2tfQ29udGV4dF9NZW51X0l0ZW1fVHlwZT4oY29yZS50
eXBlKCkpOwotICAgIEV3a19Db250ZXh0X01lbnVfQWN0aW9uIGFjdGlvbiA9IHN0YXRpY19jYXN0
PEV3a19Db250ZXh0X01lbnVfQWN0aW9uPihjb3JlLmFjdGlvbigpKTsKLQotICAgIEV3a19Db250
ZXh0X01lbnVfSXRlbSogbWVudV9pdGVtID0gZXdrX2NvbnRleHRfbWVudV9pdGVtX25ldyh0eXBl
LCBhY3Rpb24sIG1lbnUsIDAsIGNvcmUudGl0bGUoKS51dGY4KCkuZGF0YSgpLCBjb3JlLmNoZWNr
ZWQoKSwgY29yZS5lbmFibGVkKCkpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKG1l
bnVfaXRlbSk7Ci0KLSAgICBtZW51LT5pdGVtcyA9IGVpbmFfbGlzdF9hcHBlbmQobWVudS0+aXRl
bXMsIG1lbnVfaXRlbSk7Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChtZW51
LT52aWV3LCAiY29udGV4dG1lbnUsaXRlbSxhcHBlbmRlZCIsIG1lbnUpOwotfQotCi0vKioKLSAq
IEBpbnRlcm5hbAotICoKLSAqIEVtaXRzIGEgc2lnbmFsICJjb250ZXh0bWVudSxzaG93IgotICoK
LSAqIEBwYXJhbSBtZW51IHRoZSBjb250ZXh0IG1lbnUgb2JqZWN0Ci0gKi8KLXZvaWQgZXdrX2Nv
bnRleHRfbWVudV9zaG93KEV3a19Db250ZXh0X01lbnUqIG1lbnUpCi17Ci0gICAgRUlOQV9TQUZF
VFlfT05fTlVMTF9SRVRVUk4obWVudSk7Ci0KLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFj
a19jYWxsKG1lbnUtPnZpZXcsICJjb250ZXh0bWVudSxzaG93IiwgbWVudSk7Ci19Ci0KLSNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19jb250ZXh0bWVudS5oIGIv
U291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19jb250ZXh0bWVudS5oCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA4MTA4YTE2Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3
ay9ld2tfY29udGV4dG1lbnUuaAorKysgL2Rldi9udWxsCkBAIC0xLDM0MSArMCwwIEBACi0vKgot
ICAgIENvcHlyaWdodCAoQykgMjAxMCBQcm9GVVNJT04gZW1iZWRkZWQgc3lzdGVtcwotICAgIENv
cHlyaWdodCAoQykgMjAxMCBTYW1zdW5nIEVsZWN0cm9uaWNzCi0KLSAgICBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
LSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
Ci0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNl
ZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAgICB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAotICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotKi8KLQotLyoqCi0gKiBAZmlsZSAg
ICBld2tfY29udGV4dG1lbnUuaAotICogQGJyaWVmICAgRGVzY3JpYmVzIHRoZSBjb250ZXh0IG1l
bnUgQVBJLgotICoKLSAqIFRoZSBmb2xsb3dpbmcgc2lnbmFscyAoc2VlIGV2YXNfb2JqZWN0X3Nt
YXJ0X2NhbGxiYWNrX2FkZCgpKSBhcmUgZW1pdHRlZDoKLSAqCi0gKiAgLSAiY29udGV4dG1lbnUs
Y3VzdG9taXplIiwgRWluYV9MaXN0ICo6IGN1c3RvbWl6ZSBjb250ZXh0IG1lbnUgaXMgdGFrZW4K
LSAqICAgIGFuZCBpdCBnaXZlcyBhIGxpc3Qgd2l0aCBpdGVtcyBvZiBjb250ZXh0IG1lbnUgYXMg
YW4gYXJndW1lbnQuCi0gKiAgLSAiY29udGV4dG1lbnUsZnJlZSIsIEV3a19Db250ZXh0X01lbnUg
KjogYSBjb250ZXh0IG1lbnUgaXMgZnJlZWQuCi0gKiAgLSAiY29udGV4dG1lbnUsaXRlbSxhcHBl
bmRlZCIsIEV3a19Db250ZXh0X01lbnUgKjogYSBuZXcgaXRlbSB3YXMgYWRkZWQgdG8KLSAqICAg
IHRoZSBjb250ZXh0IG1lbnUuCi0gKiAgLSAiY29udGV4dG1lbnUsbmV3IiwgRXdrX0NvbnRleHRf
TWVudSAqOiBhIG5ldyBjb250ZXh0IG1lbnUgd2FzIGNyZWF0ZWQKLSAqICAgIGFuZCBpdCBnaXZl
cyB0aGUgY29udGV4dCBtZW51IGFzIGFuIGFyZ3VtZW50LgotICogIC0gImNvbnRleHRtZW51LHNo
b3ciLCBFd2tfQ29udGV4dF9NZW51ICo6IGEgY29udGV4dCBtZW51IGlzIHNob3duLgotICovCi0K
LSNpZm5kZWYgZXdrX2NvbnRleHRtZW51X2gKLSNkZWZpbmUgZXdrX2NvbnRleHRtZW51X2gKLQot
I2luY2x1ZGUgPEVpbmEuaD4KLSNpbmNsdWRlIDxFdmFzLmg+Ci0KLSNpZmRlZiBfX2NwbHVzcGx1
cwotZXh0ZXJuICJDIiB7Ci0jZW5kaWYKLQotLyoqCi0gKiBcZW51bSAgICBfRXdrX0NvbnRleHRf
TWVudV9BY3Rpb24KLSAqIEBicmllZiAgIFByb3ZpZGVzIHRoZSBhY3Rpb25zIG9mIGl0ZW1zIGZv
ciB0aGUgY29udGV4dCBtZW51LgotICogQGluZm8gICAgS2VlcCB0aGlzIGluIHN5bmMgd2l0aCBD
b250ZXh0TWVudUl0ZW0uaAotICovCi1lbnVtIF9Fd2tfQ29udGV4dF9NZW51X0FjdGlvbiB7Ci0g
ICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19OT19BQ1RJT04gPSAwLCAvLyB0aGlzIGl0ZW0g
aXMgbm90IGFjdHVhbGx5IGluIHdlYl91aWRlbGVnYXRlLmgKLSAgICBFV0tfQ09OVEVYVF9NRU5V
X0lURU1fVEFHX09QRU5fTElOS19JTl9ORVdfV0lORE9XID0gMSwKLSAgICBFV0tfQ09OVEVYVF9N
RU5VX0lURU1fVEFHX0RPV05MT0FEX0xJTktfVE9fRElTSywKLSAgICBFV0tfQ09OVEVYVF9NRU5V
X0lURU1fVEFHX0NPUFlfTElOS19UT19DTElQQk9BUkQsCi0gICAgRVdLX0NPTlRFWFRfTUVOVV9J
VEVNX1RBR19PUEVOX0lNQUdFX0lOX05FV19XSU5ET1csCi0gICAgRVdLX0NPTlRFWFRfTUVOVV9J
VEVNX1RBR19ET1dOTE9BRF9JTUFHRV9UT19ESVNLLAotICAgIEVXS19DT05URVhUX01FTlVfSVRF
TV9UQUdfQ09QWV9JTUFHRV9UT19DTElQQk9BUkQsCi0gICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVN
X1RBR19DT1BZX0lNQUdFX1VSTF9UT19DTElQQk9BUkQsCi0gICAgRVdLX0NPTlRFWFRfTUVOVV9J
VEVNX1RBR19PUEVOX0ZSQU1FX0lOX05FV19XSU5ET1csCi0gICAgRVdLX0NPTlRFWFRfTUVOVV9J
VEVNX1RBR19DT1BZLAotICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfR09fQkFDSywKLSAg
ICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0dPX0ZPUldBUkQsCi0gICAgRVdLX0NPTlRFWFRf
TUVOVV9JVEVNX1RBR19TVE9QLAotICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfUkVMT0FE
LAotICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfQ1VULAotICAgIEVXS19DT05URVhUX01F
TlVfSVRFTV9UQUdfUEFTVEUsCi0gICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19TRUxFQ1Rf
QUxMLAotICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfU1BFTExJTkdfR1VFU1MsCi0gICAg
RVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19OT19HVUVTU0VTX0ZPVU5ELAotICAgIEVXS19DT05U
RVhUX01FTlVfSVRFTV9UQUdfSUdOT1JFX1NQRUxMSU5HLAotICAgIEVXS19DT05URVhUX01FTlVf
SVRFTV9UQUdfTEVBUk5fU1BFTExJTkcsCi0gICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19P
VEhFUiwKLSAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1NFQVJDSF9JTl9TUE9UTElHSFQs
Ci0gICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19TRUFSQ0hfV0VCLAotICAgIEVXS19DT05U
RVhUX01FTlVfSVRFTV9UQUdfTE9PS19VUF9JTl9ESUNUSU9OQVJZLAotICAgIEVXS19DT05URVhU
X01FTlVfSVRFTV9UQUdfT1BFTl9XSVRIX0RFRkFVTFRfQVBQTElDQVRJT04sCi0gICAgRVdLX0NP
TlRFWFRfTUVOVV9JVEVNX1BERkFDVFVBTF9TSVpFLAotICAgIEVXS19DT05URVhUX01FTlVfSVRF
TV9QREZaT09NX0lOLAotICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9QREZaT09NX09VVCwKLSAg
ICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fUERGQVVUT19TSVpFLAotICAgIEVXS19DT05URVhUX01F
TlVfSVRFTV9QREZTSU5HTEVfUEFHRSwKLSAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fUERGRkFD
SU5HX1BBR0VTLAotICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9QREZDT05USU5VT1VTLAotICAg
IEVXS19DT05URVhUX01FTlVfSVRFTV9QREZORVhUX1BBR0UsCi0gICAgRVdLX0NPTlRFWFRfTUVO
VV9JVEVNX1BERlBSRVZJT1VTX1BBR0UsCi0gICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19P
UEVOX0xJTksgPSAyMDAwLAotICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfSUdOT1JFX0dS
QU1NQVIsCi0gICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19TUEVMTElOR19NRU5VLCAvKio8
IHNwZWxsaW5nIG9yIHNwZWxsaW5nL2dyYW1tYXIgc3ViLW1lbnUgKi8KLSAgICBFV0tfQ09OVEVY
VF9NRU5VX0lURU1fVEFHX1NIT1dfU1BFTExJTkdfUEFORUwsCi0gICAgRVdLX0NPTlRFWFRfTUVO
VV9JVEVNX1RBR19DSEVDS19TUEVMTElORywKLSAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFH
X0NIRUNLX1NQRUxMSU5HX1dISUxFX1RZUElORywKLSAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1f
VEFHX0NIRUNLX0dSQU1NQVJfV0lUSF9TUEVMTElORywKLSAgICBFV0tfQ09OVEVYVF9NRU5VX0lU
RU1fVEFHX0ZPTlRfTUVOVSwgLyoqPCBmb250IHN1Yi1tZW51ICovCi0gICAgRVdLX0NPTlRFWFRf
TUVOVV9JVEVNX1RBR19TSE9XX0ZPTlRTLAotICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdf
Qk9MRCwKLSAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0lUQUxJQywKLSAgICBFV0tfQ09O
VEVYVF9NRU5VX0lURU1fVEFHX1VOREVSTElORSwKLSAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1f
VEFHX09VVExJTkUsCi0gICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19TVFlMRVMsCi0gICAg
RVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19TSE9XX0NPTE9SUywKLSAgICBFV0tfQ09OVEVYVF9N
RU5VX0lURU1fVEFHX1NQRUVDSF9NRU5VLCAvKio8IHNwZWVjaCBzdWItbWVudSAqLwotICAgIEVX
S19DT05URVhUX01FTlVfSVRFTV9UQUdfU1RBUlRfU1BFQUtJTkcsCi0gICAgRVdLX0NPTlRFWFRf
TUVOVV9JVEVNX1RBR19TVE9QX1NQRUFLSU5HLAotICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9U
QUdfV1JJVElOR19ESVJFQ1RJT05fTUVOVSwgLyoqPCB3cml0aW5nIGRpcmVjdGlvbiBzdWItbWVu
dSAqLwotICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfREVGQVVMVF9ESVJFQ1RJT04sCi0g
ICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19MRUZUX1RPX1JJR0hULAotICAgIEVXS19DT05U
RVhUX01FTlVfSVRFTV9UQUdfUklHSFRfVE9fTEVGVCwKLSAgICBFV0tfQ09OVEVYVF9NRU5VX0lU
RU1fVEFHX1BERlNJTkdMRV9QQUdFX1NDUk9MTElORywKLSAgICBFV0tfQ09OVEVYVF9NRU5VX0lU
RU1fVEFHX1BERkZBQ0lOR19QQUdFU19TQ1JPTExJTkcsCi0gICAgRVdLX0NPTlRFWFRfTUVOVV9J
VEVNX1RBR19JTlNQRUNUX0VMRU1FTlQsCi0gICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19U
RVhUX0RJUkVDVElPTl9NRU5VLCAvKio8IHRleHQgZGlyZWN0aW9uIHN1Yi1tZW51ICovCi0gICAg
RVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19URVhUX0RJUkVDVElPTl9ERUZBVUxULAotICAgIEVX
S19DT05URVhUX01FTlVfSVRFTV9UQUdfVEVYVF9ESVJFQ1RJT05fTEVGVF9UT19SSUdIVCwKLSAg
ICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1RFWFRfRElSRUNUSU9OX1JJR0hUX1RPX0xFRlQs
Ci0gICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX09QRU5fTUVESUFfSU5fTkVXX1dJTkRPVywKLSAg
ICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0RPV05MT0FEX01FRElBX1RPX0RJU0ssIAotICAg
IEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfQ09QWV9NRURJQV9MSU5LX1RPX0NMSVBCT0FSRCwK
LSAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1RPR0dMRV9NRURJQV9DT05UUk9MUywKLSAg
ICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1RPR0dMRV9NRURJQV9MT09QLAotICAgIEVXS19D
T05URVhUX01FTlVfSVRFTV9UQUdfRU5URVJfVklERU9fRlVMTFNDUkVFTiwKLSAgICBFV0tfQ09O
VEVYVF9NRU5VX0lURU1fVEFHX01FRElBX1BMQVlfUEFVU0UsCi0gICAgRVdLX0NPTlRFWFRfTUVO
VV9JVEVNX1RBR19NRURJQV9NVVRFLAotICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfRElD
VEFUSU9OX0FMVEVSTkFUSVZFLAotICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfT1BFTl9M
SU5LX0lOX1RISVNfV0lORE9XLAotICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfVE9HR0xF
X1ZJREVPX0ZVTExfU0NSRUVOLAotICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9CQVNFX0NVU1RP
TV9UQUcgPSA1MDAwLAotICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9DVVNUT01fVEFHX05PX0FD
VElPTiA9IDU5OTgsCi0gICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX0xBU1RfQ1VTVE9NX1RBRyA9
IDU5OTksCi0gICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX0JBU0VfQVBQTElDQVRJT05fVEFHID0g
MTAwMDAKLX07Ci0vKiogQ3JlYXRlcyBhIHR5cGUgbmFtZSBmb3IgX0V3a19Db250ZXh0X01lbnVf
QWN0aW9uICovCi10eXBlZGVmIGVudW0gX0V3a19Db250ZXh0X01lbnVfQWN0aW9uIEV3a19Db250
ZXh0X01lbnVfQWN0aW9uOwotCi0vKioKLSAqIFxlbnVtICAgIF9Fd2tfQ29udGV4dF9NZW51X0l0
ZW1fVHlwZQotICogQGJyaWVmICAgRGVmaW5lcyB0aGUgdHlwZXMgb2YgdGhlIGl0ZW1zIGZvciB0
aGUgY29udGV4dCBtZW51LgotICogQGluZm8gICAgS2VlcCB0aGlzIGluIHN5bmMgd2l0aCBDb250
ZXh0TWVudUl0ZW0uaAotICovCi1lbnVtIF9Fd2tfQ29udGV4dF9NZW51X0l0ZW1fVHlwZSB7Ci0g
ICAgRVdLX0FDVElPTl9UWVBFLAotICAgIEVXS19DSEVDS0FCTEVfQUNUSU9OX1RZUEUsCi0gICAg
RVdLX1NFUEFSQVRPUl9UWVBFLAotICAgIEVXS19TVUJNRU5VX1RZUEUKLX07Ci0vKiogQ3JlYXRl
cyBhIHR5cGUgbmFtZSBmb3IgX0V3a19Db250ZXh0X01lbnVfSXRlbV9UeXBlICovCi10eXBlZGVm
IGVudW0gX0V3a19Db250ZXh0X01lbnVfSXRlbV9UeXBlICAgIEV3a19Db250ZXh0X01lbnVfSXRl
bV9UeXBlOwotCi0vKiogQ3JlYXRlcyBhIHR5cGUgbmFtZSBmb3IgX0V3a19Db250ZXh0X01lbnUg
Ki8KLXR5cGVkZWYgc3RydWN0IF9Fd2tfQ29udGV4dF9NZW51ICAgICAgICAgICAgRXdrX0NvbnRl
eHRfTWVudTsKLQotLyoqIENyZWF0ZXMgYSB0eXBlIG5hbWUgZm9yIF9Fd2tfQ29udGV4dF9NZW51
X0l0ZW0gKi8KLXR5cGVkZWYgc3RydWN0IF9Fd2tfQ29udGV4dF9NZW51X0l0ZW0gICAgICAgRXdr
X0NvbnRleHRfTWVudV9JdGVtOwotCi0KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqIEV4
cG9ydGVkIGZ1bmN0aW9ucyAqKioqKioqKioqKioqKioqKioqKioqKi8KLQotLyoqCi0gKiBJbmNy
ZWFzZXMgdGhlIHJlZmVyZW5jZSBjb3VudCBvZiB0aGUgZ2l2ZW4gb2JqZWN0LgotICoKLSAqIEBw
YXJhbSBtZW51IHRoZSBjb250ZXh0IG1lbnUgb2JqZWN0IHRvIGluY3JlYXNlIHRoZSByZWZlcmVu
Y2UgY291bnQKLSAqLwotRUFQSSB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgZXdrX2NvbnRl
eHRfbWVudV9yZWYoRXdrX0NvbnRleHRfTWVudSAqbWVudSk7Ci0KLS8qKgotICogRGVjcmVhc2Vz
IHRoZSByZWZlcmVuY2UgY291bnQgb2YgdGhlIGdpdmVuIG9iamVjdCwgcG9zc2libHkgZnJlZWlu
ZyBpdC4KLSAqCi0gKiBXaGVuIHRoZSByZWZlcmVuY2UgY291bnQgcmVhY2hlcyAwLCB0aGUgbWVu
dSB3aXRoIGFsbCBpdHMgaXRlbXMgYXJlIGZyZWVkLgotICoKLSAqIEBwYXJhbSBtZW51IHRoZSBj
b250ZXh0IG1lbnUgb2JqZWN0IHRvIGRlY3JlYXNlIHRoZSByZWZlcmVuY2UgY291bnQKLSAqLwot
RUFQSSB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgZXdrX2NvbnRleHRfbWVudV91bnJlZihF
d2tfQ29udGV4dF9NZW51ICptZW51KTsKLQotLyoqCi0gKiBEZXN0cm95cyB0aGUgY29udGV4dCBt
ZW51IG9iamVjdC4KLSAqCi0gKiBAcGFyYW0gbWVudSB0aGUgY29udGV4dCBtZW51IG9iamVjdCB0
byBkZXN0cm95Ci0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzLCBAYyBFSU5BX0ZB
TFNFIG9uIGZhaWx1cmUKLSAqCi0gKiBAc2VlIGV3a19jb250ZXh0X21lbnVfaXRlbV9mcmVlCi0g
Ki8KLUVBUEkgRWluYV9Cb29sICAgICAgICAgICAgICAgICAgIGV3a19jb250ZXh0X21lbnVfZGVz
dHJveShFd2tfQ29udGV4dF9NZW51ICptZW51KTsKLQotLyoqCi0gKiBHZXRzIHRoZSBsaXN0IG9m
IGl0ZW1zLgotICoKLSAqIEBwYXJhbSBvIHRoZSBjb250ZXh0IG1lbnUgb2JqZWN0IHRvIGdldCBs
aXN0IG9mIHRoZSBpdGVtcwotICogQHJldHVybiB0aGUgbGlzdCBvZiB0aGUgaXRlbXMgb24gc3Vj
Y2VzcyBvciBAYyBOVUxMIG9uIGZhaWx1cmUKLSAqLwotRUFQSSBjb25zdCBFaW5hX0xpc3QgICAg
ICAgICAgICAqZXdrX2NvbnRleHRfbWVudV9pdGVtX2xpc3RfZ2V0KGNvbnN0IEV3a19Db250ZXh0
X01lbnUgKm8pOwotCi0vKioKLSAqIENyZWF0ZXMgYSBuZXcgaXRlbSBvZiB0aGUgY29udGV4dCBt
ZW51LgotICoKLSAqIEBwYXJhbSB0eXBlIHNwZWNpZmllcyBhIHR5cGUgb2YgdGhlIGl0ZW0KLSAq
IEBwYXJhbSBhY3Rpb24gc3BlY2lmaWVzIGEgYWN0aW9uIG9mIHRoZSBpdGVtCi0gKiBAcGFyYW0g
cGFyZW50X21lbnUgc3BlY2lmaWVzIGEgcGFyZW50IG1lbnUgb2YgdGhlIGl0ZW0KLSAqIEBwYXJh
bSBzdWJtZW51IHNwZWNpZmllcyBhIHN1Ym1lbnUgb2YgdGhlIGl0ZW0KLSAqIEBwYXJhbSB0aXRs
ZSBzcGVjaWZpZXMgYSB0aXRsZSBvZiB0aGUgaXRlbQotICogQHBhcmFtIGNoZWNrZWQgQGMgRUlO
QV9UUlVFIGlmIHRoZSBpdGVtIHNob3VsZCBiZSB0b2dnbGVkIG9yIEBjIEVJTkFfRkFMU0UgaWYg
bm90Ci0gKiBAcGFyYW0gZW5hYmxlZCBAYyBFSU5BX1RSVUUgdG8gZW5hYmxlIHRoZSBpdGVtIG9y
IEBjIEVJTkFfRkFMU0UgdG8gZGlzYWJsZQotICogQHJldHVybiB0aGUgcG9pbnRlciB0byB0aGUg
bmV3IGl0ZW0gb24gc3VjY2VzcyBvciBAYyBOVUxMIG9uIGZhaWx1cmUKLSAqCi0gKiBAbm90ZSBU
aGUgcmV0dXJuIHZhbHVlIEBiIHNob3VsZCBAYiBiZSBmcmVlZCBhZnRlciB1c2UuCi0gKi8KLUVB
UEkgRXdrX0NvbnRleHRfTWVudV9JdGVtICAgICAgKmV3a19jb250ZXh0X21lbnVfaXRlbV9uZXco
RXdrX0NvbnRleHRfTWVudV9JdGVtX1R5cGUgdHlwZSwgRXdrX0NvbnRleHRfTWVudV9BY3Rpb24g
YWN0aW9uLCBFd2tfQ29udGV4dF9NZW51ICpwYXJlbnRfbWVudSwgRXdrX0NvbnRleHRfTWVudSAq
c3VibWVudSwgY29uc3QgY2hhciAqdGl0bGUsIEVpbmFfQm9vbCBjaGVja2VkLCBFaW5hX0Jvb2wg
ZW5hYmxlZCk7Ci0KLS8qKgotICogRGVzdHJveXMgdGhlIGl0ZW0gb2YgdGhlIGNvbnRleHQgbWVu
dSBvYmplY3QuCi0gKgotICogQHBhcmFtIGl0ZW0gdGhlIGl0ZW0gdG8gZGVzdHJveQotICoKLSAq
IEBzZWUgZXdrX2NvbnRleHRfbWVudV9kZXN0cm95Ci0gKiBAc2VlIGV3a19jb250ZXh0X21lbnVf
dW5yZWYKLSAqLwotRUFQSSB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgZXdrX2NvbnRleHRf
bWVudV9pdGVtX2ZyZWUoRXdrX0NvbnRleHRfTWVudV9JdGVtICppdGVtKTsKLQotLyoqCi0gKiBT
ZWxlY3RzIHRoZSBpdGVtIGZyb20gdGhlIGNvbnRleHQgbWVudSBvYmplY3QuCi0gKgotICogQHBh
cmFtIG1lbnUgdGhlIGNvbnRleHQgbWVudSBvYmplY3QKLSAqIEBwYXJhbSBpdGVtIHRoZSBpdGVt
IGlzIHNlbGVjdGVkCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzIG9yIEBjIEVJ
TkFfRkFMU0Ugb24gZmFpbHVyZQotICovCi1FQVBJIEVpbmFfQm9vbCAgICAgICAgICAgICAgICAg
ICBld2tfY29udGV4dF9tZW51X2l0ZW1fc2VsZWN0KEV3a19Db250ZXh0X01lbnUgKm1lbnUsIEV3
a19Db250ZXh0X01lbnVfSXRlbSAqaXRlbSk7Ci0KLS8qKgotICogR2V0cyB0eXBlIG9mIHRoZSBp
dGVtLgotICoKLSAqIEBwYXJhbSBvIHRoZSBpdGVtIHRvIGdldCB0aGUgdHlwZQotICogQHJldHVy
biB0eXBlIG9mIHRoZSBpdGVtIG9uIHN1Y2Nlc3Mgb3IgQGMgRVdLX0FDVElPTl9UWVBFIG9uIGZh
aWx1cmUKLSAqCi0gKiBAc2VlIGV3a19jb250ZXh0X21lbnVfaXRlbV90eXBlX3NldAotICovCi1F
QVBJIEV3a19Db250ZXh0X01lbnVfSXRlbV9UeXBlICBld2tfY29udGV4dF9tZW51X2l0ZW1fdHlw
ZV9nZXQoY29uc3QgRXdrX0NvbnRleHRfTWVudV9JdGVtICpvKTsKLQotLyoqCi0gKiBTZXRzIHRo
ZSB0eXBlIG9mIGl0ZW0uCi0gKgotICogQHBhcmFtIG8gdGhlIGl0ZW0gdG8gc2V0IHRoZSB0eXBl
Ci0gKiBAcGFyYW0gdHlwZSBhIG5ldyB0eXBlIGZvciB0aGUgaXRlbSBvYmplY3QKLSAqIEByZXR1
cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3MsIG9yIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZQot
ICoKLSAqIEBzZWUgZXdrX2NvbnRleHRfbWVudV9pdGVtX3R5cGVfZ2V0Ci0gKi8KLUVBUEkgRWlu
YV9Cb29sICAgICAgICAgICAgICAgICAgIGV3a19jb250ZXh0X21lbnVfaXRlbV90eXBlX3NldChF
d2tfQ29udGV4dF9NZW51X0l0ZW0gKm8sIEV3a19Db250ZXh0X01lbnVfSXRlbV9UeXBlIHR5cGUp
OwotCi0vKioKLSAqIEdldHMgYW4gYWN0aW9uIG9mIHRoZSBpdGVtLgotICoKLSAqIEBwYXJhbSBv
IHRoZSBpdGVtIHRvIGdldCB0aGUgYWN0aW9uCi0gKiBAcmV0dXJuIGFuIGFjdGlvbiBvZiB0aGUg
aXRlbSBvbiBzdWNjZXNzIG9yIEBjIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfTk9fQUNUSU9O
IG9uIGZhaWx1cmUKLSAqCi0gKiBAc2VlIGV3a19jb250ZXh0X21lbnVfaXRlbV9hY3Rpb25fc2V0
Ci0gKi8KLUVBUEkgRXdrX0NvbnRleHRfTWVudV9BY3Rpb24gICAgIGV3a19jb250ZXh0X21lbnVf
aXRlbV9hY3Rpb25fZ2V0KGNvbnN0IEV3a19Db250ZXh0X01lbnVfSXRlbSAqbyk7Ci0KLS8qKgot
ICogU2V0cyBhbiBhY3Rpb24gb2YgdGhlIGl0ZW0uCi0gKgotICogQHBhcmFtIG8gdGhlIGl0ZW0g
dG8gc2V0IHRoZSBhY3Rpb24KLSAqIEBwYXJhbSBhY3Rpb24gYSBuZXcgYWN0aW9uIGZvciB0aGUg
aXRlbSBvYmplY3QKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3MsIG9yIEBjIEVJ
TkFfRkFMU0Ugb24gZmFpbHVyZQotICoKLSAqIEBzZWUgZXdrX2NvbnRleHRfbWVudV9pdGVtX2Fj
dGlvbl9nZXQKLSAqLwotRUFQSSBFaW5hX0Jvb2wgICAgICAgICAgICAgICAgICAgZXdrX2NvbnRl
eHRfbWVudV9pdGVtX2FjdGlvbl9zZXQoRXdrX0NvbnRleHRfTWVudV9JdGVtICpvLCBFd2tfQ29u
dGV4dF9NZW51X0FjdGlvbiBhY3Rpb24pOwotCi0vKioKLSAqIEdldHMgYSB0aXRsZSBvZiB0aGUg
aXRlbS4KLSAqCi0gKiBAcGFyYW0gbyB0aGUgaXRlbSB0byBnZXQgdGhlIHRpdGxlCi0gKiBAcmV0
dXJuIGEgdGl0bGUgb2YgdGhlIGl0ZW0gb24gc3VjY2Vzcywgb3IgQGMgTlVMTCBvbiBmYWlsdXJl
Ci0gKgotICogQHNlZSBld2tfY29udGV4dF9tZW51X2l0ZW1fdGl0bGVfc2V0Ci0gKi8KLUVBUEkg
Y29uc3QgY2hhciAgICAgICAgICAgICAgICAgKmV3a19jb250ZXh0X21lbnVfaXRlbV90aXRsZV9n
ZXQoY29uc3QgRXdrX0NvbnRleHRfTWVudV9JdGVtICpvKTsKLQotLyoqCi0gKiBTZXRzIGEgdGl0
bGUgb2YgdGhlIGl0ZW0uCi0gKgotICogQHBhcmFtIG8gdGhlIGl0ZW0gdG8gc2V0IHRoZSB0aXRs
ZQotICogQHBhcmFtIHRpdGxlIGEgbmV3IHRpdGxlIGZvciB0aGUgaXRlbSBvYmplY3QKLSAqIEBy
ZXR1cm4gYSBuZXcgdGl0bGUgb2YgdGhlIGl0ZW0gb24gc3VjY2VzcyBvciBAYyBOVUxMIG9uIGZh
aWx1cmUKLSAqCi0gKiBAc2VlIGV3a19jb250ZXh0X21lbnVfaXRlbV90aXRsZV9nZXQKLSAqLwot
RUFQSSBjb25zdCBjaGFyICAgICAgICAgICAgICAgICAqZXdrX2NvbnRleHRfbWVudV9pdGVtX3Rp
dGxlX3NldChFd2tfQ29udGV4dF9NZW51X0l0ZW0gKm8sIGNvbnN0IGNoYXIgKnRpdGxlKTsKLQot
LyoqCi0gKiBRdWVyaWVzIGlmIHRoZSBpdGVtIGlzIHRvZ2dsZWQuCi0gKgotICogQHBhcmFtIG8g
dGhlIGl0ZW0gdG8gcXVlcnkgaWYgdGhlIGl0ZW0gaXMgdG9nZ2xlZAotICogQHJldHVybiBAYyBF
SU5BX1RSVUUgaWYgdGhlIGl0ZW0gaXMgdG9nZ2xlZCBvciBAYyBFSU5BX0ZBTFNFIGlmIG5vdCBv
ciBvbiBmYWlsdXJlCi0gKi8KLUVBUEkgRWluYV9Cb29sICAgICAgICAgICAgICAgICAgIGV3a19j
b250ZXh0X21lbnVfaXRlbV9jaGVja2VkX2dldChjb25zdCBFd2tfQ29udGV4dF9NZW51X0l0ZW0g
Km8pOwotCi0vKioKLSAqIFNldHMgaWYgdGhlIGl0ZW0gc2hvdWxkIGJlIHRvZ2dsZWQuCi0gKgot
ICogQHBhcmFtIG8gdGhlIGl0ZW0gdG8gYmUgdG9nZ2xlZAotICogQHBhcmFtIGNoZWNrZWQgQGMg
RUlOQV9UUlVFIGlmIHRoZSBpdGVtIHNob3VsZCBiZSB0b2dnbGVkIG9yIEBjIEVJTkFfRkFMU0Ug
aWYgbm90Ci0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzIG9yIEBjIEVJTkFfRkFM
U0Ugb24gZmFpbHVyZQotICovCi1FQVBJIEVpbmFfQm9vbCAgICAgICAgICAgICAgICAgICBld2tf
Y29udGV4dF9tZW51X2l0ZW1fY2hlY2tlZF9zZXQoRXdrX0NvbnRleHRfTWVudV9JdGVtICpvLCBF
aW5hX0Jvb2wgY2hlY2tlZCk7Ci0KLS8qKgotICogR2V0cyBpZiB0aGUgaXRlbSBpcyBlbmFibGVk
LgotICoKLSAqIEBwYXJhbSBvIHRoZSBpdGVtIHRvIGdldCBlbmFibGVkIHN0YXRlCi0gKiBAcmV0
dXJuIEBjIEVJTkFfVFJVRSBpZiBpdCdzIGVuYWJsZWQsIEBjIEVJTkFfRkFMU0UgaWYgbm90IG9y
IG9uIGZhaWx1cmUKLSAqCi0gKiBAc2VlIGV3a19jb250ZXh0X21lbnVfaXRlbV9lbmFibGVkX3Nl
dAotICovCi1FQVBJIEVpbmFfQm9vbCAgICAgICAgICAgICAgICAgICBld2tfY29udGV4dF9tZW51
X2l0ZW1fZW5hYmxlZF9nZXQoY29uc3QgRXdrX0NvbnRleHRfTWVudV9JdGVtICpvKTsKLQotLyoq
Ci0gKiBFbmFibGVzL2Rpc2FibGVzIHRoZSBpdGVtLgotICoKLSAqIEBwYXJhbSBvIHRoZSBpdGVt
IHRvIGVuYWJsZS9kaXNhYmxlCi0gKiBAcGFyYW0gZW5hYmxlZCBAYyBFSU5BX1RSVUUgdG8gZW5h
YmxlIHRoZSBpdGVtIG9yIEBjIEVJTkFfRkFMU0UgdG8gZGlzYWJsZQotICogQHJldHVybiBAYyBF
SU5BX1RSVUUgb24gc3VjY2Vzcywgb3IgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJlCi0gKgotICog
QHNlZSBld2tfY29udGV4dF9tZW51X2l0ZW1fZW5hYmxlZF9nZXQKLSAqLwotRUFQSSBFaW5hX0Jv
b2wgICAgICAgICAgICAgICAgICAgZXdrX2NvbnRleHRfbWVudV9pdGVtX2VuYWJsZWRfc2V0KEV3
a19Db250ZXh0X01lbnVfSXRlbSAqbywgRWluYV9Cb29sIGVuYWJsZWQpOwotCi0vKioKLSAqIEdl
dHMgdGhlIHBhcmVudCBtZW51IGZvciBjb250ZXh0IG1lbnUgaXRlbS4KLSAqCi0gKiBAcGFyYW0g
byB0aGUgY29udGV4dCBtZW51IGl0ZW0gb2JqZWN0Ci0gKiBAcmV0dXJuIGEgY29udGV4dCBtZW51
IG9iamVjdCBvbiBzdWNjZXNzIG9yIEBjIE5VTEwgb24gZmFpbHVyZQotICovCi1FQVBJIEV3a19D
b250ZXh0X01lbnUgICAgICAgICAgICpld2tfY29udGV4dF9tZW51X2l0ZW1fcGFyZW50X2dldChj
b25zdCBFd2tfQ29udGV4dF9NZW51X0l0ZW0gKm8pOwotCi0jaWZkZWYgX19jcGx1c3BsdXMKLX0K
LSNlbmRpZgotI2VuZGlmIC8vIGV3a19jb250ZXh0bWVudV9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9ld2svZXdrX2NvbnRleHRtZW51X3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQv
ZWZsL2V3ay9ld2tfY29udGV4dG1lbnVfcHJpdmF0ZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA5NWRjZGFhLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tf
Y29udGV4dG1lbnVfcHJpdmF0ZS5oCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotLyoK
LSAgICBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBQcm9GVVNJT04gZW1iZWRkZWQgc3lzdGVtcwot
ICAgIENvcHlyaWdodCAoQykgMjAwOS0yMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKLQotICAgIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKLSAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYwotICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgotICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLQotICAgIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
Ci0gICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKLSAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KLQotICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAgICBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICAg
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsCi0gICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0qLwotCi0jaWZu
ZGVmIGV3a19jb250ZXh0bWVudV9wcml2YXRlX2gKLSNkZWZpbmUgZXdrX2NvbnRleHRtZW51X3By
aXZhdGVfaAotCi0jaW5jbHVkZSAiZXdrX2NvbnRleHRtZW51LmgiCi0KLS8vIGZvcndhcmQgZGVj
bGFyYXRpb25zCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1zdHJ1Y3QgQ29udGV4dE1lbnU7Ci1zdHJ1
Y3QgQ29udGV4dE1lbnVJdGVtOwotfQotCi0jaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi1Fd2tf
Q29udGV4dF9NZW51KiBld2tfY29udGV4dF9tZW51X25ldyhFdmFzX09iamVjdCogdmlldywgV2Vi
Q29yZTo6Q29udGV4dE1lbnVDb250cm9sbGVyKiBjb250cm9sbGVyLCBXZWJDb3JlOjpDb250ZXh0
TWVudSogY29yZU1lbnUpOwotYm9vbCBld2tfY29udGV4dF9tZW51X2ZyZWUoRXdrX0NvbnRleHRf
TWVudSogbWVudSk7Ci12b2lkIGV3a19jb250ZXh0X21lbnVfaXRlbV9hcHBlbmQoRXdrX0NvbnRl
eHRfTWVudSogbWVudSwgY29uc3QgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtJiBjb3JlKTsKLXZv
aWQgZXdrX2NvbnRleHRfbWVudV9zaG93KEV3a19Db250ZXh0X01lbnUqIG1lbnUpOwotI2VuZGlm
Ci0KLSNlbmRpZiAvLyBld2tfY29udGV4dF9tZW51X3ByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9lZmwvZXdrL2V3a19jb29raWVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3
ay9ld2tfY29va2llcy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYzM2FlODEu
LjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19jb29raWVzLmNwcAorKysg
L2Rldi9udWxsCkBAIC0xLDE2NCArMCwwIEBACi0vKgotICAgIENvcHlyaWdodCAoQykgMjAxMCBQ
cm9GVVNJT04gZW1iZWRkZWQgc3lzdGVtcwotICAgIENvcHlyaWdodCAoQykgMjAxMCBTYW1zdW5n
IEVsZWN0cm9uaWNzCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0K
LSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
Ci0gICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4g
IElmIG5vdCwgd3JpdGUgdG8KLSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICAgIEJvc3RvbiwgTUEgMDIxMTAt
MTMwMSwgVVNBLgotKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgImV3a19jb29r
aWVzLmgiCi0KLSNpbmNsdWRlICJDb29raWVKYXJTb3VwLmgiCi0jaW5jbHVkZSAiU291cE5ldHdv
cmtTZXNzaW9uLmgiCi0jaW5jbHVkZSA8RWluYS5oPgotI2luY2x1ZGUgPGVpbmFfc2FmZXR5X2No
ZWNrcy5oPgotI2luY2x1ZGUgPGdsaWIuaD4KLSNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4KLSNp
bmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0KLUVpbmFfQm9vbCBld2tfY29va2llc19maWxl
X3NldChjb25zdCBjaGFyKiBmaWxlbmFtZSkKLXsKLSAgICBTb3VwQ29va2llSmFyKiBjb29raWVK
YXIgPSAwOwotICAgIGlmIChmaWxlbmFtZSkKLSAgICAgICAgY29va2llSmFyID0gc291cF9jb29r
aWVfamFyX3RleHRfbmV3KGZpbGVuYW1lLCBGQUxTRSk7Ci0gICAgZWxzZQotICAgICAgICBjb29r
aWVKYXIgPSBzb3VwX2Nvb2tpZV9qYXJfbmV3KCk7Ci0KLSAgICBpZiAoIWNvb2tpZUphcikKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgc291cF9jb29raWVfamFyX3NldF9hY2NlcHRfcG9s
aWN5KGNvb2tpZUphciwgU09VUF9DT09LSUVfSkFSX0FDQ0VQVF9OT19USElSRF9QQVJUWSk7Ci0K
LSAgICBXZWJDb3JlOjpTb3VwTmV0d29ya1Nlc3Npb246OmRlZmF1bHRTZXNzaW9uKCkuc2V0Q29v
a2llSmFyKGNvb2tpZUphcik7Ci0gICAgV2ViQ29yZTo6c2V0U291cENvb2tpZUphcihjb29raWVK
YXIpOwotICAgIGdfb2JqZWN0X3VucmVmKGNvb2tpZUphcik7Ci0KLSAgICByZXR1cm4gdHJ1ZTsK
LX0KLQotdm9pZCBld2tfY29va2llc19jbGVhcih2b2lkKQotewotICAgIEdTTGlzdCogbGlzdDsK
LSAgICBHU0xpc3QqIHA7Ci0gICAgU291cENvb2tpZUphciogY29va2llSmFyID0gV2ViQ29yZTo6
c291cENvb2tpZUphcigpOwotCi0gICAgbGlzdCA9IHNvdXBfY29va2llX2phcl9hbGxfY29va2ll
cyhjb29raWVKYXIpOwotICAgIGZvciAocCA9IGxpc3Q7IHA7IHAgPSBwLT5uZXh0KQotICAgICAg
ICBzb3VwX2Nvb2tpZV9qYXJfZGVsZXRlX2Nvb2tpZShjb29raWVKYXIsIChTb3VwQ29va2llKilw
LT5kYXRhKTsKLQotICAgIHNvdXBfY29va2llc19mcmVlKGxpc3QpOwotfQotCi1FaW5hX0xpc3Qq
IGV3a19jb29raWVzX2dldF9hbGwodm9pZCkKLXsKLSAgICBFaW5hX0xpc3QqIHJlc3VsdCA9IDA7
Ci0gICAgR1NMaXN0KiBsaXN0OwotICAgIEdTTGlzdCogcDsKLSAgICBTb3VwQ29va2llSmFyKiBj
b29raWVKYXIgPSBXZWJDb3JlOjpzb3VwQ29va2llSmFyKCk7Ci0KLSAgICBsaXN0ID0gc291cF9j
b29raWVfamFyX2FsbF9jb29raWVzKGNvb2tpZUphcik7Ci0gICAgZm9yIChwID0gbGlzdDsgcDsg
cCA9IHAtPm5leHQpIHsKLSAgICAgICAgU291cENvb2tpZSogY29va2llID0gc3RhdGljX2Nhc3Q8
U291cENvb2tpZSo+KHAtPmRhdGEpOwotICAgICAgICBFd2tfQ29va2llKiBld2tDb29raWUgPSBu
ZXcgRXdrX0Nvb2tpZTsKLSAgICAgICAgZXdrQ29va2llLT5uYW1lID0gZWluYV9zdHJpbmdzaGFy
ZV9hZGQoY29va2llLT5uYW1lKTsKLSAgICAgICAgZXdrQ29va2llLT52YWx1ZSA9IGVpbmFfc3Ry
aW5nc2hhcmVfYWRkKGNvb2tpZS0+dmFsdWUpOwotICAgICAgICBld2tDb29raWUtPmRvbWFpbiA9
IGVpbmFfc3RyaW5nc2hhcmVfYWRkKGNvb2tpZS0+ZG9tYWluKTsKLSAgICAgICAgZXdrQ29va2ll
LT5wYXRoID0gZWluYV9zdHJpbmdzaGFyZV9hZGQoY29va2llLT5wYXRoKTsKLSAgICAgICAgZXdr
Q29va2llLT5leHBpcmVzID0gc291cF9kYXRlX3RvX3RpbWVfdChjb29raWUtPmV4cGlyZXMpOwot
ICAgICAgICBld2tDb29raWUtPnNlY3VyZSA9IHN0YXRpY19jYXN0PEVpbmFfQm9vbD4oY29va2ll
LT5zZWN1cmUpOwotICAgICAgICBld2tDb29raWUtPmh0dHBfb25seSA9IHN0YXRpY19jYXN0PEVp
bmFfQm9vbD4oY29va2llLT5odHRwX29ubHkpOwotICAgICAgICByZXN1bHQgPSBlaW5hX2xpc3Rf
YXBwZW5kKHJlc3VsdCwgZXdrQ29va2llKTsKLSAgICB9Ci0KLSAgICBzb3VwX2Nvb2tpZXNfZnJl
ZShsaXN0KTsKLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXZvaWQgZXdrX2Nvb2tpZXNfY29v
a2llX2RlbChFd2tfQ29va2llKiBjb29raWUpCi17Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9S
RVRVUk4oY29va2llKTsKLSAgICBHU0xpc3QqIGxpc3Q7Ci0gICAgR1NMaXN0KiBwOwotICAgIFNv
dXBDb29raWVKYXIqIGNvb2tpZUphciA9IFdlYkNvcmU6OnNvdXBDb29raWVKYXIoKTsKLSAgICBT
b3VwQ29va2llKiBjb29raWUxID0gc291cF9jb29raWVfbmV3KAotICAgICAgICBjb29raWUtPm5h
bWUsIGNvb2tpZS0+dmFsdWUsIGNvb2tpZS0+ZG9tYWluLCBjb29raWUtPnBhdGgsIC0xKTsKLQot
ICAgIGxpc3QgPSBzb3VwX2Nvb2tpZV9qYXJfYWxsX2Nvb2tpZXMoY29va2llSmFyKTsKLSAgICBm
b3IgKHAgPSBsaXN0OyBwOyBwID0gcC0+bmV4dCkgewotICAgICAgICBTb3VwQ29va2llKiBjb29r
aWUyID0gc3RhdGljX2Nhc3Q8U291cENvb2tpZSo+KHAtPmRhdGEpOwotICAgICAgICBpZiAoc291
cF9jb29raWVfZXF1YWwoY29va2llMSwgY29va2llMikpIHsKLSAgICAgICAgICAgIHNvdXBfY29v
a2llX2phcl9kZWxldGVfY29va2llKGNvb2tpZUphciwgY29va2llMik7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHNvdXBfY29va2llX2ZyZWUoY29va2llMSk7
Ci0gICAgc291cF9jb29raWVzX2ZyZWUobGlzdCk7Ci19Ci0KLXZvaWQgZXdrX2Nvb2tpZXNfY29v
a2llX2ZyZWUoRXdrX0Nvb2tpZSogY29va2llKQotewotICAgIEVJTkFfU0FGRVRZX09OX05VTExf
UkVUVVJOKGNvb2tpZSk7Ci0gICAgZWluYV9zdHJpbmdzaGFyZV9kZWwoY29va2llLT5uYW1lKTsK
LSAgICBlaW5hX3N0cmluZ3NoYXJlX2RlbChjb29raWUtPnZhbHVlKTsKLSAgICBlaW5hX3N0cmlu
Z3NoYXJlX2RlbChjb29raWUtPmRvbWFpbik7Ci0gICAgZWluYV9zdHJpbmdzaGFyZV9kZWwoY29v
a2llLT5wYXRoKTsKLSAgICBkZWxldGUgY29va2llOwotfQotCi12b2lkIGV3a19jb29raWVzX3Bv
bGljeV9zZXQoRXdrX0Nvb2tpZV9Qb2xpY3kgY29va2llUG9saWN5KQotewotICAgIFNvdXBDb29r
aWVKYXIqIGNvb2tpZUphciA9IFdlYkNvcmU6OnNvdXBDb29raWVKYXIoKTsKLSAgICBTb3VwQ29v
a2llSmFyQWNjZXB0UG9saWN5IHBvbGljeTsKLQotICAgIHBvbGljeSA9IFNPVVBfQ09PS0lFX0pB
Ul9BQ0NFUFRfQUxXQVlTOwotICAgIHN3aXRjaCAoY29va2llUG9saWN5KSB7Ci0gICAgY2FzZSBF
V0tfQ09PS0lFX0pBUl9BQ0NFUFRfTkVWRVI6Ci0gICAgICAgIHBvbGljeSA9IFNPVVBfQ09PS0lF
X0pBUl9BQ0NFUFRfTkVWRVI7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRVdLX0NPT0tJRV9K
QVJfQUNDRVBUX0FMV0FZUzoKLSAgICAgICAgcG9saWN5ID0gU09VUF9DT09LSUVfSkFSX0FDQ0VQ
VF9BTFdBWVM7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRVdLX0NPT0tJRV9KQVJfQUNDRVBU
X05PX1RISVJEX1BBUlRZOgotICAgICAgICBwb2xpY3kgPSBTT1VQX0NPT0tJRV9KQVJfQUNDRVBU
X05PX1RISVJEX1BBUlRZOwotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBzb3VwX2Nvb2tp
ZV9qYXJfc2V0X2FjY2VwdF9wb2xpY3koY29va2llSmFyLCBwb2xpY3kpOwotfQotCi1Fd2tfQ29v
a2llX1BvbGljeSBld2tfY29va2llc19wb2xpY3lfZ2V0KHZvaWQpCi17Ci0gICAgRXdrX0Nvb2tp
ZV9Qb2xpY3kgZXdrUG9saWN5ID0gRVdLX0NPT0tJRV9KQVJfQUNDRVBUX0FMV0FZUzsKLSAgICBT
b3VwQ29va2llSmFyKiBjb29raWVKYXIgPSBXZWJDb3JlOjpzb3VwQ29va2llSmFyKCk7Ci0gICAg
U291cENvb2tpZUphckFjY2VwdFBvbGljeSBwb2xpY3k7Ci0KLSAgICBwb2xpY3kgPSBzb3VwX2Nv
b2tpZV9qYXJfZ2V0X2FjY2VwdF9wb2xpY3koY29va2llSmFyKTsKLSAgICBzd2l0Y2ggKHBvbGlj
eSkgewotICAgIGNhc2UgU09VUF9DT09LSUVfSkFSX0FDQ0VQVF9ORVZFUjoKLSAgICAgICAgZXdr
UG9saWN5ID0gRVdLX0NPT0tJRV9KQVJfQUNDRVBUX05FVkVSOwotICAgICAgICBicmVhazsKLSAg
ICBjYXNlIFNPVVBfQ09PS0lFX0pBUl9BQ0NFUFRfQUxXQVlTOgotICAgICAgICBld2tQb2xpY3kg
PSBFV0tfQ09PS0lFX0pBUl9BQ0NFUFRfQUxXQVlTOwotICAgICAgICBicmVhazsKLSAgICBjYXNl
IFNPVVBfQ09PS0lFX0pBUl9BQ0NFUFRfTk9fVEhJUkRfUEFSVFk6Ci0gICAgICAgIGV3a1BvbGlj
eSA9IEVXS19DT09LSUVfSkFSX0FDQ0VQVF9OT19USElSRF9QQVJUWTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgfQotCi0gICAgcmV0dXJuIGV3a1BvbGljeTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvZWZsL2V3ay9ld2tfY29va2llcy5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19j
b29raWVzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRiYTBlYmUuLjAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19jb29raWVzLmgKKysrIC9kZXYvbnVsbApA
QCAtMSwxNDYgKzAsMCBAQAotLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMTAgUHJvRlVTSU9OIGVt
YmVkZGVkIHN5c3RlbXMKLSAgICBDb3B5cmlnaHQgKEMpIDIwMTAgU2Ftc3VuZyBFbGVjdHJvbmlj
cwotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgotICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi0gICAgVGhpcyBs
aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
Ci0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKLSAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAgIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdy
aXRlIHRvCi0gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4K
LSovCi0KLS8qKgotICogQGZpbGUgICAgZXdrX2Nvb2tpZXMuaAotICogQGJyaWVmICAgVGhlIEV3
ayBjb29raWVzIEFQSS4KLSAqCi0gKiBAbm90ZSBJZiB0aGUgbGlic291cCBuZXR3b3JrIGJhY2tl
bmQgaXMgYmVpbmcgdXNlZCB0aGUgZnVuY3Rpb25zIGhlcmUgd2lsbAotICogb25seSB3b3JrIHdp
dGggdGhlIEBiIGRlZmF1bHQgU291cFNlc3Npb24sIHdoaWNoIGNhbiBiZSByZXRyaWV2ZWQgd2l0
aAotICogZXdrX25ldHdvcmtfZGVmYXVsX3NvdXBfc2Vzc2lvbl9nZXQoKS4gSWYgYSBkaWZmZXJl
bnQgU291cFNlc3Npb24gaXMgdXNlZAotICogYW5kIGFzc29jaWF0ZWQgd2l0aCBhIHZpZXcgd2l0
aCBld2tfdmlld19zb3VwX3Nlc3Npb25fc2V0KCksIGFsbCBjb29raWUKLSAqIG1hbmFnZW1lbnQg
d2lsbCBoYXZlIHRvIGJlIGRvbmUgbWFudWFsbHkuCi0gKi8KLQotI2lmbmRlZiBld2tfY29va2ll
c19oCi0jZGVmaW5lIGV3a19jb29raWVzX2gKLQotI2luY2x1ZGUgPEVpbmEuaD4KLQotI2lmZGVm
IF9fY3BsdXNwbHVzCi1leHRlcm4gIkMiIHsKLSNlbmRpZgotCi0vKioKLSAqIFxzdHJ1Y3QgIF9F
d2tfQ29va2llCi0gKgotICogQGJyaWVmICAgRGVzY3JpYmVzIHByb3BlcnRpZXMgb2YgYW4gSFRU
UCBjb29raWUuCi0gKgotICogQWxsIHRoZSBzdHJpbmdzIGFyZSBndWFyYW50ZWVkIHRvIGJlIHN0
cmluZ3NoYXJlZCwgc28gdXNlIGVpbmFfc3RyaW5nc2hhcmVfcmVmKCkKLSAqIGluc3RlYWQgb2Yg
ZWluYV9zdHJpbmdzaGFyZV9hZGQoKSBvciBzdHJkdXAoKS4KLSAqLwotc3RydWN0IF9Fd2tfQ29v
a2llIHsKLSAgICAvLy8gdGhlIGNvb2tpZSBuYW1lCi0gICAgY29uc3QgY2hhciAqbmFtZTsKLSAg
ICAvLy8gdGhlIGNvb2tpZSB2YWx1ZQotICAgIGNvbnN0IGNoYXIgKnZhbHVlOwotICAgIC8vLyB0
aGUgImRvbWFpbiIgYXR0cmlidXRlLCBvciBlbHNlIHRoZSBob3N0bmFtZSB0aGF0IHRoZSBjb29r
aWUgY2FtZSBmcm9tCi0gICAgY29uc3QgY2hhciAqZG9tYWluOwotICAgIC8vLyB0aGUgInBhdGgi
IGF0dHJpYnV0ZSwgb3IgQGMgTlVMTAotICAgIGNvbnN0IGNoYXIgKnBhdGg7Ci0gICAgLy8vIHRo
ZSBjb29raWUgZXhwaXJhdGlvbiB0aW1lLCBvciBAYyAwIGZvciBhIHNlc3Npb24gY29va2llCi0g
ICAgdGltZV90IGV4cGlyZXM7Ci0gICAgLy8vIEBjIEVJTkFfVFJVRSBpZiB0aGUgY29va2llIHNo
b3VsZCBvbmx5IGJlIHRyYW5mZXJyZWQgb3ZlciBTU0wKLSAgICBFaW5hX0Jvb2wgc2VjdXJlOwot
ICAgIC8vLyBAYyBFSU5BX1RSVUUgaWYgdGhlIGNvb2tpZSBzaG91bGQgbm90IGJlIGV4cG9zZWQg
dG8gc2NyaXB0cwotICAgIEVpbmFfQm9vbCBodHRwX29ubHk7Ci19OwotLy8vIENyZWF0ZXMgYSB0
eXBlIG5hbWUgZm9yIHRoZSBfRXdrX0Nvb2tpZS4KLXR5cGVkZWYgc3RydWN0IF9Fd2tfQ29va2ll
IEV3a19Db29raWU7Ci0KLS8qKgotICogXGVudW0gICAgX0V3a19Db29raWVfUG9saWN5Ci0gKgot
ICogQGJyaWVmICAgQ29udGFpbnMgYSBwb2xpY3kgZm9yIHRoZSBjb29raWVzLgotICovCi1lbnVt
IF9Fd2tfQ29va2llX1BvbGljeSB7Ci0gICAgLy8vIFJlamVjdHMgYWxsIGNvb2tpZXMuCi0gICAg
RVdLX0NPT0tJRV9KQVJfQUNDRVBUX05FVkVSLAotICAgIC8vLyBBY2NlcHRzIGV2ZXJ5IGNvb2tp
ZSBzZW50IGZyb20gYW55IHBhZ2UuCi0gICAgRVdLX0NPT0tJRV9KQVJfQUNDRVBUX0FMV0FZUywK
LSAgICAvLy8gQWNjZXB0cyBjb29raWVzIG9ubHkgZnJvbSB0aGUgbWFpbiBwYWdlLgotICAgIEVX
S19DT09LSUVfSkFSX0FDQ0VQVF9OT19USElSRF9QQVJUWQotfTsKLS8vLyBDcmVhdGVzIGEgdHlw
ZSBuYW1lIGZvciB0aGUgX0V3a19Db29raWVfUG9saWN5LgotdHlwZWRlZiBlbnVtIF9Fd2tfQ29v
a2llX1BvbGljeSBFd2tfQ29va2llX1BvbGljeTsKLQotLyoqKioqKioqKioqKioqKioqKioqKioq
KioqIEV4cG9ydGVkIGZ1bmN0aW9ucyAqKioqKioqKioqKioqKioqKioqKioqKi8KLSAKLS8qKgot
ICogU2V0cyB0aGUgcGF0aCB3aGVyZSB0aGUgY29va2llcyBhcmUgZ29pbmcgdG8gYmUgc3RvcmVk
LiAKLSAqCi0gKiBAcGFyYW0gZmlsZW5hbWUgcGF0aCB0byB0aGUgY29va2llcy50eHQgZmlsZSwg
dXNlIEBjIE5VTEwgZm9yIGtlZXAKLSAqICAgICAgICBjb29raWVzIGp1c3QgaW4gbWVtb3J5Lgot
ICoKLSAqIEByZXR1cm4gQGMgRUlOQV9GQUxTRSBpZiBpdCB3YXNuJ3QgcG9zc2libGUgdG8gY3Jl
YXRlIHRoZSBjb29raWUgamFyLAotICogICAgICAgICAgQGMgRUlOQV9UUlVFIG90aGVyd2lzZS4K
LSAqLwotRUFQSSBFaW5hX0Jvb2wgICAgICAgICAgZXdrX2Nvb2tpZXNfZmlsZV9zZXQoY29uc3Qg
Y2hhciAqZmlsZW5hbWUpOwotCi0vKioKLSAqIENsZWFycyBhbGwgdGhlIGNvb2tpZXMgZnJvbSB0
aGUgY29va2llIGphci4KLSAqLwotRUFQSSB2b2lkICAgICAgICAgICAgICAgZXdrX2Nvb2tpZXNf
Y2xlYXIodm9pZCk7Ci0KLS8qKgotICogUmV0dXJucyBhIGxpc3Qgb2YgY29va2llcyBpbiB0aGUg
Y29va2llIGphci4KLSAqCi0gKiBAcmV0dXJuIGFuIEBjIEVpbmFfTGlzdCB3aXRoIGFsbCB0aGUg
Y29va2llcyBpbiB0aGUgY29va2llIGphcgotICovCi1FQVBJIEVpbmFfTGlzdCAgICAgICAgICAq
ZXdrX2Nvb2tpZXNfZ2V0X2FsbCh2b2lkKTsKLQotLyoqCi0gKiBEZWxldGVzIGEgY29va2llIGZy
b20gdGhlIGNvb2tpZSBqYXIuCi0gKgotICogTm90ZSB0aGF0IHRoZSBmaWVsZHMgbmFtZSwgdmFs
dWUsIGRvbWFpbiBhbmQgcGF0aCBhcmUgdXNlZCB0byBtYXRjaCB0aGlzCi0gKiBjb29raWUgaW4g
dGhlIGNvb2tpZSBqYXIuCi0gKgotICogQHBhcmFtIGNvb2tpZSBhbiBAYyBFd2tfQ29va2llIHRo
YXQgaGFzIHRoZSBpbmZvIHJlbGF0aXZlIHRvIHRoYXQgY29va2llCi0gKi8KLUVBUEkgdm9pZCAg
ICAgICAgICAgICAgIGV3a19jb29raWVzX2Nvb2tpZV9kZWwoRXdrX0Nvb2tpZSAqY29va2llKTsK
LQotLyoqCi0gKiBGcmVlcyB0aGUgbWVtb3J5IHVzZWQgYnkgYSBjb29raWUuCi0gKgotICogQHBh
cmFtIGNvb2tpZSB0aGUgRXdrX0Nvb2tpZSBzdHJ1Y3QgdGhhdCB3aWxsIGJlIGZyZWVkCi0gKi8K
LUVBUEkgdm9pZCAgICAgICAgICAgICAgIGV3a19jb29raWVzX2Nvb2tpZV9mcmVlKEV3a19Db29r
aWUgKmNvb2tpZSk7Ci0KLS8qKgotICogU2V0cyBhY2NlcHQgcG9saWN5IGZvciB0aGUgY29va2ll
cy4KLSAqCi0gKiBAcGFyYW0gcCB0aGUgYWNjZXB0YW5jZSBwb2xpY3kKLSAqCi0gKiBAc2VlIEV3
a19Db29raWVfUG9saWN5Ci0gKi8KLUVBUEkgdm9pZCAgICAgICAgICAgICAgIGV3a19jb29raWVz
X3BvbGljeV9zZXQoRXdrX0Nvb2tpZV9Qb2xpY3kgcCk7Ci0KLS8qKgotICogR2V0cyB0aGUgYWNj
ZXB0YW5jZSBwb2xpY3kgdXNlZCBpbiB0aGUgY3VycmVudCBjb29raWUgamFyLgotICoKLSAqIEBy
ZXR1cm4gdGhlIGN1cnJlbnQgYWNjZXB0YW5jZSBwb2xpY3kKLSAqIEBzZWUgRXdrX0Nvb2tpZV9Q
b2xpY3kKLSAqLwotRUFQSSBFd2tfQ29va2llX1BvbGljeSAgZXdrX2Nvb2tpZXNfcG9saWN5X2dl
dCh2b2lkKTsKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi19Ci0jZW5kaWYKLSNlbmRpZiAvLyBld2tf
Y29va2llc19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2N1c3RvbV9o
YW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfY3VzdG9tX2hhbmRsZXIuY3Bw
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYzQwNzE2Li4wMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfY3VzdG9tX2hhbmRsZXIuY3BwCisrKyAvZGV2L251bGwK
QEAgLTEsNzIgKzAsMCBAQAotLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVj
dHJvbmljcwotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgotICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gICAgdmVyc2lvbiAyLjEgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAg
ICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0g
ICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KLSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLgotKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgImV3a19jdXN0b21f
aGFuZGxlcl9wcml2YXRlLmgiCi0KLSNpZiBFTkFCTEUoTkFWSUdBVE9SX0NPTlRFTlRfVVRJTFMp
Ci0vKioKLSAqIEBpbnRlcm5hbAotICogUmVnaXN0ZXIgYSBzY2hlbWUgaGFuZGxlci4KLSAqCi0g
KiBAcGFyYW0gZGF0YSBEYXRhIG9mIHRoZSBoYW5kbGVyIGluY2x1ZGluZyB0aGUgcHJvdG9jb2wg
YW5kIHRoZSBoYW5kbGVyIHVybC4KLSAqCi0gKiBFbWl0cyBzaWduYWw6ICJwcm90b2NvbGhhbmRs
ZXIscmVnaXN0cmF0aW9uLHJlcXVlc3RlZCIgb24gVmlldyB3aXRoIGEgcG9pbnRlciB0byBFd2tf
Q3VzdG9tX0hhbmRsZXJfRGF0YS4KLSAqLwotYm9vbCBld2tfY3VzdG9tX2hhbmRsZXJfcmVnaXN0
ZXJfcHJvdG9jb2xfaGFuZGxlcihFd2tfQ3VzdG9tX0hhbmRsZXJfRGF0YSogZGF0YSkKLXsKLSAg
ICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoZGF0YS0+ZXdrVmlldywgZmFsc2UpOwot
ICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZGF0YS0+ZXdrVmlldywgInByb3Rv
Y29saGFuZGxlcixyZWdpc3RyYXRpb24scmVxdWVzdGVkIiwgZGF0YSk7Ci0gICAgcmV0dXJuIHRy
dWU7Ci19Ci0KLSNpZiBFTkFCTEUoQ1VTVE9NX1NDSEVNRV9IQU5ETEVSKQotLyoqCi0gKiBAaW50
ZXJuYWwKLSAqIFF1ZXJ5IHdoZXRoZXIgdGhlIGhhbmRsZXIgaXMgcmVnaXN0ZXJlZCBvciBub3Qu
Ci0gKgotICogQHBhcmFtIGRhdGEgRGF0YSBvZiB0aGUgaGFuZGxlciBpbmNsdWRpbmcgdGhlIHBy
b3RvY29sIGFuZCB0aGUgaGFuZGxlciB1cmwuCi0gKgotICogRW1pdHMgc2lnbmFsOiAicHJvdG9j
b2xoYW5kbGVyLGlzcmVnaXN0ZXJlZCIgb24gVmlldyB3aXRoIGEgcG9pbnRlciB0byBFd2tfQ3Vz
dG9tX0hhbmRsZXJfRGF0YS4KLSAqLwotRXdrX0N1c3RvbV9IYW5kbGVyc19TdGF0ZSBld2tfY3Vz
dG9tX2hhbmRsZXJfaXNfcHJvdG9jb2xfaGFuZGxlcl9yZWdpc3RlcmVkKEV3a19DdXN0b21fSGFu
ZGxlcl9EYXRhKiBkYXRhKQotewotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChk
YXRhLT5ld2tWaWV3LCBFV0tfQ1VTVE9NX0hBTkRMRVJTX0RFQ0xJTkVEKTsKLSAgICBldmFzX29i
amVjdF9zbWFydF9jYWxsYmFja19jYWxsKGRhdGEtPmV3a1ZpZXcsICJwcm90b2NvbGhhbmRsZXIs
aXNyZWdpc3RlcmVkIiwgZGF0YSk7Ci0gICAgRXdrX0N1c3RvbV9IYW5kbGVyc19TdGF0ZSByZXN1
bHQgPSBkYXRhLT5yZXN1bHQ7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyoqCi0gKiBAaW50
ZXJuYWwKLSAqIFJlbW92ZSB0aGUgcmVnaXN0ZXJlZCBzY2hlbWUgaGFuZGxlci4KLSAqCi0gKiBA
cGFyYW0gZGF0YSBEYXRhIG9mIHRoZSBoYW5kbGVyIGluY2x1ZGluZyB0aGUgcHJvdG9jb2wgYW5k
IHRoZSBoYW5kbGVyIHVybC4KLSAqCi0gKiBFbWl0cyBzaWduYWw6ICJwcm90b2NvbGhhbmRsZXIs
dW5yZWdpc3RyYXRpb24scmVxdWVzdGVkIiBvbiBWaWV3IHdpdGggYSBwb2ludGVyIHRvIEV3a19D
dXN0b21fSGFuZGxlcl9EYXRhLgotICovCi1ib29sIGV3a19jdXN0b21faGFuZGxlcl91bnJlZ2lz
dGVyX3Byb3RvY29sX2hhbmRsZXIoRXdrX0N1c3RvbV9IYW5kbGVyX0RhdGEqIGRhdGEpCi17Ci0g
ICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGRhdGEtPmV3a1ZpZXcsIGZhbHNlKTsK
LSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKGRhdGEtPmV3a1ZpZXcsICJwcm90
b2NvbGhhbmRsZXIsdW5yZWdpc3RyYXRpb24scmVxdWVzdGVkIiwgZGF0YSk7Ci0gICAgcmV0dXJu
IHRydWU7Ci19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoQ1VTVE9NX1NDSEVNRV9IQU5ETEVSKQotI2Vu
ZGlmIC8vIEVOQUJMRShOQVZJR0FUT1JfQ09OVEVOVF9VVElMUykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvZWZsL2V3ay9ld2tfY3VzdG9tX2hhbmRsZXJfcHJpdmF0ZS5oIGIvU291cmNlL1dl
YktpdC9lZmwvZXdrL2V3a19jdXN0b21faGFuZGxlcl9wcml2YXRlLmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDczZjk3ZTAuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9lZmwv
ZXdrL2V3a19jdXN0b21faGFuZGxlcl9wcml2YXRlLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzNCAr
MCwwIEBACi0vKgotICAgIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCi0K
LSAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAg
ICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgotICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUg
dG8KLSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLAotICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotKi8K
LQotI2lmbmRlZiBld2tfY3VzdG9tX2hhbmRsZXJfcHJpdmF0ZV9oCi0jZGVmaW5lIGV3a19jdXN0
b21faGFuZGxlcl9wcml2YXRlX2gKLQotI2luY2x1ZGUgImV3a192aWV3LmgiCi0KLSNpZiBFTkFC
TEUoTkFWSUdBVE9SX0NPTlRFTlRfVVRJTFMpCi1ib29sIGV3a19jdXN0b21faGFuZGxlcl9yZWdp
c3Rlcl9wcm90b2NvbF9oYW5kbGVyKEV3a19DdXN0b21fSGFuZGxlcl9EYXRhKiBkYXRhKTsKLQot
I2lmIEVOQUJMRShDVVNUT01fU0NIRU1FX0hBTkRMRVIpCi1Fd2tfQ3VzdG9tX0hhbmRsZXJzX1N0
YXRlIGV3a19jdXN0b21faGFuZGxlcl9pc19wcm90b2NvbF9oYW5kbGVyX3JlZ2lzdGVyZWQoRXdr
X0N1c3RvbV9IYW5kbGVyX0RhdGEqIGRhdGEpOwotYm9vbCBld2tfY3VzdG9tX2hhbmRsZXJfdW5y
ZWdpc3Rlcl9wcm90b2NvbF9oYW5kbGVyKEV3a19DdXN0b21fSGFuZGxlcl9EYXRhKiBkYXRhKTsK
LQotI2VuZGlmIC8vIEVOQUJMRShDVVNUT01fU0NIRU1FX0hBTkRMRVIpCi0jZW5kaWYgLy8gRU5B
QkxFKE5BVklHQVRPUl9DT05URU5UX1VUSUxTKQotI2VuZGlmIC8vIGV3a19jdXN0b21faGFuZGxl
cl9wcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZmlsZV9j
aG9vc2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZmlsZV9jaG9vc2VyLmNwcApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGJkYzUzOS4uMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZpbGVfY2hvb3Nlci5jcHAKKysrIC9kZXYvbnVsbApAQCAt
MSwxMDIgKzAsMCBAQAotLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJv
bmljcwotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgotICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gICAgdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi0gICAgVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCi0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKLSAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAgIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCi0gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KLSovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJld2tfZmlsZV9jaG9vc2Vy
LmgiCi0KLSNpbmNsdWRlICJGaWxlQ2hvb3Nlci5oIgotI2luY2x1ZGUgImV3a19maWxlX2Nob29z
ZXJfcHJpdmF0ZS5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLQotc3RydWN0IF9F
d2tfRmlsZV9DaG9vc2VyIHsKLSAgICBSZWZQdHI8V2ViQ29yZTo6RmlsZUNob29zZXI+IGZpbGVD
aG9vc2VyOwotfTsKLQotRWluYV9Cb29sIGV3a19maWxlX2Nob29zZXJfYWxsb3dzX211bHRpcGxl
X2ZpbGVzX2dldChjb25zdCBFd2tfRmlsZV9DaG9vc2VyKiBjaG9vc2VyKQotewotICAgIEVJTkFf
U0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChjaG9vc2VyLCBmYWxzZSk7Ci0gICAgcmV0dXJuIGNo
b29zZXItPmZpbGVDaG9vc2VyLT5zZXR0aW5ncygpLmFsbG93c011bHRpcGxlRmlsZXM7Ci19Ci0K
LUVpbmFfQm9vbCBld2tfZmlsZV9jaG9vc2VyX2FsbG93c19kaXJlY3RvcnlfdXBsb2FkX2dldChj
b25zdCBFd2tfRmlsZV9DaG9vc2VyKiBjaG9vc2VyKQotewotICAgIFVOVVNFRF9QQVJBTShjaG9v
c2VyKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLUVpbmFfTGlzdCogZXdrX2ZpbGVfY2hvb3Nl
cl9hY2NlcHRfbWltZXR5cGVzX2dldChjb25zdCBFd2tfRmlsZV9DaG9vc2VyKiBjaG9vc2VyKQot
ewotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChjaG9vc2VyLCAwKTsKLQotICAg
IEVpbmFfTGlzdCogbWltZXR5cGVzID0gMDsKLSAgICBzaXplX3QgY291bnQgPSBjaG9vc2VyLT5m
aWxlQ2hvb3Nlci0+c2V0dGluZ3MoKS5hY2NlcHRNSU1FVHlwZXMuc2l6ZSgpOwotICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkKLSAgICAgICAgbWltZXR5cGVzID0gZWluYV9s
aXN0X2FwcGVuZChtaW1ldHlwZXMsIGVpbmFfc3RyaW5nc2hhcmVfYWRkKGNob29zZXItPmZpbGVD
aG9vc2VyLT5zZXR0aW5ncygpLmFjY2VwdE1JTUVUeXBlc1tpXS51dGY4KCkuZGF0YSgpKSk7Ci0K
LSAgICByZXR1cm4gbWltZXR5cGVzOwotfQotCi1FaW5hX0xpc3QqIGV3a19maWxlX2Nob29zZXJf
YWNjZXB0X2ZpbGVfZXh0ZW50aW9uc19nZXQoY29uc3QgRXdrX0ZpbGVfQ2hvb3NlciogY2hvb3Nl
cikKLXsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoY2hvb3NlciwgMCk7Ci0K
LSAgICBFaW5hX0xpc3QqIGZpbGVFeHRlbnRpb25zID0gMDsKLSAgICBzaXplX3QgY291bnQgPSBj
aG9vc2VyLT5maWxlQ2hvb3Nlci0+c2V0dGluZ3MoKS5hY2NlcHRGaWxlRXh0ZW5zaW9ucy5zaXpl
KCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKQotICAgICAgICBmaWxl
RXh0ZW50aW9ucyA9IGVpbmFfbGlzdF9hcHBlbmQoZmlsZUV4dGVudGlvbnMsIGVpbmFfc3RyaW5n
c2hhcmVfYWRkKGNob29zZXItPmZpbGVDaG9vc2VyLT5zZXR0aW5ncygpLmFjY2VwdEZpbGVFeHRl
bnNpb25zW2ldLnV0ZjgoKS5kYXRhKCkpKTsKLQotICAgIHJldHVybiBmaWxlRXh0ZW50aW9uczsK
LX0KLQotRWluYV9MaXN0KiBld2tfZmlsZV9jaG9vc2VyX3NlbGVjdGVkX2ZpbGVzX2dldChjb25z
dCBFd2tfRmlsZV9DaG9vc2VyKiBjaG9vc2VyKQotewotICAgIEVJTkFfU0FGRVRZX09OX05VTExf
UkVUVVJOX1ZBTChjaG9vc2VyLCAwKTsKLQotICAgIEVpbmFfTGlzdCogZmlsZXMgPSAwOwotICAg
IHNpemVfdCBjb3VudCA9IGNob29zZXItPmZpbGVDaG9vc2VyLT5zZXR0aW5ncygpLnNlbGVjdGVk
RmlsZXMuc2l6ZSgpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkKLSAg
ICAgICAgZmlsZXMgPSBlaW5hX2xpc3RfYXBwZW5kKGZpbGVzLCBlaW5hX3N0cmluZ3NoYXJlX2Fk
ZChjaG9vc2VyLT5maWxlQ2hvb3Nlci0+c2V0dGluZ3MoKS5zZWxlY3RlZEZpbGVzW2ldLnV0Zjgo
KS5kYXRhKCkpKTsKLQotICAgIHJldHVybiBmaWxlczsKLX0KLQotRWluYV9Cb29sIGV3a19maWxl
X2Nob29zZXJfY2FwdHVyZV9nZXQoY29uc3QgRXdrX0ZpbGVfQ2hvb3NlciogY2hvb3NlcikKLXsK
LSNpZiBFTkFCTEUoTUVESUFfQ0FQVFVSRSkKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVS
Tl9WQUwoY2hvb3NlciwgZmFsc2UpOwotICAgIHJldHVybiBjaG9vc2VyLT5maWxlQ2hvb3Nlci0+
c2V0dGluZ3MoKS5jYXB0dXJlOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oY2hvb3Nlcik7Ci0g
ICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCi19Ci0KLUV3a19GaWxlX0Nob29zZXIqIGV3a19maWxl
X2Nob29zZXJfbmV3KFdlYkNvcmU6OkZpbGVDaG9vc2VyKiBmaWxlQ2hvb3NlcikKLXsKLSAgICBF
d2tfRmlsZV9DaG9vc2VyKiBld2tGaWxlQ2hvb3NlciA9IG5ldyBFd2tfRmlsZV9DaG9vc2VyOwot
ICAgIGV3a0ZpbGVDaG9vc2VyLT5maWxlQ2hvb3NlciA9IGZpbGVDaG9vc2VyOwotICAgIHJldHVy
biBld2tGaWxlQ2hvb3NlcjsKLX0KLQotdm9pZCBld2tfZmlsZV9jaG9vc2VyX2ZyZWUoRXdrX0Zp
bGVfQ2hvb3NlciogY2hvb3NlcikKLXsKLSAgICBjaG9vc2VyLT5maWxlQ2hvb3NlciA9IDA7Ci0g
ICAgZGVsZXRlIGNob29zZXI7Ci19Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3
ay9ld2tfZmlsZV9jaG9vc2VyLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZpbGVfY2hv
b3Nlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MmJlOWM4Li4wMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZmlsZV9jaG9vc2VyLmgKKysrIC9kZXYvbnVs
bApAQCAtMSwxMTggKzAsMCBAQAotLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBF
bGVjdHJvbmljcwotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gICAgTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gICAgdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi0g
ICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKLSAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICAgIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0gICAgWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQot
ICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvCi0gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAgICBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4KLSovCi0KLS8qKgotICogQGZpbGUgICAgZXdrX2ZpbGVfY2hvb3Nlci5oCi0gKiBA
YnJpZWYgICBGaWxlIENob29zZXIgQVBJLgotICoKLSAqIEZpbGUgQ2hvb3NlciBzdXBwb3J0cyBB
UElzIGZvciBmaWxlIHNlbGVjdGlvbiBkaWFsb2cuCi0gKiBUaGlzIHN1cHBvcnQgYXR0cmlidXRl
cyBvZiBmaWxlIGNob29zZXIgcmVnYXJkaW5nOgotICogLSBhbGxvd2FuY2Ugb2YgbXVsdGlwbGUg
ZmlsZXMgc2VsZWN0aW9uCi0gKiAtIGFsbG93YW5jZSBvZiB1cGxvYWQgZGlyZWN0b3J5Ci0gKiAt
IGxpc3Qgb2YgYWNjZXB0ZWQgbWltZSB0eXBlcwotICogLSBsaXN0IG9mIGFjY2VwdGVkIGZpbGUg
ZXh0ZW5zaW9ucwotICogLSBsaXN0IG9mIGluaXRpYWwgc2VsZWN0ZWQgZmlsZSBuYW1lcwotICog
LSBjYXB0dXJlIGF0dHJpYnV0ZSBmb3IgSFRNTCBtZWRpYSBjYXB0dXJlCi0gKi8KLQotI2lmbmRl
ZiBld2tfZmlsZV9jaG9vc2VyX2gKLSNkZWZpbmUgZXdrX2ZpbGVfY2hvb3Nlcl9oCi0KLSNpbmNs
dWRlIDxFaW5hLmg+Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJDIiB7Ci0jZW5kaWYK
LQotdHlwZWRlZiBzdHJ1Y3QgX0V3a19GaWxlX0Nob29zZXIgRXdrX0ZpbGVfQ2hvb3NlcjsKLQot
LyoqCi0gKiBRdWVyeSBpZiBtdWx0aXBsZSBmaWxlcyBhcmUgc3VwcG9ydGVkIGJ5IGZpbGUgY2hv
b3Nlci4KLSAqCi0gKiBAcGFyYW0gZiBmaWxlIGNob29zZXIgb2JqZWN0LgotICoKLSAqIEl0IHJl
dHVybnMgYSBib29sZWFuIHZhbHVlIHdoaWNoIGluZGljYXRlcyBpZiBtdWx0aXBsZSBmaWxlIGlz
IHN1cHBvcnRlZCBvciBub3QuCi0gKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VwcG9y
dCBtdWx0aXBsZSBmaWxlcyBvciBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZS4KLSAqLwotRUFQSSBF
aW5hX0Jvb2wgZXdrX2ZpbGVfY2hvb3Nlcl9hbGxvd3NfbXVsdGlwbGVfZmlsZXNfZ2V0KGNvbnN0
IEV3a19GaWxlX0Nob29zZXIgKmYpOwotCi0vKioKLSAqIFF1ZXJ5IGlmIGRpcmVjdG9yeSB1cGxv
YWQgaXMgc3VwcG9ydGVkIGJ5IGZpbGUgY2hvb3Nlci4KLSAqCi0gKiBAcGFyYW0gZiBmaWxlIGNo
b29zZXIgb2JqZWN0LgotICoKLSAqIEl0IHJldHVybnMgYSBib29sZWFuIHZhbHVlIHdoaWNoIGlu
ZGljYXRlcyBpZiBkaXJlY3RvcnkgdXBsb2FkIGlzIHN1cHBvcnRlZCBvciBub3QuCi0gKgotICog
QHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VwcG9ydCBkaXJlY3RvcnkgdXBsb2FkIG9yIEBjIEVJ
TkFfRkFMU0Ugb3RoZXJ3aXNlLgotICovCi1FQVBJIEVpbmFfQm9vbCBld2tfZmlsZV9jaG9vc2Vy
X2FsbG93c19kaXJlY3RvcnlfdXBsb2FkX2dldChjb25zdCBFd2tfRmlsZV9DaG9vc2VyICpmKTsK
LQotLyoqCi0gKiBSZXR1cm5zIHRoZSBsaXN0IG9mIGFjY2VwdGVkIG1pbWV0eXBlcyBvZiB0aGUg
ZmlsZSBjaG9vc2VyLgotICoKLSAqIEBwYXJhbSBmIGZpbGUgY2hvb3NlciBvYmplY3QuCi0gKgot
ICogQHJldHVybiBFaW5hX0xpc3Qgb2YgYWNjZXB0ZWQgbWltZXR5cGVzIG9uIHN1Y2Nlc3MsIG9y
IEBjIE5VTEwgb24gZmFpbHVyZSwKLSAqICAgICAgICAgdGhlIEVpbmFfTGlzdCBhbmQgaXRzIGl0
ZW1zIHNob3VsZCBiZSBmcmVlZCBhZnRlciB1c2UuIFVzZSBlaW5hX3N0cmluZ3NoYXJlX2RlbCgp
Ci0gKiAgICAgICAgIHRvIGZyZWUgdGhlIGl0ZW1zLgotICovCi1FQVBJIEVpbmFfTGlzdCAqZXdr
X2ZpbGVfY2hvb3Nlcl9hY2NlcHRfbWltZXR5cGVzX2dldChjb25zdCBFd2tfRmlsZV9DaG9vc2Vy
ICpmKTsKLQotLyoqCi0gKiBSZXR1cm5zIHRoZSBsaXN0IG9mIGFjY2VwdGVkIGZpbGUgZXh0ZW5z
aW9ucyBvZiB0aGUgZmlsZSBjaG9vc2VyLgotICoKLSAqIEBwYXJhbSBmIGZpbGUgY2hvb3NlciBv
YmplY3QuCi0gKgotICogQHJldHVybiBAYyBFaW5hX0xpc3Qgb2YgYWNjZXB0ZWQgZmlsZSBleHRl
bnNpb25zIG9uIHN1Y2Nlc3MsIG9yIEBjIE5VTEwgb24gZmFpbHVyZSwKLSAqICAgICAgICAgdGhl
IEVpbmFfTGlzdCBhbmQgaXRzIGl0ZW1zIHNob3VsZCBiZSBmcmVlZCBhZnRlciB1c2UuIFVzZSBl
aW5hX3N0cmluZ3NoYXJlX2RlbCgpCi0gKiAgICAgICAgIHRvIGZyZWUgdGhlIGl0ZW1zLgotICov
Ci1FQVBJIEVpbmFfTGlzdCAqZXdrX2ZpbGVfY2hvb3Nlcl9hY2NlcHRfZmlsZV9leHRlbnRpb25z
X2dldChjb25zdCBFd2tfRmlsZV9DaG9vc2VyICpmKTsKLQotLyoqCi0gKiBSZXR1cm5zIHRoZSBs
aXN0IG9mIHNlbGVjdGVkIGZpbGUgbmFtZXMgb2YgdGhlIGZpbGUgY2hvb3Nlci4KLSAqCi0gKiBU
aGlzIGxpc3QgaW5kaWNhdGVzIHByZXZpb3VzbHkgc2VsZWN0ZWQgZmlsZSBuYW1lcyBvZiB0aGUg
ZmlsZSBjaG9vc2VyLgotICogVGhlc2UgY2FuIGJlIHVzZWQgYnkgaW5pdGlhbCB2YWx1ZXMgb2Yg
dGhlIGZpbGUgZGlhbG9nLgotICoKLSAqIEBwYXJhbSBmIGZpbGUgY2hvb3NlciBvYmplY3QuCi0g
KgotICogQHJldHVybiBAYyBFaW5hX0xpc3Qgb2Ygc2VsZWN0ZWQgZmlsZSBuYW1lcyBvbiBzdWNj
ZXNzLCBvciBAYyBOVUxMIG9uIGZhaWx1cmUsCi0gKiAgICAgICAgIHRoZSBFaW5hX0xpc3QgYW5k
IGl0cyBpdGVtcyBzaG91bGQgYmUgZnJlZWQgYWZ0ZXIgdXNlLiBVc2UgZWluYV9zdHJpbmdzaGFy
ZV9kZWwoKQotICogICAgICAgICB0byBmcmVlIHRoZSBpdGVtcy4KLSAqLwotRUFQSSBFaW5hX0xp
c3QgKmV3a19maWxlX2Nob29zZXJfc2VsZWN0ZWRfZmlsZXNfZ2V0KGNvbnN0IEV3a19GaWxlX0No
b29zZXIgKmYpOwotCi0vKioKLSAqIFJldHVybnMgd2hldGhlciB0aGUgZGV2aWNlJ3MgbWVkaWEg
Y2FwdHVyZSBjYXBhYmlsaXRpZXMgc2hvdWxkIGJlIHVzZWQgaW4gdGhlIGZpbGUgY2hvb3Nlci4K
LSAqCi0gKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWwtbWVkaWEtY2FwdHVyZS8gZm9y
IHRoZSBzZW1hbnRpY3Mgb2YgdGhlIGNhcHR1cmUgYXR0cmlidXRlLgotICoKLSAqIEBwYXJhbSBm
IGZpbGUgY2hvb3NlciBvYmplY3QuCi0gKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgdGhl
IGRldmljZSdzIGNhcGFiaWxpdGllcyBzaG91bGQgYmUgdXNlZCwgQGMgRUlOQV9GQUxTRSBvdGhl
cndpc2UuCi0gKi8KLUVBUEkgRWluYV9Cb29sIGV3a19maWxlX2Nob29zZXJfY2FwdHVyZV9nZXQo
Y29uc3QgRXdrX0ZpbGVfQ2hvb3NlciAqZik7Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotfQotI2Vu
ZGlmCi0KLSNlbmRpZiAvLyBld2tfZmlsZV9jaG9vc2VyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvZWZsL2V3ay9ld2tfZmlsZV9jaG9vc2VyX3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQv
ZWZsL2V3ay9ld2tfZmlsZV9jaG9vc2VyX3ByaXZhdGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggNTE5ZTU0YS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdr
X2ZpbGVfY2hvb3Nlcl9wcml2YXRlLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi0v
KgotICAgIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCi0KLSAgICBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
Ci0gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgot
ICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAgICB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAotICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotKi8KLQotI2lmbmRl
ZiBld2tfZmlsZV9jaG9vc2VyX3ByaXZhdGVfaAotI2RlZmluZSBld2tfZmlsZV9jaG9vc2VyX3By
aXZhdGVfaAotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBGaWxlQ2hvb3NlcjsKLX0KLQot
RXdrX0ZpbGVfQ2hvb3NlciogZXdrX2ZpbGVfY2hvb3Nlcl9uZXcoV2ViQ29yZTo6RmlsZUNob29z
ZXIqIGZpbGVDaG9vc2VyKTsKLXZvaWQgZXdrX2ZpbGVfY2hvb3Nlcl9mcmVlKEV3a19GaWxlX0No
b29zZXIqIGNob29zZXIpOwotCi0jZW5kaWYgLy8gZXdrX2ZpbGVfY2hvb3Nlcl9wcml2YXRlX2gK
LQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggYWZkNWE3Zi4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2Zy
YW1lLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE5MTEgKzAsMCBAQAotLyoKLSAgICBDb3B5cmln
aHQgKEMpIDIwMDktMjAxMCBQcm9GVVNJT04gZW1iZWRkZWQgc3lzdGVtcwotICAgIENvcHlyaWdo
dCAoQykgMjAwOS0yMDEwIFNhbXN1bmcgRWxlY3Ryb25pY3MKLQotICAgIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAgICBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwot
ICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgotICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KLQotICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gICAgTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKLSAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
LQotICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICAgIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
Ci0gICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0qLwotCi0vLyBVbmNvbW1lbnQgdG8g
dmlldyBmcmFtZSByZWdpb25zIGFuZCBkZWJ1ZyBtZXNzYWdlcwotLy8gI2RlZmluZSBFV0tfRlJB
TUVfREVCVUcKLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgImV3a19mcmFtZS5oIgot
Ci0jaW5jbHVkZSAiQmFja0ZvcndhcmRDb250cm9sbGVyLmgiCi0jaW5jbHVkZSAiRG9jdW1lbnRM
b2FkZXIuaCIKLSNpbmNsdWRlICJEb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaCIKLSNpbmNsdWRl
ICJFZGl0b3IuaCIKLSNpbmNsdWRlICJFdmVudEhhbmRsZXIuaCIKLSNpbmNsdWRlICJGb2N1c0Nv
bnRyb2xsZXIuaCIKLSNpbmNsdWRlICJGcmFtZUxvYWRSZXF1ZXN0LmgiCi0jaW5jbHVkZSAiRnJh
bWVMb2FkZXIuaCIKLSNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudEVmbC5oIgotI2luY2x1ZGUg
IkZyYW1lU2VsZWN0aW9uLmgiCi0jaW5jbHVkZSAiRnJhbWVWaWV3LmgiCi0jaW5jbHVkZSAiSFRN
TENvbGxlY3Rpb24uaCIKLSNpbmNsdWRlICJIVE1MSGVhZEVsZW1lbnQuaCIKLSNpbmNsdWRlICJI
VE1MSW1hZ2VFbGVtZW50LmgiCi0jaW5jbHVkZSAiSFRNTE5hbWVzLmgiCi0jaW5jbHVkZSAiSFRN
TFBsdWdJbkVsZW1lbnQuaCIKLSNpbmNsdWRlICJIaXN0b3J5SXRlbS5oIgotI2luY2x1ZGUgIkhp
dFRlc3RSZXF1ZXN0LmgiCi0jaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgotI2luY2x1ZGUgIklu
dFNpemUuaCIKLSNpbmNsdWRlICJVUkwuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybUV2ZW50LmgiCi0j
aW5jbHVkZSAiUGxhdGZvcm1LZXlib2FyZEV2ZW50LmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1NZXNz
YWdlUG9ydENoYW5uZWwuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybU1vdXNlRXZlbnQuaCIKLSNpbmNs
dWRlICJQbGF0Zm9ybVRvdWNoRXZlbnQuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybVdoZWVsRXZlbnQu
aCIKLSNpbmNsdWRlICJQcm9ncmVzc1RyYWNrZXIuaCIKLSNpbmNsdWRlICJSZXNvdXJjZVJlcXVl
c3QuaCIKLSNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVm
ZmVyLmgiCi0jaW5jbHVkZSAiU3Vic3RpdHV0ZURhdGEuaCIKLSNpbmNsdWRlICJXaW5kb3dzS2V5
Ym9hcmRDb2Rlcy5oIgotI2luY2x1ZGUgImV3a19mcmFtZV9wcml2YXRlLmgiCi0jaW5jbHVkZSAi
ZXdrX3ByaXZhdGUuaCIKLSNpbmNsdWRlICJld2tfc2VjdXJpdHlfb3JpZ2luX3ByaXZhdGUuaCIK
LSNpbmNsdWRlICJld2tfdG91Y2hfZXZlbnRfcHJpdmF0ZS5oIgotI2luY2x1ZGUgImV3a192aWV3
X3ByaXZhdGUuaCIKLSNpbmNsdWRlIDxFY29yZV9JbnB1dC5oPgotI2luY2x1ZGUgPEVpbmEuaD4K
LSNpbmNsdWRlIDxFdmFzLmg+Ci0jaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KLSNp
bmNsdWRlIDxlaW5hX3NhZmV0eV9jaGVja3MuaD4KLSNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5o
PgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgot
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0K
LXN0YXRpYyBjb25zdCBjaGFyIEVXS19GUkFNRV9UWVBFX1NUUltdID0gIkVXS19GcmFtZSI7Ci0K
LXN0cnVjdCBFd2tfRnJhbWVfU21hcnRfRGF0YSB7Ci0gICAgRXZhc19PYmplY3RfU21hcnRfQ2xp
cHBlZF9EYXRhIGJhc2U7Ci0gICAgRXZhc19PYmplY3QqIHNlbGY7Ci0gICAgRXZhc19PYmplY3Qq
IHZpZXc7Ci0jaWZkZWYgRVdLX0ZSQU1FX0RFQlVHCi0gICAgRXZhc19PYmplY3QqIHJlZ2lvbjsK
LSNlbmRpZgotICAgIE93blB0cjxXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbD4gZnJhbWVM
b2FkZXJDbGllbnQ7Ci0gICAgV2ViQ29yZTo6RnJhbWUqIGZyYW1lOwotICAgIEV3a19UZXh0X1dp
dGhfRGlyZWN0aW9uIHRpdGxlOwotICAgIGNvbnN0IGNoYXIqIHVyaTsKLSAgICBjb25zdCBjaGFy
KiBuYW1lOwotICAgIGJvb2wgZWRpdGFibGUgOiAxOwotICAgIGJvb2wgaGFzRGlzcGxheWVkTWl4
ZWRDb250ZW50IDogMTsKLSAgICBib29sIGhhc1J1bk1peGVkQ29udGVudCA6IDE7Ci19OwotCi1z
dHJ1Y3QgRWluYV9JdGVyYXRvcl9Fd2tfRnJhbWUgewotICAgIEVpbmFfSXRlcmF0b3IgYmFzZTsK
LSAgICBFdmFzX09iamVjdCogb2JqZWN0OwotICAgIHVuc2lnbmVkIGN1cnJlbnRJbmRleDsKLX07
Ci0KLSNpZm5kZWYgRVdLX1RZUEVfQ0hFQ0sKLSNkZWZpbmUgRVdLX0ZSQU1FX1RZUEVfQ0hFQ0so
ZXdrRnJhbWUsIC4uLikgZG8geyB9IHdoaWxlICgwKQotI2Vsc2UKLSNkZWZpbmUgRVdLX0ZSQU1F
X1RZUEVfQ0hFQ0soZXdrRnJhbWUsIC4uLikgXAotICAgIGRvIHsgXAotICAgICAgICBjb25zdCBj
aGFyKiBfdG1wX290eXBlID0gZXZhc19vYmplY3RfdHlwZV9nZXQoZXdrRnJhbWUpOyBcCi0gICAg
ICAgIGlmIChFSU5BX1VOTElLRUxZKF90bXBfb3R5cGUgIT0gRVdLX0ZSQU1FX1RZUEVfU1RSKSkg
eyBcCi0gICAgICAgICAgICBFSU5BX0xPR19DUklUIFwKLSAgICAgICAgICAgICAgICAoIiVwICgl
cykgaXMgbm90IG9mIGFuIGV3a19mcmFtZSEiLCBld2tGcmFtZSwgXAotICAgICAgICAgICAgICAg
IF90bXBfb3R5cGUgPyBfdG1wX290eXBlIDogIihudWxsKSIpOyBcCi0gICAgICAgICAgICByZXR1
cm4gX19WQV9BUkdTX187IFwKLSAgICAgICAgfSBcCi0gICAgfSB3aGlsZSAoMCkKLSNlbmRpZgot
Ci0jZGVmaW5lIEVXS19GUkFNRV9TRF9HRVQoZXdrRnJhbWUsIHBvaW50ZXIpIFwKLSAgICBFd2tf
RnJhbWVfU21hcnRfRGF0YSogcG9pbnRlciA9IHN0YXRpY19jYXN0PEV3a19GcmFtZV9TbWFydF9E
YXRhKj4oZXZhc19vYmplY3Rfc21hcnRfZGF0YV9nZXQoZXdrRnJhbWUpKQotCi0jZGVmaW5lIEVX
S19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBwb2ludGVyLCAuLi4pIFwKLSAgICBF
V0tfRlJBTUVfVFlQRV9DSEVDSyhld2tGcmFtZSwgX19WQV9BUkdTX18pOyBcCi0gICAgRVdLX0ZS
QU1FX1NEX0dFVChld2tGcmFtZSwgcG9pbnRlcik7IFwKLSAgICBpZiAoIXBvaW50ZXIpIHsgXAot
ICAgICAgICBDUklUSUNBTCgibm8gc21hcnQgZGF0YSBmb3Igb2JqZWN0ICVwICglcykiLCBcCi0g
ICAgICAgICAgICAgICAgIGV3a0ZyYW1lLCBldmFzX29iamVjdF90eXBlX2dldChld2tGcmFtZSkp
OyBcCi0gICAgICAgIHJldHVybiBfX1ZBX0FSR1NfXzsgXAotICAgIH0KLQotc3RhdGljIEV2YXNf
U21hcnRfQ2xhc3MgX3BhcmVudF9zYyA9IEVWQVNfU01BUlRfQ0xBU1NfSU5JVF9OVUxMOwotCi0j
aWZkZWYgRVdLX0ZSQU1FX0RFQlVHCi1zdGF0aWMgaW5saW5lIHZvaWQgX2V3a19mcmFtZV9kZWJ1
ZyhFdmFzX09iamVjdCogZXdrRnJhbWUpCi17Ci0gICAgRXZhc19PYmplY3QqIGNsaXAsICogcGFy
ZW50OwotICAgIEV2YXNfQ29vcmQgeCwgeSwgd2lkdGgsIGhlaWdodCwgY29udGVudFgsIGNvbnRl
bnRZLCBjb250ZW50V2lkdGgsIGNvbnRlbnRIZWlnaHQ7Ci0gICAgaW50IHJlZCwgZ3JlZW4sIGJs
dWUsIGFscGhhLCBjb250ZW50UmVkLCBjb250ZW50R3JlZW4sIGNvbnRlbnRCbHVlLCBjb250ZW50
QWxwaGE7Ci0KLSAgICBldmFzX29iamVjdF9jb2xvcl9nZXQoZXdrRnJhbWUsICZyZWQsICZncmVl
biwgJmJsdWUsICZhbHBoYSk7Ci0gICAgZXZhc19vYmplY3RfZ2VvbWV0cnlfZ2V0KGV3a0ZyYW1l
LCAmeCwgJnksICZ3aWR0aCwgJmhlaWdodCk7Ci0KLSAgICBjbGlwID0gZXZhc19vYmplY3RfY2xp
cF9nZXQoZXdrRnJhbWUpOwotICAgIGV2YXNfb2JqZWN0X2NvbG9yX2dldChjbGlwLCAmY29udGVu
dFJlZCwgJmNvbnRlbnRHcmVlbiwgJmNvbnRlbnRCbHVlLCAmY29udGVudEFscGhhKTsKLSAgICBl
dmFzX29iamVjdF9nZW9tZXRyeV9nZXQoY2xpcCwgJmNvbnRlbnRYLCAmY29udGVudFksICZjb250
ZW50V2lkdGgsICZjb250ZW50SGVpZ2h0KTsKLQotICAgIEVJTkFfTE9HX0RCRygiJXA6IHR5cGU9
JXMgbmFtZT0lcywgdmlzaWJsZT0lZCwgY29sb3I9JTAyeCUwMnglMDJ4JTAyeCwgJWQsJWQrJWR4
JWQsIGNsaXBwZXI9JXAgKCVkLCAlMDJ4JTAyeCUwMnglMDJ4LCAlZCwlZCslZHglZClcbiIsCi0g
ICAgICAgICAgICBld2tGcmFtZSwgZXZhc19vYmplY3RfdHlwZV9nZXQoZXdrRnJhbWUpLCBldmFz
X29iamVjdF9uYW1lX2dldChld2tGcmFtZSksIGV2YXNfb2JqZWN0X3Zpc2libGVfZ2V0KGV3a0Zy
YW1lKSwKLSAgICAgICAgICAgIHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhLCB4LCB5LCB3aWR0aCwg
aGVpZ2h0LAotICAgICAgICAgICAgY2xpcCwgZXZhc19vYmplY3RfdmlzaWJsZV9nZXQoY2xpcCks
IGNvbnRlbnRSZWQsIGNvbnRlbnRHcmVlbiwgY29udGVudEJsdWUsIGNvbnRlbnRBbHBoYSwgY29u
dGVudFgsIGNvbnRlbnRZLCBjb250ZW50V2lkdGgsIGNvbnRlbnRIZWlnaHQpOwotICAgIHBhcmVu
dCA9IGV2YXNfb2JqZWN0X3NtYXJ0X3BhcmVudF9nZXQoZXdrRnJhbWUpOwotICAgIGlmICghcGFy
ZW50KQotICAgICAgICBFSU5BX0xPR19FUlIoImNvdWxkIG5vdCBnZXQgcGFyZW50IG9iamVjdC5c
biIpOwotICAgIGVsc2UKLSAgICAgICAgX2V3a19mcmFtZV9kZWJ1ZyhwYXJlbnQpOwotfQotI2Vu
ZGlmCi0KLXN0YXRpYyBXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbCogX2V3a19mcmFtZV9s
b2FkZXJfZWZsX2dldChjb25zdCBXZWJDb3JlOjpGcmFtZSogZnJhbWUpCi17Ci0gICAgcmV0dXJu
ICZzdGF0aWNfY2FzdDxXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbCY+KGZyYW1lLT5sb2Fk
ZXIoKS5jbGllbnQoKSk7Ci19Ci0KLXN0YXRpYyBFaW5hX0Jvb2wgX2V3a19mcmFtZV9jaGlsZHJl
bl9pdGVyYXRvcl9uZXh0KEVpbmFfSXRlcmF0b3JfRXdrX0ZyYW1lKiBpdGVyYXRvciwgRXZhc19P
YmplY3QqKiBkYXRhKQotewotICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKGl0ZXJhdG9y
LT5vYmplY3QsIHNtYXJ0RGF0YSwgZmFsc2UpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVU
VVJOX1ZBTChzbWFydERhdGEtPmZyYW1lLCBmYWxzZSk7Ci0KLSAgICBpZiAoaXRlcmF0b3ItPmN1
cnJlbnRJbmRleCA8IHNtYXJ0RGF0YS0+ZnJhbWUtPnRyZWUoKS5jaGlsZENvdW50KCkpIHsKLSAg
ICAgICAgKmRhdGEgPSBFV0tQcml2YXRlOjpraXRGcmFtZShzbWFydERhdGEtPmZyYW1lLT50cmVl
KCkuY2hpbGQoaXRlcmF0b3ItPmN1cnJlbnRJbmRleCsrKSk7Ci0gICAgICAgIHJldHVybiB0cnVl
OwotICAgIH0KLQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotc3RhdGljIEV2YXNfT2JqZWN0KiBf
ZXdrX2ZyYW1lX2NoaWxkcmVuX2l0ZXJhdG9yX2dldF9jb250YWluZXIoRWluYV9JdGVyYXRvcl9F
d2tfRnJhbWUqIGl0ZXJhdG9yKQotewotICAgIHJldHVybiBpdGVyYXRvci0+b2JqZWN0OwotfQot
Ci1zdGF0aWMgdm9pZCBfZXdrX2ZyYW1lX3NtYXJ0X2FkZChFdmFzX09iamVjdCogZXdrRnJhbWUp
Ci17Ci0gICAgRVdLX0ZSQU1FX1NEX0dFVChld2tGcmFtZSwgc21hcnREYXRhKTsKLQotICAgIGlm
ICghc21hcnREYXRhKSB7Ci0gICAgICAgIHNtYXJ0RGF0YSA9IHN0YXRpY19jYXN0PEV3a19GcmFt
ZV9TbWFydF9EYXRhKj4oY2FsbG9jKDEsIHNpemVvZihFd2tfRnJhbWVfU21hcnRfRGF0YSkpKTsK
LSAgICAgICAgaWYgKCFzbWFydERhdGEpIHsKLSAgICAgICAgICAgIENSSVRJQ0FMKCJjb3VsZCBu
b3QgYWxsb2NhdGUgRXdrX0ZyYW1lX1NtYXJ0X0RhdGEiKTsKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgfQotICAgICAgICBldmFzX29iamVjdF9zbWFydF9kYXRhX3NldChld2tGcmFtZSwg
c21hcnREYXRhKTsKLSAgICB9Ci0KLSAgICBzbWFydERhdGEtPnNlbGYgPSBld2tGcmFtZTsKLQot
ICAgIF9wYXJlbnRfc2MuYWRkKGV3a0ZyYW1lKTsKLSAgICBldmFzX29iamVjdF9zdGF0aWNfY2xp
cF9zZXQoc21hcnREYXRhLT5iYXNlLmNsaXBwZXIsIGZhbHNlKTsKLSAgICBldmFzX29iamVjdF9t
b3ZlKHNtYXJ0RGF0YS0+YmFzZS5jbGlwcGVyLCAwLCAwKTsKLSAgICBldmFzX29iamVjdF9yZXNp
emUoc21hcnREYXRhLT5iYXNlLmNsaXBwZXIsIDAsIDApOwotCi0jaWZkZWYgRVdLX0ZSQU1FX0RF
QlVHCi0gICAgc21hcnREYXRhLT5yZWdpb24gPSBldmFzX29iamVjdF9yZWN0YW5nbGVfYWRkKHNt
YXJ0RGF0YS0+YmFzZS5ldmFzKTsKLSAgICBzdGF0aWMgaW50IGkgPSAwOwotICAgIHN3aXRjaCAo
aSkgewotICAgIGNhc2UgMDoKLSAgICAgICAgZXZhc19vYmplY3RfY29sb3Jfc2V0KHNtYXJ0RGF0
YS0+cmVnaW9uLCAxMjgsIDAsIDAsIDEyOCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgMToK
LSAgICAgICAgZXZhc19vYmplY3RfY29sb3Jfc2V0KHNtYXJ0RGF0YS0+cmVnaW9uLCAwLCAxMjgs
IDAsIDEyOCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgMjoKLSAgICAgICAgZXZhc19vYmpl
Y3RfY29sb3Jfc2V0KHNtYXJ0RGF0YS0+cmVnaW9uLCAwLCAwLCAxMjgsIDEyOCk7Ci0gICAgICAg
IGJyZWFrOwotICAgIGNhc2UgMzoKLSAgICAgICAgZXZhc19vYmplY3RfY29sb3Jfc2V0KHNtYXJ0
RGF0YS0+cmVnaW9uLCAxMjgsIDAsIDAsIDEyOCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
NDoKLSAgICAgICAgZXZhc19vYmplY3RfY29sb3Jfc2V0KHNtYXJ0RGF0YS0+cmVnaW9uLCAxMjgs
IDEyOCwgMCwgMTI4KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSA1OgotICAgICAgICBldmFz
X29iamVjdF9jb2xvcl9zZXQoc21hcnREYXRhLT5yZWdpb24sIDEyOCwgMCwgMTI4LCAxMjgpOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIDY6Ci0gICAgICAgIGV2YXNfb2JqZWN0X2NvbG9yX3Nl
dChzbWFydERhdGEtPnJlZ2lvbiwgMCwgMTI4LCAxMjgsIDEyOCk7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGRlZmF1bHQ6Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBpKys7Ci0gICAgaWYgKGkg
PiA2KQotICAgICAgICBpID0gMDsKLQotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X21lbWJlcl9hZGQo
c21hcnREYXRhLT5yZWdpb24sIGV3a0ZyYW1lKTsKLSAgICBldmFzX29iamVjdF9oaWRlKHNtYXJ0
RGF0YS0+cmVnaW9uKTsKLSNlbmRpZgotfQotCi1zdGF0aWMgdm9pZCBfZXdrX2ZyYW1lX3NtYXJ0
X2RlbChFdmFzX09iamVjdCogZXdrRnJhbWUpCi17Ci0gICAgRVdLX0ZSQU1FX1NEX0dFVChld2tG
cmFtZSwgc21hcnREYXRhKTsKLQotICAgIGlmIChzbWFydERhdGEpIHsKLSAgICAgICAgaWYgKHNt
YXJ0RGF0YS0+ZnJhbWUpIHsKLSAgICAgICAgICAgIFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50
RWZsKiBmbGMgPSBfZXdrX2ZyYW1lX2xvYWRlcl9lZmxfZ2V0KHNtYXJ0RGF0YS0+ZnJhbWUpOwot
ICAgICAgICAgICAgZmxjLT5zZXRXZWJGcmFtZSgwKTsKLSAgICAgICAgICAgIEVXS19GUkFNRV9T
RF9HRVQoZXdrX3ZpZXdfZnJhbWVfbWFpbl9nZXQoc21hcnREYXRhLT52aWV3KSwgbWFpblNtYXJ0
RGF0YSk7Ci0gICAgICAgICAgICBpZiAobWFpblNtYXJ0RGF0YS0+ZnJhbWUgPT0gc21hcnREYXRh
LT5mcmFtZSkgLy8gYXBwbHlpbmcgb25seSBmb3IgbWFpbiBmcmFtZSBpcyBlbm91Z2ggKHdpbGwg
dHJhdmVyc2UgdGhyb3VnaCBmcmFtZSB0cmVlKQotICAgICAgICAgICAgICAgIHNtYXJ0RGF0YS0+
ZnJhbWUtPmxvYWRlcigpLmRldGFjaEZyb21QYXJlbnQoKTsKLSAgICAgICAgICAgIHNtYXJ0RGF0
YS0+ZnJhbWUgPSAwOwotICAgICAgICB9Ci0KLSAgICAgICAgZWluYV9zdHJpbmdzaGFyZV9kZWwo
c21hcnREYXRhLT50aXRsZS5zdHJpbmcpOwotICAgICAgICBlaW5hX3N0cmluZ3NoYXJlX2RlbChz
bWFydERhdGEtPnVyaSk7Ci0gICAgICAgIGVpbmFfc3RyaW5nc2hhcmVfZGVsKHNtYXJ0RGF0YS0+
bmFtZSk7Ci0gICAgfQotCi0gICAgX3BhcmVudF9zYy5kZWwoZXdrRnJhbWUpOwotfQotCi1zdGF0
aWMgdm9pZCBfZXdrX2ZyYW1lX3NtYXJ0X3Jlc2l6ZShFdmFzX09iamVjdCogZXdrRnJhbWUsIEV2
YXNfQ29vcmQgd2lkdGgsIEV2YXNfQ29vcmQgaGVpZ2h0KQotewotICAgIEVXS19GUkFNRV9TRF9H
RVQoZXdrRnJhbWUsIHNtYXJ0RGF0YSk7Ci0gICAgZXZhc19vYmplY3RfcmVzaXplKHNtYXJ0RGF0
YS0+YmFzZS5jbGlwcGVyLCB3aWR0aCwgaGVpZ2h0KTsKLQotI2lmZGVmIEVXS19GUkFNRV9ERUJV
RwotICAgIGV2YXNfb2JqZWN0X3Jlc2l6ZShzbWFydERhdGEtPnJlZ2lvbiwgd2lkdGgsIGhlaWdo
dCk7Ci0gICAgRXZhc19Db29yZCB4LCB5OwotICAgIGV2YXNfb2JqZWN0X2dlb21ldHJ5X2dldChz
bWFydERhdGEtPnJlZ2lvbiwgJngsICZ5LCAmd2lkdGgsICZoZWlnaHQpOwotICAgIElORk8oInJl
Z2lvbj0lcCwgdmlzaWJsZT0lZCwgZ2VvPSVkLCVkICsgJWR4JWQiLAotICAgICAgICBzbWFydERh
dGEtPnJlZ2lvbiwgZXZhc19vYmplY3RfdmlzaWJsZV9nZXQoc21hcnREYXRhLT5yZWdpb24pLCB4
LCB5LCB3aWR0aCwgaGVpZ2h0KTsKLSAgICBfZXdrX2ZyYW1lX2RlYnVnKGV3a0ZyYW1lKTsKLSNl
bmRpZgotfQotCi1zdGF0aWMgdm9pZCBfZXdrX2ZyYW1lX3NtYXJ0X3NldChFdmFzX1NtYXJ0X0Ns
YXNzKiBhcGkpCi17Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2xpcHBlZF9zbWFydF9zZXQoYXBp
KTsKLSAgICBhcGktPmFkZCA9IF9ld2tfZnJhbWVfc21hcnRfYWRkOwotICAgIGFwaS0+ZGVsID0g
X2V3a19mcmFtZV9zbWFydF9kZWw7Ci0gICAgYXBpLT5yZXNpemUgPSBfZXdrX2ZyYW1lX3NtYXJ0
X3Jlc2l6ZTsKLX0KLQotc3RhdGljIGlubGluZSBFdmFzX1NtYXJ0KiBfZXdrX2ZyYW1lX3NtYXJ0
X2NsYXNzX25ldyh2b2lkKQotewotICAgIHN0YXRpYyBFdmFzX1NtYXJ0X0NsYXNzIHNtYXJ0Q2xh
c3MgPSBFVkFTX1NNQVJUX0NMQVNTX0lOSVRfTkFNRV9WRVJTSU9OKEVXS19GUkFNRV9UWVBFX1NU
Uik7Ci0gICAgc3RhdGljIEV2YXNfU21hcnQqIHNtYXJ0ID0gMDsKLQotICAgIGlmIChFSU5BX1VO
TElLRUxZKCFzbWFydCkpIHsKLSAgICAgICAgZXZhc19vYmplY3Rfc21hcnRfY2xpcHBlZF9zbWFy
dF9zZXQoJl9wYXJlbnRfc2MpOwotICAgICAgICBfZXdrX2ZyYW1lX3NtYXJ0X3NldCgmc21hcnRD
bGFzcyk7Ci0gICAgICAgIHNtYXJ0ID0gZXZhc19zbWFydF9jbGFzc19uZXcoJnNtYXJ0Q2xhc3Mp
OwotICAgIH0KLQotICAgIHJldHVybiBzbWFydDsKLX0KLQotRXZhc19PYmplY3QqIGV3a19mcmFt
ZV92aWV3X2dldChjb25zdCBFdmFzX09iamVjdCogZXdrRnJhbWUpCi17Ci0gICAgRVdLX0ZSQU1F
X1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0RGF0YSwgMCk7Ci0gICAgcmV0dXJuIHNt
YXJ0RGF0YS0+dmlldzsKLX0KLQotRXdrX1NlY3VyaXR5X09yaWdpbiogZXdrX2ZyYW1lX3NlY3Vy
aXR5X29yaWdpbl9nZXQoY29uc3QgRXZhc19PYmplY3QgKmV3a0ZyYW1lKQotewotICAgIEVXS19G
UkFNRV9TRF9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBzbWFydERhdGEsIDApOwotICAgIEVJTkFf
U0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEtPmZyYW1lLCAwKTsKLSAgICBFSU5B
X1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5mcmFtZS0+ZG9jdW1lbnQoKSwg
MCk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+ZnJhbWUt
PmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIDApOwotCi0gICAgcmV0dXJuIGV3a19zZWN1
cml0eV9vcmlnaW5fbmV3KHNtYXJ0RGF0YS0+ZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3Jp
Z2luKCkpOwotfQotCi1FaW5hX0l0ZXJhdG9yKiBld2tfZnJhbWVfY2hpbGRyZW5faXRlcmF0b3Jf
bmV3KEV2YXNfT2JqZWN0KiBld2tGcmFtZSkKLXsKLSAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JF
VFVSTihld2tGcmFtZSwgc21hcnREYXRhLCAwKTsKLSAgICBFaW5hX0l0ZXJhdG9yX0V3a19GcmFt
ZSogaXRlcmF0b3IgPSBzdGF0aWNfY2FzdDxFaW5hX0l0ZXJhdG9yX0V3a19GcmFtZSo+Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNhbGxvYygxLCBzaXplb2YoRWluYV9JdGVy
YXRvcl9Fd2tfRnJhbWUpKSk7Ci0gICAgaWYgKCFpdGVyYXRvcikKLSAgICAgICAgcmV0dXJuIDA7
Ci0KLSAgICBFSU5BX01BR0lDX1NFVCgmaXRlcmF0b3ItPmJhc2UsIEVJTkFfTUFHSUNfSVRFUkFU
T1IpOwotICAgIGl0ZXJhdG9yLT5iYXNlLm5leHQgPSBGVU5DX0lURVJBVE9SX05FWFQoX2V3a19m
cmFtZV9jaGlsZHJlbl9pdGVyYXRvcl9uZXh0KTsKLSAgICBpdGVyYXRvci0+YmFzZS5nZXRfY29u
dGFpbmVyID0gRlVOQ19JVEVSQVRPUl9HRVRfQ09OVEFJTkVSKF9ld2tfZnJhbWVfY2hpbGRyZW5f
aXRlcmF0b3JfZ2V0X2NvbnRhaW5lcik7Ci0gICAgaXRlcmF0b3ItPmJhc2UuZnJlZSA9IEZVTkNf
SVRFUkFUT1JfRlJFRShmcmVlKTsKLSAgICBpdGVyYXRvci0+b2JqZWN0ID0gZXdrRnJhbWU7Ci0g
ICAgaXRlcmF0b3ItPmN1cnJlbnRJbmRleCA9IDA7Ci0gICAgcmV0dXJuICZpdGVyYXRvci0+YmFz
ZTsKLX0KLQotRXZhc19PYmplY3QqIGV3a19mcmFtZV9jaGlsZF9maW5kKEV2YXNfT2JqZWN0KiBl
d2tGcmFtZSwgY29uc3QgY2hhciogbmFtZSkKLXsKLSAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JF
VFVSTihld2tGcmFtZSwgc21hcnREYXRhLCAwKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JF
VFVSTl9WQUwobmFtZSwgMCk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNt
YXJ0RGF0YS0+ZnJhbWUsIDApOwotICAgIFdURjo6U3RyaW5nIGZyYW1lTmFtZSA9IFdURjo6U3Ry
aW5nOjpmcm9tVVRGOChuYW1lKTsKLSAgICByZXR1cm4gRVdLUHJpdmF0ZTo6a2l0RnJhbWUoc21h
cnREYXRhLT5mcmFtZS0+dHJlZSgpLmZpbmQoV1RGOjpBdG9taWNTdHJpbmcoZnJhbWVOYW1lKSkp
OwotfQotCi1FaW5hX0Jvb2wgZXdrX2ZyYW1lX3VyaV9zZXQoRXZhc19PYmplY3QqIGV3a0ZyYW1l
LCBjb25zdCBjaGFyKiB1cmkpCi17Ci0gICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4oZXdr
RnJhbWUsIHNtYXJ0RGF0YSwgZmFsc2UpOwotICAgIFdlYkNvcmU6OlVSTCBrdXJsKFdlYkNvcmU6
OlVSTCgpLCBXVEY6OlN0cmluZzo6ZnJvbVVURjgodXJpKSk7Ci0gICAgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0IHJlcShrdXJsKTsKLSAgICBzbWFydERhdGEtPmZyYW1lLT5sb2FkZXIoKS5sb2Fk
KFdlYkNvcmU6OkZyYW1lTG9hZFJlcXVlc3Qoc21hcnREYXRhLT5mcmFtZSwgcmVxKSk7Ci0KLSAg
ICByZXR1cm4gdHJ1ZTsKLX0KLQotY29uc3QgY2hhciogZXdrX2ZyYW1lX3VyaV9nZXQoY29uc3Qg
RXZhc19PYmplY3QqIGV3a0ZyYW1lKQotewotICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJO
KGV3a0ZyYW1lLCBzbWFydERhdGEsIDApOwotICAgIHJldHVybiBzbWFydERhdGEtPnVyaTsKLX0K
LQotY29uc3QgRXdrX1RleHRfV2l0aF9EaXJlY3Rpb24qIGV3a19mcmFtZV90aXRsZV9nZXQoY29u
c3QgRXZhc19PYmplY3QqIGV3a0ZyYW1lKQotewotICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVU
VVJOKGV3a0ZyYW1lLCBzbWFydERhdGEsIDApOwotICAgIHJldHVybiAmc21hcnREYXRhLT50aXRs
ZTsKLX0KLQotY29uc3QgY2hhciogZXdrX2ZyYW1lX25hbWVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0
KiBld2tGcmFtZSkKLXsKLSAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihld2tGcmFtZSwg
c21hcnREYXRhLCAwKTsKLQotICAgIGlmICghc21hcnREYXRhLT5mcmFtZSkgewotICAgICAgICBF
UlIoImNvdWxkIG5vdCBnZXQgbmFtZSBvZiB1bmluaXRpYWxpemVkIGZyYW1lLiIpOwotICAgICAg
ICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBjb25zdCBXVEY6OlN0cmluZyBmcmFtZU5hbWUgPSBz
bWFydERhdGEtPmZyYW1lLT50cmVlKCkudW5pcXVlTmFtZSgpOwotCi0gICAgaWYgKChzbWFydERh
dGEtPm5hbWUpICYmIChzbWFydERhdGEtPm5hbWUgPT0gZnJhbWVOYW1lKSkKLSAgICAgICAgcmV0
dXJuIHNtYXJ0RGF0YS0+bmFtZTsKLQotICAgIGVpbmFfc3RyaW5nc2hhcmVfcmVwbGFjZV9sZW5n
dGgoJihzbWFydERhdGEtPm5hbWUpLCBmcmFtZU5hbWUudXRmOCgpLmRhdGEoKSwgZnJhbWVOYW1l
Lmxlbmd0aCgpKTsKLQotICAgIHJldHVybiBzbWFydERhdGEtPm5hbWU7Ci19Ci0KLUVpbmFfQm9v
bCBld2tfZnJhbWVfY29udGVudHNfc2l6ZV9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a0ZyYW1l
LCBFdmFzX0Nvb3JkKiB3aWR0aCwgRXZhc19Db29yZCogaGVpZ2h0KQotewotICAgIGlmICh3aWR0
aCkKLSAgICAgICAgKndpZHRoID0gMDsKLSAgICBpZiAoaGVpZ2h0KQotICAgICAgICAqaGVpZ2h0
ID0gMDsKLSAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihld2tGcmFtZSwgc21hcnREYXRh
LCBmYWxzZSk7Ci0gICAgaWYgKCFzbWFydERhdGEtPmZyYW1lIHx8ICFzbWFydERhdGEtPmZyYW1l
LT52aWV3KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAod2lkdGgpCi0gICAgICAg
ICp3aWR0aCA9IHNtYXJ0RGF0YS0+ZnJhbWUtPnZpZXcoKS0+Y29udGVudHNXaWR0aCgpOwotICAg
IGlmIChoZWlnaHQpCi0gICAgICAgICpoZWlnaHQgPSBzbWFydERhdGEtPmZyYW1lLT52aWV3KCkt
PmNvbnRlbnRzSGVpZ2h0KCk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXN0YXRpYyBFaW5hX0Jv
b2wgX2V3a19mcmFtZV9jb250ZW50c19zZXRfaW50ZXJuYWwoRXdrX0ZyYW1lX1NtYXJ0X0RhdGEq
IHNtYXJ0RGF0YSwgY29uc3QgY2hhciogY29udGVudHMsIHNpemVfdCBjb250ZW50c1NpemUsIGNv
bnN0IGNoYXIqIG1pbWVUeXBlLCBjb25zdCBjaGFyKiBlbmNvZGluZywgY29uc3QgY2hhciogYmFz
ZVVyaSwgY29uc3QgY2hhciogdW5yZWFjaGFibGVVcmkpCi17Ci0gICAgc2l6ZV90IGxlbmd0aCA9
IHN0cmxlbihjb250ZW50cyk7Ci0gICAgaWYgKGNvbnRlbnRzU2l6ZSA8IDEgfHwgY29udGVudHNT
aXplID4gbGVuZ3RoKQotICAgICAgICBjb250ZW50c1NpemUgPSBsZW5ndGg7Ci0gICAgaWYgKCFt
aW1lVHlwZSkKLSAgICAgICAgbWltZVR5cGUgPSAidGV4dC9odG1sIjsKLSAgICBpZiAoIWVuY29k
aW5nKQotICAgICAgICBlbmNvZGluZyA9ICJVVEYtOCI7Ci0gICAgaWYgKCFiYXNlVXJpKQotICAg
ICAgICBiYXNlVXJpID0gImFib3V0OmJsYW5rIjsKLQotICAgIFdlYkNvcmU6OlVSTCBiYXNlS1VS
TChXZWJDb3JlOjpVUkwoKSwgV1RGOjpTdHJpbmc6OmZyb21VVEY4KGJhc2VVcmkpKTsKLSAgICBX
ZWJDb3JlOjpVUkwgdW5yZWFjaGFibGVLVVJMOwotICAgIGlmICh1bnJlYWNoYWJsZVVyaSkKLSAg
ICAgICAgdW5yZWFjaGFibGVLVVJMID0gV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXVEY6
OlN0cmluZzo6ZnJvbVVURjgodW5yZWFjaGFibGVVcmkpKTsKLSAgICBlbHNlCi0gICAgICAgIHVu
cmVhY2hhYmxlS1VSTCA9IFdlYkNvcmU6OlVSTCgpOwotCi0gICAgV1RGOjpSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShj
b250ZW50cywgY29udGVudHNTaXplKTsKLSAgICBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSBzdWJz
dGl0dXRlRGF0YQotICAgICAgICAoYnVmZmVyLnJlbGVhc2UoKSwKLSAgICAgICAgV1RGOjpTdHJp
bmc6OmZyb21VVEY4KG1pbWVUeXBlKSwKLSAgICAgICAgV1RGOjpTdHJpbmc6OmZyb21VVEY4KGVu
Y29kaW5nKSwKLSAgICAgICAgYmFzZUtVUkwsIHVucmVhY2hhYmxlS1VSTCk7Ci0gICAgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QoYmFzZUtVUkwpOwotCi0gICAgc21hcnREYXRhLT5m
cmFtZS0+bG9hZGVyKCkubG9hZChXZWJDb3JlOjpGcmFtZUxvYWRSZXF1ZXN0KHNtYXJ0RGF0YS0+
ZnJhbWUsIHJlcXVlc3QsIHN1YnN0aXR1dGVEYXRhKSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0K
LUVpbmFfQm9vbCBld2tfZnJhbWVfY29udGVudHNfc2V0KEV2YXNfT2JqZWN0KiBld2tGcmFtZSwg
Y29uc3QgY2hhciogY29udGVudHMsIHNpemVfdCBjb250ZW50c1NpemUsIGNvbnN0IGNoYXIqIG1p
bWVUeXBlLCBjb25zdCBjaGFyKiBlbmNvZGluZywgY29uc3QgY2hhciogYmFzZVVyaSkKLXsKLSAg
ICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihld2tGcmFtZSwgc21hcnREYXRhLCBmYWxzZSk7
Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+ZnJhbWUsIGZh
bHNlKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoY29udGVudHMsIGZhbHNl
KTsKLSAgICByZXR1cm4gX2V3a19mcmFtZV9jb250ZW50c19zZXRfaW50ZXJuYWwKLSAgICAgICAg
ICAgICAgIChzbWFydERhdGEsIGNvbnRlbnRzLCBjb250ZW50c1NpemUsIG1pbWVUeXBlLCBlbmNv
ZGluZywgYmFzZVVyaSwgMCk7Ci19Ci0KLUVpbmFfQm9vbCBld2tfZnJhbWVfY29udGVudHNfYWx0
ZXJuYXRlX3NldChFdmFzX09iamVjdCogZXdrRnJhbWUsIGNvbnN0IGNoYXIqIGNvbnRlbnRzLCBz
aXplX3QgY29udGVudHNTaXplLCBjb25zdCBjaGFyKiBtaW1lVHlwZSwgY29uc3QgY2hhciogZW5j
b2RpbmcsIGNvbnN0IGNoYXIqIGJhc2VVcmksIGNvbnN0IGNoYXIqIHVucmVhY2hhYmxlVXJpKQot
ewotICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBzbWFydERhdGEsIGZh
bHNlKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5mcmFt
ZSwgZmFsc2UpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChjb250ZW50cywg
ZmFsc2UpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTCh1bnJlYWNoYWJsZVVy
aSwgZmFsc2UpOwotICAgIHJldHVybiBfZXdrX2ZyYW1lX2NvbnRlbnRzX3NldF9pbnRlcm5hbAot
ICAgICAgICAgICAgICAgKHNtYXJ0RGF0YSwgY29udGVudHMsIGNvbnRlbnRzU2l6ZSwgbWltZVR5
cGUsIGVuY29kaW5nLCBiYXNlVXJpLAotICAgICAgICAgICAgICAgdW5yZWFjaGFibGVVcmkpOwot
fQotCi1jb25zdCBjaGFyKiBld2tfZnJhbWVfc2NyaXB0X2V4ZWN1dGUoRXZhc19PYmplY3QqIGV3
a0ZyYW1lLCBjb25zdCBjaGFyKiBzY3JpcHQpCi17Ci0gICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9S
RVRVUk4oZXdrRnJhbWUsIHNtYXJ0RGF0YSwgMCk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9S
RVRVUk5fVkFMKHNtYXJ0RGF0YS0+ZnJhbWUsIDApOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExf
UkVUVVJOX1ZBTChzY3JpcHQsIDApOwotCi0gICAgV1RGOjpTdHJpbmcgcmVzdWx0U3RyaW5nOwot
ICAgIEpTQzo6SlNWYWx1ZSByZXN1bHQgPSBzbWFydERhdGEtPmZyYW1lLT5zY3JpcHQoKS5leGVj
dXRlU2NyaXB0KFdURjo6U3RyaW5nOjpmcm9tVVRGOChzY3JpcHQpLCB0cnVlKS5qc1ZhbHVlKCk7
Ci0KLSAgICBpZiAoIXNtYXJ0RGF0YS0+ZnJhbWUpIC8vIEluIGNhc2UgdGhlIHNjcmlwdCByZW1v
dmVkIG91ciBmcmFtZSBmcm9tIHRoZSBwYWdlLgotICAgICAgICByZXR1cm4gMDsKLQotICAgIGlm
ICghcmVzdWx0IHx8ICghcmVzdWx0LmlzQm9vbGVhbigpICYmICFyZXN1bHQuaXNTdHJpbmcoKSAm
JiAhcmVzdWx0LmlzTnVtYmVyKCkpKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIEpTQzo6RXhl
Y1N0YXRlKiBleGVjID0gc21hcnREYXRhLT5mcmFtZS0+c2NyaXB0KCkuZ2xvYmFsT2JqZWN0KFdl
YkNvcmU6Om1haW5UaHJlYWROb3JtYWxXb3JsZCgpKS0+Z2xvYmFsRXhlYygpOwotICAgIEpTQzo6
SlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7Ci0gICAgcmVzdWx0U3RyaW5nID0gcmVzdWx0LnRvU3Ry
aW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKLSAgICByZXR1cm4gZWluYV9zdHJpbmdzaGFyZV9hZGQo
cmVzdWx0U3RyaW5nLnV0ZjgoKS5kYXRhKCkpOwotfQotCi1FaW5hX0Jvb2wgZXdrX2ZyYW1lX2Vk
aXRhYmxlX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrRnJhbWUpCi17Ci0gICAgRVdLX0ZSQU1F
X1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0RGF0YSwgZmFsc2UpOwotICAgIEVJTkFf
U0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEtPmZyYW1lLCBmYWxzZSk7Ci0gICAg
cmV0dXJuIHNtYXJ0RGF0YS0+ZWRpdGFibGU7Ci19Ci0KLUVpbmFfQm9vbCBld2tfZnJhbWVfZWRp
dGFibGVfc2V0KEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgRWluYV9Cb29sIGVkaXRhYmxlKQotewot
ICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBzbWFydERhdGEsIGZhbHNl
KTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5mcmFtZSwg
ZmFsc2UpOwotICAgIGVkaXRhYmxlID0gISFlZGl0YWJsZTsKLSAgICBpZiAoc21hcnREYXRhLT5l
ZGl0YWJsZSA9PSBlZGl0YWJsZSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgc21hcnREYXRh
LT5lZGl0YWJsZSA9IGVkaXRhYmxlOwotICAgIGlmIChlZGl0YWJsZSkKLSAgICAgICAgc21hcnRE
YXRhLT5mcmFtZS0+ZWRpdG9yKCkuYXBwbHlFZGl0aW5nU3R5bGVUb0JvZHlFbGVtZW50KCk7Ci0g
ICAgcmV0dXJuIHRydWU7Ci19Ci0KLWNvbnN0IGNoYXIqIGV3a19mcmFtZV9zZWxlY3Rpb25fZ2V0
KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tGcmFtZSkKLXsKLSAgICBFV0tfRlJBTUVfU0RfR0VUX09S
X1JFVFVSTihld2tGcmFtZSwgc21hcnREYXRhLCAwKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxM
X1JFVFVSTl9WQUwoc21hcnREYXRhLT5mcmFtZSwgMCk7Ci0gICAgV1RGOjpDU3RyaW5nIHNlbGVj
dGVkVGV4dCA9IHNtYXJ0RGF0YS0+ZnJhbWUtPmVkaXRvcigpLnNlbGVjdGVkVGV4dCgpLnV0Zjgo
KTsKLSAgICBpZiAoc2VsZWN0ZWRUZXh0LmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gMDsKLSAg
ICByZXR1cm4gZWluYV9zdHJpbmdzaGFyZV9hZGQoc2VsZWN0ZWRUZXh0LmRhdGEoKSk7Ci19Ci0K
LUVpbmFfQm9vbCBld2tfZnJhbWVfdGV4dF9zZWFyY2goY29uc3QgRXZhc19PYmplY3QqIGV3a0Zy
YW1lLCBjb25zdCBjaGFyKiB0ZXh0LCBFaW5hX0Jvb2wgY2FzZVNlbnNpdGl2ZSwgRWluYV9Cb29s
IGZvcndhcmQsIEVpbmFfQm9vbCB3cmFwKQotewotICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVU
VVJOKGV3a0ZyYW1lLCBzbWFydERhdGEsIGZhbHNlKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxM
X1JFVFVSTl9WQUwoc21hcnREYXRhLT5mcmFtZSwgZmFsc2UpOwotICAgIEVJTkFfU0FGRVRZX09O
X05VTExfUkVUVVJOX1ZBTCh0ZXh0LCBmYWxzZSk7Ci0KLSAgICBXZWJDb3JlOjpGaW5kT3B0aW9u
cyBvcHRpb25zID0gKGNhc2VTZW5zaXRpdmUgPyAwIDogV2ViQ29yZTo6Q2FzZUluc2Vuc2l0aXZl
KSB8IChmb3J3YXJkID8gMCA6IFdlYkNvcmU6OkJhY2t3YXJkcykgfCAod3JhcCA/IFdlYkNvcmU6
OldyYXBBcm91bmQgOiAwKSB8IFdlYkNvcmU6OlN0YXJ0SW5TZWxlY3Rpb247Ci0gICAgcmV0dXJu
IHNtYXJ0RGF0YS0+ZnJhbWUtPmVkaXRvcigpLmZpbmRTdHJpbmcoV1RGOjpTdHJpbmc6OmZyb21V
VEY4KHRleHQpLCBvcHRpb25zKTsKLX0KLQotdW5zaWduZWQgaW50IGV3a19mcmFtZV90ZXh0X21h
dGNoZXNfbWFyayhFdmFzX09iamVjdCogZXdrRnJhbWUsIGNvbnN0IGNoYXIqIHN0cmluZywgRWlu
YV9Cb29sIGNhc2VTZW5zaXRpdmUsIEVpbmFfQm9vbCBoaWdobGlnaHQsIHVuc2lnbmVkIGludCBs
aW1pdCkKLXsKLSAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihld2tGcmFtZSwgc21hcnRE
YXRhLCAwKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5m
cmFtZSwgMCk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHN0cmluZywgMCk7
Ci0KLSAgICBzbWFydERhdGEtPmZyYW1lLT5lZGl0b3IoKS5zZXRNYXJrZWRUZXh0TWF0Y2hlc0Fy
ZUhpZ2hsaWdodGVkKGhpZ2hsaWdodCk7Ci0gICAgcmV0dXJuIHNtYXJ0RGF0YS0+ZnJhbWUtPmVk
aXRvcigpLmNvdW50TWF0Y2hlc0ZvclRleHQoV1RGOjpTdHJpbmc6OmZyb21VVEY4KHN0cmluZyks
IDAsIGNhc2VTZW5zaXRpdmUsIGxpbWl0LCB0cnVlLCAwKTsKLX0KLQotRWluYV9Cb29sIGV3a19m
cmFtZV90ZXh0X21hdGNoZXNfdW5tYXJrX2FsbChFdmFzX09iamVjdCogZXdrRnJhbWUpCi17Ci0g
ICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0RGF0YSwgZmFsc2Up
OwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEtPmZyYW1lLCBm
YWxzZSk7Ci0KLSAgICBzbWFydERhdGEtPmZyYW1lLT5kb2N1bWVudCgpLT5tYXJrZXJzKCkucmVt
b3ZlTWFya2VycyhXZWJDb3JlOjpEb2N1bWVudE1hcmtlcjo6VGV4dE1hdGNoKTsKLSAgICByZXR1
cm4gdHJ1ZTsKLX0KLQotRWluYV9Cb29sIGV3a19mcmFtZV90ZXh0X21hdGNoZXNfaGlnaGxpZ2h0
X3NldChFdmFzX09iamVjdCogZXdrRnJhbWUsIEVpbmFfQm9vbCBoaWdobGlnaHQpCi17Ci0gICAg
RVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0RGF0YSwgZmFsc2UpOwot
ICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEtPmZyYW1lLCBmYWxz
ZSk7Ci0gICAgc21hcnREYXRhLT5mcmFtZS0+ZWRpdG9yKCkuc2V0TWFya2VkVGV4dE1hdGNoZXNB
cmVIaWdobGlnaHRlZChoaWdobGlnaHQpOwotICAgIHJldHVybiB0cnVlOwotfQotCi1FaW5hX0Jv
b2wgZXdrX2ZyYW1lX3RleHRfbWF0Y2hlc19oaWdobGlnaHRfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0
KiBld2tGcmFtZSkKLXsKLSAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihld2tGcmFtZSwg
c21hcnREYXRhLCBmYWxzZSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNt
YXJ0RGF0YS0+ZnJhbWUsIGZhbHNlKTsKLSAgICByZXR1cm4gc21hcnREYXRhLT5mcmFtZS0+ZWRp
dG9yKCkubWFya2VkVGV4dE1hdGNoZXNBcmVIaWdobGlnaHRlZCgpOwotfQotCi0vKioKLSAqIENv
bXBhcmlzb24gZnVuY3Rpb24gdXNlZCBieSBld2tfZnJhbWVfdGV4dF9tYXRjaGVzX250aF9wb3Nf
Z2V0Ci0gKi8KLXN0YXRpYyBib29sIF9ld2tfZnJhbWVfcmVjdF9jbXBfbGVzc190aGFuKGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmIGJlZ2luLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBlbmQpCi17
Ci0gICAgcmV0dXJuIChiZWdpbi55KCkgPCBlbmQueSgpIHx8IChiZWdpbi55KCkgPT0gZW5kLnko
KSAmJiBiZWdpbi54KCkgPCBlbmQueCgpKSk7Ci19Ci0KLS8qKgotICogUHJlZGljYXRlIHVzZWQg
YnkgZXdrX2ZyYW1lX3RleHRfbWF0Y2hlc19udGhfcG9zX2dldAotICovCi1zdGF0aWMgYm9vbCBf
ZXdrX2ZyYW1lX3JlY3RfaXNfbmVnYXRpdmVfdmFsdWUoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYg
cmVjdCkKLXsKLSAgICByZXR1cm4gKHJlY3QueCgpIDwgMCB8fCByZWN0LnkoKSA8IDApOwotfQot
Ci1FaW5hX0Jvb2wgZXdrX2ZyYW1lX3RleHRfbWF0Y2hlc19udGhfcG9zX2dldChjb25zdCBFdmFz
X09iamVjdCogZXdrRnJhbWUsIHNpemVfdCBudW1iZXIsIGludCogeCwgaW50KiB5KQotewotICAg
IEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBzbWFydERhdGEsIGZhbHNlKTsK
LSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5mcmFtZSwgZmFs
c2UpOwotCi0gICAgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+IGludFJlY3RzID0gc21hcnREYXRh
LT5mcmFtZS0+ZG9jdW1lbnQoKS0+bWFya2VycygpLnJlbmRlcmVkUmVjdHNGb3JNYXJrZXJzKFdl
YkNvcmU6OkRvY3VtZW50TWFya2VyOjpUZXh0TWF0Y2gpOwotCi0gICAgLyogcmVtb3ZlIHVzZWxl
c3MgdmFsdWVzICovCi0gICAgc3RkOjpyZW1vdmVfaWYoaW50UmVjdHMuYmVnaW4oKSwgaW50UmVj
dHMuZW5kKCksIF9ld2tfZnJhbWVfcmVjdF9pc19uZWdhdGl2ZV92YWx1ZSk7Ci0KLSAgICBpZiAo
aW50UmVjdHMuaXNFbXB0eSgpIHx8IG51bWJlciA+IGludFJlY3RzLnNpemUoKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgc3RkOjpzb3J0KGludFJlY3RzLmJlZ2luKCksIGludFJlY3Rz
LmVuZCgpLCBfZXdrX2ZyYW1lX3JlY3RfY21wX2xlc3NfdGhhbik7Ci0KLSAgICBpZiAoeCkKLSAg
ICAgICAgKnggPSBpbnRSZWN0c1tudW1iZXIgLSAxXS54KCk7Ci0gICAgaWYgKHkpCi0gICAgICAg
ICp5ID0gaW50UmVjdHNbbnVtYmVyIC0gMV0ueSgpOwotICAgIHJldHVybiB0cnVlOwotfQotCi1F
aW5hX0Jvb2wgZXdrX2ZyYW1lX3N0b3AoRXZhc19PYmplY3QqIGV3a0ZyYW1lKQotewotICAgIEVX
S19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBzbWFydERhdGEsIGZhbHNlKTsKLSAg
ICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5mcmFtZSwgZmFsc2Up
OwotICAgIHNtYXJ0RGF0YS0+ZnJhbWUtPmxvYWRlcigpLnN0b3BBbGxMb2FkZXJzKCk7Ci0gICAg
cmV0dXJuIHRydWU7Ci19Ci0KLUVpbmFfQm9vbCBld2tfZnJhbWVfcmVsb2FkKEV2YXNfT2JqZWN0
KiBld2tGcmFtZSkKLXsKLSAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihld2tGcmFtZSwg
c21hcnREYXRhLCBmYWxzZSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNt
YXJ0RGF0YS0+ZnJhbWUsIGZhbHNlKTsKLSAgICBzbWFydERhdGEtPmZyYW1lLT5sb2FkZXIoKS5y
ZWxvYWQoKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotRWluYV9Cb29sIGV3a19mcmFtZV9yZWxv
YWRfZnVsbChFdmFzX09iamVjdCogZXdrRnJhbWUpCi17Ci0gICAgRVdLX0ZSQU1FX1NEX0dFVF9P
Ul9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0RGF0YSwgZmFsc2UpOwotICAgIEVJTkFfU0FGRVRZX09O
X05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEtPmZyYW1lLCBmYWxzZSk7Ci0gICAgc21hcnREYXRh
LT5mcmFtZS0+bG9hZGVyKCkucmVsb2FkKHRydWUpOwotICAgIHJldHVybiB0cnVlOwotfQotCi1F
aW5hX0Jvb2wgZXdrX2ZyYW1lX2JhY2soRXZhc19PYmplY3QqIGV3a0ZyYW1lKQotewotICAgIHJl
dHVybiBld2tfZnJhbWVfbmF2aWdhdGUoZXdrRnJhbWUsIC0xKTsKLX0KLQotRWluYV9Cb29sIGV3
a19mcmFtZV9mb3J3YXJkKEV2YXNfT2JqZWN0KiBld2tGcmFtZSkKLXsKLSAgICByZXR1cm4gZXdr
X2ZyYW1lX25hdmlnYXRlKGV3a0ZyYW1lLCAxKTsKLX0KLQotRWluYV9Cb29sIGV3a19mcmFtZV9u
YXZpZ2F0ZShFdmFzX09iamVjdCogZXdrRnJhbWUsIGludCBzdGVwcykKLXsKLSAgICBFV0tfRlJB
TUVfU0RfR0VUX09SX1JFVFVSTihld2tGcmFtZSwgc21hcnREYXRhLCBmYWxzZSk7Ci0gICAgRUlO
QV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+ZnJhbWUsIGZhbHNlKTsKLSAg
ICBXZWJDb3JlOjpQYWdlKiBwYWdlID0gc21hcnREYXRhLT5mcmFtZS0+cGFnZSgpOwotICAgIGlm
ICghcGFnZS0+YmFja0ZvcndhcmQoKS5jYW5Hb0JhY2tPckZvcndhcmQoc3RlcHMpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgcGFnZS0+YmFja0ZvcndhcmQoKS5nb0JhY2tPckZvcndhcmQo
c3RlcHMpOwotICAgIHJldHVybiB0cnVlOwotfQotCi1FaW5hX0Jvb2wgZXdrX2ZyYW1lX2JhY2tf
cG9zc2libGUoRXZhc19PYmplY3QqIGV3a0ZyYW1lKQotewotICAgIHJldHVybiBld2tfZnJhbWVf
bmF2aWdhdGVfcG9zc2libGUoZXdrRnJhbWUsIC0xKTsKLX0KLQotRWluYV9Cb29sIGV3a19mcmFt
ZV9mb3J3YXJkX3Bvc3NpYmxlKEV2YXNfT2JqZWN0KiBld2tGcmFtZSkKLXsKLSAgICByZXR1cm4g
ZXdrX2ZyYW1lX25hdmlnYXRlX3Bvc3NpYmxlKGV3a0ZyYW1lLCAxKTsKLX0KLQotRWluYV9Cb29s
IGV3a19mcmFtZV9uYXZpZ2F0ZV9wb3NzaWJsZShFdmFzX09iamVjdCogZXdrRnJhbWUsIGludCBz
dGVwcykKLXsKLSAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihld2tGcmFtZSwgc21hcnRE
YXRhLCBmYWxzZSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0
YS0+ZnJhbWUsIGZhbHNlKTsKLSAgICBXZWJDb3JlOjpQYWdlKiBwYWdlID0gc21hcnREYXRhLT5m
cmFtZS0+cGFnZSgpOwotICAgIHJldHVybiBwYWdlLT5iYWNrRm9yd2FyZCgpLmNhbkdvQmFja09y
Rm9yd2FyZChzdGVwcyk7Ci19Ci0KLWZsb2F0IGV3a19mcmFtZV9wYWdlX3pvb21fZ2V0KGNvbnN0
IEV2YXNfT2JqZWN0KiBld2tGcmFtZSkKLXsKLSAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVS
Tihld2tGcmFtZSwgc21hcnREYXRhLCAtMS4wKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JF
VFVSTl9WQUwoc21hcnREYXRhLT5mcmFtZSwgLTEuMCk7Ci0gICAgcmV0dXJuIHNtYXJ0RGF0YS0+
ZnJhbWUtPnBhZ2Vab29tRmFjdG9yKCk7Ci19Ci0KLUVpbmFfQm9vbCBld2tfZnJhbWVfcGFnZV96
b29tX3NldChFdmFzX09iamVjdCogZXdrRnJhbWUsIGZsb2F0IHBhZ2Vab29tRmFjdG9yKQotewot
ICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBzbWFydERhdGEsIGZhbHNl
KTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5mcmFtZSwg
ZmFsc2UpOwotICAgIHNtYXJ0RGF0YS0+ZnJhbWUtPnNldFBhZ2Vab29tRmFjdG9yKHBhZ2Vab29t
RmFjdG9yKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotZmxvYXQgZXdrX2ZyYW1lX3RleHRfem9v
bV9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a0ZyYW1lKQotewotICAgIEVXS19GUkFNRV9TRF9H
RVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBzbWFydERhdGEsIC0xLjApOwotICAgIEVJTkFfU0FGRVRZ
X09OX05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEtPmZyYW1lLCAtMS4wKTsKLSAgICByZXR1cm4g
c21hcnREYXRhLT5mcmFtZS0+dGV4dFpvb21GYWN0b3IoKTsKLX0KLQotRWluYV9Cb29sIGV3a19m
cmFtZV90ZXh0X3pvb21fc2V0KEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgZmxvYXQgdGV4dFpvb21G
YWN0b3IpCi17Ci0gICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0
RGF0YSwgZmFsc2UpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERh
dGEtPmZyYW1lLCBmYWxzZSk7Ci0gICAgc21hcnREYXRhLT5mcmFtZS0+c2V0VGV4dFpvb21GYWN0
b3IodGV4dFpvb21GYWN0b3IpOwotICAgIHJldHVybiB0cnVlOwotfQotCi12b2lkIGV3a19mcmFt
ZV9oaXRfdGVzdF9mcmVlKEV3a19IaXRfVGVzdCogaGl0VGVzdCkKLXsKLSAgICBFSU5BX1NBRkVU
WV9PTl9OVUxMX1JFVFVSTihoaXRUZXN0KTsKLSAgICBlaW5hX3N0cmluZ3NoYXJlX2RlbChoaXRU
ZXN0LT50aXRsZS5zdHJpbmcpOwotICAgIGVpbmFfc3RyaW5nc2hhcmVfZGVsKGhpdFRlc3QtPmFs
dGVybmF0ZV90ZXh0KTsKLSAgICBlaW5hX3N0cmluZ3NoYXJlX2RlbChoaXRUZXN0LT5saW5rLnRl
eHQpOwotICAgIGVpbmFfc3RyaW5nc2hhcmVfZGVsKGhpdFRlc3QtPmxpbmsudXJsKTsKLSAgICBl
aW5hX3N0cmluZ3NoYXJlX2RlbChoaXRUZXN0LT5saW5rLnRpdGxlKTsKLSAgICBlaW5hX3N0cmlu
Z3NoYXJlX2RlbChoaXRUZXN0LT5pbWFnZV91cmkpOwotICAgIGVpbmFfc3RyaW5nc2hhcmVfZGVs
KGhpdFRlc3QtPm1lZGlhX3VyaSk7Ci0gICAgZGVsZXRlIGhpdFRlc3Q7Ci19Ci0KLUV3a19IaXRf
VGVzdCogZXdrX2ZyYW1lX2hpdF90ZXN0X25ldyhjb25zdCBFdmFzX09iamVjdCogZXdrRnJhbWUs
IGludCB4LCBpbnQgeSkKLXsKLSAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihld2tGcmFt
ZSwgc21hcnREYXRhLCAwKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21h
cnREYXRhLT5mcmFtZSwgMCk7Ci0KLSAgICBXZWJDb3JlOjpGcmFtZVZpZXcqIHZpZXcgPSBzbWFy
dERhdGEtPmZyYW1lLT52aWV3KCk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFM
KHZpZXcsIDApOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEt
PmZyYW1lLT5jb250ZW50UmVuZGVyZXIoKSwgMCk7Ci0KLSAgICBXZWJDb3JlOjpIaXRUZXN0UmVz
dWx0IHJlc3VsdCA9IHNtYXJ0RGF0YS0+ZnJhbWUtPmV2ZW50SGFuZGxlcigpLmhpdFRlc3RSZXN1
bHRBdFBvaW50Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZpZXct
PndpbmRvd1RvQ29udGVudHMoV2ViQ29yZTo6SW50UG9pbnQoeCwgeSkpLCAKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJDb3JlOjpIaXRUZXN0UmVxdWVzdDo6UmVh
ZE9ubHkgfCBXZWJDb3JlOjpIaXRUZXN0UmVxdWVzdDo6QWN0aXZlIHwgV2ViQ29yZTo6SGl0VGVz
dFJlcXVlc3Q6Oklnbm9yZUNsaXBwaW5nIHwgV2ViQ29yZTo6SGl0VGVzdFJlcXVlc3Q6OkRpc2Fs
bG93U2hhZG93Q29udGVudCk7Ci0KLSAgICBpZiAocmVzdWx0LnNjcm9sbGJhcigpKQotICAgICAg
ICByZXR1cm4gMDsKLSAgICBpZiAoIXJlc3VsdC5pbm5lck5vZGUoKSkKLSAgICAgICAgcmV0dXJu
IDA7Ci0KLSAgICBFd2tfSGl0X1Rlc3QqIGhpdFRlc3QgPSBuZXcgRXdrX0hpdF9UZXN0OwotICAg
IC8vIEZJWE1FOiBUaGlzIHNob3VsZCBwcm9iYWJseSB1c2UgcG9pbnRJbk1haW5GcmFtZSwgaWYg
aXQgaXMgdG8gbWF0Y2ggdGhlIGRvY3VtZW50YXRpb24gb2YgZXdrX2hpdF90ZXN0LgotICAgIGhp
dFRlc3QtPnggPSByZXN1bHQucG9pbnRJbklubmVyTm9kZUZyYW1lKCkueCgpOwotICAgIGhpdFRl
c3QtPnkgPSByZXN1bHQucG9pbnRJbklubmVyTm9kZUZyYW1lKCkueSgpOwotI2lmIDAKLSAgICAv
LyBGSVhNRQotICAgIGhpdFRlc3QtPmJvdW5kaW5nX2JveC54ID0gcmVzdWx0LmJvdW5kaW5nQm94
KCkueCgpOwotICAgIGhpdFRlc3QtPmJvdW5kaW5nX2JveC55ID0gcmVzdWx0LmJvdW5kaW5nQm94
KCkueSgpOwotICAgIGhpdFRlc3QtPmJvdW5kaW5nX2JveC53aWR0aCA9IHJlc3VsdC5ib3VuZGlu
Z0JveCgpLndpZHRoKCk7Ci0gICAgaGl0VGVzdC0+Ym91bmRpbmdfYm94LmhlaWdodCA9IHJlc3Vs
dC5ib3VuZGluZ0JveCgpLmhlaWdodCgpOwotI2Vsc2UKLSAgICBoaXRUZXN0LT5ib3VuZGluZ19i
b3gueCA9IDA7Ci0gICAgaGl0VGVzdC0+Ym91bmRpbmdfYm94LnkgPSAwOwotICAgIGhpdFRlc3Qt
PmJvdW5kaW5nX2JveC53ID0gMDsKLSAgICBoaXRUZXN0LT5ib3VuZGluZ19ib3guaCA9IDA7Ci0j
ZW5kaWYKLQotICAgIFdlYkNvcmU6OlRleHREaXJlY3Rpb24gZGlyZWN0aW9uOwotICAgIGhpdFRl
c3QtPnRpdGxlLnN0cmluZyA9IGVpbmFfc3RyaW5nc2hhcmVfYWRkKHJlc3VsdC50aXRsZShkaXJl
Y3Rpb24pLnV0ZjgoKS5kYXRhKCkpOwotICAgIGhpdFRlc3QtPnRpdGxlLmRpcmVjdGlvbiA9IChk
aXJlY3Rpb24gPT0gV2ViQ29yZTo6TFRSKSA/IEVXS19URVhUX0RJUkVDVElPTl9MRUZUX1RPX1JJ
R0hUIDogRVdLX1RFWFRfRElSRUNUSU9OX1JJR0hUX1RPX0xFRlQ7Ci0gICAgaGl0VGVzdC0+YWx0
ZXJuYXRlX3RleHQgPSBlaW5hX3N0cmluZ3NoYXJlX2FkZChyZXN1bHQuYWx0RGlzcGxheVN0cmlu
ZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgIGlmIChyZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCkK
LSAgICAgICAgJiYgcmVzdWx0LmlubmVyTm9uU2hhcmVkTm9kZSgpLT5kb2N1bWVudCgpLmZyYW1l
KCkpCi0gICAgICAgIGhpdFRlc3QtPmZyYW1lID0gRVdLUHJpdmF0ZTo6a2l0RnJhbWUocmVzdWx0
LmlubmVyTm9uU2hhcmVkTm9kZSgpLT5kb2N1bWVudCgpLmZyYW1lKCkpOwotCi0gICAgaGl0VGVz
dC0+bGluay50ZXh0ID0gZWluYV9zdHJpbmdzaGFyZV9hZGQocmVzdWx0LnRleHRDb250ZW50KCku
dXRmOCgpLmRhdGEoKSk7Ci0gICAgaGl0VGVzdC0+bGluay51cmwgPSBlaW5hX3N0cmluZ3NoYXJl
X2FkZChyZXN1bHQuYWJzb2x1dGVMaW5rVVJMKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0g
ICAgaGl0VGVzdC0+bGluay50aXRsZSA9IGVpbmFfc3RyaW5nc2hhcmVfYWRkKHJlc3VsdC50aXRs
ZURpc3BsYXlTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAgICBoaXRUZXN0LT5saW5rLnRhcmdl
dF9mcmFtZSA9IEVXS1ByaXZhdGU6OmtpdEZyYW1lKHJlc3VsdC50YXJnZXRGcmFtZSgpKTsKLQot
ICAgIGhpdFRlc3QtPmltYWdlX3VyaSA9IGVpbmFfc3RyaW5nc2hhcmVfYWRkKHJlc3VsdC5hYnNv
bHV0ZUltYWdlVVJMKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgaGl0VGVzdC0+bWVk
aWFfdXJpID0gZWluYV9zdHJpbmdzaGFyZV9hZGQocmVzdWx0LmFic29sdXRlTWVkaWFVUkwoKS5z
dHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLQotICAgIGludCBjb250ZXh0ID0gRVdLX0hJVF9URVNU
X1JFU1VMVF9DT05URVhUX0RPQ1VNRU5UOwotCi0gICAgaWYgKCFyZXN1bHQuYWJzb2x1dGVMaW5r
VVJMKCkuaXNFbXB0eSgpKQotICAgICAgICBjb250ZXh0IHw9IEVXS19ISVRfVEVTVF9SRVNVTFRf
Q09OVEVYVF9MSU5LOwotICAgIGlmICghcmVzdWx0LmFic29sdXRlSW1hZ2VVUkwoKS5pc0VtcHR5
KCkpCi0gICAgICAgIGNvbnRleHQgfD0gRVdLX0hJVF9URVNUX1JFU1VMVF9DT05URVhUX0lNQUdF
OwotICAgIGlmICghcmVzdWx0LmFic29sdXRlTWVkaWFVUkwoKS5pc0VtcHR5KCkpCi0gICAgICAg
IGNvbnRleHQgfD0gRVdLX0hJVF9URVNUX1JFU1VMVF9DT05URVhUX01FRElBOwotICAgIGlmIChy
ZXN1bHQuaXNTZWxlY3RlZCgpKQotICAgICAgICBjb250ZXh0IHw9IEVXS19ISVRfVEVTVF9SRVNV
TFRfQ09OVEVYVF9TRUxFQ1RJT047Ci0gICAgaWYgKHJlc3VsdC5pc0NvbnRlbnRFZGl0YWJsZSgp
KQotICAgICAgICBjb250ZXh0IHw9IEVXS19ISVRfVEVTVF9SRVNVTFRfQ09OVEVYVF9FRElUQUJM
RTsKLQotICAgIGhpdFRlc3QtPmNvbnRleHQgPSBzdGF0aWNfY2FzdDxFd2tfSGl0X1Rlc3RfUmVz
dWx0X0NvbnRleHQ+KGNvbnRleHQpOwotCi0gICAgcmV0dXJuIGhpdFRlc3Q7Ci19Ci0KLUVpbmFf
Qm9vbAotZXdrX2ZyYW1lX3Njcm9sbF9hZGQoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBpbnQgZGVs
dGFYLCBpbnQgZGVsdGFZKQotewotICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKGV3a0Zy
YW1lLCBzbWFydERhdGEsIGZhbHNlKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9W
QUwoc21hcnREYXRhLT5mcmFtZSwgZmFsc2UpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVU
VVJOX1ZBTChzbWFydERhdGEtPmZyYW1lLT52aWV3KCksIGZhbHNlKTsKLSAgICBzbWFydERhdGEt
PmZyYW1lLT52aWV3KCktPnNjcm9sbEJ5KFdlYkNvcmU6OkludFNpemUoZGVsdGFYLCBkZWx0YVkp
KTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotRWluYV9Cb29sCi1ld2tfZnJhbWVfc2Nyb2xsX3Nl
dChFdmFzX09iamVjdCogZXdrRnJhbWUsIGludCB4LCBpbnQgeSkKLXsKLSAgICBFV0tfRlJBTUVf
U0RfR0VUX09SX1JFVFVSTihld2tGcmFtZSwgc21hcnREYXRhLCBmYWxzZSk7Ci0gICAgRUlOQV9T
QUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+ZnJhbWUsIGZhbHNlKTsKLSAgICBF
SU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5mcmFtZS0+dmlldygpLCBm
YWxzZSk7Ci0gICAgc21hcnREYXRhLT5mcmFtZS0+dmlldygpLT5zZXRTY3JvbGxQb3NpdGlvbihX
ZWJDb3JlOjpJbnRQb2ludCh4LCB5KSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLUVpbmFfQm9v
bAotZXdrX2ZyYW1lX3Njcm9sbF9zaXplX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrRnJhbWUs
IGludCogd2lkdGgsIGludCogaGVpZ2h0KQotewotICAgIGlmICh3aWR0aCkKLSAgICAgICAgKndp
ZHRoID0gMDsKLSAgICBpZiAoaGVpZ2h0KQotICAgICAgICAqaGVpZ2h0ID0gMDsKLSAgICBFV0tf
RlJBTUVfU0RfR0VUX09SX1JFVFVSTihld2tGcmFtZSwgc21hcnREYXRhLCBmYWxzZSk7Ci0gICAg
RUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+ZnJhbWUsIGZhbHNlKTsK
LSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5mcmFtZS0+dmll
dygpLCBmYWxzZSk7Ci0gICAgV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQgPSBzbWFydERhdGEtPmZy
YW1lLT52aWV3KCktPm1heGltdW1TY3JvbGxQb3NpdGlvbigpOwotICAgIGlmICh3aWR0aCkKLSAg
ICAgICAgKndpZHRoID0gcG9pbnQueCgpOwotICAgIGlmIChoZWlnaHQpCi0gICAgICAgICpoZWln
aHQgPSBwb2ludC55KCk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLUVpbmFfQm9vbAotZXdrX2Zy
YW1lX3Njcm9sbF9wb3NfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgaW50KiB4LCBp
bnQqIHkpCi17Ci0gICAgaWYgKHgpCi0gICAgICAgICp4ID0gMDsKLSAgICBpZiAoeSkKLSAgICAg
ICAgKnkgPSAwOwotICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBzbWFy
dERhdGEsIGZhbHNlKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnRE
YXRhLT5mcmFtZSwgZmFsc2UpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChz
bWFydERhdGEtPmZyYW1lLT52aWV3KCksIGZhbHNlKTsKLSAgICBXZWJDb3JlOjpJbnRQb2ludCBw
b3MgPSBzbWFydERhdGEtPmZyYW1lLT52aWV3KCktPnNjcm9sbFBvc2l0aW9uKCk7Ci0gICAgaWYg
KHgpCi0gICAgICAgICp4ID0gcG9zLngoKTsKLSAgICBpZiAoeSkKLSAgICAgICAgKnkgPSBwb3Mu
eSgpOwotICAgIHJldHVybiB0cnVlOwotfQotCi1FaW5hX0Jvb2wgZXdrX2ZyYW1lX3Zpc2libGVf
Y29udGVudF9nZW9tZXRyeV9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBFaW5hX0Jv
b2wgaW5jbHVkZVNjcm9sbGJhcnMsIGludCogeCwgaW50KiB5LCBpbnQqIHdpZHRoLCBpbnQqIGhl
aWdodCkKLXsKLSAgICBpZiAoeCkKLSAgICAgICAgKnggPSAwOwotICAgIGlmICh5KQotICAgICAg
ICAqeSA9IDA7Ci0gICAgaWYgKHdpZHRoKQotICAgICAgICAqd2lkdGggPSAwOwotICAgIGlmICho
ZWlnaHQpCi0gICAgICAgICpoZWlnaHQgPSAwOwotICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVU
VVJOKGV3a0ZyYW1lLCBzbWFydERhdGEsIGZhbHNlKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxM
X1JFVFVSTl9WQUwoc21hcnREYXRhLT5mcmFtZSwgZmFsc2UpOwotICAgIEVJTkFfU0FGRVRZX09O
X05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEtPmZyYW1lLT52aWV3KCksIGZhbHNlKTsKLSAgICBX
ZWJDb3JlOjpJbnRSZWN0IHJlY3QgPSBpbmNsdWRlU2Nyb2xsYmFycyA/IHNtYXJ0RGF0YS0+ZnJh
bWUtPnZpZXcoKS0+dmlzaWJsZUNvbnRlbnRSZWN0SW5jbHVkaW5nU2Nyb2xsYmFycygpIDogc21h
cnREYXRhLT5mcmFtZS0+dmlldygpLT52aXNpYmxlQ29udGVudFJlY3QoKTsKLSAgICBpZiAoeCkK
LSAgICAgICAgKnggPSByZWN0LngoKTsKLSAgICBpZiAoeSkKLSAgICAgICAgKnkgPSByZWN0Lnko
KTsKLSAgICBpZiAod2lkdGgpCi0gICAgICAgICp3aWR0aCA9IHJlY3Qud2lkdGgoKTsKLSAgICBp
ZiAoaGVpZ2h0KQotICAgICAgICAqaGVpZ2h0ID0gcmVjdC5oZWlnaHQoKTsKLSAgICByZXR1cm4g
dHJ1ZTsKLX0KLQotRWluYV9Cb29sIGV3a19mcmFtZV9wYWludF9mdWxsX2dldChjb25zdCBFdmFz
X09iamVjdCogZXdrRnJhbWUpCi17Ci0gICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4oZXdr
RnJhbWUsIHNtYXJ0RGF0YSwgZmFsc2UpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJO
X1ZBTChzbWFydERhdGEtPmZyYW1lLCBmYWxzZSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9S
RVRVUk5fVkFMKHNtYXJ0RGF0YS0+ZnJhbWUtPnZpZXcoKSwgZmFsc2UpOwotICAgIHJldHVybiBz
bWFydERhdGEtPmZyYW1lLT52aWV3KCktPnBhaW50c0VudGlyZUNvbnRlbnRzKCk7Ci19Ci0KLXZv
aWQgZXdrX2ZyYW1lX3BhaW50X2Z1bGxfc2V0KEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgRWluYV9C
b29sIGZsYWcpCi17Ci0gICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNt
YXJ0RGF0YSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc21hcnREYXRhLT5mcmFt
ZSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc21hcnREYXRhLT5mcmFtZS0+dmll
dygpKTsKLSAgICBzbWFydERhdGEtPmZyYW1lLT52aWV3KCktPnNldFBhaW50c0VudGlyZUNvbnRl
bnRzKGZsYWcpOwotfQotCi1FaW5hX0Jvb2wgZXdrX2ZyYW1lX2ZlZWRfZm9jdXNfaW4oRXZhc19P
YmplY3QqIGV3a0ZyYW1lKQotewotICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKGV3a0Zy
YW1lLCBzbWFydERhdGEsIGZhbHNlKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9W
QUwoc21hcnREYXRhLT5mcmFtZSwgZmFsc2UpOwotICAgIHNtYXJ0RGF0YS0+ZnJhbWUtPnBhZ2Uo
KS0+Zm9jdXNDb250cm9sbGVyKCkuc2V0Rm9jdXNlZEZyYW1lKHNtYXJ0RGF0YS0+ZnJhbWUpOwot
ICAgIHJldHVybiB0cnVlOwotfQotCi1FaW5hX0Jvb2wgZXdrX2ZyYW1lX2ZlZWRfZm9jdXNfb3V0
KEV2YXNfT2JqZWN0KikKLXsKLSAgICAvLyBUT0RPOiB3aGF0IHRvIGRvIG9uIGZvY3VzIG91dD8K
LSAgICBFUlIoIndoYXQgdG8gZG8/Iik7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1FaW5hX0Jv
b2wgZXdrX2ZyYW1lX2ZvY3VzZWRfZWxlbWVudF9nZW9tZXRyeV9nZXQoY29uc3QgRXZhc19PYmpl
Y3QgKmV3a0ZyYW1lLCBpbnQgKngsIGludCAqeSwgaW50ICp3LCBpbnQgKmgpCi17Ci0gICAgRVdL
X0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0RGF0YSwgZmFsc2UpOwotICAg
IFdlYkNvcmU6OkRvY3VtZW50KiBkb2N1bWVudCA9IHNtYXJ0RGF0YS0+ZnJhbWUtPmRvY3VtZW50
KCk7Ci0gICAgaWYgKCFkb2N1bWVudCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIFdlYkNv
cmU6Ok5vZGUqIGZvY3VzZWROb2RlID0gZG9jdW1lbnQtPmZvY3VzZWRFbGVtZW50KCk7Ci0gICAg
aWYgKCFmb2N1c2VkTm9kZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIFdlYkNvcmU6Oklu
dFJlY3Qgbm9kZVJlY3QgPSBmb2N1c2VkTm9kZS0+cGl4ZWxTbmFwcGVkQm91bmRpbmdCb3goKTsK
LSAgICBpZiAoeCkKLSAgICAgICAgKnggPSBub2RlUmVjdC54KCk7Ci0gICAgaWYgKHkpCi0gICAg
ICAgICp5ID0gbm9kZVJlY3QueSgpOwotICAgIGlmICh3KQotICAgICAgICAqdyA9IG5vZGVSZWN0
LndpZHRoKCk7Ci0gICAgaWYgKGgpCi0gICAgICAgICpoID0gbm9kZVJlY3QuaGVpZ2h0KCk7Ci0g
ICAgcmV0dXJuIHRydWU7Ci19Ci0KLUVpbmFfQm9vbCBld2tfZnJhbWVfZmVlZF9tb3VzZV93aGVl
bChFdmFzX09iamVjdCogZXdrRnJhbWUsIGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfV2hlZWwqIHdo
ZWVsRXZlbnQpCi17Ci0gICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNt
YXJ0RGF0YSwgZmFsc2UpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFy
dERhdGEtPmZyYW1lLCBmYWxzZSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFM
KHdoZWVsRXZlbnQsIGZhbHNlKTsKLQotICAgIFdlYkNvcmU6OkZyYW1lVmlldyogdmlldyA9IHNt
YXJ0RGF0YS0+ZnJhbWUtPnZpZXcoKTsKLSAgICBEQkcoImV3a0ZyYW1lPSVwLCB2aWV3PSVwLCBk
aXJlY3Rpb249JWQsIHo9JWQsIHBvcz0lZCwlZCIsCi0gICAgICAgIGV3a0ZyYW1lLCB2aWV3LCB3
aGVlbEV2ZW50LT5kaXJlY3Rpb24sIHdoZWVsRXZlbnQtPnosIHdoZWVsRXZlbnQtPmNhbnZhcy54
LCB3aGVlbEV2ZW50LT5jYW52YXMueSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5f
VkFMKHZpZXcsIGZhbHNlKTsKLQotICAgIFdlYkNvcmU6OlBsYXRmb3JtV2hlZWxFdmVudCBldmVu
dCh3aGVlbEV2ZW50KTsKLSAgICByZXR1cm4gc21hcnREYXRhLT5mcmFtZS0+ZXZlbnRIYW5kbGVy
KCkuaGFuZGxlV2hlZWxFdmVudChldmVudCk7Ci19Ci0KLUVpbmFfQm9vbCBld2tfZnJhbWVfZmVl
ZF9tb3VzZV9kb3duKEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgY29uc3QgRXZhc19FdmVudF9Nb3Vz
ZV9Eb3duKiBkb3duRXZlbnQpCi17Ci0gICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4oZXdr
RnJhbWUsIHNtYXJ0RGF0YSwgZmFsc2UpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJO
X1ZBTChzbWFydERhdGEtPmZyYW1lLCBmYWxzZSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9S
RVRVUk5fVkFMKGRvd25FdmVudCwgZmFsc2UpOwotCi0gICAgV2ViQ29yZTo6RnJhbWVWaWV3KiB2
aWV3ID0gc21hcnREYXRhLT5mcmFtZS0+dmlldygpOwotICAgIERCRygiZXdrRnJhbWU9JXAsIHZp
ZXc9JXAsIGJ1dHRvbj0lZCwgcG9zPSVkLCVkIiwKLSAgICAgICAgZXdrRnJhbWUsIHZpZXcsIGRv
d25FdmVudC0+YnV0dG9uLCBkb3duRXZlbnQtPmNhbnZhcy54LCBkb3duRXZlbnQtPmNhbnZhcy55
KTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwodmlldywgZmFsc2UpOwotCi0g
ICAgRXZhc19Db29yZCB4LCB5OwotICAgIGV2YXNfb2JqZWN0X2dlb21ldHJ5X2dldChzbWFydERh
dGEtPnZpZXcsICZ4LCAmeSwgMCwgMCk7Ci0KLSAgICBXZWJDb3JlOjpQbGF0Zm9ybU1vdXNlRXZl
bnQgZXZlbnQoZG93bkV2ZW50LCBXZWJDb3JlOjpJbnRQb2ludCh4LCB5KSk7Ci0gICAgcmV0dXJu
IHNtYXJ0RGF0YS0+ZnJhbWUtPmV2ZW50SGFuZGxlcigpLmhhbmRsZU1vdXNlUHJlc3NFdmVudChl
dmVudCk7Ci19Ci0KLUVpbmFfQm9vbCBld2tfZnJhbWVfZmVlZF9tb3VzZV91cChFdmFzX09iamVj
dCogZXdrRnJhbWUsIGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfVXAqIHVwRXZlbnQpCi17Ci0gICAg
RVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0RGF0YSwgZmFsc2UpOwot
ICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEtPmZyYW1lLCBmYWxz
ZSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHVwRXZlbnQsIGZhbHNlKTsK
LQotICAgIFdlYkNvcmU6OkZyYW1lVmlldyogdmlldyA9IHNtYXJ0RGF0YS0+ZnJhbWUtPnZpZXco
KTsKLSAgICBEQkcoImV3a0ZyYW1lPSVwLCB2aWV3PSVwLCBidXR0b249JWQsIHBvcz0lZCwlZCIs
Ci0gICAgICAgIGV3a0ZyYW1lLCB2aWV3LCB1cEV2ZW50LT5idXR0b24sIHVwRXZlbnQtPmNhbnZh
cy54LCB1cEV2ZW50LT5jYW52YXMueSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5f
VkFMKHZpZXcsIGZhbHNlKTsKLQotICAgIEV2YXNfQ29vcmQgeCwgeTsKLSAgICBldmFzX29iamVj
dF9nZW9tZXRyeV9nZXQoc21hcnREYXRhLT52aWV3LCAmeCwgJnksIDAsIDApOwotCi0gICAgV2Vi
Q29yZTo6UGxhdGZvcm1Nb3VzZUV2ZW50IGV2ZW50KHVwRXZlbnQsIFdlYkNvcmU6OkludFBvaW50
KHgsIHkpKTsKLSAgICByZXR1cm4gc21hcnREYXRhLT5mcmFtZS0+ZXZlbnRIYW5kbGVyKCkuaGFu
ZGxlTW91c2VSZWxlYXNlRXZlbnQoZXZlbnQpOwotfQotCi1FaW5hX0Jvb2wgZXdrX2ZyYW1lX2Zl
ZWRfbW91c2VfbW92ZShFdmFzX09iamVjdCogZXdrRnJhbWUsIGNvbnN0IEV2YXNfRXZlbnRfTW91
c2VfTW92ZSogbW92ZUV2ZW50KQotewotICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKGV3
a0ZyYW1lLCBzbWFydERhdGEsIGZhbHNlKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVS
Tl9WQUwoc21hcnREYXRhLT5mcmFtZSwgZmFsc2UpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExf
UkVUVVJOX1ZBTChtb3ZlRXZlbnQsIGZhbHNlKTsKLQotICAgIFdlYkNvcmU6OkZyYW1lVmlldyog
dmlldyA9IHNtYXJ0RGF0YS0+ZnJhbWUtPnZpZXcoKTsKLSAgICBEQkcoImV3a0ZyYW1lPSVwLCB2
aWV3PSVwLCBwb3M6IG9sZD0lZCwlZCwgbmV3PSVkLCVkLCBidXR0b25zPSVkIiwKLSAgICAgICAg
ZXdrRnJhbWUsIHZpZXcsIG1vdmVFdmVudC0+Y3VyLmNhbnZhcy54LCBtb3ZlRXZlbnQtPmN1ci5j
YW52YXMueSwKLSAgICAgICAgbW92ZUV2ZW50LT5wcmV2LmNhbnZhcy54LCBtb3ZlRXZlbnQtPnBy
ZXYuY2FudmFzLnksIG1vdmVFdmVudC0+YnV0dG9ucyk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVM
TF9SRVRVUk5fVkFMKHZpZXcsIGZhbHNlKTsKLQotICAgIEV2YXNfQ29vcmQgeCwgeTsKLSAgICBl
dmFzX29iamVjdF9nZW9tZXRyeV9nZXQoc21hcnREYXRhLT52aWV3LCAmeCwgJnksIDAsIDApOwot
Ci0gICAgV2ViQ29yZTo6UGxhdGZvcm1Nb3VzZUV2ZW50IGV2ZW50KG1vdmVFdmVudCwgV2ViQ29y
ZTo6SW50UG9pbnQoeCwgeSkpOwotICAgIHJldHVybiBzbWFydERhdGEtPmZyYW1lLT5ldmVudEhh
bmRsZXIoKS5tb3VzZU1vdmVkKGV2ZW50KTsKLX0KLQotRWluYV9Cb29sIGV3a19mcmFtZV9mZWVk
X3RvdWNoX2V2ZW50KEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgRXdrX1RvdWNoX0V2ZW50X1R5cGUg
YWN0aW9uLCBFaW5hX0xpc3QqIHBvaW50cywgdW5zaWduZWQgbW9kaWZpZXJzKQotewotI2lmIEVO
QUJMRShUT1VDSF9FVkVOVFMpCi0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHBv
aW50cywgZmFsc2UpOwotICAgIEVXS19GUkFNRV9TRF9HRVQoZXdrRnJhbWUsIHNtYXJ0RGF0YSk7
Ci0KLSAgICBpZiAoIXNtYXJ0RGF0YSB8fCAhc21hcnREYXRhLT5mcmFtZSB8fCAhZXdrX3ZpZXdf
bmVlZF90b3VjaF9ldmVudHNfZ2V0KHNtYXJ0RGF0YS0+dmlldykpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgIEV2YXNfQ29vcmQgeCwgeTsKLSAgICBldmFzX29iamVjdF9nZW9tZXRyeV9n
ZXQoc21hcnREYXRhLT52aWV3LCAmeCwgJnksIDAsIDApOwotCi0gICAgcmV0dXJuIHNtYXJ0RGF0
YS0+ZnJhbWUtPmV2ZW50SGFuZGxlcigpLmhhbmRsZVRvdWNoRXZlbnQoRVdLUHJpdmF0ZTo6cGxh
dGZvcm1Ub3VjaEV2ZW50KHgsIHksIHBvaW50cywgYWN0aW9uLCBtb2RpZmllcnMpKTsKLSNlbHNl
Ci0gICAgVU5VU0VEX1BBUkFNKGV3a0ZyYW1lKTsKLSAgICBVTlVTRURfUEFSQU0oYWN0aW9uKTsK
LSAgICBVTlVTRURfUEFSQU0ocG9pbnRzKTsKLSAgICBVTlVTRURfUEFSQU0obW9kaWZpZXJzKTsK
LSAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYKLX0KLQotc3RhdGljIGlubGluZSBFaW5hX0Jvb2wg
X2V3a19mcmFtZV9oYW5kbGVfa2V5X3Njcm9sbGluZyhXZWJDb3JlOjpGcmFtZSogZnJhbWUsIGNv
bnN0IFdlYkNvcmU6OlBsYXRmb3JtS2V5Ym9hcmRFdmVudCYga2V5RXZlbnQpCi17Ci0gICAgV2Vi
Q29yZTo6U2Nyb2xsRGlyZWN0aW9uIGRpcmVjdGlvbjsKLSAgICBXZWJDb3JlOjpTY3JvbGxHcmFu
dWxhcml0eSBncmFudWxhcml0eTsKLQotICAgIGludCBrZXlDb2RlID0ga2V5RXZlbnQud2luZG93
c1ZpcnR1YWxLZXlDb2RlKCk7Ci0KLSAgICBzd2l0Y2ggKGtleUNvZGUpIHsKLSAgICBjYXNlIFZL
X1NQQUNFOgotICAgICAgICBncmFudWxhcml0eSA9IFdlYkNvcmU6OlNjcm9sbEJ5UGFnZTsKLSAg
ICAgICAgaWYgKGtleUV2ZW50LnNoaWZ0S2V5KCkpCi0gICAgICAgICAgICBkaXJlY3Rpb24gPSBX
ZWJDb3JlOjpTY3JvbGxVcDsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgZGlyZWN0aW9uID0g
V2ViQ29yZTo6U2Nyb2xsRG93bjsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBWS19ORVhUOgot
ICAgICAgICBncmFudWxhcml0eSA9IFdlYkNvcmU6OlNjcm9sbEJ5UGFnZTsKLSAgICAgICAgZGly
ZWN0aW9uID0gV2ViQ29yZTo6U2Nyb2xsRG93bjsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBW
S19QUklPUjoKLSAgICAgICAgZ3JhbnVsYXJpdHkgPSBXZWJDb3JlOjpTY3JvbGxCeVBhZ2U7Ci0g
ICAgICAgIGRpcmVjdGlvbiA9IFdlYkNvcmU6OlNjcm9sbFVwOwotICAgICAgICBicmVhazsKLSAg
ICBjYXNlIFZLX0hPTUU6Ci0gICAgICAgIGdyYW51bGFyaXR5ID0gV2ViQ29yZTo6U2Nyb2xsQnlE
b2N1bWVudDsKLSAgICAgICAgZGlyZWN0aW9uID0gV2ViQ29yZTo6U2Nyb2xsVXA7Ci0gICAgICAg
IGJyZWFrOwotICAgIGNhc2UgVktfRU5EOgotICAgICAgICBncmFudWxhcml0eSA9IFdlYkNvcmU6
OlNjcm9sbEJ5RG9jdW1lbnQ7Ci0gICAgICAgIGRpcmVjdGlvbiA9IFdlYkNvcmU6OlNjcm9sbERv
d247Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgVktfTEVGVDoKLSAgICAgICAgZ3JhbnVsYXJp
dHkgPSBXZWJDb3JlOjpTY3JvbGxCeUxpbmU7Ci0gICAgICAgIGRpcmVjdGlvbiA9IFdlYkNvcmU6
OlNjcm9sbExlZnQ7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgVktfUklHSFQ6Ci0gICAgICAg
IGdyYW51bGFyaXR5ID0gV2ViQ29yZTo6U2Nyb2xsQnlMaW5lOwotICAgICAgICBkaXJlY3Rpb24g
PSBXZWJDb3JlOjpTY3JvbGxSaWdodDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBWS19VUDoK
LSAgICAgICAgZGlyZWN0aW9uID0gV2ViQ29yZTo6U2Nyb2xsVXA7Ci0gICAgICAgIGlmIChrZXlF
dmVudC5jdHJsS2V5KCkpCi0gICAgICAgICAgICBncmFudWxhcml0eSA9IFdlYkNvcmU6OlNjcm9s
bEJ5RG9jdW1lbnQ7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGdyYW51bGFyaXR5ID0gV2Vi
Q29yZTo6U2Nyb2xsQnlMaW5lOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFZLX0RPV046Ci0g
ICAgICAgIGRpcmVjdGlvbiA9IFdlYkNvcmU6OlNjcm9sbERvd247Ci0gICAgICAgIGlmIChrZXlF
dmVudC5jdHJsS2V5KCkpCi0gICAgICAgICAgICBncmFudWxhcml0eSA9IFdlYkNvcmU6OlNjcm9s
bEJ5RG9jdW1lbnQ7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGdyYW51bGFyaXR5ID0gV2Vi
Q29yZTo6U2Nyb2xsQnlMaW5lOwotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgaWYgKGZyYW1lLT5ldmVudEhhbmRsZXIoKS5z
Y3JvbGxPdmVyZmxvdyhkaXJlY3Rpb24sIGdyYW51bGFyaXR5KSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotCi0gICAgZnJhbWUtPnZpZXcoKS0+c2Nyb2xsKGRpcmVjdGlvbiwgZ3JhbnVsYXJpdHkp
OwotICAgIHJldHVybiB0cnVlOwotfQotCi1FaW5hX0Jvb2wgZXdrX2ZyYW1lX2ZlZWRfa2V5X2Rv
d24oRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBjb25zdCBFdmFzX0V2ZW50X0tleV9Eb3duKiBkb3du
RXZlbnQpCi17Ci0gICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0
RGF0YSwgZmFsc2UpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERh
dGEtPmZyYW1lLCBmYWxzZSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGRv
d25FdmVudCwgZmFsc2UpOwotCi0gICAgREJHKCJld2tGcmFtZT0lcCBrZXluYW1lPSVzIChrZXk9
JXMsIHN0cmluZz0lcykiLAotICAgICAgICBld2tGcmFtZSwgZG93bkV2ZW50LT5rZXluYW1lLCBk
b3duRXZlbnQtPmtleSA/IGRvd25FdmVudC0+a2V5IDogIiIsIGRvd25FdmVudC0+c3RyaW5nID8g
ZG93bkV2ZW50LT5zdHJpbmcgOiAiIik7Ci0KLSAgICBXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJk
RXZlbnQgZXZlbnQoZG93bkV2ZW50KTsKLSAgICBpZiAoc21hcnREYXRhLT5mcmFtZS0+ZXZlbnRI
YW5kbGVyKCkua2V5RXZlbnQoZXZlbnQpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIHJl
dHVybiBfZXdrX2ZyYW1lX2hhbmRsZV9rZXlfc2Nyb2xsaW5nKHNtYXJ0RGF0YS0+ZnJhbWUsIGV2
ZW50KTsKLX0KLQotRWluYV9Cb29sIGV3a19mcmFtZV9mZWVkX2tleV91cChFdmFzX09iamVjdCog
ZXdrRnJhbWUsIGNvbnN0IEV2YXNfRXZlbnRfS2V5X1VwKiB1cEV2ZW50KQotewotICAgIEVXS19G
UkFNRV9TRF9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBzbWFydERhdGEsIGZhbHNlKTsKLSAgICBF
SU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5mcmFtZSwgZmFsc2UpOwot
ICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTCh1cEV2ZW50LCBmYWxzZSk7Ci0KLSAg
ICBEQkcoImV3a0ZyYW1lPSVwIGtleW5hbWU9JXMgKGtleT0lcywgc3RyaW5nPSVzKSIsCi0gICAg
ICAgIGV3a0ZyYW1lLCB1cEV2ZW50LT5rZXluYW1lLCB1cEV2ZW50LT5rZXkgPyB1cEV2ZW50LT5r
ZXkgOiAiIiwgdXBFdmVudC0+c3RyaW5nID8gdXBFdmVudC0+c3RyaW5nIDogIiIpOwotCi0gICAg
V2ViQ29yZTo6UGxhdGZvcm1LZXlib2FyZEV2ZW50IGV2ZW50KHVwRXZlbnQpOwotICAgIHJldHVy
biBzbWFydERhdGEtPmZyYW1lLT5ldmVudEhhbmRsZXIoKS5rZXlFdmVudChldmVudCk7Ci19Ci0K
LUV3a19UZXh0X1NlbGVjdGlvbl9UeXBlIGV3a19mcmFtZV90ZXh0X3NlbGVjdGlvbl90eXBlX2dl
dChjb25zdCBFdmFzX09iamVjdCogZXdrRnJhbWUpCi17Ci0gICAgRVdLX0ZSQU1FX1NEX0dFVF9P
Ul9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0RGF0YSwgRVdLX1RFWFRfU0VMRUNUSU9OX05PTkUpOwot
ICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEtPmZyYW1lLCBFV0tf
VEVYVF9TRUxFQ1RJT05fTk9ORSk7Ci0KLSAgICBjb25zdCBXZWJDb3JlOjpWaXNpYmxlU2VsZWN0
aW9uJiBzZWxlY3Rpb24gPSBzbWFydERhdGEtPmZyYW1lLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb24o
KTsKLQotICAgIHN3aXRjaCAoc2VsZWN0aW9uLnNlbGVjdGlvblR5cGUoKSkgewotICAgIGNhc2Ug
V2ViQ29yZTo6VmlzaWJsZVNlbGVjdGlvbjo6Tm9TZWxlY3Rpb246Ci0gICAgICAgIHJldHVybiBF
V0tfVEVYVF9TRUxFQ1RJT05fTk9ORTsKLSAgICBjYXNlIFdlYkNvcmU6OlZpc2libGVTZWxlY3Rp
b246OkNhcmV0U2VsZWN0aW9uOgotICAgICAgICByZXR1cm4gRVdLX1RFWFRfU0VMRUNUSU9OX0NB
UkVUOwotICAgIGNhc2UgV2ViQ29yZTo6VmlzaWJsZVNlbGVjdGlvbjo6UmFuZ2VTZWxlY3Rpb246
Ci0gICAgICAgIHJldHVybiBFV0tfVEVYVF9TRUxFQ1RJT05fUkFOR0U7Ci0gICAgfQotICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotCi0gICAgcmV0dXJuIEVXS19URVhUX1NFTEVDVElPTl9OT05F
OwotfQotCi0vKiBpbnRlcm5hbCBtZXRob2RzICoqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKiovCi0KLS8qKgotICogQGludGVybmFsCi0gKgotICogQ3Jl
YXRlcyBhIG5ldyBFRkwgV2ViS2l0IEZyYW1lIG9iamVjdC4KLSAqCi0gKiBGcmFtZXMgYXJlIGxv
dyBsZXZlbCBlbnRyaWVzIGNvbnRhaW5lZCBpbiBhIHBhZ2UgdGhhdCBpcyBjb250YWluZWQKLSAq
IGJ5IGEgdmlldy4gVXN1YWxseSBvbmUgb3BlcmF0ZXMgb24gdGhlIHZpZXcgYW5kIG5vdCBkaXJl
Y3RseSBvbiB0aGUKLSAqIGZyYW1lLgotICoKLSAqIEBwYXJhbSBjYW52YXMgY2FudmFzIHdoZXJl
IHRvIGNyZWF0ZSB0aGUgZnJhbWUgb2JqZWN0Ci0gKgotICogQHJldHVybiBhIG5ldyBmcmFtZSBv
YmplY3Qgb3IgQGMgMCBvbiBmYWlsdXJlCi0gKi8KLUV2YXNfT2JqZWN0KiBld2tfZnJhbWVfYWRk
KEV2YXMqIGNhbnZhcykKLXsKLSAgICByZXR1cm4gZXZhc19vYmplY3Rfc21hcnRfYWRkKGNhbnZh
cywgX2V3a19mcmFtZV9zbWFydF9jbGFzc19uZXcoKSk7Ci19Ci0KLS8qKgotICogQGludGVybmFs
Ci0gKgotICogSW5pdGlhbGl6ZSBmcmFtZSBiYXNlZCBvbiBhY3R1YWwgV2ViS2l0IGZyYW1lLgot
ICoKLSAqIFRoaXMgaXMgaW50ZXJuYWwgYW5kIHNob3VsZCBuZXZlciBiZSBjYWxsZWQgYnkgZXh0
ZXJuYWwgdXNlcnMuCi0gKi8KLWJvb2wgZXdrX2ZyYW1lX2luaXQoRXZhc19PYmplY3QqIGV3a0Zy
YW1lLCBFdmFzX09iamVjdCogdmlldywgUGFzc093blB0cjxXZWJDb3JlOjpGcmFtZUxvYWRlckNs
aWVudEVmbD4gZnJhbWVMb2FkZXJDbGllbnQpCi17Ci0gICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9S
RVRVUk4oZXdrRnJhbWUsIHNtYXJ0RGF0YSwgZmFsc2UpOwotICAgIGlmICghc21hcnREYXRhLT5m
cmFtZSkgewotICAgICAgICBzbWFydERhdGEtPmZyYW1lTG9hZGVyQ2xpZW50ID0gZnJhbWVMb2Fk
ZXJDbGllbnQ7Ci0gICAgICAgIHNtYXJ0RGF0YS0+ZnJhbWVMb2FkZXJDbGllbnQtPnNldFdlYkZy
YW1lKGV3a0ZyYW1lKTsKLSAgICAgICAgc21hcnREYXRhLT52aWV3ID0gdmlldzsKLQotICAgICAg
ICAvLyBGSVhNRTogRnJhbWVMb2FkZXJDbGllbnRFZmwgc2hvdWxkIGdldCB1c2VyIGFnZW50IGRp
cmVjdGx5IGZyb20gZXdrX3ZpZXcuCi0gICAgICAgIHNtYXJ0RGF0YS0+ZnJhbWVMb2FkZXJDbGll
bnQtPnNldEN1c3RvbVVzZXJBZ2VudChTdHJpbmc6OmZyb21VVEY4KGV3a192aWV3X3NldHRpbmdf
dXNlcl9hZ2VudF9nZXQodmlldykpKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0g
ICAgcmV0dXJuIGZhbHNlOwotfQotCi0vKioKLSAqIEBpbnRlcm5hbAotICoKLSAqIEFkZHMgY2hp
bGQgdG8gdGhlIGZyYW1lLgotICovCi1FdmFzX09iamVjdCogZXdrX2ZyYW1lX2NoaWxkX2FkZChF
dmFzX09iamVjdCogZXdrRnJhbWUsIGNvbnN0IFdURjo6U3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpI
VE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCkKLXsKLSAgICBFV0tfRlJBTUVfU0Rf
R0VUX09SX1JFVFVSTihld2tGcmFtZSwgc21hcnREYXRhLCAwKTsKLSAgICBjaGFyIGJ1ZmZlclsy
NTZdOwotCi0gICAgRXZhc19PYmplY3QqIGZyYW1lID0gZXdrX2ZyYW1lX2FkZChzbWFydERhdGEt
PmJhc2UuZXZhcyk7Ci0gICAgaWYgKCFmcmFtZSkgewotICAgICAgICBFUlIoIkNvdWxkIG5vdCBj
cmVhdGUgZXdrX2ZyYW1lIG9iamVjdC4iKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0g
ICAgaWYgKCFld2tfZnJhbWVfaW5pdChmcmFtZSwgc21hcnREYXRhLT52aWV3LCBhZG9wdFB0cihu
ZXcgV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmwoc21hcnREYXRhLT52aWV3KSkpKSB7Ci0g
ICAgICAgIEVSUigiQ291bGQgbm90IGluaXQgZXdrX2ZyYW1lIG9iamVjdC4iKTsKLSAgICAgICAg
ZXZhc19vYmplY3RfZGVsKGZyYW1lKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAg
RVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4oZnJhbWUsIGNoaWxkRnJhbWVTbWFydERhdGEsIDAp
OwotICAgIFJlZlB0cjxXZWJDb3JlOjpGcmFtZT4gY29yZUZyYW1lID0gV2ViQ29yZTo6RnJhbWU6
OmNyZWF0ZShzbWFydERhdGEtPmZyYW1lLT5wYWdlKCksIG93bmVyRWxlbWVudCwgY2hpbGRGcmFt
ZVNtYXJ0RGF0YS0+ZnJhbWVMb2FkZXJDbGllbnQuZ2V0KCkpOwotICAgIGNoaWxkRnJhbWVTbWFy
dERhdGEtPmZyYW1lID0gY29yZUZyYW1lLmdldCgpOwotICAgIGNvcmVGcmFtZS0+dHJlZSgpLnNl
dE5hbWUobmFtZSk7Ci0KLSAgICBpZiAob3duZXJFbGVtZW50KSB7Ci0gICAgICAgIEFTU0VSVChv
d25lckVsZW1lbnQtPmRvY3VtZW50KCkuZnJhbWUoKSk7Ci0gICAgICAgIG93bmVyRWxlbWVudC0+
ZG9jdW1lbnQoKS5mcmFtZSgpLT50cmVlKCkuYXBwZW5kQ2hpbGQoY29yZUZyYW1lLnJlbGVhc2Uo
KSk7Ci0gICAgfQotICAgIGNoaWxkRnJhbWVTbWFydERhdGEtPmZyYW1lLT5pbml0KCk7Ci0KLSAg
ICBzbnByaW50ZihidWZmZXIsIHNpemVvZihidWZmZXIpLCAiRVdLX0ZyYW1lOmNoaWxkLyVzIiwg
bmFtZS51dGY4KCkuZGF0YSgpKTsKLSAgICBldmFzX29iamVjdF9uYW1lX3NldChmcmFtZSwgYnVm
ZmVyKTsKLSAgICBldmFzX29iamVjdF9zbWFydF9tZW1iZXJfYWRkKGZyYW1lLCBld2tGcmFtZSk7
Ci0gICAgZXZhc19vYmplY3Rfc2hvdyhmcmFtZSk7Ci0KLSAgICByZXR1cm4gZnJhbWU7Ci19Ci0K
LS8qKgotICogQGludGVybmFsCi0gKiBDaGFuZ2UgdGhlIGV3ayB2aWV3IHRoaXMgZnJhbWUgaXMg
YXNzb2NpYXRlZCB3aXRoLgotICoKLSAqIEBwYXJhbSBld2tGcmFtZSBUaGUgZXdrIGZyYW1lIHRv
IGFjdCB1cG9uLgotICogQHBhcmFtIG5ld1BhcmVudCBUaGUgbmV3IHZpZXcgdGhhdCB3aWxsIGJl
IHNldCBhcyB0aGUgcGFyZW50IG9mIHRoZSBmcmFtZS4KLSAqLwotdm9pZCBld2tfZnJhbWVfdmll
d19zZXQoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBFdmFzX09iamVjdCogbmV3UGFyZW50KQotewot
ICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBzbWFydERhdGEpOwotCi0g
ICAgZXZhc19vYmplY3Rfc21hcnRfbWVtYmVyX2RlbChld2tGcmFtZSk7Ci0gICAgZXZhc19vYmpl
Y3Rfc21hcnRfbWVtYmVyX2FkZChld2tGcmFtZSwgbmV3UGFyZW50KTsKLQotICAgIHNtYXJ0RGF0
YS0+dmlldyA9IG5ld1BhcmVudDsKLX0KLQotLyoqCi0gKiBAaW50ZXJuYWwKLSAqIEZyYW1lIHdh
cyBkZXN0cm95ZWQgYnkgbG9hZGVyLCByZW1vdmUgaW50ZXJuYWwgcmVmZXJlbmNlLgotICovCi12
b2lkIGV3a19mcmFtZV9jb3JlX2dvbmUoRXZhc19PYmplY3QqIGV3a0ZyYW1lKQotewotICAgIERC
RygiZXdrRnJhbWU9JXAiLCBld2tGcmFtZSk7Ci0gICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRV
Uk4oZXdrRnJhbWUsIHNtYXJ0RGF0YSk7Ci0gICAgc21hcnREYXRhLT5mcmFtZSA9IDA7Ci19Ci0K
LS8qKgotICogQGludGVybmFsCi0gKiBSZXBvcnRzIGNhbmNlbGxhdGlvbiBvZiBhIGNsaWVudCBy
ZWRpcmVjdC4KLSAqCi0gKiBAcGFyYW0gZXdrRnJhbWUgRnJhbWUuCi0gKgotICogRW1pdHMgc2ln
bmFsOiAicmVkaXJlY3QsY2FuY2VsbGVkIgotICovCi12b2lkIGV3a19mcmFtZV9yZWRpcmVjdF9j
YW5jZWxsZWQoRXZhc19PYmplY3QqIGV3a0ZyYW1lKQotewotICAgIGV2YXNfb2JqZWN0X3NtYXJ0
X2NhbGxiYWNrX2NhbGwoZXdrRnJhbWUsICJyZWRpcmVjdCxjYW5jZWxsZWQiLCAwKTsKLX0KLQot
LyoqCi0gKiBAaW50ZXJuYWwKLSAqIFJlcG9ydHMgcmVjZWlwdCBvZiBzZXJ2ZXIgcmVkaXJlY3Qg
Zm9yIHByb3Zpc2lvbmFsIGxvYWQuCi0gKgotICogQHBhcmFtIGV3a0ZyYW1lIEZyYW1lLgotICoK
LSAqIEVtaXRzIHNpZ25hbDogInJlZGlyZWN0LGxvYWQscHJvdmlzaW9uYWwiCi0gKi8KLXZvaWQg
ZXdrX2ZyYW1lX3JlZGlyZWN0X3Byb3Zpc2lvbmFsX2xvYWQoRXZhc19PYmplY3QqIGV3a0ZyYW1l
KQotewotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdrRnJhbWUsICJyZWRp
cmVjdCxsb2FkLHByb3Zpc2lvbmFsIiwgMCk7Ci19Ci0KLS8qKgotICogQGludGVybmFsCi0gKiBS
ZXBvcnRzIHRoYXQgYSBjbGllbnQgcmVkaXJlY3Qgd2lsbCBiZSBwZXJmb3JtZWQuCi0gKgotICog
QHBhcmFtIGV3a0ZyYW1lIEZyYW1lLgotICogQHBhcmFtIHVybCBSZWRpcmVjdGlvbiBVUkwuCi0g
KgotICogRW1pdHMgc2lnbmFsOiAicmVkaXJlY3QscmVxdWVzdGVkIgotICovCi12b2lkIGV3a19m
cmFtZV9yZWRpcmVjdF9yZXF1ZXN0ZWQoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBjb25zdCBjaGFy
KiB1cmwpCi17Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChld2tGcmFtZSwg
InJlZGlyZWN0LHJlcXVlc3RlZCIsICh2b2lkKil1cmwpOwotfQotCi0vKioKLSAqIEBpbnRlcm5h
bAotICogUmVwb3J0cyBhIHJlc291cmNlIHdpbGwgYmUgcmVxdWVzdGVkLiBVc2VyIG1heSBvdmVy
cmlkZSBiZWhhdmlvciBvZiB3ZWJraXQgYnkKLSAqIGNoYW5naW5nIHZhbHVlcyBpbiBAcGFyYW0g
cmVxdWVzdC4KLSAqCi0gKiBAcGFyYW0gZXdrRnJhbWUgRnJhbWUuCi0gKiBAcGFyYW0gbWVzc2Fn
ZXMgTWVzc2FnZXMgY29udGFpbmluZyB0aGUgcmVxdWVzdCBkZXRhaWxzIHRoYXQgdXNlciBtYXkg
b3ZlcnJpZGUgYW5kIGEKLSAqIHBvc3NpYmxlIHJlZGlyZWN0IHJlcG9uc2UuIFdoZW5ldmVyIHZh
bHVlcyBvbiB0aGlzIHN0cnVjdCBjaGFuZ2VzLCBpdCBtdXN0IGJlIHByb3Blcmx5Ci0gKiBtYWxs
b2MnZCBhcyBpdCB3aWxsIGJlIGZyZWVkIGFmdGVyd2FyZHMuCi0gKgotICogRW1pdHMgc2lnbmFs
OiAicmVzb3VyY2UscmVxdWVzdCx3aWxsc2VuZCIKLSAqLwotdm9pZCBld2tfZnJhbWVfcmVxdWVz
dF93aWxsX3NlbmQoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBFd2tfRnJhbWVfUmVzb3VyY2VfTWVz
c2FnZXMqIG1lc3NhZ2VzKQotewotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwo
ZXdrRnJhbWUsICJyZXNvdXJjZSxyZXF1ZXN0LHdpbGxzZW5kIiwgbWVzc2FnZXMpOwotfQotCi0v
KioKLSAqIEBpbnRlcm5hbAotICogUmVwb3J0cyB0aGF0IHRoZXJlJ3MgYSBuZXcgcmVzb3VyY2Uu
Ci0gKgotICogQHBhcmFtIGV3a0ZyYW1lIEZyYW1lLgotICogQHBhcmFtIHJlcXVlc3QgTmV3IHJl
cXVlc3QgZGV0YWlscy4gTm8gY2hhbmdlcyBhcmUgYWxsb3dlZCB0byBmaWVsZHMuCi0gKgotICog
RW1pdHMgc2lnbmFsOiAicmVzb3VyY2UscmVxdWVzdCxuZXciCi0gKi8KLXZvaWQgZXdrX2ZyYW1l
X3JlcXVlc3RfYXNzaWduX2lkZW50aWZpZXIoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBjb25zdCBF
d2tfRnJhbWVfUmVzb3VyY2VfUmVxdWVzdCogcmVxdWVzdCkKLXsKLSAgICBldmFzX29iamVjdF9z
bWFydF9jYWxsYmFja19jYWxsKGV3a0ZyYW1lLCAicmVzb3VyY2UscmVxdWVzdCxuZXciLCAodm9p
ZCopcmVxdWVzdCk7Ci19Ci0KLS8qKgotICogQGludGVybmFsCi0gKiBSZXBvcnRzIHRoYXQgYSBy
ZXNwb25zZSB0byBhIHJlc291cmNlIHJlcXVlc3Qgd2FzIHJlY2VpdmVkLgotICoKLSAqIEBwYXJh
bSBld2tGcmFtZSBGcmFtZS4KLSAqIEBwYXJhbSByZXF1ZXN0IFJlc3BvbnNlIGRldGFpbHMuIE5v
IGNoYW5nZXMgYXJlIGFsbG93ZWQgdG8gZmllbGRzLgotICoKLSAqIEVtaXRzIHNpZ25hbDogInJl
c291cmNlLHJlc3BvbnNlLHJlY2VpdmVkIgotICovCi12b2lkIGV3a19mcmFtZV9yZXNwb25zZV9y
ZWNlaXZlZChFdmFzX09iamVjdCogZXdrRnJhbWUsIEV3a19GcmFtZV9SZXNvdXJjZV9SZXNwb25z
ZSogcmVzcG9uc2UpCi17Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChld2tG
cmFtZSwgInJlc291cmNlLHJlc3BvbnNlLHJlY2VpdmVkIiwgcmVzcG9uc2UpOwotfQotCi0vKioK
LSAqIEBpbnRlcm5hbAotICogUmVwb3J0cyBmcmFtZSB3aWxsIGJlIHNhdmVkIHRvIGN1cnJlbnQg
c3RhdGUKLSAqCi0gKiBAcGFyYW0gZXdrRnJhbWUgRnJhbWUuCi0gKiBAcGFyYW0gaXRlbSBIaXN0
b3J5IGl0ZW0gdG8gc2F2ZSBkZXRhaWxzIHRvLgotICoKLSAqIEVtaXRzIHNpZ25hbDogInN0YXRl
LHNhdmUiCi0gKi8KLXZvaWQgZXdrX2ZyYW1lX3ZpZXdfc3RhdGVfc2F2ZShFdmFzX09iamVjdCog
ZXdrRnJhbWUsIFdlYkNvcmU6Okhpc3RvcnlJdGVtKikKLXsKLSAgICBldmFzX29iamVjdF9zbWFy
dF9jYWxsYmFja19jYWxsKGV3a0ZyYW1lLCAic3RhdGUsc2F2ZSIsIDApOwotfQotCi0vKioKLSAq
IEBpbnRlcm5hbAotICogUmVwb3J0cyB0aGUgZnJhbWUgY29tbWl0dGVkIGxvYWQuCi0gKgotICog
RW1pdHMgc2lnbmFsOiAibG9hZCxjb21taXR0ZWQiIHdpdGggbm8gcGFyYW1ldGVycy4KLSAqLwot
dm9pZCBld2tfZnJhbWVfbG9hZF9jb21taXR0ZWQoRXZhc19PYmplY3QqIGV3a0ZyYW1lKQotewot
ICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdrRnJhbWUsICJsb2FkLGNvbW1p
dHRlZCIsIDApOwotfQotCi0vKioKLSAqIEBpbnRlcm5hbAotICogUmVwb3J0cyB0aGUgZnJhbWUg
c3RhcnRlZCBsb2FkaW5nIHNvbWV0aGluZy4KLSAqCi0gKiBFbWl0cyBzaWduYWw6ICJsb2FkLHN0
YXJ0ZWQiIHdpdGggbm8gcGFyYW1ldGVycy4KLSAqLwotdm9pZCBld2tfZnJhbWVfbG9hZF9zdGFy
dGVkKEV2YXNfT2JqZWN0KiBld2tGcmFtZSkKLXsKLSAgICBFdmFzX09iamVjdCogbWFpbkZyYW1l
OwotICAgIERCRygiZXdrRnJhbWU9JXAiLCBld2tGcmFtZSk7Ci0gICAgZXZhc19vYmplY3Rfc21h
cnRfY2FsbGJhY2tfY2FsbChld2tGcmFtZSwgImxvYWQsc3RhcnRlZCIsIDApOwotICAgIEVXS19G
UkFNRV9TRF9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBzbWFydERhdGEpOwotICAgIGV3a192aWV3
X2xvYWRfc3RhcnRlZChzbWFydERhdGEtPnZpZXcsIGV3a0ZyYW1lKTsKLQotICAgIG1haW5GcmFt
ZSA9IGV3a192aWV3X2ZyYW1lX21haW5fZ2V0KHNtYXJ0RGF0YS0+dmlldyk7Ci0gICAgaWYgKG1h
aW5GcmFtZSA9PSBld2tGcmFtZSkKLSAgICAgICAgZXdrX3ZpZXdfZnJhbWVfbWFpbl9sb2FkX3N0
YXJ0ZWQoc21hcnREYXRhLT52aWV3KTsKLX0KLQotLyoqCi0gKiBAaW50ZXJuYWwKLSAqIFJlcG9y
dHMgdGhlIGZyYW1lIHN0YXJ0ZWQgcHJvdmlzaW9uYWwgbG9hZC4KLSAqCi0gKiBAcGFyYW0gZXdr
RnJhbWUgRnJhbWUuCi0gKgotICogRW1pdHMgc2lnbmFsOiAibG9hZCxwcm92aXNpb25hbCIgd2l0
aCBubyBwYXJhbWV0ZXJzLgotICovCi12b2lkIGV3a19mcmFtZV9sb2FkX3Byb3Zpc2lvbmFsKEV2
YXNfT2JqZWN0KiBld2tGcmFtZSkKLXsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19j
YWxsKGV3a0ZyYW1lLCAibG9hZCxwcm92aXNpb25hbCIsIDApOwotfQotCi0vKioKLSAqIEBpbnRl
cm5hbAotICogUmVwb3J0cyB0aGUgZnJhbWUgcHJvdmlzaW9uYWwgbG9hZCBmYWlsZWQuCi0gKgot
ICogQHBhcmFtIGV3a0ZyYW1lIEZyYW1lLgotICogQHBhcmFtIGVycm9yIExvYWQgZXJyb3IuCi0g
KgotICogRW1pdHMgc2lnbmFsOiAibG9hZCxwcm92aXNpb25hbCxmYWlsZWQiIHdpdGggcG9pbnRl
ciB0byBFd2tfRnJhbWVfTG9hZF9FcnJvci4KLSAqLwotdm9pZCBld2tfZnJhbWVfbG9hZF9wcm92
aXNpb25hbF9mYWlsZWQoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBjb25zdCBFd2tfRnJhbWVfTG9h
ZF9FcnJvciogZXJyb3IpCi17Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChl
d2tGcmFtZSwgImxvYWQscHJvdmlzaW9uYWwsZmFpbGVkIiwgY29uc3RfY2FzdDxFd2tfRnJhbWVf
TG9hZF9FcnJvcio+KGVycm9yKSk7Ci19Ci0KLS8qKgotICogQGludGVybmFsCi0gKiBSZXBvcnRz
IHRoZSBmcmFtZSBmaW5pc2hlZCBmaXJzdCBsYXlvdXQuCi0gKgotICogQHBhcmFtIGV3a0ZyYW1l
IEZyYW1lLgotICoKLSAqIEVtaXRzIHNpZ25hbDogImxvYWQsZmlyc3RsYXlvdXQsZmluaXNoZWQi
IHdpdGggbm8gcGFyYW1ldGVycy4KLSAqLwotdm9pZCBld2tfZnJhbWVfbG9hZF9maXJzdGxheW91
dF9maW5pc2hlZChFdmFzX09iamVjdCogZXdrRnJhbWUpCi17Ci0gICAgZXZhc19vYmplY3Rfc21h
cnRfY2FsbGJhY2tfY2FsbChld2tGcmFtZSwgImxvYWQsZmlyc3RsYXlvdXQsZmluaXNoZWQiLCAw
KTsKLX0KLQotLyoqCi0gKiBAaW50ZXJuYWwKLSAqIFJlcG9ydHMgdGhlIGZyYW1lIGZpbmlzaGVk
IGZpcnN0IG5vbiBlbXB0eSBsYXlvdXQuCi0gKgotICogQHBhcmFtIGV3a0ZyYW1lIEZyYW1lLgot
ICoKLSAqIEVtaXRzIHNpZ25hbDogImxvYWQsbm9uZW1wdHlsYXlvdXQsZmluaXNoZWQiIHdpdGgg
bm8gcGFyYW1ldGVycy4KLSAqLwotdm9pZCBld2tfZnJhbWVfbG9hZF9maXJzdGxheW91dF9ub25l
bXB0eV9maW5pc2hlZChFdmFzX09iamVjdCogZXdrRnJhbWUpCi17Ci0gICAgZXZhc19vYmplY3Rf
c21hcnRfY2FsbGJhY2tfY2FsbChld2tGcmFtZSwgImxvYWQsbm9uZW1wdHlsYXlvdXQsZmluaXNo
ZWQiLCAwKTsKLX0KLQotLyoqCi0gKiBAaW50ZXJuYWwKLSAqIFJlcG9ydHMgdGhlIGxvYWRpbmcg
b2YgYSBkb2N1bWVudCBoYXMgZmluaXNoZWQgb24gZnJhbWUuCi0gKgotICogQHBhcmFtIGV3a0Zy
YW1lIEZyYW1lLgotICoKLSAqIEVtaXRzIHNpZ25hbDogImxvYWQsZG9jdW1lbnQsZmluaXNoZWQi
IHdpdGggbm8gcGFyYW1ldGVycy4KLSAqLwotdm9pZCBld2tfZnJhbWVfbG9hZF9kb2N1bWVudF9m
aW5pc2hlZChFdmFzX09iamVjdCogZXdrRnJhbWUpCi17Ci0gICAgZXZhc19vYmplY3Rfc21hcnRf
Y2FsbGJhY2tfY2FsbChld2tGcmFtZSwgImxvYWQsZG9jdW1lbnQsZmluaXNoZWQiLCAwKTsKLSAg
ICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihld2tGcmFtZSwgc21hcnREYXRhKTsKLSAgICBl
d2tfdmlld19sb2FkX2RvY3VtZW50X2ZpbmlzaGVkKHNtYXJ0RGF0YS0+dmlldywgZXdrRnJhbWUp
OwotfQotCi0vKioKLSAqIEBpbnRlcm5hbAotICogUmVwb3J0cyBsb2FkIGZpbmlzaGVkLCBvcHRp
b25hbGx5IHdpdGggZXJyb3IgaW5mb3JtYXRpb24uCi0gKgotICogRW1pdHMgc2lnbmFsOiAibG9h
ZCxmaW5pc2hlZCIgd2l0aCBwb2ludGVyIHRvIEV3a19GcmFtZV9Mb2FkX0Vycm9yCi0gKiBpZiBh
bnkgZXJyb3IsIG9yIEBjIE5VTEwgaWYgc3VjY2Vzc2Z1bCBsb2FkLgotICoKLSAqIEBub3RlIHRo
ZXJlIHNob3VsZCBub3RiZSBhbnkgZXJyb3Igc3R1ZmYgaGVyZSwgYnV0IHRyeWluZyB0byBiZQot
ICogICAgICAgY29tcGF0aWJsZSB3aXRoIHByZXZpb3VzIFdlYktpdC4KLSAqLwotdm9pZCBld2tf
ZnJhbWVfbG9hZF9maW5pc2hlZChFdmFzX09iamVjdCogZXdrRnJhbWUsIGNvbnN0IGNoYXIqIGVy
cm9yRG9tYWluLCBpbnQgZXJyb3JDb2RlLCBib29sIGlzQ2FuY2VsbGF0aW9uLCBjb25zdCBjaGFy
KiBlcnJvckRlc2NyaXB0aW9uLCBjb25zdCBjaGFyKiBmYWlsaW5nVXJsKQotewotICAgIEV3a19G
cmFtZV9Mb2FkX0Vycm9yIGJ1ZmZlciwgKmVycm9yOwotICAgIGlmICghZXJyb3JEb21haW4pIHsK
LSAgICAgICAgREJHKCJld2tGcmFtZT0lcCwgc3VjY2Vzcy4iLCBld2tGcmFtZSk7Ci0gICAgICAg
IGVycm9yID0gMDsKLSAgICB9IGVsc2UgewotICAgICAgICBEQkcoImV3a0ZyYW1lPSVwLCBlcnJv
cj0lcyAoJWQsIGNhbmNlbGxhdGlvbj0laGh1KSBcIiVzXCIsIHVybD0lcyIsCi0gICAgICAgICAg
ICBld2tGcmFtZSwgZXJyb3JEb21haW4sIGVycm9yQ29kZSwgaXNDYW5jZWxsYXRpb24sCi0gICAg
ICAgICAgICBlcnJvckRlc2NyaXB0aW9uLCBmYWlsaW5nVXJsKTsKLQotICAgICAgICBidWZmZXIu
ZG9tYWluID0gZXJyb3JEb21haW47Ci0gICAgICAgIGJ1ZmZlci5jb2RlID0gZXJyb3JDb2RlOwot
ICAgICAgICBidWZmZXIuaXNfY2FuY2VsbGF0aW9uID0gaXNDYW5jZWxsYXRpb247Ci0gICAgICAg
IGJ1ZmZlci5kZXNjcmlwdGlvbiA9IGVycm9yRGVzY3JpcHRpb247Ci0gICAgICAgIGJ1ZmZlci5m
YWlsaW5nX3VybCA9IGZhaWxpbmdVcmw7Ci0gICAgICAgIGJ1ZmZlci5yZXNvdXJjZV9pZGVudGlm
aWVyID0gMDsKLSAgICAgICAgYnVmZmVyLmZyYW1lID0gZXdrRnJhbWU7Ci0gICAgICAgIGVycm9y
ID0gJmJ1ZmZlcjsKLSAgICB9Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChl
d2tGcmFtZSwgImxvYWQsZmluaXNoZWQiLCBlcnJvcik7Ci0gICAgRVdLX0ZSQU1FX1NEX0dFVF9P
Ul9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0RGF0YSk7Ci0gICAgZXdrX3ZpZXdfbG9hZF9maW5pc2hl
ZChzbWFydERhdGEtPnZpZXcsIGVycm9yKTsKLX0KLQotLyoqCi0gKiBAaW50ZXJuYWwKLSAqIFJl
cG9ydHMgcmVzb3VyY2UgbG9hZCBmaW5pc2hlZC4KLSAqCi0gKiBFbWl0cyBzaWduYWw6ICJsb2Fk
LHJlc291cmNlLGZpbmlzaGVkIiB3aXRoIHRoZSByZXNvdXJjZQotICogcmVxdWVzdCBpZGVudGlm
aWVyLgotICovCi12b2lkIGV3a19mcmFtZV9sb2FkX3Jlc291cmNlX2ZpbmlzaGVkKEV2YXNfT2Jq
ZWN0KiBld2tGcmFtZSwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKQotewotICAgIGV2YXNfb2Jq
ZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdrRnJhbWUsICJsb2FkLHJlc291cmNlLGZpbmlzaGVk
IiwgJmlkZW50aWZpZXIpOwotfQotCi0vKioKLSAqIEBpbnRlcm5hbAotICogUmVwb3J0cyByZXNv
dXJjZSBsb2FkIGZhaWx1cmUsIHdpdGggZXJyb3IgaW5mb3JtYXRpb24uCi0gKgotICogRW1pdHMg
c2lnbmFsOiAibG9hZCxyZXNvdXJjZSxmYWlsZWQiIHdpdGggdGhlIGVycm9yIGluZm9ybWF0aW9u
LgotICovCi12b2lkIGV3a19mcmFtZV9sb2FkX3Jlc291cmNlX2ZhaWxlZChFdmFzX09iamVjdCog
ZXdrRnJhbWUsIEV3a19GcmFtZV9Mb2FkX0Vycm9yKiBlcnJvcikKLXsKLSAgICBldmFzX29iamVj
dF9zbWFydF9jYWxsYmFja19jYWxsKGV3a0ZyYW1lLCAibG9hZCxyZXNvdXJjZSxmYWlsZWQiLCBl
cnJvcik7Ci19Ci0KLS8qKgotICogQGludGVybmFsCi0gKiBSZXBvcnRzIGxvYWQgZmFpbGVkIHdp
dGggZXJyb3IgaW5mb3JtYXRpb24uCi0gKgotICogRW1pdHMgc2lnbmFsOiAibG9hZCxlcnJvciIg
d2l0aCBwb2ludGVyIHRvIEV3a19GcmFtZV9Mb2FkX0Vycm9yLgotICovCi12b2lkIGV3a19mcmFt
ZV9sb2FkX2Vycm9yKEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgY29uc3QgY2hhciogZXJyb3JEb21h
aW4sIGludCBlcnJvckNvZGUsIGJvb2wgaXNDYW5jZWxsYXRpb24sIGNvbnN0IGNoYXIqIGVycm9y
RGVzY3JpcHRpb24sIGNvbnN0IGNoYXIqIGZhaWxpbmdVcmwpCi17Ci0gICAgRXdrX0ZyYW1lX0xv
YWRfRXJyb3IgZXJyb3I7Ci0KLSAgICBEQkcoImV3a0ZyYW1lPSVwLCBlcnJvcj0lcyAoJWQsIGNh
bmNlbGxhdGlvbj0laGh1KSBcIiVzXCIsIHVybD0lcyIsCi0gICAgICAgIGV3a0ZyYW1lLCBlcnJv
ckRvbWFpbiwgZXJyb3JDb2RlLCBpc0NhbmNlbGxhdGlvbiwKLSAgICAgICAgZXJyb3JEZXNjcmlw
dGlvbiwgZmFpbGluZ1VybCk7Ci0KLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihlcnJv
ckRvbWFpbik7Ci0KLSAgICBlcnJvci5jb2RlID0gZXJyb3JDb2RlOwotICAgIGVycm9yLmlzX2Nh
bmNlbGxhdGlvbiA9IGlzQ2FuY2VsbGF0aW9uOwotICAgIGVycm9yLmRvbWFpbiA9IGVycm9yRG9t
YWluOwotICAgIGVycm9yLmRlc2NyaXB0aW9uID0gZXJyb3JEZXNjcmlwdGlvbjsKLSAgICBlcnJv
ci5mYWlsaW5nX3VybCA9IGZhaWxpbmdVcmw7Ci0gICAgZXJyb3IucmVzb3VyY2VfaWRlbnRpZmll
ciA9IDA7Ci0gICAgZXJyb3IuZnJhbWUgPSBld2tGcmFtZTsKLSAgICBldmFzX29iamVjdF9zbWFy
dF9jYWxsYmFja19jYWxsKGV3a0ZyYW1lLCAibG9hZCxlcnJvciIsICZlcnJvcik7Ci0gICAgRVdL
X0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0RGF0YSk7Ci0gICAgZXdrX3Zp
ZXdfbG9hZF9lcnJvcihzbWFydERhdGEtPnZpZXcsICZlcnJvcik7Ci19Ci0KLS8qKgotICogQGlu
dGVybmFsCi0gKiBSZXBvcnRzIGxvYWQgcHJvZ3Jlc3MgY2hhbmdlZC4KLSAqCi0gKiBFbWl0cyBz
aWduYWw6ICJsb2FkLHByb2dyZXNzIiB3aXRoIHBvaW50ZXIgdG8gYSBkb3VibGUgZnJvbSAwLjAg
dG8gMS4wLgotICovCi12b2lkIGV3a19mcmFtZV9sb2FkX3Byb2dyZXNzX2NoYW5nZWQoRXZhc19P
YmplY3QqIGV3a0ZyYW1lKQotewotICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKGV3a0Zy
YW1lLCBzbWFydERhdGEpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNtYXJ0RGF0
YS0+ZnJhbWUpOwotCi0gICAgLy8gVE9ETzogdGhpcyBpcyBwZXIgcGFnZSwgdGhlcmUgc2hvdWxk
IGJlIGEgd2F5IHRvIGhhdmUgcGVyLWZyYW1lLgotICAgIGRvdWJsZSBwcm9ncmVzcyA9IHNtYXJ0
RGF0YS0+ZnJhbWUtPnBhZ2UoKS0+cHJvZ3Jlc3MoKS5lc3RpbWF0ZWRQcm9ncmVzcygpOwotCi0g
ICAgREJHKCJld2tGcmFtZT0lcCAocD0lMC4zZikiLCBld2tGcmFtZSwgcHJvZ3Jlc3MpOwotCi0g
ICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChld2tGcmFtZSwgImxvYWQscHJvZ3Jl
c3MiLCAmcHJvZ3Jlc3MpOwotICAgIGV3a192aWV3X2xvYWRfcHJvZ3Jlc3NfY2hhbmdlZChzbWFy
dERhdGEtPnZpZXcpOwotfQotCi0vKioKLSAqIEBpbnRlcm5hbAotICoKLSAqIFJlcG9ydHMgY29u
dGVudHMgc2l6ZSBjaGFuZ2VkLgotICovCi12b2lkIGV3a19mcmFtZV9jb250ZW50c19zaXplX2No
YW5nZWQoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBFdmFzX0Nvb3JkIHdpZHRoLCBFdmFzX0Nvb3Jk
IGhlaWdodCkKLXsKLSAgICBFdmFzX0Nvb3JkIHNpemVbMl0gPSB7d2lkdGgsIGhlaWdodH07Ci0g
ICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChld2tGcmFtZSwgImNvbnRlbnRzLHNp
emUsY2hhbmdlZCIsIHNpemUpOwotfQotCi0vKioKLSAqIEBpbnRlcm5hbAotICoKLSAqIFJlcG9y
dHMgdGl0bGUgY2hhbmdlZC4KLSAqLwotdm9pZCBld2tfZnJhbWVfdGl0bGVfc2V0KEV2YXNfT2Jq
ZWN0KiBld2tGcmFtZSwgY29uc3QgRXdrX1RleHRfV2l0aF9EaXJlY3Rpb24qIHRpdGxlKQotewot
ICAgIERCRygiZXdrRnJhbWU9JXAsIHRpdGxlPSVzLCBkaXJlY3Rpb249JXMiLCBld2tGcmFtZSwg
dGl0bGUtPnN0cmluZyA/IHRpdGxlLT5zdHJpbmcgOiAiKG51bGwpIiwgdGl0bGUtPmRpcmVjdGlv
biA9PSBFV0tfVEVYVF9ESVJFQ1RJT05fTEVGVF9UT19SSUdIVCA/ICJsdHIiIDogInJ0bCIpOwot
ICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBzbWFydERhdGEpOwotICAg
IGlmICghZWluYV9zdHJpbmdzaGFyZV9yZXBsYWNlKCZzbWFydERhdGEtPnRpdGxlLnN0cmluZywg
dGl0bGUtPnN0cmluZykgJiYgKHNtYXJ0RGF0YS0+dGl0bGUuZGlyZWN0aW9uID09IHRpdGxlLT5k
aXJlY3Rpb24pKQotICAgICAgICByZXR1cm47Ci0gICAgc21hcnREYXRhLT50aXRsZS5kaXJlY3Rp
b24gPSB0aXRsZS0+ZGlyZWN0aW9uOwotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2Nh
bGwoZXdrRnJhbWUsICJ0aXRsZSxjaGFuZ2VkIiwgKHZvaWQqKXRpdGxlKTsKLX0KLQotLyoqCi0g
KiBAaW50ZXJuYWwKLSAqCi0gKiBDcmVhdGVzIGEgdmlldy4KLSAqLwotdm9pZCBld2tfZnJhbWVf
dmlld19jcmVhdGVfZm9yX3ZpZXcoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBFdmFzX09iamVjdCog
dmlldykKLXsKLSAgICBEQkcoImV3a0ZyYW1lPSVwLCB2aWV3PSVwIiwgZXdrRnJhbWUsIHZpZXcp
OwotICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBzbWFydERhdGEpOwot
ICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNtYXJ0RGF0YS0+ZnJhbWUpOwotICAgIEV2
YXNfQ29vcmQgd2lkdGgsIGhlaWdodDsKLQotICAgIGV2YXNfb2JqZWN0X2dlb21ldHJ5X2dldCh2
aWV3LCAwLCAwLCAmd2lkdGgsICZoZWlnaHQpOwotCi0gICAgV2ViQ29yZTo6SW50U2l6ZSBzaXpl
KHdpZHRoLCBoZWlnaHQpOwotICAgIGludCByZWQsIGdyZWVuLCBibHVlLCBhbHBoYTsKLSAgICBX
ZWJDb3JlOjpDb2xvciBiYWNrZ3JvdW5kOwotCi0gICAgZXdrX3ZpZXdfYmdfY29sb3JfZ2V0KHZp
ZXcsICZyZWQsICZncmVlbiwgJmJsdWUsICZhbHBoYSk7Ci0gICAgaWYgKCFhbHBoYSkKLSAgICAg
ICAgYmFja2dyb3VuZCA9IFdlYkNvcmU6OkNvbG9yKDAsIDAsIDAsIDApOwotICAgIGVsc2UgaWYg
KGFscGhhID09IDI1NSkKLSAgICAgICAgYmFja2dyb3VuZCA9IFdlYkNvcmU6OkNvbG9yKHJlZCwg
Z3JlZW4sIGJsdWUsIGFscGhhKTsKLSAgICBlbHNlCi0gICAgICAgIGJhY2tncm91bmQgPSBXZWJD
b3JlOjpDb2xvcihyZWQgKiAyNTUgLyBhbHBoYSwgZ3JlZW4gKiAyNTUgLyBhbHBoYSwgYmx1ZSAq
IDI1NSAvIGFscGhhLCBhbHBoYSk7Ci0KLSAgICBzbWFydERhdGEtPmZyYW1lLT5jcmVhdGVWaWV3
KHNpemUsIGJhY2tncm91bmQsICFhbHBoYSk7Ci0gICAgaWYgKCFzbWFydERhdGEtPmZyYW1lLT52
aWV3KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIHNtYXJ0RGF0YS0+ZnJhbWUtPnZpZXcoKS0+
c2V0RXZhc09iamVjdChld2tGcmFtZSk7Ci0KLSAgICBld2tfZnJhbWVfbWl4ZWRfY29udGVudF9k
aXNwbGF5ZWRfc2V0KGV3a0ZyYW1lLCBmYWxzZSk7Ci0gICAgZXdrX2ZyYW1lX21peGVkX2NvbnRl
bnRfcnVuX3NldChld2tGcmFtZSwgZmFsc2UpOwotfQotCi1zc2l6ZV90IGV3a19mcmFtZV9zb3Vy
Y2VfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgY2hhcioqIGZyYW1lU291cmNlKQot
ewotICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBzbWFydERhdGEsIC0x
KTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5mcmFtZSwg
LTEpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEtPmZyYW1l
LT5kb2N1bWVudCgpLCAtMSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGZy
YW1lU291cmNlLCAtMSk7Ci0KLSAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgKmZyYW1l
U291cmNlID0gMDsgLy8gU2F2ZXMgMCB0byBwb2ludGVyIHVudGlsIGl0J3Mgbm90IGFsbG9jYXRl
ZC4KLQotICAgIGlmICghZXdrX2ZyYW1lX3VyaV9nZXQoZXdrRnJhbWUpKQotICAgICAgICByZXR1
cm4gLTE7Ci0KLSAgICBpZiAoIXNtYXJ0RGF0YS0+ZnJhbWUtPmRvY3VtZW50KCktPmlzSFRNTERv
Y3VtZW50KCkpIHsKLSAgICAgICAgLy8gRklYTUU6IFN1cHBvcnQgb3RoZXJzIGRvY3VtZW50cy4K
LSAgICAgICAgV0FSTigiT25seSBIVE1MIGRvY3VtZW50cyBhcmUgc3VwcG9ydGVkIik7Ci0gICAg
ICAgIHJldHVybiAtMTsKLSAgICB9Ci0KLSAgICAvLyBMb29rIGZvciA8aHRtbD4gdGFnLiBJZiBp
dCBleGlzdHMsIHRoZSBub2RlIGNvbnRhdGlucyBhbGwgZG9jdW1lbnQncyBzb3VyY2UuCi0gICAg
V2ViQ29yZTo6Tm9kZSogZG9jdW1lbnROb2RlID0gc21hcnREYXRhLT5mcmFtZS0+ZG9jdW1lbnQo
KS0+ZG9jdW1lbnRFbGVtZW50KCk7Ci0gICAgaWYgKGRvY3VtZW50Tm9kZSkKLSAgICAgICAgZm9y
IChXZWJDb3JlOjpOb2RlKiBub2RlID0gZG9jdW1lbnROb2RlLT5maXJzdENoaWxkKCk7IG5vZGU7
IG5vZGUgPSBub2RlLT5wYXJlbnRFbGVtZW50KCkpIHsKLSAgICAgICAgICAgIGlmIChub2RlLT5o
YXNUYWdOYW1lKFdlYkNvcmU6OkhUTUxOYW1lczo6aHRtbFRhZykpIHsKLSAgICAgICAgICAgICAg
ICBXZWJDb3JlOjpIVE1MRWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkhU
TUxFbGVtZW50Kj4obm9kZSk7Ci0gICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQpCi0gICAgICAg
ICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGVsZW1lbnQtPm91dGVySFRNTCgpKTsKLSAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgQ1N0cmlu
ZyB1dGY4U3RyaW5nID0gYnVpbGRlci50b1N0cmluZygpLnV0ZjgoKTsKLSAgICBzaXplX3Qgc291
cmNlTGVuZ3RoID0gdXRmOFN0cmluZy5sZW5ndGgoKTsKLSAgICAqZnJhbWVTb3VyY2UgPSBzdGF0
aWNfY2FzdDxjaGFyKj4obWFsbG9jKHNvdXJjZUxlbmd0aCArIDEpKTsKLSAgICBpZiAoISpmcmFt
ZVNvdXJjZSkgewotICAgICAgICBDUklUSUNBTCgiQ291bGQgbm90IGFsbG9jYXRlIG1lbW9yeS4i
KTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLQotICAgIHN0cm5jcHkoKmZyYW1lU291cmNl
LCB1dGY4U3RyaW5nLmRhdGEoKSwgc291cmNlTGVuZ3RoKTsKLSAgICAoKmZyYW1lU291cmNlKVtz
b3VyY2VMZW5ndGhdID0gJ1wwJzsKLQotICAgIHJldHVybiBzb3VyY2VMZW5ndGg7Ci19Ci0KLUVp
bmFfTGlzdCogZXdrX2ZyYW1lX3Jlc291cmNlc19sb2NhdGlvbl9nZXQoY29uc3QgRXZhc19PYmpl
Y3QqIGV3a0ZyYW1lKQotewotICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1l
LCBzbWFydERhdGEsIDApOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFy
dERhdGEtPmZyYW1lLCAwKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21h
cnREYXRhLT5mcmFtZS0+ZG9jdW1lbnQoKSwgMCk7Ci0KLSAgICBFaW5hX0xpc3QqIGxpc3RPZklt
YWdlc0xvY2F0aW9uID0gMDsKLQotICAgIC8vIEdldCBzcmMgYXR0aWJ1dGUgb2YgaW1hZ2VzIGFu
ZCBzYXZlcyB0aGVtIHRvIHRoZSBFaW5hX0xpc3QuCi0gICAgUmVmUHRyPFdlYkNvcmU6OkhUTUxD
b2xsZWN0aW9uPiBpbWFnZXMgPSBzbWFydERhdGEtPmZyYW1lLT5kb2N1bWVudCgpLT5pbWFnZXMo
KTsKLSAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgaW1hZ2VzLT5sZW5ndGgoKTsg
KytpbmRleCkgewotICAgICAgICBXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50KiBpbWFnZUVsZW1l
bnQgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50Kj4oaW1hZ2VzLT5pdGVt
KGluZGV4KSk7Ci0gICAgICAgIGlmICghaW1hZ2VFbGVtZW50IHx8IGltYWdlRWxlbWVudC0+c3Jj
KCkuaXNOdWxsKCkgfHwgaW1hZ2VFbGVtZW50LT5zcmMoKS5pc0VtcHR5KCkpCi0gICAgICAgICAg
ICBjb250aW51ZTsKLQotICAgICAgICBXVEY6OlN0cmluZyBpbWFnZUxvY2F0aW9uID0gV2ViQ29y
ZTo6ZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKGltYWdlRWxlbWVudC0+c3JjKCkuc3RyaW5nKCkp
OwotICAgICAgICAvLyBMb29rIGZvciBkdXBsaWNhdGVkIGxvY2F0aW9uLgotICAgICAgICBFaW5h
X0xpc3QqIGxpc3RJdGVyYXRvciA9IDA7Ci0gICAgICAgIHZvaWQqIGRhdGEgPSAwOwotICAgICAg
ICBFaW5hX0Jvb2wgZm91bmQgPSBmYWxzZTsKLSAgICAgICAgRUlOQV9MSVNUX0ZPUkVBQ0gobGlz
dE9mSW1hZ2VzTG9jYXRpb24sIGxpc3RJdGVyYXRvciwgZGF0YSkKLSAgICAgICAgICAgIGlmICgo
Zm91bmQgPSAhc3RyY21wKHN0YXRpY19jYXN0PGNoYXIqPihkYXRhKSwgaW1hZ2VMb2NhdGlvbi51
dGY4KCkuZGF0YSgpKSkpCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGlmIChmb3Vu
ZCkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIGNvbnN0IGNoYXIqIGltYWdlTG9j
YXRpb25Db3B5ID0gZWluYV9zdHJpbmdzaGFyZV9hZGQoaW1hZ2VMb2NhdGlvbi51dGY4KCkuZGF0
YSgpKTsKLSAgICAgICAgaWYgKCFpbWFnZUxvY2F0aW9uQ29weSkKLSAgICAgICAgICAgIGdvdG8g
b3V0X29mX21lbW9yeV9oYW5kbGVyOwotICAgICAgICBsaXN0T2ZJbWFnZXNMb2NhdGlvbiA9IGVp
bmFfbGlzdF9hcHBlbmQobGlzdE9mSW1hZ2VzTG9jYXRpb24sIGltYWdlTG9jYXRpb25Db3B5KTsK
LSAgICAgICAgaWYgKGVpbmFfZXJyb3JfZ2V0KCkpCi0gICAgICAgICAgICBnb3RvIG91dF9vZl9t
ZW1vcnlfaGFuZGxlcjsKLSAgICB9Ci0gICAgLy8gRklYTUU6IEdldCBVUkwgb3RoZXJzIHJlc291
cmNlcyAocGx1Z2lucywgY3NzLCBtZWRpYSBmaWxlcykuCi0gICAgcmV0dXJuIGxpc3RPZkltYWdl
c0xvY2F0aW9uOwotCi1vdXRfb2ZfbWVtb3J5X2hhbmRsZXI6Ci0gICAgQ1JJVElDQUwoIkNvdWxk
IG5vdCBhbGxvY2F0ZSBtZW1vcnkuIik7Ci0gICAgdm9pZCogZGF0YTsKLSAgICBFSU5BX0xJU1Rf
RlJFRShsaXN0T2ZJbWFnZXNMb2NhdGlvbiwgZGF0YSkKLSAgICAgICAgZnJlZShkYXRhKTsKLSAg
ICByZXR1cm4gMDsKLX0KLQotY29uc3QgY2hhciogZXdrX2ZyYW1lX3BsYWluX3RleHRfZ2V0KGNv
bnN0IEV2YXNfT2JqZWN0KiBld2tGcmFtZSkKLXsKLSAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JF
VFVSTihld2tGcmFtZSwgc21hcnREYXRhLCAwKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JF
VFVSTl9WQUwoc21hcnREYXRhLT5mcmFtZSwgMCk7Ci0KLSAgICBpZiAoIXNtYXJ0RGF0YS0+ZnJh
bWUtPmRvY3VtZW50KCkpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgV2ViQ29yZTo6RWxlbWVu
dCogZG9jdW1lbnRFbGVtZW50ID0gc21hcnREYXRhLT5mcmFtZS0+ZG9jdW1lbnQoKS0+ZG9jdW1l
bnRFbGVtZW50KCk7Ci0KLSAgICBpZiAoIWRvY3VtZW50RWxlbWVudCkKLSAgICAgICAgcmV0dXJu
IDA7Ci0KLSAgICByZXR1cm4gZWluYV9zdHJpbmdzaGFyZV9hZGQoZG9jdW1lbnRFbGVtZW50LT5p
bm5lclRleHQoKS51dGY4KCkuZGF0YSgpKTsKLX0KLQotRWluYV9Cb29sIGV3a19mcmFtZV9taXhl
ZF9jb250ZW50X2Rpc3BsYXllZF9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a0ZyYW1lKQotewot
ICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBzbWFydERhdGEsIGZhbHNl
KTsKLSAgICByZXR1cm4gc21hcnREYXRhLT5oYXNEaXNwbGF5ZWRNaXhlZENvbnRlbnQ7Ci19Ci0K
LUVpbmFfQm9vbCBld2tfZnJhbWVfbWl4ZWRfY29udGVudF9ydW5fZ2V0KGNvbnN0IEV2YXNfT2Jq
ZWN0KiBld2tGcmFtZSkKLXsKLSAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihld2tGcmFt
ZSwgc21hcnREYXRhLCBmYWxzZSk7Ci0gICAgcmV0dXJuIHNtYXJ0RGF0YS0+aGFzUnVuTWl4ZWRD
b250ZW50OwotfQotCi1Fd2tfQ2VydGlmaWNhdGVfU3RhdHVzIGV3a19mcmFtZV9jZXJ0aWZpY2F0
ZV9zdGF0dXNfZ2V0KEV2YXNfT2JqZWN0KiBld2tGcmFtZSkKLXsKLSAgICBFV0tfRlJBTUVfU0Rf
R0VUX09SX1JFVFVSTihld2tGcmFtZSwgc21hcnREYXRhLCBFV0tfQ0VSVElGSUNBVEVfU1RBVFVT
X05PX0NFUlRJRklDQVRFKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21h
cnREYXRhLT5mcmFtZSwgRVdLX0NFUlRJRklDQVRFX1NUQVRVU19OT19DRVJUSUZJQ0FURSk7Ci0K
LSAgICBjb25zdCBXZWJDb3JlOjpGcmFtZUxvYWRlciYgZnJhbWVMb2FkZXIgPSBzbWFydERhdGEt
PmZyYW1lLT5sb2FkZXIoKTsKLSAgICBjb25zdCBXZWJDb3JlOjpEb2N1bWVudExvYWRlciogZG9j
dW1lbnRMb2FkZXIgPSBmcmFtZUxvYWRlci5kb2N1bWVudExvYWRlcigpOwotICAgIGNvbnN0IFdl
YkNvcmU6OlVSTCBkb2N1bWVudFVSTCA9IGRvY3VtZW50TG9hZGVyLT5yZXF1ZXN0VVJMKCk7Ci0K
LSAgICBpZiAoIWRvY3VtZW50VVJMLnByb3RvY29sSXMoImh0dHBzIikpCi0gICAgICAgIHJldHVy
biBFV0tfQ0VSVElGSUNBVEVfU1RBVFVTX05PX0NFUlRJRklDQVRFOwotCi0gICAgaWYgKGZyYW1l
TG9hZGVyLnN1YmZyYW1lSXNMb2FkaW5nKCkpCi0gICAgICAgIHJldHVybiBFV0tfQ0VSVElGSUNB
VEVfU1RBVFVTX05PX0NFUlRJRklDQVRFOwotCi0gICAgaWYgKGRvY3VtZW50TG9hZGVyLT5yZXF1
ZXN0KCkuc291cE1lc3NhZ2VGbGFncygpICYgU09VUF9NRVNTQUdFX0NFUlRJRklDQVRFX1RSVVNU
RUQpCi0gICAgICAgIHJldHVybiBFV0tfQ0VSVElGSUNBVEVfU1RBVFVTX1RSVVNURUQ7Ci0KLSAg
ICByZXR1cm4gRVdLX0NFUlRJRklDQVRFX1NUQVRVU19VTlRSVVNURUQ7Ci19Ci0KLS8qKgotICog
QGludGVybmFsCi0gKiBSZXBvcnRzIGZyYW1lIGZhdmljb24gY2hhbmdlZC4KLSAqCi0gKiBAcGFy
YW0gZXdrRnJhbWUgRnJhbWUuCi0gKgotICogRW1pdHMgc2lnbmFsOiAiaWNvbixjaGFuZ2VkIiB3
aXRoIG5vIHBhcmFtZXRlcnMuCi0gKi8KLXZvaWQgZXdrX2ZyYW1lX2ljb25fY2hhbmdlZChFdmFz
X09iamVjdCogZXdrRnJhbWUpCi17Ci0gICAgREJHKCJld2tGcmFtZT0lcCIsIGV3a0ZyYW1lKTsK
LSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKGV3a0ZyYW1lLCAiaWNvbixjaGFu
Z2VkIiwgMCk7Ci19Ci0KLS8qKgotICogQGludGVybmFsCi0gKiBSZXBvcnRzIHVyaSBjaGFuZ2Vk
IGFuZCBzd2FwIGludGVybmFsIHN0cmluZyByZWZlcmVuY2UuCi0gKgotICogRW1pdHMgc2lnbmFs
OiAidXJpLGNoYW5nZWQiIHdpdGggbmV3IHVyaSBhcyBwYXJhbWV0ZXIuCi0gKi8KLWJvb2wgZXdr
X2ZyYW1lX3VyaV9jaGFuZ2VkKEV2YXNfT2JqZWN0KiBld2tGcmFtZSkKLXsKLSAgICBFV0tfRlJB
TUVfU0RfR0VUX09SX1JFVFVSTihld2tGcmFtZSwgc21hcnREYXRhLCBmYWxzZSk7Ci0gICAgRUlO
QV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+ZnJhbWUsIGZhbHNlKTsKLSAg
ICBXVEY6OkNTdHJpbmcgdXJpKHNtYXJ0RGF0YS0+ZnJhbWUtPmRvY3VtZW50KCktPnVybCgpLnN0
cmluZygpLnV0ZjgoKSk7Ci0KLSAgICBJTkZPKCJ1cmk9JXMiLCB1cmkuZGF0YSgpKTsKLSAgICBp
ZiAoIXVyaS5kYXRhKCkpIHsKLSAgICAgICAgRVJSKCJubyB1cmkiKTsKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIH0KLQotICAgIGVpbmFfc3RyaW5nc2hhcmVfcmVwbGFjZSgmc21hcnREYXRh
LT51cmksIHVyaS5kYXRhKCkpOwotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwo
ZXdrRnJhbWUsICJ1cmksY2hhbmdlZCIsICh2b2lkKilzbWFydERhdGEtPnVyaSk7Ci0gICAgcmV0
dXJuIHRydWU7Ci19Ci0KLS8qKgotICogQGludGVybmFsCi0gKgotICogRm9yY2VzIGxheW91dCBm
b3IgZnJhbWUuCi0gKi8KLXZvaWQgZXdrX2ZyYW1lX2ZvcmNlX2xheW91dChFdmFzX09iamVjdCog
ZXdrRnJhbWUpCi17Ci0gICAgREJHKCJld2tGcmFtZT0lcCIsIGV3a0ZyYW1lKTsKLSAgICBFV0tf
RlJBTUVfU0RfR0VUX09SX1JFVFVSTihld2tGcmFtZSwgc21hcnREYXRhKTsKLSAgICBFSU5BX1NB
RkVUWV9PTl9OVUxMX1JFVFVSTihzbWFydERhdGEtPmZyYW1lKTsKLSAgICBXZWJDb3JlOjpGcmFt
ZVZpZXcqIHZpZXcgPSBzbWFydERhdGEtPmZyYW1lLT52aWV3KCk7Ci0gICAgaWYgKHZpZXcpCi0g
ICAgICAgIHZpZXctPmZvcmNlTGF5b3V0KHRydWUpOwotfQotCi0vKioKLSAqIEBpbnRlcm5hbAot
ICoKLSAqIENyZWF0ZXMgcGx1Z2luLgotICovCi1XVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6V2lk
Z2V0PiBld2tfZnJhbWVfcGx1Z2luX2NyZWF0ZShFdmFzX09iamVjdCogZXdrRnJhbWUsIGNvbnN0
IFdlYkNvcmU6OkludFNpemUmIHBsdWdpblNpemUsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50
KiBlbGVtZW50LCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgY29uc3QgV1RGOjpWZWN0b3I8V1RG
OjpTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mIHBh
cmFtVmFsdWVzLCBjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUsIGJvb2wgbG9hZE1hbnVhbGx5
KQotewotI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQotICAgIERCRygiZXdrRnJhbWU9
JXAsIHNpemU9JWR4JWQsIGVsZW1lbnQ9JXAsIHVybD0lcywgbWltZVR5cGU9JXMiLAotICAgICAg
ICBld2tGcmFtZSwgcGx1Z2luU2l6ZS53aWR0aCgpLCBwbHVnaW5TaXplLmhlaWdodCgpLCBlbGVt
ZW50LAotICAgICAgICB1cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgbWltZVR5cGUudXRmOCgp
LmRhdGEoKSk7Ci0KLSAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihld2tGcmFtZSwgc2Qs
IDApOwotCi0gICAgLy8gVE9ETzogZW1pdCBzaWduYWwgYW5kIGFzayB3ZWJraXQgdXNlcnMgaWYg
c29tZXRoaW5nIGVsc2Ugc2hvdWxkIGJlIGRvbmUuCi0gICAgLy8gbGlrZSBjcmVhdGluZyBhbm90
aGVyIHggd2luZG93IChzZWUgZ3RrLCBpdCBhbGxvd3MgdXNlcnMgdG8gY3JlYXRlCi0gICAgLy8g
R3RrUGx1Z2luV2lkZ2V0LgotCi0gICAgV1RGOjpSZWZQdHI8V2ViQ29yZTo6UGx1Z2luVmlldz4g
cGx1Z2luVmlldyA9IFdlYkNvcmU6OlBsdWdpblZpZXc6OmNyZWF0ZQotICAgICAgICAoc2QtPmZy
YW1lLCBwbHVnaW5TaXplLCBlbGVtZW50LCB1cmwsIHBhcmFtTmFtZXMsIHBhcmFtVmFsdWVzLAot
ICAgICAgICBtaW1lVHlwZSwgbG9hZE1hbnVhbGx5KTsKLQotICAgIGlmIChwbHVnaW5WaWV3LT5z
dGF0dXMoKSA9PSBXZWJDb3JlOjpQbHVnaW5TdGF0dXNMb2FkZWRTdWNjZXNzZnVsbHkpCi0gICAg
ICAgIHJldHVybiBwbHVnaW5WaWV3LnJlbGVhc2UoKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFN
KGV3a0ZyYW1lKTsKLSAgICBVTlVTRURfUEFSQU0ocGx1Z2luU2l6ZSk7Ci0gICAgVU5VU0VEX1BB
UkFNKGVsZW1lbnQpOwotICAgIFVOVVNFRF9QQVJBTSh1cmwpOwotICAgIFVOVVNFRF9QQVJBTShw
YXJhbU5hbWVzKTsKLSAgICBVTlVTRURfUEFSQU0ocGFyYW1WYWx1ZXMpOwotICAgIFVOVVNFRF9Q
QVJBTShtaW1lVHlwZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGxvYWRNYW51YWxseSk7Ci0jZW5kaWYg
Ly8gI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQotICAgIHJldHVybiAwOwotfQotCi0v
KioKLSAqIEBpbnRlcm5hbAotICogUmVwb3J0cyB0aGF0IGVkaXRvciBjbGllbnQgc2VsZWN0aW9u
IHdhcyBjaGFuZ2VkLgotICoKLSAqIEBwYXJhbSBld2tGcmFtZSBGcmFtZQotICoKLSAqIEVtaXRz
IHNpZ25hbDogImVkaXRvcmNsaWVudHNlbGVjdGlvbixjaGFuZ2VkIiB3aXRoIG5vIHBhcmFtZXRl
cnMuCi0gKi8KLXZvaWQgZXdrX2ZyYW1lX2VkaXRvcl9jbGllbnRfc2VsZWN0aW9uX2NoYW5nZWQo
RXZhc19PYmplY3QqIGV3a0ZyYW1lKQotewotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNr
X2NhbGwoZXdrRnJhbWUsICJlZGl0b3JjbGllbnQsc2VsZWN0aW9uLGNoYW5nZWQiLCAwKTsKLSAg
ICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihld2tGcmFtZSwgc21hcnREYXRhKTsKLSAgICBl
d2tfdmlld19lZGl0b3JfY2xpZW50X3NlbGVjdGlvbl9jaGFuZ2VkKHNtYXJ0RGF0YS0+dmlldyk7
Ci19Ci0KLS8qKgotICogQGludGVybmFsCi0gKiBSZXBvcnRzIHRoYXQgZWRpdG9yIGNsaWVudCdz
IGNvbnRlbnRzIHdlcmUgY2hhbmdlZC4KLSAqCi0gKiBAcGFyYW0gbyBGcmFtZQotICoKLSAqIEVt
aXRzIHNpZ25hbDogImVkaXRvcmNsaWVudCxjb250ZW50cyxjaGFuZ2VkIiB3aXRoIG5vIHBhcmFt
ZXRlcnMuCi0gKi8KLXZvaWQgZXdrX2ZyYW1lX2VkaXRvcl9jbGllbnRfY29udGVudHNfY2hhbmdl
ZChFdmFzX09iamVjdCogZXdrRnJhbWUpCi17Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJh
Y2tfY2FsbChld2tGcmFtZSwgImVkaXRvcmNsaWVudCxjb250ZW50cyxjaGFuZ2VkIiwgMCk7Ci0g
ICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0RGF0YSk7Ci0gICAg
ZXdrX3ZpZXdfZWRpdG9yX2NsaWVudF9jb250ZW50c19jaGFuZ2VkKHNtYXJ0RGF0YS0+dmlldyk7
Ci19Ci0KLS8qKgotICogQGludGVybmFsCi0gKiBEZWZpbmVzIHdoZXRoZXIgdGhlIGZyYW1lIGhh
cyBkaXNwbGF5ZWQgbWl4ZWQgY29udGVudC4KLSAqCi0gKiBXaGVuIGEgZnJhbWUgaGFzIGRpc3Bs
YXllZCBtaXhlZCBjb250ZW50LCB0aGUgY3VycmVudGx5IGxvYWRlZCBVUkkgaXMgc2VjdXJlIChI
VFRQUykgYnV0IGl0IGhhcwotICogbG9hZGVkIGFuZCBkaXNwbGF5ZWQgYSByZXNvdXJjZSwgc3Vj
aCBhcyBhbiBpbWFnZSwgZnJvbSBhbiBpbnNlY3VyZSAoSFRUUCkgc291cmNlLgotICoKLSAqIEBw
YXJhbSBoYXNEaXNwbGF5ZWQgRG8gb3IgZG8gbm90IGNsZWFyIHRoZSBmbGFnIGZyb20gdGhlIGZy
YW1lLiBJZiBAYyB0cnVlLCB0aGUgY29udGFpbmVyIHZpZXcKLSAqICAgICAgICAgICAgICAgICAg
ICAgaXMgYWxzbyBub3RpZmllZCBhbmQgaXQgdGhlbiBlbWl0cyB0aGUgIm1peGVkY29udGVudCxk
aXNwbGF5ZWQiIHNpZ25hbC4KLSAqCi0gKiBFbWl0cyBzaWduYWw6ICJtaXhlZGNvbnRlbnQsZGlz
cGxheWVkIiB3aXRoIG5vIHBhcmFtZXRlcnMgd2hlbiBAcCBoYXNEaXNwbGF5ZWQgaXMgQGMgdHJ1
ZS4KLSAqLwotdm9pZCBld2tfZnJhbWVfbWl4ZWRfY29udGVudF9kaXNwbGF5ZWRfc2V0KEV2YXNf
T2JqZWN0KiBld2tGcmFtZSwgYm9vbCBoYXNEaXNwbGF5ZWQpCi17Ci0gICAgRVdLX0ZSQU1FX1NE
X0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0RGF0YSk7Ci0gICAgc21hcnREYXRhLT5oYXNE
aXNwbGF5ZWRNaXhlZENvbnRlbnQgPSBoYXNEaXNwbGF5ZWQ7Ci0KLSAgICBpZiAoaGFzRGlzcGxh
eWVkKSB7Ci0gICAgICAgIGV3a192aWV3X21peGVkX2NvbnRlbnRfZGlzcGxheWVkX3NldChzbWFy
dERhdGEtPnZpZXcsIHRydWUpOwotICAgICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19j
YWxsKGV3a0ZyYW1lLCAibWl4ZWRjb250ZW50LGRpc3BsYXllZCIsIDApOwotICAgIH0KLX0KLQot
LyoqCi0gKiBAaW50ZXJuYWwKLSAqIERlZmluZXMgd2hldGhlciB0aGUgZnJhbWUgaGFzIHJ1biBt
aXhlZCBjb250ZW50LgotICoKLSAqIFdoZW4gYSBmcmFtZSBoYXMgcnVuIG1peGVkIGNvbnRlbnQs
IHRoZSBjdXJyZW50bHkgbG9hZGVkIFVSSSBpcyBzZWN1cmUgKEhUVFBTKSBidXQgaXQgaGFzCi0g
KiBsb2FkZWQgYW5kIHJ1biBhIHJlc291cmNlLCBzdWNoIGFzIGEgc2NyaXB0LCBmcm9tIGFuIGlu
c2VjdXJlIChIVFRQKSBzb3VyY2UuCi0gKgotICogQHBhcmFtIGhhc0Rpc3BsYXllZCBEbyBvciBk
byBub3QgY2xlYXIgdGhlIGZsYWcgZnJvbSB0aGUgZnJhbWUuIElmIEBjIHRydWUsIHRoZSBjb250
YWluZXIgdmlldwotICogICAgICAgICAgICAgICAgICAgICBpcyBhbHNvIG5vdGlmaWVkIGFuZCBp
dCB0aGVuIGVtaXRzIHRoZSAibWl4ZWRjb250ZW50LHJ1biIgc2lnbmFsLgotICoKLSAqIEVtaXRz
IHNpZ25hbDogIm1peGVkY29udGVudCxydW4iIHdpdGggbm8gcGFyYW1ldGVycyB3aGVuIEBwIGhh
c1J1biBpcyBAYyB0cnVlLgotICovCi12b2lkIGV3a19mcmFtZV9taXhlZF9jb250ZW50X3J1bl9z
ZXQoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBib29sIGhhc1J1bikKLXsKLSAgICBFV0tfRlJBTUVf
U0RfR0VUX09SX1JFVFVSTihld2tGcmFtZSwgc21hcnREYXRhKTsKLSAgICBzbWFydERhdGEtPmhh
c1J1bk1peGVkQ29udGVudCA9IGhhc1J1bjsKLQotICAgIGlmIChoYXNSdW4pIHsKLSAgICAgICAg
ZXdrX3ZpZXdfbWl4ZWRfY29udGVudF9ydW5fc2V0KHNtYXJ0RGF0YS0+dmlldywgdHJ1ZSk7Ci0g
ICAgICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdrRnJhbWUsICJtaXhlZGNv
bnRlbnQscnVuIiwgMCk7Ci0gICAgfQotfQotCi0vKioKLSAqIEBpbnRlcm5hbAotICogUmVwb3J0
cyB0aGF0IHJlZmxlY3RlZCBYU1MgaXMgZW5jb3VudGVyZWQgaW4gdGhlIHBhZ2UgYW5kIHN1cHBy
ZXNzZWQuCi0gKgotICogQHBhcmFtIHhzc0luZm8gSW5mb3JtYXRpb24gcmVjZWl2ZWQgZnJvbSB0
aGUgWFNTQXVkaXRvciB3aGVuIFhTUyBpcyAKLSAqIGVuY291bnRlcmVkIGluIHRoZSBwYWdlLiAK
LSAqCi0gKiBFbWl0cyBzaWduYWw6ICJ4c3MsZGV0ZWN0ZWQiIHdpdGggcG9pbnRlciB0byBFd2tf
RnJhbWVfWHNzX05vdGlmaWNhdGlvbi4KLSAqLwotdm9pZCBld2tfZnJhbWVfeHNzX2RldGVjdGVk
KEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgY29uc3QgRXdrX0ZyYW1lX1hzc19Ob3RpZmljYXRpb24q
IHhzc0luZm8pCi17Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChld2tGcmFt
ZSwgInhzcyxkZXRlY3RlZCIsICh2b2lkKil4c3NJbmZvKTsKLX0KLQotbmFtZXNwYWNlIEVXS1By
aXZhdGUgewotCi12b2lkIHNldENvcmVGcmFtZShFdmFzX09iamVjdCogZXdrRnJhbWUsIFdlYkNv
cmU6OkZyYW1lKiBjb3JlRnJhbWUpCi17Ci0gICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4o
ZXdrRnJhbWUsIHNtYXJ0RGF0YSk7Ci0gICAgc21hcnREYXRhLT5mcmFtZSA9IGNvcmVGcmFtZTsK
LX0KLQotV2ViQ29yZTo6RnJhbWUqIGNvcmVGcmFtZShjb25zdCBFdmFzX09iamVjdCogZXdrRnJh
bWUpCi17Ci0gICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0RGF0
YSwgMCk7Ci0gICAgcmV0dXJuIHNtYXJ0RGF0YS0+ZnJhbWU7Ci19Ci0KLUV2YXNfT2JqZWN0KiBr
aXRGcmFtZShjb25zdCBXZWJDb3JlOjpGcmFtZSogY29yZUZyYW1lKQotewotICAgIGlmICghY29y
ZUZyYW1lKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xp
ZW50RWZsKiBmcmFtZUxvYWRlckNsaWVudCA9IF9ld2tfZnJhbWVfbG9hZGVyX2VmbF9nZXQoY29y
ZUZyYW1lKTsKLSAgICBpZiAoIWZyYW1lTG9hZGVyQ2xpZW50KQotICAgICAgICByZXR1cm4gMDsK
LQotICAgIHJldHVybiBmcmFtZUxvYWRlckNsaWVudC0+d2ViRnJhbWUoKTsKLX0KLQotfSAvLyBu
YW1lc3BhY2UgRVdLUHJpdmF0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3
a19mcmFtZS5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBlOTA3ODRkLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQv
ZWZsL2V3ay9ld2tfZnJhbWUuaAorKysgL2Rldi9udWxsCkBAIC0xLDk4NiArMCwwIEBACi0vKgot
ICAgIENvcHlyaWdodCAoQykgMjAwOS0yMDEwIFByb0ZVU0lPTiBlbWJlZGRlZCBzeXN0ZW1zCi0g
ICAgQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgU2Ftc3VuZyBFbGVjdHJvbmljcwotCi0gICAgVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgotICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCi0gICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCi0gICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
LSAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQotICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgotCi0gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAgIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gICAg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKLSAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSovCi0KLS8qKgot
ICogQGZpbGUgICAgZXdrX2ZyYW1lLmgKLSAqIEBicmllZiAgIFdlYktpdCBmcmFtZSBzbWFydCBv
YmplY3QuCi0gKgotICogVGhpcyBvYmplY3QgaXMgdGhlIGxvdyBsZXZlbCBhY2Nlc3MgdG8gV2Vi
S2l0LUVGTCBicm93c2VyCi0gKiBjb21wb25lbnQuIEl0IHJlcHJlc2VudHMgYm90aCB0aGUgbWFp
biBhbmQgaW50ZXJuYWwgZnJhbWVzIHRoYXQKLSAqIEhUTUwgcGFnZXMgY29udGFpbi4KLSAqCi0g
KiBFdmVyeSBld2tfdmlldyBoYXMgYXQgbGVhc3Qgb25lIGZyYW1lLCBjYWxsZWQgIm1haW4gZnJh
bWUiIGFuZAotICogcmV0cmlldmVkIHdpdGggZXdrX3ZpZXdfZnJhbWVfbWFpbl9nZXQoKS4gT25l
IGNhbiByZXRyaWV2ZSBmcmFtZSdzCi0gKiBvd25lciB2aWV3IHdpdGggZXdrX2ZyYW1lX3ZpZXdf
Z2V0KCkuIFBhcmVudCBmcmFtZSBjYW4gYmUgcmV0cmlldmVkCi0gKiB3aXRoIHN0YW5kYXJkIHNt
YXJ0IG9iamVjdCdzIGV2YXNfb2JqZWN0X3NtYXJ0X3BhcmVudF9nZXQoKS4KLSAqIENoaWxkcmVu
IGNhbiBiZSBhY2Nlc3NlZCB3aXRoIGV3a19mcmFtZV9jaGlsZHJlbl9pdGVyYXRvcl9uZXcoKSBv
cgotICogZXdrX2ZyYW1lX2NoaWxkX2ZpbmQoKS4KLSAqCi0gKiBUaGUgZm9sbG93aW5nIHNpZ25h
bHMgKHNlZSBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQoKSkgYXJlIGVtaXR0ZWQ6Ci0g
KgotICogIC0gImNvbnRlbnRzLHNpemUsY2hhbmdlZCIsIEV2YXNfQ29vcmRbMl06IHJlcG9ydHMg
Y29udGVudHMgc2l6ZQotICogICAgIHdlcmUgY2hhbmdlZCBkdWUgbmV3IGxheW91dCwgc2NyaXB0
IGFjdGlvbnMgb3IgYW55IG90aGVyIGV2ZW50cy4KLSAqICAtICJlZGl0b3JjbGllbnQsY29udGVu
dHMsY2hhbmdlZCIsIHZvaWQ6IHJlcG9ydHMgdGhhdCBlZGl0b3IgY2xpZW50J3MKLSAqICAgIGNv
bnRlbnRzIHdlcmUgY2hhbmdlZAotICogIC0gImljb24sY2hhbmdlZCIsIHZvaWQ6IGZyYW1lIGZh
dmljb24gY2hhbmdlZC4KLSAqICAtICJsb2FkLGNvbW1pdHRlZCIsIHZvaWQ6IHJlcG9ydHMgbG9h
ZCBjb21taXR0ZWQuCi0gKiAgLSAibG9hZCxkb2N1bWVudCxmaW5pc2hlZCIsIHZvaWQ6IGZyYW1l
IGZpbmlzaGVkIGxvYWRpbmcgdGhlIGRvY3VtZW50LgotICogIC0gImxvYWQsZXJyb3IiLCBjb25z
dCBFd2tfRnJhbWVfTG9hZF9FcnJvcio6IHJlcG9ydHMgbG9hZCBmYWlsZWQKLSAqICAgIGFuZCBp
dCBnaXZlcyBhIHBvaW50ZXIgdG8gc3RydWN0dXJlIGRlZmluaW5nIHRoZSBlcnJvciBhcyBhbiBh
cmd1bWVudC4KLSAqICAtICJsb2FkLGZpbmlzaGVkIiwgY29uc3QgRXdrX0ZyYW1lX0xvYWRfRXJy
b3IqOiByZXBvcnRzIGxvYWQKLSAqICAgIGZpbmlzaGVkIGFuZCBpdCBnaXZlcyBAYyBOVUxMIG9u
IHN1Y2Nlc3Mgb3IgcG9pbnRlciB0bwotICogICAgc3RydWN0dXJlIGRlZmluaW5nIHRoZSBlcnJv
ci4KLSAqICAtICJsb2FkLHJlc291cmNlLGZpbmlzaGVkIiwgdW5zaWduZWQgbG9uZyo6IHJlcG9y
dHMgcmVzb3VyY2UgbG9hZCBmaW5pc2hlZCBhbmQgaXQgZ2l2ZXMKLSAqICAgIGEgcG9pbnRlciB0
byBpdHMgaWRlbnRpZmllci4KLSAqICAtICJsb2FkLHJlc291cmNlLGZhaWxlZCIsIEV3a19GcmFt
ZV9Mb2FkX0Vycm9yKjogcmVwb3J0cyByZXNvdXJjZSBsb2FkIGZhaWx1cmUgYW5kIGl0Ci0gKiAg
ICBnaXZlcyBhIHBvaW50ZXIgdG8gc3RydWN0dXJlIGRlZmluaW5nIHRoZSBlcnJvciBhcyBhbiBh
cmd1bWVudC4KLSAqICAtICJsb2FkLGZpcnN0bGF5b3V0LGZpbmlzaGVkIiwgdm9pZDogZnJhbWUg
ZmluaXNoZWQgZmlyc3QgbGF5b3V0LgotICogIC0gImxvYWQsbm9uZW1wdHlsYXlvdXQsZmluaXNo
ZWQiLCB2b2lkOiBmcmFtZSBmaW5pc2hlZCBmaXJzdAotICogICAgbm9uLWVtcHR5IGxheW91dC4K
LSAqICAtICJsb2FkLHByb2dyZXNzIiwgZG91YmxlKjogbG9hZCBwcm9ncmVzcyBpcyBjaGFuZ2Vk
IChvdmVyYWxsIHZhbHVlCi0gKiAgICBmcm9tIDAuMCB0byAxLjAsIGNvbm5lY3QgdG8gaW5kaXZp
ZHVhbCBmcmFtZXMgZm9yIGZpbmUgZ3JhaW5lZCkuCi0gKiAgLSAibG9hZCxwcm92aXNpb25hbCIs
IHZvaWQ6IGZyYW1lIHN0YXJ0ZWQgcHJvdmlzaW9uYWwgbG9hZC4KLSAqICAtICJsb2FkLHByb3Zp
c2lvbmFsLGZhaWxlZCIsIEV3a19GcmFtZV9Mb2FkX0Vycm9yKjogZnJhbWUgcHJvdmlzaW9uYWwg
bG9hZCBmYWlsZWQuCi0gKiAgLSAibG9hZCxzdGFydGVkIiwgdm9pZDogZnJhbWUgc3RhcnRlZCBs
b2FkaW5nIHRoZSBkb2N1bWVudC4KLSAqICAtICJtaXhlZGNvbnRlbnQsZGlzcGxheWVkIiwgdm9p
ZDogZnJhbWUgaGFzIGxvYWRlZCBhbmQgZGlzcGxheWVkIG1peGVkIGNvbnRlbnQuCi0gKiAgLSAi
bWl4ZWRjb250ZW50LHJ1biIsIHZvaWQ6IGZyYW1lIGhhcyBsb2FkZWQgYW5kIHJ1biBtaXhlZCBj
b250ZW50LgotICogIC0gIm5hdmlnYXRpb24sZmlyc3QiLCB2b2lkOiBmaXJzdCBuYXZpZ2F0aW9u
IHdhcyBvY2N1cnJlZC4KLSAqICAtICJyZWRpcmVjdCxjYW5jZWxsZWQiLCB2b2lkOiBjbGllbnQg
cmVkaXJlY3Qgd2FzIGNhbmNlbGxlZC4KLSAqICAtICJyZWRpcmVjdCxsb2FkLHByb3Zpc2lvbmFs
Iiwgdm9pZDogcmVjZWl2ZWQgc2VydmVyIHJlZGlyZWN0IGZvciBwcm92aXNpb25hbCBsb2FkLgot
ICogIC0gInJlZGlyZWN0LHJlcXVlc3RlZCIsIGNvbnN0IGNoYXIqOiB1cmwgb2YgdGhlIGNsaWVu
dCByZWRpcmVjdCB0aGF0IHdpbGwgYmUgcGVyZm9ybWVkLgotICogIC0gInJlc291cmNlLHJlcXVl
c3QsbmV3IiwgRXdrX0ZyYW1lX1Jlc291cmNlX1JlcXVlc3QqOiByZXBvcnRzIHRoYXQKLSAqICAg
IHRoZXJlJ3MgYSBuZXcgcmVzb3VyY2UgcmVxdWVzdC4KLSAqICAtICJyZXNvdXJjZSxyZXF1ZXN0
LHdpbGxzZW5kIiwgRXdrX0ZyYW1lX1Jlc291cmNlX01lc3NhZ2VzKjogYSByZXNvdXJjZSB3aWxs
IGJlIHJlcXVlc3RlZC4KLSAqICAgIGFuZCB0aGUgcG9zc2libGUgcmVkaXJlY3QgcmVzcG9uc2Uu
Ci0gKiAgLSAicmVzb3VyY2UscmVzcG9uc2UscmVjZWl2ZWQiLCBFd2tfRnJhbWVfUmVzb3VyY2Vf
UmVzcG9uc2UqOiByZXBvcnRzIHRoYXQgYSByZXNwb25zZQotICogICAgdG8gYSByZXNvdXJjZSBy
ZXF1ZXN0IHdhcyByZWNlaXZlZC4KLSAqICAtICJzdGF0ZSxzYXZlIiwgdm9pZDogZnJhbWUncyBz
dGF0ZSB3aWxsIGJlIHNhdmVkIGFzIGEgaGlzdG9yeSBpdGVtLgotICogIC0gInRpdGxlLGNoYW5n
ZWQiLCBFd2tfVGV4dF9XaXRoX0RpcmVjdGlvbio6IHRpdGxlIG9mIHRoZSBtYWluIGZyYW1lIHdh
cyBjaGFuZ2VkLgotICogIC0gInVyaSxjaGFuZ2VkIiwgY29uc3QgY2hhcio6IHVyaSBvZiB0aGUg
bWFpbiBmcmFtZSB3YXMgY2hhbmdlZC4KLSAqICAtICJ4c3MsZGV0ZWN0ZWQiLCBFd2tfRnJhbWVf
WHNzX05vdGlmaWNhdGlvbio6IHJlZmxlY3RlZCBYU1MgaXMgZW5jb3VudGVyZWQgaW4gdGhlIHBh
Z2UgYW5kIHN1cHByZXNzZWQuCi0gKi8KLQotI2lmbmRlZiBld2tfZnJhbWVfaAotI2RlZmluZSBl
d2tfZnJhbWVfaAotCi0jaW5jbHVkZSAiZXdrX3NlY3VyaXR5X29yaWdpbi5oIgotCi0jaW5jbHVk
ZSA8RXZhcy5oPgotCi0jaWZkZWYgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIgewotI2VuZGlmCi0K
LS8vLyBDcmVhdGVzIGEgdHlwZSBuYW1lIGZvciBfRXdrX0ZyYW1lX0xvYWRfRXJyb3IuCi10eXBl
ZGVmIHN0cnVjdCBfRXdrX0ZyYW1lX0xvYWRfRXJyb3IgRXdrX0ZyYW1lX0xvYWRfRXJyb3I7Ci0v
KioKLSAqIEBicmllZiAgIFN0cnVjdHVyZSB1c2VkIHRvIHJlcG9ydCBsb2FkIGVycm9ycy4KLSAq
Ci0gKiBMb2FkIGVycm9ycyBhcmUgcmVwb3J0ZWQgYXMgc2lnbmFsIGJ5IGV3a192aWV3LiBBbGwg
dGhlIHN0cmluZ3MgYXJlCi0gKiB0ZW1wb3JhcnkgcmVmZXJlbmNlcyBhbmQgc2hvdWxkIEBiIG5v
dCBiZSB1c2VkIGFmdGVyIHRoZSBzaWduYWwKLSAqIGNhbGxiYWNrIHJldHVybnMuIElmIGl0J3Mg
cmVxdWlyZWQsIG1ha2UgY29waWVzIHdpdGggc3RyZHVwKCkgb3IKLSAqIGVpbmFfc3RyaW5nc2hh
cmVfYWRkKCkgKHRoZXkgYXJlIG5vdCBldmVuIGd1YXJhbnRlZWQgdG8gYmUKLSAqIHN0cmluZ3No
YXJlZCwgc28gbXVzdCB1c2UgZWluYV9zdHJpbmdzaGFyZV9hZGQoKSBhbmQgbm90Ci0gKiBlaW5h
X3N0cmluZ3NoYXJlX3JlZigpKS4KLSAqLwotc3RydWN0IF9Fd2tfRnJhbWVfTG9hZF9FcnJvciB7
Ci0gICAgaW50IGNvZGU7IC8qKjwgbnVtZXJpYyBlcnJvciBjb2RlICovCi0gICAgRWluYV9Cb29s
IGlzX2NhbmNlbGxhdGlvbjsgLyoqPCBpZiBsb2FkIGZhaWxlZCBiZWNhdXNlIGl0IHdhcyBjYW5j
ZWxlZCAqLwotICAgIGNvbnN0IGNoYXIgKmRvbWFpbjsgLyoqPCBlcnJvciBkb21haW4gbmFtZSAq
LwotICAgIGNvbnN0IGNoYXIgKmRlc2NyaXB0aW9uOyAvKio8IGVycm9yIGRlc2NyaXB0aW9uIGFs
cmVhZHkgbG9jYWxpemVkICovCi0gICAgY29uc3QgY2hhciAqZmFpbGluZ191cmw7IC8qKjwgdGhl
IHVybCB0aGF0IGZhaWxlZCB0byBsb2FkICovCi0gICAgdW5zaWduZWQgbG9uZyByZXNvdXJjZV9p
ZGVudGlmaWVyOyAvKio8IGlkZW50aWZpZXIgb2YgcmVzb3VyY2UgKi8KLSAgICBFdmFzX09iamVj
dCAqZnJhbWU7IC8qKjwgZnJhbWUgd2hlcmUgdGhlIGZhaWx1cmUgaGFwcGVuZWQgKi8KLX07Ci0K
LS8vLyBDcmVhdGVzIGEgdHlwZSBuYW1lIGZvciBfRXdrX0ZyYW1lX1Jlc291cmNlX1JlcXVlc3Qu
Ci10eXBlZGVmIHN0cnVjdCBfRXdrX0ZyYW1lX1Jlc291cmNlX1JlcXVlc3QgRXdrX0ZyYW1lX1Jl
c291cmNlX1JlcXVlc3Q7Ci0vKioKLSAqIEBicmllZiAgIFN0cnVjdHVyZSBjb250YWluaW5nIGRl
dGFpbHMgYWJvdXQgYSByZXNvdXJjZSByZXF1ZXN0LgotICoKLSAqIERldGFpbHMgZ2l2ZW4gYmVm
b3JlIGEgcmVzb3VyY2UgaXMgbG9hZGVkIG9uIGEgZ2l2ZW4gZnJhbWUuIEl0J3MgdXNlZCBpbgot
ICogRXdrX0ZyYW1lX1Jlc291cmNlX01lc3NhZ2VzIHRvIGluZm9ybSBhYm91dCB0aGUgZGV0YWls
cyBvZiBhIHJlc291cmNlIHJlcXVlc3QuCi0gKi8KLXN0cnVjdCBfRXdrX0ZyYW1lX1Jlc291cmNl
X1JlcXVlc3QgewotICAgIGNvbnN0IGNoYXIgKnVybDsgLyoqPCB1cmwgb2YgdGhlIHJlc291cmNl
ICovCi0gICAgY29uc3QgY2hhciAqZmlyc3RfcGFydHk7IC8qKjwgZmlyc3QgcGFydHkgZm9yIGNv
b2tpZXMsIGNhbiBub3QgYmUgY2hhbmdlZCAqLwotICAgIGNvbnN0IGNoYXIgKmh0dHBfbWV0aG9k
OyAvKio8IGh0dHAgbWV0aG9kLCBjYW4gbm90IGJlIGNoYW5nZWQgKi8KLSAgICBjb25zdCB1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXI7IC8qKjwgaWRlbnRpZmllciBvZiByZXNvdXJjZSwgY2FuIG5v
dCBiZSBjaGFuZ2VkICovCi0gICAgRXZhc19PYmplY3QgKmZyYW1lOyAvKio8IGZyYW1lIHdoZXJl
IHRoZSByZXNvdXJjZSBpcyByZXF1ZXN0ZWQgKi8KLSAgICBFaW5hX0Jvb2wgaXNfbWFpbl9mcmFt
ZV9yZXF1ZXN0OyAvKiogPCBpbmRpY2F0ZXMgaWYgdGhlIHJlcXVlc3QgaXMgZm9yIHRoZSBtYWlu
IGZyYW1lICovCi19OwotCi0vLy8gQ3JlYXRlcyBhIHR5cGUgbmFtZSBmb3IgX0V3a19GcmFtZV9S
ZXNvdXJjZV9SZXNwb25zZS4KLXR5cGVkZWYgc3RydWN0IF9Fd2tfRnJhbWVfUmVzb3VyY2VfUmVz
cG9uc2UgRXdrX0ZyYW1lX1Jlc291cmNlX1Jlc3BvbnNlOwotCi0vKioKLSAqIEBicmllZiBTdHJ1
Y3R1cmUgY29udGFpbmluZyBkZXRhaWxzIGFib3V0IGEgcmVzcG9uc2UgdG8gYSByZXNvdXJjZSBy
ZXF1ZXN0LgotICoKLSAqIERldGFpbHMgZ2l2ZW4gaW4gdGhlIHJlc3BvbnNlIHRvIGEgcmVzb3Vy
Y2UgcmVxdWVzdC4gSXQncyB1c2VkIGJ5Ci0gKiBld2tfZnJhbWVfcmVzcG9uc2VfcmVjZWl2ZWQo
KSB0byBpbmZvcm0gYWJvdXQgdGhlIGRldGFpbHMgb2YgYSByZXNwb25zZS4KLSAqLwotc3RydWN0
IF9Fd2tfRnJhbWVfUmVzb3VyY2VfUmVzcG9uc2UgewotICAgIGNvbnN0IGNoYXIgKnVybDsgLyoq
PCB1cmwgb2YgdGhlIHJlc291cmNlICovCi0gICAgaW50IHN0YXR1c19jb2RlOyAvKio8IGh0dHAg
c3RhdHVzIGNvZGUgKi8KLSAgICB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXI7IC8qKjwgaWRlbnRp
ZmllciBvZiByZXNvdXJjZSAqLwotICAgIGNvbnN0IGNoYXIgKm1pbWVfdHlwZTsgLyoqPCBNSU1F
IHR5cGUgb2YgdGhlIHJlc291cmNlICovCi19OwotCi0vLy8gQ3JlYXRlcyBhIHR5cGUgbmFtZSBm
b3IgX0V3a19GcmFtZV9SZXNvdXJjZV9NZXNzYWdlcy4KLXR5cGVkZWYgc3RydWN0IF9Fd2tfRnJh
bWVfUmVzb3VyY2VfTWVzc2FnZXMgRXdrX0ZyYW1lX1Jlc291cmNlX01lc3NhZ2VzOwotCi1zdHJ1
Y3QgX0V3a19GcmFtZV9SZXNvdXJjZV9NZXNzYWdlcyB7Ci0gICAgRXdrX0ZyYW1lX1Jlc291cmNl
X1JlcXVlc3QgKnJlcXVlc3Q7IC8qKjwgcmVzb3VyY2UgcmVxdWVzdCAqLwotICAgIEV3a19GcmFt
ZV9SZXNvdXJjZV9SZXNwb25zZSAqcmVkaXJlY3RfcmVzcG9uc2U7IC8qKjwgcmVkaXJlY3QgcmVz
cG9uc2UsIGNhbiBub3QgYmUgY2hhbmdlZCAqLwotfTsKLQotLy8vIEVudW0gY29udGFpbmluZyB0
ZXh0IGRpcmVjdGlvbmFsaXR5IHZhbHVlcy4KLXR5cGVkZWYgZW51bSB7Ci0gICAgRVdLX1RFWFRf
RElSRUNUSU9OX0RFRkFVTFQsIC8qKjwgTmF0dXJhbCB3cml0aW5nIGRpcmVjdGlvbiAoImluaGVy
aXQiKSAqLwotICAgIEVXS19URVhUX0RJUkVDVElPTl9MRUZUX1RPX1JJR0hULAotICAgIEVXS19U
RVhUX0RJUkVDVElPTl9SSUdIVF9UT19MRUZUCi19IEV3a19UZXh0X0RpcmVjdGlvbjsKLQotLy8v
IENyZWF0ZXMgYSB0eXBlIG5hbWUgZm9yIEV3a19UZXh0X1dpdGhfRGlyZWN0aW9uLgotdHlwZWRl
ZiBzdHJ1Y3QgX0V3a19UZXh0X1dpdGhfRGlyZWN0aW9uIEV3a19UZXh0X1dpdGhfRGlyZWN0aW9u
OwotCi1zdHJ1Y3QgX0V3a19UZXh0X1dpdGhfRGlyZWN0aW9uIHsKLSAgICBjb25zdCBjaGFyICpz
dHJpbmc7Ci0gICAgRXdrX1RleHRfRGlyZWN0aW9uIGRpcmVjdGlvbjsKLX07Ci0KLS8vLyBDcmVh
dGVzIGEgdHlwZSBuYW1lIGZvciBFd2tfRnJhbWVfWHNzX05vdGlmaWNhdGlvbi4KLXR5cGVkZWYg
c3RydWN0IF9Fd2tfRnJhbWVfWHNzX05vdGlmaWNhdGlvbiBFd2tfRnJhbWVfWHNzX05vdGlmaWNh
dGlvbjsKLQotLyoqCi0gKiBAYnJpZWYgICBTdHJ1Y3R1cmUgdXNlZCB0byByZXBvcnQgcmVmbGVj
dGVkIFhTUyBpcyBlbmNvdW50ZXJlZCBpbiB0aGUgcGFnZS4KLSAqCi0gKiBUaGlzIHN0cnVjdHVy
ZSBjb250YWlucyBpbmZvcm1hdGlvbiByZWNlaXZlZCBmcm9tIHRoZSBYU1NBdWRpdG9yIHdoZW4g
cmVmbGVjdGVkIFhTUyAKLSAqIGlzIGVuY291bnRlcmVkIGluIHRoZSBwYWdlLiBUaGUgc3RyaW5n
IGlzIHRlbXBvcmFyeSByZWZlcmVuY2UgYW5kIHNob3VsZCBAYiBub3QgCi0gKiBiZSB1c2VkIGFm
dGVyIHRoZSBzaWduYWwgY2FsbGJhY2sgcmV0dXJucy4gSWYgaXQncyByZXF1aXJlZCwgbWFrZSBh
IGNvcHkgb2YgaXQuCi0gKi8KLXN0cnVjdCBfRXdrX0ZyYW1lX1hzc19Ob3RpZmljYXRpb24gewot
ICAgIGNvbnN0IGNoYXIgKmluc2VjdXJlX3VybDsgLyoqPCBpbnNlY3VyZSB1cmwgb2YgdGhlIGRv
Y3VtZW50ICovCi0gICAgRWluYV9Cb29sIGlzX2VudGlyZV9wYWdlX2Jsb2NrZWQ7IC8qKiA8IGlu
ZGljYXRlcyBpZiB0aGUgZW50aXJlIHBhZ2Ugd2FzIGJsb2NrZWQgYnkgWFNTQXVkaXRvciAqLwot
fTsKLQotLy8vIEVudW0gY29udGFpbmluZyBoaXQgdGVzdCBkYXRhIHR5cGVzCi10eXBlZGVmIGVu
dW0gewotICAgIEVXS19ISVRfVEVTVF9SRVNVTFRfQ09OVEVYVF9ET0NVTUVOVCA9IDEgPDwgMSwK
LSAgICBFV0tfSElUX1RFU1RfUkVTVUxUX0NPTlRFWFRfTElOSyA9IDEgPDwgMiwKLSAgICBFV0tf
SElUX1RFU1RfUkVTVUxUX0NPTlRFWFRfSU1BR0UgPSAxIDw8IDMsCi0gICAgRVdLX0hJVF9URVNU
X1JFU1VMVF9DT05URVhUX01FRElBID0gMSA8PCA0LAotICAgIEVXS19ISVRfVEVTVF9SRVNVTFRf
Q09OVEVYVF9TRUxFQ1RJT04gPSAxIDw8IDUsCi0gICAgRVdLX0hJVF9URVNUX1JFU1VMVF9DT05U
RVhUX0VESVRBQkxFID0gMSA8PCA2Ci19IEV3a19IaXRfVGVzdF9SZXN1bHRfQ29udGV4dDsKLQot
Ly8vIEVudW0gY29udGFpbmluZyBuYXZpZ2F0aW9uIHR5cGVzCi10eXBlZGVmIGVudW0gIHsKLSAg
ICBFV0tfTkFWSUdBVElPTl9UWVBFX0xJTktfQ0xJQ0tFRCwKLSAgICBFV0tfTkFWSUdBVElPTl9U
WVBFX0ZPUk1fU1VCTUlUVEVELAotICAgIEVXS19OQVZJR0FUSU9OX1RZUEVfQkFDS19GT1JXQVJE
LAotICAgIEVXS19OQVZJR0FUSU9OX1RZUEVfUkVMT0FELAotICAgIEVXS19OQVZJR0FUSU9OX1RZ
UEVfRk9STV9SRVNVQk1JVFRFRCwKLSAgICBFV0tfTkFWSUdBVElPTl9UWVBFX09USEVSCi19IEV3
a19OYXZpZ2F0aW9uX1R5cGU7Ci0KLS8vLyBDcmVhdGVzIGEgdHlwZSBuYW1lIGZvciBfRXdrX0hp
dF9UZXN0LgotdHlwZWRlZiBzdHJ1Y3QgX0V3a19IaXRfVGVzdCBFd2tfSGl0X1Rlc3Q7Ci0vLy8g
U3RydWN0dXJlIHVzZWQgdG8gcmVwb3J0IGhpdCB0ZXN0IHJlc3VsdC4KLXN0cnVjdCBfRXdrX0hp
dF9UZXN0IHsKLSAgICBpbnQgeDsgLyoqPCB0aGUgaG9yaXpvbnRhbCBwb3NpdGlvbiBvZiB0aGUg
aGl0IHRlc3QgKi8KLSAgICBpbnQgeTsgLyoqPCB0aGUgdmVydGljYWwgcG9zaXRpb24gb2YgdGhl
IGhpdCB0ZXN0ICovCi0gICAgc3RydWN0IHsKLSAgICAgICAgaW50IHgsIHksIHcsIGg7Ci0gICAg
fSBib3VuZGluZ19ib3g7IC8qKjwgREVQUkVDQVRFRCwgc2VlIGV3a19mcmFtZV9oaXRfdGVzdF9u
ZXcoKSAqLwotICAgIEV3a19UZXh0X1dpdGhfRGlyZWN0aW9uIHRpdGxlOyAvKio8IHRpdGxlIG9m
IHRoZSBlbGVtZW50ICovCi0gICAgY29uc3QgY2hhciAqYWx0ZXJuYXRlX3RleHQ7IC8qKjwgdGhl
IGFsdGVybmF0ZSB0ZXh0IGZvciBpbWFnZSwgYXJlYSwgaW5wdXQgYW5kIGFwcGxldCAqLwotICAg
IEV2YXNfT2JqZWN0ICpmcmFtZTsgLyoqPCB0aGUgcG9pbnRlciB0byBmcmFtZSB3aGVyZSBoaXQg
dGVzdCB3YXMgcmVxdWVzdGVkICovCi0gICAgc3RydWN0IHsKLSAgICAgICAgY29uc3QgY2hhciAq
dGV4dDsgLyoqPCB0aGUgdGV4dCBvZiB0aGUgbGluayAqLwotICAgICAgICBjb25zdCBjaGFyICp1
cmw7IC8qKjwgVVJMIG9mIHRoZSBsaW5rICovCi0gICAgICAgIGNvbnN0IGNoYXIgKnRpdGxlOyAv
Kio8IHRoZSB0aXRsZSBvZiBsaW5rICovCi0gICAgICAgIEV2YXNfT2JqZWN0ICp0YXJnZXRfZnJh
bWU7Ci0gICAgfSBsaW5rOwotICAgIGNvbnN0IGNoYXIgKmltYWdlX3VyaTsKLSAgICBjb25zdCBj
aGFyICptZWRpYV91cmk7Ci0KLSAgICBFd2tfSGl0X1Rlc3RfUmVzdWx0X0NvbnRleHQgY29udGV4
dDsKLX07Ci0KLS8vLyBSZXByZXNlbnRzIGFjdGlvbnMgb2YgdG91Y2ggZXZlbnRzLgotdHlwZWRl
ZiBlbnVtIHsKLSAgICBFV0tfVE9VQ0hfU1RBUlQsCi0gICAgRVdLX1RPVUNIX01PVkUsCi0gICAg
RVdLX1RPVUNIX0VORCwKLSAgICBFV0tfVE9VQ0hfQ0FOQ0VMCi19IEV3a19Ub3VjaF9FdmVudF9U
eXBlOwotCi0vLy8gQ3JlYXRlcyBhIHR5cGUgbmFtZSBmb3IgX0V3a19Ub3VjaF9Qb2ludC4KLXR5
cGVkZWYgc3RydWN0IF9Fd2tfVG91Y2hfUG9pbnQgRXdrX1RvdWNoX1BvaW50OwotLy8vIFJlcHJl
c2VudHMgYSB0b3VjaCBwb2ludC4KLXN0cnVjdCBfRXdrX1RvdWNoX1BvaW50IHsKLSAgICBpbnQg
aWQ7IC8qKjwgaWRlbnRpZmllciBvZiB0aGUgdG91Y2ggZXZlbnQgKi8KLSAgICBpbnQgeDsgLyoq
PCB0aGUgaG9yaXpvbnRhbCBwb3NpdGlvbiBvZiB0aGUgdG91Y2ggZXZlbnQgKi8KLSAgICBpbnQg
eTsgLyoqPCB0aGUgaG9yaXpvbnRhbCBwb3NpdGlvbiBvZiB0aGUgdG91Y2ggZXZlbnQgKi8KLSAg
ICBFdmFzX1RvdWNoX1BvaW50X1N0YXRlIHN0YXRlOyAvKio8IHN0YXRlIG9mIHRoZSB0b3VjaCBl
dmVudCAqLwotfTsKLQotdHlwZWRlZiBlbnVtIHsKLSAgICBFV0tfVEVYVF9TRUxFQ1RJT05fTk9O
RSwKLSAgICBFV0tfVEVYVF9TRUxFQ1RJT05fQ0FSRVQsCi0gICAgRVdLX1RFWFRfU0VMRUNUSU9O
X1JBTkdFCi19IEV3a19UZXh0X1NlbGVjdGlvbl9UeXBlOwotCi0vKioKLSAqIFJlcHJlc2VudHMg
dGhlIHZhbGlkaXR5IG9mIGEgWC41MDkgY2VydGlmaWNhdGUgcmVsYXRlZCB0byB0aGUgY3VycmVu
dCBmcmFtZS4KLSAqCi0gKiBBIGNlcnRpZmljYXRlIGlzIGNvbnNpZGVyZWQgdW50cnVzdGVkIHdo
ZW4gYW55IHByb2JsZW0gaXMgZm91bmQgaW4gaXQ6IGl0IG1heSBoYXZlCi0gKiBleHBpcmVkLCB0
aGUgY2VydGlmaWNhdGUncyBDb21tb24gTmFtZSBkb2VzIG5vdCBtYXRjaCB0aGUgY3VycmVudCBo
b3N0LCB0aGUgY2VydGlmaWNhdGUKLSAqIGRvZXMgbm90IHZhbGlkYXRlIGFnYWluc3QgdGhlIGN1
cnJlbnQgc2V0IG9mIHJvb3QgQ0EgY2VydGlmaWNhdGVzIGV0Yy4KLSAqCi0gKiBAc2EgZXdrX2Zy
YW1lX2NlcnRpZmljYXRlX3N0YXR1c19nZXQsIGV3a19uZXR3b3JrX3Rsc19jYV9jZXJ0aWZpY2F0
ZXNfcGF0aF9zZXQKLSAqLwotdHlwZWRlZiBlbnVtIHsKLSAgICBFV0tfQ0VSVElGSUNBVEVfU1RB
VFVTX05PX0NFUlRJRklDQVRFID0gMSA8PCAxLCAvKio8IE5vIGNlcnRpZmljYXRlIHByb3ZpZGVk
IChub24tSFRUUFMgY29ubmVjdGlvbikuICovCi0gICAgRVdLX0NFUlRJRklDQVRFX1NUQVRVU19V
TlRSVVNURUQgPSAxIDw8IDIsIC8qKjwgVGhlIGNlcnRpZmljYXRlIHByb3ZpZGVkIGlzIG5vdCB0
cnVzdGVkLiAqLwotICAgIEVXS19DRVJUSUZJQ0FURV9TVEFUVVNfVFJVU1RFRCA9IDEgPDwgMyAv
Kio8IFRoZSBjZXJ0aWZpY2F0ZSBpcyB2YWxpZCBhbmQgZnVsbHkgdHJ1c3RlZC4gKi8KLX0gRXdr
X0NlcnRpZmljYXRlX1N0YXR1czsKLQotLyoqCi0gKiBSZXRyaWV2ZXMgdGhlIGV3a192aWV3IG9i
amVjdCB0aGF0IG93bnMgdGhpcyBmcmFtZS4KLSAqCi0gKiBAcGFyYW0gbyBmcmFtZSBvYmplY3Qg
dG8gZ2V0IHZpZXcgb2JqZWN0Ci0gKgotICogQHJldHVybiB2aWV3IG9iamVjdCBvciBAYyBOVUxM
IG9uIGZhaWx1cmUKLSAqLwotRUFQSSBFdmFzX09iamVjdCAqZXdrX2ZyYW1lX3ZpZXdfZ2V0KGNv
bnN0IEV2YXNfT2JqZWN0ICpvKTsKLQotLyoqCi0gKiBSZXRyaWV2ZXMgdGhlIEV3a19TZWN1cml0
eV9PcmlnaW4gb2YgdGhpcyBmcmFtZS4KLSAqCi0gKiBUaGUgcmV0dXJuZWQgb2JqZWN0IHNob3Vs
ZCBiZSBmcmVlZCBieSBld2tfc2VjdXJpdHlfb3JpZ2luX2ZyZWUoKS4KLSAqCi0gKiBAcGFyYW0g
byBmcmFtZSBvYmplY3QgdG8gZ2V0IHRoZSBzZWN1cml0eSBvcmlnaW4KLSAqCi0gKiBAcmV0dXJu
IHNlY3VyaXR5IG9yaWdpbiBvYmplY3QKLSAqLwotRUFQSSBFd2tfU2VjdXJpdHlfT3JpZ2luICpl
d2tfZnJhbWVfc2VjdXJpdHlfb3JpZ2luX2dldChjb25zdCBFdmFzX09iamVjdCAqbyk7Ci0KLS8q
KgotICogUmV0dXJucyBhIG5ldyBpdGVyYXRvciBvdmVyIGFsbCBkaXJlY3QgY2hpbGRyZW4gZnJh
bWVzLgotICoKLSAqIEtlZXAgZnJhbWUgb2JqZWN0IGludGFjdCB3aGlsZSBpdGVyYXRpb24gaGFw
cGVucyBvdGhlcndpc2UgZnJhbWUKLSAqIG1heSBiZSBkZXN0cm95ZWQgd2hpbGUgaXRlcmF0ZWQu
Ci0gKgotICogSXRlcmF0aW9uIHJlc3VsdHMgYXJlIEV2YXNfT2JqZWN0Kiwgc28gZ2l2ZSBlaW5h
X2l0ZXJhdG9yX25leHQoKSBhCi0gKiBwb2ludGVyIHRvIGl0LgotICoKLSAqIFJldHVybmVkIGl0
ZXJhdG9yIHNob3VsZCBiZSBmcmVlZCBieSBlaW5hX2l0ZXJhdG9yX2ZyZWUoKS4KLSAqCi0gKiBA
cGFyYW0gbyBmcmFtZSBvYmplY3QgdG8gY3JlYXRlIHRoZSBpdGVyYXRvcgotICoKLSAqIEByZXR1
cm4gYSBuZXdseSBhbGxvY2F0ZWQgaXRlcmF0b3Igb24gc3VjZXNzLCBvciBAYyBOVUxMIGlmIG5v
dCBwb3NzaWJsZSB0bwotICogICAgICBjcmVhdGUgdGhlIGl0ZXJhdG9yCi0gKi8KLUVBUEkgRWlu
YV9JdGVyYXRvciAqZXdrX2ZyYW1lX2NoaWxkcmVuX2l0ZXJhdG9yX25ldyhFdmFzX09iamVjdCAq
byk7Ci0KLS8qKgotICogRmluZHMgYSBjaGlsZCBmcmFtZSBieSBpdHMgbmFtZSwgcmVjdXJzaXZl
bHkuCi0gKgotICogRm9yIHByZS1kZWZpbmVkIG5hbWVzLCByZXR1cm5zIEBhIG8gaWYgQGEgbmFt
ZSBpcyAiX3NlbGYiIG9yCi0gKiAiX2N1cnJlbnQiLCByZXR1cm5zIEBhIG8ncyBwYXJlbnQgZnJh
bWUgaWYgQGEgbmFtZSBpcyAiX3BhcmVudCIsCi0gKiBhbmQgcmV0dXJucyB0aGUgbWFpbiBmcmFt
ZSBpZiBAYSBuYW1lIGlzICJfdG9wIi4gQWxzbyByZXR1cm5zIEBhIG8KLSAqIGlmIGl0IGlzIHRo
ZSBtYWluIGZyYW1lIGFuZCBAYSBuYW1lIGlzIGVpdGhlciAiX3BhcmVudCIgb3IKLSAqICJfdG9w
Ii4gRm9yIG90aGVyIG5hbWVzLCB0aGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIGZpcnN0IGZyYW1l
IHRoYXQKLSAqIG1hdGNoZXMgQGEgbmFtZS4gVGhpcyBmdW5jdGlvbiBzZWFyY2hlcyBAYSBvIGFu
ZCBpdHMgZGVzY2VuZGVudHMKLSAqIGZpcnN0LCB0aGVuIEBhIG8ncyBwYXJlbnQgYW5kIGl0cyBj
aGlsZHJlbiBtb3ZpbmcgdXAgdGhlIGhpZXJhcmNoeQotICogdW50aWwgYSBtYXRjaCBpcyBmb3Vu
ZC4gSWYgbm8gbWF0Y2ggaXMgZm91bmQgaW4gQGEgbydzIGhpZXJhcmNoeSwKLSAqIHRoaXMgZnVu
Y3Rpb24gd2lsbCBzZWFyY2ggZm9yIGEgbWF0Y2hpbmcgZnJhbWUgaW4gb3RoZXIgbWFpbiBmcmFt
ZQotICogaGllcmFyY2hpZXMuCi0gKgotICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0IHRvIGZpbmQg
YSBjaGlsZCBmcmFtZQotICogQHBhcmFtIG5hbWUgY2hpbGQgZnJhbWUgbmFtZQotICoKLSAqIEBy
ZXR1cm4gY2hpbGQgZnJhbWUgb2YgdGhlIGdpdmVuIGZyYW1lLCBvciBAYyBOVUxMIGlmIHRoZSB0
aGUgY2hpbGQgd2Fzbid0IGZvdW5kCi0gKi8KLUVBUEkgRXZhc19PYmplY3QgICAqZXdrX2ZyYW1l
X2NoaWxkX2ZpbmQoRXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKm5hbWUpOwotCi0vKioKLSAq
IEFza3MgdGhlIG1haW4gZnJhbWUgdG8gbG9hZCB0aGUgZ2l2ZW4gVVJJLgotICoKLSAqIEBwYXJh
bSBvIGZyYW1lIG9iamVjdCB0byBsb2FkIHVyaQotICogQHBhcmFtIHVyaSB1bmlmb3JtIHJlc291
cmNlIGlkZW50aWZpZXIgdG8gbG9hZAotICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1
Y2Nlc3MsIG9yIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZQotICovCi1FQVBJIEVpbmFfQm9vbCAg
ICBld2tfZnJhbWVfdXJpX3NldChFdmFzX09iamVjdCAqbywgY29uc3QgY2hhciAqdXJpKTsKLQot
LyoqCi0gKiBHZXRzIHRoZSB1cmkgb2YgdGhpcyBmcmFtZS4KLSAqCi0gKiBJdCByZXR1cm5zIGFu
IGludGVybmFsIHN0cmluZyBhbmQgc2hvdWxkIG5vdAotICogYmUgbW9kaWZpZWQuIFRoZSBzdHJp
bmcgaXMgZ3VhcmFudGVlZCB0byBiZSBzdHJpbmdzaGFyZWQuCi0gKgotICogQHBhcmFtIG8gZnJh
bWUgb2JqZWN0IHRvIGdldCB1cmkKLSAqCi0gKiBAcmV0dXJuIGZyYW1lIHVyaSBvbiBzdWNjZXNz
IG9yIEBjIE5VTEwgb24gZmFpbHVyZQotICovCi1FQVBJIGNvbnN0IGNoYXIgICpld2tfZnJhbWVf
dXJpX2dldChjb25zdCBFdmFzX09iamVjdCAqbyk7Ci0KLS8qKgotICogR2V0cyB0aGUgdGl0bGUg
b2YgdGhpcyBmcmFtZS4KLSAqCi0gKiBJdCByZXR1cm5zIGFuIGludGVybmFsIHN0cmluZyBhbmQg
c2hvdWxkIG5vdAotICogYmUgbW9kaWZpZWQuIFRoZSBzdHJpbmcgaXMgZ3VhcmFudGVlZCB0byBi
ZSBzdHJpbmdzaGFyZWQuCi0gKgotICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0IHRvIGdldCB0aXRs
ZQotICoKLSAqIEByZXR1cm4gZnJhbWUgdGl0bGUgb24gc3VjY2VzcyBvciBAYyBOVUxMIG9uIGZh
aWx1cmUKLSAqLwotRUFQSSBjb25zdCBFd2tfVGV4dF9XaXRoX0RpcmVjdGlvbiAgKmV3a19mcmFt
ZV90aXRsZV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOwotCi0vKioKLSAqIEdldHMgdGhlIG5h
bWUgb2YgdGhpcyBmcmFtZS4KLSAqCi0gKiBJdCByZXR1cm5zIGFuIGludGVybmFsIHN0cmluZyBh
bmQgc2hvdWxkIG5vdAotICogYmUgbW9kaWZpZWQuIFRoZSBzdHJpbmcgaXMgZ3VhcmFudGVlZCB0
byBiZSBzdHJpbmdzaGFyZWQuCi0gKgotICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0IHRvIGdldCBu
YW1lCi0gKgotICogQHJldHVybiBmcmFtZSBuYW1lIG9uIHN1Y2Nlc3Mgb3IgQGMgTlVMTCBvbiBm
YWlsdXJlCi0gKi8KLUVBUEkgY29uc3QgY2hhciAgKmV3a19mcmFtZV9uYW1lX2dldChjb25zdCBF
dmFzX09iamVjdCAqbyk7Ci0KLS8qKgotICogR2V0cyBsYXN0IGtub3duIGNvbnRlbnRzIHNpemUu
Ci0gKgotICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0IHRvIGdldCBjb250ZW50cyBzaXplCi0gKiBA
cGFyYW0gdyBwb2ludGVyIHRvIHN0b3JlIGNvbnRlbnRzIHNpemUgd2lkdGgsIG1heSBiZSBAYyBO
VUxMCi0gKiBAcGFyYW0gaCBwb2ludGVyIHRvIHN0b3JlIGNvbnRlbnRzIHNpemUgaGVpZ2h0LCBt
YXkgYmUgQGMgTlVMTAotICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3Mgb3Ig
QGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJlIGFuZAotICogICAgICAgICBAYSB3IGFuZCBAYSBoIHdp
bGwgYmUgemVyb2VkCi0gKi8KLUVBUEkgRWluYV9Cb29sICAgIGV3a19mcmFtZV9jb250ZW50c19z
aXplX2dldChjb25zdCBFdmFzX09iamVjdCAqbywgRXZhc19Db29yZCAqdywgRXZhc19Db29yZCAq
aCk7Ci0KLS8qKgotICogUmVxdWVzdHMgbG9hZGluZyB0aGUgZ2l2ZW4gY29udGVudHMgaW4gdGhp
cyBmcmFtZS4KLSAqCi0gKiBAcGFyYW0gbyBmcmFtZSBvYmplY3QgdG8gbG9hZCBkb2N1bWVudAot
ICogQHBhcmFtIGNvbnRlbnRzIHdoYXQgdG8gbG9hZCBpbnRvIGZyYW1lCi0gKiBAcGFyYW0gY29u
dGVudHNfc2l6ZSBzaXplIG9mIEBhIGNvbnRlbnRzIChpbiBieXRlcyksCi0gKiAgICAgICAgaWYg
QGMgMCBpcyBnaXZlbiwgbGVuZ3RoIG9mIEBhIGNvbnRlbnRzIGlzIHVzZWQKLSAqIEBwYXJhbSBt
aW1lX3R5cGUgdHlwZSBvZiBAYSBjb250ZW50cyBkYXRhLCBpZiBAYyBOVUxMIGlzIGdpdmVuICJ0
ZXh0L2h0bWwiIGlzIGFzc3VtZWQKLSAqIEBwYXJhbSBlbmNvZGluZyBlbmNvZGluZyBmb3IgQGEg
Y29udGVudHMgZGF0YSwgaWYgQGMgTlVMTCBpcyBnaXZlbiAiVVRGLTgiIGlzIGFzc3VtZWQKLSAq
IEBwYXJhbSBiYXNlX3VyaSBiYXNlIHVyaSB0byB1c2UgZm9yIHJlbGF0aXZlIHJlc291cmNlcywg
bWF5IGJlIEBjIE5VTEwsCi0gKiAgICAgICAgaWYgcHJvdmlkZWQgQGIgbXVzdCBiZSBhbiBhYnNv
bHV0ZSB1cmkKLSAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzZnVsIHJlcXVl
c3QsIEBjIEVJTkFfRkFMU0Ugb24gZXJyb3JzCi0gKi8KLUVBUEkgRWluYV9Cb29sICAgIGV3a19m
cmFtZV9jb250ZW50c19zZXQoRXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKmNvbnRlbnRzLCBz
aXplX3QgY29udGVudHNfc2l6ZSwgY29uc3QgY2hhciAqbWltZV90eXBlLCBjb25zdCBjaGFyICpl
bmNvZGluZywgY29uc3QgY2hhciAqYmFzZV91cmkpOwotCi0vKioKLSAqIFJlcXVlc3RzIGxvYWRp
bmcgYWx0ZXJuYXRpdmUgY29udGVudHMgZm9yIHVucmVhY2hhYmxlIFVSSSBpbiB0aGlzIGZyYW1l
LgotICoKLSAqIFRoaXMgaXMgc2ltaWxhciB0byBld2tfZnJhbWVfY29udGVudHNfc2V0KCksIGJ1
dCBpcyB1c2VkIHdoZW4gc29tZQotICogVVJJIHdhcyBmYWlsZWQgdG8gbG9hZCwgdXNpbmcgdGhl
IHByb3ZpZGVkIGNvbnRlbnQgaW5zdGVhZC4gVGhlIG1haW4KLSAqIGRpZmZlcmVuY2UgaXMgdGhh
dCBiYWNrLWZvcndhcmQgbmF2aWdhdGlvbiBsaXN0IGlzIG5vdCBjaGFuZ2VkLgotICoKLSAqIEBw
YXJhbSBvIGZyYW1lIG9iamVjdCB0byBsb2FkIGFsdGVybmF0aXZlIGNvbnRlbnQKLSAqIEBwYXJh
bSBjb250ZW50cyB3aGF0IHRvIGxvYWQgaW50byBmcmFtZSwgbXVzdCBAYiBub3QgYmUgQGMgTlVM
TAotICogQHBhcmFtIGNvbnRlbnRzX3NpemUgc2l6ZSBvZiBAYSBjb250ZW50cyAoaW4gYnl0ZXMp
LAotICogICAgICAgIGlmIEBjIDAgaXMgZ2l2ZW4sIGxlbmd0aCBvZiBAYSBjb250ZW50cyBpcyB1
c2VkCi0gKiBAcGFyYW0gbWltZV90eXBlIHR5cGUgb2YgQGEgY29udGVudHMgZGF0YSwgaWYgQGMg
TlVMTCBpcyBnaXZlbiAidGV4dC9odG1sIiBpcyBhc3N1bWVkCi0gKiBAcGFyYW0gZW5jb2Rpbmcg
ZW5jb2RpbmcgdXNlZCBmb3IgQGEgY29udGVudHMgZGF0YSwgaWYgQGMgTlVMTCBpcyBnaXZlbiAi
VVRGLTgiIGlzIGFzc3VtZWQKLSAqIEBwYXJhbSBiYXNlX3VyaSBiYXNlIFVSSSB0byB1c2UgZm9y
IHJlbGF0aXZlIHJlc291cmNlcywgbWF5IGJlIEBjIE5VTEwsCi0gKiAgICAgICAgaWYgcHJvdmlk
ZWQgbXVzdCBiZSBhbiBhYnNvbHV0ZSB1cmkKLSAqIEBwYXJhbSB1bnJlYWNoYWJsZV91cmkgdGhl
IFVSSSB0aGF0IGZhaWxlZCB0byBsb2FkIGFuZCBpcyBnZXR0aW5nIHRoZQotICogICAgICAgIGFs
dGVybmF0aXZlIHJlcHJlc2VudGF0aW9uLCBtdXN0IEBiIG5vdCBiZSBAYyBOVUxMCi0gKgotICog
QHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2Vzc2Z1bCByZXF1ZXN0LCBAYyBFSU5BX0ZBTFNF
IG9uIGVycm9ycwotICovCi1FQVBJIEVpbmFfQm9vbCAgICBld2tfZnJhbWVfY29udGVudHNfYWx0
ZXJuYXRlX3NldChFdmFzX09iamVjdCAqbywgY29uc3QgY2hhciAqY29udGVudHMsIHNpemVfdCBj
b250ZW50c19zaXplLCBjb25zdCBjaGFyICptaW1lX3R5cGUsIGNvbnN0IGNoYXIgKmVuY29kaW5n
LCBjb25zdCBjaGFyICpiYXNlX3VyaSwgY29uc3QgY2hhciAqdW5yZWFjaGFibGVfdXJpKTsKLQot
LyoqCi0gKiBSZXF1ZXN0cyBleGVjdXRpb24gb2YgdGhlIGdpdmVuIHNjcmlwdC4KLSAqCi0gKiBU
aGUgcmV0dXJuZWQgc3RyaW5nIEBiIHNob3VsZCBiZSBmcmVlZCBieSBlaW5hX3N0cmluZ3NoYXJl
X2RlbCgpIGFmdGVyIHVzZS4KLSAqCi0gKiBAcGFyYW0gbyBmcmFtZSBvYmplY3QgdG8gZXhlY3V0
ZSBzY3JpcHQKLSAqIEBwYXJhbSBzY3JpcHQgSmF2YSBTY3JpcHQgdG8gZXhlY3V0ZQotICoKLSAq
IEByZXR1cm4gbmV3bHkgYWxsb2NhdGVkIHN0cmluZyBmb3IgcmVzdWx0IG9yIEBjIE5VTEwgaWYg
dGhlIHJlc3VsdCBjYW5ub3QgYmUgY29udmVydGVkIHRvIHN0cmluZyBvciBmYWlsdXJlCi0gKi8K
LUVBUEkgY29uc3QgY2hhciAgICAgICAgKmV3a19mcmFtZV9zY3JpcHRfZXhlY3V0ZShFdmFzX09i
amVjdCAqbywgY29uc3QgY2hhciAqc2NyaXB0KTsKLQotLyoqCi0gKiBRdWVyaWVzIGlmIHRoZSBm
cmFtZSBpcyBlZGl0YWJsZS4KLSAqCi0gKiBAcGFyYW0gbyB0aGUgZnJhbWUgb2JqZWN0IHRvIHF1
ZXJ5IGVkaXRhYmxlIHN0YXRlCi0gKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgdGhlIGZy
YW1lIGlzIGVkaXRhYmxlLCBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZQotICovCi1FQVBJIEVpbmFf
Qm9vbCAgICBld2tfZnJhbWVfZWRpdGFibGVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKLQot
LyoqCi0gKiBTZXRzIGVkaXRhYmxlIHN0YXRlIGZvciBmcmFtZS4KLSAqCi0gKiBAcGFyYW0gbyB0
aGUgZnJhbWUgb2JqZWN0IHRvIHNldCBlZGl0YWJsZSBzdGF0ZQotICogQHBhcmFtIGVkaXRhYmxl
IGEgbmV3IHN0YXRlIHRvIHNldAotICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nl
c3MsIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlCi0gKi8KLUVBUEkgRWluYV9Cb29sICAgIGV3a19m
cmFtZV9lZGl0YWJsZV9zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBlZGl0YWJsZSk7Ci0K
LS8qKgotICogR2V0cyB0aGUgY29weSBvZiB0aGUgc2VsZWN0ZWQgdGV4dC4KLSAqCi0gKiBUaGUg
cmV0dXJuZWQgc3RyaW5nIEBiIHNob3VsZCBiZSBmcmVlZCBieSBlaW5hX3N0cmluZ3NoYXJlX2Rl
bCgpIGFmdGVyIHVzZS4KLSAqCi0gKiBAcGFyYW0gbyB0aGUgZnJhbWUgb2JqZWN0IHRvIGdldCBz
ZWxlY3RlZCB0ZXh0Ci0gKgotICogQHJldHVybiBhIG5ld2x5IGFsbG9jYXRlZCBzdHJpbmcgb3Ig
QGMgTlVMTCBpZiBub3RoaW5nIGlzIHNlbGVjdGVkIG9yIG9uIGZhaWx1cmUKLSAqLwotRUFQSSBj
b25zdCBjaGFyICAgICAgICAqZXdrX2ZyYW1lX3NlbGVjdGlvbl9nZXQoY29uc3QgRXZhc19PYmpl
Y3QgKm8pOwotCi0vKioKLSAqIFNlYXJjaGVzIHRoZSBnaXZlbiBzdHJpbmcgaW4gYSBkb2N1bWVu
dC4KLSAqCi0gKiBAcGFyYW0gbyBmcmFtZSBvYmplY3Qgd2hlcmUgdG8gc2VhcmNoIHRoZSB0ZXh0
Ci0gKiBAcGFyYW0gc3RyaW5nIHJlZmVyZW5jZSBzdHJpbmcgdG8gc2VhcmNoCi0gKiBAcGFyYW0g
Y2FzZV9zZW5zaXRpdmUgaWYgc2VhcmNoIHNob3VsZCBiZSBjYXNlIHNlbnNpdGl2ZSBvciBub3QK
LSAqIEBwYXJhbSBmb3J3YXJkIGlmIHNlYXJjaCBpcyBmcm9tIGN1cnNvciBhbmQgb24gb3IgYmFj
a3dhcmRzCi0gKiBAcGFyYW0gd3JhcCBpZiBzZWFyY2ggc2hvdWxkIHdyYXAgYXQgdGhlIGVuZAot
ICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIHRoZSBnaXZlbiBzdHJpbmcgd2FzIGZvdW5k
LCBAYyBFSU5BX0ZBTFNFIGlmIG5vdCBvciBmYWlsdXJlCi0gKi8KLUVBUEkgRWluYV9Cb29sICAg
IGV3a19mcmFtZV90ZXh0X3NlYXJjaChjb25zdCBFdmFzX09iamVjdCAqbywgY29uc3QgY2hhciAq
c3RyaW5nLCBFaW5hX0Jvb2wgY2FzZV9zZW5zaXRpdmUsIEVpbmFfQm9vbCBmb3J3YXJkLCBFaW5h
X0Jvb2wgd3JhcCk7Ci0KLS8qKgotICogTWFya3MgbWF0Y2hlcyB0aGUgZ2l2ZW4gc3RyaW5nIGlu
IGEgZG9jdW1lbnQuCi0gKgotICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0IHdoZXJlIHRvIHNlYXJj
aCB0ZXh0Ci0gKiBAcGFyYW0gc3RyaW5nIHJlZmVyZW5jZSBzdHJpbmcgdG8gbWF0Y2gKLSAqIEBw
YXJhbSBjYXNlX3NlbnNpdGl2ZSBpZiBtYXRjaCBzaG91bGQgYmUgY2FzZSBzZW5zaXRpdmUgb3Ig
bm90Ci0gKiBAcGFyYW0gaGlnaGxpZ2h0IGlmIG1hdGNoZXMgc2hvdWxkIGJlIGhpZ2hsaWdodGVk
Ci0gKiBAcGFyYW0gbGltaXQgbWF4aW11bSBhbW91bnQgb2YgbWF0Y2hlcywgb3IgemVybyB0byB1
bmxpbWl0ZWQKLSAqCi0gKiBAcmV0dXJuIG51bWJlciBvZiBtYXRjaGVkIEBhIHN0cmluZwotICov
Ci1FQVBJIHVuc2lnbmVkIGludCBld2tfZnJhbWVfdGV4dF9tYXRjaGVzX21hcmsoRXZhc19PYmpl
Y3QgKm8sIGNvbnN0IGNoYXIgKnN0cmluZywgRWluYV9Cb29sIGNhc2Vfc2Vuc2l0aXZlLCBFaW5h
X0Jvb2wgaGlnaGxpZ2h0LCB1bnNpZ25lZCBpbnQgbGltaXQpOwotCi0vKioKLSAqIFVubWFya3Mg
YWxsIG1hcmtlZCBtYXRjaGVzIGluIGEgZG9jdW1lbnQuCi0gKiBSZXZlcnNlcyB0aGUgZWZmZWN0
IG9mIGV3a19mcmFtZV90ZXh0X21hdGNoZXNfbWFyaygpLgotICoKLSAqIEBwYXJhbSBvIGZyYW1l
IG9iamVjdCB3aGVyZSB0byB1bm1hcmsgbWF0Y2hlcwotICoKLSAqIEByZXR1cm4gQGMgRUlOQV9U
UlVFIG9uIHN1Y2Nlc3MsIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZQotICovCi1FQVBJIEVpbmFf
Qm9vbCAgICBld2tfZnJhbWVfdGV4dF9tYXRjaGVzX3VubWFya19hbGwoRXZhc19PYmplY3QgKm8p
OwotCi0vKioKLSAqIFNldHMgd2hldGhlciBtYXRjaGVzIG1hcmtlZCB3aXRoIGV3a19mcmFtZV90
ZXh0X21hdGNoZXNfbWFyaygpIHNob3VsZCBiZSBoaWdobGlnaHRlZC4KLSAqCi0gKiBAcGFyYW0g
byBmcmFtZSBvYmplY3Qgd2hlcmUgdG8gc2V0IGlmIG1hdGNoZXMgYXJlIGhpZ2hsaWdodGVkIG9y
IG5vdAotICogQHBhcmFtIGhpZ2hsaWdodCBAYyBFSU5BX1RSVUUgaWYgbWF0Y2hlcyBhcmUgaGln
aGxpZ2h0ZWQsIEBjIEVJTkFfRkFMU0UgaWYgbm90Ci0gKgotICogQHJldHVybiBAYyBFSU5BX1RS
VUUgb24gc3VjY2VzcywgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJlCi0gKi8KLUVBUEkgRWluYV9C
b29sICAgIGV3a19mcmFtZV90ZXh0X21hdGNoZXNfaGlnaGxpZ2h0X3NldChFdmFzX09iamVjdCAq
bywgRWluYV9Cb29sIGhpZ2hsaWdodCk7Ci0KLS8qKgotICogUmV0dXJucyB3aGV0aGVyIG1hdGNo
ZXMgbWFya2VkIHdpdGggZXdrX2ZyYW1lX3RleHRfbWF0Y2hlc19tYXJrKCkgYXJlIGhpZ2hsaWdo
dGVkLgotICoKLSAqIEBwYXJhbSBvIGZyYW1lIG9iamVjdCB0byBxdWVyeSBpZiBtYXRjaGVzIGFy
ZSBoaWdobGlnaHRlZCBvciBub3QKLSAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiBtYXRj
aGVzIGFyZSBoaWdobGlnaHRlZCwgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UKLSAqLwotRUFQSSBF
aW5hX0Jvb2wgICAgZXdrX2ZyYW1lX3RleHRfbWF0Y2hlc19oaWdobGlnaHRfZ2V0KGNvbnN0IEV2
YXNfT2JqZWN0ICpvKTsKLQotLyoqCi0gKiBSZXR1cm5zIHRoZSBwb3NpdGlvbiBvZiB0aGUgbi10
aCBtYXRjaGVkIHRleHQgaW4gdGhlIGZyYW1lLgotICoKLSAqIEBwYXJhbSBvIGZyYW1lIG9iamVj
dCB3aGVyZSBtYXRjaGVzIGFyZSBtYXJrZWQKLSAqIEBwYXJhbSBuIGluZGV4IG9mIGVsZW1lbnQg
Ci0gKiBAcGFyYW0geCB0aGUgcG9pbnRlciB0byBzdG9yZSB0aGUgaG9yaXpvbnRhbCBwb3NpdGlv
biBvZiBAYSBuIG1hdGNoZWQgdGV4dCwgbWF5IGJlIEBjIE5VTEwKLSAqIEBwYXJhbSB5IHRoZSBw
b2ludGVyIHRvIHN0b3JlIHRoZSB2ZXJ0aWNhbCBwb3NpdGlvbiBvZiBAYSBuIG1hdGNoZWQgdGV4
dCwgbWF5IGJlIEBjIE5VTEwKLSAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNz
LCBAYyBFSU5BX0ZBTFNFIHdoZW4gbm8gbWF0Y2hlcyB3ZXJlIGZvdW5kIG9yCi0gKiAgICAgICAg
IEBhIG4gaXMgYmlnZ2VyIHRoYW4gc2VhcmNoIHJlc3VsdHMgb3Igb24gZmFpbHVyZQotICovCi1F
QVBJIEVpbmFfQm9vbCAgICBld2tfZnJhbWVfdGV4dF9tYXRjaGVzX250aF9wb3NfZ2V0KGNvbnN0
IEV2YXNfT2JqZWN0ICpvLCBzaXplX3QgbiwgaW50ICp4LCBpbnQgKnkpOwotCi0vKioKLSAqIEFz
a3MgZnJhbWUgdG8gc3RvcCBsb2FkaW5nLgotICoKLSAqIEBwYXJhbSBvIGZyYW1lIG9iamVjdCB0
byBzdG9wIGxvYWRpbmcKLSAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzLCBA
YyBFSU5BX0ZBTFNFIG90aGVyd2lzZQotICovCi1FQVBJIEVpbmFfQm9vbCAgICBld2tfZnJhbWVf
c3RvcChFdmFzX09iamVjdCAqbyk7Ci0KLS8qKgotICogQXNrcyBmcmFtZSB0byByZWxvYWQgY3Vy
cmVudCBkb2N1bWVudC4KLSAqCi0gKiBAcGFyYW0gbyBmcmFtZSBvYmplY3QgdG8gcmVsb2FkIGN1
cnJlbnQgZG9jdW1lbnQKLSAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzLCBA
YyBFSU5BX0ZBTFNFIG90aGVyd2lzZQotICoKLSAqIEBzZWUgZXdrX2ZyYW1lX3JlbG9hZF9mdWxs
KCkKLSAqLwotRUFQSSBFaW5hX0Jvb2wgICAgZXdrX2ZyYW1lX3JlbG9hZChFdmFzX09iamVjdCAq
byk7Ci0KLS8qKgotICogQXNrcyBmcmFtZSB0byBmdWxseSByZWxvYWQgY3VycmVudCBkb2N1bWVu
dCwgdXNpbmcgbm8gcHJldmlvdXMgY2FjaGVzLgotICoKLSAqIEBwYXJhbSBvIGZyYW1lIG9iamVj
dCB0byByZWxvYWQgY3VycmVudCBkb2N1bWVudAotICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVF
IG9uIHN1Y2Nlc3MsIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlCi0gKi8KLUVBUEkgRWluYV9Cb29s
ICAgIGV3a19mcmFtZV9yZWxvYWRfZnVsbChFdmFzX09iamVjdCAqbyk7Ci0KLS8qKgotICogQXNr
cyB0aGUgZnJhbWUgdG8gbmF2aWdhdGUgYmFjayBpbiB0aGUgaGlzdG9yeS4KLSAqCi0gKiBAcGFy
YW0gbyBmcmFtZSBvYmplY3QgdG8gbmF2aWdhdGUgYmFjawotICoKLSAqIEByZXR1cm4gQGMgRUlO
QV9UUlVFIG9uIHN1Y2Nlc3MsIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlCi0gKgotICogQHNlZSBl
d2tfZnJhbWVfbmF2aWdhdGUoKQotICovCi1FQVBJIEVpbmFfQm9vbCAgICBld2tfZnJhbWVfYmFj
ayhFdmFzX09iamVjdCAqbyk7Ci0KLS8qKgotICogQXNrcyBmcmFtZSB0byBuYXZpZ2F0ZSBmb3J3
YXJkIGluIHRoZSBoaXN0b3J5LgotICoKLSAqIEBwYXJhbSBvIGZyYW1lIG9iamVjdCB0byBuYXZp
Z2F0ZSBmb3J3YXJkCi0gKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcywgQGMg
RUlOQV9GQUxTRSBvdGhlcndpc2UKLSAqCi0gKiBAc2VlIGV3a19mcmFtZV9uYXZpZ2F0ZSgpCi0g
Ki8KLUVBUEkgRWluYV9Cb29sICAgIGV3a19mcmFtZV9mb3J3YXJkKEV2YXNfT2JqZWN0ICpvKTsK
LQotLyoqCi0gKiBOYXZpZ2F0ZXMgYmFjayBvciBmb3J3YXJkIGluIHRoZSBoaXN0b3J5LgotICoK
LSAqIEBwYXJhbSBvIGZyYW1lIG9iamVjdCB0byBuYXZpZ2F0ZQotICogQHBhcmFtIHN0ZXBzIGlm
IHBvc2l0aXZlIG5hdmlnYXRlcyB0aGF0IGFtb3VudCBmb3J3YXJkcywgaWYgbmVnYXRpdmUKLSAq
ICAgICAgICBkb2VzIGJhY2t3YXJkcwotICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1
Y2Nlc3MsIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlCi0gKi8KLUVBUEkgRWluYV9Cb29sICAgIGV3
a19mcmFtZV9uYXZpZ2F0ZShFdmFzX09iamVjdCAqbywgaW50IHN0ZXBzKTsKLQotLyoqCi0gKiBR
dWVyaWVzIGlmIGl0J3MgcG9zc2libGUgdG8gbmF2aWdhdGUgYmFja3dhcmRzIG9uZSBpdGVtIGlu
IHRoZSBoaXN0b3J5LgotICoKLSAqIEBwYXJhbSBvIGZyYW1lIG9iamVjdCB0byBxdWVyeSBpZiBi
YWNrd2FyZCBuYXZpZ2F0aW9uIGlzIHBvc3NpYmxlCi0gKgotICogQHJldHVybiBAYyBFSU5BX1RS
VUUgaWYgaXQncyBwb3NzaWJsZSB0byBuYXZpZ2F0ZSBiYWNrd2FyZHMgb25lIGl0ZW0gaW4gdGhl
IGhpc3RvcnksIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlCi0gKgotICogQHNlZSBld2tfZnJhbWVf
bmF2aWdhdGVfcG9zc2libGUoKQotICovCi1FQVBJIEVpbmFfQm9vbCAgICBld2tfZnJhbWVfYmFj
a19wb3NzaWJsZShFdmFzX09iamVjdCAqbyk7Ci0KLS8qKgotICogUXVlcmllcyBpZiBpdCdzIHBv
c3NpYmxlIHRvIG5hdmlnYXRlIGZvcndhcmRzIG9uZSBpdGVtIGluIHRoZSBoaXN0b3J5LgotICoK
LSAqIEBwYXJhbSBvIGZyYW1lIG9iamVjdCB0byBxdWVyeSBpZiBmb3J3YXJkIG5hdmlnYXRpb24g
aXMgcG9zc2libGUKLSAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiBpdCdzIHBvc3NpYmxl
IHRvIG5hdmlnYXRlIGZvcndhcmRzIGluIHRoZSBoaXN0b3J5LCBAYyBFSU5BX0ZBTFNFIG90aGVy
d2lzZQotICoKLSAqIEBzZWUgZXdrX2ZyYW1lX25hdmlnYXRlX3Bvc3NpYmxlKCkKLSAqLwotRUFQ
SSBFaW5hX0Jvb2wgICAgZXdrX2ZyYW1lX2ZvcndhcmRfcG9zc2libGUoRXZhc19PYmplY3QgKm8p
OwotCi0vKioKLSAqIFF1ZXJpZXMgaWYgaXQncyBwb3NzaWJsZSB0byBuYXZpZ2F0ZSBnaXZlbiBA
YSBzdGVwcyBpbiB0aGUgaGlzdG9yeS4KLSAqCi0gKiBAcGFyYW0gbyBmcmFtZSBvYmplY3QgdG8g
cXVlcnkgaWYgaXMgcG9zc2libGUgdG8gbmF2aWdhdGUgQGEgc3RlcHMgaW4gdGhlIGhpc3RvcnkK
LSAqIEBwYXJhbSBzdGVwcyBwb3NpdGl2ZSB2YWx1ZSBuYXZpZ2F0ZXMgdGhhdCBhbW91bnQgZm9y
d2FyZHMsIG5lZ2F0aXZlIHZhbHVlIAotICogICAgICAgIGRvZXMgYmFja3dhcmRzCi0gKgotICog
QHJldHVybiBAYyBFSU5BX1RSVUUgaWYgaXQncyBwb3NzaWJsZSB0byBuYXZpZ2F0ZSBAYSBzdGVw
cyBpbiB0aGUgaGlzdG9yeSwgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UKLSAqLwotRUFQSSBFaW5h
X0Jvb2wgICAgZXdrX2ZyYW1lX25hdmlnYXRlX3Bvc3NpYmxlKEV2YXNfT2JqZWN0ICpvLCBpbnQg
c3RlcHMpOwotCi0vKioKLSAqIEdldHMgdGhlIGN1cnJlbnQgcGFnZSB6b29tIGxldmVsIHVzZWQg
YnkgdGhpcyBmcmFtZS4KLSAqCi0gKiBAcGFyYW0gbyBmcmFtZSBvYmplY3QgdG8gZ2V0IHpvb20g
bGV2ZWwKLSAqCi0gKiBAcmV0dXJuIHBhZ2Ugem9vbSBsZXZlbCBmb3IgdGhlIGZyYW1lIG9yIEBj
IC0xLjAgb24gZmFpbHVyZQotICoKLSAqIEBzZWUgZXdrX2ZyYW1lX3RleHRfem9vbV9nZXQoKQot
ICovCi1FQVBJIGZsb2F0ICAgICAgICBld2tfZnJhbWVfcGFnZV96b29tX2dldChjb25zdCBFdmFz
X09iamVjdCAqbyk7Ci0KLS8qKgotICogU2V0cyB0aGUgY3VycmVudCBwYWdlIHpvb20gbGV2ZWwg
dXNlZCBieSB0aGlzIGZyYW1lLgotICoKLSAqIEBwYXJhbSBvIGZyYW1lIG9iamVjdCB0byBjaGFu
Z2Ugem9vbSBsZXZlbAotICogQHBhcmFtIHBhZ2Vfem9vbV9mYWN0b3IgYSBuZXcgem9vbSBsZXZl
bAotICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3Mgb3IgQGMgRUlOQV9GQUxT
RSBvbiBmYWlsdXJlCi0gKgotICogQHNlZSBld2tfZnJhbWVfdGV4dF96b29tX3NldCgpCi0gKi8K
LUVBUEkgRWluYV9Cb29sICAgIGV3a19mcmFtZV9wYWdlX3pvb21fc2V0KEV2YXNfT2JqZWN0ICpv
LCBmbG9hdCBwYWdlX3pvb21fZmFjdG9yKTsKLQotLyoqCi0gKiBHZXRzIHRoZSBjdXJyZW50IHRl
eHQgem9vbSBsZXZlbCB1c2VkIGJ5IHRoaXMgZnJhbWUuCi0gKgotICogQHBhcmFtIG8gZnJhbWUg
b2JqZWN0IHRvIGdldCB6b29tIGxldmVsCi0gKgotICogQHJldHVybiB0ZXh0IHpvb20gbGV2ZWwg
Zm9yIHRoZSBmcmFtZSBvciBAYyAtMS4wIG9uIGZhaWx1cmUKLSAqCi0gKiBAc2VlIGV3a19mcmFt
ZV9wYWdlX3pvb21fZ2V0KCkKLSAqLwotRUFQSSBmbG9hdCAgICAgICAgZXdrX2ZyYW1lX3RleHRf
em9vbV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOwotCi0vKioKLSAqIFNldHMgdGhlIGN1cnJl
bnQgdGV4dCB6b29tIGxldmVsIHVzZWQgYnkgdGhpcyBmcmFtZS4KLSAqCi0gKiBAcGFyYW0gbyBm
cmFtZSBvYmplY3QgdG8gY2hhbmdlIHpvb20gbGV2ZWwKLSAqIEBwYXJhbSB0ZXh0Wm9vbUZhY3Rv
ciBhIG5ldyB6b29tIGxldmVsCi0gKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2Vz
cyBvciBAYyBFSU5BX0ZBTFNFIG9uIGZhaWx1cmUKLSAqCi0gKiBAc2VlIGV3a19mcmFtZV9wYWdl
X3pvb21fc2V0KCkKLSAqLwotRUFQSSBFaW5hX0Jvb2wgICAgZXdrX2ZyYW1lX3RleHRfem9vbV9z
ZXQoRXZhc19PYmplY3QgKm8sIGZsb2F0IHRleHRfem9vbV9mYWN0b3IpOwotCi0vKioKLSAqIEZy
ZWVzIGhpdCB0ZXN0IGluc3RhbmNlIGNyZWF0ZWQgYnkgZXdrX2ZyYW1lX2hpdF90ZXN0X25ldygp
LgotICoKLSAqIEBwYXJhbSBoaXRfdGVzdCBpbnN0YW5jZQotICovCi1FQVBJIHZvaWQgICAgICAg
ICAgZXdrX2ZyYW1lX2hpdF90ZXN0X2ZyZWUoRXdrX0hpdF9UZXN0ICpoaXRfdGVzdCk7Ci0KLS8q
KgotICogQ3JlYXRlcyBhIG5ldyBoaXQgdGVzdCBmb3IgdGhlIGdpdmVuIGZyYW1lIGFuZCBwb2lu
dC4KLSAqCi0gKiBUaGUgcmV0dXJuZWQgb2JqZWN0IHNob3VsZCBiZSBmcmVlZCBieSBld2tfZnJh
bWVfaGl0X3Rlc3RfZnJlZSgpLgotICoKLSAqIEBwYXJhbSBvIGZyYW1lIG9iamVjdCB0byBkbyBo
aXQgdGVzdCBvbgotICogQHBhcmFtIHggdGhlIGhvcml6b250YWwgcG9zaXRpb24gdG8gcXVlcnkK
LSAqIEBwYXJhbSB5IHRoZSB2ZXJ0aWNhbCBwb3NpdGlvbiB0byBxdWVyeQotICoKLSAqIEByZXR1
cm4gYSBuZXdseSBhbGxvY2F0ZWQgaGl0IHRlc3Qgb24gc3VjY2VzcywgQGMgTlVMTCBvdGhlcndp
c2UKLSAqLwotRUFQSSBFd2tfSGl0X1Rlc3QgKmV3a19mcmFtZV9oaXRfdGVzdF9uZXcoY29uc3Qg
RXZhc19PYmplY3QgKm8sIGludCB4LCBpbnQgeSk7Ci0KLS8qKgotICogU2V0cyBhIHJlbGF0aXZl
IHNjcm9sbCBvZiB0aGUgZ2l2ZW4gZnJhbWUuCi0gKgotICogVGhpcyBmdW5jdGlvbiBkb2VzIHNj
cm9sbCBAYSBkeCBhbmQgQGEgZHkgcGl4ZWxzCi0gKiBmcm9tIHRoZSBjdXJyZW50IHBvc2l0aW9u
IG9mIHNjcm9sbC4KLSAqCi0gKiBAcGFyYW0gbyBmcmFtZSBvYmplY3QgdG8gc2Nyb2xsCi0gKiBA
cGFyYW0gZHggaG9yaXpvbnRhbCBvZmZzZXQgdG8gc2Nyb2xsCi0gKiBAcGFyYW0gZHkgdmVydGlj
YWwgb2Zmc2V0IHRvIHNjcm9sbAotICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nl
c3MsIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlCi0gKi8KLUVBUEkgRWluYV9Cb29sICAgIGV3a19m
cmFtZV9zY3JvbGxfYWRkKEV2YXNfT2JqZWN0ICpvLCBpbnQgZHgsIGludCBkeSk7Ci0KLS8qKgot
ICogU2V0cyBhbiBhYnNvbHV0ZSBzY3JvbGwgb2YgdGhlIGdpdmVuIGZyYW1lLgotICoKLSAqIEJv
dGggdmFsdWVzIGFyZSBmcm9tIHplcm8gdG8gdGhlIGNvbnRlbnRzIHNpemUgbWludXMgdGhlIHZp
ZXdwb3J0Ci0gKiBzaXplLiBTZWUgZXdrX2ZyYW1lX3Njcm9sbF9zaXplX2dldCgpLgotICoKLSAq
IEBwYXJhbSBvIGZyYW1lIG9iamVjdCB0byBzY3JvbGwKLSAqIEBwYXJhbSB4IGhvcml6b250YWwg
cG9zaXRpb24gdG8gc2Nyb2xsCi0gKiBAcGFyYW0geSB2ZXJ0aWNhbCBwb3NpdGlvbiB0byBzY3Jv
bGwKLSAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzLCBAYyBFSU5BX0ZBTFNF
IG90aGVyd2lzZQotICovCi1FQVBJIEVpbmFfQm9vbCAgICBld2tfZnJhbWVfc2Nyb2xsX3NldChF
dmFzX09iamVjdCAqbywgaW50IHgsIGludCB5KTsKLQotLyoqCi0gKiBHZXRzIHRoZSBwb3NzaWJs
ZSBzY3JvbGwgc2l6ZSBvZiB0aGUgZ2l2ZW4gZnJhbWUuCi0gKgotICogUG9zc2libGUgc2Nyb2xs
IHNpemUgaXMgY29udGVudHMgc2l6ZSBtaW51cyB0aGUgdmlld3BvcnQKLSAqIHNpemUuIEl0J3Mg
dGhlIGxhc3QgYWxsb3dlZCB2YWx1ZSBmb3IgZXdrX2ZyYW1lX3Njcm9sbF9zZXQoKQotICoKLSAq
IEBwYXJhbSBvIGZyYW1lIG9iamVjdCB0byBnZXQgc2Nyb2xsIHNpemUKLSAqIEBwYXJhbSB3IHRo
ZSBwb2ludGVyIHRvIHN0b3JlIHRoZSBob3Jpem9udGFsIHNpemUgdGhhdCBpcyBwb3NzaWJsZSB0
byBzY3JvbGwsCi0gKiAgICAgICAgbWF5IGJlIEBjIE5VTEwKLSAqIEBwYXJhbSBoIHRoZSBwb2lu
dGVyIHRvIHN0b3JlIHRoZSB2ZXJ0aWNhbCBzaXplIHRoYXQgaXMgcG9zc2libGUgdG8gc2Nyb2xs
LAotICogICAgICAgIG1heSBiZSBAYyBOVUxMCi0gKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUg
b24gc3VjY2VzcywgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UgYW5kCi0gKiAgICAgICAgIHZhbHVl
cyBhcmUgemVyb2VkCi0gKi8KLUVBUEkgRWluYV9Cb29sICAgIGV3a19mcmFtZV9zY3JvbGxfc2l6
ZV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8sIGludCAqdywgaW50ICpoKTsKLQotLyoqCi0gKiBH
ZXRzIHRoZSBjdXJyZW50IHNjcm9sbCBwb3NpdGlvbiBvZiBnaXZlbiBmcmFtZS4KLSAqCi0gKiBA
cGFyYW0gbyBmcmFtZSBvYmplY3QgdG8gZ2V0IHRoZSBjdXJyZW50IHNjcm9sbCBwb3NpdGlvbgot
ICogQHBhcmFtIHggdGhlIHBvaW50ZXIgdG8gc3RvcmUgdGhlIGhvcml6b250YWwgcG9zaXRpb24s
IG1heSBiZSBAYyBOVUxMCi0gKiBAcGFyYW0geSB0aGUgcG9pbnRlciB0byBzdG9yZSB0aGUgdmVy
dGljYWwgcG9zaXRpb24uIG1heSBiZSBAYyBOVUxMCi0gKgotICogQHJldHVybiBAYyBFSU5BX1RS
VUUgb24gc3VjY2VzcywgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UgYW5kCi0gKiAgICAgICAgIHZh
bHVlcyBhcmUgemVyb2VkLgotICovCi1FQVBJIEVpbmFfQm9vbCAgICBld2tfZnJhbWVfc2Nyb2xs
X3Bvc19nZXQoY29uc3QgRXZhc19PYmplY3QgKm8sIGludCAqeCwgaW50ICp5KTsKLQotLyoqCi0g
KiBHZXRzIHRoZSB2aXNpYmxlIGNvbnRlbnQgZ2VvbWV0cnkgb2YgdGhlIGZyYW1lLgotICoKLSAq
IEBwYXJhbSBvIGZyYW1lIG9iamVjdCB0byBxdWVyeSB2aXNpYmxlIGNvbnRlbnQgZ2VvbWV0cnkK
LSAqIEBwYXJhbSBpbmNsdWRlX3Njcm9sbGJhcnMgd2hlbmV2ZXIgdG8gaW5jbHVkZSBzY3JvbGxi
YXJzIHNpemUKLSAqIEBwYXJhbSB4IHRoZSBwb2ludGVyIHRvIHN0b3JlIHRoZSBob3Jpem9udGFs
IHBvc2l0aW9uLCBtYXkgYmUgQGMgTlVMTAotICogQHBhcmFtIHkgdGhlIHBvaW50ZXIgdG8gc3Rv
cmUgdGhlIHZlcnRpY2FsIHBvc2l0aW9uLCBtYXkgYmUgQGMgTlVMTAotICogQHBhcmFtIHcgdGhl
IHBvaW50ZXIgdG8gc3RvcmUgd2lkdGgsIG1heSBiZSBAYyBOVUxMCi0gKiBAcGFyYW0gaCB0aGUg
cG9pbnRlciB0byBzdG9yZSBoZWlnaHQsIG1heSBiZSBAYyBOVUxMCi0gKgotICogQHJldHVybiBA
YyBFSU5BX1RSVUUgb24gc3VjY2VzcywgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UgYW5kCi0gKiAg
ICAgICAgIHZhbHVlcyBhcmUgemVyb2VkCi0gKi8KLUVBUEkgRWluYV9Cb29sICAgIGV3a19mcmFt
ZV92aXNpYmxlX2NvbnRlbnRfZ2VvbWV0cnlfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvLCBFaW5h
X0Jvb2wgaW5jbHVkZV9zY3JvbGxiYXJzLCBpbnQgKngsIGludCAqeSwgaW50ICp3LCBpbnQgKmgp
OwotCi0vKioKLSAqIFF1ZXJpZXMgaWYgdGhlIGZyYW1lIHNob3VsZCBiZSByZXBhaW50ZWQgY29t
cGxldGVseS4KLSAqCi0gKiBGdW5jdGlvbiB0ZWxscyBpZiBkaXJ0eSBhcmVhcyBzaG91bGQgYmUg
cmVwYWludGVkIAotICogZXZlbiBpZiB0aGV5IGFyZSBvdXQgb2YgdGhlIHNjcmVlbi4KLSAqCi0g
KiBAcGFyYW0gbyBmcmFtZSBvYmplY3QgdG8gcXVlcnkgaWYgdGhlIGZyYW1lIHNob3VsZCBiZSBy
ZXBhaW50ZWQgY29tcGxldGVseQotICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIGFueSBk
aXJ0eSBhcmVhcyBzaG91bGQgYmUgcmVwYWludGVkLCBAYyBFSU5BX0ZBTFNFCi0gKiAgICAgICAg
IG90aGVyd2lzZQotICovCi1FQVBJIEVpbmFfQm9vbCAgICBld2tfZnJhbWVfcGFpbnRfZnVsbF9n
ZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOwotCi0vKioKLSAqIFNldHMgaWYgdGhlIGZyYW1lIHNo
b3VsZCBiZSByZXBhaW50ZWQgY29tcGxldGVseS4KLSAqCi0gKiBGdW5jdGlvbiBzZXRzIGlmIGRp
cnR5IGFyZWFzIHNob3VsZCBiZSByZXBhaW50ZWQgCi0gKiBldmVuIGlmIHRoZXkgYXJlIG91dCBv
ZiB0aGUgc2NyZWVuLgotICoKLSAqIEBwYXJhbSBvIGZyYW1lIG9iamVjdCB0byBzZXQgaWYgdGhl
IGZyYW1lIHNob3VsZCBiZSByZXBhaW50ZWQgY29tcGxldGVseQotICogQHBhcmFtIGZsYWcgQGMg
RUlOQV9UUlVFIHRvIHJlcGFpbnQgdGhlIGZyYW1lIGNvbXBsZXRlbHksCi0gKiAgICAgICAgICAg
ICBAYyBFSU5BX0ZBTFNFIGlmIG5vdAotICovCi1FQVBJIHZvaWQgICAgICAgICBld2tfZnJhbWVf
cGFpbnRfZnVsbF9zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBmbGFnKTsKLQotLyoqCi0g
KiBGZWVkcyB0aGUgZm9jdXMgaW4gZXZlbnQgdG8gdGhlIGZyYW1lLgotICoKLSAqIEBwYXJhbSBv
IGZyYW1lIG9iamVjdCB0byBmZWVkIGZvY3VzCi0gKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUg
aWYgdGhlIGZvY3VzIHdhcyBoYW5kbGVkLCBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZQotICovCi1F
QVBJIEVpbmFfQm9vbCAgICBld2tfZnJhbWVfZmVlZF9mb2N1c19pbihFdmFzX09iamVjdCAqbyk7
Ci0KLS8qKgotICogRmVlZHMgdGhlIGZvY3VzIG91dCBldmVudCB0byB0aGUgZnJhbWUuCi0gKgot
ICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0IHRvIHJlbW92ZSBmb2N1cwotICoKLSAqIEByZXR1cm4g
QGMgRUlOQV9GQUxTRSBzaW5jZSB0aGUgZmVhdHVyZSBpcyBub3QgaW1wbGVtZW50ZWQKLSAqLwot
RUFQSSBFaW5hX0Jvb2wgICAgZXdrX2ZyYW1lX2ZlZWRfZm9jdXNfb3V0KEV2YXNfT2JqZWN0ICpv
KTsKLQotLyoqCi0gKiBHZXRzIHRoZSBnZW9tZXRyeSwgcmVsYXRpdmUgdG8gdGhlIGZyYW1lLCBv
ZiB0aGUgZm9jdXNlZCBlbGVtZW50IGluIHRoZQotICogZG9jdW1lbnQuCi0gKgotICogQHBhcmFt
IG8gZnJhbWUgb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGZvY3VzZWQgZWxlbWVudAotICogQHBhcmFt
IHggcG9pbnRlciB3aGVyZSB0byBzdG9yZSB0aGUgWCB2YWx1ZSBvZiB0aGUgZ2VvbWV0cnksIG1h
eSBiZSBAYyBOVUxMCi0gKiBAcGFyYW0geCBwb2ludGVyIHdoZXJlIHRvIHN0b3JlIHRoZSBZIHZh
bHVlIG9mIHRoZSBnZW9tZXRyeSwgbWF5IGJlIEBjIE5VTEwKLSAqIEBwYXJhbSB4IHBvaW50ZXIg
d2hlcmUgdG8gc3RvcmUgd2lkdGggb2YgdGhlIGdlb21ldHJ5LCBtYXkgYmUgQGMgTlVMTAotICog
QHBhcmFtIHggcG9pbnRlciB3aGVyZSB0byBzdG9yZSBoZWlnaHQgb2YgdGhlIGdlb21ldHJ5LCBt
YXkgYmUgQGMgTlVMTAotICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIHRoZSBmcmFtZSBj
b250YWlucyB0aGUgY3VycmVudGx5IGZvY3VzZWQgZWxlbWVudCBhbmQKLSAqIGl0cyBnZW9tZXRy
eSB3YXMgY29ycmVjdGx5IGZldGNoZWQsIEBjIEVJTkFfRkFMU0UgaW4gYW55IG90aGVyIGNhc2UK
LSAqLwotRUFQSSBFaW5hX0Jvb2wgZXdrX2ZyYW1lX2ZvY3VzZWRfZWxlbWVudF9nZW9tZXRyeV9n
ZXQoY29uc3QgRXZhc19PYmplY3QgKm8sIGludCAqeCwgaW50ICp5LCBpbnQgKncsIGludCAqaCk7
Ci0KLS8qKgotICogRmVlZHMgdGhlIG1vdXNlIHdoZWVsIGV2ZW50IHRvIHRoZSBmcmFtZS4KLSAq
Ci0gKiBAcGFyYW0gbyBmcmFtZSBvYmplY3QgdG8gZmVlZCB0aGUgbW91c2Ugd2hlZWwgZXZlbnQK
LSAqIEBwYXJhbSBldiB0aGUgbW91c2Ugd2hlZWwgZXZlbnQKLSAqCi0gKiBAcmV0dXJuIEBjIEVJ
TkFfVFJVRSBpZiB0aGUgbW91c2Ugd2hlZWwgZXZlbnQgd2FzIGhhbmRsZWQsIEBjIEVJTkFfRkFM
U0Ugb3RoZXJ3aXNlCi0gKi8KLUVBUEkgRWluYV9Cb29sICAgIGV3a19mcmFtZV9mZWVkX21vdXNl
X3doZWVsKEV2YXNfT2JqZWN0ICpvLCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX1doZWVsICpldik7
Ci0KLS8qKgotICogRmVlZHMgdGhlIG1vdXNlIGRvd24gZXZlbnQgdG8gdGhlIGZyYW1lLgotICoK
LSAqIEBwYXJhbSBvIGZyYW1lIG9iamVjdCB0byBmZWVkIHRoZSBtb3VzZSBkb3duIGV2ZW50Ci0g
KiBAcGFyYW0gZXYgdGhlIG1vdXNlIGRvd24gZXZlbnQKLSAqCi0gKiBAcmV0dXJuIEBjIEVJTkFf
VFJVRSBpZiB0aGUgbW91c2UgZG93biBldmVudCB3YXMgaGFuZGxlZCwgQGMgRUlOQV9GQUxTRSBv
dGhlcndpc2UKLSAqLwotRUFQSSBFaW5hX0Jvb2wgICAgZXdrX2ZyYW1lX2ZlZWRfbW91c2VfZG93
bihFdmFzX09iamVjdCAqbywgY29uc3QgRXZhc19FdmVudF9Nb3VzZV9Eb3duICpldik7Ci0KLS8q
KgotICogRmVlZHMgdGhlIG1vdXNlIHVwIGV2ZW50IHRvIHRoZSBmcmFtZS4KLSAqCi0gKiBAcGFy
YW0gbyBmcmFtZSBvYmplY3QgdG8gZmVlZCB0aGUgbW91c2UgdXAgZXZlbnQKLSAqIEBwYXJhbSBl
diB0aGUgbW91c2UgdXAgZXZlbnQKLSAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiB0aGUg
bW91c2UgdXAgZXZlbnQgd2FzIGhhbmRsZWQsIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlCi0gKi8K
LUVBUEkgRWluYV9Cb29sICAgIGV3a19mcmFtZV9mZWVkX21vdXNlX3VwKEV2YXNfT2JqZWN0ICpv
LCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX1VwICpldik7Ci0KLS8qKgotICogRmVlZHMgdGhlIG1v
dXNlIG1vdmUgZXZlbnQgdG8gdGhlIGZyYW1lLgotICoKLSAqIEBwYXJhbSBvIGZyYW1lIG9iamVj
dCB0byBmZWVkIHRoZSBtb3VzZSBtb3ZlIGV2ZW50Ci0gKiBAcGFyYW0gZXYgdGhlIG1vdXNlIG1v
dmUgZXZlbnQKLSAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiB0aGUgbW91c2UgbW92ZSBl
dmVudCB3YXMgaGFuZGxlZCwgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UKLSAqLwotRUFQSSBFaW5h
X0Jvb2wgICAgZXdrX2ZyYW1lX2ZlZWRfbW91c2VfbW92ZShFdmFzX09iamVjdCAqbywgY29uc3Qg
RXZhc19FdmVudF9Nb3VzZV9Nb3ZlICpldik7Ci0KLS8qKgotICogRmVlZHMgdGhlIHRvdWNoIGV2
ZW50IHRvIHRoZSBmcmFtZS4KLSAqCi0gKiBAcGFyYW0gbyBmcmFtZSBvYmplY3QgdG8gZmVlZCB0
b3VjaCBldmVudAotICogQHBhcmFtIGFjdGlvbiB0aGUgYWN0aW9uIG9mIHRvdWNoIGV2ZW50Ci0g
KiBAcGFyYW0gcG9pbnRzIGEgbGlzdCBvZiBwb2ludHMgKEV3a19Ub3VjaF9Qb2ludCkgdG8gcHJv
Y2VzcwotICogQHBhcmFtIG1ldGFTdGF0ZSBtb2RpZmllcnMgc3RhdGUgb2YgdG91Y2ggZXZlbnQu
IFVzZXJzIGFyZSBleHBlY3RlZCB0byBwYXNzIE9SZWQgdmFsdWVzIG9mIHRoZSBFQ09SRV9FVkVO
VF9NT0RJRklFUiBtYWNyb3MgaW4gRWNvcmVfSW5wdXQuaCwgc3VjaCBhcyBFQ09SRV9FVkVOVF9N
T0RJRklFUl9BTFQgb3IgRUNPUkVfRVZFTlRfTU9ESUZJRVJfU0hJRlQKLSAqCi0gKiBAcmV0dXJu
IEBjIEVJTkFfVFJVRSBpZiB0b3VjaCBldmVudCB3YXMgaGFuZGxlZCwgQGMgRUlOQV9GQUxTRSBv
dGhlcndpc2UKLSAqLwotRUFQSSBFaW5hX0Jvb2wgICAgZXdrX2ZyYW1lX2ZlZWRfdG91Y2hfZXZl
bnQoRXZhc19PYmplY3QgKm8sIEV3a19Ub3VjaF9FdmVudF9UeXBlIGFjdGlvbiwgRWluYV9MaXN0
ICpwb2ludHMsIHVuc2lnbmVkIG1vZGlmaWVycyk7Ci0KLS8qKgotICogRmVlZHMgdGhlIGtleWJv
YXJkIGtleSBkb3duIGV2ZW50IHRvIHRoZSBmcmFtZS4KLSAqCi0gKiBAcGFyYW0gbyBmcmFtZSBv
YmplY3QgdG8gZmVlZCBldmVudAotICogQHBhcmFtIGV2IGtleWJvYXJkIGtleSBkb3duIGV2ZW50
Ci0gKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgdGhlIGtleSBkb3duIGV2ZW50IHdhcyBo
YW5kbGVkLCBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZQotICovCi1FQVBJIEVpbmFfQm9vbCAgICBl
d2tfZnJhbWVfZmVlZF9rZXlfZG93bihFdmFzX09iamVjdCAqbywgY29uc3QgRXZhc19FdmVudF9L
ZXlfRG93biAqZXYpOwotCi0vKioKLSAqIEZlZWRzIHRoZSBrZXlib2FyZCBrZXkgdXAgZXZlbnQg
dG8gdGhlIGZyYW1lLgotICoKLSAqIEBwYXJhbSBvIGZyYW1lIG9iamVjdCB0byBmZWVkIGV2ZW50
Ci0gKiBAcGFyYW0gZXYga2V5Ym9hcmQga2V5IHVwIGV2ZW50Ci0gKgotICogQHJldHVybiBAYyBF
SU5BX1RSVUUgaWYgdGhlIGtleSB1cCBldmVudCB3YXMgaGFuZGxlZCwgQGMgRUlOQV9GQUxTRSBv
dGhlcndpc2UKLSAqLwotRUFQSSBFaW5hX0Jvb2wgICAgZXdrX2ZyYW1lX2ZlZWRfa2V5X3VwKEV2
YXNfT2JqZWN0ICpvLCBjb25zdCBFdmFzX0V2ZW50X0tleV9VcCAqZXYpOwotCi0vKioKLSAqIFJl
dHVybnMgY3VycmVudCB0ZXh0IHNlbGVjdGlvbiB0eXBlLgotICoKLSAqIEBwYXJhbSBvIGEgZnJh
bWUgb2JqZWN0IHRvIGNoZWNrIHNlbGVjdGlvbiB0eXBlCi0gKiBAcmV0dXJuIGN1cnJlbnQgdGV4
dCBzZWxlY3Rpb24gdHlwZSBvbiBzdWNjZXNzIG9yIG5vIHNlbGVjdGlvbiBvdGhlcndpc2UKLSAq
LwotRUFQSSBFd2tfVGV4dF9TZWxlY3Rpb25fVHlwZSBld2tfZnJhbWVfdGV4dF9zZWxlY3Rpb25f
dHlwZV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOwotCi0vKioKLSAqIEdldHMgdGhlIGZyYW1l
IHNvdXJjZS4KLSAqCi0gKiBJdCdzIHBhcnQgb2YgSFRNTCBzYXZpbmcgZmVhdHVyZS4gQ3VycmVu
dGx5IG9ubHkgSFRNTCBkb2N1bWVudHMgYXJlIHN1cHBvcnRlZC4KLSAqCi0gKiBAcGFyYW0gbyBm
cmFtZSBzbWFydCBvYmplY3QgdG8gZ2V0IHRoZSBmcmFtZSBzb3VyY2UKLSAqIEBwYXJhbSBmcmFt
ZV9zb3VyY2UgYSBwb2ludGVyIHRvIHN0b3JlIHRoZSBzb3VyY2Ugb2YgZnJhbWUsCi0gKiAgICAg
ICAgbXVzdCBAYiBub3QgYmUgQGMgTlVMTCwgdGhpcyB2YWx1ZSBAYiBzaG91bGQgYmUgZnJlZWQg
YWZ0ZXIgdXNlCi0gKgotICogQHJldHVybiBAYyBsZW5ndGggb2YgQGEgZnJhbWVfc291cmNlIG9u
IHN1Y2Nlc3MsIG9yIEBjIC0xIG9uIGZhaWx1cmUKLSAqCi0gKiBAc2VlIGV3a19mcmFtZV9yZXNv
dXJjZXNfbG9jYXRpb25fZ2V0KCkKLSAqLwotRUFQSSBzc2l6ZV90IGV3a19mcmFtZV9zb3VyY2Vf
Z2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvLCBjaGFyICoqZnJhbWVfc291cmNlKTsKLQotLyoqCi0g
KiBHZXRzIHRoZSByZXNvdXJjZSBsaXN0IG9mIHRoaXMgZnJhbWUuCi0gKgotICogSXQncyBwYXJ0
IG9mIEhUTUwgc2F2aW5nIGZlYXR1cmUuIEN1cnJlbnRseSBvbmx5IGxvY2F0aW9ucyBvZiBpbWFn
ZXMgYXJlIHN1cHBvcnRlZC4KLSAqIEFuIGFwcGxpY2F0aW9uIG1pZ2h0IGZpbmQgdGhlc2UgdmFs
dWVzIGluIGZyYW1lIHNvdXJjZSBhbmQKLSAqIHJlcGxhY2UgdGhlbSB0byB0aGUgbG9jYWwgcGF0
aHMuIFZhbHVlcyBhcmUgbm90IGR1cGxpY2F0ZWQgYW5kIHRoZXkgYXJlIGRlY29kZWQuCi0gKgot
ICogQHBhcmFtIG8gZnJhbWUgc21hcnQgb2JqZWN0IHRvIGdldCB0aGUgcmVzb3VyY2VzIGxpc3QK
LSAqIEByZXR1cm4gQGMgRWluYV9MaXN0IHdpdGggbG9jYXRpb24gb2YgcmVzb3VyY2VzIG9uIHN1
Y2Nlc3MsIG9yIEBjIE5VTEwgb24gZmFpbHVyZSwKLSAqICAgICAgICAgdGhlIEVpbmFfTGlzdCBz
aG91bGQgYmUgZnJlZWQgYWZ0ZXIgdXNlCi0gKgotICogQHNlZSBld2tfZnJhbWVfc291cmNlX2dl
dCgpCi0gKi8KLUVBUEkgRWluYV9MaXN0ICpld2tfZnJhbWVfcmVzb3VyY2VzX2xvY2F0aW9uX2dl
dChjb25zdCBFdmFzX09iamVjdCAqbyk7Ci0KLS8qKgotICogUmV0cmlldmUgdGhlIGZyYW1lJ3Mg
Y29udGVudHMgaW4gcGxhaW4gdGV4dC4KLSAqCi0gKiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhl
IGNvbnRlbnRzIG9mIHRoZSBnaXZlbiBmcmFtZSBjb252ZXJ0ZWQgdG8gcGxhaW4gdGV4dCwKLSAq
IHJlbW92aW5nIGFsbCB0aGUgSFRNTCBmb3JtYXR0aW5nLgotICoKLSAqIFRoZSByZXR1cm5lZCBz
dHJpbmcgQGIgc2hvdWxkIGJlIGZyZWVkIGJ5IGVpbmFfc3RyaW5nc2hhcmVfZGVsKCkgYWZ0ZXIg
dXNlLgotICoKLSAqIEBwYXJhbSBld2tGcmFtZSBGcmFtZSBvYmplY3Qgd2hvc2UgY29udGVudHMg
dG8gcmV0cmlldmUuCi0gKgotICogQHJldHVybiBBIG5ld2x5IGFsbG9jYXRlZCBzdHJpbmcgKHdo
aWNoIG11c3QgYmUgZnJlZWQgYnkgdGhlIGNhbGxlciB3aXRoIEBjIGZyZWUoKSkKLSAqICAgICAg
ICAgb3IgQGMgTlVMTCBpbiBjYXNlIG9mIGZhaWx1cmUuCi0gKi8KLUVBUEkgY29uc3QgY2hhciAq
ZXdrX2ZyYW1lX3BsYWluX3RleHRfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKLQotLyoqCi0g
KiBSZXR1cm5zIHdoZXRoZXIgdGhlIGZyYW1lIGhhcyBkaXNwbGF5ZWQgbWl4ZWQgY29udGVudC4K
LSAqCi0gKiBXaGVuIGEgZnJhbWUgaGFzIGRpc3BsYXllZCBtaXhlZCBjb250ZW50LCBpdHMgY3Vy
cmVudCBVUkkgaXMgYW4gSFRUUFMgb25lLCBidXQgaXQgaGFzCi0gKiBsb2FkZWQgYW5kIGRpc3Bs
YXllZCBhIHJlc291cmNlIChzdWNoIGFzIGFuIGltYWdlKSBmcm9tIGFuIGluc2VjdXJlIChub24t
SFRUUFMpIFVSSS4KLSAqIEJvdGggdGhlIGZyYW1lIGFuZCB0aGUgY29udGFpbmVyIHZpZXcgc2Vu
ZCBhICJtaXhlZGNvbnRlbnQsZGlzcGxheWVkIiBzaWduYWwgaW4gdGhpcyBjYXNlLgotICoKLSAq
IFRoZSBzdGF0dXMgaXMgcmVzZXQgb25seSB3aGVuIGEgbG9hZCBldmVudCBvY2N1cnMgKGVnLiB0
aGUgcGFnZSBpcyByZWxvYWRlZCBvciBhIG5ldyBwYWdlIGlzIGxvYWRlZCkuCi0gKgotICogQHBh
cmFtIG8gVGhlIGZyYW1lIHRvIHF1ZXJ5LgotICoKLSAqIEBzYSBld2tfdmlld19taXhlZF9jb250
ZW50X2Rpc3BsYXllZF9nZXQKLSAqLwotRUFQSSBFaW5hX0Jvb2wgZXdrX2ZyYW1lX21peGVkX2Nv
bnRlbnRfZGlzcGxheWVkX2dldChjb25zdCBFdmFzX09iamVjdCAqbyk7Ci0KLS8qKgotICogUmV0
dXJucyB3aGV0aGVyIHRoZSBmcmFtZSBoYXMgcnVuIG1peGVkIGNvbnRlbnQuCi0gKgotICogV2hl
biBhIGZyYW1lIGhhcyBydW4gbWl4ZWQgY29udGVudCwgaXRzIGN1cnJlbnQgVVJJIGlzIGFuIEhU
VFBTIG9uZSwgYnV0IGl0IGhhcwotICogbG9hZGVkIGFuZCBydW4gYSByZXNvdXJjZSAoc3VjaCBh
cyBhbiBpbWFnZSkgZnJvbSBhbiBpbnNlY3VyZSAobm9uLUhUVFBTKSBVUkkuCi0gKiBCb3RoIHRo
ZSBmcmFtZSBhbmQgdGhlIGNvbnRhaW5lciB2aWV3IHNlbmQgYSAibWl4ZWRjb250ZW50LHJ1biIg
c2lnbmFsIGluIHRoaXMgY2FzZS4KLSAqCi0gKiBUaGUgc3RhdHVzIGlzIHJlc2V0IG9ubHkgd2hl
biBhIGxvYWQgZXZlbnQgb2NjdXJzIChlZy4gdGhlIHBhZ2UgaXMgcmVsb2FkZWQgb3IgYSBuZXcg
cGFnZSBpcyBsb2FkZWQpLgotICoKLSAqIEBwYXJhbSBvIFRoZSBmcmFtZSB0byBxdWVyeS4KLSAq
Ci0gKiBAc2EgZXdrX3ZpZXdfbWl4ZWRfY29udGVudF9ydW5fZ2V0Ci0gKi8KLUVBUEkgRWluYV9C
b29sIGV3a19mcmFtZV9taXhlZF9jb250ZW50X3J1bl9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8p
OwotCi0vKioKLSAqIFJldHVybnMgdGhlIHZhbGlkaXR5IG9mIHRoZSBYLjUwOSBjZXJ0aWZpY2F0
ZSByZWxhdGVkIHRvIHRoZSBjdXJyZW50IGZyYW1lLgotICovCi1FQVBJIEV3a19DZXJ0aWZpY2F0
ZV9TdGF0dXMgZXdrX2ZyYW1lX2NlcnRpZmljYXRlX3N0YXR1c19nZXQoRXZhc19PYmplY3QgKm8p
OwotCi0jaWZkZWYgX19jcGx1c3BsdXMKLX0KLSNlbmRpZgotI2VuZGlmIC8vIGV3a19mcmFtZV9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lX3ByaXZhdGUuaCBi
L1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWVfcHJpdmF0ZS5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwOTRjMWUyLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvZWZs
L2V3ay9ld2tfZnJhbWVfcHJpdmF0ZS5oCisrKyAvZGV2L251bGwKQEAgLTEsOTMgKzAsMCBAQAot
LyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBQcm9GVVNJT04gZW1iZWRkZWQgc3lzdGVt
cwotICAgIENvcHlyaWdodCAoQykgMjAwOS0yMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKLQotICAg
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKLSAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYwotICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLQotICAgIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCi0gICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKLSAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KLQotICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAgICBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwot
ICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsCi0gICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0qLwotCi0j
aWZuZGVmIGV3a19mcmFtZV9wcml2YXRlX2gKLSNkZWZpbmUgZXdrX2ZyYW1lX3ByaXZhdGVfaAot
Ci0jaW5jbHVkZSAiZXdrX2ZyYW1lLmgiCi0jaW5jbHVkZSA8RXZhcy5oPgotI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBGcmFtZUxvYWRl
ckNsaWVudEVmbDsKLWNsYXNzIEhpc3RvcnlJdGVtOwotY2xhc3MgSFRNTFBsdWdJbkVsZW1lbnQ7
Ci1jbGFzcyBIVE1MRnJhbWVPd25lckVsZW1lbnQ7Ci1jbGFzcyBVUkw7Ci1jbGFzcyBGcmFtZTsK
LWNsYXNzIEludFNpemU7Ci1jbGFzcyBXaWRnZXQ7Ci19Ci0KLUV2YXNfT2JqZWN0KiBld2tfZnJh
bWVfYWRkKEV2YXMqIGNhbnZhcyk7Ci1ib29sIGV3a19mcmFtZV9pbml0KEV2YXNfT2JqZWN0KiBl
d2tGcmFtZSwgRXZhc19PYmplY3QqIHZpZXcsIFBhc3NPd25QdHI8V2ViQ29yZTo6RnJhbWVMb2Fk
ZXJDbGllbnRFZmw+IGZyYW1lTG9hZGVyQ2xpZW50KTsKLUV2YXNfT2JqZWN0KiBld2tfZnJhbWVf
Y2hpbGRfYWRkKEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgY29uc3QgV1RGOjpTdHJpbmcmIG5hbWUs
IFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50KTsKLXZvaWQgZXdr
X2ZyYW1lX3ZpZXdfc2V0KEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgRXZhc19PYmplY3QqIG5ld1Bh
cmVudCk7Ci0KLXZvaWQgZXdrX2ZyYW1lX2NvcmVfZ29uZShFdmFzX09iamVjdCogZXdrRnJhbWUp
OwotCi12b2lkIGV3a19mcmFtZV9sb2FkX2NvbW1pdHRlZChFdmFzX09iamVjdCogZXdrRnJhbWUp
Owotdm9pZCBld2tfZnJhbWVfbG9hZF9zdGFydGVkKEV2YXNfT2JqZWN0KiBld2tGcmFtZSk7Ci12
b2lkIGV3a19mcmFtZV9sb2FkX3Byb3Zpc2lvbmFsKEV2YXNfT2JqZWN0KiBld2tGcmFtZSk7Ci12
b2lkIGV3a19mcmFtZV9sb2FkX3Byb3Zpc2lvbmFsX2ZhaWxlZChFdmFzX09iamVjdCogZXdrRnJh
bWUsIGNvbnN0IEV3a19GcmFtZV9Mb2FkX0Vycm9yKiBlcnJvcik7Ci12b2lkIGV3a19mcmFtZV9s
b2FkX2ZpcnN0bGF5b3V0X2ZpbmlzaGVkKEV2YXNfT2JqZWN0KiBld2tGcmFtZSk7Ci12b2lkIGV3
a19mcmFtZV9sb2FkX2ZpcnN0bGF5b3V0X25vbmVtcHR5X2ZpbmlzaGVkKEV2YXNfT2JqZWN0KiBl
d2tGcmFtZSk7Ci12b2lkIGV3a19mcmFtZV9sb2FkX2RvY3VtZW50X2ZpbmlzaGVkKEV2YXNfT2Jq
ZWN0KiBld2tGcmFtZSk7Ci12b2lkIGV3a19mcmFtZV9sb2FkX2ZpbmlzaGVkKEV2YXNfT2JqZWN0
KiBld2tGcmFtZSwgY29uc3QgY2hhciogZXJyb3JEb21haW4sIGludCBlcnJvckNvZGUsIGJvb2wg
aXNDYW5jZWxsYXRpb24sIGNvbnN0IGNoYXIqIGVycm9yRGVzY3JpcHRpb24sIGNvbnN0IGNoYXIq
IGZhaWxpbmdVcmwpOwotdm9pZCBld2tfZnJhbWVfbG9hZF9yZXNvdXJjZV9maW5pc2hlZChFdmFz
X09iamVjdCogZXdrRnJhbWUsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcik7Ci12b2lkIGV3a19m
cmFtZV9sb2FkX3Jlc291cmNlX2ZhaWxlZChFdmFzX09iamVjdCogZXdrRnJhbWUsIEV3a19GcmFt
ZV9Mb2FkX0Vycm9yKiBlcnJvcik7Ci12b2lkIGV3a19mcmFtZV9sb2FkX2Vycm9yKEV2YXNfT2Jq
ZWN0KiBld2tGcmFtZSwgY29uc3QgY2hhciogZXJyb3JEb21haW4sIGludCBlcnJvckNvZGUsIGJv
b2wgaXNDYW5jZWxsYXRpb24sIGNvbnN0IGNoYXIqIGVycm9yRGVzY3JpcHRpb24sIGNvbnN0IGNo
YXIqIGZhaWxpbmdVcmwpOwotdm9pZCBld2tfZnJhbWVfbG9hZF9wcm9ncmVzc19jaGFuZ2VkKEV2
YXNfT2JqZWN0KiBld2tGcmFtZSk7Ci0KLXZvaWQgZXdrX2ZyYW1lX3JlZGlyZWN0X2NhbmNlbGxl
ZChFdmFzX09iamVjdCogZXdrRnJhbWUpOwotdm9pZCBld2tfZnJhbWVfcmVkaXJlY3RfcHJvdmlz
aW9uYWxfbG9hZChFdmFzX09iamVjdCogZXdrRnJhbWUpOwotdm9pZCBld2tfZnJhbWVfcmVkaXJl
Y3RfcmVxdWVzdGVkKEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgY29uc3QgY2hhciogdXJsKTsKLXZv
aWQgZXdrX2ZyYW1lX3JlcXVlc3Rfd2lsbF9zZW5kKEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgRXdr
X0ZyYW1lX1Jlc291cmNlX01lc3NhZ2VzKiBtZXNzYWdlcyk7Ci12b2lkIGV3a19mcmFtZV9yZXF1
ZXN0X2Fzc2lnbl9pZGVudGlmaWVyKEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgY29uc3QgRXdrX0Zy
YW1lX1Jlc291cmNlX1JlcXVlc3QqIHJlcXVlc3QpOwotdm9pZCBld2tfZnJhbWVfcmVzcG9uc2Vf
cmVjZWl2ZWQoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBFd2tfRnJhbWVfUmVzb3VyY2VfUmVzcG9u
c2UqIHJlc3BvbnNlKTsKLXZvaWQgZXdrX2ZyYW1lX3ZpZXdfc3RhdGVfc2F2ZShFdmFzX09iamVj
dCogZXdrRnJhbWUsIFdlYkNvcmU6Okhpc3RvcnlJdGVtKiBpdGVtKTsKLQotdm9pZCBld2tfZnJh
bWVfY29udGVudHNfc2l6ZV9jaGFuZ2VkKEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgRXZhc19Db29y
ZCB3aWR0aCwgRXZhc19Db29yZCBoZWlnaHQpOwotdm9pZCBld2tfZnJhbWVfdGl0bGVfc2V0KEV2
YXNfT2JqZWN0KiBld2tGcmFtZSwgY29uc3QgRXdrX1RleHRfV2l0aF9EaXJlY3Rpb24qIHRpdGxl
KTsKLQotdm9pZCBld2tfZnJhbWVfdmlld19jcmVhdGVfZm9yX3ZpZXcoRXZhc19PYmplY3QqIGV3
a0ZyYW1lLCBFdmFzX09iamVjdCogdmlldyk7Ci1ib29sIGV3a19mcmFtZV91cmlfY2hhbmdlZChF
dmFzX09iamVjdCogZXdrRnJhbWUpOwotdm9pZCBld2tfZnJhbWVfZm9yY2VfbGF5b3V0KEV2YXNf
T2JqZWN0KiBld2tGcmFtZSk7Ci12b2lkIGV3a19mcmFtZV9pY29uX2NoYW5nZWQoRXZhc19PYmpl
Y3QqIGV3a0ZyYW1lKTsKLQotV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gZXdrX2Zy
YW1lX3BsdWdpbl9jcmVhdGUoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBjb25zdCBXZWJDb3JlOjpJ
bnRTaXplJiBwbHVnaW5TaXplLCBXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudCogZWxlbWVudCwg
Y29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIGNvbnN0IFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYg
cGFyYW1OYW1lcywgY29uc3QgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiBwYXJhbVZhbHVlcywg
Y29uc3QgV1RGOjpTdHJpbmcmIG1pbWVUeXBlLCBib29sIGxvYWRNYW51YWxseSk7Ci0KLXZvaWQg
ZXdrX2ZyYW1lX2VkaXRvcl9jbGllbnRfY29udGVudHNfY2hhbmdlZChFdmFzX09iamVjdCogZXdr
RnJhbWUpOwotdm9pZCBld2tfZnJhbWVfZWRpdG9yX2NsaWVudF9zZWxlY3Rpb25fY2hhbmdlZChF
dmFzX09iamVjdCogZXdrRnJhbWUpOwotCi12b2lkIGV3a19mcmFtZV9taXhlZF9jb250ZW50X2Rp
c3BsYXllZF9zZXQoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBib29sIGhhc0Rpc3BsYXllZCk7Ci12
b2lkIGV3a19mcmFtZV9taXhlZF9jb250ZW50X3J1bl9zZXQoRXZhc19PYmplY3QqIGV3a0ZyYW1l
LCBib29sIGhhc1J1bik7Ci0KLXZvaWQgZXdrX2ZyYW1lX3hzc19kZXRlY3RlZChFdmFzX09iamVj
dCogZXdrRnJhbWUsIGNvbnN0IEV3a19GcmFtZV9Yc3NfTm90aWZpY2F0aW9uKiB4c3NJbmZvKTsK
LQotbmFtZXNwYWNlIEVXS1ByaXZhdGUgewotdm9pZCBzZXRDb3JlRnJhbWUoRXZhc19PYmplY3Qq
IGV3a0ZyYW1lLCBXZWJDb3JlOjpGcmFtZSogY29yZUZyYW1lKTsKLVdlYkNvcmU6OkZyYW1lICpj
b3JlRnJhbWUoY29uc3QgRXZhc19PYmplY3QgKmV3a0ZyYW1lKTsKLUV2YXNfT2JqZWN0KiBraXRG
cmFtZShjb25zdCBXZWJDb3JlOjpGcmFtZSogY29yZUZyYW1lKTsKLX0gLy8gbmFtZXNwYWNlIEVX
S1ByaXZhdGUKLQotI2VuZGlmIC8vIGV3a19mcmFtZV9wcml2YXRlX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfaGlzdG9yeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9l
d2svZXdrX2hpc3RvcnkuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3N2YwYTZk
Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfaGlzdG9yeS5jcHAKKysr
IC9kZXYvbnVsbApAQCAtMSw0MDMgKzAsMCBAQAotLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDkt
MjAxMCBQcm9GVVNJT04gZW1iZWRkZWQgc3lzdGVtcwotICAgIENvcHlyaWdodCAoQykgMjAwOS0y
MDEwIFNhbXN1bmcgRWxlY3Ryb25pY3MKLQotICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAgICBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICAgIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICAg
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KLQotICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gICAgTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAgICBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLQotICAgIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UKLSAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gICAgQm9zdG9u
LCBNQSAwMjExMC0xMzAxLCBVU0EuCi0qLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiZXdrX2hpc3RvcnkuaCIKLQotI2luY2x1ZGUgIkJhY2tGb3J3YXJkTGlzdC5oIgotI2luY2x1
ZGUgIkNhaXJvVXRpbGl0aWVzRWZsLmgiCi0jaW5jbHVkZSAiSGlzdG9yeUl0ZW0uaCIKLSNpbmNs
dWRlICJJY29uRGF0YWJhc2VCYXNlLmgiCi0jaW5jbHVkZSAiSW1hZ2UuaCIKLSNpbmNsdWRlICJJ
bnRTaXplLmgiCi0jaW5jbHVkZSAiUGFnZS5oIgotI2luY2x1ZGUgIlBhZ2VHcm91cC5oIgotI2lu
Y2x1ZGUgImV3a19oaXN0b3J5X3ByaXZhdGUuaCIKLSNpbmNsdWRlICJld2tfcHJpdmF0ZS5oIgot
I2luY2x1ZGUgPEVpbmEuaD4KLSNpbmNsdWRlIDxlaW5hX3NhZmV0eV9jaGVja3MuaD4KLSNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0KLXN0cnVjdCBfRXdrX0hpc3RvcnkgewotICAgIFdl
YkNvcmU6OkJhY2tGb3J3YXJkTGlzdCogY29yZTsKLX07Ci0KLSNkZWZpbmUgRVdLX0hJU1RPUllf
Q09SRV9HRVRfT1JfUkVUVVJOKGhpc3RvcnksIGNvcmVfLCAuLi4pICAgICAgXAotICAgIGlmICgh
KGhpc3RvcnkpKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
Ci0gICAgICAgIENSSVRJQ0FMKCJoaXN0b3J5IGlzIE5VTEwuIik7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKLSAgICAgICAgcmV0dXJuIF9fVkFfQVJHU19fOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAotICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgaWYgKCEoaGlzdG9yeSktPmNv
cmUpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgQ1JJ
VElDQUwoImhpc3RvcnktPmNvcmUgaXMgTlVMTC4iKTsgICAgICAgICAgICAgICAgICAgICAgXAot
ICAgICAgICByZXR1cm4gX19WQV9BUkdTX187ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCi0gICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKLSAgICBpZiAoIShoaXN0b3J5KS0+Y29yZS0+ZW5hYmxlZCgp
KSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBFUlIoImhpc3RvcnktPmNv
cmUgaXMgZGlzYWJsZWQhLiIpOyAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHJldHVy
biBfX1ZBX0FSR1NfXzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAg
ICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAotICAgIFdlYkNvcmU6OkJhY2tGb3J3YXJkTGlzdCogY29yZV8gPSAoaGlzdG9yeSkt
PmNvcmUKLQotCi1zdHJ1Y3QgX0V3a19IaXN0b3J5X0l0ZW0gewotICAgIFdlYkNvcmU6Okhpc3Rv
cnlJdGVtKiBjb3JlOwotCi0gICAgY29uc3QgY2hhciogdGl0bGU7Ci0gICAgY29uc3QgY2hhciog
YWx0ZXJuYXRlVGl0bGU7Ci0gICAgY29uc3QgY2hhciogdXJpOwotICAgIGNvbnN0IGNoYXIqIG9y
aWdpbmFsVXJpOwotfTsKLQotI2RlZmluZSBFV0tfSElTVE9SWV9JVEVNX0NPUkVfR0VUX09SX1JF
VFVSTihpdGVtLCBjb3JlXywgLi4uKSBcCi0gICAgaWYgKCEoaXRlbSkpIHsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgQ1JJVElDQUwoIml0ZW0g
aXMgTlVMTC4iKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICByZXR1cm4g
X19WQV9BUkdTX187ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
LSAgICBpZiAoIShpdGVtKS0+Y29yZSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAotICAgICAgICBDUklUSUNBTCgiaXRlbS0+Y29yZSBpcyBOVUxMLiIpOyAgICAgICAg
ICAgICAgICAgICAgICBcCi0gICAgICAgIHJldHVybiBfX1ZBX0FSR1NfXzsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIFdlYkNvcmU6Okhpc3RvcnlJdGVt
KiBjb3JlXyA9IChpdGVtKS0+Y29yZQotCi1zdGF0aWMgaW5saW5lIEVpbmFfTGlzdCogX2V3a19o
aXN0b3J5X2l0ZW1fbGlzdF9nZXQoY29uc3QgV2ViQ29yZTo6SGlzdG9yeUl0ZW1WZWN0b3ImIGNv
cmVJdGVtcykKLXsKLSAgICBFaW5hX0xpc3QqIHJlc3VsdCA9IDA7Ci0gICAgdW5zaWduZWQgaW50
IHNpemU7Ci0KLSAgICBzaXplID0gY29yZUl0ZW1zLnNpemUoKTsKLSAgICBmb3IgKHVuc2lnbmVk
IGludCBpID0gMDsgaSA8IHNpemU7IGkrKykgewotICAgICAgICBFd2tfSGlzdG9yeV9JdGVtKiBp
dGVtID0gZXdrX2hpc3RvcnlfaXRlbV9uZXdfZnJvbV9jb3JlKGNvcmVJdGVtc1tpXS5nZXQoKSk7
Ci0gICAgICAgIGlmIChpdGVtKQotICAgICAgICAgICAgcmVzdWx0ID0gZWluYV9saXN0X2FwcGVu
ZChyZXN1bHQsIGl0ZW0pOwotICAgIH0KLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLUVpbmFf
Qm9vbCBld2tfaGlzdG9yeV9jbGVhcihFd2tfSGlzdG9yeSogaGlzdG9yeSkKLXsKLSAgICBFV0tf
SElTVE9SWV9DT1JFX0dFVF9PUl9SRVRVUk4oaGlzdG9yeSwgY29yZSwgZmFsc2UpOwotCi0gICAg
V2ViQ29yZTo6UGFnZSogcGFnZSA9IGNvcmUtPnBhZ2UoKTsKLSAgICBpZiAocGFnZSAmJiBwYWdl
LT5ncm91cFB0cigpKQotICAgICAgICBwYWdlLT5ncm91cFB0cigpLT5yZW1vdmVWaXNpdGVkTGlu
a3MoKTsKLQotICAgIGNvbnN0IGludCBsaW1pdCA9IGV3a19oaXN0b3J5X2xpbWl0X2dldChoaXN0
b3J5KTsKLSAgICBld2tfaGlzdG9yeV9saW1pdF9zZXQoaGlzdG9yeSwgMCk7Ci0gICAgZXdrX2hp
c3RvcnlfbGltaXRfc2V0KGhpc3RvcnksIGxpbWl0KTsKLQotICAgIHJldHVybiB0cnVlOwotfQot
Ci1FaW5hX0Jvb2wgZXdrX2hpc3RvcnlfZm9yd2FyZChFd2tfSGlzdG9yeSogaGlzdG9yeSkKLXsK
LSAgICBFV0tfSElTVE9SWV9DT1JFX0dFVF9PUl9SRVRVUk4oaGlzdG9yeSwgY29yZSwgZmFsc2Up
OwotICAgIGlmIChjb3JlLT5mb3J3YXJkTGlzdENvdW50KCkgPCAxKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgY29yZS0+Z29Gb3J3YXJkKCk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLUVp
bmFfQm9vbCBld2tfaGlzdG9yeV9iYWNrKEV3a19IaXN0b3J5KiBoaXN0b3J5KQotewotICAgIEVX
S19ISVNUT1JZX0NPUkVfR0VUX09SX1JFVFVSTihoaXN0b3J5LCBjb3JlLCBmYWxzZSk7Ci0gICAg
aWYgKGNvcmUtPmJhY2tMaXN0Q291bnQoKSA8IDEpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICBjb3JlLT5nb0JhY2soKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotRWluYV9Cb29sIGV3a19o
aXN0b3J5X2hpc3RvcnlfaXRlbV9hZGQoRXdrX0hpc3RvcnkqIGhpc3RvcnksIGNvbnN0IEV3a19I
aXN0b3J5X0l0ZW0qIGl0ZW0pCi17Ci0gICAgRVdLX0hJU1RPUllfQ09SRV9HRVRfT1JfUkVUVVJO
KGhpc3RvcnksIGhpc3RvcnlfY29yZSwgZmFsc2UpOwotICAgIEVXS19ISVNUT1JZX0lURU1fQ09S
RV9HRVRfT1JfUkVUVVJOKGl0ZW0sIGl0ZW1fY29yZSwgZmFsc2UpOwotICAgIGhpc3RvcnlfY29y
ZS0+YWRkSXRlbShpdGVtX2NvcmUpOwotICAgIHJldHVybiB0cnVlOwotfQotCi1FaW5hX0Jvb2wg
ZXdrX2hpc3RvcnlfaGlzdG9yeV9pdGVtX3NldChFd2tfSGlzdG9yeSogaGlzdG9yeSwgY29uc3Qg
RXdrX0hpc3RvcnlfSXRlbSogaXRlbSkKLXsKLSAgICBFV0tfSElTVE9SWV9DT1JFX0dFVF9PUl9S
RVRVUk4oaGlzdG9yeSwgaGlzdG9yeV9jb3JlLCBmYWxzZSk7Ci0gICAgRVdLX0hJU1RPUllfSVRF
TV9DT1JFX0dFVF9PUl9SRVRVUk4oaXRlbSwgaXRlbV9jb3JlLCBmYWxzZSk7Ci0gICAgaGlzdG9y
eV9jb3JlLT5nb1RvSXRlbShpdGVtX2NvcmUpOwotICAgIHJldHVybiB0cnVlOwotfQotCi1Fd2tf
SGlzdG9yeV9JdGVtKiBld2tfaGlzdG9yeV9oaXN0b3J5X2l0ZW1fYmFja19nZXQoY29uc3QgRXdr
X0hpc3RvcnkqIGhpc3RvcnkpCi17Ci0gICAgRVdLX0hJU1RPUllfQ09SRV9HRVRfT1JfUkVUVVJO
KGhpc3RvcnksIGNvcmUsIDApOwotICAgIHJldHVybiBld2tfaGlzdG9yeV9pdGVtX25ld19mcm9t
X2NvcmUoY29yZS0+YmFja0l0ZW0oKSk7Ci19Ci0KLUV3a19IaXN0b3J5X0l0ZW0qIGV3a19oaXN0
b3J5X2hpc3RvcnlfaXRlbV9jdXJyZW50X2dldChjb25zdCBFd2tfSGlzdG9yeSogaGlzdG9yeSkK
LXsKLSAgICBFV0tfSElTVE9SWV9DT1JFX0dFVF9PUl9SRVRVUk4oaGlzdG9yeSwgY29yZSwgMCk7
Ci0gICAgV2ViQ29yZTo6SGlzdG9yeUl0ZW0qIGN1cnJlbnRJdGVtID0gY29yZS0+Y3VycmVudEl0
ZW0oKTsKLSAgICBpZiAoY3VycmVudEl0ZW0pCi0gICAgICAgIHJldHVybiBld2tfaGlzdG9yeV9p
dGVtX25ld19mcm9tX2NvcmUoY3VycmVudEl0ZW0pOwotICAgIHJldHVybiAwOwotfQotCi1Fd2tf
SGlzdG9yeV9JdGVtKiBld2tfaGlzdG9yeV9oaXN0b3J5X2l0ZW1fZm9yd2FyZF9nZXQoY29uc3Qg
RXdrX0hpc3RvcnkqIGhpc3RvcnkpCi17Ci0gICAgRVdLX0hJU1RPUllfQ09SRV9HRVRfT1JfUkVU
VVJOKGhpc3RvcnksIGNvcmUsIDApOwotICAgIHJldHVybiBld2tfaGlzdG9yeV9pdGVtX25ld19m
cm9tX2NvcmUoY29yZS0+Zm9yd2FyZEl0ZW0oKSk7Ci19Ci0KLUV3a19IaXN0b3J5X0l0ZW0qIGV3
a19oaXN0b3J5X2hpc3RvcnlfaXRlbV9udGhfZ2V0KGNvbnN0IEV3a19IaXN0b3J5KiBoaXN0b3J5
LCBpbnQgaW5kZXgpCi17Ci0gICAgRVdLX0hJU1RPUllfQ09SRV9HRVRfT1JfUkVUVVJOKGhpc3Rv
cnksIGNvcmUsIDApOwotICAgIHJldHVybiBld2tfaGlzdG9yeV9pdGVtX25ld19mcm9tX2NvcmUo
Y29yZS0+aXRlbUF0SW5kZXgoaW5kZXgpKTsKLX0KLQotRWluYV9Cb29sIGV3a19oaXN0b3J5X2hp
c3RvcnlfaXRlbV9jb250YWlucyhjb25zdCBFd2tfSGlzdG9yeSogaGlzdG9yeSwgY29uc3QgRXdr
X0hpc3RvcnlfSXRlbSogaXRlbSkKLXsKLSAgICBFV0tfSElTVE9SWV9DT1JFX0dFVF9PUl9SRVRV
Uk4oaGlzdG9yeSwgaGlzdG9yeV9jb3JlLCBmYWxzZSk7Ci0gICAgRVdLX0hJU1RPUllfSVRFTV9D
T1JFX0dFVF9PUl9SRVRVUk4oaXRlbSwgaXRlbV9jb3JlLCBmYWxzZSk7Ci0gICAgcmV0dXJuIGhp
c3RvcnlfY29yZS0+Y29udGFpbnNJdGVtKGl0ZW1fY29yZSk7Ci19Ci0KLUVpbmFfTGlzdCogZXdr
X2hpc3RvcnlfZm9yd2FyZF9saXN0X2dldChjb25zdCBFd2tfSGlzdG9yeSogaGlzdG9yeSkKLXsK
LSAgICBFV0tfSElTVE9SWV9DT1JFX0dFVF9PUl9SRVRVUk4oaGlzdG9yeSwgY29yZSwgMCk7Ci0g
ICAgV2ViQ29yZTo6SGlzdG9yeUl0ZW1WZWN0b3IgaXRlbXM7Ci0gICAgaW50IGxpbWl0ID0gY29y
ZS0+Zm9yd2FyZExpc3RDb3VudCgpOwotICAgIGNvcmUtPmZvcndhcmRMaXN0V2l0aExpbWl0KGxp
bWl0LCBpdGVtcyk7Ci0gICAgcmV0dXJuIF9ld2tfaGlzdG9yeV9pdGVtX2xpc3RfZ2V0KGl0ZW1z
KTsKLX0KLQotRWluYV9MaXN0KiBld2tfaGlzdG9yeV9mb3J3YXJkX2xpc3RfZ2V0X3dpdGhfbGlt
aXQoY29uc3QgRXdrX0hpc3RvcnkqIGhpc3RvcnksIGludCBsaW1pdCkKLXsKLSAgICBFV0tfSElT
VE9SWV9DT1JFX0dFVF9PUl9SRVRVUk4oaGlzdG9yeSwgY29yZSwgMCk7Ci0gICAgV2ViQ29yZTo6
SGlzdG9yeUl0ZW1WZWN0b3IgaXRlbXM7Ci0gICAgY29yZS0+Zm9yd2FyZExpc3RXaXRoTGltaXQo
bGltaXQsIGl0ZW1zKTsKLSAgICByZXR1cm4gX2V3a19oaXN0b3J5X2l0ZW1fbGlzdF9nZXQoaXRl
bXMpOwotfQotCi1pbnQgZXdrX2hpc3RvcnlfZm9yd2FyZF9saXN0X2xlbmd0aChjb25zdCBFd2tf
SGlzdG9yeSogaGlzdG9yeSkKLXsKLSAgICBFV0tfSElTVE9SWV9DT1JFX0dFVF9PUl9SRVRVUk4o
aGlzdG9yeSwgY29yZSwgMCk7Ci0gICAgcmV0dXJuIGNvcmUtPmZvcndhcmRMaXN0Q291bnQoKTsK
LX0KLQotRWluYV9MaXN0KiBld2tfaGlzdG9yeV9iYWNrX2xpc3RfZ2V0KGNvbnN0IEV3a19IaXN0
b3J5KiBoaXN0b3J5KQotewotICAgIEVXS19ISVNUT1JZX0NPUkVfR0VUX09SX1JFVFVSTihoaXN0
b3J5LCBjb3JlLCAwKTsKLSAgICBXZWJDb3JlOjpIaXN0b3J5SXRlbVZlY3RvciBpdGVtczsKLSAg
ICBpbnQgbGltaXQgPSBjb3JlLT5iYWNrTGlzdENvdW50KCk7Ci0gICAgY29yZS0+YmFja0xpc3RX
aXRoTGltaXQobGltaXQsIGl0ZW1zKTsKLSAgICByZXR1cm4gX2V3a19oaXN0b3J5X2l0ZW1fbGlz
dF9nZXQoaXRlbXMpOwotfQotCi1FaW5hX0xpc3QqIGV3a19oaXN0b3J5X2JhY2tfbGlzdF9nZXRf
d2l0aF9saW1pdChjb25zdCBFd2tfSGlzdG9yeSogaGlzdG9yeSwgaW50IGxpbWl0KQotewotICAg
IEVXS19ISVNUT1JZX0NPUkVfR0VUX09SX1JFVFVSTihoaXN0b3J5LCBjb3JlLCAwKTsKLSAgICBX
ZWJDb3JlOjpIaXN0b3J5SXRlbVZlY3RvciBpdGVtczsKLSAgICBjb3JlLT5iYWNrTGlzdFdpdGhM
aW1pdChsaW1pdCwgaXRlbXMpOwotICAgIHJldHVybiBfZXdrX2hpc3RvcnlfaXRlbV9saXN0X2dl
dChpdGVtcyk7Ci19Ci0KLWludCBld2tfaGlzdG9yeV9iYWNrX2xpc3RfbGVuZ3RoKGNvbnN0IEV3
a19IaXN0b3J5KiBoaXN0b3J5KQotewotICAgIEVXS19ISVNUT1JZX0NPUkVfR0VUX09SX1JFVFVS
TihoaXN0b3J5LCBjb3JlLCAwKTsKLSAgICByZXR1cm4gY29yZS0+YmFja0xpc3RDb3VudCgpOwot
fQotCi1pbnQgZXdrX2hpc3RvcnlfbGltaXRfZ2V0KGNvbnN0IEV3a19IaXN0b3J5KiBoaXN0b3J5
KQotewotICAgIEVXS19ISVNUT1JZX0NPUkVfR0VUX09SX1JFVFVSTihoaXN0b3J5LCBjb3JlLCAw
KTsKLSAgICByZXR1cm4gY29yZS0+Y2FwYWNpdHkoKTsKLX0KLQotRWluYV9Cb29sIGV3a19oaXN0
b3J5X2xpbWl0X3NldChjb25zdCBFd2tfSGlzdG9yeSogaGlzdG9yeSwgaW50IGxpbWl0KQotewot
ICAgIEVXS19ISVNUT1JZX0NPUkVfR0VUX09SX1JFVFVSTihoaXN0b3J5LCBjb3JlLCBmYWxzZSk7
Ci0gICAgY29yZS0+c2V0Q2FwYWNpdHkobGltaXQpOwotICAgIHJldHVybiB0cnVlOwotfQotCi1F
d2tfSGlzdG9yeV9JdGVtKiBld2tfaGlzdG9yeV9pdGVtX25ld19mcm9tX2NvcmUoV2ViQ29yZTo6
SGlzdG9yeUl0ZW0qIGNvcmUpCi17Ci0gICAgRXdrX0hpc3RvcnlfSXRlbSogaXRlbTsKLQotICAg
IGlmICghY29yZSkgewotICAgICAgICBFUlIoIldlYkNvcmU6Okhpc3RvcnlJdGVtIGlzIE5VTEwu
Iik7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIGNvcmUtPnJlZigpOwotCi0gICAg
aXRlbSA9IG5ldyBFd2tfSGlzdG9yeV9JdGVtOwotICAgIG1lbXNldChpdGVtLCAwLCBzaXplb2Yo
Kml0ZW0pKTsKLSAgICBpdGVtLT5jb3JlID0gY29yZTsKLQotICAgIHJldHVybiBpdGVtOwotfQot
Ci1Fd2tfSGlzdG9yeV9JdGVtKiBld2tfaGlzdG9yeV9pdGVtX25ldyhjb25zdCBjaGFyKiB1cmks
IGNvbnN0IGNoYXIqIHRpdGxlKQotewotICAgIFdURjo6U3RyaW5nIGhpc3RvcnlVcmkgPSBXVEY6
OlN0cmluZzo6ZnJvbVVURjgodXJpKTsKLSAgICBXVEY6OlN0cmluZyBoaXN0b3J5VGl0bGUgPSBX
VEY6OlN0cmluZzo6ZnJvbVVURjgodGl0bGUpOwotICAgIFdURjo6UmVmUHRyPFdlYkNvcmU6Okhp
c3RvcnlJdGVtPiBjb3JlID0gV2ViQ29yZTo6SGlzdG9yeUl0ZW06OmNyZWF0ZShoaXN0b3J5VXJp
LCBoaXN0b3J5VGl0bGUpOwotICAgIEV3a19IaXN0b3J5X0l0ZW0qIGl0ZW0gPSBld2tfaGlzdG9y
eV9pdGVtX25ld19mcm9tX2NvcmUoY29yZS5yZWxlYXNlKCkubGVha1JlZigpKTsKLSAgICByZXR1
cm4gaXRlbTsKLX0KLQotc3RhdGljIGlubGluZSB2b2lkIF9ld2tfaGlzdG9yeV9pdGVtX2ZyZWUo
RXdrX0hpc3RvcnlfSXRlbSogaXRlbSwgV2ViQ29yZTo6SGlzdG9yeUl0ZW0qIGNvcmUpCi17Ci0g
ICAgY29yZS0+ZGVyZWYoKTsKLSAgICBkZWxldGUgaXRlbTsKLX0KLQotdm9pZCBld2tfaGlzdG9y
eV9pdGVtX2ZyZWUoRXdrX0hpc3RvcnlfSXRlbSogaXRlbSkKLXsKLSAgICBFV0tfSElTVE9SWV9J
VEVNX0NPUkVfR0VUX09SX1JFVFVSTihpdGVtLCBjb3JlKTsKLSAgICBfZXdrX2hpc3RvcnlfaXRl
bV9mcmVlKGl0ZW0sIGNvcmUpOwotfQotCi12b2lkIGV3a19oaXN0b3J5X2l0ZW1fbGlzdF9mcmVl
KEVpbmFfTGlzdCogaGlzdG9yeV9pdGVtcykKLXsKLSAgICB2b2lkKiBkZWxldGVJdGVtOwotICAg
IEVJTkFfTElTVF9GUkVFKGhpc3RvcnlfaXRlbXMsIGRlbGV0ZUl0ZW0pIHsKLSAgICAgICAgRXdr
X0hpc3RvcnlfSXRlbSogaXRlbSA9IChFd2tfSGlzdG9yeV9JdGVtKilkZWxldGVJdGVtOwotICAg
ICAgICBfZXdrX2hpc3RvcnlfaXRlbV9mcmVlKGl0ZW0sIGl0ZW0tPmNvcmUpOwotICAgIH0KLX0K
LQotY29uc3QgY2hhciogZXdrX2hpc3RvcnlfaXRlbV90aXRsZV9nZXQoY29uc3QgRXdrX0hpc3Rv
cnlfSXRlbSogaXRlbSkKLXsKLSAgICBFV0tfSElTVE9SWV9JVEVNX0NPUkVfR0VUX09SX1JFVFVS
TihpdGVtLCBjb3JlLCAwKTsKLSAgICAvLyBoaWRlIHRoZSBmb2xsb3dpbmcgb3B0aW16YXRpb24g
ZnJvbSBvdXRzaWRlCi0gICAgRXdrX0hpc3RvcnlfSXRlbSogaGlzdG9yeUl0ZW0gPSBjb25zdF9j
YXN0PEV3a19IaXN0b3J5X0l0ZW0qPihpdGVtKTsKLSAgICBlaW5hX3N0cmluZ3NoYXJlX3JlcGxh
Y2UoJmhpc3RvcnlJdGVtLT50aXRsZSwgY29yZS0+dGl0bGUoKS51dGY4KCkuZGF0YSgpKTsKLSAg
ICByZXR1cm4gaGlzdG9yeUl0ZW0tPnRpdGxlOwotfQotCi1jb25zdCBjaGFyKiBld2tfaGlzdG9y
eV9pdGVtX3RpdGxlX2FsdGVybmF0ZV9nZXQoY29uc3QgRXdrX0hpc3RvcnlfSXRlbSogaXRlbSkK
LXsKLSAgICBFV0tfSElTVE9SWV9JVEVNX0NPUkVfR0VUX09SX1JFVFVSTihpdGVtLCBjb3JlLCAw
KTsKLSAgICAvLyBoaWRlIHRoZSBmb2xsb3dpbmcgb3B0aW16YXRpb24gZnJvbSBvdXRzaWRlCi0g
ICAgRXdrX0hpc3RvcnlfSXRlbSogaGlzdG9yeUl0ZW0gPSBjb25zdF9jYXN0PEV3a19IaXN0b3J5
X0l0ZW0qPihpdGVtKTsKLSAgICBlaW5hX3N0cmluZ3NoYXJlX3JlcGxhY2UoJmhpc3RvcnlJdGVt
LT5hbHRlcm5hdGVUaXRsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29yZS0+YWx0
ZXJuYXRlVGl0bGUoKS51dGY4KCkuZGF0YSgpKTsKLSAgICByZXR1cm4gaGlzdG9yeUl0ZW0tPmFs
dGVybmF0ZVRpdGxlOwotfQotCi12b2lkIGV3a19oaXN0b3J5X2l0ZW1fdGl0bGVfYWx0ZXJuYXRl
X3NldChFd2tfSGlzdG9yeV9JdGVtKiBpdGVtLCBjb25zdCBjaGFyKiB0aXRsZSkKLXsKLSAgICBF
V0tfSElTVE9SWV9JVEVNX0NPUkVfR0VUX09SX1JFVFVSTihpdGVtLCBjb3JlKTsKLSAgICBpZiAo
IWVpbmFfc3RyaW5nc2hhcmVfcmVwbGFjZSgmaXRlbS0+YWx0ZXJuYXRlVGl0bGUsIHRpdGxlKSkK
LSAgICAgICAgcmV0dXJuOwotICAgIGNvcmUtPnNldEFsdGVybmF0ZVRpdGxlKFdURjo6U3RyaW5n
Ojpmcm9tVVRGOCh0aXRsZSkpOwotfQotCi1jb25zdCBjaGFyKiBld2tfaGlzdG9yeV9pdGVtX3Vy
aV9nZXQoY29uc3QgRXdrX0hpc3RvcnlfSXRlbSogaXRlbSkKLXsKLSAgICBFV0tfSElTVE9SWV9J
VEVNX0NPUkVfR0VUX09SX1JFVFVSTihpdGVtLCBjb3JlLCAwKTsKLSAgICAvLyBoaWRlIHRoZSBm
b2xsb3dpbmcgb3B0aW16YXRpb24gZnJvbSBvdXRzaWRlCi0gICAgRXdrX0hpc3RvcnlfSXRlbSog
aGlzdG9yeUl0ZW0gPSBjb25zdF9jYXN0PEV3a19IaXN0b3J5X0l0ZW0qPigoaXRlbSkpOwotICAg
IGVpbmFfc3RyaW5nc2hhcmVfcmVwbGFjZSgmaGlzdG9yeUl0ZW0tPnVyaSwgY29yZS0+dXJsU3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgcmV0dXJuIGhpc3RvcnlJdGVtLT51cmk7Ci19Ci0K
LWNvbnN0IGNoYXIqIGV3a19oaXN0b3J5X2l0ZW1fdXJpX29yaWdpbmFsX2dldChjb25zdCBFd2tf
SGlzdG9yeV9JdGVtKiBpdGVtKQotewotICAgIEVXS19ISVNUT1JZX0lURU1fQ09SRV9HRVRfT1Jf
UkVUVVJOKGl0ZW0sIGNvcmUsIDApOwotICAgIC8vIGhpZGUgdGhlIGZvbGxvd2luZyBvcHRpbXph
dGlvbiBmcm9tIG91dHNpZGUKLSAgICBFd2tfSGlzdG9yeV9JdGVtKiBoaXN0b3J5SXRlbSA9IGNv
bnN0X2Nhc3Q8RXdrX0hpc3RvcnlfSXRlbSo+KGl0ZW0pOwotICAgIGVpbmFfc3RyaW5nc2hhcmVf
cmVwbGFjZSgmaGlzdG9yeUl0ZW0tPm9yaWdpbmFsVXJpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb3JlLT5vcmlnaW5hbFVSTFN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgIHJl
dHVybiBoaXN0b3J5SXRlbS0+b3JpZ2luYWxVcmk7Ci19Ci0KLUV2YXNfT2JqZWN0KiBld2tfaGlz
dG9yeV9pdGVtX2ljb25fb2JqZWN0X2FkZChjb25zdCBFd2tfSGlzdG9yeV9JdGVtKiBpdGVtLCBF
dmFzKiBjYW52YXMpCi17Ci0gICAgRVdLX0hJU1RPUllfSVRFTV9DT1JFX0dFVF9PUl9SRVRVUk4o
aXRlbSwgY29yZSwgMCk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGNhbnZh
cywgMCk7Ci0KLSAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBzdXJmYWNlID0gV2ViQ29yZTo6
aWNvbkRhdGFiYXNlKCkuc3luY2hyb25vdXNOYXRpdmVJY29uRm9yUGFnZVVSTChjb3JlLT51cmwo
KSwgV2ViQ29yZTo6SW50U2l6ZSgxNiwgMTYpKTsKLSAgICBpZiAoIXN1cmZhY2UpIHsKLSAgICAg
ICAgRVJSKCJpY29uIGlzIE5VTEwuIik7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAg
IHJldHVybiBzdXJmYWNlID8gV2ViQ29yZTo6ZXZhc09iamVjdEZyb21DYWlyb0ltYWdlU3VyZmFj
ZShjYW52YXMsIHN1cmZhY2UuZ2V0KCkpLmxlYWtSZWYoKSA6IDA7Ci19Ci0KLUVpbmFfQm9vbCBl
d2tfaGlzdG9yeV9pdGVtX3BhZ2VfY2FjaGVfZXhpc3RzKGNvbnN0IEV3a19IaXN0b3J5X0l0ZW0q
IGl0ZW0pCi17Ci0gICAgRVdLX0hJU1RPUllfSVRFTV9DT1JFX0dFVF9PUl9SRVRVUk4oaXRlbSwg
Y29yZSwgZmFsc2UpOwotICAgIHJldHVybiBjb3JlLT5pc0luUGFnZUNhY2hlKCk7Ci19Ci0KLUVp
bmFfQm9vbCBld2tfaGlzdG9yeV9pdGVtX3Zpc2l0X2xhc3RfZmFpbGVkKGNvbnN0IEV3a19IaXN0
b3J5X0l0ZW0qIGl0ZW0pCi17Ci0gICAgRVdLX0hJU1RPUllfSVRFTV9DT1JFX0dFVF9PUl9SRVRV
Uk4oaXRlbSwgY29yZSwgdHJ1ZSk7Ci0gICAgcmV0dXJuIGNvcmUtPmxhc3RWaXNpdFdhc0ZhaWx1
cmUoKTsKLX0KLQotCi0vKiBpbnRlcm5hbCBtZXRob2RzICoqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0vKioKLSAqIEBpbnRlcm5hbAotICoKLSAq
IENyZWF0ZXMgaGlzdG9yeSBmb3IgZ2l2ZW4gdmlldy4gQ2FsbGVkIGludGVybmFsbHkgYnkgZXdr
X3ZpZXcgYW5kCi0gKiBzaG91bGQgbmV2ZXIgYmUgY2FsbGVkIGZyb20gb3V0c2lkZS4KLSAqCi0g
KiBAcGFyYW0gY29yZSBXZWJDb3JlOjpCYWNrRm9yd2FyZExpc3QgaW5zdGFuY2UgdG8gdXNlIGlu
dGVybmFsbHkuCi0gKgotICogQHJldHVybiBuZXdseSBhbGxvY2F0ZWQgaGlzdG9yeSBpbnN0YW5j
ZSBvciBAYyBOVUxMIG9uIGVycm9ycy4KLSAqLwotRXdrX0hpc3RvcnkqIGV3a19oaXN0b3J5X25l
dyhXZWJDb3JlOjpCYWNrRm9yd2FyZExpc3QqIGNvcmUpCi17Ci0gICAgRXdrX0hpc3RvcnkqIGhp
c3Rvcnk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGNvcmUsIDApOwotICAg
IERCRygiY29yZT0lcCIsIGNvcmUpOwotCi0gICAgaGlzdG9yeSA9IG5ldyBFd2tfSGlzdG9yeTsK
LSAgICBoaXN0b3J5LT5jb3JlID0gY29yZTsKLSAgICBjb3JlLT5yZWYoKTsKLQotICAgIHJldHVy
biBoaXN0b3J5OwotfQotCi0vKioKLSAqIEBpbnRlcm5hbAotICoKLSAqIERlc3Ryb3lzIHByZXZp
b3VzbHkgYWxsb2NhdGVkIGhpc3RvcnkgaW5zdGFuY2UuIFRoaXMgaXMgY2FsbGVkCi0gKiBhdXRv
bWF0aWNhbGx5IGJ5IGV3a192aWV3IGFuZCBzaG91bGQgbmV2ZXIgYmUgY2FsbGVkIGZyb20gb3V0
c2lkZS4KLSAqCi0gKiBAcGFyYW0gaGlzdG9yeSBpbnN0YW5jZSB0byBmcmVlCi0gKi8KLXZvaWQg
ZXdrX2hpc3RvcnlfZnJlZShFd2tfSGlzdG9yeSogaGlzdG9yeSkKLXsKLSAgICBEQkcoImhpc3Rv
cnk9JXAiLCBoaXN0b3J5KTsKLSAgICBoaXN0b3J5LT5jb3JlLT5kZXJlZigpOwotICAgIGRlbGV0
ZSBoaXN0b3J5OwotfQotCi1uYW1lc3BhY2UgRVdLUHJpdmF0ZSB7Ci0KLVdlYkNvcmU6Okhpc3Rv
cnlJdGVtKiBjb3JlSGlzdG9yeUl0ZW0oY29uc3QgRXdrX0hpc3RvcnlfSXRlbSogZXdrSGlzdG9y
eUl0ZW0pCi17Ci0gICAgRVdLX0hJU1RPUllfSVRFTV9DT1JFX0dFVF9PUl9SRVRVUk4oZXdrSGlz
dG9yeUl0ZW0sIGNvcmUsIDApOwotICAgIHJldHVybiBjb3JlOwotfQotCi19IC8vIG5hbWVzcGFj
ZSBFV0tQcml2YXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2hpc3Rv
cnkuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfaGlzdG9yeS5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAxZDA0NzZiLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvZWZs
L2V3ay9ld2tfaGlzdG9yeS5oCisrKyAvZGV2L251bGwKQEAgLTEsMzkzICswLDAgQEAKLS8qCi0g
ICAgQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgUHJvRlVTSU9OIGVtYmVkZGVkIHN5c3RlbXMKLSAg
ICBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBTYW1zdW5nIEVsZWN0cm9uaWNzCi0KLSAgICBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
Ci0gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgot
ICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAgICB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAotICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotKi8KLQotI2lmbmRl
ZiBld2tfaGlzdG9yeV9oCi0jZGVmaW5lIGV3a19oaXN0b3J5X2gKLQotI2luY2x1ZGUgPEVpbmEu
aD4KLSNpbmNsdWRlIDxFdmFzLmg+Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJDIiB7
Ci0jZW5kaWYKLQotLyoqCi0gKiBAZmlsZSBld2tfaGlzdG9yeS5oCi0gKiBAYnJpZWYgVGhlIGhp
c3RvcnkgKGJhY2stZm9yd2FyZCBsaXN0KSBhc3NvY2lhdGVkIHdpdGggYSBnaXZlbiBld2tfdmll
dy4KLSAqCi0gKiBDaGFuZ2luZyB0aGUgaGlzdG9yeSBhZmZlY3RzIGltbWVkaWF0ZWx5IHRoZSB2
aWV3LCBjaGFuZ2luZyB0aGUKLSAqIGN1cnJlbnQgdXJpLCBmb3IgZXhhbXBsZS4KLSAqCi0gKiBX
aGVuIGV3a192aWV3IGlzIG5hdmlnYXRlZCBvciB1cmlzIGFyZSBzZXQsIGhpc3RvcnkgYXV0b21h
dGljYWxseQotICogdXBkYXRlcy4gVGhhdCdzIHdoeSBubyBkaXJlY3QgYWNjZXNzIHRvIGhpc3Rv
cnkgc3RydWN0dXJlIGlzCi0gKiBhbGxvd2VkLgotICovCi10eXBlZGVmIHN0cnVjdCBfRXdrX0hp
c3RvcnkgICAgICAgICBFd2tfSGlzdG9yeTsKLQotLyoqCi0gKiBSZXByZXNlbnRzIG9uZSBpdGVt
IGZyb20gRXdrX0hpc3RvcnkuCi0gKi8KLXR5cGVkZWYgc3RydWN0IF9Fd2tfSGlzdG9yeV9JdGVt
ICAgIEV3a19IaXN0b3J5X0l0ZW07Ci0KLQotCi0vKioKLSAqIENsZWFyIHRoZSBjdXJyZW50IGhp
c3RvcnksIGlmIHRoZXJlIGlzIGFueS4KLSAqCi0gKiBAcGFyYW0gaGlzdG9yeSB3aGljaCBoaXN0
b3J5IGluc3RhbmNlIHRvIG1vZGlmeS4KLSAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBz
dWNjZXNzLCBAYyBFSU5BX0ZBTFNFIG9uIGZhaWx1cmUuCi0gKi8KLUVBUEkgRWluYV9Cb29sICAg
ICAgICAgZXdrX2hpc3RvcnlfY2xlYXIoRXdrX0hpc3RvcnkgKmhpc3RvcnkpOwotCi0vKioKLSAq
IEdvIGZvcndhcmQgaW4gaGlzdG9yeSBvbmUgaXRlbSwgaWYgcG9zc2libGUuCi0gKgotICogQHBh
cmFtIGhpc3Rvcnkgd2hpY2ggaGlzdG9yeSBpbnN0YW5jZSB0byBtb2RpZnkuCi0gKgotICogQHJl
dHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcywgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJlLgot
ICovCi1FQVBJIEVpbmFfQm9vbCAgICAgICAgIGV3a19oaXN0b3J5X2ZvcndhcmQoRXdrX0hpc3Rv
cnkgKmhpc3RvcnkpOwotCi0vKioKLSAqIEdvIGJhY2sgaW4gaGlzdG9yeSBvbmUgaXRlbSwgaWYg
cG9zc2libGUuCi0gKgotICogQHBhcmFtIGhpc3Rvcnkgd2hpY2ggaGlzdG9yeSBpbnN0YW5jZSB0
byBtb2RpZnkuCi0gKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcywgQGMgRUlO
QV9GQUxTRSBvbiBmYWlsdXJlLgotICovCi1FQVBJIEVpbmFfQm9vbCAgICAgICAgIGV3a19oaXN0
b3J5X2JhY2soRXdrX0hpc3RvcnkgKmhpc3RvcnkpOwotCi0vKioKLSAqIEFkZHMgdGhlIGdpdmVu
IGl0ZW0gdG8gaGlzdG9yeS4KLSAqCi0gKiBNZW1vcnkgaGFuZGxpbmc6IFRoaXMgd2lsbCBub3Qg
bW9kaWZ5IG9yIGV2ZW4gdGFrZSByZWZlcmVuY2VzIHRvCi0gKiBnaXZlbiBpdGVtIChFd2tfSGlz
dG9yeV9JdGVtKSwgc28geW91IHNob3VsZCBzdGlsbCBoYW5kbGUgaXQgd2l0aAotICogZXdrX2hp
c3RvcnlfaXRlbV9mcmVlKCkuCi0gKgotICogQHBhcmFtIGhpc3Rvcnkgd2hpY2ggaGlzdG9yeSBp
bnN0YW5jZSB0byBtb2RpZnkuCi0gKiBAcGFyYW0gaXRlbSByZWZlcmVuY2UgdG8gYWRkIHRvIGhp
c3RvcnkuIFVubW9kaWZpZWQuIE11c3QgQGIgbm90IGJlIEBjIE5VTEwuCi0gKgotICogQHJldHVy
biBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcywgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJlLgotICov
Ci1FQVBJIEVpbmFfQm9vbCAgICAgICAgIGV3a19oaXN0b3J5X2hpc3RvcnlfaXRlbV9hZGQoRXdr
X0hpc3RvcnkgKmhpc3RvcnksIGNvbnN0IEV3a19IaXN0b3J5X0l0ZW0gKml0ZW0pOwotCi0vKioK
LSAqIFNldHMgdGhlIGdpdmVuIGl0ZW0gYXMgY3VycmVudCBpbiBoaXN0b3J5IChnbyB0byBpdGVt
KS4KLSAqCi0gKiBNZW1vcnkgaGFuZGxpbmc6IFRoaXMgd2lsbCBub3QgbW9kaWZ5IG9yIGV2ZW4g
dGFrZSByZWZlcmVuY2VzIHRvCi0gKiBnaXZlbiBpdGVtIChFd2tfSGlzdG9yeV9JdGVtKSwgc28g
eW91IHNob3VsZCBzdGlsbCBoYW5kbGUgaXQgd2l0aAotICogZXdrX2hpc3RvcnlfaXRlbV9mcmVl
KCkuCi0gKgotICogQHBhcmFtIGhpc3Rvcnkgd2hpY2ggaGlzdG9yeSBpbnN0YW5jZSB0byBtb2Rp
ZnkuCi0gKiBAcGFyYW0gaXRlbSByZWZlcmVuY2UgdG8gZ28gdG8gaGlzdG9yeS4gVW5tb2RpZmll
ZC4gTXVzdCBAYiBub3QgYmUgQGMgTlVMTC4KLSAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBv
biBzdWNjZXNzLCBAYyBFSU5BX0ZBTFNFIG9uIGZhaWx1cmUuCi0gKi8KLUVBUEkgRWluYV9Cb29s
ICAgICAgICAgZXdrX2hpc3RvcnlfaGlzdG9yeV9pdGVtX3NldChFd2tfSGlzdG9yeSAqaGlzdG9y
eSwgIGNvbnN0IEV3a19IaXN0b3J5X0l0ZW0gKml0ZW0pOwotCi0vKioKLSAqIEdldCB0aGUgZmly
c3QgaXRlbSBmcm9tIGJhY2sgbGlzdCwgaWYgYW55LgotICoKLSAqIEBwYXJhbSBoaXN0b3J5IHdo
aWNoIGhpc3RvcnkgaW5zdGFuY2UgdG8gcXVlcnkuCi0gKgotICogQHJldHVybiB0aGUgQGIgbmV3
bHkgYWxsb2NhdGVkIGl0ZW0gaW5zdGFuY2UuIFRoaXMgbWVtb3J5IG11c3QgYmUKLSAqICAgICAg
ICAgcmVsZWFzZWQgd2l0aCBld2tfaGlzdG9yeV9pdGVtX2ZyZWUoKSBhZnRlciB1c2UuCi0gKi8K
LUVBUEkgRXdrX0hpc3RvcnlfSXRlbSAqZXdrX2hpc3RvcnlfaGlzdG9yeV9pdGVtX2JhY2tfZ2V0
KGNvbnN0IEV3a19IaXN0b3J5ICpoaXN0b3J5KTsKLQotLyoqCi0gKiBHZXQgdGhlIGN1cnJlbnQg
aXRlbSBpbiBoaXN0b3J5LCBpZiBhbnkuCi0gKgotICogQHBhcmFtIGhpc3Rvcnkgd2hpY2ggaGlz
dG9yeSBpbnN0YW5jZSB0byBxdWVyeS4KLSAqCi0gKiBAcmV0dXJuIHRoZSBAYiBuZXdseSBhbGxv
Y2F0ZWQgaXRlbSBpbnN0YW5jZSBvciBAYyBOVUxMIG9uIGVycm9yLiBUaGlzIG1lbW9yeQotICog
ICAgICAgICBtdXN0IGJlIHJlbGVhc2VkIHdpdGggZXdrX2hpc3RvcnlfaXRlbV9mcmVlKCkgYWZ0
ZXIgdXNlLgotICovCi1FQVBJIEV3a19IaXN0b3J5X0l0ZW0gKmV3a19oaXN0b3J5X2hpc3Rvcnlf
aXRlbV9jdXJyZW50X2dldChjb25zdCBFd2tfSGlzdG9yeSAqaGlzdG9yeSk7Ci0KLS8qKgotICog
R2V0IHRoZSBmaXJzdCBpdGVtIGZyb20gZm9yd2FyZCBsaXN0LCBpZiBhbnkuCi0gKgotICogQHBh
cmFtIGhpc3Rvcnkgd2hpY2ggaGlzdG9yeSBpbnN0YW5jZSB0byBxdWVyeS4KLSAqCi0gKiBAcmV0
dXJuIHRoZSBAYiBuZXdseSBhbGxvY2F0ZWQgaXRlbSBpbnN0YW5jZS4gVGhpcyBtZW1vcnkgbXVz
dCBiZQotICogICAgICAgICByZWxlYXNlZCB3aXRoIGV3a19oaXN0b3J5X2l0ZW1fZnJlZSgpIGFm
dGVyIHVzZS4KLSAqLwotRUFQSSBFd2tfSGlzdG9yeV9JdGVtICpld2tfaGlzdG9yeV9oaXN0b3J5
X2l0ZW1fZm9yd2FyZF9nZXQoY29uc3QgRXdrX0hpc3RvcnkgKmhpc3RvcnkpOwotCi0vKioKLSAq
IEdldCBpdGVtIGF0IGdpdmVuIHBvc2l0aW9uLCBpZiBhbnkgYXQgdGhhdCBpbmRleC4KLSAqCi0g
KiBAcGFyYW0gaGlzdG9yeSB3aGljaCBoaXN0b3J5IGluc3RhbmNlIHRvIHF1ZXJ5LgotICogQHBh
cmFtIGluZGV4IHBvc2l0aW9uIG9mIGl0ZW0gdG8gZ2V0LgotICoKLSAqIEByZXR1cm4gdGhlIEBi
IG5ld2x5IGFsbG9jYXRlZCBpdGVtIGluc3RhbmNlLiBUaGlzIG1lbW9yeSBtdXN0IGJlCi0gKiAg
ICAgICAgIHJlbGVhc2VkIHdpdGggZXdrX2hpc3RvcnlfaXRlbV9mcmVlKCkgYWZ0ZXIgdXNlLgot
ICovCi1FQVBJIEV3a19IaXN0b3J5X0l0ZW0gKmV3a19oaXN0b3J5X2hpc3RvcnlfaXRlbV9udGhf
Z2V0KGNvbnN0IEV3a19IaXN0b3J5ICpoaXN0b3J5LCBpbnQgaW5kZXgpOwotCi0vKioKLSAqIFF1
ZXJpZXMgaWYgZ2l2ZW4gaXRlbSBpcyBpbiBoaXN0b3J5LgotICoKLSAqIE1lbW9yeSBoYW5kbGlu
ZzogVGhpcyB3aWxsIG5vdCBtb2RpZnkgb3IgZXZlbiB0YWtlIHJlZmVyZW5jZXMgdG8KLSAqIGdp
dmVuIGl0ZW0gKEV3a19IaXN0b3J5X0l0ZW0pLCBzbyB5b3Ugc2hvdWxkIHN0aWxsIGhhbmRsZSBp
dCB3aXRoCi0gKiBld2tfaGlzdG9yeV9pdGVtX2ZyZWUoKS4KLSAqCi0gKiBAcGFyYW0gaGlzdG9y
eSB3aGljaCBoaXN0b3J5IGluc3RhbmNlIHRvIG1vZGlmeS4KLSAqIEBwYXJhbSBpdGVtIHJlZmVy
ZW5jZSB0byBjaGVjayBpbiBoaXN0b3J5LiBNdXN0IEBiIG5vdCBiZSBAYyBOVUxMLgotICoKLSAq
IEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIGluIGhpc3RvcnksIEBjIEVJTkFfRkFMU0UgaWYgbm90
IG9yIGZhaWx1cmUuCi0gKi8KLUVBUEkgRWluYV9Cb29sICAgICAgICAgZXdrX2hpc3RvcnlfaGlz
dG9yeV9pdGVtX2NvbnRhaW5zKGNvbnN0IEV3a19IaXN0b3J5ICpoaXN0b3J5LCBjb25zdCBFd2tf
SGlzdG9yeV9JdGVtICppdGVtKTsKLQotLyoqCi0gKiBHZXQgdGhlIHdob2xlIGZvcndhcmQgbGlz
dC4KLSAqCi0gKiBAcGFyYW0gaGlzdG9yeSB3aGljaCBoaXN0b3J5IGluc3RhbmNlIHRvIHF1ZXJ5
LgotICoKLSAqIEByZXR1cm4gYSBuZXdseSBhbGxvY2F0ZWQgbGlzdCBvZiBAYiBuZXdseSBhbGxv
Y2F0ZWQgaXRlbQotICogICAgICAgICBpbnN0YW5jZS4gVGhpcyBtZW1vcnkgb2YgZWFjaCBpdGVt
IG11c3QgYmUgcmVsZWFzZWQgd2l0aAotICogICAgICAgICBld2tfaGlzdG9yeV9pdGVtX2ZyZWUo
KSBhZnRlciB1c2UuIHVzZQotICogICAgICAgICBld2tfaGlzdG9yeV9pdGVtX2xpc3RfZnJlZSgp
IGZvciBjb252ZW5pZW5jZS4KLSAqCi0gKiBAc2VlIGV3a19oaXN0b3J5X2l0ZW1fbGlzdF9mcmVl
KCkKLSAqIEBzZWUgZXdrX2hpc3RvcnlfZm9yd2FyZF9saXN0X2dldF93aXRoX2xpbWl0KCkKLSAq
LwotRUFQSSBFaW5hX0xpc3QgICAgICAgICpld2tfaGlzdG9yeV9mb3J3YXJkX2xpc3RfZ2V0KGNv
bnN0IEV3a19IaXN0b3J5ICpoaXN0b3J5KTsKLQotLyoqCi0gKiBHZXQgdGhlIGZvcndhcmQgbGlz
dCB3aXRoaW4gdGhlIGdpdmVuIGxpbWl0LgotICoKLSAqIEBwYXJhbSBoaXN0b3J5IHdoaWNoIGhp
c3RvcnkgaW5zdGFuY2UgdG8gcXVlcnkuCi0gKiBAcGFyYW0gbGltaXQgdGhlIG1heGltdW0gbnVt
YmVyIG9mIGl0ZW1zIHRvIHJldHVybi4KLSAqCi0gKiBAcmV0dXJuIGEgbmV3bHkgYWxsb2NhdGVk
IGxpc3Qgb2YgQGIgbmV3bHkgYWxsb2NhdGVkIGl0ZW0KLSAqICAgICAgICAgaW5zdGFuY2UuIFRo
aXMgbWVtb3J5IG9mIGVhY2ggaXRlbSBtdXN0IGJlIHJlbGVhc2VkIHdpdGgKLSAqICAgICAgICAg
ZXdrX2hpc3RvcnlfaXRlbV9mcmVlKCkgYWZ0ZXIgdXNlLiB1c2UKLSAqICAgICAgICAgZXdrX2hp
c3RvcnlfaXRlbV9saXN0X2ZyZWUoKSBmb3IgY29udmVuaWVuY2UuCi0gKgotICogQHNlZSBld2tf
aGlzdG9yeV9pdGVtX2xpc3RfZnJlZSgpCi0gKiBAc2VlIGV3a19oaXN0b3J5X2ZvcndhcmRfbGlz
dF9sZW5ndGgoKQotICogQHNlZSBld2tfaGlzdG9yeV9mb3J3YXJkX2xpc3RfZ2V0KCkKLSAqLwot
RUFQSSBFaW5hX0xpc3QgICAgICAgICpld2tfaGlzdG9yeV9mb3J3YXJkX2xpc3RfZ2V0X3dpdGhf
bGltaXQoY29uc3QgRXdrX0hpc3RvcnkgKmhpc3RvcnksIGludCBsaW1pdCk7Ci0KLS8qKgotICog
R2V0IHRoZSB3aG9sZSBzaXplIG9mIGZvcndhcmQgbGlzdC4KLSAqCi0gKiBAcGFyYW0gaGlzdG9y
eSB3aGljaCBoaXN0b3J5IGluc3RhbmNlIHRvIHF1ZXJ5LgotICoKLSAqIEByZXR1cm4gbnVtYmVy
IG9mIGVsZW1lbnRzIGluIHdob2xlIGxpc3QuCi0gKgotICogQHNlZSBld2tfaGlzdG9yeV9mb3J3
YXJkX2xpc3RfZ2V0X3dpdGhfbGltaXQoKQotICovCi1FQVBJIGludCAgICAgICAgICAgICAgIGV3
a19oaXN0b3J5X2ZvcndhcmRfbGlzdF9sZW5ndGgoY29uc3QgRXdrX0hpc3RvcnkgKmhpc3Rvcnkp
OwotCi0vKioKLSAqIEdldCB0aGUgd2hvbGUgYmFjayBsaXN0LgotICoKLSAqIEBwYXJhbSBoaXN0
b3J5IHdoaWNoIGhpc3RvcnkgaW5zdGFuY2UgdG8gcXVlcnkuCi0gKgotICogQHJldHVybiBhIG5l
d2x5IGFsbG9jYXRlZCBsaXN0IG9mIEBiIG5ld2x5IGFsbG9jYXRlZCBpdGVtCi0gKiAgICAgICAg
IGluc3RhbmNlLiBUaGlzIG1lbW9yeSBvZiBlYWNoIGl0ZW0gbXVzdCBiZSByZWxlYXNlZCB3aXRo
Ci0gKiAgICAgICAgIGV3a19oaXN0b3J5X2l0ZW1fZnJlZSgpIGFmdGVyIHVzZS4gdXNlCi0gKiAg
ICAgICAgIGV3a19oaXN0b3J5X2l0ZW1fbGlzdF9mcmVlKCkgZm9yIGNvbnZlbmllbmNlLgotICoK
LSAqIEBzZWUgZXdrX2hpc3RvcnlfaXRlbV9saXN0X2ZyZWUoKQotICogQHNlZSBld2tfaGlzdG9y
eV9iYWNrX2xpc3RfZ2V0X3dpdGhfbGltaXQoKQotICovCi1FQVBJIEVpbmFfTGlzdCAgICAgICAg
KmV3a19oaXN0b3J5X2JhY2tfbGlzdF9nZXQoY29uc3QgRXdrX0hpc3RvcnkgKmhpc3RvcnkpOwot
Ci0vKioKLSAqIEdldCB0aGUgYmFjayBsaXN0IHdpdGhpbiB0aGUgZ2l2ZW4gbGltaXQuCi0gKgot
ICogQHBhcmFtIGhpc3Rvcnkgd2hpY2ggaGlzdG9yeSBpbnN0YW5jZSB0byBxdWVyeS4KLSAqIEBw
YXJhbSBsaW1pdCB0aGUgbWF4aW11bSBudW1iZXIgb2YgaXRlbXMgdG8gcmV0dXJuLgotICoKLSAq
IEByZXR1cm4gYSBuZXdseSBhbGxvY2F0ZWQgbGlzdCBvZiBAYiBuZXdseSBhbGxvY2F0ZWQgaXRl
bQotICogICAgICAgICBpbnN0YW5jZS4gVGhpcyBtZW1vcnkgb2YgZWFjaCBpdGVtIG11c3QgYmUg
cmVsZWFzZWQgd2l0aAotICogICAgICAgICBld2tfaGlzdG9yeV9pdGVtX2ZyZWUoKSBhZnRlciB1
c2UuIHVzZQotICogICAgICAgICBld2tfaGlzdG9yeV9pdGVtX2xpc3RfZnJlZSgpIGZvciBjb252
ZW5pZW5jZS4KLSAqCi0gKiBAc2VlIGV3a19oaXN0b3J5X2l0ZW1fbGlzdF9mcmVlKCkKLSAqIEBz
ZWUgZXdrX2hpc3RvcnlfYmFja19saXN0X2xlbmd0aCgpCi0gKiBAc2VlIGV3a19oaXN0b3J5X2Jh
Y2tfbGlzdF9nZXQoKQotICovCi1FQVBJIEVpbmFfTGlzdCAgICAgICAgKmV3a19oaXN0b3J5X2Jh
Y2tfbGlzdF9nZXRfd2l0aF9saW1pdChjb25zdCBFd2tfSGlzdG9yeSAqaGlzdG9yeSwgaW50IGxp
bWl0KTsKLQotLyoqCi0gKiBHZXQgdGhlIHdob2xlIHNpemUgb2YgYmFjayBsaXN0LgotICoKLSAq
IEBwYXJhbSBoaXN0b3J5IHdoaWNoIGhpc3RvcnkgaW5zdGFuY2UgdG8gcXVlcnkuCi0gKgotICog
QHJldHVybiBudW1iZXIgb2YgZWxlbWVudHMgaW4gd2hvbGUgbGlzdC4KLSAqCi0gKiBAc2VlIGV3
a19oaXN0b3J5X2JhY2tfbGlzdF9nZXRfd2l0aF9saW1pdCgpCi0gKi8KLUVBUEkgaW50ICAgICAg
ICAgICAgICAgZXdrX2hpc3RvcnlfYmFja19saXN0X2xlbmd0aChjb25zdCBFd2tfSGlzdG9yeSAq
aGlzdG9yeSk7Ci0KLS8qKgotICogR2V0IG1heGltdW0gY2FwYWNpdHkgb2YgZ2l2ZW4gaGlzdG9y
eS4KLSAqCi0gKiBAcGFyYW0gaGlzdG9yeSB3aGljaCBoaXN0b3J5IGluc3RhbmNlIHRvIHF1ZXJ5
LgotICoKLSAqIEByZXR1cm4gbWF4aW11bSBudW1iZXIgb2YgZW50cmllcyB0aGlzIGhpc3Rvcnkg
d2lsbCBob2xkLgotICovCi1FQVBJIGludCAgICAgICAgICAgICAgIGV3a19oaXN0b3J5X2xpbWl0
X2dldChjb25zdCBFd2tfSGlzdG9yeSAqaGlzdG9yeSk7Ci0KLS8qKgotICogU2V0IG1heGltdW0g
Y2FwYWNpdHkgb2YgZ2l2ZW4gaGlzdG9yeS4KLSAqCi0gKiBAcGFyYW0gaGlzdG9yeSB3aGljaCBo
aXN0b3J5IGluc3RhbmNlIHRvIG1vZGlmeS4KLSAqIEBwYXJhbSBsaW1pdCBtYXhpbXVtIHNpemUg
dG8gYWxsb3cuCi0gKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcywgQGMgRUlO
QV9GQUxTRSBvdGhlcndpc2UuCi0gKi8KLUVBUEkgRWluYV9Cb29sICAgICAgICAgZXdrX2hpc3Rv
cnlfbGltaXRfc2V0KGNvbnN0IEV3a19IaXN0b3J5ICpoaXN0b3J5LCBpbnQgbGltaXQpOwotCi0v
KioKLSAqIENyZWF0ZSBhIG5ldyBoaXN0b3J5IGl0ZW0gd2l0aCBnaXZlbiBVUkkgYW5kIHRpdGxl
LgotICoKLSAqIEBwYXJhbSB1cmkgd2hlcmUgdGhpcyByZXNvdXJjZSBpcyBsb2NhdGVkLgotICog
QHBhcmFtIHRpdGxlIHJlc291cmNlIHRpdGxlLgotICoKLSAqIEByZXR1cm4gbmV3bHkgYWxsb2Nh
dGVkIGhpc3RvcnkgaXRlbSBvciBAYyBOVUxMIG9uIGVycm9ycy4gWW91IG11c3QKLSAqICAgICAg
ICAgZnJlZSB0aGlzIGl0ZW0gd2l0aCBld2tfaGlzdG9yeV9pdGVtX2ZyZWUoKS4KLSAqLwotRUFQ
SSBFd2tfSGlzdG9yeV9JdGVtICpld2tfaGlzdG9yeV9pdGVtX25ldyhjb25zdCBjaGFyICp1cmks
IGNvbnN0IGNoYXIgKnRpdGxlKTsKLQotLyoqCi0gKiBGcmVlIGdpdmVuIGhpc3RvcnkgaXRlbSBp
bnN0YW5jZS4KLSAqCi0gKiBAcGFyYW0gaXRlbSB3aGF0IHRvIGZyZWUuCi0gKi8KLUVBUEkgdm9p
ZCAgICAgICAgICAgICAgZXdrX2hpc3RvcnlfaXRlbV9mcmVlKEV3a19IaXN0b3J5X0l0ZW0gKml0
ZW0pOwotCi0vKioKLSAqIEZyZWUgZ2l2ZW4gbGlzdCBhbmQgYXNzb2NpYXRlZCBoaXN0b3J5IGl0
ZW1zIGluc3RhbmNlcy4KLSAqCi0gKiBAcGFyYW0gaGlzdG9yeV9pdGVtcyBsaXN0IG9mIGl0ZW1z
IHRvIGZyZWUgKGJvdGggbGlzdCBub2RlcyBhbmQKLSAqICAgICAgICBpdGVtIGluc3RhbmNlcyku
Ci0gKi8KLUVBUEkgdm9pZCAgICAgICAgICAgICAgZXdrX2hpc3RvcnlfaXRlbV9saXN0X2ZyZWUo
RWluYV9MaXN0ICpoaXN0b3J5X2l0ZW1zKTsKLQotLyoqCi0gKiBRdWVyeSB0aXRsZSBmb3IgZ2l2
ZW4gaGlzdG9yeSBpdGVtLgotICoKLSAqIEBwYXJhbSBpdGVtIGhpc3RvcnkgaXRlbSB0byBxdWVy
eS4KLSAqCi0gKiBAcmV0dXJuIHRoZSB0aXRsZSBwb2ludGVyLCB0aGF0IG1heSBiZSBAYyBOVUxM
LiBUaGlzIHBvaW50ZXIgaXMKLSAqICAgICAgICAgZ3VhcmFudGVlZCB0byBiZSBlaW5hX3N0cmlu
Z3NoYXJlLCBzbyB3aGVuZXZlciBwb3NzaWJsZQotICogICAgICAgICBzYXZlIHlvdXJzZWxmIHNv
bWUgY3B1IGN5Y2xlcyBhbmQgdXNlCi0gKiAgICAgICAgIGVpbmFfc3RyaW5nc2hhcmVfcmVmKCkg
aW5zdGVhZCBvZiBlaW5hX3N0cmluZ3NoYXJlX2FkZCgpIG9yCi0gKiAgICAgICAgIHN0cmR1cCgp
LgotICovCi1FQVBJIGNvbnN0IGNoYXIgICAgICAgKmV3a19oaXN0b3J5X2l0ZW1fdGl0bGVfZ2V0
KGNvbnN0IEV3a19IaXN0b3J5X0l0ZW0gKml0ZW0pOwotCi0vKioKLSAqIFF1ZXJ5IGFsdGVybmF0
ZSB0aXRsZSBmb3IgZ2l2ZW4gaGlzdG9yeSBpdGVtLgotICoKLSAqIEBwYXJhbSBpdGVtIGhpc3Rv
cnkgaXRlbSB0byBxdWVyeS4KLSAqCi0gKiBAcmV0dXJuIHRoZSBhbHRlcm5hdGUgdGl0bGUgcG9p
bnRlciwgdGhhdCBtYXkgYmUgQGMgTlVMTC4gVGhpcwotICogICAgICAgICBwb2ludGVyIGlzIGd1
YXJhbnRlZWQgdG8gYmUgZWluYV9zdHJpbmdzaGFyZSwgc28gd2hlbmV2ZXIKLSAqICAgICAgICAg
cG9zc2libGUgc2F2ZSB5b3Vyc2VsZiBzb21lIGNwdSBjeWNsZXMgYW5kIHVzZQotICogICAgICAg
ICBlaW5hX3N0cmluZ3NoYXJlX3JlZigpIGluc3RlYWQgb2YgZWluYV9zdHJpbmdzaGFyZV9hZGQo
KSBvcgotICogICAgICAgICBzdHJkdXAoKS4KLSAqLwotRUFQSSBjb25zdCBjaGFyICAgICAgICpl
d2tfaGlzdG9yeV9pdGVtX3RpdGxlX2FsdGVybmF0ZV9nZXQoY29uc3QgRXdrX0hpc3RvcnlfSXRl
bSAqaXRlbSk7Ci0KLS8qKgotICogU2V0IGFsdGVybmF0ZSB0aXRsZSBmb3IgZ2l2ZW4gaGlzdG9y
eSBpdGVtLgotICoKLSAqIEBwYXJhbSBpdGVtIGhpc3RvcnkgaXRlbSB0byBxdWVyeS4KLSAqIEBw
YXJhbSB0aXRsZSBuZXcgYWx0ZXJuYXRlIHRpdGxlIHRvIHVzZSBmb3IgZ2l2ZW4gaXRlbS4gTm8K
LSAqICAgICAgICByZWZlcmVuY2VzIGFyZSBrZXB0IGFmdGVyIHRoaXMgZnVuY3Rpb24gcmV0dXJu
cy4KLSAqLwotRUFQSSB2b2lkICAgICAgICAgICAgICBld2tfaGlzdG9yeV9pdGVtX3RpdGxlX2Fs
dGVybmF0ZV9zZXQoRXdrX0hpc3RvcnlfSXRlbSAqaXRlbSwgY29uc3QgY2hhciAqdGl0bGUpOwot
Ci0vKioKLSAqIFF1ZXJ5IFVSSSBmb3IgZ2l2ZW4gaGlzdG9yeSBpdGVtLgotICoKLSAqIEBwYXJh
bSBpdGVtIGhpc3RvcnkgaXRlbSB0byBxdWVyeS4KLSAqCi0gKiBAcmV0dXJuIHRoZSBVUkkgcG9p
bnRlciwgdGhhdCBtYXkgYmUgQGMgTlVMTC4gVGhpcyBwb2ludGVyIGlzCi0gKiAgICAgICAgIGd1
YXJhbnRlZWQgdG8gYmUgZWluYV9zdHJpbmdzaGFyZSwgc28gd2hlbmV2ZXIgcG9zc2libGUKLSAq
ICAgICAgICAgc2F2ZSB5b3Vyc2VsZiBzb21lIGNwdSBjeWNsZXMgYW5kIHVzZQotICogICAgICAg
ICBlaW5hX3N0cmluZ3NoYXJlX3JlZigpIGluc3RlYWQgb2YgZWluYV9zdHJpbmdzaGFyZV9hZGQo
KSBvcgotICogICAgICAgICBzdHJkdXAoKS4KLSAqLwotRUFQSSBjb25zdCBjaGFyICAgICAgICpl
d2tfaGlzdG9yeV9pdGVtX3VyaV9nZXQoY29uc3QgRXdrX0hpc3RvcnlfSXRlbSAqaXRlbSk7Ci0K
LS8qKgotICogUXVlcnkgb3JpZ2luYWwgVVJJIGZvciBnaXZlbiBoaXN0b3J5IGl0ZW0uCi0gKgot
ICogQHBhcmFtIGl0ZW0gaGlzdG9yeSBpdGVtIHRvIHF1ZXJ5LgotICoKLSAqIEByZXR1cm4gdGhl
IG9yaWdpbmFsIFVSSSBwb2ludGVyLCB0aGF0IG1heSBiZSBAYyBOVUxMLiBUaGlzIHBvaW50ZXIK
LSAqICAgICAgICAgaXMgZ3VhcmFudGVlZCB0byBiZSBlaW5hX3N0cmluZ3NoYXJlLCBzbyB3aGVu
ZXZlciBwb3NzaWJsZQotICogICAgICAgICBzYXZlIHlvdXJzZWxmIHNvbWUgY3B1IGN5Y2xlcyBh
bmQgdXNlCi0gKiAgICAgICAgIGVpbmFfc3RyaW5nc2hhcmVfcmVmKCkgaW5zdGVhZCBvZiBlaW5h
X3N0cmluZ3NoYXJlX2FkZCgpIG9yCi0gKiAgICAgICAgIHN0cmR1cCgpLgotICovCi1FQVBJIGNv
bnN0IGNoYXIgICAgICAgKmV3a19oaXN0b3J5X2l0ZW1fdXJpX29yaWdpbmFsX2dldChjb25zdCBF
d2tfSGlzdG9yeV9JdGVtICppdGVtKTsKLQotLyoqCi0gKiBBZGQgYW4gRXZhc19PYmplY3Qgb2Yg
dHlwZSAnaW1hZ2UnIHRvIGdpdmVuIGNhbnZhcyB3aXRoIGhpc3RvcnkgaXRlbSBpY29uLgotICoK
LSAqIFRoaXMgaXMgYW4gdXRpbGl0eSBmdW5jdGlvbiB0aGF0IGNyZWF0ZXMgYW4gRXZhc19PYmpl
Y3Qgb2YgdHlwZQotICogaW1hZ2Ugc2V0IHRvIGhhdmUgZmlsbCBhbHdheXMgbWF0Y2ggb2JqZWN0
IHNpemUKLSAqIChldmFzX29iamVjdF9pbWFnZV9maWxsZWRfYWRkKCkpLCBzYXZpbmcgc29tZSBj
b2RlIHRvIHVzZSBpdCBmcm9tIEV2YXMuCi0gKgotICogQG5vdGUgaW4gb3JkZXIgdG8gaGF2ZSB0
aGlzIHdvcmtpbmcsIG9uZSBtdXN0IG9wZW4gaWNvbiBkYXRhYmFzZQotICogICAgICAgd2l0aCBl
d2tfc2V0dGluZ3NfaWNvbl9kYXRhYmFzZV9wYXRoX3NldCgpLgotICoKLSAqIEBwYXJhbSBpdGVt
IGhpc3RvcnkgaXRlbSB0byBxdWVyeS4KLSAqIEBwYXJhbSBjYW52YXMgZXZhcyBpbnN0YW5jZSB3
aGVyZSB0byBhZGQgcmVzdWx0aW5nIG9iamVjdC4KLSAqCi0gKiBAcmV0dXJuIG5ld2x5IGFsbG9j
YXRlZCBFdmFzX09iamVjdCBpbnN0YW5jZSBvciBAYyBOVUxMIG9uCi0gKiAgICAgICAgIGVycm9y
cy4gRGVsZXRlIHRoZSBvYmplY3Qgd2l0aCBldmFzX29iamVjdF9kZWwoKS4KLSAqLwotRUFQSSBF
dmFzX09iamVjdCAgICAgICpld2tfaGlzdG9yeV9pdGVtX2ljb25fb2JqZWN0X2FkZChjb25zdCBF
d2tfSGlzdG9yeV9JdGVtICppdGVtLCBFdmFzICpjYW52YXMpOwotCi0vKioKLSAqIFF1ZXJ5IGlm
IGdpdmVuIGl0ZW0gaXMgc3RpbGwgaW4gcGFnZSBjYWNoZS4KLSAqCi0gKiBAcGFyYW0gaXRlbSBo
aXN0b3J5IGl0ZW0gdG8gcXVlcnkuCi0gKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgaW4g
Y2FjaGUsIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlLgotICovCi1FQVBJIEVpbmFfQm9vbCAgICAg
ICAgIGV3a19oaXN0b3J5X2l0ZW1fcGFnZV9jYWNoZV9leGlzdHMoY29uc3QgRXdrX0hpc3Rvcnlf
SXRlbSAqaXRlbSk7Ci0KLS8qKgotICogUXVlcnkgaWYgbGFzdCB2aXNpdCB0byBpdGVtIHdhcyBm
YWlsdXJlIG9yIG5vdC4KLSAqCi0gKiBAcGFyYW0gaXRlbSBoaXN0b3J5IGl0ZW0gdG8gcXVlcnku
Ci0gKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgbGFzdCB2aXNpdCB3YXMgZmFpbHVyZSwg
QGMgRUlOQV9GQUxTRSBpZiBpdAotICogICAgICAgICB3YXMgZmluZS4KLSAqLwotRUFQSSBFaW5h
X0Jvb2wgICAgICAgICBld2tfaGlzdG9yeV9pdGVtX3Zpc2l0X2xhc3RfZmFpbGVkKGNvbnN0IEV3
a19IaXN0b3J5X0l0ZW0gKml0ZW0pOwotCi0jaWZkZWYgX19jcGx1c3BsdXMKLX0KLSNlbmRpZgot
I2VuZGlmIC8vIGV3a19oaXN0b3J5X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3
ay9ld2tfaGlzdG9yeV9wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2hpc3Rv
cnlfcHJpdmF0ZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NzJmMWI1Li4wMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfaGlzdG9yeV9wcml2YXRlLmgKKysr
IC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi0vKgotICAgIENvcHlyaWdodCAoQykgMjAwOS0y
MDEwIFByb0ZVU0lPTiBlbWJlZGRlZCBzeXN0ZW1zCi0gICAgQ29weXJpZ2h0IChDKSAyMDA5LTIw
MTIgU2Ftc3VuZyBFbGVjdHJvbmljcwotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICAgIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gICAgTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gICAg
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAgICBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICAgIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0gICAgWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQotICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09Q
WUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAgICBCb3N0b24s
IE1BIDAyMTEwLTEzMDEsIFVTQS4KLSovCi0KLSNpZm5kZWYgZXdrX2hpc3RvcnlfcHJpdmF0ZV9o
Ci0jZGVmaW5lIGV3a19oaXN0b3J5X3ByaXZhdGVfaAotCi0jaW5jbHVkZSAiQmFja0ZvcndhcmRM
aXN0LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIEhpc3RvcnlJdGVtOwotY2xhc3Mg
QmFja0ZvcndhcmRMaXN0OwotfQotCi1Fd2tfSGlzdG9yeV9JdGVtICpld2tfaGlzdG9yeV9pdGVt
X25ld19mcm9tX2NvcmUoV2ViQ29yZTo6SGlzdG9yeUl0ZW0gKmNvcmUpOwotRXdrX0hpc3Rvcnkq
IGV3a19oaXN0b3J5X25ldyhXZWJDb3JlOjpCYWNrRm9yd2FyZExpc3QqIGhpc3RvcnkpOwotdm9p
ZCBld2tfaGlzdG9yeV9mcmVlKEV3a19IaXN0b3J5KiBoaXN0b3J5KTsKLQotbmFtZXNwYWNlIEVX
S1ByaXZhdGUgewotV2ViQ29yZTo6SGlzdG9yeUl0ZW0gKmNvcmVIaXN0b3J5SXRlbShjb25zdCBF
d2tfSGlzdG9yeV9JdGVtICpld2tIaXN0b3J5SXRlbSk7Ci19IC8vIG5hbWVzcGFjZSBFV0tQcml2
YXRlCi0KLSNlbmRpZiAvLyBld2tfaGlzdG9yeV9wcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvZWZsL2V3ay9ld2tfanMuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19q
cy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ4MWQ0ZDEuLjAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19qcy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw3
NTEgKzAsMCBAQAotLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMTEgUHJvRlVTSU9OIGVtYmVkZGVk
IHN5c3RlbXMKLQotICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICAgIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLQotICAg
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCi0gICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAgICBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLQotICAgIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAg
ICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bwotICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gICAgQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCi0qLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiZXdrX2pzLmgiCi0K
LSNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKLQotI2luY2x1ZGUgIk5QX2pzb2JqZWN0
LmgiCi0jaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgotI2luY2x1ZGUgImV3a19qc19wcml2YXRlLmgi
Ci0jaW5jbHVkZSAiZXdrX3ByaXZhdGUuaCIKLSNpbmNsdWRlICJucHJ1bnRpbWUuaCIKLSNpbmNs
dWRlICJucHJ1bnRpbWVfaW1wbC5oIgotI2luY2x1ZGUgPHN0cmluZy5oPgotCi0jZGVmaW5lIEVJ
TkFfTUFHSUNfQ0hFQ0tfT1JfUkVUVVJOKG8sIC4uLikgXAotICAgIGlmICghRUlOQV9NQUdJQ19D
SEVDSyhvLCBFV0tfSlNfT0JKRUNUX01BR0lDKSkgeyBcCi0gICAgICAgIEVJTkFfTUFHSUNfRkFJ
TChvLCBFV0tfSlNfT0JKRUNUX01BR0lDKTsgXAotICAgICAgICByZXR1cm4gX19WQV9BUkdTX187
IFwKLSAgICB9Ci0KLXN0cnVjdCBfRXdrX0pTX0NsYXNzIHsKLSAgICBjb25zdCBFd2tfSlNfQ2xh
c3NfTWV0YSogbWV0YTsKLSAgICBFaW5hX0hhc2gqIG1ldGhvZHM7IC8vIEtleT1OUElkZW50aWZp
ZXIobmFtZSksIHZhbHVlPXBvaW50ZXIgdG8gbWV0YS0+bWV0aG9kcy4KLSAgICBFaW5hX0hhc2gq
IHByb3BlcnRpZXM7IC8vIEtleT1OUElkZW50aWZpZXIobmFtZSksIHZhbHVlPXBvaW50ZXIgdG8g
bWV0YS0+cHJvcGVydGllcy4KLSAgICBFd2tfSlNfRGVmYXVsdCBkZWZhdWx0X3Byb3A7Ci19Owot
Ci1zdGF0aWMgRWluYV9Cb29sIGV3a19qc19ucHZhcmlhbnRfdG9fdmFyaWFudChFd2tfSlNfVmFy
aWFudCogZGF0YSwgY29uc3QgTlBWYXJpYW50KiByZXN1bHQpOwotCi1zdGF0aWMgRWluYV9Cb29s
IGV3a19qc192YXJpYW50X3RvX25wdmFyaWFudChjb25zdCBFd2tfSlNfVmFyaWFudCogZGF0YSwg
TlBWYXJpYW50KiByZXN1bHQpCi17Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFM
KGRhdGEsIGZhbHNlKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwocmVzdWx0
LCBmYWxzZSk7Ci0gICAgY29uc3QgY2hhciogc3RyaW5nX3ZhbHVlOwotCi0gICAgc3dpdGNoIChk
YXRhLT50eXBlKSB7Ci0gICAgY2FzZSBFV0tfSlNfVkFSSUFOVF9WT0lEOgotICAgICAgICBWT0lE
X1RPX05QVkFSSUFOVCgqcmVzdWx0KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFV0tfSlNf
VkFSSUFOVF9OVUxMOgotICAgICAgICBOVUxMX1RPX05QVkFSSUFOVCgqcmVzdWx0KTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBFV0tfSlNfVkFSSUFOVF9JTlQzMjoKLSAgICAgICAgSU5UMzJf
VE9fTlBWQVJJQU5UKGRhdGEtPnZhbHVlLmksICpyZXN1bHQpOwotICAgICAgICBicmVhazsKLSAg
ICBjYXNlIEVXS19KU19WQVJJQU5UX0RPVUJMRToKLSAgICAgICAgRE9VQkxFX1RPX05QVkFSSUFO
VChkYXRhLT52YWx1ZS5kLCAqcmVzdWx0KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFV0tf
SlNfVkFSSUFOVF9TVFJJTkc6Ci0gICAgICAgIHN0cmluZ192YWx1ZSA9IGVpbmFfc3RyaW5nc2hh
cmVfYWRkKGRhdGEtPnZhbHVlLnMpOwotICAgICAgICBpZiAoc3RyaW5nX3ZhbHVlKQotICAgICAg
ICAgICAgU1RSSU5HWl9UT19OUFZBUklBTlQoc3RyaW5nX3ZhbHVlLCAqcmVzdWx0KTsKLSAgICAg
ICAgZWxzZQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIEVXS19KU19WQVJJQU5UX0JPT0w6Ci0gICAgICAgIEJPT0xFQU5fVE9fTlBWQVJJQU5UKGRh
dGEtPnZhbHVlLmIsICpyZXN1bHQpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEVXS19KU19W
QVJJQU5UX09CSkVDVDoKLSAgICAgICAgT0JKRUNUX1RPX05QVkFSSUFOVChyZWludGVycHJldF9j
YXN0PE5QT2JqZWN0Kj4oZGF0YS0+dmFsdWUubyksICpyZXN1bHQpOwotICAgICAgICBicmVhazsK
LSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgcmV0dXJu
IHRydWU7Ci19Ci0KLS8vIFRoZXNlIG1ldGhvZHMgYXJlIHVzZWQgYnkgTlBBSSwgdGhhdHMgdGhl
IHJlYXNvbiB0byB1c2UgYm9vbCBpbnN0ZWFkIG9mIEVpbmFfQm9vbC4KLXN0YXRpYyBib29sIGV3
a19qc19wcm9wZXJ0eV9oYXMoTlBPYmplY3QqIG5wT2JqZWN0LCBOUElkZW50aWZpZXIgbmFtZSkK
LXsKLSAgICBFd2tfSlNfT2JqZWN0KiBvYmplY3QgPSByZWludGVycHJldF9jYXN0PEV3a19KU19P
YmplY3QqPihucE9iamVjdCk7Ci0KLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwo
bnBPYmplY3QsIGZhbHNlKTsKLSAgICBFSU5BX01BR0lDX0NIRUNLX09SX1JFVFVSTihvYmplY3Qs
IGZhbHNlKTsKLQotICAgIGlmICghX05QTl9JZGVudGlmaWVySXNTdHJpbmcobmFtZSkpIHsKLSAg
ICAgICAgRVJSKCJpbnQgTlBJZGVudGlmaWVyIGlzIG5vdCBzdXBwb3J0ZWQuIik7Ci0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBjaGFyKiBwcm9wX25hbWUgPSBfTlBOX1VURjhG
cm9tSWRlbnRpZmllcihuYW1lKTsKLSAgICBib29sIGZhaWwgPSBlaW5hX2hhc2hfZmluZChvYmpl
Y3QtPnByb3BlcnRpZXMsIHByb3BfbmFtZSk7IC8vIEZJWE1FOiBzaG91bGQgc2VhcmNoIG1ldGhv
ZHMgdG9vPwotICAgIGZyZWUocHJvcF9uYW1lKTsKLQotICAgIHJldHVybiBmYWlsOwotfQotCi1z
dGF0aWMgYm9vbCBld2tfanNfcHJvcGVydHlfZ2V0KE5QT2JqZWN0KiBucE9iamVjdCwgTlBJZGVu
dGlmaWVyIG5hbWUsIE5QVmFyaWFudCogcmVzdWx0KQotewotICAgIEV3a19KU19PYmplY3QqIG9i
amVjdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8RXdrX0pTX09iamVjdCo+KG5wT2JqZWN0KTsKLSAgICBF
d2tfSlNfVmFyaWFudCogdmFsdWU7Ci0gICAgRXdrX0pTX1Byb3BlcnR5KiBwcm9wOwotICAgIGJv
b2wgZmFpbCA9IGZhbHNlOwotCi0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKG5w
T2JqZWN0LCBmYWxzZSk7Ci0gICAgRUlOQV9NQUdJQ19DSEVDS19PUl9SRVRVUk4ob2JqZWN0LCBm
YWxzZSk7Ci0KLSAgICBpZiAoIV9OUE5fSWRlbnRpZmllcklzU3RyaW5nKG5hbWUpKSB7Ci0gICAg
ICAgIEVSUigiaW50IE5QSWRlbnRpZmllciBpcyBub3Qgc3VwcG9ydGVkLiIpOwotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgdmFsdWUgPSBzdGF0aWNfY2FzdDxFd2tfSlNfVmFy
aWFudCo+KG1hbGxvYyhzaXplb2YoRXdrX0pTX1ZhcmlhbnQpKSk7Ci0gICAgaWYgKCF2YWx1ZSkg
ewotICAgICAgICBFUlIoIkNvdWxkIG5vdCBhbGxvY2F0ZSBtZW1vcnkgZm9yIGV3a19qc192YXJp
YW50Iik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBwcm9wID0gc3RhdGlj
X2Nhc3Q8RXdrX0pTX1Byb3BlcnR5Kj4oZWluYV9oYXNoX2ZpbmQob2JqZWN0LT5jbHMtPnByb3Bl
cnRpZXMsIG5hbWUpKTsKLSAgICBpZiAocHJvcCAmJiBwcm9wLT5nZXQpIHsgLy8gQ2xhc3MgaGFz
IHByb3BlcnR5IGFuZCBwcm9wZXJ0eSBoYXMgZ2V0dGVyLgotICAgICAgICBmYWlsID0gcHJvcC0+
Z2V0KG9iamVjdCwgcHJvcC0+bmFtZSwgdmFsdWUpOwotICAgICAgICBpZiAoIWZhaWwpCi0gICAg
ICAgICAgICBmYWlsID0gZXdrX2pzX3ZhcmlhbnRfdG9fbnB2YXJpYW50KHZhbHVlLCByZXN1bHQp
OwotICAgIH0gZWxzZSBpZiAob2JqZWN0LT5jbHMtPmRlZmF1bHRfcHJvcC5nZXQpIHsgLy8gRGVm
YXVsdCBnZXR0ZXIgZXhpc3RzLgotICAgICAgICBmYWlsID0gb2JqZWN0LT5jbHMtPmRlZmF1bHRf
cHJvcC5nZXQob2JqZWN0LCBwcm9wLT5uYW1lLCB2YWx1ZSk7Ci0gICAgICAgIGlmICghZmFpbCkK
LSAgICAgICAgICAgIGZhaWwgPSBld2tfanNfdmFyaWFudF90b19ucHZhcmlhbnQodmFsdWUsIHJl
c3VsdCk7Ci0gICAgfSBlbHNlIHsgLy8gRmFsbGJhY2sgdG8gb2JqZWN0cyBoYXNoIG1hcC4KLSAg
ICAgICAgY2hhciogcHJvcF9uYW1lID0gX05QTl9VVEY4RnJvbUlkZW50aWZpZXIobmFtZSk7Ci0g
ICAgICAgIGZyZWUodmFsdWUpOwotICAgICAgICB2YWx1ZSA9IHN0YXRpY19jYXN0PEV3a19KU19W
YXJpYW50Kj4oZWluYV9oYXNoX2ZpbmQob2JqZWN0LT5wcm9wZXJ0aWVzLCBwcm9wX25hbWUpKTsK
LSAgICAgICAgZnJlZShwcm9wX25hbWUpOwotICAgICAgICBpZiAodmFsdWUpCi0gICAgICAgICAg
ICByZXR1cm4gZXdrX2pzX3ZhcmlhbnRfdG9fbnB2YXJpYW50KHZhbHVlLCByZXN1bHQpOwotICAg
IH0KLQotICAgIGZyZWUodmFsdWUpOwotICAgIHJldHVybiBmYWlsOwotfQotCi1zdGF0aWMgYm9v
bCBld2tfanNfcHJvcGVydHlfc2V0KE5QT2JqZWN0KiBucE9iamVjdCwgTlBJZGVudGlmaWVyIG5h
bWUsIGNvbnN0IE5QVmFyaWFudCogbnBWYWx1ZSkKLXsKLSAgICBFd2tfSlNfT2JqZWN0KiBvYmpl
Y3QgPSByZWludGVycHJldF9jYXN0PEV3a19KU19PYmplY3QqPihucE9iamVjdCk7Ci0gICAgRXdr
X0pTX1ZhcmlhbnQqIHZhbHVlOwotICAgIEV3a19KU19Qcm9wZXJ0eSogcHJvcDsKLSAgICBib29s
IGZhaWwgPSBmYWxzZTsKLQotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChucE9i
amVjdCwgZmFsc2UpOwotICAgIEVJTkFfTUFHSUNfQ0hFQ0tfT1JfUkVUVVJOKG9iamVjdCwgZmFs
c2UpOwotCi0gICAgaWYgKCFfTlBOX0lkZW50aWZpZXJJc1N0cmluZyhuYW1lKSkgewotICAgICAg
ICBFUlIoImludCBOUElkZW50aWZpZXIgaXMgbm90IHN1cHBvcnRlZC4iKTsKLSAgICAgICAgcmV0
dXJuIGZhaWw7Ci0gICAgfQotCi0gICAgdmFsdWUgPSBzdGF0aWNfY2FzdDxFd2tfSlNfVmFyaWFu
dCo+KG1hbGxvYyhzaXplb2YoRXdrX0pTX1ZhcmlhbnQpKSk7Ci0gICAgaWYgKCF2YWx1ZSkgewot
ICAgICAgICBFUlIoIkNvdWxkIG5vdCBhbGxvY2F0ZSBtZW1vcnkgZm9yIGV3a19qc192YXJpYW50
Iik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBld2tfanNfbnB2YXJpYW50
X3RvX3ZhcmlhbnQodmFsdWUsIG5wVmFsdWUpOwotICAgIGNoYXIqIHByb3BfbmFtZSA9IF9OUE5f
VVRGOEZyb21JZGVudGlmaWVyKG5hbWUpOwotICAgIHByb3AgPSBzdGF0aWNfY2FzdDxFd2tfSlNf
UHJvcGVydHkqPihlaW5hX2hhc2hfZmluZChvYmplY3QtPmNscy0+cHJvcGVydGllcywgcHJvcF9u
YW1lKSk7Ci0gICAgaWYgKHByb3AgJiYgcHJvcC0+c2V0KQotICAgICAgICBmYWlsID0gcHJvcC0+
c2V0KG9iamVjdCwgcHJvcC0+bmFtZSwgdmFsdWUpOyAvLyBDbGFzcyBoYXMgcHJvcGVydHkgYW5k
IHByb3BlcnR5IGhhcyBzZXR0ZXIuCi0gICAgZWxzZSBpZiAob2JqZWN0LT5jbHMtPmRlZmF1bHRf
cHJvcC5zZXQpCi0gICAgICAgIGZhaWwgPSBvYmplY3QtPmNscy0+ZGVmYXVsdF9wcm9wLnNldChv
YmplY3QsIHByb3BfbmFtZSwgdmFsdWUpOyAvLyBEZWZhdWx0IGdldHRlciBleGlzdHMuCi0gICAg
ZWxzZSB7IC8vIEZhbGxiYWNrIHRvIG9iamVjdHMgaGFzaCBtYXAuCi0gICAgICAgIHZvaWQqIG9s
ZCA9IGVpbmFfaGFzaF9zZXQob2JqZWN0LT5wcm9wZXJ0aWVzLCBwcm9wX25hbWUsIHZhbHVlKTsK
LSAgICAgICAgZnJlZShvbGQpOwotICAgICAgICBmYWlsID0gdHJ1ZTsKLSAgICB9Ci0KLSAgICBm
cmVlKHByb3BfbmFtZSk7Ci0gICAgcmV0dXJuIGZhaWw7Ci19Ci0KLXN0YXRpYyBib29sIGV3a19q
c19wcm9wZXJ0eV9yZW1vdmUoTlBPYmplY3QqIG5wT2JqZWN0LCBOUElkZW50aWZpZXIgbmFtZSkK
LXsKLSAgICBFd2tfSlNfT2JqZWN0KiBvYmplY3QgPSByZWludGVycHJldF9jYXN0PEV3a19KU19P
YmplY3QqPihucE9iamVjdCk7Ci0gICAgRXdrX0pTX1Byb3BlcnR5KiBwcm9wOwotICAgIGJvb2wg
ZmFpbCA9IGZhbHNlOwotCi0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKG5wT2Jq
ZWN0LCBmYWxzZSk7Ci0gICAgRUlOQV9NQUdJQ19DSEVDS19PUl9SRVRVUk4ob2JqZWN0LCBmYWxz
ZSk7Ci0KLSAgICBpZiAoIV9OUE5fSWRlbnRpZmllcklzU3RyaW5nKG5hbWUpKSB7Ci0gICAgICAg
IEVSUigiaW50IE5QSWRlbnRpZmllciBpcyBub3Qgc3VwcG9ydGVkLiIpOwotICAgICAgICByZXR1
cm4gZmFpbDsKLSAgICB9Ci0KLSAgICBjaGFyKiBwcm9wX25hbWUgPSBfTlBOX1VURjhGcm9tSWRl
bnRpZmllcihuYW1lKTsKLSAgICBwcm9wID0gc3RhdGljX2Nhc3Q8RXdrX0pTX1Byb3BlcnR5Kj4o
ZWluYV9oYXNoX2ZpbmQob2JqZWN0LT5jbHMtPnByb3BlcnRpZXMsIHByb3BfbmFtZSkpOwotICAg
IGlmIChwcm9wICYmIHByb3AtPmRlbCkKLSAgICAgICAgZmFpbCA9IHByb3AtPmRlbChvYmplY3Qs
IHByb3AtPm5hbWUpOyAvLyBDbGFzcyBoYXMgcHJvcGVydHkgYW5kIHByb3BlcnR5IGhhcyBnZXR0
ZXIuCi0gICAgZWxzZSBpZiAob2JqZWN0LT5jbHMtPmRlZmF1bHRfcHJvcC5kZWwpCi0gICAgICAg
IGZhaWwgPSBvYmplY3QtPmNscy0+ZGVmYXVsdF9wcm9wLmRlbChvYmplY3QsIHByb3BfbmFtZSk7
Ci0gICAgZWxzZQotICAgICAgICBmYWlsID0gZWluYV9oYXNoX2RlbChvYmplY3QtPnByb3BlcnRp
ZXMsIHByb3BfbmFtZSwgMCk7Ci0KLSAgICBmcmVlKHByb3BfbmFtZSk7Ci0gICAgcmV0dXJuIGZh
aWw7Ci19Ci0KLXN0YXRpYyBib29sIGV3a19qc19wcm9wZXJ0aWVzX2VudW1lcmF0ZShOUE9iamVj
dCogbnBPYmplY3QsIE5QSWRlbnRpZmllcioqIHZhbHVlLCB1aW50MzJfdCogY291bnQpCi17Ci0g
ICAgRXdrX0pTX09iamVjdCogb2JqZWN0ID0gcmVpbnRlcnByZXRfY2FzdDxFd2tfSlNfT2JqZWN0
Kj4obnBPYmplY3QpOwotICAgIEVpbmFfSXRlcmF0b3IqIGl0OwotICAgIGNoYXIqIGtleTsKLSAg
ICBpbnQgaSA9IDA7Ci0KLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwobnBPYmpl
Y3QsIGZhbHNlKTsKLSAgICBFSU5BX01BR0lDX0NIRUNLX09SX1JFVFVSTihvYmplY3QsIGZhbHNl
KTsKLQotICAgICpjb3VudCA9IGVpbmFfaGFzaF9wb3B1bGF0aW9uKG9iamVjdC0+cHJvcGVydGll
cyk7Ci0gICAgKnZhbHVlID0gc3RhdGljX2Nhc3Q8TlBJZGVudGlmaWVyKj4obWFsbG9jKHNpemVv
ZihOUElkZW50aWZpZXIpICogKmNvdW50KSk7Ci0gICAgaWYgKCEqdmFsdWUpIHsKLSAgICAgICAg
RVJSKCJDb3VsZCBub3QgYWxsb2NhdGUgbWVtb3J5IGZvciBOUElkZW50aWZpZXIiKTsKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGl0ID0gZWluYV9oYXNoX2l0ZXJhdG9yX2tl
eV9uZXcob2JqZWN0LT5wcm9wZXJ0aWVzKTsKLSAgICBFSU5BX0lURVJBVE9SX0ZPUkVBQ0goaXQs
IGtleSkKLSAgICAgICAgKCp2YWx1ZSlbaSsrXSA9IF9OUE5fR2V0U3RyaW5nSWRlbnRpZmllcihr
ZXkpOwotCi0gICAgZWluYV9pdGVyYXRvcl9mcmVlKGl0KTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0K
LQotc3RhdGljIGJvb2wgZXdrX2pzX21ldGhvZF9oYXMoTlBPYmplY3QqIG5wT2JqZWN0LCBOUElk
ZW50aWZpZXIgbmFtZSkKLXsKLSAgICBFd2tfSlNfT2JqZWN0KiBvYmplY3QgPSByZWludGVycHJl
dF9jYXN0PEV3a19KU19PYmplY3QqPihucE9iamVjdCk7Ci0KLSAgICBFSU5BX1NBRkVUWV9PTl9O
VUxMX1JFVFVSTl9WQUwobnBPYmplY3QsIGZhbHNlKTsKLSAgICBFSU5BX01BR0lDX0NIRUNLX09S
X1JFVFVSTihvYmplY3QsIGZhbHNlKTsKLQotICAgIGlmICghX05QTl9JZGVudGlmaWVySXNTdHJp
bmcobmFtZSkpIHsKLSAgICAgICAgRVJSKCJpbnQgTlBJZGVudGlmaWVyIGlzIG5vdCBzdXBwb3J0
ZWQuIik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgcmV0dXJuIGVpbmFfaGFz
aF9maW5kKG9iamVjdC0+Y2xzLT5tZXRob2RzLCBuYW1lKTsgLy8gUmV0dXJucyBwb2ludGVyIGlm
IGZvdW5kKHRydWUpLCAwKGZhbHNlKSBvdGhlcndpc2UuCi19Ci0KLXN0YXRpYyBib29sIGV3a19q
c19tZXRob2RfaW52b2tlKE5QT2JqZWN0KiBucE9iamVjdCwgTlBJZGVudGlmaWVyIG5hbWUsIGNv
bnN0IE5QVmFyaWFudCogbnBBcmdzLCB1aW50MzJfdCBucEFyZ0NvdW50LCBOUFZhcmlhbnQqIHJl
c3VsdCkKLXsKLSAgICBFd2tfSlNfT2JqZWN0KiBvYmplY3QgPSByZWludGVycHJldF9jYXN0PEV3
a19KU19PYmplY3QqPihucE9iamVjdCk7Ci0gICAgRXdrX0pTX01ldGhvZCogbWV0aG9kOwotICAg
IEV3a19KU19WYXJpYW50KiBhcmdzOwotICAgIEV3a19KU19WYXJpYW50KiByZXRfdmFsOwotCi0g
ICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKG5wT2JqZWN0LCBmYWxzZSk7Ci0gICAg
RUlOQV9NQUdJQ19DSEVDS19PUl9SRVRVUk4ob2JqZWN0LCBmYWxzZSk7Ci0KLSAgICBpZiAoIV9O
UE5fSWRlbnRpZmllcklzU3RyaW5nKG5hbWUpKSB7Ci0gICAgICAgIEVSUigiaW50IE5QSWRlbnRp
ZmllciBpcyBub3Qgc3VwcG9ydGVkLiIpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQot
Ci0gICAgbWV0aG9kID0gc3RhdGljX2Nhc3Q8RXdrX0pTX01ldGhvZCo+KGVpbmFfaGFzaF9maW5k
KG9iamVjdC0+Y2xzLT5tZXRob2RzLCBuYW1lKSk7Ci0gICAgaWYgKCFtZXRob2QpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLQotICAgIGFyZ3MgPSBzdGF0aWNfY2FzdDxFd2tfSlNfVmFyaWFudCo+
KG1hbGxvYyhzaXplb2YoRXdrX0pTX1ZhcmlhbnQpICAqbnBBcmdDb3VudCkpOwotICAgIGlmICgh
YXJncykgewotICAgICAgICBFUlIoIkNvdWxkIG5vdCBhbGxvY2F0ZSBtZW1vcnkgZm9yIGV3a19q
c192YXJpYW50Iik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBmb3IgKHVp
bnQzMl90IGkgPSAwOyBpIDwgbnBBcmdDb3VudDsgaSsrKQotICAgICAgICBld2tfanNfbnB2YXJp
YW50X3RvX3ZhcmlhbnQoJmFyZ3NbaV0sICZucEFyZ3NbaV0pOwotICAgIHJldF92YWwgPSBtZXRo
b2QtPmludm9rZShvYmplY3QsIGFyZ3MsIG5wQXJnQ291bnQpOwotICAgIGV3a19qc192YXJpYW50
X3RvX25wdmFyaWFudChyZXRfdmFsLCByZXN1bHQpOwotCi0gICAgZXdrX2pzX3ZhcmlhbnRfZnJl
ZShyZXRfdmFsKTsKLQotICAgIHJldHVybiB0cnVlOwotfQotCi1zdGF0aWMgRWluYV9Cb29sIGV3
a19qc19ucG9iamVjdF9wcm9wZXJ0eV9nZXQoRXdrX0pTX09iamVjdCoganNPYmplY3QsIGNvbnN0
IGNoYXIqIG5hbWUsIEV3a19KU19WYXJpYW50KiB2YWx1ZSkKLXsKLSAgICBOUElkZW50aWZpZXIg
aWQgPSBfTlBOX0dldFN0cmluZ0lkZW50aWZpZXIobmFtZSk7Ci0gICAgTlBWYXJpYW50IHZhcjsK
LSAgICBib29sIGZhaWwgPSBfTlBOX0dldFByb3BlcnR5KDAsIHJlaW50ZXJwcmV0X2Nhc3Q8TlBP
YmplY3QqPihqc09iamVjdCksIGlkLCAmdmFyKTsKLSAgICBpZiAoIWZhaWwpCi0gICAgICAgIGZh
aWwgPSBld2tfanNfbnB2YXJpYW50X3RvX3ZhcmlhbnQodmFsdWUsICZ2YXIpOwotICAgIHJldHVy
biBmYWlsOwotfQotCi1zdGF0aWMgRWluYV9Cb29sIGV3a19qc19ucG9iamVjdF9wcm9wZXJ0eV9z
ZXQoRXdrX0pTX09iamVjdCoganNPYmplY3QsIGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IEV3a19K
U19WYXJpYW50KiB2YWx1ZSkKLXsKLSAgICBOUElkZW50aWZpZXIgaWQgPSBfTlBOX0dldFN0cmlu
Z0lkZW50aWZpZXIobmFtZSk7Ci0gICAgTlBWYXJpYW50IHZhcjsKLSAgICBib29sIGZhaWwgPSBl
d2tfanNfdmFyaWFudF90b19ucHZhcmlhbnQodmFsdWUsICZ2YXIpOwotICAgIGlmIChmYWlsKQot
ICAgICAgICBmYWlsID0gX05QTl9TZXRQcm9wZXJ0eSgwLCByZWludGVycHJldF9jYXN0PE5QT2Jq
ZWN0Kj4oanNPYmplY3QpLCBpZCwgJnZhcik7Ci0gICAgcmV0dXJuIGZhaWw7Ci19Ci0KLXN0YXRp
YyBFaW5hX0Jvb2wgZXdrX2pzX25wb2JqZWN0X3Byb3BlcnR5X2RlbChFd2tfSlNfT2JqZWN0KiBq
c09iamVjdCwgY29uc3QgY2hhciogbmFtZSkKLXsKLSAgICBOUElkZW50aWZpZXIgaWQgPSBfTlBO
X0dldFN0cmluZ0lkZW50aWZpZXIobmFtZSk7Ci0gICAgcmV0dXJuIF9OUE5fUmVtb3ZlUHJvcGVy
dHkoMCwgcmVpbnRlcnByZXRfY2FzdDxOUE9iamVjdCo+KGpzT2JqZWN0KSwgaWQpOwotfQotCi1z
dGF0aWMgdm9pZCBld2tfanNfcHJvcGVydHlfZnJlZShFd2tfSlNfUHJvcGVydHkqIHByb3ApCi17
Ci0gICAgZnJlZShjb25zdF9jYXN0PGNoYXIqPihwcm9wLT5uYW1lKSk7Ci0gICAgaWYgKHByb3At
PnZhbHVlLnR5cGUgPT0gRVdLX0pTX1ZBUklBTlRfU1RSSU5HKQotICAgICAgICBlaW5hX3N0cmlu
Z3NoYXJlX2RlbChwcm9wLT52YWx1ZS52YWx1ZS5zKTsKLSAgICBlbHNlIGlmIChwcm9wLT52YWx1
ZS50eXBlID09IEVXS19KU19WQVJJQU5UX09CSkVDVCkKLSAgICAgICAgZXdrX2pzX29iamVjdF9m
cmVlKHByb3AtPnZhbHVlLnZhbHVlLm8pOwotICAgIGZyZWUocHJvcCk7Ci19Ci0KLS8qKgotICog
Q3JlYXRlIGEgRXdrX0pTX0NsYXNzIHRvIGJlIHVzZWQgaW4gQGEgZXdrX2pzX29iamVjdF9uZXcu
Ci0gKgotICogQHBhcmFtIG1ldGEgQGEgRXdrX0pTX0NsYXNzX01ldGEgdGhhdCBkZXNjcmliZXMg
dGhlIGNsYXNzIHRvIGJlIGNyZWF0ZWQuCi0gKgotICogQHJldHVybiBUaGUgRXdrX0pTX0NsYXNz
IGNyZWF0ZWQuCi0gKi8KLUV3a19KU19DbGFzcyogZXdrX2pzX2NsYXNzX25ldyhjb25zdCBFd2tf
SlNfQ2xhc3NfTWV0YSoganNNZXRhQ2xhc3MpCi17Ci0gICAgRXdrX0pTX0NsYXNzKiBjbHM7Ci0K
LSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoanNNZXRhQ2xhc3MsIDApOwotCi0g
ICAgY2xzID0gc3RhdGljX2Nhc3Q8RXdrX0pTX0NsYXNzKj4obWFsbG9jKHNpemVvZihFd2tfSlNf
Q2xhc3MpKSk7Ci0gICAgaWYgKCFjbHMpIHsKLSAgICAgICAgRVJSKCJDb3VsZCBub3QgYWxsb2Nh
dGUgbWVtb3J5IGZvciBld2tfanNfY2xhc3MiKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQot
Ci0gICAgY2xzLT5tZXRhID0ganNNZXRhQ2xhc3M7Ci0gICAgY2xzLT5kZWZhdWx0X3Byb3AgPSBj
bHMtPm1ldGEtPmRlZmF1bHRfcHJvcDsKLQotICAgIC8vIERvbid0IGZyZWUgbWV0aG9kcyBzaW5j
ZSB0aGV5IHBvaW50IHRvIG1ldGEgY2xhc3MgbWV0aG9kcyh3aWxsIGJlIGZyZWVkIHdoZW4gbWV0
YSBjbGFzcyBpcyBmcmVlZCkuCi0gICAgY2xzLT5tZXRob2RzID0gZWluYV9oYXNoX3BvaW50ZXJf
bmV3KDApOwotICAgIGZvciAoaW50IGkgPSAwOyBjbHMtPm1ldGEtPm1ldGhvZHMgJiYgY2xzLT5t
ZXRhLT5tZXRob2RzW2ldLm5hbWU7IGkrKykgewotICAgICAgICBOUElkZW50aWZpZXIgaWQgPSBf
TlBOX0dldFN0cmluZ0lkZW50aWZpZXIoY2xzLT5tZXRhLT5tZXRob2RzW2ldLm5hbWUpOwotICAg
ICAgICBlaW5hX2hhc2hfYWRkKGNscy0+bWV0aG9kcywgaWQsICZjbHMtPm1ldGEtPm1ldGhvZHNb
aV0pOwotICAgIH0KLQotICAgIC8vIERvbid0IGZyZWUgcHJvcGVydGllcyBzaW5jZSB0aGV5IHBv
aW50IHRvIGNscy0+bWV0YSBjbGFzcyBwcm9wZXJ0aWVzKHdpbGwgYmUgZnJlZWQgd2hlbiBjbHMt
Pm1ldGEgY2xhc3MgaXMgZnJlZWQpLgotICAgIGNscy0+cHJvcGVydGllcyA9IGVpbmFfaGFzaF9w
b2ludGVyX25ldygwKTsKLSAgICBmb3IgKGludCBpID0gMDsgY2xzLT5tZXRhLT5wcm9wZXJ0aWVz
ICYmIGNscy0+bWV0YS0+cHJvcGVydGllc1tpXS5uYW1lOyBpKyspIHsKLSAgICAgICAgTlBJZGVu
dGlmaWVyIGlkID0gX05QTl9HZXRTdHJpbmdJZGVudGlmaWVyKGNscy0+bWV0YS0+cHJvcGVydGll
c1tpXS5uYW1lKTsKLSAgICAgICAgZWluYV9oYXNoX2FkZChjbHMtPnByb3BlcnRpZXMsIGlkLCAm
Y2xzLT5tZXRhLT5wcm9wZXJ0aWVzW2ldKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gY2xzOwotfQot
Ci0vKioKLSAqIFJlbGVhc2UgcmVzb3VyY2VzIGFsbG9jYXRlZCBieSBAYSBjbHMuCi0gKgotICog
QHBhcmFtIGNscyBAYSBFd2tfSlNfQ2xhc3MgdG8gYmUgcmVsZWFzZWQuCi0gKi8KLXZvaWQgZXdr
X2pzX2NsYXNzX2ZyZWUoRXdrX0pTX0NsYXNzKiBqc0NsYXNzKQotewotICAgIEVJTkFfU0FGRVRZ
X09OX05VTExfUkVUVVJOKGpzQ2xhc3MpOwotICAgIGVpbmFfaGFzaF9mcmVlKGpzQ2xhc3MtPm1l
dGhvZHMpOwotICAgIGVpbmFfaGFzaF9mcmVlKGpzQ2xhc3MtPnByb3BlcnRpZXMpOwotICAgIGZy
ZWUoanNDbGFzcyk7Ci19Ci0KLXN0YXRpYyBOUENsYXNzIEVXS19OUENMQVNTID0gewotICAgIE5Q
X0NMQVNTX1NUUlVDVF9WRVJTSU9OLAotICAgIDAsIC8vIE5QQWxsb2NhdGVGdW5jdGlvblB0cgot
ICAgIDAsIC8vIE5QRGVhbGxvY2F0ZUZ1bmN0aW9uUHRyCi0gICAgMCwgLy8gTlBJbnZhbGlkYXRl
RnVuY3Rpb25QdHIKLSAgICBld2tfanNfbWV0aG9kX2hhcywgLy8gTlBIYXNNZXRob2RGdW5jdGlv
blB0cgotICAgIGV3a19qc19tZXRob2RfaW52b2tlLCAvLyBOUEludm9rZUZ1bmN0aW9uUHRyCi0g
ICAgMCwgLy8gTlBJbnZva2VEZWZhdWx0RnVuY3Rpb25QdHIKLSAgICBld2tfanNfcHJvcGVydHlf
aGFzLCAvLyBOUEhhc1Byb3BlcnR5RnVuY3Rpb25QdHIKLSAgICBld2tfanNfcHJvcGVydHlfZ2V0
LCAvLyBOUEdldFByb3BlcnR5RnVuY3Rpb25QdHIKLSAgICBld2tfanNfcHJvcGVydHlfc2V0LCAv
LyBOUFNldFByb3BlcnR5RnVuY3Rpb25QdHIKLSAgICBld2tfanNfcHJvcGVydHlfcmVtb3ZlLCAv
LyBOUFJlbW92ZVByb3BlcnR5RnVuY3Rpb25QdHIKLSAgICBld2tfanNfcHJvcGVydGllc19lbnVt
ZXJhdGUsIC8vIE5QRW51bWVyYXRpb25GdW5jdGlvblB0cgotICAgIDAgLy8gTlBDb25zdHJ1Y3RG
dW5jdGlvbgotfTsKLQotc3RhdGljIEV3a19KU19PYmplY3QqIGV3a19qc19ucG9iamVjdF90b19v
YmplY3QoTlBPYmplY3QqIG5wT2JqZWN0KQotewotICAgIE5QSWRlbnRpZmllciogdmFsdWVzOwot
ICAgIHVpbnQzMl90IG5wX3Byb3BzX2NvdW50OwotICAgIEV3a19KU19DbGFzcyogY2xzOwotICAg
IEV3a19KU19PYmplY3QqIG9iamVjdDsKLSAgICBFaW5hX0l0ZXJhdG9yKiBpdDsKLSAgICBFd2tf
SlNfUHJvcGVydHkqIHByb3A7Ci0gICAgSmF2YVNjcmlwdE9iamVjdCoganNvOwotCi0gICAgaWYg
KEVJTkFfTUFHSUNfQ0hFQ0socmVpbnRlcnByZXRfY2FzdDxFd2tfSlNfT2JqZWN0Kj4obnBPYmpl
Y3QpLCBFV0tfSlNfT0JKRUNUX01BR0lDKSkKLSAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8RXdrX0pTX09iamVjdCo+KG5wT2JqZWN0KTsKLQotICAgIGlmICghX05QTl9FbnVtZXJhdGUo
MCwgbnBPYmplY3QsICZ2YWx1ZXMsICZucF9wcm9wc19jb3VudCkpCi0gICAgICAgIHJldHVybiAw
OwotCi0gICAgY2xzID0gc3RhdGljX2Nhc3Q8RXdrX0pTX0NsYXNzKj4obWFsbG9jKHNpemVvZihF
d2tfSlNfQ2xhc3MpKSk7Ci0gICAgaWYgKCFjbHMpIHsKLSAgICAgICAgRVJSKCJDb3VsZCBub3Qg
YWxsb2NhdGUgbWVtb3J5IGZvciBld2tfanNfY2xhc3MiKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0g
ICAgfQotCi0gICAgY2xzLT5tZXRhID0gMDsKLSAgICBFd2tfSlNfRGVmYXVsdCBkZWYgPSB7Ci0g
ICAgICAgIGV3a19qc19ucG9iamVjdF9wcm9wZXJ0eV9zZXQsCi0gICAgICAgIGV3a19qc19ucG9i
amVjdF9wcm9wZXJ0eV9nZXQsCi0gICAgICAgIGV3a19qc19ucG9iamVjdF9wcm9wZXJ0eV9kZWwK
LSAgICB9OwotICAgIGNscy0+ZGVmYXVsdF9wcm9wID0gZGVmOwotICAgIGNscy0+bWV0aG9kcyA9
IGVpbmFfaGFzaF9wb2ludGVyX25ldygwKTsKLSAgICBjbHMtPnByb3BlcnRpZXMgPSBlaW5hX2hh
c2hfcG9pbnRlcl9uZXcocmVpbnRlcnByZXRfY2FzdDxFaW5hX0ZyZWVfQ2I+KGV3a19qc19wcm9w
ZXJ0eV9mcmVlKSk7Ci0gICAgZm9yICh1aW50MzJfdCBpID0gMDsgaSA8IG5wX3Byb3BzX2NvdW50
OyBpKyspIHsKLSAgICAgICAgaWYgKF9OUE5fSGFzUHJvcGVydHkoMCwgbnBPYmplY3QsIHZhbHVl
c1tpXSkpIHsKLSAgICAgICAgICAgIE5QVmFyaWFudCB2YXI7Ci0gICAgICAgICAgICBFd2tfSlNf
UHJvcGVydHkqIHByb3AgPSBzdGF0aWNfY2FzdDxFd2tfSlNfUHJvcGVydHkqPihjYWxsb2Moc2l6
ZW9mKEV3a19KU19Qcm9wZXJ0eSksIDEpKTsKLSAgICAgICAgICAgIGlmICghcHJvcCkgewotICAg
ICAgICAgICAgICAgIEVSUigiQ291bGQgbm90IGFsbG9jYXRlIG1lbW9yeSBmb3IgZXdrX2pzX3By
b3BlcnR5Iik7Ci0gICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgIH0KLQot
ICAgICAgICAgICAgX05QTl9HZXRQcm9wZXJ0eSgwLCBucE9iamVjdCwgdmFsdWVzW2ldLCAmdmFy
KTsKLSAgICAgICAgICAgIGV3a19qc19ucHZhcmlhbnRfdG9fdmFyaWFudCgmKHByb3AtPnZhbHVl
KSwgJnZhcik7Ci0gICAgICAgICAgICBwcm9wLT5uYW1lID0gX05QTl9VVEY4RnJvbUlkZW50aWZp
ZXIodmFsdWVzW2ldKTsKLSAgICAgICAgICAgIGVpbmFfaGFzaF9hZGQoY2xzLT5wcm9wZXJ0aWVz
LCB2YWx1ZXNbaV0sIHByb3ApOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gQ2FuJ3QgdXNl
IGV3a19qc19vYmplY3RfbmV3KGNscykgYmVjYXVzZSBpdCBleHBlY3RzIGNscy0+bWV0YSB0byBl
eGlzdC4KLSAgICBvYmplY3QgPSBzdGF0aWNfY2FzdDxFd2tfSlNfT2JqZWN0Kj4obWFsbG9jKHNp
emVvZihFd2tfSlNfT2JqZWN0KSkpOwotICAgIGlmICghb2JqZWN0KSB7Ci0gICAgICAgIEVSUigi
Q291bGQgbm90IGFsbG9jYXRlIG1lbW9yeSBmb3IgZXdrX2pzX29iamVjdCIpOwotICAgICAgICBn
b3RvIGVycm9yOwotICAgIH0KLQotICAgIGZyZWUodmFsdWVzKTsKLSAgICBFSU5BX01BR0lDX1NF
VChvYmplY3QsIEVXS19KU19PQkpFQ1RfTUFHSUMpOwotICAgIG9iamVjdC0+bmFtZSA9IDA7Ci0g
ICAgb2JqZWN0LT5jbHMgPSBjbHM7Ci0gICAgb2JqZWN0LT52aWV3ID0gMDsKLQotICAgIGpzbyA9
IHJlaW50ZXJwcmV0X2Nhc3Q8SmF2YVNjcmlwdE9iamVjdCo+KG5wT2JqZWN0KTsKLSAgICBpZiAo
IXN0cmNtcCgiQXJyYXkiLCBqc28tPmltcC0+bWV0aG9kVGFibGUoKS0+Y2xhc3NOYW1lKGpzby0+
aW1wKS5hc2NpaSgpLmRhdGEoKSkpCi0gICAgICAgIG9iamVjdC0+dHlwZSA9IEVXS19KU19PQkpF
Q1RfQVJSQVk7Ci0gICAgZWxzZSBpZiAoIXN0cmNtcCgiRnVuY3Rpb24iLCBqc28tPmltcC0+bWV0
aG9kVGFibGUoKS0+Y2xhc3NOYW1lKGpzby0+aW1wKS5hc2NpaSgpLmRhdGEoKSkpCi0gICAgICAg
IG9iamVjdC0+dHlwZSA9IEVXS19KU19PQkpFQ1RfRlVOQ1RJT047Ci0gICAgZWxzZQotICAgICAg
ICBvYmplY3QtPnR5cGUgPSBFV0tfSlNfT0JKRUNUX09CSkVDVDsKLQotICAgIGlmIChlaW5hX2hh
c2hfcG9wdWxhdGlvbihjbHMtPnByb3BlcnRpZXMpIDwgMjUpCi0gICAgICAgIG9iamVjdC0+cHJv
cGVydGllcyA9IGVpbmFfaGFzaF9zdHJpbmdfc21hbGxfbmV3KDApOwotICAgIGVsc2UKLSAgICAg
ICAgb2JqZWN0LT5wcm9wZXJ0aWVzID0gZWluYV9oYXNoX3N0cmluZ19zdXBlcmZhc3RfbmV3KDAp
OwotCi0gICAgaXQgPSBlaW5hX2hhc2hfaXRlcmF0b3JfZGF0YV9uZXcoY2xzLT5wcm9wZXJ0aWVz
KTsKLSAgICBFSU5BX0lURVJBVE9SX0ZPUkVBQ0goaXQsIHByb3ApIHsKLSAgICAgICAgY29uc3Qg
Y2hhcioga2V5ID0gcHJvcC0+bmFtZTsKLSAgICAgICAgRXdrX0pTX1ZhcmlhbnQqIHZhbHVlID0g
JnByb3AtPnZhbHVlOwotICAgICAgICBlaW5hX2hhc2hfYWRkKG9iamVjdC0+cHJvcGVydGllcywg
a2V5LCB2YWx1ZSk7Ci0gICAgfQotCi0gICAgZWluYV9pdGVyYXRvcl9mcmVlKGl0KTsKLSAgICBv
YmplY3QtPmJhc2UgPSAqcmVpbnRlcnByZXRfY2FzdDxKYXZhU2NyaXB0T2JqZWN0Kj4obnBPYmpl
Y3QpOwotCi0gICAgcmV0dXJuIG9iamVjdDsKLQotZXJyb3I6Ci0gICAgZXdrX2pzX2NsYXNzX2Zy
ZWUoY2xzKTsKLSAgICBmcmVlKHZhbHVlcyk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyBF
aW5hX0Jvb2wgZXdrX2pzX25wdmFyaWFudF90b192YXJpYW50KEV3a19KU19WYXJpYW50KiBkYXRh
LCBjb25zdCBOUFZhcmlhbnQqIHJlc3VsdCkKLXsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JF
VFVSTl9WQUwoZGF0YSwgZmFsc2UpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZB
TChyZXN1bHQsIGZhbHNlKTsKLSAgICBzd2l0Y2ggKHJlc3VsdC0+dHlwZSkgewotICAgIGNhc2Ug
TlBWYXJpYW50VHlwZV9Wb2lkOgotICAgICAgICBkYXRhLT50eXBlID0gRVdLX0pTX1ZBUklBTlRf
Vk9JRDsKLSAgICAgICAgZGF0YS0+dmFsdWUubyA9IDA7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgTlBWYXJpYW50VHlwZV9OdWxsOgotICAgICAgICBkYXRhLT50eXBlID0gRVdLX0pTX1ZBUklB
TlRfTlVMTDsKLSAgICAgICAgZGF0YS0+dmFsdWUubyA9IDA7Ci0gICAgICAgIGJyZWFrOwotICAg
IGNhc2UgTlBWYXJpYW50VHlwZV9JbnQzMjoKLSAgICAgICAgZGF0YS0+dHlwZSA9IEVXS19KU19W
QVJJQU5UX0lOVDMyOwotICAgICAgICBkYXRhLT52YWx1ZS5pID0gTlBWQVJJQU5UX1RPX0lOVDMy
KCpyZXN1bHQpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIE5QVmFyaWFudFR5cGVfRG91Ymxl
OgotICAgICAgICBkYXRhLT50eXBlID0gRVdLX0pTX1ZBUklBTlRfRE9VQkxFOwotICAgICAgICBk
YXRhLT52YWx1ZS5kID0gTlBWQVJJQU5UX1RPX0RPVUJMRSgqcmVzdWx0KTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBOUFZhcmlhbnRUeXBlX1N0cmluZzoKLSAgICAgICAgZGF0YS0+dmFsdWUu
cyA9IGVpbmFfc3RyaW5nc2hhcmVfYWRkX2xlbmd0aChOUFZBUklBTlRfVE9fU1RSSU5HKCpyZXN1
bHQpLlVURjhDaGFyYWN0ZXJzLCBOUFZBUklBTlRfVE9fU1RSSU5HKCpyZXN1bHQpLlVURjhMZW5n
dGgpOwotICAgICAgICBkYXRhLT50eXBlID0gRVdLX0pTX1ZBUklBTlRfU1RSSU5HOwotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIE5QVmFyaWFudFR5cGVfQm9vbDoKLSAgICAgICAgZGF0YS0+dHlw
ZSA9IEVXS19KU19WQVJJQU5UX0JPT0w7Ci0gICAgICAgIGRhdGEtPnZhbHVlLmIgPSBOUFZBUklB
TlRfVE9fQk9PTEVBTigqcmVzdWx0KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBOUFZhcmlh
bnRUeXBlX09iamVjdDoKLSAgICAgICAgZGF0YS0+dHlwZSA9IEVXS19KU19WQVJJQU5UX09CSkVD
VDsKLSAgICAgICAgZGF0YS0+dmFsdWUubyA9IGV3a19qc19ucG9iamVjdF90b19vYmplY3QoTlBW
QVJJQU5UX1RPX09CSkVDVCgqcmVzdWx0KSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLSNl
bmRpZiAvLyBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKLQotRXdrX0pTX09iamVjdCogZXdr
X2pzX29iamVjdF9uZXcoY29uc3QgRXdrX0pTX0NsYXNzX01ldGEqIGpzTWV0YUNsYXNzKQotewot
I2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQotICAgIEV3a19KU19PYmplY3QqIG9iamVj
dDsKLQotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChqc01ldGFDbGFzcywgMCk7
Ci0KLSAgICBvYmplY3QgPSBzdGF0aWNfY2FzdDxFd2tfSlNfT2JqZWN0Kj4obWFsbG9jKHNpemVv
ZihFd2tfSlNfT2JqZWN0KSkpOwotICAgIGlmICghb2JqZWN0KSB7Ci0gICAgICAgIEVSUigiQ291
bGQgbm90IGFsbG9jYXRlIG1lbW9yeSBmb3IgZXdrX2pzX29iamVjdCIpOwotICAgICAgICByZXR1
cm4gMDsKLSAgICB9Ci0KLSAgICBFSU5BX01BR0lDX1NFVChvYmplY3QsIEVXS19KU19PQkpFQ1Rf
TUFHSUMpOwotICAgIG9iamVjdC0+Y2xzID0gZXdrX2pzX2NsYXNzX25ldyhqc01ldGFDbGFzcyk7
Ci0gICAgb2JqZWN0LT52aWV3ID0gMDsKLSAgICBvYmplY3QtPm5hbWUgPSAwOwotICAgIG9iamVj
dC0+dHlwZSA9IEVXS19KU19PQkpFQ1RfT0JKRUNUOwotCi0gICAgaWYgKGVpbmFfaGFzaF9wb3B1
bGF0aW9uKG9iamVjdC0+Y2xzLT5wcm9wZXJ0aWVzKSA8IDI1KQotICAgICAgICBvYmplY3QtPnBy
b3BlcnRpZXMgPSBlaW5hX2hhc2hfc3RyaW5nX3NtYWxsX25ldyhyZWludGVycHJldF9jYXN0PEVp
bmFfRnJlZV9DYj4oZXdrX2pzX3ZhcmlhbnRfZnJlZSkpOwotICAgIGVsc2UKLSAgICAgICAgb2Jq
ZWN0LT5wcm9wZXJ0aWVzID0gZWluYV9oYXNoX3N0cmluZ19zdXBlcmZhc3RfbmV3KHJlaW50ZXJw
cmV0X2Nhc3Q8RWluYV9GcmVlX0NiPihld2tfanNfdmFyaWFudF9mcmVlKSk7Ci0KLSAgICBmb3Ig
KGludCBpID0gMDsgb2JqZWN0LT5jbHMtPm1ldGEtPnByb3BlcnRpZXMgJiYgb2JqZWN0LT5jbHMt
Pm1ldGEtPnByb3BlcnRpZXNbaV0ubmFtZTsgaSsrKSB7Ci0gICAgICAgIEV3a19KU19Qcm9wZXJ0
eSBwcm9wID0gb2JqZWN0LT5jbHMtPm1ldGEtPnByb3BlcnRpZXNbaV07Ci0gICAgICAgIGNvbnN0
IGNoYXIqIGtleSA9IG9iamVjdC0+Y2xzLT5tZXRhLT5wcm9wZXJ0aWVzW2ldLm5hbWU7Ci0gICAg
ICAgIEV3a19KU19WYXJpYW50KiB2YWx1ZSA9IHN0YXRpY19jYXN0PEV3a19KU19WYXJpYW50Kj4o
bWFsbG9jKHNpemVvZihFd2tfSlNfVmFyaWFudCkpKTsKLSAgICAgICAgaWYgKCF2YWx1ZSkgewot
ICAgICAgICAgICAgRVJSKCJDb3VsZCBub3QgYWxsb2NhdGUgbWVtb3J5IGZvciBld2tfanNfdmFy
aWFudCIpOwotICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgfQotICAgICAgICBpZiAo
cHJvcC5nZXQpCi0gICAgICAgICAgICBwcm9wLmdldChvYmplY3QsIGtleSwgdmFsdWUpOwotICAg
ICAgICBlbHNlIHsKLSAgICAgICAgICAgIHZhbHVlLT50eXBlID0gcHJvcC52YWx1ZS50eXBlOwot
ICAgICAgICAgICAgc3dpdGNoICh2YWx1ZS0+dHlwZSkgewotICAgICAgICAgICAgY2FzZSBFV0tf
SlNfVkFSSUFOVF9WT0lEOgotICAgICAgICAgICAgY2FzZSBFV0tfSlNfVkFSSUFOVF9OVUxMOgot
ICAgICAgICAgICAgICAgIHZhbHVlLT52YWx1ZS5vID0gMDsKLSAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgIGNhc2UgRVdLX0pTX1ZBUklBTlRfU1RSSU5HOgotICAgICAgICAgICAg
ICAgIHZhbHVlLT52YWx1ZS5zID0gZWluYV9zdHJpbmdzaGFyZV9hZGQocHJvcC52YWx1ZS52YWx1
ZS5zKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgRVdLX0pTX1ZB
UklBTlRfQk9PTDoKLSAgICAgICAgICAgICAgICB2YWx1ZS0+dmFsdWUuYiA9IHByb3AudmFsdWUu
dmFsdWUuYjsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgRVdLX0pT
X1ZBUklBTlRfSU5UMzI6Ci0gICAgICAgICAgICAgICAgdmFsdWUtPnZhbHVlLmkgPSBwcm9wLnZh
bHVlLnZhbHVlLmk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIEVX
S19KU19WQVJJQU5UX0RPVUJMRToKLSAgICAgICAgICAgICAgICB2YWx1ZS0+dmFsdWUuZCA9IHBy
b3AudmFsdWUudmFsdWUuZDsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNh
c2UgRVdLX0pTX1ZBUklBTlRfT0JKRUNUOgotICAgICAgICAgICAgICAgIHZhbHVlLT52YWx1ZS5v
ID0gcHJvcC52YWx1ZS52YWx1ZS5vOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgfQotICAgICAgICB9Ci0gICAgICAgIGVpbmFfaGFzaF9hZGQob2JqZWN0LT5wcm9wZXJ0aWVz
LCBrZXksIHZhbHVlKTsKLSAgICB9Ci0KLSAgICBvYmplY3QtPmJhc2Uub2JqZWN0LnJlZmVyZW5j
ZUNvdW50ID0gMTsKLSAgICBvYmplY3QtPmJhc2Uub2JqZWN0Ll9jbGFzcyA9ICZFV0tfTlBDTEFT
UzsKLSAgICByZXR1cm4gb2JqZWN0OwotCi1lcnJvcjoKLSAgICBld2tfanNfb2JqZWN0X2ZyZWUo
b2JqZWN0KTsKLSAgICByZXR1cm4gMDsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGpzTWV0YUNs
YXNzKTsKLSAgICByZXR1cm4gMDsKLSNlbmRpZgotfQotCi12b2lkIGV3a19qc19vYmplY3RfZnJl
ZShFd2tfSlNfT2JqZWN0KiBqc09iamVjdCkKLXsKLSNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lO
X0FQSSkKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihqc09iamVjdCk7Ci0gICAgRUlO
QV9NQUdJQ19DSEVDS19PUl9SRVRVUk4oanNPYmplY3QpOwotICAgIEVpbmFfQm9vbCBzY3JpcHRf
b2JqID0gIWpzT2JqZWN0LT5jbHMtPm1ldGE7Ci0KLSAgICBlaW5hX2hhc2hfZnJlZShqc09iamVj
dC0+cHJvcGVydGllcyk7Ci0gICAgZWluYV9zdHJpbmdzaGFyZV9kZWwoanNPYmplY3QtPm5hbWUp
OwotCi0gICAgZXdrX2pzX2NsYXNzX2ZyZWUoY29uc3RfY2FzdDxFd2tfSlNfQ2xhc3MqPihqc09i
amVjdC0+Y2xzKSk7Ci0KLSAgICBFSU5BX01BR0lDX1NFVChqc09iamVjdCwgRUlOQV9NQUdJQ19O
T05FKTsKLQotICAgIGlmIChzY3JpcHRfb2JqKQotICAgICAgICBmcmVlKGpzT2JqZWN0KTsKLSNl
bHNlCi0gICAgVU5VU0VEX1BBUkFNKGpzT2JqZWN0KTsKLSNlbmRpZgotfQotCi1FdmFzX09iamVj
dCogZXdrX2pzX29iamVjdF92aWV3X2dldChjb25zdCBFd2tfSlNfT2JqZWN0KiBqc09iamVjdCkK
LXsKLSNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKLSAgICBFSU5BX1NBRkVUWV9PTl9O
VUxMX1JFVFVSTl9WQUwoanNPYmplY3QsIDApOwotICAgIEVJTkFfTUFHSUNfQ0hFQ0tfT1JfUkVU
VVJOKGpzT2JqZWN0LCAwKTsKLSAgICByZXR1cm4ganNPYmplY3QtPnZpZXc7Ci0jZWxzZQotICAg
IFVOVVNFRF9QQVJBTShqc09iamVjdCk7Ci0gICAgcmV0dXJuIDA7Ci0jZW5kaWYKLX0KLQotRWlu
YV9IYXNoKiBld2tfanNfb2JqZWN0X3Byb3BlcnRpZXNfZ2V0KGNvbnN0IEV3a19KU19PYmplY3Qq
IGpzT2JqZWN0KQotewotI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQotICAgIEVJTkFf
U0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChqc09iamVjdCwgMCk7Ci0gICAgRUlOQV9NQUdJQ19D
SEVDS19PUl9SRVRVUk4oanNPYmplY3QsIDApOwotICAgIHJldHVybiBqc09iamVjdC0+cHJvcGVy
dGllczsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGpzT2JqZWN0KTsKLSAgICByZXR1cm4gMDsK
LSNlbmRpZgotfQotCi1jb25zdCBjaGFyKiBld2tfanNfb2JqZWN0X25hbWVfZ2V0KGNvbnN0IEV3
a19KU19PYmplY3QqIGpzT2JqZWN0KQotewotI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJ
KQotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChqc09iamVjdCwgMCk7Ci0gICAg
RUlOQV9NQUdJQ19DSEVDS19PUl9SRVRVUk4oanNPYmplY3QsIDApOwotICAgIHJldHVybiBqc09i
amVjdC0+bmFtZTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGpzT2JqZWN0KTsKLSAgICByZXR1
cm4gMDsKLSNlbmRpZgotfQotCi1FaW5hX0Jvb2wgZXdrX2pzX29iamVjdF9pbnZva2UoRXdrX0pT
X09iamVjdCoganNPYmplY3QsIEV3a19KU19WYXJpYW50KiBhcmdzLCBpbnQgYXJnQ291bnQsIEV3
a19KU19WYXJpYW50KiByZXN1bHQpCi17Ci0jaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkp
Ci0gICAgTlBWYXJpYW50KiBucF9hcmdzOwotICAgIE5QVmFyaWFudCBucF9yZXN1bHQ7Ci0gICAg
Ym9vbCBmYWlsID0gZmFsc2U7Ci0KLSAgICBFSU5BX01BR0lDX0NIRUNLX09SX1JFVFVSTihqc09i
amVjdCwgZmFsc2UpOwotICAgIGlmIChld2tfanNfb2JqZWN0X3R5cGVfZ2V0KGpzT2JqZWN0KSAh
PSBFV0tfSlNfT0JKRUNUX0ZVTkNUSU9OKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYg
KGFyZ0NvdW50KQotICAgICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoYXJncywg
ZmFsc2UpOwotCi0gICAgbnBfYXJncyA9IHN0YXRpY19jYXN0PE5QVmFyaWFudCo+KG1hbGxvYyhz
aXplb2YoTlBWYXJpYW50KSAgKmFyZ0NvdW50KSk7Ci0gICAgaWYgKCFucF9hcmdzKSB7Ci0gICAg
ICAgIEVSUigiQ291bGQgbm90IGFsbG9jYXRlIG1lbW9yeSB0byBtZXRob2QgYXJndW1lbnRzIik7
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBmb3IgKGludCBpID0gMDsgaSA8
IGFyZ0NvdW50OyBpKyspCi0gICAgICAgIGlmICghZXdrX2pzX3ZhcmlhbnRfdG9fbnB2YXJpYW50
KCZhcmdzW2ldLCAmbnBfYXJnc1tpXSkpCi0gICAgICAgICAgICBnb3RvIGVuZDsKLQotICAgIGlm
ICghKGZhaWwgPSBfTlBOX0ludm9rZURlZmF1bHQoMCwgcmVpbnRlcnByZXRfY2FzdDxOUE9iamVj
dCo+KGpzT2JqZWN0KSwgbnBfYXJncywgYXJnQ291bnQsICZucF9yZXN1bHQpKSkKLSAgICAgICAg
Z290byBlbmQ7Ci0gICAgaWYgKHJlc3VsdCkKLSAgICAgICAgZmFpbCA9IGV3a19qc19ucHZhcmlh
bnRfdG9fdmFyaWFudChyZXN1bHQsICZucF9yZXN1bHQpOwotCi1lbmQ6Ci0gICAgZnJlZShucF9h
cmdzKTsKLSAgICByZXR1cm4gZmFpbDsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGpzT2JqZWN0
KTsKLSAgICBVTlVTRURfUEFSQU0oYXJncyk7Ci0gICAgVU5VU0VEX1BBUkFNKGFyZ0NvdW50KTsK
LSAgICBVTlVTRURfUEFSQU0ocmVzdWx0KTsKLSAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYKLX0K
LQotRXdrX0pTX09iamVjdF9UeXBlIGV3a19qc19vYmplY3RfdHlwZV9nZXQoY29uc3QgRXdrX0pT
X09iamVjdCoganNPYmplY3QpCi17Ci0jaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCi0g
ICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGpzT2JqZWN0LCBFV0tfSlNfT0JKRUNU
X09CSkVDVCk7Ci0gICAgRUlOQV9NQUdJQ19DSEVDS19PUl9SRVRVUk4oanNPYmplY3QsIEVXS19K
U19PQkpFQ1RfT0JKRUNUKTsKLQotICAgIHJldHVybiBqc09iamVjdC0+dHlwZTsKLSNlbHNlCi0g
ICAgVU5VU0VEX1BBUkFNKGpzT2JqZWN0KTsKLSAgICByZXR1cm4gRVdLX0pTX09CSkVDVF9JTlZB
TElEOwotI2VuZGlmCi19Ci0KLXZvaWQgZXdrX2pzX29iamVjdF90eXBlX3NldChFd2tfSlNfT2Jq
ZWN0KiBqc09iamVjdCwgRXdrX0pTX09iamVjdF9UeXBlIHR5cGUpCi17Ci0jaWYgRU5BQkxFKE5F
VFNDQVBFX1BMVUdJTl9BUEkpCi0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oanNPYmpl
Y3QpOwotICAgIEVJTkFfTUFHSUNfQ0hFQ0tfT1JfUkVUVVJOKGpzT2JqZWN0KTsKLQotICAgIGpz
T2JqZWN0LT50eXBlID0gdHlwZTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGpzT2JqZWN0KTsK
LSAgICBVTlVTRURfUEFSQU0odHlwZSk7Ci0jZW5kaWYKLX0KLQotdm9pZCBld2tfanNfdmFyaWFu
dF9mcmVlKEV3a19KU19WYXJpYW50KiBqc1ZhcmlhbnQpCi17Ci0jaWYgRU5BQkxFKE5FVFNDQVBF
X1BMVUdJTl9BUEkpCi0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oanNWYXJpYW50KTsK
LSAgICBpZiAoanNWYXJpYW50LT50eXBlID09IEVXS19KU19WQVJJQU5UX1NUUklORykKLSAgICAg
ICAgZWluYV9zdHJpbmdzaGFyZV9kZWwoanNWYXJpYW50LT52YWx1ZS5zKTsKLSAgICBlbHNlIGlm
IChqc1ZhcmlhbnQtPnR5cGUgPT0gRVdLX0pTX1ZBUklBTlRfT0JKRUNUKQotICAgICAgICBld2tf
anNfb2JqZWN0X2ZyZWUoanNWYXJpYW50LT52YWx1ZS5vKTsKLSAgICBmcmVlKGpzVmFyaWFudCk7
Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShqc1ZhcmlhbnQpOwotI2VuZGlmCi19Ci0KLXZvaWQg
ZXdrX2pzX3ZhcmlhbnRfYXJyYXlfZnJlZShFd2tfSlNfVmFyaWFudCoganNWYXJpYW50LCBpbnQg
Y291bnQpCi17Ci0jaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCi0gICAgRUlOQV9TQUZF
VFlfT05fTlVMTF9SRVRVUk4oanNWYXJpYW50KTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IGNv
dW50OyBpKyspIHsKLSAgICAgICAgaWYgKGpzVmFyaWFudFtpXS50eXBlID09IEVXS19KU19WQVJJ
QU5UX1NUUklORykKLSAgICAgICAgICAgIGVpbmFfc3RyaW5nc2hhcmVfZGVsKGpzVmFyaWFudFtp
XS52YWx1ZS5zKTsKLSAgICAgICAgZWxzZSBpZiAoanNWYXJpYW50W2ldLnR5cGUgPT0gRVdLX0pT
X1ZBUklBTlRfT0JKRUNUKQotICAgICAgICAgICAgZXdrX2pzX29iamVjdF9mcmVlKGpzVmFyaWFu
dFtpXS52YWx1ZS5vKTsKLSAgICB9Ci0gICAgZnJlZShqc1ZhcmlhbnQpOwotI2Vsc2UKLSAgICBV
TlVTRURfUEFSQU0oanNWYXJpYW50KTsKLSAgICBVTlVTRURfUEFSQU0oY291bnQpOwotI2VuZGlm
Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2pzLmggYi9Tb3VyY2Uv
V2ViS2l0L2VmbC9ld2svZXdrX2pzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE3
NDM2MjAuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19qcy5oCisrKyAv
ZGV2L251bGwKQEAgLTEsMjA5ICswLDAgQEAKLS8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDExIFBy
b0ZVU0lPTiBlbWJlZGRlZCBzeXN0ZW1zCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAg
ICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gICAgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAgICBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCi0gICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBD
T1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICAgIEJvc3Rv
biwgTUEgMDIxMTAtMTMwMSwgVVNBLgotKi8KLQotLyoqCi0gKiBAZmlsZSAgICBld2tfanMuaAot
ICogQGJyaWVmICAgQWxsb3dzIHRvIGV4cG9ydCBvYmplY3RzIHRvIEphdmFTY3JpcHQgQVBJLgot
ICovCi0KLSNpZm5kZWYgZXdrX2pzX2gKLSNkZWZpbmUgZXdrX2pzX2gKLQotI2luY2x1ZGUgPEVp
bmEuaD4KLSNpbmNsdWRlIDxFdmFzLmg+Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJD
IiB7Ci0jZW5kaWYKLQotI2RlZmluZSBFV0tfSlNfQ0xBU1NfTUVUQV9WRVJTSU9OIDAKLQotdHlw
ZWRlZiBzdHJ1Y3QgX0V3a19KU19PYmplY3QgRXdrX0pTX09iamVjdDsKLXR5cGVkZWYgc3RydWN0
IF9Fd2tfSlNfQ2xhc3NfTWV0YSBFd2tfSlNfQ2xhc3NfTWV0YTsKLXR5cGVkZWYgc3RydWN0IF9F
d2tfSlNfVmFyaWFudCBFd2tfSlNfVmFyaWFudDsKLXR5cGVkZWYgc3RydWN0IF9Fd2tfSlNfTWV0
aG9kIEV3a19KU19NZXRob2Q7Ci10eXBlZGVmIHN0cnVjdCBfRXdrX0pTX1Byb3BlcnR5IEV3a19K
U19Qcm9wZXJ0eTsKLXR5cGVkZWYgc3RydWN0IF9Fd2tfSlNfRGVmYXVsdCBFd2tfSlNfRGVmYXVs
dDsKLXR5cGVkZWYgRWluYV9Cb29sICgqRXdrX0pTX1NldF9DYikoRXdrX0pTX09iamVjdCAqb2Jq
LCBjb25zdCBjaGFyICpuYW1lLCBjb25zdCBFd2tfSlNfVmFyaWFudCAqdmFsdWUpOwotdHlwZWRl
ZiBFaW5hX0Jvb2wgKCpFd2tfSlNfR2V0X0NiKShFd2tfSlNfT2JqZWN0ICpvYmosIGNvbnN0IGNo
YXIgKm5hbWUsIEV3a19KU19WYXJpYW50ICp2YWx1ZSk7Ci10eXBlZGVmIEVpbmFfQm9vbCAoKkV3
a19KU19EZWxfQ2IpKEV3a19KU19PYmplY3QgKm9iaiwgY29uc3QgY2hhciAqbmFtZSk7Ci10eXBl
ZGVmIEV3a19KU19WYXJpYW50KiAoKkV3a19KU19JbnZva2VfQ2IpKEV3a19KU19PYmplY3QgKm9i
aiwgRXdrX0pTX1ZhcmlhbnQgKmFyZ3MsIGludCBhcmdDb3VudCk7Ci0KLXR5cGVkZWYgZW51bSB7
Ci0gICAgRVdLX0pTX1ZBUklBTlRfVk9JRCwKLSAgICBFV0tfSlNfVkFSSUFOVF9OVUxMLAotICAg
IEVXS19KU19WQVJJQU5UX0JPT0wsCi0gICAgRVdLX0pTX1ZBUklBTlRfSU5UMzIsCi0gICAgRVdL
X0pTX1ZBUklBTlRfRE9VQkxFLAotICAgIEVXS19KU19WQVJJQU5UX1NUUklORywKLSAgICBFV0tf
SlNfVkFSSUFOVF9PQkpFQ1QKLX0gRXdrX0pTX1ZhcmlhbnRfVHlwZTsKLQotdHlwZWRlZiBlbnVt
IHsKLSAgICBFV0tfSlNfT0JKRUNUX09CSkVDVCwKLSAgICBFV0tfSlNfT0JKRUNUX0FSUkFZLAot
ICAgIEVXS19KU19PQkpFQ1RfRlVOQ1RJT04sCi0gICAgRVdLX0pTX09CSkVDVF9JTlZBTElECi19
IEV3a19KU19PYmplY3RfVHlwZTsKLQotc3RydWN0IF9Fd2tfSlNfVmFyaWFudCB7Ci0gICAgRXdr
X0pTX1ZhcmlhbnRfVHlwZSB0eXBlOwotICAgIHVuaW9uIHsKLSAgICAgICAgRWluYV9Cb29sIGI7
Ci0gICAgICAgIGludCBpOwotICAgICAgICBkb3VibGUgZDsKLSAgICAgICAgY29uc3QgY2hhciAq
czsKLSAgICAgICAgRXdrX0pTX09iamVjdCAqbzsKLSAgICB9IHZhbHVlOwotfTsKLQotc3RydWN0
IF9Fd2tfSlNfTWV0aG9kIHsKLSAgICBjb25zdCBjaGFyICpuYW1lOwotICAgIEV3a19KU19JbnZv
a2VfQ2IgaW52b2tlOwotfTsKLQotc3RydWN0IF9Fd2tfSlNfUHJvcGVydHkgewotICAgIGNvbnN0
IGNoYXIgKm5hbWU7Ci0gICAgRXdrX0pTX1NldF9DYiBzZXQ7Ci0gICAgRXdrX0pTX0dldF9DYiBn
ZXQ7Ci0gICAgRXdrX0pTX0RlbF9DYiBkZWw7Ci0gICAgRXdrX0pTX1ZhcmlhbnQgdmFsdWU7Ci19
OwotCi1zdHJ1Y3QgX0V3a19KU19EZWZhdWx0IHsKLSAgICBFd2tfSlNfU2V0X0NiIHNldDsKLSAg
ICBFd2tfSlNfR2V0X0NiIGdldDsKLSAgICBFd2tfSlNfRGVsX0NiIGRlbDsKLX07Ci0KLXN0cnVj
dCBfRXdrX0pTX0NsYXNzX01ldGEgewotICAgIHVuc2lnbmVkIGludCB2ZXJzaW9uOyAvLyBkZWZp
bmUKLSAgICBjb25zdCBFd2tfSlNfTWV0aG9kICptZXRob2RzOyAvLyBudWxsIHRlcm1pbmF0ZWQg
YXJyYXkKLSAgICBjb25zdCBFd2tfSlNfUHJvcGVydHkgKnByb3BlcnRpZXM7IC8vIG51bGwgdGVy
bWluYXRlZCBhcnJheQotICAgIEV3a19KU19EZWZhdWx0IGRlZmF1bHRfcHJvcDsKLX07Ci0KLS8q
KgotICogR2V0cyBFaW5hX0hhc2ggd2l0aCBvYmplY3QncyBwcm9wZXJ0aWVzLgotICoKLSAqIEBw
YXJhbSBvYmogT2JqZWN0IHdob3NlIHByb3BlcnRpZXMgYXJlIHdhbnRlZC4KLSAqCi0gKiBAcmV0
dXJuIG9iamVjdCdzIHByb3BlcnRpZXMuCi0gKi8KLUVBUEkgRWluYV9IYXNoICpld2tfanNfb2Jq
ZWN0X3Byb3BlcnRpZXNfZ2V0KGNvbnN0IEV3a19KU19PYmplY3QgKm9iaik7Ci0KLS8qKgotICog
R2V0cyBuYW1lIG9mIHRoZSBvYmplY3QuCi0gKgotICogQHBhcmFtIG9iaiBPYmplY3Qgd2hvc2Ug
bmFtZSBpcyB3YW50ZWQuCi0gKgotICogQHJldHVybiBuYW1lIG9mIG9iamVjdC4KLSAqLwotCi1F
QVBJIGNvbnN0IGNoYXIgKmV3a19qc19vYmplY3RfbmFtZV9nZXQoY29uc3QgRXdrX0pTX09iamVj
dCAqb2JqKTsKLQotLyoqCi0gKiBSZXR1cm5zIHRoZSB2aWV3IGFzc29jaWF0ZWQgd2l0aCBhbiBF
d2tfSlNfT2JqZWN0LgotICoKLSAqIFRoZSByZXR1cm5lZCB2aWV3IGlzIHRoZSBvbmUgcGFzc2Vk
IHRvIGV3a192aWV3X2pzX29iamVjdF9hZGQuIFJpZ2h0IG5vdywKLSAqIHRoZSBvYmplY3QgaXMg
YWx3YXlzIGFkZGVkIHRvIHRoZSB2aWV3J3MgbWFpbiBmcmFtZS4KLSAqCi0gKiBAcGFyYW0gb2Jq
IFRoZSBvYmplY3QgdG8gYmUgcXVlcmllZC4KLSAqCi0gKiBAcmV0dXJuIFRoZSB2aWV3IHdob3Nl
IG1haW4gZnJhbWUgdGhlIG9iamVjdCBoYXMgYmVlbiBpbnNlcnRlZCBpbnRvLCBvcgotICogICAg
ICAgICBAYyBOVUxMIGlmIHRoZSBvYmplY3QgaGFzIG5vdCBiZWVuIGFkZGVkIHRvIGEgdmlldyB5
ZXQuCi0gKgotICogQHNhIGV3a192aWV3X2pzX29iamVjdF9hZGQsIGV3a192aWV3X2ZyYW1lX21h
aW5fZ2V0Ci0gKi8KLUVBUEkgRXZhc19PYmplY3QgKmV3a19qc19vYmplY3Rfdmlld19nZXQoY29u
c3QgRXdrX0pTX09iamVjdCAqb2JqKTsKLQotLyoqCi0gKiBSZWxlYXNlIHJlc291cmNlcyBhbGxv
Y2F0ZWQgYnkgQGEgdmFyLgotICoKLSAqIEBwYXJhbSB2YXIgQGEgRXdrX0pTX1ZhcmlhbnQgdG8g
YmUgcmVsZWFzZQotICovCi1FQVBJIHZvaWQgZXdrX2pzX3ZhcmlhbnRfZnJlZShFd2tfSlNfVmFy
aWFudCAqdmFyKTsKLQotLyoqCi0gKiBSZWxlYXNlIHJlc291cmNlcyBhbGxvY2F0ZWQgYnkgQGEg
dmFyLgotICoKLSAqIEBwYXJhbSB2YXIgQGEgRXdrX0pTX1ZhcmlhbnQgdG8gYmUgcmVsZWFzZQot
ICogQHBhcmFtIGNvdW50IEBhIHNpemUgb2YgYXJyYXkKLSAqLwotRUFQSSB2b2lkIGV3a19qc192
YXJpYW50X2FycmF5X2ZyZWUoRXdrX0pTX1ZhcmlhbnQgKnZhciwgaW50IGNvdW50KTsKLQotLyoq
Ci0gKiBDcmVhdGUgYSBFd2tfSlNfT2JqZWN0IHRvIGJlIHVzZWQgaW4gQGEgZXdrX3ZpZXdfanNf
b2JqZWN0X2FkZC4gVGhlIE1ldGEgY2xhc3MncwotICogbWV0aG9kcyBhbmQgcHJvcGVydGllcyBh
cmUgbm90IG1vZGlmaWVkIGJ1dCByZWZlcmVuY2VzIHRvIGl0IGFyZSBrZXB0IGFzIGxvbmcKLSAq
IGFzIHRoZSBvYmplY3QgY3JlYXRlZCBmcm9tIGl0IGxpdmVzLiBBbGwgcHJvcGVydGllcyBjcmVh
dGVkIGhlcmUKLSAqIHdpbGwgYmUgYWRkZWQgdG8gdGhlIG9iamVjdCBoYXNoIG9mIHByb3BlcnRp
ZXMuIFByb3BlcnRpZXMgdXNpbmcgZGVmYXVsdF9wcm9wJ3MKLSAqIGdldC9zZXQvZGVsIG1ldGhv
ZHMgc2hvdWxkIGFsc28gYmUgYWRkZWQgdG8gdGhlIG9iamVjdHMgaGFzaChzZWU6Ci0gKiBAYSBl
d2tfanNfb2JqZWN0X3Byb3BlcnRpZXNfZ2V0KS4gTWV0aG9kcyBtdXN0IGZyZWUgdGhlIGFyZ3Vt
ZW50cyB0aGV5IHJlY2VpdmUoc2VlOgotICogQGEgZXdrX2pzX3ZhcmlhbmdfYXJyYXlfZnJlZSku
Ci0gKgotICoKLSAqIEBwYXJhbSBjbHMgQGEgRXdrX0pTX0NsYXNzIHRoYXQgZGVzY3JpYmVzIHRo
ZSBvYmplY3QgdG8gYmUgY3JlYXRlZC4KLSAqCi0gKiBAcmV0dXJuIFRoZSBFd2tfSlNfT2JqZWN0
IGNyZWF0ZWQuCi0gKi8KLUVBUEkgRXdrX0pTX09iamVjdCAqZXdrX2pzX29iamVjdF9uZXcoY29u
c3QgRXdrX0pTX0NsYXNzX01ldGEgKm1ldGFfY2xzKTsKLQotLyoqCi0gKiBSZWxlYXNlIHJlc291
cmNlcyBhbGxvY2F0ZWQgYnkgQGEgb2JqLgotICoKLSAqIEBwYXJhbSBvYmogQGEgRXdrX0pTX09i
amVjdCB0byBiZSByZWxlYXNlZC4KLSAqLwotRUFQSSB2b2lkIGV3a19qc19vYmplY3RfZnJlZShF
d2tfSlNfT2JqZWN0ICpvYmopOwotCi0vKioKLSAqIENhbGxzIHRoZSBmdW5jdGlvbiB0aGlzIG9i
amVjdCByZXByZXNlbnRzLgotICoKLSAqIEBwYXJhbSBvYmogT2JqZWN0IHRoYXQgcmVwcmVzZW50
cyBmdW5jdGlvbi4KLSAqIEBwYXJhbSBhcmdzIEFyZ3VtZW50cyB0byBiZSBwYXNzZWQgdG8gZnVu
Y3Rpb24uCi0gKiBAcGFyYW0gYXJnX2NvdW50IE51bWJlciBvZiBhcmd1bWVudHMuCi0gKiBAcGFy
YW0gcmVzdWx0IFJldHVybiB2YWx1ZSBvZiB0aGUgaW52b2tlZCBmdW5jdGlvbi4KLSAqCi0gKiBA
cmV0dXJuIEBjIEVJTkFfVFJVRSBpZiBmdW5jdGlvbiB3YXMgZXhlY3V0ZWQsIEBjIEVJTkFfRkFM
U0UgaWYgZnVuY3Rpb24gd2FzIG5vdCBleGVjdXRlZC4KLSAqLwotRUFQSSBFaW5hX0Jvb2wgZXdr
X2pzX29iamVjdF9pbnZva2UoRXdrX0pTX09iamVjdCAqb2JqLCBFd2tfSlNfVmFyaWFudCAqYXJn
cywgaW50IGFyZ19jb3VudCwgRXdrX0pTX1ZhcmlhbnQgKnJlc3VsdCk7Ci0KLS8qKgotICogUmV0
dXJucyB0aGUgdHlwZSB0aGlzIG9iamVjdCByZXByZXNlbnRzLgotICoKLSAqIEBwYXJhbSBvYmog
T2JqZWN0Ci0gKgotICogQHJldHVybiBAYyBFV0tfSlNfT0JKRUNUIGlmIGl0IGlzIGFuIG9iamVj
dCwgQGMgRVdLX0pTX0FSUkFZIGlmIGl0IGlzIGFuIGFycmF5IGFuZAotICogQGMgRVdLX0pTX0ZV
TkNUSU9OIGlmIGl0IGlzIGEgZnVuY3Rpb24uCi0gKi8KLUVBUEkgRXdrX0pTX09iamVjdF9UeXBl
IGV3a19qc19vYmplY3RfdHlwZV9nZXQoY29uc3QgRXdrX0pTX09iamVjdCAqb2JqKTsKLQotLyoq
Ci0gKiBTZXRzIHRoZSB0eXBlIHRoaXMgb2JqZWN0IHJlcHJlc2VudHMuCi0gKgotICogQHBhcmFt
IG9iaiBPYmplY3QKLSAqIEBwYXJhbSB0eXBlIFR5cGUKLSAqCi0gKi8KLUVBUEkgdm9pZCBld2tf
anNfb2JqZWN0X3R5cGVfc2V0KEV3a19KU19PYmplY3QgKm9iaiwgRXdrX0pTX09iamVjdF9UeXBl
IHR5cGUpOwotCi0jaWZkZWYgX19jcGx1c3BsdXMKLX0KLSNlbmRpZgotCi0jZW5kaWYgLy8gZXdr
X2pzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfanNfcHJpdmF0ZS5o
IGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19qc19wcml2YXRlLmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDE3ZmMzNjYuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9lZmwv
ZXdrL2V3a19qc19wcml2YXRlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi0vKgot
ICAgIENvcHlyaWdodCAoQykgMjAwOS0yMDEwIFByb0ZVU0lPTiBlbWJlZGRlZCBzeXN0ZW1zCi0K
LSAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAg
ICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgotICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUg
dG8KLSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLAotICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotKi8K
LQotI2lmbmRlZiBld2tfanNfcHJpdmF0ZV9oCi0jZGVmaW5lIGV3a19qc19wcml2YXRlX2gKLQot
I2luY2x1ZGUgIk5QX2pzb2JqZWN0LmgiCi0jaW5jbHVkZSAiZXdrX2pzLmgiCi0KLSNpZiBFTkFC
TEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKLSNkZWZpbmUgRVdLX0pTX09CSkVDVF9NQUdJQyAweDY5
Njk2OQotCi10eXBlZGVmIHN0cnVjdCBfRXdrX0pTX0NsYXNzIEV3a19KU19DbGFzczsKLXN0cnVj
dCBfRXdrX0pTX09iamVjdCB7Ci0gICAgSmF2YVNjcmlwdE9iamVjdCBiYXNlOwotICAgIGNvbnN0
IGNoYXIqIG5hbWU7Ci0gICAgY29uc3QgRXdrX0pTX0NsYXNzKiBjbHM7Ci0gICAgRWluYV9IYXNo
KiBwcm9wZXJ0aWVzOwotICAgIEV2YXNfT2JqZWN0KiB2aWV3OyAvLyBld2tfdmlldzogY2hlY2sg
aWYgdGhpcyBvYmplY3QgaGFzIGFscmVhZHkgYmVlbiBhZGRlZCB0byBhbm90aGVyIGV3a192aWV3
Ci0gICAgRXdrX0pTX09iamVjdF9UeXBlIHR5cGU7Ci0gICAgRUlOQV9NQUdJQzsKLX07Ci0jZW5k
aWYgLy8gRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCi0KLSNlbmRpZiAvLyBld2tfanNfcHJp
dmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX21haW4uY3BwIGIv
U291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19tYWluLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMjY5ODc2Mi4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdr
X21haW4uY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjE0ICswLDAgQEAKLS8qCi0gICAgQ29weXJp
Z2h0IChDKSAyMDA5LTIwMTAgUHJvRlVTSU9OIGVtYmVkZGVkIHN5c3RlbXMKLSAgICBDb3B5cmln
aHQgKEMpIDIwMDktMjAxMSBTYW1zdW5nIEVsZWN0cm9uaWNzCi0KLSAgICBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
LSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
Ci0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNl
ZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAgICB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAotICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotKi8KLQotI2luY2x1ZGUgImNvbmZp
Zy5oIgotI2luY2x1ZGUgImV3a19tYWluLmgiCi0KLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCi0j
aW5jbHVkZSAiTG9nZ2luZy5oIgotI2luY2x1ZGUgIlBhZ2VDYWNoZS5oIgotI2luY2x1ZGUgIlBh
Z2VHcm91cC5oIgotI2luY2x1ZGUgIlBsYXRmb3JtU3RyYXRlZ2llc0VmbC5oIgotI2luY2x1ZGUg
IlJlc291cmNlSGFuZGxlLmgiCi0jaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgotI2luY2x1
ZGUgIlNldHRpbmdzLmgiCi0jaW5jbHVkZSAiU291cE5ldHdvcmtTZXNzaW9uLmgiCi0jaW5jbHVk
ZSAiU3RvcmFnZVRyYWNrZXIuaCIKLSNpbmNsdWRlICJTdG9yYWdlVHJhY2tlckNsaWVudEVmbC5o
IgotI2luY2x1ZGUgImV3a19hdXRoX3NvdXBfcHJpdmF0ZS5oIgotI2luY2x1ZGUgImV3a19uZXR3
b3JrLmgiCi0jaW5jbHVkZSAiZXdrX3ByaXZhdGUuaCIKLSNpbmNsdWRlICJld2tfc2V0dGluZ3Mu
aCIKLSNpbmNsdWRlICJld2tfc2V0dGluZ3NfcHJpdmF0ZS5oIgotI2luY2x1ZGUgInJ1bnRpbWUv
SW5pdGlhbGl6ZVRocmVhZGluZy5oIgotI2luY2x1ZGUgInJ1bnRpbWUvT3BlcmF0aW9ucy5oIgot
I2luY2x1ZGUgPEVjb3JlLmg+Ci0jaW5jbHVkZSA8RWNvcmVfRXZhcy5oPgotI2luY2x1ZGUgPEVk
amUuaD4KLSNpbmNsdWRlIDxFZnJlZXQuaD4KLSNpbmNsdWRlIDxFaW5hLmg+Ci0jaW5jbHVkZSA8
RXZhcy5oPgotI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+Ci0jaW5jbHVkZSA8Z2xpYi5oPgotI2lu
Y2x1ZGUgPGxpYnNvdXAvc291cC5oPgotI2luY2x1ZGUgPHN0ZGxpYi5oPgotI2luY2x1ZGUgPHN5
cy9zdGF0Lmg+Ci0jaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgotCi0jaWZkZWYgSEFWRV9FQ09S
RV9YCi0jaW5jbHVkZSA8RWNvcmVfWC5oPgotI2VuZGlmCi0KLXN0YXRpYyBpbnQgX2V3a0luaXRD
b3VudCA9IDA7Ci0KLS8qKgotICogXHZhciAgICAgX2V3a19sb2dfZG9tCi0gKiBAYnJpZWYgICB0
aGUgbG9nIGRvbWFpbiBpZGVudGlmaWVyIHRoYXQgaXMgdXNlZCB3aXRoIEVJTkEncyBtYWNyb3MK
LSAqLwotaW50IF9ld2tfbG9nX2RvbSA9IC0xOwotCi1zdGF0aWMgRWluYV9Cb29sIF9ld2tfaW5p
dF9ib2R5KHZvaWQpOwotCi1pbnQgZXdrX2luaXQodm9pZCkKLXsKLSAgICBpZiAoX2V3a0luaXRD
b3VudCkKLSAgICAgICAgcmV0dXJuICsrX2V3a0luaXRDb3VudDsKLQotICAgIGlmICghZWluYV9p
bml0KCkpCi0gICAgICAgIGdvdG8gZXJyb3JfZWluYTsKLQotICAgIF9ld2tfbG9nX2RvbSA9IGVp
bmFfbG9nX2RvbWFpbl9yZWdpc3RlcigiZXdlYmtpdCIsIEVJTkFfQ09MT1JfT1JBTkdFKTsKLSAg
ICBpZiAoX2V3a19sb2dfZG9tIDwgMCkgewotICAgICAgICBFSU5BX0xPR19DUklUKCJjb3VsZCBu
b3QgcmVnaXN0ZXIgbG9nIGRvbWFpbiAnZXdlYmtpdCciKTsKLSAgICAgICAgZ290byBlcnJvcl9s
b2dfZG9tYWluOwotICAgIH0KLQotICAgIGlmICghZXZhc19pbml0KCkpIHsKLSAgICAgICAgQ1JJ
VElDQUwoImNvdWxkIG5vdCBpbml0IGV2YXMuIik7Ci0gICAgICAgIGdvdG8gZXJyb3JfZXZhczsK
LSAgICB9Ci0KLSAgICBpZiAoIWVjb3JlX2luaXQoKSkgewotICAgICAgICBDUklUSUNBTCgiY291
bGQgbm90IGluaXQgZWNvcmUuIik7Ci0gICAgICAgIGdvdG8gZXJyb3JfZWNvcmU7Ci0gICAgfQot
Ci0gICAgaWYgKCFlY29yZV9ldmFzX2luaXQoKSkgewotICAgICAgICBDUklUSUNBTCgiY291bGQg
bm90IGluaXQgZWNvcmVfZXZhcy4iKTsKLSAgICAgICAgZ290byBlcnJvcl9lY29yZV9ldmFzOwot
ICAgIH0KLQotICAgIGlmICghZWZyZWV0X2luaXQoKSkgewotICAgICAgICBDUklUSUNBTCgiY291
bGQgbm90IGluaXQgZWZyZWV0LiIpOwotICAgICAgICBnb3RvIGVycm9yX2VmcmVldDsKLSAgICB9
Ci0KLSAgICBpZiAoIWVkamVfaW5pdCgpKSB7Ci0gICAgICAgIENSSVRJQ0FMKCJjb3VsZCBub3Qg
aW5pdCBlZGplLiIpOwotICAgICAgICBnb3RvIGVycm9yX2VkamU7Ci0gICAgfQotCi0jaWZkZWYg
SEFWRV9FQ09SRV9YCi0gICAgaWYgKCFlY29yZV94X2luaXQoMCkpIHsKLSAgICAgICAgQ1JJVElD
QUwoImNvdWxkIG5vdCBpbml0IGVjb3JlX3guIik7Ci0gICAgICAgIGdvdG8gZXJyb3JfZWNvcmVf
eDsKLSAgICB9Ci0jZW5kaWYKLQotICAgIGlmICghX2V3a19pbml0X2JvZHkoKSkgewotICAgICAg
ICBDUklUSUNBTCgiY291bGQgbm90IGluaXQgYm9keSIpOwotICAgICAgICBnb3RvIGVycm9yX2Vk
amU7Ci0gICAgfQotCi0gICAgcmV0dXJuICsrX2V3a0luaXRDb3VudDsKLQotI2lmZGVmIEhBVkVf
RUNPUkVfWAotZXJyb3JfZWNvcmVfeDoKLSAgICBlZGplX3NodXRkb3duKCk7Ci0jZW5kaWYKLWVy
cm9yX2VkamU6Ci0gICAgZWZyZWV0X3NodXRkb3duKCk7Ci1lcnJvcl9lZnJlZXQ6Ci0gICAgZWNv
cmVfZXZhc19zaHV0ZG93bigpOwotZXJyb3JfZWNvcmVfZXZhczoKLSAgICBlY29yZV9zaHV0ZG93
bigpOwotZXJyb3JfZWNvcmU6Ci0gICAgZXZhc19zaHV0ZG93bigpOwotZXJyb3JfZXZhczoKLSAg
ICBlaW5hX2xvZ19kb21haW5fdW5yZWdpc3RlcihfZXdrX2xvZ19kb20pOwotICAgIF9ld2tfbG9n
X2RvbSA9IC0xOwotZXJyb3JfbG9nX2RvbWFpbjoKLSAgICBlaW5hX3NodXRkb3duKCk7Ci1lcnJv
cl9laW5hOgotICAgIHJldHVybiAwOwotfQotCi1pbnQgZXdrX3NodXRkb3duKHZvaWQpCi17Ci0g
ICAgX2V3a0luaXRDb3VudC0tOwotICAgIGlmIChfZXdrSW5pdENvdW50KQotICAgICAgICByZXR1
cm4gX2V3a0luaXRDb3VudDsKLQotI2lmZGVmIEhBVkVfRUNPUkVfWAotICAgIGVjb3JlX3hfc2h1
dGRvd24oKTsKLSNlbmRpZgotICAgIGVkamVfc2h1dGRvd24oKTsKLSAgICBlZnJlZXRfc2h1dGRv
d24oKTsKLSAgICBlY29yZV9ldmFzX3NodXRkb3duKCk7Ci0gICAgZWNvcmVfc2h1dGRvd24oKTsK
LSAgICBldmFzX3NodXRkb3duKCk7Ci0gICAgZWluYV9sb2dfZG9tYWluX3VucmVnaXN0ZXIoX2V3
a19sb2dfZG9tKTsKLSAgICBfZXdrX2xvZ19kb20gPSAtMTsKLSAgICBlaW5hX3NodXRkb3duKCk7
Ci0KLSAgICByZXR1cm4gMDsKLX0KLQotc3RhdGljIFdlYkNvcmU6OlN0b3JhZ2VUcmFja2VyQ2xp
ZW50RWZsKiB0cmFja2VyQ2xpZW50KCkKLXsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNf
TE9DQUwoV2ViQ29yZTo6U3RvcmFnZVRyYWNrZXJDbGllbnRFZmwsIHRyYWNrZXJDbGllbnQsICgp
KTsKLSAgICByZXR1cm4gJnRyYWNrZXJDbGllbnQ7Ci19Ci0KLUVpbmFfQm9vbCBfZXdrX2luaXRf
Ym9keSh2b2lkKQotewotI2lmICFHTElCX0NIRUNLX1ZFUlNJT04oMiwgMzUsIDApCi0gICAgZ190
eXBlX2luaXQoKTsKLSNlbmRpZgotCi0gICAgaWYgKCFlY29yZV9tYWluX2xvb3BfZ2xpYl9pbnRl
Z3JhdGUoKSkKLSAgICAgICAgV0FSTigiRWNvcmUgd2FzIG5vdCBjb21waWxlZCB3aXRoIEdMaWIg
c3VwcG9ydCwgc29tZSBwbHVnaW5zIHdpbGwgbm90ICIKLSAgICAgICAgICAgICJ3b3JrIChpZTog
QWRvYmUgRmxhc2gpIik7Ci0KLSAgICBXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjppbml0aWFs
aXplVGhyZWFkaW5nKCk7Ci0jaWYgIUxPR19ESVNBQkxFRAotICAgIFdlYkNvcmU6OmluaXRpYWxp
emVMb2dnaW5nQ2hhbm5lbHNJZk5lY2Vzc2FyeSgpOwotI2VuZGlmIC8vICFMT0dfRElTQUJMRUQK
LSAgICBXZWJDb3JlOjpTZXR0aW5nczo6c2V0RGVmYXVsdE1pbkRPTVRpbWVySW50ZXJ2YWwoMC4w
MDQpOwotCi0gICAgUGxhdGZvcm1TdHJhdGVnaWVzRWZsOjppbml0aWFsaXplKCk7Ci0KLSAgICAv
LyBQYWdlIGNhY2hlIGNhcGFjaXR5IChpbiBwYWdlcykuIENvbW1lbnQgZnJvbSBNYWMgcG9ydDoK
LSAgICAvLyAoUmVzZWFyY2ggaW5kaWNhdGVzIHRoYXQgdmFsdWUgLyBwYWdlIGRyb3BzIHN1YnN0
YW50aWFsbHkgYWZ0ZXIgMyBwYWdlcy4pCi0gICAgLy8gRklYTUU6IENhbGN1bGF0ZSBiYXNlZCBv
biBhdmFpbGFibGUgcmVzb3VyY2VzCi0gICAgZXdrX3NldHRpbmdzX3BhZ2VfY2FjaGVfY2FwYWNp
dHlfc2V0KDMpOwotICAgIFdlYkNvcmU6OlBhZ2VHcm91cDo6c2V0U2hvdWxkVHJhY2tWaXNpdGVk
TGlua3ModHJ1ZSk7Ci0KLSAgICBTdHJpbmcgbG9jYWxTdG9yYWdlRGlyZWN0b3J5ID0gU3RyaW5n
Ojpmcm9tVVRGOChlZnJlZXRfZGF0YV9ob21lX2dldCgpKSArICIvV2ViS2l0RWZsL0xvY2FsU3Rv
cmFnZSI7Ci0gICAgU3RyaW5nIHdlYkRhdGFiYXNlRGlyZWN0b3J5ID0gU3RyaW5nOjpmcm9tVVRG
OChlZnJlZXRfY2FjaGVfaG9tZV9nZXQoKSkgKyAiL1dlYktpdEVmbC9EYXRhYmFzZXMiOwotICAg
IFN0cmluZyBhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5ID0gU3RyaW5nOjpmcm9tVVRGOChlZnJl
ZXRfY2FjaGVfaG9tZV9nZXQoKSkgKyAiL1dlYktpdEVmbC9BcHBsaWNhdGlvbnMiOwotICAgIFN0
cmluZyBmaWxlU3lzdGVtRGlyZWN0b3J5ID0gU3RyaW5nOjpmcm9tVVRGOChlZnJlZXRfZGF0YV9o
b21lX2dldCgpKSArICIvV2ViS2l0RWZsL0ZpbGVTeXN0ZW0iOwotCi0gICAgZXdrX3NldHRpbmdz
X2xvY2FsX3N0b3JhZ2VfcGF0aF9zZXQobG9jYWxTdG9yYWdlRGlyZWN0b3J5LnV0ZjgoKS5kYXRh
KCkpOwotICAgIGV3a19zZXR0aW5nc193ZWJfZGF0YWJhc2VfcGF0aF9zZXQod2ViRGF0YWJhc2VE
aXJlY3RvcnkudXRmOCgpLmRhdGEoKSk7Ci0gICAgZXdrX3NldHRpbmdzX2FwcGxpY2F0aW9uX2Nh
Y2hlX3BhdGhfc2V0KGFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkudXRmOCgpLmRhdGEoKSk7Ci0g
ICAgZXdrX3NldHRpbmdzX2ZpbGVfc3lzdGVtX3BhdGhfc2V0KGZpbGVTeXN0ZW1EaXJlY3Rvcnku
dXRmOCgpLmRhdGEoKSk7Ci0KLSAgICBld2tfbmV0d29ya190bHNfY2VydGlmaWNhdGVfY2hlY2tf
c2V0KGZhbHNlKTsKLQotICAgIFdlYkNvcmU6OlN0b3JhZ2VUcmFja2VyOjppbml0aWFsaXplVHJh
Y2tlcihsb2NhbFN0b3JhZ2VEaXJlY3RvcnkudXRmOCgpLmRhdGEoKSwgdHJhY2tlckNsaWVudCgp
KTsKLQotICAgIFNvdXBTZXNzaW9uRmVhdHVyZSogYXV0aF9kaWFsb2cgPSBzdGF0aWNfY2FzdDxT
b3VwU2Vzc2lvbkZlYXR1cmUqPihnX29iamVjdF9uZXcoRVdLX1RZUEVfU09VUF9BVVRIX0RJQUxP
RywgMCkpOwotICAgIHNvdXBfc2Vzc2lvbl9hZGRfZmVhdHVyZShXZWJDb3JlOjpTb3VwTmV0d29y
a1Nlc3Npb246OmRlZmF1bHRTZXNzaW9uKCkuc291cFNlc3Npb24oKSwgYXV0aF9kaWFsb2cpOwot
Ci0gICAgV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnNldElnbm9yZVNTTEVycm9ycyh0cnVlKTsK
LQotICAgIHJldHVybiB0cnVlOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdr
L2V3a19tYWluLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX21haW4uaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDU4ZTI5Yy4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2VmbC9ld2svZXdrX21haW4uaAorKysgL2Rldi9udWxsCkBAIC0xLDU5ICswLDAgQEAKLS8qCi0g
ICAgQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgUHJvRlVTSU9OIGVtYmVkZGVkIHN5c3RlbXMKLSAg
ICBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBTYW1zdW5nIEVsZWN0cm9uaWNzCi0KLSAgICBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
Ci0gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgot
ICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAgICB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAotICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotKi8KLQotLyoqCi0g
KiBAZmlsZSAgICBld2tfbWFpbi5oCi0gKiBAYnJpZWYgICBUaGUgbWFpbiBmaWxlIG9mIFdlYktp
dC1FRkwsIG5vdCB0aWVkIHRvIGFueSB2aWV3IG9iamVjdC4KLSAqLwotCi0jaWZuZGVmIGV3a19t
YWluX2gKLSNkZWZpbmUgZXdrX21haW5faAotCi0jaW5jbHVkZSA8RWluYS5oPgotCi0jaWZkZWYg
X19jcGx1c3BsdXMKLWV4dGVybiAiQyIgewotI2VuZGlmCi0KLS8qKgotICogSW5pdGlhbGl6ZXMg
d2Via2l0J3MgaW5zdGFuY2UuCi0gKgotICogLSBpbml0aWFsaXplcyBjb21wb25lbnRzIG5lZWRl
ZCBieSBFZmwsCi0gKiAtIHNldHMgd2ViIGRhdGFiYXNlIGxvY2F0aW9uLAotICogLSBzZXRzIHBh
Z2UgY2FjaGUgY2FwYWNpdHksCi0gKiAtIGluY3JlYXNlcyBhIHJlZmVyZW5jZSBjb3VudCBvZiB3
ZWJraXQncyBpbnN0YW5jZS4KLSAqCi0gKiBAcmV0dXJuIGEgcmVmZXJlbmNlIGNvdW50IG9mIHdl
YmtpdCdzIGluc3RhbmNlIG9uIHN1Y2Nlc3Mgb3IgMCBvbiBmYWlsdXJlCi0gKi8KLUVBUEkgaW50
IGV3a19pbml0KHZvaWQpOwotCi0vKioKLSAqIERlY3JlYXNlcyBhIHJlZmVyZW5jZSBjb3VudCBv
ZiB3ZWJraXQncyBpbnN0YW5jZSwgcG9zc2libHkgZGVzdHJveWluZyBpdC4KLSAqCi0gKiBJZiB0
aGUgcmVmZXJlbmNlIGNvdW50IHJlYWNoZXMgMCB3ZWJraXQncyBpbnN0YW5jZSBpcyBkZXN0cm95
ZWQuCi0gKgotICogQHJldHVybiBhIHJlZmVyZW5jZSBjb3VudCBvZiB3ZWJraXQncyBpbnN0YW5j
ZQotICovCi1FQVBJIGludCBld2tfc2h1dGRvd24odm9pZCk7Ci0KLSNpZmRlZiBfX2NwbHVzcGx1
cwotfQotI2VuZGlmCi0jZW5kaWYgLy8gZXdrX21haW5faApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9lZmwvZXdrL2V3a19uZXR3b3JrLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tf
bmV0d29yay5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDllMWIxZWMuLjAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19uZXR3b3JrLmNwcAorKysgL2Rldi9u
dWxsCkBAIC0xLDgwICswLDAgQEAKLS8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDExIFNhbXN1bmcg
RWxlY3Ryb25pY3MKLQotICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICAgIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICAgIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLQot
ICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAgICBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLQotICAgIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
LSAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAg
SWYgbm90LCB3cml0ZSB0bwotICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gICAgQm9zdG9uLCBNQSAwMjExMC0x
MzAxLCBVU0EuCi0qLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiZXdrX25ldHdv
cmsuaCIKLQotI2luY2x1ZGUgIk5ldHdvcmtTdGF0ZU5vdGlmaWVyLmgiCi0jaW5jbHVkZSAiUHJv
eHlSZXNvbHZlclNvdXAuaCIKLSNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgotI2luY2x1ZGUg
IlNvdXBOZXR3b3JrU2Vzc2lvbi5oIgotI2luY2x1ZGUgImV3a19wcml2YXRlLmgiCi0jaW5jbHVk
ZSA8RWluYS5oPgotI2luY2x1ZGUgPGxpYnNvdXAvc291cC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0
L0NTdHJpbmcuaD4KLQotdm9pZCBld2tfbmV0d29ya19wcm94eV91cmlfc2V0KGNvbnN0IGNoYXIq
IHByb3h5KQotewotICAgIGlmICghcHJveHkpCi0gICAgICAgIEVSUigibm8gcHJveHkgdXJpLiBy
ZW1vdmUgcHJveHkgZmVhdHVyZSBpbiBzb3VwLiIpOwotICAgIFdlYkNvcmU6OlNvdXBOZXR3b3Jr
U2Vzc2lvbjo6ZGVmYXVsdFNlc3Npb24oKS5zZXRIVFRQUHJveHkocHJveHksIDApOwotfQotCi1j
b25zdCBjaGFyKiBld2tfbmV0d29ya19wcm94eV91cmlfZ2V0KHZvaWQpCi17Ci0gICAgY2hhciog
dXJpID0gV2ViQ29yZTo6U291cE5ldHdvcmtTZXNzaW9uOjpkZWZhdWx0U2Vzc2lvbigpLmh0dHBQ
cm94eSgpOwotICAgIGlmICghdXJpKSB7Ci0gICAgICAgIEVSUigibm8gcHJveHkgdXJpIik7Ci0g
ICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIHJldHVybiBlaW5hX3N0cmluZ3NoYXJlX2Fk
ZCh1cmkpOwotfQotCi1FaW5hX0Jvb2wgZXdrX25ldHdvcmtfdGxzX2NlcnRpZmljYXRlX2NoZWNr
X2dldCgpCi17Ci0gICAgdW5zaWduZWQgcG9saWN5ID0gV2ViQ29yZTo6U291cE5ldHdvcmtTZXNz
aW9uOjpkZWZhdWx0U2Vzc2lvbigpLnNzbFBvbGljeSgpOwotICAgIHJldHVybiBwb2xpY3kgJiBX
ZWJDb3JlOjpTb3VwTmV0d29ya1Nlc3Npb246OlNTTFN0cmljdDsKLX0KLQotdm9pZCBld2tfbmV0
d29ya190bHNfY2VydGlmaWNhdGVfY2hlY2tfc2V0KEVpbmFfQm9vbCBlbmFibGUpCi17Ci0gICAg
dW5zaWduZWQgcG9saWN5ID0gV2ViQ29yZTo6U291cE5ldHdvcmtTZXNzaW9uOjpkZWZhdWx0U2Vz
c2lvbigpLnNzbFBvbGljeSgpOwotICAgIGlmIChlbmFibGUgJiYgIShwb2xpY3kgfCBXZWJDb3Jl
OjpTb3VwTmV0d29ya1Nlc3Npb246OlNTTFN0cmljdCkpCi0gICAgICAgIHBvbGljeSB8PSBXZWJD
b3JlOjpTb3VwTmV0d29ya1Nlc3Npb246OlNTTFN0cmljdDsKLSAgICBlbHNlIGlmICghZW5hYmxl
ICYmIChwb2xpY3kgfCBXZWJDb3JlOjpTb3VwTmV0d29ya1Nlc3Npb246OlNTTFN0cmljdCkpCi0g
ICAgICAgIHBvbGljeSAmPSB+V2ViQ29yZTo6U291cE5ldHdvcmtTZXNzaW9uOjpTU0xTdHJpY3Q7
Ci0gICAgV2ViQ29yZTo6U291cE5ldHdvcmtTZXNzaW9uOjpkZWZhdWx0U2Vzc2lvbigpLnNldFNT
TFBvbGljeShwb2xpY3kpOwotfQotCi1jb25zdCBjaGFyKiBld2tfbmV0d29ya190bHNfY2FfY2Vy
dGlmaWNhdGVzX3BhdGhfZ2V0KCkKLXsKLSAgICBjb25zdCBjaGFyKiBidW5kbGVQYXRoID0gMDsK
LQotICAgIFNvdXBTZXNzaW9uKiBkZWZhdWx0U2Vzc2lvbiA9IFdlYkNvcmU6OlNvdXBOZXR3b3Jr
U2Vzc2lvbjo6ZGVmYXVsdFNlc3Npb24oKS5zb3VwU2Vzc2lvbigpOwotICAgIGdfb2JqZWN0X2dl
dChkZWZhdWx0U2Vzc2lvbiwgInNzbC1jYS1maWxlIiwgJmJ1bmRsZVBhdGgsIE5VTEwpOwotCi0g
ICAgcmV0dXJuIGJ1bmRsZVBhdGg7Ci19Ci0KLXZvaWQgZXdrX25ldHdvcmtfdGxzX2NhX2NlcnRp
ZmljYXRlc19wYXRoX3NldChjb25zdCBjaGFyKiBidW5kbGVQYXRoKQotewotICAgIFNvdXBTZXNz
aW9uKiBkZWZhdWx0U2Vzc2lvbiA9IFdlYkNvcmU6OlNvdXBOZXR3b3JrU2Vzc2lvbjo6ZGVmYXVs
dFNlc3Npb24oKS5zb3VwU2Vzc2lvbigpOwotICAgIGdfb2JqZWN0X3NldChkZWZhdWx0U2Vzc2lv
biwgInNzbC1jYS1maWxlIiwgYnVuZGxlUGF0aCwgTlVMTCk7Ci19CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2VmbC9ld2svZXdrX25ldHdvcmsuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9l
d2tfbmV0d29yay5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMGFkZDBlLi4wMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfbmV0d29yay5oCisrKyAvZGV2L251
bGwKQEAgLTEsMTA3ICswLDAgQEAKLS8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDExIFNhbXN1bmcg
RWxlY3Ryb25pY3MKLQotICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICAgIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICAgIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLQot
ICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAgICBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLQotICAgIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
LSAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAg
SWYgbm90LCB3cml0ZSB0bwotICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gICAgQm9zdG9uLCBNQSAwMjExMC0x
MzAxLCBVU0EuCi0qLwotCi0vKioKLSAqIEBmaWxlICAgIGV3a19uZXR3b3JrLmgKLSAqIEBicmll
ZiAgIERlc2NyaWJlcyB0aGUgbmV0d29yayBBUEkuCi0gKi8KLQotI2lmbmRlZiBld2tfbmV0d29y
a19oCi0jZGVmaW5lIGV3a19uZXR3b3JrX2gKLQotI2luY2x1ZGUgPEVpbmEuaD4KLQotI2lmZGVm
IF9fY3BsdXNwbHVzCi1leHRlcm4gIkMiIHsKLSNlbmRpZgotCi0vKioKLSAqIFNldHMgdGhlIGdp
dmVuIHByb3h5IFVSSSB0byBuZXR3b3JrIGJhY2tlbmQuCi0gKgotICogQHBhcmFtIHByb3h5IFVS
SSB0byBzZXQKLSAqLwotRUFQSSB2b2lkICAgICAgICAgICAgIGV3a19uZXR3b3JrX3Byb3h5X3Vy
aV9zZXQoY29uc3QgY2hhciAqcHJveHkpOwotCi0vKioKLSAqIEdldHMgdGhlIHByb3h5IFVSSSBm
cm9tIHRoZSBuZXR3b3JrIGJhY2tlbmQuCi0gKgotICogVGhlIHJldHVybmVkIHN0cmluZyBzaG91
bGQgYmUgZnJlZWQgYnkgZWluYV9zdHJpbmdzaGFyZV9kZWwoKSBhZnRlciB1c2UuCi0gKgotICog
QHJldHVybiBjdXJyZW50IHByb3h5IFVSSSBvciBAYyBOVUxMIGlmIGl0J3Mgbm90IHNldAotICov
Ci1FQVBJIGNvbnN0IGNoYXIgICAgICAqZXdrX25ldHdvcmtfcHJveHlfdXJpX2dldCh2b2lkKTsK
LQotLyoqCi0gKiBSZXR1cm5zIHdoZXRoZXIgSFRUUFMgY29ubmVjdGlvbnMgc2hvdWxkIGNoZWNr
IHRoZSByZWNlaXZlZCBjZXJ0aWZpY2F0ZSBhbmQgZXJyb3Igb3V0IGlmIGl0IGlzIGludmFsaWQu
Ci0gKgotICogQnkgZGVmYXVsdCwgSFRUUFMgY29ubmVjdGlvbnMgYXJlIHBlcmZvcm1lZCByZWdh
cmRsZXNzIG9mIHRoZSB2YWxpZGl0eSBvZiB0aGUgY2VydGlmaWNhdGUgcHJvdmlkZWQuCi0gKgot
ICogQHNhIGV3a19uZXR3b3JrX3Rsc19jYV9jZXJ0aWZpY2F0ZXNfcGF0aF9zZXQKLSAqLwotRUFQ
SSBFaW5hX0Jvb2wgICAgICAgIGV3a19uZXR3b3JrX3Rsc19jZXJ0aWZpY2F0ZV9jaGVja19nZXQo
dm9pZCk7Ci0KLS8qKgotICogU2V0cyB3aGV0aGVyIEhUVFBTIGNvbm5lY3Rpb25zIHNob3VsZCBj
aGVjayB0aGUgcmVjZWl2ZWQgY2VydGlmaWNhdGUgYW5kIGVycm9yIG91dCBpZiBpdCBpcyBpbnZh
bGlkLgotICoKLSAqIEJ5IGRlZmF1bHQsIEhUVFBTIGNvbm5lY3Rpb25zIGFyZSBwZXJmb3JtZWQg
cmVnYXJkbGVzcyBvZiB0aGUgdmFsaWRpdHkgb2YgdGhlIGNlcnRpZmljYXRlIHByb3ZpZGVkLgot
ICoKLSAqIEBwYXJhbSBlbmFibGUgV2hldGhlciB0byBjaGVjayB0aGUgcHJvdmlkZWQgY2VydGlm
aWNhdGVzIG9yIG5vdC4KLSAqCi0gKiBAc2EgZXdrX25ldHdvcmtfdGxzX2NhX2NlcnRpZmljYXRl
c19wYXRoX3NldAotICovCi1FQVBJIHZvaWQgICAgICAgICAgICAgZXdrX25ldHdvcmtfdGxzX2Nl
cnRpZmljYXRlX2NoZWNrX3NldChFaW5hX0Jvb2wgZW5hYmxlKTsKLQotLyoqCi0gKiBSZXR1cm5z
IHRoZSBwYXRoIHRvIGEgZmlsZSBjb250YWluaW5nIHRoZSBwbGF0Zm9ybSdzIHJvb3QgWC41MDkg
Q0EgY2VydGlmaWNhdGVzLgotICoKLSAqIFRoZSBmaWxlIGlzIGEgbGlzdCBvZiBjb25jYXRlbmF0
ZWQgUEVNLWZvcm1hdCBYLjUwOSBjZXJ0aWZpY2F0ZXMgdXNlZCBhcyByb290IENBIGNlcnRpZmlj
YXRlcy4KLSAqIFRoZXkgYXJlIHVzZWQgdG8gdmFsaWRhdGUgYWxsIHRoZSBjZXJ0aWZpY2F0ZXMg
cmVjZWl2ZWQgd2hlbiBhIFRMUyBjb25uZWN0aW9uIChzdWNoIGFzIGFuIEhUVFBTIG9uZSkgaXMg
bWFkZS4KLSAqCi0gKiBJZiBAYyBld2tfbmV0d29ya190bHNfY2VydGlmaWNhdGVfY2hlY2tfZ2V0
KCkgcmV0dXJucyBAYyBFSU5BX1RSVUUsIHRoZSBjZXJ0aWZpY2F0ZXMgc2V0IGJ5IHRoaXMgZnVu
Y3Rpb24KLSAqIHdpbGwgYmUgdXNlZCB0byBkZWNpZGUgd2hldGhlciBhIGNlcnRpZmljYXRlIHBy
b3ZpZGVkIGJ5IGEgd2ViIHNpdGUgaXMgaW52YWxpZCBhbmQgdGhlIHJlcXVlc3Qgc2hvdWxkIHRo
ZW4KLSAqIGJlIGNhbmNlbGxlZC4KLSAqCi0gKiBCeSBkZWZhdWx0LCB0aGUgcGF0aCBpcyBub3Qg
c2V0LCBzbyBhbGwgY2VydGlmaWNhdGVzIGFyZSBjb25zaWRlcmVkIGFzIG5vdCBzaWduZWQgYnkg
YSB0cnVzdGVkIHJvb3QgQ0EuCi0gKgotICogQHNhIGV3a19uZXR3b3JrX3Rsc19jZXJ0aWZpY2F0
ZV9jaGVja19zZXQKLSAqLwotRUFQSSBjb25zdCBjaGFyICAgICAgKmV3a19uZXR3b3JrX3Rsc19j
YV9jZXJ0aWZpY2F0ZXNfcGF0aF9nZXQodm9pZCk7Ci0KLS8qKgotICogU2V0cyB0aGUgcGF0aCB0
byBhIGZpbGUgY29udGFpbmluZyB0aGUgcGxhdGZvcm0ncyByb290IFguNTA5IENBIGNlcnRpZmlj
YXRlcy4KLSAqCi0gKiBUaGUgZmlsZSBpcyBhIGxpc3Qgb2YgY29uY2F0ZW5hdGVkIFBFTS1mb3Jt
YXQgWC41MDkgY2VydGlmaWNhdGVzIHVzZWQgYXMgcm9vdCBDQSBjZXJ0aWZpY2F0ZXMuCi0gKiBU
aGV5IGFyZSB1c2VkIHRvIHZhbGlkYXRlIGFsbCB0aGUgY2VydGlmaWNhdGVzIHJlY2VpdmVkIHdo
ZW4gYSBUTFMgY29ubmVjdGlvbiAoc3VjaCBhcyBhbiBIVFRQUyBvbmUpIGlzIG1hZGUuCi0gKgot
ICogSWYgQGMgZXdrX25ldHdvcmtfdGxzX2NlcnRpZmljYXRlX2NoZWNrX2dldCgpIHJldHVybnMg
QGMgRUlOQV9UUlVFLCB0aGUgY2VydGlmaWNhdGVzIHNldCBieSB0aGlzIGZ1bmN0aW9uCi0gKiB3
aWxsIGJlIHVzZWQgdG8gZGVjaWRlIHdoZXRoZXIgYSBjZXJ0aWZpY2F0ZSBwcm92aWRlZCBieSBh
IHdlYiBzaXRlIGlzIGludmFsaWQgYW5kIHRoZSByZXF1ZXN0IHNob3VsZCB0aGVuCi0gKiBiZSBj
YW5jZWxsZWQuCi0gKgotICogQnkgZGVmYXVsdCwgdGhlIHBhdGggaXMgbm90IHNldCwgc28gYWxs
IGNlcnRpZmljYXRlcyBhcmUgY29uc2lkZXJlZCBhcyBub3Qgc2lnbmVkIGJ5IGEgdHJ1c3RlZCBy
b290IENBLgotICoKLSAqIEBwYXJhbSBwYXRoIFRoZSBwYXRoIHRvIHRoZSBjZXJ0aWZpY2F0ZSBi
dW5kbGUuCi0gKgotICogQHNhIGV3a19uZXR3b3JrX3Rsc19jZXJ0aWZpY2F0ZV9jaGVja19zZXQK
LSAqLwotRUFQSSB2b2lkICAgICAgICAgICAgIGV3a19uZXR3b3JrX3Rsc19jYV9jZXJ0aWZpY2F0
ZXNfcGF0aF9zZXQoY29uc3QgY2hhciAqcGF0aCk7Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotfQot
I2VuZGlmCi0jZW5kaWYgLy8gZXdrX25ldHdvcmtfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9lZmwvZXdrL2V3a19wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ByaXZh
dGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2M5MTQ5NC4uMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ByaXZhdGUuaAorKysgL2Rldi9udWxsCkBAIC0x
LDUxICswLDAgQEAKLS8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgUHJvRlVTSU9OIGVt
YmVkZGVkIHN5c3RlbXMKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMiBTYW1zdW5nIEVsZWN0
cm9uaWNzCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAg
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KLSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgotKi8KLQotI2lmbmRlZiBld2tfcHJpdmF0ZV9oCi0jZGVmaW5lIGV3a19wcml2YXRlX2gK
LQotI2luY2x1ZGUgIkFQSUNhc3QuaCIKLSNpbmNsdWRlIDxFdmFzLmg+Ci0KLS8vIElmIGRlZmlu
ZWQsIGV3ayB3aWxsIGRvIHR5cGUgY2hlY2tpbmcgdG8gZW5zdXJlIG9iamVjdHMgYXJlIG9mIGNv
cnJlY3QgdHlwZQotI2RlZmluZSBFV0tfVFlQRV9DSEVDSyAxCi0jZGVmaW5lIEVXS19BUkdCX0JZ
VEVTX1NJWkUgNAotCi0vLyBmb3J3YXJkIGRlY2xhcmF0aW9ucwotbmFtZXNwYWNlIFdlYkNvcmUg
ewotY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7Ci1jbGFzcyBHcmFwaGljc0xheWVyOwotfQotCi1z
dHJ1Y3QgRXdrX1dpbmRvd19PYmplY3RfQ2xlYXJlZF9FdmVudCB7Ci0gICAgSlNDb250ZXh0UmVm
IGNvbnRleHQ7Ci0gICAgSlNPYmplY3RSZWYgd2luZG93T2JqZWN0OwotICAgIEV2YXNfT2JqZWN0
KiBmcmFtZTsKLX07Ci0KLWV4dGVybiBpbnQgX2V3a19sb2dfZG9tOwotCi0jZGVmaW5lIENSSVRJ
Q0FMKC4uLikgRUlOQV9MT0dfRE9NX0NSSVQoX2V3a19sb2dfZG9tLCBfX1ZBX0FSR1NfXykKLSNk
ZWZpbmUgRVJSKC4uLikgRUlOQV9MT0dfRE9NX0VSUihfZXdrX2xvZ19kb20sIF9fVkFfQVJHU19f
KQotI2RlZmluZSBXQVJOKC4uLikgRUlOQV9MT0dfRE9NX1dBUk4oX2V3a19sb2dfZG9tLCBfX1ZB
X0FSR1NfXykKLSNkZWZpbmUgSU5GTyguLi4pIEVJTkFfTE9HX0RPTV9JTkZPKF9ld2tfbG9nX2Rv
bSwgX19WQV9BUkdTX18pCi0jZGVmaW5lIERCRyguLi4pIEVJTkFfTE9HX0RPTV9EQkcoX2V3a19s
b2dfZG9tLCBfX1ZBX0FSR1NfXykKLQotI2VuZGlmIC8vIGV3a19wcml2YXRlX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfc2VjdXJpdHlfb3JpZ2luLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvZWZsL2V3ay9ld2tfc2VjdXJpdHlfb3JpZ2luLmNwcApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggZWFhZDA3MS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9l
d2svZXdrX3NlY3VyaXR5X29yaWdpbi5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNjYgKzAsMCBA
QAotLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24KLQotICAgIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKLSAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYwotICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgotICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLQotICAgIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
Ci0gICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKLSAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KLQotICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAgICBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICAg
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsCi0gICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0qLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiZXdrX3NlY3VyaXR5X29yaWdpbi5oIgotCi0jaW5j
bHVkZSAiQXBwbGljYXRpb25DYWNoZS5oIgotI2luY2x1ZGUgIkFwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlLmgiCi0jaW5jbHVkZSAiRGF0YWJhc2VNYW5hZ2VyLmgiCi0jaW5jbHVkZSAiU2VjdXJpdHlP
cmlnaW4uaCIKLSNpbmNsdWRlICJld2tfc2VjdXJpdHlfb3JpZ2luX3ByaXZhdGUuaCIKLSNpbmNs
dWRlICJld2tfd2ViX2RhdGFiYXNlLmgiCi0jaW5jbHVkZSAiZXdrX3dlYl9kYXRhYmFzZV9wcml2
YXRlLmgiCi0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KLQotc3RydWN0IF9Fd2tfU2VjdXJpdHlfT3JpZ2luIHsKLSAgICBSZWZQdHI8V2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luOwotICAgIGNvbnN0IGNoYXIqIHByb3Rv
Y29sOwotICAgIGNvbnN0IGNoYXIqIGhvc3Q7Ci0gICAgY29uc3QgY2hhciogb3JpZ2luU3RyaW5n
OwotfTsKLQotY29uc3QgY2hhciogZXdrX3NlY3VyaXR5X29yaWdpbl9wcm90b2NvbF9nZXQoY29u
c3QgRXdrX1NlY3VyaXR5X09yaWdpbiogb3JpZ2luKQotewotICAgIEVJTkFfU0FGRVRZX09OX05V
TExfUkVUVVJOX1ZBTChvcmlnaW4sIDApOwotICAgIHJldHVybiBvcmlnaW4tPnByb3RvY29sOwot
fQotCi1jb25zdCBjaGFyKiBld2tfc2VjdXJpdHlfb3JpZ2luX2hvc3RfZ2V0KGNvbnN0IEV3a19T
ZWN1cml0eV9PcmlnaW4qIG9yaWdpbikKLXsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVS
Tl9WQUwob3JpZ2luLCAwKTsKLSAgICByZXR1cm4gb3JpZ2luLT5ob3N0OwotfQotCi1jb25zdCBj
aGFyKiBld2tfc2VjdXJpdHlfb3JpZ2luX3N0cmluZ19nZXQoY29uc3QgRXdrX1NlY3VyaXR5X09y
aWdpbiogb3JpZ2luKQotewotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChvcmln
aW4sIDApOwotICAgIHJldHVybiBvcmlnaW4tPm9yaWdpblN0cmluZzsKLX0KLQotdWludDMyX3Qg
ZXdrX3NlY3VyaXR5X29yaWdpbl9wb3J0X2dldChjb25zdCBFd2tfU2VjdXJpdHlfT3JpZ2luKiBv
cmlnaW4pCi17Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKG9yaWdpbiwgMCk7
Ci0gICAgcmV0dXJuIG9yaWdpbi0+c2VjdXJpdHlPcmlnaW4tPnBvcnQoKTsKLX0KLQotdWludDY0
X3QgZXdrX3NlY3VyaXR5X29yaWdpbl93ZWJfZGF0YWJhc2VfdXNhZ2VfZ2V0KGNvbnN0IEV3a19T
ZWN1cml0eV9PcmlnaW4qIG9yaWdpbikKLXsKLSNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAg
IEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChvcmlnaW4sIDApOwotCi0gICAgcmV0dXJu
IFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLnVzYWdlRm9yT3JpZ2luKG9yaWdp
bi0+c2VjdXJpdHlPcmlnaW4uZ2V0KCkpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0ob3JpZ2lu
KTsKLSAgICByZXR1cm4gMDsKLSNlbmRpZgotfQotCi11aW50NjRfdCBld2tfc2VjdXJpdHlfb3Jp
Z2luX3dlYl9kYXRhYmFzZV9xdW90YV9nZXQoY29uc3QgRXdrX1NlY3VyaXR5X09yaWdpbiogb3Jp
Z2luKQotewotI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0gICAgRUlOQV9TQUZFVFlfT05fTlVM
TF9SRVRVUk5fVkFMKG9yaWdpbiwgMCk7Ci0KLSAgICByZXR1cm4gV2ViQ29yZTo6RGF0YWJhc2VN
YW5hZ2VyOjptYW5hZ2VyKCkucXVvdGFGb3JPcmlnaW4ob3JpZ2luLT5zZWN1cml0eU9yaWdpbi5n
ZXQoKSk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShvcmlnaW4pOwotICAgIHJldHVybiAwOwot
I2VuZGlmCi19Ci0KLXZvaWQgZXdrX3NlY3VyaXR5X29yaWdpbl93ZWJfZGF0YWJhc2VfcXVvdGFf
c2V0KGNvbnN0IEV3a19TZWN1cml0eV9PcmlnaW4qIG9yaWdpbiwgdWludDY0X3QgcXVvdGEpCi17
Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4ob3JpZ2luKTsKLQotI2lmIEVOQUJMRShT
UUxfREFUQUJBU0UpCi0gICAgV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuc2V0
UXVvdGEob3JpZ2luLT5zZWN1cml0eU9yaWdpbi5nZXQoKSwgcXVvdGEpOwotI2VuZGlmCi19Ci0K
LXZvaWQgZXdrX3NlY3VyaXR5X29yaWdpbl9hcHBsaWNhdGlvbl9jYWNoZV9xdW90YV9zZXQoY29u
c3QgRXdrX1NlY3VyaXR5X09yaWdpbiogb3JpZ2luLCBpbnQ2NF90IHF1b3RhKQotewotICAgIEVJ
TkFfU0FGRVRZX09OX05VTExfUkVUVVJOKG9yaWdpbik7Ci0gICAgV2ViQ29yZTo6Y2FjaGVTdG9y
YWdlKCkuc3RvcmVVcGRhdGVkUXVvdGFGb3JPcmlnaW4ob3JpZ2luLT5zZWN1cml0eU9yaWdpbi5n
ZXQoKSwgcXVvdGEpOwotfQotCi12b2lkIGV3a19zZWN1cml0eV9vcmlnaW5fYXBwbGljYXRpb25f
Y2FjaGVfY2xlYXIoY29uc3QgRXdrX1NlY3VyaXR5X09yaWdpbiogb3JpZ2luKQotewotICAgIEVJ
TkFfU0FGRVRZX09OX05VTExfUkVUVVJOKG9yaWdpbik7Ci0gICAgV2ViQ29yZTo6QXBwbGljYXRp
b25DYWNoZTo6ZGVsZXRlQ2FjaGVGb3JPcmlnaW4ob3JpZ2luLT5zZWN1cml0eU9yaWdpbi5nZXQo
KSk7Ci19Ci0KLUVpbmFfTGlzdCogZXdrX3NlY3VyaXR5X29yaWdpbl93ZWJfZGF0YWJhc2VfZ2V0
X2FsbChjb25zdCBFd2tfU2VjdXJpdHlfT3JpZ2luKiBvcmlnaW4pCi17Ci0gICAgRUlOQV9TQUZF
VFlfT05fTlVMTF9SRVRVUk5fVkFMKG9yaWdpbiwgMCk7Ci0KLSAgICBFaW5hX0xpc3QqIGRhdGFi
YXNlcyA9IDA7Ci0jaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAgICBWZWN0b3I8V1RGOjpTdHJp
bmc+IG5hbWVzOwotCi0gICAgaWYgKCFXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIo
KS5kYXRhYmFzZU5hbWVzRm9yT3JpZ2luKG9yaWdpbi0+c2VjdXJpdHlPcmlnaW4uZ2V0KCksIG5h
bWVzKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bmFtZXMuc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgRXdrX1dlYl9EYXRhYmFzZSogZGF0YWJhc2Ug
PSBld2tfd2ViX2RhdGFiYXNlX25ldyhvcmlnaW4tPnNlY3VyaXR5T3JpZ2luLmdldCgpLCBuYW1l
c1tpXS51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgZGF0YWJhc2VzID0gZWluYV9saXN0X2FwcGVu
ZChkYXRhYmFzZXMsIGRhdGFiYXNlKTsKLSAgICB9Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShv
cmlnaW4pOwotI2VuZGlmCi0gICAgcmV0dXJuIGRhdGFiYXNlczsKLX0KLQotdm9pZCBld2tfc2Vj
dXJpdHlfb3JpZ2luX2ZyZWUoRXdrX1NlY3VyaXR5X09yaWdpbiogb3JpZ2luKQotewotICAgIEVJ
TkFfU0FGRVRZX09OX05VTExfUkVUVVJOKG9yaWdpbik7Ci0KLSAgICBvcmlnaW4tPnNlY3VyaXR5
T3JpZ2luID0gMDsKLSAgICBlaW5hX3N0cmluZ3NoYXJlX2RlbChvcmlnaW4tPmhvc3QpOwotICAg
IGVpbmFfc3RyaW5nc2hhcmVfZGVsKG9yaWdpbi0+cHJvdG9jb2wpOwotICAgIGVpbmFfc3RyaW5n
c2hhcmVfZGVsKG9yaWdpbi0+b3JpZ2luU3RyaW5nKTsKLQotICAgIGRlbGV0ZSBvcmlnaW47Ci19
Ci0KLUV3a19TZWN1cml0eV9PcmlnaW4qIGV3a19zZWN1cml0eV9vcmlnaW5fbmV3X2Zyb21fc3Ry
aW5nKGNvbnN0IGNoYXIqIHVybCkKLXsKLSAgICByZXR1cm4gZXdrX3NlY3VyaXR5X29yaWdpbl9u
ZXcoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcoU3RyaW5nOjpmcm9t
VVRGOCh1cmwpKS5nZXQoKSk7Ci19Ci0KLS8qKgotICogQGludGVybmFsCi0gKiBDcmVhdGVzIGEg
RVdLIHdyYXBwZXIgZm9yIFdlYkNvcmUgU2VjdXJpdHkgT3JpZ2luIG9iamVjdC4KLSAqCi0gKiBA
cGFyYW0gY29yZU9yaWdpbiBXZWJDb3JlIFNlY3VyaXR5IE9yaWdpbiBvYmplY3QKLSAqCi0gKiBA
cmV0dXJuIGEgRVdLIHdyYXBwZXIgb2YgV2ViQ29yZSBTZWN1cml0eSBPcmlnaW4gb2JqZWN0IHdo
aWNoIHNob3VsZCBiZQotICogZnJlZWQgYnkgZXdrX3NlY3VyaXR5X29yaWdpbl9mcmVlKCkKLSAq
LwotRXdrX1NlY3VyaXR5X09yaWdpbiogZXdrX3NlY3VyaXR5X29yaWdpbl9uZXcoV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW4qIGNvcmVPcmlnaW4pCi17Ci0gICAgRXdrX1NlY3VyaXR5X09yaWdpbiog
b3JpZ2luID0gbmV3IEV3a19TZWN1cml0eV9PcmlnaW47Ci0KLSAgICBvcmlnaW4tPnNlY3VyaXR5
T3JpZ2luID0gY29yZU9yaWdpbjsKLSAgICBvcmlnaW4tPnByb3RvY29sID0gZWluYV9zdHJpbmdz
aGFyZV9hZGQoY29yZU9yaWdpbi0+cHJvdG9jb2woKS51dGY4KCkuZGF0YSgpKTsKLSAgICBvcmln
aW4tPmhvc3QgPSBlaW5hX3N0cmluZ3NoYXJlX2FkZChjb3JlT3JpZ2luLT5ob3N0KCkudXRmOCgp
LmRhdGEoKSk7Ci0gICAgb3JpZ2luLT5vcmlnaW5TdHJpbmcgPSBlaW5hX3N0cmluZ3NoYXJlX2Fk
ZChvcmlnaW4tPnNlY3VyaXR5T3JpZ2luLT50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotCi0g
ICAgcmV0dXJuIG9yaWdpbjsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9l
d2tfc2VjdXJpdHlfb3JpZ2luLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3NlY3VyaXR5
X29yaWdpbi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OTk2OTcyLi4wMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfc2VjdXJpdHlfb3JpZ2luLmgKKysrIC9k
ZXYvbnVsbApAQCAtMSwxNzUgKzAsMCBAQAotLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMTIgSW50
ZWwgQ29ycG9yYXRpb24KLQotICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICAgIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICAgIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
LQotICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAgICBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLQotICAgIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UKLSAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bwotICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gICAgQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCi0qLwotCi0vKioKLSAqIEBmaWxlICAgIGV3a19zZWN1cml0eV9vcmlnaW4u
aAotICogQGJyaWVmICAgU2VjdXJpdHkgT3JpZ2luIEFQSS4KLSAqCi0gKiBTZWN1cml0eSBPcmln
aW4gaXMgdGhlIG1lY2hhbmlzbSB0aGF0IGRlZmluZXMgdGhlIGFjY2VzcyBsaW1pdHMgb2YgYSB3
ZWJzaXRlLgotICogQmFzZWQgb24gaW5mb3JtYXRpb24gc3VjaCBhcyBkb21haW4sIHByb3RvY29s
IGFuZCBwb3J0LCB5b3UgY2FuIGdyYW50IG9yIG5vdAotICogYXV0aG9yaXphdGlvbiBmb3IgYWNj
ZXNzaW5nIGRhdGEgYW5kIHBlcmZvcm1pbmcgY2VydGFpbiB0YXNrcy4gRGF0YWJhc2UgcXVvdGEK
LSAqIGNhbiBhbHNvIGJlIGRlZmluZWQgYmFzZWQgb24gdGhlIHNlY3VyaXR5IG9yaWdpbi4KLSAq
Ci0gKiBUaGUgZGF0YWJhc2UgcmVsYXRlZCBmdW5jdGlvbnMgd2lsbCBkbyBub3RoaW5nIGlmIFdl
YktpdCBpcyBidWlsdCB3aXRob3V0IFdlYgotICogU1FMIERhdGFiYXNlIHN1cHBvcnQuCi0gKi8K
LQotI2lmbmRlZiBld2tfc2VjdXJpdHlfb3JpZ2luX2gKLSNkZWZpbmUgZXdrX3NlY3VyaXR5X29y
aWdpbl9oCi0KLSNpbmNsdWRlIDxFaW5hLmg+Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJu
ICJDIiB7Ci0jZW5kaWYKLQotdHlwZWRlZiBzdHJ1Y3QgX0V3a19TZWN1cml0eV9PcmlnaW4gRXdr
X1NlY3VyaXR5X09yaWdpbjsKLQotLyoqCi0gKiBSZXR1cm5zIHRoZSBwcm90b2NvbCBvZiB0aGUg
c2VjdXJpdHkgb3JpZ2luLgotICoKLSAqIEBwYXJhbSBvIHNlY3VyaXR5IG9yaWdpbiBvYmplY3QK
LSAqCi0gKiBJdCByZXR1cm5zIGEgaW50ZXJuYWwgc3RyaW5nIHdoaWNoIHNob3VsZCBub3QKLSAq
IGJlIG1vZGlmaWVkLiBUaGUgc3RyaW5nIGlzIGd1YXJhbnRlZWQgdG8gYmUgc3RyaW5nc2hhcmVk
LgotICoKLSAqIEByZXR1cm4gdGhlIHByb3RvY29sIHNjaGVtZSBvciBAYyBOVUxMIGlmIHRoZXJl
IGlzIG5vdCBhIHByb3RvY29sIHNjaGVtZQotICovCi1FQVBJIGNvbnN0IGNoYXIgICAgICAgICAg
KmV3a19zZWN1cml0eV9vcmlnaW5fcHJvdG9jb2xfZ2V0KGNvbnN0IEV3a19TZWN1cml0eV9Pcmln
aW4gKm8pOwotCi0vKioKLSAqIFJldHVybnMgdGhlIGhvc3Qgb2YgdGhlIHNlY3VyaXR5IG9yaWdp
bi4KLSAqCi0gKiBJdCByZXR1cm5zIGEgaW50ZXJuYWwgc3RyaW5nIHdoaWNoIHNob3VsZCBub3QK
LSAqIGJlIG1vZGlmaWVkLiBUaGUgc3RyaW5nIGlzIGd1YXJhbnRlZWQgdG8gYmUgc3RyaW5nc2hh
cmVkLgotICoKLSAqIEBwYXJhbSBvIHNlY3VyaXR5IG9yaWdpbiBvYmplY3QKLSAqCi0gKiBAcmV0
dXJuIHRoZSBob3N0IGRvbWFpbiBvciBAYyBOVUxMIGlmIHRoZXJlIGlzIG5vdCBhIGhvc3Qgc2No
ZW1lCi0gKi8KLUVBUEkgY29uc3QgY2hhciAgICAgICAgICAqZXdrX3NlY3VyaXR5X29yaWdpbl9o
b3N0X2dldChjb25zdCBFd2tfU2VjdXJpdHlfT3JpZ2luICpvKTsKLQotLyoqCi0gKiBDb252ZXJ0
IHRoaXMgRXdrX1NlY3VyaXR5X09yaWdpbiBpbnRvIGEgc3RyaW5nLgotICogVGhlIHN0cmluZyBy
ZXByZXNlbnRhdGlvbiBvZiBhIHNlY3VyaXR5IG9yaWdpbiBpcyBzaW1pbGFyIHRvIGEgVVJMLCBl
eGNlcHQgaXQgbGFja3MgYSBwYXRoIGNvbXBvbmVudC4KLSAqIFRoZSBzdHJpbmcgcmVwcmVzZW50
YXRpb24gZG9lcyBub3QgZW5jb2RlIHRoZSB2YWx1ZSBvZiB0aGUgc2VjdXJpdHkgb3JpZ2luJ3Mg
ZG9tYWluIHByb3BlcnR5LgotICoKLSAqIEBwYXJhbSBvIHNlY3VyaXR5IG9yaWdpbiBvYmplY3QK
LSAqCi0gKiBAcmV0dXJuIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2Ygc2VjdXJpdHkgb3Jp
Z2luIG9yIEBjIE5VTEwgaWYgdGhlcmUgaXMgbm90IGEgcHJvcGVyIHNlY3VyaXR5IG9yaWdpbiBz
Y2hlbWUKLSAqLwotRUFQSSBjb25zdCBjaGFyICAgICAgICAgICpld2tfc2VjdXJpdHlfb3JpZ2lu
X3N0cmluZ19nZXQoY29uc3QgRXdrX1NlY3VyaXR5X09yaWdpbiAqbyk7Ci0KLS8qKgotICogUmV0
dXJucyB0aGUgcG9ydCBvZiB0aGUgc2VjdXJpdHkgb3JpZ2luLgotICoKLSAqIEBwYXJhbSBvIHNl
Y3VyaXR5IG9yaWdpbiBvYmplY3QKLSAqCi0gKiBAcmV0dXJuIHRoZSBwb3J0IG9yIEBjIDAgaWYg
dGhlcmUgaXMgbm90IGEgcHJvcGVyIHNlY3VyaXR5IG9yaWdpbiBzY2hlbWUKLSAqLwotRUFQSSB1
aW50MzJfdCAgICAgICAgICAgICBld2tfc2VjdXJpdHlfb3JpZ2luX3BvcnRfZ2V0KGNvbnN0IEV3
a19TZWN1cml0eV9PcmlnaW4gKm8pOwotCi0vKioKLSAqIFJldHJpZXZlcyB0aGUgdXNhZ2Ugb2Yg
YSBkYXRhYmFzZSBmb3IgYSBzZWN1cml0eSBvcmlnaW4uCi0gKgotICogVGhpcyBmdW5jdGlvbiB3
b24ndCB3b3JrIGlmIFdlYiBTUUwgRGF0YWJhc2Ugd2FzIG5vdCBlbmFibGVkIHdoZW4KLSAqIGJ1
aWxkaW5nIFdlYktpdCBhbmQgd2lsbCBqdXN0IHJldHVybiAwLgotICoKLSAqIEBwYXJhbSBvIHNl
Y3VyaXR5IG9yaWdpbiBvYmplY3Qgb3IgQGMgMCBpZiB0aGVyZSBpcyBub3QgYSBwcm9wZXIgc2Vj
dXJpdHkgb3JpZ2luIHNjaGVtZQotICoKLSAqIEByZXR1cm4gdGhlIHVzYWdlIGluIGJ5dGVzCi0g
Ki8KLUVBUEkgdWludDY0X3QgICAgICAgICAgICAgZXdrX3NlY3VyaXR5X29yaWdpbl93ZWJfZGF0
YWJhc2VfdXNhZ2VfZ2V0KGNvbnN0IEV3a19TZWN1cml0eV9PcmlnaW4gKm8pOwotCi0vKioKLSAq
IFJldHJpZXZlcyB0aGUgcXVvdGEgb2YgYSBkYXRhYmFzZSBmb3IgYSBzZWN1cml0eSBvcmlnaW4u
Ci0gKgotICogVGhpcyBmdW5jdGlvbiB3b24ndCB3b3JrIGlmIFdlYiBTUUwgRGF0YWJhc2Ugd2Fz
IG5vdCBlbmFibGVkIHdoZW4KLSAqIGJ1aWxkaW5nIFdlYktpdCBhbmQgd2lsbCBqdXN0IHJldHVy
biAwLgotICoKLSAqIEBwYXJhbSBvIHNlY3VyaXR5IG9yaWdpbiBvYmplY3QKLSAqCi0gKiBAcmV0
dXJuIHRoZSBxdW90YSBpbiBieXRlcyBvciBAYyAwIGlmIHRoZXJlIGlzIG5vdCBhIHByb3BlciBz
ZWN1cml0eSBvcmlnaW4gc2NoZW1lCi0gKi8KLUVBUEkgdWludDY0X3QgICAgICAgICAgICAgZXdr
X3NlY3VyaXR5X29yaWdpbl93ZWJfZGF0YWJhc2VfcXVvdGFfZ2V0KGNvbnN0IEV3a19TZWN1cml0
eV9PcmlnaW4gKm8pOwotCi0vKioKLSAqIFNldHMgdGhlIGRhdGFiYXNlIHVzYWdlIHF1b3RhIGZv
ciBhIHNlY3VyaXR5IG9yaWdpbi4KLSAqCi0gKiBUaGlzIGZ1bmN0aW9uIHdvbid0IHdvcmsgaWYg
V2ViIFNRTCBEYXRhYmFzZSB3YXMgbm90IGVuYWJsZWQgd2hlbgotICogYnVpbGRpbmcgV2ViS2l0
LgotICoKLSAqIEBwYXJhbSBvIHNlY3VyaXR5IG9yaWdpbiBvYmplY3QKLSAqIEBwYXJhbSBxdW90
YSB0aGUgdXNhZ2UgcXVvdGEgaW4gYnl0ZXMKLSAqLwotRUFQSSB2b2lkICAgICAgICAgICAgICAg
ICBld2tfc2VjdXJpdHlfb3JpZ2luX3dlYl9kYXRhYmFzZV9xdW90YV9zZXQoY29uc3QgRXdrX1Nl
Y3VyaXR5X09yaWdpbiAqbywgdWludDY0X3QgcXVvdGEpOwotCi0vKioKLSAqIFNldHMgdGhlIGFw
cGxpY2F0aW9uIGNhY2hlIHVzYWdlIHF1b3RhIGZvciBhIHNlY3VyaXR5IG9yaWdpbi4KLSAqCi0g
KiBAcGFyYW0gbyBzZWN1cml0eSBvcmlnaW4gb2JqZWN0Ci0gKiBAcGFyYW0gcXVvdGEgdGhlIHVz
YWdlIHF1b3RhIGluIGJ5dGVzCi0gKi8KLUVBUEkgdm9pZCAgICAgICAgICAgICAgICAgZXdrX3Nl
Y3VyaXR5X29yaWdpbl9hcHBsaWNhdGlvbl9jYWNoZV9xdW90YV9zZXQoY29uc3QgRXdrX1NlY3Vy
aXR5X09yaWdpbiAqbywgaW50NjRfdCBxdW90YSk7Ci0KLS8qKgotICogQ2xlYXJzIHRoZSBhcHBs
aWNhdGlvbiBjYWNoZSBmb3IgYSBzZWN1cml0eSBvcmlnaW4uCi0gKgotICogQHBhcmFtIG8gc2Vj
dXJpdHkgb3JpZ2luIG9iamVjdC4KLSAqLwotRUFQSSB2b2lkICAgICAgICAgICAgICAgICBld2tf
c2VjdXJpdHlfb3JpZ2luX2FwcGxpY2F0aW9uX2NhY2hlX2NsZWFyKGNvbnN0IEV3a19TZWN1cml0
eV9PcmlnaW4gKm8pOwotCi0vKioKLSAqIFJldHVybiB0aGUgbGlzdCBvZiB3ZWIgZGF0YWJhc2Vz
IGluIHRoZSBzZWN1cml0eSBvcmlnaW4uCi0gKgotICogRWFjaCBpdGVtIG9mIHRoZSBsaXN0IHNo
b3VsZCBiZSByZWxlYXNlIHVzaW5nIGV3a193ZWJfZGF0YWJhc2VfZnJlZSgpIG9yCi0gKiB1c2Ug
ZXdrX3dlYl9kYXRhYmFzZV9saXN0X2ZyZWUoKSBhcyBjb252ZW5pZW5jZS4KLSAqCi0gKiBUaGlz
IGZ1bmN0aW9uIHdvbid0IHdvcmsgaWYgV2ViIFNRTCBEYXRhYmFzZSB3YXMgbm90IGVuYWJsZWQg
d2hlbgotICogYnVpbGRpbmcgV2ViS2l0IGFuZCB3aWxsIGp1c3QgcmV0dXJuIEBjIE5VTEwuCi0g
KgotICogQHBhcmFtIG8gc2VjdXJpdHkgb3JpZ2luIG9iamVjdAotICoKLSAqIEByZXR1cm4gbGlz
dCBvZiB3ZWIgZGF0YWJhc2VzIGluIHRoZSBzZWN1cml0eSBvcmlnaW4gb3IgQGMgTlVMTCBpZiB0
aGVyZSBpcyBub3QgYSBwcm9wZXIgc2VjdXJpdHkgb3JpZ2luIHNjaGVtZQotICoKLSAqIEBzZWUg
ZXdrX3dlYl9kYXRhYmFzZV9mcmVlKCkKLSAqIEBzZWUgZXdrX3dlYl9kYXRhYmFzZV9saXN0X2Zy
ZWUoKQotICovCi1FQVBJIEVpbmFfTGlzdCAgICAgICAgICAgKmV3a19zZWN1cml0eV9vcmlnaW5f
d2ViX2RhdGFiYXNlX2dldF9hbGwoY29uc3QgRXdrX1NlY3VyaXR5X09yaWdpbiAqbyk7Ci0KLS8q
KgotICogUmVsZWFzZSBhbGwgcmVzb3VyY2VzIGFsbG9jYXRlZCBieSBhIHNlY3VyaXR5IG9yaWdp
biBvYmplY3QuCi0gKgotICogQHBhcmFtIG8gc2VjdXJpdHkgb3JpZ2luIG9iamVjdAotICovCi1F
QVBJIHZvaWQgICAgICAgICAgICAgICAgIGV3a19zZWN1cml0eV9vcmlnaW5fZnJlZShFd2tfU2Vj
dXJpdHlfT3JpZ2luICpvKTsKLQotLyoqCi0gKiBDcmVhdGVzIGEgc2VjdXJpdHkgb3JpZ2luIGZv
ciBhIHVybC4KLSAqCi0gKiBAcGFyYW0gdXJsIHRoZSB1cmwgZm9yIHRoZSBzZWN1cml0eSBvcmln
aW4uCi0gKgotICogQHJldHVybiB0aGUgc2VjdXJpdHkgb3JpZ2luIG9iamVjdAotICovCi1FQVBJ
IEV3a19TZWN1cml0eV9PcmlnaW4gKmV3a19zZWN1cml0eV9vcmlnaW5fbmV3X2Zyb21fc3RyaW5n
KGNvbnN0IGNoYXIgKnVybCk7Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotfQotI2VuZGlmCi0jZW5k
aWYgLy8gZXdrX3NlY3VyaXR5X29yaWdpbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX3NlY3VyaXR5X29yaWdpbl9wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9l
d2svZXdrX3NlY3VyaXR5X29yaWdpbl9wcml2YXRlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDU2ODZiNGEuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19z
ZWN1cml0eV9vcmlnaW5fcHJpdmF0ZS5oCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAot
LyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24KLQotICAgIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
LSAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYwotICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgotICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLQotICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0g
ICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKLSAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KLQotICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAgICBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICAgIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCi0gICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0qLwotCi0jaWZuZGVm
IGV3a19zZWN1cml0eV9vcmlnaW5fcHJpdmF0ZV9oCi0jZGVmaW5lIGV3a19zZWN1cml0eV9vcmln
aW5fcHJpdmF0ZV9oCi0KLS8vIGZvcndhcmQgZGVjbGFyYXRpb25zCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci1jbGFzcyBTZWN1cml0eU9yaWdpbjsKLX0KLQotRXdrX1NlY3VyaXR5X09yaWdpbiogZXdr
X3NlY3VyaXR5X29yaWdpbl9uZXcoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qIG9yaWdpbik7Ci0K
LSNlbmRpZiAvLyBld2tfc2VjdXJpdHlfb3JpZ2luX3ByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9lZmwvZXdrL2V3a19zZWN1cml0eV9wb2xpY3kuY3BwIGIvU291cmNlL1dlYktp
dC9lZmwvZXdrL2V3a19zZWN1cml0eV9wb2xpY3kuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA5ZTRkNWE1Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tf
c2VjdXJpdHlfcG9saWN5LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLS8qCi0g
ICAgQ29weXJpZ2h0IChDKSAyMDEyIFByb0ZVU0lPTiBlbWJlZGRlZCBzeXN0ZW1zCi0KLSAgICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCi0gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgotICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAg
ICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAotICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgImV3a19zZWN1cml0eV9wb2xpY3kuaCIKLQotI2lu
Y2x1ZGUgIlVSTC5oIgotI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCi0jaW5jbHVkZSAiU2Vj
dXJpdHlQb2xpY3kuaCIKLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLXZvaWQgZXdrX3Nl
Y3VyaXR5X3BvbGljeV93aGl0ZWxpc3Rfb3JpZ2luX2FkZChjb25zdCBjaGFyKiBzb3VyY2VVcmws
IGNvbnN0IGNoYXIqIGRlc3RpbmF0aW9uVXJsLCBFaW5hX0Jvb2wgYWxsb3dTdWJkb21haW5zKQot
ewotICAgIGNvbnN0IFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gc291cmNlID0gU2VjdXJpdHlPcmln
aW46OmNyZWF0ZUZyb21TdHJpbmcoc291cmNlVXJsKTsKLSAgICBjb25zdCBVUkwgZGVzdGluYXRp
b24oVVJMKCksIGRlc3RpbmF0aW9uVXJsKTsKLQotICAgIFNlY3VyaXR5UG9saWN5OjphZGRPcmln
aW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeSgqc291cmNlLCBkZXN0aW5hdGlvbi5wcm90b2NvbCgpLCBk
ZXN0aW5hdGlvbi5ob3N0KCksIGFsbG93U3ViZG9tYWlucyk7Ci19Ci0KLXZvaWQgZXdrX3NlY3Vy
aXR5X3BvbGljeV93aGl0ZWxpc3Rfb3JpZ2luX2RlbChjb25zdCBjaGFyKiBzb3VyY2VVcmwsIGNv
bnN0IGNoYXIqIGRlc3RpbmF0aW9uVXJsLCBFaW5hX0Jvb2wgYWxsb3dTdWJkb21haW5zKQotewot
ICAgIGNvbnN0IFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gc291cmNlID0gU2VjdXJpdHlPcmlnaW46
OmNyZWF0ZUZyb21TdHJpbmcoc291cmNlVXJsKTsKLSAgICBjb25zdCBVUkwgZGVzdGluYXRpb24o
VVJMKCksIGRlc3RpbmF0aW9uVXJsKTsKLQotICAgIFNlY3VyaXR5UG9saWN5OjpyZW1vdmVPcmln
aW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeSgqc291cmNlLCBkZXN0aW5hdGlvbi5wcm90b2NvbCgpLCBk
ZXN0aW5hdGlvbi5ob3N0KCksIGFsbG93U3ViZG9tYWlucyk7Ci19Ci0KLXZvaWQgZXdrX3NlY3Vy
aXR5X3BvbGljeV93aGl0ZWxpc3Rfb3JpZ2luX3Jlc2V0KCkKLXsKLSAgICBTZWN1cml0eVBvbGlj
eTo6cmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RzKCk7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9ld2svZXdrX3NlY3VyaXR5X3BvbGljeS5oIGIvU291cmNlL1dlYktpdC9lZmwv
ZXdrL2V3a19zZWN1cml0eV9wb2xpY3kuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MzM5ZjE0OGIuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19zZWN1cml0
eV9wb2xpY3kuaAorKysgL2Rldi9udWxsCkBAIC0xLDYwICswLDAgQEAKLS8qCi0gICAgQ29weXJp
Z2h0IChDKSAyMDEyIFByb0ZVU0lPTiBlbWJlZGRlZCBzeXN0ZW1zCi0KLSAgICBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICAg
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAgICB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAotICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotKi8KLQotI2lmbmRlZiBld2tf
c2VjdXJpdHlfcG9saWN5X2gKLSNkZWZpbmUgZXdrX3NlY3VyaXR5X3BvbGljeV9oCi0KLSNpZmRl
ZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJDIiB7Ci0jZW5kaWYKLQotI2luY2x1ZGUgPEVpbmEuaD4K
LQotLyoqCi0gKiBBbGxvd3MgYSBwYWdlIGZyb20gQHAgc291cmNlX3VybCB0byByZXF1ZXN0IGEg
cmVzb3VyY2UgZnJvbSBAcCBkZXN0aW5hdGlvbl91cmwuCi0gKgotICogQHBhcmFtIHNvdXJjZV91
cmwgU291cmNlIFVSTDsgcHJvdG9jb2wgYW5kIGRvbWFpbiBvbmx5IChlLmcuIGFwcDovL2Nsb2Nr
LnppcCkKLSAqIEBwYXJhbSBkZXN0aW5hdGlvbl91cmwgRGVzdGluYXRpb24gVVJMOyBwcm90b2Nv
bCBhbmQgZG9tYWluIG9ubHkgKGUuZy4gaHR0cDovL2FwaS5leGFtcGxlLmNvbSkKLSAqIEBwYXJh
bSBhbGxvd19zdWJkb21haW5zIEVJTkFfVFJVRSBpZiBzdWJkb21haW5zIG9mIGRlc3RpbmF0aW9u
IFVSTHMgc2hvdWxkIGJlIHdoaXRlbGlzdGVkCi0gKi8KLUVBUEkgdm9pZCBld2tfc2VjdXJpdHlf
cG9saWN5X3doaXRlbGlzdF9vcmlnaW5fYWRkKGNvbnN0IGNoYXIgKnNvdXJjZV91cmwsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFy
ICpkZXN0aW5hdGlvbl91cmwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBFaW5hX0Jvb2wgYWxsb3dfc3ViZG9tYWlucyk7Ci0KLS8qKgotICogUmVt
b3ZlIGEgd2hpdGVsaXN0IGl0ZW0gYWRkZWQgd2l0aCBld2tfc2VjdXJpdHlfcG9saWN5X3doaXRl
bGlzdF9vcmlnaW5fZGVsKCkuCi0gKgotICogQHBhcmFtIHNvdXJjZV91cmwgU291cmNlIFVSTDsg
cHJvdG9jb2wgYW5kIGRvbWFpbiBvbmx5IChlLmcuIGFwcDovL2Nsb2NrLnppcCkKLSAqIEBwYXJh
bSBkZXN0aW5hdGlvbl91cmwgRGVzdGluYXRpb24gVVJMOyBwcm90b2NvbCBhbmQgZG9tYWluIG9u
bHkgKGUuZy4gaHR0cDovL2FwaS5leGFtcGxlLmNvbSkKLSAqIEBwYXJhbSBhbGxvd19zdWJkb21h
aW5zIEVJTkFfVFJVRSBpZiBzdWJkb21haW5zIG9mIGRlc3RpbmF0aW9uIFVSTHMgc2hvdWxkIGJl
IHdoaXRlbGlzdGVkCi0gKi8KLUVBUEkgdm9pZCBld2tfc2VjdXJpdHlfcG9saWN5X3doaXRlbGlz
dF9vcmlnaW5fZGVsKGNvbnN0IGNoYXIgKnNvdXJjZV91cmwsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpkZXN0aW5hdGlvbl91
cmwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBF
aW5hX0Jvb2wgYWxsb3dfc3ViZG9tYWlucyk7Ci0KLS8qKgotICogUmVzZXRzIHRoZSB3aGl0ZWxp
c3QgdG8gRVdlYktpdCdzIGRlZmF1bHQsIGVtcHR5IGxpc3QuCi0gKi8KLUVBUEkgdm9pZCBld2tf
c2VjdXJpdHlfcG9saWN5X3doaXRlbGlzdF9vcmlnaW5fcmVzZXQoKTsKLQotI2lmZGVmIF9fY3Bs
dXNwbHVzCi19Ci0jZW5kaWYKLQotI2VuZGlmIC8vIGV3a19zZWN1cml0eV9wb2xpY3lfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19zZXR0aW5ncy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2VmbC9ld2svZXdrX3NldHRpbmdzLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggNzJkMDY2MS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3Nl
dHRpbmdzLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDM3NiArMCwwIEBACi0vKgotICAgIENvcHly
aWdodCAoQykgMjAwOS0yMDEwIFByb0ZVU0lPTiBlbWJlZGRlZCBzeXN0ZW1zCi0gICAgQ29weXJp
Z2h0IChDKSAyMDA5LTIwMTAgU2Ftc3VuZyBFbGVjdHJvbmljcwotICAgIENvcHlyaWdodCAoQykg
MjAxMiBJbnRlbCBDb3Jwb3JhdGlvbgotICAgIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv
dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gICAgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAgICBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCi0gICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZ
SU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICAgIEJvc3Rvbiwg
TUEgMDIxMTAtMTMwMSwgVVNBLgotKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
ImV3a19zZXR0aW5ncy5oIgotCi0jaW5jbHVkZSAiQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaCIK
LSNpbmNsdWRlICJDYWlyb1V0aWxpdGllc0VmbC5oIgotI2luY2x1ZGUgIkNyb3NzT3JpZ2luUHJl
ZmxpZ2h0UmVzdWx0Q2FjaGUuaCIKLSNpbmNsdWRlICJEYXRhYmFzZU1hbmFnZXIuaCIKLSNpbmNs
dWRlICJGb250Q2FjaGUuaCIKLSNpbmNsdWRlICJGcmFtZVZpZXcuaCIKLSNpbmNsdWRlICJHQ0Nv
bnRyb2xsZXIuaCIKLSNpbmNsdWRlICJJY29uRGF0YWJhc2UuaCIKLSNpbmNsdWRlICJJbWFnZS5o
IgotI2luY2x1ZGUgIkludFNpemUuaCIKLSNpbmNsdWRlICJVUkwuaCIKLSNpbmNsdWRlICJNZW1v
cnlDYWNoZS5oIgotI2luY2x1ZGUgIlBhZ2VDYWNoZS5oIgotI2luY2x1ZGUgIlJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXMuaCIKLSNpbmNsdWRlICJTZXR0aW5ncy5oIgotI2luY2x1ZGUgIlN0b3JhZ2VU
aHJlYWQuaCIKLSNpbmNsdWRlICJTdG9yYWdlVHJhY2tlci5oIgotI2luY2x1ZGUgIldlYktpdFZl
cnNpb24uaCIKLSNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKLSNpbmNsdWRlICJld2tfcHJpdmF0
ZS5oIgotI2luY2x1ZGUgPEVpbmEuaD4KLSNpbmNsdWRlIDxlaW5hX3NhZmV0eV9jaGVja3MuaD4K
LSNpbmNsdWRlIDxlcnJuby5oPgotI2luY2x1ZGUgPHN0cmluZy5oPgotI2luY2x1ZGUgPHVuaXN0
ZC5oPgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0
cmluZy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+Ci0KLSNpZiBP
UyhVTklYKQotI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Ci0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0j
aW5jbHVkZSA8c3lzL3V0c25hbWUuaD4KLSNlbGlmIE9TKFdJTkRPV1MpCi0jaW5jbHVkZSAiU3lz
dGVtSW5mby5oIgotI2VuZGlmCi0KLXN0YXRpYyBjb25zdCBjaGFyKiBzX29mZmxpbmVBcHBDYWNo
ZVBhdGggPSAwOwotCi1zdGF0aWMgY29uc3QgY2hhciogX2V3a19pY29uX2RhdGFiYXNlX3BhdGgg
PSAwOwotCi1zdGF0aWMgY29uc3QgY2hhciogc193ZWJEYXRhYmFzZVBhdGggPSAwOwotc3RhdGlj
IGNvbnN0IGNoYXIqIHNfbG9jYWxTdG9yYWdlUGF0aCA9IDA7Ci1zdGF0aWMgY29uc3QgY2hhciog
c19jc3NNZWRpYVR5cGUgPSAwOwotc3RhdGljIHVpbnQ2NF90IHNfd2ViRGF0YWJhc2VRdW90YSA9
IDEgKiAxMDI0ICogMTAyNDsgLy8gMU1CLgotCi1zdGF0aWMgV1RGOjpTdHJpbmcgX2V3a19zZXR0
aW5nc193ZWJraXRfcGxhdGZvcm1fZ2V0KCkKLXsKLSAgICBXVEY6OlN0cmluZyB1YVBsYXRmb3Jt
OwotI2lmIFBMQVRGT1JNKFgxMSkKLSAgICB1YVBsYXRmb3JtID0gIlgxMSI7Ci0jZWxzZQotICAg
IHVhUGxhdGZvcm0gPSAiVW5rbm93biI7Ci0jZW5kaWYKLSAgICByZXR1cm4gdWFQbGF0Zm9ybTsK
LX0KLQotc3RhdGljIFdURjo6U3RyaW5nIF9ld2tfc2V0dGluZ3Nfd2Via2l0X29zX3ZlcnNpb25f
Z2V0KCkKLXsKLSAgICBXVEY6OlN0cmluZyB1YU9zVmVyc2lvbjsKLSNpZiBPUyhEQVJXSU4pCi0j
aWYgQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkKLSAgICB1YU9zVmVyc2lvbiA9ICJJbnRlbCBNYWMg
T1MgWCI7Ci0jZWxzZQotICAgIHVhT3NWZXJzaW9uID0gIlBQQyBNYWMgT1MgWCI7Ci0jZW5kaWYK
LSNlbGlmIE9TKFVOSVgpCi0gICAgc3RydWN0IHV0c25hbWUgbmFtZTsKLQotICAgIGlmICh1bmFt
ZSgmbmFtZSkgIT0gLTEpCi0gICAgICAgIHVhT3NWZXJzaW9uID0gbWFrZVN0cmluZyhuYW1lLnN5
c25hbWUsICcgJywgbmFtZS5tYWNoaW5lKTsKLSAgICBlbHNlCi0gICAgICAgIHVhT3NWZXJzaW9u
ID0gIlVua25vd24iOwotI2VsaWYgT1MoV0lORE9XUykKLSAgICB1YU9zVmVyc2lvbiA9IHdpbmRv
d3NWZXJzaW9uRnJvVUFTdHJpbmcoKTsKLSNlbHNlCi0gICAgdWFPc1ZlcnNpb24gPSAiVW5rbm93
biI7Ci0jZW5kaWYKLSAgICByZXR1cm4gdWFPc1ZlcnNpb247Ci19Ci0KLXVpbnQ2NF90IGV3a19z
ZXR0aW5nc193ZWJfZGF0YWJhc2VfZGVmYXVsdF9xdW90YV9nZXQoKQotewotICAgIHJldHVybiBz
X3dlYkRhdGFiYXNlUXVvdGE7Ci19Ci0KLXZvaWQgZXdrX3NldHRpbmdzX3dlYl9kYXRhYmFzZV9k
ZWZhdWx0X3F1b3RhX3NldCh1aW50NjRfdCBtYXhpbXVtU2l6ZSkKLXsKLSAgICBzX3dlYkRhdGFi
YXNlUXVvdGEgPSBtYXhpbXVtU2l6ZTsKLX0KLQotdm9pZCBld2tfc2V0dGluZ3NfbG9jYWxfc3Rv
cmFnZV9wYXRoX3NldChjb25zdCBjaGFyKiBwYXRoKQotewotICAgIFdlYkNvcmU6OlN0b3JhZ2VU
cmFja2VyOjp0cmFja2VyKCkuc2V0RGF0YWJhc2VEaXJlY3RvcnlQYXRoKFdURjo6U3RyaW5nOjpm
cm9tVVRGOChwYXRoKSk7Ci0gICAgZWluYV9zdHJpbmdzaGFyZV9yZXBsYWNlKCZzX2xvY2FsU3Rv
cmFnZVBhdGgsIHBhdGgpOwotfQotCi1jb25zdCBjaGFyKiBld2tfc2V0dGluZ3NfbG9jYWxfc3Rv
cmFnZV9wYXRoX2dldCh2b2lkKQotewotICAgIHJldHVybiBzX2xvY2FsU3RvcmFnZVBhdGg7Ci19
Ci0KLXZvaWQgZXdrX3NldHRpbmdzX2xvY2FsX3N0b3JhZ2VfZGF0YWJhc2VfY2xlYXIoKQotewot
ICAgIFdlYkNvcmU6OlN0b3JhZ2VUcmFja2VyOjp0cmFja2VyKCkuZGVsZXRlQWxsT3JpZ2lucygp
OwotfQotCi12b2lkIGV3a19zZXR0aW5nc19sb2NhbF9zdG9yYWdlX2RhdGFiYXNlX29yaWdpbl9j
bGVhcihjb25zdCBjaGFyKiB1cmwpCi17Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4o
dXJsKTsKLQotICAgIGNvbnN0IFdlYkNvcmU6OlVSTCBrdXJsKFdlYkNvcmU6OlVSTCgpLCBXVEY6
OlN0cmluZzo6ZnJvbVVURjgodXJsKSk7Ci0gICAgV2ViQ29yZTo6U3RvcmFnZVRyYWNrZXI6OnRy
YWNrZXIoKS5kZWxldGVPcmlnaW4oV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShrdXJs
KS5nZXQoKSk7Ci19Ci0KLXZvaWQgZXdrX3NldHRpbmdzX3dlYl9kYXRhYmFzZV9wYXRoX3NldChj
b25zdCBjaGFyKiBwYXRoKQotewotI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0gICAgV2ViQ29y
ZTo6RGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuc2V0RGF0YWJhc2VEaXJlY3RvcnlQYXRoKFdU
Rjo6U3RyaW5nOjpmcm9tVVRGOChwYXRoKSk7Ci0gICAgZWluYV9zdHJpbmdzaGFyZV9yZXBsYWNl
KCZzX3dlYkRhdGFiYXNlUGF0aCwgcGF0aCk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShwYXRo
KTsKLSNlbmRpZgotfQotCi1jb25zdCBjaGFyKiBld2tfc2V0dGluZ3Nfd2ViX2RhdGFiYXNlX3Bh
dGhfZ2V0KHZvaWQpCi17Ci0gICAgcmV0dXJuIHNfd2ViRGF0YWJhc2VQYXRoOwotfQotCi1FaW5h
X0Jvb2wgZXdrX3NldHRpbmdzX2ljb25fZGF0YWJhc2VfcGF0aF9zZXQoY29uc3QgY2hhciogZGly
ZWN0b3J5KQotewotICAgIFdlYkNvcmU6Okljb25EYXRhYmFzZTo6ZGVsYXlEYXRhYmFzZUNsZWFu
dXAoKTsKLQotICAgIGlmIChkaXJlY3RvcnkpIHsKLSAgICAgICAgaWYgKFdlYkNvcmU6Omljb25E
YXRhYmFzZSgpLmlzRW5hYmxlZCgpKSB7Ci0gICAgICAgICAgICBFUlIoIkljb25EYXRhYmFzZSBp
cyBhbHJlYWR5IG9wZW46ICVzIiwgX2V3a19pY29uX2RhdGFiYXNlX3BhdGgpOwotICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0KLSAgICAgICAgc3RydWN0IHN0YXQgc3Q7Ci0K
LSAgICAgICAgaWYgKHN0YXQoZGlyZWN0b3J5LCAmc3QpKSB7Ci0gICAgICAgICAgICBFUlIoImNv
dWxkIG5vdCBzdGF0KCVzKTogJXMiLCBkaXJlY3RvcnksIHN0cmVycm9yKGVycm5vKSk7Ci0gICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoIVNfSVNESVIo
c3Quc3RfbW9kZSkpIHsKLSAgICAgICAgICAgIEVSUigibm90IGEgZGlyZWN0b3J5OiAlcyIsIGRp
cmVjdG9yeSk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLQotICAgICAg
ICBpZiAoYWNjZXNzKGRpcmVjdG9yeSwgUl9PSyB8IFdfT0spKSB7Ci0gICAgICAgICAgICBFUlIo
ImNvdWxkIG5vdCBhY2Nlc3MgZGlyZWN0b3J5ICclcycgZm9yIHJlYWQgYW5kIHdyaXRlOiAlcyIs
Ci0gICAgICAgICAgICAgICAgZGlyZWN0b3J5LCBzdHJlcnJvcihlcnJubykpOwotICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0KLSAgICAgICAgV2ViQ29yZTo6aWNvbkRhdGFi
YXNlKCkuc2V0RW5hYmxlZCh0cnVlKTsKLSAgICAgICAgV2ViQ29yZTo6aWNvbkRhdGFiYXNlKCku
b3BlbihXVEY6OlN0cmluZzo6ZnJvbVVURjgoZGlyZWN0b3J5KSwgV2ViQ29yZTo6SWNvbkRhdGFi
YXNlOjpkZWZhdWx0RGF0YWJhc2VGaWxlbmFtZSgpKTsKLQotICAgICAgICBlaW5hX3N0cmluZ3No
YXJlX3JlcGxhY2UoJl9ld2tfaWNvbl9kYXRhYmFzZV9wYXRoLCBkaXJlY3RvcnkpOwotICAgIH0g
ZWxzZSB7Ci0gICAgICAgIFdlYkNvcmU6Omljb25EYXRhYmFzZSgpLnNldEVuYWJsZWQoZmFsc2Up
OwotICAgICAgICBXZWJDb3JlOjppY29uRGF0YWJhc2UoKS5jbG9zZSgpOwotCi0gICAgICAgIGVp
bmFfc3RyaW5nc2hhcmVfZGVsKF9ld2tfaWNvbl9kYXRhYmFzZV9wYXRoKTsKLSAgICAgICAgX2V3
a19pY29uX2RhdGFiYXNlX3BhdGggPSAwOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQot
Y29uc3QgY2hhciogZXdrX3NldHRpbmdzX2ljb25fZGF0YWJhc2VfcGF0aF9nZXQodm9pZCkKLXsK
LSAgICByZXR1cm4gX2V3a19pY29uX2RhdGFiYXNlX3BhdGg7Ci19Ci0KLUVpbmFfQm9vbCBld2tf
c2V0dGluZ3NfaWNvbl9kYXRhYmFzZV9jbGVhcih2b2lkKQotewotICAgIGlmICghV2ViQ29yZTo6
aWNvbkRhdGFiYXNlKCkuaXNFbmFibGVkKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBp
ZiAoIVdlYkNvcmU6Omljb25EYXRhYmFzZSgpLmlzT3BlbigpKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgICBXZWJDb3JlOjppY29uRGF0YWJhc2UoKS5yZW1vdmVBbGxJY29ucygpOwotICAg
IHJldHVybiB0cnVlOwotfQotCi1FdmFzX09iamVjdCogZXdrX3NldHRpbmdzX2ljb25fZGF0YWJh
c2VfaWNvbl9vYmplY3RfZ2V0KGNvbnN0IGNoYXIqIHVybCwgRXZhcyogY2FudmFzKQotewotICAg
IEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTCh1cmwsIDApOwotICAgIEVJTkFfU0FGRVRZ
X09OX05VTExfUkVUVVJOX1ZBTChjYW52YXMsIDApOwotCi0gICAgV2ViQ29yZTo6VVJMIGt1cmwo
V2ViQ29yZTo6VVJMKCksIFdURjo6U3RyaW5nOjpmcm9tVVRGOCh1cmwpKTsKLSAgICBSZWZQdHI8
Y2Fpcm9fc3VyZmFjZV90PiBzdXJmYWNlID0gV2ViQ29yZTo6aWNvbkRhdGFiYXNlKCkuc3luY2hy
b25vdXNOYXRpdmVJY29uRm9yUGFnZVVSTChrdXJsLnN0cmluZygpLCBXZWJDb3JlOjpJbnRTaXpl
KDE2LCAxNikpOwotCi0gICAgaWYgKCFzdXJmYWNlKSB7Ci0gICAgICAgIEVSUigibm8gaWNvbiBm
b3IgdXJsICVzIiwgdXJsKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgcmV0dXJu
IHN1cmZhY2UgPyBXZWJDb3JlOjpldmFzT2JqZWN0RnJvbUNhaXJvSW1hZ2VTdXJmYWNlKGNhbnZh
cywgc3VyZmFjZS5nZXQoKSkubGVha1JlZigpIDogMDsKLX0KLQotdm9pZCBld2tfc2V0dGluZ3Nf
b2JqZWN0X2NhY2hlX2NhcGFjaXR5X3NldCh1bnNpZ25lZCBtaW5EZWFkQ2FwYWNpdHksIHVuc2ln
bmVkIG1heERlYWRDYXBhY2l0eSwgdW5zaWduZWQgdG90YWxDYXBhY2l0eSkKLXsKLSAgICBXZWJD
b3JlOjptZW1vcnlDYWNoZSgpLT5zZXRDYXBhY2l0aWVzKG1pbkRlYWRDYXBhY2l0eSwgbWF4RGVh
ZENhcGFjaXR5LCB0b3RhbENhcGFjaXR5KTsKLX0KLQotRWluYV9Cb29sIGV3a19zZXR0aW5nc19v
YmplY3RfY2FjaGVfZW5hYmxlX2dldCgpCi17Ci0gICAgcmV0dXJuICFXZWJDb3JlOjptZW1vcnlD
YWNoZSgpLT5kaXNhYmxlZCgpOwotfQotCi12b2lkIGV3a19zZXR0aW5nc19vYmplY3RfY2FjaGVf
ZW5hYmxlX3NldChFaW5hX0Jvb2wgZW5hYmxlKQotewotICAgIFdlYkNvcmU6Om1lbW9yeUNhY2hl
KCktPnNldERpc2FibGVkKCFlbmFibGUpOwotfQotCi1FaW5hX0Jvb2wgZXdrX3NldHRpbmdzX3No
YWRvd19kb21fZW5hYmxlX2dldCgpCi17Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1FaW5hX0Jv
b2wgZXdrX3NldHRpbmdzX3NoYWRvd19kb21fZW5hYmxlX3NldChFaW5hX0Jvb2wgZW5hYmxlKQot
ewotICAgIFVOVVNFRF9QQVJBTShlbmFibGUpOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQotdW5z
aWduZWQgZXdrX3NldHRpbmdzX3BhZ2VfY2FjaGVfY2FwYWNpdHlfZ2V0KCkKLXsKLSAgICByZXR1
cm4gV2ViQ29yZTo6cGFnZUNhY2hlKCktPmNhcGFjaXR5KCk7Ci19Ci0KLXZvaWQgZXdrX3NldHRp
bmdzX3BhZ2VfY2FjaGVfY2FwYWNpdHlfc2V0KHVuc2lnbmVkIHBhZ2VzKQotewotICAgIFdlYkNv
cmU6OnBhZ2VDYWNoZSgpLT5zZXRDYXBhY2l0eShwYWdlcyk7Ci19Ci0KLXZvaWQgZXdrX3NldHRp
bmdzX21lbW9yeV9jYWNoZV9jbGVhcigpCi17Ci0gICAgLy8gVHVybiB0aGUgY2FjaGUgb24gYW5k
IG9mZi4gRGlzYWJsaW5nIHRoZSBvYmplY3QgY2FjaGUgd2lsbCByZW1vdmUgYWxsCi0gICAgLy8g
cmVzb3VyY2VzIGZyb20gdGhlIGNhY2hlLiBUaGV5IG1heSBzdGlsbCBsaXZlIG9uIGlmIHRoZXkg
YXJlIHJlZmVyZW5jZWQKLSAgICAvLyBieSBzb21lIFdlYiBwYWdlIHRob3VnaC4KLSAgICBpZiAo
IVdlYkNvcmU6Om1lbW9yeUNhY2hlKCktPmRpc2FibGVkKCkpIHsKLSAgICAgICAgV2ViQ29yZTo6
bWVtb3J5Q2FjaGUoKS0+c2V0RGlzYWJsZWQodHJ1ZSk7Ci0gICAgICAgIFdlYkNvcmU6Om1lbW9y
eUNhY2hlKCktPnNldERpc2FibGVkKGZhbHNlKTsKLSAgICB9Ci0KLSAgICBpbnQgcGFnZUNhcGFj
aXR5ID0gV2ViQ29yZTo6cGFnZUNhY2hlKCktPmNhcGFjaXR5KCk7Ci0gICAgLy8gU2V0dGluZyBz
aXplIHRvIDAsIG1ha2VzIGFsbCBwYWdlcyBiZSByZWxlYXNlZC4KLSAgICBXZWJDb3JlOjpwYWdl
Q2FjaGUoKS0+c2V0Q2FwYWNpdHkoMCk7Ci0gICAgV2ViQ29yZTo6cGFnZUNhY2hlKCktPnNldENh
cGFjaXR5KHBhZ2VDYXBhY2l0eSk7Ci0KLSAgICAvLyBJbnZhbGlkYXRpbmcgdGhlIGZvbnQgY2Fj
aGUgYW5kIGZyZWVpbmcgYWxsIGluYWN0aXZlIGZvbnQgZGF0YS4KLSAgICBXZWJDb3JlOjpmb250
Q2FjaGUoKS5pbnZhbGlkYXRlKCk7Ci0KLSAgICAvLyBFbXB0eSB0aGUgQ3Jvc3MtT3JpZ2luIFBy
ZWZsaWdodCBjYWNoZQotICAgIFdlYkNvcmU6OkNyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2Fj
aGU6OnNoYXJlZCgpLmVtcHR5KCk7Ci0KLSAgICAvLyBEcm9wIEpJVCBjb21waWxlZCBjb2RlIGZy
b20gRXhlY3V0YWJsZUFsbG9jYXRvci4KLSAgICBXZWJDb3JlOjpnY0NvbnRyb2xsZXIoKS5kaXNj
YXJkQWxsQ29tcGlsZWRDb2RlKCk7Ci0gICAgLy8gR2FyYmFnZSBDb2xsZWN0IHRvIHJlbGVhc2Ug
dGhlIHJlZmVyZW5jZXMgb2YgQ2FjaGVkUmVzb3VyY2UgZnJvbSBkZWFkIG9iamVjdHMuCi0gICAg
V2ViQ29yZTo6Z2NDb250cm9sbGVyKCkuZ2FyYmFnZUNvbGxlY3ROb3coKTsKLQotICAgIC8vIEZh
c3RNYWxsb2MgaGFzIGxvY2stZnJlZSB0aHJlYWQgc3BlY2lmaWMgY2FjaGVzIHRoYXQgY2FuIG9u
bHkgYmUgY2xlYXJlZCBmcm9tIHRoZSB0aHJlYWQgaXRzZWxmLgotICAgIFdlYkNvcmU6OlN0b3Jh
Z2VUaHJlYWQ6OnJlbGVhc2VGYXN0TWFsbG9jRnJlZU1lbW9yeUluQWxsVGhyZWFkcygpOwotICAg
IFdlYkNvcmU6OldvcmtlclRocmVhZDo6cmVsZWFzZUZhc3RNYWxsb2NGcmVlTWVtb3J5SW5BbGxU
aHJlYWRzKCk7Ci0gICAgV1RGOjpyZWxlYXNlRmFzdE1hbGxvY0ZyZWVNZW1vcnkoKTsKLX0KLQot
dm9pZCBld2tfc2V0dGluZ3NfcmVwYWludF90aHJvdHRsaW5nX3NldChkb3VibGUgZGVmZXJyZWRS
ZXBhaW50RGVsYXksIGRvdWJsZSBpbml0aWFsRGVmZXJyZWRSZXBhaW50RGVsYXlEdXJpbmdMb2Fk
aW5nLCBkb3VibGUgbWF4RGVmZXJyZWRSZXBhaW50RGVsYXlEdXJpbmdMb2FkaW5nLCBkb3VibGUg
ZGVmZXJyZWRSZXBhaW50RGVsYXlJbmNyZW1lbnREdXJpbmdMb2FkaW5nKQotewotICAgIC8vIEZJ
WE1FOiBFRkwgc2hvdWxkIHN3aXRjaCB0byBsYXllciBmbHVzaCB0aHJvdHRsaW5nLgotICAgIFVO
VVNFRF9QQVJBTShkZWZlcnJlZFJlcGFpbnREZWxheSk7Ci0gICAgVU5VU0VEX1BBUkFNKGluaXRp
YWxEZWZlcnJlZFJlcGFpbnREZWxheUR1cmluZ0xvYWRpbmcpOwotICAgIFVOVVNFRF9QQVJBTSht
YXhEZWZlcnJlZFJlcGFpbnREZWxheUR1cmluZ0xvYWRpbmcpOwotICAgIFVOVVNFRF9QQVJBTShk
ZWZlcnJlZFJlcGFpbnREZWxheUluY3JlbWVudER1cmluZ0xvYWRpbmcpOwotfQotCi0vKioKLSAq
IEBpbnRlcm5hbAotICoKLSAqIEdldHMgdGhlIGRlZmF1bHQgdXNlciBhZ2VudCBzdHJpbmcuCi0g
KgotICogQHJldHVybiBhIHBvaW50ZXIgdG8gYW4gZWluYV9zdHJpbmdzaGFyZSBjb250YWluaW5n
IHRoZSB1c2VyIGFnZW50IHN0cmluZwotICovCi1jb25zdCBjaGFyKiBld2tfc2V0dGluZ3NfZGVm
YXVsdF91c2VyX2FnZW50X2dldCgpCi17Ci0gICAgV1RGOjpTdHJpbmcgdWFWZXJzaW9uID0gU3Ry
aW5nOjpudW1iZXIoV0VCS0lUX01BSk9SX1ZFUlNJT04pICsgJy4nICsgU3RyaW5nOjpudW1iZXIo
V0VCS0lUX01JTk9SX1ZFUlNJT04pICsgJysnOwotICAgIFdURjo6U3RyaW5nIHN0YXRpY1VhID0g
Ik1vemlsbGEvNS4wICgiICsgX2V3a19zZXR0aW5nc193ZWJraXRfcGxhdGZvcm1fZ2V0KCkgKyAi
OyAiICsgX2V3a19zZXR0aW5nc193ZWJraXRfb3NfdmVyc2lvbl9nZXQoKSArICIpIEFwcGxlV2Vi
S2l0LyIgKyB1YVZlcnNpb24gKyAiIChLSFRNTCwgbGlrZSBHZWNrbykgVmVyc2lvbi81LjAgU2Fm
YXJpLyIgKyB1YVZlcnNpb247Ci0KLSAgICByZXR1cm4gZWluYV9zdHJpbmdzaGFyZV9hZGQoc3Rh
dGljVWEudXRmOCgpLmRhdGEoKSk7Ci19Ci0KLS8qKgotICogQGludGVybmFsCi0gKgotICogU2V0
cyB0aGUgZ2l2ZW4gcGF0aCB0byB0aGUgZGlyZWN0b3J5IHdoZXJlIFdlYktpdCB3aWxsIHdyaXRl
IGZvcgotICogdGhlIEhUTUw1IGZpbGUgc3lzdGVtIEFQSS4KLSAqCi0gKiBAcGFyYW0gcGF0aCB0
aGUgbmV3IGZpbGUgc3lzdGVtIGRpcmVjdG9yeSBwYXRoCi0gKi8KLXZvaWQgZXdrX3NldHRpbmdz
X2ZpbGVfc3lzdGVtX3BhdGhfc2V0KGNvbnN0IGNoYXIqIHBhdGgpCi17Ci0gICAgVU5VU0VEX1BB
UkFNKHBhdGgpOwotfQotCi12b2lkIGV3a19zZXR0aW5nc19hcHBsaWNhdGlvbl9jYWNoZV9wYXRo
X3NldChjb25zdCBjaGFyKiBwYXRoKQotewotICAgIFdlYkNvcmU6OmNhY2hlU3RvcmFnZSgpLnNl
dENhY2hlRGlyZWN0b3J5KFdURjo6U3RyaW5nOjpmcm9tVVRGOChwYXRoKSk7Ci0gICAgZWluYV9z
dHJpbmdzaGFyZV9yZXBsYWNlKCZzX29mZmxpbmVBcHBDYWNoZVBhdGgsIHBhdGgpOwotfQotCi1j
b25zdCBjaGFyKiBld2tfc2V0dGluZ3NfYXBwbGljYXRpb25fY2FjaGVfcGF0aF9nZXQoKQotewot
ICAgIHJldHVybiBzX29mZmxpbmVBcHBDYWNoZVBhdGg7Ci19Ci0KLWludDY0X3QgZXdrX3NldHRp
bmdzX2FwcGxpY2F0aW9uX2NhY2hlX21heF9xdW90YV9nZXQoKQotewotICAgIHJldHVybiBXZWJD
b3JlOjpjYWNoZVN0b3JhZ2UoKS5tYXhpbXVtU2l6ZSgpOwotfQotCi12b2lkIGV3a19zZXR0aW5n
c19hcHBsaWNhdGlvbl9jYWNoZV9tYXhfcXVvdGFfc2V0KGludDY0X3QgbWF4aW11bVNpemUpCi17
Ci0gICAgZXdrX3NldHRpbmdzX2FwcGxpY2F0aW9uX2NhY2hlX2NsZWFyKCk7Ci0KLSAgICBXZWJD
b3JlOjpjYWNoZVN0b3JhZ2UoKS5zZXRNYXhpbXVtU2l6ZShtYXhpbXVtU2l6ZSk7Ci19Ci0KLXZv
aWQgZXdrX3NldHRpbmdzX2FwcGxpY2F0aW9uX2NhY2hlX2NsZWFyKCkKLXsKLSAgICBXZWJDb3Jl
OjpjYWNoZVN0b3JhZ2UoKS5kZWxldGVBbGxFbnRyaWVzKCk7Ci19Ci0KLWRvdWJsZSBld2tfc2V0
dGluZ3NfZGVmYXVsdF90aW1lcl9pbnRlcnZhbF9nZXQodm9pZCkKLXsKLSAgICByZXR1cm4gV2Vi
Q29yZTo6U2V0dGluZ3M6OmRlZmF1bHRNaW5ET01UaW1lckludGVydmFsKCk7Ci19Ci0KLXZvaWQg
ZXdrX3NldHRpbmdzX2Nzc19tZWRpYV90eXBlX3NldChjb25zdCBjaGFyKiB0eXBlKQotewotICAg
IGVpbmFfc3RyaW5nc2hhcmVfcmVwbGFjZSgmc19jc3NNZWRpYVR5cGUsIHR5cGUpOwotfQotCi1j
b25zdCBjaGFyKiBld2tfc2V0dGluZ3NfY3NzX21lZGlhX3R5cGVfZ2V0KCkKLXsKLSAgICByZXR1
cm4gc19jc3NNZWRpYVR5cGU7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2sv
ZXdrX3NldHRpbmdzLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3NldHRpbmdzLmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc2YTY5MDIuLjAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYktpdC9lZmwvZXdrL2V3a19zZXR0aW5ncy5oCisrKyAvZGV2L251bGwKQEAgLTEsNDA4ICsw
LDAgQEAKLS8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgUHJvRlVTSU9OIGVtYmVkZGVk
IHN5c3RlbXMKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBTYW1zdW5nIEVsZWN0cm9uaWNz
Ci0gICAgQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uCi0KLSAgICBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0g
ICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAg
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAgICB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLAotICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotKi8KLQotI2lmbmRlZiBl
d2tfc2V0dGluZ3NfaAotI2RlZmluZSBld2tfc2V0dGluZ3NfaAotCi0jaW5jbHVkZSA8RWluYS5o
PgotI2luY2x1ZGUgPEV2YXMuaD4KLQotI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gIkMiIHsK
LSNlbmRpZgotCi0vKioKLSAqIEBmaWxlIGV3a19zZXR0aW5ncy5oCi0gKgotICogQGJyaWVmIEdl
bmVyYWwgcHVycG9zZSBzZXR0aW5ncywgbm90IHRpZWQgdG8gYW55IHZpZXcgb2JqZWN0LgotICov
Ci0KLS8qKgotICogUmV0dXJucyB0aGUgZGVmYXVsdCBxdW90YSBmb3IgV2ViIERhdGFiYXNlIGRh
dGFiYXNlcy4gQnkgZGVmYXVsdAotICogdGhpcyB2YWx1ZSBpcyAxTUIuCi0gKgotICogQHJldHVy
biB0aGUgY3VycmVudCBkZWZhdWx0IGRhdGFiYXNlIHF1b3RhIGluIGJ5dGVzCi0gKi8KLUVBUEkg
dWludDY0X3QgICAgICAgICBld2tfc2V0dGluZ3Nfd2ViX2RhdGFiYXNlX2RlZmF1bHRfcXVvdGFf
Z2V0KHZvaWQpOwotCi0vKioKLSAqIFNldHMgdGhlIGRlZmF1bHQgbWF4aW11bSBzaXplIChpbiBi
eXRlcykgYW4gSFRNTDUgV2ViIERhdGFiYXNlIGRhdGFiYXNlIGNhbiBoYXZlLgotICoKLSAqIEJ5
IGRlZmF1bHQsIHRoaXMgdmFsdWUgaXMgMU1CLgotICoKLSAqIEBwYXJhbSBtYXhpbXVtX3NpemUg
dGhlIG5ldyBtYXhpbXVtIHNpemUgYSBkYXRhYmFzZSBpcyBhbGxvd2VkCi0gKi8KLUVBUEkgdm9p
ZCAgICAgICAgICAgICBld2tfc2V0dGluZ3Nfd2ViX2RhdGFiYXNlX2RlZmF1bHRfcXVvdGFfc2V0
KHVpbnQ2NF90IG1heGltdW1fc2l6ZSk7Ci0KLS8qKgotICogU2V0cyB0aGUgY3VycmVudCBwYXRo
IHRvIHRoZSBkaXJlY3RvcnkgV2ViS2l0IHdpbGwgd3JpdGUgV2ViCi0gKiBEYXRhYmFzZSBkYXRh
YmFzZXMuCi0gKgotICogQnkgZGVmYXVsdCwgdGhlIHZhbHVlIGlzIEBjIH4vLmNhY2hlL1dlYktp
dEVmbC9EYXRhYmFzZXMKLSAqCi0gKiBAcGFyYW0gcGF0aCB0aGUgbmV3IGRhdGFiYXNlIGRpcmVj
dG9yeSBwYXRoCi0gKi8KLUVBUEkgdm9pZCAgICAgICAgICAgICBld2tfc2V0dGluZ3Nfd2ViX2Rh
dGFiYXNlX3BhdGhfc2V0KGNvbnN0IGNoYXIgKnBhdGgpOwotCi0vKioKLSAqIFNldHMgdGhlIGN1
cnJlbnQgcGF0aCB0byB0aGUgZGlyZWN0b3J5IHdoZXJlIFdlYktpdCB3aWxsIHdyaXRlIHRoZQot
ICogSFRNTDUgbG9jYWwgc3RvcmFnZSBpbmRleGluZyBkYXRhYmFzZSAodGhlIG9uZSBrZWVwaW5n
IHRyYWNrIG9mCi0gKiBpbmRpdmlkdWFsIHZpZXdzJyBsb2NhbCBzdG9yYWdlIGRhdGFiYXNlcyku
Ci0gKgotICogQnkgZGVmYXVsdCwgdGhlIHZhbHVlIGlzIEBjIH4vLmxvY2FsL3NoYXJlL1dlYktp
dEVmbC9Mb2NhbFN0b3JhZ2UKLSAqCi0gKiBAcGFyYW0gcGF0aCB0aGUgbmV3IGxvY2FsIHN0b3Jh
Z2UgZGF0YWJhc2UgZGlyZWN0b3J5IHBhdGgKLSAqCi0gKiBAbm90ZSBZb3UgbWF5IHdhbnQgdG8g
Y2FsbAotICogZXdrX3ZpZXdfc2V0dGluZ19sb2NhbF9zdG9yYWdlX2RhdGFiYXNlX3BhdGhfc2V0
KCkgb24gdGhlIHNhbWUgQHAKLSAqIHBhdGgsIGhlcmUsIGZvciB5b3VyIHZpZXdzLgotICovCi1F
QVBJIHZvaWQgZXdrX3NldHRpbmdzX2xvY2FsX3N0b3JhZ2VfcGF0aF9zZXQoY29uc3QgY2hhciog
cGF0aCk7Ci0KLS8qKgotICogUmV0dXJucyBkaXJlY3RvcnkncyBwYXRoIHdoZXJlIHRoZSBIVE1M
NSBsb2NhbCBzdG9yYWdlIGluZGV4aW5nCi0gKiBkYXRhYmFzZSBpcyBzdG9yZWQuCi0gKgotICog
VGhpcyBpcyBndWFyYW50ZWVkIHRvIGJlIGVpbmEtc3RyaW5nc2hhcmVkLCBzbyB3aGVuZXZlciBw
b3NzaWJsZQotICogc2F2ZSB5b3Vyc2VsZiBzb21lIGNwdSBjeWNsZXMgYW5kIHVzZSBlaW5hX3N0
cmluZ3NoYXJlX3JlZigpCi0gKiBpbnN0ZWFkIG9mIGVpbmFfc3RyaW5nc2hhcmVfYWRkKCkgb3Ig
c3RyZHVwKCkuCi0gKgotICogQnkgZGVmYXVsdCwgdGhlIHZhbHVlIGlzIEBjIH4vLmxvY2FsL3No
YXJlL1dlYktpdEVmbC9Mb2NhbFN0b3JhZ2UKLSAqCi0gKiBAcmV0dXJuIGRhdGFiYXNlIHBhdGgg
b3IgQGMgTlVMTCwgb24gZXJyb3JzLgotICoKLSAqIEBzZWUgZXdrX3NldHRpbmdzX2xvY2FsX3N0
b3JhZ2VfcGF0aF9zZXQoKQotICovCi1FQVBJIGNvbnN0IGNoYXIqIGV3a19zZXR0aW5nc19sb2Nh
bF9zdG9yYWdlX3BhdGhfZ2V0KHZvaWQpOwotCi0vKioKLSAqIFJlbW92ZXMgQGIgYWxsIEhUTUwg
NSBsb2NhbCBzdG9yYWdlIGRhdGFiYXNlcy4KLSAqLwotRUFQSSB2b2lkIGV3a19zZXR0aW5nc19s
b2NhbF9zdG9yYWdlX2RhdGFiYXNlX2NsZWFyKCk7Ci0KLS8qKgotICogQ2xlYXJzIHRoZSBIVE1M
IDUgbG9jYWwgc3RvcmFnZSBkYXRhYmFzZSBmb3IgdGhlIGdpdmVuIFVSTAotICogKG9yaWdpbiku
Ci0gKgotICogQHBhcmFtIHVybCB3aGljaCBVUkwgdG8gY2xlYXIgbG9jYWwgc3RvcmFnZSB0by4K
LSAqCi0gKiBBZnRlciB0aGlzIGNhbGwsIHRoZSBmaWxlIGhvbGRpbmcgdGhlIGxvY2FsIHN0b3Jh
Z2UgZGF0YWJhc2UgZm9yCi0gKiB0aGF0IG9yaWdpbiB3aWxsIGJlIGRlbGV0ZWQsIGFsb25nIHdp
dGggaXRzIGVudHJ5IG9uIHRoZSBsb2NhbAotICogc3RvcmFnZSBmaWxlcyBkYXRhYmFzZSAoYSBm
aWxlIHN0b3JlZCB1bmRlciB0aGUgcGF0aCByZXR1cm5lZCBieQotICogZXdrX3NldHRpbmdzX2xv
Y2FsX3N0b3JhZ2VfcGF0aF9nZXQoKSkuCi0gKi8KLUVBUEkgdm9pZCBld2tfc2V0dGluZ3NfbG9j
YWxfc3RvcmFnZV9kYXRhYmFzZV9vcmlnaW5fY2xlYXIoY29uc3QgY2hhciAqdXJsKTsKLQotLyoq
Ci0gKiBSZXR1cm5zIGRpcmVjdG9yeSBwYXRoIHdoZXJlIHdlYiBkYXRhYmFzZSBpcyBzdG9yZWQu
Ci0gKgotICogQnkgZGVmYXVsdCwgdGhlIHZhbHVlIGlzIEBjIH4vLmNhY2hlL1dlYktpdEVmbC9E
YXRhYmFzZXMKLSAqCi0gKiBUaGlzIGlzIGd1YXJhbnRlZWQgdG8gYmUgZWluYV9zdHJpbmdzaGFy
ZSwgc28gd2hlbmV2ZXIgcG9zc2libGUKLSAqIHNhdmUgeW91cnNlbGYgc29tZSBjcHUgY3ljbGVz
IGFuZCB1c2UgZWluYV9zdHJpbmdzaGFyZV9yZWYoKQotICogaW5zdGVhZCBvZiBlaW5hX3N0cmlu
Z3NoYXJlX2FkZCgpIG9yIHN0cmR1cCgpLgotICoKLSAqIEByZXR1cm4gZGF0YWJhc2UgcGF0aCBv
ciBAYyBOVUxMIGlmIG5vbmUgb3Igd2ViIGRhdGFiYXNlIGlzIG5vdCBzdXBwb3J0ZWQKLSAqLwot
RUFQSSBjb25zdCBjaGFyICAgICAgKmV3a19zZXR0aW5nc193ZWJfZGF0YWJhc2VfcGF0aF9nZXQo
dm9pZCk7Ci0KLS8qKgotICogU2V0cyBkaXJlY3Rvcnkgd2hlcmUgdG8gc3RvcmUgaWNvbiBkYXRh
YmFzZSwgb3BlbmluZyBvciBjbG9zaW5nIGRhdGFiYXNlLgotICoKLSAqIEljb24gZGF0YWJhc2Ug
bXVzdCBiZSBvcGVuZWQgb25seSBvbmNlLiBJZiB5b3UgdHJ5IHRvIHNldCBhIHBhdGggd2hlbiB0
aGUgaWNvbgotICogZGF0YWJhc2UgaXMgYWxyZWFkeSBvcGVuLCB0aGlzIGZ1bmN0aW9uIHJldHVy
bnMgQGMgRUlOQV9GQUxTRS4KLSAqCi0gKiBAcGFyYW0gZGlyZWN0b3J5IHdoZXJlIHRvIHN0b3Jl
IGljb24gZGF0YWJhc2UsIG11c3QgYmUKLSAqICAgICAgICB3cml0ZS1hYmxlLCBpZiBAYyBOVUxM
IGlzIGdpdmVuLCB0aGVuIGRhdGFiYXNlIGlzIGNsb3NlZAotICoKLSAqIEByZXR1cm4gQGMgRUlO
QV9UUlVFIG9uIHN1Y2Nlc3MsIEBjIEVJTkFfRkFMU0Ugb24gZXJyb3JzCi0gKi8KLUVBUEkgRWlu
YV9Cb29sICAgICAgICBld2tfc2V0dGluZ3NfaWNvbl9kYXRhYmFzZV9wYXRoX3NldChjb25zdCBj
aGFyICpwYXRoKTsKLQotLyoqCi0gKiBSZXR1cm5zIGRpcmVjdG9yeSBwYXRoIHdoZXJlIGljb24g
ZGF0YWJhc2UgaXMgc3RvcmVkLgotICoKLSAqIFRoaXMgaXMgZ3VhcmFudGVlZCB0byBiZSBlaW5h
X3N0cmluZ3NoYXJlLCBzbyB3aGVuZXZlciBwb3NzaWJsZQotICogc2F2ZSB5b3Vyc2VsZiBzb21l
IGNwdSBjeWNsZXMgYW5kIHVzZSBlaW5hX3N0cmluZ3NoYXJlX3JlZigpCi0gKiBpbnN0ZWFkIG9m
IGVpbmFfc3RyaW5nc2hhcmVfYWRkKCkgb3Igc3RyZHVwKCkuCi0gKgotICogQHJldHVybiBkYXRh
YmFzZSBwYXRoIG9yIEBjIE5VTEwgaWYgbm9uZSBpcyBzZXQKLSAqLwotRUFQSSBjb25zdCBjaGFy
ICAgICAgKmV3a19zZXR0aW5nc19pY29uX2RhdGFiYXNlX3BhdGhfZ2V0KHZvaWQpOwotCi0vKioK
LSAqIFJlbW92ZXMgYWxsIGtub3duIGljb25zIGZyb20gZGF0YWJhc2UuCi0gKgotICogRGF0YWJh
c2UgbXVzdCBiZSBvcGVuZWQgd2l0aCBld2tfc2V0dGluZ3NfaWNvbl9kYXRhYmFzZV9wYXRoX3Nl
dCgpCi0gKiBpbiBvcmRlciB0byB3b3JrLgotICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9u
IHN1Y2Nlc3Mgb3IgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UsIGxpa2UKLSAqICAgICAgICAgY2xv
c2VkIGRhdGFiYXNlLgotICovCi1FQVBJIEVpbmFfQm9vbCAgICAgICAgZXdrX3NldHRpbmdzX2lj
b25fZGF0YWJhc2VfY2xlYXIodm9pZCk7Ci0KLS8qKgotICogR2V0cyBpbWFnZSByZXByZXNlbnRp
bmcgdGhlIGdpdmVuIFVSTC4KLSAqCi0gKiBUaGlzIGlzIGFuIHV0aWxpdHkgZnVuY3Rpb24gdGhh
dCBjcmVhdGVzIGFuIEV2YXNfT2JqZWN0IG9mIHR5cGUKLSAqIGltYWdlIHNldCB0byBoYXZlIGZp
bGwgYWx3YXlzIG1hdGNoIG9iamVjdCBzaXplCi0gKiAoZXZhc19vYmplY3RfaW1hZ2VfZmlsbGVk
X2FkZCgpKSwgc2F2aW5nIHNvbWUgY29kZSB0byB1c2UgaXQgZnJvbSBFdmFzLgotICoKLSAqIEBu
b3RlIEluIG9yZGVyIHRvIGhhdmUgdGhpcyB3b3JraW5nLCBvbmUgbXVzdCBvcGVuIGljb24gZGF0
YWJhc2UKLSAqICAgICAgIHdpdGggZXdrX3NldHRpbmdzX2ljb25fZGF0YWJhc2VfcGF0aF9zZXQo
KS4KLSAqCi0gKiBAbm90ZSBUaGUgImxvYWQsZmluaXNoZWQiIHNpZ25hbCBkb2Vzbid0IGd1YXJh
bnRlZSB0aGF0IGljb25zIGFyZSBjb21wbGV0ZWx5IGxvYWRlZCBhbmQKLSAqICAgICAgICBzYXZl
ZCB0byBkYXRhYmFzZS4gSWNvbiBjYW4gYmUgdGFrZW4gYWZ0ZXIgdGhlICJpY29uLHJlY2VpdmVk
IiBzaWduYWwuCi0gKgotICogQHBhcmFtIHVybCB3aGljaCB1cmwgdG8gcXVlcnkgaWNvbgotICog
QHBhcmFtIGNhbnZhcyBldmFzIGluc3RhbmNlIHdoZXJlIHRvIGFkZCByZXN1bHRpbmcgb2JqZWN0
Ci0gKgotICogQHJldHVybiBuZXdseSBhbGxvY2F0ZWQgRXZhc19PYmplY3QgaW5zdGFuY2Ugb3Ig
QGMgTlVMTCBvbgotICogICAgICAgICBlcnJvcnMuIERlbGV0ZSB0aGUgb2JqZWN0IHdpdGggZXZh
c19vYmplY3RfZGVsKCkuCi0gKi8KLUVBUEkgRXZhc19PYmplY3QgICAgICpld2tfc2V0dGluZ3Nf
aWNvbl9kYXRhYmFzZV9pY29uX29iamVjdF9nZXQoY29uc3QgY2hhciAqdXJsLCBFdmFzICpjYW52
YXMpOwotCi0vKioKLSAqIFNldHMgdGhlIHBhdGggd2hlcmUgdGhlIGFwcGxpY2F0aW9uIGNhY2hl
IHdpbGwgYmUgc3RvcmVkLgotICoKLSAqIFRoZSBPZmZsaW5lIEFwcGxpY2F0aW9uIENhY2hpbmcg
QVBJcyBhcmUgcGFydCBvZiBIVE1MNSBhbmQgYWxsb3cgYXBwbGljYXRpb25zIHRvIHN0b3JlIGRh
dGEgbG9jYWxseSB0aGF0IGlzIGFjY2Vzc2VkCi0gKiB3aGVuIHRoZSBuZXR3b3JrIGNhbm5vdCBi
ZSByZWFjaGVkLgotICoKLSAqIEJ5IGRlZmF1bHQsIHRoZSBwYXRoIGlzIEBjIH4vLmNhY2hlL1dl
YktpdEVmbC9BcHBsaWNhdGlvbnMKLSAqIE9uY2UgdGhlIHBhdGggaXMgc2V0LCB0aGUgZmVhdHVy
ZSBpcyBlbmFibGVkIGFuZCB0aGUgcGF0aCBjYW5ub3QgYmUgY2hhbmdlZC4KLSAqCi0gKiBAcGFy
YW0gcGF0aCB3aGVyZSB0byBzdG9yZSBjYWNoZSwgbXVzdCBiZSB3cml0ZS1hYmxlLgotICoKLSAq
IEBzYSBld2tfdmlld19zZXR0aW5nX2FwcGxpY2F0aW9uX2NhY2hlX3NldAotICovCi1FQVBJIHZv
aWQgICAgICAgICAgICAgZXdrX3NldHRpbmdzX2FwcGxpY2F0aW9uX2NhY2hlX3BhdGhfc2V0KGNv
bnN0IGNoYXIgKnBhdGgpOwotCi0vKioKLSAqIFJldHVybnMgdGhlIHBhdGggd2hlcmUgdGhlIEhU
TUw1IGFwcGxpY2F0aW9uIGNhY2hlIGlzIHN0b3JlZC4KLSAqCi0gKiBUaGUgT2ZmbGluZSBBcHBs
aWNhdGlvbiBDYWNoaW5nIEFQSXMgYXJlIHBhcnQgb2YgSFRNTDUgYW5kIGFsbG93IGFwcGxpY2F0
aW9ucyB0byBzdG9yZSBkYXRhIGxvY2FsbHkgdGhhdCBpcyBhY2Nlc3NlZAotICogd2hlbiB0aGUg
bmV0d29yayBjYW5ub3QgYmUgcmVhY2hlZC4KLSAqCi0gKiBCeSBkZWZhdWx0LCB0aGUgcGF0aCBp
cyBAYyB+Ly5jYWNoZS9XZWJLaXRFZmwvQXBwbGljYXRpb25zCi0gKgotICogQHJldHVybiBlaW5h
X3N0cmluZ3NoYXJlJ2QgcGF0aCB2YWx1ZS4KLSAqCi0gKiBAc2EgZXdrX3ZpZXdfc2V0dGluZ19h
cHBsaWNhdGlvbl9jYWNoZV9zZXQKLSAqLwotRUFQSSBjb25zdCBjaGFyICAgICAgKmV3a19zZXR0
aW5nc19hcHBsaWNhdGlvbl9jYWNoZV9wYXRoX2dldCh2b2lkKTsKLQotLyoqCi0gKiBSZXR1cm5z
IHRoZSBtYXhpbXVtIHNpemUsIGluIGJ5dGVzLCBvZiB0aGUgYXBwbGljYXRpb24gY2FjaGUgZm9y
IEhUTUw1IE9mZmxpbmUgV2ViIEFwcGxpY2F0aW9ucy4KLSAqCi0gKiBCeSBkZWZhdWx0LCBhcHBs
aWNhdGlvbnMgYXJlIGFsbG93ZWQgdW5saW1pdGVkIHN0b3JhZ2Ugc3BhY2UuCi0gKgotICogQHNh
IGV3a192aWV3X3NldHRpbmdfb2ZmaW5lX2FwcF9jYWNoZV9zZXQKLSAqLwotRUFQSSBpbnQ2NF90
ICAgICAgICAgIGV3a19zZXR0aW5nc19hcHBsaWNhdGlvbl9jYWNoZV9tYXhfcXVvdGFfZ2V0KHZv
aWQpOwotCi0vKioKLSAqIFNldHMgdGhlIG1heGltdW0gc2l6ZSwgaW4gYnl0ZXMsIG9mIHRoZSBh
cHBsaWNhdGlvbiBjYWNoZSBmb3IgSFRNTDUgT2ZmbGluZSBXZWIgQXBwbGljYXRpb25zLgotICoK
LSAqIEJ5IGRlZmF1bHQsIGFwcGxpY2F0aW9ucyBhcmUgYWxsb3dlZCB1bmxpbWl0ZWQgc3RvcmFn
ZSBzcGFjZS4KLSAqCi0gKiBOb3RlIHRoYXQgY2FsbGluZyB0aGlzIGZ1bmN0aW9uIHdpbGwgZGVs
ZXRlIGFsbCB0aGUgZW50cmllcyBjdXJyZW50bHkgaW4gdGhlIGFwcCBjYWNoZS4KLSAqCi0gKiBA
cGFyYW0gbWF4aW11bV9zaXplIHRoZSBuZXcgbWF4aW11bSBzaXplLCBpbiBieXRlcy4KLSAqCi0g
KiBAc2EgZXdrX3ZpZXdfc2V0dGluZ19hcHBsaWNhdGlvbl9jYWNoZV9lbmFibGVkX3NldAotICov
Ci1FQVBJIHZvaWQgICAgICAgICAgICAgZXdrX3NldHRpbmdzX2FwcGxpY2F0aW9uX2NhY2hlX21h
eF9xdW90YV9zZXQoaW50NjRfdCBtYXhpbXVtX3NpemUpOwotCi0vKioKLSAqIFJlbW92ZXMgYWxs
IGVudHJpZXMgZnJvbSB0aGUgSFRNTDUgYXBwbGljYXRpb24gY2FjaGUuCi0gKgotICogQHNhIGV3
a192aWV3X3NldHRpbmdfYXBwbGljYXRpb25fY2FjaGVfZW5hYmxlZF9zZXQsIGV3a19zZXR0aW5n
c19hcHBsaWNhdGlvbl9jYWNoZV9wYXRoX3NldAotICovCi1FQVBJIHZvaWQgICAgICAgICAgICAg
ZXdrX3NldHRpbmdzX2FwcGxpY2F0aW9uX2NhY2hlX2NsZWFyKHZvaWQpOwotCi0vKioKLSAqIFJl
dHVybnMgd2hldGhlciB0aGUgaW4tbWVtb3J5IG9iamVjdCBjYWNoZSBpcyBlbmFibGVkLgotICoK
LSAqIFRoZSBvYmplY3QgY2FjaGUgaXMgcmVzcG9uc2libGUgZm9yIGhvbGRpbmcgcmVzb3VyY2Vz
IHN1Y2ggYXMgc2NyaXB0cywgc3R5bGVzaGVldHMKLSAqIGFuZCBpbWFnZXMgaW4gbWVtb3J5Lgot
ICoKLSAqIEJ5IGRlZmF1bHQsIHRoZSBjYWNoZSBpcyBlbmFibGVkLgotICoKLSAqIEByZXR1cm4g
QGMgRUlOQV9UUlVFIGlmIHRoZSBjYWNoZSBpcyBlbmFibGVkIG9yIEBjIEVJTkFfRkFMU0UgaWYg
bm90Ci0gKgotICogQHNhIGV3a19zZXR0aW5nc19vYmplY3RfY2FjaGVfY2FwYWNpdHlfc2V0Ci0g
Ki8KLUVBUEkgRWluYV9Cb29sICAgICAgICBld2tfc2V0dGluZ3Nfb2JqZWN0X2NhY2hlX2VuYWJs
ZV9nZXQodm9pZCk7Ci0KLS8qKgotICogRW5hYmxlcy9kaXNhYmxlcyB0aGUgaW4tbWVtb3J5IG9i
amVjdCBjYWNoZSBvZiBXZWJDb3JlLCBwb3NzaWJseSBjbGVhcmluZyBpdC4KLSAqCi0gKiBUaGUg
b2JqZWN0IGNhY2hlIGlzIHJlc3BvbnNpYmxlIGZvciBob2xkaW5nIHJlc291cmNlcyBzdWNoIGFz
IHNjcmlwdHMsIHN0eWxlc2hlZXRzCi0gKiBhbmQgaW1hZ2VzIGluIG1lbW9yeS4KLSAqCi0gKiBC
eSBkZWZhdWx0LCB0aGUgY2FjaGUgaXMgZW5hYmxlZC4KLSAqCi0gKiBEaXNhYmxpbmcgdGhlIGNh
Y2hlIHdpbGwgcmVtb3ZlIGFsbCByZXNvdXJjZXMgZnJvbSB0aGUgY2FjaGUuCi0gKiBUaGV5IG1h
eSBzdGlsbCBsaXZlIG9uIGlmIHRoZXkgYXJlIHJlZmVyZW5jZWQgYnkgc29tZSBXZWIgcGFnZSB0
aG91Z2guCi0gKgotICogQHBhcmFtIHNldCBAYyBFSU5BX1RSVUUgdG8gZW5hYmxlIG1lbW9yeSBj
YWNoZSwgQGMgRUlOQV9GQUxTRSB0byBkaXNhYmxlCi0gKi8KLUVBUEkgdm9pZCAgICAgICAgICAg
ICBld2tfc2V0dGluZ3Nfb2JqZWN0X2NhY2hlX2VuYWJsZV9zZXQoRWluYV9Cb29sIHNldCk7Ci0K
LS8qKgotICogUmV0dXJucyB3aGV0aGVyIFNoYWRvdyBET00gaXMgZW5hYmxlZC4KLSAqCi0gKiBT
aGFkb3cgRE9NIGlzIGEgbWV0aG9kIG9mIGVzdGFibGlzaGluZyBhbmQgbWFpbnRhaW5pbmcgZnVu
Y3Rpb25hbCBib3VuZGFyaWVzIGJldHdlZW4KLSAqIERPTSBzdWJ0cmVlcyBhbmQgaG93IHRoZXNl
IHN1YnRyZWVzIGludGVyYWN0IHdpdGggZWFjaCBvdGhlciB3aXRoaW4gYSBkb2N1bWVudCB0cmVl
LAotICogdGh1cyBlbmFibGluZyBiZXR0ZXIgZnVuY3Rpb25hbCBlbmNhcHN1bGF0aW9uIHdpdGhp
biBET00uCi0gKgotICogQnkgZGVmYXVsdCwgU2hhZG93IERPTSBpcyBkaXNhYmxlZC4KLSAqCi0g
KiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiBTaGFkb3cgRE9NIGlzIGVuYWJsZWQgb3IgQGMgRUlO
QV9GQUxTRSBpZiBub3QKLSAqCi0gKiBAc2EgZXdrX3NldHRpbmdzX3NoYWRvd19kb21fZW5hYmxl
X3NldAotICovCi1FQVBJIEVpbmFfQm9vbCAgICBld2tfc2V0dGluZ3Nfc2hhZG93X2RvbV9lbmFi
bGVfZ2V0KHZvaWQpOwotCi0vKioKLSAqIEVuYWJsZXMvZGlzYWJsZXMgU2hhZG93IERPTSBmdW5j
dGlvbmFsaXR5LgotICoKLSAqIFNoYWRvdyBET00gaXMgYSBtZXRob2Qgb2YgZXN0YWJsaXNoaW5n
IGFuZCBtYWludGFpbmluZyBmdW5jdGlvbmFsIGJvdW5kYXJpZXMgYmV0d2VlbgotICogRE9NIHN1
YnRyZWVzIGFuZCBob3cgdGhlc2Ugc3VidHJlZXMgaW50ZXJhY3Qgd2l0aCBlYWNoIG90aGVyIHdp
dGhpbiBhIGRvY3VtZW50IHRyZWUsCi0gKiB0aHVzIGVuYWJsaW5nIGJldHRlciBmdW5jdGlvbmFs
IGVuY2Fwc3VsYXRpb24gd2l0aGluIERPTS4KLSAqCi0gKiBCeSBkZWZhdWx0LCBTaGFkb3cgRE9N
IGlzIGRpc2FibGVkLgotICoKLSAqIEBwYXJhbSBzZXQgQGMgRUlOQV9UUlVFIHRvIGVuYWJsZSBT
aGFkb3cgRE9NLCBAYyBFSU5BX0ZBTFNFIHRvIGRpc2FibGUKLSAqLwotRUFQSSBFaW5hX0Jvb2wg
ICAgZXdrX3NldHRpbmdzX3NoYWRvd19kb21fZW5hYmxlX3NldChFaW5hX0Jvb2wgZW5hYmxlKTsK
LQotLyoqCi0gKiBEZWZpbmVzIHRoZSBjYXBhY2l0aWVzIGZvciB0aGUgaW4tbWVtb3J5IG9iamVj
dCBjYWNoZS4KLSAqCi0gKiBUaGUgb2JqZWN0IGNhY2hlIGlzIHJlc3BvbnNpYmxlIGZvciBob2xk
aW5nIHJlc291cmNlcyBzdWNoIGFzIHNjcmlwdHMsIHN0eWxlc2hlZXRzCi0gKiBhbmQgaW1hZ2Vz
IGluIG1lbW9yeS4KLSAqCi0gKiBCeSBkZWZhdWx0LCBAcCBtaW5fZGVhZF9ieXRlcyBpcyAwIGFu
ZCBib3RoIEBwIG1heF9kZWFkX2J5dGVzIGFuZCBAcCB0b3RhbF9ieXRlcyBhcmUgOE1CLgotICoK
LSAqIEBwYXJhbSBtaW5fZGVhZF9ieXRlcyBUaGUgbWF4aW11bSBudW1iZXIgb2YgYnl0ZXMgdGhh
dCBkZWFkIHJlc291cmNlcyBzaG91bGQgY29uc3VtZSB3aGVuCi0gKiAgICAgICAgICAgICAgICAg
ICAgICAgdGhlIGNhY2hlIGlzIHVuZGVyIHByZXNzdXJlLgotICogQHBhcmFtIG1heF9kZWFkX2J5
dGVzIFRoZSBtYXhpbXVtIG51bWJlciBvZiBieXRlcyB0aGF0IGRlYWQgcmVzb3VyY2VzIHNob3Vs
ZCBjb25zdW1lIHdoZW4KLSAqICAgICAgICAgICAgICAgICAgICAgICB0aGUgY2FjaGUgaXMgbm90
IHVuZGVyIHByZXNzdXJlLgotICogQHBhcmFtIHRvdGFsX2J5dGVzICAgIFRoZSBtYXhpbXVtIG51
bWJlciBvZiBieXRlcyB0aGF0IHRoZSBjYWNoZSBzaG91bGQgY29uc3VtZSBvdmVyYWxsLgotICoK
LSAqIEBwYXJhbSBjYXBhY2l0eSB0aGUgbWF4aW11bSBudW1iZXIgb2YgYnl0ZXMgdGhhdCB0aGUg
Y2FjaGUgc2hvdWxkIGNvbnN1bWUgb3ZlcmFsbAotICovCi1FQVBJIHZvaWQgICAgICAgICAgICAg
ZXdrX3NldHRpbmdzX29iamVjdF9jYWNoZV9jYXBhY2l0eV9zZXQodW5zaWduZWQgbWluX2RlYWRf
Ynl0ZXMsIHVuc2lnbmVkIG1heF9kZWFkX2J5dGVzLCB1bnNpZ25lZCB0b3RhbF9ieXRlcyk7Ci0K
LS8qKgotICogUmV0dXJucyB0aGUgbWF4aW11bSBudW1iZXIgb2YgcGFnZXMgaW4gdGhlIG1lbW9y
eSBwYWdlIGNhY2hlLgotICoKLSAqIEJ5IGRlZmF1bHQsIG1heGltdW0gbnVtYmVyIG9mIHBhZ2Vz
IGlzIDMuCi0gKgotICogQHJldHVybiAgVGhlIG1heGltdW0gbnVtYmVyIG9mIHBhZ2VzIGluIHRo
ZSBtZW1vcnkgcGFnZSBjYWNoZS4KLSAqCi0gKiBAc2EgZXdrX3NldHRpbmdzX3BhZ2VfY2FjaGVf
Y2FwYWNpdHlfc2V0Ci0gKi8KLUVBUEkgdW5zaWduZWQgICAgICAgICBld2tfc2V0dGluZ3NfcGFn
ZV9jYWNoZV9jYXBhY2l0eV9nZXQodm9pZCk7Ci0KLS8qKgotICogRGVmaW5lcyB0aGUgY2FwYWNp
dHkgZm9yIHRoZSBtZW1vcnkgcGFnZSBjYWNoZS4KLSAqCi0gKiBUaGUgcGFnZSBjYWNoZSBpcyBy
ZXNwb25zaWJsZSBmb3IgaG9sZGluZyB2aXNpdGVkIHdlYiBwYWdlcyBpbiBtZW1vcnkuIFNvIGl0
IGltcHJvdmVzIHVzZXIgZXhwZXJpZW5jZSB3aGVuIG5hdmlnYXRpbmcgZm9ydGggb3IgYmFjawot
ICogdG8gcGFnZXMgaW4gdGhlIGZvcndhcmQvYmFjayBoaXN0b3J5IGFzIHRoZSBjYWNoZWQgcGFn
ZXMgZG8gbm90IHJlcXVpcmUgdG8gYmUgbG9hZGVkIGZyb20gc2VydmVyLgotICoKLSAqIEJ5IGRl
ZmF1bHQsIEBwIHBhZ2VzIGlzIDMuCi0gKgotICogQHBhcmFtIHBhZ2VzIFRoZSBtYXhpbXVtIG51
bWJlciBvZiBwYWdlcyB0byBrZWVwIGluIHRoZSBtZW1vcnkgcGFnZSBjYWNoZS4KLSAqLwotRUFQ
SSB2b2lkICAgICAgICAgICAgIGV3a19zZXR0aW5nc19wYWdlX2NhY2hlX2NhcGFjaXR5X3NldCh1
bnNpZ25lZCBwYWdlcyk7Ci0KLS8qKgotICogQ2xlYXJzIGFsbCBtZW1vcnkgY2FjaGVzLgotICoK
LSAqIFRoaXMgZnVuY3Rpb24gY2xlYXJzIGFsbCBtZW1vcnkgY2FjaGVzLCB3aGljaCBpbmNsdWRl
IHRoZSBvYmplY3QgY2FjaGUgKGZvciByZXNvdXJjZXMgc3VjaCBhcwotICogaW1hZ2VzLCBzY3Jp
cHRzIGFuZCBzdHlsZXNoZWV0cyksIHRoZSBwYWdlIGNhY2hlLCB0aGUgZm9udCBjYWNoZSBhbmQg
dGhlIENyb3NzLU9yaWdpbiBQcmVmbGlnaHQKLSAqIGNhY2hlLgotICovCi1FQVBJIHZvaWQgICAg
ICAgICAgICAgZXdrX3NldHRpbmdzX21lbW9yeV9jYWNoZV9jbGVhcih2b2lkKTsKLQotLyoqCi0g
KiBTZXRzIHZhbHVlcyBmb3IgcmVwYWludCB0aHJvdHRsaW5nLgotICoKLSAqIEl0IGFsbG93cyB0
byBzbG93IGRvd24gcGFnZSBsb2FkaW5nIGFuZAotICogc2hvdWxkIGVuc3VyZSBkaXNwbGF5aW5n
IGEgY29udGVudCB3aXRoIG1hbnkgY3NzL2dpZiBhbmltYXRpb25zLgotICoKLSAqIFRoZXNlIHZh
bHVlcyBjYW4gYmUgdXNlZCBhcyBhIGV4YW1wbGUgZm9yIHJlcGFpbnRzIHRocm90dGxpbmcuCi0g
KiAwLCAgICAgMCwgICAwLCAgICAwICAgIC0gZGVmYXVsdCBXZWJDb3JlJ3MgdmFsdWVzLCB0aGVz
ZSBkbyBub3QgZGVsYXkgYW55IHJlcGFpbnRzCi0gKiAwLjAyNSwgMCwgICAyLjUsICAwLjUgIC0g
cmVjb21tZW5kZWQgdmFsdWVzIGZvciBkeW5hbWljIGNvbnRlbnQKLSAqIDAuMDEsICAwLCAgIDEs
ICAgIDAuMiAgLSBtaW5pbWFsIGxldmVsCi0gKiAwLjAyNSwgMSwgICA1LCAgICAwLjUgIC0gbWVk
aXVtIGxldmVsCi0gKiAwLjEsICAgMiwgICAxMCwgICAxICAgIC0gaGVhdnkgbGV2ZWwKLSAqCi0g
KiBAcGFyYW0gZGVmZXJyZWRfcmVwYWludF9kZWxheSBhIG5vcm1hbCBkZWxheQotICogQHBhcmFt
IGluaXRpYWxfZGVmZXJyZWRfcmVwYWludF9kZWxheV9kdXJpbmdfbG9hZGluZyBuZWdhdGl2ZSB2
YWx1ZSB3b3VsZCBtZWFuIHRoYXQgZmlyc3QgZmV3IHJlcGFpbnRzIGhhcHBlbiB3aXRob3V0IGEg
ZGVsYXkKLSAqIEBwYXJhbSBtYXhfZGVmZXJyZWRfcmVwYWludF9kZWxheV9kdXJpbmdfbG9hZGlu
ZyB0aGUgZGVsYXkgZ3Jvd3Mgb24gZWFjaCByZXBhaW50IHRvIHRoaXMgbWF4aW11bSB2YWx1ZQot
ICogQHBhcmFtIGRlZmVycmVkX3JlcGFpbnRfZGVsYXlfaW5jcmVtZW50X2R1cmluZ19sb2FkaW5n
IG9uIGVhY2ggcmVwYWludCB0aGUgZGVsYXkgaW5jcmVzZXMgYnkgdGhpcyBhbW91bnQKLSAqLwot
RUFQSSB2b2lkICAgICAgICAgICAgIGV3a19zZXR0aW5nc19yZXBhaW50X3Rocm90dGxpbmdfc2V0
KGRvdWJsZSBkZWZlcnJlZF9yZXBhaW50X2RlbGF5LCBkb3VibGUgaW5pdGlhbF9kZWZlcnJlZF9y
ZXBhaW50X2RlbGF5X2R1cmluZ19sb2FkaW5nLCBkb3VibGUgbWF4X2RlZmVycmVkX3JlcGFpbnRf
ZGVsYXlfZHVyaW5nX2xvYWRpbmcsIGRvdWJsZSBkZWZlcnJlZF9yZXBhaW50X2RlbGF5X2luY3Jl
bWVudF9kdXJpbmdfbG9hZGluZyk7Ci0KLS8qKgotICogR2V0cyB0aGUgZGVmYXVsdCBpbnRlcnZh
bCBmb3IgRE9NVGltZXJzIG9uIGFsbCBwYWdlcy4KLSAqCi0gKiBET01UaW1lciBwcm9jZXNzZXMg
amF2YXNjcmlwdCBmdW5jdGlvbiByZWdpc3RlcmVkIGJ5IHNldEludGVydmFsKCkgYmFzZWQgb24g
aW50ZXJ2YWwgdmFsdWUuCi0gKgotICogQHJldHVybiBkZWZhdWx0IG1pbmltdW0gaW50ZXJ2YWwg
Zm9yIERPTVRpbWVycwotICovCi1FQVBJIGRvdWJsZSAgICAgICAgICAgZXdrX3NldHRpbmdzX2Rl
ZmF1bHRfdGltZXJfaW50ZXJ2YWxfZ2V0KHZvaWQpOwotCi0vKioKLSAqIFNldHMgdGhlIENTUyBt
ZWRpYSB0eXBlLgotICoKLSAqIFNldHRpbmcgdGhpcyB3aWxsIG92ZXJyaWRlIHRoZSBub3JtYWwg
dmFsdWUgb2YgdGhlIENTUyBtZWRpYSBwcm9wZXJ0eS4KLSAqCi0gKiBTZXR0aW5nIHRoZSB2YWx1
ZSB0byBAYyBOVUxMIHdpbGwgcmVzdG9yZSB0aGUgaW50ZXJuYWwgZGVmYXVsdCB2YWx1ZS4KLSAq
Ci0gKiBAcGFyYW0gdHlwZSBjc3MgbWVkaWEgdHlwZSB0byBiZSBzZXQsIG11c3QgYmUgd3JpdGUt
YWJsZQotICoKLSAqIEBzYSBld2tfc2V0dGluZ3NfY3NzX21lZGlhX3R5cGVfZ2V0Ci0gKi8KLUVB
UEkgdm9pZCAgICAgICAgICAgICBld2tfc2V0dGluZ3NfY3NzX21lZGlhX3R5cGVfc2V0KGNvbnN0
IGNoYXIgKnR5cGUpOwotCi0vKioKLSAqIFJldHVybnMgdGhlIGN1cnJlbnQgQ1NTIG1lZGlhIHR5
cGUuCi0gKgotICogSXQgd2lsbCBvbmx5IHJldHVybiB0aGUgdmFsdWUgc2V0IHRocm91Z2ggZXdr
X3NldHRpbmdzX2Nzc19tZWRpYV90eXBlX3NldCBhbmQgbm90IHRoZSBvbmUgdXNlZCBpbnRlcm5h
bGx5LgotICoKLSAqIFRoaXMgaXMgZ3VhcmFudGVlZCB0byBiZSBlaW5hX3N0cmluZ3NoYXJlLCBz
byB3aGVuZXZlciBwb3NzaWJsZQotICogc2F2ZSB5b3Vyc2VsZiBzb21lIGNwdSBjeWNsZXMgYW5k
IHVzZSBlaW5hX3N0cmluZ3NoYXJlX3JlZigpCi0gKiBpbnN0ZWFkIG9mIGVpbmFfc3RyaW5nc2hh
cmVfYWRkKCkgb3Igc3RyZHVwKCkuCi0gKiAKLSAqIEByZXR1cm4gY3NzIG1lZGlhIHR5cGUgc2V0
IGJ5IHVzZXIgb3IgQGMgTlVMTCBpZiBub25lIGlzIHNldAotICoKLSAqIEBzYSBld2tfc2V0dGlu
Z3NfY3NzX21lZGlhX3R5cGVfc2V0Ci0gKi8KLUVBUEkgY29uc3QgY2hhciAgICAgICpld2tfc2V0
dGluZ3NfY3NzX21lZGlhX3R5cGVfZ2V0KHZvaWQpOwotCi0jaWZkZWYgX19jcGx1c3BsdXMKLX0K
LSNlbmRpZgotI2VuZGlmIC8vIGV3a19zZXR0aW5nc19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2VmbC9ld2svZXdrX3NldHRpbmdzX3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3
ay9ld2tfc2V0dGluZ3NfcHJpdmF0ZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1
NThmN2I4Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfc2V0dGluZ3Nf
cHJpdmF0ZS5oCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotLyoKLSAgICBDb3B5cmln
aHQgKEMpIDIwMDktMjAxMCBQcm9GVVNJT04gZW1iZWRkZWQgc3lzdGVtcwotICAgIENvcHlyaWdo
dCAoQykgMjAwOS0yMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKLQotICAgIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAgICBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwot
ICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgotICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KLQotICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gICAgTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKLSAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
LQotICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICAgIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
Ci0gICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0qLwotCi0jaWZuZGVmIGV3a19zZXR0
aW5nc19wcml2YXRlX2gKLSNkZWZpbmUgZXdrX3NldHRpbmdzX3ByaXZhdGVfaAotCi1jb25zdCBj
aGFyKiBld2tfc2V0dGluZ3NfZGVmYXVsdF91c2VyX2FnZW50X2dldCgpOwotCi12b2lkIGV3a19z
ZXR0aW5nc19maWxlX3N5c3RlbV9wYXRoX3NldChjb25zdCBjaGFyICpwYXRoKTsKLQotI2VuZGlm
IC8vIGV3a19zZXR0aW5nc19wcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZs
L2V3ay9ld2tfdG91Y2hfZXZlbnQuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a190b3Vj
aF9ldmVudC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVlYjFkMzkuLjAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a190b3VjaF9ldmVudC5jcHAKKysrIC9k
ZXYvbnVsbApAQCAtMSwxMTggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1z
dW5nIEVsZWN0cm9uaWNzCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
Ci0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxF
KFRPVUNIX0VWRU5UUykKLQotI2luY2x1ZGUgIlBsYXRmb3JtVG91Y2hQb2ludC5oIgotI2luY2x1
ZGUgImV3a190b3VjaF9ldmVudF9wcml2YXRlLmgiCi0jaW5jbHVkZSA8RWNvcmVfSW5wdXQuaD4K
LSNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KLQotY2xhc3MgV2ViS2l0UGxhdGZvcm1Ub3Vj
aFBvaW50IDogcHVibGljIFdlYkNvcmU6OlBsYXRmb3JtVG91Y2hQb2ludCB7Ci1wdWJsaWM6Ci0g
ICAgV2ViS2l0UGxhdGZvcm1Ub3VjaFBvaW50KHVuc2lnbmVkIGlkLCBjb25zdCBXZWJDb3JlOjpJ
bnRQb2ludCYgd2luZG93UG9zLCBXZWJDb3JlOjpQbGF0Zm9ybVRvdWNoUG9pbnQ6OlN0YXRlIHN0
YXRlKQotICAgIHsKLSAgICAgICAgbV9pZCA9IGlkOwotICAgICAgICBtX3N0YXRlID0gc3RhdGU7
Ci0gICAgICAgIG1fc2NyZWVuUG9zID0gd2luZG93UG9zOwotICAgICAgICBtX3BvcyA9IHdpbmRv
d1BvczsKLSAgICB9Ci19OwotCi1pbmxpbmUgc3RhdGljIFdlYkNvcmU6OlBsYXRmb3JtVG91Y2hQ
b2ludDo6U3RhdGUgdG9QbGF0Zm9ybVRvdWNoUG9pbnRTdGF0ZShFdmFzX1RvdWNoX1BvaW50X1N0
YXRlIHR5cGUpCi17Ci0gICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBFVkFTX1RPVUNIX1BP
SU5UX1VQOgotICAgICAgICByZXR1cm4gV2ViQ29yZTo6UGxhdGZvcm1Ub3VjaFBvaW50OjpUb3Vj
aFJlbGVhc2VkOwotICAgIGNhc2UgRVZBU19UT1VDSF9QT0lOVF9ET1dOOgotICAgICAgICByZXR1
cm4gV2ViQ29yZTo6UGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFByZXNzZWQ7Ci0gICAgY2FzZSBF
VkFTX1RPVUNIX1BPSU5UX01PVkU6Ci0gICAgICAgIHJldHVybiBXZWJDb3JlOjpQbGF0Zm9ybVRv
dWNoUG9pbnQ6OlRvdWNoTW92ZWQ7Ci0gICAgY2FzZSBFVkFTX1RPVUNIX1BPSU5UX1NUSUxMOgot
ICAgICAgICByZXR1cm4gV2ViQ29yZTo6UGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFN0YXRpb25h
cnk7Ci0gICAgY2FzZSBFVkFTX1RPVUNIX1BPSU5UX0NBTkNFTDoKLSAgICAgICAgcmV0dXJuIFdl
YkNvcmU6OlBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hDYW5jZWxsZWQ7Ci0gICAgfQotCi0gICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0KLSAgICByZXR1cm4gV2ViQ29yZTo6UGxhdGZvcm1Ub3Vj
aFBvaW50OjpUb3VjaENhbmNlbGxlZDsKLX0KLQotY2xhc3MgV2ViS2l0UGxhdGZvcm1Ub3VjaEV2
ZW50IDogcHVibGljIFdlYkNvcmU6OlBsYXRmb3JtVG91Y2hFdmVudCB7Ci1wdWJsaWM6Ci0gICAg
V2ViS2l0UGxhdGZvcm1Ub3VjaEV2ZW50KGNvbnN0IEVpbmFfTGlzdCogcG9pbnRzLCBjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCYgcG9zLCBFd2tfVG91Y2hfRXZlbnRfVHlwZSBhY3Rpb24sIHVuc2ln
bmVkIG1vZGlmaWVycykKLSAgICB7Ci0gICAgICAgIHN3aXRjaCAoYWN0aW9uKSB7Ci0gICAgICAg
IGNhc2UgRVdLX1RPVUNIX1NUQVJUOgotICAgICAgICAgICAgbV90eXBlID0gV2ViQ29yZTo6UGxh
dGZvcm1FdmVudDo6VG91Y2hTdGFydDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNl
IEVXS19UT1VDSF9NT1ZFOgotICAgICAgICAgICAgbV90eXBlID0gV2ViQ29yZTo6UGxhdGZvcm1F
dmVudDo6VG91Y2hNb3ZlOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRVdLX1RP
VUNIX0VORDoKLSAgICAgICAgICAgIG1fdHlwZSA9IFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6OlRv
dWNoRW5kOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRVdLX1RPVUNIX0NBTkNF
TDoKLSAgICAgICAgICAgIG1fdHlwZSA9IFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6OlRvdWNoQ2Fu
Y2VsOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0KLSAg
ICAgICAgaWYgKG1vZGlmaWVycyAmIEVDT1JFX0VWRU5UX01PRElGSUVSX0FMVCkKLSAgICAgICAg
ICAgIG1fbW9kaWZpZXJzIHw9IFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6OkFsdEtleTsKLSAgICAg
ICAgaWYgKG1vZGlmaWVycyAmIEVDT1JFX0VWRU5UX01PRElGSUVSX0NUUkwpCi0gICAgICAgICAg
ICBtX21vZGlmaWVycyB8PSBXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjpDdHJsS2V5OwotICAgICAg
ICBpZiAobW9kaWZpZXJzICYgRUNPUkVfRVZFTlRfTU9ESUZJRVJfU0hJRlQpCi0gICAgICAgICAg
ICBtX21vZGlmaWVycyB8PSBXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjpTaGlmdEtleTsKLSAgICAg
ICAgaWYgKG1vZGlmaWVycyAmIEVDT1JFX0VWRU5UX01PRElGSUVSX1dJTikKLSAgICAgICAgICAg
IG1fbW9kaWZpZXJzIHw9IFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6Ok1ldGFLZXk7Ci0KLSAgICAg
ICAgbV90aW1lc3RhbXAgPSBjdXJyZW50VGltZSgpOwotCi0gICAgICAgIGNvbnN0IEVpbmFfTGlz
dCogbGlzdDsKLSAgICAgICAgdm9pZCogaXRlbTsKLSAgICAgICAgRUlOQV9MSVNUX0ZPUkVBQ0go
cG9pbnRzLCBsaXN0LCBpdGVtKSB7Ci0gICAgICAgICAgICBFd2tfVG91Y2hfUG9pbnQqIHBvaW50
ID0gc3RhdGljX2Nhc3Q8RXdrX1RvdWNoX1BvaW50Kj4oaXRlbSk7Ci0gICAgICAgICAgICBXZWJD
b3JlOjpJbnRQb2ludCBwbnQgPSBXZWJDb3JlOjpJbnRQb2ludChwb2ludC0+eCAtIHBvcy54KCks
IHBvaW50LT55IC0gcG9zLnkoKSk7Ci0gICAgICAgICAgICBtX3RvdWNoUG9pbnRzLmFwcGVuZChX
ZWJLaXRQbGF0Zm9ybVRvdWNoUG9pbnQocG9pbnQtPmlkLCBwbnQsIHRvUGxhdGZvcm1Ub3VjaFBv
aW50U3RhdGUocG9pbnQtPnN0YXRlKSkpOwotICAgICAgICB9Ci0gICAgfQotfTsKLQotbmFtZXNw
YWNlIEVXS1ByaXZhdGUgewotCi1XZWJDb3JlOjpQbGF0Zm9ybVRvdWNoRXZlbnQgcGxhdGZvcm1U
b3VjaEV2ZW50KEV2YXNfQ29vcmQgeCwgRXZhc19Db29yZCB5LCBFaW5hX0xpc3QqIHBvaW50cywg
RXdrX1RvdWNoX0V2ZW50X1R5cGUgYWN0aW9uLCB1bnNpZ25lZCBtb2RpZmllcnMpCi17Ci0gICAg
cmV0dXJuIFdlYktpdFBsYXRmb3JtVG91Y2hFdmVudChwb2ludHMsIFdlYkNvcmU6OkludFBvaW50
KHgsIHkpLCBhY3Rpb24sIG1vZGlmaWVycyk7Ci19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShU
T1VDSF9FVkVOVFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3RvdWNo
X2V2ZW50X3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdG91Y2hfZXZlbnRf
cHJpdmF0ZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNzc3OGJmLi4wMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdG91Y2hfZXZlbnRfcHJpdmF0ZS5oCisr
KyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBT
YW1zdW5nIEVsZWN0cm9uaWNzCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBld2tfdG91Y2hfZXZlbnRfcHJpdmF0
ZV9oCi0jZGVmaW5lIGV3a190b3VjaF9ldmVudF9wcml2YXRlX2gKLQotI2lmIEVOQUJMRShUT1VD
SF9FVkVOVFMpCi0KLSNpbmNsdWRlICJQbGF0Zm9ybVRvdWNoRXZlbnQuaCIKLSNpbmNsdWRlICJl
d2tfZnJhbWUuaCIKLQotbmFtZXNwYWNlIEVXS1ByaXZhdGUgewotV2ViQ29yZTo6UGxhdGZvcm1U
b3VjaEV2ZW50IHBsYXRmb3JtVG91Y2hFdmVudChFdmFzX0Nvb3JkIHgsIEV2YXNfQ29vcmQgeSwg
RWluYV9MaXN0KiBwb2ludHMsIEV3a19Ub3VjaF9FdmVudF9UeXBlIGFjdGlvbiwgdW5zaWduZWQg
bW9kaWZpZXJzKTsKLX0gLy8gbmFtZXNwYWNlIEVXS1ByaXZhdGUKLQotI2VuZGlmIC8vIEVOQUJM
RShUT1VDSF9FVkVOVFMpCi0KLSNlbmRpZiAvLyBld2tfdG91Y2hfZXZlbnRfcHJpdmF0ZV9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwIGIvU291cmNlL1dl
YktpdC9lZmwvZXdrL2V3a192aWV3LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
YmVhNTZhMS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3Bw
CisrKyAvZGV2L251bGwKQEAgLTEsNDMyMCArMCwwIEBACi0vKgotICAgIENvcHlyaWdodCAoQykg
MjAwOS0yMDEwIFByb0ZVU0lPTiBlbWJlZGRlZCBzeXN0ZW1zCi0gICAgQ29weXJpZ2h0IChDKSAy
MDA5LTIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcwotICAgIENvcHlyaWdodCAoQykgMjAxMiBJbnRl
bCBDb3Jwb3JhdGlvbgotICAgIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0K
LSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
Ci0gICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4g
IElmIG5vdCwgd3JpdGUgdG8KLSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICAgIEJvc3RvbiwgTUEgMDIxMTAt
MTMwMSwgVVNBLgotKi8KLQotI2RlZmluZSBfX1NURENfRk9STUFUX01BQ1JPUwotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgImV3a192aWV3LmgiCi0KLSNpbmNsdWRlICJBY2NlbGVyYXRl
ZENvbXBvc2l0aW5nQ29udGV4dEVmbC5oIgotI2luY2x1ZGUgIkJhY2tGb3J3YXJkQ29udHJvbGxl
ci5oIgotI2luY2x1ZGUgIkJhY2tGb3J3YXJkTGlzdC5oIgotI2luY2x1ZGUgIkJyaWRnZS5oIgot
I2luY2x1ZGUgIkNocm9tZS5oIgotI2luY2x1ZGUgIkNocm9tZUNsaWVudEVmbC5oIgotI2luY2x1
ZGUgIkNvbnRleHRNZW51Q2xpZW50RWZsLmgiCi0jaW5jbHVkZSAiQ29udGV4dE1lbnVDb250cm9s
bGVyLmgiCi0jaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKLSNpbmNsdWRlICJEcmFnQ2xpZW50
RWZsLmgiCi0jaW5jbHVkZSAiRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmgiCi0jaW5jbHVkZSAi
RWRpdG9yLmgiCi0jaW5jbHVkZSAiRWRpdG9yQ2xpZW50RWZsLmgiCi0jaW5jbHVkZSAiRWZsU2Ny
ZWVuVXRpbGl0aWVzLmgiCi0jaW5jbHVkZSAiRXZlbnRIYW5kbGVyLmgiCi0jaW5jbHVkZSAiRm9j
dXNDb250cm9sbGVyLmgiCi0jaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnRFZmwuaCIKLSNpbmNs
dWRlICJGcmFtZVNlbGVjdGlvbi5oIgotI2luY2x1ZGUgIkZyYW1lVmlldy5oIgotI2luY2x1ZGUg
IkdyYXBoaWNzQ29udGV4dC5oIgotI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCi0jaW5jbHVkZSAi
SFRNTElucHV0RWxlbWVudC5oIgotI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgotI2luY2x1ZGUgIklu
c3BlY3RvckNsaWVudEVmbC5oIgotI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKLSNp
bmNsdWRlICJJbnRTaXplLmgiCi0jaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCi0jaW5jbHVkZSAi
SlNET01XaW5kb3cuaCIKLSNpbmNsdWRlICJKU0xvY2suaCIKLSNpbmNsdWRlICJNYWluRnJhbWUu
aCIKLSNpbmNsdWRlICJOZXR3b3JrU3RvcmFnZVNlc3Npb24uaCIKLSNpbmNsdWRlICJPcGVyYXRp
b25zLmgiCi0jaW5jbHVkZSAiUGFnZUdyb3VwLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1Nb3VzZUV2
ZW50LmgiCi0jaW5jbHVkZSAiUG9wdXBNZW51Q2xpZW50LmgiCi0jaW5jbHVkZSAiUHJvZ3Jlc3NU
cmFja2VyLmgiCi0jaW5jbHVkZSAiUHJvZ3Jlc3NUcmFja2VyQ2xpZW50RWZsLmgiCi0jaW5jbHVk
ZSAiUmVmUHRyQ2Fpcm8uaCIKLSNpbmNsdWRlICJSZW5kZXJUaGVtZUVmbC5oIgotI2luY2x1ZGUg
IlJlc291cmNlSGFuZGxlLmgiCi0jaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgot
I2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKLSNpbmNsdWRlICJTZXNzaW9uSUQuaCIKLSNp
bmNsdWRlICJTZXR0aW5ncy5oIgotI2luY2x1ZGUgIlNvdXBOZXR3b3JrU2Vzc2lvbi5oIgotI2lu
Y2x1ZGUgImNfaW5zdGFuY2UuaCIKLSNpbmNsdWRlICJld2tfY29udGV4dG1lbnVfcHJpdmF0ZS5o
IgotI2luY2x1ZGUgImV3a19mcmFtZS5oIgotI2luY2x1ZGUgImV3a19mcmFtZV9wcml2YXRlLmgi
Ci0jaW5jbHVkZSAiZXdrX2hpc3RvcnlfcHJpdmF0ZS5oIgotI2luY2x1ZGUgImV3a19qc19wcml2
YXRlLmgiCi0jaW5jbHVkZSAiZXdrX3ByaXZhdGUuaCIKLSNpbmNsdWRlICJld2tfc2V0dGluZ3Nf
cHJpdmF0ZS5oIgotI2luY2x1ZGUgImV3a192aWV3X3ByaXZhdGUuaCIKLSNpbmNsdWRlICJld2tf
d2luZG93X2ZlYXR1cmVzX3ByaXZhdGUuaCIKLSNpbmNsdWRlIDxFY29yZS5oPgotI2luY2x1ZGUg
PEVjb3JlX0V2YXMuaD4KLSNpbmNsdWRlIDxFZGplLmg+Ci0jaW5jbHVkZSA8RWluYS5oPgotI2lu
Y2x1ZGUgPEV2YXMuaD4KLSNpbmNsdWRlIDxlaW5hX3NhZmV0eV9jaGVja3MuaD4KLSNpbmNsdWRl
IDxpbnR0eXBlcy5oPgotI2luY2x1ZGUgPGxpbWl0cz4KLSNpbmNsdWRlIDxtYXRoLmg+Ci0jaW5j
bHVkZSA8c3lzL3RpbWUuaD4KLQotI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCi0jaW5j
bHVkZSAiRGV2aWNlTW90aW9uQ2xpZW50RWZsLmgiCi0jaW5jbHVkZSAiRGV2aWNlT3JpZW50YXRp
b25DbGllbnRFZmwuaCIKLSNlbmRpZgotCi0jaWYgRU5BQkxFKEdFT0xPQ0FUSU9OKQotI2luY2x1
ZGUgIkdlb2xvY2F0aW9uQ2xpZW50TW9jay5oIgotI2luY2x1ZGUgIkdlb2xvY2F0aW9uQ29udHJv
bGxlci5oIgotI2VuZGlmCi0KLSNpZiBFTkFCTEUoVklCUkFUSU9OKQotI2luY2x1ZGUgIlZpYnJh
dGlvbkNsaWVudEVmbC5oIgotI2VuZGlmCi0KLSNpZiBFTkFCTEUoQkFUVEVSWV9TVEFUVVMpCi0j
aW5jbHVkZSAiQmF0dGVyeUNsaWVudEVmbC5oIgotI2VuZGlmCi0KLSNpZiBFTkFCTEUoSU5QVVRf
VFlQRV9DT0xPUikKLSNpbmNsdWRlICJDb2xvckNob29zZXJDbGllbnQuaCIKLSNlbmRpZgotCi0j
aWYgRU5BQkxFKE5BVklHQVRPUl9DT05URU5UX1VUSUxTKQotI2luY2x1ZGUgIk5hdmlnYXRvckNv
bnRlbnRVdGlsc0NsaWVudEVmbC5oIgotI2VuZGlmCi0KLXN0YXRpYyBjb25zdCBmbG9hdCB6b29t
TWluaW11bSA9IDAuMDU7Ci1zdGF0aWMgY29uc3QgZmxvYXQgem9vbU1heGltdW0gPSA0LjA7Ci0K
LXN0YXRpYyBjb25zdCBjaGFyIGV3a1ZpZXdUeXBlU3RyaW5nW10gPSAiRVdLX1ZpZXciOwotCi1z
dGF0aWMgY29uc3Qgc2l6ZV90IGV3a1ZpZXdSZXBhaW50c1NpemVJbml0aWFsID0gMzI7Ci1zdGF0
aWMgY29uc3Qgc2l6ZV90IGV3a1ZpZXdSZXBhaW50c1NpemVTdGVwID0gODsKLXN0YXRpYyBjb25z
dCBzaXplX3QgZXdrVmlld1JlcGFpbnRzU2l6ZU1heGltdW1GcmVlID0gNjQ7Ci0KLXN0YXRpYyBj
b25zdCBFdmFzX1NtYXJ0X0NiX0Rlc2NyaXB0aW9uIF9ld2tfdmlld19jYWxsYmFja19uYW1lc1td
ID0gewotICAgIHsgImNvbG9yY2hvb3NlcixjcmVhdGUiLCAiKHl5eXkpIiB9LAotICAgIHsgImNv
bG9yY2hvb3Nlcix3aWxsZGVsZXRlIiwgIiIgfSwKLSAgICB7ICJjb2xvcmNob29zZXIsY29sb3Is
Y2hhbmdlZCIsICIoeXl5eSkiIH0sCi0gICAgeyAiZG93bmxvYWQscmVxdWVzdCIsICJwIiB9LAot
ICAgIHsgImVkaXRvcmNsaWVudCxjb250ZW50cyxjaGFuZ2VkIiwgIiIgfSwKLSAgICB7ICJlZGl0
b3JjbGllbnQsc2VsZWN0aW9uLGNoYW5nZWQiLCAiIiB9LAotICAgIHsgImZyYW1lLGNyZWF0ZWQi
LCAicCIgfSwKLSAgICB7ICJpY29uLHJlY2VpdmVkIiwgIiIgfSwKLSAgICB7ICJpbnB1dG1ldGhv
ZCxjaGFuZ2VkIiwgImIiIH0sCi0gICAgeyAianMsd2luZG93b2JqZWN0LGNsZWFyIiwgIiIgfSwK
LSAgICB7ICJsaW5rLGhvdmVyLGluIiwgInAiIH0sCi0gICAgeyAibGluayxob3ZlcixvdXQiLCAi
IiB9LAotICAgIHsgImxvYWQsZG9jdW1lbnQsZmluaXNoZWQiLCAicCIgfSwKLSAgICB7ICJsb2Fk
LGVycm9yIiwgInAiIH0sCi0gICAgeyAibG9hZCxmaW5pc2hlZCIsICJwIiB9LAotICAgIHsgImxv
YWQsbmV3d2luZG93LHNob3ciLCAiIiB9LAotICAgIHsgImxvYWQscHJvZ3Jlc3MiLCAiZCIgfSwK
LSAgICB7ICJsb2FkLHByb3Zpc2lvbmFsIiwgIiIgfSwKLSAgICB7ICJsb2FkLHN0YXJ0ZWQiLCAi
IiB9LAotICAgIHsgIm1lbnViYXIsdmlzaWJsZSxnZXQiLCAiYiIgfSwKLSAgICB7ICJtZW51YmFy
LHZpc2libGUsc2V0IiwgImIiIH0sCi0gICAgeyAicG9wdXAsY3JlYXRlZCIsICJwIiB9LAotICAg
IHsgInBvcHVwLHdpbGxkZWxldGUiLCAicCIgfSwKLSAgICB7ICJyZWFkeSIsICIiIH0sCi0gICAg
eyAic2Nyb2xsYmFycyx2aXNpYmxlLGdldCIsICJiIiB9LAotICAgIHsgInNjcm9sbGJhcnMsdmlz
aWJsZSxzZXQiLCAiYiIgfSwKLSAgICB7ICJzdGF0dXNiYXIsdGV4dCxzZXQiLCAicyIgfSwKLSAg
ICB7ICJzdGF0dXNiYXIsdmlzaWJsZSxnZXQiLCAiYiIgfSwKLSAgICB7ICJzdGF0dXNiYXIsdmlz
aWJsZSxzZXQiLCAiYiIgfSwKLSAgICB7ICJ0aXRsZSxjaGFuZ2VkIiwgInMiIH0sCi0gICAgeyAi
dG9vbGJhcnMsdmlzaWJsZSxnZXQiLCAiYiIgfSwKLSAgICB7ICJ0b29sYmFycyx2aXNpYmxlLHNl
dCIsICJiIiB9LAotICAgIHsgInRvb2x0aXAsdGV4dCxzZXQiLCAicyIgfSwKLSAgICB7ICJ0b29s
dGlwLHRleHQsdW5zZXQiLCAicyIgfSwKLSAgICB7ICJ1cmksY2hhbmdlZCIsICJzIiB9LAotICAg
IHsgInZpZXcscmVzaXplZCIsICIiIH0sCi0gICAgeyAiem9vbSxhbmltYXRlZCxlbmQiLCAiIiB9
LAotICAgIHsgMCwgMCB9Ci19OwotCi1zdHJ1Y3QgRWRpdG9yQ29tbWFuZCB7Ci0gICAgRXdrX0Vk
aXRvcl9Db21tYW5kIGV3a0VkaXRvckNvbW1hbmQ7Ci0gICAgY29uc3QgY2hhciogZWRpdG9yQ29t
bWFuZFN0cmluZzsKLX07Ci0KLS8qKgotICogQGJyaWVmIEEgdGFibGUgZ3JvdXBpbmcgRXdrX0Vk
aXRvcl9Db21tYW5kIGVudW1zIHdpdGggY29ycmVzcG9uZGluZyBjb21tYW5kCi0gKiBzdHJpbmdz
IHVzZWQgYnkgV2ViQ29yZTo6RWRpdG9yQ29tbWFuZCwga2VlcGluZyBib3RoIGluIHN5bmMuCi0g
KgotICogQGludGVybmFsCi0gKi8KLXN0YXRpYyBjb25zdCBFZGl0b3JDb21tYW5kIGVkaXRvckNv
bW1hbmRzW10gPSB7Ci0gICAgeyBFV0tfRURJVE9SX0NPTU1BTkRfVU5ETywgIlVuZG8iIH0sCi0g
ICAgeyBFV0tfRURJVE9SX0NPTU1BTkRfUkVETywgIlJlZG8iIH0sCi0gICAgeyBFV0tfRURJVE9S
X0NPTU1BTkRfVE9HR0xFX0JPTEQsICJUb2dnbGVCb2xkIiB9LAotICAgIHsgRVdLX0VESVRPUl9D
T01NQU5EX1RPR0dMRV9JVEFMSUMsICJUb2dnbGVJdGFsaWMiIH0sCi0gICAgeyBFV0tfRURJVE9S
X0NPTU1BTkRfVE9HR0xFX1VOREVSTElORSwgIlRvZ2dsZVVuZGVybGluZSIgfSwKLSAgICB7IEVX
S19FRElUT1JfQ09NTUFORF9UT0dHTEVfU1RSSUtFVEhST1VHSCwgIlN0cmlrZXRocm91Z2giIH0s
Ci0gICAgeyBFV0tfRURJVE9SX0NPTU1BTkRfVE9HR0xFX1NVQlNDUklQVCwgIlN1YlNjcmlwdCIg
fSwKLSAgICB7IEVXS19FRElUT1JfQ09NTUFORF9UT0dHTEVfU1VQRVJTQ1JJUFQsICJTdXBlclNj
cmlwdCIgfSwKLSAgICB7IEVXS19FRElUT1JfQ09NTUFORF9JTkRFTlQsICJJbmRlbnQiIH0sCi0g
ICAgeyBFV0tfRURJVE9SX0NPTU1BTkRfT1VUREVOVCwgIk91dGRlbnQiIH0sCi0gICAgeyBFV0tf
RURJVE9SX0NPTU1BTkRfSU5TRVJUX09SREVSRURMSVNULCAiSW5zZXJ0T3JkZXJlZExpc3QiIH0s
Ci0gICAgeyBFV0tfRURJVE9SX0NPTU1BTkRfSU5TRVJUX1VOT1JERVJFRExJU1QsICJJbnNlcnRV
bm9yZGVyZWRMaXN0IiB9LAotICAgIHsgRVdLX0VESVRPUl9DT01NQU5EX0lOU0VSVF9JTUFHRSwg
Ikluc2VydEltYWdlIiB9LAotICAgIHsgRVdLX0VESVRPUl9DT01NQU5EX0lOU0VSVF9URVhULCAi
SW5zZXJ0VGV4dCIgfSwKLSAgICB7IEVXS19FRElUT1JfQ09NTUFORF9JTlNFUlRfSFRNTCwgIklu
c2VydEhUTUwiIH0sCi0gICAgeyBFV0tfRURJVE9SX0NPTU1BTkRfSU5TRVJUX1BBUkFHUkFQSCwg
Ikluc2VydFBhcmFncmFwaCIgfSwKLSAgICB7IEVXS19FRElUT1JfQ09NTUFORF9JTlNFUlRfUEFS
QUdSQVBIX1NFUEFSQVRPUiwgIkluc2VydE5ld0xpbmUiIH0sCi0gICAgeyBFV0tfRURJVE9SX0NP
TU1BTkRfSU5TRVJUX0xJTkVfU0VQQVJBVE9SLCAiSW5zZXJ0TGluZUJyZWFrIiB9LAotICAgIHsg
RVdLX0VESVRPUl9DT01NQU5EX0JBQ0tfQ09MT1IsICJCYWNrQ29sb3IiIH0sCi0gICAgeyBFV0tf
RURJVE9SX0NPTU1BTkRfRk9SRV9DT0xPUiwgIkZvcmVDb2xvciIgfSwKLSAgICB7IEVXS19FRElU
T1JfQ09NTUFORF9ISUxJVEVfQ09MT1IsICJIaWxpdGVDb2xvciIgfSwKLSAgICB7IEVXS19FRElU
T1JfQ09NTUFORF9GT05UX1NJWkUsICJGb250U2l6ZSIgfSwKLSAgICB7IEVXS19FRElUT1JfQ09N
TUFORF9BTElHTl9DRU5URVIsICJBbGlnbkNlbnRlciIgfSwKLSAgICB7IEVXS19FRElUT1JfQ09N
TUFORF9BTElHTl9KVVNUSUZJRUQsICJBbGlnbkp1c3RpZmllZCIgfSwKLSAgICB7IEVXS19FRElU
T1JfQ09NTUFORF9BTElHTl9MRUZULCAiQWxpZ25MZWZ0IiB9LAotICAgIHsgRVdLX0VESVRPUl9D
T01NQU5EX0FMSUdOX1JJR0hULCAiQWxpZ25SaWdodCIgfSwKLSAgICB7IEVXS19FRElUT1JfQ09N
TUFORF9NT1ZFX1RPX05FWFRfQ0hBUiwgIk1vdmVGb3J3YXJkIiB9LAotICAgIHsgRVdLX0VESVRP
Ul9DT01NQU5EX01PVkVfVE9fUFJFVklPVVNfQ0hBUiwgIk1vdmVCYWNrd2FyZCIgfSwKLSAgICB7
IEVXS19FRElUT1JfQ09NTUFORF9NT1ZFX1RPX05FWFRfV09SRCwgIk1vdmVXb3JkRm9yd2FyZCIg
fSwKLSAgICB7IEVXS19FRElUT1JfQ09NTUFORF9NT1ZFX1RPX1BSRVZJT1VTX1dPUkQsICJNb3Zl
V29yZEJhY2t3YXJkIiB9LAotICAgIHsgRVdLX0VESVRPUl9DT01NQU5EX01PVkVfVE9fTkVYVF9M
SU5FLCAiTW92ZURvd24iIH0sCi0gICAgeyBFV0tfRURJVE9SX0NPTU1BTkRfTU9WRV9UT19QUkVW
SU9VU19MSU5FLCAiTW92ZVVwIiB9LAotICAgIHsgRVdLX0VESVRPUl9DT01NQU5EX01PVkVfVE9f
QkVHSU5OSU5HX09GX0xJTkUsICJNb3ZlVG9CZWdpbm5pbmdPZkxpbmUiIH0sCi0gICAgeyBFV0tf
RURJVE9SX0NPTU1BTkRfTU9WRV9UT19FTkRfT0ZfTElORSwgIk1vdmVUb0VuZE9mTGluZSIgfSwK
LSAgICB7IEVXS19FRElUT1JfQ09NTUFORF9NT1ZFX1RPX0JFR0lOTklOR19PRl9QQVJBR1JBUEgs
ICJNb3ZlVG9CZWdpbm5pbmdPZlBhcmFncmFwaCIgfSwKLSAgICB7IEVXS19FRElUT1JfQ09NTUFO
RF9NT1ZFX1RPX0VORF9PRl9QQVJBR1JBUEgsICJNb3ZlVG9FbmRPZlBhcmFncmFwaCIgfSwKLSAg
ICB7IEVXS19FRElUT1JfQ09NTUFORF9NT1ZFX1RPX0JFR0lOTklOR19PRl9ET0NVTUVOVCwgIk1v
dmVUb0JlZ2lubmluZ09mRG9jdW1lbnQiIH0sCi0gICAgeyBFV0tfRURJVE9SX0NPTU1BTkRfTU9W
RV9UT19FTkRfT0ZfRE9DVU1FTlQsICJNb3ZlVG9FbmRPZkRvY3VtZW50IiB9LAotICAgIHsgRVdL
X0VESVRPUl9DT01NQU5EX1NFTEVDVF9OT05FLCAiU2VsZWN0Tm9uZSIgfSwKLSAgICB7IEVXS19F
RElUT1JfQ09NTUFORF9TRUxFQ1RfQUxMLCAiU2VsZWN0QWxsIiB9LAotICAgIHsgRVdLX0VESVRP
Ul9DT01NQU5EX1NFTEVDVF9QQVJBR1JBUEgsICJTZWxlY3RQYXJhZ3JhcGgiIH0sCi0gICAgeyBF
V0tfRURJVE9SX0NPTU1BTkRfU0VMRUNUX1NFTlRFTkNFLCAiU2VsZWN0U2VudGVuY2UiIH0sCi0g
ICAgeyBFV0tfRURJVE9SX0NPTU1BTkRfU0VMRUNUX0xJTkUsICJTZWxlY3RMaW5lIiB9LAotICAg
IHsgRVdLX0VESVRPUl9DT01NQU5EX1NFTEVDVF9XT1JELCAiU2VsZWN0V29yZCIgfSwKLSAgICB7
IEVXS19FRElUT1JfQ09NTUFORF9TRUxFQ1RfTkVYVF9DSEFSLCAiTW92ZUZvcndhcmRBbmRNb2Rp
ZnlTZWxlY3Rpb24iIH0sCi0gICAgeyBFV0tfRURJVE9SX0NPTU1BTkRfU0VMRUNUX1BSRVZJT1VT
X0NIQVIsICJNb3ZlQmFja3dhcmRBbmRNb2RpZnlTZWxlY3Rpb24iIH0sCi0gICAgeyBFV0tfRURJ
VE9SX0NPTU1BTkRfU0VMRUNUX05FWFRfV09SRCwgIk1vdmVXb3JkRm9yd2FyZEFuZE1vZGlmeVNl
bGVjdGlvbiIgfSwKLSAgICB7IEVXS19FRElUT1JfQ09NTUFORF9TRUxFQ1RfUFJFVklPVVNfV09S
RCwgIk1vdmVXb3JkQmFja3dhcmRBbmRNb2RpZnlTZWxlY3Rpb24iIH0sCi0gICAgeyBFV0tfRURJ
VE9SX0NPTU1BTkRfU0VMRUNUX05FWFRfTElORSwgIk1vdmVEb3duQW5kTW9kaWZ5U2VsZWN0aW9u
IiB9LAotICAgIHsgRVdLX0VESVRPUl9DT01NQU5EX1NFTEVDVF9QUkVWSU9VU19MSU5FLCAiTW92
ZVVwQW5kTW9kaWZ5U2VsZWN0aW9uIiB9LAotICAgIHsgRVdLX0VESVRPUl9DT01NQU5EX1NFTEVD
VF9TVEFSVF9PRl9MSU5FLCAiTW92ZVRvQmVnaW5uaW5nT2ZMaW5lQW5kTW9kaWZ5U2VsZWN0aW9u
IiB9LAotICAgIHsgRVdLX0VESVRPUl9DT01NQU5EX1NFTEVDVF9FTkRfT0ZfTElORSwgIk1vdmVU
b0VuZE9mTGluZUFuZE1vZGlmeVNlbGVjdGlvbiIgfSwKLSAgICB7IEVXS19FRElUT1JfQ09NTUFO
RF9TRUxFQ1RfU1RBUlRfT0ZfUEFSQUdSQVBILCAiTW92ZVRvQmVnaW5uaW5nT2ZQYXJhZ3JhcGhB
bmRNb2RpZnlTZWxlY3Rpb24iIH0sCi0gICAgeyBFV0tfRURJVE9SX0NPTU1BTkRfU0VMRUNUX0VO
RF9PRl9QQVJBR1JBUEgsICJNb3ZlVG9FbmRPZlBhcmFncmFwaEFuZE1vZGlmeVNlbGVjdGlvbiIg
fSwKLSAgICB7IEVXS19FRElUT1JfQ09NTUFORF9TRUxFQ1RfU1RBUlRfT0ZfRE9DVU1FTlQsICJN
b3ZlVG9CZWdpbm5pbmdPZkRvY3VtZW50QW5kTW9kaWZ5U2VsZWN0aW9uIiB9LAotICAgIHsgRVdL
X0VESVRPUl9DT01NQU5EX1NFTEVDVF9FTkRfT0ZfRE9DVU1FTlQsICJNb3ZlVG9FbmRPZkRvY3Vt
ZW50QW5kTW9kaWZ5U2VsZWN0aW9uIiB9LAotICAgIHsgRVdLX0VESVRPUl9DT01NQU5EX0RFTEVU
RV9XT1JEX0JBQ0tXQVJELCAiRGVsZXRlV29yZEJhY2t3YXJkIiB9LAotICAgIHsgRVdLX0VESVRP
Ul9DT01NQU5EX0RFTEVURV9XT1JEX0ZPUldBUkQsICJEZWxldGVXb3JkRm9yd2FyZCIgfSwKLSAg
ICB7IEVXS19FRElUT1JfQ09NTUFORF9OT05FLCAwIH0gLy8gRVdLX0VESVRPUl9DT01NQU5EX05P
TkUgbXVzdCBiZSB0aGUgbGFzdCBlbGVtZW50LgotfTsKLQotLyoqCi0gKiBAYnJpZWYgUHJpdmF0
ZSBkYXRhIHRoYXQgaXMgdXNlZCBpbnRlcm5hbGx5IGJ5IEVGTCBXZWJLaXQKLSAqIGFuZCBzaG91
bGQgbmV2ZXIgYmUgbW9kaWZpZWQgZnJvbSBvdXRzaWRlLgotICoKLSAqIEBpbnRlcm5hbAotICov
Ci1zdHJ1Y3QgX0V3a19WaWV3X1ByaXZhdGVfRGF0YSB7Ci0gICAgT3duUHRyPFdlYkNvcmU6OlBh
Z2U+IHBhZ2U7Ci0gICAgV2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHMgdmlld3BvcnRBcmd1bWVu
dHM7Ci0gICAgRXdrX0hpc3RvcnkqIGhpc3Rvcnk7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNv
cmU6OkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0PiBhY2NlbGVyYXRlZENvbXBvc2l0aW5n
Q29udGV4dDsKLSNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKLSAgICBXZWJDb3JlOjpDb2xv
ckNob29zZXJDbGllbnQqIGNvbG9yQ2hvb3NlckNsaWVudDsKLSNlbmRpZgotICAgIHN0cnVjdCB7
Ci0gICAgICAgIEV3a19NZW51IG1lbnU7Ci0gICAgICAgIFdlYkNvcmU6OlBvcHVwTWVudUNsaWVu
dCogbWVudUNsaWVudDsKLSAgICB9IHBvcHVwOwotICAgIHVuc2lnbmVkIGludCBpbWg7IC8qKjwg
aW5wdXQgbWV0aG9kIGhpbnRzICovCi0gICAgc3RydWN0IHsKLSAgICAgICAgYm9vbCB2aWV3Q2xl
YXJlZCA6IDE7Ci0gICAgICAgIGJvb2wgbmVlZFRvdWNoRXZlbnRzIDogMTsKLSAgICAgICAgYm9v
bCBoYXNEaXNwbGF5ZWRNaXhlZENvbnRlbnQgOiAxOwotICAgICAgICBib29sIGhhc1J1bk1peGVk
Q29udGVudCA6IDE7Ci0gICAgfSBmbGFnczsKLSAgICBzdHJ1Y3QgewotICAgICAgICBjb25zdCBj
aGFyKiB1c2VyQWdlbnQ7Ci0gICAgICAgIGNvbnN0IGNoYXIqIHVzZXJTdHlsZXNoZWV0OwotICAg
ICAgICBjb25zdCBjaGFyKiBlbmNvZGluZ0RlZmF1bHQ7Ci0gICAgICAgIGNvbnN0IGNoYXIqIGVu
Y29kaW5nQ3VzdG9tOwotICAgICAgICBjb25zdCBjaGFyKiB0aGVtZTsKLSAgICAgICAgY29uc3Qg
Y2hhciogbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoOwotICAgICAgICBpbnQgZm9udE1pbmltdW1T
aXplOwotICAgICAgICBpbnQgZm9udE1pbmltdW1Mb2dpY2FsU2l6ZTsKLSAgICAgICAgaW50IGZv
bnREZWZhdWx0U2l6ZTsKLSAgICAgICAgaW50IGZvbnRNb25vc3BhY2VTaXplOwotICAgICAgICBj
b25zdCBjaGFyKiBmb250U3RhbmRhcmQ7Ci0gICAgICAgIGNvbnN0IGNoYXIqIGZvbnRDdXJzaXZl
OwotICAgICAgICBjb25zdCBjaGFyKiBmb250TW9ub3NwYWNlOwotICAgICAgICBjb25zdCBjaGFy
KiBmb250RmFudGFzeTsKLSAgICAgICAgY29uc3QgY2hhciogZm9udFNlcmlmOwotICAgICAgICBj
b25zdCBjaGFyKiBmb250U2Fuc1NlcmlmOwotICAgICAgICBib29sIGF1dG9Mb2FkSW1hZ2VzIDog
MTsKLSAgICAgICAgYm9vbCBhdXRvU2hyaW5rSW1hZ2VzIDogMTsKLSAgICAgICAgYm9vbCBlbmFi
bGVBdXRvUmVzaXplV2luZG93IDogMTsKLSAgICAgICAgYm9vbCBlbmFibGVEZXZlbG9wZXJFeHRy
YXMgOiAxOwotICAgICAgICBib29sIGVuYWJsZVNjcmlwdHMgOiAxOwotICAgICAgICBib29sIGVu
YWJsZVBsdWdpbnMgOiAxOwotICAgICAgICBib29sIGVuYWJsZUZyYW1lRmxhdHRlbmluZyA6IDE7
Ci0jaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQotICAgICAgICBib29sIGVuYWJsZUZ1bGxzY3Jl
ZW4gOiAxOwotI2VuZGlmCi0gICAgICAgIGJvb2wgZW5jb2RpbmdEZXRlY3RvciA6IDE7Ci0gICAg
ICAgIGJvb2wgaHlwZXJsaW5rQXVkaXRpbmdFbmFibGVkIDogMTsKLSAgICAgICAgYm9vbCBzY3Jp
cHRzQ2FuT3BlbldpbmRvd3MgOiAxOwotICAgICAgICBib29sIHNjcmlwdHNDYW5DbG9zZVdpbmRv
d3MgOiAxOwotI2lmIEVOQUJMRShWSURFT19UUkFDSykKLSAgICAgICAgYm9vbCBzaG91bGREaXNw
bGF5Q2FwdGlvbnMgOiAxOwotICAgICAgICBib29sIHNob3VsZERpc3BsYXlTdWJ0aXRsZXMgOiAx
OwotICAgICAgICBib29sIHNob3VsZERpc3BsYXlUZXh0RGVzY3JpcHRpb25zOiAxOwotI2VuZGlm
Ci0gICAgICAgIGJvb2wgc2NyaXB0c0NhbkFjY2Vzc0NsaXBib2FyZCA6IDE7Ci0gICAgICAgIGJv
b2wgcmVzaXphYmxlVGV4dGFyZWFzIDogMTsKLSAgICAgICAgYm9vbCBwcml2YXRlQnJvd3Npbmcg
OiAxOwotICAgICAgICBib29sIGNhcmV0QnJvd3NpbmcgOiAxOwotICAgICAgICBib29sIHNwYXRp
YWxOYXZpZ2F0aW9uIDogMTsKLSAgICAgICAgYm9vbCBsb2NhbFN0b3JhZ2UgOiAxOwotICAgICAg
ICBib29sIG9mZmxpbmVBcHBDYWNoZSA6IDE7Ci0gICAgICAgIGJvb2wgcGFnZUNhY2hlIDogMTsK
LSAgICAgICAgYm9vbCBlbmFibGVYU1NBdWRpdG9yIDogMTsKLSAgICAgICAgYm9vbCB3ZWJHTEVu
YWJsZWQgOiAxOwotICAgICAgICBib29sIHRhYnNUb0xpbmtzIDogMTsKLSAgICAgICAgc3RydWN0
IHsKLSAgICAgICAgICAgIGZsb2F0IG1pblNjYWxlOwotICAgICAgICAgICAgZmxvYXQgbWF4U2Nh
bGU7Ci0gICAgICAgICAgICBFaW5hX0Jvb2wgdXNlclNjYWxhYmxlIDogMTsKLSAgICAgICAgfSB6
b29tUmFuZ2U7Ci0gICAgICAgIGRvdWJsZSBkb21UaW1lckludGVydmFsOwotICAgICAgICBib29s
IGFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzIDogMTsKLSAgICAgICAgYm9vbCBhbGxv
d0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMgOiAxOwotICAgIH0gc2V0dGluZ3M7Ci0gICAgc3RydWN0
IHsKLSAgICAgICAgc3RydWN0IHsKLSAgICAgICAgICAgIGRvdWJsZSBzdGFydDsKLSAgICAgICAg
ICAgIGRvdWJsZSBlbmQ7Ci0gICAgICAgICAgICBkb3VibGUgZHVyYXRpb247Ci0gICAgICAgIH0g
dGltZTsKLSAgICAgICAgc3RydWN0IHsKLSAgICAgICAgICAgIGZsb2F0IHN0YXJ0OwotICAgICAg
ICAgICAgZmxvYXQgZW5kOwotICAgICAgICAgICAgZmxvYXQgcmFuZ2U7Ci0gICAgICAgIH0gem9v
bTsKLSAgICAgICAgc3RydWN0IHsKLSAgICAgICAgICAgIEV2YXNfQ29vcmQgeCwgeTsKLSAgICAg
ICAgfSBjZW50ZXI7Ci0gICAgICAgIEVjb3JlX0FuaW1hdG9yKiBhbmltYXRvcjsKLSAgICB9IGFu
aW1hdGVkWm9vbTsKLSAgICBjb25zdCBjaGFyKiBjdXJzb3JHcm91cDsKLSAgICBFdmFzX09iamVj
dCogY3Vyc29yT2JqZWN0OwotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgRXZhc19PYmplY3Qq
IGluc3BlY3RvclZpZXc7Ci0jZW5kaWYKLSNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKLSAgICBF
d2tfQ29udGV4dF9NZW51KiBjb250ZXh0TWVudTsKLSNlbmRpZgotfTsKLQotI2lmbmRlZiBFV0tf
VFlQRV9DSEVDSwotI2RlZmluZSBFV0tfVklFV19UWVBFX0NIRUNLKGV3a1ZpZXcsIC4uLikgZG8g
eyB9IHdoaWxlICgwKQotI2Vsc2UKLSNkZWZpbmUgRVdLX1ZJRVdfVFlQRV9DSEVDSyhld2tWaWV3
LCAuLi4pIFwKLSAgICBkbyB7IFwKLSAgICAgICAgY29uc3QgY2hhciogX3RtcF9vdHlwZSA9IGV2
YXNfb2JqZWN0X3R5cGVfZ2V0KGV3a1ZpZXcpOyBcCi0gICAgICAgIGNvbnN0IEV2YXNfU21hcnQq
IF90bXBfcyA9IGV2YXNfb2JqZWN0X3NtYXJ0X3NtYXJ0X2dldChld2tWaWV3KTsgXAotICAgICAg
ICBpZiAoRUlOQV9VTkxJS0VMWSghX3RtcF9zKSkgeyBcCi0gICAgICAgICAgICBFSU5BX0xPR19D
UklUIFwKLSAgICAgICAgICAgICAgICAoIiVwICglcykgaXMgbm90IGEgc21hcnQgb2JqZWN0ISIs
IGV3a1ZpZXcsIFwKLSAgICAgICAgICAgICAgICBfdG1wX290eXBlID8gX3RtcF9vdHlwZSA6ICIo
bnVsbCkiKTsgXAotICAgICAgICAgICAgcmV0dXJuIF9fVkFfQVJHU19fOyBcCi0gICAgICAgIH0g
XAotICAgICAgICBjb25zdCBFdmFzX1NtYXJ0X0NsYXNzKiBfdG1wX3NjID0gZXZhc19zbWFydF9j
bGFzc19nZXQoX3RtcF9zKTsgXAotICAgICAgICBpZiAoRUlOQV9VTkxJS0VMWSghX3RtcF9zYykp
IHsgXAotICAgICAgICAgICAgRUlOQV9MT0dfQ1JJVCBcCi0gICAgICAgICAgICAgICAgKCIlcCAo
JXMpIGlzIG5vdCBhIHNtYXJ0IG9iamVjdCEiLCBld2tWaWV3LCBcCi0gICAgICAgICAgICAgICAg
X3RtcF9vdHlwZSA/IF90bXBfb3R5cGUgOiAiKG51bGwpIik7IFwKLSAgICAgICAgICAgIHJldHVy
biBfX1ZBX0FSR1NfXzsgXAotICAgICAgICB9IFwKLSAgICAgICAgaWYgKEVJTkFfVU5MSUtFTFko
X3RtcF9zYy0+ZGF0YSAhPSBld2tWaWV3VHlwZVN0cmluZykpIHsgXAotICAgICAgICAgICAgRUlO
QV9MT0dfQ1JJVCBcCi0gICAgICAgICAgICAgICAgKCIlcCAoJXMpIGlzIG5vdCBvZiBhbiBld2tf
dmlldyAobmVlZCAlcCwgZ290ICVwKSEiLCBcCi0gICAgICAgICAgICAgICAgZXdrVmlldywgX3Rt
cF9vdHlwZSA/IF90bXBfb3R5cGUgOiAiKG51bGwpIiwgXAotICAgICAgICAgICAgICAgIGV3a1Zp
ZXdUeXBlU3RyaW5nLCBfdG1wX3NjLT5kYXRhKTsgXAotICAgICAgICAgICAgcmV0dXJuIF9fVkFf
QVJHU19fOyBcCi0gICAgICAgIH0gXAotICAgIH0gd2hpbGUgKDApCi0jZW5kaWYKLQotI2RlZmlu
ZSBFV0tfVklFV19TRF9HRVQoZXdrVmlldywgcG9pbnRlcikgXAotICAgIEV3a19WaWV3X1NtYXJ0
X0RhdGEqIHBvaW50ZXIgPSBzdGF0aWNfY2FzdDxFd2tfVmlld19TbWFydF9EYXRhKj4oZXZhc19v
YmplY3Rfc21hcnRfZGF0YV9nZXQoZXdrVmlldykpCi0KLSNkZWZpbmUgRVdLX1ZJRVdfU0RfR0VU
X09SX1JFVFVSTihld2tWaWV3LCBwb2ludGVyLCAuLi4pIFwKLSAgICBFV0tfVklFV19UWVBFX0NI
RUNLKGV3a1ZpZXcsIF9fVkFfQVJHU19fKTsgXAotICAgIEVXS19WSUVXX1NEX0dFVChld2tWaWV3
LCBwb2ludGVyKTsgXAotICAgIGlmICghcG9pbnRlcikgeyBcCi0gICAgICAgIENSSVRJQ0FMKCJu
byBzbWFydCBkYXRhIGZvciBvYmplY3QgJXAgKCVzKSIsIFwKLSAgICAgICAgICAgICAgICAgZXdr
VmlldywgZXZhc19vYmplY3RfdHlwZV9nZXQoZXdrVmlldykpOyBcCi0gICAgICAgIHJldHVybiBf
X1ZBX0FSR1NfXzsgXAotICAgIH0KLQotI2RlZmluZSBFV0tfVklFV19QUklWX0dFVChzbWFydERh
dGEsIHBvaW50ZXIpIFwKLSAgICBFd2tfVmlld19Qcml2YXRlX0RhdGEqIHBvaW50ZXIgPSBzbWFy
dERhdGEtPl9wcml2Ci0KLSNkZWZpbmUgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0
RGF0YSwgcG9pbnRlciwgLi4uKSBcCi0gICAgRVdLX1ZJRVdfUFJJVl9HRVQoc21hcnREYXRhLCBw
b2ludGVyKTsgXAotICAgIGlmICghcG9pbnRlcikgeyBcCi0gICAgICAgIENSSVRJQ0FMKCJubyBw
cml2YXRlIGRhdGEgZm9yIG9iamVjdCAlcCAoJXMpIiwgXAotICAgICAgICAgICAgICAgICBzbWFy
dERhdGEtPnNlbGYsIGV2YXNfb2JqZWN0X3R5cGVfZ2V0KHNtYXJ0RGF0YS0+c2VsZikpOyBcCi0g
ICAgICAgIHJldHVybiBfX1ZBX0FSR1NfXzsgXAotICAgIH0KLQotc3RhdGljIHZvaWQgX2V3a192
aWV3X3NtYXJ0X2NoYW5nZWQoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhKQotewotICAg
IGlmIChzbWFydERhdGEtPmNoYW5nZWQuYW55KQotICAgICAgICByZXR1cm47Ci0gICAgc21hcnRE
YXRhLT5jaGFuZ2VkLmFueSA9IHRydWU7Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2hhbmdlZChz
bWFydERhdGEtPnNlbGYpOwotfQotCi0vLyBEZWZhdWx0IEV2ZW50IEhhbmRsaW5nIC8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLXN0YXRpYyBFaW5hX0Jvb2wg
X2V3a192aWV3X3NtYXJ0X2ZvY3VzX2luKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSkK
LXsKLSAgICBFV0tfVklFV19QUklWX0dFVChzbWFydERhdGEsIHByaXYpOwotICAgIFdlYkNvcmU6
OkZvY3VzQ29udHJvbGxlciogZm9jdXNDb250cm9sbGVyID0gJnByaXYtPnBhZ2UtPmZvY3VzQ29u
dHJvbGxlcigpOwotICAgIERCRygiZXdrVmlldz0lcCwgZm9jdXNDb250cm9sbGVyPSVwIiwgc21h
cnREYXRhLT5zZWxmLCBmb2N1c0NvbnRyb2xsZXIpOwotCi0gICAgZm9jdXNDb250cm9sbGVyLT5z
ZXRBY3RpdmUodHJ1ZSk7Ci0gICAgZm9jdXNDb250cm9sbGVyLT5zZXRGb2N1c2VkKHRydWUpOwot
ICAgIHJldHVybiB0cnVlOwotfQotCi1zdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFydF9m
b2N1c19vdXQoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhKQotewotICAgIEVXS19WSUVX
X1BSSVZfR0VUKHNtYXJ0RGF0YSwgcHJpdik7Ci0gICAgV2ViQ29yZTo6Rm9jdXNDb250cm9sbGVy
KiBmb2N1c0NvbnRyb2xsZXIgPSAmcHJpdi0+cGFnZS0+Zm9jdXNDb250cm9sbGVyKCk7Ci0gICAg
REJHKCJld2tWaWV3PSVwLCBmYz0lcCIsIHNtYXJ0RGF0YS0+c2VsZiwgZm9jdXNDb250cm9sbGVy
KTsKLQotICAgIGZvY3VzQ29udHJvbGxlci0+c2V0QWN0aXZlKGZhbHNlKTsKLSAgICBmb2N1c0Nv
bnRyb2xsZXItPnNldEZvY3VzZWQoZmFsc2UpOwotICAgIHJldHVybiB0cnVlOwotfQotCi1zdGF0
aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFydF9tb3VzZV93aGVlbChFd2tfVmlld19TbWFydF9E
YXRhKiBzbWFydERhdGEsIGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfV2hlZWwqIHdoZWVsRXZlbnQp
Ci17Ci0gICAgcmV0dXJuIGV3a19mcmFtZV9mZWVkX21vdXNlX3doZWVsKHNtYXJ0RGF0YS0+bWFp
bl9mcmFtZSwgd2hlZWxFdmVudCk7Ci19Ci0KLXN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3Nt
YXJ0X21vdXNlX2Rvd24oRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhLCBjb25zdCBFdmFz
X0V2ZW50X01vdXNlX0Rvd24qIGRvd25FdmVudCkKLXsKLSAgICByZXR1cm4gZXdrX2ZyYW1lX2Zl
ZWRfbW91c2VfZG93bihzbWFydERhdGEtPm1haW5fZnJhbWUsIGRvd25FdmVudCk7Ci19Ci0KLXN0
YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X21vdXNlX3VwKEV3a19WaWV3X1NtYXJ0X0Rh
dGEqIHNtYXJ0RGF0YSwgY29uc3QgRXZhc19FdmVudF9Nb3VzZV9VcCogdXBFdmVudCkKLXsKLSAg
ICByZXR1cm4gZXdrX2ZyYW1lX2ZlZWRfbW91c2VfdXAoc21hcnREYXRhLT5tYWluX2ZyYW1lLCB1
cEV2ZW50KTsKLX0KLQotc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfbW91c2VfbW92
ZShFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEsIGNvbnN0IEV2YXNfRXZlbnRfTW91c2Vf
TW92ZSogbW92ZUV2ZW50KQotewotICAgIHJldHVybiBld2tfZnJhbWVfZmVlZF9tb3VzZV9tb3Zl
KHNtYXJ0RGF0YS0+bWFpbl9mcmFtZSwgbW92ZUV2ZW50KTsKLX0KLQotc3RhdGljIEVpbmFfQm9v
bCBfZXdrX3ZpZXdfc21hcnRfa2V5X2Rvd24oRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRh
LCBjb25zdCBFdmFzX0V2ZW50X0tleV9Eb3duKiBkb3duRXZlbnQpCi17Ci0gICAgRXZhc19PYmpl
Y3QqIGZyYW1lID0gZXdrX3ZpZXdfZnJhbWVfZm9jdXNlZF9nZXQoc21hcnREYXRhLT5zZWxmKTsK
LQotICAgIGlmICghZnJhbWUpCi0gICAgICAgIGZyYW1lID0gc21hcnREYXRhLT5tYWluX2ZyYW1l
OwotCi0gICAgcmV0dXJuIGV3a19mcmFtZV9mZWVkX2tleV9kb3duKGZyYW1lLCBkb3duRXZlbnQp
OwotfQotCi1zdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFydF9rZXlfdXAoRXdrX1ZpZXdf
U21hcnRfRGF0YSogc21hcnREYXRhLCBjb25zdCBFdmFzX0V2ZW50X0tleV9VcCogdXBFdmVudCkK
LXsKLSAgICBFdmFzX09iamVjdCogZnJhbWUgPSBld2tfdmlld19mcmFtZV9mb2N1c2VkX2dldChz
bWFydERhdGEtPnNlbGYpOwotCi0gICAgaWYgKCFmcmFtZSkKLSAgICAgICAgZnJhbWUgPSBzbWFy
dERhdGEtPm1haW5fZnJhbWU7Ci0KLSAgICByZXR1cm4gZXdrX2ZyYW1lX2ZlZWRfa2V5X3VwKGZy
YW1lLCB1cEV2ZW50KTsKLX0KLQotc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X2FkZF9jb25z
b2xlX21lc3NhZ2UoRXdrX1ZpZXdfU21hcnRfRGF0YSosIGNvbnN0IGNoYXIqIG1lc3NhZ2UsIHVu
c2lnbmVkIGludCBsaW5lTnVtYmVyLCBjb25zdCBjaGFyKiBzb3VyY2VJRCkKLXsKLSAgICBJTkZP
KCJjb25zb2xlIG1lc3NhZ2U6ICVzIEAlZDogJXNcbiIsIHNvdXJjZUlELCBsaW5lTnVtYmVyLCBt
ZXNzYWdlKTsKLX0KLQotc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X3J1bl9qYXZhc2NyaXB0
X2FsZXJ0KEV3a19WaWV3X1NtYXJ0X0RhdGEqLCBFdmFzX09iamVjdCogLypmcmFtZSovLCBjb25z
dCBjaGFyKiBtZXNzYWdlKQotewotICAgIElORk8oImphdmFzY3JpcHQgYWxlcnQ6ICVzXG4iLCBt
ZXNzYWdlKTsKLX0KLQotc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfcnVuX2phdmFz
Y3JpcHRfY29uZmlybShFd2tfVmlld19TbWFydF9EYXRhKiwgRXZhc19PYmplY3QqIC8qZnJhbWUq
LywgY29uc3QgY2hhciogbWVzc2FnZSkKLXsKLSAgICBJTkZPKCJqYXZhc2NyaXB0IGNvbmZpcm06
ICVzIiwgbWVzc2FnZSk7Ci0gICAgSU5GTygiamF2YXNjcmlwdCBjb25maXJtIChIQVJEIENPREVE
KT8gWUVTIik7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXN0YXRpYyBFaW5hX0Jvb2wgX2V3a192
aWV3X3NtYXJ0X3J1bl9iZWZvcmVfdW5sb2FkX2NvbmZpcm0oRXdrX1ZpZXdfU21hcnRfRGF0YSos
IEV2YXNfT2JqZWN0KiAvKmZyYW1lKi8sIGNvbnN0IGNoYXIqIG1lc3NhZ2UpCi17Ci0gICAgSU5G
TygiYmVmb3JlIHVubG9hZCBjb25maXJtOiAlcyIsIG1lc3NhZ2UpOwotICAgIHJldHVybiB0cnVl
OwotfQotCi1zdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFydF9zaG91bGRfaW50ZXJydXB0
X2phdmFzY3JpcHQoRXdrX1ZpZXdfU21hcnRfRGF0YSopCi17Ci0gICAgSU5GTygic2hvdWxkIGlu
dGVycnVwdCBqYXZhc2NyaXB0P1xuIgotICAgICAgICAiXHQoSEFSRCBDT0RFRCkgTk8iKTsKLSAg
ICByZXR1cm4gZmFsc2U7Ci19Ci0KLXN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X3J1
bl9qYXZhc2NyaXB0X3Byb21wdChFd2tfVmlld19TbWFydF9EYXRhKiwgRXZhc19PYmplY3QqIC8q
ZnJhbWUqLywgY29uc3QgY2hhciogbWVzc2FnZSwgY29uc3QgY2hhciogZGVmYXVsdFZhbHVlLCBj
b25zdCBjaGFyKiogdmFsdWUpCi17Ci0gICAgKnZhbHVlID0gZWluYV9zdHJpbmdzaGFyZV9hZGQo
InRlc3QiKTsKLSAgICBFaW5hX0Jvb2wgcmVzdWx0ID0gdHJ1ZTsKLSAgICBJTkZPKCJqYXZhc2Ny
aXB0IHByb21wdDpcbiIKLSAgICAgICAgIlx0ICAgICAgbWVzc2FnZTogJXNcbiIKLSAgICAgICAg
Ilx0ZGVmYXVsdCB2YWx1ZTogJXNcbiIKLSAgICAgICAgIlx0Z2l2aW5nIGFuc3dlcjogJXNcbiIK
LSAgICAgICAgIlx0ICAgICAgIGJ1dHRvbjogJXMiLCBtZXNzYWdlLCBkZWZhdWx0VmFsdWUsICp2
YWx1ZSwgcmVzdWx0ID8gIm9rIiA6ICJjYW5jZWwiKTsKLQotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci0KLS8vIEV2ZW50IEhhbmRsaW5nIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLwotc3RhdGljIHZvaWQgX2V3a192aWV3X29uX2ZvY3VzX2luKHZv
aWQqIGRhdGEsIEV2YXMqLCBFdmFzX09iamVjdCosIHZvaWQqKQotewotICAgIEV3a19WaWV3X1Nt
YXJ0X0RhdGEqIHNtYXJ0RGF0YSA9IHN0YXRpY19jYXN0PEV3a19WaWV3X1NtYXJ0X0RhdGEqPihk
YXRhKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzbWFydERhdGEtPmFwaSk7Ci0g
ICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc21hcnREYXRhLT5hcGktPmZvY3VzX2luKTsK
LSAgICBzbWFydERhdGEtPmFwaS0+Zm9jdXNfaW4oc21hcnREYXRhKTsKLX0KLQotc3RhdGljIHZv
aWQgX2V3a192aWV3X29uX2ZvY3VzX291dCh2b2lkKiBkYXRhLCBFdmFzKiwgRXZhc19PYmplY3Qq
LCB2b2lkKikKLXsKLSAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEgPSBzdGF0aWNf
Y2FzdDxFd2tfVmlld19TbWFydF9EYXRhKj4oZGF0YSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVM
TF9SRVRVUk4oc21hcnREYXRhLT5hcGkpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJO
KHNtYXJ0RGF0YS0+YXBpLT5mb2N1c19vdXQpOwotICAgIHNtYXJ0RGF0YS0+YXBpLT5mb2N1c19v
dXQoc21hcnREYXRhKTsKLX0KLQotc3RhdGljIHZvaWQgX2V3a192aWV3X29uX21vdXNlX3doZWVs
KHZvaWQqIGRhdGEsIEV2YXMqLCBFdmFzX09iamVjdCosIHZvaWQqIGV2ZW50SW5mbykKLXsKLSAg
ICBFdmFzX0V2ZW50X01vdXNlX1doZWVsKiB3aGVlbEV2ZW50ID0gc3RhdGljX2Nhc3Q8RXZhc19F
dmVudF9Nb3VzZV9XaGVlbCo+KGV2ZW50SW5mbyk7Ci0gICAgRXdrX1ZpZXdfU21hcnRfRGF0YSog
c21hcnREYXRhID0gc3RhdGljX2Nhc3Q8RXdrX1ZpZXdfU21hcnRfRGF0YSo+KGRhdGEpOwotICAg
IEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNtYXJ0RGF0YS0+YXBpKTsKLSAgICBFSU5BX1NB
RkVUWV9PTl9OVUxMX1JFVFVSTihzbWFydERhdGEtPmFwaS0+bW91c2Vfd2hlZWwpOwotICAgIHNt
YXJ0RGF0YS0+YXBpLT5tb3VzZV93aGVlbChzbWFydERhdGEsIHdoZWVsRXZlbnQpOwotfQotCi1z
dGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25fbW91c2VfZG93bih2b2lkKiBkYXRhLCBFdmFzKiwgRXZh
c19PYmplY3QqLCB2b2lkKiBldmVudEluZm8pCi17Ci0gICAgRXZhc19FdmVudF9Nb3VzZV9Eb3du
KiBkb3duRXZlbnQgPSBzdGF0aWNfY2FzdDxFdmFzX0V2ZW50X01vdXNlX0Rvd24qPihldmVudElu
Zm8pOwotICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSA9IHN0YXRpY19jYXN0PEV3
a19WaWV3X1NtYXJ0X0RhdGEqPihkYXRhKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVS
TihzbWFydERhdGEtPmFwaSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc21hcnRE
YXRhLT5hcGktPm1vdXNlX2Rvd24pOwotICAgIHNtYXJ0RGF0YS0+YXBpLT5tb3VzZV9kb3duKHNt
YXJ0RGF0YSwgZG93bkV2ZW50KTsKLX0KLQotc3RhdGljIHZvaWQgX2V3a192aWV3X29uX21vdXNl
X3VwKHZvaWQqIGRhdGEsIEV2YXMqLCBFdmFzX09iamVjdCosIHZvaWQqIGV2ZW50SW5mbykKLXsK
LSAgICBFdmFzX0V2ZW50X01vdXNlX1VwKiB1cEV2ZW50ID0gc3RhdGljX2Nhc3Q8RXZhc19FdmVu
dF9Nb3VzZV9VcCo+KGV2ZW50SW5mbyk7Ci0gICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnRE
YXRhID0gc3RhdGljX2Nhc3Q8RXdrX1ZpZXdfU21hcnRfRGF0YSo+KGRhdGEpOwotICAgIEVJTkFf
U0FGRVRZX09OX05VTExfUkVUVVJOKHNtYXJ0RGF0YS0+YXBpKTsKLSAgICBFSU5BX1NBRkVUWV9P
Tl9OVUxMX1JFVFVSTihzbWFydERhdGEtPmFwaS0+bW91c2VfdXApOwotICAgIHNtYXJ0RGF0YS0+
YXBpLT5tb3VzZV91cChzbWFydERhdGEsIHVwRXZlbnQpOwotfQotCi1zdGF0aWMgdm9pZCBfZXdr
X3ZpZXdfb25fbW91c2VfbW92ZSh2b2lkKiBkYXRhLCBFdmFzKiwgRXZhc19PYmplY3QqLCB2b2lk
KiBldmVudEluZm8pCi17Ci0gICAgRXZhc19FdmVudF9Nb3VzZV9Nb3ZlKiBtb3ZlRXZlbnQgPSBz
dGF0aWNfY2FzdDxFdmFzX0V2ZW50X01vdXNlX01vdmUqPihldmVudEluZm8pOwotICAgIEV3a19W
aWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSA9IHN0YXRpY19jYXN0PEV3a19WaWV3X1NtYXJ0X0Rh
dGEqPihkYXRhKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzbWFydERhdGEtPmFw
aSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc21hcnREYXRhLT5hcGktPm1vdXNl
X21vdmUpOwotICAgIHNtYXJ0RGF0YS0+YXBpLT5tb3VzZV9tb3ZlKHNtYXJ0RGF0YSwgbW92ZUV2
ZW50KTsKLX0KLQotc3RhdGljIHZvaWQgX2V3a192aWV3X29uX2tleV9kb3duKHZvaWQqIGRhdGEs
IEV2YXMqLCBFdmFzX09iamVjdCosIHZvaWQqIGV2ZW50SW5mbykKLXsKLSAgICBFdmFzX0V2ZW50
X0tleV9Eb3duKiBkb3duRXZlbnQgPSBzdGF0aWNfY2FzdDxFdmFzX0V2ZW50X0tleV9Eb3duKj4o
ZXZlbnRJbmZvKTsKLSAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEgPSBzdGF0aWNf
Y2FzdDxFd2tfVmlld19TbWFydF9EYXRhKj4oZGF0YSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVM
TF9SRVRVUk4oc21hcnREYXRhLT5hcGkpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJO
KHNtYXJ0RGF0YS0+YXBpLT5rZXlfZG93bik7Ci0gICAgc21hcnREYXRhLT5hcGktPmtleV9kb3du
KHNtYXJ0RGF0YSwgZG93bkV2ZW50KTsKLX0KLQotc3RhdGljIHZvaWQgX2V3a192aWV3X29uX2tl
eV91cCh2b2lkKiBkYXRhLCBFdmFzKiwgRXZhc19PYmplY3QqLCB2b2lkKiBldmVudEluZm8pCi17
Ci0gICAgRXZhc19FdmVudF9LZXlfVXAqIHVwRXZlbnQgPSBzdGF0aWNfY2FzdDxFdmFzX0V2ZW50
X0tleV9VcCo+KGV2ZW50SW5mbyk7Ci0gICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRh
ID0gc3RhdGljX2Nhc3Q8RXdrX1ZpZXdfU21hcnRfRGF0YSo+KGRhdGEpOwotICAgIEVJTkFfU0FG
RVRZX09OX05VTExfUkVUVVJOKHNtYXJ0RGF0YS0+YXBpKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9O
VUxMX1JFVFVSTihzbWFydERhdGEtPmFwaS0+a2V5X3VwKTsKLSAgICBzbWFydERhdGEtPmFwaS0+
a2V5X3VwKHNtYXJ0RGF0YSwgdXBFdmVudCk7Ci19Ci0KLXN0YXRpYyBFdmFzX1NtYXJ0X0NsYXNz
IF9wYXJlbnRfc2MgPSBFVkFTX1NNQVJUX0NMQVNTX0lOSVRfTlVMTDsKLQotc3RhdGljIEV3a19W
aWV3X1ByaXZhdGVfRGF0YSogX2V3a192aWV3X3ByaXZfbmV3KEV3a19WaWV3X1NtYXJ0X0RhdGEq
IHNtYXJ0RGF0YSkKLXsKLSAgICBFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYgPSBuZXcgRXdr
X1ZpZXdfUHJpdmF0ZV9EYXRhOwotICAgIG1lbXNldChwcml2LCAwLCBzaXplb2YoRXdrX1ZpZXdf
UHJpdmF0ZV9EYXRhKSk7Ci0gICAgQXRvbWljU3RyaW5nIHN0cmluZzsKLSAgICBXZWJDb3JlOjpV
UkwgdXJsOwotCi0gICAgV2ViQ29yZTo6UGFnZTo6UGFnZUNsaWVudHMgcGFnZUNsaWVudHM7Ci0g
ICAgcGFnZUNsaWVudHMuY2hyb21lQ2xpZW50ID0gbmV3IFdlYkNvcmU6OkNocm9tZUNsaWVudEVm
bChzbWFydERhdGEtPnNlbGYpOwotI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQotICAgIHBhZ2VD
bGllbnRzLmNvbnRleHRNZW51Q2xpZW50ID0gbmV3IFdlYkNvcmU6OkNvbnRleHRNZW51Q2xpZW50
RWZsOwotI2VuZGlmCi0gICAgcGFnZUNsaWVudHMuZWRpdG9yQ2xpZW50ID0gbmV3IFdlYkNvcmU6
OkVkaXRvckNsaWVudEVmbChzbWFydERhdGEtPnNlbGYpOwotICAgIHBhZ2VDbGllbnRzLmRyYWdD
bGllbnQgPSBuZXcgV2ViQ29yZTo6RHJhZ0NsaWVudEVmbDsKLSNpZiBFTkFCTEUoSU5TUEVDVE9S
KQotICAgIHBhZ2VDbGllbnRzLmluc3BlY3RvckNsaWVudCA9IG5ldyBXZWJDb3JlOjpJbnNwZWN0
b3JDbGllbnRFZmwoc21hcnREYXRhLT5zZWxmKTsKLSNlbmRpZgotICAgIHBhZ2VDbGllbnRzLmxv
YWRlckNsaWVudEZvck1haW5GcmFtZSA9IG5ldyBXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVm
bChzbWFydERhdGEtPnNlbGYpOwotICAgIHBhZ2VDbGllbnRzLnByb2dyZXNzVHJhY2tlckNsaWVu
dCA9IG5ldyBXZWJDb3JlOjpQcm9ncmVzc1RyYWNrZXJDbGllbnRFZmwoc21hcnREYXRhLT5zZWxm
KTsKLSAgICBwcml2LT5wYWdlID0gYWRvcHRQdHIobmV3IFdlYkNvcmU6OlBhZ2UocGFnZUNsaWVu
dHMpKTsKLQotI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCi0gICAgV2ViQ29yZTo6cHJv
dmlkZURldmljZU1vdGlvblRvKHByaXYtPnBhZ2UuZ2V0KCksIG5ldyBXZWJDb3JlOjpEZXZpY2VN
b3Rpb25DbGllbnRFZmwpOwotICAgIFdlYkNvcmU6OnByb3ZpZGVEZXZpY2VPcmllbnRhdGlvblRv
KHByaXYtPnBhZ2UuZ2V0KCksIG5ldyBXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbkNsaWVudEVm
bCk7Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShWSUJSQVRJT04pCi0gICAgV2ViQ29yZTo6cHJvdmlk
ZVZpYnJhdGlvblRvKHByaXYtPnBhZ2UuZ2V0KCksIG5ldyBXZWJDb3JlOjpWaWJyYXRpb25DbGll
bnRFZmwoc21hcnREYXRhLT5zZWxmKSk7Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShCQVRURVJZX1NU
QVRVUykKLSAgICBXZWJDb3JlOjpwcm92aWRlQmF0dGVyeVRvKHByaXYtPnBhZ2UuZ2V0KCksIG5l
dyBCYXR0ZXJ5Q2xpZW50RWZsKHNtYXJ0RGF0YS0+c2VsZikpOwotI2VuZGlmCi0KLSNpZiBFTkFC
TEUoTkFWSUdBVE9SX0NPTlRFTlRfVVRJTFMpCi0gICAgV2ViQ29yZTo6cHJvdmlkZU5hdmlnYXRv
ckNvbnRlbnRVdGlsc1RvKHByaXYtPnBhZ2UuZ2V0KCksIHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29y
ZTo6TmF2aWdhdG9yQ29udGVudFV0aWxzQ2xpZW50RWZsPihzbWFydERhdGEtPnNlbGYpKTsKLSNl
bmRpZgotCi0jaWYgRU5BQkxFKEdFT0xPQ0FUSU9OKQotICAgIGlmIChEdW1wUmVuZGVyVHJlZVN1
cHBvcnRFZmw6OmR1bXBSZW5kZXJUcmVlTW9kZUVuYWJsZWQoKSkgewotICAgICAgICBXZWJDb3Jl
OjpHZW9sb2NhdGlvbkNsaWVudE1vY2sqIG1vY2sgPSBuZXcgV2ViQ29yZTo6R2VvbG9jYXRpb25D
bGllbnRNb2NrOwotICAgICAgICBXZWJDb3JlOjpwcm92aWRlR2VvbG9jYXRpb25Ubyhwcml2LT5w
YWdlLmdldCgpLCBtb2NrKTsKLSAgICAgICAgbW9jay0+c2V0Q29udHJvbGxlcihXZWJDb3JlOjpH
ZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmZyb20ocHJpdi0+cGFnZS5nZXQoKSkpOwotICAgIH0KLSNl
bmRpZgotCi0gICAgV2ViQ29yZTo6U2V0dGluZ3MmIHBhZ2VTZXR0aW5ncyA9IHByaXYtPnBhZ2Ut
PnNldHRpbmdzKCk7Ci0KLSAgICBXZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmVzIGxheW91dE1pbGVz
dG9uZXMgPSBXZWJDb3JlOjpEaWRGaXJzdExheW91dCB8IFdlYkNvcmU6OkRpZEZpcnN0VmlzdWFs
bHlOb25FbXB0eUxheW91dDsKLSAgICBwcml2LT5wYWdlLT5hZGRMYXlvdXRNaWxlc3RvbmVzKGxh
eW91dE1pbGVzdG9uZXMpOwotCi0gICAgLy8gRklYTUU6IE5vb25lIGlzIHN1cHBvc2VkIHRvIGRv
IHRoaXMgbWFudWFsbHkuCi0gICAgcHJpdi0+dmlld3BvcnRBcmd1bWVudHMud2lkdGggPSBXZWJD
b3JlOjpWaWV3cG9ydEFyZ3VtZW50czo6VmFsdWVBdXRvOwotICAgIHByaXYtPnZpZXdwb3J0QXJn
dW1lbnRzLmhlaWdodCA9IFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzOjpWYWx1ZUF1dG87Ci0g
ICAgcHJpdi0+dmlld3BvcnRBcmd1bWVudHMuem9vbSA9IFdlYkNvcmU6OlZpZXdwb3J0QXJndW1l
bnRzOjpWYWx1ZUF1dG87Ci0gICAgcHJpdi0+dmlld3BvcnRBcmd1bWVudHMubWluWm9vbSA9IFdl
YkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzOjpWYWx1ZUF1dG87Ci0gICAgcHJpdi0+dmlld3BvcnRB
cmd1bWVudHMubWF4Wm9vbSA9IFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzOjpWYWx1ZUF1dG87
Ci0gICAgcHJpdi0+dmlld3BvcnRBcmd1bWVudHMudXNlclpvb20gPSB0cnVlOwotCi0gICAgcGFn
ZVNldHRpbmdzLnNldExvYWRzSW1hZ2VzQXV0b21hdGljYWxseSh0cnVlKTsKLSAgICBwYWdlU2V0
dGluZ3Muc2V0RGVmYXVsdFRleHRFbmNvZGluZ05hbWUoImlzby04ODU5LTEiKTsKLSAgICBwYWdl
U2V0dGluZ3Muc2V0RGVmYXVsdEZpeGVkRm9udFNpemUoMTIpOwotICAgIHBhZ2VTZXR0aW5ncy5z
ZXREZWZhdWx0Rm9udFNpemUoMTYpOwotICAgIHBhZ2VTZXR0aW5ncy5zZXRTZXJpZkZvbnRGYW1p
bHkoInNlcmlmIik7Ci0gICAgcGFnZVNldHRpbmdzLnNldEZpeGVkRm9udEZhbWlseSgibW9ub3R5
cGUiKTsKLSAgICBwYWdlU2V0dGluZ3Muc2V0U2Fuc1NlcmlmRm9udEZhbWlseSgic2FucyIpOwot
ICAgIHBhZ2VTZXR0aW5ncy5zZXRTdGFuZGFyZEZvbnRGYW1pbHkoInNhbnMiKTsKLSAgICBwYWdl
U2V0dGluZ3Muc2V0SHlwZXJsaW5rQXVkaXRpbmdFbmFibGVkKGZhbHNlKTsKLSAgICBXZWJDb3Jl
OjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNldENTU1JlZ2lvbnNF
bmFibGVkKHRydWUpOwotICAgIHBhZ2VTZXR0aW5ncy5zZXRTY3JpcHRFbmFibGVkKHRydWUpOwot
ICAgIHBhZ2VTZXR0aW5ncy5zZXRQbHVnaW5zRW5hYmxlZCh0cnVlKTsKLSAgICBwYWdlU2V0dGlu
Z3Muc2V0TG9jYWxTdG9yYWdlRW5hYmxlZCh0cnVlKTsKLSAgICBwYWdlU2V0dGluZ3Muc2V0T2Zm
bGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKHRydWUpOwotICAgIHBhZ2VTZXR0aW5ncy5z
ZXRVc2VzUGFnZUNhY2hlKHRydWUpOwotICAgIHBhZ2VTZXR0aW5ncy5zZXRVc2VzRW5jb2RpbmdE
ZXRlY3RvcihmYWxzZSk7Ci0jaWYgRU5BQkxFKFdFQl9BVURJTykKLSAgICBwYWdlU2V0dGluZ3Mu
c2V0V2ViQXVkaW9FbmFibGVkKGZhbHNlKTsKLSNlbmRpZgotICAgIHBhZ2VTZXR0aW5ncy5zZXRX
ZWJHTEVuYWJsZWQodHJ1ZSk7Ci0gICAgcGFnZVNldHRpbmdzLnNldFhTU0F1ZGl0b3JFbmFibGVk
KHRydWUpOwotI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKLSAgICBwYWdlU2V0dGluZ3Muc2V0
RnVsbFNjcmVlbkVuYWJsZWQodHJ1ZSk7Ci0jZW5kaWYKLSAgICBwYWdlU2V0dGluZ3Muc2V0SW50
ZXJhY3RpdmVGb3JtVmFsaWRhdGlvbkVuYWJsZWQodHJ1ZSk7Ci0gICAgcGFnZVNldHRpbmdzLnNl
dEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKHRydWUpOwotICAgIHBhZ2VTZXR0aW5ncy5z
ZXRGb3JjZUNvbXBvc2l0aW5nTW9kZSh0cnVlKTsKLSAgICBjaGFyKiBkZWJ1Z1Zpc3VhbHNFbnZp
cm9ubWVudCA9IGdldGVudigiV0VCS0lUX1NIT1dfQ09NUE9TSVRJTkdfREVCVUdfVklTVUFMUyIp
OwotICAgIGJvb2wgc2hvd0RlYnVnVmlzdWFscyA9IGRlYnVnVmlzdWFsc0Vudmlyb25tZW50ICYm
ICFzdHJjbXAoZGVidWdWaXN1YWxzRW52aXJvbm1lbnQsICIxIik7Ci0gICAgcGFnZVNldHRpbmdz
LnNldFNob3dEZWJ1Z0JvcmRlcnMoc2hvd0RlYnVnVmlzdWFscyk7Ci0gICAgcGFnZVNldHRpbmdz
LnNldFNob3dSZXBhaW50Q291bnRlcihzaG93RGVidWdWaXN1YWxzKTsKLQotICAgIHVybCA9IHBh
Z2VTZXR0aW5ncy51c2VyU3R5bGVTaGVldExvY2F0aW9uKCk7Ci0gICAgcHJpdi0+c2V0dGluZ3Mu
dXNlclN0eWxlc2hlZXQgPSBlaW5hX3N0cmluZ3NoYXJlX2FkZCh1cmwuc3RyaW5nKCkudXRmOCgp
LmRhdGEoKSk7Ci0KLSAgICBwcml2LT5zZXR0aW5ncy5lbmNvZGluZ0RlZmF1bHQgPSBlaW5hX3N0
cmluZ3NoYXJlX2FkZChwYWdlU2V0dGluZ3MuZGVmYXVsdFRleHRFbmNvZGluZ05hbWUoKS51dGY4
KCkuZGF0YSgpKTsKLSAgICBwcml2LT5zZXR0aW5ncy5lbmNvZGluZ0N1c3RvbSA9IDA7Ci0KLSAg
ICBzdHJpbmcgPSBwYWdlU2V0dGluZ3MubG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKCk7Ci0gICAg
cHJpdi0+c2V0dGluZ3MubG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoID0gZWluYV9zdHJpbmdzaGFy
ZV9hZGQoc3RyaW5nLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotCi0gICAgcHJpdi0+c2V0dGlu
Z3MuZm9udE1pbmltdW1TaXplID0gcGFnZVNldHRpbmdzLm1pbmltdW1Gb250U2l6ZSgpOwotICAg
IHByaXYtPnNldHRpbmdzLmZvbnRNaW5pbXVtTG9naWNhbFNpemUgPSBwYWdlU2V0dGluZ3MubWlu
aW11bUxvZ2ljYWxGb250U2l6ZSgpOwotICAgIHByaXYtPnNldHRpbmdzLmZvbnREZWZhdWx0U2l6
ZSA9IHBhZ2VTZXR0aW5ncy5kZWZhdWx0Rm9udFNpemUoKTsKLSAgICBwcml2LT5zZXR0aW5ncy5m
b250TW9ub3NwYWNlU2l6ZSA9IHBhZ2VTZXR0aW5ncy5kZWZhdWx0Rml4ZWRGb250U2l6ZSgpOwot
Ci0gICAgc3RyaW5nID0gcGFnZVNldHRpbmdzLnN0YW5kYXJkRm9udEZhbWlseSgpOwotICAgIHBy
aXYtPnNldHRpbmdzLmZvbnRTdGFuZGFyZCA9IGVpbmFfc3RyaW5nc2hhcmVfYWRkKHN0cmluZy5z
dHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAgICBzdHJpbmcgPSBwYWdlU2V0dGluZ3MuY3Vyc2l2
ZUZvbnRGYW1pbHkoKTsKLSAgICBwcml2LT5zZXR0aW5ncy5mb250Q3Vyc2l2ZSA9IGVpbmFfc3Ry
aW5nc2hhcmVfYWRkKHN0cmluZy5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAgICBzdHJpbmcg
PSBwYWdlU2V0dGluZ3MuZml4ZWRGb250RmFtaWx5KCk7Ci0gICAgcHJpdi0+c2V0dGluZ3MuZm9u
dE1vbm9zcGFjZSA9IGVpbmFfc3RyaW5nc2hhcmVfYWRkKHN0cmluZy5zdHJpbmcoKS51dGY4KCku
ZGF0YSgpKTsKLSAgICBzdHJpbmcgPSBwYWdlU2V0dGluZ3MuZmFudGFzeUZvbnRGYW1pbHkoKTsK
LSAgICBwcml2LT5zZXR0aW5ncy5mb250RmFudGFzeSA9IGVpbmFfc3RyaW5nc2hhcmVfYWRkKHN0
cmluZy5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAgICBzdHJpbmcgPSBwYWdlU2V0dGluZ3Mu
c2VyaWZGb250RmFtaWx5KCk7Ci0gICAgcHJpdi0+c2V0dGluZ3MuZm9udFNlcmlmID0gZWluYV9z
dHJpbmdzaGFyZV9hZGQoc3RyaW5nLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgIHN0cmlu
ZyA9IHBhZ2VTZXR0aW5ncy5zYW5zU2VyaWZGb250RmFtaWx5KCk7Ci0gICAgcHJpdi0+c2V0dGlu
Z3MuZm9udFNhbnNTZXJpZiA9IGVpbmFfc3RyaW5nc2hhcmVfYWRkKHN0cmluZy5zdHJpbmcoKS51
dGY4KCkuZGF0YSgpKTsKLQotICAgIHByaXYtPnNldHRpbmdzLmF1dG9Mb2FkSW1hZ2VzID0gcGFn
ZVNldHRpbmdzLmxvYWRzSW1hZ2VzQXV0b21hdGljYWxseSgpOwotICAgIHByaXYtPnNldHRpbmdz
LmF1dG9TaHJpbmtJbWFnZXMgPSBwYWdlU2V0dGluZ3Muc2hyaW5rc1N0YW5kYWxvbmVJbWFnZXNU
b0ZpdCgpOwotICAgIHByaXYtPnNldHRpbmdzLmVuYWJsZUF1dG9SZXNpemVXaW5kb3cgPSB0cnVl
OwotICAgIHByaXYtPnNldHRpbmdzLmVuYWJsZURldmVsb3BlckV4dHJhcyA9IHBhZ2VTZXR0aW5n
cy5kZXZlbG9wZXJFeHRyYXNFbmFibGVkKCk7Ci0gICAgcHJpdi0+c2V0dGluZ3MuZW5hYmxlU2Ny
aXB0cyA9IHBhZ2VTZXR0aW5ncy5pc1NjcmlwdEVuYWJsZWQoKTsKLSAgICBwcml2LT5zZXR0aW5n
cy5lbmFibGVQbHVnaW5zID0gcGFnZVNldHRpbmdzLmFyZVBsdWdpbnNFbmFibGVkKCk7Ci0gICAg
cHJpdi0+c2V0dGluZ3MuZW5hYmxlRnJhbWVGbGF0dGVuaW5nID0gcGFnZVNldHRpbmdzLmZyYW1l
RmxhdHRlbmluZ0VuYWJsZWQoKTsKLSNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCi0gICAgcHJp
di0+c2V0dGluZ3MuZW5hYmxlRnVsbHNjcmVlbiA9IHBhZ2VTZXR0aW5ncy5mdWxsU2NyZWVuRW5h
YmxlZCgpOwotI2VuZGlmCi0gICAgcHJpdi0+c2V0dGluZ3MuZW5hYmxlWFNTQXVkaXRvciA9IHBh
Z2VTZXR0aW5ncy54c3NBdWRpdG9yRW5hYmxlZCgpOwotICAgIHByaXYtPnNldHRpbmdzLmh5cGVy
bGlua0F1ZGl0aW5nRW5hYmxlZCA9IHBhZ2VTZXR0aW5ncy5oeXBlcmxpbmtBdWRpdGluZ0VuYWJs
ZWQoKTsKLSAgICBwcml2LT5zZXR0aW5ncy5zY3JpcHRzQ2FuT3BlbldpbmRvd3MgPSBwYWdlU2V0
dGluZ3MuamF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseSgpOwotICAgIHByaXYt
PnNldHRpbmdzLnNjcmlwdHNDYW5DbG9zZVdpbmRvd3MgPSBwYWdlU2V0dGluZ3MuYWxsb3dTY3Jp
cHRzVG9DbG9zZVdpbmRvd3MoKTsKLSNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi0gICAgcHJpdi0+
c2V0dGluZ3Muc2hvdWxkRGlzcGxheUNhcHRpb25zID0gcGFnZVNldHRpbmdzLnNob3VsZERpc3Bs
YXlDYXB0aW9ucygpOwotICAgIHByaXYtPnNldHRpbmdzLnNob3VsZERpc3BsYXlTdWJ0aXRsZXMg
PSBwYWdlU2V0dGluZ3Muc2hvdWxkRGlzcGxheVN1YnRpdGxlcygpOwotICAgIHByaXYtPnNldHRp
bmdzLnNob3VsZERpc3BsYXlUZXh0RGVzY3JpcHRpb25zID0gcGFnZVNldHRpbmdzLnNob3VsZERp
c3BsYXlUZXh0RGVzY3JpcHRpb25zKCk7Ci0jZW5kaWYKLSAgICBwcml2LT5zZXR0aW5ncy5zY3Jp
cHRzQ2FuQWNjZXNzQ2xpcGJvYXJkID0gcGFnZVNldHRpbmdzLmphdmFTY3JpcHRDYW5BY2Nlc3ND
bGlwYm9hcmQoKSAmJiBwYWdlU2V0dGluZ3MuRE9NUGFzdGVBbGxvd2VkKCk7Ci0gICAgcHJpdi0+
c2V0dGluZ3MucmVzaXphYmxlVGV4dGFyZWFzID0gcGFnZVNldHRpbmdzLnRleHRBcmVhc0FyZVJl
c2l6YWJsZSgpOwotICAgIHByaXYtPnNldHRpbmdzLnByaXZhdGVCcm93c2luZyA9IHByaXYtPnBh
Z2UtPnVzZXNFcGhlbWVyYWxTZXNzaW9uKCk7Ci0gICAgcHJpdi0+c2V0dGluZ3MuY2FyZXRCcm93
c2luZyA9IHBhZ2VTZXR0aW5ncy5jYXJldEJyb3dzaW5nRW5hYmxlZCgpOwotICAgIHByaXYtPnNl
dHRpbmdzLnNwYXRpYWxOYXZpZ2F0aW9uID0gcGFnZVNldHRpbmdzLnNwYXRpYWxOYXZpZ2F0aW9u
RW5hYmxlZCgpOwotICAgIHByaXYtPnNldHRpbmdzLmxvY2FsU3RvcmFnZSA9IHBhZ2VTZXR0aW5n
cy5sb2NhbFN0b3JhZ2VFbmFibGVkKCk7Ci0gICAgcHJpdi0+c2V0dGluZ3Mub2ZmbGluZUFwcENh
Y2hlID0gdHJ1ZTsgLy8gWFhYIG5vIGZ1bmN0aW9uIHRvIHJlYWQgc2V0dGluZzsgdGhpcyBrZWVw
cyB0aGUgb3JpZ2luYWwgc2V0dGluZwotICAgIHByaXYtPnNldHRpbmdzLnBhZ2VDYWNoZSA9IHBh
Z2VTZXR0aW5ncy51c2VzUGFnZUNhY2hlKCk7Ci0gICAgcHJpdi0+c2V0dGluZ3MuZW5jb2RpbmdE
ZXRlY3RvciA9IHBhZ2VTZXR0aW5ncy51c2VzRW5jb2RpbmdEZXRlY3RvcigpOwotICAgIHByaXYt
PnNldHRpbmdzLndlYkdMRW5hYmxlZCA9IHBhZ2VTZXR0aW5ncy53ZWJHTEVuYWJsZWQoKTsKLSAg
ICBwcml2LT5zZXR0aW5ncy50YWJzVG9MaW5rcyA9IHRydWU7Ci0KLSAgICBwcml2LT5zZXR0aW5n
cy51c2VyQWdlbnQgPSBld2tfc2V0dGluZ3NfZGVmYXVsdF91c2VyX2FnZW50X2dldCgpOwotCi0g
ICAgLy8gU2luY2UgdGhlcmUncyBubyBzY2FsZSBzZXBhcmF0ZWQgZnJvbSB6b29taW5nIGluIHdl
YmtpdC1lZmwsIHRoaXMgZnVuY3Rpb25hbGl0eSBvZgotICAgIC8vIHZpZXdwb3J0IG1ldGEgdGFn
IGlzIGltcGxlbWVudGVkIHVzaW5nIHpvb20uIFdoZW4gc2NhbGUgem9vbSBpcyBzdXBwb3J0ZWQg
Ynkgd2Via2l0LWVmbCwKLSAgICAvLyB0aGlzIGZ1bmN0aW9uYWxpdHkgd2lsbCBiZSBtb2RpZmll
ZCBieSB0aGUgc2NhbGUgem9vbSBwYXRjaC4KLSAgICBwcml2LT5zZXR0aW5ncy56b29tUmFuZ2Uu
bWluU2NhbGUgPSB6b29tTWluaW11bTsKLSAgICBwcml2LT5zZXR0aW5ncy56b29tUmFuZ2UubWF4
U2NhbGUgPSB6b29tTWF4aW11bTsKLSAgICBwcml2LT5zZXR0aW5ncy56b29tUmFuZ2UudXNlclNj
YWxhYmxlID0gdHJ1ZTsKLQotICAgIHByaXYtPnNldHRpbmdzLmRvbVRpbWVySW50ZXJ2YWwgPSBw
YWdlU2V0dGluZ3MuZGVmYXVsdE1pbkRPTVRpbWVySW50ZXJ2YWwoKTsKLQotICAgIHByaXYtPnNl
dHRpbmdzLmFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzID0gcGFnZVNldHRpbmdzLmFs
bG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzKCk7Ci0gICAgcHJpdi0+c2V0dGluZ3MuYWxs
b3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzID0gcGFnZVNldHRpbmdzLmFsbG93RmlsZUFjY2Vzc0Zy
b21GaWxlVVJMcygpOwotCi0gICAgcHJpdi0+aGlzdG9yeSA9IGV3a19oaXN0b3J5X25ldyhzdGF0
aWNfY2FzdDxXZWJDb3JlOjpCYWNrRm9yd2FyZExpc3QqPihwcml2LT5wYWdlLT5iYWNrRm9yd2Fy
ZCgpLmNsaWVudCgpKSk7Ci0KLSNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKLSAgICBwcml2LT5j
b250ZXh0TWVudSA9IDA7Ci0jZW5kaWYKLQotICAgIHJldHVybiBwcml2OwotfQotCi1zdGF0aWMg
dm9pZCBfZXdrX3ZpZXdfcHJpdl9kZWwoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2KQotewot
ICAgIGlmICghcHJpdikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLyogZG8gbm90IGRlbGV0ZSBw
cml2LT5tYWluX2ZyYW1lICovCi0KLSAgICBlaW5hX3N0cmluZ3NoYXJlX2RlbChwcml2LT5zZXR0
aW5ncy51c2VyQWdlbnQpOwotICAgIGVpbmFfc3RyaW5nc2hhcmVfZGVsKHByaXYtPnNldHRpbmdz
LnVzZXJTdHlsZXNoZWV0KTsKLSAgICBlaW5hX3N0cmluZ3NoYXJlX2RlbChwcml2LT5zZXR0aW5n
cy5lbmNvZGluZ0RlZmF1bHQpOwotICAgIGVpbmFfc3RyaW5nc2hhcmVfZGVsKHByaXYtPnNldHRp
bmdzLmVuY29kaW5nQ3VzdG9tKTsKLSAgICBlaW5hX3N0cmluZ3NoYXJlX2RlbChwcml2LT5zZXR0
aW5ncy5mb250U3RhbmRhcmQpOwotICAgIGVpbmFfc3RyaW5nc2hhcmVfZGVsKHByaXYtPnNldHRp
bmdzLmZvbnRDdXJzaXZlKTsKLSAgICBlaW5hX3N0cmluZ3NoYXJlX2RlbChwcml2LT5zZXR0aW5n
cy5mb250TW9ub3NwYWNlKTsKLSAgICBlaW5hX3N0cmluZ3NoYXJlX2RlbChwcml2LT5zZXR0aW5n
cy5mb250RmFudGFzeSk7Ci0gICAgZWluYV9zdHJpbmdzaGFyZV9kZWwocHJpdi0+c2V0dGluZ3Mu
Zm9udFNlcmlmKTsKLSAgICBlaW5hX3N0cmluZ3NoYXJlX2RlbChwcml2LT5zZXR0aW5ncy5mb250
U2Fuc1NlcmlmKTsKLSAgICBlaW5hX3N0cmluZ3NoYXJlX2RlbChwcml2LT5zZXR0aW5ncy5sb2Nh
bFN0b3JhZ2VEYXRhYmFzZVBhdGgpOwotCi0gICAgaWYgKHByaXYtPmFuaW1hdGVkWm9vbS5hbmlt
YXRvcikKLSAgICAgICAgZWNvcmVfYW5pbWF0b3JfZGVsKHByaXYtPmFuaW1hdGVkWm9vbS5hbmlt
YXRvcik7Ci0KLSAgICBld2tfaGlzdG9yeV9mcmVlKHByaXYtPmhpc3RvcnkpOwotCi0gICAgaWYg
KHByaXYtPmN1cnNvck9iamVjdCkKLSAgICAgICAgZXZhc19vYmplY3RfZGVsKHByaXYtPmN1cnNv
ck9iamVjdCk7Ci0KLSNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKLSAgICBpZiAocHJpdi0+Y29u
dGV4dE1lbnUpCi0gICAgICAgIGV3a19jb250ZXh0X21lbnVfZnJlZShwcml2LT5jb250ZXh0TWVu
dSk7Ci0jZW5kaWYKLQotICAgIHByaXYtPmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0ID0g
bnVsbHB0cjsKLQotICAgIGRlbGV0ZSBwcml2OwotfQotCi1zdGF0aWMgdm9pZCBfZXdrX3ZpZXdf
YWNjZWxlcmF0ZWRfY29tcG9zaXRpbmdfY2Iodm9pZCogZGF0YSwgRXZhc19PYmplY3QqKQotewot
ICAgIHN0YXRpY19jYXN0PFdlYkNvcmU6OkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0Kj4o
ZGF0YSktPmZsdXNoQW5kUmVuZGVyTGF5ZXJzKCk7Ci19Ci0KLXN0YXRpYyB2b2lkIF9ld2tfdmll
d19zbWFydF9hZGQoRXZhc19PYmplY3QqIGV3a1ZpZXcpCi17Ci0gICAgY29uc3QgRXZhc19TbWFy
dCogc21hcnQgPSBldmFzX29iamVjdF9zbWFydF9zbWFydF9nZXQoZXdrVmlldyk7Ci0gICAgY29u
c3QgRXZhc19TbWFydF9DbGFzcyogc21hcnRDbGFzcyA9IGV2YXNfc21hcnRfY2xhc3NfZ2V0KHNt
YXJ0KTsKLSAgICBjb25zdCBFd2tfVmlld19TbWFydF9DbGFzcyogYXBpID0gcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBFd2tfVmlld19TbWFydF9DbGFzcyo+KHNtYXJ0Q2xhc3MpOwotICAgIEVXS19W
SUVXX1NEX0dFVChld2tWaWV3LCBzbWFydERhdGEpOwotCi0gICAgaWYgKCFzbWFydERhdGEpIHsK
LSAgICAgICAgc21hcnREYXRhID0gc3RhdGljX2Nhc3Q8RXdrX1ZpZXdfU21hcnRfRGF0YSo+KGNh
bGxvYygxLCBzaXplb2YoRXdrX1ZpZXdfU21hcnRfRGF0YSkpKTsKLSAgICAgICAgaWYgKCFzbWFy
dERhdGEpIHsKLSAgICAgICAgICAgIENSSVRJQ0FMKCJjb3VsZCBub3QgYWxsb2NhdGUgRXdrX1Zp
ZXdfU21hcnRfRGF0YSIpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAg
IGV2YXNfb2JqZWN0X3NtYXJ0X2RhdGFfc2V0KGV3a1ZpZXcsIHNtYXJ0RGF0YSk7Ci0gICAgfQot
Ci0gICAgc21hcnREYXRhLT5iZ19jb2xvci5yID0gMjU1OwotICAgIHNtYXJ0RGF0YS0+YmdfY29s
b3IuZyA9IDI1NTsKLSAgICBzbWFydERhdGEtPmJnX2NvbG9yLmIgPSAyNTU7Ci0gICAgc21hcnRE
YXRhLT5iZ19jb2xvci5hID0gMjU1OwotCi0gICAgc21hcnREYXRhLT5zZWxmID0gZXdrVmlldzsK
LSAgICBzbWFydERhdGEtPmFwaSA9IGFwaTsKLQotICAgIF9wYXJlbnRfc2MuYWRkKGV3a1ZpZXcp
OwotCi0gICAgc21hcnREYXRhLT5fcHJpdiA9IF9ld2tfdmlld19wcml2X25ldyhzbWFydERhdGEp
OwotICAgIGlmICghc21hcnREYXRhLT5fcHJpdikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgRVdL
X1ZJRVdfUFJJVl9HRVQoc21hcnREYXRhLCBwcml2KTsKLQotICAgIHNtYXJ0RGF0YS0+aW1hZ2Ug
PSBldmFzX29iamVjdF9pbWFnZV9hZGQoc21hcnREYXRhLT5iYXNlLmV2YXMpOwotICAgIGlmIChF
SU5BX1VOTElLRUxZKCFzbWFydERhdGEtPmltYWdlKSkgewotICAgICAgICBFUlIoIkNvdWxkIG5v
dCBjcmVhdGUgYmFja2luZyBzdG9yZSBvYmplY3QuIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBldmFzX29iamVjdF9pbWFnZV9hbHBoYV9zZXQoc21hcnREYXRhLT5pbWFnZSwgZmFs
c2UpOwotICAgIGV2YXNfb2JqZWN0X2ltYWdlX2ZpbGxlZF9zZXQoc21hcnREYXRhLT5pbWFnZSwg
dHJ1ZSk7Ci0gICAgZXZhc19vYmplY3RfaW1hZ2Vfc21vb3RoX3NjYWxlX3NldChzbWFydERhdGEt
PmltYWdlLCBzbWFydERhdGEtPnpvb21fd2Vha19zbW9vdGhfc2NhbGUpOwotICAgIGV2YXNfb2Jq
ZWN0X3Bhc3NfZXZlbnRzX3NldChzbWFydERhdGEtPmltYWdlLCB0cnVlKTsKLSAgICBldmFzX29i
amVjdF9zbWFydF9tZW1iZXJfYWRkKHNtYXJ0RGF0YS0+aW1hZ2UsIGV3a1ZpZXcpOwotICAgIGV2
YXNfb2JqZWN0X3Nob3coc21hcnREYXRhLT5pbWFnZSk7Ci0KLSAgICBwcml2LT5hY2NlbGVyYXRl
ZENvbXBvc2l0aW5nQ29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6QWNjZWxlcmF0
ZWRDb21wb3NpdGluZ0NvbnRleHQ+KGV3a1ZpZXcsIHNtYXJ0RGF0YS0+aW1hZ2UpOwotCi0gICAg
Ly8gU2V0IHRoZSBwaXhlbCBnZXQgY2FsbGJhY2suCi0gICAgZXZhc19vYmplY3RfaW1hZ2VfcGl4
ZWxzX2dldF9jYWxsYmFja19zZXQoc21hcnREYXRhLT5pbWFnZSwgX2V3a192aWV3X2FjY2VsZXJh
dGVkX2NvbXBvc2l0aW5nX2NiLCBwcml2LT5hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC5n
ZXQoKSk7Ci0KLSAgICBzbWFydERhdGEtPmV2ZW50c19yZWN0ID0gZXZhc19vYmplY3RfcmVjdGFu
Z2xlX2FkZChzbWFydERhdGEtPmJhc2UuZXZhcyk7Ci0gICAgZXZhc19vYmplY3RfY29sb3Jfc2V0
KHNtYXJ0RGF0YS0+ZXZlbnRzX3JlY3QsIDAsIDAsIDAsIDApOwotICAgIGV2YXNfb2JqZWN0X3Nt
YXJ0X21lbWJlcl9hZGQoc21hcnREYXRhLT5ldmVudHNfcmVjdCwgZXdrVmlldyk7Ci0gICAgZXZh
c19vYmplY3Rfc2hvdyhzbWFydERhdGEtPmV2ZW50c19yZWN0KTsKLQotICAgIHNtYXJ0RGF0YS0+
bWFpbl9mcmFtZSA9IGV3a19mcmFtZV9hZGQoc21hcnREYXRhLT5iYXNlLmV2YXMpOwotICAgIGlm
ICghc21hcnREYXRhLT5tYWluX2ZyYW1lKSB7Ci0gICAgICAgIEVSUigiQ291bGQgbm90IGNyZWF0
ZSBtYWluIGZyYW1lIG9iamVjdC4iKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlm
ICghZXdrX2ZyYW1lX2luaXQoc21hcnREYXRhLT5tYWluX2ZyYW1lLCBld2tWaWV3LCBhZG9wdFB0
cihzdGF0aWNfY2FzdDxXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbCo+KCZwcml2LT5wYWdl
LT5tYWluRnJhbWUoKS5sb2FkZXIoKS5jbGllbnQoKSkpKSkgewotICAgICAgICBFUlIoIkNvdWxk
IG5vdCBpbml0aWFsaXplIG1haW4gZnJtZSBvYmplY3QuIik7Ci0gICAgICAgIGV2YXNfb2JqZWN0
X2RlbChzbWFydERhdGEtPm1haW5fZnJhbWUpOwotICAgICAgICBzbWFydERhdGEtPm1haW5fZnJh
bWUgPSAwOwotCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgRVdLUHJpdmF0ZTo6c2V0Q29y
ZUZyYW1lKHNtYXJ0RGF0YS0+bWFpbl9mcmFtZSwgJnByaXYtPnBhZ2UtPm1haW5GcmFtZSgpKTsK
LSAgICBwcml2LT5wYWdlLT5tYWluRnJhbWUoKS50cmVlKCkuc2V0TmFtZShTdHJpbmcoKSk7Ci0g
ICAgcHJpdi0+cGFnZS0+bWFpbkZyYW1lKCkuaW5pdCgpOwotCi0gICAgZXZhc19vYmplY3RfbmFt
ZV9zZXQoc21hcnREYXRhLT5tYWluX2ZyYW1lLCAiRVdLX0ZyYW1lOm1haW4iKTsKLSAgICBldmFz
X29iamVjdF9zbWFydF9tZW1iZXJfYWRkKHNtYXJ0RGF0YS0+bWFpbl9mcmFtZSwgZXdrVmlldyk7
Ci0gICAgZXZhc19vYmplY3Rfc2hvdyhzbWFydERhdGEtPm1haW5fZnJhbWUpOwotCi0jZGVmaW5l
IENPTk5FQ1QocywgYykgZXZhc19vYmplY3RfZXZlbnRfY2FsbGJhY2tfYWRkKGV3a1ZpZXcsIHMs
IGMsIHNtYXJ0RGF0YSkKLSAgICBDT05ORUNUKEVWQVNfQ0FMTEJBQ0tfRk9DVVNfSU4sIF9ld2tf
dmlld19vbl9mb2N1c19pbik7Ci0gICAgQ09OTkVDVChFVkFTX0NBTExCQUNLX0ZPQ1VTX09VVCwg
X2V3a192aWV3X29uX2ZvY3VzX291dCk7Ci0gICAgQ09OTkVDVChFVkFTX0NBTExCQUNLX01PVVNF
X1dIRUVMLCBfZXdrX3ZpZXdfb25fbW91c2Vfd2hlZWwpOwotICAgIENPTk5FQ1QoRVZBU19DQUxM
QkFDS19NT1VTRV9ET1dOLCBfZXdrX3ZpZXdfb25fbW91c2VfZG93bik7Ci0gICAgQ09OTkVDVChF
VkFTX0NBTExCQUNLX01PVVNFX1VQLCBfZXdrX3ZpZXdfb25fbW91c2VfdXApOwotICAgIENPTk5F
Q1QoRVZBU19DQUxMQkFDS19NT1VTRV9NT1ZFLCBfZXdrX3ZpZXdfb25fbW91c2VfbW92ZSk7Ci0g
ICAgQ09OTkVDVChFVkFTX0NBTExCQUNLX0tFWV9ET1dOLCBfZXdrX3ZpZXdfb25fa2V5X2Rvd24p
OwotICAgIENPTk5FQ1QoRVZBU19DQUxMQkFDS19LRVlfVVAsIF9ld2tfdmlld19vbl9rZXlfdXAp
OwotI3VuZGVmIENPTk5FQ1QKLX0KLQotc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X2RlbChF
dmFzX09iamVjdCogZXdrVmlldykKLXsKLSAgICBFV0tfVklFV19TRF9HRVQoZXdrVmlldywgc21h
cnREYXRhKTsKLSAgICBFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYgPSBzbWFydERhdGEgPyBz
bWFydERhdGEtPl9wcml2IDogMDsKLQotICAgIGV3a192aWV3X3N0b3AoZXdrVmlldyk7Ci0gICAg
X3BhcmVudF9zYy5kZWwoZXdrVmlldyk7Ci0gICAgX2V3a192aWV3X3ByaXZfZGVsKHByaXYpOwot
fQotCi1zdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfcmVzaXplKEV2YXNfT2JqZWN0KiBld2tW
aWV3LCBFdmFzX0Nvb3JkIHdpZHRoLCBFdmFzX0Nvb3JkIGhlaWdodCkKLXsKLSAgICBFV0tfVklF
V19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSk7Ci0gICAgRVdLX1ZJRVdfUFJJ
Vl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdik7Ci0KLSAgICAvLyB0aGVzZSBzaG91bGQg
YmUgcXVldWVkIGFuZCBwcm9jZXNzZWQgaW4gY2FsY3VsYXRlIGFzIHdlbGwhCi0gICAgZXZhc19v
YmplY3RfcmVzaXplKHNtYXJ0RGF0YS0+aW1hZ2UsIHdpZHRoLCBoZWlnaHQpOwotICAgIGV2YXNf
b2JqZWN0X2ltYWdlX3NpemVfc2V0KHNtYXJ0RGF0YS0+aW1hZ2UsIHdpZHRoLCBoZWlnaHQpOwot
ICAgIGV2YXNfb2JqZWN0X2ltYWdlX2ZpbGxfc2V0KHNtYXJ0RGF0YS0+aW1hZ2UsIDAsIDAsIHdp
ZHRoLCBoZWlnaHQpOwotCi0gICAgcHJpdi0+YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQt
PnJlc2l6ZShXZWJDb3JlOjpJbnRTaXplKHdpZHRoLCBoZWlnaHQpKTsKLQotICAgIHNtYXJ0RGF0
YS0+Y2hhbmdlZC5zaXplID0gdHJ1ZTsKLSAgICBfZXdrX3ZpZXdfc21hcnRfY2hhbmdlZChzbWFy
dERhdGEpOwotfQotCi1zdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfbW92ZShFdmFzX09iamVj
dCogZXdrVmlldywgRXZhc19Db29yZCAvKngqLywgRXZhc19Db29yZCAvKnkqLykKLXsKLSAgICBF
V0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSk7Ci0gICAgc21hcnRE
YXRhLT5jaGFuZ2VkLnBvc2l0aW9uID0gdHJ1ZTsKLSAgICBfZXdrX3ZpZXdfc21hcnRfY2hhbmdl
ZChzbWFydERhdGEpOwotfQotCi1zdGF0aWMgaW5saW5lIHZvaWQgX2V3a192aWV3X3NjcmVlbl9t
b3ZlKHVpbnQzMl90KiBpbWFnZSwgc2l6ZV90IGRlc3RpbmF0aW9uWCwgc2l6ZV90IGRlc3RpbmF0
aW9uWSwgc2l6ZV90IHNvdXJjZVgsIHNpemVfdCBzb3VyY2VZLCBzaXplX3QgY29weVdpZHRoLCBz
aXplX3QgY29weUhlaWdodCwgc2l6ZV90IGltYWdlV2lkdGgpCi17Ci0gICAgdWludDMyX3QqIHNv
dXJjZUJlZ2luID0gaW1hZ2UgKyAoaW1hZ2VXaWR0aCAqIHNvdXJjZVkpICsgc291cmNlWDsKLSAg
ICB1aW50MzJfdCogZGVzdGluYXRpb25CZWdpbiA9IGltYWdlICsgKGltYWdlV2lkdGggKiBkZXN0
aW5hdGlvblkpICsgZGVzdGluYXRpb25YOwotCi0gICAgc2l6ZV90IGNvcHlMZW5ndGggPSBjb3B5
V2lkdGggKiA0OwotCi0gICAgaW50IG1vdmVMaW5lVXBEb3duOwotICAgIGludCByb3c7Ci0KLSAg
ICBpZiAoc291cmNlWSA+PSBkZXN0aW5hdGlvblkpIHsKLSAgICAgICAgcm93ID0gMDsKLSAgICAg
ICAgbW92ZUxpbmVVcERvd24gPSAxOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHJvdyA9IGNvcHlI
ZWlnaHQgLSAxOwotICAgICAgICBtb3ZlTGluZVVwRG93biA9IC0xOwotICAgIH0KLQotICAgIHVp
bnQzMl90KiBzb3VyY2UsICogZGVzdGluYXRpb247Ci0gICAgaWYgKChkZXN0aW5hdGlvblggPiBz
b3VyY2VYICYmIGRlc3RpbmF0aW9uWCA8IHNvdXJjZVggKyBjb3B5V2lkdGgpCi0gICAgICAgIHx8
IChkZXN0aW5hdGlvblggPCBzb3VyY2VYICYmIGRlc3RpbmF0aW9uWCArIGNvcHlXaWR0aCA+IHNv
dXJjZVgpKSB7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY29weUhlaWdodDsgKytp
LCByb3cgKz0gbW92ZUxpbmVVcERvd24pIHsKLSAgICAgICAgICAgIHNvdXJjZSA9IHNvdXJjZUJl
Z2luICsgKGltYWdlV2lkdGggKiByb3cpOwotICAgICAgICAgICAgZGVzdGluYXRpb24gPSBkZXN0
aW5hdGlvbkJlZ2luICsgKGltYWdlV2lkdGggKiByb3cpOwotICAgICAgICAgICAgbWVtbW92ZShk
ZXN0aW5hdGlvbiwgc291cmNlLCBjb3B5TGVuZ3RoKTsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7
Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY29weUhlaWdodDsgKytpLCByb3cgKz0g
bW92ZUxpbmVVcERvd24pIHsKLSAgICAgICAgICAgIHNvdXJjZSA9IHNvdXJjZUJlZ2luICsgKGlt
YWdlV2lkdGggKiByb3cpOwotICAgICAgICAgICAgZGVzdGluYXRpb24gPSBkZXN0aW5hdGlvbkJl
Z2luICsgKGltYWdlV2lkdGggKiByb3cpOwotICAgICAgICAgICAgbWVtY3B5KGRlc3RpbmF0aW9u
LCBzb3VyY2UsIGNvcHlMZW5ndGgpOwotICAgICAgICB9Ci0gICAgfQotfQotCi1zdGF0aWMgdm9p
ZCBfZXdrX3ZpZXdfc21hcnRfY2FsY3VsYXRlKEV2YXNfT2JqZWN0KiBld2tWaWV3KQotewotICAg
IEVXS19WSUVXX1NEX0dFVChld2tWaWV3LCBzbWFydERhdGEpOwotICAgIEVXS19WSUVXX1BSSVZf
R0VUKHNtYXJ0RGF0YSwgcHJpdik7Ci0gICAgRXZhc19Db29yZCB4LCB5LCB3aWR0aCwgaGVpZ2h0
OwotCi0gICAgc21hcnREYXRhLT5jaGFuZ2VkLmFueSA9IGZhbHNlOwotCi0gICAgaWYgKCFzbWFy
dERhdGEtPm1haW5fZnJhbWUpCi0gICAgICAgIHJldHVybjsKLQotICAgIGV2YXNfb2JqZWN0X2dl
b21ldHJ5X2dldChld2tWaWV3LCAmeCwgJnksICZ3aWR0aCwgJmhlaWdodCk7Ci0KLSAgICBEQkco
ImV3a1ZpZXc9JXAgZ2VvPVslZCwgJWQgKyAlZHglZF0sIGNoYW5nZWQ6IHNpemU9JWh1dSIsCi0g
ICAgICAgIGV3a1ZpZXcsIHgsIHksIHdpZHRoLCBoZWlnaHQsIHNtYXJ0RGF0YS0+Y2hhbmdlZC5z
aXplKTsKLQotICAgIGlmIChzbWFydERhdGEtPmNoYW5nZWQuc2l6ZSAmJiAoKHdpZHRoICE9IHNt
YXJ0RGF0YS0+dmlldy53KSB8fCAoaGVpZ2h0ICE9IHNtYXJ0RGF0YS0+dmlldy5oKSkpIHsKLSAg
ICAgICAgV2ViQ29yZTo6RnJhbWVWaWV3KiB2aWV3ID0gcHJpdi0+cGFnZS0+bWFpbkZyYW1lKCku
dmlldygpOwotICAgICAgICBpZiAodmlldykgewotICAgICAgICAgICAgdmlldy0+cmVzaXplKHdp
ZHRoLCBoZWlnaHQpOwotICAgICAgICAgICAgdmlldy0+Zm9yY2VMYXlvdXQoKTsKLSAgICAgICAg
ICAgIHZpZXctPmFkanVzdFZpZXdTaXplKCk7Ci0gICAgICAgIH0KLSAgICAgICAgZXZhc19vYmpl
Y3RfcmVzaXplKHNtYXJ0RGF0YS0+bWFpbl9mcmFtZSwgd2lkdGgsIGhlaWdodCk7Ci0gICAgICAg
IGV2YXNfb2JqZWN0X3Jlc2l6ZShzbWFydERhdGEtPmV2ZW50c19yZWN0LCB3aWR0aCwgaGVpZ2h0
KTsKLSAgICAgICAgc21hcnREYXRhLT5jaGFuZ2VkLmZyYW1lX3JlY3QgPSB0cnVlOwotICAgICAg
ICBzbWFydERhdGEtPnZpZXcudyA9IHdpZHRoOwotICAgICAgICBzbWFydERhdGEtPnZpZXcuaCA9
IGhlaWdodDsKLQotICAgICAgICAvLyBUaGlzIGNhbGxiYWNrIGlzIGEgZ29vZCBwbGFjZSBlLmcu
IHRvIGNoYW5nZSBmaXhlZCBsYXlvdXQgc2l6ZSAoZXdrX3ZpZXdfZml4ZWRfbGF5b3V0X3NpemVf
c2V0KS4KLSAgICAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChld2tWaWV3LCAi
dmlldyxyZXNpemVkIiwgMCk7Ci0gICAgfQotICAgIHNtYXJ0RGF0YS0+Y2hhbmdlZC5zaXplID0g
ZmFsc2U7Ci0KLSAgICBpZiAoc21hcnREYXRhLT5jaGFuZ2VkLnBvc2l0aW9uICYmICgoeCAhPSBz
bWFydERhdGEtPnZpZXcueCkgfHwgKHkgIT0gc21hcnREYXRhLT52aWV3LnkpKSkgewotICAgICAg
ICBldmFzX29iamVjdF9tb3ZlKHNtYXJ0RGF0YS0+bWFpbl9mcmFtZSwgeCwgeSk7Ci0gICAgICAg
IGV2YXNfb2JqZWN0X21vdmUoc21hcnREYXRhLT5pbWFnZSwgeCwgeSk7Ci0gICAgICAgIGV2YXNf
b2JqZWN0X21vdmUoc21hcnREYXRhLT5ldmVudHNfcmVjdCwgeCwgeSk7Ci0gICAgICAgIHNtYXJ0
RGF0YS0+Y2hhbmdlZC5mcmFtZV9yZWN0ID0gdHJ1ZTsKLSAgICAgICAgc21hcnREYXRhLT52aWV3
LnggPSB4OwotICAgICAgICBzbWFydERhdGEtPnZpZXcueSA9IHk7Ci0gICAgfQotICAgIHNtYXJ0
RGF0YS0+Y2hhbmdlZC5wb3NpdGlvbiA9IGZhbHNlOwotCi0gICAgaWYgKHNtYXJ0RGF0YS0+Y2hh
bmdlZC5mcmFtZV9yZWN0KSB7Ci0gICAgICAgIHByaXYtPnBhZ2UtPm1haW5GcmFtZSgpLnZpZXco
KS0+ZnJhbWVSZWN0c0NoYW5nZWQoKTsKLSAgICAgICAgc21hcnREYXRhLT5jaGFuZ2VkLmZyYW1l
X3JlY3QgPSBmYWxzZTsKLSAgICB9Ci19Ci0KLXN0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9z
aG93KEV2YXNfT2JqZWN0KiBld2tWaWV3KQotewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRV
Uk4oZXdrVmlldywgc21hcnREYXRhKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4o
c21hcnREYXRhLCBwcml2KTsKLQotICAgIGlmIChldmFzX29iamVjdF9jbGlwZWVzX2dldChzbWFy
dERhdGEtPmJhc2UuY2xpcHBlcikpCi0gICAgICAgIGV2YXNfb2JqZWN0X3Nob3coc21hcnREYXRh
LT5iYXNlLmNsaXBwZXIpOwotICAgIGV2YXNfb2JqZWN0X3Nob3coc21hcnREYXRhLT5pbWFnZSk7
Ci19Ci0KLXN0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9oaWRlKEV2YXNfT2JqZWN0KiBld2tW
aWV3KQotewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRh
KTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2KTsKLQot
ICAgIGV2YXNfb2JqZWN0X2hpZGUoc21hcnREYXRhLT5iYXNlLmNsaXBwZXIpOwotICAgIGV2YXNf
b2JqZWN0X2hpZGUoc21hcnREYXRhLT5pbWFnZSk7Ci19Ci0KLXN0YXRpYyBFaW5hX0Jvb2wgX2V3
a192aWV3X3NtYXJ0X2NvbnRlbnRzX3Jlc2l6ZShFd2tfVmlld19TbWFydF9EYXRhKiwgaW50IC8q
d2lkdGgqLywgaW50IC8qaGVpZ2h0Ki8pCi17Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXN0YXRp
YyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X3pvb21fc2V0KEV3a19WaWV3X1NtYXJ0X0RhdGEq
IHNtYXJ0RGF0YSwgZmxvYXQgem9vbSwgRXZhc19Db29yZCBjZW50ZXJYLCBFdmFzX0Nvb3JkIGNl
bnRlclkpCi17Ci0gICAgZG91YmxlIHB4LCBweTsKLSAgICBFdmFzX0Nvb3JkIHgsIHksIHdpZHRo
LCBoZWlnaHQ7Ci0gICAgRWluYV9Cb29sIHJlc3VsdDsKLQotICAgIGV3a19mcmFtZV9zY3JvbGxf
c2l6ZV9nZXQoc21hcnREYXRhLT5tYWluX2ZyYW1lLCAmd2lkdGgsICZoZWlnaHQpOwotICAgIGV3
a19mcmFtZV9zY3JvbGxfcG9zX2dldChzbWFydERhdGEtPm1haW5fZnJhbWUsICZ4LCAmeSk7Ci0K
LSAgICBpZiAod2lkdGggKyBzbWFydERhdGEtPnZpZXcudyA+IDApCi0gICAgICAgIHB4ID0gc3Rh
dGljX2Nhc3Q8ZG91YmxlPih4ICsgY2VudGVyWCkgLyAod2lkdGggKyBzbWFydERhdGEtPnZpZXcu
dyk7Ci0gICAgZWxzZQotICAgICAgICBweCA9IDAuMDsKLQotICAgIGlmIChoZWlnaHQgKyBzbWFy
dERhdGEtPnZpZXcuaCA+IDApCi0gICAgICAgIHB5ID0gc3RhdGljX2Nhc3Q8ZG91YmxlPih5ICsg
Y2VudGVyWSkgLyAoaGVpZ2h0ICsgc21hcnREYXRhLT52aWV3LmgpOwotICAgIGVsc2UKLSAgICAg
ICAgcHkgPSAwLjA7Ci0KLSAgICByZXN1bHQgPSBld2tfZnJhbWVfcGFnZV96b29tX3NldChzbWFy
dERhdGEtPm1haW5fZnJhbWUsIHpvb20pOwotCi0gICAgZXdrX2ZyYW1lX3Njcm9sbF9zaXplX2dl
dChzbWFydERhdGEtPm1haW5fZnJhbWUsICZ3aWR0aCwgJmhlaWdodCk7Ci0gICAgeCA9ICh3aWR0
aCArIHNtYXJ0RGF0YS0+dmlldy53KSAqIHB4IC0gY2VudGVyWDsKLSAgICB5ID0gKGhlaWdodCAr
IHNtYXJ0RGF0YS0+dmlldy5oKSAqIHB5IC0gY2VudGVyWTsKLSAgICBld2tfZnJhbWVfc2Nyb2xs
X3NldChzbWFydERhdGEtPm1haW5fZnJhbWUsIHgsIHkpOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci0KLXN0YXRpYyB2b2lkIF9ld2tfdmlld196b29tX2FuaW1hdGVkX21hcmtfc3RvcChFd2tfVmll
d19TbWFydF9EYXRhKiBzbWFydERhdGEpCi17Ci0gICAgc21hcnREYXRhLT5hbmltYXRlZF96b29t
Lnpvb20uc3RhcnQgPSAwLjA7Ci0gICAgc21hcnREYXRhLT5hbmltYXRlZF96b29tLnpvb20uZW5k
ID0gMC4wOwotICAgIHNtYXJ0RGF0YS0+YW5pbWF0ZWRfem9vbS56b29tLmN1cnJlbnQgPSAwLjA7
Ci19Ci0KLXN0YXRpYyB2b2lkIF9ld2tfdmlld196b29tX2FuaW1hdGVkX2ZpbmlzaChFd2tfVmll
d19TbWFydF9EYXRhKiBzbWFydERhdGEpCi17Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVQoc21hcnRE
YXRhLCBwcml2KTsKLSAgICBlY29yZV9hbmltYXRvcl9kZWwocHJpdi0+YW5pbWF0ZWRab29tLmFu
aW1hdG9yKTsKLSAgICBwcml2LT5hbmltYXRlZFpvb20uYW5pbWF0b3IgPSAwOwotICAgIF9ld2tf
dmlld196b29tX2FuaW1hdGVkX21hcmtfc3RvcChzbWFydERhdGEpOwotICAgIGV2YXNfb2JqZWN0
X3NtYXJ0X2NhbGxiYWNrX2NhbGwoc21hcnREYXRhLT5zZWxmLCAiem9vbSxhbmltYXRlZCxlbmQi
LCAwKTsKLX0KLQotc3RhdGljIGZsb2F0IF9ld2tfdmlld196b29tX2FuaW1hdGVkX2N1cnJlbnQo
RXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2KQotewotICAgIGRvdWJsZSBub3cgPSBlY29yZV9s
b29wX3RpbWVfZ2V0KCk7Ci0gICAgZG91YmxlIGRlbHRhID0gbm93IC0gcHJpdi0+YW5pbWF0ZWRa
b29tLnRpbWUuc3RhcnQ7Ci0KLSAgICBpZiAoZGVsdGEgPiBwcml2LT5hbmltYXRlZFpvb20udGlt
ZS5kdXJhdGlvbikKLSAgICAgICAgZGVsdGEgPSBwcml2LT5hbmltYXRlZFpvb20udGltZS5kdXJh
dGlvbjsKLSAgICBpZiAoZGVsdGEgPCAwLjApIC8vIHRpbWUgd2VudCBiYWNrLCBjbG9jayBhZGp1
c3RlZD8KLSAgICAgICAgZGVsdGEgPSAwLjA7Ci0KLSAgICBkZWx0YSAvPSBwcml2LT5hbmltYXRl
ZFpvb20udGltZS5kdXJhdGlvbjsKLQotICAgIHJldHVybiAoKHByaXYtPmFuaW1hdGVkWm9vbS56
b29tLnJhbmdlICogZGVsdGEpCi0gICAgICAgICAgICArIHByaXYtPmFuaW1hdGVkWm9vbS56b29t
LnN0YXJ0KTsKLX0KLQotc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfem9vbV93ZWFr
X3NldChFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEsIGZsb2F0IHpvb20sIEV2YXNfQ29v
cmQgY2VudGVyWCwgRXZhc19Db29yZCBjZW50ZXJZKQotewotICAgIGZsb2F0IHNjYWxlID0gem9v
bSAvIHNtYXJ0RGF0YS0+YW5pbWF0ZWRfem9vbS56b29tLnN0YXJ0OwotICAgIEV2YXNfQ29vcmQg
dyA9IHNtYXJ0RGF0YS0+dmlldy53ICogc2NhbGU7Ci0gICAgRXZhc19Db29yZCBoID0gc21hcnRE
YXRhLT52aWV3LmggKiBzY2FsZTsKLSAgICBFdmFzX0Nvb3JkIGRlbHRhWCwgZGVsdGFZLCBjb250
ZW50V2lkdGgsIGNvbnRlbnRIZWlnaHQ7Ci0gICAgRXZhc19PYmplY3QqIGNsaXAgPSBldmFzX29i
amVjdF9jbGlwX2dldChzbWFydERhdGEtPmltYWdlKTsKLQotICAgIGV3a19mcmFtZV9jb250ZW50
c19zaXplX2dldChzbWFydERhdGEtPm1haW5fZnJhbWUsICZjb250ZW50V2lkdGgsICZjb250ZW50
SGVpZ2h0KTsKLSAgICBpZiAoc21hcnREYXRhLT52aWV3LncgPiAwICYmIHNtYXJ0RGF0YS0+dmll
dy5oID4gMCkgewotICAgICAgICBkZWx0YVggPSAodyAqIChzbWFydERhdGEtPnZpZXcudyAtIGNl
bnRlclgpKSAvIHNtYXJ0RGF0YS0+dmlldy53OwotICAgICAgICBkZWx0YVkgPSAoaCAqIChzbWFy
dERhdGEtPnZpZXcuaCAtIGNlbnRlclkpKSAvIHNtYXJ0RGF0YS0+dmlldy5oOwotICAgIH0gZWxz
ZSB7Ci0gICAgICAgIGRlbHRhWCA9IDA7Ci0gICAgICAgIGRlbHRhWSA9IDA7Ci0gICAgfQotCi0g
ICAgZXZhc19vYmplY3RfaW1hZ2VfZmlsbF9zZXQoc21hcnREYXRhLT5pbWFnZSwgY2VudGVyWCAr
IGRlbHRhWCwgY2VudGVyWSArIGRlbHRhWSwgdywgaCk7Ci0KLSAgICBpZiAoc21hcnREYXRhLT52
aWV3LncgPiAwICYmIHNtYXJ0RGF0YS0+dmlldy5oID4gMCkgewotICAgICAgICBkZWx0YVggPSAo
KHNtYXJ0RGF0YS0+dmlldy53IC0gdykgKiBjZW50ZXJYKSAvIHNtYXJ0RGF0YS0+dmlldy53Owot
ICAgICAgICBkZWx0YVkgPSAoKHNtYXJ0RGF0YS0+dmlldy5oIC0gaCkgKiBjZW50ZXJZKSAvIHNt
YXJ0RGF0YS0+dmlldy5oOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGRlbHRhWCA9IDA7Ci0gICAg
ICAgIGRlbHRhWSA9IDA7Ci0gICAgfQotICAgIGV2YXNfb2JqZWN0X21vdmUoY2xpcCwgc21hcnRE
YXRhLT52aWV3LnggKyBkZWx0YVgsIHNtYXJ0RGF0YS0+dmlldy55ICsgZGVsdGFZKTsKLQotICAg
IGlmIChjb250ZW50V2lkdGggPCBzbWFydERhdGEtPnZpZXcudykKLSAgICAgICAgdyA9IGNvbnRl
bnRXaWR0aCAqIHNjYWxlOwotICAgIGlmIChjb250ZW50SGVpZ2h0IDwgc21hcnREYXRhLT52aWV3
LmgpCi0gICAgICAgIGggPSBjb250ZW50SGVpZ2h0ICogc2NhbGU7Ci0gICAgZXZhc19vYmplY3Rf
cmVzaXplKGNsaXAsIHcsIGgpOwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXN0YXRpYyB2b2lk
IF9ld2tfdmlld19zbWFydF96b29tX3dlYWtfc21vb3RoX3NjYWxlX3NldChFd2tfVmlld19TbWFy
dF9EYXRhKiBzbWFydERhdGEsIEVpbmFfQm9vbCBzbW9vdGhfc2NhbGUpCi17Ci0gICAgZXZhc19v
YmplY3RfaW1hZ2Vfc21vb3RoX3NjYWxlX3NldChzbWFydERhdGEtPmltYWdlLCBzbW9vdGhfc2Nh
bGUpOwotfQotCi1zdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld196b29tX2FuaW1hdG9yX2NiKHZv
aWQqIGRhdGEpCi17Ci0gICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhID0gc3RhdGlj
X2Nhc3Q8RXdrX1ZpZXdfU21hcnRfRGF0YSo+KGRhdGEpOwotICAgIEV2YXNfQ29vcmQgY2VudGVy
WCwgY2VudGVyWTsKLSAgICBFV0tfVklFV19QUklWX0dFVChzbWFydERhdGEsIHByaXYpOwotICAg
IGRvdWJsZSBub3cgPSBlY29yZV9sb29wX3RpbWVfZ2V0KCk7Ci0KLSAgICBjZW50ZXJYID0gcHJp
di0+YW5pbWF0ZWRab29tLmNlbnRlci54OwotICAgIGNlbnRlclkgPSBwcml2LT5hbmltYXRlZFpv
b20uY2VudGVyLnk7Ci0KLSAgICAvLyBUT0RPOiBwcm9ncmVzc2l2ZWx5IGNlbnRlciAoY3gsIGN5
KSAtPiAodmlldy54ICsgdmlldy5oLzIsIHZpZXcueSArIHZpZXcuaC8yKQotICAgIGlmIChjZW50
ZXJYID49IHNtYXJ0RGF0YS0+dmlldy53KQotICAgICAgICBjZW50ZXJYID0gc21hcnREYXRhLT52
aWV3LncgLSAxOwotICAgIGlmIChjZW50ZXJZID49IHNtYXJ0RGF0YS0+dmlldy5oKQotICAgICAg
ICBjZW50ZXJZID0gc21hcnREYXRhLT52aWV3LmggLSAxOwotCi0gICAgaWYgKChub3cgPj0gcHJp
di0+YW5pbWF0ZWRab29tLnRpbWUuZW5kKQotICAgICAgICB8fCAobm93IDwgcHJpdi0+YW5pbWF0
ZWRab29tLnRpbWUuc3RhcnQpKSB7Ci0gICAgICAgIF9ld2tfdmlld196b29tX2FuaW1hdGVkX2Zp
bmlzaChzbWFydERhdGEpOwotICAgICAgICBld2tfdmlld196b29tX3NldChzbWFydERhdGEtPnNl
bGYsIHByaXYtPmFuaW1hdGVkWm9vbS56b29tLmVuZCwgY2VudGVyWCwgY2VudGVyWSk7Ci0gICAg
ICAgIHNtYXJ0RGF0YS0+YXBpLT5zYy5jYWxjdWxhdGUoc21hcnREYXRhLT5zZWxmKTsKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHNtYXJ0RGF0YS0+YW5pbWF0ZWRfem9vbS56
b29tLmN1cnJlbnQgPSBfZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9jdXJyZW50KHByaXYpOwotICAg
IHNtYXJ0RGF0YS0+YXBpLT56b29tX3dlYWtfc2V0KHNtYXJ0RGF0YSwgc21hcnREYXRhLT5hbmlt
YXRlZF96b29tLnpvb20uY3VycmVudCwgY2VudGVyWCwgY2VudGVyWSk7Ci0gICAgcmV0dXJuIHRy
dWU7Ci19Ci0KLXN0YXRpYyB2b2lkIF9ld2tfdmlld196b29tX2FuaW1hdGlvbl9zdGFydChFd2tf
Vmlld19TbWFydF9EYXRhKiBzbWFydERhdGEpCi17Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1Jf
UkVUVVJOKHNtYXJ0RGF0YSwgcHJpdik7Ci0gICAgaWYgKHByaXYtPmFuaW1hdGVkWm9vbS5hbmlt
YXRvcikKLSAgICAgICAgcmV0dXJuOwotICAgIHByaXYtPmFuaW1hdGVkWm9vbS5hbmltYXRvciA9
IGVjb3JlX2FuaW1hdG9yX2FkZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKF9ld2tfdmlld196b29tX2FuaW1hdG9yX2NiLCBzbWFydERhdGEpOwotfQotCi1zdGF0aWMg
V2ViQ29yZTo6Vmlld3BvcnRBdHRyaWJ1dGVzIF9ld2tfdmlld192aWV3cG9ydF9hdHRyaWJ1dGVz
X2NvbXB1dGUoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2KQotewotICAgIGludCBkZXNrdG9w
V2lkdGggPSA5ODA7Ci0gICAgV2ViQ29yZTo6SW50UmVjdCBhdmFpbGFibGVSZWN0ID0gZW5jbG9z
aW5nSW50UmVjdChwcml2LT5wYWdlLT5jaHJvbWUoKS5jbGllbnQoKS5wYWdlUmVjdCgpKTsKLSAg
ICBXZWJDb3JlOjpJbnRSZWN0IGRldmljZVJlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KHByaXYtPnBh
Z2UtPmNocm9tZSgpLmNsaWVudCgpLndpbmRvd1JlY3QoKSk7Ci0KLSAgICBXZWJDb3JlOjpWaWV3
cG9ydEF0dHJpYnV0ZXMgYXR0cmlidXRlcyA9IFdlYkNvcmU6OmNvbXB1dGVWaWV3cG9ydEF0dHJp
YnV0ZXMocHJpdi0+dmlld3BvcnRBcmd1bWVudHMsIGRlc2t0b3BXaWR0aCwgZGV2aWNlUmVjdC53
aWR0aCgpLCBkZXZpY2VSZWN0LmhlaWdodCgpLCBwcml2LT5wYWdlLT5kZXZpY2VTY2FsZUZhY3Rv
cigpLCBhdmFpbGFibGVSZWN0LnNpemUoKSk7Ci0gICAgV2ViQ29yZTo6cmVzdHJpY3RNaW5pbXVt
U2NhbGVGYWN0b3JUb1ZpZXdwb3J0U2l6ZShhdHRyaWJ1dGVzLCBhdmFpbGFibGVSZWN0LnNpemUo
KSwgcHJpdi0+cGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSk7Ci0gICAgV2ViQ29yZTo6cmVzdHJp
Y3RTY2FsZUZhY3RvclRvSW5pdGlhbFNjYWxlSWZOb3RVc2VyU2NhbGFibGUoYXR0cmlidXRlcyk7
Ci0KLSAgICByZXR1cm4gYXR0cmlidXRlczsKLX0KLQotc3RhdGljIEVpbmFfQm9vbCBfZXdrX3Zp
ZXdfc21hcnRfZGlzYWJsZV9yZW5kZXIoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhKQot
ewotICAgIFdBUk4oIm5vdCBzdXBwb3J0ZWQgYnkgZW5naW5lLiBzbWFydERhdGE9JXAiLCBzbWFy
dERhdGEpOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQotc3RhdGljIEVpbmFfQm9vbCBfZXdrX3Zp
ZXdfc21hcnRfZW5hYmxlX3JlbmRlcihFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEpCi17
Ci0gICAgV0FSTigibm90IHN1cHBvcnRlZCBieSBlbmdpbmUuIHNtYXJ0RGF0YT0lcCIsIHNtYXJ0
RGF0YSk7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1zdGF0aWMgY29uc3QgY2hhciogX2V3a192
aWV3X2VkaXRvcl9jb21tYW5kX3N0cmluZ19nZXQoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiwgRXdr
X0VkaXRvcl9Db21tYW5kIGV3a0NvbW1hbmQpCi17Ci0gICAgc3RhdGljIEVmbFVuaXF1ZVB0cjxF
aW5hX0hhc2g+IGVkaXRvckNvbW1hbmRIYXNoOwotCi0gICAgaWYgKCFlZGl0b3JDb21tYW5kSGFz
aCkgewotICAgICAgICBlZGl0b3JDb21tYW5kSGFzaCA9IEVmbFVuaXF1ZVB0cjxFaW5hX0hhc2g+
KGVpbmFfaGFzaF9pbnQzMl9uZXcoMCkpOwotICAgICAgICBmb3IgKGludCBpID0gMDsgZWRpdG9y
Q29tbWFuZHNbaV0uZXdrRWRpdG9yQ29tbWFuZCAhPSBFV0tfRURJVE9SX0NPTU1BTkRfTk9ORTsg
aSsrKQotICAgICAgICAgICAgZWluYV9oYXNoX2FkZChlZGl0b3JDb21tYW5kSGFzaC5nZXQoKSwg
JmVkaXRvckNvbW1hbmRzW2ldLmV3a0VkaXRvckNvbW1hbmQsIGVkaXRvckNvbW1hbmRzW2ldLmVk
aXRvckNvbW1hbmRTdHJpbmcpOwotICAgIH0KLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBjaGFyKj4oZWluYV9oYXNoX2ZpbmQoZWRpdG9yQ29tbWFuZEhhc2guZ2V0KCksICZld2tD
b21tYW5kKSk7Ci19Ci0KLUVpbmFfQm9vbCBld2tfdmlld19zbWFydF9zZXQoRXdrX1ZpZXdfU21h
cnRfQ2xhc3MqIGFwaSkKLXsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoYXBp
LCBmYWxzZSk7Ci0KLSAgICBpZiAoYXBpLT52ZXJzaW9uICE9IEVXS19WSUVXX1NNQVJUX0NMQVNT
X1ZFUlNJT04pIHsKLSAgICAgICAgRUlOQV9MT0dfQ1JJVAotICAgICAgICAgICAgKCJFd2tfVmll
d19TbWFydF9DbGFzcyAlcCBpcyB2ZXJzaW9uICVsdSB3aGlsZSAlbHUgd2FzIGV4cGVjdGVkLiIs
Ci0gICAgICAgICAgICBhcGksIGFwaS0+dmVyc2lvbiwgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfVkVS
U0lPTik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBpZiAoRUlOQV9VTkxJ
S0VMWSghX3BhcmVudF9zYy5hZGQpKQotICAgICAgICBldmFzX29iamVjdF9zbWFydF9jbGlwcGVk
X3NtYXJ0X3NldCgmX3BhcmVudF9zYyk7Ci0KLSAgICBldmFzX29iamVjdF9zbWFydF9jbGlwcGVk
X3NtYXJ0X3NldCgmYXBpLT5zYyk7Ci0gICAgYXBpLT5zYy5hZGQgPSBfZXdrX3ZpZXdfc21hcnRf
YWRkOwotICAgIGFwaS0+c2MuZGVsID0gX2V3a192aWV3X3NtYXJ0X2RlbDsKLSAgICBhcGktPnNj
LnJlc2l6ZSA9IF9ld2tfdmlld19zbWFydF9yZXNpemU7Ci0gICAgYXBpLT5zYy5tb3ZlID0gX2V3
a192aWV3X3NtYXJ0X21vdmU7Ci0gICAgYXBpLT5zYy5jYWxjdWxhdGUgPSBfZXdrX3ZpZXdfc21h
cnRfY2FsY3VsYXRlOwotICAgIGFwaS0+c2Muc2hvdyA9IF9ld2tfdmlld19zbWFydF9zaG93Owot
ICAgIGFwaS0+c2MuaGlkZSA9IF9ld2tfdmlld19zbWFydF9oaWRlOwotICAgIGFwaS0+c2MuZGF0
YSA9IGV3a1ZpZXdUeXBlU3RyaW5nOyAvKiB1c2VkIGJ5IHR5cGUgY2hlY2tpbmcgKi8KLSAgICBh
cGktPnNjLmNhbGxiYWNrcyA9IF9ld2tfdmlld19jYWxsYmFja19uYW1lczsKLQotICAgIGFwaS0+
Y29udGVudHNfcmVzaXplID0gX2V3a192aWV3X3NtYXJ0X2NvbnRlbnRzX3Jlc2l6ZTsKLSAgICBh
cGktPnpvb21fc2V0ID0gX2V3a192aWV3X3NtYXJ0X3pvb21fc2V0OwotICAgIGFwaS0+em9vbV93
ZWFrX3NldCA9IF9ld2tfdmlld19zbWFydF96b29tX3dlYWtfc2V0OwotICAgIGFwaS0+em9vbV93
ZWFrX3Ntb290aF9zY2FsZV9zZXQgPSBfZXdrX3ZpZXdfc21hcnRfem9vbV93ZWFrX3Ntb290aF9z
Y2FsZV9zZXQ7Ci0gICAgYXBpLT5kaXNhYmxlX3JlbmRlciA9IF9ld2tfdmlld19zbWFydF9kaXNh
YmxlX3JlbmRlcjsKLSAgICBhcGktPmVuYWJsZV9yZW5kZXIgPSBfZXdrX3ZpZXdfc21hcnRfZW5h
YmxlX3JlbmRlcjsKLQotICAgIGFwaS0+Zm9jdXNfaW4gPSBfZXdrX3ZpZXdfc21hcnRfZm9jdXNf
aW47Ci0gICAgYXBpLT5mb2N1c19vdXQgPSBfZXdrX3ZpZXdfc21hcnRfZm9jdXNfb3V0OwotICAg
IGFwaS0+bW91c2Vfd2hlZWwgPSBfZXdrX3ZpZXdfc21hcnRfbW91c2Vfd2hlZWw7Ci0gICAgYXBp
LT5tb3VzZV9kb3duID0gX2V3a192aWV3X3NtYXJ0X21vdXNlX2Rvd247Ci0gICAgYXBpLT5tb3Vz
ZV91cCA9IF9ld2tfdmlld19zbWFydF9tb3VzZV91cDsKLSAgICBhcGktPm1vdXNlX21vdmUgPSBf
ZXdrX3ZpZXdfc21hcnRfbW91c2VfbW92ZTsKLSAgICBhcGktPmtleV9kb3duID0gX2V3a192aWV3
X3NtYXJ0X2tleV9kb3duOwotICAgIGFwaS0+a2V5X3VwID0gX2V3a192aWV3X3NtYXJ0X2tleV91
cDsKLQotICAgIGFwaS0+YWRkX2NvbnNvbGVfbWVzc2FnZSA9IF9ld2tfdmlld19zbWFydF9hZGRf
Y29uc29sZV9tZXNzYWdlOwotICAgIGFwaS0+cnVuX2phdmFzY3JpcHRfYWxlcnQgPSBfZXdrX3Zp
ZXdfc21hcnRfcnVuX2phdmFzY3JpcHRfYWxlcnQ7Ci0gICAgYXBpLT5ydW5famF2YXNjcmlwdF9j
b25maXJtID0gX2V3a192aWV3X3NtYXJ0X3J1bl9qYXZhc2NyaXB0X2NvbmZpcm07Ci0gICAgYXBp
LT5ydW5fYmVmb3JlX3VubG9hZF9jb25maXJtID0gX2V3a192aWV3X3NtYXJ0X3J1bl9iZWZvcmVf
dW5sb2FkX2NvbmZpcm07Ci0gICAgYXBpLT5ydW5famF2YXNjcmlwdF9wcm9tcHQgPSBfZXdrX3Zp
ZXdfc21hcnRfcnVuX2phdmFzY3JpcHRfcHJvbXB0OwotICAgIGFwaS0+c2hvdWxkX2ludGVycnVw
dF9qYXZhc2NyaXB0ID0gX2V3a192aWV3X3NtYXJ0X3Nob3VsZF9pbnRlcnJ1cHRfamF2YXNjcmlw
dDsKLQotICAgIHJldHVybiB0cnVlOwotfQotCi1zdGF0aWMgaW5saW5lIEV2YXNfU21hcnQqIF9l
d2tfdmlld19zbWFydF9jbGFzc19uZXcoKQotewotICAgIHN0YXRpYyBFd2tfVmlld19TbWFydF9D
bGFzcyBhcGkgPSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUX05BTUVfVkVSU0lPTihld2tWaWV3
VHlwZVN0cmluZyk7Ci0gICAgc3RhdGljIEV2YXNfU21hcnQqIHNtYXJ0ID0gMDsKLQotICAgIGlm
IChFSU5BX1VOTElLRUxZKCFzbWFydCkpIHsKLSAgICAgICAgZXdrX3ZpZXdfc21hcnRfc2V0KCZh
cGkpOwotICAgICAgICBzbWFydCA9IGV2YXNfc21hcnRfY2xhc3NfbmV3KCZhcGkuc2MpOwotICAg
IH0KLQotICAgIHJldHVybiBzbWFydDsKLX0KLQotRXZhc19PYmplY3QqIGV3a192aWV3X2FkZChF
dmFzKiBjYW52YXMpCi17Ci0gICAgcmV0dXJuIGV2YXNfb2JqZWN0X3NtYXJ0X2FkZChjYW52YXMs
IF9ld2tfdmlld19zbWFydF9jbGFzc19uZXcoKSk7Ci19Ci0KLXZvaWQgZXdrX3ZpZXdfZml4ZWRf
bGF5b3V0X3NpemVfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFdmFzX0Nvb3JkIHdpZHRoLCBF
dmFzX0Nvb3JkIGhlaWdodCkKLXsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1Zp
ZXcsIHNtYXJ0RGF0YSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0
YSwgcHJpdik7Ci0KLSAgICBXZWJDb3JlOjpGcmFtZVZpZXcqIHZpZXcgPSBwcml2LT5wYWdlLT5t
YWluRnJhbWUoKS52aWV3KCk7Ci0gICAgaWYgKCF2aWV3KQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBXZWJDb3JlOjpJbnRTaXplIGxheW91dFNpemUod2lkdGgsIGhlaWdodCk7Ci0gICAgaWYgKGxh
eW91dFNpemUud2lkdGgoKSA8PSAwICYmIGxheW91dFNpemUuaGVpZ2h0KCkgPD0gMCkgewotICAg
ICAgICBpZiAoIXZpZXctPnVzZUZpeGVkTGF5b3V0KCkpCi0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIHZpZXctPnNldFVzZUZpeGVkTGF5b3V0KGZhbHNlKTsKLSAgICB9IGVsc2UgewotICAg
ICAgICBXZWJDb3JlOjpJbnRTaXplIGZpeGVkTGF5b3V0U2l6ZSA9IHZpZXctPmZpeGVkTGF5b3V0
U2l6ZSgpOwotICAgICAgICBpZiAoZml4ZWRMYXlvdXRTaXplID09IGxheW91dFNpemUpCi0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIHZpZXctPnNldEZpeGVkTGF5b3V0U2l6ZShsYXlvdXRT
aXplKTsKLSAgICAgICAgdmlldy0+c2V0VXNlRml4ZWRMYXlvdXQodHJ1ZSk7Ci0gICAgfQotCi0g
ICAgdmlldy0+c2V0TmVlZHNMYXlvdXQoKTsKLX0KLQotdm9pZCBld2tfdmlld19maXhlZF9sYXlv
dXRfc2l6ZV9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV2YXNfQ29vcmQqIHdpZHRo
LCBFdmFzX0Nvb3JkKiBoZWlnaHQpCi17Ci0gICAgaWYgKHdpZHRoKQotICAgICAgICAqd2lkdGgg
PSAwOwotICAgIGlmIChoZWlnaHQpCi0gICAgICAgICpoZWlnaHQgPSAwOwotICAgIEVXS19WSUVX
X1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhKTsKLSAgICBFV0tfVklFV19QUklW
X0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2KTsKLSAgICBXZWJDb3JlOjpGcmFtZVZpZXcq
IHZpZXcgPSBwcml2LT5wYWdlLT5tYWluRnJhbWUoKS52aWV3KCk7Ci0gICAgaWYgKHZpZXctPnVz
ZUZpeGVkTGF5b3V0KCkpIHsKLSAgICAgICAgV2ViQ29yZTo6SW50U2l6ZSBzaXplID0gdmlldy0+
Zml4ZWRMYXlvdXRTaXplKCk7Ci0gICAgICAgIGlmICh3aWR0aCkKLSAgICAgICAgICAgICp3aWR0
aCA9IHNpemUud2lkdGgoKTsKLSAgICAgICAgaWYgKGhlaWdodCkKLSAgICAgICAgICAgICpoZWln
aHQgPSBzaXplLmhlaWdodCgpOwotICAgIH0KLX0KLQotdm9pZCBld2tfdmlld190aGVtZV9zZXQo
RXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IGNoYXIqIHBhdGgpCi17Ci0gICAgRVdLX1ZJRVdf
U0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEpOwotICAgIEVXS19WSUVXX1BSSVZf
R0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYpOwotICAgIGlmICghZWluYV9zdHJpbmdzaGFy
ZV9yZXBsYWNlKCZwcml2LT5zZXR0aW5ncy50aGVtZSwgcGF0aCkpCi0gICAgICAgIHJldHVybjsK
LQotICAgIFdlYkNvcmU6OlJlbmRlclRoZW1lRWZsJiB0aGVtZSA9IHN0YXRpY19jYXN0PFdlYkNv
cmU6OlJlbmRlclRoZW1lRWZsJj4ocHJpdi0+cGFnZS0+dGhlbWUoKSk7Ci0gICAgdGhlbWUuc2V0
VGhlbWVQYXRoKHBhdGgpOwotfQotCi1jb25zdCBjaGFyKiBld2tfdmlld190aGVtZV9nZXQoY29u
c3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVS
Tihld2tWaWV3LCBzbWFydERhdGEsIDApOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVS
TihzbWFydERhdGEsIHByaXYsIDApOwotICAgIHJldHVybiBwcml2LT5zZXR0aW5ncy50aGVtZTsK
LX0KLQotRXZhc19PYmplY3QqIGV3a192aWV3X2ZyYW1lX21haW5fZ2V0KGNvbnN0IEV2YXNfT2Jq
ZWN0KiBld2tWaWV3KQotewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywg
c21hcnREYXRhLCAwKTsKLSAgICByZXR1cm4gc21hcnREYXRhLT5tYWluX2ZyYW1lOwotfQotCi1F
dmFzX09iamVjdCogZXdrX3ZpZXdfZnJhbWVfZm9jdXNlZF9nZXQoY29uc3QgRXZhc19PYmplY3Qq
IGV3a1ZpZXcpCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFy
dERhdGEsIDApOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHBy
aXYsIDApOwotCi0gICAgV2ViQ29yZTo6RnJhbWUqIGNvcmUgPSBwcml2LT5wYWdlLT5mb2N1c0Nv
bnRyb2xsZXIoKS5mb2N1c2VkRnJhbWUoKTsKLSAgICBpZiAoIWNvcmUpCi0gICAgICAgIHJldHVy
biAwOwotCi0gICAgV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmwmIGNsaWVudCA9IHN0YXRp
Y19jYXN0PFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsJj4oY29yZS0+bG9hZGVyKCkuY2xp
ZW50KCkpOwotICAgIHJldHVybiBjbGllbnQud2ViRnJhbWUoKTsKLX0KLQotRWluYV9Cb29sIGV3
a192aWV3X3VyaV9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IGNoYXIqIHVyaSkKLXsK
LSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2Up
OwotICAgIHJldHVybiBld2tfZnJhbWVfdXJpX3NldChzbWFydERhdGEtPm1haW5fZnJhbWUsIHVy
aSk7Ci19Ci0KLWNvbnN0IGNoYXIqIGV3a192aWV3X3VyaV9nZXQoY29uc3QgRXZhc19PYmplY3Qq
IGV3a1ZpZXcpCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFy
dERhdGEsIDApOwotICAgIHJldHVybiBld2tfZnJhbWVfdXJpX2dldChzbWFydERhdGEtPm1haW5f
ZnJhbWUpOwotfQotCi1jb25zdCBFd2tfVGV4dF9XaXRoX0RpcmVjdGlvbiogZXdrX3ZpZXdfdGl0
bGVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQotewotICAgIEVXS19WSUVXX1NEX0dF
VF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCAwKTsKLSAgICByZXR1cm4gZXdrX2ZyYW1l
X3RpdGxlX2dldChzbWFydERhdGEtPm1haW5fZnJhbWUpOwotfQotCi1FaW5hX0Jvb2wgZXdrX3Zp
ZXdfZWRpdGFibGVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQotewotICAgIEVXS19W
SUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7Ci0gICAgcmV0
dXJuIGV3a19mcmFtZV9lZGl0YWJsZV9nZXQoc21hcnREYXRhLT5tYWluX2ZyYW1lKTsKLX0KLQot
dm9pZCBld2tfdmlld19iZ19jb2xvcl9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGludCByZWQs
IGludCBncmVlbiwgaW50IGJsdWUsIGludCBhbHBoYSkKLXsKLSAgICBFV0tfVklFV19TRF9HRVRf
T1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9S
RVRVUk4oc21hcnREYXRhLT5hcGkpOwotCi0gICAgaWYgKGFscGhhIDwgMCkgewotICAgICAgICBX
QVJOKCJBbHBoYSBsZXNzIHRoYW4gemVybyAoJWQpLiIsIGFscGhhKTsKLSAgICAgICAgYWxwaGEg
PSAwOwotICAgIH0gZWxzZSBpZiAoYWxwaGEgPiAyNTUpIHsKLSAgICAgICAgV0FSTigiQWxwaGEg
aXMgbGFyZ2VyIHRoYW4gMjU1ICglZCkuIiwgYWxwaGEpOwotICAgICAgICBhbHBoYSA9IDI1NTsK
LSAgICB9Ci0KLSNkZWZpbmUgQ0hFQ0tfUFJFTVVMX0NPTE9SKGNvbG9yLCBhbHBoYSkgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGlmIChjb2xvciA8IDApIHsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
LSAgICAgICAgV0FSTigiQ29sb3IgY29tcG9uZW50ICIgI2NvbG9yICIgaXMgbGVzcyB0aGFuIHpl
cm8gKCVkKS4iLCBjb2xvcik7ICAgICAgICAgXAotICAgICAgICBjb2xvciA9IDA7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9
IGVsc2UgaWYgKGNvbG9yID4gYWxwaGEpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAotICAgICAgICBXQVJOKCJDb2xvciBjb21wb25lbnQgIiAjY29s
b3IgIiBpcyBncmVhdGVyIHRoYW4gYWxwaGEgKCVkLCBhbHBoYT0lZCkuIiwgXAotICAgICAgICAg
ICAgY29sb3IsIGFscGhhKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCi0gICAgICAgIGNvbG9yID0gYWxwaGE7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9Ci0gICAgQ0hF
Q0tfUFJFTVVMX0NPTE9SKHJlZCwgYWxwaGEpOwotICAgIENIRUNLX1BSRU1VTF9DT0xPUihncmVl
biwgYWxwaGEpOwotICAgIENIRUNLX1BSRU1VTF9DT0xPUihibHVlLCBhbHBoYSk7Ci0jdW5kZWYg
Q0hFQ0tfUFJFTVVMX0NPTE9SCi0KLSAgICBzbWFydERhdGEtPmJnX2NvbG9yLnIgPSByZWQ7Ci0g
ICAgc21hcnREYXRhLT5iZ19jb2xvci5nID0gZ3JlZW47Ci0gICAgc21hcnREYXRhLT5iZ19jb2xv
ci5iID0gYmx1ZTsKLSAgICBzbWFydERhdGEtPmJnX2NvbG9yLmEgPSBhbHBoYTsKLQotICAgIGV2
YXNfb2JqZWN0X2ltYWdlX2FscGhhX3NldChzbWFydERhdGEtPmltYWdlLCBhbHBoYSA8IDI1NSk7
Ci0KLSAgICBXZWJDb3JlOjpGcmFtZVZpZXcqIHZpZXcgPSBzbWFydERhdGEtPl9wcml2LT5wYWdl
LT5tYWluRnJhbWUoKS52aWV3KCk7Ci0gICAgaWYgKHZpZXcpIHsKLSAgICAgICAgV2ViQ29yZTo6
Q29sb3IgY29sb3I7Ci0KLSAgICAgICAgaWYgKCFhbHBoYSkKLSAgICAgICAgICAgIGNvbG9yID0g
V2ViQ29yZTo6Q29sb3IoMCwgMCwgMCwgMCk7Ci0gICAgICAgIGVsc2UgaWYgKGFscGhhID09IDI1
NSkKLSAgICAgICAgICAgIGNvbG9yID0gV2ViQ29yZTo6Q29sb3IocmVkLCBncmVlbiwgYmx1ZSwg
YWxwaGEpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBjb2xvciA9IFdlYkNvcmU6OkNvbG9y
KHJlZCAqIDI1NSAvIGFscGhhLCBncmVlbiAqIDI1NSAvIGFscGhhLCBibHVlICogMjU1IC8gYWxw
aGEsIGFscGhhKTsKLQotICAgICAgICB2aWV3LT51cGRhdGVCYWNrZ3JvdW5kUmVjdXJzaXZlbHko
Y29sb3IsICFhbHBoYSk7Ci0gICAgfQotfQotCi12b2lkIGV3a192aWV3X2JnX2NvbG9yX2dldChj
b25zdCBFdmFzX09iamVjdCogZXdrVmlldywgaW50KiByZWQsIGludCogZ3JlZW4sIGludCogYmx1
ZSwgaW50KiBhbHBoYSkKLXsKLSAgICBpZiAocmVkKQotICAgICAgICAqcmVkID0gMDsKLSAgICBp
ZiAoZ3JlZW4pCi0gICAgICAgICpncmVlbiA9IDA7Ci0gICAgaWYgKGJsdWUpCi0gICAgICAgICpi
bHVlID0gMDsKLSAgICBpZiAoYWxwaGEpCi0gICAgICAgICphbHBoYSA9IDA7Ci0gICAgRVdLX1ZJ
RVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEpOwotICAgIGlmIChyZWQpCi0g
ICAgICAgICpyZWQgPSBzbWFydERhdGEtPmJnX2NvbG9yLnI7Ci0gICAgaWYgKGdyZWVuKQotICAg
ICAgICAqZ3JlZW4gPSBzbWFydERhdGEtPmJnX2NvbG9yLmc7Ci0gICAgaWYgKGJsdWUpCi0gICAg
ICAgICpibHVlID0gc21hcnREYXRhLT5iZ19jb2xvci5iOwotICAgIGlmIChhbHBoYSkKLSAgICAg
ICAgKmFscGhhID0gc21hcnREYXRhLT5iZ19jb2xvci5hOwotfQotCi1FaW5hX0Jvb2wgZXdrX3Zp
ZXdfdGV4dF9zZWFyY2goY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IGNoYXIqIHN0
cmluZywgRWluYV9Cb29sIGNhc2VTZW5zaXRpdmUsIEVpbmFfQm9vbCBmb3J3YXJkLCBFaW5hX0Jv
b2wgd3JhcCkKLXsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0
RGF0YSwgZmFsc2UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEs
IHByaXYsIGZhbHNlKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc3RyaW5n
LCBmYWxzZSk7Ci0KLSAgICBXZWJDb3JlOjpGaW5kT3B0aW9ucyBvcHRpb25zID0gKGNhc2VTZW5z
aXRpdmUgPyAwIDogV2ViQ29yZTo6Q2FzZUluc2Vuc2l0aXZlKSB8IChmb3J3YXJkID8gMCA6IFdl
YkNvcmU6OkJhY2t3YXJkcykgfCAod3JhcCA/IFdlYkNvcmU6OldyYXBBcm91bmQgOiAwKTsKLSAg
ICByZXR1cm4gcHJpdi0+cGFnZS0+ZmluZFN0cmluZyhTdHJpbmc6OmZyb21VVEY4KHN0cmluZyks
IG9wdGlvbnMpOwotfQotCi0vKioKLSAqIE1hcmsgbWF0Y2hlcyB0aGUgZ2l2ZW4gdGV4dCBzdHJp
bmcgaW4gZG9jdW1lbnQuCi0gKgotICogQHBhcmFtIGV3a1ZpZXcgdmlldyBvYmplY3Qgd2hlcmUg
dG8gc2VhcmNoIHRleHQuCi0gKiBAcGFyYW0gc3RyaW5nIHJlZmVyZW5jZSBzdHJpbmcgdG8gbWF0
Y2guCi0gKiBAcGFyYW0gY2FzZVNlbnNpdGl2ZSBpZiBtYXRjaCBzaG91bGQgYmUgY2FzZSBzZW5z
aXRpdmUgb3Igbm90LgotICogQHBhcmFtIGhlaWdodGlnaGxpZ2h0IGlmIG1hdGNoZXMgc2hvdWxk
IGJlIGhpZ2hsaWdodGVkLgotICogQHBhcmFtIGxpbWl0IG1heGltdW0gYW1vdW50IG9mIG1hdGNo
ZXMsIG9yIHplcm8gdG8gdW5saW1pdGVkLgotICoKLSAqIEByZXR1cm4gbnVtYmVyIG9mIG1hdGNo
ZXMuCi0gKi8KLXVuc2lnbmVkIGludCBld2tfdmlld190ZXh0X21hdGNoZXNfbWFyayhFdmFzX09i
amVjdCogZXdrVmlldywgY29uc3QgY2hhciogc3RyaW5nLCBFaW5hX0Jvb2wgY2FzZVNlbnNpdGl2
ZSwgRWluYV9Cb29sIGhpZ2hsaWdodCwgdW5zaWduZWQgaW50IGxpbWl0KQotewotICAgIEVXS19W
SUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCAwKTsKLSAgICBFV0tfVklF
V19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCAwKTsKLSAgICBFSU5BX1NBRkVU
WV9PTl9OVUxMX1JFVFVSTl9WQUwoc3RyaW5nLCAwKTsKLSAgICBXVEY6OlRleHRDYXNlU2Vuc2l0
aXZpdHkgc2Vuc2l0aXZlOwotCi0gICAgaWYgKGNhc2VTZW5zaXRpdmUpCi0gICAgICAgIHNlbnNp
dGl2ZSA9IFdURjo6VGV4dENhc2VTZW5zaXRpdmU7Ci0gICAgZWxzZQotICAgICAgICBzZW5zaXRp
dmUgPSBXVEY6OlRleHRDYXNlSW5zZW5zaXRpdmU7Ci0KLSAgICByZXR1cm4gcHJpdi0+cGFnZS0+
bWFya0FsbE1hdGNoZXNGb3JUZXh0KFN0cmluZzo6ZnJvbVVURjgoc3RyaW5nKSwgc2Vuc2l0aXZl
LCBoaWdobGlnaHQsIGxpbWl0KTsKLX0KLQotRWluYV9Cb29sIGV3a192aWV3X3RleHRfbWF0Y2hl
c191bm1hcmtfYWxsKEV2YXNfT2JqZWN0KiBld2tWaWV3KQotewotICAgIEVXS19WSUVXX1NEX0dF
VF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7Ci0gICAgRVdLX1ZJRVdfUFJJ
Vl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwotICAgIHByaXYtPnBhZ2Ut
PnVubWFya0FsbFRleHRNYXRjaGVzKCk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLUVpbmFfQm9v
bCBld2tfdmlld190ZXh0X21hdGNoZXNfaGlnaGxpZ2h0X3NldChFdmFzX09iamVjdCogZXdrVmll
dywgRWluYV9Cb29sIGhpZ2hsaWdodCkKLXsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJO
KGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwotICAgIHJldHVybiBld2tfZnJhbWVfdGV4dF9t
YXRjaGVzX2hpZ2hsaWdodF9zZXQoc21hcnREYXRhLT5tYWluX2ZyYW1lLCBoaWdobGlnaHQpOwot
fQotCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfdGV4dF9tYXRjaGVzX2hpZ2hsaWdodF9nZXQoY29uc3Qg
RXZhc19PYmplY3QqIGV3a1ZpZXcpCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihl
d2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKLSAgICByZXR1cm4gZXdrX2ZyYW1lX3RleHRfbWF0
Y2hlc19oaWdobGlnaHRfZ2V0KHNtYXJ0RGF0YS0+bWFpbl9mcmFtZSk7Ci19Ci0KLUVpbmFfQm9v
bCBld2tfdmlld19lZGl0YWJsZV9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEVpbmFfQm9vbCBl
ZGl0YWJsZSkKLXsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0
RGF0YSwgZmFsc2UpOwotICAgIHJldHVybiBld2tfZnJhbWVfZWRpdGFibGVfc2V0KHNtYXJ0RGF0
YS0+bWFpbl9mcmFtZSwgZWRpdGFibGUpOwotfQotCi1jb25zdCBjaGFyKiBld2tfdmlld19zZWxl
Y3Rpb25fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQotewotICAgIEVXS19WSUVXX1NE
X0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCAwKTsKLSAgICBFV0tfVklFV19QUklW
X0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCAwKTsKLSAgICBDU3RyaW5nIHNlbGVjdGVk
U3RyaW5nID0gcHJpdi0+cGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1l
KCkuZWRpdG9yKCkuc2VsZWN0ZWRUZXh0KCkudXRmOCgpOwotICAgIGlmIChzZWxlY3RlZFN0cmlu
Zy5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIGVpbmFfc3RyaW5nc2hh
cmVfYWRkKHNlbGVjdGVkU3RyaW5nLmRhdGEoKSk7Ci19Ci0KLUVpbmFfQm9vbCBld2tfdmlld19l
ZGl0b3JfY29tbWFuZF9leGVjdXRlKGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBF
d2tfRWRpdG9yX0NvbW1hbmQgY29tbWFuZCwgY29uc3QgY2hhciogdmFsdWUpCi17Ci0gICAgRVdL
X1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKLSAgICBF
V0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBmYWxzZSk7Ci0KLSAg
ICBjb25zdCBjaGFyKiBjb21tYW5kU3RyaW5nID0gX2V3a192aWV3X2VkaXRvcl9jb21tYW5kX3N0
cmluZ19nZXQocHJpdiwgY29tbWFuZCk7Ci0gICAgaWYgKCFjb21tYW5kU3RyaW5nKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gcHJpdi0+cGFnZS0+Zm9jdXNDb250cm9sbGVy
KCkuZm9jdXNlZE9yTWFpbkZyYW1lKCkuZWRpdG9yKCkuY29tbWFuZChjb21tYW5kU3RyaW5nKS5l
eGVjdXRlKFdURjo6U3RyaW5nOjpmcm9tVVRGOCh2YWx1ZSkpOwotfQotCi1FaW5hX0Jvb2wgZXdr
X3ZpZXdfY29udGV4dF9tZW51X2ZvcndhcmRfZXZlbnQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNv
bnN0IEV2YXNfRXZlbnRfTW91c2VfRG93biogZG93bkV2ZW50KQotewotI2lmIEVOQUJMRShDT05U
RVhUX01FTlVTKQotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnRE
YXRhLCBmYWxzZSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwg
cHJpdiwgZmFsc2UpOwotICAgIEVpbmFfQm9vbCBtb3VzZV9wcmVzc19oYW5kbGVkID0gZmFsc2U7
Ci0KLSAgICBwcml2LT5wYWdlLT5jb250ZXh0TWVudUNvbnRyb2xsZXIoKS5jbGVhckNvbnRleHRN
ZW51KCk7Ci0gICAgaWYgKHByaXYtPmNvbnRleHRNZW51KQotICAgICAgICBld2tfY29udGV4dF9t
ZW51X2ZyZWUocHJpdi0+Y29udGV4dE1lbnUpOwotCi0gICAgV2ViQ29yZTo6RnJhbWUmIG1haW5G
cmFtZSA9IHByaXYtPnBhZ2UtPm1haW5GcmFtZSgpOwotICAgIEV2YXNfQ29vcmQgeCwgeTsKLSAg
ICBldmFzX29iamVjdF9nZW9tZXRyeV9nZXQoc21hcnREYXRhLT5zZWxmLCAmeCwgJnksIDAsIDAp
OwotCi0gICAgV2ViQ29yZTo6UGxhdGZvcm1Nb3VzZUV2ZW50IGV2ZW50KGRvd25FdmVudCwgV2Vi
Q29yZTo6SW50UG9pbnQoeCwgeSkpOwotCi0gICAgaWYgKG1haW5GcmFtZS52aWV3KCkpIHsKLSAg
ICAgICAgbW91c2VfcHJlc3NfaGFuZGxlZCA9Ci0gICAgICAgICAgICBtYWluRnJhbWUuZXZlbnRI
YW5kbGVyKCkuaGFuZGxlTW91c2VQcmVzc0V2ZW50KGV2ZW50KTsKLSAgICB9Ci0KLSAgICBpZiAo
IW1haW5GcmFtZS5ldmVudEhhbmRsZXIoKS5zZW5kQ29udGV4dE1lbnVFdmVudChldmVudCkpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIFdlYkNvcmU6OkNvbnRleHRNZW51KiBjb3JlTWVu
dSA9Ci0gICAgICAgIHByaXYtPnBhZ2UtPmNvbnRleHRNZW51Q29udHJvbGxlcigpLmNvbnRleHRN
ZW51KCk7Ci0gICAgaWYgKCFjb3JlTWVudSkgewotICAgICAgICAvLyBXZWJDb3JlIGRlY2lkZWQg
bm90IHRvIGNyZWF0ZSBhIGNvbnRleHQgbWVudSwgcmV0dXJuIHRydWUgaWYgZXZlbnQKLSAgICAg
ICAgLy8gd2FzIGhhbmRsZWQgYnkgaGFuZGxlTW91c2VSZWxlYXNlRXZlbnQKLSAgICAgICAgcmV0
dXJuIG1vdXNlX3ByZXNzX2hhbmRsZWQ7Ci0gICAgfQotCi0gICAgcHJpdi0+Y29udGV4dE1lbnUg
PSBld2tfY29udGV4dF9tZW51X25ldyhld2tWaWV3LCAmcHJpdi0+cGFnZS0+Y29udGV4dE1lbnVD
b250cm9sbGVyKCksIGNvcmVNZW51KTsKLSAgICBpZiAoIXByaXYtPmNvbnRleHRNZW51KQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBld2tfY29udGV4dF9tZW51X3Nob3cocHJpdi0+Y29u
dGV4dE1lbnUpOwotCi0gICAgcmV0dXJuIHRydWU7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShl
d2tWaWV3KTsKLSAgICBVTlVTRURfUEFSQU0oZG93bkV2ZW50KTsKLSAgICByZXR1cm4gZmFsc2U7
Ci0jZW5kaWYKLX0KLQotZG91YmxlIGV3a192aWV3X2xvYWRfcHJvZ3Jlc3NfZ2V0KGNvbnN0IEV2
YXNfT2JqZWN0KiBld2tWaWV3KQotewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdr
Vmlldywgc21hcnREYXRhLCAtMS4wKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4o
c21hcnREYXRhLCBwcml2LCAtMS4wKTsKLSAgICByZXR1cm4gcHJpdi0+cGFnZS0+cHJvZ3Jlc3Mo
KS5lc3RpbWF0ZWRQcm9ncmVzcygpOwotfQotCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc3RvcChFdmFz
X09iamVjdCogZXdrVmlldykKLXsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1Zp
ZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwotICAgIHJldHVybiBld2tfZnJhbWVfc3RvcChzbWFydERh
dGEtPm1haW5fZnJhbWUpOwotfQotCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfcmVsb2FkKEV2YXNfT2Jq
ZWN0KiBld2tWaWV3KQotewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywg
c21hcnREYXRhLCBmYWxzZSk7Ci0gICAgcmV0dXJuIGV3a19mcmFtZV9yZWxvYWQoc21hcnREYXRh
LT5tYWluX2ZyYW1lKTsKLX0KLQotRWluYV9Cb29sIGV3a192aWV3X3JlbG9hZF9mdWxsKEV2YXNf
T2JqZWN0KiBld2tWaWV3KQotewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmll
dywgc21hcnREYXRhLCBmYWxzZSk7Ci0gICAgcmV0dXJuIGV3a19mcmFtZV9yZWxvYWRfZnVsbChz
bWFydERhdGEtPm1haW5fZnJhbWUpOwotfQotCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfYmFjayhFdmFz
X09iamVjdCogZXdrVmlldykKLXsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1Zp
ZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwotICAgIHJldHVybiBld2tfZnJhbWVfYmFjayhzbWFydERh
dGEtPm1haW5fZnJhbWUpOwotfQotCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfZm9yd2FyZChFdmFzX09i
amVjdCogZXdrVmlldykKLXsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcs
IHNtYXJ0RGF0YSwgZmFsc2UpOwotICAgIHJldHVybiBld2tfZnJhbWVfZm9yd2FyZChzbWFydERh
dGEtPm1haW5fZnJhbWUpOwotfQotCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfbmF2aWdhdGUoRXZhc19P
YmplY3QqIGV3a1ZpZXcsIGludCBzdGVwcykKLXsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVU
VVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwotICAgIHJldHVybiBld2tfZnJhbWVfbmF2
aWdhdGUoc21hcnREYXRhLT5tYWluX2ZyYW1lLCBzdGVwcyk7Ci19Ci0KLUVpbmFfQm9vbCBld2tf
dmlld19iYWNrX3Bvc3NpYmxlKEV2YXNfT2JqZWN0KiBld2tWaWV3KQotewotICAgIEVXS19WSUVX
X1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7Ci0gICAgcmV0dXJu
IGV3a19mcmFtZV9iYWNrX3Bvc3NpYmxlKHNtYXJ0RGF0YS0+bWFpbl9mcmFtZSk7Ci19Ci0KLUVp
bmFfQm9vbCBld2tfdmlld19mb3J3YXJkX3Bvc3NpYmxlKEV2YXNfT2JqZWN0KiBld2tWaWV3KQot
ewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxz
ZSk7Ci0gICAgcmV0dXJuIGV3a19mcmFtZV9mb3J3YXJkX3Bvc3NpYmxlKHNtYXJ0RGF0YS0+bWFp
bl9mcmFtZSk7Ci19Ci0KLUVpbmFfQm9vbCBld2tfdmlld19uYXZpZ2F0ZV9wb3NzaWJsZShFdmFz
X09iamVjdCogZXdrVmlldywgaW50IHN0ZXBzKQotewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9S
RVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7Ci0gICAgcmV0dXJuIGV3a19mcmFtZV9u
YXZpZ2F0ZV9wb3NzaWJsZShzbWFydERhdGEtPm1haW5fZnJhbWUsIHN0ZXBzKTsKLX0KLQotRWlu
YV9Cb29sIGV3a192aWV3X2hpc3RvcnlfZW5hYmxlX2dldChjb25zdCBFdmFzX09iamVjdCogZXdr
VmlldykKLXsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0
YSwgZmFsc2UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHBy
aXYsIGZhbHNlKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6QmFja0ZvcndhcmRM
aXN0Kj4ocHJpdi0+cGFnZS0+YmFja0ZvcndhcmQoKS5jbGllbnQoKSktPmVuYWJsZWQoKTsKLX0K
LQotRWluYV9Cb29sIGV3a192aWV3X2hpc3RvcnlfZW5hYmxlX3NldChFdmFzX09iamVjdCogZXdr
VmlldywgRWluYV9Cb29sIGVuYWJsZSkKLXsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJO
KGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JF
VFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKLSAgICBzdGF0aWNfY2FzdDxXZWJDb3JlOjpC
YWNrRm9yd2FyZExpc3QqPihwcml2LT5wYWdlLT5iYWNrRm9yd2FyZCgpLmNsaWVudCgpKS0+c2V0
RW5hYmxlZChlbmFibGUpOwotICAgIHJldHVybiB0cnVlOwotfQotCi1Fd2tfSGlzdG9yeSogZXdr
X3ZpZXdfaGlzdG9yeV9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCi17Ci0gICAgRVdL
X1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIDApOwotICAgIEVXS19W
SUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIDApOwotICAgIGlmICghc3Rh
dGljX2Nhc3Q8V2ViQ29yZTo6QmFja0ZvcndhcmRMaXN0Kj4ocHJpdi0+cGFnZS0+YmFja0Zvcndh
cmQoKS5jbGllbnQoKSktPmVuYWJsZWQoKSkgewotICAgICAgICBFUlIoImFza2VkIGhpc3Rvcnks
IGJ1dCBpdCdzIGRpc2FibGVkISBSZXR1cm5pbmcgMCEiKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0g
ICAgfQotICAgIHJldHVybiBwcml2LT5oaXN0b3J5OwotfQotCi1FaW5hX0Jvb2wgZXdrX3ZpZXdf
dmlzaXRlZF9saW5rX2FkZChFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgY2hhciogdmlzaXRl
ZFVybCkKLXsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0
YSwgZmFsc2UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHBy
aXYsIGZhbHNlKTsKLQotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChwcml2LT5w
YWdlLCBmYWxzZSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHByaXYtPnBh
Z2UtPmdyb3VwUHRyKCksIGZhbHNlKTsKLQotICAgIFdlYkNvcmU6OlVSTCBrdXJsKFdlYkNvcmU6
OlVSTCgpLCBXVEY6OlN0cmluZzo6ZnJvbVVURjgodmlzaXRlZFVybCkpOwotICAgIHByaXYtPnBh
Z2UtPmdyb3VwUHRyKCktPmFkZFZpc2l0ZWRMaW5rKGt1cmwpOwotICAgIHJldHVybiB0cnVlOwot
fQotCi1mbG9hdCBld2tfdmlld196b29tX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykK
LXsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgLTEu
MCk7Ci0gICAgcmV0dXJuIGV3a19mcmFtZV9wYWdlX3pvb21fZ2V0KHNtYXJ0RGF0YS0+bWFpbl9m
cmFtZSk7Ci19Ci0KLUVpbmFfQm9vbCBld2tfdmlld196b29tX3NldChFdmFzX09iamVjdCogZXdr
VmlldywgZmxvYXQgem9vbSwgRXZhc19Db29yZCBjZW50ZXJYLCBFdmFzX0Nvb3JkIGNlbnRlclkp
Ci17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZh
bHNlKTsKLSAgICBFV0tfVklFV19QUklWX0dFVChzbWFydERhdGEsIHByaXYpOwotCi0gICAgRUlO
QV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+YXBpLCBmYWxzZSk7Ci0gICAg
RUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+YXBpLT56b29tX3NldCwg
ZmFsc2UpOwotCi0gICAgaWYgKCFwcml2LT5zZXR0aW5ncy56b29tUmFuZ2UudXNlclNjYWxhYmxl
KSB7Ci0gICAgICAgIFdBUk4oInVzZXJTY2FsYWJsZSBpcyBmYWxzZSIpOwotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgaWYgKHpvb20gPCBwcml2LT5zZXR0aW5ncy56b29tUmFu
Z2UubWluU2NhbGUpIHsKLSAgICAgICAgV0FSTigiem9vbSBsZXZlbCBpcyA8ICVmIDogJWYiLCBw
cml2LT5zZXR0aW5ncy56b29tUmFuZ2UubWluU2NhbGUsIHpvb20pOwotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgfQotICAgIGlmICh6b29tID4gcHJpdi0+c2V0dGluZ3Muem9vbVJhbmdlLm1h
eFNjYWxlKSB7Ci0gICAgICAgIFdBUk4oInpvb20gbGV2ZWwgaXMgPiAlZiA6ICVmIiwgcHJpdi0+
c2V0dGluZ3Muem9vbVJhbmdlLm1heFNjYWxlLCB6b29tKTsKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIH0KLQotICAgIF9ld2tfdmlld196b29tX2FuaW1hdGVkX21hcmtfc3RvcChzbWFydERh
dGEpOwotICAgIHJldHVybiBzbWFydERhdGEtPmFwaS0+em9vbV9zZXQoc21hcnREYXRhLCB6b29t
LCBjZW50ZXJYLCBjZW50ZXJZKTsKLX0KLQotZmxvYXQgZXdrX3ZpZXdfcGFnZV96b29tX2dldChj
b25zdCBFdmFzX09iamVjdCogZXdrVmlldykKLXsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVU
VVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgLTEuMCk7Ci0gICAgcmV0dXJuIGV3a19mcmFtZV9wYWdl
X3pvb21fZ2V0KHNtYXJ0RGF0YS0+bWFpbl9mcmFtZSk7Ci19Ci0KLUVpbmFfQm9vbCBld2tfdmll
d19wYWdlX3pvb21fc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBmbG9hdCBwYWdlWm9vbUZhY3Rv
cikKLXsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwg
ZmFsc2UpOwotICAgIHJldHVybiBld2tfZnJhbWVfcGFnZV96b29tX3NldChzbWFydERhdGEtPm1h
aW5fZnJhbWUsIHBhZ2Vab29tRmFjdG9yKTsKLX0KLQotZmxvYXQgZXdrX3ZpZXdfc2NhbGVfZ2V0
KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQotewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9S
RVRVUk4oZXdrVmlldywgc21hcnREYXRhLCAtMS4wKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9P
Ul9SRVRVUk4oc21hcnREYXRhLCBwcml2LCAtMS4wKTsKLSAgICByZXR1cm4gcHJpdi0+cGFnZS0+
cGFnZVNjYWxlRmFjdG9yKCk7Ci19Ci0KLUVpbmFfQm9vbCBld2tfdmlld19zY2FsZV9zZXQoRXZh
c19PYmplY3QqIGV3a1ZpZXcsIGZsb2F0IHNjYWxlRmFjdG9yLCBFdmFzX0Nvb3JkIHNjcm9sbFgs
IEV2YXNfQ29vcmQgc2Nyb2xsWSkKLXsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3
a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVS
TihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKLQotICAgIGZsb2F0IGN1cnJlbnRTY2FsZUZhY3Rv
ciA9IGV3a192aWV3X3NjYWxlX2dldChld2tWaWV3KTsKLSAgICBpZiAoY3VycmVudFNjYWxlRmFj
dG9yID09IC0xKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBwcml2LT5wYWdlLT5zZXRQ
YWdlU2NhbGVGYWN0b3Ioc2NhbGVGYWN0b3IsIFdlYkNvcmU6OkludFBvaW50KHNjcm9sbFgsIHNj
cm9sbFkpKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotZmxvYXQgZXdrX3ZpZXdfdGV4dF96b29t
X2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKLXsKLSAgICBFV0tfVklFV19TRF9HRVRf
T1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgLTEuMCk7Ci0gICAgcmV0dXJuIGV3a19mcmFt
ZV90ZXh0X3pvb21fZ2V0KHNtYXJ0RGF0YS0+bWFpbl9mcmFtZSk7Ci19Ci0KLUVpbmFfQm9vbCBl
d2tfdmlld190ZXh0X3pvb21fc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBmbG9hdCB0ZXh0Wm9v
bUZhY3RvcikKLXsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0
RGF0YSwgZmFsc2UpOwotICAgIHJldHVybiBld2tfZnJhbWVfdGV4dF96b29tX3NldChzbWFydERh
dGEtPm1haW5fZnJhbWUsIHRleHRab29tRmFjdG9yKTsKLX0KLQotRWluYV9Cb29sIGV3a192aWV3
X3pvb21fd2Vha19zbW9vdGhfc2NhbGVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQot
ewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxz
ZSk7Ci0gICAgcmV0dXJuIHNtYXJ0RGF0YS0+em9vbV93ZWFrX3Ntb290aF9zY2FsZTsKLX0KLQot
dm9pZCBld2tfdmlld196b29tX3dlYWtfc21vb3RoX3NjYWxlX3NldChFdmFzX09iamVjdCogZXdr
VmlldywgRWluYV9Cb29sIHNtb290aFNjYWxlKQotewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9S
RVRVUk4oZXdrVmlldywgc21hcnREYXRhKTsKLSAgICBzbW9vdGhTY2FsZSA9ICEhc21vb3RoU2Nh
bGU7Ci0gICAgaWYgKHNtYXJ0RGF0YS0+em9vbV93ZWFrX3Ntb290aF9zY2FsZSA9PSBzbW9vdGhT
Y2FsZSkKLSAgICAgICAgcmV0dXJuOwotICAgIHNtYXJ0RGF0YS0+em9vbV93ZWFrX3Ntb290aF9z
Y2FsZSA9IHNtb290aFNjYWxlOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNtYXJ0
RGF0YS0+YXBpKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzbWFydERhdGEtPmFw
aS0+em9vbV93ZWFrX3Ntb290aF9zY2FsZV9zZXQpOwotICAgIHNtYXJ0RGF0YS0+YXBpLT56b29t
X3dlYWtfc21vb3RoX3NjYWxlX3NldChzbWFydERhdGEsIHNtb290aFNjYWxlKTsKLX0KLQotRWlu
YV9Cb29sIGV3a192aWV3X3pvb21fd2Vha19zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGZsb2F0
IHpvb20sIEV2YXNfQ29vcmQgY2VudGVyWCwgRXZhc19Db29yZCBjZW50ZXJZKQotewotICAgIEVX
S19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7Ci0gICAg
RVdLX1ZJRVdfUFJJVl9HRVQoc21hcnREYXRhLCBwcml2KTsKLQotICAgIEVJTkFfU0FGRVRZX09O
X05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEtPmFwaSwgZmFsc2UpOwotICAgIEVJTkFfU0FGRVRZ
X09OX05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEtPmFwaS0+em9vbV93ZWFrX3NldCwgZmFsc2Up
OwotCi0gICAgaWYgKCFwcml2LT5zZXR0aW5ncy56b29tUmFuZ2UudXNlclNjYWxhYmxlKSB7Ci0g
ICAgICAgIFdBUk4oInVzZXJTY2FsYWJsZSBpcyBmYWxzZSIpOwotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgfQotCi0gICAgaWYgKHpvb20gPCBwcml2LT5zZXR0aW5ncy56b29tUmFuZ2UubWlu
U2NhbGUpIHsKLSAgICAgICAgV0FSTigiem9vbSBsZXZlbCBpcyA8ICVmIDogJWYiLCBwcml2LT5z
ZXR0aW5ncy56b29tUmFuZ2UubWluU2NhbGUsIHpvb20pOwotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgfQotICAgIGlmICh6b29tID4gcHJpdi0+c2V0dGluZ3Muem9vbVJhbmdlLm1heFNjYWxl
KSB7Ci0gICAgICAgIFdBUk4oInpvb20gbGV2ZWwgaXMgPiAlZiA6ICVmIiwgcHJpdi0+c2V0dGlu
Z3Muem9vbVJhbmdlLm1heFNjYWxlLCB6b29tKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IH0KLQotICAgIHNtYXJ0RGF0YS0+YW5pbWF0ZWRfem9vbS56b29tLnN0YXJ0ID0gZXdrX2ZyYW1l
X3BhZ2Vfem9vbV9nZXQoc21hcnREYXRhLT5tYWluX2ZyYW1lKTsKLSAgICBzbWFydERhdGEtPmFu
aW1hdGVkX3pvb20uem9vbS5lbmQgPSB6b29tOwotICAgIHNtYXJ0RGF0YS0+YW5pbWF0ZWRfem9v
bS56b29tLmN1cnJlbnQgPSB6b29tOwotICAgIHJldHVybiBzbWFydERhdGEtPmFwaS0+em9vbV93
ZWFrX3NldChzbWFydERhdGEsIHpvb20sIGNlbnRlclgsIGNlbnRlclkpOwotfQotCi1FaW5hX0Jv
b2wgZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9tYXJrX3N0YXJ0KEV2YXNfT2JqZWN0KiBld2tWaWV3
LCBmbG9hdCB6b29tKQotewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywg
c21hcnREYXRhLCBmYWxzZSk7Ci0gICAgc21hcnREYXRhLT5hbmltYXRlZF96b29tLnpvb20uc3Rh
cnQgPSB6b29tOwotICAgIHJldHVybiB0cnVlOwotfQotCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfem9v
bV9hbmltYXRlZF9tYXJrX2VuZChFdmFzX09iamVjdCogZXdrVmlldywgZmxvYXQgem9vbSkKLXsK
LSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2Up
OwotICAgIHNtYXJ0RGF0YS0+YW5pbWF0ZWRfem9vbS56b29tLmVuZCA9IHpvb207Ci0gICAgcmV0
dXJuIHRydWU7Ci19Ci0KLUVpbmFfQm9vbCBld2tfdmlld196b29tX2FuaW1hdGVkX21hcmtfY3Vy
cmVudChFdmFzX09iamVjdCogZXdrVmlldywgZmxvYXQgem9vbSkKLXsKLSAgICBFV0tfVklFV19T
RF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwotICAgIHNtYXJ0RGF0
YS0+YW5pbWF0ZWRfem9vbS56b29tLmN1cnJlbnQgPSB6b29tOwotICAgIHJldHVybiB0cnVlOwot
fQotCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9tYXJrX3N0b3AoRXZhc19PYmpl
Y3QqIGV3a1ZpZXcpCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBz
bWFydERhdGEsIGZhbHNlKTsKLSAgICBfZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9tYXJrX3N0b3Ao
c21hcnREYXRhKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotRWluYV9Cb29sIGV3a192aWV3X3pv
b21fYW5pbWF0ZWRfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBmbG9hdCB6b29tLCBmbG9hdCBk
dXJhdGlvbiwgRXZhc19Db29yZCBjZW50ZXJYLCBFdmFzX0Nvb3JkIGNlbnRlclkpCi17Ci0gICAg
ZG91YmxlIG5vdzsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0
RGF0YSwgZmFsc2UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEs
IHByaXYsIGZhbHNlKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnRE
YXRhLT5hcGksIGZhbHNlKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21h
cnREYXRhLT5hcGktPnpvb21fd2Vha19zZXQsIGZhbHNlKTsKLQotICAgIGlmICghcHJpdi0+c2V0
dGluZ3Muem9vbVJhbmdlLnVzZXJTY2FsYWJsZSkgewotICAgICAgICBXQVJOKCJ1c2VyU2NhbGFi
bGUgaXMgZmFsc2UiKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGlmICh6
b29tIDwgcHJpdi0+c2V0dGluZ3Muem9vbVJhbmdlLm1pblNjYWxlKSB7Ci0gICAgICAgIFdBUk4o
Inpvb20gbGV2ZWwgaXMgPCAlZiA6ICVmIiwgcHJpdi0+c2V0dGluZ3Muem9vbVJhbmdlLm1pblNj
YWxlLCB6b29tKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICBpZiAoem9vbSA+
IHByaXYtPnNldHRpbmdzLnpvb21SYW5nZS5tYXhTY2FsZSkgewotICAgICAgICBXQVJOKCJ6b29t
IGxldmVsIGlzID4gJWYgOiAlZiIsIHByaXYtPnNldHRpbmdzLnpvb21SYW5nZS5tYXhTY2FsZSwg
em9vbSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBpZiAocHJpdi0+YW5p
bWF0ZWRab29tLmFuaW1hdG9yKQotICAgICAgICBwcml2LT5hbmltYXRlZFpvb20uem9vbS5zdGFy
dCA9IF9ld2tfdmlld196b29tX2FuaW1hdGVkX2N1cnJlbnQocHJpdik7Ci0gICAgZWxzZSB7Ci0g
ICAgICAgIHByaXYtPmFuaW1hdGVkWm9vbS56b29tLnN0YXJ0ID0gZXdrX2ZyYW1lX3BhZ2Vfem9v
bV9nZXQoc21hcnREYXRhLT5tYWluX2ZyYW1lKTsKLSAgICAgICAgX2V3a192aWV3X3pvb21fYW5p
bWF0aW9uX3N0YXJ0KHNtYXJ0RGF0YSk7Ci0gICAgfQotCi0gICAgaWYgKGNlbnRlclggPCAwKQot
ICAgICAgICBjZW50ZXJYID0gMDsKLSAgICBpZiAoY2VudGVyWSA8IDApCi0gICAgICAgIGNlbnRl
clkgPSAwOwotCi0gICAgbm93ID0gZWNvcmVfbG9vcF90aW1lX2dldCgpOwotICAgIHByaXYtPmFu
aW1hdGVkWm9vbS50aW1lLnN0YXJ0ID0gbm93OwotICAgIHByaXYtPmFuaW1hdGVkWm9vbS50aW1l
LmVuZCA9IG5vdyArIGR1cmF0aW9uOwotICAgIHByaXYtPmFuaW1hdGVkWm9vbS50aW1lLmR1cmF0
aW9uID0gZHVyYXRpb247Ci0gICAgcHJpdi0+YW5pbWF0ZWRab29tLnpvb20uZW5kID0gem9vbTsK
LSAgICBwcml2LT5hbmltYXRlZFpvb20uem9vbS5yYW5nZSA9IChwcml2LT5hbmltYXRlZFpvb20u
em9vbS5lbmQgLSBwcml2LT5hbmltYXRlZFpvb20uem9vbS5zdGFydCk7Ci0gICAgcHJpdi0+YW5p
bWF0ZWRab29tLmNlbnRlci54ID0gY2VudGVyWDsKLSAgICBwcml2LT5hbmltYXRlZFpvb20uY2Vu
dGVyLnkgPSBjZW50ZXJZOwotICAgIHNtYXJ0RGF0YS0+YW5pbWF0ZWRfem9vbS56b29tLmN1cnJl
bnQgPSBwcml2LT5hbmltYXRlZFpvb20uem9vbS5zdGFydDsKLSAgICBzbWFydERhdGEtPmFuaW1h
dGVkX3pvb20uem9vbS5zdGFydCA9IHByaXYtPmFuaW1hdGVkWm9vbS56b29tLnN0YXJ0OwotICAg
IHNtYXJ0RGF0YS0+YW5pbWF0ZWRfem9vbS56b29tLmVuZCA9IHByaXYtPmFuaW1hdGVkWm9vbS56
b29tLmVuZDsKLQotICAgIHJldHVybiB0cnVlOwotfQotCi11bnNpZ25lZCBpbnQgZXdrX3ZpZXdf
aW1oX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKLXsKLSAgICBFV0tfVklFV19TRF9H
RVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgMCk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9H
RVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgMCk7Ci0gICAgcmV0dXJuIHByaXYtPmltaDsK
LX0KLQotRWluYV9Cb29sIGV3a192aWV3X2VuYWJsZV9yZW5kZXIoY29uc3QgRXZhc19PYmplY3Qq
IGV3a1ZpZXcpCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFy
dERhdGEsIGZhbHNlKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnRE
YXRhLT5hcGktPmVuYWJsZV9yZW5kZXIsIGZhbHNlKTsKLSAgICByZXR1cm4gc21hcnREYXRhLT5h
cGktPmVuYWJsZV9yZW5kZXIoc21hcnREYXRhKTsKLX0KLQotRWluYV9Cb29sIGV3a192aWV3X2Rp
c2FibGVfcmVuZGVyKGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQotewotICAgIEVXS19WSUVX
X1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7Ci0gICAgRUlOQV9T
QUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+YXBpLT5kaXNhYmxlX3JlbmRlciwg
ZmFsc2UpOwotICAgIHJldHVybiBzbWFydERhdGEtPmFwaS0+ZGlzYWJsZV9yZW5kZXIoc21hcnRE
YXRhKTsKLX0KLQotY29uc3QgY2hhciogZXdrX3ZpZXdfc2V0dGluZ191c2VyX2FnZW50X2dldChj
b25zdCBFdmFzX09iamVjdCogZXdrVmlldykKLXsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVU
VVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgMCk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVU
VVJOKHNtYXJ0RGF0YSwgcHJpdiwgMCk7Ci0gICAgcmV0dXJuIHByaXYtPnNldHRpbmdzLnVzZXJB
Z2VudDsKLX0KLQotRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfdXNlcl9hZ2VudF9zZXQoRXZh
c19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IGNoYXIqIHVzZXJBZ2VudCkKLXsKLSAgICBFV0tfVklF
V19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwotICAgIEVXS19W
SUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKLSAgICBpZiAo
ZWluYV9zdHJpbmdzaGFyZV9yZXBsYWNlKCZwcml2LT5zZXR0aW5ncy51c2VyQWdlbnQsIHVzZXJB
Z2VudCkpIHsKLSAgICAgICAgV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmwmIGNsaWVudCA9
IHN0YXRpY19jYXN0PFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsJj4ocHJpdi0+cGFnZS0+
bWFpbkZyYW1lKCkubG9hZGVyKCkuY2xpZW50KCkpOwotICAgICAgICBjbGllbnQuc2V0Q3VzdG9t
VXNlckFnZW50KFN0cmluZzo6ZnJvbVVURjgodXNlckFnZW50KSk7Ci0gICAgfQotICAgIHJldHVy
biB0cnVlOwotfQotCi1jb25zdCBjaGFyKiBld2tfdmlld19zZXR0aW5nX3VzZXJfc3R5bGVzaGVl
dF9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VU
X09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIDApOwotICAgIEVXS19WSUVXX1BSSVZfR0VU
X09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIDApOwotICAgIHJldHVybiBwcml2LT5zZXR0aW5n
cy51c2VyU3R5bGVzaGVldDsKLX0KLQotRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfdXNlcl9z
dHlsZXNoZWV0X3NldChFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgY2hhciogdXJpKQotewot
ICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7
Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2Up
OwotICAgIGlmIChlaW5hX3N0cmluZ3NoYXJlX3JlcGxhY2UoJnByaXYtPnNldHRpbmdzLnVzZXJT
dHlsZXNoZWV0LCB1cmkpKSB7Ci0gICAgICAgIFdlYkNvcmU6OlVSTCBrdXJsKFdlYkNvcmU6OlVS
TCgpLCBTdHJpbmc6OmZyb21VVEY4KHVyaSkpOwotICAgICAgICBwcml2LT5wYWdlLT5zZXR0aW5n
cygpLnNldFVzZXJTdHlsZVNoZWV0TG9jYXRpb24oa3VybCk7Ci0gICAgfQotICAgIHJldHVybiB0
cnVlOwotfQotCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19hdXRvX2xvYWRfaW1hZ2VzX2dl
dChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKLXsKLSAgICBFV0tfVklFV19TRF9HRVRfT1Jf
UkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VU
X09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKLSAgICByZXR1cm4gcHJpdi0+c2V0
dGluZ3MuYXV0b0xvYWRJbWFnZXM7Ci19Ci0KLUVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2F1
dG9fbG9hZF9pbWFnZXNfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFaW5hX0Jvb2wgYXV0b21h
dGljKQotewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRh
LCBmYWxzZSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJp
diwgZmFsc2UpOwotICAgIGF1dG9tYXRpYyA9ICEhYXV0b21hdGljOwotICAgIGlmIChwcml2LT5z
ZXR0aW5ncy5hdXRvTG9hZEltYWdlcyAhPSBhdXRvbWF0aWMpIHsKLSAgICAgICAgcHJpdi0+cGFn
ZS0+c2V0dGluZ3MoKS5zZXRMb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkoYXV0b21hdGljKTsKLSAg
ICAgICAgcHJpdi0+c2V0dGluZ3MuYXV0b0xvYWRJbWFnZXMgPSBhdXRvbWF0aWM7Ci0gICAgfQot
ICAgIHJldHVybiB0cnVlOwotfQotCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19hdXRvX3No
cmlua19pbWFnZXNfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQotewotICAgIEVXS19W
SUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7Ci0gICAgRVdL
X1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwotICAgIHJl
dHVybiBwcml2LT5zZXR0aW5ncy5hdXRvU2hyaW5rSW1hZ2VzOwotfQotCi1FaW5hX0Jvb2wgZXdr
X3ZpZXdfc2V0dGluZ19hdXRvX3Nocmlua19pbWFnZXNfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3
LCBFaW5hX0Jvb2wgYXV0b21hdGljKQotewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4o
ZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVU
VVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwotICAgIGF1dG9tYXRpYyA9ICEhYXV0b21hdGlj
OwotICAgIGlmIChwcml2LT5zZXR0aW5ncy5hdXRvU2hyaW5rSW1hZ2VzICE9IGF1dG9tYXRpYykg
ewotICAgICAgICBwcml2LT5wYWdlLT5zZXR0aW5ncygpLnNldFNocmlua3NTdGFuZGFsb25lSW1h
Z2VzVG9GaXQoYXV0b21hdGljKTsKLSAgICAgICAgcHJpdi0+c2V0dGluZ3MuYXV0b1Nocmlua0lt
YWdlcyA9IGF1dG9tYXRpYzsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLUVpbmFfQm9v
bCBld2tfdmlld19zZXR0aW5nX2VuYWJsZV9hdXRvX3Jlc2l6ZV93aW5kb3dfZ2V0KGNvbnN0IEV2
YXNfT2JqZWN0KiBld2tWaWV3KQotewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdr
Vmlldywgc21hcnREYXRhLCBmYWxzZSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJO
KHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwotICAgIHJldHVybiBwcml2LT5zZXR0aW5ncy5lbmFi
bGVBdXRvUmVzaXplV2luZG93OwotfQotCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19lbmFi
bGVfYXV0b19yZXNpemVfd2luZG93X3NldChFdmFzX09iamVjdCogZXdrVmlldywgRWluYV9Cb29s
IHJlc2l6YWJsZSkKLXsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNt
YXJ0RGF0YSwgZmFsc2UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERh
dGEsIHByaXYsIGZhbHNlKTsKLSAgICBwcml2LT5zZXR0aW5ncy5lbmFibGVBdXRvUmVzaXplV2lu
ZG93ID0gcmVzaXphYmxlOwotICAgIHJldHVybiB0cnVlOwotfQotCi1FaW5hX0Jvb2wgZXdrX3Zp
ZXdfc2V0dGluZ19lbmFibGVfc2NyaXB0c19nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcp
Ci17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZh
bHNlKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBm
YWxzZSk7Ci0gICAgcmV0dXJuIHByaXYtPnNldHRpbmdzLmVuYWJsZVNjcmlwdHM7Ci19Ci0KLUVp
bmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2VuYWJsZV9zY3JpcHRzX3NldChFdmFzX09iamVjdCog
ZXdrVmlldywgRWluYV9Cb29sIGVuYWJsZSkKLXsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVU
VVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09S
X1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKLSAgICBlbmFibGUgPSAhIWVuYWJsZTsK
LSAgICBpZiAocHJpdi0+c2V0dGluZ3MuZW5hYmxlU2NyaXB0cyAhPSBlbmFibGUpIHsKLSAgICAg
ICAgcHJpdi0+cGFnZS0+c2V0dGluZ3MoKS5zZXRTY3JpcHRFbmFibGVkKGVuYWJsZSk7Ci0gICAg
ICAgIHByaXYtPnNldHRpbmdzLmVuYWJsZVNjcmlwdHMgPSBlbmFibGU7Ci0gICAgfQotICAgIHJl
dHVybiB0cnVlOwotfQotCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfcGx1Z2lu
c19nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VU
X09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKLSAgICBFV0tfVklFV19QUklW
X0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBmYWxzZSk7Ci0gICAgcmV0dXJuIHByaXYt
PnNldHRpbmdzLmVuYWJsZVBsdWdpbnM7Ci19Ci0KLUVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5n
X2VuYWJsZV9wbHVnaW5zX3NldChFdmFzX09iamVjdCogZXdrVmlldywgRWluYV9Cb29sIGVuYWJs
ZSkKLXsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwg
ZmFsc2UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYs
IGZhbHNlKTsKLSAgICBlbmFibGUgPSAhIWVuYWJsZTsKLSAgICBpZiAocHJpdi0+c2V0dGluZ3Mu
ZW5hYmxlUGx1Z2lucyAhPSBlbmFibGUpIHsKLSAgICAgICAgcHJpdi0+cGFnZS0+c2V0dGluZ3Mo
KS5zZXRQbHVnaW5zRW5hYmxlZChlbmFibGUpOwotICAgICAgICBwcml2LT5zZXR0aW5ncy5lbmFi
bGVQbHVnaW5zID0gZW5hYmxlOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotRWluYV9C
b29sIGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5pbmdfZ2V0KGNvbnN0IEV2
YXNfT2JqZWN0KiBld2tWaWV3KQotewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdr
Vmlldywgc21hcnREYXRhLCBmYWxzZSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJO
KHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwotICAgIHJldHVybiBwcml2LT5zZXR0aW5ncy5lbmFi
bGVGcmFtZUZsYXR0ZW5pbmc7Ci19Ci0KLUVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2VuYWJs
ZV9mcmFtZV9mbGF0dGVuaW5nX3NldChFdmFzX09iamVjdCogZXdrVmlldywgRWluYV9Cb29sIGVu
YWJsZSkKLXsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0
YSwgZmFsc2UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHBy
aXYsIGZhbHNlKTsKLSAgICBlbmFibGUgPSAhIWVuYWJsZTsKLSAgICBpZiAocHJpdi0+c2V0dGlu
Z3MuZW5hYmxlRnJhbWVGbGF0dGVuaW5nICE9IGVuYWJsZSkgewotICAgICAgICBwcml2LT5wYWdl
LT5zZXR0aW5ncygpLnNldEZyYW1lRmxhdHRlbmluZ0VuYWJsZWQoZW5hYmxlKTsKLSAgICAgICAg
cHJpdi0+c2V0dGluZ3MuZW5hYmxlRnJhbWVGbGF0dGVuaW5nID0gZW5hYmxlOwotICAgIH0KLSAg
ICByZXR1cm4gdHJ1ZTsKLX0KLQotRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfc2NyaXB0c19j
YW5fb3Blbl93aW5kb3dzX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKLXsKLSAgICBF
V0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwotICAg
IEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKLSAg
ICByZXR1cm4gcHJpdi0+c2V0dGluZ3Muc2NyaXB0c0Nhbk9wZW5XaW5kb3dzOwotfQotCi1FaW5h
X0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19zY3JpcHRzX2Nhbl9vcGVuX3dpbmRvd3Nfc2V0KEV2YXNf
T2JqZWN0KiBld2tWaWV3LCBFaW5hX0Jvb2wgYWxsb3cpCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VU
X09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKLSAgICBFV0tfVklFV19QUklW
X0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBmYWxzZSk7Ci0gICAgYWxsb3cgPSAhIWFs
bG93OwotICAgIGlmIChwcml2LT5zZXR0aW5ncy5zY3JpcHRzQ2FuT3BlbldpbmRvd3MgIT0gYWxs
b3cpIHsKLSAgICAgICAgcHJpdi0+cGFnZS0+c2V0dGluZ3MoKS5zZXRKYXZhU2NyaXB0Q2FuT3Bl
bldpbmRvd3NBdXRvbWF0aWNhbGx5KGFsbG93KTsKLSAgICAgICAgcHJpdi0+c2V0dGluZ3Muc2Ny
aXB0c0Nhbk9wZW5XaW5kb3dzID0gYWxsb3c7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotfQot
Ci1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19zY3JpcHRzX2Nhbl9jbG9zZV93aW5kb3dzX2dl
dChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKLXsKLSAgICBFV0tfVklFV19TRF9HRVRfT1Jf
UkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VU
X09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKLSAgICByZXR1cm4gcHJpdi0+c2V0
dGluZ3Muc2NyaXB0c0NhbkNsb3NlV2luZG93czsKLX0KLQotRWluYV9Cb29sIGV3a192aWV3X3Nl
dHRpbmdfc2NyaXB0c19jYW5fY2xvc2Vfd2luZG93c19zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcs
IEVpbmFfQm9vbCBhbGxvdykKLXsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1Zp
ZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihz
bWFydERhdGEsIHByaXYsIGZhbHNlKTsKLSAgICBhbGxvdyA9ICEhYWxsb3c7Ci0gICAgaWYgKHBy
aXYtPnNldHRpbmdzLnNjcmlwdHNDYW5DbG9zZVdpbmRvd3MgIT0gYWxsb3cpIHsKLSAgICAgICAg
cHJpdi0+cGFnZS0+c2V0dGluZ3MoKS5zZXRBbGxvd1NjcmlwdHNUb0Nsb3NlV2luZG93cyhhbGxv
dyk7Ci0gICAgICAgIHByaXYtPnNldHRpbmdzLnNjcmlwdHNDYW5DbG9zZVdpbmRvd3MgPSBhbGxv
dzsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLUVpbmFfQm9vbCBld2tfdmlld19zZXR0
aW5nX3NjcmlwdHNfY2FuX2FjY2Vzc19jbGlwYm9hcmRfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBl
d2tWaWV3KQotewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnRE
YXRhLCBmYWxzZSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwg
cHJpdiwgZmFsc2UpOwotICAgIHJldHVybiBwcml2LT5zZXR0aW5ncy5zY3JpcHRzQ2FuQWNjZXNz
Q2xpcGJvYXJkOwotfQotCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19zY3JpcHRzX2Nhbl9h
Y2Nlc3NfY2xpcGJvYXJkX3NldChFdmFzX09iamVjdCogZXdrVmlldywgRWluYV9Cb29sIGFsbG93
KQotewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBm
YWxzZSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwg
ZmFsc2UpOwotICAgIGFsbG93ID0gISFhbGxvdzsKLSAgICBpZiAocHJpdi0+c2V0dGluZ3Muc2Ny
aXB0c0NhbkFjY2Vzc0NsaXBib2FyZCAhPSBhbGxvdykgewotICAgICAgICBwcml2LT5wYWdlLT5z
ZXR0aW5ncygpLnNldEphdmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9hcmQoYWxsb3cpOwotICAgICAg
ICBwcml2LT5wYWdlLT5zZXR0aW5ncygpLnNldERPTVBhc3RlQWxsb3dlZChhbGxvdyk7Ci0gICAg
ICAgIHByaXYtPnNldHRpbmdzLnNjcmlwdHNDYW5BY2Nlc3NDbGlwYm9hcmQgPSBhbGxvdzsKLSAg
ICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLUVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX3Jl
c2l6YWJsZV90ZXh0YXJlYXNfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQotewotICAg
IEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7Ci0g
ICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwot
ICAgIHJldHVybiBwcml2LT5zZXR0aW5ncy5yZXNpemFibGVUZXh0YXJlYXM7Ci19Ci0KLUVpbmFf
Qm9vbCBld2tfdmlld19zZXR0aW5nX3Jlc2l6YWJsZV90ZXh0YXJlYXNfc2V0KEV2YXNfT2JqZWN0
KiBld2tWaWV3LCBFaW5hX0Jvb2wgZW5hYmxlKQotewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9S
RVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRf
T1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwotICAgIGVuYWJsZSA9ICEhZW5hYmxl
OwotICAgIGlmIChwcml2LT5zZXR0aW5ncy5yZXNpemFibGVUZXh0YXJlYXMgIT0gZW5hYmxlKSB7
Ci0gICAgICAgIHByaXYtPnBhZ2UtPnNldHRpbmdzKCkuc2V0VGV4dEFyZWFzQXJlUmVzaXphYmxl
KGVuYWJsZSk7Ci0gICAgICAgIHByaXYtPnNldHRpbmdzLnJlc2l6YWJsZVRleHRhcmVhcyA9IGVu
YWJsZTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLUVpbmFfQm9vbCBld2tfdmlld19z
ZXR0aW5nX3ByaXZhdGVfYnJvd3NpbmdfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQot
ewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxz
ZSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFs
c2UpOwotICAgIHJldHVybiBwcml2LT5zZXR0aW5ncy5wcml2YXRlQnJvd3Npbmc7Ci19Ci0KLUVp
bmFfQm9vbCBld2tfdmlld19zZXR0aW5nX3ByaXZhdGVfYnJvd3Npbmdfc2V0KEV2YXNfT2JqZWN0
KiBld2tWaWV3LCBFaW5hX0Jvb2wgZW5hYmxlKQotewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9S
RVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRf
T1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwotICAgIGVuYWJsZSA9ICEhZW5hYmxl
OwotICAgIGlmIChwcml2LT5zZXR0aW5ncy5wcml2YXRlQnJvd3NpbmcgIT0gZW5hYmxlKSB7Ci0g
ICAgICAgIHByaXYtPnBhZ2UtPmVuYWJsZUxlZ2FjeVByaXZhdGVCcm93c2luZyhlbmFibGUpOwot
ICAgICAgICBwcml2LT5zZXR0aW5ncy5wcml2YXRlQnJvd3NpbmcgPSBlbmFibGU7Ci0gICAgfQot
ICAgIHJldHVybiB0cnVlOwotfQotCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19hcHBsaWNh
dGlvbl9jYWNoZV9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCi17Ci0gICAgRVdLX1ZJ
RVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKLSAgICBFV0tf
VklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBmYWxzZSk7Ci0gICAgcmV0
dXJuIHByaXYtPnNldHRpbmdzLm9mZmxpbmVBcHBDYWNoZTsKLX0KLQotRWluYV9Cb29sIGV3a192
aWV3X3NldHRpbmdfYXBwbGljYXRpb25fY2FjaGVfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBF
aW5hX0Jvb2wgZW5hYmxlKQotewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmll
dywgc21hcnREYXRhLCBmYWxzZSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNt
YXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwotICAgIGVuYWJsZSA9ICEhZW5hYmxlOwotICAgIGlmIChw
cml2LT5zZXR0aW5ncy5vZmZsaW5lQXBwQ2FjaGUgIT0gZW5hYmxlKSB7Ci0gICAgICAgIHByaXYt
PnBhZ2UtPnNldHRpbmdzKCkuc2V0T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKGVu
YWJsZSk7Ci0gICAgICAgIHByaXYtPnNldHRpbmdzLm9mZmxpbmVBcHBDYWNoZSA9IGVuYWJsZTsK
LSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLUVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5n
X2NhcmV0X2Jyb3dzaW5nX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKLXsKLSAgICBF
V0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwotICAg
IEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKLSAg
ICByZXR1cm4gcHJpdi0+c2V0dGluZ3MuY2FyZXRCcm93c2luZzsKLX0KLQotRWluYV9Cb29sIGV3
a192aWV3X3NldHRpbmdfY2FyZXRfYnJvd3Npbmdfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBF
aW5hX0Jvb2wgZW5hYmxlKQotewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmll
dywgc21hcnREYXRhLCBmYWxzZSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNt
YXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwotICAgIGVuYWJsZSA9ICEhZW5hYmxlOwotICAgIGlmIChw
cml2LT5zZXR0aW5ncy5jYXJldEJyb3dzaW5nICE9IGVuYWJsZSkgewotICAgICAgICBwcml2LT5w
YWdlLT5zZXR0aW5ncygpLnNldENhcmV0QnJvd3NpbmdFbmFibGVkKGVuYWJsZSk7Ci0gICAgICAg
IHByaXYtPnNldHRpbmdzLmNhcmV0QnJvd3NpbmcgPSBlbmFibGU7Ci0gICAgfQotICAgIHJldHVy
biB0cnVlOwotfQotCi1jb25zdCBjaGFyKiBld2tfdmlld19zZXR0aW5nX2VuY29kaW5nX2N1c3Rv
bV9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VU
X09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIDApOwotICAgIEVXS19WSUVXX1BSSVZfR0VU
X09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIDApOwotICAgIEV2YXNfT2JqZWN0KiBtYWluX2Zy
YW1lID0gZXdrX3ZpZXdfZnJhbWVfbWFpbl9nZXQoZXdrVmlldyk7Ci0gICAgV2ViQ29yZTo6RnJh
bWUqIGNvcmVfZnJhbWUgPSBFV0tQcml2YXRlOjpjb3JlRnJhbWUobWFpbl9mcmFtZSk7Ci0KLSAg
ICBTdHJpbmcgb3ZlcnJpZGVFbmNvZGluZyA9IGNvcmVfZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50
TG9hZGVyKCktPm92ZXJyaWRlRW5jb2RpbmcoKTsKLQotICAgIGlmIChvdmVycmlkZUVuY29kaW5n
LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBlaW5hX3N0cmluZ3NoYXJlX3Jl
cGxhY2UoJnByaXYtPnNldHRpbmdzLmVuY29kaW5nQ3VzdG9tLCBvdmVycmlkZUVuY29kaW5nLnV0
ZjgoKS5kYXRhKCkpOwotICAgIHJldHVybiBwcml2LT5zZXR0aW5ncy5lbmNvZGluZ0N1c3RvbTsK
LX0KLQotRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZW5jb2RpbmdfY3VzdG9tX3NldChFdmFz
X09iamVjdCogZXdrVmlldywgY29uc3QgY2hhciogZW5jb2RpbmcpCi17Ci0gICAgRVdLX1ZJRVdf
U0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKLSAgICBFV0tfVklF
V19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBmYWxzZSk7Ci0gICAgRXZhc19P
YmplY3QqIG1haW5fZnJhbWUgPSBld2tfdmlld19mcmFtZV9tYWluX2dldChld2tWaWV3KTsKLSAg
ICBXZWJDb3JlOjpGcmFtZSogY29yZUZyYW1lID0gRVdLUHJpdmF0ZTo6Y29yZUZyYW1lKG1haW5f
ZnJhbWUpOwotICAgIERCRygiJXMiLCBlbmNvZGluZyk7Ci0gICAgaWYgKGVpbmFfc3RyaW5nc2hh
cmVfcmVwbGFjZSgmcHJpdi0+c2V0dGluZ3MuZW5jb2RpbmdDdXN0b20sIGVuY29kaW5nKSkKLSAg
ICAgICAgY29yZUZyYW1lLT5sb2FkZXIoKS5yZWxvYWRXaXRoT3ZlcnJpZGVFbmNvZGluZyhTdHJp
bmc6OmZyb21VVEY4KGVuY29kaW5nKSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWNvbnN0IGNo
YXIqIGV3a192aWV3X3NldHRpbmdfZW5jb2RpbmdfZGVmYXVsdF9nZXQoY29uc3QgRXZhc19PYmpl
Y3QqIGV3a1ZpZXcpCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBz
bWFydERhdGEsIDApOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEs
IHByaXYsIDApOwotICAgIHJldHVybiBwcml2LT5zZXR0aW5ncy5lbmNvZGluZ0RlZmF1bHQ7Ci19
Ci0KLUVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2VuY29kaW5nX2RlZmF1bHRfc2V0KEV2YXNf
T2JqZWN0KiBld2tWaWV3LCBjb25zdCBjaGFyKiBlbmNvZGluZykKLXsKLSAgICBFV0tfVklFV19T
RF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwotICAgIEVXS19WSUVX
X1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKLSAgICBpZiAoZWlu
YV9zdHJpbmdzaGFyZV9yZXBsYWNlKCZwcml2LT5zZXR0aW5ncy5lbmNvZGluZ0RlZmF1bHQsIGVu
Y29kaW5nKSkKLSAgICAgICAgcHJpdi0+cGFnZS0+c2V0dGluZ3MoKS5zZXREZWZhdWx0VGV4dEVu
Y29kaW5nTmFtZShTdHJpbmc6OmZyb21VVEY4KGVuY29kaW5nKSk7Ci0gICAgcmV0dXJuIHRydWU7
Ci19Ci0KLUVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2VuY29kaW5nX2RldGVjdG9yX3NldChF
dmFzX09iamVjdCogZXdrVmlldywgRWluYV9Cb29sIGVuYWJsZSkKLXsKLSAgICBFV0tfVklFV19T
RF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwotICAgIEVXS19WSUVX
X1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKLSAgICBlbmFibGUg
PSAhIWVuYWJsZTsKLSAgICBpZiAocHJpdi0+c2V0dGluZ3MuZW5jb2RpbmdEZXRlY3RvciAhPSBl
bmFibGUpIHsKLSAgICAgICAgcHJpdi0+cGFnZS0+c2V0dGluZ3MoKS5zZXRVc2VzRW5jb2RpbmdE
ZXRlY3RvcihlbmFibGUpOwotICAgICAgICBwcml2LT5zZXR0aW5ncy5lbmNvZGluZ0RldGVjdG9y
ID0gZW5hYmxlOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotRWluYV9Cb29sIGV3a192
aWV3X3NldHRpbmdfZW5jb2RpbmdfZGV0ZWN0b3JfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tW
aWV3KQotewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRh
LCBmYWxzZSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJp
diwgZmFsc2UpOwotICAgIHJldHVybiBwcml2LT5zZXR0aW5ncy5lbmNvZGluZ0RldGVjdG9yOwot
fQotCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfZGV2ZWxvcGVyX2V4dHJhc19n
ZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09S
X1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKLSAgICBFV0tfVklFV19QUklWX0dF
VF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBmYWxzZSk7Ci0gICAgcmV0dXJuIHByaXYtPnNl
dHRpbmdzLmVuYWJsZURldmVsb3BlckV4dHJhczsKLX0KLQotRWluYV9Cb29sIGV3a192aWV3X3Nl
dHRpbmdfZW5hYmxlX2RldmVsb3Blcl9leHRyYXNfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBF
aW5hX0Jvb2wgZW5hYmxlKQotewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmll
dywgc21hcnREYXRhLCBmYWxzZSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNt
YXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwotICAgIGVuYWJsZSA9ICEhZW5hYmxlOwotICAgIGlmIChw
cml2LT5zZXR0aW5ncy5lbmFibGVEZXZlbG9wZXJFeHRyYXMgIT0gZW5hYmxlKSB7Ci0gICAgICAg
IHByaXYtPnBhZ2UtPnNldHRpbmdzKCkuc2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZChlbmFibGUp
OwotICAgICAgICBwcml2LT5zZXR0aW5ncy5lbmFibGVEZXZlbG9wZXJFeHRyYXMgPSBlbmFibGU7
Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotfQotCi1pbnQgZXdrX3ZpZXdfc2V0dGluZ19mb250
X21pbmltdW1fc2l6ZV9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCi17Ci0gICAgRVdL
X1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIDApOwotICAgIEVXS19W
SUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIDApOwotICAgIHJldHVybiBw
cml2LT5zZXR0aW5ncy5mb250TWluaW11bVNpemU7Ci19Ci0KLUVpbmFfQm9vbCBld2tfdmlld19z
ZXR0aW5nX2ZvbnRfbWluaW11bV9zaXplX3NldChFdmFzX09iamVjdCogZXdrVmlldywgaW50IHNp
emUpCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEs
IGZhbHNlKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2
LCBmYWxzZSk7Ci0gICAgaWYgKHByaXYtPnNldHRpbmdzLmZvbnRNaW5pbXVtU2l6ZSAhPSBzaXpl
KSB7Ci0gICAgICAgIHByaXYtPnBhZ2UtPnNldHRpbmdzKCkuc2V0TWluaW11bUZvbnRTaXplKHNp
emUpOwotICAgICAgICBwcml2LT5zZXR0aW5ncy5mb250TWluaW11bVNpemUgPSBzaXplOwotICAg
IH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotaW50IGV3a192aWV3X3NldHRpbmdfZm9udF9taW5p
bXVtX2xvZ2ljYWxfc2l6ZV9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCi17Ci0gICAg
RVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIDApOwotICAgIEVX
S19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIDApOwotICAgIHJldHVy
biBwcml2LT5zZXR0aW5ncy5mb250TWluaW11bUxvZ2ljYWxTaXplOwotfQotCi1FaW5hX0Jvb2wg
ZXdrX3ZpZXdfc2V0dGluZ19mb250X21pbmltdW1fbG9naWNhbF9zaXplX3NldChFdmFzX09iamVj
dCogZXdrVmlldywgaW50IHNpemUpCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihl
d2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRV
Uk4oc21hcnREYXRhLCBwcml2LCBmYWxzZSk7Ci0gICAgaWYgKHByaXYtPnNldHRpbmdzLmZvbnRN
aW5pbXVtTG9naWNhbFNpemUgIT0gc2l6ZSkgewotICAgICAgICBwcml2LT5wYWdlLT5zZXR0aW5n
cygpLnNldE1pbmltdW1Mb2dpY2FsRm9udFNpemUoc2l6ZSk7Ci0gICAgICAgIHByaXYtPnNldHRp
bmdzLmZvbnRNaW5pbXVtTG9naWNhbFNpemUgPSBzaXplOwotICAgIH0KLSAgICByZXR1cm4gdHJ1
ZTsKLX0KLQotaW50IGV3a192aWV3X3NldHRpbmdfZm9udF9kZWZhdWx0X3NpemVfZ2V0KGNvbnN0
IEV2YXNfT2JqZWN0KiBld2tWaWV3KQotewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4o
ZXdrVmlldywgc21hcnREYXRhLCAwKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4o
c21hcnREYXRhLCBwcml2LCAwKTsKLSAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3MuZm9udERlZmF1
bHRTaXplOwotfQotCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19mb250X2RlZmF1bHRfc2l6
ZV9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGludCBzaXplKQotewotICAgIEVXS19WSUVXX1NE
X0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7Ci0gICAgRVdLX1ZJRVdf
UFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwotICAgIGlmIChwcml2
LT5zZXR0aW5ncy5mb250RGVmYXVsdFNpemUgIT0gc2l6ZSkgewotICAgICAgICBwcml2LT5wYWdl
LT5zZXR0aW5ncygpLnNldERlZmF1bHRGb250U2l6ZShzaXplKTsKLSAgICAgICAgcHJpdi0+c2V0
dGluZ3MuZm9udERlZmF1bHRTaXplID0gc2l6ZTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19
Ci0KLWludCBld2tfdmlld19zZXR0aW5nX2ZvbnRfbW9ub3NwYWNlX3NpemVfZ2V0KGNvbnN0IEV2
YXNfT2JqZWN0KiBld2tWaWV3KQotewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdr
Vmlldywgc21hcnREYXRhLCAwKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21h
cnREYXRhLCBwcml2LCAwKTsKLSAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3MuZm9udE1vbm9zcGFj
ZVNpemU7Ci19Ci0KLUVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2ZvbnRfbW9ub3NwYWNlX3Np
emVfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBpbnQgc2l6ZSkKLXsKLSAgICBFV0tfVklFV19T
RF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwotICAgIEVXS19WSUVX
X1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKLSAgICBpZiAocHJp
di0+c2V0dGluZ3MuZm9udE1vbm9zcGFjZVNpemUgIT0gc2l6ZSkgewotICAgICAgICBwcml2LT5w
YWdlLT5zZXR0aW5ncygpLnNldERlZmF1bHRGaXhlZEZvbnRTaXplKHNpemUpOwotICAgICAgICBw
cml2LT5zZXR0aW5ncy5mb250TW9ub3NwYWNlU2l6ZSA9IHNpemU7Ci0gICAgfQotICAgIHJldHVy
biB0cnVlOwotfQotCi1jb25zdCBjaGFyKiBld2tfdmlld19mb250X2ZhbWlseV9uYW1lX2dldChj
b25zdCBFdmFzX09iamVjdCogZXdrVmlldywgRXdrX0ZvbnRfRmFtaWx5IGZvbnRGYW1pbHkpCi17
Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIDApOwot
ICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIDApOwotCi0g
ICAgc3dpdGNoIChmb250RmFtaWx5KSB7Ci0gICAgY2FzZSBFV0tfRk9OVF9GQU1JTFlfU1RBTkRB
UkQ6Ci0gICAgICAgIHJldHVybiBwcml2LT5zZXR0aW5ncy5mb250U3RhbmRhcmQ7Ci0gICAgY2Fz
ZSBFV0tfRk9OVF9GQU1JTFlfQ1VSU0lWRToKLSAgICAgICAgcmV0dXJuIHByaXYtPnNldHRpbmdz
LmZvbnRDdXJzaXZlOwotICAgIGNhc2UgRVdLX0ZPTlRfRkFNSUxZX0ZBTlRBU1k6Ci0gICAgICAg
IHJldHVybiBwcml2LT5zZXR0aW5ncy5mb250RmFudGFzeTsKLSAgICBjYXNlIEVXS19GT05UX0ZB
TUlMWV9NT05PU1BBQ0U6Ci0gICAgICAgIHJldHVybiBwcml2LT5zZXR0aW5ncy5mb250TW9ub3Nw
YWNlOwotICAgIGNhc2UgRVdLX0ZPTlRfRkFNSUxZX1NFUklGOgotICAgICAgICByZXR1cm4gcHJp
di0+c2V0dGluZ3MuZm9udFNlcmlmOwotICAgIGNhc2UgRVdLX0ZPTlRfRkFNSUxZX1NBTlNfU0VS
SUY6Ci0gICAgICAgIHJldHVybiBwcml2LT5zZXR0aW5ncy5mb250U2Fuc1NlcmlmOwotICAgIH0K
LSAgICByZXR1cm4gMDsKLX0KLQotRWluYV9Cb29sIGV3a192aWV3X2ZvbnRfZmFtaWx5X25hbWVf
c2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tfRm9udF9GYW1pbHkgZm9udEZhbWlseSwgY29u
c3QgY2hhciogbmFtZSkKLXsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcs
IHNtYXJ0RGF0YSwgZmFsc2UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFy
dERhdGEsIHByaXYsIGZhbHNlKTsKLQotICAgIHN3aXRjaCAoZm9udEZhbWlseSkgewotICAgIGNh
c2UgRVdLX0ZPTlRfRkFNSUxZX1NUQU5EQVJEOgotICAgICAgICBlaW5hX3N0cmluZ3NoYXJlX3Jl
cGxhY2UoJnByaXYtPnNldHRpbmdzLmZvbnRTdGFuZGFyZCwgbmFtZSk7Ci0gICAgICAgIHByaXYt
PnBhZ2UtPnNldHRpbmdzKCkuc2V0U3RhbmRhcmRGb250RmFtaWx5KEF0b21pY1N0cmluZzo6ZnJv
bVVURjgobmFtZSkpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEVXS19GT05UX0ZBTUlMWV9D
VVJTSVZFOgotICAgICAgICBlaW5hX3N0cmluZ3NoYXJlX3JlcGxhY2UoJnByaXYtPnNldHRpbmdz
LmZvbnRDdXJzaXZlLCBuYW1lKTsKLSAgICAgICAgcHJpdi0+cGFnZS0+c2V0dGluZ3MoKS5zZXRD
dXJzaXZlRm9udEZhbWlseShBdG9taWNTdHJpbmc6OmZyb21VVEY4KG5hbWUpKTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBFV0tfRk9OVF9GQU1JTFlfRkFOVEFTWToKLSAgICAgICAgZWluYV9z
dHJpbmdzaGFyZV9yZXBsYWNlKCZwcml2LT5zZXR0aW5ncy5mb250RmFudGFzeSwgbmFtZSk7Ci0g
ICAgICAgIHByaXYtPnBhZ2UtPnNldHRpbmdzKCkuc2V0RmFudGFzeUZvbnRGYW1pbHkoQXRvbWlj
U3RyaW5nOjpmcm9tVVRGOChuYW1lKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRVdLX0ZP
TlRfRkFNSUxZX01PTk9TUEFDRToKLSAgICAgICAgZWluYV9zdHJpbmdzaGFyZV9yZXBsYWNlKCZw
cml2LT5zZXR0aW5ncy5mb250TW9ub3NwYWNlLCBuYW1lKTsKLSAgICAgICAgcHJpdi0+cGFnZS0+
c2V0dGluZ3MoKS5zZXRGaXhlZEZvbnRGYW1pbHkoQXRvbWljU3RyaW5nOjpmcm9tVVRGOChuYW1l
KSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRVdLX0ZPTlRfRkFNSUxZX1NFUklGOgotICAg
ICAgICBlaW5hX3N0cmluZ3NoYXJlX3JlcGxhY2UoJnByaXYtPnNldHRpbmdzLmZvbnRTZXJpZiwg
bmFtZSk7Ci0gICAgICAgIHByaXYtPnBhZ2UtPnNldHRpbmdzKCkuc2V0U2VyaWZGb250RmFtaWx5
KEF0b21pY1N0cmluZzo6ZnJvbVVURjgobmFtZSkpOwotICAgICAgICBicmVhazsKLSAgICBjYXNl
IEVXS19GT05UX0ZBTUlMWV9TQU5TX1NFUklGOgotICAgICAgICBlaW5hX3N0cmluZ3NoYXJlX3Jl
cGxhY2UoJnByaXYtPnNldHRpbmdzLmZvbnRTYW5zU2VyaWYsIG5hbWUpOwotICAgICAgICBwcml2
LT5wYWdlLT5zZXR0aW5ncygpLnNldFNhbnNTZXJpZkZvbnRGYW1pbHkoQXRvbWljU3RyaW5nOjpm
cm9tVVRGOChuYW1lKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotRWluYV9Cb29sIGV3
a192aWV3X3NldHRpbmdfc3BhdGlhbF9uYXZpZ2F0aW9uX2dldChjb25zdCBFdmFzX09iamVjdCog
ZXdrVmlldykKLXsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0
RGF0YSwgZmFsc2UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEs
IHByaXYsIGZhbHNlKTsKLSAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3Muc3BhdGlhbE5hdmlnYXRp
b247Ci19Ci0KLUVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX3NwYXRpYWxfbmF2aWdhdGlvbl9z
ZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEVpbmFfQm9vbCBlbmFibGUpCi17Ci0gICAgRVdLX1ZJ
RVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKLSAgICBFV0tf
VklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBmYWxzZSk7Ci0gICAgZW5h
YmxlID0gISFlbmFibGU7Ci0gICAgaWYgKHByaXYtPnNldHRpbmdzLnNwYXRpYWxOYXZpZ2F0aW9u
ICE9IGVuYWJsZSkgewotICAgICAgICBwcml2LT5wYWdlLT5zZXR0aW5ncygpLnNldFNwYXRpYWxO
YXZpZ2F0aW9uRW5hYmxlZChlbmFibGUpOwotICAgICAgICBwcml2LT5zZXR0aW5ncy5zcGF0aWFs
TmF2aWdhdGlvbiA9IGVuYWJsZTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLUVpbmFf
Qm9vbCBld2tfdmlld19zZXR0aW5nX2xvY2FsX3N0b3JhZ2VfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0
KiBld2tWaWV3KQotewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21h
cnREYXRhLCBmYWxzZSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0
YSwgcHJpdiwgZmFsc2UpOwotICAgIHJldHVybiBwcml2LT5zZXR0aW5ncy5sb2NhbFN0b3JhZ2U7
Ci19Ci0KLUVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2xvY2FsX3N0b3JhZ2Vfc2V0KEV2YXNf
T2JqZWN0KiBld2tWaWV3LCBFaW5hX0Jvb2wgZW5hYmxlKQotewotICAgIEVXS19WSUVXX1NEX0dF
VF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7Ci0gICAgRVdLX1ZJRVdfUFJJ
Vl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwotICAgIGVuYWJsZSA9ICEh
ZW5hYmxlOwotICAgIGlmIChwcml2LT5zZXR0aW5ncy5sb2NhbFN0b3JhZ2UgIT0gZW5hYmxlKSB7
Ci0gICAgICAgIHByaXYtPnBhZ2UtPnNldHRpbmdzKCkuc2V0TG9jYWxTdG9yYWdlRW5hYmxlZChl
bmFibGUpOwotICAgICAgICBwcml2LT5zZXR0aW5ncy5sb2NhbFN0b3JhZ2UgPSBlbmFibGU7Ci0g
ICAgfQotICAgIHJldHVybiB0cnVlOwotfQotCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19w
YWdlX2NhY2hlX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKLXsKLSAgICBFV0tfVklF
V19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwotICAgIEVXS19W
SUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKLSAgICByZXR1
cm4gcHJpdi0+c2V0dGluZ3MucGFnZUNhY2hlOwotfQotCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0
dGluZ19wYWdlX2NhY2hlX3NldChFdmFzX09iamVjdCogZXdrVmlldywgRWluYV9Cb29sIGVuYWJs
ZSkKLXsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwg
ZmFsc2UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYs
IGZhbHNlKTsKLSAgICBlbmFibGUgPSAhIWVuYWJsZTsKLSAgICBpZiAocHJpdi0+c2V0dGluZ3Mu
cGFnZUNhY2hlICE9IGVuYWJsZSkgewotICAgICAgICBwcml2LT5wYWdlLT5zZXR0aW5ncygpLnNl
dFVzZXNQYWdlQ2FjaGUoZW5hYmxlKTsKLSAgICAgICAgcHJpdi0+c2V0dGluZ3MucGFnZUNhY2hl
ID0gZW5hYmxlOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotY29uc3QgY2hhciogZXdr
X3ZpZXdfc2V0dGluZ19sb2NhbF9zdG9yYWdlX2RhdGFiYXNlX3BhdGhfZ2V0KGNvbnN0IEV2YXNf
T2JqZWN0KiBld2tWaWV3KQotewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmll
dywgc21hcnREYXRhLCAwKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnRE
YXRhLCBwcml2LCAwKTsKLSAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3MubG9jYWxTdG9yYWdlRGF0
YWJhc2VQYXRoOwotfQotCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19sb2NhbF9zdG9yYWdl
X2RhdGFiYXNlX3BhdGhfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBjaGFyKiBwYXRo
KQotewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBm
YWxzZSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwg
ZmFsc2UpOwotICAgIGlmIChlaW5hX3N0cmluZ3NoYXJlX3JlcGxhY2UoJnByaXYtPnNldHRpbmdz
LmxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCwgcGF0aCkpCi0gICAgICAgIHByaXYtPnBhZ2UtPnNl
dHRpbmdzKCkuc2V0TG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKFN0cmluZzo6ZnJvbVVURjgocGF0
aCkpOwotICAgIHJldHVybiB0cnVlOwotfQotCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19t
aW5pbXVtX3RpbWVyX2ludGVydmFsX3NldChFdmFzX09iamVjdCogZXdrVmlldywgZG91YmxlIGlu
dGVydmFsKQotewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnRE
YXRhLCBmYWxzZSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwg
cHJpdiwgZmFsc2UpOwotICAgIGlmIChmYWJzKHByaXYtPnNldHRpbmdzLmRvbVRpbWVySW50ZXJ2
YWwgLSBpbnRlcnZhbCkgPj0gc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjplcHNpbG9uKCkp
IHsKLSAgICAgICAgcHJpdi0+cGFnZS0+c2V0dGluZ3MoKS5zZXRNaW5ET01UaW1lckludGVydmFs
KGludGVydmFsKTsKLSAgICAgICAgcHJpdi0+c2V0dGluZ3MuZG9tVGltZXJJbnRlcnZhbCA9IGlu
dGVydmFsOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotZG91YmxlIGV3a192aWV3X3Nl
dHRpbmdfbWluaW11bV90aW1lcl9pbnRlcnZhbF9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1Zp
ZXcpCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEs
IC0xLjApOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYs
IC0xLjApOwotICAgIHJldHVybiBwcml2LT5zZXR0aW5ncy5kb21UaW1lckludGVydmFsOwotfQot
Ci1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfd2ViZ2xfZ2V0KGNvbnN0IEV2YXNf
T2JqZWN0KiBld2tWaWV3KQotewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmll
dywgc21hcnREYXRhLCBmYWxzZSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNt
YXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwotICAgIHJldHVybiBwcml2LT5zZXR0aW5ncy53ZWJHTEVu
YWJsZWQ7Ci19Ci0KLUVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2VuYWJsZV93ZWJnbF9zZXQo
RXZhc19PYmplY3QqIGV3a1ZpZXcsIEVpbmFfQm9vbCBlbmFibGUpCi17Ci0gICAgRVdLX1ZJRVdf
U0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKLSAgICBFV0tfVklF
V19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBmYWxzZSk7Ci0gICAgZW5hYmxl
ID0gISFlbmFibGU7Ci0gICAgaWYgKHByaXYtPnNldHRpbmdzLndlYkdMRW5hYmxlZCAhPSBlbmFi
bGUpIHsKLSAgICAgICAgcHJpdi0+cGFnZS0+c2V0dGluZ3MoKS5zZXRXZWJHTEVuYWJsZWQoZW5h
YmxlKTsKLSAgICAgICAgcHJpdi0+c2V0dGluZ3Mud2ViR0xFbmFibGVkID0gZW5hYmxlOwotICAg
IH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfaW5j
bHVkZV9saW5rc19pbl9mb2N1c19jaGFpbl9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcp
Ci17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZh
bHNlKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBm
YWxzZSk7Ci0gICAgcmV0dXJuIHByaXYtPnNldHRpbmdzLnRhYnNUb0xpbmtzOwotfQotCi1FaW5h
X0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19pbmNsdWRlX2xpbmtzX2luX2ZvY3VzX2NoYWluX3NldChF
dmFzX09iamVjdCogZXdrVmlldywgRWluYV9Cb29sIGVuYWJsZSkKLXsKLSAgICBFV0tfVklFV19T
RF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwotICAgIEVXS19WSUVX
X1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKLSAgICBlbmFibGUg
PSAhIWVuYWJsZTsKLSAgICBwcml2LT5zZXR0aW5ncy50YWJzVG9MaW5rcyA9IGVuYWJsZTsKLSAg
ICByZXR1cm4gdHJ1ZTsKLX0KLQotRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2h5
cGVybGlua19hdWRpdGluZ19nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCi17Ci0gICAg
RVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKLSAg
ICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBmYWxzZSk7Ci0g
ICAgcmV0dXJuIHByaXYtPnNldHRpbmdzLmh5cGVybGlua0F1ZGl0aW5nRW5hYmxlZDsKLX0KLQot
RWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2h5cGVybGlua19hdWRpdGluZ19zZXQo
RXZhc19PYmplY3QqIGV3a1ZpZXcsIEVpbmFfQm9vbCBlbmFibGUpCi17Ci0gICAgRVdLX1ZJRVdf
U0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKLSAgICBFV0tfVklF
V19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBmYWxzZSk7Ci0gICAgZW5hYmxl
ID0gISFlbmFibGU7Ci0gICAgaWYgKHByaXYtPnNldHRpbmdzLmh5cGVybGlua0F1ZGl0aW5nRW5h
YmxlZCAhPSBlbmFibGUpIHsKLSAgICAgICAgcHJpdi0+cGFnZS0+c2V0dGluZ3MoKS5zZXRIeXBl
cmxpbmtBdWRpdGluZ0VuYWJsZWQoZW5hYmxlKTsKLSAgICAgICAgcHJpdi0+c2V0dGluZ3MuaHlw
ZXJsaW5rQXVkaXRpbmdFbmFibGVkID0gZW5hYmxlOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsK
LX0KLQotRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfYWxsb3dfdW5pdmVyc2FsX2FjY2Vzc19m
cm9tX2ZpbGVfdXJsc19zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEVpbmFfQm9vbCBlbmFibGUp
Ci17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZh
bHNlKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBm
YWxzZSk7Ci0gICAgZW5hYmxlID0gISFlbmFibGU7Ci0gICAgaWYgKHByaXYtPnNldHRpbmdzLmFs
bG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzICE9IGVuYWJsZSkgewotICAgICAgICBwcml2
LT5wYWdlLT5zZXR0aW5ncygpLnNldEFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzKGVu
YWJsZSk7Ci0gICAgICAgIHByaXYtPnNldHRpbmdzLmFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZp
bGVVUkxzID0gZW5hYmxlOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotRWluYV9Cb29s
IGV3a192aWV3X3NldHRpbmdfYWxsb3dfdW5pdmVyc2FsX2FjY2Vzc19mcm9tX2ZpbGVfdXJsc19n
ZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09S
X1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKLSAgICBFV0tfVklFV19QUklWX0dF
VF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBmYWxzZSk7Ci0gICAgcmV0dXJuIHByaXYtPnNl
dHRpbmdzLmFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzOwotfQotCi1FaW5hX0Jvb2wg
ZXdrX3ZpZXdfc2V0dGluZ19hbGxvd19maWxlX2FjY2Vzc19mcm9tX2ZpbGVfdXJsc19zZXQoRXZh
c19PYmplY3QqIGV3a1ZpZXcsIEVpbmFfQm9vbCBlbmFibGUpCi17Ci0gICAgRVdLX1ZJRVdfU0Rf
R0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKLSAgICBFV0tfVklFV19Q
UklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBmYWxzZSk7Ci0gICAgZW5hYmxlID0g
ISFlbmFibGU7Ci0gICAgaWYgKHByaXYtPnNldHRpbmdzLmFsbG93RmlsZUFjY2Vzc0Zyb21GaWxl
VVJMcyAhPSBlbmFibGUpIHsKLSAgICAgICAgcHJpdi0+cGFnZS0+c2V0dGluZ3MoKS5zZXRBbGxv
d0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMoZW5hYmxlKTsKLSAgICAgICAgcHJpdi0+c2V0dGluZ3Mu
YWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzID0gZW5hYmxlOwotICAgIH0KLSAgICByZXR1cm4g
dHJ1ZTsKLX0KLQotRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfYWxsb3dfZmlsZV9hY2Nlc3Nf
ZnJvbV9maWxlX3VybHNfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQotewotICAgIEVX
S19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7Ci0gICAg
RVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwotICAg
IHJldHVybiBwcml2LT5zZXR0aW5ncy5hbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHM7Ci19Ci0K
LUV3a19WaWV3X1NtYXJ0X0RhdGEqIGV3a192aWV3X3NtYXJ0X2RhdGFfZ2V0KGNvbnN0IEV2YXNf
T2JqZWN0KiBld2tWaWV3KQotewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmll
dywgc21hcnREYXRhLCAwKTsKLSAgICByZXR1cm4gc21hcnREYXRhOwotfQotCi0vKioKLSAqIERv
IGxheW91dCBpZiByZXF1aXJlZCwgYXBwbGllZCByZWN1cnNpdmVseS4KLSAqCi0gKiBAcGFyYW0g
cHJpdiBwcml2YXRlIGhhbmRsZSBwb2ludGVyIG9mIHRoZSB2aWV3IHRvIGxheW91dC4KLSAqCi0g
KiBAbm90ZSB0aGlzIGlzIG5vdCBmb3IgZ2VuZXJhbCB1c2UgYnV0IGp1c3QgZm9yIHN1YmNsYXNz
ZXMgdGhhdCB3YW50Ci0gKiAgICAgICB0byBkZWZpbmUgdGhlaXIgb3duIGJhY2tpbmcgc3RvcmUu
Ci0gKi8KLXZvaWQgZXdrX3ZpZXdfbGF5b3V0X2lmX25lZWRlZF9yZWN1cnNpdmUoRXdrX1ZpZXdf
UHJpdmF0ZV9EYXRhKiBwcml2KQotewotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHBy
aXYpOwotCi0gICAgV2ViQ29yZTo6RnJhbWVWaWV3KiB2aWV3ID0gcHJpdi0+cGFnZS0+bWFpbkZy
YW1lKCkudmlldygpOwotICAgIGlmICghdmlldykgewotICAgICAgICBFUlIoIm5vIG1haW4gZnJh
bWUgdmlldyIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIHZpZXctPnVwZGF0ZUxheW91
dEFuZFN0eWxlSWZOZWVkZWRSZWN1cnNpdmUoKTsKLX0KLQotLyoqCi0gKiBAaW50ZXJuYWwKLSAq
IFJlcG9ydHMgdGhlIHZpZXcgaXMgcmVhZHkgdG8gYmUgZGlzcGxheWVkIGFzIGFsbCBlbGVtZW50
cyBhcmUgYXJlYWR5LgotICoKLSAqIEVtaXRzIHNpZ25hbDogInJlYWR5IiB3aXRoIG5vIHBhcmFt
ZXRlcnMuCi0gKi8KLXZvaWQgZXdrX3ZpZXdfcmVhZHkoRXZhc19PYmplY3QqIGV3a1ZpZXcpCi17
Ci0gICAgREJHKCJld2tWaWV3PSVwIiwgZXdrVmlldyk7Ci0gICAgZXZhc19vYmplY3Rfc21hcnRf
Y2FsbGJhY2tfY2FsbChld2tWaWV3LCAicmVhZHkiLCAwKTsKLX0KLQotLyoqCi0gKiBAaW50ZXJu
YWwKLSAqIFJlcG9ydHMgdGhlIHN0YXRlIG9mIGlucHV0IG1ldGhvZCBjaGFuZ2VkLiBUaGlzIGlz
IHRyaWdnZXJlZCwgZm9yIGV4YW1wbGUKLSAqIHdoZW4gYSBpbnB1dCBmaWVsZCByZWNlaXZlZC9s
b3N0IGZvY3VzCi0gKgotICogRW1pdHMgc2lnbmFsOiAiaW5wdXRtZXRob2QsY2hhbmdlZCIgd2l0
aCBhIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIGl0J3MKLSAqIGVuYWJsZWQgb3Igbm90Lgot
ICovCi12b2lkIGV3a192aWV3X2lucHV0X21ldGhvZF9zdGF0ZV9zZXQoRXZhc19PYmplY3QqIGV3
a1ZpZXcsIGJvb2wgYWN0aXZlKQotewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdr
Vmlldywgc21hcnREYXRhKTsKLSAgICBFV0tfVklFV19QUklWX0dFVChzbWFydERhdGEsIHByaXYp
OwotICAgIFdlYkNvcmU6OkZyYW1lJiBmb2N1c2VkRnJhbWUgPSBwcml2LT5wYWdlLT5mb2N1c0Nv
bnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKLQotICAgIHByaXYtPmltaCA9IDA7Ci0g
ICAgaWYgKGZvY3VzZWRGcmFtZS5kb2N1bWVudCgpCi0gICAgICAgICYmIGZvY3VzZWRGcmFtZS5k
b2N1bWVudCgpLT5mb2N1c2VkRWxlbWVudCgpCi0gICAgICAgICYmIGlzSFRNTElucHV0RWxlbWVu
dChmb2N1c2VkRnJhbWUuZG9jdW1lbnQoKS0+Zm9jdXNlZEVsZW1lbnQoKSkpIHsKLSAgICAgICAg
V2ViQ29yZTo6SFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50OwotCi0gICAgICAgIGlucHV0
RWxlbWVudCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQqPihmb2N1c2Vk
RnJhbWUuZG9jdW1lbnQoKS0+Zm9jdXNlZEVsZW1lbnQoKSk7Ci0gICAgICAgIGlmIChpbnB1dEVs
ZW1lbnQpIHsKLSAgICAgICAgICAgIC8vIGZvciBwYXNzd29yZCBmaWVsZHMsIGFjdGl2ZSA9PSBm
YWxzZQotICAgICAgICAgICAgaWYgKCFhY3RpdmUpIHsKLSAgICAgICAgICAgICAgICBhY3RpdmUg
PSBpbnB1dEVsZW1lbnQtPmlzUGFzc3dvcmRGaWVsZCgpOwotICAgICAgICAgICAgICAgIHByaXYt
PmltaCA9IGlucHV0RWxlbWVudC0+aXNQYXNzd29yZEZpZWxkKCkgKiBFV0tfSU1IX1BBU1NXT1JE
OwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAvLyBTZXQgaW5wdXQgbWV0
aG9kIGhpbnRzIGZvciAibnVtYmVyIiwgInRlbCIsICJlbWFpbCIsIGFuZCAidXJsIiBpbnB1dCBl
bGVtZW50cy4KLSAgICAgICAgICAgICAgICBwcml2LT5pbWggfD0gaW5wdXRFbGVtZW50LT5pc1Rl
bGVwaG9uZUZpZWxkKCkgKiBFV0tfSU1IX1RFTEVQSE9ORTsKLSAgICAgICAgICAgICAgICBwcml2
LT5pbWggfD0gaW5wdXRFbGVtZW50LT5pc051bWJlckZpZWxkKCkgKiBFV0tfSU1IX05VTUJFUjsK
LSAgICAgICAgICAgICAgICBwcml2LT5pbWggfD0gaW5wdXRFbGVtZW50LT5pc0VtYWlsRmllbGQo
KSAqIEVXS19JTUhfRU1BSUw7Ci0gICAgICAgICAgICAgICAgcHJpdi0+aW1oIHw9IGlucHV0RWxl
bWVudC0+aXNVUkxGaWVsZCgpICogRVdLX0lNSF9VUkw7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0KLSAgICB9Ci0KLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKGV3a1ZpZXcs
ICJpbnB1dG1ldGhvZCxjaGFuZ2VkIiwgKHZvaWQqKWFjdGl2ZSk7Ci19Ci0KLS8qKgotICogQGlu
dGVybmFsCi0gKiBUaGUgdmlldyB0aXRsZSB3YXMgY2hhbmdlZCBieSB0aGUgZnJhbWUgbG9hZGVy
LgotICoKLSAqIEVtaXRzIHNpZ25hbDogInRpdGxlLGNoYW5nZWQiIHdpdGggcG9pbnRlciB0byBu
ZXcgdGl0bGUgc3RyaW5nLgotICovCi12b2lkIGV3a192aWV3X3RpdGxlX3NldChFdmFzX09iamVj
dCogZXdrVmlldywgY29uc3QgRXdrX1RleHRfV2l0aF9EaXJlY3Rpb24qIHRpdGxlKQotewotICAg
IERCRygiZXdrVmlldz0lcCwgdGl0bGU9JXMiLCBld2tWaWV3LCAodGl0bGUgJiYgdGl0bGUtPnN0
cmluZykgPyB0aXRsZS0+c3RyaW5nIDogIihudWxsKSIpOwotICAgIGV2YXNfb2JqZWN0X3NtYXJ0
X2NhbGxiYWNrX2NhbGwoZXdrVmlldywgInRpdGxlLGNoYW5nZWQiLCAodm9pZCopdGl0bGUpOwot
fQotCi0vKioKLSAqIEBpbnRlcm5hbAotICogUmVwb3J0cyB0aGF0IG1haW4gZnJhbWUncyB1cmkg
Y2hhbmdlZC4KLSAqCi0gKiBFbWl0cyBzaWduYWw6ICJ1cmksY2hhbmdlZCIgd2l0aCBwb2ludGVy
IHRvIHRoZSBuZXcgdXJpIHN0cmluZy4KLSAqLwotdm9pZCBld2tfdmlld191cmlfY2hhbmdlZChF
dmFzX09iamVjdCogZXdrVmlldykKLXsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3
a1ZpZXcsIHNtYXJ0RGF0YSk7Ci0gICAgY29uc3QgY2hhciogdXJpID0gZXdrX2ZyYW1lX3VyaV9n
ZXQoc21hcnREYXRhLT5tYWluX2ZyYW1lKTsKLSAgICBEQkcoImV3a1ZpZXc9JXAsIHVyaT0lcyIs
IGV3a1ZpZXcsIHVyaSA/IHVyaSA6ICIobnVsbCkiKTsKLSAgICBldmFzX29iamVjdF9zbWFydF9j
YWxsYmFja19jYWxsKGV3a1ZpZXcsICJ1cmksY2hhbmdlZCIsICh2b2lkKil1cmkpOwotfQotCi0v
KioKLSAqIEBpbnRlcm5hbAotICogUmVwb3J0cyB0aGF0IGEgRE9NIGRvY3VtZW50IG9iamVjdCBo
YXMgZmluaXNoZWQgbG9hZGluZyBmb3IgQHAgZnJhbWUuCi0gKgotICogQHBhcmFtIGV3a1ZpZXcg
VmlldyB3aGljaCBjb250YWlucyB0aGUgZnJhbWUuCi0gKiBAcGFyYW0gZnJhbWUgVGhlIGZyYW1l
IHdob3NlIGxvYWQgaGFzIHRyaWdnZXJlZCB0aGUgZXZlbnQuCi0gKgotICogRW1pdHMgc2lnbmFs
OiAibG9hZCxkb2N1bWVudCxmaW5pc2hlZCIgd2l0aCBAcCBmcmFtZSBhcyB0aGUgcGFyYW1ldGVy
LgotICovCi12b2lkIGV3a192aWV3X2xvYWRfZG9jdW1lbnRfZmluaXNoZWQoRXZhc19PYmplY3Qq
IGV3a1ZpZXcsIEV2YXNfT2JqZWN0KiBmcmFtZSkKLXsKLSAgICBldmFzX29iamVjdF9zbWFydF9j
YWxsYmFja19jYWxsKGV3a1ZpZXcsICJsb2FkLGRvY3VtZW50LGZpbmlzaGVkIiwgZnJhbWUpOwot
fQotCi0vKioKLSAqIEBpbnRlcm5hbAotICogUmVwb3J0cyB0aGUgdmlldyBzdGFydGVkIGxvYWRp
bmcgc29tZXRoaW5nLgotICoKLSAqIEBwYXJhbSBld2tWaWV3IFZpZXcuCi0gKiBAcGFyYW0gZXdr
RnJhbWUgRnJhbWUgYmVpbmcgbG9hZGVkLgotICoKLSAqIEVtaXRzIHNpZ25hbDogImxvYWQsc3Rh
cnRlZCIgd2l0aCBubyBwYXJhbWV0ZXJzLgotICovCi12b2lkIGV3a192aWV3X2xvYWRfc3RhcnRl
ZChFdmFzX09iamVjdCogZXdrVmlldywgRXZhc19PYmplY3QqIGV3a0ZyYW1lKQotewotICAgIERC
RygiZXdrVmlldz0lcCwgZXdrRnJhbWU9JXAiLCBld2tWaWV3LCBld2tGcmFtZSk7Ci0gICAgZXZh
c19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChld2tWaWV3LCAibG9hZCxzdGFydGVkIiwgZXdr
RnJhbWUpOwotfQotCi0vKioKLSAqIFJlcG9ydHMgdGhlIGZyYW1lIHN0YXJ0ZWQgbG9hZGluZyBz
b21ldGhpbmcuCi0gKgotICogQHBhcmFtIGV3a1ZpZXcgVmlldy4KLSAqCi0gKiBFbWl0cyBzaWdu
YWw6ICJsb2FkLHN0YXJ0ZWQiIG9uIG1haW4gZnJhbWUgd2l0aCBubyBwYXJhbWV0ZXJzLgotICov
Ci12b2lkIGV3a192aWV3X2ZyYW1lX21haW5fbG9hZF9zdGFydGVkKEV2YXNfT2JqZWN0KiBld2tW
aWV3KQotewotICAgIERCRygiZXdrVmlldz0lcCIsIGV3a1ZpZXcpOwotICAgIEV2YXNfT2JqZWN0
KiBmcmFtZSA9IGV3a192aWV3X2ZyYW1lX21haW5fZ2V0KGV3a1ZpZXcpOwotICAgIGV2YXNfb2Jq
ZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZnJhbWUsICJsb2FkLHN0YXJ0ZWQiLCAwKTsKLX0KLQot
LyoqCi0gKiBAaW50ZXJuYWwKLSAqIFJlcG9ydHMgdGhlIG1haW4gZnJhbWUgc3RhcnRlZCBwcm92
aXNpb25hbCBsb2FkLgotICoKLSAqIEBwYXJhbSBld2tWaWV3IFZpZXcuCi0gKgotICogRW1pdHMg
c2lnbmFsOiAibG9hZCxwcm92aXNpb25hbCIgb24gVmlldyB3aXRoIG5vIHBhcmFtZXRlcnMuCi0g
Ki8KLXZvaWQgZXdrX3ZpZXdfbG9hZF9wcm92aXNpb25hbChFdmFzX09iamVjdCogZXdrVmlldykK
LXsKLSAgICBEQkcoImV3a1ZpZXc9JXAiLCBld2tWaWV3KTsKLSAgICBldmFzX29iamVjdF9zbWFy
dF9jYWxsYmFja19jYWxsKGV3a1ZpZXcsICJsb2FkLHByb3Zpc2lvbmFsIiwgMCk7Ci19Ci0KLS8q
KgotICogQGludGVybmFsCi0gKiBSZXBvcnRzIHRoZSBtYWluIGZyYW1lIHByb3Zpc2lvbmFsIGxv
YWQgZmFpbGVkLgotICoKLSAqIEBwYXJhbSBld2tWaWV3IFZpZXcuCi0gKiBAcGFyYW0gZXJyb3Ig
TG9hZCBlcnJvci4KLSAqCi0gKiBFbWl0cyBzaWduYWw6ICJsb2FkLHByb3Zpc2lvbmFsIiBvbiBW
aWV3IHdpdGggcG9pbnRlciB0byBFd2tfRnJhbWVfTG9hZF9FcnJvci4KLSAqLwotdm9pZCBld2tf
dmlld19sb2FkX3Byb3Zpc2lvbmFsX2ZhaWxlZChFdmFzX09iamVjdCogZXdrVmlldywgY29uc3Qg
RXdrX0ZyYW1lX0xvYWRfRXJyb3IqIGVycm9yKQotewotICAgIERCRygiZXdrVmlldz0lcCwgZXJy
b3I9JXAiLCBld2tWaWV3LCBlcnJvcik7Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tf
Y2FsbChld2tWaWV3LCAibG9hZCxwcm92aXNpb25hbCxmYWlsZWQiLCBjb25zdF9jYXN0PEV3a19G
cmFtZV9Mb2FkX0Vycm9yKj4oZXJyb3IpKTsKLX0KLQotLyoqCi0gKiBAaW50ZXJuYWwKLSAqIFJl
cG9ydHMgdmlldyBjYW4gYmUgc2hvd24gYWZ0ZXIgYSBuZXcgd2luZG93IGlzIGNyZWF0ZWQuCi0g
KgotICogQHBhcmFtIGV3a1ZpZXcgRnJhbWUuCi0gKgotICogRW1pdHMgc2lnbmFsOiAibG9hZCxu
ZXd3aW5kb3csc2hvdyIgb24gdmlldyB3aXRoIG5vIHBhcmFtZXRlcnMuCi0gKi8KLXZvaWQgZXdr
X3ZpZXdfbG9hZF9zaG93KEV2YXNfT2JqZWN0KiBld2tWaWV3KQotewotICAgIERCRygiZXdrVmll
dz0lcCIsIGV3a1ZpZXcpOwotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdr
VmlldywgImxvYWQsbmV3d2luZG93LHNob3ciLCAwKTsKLX0KLQotLyoqCi0gKiBAaW50ZXJuYWwK
LSAqIFJlcG9ydHMgYW4gb25sb2FkIGV2ZW50IGZvciBAcCBmcmFtZS4KLSAqCi0gKiBAcGFyYW0g
ZXdrVmlldyBWaWV3IHdoaWNoIGNvbnRhaW5zIHRoZSBmcmFtZS4KLSAqIEBwYXJhbSBmcmFtZSBU
aGUgZnJhbWUgd2hvc2Ugb25sb2FkIGV2ZW50IHdhcyByZWNlaXZlZC4KLSAqCi0gKiBFbWl0cyBz
aWduYWw6ICJvbmxvYWQsZXZlbnQiIHdpdGggQHAgZnJhbWUgYXMgdGhlIHBhcmFtZXRlci4KLSAq
Lwotdm9pZCBld2tfdmlld19vbmxvYWRfZXZlbnQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV2YXNf
T2JqZWN0KiBmcmFtZSkKLXsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKGV3
a1ZpZXcsICJvbmxvYWQsZXZlbnQiLCBmcmFtZSk7Ci19Ci0KLS8qKgotICogQGludGVybmFsCi0g
KiBSZXBvcnRzIHRoZSBtYWluIGZyYW1lIHJlY2VpdmVkIGFuIGljb24uCi0gKgotICogQHBhcmFt
IGV3a1ZpZXcgVmlldy4KLSAqCi0gKiBFbWl0cyBzaWduYWw6ICJpY29uLHJlY2VpdmVkIiB3aXRo
IG5vIHBhcmFtZXRlcnMuCi0gKi8KLXZvaWQgZXdrX3ZpZXdfZnJhbWVfbWFpbl9pY29uX3JlY2Vp
dmVkKEV2YXNfT2JqZWN0KiBld2tWaWV3KQotewotICAgIERCRygiZXdrVmlldz0lcCIsIGV3a1Zp
ZXcpOwotICAgIEV2YXNfT2JqZWN0KiBmcmFtZSA9IGV3a192aWV3X2ZyYW1lX21haW5fZ2V0KGV3
a1ZpZXcpOwotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZnJhbWUsICJpY29u
LHJlY2VpdmVkIiwgMCk7Ci19Ci0KLS8qKgotICogQGludGVybmFsCi0gKiBSZXBvcnRzIGxvYWQg
ZmluaXNoZWQsIG9wdGlvbmFsbHkgd2l0aCBlcnJvciBpbmZvcm1hdGlvbi4KLSAqCi0gKiBFbWl0
cyBzaWduYWw6ICJsb2FkLGZpbmlzaGVkIiB3aXRoIHBvaW50ZXIgdG8gI0V3a19GcmFtZV9Mb2Fk
X0Vycm9yCi0gKiBpZiBhbnkgZXJyb3IsIG9yIEBjIDAgaWYgc3VjY2Vzc2Z1bCBsb2FkLgotICoK
LSAqIEBub3RlIHRoZXJlIHNob3VsZCBub3QgYmUgYW55IGVycm9yIHN0dWZmIGhlcmUsIGJ1dCB0
cnlpbmcgdG8gYmUKLSAqICAgICAgIGNvbXBhdGlibGUgd2l0aCBwcmV2aW91cyBXZWJLaXQuCi0g
Ki8KLXZvaWQgZXdrX3ZpZXdfbG9hZF9maW5pc2hlZChFdmFzX09iamVjdCogZXdrVmlldywgY29u
c3QgRXdrX0ZyYW1lX0xvYWRfRXJyb3IqIGVycm9yKQotewotICAgIERCRygiZXdrVmlldz0lcCwg
ZXJyb3I9JXAiLCBld2tWaWV3LCBlcnJvcik7Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJh
Y2tfY2FsbChld2tWaWV3LCAibG9hZCxmaW5pc2hlZCIsICh2b2lkKillcnJvcik7Ci19Ci0KLS8q
KgotICogQGludGVybmFsCi0gKiBSZXBvcnRzIGxvYWQgZmFpbGVkIHdpdGggZXJyb3IgaW5mb3Jt
YXRpb24uCi0gKgotICogRW1pdHMgc2lnbmFsOiAibG9hZCxlcnJvciIgd2l0aCBwb2ludGVyIHRv
IEV3a19GcmFtZV9Mb2FkX0Vycm9yLgotICovCi12b2lkIGV3a192aWV3X2xvYWRfZXJyb3IoRXZh
c19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IEV3a19GcmFtZV9Mb2FkX0Vycm9yKiBlcnJvcikKLXsK
LSAgICBEQkcoImV3a1ZpZXc9JXAsIGVycm9yPSVwIiwgZXdrVmlldywgZXJyb3IpOwotICAgIGV2
YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdrVmlldywgImxvYWQsZXJyb3IiLCAodm9p
ZCopZXJyb3IpOwotfQotCi0vKioKLSAqIEBpbnRlcm5hbAotICogUmVwb3J0cyBsb2FkIHByb2dy
ZXNzIGNoYW5nZWQuCi0gKgotICogRW1pdHMgc2lnbmFsOiAibG9hZCxwcm9ncmVzcyIgd2l0aCBw
b2ludGVyIHRvIGEgZG91YmxlIGZyb20gMC4wIHRvIDEuMC4KLSAqLwotdm9pZCBld2tfdmlld19s
b2FkX3Byb2dyZXNzX2NoYW5nZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcpCi17Ci0gICAgRVdLX1ZJ
RVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEpOwotICAgIEVXS19WSUVXX1BS
SVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYpOwotCi0gICAgLy8gRXZhc19Db29yZCB3
aWR0aCwgaGVpZ2h0OwotICAgIGRvdWJsZSBwcm9ncmVzcyA9IHByaXYtPnBhZ2UtPnByb2dyZXNz
KCkuZXN0aW1hdGVkUHJvZ3Jlc3MoKTsKLQotICAgIERCRygiZXdrVmlldz0lcCAocD0lMC4zZiki
LCBld2tWaWV3LCBwcm9ncmVzcyk7Ci0KLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19j
YWxsKGV3a1ZpZXcsICJsb2FkLHByb2dyZXNzIiwgJnByb2dyZXNzKTsKLX0KLQotLyoqCi0gKiBA
aW50ZXJuYWwKLSAqIFJlcG9ydHMgdmlldyBAcGFyYW0gZXdrVmlldyBzaG91bGQgYmUgcmVzdG9y
ZWQgdG8gZGVmYXVsdCBjb25kaXRpb25zCi0gKgotICogQHBhcmFtIGV3a1ZpZXcgVmlldy4KLSAq
IEBwYXJhbSBmcmFtZSBGcmFtZSB0aGF0IG9yaWdpbmF0ZWQgcmVzdG9yZS4KLSAqCi0gKiBFbWl0
cyBzaWduYWw6ICJyZXN0b3JlIiB3aXRoIGZyYW1lLgotICovCi12b2lkIGV3a192aWV3X3Jlc3Rv
cmVfc3RhdGUoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV2YXNfT2JqZWN0KiBmcmFtZSkKLXsKLSAg
ICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKGV3a1ZpZXcsICJyZXN0b3JlIiwgZnJh
bWUpOwotfQotCi0vKioKLSAqIEBpbnRlcm5hbAotICogRGVsZWdhdGVzIHRvIGJyb3dzZXIgdGhl
IGNyZWF0aW9uIG9mIGEgbmV3IHdpbmRvdy4gSWYgaXQgaXMgbm90IGltcGxlbWVudGVkLAotICog
Y3VycmVudCB2aWV3IGlzIHJldHVybmVkLCBzbyBuYXZpZ2F0aW9uIG1pZ2h0IGNvbnRpbnVlIGlu
IHNhbWUgd2luZG93LiBJZgotICogYnJvd3NlciBzdXBwb3J0cyB0aGUgY3JlYXRpb24gb2YgbmV3
IHdpbmRvd3MsIGEgbmV3IEV3a19XaW5kb3dfRmVhdHVyZXMgaXMKLSAqIGNyZWF0ZWQgYW5kIHBh
c3NlZCB0byBicm93c2VyLiBJZiBpdCBpbnRlbmRzIHRvIGtlZXAgdGhlIHJlcXVlc3QgZm9yIG9w
ZW5pbmcKLSAqIHRoZSB3aW5kb3cgbGF0ZXIgaXQgbXVzdCBpbmNyZW1lbnRzIHRoZSBFd2tfV2lu
d2Rvd19GZWF0dXJlcyByZWYgY291bnQgYnkKLSAqIGNhbGxpbmcgZXdrX3dpbmRvd19mZWF0dXJl
c19yZWYod2luZG93X2ZlYXR1cmVzKS4gT3RoZXJ3aXNlIHRoaXMgc3RydWN0IHdpbGwKLSAqIGJl
IGZyZWVkIGFmdGVyIHJldHVybmluZyB0byB0aGlzIGZ1bmN0aW9uLgotICoKLSAqIEBwYXJhbSBl
d2tWaWV3IEN1cnJlbnQgdmlldy4KLSAqIEBwYXJhbSBqYXZhc2NyaXB0IEBjIHRydWUgaWYgdGhl
IG5ldyB3aW5kb3cgaXMgb3JpZ2luYXRlZCBmcm9tIGphdmFzY3JpcHQsCi0gKiBAYyBmYWxzZSBv
dGhlcndpc2UKLSAqIEBwYXJhbSB3aW5kb3dfZmVhdHVyZXMgRmVhdHVyZXMgb2YgdGhlIG5ldyB3
aW5kb3cgYmVpbmcgY3JlYXRlZC4gSWYgaXQncyBAYwotICogMCwgaXQgd2lsbCBiZSBjcmVhdGVk
IGEgd2luZG93IHdpdGggZGVmYXVsdCBmZWF0dXJlcy4KLSAqCi0gKiBAcmV0dXJuIE5ldyB2aWV3
LCBpbiBjYXNlIHNtYXJ0IGNsYXNzIGltcGxlbWVudHMgdGhlIGNyZWF0aW9uIG9mIG5ldyB3aW5k
b3dzOwotICogZWxzZSwgY3VycmVudCB2aWV3IEBwYXJhbSBld2tWaWV3IG9yIEBjIDAgb24gZmFp
bHVyZS4KLSAqCi0gKiBAc2VlIGV3a193aW5kb3dfZmVhdHVyZXNfcmVmKCkuCi0gKi8KLUV2YXNf
T2JqZWN0KiBld2tfdmlld193aW5kb3dfY3JlYXRlKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBib29s
IGphdmFzY3JpcHQsIGNvbnN0IFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzKiBjb3JlRmVhdHVyZXMp
Ci17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIDAp
OwotCi0gICAgaWYgKCFzbWFydERhdGEtPmFwaS0+d2luZG93X2NyZWF0ZSkKLSAgICAgICAgcmV0
dXJuIGV3a1ZpZXc7Ci0KLSAgICBFd2tfV2luZG93X0ZlYXR1cmVzKiB3aW5kb3dGZWF0dXJlcyA9
IGV3a193aW5kb3dfZmVhdHVyZXNfbmV3X2Zyb21fY29yZShjb3JlRmVhdHVyZXMpOwotICAgIGlm
ICghd2luZG93RmVhdHVyZXMpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgRXZhc19PYmplY3Qq
IHZpZXcgPSBzbWFydERhdGEtPmFwaS0+d2luZG93X2NyZWF0ZShzbWFydERhdGEsIGphdmFzY3Jp
cHQsIHdpbmRvd0ZlYXR1cmVzKTsKLSAgICBld2tfd2luZG93X2ZlYXR1cmVzX3VucmVmKHdpbmRv
d0ZlYXR1cmVzKTsKLQotICAgIHJldHVybiB2aWV3OwotfQotCi0vKioKLSAqIEBpbnRlcm5hbAot
ICogUmVwb3J0cyBhIHdpbmRvdyBzaG91bGQgYmUgY2xvc2VkLiBJdCdzIGNsaWVudCByZXNwb25z
aWJpbGl0eSB0byBkZWNpZGUgaWYKLSAqIHRoZSB3aW5kb3cgc2hvdWxkIGluIGZhY3QgYmUgY2xv
c2VkLiBTbywgaWYgb25seSB3aW5kb3dzIGNyZWF0ZWQgYnkgamF2YXNjcmlwdAotICogYXJlIGFs
bG93ZWQgdG8gYmUgY2xvc2VkIGJ5IHRoaXMgY2FsbCwgYnJvd3NlciBuZWVkcyB0byBzYXZlIHRo
ZSBqYXZhc2NyaXB0Ci0gKiBmbGFnIHdoZW4gdGhlIHdpbmRvdyBpcyBjcmVhdGVkLiBTaW5jZSBh
IHdpbmRvdyBjYW4gY2xvc2UgaXRzZWxmIChmb3IgZXhhbXBsZQotICogd2l0aCBhICdzZWxmLmNs
b3NlKCknIGluIEphdmFzY3JpcHQpIGJyb3dzZXIgbXVzdCBwb3N0cG9uZSB0aGUgZGVsZXRpb24g
dG8gYW4KLSAqIGlkbGVyLgotICoKLSAqIEBwYXJhbSBld2tWaWV3IFZpZXcgdG8gYmUgY2xvc2Vk
LgotICovCi12b2lkIGV3a192aWV3X3dpbmRvd19jbG9zZShFdmFzX09iamVjdCogZXdrVmlldykK
LXsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSk7Ci0K
LSAgICBld2tfdmlld19zdG9wKGV3a1ZpZXcpOwotICAgIGlmICghc21hcnREYXRhLT5hcGktPndp
bmRvd19jbG9zZSkKLSAgICAgICAgcmV0dXJuOwotICAgIHNtYXJ0RGF0YS0+YXBpLT53aW5kb3df
Y2xvc2Uoc21hcnREYXRhKTsKLX0KLQotLyoqCi0gKiBAaW50ZXJuYWwKLSAqIFJlcG9ydHMgbW91
c2UgaGFzIG1vdmVkIG92ZXIgYSBsaW5rLgotICoKLSAqIEVtaXRzIHNpZ25hbDogImxpbmssaG92
ZXIsaW4iCi0gKi8KLXZvaWQgZXdrX3ZpZXdfbW91c2VfbGlua19ob3Zlcl9pbihFdmFzX09iamVj
dCogZXdrVmlldywgdm9pZCogZGF0YSkKLXsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFj
a19jYWxsKGV3a1ZpZXcsICJsaW5rLGhvdmVyLGluIiwgZGF0YSk7Ci19Ci0KLS8qKgotICogQGlu
dGVybmFsCi0gKiBSZXBvcnRzIG1vdXNlIGlzIG5vdCBvdmVyIGEgbGluayBhbnltb3JlLgotICoK
LSAqIEVtaXRzIHNpZ25hbDogImxpbmssaG92ZXIsb3V0IgotICovCi12b2lkIGV3a192aWV3X21v
dXNlX2xpbmtfaG92ZXJfb3V0KEV2YXNfT2JqZWN0KiBld2tWaWV3KQotewotICAgIGV2YXNfb2Jq
ZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdrVmlldywgImxpbmssaG92ZXIsb3V0IiwgMCk7Ci19
Ci0KLS8qKgotICogQGludGVybmFsCi0gKiBTZXQgdG9vbGJhciB2aXNpYmxlLgotICoKLSAqIEVt
aXRzIHNpZ25hbDogInRvb2xiYXJzLHZpc2libGUsc2V0IiB3aXRoIGEgcG9pbnRlciB0byBhIGJv
b2xlYW4uCi0gKi8KLXZvaWQgZXdrX3ZpZXdfdG9vbGJhcnNfdmlzaWJsZV9zZXQoRXZhc19PYmpl
Y3QqIGV3a1ZpZXcsIGJvb2wgdmlzaWJsZSkKLXsKLSAgICBEQkcoImV3a1ZpZXc9JXAgKHZpc2li
bGU9JWQpIiwgZXdrVmlldywgISF2aXNpYmxlKTsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxs
YmFja19jYWxsKGV3a1ZpZXcsICJ0b29sYmFycyx2aXNpYmxlLHNldCIsICZ2aXNpYmxlKTsKLX0K
LQotLyoqCi0gKiBAaW50ZXJuYWwKLSAqIEdldCB0b29sYmFyIHZpc2liaWxpdHkuCi0gKgotICog
QHBhcmFtIGV3a1ZpZXcgVmlldy4KLSAqIEBwYXJhbSB2aXNpYmxlIGJvb2xlYW4gcG9pbnRlciBp
biB3aGljaCB0byBzYXZlIHRoZSByZXN1bHQuIEl0IGRlZmF1bHRzCi0gKiB0byBAYyBGQUxTRSwg
aS5lLiBpZiBicm93c2VyIGRvZXMgbm8gbGlzdGVuIHRvIGVtaXR0ZWQgc2lnbmFsLCBpdCBtZWFu
cwotICogdGhlcmUgYXJlIG5vIHRvb2xiYXJzIGFuZCB0aGVyZWZvcmUgdGhleSBhcmUgbm90IHZp
c2libGUuCi0gKgotICogRW1pdHMgc2lnbmFsOiAidG9vbGJhcnMsdmlzaWJsZSxnZXQiIHdpdGgg
YSBwb2ludGVyIHRvIGEgYm9vbGVhbi4KLSAqLwotdm9pZCBld2tfdmlld190b29sYmFyc192aXNp
YmxlX2dldChFdmFzX09iamVjdCogZXdrVmlldywgYm9vbCogdmlzaWJsZSkKLXsKLSAgICBEQkco
IiVzLCBld2tWaWV3PSVwIiwgX19mdW5jX18sIGV3a1ZpZXcpOwotICAgICp2aXNpYmxlID0gZmFs
c2U7Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChld2tWaWV3LCAidG9vbGJh
cnMsdmlzaWJsZSxnZXQiLCB2aXNpYmxlKTsKLX0KLQotLyoqCi0gKiBAaW50ZXJuYWwKLSAqIFNl
dCBzdGF0dXNiYXIgdmlzaWJsZS4KLSAqCi0gKiBAcGFyYW0gZXdrVmlldyBWaWV3LgotICogQHBh
cmFtIHZpc2libGUgQGMgVFJVRSBpZiBzdGF0dXNiYXIgYXJlIHZpc2libGUsIEBjIEZBTFNFIG90
aGVyd2lzZS4KLSAqCi0gKiBFbWl0cyBzaWduYWw6ICJzdGF0dXNiYXIsdmlzaWJsZSxzZXQiIHdp
dGggYSBwb2ludGVyIHRvIGEgYm9vbGVhbi4KLSAqLwotdm9pZCBld2tfdmlld19zdGF0dXNiYXJf
dmlzaWJsZV9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGJvb2wgIHZpc2libGUpCi17Ci0gICAg
REJHKCJld2tWaWV3PSVwICh2aXNpYmxlPSVkKSIsIGV3a1ZpZXcsICEhdmlzaWJsZSk7Ci0gICAg
ZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChld2tWaWV3LCAic3RhdHVzYmFyLHZpc2li
bGUsc2V0IiwgJnZpc2libGUpOwotfQotCi0vKioKLSAqIEBpbnRlcm5hbAotICogR2V0IHN0YXR1
c2JhciB2aXNpYmlsaXR5LgotICoKLSAqIEBwYXJhbSBld2tWaWV3IFZpZXcuCi0gKiBAcGFyYW0g
dmlzaWJsZSBib29sZWFuIHBvaW50ZXIgaW4gd2hpY2ggdG8gc2F2ZSB0aGUgcmVzdWx0LiBJdCBk
ZWZhdWx0cwotICogdG8gQGMgRkFMU0UsIGkuZS4gaWYgYnJvd3NlciBkb2VzIG5vIGxpc3RlbiB0
byBlbWl0dGVkIHNpZ25hbCwgaXQgbWVhbnMKLSAqIHRoZXJlIGlzIG5vIHN0YXR1c2JhciBhbmQg
dGhlcmVmb3JlIGl0IGlzIG5vdCB2aXNpYmxlLgotICoKLSAqIEVtaXRzIHNpZ25hbDogInN0YXR1
c2Jhcix2aXNpYmxlLGdldCIgd2l0aCBhIHBvaW50ZXIgdG8gYSBib29sZWFuLgotICovCi12b2lk
IGV3a192aWV3X3N0YXR1c2Jhcl92aXNpYmxlX2dldChFdmFzX09iamVjdCogZXdrVmlldywgYm9v
bCogdmlzaWJsZSkKLXsKLSAgICBEQkcoIiVzLCBld2tWaWV3PSVwIiwgX19mdW5jX18sIGV3a1Zp
ZXcpOwotICAgICp2aXNpYmxlID0gZmFsc2U7Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJh
Y2tfY2FsbChld2tWaWV3LCAic3RhdHVzYmFyLHZpc2libGUsZ2V0IiwgdmlzaWJsZSk7Ci19Ci0K
LS8qKgotICogQGludGVybmFsCi0gKiBTZXQgdGV4dCBvZiBzdGF0dXNiYXIKLSAqCi0gKiBAcGFy
YW0gZXdrVmlldyBWaWV3LgotICogQHBhcmFtIHRleHQgTmV3IHRleHQgdG8gcHV0IG9uIHN0YXR1
c2Jhci4KLSAqCi0gKiBFbWl0cyBzaWduYWw6ICJzdGF0dXNiYXIsdGV4dCxzZXQiIHdpdGggYSBz
dHJpbmcuCi0gKi8KLXZvaWQgZXdrX3ZpZXdfc3RhdHVzYmFyX3RleHRfc2V0KEV2YXNfT2JqZWN0
KiBld2tWaWV3LCBjb25zdCBjaGFyKiB0ZXh0KQotewotICAgIERCRygiZXdrVmlldz0lcCAodGV4
dD0lcykiLCBld2tWaWV3LCB0ZXh0KTsKLSAgICBJTkZPKCJzdGF0dXMgYmFyIHRleHQgc2V0OiAl
cyIsIHRleHQpOwotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdrVmlldywg
InN0YXR1c2Jhcix0ZXh0LHNldCIsICh2b2lkKil0ZXh0KTsKLX0KLQotLyoqCi0gKiBAaW50ZXJu
YWwKLSAqIFNldCBzY3JvbGxiYXJzIHZpc2libGUuCi0gKgotICogQHBhcmFtIGV3a1ZpZXcgVmll
dy4KLSAqIEBwYXJhbSB2aXNpYmxlIEBjIFRSVUUgaWYgc2Nyb2xsYmFycyBhcmUgdmlzaWJsZSwg
QGMgRkFMU0Ugb3RoZXJ3aXNlLgotICoKLSAqIEVtaXRzIHNpZ25hbDogInNjcm9sbGJhcnMsdmlz
aWJsZSxzZXQiIHdpdGggYSBwb2ludGVyIHRvIGEgYm9vbGVhbi4KLSAqLwotdm9pZCBld2tfdmll
d19zY3JvbGxiYXJzX3Zpc2libGVfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBib29sIHZpc2li
bGUpCi17Ci0gICAgREJHKCJld2tWaWV3PSVwICh2aXNpYmxlPSVkKSIsIGV3a1ZpZXcsICEhdmlz
aWJsZSk7Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChld2tWaWV3LCAic2Ny
b2xsYmFycyx2aXNpYmxlLHNldCIsICZ2aXNpYmxlKTsKLX0KLQotLyoqCi0gKiBAaW50ZXJuYWwK
LSAqIEdldCBzY3JvbGxiYXJzIHZpc2liaWxpdHkuCi0gKgotICogQHBhcmFtIGV3a1ZpZXcgVmll
dy4KLSAqIEBwYXJhbSB2aXNpYmxlIGJvb2xlYW4gcG9pbnRlciBpbiB3aGljaCB0byBzYXZlIHRo
ZSByZXN1bHQuIEl0IGRlZmF1bHRzCi0gKiB0byBAYyBGQUxTRSwgaS5lLiBpZiBicm93c2VyIGRv
ZXMgbm8gbGlzdGVuIHRvIGVtaXR0ZWQgc2lnbmFsLCBpdCBtZWFucwotICogdGhlcmUgYXJlIG5v
IHNjcm9sbGJhcnMgYW5kIHRoZXJlZm9yZSB0aGV5IGFyZSBub3QgdmlzaWJsZS4KLSAqCi0gKiBF
bWl0cyBzaWduYWw6ICJzY3JvbGxiYXJzLHZpc2libGUsZ2V0IiB3aXRoIGEgcG9pbnRlciB0byBh
IGJvb2xlYW4uCi0gKi8KLXZvaWQgZXdrX3ZpZXdfc2Nyb2xsYmFyc192aXNpYmxlX2dldChFdmFz
X09iamVjdCogZXdrVmlldywgYm9vbCogdmlzaWJsZSkKLXsKLSAgICBEQkcoIiVzLCBld2tWaWV3
PSVwIiwgX19mdW5jX18sIGV3a1ZpZXcpOwotICAgICp2aXNpYmxlID0gZmFsc2U7Ci0gICAgZXZh
c19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChld2tWaWV3LCAic2Nyb2xsYmFycyx2aXNpYmxl
LGdldCIsIHZpc2libGUpOwotfQotCi0vKioKLSAqIEBpbnRlcm5hbAotICogU2V0IG1lbnViYXIg
dmlzaWJsZS4KLSAqCi0gKiBAcGFyYW0gZXdrVmlldyBWaWV3LgotICogQHBhcmFtIHZpc2libGUg
QGMgVFJVRSBpZiBtZW51YmFyIGlzIHZpc2libGUsIEBjIEZBTFNFIG90aGVyd2lzZS4KLSAqCi0g
KiBFbWl0cyBzaWduYWw6ICJtZW51YmFyLHZpc2libGUsc2V0IiB3aXRoIGEgcG9pbnRlciB0byBh
IGJvb2xlYW4uCi0gKi8KLXZvaWQgZXdrX3ZpZXdfbWVudWJhcl92aXNpYmxlX3NldChFdmFzX09i
amVjdCogZXdrVmlldywgYm9vbCB2aXNpYmxlKQotewotICAgIERCRygiZXdrVmlldz0lcCAodmlz
aWJsZT0lZCkiLCBld2tWaWV3LCAhIXZpc2libGUpOwotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2Nh
bGxiYWNrX2NhbGwoZXdrVmlldywgIm1lbnViYXIsdmlzaWJsZSxzZXQiLCAmdmlzaWJsZSk7Ci19
Ci0KLS8qKgotICogQGludGVybmFsCi0gKiBHZXQgbWVudWJhciB2aXNpYmlsaXR5LgotICoKLSAq
IEBwYXJhbSBld2tWaWV3IFZpZXcuCi0gKiBAcGFyYW0gdmlzaWJsZSBib29sZWFuIHBvaW50ZXIg
aW4gd2hpY2ggdG8gc2F2ZSB0aGUgcmVzdWx0LiBJdCBkZWZhdWx0cwotICogdG8gQGMgRkFMU0Us
IGkuZS4gaWYgYnJvd3NlciBkb2VzIG5vIGxpc3RlbiB0byBlbWl0dGVkIHNpZ25hbCwgaXQgbWVh
bnMKLSAqIHRoZXJlIGlzIG5vIG1lbnViYXIgYW5kIHRoZXJlZm9yZSBpdCBpcyBub3QgdmlzaWJs
ZS4KLSAqCi0gKiBFbWl0cyBzaWduYWw6ICJtZW51YmFyLHZpc2libGUsZ2V0IiB3aXRoIGEgcG9p
bnRlciB0byBhIGJvb2xlYW4uCi0gKi8KLXZvaWQgZXdrX3ZpZXdfbWVudWJhcl92aXNpYmxlX2dl
dChFdmFzX09iamVjdCogZXdrVmlldywgYm9vbCogdmlzaWJsZSkKLXsKLSAgICBEQkcoIiVzLCBl
d2tWaWV3PSVwIiwgX19mdW5jX18sIGV3a1ZpZXcpOwotICAgICp2aXNpYmxlID0gZmFsc2U7Ci0g
ICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChld2tWaWV3LCAibWVudWJhcix2aXNp
YmxlLGdldCIsIHZpc2libGUpOwotfQotCi0vKioKLSAqIEBpbnRlcm5hbAotICovCi12b2lkIGV3
a192aWV3X3Rvb2x0aXBfdGV4dF9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IGNoYXIq
IHRleHQpCi17Ci0gICAgREJHKCJld2tWaWV3PSVwIHRleHQ9JXMiLCBld2tWaWV3LCB0ZXh0KTsK
LSAgICBpZiAodGV4dCAmJiAqdGV4dCkKLSAgICAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJh
Y2tfY2FsbChld2tWaWV3LCAidG9vbHRpcCx0ZXh0LHNldCIsICh2b2lkKil0ZXh0KTsKLSAgICBl
bHNlCi0gICAgICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdrVmlldywgInRv
b2x0aXAsdGV4dCx1bnNldCIsIDApOwotfQotCi0vKioKLSAqIEBpbnRlcm5hbAotICoKLSAqIEBw
YXJhbSBld2tWaWV3IFZpZXcuCi0gKiBAcGFyYW0gbWVzc2FnZSBTdHJpbmcgdG8gc2hvdyBvbiBj
b25zb2xlLgotICogQHBhcmFtIGxpbmVOdW1iZXIgTGluZSBudW1iZXIuCi0gKiBAc291cmNlSUQg
U291cmNlIGlkLgotICoKLSAqLwotdm9pZCBld2tfdmlld19hZGRfY29uc29sZV9tZXNzYWdlKEV2
YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBjaGFyKiBtZXNzYWdlLCB1bnNpZ25lZCBpbnQgbGlu
ZU51bWJlciwgY29uc3QgY2hhciogc291cmNlSUQpCi17Ci0gICAgREJHKCJld2tWaWV3PSVwIG1l
c3NhZ2U9JXMgbGluZU51bWJlcj0ldSBzb3VyY2VJRD0lcyIsIGV3a1ZpZXcsIG1lc3NhZ2UsIGxp
bmVOdW1iZXIsIHNvdXJjZUlEKTsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1Zp
ZXcsIHNtYXJ0RGF0YSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc21hcnREYXRh
LT5hcGkpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNtYXJ0RGF0YS0+YXBpLT5h
ZGRfY29uc29sZV9tZXNzYWdlKTsKLSAgICBzbWFydERhdGEtPmFwaS0+YWRkX2NvbnNvbGVfbWVz
c2FnZShzbWFydERhdGEsIG1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJjZUlEKTsKLX0KLQotYm9v
bCBld2tfdmlld19mb2N1c19jYW5fY3ljbGUoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV3a19Gb2N1
c19EaXJlY3Rpb24gZGlyZWN0aW9uKQotewotICAgIERCRygiZXdrVmlldz0lcCBkaXJlY3Rpb249
JWQiLCBld2tWaWV3LCBkaXJlY3Rpb24pOwotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4o
ZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRV
Uk5fVkFMKHNtYXJ0RGF0YS0+YXBpLCBmYWxzZSk7Ci0KLSAgICBpZiAoIXNtYXJ0RGF0YS0+YXBp
LT5mb2N1c19jYW5fY3ljbGUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiBz
bWFydERhdGEtPmFwaS0+Zm9jdXNfY2FuX2N5Y2xlKHNtYXJ0RGF0YSwgZGlyZWN0aW9uKTsKLX0K
LQotdm9pZCBld2tfdmlld19ydW5famF2YXNjcmlwdF9hbGVydChFdmFzX09iamVjdCogZXdrVmll
dywgRXZhc19PYmplY3QqIGZyYW1lLCBjb25zdCBjaGFyKiBtZXNzYWdlKQotewotICAgIERCRygi
ZXdrVmlldz0lcCBmcmFtZT0lcCBtZXNzYWdlPSVzIiwgZXdrVmlldywgZnJhbWUsIG1lc3NhZ2Up
OwotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhKTsKLSAg
ICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzbWFydERhdGEtPmFwaSk7Ci0KLSAgICBpZiAo
IXNtYXJ0RGF0YS0+YXBpLT5ydW5famF2YXNjcmlwdF9hbGVydCkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgc21hcnREYXRhLT5hcGktPnJ1bl9qYXZhc2NyaXB0X2FsZXJ0KHNtYXJ0RGF0YSwgZnJh
bWUsIG1lc3NhZ2UpOwotfQotCi1ib29sIGV3a192aWV3X3J1bl9qYXZhc2NyaXB0X2NvbmZpcm0o
RXZhc19PYmplY3QqIGV3a1ZpZXcsIEV2YXNfT2JqZWN0KiBmcmFtZSwgY29uc3QgY2hhciogbWVz
c2FnZSkKLXsKLSAgICBEQkcoImV3a1ZpZXc9JXAgZnJhbWU9JXAgbWVzc2FnZT0lcyIsIGV3a1Zp
ZXcsIGZyYW1lLCBtZXNzYWdlKTsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1Zp
ZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZB
TChzbWFydERhdGEtPmFwaSwgZmFsc2UpOwotCi0gICAgaWYgKCFzbWFydERhdGEtPmFwaS0+cnVu
X2phdmFzY3JpcHRfY29uZmlybSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJu
IHNtYXJ0RGF0YS0+YXBpLT5ydW5famF2YXNjcmlwdF9jb25maXJtKHNtYXJ0RGF0YSwgZnJhbWUs
IG1lc3NhZ2UpOwotfQotCi1ib29sIGV3a192aWV3X3J1bl9iZWZvcmVfdW5sb2FkX2NvbmZpcm0o
RXZhc19PYmplY3QqIGV3a1ZpZXcsIEV2YXNfT2JqZWN0KiBmcmFtZSwgY29uc3QgY2hhciogbWVz
c2FnZSkKLXsKLSAgICBEQkcoImV3a1ZpZXc9JXAgZnJhbWU9JXAgbWVzc2FnZT0lcyIsIGV3a1Zp
ZXcsIGZyYW1lLCBtZXNzYWdlKTsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1Zp
ZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZB
TChzbWFydERhdGEtPmFwaSwgZmFsc2UpOwotCi0gICAgaWYgKCFzbWFydERhdGEtPmFwaS0+cnVu
X2JlZm9yZV91bmxvYWRfY29uZmlybSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0
dXJuIHNtYXJ0RGF0YS0+YXBpLT5ydW5fYmVmb3JlX3VubG9hZF9jb25maXJtKHNtYXJ0RGF0YSwg
ZnJhbWUsIG1lc3NhZ2UpOwotfQotCi1ib29sIGV3a192aWV3X3J1bl9qYXZhc2NyaXB0X3Byb21w
dChFdmFzX09iamVjdCogZXdrVmlldywgRXZhc19PYmplY3QqIGZyYW1lLCBjb25zdCBjaGFyKiBt
ZXNzYWdlLCBjb25zdCBjaGFyKiBkZWZhdWx0VmFsdWUsIGNvbnN0IGNoYXIqKiB2YWx1ZSkKLXsK
LSAgICBEQkcoImV3a1ZpZXc9JXAgZnJhbWU9JXAgbWVzc2FnZT0lcyIsIGV3a1ZpZXcsIGZyYW1l
LCBtZXNzYWdlKTsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0
RGF0YSwgZmFsc2UpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERh
dGEtPmFwaSwgZmFsc2UpOwotCi0gICAgaWYgKCFzbWFydERhdGEtPmFwaS0+cnVuX2phdmFzY3Jp
cHRfcHJvbXB0KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gc21hcnREYXRh
LT5hcGktPnJ1bl9qYXZhc2NyaXB0X3Byb21wdChzbWFydERhdGEsIGZyYW1lLCBtZXNzYWdlLCBk
ZWZhdWx0VmFsdWUsIHZhbHVlKTsKLX0KLQotLyoqCi0gKiBAaW50ZXJuYWwKLSAqIERlbGVnYXRl
cyB0byBjbGllbnQgdG8gZGVjaWRlIHdoZXRoZXIgYSBzY3JpcHQgbXVzdCBiZSBzdG9wcGVkIGJl
Y2F1c2UgaXQncwotICogcnVubmluZyBmb3IgdG9vIGxvbmcuIElmIGNsaWVudCBkb2VzIG5vdCBp
bXBsZW1lbnQgaXQsIGl0IGdvZXMgdG8gZGVmYXVsdAotICogaW1wbGVtZW50YXRpb24sIHdoaWNo
IGxvZ3MgYW5kIHJldHVybnMgZmFsc2UuIENsaWVudCBtYXkgcmVtb3ZlIGxvZyBieQotICogc2V0
dGluZyB0aGlzIGZ1bmN0aW9uIDAsIHdoaWNoIHdpbGwganVzdCByZXR1cm4gZmFsc2UuCi0gKgot
ICogQHBhcmFtIGV3a1ZpZXcgVmlldy4KLSAqCi0gKiBAcmV0dXJuIEBjIHRydWUgaWYgc2NyaXB0
IHNob3VsZCBiZSBzdG9wcGVkOyBAYyBmYWxzZSBvdGhlcndpc2UKLSAqLwotYm9vbCBld2tfdmll
d19zaG91bGRfaW50ZXJydXB0X2phdmFzY3JpcHQoRXZhc19PYmplY3QqIGV3a1ZpZXcpCi17Ci0g
ICAgREJHKCJld2tWaWV3PSVwIiwgZXdrVmlldyk7Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JF
VFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxM
X1JFVFVSTl9WQUwoc21hcnREYXRhLT5hcGksIGZhbHNlKTsKLQotICAgIGlmICghc21hcnREYXRh
LT5hcGktPnNob3VsZF9pbnRlcnJ1cHRfamF2YXNjcmlwdCkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotCi0gICAgcmV0dXJuIHNtYXJ0RGF0YS0+YXBpLT5zaG91bGRfaW50ZXJydXB0X2phdmFzY3Jp
cHQoc21hcnREYXRhKTsKLX0KLQotLyoqCi0gKiBAaW50ZXJuYWwKLSAqIFRoaXMgaXMgY2FsbGVk
IHdoZW5ldmVyIHRoZSBhcHBsaWNhdGlvbiBpcyBhc2tpbmcgdG8gc3RvcmUgZGF0YSB0byB0aGUg
Y2FjaGUgYW5kIHRoZQotICogcXVvdGEgYWxsb2NhdGVkIHRvIHRoYXQgYXBwbGljYXRpb24gaXMg
ZXhjZWVkZWQuIEJyb3dzZXIgbWF5IHVzZSB0aGlzIHRvIGluY3JlYXNlIHRoZQotICogc2l6ZSBv
ZiBxdW90YSBiZWZvcmUgdGhlIG9yaWdpbmF0aW5nIG9wZXJhdGlvbiBmYWlscy4KLSAqCi0gKiBA
cGFyYW0gZXdrVmlldyBWaWV3LgotICogQHBhcmFtIG9yaWdpbiBTZWN1cml0eSBvcmlnaW4uCi0g
KiBAcGFyYW0gZGVmYXVsdE9yaWdpblF1b3RhIERlZmF1bHQgcXVvdGEgZm9yIG9yaWdpbi4KLSAq
IEBwYXJhbSB0b3RhbFNwYWNlTmVlZGVkIFRoZSB0b3RhbCBzcGFjZSBuZWVkZWQgaW4gdGhlIGNh
Y2hlIGluIG9yZGVyIHRvIGZ1bGZpbGwKLSAqIGFwcGxpY2F0aW9uJ3MgcmVxdWlyZW1lbnQuCi0g
Ki8KLWludDY0X3QgZXdrX3ZpZXdfZXhjZWVkZWRfYXBwbGljYXRpb25fY2FjaGVfcXVvdGEoRXZh
c19PYmplY3QqIGV3a1ZpZXcsIEV3a19TZWN1cml0eV9PcmlnaW4gKm9yaWdpbiwgaW50NjRfdCBk
ZWZhdWx0T3JpZ2luUXVvdGEsIGludDY0X3QgdG90YWxTcGFjZU5lZWRlZCkKLXsKLSAgICBEQkco
ImV3a1ZpZXc9JXAiLCBld2tWaWV3KTsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3
a1ZpZXcsIHNtYXJ0RGF0YSwgMCk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFM
KHNtYXJ0RGF0YS0+YXBpLCAwKTsKLSAgICBpZiAoIXNtYXJ0RGF0YS0+YXBpLT5leGNlZWRlZF9h
cHBsaWNhdGlvbl9jYWNoZV9xdW90YSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBJTkZPKCJk
ZWZhdWx0T3JpZ2luUXVvdGE9JSIgUFJJdTY0ICIgdG90YWxTcGFjZU5lZWRlZD0lIiBQUkl1NjQs
IGRlZmF1bHRPcmlnaW5RdW90YSwgdG90YWxTcGFjZU5lZWRlZCk7Ci0gICAgcmV0dXJuIHNtYXJ0
RGF0YS0+YXBpLT5leGNlZWRlZF9hcHBsaWNhdGlvbl9jYWNoZV9xdW90YShzbWFydERhdGEsIG9y
aWdpbiwgZGVmYXVsdE9yaWdpblF1b3RhLCB0b3RhbFNwYWNlTmVlZGVkKTsKLX0KLQotLyoqCi0g
KiBAaW50ZXJuYWwKLSAqIFRoaXMgaXMgY2FsbGVkIHdoZW5ldmVyIHRoZSB3ZWIgc2l0ZSBzaG93
biBpbiBAcGFyYW0gZnJhbWUgaXMgYXNraW5nIHRvIHN0b3JlIGRhdGEKLSAqIHRvIHRoZSBkYXRh
YmFzZSBAcGFyYW0gZGF0YWJhc2VOYW1lIGFuZCB0aGUgcXVvdGEgYWxsb2NhdGVkIHRvIHRoYXQg
d2ViIHNpdGUKLSAqIGlzIGV4Y2VlZGVkLiBCcm93c2VyIG1heSB1c2UgdGhpcyB0byBpbmNyZWFz
ZSB0aGUgc2l6ZSBvZiBxdW90YSBiZWZvcmUgdGhlCi0gKiBvcmlnaW5hdGluZyBvcGVyYXRpb25h
IGZhaWxzLgotICoKLSAqIEBwYXJhbSBld2tWaWV3IFZpZXcuCi0gKiBAcGFyYW0gZnJhbWUgVGhl
IGZyYW1lIHdob3NlIHdlYiBwYWdlIGV4Y2VlZGVkIGl0cyBkYXRhYmFzZSBxdW90YS4KLSAqIEBw
YXJhbSBkYXRhYmFzZU5hbWUgRGF0YWJhc2UgbmFtZS4KLSAqIEBwYXJhbSBjdXJyZW50U2l6ZSBD
dXJyZW50IHNpemUgb2YgdGhpcyBkYXRhYmFzZQotICogQHBhcmFtIGV4cGVjdGVkU2l6ZSBUaGUg
ZXhwZWN0ZWQgc2l6ZSBvZiB0aGlzIGRhdGFiYXNlIGluIG9yZGVyIHRvIGZ1bGZpbGwKLSAqIHNp
dGUncyByZXF1aXJlbWVudC4KLSAqLwotdWludDY0X3QgZXdrX3ZpZXdfZXhjZWVkZWRfZGF0YWJh
c2VfcXVvdGEoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV2YXNfT2JqZWN0KiBmcmFtZSwgY29uc3Qg
Y2hhciogZGF0YWJhc2VOYW1lLCB1aW50NjRfdCBjdXJyZW50U2l6ZSwgdWludDY0X3QgZXhwZWN0
ZWRTaXplKQotewotICAgIERCRygiZXdrVmlldz0lcCIsIGV3a1ZpZXcpOwotICAgIEVXS19WSUVX
X1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCAwKTsKLSAgICBFSU5BX1NBRkVU
WV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5hcGksIDApOwotICAgIGlmICghc21hcnRE
YXRhLT5hcGktPmV4Y2VlZGVkX2RhdGFiYXNlX3F1b3RhKQotICAgICAgICByZXR1cm4gMDsKLQot
ICAgIElORk8oImN1cnJlbnRTaXplPSUiIFBSSXU2NCAiIGV4cGVjdGVkU2l6ZT0lIiBQUkl1NjQs
IGN1cnJlbnRTaXplLCBleHBlY3RlZFNpemUpOwotICAgIHJldHVybiBzbWFydERhdGEtPmFwaS0+
ZXhjZWVkZWRfZGF0YWJhc2VfcXVvdGEoc21hcnREYXRhLCBmcmFtZSwgZGF0YWJhc2VOYW1lLCBj
dXJyZW50U2l6ZSwgZXhwZWN0ZWRTaXplKTsKLX0KLQotLyoqCi0gKiBAaW50ZXJuYWwKLSAqIE9w
ZW4gcGFuZWwgdG8gY2hvb3NlIGEgZmlsZS4KLSAqCi0gKiBAcGFyYW0gZXdrVmlldyBWaWV3Lgot
ICogQHBhcmFtIGZyYW1lIEZyYW1lIGluIHdoaWNoIG9wZXJhdGlvbiBpcyByZXF1aXJlZC4KLSAq
IEBwYXJhbSBhbGxvd3NNdWx0aXBsZUZpbGVzIEBjIHRydWUgd2hlbiBtb3JlIHRoYW4gb25lIGZp
bGUgbWF5IGJlIHNlbGVjdGVkLCBAYyBmYWxzZSBvdGhlcndpc2UuCi0gKiBAcGFyYW0gYWNjZXB0
TUlNRVR5cGVzIExpc3Qgb2YgYWNjZXB0ZWQgbWltZSB0eXBlcy4gSXQgaXMgcGFzc2VkIHRvIGNo
aWxkIG9iamVjdHMgYXMgYW4gRWluYV9MaXN0IG9mIGNoYXIgcG9pbnRlcnMgdGhhdCBpcyBmcmVl
ZCBhdXRvbWF0aWNhbGx5LgotICogQHBhcmFtIHNlbGVjdGVkRmlsZW5hbWVzIExpc3Qgb2YgZmls
ZXMgc2VsZWN0ZWQuCi0gKgotICogQHJldHVybiBAZmFsc2UgaWYgdXNlciBjYW5jZWxlZCBmaWxl
IHNlbGVjdGlvbjsgQHRydWUgaWYgY29uZmlybWVkLgotICovCi1ib29sIGV3a192aWV3X3J1bl9v
cGVuX3BhbmVsKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFdmFzX09iamVjdCogZnJhbWUsIEV3a19G
aWxlX0Nob29zZXIqIGZpbGVDaG9vc2VyLCBFaW5hX0xpc3QqKiBzZWxlY3RlZEZpbGVuYW1lcykK
LXsKLSAgICBEQkcoImV3a1ZpZXc9JXAgZnJhbWU9JXAgYWxsb3dzX211bHRpcGxlX2ZpbGVzPSVk
IiwgZXdrVmlldywgZnJhbWUsIGV3a19maWxlX2Nob29zZXJfYWxsb3dzX211bHRpcGxlX2ZpbGVz
X2dldChmaWxlQ2hvb3NlcikpOwotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmll
dywgc21hcnREYXRhLCBmYWxzZSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFM
KHNtYXJ0RGF0YS0+YXBpLCBmYWxzZSk7Ci0KLSAgICBpZiAoIXNtYXJ0RGF0YS0+YXBpLT5ydW5f
b3Blbl9wYW5lbCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgKnNlbGVjdGVkRmlsZW5h
bWVzID0gMDsKLSAgICBib29sIGNvbmZpcm0gPSBzbWFydERhdGEtPmFwaS0+cnVuX29wZW5fcGFu
ZWwoc21hcnREYXRhLCBmcmFtZSwgZmlsZUNob29zZXIsIHNlbGVjdGVkRmlsZW5hbWVzKTsgICAg
Ci0gICAgaWYgKCFjb25maXJtICYmICpzZWxlY3RlZEZpbGVuYW1lcykKLSAgICAgICAgRVJSKCJD
YW5jZWxlZCBmaWxlIHNlbGVjdGlvbiwgYnV0IHNlbGVjdGVkIGZpbGVuYW1lcyAhPSAwLiBGcmVl
IG5hbWVzIGJlZm9yZSByZXR1cm4uIik7Ci0KLSAgICByZXR1cm4gY29uZmlybTsKLX0KLQotLyoq
Ci0gKiBAaW50ZXJuYWwKLSAqCi0gKiBNYXJrZWQgdGhlIGNoYW5nZSB0byBjYWxsIGZyYW1lUmVj
dHNDaGFuZ2VkLgotICovCi12b2lkIGV3a192aWV3X2ZyYW1lX3JlY3RfY2hhbmdlZChFdmFzX09i
amVjdCogZXdrVmlldykKLXsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcs
IHNtYXJ0RGF0YSk7Ci0KLSAgICBzbWFydERhdGEtPmNoYW5nZWQuZnJhbWVfcmVjdCA9IHRydWU7
Ci0gICAgX2V3a192aWV3X3NtYXJ0X2NoYW5nZWQoc21hcnREYXRhKTsKLX0KLQotV1RGOjpQYXNz
UmVmUHRyPFdlYkNvcmU6OldpZGdldD4gZXdrX3ZpZXdfcGx1Z2luX2NyZWF0ZShFdmFzX09iamVj
dCogZXdrVmlldywgRXZhc19PYmplY3QqIGZyYW1lLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBw
bHVnaW5TaXplLCBXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudCogZWxlbWVudCwgY29uc3QgV2Vi
Q29yZTo6VVJMJiB1cmwsIGNvbnN0IFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYgcGFyYW1OYW1l
cywgY29uc3QgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiBwYXJhbVZhbHVlcywgY29uc3QgV1RG
OjpTdHJpbmcmIG1pbWVUeXBlLCBib29sIGxvYWRNYW51YWxseSkKLXsKLSAgICBEQkcoImV3a1Zp
ZXc9JXAsIGZyYW1lPSVwLCBzaXplPSVkeCVkLCBlbGVtZW50PSVwLCB1cmw9JXMsIG1pbWVUeXBl
PSVzIiwKLSAgICAgICAgZXdrVmlldywgZnJhbWUsIHBsdWdpblNpemUud2lkdGgoKSwgcGx1Z2lu
U2l6ZS5oZWlnaHQoKSwgZWxlbWVudCwKLSAgICAgICAgdXJsLnN0cmluZygpLnV0ZjgoKS5kYXRh
KCksIG1pbWVUeXBlLnV0ZjgoKS5kYXRhKCkpOwotCi0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JF
VFVSTihld2tWaWV3LCBzbWFydERhdGEsIDApOwotICAgIHNtYXJ0RGF0YS0+Y2hhbmdlZC5mcmFt
ZV9yZWN0ID0gdHJ1ZTsKLSAgICBfZXdrX3ZpZXdfc21hcnRfY2hhbmdlZChzbWFydERhdGEpOwot
Ci0gICAgcmV0dXJuIGV3a19mcmFtZV9wbHVnaW5fY3JlYXRlCi0gICAgICAgICAgICAgICAoZnJh
bWUsIHBsdWdpblNpemUsIGVsZW1lbnQsIHVybCwgcGFyYW1OYW1lcywgcGFyYW1WYWx1ZXMsCi0g
ICAgICAgICAgICAgICBtaW1lVHlwZSwgbG9hZE1hbnVhbGx5KTsKLX0KLQotLyoqCi0gKiBAaW50
ZXJuYWwKLSAqCi0gKiBDcmVhdGVzIGEgbmV3IHBvcHVwIHdpdGggb3B0aW9ucyB3aGVuIGEgc2Vs
ZWN0IHdpZGdldCB3YXMgY2xpY2tlZC4KLSAqCi0gKiBAcGFyYW0gY2xpZW50IFBvcHVwTWVudUNs
aWVudCBpbnN0YW5jZSB0aGF0IGFsbG93cyBjb21tdW5pY2F0aW9uIHdpdGggd2Via2l0LgotICog
QHBhcmFtIHNlbGVjdGVkIFNlbGVjdGVkIGl0ZW0uCi0gKiBAcGFyYW0gcmVjdCBNZW51J3MgcG9z
aXRpb24uCi0gKgotICogRW1pdHM6ICJwb3B1cCxjcmVhdGUiIHdpdGggYSBsaXN0IG9mIEV3a19N
ZW51IGNvbnRhaW5pbmcgZWFjaCBpdGVtJ3MgZGF0YQotICovCi12b2lkIGV3a192aWV3X3BvcHVw
X25ldyhFdmFzX09iamVjdCogZXdrVmlldywgV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KiBjbGll
bnQsIGludCAvKnNlbGVjdGVkKi8sIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHJlY3QpCi17Ci0g
ICAgSU5GTygiZXdrVmlldz0lcCIsIGV3a1ZpZXcpOwotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9S
RVRVUk4oZXdrVmlldywgc21hcnREYXRhKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRV
Uk4oc21hcnREYXRhLCBwcml2KTsKLQotICAgIGlmIChwcml2LT5wb3B1cC5tZW51Q2xpZW50KQot
ICAgICAgICBld2tfdmlld19wb3B1cF9kZXN0cm95KGV3a1ZpZXcpOwotCi0gICAgcHJpdi0+cG9w
dXAubWVudUNsaWVudCA9IGNsaWVudDsKLQotICAgIC8vIHBvcHVsYXRlIGl0ZW1zCi0gICAgY29u
c3QgaW50IHNpemUgPSBjbGllbnQtPmxpc3RTaXplKCk7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkg
PCBzaXplOyArK2kpIHsKLSAgICAgICAgRXdrX01lbnVfSXRlbSogaXRlbSA9IG5ldyBFd2tfTWVu
dV9JdGVtOwotICAgICAgICBpZiAoY2xpZW50LT5pdGVtSXNTZXBhcmF0b3IoaSkpCi0gICAgICAg
ICAgICBpdGVtLT50eXBlID0gRVdLX01FTlVfU0VQQVJBVE9SOwotICAgICAgICBlbHNlIGlmIChj
bGllbnQtPml0ZW1Jc0xhYmVsKGkpKQotICAgICAgICAgICAgaXRlbS0+dHlwZSA9IEVXS19NRU5V
X0dST1VQOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBpdGVtLT50eXBlID0gRVdLX01FTlVf
T1BUSU9OOwotICAgICAgICBpdGVtLT50ZXh0ID0gZWluYV9zdHJpbmdzaGFyZV9hZGQoY2xpZW50
LT5pdGVtVGV4dChpKS51dGY4KCkuZGF0YSgpKTsKLQotICAgICAgICBwcml2LT5wb3B1cC5tZW51
Lml0ZW1zID0gZWluYV9saXN0X2FwcGVuZChwcml2LT5wb3B1cC5tZW51Lml0ZW1zLCBpdGVtKTsK
LSAgICB9Ci0KLSAgICBwcml2LT5wb3B1cC5tZW51LnggPSByZWN0LngoKTsKLSAgICBwcml2LT5w
b3B1cC5tZW51LnkgPSByZWN0LnkoKTsKLSAgICBwcml2LT5wb3B1cC5tZW51LndpZHRoID0gcmVj
dC53aWR0aCgpOwotICAgIHByaXYtPnBvcHVwLm1lbnUuaGVpZ2h0ID0gcmVjdC5oZWlnaHQoKTsK
LSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKGV3a1ZpZXcsICJwb3B1cCxjcmVh
dGUiLCAmcHJpdi0+cG9wdXAubWVudSk7Ci19Ci0KLUVpbmFfQm9vbCBld2tfdmlld19wb3B1cF9k
ZXN0cm95KEV2YXNfT2JqZWN0KiBld2tWaWV3KQotewotICAgIElORk8oImV3a1ZpZXc9JXAiLCBl
d2tWaWV3KTsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0
YSwgZmFsc2UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHBy
aXYsIGZhbHNlKTsKLQotICAgIGlmICghcHJpdi0+cG9wdXAubWVudUNsaWVudCkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChld2tW
aWV3LCAicG9wdXAsd2lsbGRlbGV0ZSIsICZwcml2LT5wb3B1cC5tZW51KTsKLQotICAgIHZvaWQq
IGl0ZW12OwotICAgIEVJTkFfTElTVF9GUkVFKHByaXYtPnBvcHVwLm1lbnUuaXRlbXMsIGl0ZW12
KSB7Ci0gICAgICAgIEV3a19NZW51X0l0ZW0qIGl0ZW0gPSBzdGF0aWNfY2FzdDxFd2tfTWVudV9J
dGVtKj4oaXRlbXYpOwotICAgICAgICBlaW5hX3N0cmluZ3NoYXJlX2RlbChpdGVtLT50ZXh0KTsK
LSAgICAgICAgZGVsZXRlIGl0ZW07Ci0gICAgfQotICAgIHByaXYtPnBvcHVwLm1lbnVDbGllbnQt
PnBvcHVwRGlkSGlkZSgpOwotICAgIHByaXYtPnBvcHVwLm1lbnVDbGllbnQgPSAwOwotCi0gICAg
cmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQgZXdrX3ZpZXdfcG9wdXBfc2VsZWN0ZWRfc2V0KEV2YXNf
T2JqZWN0KiBld2tWaWV3LCBpbnQgaW5kZXgpCi17Ci0gICAgSU5GTygiZXdrVmlldz0lcCIsIGV3
a1ZpZXcpOwotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRh
KTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2KTsKLSAg
ICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihwcml2LT5wb3B1cC5tZW51Q2xpZW50KTsKLQot
ICAgIHByaXYtPnBvcHVwLm1lbnVDbGllbnQtPnZhbHVlQ2hhbmdlZChpbmRleCk7Ci19Ci0KLSNp
ZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKLS8qKgotICogQGludGVybmFsCi0gKgotICogQ3Jl
YXRlcyBhIG5ldyBjb2xvciBjaG9vc2VyIHdpdGggYW4gaW5pdGlhbCBzZWxlY3RlZCBjb2xvci4K
LSAqCi0gKiBAcGFyYW0gY2xpZW50IENvbG9yQ2hvb3NlckNsaWVudCBpbnN0YW5jZSB0aGF0IGFs
bG93cyBjb21tdW5pY2F0aW9uIHdpdGggd2Via2l0LgotICogQHBhcmFtIGluaXRpYWxDb2xvciBU
aGUgaW5pdGlhbCBzZWxlY3RlZCBjb2xvci4KLSAqCi0gKi8KLXZvaWQgZXdrX3ZpZXdfY29sb3Jf
Y2hvb3Nlcl9uZXcoRXZhc19PYmplY3QqIGV3a1ZpZXcsIFdlYkNvcmU6OkNvbG9yQ2hvb3NlckNs
aWVudCogY2xpZW50LCBjb25zdCBXZWJDb3JlOjpDb2xvciYgaW5pdGlhbENvbG9yKQotewotICAg
IElORk8oImV3a1ZpZXc9JXAiLCBld2tWaWV3KTsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVU
VVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJO
KHNtYXJ0RGF0YSwgcHJpdik7Ci0KLSAgICBpZiAocHJpdi0+Y29sb3JDaG9vc2VyQ2xpZW50KQot
ICAgICAgICBld2tfdmlld19jb2xvcl9jaG9vc2VyX2Rlc3Ryb3koZXdrVmlldyk7Ci0KLSAgICBw
cml2LT5jb2xvckNob29zZXJDbGllbnQgPSBjbGllbnQ7Ci0KLSAgICBFd2tfQ29sb3IgY29sb3I7
Ci0gICAgY29sb3IuciA9IGluaXRpYWxDb2xvci5yZWQoKTsKLSAgICBjb2xvci5nID0gaW5pdGlh
bENvbG9yLmdyZWVuKCk7Ci0gICAgY29sb3IuYiA9IGluaXRpYWxDb2xvci5ibHVlKCk7Ci0gICAg
Y29sb3IuYSA9IGluaXRpYWxDb2xvci5hbHBoYSgpOwotCi0gICAgZXZhc19vYmplY3Rfc21hcnRf
Y2FsbGJhY2tfY2FsbChld2tWaWV3LCAiY29sb3JjaG9vc2VyLGNyZWF0ZSIsICZjb2xvcik7Ci19
Ci0KLUVpbmFfQm9vbCBld2tfdmlld19jb2xvcl9jaG9vc2VyX2Rlc3Ryb3koRXZhc19PYmplY3Qq
IGV3a1ZpZXcpCi17Ci0gICAgSU5GTygiZXdrVmlldz0lcCIsIGV3a1ZpZXcpOwotICAgIEVXS19W
SUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7Ci0gICAgRVdL
X1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwotCi0gICAg
aWYgKCFwcml2LT5jb2xvckNob29zZXJDbGllbnQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQot
ICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdrVmlldywgImNvbG9yY2hvb3Nl
cix3aWxsZGVsZXRlIiwgMCk7Ci0KLSAgICBwcml2LT5jb2xvckNob29zZXJDbGllbnQtPmRpZEVu
ZENob29zZXIoKTsKLSAgICBwcml2LT5jb2xvckNob29zZXJDbGllbnQgPSAwOwotCi0gICAgcmV0
dXJuIHRydWU7Ci19Ci0KLXZvaWQgZXdrX3ZpZXdfY29sb3JfY2hvb3Nlcl9jb2xvcl9zZXQoRXZh
c19PYmplY3QgKmV3a1ZpZXcsIGludCByLCBpbnQgZywgaW50IGIpCi17Ci0gICAgSU5GTygiZXdr
Vmlldz0lcCIsIGV3a1ZpZXcpOwotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmll
dywgc21hcnREYXRhKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRh
LCBwcml2KTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihwcml2LT5jb2xvckNob29z
ZXJDbGllbnQpOwotCi0gICAgLy8gQWxwaGEgY2hhbm5lbCBpcyBub3QgYWxsb3dlZCwgc2VlIENv
bG9ySW5wdXRUeXBlOjpzYW5pdGl6ZVZhbHVlKCkuCi0gICAgcHJpdi0+Y29sb3JDaG9vc2VyQ2xp
ZW50LT5kaWRDaG9vc2VDb2xvcihXZWJDb3JlOjpDb2xvcihyLCBnLCBiKSk7Ci19Ci0KLS8qKgot
ICogQGludGVybmFsCi0gKgotICogVGhlIHNlbGVjdGVkIGNvbG9yIG9mIHRoZSBjb2xvciBpbnB1
dCBhc3NvY2lhdGVkIHdpdGggdGhlIGNvbG9yIGNob29zZXIgaGFzCi0gKiBjaGFuZ2VkLiBVc3Vh
bGx5IHRoZSBicm93c2VyIHNob3VsZCB1cGRhdGVkIHRoZSBjdXJyZW50IHNlbGVjdGVkIHZhbHVl
IG9uIHRoZQotICogY29sb3IgcGlja2VyIGlmIHRoZSB1c2VyIGlzIG5vdCBpbnRlcmFjdGluZy4K
LSAqCi0gKiBAcGFyYW0gbmV3Q29sb3IgVGhlIG5ldyBzZWxlY3RlZCBjb2xvci4KLSAqCi0gKi8K
LXZvaWQgZXdrX3ZpZXdfY29sb3JfY2hvb3Nlcl9jaGFuZ2VkKEV2YXNfT2JqZWN0KiBld2tWaWV3
LCBjb25zdCBXZWJDb3JlOjpDb2xvciYgbmV3Q29sb3IpCi17Ci0gICAgSU5GTygiZXdrVmlldz0l
cCIsIGV3a1ZpZXcpOwotCi0gICAgRXdrX0NvbG9yIGNvbG9yOwotICAgIGNvbG9yLnIgPSBuZXdD
b2xvci5yZWQoKTsKLSAgICBjb2xvci5nID0gbmV3Q29sb3IuZ3JlZW4oKTsKLSAgICBjb2xvci5i
ID0gbmV3Q29sb3IuYmx1ZSgpOwotICAgIGNvbG9yLmEgPSBuZXdDb2xvci5hbHBoYSgpOwotCi0g
ICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChld2tWaWV3LCAiY29sb3JjaG9vc2Vy
LGNvbG9yLGNoYW5nZWQiLCAmY29sb3IpOwotfQotI2VuZGlmCi0KLS8qKgotICogQGludGVybmFs
Ci0gKiBSZXF1ZXN0IGEgZG93bmxvYWQgdG8gdXNlci4KLSAqCi0gKiBAcGFyYW0gZXdrVmlldyBW
aWV3LgotICogQG9hcmFtIGRvd25sb2FkIEV3a19Eb3dubG9hZCBzdHJ1Y3QgdG8gYmUgc2VudC4K
LSAqCi0gKiBFbWl0czogImRvd25sb2FkLHJlcXVlc3QiIHdpdGggYW4gRXdrX0Rvd25sb2FkIGNv
bnRhaW5pbmcgdGhlIGRldGFpbHMgb2YgdGhlCi0gKiByZXF1ZXN0ZWQgZG93bmxvYWQuIFRoZSBk
b3dubG9hZCBwZXIgc2UgbXVzdCBiZSBoYW5kbGVkIG91dHNpZGUgb2Ygd2Via2l0LgotICovCi12
b2lkIGV3a192aWV3X2Rvd25sb2FkX3JlcXVlc3QoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV3a19E
b3dubG9hZCogZG93bmxvYWQpCi17Ci0gICAgREJHKCJld2tWaWV3PSVwIiwgZXdrVmlldyk7Ci0g
ICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChld2tWaWV3LCAiZG93bmxvYWQscmVx
dWVzdCIsIGRvd25sb2FkKTsKLX0KLQotI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQot
LyoqCi0gKiBAaW50ZXJuYWwKLSAqIFJlcG9ydHMgdGhlIEpTIHdpbmRvdyBvYmplY3Qgd2FzIGNs
ZWFyZWQuCi0gKgotICogQHBhcmFtIGV3a1ZpZXcgdmlldy4KLSAqIEBwYXJhbSBmcmFtZSB0aGUg
ZnJhbWUuCi0gKi8KLXZvaWQgZXdrX3ZpZXdfanNfd2luZG93X29iamVjdF9jbGVhcihFdmFzX09i
amVjdCogZXdrVmlldywgRXZhc19PYmplY3QqIGZyYW1lKQotewotICAgIGV2YXNfb2JqZWN0X3Nt
YXJ0X2NhbGxiYWNrX2NhbGwoZXdrVmlldywgImpzLHdpbmRvd29iamVjdCxjbGVhciIsIGZyYW1l
KTsKLX0KLSNlbmRpZgotCi0vKioKLSAqIEBpbnRlcm5hbAotICogUmVwb3J0cyB0aGUgdmlld3Bv
cnQgaGFzIGNoYW5nZWQuCi0gKgotICogQHBhcmFtIGFyZ3VtZW50cyB2aWV3cG9ydCBhcmd1bWVu
dC4KLSAqCi0gKiBFbWl0cyBzaWduYWw6ICJ2aWV3cG9ydCxjaGFuZ2VkIiB3aXRoIG5vIHBhcmFt
ZXRlcnMuCi0gKi8KLXZvaWQgZXdrX3ZpZXdfdmlld3BvcnRfYXR0cmlidXRlc19zZXQoRXZhc19P
YmplY3QqIGV3a1ZpZXcsIGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzJiBhcmd1bWVu
dHMpCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUKGV3a1ZpZXcsIHNtYXJ0RGF0YSk7Ci0gICAgRVdL
X1ZJRVdfUFJJVl9HRVQoc21hcnREYXRhLCBwcml2KTsKLQotICAgIHByaXYtPnZpZXdwb3J0QXJn
dW1lbnRzID0gYXJndW1lbnRzOwotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwo
ZXdrVmlldywgInZpZXdwb3J0LGNoYW5nZWQiLCAwKTsKLX0KLQotdm9pZCBld2tfdmlld192aWV3
cG9ydF9hdHRyaWJ1dGVzX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldywgaW50KiB3aWR0
aCwgaW50KiBoZWlnaHQsIGZsb2F0KiBpbml0U2NhbGUsIGZsb2F0KiBtYXhTY2FsZSwgZmxvYXQq
IG1pblNjYWxlLCBmbG9hdCogZGV2aWNlUGl4ZWxSYXRpbywgRWluYV9Cb29sKiB1c2VyU2NhbGFi
bGUpCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEp
OwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYpOwotICAg
IFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRlcyBhdHRyaWJ1dGVzID0gX2V3a192aWV3X3ZpZXdw
b3J0X2F0dHJpYnV0ZXNfY29tcHV0ZShwcml2KTsKLQotICAgIGlmICh3aWR0aCkKLSAgICAgICAg
KndpZHRoID0gYXR0cmlidXRlcy5sYXlvdXRTaXplLndpZHRoKCk7Ci0gICAgaWYgKGhlaWdodCkK
LSAgICAgICAgKmhlaWdodCA9IGF0dHJpYnV0ZXMubGF5b3V0U2l6ZS5oZWlnaHQoKTsKLSAgICBp
ZiAoaW5pdFNjYWxlKQotICAgICAgICAqaW5pdFNjYWxlID0gYXR0cmlidXRlcy5pbml0aWFsU2Nh
bGU7Ci0gICAgaWYgKG1heFNjYWxlKQotICAgICAgICAqbWF4U2NhbGUgPSBhdHRyaWJ1dGVzLm1h
eGltdW1TY2FsZTsKLSAgICBpZiAobWluU2NhbGUpCi0gICAgICAgICptaW5TY2FsZSA9IGF0dHJp
YnV0ZXMubWluaW11bVNjYWxlOwotICAgIGlmIChkZXZpY2VQaXhlbFJhdGlvKQotICAgICAgICAq
ZGV2aWNlUGl4ZWxSYXRpbyA9IHByaXYtPnBhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCk7Ci0gICAg
aWYgKHVzZXJTY2FsYWJsZSkKLSAgICAgICAgKnVzZXJTY2FsYWJsZSA9IHN0YXRpY19jYXN0PGJv
b2w+KGF0dHJpYnV0ZXMudXNlclNjYWxhYmxlKTsKLX0KLQotRWluYV9Cb29sIGV3a192aWV3X3pv
b21fcmFuZ2Vfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBmbG9hdCBtaW5TY2FsZSwgZmxvYXQg
bWF4U2NhbGUpCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFy
dERhdGEsIGZhbHNlKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRh
LCBwcml2LCBmYWxzZSk7Ci0KLSAgICBpZiAobWF4U2NhbGUgPCBtaW5TY2FsZSkgewotICAgICAg
ICBXQVJOKCJtaW5TY2FsZSBpcyBsYXJnZXIgdGhhbiBtYXhTY2FsZSIpOwotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgcHJpdi0+c2V0dGluZ3Muem9vbVJhbmdlLm1pblNjYWxl
ID0gbWluU2NhbGU7Ci0gICAgcHJpdi0+c2V0dGluZ3Muem9vbVJhbmdlLm1heFNjYWxlID0gbWF4
U2NhbGU7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotZmxvYXQgZXdrX3ZpZXdfem9vbV9yYW5n
ZV9taW5fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQotewotICAgIEVXS19WSUVXX1NE
X0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCAtMS4wKTsKLSAgICBFV0tfVklFV19Q
UklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCAtMS4wKTsKLQotICAgIHJldHVybiBw
cml2LT5zZXR0aW5ncy56b29tUmFuZ2UubWluU2NhbGU7Ci19Ci0KLWZsb2F0IGV3a192aWV3X3pv
b21fcmFuZ2VfbWF4X2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKLXsKLSAgICBFV0tf
VklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgLTEuMCk7Ci0gICAgRVdL
X1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgLTEuMCk7Ci0KLSAgICBy
ZXR1cm4gcHJpdi0+c2V0dGluZ3Muem9vbVJhbmdlLm1heFNjYWxlOwotfQotCi1FaW5hX0Jvb2wg
ZXdrX3ZpZXdfdXNlcl9zY2FsYWJsZV9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEVpbmFfQm9v
bCB1c2VyU2NhbGFibGUpCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3
LCBzbWFydERhdGEsIGZhbHNlKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21h
cnREYXRhLCBwcml2LCBmYWxzZSk7Ci0KLSAgICBwcml2LT5zZXR0aW5ncy56b29tUmFuZ2UudXNl
clNjYWxhYmxlID0gdXNlclNjYWxhYmxlOwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLUVpbmFf
Qm9vbCBld2tfdmlld191c2VyX3NjYWxhYmxlX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmll
dykKLXsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwg
ZmFsc2UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYs
IGZhbHNlKTsKLQotICAgIHJldHVybiBwcml2LT5zZXR0aW5ncy56b29tUmFuZ2UudXNlclNjYWxh
YmxlOwotfQotCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfZGV2aWNlX3BpeGVsX3JhdGlvX3NldChFdmFz
X09iamVjdCogZXdrVmlldywgZmxvYXQgcmF0aW8pCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09S
X1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKLSAgICBFV0tfVklFV19QUklWX0dF
VF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBmYWxzZSk7Ci0KLSAgICBwcml2LT5wYWdlLT5z
ZXREZXZpY2VTY2FsZUZhY3RvcihyYXRpbyk7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotZmxv
YXQgZXdrX3ZpZXdfZGV2aWNlX3BpeGVsX3JhdGlvX2dldChjb25zdCBFdmFzX09iamVjdCogZXdr
VmlldykKLXsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0
YSwgLTEuMCk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJp
diwgLTEuMCk7Ci0KLSAgICByZXR1cm4gcHJpdi0+cGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKTsK
LX0KLQotdm9pZCBld2tfdmlld190ZXh0X2RpcmVjdGlvbl9zZXQoRXZhc19PYmplY3QqIGV3a1Zp
ZXcsIEV3a19UZXh0X0RpcmVjdGlvbiBkaXJlY3Rpb24pCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VU
X09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09S
X1JFVFVSTihzbWFydERhdGEsIHByaXYpOwotCi0gICAgLy8gVGhlIEVkaXRvcjo6c2V0QmFzZVdy
aXRpbmdEaXJlY3Rpb24oKSBmdW5jdGlvbiBjaGVja3MgaWYgd2UgY2FuIGNoYW5nZQotICAgIC8v
IHRoZSB0ZXh0IGRpcmVjdGlvbiBvZiB0aGUgc2VsZWN0ZWQgbm9kZSBhbmQgdXBkYXRlcyBpdHMg
RE9NICJkaXIiCi0gICAgLy8gYXR0cmlidXRlIGFuZCBpdHMgQ1NTICJkaXJlY3Rpb24iIHByb3Bl
cnR5LgotICAgIC8vIFNvLCB3ZSBqdXN0IGNhbGwgdGhlIGZ1bmN0aW9uIGFzIFNhZmFyaSBkb2Vz
LgotICAgIFdlYkNvcmU6OkZyYW1lJiBmb2N1c2VkRnJhbWUgPSBwcml2LT5wYWdlLT5mb2N1c0Nv
bnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKLQotICAgIFdlYkNvcmU6OkVkaXRvciYg
ZWRpdG9yID0gZm9jdXNlZEZyYW1lLmVkaXRvcigpOwotICAgIGlmICghZWRpdG9yLmNhbkVkaXQo
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgc3dpdGNoIChkaXJlY3Rpb24pIHsKLSAgICBjYXNl
IEVXS19URVhUX0RJUkVDVElPTl9ERUZBVUxUOgotICAgICAgICBlZGl0b3Iuc2V0QmFzZVdyaXRp
bmdEaXJlY3Rpb24oTmF0dXJhbFdyaXRpbmdEaXJlY3Rpb24pOwotICAgIGNhc2UgRVdLX1RFWFRf
RElSRUNUSU9OX0xFRlRfVE9fUklHSFQ6Ci0gICAgICAgIGVkaXRvci5zZXRCYXNlV3JpdGluZ0Rp
cmVjdGlvbihMZWZ0VG9SaWdodFdyaXRpbmdEaXJlY3Rpb24pOwotICAgIGNhc2UgRVdLX1RFWFRf
RElSRUNUSU9OX1JJR0hUX1RPX0xFRlQ6Ci0gICAgICAgIGVkaXRvci5zZXRCYXNlV3JpdGluZ0Rp
cmVjdGlvbihSaWdodFRvTGVmdFdyaXRpbmdEaXJlY3Rpb24pOwotICAgIH0KLQotICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotfQotCi12b2lkIGV3a192aWV3X3RyYW5zaXRpb25fdG9fY29tbWl0
ZWRfZm9yX25ld3BhZ2UoRXZhc19PYmplY3QqIGV3a1ZpZXcpCi17Ci0gICAgRVdLX1ZJRVdfU0Rf
R0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEpOwotICAgIEVXS19WSUVXX1BSSVZfR0VU
X09SX1JFVFVSTihzbWFydERhdGEsIHByaXYpOwotCi0gICAgZXdrX3ZpZXdfZGlzYWJsZV9yZW5k
ZXIoZXdrVmlldyk7Ci0gICAgcHJpdi0+ZmxhZ3Mudmlld0NsZWFyZWQgPSBmYWxzZTsKLX0KLQot
Ci0vKioKLSAqIEBpbnRlcm5hbAotICogUmVwb3J0cyB0aGF0IGEgbmF2aWdhdGlvbiBwb2xpY3kg
ZGVjaXNpb24gc2hvdWxkIGJlIHRha2VuLiBJZiBAcmV0dXJuCi0gKiBpcyB0cnVlLCB0aGUgbmF2
aWdhdGlvbiByZXF1ZXN0IHdpbGwgYmUgYWNjZXB0ZWQsIG90aGVyd2lzZSBpdCB3aWxsIGJlCi0g
KiBpZ25vcmVkLgotICoKLSAqIEBwYXJhbSBld2tWaWV3IFZpZXcgdG8gbG9hZAotICogQHBhcmFt
IHJlcXVlc3QgUmVxdWVzdCB3aGljaCBjb250YWluIHVybCB0byBuYXZpZ2F0ZQotICogQHBhcmFt
IG5hdmlnYXRpb25UeXBlIG5hdmlnYXRpb24gdHlwZQotICoKLSAqIEByZXR1cm4gdHJ1ZSBpZiB0
aGUgY2xpZW50IGFjY2VwdGVkIHRoZSBuYXZpZ2F0aW9uIHJlcXVlc3QsIGZhbHNlIG90aGVyd2lz
ZS4gSWYgdGhlCi0gKiBjbGllbnQgZGlkIG5vdCBtYWtlIGEgZGVjaXNpb24sIHdlIHJldHVybiB0
cnVlIGJ5IGRlZmF1bHQgc2luY2UgdGhlIGRlZmF1bHQgcG9saWN5Ci0gKiBpcyB0byBhY2NlcHQu
Ci0gKi8KLWJvb2wgZXdrX3ZpZXdfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24oRXZhc19PYmpl
Y3QqIGV3a1ZpZXcsIEV3a19GcmFtZV9SZXNvdXJjZV9SZXF1ZXN0KiByZXF1ZXN0LCBXZWJDb3Jl
OjpOYXZpZ2F0aW9uVHlwZSBuYXZpZ2F0aW9uVHlwZSkKLXsKLSAgICBFV0tfVklFV19TRF9HRVRf
T1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwotICAgIEVJTkFfU0FGRVRZX09O
X05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEtPmFwaSwgZmFsc2UpOwotCi0gICAgaWYgKCFzbWFy
dERhdGEtPmFwaS0+bmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24pCi0gICAgICAgIHJldHVybiB0
cnVlOwotCi0gICAgRXdrX05hdmlnYXRpb25fVHlwZSB0eXBlOwotICAgIHN3aXRjaCAobmF2aWdh
dGlvblR5cGUpIHsKLSAgICBjYXNlIFdlYkNvcmU6Ok5hdmlnYXRpb25UeXBlTGlua0NsaWNrZWQ6
Ci0gICAgICAgIHR5cGUgPSBFV0tfTkFWSUdBVElPTl9UWVBFX0xJTktfQ0xJQ0tFRDsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBXZWJDb3JlOjpOYXZpZ2F0aW9uVHlwZUZvcm1TdWJtaXR0ZWQ6
Ci0gICAgICAgIHR5cGUgPSBFV0tfTkFWSUdBVElPTl9UWVBFX0ZPUk1fU1VCTUlUVEVEOwotICAg
ICAgICBicmVhazsKLSAgICBjYXNlIFdlYkNvcmU6Ok5hdmlnYXRpb25UeXBlQmFja0ZvcndhcmQ6
Ci0gICAgICAgIHR5cGUgPSBFV0tfTkFWSUdBVElPTl9UWVBFX0JBQ0tfRk9SV0FSRDsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBXZWJDb3JlOjpOYXZpZ2F0aW9uVHlwZVJlbG9hZDoKLSAgICAg
ICAgdHlwZSA9IEVXS19OQVZJR0FUSU9OX1RZUEVfUkVMT0FEOwotICAgICAgICBicmVhazsKLSAg
ICBjYXNlIFdlYkNvcmU6Ok5hdmlnYXRpb25UeXBlRm9ybVJlc3VibWl0dGVkOgotICAgICAgICB0
eXBlID0gRVdLX05BVklHQVRJT05fVFlQRV9GT1JNX1JFU1VCTUlUVEVEOwotICAgICAgICBicmVh
azsKLSAgICBjYXNlIFdlYkNvcmU6Ok5hdmlnYXRpb25UeXBlT3RoZXI6Ci0gICAgICAgIHR5cGUg
PSBFV0tfTkFWSUdBVElPTl9UWVBFX09USEVSOwotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0
OgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQot
Ci0gICAgcmV0dXJuIHNtYXJ0RGF0YS0+YXBpLT5uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbihz
bWFydERhdGEsIHJlcXVlc3QsIHR5cGUpOwotfQotCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfanNfb2Jq
ZWN0X2FkZChFdmFzX09iamVjdCogZXdrVmlldywgRXdrX0pTX09iamVjdCogb2JqZWN0LCBjb25z
dCBjaGFyKiBvYmplY3ROYW1lKQotewotI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQot
ICAgIGlmIChvYmplY3QtPnZpZXcpIC8vIG9iamVjdCBoYXMgYWxyZWFkeSBiZWVuIGFkZGVkIHRv
IGFub3RoZXIgZXdrX3ZpZXcKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIG9iamVjdC0+bmFt
ZSA9IGVpbmFfc3RyaW5nc2hhcmVfYWRkKG9iamVjdE5hbWUpOwotICAgIEVXS19WSUVXX1NEX0dF
VF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7Ci0gICAgRVdLX1ZJRVdfUFJJ
Vl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwotCi0gICAgV2ViQ29yZTo6
SlNET01XaW5kb3cqIHdpbmRvdyA9IHRvSlNET01XaW5kb3coJnByaXYtPnBhZ2UtPm1haW5GcmFt
ZSgpLCBXZWJDb3JlOjptYWluVGhyZWFkTm9ybWFsV29ybGQoKSk7Ci0gICAgSlNDOjpKU0xvY2tI
b2xkZXIgbG9jayh3aW5kb3ctPmdsb2JhbEV4ZWMoKSk7Ci0gICAgSlNDOjpCaW5kaW5nczo6Um9v
dE9iamVjdCogcm9vdDsKLSAgICByb290ID0gcHJpdi0+cGFnZS0+bWFpbkZyYW1lKCkuc2NyaXB0
KCkuYmluZGluZ1Jvb3RPYmplY3QoKTsKLQotICAgIGlmICghd2luZG93KSB7Ci0gICAgICAgIEVS
UigiV2FybmluZzogY291bGRuJ3QgZ2V0IHdpbmRvdyBvYmplY3QiKTsKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIH0KLQotICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjdXRlU3RhdGUgPSB3aW5k
b3ctPmdsb2JhbEV4ZWMoKTsKLQotICAgIG9iamVjdC0+dmlldyA9IGV3a1ZpZXc7Ci0gICAgSlND
OjpKU09iamVjdCogcnVudGltZU9iamVjdCA9IChKU0M6OkpTT2JqZWN0KilKU0M6OkJpbmRpbmdz
OjpDSW5zdGFuY2U6OmNyZWF0ZSgoTlBPYmplY3QqKW9iamVjdCwgcm9vdCktPmNyZWF0ZVJ1bnRp
bWVPYmplY3QoZXhlY3V0ZVN0YXRlKTsKLSAgICBKU0M6OklkZW50aWZpZXIgaWQgPSBKU0M6Oklk
ZW50aWZpZXIoZXhlY3V0ZVN0YXRlLCBvYmplY3ROYW1lKTsKLQotICAgIEpTQzo6UHV0UHJvcGVy
dHlTbG90IHNsb3Qod2luZG93KTsKLSAgICB3aW5kb3ctPm1ldGhvZFRhYmxlKCktPnB1dCh3aW5k
b3csIGV4ZWN1dGVTdGF0ZSwgaWQsIHJ1bnRpbWVPYmplY3QsIHNsb3QpOwotICAgIHJldHVybiB0
cnVlOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oZXdrVmlldyk7Ci0gICAgVU5VU0VEX1BBUkFN
KG9iamVjdCk7Ci0gICAgVU5VU0VEX1BBUkFNKG9iamVjdE5hbWUpOwotICAgIHJldHVybiBmYWxz
ZTsKLSNlbmRpZiAvLyBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKLX0KLQotLyoqCi0gKiBA
aW50ZXJuYWwKLSAqIFJlcG9ydHMgdGhhdCB0aGUgY29udGVudHMgaGF2ZSByZXNpemVkLiBUaGUg
ZXdrX3ZpZXcgY2FsbHMgY29udGVudHNfcmVzaXplLAotICogd2hpY2ggY2FuIGJlIHJlaW1wbGVt
ZW50ZWQgYXMgbmVlZGVkLgotICoKLSAqIEBwYXJhbSBld2tWaWV3IHZpZXcuCi0gKiBAcGFyYW0g
d2lkdGggbmV3IGNvbnRlbnQgd2lkdGguCi0gKiBAcGFyYW0gaGVpZ2h0IG5ldyBjb250ZW50IGhl
aWdodC4KLSAqLwotdm9pZCBld2tfdmlld19jb250ZW50c19zaXplX2NoYW5nZWQoRXZhc19PYmpl
Y3QqIGV3a1ZpZXcsIGludCB3aWR0aCwgaW50IGhlaWdodCkKLXsKLSAgICBFV0tfVklFV19TRF9H
RVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVM
TF9SRVRVUk4oc21hcnREYXRhLT5hcGkpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJO
KHNtYXJ0RGF0YS0+YXBpLT5jb250ZW50c19yZXNpemUpOwotCi0gICAgaWYgKCFzbWFydERhdGEt
PmFwaS0+Y29udGVudHNfcmVzaXplKHNtYXJ0RGF0YSwgd2lkdGgsIGhlaWdodCkpCi0gICAgICAg
IEVSUigiZmFpbGVkIHRvIHJlc2l6ZSBjb250ZW50cyB0byAlZHglZCIsIHdpZHRoLCBoZWlnaHQp
OwotfQotCi0vKioKLSAqIEBpbnRlcm5hbAotICogR2V0cyBwYWdlIHNpemUgZnJvbSBmcmFtZXZp
ZXcuCi0gKgotICogQHBhcmFtIGV3a1ZpZXcgdmlldy4KLSAqCi0gKiBAcmV0dXJuIHBhZ2Ugc2l6
ZSwgb3IgLTEuMCBzaXplIG9uIGZhaWx1cmUKLSAqLwotV2ViQ29yZTo6RmxvYXRSZWN0IGV3a192
aWV3X3BhZ2VfcmVjdF9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCi17Ci0gICAgRVdL
X1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIFdlYkNvcmU6OkZsb2F0
UmVjdCgtMS4wLCAtMS4wLCAtMS4wLCAtMS4wKSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1Jf
UkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgV2ViQ29yZTo6RmxvYXRSZWN0KC0xLjAsIC0xLjAsIC0x
LjAsIC0xLjApKTsKLQotICAgIHJldHVybiBwcml2LT5wYWdlLT5tYWluRnJhbWUoKS52aWV3KCkt
PmZyYW1lUmVjdCgpOwotfQotCi0jaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLXZvaWQgZXdrX3Zp
ZXdfbmVlZF90b3VjaF9ldmVudHNfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBib29sIG5lZWRl
ZCkKLXsKLSAgICBFV0tfVklFV19TRF9HRVQoZXdrVmlldywgc21hcnREYXRhKTsKLSAgICBFV0tf
VklFV19QUklWX0dFVChzbWFydERhdGEsIHByaXYpOwotCi0gICAgcHJpdi0+ZmxhZ3MubmVlZFRv
dWNoRXZlbnRzID0gbmVlZGVkOwotfQotCi1ib29sIGV3a192aWV3X25lZWRfdG91Y2hfZXZlbnRz
X2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKLXsKLSAgICBFV0tfVklFV19TRF9HRVRf
T1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwotICAgIEVXS19WSUVXX1BSSVZf
R0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKLSAgICByZXR1cm4gcHJpdi0+
ZmxhZ3MubmVlZFRvdWNoRXZlbnRzOwotfQotI2VuZGlmCi0KLWlubGluZSBzdGF0aWMgV2ViQ29y
ZTo6UGFnZTo6Vmlld01vZGUgdG9WaWV3TW9kZShFd2tfVmlld19Nb2RlIHZpZXdNb2RlKQotewot
ICAgIHN3aXRjaCAodmlld01vZGUpIHsKLSAgICBjYXNlIEVXS19WSUVXX01PREVfSU5WQUxJRDoK
LSAgICAgICAgcmV0dXJuIFdlYkNvcmU6OlBhZ2U6OlZpZXdNb2RlSW52YWxpZDsKLSAgICBjYXNl
IEVXS19WSUVXX01PREVfV0lORE9XRUQ6Ci0gICAgICAgIHJldHVybiBXZWJDb3JlOjpQYWdlOjpW
aWV3TW9kZVdpbmRvd2VkOwotICAgIGNhc2UgRVdLX1ZJRVdfTU9ERV9GTE9BVElORzoKLSAgICAg
ICAgcmV0dXJuIFdlYkNvcmU6OlBhZ2U6OlZpZXdNb2RlRmxvYXRpbmc7Ci0gICAgY2FzZSBFV0tf
VklFV19NT0RFX0ZVTExTQ1JFRU46Ci0gICAgICAgIHJldHVybiBXZWJDb3JlOjpQYWdlOjpWaWV3
TW9kZUZ1bGxzY3JlZW47Ci0gICAgY2FzZSBFV0tfVklFV19NT0RFX01BWElNSVpFRDoKLSAgICAg
ICAgcmV0dXJuIFdlYkNvcmU6OlBhZ2U6OlZpZXdNb2RlTWF4aW1pemVkOwotICAgIGNhc2UgRVdL
X1ZJRVdfTU9ERV9NSU5JTUlaRUQ6Ci0gICAgICAgIHJldHVybiBXZWJDb3JlOjpQYWdlOjpWaWV3
TW9kZU1pbmltaXplZDsKLSAgICB9Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0KLSAgICBy
ZXR1cm4gV2ViQ29yZTo6UGFnZTo6Vmlld01vZGVJbnZhbGlkOwotfQotCi1pbmxpbmUgc3RhdGlj
IEV3a19WaWV3X01vZGUgdG9Fd2tWaWV3TW9kZShXZWJDb3JlOjpQYWdlOjpWaWV3TW9kZSB2aWV3
TW9kZSkKLXsKLSAgICBzd2l0Y2ggKHZpZXdNb2RlKSB7Ci0gICAgY2FzZSBXZWJDb3JlOjpQYWdl
OjpWaWV3TW9kZUludmFsaWQ6Ci0gICAgICAgIHJldHVybiBFV0tfVklFV19NT0RFX0lOVkFMSUQ7
Ci0gICAgY2FzZSBXZWJDb3JlOjpQYWdlOjpWaWV3TW9kZVdpbmRvd2VkOgotICAgICAgICByZXR1
cm4gRVdLX1ZJRVdfTU9ERV9XSU5ET1dFRDsKLSAgICBjYXNlIFdlYkNvcmU6OlBhZ2U6OlZpZXdN
b2RlRmxvYXRpbmc6Ci0gICAgICAgIHJldHVybiBFV0tfVklFV19NT0RFX0ZMT0FUSU5HOwotICAg
IGNhc2UgV2ViQ29yZTo6UGFnZTo6Vmlld01vZGVGdWxsc2NyZWVuOgotICAgICAgICByZXR1cm4g
RVdLX1ZJRVdfTU9ERV9GVUxMU0NSRUVOOwotICAgIGNhc2UgV2ViQ29yZTo6UGFnZTo6Vmlld01v
ZGVNYXhpbWl6ZWQ6Ci0gICAgICAgIHJldHVybiBFV0tfVklFV19NT0RFX01BWElNSVpFRDsKLSAg
ICBjYXNlIFdlYkNvcmU6OlBhZ2U6OlZpZXdNb2RlTWluaW1pemVkOgotICAgICAgICByZXR1cm4g
RVdLX1ZJRVdfTU9ERV9NSU5JTUlaRUQ7Ci0gICAgfQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotCi0gICAgcmV0dXJuIEVXS19WSUVXX01PREVfSU5WQUxJRDsKLX0KLQotRWluYV9Cb29sIGV3
a192aWV3X21vZGVfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tfVmlld19Nb2RlIHZpZXdN
b2RlKQotewotI2lmIEVOQUJMRShWSUVXX01PREVfQ1NTX01FRElBKQotICAgIEVXS19WSUVXX1NE
X0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7Ci0gICAgRVdLX1ZJRVdf
UFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwotCi0gICAgcHJpdi0+
cGFnZS0+c2V0Vmlld01vZGUodG9WaWV3TW9kZSh2aWV3TW9kZSkpOwotICAgIHJldHVybiB0cnVl
OwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oZXdrVmlldyk7Ci0gICAgVU5VU0VEX1BBUkFNKHZp
ZXdNb2RlKTsKLSAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYKLX0KLQotRXdrX1ZpZXdfTW9kZSBl
d2tfdmlld19tb2RlX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKLXsKLSNpZiBFTkFC
TEUoVklFV19NT0RFX0NTU19NRURJQSkKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3
a1ZpZXcsIHNtYXJ0RGF0YSwgRVdLX1ZJRVdfTU9ERV9JTlZBTElEKTsKLSAgICBFV0tfVklFV19Q
UklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBFV0tfVklFV19NT0RFX0lOVkFMSUQp
OwotCi0gICAgcmV0dXJuIHRvRXdrVmlld01vZGUocHJpdi0+cGFnZS0+dmlld01vZGUoKSk7Ci0j
ZWxzZQotICAgIFVOVVNFRF9QQVJBTShld2tWaWV3KTsKLSAgICByZXR1cm4gRVdLX1ZJRVdfTU9E
RV9JTlZBTElEOwotI2VuZGlmCi19Ci0KLUVpbmFfQm9vbCBld2tfdmlld19taXhlZF9jb250ZW50
X2Rpc3BsYXllZF9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCi17Ci0gICAgRVdLX1ZJ
RVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKLSAgICBFV0tf
VklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBmYWxzZSk7Ci0gICAgcmV0
dXJuIHByaXYtPmZsYWdzLmhhc0Rpc3BsYXllZE1peGVkQ29udGVudDsKLX0KLQotRWluYV9Cb29s
IGV3a192aWV3X21peGVkX2NvbnRlbnRfcnVuX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmll
dykKLXsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwg
ZmFsc2UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYs
IGZhbHNlKTsKLSAgICByZXR1cm4gcHJpdi0+ZmxhZ3MuaGFzUnVuTWl4ZWRDb250ZW50OwotfQot
Ci0vKioKLSAqIEBpbnRlcm5hbAotICogUmVwb3J0cyB0aGUgdmlldyB0aGF0IGVkaXRvciBjbGll
bnQgc2VsZWN0aW9uIGhhcyBjaGFuZ2VkLgotICoKLSAqIEBwYXJhbSBld2tWaWV3IFZpZXcuCi0g
KgotICogRW1pdHMgc2lnbmFsOiAiZWRpdG9yY2xpZW50c2VsZWN0aW9uLGNoYW5nZWQiIHdpdGgg
bm8gcGFyYW1ldGVycy4KLSAqLwotdm9pZCBld2tfdmlld19lZGl0b3JfY2xpZW50X3NlbGVjdGlv
bl9jaGFuZ2VkKEV2YXNfT2JqZWN0KiBld2tWaWV3KQotewotICAgIGV2YXNfb2JqZWN0X3NtYXJ0
X2NhbGxiYWNrX2NhbGwoZXdrVmlldywgImVkaXRvcmNsaWVudCxzZWxlY3Rpb24sY2hhbmdlZCIs
IDApOwotfQotCi0vKioKLSAqIEBpbnRlcm5hbAotICogUmVwb3J0cyB0byB0aGUgdmlldyB0aGF0
IGVkaXRvciBjbGllbnQncyBjb250ZW50cyB3ZXJlIGNoYW5nZWQuCi0gKgotICogQHBhcmFtIGV3
a1ZpZXcgVmlldy4KLSAqCi0gKiBFbWl0cyBzaWduYWw6ICJlZGl0b3JjbGllbnQsY29udGVudHMs
Y2hhbmdlZCIgd2l0aCBubyBwYXJhbWV0ZXJzLgotICovCi12b2lkIGV3a192aWV3X2VkaXRvcl9j
bGllbnRfY29udGVudHNfY2hhbmdlZChFdmFzX09iamVjdCogZXdrVmlldykKLXsKLSAgICBldmFz
X29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKGV3a1ZpZXcsICJlZGl0b3JjbGllbnQsY29udGVu
dHMsY2hhbmdlZCIsIDApOwotfQotCi0vKioKLSAqIEBpbnRlcm5hbAotICogRGVmaW5lcyB3aGV0
aGVyIHRoZSB2aWV3IGhhcyBkaXNwbGF5ZWQgbWl4ZWQgY29udGVudC4KLSAqCi0gKiBXaGVuIGEg
dmlldyBoYXMgZGlzcGxheWVkIG1peGVkIGNvbnRlbnQsIGFueSBvZiBpdHMgZnJhbWVzIGhhcyBs
b2FkZWQgYW4gSFRUUFMgVVJJCi0gKiB3aGljaCBoYXMgaXRzZWxmIGxvYWRlZCBhbmQgZGlzcGxh
eWVkIGEgcmVzb3VyY2UgKHN1Y2ggYXMgYW4gaW1hZ2UpIGZyb20gYW4gaW5zZWN1cmUsCi0gKiB0
aGF0IGlzLCBub24tSFRUUFMsIFVSSS4KLSAqCi0gKiBAcGFyYW0gaGFzRGlzcGxheWVkIERvIG9y
IGRvIG5vdCBjbGVhciB0aGUgZmxhZyBmcm9tIHRoZSB2aWV3LgotICoKLSAqIEVtaXRzIHNpZ25h
bDogIm1peGVkY29udGVudCxkaXNwbGF5ZWQiIHdpdGggbm8gcGFyYW1ldGVycyB3aGVuIEBwIGhh
c0Rpc3BsYXllZCBpcyBAYyB0cnVlLgotICovCi12b2lkIGV3a192aWV3X21peGVkX2NvbnRlbnRf
ZGlzcGxheWVkX3NldChFdmFzX09iamVjdCogZXdrVmlldywgYm9vbCBoYXNEaXNwbGF5ZWQpCi17
Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEpOwotICAg
IEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYpOwotCi0gICAgcHJp
di0+ZmxhZ3MuaGFzRGlzcGxheWVkTWl4ZWRDb250ZW50ID0gaGFzRGlzcGxheWVkOwotCi0gICAg
aWYgKGhhc0Rpc3BsYXllZCkKLSAgICAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2Fs
bChld2tWaWV3LCAibWl4ZWRjb250ZW50LGRpc3BsYXllZCIsIDApOwotfQotCi0vKioKLSAqIEBp
bnRlcm5hbAotICogRGVmaW5lcyB3aGV0aGVyIHRoZSB2aWV3IGhhcyBydW4gbWl4ZWQgY29udGVu
dC4KLSAqCi0gKiBXaGVuIGEgdmlldyBoYXMgcnVuIG1peGVkIGNvbnRlbnQsIGFueSBvZiBpdHMg
ZnJhbWVzIGhhcyBsb2FkZWQgYW4gSFRUUFMgVVJJCi0gKiB3aGljaCBoYXMgaXRzZWxmIGxvYWRl
ZCBhbmQgcnVuIGEgcmVzb3VyY2UgKHN1Y2ggYXMgYSBzY3JpcHQpIGZyb20gYW4gaW5zZWN1cmUs
Ci0gKiB0aGF0IGlzLCBub24tSFRUUFMsIFVSSS4KLSAqCi0gKiBAcGFyYW0gaGFzUnVuIERvIG9y
IGRvIG5vdCBjbGVhciB0aGUgZmxhZyBmcm9tIHRoZSB2aWV3LgotICoKLSAqIEVtaXRzIHNpZ25h
bDogIm1peGVkY29udGVudCxydW4iIHdpdGggbm8gcGFyYW1ldGVycyB3aGVuIEBwIGhhc1J1biBp
cyBAYyB0cnVlLgotICovCi12b2lkIGV3a192aWV3X21peGVkX2NvbnRlbnRfcnVuX3NldChFdmFz
X09iamVjdCogZXdrVmlldywgYm9vbCBoYXNSdW4pCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09S
X1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JF
VFVSTihzbWFydERhdGEsIHByaXYpOwotCi0gICAgcHJpdi0+ZmxhZ3MuaGFzUnVuTWl4ZWRDb250
ZW50ID0gaGFzUnVuOwotCi0gICAgaWYgKGhhc1J1bikKLSAgICAgICAgZXZhc19vYmplY3Rfc21h
cnRfY2FsbGJhY2tfY2FsbChld2tWaWV3LCAibWl4ZWRjb250ZW50LHJ1biIsIDApOwotfQotCi1F
aW5hX0Jvb2wgZXdrX3ZpZXdfdmlzaWJpbGl0eV9zdGF0ZV9zZXQoRXZhc19PYmplY3QqIGV3a1Zp
ZXcsIEV3a19QYWdlX1Zpc2liaWxpdHlfU3RhdGUgcGFnZVZpc2liaWxpdHlTdGF0ZSwgRWluYV9C
b29sKQotewotI2lmIEVOQUJMRShQQUdFX1ZJU0lCSUxJVFlfQVBJKQotICAgIEVXS19WSUVXX1NE
X0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7Ci0gICAgRVdLX1ZJRVdf
UFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwotCi0gICAgLy8gV2Vi
S2l0IGRvZXMgbm90IGN1cmVudGx5IHN1cHBvcnQgdGhlICJ1bmxvYWRlZCIgc3RhdGUuCi0gICAg
aWYgKHBhZ2VWaXNpYmlsaXR5U3RhdGUgPT0gRVdLX1BBR0VfVklTSUJJTElUWV9TVEFURV9VTkxP
QURFRCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcHJpdi0+cGFnZS0+c2V0SXNWaXNp
YmxlKHBhZ2VWaXNpYmlsaXR5U3RhdGUgPT0gRVdLX1BBR0VfVklTSUJJTElUWV9TVEFURV9WSVNJ
QkxFKTsKLSAgICBpZiAocGFnZVZpc2liaWxpdHlTdGF0ZSA9PSBFV0tfUEFHRV9WSVNJQklMSVRZ
X1NUQVRFX1BSRVJFTkRFUikKLSAgICAgICAgcHJpdi0+cGFnZS0+c2V0SXNQcmVyZW5kZXIoKTsK
LQotICAgIHJldHVybiB0cnVlOwotI2Vsc2UKLSAgICBEQkcoIlBBR0VfVklTSUJJTElUWV9BUEkg
aXMgZGlzYWJsZWQuIik7Ci0gICAgVU5VU0VEX1BBUkFNKGV3a1ZpZXcpOwotICAgIFVOVVNFRF9Q
QVJBTShwYWdlVmlzaWJpbGl0eVN0YXRlKTsKLSAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYKLX0K
LQotRXdrX1BhZ2VfVmlzaWJpbGl0eV9TdGF0ZSBld2tfdmlld192aXNpYmlsaXR5X3N0YXRlX2dl
dChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKLXsKLSNpZiBFTkFCTEUoUEFHRV9WSVNJQklM
SVRZX0FQSSkKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0
YSwgRVdLX1BBR0VfVklTSUJJTElUWV9TVEFURV9WSVNJQkxFKTsKLSAgICBFV0tfVklFV19QUklW
X0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBFV0tfUEFHRV9WSVNJQklMSVRZX1NUQVRF
X1ZJU0lCTEUpOwotCi0KLSAgICBzd2l0Y2ggKHByaXYtPnBhZ2UtPnZpc2liaWxpdHlTdGF0ZSgp
KSB7Ci0gICAgY2FzZSBXZWJDb3JlOjpQYWdlVmlzaWJpbGl0eVN0YXRlVmlzaWJsZToKLSAgICAg
ICAgcmV0dXJuIEVXS19QQUdFX1ZJU0lCSUxJVFlfU1RBVEVfVklTSUJMRTsKLSAgICBjYXNlIFdl
YkNvcmU6OlBhZ2VWaXNpYmlsaXR5U3RhdGVIaWRkZW46Ci0gICAgICAgIHJldHVybiBFV0tfUEFH
RV9WSVNJQklMSVRZX1NUQVRFX0hJRERFTjsKLSAgICBjYXNlIFdlYkNvcmU6OlBhZ2VWaXNpYmls
aXR5U3RhdGVQcmVyZW5kZXI6Ci0gICAgICAgIHJldHVybiBFV0tfUEFHRV9WSVNJQklMSVRZX1NU
QVRFX1BSRVJFTkRFUjsKLSAgICBkZWZhdWx0OgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICB9Ci0jZWxzZQotICAgIERCRygiUEFHRV9WSVNJQklMSVRZX0FQSSBpcyBkaXNhYmxl
ZC4iKTsKLSAgICBVTlVTRURfUEFSQU0oZXdrVmlldyk7Ci0jZW5kaWYKLQotICAgIHJldHVybiBF
V0tfUEFHRV9WSVNJQklMSVRZX1NUQVRFX1ZJU0lCTEU7Ci19Ci0KLUVpbmFfQm9vbCBld2tfdmll
d19zZXR0aW5nX2VuYWJsZV94c3NfYXVkaXRvcl9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1Zp
ZXcpCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEs
IGZhbHNlKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2
LCBmYWxzZSk7Ci0gICAgcmV0dXJuIHByaXYtPnNldHRpbmdzLmVuYWJsZVhTU0F1ZGl0b3I7Ci19
Ci0KLXZvaWQgZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfeHNzX2F1ZGl0b3Jfc2V0KEV2YXNfT2Jq
ZWN0KiBld2tWaWV3LCBFaW5hX0Jvb2wgZW5hYmxlKQotewotICAgIEVXS19WSUVXX1NEX0dFVChl
d2tWaWV3LCBzbWFydERhdGEpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUKHNtYXJ0RGF0YSwgcHJp
dik7Ci0gICAgZW5hYmxlID0gISFlbmFibGU7Ci0gICAgaWYgKHByaXYtPnNldHRpbmdzLmVuYWJs
ZVhTU0F1ZGl0b3IgIT0gZW5hYmxlKSB7Ci0gICAgICAgIHByaXYtPnBhZ2UtPnNldHRpbmdzKCku
c2V0WFNTQXVkaXRvckVuYWJsZWQoZW5hYmxlKTsKLSAgICAgICAgcHJpdi0+c2V0dGluZ3MuZW5h
YmxlWFNTQXVkaXRvciA9IGVuYWJsZTsKLSAgICB9Ci19Ci0KLUVpbmFfQm9vbCBld2tfdmlld19z
ZXR0aW5nX3Nob3VsZF9kaXNwbGF5X3N1YnRpdGxlc19nZXQoY29uc3QgRXZhc19PYmplY3QgKmV3
a1ZpZXcpCi17Ci0jaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotICAgIEVXS19WSUVXX1NEX0dFVF9P
Ul9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9H
RVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwotICAgIHJldHVybiBwcml2LT5z
ZXR0aW5ncy5zaG91bGREaXNwbGF5U3VidGl0bGVzOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0o
ZXdrVmlldyk7Ci0gICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCi19Ci0KLUVpbmFfQm9vbCBld2tf
dmlld19zZXR0aW5nX3Nob3VsZF9kaXNwbGF5X2NhcHRpb25zX2dldChjb25zdCBFdmFzX09iamVj
dCAqZXdrVmlldykKLXsKLSNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi0gICAgRVdLX1ZJRVdfU0Rf
R0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKLSAgICBFV0tfVklFV19Q
UklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBmYWxzZSk7Ci0gICAgcmV0dXJuIHBy
aXYtPnNldHRpbmdzLnNob3VsZERpc3BsYXlDYXB0aW9uczsKLSNlbHNlCi0gICAgVU5VU0VEX1BB
UkFNKGV3a1ZpZXcpOwotICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgotfQotCi12b2lkIGV3a192
aWV3X3NldHRpbmdfc2hvdWxkX2Rpc3BsYXlfY2FwdGlvbnNfc2V0KEV2YXNfT2JqZWN0ICpld2tW
aWV3LCBFaW5hX0Jvb2wgZW5hYmxlKQotewotI2lmIEVOQUJMRShWSURFT19UUkFDSykKLSAgICBF
V0tfVklFV19TRF9HRVQoZXdrVmlldywgc21hcnREYXRhKTsKLSAgICBFV0tfVklFV19QUklWX0dF
VChzbWFydERhdGEsIHByaXYpOwotICAgIGVuYWJsZSA9ICEhZW5hYmxlOwotICAgIGlmIChwcml2
LT5zZXR0aW5ncy5zaG91bGREaXNwbGF5Q2FwdGlvbnMgIT0gZW5hYmxlKSB7Ci0gICAgICAgIHBy
aXYtPnBhZ2UtPnNldHRpbmdzKCkuc2V0U2hvdWxkRGlzcGxheUNhcHRpb25zKGVuYWJsZSk7Ci0g
ICAgICAgIHByaXYtPnNldHRpbmdzLnNob3VsZERpc3BsYXlDYXB0aW9ucyA9IGVuYWJsZTsKLSAg
ICB9Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShld2tWaWV3KTsKLSAgICBVTlVTRURfUEFSQU0o
ZW5hYmxlKTsKLSNlbmRpZgotfQotCi12b2lkIGV3a192aWV3X3NldHRpbmdfc2hvdWxkX2Rpc3Bs
YXlfc3VidGl0bGVzX3NldChFdmFzX09iamVjdCAqZXdrVmlldywgRWluYV9Cb29sIGVuYWJsZSkK
LXsKLSNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi0gICAgRVdLX1ZJRVdfU0RfR0VUKGV3a1ZpZXcs
IHNtYXJ0RGF0YSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVQoc21hcnREYXRhLCBwcml2KTsKLSAg
ICBlbmFibGUgPSAhIWVuYWJsZTsKLSAgICBpZiAocHJpdi0+c2V0dGluZ3Muc2hvdWxkRGlzcGxh
eVN1YnRpdGxlcyAhPSBlbmFibGUpIHsKLSAgICAgICAgcHJpdi0+cGFnZS0+c2V0dGluZ3MoKS5z
ZXRTaG91bGREaXNwbGF5U3VidGl0bGVzKGVuYWJsZSk7Ci0gICAgICAgIHByaXYtPnNldHRpbmdz
LnNob3VsZERpc3BsYXlTdWJ0aXRsZXMgPSBlbmFibGU7Ci0gICAgfQotI2Vsc2UKLSAgICBVTlVT
RURfUEFSQU0oZXdrVmlldyk7Ci0gICAgVU5VU0VEX1BBUkFNKGVuYWJsZSk7Ci0jZW5kaWYKLX0K
LQotRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfc2hvdWxkX2Rpc3BsYXlfdGV4dF9kZXNjcmlw
dGlvbnNfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpld2tWaWV3KQotewotI2lmIEVOQUJMRShWSURF
T19UUkFDSykKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0
YSwgZmFsc2UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHBy
aXYsIGZhbHNlKTsKLSAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3Muc2hvdWxkRGlzcGxheVRleHRE
ZXNjcmlwdGlvbnM7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShld2tWaWV3KTsKLSAgICByZXR1
cm4gZmFsc2U7Ci0jZW5kaWYKLX0KLQotdm9pZCBld2tfdmlld19zZXR0aW5nX3Nob3VsZF9kaXNw
bGF5X3RleHRfZGVzY3JpcHRpb25zX3NldChFdmFzX09iamVjdCAqZXdrVmlldywgRWluYV9Cb29s
IGVuYWJsZSkKLXsKLSNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi0gICAgRVdLX1ZJRVdfU0RfR0VU
KGV3a1ZpZXcsIHNtYXJ0RGF0YSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVQoc21hcnREYXRhLCBw
cml2KTsKLSAgICBlbmFibGUgPSAhIWVuYWJsZTsKLSAgICBpZiAocHJpdi0+c2V0dGluZ3Muc2hv
dWxkRGlzcGxheVRleHREZXNjcmlwdGlvbnMgIT0gZW5hYmxlKSB7Ci0gICAgICAgIHByaXYtPnBh
Z2UtPnNldHRpbmdzKCkuc2V0U2hvdWxkRGlzcGxheVRleHREZXNjcmlwdGlvbnMoZW5hYmxlKTsK
LSAgICAgICAgcHJpdi0+c2V0dGluZ3Muc2hvdWxkRGlzcGxheVRleHREZXNjcmlwdGlvbnMgPSBl
bmFibGU7Ci0gICAgfQotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oZXdrVmlldyk7Ci0gICAgVU5V
U0VEX1BBUkFNKGVuYWJsZSk7Ci0jZW5kaWYKLX0KLQotdm9pZCBld2tfdmlld19pbnNwZWN0b3Jf
c2hvdyhjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKLXsKLSNpZiBFTkFCTEUoSU5TUEVDVE9S
KQotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhKTsKLSAg
ICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2KTsKLQotICAgIHBy
aXYtPnBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5zaG93KCk7Ci0jZWxzZQotICAgIFVOVVNF
RF9QQVJBTShld2tWaWV3KTsKLSNlbmRpZgotfQotCi12b2lkIGV3a192aWV3X2luc3BlY3Rvcl9j
bG9zZShjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKLXsKLSNpZiBFTkFCTEUoSU5TUEVDVE9S
KQotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhKTsKLSAg
ICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2KTsKLQotICAgIHBy
aXYtPnBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5jbG9zZSgpOwotI2Vsc2UKLSAgICBVTlVT
RURfUEFSQU0oZXdrVmlldyk7Ci0jZW5kaWYKLX0KLQotRXZhc19PYmplY3QqIGV3a192aWV3X2lu
c3BlY3Rvcl92aWV3X2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKLXsKLSNpZiBFTkFC
TEUoSU5TUEVDVE9SKQotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21h
cnREYXRhLCAwKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBw
cml2LCAwKTsKLQotICAgIHJldHVybiBwcml2LT5pbnNwZWN0b3JWaWV3OwotI2Vsc2UKLSAgICBV
TlVTRURfUEFSQU0oZXdrVmlldyk7Ci0gICAgcmV0dXJuIDA7Ci0jZW5kaWYKLX0KLQotdm9pZCBl
d2tfdmlld19pbnNwZWN0b3Jfdmlld19zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV2YXNfT2Jq
ZWN0KiBpbnNwZWN0b3JWaWV3KQotewotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgRVdLX1ZJ
RVdfU0RfR0VUKGV3a1ZpZXcsIHNtYXJ0RGF0YSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVQoc21h
cnREYXRhLCBwcml2KTsKLQotICAgIHByaXYtPmluc3BlY3RvclZpZXcgPSBpbnNwZWN0b3JWaWV3
OwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oZXdrVmlldyk7Ci0gICAgVU5VU0VEX1BBUkFNKGlu
c3BlY3RvclZpZXcpOwotI2VuZGlmCi19Ci0KLXZvaWQgZXdrX3ZpZXdfcm9vdF9ncmFwaGljc19s
YXllcl9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqIHJv
b3RMYXllcikKLXsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0
RGF0YSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdik7
Ci0KLSAgICBwcml2LT5hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC0+c2V0Um9vdEdyYXBo
aWNzTGF5ZXIocm9vdExheWVyKTsKLX0KLQotdm9pZCBld2tfdmlld19tYXJrX2Zvcl9zeW5jKEV2
YXNfT2JqZWN0KiBld2tWaWV3KQotewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdr
Vmlldywgc21hcnREYXRhKTsKLQotICAgIC8vIE1hcmsgdGhlIGltYWdlIGFzICJkaXJ0eSIgbWVh
bmluZyBpdCBuZWVkcyBhbiB1cGRhdGUgbmV4dCB0aW1lIGV2YXMgcmVuZGVycy4KLSAgICAvLyBJ
dCB3aWxsIGNhbGwgdGhlIHBpeGVsIGdldCBjYWxsYmFjayB0aGVuLgotICAgIGV2YXNfb2JqZWN0
X2ltYWdlX3BpeGVsc19kaXJ0eV9zZXQoc21hcnREYXRhLT5pbWFnZSwgdHJ1ZSk7Ci19Ci0KLXZv
aWQgZXdrX3ZpZXdfZm9yY2VfcGFpbnQoRXZhc19PYmplY3QqIGV3a1ZpZXcpCi17Ci0gICAgRVdL
X1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEpOwotICAgIEVXS19WSUVX
X1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYpOwotCi0gICAgcHJpdi0+YWNjZWxl
cmF0ZWRDb21wb3NpdGluZ0NvbnRleHQtPmZsdXNoQW5kUmVuZGVyTGF5ZXJzKCk7Ci19Ci0KLXZv
aWQgZXdrX3ZpZXdfY3Vyc29yX3NldChFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgV2ViQ29y
ZTo6Q3Vyc29yJiBjdXJzb3IpCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tW
aWV3LCBzbWFydERhdGEpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERh
dGEsIHByaXYpOwotCi0gICAgY29uc3QgY2hhciogZ3JvdXAgPSBjdXJzb3IucGxhdGZvcm1DdXJz
b3IoKTsKLSAgICBpZiAoIWdyb3VwIHx8IGdyb3VwID09IHByaXYtPmN1cnNvckdyb3VwKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBwcml2LT5jdXJzb3JHcm91cCA9IGdyb3VwOwotCi0gICAgaWYg
KHByaXYtPmN1cnNvck9iamVjdCkKLSAgICAgICAgZXZhc19vYmplY3RfZGVsKHByaXYtPmN1cnNv
ck9iamVjdCk7Ci0gICAgcHJpdi0+Y3Vyc29yT2JqZWN0ID0gZWRqZV9vYmplY3RfYWRkKHNtYXJ0
RGF0YS0+YmFzZS5ldmFzKTsKLQotICAgIEVjb3JlX0V2YXMqIGVjb3JlRXZhcyA9IGVjb3JlX2V2
YXNfZWNvcmVfZXZhc19nZXQoc21hcnREYXRhLT5iYXNlLmV2YXMpOwotICAgIGlmICghcHJpdi0+
c2V0dGluZ3MudGhlbWUgfHwgIWVkamVfb2JqZWN0X2ZpbGVfc2V0KHByaXYtPmN1cnNvck9iamVj
dCwgcHJpdi0+c2V0dGluZ3MudGhlbWUsIGdyb3VwKSkgewotICAgICAgICBldmFzX29iamVjdF9k
ZWwocHJpdi0+Y3Vyc29yT2JqZWN0KTsKLSAgICAgICAgcHJpdi0+Y3Vyc29yT2JqZWN0ID0gMDsK
LQotICAgICAgICBlY29yZV9ldmFzX29iamVjdF9jdXJzb3Jfc2V0KGVjb3JlRXZhcywgMCwgMCwg
MCwgMCk7Ci0jaWZkZWYgSEFWRV9FQ09SRV9YCi0gICAgICAgIFdlYkNvcmU6OmFwcGx5RmFsbGJh
Y2tDdXJzb3IoZWNvcmVFdmFzLCBncm91cCk7Ci0jZW5kaWYKLSAgICB9IGVsc2UgewotICAgICAg
ICBFdmFzX0Nvb3JkIHdpZHRoLCBoZWlnaHQ7Ci0gICAgICAgIGVkamVfb2JqZWN0X3NpemVfbWlu
X2dldChwcml2LT5jdXJzb3JPYmplY3QsICZ3aWR0aCwgJmhlaWdodCk7Ci0gICAgICAgIGlmICh3
aWR0aCA8PSAwIHx8IGhlaWdodCA8PSAwKQotICAgICAgICAgICAgZWRqZV9vYmplY3Rfc2l6ZV9t
aW5fY2FsYyhwcml2LT5jdXJzb3JPYmplY3QsICZ3aWR0aCwgJmhlaWdodCk7Ci0gICAgICAgIGlm
ICh3aWR0aCA8PSAwIHx8IGhlaWdodCA8PSAwKSB7Ci0gICAgICAgICAgICB3aWR0aCA9IDE2Owot
ICAgICAgICAgICAgaGVpZ2h0ID0gMTY7Ci0gICAgICAgIH0KLSAgICAgICAgZXZhc19vYmplY3Rf
cmVzaXplKHByaXYtPmN1cnNvck9iamVjdCwgd2lkdGgsIGhlaWdodCk7Ci0KLSAgICAgICAgY29u
c3QgY2hhciogZGF0YTsKLSAgICAgICAgaW50IGhvdHNwb3RYID0gMDsKLSAgICAgICAgZGF0YSA9
IGVkamVfb2JqZWN0X2RhdGFfZ2V0KHByaXYtPmN1cnNvck9iamVjdCwgImhvdC54Iik7Ci0gICAg
ICAgIGlmIChkYXRhKQotICAgICAgICAgICAgaG90c3BvdFggPSBhdG9pKGRhdGEpOwotCi0gICAg
ICAgIGludCBob3RzcG90WSA9IDA7Ci0gICAgICAgIGRhdGEgPSBlZGplX29iamVjdF9kYXRhX2dl
dChwcml2LT5jdXJzb3JPYmplY3QsICJob3QueSIpOwotICAgICAgICBpZiAoZGF0YSkKLSAgICAg
ICAgICAgIGhvdHNwb3RZID0gYXRvaShkYXRhKTsKLQotICAgICAgICBlY29yZV9ldmFzX29iamVj
dF9jdXJzb3Jfc2V0KGVjb3JlRXZhcywgcHJpdi0+Y3Vyc29yT2JqZWN0LCBFVkFTX0xBWUVSX01B
WCwgaG90c3BvdFgsIGhvdHNwb3RZKTsKLSAgICB9Ci19Ci0KLUVpbmFfQm9vbCBld2tfdmlld19z
ZXR0aW5nX2VuYWJsZV9mdWxsc2NyZWVuX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykK
LXsKLSNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCi0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JF
VFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9P
Ul9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBmYWxzZSk7Ci0gICAgcmV0dXJuIHByaXYtPnNldHRp
bmdzLmVuYWJsZUZ1bGxzY3JlZW47Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShld2tWaWV3KTsK
LSAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYKLX0KLQotRWluYV9Cb29sIGV3a192aWV3X3NldHRp
bmdfZW5hYmxlX2Z1bGxzY3JlZW5fc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFaW5hX0Jvb2wg
ZW5hYmxlKQotewotI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKLSAgICBFV0tfVklFV19TRF9H
RVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwotICAgIEVXS19WSUVXX1BS
SVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKLSAgICBlbmFibGUgPSAh
IWVuYWJsZTsKLSAgICBpZiAocHJpdi0+c2V0dGluZ3MuZW5hYmxlRnVsbHNjcmVlbiAhPSBlbmFi
bGUpIHsKLSAgICAgICAgcHJpdi0+cGFnZS0+c2V0dGluZ3MoKS5zZXRGdWxsU2NyZWVuRW5hYmxl
ZChlbmFibGUpOwotICAgICAgICBwcml2LT5zZXR0aW5ncy5lbmFibGVGdWxsc2NyZWVuID0gZW5h
YmxlOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGV3
a1ZpZXcpOwotICAgIFVOVVNFRF9QQVJBTShlbmFibGUpOwotICAgIHJldHVybiBmYWxzZTsKLSNl
bmRpZgotfQotCi0jaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQotLyoqCi0gKiBAaW50ZXJuYWwK
LSAqIENhbGxzIGZ1bGxzY3JlZW5fZW50ZXIgY2FsbGJhY2sgb3IgZmFsbHMgYmFjayB0byBkZWZh
dWx0IGJlaGF2aW9yIGFuZCBlbmFibGVzIGZ1bGxzY3JlZW4gbW9kZS4KLSAqLwotdm9pZCBld2tf
dmlld19mdWxsc2NyZWVuX2VudGVyKGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQotewotICAg
IEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhKTsKLQotICAgIGlm
ICghc21hcnREYXRhLT5hcGktPmZ1bGxzY3JlZW5fZW50ZXIgfHwgIXNtYXJ0RGF0YS0+YXBpLT5m
dWxsc2NyZWVuX2VudGVyKHNtYXJ0RGF0YSkpIHsKLSAgICAgICAgRWNvcmVfRXZhcyogZWNvcmVF
dmFzID0gZWNvcmVfZXZhc19lY29yZV9ldmFzX2dldChzbWFydERhdGEtPmJhc2UuZXZhcyk7Ci0g
ICAgICAgIGVjb3JlX2V2YXNfZnVsbHNjcmVlbl9zZXQoZWNvcmVFdmFzLCB0cnVlKTsKLSAgICB9
Ci19Ci0KLS8qKgotICogQGludGVybmFsCi0gKiBDYWxscyBmdWxsc2NyZWVuX2V4aXQgY2FsbGJh
Y2sgb3IgZmFsbHMgYmFjayB0byBkZWZhdWx0IGJlaGF2aW9yIGFuZCBkaXNhYmxlcyBmdWxsc2Ny
ZWVuIG1vZGUuCi0gKi8KLXZvaWQgZXdrX3ZpZXdfZnVsbHNjcmVlbl9leGl0KGNvbnN0IEV2YXNf
T2JqZWN0KiBld2tWaWV3KQotewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmll
dywgc21hcnREYXRhKTsKLQotICAgIGlmICghc21hcnREYXRhLT5hcGktPmZ1bGxzY3JlZW5fZXhp
dCB8fCAhc21hcnREYXRhLT5hcGktPmZ1bGxzY3JlZW5fZXhpdChzbWFydERhdGEpKSB7Ci0gICAg
ICAgIEVjb3JlX0V2YXMqIGVjb3JlRXZhcyA9IGVjb3JlX2V2YXNfZWNvcmVfZXZhc19nZXQoc21h
cnREYXRhLT5iYXNlLmV2YXMpOwotICAgICAgICBlY29yZV9ldmFzX2Z1bGxzY3JlZW5fc2V0KGVj
b3JlRXZhcywgZmFsc2UpOwotICAgIH0KLX0KLSNlbmRpZgotCi1Fd2tfQ29udGV4dF9NZW51KiBl
d2tfdmlld19jb250ZXh0X21lbnVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQotewot
I2lmIEVOQUJMRShDT05URVhUX01FTlVTKQotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4o
ZXdrVmlldywgc21hcnREYXRhLCAwKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4o
c21hcnREYXRhLCBwcml2LCAwKTsKLQotICAgIHJldHVybiBwcml2LT5jb250ZXh0TWVudTsKLSNl
bHNlCi0gICAgVU5VU0VEX1BBUkFNKGV3a1ZpZXcpOwotICAgIHJldHVybiAwOwotI2VuZGlmCi19
Ci0KLUV2YXNfT2JqZWN0KiBld2tfdmlld19zY3JlZW5zaG90X2NvbnRlbnRzX2dldChjb25zdCBF
dmFzX09iamVjdCogZXdrVmlldywgY29uc3QgRWluYV9SZWN0YW5nbGUqIGFyZWEpCi17Ci0gICAg
aWYgKCFhcmVhIHx8ICFhcmVhLT53IHx8ICFhcmVhLT5oKSB7Ci0gICAgICAgIEVSUigiZW1wdHkg
YXJlYSBpcyBub3QgYWxsb3dlZCIpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBF
V0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgMCk7Ci0gICAgRVdL
X1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgMCk7Ci0KLSAgICBFdmFz
KiBjYW52YXMgPSBldmFzX29iamVjdF9ldmFzX2dldChld2tWaWV3KTsKLSAgICBFSU5BX1NBRkVU
WV9PTl9OVUxMX1JFVFVSTl9WQUwoY2FudmFzLCAwKTsKLQotICAgIEV2YXNfT2JqZWN0KiBzY3Jl
ZW5zaG90SW1hZ2UgPSBldmFzX29iamVjdF9pbWFnZV9hZGQoY2FudmFzKTsKLSAgICBldmFzX29i
amVjdF9pbWFnZV9zaXplX3NldChzY3JlZW5zaG90SW1hZ2UsIGFyZWEtPncsIGFyZWEtPmgpOwot
ICAgIGV2YXNfb2JqZWN0X2ltYWdlX2ZpbGxfc2V0KHNjcmVlbnNob3RJbWFnZSwgMCwgMCwgYXJl
YS0+dywgYXJlYS0+aCk7Ci0gICAgZXZhc19vYmplY3RfcmVzaXplKHNjcmVlbnNob3RJbWFnZSwg
YXJlYS0+dywgYXJlYS0+aCk7Ci0gICAgZXZhc19vYmplY3RfaW1hZ2VfY29sb3JzcGFjZV9zZXQo
c2NyZWVuc2hvdEltYWdlLCBFVkFTX0NPTE9SU1BBQ0VfQVJHQjg4ODgpOwotCi0gICAgcHJpdi0+
YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQtPmV4dHJhY3RJbWFnZURhdGEoc2NyZWVuc2hv
dEltYWdlLCBXZWJDb3JlOjpJbnRSZWN0KCphcmVhKSk7Ci0KLSAgICByZXR1cm4gc2NyZWVuc2hv
dEltYWdlOwotfQotCi1uYW1lc3BhY2UgRVdLUHJpdmF0ZSB7Ci0KLVdlYkNvcmU6OlBhZ2UqIGNv
cmVQYWdlKGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQotewotICAgIEVXS19WSUVXX1NEX0dF
VF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCAwKTsKLSAgICBFV0tfVklFV19QUklWX0dF
VF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCAwKTsKLSAgICByZXR1cm4gcHJpdi0+cGFnZS5n
ZXQoKTsKLX0KLQotV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uKiBzdG9yYWdlU2Vzc2lv
bihjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKLXsKLSAgICBFV0tfVklFV19TRF9HRVRfT1Jf
UkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgMCk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1Jf
UkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgMCk7Ci0gICAgcmV0dXJuICZXZWJDb3JlOjpOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpOwotfQotCi19IC8vIG5hbWVz
cGFjZSBFV0tQcml2YXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3Zp
ZXcuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5oCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAxOTM4ZDBlLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3
ay9ld2tfdmlldy5oCisrKyAvZGV2L251bGwKQEAgLTEsMjQ4MiArMCwwIEBACi0vKgotICAgIENv
cHlyaWdodCAoQykgMjAwOS0yMDEwIFByb0ZVU0lPTiBlbWJlZGRlZCBzeXN0ZW1zCi0gICAgQ29w
eXJpZ2h0IChDKSAyMDA5LTIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcwotICAgIENvcHlyaWdodCAo
QykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbgotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICAgIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gICAgTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0g
ICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAgICBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICAgIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0gICAgWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQotICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUg
Q09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAgICBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSovCi0KLS8qKgotICogQGZpbGUgICAgZXdrX3ZpZXcu
aAotICogQGJyaWVmICAgV2ViS2l0IG1haW4gc21hcnQgb2JqZWN0LgotICoKLSAqIFRoaXMgb2Jq
ZWN0IGFsbG93cyB0aGUgaGlnaCBsZXZlbCBhY2Nlc3MgdG8gV2ViS2l0LUVGTCBjb21wb25lbnQu
Ci0gKiBJdCBpcyByZXNwb25zaWJsZSBmb3IgbWFuYWdpbmcgdGhlIG1haW4gZnJhbWUgYW5kIG90
aGVyCi0gKiBjcml0aWNhbCByZXNvdXJjZXMuCi0gKgotICogRXZlcnkgZXdrX3ZpZXcgaGFzIGF0
IGxlYXN0IG9uZSBmcmFtZSwgY2FsbGVkICJtYWluIGZyYW1lIiBhbmQKLSAqIHJldHJpZXZlZCB3
aXRoIGV3a192aWV3X2ZyYW1lX21haW5fZ2V0KCkuIERpcmVjdCBmcmFtZSBhY2Nlc3MgaXMKLSAq
IG9mdGVuIGRpc2NvdXJhZ2VkLCBpdCBpcyByZWNvbW1lbmRlZCB0byB1c2UgZXdrX3ZpZXcgZnVu
Y3Rpb25zCi0gKiBpbnN0ZWFkLgotICoKLSAqIFRoZSBmb2xsb3dpbmcgc2lnbmFscyAoc2VlIGV2
YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZCgpKSBhcmUgZW1pdHRlZDoKLSAqCi0gKiAgLSAi
Y29sb3JjaG9vc2VyLGNyZWF0ZSIsIEV3a19Db2xvcjogYSBuZXcgY29sb3IgY2hvb3NlciBzaG91
bGQgYmUgY3JlYXRlZC4KLSAqICAtICJjb2xvcmNob29zZXIsd2lsbGRlbGV0ZSIsIHZvaWQ6IHJl
cG9ydHMgdGhhdCBhIHByZXZpb3VzbHkgY3JlYXRlZCBjb2xvcgotICogICAgY2hvb3NlciB3aWxs
IGJlIGRlbGV0ZWQuCi0gKiAgLSAiY29sb3JjaG9vc2VyLGNvbG9yLGNoYW5nZWQiLCBFd2tfQ29s
b3I6IHRoZSB2YWx1ZSBhdCB0aGUgY29sb3IgaW5wdXQgd2lkZ2V0Ci0gKiAgICBjb3JyZXNwb25k
aW5nIHRvIHRoZSBjb2xvciBjaG9vc2VyIGhhcyBjaGFuZ2VkLgotICogIC0gImRvd25sb2FkLHJl
cXVlc3QiLCBFd2tfRG93bmxvYWQ6IHJlcG9ydHMgYSBkb3dubG9hZCBpcyBiZWluZyByZXF1ZXN0
ZWQKLSAqICAtICJlZGl0b3JjbGllbnQsY29udGVudHMsY2hhbmdlZCIsIHZvaWQ6IHJlcG9ydHMg
dG8gdGhlIHZpZXcgdGhhdCBlZGl0b3IKLSAqICAgIGNsaWVudCdzIGNvbnRlbnRzIHdlcmUgY2hh
bmdlZAotICogIC0gImZyYW1lLGNyZWF0ZWQiLCBFdmFzX09iamVjdCo6IGEgbmV3IGZyYW1lIGlz
IGNyZWF0ZWQuCi0gKiAgLSAiaWNvbixyZWNlaXZlZCIsIHZvaWQ6IG1haW4gZnJhbWUgcmVjZWl2
ZWQgYW4gaWNvbi4KLSAqICAtICJpbnB1dG1ldGhvZCxjaGFuZ2VkIiwgRWluYV9Cb29sOiByZXBv
cnRzIHRoYXQgaW5wdXQgbWV0aG9kIHdhcyBjaGFuZ2VkIGFuZAotICogICAgaXQgZ2l2ZXMgYSBi
b29sZWFuIHZhbHVlIHdoZXRoZXIgaXQncyBlbmFibGVkIG9yIG5vdCBhcyBhbiBhcmd1bWVudC4K
LSAqICAtICJpbnNwZWN0b3IsdmlldyxjbG9zZSIsIEV2YXNfT2JqZWN0KjogcmVxdWVzdCB0byBj
bG9zZSB0aGUgdmlldyBmb3IgaW5zcGVjdG9yLgotICogIC0gImluc3BlY3Rvcix2aWV3LGNyZWF0
ZSIsIHZvaWQ6IHJlcXVlc3QgdG8gY3JlYXRlIHRoZSBuZXcgdmlldyBmb3IgaW5zcGVjdG9yLgot
ICogIC0gImpzLHdpbmRvd29iamVjdCxjbGVhciIsIHZvaWQ6IFJlcG9ydCB0aGF0IHRoZSBKUyB3
aW5kb3cgb2JqZWN0IGhhcyBiZWVuIGNsZWFyZWQuCi0gKiAgLSAibGluayxob3ZlcixpbiIsIGNv
bnN0IGNoYXIgKmxpbmtbMl06IHJlcG9ydHMgbW91c2UgaXMgb3ZlciBhIGxpbmsuCi0gKiAgICBJ
dCBnaXZlcyB0aGUgdXJsIGluIGxpbmtbMF0gYW5kIGxpbmsncyB0aXRsZSBpbiBsaW5rWzFdIGFz
IGFuIGFyZ3VtZW50LgotICogIC0gImxpbmssaG92ZXIsb3V0Iiwgdm9pZDogcmVwb3J0cyBtb3Vz
ZSBtb3ZlZCBvdXQgZnJvbSBhIGxpbmsuCi0gKiAgLSAibG9hZCxkb2N1bWVudCxmaW5pc2hlZCIs
IEV2YXNfT2JqZWN0KjogYSBET00gZG9jdW1lbnQgb2JqZWN0IGluIGEgZnJhbWUgaGFzIGZpbmlz
aGVkIGxvYWRpbmcuCi0gKiAgLSAibG9hZCxlcnJvciIsIGNvbnN0IEV3a19GcmFtZV9Mb2FkX0Vy
cm9yKjogcmVwb3J0cyBsb2FkIGZhaWxlZAotICogIC0gImxvYWQsZmluaXNoZWQiLCBjb25zdCBF
d2tfRnJhbWVfTG9hZF9FcnJvcio6IHJlcG9ydHMgbG9hZAotICogICAgZmluaXNoZWQgYW5kIGl0
IGdpdmVzIEBjIE5VTEwgb24gc3VjY2VzcyBvciBwb2ludGVyIHRvCi0gKiAgICBzdHJ1Y3R1cmUg
ZGVmaW5pbmcgdGhlIGVycm9yLgotICogIC0gImxvYWQsbmV3d2luZG93LHNob3ciLCB2b2lkOiBy
ZXBvcnRzIHRoYXQgYSBuZXcgd2luZG93IHdhcyBjcmVhdGVkIGFuZCBjYW4gYmUgc2hvd24uCi0g
KiAgICBhbmQgaXQgZ2l2ZXMgYSBwb2ludGVyIHRvIHN0cnVjdHVyZSBkZWZpbmluZyB0aGUgZXJy
b3IgYXMgYW4gYXJndW1lbnQuCi0gKiAgLSAibG9hZCxwcm9ncmVzcyIsIGRvdWJsZSo6IGxvYWQg
cHJvZ3Jlc3MgaXMgY2hhbmdlZCAob3ZlcmFsbCB2YWx1ZQotICogICAgZnJvbSAwLjAgdG8gMS4w
LCBjb25uZWN0IHRvIGluZGl2aWR1YWwgZnJhbWVzIGZvciBmaW5lIGdyYWluZWQpLgotICogIC0g
ImxvYWQscHJvdmlzaW9uYWwiLCB2b2lkOiB2aWV3IHN0YXJ0ZWQgcHJvdmlzaW9uYWwgbG9hZC4K
LSAqICAtICJsb2FkLHByb3Zpc2lvbmFsLGZhaWxlZCIsIEV3a19GcmFtZV9Mb2FkX0Vycm9yKjog
dmlldyBwcm92aXNpb25hbCBsb2FkIGZhaWxlZC4KLSAqICAtICJsb2FkLHJlc291cmNlLGZpbmlz
aGVkIiwgdW5zaWduZWQgbG9uZyo6IHJlcG9ydHMgcmVzb3VyY2UgbG9hZCBmaW5pc2hlZCBhbmQg
aXQgZ2l2ZXMKLSAqICAgIGEgcG9pbnRlciB0byBpdHMgaWRlbnRpZmllci4KLSAqICAtICJsb2Fk
LHJlc291cmNlLGZhaWxlZCIsIEV3a19GcmFtZV9Mb2FkX0Vycm9yKjogcmVwb3J0cyByZXNvdXJj
ZSBsb2FkIGZhaWx1cmUgYW5kIGl0Ci0gKiAgICBnaXZlcyBhIHBvaW50ZXIgdG8gc3RydWN0dXJl
IGRlZmluaW5nIHRoZSBlcnJvciBhcyBhbiBhcmd1bWVudC4KLSAqICAtICJsb2FkLHN0YXJ0ZWQi
LCBFdmFzX09iamVjdCo6IGZyYW1lIHN0YXJ0ZWQgbG9hZGluZyB0aGUgZG9jdW1lbnQuCi0gKiAg
LSAibWVudWJhcix2aXNpYmxlLGdldCIsIEVpbmFfQm9vbCAqOiBleHBlY3RzIGEgQGMgRUlOQV9U
UlVFIGlmIG1lbnViYXIgaXMKLSAqICAgIHZpc2libGU7IEBjIEVJTkFfRkFMU0UsIG90aGVyd2lz
ZS4KLSAqICAtICJtZW51YmFyLHZpc2libGUsc2V0IiwgRWluYV9Cb29sOiBzZXRzIG1lbnViYXIg
dmlzaWJpbGl0eS4KLSAqICAtICJtaXhlZGNvbnRlbnQsZGlzcGxheWVkIiwgdm9pZDogYW55IG9m
IHRoZSBjb250YWluaW5nIGZyYW1lcyBoYXMgbG9hZGVkIGFuZCBkaXNwbGF5ZWQgbWl4ZWQgY29u
dGVudC4KLSAqICAtICJtaXhlZGNvbnRlbnQscnVuIiwgdm9pZDogYW55IG9mIHRoZSBjb250YWlu
aW5nIGZyYW1lcyBoYXMgbG9hZGVkIGFuZCBydW4gbWl4ZWQgY29udGVudC4KLSAqICAtICJuYXZp
Z2F0ZSx3aXRoLGRhdGEiLCBFd2tfVmlld19OYXZpZ2F0aW9uX0RhdGEqOiByZXBvcnRzIHRoYXQg
dmlldyBkaWQgbmF2aWdhdGlvbiBhbmQgZ2l2ZXMgdGhlIG5hdmlnYXRpb24gZGV0YWlscy4KLSAq
ICAtICJwZXJmb3JtLGNsaWVudCxyZWRpcmVjdCIsIEV3a19WaWV3X1JlZGlyZWN0aW9uX0RhdGEq
OiByZXBvcnRzIHRoYXQgdmlldyBwZXJmb3JtZWQgYSBjbGllbnQgcmVkaXJlY3QgYW5kIGdpdmVz
IHRoZSByZWRpcmVjdGlvbiBkZXRhaWxzLgotICogIC0gInBlcmZvcm0sc2VydmVyLHJlZGlyZWN0
IiwgRXdrX1ZpZXdfUmVkaXJlY3Rpb25fRGF0YSo6IHJlcG9ydHMgdGhhdCB2aWV3IHBlcmZvcm1l
ZCBhIHNlcnZlciByZWRpcmVjdCBhbmQgZ2l2ZXMgdGhlIHJlZGlyZWN0aW9uIGRldGFpbHMuCi0g
KiAgLSAicHJvdG9jb2xoYW5kbGVyLHJlZ2lzdHJhdGlvbixyZXF1ZXN0ZWQiLCBFd2tfQ3VzdG9t
X0hhbmRsZXJfRGF0YTogYWRkIGEgaGFuZGxlciB1cmwgZm9yIHRoZSBnaXZlbiBwcm90b2NvbC4K
LSAqICAtICJwcm90b2NvbGhhbmRsZXIsaXNyZWdpc3RlcmVkIiwgRXdrX0N1c3RvbV9IYW5kbGVy
X0RhdGE6IHF1ZXJ5IHdoZXRoZXIgdGhlIGhhbmRsZXIgaXMgcmVnaXN0ZXJlZCBvciBub3QuCi0g
KiAgLSAicHJvdG9jb2xoYW5kbGVyLHVucmVnaXN0cmF0aW9uLHJlcXVlc3RlZCIsIEV3a19DdXN0
b21fSGFuZGxlcl9EYXRhOiByZW1vdmUgYSBoYW5kbGVyIHVybCBmb3IgdGhlIGdpdmVuIHByb3Rv
Y29sLgotICogIC0gIm9ubG9hZCxldmVudCIsIEV2YXNfT2JqZWN0KjogYSBmcmFtZSBvbmxvYWQg
ZXZlbnQgaGFzIGJlZW4gcmVjZWl2ZWQuCi0gKiAgLSAicG9wdWxhdGUsdmlzaXRlZCxsaW5rcyI6
IHRlbGxzIHRoZSBjbGllbnQgdG8gZmlsbCB0aGUgdmlzaXRlZCBsaW5rcyBzZXQuCi0gKiAgLSAi
cmVhZHkiLCB2b2lkOiBwYWdlIGlzIGZ1bGx5IGxvYWRlZC4KLSAqICAtICJyZXNvdXJjZSxyZXF1
ZXN0LG5ldyIsIEV3a19GcmFtZV9SZXNvdXJjZV9SZXF1ZXN0KjogcmVwb3J0cyB0aGF0Ci0gKiAg
ICB0aGVyZSdzIGEgbmV3IHJlc291cmNlIHJlcXVlc3QuCi0gKiAgLSAicmVzb3VyY2UscmVxdWVz
dCx3aWxsc2VuZCIsIEV3a19GcmFtZV9SZXNvdXJjZV9NZXNzYWdlcyo6IGEgcmVzb3VyY2Ugd2ls
bCBiZSByZXF1ZXN0ZWQuCi0gKiAgICBhbmQgdGhlIHBvc3NpYmxlIHJlZGlyZWN0IHJlc3BvbnNl
LgotICogIC0gInJlc291cmNlLHJlc3BvbnNlLHJlY2VpdmVkIiwgRXdrX0ZyYW1lX1Jlc291cmNl
X1Jlc3BvbnNlKjogdGhlIG5ldHdvcmsgcmVzcG9uc2UgZm9yIGEgcmVzb3VyY2UuCi0gKiAgLSAi
c2Nyb2xsYmFycyx2aXNpYmxlLGdldCIsIEVpbmFfQm9vbCAqOiBleHBlY3RzIGEgQGMgRUlOQV9U
UlVFIGlmIHNjcm9sbGJhcnMKLSAqICAgIGFyZSB2aXNpYmxlOyBAYyBFSU5BX0ZBTFNFLCBvdGhl
cndpc2UuCi0gKiAgLSAic2Nyb2xsYmFycyx2aXNpYmxlLHNldCIsIEVpbmFfQm9vbDogc2V0cyBz
Y3JvbGxiYXJzIHZpc2liaWxpdHkuCi0gKiAgLSAic3RhdHVzYmFyLHRleHQsc2V0IiwgY29uc3Qg
Y2hhciAqOiBzZXRzIHN0YXR1c2JhciB0ZXh0LgotICogIC0gInN0YXR1c2Jhcix2aXNpYmxlLGdl
dCIsIEVpbmFfQm9vbCAqOiBleHBlY3RzIGEgQGMgRUlOQV9UUlVFIGlmIHN0YXR1c2JhciBpcwot
ICogICAgdmlzaWJsZTsgQGMgRUlOQV9GQUxTRSwgb3RoZXJ3aXNlLgotICogIC0gInN0YXR1c2Jh
cix2aXNpYmxlLHNldCIsIEVpbmFfQm9vbDogc2V0cyBzdGF0dXNiYXIgdmlzaWJpbGl0eS4KLSAq
ICAtICJ0aXRsZSxjaGFuZ2VkIiwgRXdrX1RleHRfV2l0aF9EaXJlY3Rpb24qOiB0aXRsZSBvZiB0
aGUgbWFpbiBmcmFtZSB3YXMgY2hhbmdlZC4KLSAqICAtICJ0b29sYmFycyx2aXNpYmxlLGdldCIs
IEVpbmFfQm9vbCAqOiBleHBlY3RzIGEgQGMgRUlOQV9UUlVFIGlmIHRvb2xiYXIKLSAqICAgIGlz
IHZpc2libGU7IEBjIEVJTkFfRkFMU0UsIG90aGVyd2lzZS4KLSAqICAtICJ0b29sYmFycyx2aXNp
YmxlLHNldCIsIEVpbmFfQm9vbDogc2V0cyB0b29sYmFyIHZpc2liaWxpdHkuCi0gKiAgLSAicG9w
dXAsY3JlYXRlIiwgRXdrX01lbnU6IHJlcG9ydHMgdGhhdCBhIG5ldyBtZW51IHdhcyBjcmVhdGVk
LgotICogIC0gInBvcHVwLHdpbGxkZWxldGVkIiwgRXdrX01lbnU6IHJlcG9ydHMgdGhhdCBhIHBy
ZXZpb3VzbHkgY3JlYXRlZCBtZW51Ci0gKiAgICB3aWxsIGJlIGRlbGV0ZWQuCi0gKiAgLSAicmVz
dG9yZSIsIEV2YXNfT2JqZWN0ICo6IHJlcG9ydHMgdGhhdCB2aWV3IHNob3VsZCBiZSByZXN0b3Jl
ZCB0byBkZWZhdWx0IGNvbmRpdGlvbnMKLSAqICAgIGFuZCBpdCBnaXZlcyBhIGZyYW1lIHRoYXQg
b3JpZ2luYXRlZCByZXN0b3JlIGFzIGFuIGFyZ3VtZW50LgotICogIC0gInRvb2x0aXAsdGV4dCxz
ZXQiLCBjb25zdCBjaGFyKjogdG9vbHRpcCB3YXMgc2V0LgotICogIC0gInRvb2x0aXAsdGV4dCx1
bnNldCIsIHZvaWQ6IHRvb2x0aXAgd2FzIHVuc2V0LgotICogIC0gInVyaSxjaGFuZ2VkIiwgY29u
c3QgY2hhcio6IHVyaSBvZiB0aGUgbWFpbiBmcmFtZSB3YXMgY2hhbmdlZC4KLSAqICAtICJ2aWV3
LHJlc2l6ZWQiLCB2b2lkOiB2aWV3IG9iamVjdCdzIHNpemUgd2FzIGNoYW5nZWQuCi0gKiAgLSAi
dmlld3BvcnQsY2hhbmdlZCIsIHZvaWQ6IHJlcG9ydHMgdGhhdCB2aWV3cG9ydCB3YXMgY2hhbmdl
ZC4KLSAqICAtICJ6b29tLGFuaW1hdGVkLGVuZCIsIHZvaWQ6IHJlcXVlc3RlZCBhbmltYXRlZCB6
b29tIGlzIGZpbmlzaGVkLgotICovCi0KLSNpZm5kZWYgZXdrX3ZpZXdfaAotI2RlZmluZSBld2tf
dmlld19oCi0KLSNpbmNsdWRlICJld2tfY29udGV4dG1lbnUuaCIKLSNpbmNsdWRlICJld2tfZmls
ZV9jaG9vc2VyLmgiCi0jaW5jbHVkZSAiZXdrX2ZyYW1lLmgiCi0jaW5jbHVkZSAiZXdrX2hpc3Rv
cnkuaCIKLSNpbmNsdWRlICJld2tfanMuaCIKLSNpbmNsdWRlICJld2tfd2luZG93X2ZlYXR1cmVz
LmgiCi0KLSNpbmNsdWRlIDxFdmFzLmg+Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJD
IiB7Ci0jZW5kaWYKLQotLy8vIENyZWF0ZXMgYSB0eXBlIG5hbWUgZm9yIEBhIF9Fd2tfVmlld19T
bWFydF9EYXRhLgotdHlwZWRlZiBzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0X0RhdGEgRXdrX1ZpZXdf
U21hcnRfRGF0YTsKLQotLy8vIENyZWF0ZXMgYSB0eXBlIG5hbWUgZm9yIGEgUmVzb3VyY2UgSGFu
ZGxlciBDYWxsYmFjawotdHlwZWRlZiB2b2lkKiAoKkV3a19WaWV3X1Jlc291cmNlX0hhbmRsZXJf
Q2IpKGNvbnN0IGNoYXIgKiwgc2l6ZV90ICosIGNoYXIgKiosIHZvaWQgKik7Ci0KLS8vLyBDcmVh
dGVzIGEgdHlwZSBuYW1lIGZvciBAYSBfRXdrX1ZpZXdfU21hcnRfQ2xhc3MuCi10eXBlZGVmIHN0
cnVjdCBfRXdrX1ZpZXdfU21hcnRfQ2xhc3MgRXdrX1ZpZXdfU21hcnRfQ2xhc3M7Ci0KLS8vIERl
ZmluZXMgdGhlIGRpcmVjdGlvbiBvZiBmb2N1cyBjaGFuZ2UuIEtlZXAgaW4gc3luYyB3aXRoCi0v
LyBXZWJDb3JlOjpGb2N1c0RpcmVjdGlvbi4KLWVudW0gX0V3a19Gb2N1c19EaXJlY3Rpb24gewot
ICAgIEVXS19GT0NVU19ESVJFQ1RJT05fRk9SV0FSRCA9IDEsCi0gICAgRVdLX0ZPQ1VTX0RJUkVD
VElPTl9CQUNLV0FSRCwKLX07Ci10eXBlZGVmIGVudW0gX0V3a19Gb2N1c19EaXJlY3Rpb24gRXdr
X0ZvY3VzX0RpcmVjdGlvbjsKLQotLy8vIEV3ayB2aWV3J3MgY2xhc3MsIHRvIGJlIG92ZXJyaWRk
ZW4gYnkgc3ViLWNsYXNzZXMuCi1zdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0X0NsYXNzIHsKLSAgICBF
dmFzX1NtYXJ0X0NsYXNzIHNjOyAvKio8IEFsbCBidXQgJ2RhdGEnIGlzIGZyZWUgdG8gYmUgY2hh
bmdlZC4gKi8KLSAgICB1bnNpZ25lZCBsb25nIHZlcnNpb247Ci0KLSAgICBFdmFzX09iamVjdCAq
KCp3aW5kb3dfY3JlYXRlKShFd2tfVmlld19TbWFydF9EYXRhICpzZCwgRWluYV9Cb29sIGphdmFz
Y3JpcHQsIGNvbnN0IEV3a19XaW5kb3dfRmVhdHVyZXMgKndpbmRvd19mZWF0dXJlcyk7IC8qKjwg
Y3JlYXRlcyBhIG5ldyB3aW5kb3csIHJlcXVlc3RlZCBieSB3ZWJraXQgKi8KLSAgICB2b2lkICgq
d2luZG93X2Nsb3NlKShFd2tfVmlld19TbWFydF9EYXRhICpzZCk7IC8qKjwgY2xvc2VzIGEgd2lu
ZG93ICovCi0gICAgRWluYV9Cb29sICgqY29udGVudHNfcmVzaXplKShFd2tfVmlld19TbWFydF9E
YXRhICpzZCwgaW50IHcsIGludCBoKTsKLSAgICBFaW5hX0Jvb2wgKCp6b29tX3NldCkoRXdrX1Zp
ZXdfU21hcnRfRGF0YSAqc2QsIGZsb2F0IHpvb20sIEV2YXNfQ29vcmQgY3gsIEV2YXNfQ29vcmQg
Y3kpOwotICAgIEVpbmFfQm9vbCAoKnpvb21fd2Vha19zZXQpKEV3a19WaWV3X1NtYXJ0X0RhdGEg
KnNkLCBmbG9hdCB6b29tLCBFdmFzX0Nvb3JkIGN4LCBFdmFzX0Nvb3JkIGN5KTsKLSAgICB2b2lk
ICgqem9vbV93ZWFrX3Ntb290aF9zY2FsZV9zZXQpKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBF
aW5hX0Jvb2wgc21vb3RoX3NjYWxlKTsKLSAgICBFaW5hX0Jvb2wgKCpkaXNhYmxlX3JlbmRlciko
RXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QpOwotICAgIEVpbmFfQm9vbCAoKmVuYWJsZV9yZW5kZXIp
KEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkKTsKLQotICAgIC8vIGV2ZW50IGhhbmRsaW5nOgotICAg
IC8vICAtIHJldHVybnMgdHJ1ZSBpZiBoYW5kbGVkCi0gICAgLy8gIC0gaWYgb3ZlcnJpZGRlbiwg
aGF2ZSB0byBjYWxsIHBhcmVudCBtZXRob2QgaWYgZGVzaXJlZAotICAgIEVpbmFfQm9vbCAoKmZv
Y3VzX2luKShFd2tfVmlld19TbWFydF9EYXRhICpzZCk7Ci0gICAgRWluYV9Cb29sICgqZm9jdXNf
b3V0KShFd2tfVmlld19TbWFydF9EYXRhICpzZCk7Ci0gICAgRWluYV9Cb29sICgqZnVsbHNjcmVl
bl9lbnRlcikoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QpOwotICAgIEVpbmFfQm9vbCAoKmZ1bGxz
Y3JlZW5fZXhpdCkoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QpOwotICAgIEVpbmFfQm9vbCAoKm1v
dXNlX3doZWVsKShFd2tfVmlld19TbWFydF9EYXRhICpzZCwgY29uc3QgRXZhc19FdmVudF9Nb3Vz
ZV9XaGVlbCAqZXYpOwotICAgIEVpbmFfQm9vbCAoKm1vdXNlX2Rvd24pKEV3a19WaWV3X1NtYXJ0
X0RhdGEgKnNkLCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX0Rvd24gKmV2KTsKLSAgICBFaW5hX0Jv
b2wgKCptb3VzZV91cCkoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIGNvbnN0IEV2YXNfRXZlbnRf
TW91c2VfVXAgKmV2KTsKLSAgICBFaW5hX0Jvb2wgKCptb3VzZV9tb3ZlKShFd2tfVmlld19TbWFy
dF9EYXRhICpzZCwgY29uc3QgRXZhc19FdmVudF9Nb3VzZV9Nb3ZlICpldik7Ci0gICAgRWluYV9C
b29sICgqa2V5X2Rvd24pKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBjb25zdCBFdmFzX0V2ZW50
X0tleV9Eb3duICpldik7Ci0gICAgRWluYV9Cb29sICgqa2V5X3VwKShFd2tfVmlld19TbWFydF9E
YXRhICpzZCwgY29uc3QgRXZhc19FdmVudF9LZXlfVXAgKmV2KTsKLQotICAgIHZvaWQgKCphZGRf
Y29uc29sZV9tZXNzYWdlKShFd2tfVmlld19TbWFydF9EYXRhICpzZCwgY29uc3QgY2hhciAqbWVz
c2FnZSwgdW5zaWduZWQgaW50IGxpbmVOdW1iZXIsIGNvbnN0IGNoYXIgKnNvdXJjZUlEKTsKLSAg
ICB2b2lkICgqcnVuX2phdmFzY3JpcHRfYWxlcnQpKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBF
dmFzX09iamVjdCAqZnJhbWUsIGNvbnN0IGNoYXIgKm1lc3NhZ2UpOwotICAgIEVpbmFfQm9vbCAo
KnJ1bl9qYXZhc2NyaXB0X2NvbmZpcm0pKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBFdmFzX09i
amVjdCAqZnJhbWUsIGNvbnN0IGNoYXIgKm1lc3NhZ2UpOwotICAgIEVpbmFfQm9vbCAoKnJ1bl9i
ZWZvcmVfdW5sb2FkX2NvbmZpcm0pKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBFdmFzX09iamVj
dCAqZnJhbWUsIGNvbnN0IGNoYXIgKm1lc3NhZ2UpOwotICAgIEVpbmFfQm9vbCAoKnJ1bl9qYXZh
c2NyaXB0X3Byb21wdCkoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIEV2YXNfT2JqZWN0ICpmcmFt
ZSwgY29uc3QgY2hhciAqbWVzc2FnZSwgY29uc3QgY2hhciAqZGVmYXVsdFZhbHVlLCBjb25zdCBj
aGFyICoqdmFsdWUpOwotICAgIEVpbmFfQm9vbCAoKnNob3VsZF9pbnRlcnJ1cHRfamF2YXNjcmlw
dCkoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QpOwotICAgIGludDY0X3QgKCpleGNlZWRlZF9hcHBs
aWNhdGlvbl9jYWNoZV9xdW90YSkoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIEV3a19TZWN1cml0
eV9PcmlnaW4qIG9yaWdpbiwgaW50NjRfdCBkZWZhdWx0T3JpZ2luUXVvdGEsIGludDY0X3QgdG90
YWxTcGFjZU5lZWRlZCk7Ci0gICAgdWludDY0X3QgKCpleGNlZWRlZF9kYXRhYmFzZV9xdW90YSko
RXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIEV2YXNfT2JqZWN0ICpmcmFtZSwgY29uc3QgY2hhciAq
ZGF0YWJhc2VOYW1lLCB1aW50NjRfdCBjdXJyZW50X3NpemUsIHVpbnQ2NF90IGV4cGVjdGVkX3Np
emUpOwotCi0gICAgRWluYV9Cb29sICgqcnVuX29wZW5fcGFuZWwpKEV3a19WaWV3X1NtYXJ0X0Rh
dGEgKnNkLCBFdmFzX09iamVjdCAqZnJhbWUsIEV3a19GaWxlX0Nob29zZXIgKmZpbGVfY2hvb3Nl
ciwgRWluYV9MaXN0ICoqc2VsZWN0ZWRfZmlsZW5hbWVzKTsKLQotICAgIEVpbmFfQm9vbCAoKm5h
dmlnYXRpb25fcG9saWN5X2RlY2lzaW9uKShFd2tfVmlld19TbWFydF9EYXRhICpzZCwgRXdrX0Zy
YW1lX1Jlc291cmNlX1JlcXVlc3QgKnJlcXVlc3QsIEV3a19OYXZpZ2F0aW9uX1R5cGUgbmF2aWdh
dGlvbl90eXBlKTsKLSAgICBFaW5hX0Jvb2wgKCpmb2N1c19jYW5fY3ljbGUpKEV3a19WaWV3X1Nt
YXJ0X0RhdGEgKnNkLCBFd2tfRm9jdXNfRGlyZWN0aW9uIGRpcmVjdGlvbik7Ci19OwotCi0vKioK
LSAqIFRoZSB2ZXJzaW9uIHlvdSBoYXZlIHRvIHB1dCBpbnRvIHRoZSB2ZXJzaW9uIGZpZWxkCi0g
KiBpbiB0aGUgQGEgRXdrX1ZpZXdfU21hcnRfQ2xhc3Mgc3RydWN0dXJlLgotICovCi0jZGVmaW5l
IEVXS19WSUVXX1NNQVJUX0NMQVNTX1ZFUlNJT04gOVVMCi0KLS8qKgotICogSW5pdGlhbGl6ZXMg
YSB3aG9sZSBAYSBFd2tfVmlld19TbWFydF9DbGFzcyBzdHJ1Y3R1cmUuCi0gKgotICogQHBhcmFt
IHNtYXJ0X2NsYXNzX2luaXQgaW5pdGlhbGl6ZXIgdG8gdXNlIGZvciB0aGUgImJhc2UiIGZpZWxk
Ci0gKiBAYSBFdmFzX1NtYXJ0X0NsYXNzCi0gKgotICogQHNlZSBFV0tfVklFV19TTUFSVF9DTEFT
U19JTklUX05VTEwKLSAqIEBzZWUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9WRVJTSU9OCi0g
KiBAc2VlIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVRfTkFNRV9WRVJTSU9OCi0gKi8KLSNkZWZp
bmUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVChzbWFydF9jbGFzc19pbml0KSB7c21hcnRfY2xh
c3NfaW5pdCwgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfVkVSU0lPTiwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMH0KLQotLyoqCi0gKiBJbml0aWFsaXplcyB0byB6ZXJvIGEgd2hvbGUgQGEgRXdr
X1ZpZXdfU21hcnRfQ2xhc3Mgc3RydWN0dXJlLgotICoKLSAqIEBzZWUgRVdLX1ZJRVdfU01BUlRf
Q0xBU1NfSU5JVF9WRVJTSU9OCi0gKiBAc2VlIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVRfTkFN
RV9WRVJTSU9OCi0gKiBAc2VlIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVQKLSAqLwotI2RlZmlu
ZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUX05VTEwgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5J
VChFVkFTX1NNQVJUX0NMQVNTX0lOSVRfTlVMTCkKLQotLyoqCi0gKiBJbml0aWFsaXplcyB0byB6
ZXJvIGEgd2hvbGUgQGEgRXdrX1ZpZXdfU21hcnRfQ2xhc3Mgc3RydWN0dXJlCi0gKiBhbmQgc2V0
cyB0aGUgdmVyc2lvbi4KLSAqCi0gKiBTaW1pbGFyIHRvIEBhIEVXS19WSUVXX1NNQVJUX0NMQVNT
X0lOSVRfTlVMTCwgYnV0IGl0IHNldHMgdGhlIHZlcnNpb24gZmllbGQgb2YKLSAqIEBhIEV2YXNf
U21hcnRfQ2xhc3MgKGJhc2UgZmllbGQpIHRvIGxhdGVzdCBAYSBFVkFTX1NNQVJUX0NMQVNTX1ZF
UlNJT04uCi0gKgotICogQHNlZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUX05VTEwKLSAqIEBz
ZWUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9OQU1FX1ZFUlNJT04KLSAqIEBzZWUgRVdLX1ZJ
RVdfU01BUlRfQ0xBU1NfSU5JVAotICovCi0jZGVmaW5lIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lO
SVRfVkVSU0lPTiBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUKEVWQVNfU01BUlRfQ0xBU1NfSU5J
VF9WRVJTSU9OKQotCi0vKioKLSAqIEluaXRpYWxpemVzIHRvIHplcm8gYSB3aG9sZSBAYSBFd2tf
Vmlld19TbWFydF9DbGFzcyBzdHJ1Y3R1cmUKLSAqIGFuZCBzZXRzIHRoZSBuYW1lIGFuZCB2ZXJz
aW9uLgotICoKLSAqIFNpbWlsYXIgdG8gQGEgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9OVUxM
LCBidXQgaXQgc2V0cyB0aGUgdmVyc2lvbiBmaWVsZCBvZgotICogQGEgRXZhc19TbWFydF9DbGFz
cyAoYmFzZSBmaWVsZCkgdG8gbGF0ZXN0IEBhIEVWQVNfU01BUlRfQ0xBU1NfVkVSU0lPTgotICog
YW5kIHRoZSBuYW1lIHRvIHRoZSBzcGVjaWZpYyB2YWx1ZS4KLSAqCi0gKiBJdCB3aWxsIGtlZXAg
YSByZWZlcmVuY2UgdG8gdGhlIG5hbWUgZmllbGQgYXMgYSAiY29uc3QgY2hhciAqIiwgdGhhdCBp
cywKLSAqIG5hbWUgbXVzdCBiZSBhdmFpbGFibGUgd2hpbGUgdGhlIHN0cnVjdHVyZSBpcyB1c2Vk
IChoaW50OiBzdGF0aWMgb3IgZ2xvYmFsISkKLSAqIGFuZCBpdCB3aWxsIG5vdCBiZSBtb2RpZmll
ZC4KLSAqCi0gKiBAc2VlIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVRfTlVMTAotICogQHNlZSBF
V0tfVklFV19TTUFSVF9DTEFTU19JTklUX1ZFUlNJT04KLSAqIEBzZWUgRVdLX1ZJRVdfU01BUlRf
Q0xBU1NfSU5JVAotICovCi0jZGVmaW5lIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVRfTkFNRV9W
RVJTSU9OKG5hbWUpIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVQoRVZBU19TTUFSVF9DTEFTU19J
TklUX05BTUVfVkVSU0lPTihuYW1lKSkKLQotLy8vIERlZmluZXMgdGhlIGlucHV0IG1ldGhvZCBo
aW50cy4KLWVudW0gX0V3a19JbWggewotICAgIEVXS19JTUhfVEVMRVBIT05FID0gKDEgPDwgMCks
Ci0gICAgRVdLX0lNSF9OVU1CRVIgPSAoMSA8PCAxKSwKLSAgICBFV0tfSU1IX0VNQUlMID0gKDEg
PDwgMiksCi0gICAgRVdLX0lNSF9VUkwgPSAoMSA8PCAzKSwKLSAgICBFV0tfSU1IX1BBU1NXT1JE
ID0gKDEgPDwgNCkKLX07Ci0vLy8gQ3JlYXRlcyBhIHR5cGUgbmFtZSBmb3IgQGEgX0V3a19JbWgu
Ci10eXBlZGVmIGVudW0gX0V3a19JbWggRXdrX0ltaDsKLQotLy8vIENyZWF0ZXMgYSB0eXBlIG5h
bWUgZm9yIEBhIF9Fd2tfVmlld19Qcml2YXRlX0RhdGEuCi10eXBlZGVmIHN0cnVjdCBfRXdrX1Zp
ZXdfUHJpdmF0ZV9EYXRhIEV3a19WaWV3X1ByaXZhdGVfRGF0YTsKLQotLy8vIERlZmluZXMgdGhl
IHR5cGVzIG9mIHRoZSBpdGVtcyBmb3IgdGhlIGNvbnRleHQgbWVudS4KLWVudW0gX0V3a19NZW51
X0l0ZW1fVHlwZSB7Ci0gICAgRVdLX01FTlVfU0VQQVJBVE9SLAotICAgIEVXS19NRU5VX0dST1VQ
LAotICAgIEVXS19NRU5VX09QVElPTgotfTsKLS8vLyBDcmVhdGVzIGEgdHlwZSBuYW1lIGZvciBA
YSBfRXdrX01lbnVfSXRlbV9UeXBlLgotdHlwZWRlZiBlbnVtIF9Fd2tfTWVudV9JdGVtX1R5cGUg
RXdrX01lbnVfSXRlbV9UeXBlOwotCi0vLy8gQ3JlYXRlcyBhIHR5cGUgbmFtZSBmb3IgQGEgX0V3
a19NZW51X0l0ZW0uCi10eXBlZGVmIHN0cnVjdCBfRXdrX01lbnVfSXRlbSBFd2tfTWVudV9JdGVt
OwotLy8vIENvbnRhaW5zIGRhdGEgb2YgZWFjaCBtZW51IGl0ZW0uCi1zdHJ1Y3QgX0V3a19NZW51
X0l0ZW0gewotICAgIGNvbnN0IGNoYXIgKnRleHQ7IC8qKjwgVGV4dCBvZiB0aGUgaXRlbS4gKi8K
LSAgICBFd2tfTWVudV9JdGVtX1R5cGUgdHlwZTsgLyoqIFR5cGUgb2YgdGhlIGl0ZW0uICovCi19
OwotCi0vLy8gQ3JlYXRlcyBhIHR5cGUgbmFtZSBmb3IgQGEgX0V3a19NZW51LgotdHlwZWRlZiBz
dHJ1Y3QgX0V3a19NZW51IEV3a19NZW51OwotLy8vIENvbnRhaW5zIFBvcHVwIG1lbnUgZGF0YS4K
LXN0cnVjdCBfRXdrX01lbnUgewotICAgICAgICBFaW5hX0xpc3QgKml0ZW1zOyAvKio8IExpc3Qg
b2YgaXRlbXMuICovCi0gICAgICAgIGludCB4OyAvKio8IFRoZSBob3Jpem9udGFsIHBvc2l0aW9u
IG9mIFBvcHVwIG1lbnUuICovCi0gICAgICAgIGludCB5OyAvKio8IFRoZSB2ZXJ0aWNhbCBwb3Np
dGlvbiBvZiBQb3B1cCBtZW51LiAqLwotICAgICAgICBpbnQgd2lkdGg7IC8qKjwgUG9wdXAgbWVu
dSB3aWR0aC4gKi8KLSAgICAgICAgaW50IGhlaWdodDsgLyoqPCBQb3B1cCBtZW51IGhlaWdodC4g
Ki8KLX07Ci0KLS8vLyBDcmVhdGVzIGEgdHlwZSBuYW1lIGZvciBAYSBfRXdrX0Rvd25sb2FkLgot
dHlwZWRlZiBzdHJ1Y3QgX0V3a19Eb3dubG9hZCBFd2tfRG93bmxvYWQ7Ci0vLy8gQ29udGFpbnMg
RG93bmxvYWQgZGF0YS4KLXN0cnVjdCBfRXdrX0Rvd25sb2FkIHsKLSAgICBjb25zdCBjaGFyICp1
cmw7IC8qKjwgVVJMIG9mIHJlc291cmNlLiAqLwotICAgIGNvbnN0IGNoYXIgKnN1Z2dlc3RlZF9u
YW1lOyAvKio8IHN1Z2dlc3RlZCBuYW1lIGZyb20gZG93bmxvYWQgYXR0cmlidXRlcyAqLwotICAg
IC8qIHRvIGJlIGV4dGVuZGVkICovCi19OwotCi0vLy8gQ3JlYXRlcyBhIHR5cGUgbmFtZSBmb3Ig
QGEgX0V3a19WaWV3X05hdmlnYXRpb25fRGF0YS4KLXR5cGVkZWYgc3RydWN0IF9Fd2tfVmlld19O
YXZpZ2F0aW9uX0RhdGEgRXdrX1ZpZXdfTmF2aWdhdGlvbl9EYXRhOwotCi0vKioKLSAqIEBicmll
ZiBTdHJ1Y3R1cmUgY29udGFpbmluZyBkZXRhaWxzIGFib3V0IGEgdmlldyBuYXZpZ2F0aW9uLgot
ICoKLSAqIERldGFpbHMgb2YgYSB2aWV3IG5hdmlnYXRpb24uIEl0IGlzIHVzZWQgaW4gIm5hdmln
YXRlLHdpdGgsZGF0YSIgc2lnbmFsLgotICovCi1zdHJ1Y3QgX0V3a19WaWV3X05hdmlnYXRpb25f
RGF0YSB7Ci0gICAgY29uc3QgY2hhciAqdXJsOyAgLyoqPCBVUkwgZm9yIHRoZSBoaXN0b3J5LiAq
LwotICAgIGNvbnN0IGNoYXIgKnRpdGxlOyAgLyoqPCBUaXRsZSBvZiB0aGUgbmF2aWdhdGVkIHBh
Z2UuICovCi0gICAgRXdrX0ZyYW1lX1Jlc291cmNlX1JlcXVlc3QgKnJlcXVlc3Q7ICAvKio8IE5h
dmlnYXRpb24gcmVxdWVzdC4gKi8KLSAgICBFd2tfRnJhbWVfUmVzb3VyY2VfUmVzcG9uc2UgKnJl
c3BvbnNlOyAgLyoqPCBOYXZpZ2F0aW9uIHJlc3BvbnNlLiAqLwotICAgIEVpbmFfQm9vbCBoYXNf
c3Vic3RpdHV0ZV9kYXRhOyAgLyoqPCBEYXRhIHN1YnN0aXR1dGlvbiBmbGFnLiAqLwotICAgIGNv
bnN0IGNoYXIgKmNsaWVudF9yZWRpcmVjdF9zb3VyY2U7ICAvKio8IENsaWVudCByZWRpcmVjdCBz
b3VyY2UgVVJMLiAqLwotfTsKLQotCi0vLy8gQ3JlYXRlcyBhIHR5cGUgbmFtZSBmb3IgQGEgX0V3
a19WaWV3X1JlZGlyZWN0aW9uX0RhdGEuCi10eXBlZGVmIHN0cnVjdCBfRXdrX1ZpZXdfUmVkaXJl
Y3Rpb25fRGF0YSBFd2tfVmlld19SZWRpcmVjdGlvbl9EYXRhOwotCi0vKioKLSAqIEBicmllZiBT
dHJ1Y3R1cmUgY29udGFpbmluZyBkZXRhaWxzIGFib3V0IGEgdmlldyByZWRpcmVjdGlvbi4KLSAq
Ci0gKiBEZXRhaWxzIG9mIGEgY2xpZW50IG9yIHNlcnZlciByZWRpcmVjdGlvbi4gSXQgaXMgdXNl
ZCBpbiAicGVyZm9ybSxjbGllbnQscmVkaXJlY3QiIGFuZCAicGVyZm9ybSxzZXJ2ZXIscmVkaXJl
Y3QiIHNpZ25hbHMuCi0gKi8KLXN0cnVjdCBfRXdrX1ZpZXdfUmVkaXJlY3Rpb25fRGF0YSB7Ci0g
ICAgY29uc3QgY2hhciAqc291cmNlX3VybDsgIC8qKjwgUmVkaXJlY3Qgc291cmNlIFVSTC4gKi8K
LSAgICBjb25zdCBjaGFyICpkZXN0aW5hdGlvbl91cmw7ICAvKio8IFJlZGlyZWN0IGRlc3RpbmF0
aW9uIFVSTC4gKi8gCi19OwotCi0vLy8gQ3JlYXRlcyBhIHR5cGUgbmFtZSBmb3IgQGEgX0V3a19D
b2xvci4KLXR5cGVkZWYgc3RydWN0IF9Fd2tfQ29sb3IgRXdrX0NvbG9yOwotLy8vIFJlcHJlc2Vu
dHMgYSBjb2xvciB1c2luZyB0aGUgUkdCQSBmb3JtYXQuCi1zdHJ1Y3QgX0V3a19Db2xvciB7Ci0g
ICAgdW5zaWduZWQgY2hhciByOyAvKio8IFJlZCBjaGFubmVsLiAqLwotICAgIHVuc2lnbmVkIGNo
YXIgZzsgLyoqPCBHcmVlbiBjaGFubmVsLiAqLwotICAgIHVuc2lnbmVkIGNoYXIgYjsgLyoqPCBC
bHVlIGNoYW5uZWwuICovCi0gICAgdW5zaWduZWQgY2hhciBhOyAvKio8IEFscGhhIGNoYW5uZWwu
ICovCi19OwotCi0vLy8gRGVmaW5lcyB0aGUgaGFuZGxlciBzdGF0ZXMuCi1lbnVtIF9Fd2tfQ3Vz
dG9tX0hhbmRsZXJzX1N0YXRlIHsKLSAgICBFV0tfQ1VTVE9NX0hBTkRMRVJTX05FVywKLSAgICBF
V0tfQ1VTVE9NX0hBTkRMRVJTX1JFR0lTVEVSRUQsCi0gICAgRVdLX0NVU1RPTV9IQU5ETEVSU19E
RUNMSU5FRAotfTsKLS8vLyBDcmVhdGVzIGEgdHlwZSBuYW1lIGZvciBAYSBfRXdrX0N1c3RvbV9I
YW5kbGVyc19TdGF0ZS4KLXR5cGVkZWYgZW51bSBfRXdrX0N1c3RvbV9IYW5kbGVyc19TdGF0ZSBF
d2tfQ3VzdG9tX0hhbmRsZXJzX1N0YXRlOwotCi0vLy8gQ3JlYXRlcyBhIHR5cGUgbmFtZSBmb3Ig
QGEgX0V3a19DdXN0b21fSGFuZGxlcl9EYXRhLgotdHlwZWRlZiBzdHJ1Y3QgX0V3a19DdXN0b21f
SGFuZGxlcl9EYXRhIEV3a19DdXN0b21fSGFuZGxlcl9EYXRhOwotLy8vIENvbnRhaW5zIHRoZSB0
YXJnZXQgc2NoZW1lIGFuZCB0aGUgdXJsIHdoaWNoIHRha2UgY2FyZSBvZiB0aGUgdGFyZ2V0Lgot
c3RydWN0IF9Fd2tfQ3VzdG9tX0hhbmRsZXJfRGF0YSB7Ci0gICAgRXZhc19PYmplY3QgKmV3a1Zp
ZXc7IC8qKjwgUmVmZXJlbmNlIHRvIHRoZSB2aWV3IG9iamVjdC4gKi8KLSAgICBjb25zdCBjaGFy
ICpzY2hlbWU7IC8qKjwgUmVmZXJlbmNlIHRvIHRoZSBzY2hlbWUgdGhhdCB3aWxsIGJlIGhhbmRs
ZWQuIChlZy4gImFwcGxpY2F0aW9uL3gtc291cCIpICovCi0gICAgY29uc3QgY2hhciAqYmFzZV91
cmw7IC8qKjwgUmVmZXJlbmNlIHRvIHRoZSByZXNvbHZlZCB1cmwgaWYgdGhlIHVybCBpcyByZWxh
dGl2ZSB1cmwuIChlZy4gImh0dHBzOi8vd3d3LmV4YW1wbGUuY29tLyIpICovCi0gICAgY29uc3Qg
Y2hhciAqdXJsOyAvKio8IFJlZmVyZW5jZSB0byB0aGUgdXJsIHdoaWNoIHdpbGwgaGFuZGxlIHRo
ZSBnaXZlbiBwcm90b2NvbC4gKGVnLiAic291cD91cmw9JXMiKSAqLwotICAgIGNvbnN0IGNoYXIg
KnRpdGxlOyAvKio8IFJlZmVyZW5jZSB0byB0aGUgZGVzY3JpcHRpdmUgdGl0bGUgb2YgdGhlIGhh
bmRsZXIuIChlZy4gIlNvdXBXZWIiKSAqLwotICAgIEV3a19DdXN0b21fSGFuZGxlcnNfU3RhdGUg
cmVzdWx0OyAvKio8IFJlc3VsdCBvZiB0aGUgcXVlcnkgdGhhdCB0aGUgcHJvdG9jb2wgaGFuZGxl
ciBpcyByZWdpc3RlcmVkIG9yIG5vdC4gKi8KLX07Ci0KLS8qKgotICogQGJyaWVmIENvbnRhaW5z
IGFuIGludGVybmFsIFZpZXcgZGF0YS4KLSAqCi0gKiBJdCBpcyB0byBiZSBjb25zaWRlcmVkIHBy
aXZhdGUgYnkgdXNlcnMsIGJ1dCBtYXkgYmUgZXh0ZW5kZWQgb3IKLSAqIGNoYW5nZWQgYnkgc3Vi
LWNsYXNzZXMgKHRoYXQncyB3aHkgaXQncyBpbiB0aGUgcHVibGljIGhlYWRlciBmaWxlKS4KLSAq
Lwotc3RydWN0IF9Fd2tfVmlld19TbWFydF9EYXRhIHsKLSAgICBFdmFzX09iamVjdF9TbWFydF9D
bGlwcGVkX0RhdGEgYmFzZTsKLSAgICBjb25zdCBFd2tfVmlld19TbWFydF9DbGFzcyAqYXBpOyAv
Kio8IFJlZmVyZW5jZSB0byBjYXN0ZWQgY2xhc3MgaW5zdGFuY2UuICovCi0gICAgRXZhc19PYmpl
Y3QgKnNlbGY7IC8qKjwgUmVmZXJlbmNlIHRvIG93bmVyIG9iamVjdC4gKi8KLSAgICBFdmFzX09i
amVjdCAqbWFpbl9mcmFtZTsgLyoqPCBSZWZlcmVuY2UgdG8gbWFpbiBmcmFtZSBvYmplY3QuICov
Ci0gICAgRXZhc19PYmplY3QgKmltYWdlOyAvKio8IFJlZmVyZW5jZSB0byBldmFzX29iamVjdF9p
bWFnZSBmb3IgZHJhd2luZyB3ZWIgY29udGVudCAqLwotICAgIEV2YXNfT2JqZWN0ICpldmVudHNf
cmVjdDsgLyoqPCBUaGUgcmVjdGFuZ2xlIHRoYXQgcmVjZWl2ZXMgbW91c2UgZXZlbnRzLiAqLwot
ICAgIEV3a19WaWV3X1ByaXZhdGVfRGF0YSAqX3ByaXY7IC8qKjwgU2hvdWxkIEBiIG5ldmVyIGJl
IGFjY2Vzc2VkLCBjKysgc3R1ZmYuICovCi0gICAgc3RydWN0IHsKLSAgICAgICAgRXZhc19Db29y
ZCB4LCB5LCB3LCBoOwotICAgIH0gdmlldzsgLyoqPCBDb250YWlucyB0aGUgcG9zaXRpb24gYW5k
IHNpemUgb2YgbGFzdCB1c2VkIHZpZXdwb3J0LiAqLwotICAgIHN0cnVjdCB7Ci0gICAgICAgIHN0
cnVjdCB7Ci0gICAgICAgICAgICBmbG9hdCBzdGFydDsKLSAgICAgICAgICAgIGZsb2F0IGVuZDsK
LSAgICAgICAgICAgIGZsb2F0IGN1cnJlbnQ7IC8qKjwgaWYgPiAwLjAsIHRoZW4gZG9pbmcgYW5p
bWF0ZWQgem9vbS4gKi8KLSAgICAgICAgfSB6b29tOwotICAgIH0gYW5pbWF0ZWRfem9vbTsKLSAg
ICBzdHJ1Y3QgewotICAgICAgICB1bnNpZ25lZCBjaGFyIHIsIGcsIGIsIGE7Ci0gICAgfSBiZ19j
b2xvcjsgLyoqPCBLZWVwcyB0aGUgYmFja2dyb3VuZCBjb2xvci4gKi8KLSAgICBFaW5hX0Jvb2wg
em9vbV93ZWFrX3Ntb290aF9zY2FsZToxOwotICAgIHN0cnVjdCB7Ci0gICAgICAgIEVpbmFfQm9v
bCBhbnk6MTsKLSAgICAgICAgRWluYV9Cb29sIHNpemU6MTsKLSAgICAgICAgRWluYV9Cb29sIHBv
c2l0aW9uOjE7Ci0gICAgICAgIEVpbmFfQm9vbCBmcmFtZV9yZWN0OjE7Ci0gICAgfSBjaGFuZ2Vk
OyAvKio8IEtlZXBzIHdoYXQgY2hhbmdlZCBzaW5jZSBsYXN0IHNtYXJ0X2NhbGN1bGF0ZS4gKi8K
LSAgICBzdHJ1Y3QgewotICAgICAgICBFdmFzX0Nvb3JkIHgsIHk7Ci0gICAgICAgIGZsb2F0IHpv
b207Ci0gICAgfSBwcmV2aW91c1ZpZXc7Ci19OwotCi0vLy8gRGVmaW5lcyB0aGUgbW9kZXMgb2Yg
dmlldy4KLWVudW0gX0V3a19WaWV3X01vZGUgewotICAgIEVXS19WSUVXX01PREVfSU5WQUxJRCwK
LSAgICBFV0tfVklFV19NT0RFX1dJTkRPV0VELAotICAgIEVXS19WSUVXX01PREVfRkxPQVRJTkcs
Ci0gICAgRVdLX1ZJRVdfTU9ERV9GVUxMU0NSRUVOLAotICAgIEVXS19WSUVXX01PREVfTUFYSU1J
WkVELAotICAgIEVXS19WSUVXX01PREVfTUlOSU1JWkVECi19OwotLy8vIENyZWF0ZXMgYSB0eXBl
IG5hbWUgZm9yIEBhIF9Fd2tfVmlld19Nb2RlLgotdHlwZWRlZiBlbnVtIF9Fd2tfVmlld19Nb2Rl
IEV3a19WaWV3X01vZGU7Ci0KLS8vLyBEZWZpbmVzIHRoZSBmb250IGZhbWlsaWVzLgotZW51bSBf
RXdrX0ZvbnRfRmFtaWx5IHsKLSAgICBFV0tfRk9OVF9GQU1JTFlfU1RBTkRBUkQgPSAwLAotICAg
IEVXS19GT05UX0ZBTUlMWV9DVVJTSVZFLAotICAgIEVXS19GT05UX0ZBTUlMWV9GQU5UQVNZLAot
ICAgIEVXS19GT05UX0ZBTUlMWV9NT05PU1BBQ0UsCi0gICAgRVdLX0ZPTlRfRkFNSUxZX1NFUklG
LAotICAgIEVXS19GT05UX0ZBTUlMWV9TQU5TX1NFUklGCi19OwotLy8vIENyZWF0ZXMgYSB0eXBl
IG5hbWUgZm9yIEBhIF9Fd2tfRm9udF9GYW1pbHkuCi10eXBlZGVmIGVudW0gX0V3a19Gb250X0Zh
bWlseSBFd2tfRm9udF9GYW1pbHk7Ci0KLS8vLyBDb250YWlucyBjb21tYW5kcyB0byBleGVjdXRl
LgotZW51bSBfRXdrX0VkaXRvcl9Db21tYW5kIHsKLSAgICBFV0tfRURJVE9SX0NPTU1BTkRfTk9O
RSA9IC0xLAotICAgIEVXS19FRElUT1JfQ09NTUFORF9VTkRPID0gMCwKLSAgICBFV0tfRURJVE9S
X0NPTU1BTkRfUkVETywKLSAgICBFV0tfRURJVE9SX0NPTU1BTkRfVE9HR0xFX0JPTEQsCi0gICAg
RVdLX0VESVRPUl9DT01NQU5EX1RPR0dMRV9JVEFMSUMsCi0gICAgRVdLX0VESVRPUl9DT01NQU5E
X1RPR0dMRV9VTkRFUkxJTkUsCi0gICAgRVdLX0VESVRPUl9DT01NQU5EX1RPR0dMRV9TVFJJS0VU
SFJPVUdILAotICAgIEVXS19FRElUT1JfQ09NTUFORF9UT0dHTEVfU1VCU0NSSVBULAotICAgIEVX
S19FRElUT1JfQ09NTUFORF9UT0dHTEVfU1VQRVJTQ1JJUFQsCi0gICAgRVdLX0VESVRPUl9DT01N
QU5EX0lOREVOVCwKLSAgICBFV0tfRURJVE9SX0NPTU1BTkRfT1VUREVOVCwKLSAgICBFV0tfRURJ
VE9SX0NPTU1BTkRfSU5TRVJUX09SREVSRURMSVNULAotICAgIEVXS19FRElUT1JfQ09NTUFORF9J
TlNFUlRfVU5PUkRFUkVETElTVCwKLSAgICBFV0tfRURJVE9SX0NPTU1BTkRfSU5TRVJUX0lNQUdF
LAotICAgIEVXS19FRElUT1JfQ09NTUFORF9JTlNFUlRfVEVYVCwKLSAgICBFV0tfRURJVE9SX0NP
TU1BTkRfSU5TRVJUX0hUTUwsCi0gICAgRVdLX0VESVRPUl9DT01NQU5EX0lOU0VSVF9QQVJBR1JB
UEgsCi0gICAgRVdLX0VESVRPUl9DT01NQU5EX0lOU0VSVF9QQVJBR1JBUEhfU0VQQVJBVE9SLAot
ICAgIEVXS19FRElUT1JfQ09NTUFORF9JTlNFUlRfTElORV9TRVBBUkFUT1IsCi0gICAgRVdLX0VE
SVRPUl9DT01NQU5EX0JBQ0tfQ09MT1IsCi0gICAgRVdLX0VESVRPUl9DT01NQU5EX0ZPUkVfQ09M
T1IsCi0gICAgRVdLX0VESVRPUl9DT01NQU5EX0hJTElURV9DT0xPUiwKLSAgICBFV0tfRURJVE9S
X0NPTU1BTkRfRk9OVF9TSVpFLAotICAgIEVXS19FRElUT1JfQ09NTUFORF9BTElHTl9DRU5URVIs
Ci0gICAgRVdLX0VESVRPUl9DT01NQU5EX0FMSUdOX0pVU1RJRklFRCwKLSAgICBFV0tfRURJVE9S
X0NPTU1BTkRfQUxJR05fTEVGVCwKLSAgICBFV0tfRURJVE9SX0NPTU1BTkRfQUxJR05fUklHSFQs
Ci0gICAgRVdLX0VESVRPUl9DT01NQU5EX01PVkVfVE9fTkVYVF9DSEFSLAotICAgIEVXS19FRElU
T1JfQ09NTUFORF9NT1ZFX1RPX1BSRVZJT1VTX0NIQVIsCi0gICAgRVdLX0VESVRPUl9DT01NQU5E
X01PVkVfVE9fTkVYVF9XT1JELAotICAgIEVXS19FRElUT1JfQ09NTUFORF9NT1ZFX1RPX1BSRVZJ
T1VTX1dPUkQsCi0gICAgRVdLX0VESVRPUl9DT01NQU5EX01PVkVfVE9fTkVYVF9MSU5FLAotICAg
IEVXS19FRElUT1JfQ09NTUFORF9NT1ZFX1RPX1BSRVZJT1VTX0xJTkUsCi0gICAgRVdLX0VESVRP
Ul9DT01NQU5EX01PVkVfVE9fQkVHSU5OSU5HX09GX0xJTkUsCi0gICAgRVdLX0VESVRPUl9DT01N
QU5EX01PVkVfVE9fRU5EX09GX0xJTkUsCi0gICAgRVdLX0VESVRPUl9DT01NQU5EX01PVkVfVE9f
QkVHSU5OSU5HX09GX1BBUkFHUkFQSCwKLSAgICBFV0tfRURJVE9SX0NPTU1BTkRfTU9WRV9UT19F
TkRfT0ZfUEFSQUdSQVBILAotICAgIEVXS19FRElUT1JfQ09NTUFORF9NT1ZFX1RPX0JFR0lOTklO
R19PRl9ET0NVTUVOVCwKLSAgICBFV0tfRURJVE9SX0NPTU1BTkRfTU9WRV9UT19FTkRfT0ZfRE9D
VU1FTlQsCi0gICAgRVdLX0VESVRPUl9DT01NQU5EX1NFTEVDVF9OT05FLAotICAgIEVXS19FRElU
T1JfQ09NTUFORF9TRUxFQ1RfQUxMLAotICAgIEVXS19FRElUT1JfQ09NTUFORF9TRUxFQ1RfUEFS
QUdSQVBILAotICAgIEVXS19FRElUT1JfQ09NTUFORF9TRUxFQ1RfU0VOVEVOQ0UsCi0gICAgRVdL
X0VESVRPUl9DT01NQU5EX1NFTEVDVF9MSU5FLAotICAgIEVXS19FRElUT1JfQ09NTUFORF9TRUxF
Q1RfV09SRCwKLSAgICBFV0tfRURJVE9SX0NPTU1BTkRfU0VMRUNUX05FWFRfQ0hBUiwKLSAgICBF
V0tfRURJVE9SX0NPTU1BTkRfU0VMRUNUX1BSRVZJT1VTX0NIQVIsCi0gICAgRVdLX0VESVRPUl9D
T01NQU5EX1NFTEVDVF9ORVhUX1dPUkQsCi0gICAgRVdLX0VESVRPUl9DT01NQU5EX1NFTEVDVF9Q
UkVWSU9VU19XT1JELAotICAgIEVXS19FRElUT1JfQ09NTUFORF9TRUxFQ1RfTkVYVF9MSU5FLAot
ICAgIEVXS19FRElUT1JfQ09NTUFORF9TRUxFQ1RfUFJFVklPVVNfTElORSwKLSAgICBFV0tfRURJ
VE9SX0NPTU1BTkRfU0VMRUNUX1NUQVJUX09GX0xJTkUsCi0gICAgRVdLX0VESVRPUl9DT01NQU5E
X1NFTEVDVF9FTkRfT0ZfTElORSwKLSAgICBFV0tfRURJVE9SX0NPTU1BTkRfU0VMRUNUX1NUQVJU
X09GX1BBUkFHUkFQSCwKLSAgICBFV0tfRURJVE9SX0NPTU1BTkRfU0VMRUNUX0VORF9PRl9QQVJB
R1JBUEgsCi0gICAgRVdLX0VESVRPUl9DT01NQU5EX1NFTEVDVF9TVEFSVF9PRl9ET0NVTUVOVCwK
LSAgICBFV0tfRURJVE9SX0NPTU1BTkRfU0VMRUNUX0VORF9PRl9ET0NVTUVOVCwKLSAgICBFV0tf
RURJVE9SX0NPTU1BTkRfREVMRVRFX1dPUkRfQkFDS1dBUkQsCi0gICAgRVdLX0VESVRPUl9DT01N
QU5EX0RFTEVURV9XT1JEX0ZPUldBUkQKLX07Ci0KLS8vLyBDcmVhdGVzIGEgdHlwZSBuYW1lIGZv
ciBAYSBfRXdrX0VkaXRvcl9Db21tYW5kLgotdHlwZWRlZiBlbnVtIF9Fd2tfRWRpdG9yX0NvbW1h
bmQgRXdrX0VkaXRvcl9Db21tYW5kOwotCi0vKioKLSAqIFNldHMgdGhlIHNtYXJ0IGNsYXNzIGFw
aSwgZW5hYmxpbmcgdmlldyB0byBiZSBpbmhlcml0ZWQuCi0gKgotICogQHBhcmFtIGFwaSBjbGFz
cyBkZWZpbml0aW9uIHRvIHNldCwgYWxsIG1lbWJlcnMgd2l0aCB0aGUKLSAqICAgICAgICBleGNl
cHRpb24gb2YgQGEgRXZhc19TbWFydF9DbGFzcy0+ZGF0YSBtYXkgYmUgb3ZlcnJpZGRlbiwgbXVz
dAotICogICAgICAgIEBiIG5vdCBiZSBAYyBOVUxMCi0gKgotICogQG5vdGUgQGEgRXZhc19TbWFy
dF9DbGFzcy0+ZGF0YSBpcyB1c2VkIHRvIGltcGxlbWVudCB0eXBlIGNoZWNraW5nIGFuZAotICog
ICAgICAgaXMgbm90IHN1cHBvc2VkIHRvIGJlIGNoYW5nZWQvb3ZlcnJpZGRlbi4gSWYgeW91IG5l
ZWQgZXh0cmEKLSAqICAgICAgIGRhdGEgZm9yIHlvdXIgc21hcnQgY2xhc3MgdG8gd29yaywganVz
dCBleHRlbmQKLSAqICAgICAgIEV3a19WaWV3X1NtYXJ0X0NsYXNzIGluc3RlYWQuCi0gKgotICog
QHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcyBvciBAYyBFSU5BX0ZBTFNFIG9uIGZhaWx1
cmUgKHByb2JhYmx5Ci0gKiAgICAgICAgIHZlcnNpb24gbWlzbWF0Y2gpCi0gKi8KLUVBUEkgRWlu
YV9Cb29sICAgIGV3a192aWV3X3NtYXJ0X3NldChFd2tfVmlld19TbWFydF9DbGFzcyAqYXBpKTsK
LQotLyoqCi0gKiBDcmVhdGVzIGEgbmV3IEVGTCBXZWJLaXQgVmlldyBvYmplY3QuCi0gKgotICog
VmlldyBvYmplY3RzIGFyZSB0aGUgcmVjb21tZW5kZWQgd2F5IHRvIGRlYWwgd2l0aCBFRkwgV2Vi
S2l0IGFzIGl0Ci0gKiBhYnN0cmFjdHMgdGhlIGNvbXBsZXggcGllY2VzIG9mIHRoZSBwcm9jZXNz
LgotICoKLSAqIEVhY2ggdmlldyBpcyBjb21wb3NlZCBieSBhIHNldCBvZiBmcmFtZXMuIFRoZSBz
ZXQgaGFzIGF0IGxlYXN0IG9uZQotICogZnJhbWUsIGNhbGxlZCAnbWFpbl9mcmFtZScuIFNlZSBl
d2tfdmlld19mcmFtZV9tYWluX2dldCgpIGFuZAotICogZXdrX3ZpZXdfZnJhbWVfZm9jdXNlZF9n
ZXQoKS4KLSAqCi0gKiBAcGFyYW0gZSBjYW52YXMgb2JqZWN0IHdoZXJlIHRvIGNyZWF0ZSB0aGUg
dmlldyBvYmplY3QKLSAqCi0gKiBAcmV0dXJuIHZpZXcgb2JqZWN0IG9uIHN1Y2Nlc3Mgb3IgQGMg
TlVMTCBvbiBmYWlsdXJlCi0gKgotICogQHNlZSBld2tfdmlld191cmlfc2V0KCkKLSAqLwotRUFQ
SSBFdmFzX09iamVjdCAqZXdrX3ZpZXdfYWRkKEV2YXMgKmUpOwotCi0vKioKLSAqIFNldHMgYSBm
aXhlZCBsYXlvdXQgc2l6ZSB0byBiZSB1c2VkLCBkaXNzb2NpYXRpbmcgaXQgZnJvbSB2aWV3cG9y
dCBzaXplLgotICoKLSAqIFNldHRpbmcgYSB3aWR0aCBkaWZmZXJlbnQgdGhhbiB6ZXJvIGVuYWJs
ZXMgZml4ZWQgbGF5b3V0IG9uIHRoYXQKLSAqIHNpemUuIEl0J3MgYXV0b21hdGljYWxseSBzY2Fs
ZWQgYmFzZWQgb24gem9vbSwgYnV0IHdpbGwgbm90IGNoYW5nZQotICogaWYgdmlld3BvcnQgY2hh
bmdlcy4KLSAqCi0gKiBTZXR0aW5nIGJvdGggQGEgdyBhbmQgQGEgaCB0byB6ZXJvIHdpbGwgZGlz
YWJsZSBmaXhlZCBsYXlvdXQuCi0gKgotICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gY2hhbmdl
IGZpeGVkIGxheW91dAotICogQHBhcmFtIHcgZml4ZWQgd2lkdGggdG8gdXNlLCB0aGlzIHNpemUg
d2lsbCBiZSBhdXRvbWF0aWNhbGx5IHNjYWxlZAotICogICAgICAgIGJhc2VkIG9uIHpvb20gbGV2
ZWwKLSAqIEBwYXJhbSBoIGZpeGVkIGhlaWdodCB0byB1c2UsIHRoaXMgc2l6ZSB3aWxsIGJlIGF1
dG9tYXRpY2FsbHkgc2NhbGVkCi0gKiAgICAgICAgYmFzZWQgb24gem9vbSBsZXZlbAotICovCi1F
QVBJIHZvaWQgICAgICAgICBld2tfdmlld19maXhlZF9sYXlvdXRfc2l6ZV9zZXQoRXZhc19PYmpl
Y3QgKm8sIEV2YXNfQ29vcmQgdywgRXZhc19Db29yZCBoKTsKLQotLyoqCi0gKiBHZXRzIGZpeGVk
IGxheW91dCBzaXplLgotICoKLSAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIGdldCBmaXhlZCBs
YXlvdXQgc2l6ZQotICogQHBhcmFtIHcgdGhlIHBvaW50ZXIgdG8gc3RvcmUgZml4ZWQgd2lkdGgs
IHJldHVybnMgQGMgTlVMTCBvbiBmYWlsdXJlIG9yIGlmIHRoZXJlIGlzIG5vCi0gKiAgICAgICAg
Zml4ZWQgbGF5b3V0IGluIHVzZQotICogQHBhcmFtIGggdGhlIHBvaW50ZXIgdG8gc3RvcmUgZml4
ZWQgaGVpZ2h0LCByZXR1cm5zIEBjIE5VTEwgb24gZmFpbHVyZSBvciBpZiB0aGVyZSBpcyBubwot
ICogICAgICAgIGZpeGVkIGxheW91dCBpbiB1c2UKLSAqLwotRUFQSSB2b2lkICAgICAgICAgZXdr
X3ZpZXdfZml4ZWRfbGF5b3V0X3NpemVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvLCBFdmFzX0Nv
b3JkICp3LCBFdmFzX0Nvb3JkICpoKTsKLQotLyoqCi0gKiBTZXRzIHRoZSB0aGVtZSBwYXRoIHRo
YXQgd2lsbCBiZSB1c2VkIGJ5IHRoaXMgdmlldy4KLSAqCi0gKiBUaGlzIGFsc28gc2V0cyB0aGUg
dGhlbWUgb24gdGhlIG1haW4gZnJhbWUuIEFzIGZyYW1lcyBpbmhlcml0IHRoZW1lCi0gKiBmcm9t
IHRoZWlyIHBhcmVudCwgdGhpcyB3aWxsIGhhdmUgYWxsIGZyYW1lcyB3aXRoIHVuc2V0IHRoZW1l
IHRvCi0gKiB1c2UgdGhpcyBvbmUuCi0gKgotICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gY2hh
bmdlIHRoZW1lCi0gKiBAcGFyYW0gcGF0aCB0aGVtZSBwYXRoCi0gKi8KLUVBUEkgdm9pZCAgICAg
ICAgIGV3a192aWV3X3RoZW1lX3NldChFdmFzX09iamVjdCAqbywgY29uc3QgY2hhciAqcGF0aCk7
Ci0KLS8qKgotICogR2V0cyB0aGUgdGhlbWUgc2V0IG9uIHRoaXMgdmlldy4KLSAqCi0gKiBUaGlz
IHJldHVybnMgdGhlIHZhbHVlIHNldCBieSBld2tfdmlld190aGVtZV9zZXQoKS4KLSAqCi0gKiBA
cGFyYW0gbyB2aWV3IG9iamVjdCB0byBnZXQgdGhlbWUgcGF0aAotICoKLSAqIEByZXR1cm4gdGhl
IHRoZW1lIHBhdGgsIG1heSBiZSBAYyBOVUxMIGlmIG5vdCBzZXQKLSAqLwotRUFQSSBjb25zdCBj
aGFyICAqZXdrX3ZpZXdfdGhlbWVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKLQotLyoqCi0g
KiBHZXRzIHRoZSBvYmplY3QgdGhhdCByZXByZXNlbnRzIHRoZSBtYWluIGZyYW1lLgotICoKLSAq
IEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIGdldCBtYWluIGZyYW1lCi0gKgotICogQHJldHVybiBm
cmFtZSBzbWFydCBvYmplY3Qgb3IgQGMgTlVMTCBpZiBub25lIHlldAotICovCi1FQVBJIEV2YXNf
T2JqZWN0ICpld2tfdmlld19mcmFtZV9tYWluX2dldChjb25zdCBFdmFzX09iamVjdCAqbyk7Ci0K
LS8qKgotICogR2V0cyB0aGUgY3VycmVudGx5IGZvY3VzZWQgZnJhbWUgb2JqZWN0LgotICoKLSAq
IEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIGdldCBmb2N1c2VkIGZyYW1lCi0gKgotICogQHJldHVy
biBmcmFtZSBzbWFydCBvYmplY3Qgb3IgQGMgTlVMTCBpZiBub25lIHlldAotICovCi1FQVBJIEV2
YXNfT2JqZWN0ICpld2tfdmlld19mcmFtZV9mb2N1c2VkX2dldChjb25zdCBFdmFzX09iamVjdCAq
byk7Ci0KLS8qKgotICogQXNrcyB0aGUgbWFpbiBmcmFtZSB0byBsb2FkIHRoZSBnaXZlbiBVUkku
Ci0gKgotICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gbG9hZCBAYSB1cmkKLSAqIEBwYXJhbSB1
cmkgdW5pZm9ybSByZXNvdXJjZSBpZGVudGlmaWVyIHRvIGxvYWQKLSAqCi0gKiBAcmV0dXJuIEBj
IEVJTkFfVFJVRSBvbiBzdWNjZXNzZnVsIHJlcXVlc3Qgb3IgQGMgRUlOQV9GQUxTRSBvbiBmYWls
dXJlCi0gKi8KLUVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3VyaV9zZXQoRXZhc19PYmplY3Qg
Km8sIGNvbnN0IGNoYXIgKnVyaSk7Ci0KLS8qKgotICogR2V0cyB0aGUgY3VycmVudCB1cmkgbG9h
ZGVkIGJ5IG1haW4gZnJhbWUuCi0gKgotICogSXQgcmV0dXJucyBhIGludGVybmFsIHN0cmluZyBh
bmQgc2hvdWxkIG5vdAotICogYmUgbW9kaWZpZWQuIFRoZSBzdHJpbmcgaXMgZ3VhcmFudGVlZCB0
byBiZSBzdHJpbmdzaGFyZWQuCi0gKgotICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gZ2V0IGN1
cnJlbnQgdXJpLgotICoKLSAqIEByZXR1cm4gY3VycmVudCB1cmkgb24gc3VjY2VzcyBvciBAYyBO
VUxMIG9uIGZhaWx1cmUKLSAqLwotRUFQSSBjb25zdCBjaGFyICAqZXdrX3ZpZXdfdXJpX2dldChj
b25zdCBFdmFzX09iamVjdCAqbyk7Ci0KLS8qKgotICogR2V0cyB0aGUgY3VycmVudCB0aXRsZSBv
ZiB0aGUgbWFpbiBmcmFtZS4KLSAqCi0gKiBJdCByZXR1cm5zIGEgaW50ZXJuYWwgc3RyaW5nIGFu
ZCBzaG91bGQgbm90Ci0gKiBiZSBtb2RpZmllZC4gVGhlIHN0cmluZyBpcyBndWFyYW50ZWVkIHRv
IGJlIHN0cmluZ3NoYXJlZC4KLSAqCi0gKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBnZXQgY3Vy
cmVudCB0aXRsZQotICoKLSAqIEByZXR1cm4gY3VycmVudCB0aXRsZSBvbiBzdWNjZXNzIG9yIEBj
IE5VTEwgb24gZmFpbHVyZQotICovCi1FQVBJIGNvbnN0IEV3a19UZXh0X1dpdGhfRGlyZWN0aW9u
ICAqZXdrX3ZpZXdfdGl0bGVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKLQotLyoqCi0gKiBR
dWVyaWVzIGlmIHRoZSBtYWluIGZyYW1lIGlzIGVkaXRhYmxlLgotICoKLSAqIEBwYXJhbSBvIHZp
ZXcgb2JqZWN0IHRvIHF1ZXJ5IGVkaXRhYmxlIHN0YXRlCi0gKgotICogQHJldHVybiBAYyBFSU5B
X1RSVUUgaWYgdGhlIG1haW4gZnJhbWUgaXMgZWRpdGFibGUsIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3
aXNlCi0gKi8KLUVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X2VkaXRhYmxlX2dldChjb25zdCBF
dmFzX09iamVjdCAqbyk7Ci0KLS8qKgotICogU2V0cyBpZiBtYWluIGZyYW1lIGlzIGVkaXRhYmxl
LgotICoKLSAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIHNldCBlZGl0YWJsZSBzdGF0ZQotICog
QHBhcmFtIGVkaXRhYmxlIGEgbmV3IHN0YXRlIHRvIHNldAotICoKLSAqIEByZXR1cm4gQGMgRUlO
QV9UUlVFIG9uIHN1Y2Nlc3Mgb3IgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UKLSAqLwotRUFQSSBF
aW5hX0Jvb2wgICAgZXdrX3ZpZXdfZWRpdGFibGVfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jv
b2wgZWRpdGFibGUpOwotCi0vKioKLSAqIFNldHMgdGhlIGJhY2tncm91bmQgY29sb3IgYW5kIHRy
YW5zcGFyZW5jeSBvZiB0aGUgdmlldy4KLSAqCi0gKiBKdXN0IGFzIGluIEV2YXMsIGNvbG9ycyBh
cmUgcHJlLW11bHRpcGxpZWQsIHNvIDUwJSByZWQgaXMKLSAqICgxMjgsIDAsIDAsIDEyOCkgYW5k
IG5vdCAoMjU1LCAwLCAwLCAxMjgpIQotICoKLSAqIEB3YXJuaW5nIFdhdGNoIG91dCBwZXJmb3Jt
YW5jZSBpc3N1ZXMgd2l0aCB0cmFuc3BhcmVuY3khIE9iamVjdAotICogICAgICAgICAgd2lsbCBi
ZSBoYW5kbGVkIGFzIHRyYW5zcGFyZW50IGltYWdlIGJ5IGV2YXMgZXZlbiBpZiB0aGUKLSAqICAg
ICAgICAgIHdlYnBhZ2Ugc3BlY2lmaWVzIGEgYmFja2dyb3VuZCBjb2xvci4gVGhhdCBtZWFuIHlv
dSdsbCBwYXkKLSAqICAgICAgICAgIGEgcHJpY2UgZXZlbiBpZiBpdCdzIG5vdCByZWFsbHkgdHJh
bnNwYXJlbnQsIHRodXMKLSAqICAgICAgICAgIHNjcm9sbGluZy9wYW5uaW5nIGFuZCB6b29taW5n
IHdpbGwgYmUgbGlrZWx5IHNsb3dlciB0aGFuCi0gKiAgICAgICAgICBpZiB0cmFuc3BhcmVuY3kg
aXMgb2ZmLgotICoKLSAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIGNoYW5nZSB0aGUgYmFja2dy
b3VuZCBjb2xvcgotICogQHBhcmFtIHIgcmVkIGNvbG9yIGNvbXBvbmVudAotICogQHBhcmFtIGcg
Z3JlZW4gY29sb3IgY29tcG9uZW50Ci0gKiBAcGFyYW0gYiBibHVlIGNvbG9yIGNvbXBvbmVudAot
ICogQHBhcmFtIGEgdHJhbnNwYXJlbmN5Ci0gKi8KLUVBUEkgdm9pZCAgICAgICAgIGV3a192aWV3
X2JnX2NvbG9yX3NldChFdmFzX09iamVjdCAqbywgaW50IHIsIGludCBnLCBpbnQgYiwgaW50IGEp
OwotCi0vKioKLSAqIEdldHMgdGhlIGJhY2tncm91bmQgY29sb3Igb2YgdGhlIHZpZXcuCi0gKgot
ICogSnVzdCBhcyBpbiBFdmFzLCBjb2xvcnMgYXJlIHByZS1tdWx0aXBsaWVkLCBzbyA1MCUgcmVk
IGlzCi0gKiAoMTI4LCAwLCAwLCAxMjgpIGFuZCBub3QgKDI1NSwgMCwgMCwgMTI4KSEKLSAqCi0g
KiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBnZXQgdGhlIGJhY2tncm91bmQgY29sb3IKLSAqIEBw
YXJhbSByIHRoZSBwb2ludGVyIHRvIHN0b3JlIHJlZCBjb2xvciBjb21wb25lbnQKLSAqIEBwYXJh
bSBnIHRoZSBwb2ludGVyIHRvIHN0b3JlIGdyZWVuIGNvbG9yIGNvbXBvbmVudAotICogQHBhcmFt
IGIgdGhlIHBvaW50ZXIgdG8gc3RvcmUgYmx1ZSBjb2xvciBjb21wb25lbnQKLSAqIEBwYXJhbSBh
IHRoZSBwb2ludGVyIHRvIHN0b3JlIGFscGhhIHZhbHVlCi0gKi8KLUVBUEkgdm9pZCAgICAgICAg
IGV3a192aWV3X2JnX2NvbG9yX2dldChjb25zdCBFdmFzX09iamVjdCAqbywgaW50ICpyLCBpbnQg
KmcsIGludCAqYiwgaW50ICphKTsKLQotLyoqCi0gKiBHZXRzIHRoZSBjb3B5IG9mIHRoZSBzZWxl
Y3RlZCB0ZXh0LgotICoKLSAqIFRoZSByZXR1cm5lZCBzdHJpbmcgQGIgc2hvdWxkIGJlIGZyZWVk
IGJ5IGVpbmFfc3RyaW5nc2hhcmVfZGVsKCkgYWZ0ZXIgdXNlLgotICoKLSAqIEBwYXJhbSBvIHZp
ZXcgb2JqZWN0IHRvIGdldCBzZWxlY3RlZCB0ZXh0Ci0gKgotICogQHJldHVybiBhIG5ld2x5IGFs
bG9jYXRlZCBzdHJpbmcgb3IgQGMgTlVMTCBpZiBub3RoaW5nIGlzIHNlbGVjdGVkIG9yIG9uIGZh
aWx1cmUKLSAqLwotRUFQSSBjb25zdCBjaGFyICAgICAgICAqZXdrX3ZpZXdfc2VsZWN0aW9uX2dl
dChjb25zdCBFdmFzX09iamVjdCAqbyk7Ci0KLS8qKgotICogRm9yd2FyZHMgYSByZXF1ZXN0IG9m
IGEgbmV3IENvbnRleHQgTWVudSB0byBXZWJDb3JlLgotICoKLSAqIEBwYXJhbSBvIHZpZXcgb2Jq
ZWN0IHRvIGZvcndhcmQgYSByZXF1ZXN0IG9mIGEgbmV3IENvbnRleHQgTWVudQotICogQHBhcmFt
IGV2IG1vdXNlIGRvd24gZXZlbnQgZGF0YQotICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlm
IG9wZXJhdGlvbiB3YXMgZXhlY3V0ZWQsIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlCi0gKi8KLUVB
UEkgRWluYV9Cb29sICAgIGV3a192aWV3X2NvbnRleHRfbWVudV9mb3J3YXJkX2V2ZW50KEV2YXNf
T2JqZWN0ICpvLCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX0Rvd24gKmV2KTsKLQotLyoqCi0gKiBF
eGVjdXRlcyBlZGl0b3IgY29tbWFuZC4KLSAqCi0gKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBl
eGVjdXRlIGNvbW1hbmQKLSAqIEBwYXJhbSBjb21tYW5kIGVkaXRvciBjb21tYW5kIHRvIGV4ZWN1
dGUKLSAqIEBwYXJhbSB2YWx1ZSB0aGUgdmFsdWUgdG8gYmUgcGFzc2VkIGludG8gY29tbWFuZAot
ICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3Mgb3IgQGMgRUlOQV9GQUxTRSBv
biBmYWlsdXJlCi0gKi8KLUVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X2VkaXRvcl9jb21tYW5k
X2V4ZWN1dGUoY29uc3QgRXZhc19PYmplY3QgKm8sIGNvbnN0IEV3a19FZGl0b3JfQ29tbWFuZCBj
b21tYW5kLCBjb25zdCBjaGFyICp2YWx1ZSk7Ci0KLS8qKgotICogRGVzdHJveXMgYSBwcmV2aW91
c2x5IGNyZWF0ZWQgY29sb3IgY2hvb3Nlci4KLSAqCi0gKiBCZWZvcmUgZGVzdHJveWluZywgaXQg
aW5mb3JtcyBjbGllbnQgdGhhdCBjb2xvciBjaG9vc2VyJ3MgZGF0YSBpcyByZWFkeSB0byBiZQot
ICogZGVzdHJveWVkIGJ5IHNlbmRpbmcgYSAiY29sb3JjaG9vc2VyLHdpbGxkZWxldGUiLiBUaGVu
IGl0IHJlbW92ZXMgYW55IHJlZmVyZW5jZQotICogdG8gdGhlIGNvbG9yIGNob29zZXIgaW5zaWRl
IHdlYmtpdC4gSXQncyBzYWZlIHRvIGNhbGwgdGhpcyBmdW5jdGlvbiBlaXRoZXIgZnJvbQotICog
aW5zaWRlIHdlYmtpdCBvciBmcm9tIGJyb3dzZXIuCi0gKgotICogQHBhcmFtIG8gdmlldyBvYmpl
Y3QKLSAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpbiBjYXNlIGNvbG9yIGNob29zZXIgd2Fz
IHN1Y2Nlc3NmdWxseSBkZXN0cm95ZWQgb3IgQGMgRUlOQV9UUlVFIGluCi0gKiBjYXNlIHRoZXJl
IHdhc24ndCBhbnkgY29sb3IgY2hvb3NlciB0byBiZSBkZXN0cm95ZWQKLSAqLwotRUFQSSBFaW5h
X0Jvb2wgICAgZXdrX3ZpZXdfY29sb3JfY2hvb3Nlcl9kZXN0cm95KEV2YXNfT2JqZWN0KiBvKTsK
LQotLyoqCi0gKiBDaGFuZ2VzIHRoZSBzZWxlY3RlZCBjb2xvci4KLSAqCi0gKiBDaGFuZ2VzIHRo
ZSBjb2xvciBzZWxlY3RlZCBpbiB0aGUgY29sb3IgaW5wdXQgd2lkZ2V0LiBUaGUgYnJvd3NlciBz
aG91bGQgY2FsbAotICogdGhpcyB3aGVuIHRoZSB1c2VyIGNob29zZXMgYSBuZXcgY29sb3IuIEl0
J3MgbGlrZWx5IHRoYXQgZXdrX3ZpZXdfY29sb3JfY2hvb3Nlcl9kZXN0cm95Ci0gKiB3aWxsIGJl
IGNhbGxlZCBhZnRlcndhcmRzLgotICoKLSAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0Ci0gKiBAcGFy
YW0gciByZWQgY29sb3IgY29tcG9uZW50Ci0gKiBAcGFyYW0gZyBncmVlbiBjb2xvciBjb21wb25l
bnQKLSAqIEBwYXJhbSBiIGJsdWUgY29sb3IgY29tcG9uZW50Ci0gKi8KLUVBUEkgdm9pZCAgICAg
ICAgIGV3a192aWV3X2NvbG9yX2Nob29zZXJfY29sb3Jfc2V0KEV2YXNfT2JqZWN0KiBvLCBpbnQg
ciwgaW50IGcsIGludCBiKTsKLQotLyoqCi0gKiBDaGFuZ2VzIGN1cnJlbnRseSBzZWxlY3RlZCBp
dGVtLgotICoKLSAqIENoYW5nZXMgdGhlIG9wdGlvbiBzZWxlY3RlZCBpbiBzZWxlY3Qgd2lkZ2V0
LiBUaGlzIGlzIGNhbGxlZCBieSBicm93c2VyCi0gKiB3aGVuZXZlciB1c2VyIGhhcyBjaG9zZW4g
YSBkaWZmZXJlbnQgaXRlbS4gTW9zdCBsaWtlbHkgYWZ0ZXIgY2FsbGluZyB0aGlzLCBhCi0gKiBj
YWxsIHRvIGV3a192aWV3X3BvcHVwX2Rlc3Ryb3kgbWlnaHQgYmUgbWFkZSBpbiBvcmRlciB0byBj
bG9zZSB0aGUgcG9wdXAuCi0gKgotICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gY2hhbmdlIGN1
cnJlbnRseSBzZWxlY3RlZCBpdGVtCi0gKiBAaW5kZXggaW5kZXggYSBuZXcgaW5kZXggdG8gc2V0
Ci0gKi8KLUVBUEkgdm9pZCAgICAgICAgIGV3a192aWV3X3BvcHVwX3NlbGVjdGVkX3NldChFdmFz
X09iamVjdCAqbywgaW50IGluZGV4KTsKLQotLyoqCi0gKiBEZXN0cm95cyBhIHByZXZpb3VzbHkg
Y3JlYXRlZCBtZW51LgotICoKLSAqIEJlZm9yZSBkZXN0cm95aW5nLCBpdCBpbmZvcm1zIGNsaWVu
dCB0aGF0IG1lbnUncyBkYXRhIGlzIHJlYWR5IHRvIGJlCi0gKiBkZXN0cm95ZWQgYnkgc2VuZGlu
ZyBhICJwb3B1cCx3aWxsZGVsZXRlIiB3aXRoIGEgbGlzdCBvZiBtZW51IGl0ZW1zLiBUaGVuIGl0
Ci0gKiByZW1vdmVzIGFueSByZWZlcmVuY2UgdG8gbWVudSBpbnNpZGUgd2Via2l0LiBJdCdzIHNh
ZmUgdG8gY2FsbCB0aGlzCi0gKiBmdW5jdGlvbiBlaXRoZXIgZnJvbSBpbnNpZGUgd2Via2l0IG9y
IGZyb20gYnJvd3Nlci4KLSAqCi0gKiBAcGFyYW0gbyB2aWV3IG9iamVjdAotICoKLSAqIEByZXR1
cm4gQGMgRUlOQV9UUlVFIGluIGNhc2UgbWVudSB3YXMgc3VjY2Vzc2Z1bGx5IGRlc3Ryb3llZCBv
ciBAYyBFSU5BX1RSVUUgaW4KLSAqIGNhc2UgdGhlcmUgd2Fzbid0IGFueSBtZW51IHRvIGJlIGRl
c3Ryb3llZAotICovCi1FQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld19wb3B1cF9kZXN0cm95KEV2
YXNfT2JqZWN0ICpvKTsKLQotLyoqCi0gKiBTZWFyY2hlcyB0aGUgZ2l2ZW4gc3RyaW5nIGluIGEg
ZG9jdW1lbnQuCi0gKgotICogQHBhcmFtIG8gdmlldyBvYmplY3Qgd2hlcmUgdG8gc2VhcmNoIHRo
ZSB0ZXh0Ci0gKiBAcGFyYW0gc3RyaW5nIHJlZmVyZW5jZSBzdHJpbmcgdG8gc2VhcmNoCi0gKiBA
cGFyYW0gY2FzZV9zZW5zaXRpdmUgaWYgc2VhcmNoIHNob3VsZCBiZSBjYXNlIHNlbnNpdGl2ZSBv
ciBub3QKLSAqIEBwYXJhbSBmb3J3YXJkIGlmIHNlYXJjaCBpcyBmcm9tIGN1cnNvciBhbmQgb24g
b3IgYmFja3dhcmRzCi0gKiBAcGFyYW0gd3JhcCBpZiBzZWFyY2ggc2hvdWxkIHdyYXAgYXQgdGhl
IGVuZAotICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIHRoZSBnaXZlbiBzdHJpbmcgd2Fz
IGZvdW5kLCBAYyBFSU5BX0ZBTFNFIGlmIG5vdCBvciBmYWlsdXJlCi0gKi8KLUVBUEkgRWluYV9C
b29sICAgIGV3a192aWV3X3RleHRfc2VhcmNoKGNvbnN0IEV2YXNfT2JqZWN0ICpvLCBjb25zdCBj
aGFyICpzdHJpbmcsIEVpbmFfQm9vbCBjYXNlX3NlbnNpdGl2ZSwgRWluYV9Cb29sIGZvcndhcmQs
IEVpbmFfQm9vbCB3cmFwKTsKLQotLyoqCi0gKiBNYXJrcyBtYXRjaGVzIHRoZSBnaXZlbiBzdHJp
bmcgaW4gYSBkb2N1bWVudC4KLSAqCi0gKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB3aGVyZSB0byBz
ZWFyY2ggdGV4dAotICogQHBhcmFtIHN0cmluZyByZWZlcmVuY2Ugc3RyaW5nIHRvIG1hdGNoCi0g
KiBAcGFyYW0gY2FzZV9zZW5zaXRpdmUgaWYgbWF0Y2ggc2hvdWxkIGJlIGNhc2Ugc2Vuc2l0aXZl
IG9yIG5vdAotICogQHBhcmFtIGhpZ2hsaWdodCBpZiBtYXRjaGVzIHNob3VsZCBiZSBoaWdobGln
aHRlZAotICogQHBhcmFtIGxpbWl0IG1heGltdW0gYW1vdW50IG9mIG1hdGNoZXMsIG9yIHplcm8g
dG8gdW5saW1pdGVkCi0gKgotICogQHJldHVybiBudW1iZXIgb2YgbWF0Y2hlZCBAYSBzdHJpbmcK
LSAqLwotRUFQSSB1bnNpZ25lZCBpbnQgZXdrX3ZpZXdfdGV4dF9tYXRjaGVzX21hcmsoRXZhc19P
YmplY3QgKm8sIGNvbnN0IGNoYXIgKnN0cmluZywgRWluYV9Cb29sIGNhc2Vfc2Vuc2l0aXZlLCBF
aW5hX0Jvb2wgaGlnaGxpZ2h0LCB1bnNpZ25lZCBpbnQgbGltaXQpOwotCi0vKioKLSAqIFVubWFy
a3MgYWxsIG1hcmtlZCBtYXRjaGVzIGluIGEgZG9jdW1lbnQuCi0gKgotICogUmV2ZXJzZXMgdGhl
IGVmZmVjdCBvZiBld2tfZnJhbWVfdGV4dF9tYXRjaGVzX21hcmsoKS4KLSAqCi0gKiBAcGFyYW0g
byB2aWV3IG9iamVjdCB3aGVyZSB0byB1bm1hcmsgbWF0Y2hlcwotICoKLSAqIEByZXR1cm4gQGMg
RUlOQV9UUlVFIG9uIHN1Y2Nlc3Mgb3IgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJlCi0gKi8KLUVB
UEkgRWluYV9Cb29sICAgIGV3a192aWV3X3RleHRfbWF0Y2hlc191bm1hcmtfYWxsKEV2YXNfT2Jq
ZWN0ICpvKTsKLQotLyoqCi0gKiBTZXRzIGlmIHNob3VsZCBoaWdobGlnaHQgbWF0Y2hlcyBtYXJr
ZWQgd2l0aCBld2tfZnJhbWVfdGV4dF9tYXRjaGVzX21hcmsoKS4KLSAqCi0gKiBAcGFyYW0gbyB2
aWV3IG9iamVjdCB3aGVyZSB0byBzZXQgaWYgbWF0Y2hlcyBhcmUgaGlnaGxpZ2h0ZWQgb3Igbm90
Ci0gKiBAcGFyYW0gaGlnaGxpZ2h0IEBjIEVJTkFfVFJVRSBpZiBtYXRjaGVzIGFyZSBoaWdobGln
aHRlZCwgQGMgRUlOQV9GQUxTRSBpZiBub3QKLSAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBv
biBzdWNjZXNzIG9yIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZQotICovCi1FQVBJIEVpbmFfQm9v
bCAgICBld2tfdmlld190ZXh0X21hdGNoZXNfaGlnaGxpZ2h0X3NldChFdmFzX09iamVjdCAqbywg
RWluYV9Cb29sIGhpZ2hsaWdodCk7Ci0KLS8qKgotICogR2V0cyBpZiBzaG91bGQgaGlnaGxpZ2h0
IG1hdGNoZXMgbWFya2VkIHdpdGggZXdrX2ZyYW1lX3RleHRfbWF0Y2hlc19tYXJrKCkuCi0gKgot
ICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gcXVlcnkgaWYgbWF0Y2hlcyBhcmUgaGlnaGxpZ2h0
ZWQgb3Igbm90Ci0gKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgbWF0Y2hlcyBhcmUgaGln
aGxpZ2h0ZWQsIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlCi0gKi8KLUVBUEkgRWluYV9Cb29sICAg
IGV3a192aWV3X3RleHRfbWF0Y2hlc19oaWdobGlnaHRfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpv
KTsKLQotLyoqCi0gKiBHZXRzIHRoZSBjdXJyZW50IGxvYWQgcHJvZ3Jlc3Mgb2YgcGFnZS4KLSAq
Ci0gKiBUaGUgcHJvZ3Jlc3MgZXN0aW1hdGVzIGZyb20gMC4wIHRvIDEuMC4KLSAqCi0gKiBAcGFy
YW0gbyB2aWV3IG9iamVjdCB0byBnZXQgdGhlIGN1cnJlbnQgcHJvZ3Jlc3MKLSAqCi0gKiBAcmV0
dXJuIHRoZSBsb2FkIHByb2dyZXMgb2YgcGFnZSwgdmFsdWUgZnJvbSAwLjAgdG8gMS4wIG9uIHN1
Y2Nlc3MKLSAqICAgICAgIG9yIC0xLjAgb24gZmFpbHVyZQotICovCi1FQVBJIGRvdWJsZSAgICAg
ICBld2tfdmlld19sb2FkX3Byb2dyZXNzX2dldChjb25zdCBFdmFzX09iamVjdCAqbyk7Ci0KLS8q
KgotICogQXNrcyB0aGUgbWFpbiBmcmFtZSB0byBzdG9wIGxvYWRpbmcuCi0gKgotICogQHBhcmFt
IG8gdmlldyBvYmplY3QgdG8gc3RvcCBsb2FkaW5nCi0gKgotICogQHJldHVybiBAYyBFSU5BX1RS
VUUgb24gc3VjY2VzcyBvciBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZS4KLSAqLwotRUFQSSBFaW5h
X0Jvb2wgICAgZXdrX3ZpZXdfc3RvcChFdmFzX09iamVjdCAqbyk7Ci0KLS8qKgotICogQXNrcyB0
aGUgbWFpbiBmcmFtZSB0byByZWxvYWQgdGhlIGN1cnJlbnQgZG9jdW1lbnQuCi0gKgotICogQHBh
cmFtIG8gdmlldyBvYmplY3QgdG8gcmVsb2FkIGN1cnJlbnQgZG9jdW1lbnQKLSAqCi0gKiBAcmV0
dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzIG9yIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlCi0g
KgotICogQHNlZSBld2tfdmlld19yZWxvYWRfZnVsbCgpCi0gKi8KLUVBUEkgRWluYV9Cb29sICAg
IGV3a192aWV3X3JlbG9hZChFdmFzX09iamVjdCAqbyk7Ci0KLS8qKgotICogQXNrcyB0aGUgbWFp
biBmcmFtZSB0byBmdWxseSByZWxvYWQgdGhlIGN1cnJlbnQgZG9jdW1lbnQsIHVzaW5nIG5vIGNh
Y2hlcy4KLSAqCi0gKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byByZWxvYWQgY3VycmVudCBkb2N1
bWVudAotICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3MgbyByQGMgRUlOQV9G
QUxTRSBvdGhlcndpc2UKLSAqCi0gKiBAc2VlIGV3a192aWV3X3JlbG9hZCgpCi0gKi8KLUVBUEkg
RWluYV9Cb29sICAgIGV3a192aWV3X3JlbG9hZF9mdWxsKEV2YXNfT2JqZWN0ICpvKTsKLQotLyoq
Ci0gKiBBc2tzIHRoZSBmcmFtZSB0byBuYXZpZ2F0ZSBiYWNrIGluIHRoZSBoaXN0b3J5LgotICoK
LSAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIG5hdmlnYXRlIGJhY2sKLSAqCi0gKiBAcmV0dXJu
IEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzIG9yIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlCi0gKgot
ICogQHNlZSBld2tfZnJhbWVfYmFjaygpCi0gKi8KLUVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3
X2JhY2soRXZhc19PYmplY3QgKm8pOwotCi0vKioKLSAqIEFza3MgZnJhbWUgdG8gbmF2aWdhdGUg
Zm9yd2FyZCBpbiB0aGUgaGlzdG9yeS4KLSAqCi0gKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBu
YXZpZ2F0ZSBmb3J3YXJkCi0gKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcyBv
ciBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZQotICoKLSAqIEBzZWUgZXdrX2ZyYW1lX2ZvcndhcmQo
KQotICovCi1FQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld19mb3J3YXJkKEV2YXNfT2JqZWN0ICpv
KTsKLQotLyoqCi0gKiBOYXZpZ2F0ZXMgYmFjayBvciBmb3J3YXJkIGluIHRoZSBoaXN0b3J5Lgot
ICoKLSAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIG5hdmlnYXRlIGluIHRoZSBoaXN0b3J5Ci0g
KiBAcGFyYW0gc3RlcHMgaWYgcG9zaXRpdmUgbmF2aWdhdGVzIHRoYXQgYW1vdW50IGZvcndhcmRz
LCBpZiBuZWdhdGl2ZQotICogICAgICAgIGRvZXMgYmFja3dhcmRzCi0gKgotICogQHJldHVybiBA
YyBFSU5BX1RSVUUgb24gc3VjY2VzcyBvciBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZQotICoKLSAq
IEBzZWUgZXdrX2ZyYW1lX25hdmlnYXRlKCkKLSAqLwotRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3Zp
ZXdfbmF2aWdhdGUoRXZhc19PYmplY3QgKm8sIGludCBzdGVwcyk7Ci0KLS8qKgotICogUXVlcmll
cyBpZiBpdCdzIHBvc3NpYmxlIHRvIG5hdmlnYXRlIGJhY2t3YXJkcyBvbmUgaXRlbSBpbiB0aGUg
aGlzdG9yeS4KLSAqCi0gKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBxdWVyeSBpZiBiYWNrd2Fy
ZCBuYXZpZ2F0aW9uIGlzIHBvc3NpYmxlCi0gKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYg
aXQncyBwb3NzaWJsZSB0byBuYXZpZ2F0ZSBiYWNrd2FyZCBvbmUgaXRlbSBpbiB0aGUgaGlzdG9y
eSwgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UKLSAqIEBzZWUgZXdrX3ZpZXdfbmF2aWdhdGVfcG9z
c2libGUoKQotICovCi1FQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld19iYWNrX3Bvc3NpYmxlKEV2
YXNfT2JqZWN0ICpvKTsKLQotLyoqCi0gKiBRdWVyaWVzIGlmIGl0J3MgcG9zc2libGUgdG8gbmF2
aWdhdGUgZm9yd2FyZHMgb25lIGl0ZW0gaW4gdGhlIGhpc3RvcnkuCi0gKgotICogQHBhcmFtIG8g
dmlldyBvYmplY3QgdG8gcXVlcnkgaWYgZm9yd2FyZCBuYXZpZ2F0aW9uIGlzIHBvc3NpYmxlCi0g
KgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgaXQncyBwb3NzaWJsZSB0byBuYXZpZ2F0ZSBm
b3J3YXJkcyBpbiB0aGUgaGlzdG9yeSwgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UKLSAqCi0gKiBA
c2VlIGV3a192aWV3X25hdmlnYXRlX3Bvc3NpYmxlKCkKLSAqLwotRUFQSSBFaW5hX0Jvb2wgICAg
ZXdrX3ZpZXdfZm9yd2FyZF9wb3NzaWJsZShFdmFzX09iamVjdCAqbyk7Ci0KLS8qKgotICogUXVl
cmllcyBpZiBpdCdzIHBvc3NpYmxlIHRvIG5hdmlnYXRlIGdpdmVuIEBhIHN0ZXBzIGluIHRoZSBo
aXN0b3J5LgotICoKLSAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIHF1ZXJ5IGlmIGl0J3MgcG9z
c2libGUgdG8gbmF2aWdhdGUgQGEgc3RlcHMgaW4gdGhlIGhpc3RvcnkKLSAqIEBwYXJhbSBzdGVw
cyBpZiBwb3NpdGl2ZSBuYXZpZ2F0ZXMgdGhhdCBhbW91bnQgZm9yd2FyZHMsIGlmIG5lZ2F0aXZl
Ci0gKiAgICAgICAgZG9lcyBiYWNrd2FyZHMKLSAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBp
ZiBpdCdzIHBvc3NpYmxlIHRvIG5hdmlnYXRlIEBhIHN0ZXBzIGluIHRoZSBoaXN0b3J5LCBAYyBF
SU5BX0ZBTFNFIG90aGVyd2lzZQotICovCi1FQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld19uYXZp
Z2F0ZV9wb3NzaWJsZShFdmFzX09iamVjdCAqbywgaW50IHN0ZXBzKTsKLQotLyoqCi0gKiBRdWVy
aWVzIGlmIG5hdmlnYXRpb24gaW4gdGhlIGhpc3RvcnkgKGJhY2stZm9yd2FyZCBsaXN0cykgaXMg
ZW5hYmxlZC4KLSAqCi0gKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBxdWVyeSBpZiBuYXZpZ2F0
aW9uIGhpc3RvcnkgaXMgZW5hYmxlZAotICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIHZp
ZXcga2VlcHMgaGlzdG9yeSwgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UKLSAqLwotRUFQSSBFaW5h
X0Jvb2wgICAgZXdrX3ZpZXdfaGlzdG9yeV9lbmFibGVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpv
KTsKLQotLyoqCi0gKiBFbmFibGVzL2Rpc2FibGVzIG5hdmlnYXRpb24gaW4gdGhlIGhpc3Rvcnkg
KGJhY2stZm9yd2FyZCBsaXN0cykuCi0gKgotICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gZW5h
YmxlL2Rpc2FibGUgbmF2aWdhdGlvbiBpbiB0aGUgaGlzdG9yeQotICogQHBhcmFtIGVuYWJsZSBA
YyBFSU5BX1RSVUUgdG8gZW5hYmxlIG5hdmlnYXRpb24gaW4gdGhlIGhpc3RvcnksCi0gKiAgICAg
ICAgQGMgRUlOQV9GQUxTRSB0byBkaXNhYmxlCi0gKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUg
b24gc3VjY2VzcyBvciBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZQotICovCi1FQVBJIEVpbmFfQm9v
bCAgICBld2tfdmlld19oaXN0b3J5X2VuYWJsZV9zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9v
bCBlbmFibGUpOwotCi0vKioKLSAqIEdldHMgdGhlIGhpc3RvcnkgKGJhY2stZm9yd2FyZCBsaXN0
KSBhc3NvY2lhdGVkIHdpdGggdGhpcyB2aWV3LgotICoKLSAqIFRoZSByZXR1cm5lZCBpbnN0YW5j
ZSBpcyB1bmlxdWUgZm9yIHRoaXMgdmlldyBhbmQgdGh1cyBtdWx0aXBsZSBjYWxscwotICogdG8g
dGhpcyBmdW5jdGlvbiB3aXRoIHRoZSBzYW1lIHZpZXcgYXMgcGFyYW1ldGVyIHJldHVybnMgdGhl
IHNhbWUKLSAqIGhhbmRsZS4gVGhpcyBoYW5kbGUgaXMgYWxpdmUgd2hpbGUgdmlldyBpcyBhbGl2
ZSwgdGh1cyBvbmUKLSAqIG1pZ2h0IHdhbnQgdG8gbGlzdGVuIGZvciBFVkFTX0NBTExCQUNLX0RF
TCBvbiBnaXZlbiB2aWV3Ci0gKiAoQGEgbykgdG8ga25vdyB3aGVuIHRvIHN0b3AgdXNpbmcgcmV0
dXJuZWQgaGFuZGxlLgotICoKLSAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIGdldCBuYXZpZ2F0
aW9uIGhpc3RvcnkKLSAqCi0gKiBAcmV0dXJuIHRoZSBoaXN0b3J5IGluc3RhbmNlIGhhbmRsZSBh
c3NvY2lhdGVkIHdpdGggdGhpcwotICogICAgICAgICB2aWV3IG9uIHN1Y2NlcyBvciBAYyBOVUxM
IG9uIGZhaWx1cmUgKGluY2x1ZGluZyB3aGVuIHRoZSBoaXN0b3J5Ci0gKiAgICAgICAgIG5hdmln
YXRpb24gaXMgbm90IGVuYWJsZWQgd2l0aCBld2tfdmlld19oaXN0b3J5X2VuYWJsZV9zZXQoKSkK
LSAqCi0gKiBAc2VlIGV3a192aWV3X2hpc3RvcnlfZW5hYmxlX3NldCgpCi0gKi8KLUVBUEkgRXdr
X0hpc3RvcnkgKmV3a192aWV3X2hpc3RvcnlfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKLQot
LyoqCi0gKiBBZGRzIEBhIHZpc2l0ZWRfdXJsIHRvIHRoZSB2aWV3J3MgdmlzaXRlZCBsaW5rcyBj
YWNoZS4KLSAqCi0gKiBUaGlzIGZ1bmN0aW9uIGlzIHRvIGJlIGludm9rZWQgYnkgdGhlIGNsaWVu
dCBtYW5hZ2luZyBwZXJzaXN0ZW50IGhpc3Rvcnkgc3RvcmFnZQotICogd2hlbiAicG9wdWxhdGUs
dmlzaXRlZCxsaW5rcyIgc2lnbmFsIGlzIHJlY2VpdmVkLgotICoKLSAqIEBwYXJhbSBvIHZpZXcg
b2JqZWN0IHRvIGFkZCB2aXNpdGVkIGxpbmtzIGRhdGEuCi0gKiBAcGFyYW0gdmlzaXRlZF91cmwg
dmlzaXRlZCB1cmwuCi0gKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcywgQGMg
RUlOQV9GQUxTRSBvbiBmYWlsdXJlLgotICovCi1FQVBJIEVpbmFfQm9vbCAgZXdrX3ZpZXdfdmlz
aXRlZF9saW5rX2FkZChFdmFzX09iamVjdCAqbywgY29uc3QgY2hhciAqdmlzaXRlZF91cmwpOwot
Ci0vKioKLSAqIEdldHMgdGhlIGN1cnJlbnQgcGFnZSB6b29tIGxldmVsIG9mIHRoZSBtYWluIGZy
YW1lLgotICoKLSAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIGdldCB0aGUgem9vbSBsZXZlbAot
ICoKLSAqIEByZXR1cm4gY3VycmVudCB6b29tIGxldmVsIGluIHVzZSBvbiBzdWNjZXNzIG9yIEBj
IC0xLjAgb24gZmFpbHVyZQotICovCi1FQVBJIGZsb2F0ICAgICAgICBld2tfdmlld19wYWdlX3pv
b21fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKLQotLyoqCi0gKiBTZXRzIHRoZSBjdXJyZW50
IHBhZ2Ugem9vbSBsZXZlbCBvZiB0aGUgbWFpbiBmcmFtZS4KLSAqCi0gKiBAcGFyYW0gbyB2aWV3
IG9iamVjdCB0byBzZXQgdGhlIHpvb20gbGV2ZWwKLSAqIEBwYXJhbSBwYWdlX3pvb21fZmFjdG9y
IGEgbmV3IGxldmVsIHRvIHNldAotICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nl
c3Mgb3IgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UKLSAqLwotRUFQSSBFaW5hX0Jvb2wgICAgZXdr
X3ZpZXdfcGFnZV96b29tX3NldChFdmFzX09iamVjdCAqbywgZmxvYXQgcGFnZV96b29tX2ZhY3Rv
cik7Ci0KLS8qKgotICogR2V0cyB0aGUgY3VycmVudCBzY2FsZSBmYWN0b3Igb2YgdGhlIHBhZ2Uu
Ci0gKgotICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gZ2V0IHRoZSBzY2FsZSBmYWN0b3IgCi0g
KgotICogQHJldHVybiBjdXJyZW50IHNjYWxlIGZhY3RvciBpbiB1c2Ugb24gc3VjY2VzcyBvciBA
YyAtMS4wIG9uIGZhaWx1cmUKLSAqLwotRUFQSSBmbG9hdCAgICAgICAgZXdrX3ZpZXdfc2NhbGVf
Z2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKLQotLyoqCi0gKiBTY2FsZXMgdGhlIGN1cnJlbnQg
cGFnZSwgY2VudGVyZWQgYXQgdGhlIGdpdmVuIHBvaW50LgotICoKLSAqIEBwYXJhbSBvIHZpZXcg
b2JqZWN0IHRvIHNldCB0aGUgem9vbSBsZXZlbAotICogQHBhcmFtIHNjYWxlX2ZhY3RvciBhIG5l
dyBsZXZlbCB0byBzZXQKLSAqIEBwYXJhbSBjeCB4IG9mIGNlbnRlciBjb29yZGluYXRlCi0gKiBA
cGFyYW0gY3kgeSBvZiBjZW50ZXIgY29vcmRpbmF0ZQotICoKLSAqIEByZXR1cm4gQGMgRUlOQV9U
UlVFIG9uIHN1Y2Nlc3Mgb3IgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UKLSAqLwotRUFQSSBFaW5h
X0Jvb2wgICAgZXdrX3ZpZXdfc2NhbGVfc2V0KEV2YXNfT2JqZWN0ICpvLCBmbG9hdCBzY2FsZV9m
YWN0b3IsIEV2YXNfQ29vcmQgY3gsIEV2YXNfQ29vcmQgY3kpOwotCi0vKioKLSAqIEdldHMgdGhl
IGN1cnJlbnQgdGV4dCB6b29tIGxldmVsIG9mIHRoZSBtYWluIGZyYW1lLgotICoKLSAqIEBwYXJh
bSBvIHZpZXcgb2JqZWN0IHRvIGdldCB0aGUgem9vbSBsZXZlbAotICoKLSAqIEByZXR1cm4gY3Vy
cmVudCB6b29tIGxldmVsIGluIHVzZSBvbiBzdWNjZXNzIG9yIEBjIC0xLjAgb24gZmFpbHVyZQot
ICovCi1FQVBJIGZsb2F0ICAgICAgICBld2tfdmlld190ZXh0X3pvb21fZ2V0KGNvbnN0IEV2YXNf
T2JqZWN0ICpvKTsKLQotLyoqCi0gKiBTZXRzIHRoZSBjdXJyZW50IHRleHQgem9vbSBsZXZlbCBv
ZiB0aGUgbWFpbiBmcmFtZS4KLSAqCi0gKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBzZXQgdGhl
IHpvb20gbGV2ZWwKLSAqIEBwYXJhbSB0ZXh0Wm9vbUZhY3RvciBhIG5ldyBsZXZlbCB0byBzZXQK
LSAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzIG9yIEBjIEVJTkFfRkFMU0Ug
b3RoZXJ3aXNlCi0gKi8KLUVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3RleHRfem9vbV9zZXQo
RXZhc19PYmplY3QgKm8sIGZsb2F0IHRleHRfem9vbV9mYWN0b3IpOwotCi0vKioKLSAqIEdldHMg
dGhlIGN1cnJlbnQgem9vbSBsZXZlbCBvZiB0aGUgbWFpbiBmcmFtZS4KLSAqCi0gKiBAcGFyYW0g
byB2aWV3IG9iamVjdCB0byBnZXQgdGhlIHpvb20gbGV2ZWwKLSAqCi0gKiBAcmV0dXJuIGN1cnJl
bnQgem9vbSBsZXZlbCBpbiB1c2Ugb24gc3VjY2VzcyBvciBAYyAtMS4wIG9uIGZhaWx1cmUKLSAq
LwotRUFQSSBmbG9hdCAgICAgICAgZXdrX3ZpZXdfem9vbV9nZXQoY29uc3QgRXZhc19PYmplY3Qg
Km8pOwotCi0vKioKLSAqIFNldHMgdGhlIGN1cnJlbnQgem9vbSBsZXZlbCBvZiB0aGUgbWFpbiBm
cmFtZSwgY2VudGVyZWQgYXQgdGhlIGdpdmVuIHBvaW50LgotICoKLSAqIEBwYXJhbSBvIHZpZXcg
b2JqZWN0IHRvIHNldCB0aGUgem9vbSBsZXZlbAotICogQHBhcmFtIHpvb20gYSBuZXcgbGV2ZWwg
dG8gc2V0Ci0gKiBAcGFyYW0gY3ggeCBvZiBjZW50ZXIgY29vcmRpbmF0ZQotICogQHBhcmFtIGN5
IHkgb2YgY2VudGVyIGNvb3JkaW5hdGUKLSAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBz
dWNjZXNzIG9yIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlCi0gKi8KLUVBUEkgRWluYV9Cb29sICAg
IGV3a192aWV3X3pvb21fc2V0KEV2YXNfT2JqZWN0ICpvLCBmbG9hdCB6b29tLCBFdmFzX0Nvb3Jk
IGN4LCBFdmFzX0Nvb3JkIGN5KTsKLQotLyoqCi0gKiBRdWVyaWVzIGlmIHRoZSBzbW9vdGggc2Nh
bGUgaXMgZW5hYmxlZCB3aGlsZSB0aGUgd2VhayB6b29tLgotICoKLSAqIEBwYXJhbSBvIHZpZXcg
b2JqZWN0IHRvIHF1ZXJ5IGlmIHRoZSBzbW9vdGggc2NhbGUgaXMgZW5hYmxlZCB3aGlsZSB0aGUg
d2VhayB6b29tCi0gKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgdGhlIHNtb290aCBzY2Fs
ZSBpcyBlbmFibGVkIHdoaWxlIHRoZSB3ZWFrIHpvb20sIG9yCi0gKiAgICAgICAgIEBjIEVJTkFf
RkFMU0UgaWYgbm90IG9yIG9uIGZhaWx1cmUKLSAqLwotRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3Zp
ZXdfem9vbV93ZWFrX3Ntb290aF9zY2FsZV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOwotCi0v
KioKLSAqIEVuYWJsZXMvZGlzYWJsZXMgdGhlIHNtb290aCBzY2FsZSB3aGlsZSB0aGUgd2VhayB6
b29tLgotICoKLSAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIHNldCB0aGUgc21vb3RoIHNjYWxl
IHdoaWxlIHRoZSB3ZWFrIHpvb20KLSAqIEBwYXJhbSBzbW9vdGhfc2NhbGUgQGMgRUlOQV9UUlVF
IHRvIGVuYWJsZSB0aGUgc21vb3RoIHNjYWxlCi0gKiAgICAgICAgQGMgRUlOQV9GQUxTRSB0byBk
aXNhYmxlCi0gKi8KLUVBUEkgdm9pZCAgICAgICAgIGV3a192aWV3X3pvb21fd2Vha19zbW9vdGhf
c2NhbGVfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgc21vb3RoX3NjYWxlKTsKLQotLyoq
Ci0gKiBTZXRzIHRoZSBjdXJyZW50IHpvb20gbGV2ZWwgb2YgYmFja2luZyBzdG9yZSwgY2VudGVy
ZWQgYXQgZ2l2ZW4gcG9pbnQuCi0gKgotICogVW5saWtlIGV3a192aWV3X3pvb21fc2V0KCksIHRo
aXMgY2FsbCBkbyBub3QgYXNrIFdlYktpdCB0byByZW5kZXIKLSAqIGF0IG5ldyBzaXplLCBidXQg
c2NhbGUgd2hhdCBpcyBhbHJlYWR5IHJlbmRlcmVkLCBiZWluZyBtdWNoIGZhc3RlcgotICogYnV0
IHdvcnNlIHF1YWxpdHkuCi0gKgotICogT2Z0ZW4gb25lIHNob3VsZCB1c2UgZXdrX3ZpZXdfem9v
bV9hbmltYXRlZF9zZXQoKSwgaXQgd2lsbCBjYWxsIHRoZQotICogc2FtZSBtYWNoaW5lcnkgaW50
ZXJuYWxseS4KLSAqCi0gKiBAbm90ZSB0aGlzIHdpbGwgc2V0IHZhcmlhYmxlcyB1c2VkIGJ5IGV3
a192aWV3X3pvb21fYW5pbWF0ZWRfc2V0KCkKLSAqICAgICAgIHNvIHN1Yi1jbGFzc2VzIHdpbGwg
bm90IHJlc2V0IGludGVybmFsIHN0YXRlIG9uIHRoZWlyCi0gKiAgICAgICAiY2FsY3VsYXRlIiBw
aGFzZS4gVG8gdW5zZXQgdGhvc2UgYW5kIGVuYWJsZSBzdWItY2xhc3NlcyB0bwotICogICAgICAg
cmVzZXQgdGhlaXIgaW50ZXJuYWwgc3RhdGUsIGNhbGwKLSAqICAgICAgIGV3a192aWV3X3pvb21f
YW5pbWF0ZWRfbWFya19zdG9wKCkuIE5hbWVseSwgdGhpcyBjYWxsIHdpbGwKLSAqICAgICAgIHNl
dCBld2tfdmlld196b29tX2FuaW1hdGVkX21hcmtfc3RhcnQoKSB0byBhY3R1YWwgd2Via2l0IHpv
b20KLSAqICAgICAgIGxldmVsLCBld2tfdmlld196b29tX2FuaW1hdGVkX21hcmtfZW5kKCkgYW5k
Ci0gKiAgICAgICBld2tfdmlld196b29tX2FuaW1hdGVkX21hcmtfY3VycmVudCgpIHRvIGdpdmVu
IHpvb20gbGV2ZWwuCi0gKgotICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gc2V0IHRoZSB3ZWFr
IHpvb20gbGV2ZWwKLSAqIEBwYXJhbSB6b29tIGEgbmV3IGxldmVsIHRvIHNjYWxlIGJhY2tpbmcg
c3RvcmUKLSAqIEBwYXJhbSBjeCBob3Jpem9udGFsIGNlbnRlciBvZmZzZXQsIHJlbGF0aXZlIHRv
IG9iamVjdCAody8yIGlzIG1pZGRsZSkKLSAqIEBwYXJhbSBjeSB2ZXJ0aWNhbCBjZW50ZXIgb2Zm
c2V0LCByZWxhdGl2ZSB0byBvYmplY3QgKGgvMiBpcyBtaWRkbGUpCi0gKgotICogQHJldHVybiBA
YyBFSU5BX1RSVUUgb24gc3VjY2VzcyBvciBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZQotICovCi1F
QVBJIEVpbmFfQm9vbCAgICBld2tfdmlld196b29tX3dlYWtfc2V0KEV2YXNfT2JqZWN0ICpvLCBm
bG9hdCB6b29tLCBFdmFzX0Nvb3JkIGN4LCBFdmFzX0Nvb3JkIGN5KTsKLQotLyoqCi0gKiBTZXRz
IHN0YXJ0IG9mIGFuIGludGVybmFsIHpvb20gYW5pbWF0aW9uIHN0YXRlIHRvIHRoZSBnaXZlbiB6
b29tLgotICoKLSAqIFRoaXMgZG9lcyBub3QgbW9kaWZ5IGFueSBhY3R1YWwgem9vbSBpbiBXZWJL
aXQgb3IgYmFja2luZyBzdG9yZSwKLSAqIGp1c3Qgc2V0IG5lZWRlZCBmbGFnIHNvIHN1Yi1jbGFz
c2VzIGtub3dzIHRoZXkgc2hvdWxkIG5vdCByZXNldAotICogdGhlaXIgYW4gaW50ZXJuYWwgc3Rh
dGUuCi0gKgotICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gc2V0IHN0YXJ0IG9mIGFuIGludGVy
bmFsIHpvb20gYW5pbWF0aW9uCi0gKiBAcGFyYW0gem9vbSBhIG5ldyBzdGFydCB2YWx1ZQotICoK
LSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3Mgb3IgQGMgRUlOQV9GQUxTRSBvdGhl
cndpc2UKLSAqCi0gKiBAc2VlIGV3a192aWV3X3pvb21fYW5pbWF0ZWRfc2V0KCkKLSAqIEBzZWUg
ZXdrX3ZpZXdfem9vbV93ZWFrX3NldCgpCi0gKiBAc2VlIGV3a192aWV3X3pvb21fYW5pbWF0ZWRf
bWFya19zdG9wKCkKLSAqIEBzZWUgZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9tYXJrX2VuZCgpCi0g
KiBAc2VlIGV3a192aWV3X3pvb21fYW5pbWF0ZWRfbWFya19jdXJyZW50KCkKLSAqLwotRUFQSSBF
aW5hX0Jvb2wgICAgZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9tYXJrX3N0YXJ0KEV2YXNfT2JqZWN0
ICpvLCBmbG9hdCB6b29tKTsKLQotLyoqCi0gKiBTZXRzIGVuZCBvZiBhbiBpbnRlcm5hbCB6b29t
IGFuaW1hdGlvbiBzdGF0ZSB0byBnaXZlbiB6b29tLgotICoKLSAqIFRoaXMgZG9lcyBub3QgbW9k
aWZ5IGFueSBhY3R1YWwgem9vbSBpbiBXZWJLaXQgb3IgYmFja2luZyBzdG9yZSwKLSAqIGp1c3Qg
c2V0IG5lZWRlZCBmbGFnIHNvIHN1Yi1jbGFzc2VzIGtub3dzIHRoZXkgc2hvdWxkIG5vdCByZXNl
dAotICogdGhlaXIgYW4gaW50ZXJuYWwgc3RhdGUuCi0gKgotICogQHBhcmFtIG8gdmlldyBvYmpl
Y3QgdG8gc2V0IGVuZCBvZiBhbiBpbnRlcm5hbCB6b29tIGFuaW1hdGlvbgotICogQHBhcmFtIHpv
b20gYSBuZXcgZW5kIHZhbHVlCi0gKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2Vz
cyBvciBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZQotICoKLSAqIEBzZWUgZXdrX3ZpZXdfem9vbV9h
bmltYXRlZF9zZXQoKQotICogQHNlZSBld2tfdmlld196b29tX3dlYWtfc2V0KCkKLSAqIEBzZWUg
ZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9tYXJrX3N0b3AoKQotICogQHNlZSBld2tfdmlld196b29t
X2FuaW1hdGVkX21hcmtfc3RhcnQoKQotICogQHNlZSBld2tfdmlld196b29tX2FuaW1hdGVkX21h
cmtfY3VycmVudCgpCi0gKi8KLUVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3pvb21fYW5pbWF0
ZWRfbWFya19lbmQoRXZhc19PYmplY3QgKm8sIGZsb2F0IHpvb20pOwotCi0vKioKLSAqIFNldHMg
YW4gaW50ZXJuYWwgY3VycmVudCB6b29tIGFuaW1hdGlvbiBzdGF0ZSB0byBnaXZlbiB6b29tLgot
ICoKLSAqIFRoaXMgZG9lcyBub3QgbW9kaWZ5IGFueSBhY3R1YWwgem9vbSBpbiBXZWJLaXQgb3Ig
YmFja2luZyBzdG9yZSwKLSAqIGp1c3Qgc2V0IG5lZWRlZCBmbGFnIHNvIHN1Yi1jbGFzc2VzIGtu
b3dzIHRoZXkgc2hvdWxkIG5vdCByZXNldAotICogdGhlaXIgYW4gaW50ZXJuYWwgc3RhdGUuCi0g
KgotICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gc2V0IGFuIGludGVybmFsIGN1cnJlbnQgem9v
bSBhbmltYXRpb24KLSAqIEBwYXJhbSB6b29tIGEgbmV3IGN1cnJlbnQgdmFsdWUKLSAqCi0gKiBA
cmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzIG9yIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNl
Ci0gKgotICogQHNlZSBld2tfdmlld196b29tX2FuaW1hdGVkX3NldCgpCi0gKiBAc2VlIGV3a192
aWV3X3pvb21fd2Vha19zZXQoKQotICogQHNlZSBld2tfdmlld196b29tX2FuaW1hdGVkX21hcmtf
c3RvcCgpCi0gKiBAc2VlIGV3a192aWV3X3pvb21fYW5pbWF0ZWRfbWFya19zdGFydCgpCi0gKiBA
c2VlIGV3a192aWV3X3pvb21fYW5pbWF0ZWRfbWFya19lbmQoKQotICovCi1FQVBJIEVpbmFfQm9v
bCAgICBld2tfdmlld196b29tX2FuaW1hdGVkX21hcmtfY3VycmVudChFdmFzX09iamVjdCAqbywg
ZmxvYXQgem9vbSk7Ci0KLS8qKgotICogVW5tYXJrcyBhbiBpbnRlcm5hbCB6b29tIGFuaW1hdGlv
biBzdGF0ZS4KLSAqCi0gKiBUaGUgc3RhcnQsIGVuZCBhbmQgY3VycmVudCB2YWx1ZXMgb2YgYW4g
aW50ZXJuYWwgem9vbSBhbmltYXRpb24gYXJlIHplcm9lZC4KLSAqCi0gKiBAcGFyYW0gbyB2aWV3
IG9iamVjdCB0byB1bm1hcmsgYW4gaW50ZXJuYWwgem9vbSBhbmltYXRpb24gc3RhdGUKLSAqCi0g
KiBAc2VlIGV3a192aWV3X3pvb21fYW5pbWF0ZWRfbWFya19zdGFydCgpCi0gKiBAc2VlIGV3a192
aWV3X3pvb21fYW5pbWF0ZWRfbWFya19lbmQoKQotICogQHNlZSBld2tfdmlld196b29tX2FuaW1h
dGVkX21hcmtfY3VycmVudCgpCi0gKiBAc2VlIGV3a192aWV3X3pvb21fd2Vha19zZXQoKQotICov
Ci1FQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld196b29tX2FuaW1hdGVkX21hcmtfc3RvcChFdmFz
X09iamVjdCAqbyk7Ci0KLS8qKgotICogU2V0cyB0aGUgY3VycmVudCB6b29tIGxldmVsIHdoaWxl
IGFuaW1hdGluZy4KLSAqCi0gKiBJZiB0aGUgdmlldyB3YXMgYWxyZWFkeSBhbmltYXRpbmcgdG8g
YW5vdGhlciB6b29tLCBpdCB3aWxsIHN0YXJ0Ci0gKiBmcm9tIGN1cnJlbnQgcG9pbnQgdG8gdGhl
IG5leHQgcHJvdmlkZWQgem9vbSAoQGEgem9vbSBwYXJhbWV0ZXIpCi0gKiBhbmQgZHVyYXRpb24g
KEBhIGR1cmF0aW9uIHBhcmFtZXRlcikuCi0gKgotICogVGhpcyBpcyB0aGUgcmVjb21tZW5kZWQg
d2F5IHRvIGRvIHRyYW5zaXRpb25zIGZyb20gb25lIGxldmVsIHRvCi0gKiBhbm90aGVyLiBIb3dl
dmVyLCBvbmUgbWF5IHdpc2ggdG8gZG8gdGhvc2UgZnJvbSBvdXRzaWRlLCBpbiB0aGF0Ci0gKiBj
YXNlIHVzZSBld2tfdmlld196b29tX3dlYWtfc2V0KCkgYW5kIGxhdGVyIGNvbnRyb2wgaW50ZXJt
ZWRpYXRlCi0gKiBzdGF0ZXMgd2l0aCBld2tfdmlld196b29tX2FuaW1hdGVkX21hcmtfY3VycmVu
dCgpLAotICogZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9tYXJrX2VuZCgpIGFuZAotICogZXdrX3Zp
ZXdfem9vbV9hbmltYXRlZF9tYXJrX3N0b3AoKS4KLSAqCi0gKiBAcGFyYW0gbyB2aWV3IG9iamVj
dCB0byBhbmltYXRlCi0gKiBAcGFyYW0gem9vbSBmaW5hbCB6b29tIGxldmVsIHRvIHVzZQotICog
QHBhcmFtIGR1cmF0aW9uIHRpbWUgaW4gc2Vjb25kcyB0aGUgYW5pbWF0aW9uIHNob3VsZCB0YWtl
LgotICogQHBhcmFtIGN4IG9mZnNldCBpbnNpZGUgb2JqZWN0IHRoYXQgZGVmaW5lcyB6b29tIGNl
bnRlci4gMCBpcyBsZWZ0IHNpZGUKLSAqIEBwYXJhbSBjeSBvZmZzZXQgaW5zaWRlIG9iamVjdCB0
aGF0IGRlZmluZXMgem9vbSBjZW50ZXIuIDAgaXMgdG9wIHNpZGUKLSAqIEByZXR1cm4gQGMgRUlO
QV9UUlVFIGlmIGFuaW1hdGlvbiB3aWxsIGJlIHN0YXJ0ZWQsIEBjIEVJTkFfRkFMU0UgaWYgbm90
Ci0gKiAgICAgICAgICAgIGJlY2F1c2Ugem9vbSBpcyB0b28gc21hbGwvYmlnCi0gKi8KLUVBUEkg
RWluYV9Cb29sICAgIGV3a192aWV3X3pvb21fYW5pbWF0ZWRfc2V0KEV2YXNfT2JqZWN0ICpvLCBm
bG9hdCB6b29tLCBmbG9hdCBkdXJhdGlvbiwgRXZhc19Db29yZCBjeCwgRXZhc19Db29yZCBjeSk7
Ci0KLS8qKgotICogRW5hYmxlcyAocmVzdW1lcykgcmVuZGVyaW5nLgotICoKLSAqIEBwYXJhbSBv
IHZpZXcgb2JqZWN0IHRvIGVuYWJsZSByZW5kZXJpbmcKLSAqCi0gKiBAcmV0dXJuIEBjIEVJTkFf
VFJVRSBpZiByZW5kZXJpbmcgd2FzIGVuYWJsZWQsIEBjIEVJTkFfRkFMU0UKLSAqICAgICAgICAg
b3RoZXJ3aXNlIChlcnJvcnMsIHJlbmRlcmluZyBzdXNwZW5zaW9uIGZlYXR1cmUgbm90IHN1cHBv
cnRlZCkKLSAqCi0gKiBAc2VlIGV3a192aWV3X2Rpc2FibGVfcmVuZGVyKCkKLSAqLwotRUFQSSBF
aW5hX0Jvb2wgICAgZXdrX3ZpZXdfZW5hYmxlX3JlbmRlcihjb25zdCBFdmFzX09iamVjdCAqbyk7
Ci0KLS8qKgotICAqIERpc2FibGVzIChzdXNwZW5kcykgcmVuZGVyaW5nLgotICAqCi0gICogQHBh
cmFtIG8gdmlldyBvYmplY3QgdG8gZGlzYWJsZSByZW5kZXJpbmcKLSAgKgotICAqIEByZXR1cm4g
QGMgRUlOQV9UUlVFIGlmIHJlbmRlcmluZyB3YXMgZGlzYWJsZWQsIEBjIEVJTkFfRkFMU0UKLSAg
KiAgICAgICAgIG90aGVyd2lzZSAoZXJyb3JzLCByZW5kZXJpbmcgc3VzcGVuc2lvbiBub3Qgc3Vw
cG9ydGVkKQotICAqLwotRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfZGlzYWJsZV9yZW5kZXIo
Y29uc3QgRXZhc19PYmplY3QgKm8pOwotCi0vKioKLSAqIEdldHMgdGhlIGlucHV0IG1ldGhvZCBo
aW50cy4KLSAqCi0gKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBnZXQgdGhlIGlucHV0IG1ldGhv
ZCBoaW50cwotICoKLSAqIEBzZWUgRXdrX0ltaAotICoKLSAqIEByZXR1cm4gdGhlIGlucHV0IG1l
dGhvZCBoaW50cyBhcyBAYSBFd2tfSW1oIGJpdHMtZmllbGQKLSAqLwotRUFQSSB1bnNpZ25lZCBp
bnQgZXdrX3ZpZXdfaW1oX2dldChjb25zdCBFdmFzX09iamVjdCAqbyk7Ci0KLS8qKgotICogR2V0
cyB0aGUgdXNlciBhZ2VudCBzdHJpbmcuCi0gKgotICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8g
Z2V0IHRoZSB1c2VyIGFnZW50IHN0cmluZwotICoKLSAqIEByZXR1cm4gdGhlIHVzZXIgYWdlbnQg
c3RyaW5nCi0gKi8KLUVBUEkgY29uc3QgY2hhciAgKmV3a192aWV3X3NldHRpbmdfdXNlcl9hZ2Vu
dF9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOwotCi0vKioKLSAqIFNldHMgdGhlIHVzZXIgYWdl
bnQgc3RyaW5nLgotICoKLSAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIHNldCB0aGUgdXNlciBh
Z2VudCBzdHJpbmcKLSAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzIG9yIEBj
IEVJTkFfRkFMU0Ugb24gZmFpbHVyZQotICovCi1FQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld19z
ZXR0aW5nX3VzZXJfYWdlbnRfc2V0KEV2YXNfT2JqZWN0ICpvLCBjb25zdCBjaGFyICp1c2VyX2Fn
ZW50KTsKLQotLyoqCi0gKiBRdWVyaWVzIGlmIHRoZSBpbWFnZXMgYXJlIGxvYWRlZCBhdXRvbWF0
aWNhbGx5LgotICoKLSAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIHF1ZXJ5IGlmIHRoZSBpbWFn
ZXMgYXJlIGxvYWRlZCBhdXRvbWF0aWNhbGx5Ci0gKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUg
aWYgdGhlIGltYWdlcyBhcmUgbG9hZGVkIGF1dG9tYXRpY2FsbHksCi0gKiAgICAgICAgIEBjIEVJ
TkFfRkFMU0UgaWYgbm90IG9yIG9uIGZhaWx1cmUKLSAqLwotRUFQSSBFaW5hX0Jvb2wgICAgZXdr
X3ZpZXdfc2V0dGluZ19hdXRvX2xvYWRfaW1hZ2VzX2dldChjb25zdCBFdmFzX09iamVjdCAqbyk7
Ci0KLS8qKgotICogRW5hYmxlcy9kaXNhYmxlcyBhdXRvIGxvYWRpbmcgb2YgdGhlIGltYWdlcy4K
LSAqCi0gKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBzZXQgYXV0byBsb2FkaW5nIG9mIHRoZSBp
bWFnZXMKLSAqIEBwYXJhbSBhdXRvbWF0aWMgQGMgRUlOQV9UUlVFIHRvIGVuYWJsZSBhdXRvIGxv
YWRpbmcgb2YgdGhlIGltYWdlcywKLSAqICAgICAgICBAYyBFSU5BX0ZBTFNFIHRvIGRpc2FibGUK
LSAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzIG9yIEBjIEVJTkFfRkFMU0Ug
b24gZmFpbHVyZQotICovCi1FQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld19zZXR0aW5nX2F1dG9f
bG9hZF9pbWFnZXNfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgYXV0b21hdGljKTsKLQot
LyoqCi0gKiBRdWVyaWVzIGlmIHRoZSBpbWFnZXMgYXJlIHNocmlua2VkIGF1dG9tYXRpY2FsbHkK
LSAqCi0gKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBxdWVyeSBpZiB0aGUgaW1hZ2VzIGFyZSBz
aHJpbmtlZCBhdXRvbWF0aWNhbGx5Ci0gKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgdGhl
IGltYWdlcyBhcmUgc2hyaW5rZWQgYXV0b21hdGljYWxseSwKLSAqICAgICAgICAgQGMgRUlOQV9G
QUxTRSBpZiBub3Qgb3Igb24gZmFpbHVyZQotICovCi1FQVBJIEVpbmFfQm9vbCAgICBld2tfdmll
d19zZXR0aW5nX2F1dG9fc2hyaW5rX2ltYWdlc19nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOwot
Ci0vKioKLSAqIEVuYWJsZXMvZGlzYWJsZXMgYXV0byBzaHJpbmtpbmcgb2YgdGhlIGltYWdlcy4K
LSAqCi0gKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBzZXQgYXV0byBzaHJpbmtpbmcgb2YgdGhl
IGltYWdlcwotICogQHBhcmFtIGF1dG9tYXRpYyBAYyBFSU5BX1RSVUUgdG8gZW5hYmxlIGF1dG8g
c2hyaW5raW5nIG9mIHRoZSBpbWFnZXMsCi0gKiAgICAgICAgQGMgRUlOQV9GQUxTRSB0byBkaXNh
YmxlCi0gKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcyBvciBAYyBFSU5BX0ZB
TFNFIG9uIGZhaWx1cmUKLSAqLwotRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfc2V0dGluZ19h
dXRvX3Nocmlua19pbWFnZXNfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgYXV0b21hdGlj
KTsKLQotLyoqCi0gKiBRdWVyaWVzIGlmIHRoZSB2aWV3IGNhbiBiZSByZXNpemVkIGF1dG9tYXRp
Y2FsbHkuCi0gKgotICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gcXVlcnkgaWYgdGhlIHZpZXcg
Y2FuIGJlIHJlc2l6ZWQgYXV0b21hdGljYWxseQotICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVF
IGlmIHZpZXcgY2FuIGJlIHJlc2l6ZWQgYXV0b21hdGljYWxseSwKLSAqICAgICAgICAgQGMgRUlO
QV9GQUxTRSBpZiBub3Qgb3Igb24gZmFpbHVyZQotICovCi1FQVBJIEVpbmFfQm9vbCAgICBld2tf
dmlld19zZXR0aW5nX2VuYWJsZV9hdXRvX3Jlc2l6ZV93aW5kb3dfZ2V0KGNvbnN0IEV2YXNfT2Jq
ZWN0ICpvKTsKLQotLyoqCi0gKiBFbmFibGVzL2Rpc2FibGVzIGlmIHRoZSB2aWV3IGNhbiBiZSBy
ZXNpemVkIGF1dG9tYXRpY2FsbHkuCi0gKgotICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gc2V0
IGlmIHRoZSB2aWV3IGNhbiBiZSByZXNpemVkIGF1dG9tYXRpY2FsbHkKLSAqIEBwYXJhbSByZXNp
emFibGUgQGMgRUlOQV9UUlVFIGlmIHZpZXcgY2FuIGJlIHJlc2l6YWJsZSBhdXRvbWF0aWNhbGx5
LAotICogICAgICAgIEBjIEVJTkFfVFJVRSBpZiBub3QKLSAqCi0gKiBAcmV0dXJuIEBjIEVJTkFf
VFJVRSBvbiBzdWNjZXNzIG9yIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZQotICovCi1FQVBJIEVp
bmFfQm9vbCAgICBld2tfdmlld19zZXR0aW5nX2VuYWJsZV9hdXRvX3Jlc2l6ZV93aW5kb3dfc2V0
KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgcmVzaXphYmxlKTsKLQotLyoqCi0gKiBRdWVyaWVz
IGlmIHRoZSBzY3JpcHRzIGNhbiBiZSBleGVjdXRlZC4KLSAqCi0gKiBAcGFyYW0gbyB2aWV3IG9i
amVjdCB0byBxdWVyeSBpZiB0aGUgc2NyaXB0cyBjYW4gYmUgZXhlY3V0ZWQKLSAqCi0gKiBAcmV0
dXJuIEBjIEVJTkFfVFJVRSBpZiB0aGUgc2NyaXB0cyBjYW4gYmUgZXhlY3V0ZWQKLSAqICAgICAg
ICAgQGMgRUlOQV9GQUxTRSBpZiBub3Qgb3Igb24gZmFpbHVyZQotICovCi1FQVBJIEVpbmFfQm9v
bCAgICBld2tfdmlld19zZXR0aW5nX2VuYWJsZV9zY3JpcHRzX2dldChjb25zdCBFdmFzX09iamVj
dCAqbyk7Ci0KLS8qKgotICogRW5hYmxlcy9kaXNhYmxlcyBzY3JpcHRzIGV4ZWN1dGluZy4KLSAq
Ci0gKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBzZXQgc2NyaXB0IGV4ZWN1dGluZwotICogQHBh
cmFtIGVuYWJsZSBAYyBFSU5BX1RSVUUgdG8gZW5hYmxlIHNjcmlwdHMgZXhlY3V0aW5nCi0gKiAg
ICAgICAgQGMgRUlOQV9GQUxTRSB0byBkaXNhYmxlCi0gKgotICogQHJldHVybiBAYyBFSU5BX1RS
VUUgb24gc3VjY2VzcyBvciBAYyBFSU5BX0ZBTFNFIG9uIGZhaWx1cmUKLSAqLwotRUFQSSBFaW5h
X0Jvb2wgICAgZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfc2NyaXB0c19zZXQoRXZhc19PYmplY3Qg
Km8sIEVpbmFfQm9vbCBlbmFibGUpOwotCi0vKioKLSAqIFF1ZXJpZXMgaWYgdGhlIHBsdWctaW5z
IGFyZSBlbmFibGVkLgotICoKLSAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIHF1ZXJ5IGlmIHRo
ZSBwbHVnLWlucyBhcmUgZW5hYmxlZAotICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIHRo
ZSBwbHVnaW5zIGFyZSBlbmFibGVkCi0gKiAgICAgICAgIEBjIEVJTkFfRkFMU0UgaWYgbm90IG9y
IG9uIGZhaWx1cmUKLSAqLwotRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfc2V0dGluZ19lbmFi
bGVfcGx1Z2luc19nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOwotCi0vKioKLSAqIEVuYWJsZXMv
ZGlzYWJsZXMgdGhlIHBsdWctaW5zLgotICoKLSAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIHNl
dCB0aGUgcGx1Zy1pbnMKLSAqIEBwYXJhbSBlbmFibGUgQGMgRUlOQV9UUlVFIHRvIGVuYWJsZSB0
aGUgcGx1Zy1pbnMKLSAqICAgICAgICBAYyBFSU5BX0ZBTFNFIHRvIGRpc2FibGUKLSAqCi0gKiBA
cmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzIG9yIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVy
ZQotICovCi1FQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld19zZXR0aW5nX2VuYWJsZV9wbHVnaW5z
X3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIGVuYWJsZSk7Ci0KLS8qKgotICogUXVlcmll
cyBpZiB0aGUgZnJhbWUgZmxhdHRlbmluZyBmZWF0dXJlIGlzIGVuYWJsZWQuCi0gKgotICogQHBh
cmFtIG8gdmlldyBvYmplY3QgdG8gcXVlcnkgaWYgdGhlIGZyYW1lIGZsYXR0ZW5pbmcgZmVhdHVy
ZSBpcyBlbmFibGVkCi0gKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgdGhlIGZyYW1lIGZs
YXR0ZW5pbmcgZmVhdHVyZSBpcyBlbmFibGVkLAotICogICAgICAgICBAYyBFSU5BX0ZBTFNFIGlm
IG5vdCBvciBvbiBmYWlsdXJlCi0gKi8KLUVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3NldHRp
bmdfZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5pbmdfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKLQot
LyoqCi0gKiBFbmFibGVzL2Rpc2FibGVzIHRoZSBmcmFtZSBmbGF0dGVuaW5nIGZlYXR1cmUuCi0g
KgotICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gc2V0IHRoZSBmcmFtZSBmbGF0dGVuaW5nIGZl
YXR1cmUKLSAqIEBwYXJhbSBlbmFibGUgQGMgRUlOQV9UUlVFIHRvIGVuYWJsZSB0aGUgZnJhbWUg
ZmxhdHRlbmluZyBmZWF0dXJlCi0gKiAgICAgICAgQGMgRUlOQV9GQUxTRSB0byBkaXNhYmxlCi0g
KgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcyBvciBAYyBFSU5BX0ZBTFNFIG9u
IGZhaWx1cmUKLSAqLwotRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVf
ZnJhbWVfZmxhdHRlbmluZ19zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBlbmFibGUpOwot
Ci0vKioKLSAqIFF1ZXJpZXMgaWYgdGhlIHNjcmlwdHMgY2FuIG9wZW4gdGhlIG5ldyB3aW5kb3dz
LgotICoKLSAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIHF1ZXJ5IGlmIHRoZSBzY3JpcHRzIGNh
biBvcGVuIHRoZSBuZXcgd2luZG93cwotICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIHRo
ZSBzY3JpcHRzIGNhbiBvcGVuIHRoZSBuZXcgd2luZG93cwotICogICAgICAgICBAYyBFSU5BX0ZB
TFNFIGlmIG5vdCBvciBvbiBmYWlsdXJlCi0gKi8KLUVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3
X3NldHRpbmdfc2NyaXB0c19jYW5fb3Blbl93aW5kb3dzX2dldChjb25zdCBFdmFzX09iamVjdCAq
byk7Ci0KLS8qKgotICogRW5hYmxlcy9kaXNhYmxlcyBpZiB0aGUgc2NyaXB0cyBjYW4gb3BlbiB0
aGUgbmV3IHdpbmRvd3MuCi0gKgotICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gc2V0IGlmIHRo
ZSBzY3JpcHRzIGNhbiBvcGVuIHRoZSBuZXcgd2luZG93cwotICogQHBhcmFtIGFsbG93IEBjIEVJ
TkFfVFJVRSBpZiB0aGUgc2NyaXB0cyBjYW4gb3BlbiB0aGUgbmV3IHdpbmRvd3MKLSAqICAgICAg
ICBAYyBFSU5BX0ZBTFNFIGlmIG5vdAotICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1
Y2Nlc3Mgb3IgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJlIChzY3JpcHRzIGFyZSBkaXNhYmxlZCkK
LSAqCi0gKiBAc2VlIGV3a192aWV3X3NldHRpbmdfZW5hYmxlX3NjcmlwdHNfc2V0Ci0gKi8KLUVB
UEkgRWluYV9Cb29sICAgIGV3a192aWV3X3NldHRpbmdfc2NyaXB0c19jYW5fb3Blbl93aW5kb3dz
X3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIGFsbG93KTsKLQotLyoqCi0gKiBSZXR1cm5z
IHdoZXRoZXIgc2NyaXB0cyBjYW4gY2xvc2Ugd2luZG93cyBhdXRvbWF0aWNhbGx5LgotICoKLSAq
IEBwYXJhbSBvIFZpZXcgd2hvc2Ugc2V0dGluZ3MgdG8gY2hlY2suCi0gKgotICogQHJldHVybiBA
YyBFSU5BX1RSVUUgaWYgc2NyaXB0cyBjYW4gY2xvc2Ugd2luZG93cywgQGMgRUlOQV9GQUxTRSBv
dGhlcndpc2UuCi0gKi8KLUVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3NldHRpbmdfc2NyaXB0
c19jYW5fY2xvc2Vfd2luZG93c19nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOwotCi0vKioKLSAq
IFNldHMgd2hldGhlciBzY3JpcHRzIGFyZSBhbGxvd2VkIHRvIGNsb3NlIHdpbmRvd3MgYXV0b21h
dGljYWxseS4KLSAqCi0gKiBAcGFyYW0gbyBWaWV3IHdob3NlIHNldHRpbmdzIHRvIGNoYW5nZS4K
LSAqIEBwYXJhbSBhbGxvdyBAYyBFSU5BX1RSVUUgdG8gYWxsb3cgc2NyaXB0cyB0byBjbG9zZSB3
aW5kb3dzLAotICogICAgICAgICAgICAgIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlLgotICoKLSAq
IEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIHRoZSBzZXR0aW5nIGNvdWxkIGJlIGNoYW5nZWQgc3Vj
Y2Vzc2Z1bGx5LAotICogICAgICAgICBAYyBFSU5BX0ZBTFNFIGluIGNhc2UgYW4gZXJyb3Igb2Nj
dXJyZWQuCi0gKi8KLUVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3NldHRpbmdfc2NyaXB0c19j
YW5fY2xvc2Vfd2luZG93c19zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBhbGxvdyk7Ci0K
LS8qKgotICogUmV0dXJucyB3aGV0aGVyIHNjcmlwdHMgY2FuIGFjY2VzcyBjbGlwYm9hcmQuCi0g
KgotICogQHBhcmFtIG8gVmlldyB3aG9zZSBzZXR0aW5ncyB0byBjaGVjay4KLSAqCi0gKiBAcmV0
dXJuIEBjIEVJTkFfVFJVRSBpZiBzY3JpcHRzIGNhbiBhY2Nlc3MgY2xpcGJvYXJkLCBAYyBFSU5B
X0ZBTFNFIG90aGVyd2lzZS4KLSAqLwotRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfc2V0dGlu
Z19zY3JpcHRzX2Nhbl9hY2Nlc3NfY2xpcGJvYXJkX2dldChjb25zdCBFdmFzX09iamVjdCAqbyk7
Ci0KLS8qKgotICogU2V0cyB3aGV0aGVyIHNjcmlwdHMgYXJlIGFsbG93ZWQgdG8gYWNjZXNzIGNs
aXBib2FyZC4KLSAqCi0gKiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBAYyBFSU5BX0ZBTFNFLiBJZiBz
ZXQgdG8gQGMgRUlOQV9UUlVFLCBkb2N1bWVudC5leGVjQ29tbWFuZCgpCi0gKiBhbGxvd3MgY3V0
LCBjb3B5IGFuZCBwYXN0ZSBjb21tYW5kcy4gCi0gKgotICogQHBhcmFtIG8gVmlldyB3aG9zZSBz
ZXR0aW5ncyB0byBjaGFuZ2UuCi0gKiBAcGFyYW0gYWxsb3cgQGMgRUlOQV9UUlVFIHRvIGFsbG93
IHNjcmlwdHMgYWNjZXNzIGNsaXBib2FyZCwKLSAqICAgICAgICAgICAgICBAYyBFSU5BX0ZBTFNF
IG90aGVyd2lzZS4KLSAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiB0aGUgc2V0dGluZyBj
b3VsZCBiZSBjaGFuZ2VkIHN1Y2Nlc3NmdWxseSwKLSAqICAgICAgICAgQGMgRUlOQV9GQUxTRSBp
biBjYXNlIGFuIGVycm9yIG9jY3VycmVkLgotICovCi1FQVBJIEVpbmFfQm9vbCAgICBld2tfdmll
d19zZXR0aW5nX3NjcmlwdHNfY2FuX2FjY2Vzc19jbGlwYm9hcmRfc2V0KEV2YXNfT2JqZWN0ICpv
LCBFaW5hX0Jvb2wgYWxsb3cpOwotCi0vKioKLSAqIFF1ZXJpZXMgaWYgSFRNTCBlbGVtZW50cyBA
YyB0ZXh0YXJlYSBjYW4gYmUgcmVzaXphYmxlLgotICoKLSAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0
IHRvIHF1ZXJ5IGlmIHRoZSB0ZXh0YXJlYSBlbGVtZW50cyBjYW4gYmUgcmVzaXphYmxlCi0gKgot
ICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgdGhlIHRleHRhcmVhIGVsZW1lbnRzIGNhbiBiZSBy
ZXNpemFibGUKLSAqICAgICAgICAgQGMgRUlOQV9GQUxTRSBpZiBub3Qgb3Igb24gZmFpbHVyZQot
ICovCi1FQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld19zZXR0aW5nX3Jlc2l6YWJsZV90ZXh0YXJl
YXNfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKLQotLyoqCi0gKiBFbmFibGVzL2Rpc2FibGVz
IGlmIEhUTUwgZWxlbWVudHMgQGMgdGV4dGFyZWEgY2FuIGJlIHJlc2l6YWJsZS4KLSAqCi0gKiBA
cGFyYW0gbyB2aWV3IG9iamVjdCB0byBzZXQgaWYgdGhlIHRleHRhcmVhIGVsZW1lbnRzIGNhbiBi
ZSByZXNpemFibGUKLSAqIEBwYXJhbSBlbmFibGUgQGMgRUlOQV9UUlVFIGlmIHRoZSB0ZXh0YXJl
YSBlbGVtZW50cyBjYW4gYmUgcmVzaXphYmxlCi0gKiAgICAgICAgQGMgRUlOQV9GQUxTRSBpZiBu
b3QKLSAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzIG9yIEBjIEVJTkFfRkFM
U0Ugb24gZmFpbHVyZQotICovCi1FQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld19zZXR0aW5nX3Jl
c2l6YWJsZV90ZXh0YXJlYXNfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgZW5hYmxlKTsK
LQotLyoqCi0gKiBHZXRzIHRoZSB1c2VyIHN0eWxlIHNoZWV0LgotICoKLSAqIEBwYXJhbSBvIHZp
ZXcgb2JqZWN0IHRvIGdldCB0aGUgdXNlciBzdHlsZSBzaGVldAotICoKLSAqIEByZXR1cm4gdGhl
IHVzZXIgc3R5bGUgc2hlZXQKLSAqLwotRUFQSSBjb25zdCBjaGFyICAqZXdrX3ZpZXdfc2V0dGlu
Z191c2VyX3N0eWxlc2hlZXRfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKLQotLyoqCi0gKiBT
ZXRzIHRoZSB1c2VyIHN0eWxlIHNoZWV0LgotICoKLSAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRv
IHNldCB0aGUgdXNlciBzdHlsZSBzaGVldAotICogQHBhcmFtIHVyaSB1bmlmb3JtIHJlc291cmNl
IGlkZW50aWZpZXIgdG8gdXNlciBzdHlsZSBzaGVldAotICoKLSAqIEByZXR1cm4gQGMgRUlOQV9U
UlVFIG9uIHN1Y2Nlc3Mgb3IgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJlCi0gKi8KLUVBUEkgRWlu
YV9Cb29sICAgIGV3a192aWV3X3NldHRpbmdfdXNlcl9zdHlsZXNoZWV0X3NldChFdmFzX09iamVj
dCAqbywgY29uc3QgY2hhciAqdXJpKTsKLQotLyoqCi0gKiBRdWVyaWVzIGlmIHRoZSBwcml2YXRl
IGJyb3dzaW5nIGZlYXR1cmUgaXMgZW5hYmxlZC4KLSAqCi0gKiBAcGFyYW0gbyB2aWV3IG9iamVj
dCB0byBxdWVyeSBpZiB0aGUgcHJpdmF0ZSBicm93c2luZyBmZWF0dXJlIGlzIGVuYWJsZWQKLSAq
Ci0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiB0aGUgcHJpdmF0ZSBicm93c2luZyBmZWF0dXJl
IGlzIGVuYWJsZWQsIG9yCi0gKiAgICAgICAgIEBjIEVJTkFfRkFMU0UgaWYgbm90IG9yIG9uIGZh
aWx1cmUKLSAqCi0gKiBAc2VlIGV3a192aWV3X3NldHRpbmdfcHJpdmF0ZV9icm93c2luZ19zZXQK
LSAqLwotRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfc2V0dGluZ19wcml2YXRlX2Jyb3dzaW5n
X2dldChjb25zdCBFdmFzX09iamVjdCAqbyk7Ci0KLS8qKgotICogRW5hYmxlcy9kaXNhYmxlcyB0
aGUgcHJpdmF0ZSBicm93c2luZyBmZWF0dXJlLgotICoKLSAqIFdoZW4gdGhpcyBvcHRpb24gaXMg
c2V0LCBXZWJDb3JlIHdpbGwgYXZvaWQgc3RvcmluZyBhbnkgcmVjb3JkIG9mIGJyb3dzaW5nCi0g
KiBhY3Rpdml0eSAgdGhhdCBtYXkgcGVyc2lzdCBvbiBkaXNrIG9yIHJlbWFpbiBkaXNwbGF5ZWQg
d2hlbiB0aGUKLSAqIG9wdGlvbiBpcyByZXNldC4KLSAqCi0gKiBUaGlzIG9wdGlvbiBkb2VzIG5v
dCBhZmZlY3QgdGhlIHN0b3JhZ2Ugb2Ygc3VjaCBpbmZvcm1hdGlvbiBpbiBSQU0uCi0gKgotICog
VGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgcmVzcGVjdCB0aGlzIHNldHRpbmc6Ci0gKiAgLSBIVE1M
NS9ET00gU3RvcmFnZQotICogIC0gSWNvbiBEYXRhYmFzZQotICogIC0gQ29uc29sZSBNZXNzYWdl
cwotICogIC0gTWVtb3J5Q2FjaGUKLSAqICAtIEFwcGxpY2F0aW9uIENhY2hlCi0gKiAgLSBCYWNr
L0ZvcndhcmQgUGFnZSBIaXN0b3J5Ci0gKiAgLSBQYWdlIFNlYXJjaCBSZXN1bHRzCi0gKiAgLSBI
VFRQIENvb2tpZXMKLSAqICAtIFBsdWctaW5zICh0aGF0IHN1cHBvcnQgTlBOVnByaXZhdGVNb2Rl
Qm9vbCkKLSAqCi0gKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBzZXQgdGhlIHByaXZhdGUgYnJv
d3NpbmcgZmVhdHVyZQotICogQHBhcmFtIGVuYWJsZSBAYyBFSU5BX1RSVUUgdG8gZW5hYmxlIHRo
ZSBwcml2YXRlIGJyb3dzaW5nIGZlYXR1cmUKLSAqICAgICAgICBAYyBFSU5BX0ZBTFNFIHRvIGRp
c2FibGUKLSAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzIG9yIEBjIEVJTkFf
RkFMU0Ugb24gZmFpbHVyZQotICovCi1FQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld19zZXR0aW5n
X3ByaXZhdGVfYnJvd3Npbmdfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgZW5hYmxlKTsK
LQotLyoqCi0gKiBSZXR1cm5zIHdoZXRoZXIgSFRNTDUgYXBwbGljYXRpb24gY2FjaGUgc3VwcG9y
dCBpcyBlbmFibGVkIGZvciB0aGlzIHZpZXcuCi0gKgotICogVGhlIE9mZmxpbmUgQXBwbGljYXRp
b24gQ2FjaGluZyBBUElzIGFyZSBwYXJ0IG9mIEhUTUw1IGFuZCBhbGxvdyBhcHBsaWNhdGlvbnMg
dG8gc3RvcmUgZGF0YSBsb2NhbGx5IHRoYXQgaXMgYWNjZXNzZWQKLSAqIHdoZW4gdGhlIG5ldHdv
cmsgY2Fubm90IGJlIHJlYWNoZWQuCi0gKgotICogQXBwbGljYXRpb24gY2FjaGUgc3VwcG9ydCBp
cyBlbmFibGVkIGJ5IGRlZmF1bHQuCi0gKgotICogQHBhcmFtIG8gdmlldyBvYmplY3Qgd2hvc2Ug
c2V0dGluZ3MgdG8gcXVlcnkKLSAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiB0aGUgYXBw
bGljYXRpb24gY2FjaGUgaXMgZW5hYmxlZCwKLSAqICAgICAgICAgQGMgRUlOQV9GQUxTRSBpZiBu
b3Qgb3Igb24gZmFpbHVyZQotICoKLSAqIEBzYSBld2tfc2V0dGluZ3NfYXBwbGljYXRpb25fY2Fj
aGVfcGF0aF9zZXQKLSAqLwotRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfc2V0dGluZ19hcHBs
aWNhdGlvbl9jYWNoZV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOwotCi0vKioKLSAqIEVuYWJs
ZXMvZGlzYWJsZXMgdGhlIEhUTUw1IGFwcGxpY2F0aW9uIGNhY2hlIGZvciB0aGlzIHZpZXcuCi0g
KgotICogVGhlIE9mZmxpbmUgQXBwbGljYXRpb24gQ2FjaGluZyBBUElzIGFyZSBwYXJ0IG9mIEhU
TUw1IGFuZCBhbGxvdyBhcHBsaWNhdGlvbnMgdG8gc3RvcmUgZGF0YSBsb2NhbGx5IHRoYXQgaXMg
YWNjZXNzZWQKLSAqIHdoZW4gdGhlIG5ldHdvcmsgY2Fubm90IGJlIHJlYWNoZWQuCi0gKgotICog
QXBwbGljYXRpb24gY2FjaGUgc3VwcG9ydCBpcyBlbmFibGVkIGJ5IGRlZmF1bHQuCi0gKgotICog
QHBhcmFtIG8gdmlldyBvYmplY3Qgd2hvc2Ugc2V0dGluZ3MgdG8gY2hhbmdlCi0gKiBAcGFyYW0g
ZW5hYmxlIEBjIEVJTkFfVFJVRSB0byBlbmFibGUgdGhlIGFwcGxpY2F0aW9uIGNhY2hlLAotICog
ICAgICAgIEBjIEVJTkFfRkFMU0UgdG8gZGlzYWJsZQotICoKLSAqIEByZXR1cm4gQGMgRUlOQV9U
UlVFIG9uIHN1Y2Nlc3Mgb3IgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJlCi0gKgotICogQHNhIGV3
a19zZXR0aW5nc19hcHBsaWNhdGlvbl9jYWNoZV9wYXRoX3NldAotICovCi1FQVBJIEVpbmFfQm9v
bCAgICBld2tfdmlld19zZXR0aW5nX2FwcGxpY2F0aW9uX2NhY2hlX3NldChFdmFzX09iamVjdCAq
bywgRWluYV9Cb29sIGVuYWJsZSk7Ci0KLS8qKgotICogUXVlcmllcyBpZiB0aGUgY2FyZXQgYnJv
d3NpbmcgZmVhdHVyZSBpcyBlbmFibGVkLgotICoKLSAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRv
IHF1ZXJ5IGlmIHRoZSBjYXJldCBicm93c2luZyBmZWF0dXJlIGlzIGVuYWJsZWQKLSAqCi0gKiBA
cmV0dXJuIEBjIEVJTkFfVFJVRSBpZiB0aGUgY2FyZXQgYnJvd3NpbmcgZmVhdHVyZSBpcyBlbmFi
bGVkLAotICogICAgICAgICBAYyBFSU5BX0ZBTFNFIGlmIG5vdCBvciBvbiBmYWlsdXJlCi0gKi8K
LUVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3NldHRpbmdfY2FyZXRfYnJvd3NpbmdfZ2V0KGNv
bnN0IEV2YXNfT2JqZWN0ICpvKTsKLQotLyoqCi0gKiBFbmFibGVzL2Rpc2FibGVzIHRoZSBjYXJl
dCBicm93c2luZyBmZWF0dXJlLgotICoKLSAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIHNldCBj
YXJldCBicm93c2luZyBmZWF0dXJlCi0gKiBAcGFyYW0gZW5hYmxlIEBjIEVJTkFfVFJVRSB0byBl
bmFibGUgdGhlIGNhcmV0IGJyb3dzaW5nIGZlYXR1cmUKLSAqICAgICAgICBAYyBFSU5BX0ZBTFNF
IHRvIGRpc2FibGUKLSAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzIG9yIEBj
IEVJTkFfRkFMU0Ugb24gZmFpbHVyZQotICovCi1FQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld19z
ZXR0aW5nX2NhcmV0X2Jyb3dzaW5nX3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIGVuYWJs
ZSk7Ci0KLS8qKgotICogR2V0cyB0aGUgY3VycmVudCBlbmNvZGluZy4KLSAqCi0gKiBAcGFyYW0g
byB2aWV3IG9iamVjdCB0byBnZXQgdGhlIGN1cnJlbnQgZW5jb2RpbmcKLSAqCi0gKiBAcmV0dXJu
IEBjIGVpbmFfc3RyaW5zaGFyZSBjb250YWluaW5nIHRoZSBjdXJyZW50IGVuY29kaW5nLCBvcgot
ICogICAgICAgICBAYyBOVUxMIGlmIGl0J3Mgbm90IHNldAotICovCi1FQVBJIGNvbnN0IGNoYXIg
ICpld2tfdmlld19zZXR0aW5nX2VuY29kaW5nX2N1c3RvbV9nZXQoY29uc3QgRXZhc19PYmplY3Qg
Km8pOwotCi0vKioKLSAqIFNldHMgdGhlIGVuY29kaW5nIGFuZCByZWxvYWRzIHRoZSBwYWdlLgot
ICoKLSAqIEBwYXJhbSBvIHZpZXcgdG8gc2V0IHRoZSBlbmNvZGluZwotICogQHBhcmFtIGVuY29k
aW5nIHRoZSBuZXcgZW5jb2RpbmcgdG8gc2V0IG9yIEBjIE5VTEwgdG8gcmVzdG9yZSB0aGUgZGVm
YXVsdCBvbmUKLSAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzIEBjIEVJTkFf
RkFMU0Ugb3RoZXJ3aXNlCi0gKi8KLUVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3NldHRpbmdf
ZW5jb2RpbmdfY3VzdG9tX3NldChFdmFzX09iamVjdCAqbywgY29uc3QgY2hhciAqZW5jb2Rpbmcp
OwotCi0vKioKLSAqIEdldHMgdGhlIGRlZmF1bHQgZW5jb2RpbmcuCi0gKgotICogQHBhcmFtIG8g
dmlldyBvYmplY3QgdG8gZ2V0IHRoZSBkZWZhdWx0IGVuY29kaW5nCi0gKgotICogQHJldHVybiBA
YyBlaW5hX3N0cmluc2hhcmUgY29udGFpbmluZyB0aGUgZGVmYXVsdCBlbmNvZGluZywgb3IKLSAq
ICAgICAgICAgQGMgTlVMTCBpZiBpdCdzIG5vdCBzZXQKLSAqLwotRUFQSSBjb25zdCBjaGFyICAq
ZXdrX3ZpZXdfc2V0dGluZ19lbmNvZGluZ19kZWZhdWx0X2dldChjb25zdCBFdmFzX09iamVjdCAq
byk7Ci0KLS8qKgotICogU2V0cyB0aGUgZGVmYXVsdCBlbmNvZGluZy4KLSAqCi0gKiBAcGFyYW0g
byB2aWV3IHRvIHNldCB0aGUgZGVmYXVsdCBlbmNvZGluZwotICogQHBhcmFtIGVuY29kaW5nIHRo
ZSBuZXcgZW5jb2RpbmcgdG8gc2V0Ci0gKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3Vj
Y2VzcyBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZQotICovCi1FQVBJIEVpbmFfQm9vbCAgICBld2tf
dmlld19zZXR0aW5nX2VuY29kaW5nX2RlZmF1bHRfc2V0KEV2YXNfT2JqZWN0ICpvLCBjb25zdCBj
aGFyICplbmNvZGluZyk7Ci0KLS8qKgotICogR2V0cyB0aGUgbWluaW11bSBmb250IHNpemUuCi0g
KgotICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gZ2V0IHRoZSBtaW5pbXVtIGZvbnQgc2l6ZQot
ICoKLSAqIEByZXR1cm4gdGhlIG1pbmltdW0gZm9udCBzaXplLCBvciBAYyAwIG9uIGZhaWx1cmUK
LSAqLwotRUFQSSBpbnQgICAgICAgICAgZXdrX3ZpZXdfc2V0dGluZ19mb250X21pbmltdW1fc2l6
ZV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOwotCi0vKioKLSAqIFNldHMgdGhlIG1pbmltdW0g
Zm9udCBzaXplLgotICoKLSAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIHNldCB0aGUgbWluaW11
bSBmb250IHNpemUKLSAqIEBwYXJhbSBzaXplIGEgbmV3IG1pbmltdW0gZm9udCBzaXplIHRvIHNl
dAotICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3MgQGMgRUlOQV9GQUxTRSBv
dGhlcndpc2UKLSAqLwotRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfc2V0dGluZ19mb250X21p
bmltdW1fc2l6ZV9zZXQoRXZhc19PYmplY3QgKm8sIGludCBzaXplKTsKLQotLyoqCi0gKiBHZXRz
IHRoZSBtaW5pbXVtIGxvZ2ljYWwgZm9udCBzaXplLgotICoKLSAqIEBwYXJhbSBvIHZpZXcgb2Jq
ZWN0IHRvIGdldCB0aGUgbWluaW11bSBsb2dpY2FsIGZvbnQgc2l6ZQotICoKLSAqIEByZXR1cm4g
dGhlIG1pbmltdW0gbG9naWNhbCBmb250IHNpemUsIG9yIEBjIDAgb24gZmFpbHVyZQotICovCi1F
QVBJIGludCAgICAgICAgICBld2tfdmlld19zZXR0aW5nX2ZvbnRfbWluaW11bV9sb2dpY2FsX3Np
emVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKLQotLyoqCi0gKiBTZXRzIHRoZSBtaW5pbXVt
IGxvZ2ljYWwgZm9udCBzaXplLgotICoKLSAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIHNldCB0
aGUgbWluaW11bSBmb250IHNpemUKLSAqIEBwYXJhbSBzaXplIGEgbmV3IG1pbmltdW0gbG9naWNh
bCBmb250IHNpemUgdG8gc2V0Ci0gKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2Vz
cyBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZQotICovCi1FQVBJIEVpbmFfQm9vbCAgICBld2tfdmll
d19zZXR0aW5nX2ZvbnRfbWluaW11bV9sb2dpY2FsX3NpemVfc2V0KEV2YXNfT2JqZWN0ICpvLCBp
bnQgc2l6ZSk7Ci0KLS8qKgotICogR2V0cyB0aGUgZGVmYXVsdCBmb250IHNpemUuCi0gKgotICog
QHBhcmFtIG8gdmlldyBvYmplY3QgdG8gZ2V0IHRoZSBkZWZhdWx0IGZvbnQgc2l6ZQotICoKLSAq
IEByZXR1cm4gdGhlIGRlZmF1bHQgZm9udCBzaXplLCBvciBAYyAwIG9uIGZhaWx1cmUKLSAqLwot
RUFQSSBpbnQgICAgICAgICAgZXdrX3ZpZXdfc2V0dGluZ19mb250X2RlZmF1bHRfc2l6ZV9nZXQo
Y29uc3QgRXZhc19PYmplY3QgKm8pOwotCi0vKioKLSAqIFNldHMgdGhlIGRlZmF1bHQgZm9udCBz
aXplLgotICoKLSAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIHNldCB0aGUgZGVmYXVsdCBmb250
IHNpemUKLSAqIEBwYXJhbSBzaXplIGEgbmV3IGRlZmF1bHQgZm9udCBzaXplIHRvIHNldAotICoK
LSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3MgQGMgRUlOQV9GQUxTRSBvdGhlcndp
c2UKLSAqLwotRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfc2V0dGluZ19mb250X2RlZmF1bHRf
c2l6ZV9zZXQoRXZhc19PYmplY3QgKm8sIGludCBzaXplKTsKLQotLyoqCi0gKiBHZXRzIHRoZSBN
b25vc3BhY2UgZm9udCBzaXplLgotICoKLSAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIGdldCB0
aGUgTW9ub3NwYWNlIGZvbnQgc2l6ZQotICoKLSAqIEByZXR1cm4gdGhlIE1vbm9zcGFjZSBmb250
IHNpemUsIG9yIEBjIDAgb24gZmFpbHVyZQotICovCi1FQVBJIGludCAgICAgICAgICBld2tfdmll
d19zZXR0aW5nX2ZvbnRfbW9ub3NwYWNlX3NpemVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsK
LQotLyoqCi0gKiBTZXRzIHRoZSBNb25vc3BhY2UgZm9udCBzaXplLgotICoKLSAqIEBwYXJhbSBv
IHZpZXcgb2JqZWN0IHRvIHNldCB0aGUgTW9ub3NwYWNlIGZvbnQgc2l6ZQotICogQHBhcmFtIHNp
emUgYSBuZXcgTW9ub3NwYWNlIGZvbnQgc2l6ZSB0byBzZXQKLSAqCi0gKiBAcmV0dXJuIEBjIEVJ
TkFfVFJVRSBvbiBzdWNjZXNzIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlCi0gKi8KLUVBUEkgRWlu
YV9Cb29sICAgIGV3a192aWV3X3NldHRpbmdfZm9udF9tb25vc3BhY2Vfc2l6ZV9zZXQoRXZhc19P
YmplY3QgKm8sIGludCBzaXplKTsKLQotLyoqCi0gKiBHZXRzIHRoZSBuYW1lIG9mIGZvbnQgZm9y
IHRoZSBnaXZlbiBmb250IGZhbWlseS4KLSAqCi0gKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBn
ZXQgbmFtZSBvZiBmb250IHRoZSBmb3IgZm9udCBmYW1pbHkKLSAqIEBwYXJhbSBmb250X2ZhbWls
eSB0aGUgZm9udCBmYW1pbHkgYXMgQGEgRXdrX0ZvbnRfRmFtaWx5IGVudW0gdG8gZ2V0IGZvbnQg
bmFtZQotICoKLSAqIEByZXR1cm4gdGhlIG5hbWUgb2YgZm9udCBmYW1pbHkKLSAqLwotRUFQSSBj
b25zdCBjaGFyICpld2tfdmlld19mb250X2ZhbWlseV9uYW1lX2dldChjb25zdCBFdmFzX09iamVj
dCAqbywgRXdrX0ZvbnRfRmFtaWx5IGZvbnRfZmFtaWx5KTsKLQotLyoqCi0gKiBTZXRzIHRoZSBm
b250IGZvciB0aGUgZ2l2ZW4gZmFtaWx5LgotICoKLSAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRv
IHNldCBmb250IGZvciB0aGUgZ2l2ZW4gZmFtaWx5Ci0gKiBAcGFyYW0gZm9udF9mYW1pbHkgdGhl
IGZvbnQgZmFtaWx5IGFzIEBhIEV3a19Gb250X0ZhbWlseSBlbnVtCi0gKiBAcGFyYW0gbmFtZSB0
aGUgZm9udCBuYW1lIHRvIHNldAotICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nl
c3Mgb3IgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJlCi0gKi8KLUVBUEkgRWluYV9Cb29sIGV3a192
aWV3X2ZvbnRfZmFtaWx5X25hbWVfc2V0KEV2YXNfT2JqZWN0ICpvLCBFd2tfRm9udF9GYW1pbHkg
Zm9udF9mYW1pbHksIGNvbnN0IGNoYXIgKm5hbWUpOwotCi0vKioKLSAqIFF1ZXJpZXMgaWYgdGhl
IHNwYXRpYWwgbmF2aWFndGlvbiBmZWF0dXJlIGlzIGVuYWJsZWQuCi0gKgotICogQHBhcmFtIG8g
dmlldyBvYmplY3QgdG8gcXVlcnkgaWYgc3BhdGlhbCBuYXZpZ2F0aW9uIGZlYXR1cmUgaXMgZW5h
YmxlZAotICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIHNwYXRpYWwgbmF2aWdhdGlvbiBp
cyBlbmFibGVkLAotICogICAgICAgICBAYyBFSU5BX0ZBTFNFIGlmIG5vdCBvciBvbiBmYWlsdXJl
Ci0gKi8KLUVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3NldHRpbmdfc3BhdGlhbF9uYXZpZ2F0
aW9uX2dldChjb25zdCBFdmFzX09iamVjdCAqbyk7Ci0KLS8qKgotICogRW5hYmxlcy9kaXNhYmxl
cyB0aGUgc3BhdGlhbCBuYXZpZ2F0aW9uIGZlYXR1cmUuCi0gKgotICogQHBhcmFtIG8gdmlldyBv
YmplY3QgdG8gc2V0IHNwYXRpYWwgbmF2aWdhdGlvbiBmZWF0dXJlCi0gKiBAcGFyYW0gZW5hYmxl
IEBjIEVJTkFfVFJVRSB0byBlbmFibGUgdGhlIHNwYXRpYWwgbmF2aWdhdGlvbiBmZWF0dXJlLAot
ICogICAgICAgIEBjIEVJTkFfRkFMU0UgdG8gZGlzYWJsZQotICoKLSAqIEByZXR1cm4gQGMgRUlO
QV9UUlVFIG9uIHN1Y2Nlc3Mgb3IgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJlCi0gKi8KLUVBUEkg
RWluYV9Cb29sICAgIGV3a192aWV3X3NldHRpbmdfc3BhdGlhbF9uYXZpZ2F0aW9uX3NldChFdmFz
X09iamVjdCAqbywgRWluYV9Cb29sIGVuYWJsZSk7Ci0KLS8qKgotICogUXVlcmllcyBpZiB0aGUg
bG9jYWwgc3RvcmFnZSBmZWF0dXJlIG9mIEhUTUw1IGlzIGVuYWJsZWQuCi0gKgotICogQHBhcmFt
IG8gdmlldyBvYmplY3QgdG8gcXVlcnkgaWYgdGhlIGxvY2FsIHN0b3JhZ2UgZmVhdHVyZSBpcyBl
bmFibGVkCi0gKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgbG9jYWwgc3RvcmFnZSBpcyBl
bmFibGVkLAotICogICAgICAgICBAYyBFSU5BX0ZBTFNFIGlmIG5vdCBvciBvbiBmYWlsdXJlCi0g
Ki8KLUVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3NldHRpbmdfbG9jYWxfc3RvcmFnZV9nZXQo
Y29uc3QgRXZhc19PYmplY3QgKm8pOwotCi0vKioKLSAqIEVuYWJsZXMvZGlzYWJsZXMgdGhlIGxv
Y2FsIHN0b3JhZ2UgZmVhdHVyZSBvZiBIVE1MNS4KLSAqCi0gKiBQbGVhc2Ugbm90aWNlIHRoYXQg
YnkgZGVmYXVsdCB0aGVyZSBpcyBubyBzdG9yYWdlIHBhdGggc3BlY2lmaWVkIGZvciB0aGUgZGF0
YWJhc2UuCi0gKiBUaGlzIG1lYW5zIHRoYXQgdGhlIGNvbnRlbnRzIG9mIEBjIHdpbmRvdy5sb2Nh
bFN0b3JhZ2Ugd2lsbCBub3QgYmUgc2F2ZWQgdG8gZGlzayBhbmQKLSAqIHdpbGwgYmUgbG9zdCB3
aGVuIHRoZSB2aWV3IGlzIHJlbW92ZWQuCi0gKiBUbyBzZXQgdGhlIHBhdGggd2hlcmUgdGhlIHN0
b3JhZ2UgZGF0YWJhc2Ugd2lsbCBiZSBzdG9yZWQsIHVzZQotICogZXdrX3ZpZXdfc2V0dGluZ19s
b2NhbF9zdG9yYWdlX2RhdGFiYXNlX3BhdGhfc2V0LgotICoKLSAqIEBwYXJhbSBvIHZpZXcgb2Jq
ZWN0IHRvIHNldCBpZiBsb2NhbCBzdG9yYWdlIGlzIGVuYWJsZWQKLSAqIEBwYXJhbSBlbmFibGUg
QGMgRUlOQV9UUlVFIHRvIGVuYWJsZSB0aGUgbG9jYWwgc3RvcmFnZSBmZWF0dXJlLAotICogICAg
ICAgIEBjIEVJTkFfRkFMU0UgdG8gZGlzYWJsZQotICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVF
IG9uIHN1Y2Nlc3Mgb3IgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJlCi0gKgotICogQHNhIGV3a192
aWV3X3NldHRpbmdfbG9jYWxfc3RvcmFnZV9kYXRhYmFzZV9wYXRoX3NldAotICovCi1FQVBJIEVp
bmFfQm9vbCAgICBld2tfdmlld19zZXR0aW5nX2xvY2FsX3N0b3JhZ2Vfc2V0KEV2YXNfT2JqZWN0
ICpvLCBFaW5hX0Jvb2wgZW5hYmxlKTsKLQotLyoqCi0gKiBSZXR1cm5zIHRoZSBwYXRoIHdoZXJl
IHRoZSBIVE1MNSBsb2NhbCBzdG9yYWdlIGRhdGFiYXNlIGlzIHN0b3JlZCBvbiBkaXNrLgotICoK
LSAqIEJ5IGRlZmF1bHQsIHRoZXJlIGlzIG5vIHBhdGggc2V0LCB3aGljaCBtZWFucyBjaGFuZ2Vz
IHRvIEBjIHdpbmRvdy5sb2NhbFN0b3JhZ2Ugd2lsbCBub3QKLSAqIGJlIHNhdmVkIHRvIGRpc2sg
d2hhdHNvZXZlci4KLSAqCi0gKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBnZXQgdGhlIGRhdGFi
YXNlIHBhdGggdG8gdGhlIGxvY2FsIHN0b3JhZ2UgZmVhdHVyZQotICoKLSAqIEByZXR1cm4gQGMg
ZWluYV9zdHJpbmdzaGFyZSBjb250YWluaW5nIHRoZSBkYXRhYmFzZSBwYXRoIHRvIHRoZSBsb2Nh
bCBzdG9yYWdlIGZlYXR1cmUsIG9yCi0gKiAgICAgICAgIEBjIE5VTEwgaWYgaXQncyBub3Qgc2V0
Ci0gKgotICogQHNhIGV3a192aWV3X3NldHRpbmdfbG9jYWxfc3RvcmFnZV9kYXRhYmFzZV9wYXRo
X3NldAotICovCi1FQVBJIGNvbnN0IGNoYXIgICpld2tfdmlld19zZXR0aW5nX2xvY2FsX3N0b3Jh
Z2VfZGF0YWJhc2VfcGF0aF9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOwotCi0vKioKLSAqIFNl
dHMgdGhlIHBhdGggd2hlcmUgdGhlIEhUTUw1IGxvY2FsIHN0b3JhZ2UgZGF0YWJhc2UgaXMgc3Rv
cmVkIG9uIGRpc2suCi0gKgotICogQnkgZGVmYXVsdCwgdGhlcmUgaXMgbm8gcGF0aCBzZXQsIHdo
aWNoIG1lYW5zIGNoYW5nZXMgdG8gQGMgd2luZG93LmxvY2FsU3RvcmFnZSB3aWxsIG5vdAotICog
YmUgc2F2ZWQgdG8gZGlzayB3aGF0c29ldmVyLgotICoKLSAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0
IHRvIHNldCB0aGUgZGF0YWJhc2UgcGF0aCB0byB0aGUgbG9jYWwgc3RvcmFnZSBmZWF0dXJlCi0g
KiBAcGFyYW0gcGF0aCBhIG5ldyBkYXRhYmFzZSBwYXRoIHRvIHRoZSBsb2NhbCBzdG9yYWdlIGZl
YXR1cmUKLSAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzIG9yIEBjIEVJTkFf
RkFMU0Ugb24gZmFpbHVyZQotICoKLSAqIEBzYSBld2tfdmlld19zZXR0aW5nX2xvY2FsX3N0b3Jh
Z2Vfc2V0Ci0gKi8KLUVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3NldHRpbmdfbG9jYWxfc3Rv
cmFnZV9kYXRhYmFzZV9wYXRoX3NldChFdmFzX09iamVjdCAqbywgY29uc3QgY2hhciAqcGF0aCk7
Ci0KLS8qKgotICogUXVlcmllcyBpZiB0aGUgcGFnZSBjYWNoZSBmZWF0dXJlIGlzIGVuYWJsZWQu
Ci0gKgotICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gcXVlcnkgaWYgcGFnZSBjYWNoZSBmZWF0
dXJlIGlzIGVuYWJsZWQKLSAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiBwYWdlIGNhY2hl
IGlzIGVuYWJsZWQsCi0gKiAgICAgICAgIEBjIEVJTkFfRkFMU0UgaWYgbm90IG9yIG9uIGZhaWx1
cmUKLSAqLwotRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfc2V0dGluZ19wYWdlX2NhY2hlX2dl
dChjb25zdCBFdmFzX09iamVjdCAqbyk7Ci0KLS8qKgotICogRW5hYmxlcy9kaXNhYmxlcyB0aGUg
cGFnZSBjYWNoZSBmZWF0dXJlLgotICoKLSAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIHNldCBw
YWdlIGNhY2hlIGZlYXR1cmUKLSAqIEBwYXJhbSBlbmFibGUgQGMgRUlOQV9UUlVFIHRvIGVuYWJs
ZSB0aGUgcGFnZSBjYWNoZSBmZWF0dXJlLAotICogICAgICAgIEBjIEVJTkFfRkFMU0UgdG8gZGlz
YWJsZQotICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3Mgb3IgQGMgRUlOQV9G
QUxTRSBvbiBmYWlsdXJlCi0gKi8KLUVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3NldHRpbmdf
cGFnZV9jYWNoZV9zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBlbmFibGUpOwotCi0vKioK
LSAqIFF1ZXJpZXMgaWYgdGhlIGVuY29kaW5nIGRldGVjdG9yIGlzIGVuYWJsZWQuCi0gKgotICog
QHBhcmFtIG8gdmlldyBvYmplY3QgdG8gcXVlcnkgaWYgdGhlIGVuY29kaW5nIGRldGVjdG9yIGlz
IGVuYWJsZWQKLSAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiB0aGUgZW5jb2RpbmcgZmVh
dHVyZSBpcyBlbmFibGVkLAotICogICAgICAgICBAYyBFSU5BX0ZBTFNFIGlmIG5vdCBvciBvbiBm
YWlsdXJlCi0gKi8KLUVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3NldHRpbmdfZW5jb2Rpbmdf
ZGV0ZWN0b3JfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKLQotLyoqCi0gKiBFbmFibGVzL2Rp
c2FibGVzIHRoZSBlbmNvZGluZyBkZXRlY3Rvci4KLSAqCi0gKiBAcGFyYW0gbyB2aWV3IG9iamVj
dCB0byBzZXQgdGhlIGVuY29kaW5nIGRldGVjdG9yCi0gKiBAcGFyYW0gZW5hYmxlIEBjIEVJTkFf
VFJVRSB0byBlbmFibGUgdGhlIGVuY29kaW5nIGRldGVjdG9yLAotICogICAgICAgIEBjIEVJTkFf
RkFMU0UgdG8gZGlzYWJsZQotICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3Mg
b3IgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UKLSAqLwotRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3Zp
ZXdfc2V0dGluZ19lbmNvZGluZ19kZXRlY3Rvcl9zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9v
bCBlbmFibGUpOwotCi0vKioKLSAqIFF1ZXJpZXMgaWYgZGV2ZWxvcGVyIGV4dGVuc2lvbnMgYXJl
IGVuYWJsZWQuCi0gKgotICogQ3VycmVudGx5LCB0aGlzIGlzIHVzZWQgdG8ga25vdyB3aGV0aGVy
IHRoZSBXZWIgSW5zcGVjdG9yIGlzIGVuYWJsZWQgZm9yIGEKLSAqIGdpdmVuIHZpZXcuCi0gKgot
ICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gcXVlcnkgaWYgZGV2ZWxvcGVyIGV4dGVuc2lvbnMg
YXJlIGVuYWJsZWQKLSAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiBkZXZlbG9wZXIgZXh0
ZW5zaW9ucyBhcmUgZW5hYmxlZCwgQGMgRUlOQV9GQUxTRQotICogICAgICAgICBvdGhlcndpc2UK
LSAqLwotRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfZGV2ZWxvcGVy
X2V4dHJhc19nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOwotCi0vKioKLSAqIEVuYWJsZXMvZGlz
YWJsZXMgZGV2ZWxvcGVyIGV4dGVuc2lvbnMuCi0gKgotICogVGhpcyBjdXJyZW50bHkgY29udHJv
bHMgd2hldGhlciB0aGUgV2ViIEluc3BlY3RvciBzaG91bGQgYmUgZW5hYmxlZC4KLSAqCi0gKiBA
cGFyYW0gbyB2aWV3IG9iamVjdCB0byBzZXQgZGV2ZWxvcGVyIGV4dGVuc2lvbnMKLSAqIEBwYXJh
bSBlbmFibGUgQGMgRUlOQV9UUlVFIHRvIGVuYWJsZSBkZXZlbG9wZXIgZXh0cmFzLCBAYyBFSU5B
X0ZBTFNFIHRvCi0gKiAgICAgICAgICAgICAgIGRpc2FibGUKLSAqCi0gKiBAcmV0dXJuIEBjIEVJ
TkFfVFJVRSBvbiBzdWNjZXNzIG9yIEBFSU5BX0ZBTFNFIG9uIGZhaWx1cmUKLSAqLwotRUFQSSBF
aW5hX0Jvb2wgICAgZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfZGV2ZWxvcGVyX2V4dHJhc19zZXQo
RXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBlbmFibGUpOwotCi0vKioKLSAqIFNldHMgdGhlIG1p
bmltdW0gaW50ZXJ2YWwgZm9yIERPTVRpbWVycyBvbiBjdXJyZW50IHBhZ2UuCi0gKgotICogQHBh
cmFtIG8gdmlldyBvYmplY3QgdG8gc2V0IHRoZSBtaW5pbXVtIGludGVydmFsCi0gKgotICogQHJl
dHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcyBvciBAYyBFSU5BX0ZBTFNFIG9uIGZhaWx1cmUK
LSAqLwotRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfc2V0dGluZ19taW5pbXVtX3RpbWVyX2lu
dGVydmFsX3NldChFdmFzX09iamVjdCAqbywgZG91YmxlIGludGVydmFsKTsKLQotLyoqCi0gKiBH
ZXRzIHRoZSBtaW5pbXVtIGludGVydmFsIGZvciBET01UaW1lcnMgb24gY3VycmVudCBwYWdlLgot
ICoKLSAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIGdldCB0aGUgbWluaW11bSBpbnRlcnZhbAot
ICoKLSAqIEByZXR1cm4gdGhlIG1pbmltdW0gaW50ZXJ2YWwgb24gc3VjY2VzcyBvciBAYyAtMS4w
IG9uIGZhaWx1cmUKLSAqLwotRUFQSSBkb3VibGUgICAgICAgZXdrX3ZpZXdfc2V0dGluZ19taW5p
bXVtX3RpbWVyX2ludGVydmFsX2dldChjb25zdCBFdmFzX09iamVjdCAqbyk7Ci0KLS8qKgotICog
UXVlcmllcyB3aGV0aGVyIFdlYkdMIHN1cHBvcnQgaXMgZW5hYmxlZC4KLSAqCi0gKiBXZWJHTCBz
dXBwb3J0IGlzIGVuYWJsZWQgYnkgZGVmYXVsdC4KLSAqCi0gKiBAcGFyYW0gbyB2aWV3IG9iamVj
dCB0byBxdWVyeSB3aGV0aGVyIFdlYkdMIHN1cHBvcnQgaXMgZW5hYmxlZAotICoKLSAqIEByZXR1
cm4gQGMgRUlOQV9UUlVFIGlmIFdlYkdMIHN1cHBvcnQgZW5hYmxlZCwKLSAqICAgICAgICAgQGMg
RUlOQV9GQUxTRSBpZiBub3Qgb3Igb24gZmFpbHVyZQotICovCi1FQVBJIEVpbmFfQm9vbCBld2tf
dmlld19zZXR0aW5nX2VuYWJsZV93ZWJnbF9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOwotCi0v
KioKLSAqIEVuYWJsZXMvZGlzYWJsZXMgV2ViR0wgc3VwcG9ydC4KLSAqCi0gKiBXZWJHTCBzdXBw
b3J0IGlzIGVuYWJsZWQgYnkgZGVmYXVsdC4KLSAqCi0gKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0
byBzZXQgV2ViR0wKLSAqIEBwYXJhbSBlbmFibGUgQGMgRUlOQV9UUlVFIHRvIGVuYWJsZSBXZWJH
TCBzdXBwb3J0LAotICogICAgICAgIEBjIEVJTkFfRkFMU0UgdG8gZGlzYWJsZQotICoKLSAqIEBy
ZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3Mgb3IgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJl
Ci0gKi8KLUVBUEkgRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZW5hYmxlX3dlYmdsX3NldChF
dmFzX09iamVjdCAqbywgRWluYV9Cb29sIGVuYWJsZSk7Ci0KLS8qKgotICogUXVlcmllcyBpZiB0
YWIga2V5IGZvY3VzaW5nIG9mIHBhZ2UgZWxlbWVudHMgaXMgZW5hYmxlZC4KLSAqCi0gKiBXaGVu
IHRoaXMgc2V0dGluZyBpcyBlbmFibGVkLCB0aGUgZWxlbWVudHMgaW4gdGhlIHBhZ2UgKGxpbmtz
IGFuZCBmb3JtIGNvbnRyb2xzKSB3aWxsIGJlIGN5Y2xlZCB0aHJvdWdoIGJ5IHByZXNzaW5nIHRo
ZSB0YWIga2V5LgotICogVGFiIGtleSBmb2N1c2luZyBvZiBwYWdlIGVsZW1lbnRzIGlzIGVuYWJs
ZWQgYnkgZGVmYXVsdC4KLSAqCi0gKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBxdWVyeSBpZiB0
YWIga2V5IGZvY3VzaW5nIG9mIHBhZ2UgZWxlbWVudHMgaXMgZW5hYmxlZAotICoKLSAqIEByZXR1
cm4gQGMgRUlOQV9UUlVFIGlmIHRhYiBrZXkgZm9jdXNpbmcgb2YgcGFnZSBlbGVtZW50cyBpcyBl
bmFibGVkLCBAYyBFSU5BX0ZBTFNFCi0gKiAgICAgICAgIG90aGVyd2lzZQotICovCi1FQVBJIEVp
bmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2luY2x1ZGVfbGlua3NfaW5fZm9jdXNfY2hhaW5fZ2V0
KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKLQotLyoqCi0gKiBFbmFibGVzL2Rpc2FibGVzIHRhYiBr
ZXkgZm9jdXNpbmcgb2YgcGFnZSBlbGVtZW50cy4KLSAqCi0gKiBXaGVuIHRoaXMgc2V0dGluZyBp
cyBlbmFibGVkLCB0aGUgZWxlbWVudHMgaW4gdGhlIHBhZ2UgKGxpbmtzIGFuZCBmb3JtIGNvbnRy
b2xzKSB3aWxsIGJlIGN5Y2xlZCB0aHJvdWdoIGJ5IHByZXNzaW5nIHRoZSB0YWIga2V5LgotICog
VGFiIGtleSBmb2N1c2luZyBvZiBwYWdlIGVsZW1lbnRzIGlzIGVuYWJsZWQgYnkgZGVmYXVsdC4K
LSAqCi0gKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBzZXQgdGFiIGtleSBmb2N1c2luZyBvZiBw
YWdlIGVsZW1lbnRzCi0gKiBAcGFyYW0gZW5hYmxlIEBjIEVJTkFfVFJVRSB0byBlbmFibGUgdGFi
IGtleSBmb2N1c2luZyBvZiBwYWdlIGVsZW1lbnRzLCBAYyBFSU5BX0ZBTFNFIHRvCi0gKiAgICAg
ICAgICAgICAgIGRpc2FibGUKLSAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNz
IG9yIEBFSU5BX0ZBTFNFIG9uIGZhaWx1cmUKLSAqLwotRUFQSSBFaW5hX0Jvb2wgZXdrX3ZpZXdf
c2V0dGluZ19pbmNsdWRlX2xpbmtzX2luX2ZvY3VzX2NoYWluX3NldChFdmFzX09iamVjdCAqbywg
RWluYV9Cb29sIGVuYWJsZSk7Ci0KLS8qKgotICogUXVlcmllcyBpZiBoeXBlcmxpbmsgYXVkaXRp
bmcgaXMgZW5hYmxlZC4KLSAqCi0gKiBIeXBlcmxpbmsgYXVkaXRpbmcgaXMgdXNlZCBpZiBhIGh5
cGVybGluayBjcmVhdGVkIGJ5IGFuIEBjIGEgb3IgQGMgYXJlYSBlbGVtZW50IGhhcyBhIEBjIHBp
bmcgYXR0cmlidXRlLgotICogUGxlYXNlIHJlZmVyIHRvIHRoZSBoeXBlcmxpbmsgYXVkaXRpbmcg
c3BlY2lmaWNhdGlvbiBhdCBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3Vy
cmVudC13b3JrLyNoeXBlcmxpbmstYXVkaXRpbmcuCi0gKiBIeXBlcmxpbmsgYXVkaXRpbmcgaXMg
ZGlzYWJsZWQgYnkgZGVmYXVsdC4KLSAqCi0gKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBxdWVy
eSBpZiAgaHlwZXJsaW5rIGF1ZGl0aW5nIGlzIGVuYWJsZWQKLSAqCi0gKiBAcmV0dXJuIEBjIEVJ
TkFfVFJVRSBpZiBoeXBlcmxpbmsgYXVkaXRpbmcgaXMgZW5hYmxlZCwgQGMgRUlOQV9GQUxTRQot
ICogICAgICAgICBvdGhlcndpc2UKLSAqLwotRUFQSSBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGlu
Z19lbmFibGVfaHlwZXJsaW5rX2F1ZGl0aW5nX2dldChjb25zdCBFdmFzX09iamVjdCAqbyk7Ci0K
LS8qKgotICogRW5hYmxlcy9kaXNhYmxlcyBoeXBlcmxpbmsgYXVkaXRpbmcuCi0gKgotICogSHlw
ZXJsaW5rIGF1ZGl0aW5nIGlzIHVzZWQgaWYgYSBoeXBlcmxpbmsgY3JlYXRlZCBieSBhbiBAYyBh
IG9yIEBjIGFyZWEgZWxlbWVudCBoYXMgYSBAYyBwaW5nIGF0dHJpYnV0ZS4KLSAqIFBsZWFzZSBy
ZWZlciB0byB0aGUgaHlwZXJsaW5rIGF1ZGl0aW5nIHNwZWNpZmljYXRpb24gYXQgaHR0cDovL3d3
dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay8jaHlwZXJsaW5rLWF1ZGl0
aW5nLgotICogSHlwZXJsaW5rIGF1ZGl0aW5nIGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQuCi0gKgot
ICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gc2V0IGh5cGVybGluayBhdWRpdGluZwotICogQHBh
cmFtIGVuYWJsZSBAYyBFSU5BX1RSVUUgdG8gZW5hYmxlIGh5cGVybGluayBhdWRpdGluZywgQGMg
RUlOQV9GQUxTRSB0bwotICogICAgICAgICAgICAgICBkaXNhYmxlCi0gKgotICogQHJldHVybiBA
YyBFSU5BX1RSVUUgb24gc3VjY2VzcyBvciBARUlOQV9GQUxTRSBvbiBmYWlsdXJlCi0gKi8KLUVB
UEkgRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2h5cGVybGlua19hdWRpdGluZ19z
ZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBlbmFibGUpOwotCi0vKioKLSAqIEVuYWJsZXMv
ZGlzYWJsZXMgYWxsb3dpbmcgdW5pdmVyc2FsIGFjY2VzcyBmcm9tIGZpbGUgVVJMcy4KLSAqCi0g
KiBUaGlzIHNldHRpbmcgc3BlY2lmaWVzIHdoZXRoZXIgbG9jYWxseSBsb2FkZWQgZG9jdW1lbnRz
IGFyZSBhbGxvd2VkIHRvIGFjY2VzcyByZW1vdGUgdXJscy4KLSAqIEJ5IGRlZmF1bHQgdGhpcyBz
ZXR0aW5nIGlzIGVuYWJsZWQuCi0gKgotICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gc2V0IGFs
bG93aW5nIHVuaXZlcnNhbCBhY2Nlc3MgZnJvbSBmaWxlIFVSTHMKLSAqIEBwYXJhbSBlbmFibGUg
QGMgRUlOQV9UUlVFIHRvIGVuYWJsZSB1bml2ZXJzYWwgYWNjZXNzIGZyb20gZmlsZSBVUkxzLAot
ICogICAgICAgIEBjIEVJTkFfRkFMU0UgdG8gZGlzYWJsZQotICoKLSAqIEByZXR1cm4gQGMgRUlO
QV9UUlVFIG9uIHN1Y2Nlc3Mgb3IgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJlCi0gKi8KLUVBUEkg
RWluYV9Cb29sICAgIGV3a192aWV3X3NldHRpbmdfYWxsb3dfdW5pdmVyc2FsX2FjY2Vzc19mcm9t
X2ZpbGVfdXJsc19zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBmbGFnKTsKLQotLyoqCi0g
KiBHZXRzIGlmIGFsbG93aW5nIHVuaXZlcnNhbCBhY2Nlc3MgZnJvbSBmaWxlIFVSTHMgaXMgZW5h
YmxlZC4KLSAqCi0gKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBxdWVyeSBpZiBhbGxvd2luZyB1
bml2ZXJzYWwgYWNjZXNzIGZyb20gZmlsZSBVUkxzIGlzIGVuYWJsZWQuCi0gKgotICogQHJldHVy
biBAYyBFSU5BX1RSVUUgaWYgYWxsb3dpbmcgdW5pdmVyc2FsIGFjY2VzcyBmcm9tIGZpbGUgVVJM
cyBpcyBlbmFibGVkLCBAYyBFSU5BX0ZBTFNFCi0gKiAgICAgICAgIG90aGVyd2lzZQotICoKLSAq
IEBzZWUgZXdrX3ZpZXdfc2V0dGluZ19hbGxvd191bml2ZXJzYWxfYWNjZXNzX2Zyb21fZmlsZV91
cmxzX3NldCgpCi0gKi8KLUVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3NldHRpbmdfYWxsb3df
dW5pdmVyc2FsX2FjY2Vzc19mcm9tX2ZpbGVfdXJsc19nZXQoY29uc3QgRXZhc19PYmplY3QgKm8p
OwotCi0vKioKLSAqIEVuYWJsZXMvZGlzYWJsZXMgYWxsb3dpbmcgZmlsZSBhY2Nlc3MgZnJvbSBm
aWxlIFVSTHMuCi0gKgotICogVGhpcyBzZXR0aW5nIHNwZWNpZmllcyB3aGV0aGVyIGxvY2FsbHkg
bG9hZGVkIGRvY3VtZW50cyBhcmUgYWxsb3dlZCB0byBhY2Nlc3Mgb3RoZXIgbG9jYWwgdXJscy4K
LSAqIEJ5IGRlZmF1bHQgdGhpcyBzZXR0aW5nIGlzIGVuYWJsZWQuCi0gKgotICogQHBhcmFtIG8g
dmlldyBvYmplY3QgdG8gc2V0IGFsbG93aW5nIGZpbGUgYWNjZXNzIGZyb20gZmlsZSBVUkxzCi0g
KiBAcGFyYW0gZW5hYmxlIEBjIEVJTkFfVFJVRSB0byBlbmFibGUgZmlsZSBhY2Nlc3MgZnJvbSBm
aWxlIFVSTHMsCi0gKiAgICAgICAgQGMgRUlOQV9GQUxTRSB0byBkaXNhYmxlCi0gKgotICogQHJl
dHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcyBvciBAYyBFSU5BX0ZBTFNFIG9uIGZhaWx1cmUK
LSAqLwotRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfc2V0dGluZ19hbGxvd19maWxlX2FjY2Vz
c19mcm9tX2ZpbGVfdXJsc19zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBmbGFnKTsKLQot
LyoqCi0gKiBHZXRzIGlmIGFsbG93aW5nIGZpbGUgYWNjZXNzIGZyb20gZmlsZSBVUkxzIGlzIGVu
YWJsZWQuCi0gKgotICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gcXVlcnkgaWYgYWxsb3dpbmcg
ZmlsZSBhY2Nlc3MgZnJvbSBmaWxlIFVSTHMgaXMgZW5hYmxlZC4KLSAqCi0gKiBAcmV0dXJuIEBj
IEVJTkFfVFJVRSBpZiBhbGxvd2luZyBmaWxlIGFjY2VzcyBmcm9tIGZpbGUgVVJMcyBpcyBlbmFi
bGVkLCBAYyBFSU5BX0ZBTFNFCi0gKiAgICAgICAgIG90aGVyd2lzZQotICoKLSAqIEBzZWUgZXdr
X3ZpZXdfc2V0dGluZ19hbGxvd19maWxlX2FjY2Vzc19mcm9tX2ZpbGVfdXJsc19zZXQoKQotICov
Ci1FQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld19zZXR0aW5nX2FsbG93X2ZpbGVfYWNjZXNzX2Zy
b21fZmlsZV91cmxzX2dldChjb25zdCBFdmFzX09iamVjdCAqbyk7Ci0KLS8qKgotICogR2V0cyB0
aGUgaW50ZXJuYWwgZGF0YSBvZiBAYSBvLgotICoKLSAqIFRoaXMgaXMgc2ltaWxhciB0byBldmFz
X29iamVjdF9zbWFydF9kYXRhX2dldCgpLCBidXQgYWRkaXRpb25hbGx5IGRvZXMgdHlwZSBjaGVj
a2luZy4KLSAqCi0gKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBnZXQgdGhlIGludGVybmFsIGRh
dGEKLSAqCi0gKiBAcmV0dXJuIHRoZSBpbnRlcm5hbCBkYXRhIG9mIEBhIG8sIG9yIEBjIE5VTEwg
b24gZmFpbHVyZQotICovCi1FQVBJIEV3a19WaWV3X1NtYXJ0X0RhdGEgKmV3a192aWV3X3NtYXJ0
X2RhdGFfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKLQotLyoqCi0gKiBQcm9jZXNzIHNjcm9s
bHMuCi0gKgotICogQHBhcmFtIHByaXYgdGhlIHBvaW50ZXIgdG8gdGhlIHByaXZhdGUgZGF0YSBv
ZiB0aGUgdmlldyB0byBwcm9jZXNzIHNjcm9sbHMKLSAqCi0gKiBAbm90ZSBUaGlzIGlzIG5vdCBm
b3IgZ2VuZXJhbCB1c2UgYnV0IGp1c3QgZm9yIHN1YmNsYXNzZXMgdGhhdCB3YW50Ci0gKiAgICAg
ICB0byBkZWZpbmUgdGhlaXIgb3duIGJhY2tpbmcgc3RvcmUuCi0gKi8KLUVBUEkgdm9pZCBld2tf
dmlld19zY3JvbGxzX3Byb2Nlc3MoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QpOwotCi0vKioKLSAq
IEdldHMgdGhlIGF0dHJpYnV0ZXMgb2YgdGhlIHZpZXdwb3J0IG1ldGEgdGFnLgotICoKLSAqIFBy
b3BlcnRpZXMgYXJlIHJldHVybmVkIGluIHRoZSByZXNwZWN0aXZlIHBvaW50ZXJzLiBQYXNzaW5n
IEBjIE5VTEwgdG8gYW55IG9mCi0gKiB0aGVzZSBwb2ludGVycyB3aWxsIG1ha2UgdGhhdCBwcm9w
ZXJ0eSB0byBub3QgYmUgcmV0dXJuZWQuCi0gKgotICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8g
Z2V0IHRoZSB2aWV3cG9ydCBhdHRyaWJ1dGVzCi0gKiBAcGFyYW0gdyB0aGUgcG9pbnRlciB0byBz
dG9yZSB0aGUgd2lkdGggb2YgdGhlIHZpZXdwb3J0Ci0gKiBAcGFyYW0gaCB0aGUgcG9pbnRlciB0
byBzdG9yZSB0aGUgaGVpZ2h0IG9mIHRoZSB2aWV3cG9ydAotICogQHBhcmFtIGluaXRfc2NhbGUg
dGhlIHBvaW50ZXIgdG8gc3RvcmUgdGhlIGluaXRpYWwgc2NhbGUgdmFsdWUKLSAqIEBwYXJhbSBt
YXhfc2NhbGUgdGhlIHBvaW50ZXIgdG8gc3RvcmUgdGhlIG1heGltdW0gc2NhbGUgdmFsdWUKLSAq
IEBwYXJhbSBtaW5fc2NhbGUgdGhlIHBvaW50ZXIgdG8gc3RvcmUgdGhlIG1pbmltdW0gc2NhbGUg
dmFsdWUKLSAqIEBwYXJhbSBkZXZpY2VfcGl4ZWxfcmF0aW8gdGhlIHBvaW50ZXIgdG8gc3RvcmUg
dGhlIGRldmljZSBwaXhlbCByYXRpbyB2YWx1ZQotICogQHBhcmFtIHVzZXJfc2NhbGFibGUgdGhl
IHBvaW50ZXIgdG8gc3RvcmUgaWYgdXNlciBjYW4gc2NhbGUgdmlld3BvcnQKLSAqLwotRUFQSSB2
b2lkIGV3a192aWV3X3ZpZXdwb3J0X2F0dHJpYnV0ZXNfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpv
LCBpbnQgKncsIGludCAqaCwgZmxvYXQgKmluaXRfc2NhbGUsIGZsb2F0ICptYXhfc2NhbGUsIGZs
b2F0ICptaW5fc2NhbGUsIGZsb2F0ICpkZXZpY2VfcGl4ZWxfcmF0aW8gLCBFaW5hX0Jvb2wgKnVz
ZXJfc2NhbGFibGUpOwotCi0vKioKLSAqIFNldHMgdGhlIHpvb20gcmFuZ2UuCi0gKgotICogQHBh
cmFtIG8gdmlldyBvYmplY3QgdG8gc2V0IHRoZSB6b29tIHJhbmdlCi0gKiBAcGFyYW0gbWluX3Nj
YWxlIHRoZSBtaW5pbXVtIHZhbHVlIG9mIHRoZSB6b29tIHJhbmdlCi0gKiBAcGFyYW0gbWF4X3Nj
YWxlIHRoZSBtYXhpbXVtIHZhbHVlIG9mIHRoZSB6b29tIHJhbmdlCi0gKgotICogQHJldHVybiBA
YyBFSU5BX1RSVUUgb24gc3VjY2VzcywgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJlCi0gKi8KLUVB
UEkgRWluYV9Cb29sIGV3a192aWV3X3pvb21fcmFuZ2Vfc2V0KEV2YXNfT2JqZWN0ICpvLCBmbG9h
dCBtaW5fc2NhbGUsIGZsb2F0IG1heF9zY2FsZSk7Ci0KLS8qKgotICogR2V0cyB0aGUgbWluaW11
bSB2YWx1ZSBvZiB0aGUgem9vbSByYW5nZS4KLSAqCi0gKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0
byBnZXQgdGhlIG1pbmltdW0gdmFsdWUgb2YgdGhlIHpvb20gcmFuZ2UKLSAqCi0gKiBAcmV0dXJu
IHRoZSBtaW5pbXVtIHZhbHVlIG9mIHRoZSB6b29tIHJhbmdlIG9uIHN1Y2Nlc3MsIG9yCi0gKiAg
ICAgICAgIEBjIC0xIG9uIGZhaWx1cmUKLSAqLwotRUFQSSBmbG9hdCBld2tfdmlld196b29tX3Jh
bmdlX21pbl9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOwotCi0vKioKLSAqIEdldHMgdGhlIG1h
eGltdW0gdmFsdWUgb2YgdGhlIHpvb20gcmFuZ2UuCi0gKgotICogQHBhcmFtIG8gdmlldyBvYmpl
Y3QgdG8gZ2V0IHRoZSBtYXhpbXVtIHZhbHVlIG9mIHRoZSB6b29tIHJhbmdlCi0gKgotICogQHJl
dHVybiB0aGUgbWF4aW11bSB2YWx1ZSBvZiB0aGUgem9vbSByYW5nZSBvbiBzdWNjZXNzLCBvcgot
ICogICAgICAgICBAYyAtMS4wIG9uIGZhaWx1cmUKLSAqLwotRUFQSSBmbG9hdCBld2tfdmlld196
b29tX3JhbmdlX21heF9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOwotCi0vKioKLSAqIEVuYWJs
ZXMvZGlzYWJsZXMgdGhlIHpvb20uCi0gKgotICogQHBhcmFtIG8gdmlldyB0byBzZXQgem9vbQot
ICogQHBhcmFtIHVzZXJfc2NhbGFibGUgQGMgRUlOQV9UUlVFIHRvIGVuYWJsZSB6b29tLCBAYyBF
SU5BX0ZBTFNFIHRvIGRpc2FibGUKLSAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNj
ZXNzIG9yIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZQotICovCi1FQVBJIEVpbmFfQm9vbCBld2tf
dmlld191c2VyX3NjYWxhYmxlX3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIHVzZXJfc2Nh
bGFibGUpOwotCi0vKioKLSAqIFF1ZXJpZXMgaWYgdGhlIHpvb20gaXMgZW5hYmxlZC4KLSAqCi0g
KiBAcGFyYW0gbyB2aWV3IHRvIHF1ZXJ5IGlmIHpvb20gaXMgZW5hYmxlZAotICoKLSAqIEByZXR1
cm4gQGMgRUlOQV9UUlVFIGlmIHRoZSB6b29tIGlzIGVuYWJsZWQsIEBjIEVJTkFfRkFMU0UgaWYg
bm90IG9yIG9uIGZhaWx1cmUKLSAqLwotRUFQSSBFaW5hX0Jvb2wgZXdrX3ZpZXdfdXNlcl9zY2Fs
YWJsZV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOwotCi0vKioKLSAqIFF1ZXJpZXMgdGhlIHJh
dGlvIGJldHdlZW4gdGhlIENTUyB1bml0cyBhbmQgZGV2aWNlIHBpeGVscyB3aGVuIHRoZSBjb250
ZW50IGlzIHVuc2NhbGVkLgotICoKLSAqIFdoZW4gZGVzaWduaW5nIHRvdWNoLWZyaWVuZGx5IGNv
bnRlbnRzLCBrbm93aW5nIHRoZSBhcHByb3hpbWF0ZWQgdGFyZ2V0IHNpemUgb24gYSBkZXZpY2UK
LSAqIGlzIGltcG9ydGFudCBmb3IgY29udGVudHMgcHJvdmlkZXJzIGluIG9yZGVyIHRvIGdldCB0
aGUgaW50ZW50ZWQgbGF5b3V0IGFuZCBlbGVtZW50Ci0gKiBzaXplcy4KLSAqCi0gKiBBcyBtb3N0
IGZpcnN0IGdlbmVyYXRpb24gdG91Y2ggZGV2aWNlcyBoYWQgYSBQUEkgb2YgYXBwcm94aW1hdGVs
eSAxNjAsIHRoaXMgYmVjYW1lIGEKLSAqIGRlLWZhY3RvIHZhbHVlLCB3aGVuIHVzZWQgaW4gY29u
anVuY3Rpb24gd2l0aCB0aGUgdmlld3BvcnQgbWV0YSB0YWcuCi0gKgotICogRGV2aWNlcyB3aXRo
IGEgaGlnaGVyIFBQSSBsZWFybmluZyB0b3dhcmRzIDI0MCBvciAzMjAsIGFwcGxpZXMgYSBwcmUt
c2NhbGluZyBvbiBhbGwKLSAqIGNvbnRlbnQsIG9mIGVpdGhlciAxLjUgb3IgMi4wLCBub3QgYWZm
ZWN0aW5nIHRoZSBDU1Mgc2NhbGUgb3IgcGluY2ggem9vbWluZy4KLSAqCi0gKiBUaGlzIHZhbHVl
IGNhbiBiZSBzZXQgdXNpbmcgdGhpcyBwcm9wZXJ0eSBhbmQgaXQgaXMgZXhwb3NlZCB0byBDU1Mg
bWVkaWEgcXVlcmllcyB1c2luZwotICogdGhlIC13ZWJraXQtZGV2aWNlLXBpeGVsLXJhdGlvIHF1
ZXJ5LgotICoKLSAqIEZvciBpbnN0YW5jZSwgaWYgeW91IHdhbnQgdG8gbG9hZCBhbiBpbWFnZSB3
aXRob3V0IGhhdmluZyBpdCB1cHNjYWxlZCBvbiBhIHdlYiB2aWV3Ci0gKiB1c2luZyBhIGRldmlj
ZSBwaXhlbCByYXRpbyBvZiAyLjAgaXQgY2FuIGJlIGRvbmUgYnkgbG9hZGluZyBhbiBpbWFnZSBv
ZiBzYXkgMTAweDEwMAotICogcGl4ZWxzIGJ1dCBzaG93aW5nIGl0IGF0IGhhbGYgdGhlIHNpemUu
Ci0gKgotICogQG1lZGlhICgtd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86IDEuNSkgewot
ICogICAgIC5pY29uIHsKLSAqICAgICAgICAgd2lkdGg6IDUwcHg7Ci0gKiAgICAgICAgIGhlaWdo
dDogNTBweDsKLSAqICAgICAgICAgdXJsOiAiL2ltYWdlcy9pY29uQDJ4LnBuZyI7IC8vIFRoaXMg
aXMgYWN0dWFsbHkgYSAxMDB4MTAwIGltYWdlCi0gKiAgICAgfQotICogfQotICoKLSAqIElmIHRo
ZSBhYm92ZSBpcyB1c2VkIG9uIGEgZGV2aWNlIHdpdGggZGV2aWNlIHBpeGVsIHJhdGlvIG9mIDEu
NSwgaXQgd2lsbCBiZSBzY2FsZWQKLSAqIGRvd24gYnV0IHN0aWxsIHByb3ZpZGUgYSBiZXR0ZXIg
bG9va2luZyBpbWFnZS4KLSAqCi0gKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBnZXQgZGV2aWNl
IHBpeGVsIHJhdGlvCi0gKgotICogQHJldHVybiB0aGUgcmF0aW8gYmV0d2VlbiB0aGUgQ1NTIHVu
aXRzIGFuZCBkZXZpY2UgcGl4ZWxzLAotICogICAgICAgICBvciBAYyAtMS4wIG9uIGZhaWx1cmUK
LSAqLwotRUFQSSBmbG9hdCBld2tfdmlld19kZXZpY2VfcGl4ZWxfcmF0aW9fZ2V0KGNvbnN0IEV2
YXNfT2JqZWN0ICpvKTsKLQotLyoqCi0gKiBTZXRzIHRoZSByYXRpbyBiZXR3ZWVuIHRoZSBDU1Mg
dW5pdHMgYW5kIGRldmljZSBwaXhlbHMgd2hlbiB0aGUgY29udGVudCBpcyB1bnNjYWxlZC4KLSAq
Ci0gKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBzZXQgZGV2aWNlIHBpeGVsIHJhdGlvCi0gKgot
ICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgdGhlIGRldmljZSBwaXhlbCByYXRpbyB3YXMgc2V0
LCBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZQotICoKLSAqIEBzZWUgZXdrX3ZpZXdfZGV2aWNlX3Bp
eGVsX3JhdGlvX2dldCgpCi0gKi8KLUVBUEkgRWluYV9Cb29sIGV3a192aWV3X2RldmljZV9waXhl
bF9yYXRpb19zZXQoRXZhc19PYmplY3QgKm8sIGZsb2F0IHJhdGlvKTsKLQotLyoqCi0gKiBDaGFu
Z2VzIHRoZSB0ZXh0IGRpcmVjdGlvbiBvZiB0aGUgc2VsZWN0ZWQgaW5wdXQgbm9kZS4KLSAqCi0g
KiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBzZXQgdGV4dCBkaXJlY3Rpb24uCi0gKiBAcGFyYW0g
ZGlyZWN0aW9uIHRleHQgZGlyZWN0aW9uLgotICovCi1FQVBJIHZvaWQgZXdrX3ZpZXdfdGV4dF9k
aXJlY3Rpb25fc2V0KEV2YXNfT2JqZWN0ICpvLCBFd2tfVGV4dF9EaXJlY3Rpb24gZGlyZWN0aW9u
KTsKLQotLyoqCi0gKiBTZXRzIHRoZSB2aWV3IG1vZGUuCi0gKgotICogVGhlIHZpZXctbW9kZSBt
ZWRpYSBmZWF0dXJlIGRlc2NyaWJlcyB0aGUgbW9kZSBpbiB3aGljaCB0aGUKLSAqIFdlYiBhcHBs
aWNhdGlvbiBpcyBiZWluZyBzaG93biBhcyBhIHJ1bm5pbmcgYXBwbGljYXRpb24uCi0gKgotICog
QHBhcmFtIG8gdmlldyBvYmplY3QgdG8gY2hhbmdlIHRoZSB2aWV3IG1vZGUKLSAqIEBwYXJhbSB2
aWV3X21vZGUgcGFnZSB2aWV3IG1vZGUgdG8gc2V0Ci0gKgotICogQHJldHVybiBAYyBFSU5BX1RS
VUUgb24gc3VjY2VzcyBvciBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZQotICovCi1FQVBJIEVpbmFf
Qm9vbCBld2tfdmlld19tb2RlX3NldChFdmFzX09iamVjdCAqbywgRXdrX1ZpZXdfTW9kZSB2aWV3
X21vZGUpOwotCi0vKioKLSAqIEdldHMgdGhlIHZpZXcgbW9kZS4KLSAqCi0gKiBAcGFyYW0gbyB2
aWV3IG9iamVjdCB0byBnZXQgdGhlIHZpZXcgbW9kZQotICoKLSAqIEByZXR1cm4gZW51bSB2YWx1
ZSBvZiBAYSBFd2tfVmlld19Nb2RlIHRoYXQgaW5kaWNhdGVzIGN1cnJlbnQgdmlldyBtb2RlIG9u
IHN1Y2Nlc3Mgb3IKLSAqICAgICAgICAgRVdLX1ZJRVdfTU9ERV9JTlZBTElEIG90aGVyd2lzZQot
ICoKLSAqIEBzZWUgZXdrX3ZpZXdfbW9kZV9zZXQoKQotICovCi1FQVBJIEV3a19WaWV3X01vZGUg
ZXdrX3ZpZXdfbW9kZV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOwotCi0vKioKLSAqIENyZWF0
ZXMgYSBKUyBvYmplY3QgbmFtZWQgQGEgb2JqX25hbWUgYXMgcHJvcGVydHkgb2YgdGhlIHdpbmRv
dyBvYmplY3QuIFRoaXMgc2hvdWxkIGJlIGNhbGxlZCBvbiBhIGNhbGxiYWNrIGNvbm5lY3RlZHRv
IHRoZQotICoganMsd2luZG93b2JqZWN0LGNsZWFyIHNpZ25hbC4KLSAqCi0gKiBAcGFyYW0gbyB2
aWV3LgotICogQHBhcmFtIG9iaiBvYmplY3QgdGhhdCB3aWxsIGJlIGFkZGVkKHNlZTogQGEgZXdr
X2pzX29iamVjdF9uZXcpLgotICogQHBhcmFtIG9ial9uYW1lIG5hbWUgb2YgdGhlIG9iamVjdC4K
LSAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiBvYmplY3Qgd2FzIGFkZGVkLCBAYyBFSU5B
X0ZBTFNFIGlmIG5vdC4KLSAqLwotRUFQSSBFaW5hX0Jvb2wgZXdrX3ZpZXdfanNfb2JqZWN0X2Fk
ZChFdmFzX09iamVjdCAqbywgRXdrX0pTX09iamVjdCAqb2JqLCBjb25zdCBjaGFyICpvYmpfbmFt
ZSk7Ci0KLS8vLyBEZWZpbmVzIHRoZSBwYWdlIHZpc2liaWxpdHkgc3RhdHVzLgotZW51bSBfRXdr
X1BhZ2VfVmlzaWJpbGl0eV9TdGF0ZSB7Ci0gICAgRVdLX1BBR0VfVklTSUJJTElUWV9TVEFURV9W
SVNJQkxFLAotICAgIEVXS19QQUdFX1ZJU0lCSUxJVFlfU1RBVEVfSElEREVOLAotICAgIEVXS19Q
QUdFX1ZJU0lCSUxJVFlfU1RBVEVfUFJFUkVOREVSLAotICAgIEVXS19QQUdFX1ZJU0lCSUxJVFlf
U1RBVEVfVU5MT0FERUQKLX07Ci0vLy8gQ3JlYXRlcyBhIHR5cGUgbmFtZSBmb3IgQGEgX0V3a19Q
YWdlX1Zpc2liaWxpdHlfU3RhdGUuCi10eXBlZGVmIGVudW0gX0V3a19QYWdlX1Zpc2liaWxpdHlf
U3RhdGUgRXdrX1BhZ2VfVmlzaWJpbGl0eV9TdGF0ZTsKLQotLyoqCi0gKiBTZXRzIHRoZSB2aXNp
YmlsaXR5IHN0YXRlIG9mIHRoZSBwYWdlLgotICoKLSAqIFRoaXMgZnVuY3Rpb24gbGV0IFdlYktp
dCBrbm93cyB0aGUgdmlzaWJpbGl0eSBzdGF0dXMgb2YgdGhlIHBhZ2UuCi0gKiBXZWJLaXQgd2ls
bCBzYXZlIHRoZSBjdXJyZW50IHN0YXR1cywgYW5kIGZpcmUgYSAidmlzaWJpbGl0eWNoYW5nZSIK
LSAqIGV2ZW50IHdoaWNoIHdlYiBhcHBsaWNhdGlvbiBjYW4gbGlzdGVuLiBXZWIgYXBwbGljYXRp
b24gY291bGQgc2xvdwotICogZG93biBvciBzdG9wIGl0c2VsZiB3aGVuIGl0IGdldHMgYSAidmlz
aWJpbGl0eWNoYW5nZSIgZXZlbnQgYW5kIGl0cwotICogdmlzaWJpbGl0eSBzdGF0ZSBpcyBoaWRk
ZW4uIElmIGl0cyB2aXNpYmlsaXR5IHN0YXRlIGlzIHZpc2libGUsIHRoZW4KLSAqIHRoZSB3ZWIg
YXBwbGljYXRpb24gY291bGQgdXNlIG1vcmUgcmVzb3VyY2VzLgotICoKLSAqIFRoaXMgZmVhdHVy
ZSBtYWtlcyB0aGF0IHdlYiBhcHBsaWNhdGlvbiBjb3VsZCB1c2UgdGhlIHJlc291cmNlcyBlZmZp
Y2llbnRseSwKLSAqIHN1Y2ggYXMgcG93ZXIsIENQVSwgYW5kIGV0Yy4KLSAqCi0gKiBJZiBtb3Jl
IGRldGFpbGVkIGRlc2NyaXB0aW9uIGlzIG5lZWRlZCwgcGxlYXNlIHNlZSB0aGUgc3BlY2lmaWNh
dGlvbi4KLSAqIChodHRwOi8vd3d3LnczLm9yZy9UUi9wYWdlLXZpc2liaWxpdHkpCi0gKgotICog
QHBhcmFtIG8gdmlldyBvYmplY3QgdG8gc2V0IHRoZSB2aXNpYmlsaXR5IHN0YXRlLgotICogQHBh
cmFtIHBhZ2VfdmlzaWJsZV9zdGF0ZSB0aGUgdmlzaWJsZSBzdGF0ZSBvZiB0aGUgcGFnZSB0byBz
ZXQuCi0gKiBAcGFyYW0gaW5pdGlhbF9zdGF0ZSBAYyBFSU5BX1RSVUUgaWYgdGhpcyBmdW5jdGlv
biBpcyBjYWxsZWQgYXQgcGFnZSBpbml0aWFsaXphdGlvbiB0aW1lLAotICogICAgICAgICAgICAg
ICAgICAgICAgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UuCi0gKgotICogQHJldHVybiBAYyBFSU5B
X1RSVUUgb24gc3VjY2VzcyBvciBAYyBFSU5BX0ZBTFNFIG9uIGZhaWx1cmUuCi0gKi8KLUVBUEkg
RWluYV9Cb29sIGV3a192aWV3X3Zpc2liaWxpdHlfc3RhdGVfc2V0KEV2YXNfT2JqZWN0ICpvLCBF
d2tfUGFnZV9WaXNpYmlsaXR5X1N0YXRlIHBhZ2VfdmlzaWJsZV9zdGF0ZSwgRWluYV9Cb29sIGlu
aXRpYWxfc3RhdGUpOwotCi0vKioKLSAqIEdldHMgdGhlIHZpc2liaWxpdHkgc3RhdGUgb2YgdGhl
IHBhZ2UuCi0gKgotICogQHBhcmFtIG8gdmlldyBvYmplY3QKLSAqCi0gKiBAcmV0dXJuIGVudW0g
dmFsdWUgb2YgQGEgRXdrX1BhZ2VfVmlzaWJpbGl0eV9TdGF0ZSB0aGF0IGluZGljYXRlcyBjdXJy
ZW50IHZpc2liaWxpdHkgc3RhdHVzIG9mIHRoZSBwYWdlLgotICoKLSAqIEBzZWUgZXdrX3ZpZXdf
dmlzaWJpbGl0eV9zdGF0ZV9zZXQoKQotICovCi1FQVBJIEV3a19QYWdlX1Zpc2liaWxpdHlfU3Rh
dGUgZXdrX3ZpZXdfdmlzaWJpbGl0eV9zdGF0ZV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOwot
Ci0vKioKLSAqIFJldHVybnMgd2hldGhlciB0aGUgdmlldyBoYXMgZGlzcGxheWVkIG1peGVkIGNv
bnRlbnQuCi0gKgotICogV2hlbiBhIHZpZXcgaGFzIGRpc3BsYXllZCBtaXhlZCBjb250ZW50LCBh
bnkgb2YgaXRzIGZyYW1lcyBoYXMgbG9hZGVkIGFuIEhUVFBTIFVSSQotICogd2hpY2ggaGFzIGl0
c2VsZiBsb2FkZWQgYW5kIGRpc3BsYXllZCBhIHJlc291cmNlIChzdWNoIGFzIGFuIGltYWdlKSBm
cm9tIGFuIGluc2VjdXJlLAotICogdGhhdCBpcywgbm9uLUhUVFBTLCBVUkkuCi0gKgotICogVGhl
IHN0YXR1cyBpcyByZXNldCBvbmx5IHdoZW4gYSBsb2FkIGV2ZW50IG9jY3VycyAoZWcuIHRoZSBw
YWdlIGlzIHJlbG9hZGVkIG9yIGEgbmV3IHBhZ2UgaXMgbG9hZGVkKS4KLSAqCi0gKiBXaGVuIG9u
ZSBvZiB0aGUgY29udGFpbmluZyBmcmFtZXMgZGlzcGxheXMgbWl4ZWQgY29udGVudCwgdGhlIHZp
ZXcgZW1pdHMgdGhlICJtaXhlZGNvbnRlbnQsZGlzcGxheWVkIiBzaWduYWwuCi0gKgotICogQHBh
cmFtIG8gVGhlIHZpZXcgdG8gcXVlcnkuCi0gKgotICogQHNhIGV3a19mcmFtZV9taXhlZF9jb250
ZW50X2Rpc3BsYXllZF9nZXQKLSAqLwotRUFQSSBFaW5hX0Jvb2wgZXdrX3ZpZXdfbWl4ZWRfY29u
dGVudF9kaXNwbGF5ZWRfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKLQotLyoqCi0gKiBSZXR1
cm5zIHdoZXRoZXIgdGhlIHZpZXcgaGFzIHJ1biBtaXhlZCBjb250ZW50LgotICoKLSAqIFdoZW4g
YSB2aWV3IGhhcyBydW4gbWl4ZWQgY29udGVudCwgYW55IG9mIGl0cyBmcmFtZXMgaGFzIGxvYWRl
ZCBhbiBIVFRQUyBVUkkKLSAqIHdoaWNoIGhhcyBpdHNlbGYgbG9hZGVkIGFuZCBydW4gYSByZXNv
dXJjZSAoc3VjaCBhcyBhbiBpbWFnZSkgZnJvbSBhbiBpbnNlY3VyZSwKLSAqIHRoYXQgaXMsIG5v
bi1IVFRQUywgVVJJLgotICoKLSAqIFRoZSBzdGF0dXMgaXMgcmVzZXQgb25seSB3aGVuIGEgbG9h
ZCBldmVudCBvY2N1cnMgKGVnLiB0aGUgcGFnZSBpcyByZWxvYWRlZCBvciBhIG5ldyBwYWdlIGlz
IGxvYWRlZCkuCi0gKgotICogV2hlbiBvbmUgb2YgdGhlIGNvbnRhaW5pbmcgZnJhbWVzIHJ1bnMg
bWl4ZWQgY29udGVudCwgdGhlIHZpZXcgZW1pdHMgdGhlICJtaXhlZGNvbnRlbnQscnVuIiBzaWdu
YWwuCi0gKgotICogQHBhcmFtIG8gVGhlIHZpZXcgdG8gcXVlcnkuCi0gKgotICogQHNhIGV3a19m
cmFtZV9taXhlZF9jb250ZW50X3J1bl9nZXQKLSAqLwotRUFQSSBFaW5hX0Jvb2wgZXdrX3ZpZXdf
bWl4ZWRfY29udGVudF9ydW5fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKLQotLyoqCi0gKiBS
ZXR1cm5zIHdoZXRoZXIgWFNTQXVkaXRvciBmZWF0dXJlIGlzIGVuYWJsZWQuCi0gKgotICogQHBh
cmFtIG8gdmlldyBvYmplY3QgdG8gcXVlcnkgd2hldGhlciBYU1NBdWRpdG9yIGZlYXR1cmUgaXMg
ZW5hYmxlZC4KLSAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiB0aGUgWFNTQXVkaXRvciBm
ZWF0dXJlIGlzIGVuYWJsZWQsCi0gKiAgICAgICAgIEBjIEVJTkFfRkFMU0UgaWYgbm90IG9yIG9u
IGZhaWx1cmUuCi0gKi8KLUVBUEkgRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZW5hYmxlX3hz
c19hdWRpdG9yX2dldChjb25zdCBFdmFzX09iamVjdCAqbyk7Ci0KLS8qKgotICogRW5hYmxlcy9k
aXNhYmxlcyB0aGUgWFNTQXVkaXRvciBmZWF0dXJlLgotICogCi0gKiBUaGUgWFNTQXVkaXRvciAo
Y3Jvc3Mtc2l0ZSBzY3JpcHRpbmcgcHJvdGVjdGlvbikgZmVhdHVyZSBwcm92aWRlcyBwcm90ZWN0
aW9uIAotICogZnJvbSByZWZsZWN0ZWQgWFNTIGF0dGFja3Mgb24gdnVsbmVyYWJsZSB3ZWIgc2l0
ZXMuIFdoZW4gWFNTIGlzIGVuY291bnRlcmVkCi0gKiBpbiB0aGUgcGFnZSwgZnJhbWUgc2VuZHMg
YSBzaWduYWwgInhzcyxkZXRlY3RlZCIgd2l0aCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIAotICog
b24gd2hldGhlciB0aGUgZW50aXJlIHBhZ2Ugd2FzIGJsb2NrZWQgb3Igb25seSBpbmplY3RlZCBz
Y3JpcHRzIHdlcmUgcmVtb3ZlZC4gCi0gKiBUaGlzIGZlYXR1cmUgaXMgZW5hYmxlZCBieSBkZWZh
dWx0LgotICoKLSAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIHNldCB0aGUgWFNTQXVkaXRvciBm
ZWF0dXJlLgotICogQHBhcmFtIGVuYWJsZSBAYyBFSU5BX1RSVUUgdG8gZW5hYmxlIHRoZSBYU1NB
dWRpdG9yIGZlYXR1cmUsCi0gKiAgICAgICAgQGMgRUlOQV9GQUxTRSB0byBkaXNhYmxlLgotICov
Ci1FQVBJIHZvaWQgZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfeHNzX2F1ZGl0b3Jfc2V0KEV2YXNf
T2JqZWN0ICpvLCBFaW5hX0Jvb2wgZW5hYmxlKTsKLQotLyoqCi0gKiBSZXR1cm5zIHdoZXRoZXIg
dmlkZW8gY2FwdGlvbnMgZGlzcGxheSBmZWF0dXJlIGlzIGVuYWJsZWQuCi0gKgotICogVmlkZW8g
Y2FwdGlvbnMgZGlzcGxheSBpcyBkaXNhYmxlZCBieSBkZWZhdWx0LgotICoKLSAqIEBwYXJhbSBv
IHZpZXcgb2JqZWN0IHRvIHF1ZXJ5IHdoZXRoZXIgdmlkZW8gY2FwdGlvbnMgZGlzcGxheSBmZWF0
dXJlIGlzIGVuYWJsZWQuCi0gKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgdGhlIHZpZGVv
IGNhcHRpb25zIGRpc3BsYXkgZmVhdHVyZSBpcyBlbmFibGVkLAotICogICAgICAgICBAYyBFSU5B
X0ZBTFNFIGlmIG5vdCBvciBvbiBmYWlsdXJlLgotICovCi1FQVBJIEVpbmFfQm9vbCBld2tfdmll
d19zZXR0aW5nX3Nob3VsZF9kaXNwbGF5X2NhcHRpb25zX2dldChjb25zdCBFdmFzX09iamVjdCAq
byk7Ci0KLS8qKgotICogRW5hYmxlcy9kaXNhYmxlcyB0aGUgdmlkZW8gY2FwdGlvbnMgZGlzcGxh
eSBmZWF0dXJlLgotICoKLSAqIFRoZSB2aWRlbyBjYXB0aW9ucyBkaXNwbGF5IGZlYXR1cmUgaXMg
cGFydCBvZiB0cmFjayBzdXBwb3J0IGZvciBIVE1MNSB2aWRlby4KLSAqCi0gKiBAcGFyYW0gbyB2
aWV3IG9iamVjdCB0byBzZXQgdGhlIHZpZGVvIGNhcHRpb25zIGRpc3BsYXkgZmVhdHVyZS4KLSAq
IEBwYXJhbSBlbmFibGUgQGMgRUlOQV9UUlVFIHRvIGVuYWJsZSB0aGUgdmlkZW8gY2FwdGlvbnMg
ZGlzcGxheSBmZWF0dXJlLAotICogQGMgRUlOQV9GQUxTRSB0byBkaXNhYmxlLgotICovCi1FQVBJ
IHZvaWQgZXdrX3ZpZXdfc2V0dGluZ19zaG91bGRfZGlzcGxheV9jYXB0aW9uc19zZXQoRXZhc19P
YmplY3QgKm8sIEVpbmFfQm9vbCBlbmFibGUpOwotCi0vKioKLSAqIFJldHVybnMgd2hldGhlciB2
aWRlbyBzdWJ0aXRsZXMgZGlzcGxheSBmZWF0dXJlIGlzIGVuYWJsZWQuCi0gKgotICogVmlkZW8g
c3VidGl0bGVzIGRpc3BsYXkgaXMgZGlzYWJsZWQgYnkgZGVmYXVsdC4KLSAqCi0gKiBAcGFyYW0g
byB2aWV3IG9iamVjdCB0byBxdWVyeSB3aGV0aGVyIHZpZGVvIHN1YnRpdGxlcyBkaXNwbGF5IGZl
YXR1cmUgaXMgZW5hYmxlZC4KLSAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiB0aGUgdmlk
ZW8gc3VidGl0bGVzIGRpc3BsYXkgZmVhdHVyZSBpcyBlbmFibGVkLAotICogICAgICAgICBAYyBF
SU5BX0ZBTFNFIGlmIG5vdCBvciBvbiBmYWlsdXJlLgotICovCi1FQVBJIEVpbmFfQm9vbCBld2tf
dmlld19zZXR0aW5nX3Nob3VsZF9kaXNwbGF5X3N1YnRpdGxlc19nZXQoY29uc3QgRXZhc19PYmpl
Y3QgKm8pOwotCi0vKioKLSAqIEVuYWJsZXMvZGlzYWJsZXMgdGhlIHZpZGVvIHN1YnRpdGxlcyBk
aXNwbGF5IGZlYXR1cmUuCi0gKgotICogVGhlIHZpZGVvIHN1YnRpdGxlcyBkaXNwbGF5IGZlYXR1
cmUgaXMgcGFydCBvZiB0cmFjayBzdXBwb3J0IGZvciBIVE1MNSB2aWRlby4KLSAqCi0gKiBAcGFy
YW0gbyB2aWV3IG9iamVjdCB0byBzZXQgdGhlIHZpZGVvIHN1YnRpdGxlcyBkaXNwbGF5IGZlYXR1
cmUuCi0gKiBAcGFyYW0gZW5hYmxlIEBjIEVJTkFfVFJVRSB0byBlbmFibGUgdGhlIHZpZGVvIHN1
YnRpdGxlcyBkaXNwbGF5IGZlYXR1cmUsCi0gKiBAYyBFSU5BX0ZBTFNFIHRvIGRpc2FibGUuCi0g
Ki8KLUVBUEkgdm9pZCBld2tfdmlld19zZXR0aW5nX3Nob3VsZF9kaXNwbGF5X3N1YnRpdGxlc19z
ZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBlbmFibGUpOwotCi0vKioKLSAqIFJldHVybnMg
d2hldGhlciB2aWRlbyB0ZXh0IGRlc2NyaXB0aW9ucyBkaXNwbGF5IGZlYXR1cmUgaXMgZW5hYmxl
ZC4KLSAqCi0gKiBWaWRlbyB0ZXh0IGRlc2NyaXB0aW9ucyBkaXNwbGF5IGlzIGRpc2FibGVkIGJ5
IGRlZmF1bHQuCi0gKgotICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gcXVlcnkgd2hldGhlciB2
aWRlbyB0ZXh0IGRlc2NyaXB0aW9ucyBkaXNwbGF5IGZlYXR1cmUgaXMgZW5hYmxlZC4KLSAqCi0g
KiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiB0aGUgdmlkZW8gdGV4dCBkZXNjcmlwdGlvbnMgZGlz
cGxheSBmZWF0dXJlIGlzIGVuYWJsZWQsCi0gKiAgICAgICAgIEBjIEVJTkFfRkFMU0UgaWYgbm90
IG9yIG9uIGZhaWx1cmUuCi0gKi8KLUVBUEkgRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfc2hv
dWxkX2Rpc3BsYXlfdGV4dF9kZXNjcmlwdGlvbnNfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsK
LQotLyoqCi0gKiBFbmFibGVzL2Rpc2FibGVzIHRoZSB2aWRlbyB0ZXh0IGRlc2NyaXB0aW9ucyBk
aXNwbGF5IGZlYXR1cmUuCi0gKgotICogVGhlIHZpZGVvIHRleHQgZGVzY3JpcHRpb25zIGRpc3Bs
YXkgZmVhdHVyZSBpcyBwYXJ0IG9mIHRyYWNrIHN1cHBvcnQgZm9yIEhUTUw1IHZpZGVvLgotICoK
LSAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIHNldCB0aGUgdmlkZW8gdGV4dCBkZXNjcmlwdGlv
bnMgZGlzcGxheSBmZWF0dXJlLgotICogQHBhcmFtIGVuYWJsZSBAYyBFSU5BX1RSVUUgdG8gZW5h
YmxlIHRoZSB2aWRlbyB0ZXh0IGRlc2NyaXB0aW9ucyBkaXNwbGF5IGZlYXR1cmUsCi0gKiBAYyBF
SU5BX0ZBTFNFIHRvIGRpc2FibGUuCi0gKi8KLUVBUEkgdm9pZCBld2tfdmlld19zZXR0aW5nX3No
b3VsZF9kaXNwbGF5X3RleHRfZGVzY3JpcHRpb25zX3NldChFdmFzX09iamVjdCAqbywgRWluYV9C
b29sIGVuYWJsZSk7Ci0KLS8qKgotICogU2hvdyB0aGUgaW5zcGVjdG9yIHRvIGRlYnVnIGEgd2Vi
IHBhZ2UuCi0gKgotICogVGhlIGZvbGxvd2luZyBzaWduYWxzIGFyZSBlbWlpdGVkLgotICogImlu
c3BlY3Rvcix2aWV3LGNyZWF0ZSIgYW5kICJpbnNwZWN0b3IsdmlldyxjbG9zZSIKLSAqIFRoZSBm
aXJzdCBvbmUgd2lsbCBiZSBjYWxsZWQgdG8gcmVxdWVzdCB0aGUgdmlldyBmb3IgaW5zcGVjdG9y
IG9uIHZpZXcgdGhhdCB3aWxsIGJlIGluc3BlY3RlZC4KLSAqIFRoaXMgY2FsbGJhY2sgc2hvdWxk
IGNyZWF0ZSB0aGUgdmlldyBmb3IgaW5zcGVjdG9yIGFuZCBzZXQgdGhlIHZpZXcgd2l0aCBld2tf
dmlld19pbnNwZWN0b3Jfdmlld19zZXQoKS4KLSAqIFRoZSBzZWNvbmQgb25lIHdpbGwgYmUgY2Fs
bGVkIHRvIGNsb3NlIHRoZSB2aWV3IGZvciBpbnNwZWN0b3Igb24gdmlldyBoYXZpbmcgdGhlIGlu
c3BlY3RvciBhZnRlciBkaXNjb25uZWN0aW5nIGZyb250ZW5kCi0gKiBUaGlzIGNhbGxiYWNrIHNo
b3VsZCByZW1vdmUgdGhlIHZpZXcgZm9yIGluc3BlY3Rvci4KLSAqCi0gKiBXaGVuIHRoZSB2aWV3
IGhhdmluZyB0aGUgaW5zcGVjdG9yIGlzIHJlbW92ZWQsCi0gKiBwbGVhc2UgZW1pdCB0aGUgImlu
c3BlY3Rvcix2aWV3LGRlc3Ryb3kiIHNpZ25hbCBvbiB2aWV3IGZvciBpbnNwZWN0b3IuCi0gKgot
ICogQHBhcmFtIG8gVGhlIHZpZXcgdG8gc2hvdyB0aGUgaW5zcGVjdG9yLgotICoKLSAqIEBzZWUg
ZXdrX3ZpZXdfaW5zcGVjdG9yX2Nsb3NlKCkKLSAqIEBzZWUgZXdrX3ZpZXdfaW5zcGVjdG9yX3Zp
ZXdfc2V0KCkKLSAqLwotRUFQSSB2b2lkIGV3a192aWV3X2luc3BlY3Rvcl9zaG93KGNvbnN0IEV2
YXNfT2JqZWN0ICpvKTsKLQotLyoqCi0gKiBDbG9zZSB0aGUgaW5zcGVjdG9yIHZpZXcKLSAqCi0g
KiBAcGFyYW0gbyBUaGUgdmlldyB0byBjbG9zZSB0aGUgaW5zcGVjdG9yLgotICoKLSAqIEBzZWUg
ZXdrX3ZpZXdfaW5zcGVjdG9yX3Nob3coKQotICogQHNlZSBld2tfdmlld19pbnNwZWN0b3Jfdmll
d19nZXQoKQotICovCi1FQVBJIHZvaWQgZXdrX3ZpZXdfaW5zcGVjdG9yX2Nsb3NlKGNvbnN0IEV2
YXNfT2JqZWN0ICpvKTsKLQotLyoqCi0gKiBHZXQgdGhlIHZpZXcgb2YgaW5zcGVjdG9yLgotICoK
LSAqIEBwYXJhbSBvIFRoZSB2aWV3IHRoYXQgaXMgaW5zcGVjdGVkLgotICoKLSAqIEByZXR1cm4g
dmlldyBvYmplY3Qgb24gc3VjY2VzcyBvciBAYyBOVUxMIG9uIGZhaWx1cmUKLSAqLwotRUFQSSBF
dmFzX09iamVjdCogZXdrX3ZpZXdfaW5zcGVjdG9yX3ZpZXdfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0
ICpvKTsKLQotLyoqCi0gKiBTZXQgdGhlIHZpZXcgb2YgaW5zcGVjdG9yLgotICoKLSAqIEBwYXJh
bSBvIFRoZSB2aWV3IHRoYXQgaXMgaW5zcGVjdGVkLgotICogQHBhcmFtIGluc3BlY3Rvcl92aWV3
IFRoZSB2aWV3IG9mIGluc3BlY3Rvci4KLSAqLwotRUFQSSB2b2lkIGV3a192aWV3X2luc3BlY3Rv
cl92aWV3X3NldChFdmFzX09iamVjdCAqbywgRXZhc19PYmplY3QgKmluc3BlY3Rvcl92aWV3KTsK
LQotLyoqCi0gKiBFbmFibGVzL2Rpc2FibGVzIHRoZSBmdWxsc2NyZWVuIG1vZGUgYnkgamF2YXNj
cmlwdCBmdWxsc2NyZWVuIEFQSS4KLSAqIFRoZSBqYXZhc2NyaXB0IEFQSSBhbGxvd3MgdG8gcmVx
dWVzdCBmdWxsIHNjcmVlbiBtb2RlLCBmb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWU6Ci0gKiBodHRw
Oi8vZHZjcy53My5vcmcvaGcvZnVsbHNjcmVlbi9yYXctZmlsZS90aXAvT3ZlcnZpZXcuaHRtbAot
ICoKLSAqIERlZmF1bHQgdmFsdWUgZm9yIGphdmFzY3JpcHQgZnVsbHNjcmVlbiBBUEkgc2V0dGlu
ZyBpcyBAYyBFSU5BX1RSVUUuCi0gKgotICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gZW5hYmxl
IGphdmFzY3JpcHQgZnVsbHNjcmVlbiBBUEkKLSAqIEBwYXJhbSBlbmFibGUgQGMgRUlOQV9UUlVF
IHRvIGVuYWJsZSBqYXZhc2NyaXB0IGZ1bGxzY3JlZW4gQVBJIG9yCi0gKiAgICAgICAgICAgICAg
IEBjIEVJTkFfRkFMU0UgdG8gZGlzYWJsZQotICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9u
IHN1Y2Nlc3Mgb3IgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJlCi0gKi8KLUVBUEkgRWluYV9Cb29s
IGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2Z1bGxzY3JlZW5fc2V0KEV2YXNfT2JqZWN0ICpvLCBF
aW5hX0Jvb2wgZW5hYmxlKTsKLQotLyoqCi0gKiBRdWVyaWVzIGlmIHRoZSBmdWxsc2NyZWVuIG1v
ZGUgaXMgZW5hYmxlZC4KLSAqCi0gKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBxdWVyeSB3aGV0
aGVyIGphdmFzY3JpcHQgZnVsbHNjcmVlbiBBUEkgaXMgZW5hYmxlZAotICoKLSAqIEByZXR1cm4g
QGMgRUlOQV9UUlVFIGlmIHRoZSBqYXZhc2NyaXB0IGZ1bGxzY3JlZW4gQVBJIGlzIGVuYWJsZWQK
LSAqICAgICAgICAgQGMgRUlOQV9GQUxTRSBpZiBub3Qgb3Igb24gZmFpbHVyZQotICovCi1FQVBJ
IEVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2VuYWJsZV9mdWxsc2NyZWVuX2dldChjb25zdCBF
dmFzX09iamVjdCAqbyk7Ci0KLS8qKgotICogR2V0cyB0aGUgY29udGV4dCBtZW51IG9iamVjdC4K
LSAqIEBwYXJhbSBvIFRoZSB2aWV3IHRoYXQgY29udGFpbnMgY29udGV4dCBtZW51LgotICoKLSAq
IEByZXR1cm4gY29udGV4dCBtZW51IHN0cnVjdHVyZSBvbiBzdWNjZXNzIG9yIEBjIE5VTEwgb24g
ZmFpbHVyZQotICovCi1FQVBJIEV3a19Db250ZXh0X01lbnUgKmV3a192aWV3X2NvbnRleHRfbWVu
dV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOwotCi0vKioKLSAqIEdldHMgdGhlIGltYWdlIG9i
amVjdCBvZiB0aGUgc3BlY2lmaWVkIGFyZWEgb2YgdGhlIHZpZXcuCi0gKgotICogVGhlIHJldHVy
bmVkIGltYWdlIG9iamVjdCBAYiBzaG91bGQgYmUgZnJlZWQgYWZ0ZXIgdXNlLgotICoKLSAqIEBw
YXJhbSBvIHZpZXcgb2JqZWN0IHRvIGJlIGNhcHR1cmVkCi0gKiBAcGFyYW0gYXJlYSBUaGUgYXJl
YSBvZiB0aGUgdmlldyB3aWxsIGJlIGNhcHR1cmVkLgotICoKLSAqIEByZXR1cm4gbmV3bHkgYWxs
b2NhdGVkIGltYWdlIG9iamVjdCBvbiBzdWNlc3Mgb3IgQGMgTlVMTCBvbiBmYWlsdXJlLgotICov
Ci1FQVBJIEV2YXNfT2JqZWN0ICpld2tfdmlld19zY3JlZW5zaG90X2NvbnRlbnRzX2dldChjb25z
dCBFdmFzX09iamVjdCAqbywgY29uc3QgRWluYV9SZWN0YW5nbGUgKmFyZWEpOwotCi0jaWZkZWYg
X19jcGx1c3BsdXMKLX0KLSNlbmRpZgotI2VuZGlmIC8vIGV3a192aWV3X2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlld19wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0
L2VmbC9ld2svZXdrX3ZpZXdfcHJpdmF0ZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAxMzUxODgwLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlld19w
cml2YXRlLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxNTQgKzAsMCBAQAotLyoKLSAgICBDb3B5cmln
aHQgKEMpIDIwMDktMjAxMCBQcm9GVVNJT04gZW1iZWRkZWQgc3lzdGVtcwotICAgIENvcHlyaWdo
dCAoQykgMjAwOS0yMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKLSAgICBDb3B5cmlnaHQgKEMpIDIw
MTIgSW50ZWwgQ29ycG9yYXRpb24KLQotICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAgICBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICAgIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICAgIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KLQotICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAgICBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLQotICAgIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UKLSAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJ
TkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gICAgQm9zdG9uLCBN
QSAwMjExMC0xMzAxLCBVU0EuCi0qLwotCi0jaWZuZGVmIGV3a192aWV3X3ByaXZhdGVfaAotI2Rl
ZmluZSBld2tfdmlld19wcml2YXRlX2gKLQotI2luY2x1ZGUgIkZyYW1lLmgiCi0jaW5jbHVkZSAi
TmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgiCi0jaW5jbHVkZSAiUGFnZS5oIgotI2luY2x1ZGUgIldp
ZGdldC5oIgotI2luY2x1ZGUgImV3a192aWV3LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLSNp
ZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKLWNsYXNzIENvbG9yOwotY2xhc3MgQ29sb3JDaG9v
c2VyQ2xpZW50OwotI2VuZGlmCi0KLWNsYXNzIEN1cnNvcjsKLWNsYXNzIEdyYXBoaWNzQ29udGV4
dDNEOwotY2xhc3MgR3JhcGhpY3NMYXllcjsKLWNsYXNzIEhUTUxQbHVnSW5FbGVtZW50OwotY2xh
c3MgSW50UmVjdDsKLWNsYXNzIEludFNpemU7Ci1jbGFzcyBQb3B1cE1lbnVDbGllbnQ7Ci19Ci0K
LXZvaWQgZXdrX3ZpZXdfY3Vyc29yX3NldChFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgV2Vi
Q29yZTo6Q3Vyc29yJiBjdXJzb3IpOwotdm9pZCBld2tfdmlld19yZWFkeShFdmFzX09iamVjdCog
ZXdrVmlldyk7Ci12b2lkIGV3a192aWV3X2lucHV0X21ldGhvZF9zdGF0ZV9zZXQoRXZhc19PYmpl
Y3QqIGV3a1ZpZXcsIGJvb2wgYWN0aXZlKTsKLXZvaWQgZXdrX3ZpZXdfdGl0bGVfc2V0KEV2YXNf
T2JqZWN0KiBld2tWaWV3LCBjb25zdCBFd2tfVGV4dF9XaXRoX0RpcmVjdGlvbiogdGl0bGUpOwot
dm9pZCBld2tfdmlld191cmlfY2hhbmdlZChFdmFzX09iamVjdCogZXdrVmlldyk7Ci12b2lkIGV3
a192aWV3X2xvYWRfZG9jdW1lbnRfZmluaXNoZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV2YXNf
T2JqZWN0KiBmcmFtZSk7Ci12b2lkIGV3a192aWV3X2xvYWRfc3RhcnRlZChFdmFzX09iamVjdCog
ZXdrVmlldywgRXZhc19PYmplY3QqIGV3a0ZyYW1lKTsKLXZvaWQgZXdrX3ZpZXdfbG9hZF9wcm92
aXNpb25hbChFdmFzX09iamVjdCogZXdrVmlldyk7Ci12b2lkIGV3a192aWV3X2xvYWRfcHJvdmlz
aW9uYWxfZmFpbGVkKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBFd2tfRnJhbWVfTG9hZF9F
cnJvciogZXJyb3IpOwotdm9pZCBld2tfdmlld19mcmFtZV9tYWluX2xvYWRfc3RhcnRlZChFdmFz
X09iamVjdCogZXdrVmlldyk7Ci12b2lkIGV3a192aWV3X2ZyYW1lX21haW5fY2xlYXJlZChFdmFz
X09iamVjdCogZXdrVmlldyk7Ci12b2lkIGV3a192aWV3X2ZyYW1lX21haW5faWNvbl9yZWNlaXZl
ZChFdmFzX09iamVjdCogZXdrVmlldyk7Ci12b2lkIGV3a192aWV3X2xvYWRfZmluaXNoZWQoRXZh
c19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IEV3a19GcmFtZV9Mb2FkX0Vycm9yKiBlcnJvcik7Ci12
b2lkIGV3a192aWV3X2xvYWRfZXJyb3IoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IEV3a19G
cmFtZV9Mb2FkX0Vycm9yKiBlcnJvcik7Ci12b2lkIGV3a192aWV3X2xvYWRfcHJvZ3Jlc3NfY2hh
bmdlZChFdmFzX09iamVjdCogZXdrVmlldyk7Ci12b2lkIGV3a192aWV3X2xvYWRfc2hvdyhFdmFz
X09iamVjdCogZXdrVmlldyk7Ci12b2lkIGV3a192aWV3X29ubG9hZF9ldmVudChFdmFzX09iamVj
dCogZXdrVmlldywgRXZhc19PYmplY3QqIGZyYW1lKTsKLXZvaWQgZXdrX3ZpZXdfcmVzdG9yZV9z
dGF0ZShFdmFzX09iamVjdCogZXdrVmlldywgRXZhc19PYmplY3QqIGZyYW1lKTsKLUV2YXNfT2Jq
ZWN0KiBld2tfdmlld193aW5kb3dfY3JlYXRlKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBib29sIGph
dmFzY3JpcHQsIGNvbnN0IFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzKiBjb3JlRmVhdHVyZXMpOwot
dm9pZCBld2tfdmlld193aW5kb3dfY2xvc2UoRXZhc19PYmplY3QqIGV3a1ZpZXcpOwotCi12b2lk
IGV3a192aWV3X21vdXNlX2xpbmtfaG92ZXJfaW4oRXZhc19PYmplY3QqIGV3a1ZpZXcsIHZvaWQq
IGRhdGEpOwotdm9pZCBld2tfdmlld19tb3VzZV9saW5rX2hvdmVyX291dChFdmFzX09iamVjdCog
ZXdrVmlldyk7Ci0KLXZvaWQgZXdrX3ZpZXdfdG9vbGJhcnNfdmlzaWJsZV9zZXQoRXZhc19PYmpl
Y3QqIGV3a1ZpZXcsIGJvb2wgdmlzaWJsZSk7Ci12b2lkIGV3a192aWV3X3Rvb2xiYXJzX3Zpc2li
bGVfZ2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBib29sKiB2aXNpYmxlKTsKLQotdm9pZCBld2tf
dmlld19zdGF0dXNiYXJfdmlzaWJsZV9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGJvb2wgdmlz
aWJsZSk7Ci12b2lkIGV3a192aWV3X3N0YXR1c2Jhcl92aXNpYmxlX2dldChFdmFzX09iamVjdCog
ZXdrVmlldywgYm9vbCogdmlzaWJsZSk7Ci12b2lkIGV3a192aWV3X3N0YXR1c2Jhcl90ZXh0X3Nl
dChFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgY2hhciogdGV4dCk7Ci0KLXZvaWQgZXdrX3Zp
ZXdfc2Nyb2xsYmFyc192aXNpYmxlX3NldChFdmFzX09iamVjdCogZXdrVmlldywgYm9vbCB2aXNp
YmxlKTsKLXZvaWQgZXdrX3ZpZXdfc2Nyb2xsYmFyc192aXNpYmxlX2dldChFdmFzX09iamVjdCog
ZXdrVmlldywgYm9vbCogdmlzaWJsZSk7Ci0KLXZvaWQgZXdrX3ZpZXdfbWVudWJhcl92aXNpYmxl
X3NldChFdmFzX09iamVjdCogZXdrVmlldywgYm9vbCB2aXNpYmxlKTsKLXZvaWQgZXdrX3ZpZXdf
bWVudWJhcl92aXNpYmxlX2dldChFdmFzX09iamVjdCogZXdrVmlldywgYm9vbCogdmlzaWJsZSk7
Ci0KLXZvaWQgZXdrX3ZpZXdfdG9vbHRpcF90ZXh0X3NldChFdmFzX09iamVjdCogZXdrVmlldywg
Y29uc3QgY2hhciogdGV4dCk7Ci0KLXZvaWQgZXdrX3ZpZXdfYWRkX2NvbnNvbGVfbWVzc2FnZShF
dmFzX09iamVjdCogZXdrVmlldywgY29uc3QgY2hhciogbWVzc2FnZSwgdW5zaWduZWQgaW50IGxp
bmVOdW1iZXIsIGNvbnN0IGNoYXIqIHNvdXJjZUlEKTsKLQotdm9pZCBld2tfdmlld19ydW5famF2
YXNjcmlwdF9hbGVydChFdmFzX09iamVjdCogZXdrVmlldywgRXZhc19PYmplY3QqIGZyYW1lLCBj
b25zdCBjaGFyKiBtZXNzYWdlKTsKLWJvb2wgZXdrX3ZpZXdfcnVuX2phdmFzY3JpcHRfY29uZmly
bShFdmFzX09iamVjdCogZXdrVmlldywgRXZhc19PYmplY3QqIGZyYW1lLCBjb25zdCBjaGFyKiBt
ZXNzYWdlKTsKLWJvb2wgZXdrX3ZpZXdfcnVuX2JlZm9yZV91bmxvYWRfY29uZmlybShFdmFzX09i
amVjdCogZXdrVmlldywgRXZhc19PYmplY3QqIGZyYW1lLCBjb25zdCBjaGFyKiBtZXNzYWdlKTsK
LWJvb2wgZXdrX3ZpZXdfcnVuX2phdmFzY3JpcHRfcHJvbXB0KEV2YXNfT2JqZWN0KiBld2tWaWV3
LCBFdmFzX09iamVjdCogZnJhbWUsIGNvbnN0IGNoYXIqIG1lc3NhZ2UsIGNvbnN0IGNoYXIqIGRl
ZmF1bHRWYWx1ZSwgY29uc3QgY2hhcioqIHZhbHVlKTsKLWJvb2wgZXdrX3ZpZXdfc2hvdWxkX2lu
dGVycnVwdF9qYXZhc2NyaXB0KEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKLWludDY0X3QgZXdrX3Zp
ZXdfZXhjZWVkZWRfYXBwbGljYXRpb25fY2FjaGVfcXVvdGEoRXZhc19PYmplY3QqIGV3a1ZpZXcs
IEV3a19TZWN1cml0eV9PcmlnaW4gKm9yaWdpbiwgaW50NjRfdCBkZWZhdWx0T3JpZ2luUXVvdGEs
IGludDY0X3QgdG90YWxTcGFjZU5lZWRlZCk7Ci11aW50NjRfdCBld2tfdmlld19leGNlZWRlZF9k
YXRhYmFzZV9xdW90YShFdmFzX09iamVjdCogZXdrVmlldywgRXZhc19PYmplY3QqIGZyYW1lLCBj
b25zdCBjaGFyKiBkYXRhYmFzZU5hbWUsIHVpbnQ2NF90IGN1cnJlbnRTaXplLCB1aW50NjRfdCBl
eHBlY3RlZFNpemUpOwotCi1ib29sIGV3a192aWV3X3J1bl9vcGVuX3BhbmVsKEV2YXNfT2JqZWN0
KiBld2tWaWV3LCBFdmFzX09iamVjdCogZnJhbWUsIEV3a19GaWxlX0Nob29zZXIqIGZpbGVDaG9v
c2VyLCBFaW5hX0xpc3QqKiBzZWxlY3RlZEZpbGVuYW1lcyk7Ci0KLVdlYkNvcmU6OlBhZ2UqIGV3
a192aWV3X2NvcmVfcGFnZV9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpOwotCi12b2lk
IGV3a192aWV3X2ZyYW1lX3JlY3RfY2hhbmdlZChFdmFzX09iamVjdCogZXdrVmlldyk7Ci0KLVdU
Rjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGV3a192aWV3X3BsdWdpbl9jcmVhdGUoRXZh
c19PYmplY3QqIGV3a1ZpZXcsIEV2YXNfT2JqZWN0KiBmcmFtZSwgY29uc3QgV2ViQ29yZTo6SW50
U2l6ZSYgcGx1Z2luU2l6ZSwgV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQqIGVsZW1lbnQsIGNv
bnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mIHBh
cmFtTmFtZXMsIGNvbnN0IFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYgcGFyYW1WYWx1ZXMsIGNv
bnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBsb2FkTWFudWFsbHkpOwotCi0jaWYgRU5B
QkxFKElOUFVUX1RZUEVfQ09MT1IpCi12b2lkIGV3a192aWV3X2NvbG9yX2Nob29zZXJfbmV3KEV2
YXNfT2JqZWN0KiBld2tWaWV3LCBXZWJDb3JlOjpDb2xvckNob29zZXJDbGllbnQqIGNsaWVudCwg
Y29uc3QgV2ViQ29yZTo6Q29sb3ImIGluaXRpYWxDb2xvcik7Ci12b2lkIGV3a192aWV3X2NvbG9y
X2Nob29zZXJfY2hhbmdlZChFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgV2ViQ29yZTo6Q29s
b3ImIG5ld0NvbG9yKTsKLSNlbmRpZgotCi12b2lkIGV3a192aWV3X3BvcHVwX25ldyhFdmFzX09i
amVjdCogZXdrVmlldywgV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KiBjbGllbnQsIGludCBzZWxl
Y3RlZCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcmVjdCk7Ci12b2lkIGV3a192aWV3X3ZpZXdw
b3J0X2F0dHJpYnV0ZXNfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBXZWJDb3JlOjpW
aWV3cG9ydEFyZ3VtZW50cyYgYXJndW1lbnRzKTsKLQotdm9pZCBld2tfdmlld19kb3dubG9hZF9y
ZXF1ZXN0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tfRG93bmxvYWQqIGRvd25sb2FkKTsKLQot
dm9pZCBld2tfdmlld19lZGl0b3JfY2xpZW50X2NvbnRlbnRzX2NoYW5nZWQoRXZhc19PYmplY3Qq
IGV3a1ZpZXcpOwotdm9pZCBld2tfdmlld19lZGl0b3JfY2xpZW50X3NlbGVjdGlvbl9jaGFuZ2Vk
KEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKLQotYm9vbCBld2tfdmlld19mb2N1c19jYW5fY3ljbGUo
RXZhc19PYmplY3QqIGV3a1ZpZXcsIEV3a19Gb2N1c19EaXJlY3Rpb24gZGlyZWN0aW9uKTsKLQot
I2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQotdm9pZCBld2tfdmlld19qc193aW5kb3df
b2JqZWN0X2NsZWFyKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFdmFzX09iamVjdCogZnJhbWUpOwot
I2VuZGlmCi0KLSNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotdm9pZCBld2tfdmlld19uZWVkX3Rv
dWNoX2V2ZW50c19zZXQoRXZhc19PYmplY3QqLCBib29sIG5lZWRlZCk7Ci1ib29sIGV3a192aWV3
X25lZWRfdG91Y2hfZXZlbnRzX2dldChjb25zdCBFdmFzX09iamVjdCopOwotI2VuZGlmCi0KLXZv
aWQgZXdrX3ZpZXdfbGF5b3V0X2lmX25lZWRlZF9yZWN1cnNpdmUoRXdrX1ZpZXdfUHJpdmF0ZV9E
YXRhKiBwcml2KTsKLQotYm9vbCBld2tfdmlld19uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbihF
dmFzX09iamVjdCogZXdrVmlldywgRXdrX0ZyYW1lX1Jlc291cmNlX1JlcXVlc3QqIHJlcXVlc3Qs
IFdlYkNvcmU6Ok5hdmlnYXRpb25UeXBlKTsKLQotdm9pZCBld2tfdmlld19jb250ZW50c19zaXpl
X2NoYW5nZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV2YXNfQ29vcmQgd2lkdGgsIEV2YXNfQ29v
cmQgaGVpZ2h0KTsKLQotV2ViQ29yZTo6RmxvYXRSZWN0IGV3a192aWV3X3BhZ2VfcmVjdF9nZXQo
Y29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpOwotCi12b2lkIGV3a192aWV3X21peGVkX2NvbnRl
bnRfZGlzcGxheWVkX3NldChFdmFzX09iamVjdCogZXdrVmlldywgYm9vbCBoYXNEaXNwbGF5ZWQp
Owotdm9pZCBld2tfdmlld19taXhlZF9jb250ZW50X3J1bl9zZXQoRXZhc19PYmplY3QqIGV3a1Zp
ZXcsIGJvb2wgaGFzUnVuKTsKLQotdm9pZCBld2tfdmlld19yb290X2dyYXBoaWNzX2xheWVyX3Nl
dChFdmFzX09iamVjdCogZXdrVmlldywgV2ViQ29yZTo6R3JhcGhpY3NMYXllciogcm9vdExheWVy
KTsKLXZvaWQgZXdrX3ZpZXdfbWFya19mb3Jfc3luYyhFdmFzX09iamVjdCogZXdrVmlldyk7Ci0K
LXZvaWQgZXdrX3ZpZXdfZm9yY2VfcGFpbnQoRXZhc19PYmplY3QqIGV3a1ZpZXcpOwotCi0jaWYg
RU5BQkxFKEZVTExTQ1JFRU5fQVBJKQotdm9pZCBld2tfdmlld19mdWxsc2NyZWVuX2VudGVyKGNv
bnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKLXZvaWQgZXdrX3ZpZXdfZnVsbHNjcmVlbl9leGl0
KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKLSNlbmRpZgotCi1uYW1lc3BhY2UgRVdLUHJp
dmF0ZSB7Ci1XZWJDb3JlOjpQYWdlICpjb3JlUGFnZShjb25zdCBFdmFzX09iamVjdCAqZXdrVmll
dyk7Ci1QbGF0Zm9ybVBhZ2VDbGllbnQgY29yZVBhZ2VDbGllbnQoRXZhc19PYmplY3QqIGV3a1Zp
ZXcpOwotV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uKiBzdG9yYWdlU2Vzc2lvbihjb25z
dCBFdmFzX09iamVjdCogZXdrVmlldyk7Ci19IC8vIG5hbWVzcGFjZSBFV0tQcml2YXRlCi0KLSNl
bmRpZiAvLyBld2tfdmlld19wcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZs
L2V3ay9ld2tfd2ViX2RhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfd2Vi
X2RhdGFiYXNlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzFhODBiNy4uMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3dlYl9kYXRhYmFzZS5jcHAKKysr
IC9kZXYvbnVsbApAQCAtMSwxODIgKzAsMCBAQAotLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMTIg
SW50ZWwgQ29ycG9yYXRpb24KLQotICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICAgIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICAgIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KLQotICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAgICBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLQotICAgIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKLSAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcu
TElCLiAgSWYgbm90LCB3cml0ZSB0bwotICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gICAgQm9zdG9uLCBNQSAw
MjExMC0xMzAxLCBVU0EuCi0qLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiZXdr
X3dlYl9kYXRhYmFzZS5oIgotCi0jaW5jbHVkZSAiRGF0YWJhc2VNYW5hZ2VyLmgiCi0jaW5jbHVk
ZSAiU2VjdXJpdHlPcmlnaW4uaCIKLSNpbmNsdWRlICJld2tfc2VjdXJpdHlfb3JpZ2luLmgiCi0j
aW5jbHVkZSAiZXdrX3NlY3VyaXR5X29yaWdpbl9wcml2YXRlLmgiCi0jaW5jbHVkZSAiZXdrX3dl
Yl9kYXRhYmFzZV9wcml2YXRlLmgiCi0jaW5jbHVkZSA8RWluYS5oPgotI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+Ci0KLXN0cnVjdCBfRXdrX1dlYl9EYXRhYmFzZSB7Ci0gICAgV1RGOjpS
ZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luOwotICAgIFdURjo6
U3RyaW5nIGNvcmVOYW1lOwotICAgIGNvbnN0IGNoYXIqIGRpc3BsYXlOYW1lOwotICAgIGNvbnN0
IGNoYXIqIGZpbGVuYW1lOwotICAgIGNvbnN0IGNoYXIqIG5hbWU7Ci19OwotCi1jb25zdCBjaGFy
KiBld2tfd2ViX2RhdGFiYXNlX2Rpc3BsYXlfbmFtZV9nZXQoRXdrX1dlYl9EYXRhYmFzZSogZGF0
YWJhc2UpCi17Ci0jaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAgICBpZiAoZGF0YWJhc2UtPmRp
c3BsYXlOYW1lKQotICAgICAgICByZXR1cm4gZGF0YWJhc2UtPmRpc3BsYXlOYW1lOwotCi0gICAg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qIG9yaWdpbiA9IGRhdGFiYXNlLT5zZWN1cml0eU9yaWdp
bi5nZXQoKTsKLSAgICBXZWJDb3JlOjpEYXRhYmFzZURldGFpbHMgZGV0YWlscyA9IFdlYkNvcmU6
OkRhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKGRhdGFi
YXNlLT5uYW1lLCBvcmlnaW4pOwotICAgIGRhdGFiYXNlLT5kaXNwbGF5TmFtZSA9IGVpbmFfc3Ry
aW5nc2hhcmVfYWRkKGRldGFpbHMuZGlzcGxheU5hbWUoKS51dGY4KCkuZGF0YSgpKTsKLQotICAg
IHJldHVybiBkYXRhYmFzZS0+ZGlzcGxheU5hbWU7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShk
YXRhYmFzZSk7Ci0gICAgcmV0dXJuIDA7Ci0jZW5kaWYKLX0KLQotdWludDY0X3QgZXdrX3dlYl9k
YXRhYmFzZV9leHBlY3RlZF9zaXplX2dldChjb25zdCBFd2tfV2ViX0RhdGFiYXNlKiBkYXRhYmFz
ZSkKLXsKLSNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAgIFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luKiBvcmlnaW4gPSBkYXRhYmFzZS0+c2VjdXJpdHlPcmlnaW4uZ2V0KCk7Ci0gICAgV2ViQ29y
ZTo6RGF0YWJhc2VEZXRhaWxzIGRldGFpbHMgPSBXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6Om1h
bmFnZXIoKS5kZXRhaWxzRm9yTmFtZUFuZE9yaWdpbihkYXRhYmFzZS0+bmFtZSwgb3JpZ2luKTsK
LSAgICByZXR1cm4gZGV0YWlscy5leHBlY3RlZFVzYWdlKCk7Ci0jZWxzZQotICAgIFVOVVNFRF9Q
QVJBTShkYXRhYmFzZSk7Ci0gICAgcmV0dXJuIDA7Ci0jZW5kaWYKLX0KLQotY29uc3QgY2hhciog
ZXdrX3dlYl9kYXRhYmFzZV9maWxlbmFtZV9nZXQoRXdrX1dlYl9EYXRhYmFzZSogZGF0YWJhc2Up
Ci17Ci0jaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAgICBpZiAoZGF0YWJhc2UtPmZpbGVuYW1l
KQotICAgICAgICByZXR1cm4gZGF0YWJhc2UtPmZpbGVuYW1lOwotCi0gICAgV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW4qIG9yaWdpbiA9IGRhdGFiYXNlLT5zZWN1cml0eU9yaWdpbi5nZXQoKTsKLSAg
ICBXVEY6OlN0cmluZyBwYXRoID0gV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCku
ZnVsbFBhdGhGb3JEYXRhYmFzZShvcmlnaW4sIGRhdGFiYXNlLT5jb3JlTmFtZSk7Ci0gICAgZGF0
YWJhc2UtPmZpbGVuYW1lID0gZWluYV9zdHJpbmdzaGFyZV9hZGQocGF0aC51dGY4KCkuZGF0YSgp
KTsKLQotICAgIHJldHVybiBkYXRhYmFzZS0+ZmlsZW5hbWU7Ci0jZWxzZQotICAgIFVOVVNFRF9Q
QVJBTShkYXRhYmFzZSk7Ci0gICAgcmV0dXJuIDA7Ci0jZW5kaWYKLX0KLQotY29uc3QgY2hhciog
ZXdrX3dlYl9kYXRhYmFzZV9uYW1lX2dldChFd2tfV2ViX0RhdGFiYXNlKiBkYXRhYmFzZSkKLXsK
LSNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAgIGlmIChkYXRhYmFzZS0+bmFtZSkKLSAgICAg
ICAgcmV0dXJuIGRhdGFiYXNlLT5uYW1lOwotCi0gICAgZGF0YWJhc2UtPm5hbWUgPSBlaW5hX3N0
cmluZ3NoYXJlX2FkZChkYXRhYmFzZS0+Y29yZU5hbWUudXRmOCgpLmRhdGEoKSk7Ci0KLSAgICBy
ZXR1cm4gZGF0YWJhc2UtPm5hbWU7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShkYXRhYmFzZSk7
Ci0gICAgcmV0dXJuIDA7Ci0jZW5kaWYKLX0KLQotRXdrX1NlY3VyaXR5X09yaWdpbiogZXdrX3dl
Yl9kYXRhYmFzZV9zZWN1cml0eV9vcmlnaW5fZ2V0KGNvbnN0IEV3a19XZWJfRGF0YWJhc2UqIGRh
dGFiYXNlKQotewotICAgIHJldHVybiBld2tfc2VjdXJpdHlfb3JpZ2luX25ldyhkYXRhYmFzZS0+
c2VjdXJpdHlPcmlnaW4uZ2V0KCkpOwotfQotCi11aW50NjRfdCBld2tfd2ViX2RhdGFiYXNlX3Np
emVfZ2V0KGNvbnN0IEV3a19XZWJfRGF0YWJhc2UqIGRhdGFiYXNlKQotewotI2lmIEVOQUJMRShT
UUxfREFUQUJBU0UpCi0gICAgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qIG9yaWdpbiA9IGRhdGFi
YXNlLT5zZWN1cml0eU9yaWdpbi5nZXQoKTsKLSAgICBXZWJDb3JlOjpEYXRhYmFzZURldGFpbHMg
ZGV0YWlscyA9IFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLmRldGFpbHNGb3JO
YW1lQW5kT3JpZ2luKGRhdGFiYXNlLT5uYW1lLCBvcmlnaW4pOwotICAgIHJldHVybiBkZXRhaWxz
LmN1cnJlbnRVc2FnZSgpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oZGF0YWJhc2UpOwotICAg
IHJldHVybiAwOwotI2VuZGlmCi19Ci0KLXZvaWQgZXdrX3dlYl9kYXRhYmFzZV9yZW1vdmUoRXdr
X1dlYl9EYXRhYmFzZSogZGF0YWJhc2UpCi17Ci0jaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAg
ICBXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5kZWxldGVEYXRhYmFzZShkYXRh
YmFzZS0+c2VjdXJpdHlPcmlnaW4uZ2V0KCksIGRhdGFiYXNlLT5jb3JlTmFtZSk7Ci0jZWxzZQot
ICAgIFVOVVNFRF9QQVJBTShkYXRhYmFzZSk7Ci0jZW5kaWYKLX0KLQotdm9pZCBld2tfd2ViX2Rh
dGFiYXNlX3JlbW92ZV9hbGwodm9pZCkKLXsKLSNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAg
IFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLmRlbGV0ZUFsbERhdGFiYXNlcygp
OwotI2VuZGlmCi19Ci0KLXZvaWQgZXdrX3dlYl9kYXRhYmFzZV9mcmVlKEV3a19XZWJfRGF0YWJh
c2UqIGRhdGFiYXNlKQotewotI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0gICAgZWluYV9zdHJp
bmdzaGFyZV9kZWwoZGF0YWJhc2UtPmRpc3BsYXlOYW1lKTsKLSAgICBlaW5hX3N0cmluZ3NoYXJl
X2RlbChkYXRhYmFzZS0+ZmlsZW5hbWUpOwotICAgIGVpbmFfc3RyaW5nc2hhcmVfZGVsKGRhdGFi
YXNlLT5uYW1lKTsKLQotICAgIGRlbGV0ZSBkYXRhYmFzZTsKLSNlbHNlCi0gICAgVU5VU0VEX1BB
UkFNKGRhdGFiYXNlKTsKLSNlbmRpZgotfQotCi12b2lkIGV3a193ZWJfZGF0YWJhc2VfbGlzdF9m
cmVlKEVpbmFfTGlzdCogZGF0YWJhc2VMaXN0KQotewotICAgIHZvaWQqIGRhdGFiYXNlOwotICAg
IEVJTkFfTElTVF9GUkVFKGRhdGFiYXNlTGlzdCwgZGF0YWJhc2UpCi0gICAgICAgIGV3a193ZWJf
ZGF0YWJhc2VfZnJlZShzdGF0aWNfY2FzdDxFd2tfV2ViX0RhdGFiYXNlKj4oZGF0YWJhc2UpKTsK
LX0KLQotLyoqCi0gKiBAaW50ZXJuYWwKLSAqIENyZWF0ZXMgYSB3cmFwcGVyIHJlcHJlc2VudGlu
ZyBhIFdlYiBEYXRhYmFzZS4KLSAqCi0gKiBAcGFyYW0gY29yZU9yaWdpbiBXZWJDb3JlIFNlY3Vy
aXR5IE9yaWdpbiBvYmplY3QKLSAqIEBwYXJhbSBjb3JlTmFtZSBXZWIgRGF0YWJhc2UgbmFtZQot
ICoKLSAqIEByZXR1cm4gYSB3cmFwcGVyIGZvciBtYW5pcHVsYXRpbmcgYSBXZWIgRGF0YWJhc2Uu
IEl0IHNob3VsZCBiZSBmcmVlZAotICogYnkgZXdrX3dlYl9kYXRhYmFzZV9mcmVlKCkuCi0gKi8K
LUV3a19XZWJfRGF0YWJhc2UqIGV3a193ZWJfZGF0YWJhc2VfbmV3KFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luKiBjb3JlT3JpZ2luLCBjb25zdCBXVEY6OlN0cmluZyYgY29yZU5hbWUpCi17Ci0jaWYg
RU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAgICBFd2tfV2ViX0RhdGFiYXNlKiBkYXRhYmFzZSA9IG5l
dyBFd2tfV2ViX0RhdGFiYXNlOwotCi0gICAgZGF0YWJhc2UtPnNlY3VyaXR5T3JpZ2luID0gY29y
ZU9yaWdpbjsKLSAgICBkYXRhYmFzZS0+Y29yZU5hbWUgPSBjb3JlTmFtZTsKLSAgICBkYXRhYmFz
ZS0+ZGlzcGxheU5hbWUgPSAwOwotICAgIGRhdGFiYXNlLT5maWxlbmFtZSA9IDA7Ci0gICAgZGF0
YWJhc2UtPm5hbWUgPSAwOwotCi0gICAgcmV0dXJuIGRhdGFiYXNlOwotI2Vsc2UKLSAgICBVTlVT
RURfUEFSQU0oY29yZU9yaWdpbik7Ci0gICAgVU5VU0VEX1BBUkFNKGNvcmVOYW1lKTsKLSAgICBy
ZXR1cm4gMDsKLSNlbmRpZgotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3
a193ZWJfZGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfd2ViX2RhdGFiYXNl
LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdiYWE1NGYuLjAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYktpdC9lZmwvZXdrL2V3a193ZWJfZGF0YWJhc2UuaAorKysgL2Rldi9udWxsCkBA
IC0xLDEzNiArMCwwIEBACi0vKgotICAgIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3Jh
dGlvbgotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgotICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gICAgdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi0gICAgVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCi0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKLSAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAgIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCi0gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KLSovCi0KLS8qKgotICogQGZpbGUgICAgZXdrX3dlYl9kYXRhYmFzZS5oCi0gKiBAYnJpZWYg
ICBXZWIgRGF0YWJhc2UgQVBJLgotICoKLSAqIFRoaXMgQVBJIHByb3ZpZGVzIGZ1bmN0aW9ucyBm
b3IgbWFuYWdpbmcgV2ViIERhdGFiYXNlIGNyZWF0ZWQgZm9yIGEgc2VjdXJpdHkKLSAqIG9yaWdp
bi4gV2ViS2l0IG5lZWRzIHRvIGJlIGNvbXBpbGVkIHdpdGggV2ViIERhdGFiYXNlIHN1cHBvcnQg
aW4gb3JkZXIgdG8gdXNlCi0gKiB0aGlzIEFQSS4KLSAqLwotCi0jaWZuZGVmIGV3a193ZWJfZGF0
YWJhc2VfaAotI2RlZmluZSBld2tfd2ViX2RhdGFiYXNlX2gKLQotI2luY2x1ZGUgImV3a19zZWN1
cml0eV9vcmlnaW4uaCIKLQotI2luY2x1ZGUgPEV2YXMuaD4KLQotI2lmZGVmIF9fY3BsdXNwbHVz
Ci1leHRlcm4gIkMiIHsKLSNlbmRpZgotCi10eXBlZGVmIHN0cnVjdCBfRXdrX1dlYl9EYXRhYmFz
ZSBFd2tfV2ViX0RhdGFiYXNlOwotCi0vKioKLSAqIFJldHVybnMgdGhlIHVzZXIgZnJpZW5kbHkg
bmFtZSBvZiB0aGUgZGF0YWJhc2UuCi0gKgotICogSXQgcmV0dXJucyBhIGludGVybmFsIHN0cmlu
ZyB3aGljaCBzaG91bGQgbm90Ci0gKiBiZSBtb2RpZmllZC4gVGhlIHN0cmluZyBpcyBndWFyYW50
ZWVkIHRvIGJlIHN0cmluZ3NoYXJlZC4KLSAqCi0gKiBAcGFyYW0gbyB3ZWIgZGF0YWJhc2Ugb2Jq
ZWN0Ci0gKgotICogQHJldHVybiB0aGUgZGF0YWJhc2UgbmFtZQotICovCi1FQVBJIGNvbnN0IGNo
YXIgICpld2tfd2ViX2RhdGFiYXNlX2Rpc3BsYXlfbmFtZV9nZXQoRXdrX1dlYl9EYXRhYmFzZSAq
byk7Ci0KLS8qKgotICogUmV0dXJucyB0aGUgc2l6ZSBvZiB0aGUgZGF0YWJhc2UgZXhwZWN0ZWQg
YnkgdGhlIHdlYiBhdXRob3IuCi0gKgotICogQHBhcmFtIG8gd2ViIGRhdGFiYXNlIG9iamVjdAot
ICoKLSAqIEByZXR1cm4gZXhwZWN0ZWQgc2l6ZQotICovCi1FQVBJIHVpbnQ2NF90ICAgICBld2tf
d2ViX2RhdGFiYXNlX2V4cGVjdGVkX3NpemVfZ2V0KGNvbnN0IEV3a19XZWJfRGF0YWJhc2UgKm8p
OwotCi0vKioKLSAqIFJldHVybnMgdGhlIGFic29sdXRlIHBhdGggdG8gdGhlIGRhdGFiYXNlIGZp
bGUuCi0gKgotICogSXQgcmV0dXJucyBhIGludGVybmFsIHN0cmluZyB3aGljaCBzaG91bGQgbm90
Ci0gKiBiZSBtb2RpZmllZC4gVGhlIHN0cmluZyBpcyBndWFyYW50ZWVkIHRvIGJlIHN0cmluZ3No
YXJlZC4KLSAqCi0gKiBAcGFyYW0gbyB3ZWIgZGF0YWJhc2Ugb2JqZWN0Ci0gKgotICogQHJldHVy
biB0aGUgZGF0YWJhc2UgcGF0aAotICovCi1FQVBJIGNvbnN0IGNoYXIgICpld2tfd2ViX2RhdGFi
YXNlX2ZpbGVuYW1lX2dldChFd2tfV2ViX0RhdGFiYXNlICpvKTsKLQotLyoqCi0gKiBSZXR1cm5z
IHRoZSBuYW1lIG9mIHRoZSBkYXRhYmFzZS4KLSAqCi0gKiBJdCByZXR1cm5zIGEgaW50ZXJuYWwg
c3RyaW5nIHdoaWNoIHNob3VsZCBub3QKLSAqIGJlIG1vZGlmaWVkLiBUaGUgc3RyaW5nIGlzIGd1
YXJhbnRlZWQgdG8gYmUgc3RyaW5nc2hhcmVkLgotICoKLSAqIEBwYXJhbSBvIHdlYiBkYXRhYmFz
ZSBvYmplY3QKLSAqCi0gKiBAcmV0dXJuIHRoZSBkYXRhYmFzZSBuYW1lCi0gKi8KLUVBUEkgY29u
c3QgY2hhciAgKmV3a193ZWJfZGF0YWJhc2VfbmFtZV9nZXQoRXdrX1dlYl9EYXRhYmFzZSAqbyk7
Ci0KLS8qKgotICogUmV0cmlldmVzIHRoZSBzZWN1cml0eSBvcmlnaW4gb2YgdGhlIGRhdGFiYXNl
LgotICoKLSAqIFRoZSByZXR1cm5lZCB2YWx1ZSBzaG91bGQgYmUgZnJlZWQgYnkgZXdrX3NlY3Vy
aXR5X29yaWdpbl9mcmVlKCkuCi0gKgotICogQHBhcmFtIG8gd2ViIGRhdGFiYXNlIG9iamVjdAot
ICoKLSAqIEByZXR1cm4gdGhlIHNlY3VyaXR5IG9yaWdpbgotICovCi1FQVBJIEV3a19TZWN1cml0
eV9PcmlnaW4gKmV3a193ZWJfZGF0YWJhc2Vfc2VjdXJpdHlfb3JpZ2luX2dldChjb25zdCBFd2tf
V2ViX0RhdGFiYXNlICpvKTsKLQotLyoqCi0gKiBSZXR1cm5zIHRoZSBzaXplIG9mIHRoZSBkYXRh
YmFzZS4KLSAqCi0gKiBAcGFyYW0gbyB3ZWIgZGF0YWJhc2Ugb2JqZWN0Ci0gKgotICogQHJldHVy
biB0aGUgY3VycmVudCBzaXplIG9mIHRoZSBkYXRhYmFzZQotICovCi1FQVBJIHVpbnQ2NF90ICAg
ICBld2tfd2ViX2RhdGFiYXNlX3NpemVfZ2V0KGNvbnN0IEV3a19XZWJfRGF0YWJhc2UgKm8pOwot
Ci0vKioKLSAqIFJlbW92ZSB0aGUgZGF0YWJhc2UgZnJvbSB0aGUgc2VjdXJpdHkgb3JpZ2luIGFu
ZCBkZXN0cm95IGFsbCBkYXRhLgotICoKLSAqIEBwYXJhbSBvIHdlYiBkYXRhYmFzZSBvYmplY3QK
LSAqLwotRUFQSSB2b2lkICAgICAgICAgZXdrX3dlYl9kYXRhYmFzZV9yZW1vdmUoRXdrX1dlYl9E
YXRhYmFzZSAqbyk7Ci0KLS8qKgotICogUmVtb3ZlIGFsbCB0aGUgZGF0YWJhc2VzIGluIHRoZSBj
dXJyZW50IGRlZmF1bHQgcGF0aC4KLSAqLwotRUFQSSB2b2lkICAgICAgICAgZXdrX3dlYl9kYXRh
YmFzZV9yZW1vdmVfYWxsKHZvaWQpOwotCi0vKioKLSAqIFJlbGVhc2UgYWxsIHJlc291cmNlcyBh
bGxvY2F0ZWQgYnkgYSB3ZWIgZGF0YWJhc2Ugb2JqZWN0LgotICoKLSAqIEBwYXJhbSBvIHdlYiBk
YXRhYmFzZSBvYmplY3QKLSAqLwotRUFQSSB2b2lkICAgICAgICAgZXdrX3dlYl9kYXRhYmFzZV9m
cmVlKEV3a19XZWJfRGF0YWJhc2UgKm8pOwotCi0vKioKLSAqIENvbnZlbmllbmNlIGZ1bmN0aW9u
IGZvciByZWxlYXNpbmcgYWxsIHdlYiBkYXRhYmFzZSBvYmplY3RzIGZyb20gYSBsaXN0LgotICoK
LSAqIEBwYXJhbSBkYXRhYmFzZV9saXN0IGxpc3Qgb2Ygd2ViIGRhdGFiYXNlIG9iamVjdHMgdG8g
YmUgZnJlZWQKLSAqLwotRUFQSSB2b2lkICAgICAgICAgZXdrX3dlYl9kYXRhYmFzZV9saXN0X2Zy
ZWUoRWluYV9MaXN0ICpkYXRhYmFzZV9saXN0KTsKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi19Ci0j
ZW5kaWYKLSNlbmRpZiAvLyBld2tfd2ViX2RhdGFiYXNlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvZWZsL2V3ay9ld2tfd2ViX2RhdGFiYXNlX3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQv
ZWZsL2V3ay9ld2tfd2ViX2RhdGFiYXNlX3ByaXZhdGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggNzI0MDVmZS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdr
X3dlYl9kYXRhYmFzZV9wcml2YXRlLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi0v
KgotICAgIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbgotCi0gICAgVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgot
ICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCi0gICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCi0gICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAg
ICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQotICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgotCi0gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAgIGFsb25nIHdpdGggdGhpcyBsaWJy
YXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gICAgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0
aCBGbG9vciwKLSAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSovCi0KLSNpZm5kZWYg
ZXdrX3dlYl9kYXRhYmFzZV9wcml2YXRlX2gKLSNkZWZpbmUgZXdrX3dlYl9kYXRhYmFzZV9wcml2
YXRlX2gKLQotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci1jbGFzcyBTZWN1cml0eU9yaWdpbjsKLX0KLQotRXdrX1dlYl9EYXRhYmFzZSogZXdr
X3dlYl9kYXRhYmFzZV9uZXcoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qIGNvcmVPcmlnaW4sIGNv
bnN0IFdURjo6U3RyaW5nJiBjb3JlTmFtZSk7Ci0KLSNlbmRpZiAvLyBld2tfd2ViX2RhdGFiYXNl
X3ByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a193aW5kb3df
ZmVhdHVyZXMuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a193aW5kb3dfZmVhdHVyZXMu
Y3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMDAwMjhiLi4wMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfd2luZG93X2ZlYXR1cmVzLmNwcAorKysgL2Rldi9u
dWxsCkBAIC0xLDEyMSArMCwwIEBACi0vKgotICAgIENvcHlyaWdodCAoQykgMjAxMCBQcm9GVVNJ
T04gZW1iZWRkZWQgc3lzdGVtcwotICAgIENvcHlyaWdodCAoQykgMjAxMCBTYW1zdW5nIEVsZWN0
cm9uaWNzCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAg
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KLSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgotKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgImV3a193aW5kb3dfZmVh
dHVyZXMuaCIKLQotI2luY2x1ZGUgIldpbmRvd0ZlYXR1cmVzLmgiCi0jaW5jbHVkZSAiZXdrX3By
aXZhdGUuaCIKLSNpbmNsdWRlIDxFaW5hLmg+Ci0KLS8qKgotICogXHN0cnVjdCAgX0V3a19XaW5k
b3dfRmVhdHVyZXMKLSAqIEBicmllZiAgIENvbnRhaW5zIHRoZSB3aW5kb3cgZmVhdHVyZXMgZGF0
YS4KLSAqLwotc3RydWN0IF9Fd2tfV2luZG93X0ZlYXR1cmVzIHsKLSAgICB1bnNpZ25lZCBpbnQg
X19yZWY7Ci0gICAgV2ViQ29yZTo6V2luZG93RmVhdHVyZXMqIGNvcmU7Ci19OwotCi12b2lkIGV3
a193aW5kb3dfZmVhdHVyZXNfdW5yZWYoRXdrX1dpbmRvd19GZWF0dXJlcyogd2luZG93RmVhdHVy
ZXMpCi17Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4od2luZG93RmVhdHVyZXMpOwot
ICAgIEVJTkFfU0FGRVRZX09OX0ZBTFNFX1JFVFVSTih3aW5kb3dGZWF0dXJlcy0+X19yZWYgPiAw
KTsKLQotICAgIGlmICgtLXdpbmRvd0ZlYXR1cmVzLT5fX3JlZikKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgZGVsZXRlIHdpbmRvd0ZlYXR1cmVzLT5jb3JlOwotICAgIHdpbmRvd0ZlYXR1cmVzLT5j
b3JlID0gMDsKLSAgICBkZWxldGUgd2luZG93RmVhdHVyZXM7Ci19Ci0KLXZvaWQgZXdrX3dpbmRv
d19mZWF0dXJlc19yZWYoRXdrX1dpbmRvd19GZWF0dXJlcyogd2luZG93RmVhdHVyZXMpCi17Ci0g
ICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4od2luZG93RmVhdHVyZXMpOwotICAgIHdpbmRv
d0ZlYXR1cmVzLT5fX3JlZisrOwotfQotCi12b2lkIGV3a193aW5kb3dfZmVhdHVyZXNfYm9vbF9w
cm9wZXJ0eV9nZXQoY29uc3QgRXdrX1dpbmRvd19GZWF0dXJlcyogd2luZG93RmVhdHVyZXMsIEVp
bmFfQm9vbCogdG9vbGJhclZpc2libGUsIEVpbmFfQm9vbCogc3RhdHVzYmFyVmlzaWJsZSwgRWlu
YV9Cb29sKiBzY3JvbGxiYXJzVmlzaWJsZSwgRWluYV9Cb29sKiBtZW51YmFyVmlzaWJsZSwgRWlu
YV9Cb29sKiBsb2NhdGlvbmJhclZpc2libGUsIEVpbmFfQm9vbCogZnVsbFNjcmVlbikKLXsKLSAg
ICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTih3aW5kb3dGZWF0dXJlcyk7Ci0gICAgRUlOQV9T
QUZFVFlfT05fTlVMTF9SRVRVUk4od2luZG93RmVhdHVyZXMtPmNvcmUpOwotCi0gICAgaWYgKHRv
b2xiYXJWaXNpYmxlKQotICAgICAgICAqdG9vbGJhclZpc2libGUgPSB3aW5kb3dGZWF0dXJlcy0+
Y29yZS0+dG9vbEJhclZpc2libGU7Ci0KLSAgICBpZiAoc3RhdHVzYmFyVmlzaWJsZSkKLSAgICAg
ICAgKnN0YXR1c2JhclZpc2libGUgPSB3aW5kb3dGZWF0dXJlcy0+Y29yZS0+c3RhdHVzQmFyVmlz
aWJsZTsKLQotICAgIGlmIChzY3JvbGxiYXJzVmlzaWJsZSkKLSAgICAgICAgKnNjcm9sbGJhcnNW
aXNpYmxlID0gd2luZG93RmVhdHVyZXMtPmNvcmUtPnNjcm9sbGJhcnNWaXNpYmxlOwotCi0gICAg
aWYgKG1lbnViYXJWaXNpYmxlKQotICAgICAgICAqbWVudWJhclZpc2libGUgPSB3aW5kb3dGZWF0
dXJlcy0+Y29yZS0+bWVudUJhclZpc2libGU7Ci0KLSAgICBpZiAobG9jYXRpb25iYXJWaXNpYmxl
KQotICAgICAgICAqbG9jYXRpb25iYXJWaXNpYmxlID0gd2luZG93RmVhdHVyZXMtPmNvcmUtPmxv
Y2F0aW9uQmFyVmlzaWJsZTsKLQotICAgIGlmIChmdWxsU2NyZWVuKQotICAgICAgICAqZnVsbFNj
cmVlbiA9IHdpbmRvd0ZlYXR1cmVzLT5jb3JlLT5mdWxsc2NyZWVuOwotfQotCi12b2lkIGV3a193
aW5kb3dfZmVhdHVyZXNfaW50X3Byb3BlcnR5X2dldChjb25zdCBFd2tfV2luZG93X0ZlYXR1cmVz
KiB3aW5kb3dGZWF0dXJlcywgaW50KiB4LCBpbnQqIHksIGludCogd2lkdGgsIGludCogaGVpZ2h0
KQotewotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHdpbmRvd0ZlYXR1cmVzKTsKLSAg
ICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTih3aW5kb3dGZWF0dXJlcy0+Y29yZSk7Ci0KLSAg
ICBpZiAoeCkKLSAgICAgICAgKnggPSB3aW5kb3dGZWF0dXJlcy0+Y29yZS0+eFNldCA/IHN0YXRp
Y19jYXN0PGludD4od2luZG93RmVhdHVyZXMtPmNvcmUtPngpIDogLTE7Ci0KLSAgICBpZiAoeSkK
LSAgICAgICAgKnkgPSB3aW5kb3dGZWF0dXJlcy0+Y29yZS0+eVNldCA/IHN0YXRpY19jYXN0PGlu
dD4od2luZG93RmVhdHVyZXMtPmNvcmUtPnkpIDogLTE7Ci0KLSAgICBpZiAod2lkdGgpCi0gICAg
ICAgICp3aWR0aCA9IHdpbmRvd0ZlYXR1cmVzLT5jb3JlLT53aWR0aFNldCA/IHN0YXRpY19jYXN0
PGludD4od2luZG93RmVhdHVyZXMtPmNvcmUtPndpZHRoKSA6IC0xOwotCi0gICAgaWYgKGhlaWdo
dCkKLSAgICAgICAgKmhlaWdodCA9IHdpbmRvd0ZlYXR1cmVzLT5jb3JlLT5oZWlnaHRTZXQgPyBz
dGF0aWNfY2FzdDxpbnQ+KHdpbmRvd0ZlYXR1cmVzLT5jb3JlLT5oZWlnaHQpIDogLTE7Ci19Ci0K
LS8qIGludGVybmFsIG1ldGhvZHMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKi8KLQotLyoqCi0gKiBAaW50ZXJuYWwKLSAqCi0gKiBDcmVhdGVzIGEg
bmV3IEV3a19XaW5kb3dfRmVhdHVyZXMgb2JqZWN0LgotICoKLSAqIEBwYXJhbSBjb3JlIGlmIG5v
dCBAYyAwIGEgbmV3IFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzIGlzIGFsbG9jYXRlZCBjb3B5aW5n
IGNvcmUgZmVhdHVyZXMgYW5kCi0gKiBpdCBpcyBlbWJlZGRlZCBpbnNpZGUgdGhlIEV3a19XaW5k
b3dfRmVhdHVyZXMgd2hvc2UgcmVmIGNvdW50IGlzIGluaXRpYWxpemVkLCBpZiBjb3JlIGlzIEBj
IDAgYSBuZXcgb25lIGlzIGNyZWF0ZWQgd2l0aCB0aGUgZGVmYXVsdCBmZWF0dXJlcy4KLSAqIEBy
ZXR1cm4gYSBuZXcgYWxsb2NhdGVkIHRoZSBFd2tfV2luZG93X0ZlYXR1cmVzIG9iamVjdCBvbiBz
dWNlc3Mgb3IgQGMgMCBvbiBmYWlsdXJlCi0gKi8KLUV3a19XaW5kb3dfRmVhdHVyZXMqIGV3a193
aW5kb3dfZmVhdHVyZXNfbmV3X2Zyb21fY29yZShjb25zdCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJl
cyogY29yZSkKLXsKLSAgICBFd2tfV2luZG93X0ZlYXR1cmVzKiB3aW5kb3dfZmVhdHVyZXMgPSBu
ZXcgRXdrX1dpbmRvd19GZWF0dXJlczsKLQotICAgIGlmIChjb3JlKQotICAgICAgICB3aW5kb3df
ZmVhdHVyZXMtPmNvcmUgPSBuZXcgV2ViQ29yZTo6V2luZG93RmVhdHVyZXMoKmNvcmUpOwotICAg
IGVsc2UKLSAgICAgICAgd2luZG93X2ZlYXR1cmVzLT5jb3JlID0gbmV3IFdlYkNvcmU6OldpbmRv
d0ZlYXR1cmVzKCk7Ci0KLSAgICB3aW5kb3dfZmVhdHVyZXMtPl9fcmVmID0gMTsKLQotICAgIHJl
dHVybiB3aW5kb3dfZmVhdHVyZXM7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9l
d2svZXdrX3dpbmRvd19mZWF0dXJlcy5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a193aW5k
b3dfZmVhdHVyZXMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDY3YTQ1ZS4uMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3dpbmRvd19mZWF0dXJlcy5oCisr
KyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMTAg
UHJvRlVTSU9OIGVtYmVkZGVkIHN5c3RlbXMKLSAgICBDb3B5cmlnaHQgKEMpIDIwMTAgU2Ftc3Vu
ZyBFbGVjdHJvbmljcwotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gICAgTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gICAgdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgot
Ci0gICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICAgIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0gICAgWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZQotICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIu
ICBJZiBub3QsIHdyaXRlIHRvCi0gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAgICBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KLSovCi0KLS8qKgotICogQGZpbGUgICAgZXdrX3dpbmRvd19mZWF0dXJlcy5o
Ci0gKiBAYnJpZWYgICBBY2Nlc3MgdG8gdGhlIGZlYXR1cmVzIG9mIHdpbmRvdy4KLSAqLwotCi0j
aWZuZGVmIGV3a193aW5kb3dfZmVhdHVyZXNfaAotI2RlZmluZSBld2tfd2luZG93X2ZlYXR1cmVz
X2gKLQotI2luY2x1ZGUgPEVpbmEuaD4KLQotI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gIkMi
IHsKLSNlbmRpZgotCi0vKiogQ3JlYXRlcyBhIHR5cGUgbmFtZSBmb3IgX0V3a19XaW5kb3dfRmVh
dHVyZXMuICovCi10eXBlZGVmIHN0cnVjdCBfRXdrX1dpbmRvd19GZWF0dXJlcyBFd2tfV2luZG93
X0ZlYXR1cmVzOwotCi0vKioKLSAqIERlY3JlYXNlcyB0aGUgcmVmZXJlY2UgY291bnQgb2YgYW4g
RXdrX1dpbmRvd19GZWF0dXJlcywgcG9zc2libHkgZnJlZWluZyBpdC4KLSAqCi0gKiBXaGVuIHRo
ZSByZWZlcmVuY2UgY291bnQgb2YgdGhlIG9iamVjdCByZWFjaGVzIDAsIGl0IGlzIGZyZWVkLgot
ICoKLSAqIEBwYXJhbSB3aW5kb3dfZmVhdHVyZXMgdGhlIG9iamVjdCB0byBkZWNyZWFzZSByZWZl
cmVuY2UgY291bnQKLSAqLwotRUFQSSB2b2lkICAgICAgICAgZXdrX3dpbmRvd19mZWF0dXJlc191
bnJlZihFd2tfV2luZG93X0ZlYXR1cmVzICp3aW5kb3dfZmVhdHVyZXMpOwotCi0vKioKLSAqIElu
Y3JlYXNlcyB0aGUgcmVmZXJlbmNlIGNvdW50IG9mIGFuIEV3a19XaW5kb3dfRmVhdHVyZXMuCi0g
KgotICogQHBhcmFtIHdpbmRvd19mZWF0dXJlcyB0aGUgb2JqZWN0IHRvIGluY3JlYXNlIHJlZmVy
ZW5jZSBjb3VudAotICovCi1FQVBJIHZvaWQgICAgICAgICBld2tfd2luZG93X2ZlYXR1cmVzX3Jl
ZihFd2tfV2luZG93X0ZlYXR1cmVzICp3aW5kb3dfZmVhdHVyZXMpOwotCi0vKioKLSAqIEdldHMg
Ym9vbGVhbiBwcm9wZXJ0aWVzIG9mIGFuIEV3a19XaW5kb3dfRmVhdHVyZXMuCi0gKgotICogUHJv
cGVydGllcyBhcmUgcmV0dXJuZWQgaW4gdGhlIHJlc3BlY3RpdmUgcG9pbnRlcnMuIFBhc3Npbmcg
QGMgTlVMTCB0byBhbnkgb2YKLSAqIHRoZXNlIHBvaW50ZXJzIHdpbGwgY2F1c2UgdGhhdCBwcm9w
ZXJ0eSB0byBub3QgYmUgcmV0dXJuZWQuCi0gKgotICogQHBhcmFtIHdpbmRvd19mZWF0dXJlcyB0
aGUgb2JqZWN0IHRvIGdldCBib29sZWFuIHByb3BlcnRpZXMKLSAqIEBwYXJhbSB0b29sYmFyX3Zp
c2libGUgdGhlIHBvaW50ZXIgdG8gc3RvcmUgaWYgdG9vbGJhciBpcyB2aXNpYmxlCi0gKiBAcGFy
YW0gc3RhdHVzYmFyX3Zpc2libGUgdGhlIHBvaW50ZXIgdG8gc3RvcmUgaWYgc3RhdHVzYmFyIGlz
IHZpc2libGUKLSAqIEBwYXJhbSBzY3JvbGxiYXJzX3Zpc2libGUgdGhlIHBvaW50ZXIgdG8gc3Rv
cmUgaWYgc2Nyb2xsYmFycyBpcyB2aXNpYmxlCi0gKiBAcGFyYW0gbWVudWJhcl92aXNpYmxlIHRo
ZSBwb2ludGVyIHRvIHN0b3JlIGlmIG1lbnViYXIgaXMgdmlzaWJsZQotICogQHBhcmFtIGxvY2F0
aW9uYmFyX3Zpc2libGUgdGhlIHBvaW50ZXIgdG8gc3RvcmUgaWYgbG9jYXRpb25iYXIgaXMgdmlz
aWJsZQotICogQHBhcmFtIGZ1bGxzY3JlZW4gdGhlIHBvaW50ZXIgdG8gc3RvcmUgaWYgZnVsbHNj
cmVlbiBpcyBlbmFibGVkCi0gKgotICogQHNlZSBld2tfd2luZG93X2ZlYXR1cmVzX2ludF9wcm9w
ZXJ0eV9nZXQKLSAqLwotRUFQSSB2b2lkICAgICAgICAgZXdrX3dpbmRvd19mZWF0dXJlc19ib29s
X3Byb3BlcnR5X2dldChjb25zdCBFd2tfV2luZG93X0ZlYXR1cmVzICp3aW5kb3dfZmVhdHVyZXMs
IEVpbmFfQm9vbCAqdG9vbGJhcl92aXNpYmxlLCBFaW5hX0Jvb2wgKnN0YXR1c2Jhcl92aXNpYmxl
LCBFaW5hX0Jvb2wgKnNjcm9sbGJhcnNfdmlzaWJsZSwgRWluYV9Cb29sICptZW51YmFyX3Zpc2li
bGUsIEVpbmFfQm9vbCAqbG9jYXRpb25iYXJfdmlzaWJsZSwgRWluYV9Cb29sICpmdWxsc2NyZWVu
KTsKLQotLyoqCi0gKiBHZXRzIGludCBwcm9wZXJ0aWVzIG9mIGFuIEV3a19XaW5kb3dfRmVhdHVy
ZXMuCi0gKgotICogUHJvcGVydGllcyBhcmUgcmV0dXJuZWQgaW4gdGhlIHJlc3BlY3RpdmUgcG9p
bnRlcnMuIFBhc3NpbmcgQGMgTlVMTCB0byBhbnkgb2YKLSAqIHRoZXNlIHBvaW50ZXJzIHdpbGwg
Y2F1c2UgdGhhdCBwcm9wZXJ0eSB0byBub3QgYmUgcmV0dXJuZWQuCi0gKgotICogTWFrZSBzdXJl
IHRvIGNoZWNrIGlmIHRoZSB2YWx1ZSByZXR1cm5lZCBpcyBsZXNzIHRoYW4gMCBiZWZvcmUgdXNp
bmcgaXQsIHNpbmNlIGluCi0gKiB0aGF0IGNhc2UgaXQgbWVhbnMgdGhhdCBwcm9wZXJ0eSB3YXMg
bm90IHNldCBpbiB3aW5kb3dfZmVhdHVyZXMgb2JqZWN0LgotICoKLSAqIEBwYXJhbSB3aW5kb3df
ZmVhdHVyZXMgdGhlIHdpbmRvdydzIGZlYXR1cmVzCi0gKiBAcGFyYW0geCB0aGUgcG9pbnRlciB0
byBzdG9yZSB4IHBvc2l0aW9uCi0gKiBAcGFyYW0geSB0aGUgcG9pbnRlciB0byBzdG9yZSB5IHBv
c2l0aW9uCi0gKiBAcGFyYW0gdyB0aGUgcG9pbnRlciB0byBzdG9yZSB3aWR0aAotICogQHBhcmFt
IGggdGhlIHBvaW50ZXIgdG8gc3RvcmUgaGVpZ2h0Ci0gKgotICogQHNlZSBld2tfd2luZG93X2Zl
YXR1cmVzX2Jvb2xfcHJvcGVydHlfZ2V0Ci0gKi8KLUVBUEkgdm9pZCAgICAgICAgIGV3a193aW5k
b3dfZmVhdHVyZXNfaW50X3Byb3BlcnR5X2dldChjb25zdCBFd2tfV2luZG93X0ZlYXR1cmVzICp3
aW5kb3dfZmVhdHVyZXMsIGludCAqeCwgaW50ICp5LCBpbnQgKncsIGludCAqaCk7Ci0KLSNpZmRl
ZiBfX2NwbHVzcGx1cwotfQotI2VuZGlmCi0jZW5kaWYgLy8gZXdrX3dpbmRvd19mZWF0dXJlc19o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3dpbmRvd19mZWF0dXJlc19w
cml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3dpbmRvd19mZWF0dXJlc19wcml2
YXRlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA2NTg1OTIuLjAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a193aW5kb3dfZmVhdHVyZXNfcHJpdmF0ZS5oCisr
KyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDkt
MjAxMCBQcm9GVVNJT04gZW1iZWRkZWQgc3lzdGVtcwotICAgIENvcHlyaWdodCAoQykgMjAwOS0y
MDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKLQotICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAgICBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICAgIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICAg
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KLQotICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gICAgTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAgICBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLQotICAgIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UKLSAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gICAgQm9zdG9u
LCBNQSAwMjExMC0xMzAxLCBVU0EuCi0qLwotCi0jaWZuZGVmIGV3a193aW5kb3dfZmVhdHVyZXNf
cHJpdmF0ZV9oCi0jZGVmaW5lIGV3a193aW5kb3dfZmVhdHVyZXNfcHJpdmF0ZV9oCi0KLUV3a19X
aW5kb3dfRmVhdHVyZXMqIGV3a193aW5kb3dfZmVhdHVyZXNfbmV3X2Zyb21fY29yZShjb25zdCBX
ZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyogY29yZSk7Ci0KLSNlbmRpZiAvLyBld2tfd2luZG93X2Zl
YXR1cmVzX3ByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvdGVzdHMvVW5p
dFRlc3RVdGlscy9FV0tUZXN0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0cy9Vbml0
VGVzdFV0aWxzL0VXS1Rlc3RCYXNlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
N2RmZjQ5Zi4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0cy9Vbml0VGVzdFV0
aWxzL0VXS1Rlc3RCYXNlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDYzICswLDAgQEAKLS8qCi0g
ICAgQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKLQotICAgIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAg
ICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVi
bGljCi0gICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCi0gICAgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAg
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2Vl
IHRoZSBHTlUKLSAgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgotCi0gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExl
c3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLSAgICBJbmMu
LCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQot
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkVXS1Rlc3RCYXNlLmgiCi0KLSNp
bmNsdWRlICJFV0tUZXN0RW52aXJvbm1lbnQuaCIKLSNpbmNsdWRlIDxFV2ViS2l0Lmg+Ci0jaW5j
bHVkZSA8RWNvcmUuaD4KLSNpbmNsdWRlIDxFZGplLmg+Ci0KLWV4dGVybiBFV0tVbml0VGVzdHM6
OkVXS1Rlc3RFbnZpcm9ubWVudCogZW52aXJvbm1lbnQ7Ci0KLW5hbWVzcGFjZSBFV0tVbml0VGVz
dHMgewotCi1FV0tUZXN0QmFzZTo6RVdLVGVzdEJhc2UoKQotewotfQotCi1FdmFzX09iamVjdCog
RVdLVGVzdEJhc2U6OndlYlZpZXcoKQotewotICAgIHJldHVybiBtX2V3a1Rlc3RWaWV3LndlYlZp
ZXcoKTsKLX0KLQotdm9pZCBFV0tUZXN0QmFzZTo6U2V0VXAoKQotewotICAgIEFTU0VSVF9UUlVF
KG1fZXdrVGVzdFZpZXcuaW5pdCgpKTsKLX0KLQotdm9pZCBFV0tUZXN0QmFzZTo6b25Mb2FkRmlu
aXNoZWQodm9pZCogZGF0YSwgRXZhc19PYmplY3QqIHdlYlZpZXcsIHZvaWQqIGV2ZW50SW5mbykK
LXsKLSAgICBlY29yZV9tYWluX2xvb3BfcXVpdCgpOwotfQotCi12b2lkIEVXS1Rlc3RCYXNlOjp3
YWl0VW50aWxMb2FkRmluaXNoZWQoKQotewotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNr
X2FkZCh3ZWJWaWV3KCksICJsb2FkLGZpbmlzaGVkIiwgb25Mb2FkRmluaXNoZWQsIDApOwotICAg
IGVjb3JlX21haW5fbG9vcF9iZWdpbigpOwotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNr
X2RlbCh3ZWJWaWV3KCksICJsb2FkLGZpbmlzaGVkIiwgb25Mb2FkRmluaXNoZWQpOwotfQotCi12
b2lkIEVXS1Rlc3RCYXNlOjpsb2FkVXJsKGNvbnN0IGNoYXIqIHVybCkKLXsKLSAgICBBU1NFUlRf
VFJVRShld2tfdmlld191cmlfc2V0KHdlYlZpZXcoKSwgdXJsKSk7Ci0gICAgd2FpdFVudGlsTG9h
ZEZpbmlzaGVkKCk7Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3Rz
L1VuaXRUZXN0VXRpbHMvRVdLVGVzdEJhc2UuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3RzL1Vu
aXRUZXN0VXRpbHMvRVdLVGVzdEJhc2UuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MGUyMjM1MS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0cy9Vbml0VGVzdFV0
aWxzL0VXS1Rlc3RCYXNlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi0vKgotICAg
IENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCi0KLSAgICBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICAg
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1Ymxp
YwotICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgotICAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAgICBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0
aGUgR05VCi0gICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KLQotICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNz
ZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBp
ZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCi0gICAgSW5jLiwg
NTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKLSov
Ci0KLSNpZm5kZWYgRVdLVGVzdEJhc2VfaAotI2RlZmluZSBFV0tUZXN0QmFzZV9oCi0KLSNpbmNs
dWRlICJFV0tUZXN0Q29uZmlnLmgiCi0jaW5jbHVkZSAiRVdLVGVzdFZpZXcuaCIKLSNpbmNsdWRl
IDxndGVzdC9ndGVzdC5oPgotCi1uYW1lc3BhY2UgRVdLVW5pdFRlc3RzIHsKLQotY2xhc3MgRVdL
VGVzdEJhc2U6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewotcHVibGljOgotICAgIHN0YXRpYyB2
b2lkIG9uTG9hZEZpbmlzaGVkKHZvaWQqIGRhdGEsIEV2YXNfT2JqZWN0KiB3ZWJWaWV3LCB2b2lk
KiBldmVudEluZm8pOwotCi0gICAgRXZhc19PYmplY3QqIHdlYlZpZXcoKTsKLSAgICB2aXJ0dWFs
IHZvaWQgU2V0VXAoKTsKLXByb3RlY3RlZDoKLSAgICBFV0tUZXN0QmFzZSgpOwotCi0gICAgdm9p
ZCBsb2FkVXJsKGNvbnN0IGNoYXIqIHVybCA9IENvbmZpZzo6ZGVmYXVsdFRlc3RQYWdlKTsKLSAg
ICB2b2lkIHdhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwotCi0gICAgRVdLVGVzdFZpZXcgbV9ld2tU
ZXN0VmlldzsKLX07Ci0KLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Vm
bC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXS1Rlc3RDb25maWcuaCBiL1NvdXJjZS9XZWJLaXQvZWZs
L3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLVGVzdENvbmZpZy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBmZjQ0YWVlLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3Rz
L1VuaXRUZXN0VXRpbHMvRVdLVGVzdENvbmZpZy5oCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAs
MCBAQAotLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcwotCi0g
ICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgotICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIg
R2VuZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLQotICAgIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAg
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCi0gICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiBTZWUgdGhlIEdOVQotICAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAgICBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
LAotICAgIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTEx
LTEzMDcgVVNBCi0qLwotCi0jaWZuZGVmIEVXS1Rlc3RDb25maWdfaAotI2RlZmluZSBFV0tUZXN0
Q29uZmlnX2gKLQotbmFtZXNwYWNlIEVXS1VuaXRUZXN0cyB7Ci1uYW1lc3BhY2UgQ29uZmlnIHsK
LXN0YXRpYyBjb25zdCBpbnQgZGVmYXVsdFZpZXdXaWR0aCA9IDYwMDsKLXN0YXRpYyBjb25zdCBp
bnQgZGVmYXVsdFZpZXdIZWlnaHQgPSA4MDA7Ci1zdGF0aWMgY29uc3QgY2hhciogY29uc3QgZGVm
YXVsdFRoZW1lUGF0aCA9IERFRkFVTFRfVEhFTUVfUEFUSCAiL2RlZmF1bHQuZWRqIjsKLXN0YXRp
YyBjb25zdCBjaGFyKiBjb25zdCBkZWZhdWx0VGVzdFBhZ2UgPSAiZmlsZTovLyIgREVGQVVMVF9U
RVNUX1BBR0VfRElSICIvZGVmYXVsdF90ZXN0X3BhZ2UuaHRtbCI7Ci19Ci19Ci0KLSNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0tUZXN0
RW52aXJvbm1lbnQuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9F
V0tUZXN0RW52aXJvbm1lbnQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YTFm
ZWE0Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMv
RVdLVGVzdEVudmlyb25tZW50LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLS8q
Ci0gICAgQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKLQotICAgIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
LSAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwg
UHVibGljCi0gICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCi0gICAgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgot
ICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
U2VlIHRoZSBHTlUKLSAgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgotCi0gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLSAgICBJ
bmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVT
QQotKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkVXS1Rlc3RFbnZpcm9ubWVu
dC5oIgotCi0jaW5jbHVkZSA8RVdlYktpdC5oPgotI2luY2x1ZGUgPEVjb3JlLmg+Ci0jaW5jbHVk
ZSA8RWRqZS5oPgotCi1uYW1lc3BhY2UgRVdLVW5pdFRlc3RzIHsKLQotRVdLVGVzdEVudmlyb25t
ZW50OjpFV0tUZXN0RW52aXJvbm1lbnQoYm9vbCB1c2VYMTFXaW5kb3cpCi0gICAgOiBtX3VzZVgx
MVdpbmRvdyh1c2VYMTFXaW5kb3cpCi17Ci19Ci0KLXZvaWQgRVdLVGVzdEVudmlyb25tZW50OjpT
ZXRVcCgpCi17Ci0gICAgQVNTRVJUX0dUKGV3a19pbml0KCksIDApOwotCi0gICAgY29uc3QgY2hh
ciogcHJveHlVcmwgPSBnZXRlbnYoImh0dHBfcHJveHkiKTsKLSAgICBpZiAocHJveHlVcmwpCi0g
ICAgICAgIGV3a19uZXR3b3JrX3Byb3h5X3VyaV9zZXQocHJveHlVcmwpOwotfQotCi12b2lkIEVX
S1Rlc3RFbnZpcm9ubWVudDo6VGVhckRvd24oKQotewotICAgIGV3a19zaHV0ZG93bigpOwotfQot
Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VX
S1Rlc3RFbnZpcm9ubWVudC5oIGIvU291cmNlL1dlYktpdC9lZmwvdGVzdHMvVW5pdFRlc3RVdGls
cy9FV0tUZXN0RW52aXJvbm1lbnQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2Nh
Njk2Ni4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxz
L0VXS1Rlc3RFbnZpcm9ubWVudC5oCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotLyoK
LSAgICBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcwotCi0gICAgVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgot
ICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQ
dWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLQotICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0g
ICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBT
ZWUgdGhlIEdOVQotICAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotICAgIElu
Yy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNB
Ci0qLwotCi0jaWZuZGVmIEVXS1Rlc3RFbnZpcm9ubWVudF9oCi0jZGVmaW5lIEVXS1Rlc3RFbnZp
cm9ubWVudF9oCi0KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgotCi1uYW1lc3BhY2UgRVdLVW5p
dFRlc3RzIHsKLQotY2xhc3MgRVdLVGVzdEVudmlyb25tZW50IDogcHVibGljIDo6dGVzdGluZzo6
RW52aXJvbm1lbnQgewotcHVibGljOgotICAgIGV4cGxpY2l0IEVXS1Rlc3RFbnZpcm9ubWVudChi
b29sIHVzZVgxMVdpbmRvdyk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgU2V0VXAoKTsKLSAgICB2aXJ0
dWFsIHZvaWQgVGVhckRvd24oKTsKLXByaXZhdGU6Ci0gICAgYm9vbCBtX3VzZVgxMVdpbmRvdzsK
LX07Ci0KLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0cy9V
bml0VGVzdFV0aWxzL0VXS1Rlc3RWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3RzL1Vu
aXRUZXN0VXRpbHMvRVdLVGVzdFZpZXcuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA3M2IzZDBiLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3RzL1VuaXRUZXN0
VXRpbHMvRVdLVGVzdFZpZXcuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotLyoK
LSAgICBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcwotCi0gICAgVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgot
ICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQ
dWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLQotICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0g
ICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBT
ZWUgdGhlIEdOVQotICAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotICAgIElu
Yy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNB
Ci0qLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRVdLVGVzdFZpZXcuaCIKLQot
I2luY2x1ZGUgPEVXZWJLaXQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLW5hbWVzcGFj
ZSBFV0tVbml0VGVzdHMgewotCi1FV0tUZXN0Vmlldzo6RVdLVGVzdFZpZXcoKQotewotfQotCi1i
b29sIEVXS1Rlc3RWaWV3Ojppbml0KGludCB3aWR0aCwgaW50IGhlaWdodCkKLXsKLSAgICBtX3dl
YlZpZXcgPSBudWxscHRyOwotCi0gICAgbV9lY29yZUV2YXMgPSBFZmxVbmlxdWVQdHI8RWNvcmVf
RXZhcz4oZWNvcmVfZXZhc19uZXcoMCwgMCwgMCwgd2lkdGgsIGhlaWdodCwgMCkpOwotICAgIGlm
ICghbV9lY29yZUV2YXMpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGVjb3JlX2V2YXNf
c2hvdyhtX2Vjb3JlRXZhcy5nZXQoKSk7Ci0gICAgRXZhcyogZXZhcyA9IGVjb3JlX2V2YXNfZ2V0
KG1fZWNvcmVFdmFzLmdldCgpKTsKLSAgICBpZiAoIWV2YXMpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLQotICAgIG1fd2ViVmlldyA9IGFkb3B0UmVmKGV3a192aWV3X2FkZChldmFzKSk7Ci0gICAg
aWYgKCFtX3dlYlZpZXcpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGV3a192aWV3X3Ro
ZW1lX3NldChtX3dlYlZpZXcuZ2V0KCksIENvbmZpZzo6ZGVmYXVsdFRoZW1lUGF0aCk7Ci0KLSAg
ICBldmFzX29iamVjdF9yZXNpemUobV93ZWJWaWV3LmdldCgpLCB3aWR0aCwgaGVpZ2h0KTsKLSAg
ICBldmFzX29iamVjdF9zaG93KG1fd2ViVmlldy5nZXQoKSk7Ci0gICAgZXZhc19vYmplY3RfZm9j
dXNfc2V0KG1fd2ViVmlldy5nZXQoKSwgRUlOQV9UUlVFKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0K
LQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9F
V0tUZXN0Vmlldy5oIGIvU291cmNlL1dlYktpdC9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0tU
ZXN0Vmlldy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZTQ4NjlhLi4wMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLVGVzdFZpZXcu
aAorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLS8qCi0gICAgQ29weXJpZ2h0IChDKSAy
MDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKLQotICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAgICBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0gICAgTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gICAg
dmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUKLSAgICBMZXNz
ZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0gICAgWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCi0gICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8g
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLSAgICBJbmMuLCA1OSBUZW1wbGUgUGxhY2Us
IFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQotKi8KLQotI2lmbmRlZiBFV0tU
ZXN0Vmlld19oCi0jZGVmaW5lIEVXS1Rlc3RWaWV3X2gKLQotI2luY2x1ZGUgIkVXS1Rlc3RDb25m
aWcuaCIKLSNpbmNsdWRlIDxFY29yZV9FdmFzLmg+Ci0jaW5jbHVkZSA8RXZhcy5oPgotI2luY2x1
ZGUgPHd0Zi9lZmwvUmVmUHRyRWZsLmg+Ci0jaW5jbHVkZSA8d3RmL2VmbC9VbmlxdWVQdHJFZmwu
aD4KLQotbmFtZXNwYWNlIEVXS1VuaXRUZXN0cyB7Ci0KLWNsYXNzIEVXS1Rlc3RWaWV3IHsKLXB1
YmxpYzoKLSAgICBFV0tUZXN0VmlldygpOwotCi0gICAgRXZhc19PYmplY3QqIHdlYlZpZXcoKSB7
IHJldHVybiBtX3dlYlZpZXcuZ2V0KCk7IH0KLQotICAgIGJvb2wgaW5pdChpbnQgd2lkdGggPSBD
b25maWc6OmRlZmF1bHRWaWV3V2lkdGgsIGludCBoZWlnaHQgPSBDb25maWc6OmRlZmF1bHRWaWV3
SGVpZ2h0KTsKLXByaXZhdGU6Ci0gICAgRVdLVGVzdFZpZXcoY29uc3QgRVdLVGVzdFZpZXcmKTsK
LSAgICBFV0tUZXN0VmlldyYgb3BlcmF0b3I9KGNvbnN0IEVXS1Rlc3RWaWV3Jik7Ci0KLSAgICBF
ZmxVbmlxdWVQdHI8RWNvcmVfRXZhcz4gbV9lY29yZUV2YXM7Ci0gICAgUmVmUHRyPEV2YXNfT2Jq
ZWN0PiBtX3dlYlZpZXc7Ci19OwotCi19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9lZmwvdGVzdHMvcmVzb3VyY2VzL2RlZmF1bHRfdGVzdF9wYWdlLmh0bWwgYi9Tb3VyY2Uv
V2ViS2l0L2VmbC90ZXN0cy9yZXNvdXJjZXMvZGVmYXVsdF90ZXN0X3BhZ2UuaHRtbApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWRkODFlNy4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2VmbC90ZXN0cy9yZXNvdXJjZXMvZGVmYXVsdF90ZXN0X3BhZ2UuaHRtbAorKysgL2Rldi9u
dWxsCkBAIC0xLDYgKzAsMCBAQAotPEhUTUw+Ci08Qk9EWT4KLTxIMiBhbGlnbj0iY2VudGVyIj5F
RkwgVW5pdCBUZXN0czwvSDI+Ci08SDIgYWxpZ249ImNlbnRlciI+RGVmYXVsdCBUZXN0aW5nIFdl
YiBQYWdlPC9IMj4KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
ZWZsL3Rlc3RzL3Rlc3RfZXdrX2NvbnRleHRtZW51LmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL3Rl
c3RzL3Rlc3RfZXdrX2NvbnRleHRtZW51LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDI5NDBlMS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0cy90ZXN0X2V3
a19jb250ZXh0bWVudS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMjQgKzAsMCBAQAotLyoKLSAg
ICBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcwotCi0gICAgVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICAg
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJs
aWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLQotICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gICAg
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUg
dGhlIEdOVQotICAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVz
c2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
aWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotICAgIEluYy4s
IDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCi0q
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpbmNsdWRlICJVbml0VGVzdFV0aWxzL0VXS1Rl
c3RCYXNlLmgiCi0jaW5jbHVkZSAiVW5pdFRlc3RVdGlscy9FV0tUZXN0Q29uZmlnLmgiCi0jaW5j
bHVkZSA8RVdlYktpdC5oPgotI2luY2x1ZGUgPEVjb3JlLmg+Ci0jaW5jbHVkZSA8d3RmL093blB0
ci5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBFV0tV
bml0VGVzdHM7Ci0KLS8qKgotICogQGJyaWVmIENoZWNraW5nIHdoZXRoZXIgZnVuY3Rpb24gY3Jl
YXRlcyBwcm9wZXIgbWVudSBpdGVtLgotICoKLSAqIFRoaXMgdGVzdCBjcmVhdGVzIGEgbWVudSBp
dGVtIGFuZCBjaGVja3MgaWYgYWxsIG1lbnUgaXRlbSdzIGF0dHJpYnV0ZXMgYXJlCi0gKiB0aGUg
c2FtZSBhcyBwYXNzZWQgdG8gdGVzdGVkIGZ1bmN0aW9uLgotICovCi1URVNUX0YoRVdLVGVzdEJh
c2UsIGV3a19jb250ZXh0X21lbnVfaXRlbV9uZXcpCi17Ci0gICAgbG9hZFVybCgpOwotCi0gICAg
RXZhcyogZXZhcyA9IGV2YXNfb2JqZWN0X2V2YXNfZ2V0KHdlYlZpZXcoKSk7Ci0gICAgQVNTRVJU
X1RSVUUoZXZhcyk7Ci0KLSAgICBFdmFzX0V2ZW50X01vdXNlX0Rvd24gbW91c2VEb3duOwotICAg
IG1vdXNlRG93bi5idXR0b24gPSAzOwotICAgIG1vdXNlRG93bi5vdXRwdXQueCA9IDA7Ci0gICAg
bW91c2VEb3duLm91dHB1dC55ID0gMDsKLSAgICBtb3VzZURvd24uY2FudmFzLnggPSAwOwotICAg
IG1vdXNlRG93bi5jYW52YXMueSA9IDA7Ci0gICAgbW91c2VEb3duLmRhdGEgPSAwOwotICAgIG1v
dXNlRG93bi5tb2RpZmllcnMgPSBjb25zdF9jYXN0PEV2YXNfTW9kaWZpZXIqPihldmFzX2tleV9t
b2RpZmllcl9nZXQoZXZhcykpOwotICAgIG1vdXNlRG93bi5sb2NrcyA9IGNvbnN0X2Nhc3Q8RXZh
c19Mb2NrKj4oZXZhc19rZXlfbG9ja19nZXQoZXZhcykpOwotICAgIG1vdXNlRG93bi5mbGFncyA9
IEVWQVNfQlVUVE9OX05PTkU7Ci0gICAgbW91c2VEb3duLnRpbWVzdGFtcCA9IGVjb3JlX2xvb3Bf
dGltZV9nZXQoKTsKLSAgICBtb3VzZURvd24uZXZlbnRfZmxhZ3MgPSBFVkFTX0VWRU5UX0ZMQUdf
Tk9ORTsKLSAgICBtb3VzZURvd24uZGV2ID0gMDsKLQotICAgIEFTU0VSVF9UUlVFKGV3a192aWV3
X2NvbnRleHRfbWVudV9mb3J3YXJkX2V2ZW50KHdlYlZpZXcoKSwgJm1vdXNlRG93bikpOwotCi0g
ICAgRXdrX0NvbnRleHRfTWVudSogY29udGV4dE1lbnUgPSBld2tfdmlld19jb250ZXh0X21lbnVf
Z2V0KHdlYlZpZXcoKSk7Ci0KLSAgICBBU1NFUlRfVFJVRShjb250ZXh0TWVudSk7Ci0KLSAgICBF
d2tfQ29udGV4dF9NZW51X0l0ZW1fVHlwZSBpdGVtVHlwZSA9IEVXS19BQ1RJT05fVFlQRTsKLSAg
ICBFd2tfQ29udGV4dF9NZW51X0FjdGlvbiBpdGVtQWN0aW9uID0gRVdLX0NPTlRFWFRfTUVOVV9J
VEVNX0NVU1RPTV9UQUdfTk9fQUNUSU9OOwotICAgIGNvbnN0IGNoYXIqIGl0ZW1UaXRsZSA9ICJU
ZXN0IEl0ZW0iOwotICAgIGJvb2wgaXRlbUNoZWNrZWQgPSBmYWxzZTsKLSAgICBib29sIGl0ZW1F
bmFibGVkID0gZmFsc2U7Ci0KLSAgICBFd2tfQ29udGV4dF9NZW51X0l0ZW0qIGNvbnRleHRNZW51
SXRlbSA9IGV3a19jb250ZXh0X21lbnVfaXRlbV9uZXcoaXRlbVR5cGUsIGl0ZW1BY3Rpb24sIGNv
bnRleHRNZW51LCAwLCBpdGVtVGl0bGUsIGl0ZW1DaGVja2VkLCBpdGVtRW5hYmxlZCk7Ci0KLSAg
ICBBU1NFUlRfVFJVRShjb250ZXh0TWVudUl0ZW0pOwotCi0gICAgRVhQRUNUX0VRKGl0ZW1UeXBl
LCBld2tfY29udGV4dF9tZW51X2l0ZW1fdHlwZV9nZXQoY29udGV4dE1lbnVJdGVtKSk7Ci0gICAg
RVhQRUNUX0VRKGl0ZW1BY3Rpb24sIGV3a19jb250ZXh0X21lbnVfaXRlbV9hY3Rpb25fZ2V0KGNv
bnRleHRNZW51SXRlbSkpOwotICAgIEVYUEVDVF9FUShjb250ZXh0TWVudSwgZXdrX2NvbnRleHRf
bWVudV9pdGVtX3BhcmVudF9nZXQoY29udGV4dE1lbnVJdGVtKSk7Ci0gICAgRVhQRUNUX1NUUkVR
KGl0ZW1UaXRsZSwgZXdrX2NvbnRleHRfbWVudV9pdGVtX3RpdGxlX2dldChjb250ZXh0TWVudUl0
ZW0pKTsKLSAgICBFWFBFQ1RfRVEoaXRlbUNoZWNrZWQsIGV3a19jb250ZXh0X21lbnVfaXRlbV9j
aGVja2VkX2dldChjb250ZXh0TWVudUl0ZW0pKTsKLSAgICBFWFBFQ1RfRVEoaXRlbUVuYWJsZWQs
IGV3a19jb250ZXh0X21lbnVfaXRlbV9lbmFibGVkX2dldChjb250ZXh0TWVudUl0ZW0pKTsKLQot
ICAgIGV3a19jb250ZXh0X21lbnVfaXRlbV9mcmVlKGNvbnRleHRNZW51SXRlbSk7Ci19Ci0KLS8q
KgotICogQGJyaWVmIENoZWNraW5nIHdoZXRoZXIgZnVuY3Rpb24gcmV0dXJucyBwcm9wZXIgcGFy
ZW50IG1lbnUuCi0gKgotICogVGhpcyB0ZXN0IGNyZWF0ZXMgYSBjb250ZXh0IG1lbnVzLCBhbmQg
Y2hlY2tzIGlmIGNyZWF0ZWQgY29udGV4dCBtZW51J3MKLSAqIHBhcmVudCBpcyB0aGUgc2FtZSBm
b3IgZWFjaCBvZiBtZW51IGl0ZW1zLgotICovCi1URVNUX0YoRVdLVGVzdEJhc2UsIGV3a19jb250
ZXh0X21lbnVfaXRlbV9wYXJlbnRfZ2V0KQotewotICAgIGxvYWRVcmwoKTsKLQotICAgIEV2YXMq
IGV2YXMgPSBldmFzX29iamVjdF9ldmFzX2dldCh3ZWJWaWV3KCkpOwotICAgIEFTU0VSVF9UUlVF
KGV2YXMpOwotCi0gICAgRXZhc19FdmVudF9Nb3VzZV9Eb3duIG1vdXNlRG93bjsKLSAgICBtb3Vz
ZURvd24uYnV0dG9uID0gMzsKLSAgICBtb3VzZURvd24ub3V0cHV0LnggPSAwOwotICAgIG1vdXNl
RG93bi5vdXRwdXQueSA9IDA7Ci0gICAgbW91c2VEb3duLmNhbnZhcy54ID0gMDsKLSAgICBtb3Vz
ZURvd24uY2FudmFzLnkgPSAwOwotICAgIG1vdXNlRG93bi5kYXRhID0gMDsKLSAgICBtb3VzZURv
d24ubW9kaWZpZXJzID0gY29uc3RfY2FzdDxFdmFzX01vZGlmaWVyKj4oZXZhc19rZXlfbW9kaWZp
ZXJfZ2V0KGV2YXMpKTsKLSAgICBtb3VzZURvd24ubG9ja3MgPSBjb25zdF9jYXN0PEV2YXNfTG9j
ayo+KGV2YXNfa2V5X2xvY2tfZ2V0KGV2YXMpKTsKLSAgICBtb3VzZURvd24uZmxhZ3MgPSBFVkFT
X0JVVFRPTl9OT05FOwotICAgIG1vdXNlRG93bi50aW1lc3RhbXAgPSBlY29yZV9sb29wX3RpbWVf
Z2V0KCk7Ci0gICAgbW91c2VEb3duLmV2ZW50X2ZsYWdzID0gRVZBU19FVkVOVF9GTEFHX05PTkU7
Ci0gICAgbW91c2VEb3duLmRldiA9IDA7Ci0KLSAgICBBU1NFUlRfVFJVRShld2tfdmlld19jb250
ZXh0X21lbnVfZm9yd2FyZF9ldmVudCh3ZWJWaWV3KCksICZtb3VzZURvd24pKTsKLQotICAgIEV3
a19Db250ZXh0X01lbnUqIGNvbnRleHRNZW51ID0gZXdrX3ZpZXdfY29udGV4dF9tZW51X2dldCh3
ZWJWaWV3KCkpOwotCi0gICAgQVNTRVJUX1RSVUUoY29udGV4dE1lbnUpOwotCi0gICAgY29uc3Qg
RWluYV9MaXN0KiBjb250ZXh0TWVudUl0ZW1zID0gZXdrX2NvbnRleHRfbWVudV9pdGVtX2xpc3Rf
Z2V0KGNvbnRleHRNZW51KTsKLQotICAgIEFTU0VSVF9UUlVFKGNvbnRleHRNZW51SXRlbXMpOwot
Ci0gICAgY29uc3QgRWluYV9MaXN0KiBsaXN0SXRlcmF0b3I7Ci0gICAgdm9pZCogZGF0YTsKLSAg
ICBFSU5BX0xJU1RfRk9SRUFDSChjb250ZXh0TWVudUl0ZW1zLCBsaXN0SXRlcmF0b3IsIGRhdGEp
Ci0gICAgICAgIEVYUEVDVF9FUShjb250ZXh0TWVudSwgZXdrX2NvbnRleHRfbWVudV9pdGVtX3Bh
cmVudF9nZXQoc3RhdGljX2Nhc3Q8RXdrX0NvbnRleHRfTWVudV9JdGVtKj4oZGF0YSkpKTsKLX0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3RzL3Rlc3RfZXdrX2ZyYW1lLmNwcCBi
L1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3RzL3Rlc3RfZXdrX2ZyYW1lLmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggYTI3MDFjNi4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Vm
bC90ZXN0cy90ZXN0X2V3a19mcmFtZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw2NiArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuICBSZWQgaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgSVRTIENPTlRSSUJVVE9SUwotICogYGBBUyBJUycnIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEKLSAqIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIEhPTERFUlMgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULAotICogSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUCi0gKiBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNp
bmNsdWRlICJVbml0VGVzdFV0aWxzL0VXS1Rlc3RCYXNlLmgiCi0jaW5jbHVkZSAiVW5pdFRlc3RV
dGlscy9FV0tUZXN0Q29uZmlnLmgiCi0jaW5jbHVkZSA8RVdlYktpdC5oPgotCi11c2luZyBuYW1l
c3BhY2UgRVdLVW5pdFRlc3RzOwotCi1zdGF0aWMgdm9pZCBpbml0QnVmZmVyKGNoYXIqKiBidWZm
ZXIpCi17Ci0gICAgZnJlZSgqYnVmZmVyKTsKLSAgICAqYnVmZmVyID0gMDsKLX0KLQotLyoqCi0g
KiBAYnJpZWYgVW5pdCB0ZXN0IGZvciBld2tfZnJhbWVfc291cmNlX2dldC4KLSAqLwotVEVTVF9G
KEVXS1Rlc3RCYXNlLCBld2tfZnJhbWVfc291cmNlX2dldCkKLXsKLSAgICBjaGFyKiBidWZmZXIg
PSAwOwotICAgIHNzaXplX3QgZmFpbGVkID0gLTE7IAotCi0gICAgLy8gQ2hlY2tpbmcgaWYgZnVu
Y3Rpb24gd29ya3MgcHJvcGVybHkgd2l0aG91dCBsb2FkaW5nIHVybC4KLSAgICBzc2l6ZV90IHJl
YWQgPSBld2tfZnJhbWVfc291cmNlX2dldChld2tfdmlld19mcmFtZV9tYWluX2dldCh3ZWJWaWV3
KCkpLCAmYnVmZmVyKTsKLSAgICBBU1NFUlRfRVEocmVhZCwgZmFpbGVkKTsKLSAgICBpbml0QnVm
ZmVyKCZidWZmZXIpOwotCi0gICAgLy8gRklYTUU6IEJVRyA0OTI0NiBoYXMgY2hhbmdlZCBsb2Fk
IGJlaGF2aW9yIHdoZW4gbWFsZm9ybWVkIHVybCBpcyBpbnB1dGVkLiBUaW1lciBvcGVyYXRpb24g
bWlnaHQgYmUgbmVlZGVkIHRvIHN5bmMgd2l0aCBXSzIuCi0gICAgLy8gU2VlIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDU2MjAgZm9yIG1vcmUgZGV0YWlscy4KLSAg
ICAvLyBDaGVja2luZyBpZiBmdW5jdGlvbiB3b3JrcyBwcm9wZXJseSB3aGVuIGxvYWRpbmcgbm9u
LWV4aXN0aW5nIHVybC4KLSAgICAvLyBsb2FkVXJsKCJodHRwOi8vd3d3LmFiY2RlZmdeXi5jb20i
KTsKLSAgICAvLyByZWFkID0gZXdrX2ZyYW1lX3NvdXJjZV9nZXQoZXdrX3ZpZXdfZnJhbWVfbWFp
bl9nZXQod2ViVmlldygpKSwgJmJ1ZmZlcik7Ci0gICAgLy8gQVNTRVJUX0VRKHJlYWQsIGZhaWxl
ZCk7Ci0gICAgLy8gaW5pdEJ1ZmZlcigmYnVmZmVyKTsKLQotICAgIC8vIENoZWNraW5nIGlmIGZ1
bmN0aW9uIHdvcmtzIHByb3Blcmx5IHdoZW4gZmluaXNoaW5nIGxvYWQgdXJsLgotICAgIGxvYWRV
cmwoKTsKLSAgICByZWFkID0gZXdrX2ZyYW1lX3NvdXJjZV9nZXQoZXdrX3ZpZXdfZnJhbWVfbWFp
bl9nZXQod2ViVmlldygpKSwgJmJ1ZmZlcik7Ci0gICAgQVNTRVJUX0dUKHJlYWQsIDApOwotICAg
IGluaXRCdWZmZXIoJmJ1ZmZlcik7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC90
ZXN0cy90ZXN0X2V3a19zZXR0aW5nLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3RzL3Rlc3Rf
ZXdrX3NldHRpbmcuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1Mzk4OTY0Li4w
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3RzL3Rlc3RfZXdrX3NldHRpbmcuY3Bw
CisrKyAvZGV2L251bGwKQEAgLTEsMTg4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTMgQ2lzY28gU3lzdGVtcywgSW5jLiAKLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWQgaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgSVRTIENPTlRSSUJV
VE9SUwotICogYGBBUyBJUycnIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEKLSAqIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAq
IEhPTERFUlMgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULAotICogSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUCi0gKiBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpbmNsdWRlICJVbml0VGVzdFV0aWxzL0VX
S1Rlc3RCYXNlLmgiCi0jaW5jbHVkZSAiVW5pdFRlc3RVdGlscy9FV0tUZXN0Q29uZmlnLmgiCi0j
aW5jbHVkZSA8RVdlYktpdC5oPgotCi11c2luZyBuYW1lc3BhY2UgRVdLVW5pdFRlc3RzOwotCi0v
KioKLSAqIEBicmllZiBVbml0IHRlc3QgZm9yIGNoZWNraW5nIHNldC9nZXQgb2YgZGVmYXVsdCBx
dW90YSBmb3IgV2ViIERhdGFiYXNlIGRhdGFiYXNlcyBieSBld2sgc2V0dGluZ3MgQVBJLgotICov
Ci1URVNUX0YoRVdLVGVzdEJhc2UsIGV3a19zZXR0aW5nc193ZWJfZGF0YWJhc2VfZGVmYXVsdF9x
dW90YSkKLXsKLSAgICBBU1NFUlRfRVEoMSAqIDEwMjQgKiAxMDI0LCBld2tfc2V0dGluZ3Nfd2Vi
X2RhdGFiYXNlX2RlZmF1bHRfcXVvdGFfZ2V0KCkpOwotCi0gICAgZXdrX3NldHRpbmdzX3dlYl9k
YXRhYmFzZV9kZWZhdWx0X3F1b3RhX3NldCgyICogMTAyNCAqIDEwMjQpOwotICAgIEFTU0VSVF9F
USgyICogMTAyNCAqIDEwMjQsIGV3a19zZXR0aW5nc193ZWJfZGF0YWJhc2VfZGVmYXVsdF9xdW90
YV9nZXQoKSk7Ci0KLSAgICBld2tfc2V0dGluZ3Nfd2ViX2RhdGFiYXNlX2RlZmF1bHRfcXVvdGFf
c2V0KDMgKiAxMDI0ICogMTAyNCk7Ci0gICAgQVNTRVJUX0VRKDMgKiAxMDI0ICogMTAyNCwgZXdr
X3NldHRpbmdzX3dlYl9kYXRhYmFzZV9kZWZhdWx0X3F1b3RhX2dldCgpKTsKLX0KLQotLyoqCi0g
KiBAYnJpZWYgVW5pdCB0ZXN0IGZvciBjaGVja2luZyBzZXQvZ2V0IG9mIGRpcmVjdG9yeSBwYXRo
IHdoZXJlIFdlYiBEYXRhYmFzZSBkYXRhYmFzZXMgaXMgc3RvcmVkIGJ5IGV3ayBzZXR0aW5ncyBB
UEkuCi0gKi8KLVRFU1RfRihFV0tUZXN0QmFzZSwgZXdrX3NldHRpbmdzX3dlYl9kYXRhYmFzZV9w
YXRoKQotewotICAgIGNoYXIqIGhvbWVQYXRoID0gZ2V0ZW52KCJIT01FIik7Ci0gICAgY2hhciog
ZGVmYXVsdFBhdGggPSByZWludGVycHJldF9jYXN0PGNoYXIqPihtYWxsb2Moc3RybGVuKGhvbWVQ
YXRoKSArIHN0cmxlbigiLy5jYWNoZS9XZWJLaXRFZmwvRGF0YWJhc2VzIikgKyAxKSk7Ci0KLSNp
ZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAgIHN0cm5jcHkoZGVmYXVsdFBhdGgsIGhvbWVQYXRo
LCBzdHJsZW4oaG9tZVBhdGgpICsgMSk7Ci0gICAgQVNTRVJUX1NUUkVRKHN0cmNhdChkZWZhdWx0
UGF0aCwgIi8uY2FjaGUvV2ViS2l0RWZsL0RhdGFiYXNlcyIpLCBld2tfc2V0dGluZ3Nfd2ViX2Rh
dGFiYXNlX3BhdGhfZ2V0KCkpOwotI2Vsc2UKLSAgICBBU1NFUlRfU1RSRVEoMCwgZXdrX3NldHRp
bmdzX3dlYl9kYXRhYmFzZV9wYXRoX2dldCgpKTsKLSNlbmRpZgotICAgIGZyZWUoZGVmYXVsdFBh
dGgpOwotCi0gICAgZXdrX3NldHRpbmdzX3dlYl9kYXRhYmFzZV9wYXRoX3NldCgifi9kYXRhL3dl
YmtpdERCIik7Ci0jaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAgICBBU1NFUlRfU1RSRVEoIn4v
ZGF0YS93ZWJraXREQiIsIGV3a19zZXR0aW5nc193ZWJfZGF0YWJhc2VfcGF0aF9nZXQoKSk7Ci0j
ZWxzZQotICAgIEFTU0VSVF9TVFJFUSgwLCBld2tfc2V0dGluZ3Nfd2ViX2RhdGFiYXNlX3BhdGhf
Z2V0KCkpOwotI2VuZGlmCi0KLSAgICBld2tfc2V0dGluZ3Nfd2ViX2RhdGFiYXNlX3BhdGhfc2V0
KCJ+L3RtcC93ZWJraXQiKTsKLSNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKSAgICAKLSAgICBBU1NF
UlRfU1RSRVEoIn4vdG1wL3dlYmtpdCIsIGV3a19zZXR0aW5nc193ZWJfZGF0YWJhc2VfcGF0aF9n
ZXQoKSk7Ci0jZWxzZQotICAgIEFTU0VSVF9TVFJFUSgwLCBld2tfc2V0dGluZ3Nfd2ViX2RhdGFi
YXNlX3BhdGhfZ2V0KCkpOwotI2VuZGlmCi19Ci0KLS8qKgotICogQGJyaWVmIFVuaXQgdGVzdCBm
b3IgY2hlY2tpbmcgc2V0L2dldCBvZiBkaXJlY3RvcnkgcGF0aCB3aGVyZSB0aGUgSFRNTDUgbG9j
YWwgc3RvcmFnZSBpbmRleGluZyBkYXRhYmFzZSBpcyBzdG9yZWQgYnkgZXdrIHNldHRpbmdzIEFQ
SS4KLSAqLwotVEVTVF9GKEVXS1Rlc3RCYXNlLCBld2tfc2V0dGluZ3NfbG9jYWxfc3RvcmFnZV9w
YXRoKQotewotICAgIGNoYXIqIGhvbWVQYXRoID0gZ2V0ZW52KCJIT01FIik7Ci0gICAgY2hhciog
ZGVmYXVsdFBhdGggPSByZWludGVycHJldF9jYXN0PGNoYXIqPihtYWxsb2Moc3RybGVuKGhvbWVQ
YXRoKSArIHN0cmxlbigiLy5sb2NhbC9zaGFyZS9XZWJLaXRFZmwvTG9jYWxTdG9yYWdlIikgKyAx
KSk7Ci0KLSAgICBzdHJuY3B5KGRlZmF1bHRQYXRoLCBob21lUGF0aCwgc3RybGVuKGhvbWVQYXRo
KSArIDEpOwotICAgIEFTU0VSVF9TVFJFUShzdHJjYXQoZGVmYXVsdFBhdGgsICIvLmxvY2FsL3No
YXJlL1dlYktpdEVmbC9Mb2NhbFN0b3JhZ2UiKSwgZXdrX3NldHRpbmdzX2xvY2FsX3N0b3JhZ2Vf
cGF0aF9nZXQoKSk7Ci0gICAgZnJlZShkZWZhdWx0UGF0aCk7Ci0KLSAgICBld2tfc2V0dGluZ3Nf
bG9jYWxfc3RvcmFnZV9wYXRoX3NldCgifi9kYXRhL3dlYmtpdERCIik7Ci0gICAgQVNTRVJUX1NU
UkVRKCJ+L2RhdGEvd2Via2l0REIiLCBld2tfc2V0dGluZ3NfbG9jYWxfc3RvcmFnZV9wYXRoX2dl
dCgpKTsKLQotICAgIGV3a19zZXR0aW5nc19sb2NhbF9zdG9yYWdlX3BhdGhfc2V0KCJ+L3RtcC93
ZWJraXQiKTsKLSAgICBBU1NFUlRfU1RSRVEoIn4vdG1wL3dlYmtpdCIsIGV3a19zZXR0aW5nc19s
b2NhbF9zdG9yYWdlX3BhdGhfZ2V0KCkpOwotfQotCi0vKioKLSAqIEBicmllZiBVbml0IHRlc3Qg
Zm9yIGNoZWNraW5nIHNldC9nZXQgb2YgZGlyZWN0b3J5IHBhdGggd2hlcmUgaWNvbiBkYXRhYmFz
ZSBpcyBzdG9yZWQgYnkgZXdrIHNldHRpbmdzIEFQSS4KLSAqLwotVEVTVF9GKEVXS1Rlc3RCYXNl
LCBld2tfc2V0dGluZ3NfaWNvbl9kYXRhYmFzZV9wYXRoKQotewotICAgIEFTU0VSVF9TVFJFUSgw
LCBld2tfc2V0dGluZ3NfaWNvbl9kYXRhYmFzZV9wYXRoX2dldCgpKTsKLQotICAgIEFTU0VSVF9U
UlVFKGV3a19zZXR0aW5nc19pY29uX2RhdGFiYXNlX3BhdGhfc2V0KCIvdG1wIikpOwotICAgIEFT
U0VSVF9TVFJFUSgiL3RtcCIsIGV3a19zZXR0aW5nc19pY29uX2RhdGFiYXNlX3BhdGhfZ2V0KCkp
OwotCi0gICAgQVNTRVJUX1RSVUUoZXdrX3NldHRpbmdzX2ljb25fZGF0YWJhc2VfcGF0aF9zZXQo
MCkpOwotICAgIEFTU0VSVF9TVFJFUSgwLCBld2tfc2V0dGluZ3NfaWNvbl9kYXRhYmFzZV9wYXRo
X2dldCgpKTsKLX0KLQotLyoqCi0gKiBAYnJpZWYgVW5pdCB0ZXN0IGZvciBjaGVja2luZyBzZXQv
Z2V0IG9mIHBhdGggd2hlcmUgdGhlIEhUTUw1IGFwcGxpY2F0aW9uIGNhY2hlIGlzIHN0b3JlZCBi
eSBld2sgc2V0dGluZ3MgQVBJLgotICovCi1URVNUX0YoRVdLVGVzdEJhc2UsIGV3a19zZXR0aW5n
c19hcHBsaWNhdGlvbl9jYWNoZV9wYXRoKQotewotICAgIGNoYXIqIGhvbWVQYXRoID0gZ2V0ZW52
KCJIT01FIik7Ci0gICAgY2hhciogZGVmYXVsdFBhdGggPSByZWludGVycHJldF9jYXN0PGNoYXIq
PihtYWxsb2Moc3RybGVuKGhvbWVQYXRoKSArIHN0cmxlbigiLy5jYWNoZS9XZWJLaXRFZmwvQXBw
bGljYXRpb25zIikgKyAxKSk7Ci0KLSAgICBzdHJuY3B5KGRlZmF1bHRQYXRoLCBob21lUGF0aCwg
c3RybGVuKGhvbWVQYXRoKSArIDEpOwotICAgIEFTU0VSVF9TVFJFUShzdHJjYXQoZGVmYXVsdFBh
dGgsICIvLmNhY2hlL1dlYktpdEVmbC9BcHBsaWNhdGlvbnMiKSwgZXdrX3NldHRpbmdzX2FwcGxp
Y2F0aW9uX2NhY2hlX3BhdGhfZ2V0KCkpOwotICAgIGZyZWUoZGVmYXVsdFBhdGgpOwotCi0gICAg
ZXdrX3NldHRpbmdzX2FwcGxpY2F0aW9uX2NhY2hlX3BhdGhfc2V0KCJ+L2RhdGEvd2Via2l0QXBw
Iik7Ci0gICAgQVNTRVJUX1NUUkVRKCJ+L2RhdGEvd2Via2l0QXBwIiwgZXdrX3NldHRpbmdzX2Fw
cGxpY2F0aW9uX2NhY2hlX3BhdGhfZ2V0KCkpOwotCi0gICAgZXdrX3NldHRpbmdzX2FwcGxpY2F0
aW9uX2NhY2hlX3BhdGhfc2V0KCJ+L3RtcC93ZWJraXRBcHAiKTsKLSAgICBBU1NFUlRfU1RSRVEo
In4vdG1wL3dlYmtpdEFwcCIsIGV3a19zZXR0aW5nc19hcHBsaWNhdGlvbl9jYWNoZV9wYXRoX2dl
dCgpKTsKLX0KLQotLyoqCi0gKiBAYnJpZWYgVW5pdCB0ZXN0IGZvciBjaGVja2luZyBzZXQvZ2V0
IG9mIG1heGltdW0gc2l6ZSBvZiB0aGUgYXBwbGljYXRpb24gY2FjaGUgZm9yIEhUTUw1IE9mZmxp
bmUgV2ViIEFwcGxpY2F0aW9ucyBieSBld2sgc2V0dGluZ3MgQVBJLgotICovCi1URVNUX0YoRVdL
VGVzdEJhc2UsIGV3a19zZXR0aW5nc19hcHBsaWNhdGlvbl9jYWNoZV9tYXhfcXVvdGEpCi17Ci0g
ICAgQVNTRVJUX0VRKHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1heCgpLCBld2tfc2V0
dGluZ3NfYXBwbGljYXRpb25fY2FjaGVfbWF4X3F1b3RhX2dldCgpKTsKLQotICAgIGV3a19zZXR0
aW5nc19hcHBsaWNhdGlvbl9jYWNoZV9tYXhfcXVvdGFfc2V0KDMgKiAxMDI0ICogMTAyNCk7Ci0g
ICAgQVNTRVJUX0VRKDMgKiAxMDI0ICogMTAyNCwgZXdrX3NldHRpbmdzX2FwcGxpY2F0aW9uX2Nh
Y2hlX21heF9xdW90YV9nZXQoKSk7Ci0KLSAgICBld2tfc2V0dGluZ3NfYXBwbGljYXRpb25fY2Fj
aGVfbWF4X3F1b3RhX3NldCg1ICogMTAyNCAqIDEwMjQpOwotICAgIEFTU0VSVF9FUSg1ICogMTAy
NCAqIDEwMjQsIGV3a19zZXR0aW5nc19hcHBsaWNhdGlvbl9jYWNoZV9tYXhfcXVvdGFfZ2V0KCkp
OwotfQotCi0vKioKLSAqIEBicmllZiBVbml0IHRlc3QgZm9yIGNoZWNraW5nIHNldC9nZXQgb2Yg
aW4tbWVtb3J5IG9iamVjdCBjYWNoZSBFbmFibGVzL0Rpc2FibGVzIHN0YXR1cyBieSBld2sgc2V0
dGluZ3MgQVBJLgotICovCi1URVNUX0YoRVdLVGVzdEJhc2UsIGV3a19zZXR0aW5nc19vYmplY3Rf
Y2FjaGVfZW5hYmxlKQotewotICAgIEFTU0VSVF9UUlVFKGV3a19zZXR0aW5nc19vYmplY3RfY2Fj
aGVfZW5hYmxlX2dldCgpKTsKLQotICAgIGV3a19zZXR0aW5nc19vYmplY3RfY2FjaGVfZW5hYmxl
X3NldChmYWxzZSk7Ci0gICAgQVNTRVJUX0ZBTFNFKGV3a19zZXR0aW5nc19vYmplY3RfY2FjaGVf
ZW5hYmxlX2dldCgpKTsKLQotICAgIGV3a19zZXR0aW5nc19vYmplY3RfY2FjaGVfZW5hYmxlX3Nl
dCh0cnVlKTsKLSAgICBBU1NFUlRfVFJVRShld2tfc2V0dGluZ3Nfb2JqZWN0X2NhY2hlX2VuYWJs
ZV9nZXQoKSk7Ci19Ci0KLS8qKgotICogQGJyaWVmIFVuaXQgdGVzdCBmb3IgY2hlY2tpbmcgc2V0
L2dldCBvZiBtYXhpbXVtIG51bWJlciBvZiBwYWdlcyBpbiB0aGUgbWVtb3J5IHBhZ2UgY2FjaGUg
YnkgZXdrIHNldHRpbmdzIEFQSS4KLSAqLwotVEVTVF9GKEVXS1Rlc3RCYXNlLCBld2tfc2V0dGlu
Z3NfcGFnZV9jYWNoZV9jYXBhY2l0eSkKLXsKLSAgICBBU1NFUlRfRVEoMywgZXdrX3NldHRpbmdz
X3BhZ2VfY2FjaGVfY2FwYWNpdHlfZ2V0KCkpOwotCi0gICAgZXdrX3NldHRpbmdzX3BhZ2VfY2Fj
aGVfY2FwYWNpdHlfc2V0KDUpOwotICAgIEFTU0VSVF9FUSg1LCBld2tfc2V0dGluZ3NfcGFnZV9j
YWNoZV9jYXBhY2l0eV9nZXQoKSk7Ci19Ci0KLS8qKgotICogQGJyaWVmIFVuaXQgdGVzdCBmb3Ig
Y2hlY2tpbmcgc2V0L2dldCBvZiBjc3MgbWVkaWEgdHlwZSBieSBld2sgc2V0dGluZ3MgQVBJLgot
ICovCi1URVNUX0YoRVdLVGVzdEJhc2UsIGV3a19zZXR0aW5nc19jc3NfbWVkaWFfdHlwZSkKLXsK
LSAgICBBU1NFUlRfU1RSRVEoMCwgZXdrX3NldHRpbmdzX2Nzc19tZWRpYV90eXBlX2dldCgpKTsK
LQotICAgIGV3a19zZXR0aW5nc19jc3NfbWVkaWFfdHlwZV9zZXQoImhhbmRoZWxkIik7Ci0gICAg
QVNTRVJUX1NUUkVRKCJoYW5kaGVsZCIsIGV3a19zZXR0aW5nc19jc3NfbWVkaWFfdHlwZV9nZXQo
KSk7Ci0KLSAgICBld2tfc2V0dGluZ3NfY3NzX21lZGlhX3R5cGVfc2V0KCJ0diIpOwotICAgIEFT
U0VSVF9TVFJFUSgidHYiLCBld2tfc2V0dGluZ3NfY3NzX21lZGlhX3R5cGVfZ2V0KCkpOwotCi0g
ICAgZXdrX3NldHRpbmdzX2Nzc19tZWRpYV90eXBlX3NldCgic2NyZWVuIik7Ci0gICAgQVNTRVJU
X1NUUkVRKCJzY3JlZW4iLCBld2tfc2V0dGluZ3NfY3NzX21lZGlhX3R5cGVfZ2V0KCkpOwotCi0g
ICAgZXdrX3NldHRpbmdzX2Nzc19tZWRpYV90eXBlX3NldCgwKTsKLSAgICBBU1NFUlRfU1RSRVEo
MCwgZXdrX3NldHRpbmdzX2Nzc19tZWRpYV90eXBlX2dldCgpKTsKLX0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvZWZsL3Rlc3RzL3Rlc3RfZXdrX3ZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9l
ZmwvdGVzdHMvdGVzdF9ld2tfdmlldy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGE1NTE4MzMuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvdGVzdHMvdGVzdF9ld2tf
dmlldy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzAgKzAsMCBAQAotLyoKLSAgICBDb3B5cmln
aHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcwotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICAgIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAgICBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKLSAgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KLQotICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gICAgTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVQot
ICAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAg
ICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKLSAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3
cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotICAgIEluYy4sIDU5IFRlbXBs
ZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCi0qLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0KLSNpbmNsdWRlICJVbml0VGVzdFV0aWxzL0VXS1Rlc3RCYXNlLmgi
Ci0jaW5jbHVkZSAiVW5pdFRlc3RVdGlscy9FV0tUZXN0Q29uZmlnLmgiCi0jaW5jbHVkZSA8RVdl
YktpdC5oPgotI2luY2x1ZGUgPEVjb3JlLmg+Ci0jaW5jbHVkZSA8d3RmL093blB0ci5oPgotI2lu
Y2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBFV0tVbml0VGVzdHM7
Ci0KLS8qKgotKiBAYnJpZWYgQ2hlY2tpbmcgd2hldGhlciBmdW5jdGlvbiBwcm9wZXJseSByZXR1
cm5zIGNvcnJlY3QgdmFsdWUuCi0qLwotVEVTVF9GKEVXS1Rlc3RCYXNlLCBld2tfdmlld19lZGl0
YWJsZV9nZXQpCi17Ci0gICAgbG9hZFVybCgpOwotICAgIGV3a192aWV3X2VkaXRhYmxlX3NldCh3
ZWJWaWV3KCksIHRydWUpOwotICAgIEFTU0VSVF9UUlVFKGV3a192aWV3X2VkaXRhYmxlX2dldCh3
ZWJWaWV3KCkpKTsKLX0KLQotLyoqCi0qIEBicmllZiBDaGVja2luZyB3aGV0aGVyIGZ1bmN0aW9u
IHJldHVybnMgY29ycmVjdCB1cmkgc3RyaW5nLgotKi8KLVRFU1RfRihFV0tUZXN0QmFzZSwgZXdr
X3ZpZXdfdXJpX2dldCkKLXsKLSAgICBsb2FkVXJsKCk7Ci0gICAgQVNTRVJUX1NUUkVRKENvbmZp
Zzo6ZGVmYXVsdFRlc3RQYWdlLCBld2tfdmlld191cmlfZ2V0KHdlYlZpZXcoKSkpOwotfQotCi0v
KioKLSogQGJyaWVmIENoZWNraW5nIHdoZXRoZXIgZnVuY3Rpb24gcHJvcGVybHkgZ2V0L3NldCBm
dWxsc2NyZWVuIHNldHRpbmcgdmFsdWUuCi0qLwotVEVTVF9GKEVXS1Rlc3RCYXNlLCBld2tfdmll
d19zZXR0aW5nX2VuYWJsZV9mdWxsc2NyZWVuKQotewotICAgIGxvYWRVcmwoKTsKLSNpZiBFTkFC
TEUoRlVMTFNDUkVFTl9BUEkpCi0gICAgQVNTRVJUX1RSVUUoZXdrX3ZpZXdfc2V0dGluZ19lbmFi
bGVfZnVsbHNjcmVlbl9nZXQod2ViVmlldygpKSk7Ci0KLSAgICBBU1NFUlRfVFJVRShld2tfdmll
d19zZXR0aW5nX2VuYWJsZV9mdWxsc2NyZWVuX3NldCh3ZWJWaWV3KCksIHRydWUpKTsKLSAgICBB
U1NFUlRfVFJVRShld2tfdmlld19zZXR0aW5nX2VuYWJsZV9mdWxsc2NyZWVuX2dldCh3ZWJWaWV3
KCkpKTsKLQotICAgIEFTU0VSVF9UUlVFKGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2Z1bGxzY3Jl
ZW5fc2V0KHdlYlZpZXcoKSwgZmFsc2UpKTsKLSAgICBBU1NFUlRfRkFMU0UoZXdrX3ZpZXdfc2V0
dGluZ19lbmFibGVfZnVsbHNjcmVlbl9nZXQod2ViVmlldygpKSk7Ci0jZWxzZQotICAgIEFTU0VS
VF9GQUxTRShld2tfdmlld19zZXR0aW5nX2VuYWJsZV9mdWxsc2NyZWVuX2dldCh3ZWJWaWV3KCkp
KTsKLQotICAgIEFTU0VSVF9GQUxTRShld2tfdmlld19zZXR0aW5nX2VuYWJsZV9mdWxsc2NyZWVu
X3NldCh3ZWJWaWV3KCksIHRydWUpKTsKLSAgICBBU1NFUlRfRkFMU0UoZXdrX3ZpZXdfc2V0dGlu
Z19lbmFibGVfZnVsbHNjcmVlbl9nZXQod2ViVmlldygpKSk7Ci0KLSAgICBBU1NFUlRfRkFMU0Uo
ZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfZnVsbHNjcmVlbl9zZXQod2ViVmlldygpLCBmYWxzZSkp
OwotICAgIEFTU0VSVF9GQUxTRShld2tfdmlld19zZXR0aW5nX2VuYWJsZV9mdWxsc2NyZWVuX2dl
dCh3ZWJWaWV3KCkpKTsKLSNlbmRpZgotfQotCi0vKioKLSAqIEBicmllZiBDaGVja2luZyB3aGV0
aGVyIGZ1bmN0aW9uIHJldHVybnMgcHJvcGVyIGNvbnRleHQgbWVudSBzdHJ1Y3R1cmUuCi0gKgot
ICogVGhpcyB0ZXN0IGNyZWF0ZXMgYSBjb250ZXh0IG1lbnUgYW5kIGNoZWNrcyBpZiBjb250ZXh0
IG1lbnUgc3RydWN0dXJlCi0gKiBpcyBub3QgTlVMTDsKLSAqLwotVEVTVF9GKEVXS1Rlc3RCYXNl
LCBld2tfdmlld19jb250ZXh0X21lbnVfZ2V0KQotewotICAgIGxvYWRVcmwoKTsKLQotICAgIEV2
YXMqIGV2YXMgPSBldmFzX29iamVjdF9ldmFzX2dldCh3ZWJWaWV3KCkpOwotICAgIEFTU0VSVF9U
UlVFKGV2YXMpOwotCi0gICAgRXZhc19FdmVudF9Nb3VzZV9Eb3duIG1vdXNlRG93bjsKLSAgICBt
b3VzZURvd24uYnV0dG9uID0gMzsKLSAgICBtb3VzZURvd24ub3V0cHV0LnggPSAwOwotICAgIG1v
dXNlRG93bi5vdXRwdXQueSA9IDA7Ci0gICAgbW91c2VEb3duLmNhbnZhcy54ID0gMDsKLSAgICBt
b3VzZURvd24uY2FudmFzLnkgPSAwOwotICAgIG1vdXNlRG93bi5kYXRhID0gMDsKLSAgICBtb3Vz
ZURvd24ubW9kaWZpZXJzID0gY29uc3RfY2FzdDxFdmFzX01vZGlmaWVyKj4oZXZhc19rZXlfbW9k
aWZpZXJfZ2V0KGV2YXMpKTsKLSAgICBtb3VzZURvd24ubG9ja3MgPSBjb25zdF9jYXN0PEV2YXNf
TG9jayo+KGV2YXNfa2V5X2xvY2tfZ2V0KGV2YXMpKTsKLSAgICBtb3VzZURvd24uZmxhZ3MgPSBF
VkFTX0JVVFRPTl9OT05FOwotICAgIG1vdXNlRG93bi50aW1lc3RhbXAgPSBlY29yZV9sb29wX3Rp
bWVfZ2V0KCk7Ci0gICAgbW91c2VEb3duLmV2ZW50X2ZsYWdzID0gRVZBU19FVkVOVF9GTEFHX05P
TkU7Ci0gICAgbW91c2VEb3duLmRldiA9IDA7Ci0KLSAgICBBU1NFUlRfVFJVRShld2tfdmlld19j
b250ZXh0X21lbnVfZm9yd2FyZF9ldmVudCh3ZWJWaWV3KCksICZtb3VzZURvd24pKTsKLQotICAg
IEFTU0VSVF9UUlVFKGV3a192aWV3X2NvbnRleHRfbWVudV9nZXQod2ViVmlldygpKSk7Ci19Ci0K
LVRFU1RfRihFV0tUZXN0QmFzZSwgZXdrX3ZpZXdfc2NyZWVuc2hvdF9jb250ZW50c19nZXQpCi17
Ci0gICAgbG9hZFVybCgpOwotCi0gICAgRXZhc19Db29yZCB3aWR0aCwgaGVpZ2h0OwotCi0gICAg
RWluYV9SZWN0YW5nbGUgYXJlYTsKLSAgICBhcmVhLnggPSAxMDsKLSAgICBhcmVhLnkgPSAxMDsK
LSAgICBhcmVhLncgPSAyMDsKLSAgICBhcmVhLmggPSAzMDsKLSAgICBFdmFzX09iamVjdCogc2Ny
ZWVuc2hvdCA9IGV3a192aWV3X3NjcmVlbnNob3RfY29udGVudHNfZ2V0KHdlYlZpZXcoKSwgJmFy
ZWEpOwotICAgIGV2YXNfb2JqZWN0X2dlb21ldHJ5X2dldChzY3JlZW5zaG90LCAwLCAwLCAmd2lk
dGgsICZoZWlnaHQpOwotICAgIEFTU0VSVF9FUShhcmVhLncsIHdpZHRoKTsKLSAgICBBU1NFUlRf
RVEoYXJlYS5oLCBoZWlnaHQpOwotICAgIGV2YXNfb2JqZWN0X2RlbChzY3JlZW5zaG90KTsKLQot
ICAgIHNjcmVlbnNob3QgPSBld2tfdmlld19zY3JlZW5zaG90X2NvbnRlbnRzX2dldCh3ZWJWaWV3
KCksIDApOwotICAgIEFTU0VSVF9GQUxTRShzY3JlZW5zaG90KTsKLQotICAgIGFyZWEudyA9IDA7
Ci0gICAgYXJlYS5oID0gMDsKLSAgICBzY3JlZW5zaG90ID0gZXdrX3ZpZXdfc2NyZWVuc2hvdF9j
b250ZW50c19nZXQod2ViVmlldygpLCAmYXJlYSk7Ci0gICAgQVNTRVJUX0ZBTFNFKHNjcmVlbnNo
b3QpOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvdGVzdHMvdGVzdF9ydW5uZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9lZmwvdGVzdHMvdGVzdF9ydW5uZXIuY3BwCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBlOGYzYzA4Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQv
ZWZsL3Rlc3RzL3Rlc3RfcnVubmVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAK
LS8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKLQotICAgIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKLSAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVy
YWwgUHVibGljCi0gICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCi0gICAgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgotICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gU2VlIHRoZSBHTlUKLSAgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgotCi0gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLSAg
ICBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3
IFVTQQotKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaW5jbHVkZSAiVW5pdFRlc3RVdGls
cy9FV0tUZXN0QmFzZS5oIgotI2luY2x1ZGUgIlVuaXRUZXN0VXRpbHMvRVdLVGVzdEVudmlyb25t
ZW50LmgiCi0jaW5jbHVkZSA8Z2V0b3B0Lmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQot
dXNpbmcgbmFtZXNwYWNlIEVXS1VuaXRUZXN0czsKLQotRVdLVGVzdEVudmlyb25tZW50KiBlbnZp
cm9ubWVudCA9IDA7Ci0KLXN0YXRpYyBpbnQgcGFyc2VDdXN0b21Bcmd1bWVudHMoaW50IGFyZ2Ms
IGNoYXIqKiBhcmd2KQotewotICAgIGludCB1c2VYMTFXaW5kb3cgPSAwOwotICAgIHN0YXRpYyBj
b25zdCBvcHRpb24gb3B0aW9uc1tdID0gewotICAgICAgICB7InVzZVgxMVdpbmRvdyIsIG5vX2Fy
Z3VtZW50LCAmdXNlWDExV2luZG93LCB0cnVlfSwKLSAgICAgICAgezAsIDAsIDAsIDB9Ci0gICAg
fTsKLQotICAgIGludCBvcHRpb247Ci0gICAgd2hpbGUgKChvcHRpb24gPSBnZXRvcHRfbG9uZyhh
cmdjLCBhcmd2LCAiIiwgb3B0aW9ucywgMCkpICE9IC0xKSB7IH0KLQotICAgIHJldHVybiB1c2VY
MTFXaW5kb3c7Ci19Ci0KLWludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKLXsKLSAgICBp
bnQgdXNlWDExV2luZG93ID0gcGFyc2VDdXN0b21Bcmd1bWVudHMoYXJnYywgYXJndik7Ci0gICAg
ZW52aXJvbm1lbnQgPSBuZXcgRVdLVGVzdEVudmlyb25tZW50KHVzZVgxMVdpbmRvdyk7Ci0gICAg
dGVzdGluZzo6QWRkR2xvYmFsVGVzdEVudmlyb25tZW50KGVudmlyb25tZW50KTsKLSAgICA6OnRl
c3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKLQotICAgIHJldHVybiBSVU5fQUxM
X1RFU1RTKCk7Ci19Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>