<?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>145648</bug_id>
          
          <creation_ts>2015-06-04 11:15:19 -0700</creation_ts>
          <short_desc>Rename MediaSessionManager in platform/audio to PlatformMediaSessionManager</short_desc>
          <delta_ts>2015-06-04 15:37:55 -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>Media</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>145411</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Matt Rajca">mrajca</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>conrad_shultz</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>jer.noble</cc>
    
    <cc>mrajca</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1099534</commentid>
    <comment_count>0</comment_count>
    <who name="Matt Rajca">mrajca</who>
    <bug_when>2015-06-04 11:15:19 -0700</bug_when>
    <thetext>We already renamed MediaSession to PlatformMediaSession to reserve MediaSession for the formal Media Session API. For consistency, MediaSessionManager should be renamed to PlatformMediaSessionManager.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1099535</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-06-04 11:16:48 -0700</bug_when>
    <thetext>&lt;rdar://problem/21244455&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1099562</commentid>
    <comment_count>2</comment_count>
      <attachid>254286</attachid>
    <who name="Matt Rajca">mrajca</who>
    <bug_when>2015-06-04 12:18:43 -0700</bug_when>
    <thetext>Created attachment 254286
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1099563</commentid>
    <comment_count>3</comment_count>
      <attachid>254287</attachid>
    <who name="Matt Rajca">mrajca</who>
    <bug_when>2015-06-04 12:28:24 -0700</bug_when>
    <thetext>Created attachment 254287
Patch (build fixes)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1099577</commentid>
    <comment_count>4</comment_count>
      <attachid>254291</attachid>
    <who name="Matt Rajca">mrajca</who>
    <bug_when>2015-06-04 13:08:30 -0700</bug_when>
    <thetext>Created attachment 254291
Patch (iOS build fix)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1099588</commentid>
    <comment_count>5</comment_count>
      <attachid>254295</attachid>
    <who name="Matt Rajca">mrajca</who>
    <bug_when>2015-06-04 13:42:58 -0700</bug_when>
    <thetext>Created attachment 254295
Patch (more iOS build fixes)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1099597</commentid>
    <comment_count>6</comment_count>
      <attachid>254296</attachid>
    <who name="Matt Rajca">mrajca</who>
    <bug_when>2015-06-04 13:54:48 -0700</bug_when>
    <thetext>Created attachment 254296
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1099647</commentid>
    <comment_count>7</comment_count>
      <attachid>254296</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-06-04 15:37:52 -0700</bug_when>
    <thetext>Comment on attachment 254296
Patch

Clearing flags on attachment: 254296

Committed r185223: &lt;http://trac.webkit.org/changeset/185223&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1099648</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-06-04 15:37:55 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>254286</attachid>
            <date>2015-06-04 12:18:43 -0700</date>
            <delta_ts>2015-06-04 12:28:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-145648-20150604121826.patch</filename>
            <type>text/plain</type>
            <size>56630</size>
            <attacher name="Matt Rajca">mrajca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg1MjAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjljYzA4MmY3M2IyYWM0
ZjRkMzQ5NWQxZDE4NmU2NmFhOTg0ZWJmZS4uMGNkNTQ0ZjY4YzRjMjJjZDIxMjI0MmRjZjA2Nzc5
YzY1ZWJkZTJiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDE1LTA2LTA0ICBNYXR0
IFJhamNhICA8bXJhamNhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgTWVkaWFTZXNzaW9u
TWFuYWdlciB0byBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIgZm9yIGNvbnNpc3RlbmN5IHdp
dGggUGxhdGZvcm1NZWRpYVNlc3Npb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNDU2NDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2o6CisgICAg
ICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAq
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBodG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAqIGh0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVsZW1lbnRTZXNzaW9uOjplZmZlY3RpdmVQcmVsb2Fk
Rm9yRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVsZW1lbnRTZXNzaW9uOjpyZXF1
aXJlc0Z1bGxzY3JlZW5Gb3JWaWRlb1BsYXliYWNrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRp
by9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6UGxhdGZvcm1NZWRpYVNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6UGxh
dGZvcm1NZWRpYVNlc3Npb246On5QbGF0Zm9ybU1lZGlhU2Vzc2lvbik6CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Y2xpZW50V2lsbEJlZ2luUGxheWJhY2spOgorICAg
ICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb246OmNsaWVudFdpbGxQYXVzZVBsYXli
YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpjbGllbnREYXRh
QnVmZmVyaW5nVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vz
c2lvbjo6dXBkYXRlQ2xpZW50RGF0YUJ1ZmZlcmluZyk6CisgICAgICAgICogcGxhdGZvcm0vYXVk
aW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwLgorICAgICAgICAo
V2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6UGxhdGZvcm1NZWRp
YVNlc3Npb25NYW5hZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9u
TWFuYWdlcjo6cmVzZXRSZXN0cmljdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1N
ZWRpYVNlc3Npb25NYW5hZ2VyOjpoYXMpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRp
YVNlc3Npb25NYW5hZ2VyOjphY3RpdmVBdWRpb1Nlc3Npb25SZXF1aXJlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNvdW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6YmVnaW5JbnRlcnJ1cHRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjplbmRJbnRlcnJ1
cHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjph
ZGRTZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdl
cjo6cmVtb3ZlU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lv
bk1hbmFnZXI6OmFkZFJlc3RyaWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVk
aWFTZXNzaW9uTWFuYWdlcjo6cmVtb3ZlUmVzdHJpY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpyZXN0cmljdGlvbnMpOgorICAgICAgICAoV2Vi
Q29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpzZXNzaW9uV2lsbEJlZ2luUGxheWJh
Y2spOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpzZXNz
aW9uV2lsbEVuZFBsYXliYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNz
aW9uTWFuYWdlcjo6c2V0Q3VycmVudFNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpjdXJyZW50U2Vzc2lvbik6CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNlc3Npb25SZXN0cmljdHNJbmxpbmVWaWRl
b1BsYXliYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdl
cjo6c2Vzc2lvbkNhbkxvYWRNZWRpYSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlh
U2Vzc2lvbk1hbmFnZXI6OmFwcGxpY2F0aW9uV2lsbEVudGVyQmFja2dyb3VuZCk6CisgICAgICAg
IChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OmFwcGxpY2F0aW9uV2lsbEVu
dGVyRm9yZWdyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1h
bmFnZXI6OnVwZGF0ZVNlc3Npb25TdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbk1hbmFnZXI6OmRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZCk6CisgICAg
ICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnN5c3RlbVdpbGxTbGVl
cCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnN5c3Rl
bURpZFdha2UpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2Vy
OjphdWRpb091dHB1dERldmljZUNoYW5nZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1Bs
YXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uTWFuYWdlci5oLgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjp+UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2Vy
KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6Y29uZmln
dXJlV2lyZUxlc3NUYXJnZXRNb25pdG9yaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
TWVkaWFTZXNzaW9uTWFuYWdlcjo6aGFzV2lyZWxlc3NUYXJnZXRzQXZhaWxhYmxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2Vzc2lvbnMpOgorICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9hdWRpby9tYWMvTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5jcHA6CisgICAg
ICAgIChQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnVwZGF0ZVNlc3Npb25TdGF0ZSk6Cisg
ICAgICAgIChNZWRpYVNlc3Npb25NYW5hZ2VyOjp1cGRhdGVTZXNzaW9uU3RhdGUpOiBEZWxldGVk
LgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKwogMjAxNS0wNi0wNCAgTXlsZXMg
Qy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gQ2xl
YW4gdXAgbV9mb250IGluc2lkZSBGb250UGxhdGZvcm1EYXRhCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagppbmRleCA0NmZmMzJkZTY5ZTJkN2YxM2Yx
NjhmZWRmNDA1YmRmMGExNzgxNmVlLi4yY2ZlNTNlYzI4YjFlMzkxZDg2OWE2MTQ5MTFjMjBiODM1
MWI0Y2E2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29y
ZS52Y3hwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZj
eHByb2oKQEAgLTczOTYsNyArNzM5Niw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxw
bGF0Zm9ybVxncmFwaGljc1xJU09WVFRDdWUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5ccGxhdGZvcm1cYXVkaW9cQXVkaW9TZXNzaW9uLmNwcCIgLz4KICAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGF1ZGlvXFBsYXRmb3JtTWVkaWFTZXNzaW9uLmNwcCIgLz4K
LSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGF1ZGlvXE1lZGlhU2Vzc2lvbk1h
bmFnZXIuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cYXVkaW9c
UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXEFOR0xFV2ViS2l0QnJpZGdlLmNwcCIgLz4KICAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXGF2Zm91bmRhdGlvblxjZlxJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRi5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxwbGF0Zm9ybVxncmFwaGljc1xhdmZvdW5kYXRpb25cY2ZcSW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZUxlZ2FjeUFWQ0YuY3BwIiAvPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCmluZGV4IGQyYzZkMWIxODY4ZjlkMDQ0
ZmY3ZmIxOTA0MzYxMmE0ZjVlOGFlODMuLmJiZGFlNjAzNDVhNzYzYjY5ZDJmYWVlYTdmYTg5MTUz
Y2NkNTFlNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJD
b3JlLnZjeHByb2ouZmlsdGVycworKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ov
V2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTcwNTQsNyArNzA1NCw3IEBACiAgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxhdWRpb1xQbGF0Zm9ybU1lZGlhU2Vzc2lvbi5jcHAi
PgogICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxhdWRpbzwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxl
PgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cYXVkaW9cTWVkaWFTZXNzaW9u
TWFuYWdlci5jcHAiPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cYXVkaW9c
UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcCI+CiAgICAgICA8RmlsdGVyPnBsYXRmb3Jt
XGF1ZGlvPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxNb2R1bGVzXGdhbWVwYWRcTmF2aWdhdG9yR2FtZXBhZC5jcHAiPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGQ3ZDVjY2Fj
MTMwYjhkYjhkOTgyMDg2MmFkMGRlODhmMzQ1NjdmMDEuLjVlYTlhYmY3M2NkN2EyY2U5MjM0ZDgy
YTYwMGMxMjU4NmQ1OGFjYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM0OSw3ICszNDksNyBAQAogCQkwN0YwQjk3QTFBQzVE
QjMzMDBFNTM1RDkgLyogQVZLaXRTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDA3RjBCOTc5MUFDNURCMzMwMEU1MzVEOSAvKiBBVktpdFNQSS5oICov
OyB9OwogCQkwN0YwQjk3QzFBQzVEQjQ2MDBFNTM1RDkgLyogQVZGb3VuZGF0aW9uU1BJLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0YwQjk3QjFBQzVE
QjQ2MDBFNTM1RDkgLyogQVZGb3VuZGF0aW9uU1BJLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDdGODc2ODQxQUQ1ODBGOTAwOTA1ODQ5IC8qIE1l
ZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwN0Y4NzY4MzFBRDRBOTQ1MDA5MDU4NDkgLyogTWVkaWFQbGF5YmFj
a1RhcmdldENvbnRleHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwotCQkwN0Y5NDQxNjE4NjREMDQ2MDA1RDMxQ0IgLyogTWVkaWFTZXNzaW9uTWFuYWdl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBRThD
MDgxNzQ2Qjk1NzAwNTMyRDc4IC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwN0Y5NDQxNjE4NjREMDQ2MDA1
RDMxQ0IgLyogUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFFOEMwODE3NDZCOTU3MDA1MzJENzggLyog
UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDdGQkRFMkMxOEZFRDE3ODAwMUE3Q0ZGIC8qIEpTRGF0
YUN1ZUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwN0ZCREUyQjE4RkVEMTc4MDAxQTdDRkYgLyogSlNEYXRhQ3VlQ3VzdG9tLmNwcCAqLzsg
fTsKIAkJMDdGRTk5REMxODgwN0E3RDAwMjU2NjQ4IC8qIE1lZGlhRWxlbWVudFNlc3Npb24uY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdGRTk5REEx
ODgwN0E3RDAwMjU2NjQ4IC8qIE1lZGlhRWxlbWVudFNlc3Npb24uY3BwICovOyB9OwogCQkwN0ZF
OTlERDE4ODA3QTdEMDAyNTY2NDggLyogTWVkaWFFbGVtZW50U2Vzc2lvbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdGRTk5REIxODgwN0E3RDAwMjU2
NjQ4IC8qIE1lZGlhRWxlbWVudFNlc3Npb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNTgwNiw3ICs1ODA2LDcgQEAKIAkJQ0RBQjZEMkUxN0M4
MTRFRTAwQzYwQjM0IC8qIEpTTWVkaWFDb250cm9sc0hvc3QuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQUI2RDJDMTdDODE0RUUwMEM2MEIzNCAvKiBK
U01lZGlhQ29udHJvbHNIb3N0LmggKi87IH07CiAJCUNEQUI2RDMxMTdDOTI1OTUwMEM2MEIzNCAv
KiBVc2VyQWdlbnRTY3JpcHRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDREFCNkQyRjE3QzkyNTk1MDBDNjBCMzQgLyogVXNlckFnZW50U2NyaXB0cy5o
ICovOyB9OwogCQlDREFCNkQzMjE3QzkyNTk1MDBDNjBCMzQgLyogVXNlckFnZW50U2NyaXB0c0Rh
dGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RB
QjZEMzAxN0M5MjU5NTAwQzYwQjM0IC8qIFVzZXJBZ2VudFNjcmlwdHNEYXRhLmNwcCAqLzsgfTsK
LQkJQ0RBRThDMDkxNzQ2Qjk1NzAwNTMyRDc4IC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBRThDMDcxNzQ2
Qjk1NzAwNTMyRDc4IC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwICovOyB9OworCQlDREFFOEMw
OTE3NDZCOTU3MDA1MzJENzggLyogUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQUU4QzA3MTc0NkI5
NTcwMDUzMkQ3OCAvKiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwICovOyB9OwogCQlD
REI4NTlGNzE2MEQ0OEE0MDBFNUIwN0YgLyogTWVkaWFLZXlFdmVudC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREI4NTlGNDE2MEQ0ODk5MDBFNUIw
N0YgLyogTWVkaWFLZXlFdmVudC5jcHAgKi87IH07CiAJCUNEQjg1OUZBMTYwRDQ5NDkwMEU1QjA3
RiAvKiBKU01lZGlhS2V5RXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0RCODU5RjgxNjBENDkzRTAwRTVCMDdGIC8qIEpTTWVkaWFLZXlFdmVu
dC5jcHAgKi87IH07CiAJCUNEQkVBRUFDMTlEOTJCNkMwMEJFQkE4OCAvKiBNZWRpYVNlbGVjdGlv
bkdyb3VwQVZGT2JqQy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENEQkVBRUFBMTlEOTJCNkMwMEJFQkE4OCAvKiBNZWRpYVNlbGVjdGlvbkdyb3VwQVZG
T2JqQy5tbSAqLzsgfTsKQEAgLTEzNDEwLDggKzEzNDEwLDggQEAKIAkJQ0RBQjZEMkMxN0M4MTRF
RTAwQzYwQjM0IC8qIEpTTWVkaWFDb250cm9sc0hvc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNNZWRpYUNvbnRyb2xzSG9zdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDREFCNkQyRjE3QzkyNTk1MDBDNjBCMzQgLyogVXNlckFnZW50U2NyaXB0cy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVc2VyQWdlbnRTY3JpcHRzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEQUI2RDMwMTdDOTI1OTUwMEM2MEIzNCAvKiBVc2Vy
QWdlbnRTY3JpcHRzRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBVc2VyQWdlbnRTY3JpcHRzRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUNEQUU4QzA3MTc0NkI5NTcwMDUzMkQ3OCAvKiBNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhU2Vzc2lvbk1hbmFnZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDREFFOEMwODE3NDZCOTU3MDA1MzJENzgg
LyogTWVkaWFTZXNzaW9uTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBNZWRpYVNlc3Npb25NYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNE
QUU4QzA3MTc0NkI5NTcwMDUzMkQ3OCAvKiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGxhdGZvcm1NZWRpYVNlc3Np
b25NYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBRThDMDgxNzQ2
Qjk1NzAwNTMyRDc4IC8qIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RCODU5RjIxNjBENDg5OTAwRTVCMDdGIC8qIE1l
ZGlhS2V5RXJyb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFLZXlF
cnJvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREI4NTlGMzE2MEQ0ODk5MDBF
NUIwN0YgLyogTWVkaWFLZXlFcnJvci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gTWVkaWFL
ZXlFcnJvci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEQjg1OUY0MTYwRDQ4
OTkwMEU1QjA3RiAvKiBNZWRpYUtleUV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IE1lZGlhS2V5RXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMjM1OTQsMTQgKzIzNTk0LDE0IEBACiAJCQkJRkQzMTYwNjkxMkIwMjZGNzAwQzFBMzU5
IC8qIEhSVEZLZXJuZWwuaCAqLywKIAkJCQlGRDMxNjA2QTEyQjAyNkY3MDBDMUEzNTkgLyogSFJU
RlBhbm5lci5jcHAgKi8sCiAJCQkJRkQzMTYwNkIxMkIwMjZGNzAwQzFBMzU5IC8qIEhSVEZQYW5u
ZXIuaCAqLywKLQkJCQlDREFFOEMwNzE3NDZCOTU3MDA1MzJENzggLyogTWVkaWFTZXNzaW9uTWFu
YWdlci5jcHAgKi8sCi0JCQkJQ0RBRThDMDgxNzQ2Qjk1NzAwNTMyRDc4IC8qIE1lZGlhU2Vzc2lv
bk1hbmFnZXIuaCAqLywKIAkJCQlGREIxNzAwMzE0QTJCQUIyMDBBMkI1RDkgLyogTXVsdGlDaGFu
bmVsUmVzYW1wbGVyLmNwcCAqLywKIAkJCQlGREIxNzAwNDE0QTJCQUIyMDBBMkI1RDkgLyogTXVs
dGlDaGFubmVsUmVzYW1wbGVyLmggKi8sCiAJCQkJRkQzMTYwNkMxMkIwMjZGNzAwQzFBMzU5IC8q
IFBhbm5lci5jcHAgKi8sCiAJCQkJRkQzMTYwNkQxMkIwMjZGNzAwQzFBMzU5IC8qIFBhbm5lci5o
ICovLAogCQkJCTA3MEUwOTFBMTg3NUVGNzEwMDNBMUQzQyAvKiBQbGF0Zm9ybU1lZGlhU2Vzc2lv
bi5jcHAgKi8sCiAJCQkJMDcwRTA5MTgxODc1RUQ5MzAwM0ExRDNDIC8qIFBsYXRmb3JtTWVkaWFT
ZXNzaW9uLmggKi8sCisJCQkJQ0RBRThDMDcxNzQ2Qjk1NzAwNTMyRDc4IC8qIFBsYXRmb3JtTWVk
aWFTZXNzaW9uTWFuYWdlci5jcHAgKi8sCisJCQkJQ0RBRThDMDgxNzQ2Qjk1NzAwNTMyRDc4IC8q
IFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oICovLAogCQkJCUZEMzE2MDZFMTJCMDI2Rjcw
MEMxQTM1OSAvKiBSZXZlcmIuY3BwICovLAogCQkJCUZEMzE2MDZGMTJCMDI2RjcwMEMxQTM1OSAv
KiBSZXZlcmIuaCAqLywKIAkJCQlGRDMxNjA3MDEyQjAyNkY3MDBDMUEzNTkgLyogUmV2ZXJiQWNj
dW11bGF0aW9uQnVmZmVyLmNwcCAqLywKQEAgLTI1ODUwLDcgKzI1ODUwLDYgQEAKIAkJCQlDRUVG
Q0Q3QTE5REIzMUY3MDAzODc2RDcgLyogTWVkaWFSZXNvdXJjZUxvYWRlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQ0RCRUFFQUQxOUQ5MkI2QzAwQkVCQTg4IC8qIE1lZGlhU2VsZWN0aW9uR3JvdXBB
VkZPYmpDLmggaW4gSGVhZGVycyAqLywKIAkJCQlDOTAyN0Y0MjFCMUQwQUQyMDBCRkJGRUYgLyog
TWVkaWFTZXNzaW9uLmggaW4gSGVhZGVycyAqLywKLQkJCQkwN0Y5NDQxNjE4NjREMDQ2MDA1RDMx
Q0IgLyogTWVkaWFTZXNzaW9uTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDc2MzhBOTkx
ODg0NDg3MjAwRTE1QTFCIC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXJJT1MuaCBpbiBIZWFkZXJzICov
LAogCQkJCUNEM0E0OTVGMTdBOUQwMUIwMDI3NEU0MiAvKiBNZWRpYVNvdXJjZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQ0Q2NDFFQjMxODE4RjVFRDAwRUU0QzQxIC8qIE1lZGlhU291cmNlUHJpdmF0
ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjA3NCw2ICsyNjA3Myw3IEBACiAJCQkJRjU0NEY3ODkx
NUNGQjJBODAwQUYzM0E4IC8qIFBsYXRmb3JtTG9jYWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlD
RUVGQ0Q3QzE5REIzM0RDMDAzODc2RDcgLyogUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwNzBFMDkxOTE4NzVFRUZDMDAzQTFEM0MgLyogUGxhdGZvcm1N
ZWRpYVNlc3Npb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTA3Rjk0NDE2MTg2NEQwNDYwMDVEMzFD
QiAvKiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkz
Mjg3MUMwMEIyMERFQjcwMDQ5MDM1QSAvKiBQbGF0Zm9ybU1lbnVEZXNjcmlwdGlvbi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDFCRjcwMTAwRkU4NkY2MTAwNUU4REVDIC8qIFBsYXRmb3JtTWVzc2Fn
ZVBvcnRDaGFubmVsLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzVDNDc2OTA5QUM0RDQzMDBBNkFB
QjQgLyogUGxhdGZvcm1Nb3VzZUV2ZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTI5NDM2LDcgKzI5
NDM2LDYgQEAKIAkJCQlDRUVGQ0Q3OTE5REIzMUY3MDAzODc2RDcgLyogTWVkaWFSZXNvdXJjZUxv
YWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDREJFQUVBQzE5RDkyQjZDMDBCRUJBODggLyog
TWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakMubW0gaW4gU291cmNlcyAqLywKIAkJCQlDOTAyN0Y0
MTFCMUQwQUQyMDBCRkJGRUYgLyogTWVkaWFTZXNzaW9uLmNwcCBpbiBTb3VyY2VzICovLAotCQkJ
CUNEQUU4QzA5MTc0NkI5NTcwMDUzMkQ3OCAvKiBNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTA3NjM4QTlBMTg4NDQ4NzIwMEUxNUExQiAvKiBNZWRpYVNlc3Npb25N
YW5hZ2VySU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMDdFREMzRUUxQUFDQjc1RDAwOTgzRUI1
IC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXJNYWMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0QzQTQ5
NUUxN0E5RDAxQjAwMjc0RTQyIC8qIE1lZGlhU291cmNlLmNwcCBpbiBTb3VyY2VzICovLApAQCAt
Mjk2MDcsNiArMjk2MDYsNyBAQAogCQkJCUJDQUE0ODZGMTRBMDUyNTMwMDg4RkFDNCAvKiBQbGF0
Zm9ybUV2ZW50RmFjdG9yeU1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUY1NDRGNzg4MTVDRkIy
QTgwMEFGMzNBOCAvKiBQbGF0Zm9ybUxvY2FsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzBF
MDkxQjE4NzVFRjcxMDAzQTFEM0MgLyogUGxhdGZvcm1NZWRpYVNlc3Npb24uY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJQ0RBRThDMDkxNzQ2Qjk1NzAwNTMyRDc4IC8qIFBsYXRmb3JtTWVkaWFTZXNz
aW9uTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MUJGNzAwRjBGRTg2RjYxMDA1RThE
RUMgLyogUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QzUyNzhCMEMxN0YyMTJFQTAwM0EyOTk4IC8qIFBsYXRmb3JtUGFzdGVib2FyZElPUy5tbSBpbiBT
b3VyY2VzICovLAogCQkJCUM1OTg5MDJFMTRFOUIwRjgwMEU4RDE4QiAvKiBQbGF0Zm9ybVBhc3Rl
Ym9hcmRNYWMubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwCmluZGV4IGMxZGI4OGQ5NWE3YTRhN2ViODFkMzMyY2EyOWY2ZTk1ZTZkZjBiZWUu
LmJhNDEwOWU0ZGIwOWY5N2YwMDgwYTJlYTg3ZGYzYzE5ZjU1NzY1ODggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtNjUsMTAgKzY1LDEwIEBACiAjaW5jbHVk
ZSAiTWVkaWFQbGF5ZXIuaCIKICNpbmNsdWRlICJNZWRpYVF1ZXJ5RXZhbHVhdG9yLmgiCiAjaW5j
bHVkZSAiTWVkaWFSZXNvdXJjZUxvYWRlci5oIgotI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbk1hbmFn
ZXIuaCIKICNpbmNsdWRlICJOZXR3b3JraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIlBhZ2VHcm91
cC5oIgogI2luY2x1ZGUgIlBhZ2VUaHJvdHRsZXIuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybU1lZGlh
U2Vzc2lvbk1hbmFnZXIuaCIKICNpbmNsdWRlICJQcm9ncmVzc1RyYWNrZXIuaCIKICNpbmNsdWRl
ICJSZW5kZXJMYXllckNvbXBvc2l0b3IuaCIKICNpbmNsdWRlICJSZW5kZXJWaWRlby5oIgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAKaW5kZXggMjI1NThlOWZh
Yzk3NGY2MmViOTlhNDY1N2ExM2IyNWQxMmJkNzUwNS4uZWM3YmM0MTIzOWQ0NjE2YjVkYjc5NGRk
MTY1YmM2NGRlMWYwNDNiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVs
ZW1lbnRTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNl
c3Npb24uY3BwCkBAIC0zOCw4ICszOCw4IEBACiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5j
bHVkZSAiSFRNTFZpZGVvRWxlbWVudC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRl
ICJNZWRpYVNlc3Npb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlBs
YXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIu
aCIKICNpbmNsdWRlICJTb3VyY2VCdWZmZXIuaCIKIApAQCAtMzI4LDEzICszMjgsMTMgQEAgdm9p
ZCBNZWRpYUVsZW1lbnRTZXNzaW9uOjptZWRpYVN0YXRlRGlkQ2hhbmdlKGNvbnN0IEhUTUxNZWRp
YUVsZW1lbnQmIGVsZW1lbnQsIE0KIAogTWVkaWFQbGF5ZXI6OlByZWxvYWQgTWVkaWFFbGVtZW50
U2Vzc2lvbjo6ZWZmZWN0aXZlUHJlbG9hZEZvckVsZW1lbnQoY29uc3QgSFRNTE1lZGlhRWxlbWVu
dCYgZWxlbWVudCkgY29uc3QKIHsKLSAgICBNZWRpYVNlc3Npb25NYW5hZ2VyOjpTZXNzaW9uUmVz
dHJpY3Rpb25zIHJlc3RyaWN0aW9ucyA9IE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFn
ZXIoKS5yZXN0cmljdGlvbnMobWVkaWFUeXBlKCkpOworICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9u
TWFuYWdlcjo6U2Vzc2lvblJlc3RyaWN0aW9ucyByZXN0cmljdGlvbnMgPSBQbGF0Zm9ybU1lZGlh
U2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5yZXN0cmljdGlvbnMobWVkaWFUeXBlKCkp
OwogICAgIE1lZGlhUGxheWVyOjpQcmVsb2FkIHByZWxvYWQgPSBlbGVtZW50LnByZWxvYWRWYWx1
ZSgpOwogCi0gICAgaWYgKChyZXN0cmljdGlvbnMgJiBNZWRpYVNlc3Npb25NYW5hZ2VyOjpNZXRh
ZGF0YVByZWxvYWRpbmdOb3RQZXJtaXR0ZWQpID09IE1lZGlhU2Vzc2lvbk1hbmFnZXI6Ok1ldGFk
YXRhUHJlbG9hZGluZ05vdFBlcm1pdHRlZCkKKyAgICBpZiAoKHJlc3RyaWN0aW9ucyAmIFBsYXRm
b3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6TWV0YWRhdGFQcmVsb2FkaW5nTm90UGVybWl0dGVkKSA9
PSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6Ok1ldGFkYXRhUHJlbG9hZGluZ05vdFBlcm1p
dHRlZCkKICAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpOb25lOwogCi0gICAgaWYgKChyZXN0
cmljdGlvbnMgJiBNZWRpYVNlc3Npb25NYW5hZ2VyOjpBdXRvUHJlbG9hZGluZ05vdFBlcm1pdHRl
ZCkgPT0gTWVkaWFTZXNzaW9uTWFuYWdlcjo6QXV0b1ByZWxvYWRpbmdOb3RQZXJtaXR0ZWQpIHsK
KyAgICBpZiAoKHJlc3RyaWN0aW9ucyAmIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6QXV0
b1ByZWxvYWRpbmdOb3RQZXJtaXR0ZWQpID09IFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6
QXV0b1ByZWxvYWRpbmdOb3RQZXJtaXR0ZWQpIHsKICAgICAgICAgaWYgKHByZWxvYWQgPiBNZWRp
YVBsYXllcjo6TWV0YURhdGEpCiAgICAgICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6Ok1ldGFE
YXRhOwogICAgIH0KQEAgLTM0NCw3ICszNDQsNyBAQCBNZWRpYVBsYXllcjo6UHJlbG9hZCBNZWRp
YUVsZW1lbnRTZXNzaW9uOjplZmZlY3RpdmVQcmVsb2FkRm9yRWxlbWVudChjb25zdCBIVE1MTQog
CiBib29sIE1lZGlhRWxlbWVudFNlc3Npb246OnJlcXVpcmVzRnVsbHNjcmVlbkZvclZpZGVvUGxh
eWJhY2soY29uc3QgSFRNTE1lZGlhRWxlbWVudCYgZWxlbWVudCkgY29uc3QKIHsKLSAgICBpZiAo
IU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5zZXNzaW9uUmVzdHJpY3RzSW5s
aW5lVmlkZW9QbGF5YmFjaygqdGhpcykpCisgICAgaWYgKCFQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1h
bmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5zZXNzaW9uUmVzdHJpY3RzSW5saW5lVmlkZW9QbGF5YmFj
aygqdGhpcykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIFNldHRpbmdzKiBzZXR0aW5n
cyA9IGVsZW1lbnQuZG9jdW1lbnQoKS5zZXR0aW5ncygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggZTE3NzA1M2ZkNjYxMDMyMjViODE5YmU3ZGZmYTQ1Zjg1YzZlNGNl
Ny4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcAorKysgL2Rldi9u
dWxsCkBAIC0xLDMzNCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTUgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmln
LmgiCi0jaW5jbHVkZSAiTWVkaWFTZXNzaW9uTWFuYWdlci5oIgotCi0jaWYgRU5BQkxFKFZJREVP
KQotCi0jaW5jbHVkZSAiQXVkaW9TZXNzaW9uLmgiCi0jaW5jbHVkZSAiTG9nZ2luZy5oIgotI2lu
Y2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1NZWRpYVNlc3Npb24u
aCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0jaWYgIVBMQVRGT1JNKElPUykKLU1lZGlhU2Vz
c2lvbk1hbmFnZXImIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKQotewotICAg
IERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChNZWRpYVNlc3Npb25NYW5hZ2VyLCBtYW5h
Z2VyLCAoKSk7Ci0gICAgcmV0dXJuIG1hbmFnZXI7Ci19Ci0jZW5kaWYKLQotTWVkaWFTZXNzaW9u
TWFuYWdlcjo6TWVkaWFTZXNzaW9uTWFuYWdlcigpCi0gICAgOiBtX3N5c3RlbVNsZWVwTGlzdGVu
ZXIoU3lzdGVtU2xlZXBMaXN0ZW5lcjo6Y3JlYXRlKCp0aGlzKSkKLXsKLSAgICByZXNldFJlc3Ry
aWN0aW9ucygpOwotfQotCi12b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnJlc2V0UmVzdHJpY3Rp
b25zKCkKLXsKLSAgICBtX3Jlc3RyaWN0aW9uc1tQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6VmlkZW9d
ID0gTm9SZXN0cmljdGlvbnM7Ci0gICAgbV9yZXN0cmljdGlvbnNbUGxhdGZvcm1NZWRpYVNlc3Np
b246OkF1ZGlvXSA9IE5vUmVzdHJpY3Rpb25zOwotICAgIG1fcmVzdHJpY3Rpb25zW1BsYXRmb3Jt
TWVkaWFTZXNzaW9uOjpXZWJBdWRpb10gPSBOb1Jlc3RyaWN0aW9uczsKLX0KLQotYm9vbCBNZWRp
YVNlc3Npb25NYW5hZ2VyOjpoYXMoUGxhdGZvcm1NZWRpYVNlc3Npb246Ok1lZGlhVHlwZSB0eXBl
KSBjb25zdAotewotICAgIEFTU0VSVCh0eXBlID49IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpOb25l
ICYmIHR5cGUgPD0gUGxhdGZvcm1NZWRpYVNlc3Npb246OldlYkF1ZGlvKTsKLQotICAgIGZvciAo
YXV0byogc2Vzc2lvbiA6IG1fc2Vzc2lvbnMpIHsKLSAgICAgICAgaWYgKHNlc3Npb24tPm1lZGlh
VHlwZSgpID09IHR5cGUpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBy
ZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgTWVkaWFTZXNzaW9uTWFuYWdlcjo6YWN0aXZlQXVkaW9T
ZXNzaW9uUmVxdWlyZWQoKSBjb25zdAotewotICAgIGZvciAoYXV0byogc2Vzc2lvbiA6IG1fc2Vz
c2lvbnMpIHsKLSAgICAgICAgaWYgKHNlc3Npb24tPm1lZGlhVHlwZSgpICE9IFBsYXRmb3JtTWVk
aWFTZXNzaW9uOjpOb25lICYmIHNlc3Npb24tPnN0YXRlKCkgPT0gUGxhdGZvcm1NZWRpYVNlc3Np
b246OlN0YXRlOjpQbGF5aW5nKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAg
IAotICAgIHJldHVybiBmYWxzZTsKLX0KLQotaW50IE1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNvdW50
KFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUgdHlwZSkgY29uc3QKLXsKLSAgICBBU1NF
UlQodHlwZSA+PSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Tm9uZSAmJiB0eXBlIDw9IFBsYXRmb3Jt
TWVkaWFTZXNzaW9uOjpXZWJBdWRpbyk7Ci0KLSAgICBpbnQgY291bnQgPSAwOwotICAgIGZvciAo
YXV0byogc2Vzc2lvbiA6IG1fc2Vzc2lvbnMpIHsKLSAgICAgICAgaWYgKHNlc3Npb24tPm1lZGlh
VHlwZSgpID09IHR5cGUpCi0gICAgICAgICAgICArK2NvdW50OwotICAgIH0KLQotICAgIHJldHVy
biBjb3VudDsKLX0KLQotdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyOjpiZWdpbkludGVycnVwdGlv
bihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6SW50ZXJydXB0aW9uVHlwZSB0eXBlKQotewotICAgIExP
RyhNZWRpYSwgIk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmJlZ2luSW50ZXJydXB0aW9uIik7Ci0KLSAg
ICBtX2ludGVycnVwdGVkID0gdHJ1ZTsKLSAgICBWZWN0b3I8UGxhdGZvcm1NZWRpYVNlc3Npb24q
PiBzZXNzaW9ucyA9IG1fc2Vzc2lvbnM7Ci0gICAgZm9yIChhdXRvKiBzZXNzaW9uIDogc2Vzc2lv
bnMpCi0gICAgICAgIHNlc3Npb24tPmJlZ2luSW50ZXJydXB0aW9uKHR5cGUpOwotICAgIHVwZGF0
ZVNlc3Npb25TdGF0ZSgpOwotfQotCi12b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OmVuZEludGVy
cnVwdGlvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6RW5kSW50ZXJydXB0aW9uRmxhZ3MgZmxhZ3Mp
Ci17Ci0gICAgTE9HKE1lZGlhLCAiTWVkaWFTZXNzaW9uTWFuYWdlcjo6ZW5kSW50ZXJydXB0aW9u
Iik7Ci0KLSAgICBtX2ludGVycnVwdGVkID0gZmFsc2U7Ci0gICAgVmVjdG9yPFBsYXRmb3JtTWVk
aWFTZXNzaW9uKj4gc2Vzc2lvbnMgPSBtX3Nlc3Npb25zOwotICAgIGZvciAoYXV0byogc2Vzc2lv
biA6IHNlc3Npb25zKQotICAgICAgICBzZXNzaW9uLT5lbmRJbnRlcnJ1cHRpb24oZmxhZ3MpOwot
fQotCi12b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OmFkZFNlc3Npb24oUGxhdGZvcm1NZWRpYVNl
c3Npb24mIHNlc3Npb24pCi17Ci0gICAgTE9HKE1lZGlhLCAiTWVkaWFTZXNzaW9uTWFuYWdlcjo6
YWRkU2Vzc2lvbiAtICVwIiwgJnNlc3Npb24pOwotICAgIAotICAgIG1fc2Vzc2lvbnMuYXBwZW5k
KCZzZXNzaW9uKTsKLSAgICBpZiAobV9pbnRlcnJ1cHRlZCkKLSAgICAgICAgc2Vzc2lvbi5zZXRT
dGF0ZShQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6SW50ZXJydXB0ZWQpOwotCi0gICAgaWYgKCFtX3Jl
bW90ZUNvbW1hbmRMaXN0ZW5lcikKLSAgICAgICAgbV9yZW1vdGVDb21tYW5kTGlzdGVuZXIgPSBS
ZW1vdGVDb21tYW5kTGlzdGVuZXI6OmNyZWF0ZSgqdGhpcyk7Ci0KLSAgICBpZiAoIW1fYXVkaW9I
YXJkd2FyZUxpc3RlbmVyKQotICAgICAgICBtX2F1ZGlvSGFyZHdhcmVMaXN0ZW5lciA9IEF1ZGlv
SGFyZHdhcmVMaXN0ZW5lcjo6Y3JlYXRlKCp0aGlzKTsKLQotICAgIHVwZGF0ZVNlc3Npb25TdGF0
ZSgpOwotfQotCi12b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnJlbW92ZVNlc3Npb24oUGxhdGZv
cm1NZWRpYVNlc3Npb24mIHNlc3Npb24pCi17Ci0gICAgTE9HKE1lZGlhLCAiTWVkaWFTZXNzaW9u
TWFuYWdlcjo6cmVtb3ZlU2Vzc2lvbiAtICVwIiwgJnNlc3Npb24pOwotICAgIAotICAgIHNpemVf
dCBpbmRleCA9IG1fc2Vzc2lvbnMuZmluZCgmc2Vzc2lvbik7Ci0gICAgQVNTRVJUKGluZGV4ICE9
IG5vdEZvdW5kKTsKLSAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQpCi0gICAgICAgIHJldHVybjsK
LSAgICAKLSAgICBtX3Nlc3Npb25zLnJlbW92ZShpbmRleCk7Ci0KLSAgICBpZiAobV9zZXNzaW9u
cy5pc0VtcHR5KCkpIHsKLSAgICAgICAgbV9yZW1vdGVDb21tYW5kTGlzdGVuZXIgPSBudWxscHRy
OwotICAgICAgICBtX2F1ZGlvSGFyZHdhcmVMaXN0ZW5lciA9IG51bGxwdHI7Ci0gICAgfQotCi0g
ICAgdXBkYXRlU2Vzc2lvblN0YXRlKCk7Ci19Ci0KLXZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcjo6
YWRkUmVzdHJpY3Rpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246Ok1lZGlhVHlwZSB0eXBlLCBTZXNz
aW9uUmVzdHJpY3Rpb25zIHJlc3RyaWN0aW9uKQotewotICAgIEFTU0VSVCh0eXBlID4gUGxhdGZv
cm1NZWRpYVNlc3Npb246Ok5vbmUgJiYgdHlwZSA8PSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6V2Vi
QXVkaW8pOwotICAgIG1fcmVzdHJpY3Rpb25zW3R5cGVdIHw9IHJlc3RyaWN0aW9uOwotfQotCi12
b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnJlbW92ZVJlc3RyaWN0aW9uKFBsYXRmb3JtTWVkaWFT
ZXNzaW9uOjpNZWRpYVR5cGUgdHlwZSwgU2Vzc2lvblJlc3RyaWN0aW9ucyByZXN0cmljdGlvbikK
LXsKLSAgICBBU1NFUlQodHlwZSA+IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpOb25lICYmIHR5cGUg
PD0gUGxhdGZvcm1NZWRpYVNlc3Npb246OldlYkF1ZGlvKTsKLSAgICBtX3Jlc3RyaWN0aW9uc1t0
eXBlXSAmPSB+cmVzdHJpY3Rpb247Ci19Ci0KLU1lZGlhU2Vzc2lvbk1hbmFnZXI6OlNlc3Npb25S
ZXN0cmljdGlvbnMgTWVkaWFTZXNzaW9uTWFuYWdlcjo6cmVzdHJpY3Rpb25zKFBsYXRmb3JtTWVk
aWFTZXNzaW9uOjpNZWRpYVR5cGUgdHlwZSkKLXsKLSAgICBBU1NFUlQodHlwZSA+IFBsYXRmb3Jt
TWVkaWFTZXNzaW9uOjpOb25lICYmIHR5cGUgPD0gUGxhdGZvcm1NZWRpYVNlc3Npb246OldlYkF1
ZGlvKTsKLSAgICByZXR1cm4gbV9yZXN0cmljdGlvbnNbdHlwZV07Ci19Ci0KLWJvb2wgTWVkaWFT
ZXNzaW9uTWFuYWdlcjo6c2Vzc2lvbldpbGxCZWdpblBsYXliYWNrKFBsYXRmb3JtTWVkaWFTZXNz
aW9uJiBzZXNzaW9uKQotewotICAgIExPRyhNZWRpYSwgIk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNl
c3Npb25XaWxsQmVnaW5QbGF5YmFjayAtICVwIiwgJnNlc3Npb24pOwotICAgIAotICAgIHNldEN1
cnJlbnRTZXNzaW9uKHNlc3Npb24pOwotCi0gICAgUGxhdGZvcm1NZWRpYVNlc3Npb246Ok1lZGlh
VHlwZSBzZXNzaW9uVHlwZSA9IHNlc3Npb24ubWVkaWFUeXBlKCk7Ci0gICAgU2Vzc2lvblJlc3Ry
aWN0aW9ucyByZXN0cmljdGlvbnMgPSBtX3Jlc3RyaWN0aW9uc1tzZXNzaW9uVHlwZV07Ci0gICAg
aWYgKHNlc3Npb24uc3RhdGUoKSA9PSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6SW50ZXJydXB0ZWQg
JiYgcmVzdHJpY3Rpb25zICYgSW50ZXJydXB0ZWRQbGF5YmFja05vdFBlcm1pdHRlZCkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCi0jaWYgVVNFKEFVRElPX1NFU1NJT04pCi0gICAgaWYgKGFjdGl2
ZUF1ZGlvU2Vzc2lvblJlcXVpcmVkKCkgJiYgIUF1ZGlvU2Vzc2lvbjo6c2hhcmVkU2Vzc2lvbigp
LnRyeVRvU2V0QWN0aXZlKHRydWUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYKLQot
ICAgIGlmIChtX2ludGVycnVwdGVkKQotICAgICAgICBlbmRJbnRlcnJ1cHRpb24oUGxhdGZvcm1N
ZWRpYVNlc3Npb246Ok5vRmxhZ3MpOwotCi0gICAgVmVjdG9yPFBsYXRmb3JtTWVkaWFTZXNzaW9u
Kj4gc2Vzc2lvbnMgPSBtX3Nlc3Npb25zOwotICAgIGZvciAoYXV0byogb25lU2Vzc2lvbiA6IHNl
c3Npb25zKSB7Ci0gICAgICAgIGlmIChvbmVTZXNzaW9uID09ICZzZXNzaW9uKQotICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgIGlmIChvbmVTZXNzaW9uLT5tZWRpYVR5cGUoKSA9PSBzZXNz
aW9uVHlwZSAmJiByZXN0cmljdGlvbnMgJiBDb25jdXJyZW50UGxheWJhY2tOb3RQZXJtaXR0ZWQp
Ci0gICAgICAgICAgICBvbmVTZXNzaW9uLT5wYXVzZVNlc3Npb24oKTsKLSAgICB9Ci0KLSAgICB1
cGRhdGVTZXNzaW9uU3RhdGUoKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLSAgICAKLXZvaWQgTWVk
aWFTZXNzaW9uTWFuYWdlcjo6c2Vzc2lvbldpbGxFbmRQbGF5YmFjayhQbGF0Zm9ybU1lZGlhU2Vz
c2lvbiYgc2Vzc2lvbikKLXsKLSAgICBMT0coTWVkaWEsICJNZWRpYVNlc3Npb25NYW5hZ2VyOjpz
ZXNzaW9uV2lsbEVuZFBsYXliYWNrIC0gJXAiLCAmc2Vzc2lvbik7Ci0gICAgCi0gICAgaWYgKG1f
c2Vzc2lvbnMuc2l6ZSgpIDwgMikKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIHNpemVfdCBw
YXVzaW5nU2Vzc2lvbkluZGV4ID0gbm90Rm91bmQ7Ci0gICAgc2l6ZV90IGxhc3RQbGF5aW5nU2Vz
c2lvbkluZGV4ID0gbm90Rm91bmQ7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3Nlc3Np
b25zLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uKiBvbmVTZXNz
aW9uID0gbV9zZXNzaW9uc1tpXTsKLSAgICAgICAgCi0gICAgICAgIGlmIChvbmVTZXNzaW9uID09
ICZzZXNzaW9uKSB7Ci0gICAgICAgICAgICBwYXVzaW5nU2Vzc2lvbkluZGV4ID0gaTsKLSAgICAg
ICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0gICAgICAgIGlmIChvbmVTZXNzaW9uLT5zdGF0
ZSgpID09IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQbGF5aW5nKSB7Ci0gICAgICAgICAgICBsYXN0
UGxheWluZ1Nlc3Npb25JbmRleCA9IGk7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAg
fQotICAgICAgICBpZiAob25lU2Vzc2lvbi0+c3RhdGUoKSAhPSBQbGF0Zm9ybU1lZGlhU2Vzc2lv
bjo6UGxheWluZykKLSAgICAgICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBpZiAobGFzdFBsYXlp
bmdTZXNzaW9uSW5kZXggPT0gbm90Rm91bmQgfHwgcGF1c2luZ1Nlc3Npb25JbmRleCA9PSBub3RG
b3VuZCkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIGlmIChwYXVzaW5nU2Vzc2lvbkluZGV4
ID4gbGFzdFBsYXlpbmdTZXNzaW9uSW5kZXgpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBt
X3Nlc3Npb25zLnJlbW92ZShwYXVzaW5nU2Vzc2lvbkluZGV4KTsKLSAgICBtX3Nlc3Npb25zLmlu
c2VydChsYXN0UGxheWluZ1Nlc3Npb25JbmRleCwgJnNlc3Npb24pOwotICAgIAotICAgIExPRyhN
ZWRpYSwgIk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNlc3Npb25XaWxsRW5kUGxheWJhY2sgLSBzZXNz
aW9uIG1vdmVkIGZyb20gaW5kZXggJXp1IHRvICV6dSIsIHBhdXNpbmdTZXNzaW9uSW5kZXgsIGxh
c3RQbGF5aW5nU2Vzc2lvbkluZGV4KTsKLX0KLQotdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyOjpz
ZXRDdXJyZW50U2Vzc2lvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbiYgc2Vzc2lvbikKLXsKLSAgICBM
T0coTWVkaWEsICJNZWRpYVNlc3Npb25NYW5hZ2VyOjpzZXRDdXJyZW50U2Vzc2lvbiAtICVwIiwg
JnNlc3Npb24pOwotICAgIAotICAgIGlmIChtX3Nlc3Npb25zLnNpemUoKSA8IDIpCi0gICAgICAg
IHJldHVybjsKLSAgICAKLSAgICBzaXplX3QgaW5kZXggPSBtX3Nlc3Npb25zLmZpbmQoJnNlc3Np
b24pOwotICAgIEFTU0VSVChpbmRleCAhPSBub3RGb3VuZCk7Ci0gICAgaWYgKCFpbmRleCB8fCBp
bmRleCA9PSBub3RGb3VuZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9zZXNzaW9ucy5yZW1v
dmUoaW5kZXgpOwotICAgIG1fc2Vzc2lvbnMuaW5zZXJ0KDAsICZzZXNzaW9uKTsKLSAgICAKLSAg
ICBMT0coTWVkaWEsICJNZWRpYVNlc3Npb25NYW5hZ2VyOjpzZXRDdXJyZW50U2Vzc2lvbiAtIHNl
c3Npb24gbW92ZWQgZnJvbSBpbmRleCAlenUgdG8gMCIsIGluZGV4KTsKLX0KLSAgICAKLVBsYXRm
b3JtTWVkaWFTZXNzaW9uKiBNZWRpYVNlc3Npb25NYW5hZ2VyOjpjdXJyZW50U2Vzc2lvbigpCi17
Ci0gICAgaWYgKCFtX3Nlc3Npb25zLnNpemUoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0K
LSAgICByZXR1cm4gbV9zZXNzaW9uc1swXTsKLX0KLSAgICAKLWJvb2wgTWVkaWFTZXNzaW9uTWFu
YWdlcjo6c2Vzc2lvblJlc3RyaWN0c0lubGluZVZpZGVvUGxheWJhY2soY29uc3QgUGxhdGZvcm1N
ZWRpYVNlc3Npb24mIHNlc3Npb24pIGNvbnN0Ci17Ci0gICAgUGxhdGZvcm1NZWRpYVNlc3Npb246
Ok1lZGlhVHlwZSBzZXNzaW9uVHlwZSA9IHNlc3Npb24ucHJlc2VudGF0aW9uVHlwZSgpOwotICAg
IGlmIChzZXNzaW9uVHlwZSAhPSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6VmlkZW8pCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiBtX3Jlc3RyaWN0aW9uc1tzZXNzaW9uVHlwZV0g
JiBJbmxpbmVWaWRlb1BsYXliYWNrUmVzdHJpY3RlZDsKLX0KLQotYm9vbCBNZWRpYVNlc3Npb25N
YW5hZ2VyOjpzZXNzaW9uQ2FuTG9hZE1lZGlhKGNvbnN0IFBsYXRmb3JtTWVkaWFTZXNzaW9uJiBz
ZXNzaW9uKSBjb25zdAotewotICAgIHJldHVybiBzZXNzaW9uLnN0YXRlKCkgPT0gUGxhdGZvcm1N
ZWRpYVNlc3Npb246OlBsYXlpbmcgfHwgIXNlc3Npb24uaXNIaWRkZW4oKSB8fCBzZXNzaW9uLmlz
UGxheWluZ1RvV2lyZWxlc3NQbGF5YmFja1RhcmdldCgpOwotfQotCi12b2lkIE1lZGlhU2Vzc2lv
bk1hbmFnZXI6OmFwcGxpY2F0aW9uV2lsbEVudGVyQmFja2dyb3VuZCgpIGNvbnN0Ci17Ci0gICAg
TE9HKE1lZGlhLCAiTWVkaWFTZXNzaW9uTWFuYWdlcjo6YXBwbGljYXRpb25XaWxsRW50ZXJCYWNr
Z3JvdW5kIik7Ci0gICAgVmVjdG9yPFBsYXRmb3JtTWVkaWFTZXNzaW9uKj4gc2Vzc2lvbnMgPSBt
X3Nlc3Npb25zOwotICAgIGZvciAoYXV0byogc2Vzc2lvbiA6IHNlc3Npb25zKSB7Ci0gICAgICAg
IGlmIChtX3Jlc3RyaWN0aW9uc1tzZXNzaW9uLT5tZWRpYVR5cGUoKV0gJiBCYWNrZ3JvdW5kUHJv
Y2Vzc1BsYXliYWNrUmVzdHJpY3RlZCkKLSAgICAgICAgICAgIHNlc3Npb24tPmJlZ2luSW50ZXJy
dXB0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpFbnRlcmluZ0JhY2tncm91bmQpOwotICAgIH0K
LX0KLQotdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyOjphcHBsaWNhdGlvbldpbGxFbnRlckZvcmVn
cm91bmQoKSBjb25zdAotewotICAgIExPRyhNZWRpYSwgIk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmFw
cGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZCIpOwotICAgIFZlY3RvcjxQbGF0Zm9ybU1lZGlh
U2Vzc2lvbio+IHNlc3Npb25zID0gbV9zZXNzaW9uczsKLSAgICBmb3IgKGF1dG8qIHNlc3Npb24g
OiBzZXNzaW9ucykgewotICAgICAgICBpZiAobV9yZXN0cmljdGlvbnNbc2Vzc2lvbi0+bWVkaWFU
eXBlKCldICYgQmFja2dyb3VuZFByb2Nlc3NQbGF5YmFja1Jlc3RyaWN0ZWQpCi0gICAgICAgICAg
ICBzZXNzaW9uLT5lbmRJbnRlcnJ1cHRpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246Ok1heVJlc3Vt
ZVBsYXlpbmcpOwotICAgIH0KLX0KLQotI2lmICFQTEFURk9STShDT0NPQSkKLXZvaWQgTWVkaWFT
ZXNzaW9uTWFuYWdlcjo6dXBkYXRlU2Vzc2lvblN0YXRlKCkKLXsKLX0KLSNlbmRpZgotCi12b2lk
IE1lZGlhU2Vzc2lvbk1hbmFnZXI6OmRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlIGNvbW1hbmQpCi17Ci0g
ICAgUGxhdGZvcm1NZWRpYVNlc3Npb24qIGFjdGl2ZVNlc3Npb24gPSBjdXJyZW50U2Vzc2lvbigp
OwotICAgIGlmICghYWN0aXZlU2Vzc2lvbiB8fCAhYWN0aXZlU2Vzc2lvbi0+Y2FuUmVjZWl2ZVJl
bW90ZUNvbnRyb2xDb21tYW5kcygpKQotICAgICAgICByZXR1cm47Ci0gICAgYWN0aXZlU2Vzc2lv
bi0+ZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKGNvbW1hbmQpOwotfQotCi12b2lkIE1l
ZGlhU2Vzc2lvbk1hbmFnZXI6OnN5c3RlbVdpbGxTbGVlcCgpCi17Ci0gICAgaWYgKG1faW50ZXJy
dXB0ZWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGZvciAoYXV0byBzZXNzaW9uIDogbV9zZXNz
aW9ucykKLSAgICAgICAgc2Vzc2lvbi0+YmVnaW5JbnRlcnJ1cHRpb24oUGxhdGZvcm1NZWRpYVNl
c3Npb246OlN5c3RlbVNsZWVwKTsKLX0KLQotdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzeXN0
ZW1EaWRXYWtlKCkKLXsKLSAgICBpZiAobV9pbnRlcnJ1cHRlZCkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgZm9yIChhdXRvIHNlc3Npb24gOiBtX3Nlc3Npb25zKQotICAgICAgICBzZXNzaW9uLT5l
bmRJbnRlcnJ1cHRpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246Ok1heVJlc3VtZVBsYXlpbmcpOwot
fQotCi12b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OmF1ZGlvT3V0cHV0RGV2aWNlQ2hhbmdlZCgp
Ci17Ci0gICAgdXBkYXRlU2Vzc2lvblN0YXRlKCk7Ci19Ci0KLX0KLQotI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Npb25NYW5hZ2VyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Npb25NYW5hZ2VyLmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQxNTBhOTg1ZGM2NzRmYTdjY2VmNTUyNzUxMWZm
MmRkODNkNzRhMDQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uTWFuYWdlci5oCisr
KyAvZGV2L251bGwKQEAgLTEsMTMzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMt
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYg
TWVkaWFTZXNzaW9uTWFuYWdlcl9oCi0jZGVmaW5lIE1lZGlhU2Vzc2lvbk1hbmFnZXJfaAotCi0j
aW5jbHVkZSAiQXVkaW9IYXJkd2FyZUxpc3RlbmVyLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1NZWRp
YVNlc3Npb24uaCIKLSNpbmNsdWRlICJSZW1vdGVDb21tYW5kTGlzdGVuZXIuaCIKLSNpbmNsdWRl
ICJTZXR0aW5ncy5oIgotI2luY2x1ZGUgIlN5c3RlbVNsZWVwTGlzdGVuZXIuaCIKLSNpbmNsdWRl
IDxtYXA+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LWNsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7Ci1jbGFzcyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjsKLWNs
YXNzIFJlbW90ZUNvbW1hbmRMaXN0ZW5lcjsKLQotY2xhc3MgTWVkaWFTZXNzaW9uTWFuYWdlciA6
IHByaXZhdGUgUmVtb3RlQ29tbWFuZExpc3RlbmVyQ2xpZW50LCBwcml2YXRlIFN5c3RlbVNsZWVw
TGlzdGVuZXI6OkNsaWVudCwgcHJpdmF0ZSBBdWRpb0hhcmR3YXJlTGlzdGVuZXI6OkNsaWVudCB7
Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIE1lZGlhU2Vzc2lvbk1hbmFnZXImIHNoYXJlZE1hbmFnZXIoKTsKLSAgICB2aXJ0
dWFsIH5NZWRpYVNlc3Npb25NYW5hZ2VyKCkgeyB9Ci0KLSAgICBib29sIGhhcyhQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6TWVkaWFUeXBlKSBjb25zdDsKLSAgICBpbnQgY291bnQoUGxhdGZvcm1NZWRp
YVNlc3Npb246Ok1lZGlhVHlwZSkgY29uc3Q7Ci0gICAgYm9vbCBhY3RpdmVBdWRpb1Nlc3Npb25S
ZXF1aXJlZCgpIGNvbnN0OwotCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBiZWdpbkludGVycnVw
dGlvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6SW50ZXJydXB0aW9uVHlwZSk7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBlbmRJbnRlcnJ1cHRpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246OkVuZElu
dGVycnVwdGlvbkZsYWdzKTsKLQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwbGljYXRpb25X
aWxsRW50ZXJGb3JlZ3JvdW5kKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBs
aWNhdGlvbldpbGxFbnRlckJhY2tncm91bmQoKSBjb25zdDsKLQotICAgIGVudW0gU2Vzc2lvblJl
c3RyaWN0aW9uRmxhZ3MgewotICAgICAgICBOb1Jlc3RyaWN0aW9ucyA9IDAsCi0gICAgICAgIENv
bmN1cnJlbnRQbGF5YmFja05vdFBlcm1pdHRlZCA9IDEgPDwgMCwKLSAgICAgICAgSW5saW5lVmlk
ZW9QbGF5YmFja1Jlc3RyaWN0ZWQgPSAxIDw8IDEsCi0gICAgICAgIE1ldGFkYXRhUHJlbG9hZGlu
Z05vdFBlcm1pdHRlZCA9IDEgPDwgMiwKLSAgICAgICAgQXV0b1ByZWxvYWRpbmdOb3RQZXJtaXR0
ZWQgPSAxIDw8IDMsCi0gICAgICAgIEJhY2tncm91bmRQcm9jZXNzUGxheWJhY2tSZXN0cmljdGVk
ID0gMSA8PCA0LAotICAgICAgICBCYWNrZ3JvdW5kVGFiUGxheWJhY2tSZXN0cmljdGVkID0gMSA8
PCA1LAotICAgICAgICBJbnRlcnJ1cHRlZFBsYXliYWNrTm90UGVybWl0dGVkID0gMSA8PCA2LAot
ICAgIH07Ci0gICAgdHlwZWRlZiB1bnNpZ25lZCBTZXNzaW9uUmVzdHJpY3Rpb25zOwotCi0gICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRSZXN0cmljdGlvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6
TWVkaWFUeXBlLCBTZXNzaW9uUmVzdHJpY3Rpb25zKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHJlbW92ZVJlc3RyaWN0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUsIFNlc3Np
b25SZXN0cmljdGlvbnMpOwotICAgIFdFQkNPUkVfRVhQT1JUIFNlc3Npb25SZXN0cmljdGlvbnMg
cmVzdHJpY3Rpb25zKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUpOwotICAgIHZpcnR1
YWwgdm9pZCByZXNldFJlc3RyaWN0aW9ucygpOwotCi0gICAgdmlydHVhbCBib29sIHNlc3Npb25X
aWxsQmVnaW5QbGF5YmFjayhQbGF0Zm9ybU1lZGlhU2Vzc2lvbiYpOwotICAgIHZpcnR1YWwgdm9p
ZCBzZXNzaW9uV2lsbEVuZFBsYXliYWNrKFBsYXRmb3JtTWVkaWFTZXNzaW9uJik7Ci0KLSAgICBi
b29sIHNlc3Npb25SZXN0cmljdHNJbmxpbmVWaWRlb1BsYXliYWNrKGNvbnN0IFBsYXRmb3JtTWVk
aWFTZXNzaW9uJikgY29uc3Q7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgc2Vzc2lvbkNhbkxvYWRNZWRp
YShjb25zdCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbiYpIGNvbnN0OwotCi0jaWYgUExBVEZPUk0oSU9T
KQotICAgIHZpcnR1YWwgdm9pZCBjb25maWd1cmVXaXJlTGVzc1RhcmdldE1vbml0b3JpbmcoKSB7
IH0KLSAgICB2aXJ0dWFsIGJvb2wgaGFzV2lyZWxlc3NUYXJnZXRzQXZhaWxhYmxlKCkgeyByZXR1
cm4gZmFsc2U7IH0KLSNlbmRpZgotCi0gICAgdm9pZCBzZXRDdXJyZW50U2Vzc2lvbihQbGF0Zm9y
bU1lZGlhU2Vzc2lvbiYpOwotICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uKiBjdXJyZW50U2Vzc2lv
bigpOwotCi1wcm90ZWN0ZWQ6Ci0gICAgZnJpZW5kIGNsYXNzIFBsYXRmb3JtTWVkaWFTZXNzaW9u
OwotICAgIGV4cGxpY2l0IE1lZGlhU2Vzc2lvbk1hbmFnZXIoKTsKLQotICAgIHZvaWQgYWRkU2Vz
c2lvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbiYpOwotICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbihQbGF0
Zm9ybU1lZGlhU2Vzc2lvbiYpOwotCi0gICAgVmVjdG9yPFBsYXRmb3JtTWVkaWFTZXNzaW9uKj4g
c2Vzc2lvbnMoKSB7IHJldHVybiBtX3Nlc3Npb25zOyB9Ci0KLXByaXZhdGU6Ci0gICAgZnJpZW5k
IGNsYXNzIEludGVybmFsczsKLQotICAgIHZvaWQgdXBkYXRlU2Vzc2lvblN0YXRlKCk7Ci0KLSAg
ICAvLyBSZW1vdGVDb21tYW5kTGlzdGVuZXJDbGllbnQKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0
dWFsIHZvaWQgZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKFBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUpIG92ZXJyaWRlOwotCi0gICAgLy8gQXVkaW9I
YXJkd2FyZUxpc3RlbmVyQ2xpZW50Ci0gICAgdmlydHVhbCB2b2lkIGF1ZGlvSGFyZHdhcmVEaWRC
ZWNvbWVBY3RpdmUoKSBvdmVycmlkZSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgYXVkaW9IYXJkd2Fy
ZURpZEJlY29tZUluYWN0aXZlKCkgb3ZlcnJpZGUgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGF1ZGlv
T3V0cHV0RGV2aWNlQ2hhbmdlZCgpIG92ZXJyaWRlOwotCi0gICAgLy8gU3lzdGVtU2xlZXBMaXN0
ZW5lcgotICAgIHZpcnR1YWwgdm9pZCBzeXN0ZW1XaWxsU2xlZXAoKSBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIHZvaWQgc3lzdGVtRGlkV2FrZSgpIG92ZXJyaWRlOwotCi0gICAgU2Vzc2lvblJlc3Ry
aWN0aW9ucyBtX3Jlc3RyaWN0aW9uc1tQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6V2ViQXVkaW8gKyAx
XTsKLSAgICBWZWN0b3I8UGxhdGZvcm1NZWRpYVNlc3Npb24qPiBtX3Nlc3Npb25zOwotICAgIHN0
ZDo6dW5pcXVlX3B0cjxSZW1vdGVDb21tYW5kTGlzdGVuZXI+IG1fcmVtb3RlQ29tbWFuZExpc3Rl
bmVyOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxTeXN0ZW1TbGVlcExpc3RlbmVyPiBtX3N5c3RlbVNs
ZWVwTGlzdGVuZXI7Ci0gICAgUmVmUHRyPEF1ZGlvSGFyZHdhcmVMaXN0ZW5lcj4gbV9hdWRpb0hh
cmR3YXJlTGlzdGVuZXI7Ci0KLSNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAm
JiAhUExBVEZPUk0oSU9TKQotICAgIFJlZlB0cjxNZWRpYVBsYXliYWNrVGFyZ2V0PiBtX3BsYXli
YWNrVGFyZ2V0OwotICAgIGJvb2wgbV9jYW5QbGF5VG9UYXJnZXQgeyBmYWxzZSB9OwotI2VuZGlm
Ci0KLSAgICBib29sIG1faW50ZXJydXB0ZWQgeyBmYWxzZSB9OwotfTsKLQotfQotCi0jZW5kaWYg
Ly8gTWVkaWFTZXNzaW9uTWFuYWdlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5jcHAKaW5kZXggNjY5M2E2ZjY5OTBiYWVl
YmQ1MmFmMWJlMzJkNjIxZjU5YmI0YjBjYS4uOTk4OTdjYWI1OTIyMGEzNWEwNDYxY2NkMjFkZTdi
OGE0ZTIyNGY1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxh
dGZvcm1NZWRpYVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L1BsYXRmb3JtTWVkaWFTZXNzaW9uLmNwcApAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgIkhU
TUxNZWRpYUVsZW1lbnQuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWVkaWFQ
bGF5ZXIuaCIKLSNpbmNsdWRlICJNZWRpYVNlc3Npb25NYW5hZ2VyLmgiCisjaW5jbHVkZSAiUGxh
dGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAt
NjUsMTIgKzY1LDEyIEBAIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQbGF0Zm9ybU1lZGlhU2Vzc2lv
bihQbGF0Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudCYgY2xpZW50KQogICAgICwgbV9ub3RpZnlpbmdD
bGllbnQoZmFsc2UpCiB7CiAgICAgQVNTRVJUKG1fY2xpZW50Lm1lZGlhVHlwZSgpID49IE5vbmUg
JiYgbV9jbGllbnQubWVkaWFUeXBlKCkgPD0gV2ViQXVkaW8pOwotICAgIE1lZGlhU2Vzc2lvbk1h
bmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5hZGRTZXNzaW9uKCp0aGlzKTsKKyAgICBQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5hZGRTZXNzaW9uKCp0aGlzKTsKIH0K
IAogUGxhdGZvcm1NZWRpYVNlc3Npb246On5QbGF0Zm9ybU1lZGlhU2Vzc2lvbigpCiB7Ci0gICAg
TWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLnJlbW92ZVNlc3Npb24oKnRoaXMp
OworICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLnJlbW92
ZVNlc3Npb24oKnRoaXMpOwogfQogCiB2b2lkIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpzZXRTdGF0
ZShTdGF0ZSBzdGF0ZSkKQEAgLTExOCw3ICsxMTgsNyBAQCBib29sIFBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpjbGllbnRXaWxsQmVnaW5QbGF5YmFjaygpCiAgICAgaWYgKG1fbm90aWZ5aW5nQ2xpZW50
KQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmICghTWVkaWFTZXNzaW9uTWFuYWdlcjo6
c2hhcmVkTWFuYWdlcigpLnNlc3Npb25XaWxsQmVnaW5QbGF5YmFjaygqdGhpcykpIHsKKyAgICBp
ZiAoIVBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLnNlc3Npb25X
aWxsQmVnaW5QbGF5YmFjaygqdGhpcykpIHsKICAgICAgICAgaWYgKHN0YXRlKCkgPT0gSW50ZXJy
dXB0ZWQpCiAgICAgICAgICAgICBtX3N0YXRlVG9SZXN0b3JlID0gUGxheWluZzsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtMTQyLDcgKzE0Miw3IEBAIGJvb2wgUGxhdGZvcm1NZWRpYVNlc3Np
b246OmNsaWVudFdpbGxQYXVzZVBsYXliYWNrKCkKICAgICB9CiAgICAgCiAgICAgc2V0U3RhdGUo
UGF1c2VkKTsKLSAgICBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuc2Vzc2lv
bldpbGxFbmRQbGF5YmFjaygqdGhpcyk7CisgICAgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2Vy
OjpzaGFyZWRNYW5hZ2VyKCkuc2Vzc2lvbldpbGxFbmRQbGF5YmFjaygqdGhpcyk7CiAgICAgaWYg
KCFtX2NsaWVudERhdGFCdWZmZXJpbmdUaW1lci5pc0FjdGl2ZSgpKQogICAgICAgICBtX2NsaWVu
dERhdGFCdWZmZXJpbmdUaW1lci5zdGFydE9uZVNob3Qoa0NsaWVudERhdGFCdWZmZXJpbmdUaW1l
clRocm90dGxlRGVsYXkpOwogICAgIHJldHVybiB0cnVlOwpAQCAtMjA0LDggKzIwNCw4IEBAIHZv
aWQgUGxhdGZvcm1NZWRpYVNlc3Npb246OmNsaWVudERhdGFCdWZmZXJpbmdUaW1lckZpcmVkKCkK
ICAgICBpZiAobV9zdGF0ZSAhPSBQbGF5aW5nIHx8ICFtX2NsaWVudC5lbGVtZW50SXNIaWRkZW4o
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgTWVkaWFTZXNzaW9uTWFuYWdlcjo6U2Vzc2lvblJl
c3RyaWN0aW9ucyByZXN0cmljdGlvbnMgPSBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5h
Z2VyKCkucmVzdHJpY3Rpb25zKG1lZGlhVHlwZSgpKTsKLSAgICBpZiAoKHJlc3RyaWN0aW9ucyAm
IE1lZGlhU2Vzc2lvbk1hbmFnZXI6OkJhY2tncm91bmRUYWJQbGF5YmFja1Jlc3RyaWN0ZWQpID09
IE1lZGlhU2Vzc2lvbk1hbmFnZXI6OkJhY2tncm91bmRUYWJQbGF5YmFja1Jlc3RyaWN0ZWQpCisg
ICAgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpTZXNzaW9uUmVzdHJpY3Rpb25zIHJlc3Ry
aWN0aW9ucyA9IFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLnJl
c3RyaWN0aW9ucyhtZWRpYVR5cGUoKSk7CisgICAgaWYgKChyZXN0cmljdGlvbnMgJiBQbGF0Zm9y
bU1lZGlhU2Vzc2lvbk1hbmFnZXI6OkJhY2tncm91bmRUYWJQbGF5YmFja1Jlc3RyaWN0ZWQpID09
IFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6QmFja2dyb3VuZFRhYlBsYXliYWNrUmVzdHJp
Y3RlZCkKICAgICAgICAgcGF1c2VTZXNzaW9uKCk7CiB9CiAKQEAgLTIxNCw3ICsyMTQsNyBAQCB2
b2lkIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjp1cGRhdGVDbGllbnREYXRhQnVmZmVyaW5nKCkKICAg
ICBpZiAobV9jbGllbnREYXRhQnVmZmVyaW5nVGltZXIuaXNBY3RpdmUoKSkKICAgICAgICAgbV9j
bGllbnREYXRhQnVmZmVyaW5nVGltZXIuc3RvcCgpOwogCi0gICAgbV9jbGllbnQuc2V0U2hvdWxk
QnVmZmVyRGF0YShNZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuc2Vzc2lvbkNh
bkxvYWRNZWRpYSgqdGhpcykpOworICAgIG1fY2xpZW50LnNldFNob3VsZEJ1ZmZlckRhdGEoUGxh
dGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuc2Vzc2lvbkNhbkxvYWRN
ZWRpYSgqdGhpcykpOwogfQogCiBib29sIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjppc0hpZGRlbigp
IGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9y
bU1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMjkzZjU2NGJjYWM0
YTFiNTNhNTQ5MWZhMDBkZWZkNjczNDRkZmNlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcApAQCAt
MCwwICsxLDMzNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE1IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oIgorCisjaWYgRU5BQkxFKFZJREVP
KQorCisjaW5jbHVkZSAiQXVkaW9TZXNzaW9uLmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2lu
Y2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1NZWRpYVNlc3Npb24u
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisjaWYgIVBMQVRGT1JNKElPUykKK1BsYXRmb3Jt
TWVkaWFTZXNzaW9uTWFuYWdlciYgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRN
YW5hZ2VyKCkKK3sKKyAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoUGxhdGZvcm1N
ZWRpYVNlc3Npb25NYW5hZ2VyLCBtYW5hZ2VyLCAoKSk7CisgICAgcmV0dXJuIG1hbmFnZXI7Cit9
CisjZW5kaWYKKworUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpQbGF0Zm9ybU1lZGlhU2Vz
c2lvbk1hbmFnZXIoKQorICAgIDogbV9zeXN0ZW1TbGVlcExpc3RlbmVyKFN5c3RlbVNsZWVwTGlz
dGVuZXI6OmNyZWF0ZSgqdGhpcykpCit7CisgICAgcmVzZXRSZXN0cmljdGlvbnMoKTsKK30KKwor
dm9pZCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnJlc2V0UmVzdHJpY3Rpb25zKCkKK3sK
KyAgICBtX3Jlc3RyaWN0aW9uc1tQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6VmlkZW9dID0gTm9SZXN0
cmljdGlvbnM7CisgICAgbV9yZXN0cmljdGlvbnNbUGxhdGZvcm1NZWRpYVNlc3Npb246OkF1ZGlv
XSA9IE5vUmVzdHJpY3Rpb25zOworICAgIG1fcmVzdHJpY3Rpb25zW1BsYXRmb3JtTWVkaWFTZXNz
aW9uOjpXZWJBdWRpb10gPSBOb1Jlc3RyaWN0aW9uczsKK30KKworYm9vbCBQbGF0Zm9ybU1lZGlh
U2Vzc2lvbk1hbmFnZXI6OmhhcyhQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlIHR5cGUp
IGNvbnN0Cit7CisgICAgQVNTRVJUKHR5cGUgPj0gUGxhdGZvcm1NZWRpYVNlc3Npb246Ok5vbmUg
JiYgdHlwZSA8PSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6V2ViQXVkaW8pOworCisgICAgZm9yIChh
dXRvKiBzZXNzaW9uIDogbV9zZXNzaW9ucykgeworICAgICAgICBpZiAoc2Vzc2lvbi0+bWVkaWFU
eXBlKCkgPT0gdHlwZSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJl
dHVybiBmYWxzZTsKK30KKworYm9vbCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OmFjdGl2
ZUF1ZGlvU2Vzc2lvblJlcXVpcmVkKCkgY29uc3QKK3sKKyAgICBmb3IgKGF1dG8qIHNlc3Npb24g
OiBtX3Nlc3Npb25zKSB7CisgICAgICAgIGlmIChzZXNzaW9uLT5tZWRpYVR5cGUoKSAhPSBQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6Tm9uZSAmJiBzZXNzaW9uLT5zdGF0ZSgpID09IFBsYXRmb3JtTWVk
aWFTZXNzaW9uOjpTdGF0ZTo6UGxheWluZykKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKyAgICAKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2ludCBQbGF0Zm9ybU1lZGlhU2Vzc2lv
bk1hbmFnZXI6OmNvdW50KFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUgdHlwZSkgY29u
c3QKK3sKKyAgICBBU1NFUlQodHlwZSA+PSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Tm9uZSAmJiB0
eXBlIDw9IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpXZWJBdWRpbyk7CisKKyAgICBpbnQgY291bnQg
PSAwOworICAgIGZvciAoYXV0byogc2Vzc2lvbiA6IG1fc2Vzc2lvbnMpIHsKKyAgICAgICAgaWYg
KHNlc3Npb24tPm1lZGlhVHlwZSgpID09IHR5cGUpCisgICAgICAgICAgICArK2NvdW50OworICAg
IH0KKworICAgIHJldHVybiBjb3VudDsKK30KKwordm9pZCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1h
bmFnZXI6OmJlZ2luSW50ZXJydXB0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpJbnRlcnJ1cHRp
b25UeXBlIHR5cGUpCit7CisgICAgTE9HKE1lZGlhLCAiUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5h
Z2VyOjpiZWdpbkludGVycnVwdGlvbiIpOworCisgICAgbV9pbnRlcnJ1cHRlZCA9IHRydWU7Cisg
ICAgVmVjdG9yPFBsYXRmb3JtTWVkaWFTZXNzaW9uKj4gc2Vzc2lvbnMgPSBtX3Nlc3Npb25zOwor
ICAgIGZvciAoYXV0byogc2Vzc2lvbiA6IHNlc3Npb25zKQorICAgICAgICBzZXNzaW9uLT5iZWdp
bkludGVycnVwdGlvbih0eXBlKTsKKyAgICB1cGRhdGVTZXNzaW9uU3RhdGUoKTsKK30KKwordm9p
ZCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OmVuZEludGVycnVwdGlvbihQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6RW5kSW50ZXJydXB0aW9uRmxhZ3MgZmxhZ3MpCit7CisgICAgTE9HKE1lZGlh
LCAiUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjplbmRJbnRlcnJ1cHRpb24iKTsKKworICAg
IG1faW50ZXJydXB0ZWQgPSBmYWxzZTsKKyAgICBWZWN0b3I8UGxhdGZvcm1NZWRpYVNlc3Npb24q
PiBzZXNzaW9ucyA9IG1fc2Vzc2lvbnM7CisgICAgZm9yIChhdXRvKiBzZXNzaW9uIDogc2Vzc2lv
bnMpCisgICAgICAgIHNlc3Npb24tPmVuZEludGVycnVwdGlvbihmbGFncyk7Cit9CisKK3ZvaWQg
UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjphZGRTZXNzaW9uKFBsYXRmb3JtTWVkaWFTZXNz
aW9uJiBzZXNzaW9uKQoreworICAgIExPRyhNZWRpYSwgIlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFu
YWdlcjo6YWRkU2Vzc2lvbiAtICVwIiwgJnNlc3Npb24pOworICAgIAorICAgIG1fc2Vzc2lvbnMu
YXBwZW5kKCZzZXNzaW9uKTsKKyAgICBpZiAobV9pbnRlcnJ1cHRlZCkKKyAgICAgICAgc2Vzc2lv
bi5zZXRTdGF0ZShQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6SW50ZXJydXB0ZWQpOworCisgICAgaWYg
KCFtX3JlbW90ZUNvbW1hbmRMaXN0ZW5lcikKKyAgICAgICAgbV9yZW1vdGVDb21tYW5kTGlzdGVu
ZXIgPSBSZW1vdGVDb21tYW5kTGlzdGVuZXI6OmNyZWF0ZSgqdGhpcyk7CisKKyAgICBpZiAoIW1f
YXVkaW9IYXJkd2FyZUxpc3RlbmVyKQorICAgICAgICBtX2F1ZGlvSGFyZHdhcmVMaXN0ZW5lciA9
IEF1ZGlvSGFyZHdhcmVMaXN0ZW5lcjo6Y3JlYXRlKCp0aGlzKTsKKworICAgIHVwZGF0ZVNlc3Np
b25TdGF0ZSgpOworfQorCit2b2lkIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6cmVtb3Zl
U2Vzc2lvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbiYgc2Vzc2lvbikKK3sKKyAgICBMT0coTWVkaWEs
ICJQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnJlbW92ZVNlc3Npb24gLSAlcCIsICZzZXNz
aW9uKTsKKyAgICAKKyAgICBzaXplX3QgaW5kZXggPSBtX3Nlc3Npb25zLmZpbmQoJnNlc3Npb24p
OworICAgIEFTU0VSVChpbmRleCAhPSBub3RGb3VuZCk7CisgICAgaWYgKGluZGV4ID09IG5vdEZv
dW5kKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgbV9zZXNzaW9ucy5yZW1vdmUoaW5kZXgp
OworCisgICAgaWYgKG1fc2Vzc2lvbnMuaXNFbXB0eSgpKSB7CisgICAgICAgIG1fcmVtb3RlQ29t
bWFuZExpc3RlbmVyID0gbnVsbHB0cjsKKyAgICAgICAgbV9hdWRpb0hhcmR3YXJlTGlzdGVuZXIg
PSBudWxscHRyOworICAgIH0KKworICAgIHVwZGF0ZVNlc3Npb25TdGF0ZSgpOworfQorCit2b2lk
IFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6YWRkUmVzdHJpY3Rpb24oUGxhdGZvcm1NZWRp
YVNlc3Npb246Ok1lZGlhVHlwZSB0eXBlLCBTZXNzaW9uUmVzdHJpY3Rpb25zIHJlc3RyaWN0aW9u
KQoreworICAgIEFTU0VSVCh0eXBlID4gUGxhdGZvcm1NZWRpYVNlc3Npb246Ok5vbmUgJiYgdHlw
ZSA8PSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6V2ViQXVkaW8pOworICAgIG1fcmVzdHJpY3Rpb25z
W3R5cGVdIHw9IHJlc3RyaWN0aW9uOworfQorCit2b2lkIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFu
YWdlcjo6cmVtb3ZlUmVzdHJpY3Rpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246Ok1lZGlhVHlwZSB0
eXBlLCBTZXNzaW9uUmVzdHJpY3Rpb25zIHJlc3RyaWN0aW9uKQoreworICAgIEFTU0VSVCh0eXBl
ID4gUGxhdGZvcm1NZWRpYVNlc3Npb246Ok5vbmUgJiYgdHlwZSA8PSBQbGF0Zm9ybU1lZGlhU2Vz
c2lvbjo6V2ViQXVkaW8pOworICAgIG1fcmVzdHJpY3Rpb25zW3R5cGVdICY9IH5yZXN0cmljdGlv
bjsKK30KKworUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpTZXNzaW9uUmVzdHJpY3Rpb25z
IFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6cmVzdHJpY3Rpb25zKFBsYXRmb3JtTWVkaWFT
ZXNzaW9uOjpNZWRpYVR5cGUgdHlwZSkKK3sKKyAgICBBU1NFUlQodHlwZSA+IFBsYXRmb3JtTWVk
aWFTZXNzaW9uOjpOb25lICYmIHR5cGUgPD0gUGxhdGZvcm1NZWRpYVNlc3Npb246OldlYkF1ZGlv
KTsKKyAgICByZXR1cm4gbV9yZXN0cmljdGlvbnNbdHlwZV07Cit9CisKK2Jvb2wgUGxhdGZvcm1N
ZWRpYVNlc3Npb25NYW5hZ2VyOjpzZXNzaW9uV2lsbEJlZ2luUGxheWJhY2soUGxhdGZvcm1NZWRp
YVNlc3Npb24mIHNlc3Npb24pCit7CisgICAgTE9HKE1lZGlhLCAiUGxhdGZvcm1NZWRpYVNlc3Np
b25NYW5hZ2VyOjpzZXNzaW9uV2lsbEJlZ2luUGxheWJhY2sgLSAlcCIsICZzZXNzaW9uKTsKKyAg
ICAKKyAgICBzZXRDdXJyZW50U2Vzc2lvbihzZXNzaW9uKTsKKworICAgIFBsYXRmb3JtTWVkaWFT
ZXNzaW9uOjpNZWRpYVR5cGUgc2Vzc2lvblR5cGUgPSBzZXNzaW9uLm1lZGlhVHlwZSgpOworICAg
IFNlc3Npb25SZXN0cmljdGlvbnMgcmVzdHJpY3Rpb25zID0gbV9yZXN0cmljdGlvbnNbc2Vzc2lv
blR5cGVdOworICAgIGlmIChzZXNzaW9uLnN0YXRlKCkgPT0gUGxhdGZvcm1NZWRpYVNlc3Npb246
OkludGVycnVwdGVkICYmIHJlc3RyaWN0aW9ucyAmIEludGVycnVwdGVkUGxheWJhY2tOb3RQZXJt
aXR0ZWQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworI2lmIFVTRShBVURJT19TRVNTSU9OKQor
ICAgIGlmIChhY3RpdmVBdWRpb1Nlc3Npb25SZXF1aXJlZCgpICYmICFBdWRpb1Nlc3Npb246OnNo
YXJlZFNlc3Npb24oKS50cnlUb1NldEFjdGl2ZSh0cnVlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworI2VuZGlmCisKKyAgICBpZiAobV9pbnRlcnJ1cHRlZCkKKyAgICAgICAgZW5kSW50ZXJydXB0
aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpOb0ZsYWdzKTsKKworICAgIFZlY3RvcjxQbGF0Zm9y
bU1lZGlhU2Vzc2lvbio+IHNlc3Npb25zID0gbV9zZXNzaW9uczsKKyAgICBmb3IgKGF1dG8qIG9u
ZVNlc3Npb24gOiBzZXNzaW9ucykgeworICAgICAgICBpZiAob25lU2Vzc2lvbiA9PSAmc2Vzc2lv
bikKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAob25lU2Vzc2lvbi0+bWVkaWFU
eXBlKCkgPT0gc2Vzc2lvblR5cGUgJiYgcmVzdHJpY3Rpb25zICYgQ29uY3VycmVudFBsYXliYWNr
Tm90UGVybWl0dGVkKQorICAgICAgICAgICAgb25lU2Vzc2lvbi0+cGF1c2VTZXNzaW9uKCk7Cisg
ICAgfQorCisgICAgdXBkYXRlU2Vzc2lvblN0YXRlKCk7CisgICAgcmV0dXJuIHRydWU7Cit9Cisg
ICAgCit2b2lkIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2Vzc2lvbldpbGxFbmRQbGF5
YmFjayhQbGF0Zm9ybU1lZGlhU2Vzc2lvbiYgc2Vzc2lvbikKK3sKKyAgICBMT0coTWVkaWEsICJQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNlc3Npb25XaWxsRW5kUGxheWJhY2sgLSAlcCIs
ICZzZXNzaW9uKTsKKyAgICAKKyAgICBpZiAobV9zZXNzaW9ucy5zaXplKCkgPCAyKQorICAgICAg
ICByZXR1cm47CisgICAgCisgICAgc2l6ZV90IHBhdXNpbmdTZXNzaW9uSW5kZXggPSBub3RGb3Vu
ZDsKKyAgICBzaXplX3QgbGFzdFBsYXlpbmdTZXNzaW9uSW5kZXggPSBub3RGb3VuZDsKKyAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG1fc2Vzc2lvbnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAg
UGxhdGZvcm1NZWRpYVNlc3Npb24qIG9uZVNlc3Npb24gPSBtX3Nlc3Npb25zW2ldOworICAgICAg
ICAKKyAgICAgICAgaWYgKG9uZVNlc3Npb24gPT0gJnNlc3Npb24pIHsKKyAgICAgICAgICAgIHBh
dXNpbmdTZXNzaW9uSW5kZXggPSBpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0K
KyAgICAgICAgaWYgKG9uZVNlc3Npb24tPnN0YXRlKCkgPT0gUGxhdGZvcm1NZWRpYVNlc3Npb246
OlBsYXlpbmcpIHsKKyAgICAgICAgICAgIGxhc3RQbGF5aW5nU2Vzc2lvbkluZGV4ID0gaTsKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGlmIChvbmVTZXNzaW9uLT5z
dGF0ZSgpICE9IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQbGF5aW5nKQorICAgICAgICAgICAgYnJl
YWs7CisgICAgfQorICAgIGlmIChsYXN0UGxheWluZ1Nlc3Npb25JbmRleCA9PSBub3RGb3VuZCB8
fCBwYXVzaW5nU2Vzc2lvbkluZGV4ID09IG5vdEZvdW5kKQorICAgICAgICByZXR1cm47CisgICAg
CisgICAgaWYgKHBhdXNpbmdTZXNzaW9uSW5kZXggPiBsYXN0UGxheWluZ1Nlc3Npb25JbmRleCkK
KyAgICAgICAgcmV0dXJuOworICAgIAorICAgIG1fc2Vzc2lvbnMucmVtb3ZlKHBhdXNpbmdTZXNz
aW9uSW5kZXgpOworICAgIG1fc2Vzc2lvbnMuaW5zZXJ0KGxhc3RQbGF5aW5nU2Vzc2lvbkluZGV4
LCAmc2Vzc2lvbik7CisgICAgCisgICAgTE9HKE1lZGlhLCAiUGxhdGZvcm1NZWRpYVNlc3Npb25N
YW5hZ2VyOjpzZXNzaW9uV2lsbEVuZFBsYXliYWNrIC0gc2Vzc2lvbiBtb3ZlZCBmcm9tIGluZGV4
ICV6dSB0byAlenUiLCBwYXVzaW5nU2Vzc2lvbkluZGV4LCBsYXN0UGxheWluZ1Nlc3Npb25JbmRl
eCk7Cit9CisKK3ZvaWQgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpzZXRDdXJyZW50U2Vz
c2lvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbiYgc2Vzc2lvbikKK3sKKyAgICBMT0coTWVkaWEsICJQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNldEN1cnJlbnRTZXNzaW9uIC0gJXAiLCAmc2Vz
c2lvbik7CisgICAgCisgICAgaWYgKG1fc2Vzc2lvbnMuc2l6ZSgpIDwgMikKKyAgICAgICAgcmV0
dXJuOworICAgIAorICAgIHNpemVfdCBpbmRleCA9IG1fc2Vzc2lvbnMuZmluZCgmc2Vzc2lvbik7
CisgICAgQVNTRVJUKGluZGV4ICE9IG5vdEZvdW5kKTsKKyAgICBpZiAoIWluZGV4IHx8IGluZGV4
ID09IG5vdEZvdW5kKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3Nlc3Npb25zLnJlbW92ZShp
bmRleCk7CisgICAgbV9zZXNzaW9ucy5pbnNlcnQoMCwgJnNlc3Npb24pOworICAgIAorICAgIExP
RyhNZWRpYSwgIlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2V0Q3VycmVudFNlc3Npb24g
LSBzZXNzaW9uIG1vdmVkIGZyb20gaW5kZXggJXp1IHRvIDAiLCBpbmRleCk7Cit9CisgICAgCitQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbiogUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpjdXJyZW50
U2Vzc2lvbigpCit7CisgICAgaWYgKCFtX3Nlc3Npb25zLnNpemUoKSkKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisKKyAgICByZXR1cm4gbV9zZXNzaW9uc1swXTsKK30KKyAgICAKK2Jvb2wgUGxh
dGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpzZXNzaW9uUmVzdHJpY3RzSW5saW5lVmlkZW9QbGF5
YmFjayhjb25zdCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbiYgc2Vzc2lvbikgY29uc3QKK3sKKyAgICBQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlIHNlc3Npb25UeXBlID0gc2Vzc2lvbi5wcmVz
ZW50YXRpb25UeXBlKCk7CisgICAgaWYgKHNlc3Npb25UeXBlICE9IFBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpWaWRlbykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIG1fcmVzdHJp
Y3Rpb25zW3Nlc3Npb25UeXBlXSAmIElubGluZVZpZGVvUGxheWJhY2tSZXN0cmljdGVkOworfQor
Citib29sIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2Vzc2lvbkNhbkxvYWRNZWRpYShj
b25zdCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbiYgc2Vzc2lvbikgY29uc3QKK3sKKyAgICByZXR1cm4g
c2Vzc2lvbi5zdGF0ZSgpID09IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQbGF5aW5nIHx8ICFzZXNz
aW9uLmlzSGlkZGVuKCkgfHwgc2Vzc2lvbi5pc1BsYXlpbmdUb1dpcmVsZXNzUGxheWJhY2tUYXJn
ZXQoKTsKK30KKwordm9pZCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OmFwcGxpY2F0aW9u
V2lsbEVudGVyQmFja2dyb3VuZCgpIGNvbnN0Cit7CisgICAgTE9HKE1lZGlhLCAiUGxhdGZvcm1N
ZWRpYVNlc3Npb25NYW5hZ2VyOjphcHBsaWNhdGlvbldpbGxFbnRlckJhY2tncm91bmQiKTsKKyAg
ICBWZWN0b3I8UGxhdGZvcm1NZWRpYVNlc3Npb24qPiBzZXNzaW9ucyA9IG1fc2Vzc2lvbnM7Cisg
ICAgZm9yIChhdXRvKiBzZXNzaW9uIDogc2Vzc2lvbnMpIHsKKyAgICAgICAgaWYgKG1fcmVzdHJp
Y3Rpb25zW3Nlc3Npb24tPm1lZGlhVHlwZSgpXSAmIEJhY2tncm91bmRQcm9jZXNzUGxheWJhY2tS
ZXN0cmljdGVkKQorICAgICAgICAgICAgc2Vzc2lvbi0+YmVnaW5JbnRlcnJ1cHRpb24oUGxhdGZv
cm1NZWRpYVNlc3Npb246OkVudGVyaW5nQmFja2dyb3VuZCk7CisgICAgfQorfQorCit2b2lkIFBs
YXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6YXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5k
KCkgY29uc3QKK3sKKyAgICBMT0coTWVkaWEsICJQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6
OmFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZCIpOworICAgIFZlY3RvcjxQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbio+IHNlc3Npb25zID0gbV9zZXNzaW9uczsKKyAgICBmb3IgKGF1dG8qIHNlc3Np
b24gOiBzZXNzaW9ucykgeworICAgICAgICBpZiAobV9yZXN0cmljdGlvbnNbc2Vzc2lvbi0+bWVk
aWFUeXBlKCldICYgQmFja2dyb3VuZFByb2Nlc3NQbGF5YmFja1Jlc3RyaWN0ZWQpCisgICAgICAg
ICAgICBzZXNzaW9uLT5lbmRJbnRlcnJ1cHRpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246Ok1heVJl
c3VtZVBsYXlpbmcpOworICAgIH0KK30KKworI2lmICFQTEFURk9STShDT0NPQSkKK3ZvaWQgUGxh
dGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjp1cGRhdGVTZXNzaW9uU3RhdGUoKQoreworfQorI2Vu
ZGlmCisKK3ZvaWQgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpkaWRSZWNlaXZlUmVtb3Rl
Q29udHJvbENvbW1hbmQoUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5k
VHlwZSBjb21tYW5kKQoreworICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uKiBhY3RpdmVTZXNzaW9u
ID0gY3VycmVudFNlc3Npb24oKTsKKyAgICBpZiAoIWFjdGl2ZVNlc3Npb24gfHwgIWFjdGl2ZVNl
c3Npb24tPmNhblJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZHMoKSkKKyAgICAgICAgcmV0dXJu
OworICAgIGFjdGl2ZVNlc3Npb24tPmRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChjb21t
YW5kKTsKK30KKwordm9pZCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnN5c3RlbVdpbGxT
bGVlcCgpCit7CisgICAgaWYgKG1faW50ZXJydXB0ZWQpCisgICAgICAgIHJldHVybjsKKworICAg
IGZvciAoYXV0byBzZXNzaW9uIDogbV9zZXNzaW9ucykKKyAgICAgICAgc2Vzc2lvbi0+YmVnaW5J
bnRlcnJ1cHRpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246OlN5c3RlbVNsZWVwKTsKK30KKwordm9p
ZCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnN5c3RlbURpZFdha2UoKQoreworICAgIGlm
IChtX2ludGVycnVwdGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBmb3IgKGF1dG8gc2Vzc2lv
biA6IG1fc2Vzc2lvbnMpCisgICAgICAgIHNlc3Npb24tPmVuZEludGVycnVwdGlvbihQbGF0Zm9y
bU1lZGlhU2Vzc2lvbjo6TWF5UmVzdW1lUGxheWluZyk7Cit9CisKK3ZvaWQgUGxhdGZvcm1NZWRp
YVNlc3Npb25NYW5hZ2VyOjphdWRpb091dHB1dERldmljZUNoYW5nZWQoKQoreworICAgIHVwZGF0
ZVNlc3Npb25TdGF0ZSgpOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4yZDc0OGEwYmJmNTJjN2I1YTZmOTZkNmJlMTYwZWFiYzEyM2Q0NmQ4Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRp
YVNlc3Npb25NYW5hZ2VyLmgKQEAgLTAsMCArMSwxMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyX2gKKyNkZWZpbmUgUGxhdGZvcm1NZWRp
YVNlc3Npb25NYW5hZ2VyX2gKKworI2luY2x1ZGUgIkF1ZGlvSGFyZHdhcmVMaXN0ZW5lci5oIgor
I2luY2x1ZGUgIlBsYXRmb3JtTWVkaWFTZXNzaW9uLmgiCisjaW5jbHVkZSAiUmVtb3RlQ29tbWFu
ZExpc3RlbmVyLmgiCisjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNsdWRlICJTeXN0ZW1TbGVl
cExpc3RlbmVyLmgiCisjaW5jbHVkZSA8bWFwPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBIVE1MTWVkaWFFbGVtZW50OworY2xhc3MgUGxh
dGZvcm1NZWRpYVNlc3Npb247CitjbGFzcyBSZW1vdGVDb21tYW5kTGlzdGVuZXI7CisKK2NsYXNz
IFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlciA6IHByaXZhdGUgUmVtb3RlQ29tbWFuZExpc3Rl
bmVyQ2xpZW50LCBwcml2YXRlIFN5c3RlbVNsZWVwTGlzdGVuZXI6OkNsaWVudCwgcHJpdmF0ZSBB
dWRpb0hhcmR3YXJlTGlzdGVuZXI6OkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CitwdWJsaWM6CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFBsYXRmb3JtTWVkaWFTZXNz
aW9uTWFuYWdlciYgc2hhcmVkTWFuYWdlcigpOworICAgIHZpcnR1YWwgflBsYXRmb3JtTWVkaWFT
ZXNzaW9uTWFuYWdlcigpIHsgfQorCisgICAgYm9vbCBoYXMoUGxhdGZvcm1NZWRpYVNlc3Npb246
Ok1lZGlhVHlwZSkgY29uc3Q7CisgICAgaW50IGNvdW50KFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpN
ZWRpYVR5cGUpIGNvbnN0OworICAgIGJvb2wgYWN0aXZlQXVkaW9TZXNzaW9uUmVxdWlyZWQoKSBj
b25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYmVnaW5JbnRlcnJ1cHRpb24oUGxhdGZv
cm1NZWRpYVNlc3Npb246OkludGVycnVwdGlvblR5cGUpOworICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgZW5kSW50ZXJydXB0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpFbmRJbnRlcnJ1cHRpb25G
bGFncyk7CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGxpY2F0aW9uV2lsbEVudGVyRm9y
ZWdyb3VuZCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwbGljYXRpb25XaWxs
RW50ZXJCYWNrZ3JvdW5kKCkgY29uc3Q7CisKKyAgICBlbnVtIFNlc3Npb25SZXN0cmljdGlvbkZs
YWdzIHsKKyAgICAgICAgTm9SZXN0cmljdGlvbnMgPSAwLAorICAgICAgICBDb25jdXJyZW50UGxh
eWJhY2tOb3RQZXJtaXR0ZWQgPSAxIDw8IDAsCisgICAgICAgIElubGluZVZpZGVvUGxheWJhY2tS
ZXN0cmljdGVkID0gMSA8PCAxLAorICAgICAgICBNZXRhZGF0YVByZWxvYWRpbmdOb3RQZXJtaXR0
ZWQgPSAxIDw8IDIsCisgICAgICAgIEF1dG9QcmVsb2FkaW5nTm90UGVybWl0dGVkID0gMSA8PCAz
LAorICAgICAgICBCYWNrZ3JvdW5kUHJvY2Vzc1BsYXliYWNrUmVzdHJpY3RlZCA9IDEgPDwgNCwK
KyAgICAgICAgQmFja2dyb3VuZFRhYlBsYXliYWNrUmVzdHJpY3RlZCA9IDEgPDwgNSwKKyAgICAg
ICAgSW50ZXJydXB0ZWRQbGF5YmFja05vdFBlcm1pdHRlZCA9IDEgPDwgNiwKKyAgICB9OworICAg
IHR5cGVkZWYgdW5zaWduZWQgU2Vzc2lvblJlc3RyaWN0aW9uczsKKworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgYWRkUmVzdHJpY3Rpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246Ok1lZGlhVHlwZSwg
U2Vzc2lvblJlc3RyaWN0aW9ucyk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVSZXN0
cmljdGlvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlLCBTZXNzaW9uUmVzdHJpY3Rp
b25zKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBTZXNzaW9uUmVzdHJpY3Rpb25zIHJlc3RyaWN0aW9u
cyhQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVz
ZXRSZXN0cmljdGlvbnMoKTsKKworICAgIHZpcnR1YWwgYm9vbCBzZXNzaW9uV2lsbEJlZ2luUGxh
eWJhY2soUGxhdGZvcm1NZWRpYVNlc3Npb24mKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2Vzc2lvbldp
bGxFbmRQbGF5YmFjayhQbGF0Zm9ybU1lZGlhU2Vzc2lvbiYpOworCisgICAgYm9vbCBzZXNzaW9u
UmVzdHJpY3RzSW5saW5lVmlkZW9QbGF5YmFjayhjb25zdCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbiYp
IGNvbnN0OworCisgICAgdmlydHVhbCBib29sIHNlc3Npb25DYW5Mb2FkTWVkaWEoY29uc3QgUGxh
dGZvcm1NZWRpYVNlc3Npb24mKSBjb25zdDsKKworI2lmIFBMQVRGT1JNKElPUykKKyAgICB2aXJ0
dWFsIHZvaWQgY29uZmlndXJlV2lyZUxlc3NUYXJnZXRNb25pdG9yaW5nKCkgeyB9CisgICAgdmly
dHVhbCBib29sIGhhc1dpcmVsZXNzVGFyZ2V0c0F2YWlsYWJsZSgpIHsgcmV0dXJuIGZhbHNlOyB9
CisjZW5kaWYKKworICAgIHZvaWQgc2V0Q3VycmVudFNlc3Npb24oUGxhdGZvcm1NZWRpYVNlc3Np
b24mKTsKKyAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbiogY3VycmVudFNlc3Npb24oKTsKKworcHJv
dGVjdGVkOgorICAgIGZyaWVuZCBjbGFzcyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjsKKyAgICBleHBs
aWNpdCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIoKTsKKworICAgIHZvaWQgYWRkU2Vzc2lv
bihQbGF0Zm9ybU1lZGlhU2Vzc2lvbiYpOworICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbihQbGF0Zm9y
bU1lZGlhU2Vzc2lvbiYpOworCisgICAgVmVjdG9yPFBsYXRmb3JtTWVkaWFTZXNzaW9uKj4gc2Vz
c2lvbnMoKSB7IHJldHVybiBtX3Nlc3Npb25zOyB9CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNs
YXNzIEludGVybmFsczsKKworICAgIHZvaWQgdXBkYXRlU2Vzc2lvblN0YXRlKCk7CisKKyAgICAv
LyBSZW1vdGVDb21tYW5kTGlzdGVuZXJDbGllbnQKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFs
IHZvaWQgZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKFBsYXRmb3JtTWVkaWFTZXNzaW9u
OjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUpIG92ZXJyaWRlOworCisgICAgLy8gQXVkaW9IYXJk
d2FyZUxpc3RlbmVyQ2xpZW50CisgICAgdmlydHVhbCB2b2lkIGF1ZGlvSGFyZHdhcmVEaWRCZWNv
bWVBY3RpdmUoKSBvdmVycmlkZSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgYXVkaW9IYXJkd2FyZURp
ZEJlY29tZUluYWN0aXZlKCkgb3ZlcnJpZGUgeyB9CisgICAgdmlydHVhbCB2b2lkIGF1ZGlvT3V0
cHV0RGV2aWNlQ2hhbmdlZCgpIG92ZXJyaWRlOworCisgICAgLy8gU3lzdGVtU2xlZXBMaXN0ZW5l
cgorICAgIHZpcnR1YWwgdm9pZCBzeXN0ZW1XaWxsU2xlZXAoKSBvdmVycmlkZTsKKyAgICB2aXJ0
dWFsIHZvaWQgc3lzdGVtRGlkV2FrZSgpIG92ZXJyaWRlOworCisgICAgU2Vzc2lvblJlc3RyaWN0
aW9ucyBtX3Jlc3RyaWN0aW9uc1tQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6V2ViQXVkaW8gKyAxXTsK
KyAgICBWZWN0b3I8UGxhdGZvcm1NZWRpYVNlc3Npb24qPiBtX3Nlc3Npb25zOworICAgIHN0ZDo6
dW5pcXVlX3B0cjxSZW1vdGVDb21tYW5kTGlzdGVuZXI+IG1fcmVtb3RlQ29tbWFuZExpc3RlbmVy
OworICAgIHN0ZDo6dW5pcXVlX3B0cjxTeXN0ZW1TbGVlcExpc3RlbmVyPiBtX3N5c3RlbVNsZWVw
TGlzdGVuZXI7CisgICAgUmVmUHRyPEF1ZGlvSGFyZHdhcmVMaXN0ZW5lcj4gbV9hdWRpb0hhcmR3
YXJlTGlzdGVuZXI7CisKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAh
UExBVEZPUk0oSU9TKQorICAgIFJlZlB0cjxNZWRpYVBsYXliYWNrVGFyZ2V0PiBtX3BsYXliYWNr
VGFyZ2V0OworICAgIGJvb2wgbV9jYW5QbGF5VG9UYXJnZXQgeyBmYWxzZSB9OworI2VuZGlmCisK
KyAgICBib29sIG1faW50ZXJydXB0ZWQgeyBmYWxzZSB9OworfTsKKworfQorCisjZW5kaWYgLy8g
UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmNwcAppbmRleCBkYzNh
MWI1NGVkNDNiNzQyODk4ZTU5MzlhN2FkY2ZjMzhmNGUxNTNjLi42ODM0NGUwN2Q5OTYyMWE3Y2Nh
NWMzZmFlODk1YWRiMjYwZThlMWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRGVzdGluYXRpb25NYWMuY3BwCkBAIC0zOCw3ICszOCw3
IEBACiAjaW5jbHVkZSAiQXVkaW9TZXNzaW9uLmgiCiAjaW5jbHVkZSAiRmxvYXRDb252ZXJzaW9u
LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgotI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbk1hbmFnZXIu
aCIKKyNpbmNsdWRlICJQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaCIKICNpbmNsdWRlICJW
ZWN0b3JNYXRoLmgiCiAjaW5jbHVkZSA8Q29yZUF1ZGlvL0F1ZGlvSGFyZHdhcmUuaD4KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL01lZGlhU2Vzc2lvbk1h
bmFnZXJNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL01lZGlhU2Vz
c2lvbk1hbmFnZXJNYWMuY3BwCmluZGV4IGUyNzQ0MTg4MDliN2Q0NTE1MmZmYTNiZGFjMDlmNjRl
NjI5YjQxN2EuLmIzODllZWRmYWVlMDYyNDk0YjM5ZDEzYjRjN2QzOGYxNDFkNjRiNjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9NZWRpYVNlc3Npb25NYW5h
Z2VyTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvTWVkaWFT
ZXNzaW9uTWFuYWdlck1hYy5jcHAKQEAgLTI0LDcgKzI0LDcgQEAKICAqLwogCiAjaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiTWVkaWFTZXNzaW9uTWFuYWdlci5oIgorI2luY2x1ZGUgIlBs
YXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oIgogCiAjaWYgVVNFKEFVRElPX1NFU1NJT04pCiAK
QEAgLTM3LDkgKzM3LDkgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiBzdGF0aWMgY29uc3Qg
c2l6ZV90IGtXZWJBdWRpb0J1ZmZlclNpemUgPSAxMjg7CiBzdGF0aWMgY29uc3Qgc2l6ZV90IGtM
b3dQb3dlclZpZGVvQnVmZmVyU2l6ZSA9IDQwOTY7CiAKLXZvaWQgTWVkaWFTZXNzaW9uTWFuYWdl
cjo6dXBkYXRlU2Vzc2lvblN0YXRlKCkKK3ZvaWQgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2Vy
Ojp1cGRhdGVTZXNzaW9uU3RhdGUoKQogewotICAgIExPRyhNZWRpYSwgIk1lZGlhU2Vzc2lvbk1h
bmFnZXI6OnVwZGF0ZVNlc3Npb25TdGF0ZSgpIC0gdHlwZXM6IFZpZGVvKCVkKSwgQXVkaW8oJWQp
LCBXZWJBdWRpbyglZCkiLCBjb3VudChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6VmlkZW8pLCBjb3Vu
dChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6QXVkaW8pLCBjb3VudChQbGF0Zm9ybU1lZGlhU2Vzc2lv
bjo6V2ViQXVkaW8pKTsKKyAgICBMT0coTWVkaWEsICJQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFn
ZXI6OnVwZGF0ZVNlc3Npb25TdGF0ZSgpIC0gdHlwZXM6IFZpZGVvKCVkKSwgQXVkaW8oJWQpLCBX
ZWJBdWRpbyglZCkiLCBjb3VudChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6VmlkZW8pLCBjb3VudChQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbjo6QXVkaW8pLCBjb3VudChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6
V2ViQXVkaW8pKTsKIAogICAgIGlmIChoYXMoUGxhdGZvcm1NZWRpYVNlc3Npb246OldlYkF1ZGlv
KSkKICAgICAgICAgQXVkaW9TZXNzaW9uOjpzaGFyZWRTZXNzaW9uKCkuc2V0UHJlZmVycmVkQnVm
ZmVyU2l6ZShrV2ViQXVkaW9CdWZmZXJTaXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmNwcAppbmRleCBlNTdkYzE5YzJmOWFlZDUyNTYxMjc4MmQzZjAyODhkYzE0MDdiN2Y0Li4zNDlm
ZjlmMmUwYzdiZjVhOTAwZmJiMmUyN2Q2ZjUyZGZiNzE1M2Y1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwCkBAIC03OSw3ICs3OSw2IEBACiAjaW5jbHVkZSAiTWFpbkZyYW1lLmgi
CiAjaW5jbHVkZSAiTWFsbG9jU3RhdGlzdGljcy5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgi
Ci0jaW5jbHVkZSAiTWVkaWFTZXNzaW9uTWFuYWdlci5oIgogI2luY2x1ZGUgIk1lbW9yeUNhY2hl
LmgiCiAjaW5jbHVkZSAiTWVtb3J5SW5mby5oIgogI2luY2x1ZGUgIk1pY3JvVGFzay5oIgpAQCAt
ODgsNiArODcsNyBAQAogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYWdlQ2FjaGUuaCIK
ICNpbmNsdWRlICJQYWdlT3ZlcmxheS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtTWVkaWFTZXNzaW9u
TWFuYWdlci5oIgogI2luY2x1ZGUgIlByaW50Q29udGV4dC5oIgogI2luY2x1ZGUgIlBzZXVkb0Vs
ZW1lbnQuaCIKICNpbmNsdWRlICJSYW5nZS5oIgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>254287</attachid>
            <date>2015-06-04 12:28:24 -0700</date>
            <delta_ts>2015-06-04 13:08:26 -0700</delta_ts>
            <desc>Patch (build fixes)</desc>
            <filename>bug-145648-20150604122807.patch</filename>
            <type>text/plain</type>
            <size>63124</size>
            <attacher name="Matt Rajca">mrajca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg1MjAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjljYzA4MmY3M2IyYWM0
ZjRkMzQ5NWQxZDE4NmU2NmFhOTg0ZWJmZS4uMGNkNTQ0ZjY4YzRjMjJjZDIxMjI0MmRjZjA2Nzc5
YzY1ZWJkZTJiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDE1LTA2LTA0ICBNYXR0
IFJhamNhICA8bXJhamNhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgTWVkaWFTZXNzaW9u
TWFuYWdlciB0byBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIgZm9yIGNvbnNpc3RlbmN5IHdp
dGggUGxhdGZvcm1NZWRpYVNlc3Npb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNDU2NDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2o6CisgICAg
ICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAq
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBodG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAqIGh0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVsZW1lbnRTZXNzaW9uOjplZmZlY3RpdmVQcmVsb2Fk
Rm9yRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVsZW1lbnRTZXNzaW9uOjpyZXF1
aXJlc0Z1bGxzY3JlZW5Gb3JWaWRlb1BsYXliYWNrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRp
by9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6UGxhdGZvcm1NZWRpYVNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6UGxh
dGZvcm1NZWRpYVNlc3Npb246On5QbGF0Zm9ybU1lZGlhU2Vzc2lvbik6CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Y2xpZW50V2lsbEJlZ2luUGxheWJhY2spOgorICAg
ICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb246OmNsaWVudFdpbGxQYXVzZVBsYXli
YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpjbGllbnREYXRh
QnVmZmVyaW5nVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vz
c2lvbjo6dXBkYXRlQ2xpZW50RGF0YUJ1ZmZlcmluZyk6CisgICAgICAgICogcGxhdGZvcm0vYXVk
aW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwLgorICAgICAgICAo
V2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6UGxhdGZvcm1NZWRp
YVNlc3Npb25NYW5hZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9u
TWFuYWdlcjo6cmVzZXRSZXN0cmljdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1N
ZWRpYVNlc3Npb25NYW5hZ2VyOjpoYXMpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRp
YVNlc3Npb25NYW5hZ2VyOjphY3RpdmVBdWRpb1Nlc3Npb25SZXF1aXJlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNvdW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6YmVnaW5JbnRlcnJ1cHRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjplbmRJbnRlcnJ1
cHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjph
ZGRTZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdl
cjo6cmVtb3ZlU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lv
bk1hbmFnZXI6OmFkZFJlc3RyaWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVk
aWFTZXNzaW9uTWFuYWdlcjo6cmVtb3ZlUmVzdHJpY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpyZXN0cmljdGlvbnMpOgorICAgICAgICAoV2Vi
Q29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpzZXNzaW9uV2lsbEJlZ2luUGxheWJh
Y2spOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpzZXNz
aW9uV2lsbEVuZFBsYXliYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNz
aW9uTWFuYWdlcjo6c2V0Q3VycmVudFNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpjdXJyZW50U2Vzc2lvbik6CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNlc3Npb25SZXN0cmljdHNJbmxpbmVWaWRl
b1BsYXliYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdl
cjo6c2Vzc2lvbkNhbkxvYWRNZWRpYSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlh
U2Vzc2lvbk1hbmFnZXI6OmFwcGxpY2F0aW9uV2lsbEVudGVyQmFja2dyb3VuZCk6CisgICAgICAg
IChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OmFwcGxpY2F0aW9uV2lsbEVu
dGVyRm9yZWdyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1h
bmFnZXI6OnVwZGF0ZVNlc3Npb25TdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbk1hbmFnZXI6OmRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZCk6CisgICAg
ICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnN5c3RlbVdpbGxTbGVl
cCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnN5c3Rl
bURpZFdha2UpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2Vy
OjphdWRpb091dHB1dERldmljZUNoYW5nZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1Bs
YXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uTWFuYWdlci5oLgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjp+UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2Vy
KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6Y29uZmln
dXJlV2lyZUxlc3NUYXJnZXRNb25pdG9yaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
TWVkaWFTZXNzaW9uTWFuYWdlcjo6aGFzV2lyZWxlc3NUYXJnZXRzQXZhaWxhYmxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2Vzc2lvbnMpOgorICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9hdWRpby9tYWMvTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5jcHA6CisgICAg
ICAgIChQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnVwZGF0ZVNlc3Npb25TdGF0ZSk6Cisg
ICAgICAgIChNZWRpYVNlc3Npb25NYW5hZ2VyOjp1cGRhdGVTZXNzaW9uU3RhdGUpOiBEZWxldGVk
LgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKwogMjAxNS0wNi0wNCAgTXlsZXMg
Qy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gQ2xl
YW4gdXAgbV9mb250IGluc2lkZSBGb250UGxhdGZvcm1EYXRhCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cmlu
ZGV4IGUzYThkOGQ1Zjk5ZTNjM2I3YzZjOTc2ZGU2M2VmYTQyMWFmOTUxNWIuLmE0NTg1MzdhNzBi
NGY0ZjgxOWUxYzA1OTUxN2MxMjA1M2E2YTEyMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0y
MTExLDEwICsyMTExLDEwIEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9hdWRp
by9IUlRGRWxldmF0aW9uLmNwcAogICAgIHBsYXRmb3JtL2F1ZGlvL0hSVEZLZXJuZWwuY3BwCiAg
ICAgcGxhdGZvcm0vYXVkaW8vSFJURlBhbm5lci5jcHAKLSAgICBwbGF0Zm9ybS9hdWRpby9NZWRp
YVNlc3Npb25NYW5hZ2VyLmNwcAogICAgIHBsYXRmb3JtL2F1ZGlvL011bHRpQ2hhbm5lbFJlc2Ft
cGxlci5jcHAKICAgICBwbGF0Zm9ybS9hdWRpby9QYW5uZXIuY3BwCiAgICAgcGxhdGZvcm0vYXVk
aW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uY3BwCisgICAgcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1N
ZWRpYVNlc3Npb25NYW5hZ2VyLmNwcAogICAgIHBsYXRmb3JtL2F1ZGlvL1JldmVyYi5jcHAKICAg
ICBwbGF0Zm9ybS9hdWRpby9SZXZlcmJBY2N1bXVsYXRpb25CdWZmZXIuY3BwCiAgICAgcGxhdGZv
cm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
dmN4cHJvai9XZWJDb3JlLnZjeHByb2oKaW5kZXggNDZmZjMyZGU2OWUyZDdmMTNmMTY4ZmVkZjQw
NWJkZjBhMTc4MTZlZS4uMmNmZTUzZWMyOGIxZTM5MWQ4NjlhNjE0OTExYzIwYjgzNTFiNGNhNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJv
agorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCkBA
IC03Mzk2LDcgKzczOTYsNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1c
Z3JhcGhpY3NcSVNPVlRUQ3VlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBs
YXRmb3JtXGF1ZGlvXEF1ZGlvU2Vzc2lvbi5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxwbGF0Zm9ybVxhdWRpb1xQbGF0Zm9ybU1lZGlhU2Vzc2lvbi5jcHAiIC8+Ci0gICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxhdWRpb1xNZWRpYVNlc3Npb25NYW5hZ2VyLmNw
cCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGF1ZGlvXFBsYXRmb3Jt
TWVkaWFTZXNzaW9uTWFuYWdlci5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxw
bGF0Zm9ybVxncmFwaGljc1xBTkdMRVdlYktpdEJyaWRnZS5jcHAiIC8+CiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xhdmZvdW5kYXRpb25cY2ZcSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUFWQ0YuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxh
dGZvcm1cZ3JhcGhpY3NcYXZmb3VuZGF0aW9uXGNmXEluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdh
Y3lBVkNGLmNwcCIgLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJv
ai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJv
ai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwppbmRleCBkMmM2ZDFiMTg2OGY5ZDA0NGZmN2ZiMTkw
NDM2MTJhNGY1ZThhZTgzLi5iYmRhZTYwMzQ1YTc2M2I2OWQyZmFlZWE3ZmE4OTE1M2NjZDUxZTY1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hw
cm9qLmZpbHRlcnMKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUu
dmN4cHJvai5maWx0ZXJzCkBAIC03MDU0LDcgKzcwNTQsNyBAQAogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5ccGxhdGZvcm1cYXVkaW9cUGxhdGZvcm1NZWRpYVNlc3Npb24uY3BwIj4KICAgICAg
IDxGaWx0ZXI+cGxhdGZvcm1cYXVkaW88L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KLSAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGF1ZGlvXE1lZGlhU2Vzc2lvbk1hbmFnZXIu
Y3BwIj4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGF1ZGlvXFBsYXRmb3Jt
TWVkaWFTZXNzaW9uTWFuYWdlci5jcHAiPgogICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxhdWRpbzwv
RmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9k
dWxlc1xnYW1lcGFkXE5hdmlnYXRvckdhbWVwYWQuY3BwIj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkN2Q1Y2NhYzEzMGI4ZGI4
ZDk4MjA4NjJhZDBkZTg4ZjM0NTY3ZjAxLi41ZWE5YWJmNzNjZDdhMmNlOTIzNGQ4MmE2MDBjMTI1
ODZkNThhY2EyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0zNDksNyArMzQ5LDcgQEAKIAkJMDdGMEI5N0ExQUM1REIzMzAwRTUz
NUQ5IC8qIEFWS2l0U1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwN0YwQjk3OTFBQzVEQjMzMDBFNTM1RDkgLyogQVZLaXRTUEkuaCAqLzsgfTsKIAkJ
MDdGMEI5N0MxQUM1REI0NjAwRTUzNUQ5IC8qIEFWRm91bmRhdGlvblNQSS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdGMEI5N0IxQUM1REI0NjAwRTUz
NUQ5IC8qIEFWRm91bmRhdGlvblNQSS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTA3Rjg3Njg0MUFENTgwRjkwMDkwNTg0OSAvKiBNZWRpYVBsYXli
YWNrVGFyZ2V0Q29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMDdGODc2ODMxQUQ0QTk0NTAwOTA1ODQ5IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
LQkJMDdGOTQ0MTYxODY0RDA0NjAwNUQzMUNCIC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQUU4QzA4MTc0NkI5
NTcwMDUzMkQ3OCAvKiBNZWRpYVNlc3Npb25NYW5hZ2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMDdGOTQ0MTYxODY0RDA0NjAwNUQzMUNCIC8q
IFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBRThDMDgxNzQ2Qjk1NzAwNTMyRDc4IC8qIFBsYXRmb3Jt
TWVkaWFTZXNzaW9uTWFuYWdlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTA3RkJERTJDMThGRUQxNzgwMDFBN0NGRiAvKiBKU0RhdGFDdWVDdXN0
b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdG
QkRFMkIxOEZFRDE3ODAwMUE3Q0ZGIC8qIEpTRGF0YUN1ZUN1c3RvbS5jcHAgKi87IH07CiAJCTA3
RkU5OURDMTg4MDdBN0QwMDI1NjY0OCAvKiBNZWRpYUVsZW1lbnRTZXNzaW9uLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3RkU5OURBMTg4MDdBN0Qw
MDI1NjY0OCAvKiBNZWRpYUVsZW1lbnRTZXNzaW9uLmNwcCAqLzsgfTsKIAkJMDdGRTk5REQxODgw
N0E3RDAwMjU2NjQ4IC8qIE1lZGlhRWxlbWVudFNlc3Npb24uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3RkU5OURCMTg4MDdBN0QwMDI1NjY0OCAvKiBN
ZWRpYUVsZW1lbnRTZXNzaW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTU4MDYsNyArNTgwNiw3IEBACiAJCUNEQUI2RDJFMTdDODE0RUUwMEM2
MEIzNCAvKiBKU01lZGlhQ29udHJvbHNIb3N0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDREFCNkQyQzE3QzgxNEVFMDBDNjBCMzQgLyogSlNNZWRpYUNv
bnRyb2xzSG9zdC5oICovOyB9OwogCQlDREFCNkQzMTE3QzkyNTk1MDBDNjBCMzQgLyogVXNlckFn
ZW50U2NyaXB0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0RBQjZEMkYxN0M5MjU5NTAwQzYwQjM0IC8qIFVzZXJBZ2VudFNjcmlwdHMuaCAqLzsgfTsK
IAkJQ0RBQjZEMzIxN0M5MjU5NTAwQzYwQjM0IC8qIFVzZXJBZ2VudFNjcmlwdHNEYXRhLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQUI2RDMwMTdD
OTI1OTUwMEM2MEIzNCAvKiBVc2VyQWdlbnRTY3JpcHRzRGF0YS5jcHAgKi87IH07Ci0JCUNEQUU4
QzA5MTc0NkI5NTcwMDUzMkQ3OCAvKiBNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQUU4QzA3MTc0NkI5NTcwMDUz
MkQ3OCAvKiBNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcCAqLzsgfTsKKwkJQ0RBRThDMDkxNzQ2Qjk1
NzAwNTMyRDc4IC8qIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFFOEMwNzE3NDZCOTU3MDA1MzJE
NzggLyogUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcCAqLzsgfTsKIAkJQ0RCODU5Rjcx
NjBENDhBNDAwRTVCMDdGIC8qIE1lZGlhS2V5RXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RCODU5RjQxNjBENDg5OTAwRTVCMDdGIC8qIE1l
ZGlhS2V5RXZlbnQuY3BwICovOyB9OwogCQlDREI4NTlGQTE2MEQ0OTQ5MDBFNUIwN0YgLyogSlNN
ZWRpYUtleUV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENEQjg1OUY4MTYwRDQ5M0UwMEU1QjA3RiAvKiBKU01lZGlhS2V5RXZlbnQuY3BwICov
OyB9OwogCQlDREJFQUVBQzE5RDkyQjZDMDBCRUJBODggLyogTWVkaWFTZWxlY3Rpb25Hcm91cEFW
Rk9iakMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
REJFQUVBQTE5RDkyQjZDMDBCRUJBODggLyogTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakMubW0g
Ki87IH07CkBAIC0xMzQxMCw4ICsxMzQxMCw4IEBACiAJCUNEQUI2RDJDMTdDODE0RUUwMEM2MEIz
NCAvKiBKU01lZGlhQ29udHJvbHNIb3N0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTTWVkaWFDb250cm9sc0hvc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
Q0RBQjZEMkYxN0M5MjU5NTAwQzYwQjM0IC8qIFVzZXJBZ2VudFNjcmlwdHMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVXNlckFnZW50U2NyaXB0cy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDREFCNkQzMDE3QzkyNTk1MDBDNjBCMzQgLyogVXNlckFnZW50U2Ny
aXB0c0RhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVXNlckFn
ZW50U2NyaXB0c0RhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDREFFOEMw
NzE3NDZCOTU3MDA1MzJENzggLyogTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQ0RBRThDMDgxNzQ2Qjk1NzAwNTMyRDc4IC8qIE1lZGlh
U2Vzc2lvbk1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFT
ZXNzaW9uTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFFOEMwNzE3
NDZCOTU3MDA1MzJENzggLyogUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUU4QzA4MTc0NkI5NTcwMDUz
MkQ3OCAvKiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUNEQjg1OUYyMTYwRDQ4OTkwMEU1QjA3RiAvKiBNZWRpYUtleUVy
cm9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhS2V5RXJyb3IuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RCODU5RjMxNjBENDg5OTAwRTVCMDdGIC8q
IE1lZGlhS2V5RXJyb3IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE1lZGlhS2V5RXJyb3Iu
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREI4NTlGNDE2MEQ0ODk5MDBFNUIw
N0YgLyogTWVkaWFLZXlFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBNZWRpYUtleUV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIz
NTk0LDE0ICsyMzU5NCwxNCBAQAogCQkJCUZEMzE2MDY5MTJCMDI2RjcwMEMxQTM1OSAvKiBIUlRG
S2VybmVsLmggKi8sCiAJCQkJRkQzMTYwNkExMkIwMjZGNzAwQzFBMzU5IC8qIEhSVEZQYW5uZXIu
Y3BwICovLAogCQkJCUZEMzE2MDZCMTJCMDI2RjcwMEMxQTM1OSAvKiBIUlRGUGFubmVyLmggKi8s
Ci0JCQkJQ0RBRThDMDcxNzQ2Qjk1NzAwNTMyRDc4IC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXIuY3Bw
ICovLAotCQkJCUNEQUU4QzA4MTc0NkI5NTcwMDUzMkQ3OCAvKiBNZWRpYVNlc3Npb25NYW5hZ2Vy
LmggKi8sCiAJCQkJRkRCMTcwMDMxNEEyQkFCMjAwQTJCNUQ5IC8qIE11bHRpQ2hhbm5lbFJlc2Ft
cGxlci5jcHAgKi8sCiAJCQkJRkRCMTcwMDQxNEEyQkFCMjAwQTJCNUQ5IC8qIE11bHRpQ2hhbm5l
bFJlc2FtcGxlci5oICovLAogCQkJCUZEMzE2MDZDMTJCMDI2RjcwMEMxQTM1OSAvKiBQYW5uZXIu
Y3BwICovLAogCQkJCUZEMzE2MDZEMTJCMDI2RjcwMEMxQTM1OSAvKiBQYW5uZXIuaCAqLywKIAkJ
CQkwNzBFMDkxQTE4NzVFRjcxMDAzQTFEM0MgLyogUGxhdGZvcm1NZWRpYVNlc3Npb24uY3BwICov
LAogCQkJCTA3MEUwOTE4MTg3NUVEOTMwMDNBMUQzQyAvKiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbi5o
ICovLAorCQkJCUNEQUU4QzA3MTc0NkI5NTcwMDUzMkQ3OCAvKiBQbGF0Zm9ybU1lZGlhU2Vzc2lv
bk1hbmFnZXIuY3BwICovLAorCQkJCUNEQUU4QzA4MTc0NkI5NTcwMDUzMkQ3OCAvKiBQbGF0Zm9y
bU1lZGlhU2Vzc2lvbk1hbmFnZXIuaCAqLywKIAkJCQlGRDMxNjA2RTEyQjAyNkY3MDBDMUEzNTkg
LyogUmV2ZXJiLmNwcCAqLywKIAkJCQlGRDMxNjA2RjEyQjAyNkY3MDBDMUEzNTkgLyogUmV2ZXJi
LmggKi8sCiAJCQkJRkQzMTYwNzAxMkIwMjZGNzAwQzFBMzU5IC8qIFJldmVyYkFjY3VtdWxhdGlv
bkJ1ZmZlci5jcHAgKi8sCkBAIC0yNTg1MCw3ICsyNTg1MCw2IEBACiAJCQkJQ0VFRkNEN0ExOURC
MzFGNzAwMzg3NkQ3IC8qIE1lZGlhUmVzb3VyY2VMb2FkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUNEQkVBRUFEMTlEOTJCNkMwMEJFQkE4OCAvKiBNZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2JqQy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQzkwMjdGNDIxQjFEMEFEMjAwQkZCRkVGIC8qIE1lZGlhU2Vz
c2lvbi5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMDdGOTQ0MTYxODY0RDA0NjAwNUQzMUNCIC8qIE1l
ZGlhU2Vzc2lvbk1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3NjM4QTk5MTg4NDQ4NzIw
MEUxNUExQiAvKiBNZWRpYVNlc3Npb25NYW5hZ2VySU9TLmggaW4gSGVhZGVycyAqLywKIAkJCQlD
RDNBNDk1RjE3QTlEMDFCMDAyNzRFNDIgLyogTWVkaWFTb3VyY2UuaCBpbiBIZWFkZXJzICovLAog
CQkJCUNENjQxRUIzMTgxOEY1RUQwMEVFNEM0MSAvKiBNZWRpYVNvdXJjZVByaXZhdGUuaCBpbiBI
ZWFkZXJzICovLApAQCAtMjYwNzQsNiArMjYwNzMsNyBAQAogCQkJCUY1NDRGNzg5MTVDRkIyQTgw
MEFGMzNBOCAvKiBQbGF0Zm9ybUxvY2FsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0VFRkNEN0Mx
OURCMzNEQzAwMzg3NkQ3IC8qIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMDcwRTA5MTkxODc1RUVGQzAwM0ExRDNDIC8qIFBsYXRmb3JtTWVkaWFTZXNz
aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQkwN0Y5NDQxNjE4NjREMDQ2MDA1RDMxQ0IgLyogUGxh
dGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzI4NzFDMDBC
MjBERUI3MDA0OTAzNUEgLyogUGxhdGZvcm1NZW51RGVzY3JpcHRpb24uaCBpbiBIZWFkZXJzICov
LAogCQkJCTQxQkY3MDEwMEZFODZGNjEwMDVFOERFQyAvKiBQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hh
bm5lbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM1QzQ3NjkwOUFDNEQ0MzAwQTZBQUI0IC8qIFBs
YXRmb3JtTW91c2VFdmVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yOTQzNiw3ICsyOTQzNiw2IEBA
CiAJCQkJQ0VFRkNENzkxOURCMzFGNzAwMzg3NkQ3IC8qIE1lZGlhUmVzb3VyY2VMb2FkZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RCRUFFQUMxOUQ5MkI2QzAwQkVCQTg4IC8qIE1lZGlhU2Vs
ZWN0aW9uR3JvdXBBVkZPYmpDLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQzkwMjdGNDExQjFEMEFE
MjAwQkZCRkVGIC8qIE1lZGlhU2Vzc2lvbi5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlDREFFOEMw
OTE3NDZCOTU3MDA1MzJENzggLyogTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwNzYzOEE5QTE4ODQ0ODcyMDBFMTVBMUIgLyogTWVkaWFTZXNzaW9uTWFuYWdlcklP
Uy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTA3RURDM0VFMUFBQ0I3NUQwMDk4M0VCNSAvKiBNZWRp
YVNlc3Npb25NYW5hZ2VyTWFjLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEM0E0OTVFMTdBOUQw
MUIwMDI3NEU0MiAvKiBNZWRpYVNvdXJjZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI5NjA3LDYg
KzI5NjA2LDcgQEAKIAkJCQlCQ0FBNDg2RjE0QTA1MjUzMDA4OEZBQzQgLyogUGxhdGZvcm1FdmVu
dEZhY3RvcnlNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlGNTQ0Rjc4ODE1Q0ZCMkE4MDBBRjMz
QTggLyogUGxhdGZvcm1Mb2NhbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDcwRTA5MUIxODc1
RUY3MTAwM0ExRDNDIC8qIFBsYXRmb3JtTWVkaWFTZXNzaW9uLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCUNEQUU4QzA5MTc0NkI5NTcwMDUzMkQ3OCAvKiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFn
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDFCRjcwMEYwRkU4NkY2MTAwNUU4REVDIC8qIFBs
YXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUM1Mjc4QjBD
MTdGMjEyRUEwMDNBMjk5OCAvKiBQbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0gaW4gU291cmNlcyAq
LywKIAkJCQlDNTk4OTAyRTE0RTlCMEY4MDBFOEQxOEIgLyogUGxhdGZvcm1QYXN0ZWJvYXJkTWFj
Lm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cAppbmRleCBjMWRiODhkOTVhN2E0YTdlYjgxZDMzMmNhMjlmNmU5NWU2ZGYwYmVlLi5iYTQxMDll
NGRiMDlmOTdmMDA4MGEyZWE4N2RmM2MxOWY1NTc2NTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTY1LDEwICs2NSwxMCBAQAogI2luY2x1ZGUgIk1lZGlh
UGxheWVyLmgiCiAjaW5jbHVkZSAiTWVkaWFRdWVyeUV2YWx1YXRvci5oIgogI2luY2x1ZGUgIk1l
ZGlhUmVzb3VyY2VMb2FkZXIuaCIKLSNpbmNsdWRlICJNZWRpYVNlc3Npb25NYW5hZ2VyLmgiCiAj
aW5jbHVkZSAiTmV0d29ya2luZ0NvbnRleHQuaCIKICNpbmNsdWRlICJQYWdlR3JvdXAuaCIKICNp
bmNsdWRlICJQYWdlVGhyb3R0bGVyLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1NZWRpYVNlc3Npb25N
YW5hZ2VyLmgiCiAjaW5jbHVkZSAiUHJvZ3Jlc3NUcmFja2VyLmgiCiAjaW5jbHVkZSAiUmVuZGVy
TGF5ZXJDb21wb3NpdG9yLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlkZW8uaCIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uY3BwCmluZGV4IDIyNTU4ZTlmYWM5NzRmNjJl
Yjk5YTQ2NTdhMTNiMjVkMTJiZDc1MDUuLmVjN2JjNDEyMzlkNDYxNmI1ZGI3OTRkZDE2NWJjNjRk
ZTFmMDQzYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vz
c2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNw
cApAQCAtMzgsOCArMzgsOCBAQAogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhU
TUxWaWRlb0VsZW1lbnQuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCi0jaW5jbHVkZSAiTWVkaWFT
ZXNzaW9uTWFuYWdlci5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbk1hbmFnZXIuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5j
bHVkZSAiU291cmNlQnVmZmVyLmgiCiAKQEAgLTMyOCwxMyArMzI4LDEzIEBAIHZvaWQgTWVkaWFF
bGVtZW50U2Vzc2lvbjo6bWVkaWFTdGF0ZURpZENoYW5nZShjb25zdCBIVE1MTWVkaWFFbGVtZW50
JiBlbGVtZW50LCBNCiAKIE1lZGlhUGxheWVyOjpQcmVsb2FkIE1lZGlhRWxlbWVudFNlc3Npb246
OmVmZmVjdGl2ZVByZWxvYWRGb3JFbGVtZW50KGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmIGVsZW1l
bnQpIGNvbnN0CiB7Ci0gICAgTWVkaWFTZXNzaW9uTWFuYWdlcjo6U2Vzc2lvblJlc3RyaWN0aW9u
cyByZXN0cmljdGlvbnMgPSBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkucmVz
dHJpY3Rpb25zKG1lZGlhVHlwZSgpKTsKKyAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6
OlNlc3Npb25SZXN0cmljdGlvbnMgcmVzdHJpY3Rpb25zID0gUGxhdGZvcm1NZWRpYVNlc3Npb25N
YW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkucmVzdHJpY3Rpb25zKG1lZGlhVHlwZSgpKTsKICAgICBN
ZWRpYVBsYXllcjo6UHJlbG9hZCBwcmVsb2FkID0gZWxlbWVudC5wcmVsb2FkVmFsdWUoKTsKIAot
ICAgIGlmICgocmVzdHJpY3Rpb25zICYgTWVkaWFTZXNzaW9uTWFuYWdlcjo6TWV0YWRhdGFQcmVs
b2FkaW5nTm90UGVybWl0dGVkKSA9PSBNZWRpYVNlc3Npb25NYW5hZ2VyOjpNZXRhZGF0YVByZWxv
YWRpbmdOb3RQZXJtaXR0ZWQpCisgICAgaWYgKChyZXN0cmljdGlvbnMgJiBQbGF0Zm9ybU1lZGlh
U2Vzc2lvbk1hbmFnZXI6Ok1ldGFkYXRhUHJlbG9hZGluZ05vdFBlcm1pdHRlZCkgPT0gUGxhdGZv
cm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpNZXRhZGF0YVByZWxvYWRpbmdOb3RQZXJtaXR0ZWQpCiAg
ICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6Tm9uZTsKIAotICAgIGlmICgocmVzdHJpY3Rpb25z
ICYgTWVkaWFTZXNzaW9uTWFuYWdlcjo6QXV0b1ByZWxvYWRpbmdOb3RQZXJtaXR0ZWQpID09IE1l
ZGlhU2Vzc2lvbk1hbmFnZXI6OkF1dG9QcmVsb2FkaW5nTm90UGVybWl0dGVkKSB7CisgICAgaWYg
KChyZXN0cmljdGlvbnMgJiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OkF1dG9QcmVsb2Fk
aW5nTm90UGVybWl0dGVkKSA9PSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OkF1dG9QcmVs
b2FkaW5nTm90UGVybWl0dGVkKSB7CiAgICAgICAgIGlmIChwcmVsb2FkID4gTWVkaWFQbGF5ZXI6
Ok1ldGFEYXRhKQogICAgICAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpNZXRhRGF0YTsKICAg
ICB9CkBAIC0zNDQsNyArMzQ0LDcgQEAgTWVkaWFQbGF5ZXI6OlByZWxvYWQgTWVkaWFFbGVtZW50
U2Vzc2lvbjo6ZWZmZWN0aXZlUHJlbG9hZEZvckVsZW1lbnQoY29uc3QgSFRNTE0KIAogYm9vbCBN
ZWRpYUVsZW1lbnRTZXNzaW9uOjpyZXF1aXJlc0Z1bGxzY3JlZW5Gb3JWaWRlb1BsYXliYWNrKGNv
bnN0IEhUTUxNZWRpYUVsZW1lbnQmIGVsZW1lbnQpIGNvbnN0CiB7Ci0gICAgaWYgKCFNZWRpYVNl
c3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuc2Vzc2lvblJlc3RyaWN0c0lubGluZVZpZGVv
UGxheWJhY2soKnRoaXMpKQorICAgIGlmICghUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpz
aGFyZWRNYW5hZ2VyKCkuc2Vzc2lvblJlc3RyaWN0c0lubGluZVZpZGVvUGxheWJhY2soKnRoaXMp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBlbGVt
ZW50LmRvY3VtZW50KCkuc2V0dGluZ3MoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGUxNzcwNTNmZDY2MTAzMjI1YjgxOWJlN2RmZmE0NWY4NWM2ZTRjZTcuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAKKysrIC9kZXYvbnVsbApAQCAt
MSwzMzQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE1IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lu
Y2x1ZGUgIk1lZGlhU2Vzc2lvbk1hbmFnZXIuaCIKLQotI2lmIEVOQUJMRShWSURFTykKLQotI2lu
Y2x1ZGUgIkF1ZGlvU2Vzc2lvbi5oIgotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRlICJO
b3RJbXBsZW1lbnRlZC5oIgotI2luY2x1ZGUgIlBsYXRmb3JtTWVkaWFTZXNzaW9uLmgiCi0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotI2lmICFQTEFURk9STShJT1MpCi1NZWRpYVNlc3Npb25NYW5h
Z2VyJiBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkKLXsKLSAgICBERVBSRUNB
VEVEX0RFRklORV9TVEFUSUNfTE9DQUwoTWVkaWFTZXNzaW9uTWFuYWdlciwgbWFuYWdlciwgKCkp
OwotICAgIHJldHVybiBtYW5hZ2VyOwotfQotI2VuZGlmCi0KLU1lZGlhU2Vzc2lvbk1hbmFnZXI6
Ok1lZGlhU2Vzc2lvbk1hbmFnZXIoKQotICAgIDogbV9zeXN0ZW1TbGVlcExpc3RlbmVyKFN5c3Rl
bVNsZWVwTGlzdGVuZXI6OmNyZWF0ZSgqdGhpcykpCi17Ci0gICAgcmVzZXRSZXN0cmljdGlvbnMo
KTsKLX0KLQotdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyOjpyZXNldFJlc3RyaWN0aW9ucygpCi17
Ci0gICAgbV9yZXN0cmljdGlvbnNbUGxhdGZvcm1NZWRpYVNlc3Npb246OlZpZGVvXSA9IE5vUmVz
dHJpY3Rpb25zOwotICAgIG1fcmVzdHJpY3Rpb25zW1BsYXRmb3JtTWVkaWFTZXNzaW9uOjpBdWRp
b10gPSBOb1Jlc3RyaWN0aW9uczsKLSAgICBtX3Jlc3RyaWN0aW9uc1tQbGF0Zm9ybU1lZGlhU2Vz
c2lvbjo6V2ViQXVkaW9dID0gTm9SZXN0cmljdGlvbnM7Ci19Ci0KLWJvb2wgTWVkaWFTZXNzaW9u
TWFuYWdlcjo6aGFzKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUgdHlwZSkgY29uc3QK
LXsKLSAgICBBU1NFUlQodHlwZSA+PSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Tm9uZSAmJiB0eXBl
IDw9IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpXZWJBdWRpbyk7Ci0KLSAgICBmb3IgKGF1dG8qIHNl
c3Npb24gOiBtX3Nlc3Npb25zKSB7Ci0gICAgICAgIGlmIChzZXNzaW9uLT5tZWRpYVR5cGUoKSA9
PSB0eXBlKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgcmV0dXJuIGZh
bHNlOwotfQotCi1ib29sIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OmFjdGl2ZUF1ZGlvU2Vzc2lvblJl
cXVpcmVkKCkgY29uc3QKLXsKLSAgICBmb3IgKGF1dG8qIHNlc3Npb24gOiBtX3Nlc3Npb25zKSB7
Ci0gICAgICAgIGlmIChzZXNzaW9uLT5tZWRpYVR5cGUoKSAhPSBQbGF0Zm9ybU1lZGlhU2Vzc2lv
bjo6Tm9uZSAmJiBzZXNzaW9uLT5zdGF0ZSgpID09IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTdGF0
ZTo6UGxheWluZykKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICAKLSAgICBy
ZXR1cm4gZmFsc2U7Ci19Ci0KLWludCBNZWRpYVNlc3Npb25NYW5hZ2VyOjpjb3VudChQbGF0Zm9y
bU1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlIHR5cGUpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKHR5cGUg
Pj0gUGxhdGZvcm1NZWRpYVNlc3Npb246Ok5vbmUgJiYgdHlwZSA8PSBQbGF0Zm9ybU1lZGlhU2Vz
c2lvbjo6V2ViQXVkaW8pOwotCi0gICAgaW50IGNvdW50ID0gMDsKLSAgICBmb3IgKGF1dG8qIHNl
c3Npb24gOiBtX3Nlc3Npb25zKSB7Ci0gICAgICAgIGlmIChzZXNzaW9uLT5tZWRpYVR5cGUoKSA9
PSB0eXBlKQotICAgICAgICAgICAgKytjb3VudDsKLSAgICB9Ci0KLSAgICByZXR1cm4gY291bnQ7
Ci19Ci0KLXZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcjo6YmVnaW5JbnRlcnJ1cHRpb24oUGxhdGZv
cm1NZWRpYVNlc3Npb246OkludGVycnVwdGlvblR5cGUgdHlwZSkKLXsKLSAgICBMT0coTWVkaWEs
ICJNZWRpYVNlc3Npb25NYW5hZ2VyOjpiZWdpbkludGVycnVwdGlvbiIpOwotCi0gICAgbV9pbnRl
cnJ1cHRlZCA9IHRydWU7Ci0gICAgVmVjdG9yPFBsYXRmb3JtTWVkaWFTZXNzaW9uKj4gc2Vzc2lv
bnMgPSBtX3Nlc3Npb25zOwotICAgIGZvciAoYXV0byogc2Vzc2lvbiA6IHNlc3Npb25zKQotICAg
ICAgICBzZXNzaW9uLT5iZWdpbkludGVycnVwdGlvbih0eXBlKTsKLSAgICB1cGRhdGVTZXNzaW9u
U3RhdGUoKTsKLX0KLQotdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyOjplbmRJbnRlcnJ1cHRpb24o
UGxhdGZvcm1NZWRpYVNlc3Npb246OkVuZEludGVycnVwdGlvbkZsYWdzIGZsYWdzKQotewotICAg
IExPRyhNZWRpYSwgIk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmVuZEludGVycnVwdGlvbiIpOwotCi0g
ICAgbV9pbnRlcnJ1cHRlZCA9IGZhbHNlOwotICAgIFZlY3RvcjxQbGF0Zm9ybU1lZGlhU2Vzc2lv
bio+IHNlc3Npb25zID0gbV9zZXNzaW9uczsKLSAgICBmb3IgKGF1dG8qIHNlc3Npb24gOiBzZXNz
aW9ucykKLSAgICAgICAgc2Vzc2lvbi0+ZW5kSW50ZXJydXB0aW9uKGZsYWdzKTsKLX0KLQotdm9p
ZCBNZWRpYVNlc3Npb25NYW5hZ2VyOjphZGRTZXNzaW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uJiBz
ZXNzaW9uKQotewotICAgIExPRyhNZWRpYSwgIk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmFkZFNlc3Np
b24gLSAlcCIsICZzZXNzaW9uKTsKLSAgICAKLSAgICBtX3Nlc3Npb25zLmFwcGVuZCgmc2Vzc2lv
bik7Ci0gICAgaWYgKG1faW50ZXJydXB0ZWQpCi0gICAgICAgIHNlc3Npb24uc2V0U3RhdGUoUGxh
dGZvcm1NZWRpYVNlc3Npb246OkludGVycnVwdGVkKTsKLQotICAgIGlmICghbV9yZW1vdGVDb21t
YW5kTGlzdGVuZXIpCi0gICAgICAgIG1fcmVtb3RlQ29tbWFuZExpc3RlbmVyID0gUmVtb3RlQ29t
bWFuZExpc3RlbmVyOjpjcmVhdGUoKnRoaXMpOwotCi0gICAgaWYgKCFtX2F1ZGlvSGFyZHdhcmVM
aXN0ZW5lcikKLSAgICAgICAgbV9hdWRpb0hhcmR3YXJlTGlzdGVuZXIgPSBBdWRpb0hhcmR3YXJl
TGlzdGVuZXI6OmNyZWF0ZSgqdGhpcyk7Ci0KLSAgICB1cGRhdGVTZXNzaW9uU3RhdGUoKTsKLX0K
LQotdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyOjpyZW1vdmVTZXNzaW9uKFBsYXRmb3JtTWVkaWFT
ZXNzaW9uJiBzZXNzaW9uKQotewotICAgIExPRyhNZWRpYSwgIk1lZGlhU2Vzc2lvbk1hbmFnZXI6
OnJlbW92ZVNlc3Npb24gLSAlcCIsICZzZXNzaW9uKTsKLSAgICAKLSAgICBzaXplX3QgaW5kZXgg
PSBtX3Nlc3Npb25zLmZpbmQoJnNlc3Npb24pOwotICAgIEFTU0VSVChpbmRleCAhPSBub3RGb3Vu
ZCk7Ci0gICAgaWYgKGluZGV4ID09IG5vdEZvdW5kKQotICAgICAgICByZXR1cm47Ci0gICAgCi0g
ICAgbV9zZXNzaW9ucy5yZW1vdmUoaW5kZXgpOwotCi0gICAgaWYgKG1fc2Vzc2lvbnMuaXNFbXB0
eSgpKSB7Ci0gICAgICAgIG1fcmVtb3RlQ29tbWFuZExpc3RlbmVyID0gbnVsbHB0cjsKLSAgICAg
ICAgbV9hdWRpb0hhcmR3YXJlTGlzdGVuZXIgPSBudWxscHRyOwotICAgIH0KLQotICAgIHVwZGF0
ZVNlc3Npb25TdGF0ZSgpOwotfQotCi12b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OmFkZFJlc3Ry
aWN0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUgdHlwZSwgU2Vzc2lvblJlc3Ry
aWN0aW9ucyByZXN0cmljdGlvbikKLXsKLSAgICBBU1NFUlQodHlwZSA+IFBsYXRmb3JtTWVkaWFT
ZXNzaW9uOjpOb25lICYmIHR5cGUgPD0gUGxhdGZvcm1NZWRpYVNlc3Npb246OldlYkF1ZGlvKTsK
LSAgICBtX3Jlc3RyaWN0aW9uc1t0eXBlXSB8PSByZXN0cmljdGlvbjsKLX0KLQotdm9pZCBNZWRp
YVNlc3Npb25NYW5hZ2VyOjpyZW1vdmVSZXN0cmljdGlvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6
TWVkaWFUeXBlIHR5cGUsIFNlc3Npb25SZXN0cmljdGlvbnMgcmVzdHJpY3Rpb24pCi17Ci0gICAg
QVNTRVJUKHR5cGUgPiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Tm9uZSAmJiB0eXBlIDw9IFBsYXRm
b3JtTWVkaWFTZXNzaW9uOjpXZWJBdWRpbyk7Ci0gICAgbV9yZXN0cmljdGlvbnNbdHlwZV0gJj0g
fnJlc3RyaWN0aW9uOwotfQotCi1NZWRpYVNlc3Npb25NYW5hZ2VyOjpTZXNzaW9uUmVzdHJpY3Rp
b25zIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnJlc3RyaWN0aW9ucyhQbGF0Zm9ybU1lZGlhU2Vzc2lv
bjo6TWVkaWFUeXBlIHR5cGUpCi17Ci0gICAgQVNTRVJUKHR5cGUgPiBQbGF0Zm9ybU1lZGlhU2Vz
c2lvbjo6Tm9uZSAmJiB0eXBlIDw9IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpXZWJBdWRpbyk7Ci0g
ICAgcmV0dXJuIG1fcmVzdHJpY3Rpb25zW3R5cGVdOwotfQotCi1ib29sIE1lZGlhU2Vzc2lvbk1h
bmFnZXI6OnNlc3Npb25XaWxsQmVnaW5QbGF5YmFjayhQbGF0Zm9ybU1lZGlhU2Vzc2lvbiYgc2Vz
c2lvbikKLXsKLSAgICBMT0coTWVkaWEsICJNZWRpYVNlc3Npb25NYW5hZ2VyOjpzZXNzaW9uV2ls
bEJlZ2luUGxheWJhY2sgLSAlcCIsICZzZXNzaW9uKTsKLSAgICAKLSAgICBzZXRDdXJyZW50U2Vz
c2lvbihzZXNzaW9uKTsKLQotICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUgc2Vz
c2lvblR5cGUgPSBzZXNzaW9uLm1lZGlhVHlwZSgpOwotICAgIFNlc3Npb25SZXN0cmljdGlvbnMg
cmVzdHJpY3Rpb25zID0gbV9yZXN0cmljdGlvbnNbc2Vzc2lvblR5cGVdOwotICAgIGlmIChzZXNz
aW9uLnN0YXRlKCkgPT0gUGxhdGZvcm1NZWRpYVNlc3Npb246OkludGVycnVwdGVkICYmIHJlc3Ry
aWN0aW9ucyAmIEludGVycnVwdGVkUGxheWJhY2tOb3RQZXJtaXR0ZWQpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotI2lmIFVTRShBVURJT19TRVNTSU9OKQotICAgIGlmIChhY3RpdmVBdWRpb1Nl
c3Npb25SZXF1aXJlZCgpICYmICFBdWRpb1Nlc3Npb246OnNoYXJlZFNlc3Npb24oKS50cnlUb1Nl
dEFjdGl2ZSh0cnVlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCi0KLSAgICBpZiAo
bV9pbnRlcnJ1cHRlZCkKLSAgICAgICAgZW5kSW50ZXJydXB0aW9uKFBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpOb0ZsYWdzKTsKLQotICAgIFZlY3RvcjxQbGF0Zm9ybU1lZGlhU2Vzc2lvbio+IHNlc3Np
b25zID0gbV9zZXNzaW9uczsKLSAgICBmb3IgKGF1dG8qIG9uZVNlc3Npb24gOiBzZXNzaW9ucykg
ewotICAgICAgICBpZiAob25lU2Vzc2lvbiA9PSAmc2Vzc2lvbikKLSAgICAgICAgICAgIGNvbnRp
bnVlOwotICAgICAgICBpZiAob25lU2Vzc2lvbi0+bWVkaWFUeXBlKCkgPT0gc2Vzc2lvblR5cGUg
JiYgcmVzdHJpY3Rpb25zICYgQ29uY3VycmVudFBsYXliYWNrTm90UGVybWl0dGVkKQotICAgICAg
ICAgICAgb25lU2Vzc2lvbi0+cGF1c2VTZXNzaW9uKCk7Ci0gICAgfQotCi0gICAgdXBkYXRlU2Vz
c2lvblN0YXRlKCk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0gICAgCi12b2lkIE1lZGlhU2Vzc2lv
bk1hbmFnZXI6OnNlc3Npb25XaWxsRW5kUGxheWJhY2soUGxhdGZvcm1NZWRpYVNlc3Npb24mIHNl
c3Npb24pCi17Ci0gICAgTE9HKE1lZGlhLCAiTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2Vzc2lvbldp
bGxFbmRQbGF5YmFjayAtICVwIiwgJnNlc3Npb24pOwotICAgIAotICAgIGlmIChtX3Nlc3Npb25z
LnNpemUoKSA8IDIpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBzaXplX3QgcGF1c2luZ1Nl
c3Npb25JbmRleCA9IG5vdEZvdW5kOwotICAgIHNpemVfdCBsYXN0UGxheWluZ1Nlc3Npb25JbmRl
eCA9IG5vdEZvdW5kOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9zZXNzaW9ucy5zaXpl
KCk7ICsraSkgewotICAgICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbiogb25lU2Vzc2lvbiA9IG1f
c2Vzc2lvbnNbaV07Ci0gICAgICAgIAotICAgICAgICBpZiAob25lU2Vzc2lvbiA9PSAmc2Vzc2lv
bikgewotICAgICAgICAgICAgcGF1c2luZ1Nlc3Npb25JbmRleCA9IGk7Ci0gICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgfQotICAgICAgICBpZiAob25lU2Vzc2lvbi0+c3RhdGUoKSA9PSBQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UGxheWluZykgewotICAgICAgICAgICAgbGFzdFBsYXlpbmdT
ZXNzaW9uSW5kZXggPSBpOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLSAgICAg
ICAgaWYgKG9uZVNlc3Npb24tPnN0YXRlKCkgIT0gUGxhdGZvcm1NZWRpYVNlc3Npb246OlBsYXlp
bmcpCi0gICAgICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgaWYgKGxhc3RQbGF5aW5nU2Vzc2lv
bkluZGV4ID09IG5vdEZvdW5kIHx8IHBhdXNpbmdTZXNzaW9uSW5kZXggPT0gbm90Rm91bmQpCi0g
ICAgICAgIHJldHVybjsKLSAgICAKLSAgICBpZiAocGF1c2luZ1Nlc3Npb25JbmRleCA+IGxhc3RQ
bGF5aW5nU2Vzc2lvbkluZGV4KQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgbV9zZXNzaW9u
cy5yZW1vdmUocGF1c2luZ1Nlc3Npb25JbmRleCk7Ci0gICAgbV9zZXNzaW9ucy5pbnNlcnQobGFz
dFBsYXlpbmdTZXNzaW9uSW5kZXgsICZzZXNzaW9uKTsKLSAgICAKLSAgICBMT0coTWVkaWEsICJN
ZWRpYVNlc3Npb25NYW5hZ2VyOjpzZXNzaW9uV2lsbEVuZFBsYXliYWNrIC0gc2Vzc2lvbiBtb3Zl
ZCBmcm9tIGluZGV4ICV6dSB0byAlenUiLCBwYXVzaW5nU2Vzc2lvbkluZGV4LCBsYXN0UGxheWlu
Z1Nlc3Npb25JbmRleCk7Ci19Ci0KLXZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2V0Q3VycmVu
dFNlc3Npb24oUGxhdGZvcm1NZWRpYVNlc3Npb24mIHNlc3Npb24pCi17Ci0gICAgTE9HKE1lZGlh
LCAiTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2V0Q3VycmVudFNlc3Npb24gLSAlcCIsICZzZXNzaW9u
KTsKLSAgICAKLSAgICBpZiAobV9zZXNzaW9ucy5zaXplKCkgPCAyKQotICAgICAgICByZXR1cm47
Ci0gICAgCi0gICAgc2l6ZV90IGluZGV4ID0gbV9zZXNzaW9ucy5maW5kKCZzZXNzaW9uKTsKLSAg
ICBBU1NFUlQoaW5kZXggIT0gbm90Rm91bmQpOwotICAgIGlmICghaW5kZXggfHwgaW5kZXggPT0g
bm90Rm91bmQpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fc2Vzc2lvbnMucmVtb3ZlKGluZGV4
KTsKLSAgICBtX3Nlc3Npb25zLmluc2VydCgwLCAmc2Vzc2lvbik7Ci0gICAgCi0gICAgTE9HKE1l
ZGlhLCAiTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2V0Q3VycmVudFNlc3Npb24gLSBzZXNzaW9uIG1v
dmVkIGZyb20gaW5kZXggJXp1IHRvIDAiLCBpbmRleCk7Ci19Ci0gICAgCi1QbGF0Zm9ybU1lZGlh
U2Vzc2lvbiogTWVkaWFTZXNzaW9uTWFuYWdlcjo6Y3VycmVudFNlc3Npb24oKQotewotICAgIGlm
ICghbV9zZXNzaW9ucy5zaXplKCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgcmV0
dXJuIG1fc2Vzc2lvbnNbMF07Ci19Ci0gICAgCi1ib29sIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNl
c3Npb25SZXN0cmljdHNJbmxpbmVWaWRlb1BsYXliYWNrKGNvbnN0IFBsYXRmb3JtTWVkaWFTZXNz
aW9uJiBzZXNzaW9uKSBjb25zdAotewotICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNZWRpYVR5
cGUgc2Vzc2lvblR5cGUgPSBzZXNzaW9uLnByZXNlbnRhdGlvblR5cGUoKTsKLSAgICBpZiAoc2Vz
c2lvblR5cGUgIT0gUGxhdGZvcm1NZWRpYVNlc3Npb246OlZpZGVvKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICByZXR1cm4gbV9yZXN0cmljdGlvbnNbc2Vzc2lvblR5cGVdICYgSW5saW5l
VmlkZW9QbGF5YmFja1Jlc3RyaWN0ZWQ7Ci19Ci0KLWJvb2wgTWVkaWFTZXNzaW9uTWFuYWdlcjo6
c2Vzc2lvbkNhbkxvYWRNZWRpYShjb25zdCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbiYgc2Vzc2lvbikg
Y29uc3QKLXsKLSAgICByZXR1cm4gc2Vzc2lvbi5zdGF0ZSgpID09IFBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpQbGF5aW5nIHx8ICFzZXNzaW9uLmlzSGlkZGVuKCkgfHwgc2Vzc2lvbi5pc1BsYXlpbmdU
b1dpcmVsZXNzUGxheWJhY2tUYXJnZXQoKTsKLX0KLQotdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2Vy
OjphcHBsaWNhdGlvbldpbGxFbnRlckJhY2tncm91bmQoKSBjb25zdAotewotICAgIExPRyhNZWRp
YSwgIk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmFwcGxpY2F0aW9uV2lsbEVudGVyQmFja2dyb3VuZCIp
OwotICAgIFZlY3RvcjxQbGF0Zm9ybU1lZGlhU2Vzc2lvbio+IHNlc3Npb25zID0gbV9zZXNzaW9u
czsKLSAgICBmb3IgKGF1dG8qIHNlc3Npb24gOiBzZXNzaW9ucykgewotICAgICAgICBpZiAobV9y
ZXN0cmljdGlvbnNbc2Vzc2lvbi0+bWVkaWFUeXBlKCldICYgQmFja2dyb3VuZFByb2Nlc3NQbGF5
YmFja1Jlc3RyaWN0ZWQpCi0gICAgICAgICAgICBzZXNzaW9uLT5iZWdpbkludGVycnVwdGlvbihQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbjo6RW50ZXJpbmdCYWNrZ3JvdW5kKTsKLSAgICB9Ci19Ci0KLXZv
aWQgTWVkaWFTZXNzaW9uTWFuYWdlcjo6YXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKCkg
Y29uc3QKLXsKLSAgICBMT0coTWVkaWEsICJNZWRpYVNlc3Npb25NYW5hZ2VyOjphcHBsaWNhdGlv
bldpbGxFbnRlckZvcmVncm91bmQiKTsKLSAgICBWZWN0b3I8UGxhdGZvcm1NZWRpYVNlc3Npb24q
PiBzZXNzaW9ucyA9IG1fc2Vzc2lvbnM7Ci0gICAgZm9yIChhdXRvKiBzZXNzaW9uIDogc2Vzc2lv
bnMpIHsKLSAgICAgICAgaWYgKG1fcmVzdHJpY3Rpb25zW3Nlc3Npb24tPm1lZGlhVHlwZSgpXSAm
IEJhY2tncm91bmRQcm9jZXNzUGxheWJhY2tSZXN0cmljdGVkKQotICAgICAgICAgICAgc2Vzc2lv
bi0+ZW5kSW50ZXJydXB0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNYXlSZXN1bWVQbGF5aW5n
KTsKLSAgICB9Ci19Ci0KLSNpZiAhUExBVEZPUk0oQ09DT0EpCi12b2lkIE1lZGlhU2Vzc2lvbk1h
bmFnZXI6OnVwZGF0ZVNlc3Npb25TdGF0ZSgpCi17Ci19Ci0jZW5kaWYKLQotdm9pZCBNZWRpYVNl
c3Npb25NYW5hZ2VyOjpkaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoUGxhdGZvcm1NZWRp
YVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSBjb21tYW5kKQotewotICAgIFBsYXRm
b3JtTWVkaWFTZXNzaW9uKiBhY3RpdmVTZXNzaW9uID0gY3VycmVudFNlc3Npb24oKTsKLSAgICBp
ZiAoIWFjdGl2ZVNlc3Npb24gfHwgIWFjdGl2ZVNlc3Npb24tPmNhblJlY2VpdmVSZW1vdGVDb250
cm9sQ29tbWFuZHMoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIGFjdGl2ZVNlc3Npb24tPmRpZFJl
Y2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChjb21tYW5kKTsKLX0KLQotdm9pZCBNZWRpYVNlc3Np
b25NYW5hZ2VyOjpzeXN0ZW1XaWxsU2xlZXAoKQotewotICAgIGlmIChtX2ludGVycnVwdGVkKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBmb3IgKGF1dG8gc2Vzc2lvbiA6IG1fc2Vzc2lvbnMpCi0g
ICAgICAgIHNlc3Npb24tPmJlZ2luSW50ZXJydXB0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpT
eXN0ZW1TbGVlcCk7Ci19Ci0KLXZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c3lzdGVtRGlkV2Fr
ZSgpCi17Ci0gICAgaWYgKG1faW50ZXJydXB0ZWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGZv
ciAoYXV0byBzZXNzaW9uIDogbV9zZXNzaW9ucykKLSAgICAgICAgc2Vzc2lvbi0+ZW5kSW50ZXJy
dXB0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNYXlSZXN1bWVQbGF5aW5nKTsKLX0KLQotdm9p
ZCBNZWRpYVNlc3Npb25NYW5hZ2VyOjphdWRpb091dHB1dERldmljZUNoYW5nZWQoKQotewotICAg
IHVwZGF0ZVNlc3Npb25TdGF0ZSgpOwotfQotCi19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uTWFuYWdlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uTWFuYWdlci5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBkMTUwYTk4NWRjNjc0ZmE3Y2NlZjU1Mjc1MTFmZjJkZDgzZDc0
YTA0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbk1hbmFnZXIuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDEzMyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTUgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIE1lZGlhU2Vz
c2lvbk1hbmFnZXJfaAotI2RlZmluZSBNZWRpYVNlc3Npb25NYW5hZ2VyX2gKLQotI2luY2x1ZGUg
IkF1ZGlvSGFyZHdhcmVMaXN0ZW5lci5oIgotI2luY2x1ZGUgIlBsYXRmb3JtTWVkaWFTZXNzaW9u
LmgiCi0jaW5jbHVkZSAiUmVtb3RlQ29tbWFuZExpc3RlbmVyLmgiCi0jaW5jbHVkZSAiU2V0dGlu
Z3MuaCIKLSNpbmNsdWRlICJTeXN0ZW1TbGVlcExpc3RlbmVyLmgiCi0jaW5jbHVkZSA8bWFwPgot
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBI
VE1MTWVkaWFFbGVtZW50OwotY2xhc3MgUGxhdGZvcm1NZWRpYVNlc3Npb247Ci1jbGFzcyBSZW1v
dGVDb21tYW5kTGlzdGVuZXI7Ci0KLWNsYXNzIE1lZGlhU2Vzc2lvbk1hbmFnZXIgOiBwcml2YXRl
IFJlbW90ZUNvbW1hbmRMaXN0ZW5lckNsaWVudCwgcHJpdmF0ZSBTeXN0ZW1TbGVlcExpc3RlbmVy
OjpDbGllbnQsIHByaXZhdGUgQXVkaW9IYXJkd2FyZUxpc3RlbmVyOjpDbGllbnQgewotICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBNZWRpYVNlc3Npb25NYW5hZ2VyJiBzaGFyZWRNYW5hZ2VyKCk7Ci0gICAgdmlydHVhbCB+TWVk
aWFTZXNzaW9uTWFuYWdlcigpIHsgfQotCi0gICAgYm9vbCBoYXMoUGxhdGZvcm1NZWRpYVNlc3Np
b246Ok1lZGlhVHlwZSkgY29uc3Q7Ci0gICAgaW50IGNvdW50KFBsYXRmb3JtTWVkaWFTZXNzaW9u
OjpNZWRpYVR5cGUpIGNvbnN0OwotICAgIGJvb2wgYWN0aXZlQXVkaW9TZXNzaW9uUmVxdWlyZWQo
KSBjb25zdDsKLQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYmVnaW5JbnRlcnJ1cHRpb24oUGxh
dGZvcm1NZWRpYVNlc3Npb246OkludGVycnVwdGlvblR5cGUpOwotICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgZW5kSW50ZXJydXB0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpFbmRJbnRlcnJ1cHRp
b25GbGFncyk7Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGxpY2F0aW9uV2lsbEVudGVy
Rm9yZWdyb3VuZCgpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwbGljYXRpb25X
aWxsRW50ZXJCYWNrZ3JvdW5kKCkgY29uc3Q7Ci0KLSAgICBlbnVtIFNlc3Npb25SZXN0cmljdGlv
bkZsYWdzIHsKLSAgICAgICAgTm9SZXN0cmljdGlvbnMgPSAwLAotICAgICAgICBDb25jdXJyZW50
UGxheWJhY2tOb3RQZXJtaXR0ZWQgPSAxIDw8IDAsCi0gICAgICAgIElubGluZVZpZGVvUGxheWJh
Y2tSZXN0cmljdGVkID0gMSA8PCAxLAotICAgICAgICBNZXRhZGF0YVByZWxvYWRpbmdOb3RQZXJt
aXR0ZWQgPSAxIDw8IDIsCi0gICAgICAgIEF1dG9QcmVsb2FkaW5nTm90UGVybWl0dGVkID0gMSA8
PCAzLAotICAgICAgICBCYWNrZ3JvdW5kUHJvY2Vzc1BsYXliYWNrUmVzdHJpY3RlZCA9IDEgPDwg
NCwKLSAgICAgICAgQmFja2dyb3VuZFRhYlBsYXliYWNrUmVzdHJpY3RlZCA9IDEgPDwgNSwKLSAg
ICAgICAgSW50ZXJydXB0ZWRQbGF5YmFja05vdFBlcm1pdHRlZCA9IDEgPDwgNiwKLSAgICB9Owot
ICAgIHR5cGVkZWYgdW5zaWduZWQgU2Vzc2lvblJlc3RyaWN0aW9uczsKLQotICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgYWRkUmVzdHJpY3Rpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246Ok1lZGlhVHlw
ZSwgU2Vzc2lvblJlc3RyaWN0aW9ucyk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVS
ZXN0cmljdGlvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlLCBTZXNzaW9uUmVzdHJp
Y3Rpb25zKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBTZXNzaW9uUmVzdHJpY3Rpb25zIHJlc3RyaWN0
aW9ucyhQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlKTsKLSAgICB2aXJ0dWFsIHZvaWQg
cmVzZXRSZXN0cmljdGlvbnMoKTsKLQotICAgIHZpcnR1YWwgYm9vbCBzZXNzaW9uV2lsbEJlZ2lu
UGxheWJhY2soUGxhdGZvcm1NZWRpYVNlc3Npb24mKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2Vzc2lv
bldpbGxFbmRQbGF5YmFjayhQbGF0Zm9ybU1lZGlhU2Vzc2lvbiYpOwotCi0gICAgYm9vbCBzZXNz
aW9uUmVzdHJpY3RzSW5saW5lVmlkZW9QbGF5YmFjayhjb25zdCBQbGF0Zm9ybU1lZGlhU2Vzc2lv
biYpIGNvbnN0OwotCi0gICAgdmlydHVhbCBib29sIHNlc3Npb25DYW5Mb2FkTWVkaWEoY29uc3Qg
UGxhdGZvcm1NZWRpYVNlc3Npb24mKSBjb25zdDsKLQotI2lmIFBMQVRGT1JNKElPUykKLSAgICB2
aXJ0dWFsIHZvaWQgY29uZmlndXJlV2lyZUxlc3NUYXJnZXRNb25pdG9yaW5nKCkgeyB9Ci0gICAg
dmlydHVhbCBib29sIGhhc1dpcmVsZXNzVGFyZ2V0c0F2YWlsYWJsZSgpIHsgcmV0dXJuIGZhbHNl
OyB9Ci0jZW5kaWYKLQotICAgIHZvaWQgc2V0Q3VycmVudFNlc3Npb24oUGxhdGZvcm1NZWRpYVNl
c3Npb24mKTsKLSAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbiogY3VycmVudFNlc3Npb24oKTsKLQot
cHJvdGVjdGVkOgotICAgIGZyaWVuZCBjbGFzcyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjsKLSAgICBl
eHBsaWNpdCBNZWRpYVNlc3Npb25NYW5hZ2VyKCk7Ci0KLSAgICB2b2lkIGFkZFNlc3Npb24oUGxh
dGZvcm1NZWRpYVNlc3Npb24mKTsKLSAgICB2b2lkIHJlbW92ZVNlc3Npb24oUGxhdGZvcm1NZWRp
YVNlc3Npb24mKTsKLQotICAgIFZlY3RvcjxQbGF0Zm9ybU1lZGlhU2Vzc2lvbio+IHNlc3Npb25z
KCkgeyByZXR1cm4gbV9zZXNzaW9uczsgfQotCi1wcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBJ
bnRlcm5hbHM7Ci0KLSAgICB2b2lkIHVwZGF0ZVNlc3Npb25TdGF0ZSgpOwotCi0gICAgLy8gUmVt
b3RlQ29tbWFuZExpc3RlbmVyQ2xpZW50Ci0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lk
IGRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVt
b3RlQ29udHJvbENvbW1hbmRUeXBlKSBvdmVycmlkZTsKLQotICAgIC8vIEF1ZGlvSGFyZHdhcmVM
aXN0ZW5lckNsaWVudAotICAgIHZpcnR1YWwgdm9pZCBhdWRpb0hhcmR3YXJlRGlkQmVjb21lQWN0
aXZlKCkgb3ZlcnJpZGUgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGF1ZGlvSGFyZHdhcmVEaWRCZWNv
bWVJbmFjdGl2ZSgpIG92ZXJyaWRlIHsgfQotICAgIHZpcnR1YWwgdm9pZCBhdWRpb091dHB1dERl
dmljZUNoYW5nZWQoKSBvdmVycmlkZTsKLQotICAgIC8vIFN5c3RlbVNsZWVwTGlzdGVuZXIKLSAg
ICB2aXJ0dWFsIHZvaWQgc3lzdGVtV2lsbFNsZWVwKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2
b2lkIHN5c3RlbURpZFdha2UoKSBvdmVycmlkZTsKLQotICAgIFNlc3Npb25SZXN0cmljdGlvbnMg
bV9yZXN0cmljdGlvbnNbUGxhdGZvcm1NZWRpYVNlc3Npb246OldlYkF1ZGlvICsgMV07Ci0gICAg
VmVjdG9yPFBsYXRmb3JtTWVkaWFTZXNzaW9uKj4gbV9zZXNzaW9uczsKLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8UmVtb3RlQ29tbWFuZExpc3RlbmVyPiBtX3JlbW90ZUNvbW1hbmRMaXN0ZW5lcjsKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8U3lzdGVtU2xlZXBMaXN0ZW5lcj4gbV9zeXN0ZW1TbGVlcExpc3Rl
bmVyOwotICAgIFJlZlB0cjxBdWRpb0hhcmR3YXJlTGlzdGVuZXI+IG1fYXVkaW9IYXJkd2FyZUxp
c3RlbmVyOwotCi0jaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRG
T1JNKElPUykKLSAgICBSZWZQdHI8TWVkaWFQbGF5YmFja1RhcmdldD4gbV9wbGF5YmFja1Rhcmdl
dDsKLSAgICBib29sIG1fY2FuUGxheVRvVGFyZ2V0IHsgZmFsc2UgfTsKLSNlbmRpZgotCi0gICAg
Ym9vbCBtX2ludGVycnVwdGVkIHsgZmFsc2UgfTsKLX07Ci0KLX0KLQotI2VuZGlmIC8vIE1lZGlh
U2Vzc2lvbk1hbmFnZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uY3BwCmluZGV4IDY2OTNhNmY2OTkwYmFlZWJkNTJhZjFi
ZTMyZDYyMWY1OWJiNGIwY2EuLjk5ODk3Y2FiNTkyMjBhMzVhMDQ2MWNjZDIxZGU3YjhhNGUyMjRm
NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVk
aWFTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9y
bU1lZGlhU2Vzc2lvbi5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlICJIVE1MTWVkaWFF
bGVtZW50LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgi
Ci0jaW5jbHVkZSAiTWVkaWFTZXNzaW9uTWFuYWdlci5oIgorI2luY2x1ZGUgIlBsYXRmb3JtTWVk
aWFTZXNzaW9uTWFuYWdlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTY1LDEyICs2
NSwxMiBAQCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UGxhdGZvcm1NZWRpYVNlc3Npb24oUGxhdGZv
cm1NZWRpYVNlc3Npb25DbGllbnQmIGNsaWVudCkKICAgICAsIG1fbm90aWZ5aW5nQ2xpZW50KGZh
bHNlKQogewogICAgIEFTU0VSVChtX2NsaWVudC5tZWRpYVR5cGUoKSA+PSBOb25lICYmIG1fY2xp
ZW50Lm1lZGlhVHlwZSgpIDw9IFdlYkF1ZGlvKTsKLSAgICBNZWRpYVNlc3Npb25NYW5hZ2VyOjpz
aGFyZWRNYW5hZ2VyKCkuYWRkU2Vzc2lvbigqdGhpcyk7CisgICAgUGxhdGZvcm1NZWRpYVNlc3Np
b25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuYWRkU2Vzc2lvbigqdGhpcyk7CiB9CiAKIFBsYXRm
b3JtTWVkaWFTZXNzaW9uOjp+UGxhdGZvcm1NZWRpYVNlc3Npb24oKQogewotICAgIE1lZGlhU2Vz
c2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5yZW1vdmVTZXNzaW9uKCp0aGlzKTsKKyAgICBQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5yZW1vdmVTZXNzaW9u
KCp0aGlzKTsKIH0KIAogdm9pZCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6c2V0U3RhdGUoU3RhdGUg
c3RhdGUpCkBAIC0xMTgsNyArMTE4LDcgQEAgYm9vbCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Y2xp
ZW50V2lsbEJlZ2luUGxheWJhY2soKQogICAgIGlmIChtX25vdGlmeWluZ0NsaWVudCkKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAKLSAgICBpZiAoIU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1h
bmFnZXIoKS5zZXNzaW9uV2lsbEJlZ2luUGxheWJhY2soKnRoaXMpKSB7CisgICAgaWYgKCFQbGF0
Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5zZXNzaW9uV2lsbEJlZ2lu
UGxheWJhY2soKnRoaXMpKSB7CiAgICAgICAgIGlmIChzdGF0ZSgpID09IEludGVycnVwdGVkKQog
ICAgICAgICAgICAgbV9zdGF0ZVRvUmVzdG9yZSA9IFBsYXlpbmc7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKQEAgLTE0Miw3ICsxNDIsNyBAQCBib29sIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpjbGll
bnRXaWxsUGF1c2VQbGF5YmFjaygpCiAgICAgfQogICAgIAogICAgIHNldFN0YXRlKFBhdXNlZCk7
Ci0gICAgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLnNlc3Npb25XaWxsRW5k
UGxheWJhY2soKnRoaXMpOworICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVk
TWFuYWdlcigpLnNlc3Npb25XaWxsRW5kUGxheWJhY2soKnRoaXMpOwogICAgIGlmICghbV9jbGll
bnREYXRhQnVmZmVyaW5nVGltZXIuaXNBY3RpdmUoKSkKICAgICAgICAgbV9jbGllbnREYXRhQnVm
ZmVyaW5nVGltZXIuc3RhcnRPbmVTaG90KGtDbGllbnREYXRhQnVmZmVyaW5nVGltZXJUaHJvdHRs
ZURlbGF5KTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTIwNCw4ICsyMDQsOCBAQCB2b2lkIFBsYXRm
b3JtTWVkaWFTZXNzaW9uOjpjbGllbnREYXRhQnVmZmVyaW5nVGltZXJGaXJlZCgpCiAgICAgaWYg
KG1fc3RhdGUgIT0gUGxheWluZyB8fCAhbV9jbGllbnQuZWxlbWVudElzSGlkZGVuKCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OlNlc3Npb25SZXN0cmljdGlv
bnMgcmVzdHJpY3Rpb25zID0gTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLnJl
c3RyaWN0aW9ucyhtZWRpYVR5cGUoKSk7Ci0gICAgaWYgKChyZXN0cmljdGlvbnMgJiBNZWRpYVNl
c3Npb25NYW5hZ2VyOjpCYWNrZ3JvdW5kVGFiUGxheWJhY2tSZXN0cmljdGVkKSA9PSBNZWRpYVNl
c3Npb25NYW5hZ2VyOjpCYWNrZ3JvdW5kVGFiUGxheWJhY2tSZXN0cmljdGVkKQorICAgIFBsYXRm
b3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6U2Vzc2lvblJlc3RyaWN0aW9ucyByZXN0cmljdGlvbnMg
PSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5yZXN0cmljdGlv
bnMobWVkaWFUeXBlKCkpOworICAgIGlmICgocmVzdHJpY3Rpb25zICYgUGxhdGZvcm1NZWRpYVNl
c3Npb25NYW5hZ2VyOjpCYWNrZ3JvdW5kVGFiUGxheWJhY2tSZXN0cmljdGVkKSA9PSBQbGF0Zm9y
bU1lZGlhU2Vzc2lvbk1hbmFnZXI6OkJhY2tncm91bmRUYWJQbGF5YmFja1Jlc3RyaWN0ZWQpCiAg
ICAgICAgIHBhdXNlU2Vzc2lvbigpOwogfQogCkBAIC0yMTQsNyArMjE0LDcgQEAgdm9pZCBQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6dXBkYXRlQ2xpZW50RGF0YUJ1ZmZlcmluZygpCiAgICAgaWYgKG1f
Y2xpZW50RGF0YUJ1ZmZlcmluZ1RpbWVyLmlzQWN0aXZlKCkpCiAgICAgICAgIG1fY2xpZW50RGF0
YUJ1ZmZlcmluZ1RpbWVyLnN0b3AoKTsKIAotICAgIG1fY2xpZW50LnNldFNob3VsZEJ1ZmZlckRh
dGEoTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLnNlc3Npb25DYW5Mb2FkTWVk
aWEoKnRoaXMpKTsKKyAgICBtX2NsaWVudC5zZXRTaG91bGRCdWZmZXJEYXRhKFBsYXRmb3JtTWVk
aWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLnNlc3Npb25DYW5Mb2FkTWVkaWEoKnRo
aXMpKTsKIH0KIAogYm9vbCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6aXNIaWRkZW4oKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNl
c3Npb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3Jt
TWVkaWFTZXNzaW9uTWFuYWdlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzI5M2Y1NjRiY2FjNGExYjUzYTU0
OTFmYTAwZGVmZDY3MzQ0ZGZjZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAKQEAgLTAsMCArMSwz
MzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaCIKKworI2lmIEVOQUJMRShWSURFTykKKworI2lu
Y2x1ZGUgIkF1ZGlvU2Vzc2lvbi5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJO
b3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIlBsYXRmb3JtTWVkaWFTZXNzaW9uLmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworI2lmICFQTEFURk9STShJT1MpCitQbGF0Zm9ybU1lZGlhU2Vz
c2lvbk1hbmFnZXImIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigp
Cit7CisgICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFBsYXRmb3JtTWVkaWFTZXNz
aW9uTWFuYWdlciwgbWFuYWdlciwgKCkpOworICAgIHJldHVybiBtYW5hZ2VyOworfQorI2VuZGlm
CisKK1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5h
Z2VyKCkKKyAgICA6IG1fc3lzdGVtU2xlZXBMaXN0ZW5lcihTeXN0ZW1TbGVlcExpc3RlbmVyOjpj
cmVhdGUoKnRoaXMpKQoreworICAgIHJlc2V0UmVzdHJpY3Rpb25zKCk7Cit9CisKK3ZvaWQgUGxh
dGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpyZXNldFJlc3RyaWN0aW9ucygpCit7CisgICAgbV9y
ZXN0cmljdGlvbnNbUGxhdGZvcm1NZWRpYVNlc3Npb246OlZpZGVvXSA9IE5vUmVzdHJpY3Rpb25z
OworICAgIG1fcmVzdHJpY3Rpb25zW1BsYXRmb3JtTWVkaWFTZXNzaW9uOjpBdWRpb10gPSBOb1Jl
c3RyaWN0aW9uczsKKyAgICBtX3Jlc3RyaWN0aW9uc1tQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6V2Vi
QXVkaW9dID0gTm9SZXN0cmljdGlvbnM7Cit9CisKK2Jvb2wgUGxhdGZvcm1NZWRpYVNlc3Npb25N
YW5hZ2VyOjpoYXMoUGxhdGZvcm1NZWRpYVNlc3Npb246Ok1lZGlhVHlwZSB0eXBlKSBjb25zdAor
eworICAgIEFTU0VSVCh0eXBlID49IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpOb25lICYmIHR5cGUg
PD0gUGxhdGZvcm1NZWRpYVNlc3Npb246OldlYkF1ZGlvKTsKKworICAgIGZvciAoYXV0byogc2Vz
c2lvbiA6IG1fc2Vzc2lvbnMpIHsKKyAgICAgICAgaWYgKHNlc3Npb24tPm1lZGlhVHlwZSgpID09
IHR5cGUpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKK2Jvb2wgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjphY3RpdmVBdWRpb1Nl
c3Npb25SZXF1aXJlZCgpIGNvbnN0Cit7CisgICAgZm9yIChhdXRvKiBzZXNzaW9uIDogbV9zZXNz
aW9ucykgeworICAgICAgICBpZiAoc2Vzc2lvbi0+bWVkaWFUeXBlKCkgIT0gUGxhdGZvcm1NZWRp
YVNlc3Npb246Ok5vbmUgJiYgc2Vzc2lvbi0+c3RhdGUoKSA9PSBQbGF0Zm9ybU1lZGlhU2Vzc2lv
bjo6U3RhdGU6OlBsYXlpbmcpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAg
CisgICAgcmV0dXJuIGZhbHNlOworfQorCitpbnQgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2Vy
Ojpjb3VudChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlIHR5cGUpIGNvbnN0Cit7Cisg
ICAgQVNTRVJUKHR5cGUgPj0gUGxhdGZvcm1NZWRpYVNlc3Npb246Ok5vbmUgJiYgdHlwZSA8PSBQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbjo6V2ViQXVkaW8pOworCisgICAgaW50IGNvdW50ID0gMDsKKyAg
ICBmb3IgKGF1dG8qIHNlc3Npb24gOiBtX3Nlc3Npb25zKSB7CisgICAgICAgIGlmIChzZXNzaW9u
LT5tZWRpYVR5cGUoKSA9PSB0eXBlKQorICAgICAgICAgICAgKytjb3VudDsKKyAgICB9CisKKyAg
ICByZXR1cm4gY291bnQ7Cit9CisKK3ZvaWQgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpi
ZWdpbkludGVycnVwdGlvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6SW50ZXJydXB0aW9uVHlwZSB0
eXBlKQoreworICAgIExPRyhNZWRpYSwgIlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6YmVn
aW5JbnRlcnJ1cHRpb24iKTsKKworICAgIG1faW50ZXJydXB0ZWQgPSB0cnVlOworICAgIFZlY3Rv
cjxQbGF0Zm9ybU1lZGlhU2Vzc2lvbio+IHNlc3Npb25zID0gbV9zZXNzaW9uczsKKyAgICBmb3Ig
KGF1dG8qIHNlc3Npb24gOiBzZXNzaW9ucykKKyAgICAgICAgc2Vzc2lvbi0+YmVnaW5JbnRlcnJ1
cHRpb24odHlwZSk7CisgICAgdXBkYXRlU2Vzc2lvblN0YXRlKCk7Cit9CisKK3ZvaWQgUGxhdGZv
cm1NZWRpYVNlc3Npb25NYW5hZ2VyOjplbmRJbnRlcnJ1cHRpb24oUGxhdGZvcm1NZWRpYVNlc3Np
b246OkVuZEludGVycnVwdGlvbkZsYWdzIGZsYWdzKQoreworICAgIExPRyhNZWRpYSwgIlBsYXRm
b3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6ZW5kSW50ZXJydXB0aW9uIik7CisKKyAgICBtX2ludGVy
cnVwdGVkID0gZmFsc2U7CisgICAgVmVjdG9yPFBsYXRmb3JtTWVkaWFTZXNzaW9uKj4gc2Vzc2lv
bnMgPSBtX3Nlc3Npb25zOworICAgIGZvciAoYXV0byogc2Vzc2lvbiA6IHNlc3Npb25zKQorICAg
ICAgICBzZXNzaW9uLT5lbmRJbnRlcnJ1cHRpb24oZmxhZ3MpOworfQorCit2b2lkIFBsYXRmb3Jt
TWVkaWFTZXNzaW9uTWFuYWdlcjo6YWRkU2Vzc2lvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbiYgc2Vz
c2lvbikKK3sKKyAgICBMT0coTWVkaWEsICJQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OmFk
ZFNlc3Npb24gLSAlcCIsICZzZXNzaW9uKTsKKyAgICAKKyAgICBtX3Nlc3Npb25zLmFwcGVuZCgm
c2Vzc2lvbik7CisgICAgaWYgKG1faW50ZXJydXB0ZWQpCisgICAgICAgIHNlc3Npb24uc2V0U3Rh
dGUoUGxhdGZvcm1NZWRpYVNlc3Npb246OkludGVycnVwdGVkKTsKKworICAgIGlmICghbV9yZW1v
dGVDb21tYW5kTGlzdGVuZXIpCisgICAgICAgIG1fcmVtb3RlQ29tbWFuZExpc3RlbmVyID0gUmVt
b3RlQ29tbWFuZExpc3RlbmVyOjpjcmVhdGUoKnRoaXMpOworCisgICAgaWYgKCFtX2F1ZGlvSGFy
ZHdhcmVMaXN0ZW5lcikKKyAgICAgICAgbV9hdWRpb0hhcmR3YXJlTGlzdGVuZXIgPSBBdWRpb0hh
cmR3YXJlTGlzdGVuZXI6OmNyZWF0ZSgqdGhpcyk7CisKKyAgICB1cGRhdGVTZXNzaW9uU3RhdGUo
KTsKK30KKwordm9pZCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnJlbW92ZVNlc3Npb24o
UGxhdGZvcm1NZWRpYVNlc3Npb24mIHNlc3Npb24pCit7CisgICAgTE9HKE1lZGlhLCAiUGxhdGZv
cm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpyZW1vdmVTZXNzaW9uIC0gJXAiLCAmc2Vzc2lvbik7Cisg
ICAgCisgICAgc2l6ZV90IGluZGV4ID0gbV9zZXNzaW9ucy5maW5kKCZzZXNzaW9uKTsKKyAgICBB
U1NFUlQoaW5kZXggIT0gbm90Rm91bmQpOworICAgIGlmIChpbmRleCA9PSBub3RGb3VuZCkKKyAg
ICAgICAgcmV0dXJuOworICAgIAorICAgIG1fc2Vzc2lvbnMucmVtb3ZlKGluZGV4KTsKKworICAg
IGlmIChtX3Nlc3Npb25zLmlzRW1wdHkoKSkgeworICAgICAgICBtX3JlbW90ZUNvbW1hbmRMaXN0
ZW5lciA9IG51bGxwdHI7CisgICAgICAgIG1fYXVkaW9IYXJkd2FyZUxpc3RlbmVyID0gbnVsbHB0
cjsKKyAgICB9CisKKyAgICB1cGRhdGVTZXNzaW9uU3RhdGUoKTsKK30KKwordm9pZCBQbGF0Zm9y
bU1lZGlhU2Vzc2lvbk1hbmFnZXI6OmFkZFJlc3RyaWN0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9u
OjpNZWRpYVR5cGUgdHlwZSwgU2Vzc2lvblJlc3RyaWN0aW9ucyByZXN0cmljdGlvbikKK3sKKyAg
ICBBU1NFUlQodHlwZSA+IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpOb25lICYmIHR5cGUgPD0gUGxh
dGZvcm1NZWRpYVNlc3Npb246OldlYkF1ZGlvKTsKKyAgICBtX3Jlc3RyaWN0aW9uc1t0eXBlXSB8
PSByZXN0cmljdGlvbjsKK30KKwordm9pZCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnJl
bW92ZVJlc3RyaWN0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUgdHlwZSwgU2Vz
c2lvblJlc3RyaWN0aW9ucyByZXN0cmljdGlvbikKK3sKKyAgICBBU1NFUlQodHlwZSA+IFBsYXRm
b3JtTWVkaWFTZXNzaW9uOjpOb25lICYmIHR5cGUgPD0gUGxhdGZvcm1NZWRpYVNlc3Npb246Oldl
YkF1ZGlvKTsKKyAgICBtX3Jlc3RyaWN0aW9uc1t0eXBlXSAmPSB+cmVzdHJpY3Rpb247Cit9CisK
K1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6U2Vzc2lvblJlc3RyaWN0aW9ucyBQbGF0Zm9y
bU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnJlc3RyaWN0aW9ucyhQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6
TWVkaWFUeXBlIHR5cGUpCit7CisgICAgQVNTRVJUKHR5cGUgPiBQbGF0Zm9ybU1lZGlhU2Vzc2lv
bjo6Tm9uZSAmJiB0eXBlIDw9IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpXZWJBdWRpbyk7CisgICAg
cmV0dXJuIG1fcmVzdHJpY3Rpb25zW3R5cGVdOworfQorCitib29sIFBsYXRmb3JtTWVkaWFTZXNz
aW9uTWFuYWdlcjo6c2Vzc2lvbldpbGxCZWdpblBsYXliYWNrKFBsYXRmb3JtTWVkaWFTZXNzaW9u
JiBzZXNzaW9uKQoreworICAgIExPRyhNZWRpYSwgIlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdl
cjo6c2Vzc2lvbldpbGxCZWdpblBsYXliYWNrIC0gJXAiLCAmc2Vzc2lvbik7CisgICAgCisgICAg
c2V0Q3VycmVudFNlc3Npb24oc2Vzc2lvbik7CisKKyAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6
TWVkaWFUeXBlIHNlc3Npb25UeXBlID0gc2Vzc2lvbi5tZWRpYVR5cGUoKTsKKyAgICBTZXNzaW9u
UmVzdHJpY3Rpb25zIHJlc3RyaWN0aW9ucyA9IG1fcmVzdHJpY3Rpb25zW3Nlc3Npb25UeXBlXTsK
KyAgICBpZiAoc2Vzc2lvbi5zdGF0ZSgpID09IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpJbnRlcnJ1
cHRlZCAmJiByZXN0cmljdGlvbnMgJiBJbnRlcnJ1cHRlZFBsYXliYWNrTm90UGVybWl0dGVkKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyNpZiBVU0UoQVVESU9fU0VTU0lPTikKKyAgICBpZiAo
YWN0aXZlQXVkaW9TZXNzaW9uUmVxdWlyZWQoKSAmJiAhQXVkaW9TZXNzaW9uOjpzaGFyZWRTZXNz
aW9uKCkudHJ5VG9TZXRBY3RpdmUodHJ1ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRp
ZgorCisgICAgaWYgKG1faW50ZXJydXB0ZWQpCisgICAgICAgIGVuZEludGVycnVwdGlvbihQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6Tm9GbGFncyk7CisKKyAgICBWZWN0b3I8UGxhdGZvcm1NZWRpYVNl
c3Npb24qPiBzZXNzaW9ucyA9IG1fc2Vzc2lvbnM7CisgICAgZm9yIChhdXRvKiBvbmVTZXNzaW9u
IDogc2Vzc2lvbnMpIHsKKyAgICAgICAgaWYgKG9uZVNlc3Npb24gPT0gJnNlc3Npb24pCisgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKG9uZVNlc3Npb24tPm1lZGlhVHlwZSgpID09
IHNlc3Npb25UeXBlICYmIHJlc3RyaWN0aW9ucyAmIENvbmN1cnJlbnRQbGF5YmFja05vdFBlcm1p
dHRlZCkKKyAgICAgICAgICAgIG9uZVNlc3Npb24tPnBhdXNlU2Vzc2lvbigpOworICAgIH0KKwor
ICAgIHVwZGF0ZVNlc3Npb25TdGF0ZSgpOworICAgIHJldHVybiB0cnVlOworfQorICAgIAordm9p
ZCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNlc3Npb25XaWxsRW5kUGxheWJhY2soUGxh
dGZvcm1NZWRpYVNlc3Npb24mIHNlc3Npb24pCit7CisgICAgTE9HKE1lZGlhLCAiUGxhdGZvcm1N
ZWRpYVNlc3Npb25NYW5hZ2VyOjpzZXNzaW9uV2lsbEVuZFBsYXliYWNrIC0gJXAiLCAmc2Vzc2lv
bik7CisgICAgCisgICAgaWYgKG1fc2Vzc2lvbnMuc2l6ZSgpIDwgMikKKyAgICAgICAgcmV0dXJu
OworICAgIAorICAgIHNpemVfdCBwYXVzaW5nU2Vzc2lvbkluZGV4ID0gbm90Rm91bmQ7CisgICAg
c2l6ZV90IGxhc3RQbGF5aW5nU2Vzc2lvbkluZGV4ID0gbm90Rm91bmQ7CisgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBtX3Nlc3Npb25zLnNpemUoKTsgKytpKSB7CisgICAgICAgIFBsYXRmb3Jt
TWVkaWFTZXNzaW9uKiBvbmVTZXNzaW9uID0gbV9zZXNzaW9uc1tpXTsKKyAgICAgICAgCisgICAg
ICAgIGlmIChvbmVTZXNzaW9uID09ICZzZXNzaW9uKSB7CisgICAgICAgICAgICBwYXVzaW5nU2Vz
c2lvbkluZGV4ID0gaTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAg
IGlmIChvbmVTZXNzaW9uLT5zdGF0ZSgpID09IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQbGF5aW5n
KSB7CisgICAgICAgICAgICBsYXN0UGxheWluZ1Nlc3Npb25JbmRleCA9IGk7CisgICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAob25lU2Vzc2lvbi0+c3RhdGUoKSAh
PSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UGxheWluZykKKyAgICAgICAgICAgIGJyZWFrOworICAg
IH0KKyAgICBpZiAobGFzdFBsYXlpbmdTZXNzaW9uSW5kZXggPT0gbm90Rm91bmQgfHwgcGF1c2lu
Z1Nlc3Npb25JbmRleCA9PSBub3RGb3VuZCkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIGlm
IChwYXVzaW5nU2Vzc2lvbkluZGV4ID4gbGFzdFBsYXlpbmdTZXNzaW9uSW5kZXgpCisgICAgICAg
IHJldHVybjsKKyAgICAKKyAgICBtX3Nlc3Npb25zLnJlbW92ZShwYXVzaW5nU2Vzc2lvbkluZGV4
KTsKKyAgICBtX3Nlc3Npb25zLmluc2VydChsYXN0UGxheWluZ1Nlc3Npb25JbmRleCwgJnNlc3Np
b24pOworICAgIAorICAgIExPRyhNZWRpYSwgIlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6
c2Vzc2lvbldpbGxFbmRQbGF5YmFjayAtIHNlc3Npb24gbW92ZWQgZnJvbSBpbmRleCAlenUgdG8g
JXp1IiwgcGF1c2luZ1Nlc3Npb25JbmRleCwgbGFzdFBsYXlpbmdTZXNzaW9uSW5kZXgpOworfQor
Cit2b2lkIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2V0Q3VycmVudFNlc3Npb24oUGxh
dGZvcm1NZWRpYVNlc3Npb24mIHNlc3Npb24pCit7CisgICAgTE9HKE1lZGlhLCAiUGxhdGZvcm1N
ZWRpYVNlc3Npb25NYW5hZ2VyOjpzZXRDdXJyZW50U2Vzc2lvbiAtICVwIiwgJnNlc3Npb24pOwor
ICAgIAorICAgIGlmIChtX3Nlc3Npb25zLnNpemUoKSA8IDIpCisgICAgICAgIHJldHVybjsKKyAg
ICAKKyAgICBzaXplX3QgaW5kZXggPSBtX3Nlc3Npb25zLmZpbmQoJnNlc3Npb24pOworICAgIEFT
U0VSVChpbmRleCAhPSBub3RGb3VuZCk7CisgICAgaWYgKCFpbmRleCB8fCBpbmRleCA9PSBub3RG
b3VuZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9zZXNzaW9ucy5yZW1vdmUoaW5kZXgpOwor
ICAgIG1fc2Vzc2lvbnMuaW5zZXJ0KDAsICZzZXNzaW9uKTsKKyAgICAKKyAgICBMT0coTWVkaWEs
ICJQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNldEN1cnJlbnRTZXNzaW9uIC0gc2Vzc2lv
biBtb3ZlZCBmcm9tIGluZGV4ICV6dSB0byAwIiwgaW5kZXgpOworfQorICAgIAorUGxhdGZvcm1N
ZWRpYVNlc3Npb24qIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6Y3VycmVudFNlc3Npb24o
KQoreworICAgIGlmICghbV9zZXNzaW9ucy5zaXplKCkpCisgICAgICAgIHJldHVybiBudWxscHRy
OworCisgICAgcmV0dXJuIG1fc2Vzc2lvbnNbMF07Cit9CisgICAgCitib29sIFBsYXRmb3JtTWVk
aWFTZXNzaW9uTWFuYWdlcjo6c2Vzc2lvblJlc3RyaWN0c0lubGluZVZpZGVvUGxheWJhY2soY29u
c3QgUGxhdGZvcm1NZWRpYVNlc3Npb24mIHNlc3Npb24pIGNvbnN0Cit7CisgICAgUGxhdGZvcm1N
ZWRpYVNlc3Npb246Ok1lZGlhVHlwZSBzZXNzaW9uVHlwZSA9IHNlc3Npb24ucHJlc2VudGF0aW9u
VHlwZSgpOworICAgIGlmIChzZXNzaW9uVHlwZSAhPSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Vmlk
ZW8pCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBtX3Jlc3RyaWN0aW9uc1tz
ZXNzaW9uVHlwZV0gJiBJbmxpbmVWaWRlb1BsYXliYWNrUmVzdHJpY3RlZDsKK30KKworYm9vbCBQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNlc3Npb25DYW5Mb2FkTWVkaWEoY29uc3QgUGxh
dGZvcm1NZWRpYVNlc3Npb24mIHNlc3Npb24pIGNvbnN0Cit7CisgICAgcmV0dXJuIHNlc3Npb24u
c3RhdGUoKSA9PSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UGxheWluZyB8fCAhc2Vzc2lvbi5pc0hp
ZGRlbigpIHx8IHNlc3Npb24uaXNQbGF5aW5nVG9XaXJlbGVzc1BsYXliYWNrVGFyZ2V0KCk7Cit9
CisKK3ZvaWQgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjphcHBsaWNhdGlvbldpbGxFbnRl
ckJhY2tncm91bmQoKSBjb25zdAoreworICAgIExPRyhNZWRpYSwgIlBsYXRmb3JtTWVkaWFTZXNz
aW9uTWFuYWdlcjo6YXBwbGljYXRpb25XaWxsRW50ZXJCYWNrZ3JvdW5kIik7CisgICAgVmVjdG9y
PFBsYXRmb3JtTWVkaWFTZXNzaW9uKj4gc2Vzc2lvbnMgPSBtX3Nlc3Npb25zOworICAgIGZvciAo
YXV0byogc2Vzc2lvbiA6IHNlc3Npb25zKSB7CisgICAgICAgIGlmIChtX3Jlc3RyaWN0aW9uc1tz
ZXNzaW9uLT5tZWRpYVR5cGUoKV0gJiBCYWNrZ3JvdW5kUHJvY2Vzc1BsYXliYWNrUmVzdHJpY3Rl
ZCkKKyAgICAgICAgICAgIHNlc3Npb24tPmJlZ2luSW50ZXJydXB0aW9uKFBsYXRmb3JtTWVkaWFT
ZXNzaW9uOjpFbnRlcmluZ0JhY2tncm91bmQpOworICAgIH0KK30KKwordm9pZCBQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbk1hbmFnZXI6OmFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZCgpIGNvbnN0
Cit7CisgICAgTE9HKE1lZGlhLCAiUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjphcHBsaWNh
dGlvbldpbGxFbnRlckZvcmVncm91bmQiKTsKKyAgICBWZWN0b3I8UGxhdGZvcm1NZWRpYVNlc3Np
b24qPiBzZXNzaW9ucyA9IG1fc2Vzc2lvbnM7CisgICAgZm9yIChhdXRvKiBzZXNzaW9uIDogc2Vz
c2lvbnMpIHsKKyAgICAgICAgaWYgKG1fcmVzdHJpY3Rpb25zW3Nlc3Npb24tPm1lZGlhVHlwZSgp
XSAmIEJhY2tncm91bmRQcm9jZXNzUGxheWJhY2tSZXN0cmljdGVkKQorICAgICAgICAgICAgc2Vz
c2lvbi0+ZW5kSW50ZXJydXB0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNYXlSZXN1bWVQbGF5
aW5nKTsKKyAgICB9Cit9CisKKyNpZiAhUExBVEZPUk0oQ09DT0EpCit2b2lkIFBsYXRmb3JtTWVk
aWFTZXNzaW9uTWFuYWdlcjo6dXBkYXRlU2Vzc2lvblN0YXRlKCkKK3sKK30KKyNlbmRpZgorCit2
b2lkIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6ZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xD
b21tYW5kKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUgY29t
bWFuZCkKK3sKKyAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbiogYWN0aXZlU2Vzc2lvbiA9IGN1cnJl
bnRTZXNzaW9uKCk7CisgICAgaWYgKCFhY3RpdmVTZXNzaW9uIHx8ICFhY3RpdmVTZXNzaW9uLT5j
YW5SZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmRzKCkpCisgICAgICAgIHJldHVybjsKKyAgICBh
Y3RpdmVTZXNzaW9uLT5kaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoY29tbWFuZCk7Cit9
CisKK3ZvaWQgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpzeXN0ZW1XaWxsU2xlZXAoKQor
eworICAgIGlmIChtX2ludGVycnVwdGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBmb3IgKGF1
dG8gc2Vzc2lvbiA6IG1fc2Vzc2lvbnMpCisgICAgICAgIHNlc3Npb24tPmJlZ2luSW50ZXJydXB0
aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTeXN0ZW1TbGVlcCk7Cit9CisKK3ZvaWQgUGxhdGZv
cm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpzeXN0ZW1EaWRXYWtlKCkKK3sKKyAgICBpZiAobV9pbnRl
cnJ1cHRlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9yIChhdXRvIHNlc3Npb24gOiBtX3Nl
c3Npb25zKQorICAgICAgICBzZXNzaW9uLT5lbmRJbnRlcnJ1cHRpb24oUGxhdGZvcm1NZWRpYVNl
c3Npb246Ok1heVJlc3VtZVBsYXlpbmcpOworfQorCit2b2lkIFBsYXRmb3JtTWVkaWFTZXNzaW9u
TWFuYWdlcjo6YXVkaW9PdXRwdXREZXZpY2VDaGFuZ2VkKCkKK3sKKyAgICB1cGRhdGVTZXNzaW9u
U3RhdGUoKTsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMmQ3NDhhMGJiZjUyYzdiNWE2Zjk2ZDZiZTE2MGVhYmMxMjNkNDZkOAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9u
TWFuYWdlci5oCkBAIC0wLDAgKzEsMTMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIw
MTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFBs
YXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcl9oCisjZGVmaW5lIFBsYXRmb3JtTWVkaWFTZXNzaW9u
TWFuYWdlcl9oCisKKyNpbmNsdWRlICJBdWRpb0hhcmR3YXJlTGlzdGVuZXIuaCIKKyNpbmNsdWRl
ICJQbGF0Zm9ybU1lZGlhU2Vzc2lvbi5oIgorI2luY2x1ZGUgIlJlbW90ZUNvbW1hbmRMaXN0ZW5l
ci5oIgorI2luY2x1ZGUgIlNldHRpbmdzLmgiCisjaW5jbHVkZSAiU3lzdGVtU2xlZXBMaXN0ZW5l
ci5oIgorI2luY2x1ZGUgPG1hcD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgSFRNTE1lZGlhRWxlbWVudDsKK2NsYXNzIFBsYXRmb3JtTWVk
aWFTZXNzaW9uOworY2xhc3MgUmVtb3RlQ29tbWFuZExpc3RlbmVyOworCitjbGFzcyBQbGF0Zm9y
bU1lZGlhU2Vzc2lvbk1hbmFnZXIgOiBwcml2YXRlIFJlbW90ZUNvbW1hbmRMaXN0ZW5lckNsaWVu
dCwgcHJpdmF0ZSBTeXN0ZW1TbGVlcExpc3RlbmVyOjpDbGllbnQsIHByaXZhdGUgQXVkaW9IYXJk
d2FyZUxpc3RlbmVyOjpDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVi
bGljOgorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFn
ZXImIHNoYXJlZE1hbmFnZXIoKTsKKyAgICB2aXJ0dWFsIH5QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1h
bmFnZXIoKSB7IH0KKworICAgIGJvb2wgaGFzKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNZWRpYVR5
cGUpIGNvbnN0OworICAgIGludCBjb3VudChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBl
KSBjb25zdDsKKyAgICBib29sIGFjdGl2ZUF1ZGlvU2Vzc2lvblJlcXVpcmVkKCkgY29uc3Q7CisK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGJlZ2luSW50ZXJydXB0aW9uKFBsYXRmb3JtTWVkaWFT
ZXNzaW9uOjpJbnRlcnJ1cHRpb25UeXBlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGVuZElu
dGVycnVwdGlvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6RW5kSW50ZXJydXB0aW9uRmxhZ3MpOwor
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQo
KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGxpY2F0aW9uV2lsbEVudGVyQmFj
a2dyb3VuZCgpIGNvbnN0OworCisgICAgZW51bSBTZXNzaW9uUmVzdHJpY3Rpb25GbGFncyB7Cisg
ICAgICAgIE5vUmVzdHJpY3Rpb25zID0gMCwKKyAgICAgICAgQ29uY3VycmVudFBsYXliYWNrTm90
UGVybWl0dGVkID0gMSA8PCAwLAorICAgICAgICBJbmxpbmVWaWRlb1BsYXliYWNrUmVzdHJpY3Rl
ZCA9IDEgPDwgMSwKKyAgICAgICAgTWV0YWRhdGFQcmVsb2FkaW5nTm90UGVybWl0dGVkID0gMSA8
PCAyLAorICAgICAgICBBdXRvUHJlbG9hZGluZ05vdFBlcm1pdHRlZCA9IDEgPDwgMywKKyAgICAg
ICAgQmFja2dyb3VuZFByb2Nlc3NQbGF5YmFja1Jlc3RyaWN0ZWQgPSAxIDw8IDQsCisgICAgICAg
IEJhY2tncm91bmRUYWJQbGF5YmFja1Jlc3RyaWN0ZWQgPSAxIDw8IDUsCisgICAgICAgIEludGVy
cnVwdGVkUGxheWJhY2tOb3RQZXJtaXR0ZWQgPSAxIDw8IDYsCisgICAgfTsKKyAgICB0eXBlZGVm
IHVuc2lnbmVkIFNlc3Npb25SZXN0cmljdGlvbnM7CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGFkZFJlc3RyaWN0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUsIFNlc3Npb25S
ZXN0cmljdGlvbnMpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlUmVzdHJpY3Rpb24o
UGxhdGZvcm1NZWRpYVNlc3Npb246Ok1lZGlhVHlwZSwgU2Vzc2lvblJlc3RyaWN0aW9ucyk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgU2Vzc2lvblJlc3RyaWN0aW9ucyByZXN0cmljdGlvbnMoUGxhdGZv
cm1NZWRpYVNlc3Npb246Ok1lZGlhVHlwZSk7CisgICAgdmlydHVhbCB2b2lkIHJlc2V0UmVzdHJp
Y3Rpb25zKCk7CisKKyAgICB2aXJ0dWFsIGJvb2wgc2Vzc2lvbldpbGxCZWdpblBsYXliYWNrKFBs
YXRmb3JtTWVkaWFTZXNzaW9uJik7CisgICAgdmlydHVhbCB2b2lkIHNlc3Npb25XaWxsRW5kUGxh
eWJhY2soUGxhdGZvcm1NZWRpYVNlc3Npb24mKTsKKworICAgIGJvb2wgc2Vzc2lvblJlc3RyaWN0
c0lubGluZVZpZGVvUGxheWJhY2soY29uc3QgUGxhdGZvcm1NZWRpYVNlc3Npb24mKSBjb25zdDsK
KworICAgIHZpcnR1YWwgYm9vbCBzZXNzaW9uQ2FuTG9hZE1lZGlhKGNvbnN0IFBsYXRmb3JtTWVk
aWFTZXNzaW9uJikgY29uc3Q7CisKKyNpZiBQTEFURk9STShJT1MpCisgICAgdmlydHVhbCB2b2lk
IGNvbmZpZ3VyZVdpcmVMZXNzVGFyZ2V0TW9uaXRvcmluZygpIHsgfQorICAgIHZpcnR1YWwgYm9v
bCBoYXNXaXJlbGVzc1RhcmdldHNBdmFpbGFibGUoKSB7IHJldHVybiBmYWxzZTsgfQorI2VuZGlm
CisKKyAgICB2b2lkIHNldEN1cnJlbnRTZXNzaW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uJik7Cisg
ICAgUGxhdGZvcm1NZWRpYVNlc3Npb24qIGN1cnJlbnRTZXNzaW9uKCk7CisKK3Byb3RlY3RlZDoK
KyAgICBmcmllbmQgY2xhc3MgUGxhdGZvcm1NZWRpYVNlc3Npb247CisgICAgZXhwbGljaXQgUGxh
dGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyKCk7CisKKyAgICB2b2lkIGFkZFNlc3Npb24oUGxhdGZv
cm1NZWRpYVNlc3Npb24mKTsKKyAgICB2b2lkIHJlbW92ZVNlc3Npb24oUGxhdGZvcm1NZWRpYVNl
c3Npb24mKTsKKworICAgIFZlY3RvcjxQbGF0Zm9ybU1lZGlhU2Vzc2lvbio+IHNlc3Npb25zKCkg
eyByZXR1cm4gbV9zZXNzaW9uczsgfQorCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBJbnRl
cm5hbHM7CisKKyAgICB2b2lkIHVwZGF0ZVNlc3Npb25TdGF0ZSgpOworCisgICAgLy8gUmVtb3Rl
Q29tbWFuZExpc3RlbmVyQ2xpZW50CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3Rl
Q29udHJvbENvbW1hbmRUeXBlKSBvdmVycmlkZTsKKworICAgIC8vIEF1ZGlvSGFyZHdhcmVMaXN0
ZW5lckNsaWVudAorICAgIHZpcnR1YWwgdm9pZCBhdWRpb0hhcmR3YXJlRGlkQmVjb21lQWN0aXZl
KCkgb3ZlcnJpZGUgeyB9CisgICAgdmlydHVhbCB2b2lkIGF1ZGlvSGFyZHdhcmVEaWRCZWNvbWVJ
bmFjdGl2ZSgpIG92ZXJyaWRlIHsgfQorICAgIHZpcnR1YWwgdm9pZCBhdWRpb091dHB1dERldmlj
ZUNoYW5nZWQoKSBvdmVycmlkZTsKKworICAgIC8vIFN5c3RlbVNsZWVwTGlzdGVuZXIKKyAgICB2
aXJ0dWFsIHZvaWQgc3lzdGVtV2lsbFNsZWVwKCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lk
IHN5c3RlbURpZFdha2UoKSBvdmVycmlkZTsKKworICAgIFNlc3Npb25SZXN0cmljdGlvbnMgbV9y
ZXN0cmljdGlvbnNbUGxhdGZvcm1NZWRpYVNlc3Npb246OldlYkF1ZGlvICsgMV07CisgICAgVmVj
dG9yPFBsYXRmb3JtTWVkaWFTZXNzaW9uKj4gbV9zZXNzaW9uczsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8UmVtb3RlQ29tbWFuZExpc3RlbmVyPiBtX3JlbW90ZUNvbW1hbmRMaXN0ZW5lcjsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8U3lzdGVtU2xlZXBMaXN0ZW5lcj4gbV9zeXN0ZW1TbGVlcExpc3RlbmVy
OworICAgIFJlZlB0cjxBdWRpb0hhcmR3YXJlTGlzdGVuZXI+IG1fYXVkaW9IYXJkd2FyZUxpc3Rl
bmVyOworCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JN
KElPUykKKyAgICBSZWZQdHI8TWVkaWFQbGF5YmFja1RhcmdldD4gbV9wbGF5YmFja1RhcmdldDsK
KyAgICBib29sIG1fY2FuUGxheVRvVGFyZ2V0IHsgZmFsc2UgfTsKKyNlbmRpZgorCisgICAgYm9v
bCBtX2ludGVycnVwdGVkIHsgZmFsc2UgfTsKK307CisKK30KKworI2VuZGlmIC8vIFBsYXRmb3Jt
TWVkaWFTZXNzaW9uTWFuYWdlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5jcHAKaW5kZXggZGMzYTFiNTRlZDQz
Yjc0Mjg5OGU1OTM5YTdhZGNmYzM4ZjRlMTUzYy4uNjgzNDRlMDdkOTk2MjFhN2NjYTVjM2ZhZTg5
NWFkYjI2MGU4ZTFjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
bWFjL0F1ZGlvRGVzdGluYXRpb25NYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmNwcApAQCAtMzgsNyArMzgsNyBAQAogI2lu
Y2x1ZGUgIkF1ZGlvU2Vzc2lvbi5oIgogI2luY2x1ZGUgIkZsb2F0Q29udmVyc2lvbi5oIgogI2lu
Y2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRlICJNZWRpYVNlc3Npb25NYW5hZ2VyLmgiCisjaW5j
bHVkZSAiUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiVmVjdG9yTWF0
aC5oIgogI2luY2x1ZGUgPENvcmVBdWRpby9BdWRpb0hhcmR3YXJlLmg+CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9NZWRpYVNlc3Npb25NYW5hZ2VyTWFj
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9NZWRpYVNlc3Npb25NYW5h
Z2VyTWFjLmNwcAppbmRleCBlMjc0NDE4ODA5YjdkNDUxNTJmZmEzYmRhYzA5ZjY0ZTYyOWI0MTdh
Li5iMzg5ZWVkZmFlZTA2MjQ5NGIzOWQxM2I0YzdkMzhmMTQxZDY0YjY3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL01lZGlhU2Vzc2lvbk1h
bmFnZXJNYWMuY3BwCkBAIC0yNCw3ICsyNCw3IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbk1hbmFnZXIuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbk1hbmFnZXIuaCIKIAogI2lmIFVTRShBVURJT19TRVNTSU9OKQogCkBAIC0zNyw5
ICszNyw5IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogc3RhdGljIGNvbnN0IHNpemVfdCBr
V2ViQXVkaW9CdWZmZXJTaXplID0gMTI4Owogc3RhdGljIGNvbnN0IHNpemVfdCBrTG93UG93ZXJW
aWRlb0J1ZmZlclNpemUgPSA0MDk2OwogCi12b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnVwZGF0
ZVNlc3Npb25TdGF0ZSgpCit2b2lkIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6dXBkYXRl
U2Vzc2lvblN0YXRlKCkKIHsKLSAgICBMT0coTWVkaWEsICJNZWRpYVNlc3Npb25NYW5hZ2VyOjp1
cGRhdGVTZXNzaW9uU3RhdGUoKSAtIHR5cGVzOiBWaWRlbyglZCksIEF1ZGlvKCVkKSwgV2ViQXVk
aW8oJWQpIiwgY291bnQoUGxhdGZvcm1NZWRpYVNlc3Npb246OlZpZGVvKSwgY291bnQoUGxhdGZv
cm1NZWRpYVNlc3Npb246OkF1ZGlvKSwgY291bnQoUGxhdGZvcm1NZWRpYVNlc3Npb246OldlYkF1
ZGlvKSk7CisgICAgTE9HKE1lZGlhLCAiUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjp1cGRh
dGVTZXNzaW9uU3RhdGUoKSAtIHR5cGVzOiBWaWRlbyglZCksIEF1ZGlvKCVkKSwgV2ViQXVkaW8o
JWQpIiwgY291bnQoUGxhdGZvcm1NZWRpYVNlc3Npb246OlZpZGVvKSwgY291bnQoUGxhdGZvcm1N
ZWRpYVNlc3Npb246OkF1ZGlvKSwgY291bnQoUGxhdGZvcm1NZWRpYVNlc3Npb246OldlYkF1ZGlv
KSk7CiAKICAgICBpZiAoaGFzKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpXZWJBdWRpbykpCiAgICAg
ICAgIEF1ZGlvU2Vzc2lvbjo6c2hhcmVkU2Vzc2lvbigpLnNldFByZWZlcnJlZEJ1ZmZlclNpemUo
a1dlYkF1ZGlvQnVmZmVyU2l6ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5k
ZXggZTU3ZGMxOWMyZjlhZWQ1MjU2MTI3ODJkM2YwMjg4ZGMxNDA3YjdmNC4uMmQyOWRiNzViNzhk
NzU4ZGM0MDAwNjRjMjA5OTJlMzk5OThkNzA5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmNwcApAQCAtNzksNyArNzksNiBAQAogI2luY2x1ZGUgIk1haW5GcmFtZS5oIgogI2luY2x1
ZGUgIk1hbGxvY1N0YXRpc3RpY3MuaCIKICNpbmNsdWRlICJNZWRpYVBsYXllci5oIgotI2luY2x1
ZGUgIk1lZGlhU2Vzc2lvbk1hbmFnZXIuaCIKICNpbmNsdWRlICJNZW1vcnlDYWNoZS5oIgogI2lu
Y2x1ZGUgIk1lbW9yeUluZm8uaCIKICNpbmNsdWRlICJNaWNyb1Rhc2suaCIKQEAgLTg4LDYgKzg3
LDcgQEAKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFnZUNhY2hlLmgiCiAjaW5jbHVk
ZSAiUGFnZU92ZXJsYXkuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIu
aCIKICNpbmNsdWRlICJQcmludENvbnRleHQuaCIKICNpbmNsdWRlICJQc2V1ZG9FbGVtZW50Lmgi
CiAjaW5jbHVkZSAiUmFuZ2UuaCIKQEAgLTMyMiw3ICszMjIsNyBAQCB2b2lkIEludGVybmFsczo6
cmVzZXRUb0NvbnNpc3RlbnRTdGF0ZShQYWdlKiBwYWdlKQogICAgIHBhZ2UtPm1haW5GcmFtZSgp
LmxvYWRlcigpLmNsZWFyVGVzdGluZ092ZXJyaWRlcygpOwogICAgIEFwcGxpY2F0aW9uQ2FjaGVT
dG9yYWdlOjpzaW5nbGV0b24oKS5zZXREZWZhdWx0T3JpZ2luUXVvdGEoQXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2U6Om5vUXVvdGEoKSk7CiAjaWYgRU5BQkxFKFZJREVPKQotICAgIE1lZGlhU2Vzc2lv
bk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5yZXNldFJlc3RyaWN0aW9ucygpOworICAgIFBsYXRm
b3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLnJlc2V0UmVzdHJpY3Rpb25z
KCk7CiAjZW5kaWYKICNpZiBIQVZFKEFDQ0VTU0lCSUxJVFkpCiAgICAgQVhPYmplY3RDYWNoZTo6
c2V0RW5oYW5jZWRVc2VySW50ZXJmYWNlQWNjZXNzaWJpbGl0eShmYWxzZSk7CkBAIC0yNTkxLDcg
KzI1OTEsNyBAQCBWZWN0b3I8U3RyaW5nPiBJbnRlcm5hbHM6OmJ1ZmZlcmVkU2FtcGxlc0ZvclRy
YWNrSUQoU291cmNlQnVmZmVyKiBidWZmZXIsIGNvbnN0CiAjaWYgRU5BQkxFKFZJREVPKQogdm9p
ZCBJbnRlcm5hbHM6OmJlZ2luTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uKCkKIHsKLSAgICBNZWRp
YVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuYmVnaW5JbnRlcnJ1cHRpb24oUGxhdGZv
cm1NZWRpYVNlc3Npb246OlN5c3RlbUludGVycnVwdGlvbik7CisgICAgUGxhdGZvcm1NZWRpYVNl
c3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuYmVnaW5JbnRlcnJ1cHRpb24oUGxhdGZvcm1N
ZWRpYVNlc3Npb246OlN5c3RlbUludGVycnVwdGlvbik7CiB9CiAKIHZvaWQgSW50ZXJuYWxzOjpl
bmRNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb24oY29uc3QgU3RyaW5nJiBmbGFnc1N0cmluZykKQEAg
LTI2MDEsMTcgKzI2MDEsMTcgQEAgdm9pZCBJbnRlcm5hbHM6OmVuZE1lZGlhU2Vzc2lvbkludGVy
cnVwdGlvbihjb25zdCBTdHJpbmcmIGZsYWdzU3RyaW5nKQogICAgIGlmIChlcXVhbElnbm9yaW5n
Q2FzZShmbGFnc1N0cmluZywgIk1heVJlc3VtZVBsYXlpbmciKSkKICAgICAgICAgZmxhZ3MgPSBQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWF5UmVzdW1lUGxheWluZzsKICAgICAKLSAgICBNZWRpYVNl
c3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuZW5kSW50ZXJydXB0aW9uKGZsYWdzKTsKKyAg
ICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5lbmRJbnRlcnJ1
cHRpb24oZmxhZ3MpOwogfQogCiB2b2lkIEludGVybmFsczo6YXBwbGljYXRpb25XaWxsRW50ZXJG
b3JlZ3JvdW5kKCkgY29uc3QKIHsKLSAgICBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5h
Z2VyKCkuYXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKCk7CisgICAgUGxhdGZvcm1NZWRp
YVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuYXBwbGljYXRpb25XaWxsRW50ZXJGb3Jl
Z3JvdW5kKCk7CiB9CiAKIHZvaWQgSW50ZXJuYWxzOjphcHBsaWNhdGlvbldpbGxFbnRlckJhY2tn
cm91bmQoKSBjb25zdAogewotICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIo
KS5hcHBsaWNhdGlvbldpbGxFbnRlckJhY2tncm91bmQoKTsKKyAgICBQbGF0Zm9ybU1lZGlhU2Vz
c2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5hcHBsaWNhdGlvbldpbGxFbnRlckJhY2tncm91
bmQoKTsKIH0KIAogdm9pZCBJbnRlcm5hbHM6OnNldE1lZGlhU2Vzc2lvblJlc3RyaWN0aW9ucyhj
b25zdCBTdHJpbmcmIG1lZGlhVHlwZVN0cmluZywgY29uc3QgU3RyaW5nJiByZXN0cmljdGlvbnNT
dHJpbmcsIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtMjYyOCwzMCArMjYyOCwzMCBAQCB2b2lkIElu
dGVybmFsczo6c2V0TWVkaWFTZXNzaW9uUmVzdHJpY3Rpb25zKGNvbnN0IFN0cmluZyYgbWVkaWFU
eXBlU3RyaW5nLCBjb25zdAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgTWVkaWFTZXNz
aW9uTWFuYWdlcjo6U2Vzc2lvblJlc3RyaWN0aW9ucyByZXN0cmljdGlvbnMgPSBNZWRpYVNlc3Np
b25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkucmVzdHJpY3Rpb25zKG1lZGlhVHlwZSk7Ci0gICAg
TWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLnJlbW92ZVJlc3RyaWN0aW9uKG1l
ZGlhVHlwZSwgcmVzdHJpY3Rpb25zKTsKKyAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6
OlNlc3Npb25SZXN0cmljdGlvbnMgcmVzdHJpY3Rpb25zID0gUGxhdGZvcm1NZWRpYVNlc3Npb25N
YW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkucmVzdHJpY3Rpb25zKG1lZGlhVHlwZSk7CisgICAgUGxh
dGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkucmVtb3ZlUmVzdHJpY3Rp
b24obWVkaWFUeXBlLCByZXN0cmljdGlvbnMpOwogCi0gICAgcmVzdHJpY3Rpb25zID0gTWVkaWFT
ZXNzaW9uTWFuYWdlcjo6Tm9SZXN0cmljdGlvbnM7CisgICAgcmVzdHJpY3Rpb25zID0gUGxhdGZv
cm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpOb1Jlc3RyaWN0aW9uczsKIAogICAgIFZlY3RvcjxTdHJp
bmc+IHJlc3RyaWN0aW9uc0FycmF5OwogICAgIHJlc3RyaWN0aW9uc1N0cmluZy5zcGxpdCgnLCcs
IGZhbHNlLCByZXN0cmljdGlvbnNBcnJheSk7CiAgICAgZm9yIChhdXRvJiByZXN0cmljdGlvblN0
cmluZyA6IHJlc3RyaWN0aW9uc0FycmF5KSB7CiAgICAgICAgIGlmIChlcXVhbElnbm9yaW5nQ2Fz
ZShyZXN0cmljdGlvblN0cmluZywgIkNvbmN1cnJlbnRQbGF5YmFja05vdFBlcm1pdHRlZCIpKQot
ICAgICAgICAgICAgcmVzdHJpY3Rpb25zIHw9IE1lZGlhU2Vzc2lvbk1hbmFnZXI6OkNvbmN1cnJl
bnRQbGF5YmFja05vdFBlcm1pdHRlZDsKKyAgICAgICAgICAgIHJlc3RyaWN0aW9ucyB8PSBQbGF0
Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OkNvbmN1cnJlbnRQbGF5YmFja05vdFBlcm1pdHRlZDsK
ICAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHJlc3RyaWN0aW9uU3RyaW5nLCAiSW5saW5l
VmlkZW9QbGF5YmFja1Jlc3RyaWN0ZWQiKSkKLSAgICAgICAgICAgIHJlc3RyaWN0aW9ucyB8PSBN
ZWRpYVNlc3Npb25NYW5hZ2VyOjpJbmxpbmVWaWRlb1BsYXliYWNrUmVzdHJpY3RlZDsKKyAgICAg
ICAgICAgIHJlc3RyaWN0aW9ucyB8PSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OklubGlu
ZVZpZGVvUGxheWJhY2tSZXN0cmljdGVkOwogICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2Uo
cmVzdHJpY3Rpb25TdHJpbmcsICJNZXRhZGF0YVByZWxvYWRpbmdOb3RQZXJtaXR0ZWQiKSkKLSAg
ICAgICAgICAgIHJlc3RyaWN0aW9ucyB8PSBNZWRpYVNlc3Npb25NYW5hZ2VyOjpNZXRhZGF0YVBy
ZWxvYWRpbmdOb3RQZXJtaXR0ZWQ7CisgICAgICAgICAgICByZXN0cmljdGlvbnMgfD0gUGxhdGZv
cm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpNZXRhZGF0YVByZWxvYWRpbmdOb3RQZXJtaXR0ZWQ7CiAg
ICAgICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShyZXN0cmljdGlvblN0cmluZywgIkF1dG9QcmVs
b2FkaW5nTm90UGVybWl0dGVkIikpCi0gICAgICAgICAgICByZXN0cmljdGlvbnMgfD0gTWVkaWFT
ZXNzaW9uTWFuYWdlcjo6QXV0b1ByZWxvYWRpbmdOb3RQZXJtaXR0ZWQ7CisgICAgICAgICAgICBy
ZXN0cmljdGlvbnMgfD0gUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpBdXRvUHJlbG9hZGlu
Z05vdFBlcm1pdHRlZDsKICAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHJlc3RyaWN0aW9u
U3RyaW5nLCAiQmFja2dyb3VuZFByb2Nlc3NQbGF5YmFja1Jlc3RyaWN0ZWQiKSkKLSAgICAgICAg
ICAgIHJlc3RyaWN0aW9ucyB8PSBNZWRpYVNlc3Npb25NYW5hZ2VyOjpCYWNrZ3JvdW5kUHJvY2Vz
c1BsYXliYWNrUmVzdHJpY3RlZDsKKyAgICAgICAgICAgIHJlc3RyaWN0aW9ucyB8PSBQbGF0Zm9y
bU1lZGlhU2Vzc2lvbk1hbmFnZXI6OkJhY2tncm91bmRQcm9jZXNzUGxheWJhY2tSZXN0cmljdGVk
OwogICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UocmVzdHJpY3Rpb25TdHJpbmcsICJCYWNr
Z3JvdW5kVGFiUGxheWJhY2tSZXN0cmljdGVkIikpCi0gICAgICAgICAgICByZXN0cmljdGlvbnMg
fD0gTWVkaWFTZXNzaW9uTWFuYWdlcjo6QmFja2dyb3VuZFRhYlBsYXliYWNrUmVzdHJpY3RlZDsK
KyAgICAgICAgICAgIHJlc3RyaWN0aW9ucyB8PSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6
OkJhY2tncm91bmRUYWJQbGF5YmFja1Jlc3RyaWN0ZWQ7CiAgICAgICAgIGlmIChlcXVhbElnbm9y
aW5nQ2FzZShyZXN0cmljdGlvblN0cmluZywgIkludGVycnVwdGVkUGxheWJhY2tOb3RQZXJtaXR0
ZWQiKSkKLSAgICAgICAgICAgIHJlc3RyaWN0aW9ucyB8PSBNZWRpYVNlc3Npb25NYW5hZ2VyOjpJ
bnRlcnJ1cHRlZFBsYXliYWNrTm90UGVybWl0dGVkOworICAgICAgICAgICAgcmVzdHJpY3Rpb25z
IHw9IFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6SW50ZXJydXB0ZWRQbGF5YmFja05vdFBl
cm1pdHRlZDsKICAgICB9Ci0gICAgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigp
LmFkZFJlc3RyaWN0aW9uKG1lZGlhVHlwZSwgcmVzdHJpY3Rpb25zKTsKKyAgICBQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5hZGRSZXN0cmljdGlvbihtZWRpYVR5
cGUsIHJlc3RyaWN0aW9ucyk7CiB9CiAKIHZvaWQgSW50ZXJuYWxzOjpzZXRNZWRpYUVsZW1lbnRS
ZXN0cmljdGlvbnMoSFRNTE1lZGlhRWxlbWVudCogZWxlbWVudCwgY29uc3QgU3RyaW5nJiByZXN0
cmljdGlvbnNTdHJpbmcsIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtMjcxOCw3ICsyNzE4LDcgQEAg
dm9pZCBJbnRlcm5hbHM6OnBvc3RSZW1vdGVDb250cm9sQ29tbWFuZChjb25zdCBTdHJpbmcmIGNv
bW1hbmRTdHJpbmcsIEV4Y2VwdGlvbkMKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAg
ICBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuZGlkUmVjZWl2ZVJlbW90ZUNv
bnRyb2xDb21tYW5kKGNvbW1hbmQpOworICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6
c2hhcmVkTWFuYWdlcigpLmRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChjb21tYW5kKTsK
IH0KIAogYm9vbCBJbnRlcm5hbHM6OmVsZW1lbnRJc0Jsb2NraW5nRGlzcGxheVNsZWVwKEVsZW1l
bnQqIGVsZW1lbnQpIGNvbnN0CkBAIC0yNzU5LDE0ICsyNzU5LDE0IEBAIHZvaWQgSW50ZXJuYWxz
OjpzZXRBdWRpb0NvbnRleHRSZXN0cmljdGlvbnMoQXVkaW9Db250ZXh0KiBjb250ZXh0LCBjb25z
dCBTdHJpbmcKIHZvaWQgSW50ZXJuYWxzOjpzaW11bGF0ZVN5c3RlbVNsZWVwKCkgY29uc3QKIHsK
ICNpZiBFTkFCTEUoVklERU8pCi0gICAgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdl
cigpLnN5c3RlbVdpbGxTbGVlcCgpOworICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6
c2hhcmVkTWFuYWdlcigpLnN5c3RlbVdpbGxTbGVlcCgpOwogI2VuZGlmCiB9CiAKIHZvaWQgSW50
ZXJuYWxzOjpzaW11bGF0ZVN5c3RlbVdha2UoKSBjb25zdAogewogI2lmIEVOQUJMRShWSURFTykK
LSAgICBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuc3lzdGVtRGlkV2FrZSgp
OworICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLnN5c3Rl
bURpZFdha2UoKTsKICNlbmRpZgogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>254291</attachid>
            <date>2015-06-04 13:08:30 -0700</date>
            <delta_ts>2015-06-04 13:42:54 -0700</delta_ts>
            <desc>Patch (iOS build fix)</desc>
            <filename>bug-145648-20150604130808.patch</filename>
            <type>text/plain</type>
            <size>64147</size>
            <attacher name="Matt Rajca">mrajca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg1MjAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjljYzA4MmY3M2IyYWM0
ZjRkMzQ5NWQxZDE4NmU2NmFhOTg0ZWJmZS4uMGNkNTQ0ZjY4YzRjMjJjZDIxMjI0MmRjZjA2Nzc5
YzY1ZWJkZTJiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDE1LTA2LTA0ICBNYXR0
IFJhamNhICA8bXJhamNhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgTWVkaWFTZXNzaW9u
TWFuYWdlciB0byBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIgZm9yIGNvbnNpc3RlbmN5IHdp
dGggUGxhdGZvcm1NZWRpYVNlc3Npb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNDU2NDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2o6CisgICAg
ICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAq
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBodG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAqIGh0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVsZW1lbnRTZXNzaW9uOjplZmZlY3RpdmVQcmVsb2Fk
Rm9yRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVsZW1lbnRTZXNzaW9uOjpyZXF1
aXJlc0Z1bGxzY3JlZW5Gb3JWaWRlb1BsYXliYWNrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRp
by9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6UGxhdGZvcm1NZWRpYVNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6UGxh
dGZvcm1NZWRpYVNlc3Npb246On5QbGF0Zm9ybU1lZGlhU2Vzc2lvbik6CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Y2xpZW50V2lsbEJlZ2luUGxheWJhY2spOgorICAg
ICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb246OmNsaWVudFdpbGxQYXVzZVBsYXli
YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpjbGllbnREYXRh
QnVmZmVyaW5nVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vz
c2lvbjo6dXBkYXRlQ2xpZW50RGF0YUJ1ZmZlcmluZyk6CisgICAgICAgICogcGxhdGZvcm0vYXVk
aW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwLgorICAgICAgICAo
V2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6UGxhdGZvcm1NZWRp
YVNlc3Npb25NYW5hZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9u
TWFuYWdlcjo6cmVzZXRSZXN0cmljdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1N
ZWRpYVNlc3Npb25NYW5hZ2VyOjpoYXMpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRp
YVNlc3Npb25NYW5hZ2VyOjphY3RpdmVBdWRpb1Nlc3Npb25SZXF1aXJlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNvdW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6YmVnaW5JbnRlcnJ1cHRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjplbmRJbnRlcnJ1
cHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjph
ZGRTZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdl
cjo6cmVtb3ZlU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lv
bk1hbmFnZXI6OmFkZFJlc3RyaWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVk
aWFTZXNzaW9uTWFuYWdlcjo6cmVtb3ZlUmVzdHJpY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpyZXN0cmljdGlvbnMpOgorICAgICAgICAoV2Vi
Q29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpzZXNzaW9uV2lsbEJlZ2luUGxheWJh
Y2spOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpzZXNz
aW9uV2lsbEVuZFBsYXliYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNz
aW9uTWFuYWdlcjo6c2V0Q3VycmVudFNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpjdXJyZW50U2Vzc2lvbik6CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNlc3Npb25SZXN0cmljdHNJbmxpbmVWaWRl
b1BsYXliYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdl
cjo6c2Vzc2lvbkNhbkxvYWRNZWRpYSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlh
U2Vzc2lvbk1hbmFnZXI6OmFwcGxpY2F0aW9uV2lsbEVudGVyQmFja2dyb3VuZCk6CisgICAgICAg
IChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OmFwcGxpY2F0aW9uV2lsbEVu
dGVyRm9yZWdyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1h
bmFnZXI6OnVwZGF0ZVNlc3Npb25TdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbk1hbmFnZXI6OmRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZCk6CisgICAg
ICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnN5c3RlbVdpbGxTbGVl
cCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnN5c3Rl
bURpZFdha2UpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2Vy
OjphdWRpb091dHB1dERldmljZUNoYW5nZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1Bs
YXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uTWFuYWdlci5oLgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjp+UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2Vy
KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6Y29uZmln
dXJlV2lyZUxlc3NUYXJnZXRNb25pdG9yaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
TWVkaWFTZXNzaW9uTWFuYWdlcjo6aGFzV2lyZWxlc3NUYXJnZXRzQXZhaWxhYmxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2Vzc2lvbnMpOgorICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9hdWRpby9tYWMvTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5jcHA6CisgICAg
ICAgIChQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnVwZGF0ZVNlc3Npb25TdGF0ZSk6Cisg
ICAgICAgIChNZWRpYVNlc3Npb25NYW5hZ2VyOjp1cGRhdGVTZXNzaW9uU3RhdGUpOiBEZWxldGVk
LgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKwogMjAxNS0wNi0wNCAgTXlsZXMg
Qy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gQ2xl
YW4gdXAgbV9mb250IGluc2lkZSBGb250UGxhdGZvcm1EYXRhCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cmlu
ZGV4IGUzYThkOGQ1Zjk5ZTNjM2I3YzZjOTc2ZGU2M2VmYTQyMWFmOTUxNWIuLmE0NTg1MzdhNzBi
NGY0ZjgxOWUxYzA1OTUxN2MxMjA1M2E2YTEyMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0y
MTExLDEwICsyMTExLDEwIEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9hdWRp
by9IUlRGRWxldmF0aW9uLmNwcAogICAgIHBsYXRmb3JtL2F1ZGlvL0hSVEZLZXJuZWwuY3BwCiAg
ICAgcGxhdGZvcm0vYXVkaW8vSFJURlBhbm5lci5jcHAKLSAgICBwbGF0Zm9ybS9hdWRpby9NZWRp
YVNlc3Npb25NYW5hZ2VyLmNwcAogICAgIHBsYXRmb3JtL2F1ZGlvL011bHRpQ2hhbm5lbFJlc2Ft
cGxlci5jcHAKICAgICBwbGF0Zm9ybS9hdWRpby9QYW5uZXIuY3BwCiAgICAgcGxhdGZvcm0vYXVk
aW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uY3BwCisgICAgcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1N
ZWRpYVNlc3Npb25NYW5hZ2VyLmNwcAogICAgIHBsYXRmb3JtL2F1ZGlvL1JldmVyYi5jcHAKICAg
ICBwbGF0Zm9ybS9hdWRpby9SZXZlcmJBY2N1bXVsYXRpb25CdWZmZXIuY3BwCiAgICAgcGxhdGZv
cm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
dmN4cHJvai9XZWJDb3JlLnZjeHByb2oKaW5kZXggNDZmZjMyZGU2OWUyZDdmMTNmMTY4ZmVkZjQw
NWJkZjBhMTc4MTZlZS4uMmNmZTUzZWMyOGIxZTM5MWQ4NjlhNjE0OTExYzIwYjgzNTFiNGNhNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJv
agorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCkBA
IC03Mzk2LDcgKzczOTYsNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1c
Z3JhcGhpY3NcSVNPVlRUQ3VlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBs
YXRmb3JtXGF1ZGlvXEF1ZGlvU2Vzc2lvbi5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxwbGF0Zm9ybVxhdWRpb1xQbGF0Zm9ybU1lZGlhU2Vzc2lvbi5jcHAiIC8+Ci0gICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxhdWRpb1xNZWRpYVNlc3Npb25NYW5hZ2VyLmNw
cCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGF1ZGlvXFBsYXRmb3Jt
TWVkaWFTZXNzaW9uTWFuYWdlci5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxw
bGF0Zm9ybVxncmFwaGljc1xBTkdMRVdlYktpdEJyaWRnZS5jcHAiIC8+CiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xhdmZvdW5kYXRpb25cY2ZcSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUFWQ0YuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxh
dGZvcm1cZ3JhcGhpY3NcYXZmb3VuZGF0aW9uXGNmXEluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdh
Y3lBVkNGLmNwcCIgLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJv
ai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJv
ai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwppbmRleCBkMmM2ZDFiMTg2OGY5ZDA0NGZmN2ZiMTkw
NDM2MTJhNGY1ZThhZTgzLi5iYmRhZTYwMzQ1YTc2M2I2OWQyZmFlZWE3ZmE4OTE1M2NjZDUxZTY1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hw
cm9qLmZpbHRlcnMKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUu
dmN4cHJvai5maWx0ZXJzCkBAIC03MDU0LDcgKzcwNTQsNyBAQAogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5ccGxhdGZvcm1cYXVkaW9cUGxhdGZvcm1NZWRpYVNlc3Npb24uY3BwIj4KICAgICAg
IDxGaWx0ZXI+cGxhdGZvcm1cYXVkaW88L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KLSAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGF1ZGlvXE1lZGlhU2Vzc2lvbk1hbmFnZXIu
Y3BwIj4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGF1ZGlvXFBsYXRmb3Jt
TWVkaWFTZXNzaW9uTWFuYWdlci5jcHAiPgogICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxhdWRpbzwv
RmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9k
dWxlc1xnYW1lcGFkXE5hdmlnYXRvckdhbWVwYWQuY3BwIj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkN2Q1Y2NhYzEzMGI4ZGI4
ZDk4MjA4NjJhZDBkZTg4ZjM0NTY3ZjAxLi41ZWE5YWJmNzNjZDdhMmNlOTIzNGQ4MmE2MDBjMTI1
ODZkNThhY2EyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0zNDksNyArMzQ5LDcgQEAKIAkJMDdGMEI5N0ExQUM1REIzMzAwRTUz
NUQ5IC8qIEFWS2l0U1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwN0YwQjk3OTFBQzVEQjMzMDBFNTM1RDkgLyogQVZLaXRTUEkuaCAqLzsgfTsKIAkJ
MDdGMEI5N0MxQUM1REI0NjAwRTUzNUQ5IC8qIEFWRm91bmRhdGlvblNQSS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdGMEI5N0IxQUM1REI0NjAwRTUz
NUQ5IC8qIEFWRm91bmRhdGlvblNQSS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTA3Rjg3Njg0MUFENTgwRjkwMDkwNTg0OSAvKiBNZWRpYVBsYXli
YWNrVGFyZ2V0Q29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMDdGODc2ODMxQUQ0QTk0NTAwOTA1ODQ5IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
LQkJMDdGOTQ0MTYxODY0RDA0NjAwNUQzMUNCIC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQUU4QzA4MTc0NkI5
NTcwMDUzMkQ3OCAvKiBNZWRpYVNlc3Npb25NYW5hZ2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMDdGOTQ0MTYxODY0RDA0NjAwNUQzMUNCIC8q
IFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBRThDMDgxNzQ2Qjk1NzAwNTMyRDc4IC8qIFBsYXRmb3Jt
TWVkaWFTZXNzaW9uTWFuYWdlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTA3RkJERTJDMThGRUQxNzgwMDFBN0NGRiAvKiBKU0RhdGFDdWVDdXN0
b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdG
QkRFMkIxOEZFRDE3ODAwMUE3Q0ZGIC8qIEpTRGF0YUN1ZUN1c3RvbS5jcHAgKi87IH07CiAJCTA3
RkU5OURDMTg4MDdBN0QwMDI1NjY0OCAvKiBNZWRpYUVsZW1lbnRTZXNzaW9uLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3RkU5OURBMTg4MDdBN0Qw
MDI1NjY0OCAvKiBNZWRpYUVsZW1lbnRTZXNzaW9uLmNwcCAqLzsgfTsKIAkJMDdGRTk5REQxODgw
N0E3RDAwMjU2NjQ4IC8qIE1lZGlhRWxlbWVudFNlc3Npb24uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3RkU5OURCMTg4MDdBN0QwMDI1NjY0OCAvKiBN
ZWRpYUVsZW1lbnRTZXNzaW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTU4MDYsNyArNTgwNiw3IEBACiAJCUNEQUI2RDJFMTdDODE0RUUwMEM2
MEIzNCAvKiBKU01lZGlhQ29udHJvbHNIb3N0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDREFCNkQyQzE3QzgxNEVFMDBDNjBCMzQgLyogSlNNZWRpYUNv
bnRyb2xzSG9zdC5oICovOyB9OwogCQlDREFCNkQzMTE3QzkyNTk1MDBDNjBCMzQgLyogVXNlckFn
ZW50U2NyaXB0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0RBQjZEMkYxN0M5MjU5NTAwQzYwQjM0IC8qIFVzZXJBZ2VudFNjcmlwdHMuaCAqLzsgfTsK
IAkJQ0RBQjZEMzIxN0M5MjU5NTAwQzYwQjM0IC8qIFVzZXJBZ2VudFNjcmlwdHNEYXRhLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQUI2RDMwMTdD
OTI1OTUwMEM2MEIzNCAvKiBVc2VyQWdlbnRTY3JpcHRzRGF0YS5jcHAgKi87IH07Ci0JCUNEQUU4
QzA5MTc0NkI5NTcwMDUzMkQ3OCAvKiBNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQUU4QzA3MTc0NkI5NTcwMDUz
MkQ3OCAvKiBNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcCAqLzsgfTsKKwkJQ0RBRThDMDkxNzQ2Qjk1
NzAwNTMyRDc4IC8qIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFFOEMwNzE3NDZCOTU3MDA1MzJE
NzggLyogUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcCAqLzsgfTsKIAkJQ0RCODU5Rjcx
NjBENDhBNDAwRTVCMDdGIC8qIE1lZGlhS2V5RXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RCODU5RjQxNjBENDg5OTAwRTVCMDdGIC8qIE1l
ZGlhS2V5RXZlbnQuY3BwICovOyB9OwogCQlDREI4NTlGQTE2MEQ0OTQ5MDBFNUIwN0YgLyogSlNN
ZWRpYUtleUV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENEQjg1OUY4MTYwRDQ5M0UwMEU1QjA3RiAvKiBKU01lZGlhS2V5RXZlbnQuY3BwICov
OyB9OwogCQlDREJFQUVBQzE5RDkyQjZDMDBCRUJBODggLyogTWVkaWFTZWxlY3Rpb25Hcm91cEFW
Rk9iakMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
REJFQUVBQTE5RDkyQjZDMDBCRUJBODggLyogTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakMubW0g
Ki87IH07CkBAIC0xMzQxMCw4ICsxMzQxMCw4IEBACiAJCUNEQUI2RDJDMTdDODE0RUUwMEM2MEIz
NCAvKiBKU01lZGlhQ29udHJvbHNIb3N0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTTWVkaWFDb250cm9sc0hvc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
Q0RBQjZEMkYxN0M5MjU5NTAwQzYwQjM0IC8qIFVzZXJBZ2VudFNjcmlwdHMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVXNlckFnZW50U2NyaXB0cy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDREFCNkQzMDE3QzkyNTk1MDBDNjBCMzQgLyogVXNlckFnZW50U2Ny
aXB0c0RhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVXNlckFn
ZW50U2NyaXB0c0RhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDREFFOEMw
NzE3NDZCOTU3MDA1MzJENzggLyogTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQ0RBRThDMDgxNzQ2Qjk1NzAwNTMyRDc4IC8qIE1lZGlh
U2Vzc2lvbk1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFT
ZXNzaW9uTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFFOEMwNzE3
NDZCOTU3MDA1MzJENzggLyogUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUU4QzA4MTc0NkI5NTcwMDUz
MkQ3OCAvKiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUNEQjg1OUYyMTYwRDQ4OTkwMEU1QjA3RiAvKiBNZWRpYUtleUVy
cm9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhS2V5RXJyb3IuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RCODU5RjMxNjBENDg5OTAwRTVCMDdGIC8q
IE1lZGlhS2V5RXJyb3IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE1lZGlhS2V5RXJyb3Iu
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREI4NTlGNDE2MEQ0ODk5MDBFNUIw
N0YgLyogTWVkaWFLZXlFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBNZWRpYUtleUV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIz
NTk0LDE0ICsyMzU5NCwxNCBAQAogCQkJCUZEMzE2MDY5MTJCMDI2RjcwMEMxQTM1OSAvKiBIUlRG
S2VybmVsLmggKi8sCiAJCQkJRkQzMTYwNkExMkIwMjZGNzAwQzFBMzU5IC8qIEhSVEZQYW5uZXIu
Y3BwICovLAogCQkJCUZEMzE2MDZCMTJCMDI2RjcwMEMxQTM1OSAvKiBIUlRGUGFubmVyLmggKi8s
Ci0JCQkJQ0RBRThDMDcxNzQ2Qjk1NzAwNTMyRDc4IC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXIuY3Bw
ICovLAotCQkJCUNEQUU4QzA4MTc0NkI5NTcwMDUzMkQ3OCAvKiBNZWRpYVNlc3Npb25NYW5hZ2Vy
LmggKi8sCiAJCQkJRkRCMTcwMDMxNEEyQkFCMjAwQTJCNUQ5IC8qIE11bHRpQ2hhbm5lbFJlc2Ft
cGxlci5jcHAgKi8sCiAJCQkJRkRCMTcwMDQxNEEyQkFCMjAwQTJCNUQ5IC8qIE11bHRpQ2hhbm5l
bFJlc2FtcGxlci5oICovLAogCQkJCUZEMzE2MDZDMTJCMDI2RjcwMEMxQTM1OSAvKiBQYW5uZXIu
Y3BwICovLAogCQkJCUZEMzE2MDZEMTJCMDI2RjcwMEMxQTM1OSAvKiBQYW5uZXIuaCAqLywKIAkJ
CQkwNzBFMDkxQTE4NzVFRjcxMDAzQTFEM0MgLyogUGxhdGZvcm1NZWRpYVNlc3Npb24uY3BwICov
LAogCQkJCTA3MEUwOTE4MTg3NUVEOTMwMDNBMUQzQyAvKiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbi5o
ICovLAorCQkJCUNEQUU4QzA3MTc0NkI5NTcwMDUzMkQ3OCAvKiBQbGF0Zm9ybU1lZGlhU2Vzc2lv
bk1hbmFnZXIuY3BwICovLAorCQkJCUNEQUU4QzA4MTc0NkI5NTcwMDUzMkQ3OCAvKiBQbGF0Zm9y
bU1lZGlhU2Vzc2lvbk1hbmFnZXIuaCAqLywKIAkJCQlGRDMxNjA2RTEyQjAyNkY3MDBDMUEzNTkg
LyogUmV2ZXJiLmNwcCAqLywKIAkJCQlGRDMxNjA2RjEyQjAyNkY3MDBDMUEzNTkgLyogUmV2ZXJi
LmggKi8sCiAJCQkJRkQzMTYwNzAxMkIwMjZGNzAwQzFBMzU5IC8qIFJldmVyYkFjY3VtdWxhdGlv
bkJ1ZmZlci5jcHAgKi8sCkBAIC0yNTg1MCw3ICsyNTg1MCw2IEBACiAJCQkJQ0VFRkNEN0ExOURC
MzFGNzAwMzg3NkQ3IC8qIE1lZGlhUmVzb3VyY2VMb2FkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUNEQkVBRUFEMTlEOTJCNkMwMEJFQkE4OCAvKiBNZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2JqQy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQzkwMjdGNDIxQjFEMEFEMjAwQkZCRkVGIC8qIE1lZGlhU2Vz
c2lvbi5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMDdGOTQ0MTYxODY0RDA0NjAwNUQzMUNCIC8qIE1l
ZGlhU2Vzc2lvbk1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3NjM4QTk5MTg4NDQ4NzIw
MEUxNUExQiAvKiBNZWRpYVNlc3Npb25NYW5hZ2VySU9TLmggaW4gSGVhZGVycyAqLywKIAkJCQlD
RDNBNDk1RjE3QTlEMDFCMDAyNzRFNDIgLyogTWVkaWFTb3VyY2UuaCBpbiBIZWFkZXJzICovLAog
CQkJCUNENjQxRUIzMTgxOEY1RUQwMEVFNEM0MSAvKiBNZWRpYVNvdXJjZVByaXZhdGUuaCBpbiBI
ZWFkZXJzICovLApAQCAtMjYwNzQsNiArMjYwNzMsNyBAQAogCQkJCUY1NDRGNzg5MTVDRkIyQTgw
MEFGMzNBOCAvKiBQbGF0Zm9ybUxvY2FsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0VFRkNEN0Mx
OURCMzNEQzAwMzg3NkQ3IC8qIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMDcwRTA5MTkxODc1RUVGQzAwM0ExRDNDIC8qIFBsYXRmb3JtTWVkaWFTZXNz
aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQkwN0Y5NDQxNjE4NjREMDQ2MDA1RDMxQ0IgLyogUGxh
dGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzI4NzFDMDBC
MjBERUI3MDA0OTAzNUEgLyogUGxhdGZvcm1NZW51RGVzY3JpcHRpb24uaCBpbiBIZWFkZXJzICov
LAogCQkJCTQxQkY3MDEwMEZFODZGNjEwMDVFOERFQyAvKiBQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hh
bm5lbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM1QzQ3NjkwOUFDNEQ0MzAwQTZBQUI0IC8qIFBs
YXRmb3JtTW91c2VFdmVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yOTQzNiw3ICsyOTQzNiw2IEBA
CiAJCQkJQ0VFRkNENzkxOURCMzFGNzAwMzg3NkQ3IC8qIE1lZGlhUmVzb3VyY2VMb2FkZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RCRUFFQUMxOUQ5MkI2QzAwQkVCQTg4IC8qIE1lZGlhU2Vs
ZWN0aW9uR3JvdXBBVkZPYmpDLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQzkwMjdGNDExQjFEMEFE
MjAwQkZCRkVGIC8qIE1lZGlhU2Vzc2lvbi5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlDREFFOEMw
OTE3NDZCOTU3MDA1MzJENzggLyogTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwNzYzOEE5QTE4ODQ0ODcyMDBFMTVBMUIgLyogTWVkaWFTZXNzaW9uTWFuYWdlcklP
Uy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTA3RURDM0VFMUFBQ0I3NUQwMDk4M0VCNSAvKiBNZWRp
YVNlc3Npb25NYW5hZ2VyTWFjLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEM0E0OTVFMTdBOUQw
MUIwMDI3NEU0MiAvKiBNZWRpYVNvdXJjZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI5NjA3LDYg
KzI5NjA2LDcgQEAKIAkJCQlCQ0FBNDg2RjE0QTA1MjUzMDA4OEZBQzQgLyogUGxhdGZvcm1FdmVu
dEZhY3RvcnlNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlGNTQ0Rjc4ODE1Q0ZCMkE4MDBBRjMz
QTggLyogUGxhdGZvcm1Mb2NhbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDcwRTA5MUIxODc1
RUY3MTAwM0ExRDNDIC8qIFBsYXRmb3JtTWVkaWFTZXNzaW9uLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCUNEQUU4QzA5MTc0NkI5NTcwMDUzMkQ3OCAvKiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFn
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDFCRjcwMEYwRkU4NkY2MTAwNUU4REVDIC8qIFBs
YXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUM1Mjc4QjBD
MTdGMjEyRUEwMDNBMjk5OCAvKiBQbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0gaW4gU291cmNlcyAq
LywKIAkJCQlDNTk4OTAyRTE0RTlCMEY4MDBFOEQxOEIgLyogUGxhdGZvcm1QYXN0ZWJvYXJkTWFj
Lm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cAppbmRleCBjMWRiODhkOTVhN2E0YTdlYjgxZDMzMmNhMjlmNmU5NWU2ZGYwYmVlLi5iYTQxMDll
NGRiMDlmOTdmMDA4MGEyZWE4N2RmM2MxOWY1NTc2NTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTY1LDEwICs2NSwxMCBAQAogI2luY2x1ZGUgIk1lZGlh
UGxheWVyLmgiCiAjaW5jbHVkZSAiTWVkaWFRdWVyeUV2YWx1YXRvci5oIgogI2luY2x1ZGUgIk1l
ZGlhUmVzb3VyY2VMb2FkZXIuaCIKLSNpbmNsdWRlICJNZWRpYVNlc3Npb25NYW5hZ2VyLmgiCiAj
aW5jbHVkZSAiTmV0d29ya2luZ0NvbnRleHQuaCIKICNpbmNsdWRlICJQYWdlR3JvdXAuaCIKICNp
bmNsdWRlICJQYWdlVGhyb3R0bGVyLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1NZWRpYVNlc3Npb25N
YW5hZ2VyLmgiCiAjaW5jbHVkZSAiUHJvZ3Jlc3NUcmFja2VyLmgiCiAjaW5jbHVkZSAiUmVuZGVy
TGF5ZXJDb21wb3NpdG9yLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlkZW8uaCIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uY3BwCmluZGV4IDIyNTU4ZTlmYWM5NzRmNjJl
Yjk5YTQ2NTdhMTNiMjVkMTJiZDc1MDUuLjBkNDNmY2Q4ZmU4MzZmN2M1MDVkYTg5YjUzNDdjZDlk
ZGVmYmZjOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vz
c2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNw
cApAQCAtMzgsOCArMzgsOCBAQAogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhU
TUxWaWRlb0VsZW1lbnQuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCi0jaW5jbHVkZSAiTWVkaWFT
ZXNzaW9uTWFuYWdlci5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbk1hbmFnZXIuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5j
bHVkZSAiU291cmNlQnVmZmVyLmgiCiAKQEAgLTIwMyw3ICsyMDMsNyBAQCBib29sIE1lZGlhRWxl
bWVudFNlc3Npb246Omhhc1dpcmVsZXNzUGxheWJhY2tUYXJnZXRzKGNvbnN0IEhUTUxNZWRpYUVs
ZW1lbnQmKSBjbwogewogI2lmIFBMQVRGT1JNKElPUykKICAgICAvLyBGSVhNRTogY29uc29saWRh
dGUgTWFjIGFuZCBpT1MgaW1wbGVtZW50YXRpb25zCi0gICAgbV9oYXNQbGF5YmFja1RhcmdldHMg
PSBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuaGFzV2lyZWxlc3NUYXJnZXRz
QXZhaWxhYmxlKCk7CisgICAgbV9oYXNQbGF5YmFja1RhcmdldHMgPSBQbGF0Zm9ybU1lZGlhU2Vz
c2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5oYXNXaXJlbGVzc1RhcmdldHNBdmFpbGFibGUo
KTsKICNlbmRpZgogCiAgICAgTE9HKE1lZGlhLCAiTWVkaWFFbGVtZW50U2Vzc2lvbjo6aGFzV2ly
ZWxlc3NQbGF5YmFja1RhcmdldHMgLSByZXR1cm5pbmcgJXMiLCBtX2hhc1BsYXliYWNrVGFyZ2V0
cyA/ICJUUlVFIiA6ICJGQUxTRSIpOwpAQCAtMjY4LDcgKzI2OCw3IEBAIHZvaWQgTWVkaWFFbGVt
ZW50U2Vzc2lvbjo6c2V0SGFzUGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlMaXN0ZW5lcnMoY29u
c3QgSFRNTE1lCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIFVOVVNFRF9QQVJBTShlbGVtZW50KTsK
ICAgICBtX2hhc1BsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5TGlzdGVuZXJzID0gaGFzTGlzdGVu
ZXJzOwotICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5jb25maWd1cmVX
aXJlTGVzc1RhcmdldE1vbml0b3JpbmcoKTsKKyAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFn
ZXI6OnNoYXJlZE1hbmFnZXIoKS5jb25maWd1cmVXaXJlTGVzc1RhcmdldE1vbml0b3JpbmcoKTsK
ICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGhhc0xpc3RlbmVycyk7CiAgICAgZWxlbWVudC5kb2N1
bWVudCgpLnBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50U3RhdGVEaWRDaGFuZ2UoKnRoaXMsIGVs
ZW1lbnQubWVkaWFTdGF0ZSgpKTsKQEAgLTMyOCwxMyArMzI4LDEzIEBAIHZvaWQgTWVkaWFFbGVt
ZW50U2Vzc2lvbjo6bWVkaWFTdGF0ZURpZENoYW5nZShjb25zdCBIVE1MTWVkaWFFbGVtZW50JiBl
bGVtZW50LCBNCiAKIE1lZGlhUGxheWVyOjpQcmVsb2FkIE1lZGlhRWxlbWVudFNlc3Npb246OmVm
ZmVjdGl2ZVByZWxvYWRGb3JFbGVtZW50KGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmIGVsZW1lbnQp
IGNvbnN0CiB7Ci0gICAgTWVkaWFTZXNzaW9uTWFuYWdlcjo6U2Vzc2lvblJlc3RyaWN0aW9ucyBy
ZXN0cmljdGlvbnMgPSBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkucmVzdHJp
Y3Rpb25zKG1lZGlhVHlwZSgpKTsKKyAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OlNl
c3Npb25SZXN0cmljdGlvbnMgcmVzdHJpY3Rpb25zID0gUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5h
Z2VyOjpzaGFyZWRNYW5hZ2VyKCkucmVzdHJpY3Rpb25zKG1lZGlhVHlwZSgpKTsKICAgICBNZWRp
YVBsYXllcjo6UHJlbG9hZCBwcmVsb2FkID0gZWxlbWVudC5wcmVsb2FkVmFsdWUoKTsKIAotICAg
IGlmICgocmVzdHJpY3Rpb25zICYgTWVkaWFTZXNzaW9uTWFuYWdlcjo6TWV0YWRhdGFQcmVsb2Fk
aW5nTm90UGVybWl0dGVkKSA9PSBNZWRpYVNlc3Npb25NYW5hZ2VyOjpNZXRhZGF0YVByZWxvYWRp
bmdOb3RQZXJtaXR0ZWQpCisgICAgaWYgKChyZXN0cmljdGlvbnMgJiBQbGF0Zm9ybU1lZGlhU2Vz
c2lvbk1hbmFnZXI6Ok1ldGFkYXRhUHJlbG9hZGluZ05vdFBlcm1pdHRlZCkgPT0gUGxhdGZvcm1N
ZWRpYVNlc3Npb25NYW5hZ2VyOjpNZXRhZGF0YVByZWxvYWRpbmdOb3RQZXJtaXR0ZWQpCiAgICAg
ICAgIHJldHVybiBNZWRpYVBsYXllcjo6Tm9uZTsKIAotICAgIGlmICgocmVzdHJpY3Rpb25zICYg
TWVkaWFTZXNzaW9uTWFuYWdlcjo6QXV0b1ByZWxvYWRpbmdOb3RQZXJtaXR0ZWQpID09IE1lZGlh
U2Vzc2lvbk1hbmFnZXI6OkF1dG9QcmVsb2FkaW5nTm90UGVybWl0dGVkKSB7CisgICAgaWYgKChy
ZXN0cmljdGlvbnMgJiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OkF1dG9QcmVsb2FkaW5n
Tm90UGVybWl0dGVkKSA9PSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OkF1dG9QcmVsb2Fk
aW5nTm90UGVybWl0dGVkKSB7CiAgICAgICAgIGlmIChwcmVsb2FkID4gTWVkaWFQbGF5ZXI6Ok1l
dGFEYXRhKQogICAgICAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpNZXRhRGF0YTsKICAgICB9
CkBAIC0zNDQsNyArMzQ0LDcgQEAgTWVkaWFQbGF5ZXI6OlByZWxvYWQgTWVkaWFFbGVtZW50U2Vz
c2lvbjo6ZWZmZWN0aXZlUHJlbG9hZEZvckVsZW1lbnQoY29uc3QgSFRNTE0KIAogYm9vbCBNZWRp
YUVsZW1lbnRTZXNzaW9uOjpyZXF1aXJlc0Z1bGxzY3JlZW5Gb3JWaWRlb1BsYXliYWNrKGNvbnN0
IEhUTUxNZWRpYUVsZW1lbnQmIGVsZW1lbnQpIGNvbnN0CiB7Ci0gICAgaWYgKCFNZWRpYVNlc3Np
b25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuc2Vzc2lvblJlc3RyaWN0c0lubGluZVZpZGVvUGxh
eWJhY2soKnRoaXMpKQorICAgIGlmICghUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFy
ZWRNYW5hZ2VyKCkuc2Vzc2lvblJlc3RyaWN0c0lubGluZVZpZGVvUGxheWJhY2soKnRoaXMpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBlbGVtZW50
LmRvY3VtZW50KCkuc2V0dGluZ3MoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL01lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGUxNzcwNTNmZDY2MTAzMjI1YjgxOWJlN2RmZmE0NWY4NWM2ZTRjZTcuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwz
MzQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE1IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIk1lZGlhU2Vzc2lvbk1hbmFnZXIuaCIKLQotI2lmIEVOQUJMRShWSURFTykKLQotI2luY2x1
ZGUgIkF1ZGlvU2Vzc2lvbi5oIgotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRlICJOb3RJ
bXBsZW1lbnRlZC5oIgotI2luY2x1ZGUgIlBsYXRmb3JtTWVkaWFTZXNzaW9uLmgiCi0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotI2lmICFQTEFURk9STShJT1MpCi1NZWRpYVNlc3Npb25NYW5hZ2Vy
JiBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkKLXsKLSAgICBERVBSRUNBVEVE
X0RFRklORV9TVEFUSUNfTE9DQUwoTWVkaWFTZXNzaW9uTWFuYWdlciwgbWFuYWdlciwgKCkpOwot
ICAgIHJldHVybiBtYW5hZ2VyOwotfQotI2VuZGlmCi0KLU1lZGlhU2Vzc2lvbk1hbmFnZXI6Ok1l
ZGlhU2Vzc2lvbk1hbmFnZXIoKQotICAgIDogbV9zeXN0ZW1TbGVlcExpc3RlbmVyKFN5c3RlbVNs
ZWVwTGlzdGVuZXI6OmNyZWF0ZSgqdGhpcykpCi17Ci0gICAgcmVzZXRSZXN0cmljdGlvbnMoKTsK
LX0KLQotdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyOjpyZXNldFJlc3RyaWN0aW9ucygpCi17Ci0g
ICAgbV9yZXN0cmljdGlvbnNbUGxhdGZvcm1NZWRpYVNlc3Npb246OlZpZGVvXSA9IE5vUmVzdHJp
Y3Rpb25zOwotICAgIG1fcmVzdHJpY3Rpb25zW1BsYXRmb3JtTWVkaWFTZXNzaW9uOjpBdWRpb10g
PSBOb1Jlc3RyaWN0aW9uczsKLSAgICBtX3Jlc3RyaWN0aW9uc1tQbGF0Zm9ybU1lZGlhU2Vzc2lv
bjo6V2ViQXVkaW9dID0gTm9SZXN0cmljdGlvbnM7Ci19Ci0KLWJvb2wgTWVkaWFTZXNzaW9uTWFu
YWdlcjo6aGFzKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUgdHlwZSkgY29uc3QKLXsK
LSAgICBBU1NFUlQodHlwZSA+PSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Tm9uZSAmJiB0eXBlIDw9
IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpXZWJBdWRpbyk7Ci0KLSAgICBmb3IgKGF1dG8qIHNlc3Np
b24gOiBtX3Nlc3Npb25zKSB7Ci0gICAgICAgIGlmIChzZXNzaW9uLT5tZWRpYVR5cGUoKSA9PSB0
eXBlKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgcmV0dXJuIGZhbHNl
OwotfQotCi1ib29sIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OmFjdGl2ZUF1ZGlvU2Vzc2lvblJlcXVp
cmVkKCkgY29uc3QKLXsKLSAgICBmb3IgKGF1dG8qIHNlc3Npb24gOiBtX3Nlc3Npb25zKSB7Ci0g
ICAgICAgIGlmIChzZXNzaW9uLT5tZWRpYVR5cGUoKSAhPSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6
Tm9uZSAmJiBzZXNzaW9uLT5zdGF0ZSgpID09IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTdGF0ZTo6
UGxheWluZykKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICAKLSAgICByZXR1
cm4gZmFsc2U7Ci19Ci0KLWludCBNZWRpYVNlc3Npb25NYW5hZ2VyOjpjb3VudChQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6TWVkaWFUeXBlIHR5cGUpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKHR5cGUgPj0g
UGxhdGZvcm1NZWRpYVNlc3Npb246Ok5vbmUgJiYgdHlwZSA8PSBQbGF0Zm9ybU1lZGlhU2Vzc2lv
bjo6V2ViQXVkaW8pOwotCi0gICAgaW50IGNvdW50ID0gMDsKLSAgICBmb3IgKGF1dG8qIHNlc3Np
b24gOiBtX3Nlc3Npb25zKSB7Ci0gICAgICAgIGlmIChzZXNzaW9uLT5tZWRpYVR5cGUoKSA9PSB0
eXBlKQotICAgICAgICAgICAgKytjb3VudDsKLSAgICB9Ci0KLSAgICByZXR1cm4gY291bnQ7Ci19
Ci0KLXZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcjo6YmVnaW5JbnRlcnJ1cHRpb24oUGxhdGZvcm1N
ZWRpYVNlc3Npb246OkludGVycnVwdGlvblR5cGUgdHlwZSkKLXsKLSAgICBMT0coTWVkaWEsICJN
ZWRpYVNlc3Npb25NYW5hZ2VyOjpiZWdpbkludGVycnVwdGlvbiIpOwotCi0gICAgbV9pbnRlcnJ1
cHRlZCA9IHRydWU7Ci0gICAgVmVjdG9yPFBsYXRmb3JtTWVkaWFTZXNzaW9uKj4gc2Vzc2lvbnMg
PSBtX3Nlc3Npb25zOwotICAgIGZvciAoYXV0byogc2Vzc2lvbiA6IHNlc3Npb25zKQotICAgICAg
ICBzZXNzaW9uLT5iZWdpbkludGVycnVwdGlvbih0eXBlKTsKLSAgICB1cGRhdGVTZXNzaW9uU3Rh
dGUoKTsKLX0KLQotdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyOjplbmRJbnRlcnJ1cHRpb24oUGxh
dGZvcm1NZWRpYVNlc3Npb246OkVuZEludGVycnVwdGlvbkZsYWdzIGZsYWdzKQotewotICAgIExP
RyhNZWRpYSwgIk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmVuZEludGVycnVwdGlvbiIpOwotCi0gICAg
bV9pbnRlcnJ1cHRlZCA9IGZhbHNlOwotICAgIFZlY3RvcjxQbGF0Zm9ybU1lZGlhU2Vzc2lvbio+
IHNlc3Npb25zID0gbV9zZXNzaW9uczsKLSAgICBmb3IgKGF1dG8qIHNlc3Npb24gOiBzZXNzaW9u
cykKLSAgICAgICAgc2Vzc2lvbi0+ZW5kSW50ZXJydXB0aW9uKGZsYWdzKTsKLX0KLQotdm9pZCBN
ZWRpYVNlc3Npb25NYW5hZ2VyOjphZGRTZXNzaW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uJiBzZXNz
aW9uKQotewotICAgIExPRyhNZWRpYSwgIk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmFkZFNlc3Npb24g
LSAlcCIsICZzZXNzaW9uKTsKLSAgICAKLSAgICBtX3Nlc3Npb25zLmFwcGVuZCgmc2Vzc2lvbik7
Ci0gICAgaWYgKG1faW50ZXJydXB0ZWQpCi0gICAgICAgIHNlc3Npb24uc2V0U3RhdGUoUGxhdGZv
cm1NZWRpYVNlc3Npb246OkludGVycnVwdGVkKTsKLQotICAgIGlmICghbV9yZW1vdGVDb21tYW5k
TGlzdGVuZXIpCi0gICAgICAgIG1fcmVtb3RlQ29tbWFuZExpc3RlbmVyID0gUmVtb3RlQ29tbWFu
ZExpc3RlbmVyOjpjcmVhdGUoKnRoaXMpOwotCi0gICAgaWYgKCFtX2F1ZGlvSGFyZHdhcmVMaXN0
ZW5lcikKLSAgICAgICAgbV9hdWRpb0hhcmR3YXJlTGlzdGVuZXIgPSBBdWRpb0hhcmR3YXJlTGlz
dGVuZXI6OmNyZWF0ZSgqdGhpcyk7Ci0KLSAgICB1cGRhdGVTZXNzaW9uU3RhdGUoKTsKLX0KLQot
dm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyOjpyZW1vdmVTZXNzaW9uKFBsYXRmb3JtTWVkaWFTZXNz
aW9uJiBzZXNzaW9uKQotewotICAgIExPRyhNZWRpYSwgIk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnJl
bW92ZVNlc3Npb24gLSAlcCIsICZzZXNzaW9uKTsKLSAgICAKLSAgICBzaXplX3QgaW5kZXggPSBt
X3Nlc3Npb25zLmZpbmQoJnNlc3Npb24pOwotICAgIEFTU0VSVChpbmRleCAhPSBub3RGb3VuZCk7
Ci0gICAgaWYgKGluZGV4ID09IG5vdEZvdW5kKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAg
bV9zZXNzaW9ucy5yZW1vdmUoaW5kZXgpOwotCi0gICAgaWYgKG1fc2Vzc2lvbnMuaXNFbXB0eSgp
KSB7Ci0gICAgICAgIG1fcmVtb3RlQ29tbWFuZExpc3RlbmVyID0gbnVsbHB0cjsKLSAgICAgICAg
bV9hdWRpb0hhcmR3YXJlTGlzdGVuZXIgPSBudWxscHRyOwotICAgIH0KLQotICAgIHVwZGF0ZVNl
c3Npb25TdGF0ZSgpOwotfQotCi12b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OmFkZFJlc3RyaWN0
aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUgdHlwZSwgU2Vzc2lvblJlc3RyaWN0
aW9ucyByZXN0cmljdGlvbikKLXsKLSAgICBBU1NFUlQodHlwZSA+IFBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpOb25lICYmIHR5cGUgPD0gUGxhdGZvcm1NZWRpYVNlc3Npb246OldlYkF1ZGlvKTsKLSAg
ICBtX3Jlc3RyaWN0aW9uc1t0eXBlXSB8PSByZXN0cmljdGlvbjsKLX0KLQotdm9pZCBNZWRpYVNl
c3Npb25NYW5hZ2VyOjpyZW1vdmVSZXN0cmljdGlvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWVk
aWFUeXBlIHR5cGUsIFNlc3Npb25SZXN0cmljdGlvbnMgcmVzdHJpY3Rpb24pCi17Ci0gICAgQVNT
RVJUKHR5cGUgPiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Tm9uZSAmJiB0eXBlIDw9IFBsYXRmb3Jt
TWVkaWFTZXNzaW9uOjpXZWJBdWRpbyk7Ci0gICAgbV9yZXN0cmljdGlvbnNbdHlwZV0gJj0gfnJl
c3RyaWN0aW9uOwotfQotCi1NZWRpYVNlc3Npb25NYW5hZ2VyOjpTZXNzaW9uUmVzdHJpY3Rpb25z
IE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnJlc3RyaWN0aW9ucyhQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6
TWVkaWFUeXBlIHR5cGUpCi17Ci0gICAgQVNTRVJUKHR5cGUgPiBQbGF0Zm9ybU1lZGlhU2Vzc2lv
bjo6Tm9uZSAmJiB0eXBlIDw9IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpXZWJBdWRpbyk7Ci0gICAg
cmV0dXJuIG1fcmVzdHJpY3Rpb25zW3R5cGVdOwotfQotCi1ib29sIE1lZGlhU2Vzc2lvbk1hbmFn
ZXI6OnNlc3Npb25XaWxsQmVnaW5QbGF5YmFjayhQbGF0Zm9ybU1lZGlhU2Vzc2lvbiYgc2Vzc2lv
bikKLXsKLSAgICBMT0coTWVkaWEsICJNZWRpYVNlc3Npb25NYW5hZ2VyOjpzZXNzaW9uV2lsbEJl
Z2luUGxheWJhY2sgLSAlcCIsICZzZXNzaW9uKTsKLSAgICAKLSAgICBzZXRDdXJyZW50U2Vzc2lv
bihzZXNzaW9uKTsKLQotICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUgc2Vzc2lv
blR5cGUgPSBzZXNzaW9uLm1lZGlhVHlwZSgpOwotICAgIFNlc3Npb25SZXN0cmljdGlvbnMgcmVz
dHJpY3Rpb25zID0gbV9yZXN0cmljdGlvbnNbc2Vzc2lvblR5cGVdOwotICAgIGlmIChzZXNzaW9u
LnN0YXRlKCkgPT0gUGxhdGZvcm1NZWRpYVNlc3Npb246OkludGVycnVwdGVkICYmIHJlc3RyaWN0
aW9ucyAmIEludGVycnVwdGVkUGxheWJhY2tOb3RQZXJtaXR0ZWQpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLQotI2lmIFVTRShBVURJT19TRVNTSU9OKQotICAgIGlmIChhY3RpdmVBdWRpb1Nlc3Np
b25SZXF1aXJlZCgpICYmICFBdWRpb1Nlc3Npb246OnNoYXJlZFNlc3Npb24oKS50cnlUb1NldEFj
dGl2ZSh0cnVlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCi0KLSAgICBpZiAobV9p
bnRlcnJ1cHRlZCkKLSAgICAgICAgZW5kSW50ZXJydXB0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9u
OjpOb0ZsYWdzKTsKLQotICAgIFZlY3RvcjxQbGF0Zm9ybU1lZGlhU2Vzc2lvbio+IHNlc3Npb25z
ID0gbV9zZXNzaW9uczsKLSAgICBmb3IgKGF1dG8qIG9uZVNlc3Npb24gOiBzZXNzaW9ucykgewot
ICAgICAgICBpZiAob25lU2Vzc2lvbiA9PSAmc2Vzc2lvbikKLSAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICBpZiAob25lU2Vzc2lvbi0+bWVkaWFUeXBlKCkgPT0gc2Vzc2lvblR5cGUgJiYg
cmVzdHJpY3Rpb25zICYgQ29uY3VycmVudFBsYXliYWNrTm90UGVybWl0dGVkKQotICAgICAgICAg
ICAgb25lU2Vzc2lvbi0+cGF1c2VTZXNzaW9uKCk7Ci0gICAgfQotCi0gICAgdXBkYXRlU2Vzc2lv
blN0YXRlKCk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0gICAgCi12b2lkIE1lZGlhU2Vzc2lvbk1h
bmFnZXI6OnNlc3Npb25XaWxsRW5kUGxheWJhY2soUGxhdGZvcm1NZWRpYVNlc3Npb24mIHNlc3Np
b24pCi17Ci0gICAgTE9HKE1lZGlhLCAiTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2Vzc2lvbldpbGxF
bmRQbGF5YmFjayAtICVwIiwgJnNlc3Npb24pOwotICAgIAotICAgIGlmIChtX3Nlc3Npb25zLnNp
emUoKSA8IDIpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBzaXplX3QgcGF1c2luZ1Nlc3Np
b25JbmRleCA9IG5vdEZvdW5kOwotICAgIHNpemVfdCBsYXN0UGxheWluZ1Nlc3Npb25JbmRleCA9
IG5vdEZvdW5kOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9zZXNzaW9ucy5zaXplKCk7
ICsraSkgewotICAgICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbiogb25lU2Vzc2lvbiA9IG1fc2Vz
c2lvbnNbaV07Ci0gICAgICAgIAotICAgICAgICBpZiAob25lU2Vzc2lvbiA9PSAmc2Vzc2lvbikg
ewotICAgICAgICAgICAgcGF1c2luZ1Nlc3Npb25JbmRleCA9IGk7Ci0gICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgfQotICAgICAgICBpZiAob25lU2Vzc2lvbi0+c3RhdGUoKSA9PSBQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6UGxheWluZykgewotICAgICAgICAgICAgbGFzdFBsYXlpbmdTZXNz
aW9uSW5kZXggPSBpOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLSAgICAgICAg
aWYgKG9uZVNlc3Npb24tPnN0YXRlKCkgIT0gUGxhdGZvcm1NZWRpYVNlc3Npb246OlBsYXlpbmcp
Ci0gICAgICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgaWYgKGxhc3RQbGF5aW5nU2Vzc2lvbklu
ZGV4ID09IG5vdEZvdW5kIHx8IHBhdXNpbmdTZXNzaW9uSW5kZXggPT0gbm90Rm91bmQpCi0gICAg
ICAgIHJldHVybjsKLSAgICAKLSAgICBpZiAocGF1c2luZ1Nlc3Npb25JbmRleCA+IGxhc3RQbGF5
aW5nU2Vzc2lvbkluZGV4KQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgbV9zZXNzaW9ucy5y
ZW1vdmUocGF1c2luZ1Nlc3Npb25JbmRleCk7Ci0gICAgbV9zZXNzaW9ucy5pbnNlcnQobGFzdFBs
YXlpbmdTZXNzaW9uSW5kZXgsICZzZXNzaW9uKTsKLSAgICAKLSAgICBMT0coTWVkaWEsICJNZWRp
YVNlc3Npb25NYW5hZ2VyOjpzZXNzaW9uV2lsbEVuZFBsYXliYWNrIC0gc2Vzc2lvbiBtb3ZlZCBm
cm9tIGluZGV4ICV6dSB0byAlenUiLCBwYXVzaW5nU2Vzc2lvbkluZGV4LCBsYXN0UGxheWluZ1Nl
c3Npb25JbmRleCk7Ci19Ci0KLXZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2V0Q3VycmVudFNl
c3Npb24oUGxhdGZvcm1NZWRpYVNlc3Npb24mIHNlc3Npb24pCi17Ci0gICAgTE9HKE1lZGlhLCAi
TWVkaWFTZXNzaW9uTWFuYWdlcjo6c2V0Q3VycmVudFNlc3Npb24gLSAlcCIsICZzZXNzaW9uKTsK
LSAgICAKLSAgICBpZiAobV9zZXNzaW9ucy5zaXplKCkgPCAyKQotICAgICAgICByZXR1cm47Ci0g
ICAgCi0gICAgc2l6ZV90IGluZGV4ID0gbV9zZXNzaW9ucy5maW5kKCZzZXNzaW9uKTsKLSAgICBB
U1NFUlQoaW5kZXggIT0gbm90Rm91bmQpOwotICAgIGlmICghaW5kZXggfHwgaW5kZXggPT0gbm90
Rm91bmQpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fc2Vzc2lvbnMucmVtb3ZlKGluZGV4KTsK
LSAgICBtX3Nlc3Npb25zLmluc2VydCgwLCAmc2Vzc2lvbik7Ci0gICAgCi0gICAgTE9HKE1lZGlh
LCAiTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2V0Q3VycmVudFNlc3Npb24gLSBzZXNzaW9uIG1vdmVk
IGZyb20gaW5kZXggJXp1IHRvIDAiLCBpbmRleCk7Ci19Ci0gICAgCi1QbGF0Zm9ybU1lZGlhU2Vz
c2lvbiogTWVkaWFTZXNzaW9uTWFuYWdlcjo6Y3VycmVudFNlc3Npb24oKQotewotICAgIGlmICgh
bV9zZXNzaW9ucy5zaXplKCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgcmV0dXJu
IG1fc2Vzc2lvbnNbMF07Ci19Ci0gICAgCi1ib29sIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNlc3Np
b25SZXN0cmljdHNJbmxpbmVWaWRlb1BsYXliYWNrKGNvbnN0IFBsYXRmb3JtTWVkaWFTZXNzaW9u
JiBzZXNzaW9uKSBjb25zdAotewotICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUg
c2Vzc2lvblR5cGUgPSBzZXNzaW9uLnByZXNlbnRhdGlvblR5cGUoKTsKLSAgICBpZiAoc2Vzc2lv
blR5cGUgIT0gUGxhdGZvcm1NZWRpYVNlc3Npb246OlZpZGVvKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgICByZXR1cm4gbV9yZXN0cmljdGlvbnNbc2Vzc2lvblR5cGVdICYgSW5saW5lVmlk
ZW9QbGF5YmFja1Jlc3RyaWN0ZWQ7Ci19Ci0KLWJvb2wgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2Vz
c2lvbkNhbkxvYWRNZWRpYShjb25zdCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbiYgc2Vzc2lvbikgY29u
c3QKLXsKLSAgICByZXR1cm4gc2Vzc2lvbi5zdGF0ZSgpID09IFBsYXRmb3JtTWVkaWFTZXNzaW9u
OjpQbGF5aW5nIHx8ICFzZXNzaW9uLmlzSGlkZGVuKCkgfHwgc2Vzc2lvbi5pc1BsYXlpbmdUb1dp
cmVsZXNzUGxheWJhY2tUYXJnZXQoKTsKLX0KLQotdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyOjph
cHBsaWNhdGlvbldpbGxFbnRlckJhY2tncm91bmQoKSBjb25zdAotewotICAgIExPRyhNZWRpYSwg
Ik1lZGlhU2Vzc2lvbk1hbmFnZXI6OmFwcGxpY2F0aW9uV2lsbEVudGVyQmFja2dyb3VuZCIpOwot
ICAgIFZlY3RvcjxQbGF0Zm9ybU1lZGlhU2Vzc2lvbio+IHNlc3Npb25zID0gbV9zZXNzaW9uczsK
LSAgICBmb3IgKGF1dG8qIHNlc3Npb24gOiBzZXNzaW9ucykgewotICAgICAgICBpZiAobV9yZXN0
cmljdGlvbnNbc2Vzc2lvbi0+bWVkaWFUeXBlKCldICYgQmFja2dyb3VuZFByb2Nlc3NQbGF5YmFj
a1Jlc3RyaWN0ZWQpCi0gICAgICAgICAgICBzZXNzaW9uLT5iZWdpbkludGVycnVwdGlvbihQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6RW50ZXJpbmdCYWNrZ3JvdW5kKTsKLSAgICB9Ci19Ci0KLXZvaWQg
TWVkaWFTZXNzaW9uTWFuYWdlcjo6YXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKCkgY29u
c3QKLXsKLSAgICBMT0coTWVkaWEsICJNZWRpYVNlc3Npb25NYW5hZ2VyOjphcHBsaWNhdGlvbldp
bGxFbnRlckZvcmVncm91bmQiKTsKLSAgICBWZWN0b3I8UGxhdGZvcm1NZWRpYVNlc3Npb24qPiBz
ZXNzaW9ucyA9IG1fc2Vzc2lvbnM7Ci0gICAgZm9yIChhdXRvKiBzZXNzaW9uIDogc2Vzc2lvbnMp
IHsKLSAgICAgICAgaWYgKG1fcmVzdHJpY3Rpb25zW3Nlc3Npb24tPm1lZGlhVHlwZSgpXSAmIEJh
Y2tncm91bmRQcm9jZXNzUGxheWJhY2tSZXN0cmljdGVkKQotICAgICAgICAgICAgc2Vzc2lvbi0+
ZW5kSW50ZXJydXB0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNYXlSZXN1bWVQbGF5aW5nKTsK
LSAgICB9Ci19Ci0KLSNpZiAhUExBVEZPUk0oQ09DT0EpCi12b2lkIE1lZGlhU2Vzc2lvbk1hbmFn
ZXI6OnVwZGF0ZVNlc3Npb25TdGF0ZSgpCi17Ci19Ci0jZW5kaWYKLQotdm9pZCBNZWRpYVNlc3Np
b25NYW5hZ2VyOjpkaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoUGxhdGZvcm1NZWRpYVNl
c3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSBjb21tYW5kKQotewotICAgIFBsYXRmb3Jt
TWVkaWFTZXNzaW9uKiBhY3RpdmVTZXNzaW9uID0gY3VycmVudFNlc3Npb24oKTsKLSAgICBpZiAo
IWFjdGl2ZVNlc3Npb24gfHwgIWFjdGl2ZVNlc3Npb24tPmNhblJlY2VpdmVSZW1vdGVDb250cm9s
Q29tbWFuZHMoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIGFjdGl2ZVNlc3Npb24tPmRpZFJlY2Vp
dmVSZW1vdGVDb250cm9sQ29tbWFuZChjb21tYW5kKTsKLX0KLQotdm9pZCBNZWRpYVNlc3Npb25N
YW5hZ2VyOjpzeXN0ZW1XaWxsU2xlZXAoKQotewotICAgIGlmIChtX2ludGVycnVwdGVkKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBmb3IgKGF1dG8gc2Vzc2lvbiA6IG1fc2Vzc2lvbnMpCi0gICAg
ICAgIHNlc3Npb24tPmJlZ2luSW50ZXJydXB0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTeXN0
ZW1TbGVlcCk7Ci19Ci0KLXZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c3lzdGVtRGlkV2FrZSgp
Ci17Ci0gICAgaWYgKG1faW50ZXJydXB0ZWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGZvciAo
YXV0byBzZXNzaW9uIDogbV9zZXNzaW9ucykKLSAgICAgICAgc2Vzc2lvbi0+ZW5kSW50ZXJydXB0
aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNYXlSZXN1bWVQbGF5aW5nKTsKLX0KLQotdm9pZCBN
ZWRpYVNlc3Npb25NYW5hZ2VyOjphdWRpb091dHB1dERldmljZUNoYW5nZWQoKQotewotICAgIHVw
ZGF0ZVNlc3Npb25TdGF0ZSgpOwotfQotCi19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uTWFuYWdlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uTWFuYWdlci5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBkMTUwYTk4NWRjNjc0ZmE3Y2NlZjU1Mjc1MTFmZjJkZDgzZDc0YTA0
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbk1hbmFnZXIuaAorKysgL2Rldi9udWxs
CkBAIC0xLDEzMyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTUgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIE1lZGlhU2Vzc2lv
bk1hbmFnZXJfaAotI2RlZmluZSBNZWRpYVNlc3Npb25NYW5hZ2VyX2gKLQotI2luY2x1ZGUgIkF1
ZGlvSGFyZHdhcmVMaXN0ZW5lci5oIgotI2luY2x1ZGUgIlBsYXRmb3JtTWVkaWFTZXNzaW9uLmgi
Ci0jaW5jbHVkZSAiUmVtb3RlQ29tbWFuZExpc3RlbmVyLmgiCi0jaW5jbHVkZSAiU2V0dGluZ3Mu
aCIKLSNpbmNsdWRlICJTeXN0ZW1TbGVlcExpc3RlbmVyLmgiCi0jaW5jbHVkZSA8bWFwPgotI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBIVE1M
TWVkaWFFbGVtZW50OwotY2xhc3MgUGxhdGZvcm1NZWRpYVNlc3Npb247Ci1jbGFzcyBSZW1vdGVD
b21tYW5kTGlzdGVuZXI7Ci0KLWNsYXNzIE1lZGlhU2Vzc2lvbk1hbmFnZXIgOiBwcml2YXRlIFJl
bW90ZUNvbW1hbmRMaXN0ZW5lckNsaWVudCwgcHJpdmF0ZSBTeXN0ZW1TbGVlcExpc3RlbmVyOjpD
bGllbnQsIHByaXZhdGUgQXVkaW9IYXJkd2FyZUxpc3RlbmVyOjpDbGllbnQgewotICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBN
ZWRpYVNlc3Npb25NYW5hZ2VyJiBzaGFyZWRNYW5hZ2VyKCk7Ci0gICAgdmlydHVhbCB+TWVkaWFT
ZXNzaW9uTWFuYWdlcigpIHsgfQotCi0gICAgYm9vbCBoYXMoUGxhdGZvcm1NZWRpYVNlc3Npb246
Ok1lZGlhVHlwZSkgY29uc3Q7Ci0gICAgaW50IGNvdW50KFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpN
ZWRpYVR5cGUpIGNvbnN0OwotICAgIGJvb2wgYWN0aXZlQXVkaW9TZXNzaW9uUmVxdWlyZWQoKSBj
b25zdDsKLQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYmVnaW5JbnRlcnJ1cHRpb24oUGxhdGZv
cm1NZWRpYVNlc3Npb246OkludGVycnVwdGlvblR5cGUpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgZW5kSW50ZXJydXB0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpFbmRJbnRlcnJ1cHRpb25G
bGFncyk7Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGxpY2F0aW9uV2lsbEVudGVyRm9y
ZWdyb3VuZCgpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwbGljYXRpb25XaWxs
RW50ZXJCYWNrZ3JvdW5kKCkgY29uc3Q7Ci0KLSAgICBlbnVtIFNlc3Npb25SZXN0cmljdGlvbkZs
YWdzIHsKLSAgICAgICAgTm9SZXN0cmljdGlvbnMgPSAwLAotICAgICAgICBDb25jdXJyZW50UGxh
eWJhY2tOb3RQZXJtaXR0ZWQgPSAxIDw8IDAsCi0gICAgICAgIElubGluZVZpZGVvUGxheWJhY2tS
ZXN0cmljdGVkID0gMSA8PCAxLAotICAgICAgICBNZXRhZGF0YVByZWxvYWRpbmdOb3RQZXJtaXR0
ZWQgPSAxIDw8IDIsCi0gICAgICAgIEF1dG9QcmVsb2FkaW5nTm90UGVybWl0dGVkID0gMSA8PCAz
LAotICAgICAgICBCYWNrZ3JvdW5kUHJvY2Vzc1BsYXliYWNrUmVzdHJpY3RlZCA9IDEgPDwgNCwK
LSAgICAgICAgQmFja2dyb3VuZFRhYlBsYXliYWNrUmVzdHJpY3RlZCA9IDEgPDwgNSwKLSAgICAg
ICAgSW50ZXJydXB0ZWRQbGF5YmFja05vdFBlcm1pdHRlZCA9IDEgPDwgNiwKLSAgICB9OwotICAg
IHR5cGVkZWYgdW5zaWduZWQgU2Vzc2lvblJlc3RyaWN0aW9uczsKLQotICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgYWRkUmVzdHJpY3Rpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246Ok1lZGlhVHlwZSwg
U2Vzc2lvblJlc3RyaWN0aW9ucyk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVSZXN0
cmljdGlvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlLCBTZXNzaW9uUmVzdHJpY3Rp
b25zKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBTZXNzaW9uUmVzdHJpY3Rpb25zIHJlc3RyaWN0aW9u
cyhQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVz
ZXRSZXN0cmljdGlvbnMoKTsKLQotICAgIHZpcnR1YWwgYm9vbCBzZXNzaW9uV2lsbEJlZ2luUGxh
eWJhY2soUGxhdGZvcm1NZWRpYVNlc3Npb24mKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2Vzc2lvbldp
bGxFbmRQbGF5YmFjayhQbGF0Zm9ybU1lZGlhU2Vzc2lvbiYpOwotCi0gICAgYm9vbCBzZXNzaW9u
UmVzdHJpY3RzSW5saW5lVmlkZW9QbGF5YmFjayhjb25zdCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbiYp
IGNvbnN0OwotCi0gICAgdmlydHVhbCBib29sIHNlc3Npb25DYW5Mb2FkTWVkaWEoY29uc3QgUGxh
dGZvcm1NZWRpYVNlc3Npb24mKSBjb25zdDsKLQotI2lmIFBMQVRGT1JNKElPUykKLSAgICB2aXJ0
dWFsIHZvaWQgY29uZmlndXJlV2lyZUxlc3NUYXJnZXRNb25pdG9yaW5nKCkgeyB9Ci0gICAgdmly
dHVhbCBib29sIGhhc1dpcmVsZXNzVGFyZ2V0c0F2YWlsYWJsZSgpIHsgcmV0dXJuIGZhbHNlOyB9
Ci0jZW5kaWYKLQotICAgIHZvaWQgc2V0Q3VycmVudFNlc3Npb24oUGxhdGZvcm1NZWRpYVNlc3Np
b24mKTsKLSAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbiogY3VycmVudFNlc3Npb24oKTsKLQotcHJv
dGVjdGVkOgotICAgIGZyaWVuZCBjbGFzcyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjsKLSAgICBleHBs
aWNpdCBNZWRpYVNlc3Npb25NYW5hZ2VyKCk7Ci0KLSAgICB2b2lkIGFkZFNlc3Npb24oUGxhdGZv
cm1NZWRpYVNlc3Npb24mKTsKLSAgICB2b2lkIHJlbW92ZVNlc3Npb24oUGxhdGZvcm1NZWRpYVNl
c3Npb24mKTsKLQotICAgIFZlY3RvcjxQbGF0Zm9ybU1lZGlhU2Vzc2lvbio+IHNlc3Npb25zKCkg
eyByZXR1cm4gbV9zZXNzaW9uczsgfQotCi1wcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBJbnRl
cm5hbHM7Ci0KLSAgICB2b2lkIHVwZGF0ZVNlc3Npb25TdGF0ZSgpOwotCi0gICAgLy8gUmVtb3Rl
Q29tbWFuZExpc3RlbmVyQ2xpZW50Ci0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3Rl
Q29udHJvbENvbW1hbmRUeXBlKSBvdmVycmlkZTsKLQotICAgIC8vIEF1ZGlvSGFyZHdhcmVMaXN0
ZW5lckNsaWVudAotICAgIHZpcnR1YWwgdm9pZCBhdWRpb0hhcmR3YXJlRGlkQmVjb21lQWN0aXZl
KCkgb3ZlcnJpZGUgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGF1ZGlvSGFyZHdhcmVEaWRCZWNvbWVJ
bmFjdGl2ZSgpIG92ZXJyaWRlIHsgfQotICAgIHZpcnR1YWwgdm9pZCBhdWRpb091dHB1dERldmlj
ZUNoYW5nZWQoKSBvdmVycmlkZTsKLQotICAgIC8vIFN5c3RlbVNsZWVwTGlzdGVuZXIKLSAgICB2
aXJ0dWFsIHZvaWQgc3lzdGVtV2lsbFNsZWVwKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lk
IHN5c3RlbURpZFdha2UoKSBvdmVycmlkZTsKLQotICAgIFNlc3Npb25SZXN0cmljdGlvbnMgbV9y
ZXN0cmljdGlvbnNbUGxhdGZvcm1NZWRpYVNlc3Npb246OldlYkF1ZGlvICsgMV07Ci0gICAgVmVj
dG9yPFBsYXRmb3JtTWVkaWFTZXNzaW9uKj4gbV9zZXNzaW9uczsKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8UmVtb3RlQ29tbWFuZExpc3RlbmVyPiBtX3JlbW90ZUNvbW1hbmRMaXN0ZW5lcjsKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8U3lzdGVtU2xlZXBMaXN0ZW5lcj4gbV9zeXN0ZW1TbGVlcExpc3RlbmVy
OwotICAgIFJlZlB0cjxBdWRpb0hhcmR3YXJlTGlzdGVuZXI+IG1fYXVkaW9IYXJkd2FyZUxpc3Rl
bmVyOwotCi0jaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JN
KElPUykKLSAgICBSZWZQdHI8TWVkaWFQbGF5YmFja1RhcmdldD4gbV9wbGF5YmFja1RhcmdldDsK
LSAgICBib29sIG1fY2FuUGxheVRvVGFyZ2V0IHsgZmFsc2UgfTsKLSNlbmRpZgotCi0gICAgYm9v
bCBtX2ludGVycnVwdGVkIHsgZmFsc2UgfTsKLX07Ci0KLX0KLQotI2VuZGlmIC8vIE1lZGlhU2Vz
c2lvbk1hbmFnZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
UGxhdGZvcm1NZWRpYVNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
UGxhdGZvcm1NZWRpYVNlc3Npb24uY3BwCmluZGV4IDY2OTNhNmY2OTkwYmFlZWJkNTJhZjFiZTMy
ZDYyMWY1OWJiNGIwY2EuLjk5ODk3Y2FiNTkyMjBhMzVhMDQ2MWNjZDIxZGU3YjhhNGUyMjRmNTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFT
ZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1l
ZGlhU2Vzc2lvbi5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlICJIVE1MTWVkaWFFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCi0j
aW5jbHVkZSAiTWVkaWFTZXNzaW9uTWFuYWdlci5oIgorI2luY2x1ZGUgIlBsYXRmb3JtTWVkaWFT
ZXNzaW9uTWFuYWdlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTY1LDEyICs2NSwx
MiBAQCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UGxhdGZvcm1NZWRpYVNlc3Npb24oUGxhdGZvcm1N
ZWRpYVNlc3Npb25DbGllbnQmIGNsaWVudCkKICAgICAsIG1fbm90aWZ5aW5nQ2xpZW50KGZhbHNl
KQogewogICAgIEFTU0VSVChtX2NsaWVudC5tZWRpYVR5cGUoKSA+PSBOb25lICYmIG1fY2xpZW50
Lm1lZGlhVHlwZSgpIDw9IFdlYkF1ZGlvKTsKLSAgICBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFy
ZWRNYW5hZ2VyKCkuYWRkU2Vzc2lvbigqdGhpcyk7CisgICAgUGxhdGZvcm1NZWRpYVNlc3Npb25N
YW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuYWRkU2Vzc2lvbigqdGhpcyk7CiB9CiAKIFBsYXRmb3Jt
TWVkaWFTZXNzaW9uOjp+UGxhdGZvcm1NZWRpYVNlc3Npb24oKQogewotICAgIE1lZGlhU2Vzc2lv
bk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5yZW1vdmVTZXNzaW9uKCp0aGlzKTsKKyAgICBQbGF0
Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5yZW1vdmVTZXNzaW9uKCp0
aGlzKTsKIH0KIAogdm9pZCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6c2V0U3RhdGUoU3RhdGUgc3Rh
dGUpCkBAIC0xMTgsNyArMTE4LDcgQEAgYm9vbCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Y2xpZW50
V2lsbEJlZ2luUGxheWJhY2soKQogICAgIGlmIChtX25vdGlmeWluZ0NsaWVudCkKICAgICAgICAg
cmV0dXJuIHRydWU7CiAKLSAgICBpZiAoIU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFn
ZXIoKS5zZXNzaW9uV2lsbEJlZ2luUGxheWJhY2soKnRoaXMpKSB7CisgICAgaWYgKCFQbGF0Zm9y
bU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5zZXNzaW9uV2lsbEJlZ2luUGxh
eWJhY2soKnRoaXMpKSB7CiAgICAgICAgIGlmIChzdGF0ZSgpID09IEludGVycnVwdGVkKQogICAg
ICAgICAgICAgbV9zdGF0ZVRvUmVzdG9yZSA9IFBsYXlpbmc7CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTE0Miw3ICsxNDIsNyBAQCBib29sIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpjbGllbnRX
aWxsUGF1c2VQbGF5YmFjaygpCiAgICAgfQogICAgIAogICAgIHNldFN0YXRlKFBhdXNlZCk7Ci0g
ICAgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLnNlc3Npb25XaWxsRW5kUGxh
eWJhY2soKnRoaXMpOworICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFu
YWdlcigpLnNlc3Npb25XaWxsRW5kUGxheWJhY2soKnRoaXMpOwogICAgIGlmICghbV9jbGllbnRE
YXRhQnVmZmVyaW5nVGltZXIuaXNBY3RpdmUoKSkKICAgICAgICAgbV9jbGllbnREYXRhQnVmZmVy
aW5nVGltZXIuc3RhcnRPbmVTaG90KGtDbGllbnREYXRhQnVmZmVyaW5nVGltZXJUaHJvdHRsZURl
bGF5KTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTIwNCw4ICsyMDQsOCBAQCB2b2lkIFBsYXRmb3Jt
TWVkaWFTZXNzaW9uOjpjbGllbnREYXRhQnVmZmVyaW5nVGltZXJGaXJlZCgpCiAgICAgaWYgKG1f
c3RhdGUgIT0gUGxheWluZyB8fCAhbV9jbGllbnQuZWxlbWVudElzSGlkZGVuKCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OlNlc3Npb25SZXN0cmljdGlvbnMg
cmVzdHJpY3Rpb25zID0gTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLnJlc3Ry
aWN0aW9ucyhtZWRpYVR5cGUoKSk7Ci0gICAgaWYgKChyZXN0cmljdGlvbnMgJiBNZWRpYVNlc3Np
b25NYW5hZ2VyOjpCYWNrZ3JvdW5kVGFiUGxheWJhY2tSZXN0cmljdGVkKSA9PSBNZWRpYVNlc3Np
b25NYW5hZ2VyOjpCYWNrZ3JvdW5kVGFiUGxheWJhY2tSZXN0cmljdGVkKQorICAgIFBsYXRmb3Jt
TWVkaWFTZXNzaW9uTWFuYWdlcjo6U2Vzc2lvblJlc3RyaWN0aW9ucyByZXN0cmljdGlvbnMgPSBQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5yZXN0cmljdGlvbnMo
bWVkaWFUeXBlKCkpOworICAgIGlmICgocmVzdHJpY3Rpb25zICYgUGxhdGZvcm1NZWRpYVNlc3Np
b25NYW5hZ2VyOjpCYWNrZ3JvdW5kVGFiUGxheWJhY2tSZXN0cmljdGVkKSA9PSBQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbk1hbmFnZXI6OkJhY2tncm91bmRUYWJQbGF5YmFja1Jlc3RyaWN0ZWQpCiAgICAg
ICAgIHBhdXNlU2Vzc2lvbigpOwogfQogCkBAIC0yMTQsNyArMjE0LDcgQEAgdm9pZCBQbGF0Zm9y
bU1lZGlhU2Vzc2lvbjo6dXBkYXRlQ2xpZW50RGF0YUJ1ZmZlcmluZygpCiAgICAgaWYgKG1fY2xp
ZW50RGF0YUJ1ZmZlcmluZ1RpbWVyLmlzQWN0aXZlKCkpCiAgICAgICAgIG1fY2xpZW50RGF0YUJ1
ZmZlcmluZ1RpbWVyLnN0b3AoKTsKIAotICAgIG1fY2xpZW50LnNldFNob3VsZEJ1ZmZlckRhdGEo
TWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLnNlc3Npb25DYW5Mb2FkTWVkaWEo
KnRoaXMpKTsKKyAgICBtX2NsaWVudC5zZXRTaG91bGRCdWZmZXJEYXRhKFBsYXRmb3JtTWVkaWFT
ZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLnNlc3Npb25DYW5Mb2FkTWVkaWEoKnRoaXMp
KTsKIH0KIAogYm9vbCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6aXNIaWRkZW4oKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Np
b25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVk
aWFTZXNzaW9uTWFuYWdlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzI5M2Y1NjRiY2FjNGExYjUzYTU0OTFm
YTAwZGVmZDY3MzQ0ZGZjZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAKQEAgLTAsMCArMSwzMzQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQbGF0
Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaCIKKworI2lmIEVOQUJMRShWSURFTykKKworI2luY2x1
ZGUgIkF1ZGlvU2Vzc2lvbi5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJOb3RJ
bXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIlBsYXRmb3JtTWVkaWFTZXNzaW9uLmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworI2lmICFQTEFURk9STShJT1MpCitQbGF0Zm9ybU1lZGlhU2Vzc2lv
bk1hbmFnZXImIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpCit7
CisgICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFBsYXRmb3JtTWVkaWFTZXNzaW9u
TWFuYWdlciwgbWFuYWdlciwgKCkpOworICAgIHJldHVybiBtYW5hZ2VyOworfQorI2VuZGlmCisK
K1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2Vy
KCkKKyAgICA6IG1fc3lzdGVtU2xlZXBMaXN0ZW5lcihTeXN0ZW1TbGVlcExpc3RlbmVyOjpjcmVh
dGUoKnRoaXMpKQoreworICAgIHJlc2V0UmVzdHJpY3Rpb25zKCk7Cit9CisKK3ZvaWQgUGxhdGZv
cm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpyZXNldFJlc3RyaWN0aW9ucygpCit7CisgICAgbV9yZXN0
cmljdGlvbnNbUGxhdGZvcm1NZWRpYVNlc3Npb246OlZpZGVvXSA9IE5vUmVzdHJpY3Rpb25zOwor
ICAgIG1fcmVzdHJpY3Rpb25zW1BsYXRmb3JtTWVkaWFTZXNzaW9uOjpBdWRpb10gPSBOb1Jlc3Ry
aWN0aW9uczsKKyAgICBtX3Jlc3RyaWN0aW9uc1tQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6V2ViQXVk
aW9dID0gTm9SZXN0cmljdGlvbnM7Cit9CisKK2Jvb2wgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5h
Z2VyOjpoYXMoUGxhdGZvcm1NZWRpYVNlc3Npb246Ok1lZGlhVHlwZSB0eXBlKSBjb25zdAorewor
ICAgIEFTU0VSVCh0eXBlID49IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpOb25lICYmIHR5cGUgPD0g
UGxhdGZvcm1NZWRpYVNlc3Npb246OldlYkF1ZGlvKTsKKworICAgIGZvciAoYXV0byogc2Vzc2lv
biA6IG1fc2Vzc2lvbnMpIHsKKyAgICAgICAgaWYgKHNlc3Npb24tPm1lZGlhVHlwZSgpID09IHR5
cGUpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKK2Jvb2wgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjphY3RpdmVBdWRpb1Nlc3Np
b25SZXF1aXJlZCgpIGNvbnN0Cit7CisgICAgZm9yIChhdXRvKiBzZXNzaW9uIDogbV9zZXNzaW9u
cykgeworICAgICAgICBpZiAoc2Vzc2lvbi0+bWVkaWFUeXBlKCkgIT0gUGxhdGZvcm1NZWRpYVNl
c3Npb246Ok5vbmUgJiYgc2Vzc2lvbi0+c3RhdGUoKSA9PSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6
U3RhdGU6OlBsYXlpbmcpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCisg
ICAgcmV0dXJuIGZhbHNlOworfQorCitpbnQgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpj
b3VudChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlIHR5cGUpIGNvbnN0Cit7CisgICAg
QVNTRVJUKHR5cGUgPj0gUGxhdGZvcm1NZWRpYVNlc3Npb246Ok5vbmUgJiYgdHlwZSA8PSBQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6V2ViQXVkaW8pOworCisgICAgaW50IGNvdW50ID0gMDsKKyAgICBm
b3IgKGF1dG8qIHNlc3Npb24gOiBtX3Nlc3Npb25zKSB7CisgICAgICAgIGlmIChzZXNzaW9uLT5t
ZWRpYVR5cGUoKSA9PSB0eXBlKQorICAgICAgICAgICAgKytjb3VudDsKKyAgICB9CisKKyAgICBy
ZXR1cm4gY291bnQ7Cit9CisKK3ZvaWQgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpiZWdp
bkludGVycnVwdGlvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6SW50ZXJydXB0aW9uVHlwZSB0eXBl
KQoreworICAgIExPRyhNZWRpYSwgIlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6YmVnaW5J
bnRlcnJ1cHRpb24iKTsKKworICAgIG1faW50ZXJydXB0ZWQgPSB0cnVlOworICAgIFZlY3RvcjxQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbio+IHNlc3Npb25zID0gbV9zZXNzaW9uczsKKyAgICBmb3IgKGF1
dG8qIHNlc3Npb24gOiBzZXNzaW9ucykKKyAgICAgICAgc2Vzc2lvbi0+YmVnaW5JbnRlcnJ1cHRp
b24odHlwZSk7CisgICAgdXBkYXRlU2Vzc2lvblN0YXRlKCk7Cit9CisKK3ZvaWQgUGxhdGZvcm1N
ZWRpYVNlc3Npb25NYW5hZ2VyOjplbmRJbnRlcnJ1cHRpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246
OkVuZEludGVycnVwdGlvbkZsYWdzIGZsYWdzKQoreworICAgIExPRyhNZWRpYSwgIlBsYXRmb3Jt
TWVkaWFTZXNzaW9uTWFuYWdlcjo6ZW5kSW50ZXJydXB0aW9uIik7CisKKyAgICBtX2ludGVycnVw
dGVkID0gZmFsc2U7CisgICAgVmVjdG9yPFBsYXRmb3JtTWVkaWFTZXNzaW9uKj4gc2Vzc2lvbnMg
PSBtX3Nlc3Npb25zOworICAgIGZvciAoYXV0byogc2Vzc2lvbiA6IHNlc3Npb25zKQorICAgICAg
ICBzZXNzaW9uLT5lbmRJbnRlcnJ1cHRpb24oZmxhZ3MpOworfQorCit2b2lkIFBsYXRmb3JtTWVk
aWFTZXNzaW9uTWFuYWdlcjo6YWRkU2Vzc2lvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbiYgc2Vzc2lv
bikKK3sKKyAgICBMT0coTWVkaWEsICJQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OmFkZFNl
c3Npb24gLSAlcCIsICZzZXNzaW9uKTsKKyAgICAKKyAgICBtX3Nlc3Npb25zLmFwcGVuZCgmc2Vz
c2lvbik7CisgICAgaWYgKG1faW50ZXJydXB0ZWQpCisgICAgICAgIHNlc3Npb24uc2V0U3RhdGUo
UGxhdGZvcm1NZWRpYVNlc3Npb246OkludGVycnVwdGVkKTsKKworICAgIGlmICghbV9yZW1vdGVD
b21tYW5kTGlzdGVuZXIpCisgICAgICAgIG1fcmVtb3RlQ29tbWFuZExpc3RlbmVyID0gUmVtb3Rl
Q29tbWFuZExpc3RlbmVyOjpjcmVhdGUoKnRoaXMpOworCisgICAgaWYgKCFtX2F1ZGlvSGFyZHdh
cmVMaXN0ZW5lcikKKyAgICAgICAgbV9hdWRpb0hhcmR3YXJlTGlzdGVuZXIgPSBBdWRpb0hhcmR3
YXJlTGlzdGVuZXI6OmNyZWF0ZSgqdGhpcyk7CisKKyAgICB1cGRhdGVTZXNzaW9uU3RhdGUoKTsK
K30KKwordm9pZCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnJlbW92ZVNlc3Npb24oUGxh
dGZvcm1NZWRpYVNlc3Npb24mIHNlc3Npb24pCit7CisgICAgTE9HKE1lZGlhLCAiUGxhdGZvcm1N
ZWRpYVNlc3Npb25NYW5hZ2VyOjpyZW1vdmVTZXNzaW9uIC0gJXAiLCAmc2Vzc2lvbik7CisgICAg
CisgICAgc2l6ZV90IGluZGV4ID0gbV9zZXNzaW9ucy5maW5kKCZzZXNzaW9uKTsKKyAgICBBU1NF
UlQoaW5kZXggIT0gbm90Rm91bmQpOworICAgIGlmIChpbmRleCA9PSBub3RGb3VuZCkKKyAgICAg
ICAgcmV0dXJuOworICAgIAorICAgIG1fc2Vzc2lvbnMucmVtb3ZlKGluZGV4KTsKKworICAgIGlm
IChtX3Nlc3Npb25zLmlzRW1wdHkoKSkgeworICAgICAgICBtX3JlbW90ZUNvbW1hbmRMaXN0ZW5l
ciA9IG51bGxwdHI7CisgICAgICAgIG1fYXVkaW9IYXJkd2FyZUxpc3RlbmVyID0gbnVsbHB0cjsK
KyAgICB9CisKKyAgICB1cGRhdGVTZXNzaW9uU3RhdGUoKTsKK30KKwordm9pZCBQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbk1hbmFnZXI6OmFkZFJlc3RyaWN0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpN
ZWRpYVR5cGUgdHlwZSwgU2Vzc2lvblJlc3RyaWN0aW9ucyByZXN0cmljdGlvbikKK3sKKyAgICBB
U1NFUlQodHlwZSA+IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpOb25lICYmIHR5cGUgPD0gUGxhdGZv
cm1NZWRpYVNlc3Npb246OldlYkF1ZGlvKTsKKyAgICBtX3Jlc3RyaWN0aW9uc1t0eXBlXSB8PSBy
ZXN0cmljdGlvbjsKK30KKwordm9pZCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnJlbW92
ZVJlc3RyaWN0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUgdHlwZSwgU2Vzc2lv
blJlc3RyaWN0aW9ucyByZXN0cmljdGlvbikKK3sKKyAgICBBU1NFUlQodHlwZSA+IFBsYXRmb3Jt
TWVkaWFTZXNzaW9uOjpOb25lICYmIHR5cGUgPD0gUGxhdGZvcm1NZWRpYVNlc3Npb246OldlYkF1
ZGlvKTsKKyAgICBtX3Jlc3RyaWN0aW9uc1t0eXBlXSAmPSB+cmVzdHJpY3Rpb247Cit9CisKK1Bs
YXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6U2Vzc2lvblJlc3RyaWN0aW9ucyBQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbk1hbmFnZXI6OnJlc3RyaWN0aW9ucyhQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWVk
aWFUeXBlIHR5cGUpCit7CisgICAgQVNTRVJUKHR5cGUgPiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6
Tm9uZSAmJiB0eXBlIDw9IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpXZWJBdWRpbyk7CisgICAgcmV0
dXJuIG1fcmVzdHJpY3Rpb25zW3R5cGVdOworfQorCitib29sIFBsYXRmb3JtTWVkaWFTZXNzaW9u
TWFuYWdlcjo6c2Vzc2lvbldpbGxCZWdpblBsYXliYWNrKFBsYXRmb3JtTWVkaWFTZXNzaW9uJiBz
ZXNzaW9uKQoreworICAgIExPRyhNZWRpYSwgIlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6
c2Vzc2lvbldpbGxCZWdpblBsYXliYWNrIC0gJXAiLCAmc2Vzc2lvbik7CisgICAgCisgICAgc2V0
Q3VycmVudFNlc3Npb24oc2Vzc2lvbik7CisKKyAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWVk
aWFUeXBlIHNlc3Npb25UeXBlID0gc2Vzc2lvbi5tZWRpYVR5cGUoKTsKKyAgICBTZXNzaW9uUmVz
dHJpY3Rpb25zIHJlc3RyaWN0aW9ucyA9IG1fcmVzdHJpY3Rpb25zW3Nlc3Npb25UeXBlXTsKKyAg
ICBpZiAoc2Vzc2lvbi5zdGF0ZSgpID09IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpJbnRlcnJ1cHRl
ZCAmJiByZXN0cmljdGlvbnMgJiBJbnRlcnJ1cHRlZFBsYXliYWNrTm90UGVybWl0dGVkKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyNpZiBVU0UoQVVESU9fU0VTU0lPTikKKyAgICBpZiAoYWN0
aXZlQXVkaW9TZXNzaW9uUmVxdWlyZWQoKSAmJiAhQXVkaW9TZXNzaW9uOjpzaGFyZWRTZXNzaW9u
KCkudHJ5VG9TZXRBY3RpdmUodHJ1ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgor
CisgICAgaWYgKG1faW50ZXJydXB0ZWQpCisgICAgICAgIGVuZEludGVycnVwdGlvbihQbGF0Zm9y
bU1lZGlhU2Vzc2lvbjo6Tm9GbGFncyk7CisKKyAgICBWZWN0b3I8UGxhdGZvcm1NZWRpYVNlc3Np
b24qPiBzZXNzaW9ucyA9IG1fc2Vzc2lvbnM7CisgICAgZm9yIChhdXRvKiBvbmVTZXNzaW9uIDog
c2Vzc2lvbnMpIHsKKyAgICAgICAgaWYgKG9uZVNlc3Npb24gPT0gJnNlc3Npb24pCisgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKG9uZVNlc3Npb24tPm1lZGlhVHlwZSgpID09IHNl
c3Npb25UeXBlICYmIHJlc3RyaWN0aW9ucyAmIENvbmN1cnJlbnRQbGF5YmFja05vdFBlcm1pdHRl
ZCkKKyAgICAgICAgICAgIG9uZVNlc3Npb24tPnBhdXNlU2Vzc2lvbigpOworICAgIH0KKworICAg
IHVwZGF0ZVNlc3Npb25TdGF0ZSgpOworICAgIHJldHVybiB0cnVlOworfQorICAgIAordm9pZCBQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNlc3Npb25XaWxsRW5kUGxheWJhY2soUGxhdGZv
cm1NZWRpYVNlc3Npb24mIHNlc3Npb24pCit7CisgICAgTE9HKE1lZGlhLCAiUGxhdGZvcm1NZWRp
YVNlc3Npb25NYW5hZ2VyOjpzZXNzaW9uV2lsbEVuZFBsYXliYWNrIC0gJXAiLCAmc2Vzc2lvbik7
CisgICAgCisgICAgaWYgKG1fc2Vzc2lvbnMuc2l6ZSgpIDwgMikKKyAgICAgICAgcmV0dXJuOwor
ICAgIAorICAgIHNpemVfdCBwYXVzaW5nU2Vzc2lvbkluZGV4ID0gbm90Rm91bmQ7CisgICAgc2l6
ZV90IGxhc3RQbGF5aW5nU2Vzc2lvbkluZGV4ID0gbm90Rm91bmQ7CisgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBtX3Nlc3Npb25zLnNpemUoKTsgKytpKSB7CisgICAgICAgIFBsYXRmb3JtTWVk
aWFTZXNzaW9uKiBvbmVTZXNzaW9uID0gbV9zZXNzaW9uc1tpXTsKKyAgICAgICAgCisgICAgICAg
IGlmIChvbmVTZXNzaW9uID09ICZzZXNzaW9uKSB7CisgICAgICAgICAgICBwYXVzaW5nU2Vzc2lv
bkluZGV4ID0gaTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGlm
IChvbmVTZXNzaW9uLT5zdGF0ZSgpID09IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQbGF5aW5nKSB7
CisgICAgICAgICAgICBsYXN0UGxheWluZ1Nlc3Npb25JbmRleCA9IGk7CisgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAob25lU2Vzc2lvbi0+c3RhdGUoKSAhPSBQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UGxheWluZykKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0K
KyAgICBpZiAobGFzdFBsYXlpbmdTZXNzaW9uSW5kZXggPT0gbm90Rm91bmQgfHwgcGF1c2luZ1Nl
c3Npb25JbmRleCA9PSBub3RGb3VuZCkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIGlmIChw
YXVzaW5nU2Vzc2lvbkluZGV4ID4gbGFzdFBsYXlpbmdTZXNzaW9uSW5kZXgpCisgICAgICAgIHJl
dHVybjsKKyAgICAKKyAgICBtX3Nlc3Npb25zLnJlbW92ZShwYXVzaW5nU2Vzc2lvbkluZGV4KTsK
KyAgICBtX3Nlc3Npb25zLmluc2VydChsYXN0UGxheWluZ1Nlc3Npb25JbmRleCwgJnNlc3Npb24p
OworICAgIAorICAgIExPRyhNZWRpYSwgIlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2Vz
c2lvbldpbGxFbmRQbGF5YmFjayAtIHNlc3Npb24gbW92ZWQgZnJvbSBpbmRleCAlenUgdG8gJXp1
IiwgcGF1c2luZ1Nlc3Npb25JbmRleCwgbGFzdFBsYXlpbmdTZXNzaW9uSW5kZXgpOworfQorCit2
b2lkIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2V0Q3VycmVudFNlc3Npb24oUGxhdGZv
cm1NZWRpYVNlc3Npb24mIHNlc3Npb24pCit7CisgICAgTE9HKE1lZGlhLCAiUGxhdGZvcm1NZWRp
YVNlc3Npb25NYW5hZ2VyOjpzZXRDdXJyZW50U2Vzc2lvbiAtICVwIiwgJnNlc3Npb24pOworICAg
IAorICAgIGlmIChtX3Nlc3Npb25zLnNpemUoKSA8IDIpCisgICAgICAgIHJldHVybjsKKyAgICAK
KyAgICBzaXplX3QgaW5kZXggPSBtX3Nlc3Npb25zLmZpbmQoJnNlc3Npb24pOworICAgIEFTU0VS
VChpbmRleCAhPSBub3RGb3VuZCk7CisgICAgaWYgKCFpbmRleCB8fCBpbmRleCA9PSBub3RGb3Vu
ZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9zZXNzaW9ucy5yZW1vdmUoaW5kZXgpOworICAg
IG1fc2Vzc2lvbnMuaW5zZXJ0KDAsICZzZXNzaW9uKTsKKyAgICAKKyAgICBMT0coTWVkaWEsICJQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNldEN1cnJlbnRTZXNzaW9uIC0gc2Vzc2lvbiBt
b3ZlZCBmcm9tIGluZGV4ICV6dSB0byAwIiwgaW5kZXgpOworfQorICAgIAorUGxhdGZvcm1NZWRp
YVNlc3Npb24qIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6Y3VycmVudFNlc3Npb24oKQor
eworICAgIGlmICghbV9zZXNzaW9ucy5zaXplKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
CisgICAgcmV0dXJuIG1fc2Vzc2lvbnNbMF07Cit9CisgICAgCitib29sIFBsYXRmb3JtTWVkaWFT
ZXNzaW9uTWFuYWdlcjo6c2Vzc2lvblJlc3RyaWN0c0lubGluZVZpZGVvUGxheWJhY2soY29uc3Qg
UGxhdGZvcm1NZWRpYVNlc3Npb24mIHNlc3Npb24pIGNvbnN0Cit7CisgICAgUGxhdGZvcm1NZWRp
YVNlc3Npb246Ok1lZGlhVHlwZSBzZXNzaW9uVHlwZSA9IHNlc3Npb24ucHJlc2VudGF0aW9uVHlw
ZSgpOworICAgIGlmIChzZXNzaW9uVHlwZSAhPSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6VmlkZW8p
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBtX3Jlc3RyaWN0aW9uc1tzZXNz
aW9uVHlwZV0gJiBJbmxpbmVWaWRlb1BsYXliYWNrUmVzdHJpY3RlZDsKK30KKworYm9vbCBQbGF0
Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNlc3Npb25DYW5Mb2FkTWVkaWEoY29uc3QgUGxhdGZv
cm1NZWRpYVNlc3Npb24mIHNlc3Npb24pIGNvbnN0Cit7CisgICAgcmV0dXJuIHNlc3Npb24uc3Rh
dGUoKSA9PSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UGxheWluZyB8fCAhc2Vzc2lvbi5pc0hpZGRl
bigpIHx8IHNlc3Npb24uaXNQbGF5aW5nVG9XaXJlbGVzc1BsYXliYWNrVGFyZ2V0KCk7Cit9CisK
K3ZvaWQgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjphcHBsaWNhdGlvbldpbGxFbnRlckJh
Y2tncm91bmQoKSBjb25zdAoreworICAgIExPRyhNZWRpYSwgIlBsYXRmb3JtTWVkaWFTZXNzaW9u
TWFuYWdlcjo6YXBwbGljYXRpb25XaWxsRW50ZXJCYWNrZ3JvdW5kIik7CisgICAgVmVjdG9yPFBs
YXRmb3JtTWVkaWFTZXNzaW9uKj4gc2Vzc2lvbnMgPSBtX3Nlc3Npb25zOworICAgIGZvciAoYXV0
byogc2Vzc2lvbiA6IHNlc3Npb25zKSB7CisgICAgICAgIGlmIChtX3Jlc3RyaWN0aW9uc1tzZXNz
aW9uLT5tZWRpYVR5cGUoKV0gJiBCYWNrZ3JvdW5kUHJvY2Vzc1BsYXliYWNrUmVzdHJpY3RlZCkK
KyAgICAgICAgICAgIHNlc3Npb24tPmJlZ2luSW50ZXJydXB0aW9uKFBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpFbnRlcmluZ0JhY2tncm91bmQpOworICAgIH0KK30KKwordm9pZCBQbGF0Zm9ybU1lZGlh
U2Vzc2lvbk1hbmFnZXI6OmFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZCgpIGNvbnN0Cit7
CisgICAgTE9HKE1lZGlhLCAiUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjphcHBsaWNhdGlv
bldpbGxFbnRlckZvcmVncm91bmQiKTsKKyAgICBWZWN0b3I8UGxhdGZvcm1NZWRpYVNlc3Npb24q
PiBzZXNzaW9ucyA9IG1fc2Vzc2lvbnM7CisgICAgZm9yIChhdXRvKiBzZXNzaW9uIDogc2Vzc2lv
bnMpIHsKKyAgICAgICAgaWYgKG1fcmVzdHJpY3Rpb25zW3Nlc3Npb24tPm1lZGlhVHlwZSgpXSAm
IEJhY2tncm91bmRQcm9jZXNzUGxheWJhY2tSZXN0cmljdGVkKQorICAgICAgICAgICAgc2Vzc2lv
bi0+ZW5kSW50ZXJydXB0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNYXlSZXN1bWVQbGF5aW5n
KTsKKyAgICB9Cit9CisKKyNpZiAhUExBVEZPUk0oQ09DT0EpCit2b2lkIFBsYXRmb3JtTWVkaWFT
ZXNzaW9uTWFuYWdlcjo6dXBkYXRlU2Vzc2lvblN0YXRlKCkKK3sKK30KKyNlbmRpZgorCit2b2lk
IFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6ZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21t
YW5kKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUgY29tbWFu
ZCkKK3sKKyAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbiogYWN0aXZlU2Vzc2lvbiA9IGN1cnJlbnRT
ZXNzaW9uKCk7CisgICAgaWYgKCFhY3RpdmVTZXNzaW9uIHx8ICFhY3RpdmVTZXNzaW9uLT5jYW5S
ZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmRzKCkpCisgICAgICAgIHJldHVybjsKKyAgICBhY3Rp
dmVTZXNzaW9uLT5kaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoY29tbWFuZCk7Cit9CisK
K3ZvaWQgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpzeXN0ZW1XaWxsU2xlZXAoKQorewor
ICAgIGlmIChtX2ludGVycnVwdGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBmb3IgKGF1dG8g
c2Vzc2lvbiA6IG1fc2Vzc2lvbnMpCisgICAgICAgIHNlc3Npb24tPmJlZ2luSW50ZXJydXB0aW9u
KFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTeXN0ZW1TbGVlcCk7Cit9CisKK3ZvaWQgUGxhdGZvcm1N
ZWRpYVNlc3Npb25NYW5hZ2VyOjpzeXN0ZW1EaWRXYWtlKCkKK3sKKyAgICBpZiAobV9pbnRlcnJ1
cHRlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9yIChhdXRvIHNlc3Npb24gOiBtX3Nlc3Np
b25zKQorICAgICAgICBzZXNzaW9uLT5lbmRJbnRlcnJ1cHRpb24oUGxhdGZvcm1NZWRpYVNlc3Np
b246Ok1heVJlc3VtZVBsYXlpbmcpOworfQorCit2b2lkIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFu
YWdlcjo6YXVkaW9PdXRwdXREZXZpY2VDaGFuZ2VkKCkKK3sKKyAgICB1cGRhdGVTZXNzaW9uU3Rh
dGUoKTsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MmQ3NDhhMGJiZjUyYzdiNWE2Zjk2ZDZiZTE2MGVhYmMxMjNkNDZkOAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFu
YWdlci5oCkBAIC0wLDAgKzEsMTMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTUg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFBsYXRm
b3JtTWVkaWFTZXNzaW9uTWFuYWdlcl9oCisjZGVmaW5lIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFu
YWdlcl9oCisKKyNpbmNsdWRlICJBdWRpb0hhcmR3YXJlTGlzdGVuZXIuaCIKKyNpbmNsdWRlICJQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbi5oIgorI2luY2x1ZGUgIlJlbW90ZUNvbW1hbmRMaXN0ZW5lci5o
IgorI2luY2x1ZGUgIlNldHRpbmdzLmgiCisjaW5jbHVkZSAiU3lzdGVtU2xlZXBMaXN0ZW5lci5o
IgorI2luY2x1ZGUgPG1hcD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgSFRNTE1lZGlhRWxlbWVudDsKK2NsYXNzIFBsYXRmb3JtTWVkaWFT
ZXNzaW9uOworY2xhc3MgUmVtb3RlQ29tbWFuZExpc3RlbmVyOworCitjbGFzcyBQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbk1hbmFnZXIgOiBwcml2YXRlIFJlbW90ZUNvbW1hbmRMaXN0ZW5lckNsaWVudCwg
cHJpdmF0ZSBTeXN0ZW1TbGVlcExpc3RlbmVyOjpDbGllbnQsIHByaXZhdGUgQXVkaW9IYXJkd2Fy
ZUxpc3RlbmVyOjpDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGlj
OgorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIm
IHNoYXJlZE1hbmFnZXIoKTsKKyAgICB2aXJ0dWFsIH5QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFn
ZXIoKSB7IH0KKworICAgIGJvb2wgaGFzKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUp
IGNvbnN0OworICAgIGludCBjb3VudChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlKSBj
b25zdDsKKyAgICBib29sIGFjdGl2ZUF1ZGlvU2Vzc2lvblJlcXVpcmVkKCkgY29uc3Q7CisKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGJlZ2luSW50ZXJydXB0aW9uKFBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpJbnRlcnJ1cHRpb25UeXBlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGVuZEludGVy
cnVwdGlvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6RW5kSW50ZXJydXB0aW9uRmxhZ3MpOworCisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQoKSBj
b25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGxpY2F0aW9uV2lsbEVudGVyQmFja2dy
b3VuZCgpIGNvbnN0OworCisgICAgZW51bSBTZXNzaW9uUmVzdHJpY3Rpb25GbGFncyB7CisgICAg
ICAgIE5vUmVzdHJpY3Rpb25zID0gMCwKKyAgICAgICAgQ29uY3VycmVudFBsYXliYWNrTm90UGVy
bWl0dGVkID0gMSA8PCAwLAorICAgICAgICBJbmxpbmVWaWRlb1BsYXliYWNrUmVzdHJpY3RlZCA9
IDEgPDwgMSwKKyAgICAgICAgTWV0YWRhdGFQcmVsb2FkaW5nTm90UGVybWl0dGVkID0gMSA8PCAy
LAorICAgICAgICBBdXRvUHJlbG9hZGluZ05vdFBlcm1pdHRlZCA9IDEgPDwgMywKKyAgICAgICAg
QmFja2dyb3VuZFByb2Nlc3NQbGF5YmFja1Jlc3RyaWN0ZWQgPSAxIDw8IDQsCisgICAgICAgIEJh
Y2tncm91bmRUYWJQbGF5YmFja1Jlc3RyaWN0ZWQgPSAxIDw8IDUsCisgICAgICAgIEludGVycnVw
dGVkUGxheWJhY2tOb3RQZXJtaXR0ZWQgPSAxIDw8IDYsCisgICAgfTsKKyAgICB0eXBlZGVmIHVu
c2lnbmVkIFNlc3Npb25SZXN0cmljdGlvbnM7CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFk
ZFJlc3RyaWN0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUsIFNlc3Npb25SZXN0
cmljdGlvbnMpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlUmVzdHJpY3Rpb24oUGxh
dGZvcm1NZWRpYVNlc3Npb246Ok1lZGlhVHlwZSwgU2Vzc2lvblJlc3RyaWN0aW9ucyk7CisgICAg
V0VCQ09SRV9FWFBPUlQgU2Vzc2lvblJlc3RyaWN0aW9ucyByZXN0cmljdGlvbnMoUGxhdGZvcm1N
ZWRpYVNlc3Npb246Ok1lZGlhVHlwZSk7CisgICAgdmlydHVhbCB2b2lkIHJlc2V0UmVzdHJpY3Rp
b25zKCk7CisKKyAgICB2aXJ0dWFsIGJvb2wgc2Vzc2lvbldpbGxCZWdpblBsYXliYWNrKFBsYXRm
b3JtTWVkaWFTZXNzaW9uJik7CisgICAgdmlydHVhbCB2b2lkIHNlc3Npb25XaWxsRW5kUGxheWJh
Y2soUGxhdGZvcm1NZWRpYVNlc3Npb24mKTsKKworICAgIGJvb2wgc2Vzc2lvblJlc3RyaWN0c0lu
bGluZVZpZGVvUGxheWJhY2soY29uc3QgUGxhdGZvcm1NZWRpYVNlc3Npb24mKSBjb25zdDsKKwor
ICAgIHZpcnR1YWwgYm9vbCBzZXNzaW9uQ2FuTG9hZE1lZGlhKGNvbnN0IFBsYXRmb3JtTWVkaWFT
ZXNzaW9uJikgY29uc3Q7CisKKyNpZiBQTEFURk9STShJT1MpCisgICAgdmlydHVhbCB2b2lkIGNv
bmZpZ3VyZVdpcmVMZXNzVGFyZ2V0TW9uaXRvcmluZygpIHsgfQorICAgIHZpcnR1YWwgYm9vbCBo
YXNXaXJlbGVzc1RhcmdldHNBdmFpbGFibGUoKSB7IHJldHVybiBmYWxzZTsgfQorI2VuZGlmCisK
KyAgICB2b2lkIHNldEN1cnJlbnRTZXNzaW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uJik7CisgICAg
UGxhdGZvcm1NZWRpYVNlc3Npb24qIGN1cnJlbnRTZXNzaW9uKCk7CisKK3Byb3RlY3RlZDoKKyAg
ICBmcmllbmQgY2xhc3MgUGxhdGZvcm1NZWRpYVNlc3Npb247CisgICAgZXhwbGljaXQgUGxhdGZv
cm1NZWRpYVNlc3Npb25NYW5hZ2VyKCk7CisKKyAgICB2b2lkIGFkZFNlc3Npb24oUGxhdGZvcm1N
ZWRpYVNlc3Npb24mKTsKKyAgICB2b2lkIHJlbW92ZVNlc3Npb24oUGxhdGZvcm1NZWRpYVNlc3Np
b24mKTsKKworICAgIFZlY3RvcjxQbGF0Zm9ybU1lZGlhU2Vzc2lvbio+IHNlc3Npb25zKCkgeyBy
ZXR1cm4gbV9zZXNzaW9uczsgfQorCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBJbnRlcm5h
bHM7CisKKyAgICB2b2lkIHVwZGF0ZVNlc3Npb25TdGF0ZSgpOworCisgICAgLy8gUmVtb3RlQ29t
bWFuZExpc3RlbmVyQ2xpZW50CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGRpZFJl
Y2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29u
dHJvbENvbW1hbmRUeXBlKSBvdmVycmlkZTsKKworICAgIC8vIEF1ZGlvSGFyZHdhcmVMaXN0ZW5l
ckNsaWVudAorICAgIHZpcnR1YWwgdm9pZCBhdWRpb0hhcmR3YXJlRGlkQmVjb21lQWN0aXZlKCkg
b3ZlcnJpZGUgeyB9CisgICAgdmlydHVhbCB2b2lkIGF1ZGlvSGFyZHdhcmVEaWRCZWNvbWVJbmFj
dGl2ZSgpIG92ZXJyaWRlIHsgfQorICAgIHZpcnR1YWwgdm9pZCBhdWRpb091dHB1dERldmljZUNo
YW5nZWQoKSBvdmVycmlkZTsKKworICAgIC8vIFN5c3RlbVNsZWVwTGlzdGVuZXIKKyAgICB2aXJ0
dWFsIHZvaWQgc3lzdGVtV2lsbFNsZWVwKCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHN5
c3RlbURpZFdha2UoKSBvdmVycmlkZTsKKworICAgIFNlc3Npb25SZXN0cmljdGlvbnMgbV9yZXN0
cmljdGlvbnNbUGxhdGZvcm1NZWRpYVNlc3Npb246OldlYkF1ZGlvICsgMV07CisgICAgVmVjdG9y
PFBsYXRmb3JtTWVkaWFTZXNzaW9uKj4gbV9zZXNzaW9uczsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
UmVtb3RlQ29tbWFuZExpc3RlbmVyPiBtX3JlbW90ZUNvbW1hbmRMaXN0ZW5lcjsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8U3lzdGVtU2xlZXBMaXN0ZW5lcj4gbV9zeXN0ZW1TbGVlcExpc3RlbmVyOwor
ICAgIFJlZlB0cjxBdWRpb0hhcmR3YXJlTGlzdGVuZXI+IG1fYXVkaW9IYXJkd2FyZUxpc3RlbmVy
OworCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElP
UykKKyAgICBSZWZQdHI8TWVkaWFQbGF5YmFja1RhcmdldD4gbV9wbGF5YmFja1RhcmdldDsKKyAg
ICBib29sIG1fY2FuUGxheVRvVGFyZ2V0IHsgZmFsc2UgfTsKKyNlbmRpZgorCisgICAgYm9vbCBt
X2ludGVycnVwdGVkIHsgZmFsc2UgfTsKK307CisKK30KKworI2VuZGlmIC8vIFBsYXRmb3JtTWVk
aWFTZXNzaW9uTWFuYWdlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5jcHAKaW5kZXggZGMzYTFiNTRlZDQzYjc0
Mjg5OGU1OTM5YTdhZGNmYzM4ZjRlMTUzYy4uNjgzNDRlMDdkOTk2MjFhN2NjYTVjM2ZhZTg5NWFk
YjI2MGU4ZTFjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFj
L0F1ZGlvRGVzdGluYXRpb25NYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmNwcApAQCAtMzgsNyArMzgsNyBAQAogI2luY2x1
ZGUgIkF1ZGlvU2Vzc2lvbi5oIgogI2luY2x1ZGUgIkZsb2F0Q29udmVyc2lvbi5oIgogI2luY2x1
ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRlICJNZWRpYVNlc3Npb25NYW5hZ2VyLmgiCisjaW5jbHVk
ZSAiUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiVmVjdG9yTWF0aC5o
IgogI2luY2x1ZGUgPENvcmVBdWRpby9BdWRpb0hhcmR3YXJlLmg+CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9NZWRpYVNlc3Npb25NYW5hZ2VyTWFjLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9NZWRpYVNlc3Npb25NYW5hZ2Vy
TWFjLmNwcAppbmRleCBlMjc0NDE4ODA5YjdkNDUxNTJmZmEzYmRhYzA5ZjY0ZTYyOWI0MTdhLi5i
Mzg5ZWVkZmFlZTA2MjQ5NGIzOWQxM2I0YzdkMzhmMTQxZDY0YjY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL01lZGlhU2Vzc2lvbk1hbmFn
ZXJNYWMuY3BwCkBAIC0yNCw3ICsyNCw3IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIk1lZGlhU2Vzc2lvbk1hbmFnZXIuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybU1lZGlh
U2Vzc2lvbk1hbmFnZXIuaCIKIAogI2lmIFVTRShBVURJT19TRVNTSU9OKQogCkBAIC0zNyw5ICsz
Nyw5IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogc3RhdGljIGNvbnN0IHNpemVfdCBrV2Vi
QXVkaW9CdWZmZXJTaXplID0gMTI4Owogc3RhdGljIGNvbnN0IHNpemVfdCBrTG93UG93ZXJWaWRl
b0J1ZmZlclNpemUgPSA0MDk2OwogCi12b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnVwZGF0ZVNl
c3Npb25TdGF0ZSgpCit2b2lkIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6dXBkYXRlU2Vz
c2lvblN0YXRlKCkKIHsKLSAgICBMT0coTWVkaWEsICJNZWRpYVNlc3Npb25NYW5hZ2VyOjp1cGRh
dGVTZXNzaW9uU3RhdGUoKSAtIHR5cGVzOiBWaWRlbyglZCksIEF1ZGlvKCVkKSwgV2ViQXVkaW8o
JWQpIiwgY291bnQoUGxhdGZvcm1NZWRpYVNlc3Npb246OlZpZGVvKSwgY291bnQoUGxhdGZvcm1N
ZWRpYVNlc3Npb246OkF1ZGlvKSwgY291bnQoUGxhdGZvcm1NZWRpYVNlc3Npb246OldlYkF1ZGlv
KSk7CisgICAgTE9HKE1lZGlhLCAiUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjp1cGRhdGVT
ZXNzaW9uU3RhdGUoKSAtIHR5cGVzOiBWaWRlbyglZCksIEF1ZGlvKCVkKSwgV2ViQXVkaW8oJWQp
IiwgY291bnQoUGxhdGZvcm1NZWRpYVNlc3Npb246OlZpZGVvKSwgY291bnQoUGxhdGZvcm1NZWRp
YVNlc3Npb246OkF1ZGlvKSwgY291bnQoUGxhdGZvcm1NZWRpYVNlc3Npb246OldlYkF1ZGlvKSk7
CiAKICAgICBpZiAoaGFzKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpXZWJBdWRpbykpCiAgICAgICAg
IEF1ZGlvU2Vzc2lvbjo6c2hhcmVkU2Vzc2lvbigpLnNldFByZWZlcnJlZEJ1ZmZlclNpemUoa1dl
YkF1ZGlvQnVmZmVyU2l6ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXgg
ZTU3ZGMxOWMyZjlhZWQ1MjU2MTI3ODJkM2YwMjg4ZGMxNDA3YjdmNC4uMmQyOWRiNzViNzhkNzU4
ZGM0MDAwNjRjMjA5OTJlMzk5OThkNzA5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmNwcApAQCAtNzksNyArNzksNiBAQAogI2luY2x1ZGUgIk1haW5GcmFtZS5oIgogI2luY2x1ZGUg
Ik1hbGxvY1N0YXRpc3RpY3MuaCIKICNpbmNsdWRlICJNZWRpYVBsYXllci5oIgotI2luY2x1ZGUg
Ik1lZGlhU2Vzc2lvbk1hbmFnZXIuaCIKICNpbmNsdWRlICJNZW1vcnlDYWNoZS5oIgogI2luY2x1
ZGUgIk1lbW9yeUluZm8uaCIKICNpbmNsdWRlICJNaWNyb1Rhc2suaCIKQEAgLTg4LDYgKzg3LDcg
QEAKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFnZUNhY2hlLmgiCiAjaW5jbHVkZSAi
UGFnZU92ZXJsYXkuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaCIK
ICNpbmNsdWRlICJQcmludENvbnRleHQuaCIKICNpbmNsdWRlICJQc2V1ZG9FbGVtZW50LmgiCiAj
aW5jbHVkZSAiUmFuZ2UuaCIKQEAgLTMyMiw3ICszMjIsNyBAQCB2b2lkIEludGVybmFsczo6cmVz
ZXRUb0NvbnNpc3RlbnRTdGF0ZShQYWdlKiBwYWdlKQogICAgIHBhZ2UtPm1haW5GcmFtZSgpLmxv
YWRlcigpLmNsZWFyVGVzdGluZ092ZXJyaWRlcygpOwogICAgIEFwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlOjpzaW5nbGV0b24oKS5zZXREZWZhdWx0T3JpZ2luUXVvdGEoQXBwbGljYXRpb25DYWNoZVN0
b3JhZ2U6Om5vUXVvdGEoKSk7CiAjaWYgRU5BQkxFKFZJREVPKQotICAgIE1lZGlhU2Vzc2lvbk1h
bmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5yZXNldFJlc3RyaWN0aW9ucygpOworICAgIFBsYXRmb3Jt
TWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLnJlc2V0UmVzdHJpY3Rpb25zKCk7
CiAjZW5kaWYKICNpZiBIQVZFKEFDQ0VTU0lCSUxJVFkpCiAgICAgQVhPYmplY3RDYWNoZTo6c2V0
RW5oYW5jZWRVc2VySW50ZXJmYWNlQWNjZXNzaWJpbGl0eShmYWxzZSk7CkBAIC0yNTkxLDcgKzI1
OTEsNyBAQCBWZWN0b3I8U3RyaW5nPiBJbnRlcm5hbHM6OmJ1ZmZlcmVkU2FtcGxlc0ZvclRyYWNr
SUQoU291cmNlQnVmZmVyKiBidWZmZXIsIGNvbnN0CiAjaWYgRU5BQkxFKFZJREVPKQogdm9pZCBJ
bnRlcm5hbHM6OmJlZ2luTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uKCkKIHsKLSAgICBNZWRpYVNl
c3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuYmVnaW5JbnRlcnJ1cHRpb24oUGxhdGZvcm1N
ZWRpYVNlc3Npb246OlN5c3RlbUludGVycnVwdGlvbik7CisgICAgUGxhdGZvcm1NZWRpYVNlc3Np
b25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuYmVnaW5JbnRlcnJ1cHRpb24oUGxhdGZvcm1NZWRp
YVNlc3Npb246OlN5c3RlbUludGVycnVwdGlvbik7CiB9CiAKIHZvaWQgSW50ZXJuYWxzOjplbmRN
ZWRpYVNlc3Npb25JbnRlcnJ1cHRpb24oY29uc3QgU3RyaW5nJiBmbGFnc1N0cmluZykKQEAgLTI2
MDEsMTcgKzI2MDEsMTcgQEAgdm9pZCBJbnRlcm5hbHM6OmVuZE1lZGlhU2Vzc2lvbkludGVycnVw
dGlvbihjb25zdCBTdHJpbmcmIGZsYWdzU3RyaW5nKQogICAgIGlmIChlcXVhbElnbm9yaW5nQ2Fz
ZShmbGFnc1N0cmluZywgIk1heVJlc3VtZVBsYXlpbmciKSkKICAgICAgICAgZmxhZ3MgPSBQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6TWF5UmVzdW1lUGxheWluZzsKICAgICAKLSAgICBNZWRpYVNlc3Np
b25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuZW5kSW50ZXJydXB0aW9uKGZsYWdzKTsKKyAgICBQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5lbmRJbnRlcnJ1cHRp
b24oZmxhZ3MpOwogfQogCiB2b2lkIEludGVybmFsczo6YXBwbGljYXRpb25XaWxsRW50ZXJGb3Jl
Z3JvdW5kKCkgY29uc3QKIHsKLSAgICBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2Vy
KCkuYXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKCk7CisgICAgUGxhdGZvcm1NZWRpYVNl
c3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuYXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3Jv
dW5kKCk7CiB9CiAKIHZvaWQgSW50ZXJuYWxzOjphcHBsaWNhdGlvbldpbGxFbnRlckJhY2tncm91
bmQoKSBjb25zdAogewotICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5h
cHBsaWNhdGlvbldpbGxFbnRlckJhY2tncm91bmQoKTsKKyAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lv
bk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5hcHBsaWNhdGlvbldpbGxFbnRlckJhY2tncm91bmQo
KTsKIH0KIAogdm9pZCBJbnRlcm5hbHM6OnNldE1lZGlhU2Vzc2lvblJlc3RyaWN0aW9ucyhjb25z
dCBTdHJpbmcmIG1lZGlhVHlwZVN0cmluZywgY29uc3QgU3RyaW5nJiByZXN0cmljdGlvbnNTdHJp
bmcsIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtMjYyOCwzMCArMjYyOCwzMCBAQCB2b2lkIEludGVy
bmFsczo6c2V0TWVkaWFTZXNzaW9uUmVzdHJpY3Rpb25zKGNvbnN0IFN0cmluZyYgbWVkaWFUeXBl
U3RyaW5nLCBjb25zdAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgTWVkaWFTZXNzaW9u
TWFuYWdlcjo6U2Vzc2lvblJlc3RyaWN0aW9ucyByZXN0cmljdGlvbnMgPSBNZWRpYVNlc3Npb25N
YW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkucmVzdHJpY3Rpb25zKG1lZGlhVHlwZSk7Ci0gICAgTWVk
aWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLnJlbW92ZVJlc3RyaWN0aW9uKG1lZGlh
VHlwZSwgcmVzdHJpY3Rpb25zKTsKKyAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OlNl
c3Npb25SZXN0cmljdGlvbnMgcmVzdHJpY3Rpb25zID0gUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5h
Z2VyOjpzaGFyZWRNYW5hZ2VyKCkucmVzdHJpY3Rpb25zKG1lZGlhVHlwZSk7CisgICAgUGxhdGZv
cm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkucmVtb3ZlUmVzdHJpY3Rpb24o
bWVkaWFUeXBlLCByZXN0cmljdGlvbnMpOwogCi0gICAgcmVzdHJpY3Rpb25zID0gTWVkaWFTZXNz
aW9uTWFuYWdlcjo6Tm9SZXN0cmljdGlvbnM7CisgICAgcmVzdHJpY3Rpb25zID0gUGxhdGZvcm1N
ZWRpYVNlc3Npb25NYW5hZ2VyOjpOb1Jlc3RyaWN0aW9uczsKIAogICAgIFZlY3RvcjxTdHJpbmc+
IHJlc3RyaWN0aW9uc0FycmF5OwogICAgIHJlc3RyaWN0aW9uc1N0cmluZy5zcGxpdCgnLCcsIGZh
bHNlLCByZXN0cmljdGlvbnNBcnJheSk7CiAgICAgZm9yIChhdXRvJiByZXN0cmljdGlvblN0cmlu
ZyA6IHJlc3RyaWN0aW9uc0FycmF5KSB7CiAgICAgICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShy
ZXN0cmljdGlvblN0cmluZywgIkNvbmN1cnJlbnRQbGF5YmFja05vdFBlcm1pdHRlZCIpKQotICAg
ICAgICAgICAgcmVzdHJpY3Rpb25zIHw9IE1lZGlhU2Vzc2lvbk1hbmFnZXI6OkNvbmN1cnJlbnRQ
bGF5YmFja05vdFBlcm1pdHRlZDsKKyAgICAgICAgICAgIHJlc3RyaWN0aW9ucyB8PSBQbGF0Zm9y
bU1lZGlhU2Vzc2lvbk1hbmFnZXI6OkNvbmN1cnJlbnRQbGF5YmFja05vdFBlcm1pdHRlZDsKICAg
ICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHJlc3RyaWN0aW9uU3RyaW5nLCAiSW5saW5lVmlk
ZW9QbGF5YmFja1Jlc3RyaWN0ZWQiKSkKLSAgICAgICAgICAgIHJlc3RyaWN0aW9ucyB8PSBNZWRp
YVNlc3Npb25NYW5hZ2VyOjpJbmxpbmVWaWRlb1BsYXliYWNrUmVzdHJpY3RlZDsKKyAgICAgICAg
ICAgIHJlc3RyaWN0aW9ucyB8PSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OklubGluZVZp
ZGVvUGxheWJhY2tSZXN0cmljdGVkOwogICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UocmVz
dHJpY3Rpb25TdHJpbmcsICJNZXRhZGF0YVByZWxvYWRpbmdOb3RQZXJtaXR0ZWQiKSkKLSAgICAg
ICAgICAgIHJlc3RyaWN0aW9ucyB8PSBNZWRpYVNlc3Npb25NYW5hZ2VyOjpNZXRhZGF0YVByZWxv
YWRpbmdOb3RQZXJtaXR0ZWQ7CisgICAgICAgICAgICByZXN0cmljdGlvbnMgfD0gUGxhdGZvcm1N
ZWRpYVNlc3Npb25NYW5hZ2VyOjpNZXRhZGF0YVByZWxvYWRpbmdOb3RQZXJtaXR0ZWQ7CiAgICAg
ICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShyZXN0cmljdGlvblN0cmluZywgIkF1dG9QcmVsb2Fk
aW5nTm90UGVybWl0dGVkIikpCi0gICAgICAgICAgICByZXN0cmljdGlvbnMgfD0gTWVkaWFTZXNz
aW9uTWFuYWdlcjo6QXV0b1ByZWxvYWRpbmdOb3RQZXJtaXR0ZWQ7CisgICAgICAgICAgICByZXN0
cmljdGlvbnMgfD0gUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpBdXRvUHJlbG9hZGluZ05v
dFBlcm1pdHRlZDsKICAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHJlc3RyaWN0aW9uU3Ry
aW5nLCAiQmFja2dyb3VuZFByb2Nlc3NQbGF5YmFja1Jlc3RyaWN0ZWQiKSkKLSAgICAgICAgICAg
IHJlc3RyaWN0aW9ucyB8PSBNZWRpYVNlc3Npb25NYW5hZ2VyOjpCYWNrZ3JvdW5kUHJvY2Vzc1Bs
YXliYWNrUmVzdHJpY3RlZDsKKyAgICAgICAgICAgIHJlc3RyaWN0aW9ucyB8PSBQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbk1hbmFnZXI6OkJhY2tncm91bmRQcm9jZXNzUGxheWJhY2tSZXN0cmljdGVkOwog
ICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UocmVzdHJpY3Rpb25TdHJpbmcsICJCYWNrZ3Jv
dW5kVGFiUGxheWJhY2tSZXN0cmljdGVkIikpCi0gICAgICAgICAgICByZXN0cmljdGlvbnMgfD0g
TWVkaWFTZXNzaW9uTWFuYWdlcjo6QmFja2dyb3VuZFRhYlBsYXliYWNrUmVzdHJpY3RlZDsKKyAg
ICAgICAgICAgIHJlc3RyaWN0aW9ucyB8PSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OkJh
Y2tncm91bmRUYWJQbGF5YmFja1Jlc3RyaWN0ZWQ7CiAgICAgICAgIGlmIChlcXVhbElnbm9yaW5n
Q2FzZShyZXN0cmljdGlvblN0cmluZywgIkludGVycnVwdGVkUGxheWJhY2tOb3RQZXJtaXR0ZWQi
KSkKLSAgICAgICAgICAgIHJlc3RyaWN0aW9ucyB8PSBNZWRpYVNlc3Npb25NYW5hZ2VyOjpJbnRl
cnJ1cHRlZFBsYXliYWNrTm90UGVybWl0dGVkOworICAgICAgICAgICAgcmVzdHJpY3Rpb25zIHw9
IFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6SW50ZXJydXB0ZWRQbGF5YmFja05vdFBlcm1p
dHRlZDsKICAgICB9Ci0gICAgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLmFk
ZFJlc3RyaWN0aW9uKG1lZGlhVHlwZSwgcmVzdHJpY3Rpb25zKTsKKyAgICBQbGF0Zm9ybU1lZGlh
U2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5hZGRSZXN0cmljdGlvbihtZWRpYVR5cGUs
IHJlc3RyaWN0aW9ucyk7CiB9CiAKIHZvaWQgSW50ZXJuYWxzOjpzZXRNZWRpYUVsZW1lbnRSZXN0
cmljdGlvbnMoSFRNTE1lZGlhRWxlbWVudCogZWxlbWVudCwgY29uc3QgU3RyaW5nJiByZXN0cmlj
dGlvbnNTdHJpbmcsIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtMjcxOCw3ICsyNzE4LDcgQEAgdm9p
ZCBJbnRlcm5hbHM6OnBvc3RSZW1vdGVDb250cm9sQ29tbWFuZChjb25zdCBTdHJpbmcmIGNvbW1h
bmRTdHJpbmcsIEV4Y2VwdGlvbkMKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBN
ZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuZGlkUmVjZWl2ZVJlbW90ZUNvbnRy
b2xDb21tYW5kKGNvbW1hbmQpOworICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hh
cmVkTWFuYWdlcigpLmRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChjb21tYW5kKTsKIH0K
IAogYm9vbCBJbnRlcm5hbHM6OmVsZW1lbnRJc0Jsb2NraW5nRGlzcGxheVNsZWVwKEVsZW1lbnQq
IGVsZW1lbnQpIGNvbnN0CkBAIC0yNzU5LDE0ICsyNzU5LDE0IEBAIHZvaWQgSW50ZXJuYWxzOjpz
ZXRBdWRpb0NvbnRleHRSZXN0cmljdGlvbnMoQXVkaW9Db250ZXh0KiBjb250ZXh0LCBjb25zdCBT
dHJpbmcKIHZvaWQgSW50ZXJuYWxzOjpzaW11bGF0ZVN5c3RlbVNsZWVwKCkgY29uc3QKIHsKICNp
ZiBFTkFCTEUoVklERU8pCi0gICAgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigp
LnN5c3RlbVdpbGxTbGVlcCgpOworICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hh
cmVkTWFuYWdlcigpLnN5c3RlbVdpbGxTbGVlcCgpOwogI2VuZGlmCiB9CiAKIHZvaWQgSW50ZXJu
YWxzOjpzaW11bGF0ZVN5c3RlbVdha2UoKSBjb25zdAogewogI2lmIEVOQUJMRShWSURFTykKLSAg
ICBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuc3lzdGVtRGlkV2FrZSgpOwor
ICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLnN5c3RlbURp
ZFdha2UoKTsKICNlbmRpZgogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>254295</attachid>
            <date>2015-06-04 13:42:58 -0700</date>
            <delta_ts>2015-06-04 13:54:45 -0700</delta_ts>
            <desc>Patch (more iOS build fixes)</desc>
            <filename>bug-145648-20150604134237.patch</filename>
            <type>text/plain</type>
            <size>66155</size>
            <attacher name="Matt Rajca">mrajca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg1MjAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjljYzA4MmY3M2IyYWM0
ZjRkMzQ5NWQxZDE4NmU2NmFhOTg0ZWJmZS4uMGNkNTQ0ZjY4YzRjMjJjZDIxMjI0MmRjZjA2Nzc5
YzY1ZWJkZTJiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDE1LTA2LTA0ICBNYXR0
IFJhamNhICA8bXJhamNhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgTWVkaWFTZXNzaW9u
TWFuYWdlciB0byBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIgZm9yIGNvbnNpc3RlbmN5IHdp
dGggUGxhdGZvcm1NZWRpYVNlc3Npb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNDU2NDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2o6CisgICAg
ICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAq
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBodG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAqIGh0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVsZW1lbnRTZXNzaW9uOjplZmZlY3RpdmVQcmVsb2Fk
Rm9yRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVsZW1lbnRTZXNzaW9uOjpyZXF1
aXJlc0Z1bGxzY3JlZW5Gb3JWaWRlb1BsYXliYWNrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRp
by9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6UGxhdGZvcm1NZWRpYVNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6UGxh
dGZvcm1NZWRpYVNlc3Npb246On5QbGF0Zm9ybU1lZGlhU2Vzc2lvbik6CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Y2xpZW50V2lsbEJlZ2luUGxheWJhY2spOgorICAg
ICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb246OmNsaWVudFdpbGxQYXVzZVBsYXli
YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpjbGllbnREYXRh
QnVmZmVyaW5nVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vz
c2lvbjo6dXBkYXRlQ2xpZW50RGF0YUJ1ZmZlcmluZyk6CisgICAgICAgICogcGxhdGZvcm0vYXVk
aW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwLgorICAgICAgICAo
V2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6UGxhdGZvcm1NZWRp
YVNlc3Npb25NYW5hZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9u
TWFuYWdlcjo6cmVzZXRSZXN0cmljdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1N
ZWRpYVNlc3Npb25NYW5hZ2VyOjpoYXMpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRp
YVNlc3Npb25NYW5hZ2VyOjphY3RpdmVBdWRpb1Nlc3Npb25SZXF1aXJlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNvdW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6YmVnaW5JbnRlcnJ1cHRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjplbmRJbnRlcnJ1
cHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjph
ZGRTZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdl
cjo6cmVtb3ZlU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lv
bk1hbmFnZXI6OmFkZFJlc3RyaWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVk
aWFTZXNzaW9uTWFuYWdlcjo6cmVtb3ZlUmVzdHJpY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpyZXN0cmljdGlvbnMpOgorICAgICAgICAoV2Vi
Q29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpzZXNzaW9uV2lsbEJlZ2luUGxheWJh
Y2spOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpzZXNz
aW9uV2lsbEVuZFBsYXliYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNz
aW9uTWFuYWdlcjo6c2V0Q3VycmVudFNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpjdXJyZW50U2Vzc2lvbik6CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNlc3Npb25SZXN0cmljdHNJbmxpbmVWaWRl
b1BsYXliYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdl
cjo6c2Vzc2lvbkNhbkxvYWRNZWRpYSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlh
U2Vzc2lvbk1hbmFnZXI6OmFwcGxpY2F0aW9uV2lsbEVudGVyQmFja2dyb3VuZCk6CisgICAgICAg
IChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OmFwcGxpY2F0aW9uV2lsbEVu
dGVyRm9yZWdyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1h
bmFnZXI6OnVwZGF0ZVNlc3Npb25TdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbk1hbmFnZXI6OmRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZCk6CisgICAg
ICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnN5c3RlbVdpbGxTbGVl
cCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnN5c3Rl
bURpZFdha2UpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2Vy
OjphdWRpb091dHB1dERldmljZUNoYW5nZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1Bs
YXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uTWFuYWdlci5oLgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjp+UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2Vy
KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6Y29uZmln
dXJlV2lyZUxlc3NUYXJnZXRNb25pdG9yaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
TWVkaWFTZXNzaW9uTWFuYWdlcjo6aGFzV2lyZWxlc3NUYXJnZXRzQXZhaWxhYmxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2Vzc2lvbnMpOgorICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9hdWRpby9tYWMvTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5jcHA6CisgICAg
ICAgIChQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnVwZGF0ZVNlc3Npb25TdGF0ZSk6Cisg
ICAgICAgIChNZWRpYVNlc3Npb25NYW5hZ2VyOjp1cGRhdGVTZXNzaW9uU3RhdGUpOiBEZWxldGVk
LgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKwogMjAxNS0wNi0wNCAgTXlsZXMg
Qy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gQ2xl
YW4gdXAgbV9mb250IGluc2lkZSBGb250UGxhdGZvcm1EYXRhCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cmlu
ZGV4IGUzYThkOGQ1Zjk5ZTNjM2I3YzZjOTc2ZGU2M2VmYTQyMWFmOTUxNWIuLmE0NTg1MzdhNzBi
NGY0ZjgxOWUxYzA1OTUxN2MxMjA1M2E2YTEyMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0y
MTExLDEwICsyMTExLDEwIEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9hdWRp
by9IUlRGRWxldmF0aW9uLmNwcAogICAgIHBsYXRmb3JtL2F1ZGlvL0hSVEZLZXJuZWwuY3BwCiAg
ICAgcGxhdGZvcm0vYXVkaW8vSFJURlBhbm5lci5jcHAKLSAgICBwbGF0Zm9ybS9hdWRpby9NZWRp
YVNlc3Npb25NYW5hZ2VyLmNwcAogICAgIHBsYXRmb3JtL2F1ZGlvL011bHRpQ2hhbm5lbFJlc2Ft
cGxlci5jcHAKICAgICBwbGF0Zm9ybS9hdWRpby9QYW5uZXIuY3BwCiAgICAgcGxhdGZvcm0vYXVk
aW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uY3BwCisgICAgcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1N
ZWRpYVNlc3Npb25NYW5hZ2VyLmNwcAogICAgIHBsYXRmb3JtL2F1ZGlvL1JldmVyYi5jcHAKICAg
ICBwbGF0Zm9ybS9hdWRpby9SZXZlcmJBY2N1bXVsYXRpb25CdWZmZXIuY3BwCiAgICAgcGxhdGZv
cm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
dmN4cHJvai9XZWJDb3JlLnZjeHByb2oKaW5kZXggNDZmZjMyZGU2OWUyZDdmMTNmMTY4ZmVkZjQw
NWJkZjBhMTc4MTZlZS4uMmNmZTUzZWMyOGIxZTM5MWQ4NjlhNjE0OTExYzIwYjgzNTFiNGNhNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJv
agorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCkBA
IC03Mzk2LDcgKzczOTYsNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1c
Z3JhcGhpY3NcSVNPVlRUQ3VlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBs
YXRmb3JtXGF1ZGlvXEF1ZGlvU2Vzc2lvbi5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxwbGF0Zm9ybVxhdWRpb1xQbGF0Zm9ybU1lZGlhU2Vzc2lvbi5jcHAiIC8+Ci0gICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxhdWRpb1xNZWRpYVNlc3Npb25NYW5hZ2VyLmNw
cCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGF1ZGlvXFBsYXRmb3Jt
TWVkaWFTZXNzaW9uTWFuYWdlci5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxw
bGF0Zm9ybVxncmFwaGljc1xBTkdMRVdlYktpdEJyaWRnZS5jcHAiIC8+CiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xhdmZvdW5kYXRpb25cY2ZcSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUFWQ0YuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxh
dGZvcm1cZ3JhcGhpY3NcYXZmb3VuZGF0aW9uXGNmXEluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdh
Y3lBVkNGLmNwcCIgLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJv
ai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJv
ai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwppbmRleCBkMmM2ZDFiMTg2OGY5ZDA0NGZmN2ZiMTkw
NDM2MTJhNGY1ZThhZTgzLi5iYmRhZTYwMzQ1YTc2M2I2OWQyZmFlZWE3ZmE4OTE1M2NjZDUxZTY1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hw
cm9qLmZpbHRlcnMKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUu
dmN4cHJvai5maWx0ZXJzCkBAIC03MDU0LDcgKzcwNTQsNyBAQAogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5ccGxhdGZvcm1cYXVkaW9cUGxhdGZvcm1NZWRpYVNlc3Npb24uY3BwIj4KICAgICAg
IDxGaWx0ZXI+cGxhdGZvcm1cYXVkaW88L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KLSAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGF1ZGlvXE1lZGlhU2Vzc2lvbk1hbmFnZXIu
Y3BwIj4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGF1ZGlvXFBsYXRmb3Jt
TWVkaWFTZXNzaW9uTWFuYWdlci5jcHAiPgogICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxhdWRpbzwv
RmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9k
dWxlc1xnYW1lcGFkXE5hdmlnYXRvckdhbWVwYWQuY3BwIj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkN2Q1Y2NhYzEzMGI4ZGI4
ZDk4MjA4NjJhZDBkZTg4ZjM0NTY3ZjAxLi41ZWE5YWJmNzNjZDdhMmNlOTIzNGQ4MmE2MDBjMTI1
ODZkNThhY2EyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0zNDksNyArMzQ5LDcgQEAKIAkJMDdGMEI5N0ExQUM1REIzMzAwRTUz
NUQ5IC8qIEFWS2l0U1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwN0YwQjk3OTFBQzVEQjMzMDBFNTM1RDkgLyogQVZLaXRTUEkuaCAqLzsgfTsKIAkJ
MDdGMEI5N0MxQUM1REI0NjAwRTUzNUQ5IC8qIEFWRm91bmRhdGlvblNQSS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdGMEI5N0IxQUM1REI0NjAwRTUz
NUQ5IC8qIEFWRm91bmRhdGlvblNQSS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTA3Rjg3Njg0MUFENTgwRjkwMDkwNTg0OSAvKiBNZWRpYVBsYXli
YWNrVGFyZ2V0Q29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMDdGODc2ODMxQUQ0QTk0NTAwOTA1ODQ5IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
LQkJMDdGOTQ0MTYxODY0RDA0NjAwNUQzMUNCIC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQUU4QzA4MTc0NkI5
NTcwMDUzMkQ3OCAvKiBNZWRpYVNlc3Npb25NYW5hZ2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMDdGOTQ0MTYxODY0RDA0NjAwNUQzMUNCIC8q
IFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBRThDMDgxNzQ2Qjk1NzAwNTMyRDc4IC8qIFBsYXRmb3Jt
TWVkaWFTZXNzaW9uTWFuYWdlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTA3RkJERTJDMThGRUQxNzgwMDFBN0NGRiAvKiBKU0RhdGFDdWVDdXN0
b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdG
QkRFMkIxOEZFRDE3ODAwMUE3Q0ZGIC8qIEpTRGF0YUN1ZUN1c3RvbS5jcHAgKi87IH07CiAJCTA3
RkU5OURDMTg4MDdBN0QwMDI1NjY0OCAvKiBNZWRpYUVsZW1lbnRTZXNzaW9uLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3RkU5OURBMTg4MDdBN0Qw
MDI1NjY0OCAvKiBNZWRpYUVsZW1lbnRTZXNzaW9uLmNwcCAqLzsgfTsKIAkJMDdGRTk5REQxODgw
N0E3RDAwMjU2NjQ4IC8qIE1lZGlhRWxlbWVudFNlc3Npb24uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3RkU5OURCMTg4MDdBN0QwMDI1NjY0OCAvKiBN
ZWRpYUVsZW1lbnRTZXNzaW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTU4MDYsNyArNTgwNiw3IEBACiAJCUNEQUI2RDJFMTdDODE0RUUwMEM2
MEIzNCAvKiBKU01lZGlhQ29udHJvbHNIb3N0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDREFCNkQyQzE3QzgxNEVFMDBDNjBCMzQgLyogSlNNZWRpYUNv
bnRyb2xzSG9zdC5oICovOyB9OwogCQlDREFCNkQzMTE3QzkyNTk1MDBDNjBCMzQgLyogVXNlckFn
ZW50U2NyaXB0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0RBQjZEMkYxN0M5MjU5NTAwQzYwQjM0IC8qIFVzZXJBZ2VudFNjcmlwdHMuaCAqLzsgfTsK
IAkJQ0RBQjZEMzIxN0M5MjU5NTAwQzYwQjM0IC8qIFVzZXJBZ2VudFNjcmlwdHNEYXRhLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQUI2RDMwMTdD
OTI1OTUwMEM2MEIzNCAvKiBVc2VyQWdlbnRTY3JpcHRzRGF0YS5jcHAgKi87IH07Ci0JCUNEQUU4
QzA5MTc0NkI5NTcwMDUzMkQ3OCAvKiBNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQUU4QzA3MTc0NkI5NTcwMDUz
MkQ3OCAvKiBNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcCAqLzsgfTsKKwkJQ0RBRThDMDkxNzQ2Qjk1
NzAwNTMyRDc4IC8qIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFFOEMwNzE3NDZCOTU3MDA1MzJE
NzggLyogUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcCAqLzsgfTsKIAkJQ0RCODU5Rjcx
NjBENDhBNDAwRTVCMDdGIC8qIE1lZGlhS2V5RXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RCODU5RjQxNjBENDg5OTAwRTVCMDdGIC8qIE1l
ZGlhS2V5RXZlbnQuY3BwICovOyB9OwogCQlDREI4NTlGQTE2MEQ0OTQ5MDBFNUIwN0YgLyogSlNN
ZWRpYUtleUV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENEQjg1OUY4MTYwRDQ5M0UwMEU1QjA3RiAvKiBKU01lZGlhS2V5RXZlbnQuY3BwICov
OyB9OwogCQlDREJFQUVBQzE5RDkyQjZDMDBCRUJBODggLyogTWVkaWFTZWxlY3Rpb25Hcm91cEFW
Rk9iakMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
REJFQUVBQTE5RDkyQjZDMDBCRUJBODggLyogTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakMubW0g
Ki87IH07CkBAIC0xMzQxMCw4ICsxMzQxMCw4IEBACiAJCUNEQUI2RDJDMTdDODE0RUUwMEM2MEIz
NCAvKiBKU01lZGlhQ29udHJvbHNIb3N0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTTWVkaWFDb250cm9sc0hvc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
Q0RBQjZEMkYxN0M5MjU5NTAwQzYwQjM0IC8qIFVzZXJBZ2VudFNjcmlwdHMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVXNlckFnZW50U2NyaXB0cy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDREFCNkQzMDE3QzkyNTk1MDBDNjBCMzQgLyogVXNlckFnZW50U2Ny
aXB0c0RhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVXNlckFn
ZW50U2NyaXB0c0RhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDREFFOEMw
NzE3NDZCOTU3MDA1MzJENzggLyogTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQ0RBRThDMDgxNzQ2Qjk1NzAwNTMyRDc4IC8qIE1lZGlh
U2Vzc2lvbk1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFT
ZXNzaW9uTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFFOEMwNzE3
NDZCOTU3MDA1MzJENzggLyogUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUU4QzA4MTc0NkI5NTcwMDUz
MkQ3OCAvKiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUNEQjg1OUYyMTYwRDQ4OTkwMEU1QjA3RiAvKiBNZWRpYUtleUVy
cm9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhS2V5RXJyb3IuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RCODU5RjMxNjBENDg5OTAwRTVCMDdGIC8q
IE1lZGlhS2V5RXJyb3IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE1lZGlhS2V5RXJyb3Iu
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREI4NTlGNDE2MEQ0ODk5MDBFNUIw
N0YgLyogTWVkaWFLZXlFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBNZWRpYUtleUV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIz
NTk0LDE0ICsyMzU5NCwxNCBAQAogCQkJCUZEMzE2MDY5MTJCMDI2RjcwMEMxQTM1OSAvKiBIUlRG
S2VybmVsLmggKi8sCiAJCQkJRkQzMTYwNkExMkIwMjZGNzAwQzFBMzU5IC8qIEhSVEZQYW5uZXIu
Y3BwICovLAogCQkJCUZEMzE2MDZCMTJCMDI2RjcwMEMxQTM1OSAvKiBIUlRGUGFubmVyLmggKi8s
Ci0JCQkJQ0RBRThDMDcxNzQ2Qjk1NzAwNTMyRDc4IC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXIuY3Bw
ICovLAotCQkJCUNEQUU4QzA4MTc0NkI5NTcwMDUzMkQ3OCAvKiBNZWRpYVNlc3Npb25NYW5hZ2Vy
LmggKi8sCiAJCQkJRkRCMTcwMDMxNEEyQkFCMjAwQTJCNUQ5IC8qIE11bHRpQ2hhbm5lbFJlc2Ft
cGxlci5jcHAgKi8sCiAJCQkJRkRCMTcwMDQxNEEyQkFCMjAwQTJCNUQ5IC8qIE11bHRpQ2hhbm5l
bFJlc2FtcGxlci5oICovLAogCQkJCUZEMzE2MDZDMTJCMDI2RjcwMEMxQTM1OSAvKiBQYW5uZXIu
Y3BwICovLAogCQkJCUZEMzE2MDZEMTJCMDI2RjcwMEMxQTM1OSAvKiBQYW5uZXIuaCAqLywKIAkJ
CQkwNzBFMDkxQTE4NzVFRjcxMDAzQTFEM0MgLyogUGxhdGZvcm1NZWRpYVNlc3Npb24uY3BwICov
LAogCQkJCTA3MEUwOTE4MTg3NUVEOTMwMDNBMUQzQyAvKiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbi5o
ICovLAorCQkJCUNEQUU4QzA3MTc0NkI5NTcwMDUzMkQ3OCAvKiBQbGF0Zm9ybU1lZGlhU2Vzc2lv
bk1hbmFnZXIuY3BwICovLAorCQkJCUNEQUU4QzA4MTc0NkI5NTcwMDUzMkQ3OCAvKiBQbGF0Zm9y
bU1lZGlhU2Vzc2lvbk1hbmFnZXIuaCAqLywKIAkJCQlGRDMxNjA2RTEyQjAyNkY3MDBDMUEzNTkg
LyogUmV2ZXJiLmNwcCAqLywKIAkJCQlGRDMxNjA2RjEyQjAyNkY3MDBDMUEzNTkgLyogUmV2ZXJi
LmggKi8sCiAJCQkJRkQzMTYwNzAxMkIwMjZGNzAwQzFBMzU5IC8qIFJldmVyYkFjY3VtdWxhdGlv
bkJ1ZmZlci5jcHAgKi8sCkBAIC0yNTg1MCw3ICsyNTg1MCw2IEBACiAJCQkJQ0VFRkNEN0ExOURC
MzFGNzAwMzg3NkQ3IC8qIE1lZGlhUmVzb3VyY2VMb2FkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUNEQkVBRUFEMTlEOTJCNkMwMEJFQkE4OCAvKiBNZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2JqQy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQzkwMjdGNDIxQjFEMEFEMjAwQkZCRkVGIC8qIE1lZGlhU2Vz
c2lvbi5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMDdGOTQ0MTYxODY0RDA0NjAwNUQzMUNCIC8qIE1l
ZGlhU2Vzc2lvbk1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3NjM4QTk5MTg4NDQ4NzIw
MEUxNUExQiAvKiBNZWRpYVNlc3Npb25NYW5hZ2VySU9TLmggaW4gSGVhZGVycyAqLywKIAkJCQlD
RDNBNDk1RjE3QTlEMDFCMDAyNzRFNDIgLyogTWVkaWFTb3VyY2UuaCBpbiBIZWFkZXJzICovLAog
CQkJCUNENjQxRUIzMTgxOEY1RUQwMEVFNEM0MSAvKiBNZWRpYVNvdXJjZVByaXZhdGUuaCBpbiBI
ZWFkZXJzICovLApAQCAtMjYwNzQsNiArMjYwNzMsNyBAQAogCQkJCUY1NDRGNzg5MTVDRkIyQTgw
MEFGMzNBOCAvKiBQbGF0Zm9ybUxvY2FsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0VFRkNEN0Mx
OURCMzNEQzAwMzg3NkQ3IC8qIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMDcwRTA5MTkxODc1RUVGQzAwM0ExRDNDIC8qIFBsYXRmb3JtTWVkaWFTZXNz
aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQkwN0Y5NDQxNjE4NjREMDQ2MDA1RDMxQ0IgLyogUGxh
dGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzI4NzFDMDBC
MjBERUI3MDA0OTAzNUEgLyogUGxhdGZvcm1NZW51RGVzY3JpcHRpb24uaCBpbiBIZWFkZXJzICov
LAogCQkJCTQxQkY3MDEwMEZFODZGNjEwMDVFOERFQyAvKiBQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hh
bm5lbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM1QzQ3NjkwOUFDNEQ0MzAwQTZBQUI0IC8qIFBs
YXRmb3JtTW91c2VFdmVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yOTQzNiw3ICsyOTQzNiw2IEBA
CiAJCQkJQ0VFRkNENzkxOURCMzFGNzAwMzg3NkQ3IC8qIE1lZGlhUmVzb3VyY2VMb2FkZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RCRUFFQUMxOUQ5MkI2QzAwQkVCQTg4IC8qIE1lZGlhU2Vs
ZWN0aW9uR3JvdXBBVkZPYmpDLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQzkwMjdGNDExQjFEMEFE
MjAwQkZCRkVGIC8qIE1lZGlhU2Vzc2lvbi5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlDREFFOEMw
OTE3NDZCOTU3MDA1MzJENzggLyogTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwNzYzOEE5QTE4ODQ0ODcyMDBFMTVBMUIgLyogTWVkaWFTZXNzaW9uTWFuYWdlcklP
Uy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTA3RURDM0VFMUFBQ0I3NUQwMDk4M0VCNSAvKiBNZWRp
YVNlc3Npb25NYW5hZ2VyTWFjLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEM0E0OTVFMTdBOUQw
MUIwMDI3NEU0MiAvKiBNZWRpYVNvdXJjZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI5NjA3LDYg
KzI5NjA2LDcgQEAKIAkJCQlCQ0FBNDg2RjE0QTA1MjUzMDA4OEZBQzQgLyogUGxhdGZvcm1FdmVu
dEZhY3RvcnlNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlGNTQ0Rjc4ODE1Q0ZCMkE4MDBBRjMz
QTggLyogUGxhdGZvcm1Mb2NhbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDcwRTA5MUIxODc1
RUY3MTAwM0ExRDNDIC8qIFBsYXRmb3JtTWVkaWFTZXNzaW9uLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCUNEQUU4QzA5MTc0NkI5NTcwMDUzMkQ3OCAvKiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFn
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDFCRjcwMEYwRkU4NkY2MTAwNUU4REVDIC8qIFBs
YXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUM1Mjc4QjBD
MTdGMjEyRUEwMDNBMjk5OCAvKiBQbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0gaW4gU291cmNlcyAq
LywKIAkJCQlDNTk4OTAyRTE0RTlCMEY4MDBFOEQxOEIgLyogUGxhdGZvcm1QYXN0ZWJvYXJkTWFj
Lm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cAppbmRleCBjMWRiODhkOTVhN2E0YTdlYjgxZDMzMmNhMjlmNmU5NWU2ZGYwYmVlLi5iYTQxMDll
NGRiMDlmOTdmMDA4MGEyZWE4N2RmM2MxOWY1NTc2NTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTY1LDEwICs2NSwxMCBAQAogI2luY2x1ZGUgIk1lZGlh
UGxheWVyLmgiCiAjaW5jbHVkZSAiTWVkaWFRdWVyeUV2YWx1YXRvci5oIgogI2luY2x1ZGUgIk1l
ZGlhUmVzb3VyY2VMb2FkZXIuaCIKLSNpbmNsdWRlICJNZWRpYVNlc3Npb25NYW5hZ2VyLmgiCiAj
aW5jbHVkZSAiTmV0d29ya2luZ0NvbnRleHQuaCIKICNpbmNsdWRlICJQYWdlR3JvdXAuaCIKICNp
bmNsdWRlICJQYWdlVGhyb3R0bGVyLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1NZWRpYVNlc3Npb25N
YW5hZ2VyLmgiCiAjaW5jbHVkZSAiUHJvZ3Jlc3NUcmFja2VyLmgiCiAjaW5jbHVkZSAiUmVuZGVy
TGF5ZXJDb21wb3NpdG9yLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlkZW8uaCIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uY3BwCmluZGV4IDIyNTU4ZTlmYWM5NzRmNjJl
Yjk5YTQ2NTdhMTNiMjVkMTJiZDc1MDUuLjBkNDNmY2Q4ZmU4MzZmN2M1MDVkYTg5YjUzNDdjZDlk
ZGVmYmZjOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vz
c2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNw
cApAQCAtMzgsOCArMzgsOCBAQAogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhU
TUxWaWRlb0VsZW1lbnQuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCi0jaW5jbHVkZSAiTWVkaWFT
ZXNzaW9uTWFuYWdlci5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbk1hbmFnZXIuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5j
bHVkZSAiU291cmNlQnVmZmVyLmgiCiAKQEAgLTIwMyw3ICsyMDMsNyBAQCBib29sIE1lZGlhRWxl
bWVudFNlc3Npb246Omhhc1dpcmVsZXNzUGxheWJhY2tUYXJnZXRzKGNvbnN0IEhUTUxNZWRpYUVs
ZW1lbnQmKSBjbwogewogI2lmIFBMQVRGT1JNKElPUykKICAgICAvLyBGSVhNRTogY29uc29saWRh
dGUgTWFjIGFuZCBpT1MgaW1wbGVtZW50YXRpb25zCi0gICAgbV9oYXNQbGF5YmFja1RhcmdldHMg
PSBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuaGFzV2lyZWxlc3NUYXJnZXRz
QXZhaWxhYmxlKCk7CisgICAgbV9oYXNQbGF5YmFja1RhcmdldHMgPSBQbGF0Zm9ybU1lZGlhU2Vz
c2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5oYXNXaXJlbGVzc1RhcmdldHNBdmFpbGFibGUo
KTsKICNlbmRpZgogCiAgICAgTE9HKE1lZGlhLCAiTWVkaWFFbGVtZW50U2Vzc2lvbjo6aGFzV2ly
ZWxlc3NQbGF5YmFja1RhcmdldHMgLSByZXR1cm5pbmcgJXMiLCBtX2hhc1BsYXliYWNrVGFyZ2V0
cyA/ICJUUlVFIiA6ICJGQUxTRSIpOwpAQCAtMjY4LDcgKzI2OCw3IEBAIHZvaWQgTWVkaWFFbGVt
ZW50U2Vzc2lvbjo6c2V0SGFzUGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlMaXN0ZW5lcnMoY29u
c3QgSFRNTE1lCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIFVOVVNFRF9QQVJBTShlbGVtZW50KTsK
ICAgICBtX2hhc1BsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5TGlzdGVuZXJzID0gaGFzTGlzdGVu
ZXJzOwotICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5jb25maWd1cmVX
aXJlTGVzc1RhcmdldE1vbml0b3JpbmcoKTsKKyAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFn
ZXI6OnNoYXJlZE1hbmFnZXIoKS5jb25maWd1cmVXaXJlTGVzc1RhcmdldE1vbml0b3JpbmcoKTsK
ICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGhhc0xpc3RlbmVycyk7CiAgICAgZWxlbWVudC5kb2N1
bWVudCgpLnBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50U3RhdGVEaWRDaGFuZ2UoKnRoaXMsIGVs
ZW1lbnQubWVkaWFTdGF0ZSgpKTsKQEAgLTMyOCwxMyArMzI4LDEzIEBAIHZvaWQgTWVkaWFFbGVt
ZW50U2Vzc2lvbjo6bWVkaWFTdGF0ZURpZENoYW5nZShjb25zdCBIVE1MTWVkaWFFbGVtZW50JiBl
bGVtZW50LCBNCiAKIE1lZGlhUGxheWVyOjpQcmVsb2FkIE1lZGlhRWxlbWVudFNlc3Npb246OmVm
ZmVjdGl2ZVByZWxvYWRGb3JFbGVtZW50KGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmIGVsZW1lbnQp
IGNvbnN0CiB7Ci0gICAgTWVkaWFTZXNzaW9uTWFuYWdlcjo6U2Vzc2lvblJlc3RyaWN0aW9ucyBy
ZXN0cmljdGlvbnMgPSBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkucmVzdHJp
Y3Rpb25zKG1lZGlhVHlwZSgpKTsKKyAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OlNl
c3Npb25SZXN0cmljdGlvbnMgcmVzdHJpY3Rpb25zID0gUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5h
Z2VyOjpzaGFyZWRNYW5hZ2VyKCkucmVzdHJpY3Rpb25zKG1lZGlhVHlwZSgpKTsKICAgICBNZWRp
YVBsYXllcjo6UHJlbG9hZCBwcmVsb2FkID0gZWxlbWVudC5wcmVsb2FkVmFsdWUoKTsKIAotICAg
IGlmICgocmVzdHJpY3Rpb25zICYgTWVkaWFTZXNzaW9uTWFuYWdlcjo6TWV0YWRhdGFQcmVsb2Fk
aW5nTm90UGVybWl0dGVkKSA9PSBNZWRpYVNlc3Npb25NYW5hZ2VyOjpNZXRhZGF0YVByZWxvYWRp
bmdOb3RQZXJtaXR0ZWQpCisgICAgaWYgKChyZXN0cmljdGlvbnMgJiBQbGF0Zm9ybU1lZGlhU2Vz
c2lvbk1hbmFnZXI6Ok1ldGFkYXRhUHJlbG9hZGluZ05vdFBlcm1pdHRlZCkgPT0gUGxhdGZvcm1N
ZWRpYVNlc3Npb25NYW5hZ2VyOjpNZXRhZGF0YVByZWxvYWRpbmdOb3RQZXJtaXR0ZWQpCiAgICAg
ICAgIHJldHVybiBNZWRpYVBsYXllcjo6Tm9uZTsKIAotICAgIGlmICgocmVzdHJpY3Rpb25zICYg
TWVkaWFTZXNzaW9uTWFuYWdlcjo6QXV0b1ByZWxvYWRpbmdOb3RQZXJtaXR0ZWQpID09IE1lZGlh
U2Vzc2lvbk1hbmFnZXI6OkF1dG9QcmVsb2FkaW5nTm90UGVybWl0dGVkKSB7CisgICAgaWYgKChy
ZXN0cmljdGlvbnMgJiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OkF1dG9QcmVsb2FkaW5n
Tm90UGVybWl0dGVkKSA9PSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OkF1dG9QcmVsb2Fk
aW5nTm90UGVybWl0dGVkKSB7CiAgICAgICAgIGlmIChwcmVsb2FkID4gTWVkaWFQbGF5ZXI6Ok1l
dGFEYXRhKQogICAgICAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpNZXRhRGF0YTsKICAgICB9
CkBAIC0zNDQsNyArMzQ0LDcgQEAgTWVkaWFQbGF5ZXI6OlByZWxvYWQgTWVkaWFFbGVtZW50U2Vz
c2lvbjo6ZWZmZWN0aXZlUHJlbG9hZEZvckVsZW1lbnQoY29uc3QgSFRNTE0KIAogYm9vbCBNZWRp
YUVsZW1lbnRTZXNzaW9uOjpyZXF1aXJlc0Z1bGxzY3JlZW5Gb3JWaWRlb1BsYXliYWNrKGNvbnN0
IEhUTUxNZWRpYUVsZW1lbnQmIGVsZW1lbnQpIGNvbnN0CiB7Ci0gICAgaWYgKCFNZWRpYVNlc3Np
b25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuc2Vzc2lvblJlc3RyaWN0c0lubGluZVZpZGVvUGxh
eWJhY2soKnRoaXMpKQorICAgIGlmICghUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFy
ZWRNYW5hZ2VyKCkuc2Vzc2lvblJlc3RyaWN0c0lubGluZVZpZGVvUGxheWJhY2soKnRoaXMpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBlbGVtZW50
LmRvY3VtZW50KCkuc2V0dGluZ3MoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL01lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGUxNzcwNTNmZDY2MTAzMjI1YjgxOWJlN2RmZmE0NWY4NWM2ZTRjZTcuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwz
MzQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE1IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIk1lZGlhU2Vzc2lvbk1hbmFnZXIuaCIKLQotI2lmIEVOQUJMRShWSURFTykKLQotI2luY2x1
ZGUgIkF1ZGlvU2Vzc2lvbi5oIgotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRlICJOb3RJ
bXBsZW1lbnRlZC5oIgotI2luY2x1ZGUgIlBsYXRmb3JtTWVkaWFTZXNzaW9uLmgiCi0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotI2lmICFQTEFURk9STShJT1MpCi1NZWRpYVNlc3Npb25NYW5hZ2Vy
JiBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkKLXsKLSAgICBERVBSRUNBVEVE
X0RFRklORV9TVEFUSUNfTE9DQUwoTWVkaWFTZXNzaW9uTWFuYWdlciwgbWFuYWdlciwgKCkpOwot
ICAgIHJldHVybiBtYW5hZ2VyOwotfQotI2VuZGlmCi0KLU1lZGlhU2Vzc2lvbk1hbmFnZXI6Ok1l
ZGlhU2Vzc2lvbk1hbmFnZXIoKQotICAgIDogbV9zeXN0ZW1TbGVlcExpc3RlbmVyKFN5c3RlbVNs
ZWVwTGlzdGVuZXI6OmNyZWF0ZSgqdGhpcykpCi17Ci0gICAgcmVzZXRSZXN0cmljdGlvbnMoKTsK
LX0KLQotdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyOjpyZXNldFJlc3RyaWN0aW9ucygpCi17Ci0g
ICAgbV9yZXN0cmljdGlvbnNbUGxhdGZvcm1NZWRpYVNlc3Npb246OlZpZGVvXSA9IE5vUmVzdHJp
Y3Rpb25zOwotICAgIG1fcmVzdHJpY3Rpb25zW1BsYXRmb3JtTWVkaWFTZXNzaW9uOjpBdWRpb10g
PSBOb1Jlc3RyaWN0aW9uczsKLSAgICBtX3Jlc3RyaWN0aW9uc1tQbGF0Zm9ybU1lZGlhU2Vzc2lv
bjo6V2ViQXVkaW9dID0gTm9SZXN0cmljdGlvbnM7Ci19Ci0KLWJvb2wgTWVkaWFTZXNzaW9uTWFu
YWdlcjo6aGFzKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUgdHlwZSkgY29uc3QKLXsK
LSAgICBBU1NFUlQodHlwZSA+PSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Tm9uZSAmJiB0eXBlIDw9
IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpXZWJBdWRpbyk7Ci0KLSAgICBmb3IgKGF1dG8qIHNlc3Np
b24gOiBtX3Nlc3Npb25zKSB7Ci0gICAgICAgIGlmIChzZXNzaW9uLT5tZWRpYVR5cGUoKSA9PSB0
eXBlKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgcmV0dXJuIGZhbHNl
OwotfQotCi1ib29sIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OmFjdGl2ZUF1ZGlvU2Vzc2lvblJlcXVp
cmVkKCkgY29uc3QKLXsKLSAgICBmb3IgKGF1dG8qIHNlc3Npb24gOiBtX3Nlc3Npb25zKSB7Ci0g
ICAgICAgIGlmIChzZXNzaW9uLT5tZWRpYVR5cGUoKSAhPSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6
Tm9uZSAmJiBzZXNzaW9uLT5zdGF0ZSgpID09IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTdGF0ZTo6
UGxheWluZykKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICAKLSAgICByZXR1
cm4gZmFsc2U7Ci19Ci0KLWludCBNZWRpYVNlc3Npb25NYW5hZ2VyOjpjb3VudChQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6TWVkaWFUeXBlIHR5cGUpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKHR5cGUgPj0g
UGxhdGZvcm1NZWRpYVNlc3Npb246Ok5vbmUgJiYgdHlwZSA8PSBQbGF0Zm9ybU1lZGlhU2Vzc2lv
bjo6V2ViQXVkaW8pOwotCi0gICAgaW50IGNvdW50ID0gMDsKLSAgICBmb3IgKGF1dG8qIHNlc3Np
b24gOiBtX3Nlc3Npb25zKSB7Ci0gICAgICAgIGlmIChzZXNzaW9uLT5tZWRpYVR5cGUoKSA9PSB0
eXBlKQotICAgICAgICAgICAgKytjb3VudDsKLSAgICB9Ci0KLSAgICByZXR1cm4gY291bnQ7Ci19
Ci0KLXZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcjo6YmVnaW5JbnRlcnJ1cHRpb24oUGxhdGZvcm1N
ZWRpYVNlc3Npb246OkludGVycnVwdGlvblR5cGUgdHlwZSkKLXsKLSAgICBMT0coTWVkaWEsICJN
ZWRpYVNlc3Npb25NYW5hZ2VyOjpiZWdpbkludGVycnVwdGlvbiIpOwotCi0gICAgbV9pbnRlcnJ1
cHRlZCA9IHRydWU7Ci0gICAgVmVjdG9yPFBsYXRmb3JtTWVkaWFTZXNzaW9uKj4gc2Vzc2lvbnMg
PSBtX3Nlc3Npb25zOwotICAgIGZvciAoYXV0byogc2Vzc2lvbiA6IHNlc3Npb25zKQotICAgICAg
ICBzZXNzaW9uLT5iZWdpbkludGVycnVwdGlvbih0eXBlKTsKLSAgICB1cGRhdGVTZXNzaW9uU3Rh
dGUoKTsKLX0KLQotdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyOjplbmRJbnRlcnJ1cHRpb24oUGxh
dGZvcm1NZWRpYVNlc3Npb246OkVuZEludGVycnVwdGlvbkZsYWdzIGZsYWdzKQotewotICAgIExP
RyhNZWRpYSwgIk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmVuZEludGVycnVwdGlvbiIpOwotCi0gICAg
bV9pbnRlcnJ1cHRlZCA9IGZhbHNlOwotICAgIFZlY3RvcjxQbGF0Zm9ybU1lZGlhU2Vzc2lvbio+
IHNlc3Npb25zID0gbV9zZXNzaW9uczsKLSAgICBmb3IgKGF1dG8qIHNlc3Npb24gOiBzZXNzaW9u
cykKLSAgICAgICAgc2Vzc2lvbi0+ZW5kSW50ZXJydXB0aW9uKGZsYWdzKTsKLX0KLQotdm9pZCBN
ZWRpYVNlc3Npb25NYW5hZ2VyOjphZGRTZXNzaW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uJiBzZXNz
aW9uKQotewotICAgIExPRyhNZWRpYSwgIk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmFkZFNlc3Npb24g
LSAlcCIsICZzZXNzaW9uKTsKLSAgICAKLSAgICBtX3Nlc3Npb25zLmFwcGVuZCgmc2Vzc2lvbik7
Ci0gICAgaWYgKG1faW50ZXJydXB0ZWQpCi0gICAgICAgIHNlc3Npb24uc2V0U3RhdGUoUGxhdGZv
cm1NZWRpYVNlc3Npb246OkludGVycnVwdGVkKTsKLQotICAgIGlmICghbV9yZW1vdGVDb21tYW5k
TGlzdGVuZXIpCi0gICAgICAgIG1fcmVtb3RlQ29tbWFuZExpc3RlbmVyID0gUmVtb3RlQ29tbWFu
ZExpc3RlbmVyOjpjcmVhdGUoKnRoaXMpOwotCi0gICAgaWYgKCFtX2F1ZGlvSGFyZHdhcmVMaXN0
ZW5lcikKLSAgICAgICAgbV9hdWRpb0hhcmR3YXJlTGlzdGVuZXIgPSBBdWRpb0hhcmR3YXJlTGlz
dGVuZXI6OmNyZWF0ZSgqdGhpcyk7Ci0KLSAgICB1cGRhdGVTZXNzaW9uU3RhdGUoKTsKLX0KLQot
dm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyOjpyZW1vdmVTZXNzaW9uKFBsYXRmb3JtTWVkaWFTZXNz
aW9uJiBzZXNzaW9uKQotewotICAgIExPRyhNZWRpYSwgIk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnJl
bW92ZVNlc3Npb24gLSAlcCIsICZzZXNzaW9uKTsKLSAgICAKLSAgICBzaXplX3QgaW5kZXggPSBt
X3Nlc3Npb25zLmZpbmQoJnNlc3Npb24pOwotICAgIEFTU0VSVChpbmRleCAhPSBub3RGb3VuZCk7
Ci0gICAgaWYgKGluZGV4ID09IG5vdEZvdW5kKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAg
bV9zZXNzaW9ucy5yZW1vdmUoaW5kZXgpOwotCi0gICAgaWYgKG1fc2Vzc2lvbnMuaXNFbXB0eSgp
KSB7Ci0gICAgICAgIG1fcmVtb3RlQ29tbWFuZExpc3RlbmVyID0gbnVsbHB0cjsKLSAgICAgICAg
bV9hdWRpb0hhcmR3YXJlTGlzdGVuZXIgPSBudWxscHRyOwotICAgIH0KLQotICAgIHVwZGF0ZVNl
c3Npb25TdGF0ZSgpOwotfQotCi12b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OmFkZFJlc3RyaWN0
aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUgdHlwZSwgU2Vzc2lvblJlc3RyaWN0
aW9ucyByZXN0cmljdGlvbikKLXsKLSAgICBBU1NFUlQodHlwZSA+IFBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpOb25lICYmIHR5cGUgPD0gUGxhdGZvcm1NZWRpYVNlc3Npb246OldlYkF1ZGlvKTsKLSAg
ICBtX3Jlc3RyaWN0aW9uc1t0eXBlXSB8PSByZXN0cmljdGlvbjsKLX0KLQotdm9pZCBNZWRpYVNl
c3Npb25NYW5hZ2VyOjpyZW1vdmVSZXN0cmljdGlvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWVk
aWFUeXBlIHR5cGUsIFNlc3Npb25SZXN0cmljdGlvbnMgcmVzdHJpY3Rpb24pCi17Ci0gICAgQVNT
RVJUKHR5cGUgPiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Tm9uZSAmJiB0eXBlIDw9IFBsYXRmb3Jt
TWVkaWFTZXNzaW9uOjpXZWJBdWRpbyk7Ci0gICAgbV9yZXN0cmljdGlvbnNbdHlwZV0gJj0gfnJl
c3RyaWN0aW9uOwotfQotCi1NZWRpYVNlc3Npb25NYW5hZ2VyOjpTZXNzaW9uUmVzdHJpY3Rpb25z
IE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnJlc3RyaWN0aW9ucyhQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6
TWVkaWFUeXBlIHR5cGUpCi17Ci0gICAgQVNTRVJUKHR5cGUgPiBQbGF0Zm9ybU1lZGlhU2Vzc2lv
bjo6Tm9uZSAmJiB0eXBlIDw9IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpXZWJBdWRpbyk7Ci0gICAg
cmV0dXJuIG1fcmVzdHJpY3Rpb25zW3R5cGVdOwotfQotCi1ib29sIE1lZGlhU2Vzc2lvbk1hbmFn
ZXI6OnNlc3Npb25XaWxsQmVnaW5QbGF5YmFjayhQbGF0Zm9ybU1lZGlhU2Vzc2lvbiYgc2Vzc2lv
bikKLXsKLSAgICBMT0coTWVkaWEsICJNZWRpYVNlc3Npb25NYW5hZ2VyOjpzZXNzaW9uV2lsbEJl
Z2luUGxheWJhY2sgLSAlcCIsICZzZXNzaW9uKTsKLSAgICAKLSAgICBzZXRDdXJyZW50U2Vzc2lv
bihzZXNzaW9uKTsKLQotICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUgc2Vzc2lv
blR5cGUgPSBzZXNzaW9uLm1lZGlhVHlwZSgpOwotICAgIFNlc3Npb25SZXN0cmljdGlvbnMgcmVz
dHJpY3Rpb25zID0gbV9yZXN0cmljdGlvbnNbc2Vzc2lvblR5cGVdOwotICAgIGlmIChzZXNzaW9u
LnN0YXRlKCkgPT0gUGxhdGZvcm1NZWRpYVNlc3Npb246OkludGVycnVwdGVkICYmIHJlc3RyaWN0
aW9ucyAmIEludGVycnVwdGVkUGxheWJhY2tOb3RQZXJtaXR0ZWQpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLQotI2lmIFVTRShBVURJT19TRVNTSU9OKQotICAgIGlmIChhY3RpdmVBdWRpb1Nlc3Np
b25SZXF1aXJlZCgpICYmICFBdWRpb1Nlc3Npb246OnNoYXJlZFNlc3Npb24oKS50cnlUb1NldEFj
dGl2ZSh0cnVlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCi0KLSAgICBpZiAobV9p
bnRlcnJ1cHRlZCkKLSAgICAgICAgZW5kSW50ZXJydXB0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9u
OjpOb0ZsYWdzKTsKLQotICAgIFZlY3RvcjxQbGF0Zm9ybU1lZGlhU2Vzc2lvbio+IHNlc3Npb25z
ID0gbV9zZXNzaW9uczsKLSAgICBmb3IgKGF1dG8qIG9uZVNlc3Npb24gOiBzZXNzaW9ucykgewot
ICAgICAgICBpZiAob25lU2Vzc2lvbiA9PSAmc2Vzc2lvbikKLSAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICBpZiAob25lU2Vzc2lvbi0+bWVkaWFUeXBlKCkgPT0gc2Vzc2lvblR5cGUgJiYg
cmVzdHJpY3Rpb25zICYgQ29uY3VycmVudFBsYXliYWNrTm90UGVybWl0dGVkKQotICAgICAgICAg
ICAgb25lU2Vzc2lvbi0+cGF1c2VTZXNzaW9uKCk7Ci0gICAgfQotCi0gICAgdXBkYXRlU2Vzc2lv
blN0YXRlKCk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0gICAgCi12b2lkIE1lZGlhU2Vzc2lvbk1h
bmFnZXI6OnNlc3Npb25XaWxsRW5kUGxheWJhY2soUGxhdGZvcm1NZWRpYVNlc3Npb24mIHNlc3Np
b24pCi17Ci0gICAgTE9HKE1lZGlhLCAiTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2Vzc2lvbldpbGxF
bmRQbGF5YmFjayAtICVwIiwgJnNlc3Npb24pOwotICAgIAotICAgIGlmIChtX3Nlc3Npb25zLnNp
emUoKSA8IDIpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBzaXplX3QgcGF1c2luZ1Nlc3Np
b25JbmRleCA9IG5vdEZvdW5kOwotICAgIHNpemVfdCBsYXN0UGxheWluZ1Nlc3Npb25JbmRleCA9
IG5vdEZvdW5kOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9zZXNzaW9ucy5zaXplKCk7
ICsraSkgewotICAgICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbiogb25lU2Vzc2lvbiA9IG1fc2Vz
c2lvbnNbaV07Ci0gICAgICAgIAotICAgICAgICBpZiAob25lU2Vzc2lvbiA9PSAmc2Vzc2lvbikg
ewotICAgICAgICAgICAgcGF1c2luZ1Nlc3Npb25JbmRleCA9IGk7Ci0gICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgfQotICAgICAgICBpZiAob25lU2Vzc2lvbi0+c3RhdGUoKSA9PSBQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6UGxheWluZykgewotICAgICAgICAgICAgbGFzdFBsYXlpbmdTZXNz
aW9uSW5kZXggPSBpOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLSAgICAgICAg
aWYgKG9uZVNlc3Npb24tPnN0YXRlKCkgIT0gUGxhdGZvcm1NZWRpYVNlc3Npb246OlBsYXlpbmcp
Ci0gICAgICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgaWYgKGxhc3RQbGF5aW5nU2Vzc2lvbklu
ZGV4ID09IG5vdEZvdW5kIHx8IHBhdXNpbmdTZXNzaW9uSW5kZXggPT0gbm90Rm91bmQpCi0gICAg
ICAgIHJldHVybjsKLSAgICAKLSAgICBpZiAocGF1c2luZ1Nlc3Npb25JbmRleCA+IGxhc3RQbGF5
aW5nU2Vzc2lvbkluZGV4KQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgbV9zZXNzaW9ucy5y
ZW1vdmUocGF1c2luZ1Nlc3Npb25JbmRleCk7Ci0gICAgbV9zZXNzaW9ucy5pbnNlcnQobGFzdFBs
YXlpbmdTZXNzaW9uSW5kZXgsICZzZXNzaW9uKTsKLSAgICAKLSAgICBMT0coTWVkaWEsICJNZWRp
YVNlc3Npb25NYW5hZ2VyOjpzZXNzaW9uV2lsbEVuZFBsYXliYWNrIC0gc2Vzc2lvbiBtb3ZlZCBm
cm9tIGluZGV4ICV6dSB0byAlenUiLCBwYXVzaW5nU2Vzc2lvbkluZGV4LCBsYXN0UGxheWluZ1Nl
c3Npb25JbmRleCk7Ci19Ci0KLXZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2V0Q3VycmVudFNl
c3Npb24oUGxhdGZvcm1NZWRpYVNlc3Npb24mIHNlc3Npb24pCi17Ci0gICAgTE9HKE1lZGlhLCAi
TWVkaWFTZXNzaW9uTWFuYWdlcjo6c2V0Q3VycmVudFNlc3Npb24gLSAlcCIsICZzZXNzaW9uKTsK
LSAgICAKLSAgICBpZiAobV9zZXNzaW9ucy5zaXplKCkgPCAyKQotICAgICAgICByZXR1cm47Ci0g
ICAgCi0gICAgc2l6ZV90IGluZGV4ID0gbV9zZXNzaW9ucy5maW5kKCZzZXNzaW9uKTsKLSAgICBB
U1NFUlQoaW5kZXggIT0gbm90Rm91bmQpOwotICAgIGlmICghaW5kZXggfHwgaW5kZXggPT0gbm90
Rm91bmQpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fc2Vzc2lvbnMucmVtb3ZlKGluZGV4KTsK
LSAgICBtX3Nlc3Npb25zLmluc2VydCgwLCAmc2Vzc2lvbik7Ci0gICAgCi0gICAgTE9HKE1lZGlh
LCAiTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2V0Q3VycmVudFNlc3Npb24gLSBzZXNzaW9uIG1vdmVk
IGZyb20gaW5kZXggJXp1IHRvIDAiLCBpbmRleCk7Ci19Ci0gICAgCi1QbGF0Zm9ybU1lZGlhU2Vz
c2lvbiogTWVkaWFTZXNzaW9uTWFuYWdlcjo6Y3VycmVudFNlc3Npb24oKQotewotICAgIGlmICgh
bV9zZXNzaW9ucy5zaXplKCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgcmV0dXJu
IG1fc2Vzc2lvbnNbMF07Ci19Ci0gICAgCi1ib29sIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNlc3Np
b25SZXN0cmljdHNJbmxpbmVWaWRlb1BsYXliYWNrKGNvbnN0IFBsYXRmb3JtTWVkaWFTZXNzaW9u
JiBzZXNzaW9uKSBjb25zdAotewotICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUg
c2Vzc2lvblR5cGUgPSBzZXNzaW9uLnByZXNlbnRhdGlvblR5cGUoKTsKLSAgICBpZiAoc2Vzc2lv
blR5cGUgIT0gUGxhdGZvcm1NZWRpYVNlc3Npb246OlZpZGVvKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgICByZXR1cm4gbV9yZXN0cmljdGlvbnNbc2Vzc2lvblR5cGVdICYgSW5saW5lVmlk
ZW9QbGF5YmFja1Jlc3RyaWN0ZWQ7Ci19Ci0KLWJvb2wgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2Vz
c2lvbkNhbkxvYWRNZWRpYShjb25zdCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbiYgc2Vzc2lvbikgY29u
c3QKLXsKLSAgICByZXR1cm4gc2Vzc2lvbi5zdGF0ZSgpID09IFBsYXRmb3JtTWVkaWFTZXNzaW9u
OjpQbGF5aW5nIHx8ICFzZXNzaW9uLmlzSGlkZGVuKCkgfHwgc2Vzc2lvbi5pc1BsYXlpbmdUb1dp
cmVsZXNzUGxheWJhY2tUYXJnZXQoKTsKLX0KLQotdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyOjph
cHBsaWNhdGlvbldpbGxFbnRlckJhY2tncm91bmQoKSBjb25zdAotewotICAgIExPRyhNZWRpYSwg
Ik1lZGlhU2Vzc2lvbk1hbmFnZXI6OmFwcGxpY2F0aW9uV2lsbEVudGVyQmFja2dyb3VuZCIpOwot
ICAgIFZlY3RvcjxQbGF0Zm9ybU1lZGlhU2Vzc2lvbio+IHNlc3Npb25zID0gbV9zZXNzaW9uczsK
LSAgICBmb3IgKGF1dG8qIHNlc3Npb24gOiBzZXNzaW9ucykgewotICAgICAgICBpZiAobV9yZXN0
cmljdGlvbnNbc2Vzc2lvbi0+bWVkaWFUeXBlKCldICYgQmFja2dyb3VuZFByb2Nlc3NQbGF5YmFj
a1Jlc3RyaWN0ZWQpCi0gICAgICAgICAgICBzZXNzaW9uLT5iZWdpbkludGVycnVwdGlvbihQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6RW50ZXJpbmdCYWNrZ3JvdW5kKTsKLSAgICB9Ci19Ci0KLXZvaWQg
TWVkaWFTZXNzaW9uTWFuYWdlcjo6YXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKCkgY29u
c3QKLXsKLSAgICBMT0coTWVkaWEsICJNZWRpYVNlc3Npb25NYW5hZ2VyOjphcHBsaWNhdGlvbldp
bGxFbnRlckZvcmVncm91bmQiKTsKLSAgICBWZWN0b3I8UGxhdGZvcm1NZWRpYVNlc3Npb24qPiBz
ZXNzaW9ucyA9IG1fc2Vzc2lvbnM7Ci0gICAgZm9yIChhdXRvKiBzZXNzaW9uIDogc2Vzc2lvbnMp
IHsKLSAgICAgICAgaWYgKG1fcmVzdHJpY3Rpb25zW3Nlc3Npb24tPm1lZGlhVHlwZSgpXSAmIEJh
Y2tncm91bmRQcm9jZXNzUGxheWJhY2tSZXN0cmljdGVkKQotICAgICAgICAgICAgc2Vzc2lvbi0+
ZW5kSW50ZXJydXB0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNYXlSZXN1bWVQbGF5aW5nKTsK
LSAgICB9Ci19Ci0KLSNpZiAhUExBVEZPUk0oQ09DT0EpCi12b2lkIE1lZGlhU2Vzc2lvbk1hbmFn
ZXI6OnVwZGF0ZVNlc3Npb25TdGF0ZSgpCi17Ci19Ci0jZW5kaWYKLQotdm9pZCBNZWRpYVNlc3Np
b25NYW5hZ2VyOjpkaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoUGxhdGZvcm1NZWRpYVNl
c3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSBjb21tYW5kKQotewotICAgIFBsYXRmb3Jt
TWVkaWFTZXNzaW9uKiBhY3RpdmVTZXNzaW9uID0gY3VycmVudFNlc3Npb24oKTsKLSAgICBpZiAo
IWFjdGl2ZVNlc3Npb24gfHwgIWFjdGl2ZVNlc3Npb24tPmNhblJlY2VpdmVSZW1vdGVDb250cm9s
Q29tbWFuZHMoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIGFjdGl2ZVNlc3Npb24tPmRpZFJlY2Vp
dmVSZW1vdGVDb250cm9sQ29tbWFuZChjb21tYW5kKTsKLX0KLQotdm9pZCBNZWRpYVNlc3Npb25N
YW5hZ2VyOjpzeXN0ZW1XaWxsU2xlZXAoKQotewotICAgIGlmIChtX2ludGVycnVwdGVkKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBmb3IgKGF1dG8gc2Vzc2lvbiA6IG1fc2Vzc2lvbnMpCi0gICAg
ICAgIHNlc3Npb24tPmJlZ2luSW50ZXJydXB0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTeXN0
ZW1TbGVlcCk7Ci19Ci0KLXZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c3lzdGVtRGlkV2FrZSgp
Ci17Ci0gICAgaWYgKG1faW50ZXJydXB0ZWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGZvciAo
YXV0byBzZXNzaW9uIDogbV9zZXNzaW9ucykKLSAgICAgICAgc2Vzc2lvbi0+ZW5kSW50ZXJydXB0
aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNYXlSZXN1bWVQbGF5aW5nKTsKLX0KLQotdm9pZCBN
ZWRpYVNlc3Npb25NYW5hZ2VyOjphdWRpb091dHB1dERldmljZUNoYW5nZWQoKQotewotICAgIHVw
ZGF0ZVNlc3Npb25TdGF0ZSgpOwotfQotCi19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uTWFuYWdlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uTWFuYWdlci5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBkMTUwYTk4NWRjNjc0ZmE3Y2NlZjU1Mjc1MTFmZjJkZDgzZDc0YTA0
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbk1hbmFnZXIuaAorKysgL2Rldi9udWxs
CkBAIC0xLDEzMyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTUgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIE1lZGlhU2Vzc2lv
bk1hbmFnZXJfaAotI2RlZmluZSBNZWRpYVNlc3Npb25NYW5hZ2VyX2gKLQotI2luY2x1ZGUgIkF1
ZGlvSGFyZHdhcmVMaXN0ZW5lci5oIgotI2luY2x1ZGUgIlBsYXRmb3JtTWVkaWFTZXNzaW9uLmgi
Ci0jaW5jbHVkZSAiUmVtb3RlQ29tbWFuZExpc3RlbmVyLmgiCi0jaW5jbHVkZSAiU2V0dGluZ3Mu
aCIKLSNpbmNsdWRlICJTeXN0ZW1TbGVlcExpc3RlbmVyLmgiCi0jaW5jbHVkZSA8bWFwPgotI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBIVE1M
TWVkaWFFbGVtZW50OwotY2xhc3MgUGxhdGZvcm1NZWRpYVNlc3Npb247Ci1jbGFzcyBSZW1vdGVD
b21tYW5kTGlzdGVuZXI7Ci0KLWNsYXNzIE1lZGlhU2Vzc2lvbk1hbmFnZXIgOiBwcml2YXRlIFJl
bW90ZUNvbW1hbmRMaXN0ZW5lckNsaWVudCwgcHJpdmF0ZSBTeXN0ZW1TbGVlcExpc3RlbmVyOjpD
bGllbnQsIHByaXZhdGUgQXVkaW9IYXJkd2FyZUxpc3RlbmVyOjpDbGllbnQgewotICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBN
ZWRpYVNlc3Npb25NYW5hZ2VyJiBzaGFyZWRNYW5hZ2VyKCk7Ci0gICAgdmlydHVhbCB+TWVkaWFT
ZXNzaW9uTWFuYWdlcigpIHsgfQotCi0gICAgYm9vbCBoYXMoUGxhdGZvcm1NZWRpYVNlc3Npb246
Ok1lZGlhVHlwZSkgY29uc3Q7Ci0gICAgaW50IGNvdW50KFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpN
ZWRpYVR5cGUpIGNvbnN0OwotICAgIGJvb2wgYWN0aXZlQXVkaW9TZXNzaW9uUmVxdWlyZWQoKSBj
b25zdDsKLQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYmVnaW5JbnRlcnJ1cHRpb24oUGxhdGZv
cm1NZWRpYVNlc3Npb246OkludGVycnVwdGlvblR5cGUpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgZW5kSW50ZXJydXB0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpFbmRJbnRlcnJ1cHRpb25G
bGFncyk7Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGxpY2F0aW9uV2lsbEVudGVyRm9y
ZWdyb3VuZCgpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwbGljYXRpb25XaWxs
RW50ZXJCYWNrZ3JvdW5kKCkgY29uc3Q7Ci0KLSAgICBlbnVtIFNlc3Npb25SZXN0cmljdGlvbkZs
YWdzIHsKLSAgICAgICAgTm9SZXN0cmljdGlvbnMgPSAwLAotICAgICAgICBDb25jdXJyZW50UGxh
eWJhY2tOb3RQZXJtaXR0ZWQgPSAxIDw8IDAsCi0gICAgICAgIElubGluZVZpZGVvUGxheWJhY2tS
ZXN0cmljdGVkID0gMSA8PCAxLAotICAgICAgICBNZXRhZGF0YVByZWxvYWRpbmdOb3RQZXJtaXR0
ZWQgPSAxIDw8IDIsCi0gICAgICAgIEF1dG9QcmVsb2FkaW5nTm90UGVybWl0dGVkID0gMSA8PCAz
LAotICAgICAgICBCYWNrZ3JvdW5kUHJvY2Vzc1BsYXliYWNrUmVzdHJpY3RlZCA9IDEgPDwgNCwK
LSAgICAgICAgQmFja2dyb3VuZFRhYlBsYXliYWNrUmVzdHJpY3RlZCA9IDEgPDwgNSwKLSAgICAg
ICAgSW50ZXJydXB0ZWRQbGF5YmFja05vdFBlcm1pdHRlZCA9IDEgPDwgNiwKLSAgICB9OwotICAg
IHR5cGVkZWYgdW5zaWduZWQgU2Vzc2lvblJlc3RyaWN0aW9uczsKLQotICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgYWRkUmVzdHJpY3Rpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246Ok1lZGlhVHlwZSwg
U2Vzc2lvblJlc3RyaWN0aW9ucyk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVSZXN0
cmljdGlvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlLCBTZXNzaW9uUmVzdHJpY3Rp
b25zKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBTZXNzaW9uUmVzdHJpY3Rpb25zIHJlc3RyaWN0aW9u
cyhQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVz
ZXRSZXN0cmljdGlvbnMoKTsKLQotICAgIHZpcnR1YWwgYm9vbCBzZXNzaW9uV2lsbEJlZ2luUGxh
eWJhY2soUGxhdGZvcm1NZWRpYVNlc3Npb24mKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2Vzc2lvbldp
bGxFbmRQbGF5YmFjayhQbGF0Zm9ybU1lZGlhU2Vzc2lvbiYpOwotCi0gICAgYm9vbCBzZXNzaW9u
UmVzdHJpY3RzSW5saW5lVmlkZW9QbGF5YmFjayhjb25zdCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbiYp
IGNvbnN0OwotCi0gICAgdmlydHVhbCBib29sIHNlc3Npb25DYW5Mb2FkTWVkaWEoY29uc3QgUGxh
dGZvcm1NZWRpYVNlc3Npb24mKSBjb25zdDsKLQotI2lmIFBMQVRGT1JNKElPUykKLSAgICB2aXJ0
dWFsIHZvaWQgY29uZmlndXJlV2lyZUxlc3NUYXJnZXRNb25pdG9yaW5nKCkgeyB9Ci0gICAgdmly
dHVhbCBib29sIGhhc1dpcmVsZXNzVGFyZ2V0c0F2YWlsYWJsZSgpIHsgcmV0dXJuIGZhbHNlOyB9
Ci0jZW5kaWYKLQotICAgIHZvaWQgc2V0Q3VycmVudFNlc3Npb24oUGxhdGZvcm1NZWRpYVNlc3Np
b24mKTsKLSAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbiogY3VycmVudFNlc3Npb24oKTsKLQotcHJv
dGVjdGVkOgotICAgIGZyaWVuZCBjbGFzcyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjsKLSAgICBleHBs
aWNpdCBNZWRpYVNlc3Npb25NYW5hZ2VyKCk7Ci0KLSAgICB2b2lkIGFkZFNlc3Npb24oUGxhdGZv
cm1NZWRpYVNlc3Npb24mKTsKLSAgICB2b2lkIHJlbW92ZVNlc3Npb24oUGxhdGZvcm1NZWRpYVNl
c3Npb24mKTsKLQotICAgIFZlY3RvcjxQbGF0Zm9ybU1lZGlhU2Vzc2lvbio+IHNlc3Npb25zKCkg
eyByZXR1cm4gbV9zZXNzaW9uczsgfQotCi1wcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBJbnRl
cm5hbHM7Ci0KLSAgICB2b2lkIHVwZGF0ZVNlc3Npb25TdGF0ZSgpOwotCi0gICAgLy8gUmVtb3Rl
Q29tbWFuZExpc3RlbmVyQ2xpZW50Ci0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3Rl
Q29udHJvbENvbW1hbmRUeXBlKSBvdmVycmlkZTsKLQotICAgIC8vIEF1ZGlvSGFyZHdhcmVMaXN0
ZW5lckNsaWVudAotICAgIHZpcnR1YWwgdm9pZCBhdWRpb0hhcmR3YXJlRGlkQmVjb21lQWN0aXZl
KCkgb3ZlcnJpZGUgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGF1ZGlvSGFyZHdhcmVEaWRCZWNvbWVJ
bmFjdGl2ZSgpIG92ZXJyaWRlIHsgfQotICAgIHZpcnR1YWwgdm9pZCBhdWRpb091dHB1dERldmlj
ZUNoYW5nZWQoKSBvdmVycmlkZTsKLQotICAgIC8vIFN5c3RlbVNsZWVwTGlzdGVuZXIKLSAgICB2
aXJ0dWFsIHZvaWQgc3lzdGVtV2lsbFNsZWVwKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lk
IHN5c3RlbURpZFdha2UoKSBvdmVycmlkZTsKLQotICAgIFNlc3Npb25SZXN0cmljdGlvbnMgbV9y
ZXN0cmljdGlvbnNbUGxhdGZvcm1NZWRpYVNlc3Npb246OldlYkF1ZGlvICsgMV07Ci0gICAgVmVj
dG9yPFBsYXRmb3JtTWVkaWFTZXNzaW9uKj4gbV9zZXNzaW9uczsKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8UmVtb3RlQ29tbWFuZExpc3RlbmVyPiBtX3JlbW90ZUNvbW1hbmRMaXN0ZW5lcjsKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8U3lzdGVtU2xlZXBMaXN0ZW5lcj4gbV9zeXN0ZW1TbGVlcExpc3RlbmVy
OwotICAgIFJlZlB0cjxBdWRpb0hhcmR3YXJlTGlzdGVuZXI+IG1fYXVkaW9IYXJkd2FyZUxpc3Rl
bmVyOwotCi0jaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JN
KElPUykKLSAgICBSZWZQdHI8TWVkaWFQbGF5YmFja1RhcmdldD4gbV9wbGF5YmFja1RhcmdldDsK
LSAgICBib29sIG1fY2FuUGxheVRvVGFyZ2V0IHsgZmFsc2UgfTsKLSNlbmRpZgotCi0gICAgYm9v
bCBtX2ludGVycnVwdGVkIHsgZmFsc2UgfTsKLX07Ci0KLX0KLQotI2VuZGlmIC8vIE1lZGlhU2Vz
c2lvbk1hbmFnZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
UGxhdGZvcm1NZWRpYVNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
UGxhdGZvcm1NZWRpYVNlc3Npb24uY3BwCmluZGV4IDY2OTNhNmY2OTkwYmFlZWJkNTJhZjFiZTMy
ZDYyMWY1OWJiNGIwY2EuLjk5ODk3Y2FiNTkyMjBhMzVhMDQ2MWNjZDIxZGU3YjhhNGUyMjRmNTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFT
ZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1l
ZGlhU2Vzc2lvbi5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlICJIVE1MTWVkaWFFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCi0j
aW5jbHVkZSAiTWVkaWFTZXNzaW9uTWFuYWdlci5oIgorI2luY2x1ZGUgIlBsYXRmb3JtTWVkaWFT
ZXNzaW9uTWFuYWdlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTY1LDEyICs2NSwx
MiBAQCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UGxhdGZvcm1NZWRpYVNlc3Npb24oUGxhdGZvcm1N
ZWRpYVNlc3Npb25DbGllbnQmIGNsaWVudCkKICAgICAsIG1fbm90aWZ5aW5nQ2xpZW50KGZhbHNl
KQogewogICAgIEFTU0VSVChtX2NsaWVudC5tZWRpYVR5cGUoKSA+PSBOb25lICYmIG1fY2xpZW50
Lm1lZGlhVHlwZSgpIDw9IFdlYkF1ZGlvKTsKLSAgICBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFy
ZWRNYW5hZ2VyKCkuYWRkU2Vzc2lvbigqdGhpcyk7CisgICAgUGxhdGZvcm1NZWRpYVNlc3Npb25N
YW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuYWRkU2Vzc2lvbigqdGhpcyk7CiB9CiAKIFBsYXRmb3Jt
TWVkaWFTZXNzaW9uOjp+UGxhdGZvcm1NZWRpYVNlc3Npb24oKQogewotICAgIE1lZGlhU2Vzc2lv
bk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5yZW1vdmVTZXNzaW9uKCp0aGlzKTsKKyAgICBQbGF0
Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5yZW1vdmVTZXNzaW9uKCp0
aGlzKTsKIH0KIAogdm9pZCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6c2V0U3RhdGUoU3RhdGUgc3Rh
dGUpCkBAIC0xMTgsNyArMTE4LDcgQEAgYm9vbCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Y2xpZW50
V2lsbEJlZ2luUGxheWJhY2soKQogICAgIGlmIChtX25vdGlmeWluZ0NsaWVudCkKICAgICAgICAg
cmV0dXJuIHRydWU7CiAKLSAgICBpZiAoIU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFn
ZXIoKS5zZXNzaW9uV2lsbEJlZ2luUGxheWJhY2soKnRoaXMpKSB7CisgICAgaWYgKCFQbGF0Zm9y
bU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5zZXNzaW9uV2lsbEJlZ2luUGxh
eWJhY2soKnRoaXMpKSB7CiAgICAgICAgIGlmIChzdGF0ZSgpID09IEludGVycnVwdGVkKQogICAg
ICAgICAgICAgbV9zdGF0ZVRvUmVzdG9yZSA9IFBsYXlpbmc7CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTE0Miw3ICsxNDIsNyBAQCBib29sIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpjbGllbnRX
aWxsUGF1c2VQbGF5YmFjaygpCiAgICAgfQogICAgIAogICAgIHNldFN0YXRlKFBhdXNlZCk7Ci0g
ICAgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLnNlc3Npb25XaWxsRW5kUGxh
eWJhY2soKnRoaXMpOworICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFu
YWdlcigpLnNlc3Npb25XaWxsRW5kUGxheWJhY2soKnRoaXMpOwogICAgIGlmICghbV9jbGllbnRE
YXRhQnVmZmVyaW5nVGltZXIuaXNBY3RpdmUoKSkKICAgICAgICAgbV9jbGllbnREYXRhQnVmZmVy
aW5nVGltZXIuc3RhcnRPbmVTaG90KGtDbGllbnREYXRhQnVmZmVyaW5nVGltZXJUaHJvdHRsZURl
bGF5KTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTIwNCw4ICsyMDQsOCBAQCB2b2lkIFBsYXRmb3Jt
TWVkaWFTZXNzaW9uOjpjbGllbnREYXRhQnVmZmVyaW5nVGltZXJGaXJlZCgpCiAgICAgaWYgKG1f
c3RhdGUgIT0gUGxheWluZyB8fCAhbV9jbGllbnQuZWxlbWVudElzSGlkZGVuKCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OlNlc3Npb25SZXN0cmljdGlvbnMg
cmVzdHJpY3Rpb25zID0gTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLnJlc3Ry
aWN0aW9ucyhtZWRpYVR5cGUoKSk7Ci0gICAgaWYgKChyZXN0cmljdGlvbnMgJiBNZWRpYVNlc3Np
b25NYW5hZ2VyOjpCYWNrZ3JvdW5kVGFiUGxheWJhY2tSZXN0cmljdGVkKSA9PSBNZWRpYVNlc3Np
b25NYW5hZ2VyOjpCYWNrZ3JvdW5kVGFiUGxheWJhY2tSZXN0cmljdGVkKQorICAgIFBsYXRmb3Jt
TWVkaWFTZXNzaW9uTWFuYWdlcjo6U2Vzc2lvblJlc3RyaWN0aW9ucyByZXN0cmljdGlvbnMgPSBQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5yZXN0cmljdGlvbnMo
bWVkaWFUeXBlKCkpOworICAgIGlmICgocmVzdHJpY3Rpb25zICYgUGxhdGZvcm1NZWRpYVNlc3Np
b25NYW5hZ2VyOjpCYWNrZ3JvdW5kVGFiUGxheWJhY2tSZXN0cmljdGVkKSA9PSBQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbk1hbmFnZXI6OkJhY2tncm91bmRUYWJQbGF5YmFja1Jlc3RyaWN0ZWQpCiAgICAg
ICAgIHBhdXNlU2Vzc2lvbigpOwogfQogCkBAIC0yMTQsNyArMjE0LDcgQEAgdm9pZCBQbGF0Zm9y
bU1lZGlhU2Vzc2lvbjo6dXBkYXRlQ2xpZW50RGF0YUJ1ZmZlcmluZygpCiAgICAgaWYgKG1fY2xp
ZW50RGF0YUJ1ZmZlcmluZ1RpbWVyLmlzQWN0aXZlKCkpCiAgICAgICAgIG1fY2xpZW50RGF0YUJ1
ZmZlcmluZ1RpbWVyLnN0b3AoKTsKIAotICAgIG1fY2xpZW50LnNldFNob3VsZEJ1ZmZlckRhdGEo
TWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLnNlc3Npb25DYW5Mb2FkTWVkaWEo
KnRoaXMpKTsKKyAgICBtX2NsaWVudC5zZXRTaG91bGRCdWZmZXJEYXRhKFBsYXRmb3JtTWVkaWFT
ZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLnNlc3Npb25DYW5Mb2FkTWVkaWEoKnRoaXMp
KTsKIH0KIAogYm9vbCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6aXNIaWRkZW4oKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Np
b25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVk
aWFTZXNzaW9uTWFuYWdlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzI5M2Y1NjRiY2FjNGExYjUzYTU0OTFm
YTAwZGVmZDY3MzQ0ZGZjZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAKQEAgLTAsMCArMSwzMzQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQbGF0
Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaCIKKworI2lmIEVOQUJMRShWSURFTykKKworI2luY2x1
ZGUgIkF1ZGlvU2Vzc2lvbi5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJOb3RJ
bXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIlBsYXRmb3JtTWVkaWFTZXNzaW9uLmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworI2lmICFQTEFURk9STShJT1MpCitQbGF0Zm9ybU1lZGlhU2Vzc2lv
bk1hbmFnZXImIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpCit7
CisgICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFBsYXRmb3JtTWVkaWFTZXNzaW9u
TWFuYWdlciwgbWFuYWdlciwgKCkpOworICAgIHJldHVybiBtYW5hZ2VyOworfQorI2VuZGlmCisK
K1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2Vy
KCkKKyAgICA6IG1fc3lzdGVtU2xlZXBMaXN0ZW5lcihTeXN0ZW1TbGVlcExpc3RlbmVyOjpjcmVh
dGUoKnRoaXMpKQoreworICAgIHJlc2V0UmVzdHJpY3Rpb25zKCk7Cit9CisKK3ZvaWQgUGxhdGZv
cm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpyZXNldFJlc3RyaWN0aW9ucygpCit7CisgICAgbV9yZXN0
cmljdGlvbnNbUGxhdGZvcm1NZWRpYVNlc3Npb246OlZpZGVvXSA9IE5vUmVzdHJpY3Rpb25zOwor
ICAgIG1fcmVzdHJpY3Rpb25zW1BsYXRmb3JtTWVkaWFTZXNzaW9uOjpBdWRpb10gPSBOb1Jlc3Ry
aWN0aW9uczsKKyAgICBtX3Jlc3RyaWN0aW9uc1tQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6V2ViQXVk
aW9dID0gTm9SZXN0cmljdGlvbnM7Cit9CisKK2Jvb2wgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5h
Z2VyOjpoYXMoUGxhdGZvcm1NZWRpYVNlc3Npb246Ok1lZGlhVHlwZSB0eXBlKSBjb25zdAorewor
ICAgIEFTU0VSVCh0eXBlID49IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpOb25lICYmIHR5cGUgPD0g
UGxhdGZvcm1NZWRpYVNlc3Npb246OldlYkF1ZGlvKTsKKworICAgIGZvciAoYXV0byogc2Vzc2lv
biA6IG1fc2Vzc2lvbnMpIHsKKyAgICAgICAgaWYgKHNlc3Npb24tPm1lZGlhVHlwZSgpID09IHR5
cGUpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKK2Jvb2wgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjphY3RpdmVBdWRpb1Nlc3Np
b25SZXF1aXJlZCgpIGNvbnN0Cit7CisgICAgZm9yIChhdXRvKiBzZXNzaW9uIDogbV9zZXNzaW9u
cykgeworICAgICAgICBpZiAoc2Vzc2lvbi0+bWVkaWFUeXBlKCkgIT0gUGxhdGZvcm1NZWRpYVNl
c3Npb246Ok5vbmUgJiYgc2Vzc2lvbi0+c3RhdGUoKSA9PSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6
U3RhdGU6OlBsYXlpbmcpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCisg
ICAgcmV0dXJuIGZhbHNlOworfQorCitpbnQgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpj
b3VudChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlIHR5cGUpIGNvbnN0Cit7CisgICAg
QVNTRVJUKHR5cGUgPj0gUGxhdGZvcm1NZWRpYVNlc3Npb246Ok5vbmUgJiYgdHlwZSA8PSBQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6V2ViQXVkaW8pOworCisgICAgaW50IGNvdW50ID0gMDsKKyAgICBm
b3IgKGF1dG8qIHNlc3Npb24gOiBtX3Nlc3Npb25zKSB7CisgICAgICAgIGlmIChzZXNzaW9uLT5t
ZWRpYVR5cGUoKSA9PSB0eXBlKQorICAgICAgICAgICAgKytjb3VudDsKKyAgICB9CisKKyAgICBy
ZXR1cm4gY291bnQ7Cit9CisKK3ZvaWQgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpiZWdp
bkludGVycnVwdGlvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6SW50ZXJydXB0aW9uVHlwZSB0eXBl
KQoreworICAgIExPRyhNZWRpYSwgIlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6YmVnaW5J
bnRlcnJ1cHRpb24iKTsKKworICAgIG1faW50ZXJydXB0ZWQgPSB0cnVlOworICAgIFZlY3RvcjxQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbio+IHNlc3Npb25zID0gbV9zZXNzaW9uczsKKyAgICBmb3IgKGF1
dG8qIHNlc3Npb24gOiBzZXNzaW9ucykKKyAgICAgICAgc2Vzc2lvbi0+YmVnaW5JbnRlcnJ1cHRp
b24odHlwZSk7CisgICAgdXBkYXRlU2Vzc2lvblN0YXRlKCk7Cit9CisKK3ZvaWQgUGxhdGZvcm1N
ZWRpYVNlc3Npb25NYW5hZ2VyOjplbmRJbnRlcnJ1cHRpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246
OkVuZEludGVycnVwdGlvbkZsYWdzIGZsYWdzKQoreworICAgIExPRyhNZWRpYSwgIlBsYXRmb3Jt
TWVkaWFTZXNzaW9uTWFuYWdlcjo6ZW5kSW50ZXJydXB0aW9uIik7CisKKyAgICBtX2ludGVycnVw
dGVkID0gZmFsc2U7CisgICAgVmVjdG9yPFBsYXRmb3JtTWVkaWFTZXNzaW9uKj4gc2Vzc2lvbnMg
PSBtX3Nlc3Npb25zOworICAgIGZvciAoYXV0byogc2Vzc2lvbiA6IHNlc3Npb25zKQorICAgICAg
ICBzZXNzaW9uLT5lbmRJbnRlcnJ1cHRpb24oZmxhZ3MpOworfQorCit2b2lkIFBsYXRmb3JtTWVk
aWFTZXNzaW9uTWFuYWdlcjo6YWRkU2Vzc2lvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbiYgc2Vzc2lv
bikKK3sKKyAgICBMT0coTWVkaWEsICJQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OmFkZFNl
c3Npb24gLSAlcCIsICZzZXNzaW9uKTsKKyAgICAKKyAgICBtX3Nlc3Npb25zLmFwcGVuZCgmc2Vz
c2lvbik7CisgICAgaWYgKG1faW50ZXJydXB0ZWQpCisgICAgICAgIHNlc3Npb24uc2V0U3RhdGUo
UGxhdGZvcm1NZWRpYVNlc3Npb246OkludGVycnVwdGVkKTsKKworICAgIGlmICghbV9yZW1vdGVD
b21tYW5kTGlzdGVuZXIpCisgICAgICAgIG1fcmVtb3RlQ29tbWFuZExpc3RlbmVyID0gUmVtb3Rl
Q29tbWFuZExpc3RlbmVyOjpjcmVhdGUoKnRoaXMpOworCisgICAgaWYgKCFtX2F1ZGlvSGFyZHdh
cmVMaXN0ZW5lcikKKyAgICAgICAgbV9hdWRpb0hhcmR3YXJlTGlzdGVuZXIgPSBBdWRpb0hhcmR3
YXJlTGlzdGVuZXI6OmNyZWF0ZSgqdGhpcyk7CisKKyAgICB1cGRhdGVTZXNzaW9uU3RhdGUoKTsK
K30KKwordm9pZCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnJlbW92ZVNlc3Npb24oUGxh
dGZvcm1NZWRpYVNlc3Npb24mIHNlc3Npb24pCit7CisgICAgTE9HKE1lZGlhLCAiUGxhdGZvcm1N
ZWRpYVNlc3Npb25NYW5hZ2VyOjpyZW1vdmVTZXNzaW9uIC0gJXAiLCAmc2Vzc2lvbik7CisgICAg
CisgICAgc2l6ZV90IGluZGV4ID0gbV9zZXNzaW9ucy5maW5kKCZzZXNzaW9uKTsKKyAgICBBU1NF
UlQoaW5kZXggIT0gbm90Rm91bmQpOworICAgIGlmIChpbmRleCA9PSBub3RGb3VuZCkKKyAgICAg
ICAgcmV0dXJuOworICAgIAorICAgIG1fc2Vzc2lvbnMucmVtb3ZlKGluZGV4KTsKKworICAgIGlm
IChtX3Nlc3Npb25zLmlzRW1wdHkoKSkgeworICAgICAgICBtX3JlbW90ZUNvbW1hbmRMaXN0ZW5l
ciA9IG51bGxwdHI7CisgICAgICAgIG1fYXVkaW9IYXJkd2FyZUxpc3RlbmVyID0gbnVsbHB0cjsK
KyAgICB9CisKKyAgICB1cGRhdGVTZXNzaW9uU3RhdGUoKTsKK30KKwordm9pZCBQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbk1hbmFnZXI6OmFkZFJlc3RyaWN0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpN
ZWRpYVR5cGUgdHlwZSwgU2Vzc2lvblJlc3RyaWN0aW9ucyByZXN0cmljdGlvbikKK3sKKyAgICBB
U1NFUlQodHlwZSA+IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpOb25lICYmIHR5cGUgPD0gUGxhdGZv
cm1NZWRpYVNlc3Npb246OldlYkF1ZGlvKTsKKyAgICBtX3Jlc3RyaWN0aW9uc1t0eXBlXSB8PSBy
ZXN0cmljdGlvbjsKK30KKwordm9pZCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnJlbW92
ZVJlc3RyaWN0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUgdHlwZSwgU2Vzc2lv
blJlc3RyaWN0aW9ucyByZXN0cmljdGlvbikKK3sKKyAgICBBU1NFUlQodHlwZSA+IFBsYXRmb3Jt
TWVkaWFTZXNzaW9uOjpOb25lICYmIHR5cGUgPD0gUGxhdGZvcm1NZWRpYVNlc3Npb246OldlYkF1
ZGlvKTsKKyAgICBtX3Jlc3RyaWN0aW9uc1t0eXBlXSAmPSB+cmVzdHJpY3Rpb247Cit9CisKK1Bs
YXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6U2Vzc2lvblJlc3RyaWN0aW9ucyBQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbk1hbmFnZXI6OnJlc3RyaWN0aW9ucyhQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWVk
aWFUeXBlIHR5cGUpCit7CisgICAgQVNTRVJUKHR5cGUgPiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6
Tm9uZSAmJiB0eXBlIDw9IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpXZWJBdWRpbyk7CisgICAgcmV0
dXJuIG1fcmVzdHJpY3Rpb25zW3R5cGVdOworfQorCitib29sIFBsYXRmb3JtTWVkaWFTZXNzaW9u
TWFuYWdlcjo6c2Vzc2lvbldpbGxCZWdpblBsYXliYWNrKFBsYXRmb3JtTWVkaWFTZXNzaW9uJiBz
ZXNzaW9uKQoreworICAgIExPRyhNZWRpYSwgIlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6
c2Vzc2lvbldpbGxCZWdpblBsYXliYWNrIC0gJXAiLCAmc2Vzc2lvbik7CisgICAgCisgICAgc2V0
Q3VycmVudFNlc3Npb24oc2Vzc2lvbik7CisKKyAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWVk
aWFUeXBlIHNlc3Npb25UeXBlID0gc2Vzc2lvbi5tZWRpYVR5cGUoKTsKKyAgICBTZXNzaW9uUmVz
dHJpY3Rpb25zIHJlc3RyaWN0aW9ucyA9IG1fcmVzdHJpY3Rpb25zW3Nlc3Npb25UeXBlXTsKKyAg
ICBpZiAoc2Vzc2lvbi5zdGF0ZSgpID09IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpJbnRlcnJ1cHRl
ZCAmJiByZXN0cmljdGlvbnMgJiBJbnRlcnJ1cHRlZFBsYXliYWNrTm90UGVybWl0dGVkKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyNpZiBVU0UoQVVESU9fU0VTU0lPTikKKyAgICBpZiAoYWN0
aXZlQXVkaW9TZXNzaW9uUmVxdWlyZWQoKSAmJiAhQXVkaW9TZXNzaW9uOjpzaGFyZWRTZXNzaW9u
KCkudHJ5VG9TZXRBY3RpdmUodHJ1ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgor
CisgICAgaWYgKG1faW50ZXJydXB0ZWQpCisgICAgICAgIGVuZEludGVycnVwdGlvbihQbGF0Zm9y
bU1lZGlhU2Vzc2lvbjo6Tm9GbGFncyk7CisKKyAgICBWZWN0b3I8UGxhdGZvcm1NZWRpYVNlc3Np
b24qPiBzZXNzaW9ucyA9IG1fc2Vzc2lvbnM7CisgICAgZm9yIChhdXRvKiBvbmVTZXNzaW9uIDog
c2Vzc2lvbnMpIHsKKyAgICAgICAgaWYgKG9uZVNlc3Npb24gPT0gJnNlc3Npb24pCisgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKG9uZVNlc3Npb24tPm1lZGlhVHlwZSgpID09IHNl
c3Npb25UeXBlICYmIHJlc3RyaWN0aW9ucyAmIENvbmN1cnJlbnRQbGF5YmFja05vdFBlcm1pdHRl
ZCkKKyAgICAgICAgICAgIG9uZVNlc3Npb24tPnBhdXNlU2Vzc2lvbigpOworICAgIH0KKworICAg
IHVwZGF0ZVNlc3Npb25TdGF0ZSgpOworICAgIHJldHVybiB0cnVlOworfQorICAgIAordm9pZCBQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNlc3Npb25XaWxsRW5kUGxheWJhY2soUGxhdGZv
cm1NZWRpYVNlc3Npb24mIHNlc3Npb24pCit7CisgICAgTE9HKE1lZGlhLCAiUGxhdGZvcm1NZWRp
YVNlc3Npb25NYW5hZ2VyOjpzZXNzaW9uV2lsbEVuZFBsYXliYWNrIC0gJXAiLCAmc2Vzc2lvbik7
CisgICAgCisgICAgaWYgKG1fc2Vzc2lvbnMuc2l6ZSgpIDwgMikKKyAgICAgICAgcmV0dXJuOwor
ICAgIAorICAgIHNpemVfdCBwYXVzaW5nU2Vzc2lvbkluZGV4ID0gbm90Rm91bmQ7CisgICAgc2l6
ZV90IGxhc3RQbGF5aW5nU2Vzc2lvbkluZGV4ID0gbm90Rm91bmQ7CisgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBtX3Nlc3Npb25zLnNpemUoKTsgKytpKSB7CisgICAgICAgIFBsYXRmb3JtTWVk
aWFTZXNzaW9uKiBvbmVTZXNzaW9uID0gbV9zZXNzaW9uc1tpXTsKKyAgICAgICAgCisgICAgICAg
IGlmIChvbmVTZXNzaW9uID09ICZzZXNzaW9uKSB7CisgICAgICAgICAgICBwYXVzaW5nU2Vzc2lv
bkluZGV4ID0gaTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGlm
IChvbmVTZXNzaW9uLT5zdGF0ZSgpID09IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQbGF5aW5nKSB7
CisgICAgICAgICAgICBsYXN0UGxheWluZ1Nlc3Npb25JbmRleCA9IGk7CisgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAob25lU2Vzc2lvbi0+c3RhdGUoKSAhPSBQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UGxheWluZykKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0K
KyAgICBpZiAobGFzdFBsYXlpbmdTZXNzaW9uSW5kZXggPT0gbm90Rm91bmQgfHwgcGF1c2luZ1Nl
c3Npb25JbmRleCA9PSBub3RGb3VuZCkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIGlmIChw
YXVzaW5nU2Vzc2lvbkluZGV4ID4gbGFzdFBsYXlpbmdTZXNzaW9uSW5kZXgpCisgICAgICAgIHJl
dHVybjsKKyAgICAKKyAgICBtX3Nlc3Npb25zLnJlbW92ZShwYXVzaW5nU2Vzc2lvbkluZGV4KTsK
KyAgICBtX3Nlc3Npb25zLmluc2VydChsYXN0UGxheWluZ1Nlc3Npb25JbmRleCwgJnNlc3Npb24p
OworICAgIAorICAgIExPRyhNZWRpYSwgIlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2Vz
c2lvbldpbGxFbmRQbGF5YmFjayAtIHNlc3Npb24gbW92ZWQgZnJvbSBpbmRleCAlenUgdG8gJXp1
IiwgcGF1c2luZ1Nlc3Npb25JbmRleCwgbGFzdFBsYXlpbmdTZXNzaW9uSW5kZXgpOworfQorCit2
b2lkIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2V0Q3VycmVudFNlc3Npb24oUGxhdGZv
cm1NZWRpYVNlc3Npb24mIHNlc3Npb24pCit7CisgICAgTE9HKE1lZGlhLCAiUGxhdGZvcm1NZWRp
YVNlc3Npb25NYW5hZ2VyOjpzZXRDdXJyZW50U2Vzc2lvbiAtICVwIiwgJnNlc3Npb24pOworICAg
IAorICAgIGlmIChtX3Nlc3Npb25zLnNpemUoKSA8IDIpCisgICAgICAgIHJldHVybjsKKyAgICAK
KyAgICBzaXplX3QgaW5kZXggPSBtX3Nlc3Npb25zLmZpbmQoJnNlc3Npb24pOworICAgIEFTU0VS
VChpbmRleCAhPSBub3RGb3VuZCk7CisgICAgaWYgKCFpbmRleCB8fCBpbmRleCA9PSBub3RGb3Vu
ZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9zZXNzaW9ucy5yZW1vdmUoaW5kZXgpOworICAg
IG1fc2Vzc2lvbnMuaW5zZXJ0KDAsICZzZXNzaW9uKTsKKyAgICAKKyAgICBMT0coTWVkaWEsICJQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNldEN1cnJlbnRTZXNzaW9uIC0gc2Vzc2lvbiBt
b3ZlZCBmcm9tIGluZGV4ICV6dSB0byAwIiwgaW5kZXgpOworfQorICAgIAorUGxhdGZvcm1NZWRp
YVNlc3Npb24qIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6Y3VycmVudFNlc3Npb24oKQor
eworICAgIGlmICghbV9zZXNzaW9ucy5zaXplKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
CisgICAgcmV0dXJuIG1fc2Vzc2lvbnNbMF07Cit9CisgICAgCitib29sIFBsYXRmb3JtTWVkaWFT
ZXNzaW9uTWFuYWdlcjo6c2Vzc2lvblJlc3RyaWN0c0lubGluZVZpZGVvUGxheWJhY2soY29uc3Qg
UGxhdGZvcm1NZWRpYVNlc3Npb24mIHNlc3Npb24pIGNvbnN0Cit7CisgICAgUGxhdGZvcm1NZWRp
YVNlc3Npb246Ok1lZGlhVHlwZSBzZXNzaW9uVHlwZSA9IHNlc3Npb24ucHJlc2VudGF0aW9uVHlw
ZSgpOworICAgIGlmIChzZXNzaW9uVHlwZSAhPSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6VmlkZW8p
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBtX3Jlc3RyaWN0aW9uc1tzZXNz
aW9uVHlwZV0gJiBJbmxpbmVWaWRlb1BsYXliYWNrUmVzdHJpY3RlZDsKK30KKworYm9vbCBQbGF0
Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNlc3Npb25DYW5Mb2FkTWVkaWEoY29uc3QgUGxhdGZv
cm1NZWRpYVNlc3Npb24mIHNlc3Npb24pIGNvbnN0Cit7CisgICAgcmV0dXJuIHNlc3Npb24uc3Rh
dGUoKSA9PSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UGxheWluZyB8fCAhc2Vzc2lvbi5pc0hpZGRl
bigpIHx8IHNlc3Npb24uaXNQbGF5aW5nVG9XaXJlbGVzc1BsYXliYWNrVGFyZ2V0KCk7Cit9CisK
K3ZvaWQgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjphcHBsaWNhdGlvbldpbGxFbnRlckJh
Y2tncm91bmQoKSBjb25zdAoreworICAgIExPRyhNZWRpYSwgIlBsYXRmb3JtTWVkaWFTZXNzaW9u
TWFuYWdlcjo6YXBwbGljYXRpb25XaWxsRW50ZXJCYWNrZ3JvdW5kIik7CisgICAgVmVjdG9yPFBs
YXRmb3JtTWVkaWFTZXNzaW9uKj4gc2Vzc2lvbnMgPSBtX3Nlc3Npb25zOworICAgIGZvciAoYXV0
byogc2Vzc2lvbiA6IHNlc3Npb25zKSB7CisgICAgICAgIGlmIChtX3Jlc3RyaWN0aW9uc1tzZXNz
aW9uLT5tZWRpYVR5cGUoKV0gJiBCYWNrZ3JvdW5kUHJvY2Vzc1BsYXliYWNrUmVzdHJpY3RlZCkK
KyAgICAgICAgICAgIHNlc3Npb24tPmJlZ2luSW50ZXJydXB0aW9uKFBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpFbnRlcmluZ0JhY2tncm91bmQpOworICAgIH0KK30KKwordm9pZCBQbGF0Zm9ybU1lZGlh
U2Vzc2lvbk1hbmFnZXI6OmFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZCgpIGNvbnN0Cit7
CisgICAgTE9HKE1lZGlhLCAiUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjphcHBsaWNhdGlv
bldpbGxFbnRlckZvcmVncm91bmQiKTsKKyAgICBWZWN0b3I8UGxhdGZvcm1NZWRpYVNlc3Npb24q
PiBzZXNzaW9ucyA9IG1fc2Vzc2lvbnM7CisgICAgZm9yIChhdXRvKiBzZXNzaW9uIDogc2Vzc2lv
bnMpIHsKKyAgICAgICAgaWYgKG1fcmVzdHJpY3Rpb25zW3Nlc3Npb24tPm1lZGlhVHlwZSgpXSAm
IEJhY2tncm91bmRQcm9jZXNzUGxheWJhY2tSZXN0cmljdGVkKQorICAgICAgICAgICAgc2Vzc2lv
bi0+ZW5kSW50ZXJydXB0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNYXlSZXN1bWVQbGF5aW5n
KTsKKyAgICB9Cit9CisKKyNpZiAhUExBVEZPUk0oQ09DT0EpCit2b2lkIFBsYXRmb3JtTWVkaWFT
ZXNzaW9uTWFuYWdlcjo6dXBkYXRlU2Vzc2lvblN0YXRlKCkKK3sKK30KKyNlbmRpZgorCit2b2lk
IFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6ZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21t
YW5kKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUgY29tbWFu
ZCkKK3sKKyAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbiogYWN0aXZlU2Vzc2lvbiA9IGN1cnJlbnRT
ZXNzaW9uKCk7CisgICAgaWYgKCFhY3RpdmVTZXNzaW9uIHx8ICFhY3RpdmVTZXNzaW9uLT5jYW5S
ZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmRzKCkpCisgICAgICAgIHJldHVybjsKKyAgICBhY3Rp
dmVTZXNzaW9uLT5kaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoY29tbWFuZCk7Cit9CisK
K3ZvaWQgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpzeXN0ZW1XaWxsU2xlZXAoKQorewor
ICAgIGlmIChtX2ludGVycnVwdGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBmb3IgKGF1dG8g
c2Vzc2lvbiA6IG1fc2Vzc2lvbnMpCisgICAgICAgIHNlc3Npb24tPmJlZ2luSW50ZXJydXB0aW9u
KFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTeXN0ZW1TbGVlcCk7Cit9CisKK3ZvaWQgUGxhdGZvcm1N
ZWRpYVNlc3Npb25NYW5hZ2VyOjpzeXN0ZW1EaWRXYWtlKCkKK3sKKyAgICBpZiAobV9pbnRlcnJ1
cHRlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9yIChhdXRvIHNlc3Npb24gOiBtX3Nlc3Np
b25zKQorICAgICAgICBzZXNzaW9uLT5lbmRJbnRlcnJ1cHRpb24oUGxhdGZvcm1NZWRpYVNlc3Np
b246Ok1heVJlc3VtZVBsYXlpbmcpOworfQorCit2b2lkIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFu
YWdlcjo6YXVkaW9PdXRwdXREZXZpY2VDaGFuZ2VkKCkKK3sKKyAgICB1cGRhdGVTZXNzaW9uU3Rh
dGUoKTsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MmQ3NDhhMGJiZjUyYzdiNWE2Zjk2ZDZiZTE2MGVhYmMxMjNkNDZkOAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFu
YWdlci5oCkBAIC0wLDAgKzEsMTMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTUg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFBsYXRm
b3JtTWVkaWFTZXNzaW9uTWFuYWdlcl9oCisjZGVmaW5lIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFu
YWdlcl9oCisKKyNpbmNsdWRlICJBdWRpb0hhcmR3YXJlTGlzdGVuZXIuaCIKKyNpbmNsdWRlICJQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbi5oIgorI2luY2x1ZGUgIlJlbW90ZUNvbW1hbmRMaXN0ZW5lci5o
IgorI2luY2x1ZGUgIlNldHRpbmdzLmgiCisjaW5jbHVkZSAiU3lzdGVtU2xlZXBMaXN0ZW5lci5o
IgorI2luY2x1ZGUgPG1hcD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgSFRNTE1lZGlhRWxlbWVudDsKK2NsYXNzIFBsYXRmb3JtTWVkaWFT
ZXNzaW9uOworY2xhc3MgUmVtb3RlQ29tbWFuZExpc3RlbmVyOworCitjbGFzcyBQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbk1hbmFnZXIgOiBwcml2YXRlIFJlbW90ZUNvbW1hbmRMaXN0ZW5lckNsaWVudCwg
cHJpdmF0ZSBTeXN0ZW1TbGVlcExpc3RlbmVyOjpDbGllbnQsIHByaXZhdGUgQXVkaW9IYXJkd2Fy
ZUxpc3RlbmVyOjpDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGlj
OgorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIm
IHNoYXJlZE1hbmFnZXIoKTsKKyAgICB2aXJ0dWFsIH5QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFn
ZXIoKSB7IH0KKworICAgIGJvb2wgaGFzKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUp
IGNvbnN0OworICAgIGludCBjb3VudChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlKSBj
b25zdDsKKyAgICBib29sIGFjdGl2ZUF1ZGlvU2Vzc2lvblJlcXVpcmVkKCkgY29uc3Q7CisKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGJlZ2luSW50ZXJydXB0aW9uKFBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpJbnRlcnJ1cHRpb25UeXBlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGVuZEludGVy
cnVwdGlvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6RW5kSW50ZXJydXB0aW9uRmxhZ3MpOworCisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQoKSBj
b25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGxpY2F0aW9uV2lsbEVudGVyQmFja2dy
b3VuZCgpIGNvbnN0OworCisgICAgZW51bSBTZXNzaW9uUmVzdHJpY3Rpb25GbGFncyB7CisgICAg
ICAgIE5vUmVzdHJpY3Rpb25zID0gMCwKKyAgICAgICAgQ29uY3VycmVudFBsYXliYWNrTm90UGVy
bWl0dGVkID0gMSA8PCAwLAorICAgICAgICBJbmxpbmVWaWRlb1BsYXliYWNrUmVzdHJpY3RlZCA9
IDEgPDwgMSwKKyAgICAgICAgTWV0YWRhdGFQcmVsb2FkaW5nTm90UGVybWl0dGVkID0gMSA8PCAy
LAorICAgICAgICBBdXRvUHJlbG9hZGluZ05vdFBlcm1pdHRlZCA9IDEgPDwgMywKKyAgICAgICAg
QmFja2dyb3VuZFByb2Nlc3NQbGF5YmFja1Jlc3RyaWN0ZWQgPSAxIDw8IDQsCisgICAgICAgIEJh
Y2tncm91bmRUYWJQbGF5YmFja1Jlc3RyaWN0ZWQgPSAxIDw8IDUsCisgICAgICAgIEludGVycnVw
dGVkUGxheWJhY2tOb3RQZXJtaXR0ZWQgPSAxIDw8IDYsCisgICAgfTsKKyAgICB0eXBlZGVmIHVu
c2lnbmVkIFNlc3Npb25SZXN0cmljdGlvbnM7CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFk
ZFJlc3RyaWN0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUsIFNlc3Npb25SZXN0
cmljdGlvbnMpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlUmVzdHJpY3Rpb24oUGxh
dGZvcm1NZWRpYVNlc3Npb246Ok1lZGlhVHlwZSwgU2Vzc2lvblJlc3RyaWN0aW9ucyk7CisgICAg
V0VCQ09SRV9FWFBPUlQgU2Vzc2lvblJlc3RyaWN0aW9ucyByZXN0cmljdGlvbnMoUGxhdGZvcm1N
ZWRpYVNlc3Npb246Ok1lZGlhVHlwZSk7CisgICAgdmlydHVhbCB2b2lkIHJlc2V0UmVzdHJpY3Rp
b25zKCk7CisKKyAgICB2aXJ0dWFsIGJvb2wgc2Vzc2lvbldpbGxCZWdpblBsYXliYWNrKFBsYXRm
b3JtTWVkaWFTZXNzaW9uJik7CisgICAgdmlydHVhbCB2b2lkIHNlc3Npb25XaWxsRW5kUGxheWJh
Y2soUGxhdGZvcm1NZWRpYVNlc3Npb24mKTsKKworICAgIGJvb2wgc2Vzc2lvblJlc3RyaWN0c0lu
bGluZVZpZGVvUGxheWJhY2soY29uc3QgUGxhdGZvcm1NZWRpYVNlc3Npb24mKSBjb25zdDsKKwor
ICAgIHZpcnR1YWwgYm9vbCBzZXNzaW9uQ2FuTG9hZE1lZGlhKGNvbnN0IFBsYXRmb3JtTWVkaWFT
ZXNzaW9uJikgY29uc3Q7CisKKyNpZiBQTEFURk9STShJT1MpCisgICAgdmlydHVhbCB2b2lkIGNv
bmZpZ3VyZVdpcmVMZXNzVGFyZ2V0TW9uaXRvcmluZygpIHsgfQorICAgIHZpcnR1YWwgYm9vbCBo
YXNXaXJlbGVzc1RhcmdldHNBdmFpbGFibGUoKSB7IHJldHVybiBmYWxzZTsgfQorI2VuZGlmCisK
KyAgICB2b2lkIHNldEN1cnJlbnRTZXNzaW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uJik7CisgICAg
UGxhdGZvcm1NZWRpYVNlc3Npb24qIGN1cnJlbnRTZXNzaW9uKCk7CisKK3Byb3RlY3RlZDoKKyAg
ICBmcmllbmQgY2xhc3MgUGxhdGZvcm1NZWRpYVNlc3Npb247CisgICAgZXhwbGljaXQgUGxhdGZv
cm1NZWRpYVNlc3Npb25NYW5hZ2VyKCk7CisKKyAgICB2b2lkIGFkZFNlc3Npb24oUGxhdGZvcm1N
ZWRpYVNlc3Npb24mKTsKKyAgICB2b2lkIHJlbW92ZVNlc3Npb24oUGxhdGZvcm1NZWRpYVNlc3Np
b24mKTsKKworICAgIFZlY3RvcjxQbGF0Zm9ybU1lZGlhU2Vzc2lvbio+IHNlc3Npb25zKCkgeyBy
ZXR1cm4gbV9zZXNzaW9uczsgfQorCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBJbnRlcm5h
bHM7CisKKyAgICB2b2lkIHVwZGF0ZVNlc3Npb25TdGF0ZSgpOworCisgICAgLy8gUmVtb3RlQ29t
bWFuZExpc3RlbmVyQ2xpZW50CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGRpZFJl
Y2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29u
dHJvbENvbW1hbmRUeXBlKSBvdmVycmlkZTsKKworICAgIC8vIEF1ZGlvSGFyZHdhcmVMaXN0ZW5l
ckNsaWVudAorICAgIHZpcnR1YWwgdm9pZCBhdWRpb0hhcmR3YXJlRGlkQmVjb21lQWN0aXZlKCkg
b3ZlcnJpZGUgeyB9CisgICAgdmlydHVhbCB2b2lkIGF1ZGlvSGFyZHdhcmVEaWRCZWNvbWVJbmFj
dGl2ZSgpIG92ZXJyaWRlIHsgfQorICAgIHZpcnR1YWwgdm9pZCBhdWRpb091dHB1dERldmljZUNo
YW5nZWQoKSBvdmVycmlkZTsKKworICAgIC8vIFN5c3RlbVNsZWVwTGlzdGVuZXIKKyAgICB2aXJ0
dWFsIHZvaWQgc3lzdGVtV2lsbFNsZWVwKCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHN5
c3RlbURpZFdha2UoKSBvdmVycmlkZTsKKworICAgIFNlc3Npb25SZXN0cmljdGlvbnMgbV9yZXN0
cmljdGlvbnNbUGxhdGZvcm1NZWRpYVNlc3Npb246OldlYkF1ZGlvICsgMV07CisgICAgVmVjdG9y
PFBsYXRmb3JtTWVkaWFTZXNzaW9uKj4gbV9zZXNzaW9uczsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
UmVtb3RlQ29tbWFuZExpc3RlbmVyPiBtX3JlbW90ZUNvbW1hbmRMaXN0ZW5lcjsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8U3lzdGVtU2xlZXBMaXN0ZW5lcj4gbV9zeXN0ZW1TbGVlcExpc3RlbmVyOwor
ICAgIFJlZlB0cjxBdWRpb0hhcmR3YXJlTGlzdGVuZXI+IG1fYXVkaW9IYXJkd2FyZUxpc3RlbmVy
OworCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElP
UykKKyAgICBSZWZQdHI8TWVkaWFQbGF5YmFja1RhcmdldD4gbV9wbGF5YmFja1RhcmdldDsKKyAg
ICBib29sIG1fY2FuUGxheVRvVGFyZ2V0IHsgZmFsc2UgfTsKKyNlbmRpZgorCisgICAgYm9vbCBt
X2ludGVycnVwdGVkIHsgZmFsc2UgfTsKK307CisKK30KKworI2VuZGlmIC8vIFBsYXRmb3JtTWVk
aWFTZXNzaW9uTWFuYWdlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5hZ2VySU9TLm1tCmluZGV4IDYxNzU1Y2VmMzYz
YjNjZjBkYzk5NDUzNjUwYzcyNWEzYmE5OTUzMDAuLjU0NGZlZWU0ZTQ3NWE2Mzc1NzdlN2I3MTY0
MTQyYjlmZWFmZjE2YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L2lvcy9NZWRpYVNlc3Npb25NYW5hZ2VySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5hZ2VySU9TLm1tCkBAIC0xMTAsMTQgKzExMCwx
NCBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1N
ZWRpYVNlc3Npb25NYW5hZ2VyJiBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkK
K1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlciYgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2Vy
OjpzaGFyZWRNYW5hZ2VyKCkKIHsKICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwo
TWVkaWFTZXNzaW9uTWFuYWdlcmlPUywgbWFuYWdlciwgKCkpOwogICAgIHJldHVybiBtYW5hZ2Vy
OwogfQogCiBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjpNZWRpYVNlc3Npb25NYW5hZ2VyaU9TKCkK
LSAgICA6TWVkaWFTZXNzaW9uTWFuYWdlcigpCisgICAgOiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1h
bmFnZXIoKQogICAgICwgbV9vYmpjT2JzZXJ2ZXIoYWRvcHROUyhbW1dlYk1lZGlhU2Vzc2lvbkhl
bHBlciBhbGxvY10gaW5pdFdpdGhDYWxsYmFjazp0aGlzXSkpCiB7CiAgICAgcmVzZXRSZXN0cmlj
dGlvbnMoKTsKQEAgLTEzNCw3ICsxMzQsNyBAQCB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6
OnJlc2V0UmVzdHJpY3Rpb25zKCkKIAogICAgIExPRyhNZWRpYSwgIk1lZGlhU2Vzc2lvbk1hbmFn
ZXJpT1M6OnJlc2V0UmVzdHJpY3Rpb25zIik7CiAKLSAgICBNZWRpYVNlc3Npb25NYW5hZ2VyOjpy
ZXNldFJlc3RyaWN0aW9ucygpOworICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6cmVz
ZXRSZXN0cmljdGlvbnMoKTsKIAogICAgIHN0YXRpYyB3a0RldmljZUNsYXNzIGRldmljZUNsYXNz
ID0gaW9zRGV2aWNlQ2xhc3MoKTsKICAgICBpZiAoZGV2aWNlQ2xhc3MgPT0gd2tEZXZpY2VDbGFz
c2lQaG9uZSB8fCBkZXZpY2VDbGFzcyA9PSB3a0RldmljZUNsYXNzaVBvZCkKQEAgLTE4OCw3ICsx
ODgsNyBAQCB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OmNvbmZpZ3VyZVdpcmVMZXNzVGFy
Z2V0TW9uaXRvcmluZygpCiAKIGJvb2wgTWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6c2Vzc2lvbldp
bGxCZWdpblBsYXliYWNrKFBsYXRmb3JtTWVkaWFTZXNzaW9uJiBzZXNzaW9uKQogewotICAgIGlm
ICghTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2Vzc2lvbldpbGxCZWdpblBsYXliYWNrKHNlc3Npb24p
KQorICAgIGlmICghUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpzZXNzaW9uV2lsbEJlZ2lu
UGxheWJhY2soc2Vzc2lvbikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHVwZGF0ZU5v
d1BsYXlpbmdJbmZvKCk7CkBAIC0xOTcsNyArMTk3LDcgQEAgYm9vbCBNZWRpYVNlc3Npb25NYW5h
Z2VyaU9TOjpzZXNzaW9uV2lsbEJlZ2luUGxheWJhY2soUGxhdGZvcm1NZWRpYVNlc3Npb24mIHNl
c3MKICAgICAKIHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6c2Vzc2lvbldpbGxFbmRQbGF5
YmFjayhQbGF0Zm9ybU1lZGlhU2Vzc2lvbiYgc2Vzc2lvbikKIHsKLSAgICBNZWRpYVNlc3Npb25N
YW5hZ2VyOjpzZXNzaW9uV2lsbEVuZFBsYXliYWNrKHNlc3Npb24pOworICAgIFBsYXRmb3JtTWVk
aWFTZXNzaW9uTWFuYWdlcjo6c2Vzc2lvbldpbGxFbmRQbGF5YmFjayhzZXNzaW9uKTsKICAgICB1
cGRhdGVOb3dQbGF5aW5nSW5mbygpOwogfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRGVzdGluYXRpb25NYWMuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRGVzdGluYXRpb25NYWMuY3BwCmluZGV4IGRj
M2ExYjU0ZWQ0M2I3NDI4OThlNTkzOWE3YWRjZmMzOGY0ZTE1M2MuLjY4MzQ0ZTA3ZDk5NjIxYTdj
Y2E1YzNmYWU4OTVhZGIyNjBlOGUxYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5jcHAKQEAgLTM4LDcgKzM4
LDcgQEAKICNpbmNsdWRlICJBdWRpb1Nlc3Npb24uaCIKICNpbmNsdWRlICJGbG9hdENvbnZlcnNp
b24uaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCi0jaW5jbHVkZSAiTWVkaWFTZXNzaW9uTWFuYWdl
ci5oIgorI2luY2x1ZGUgIlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oIgogI2luY2x1ZGUg
IlZlY3Rvck1hdGguaCIKICNpbmNsdWRlIDxDb3JlQXVkaW8vQXVkaW9IYXJkd2FyZS5oPgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvTWVkaWFTZXNzaW9u
TWFuYWdlck1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvTWVkaWFT
ZXNzaW9uTWFuYWdlck1hYy5jcHAKaW5kZXggZTI3NDQxODgwOWI3ZDQ1MTUyZmZhM2JkYWMwOWY2
NGU2MjliNDE3YS4uYjM4OWVlZGZhZWUwNjI0OTRiMzlkMTNiNGM3ZDM4ZjE0MWQ2NGI2NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL01lZGlhU2Vzc2lvbk1h
bmFnZXJNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9NZWRp
YVNlc3Npb25NYW5hZ2VyTWFjLmNwcApAQCAtMjQsNyArMjQsNyBAQAogICovCiAKICNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJNZWRpYVNlc3Npb25NYW5hZ2VyLmgiCisjaW5jbHVkZSAi
UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmgiCiAKICNpZiBVU0UoQVVESU9fU0VTU0lPTikK
IApAQCAtMzcsOSArMzcsOSBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHN0YXRpYyBjb25z
dCBzaXplX3Qga1dlYkF1ZGlvQnVmZmVyU2l6ZSA9IDEyODsKIHN0YXRpYyBjb25zdCBzaXplX3Qg
a0xvd1Bvd2VyVmlkZW9CdWZmZXJTaXplID0gNDA5NjsKIAotdm9pZCBNZWRpYVNlc3Npb25NYW5h
Z2VyOjp1cGRhdGVTZXNzaW9uU3RhdGUoKQordm9pZCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFn
ZXI6OnVwZGF0ZVNlc3Npb25TdGF0ZSgpCiB7Ci0gICAgTE9HKE1lZGlhLCAiTWVkaWFTZXNzaW9u
TWFuYWdlcjo6dXBkYXRlU2Vzc2lvblN0YXRlKCkgLSB0eXBlczogVmlkZW8oJWQpLCBBdWRpbygl
ZCksIFdlYkF1ZGlvKCVkKSIsIGNvdW50KFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpWaWRlbyksIGNv
dW50KFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpBdWRpbyksIGNvdW50KFBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpXZWJBdWRpbykpOworICAgIExPRyhNZWRpYSwgIlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFu
YWdlcjo6dXBkYXRlU2Vzc2lvblN0YXRlKCkgLSB0eXBlczogVmlkZW8oJWQpLCBBdWRpbyglZCks
IFdlYkF1ZGlvKCVkKSIsIGNvdW50KFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpWaWRlbyksIGNvdW50
KFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpBdWRpbyksIGNvdW50KFBsYXRmb3JtTWVkaWFTZXNzaW9u
OjpXZWJBdWRpbykpOwogCiAgICAgaWYgKGhhcyhQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6V2ViQXVk
aW8pKQogICAgICAgICBBdWRpb1Nlc3Npb246OnNoYXJlZFNlc3Npb24oKS5zZXRQcmVmZXJyZWRC
dWZmZXJTaXplKGtXZWJBdWRpb0J1ZmZlclNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwCmluZGV4IGU1N2RjMTljMmY5YWVkNTI1NjEyNzgyZDNmMDI4OGRjMTQwN2I3ZjQuLjJk
MjlkYjc1Yjc4ZDc1OGRjNDAwMDY0YzIwOTkyZTM5OTk4ZDcwOTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5jcHAKQEAgLTc5LDcgKzc5LDYgQEAKICNpbmNsdWRlICJNYWluRnJhbWUu
aCIKICNpbmNsdWRlICJNYWxsb2NTdGF0aXN0aWNzLmgiCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXIu
aCIKLSNpbmNsdWRlICJNZWRpYVNlc3Npb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiTWVtb3J5Q2Fj
aGUuaCIKICNpbmNsdWRlICJNZW1vcnlJbmZvLmgiCiAjaW5jbHVkZSAiTWljcm9UYXNrLmgiCkBA
IC04OCw2ICs4Nyw3IEBACiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBhZ2VDYWNoZS5o
IgogI2luY2x1ZGUgIlBhZ2VPdmVybGF5LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1NZWRpYVNlc3Np
b25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiUHJpbnRDb250ZXh0LmgiCiAjaW5jbHVkZSAiUHNldWRv
RWxlbWVudC5oIgogI2luY2x1ZGUgIlJhbmdlLmgiCkBAIC0zMjIsNyArMzIyLDcgQEAgdm9pZCBJ
bnRlcm5hbHM6OnJlc2V0VG9Db25zaXN0ZW50U3RhdGUoUGFnZSogcGFnZSkKICAgICBwYWdlLT5t
YWluRnJhbWUoKS5sb2FkZXIoKS5jbGVhclRlc3RpbmdPdmVycmlkZXMoKTsKICAgICBBcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZTo6c2luZ2xldG9uKCkuc2V0RGVmYXVsdE9yaWdpblF1b3RhKEFwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlOjpub1F1b3RhKCkpOwogI2lmIEVOQUJMRShWSURFTykKLSAgICBN
ZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkucmVzZXRSZXN0cmljdGlvbnMoKTsK
KyAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5yZXNldFJl
c3RyaWN0aW9ucygpOwogI2VuZGlmCiAjaWYgSEFWRShBQ0NFU1NJQklMSVRZKQogICAgIEFYT2Jq
ZWN0Q2FjaGU6OnNldEVuaGFuY2VkVXNlckludGVyZmFjZUFjY2Vzc2liaWxpdHkoZmFsc2UpOwpA
QCAtMjU5MSw3ICsyNTkxLDcgQEAgVmVjdG9yPFN0cmluZz4gSW50ZXJuYWxzOjpidWZmZXJlZFNh
bXBsZXNGb3JUcmFja0lEKFNvdXJjZUJ1ZmZlciogYnVmZmVyLCBjb25zdAogI2lmIEVOQUJMRShW
SURFTykKIHZvaWQgSW50ZXJuYWxzOjpiZWdpbk1lZGlhU2Vzc2lvbkludGVycnVwdGlvbigpCiB7
Ci0gICAgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLmJlZ2luSW50ZXJydXB0
aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTeXN0ZW1JbnRlcnJ1cHRpb24pOworICAgIFBsYXRm
b3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLmJlZ2luSW50ZXJydXB0aW9u
KFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTeXN0ZW1JbnRlcnJ1cHRpb24pOwogfQogCiB2b2lkIElu
dGVybmFsczo6ZW5kTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uKGNvbnN0IFN0cmluZyYgZmxhZ3NT
dHJpbmcpCkBAIC0yNjAxLDE3ICsyNjAxLDE3IEBAIHZvaWQgSW50ZXJuYWxzOjplbmRNZWRpYVNl
c3Npb25JbnRlcnJ1cHRpb24oY29uc3QgU3RyaW5nJiBmbGFnc1N0cmluZykKICAgICBpZiAoZXF1
YWxJZ25vcmluZ0Nhc2UoZmxhZ3NTdHJpbmcsICJNYXlSZXN1bWVQbGF5aW5nIikpCiAgICAgICAg
IGZsYWdzID0gUGxhdGZvcm1NZWRpYVNlc3Npb246Ok1heVJlc3VtZVBsYXlpbmc7CiAgICAgCi0g
ICAgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLmVuZEludGVycnVwdGlvbihm
bGFncyk7CisgICAgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCku
ZW5kSW50ZXJydXB0aW9uKGZsYWdzKTsKIH0KIAogdm9pZCBJbnRlcm5hbHM6OmFwcGxpY2F0aW9u
V2lsbEVudGVyRm9yZWdyb3VuZCgpIGNvbnN0CiB7Ci0gICAgTWVkaWFTZXNzaW9uTWFuYWdlcjo6
c2hhcmVkTWFuYWdlcigpLmFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZCgpOworICAgIFBs
YXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLmFwcGxpY2F0aW9uV2ls
bEVudGVyRm9yZWdyb3VuZCgpOwogfQogCiB2b2lkIEludGVybmFsczo6YXBwbGljYXRpb25XaWxs
RW50ZXJCYWNrZ3JvdW5kKCkgY29uc3QKIHsKLSAgICBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFy
ZWRNYW5hZ2VyKCkuYXBwbGljYXRpb25XaWxsRW50ZXJCYWNrZ3JvdW5kKCk7CisgICAgUGxhdGZv
cm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuYXBwbGljYXRpb25XaWxsRW50
ZXJCYWNrZ3JvdW5kKCk7CiB9CiAKIHZvaWQgSW50ZXJuYWxzOjpzZXRNZWRpYVNlc3Npb25SZXN0
cmljdGlvbnMoY29uc3QgU3RyaW5nJiBtZWRpYVR5cGVTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVz
dHJpY3Rpb25zU3RyaW5nLCBFeGNlcHRpb25Db2RlJiBlYykKQEAgLTI2MjgsMzAgKzI2MjgsMzAg
QEAgdm9pZCBJbnRlcm5hbHM6OnNldE1lZGlhU2Vzc2lvblJlc3RyaWN0aW9ucyhjb25zdCBTdHJp
bmcmIG1lZGlhVHlwZVN0cmluZywgY29uc3QKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IE1lZGlhU2Vzc2lvbk1hbmFnZXI6OlNlc3Npb25SZXN0cmljdGlvbnMgcmVzdHJpY3Rpb25zID0g
TWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLnJlc3RyaWN0aW9ucyhtZWRpYVR5
cGUpOwotICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5yZW1vdmVSZXN0
cmljdGlvbihtZWRpYVR5cGUsIHJlc3RyaWN0aW9ucyk7CisgICAgUGxhdGZvcm1NZWRpYVNlc3Np
b25NYW5hZ2VyOjpTZXNzaW9uUmVzdHJpY3Rpb25zIHJlc3RyaWN0aW9ucyA9IFBsYXRmb3JtTWVk
aWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLnJlc3RyaWN0aW9ucyhtZWRpYVR5cGUp
OworICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLnJlbW92
ZVJlc3RyaWN0aW9uKG1lZGlhVHlwZSwgcmVzdHJpY3Rpb25zKTsKIAotICAgIHJlc3RyaWN0aW9u
cyA9IE1lZGlhU2Vzc2lvbk1hbmFnZXI6Ok5vUmVzdHJpY3Rpb25zOworICAgIHJlc3RyaWN0aW9u
cyA9IFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6Tm9SZXN0cmljdGlvbnM7CiAKICAgICBW
ZWN0b3I8U3RyaW5nPiByZXN0cmljdGlvbnNBcnJheTsKICAgICByZXN0cmljdGlvbnNTdHJpbmcu
c3BsaXQoJywnLCBmYWxzZSwgcmVzdHJpY3Rpb25zQXJyYXkpOwogICAgIGZvciAoYXV0byYgcmVz
dHJpY3Rpb25TdHJpbmcgOiByZXN0cmljdGlvbnNBcnJheSkgewogICAgICAgICBpZiAoZXF1YWxJ
Z25vcmluZ0Nhc2UocmVzdHJpY3Rpb25TdHJpbmcsICJDb25jdXJyZW50UGxheWJhY2tOb3RQZXJt
aXR0ZWQiKSkKLSAgICAgICAgICAgIHJlc3RyaWN0aW9ucyB8PSBNZWRpYVNlc3Npb25NYW5hZ2Vy
OjpDb25jdXJyZW50UGxheWJhY2tOb3RQZXJtaXR0ZWQ7CisgICAgICAgICAgICByZXN0cmljdGlv
bnMgfD0gUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpDb25jdXJyZW50UGxheWJhY2tOb3RQ
ZXJtaXR0ZWQ7CiAgICAgICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShyZXN0cmljdGlvblN0cmlu
ZywgIklubGluZVZpZGVvUGxheWJhY2tSZXN0cmljdGVkIikpCi0gICAgICAgICAgICByZXN0cmlj
dGlvbnMgfD0gTWVkaWFTZXNzaW9uTWFuYWdlcjo6SW5saW5lVmlkZW9QbGF5YmFja1Jlc3RyaWN0
ZWQ7CisgICAgICAgICAgICByZXN0cmljdGlvbnMgfD0gUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5h
Z2VyOjpJbmxpbmVWaWRlb1BsYXliYWNrUmVzdHJpY3RlZDsKICAgICAgICAgaWYgKGVxdWFsSWdu
b3JpbmdDYXNlKHJlc3RyaWN0aW9uU3RyaW5nLCAiTWV0YWRhdGFQcmVsb2FkaW5nTm90UGVybWl0
dGVkIikpCi0gICAgICAgICAgICByZXN0cmljdGlvbnMgfD0gTWVkaWFTZXNzaW9uTWFuYWdlcjo6
TWV0YWRhdGFQcmVsb2FkaW5nTm90UGVybWl0dGVkOworICAgICAgICAgICAgcmVzdHJpY3Rpb25z
IHw9IFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6TWV0YWRhdGFQcmVsb2FkaW5nTm90UGVy
bWl0dGVkOwogICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UocmVzdHJpY3Rpb25TdHJpbmcs
ICJBdXRvUHJlbG9hZGluZ05vdFBlcm1pdHRlZCIpKQotICAgICAgICAgICAgcmVzdHJpY3Rpb25z
IHw9IE1lZGlhU2Vzc2lvbk1hbmFnZXI6OkF1dG9QcmVsb2FkaW5nTm90UGVybWl0dGVkOworICAg
ICAgICAgICAgcmVzdHJpY3Rpb25zIHw9IFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6QXV0
b1ByZWxvYWRpbmdOb3RQZXJtaXR0ZWQ7CiAgICAgICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShy
ZXN0cmljdGlvblN0cmluZywgIkJhY2tncm91bmRQcm9jZXNzUGxheWJhY2tSZXN0cmljdGVkIikp
Ci0gICAgICAgICAgICByZXN0cmljdGlvbnMgfD0gTWVkaWFTZXNzaW9uTWFuYWdlcjo6QmFja2dy
b3VuZFByb2Nlc3NQbGF5YmFja1Jlc3RyaWN0ZWQ7CisgICAgICAgICAgICByZXN0cmljdGlvbnMg
fD0gUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpCYWNrZ3JvdW5kUHJvY2Vzc1BsYXliYWNr
UmVzdHJpY3RlZDsKICAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHJlc3RyaWN0aW9uU3Ry
aW5nLCAiQmFja2dyb3VuZFRhYlBsYXliYWNrUmVzdHJpY3RlZCIpKQotICAgICAgICAgICAgcmVz
dHJpY3Rpb25zIHw9IE1lZGlhU2Vzc2lvbk1hbmFnZXI6OkJhY2tncm91bmRUYWJQbGF5YmFja1Jl
c3RyaWN0ZWQ7CisgICAgICAgICAgICByZXN0cmljdGlvbnMgfD0gUGxhdGZvcm1NZWRpYVNlc3Np
b25NYW5hZ2VyOjpCYWNrZ3JvdW5kVGFiUGxheWJhY2tSZXN0cmljdGVkOwogICAgICAgICBpZiAo
ZXF1YWxJZ25vcmluZ0Nhc2UocmVzdHJpY3Rpb25TdHJpbmcsICJJbnRlcnJ1cHRlZFBsYXliYWNr
Tm90UGVybWl0dGVkIikpCi0gICAgICAgICAgICByZXN0cmljdGlvbnMgfD0gTWVkaWFTZXNzaW9u
TWFuYWdlcjo6SW50ZXJydXB0ZWRQbGF5YmFja05vdFBlcm1pdHRlZDsKKyAgICAgICAgICAgIHJl
c3RyaWN0aW9ucyB8PSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OkludGVycnVwdGVkUGxh
eWJhY2tOb3RQZXJtaXR0ZWQ7CiAgICAgfQotICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJl
ZE1hbmFnZXIoKS5hZGRSZXN0cmljdGlvbihtZWRpYVR5cGUsIHJlc3RyaWN0aW9ucyk7CisgICAg
UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuYWRkUmVzdHJpY3Rp
b24obWVkaWFUeXBlLCByZXN0cmljdGlvbnMpOwogfQogCiB2b2lkIEludGVybmFsczo6c2V0TWVk
aWFFbGVtZW50UmVzdHJpY3Rpb25zKEhUTUxNZWRpYUVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFN0
cmluZyYgcmVzdHJpY3Rpb25zU3RyaW5nLCBFeGNlcHRpb25Db2RlJiBlYykKQEAgLTI3MTgsNyAr
MjcxOCw3IEBAIHZvaWQgSW50ZXJuYWxzOjpwb3N0UmVtb3RlQ29udHJvbENvbW1hbmQoY29uc3Qg
U3RyaW5nJiBjb21tYW5kU3RyaW5nLCBFeGNlcHRpb25DCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAgICAgCi0gICAgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLmRpZFJlY2Vp
dmVSZW1vdGVDb250cm9sQ29tbWFuZChjb21tYW5kKTsKKyAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lv
bk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5kaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQo
Y29tbWFuZCk7CiB9CiAKIGJvb2wgSW50ZXJuYWxzOjplbGVtZW50SXNCbG9ja2luZ0Rpc3BsYXlT
bGVlcChFbGVtZW50KiBlbGVtZW50KSBjb25zdApAQCAtMjc1OSwxNCArMjc1OSwxNCBAQCB2b2lk
IEludGVybmFsczo6c2V0QXVkaW9Db250ZXh0UmVzdHJpY3Rpb25zKEF1ZGlvQ29udGV4dCogY29u
dGV4dCwgY29uc3QgU3RyaW5nCiB2b2lkIEludGVybmFsczo6c2ltdWxhdGVTeXN0ZW1TbGVlcCgp
IGNvbnN0CiB7CiAjaWYgRU5BQkxFKFZJREVPKQotICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNo
YXJlZE1hbmFnZXIoKS5zeXN0ZW1XaWxsU2xlZXAoKTsKKyAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lv
bk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5zeXN0ZW1XaWxsU2xlZXAoKTsKICNlbmRpZgogfQog
CiB2b2lkIEludGVybmFsczo6c2ltdWxhdGVTeXN0ZW1XYWtlKCkgY29uc3QKIHsKICNpZiBFTkFC
TEUoVklERU8pCi0gICAgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLnN5c3Rl
bURpZFdha2UoKTsKKyAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFn
ZXIoKS5zeXN0ZW1EaWRXYWtlKCk7CiAjZW5kaWYKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>254296</attachid>
            <date>2015-06-04 13:54:48 -0700</date>
            <delta_ts>2015-06-04 15:37:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-145648-20150604135426.patch</filename>
            <type>text/plain</type>
            <size>67199</size>
            <attacher name="Matt Rajca">mrajca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg1MjAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjljYzA4MmY3M2IyYWM0
ZjRkMzQ5NWQxZDE4NmU2NmFhOTg0ZWJmZS4uMGNkNTQ0ZjY4YzRjMjJjZDIxMjI0MmRjZjA2Nzc5
YzY1ZWJkZTJiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDE1LTA2LTA0ICBNYXR0
IFJhamNhICA8bXJhamNhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgTWVkaWFTZXNzaW9u
TWFuYWdlciB0byBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIgZm9yIGNvbnNpc3RlbmN5IHdp
dGggUGxhdGZvcm1NZWRpYVNlc3Npb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNDU2NDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2o6CisgICAg
ICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAq
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBodG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAqIGh0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVsZW1lbnRTZXNzaW9uOjplZmZlY3RpdmVQcmVsb2Fk
Rm9yRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVsZW1lbnRTZXNzaW9uOjpyZXF1
aXJlc0Z1bGxzY3JlZW5Gb3JWaWRlb1BsYXliYWNrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRp
by9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6UGxhdGZvcm1NZWRpYVNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6UGxh
dGZvcm1NZWRpYVNlc3Npb246On5QbGF0Zm9ybU1lZGlhU2Vzc2lvbik6CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Y2xpZW50V2lsbEJlZ2luUGxheWJhY2spOgorICAg
ICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb246OmNsaWVudFdpbGxQYXVzZVBsYXli
YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpjbGllbnREYXRh
QnVmZmVyaW5nVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vz
c2lvbjo6dXBkYXRlQ2xpZW50RGF0YUJ1ZmZlcmluZyk6CisgICAgICAgICogcGxhdGZvcm0vYXVk
aW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwLgorICAgICAgICAo
V2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6UGxhdGZvcm1NZWRp
YVNlc3Npb25NYW5hZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9u
TWFuYWdlcjo6cmVzZXRSZXN0cmljdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1N
ZWRpYVNlc3Npb25NYW5hZ2VyOjpoYXMpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRp
YVNlc3Npb25NYW5hZ2VyOjphY3RpdmVBdWRpb1Nlc3Npb25SZXF1aXJlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNvdW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6YmVnaW5JbnRlcnJ1cHRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjplbmRJbnRlcnJ1
cHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjph
ZGRTZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdl
cjo6cmVtb3ZlU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lv
bk1hbmFnZXI6OmFkZFJlc3RyaWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVk
aWFTZXNzaW9uTWFuYWdlcjo6cmVtb3ZlUmVzdHJpY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpyZXN0cmljdGlvbnMpOgorICAgICAgICAoV2Vi
Q29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpzZXNzaW9uV2lsbEJlZ2luUGxheWJh
Y2spOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpzZXNz
aW9uV2lsbEVuZFBsYXliYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNz
aW9uTWFuYWdlcjo6c2V0Q3VycmVudFNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpjdXJyZW50U2Vzc2lvbik6CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNlc3Npb25SZXN0cmljdHNJbmxpbmVWaWRl
b1BsYXliYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdl
cjo6c2Vzc2lvbkNhbkxvYWRNZWRpYSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlh
U2Vzc2lvbk1hbmFnZXI6OmFwcGxpY2F0aW9uV2lsbEVudGVyQmFja2dyb3VuZCk6CisgICAgICAg
IChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OmFwcGxpY2F0aW9uV2lsbEVu
dGVyRm9yZWdyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1h
bmFnZXI6OnVwZGF0ZVNlc3Npb25TdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbk1hbmFnZXI6OmRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZCk6CisgICAg
ICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnN5c3RlbVdpbGxTbGVl
cCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnN5c3Rl
bURpZFdha2UpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2Vy
OjphdWRpb091dHB1dERldmljZUNoYW5nZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1Bs
YXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uTWFuYWdlci5oLgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjp+UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2Vy
KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6Y29uZmln
dXJlV2lyZUxlc3NUYXJnZXRNb25pdG9yaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
TWVkaWFTZXNzaW9uTWFuYWdlcjo6aGFzV2lyZWxlc3NUYXJnZXRzQXZhaWxhYmxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2Vzc2lvbnMpOgorICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9hdWRpby9tYWMvTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5jcHA6CisgICAg
ICAgIChQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnVwZGF0ZVNlc3Npb25TdGF0ZSk6Cisg
ICAgICAgIChNZWRpYVNlc3Npb25NYW5hZ2VyOjp1cGRhdGVTZXNzaW9uU3RhdGUpOiBEZWxldGVk
LgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKwogMjAxNS0wNi0wNCAgTXlsZXMg
Qy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gQ2xl
YW4gdXAgbV9mb250IGluc2lkZSBGb250UGxhdGZvcm1EYXRhCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cmlu
ZGV4IGUzYThkOGQ1Zjk5ZTNjM2I3YzZjOTc2ZGU2M2VmYTQyMWFmOTUxNWIuLmE0NTg1MzdhNzBi
NGY0ZjgxOWUxYzA1OTUxN2MxMjA1M2E2YTEyMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0y
MTExLDEwICsyMTExLDEwIEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9hdWRp
by9IUlRGRWxldmF0aW9uLmNwcAogICAgIHBsYXRmb3JtL2F1ZGlvL0hSVEZLZXJuZWwuY3BwCiAg
ICAgcGxhdGZvcm0vYXVkaW8vSFJURlBhbm5lci5jcHAKLSAgICBwbGF0Zm9ybS9hdWRpby9NZWRp
YVNlc3Npb25NYW5hZ2VyLmNwcAogICAgIHBsYXRmb3JtL2F1ZGlvL011bHRpQ2hhbm5lbFJlc2Ft
cGxlci5jcHAKICAgICBwbGF0Zm9ybS9hdWRpby9QYW5uZXIuY3BwCiAgICAgcGxhdGZvcm0vYXVk
aW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uY3BwCisgICAgcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1N
ZWRpYVNlc3Npb25NYW5hZ2VyLmNwcAogICAgIHBsYXRmb3JtL2F1ZGlvL1JldmVyYi5jcHAKICAg
ICBwbGF0Zm9ybS9hdWRpby9SZXZlcmJBY2N1bXVsYXRpb25CdWZmZXIuY3BwCiAgICAgcGxhdGZv
cm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
dmN4cHJvai9XZWJDb3JlLnZjeHByb2oKaW5kZXggNDZmZjMyZGU2OWUyZDdmMTNmMTY4ZmVkZjQw
NWJkZjBhMTc4MTZlZS4uMmNmZTUzZWMyOGIxZTM5MWQ4NjlhNjE0OTExYzIwYjgzNTFiNGNhNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJv
agorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCkBA
IC03Mzk2LDcgKzczOTYsNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1c
Z3JhcGhpY3NcSVNPVlRUQ3VlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBs
YXRmb3JtXGF1ZGlvXEF1ZGlvU2Vzc2lvbi5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxwbGF0Zm9ybVxhdWRpb1xQbGF0Zm9ybU1lZGlhU2Vzc2lvbi5jcHAiIC8+Ci0gICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxhdWRpb1xNZWRpYVNlc3Npb25NYW5hZ2VyLmNw
cCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGF1ZGlvXFBsYXRmb3Jt
TWVkaWFTZXNzaW9uTWFuYWdlci5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxw
bGF0Zm9ybVxncmFwaGljc1xBTkdMRVdlYktpdEJyaWRnZS5jcHAiIC8+CiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xhdmZvdW5kYXRpb25cY2ZcSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUFWQ0YuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxh
dGZvcm1cZ3JhcGhpY3NcYXZmb3VuZGF0aW9uXGNmXEluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdh
Y3lBVkNGLmNwcCIgLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJv
ai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJv
ai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwppbmRleCBkMmM2ZDFiMTg2OGY5ZDA0NGZmN2ZiMTkw
NDM2MTJhNGY1ZThhZTgzLi5iYmRhZTYwMzQ1YTc2M2I2OWQyZmFlZWE3ZmE4OTE1M2NjZDUxZTY1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hw
cm9qLmZpbHRlcnMKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUu
dmN4cHJvai5maWx0ZXJzCkBAIC03MDU0LDcgKzcwNTQsNyBAQAogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5ccGxhdGZvcm1cYXVkaW9cUGxhdGZvcm1NZWRpYVNlc3Npb24uY3BwIj4KICAgICAg
IDxGaWx0ZXI+cGxhdGZvcm1cYXVkaW88L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KLSAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGF1ZGlvXE1lZGlhU2Vzc2lvbk1hbmFnZXIu
Y3BwIj4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGF1ZGlvXFBsYXRmb3Jt
TWVkaWFTZXNzaW9uTWFuYWdlci5jcHAiPgogICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxhdWRpbzwv
RmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9k
dWxlc1xnYW1lcGFkXE5hdmlnYXRvckdhbWVwYWQuY3BwIj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkN2Q1Y2NhYzEzMGI4ZGI4
ZDk4MjA4NjJhZDBkZTg4ZjM0NTY3ZjAxLi41ZWE5YWJmNzNjZDdhMmNlOTIzNGQ4MmE2MDBjMTI1
ODZkNThhY2EyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0zNDksNyArMzQ5LDcgQEAKIAkJMDdGMEI5N0ExQUM1REIzMzAwRTUz
NUQ5IC8qIEFWS2l0U1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwN0YwQjk3OTFBQzVEQjMzMDBFNTM1RDkgLyogQVZLaXRTUEkuaCAqLzsgfTsKIAkJ
MDdGMEI5N0MxQUM1REI0NjAwRTUzNUQ5IC8qIEFWRm91bmRhdGlvblNQSS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdGMEI5N0IxQUM1REI0NjAwRTUz
NUQ5IC8qIEFWRm91bmRhdGlvblNQSS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTA3Rjg3Njg0MUFENTgwRjkwMDkwNTg0OSAvKiBNZWRpYVBsYXli
YWNrVGFyZ2V0Q29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMDdGODc2ODMxQUQ0QTk0NTAwOTA1ODQ5IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
LQkJMDdGOTQ0MTYxODY0RDA0NjAwNUQzMUNCIC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQUU4QzA4MTc0NkI5
NTcwMDUzMkQ3OCAvKiBNZWRpYVNlc3Npb25NYW5hZ2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMDdGOTQ0MTYxODY0RDA0NjAwNUQzMUNCIC8q
IFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBRThDMDgxNzQ2Qjk1NzAwNTMyRDc4IC8qIFBsYXRmb3Jt
TWVkaWFTZXNzaW9uTWFuYWdlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTA3RkJERTJDMThGRUQxNzgwMDFBN0NGRiAvKiBKU0RhdGFDdWVDdXN0
b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdG
QkRFMkIxOEZFRDE3ODAwMUE3Q0ZGIC8qIEpTRGF0YUN1ZUN1c3RvbS5jcHAgKi87IH07CiAJCTA3
RkU5OURDMTg4MDdBN0QwMDI1NjY0OCAvKiBNZWRpYUVsZW1lbnRTZXNzaW9uLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3RkU5OURBMTg4MDdBN0Qw
MDI1NjY0OCAvKiBNZWRpYUVsZW1lbnRTZXNzaW9uLmNwcCAqLzsgfTsKIAkJMDdGRTk5REQxODgw
N0E3RDAwMjU2NjQ4IC8qIE1lZGlhRWxlbWVudFNlc3Npb24uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3RkU5OURCMTg4MDdBN0QwMDI1NjY0OCAvKiBN
ZWRpYUVsZW1lbnRTZXNzaW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTU4MDYsNyArNTgwNiw3IEBACiAJCUNEQUI2RDJFMTdDODE0RUUwMEM2
MEIzNCAvKiBKU01lZGlhQ29udHJvbHNIb3N0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDREFCNkQyQzE3QzgxNEVFMDBDNjBCMzQgLyogSlNNZWRpYUNv
bnRyb2xzSG9zdC5oICovOyB9OwogCQlDREFCNkQzMTE3QzkyNTk1MDBDNjBCMzQgLyogVXNlckFn
ZW50U2NyaXB0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0RBQjZEMkYxN0M5MjU5NTAwQzYwQjM0IC8qIFVzZXJBZ2VudFNjcmlwdHMuaCAqLzsgfTsK
IAkJQ0RBQjZEMzIxN0M5MjU5NTAwQzYwQjM0IC8qIFVzZXJBZ2VudFNjcmlwdHNEYXRhLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQUI2RDMwMTdD
OTI1OTUwMEM2MEIzNCAvKiBVc2VyQWdlbnRTY3JpcHRzRGF0YS5jcHAgKi87IH07Ci0JCUNEQUU4
QzA5MTc0NkI5NTcwMDUzMkQ3OCAvKiBNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQUU4QzA3MTc0NkI5NTcwMDUz
MkQ3OCAvKiBNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcCAqLzsgfTsKKwkJQ0RBRThDMDkxNzQ2Qjk1
NzAwNTMyRDc4IC8qIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFFOEMwNzE3NDZCOTU3MDA1MzJE
NzggLyogUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcCAqLzsgfTsKIAkJQ0RCODU5Rjcx
NjBENDhBNDAwRTVCMDdGIC8qIE1lZGlhS2V5RXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RCODU5RjQxNjBENDg5OTAwRTVCMDdGIC8qIE1l
ZGlhS2V5RXZlbnQuY3BwICovOyB9OwogCQlDREI4NTlGQTE2MEQ0OTQ5MDBFNUIwN0YgLyogSlNN
ZWRpYUtleUV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENEQjg1OUY4MTYwRDQ5M0UwMEU1QjA3RiAvKiBKU01lZGlhS2V5RXZlbnQuY3BwICov
OyB9OwogCQlDREJFQUVBQzE5RDkyQjZDMDBCRUJBODggLyogTWVkaWFTZWxlY3Rpb25Hcm91cEFW
Rk9iakMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
REJFQUVBQTE5RDkyQjZDMDBCRUJBODggLyogTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakMubW0g
Ki87IH07CkBAIC0xMzQxMCw4ICsxMzQxMCw4IEBACiAJCUNEQUI2RDJDMTdDODE0RUUwMEM2MEIz
NCAvKiBKU01lZGlhQ29udHJvbHNIb3N0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTTWVkaWFDb250cm9sc0hvc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
Q0RBQjZEMkYxN0M5MjU5NTAwQzYwQjM0IC8qIFVzZXJBZ2VudFNjcmlwdHMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVXNlckFnZW50U2NyaXB0cy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDREFCNkQzMDE3QzkyNTk1MDBDNjBCMzQgLyogVXNlckFnZW50U2Ny
aXB0c0RhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVXNlckFn
ZW50U2NyaXB0c0RhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDREFFOEMw
NzE3NDZCOTU3MDA1MzJENzggLyogTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQ0RBRThDMDgxNzQ2Qjk1NzAwNTMyRDc4IC8qIE1lZGlh
U2Vzc2lvbk1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFT
ZXNzaW9uTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFFOEMwNzE3
NDZCOTU3MDA1MzJENzggLyogUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUU4QzA4MTc0NkI5NTcwMDUz
MkQ3OCAvKiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUNEQjg1OUYyMTYwRDQ4OTkwMEU1QjA3RiAvKiBNZWRpYUtleUVy
cm9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhS2V5RXJyb3IuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RCODU5RjMxNjBENDg5OTAwRTVCMDdGIC8q
IE1lZGlhS2V5RXJyb3IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE1lZGlhS2V5RXJyb3Iu
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREI4NTlGNDE2MEQ0ODk5MDBFNUIw
N0YgLyogTWVkaWFLZXlFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBNZWRpYUtleUV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIz
NTk0LDE0ICsyMzU5NCwxNCBAQAogCQkJCUZEMzE2MDY5MTJCMDI2RjcwMEMxQTM1OSAvKiBIUlRG
S2VybmVsLmggKi8sCiAJCQkJRkQzMTYwNkExMkIwMjZGNzAwQzFBMzU5IC8qIEhSVEZQYW5uZXIu
Y3BwICovLAogCQkJCUZEMzE2MDZCMTJCMDI2RjcwMEMxQTM1OSAvKiBIUlRGUGFubmVyLmggKi8s
Ci0JCQkJQ0RBRThDMDcxNzQ2Qjk1NzAwNTMyRDc4IC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXIuY3Bw
ICovLAotCQkJCUNEQUU4QzA4MTc0NkI5NTcwMDUzMkQ3OCAvKiBNZWRpYVNlc3Npb25NYW5hZ2Vy
LmggKi8sCiAJCQkJRkRCMTcwMDMxNEEyQkFCMjAwQTJCNUQ5IC8qIE11bHRpQ2hhbm5lbFJlc2Ft
cGxlci5jcHAgKi8sCiAJCQkJRkRCMTcwMDQxNEEyQkFCMjAwQTJCNUQ5IC8qIE11bHRpQ2hhbm5l
bFJlc2FtcGxlci5oICovLAogCQkJCUZEMzE2MDZDMTJCMDI2RjcwMEMxQTM1OSAvKiBQYW5uZXIu
Y3BwICovLAogCQkJCUZEMzE2MDZEMTJCMDI2RjcwMEMxQTM1OSAvKiBQYW5uZXIuaCAqLywKIAkJ
CQkwNzBFMDkxQTE4NzVFRjcxMDAzQTFEM0MgLyogUGxhdGZvcm1NZWRpYVNlc3Npb24uY3BwICov
LAogCQkJCTA3MEUwOTE4MTg3NUVEOTMwMDNBMUQzQyAvKiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbi5o
ICovLAorCQkJCUNEQUU4QzA3MTc0NkI5NTcwMDUzMkQ3OCAvKiBQbGF0Zm9ybU1lZGlhU2Vzc2lv
bk1hbmFnZXIuY3BwICovLAorCQkJCUNEQUU4QzA4MTc0NkI5NTcwMDUzMkQ3OCAvKiBQbGF0Zm9y
bU1lZGlhU2Vzc2lvbk1hbmFnZXIuaCAqLywKIAkJCQlGRDMxNjA2RTEyQjAyNkY3MDBDMUEzNTkg
LyogUmV2ZXJiLmNwcCAqLywKIAkJCQlGRDMxNjA2RjEyQjAyNkY3MDBDMUEzNTkgLyogUmV2ZXJi
LmggKi8sCiAJCQkJRkQzMTYwNzAxMkIwMjZGNzAwQzFBMzU5IC8qIFJldmVyYkFjY3VtdWxhdGlv
bkJ1ZmZlci5jcHAgKi8sCkBAIC0yNTg1MCw3ICsyNTg1MCw2IEBACiAJCQkJQ0VFRkNEN0ExOURC
MzFGNzAwMzg3NkQ3IC8qIE1lZGlhUmVzb3VyY2VMb2FkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUNEQkVBRUFEMTlEOTJCNkMwMEJFQkE4OCAvKiBNZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2JqQy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQzkwMjdGNDIxQjFEMEFEMjAwQkZCRkVGIC8qIE1lZGlhU2Vz
c2lvbi5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMDdGOTQ0MTYxODY0RDA0NjAwNUQzMUNCIC8qIE1l
ZGlhU2Vzc2lvbk1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3NjM4QTk5MTg4NDQ4NzIw
MEUxNUExQiAvKiBNZWRpYVNlc3Npb25NYW5hZ2VySU9TLmggaW4gSGVhZGVycyAqLywKIAkJCQlD
RDNBNDk1RjE3QTlEMDFCMDAyNzRFNDIgLyogTWVkaWFTb3VyY2UuaCBpbiBIZWFkZXJzICovLAog
CQkJCUNENjQxRUIzMTgxOEY1RUQwMEVFNEM0MSAvKiBNZWRpYVNvdXJjZVByaXZhdGUuaCBpbiBI
ZWFkZXJzICovLApAQCAtMjYwNzQsNiArMjYwNzMsNyBAQAogCQkJCUY1NDRGNzg5MTVDRkIyQTgw
MEFGMzNBOCAvKiBQbGF0Zm9ybUxvY2FsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0VFRkNEN0Mx
OURCMzNEQzAwMzg3NkQ3IC8qIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMDcwRTA5MTkxODc1RUVGQzAwM0ExRDNDIC8qIFBsYXRmb3JtTWVkaWFTZXNz
aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQkwN0Y5NDQxNjE4NjREMDQ2MDA1RDMxQ0IgLyogUGxh
dGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzI4NzFDMDBC
MjBERUI3MDA0OTAzNUEgLyogUGxhdGZvcm1NZW51RGVzY3JpcHRpb24uaCBpbiBIZWFkZXJzICov
LAogCQkJCTQxQkY3MDEwMEZFODZGNjEwMDVFOERFQyAvKiBQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hh
bm5lbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM1QzQ3NjkwOUFDNEQ0MzAwQTZBQUI0IC8qIFBs
YXRmb3JtTW91c2VFdmVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yOTQzNiw3ICsyOTQzNiw2IEBA
CiAJCQkJQ0VFRkNENzkxOURCMzFGNzAwMzg3NkQ3IC8qIE1lZGlhUmVzb3VyY2VMb2FkZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RCRUFFQUMxOUQ5MkI2QzAwQkVCQTg4IC8qIE1lZGlhU2Vs
ZWN0aW9uR3JvdXBBVkZPYmpDLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQzkwMjdGNDExQjFEMEFE
MjAwQkZCRkVGIC8qIE1lZGlhU2Vzc2lvbi5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlDREFFOEMw
OTE3NDZCOTU3MDA1MzJENzggLyogTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwNzYzOEE5QTE4ODQ0ODcyMDBFMTVBMUIgLyogTWVkaWFTZXNzaW9uTWFuYWdlcklP
Uy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTA3RURDM0VFMUFBQ0I3NUQwMDk4M0VCNSAvKiBNZWRp
YVNlc3Npb25NYW5hZ2VyTWFjLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEM0E0OTVFMTdBOUQw
MUIwMDI3NEU0MiAvKiBNZWRpYVNvdXJjZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI5NjA3LDYg
KzI5NjA2LDcgQEAKIAkJCQlCQ0FBNDg2RjE0QTA1MjUzMDA4OEZBQzQgLyogUGxhdGZvcm1FdmVu
dEZhY3RvcnlNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlGNTQ0Rjc4ODE1Q0ZCMkE4MDBBRjMz
QTggLyogUGxhdGZvcm1Mb2NhbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDcwRTA5MUIxODc1
RUY3MTAwM0ExRDNDIC8qIFBsYXRmb3JtTWVkaWFTZXNzaW9uLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCUNEQUU4QzA5MTc0NkI5NTcwMDUzMkQ3OCAvKiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFn
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDFCRjcwMEYwRkU4NkY2MTAwNUU4REVDIC8qIFBs
YXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUM1Mjc4QjBD
MTdGMjEyRUEwMDNBMjk5OCAvKiBQbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0gaW4gU291cmNlcyAq
LywKIAkJCQlDNTk4OTAyRTE0RTlCMEY4MDBFOEQxOEIgLyogUGxhdGZvcm1QYXN0ZWJvYXJkTWFj
Lm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cAppbmRleCBjMWRiODhkOTVhN2E0YTdlYjgxZDMzMmNhMjlmNmU5NWU2ZGYwYmVlLi5iYTQxMDll
NGRiMDlmOTdmMDA4MGEyZWE4N2RmM2MxOWY1NTc2NTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTY1LDEwICs2NSwxMCBAQAogI2luY2x1ZGUgIk1lZGlh
UGxheWVyLmgiCiAjaW5jbHVkZSAiTWVkaWFRdWVyeUV2YWx1YXRvci5oIgogI2luY2x1ZGUgIk1l
ZGlhUmVzb3VyY2VMb2FkZXIuaCIKLSNpbmNsdWRlICJNZWRpYVNlc3Npb25NYW5hZ2VyLmgiCiAj
aW5jbHVkZSAiTmV0d29ya2luZ0NvbnRleHQuaCIKICNpbmNsdWRlICJQYWdlR3JvdXAuaCIKICNp
bmNsdWRlICJQYWdlVGhyb3R0bGVyLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1NZWRpYVNlc3Npb25N
YW5hZ2VyLmgiCiAjaW5jbHVkZSAiUHJvZ3Jlc3NUcmFja2VyLmgiCiAjaW5jbHVkZSAiUmVuZGVy
TGF5ZXJDb21wb3NpdG9yLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlkZW8uaCIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uY3BwCmluZGV4IDIyNTU4ZTlmYWM5NzRmNjJl
Yjk5YTQ2NTdhMTNiMjVkMTJiZDc1MDUuLjBkNDNmY2Q4ZmU4MzZmN2M1MDVkYTg5YjUzNDdjZDlk
ZGVmYmZjOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vz
c2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNw
cApAQCAtMzgsOCArMzgsOCBAQAogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhU
TUxWaWRlb0VsZW1lbnQuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCi0jaW5jbHVkZSAiTWVkaWFT
ZXNzaW9uTWFuYWdlci5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbk1hbmFnZXIuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5j
bHVkZSAiU291cmNlQnVmZmVyLmgiCiAKQEAgLTIwMyw3ICsyMDMsNyBAQCBib29sIE1lZGlhRWxl
bWVudFNlc3Npb246Omhhc1dpcmVsZXNzUGxheWJhY2tUYXJnZXRzKGNvbnN0IEhUTUxNZWRpYUVs
ZW1lbnQmKSBjbwogewogI2lmIFBMQVRGT1JNKElPUykKICAgICAvLyBGSVhNRTogY29uc29saWRh
dGUgTWFjIGFuZCBpT1MgaW1wbGVtZW50YXRpb25zCi0gICAgbV9oYXNQbGF5YmFja1RhcmdldHMg
PSBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuaGFzV2lyZWxlc3NUYXJnZXRz
QXZhaWxhYmxlKCk7CisgICAgbV9oYXNQbGF5YmFja1RhcmdldHMgPSBQbGF0Zm9ybU1lZGlhU2Vz
c2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5oYXNXaXJlbGVzc1RhcmdldHNBdmFpbGFibGUo
KTsKICNlbmRpZgogCiAgICAgTE9HKE1lZGlhLCAiTWVkaWFFbGVtZW50U2Vzc2lvbjo6aGFzV2ly
ZWxlc3NQbGF5YmFja1RhcmdldHMgLSByZXR1cm5pbmcgJXMiLCBtX2hhc1BsYXliYWNrVGFyZ2V0
cyA/ICJUUlVFIiA6ICJGQUxTRSIpOwpAQCAtMjY4LDcgKzI2OCw3IEBAIHZvaWQgTWVkaWFFbGVt
ZW50U2Vzc2lvbjo6c2V0SGFzUGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlMaXN0ZW5lcnMoY29u
c3QgSFRNTE1lCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIFVOVVNFRF9QQVJBTShlbGVtZW50KTsK
ICAgICBtX2hhc1BsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5TGlzdGVuZXJzID0gaGFzTGlzdGVu
ZXJzOwotICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5jb25maWd1cmVX
aXJlTGVzc1RhcmdldE1vbml0b3JpbmcoKTsKKyAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFn
ZXI6OnNoYXJlZE1hbmFnZXIoKS5jb25maWd1cmVXaXJlTGVzc1RhcmdldE1vbml0b3JpbmcoKTsK
ICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGhhc0xpc3RlbmVycyk7CiAgICAgZWxlbWVudC5kb2N1
bWVudCgpLnBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50U3RhdGVEaWRDaGFuZ2UoKnRoaXMsIGVs
ZW1lbnQubWVkaWFTdGF0ZSgpKTsKQEAgLTMyOCwxMyArMzI4LDEzIEBAIHZvaWQgTWVkaWFFbGVt
ZW50U2Vzc2lvbjo6bWVkaWFTdGF0ZURpZENoYW5nZShjb25zdCBIVE1MTWVkaWFFbGVtZW50JiBl
bGVtZW50LCBNCiAKIE1lZGlhUGxheWVyOjpQcmVsb2FkIE1lZGlhRWxlbWVudFNlc3Npb246OmVm
ZmVjdGl2ZVByZWxvYWRGb3JFbGVtZW50KGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmIGVsZW1lbnQp
IGNvbnN0CiB7Ci0gICAgTWVkaWFTZXNzaW9uTWFuYWdlcjo6U2Vzc2lvblJlc3RyaWN0aW9ucyBy
ZXN0cmljdGlvbnMgPSBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkucmVzdHJp
Y3Rpb25zKG1lZGlhVHlwZSgpKTsKKyAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OlNl
c3Npb25SZXN0cmljdGlvbnMgcmVzdHJpY3Rpb25zID0gUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5h
Z2VyOjpzaGFyZWRNYW5hZ2VyKCkucmVzdHJpY3Rpb25zKG1lZGlhVHlwZSgpKTsKICAgICBNZWRp
YVBsYXllcjo6UHJlbG9hZCBwcmVsb2FkID0gZWxlbWVudC5wcmVsb2FkVmFsdWUoKTsKIAotICAg
IGlmICgocmVzdHJpY3Rpb25zICYgTWVkaWFTZXNzaW9uTWFuYWdlcjo6TWV0YWRhdGFQcmVsb2Fk
aW5nTm90UGVybWl0dGVkKSA9PSBNZWRpYVNlc3Npb25NYW5hZ2VyOjpNZXRhZGF0YVByZWxvYWRp
bmdOb3RQZXJtaXR0ZWQpCisgICAgaWYgKChyZXN0cmljdGlvbnMgJiBQbGF0Zm9ybU1lZGlhU2Vz
c2lvbk1hbmFnZXI6Ok1ldGFkYXRhUHJlbG9hZGluZ05vdFBlcm1pdHRlZCkgPT0gUGxhdGZvcm1N
ZWRpYVNlc3Npb25NYW5hZ2VyOjpNZXRhZGF0YVByZWxvYWRpbmdOb3RQZXJtaXR0ZWQpCiAgICAg
ICAgIHJldHVybiBNZWRpYVBsYXllcjo6Tm9uZTsKIAotICAgIGlmICgocmVzdHJpY3Rpb25zICYg
TWVkaWFTZXNzaW9uTWFuYWdlcjo6QXV0b1ByZWxvYWRpbmdOb3RQZXJtaXR0ZWQpID09IE1lZGlh
U2Vzc2lvbk1hbmFnZXI6OkF1dG9QcmVsb2FkaW5nTm90UGVybWl0dGVkKSB7CisgICAgaWYgKChy
ZXN0cmljdGlvbnMgJiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OkF1dG9QcmVsb2FkaW5n
Tm90UGVybWl0dGVkKSA9PSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OkF1dG9QcmVsb2Fk
aW5nTm90UGVybWl0dGVkKSB7CiAgICAgICAgIGlmIChwcmVsb2FkID4gTWVkaWFQbGF5ZXI6Ok1l
dGFEYXRhKQogICAgICAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpNZXRhRGF0YTsKICAgICB9
CkBAIC0zNDQsNyArMzQ0LDcgQEAgTWVkaWFQbGF5ZXI6OlByZWxvYWQgTWVkaWFFbGVtZW50U2Vz
c2lvbjo6ZWZmZWN0aXZlUHJlbG9hZEZvckVsZW1lbnQoY29uc3QgSFRNTE0KIAogYm9vbCBNZWRp
YUVsZW1lbnRTZXNzaW9uOjpyZXF1aXJlc0Z1bGxzY3JlZW5Gb3JWaWRlb1BsYXliYWNrKGNvbnN0
IEhUTUxNZWRpYUVsZW1lbnQmIGVsZW1lbnQpIGNvbnN0CiB7Ci0gICAgaWYgKCFNZWRpYVNlc3Np
b25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuc2Vzc2lvblJlc3RyaWN0c0lubGluZVZpZGVvUGxh
eWJhY2soKnRoaXMpKQorICAgIGlmICghUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFy
ZWRNYW5hZ2VyKCkuc2Vzc2lvblJlc3RyaWN0c0lubGluZVZpZGVvUGxheWJhY2soKnRoaXMpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBlbGVtZW50
LmRvY3VtZW50KCkuc2V0dGluZ3MoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL01lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGUxNzcwNTNmZDY2MTAzMjI1YjgxOWJlN2RmZmE0NWY4NWM2ZTRjZTcuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwz
MzQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE1IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIk1lZGlhU2Vzc2lvbk1hbmFnZXIuaCIKLQotI2lmIEVOQUJMRShWSURFTykKLQotI2luY2x1
ZGUgIkF1ZGlvU2Vzc2lvbi5oIgotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRlICJOb3RJ
bXBsZW1lbnRlZC5oIgotI2luY2x1ZGUgIlBsYXRmb3JtTWVkaWFTZXNzaW9uLmgiCi0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotI2lmICFQTEFURk9STShJT1MpCi1NZWRpYVNlc3Npb25NYW5hZ2Vy
JiBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkKLXsKLSAgICBERVBSRUNBVEVE
X0RFRklORV9TVEFUSUNfTE9DQUwoTWVkaWFTZXNzaW9uTWFuYWdlciwgbWFuYWdlciwgKCkpOwot
ICAgIHJldHVybiBtYW5hZ2VyOwotfQotI2VuZGlmCi0KLU1lZGlhU2Vzc2lvbk1hbmFnZXI6Ok1l
ZGlhU2Vzc2lvbk1hbmFnZXIoKQotICAgIDogbV9zeXN0ZW1TbGVlcExpc3RlbmVyKFN5c3RlbVNs
ZWVwTGlzdGVuZXI6OmNyZWF0ZSgqdGhpcykpCi17Ci0gICAgcmVzZXRSZXN0cmljdGlvbnMoKTsK
LX0KLQotdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyOjpyZXNldFJlc3RyaWN0aW9ucygpCi17Ci0g
ICAgbV9yZXN0cmljdGlvbnNbUGxhdGZvcm1NZWRpYVNlc3Npb246OlZpZGVvXSA9IE5vUmVzdHJp
Y3Rpb25zOwotICAgIG1fcmVzdHJpY3Rpb25zW1BsYXRmb3JtTWVkaWFTZXNzaW9uOjpBdWRpb10g
PSBOb1Jlc3RyaWN0aW9uczsKLSAgICBtX3Jlc3RyaWN0aW9uc1tQbGF0Zm9ybU1lZGlhU2Vzc2lv
bjo6V2ViQXVkaW9dID0gTm9SZXN0cmljdGlvbnM7Ci19Ci0KLWJvb2wgTWVkaWFTZXNzaW9uTWFu
YWdlcjo6aGFzKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUgdHlwZSkgY29uc3QKLXsK
LSAgICBBU1NFUlQodHlwZSA+PSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Tm9uZSAmJiB0eXBlIDw9
IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpXZWJBdWRpbyk7Ci0KLSAgICBmb3IgKGF1dG8qIHNlc3Np
b24gOiBtX3Nlc3Npb25zKSB7Ci0gICAgICAgIGlmIChzZXNzaW9uLT5tZWRpYVR5cGUoKSA9PSB0
eXBlKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgcmV0dXJuIGZhbHNl
OwotfQotCi1ib29sIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OmFjdGl2ZUF1ZGlvU2Vzc2lvblJlcXVp
cmVkKCkgY29uc3QKLXsKLSAgICBmb3IgKGF1dG8qIHNlc3Npb24gOiBtX3Nlc3Npb25zKSB7Ci0g
ICAgICAgIGlmIChzZXNzaW9uLT5tZWRpYVR5cGUoKSAhPSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6
Tm9uZSAmJiBzZXNzaW9uLT5zdGF0ZSgpID09IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTdGF0ZTo6
UGxheWluZykKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICAKLSAgICByZXR1
cm4gZmFsc2U7Ci19Ci0KLWludCBNZWRpYVNlc3Npb25NYW5hZ2VyOjpjb3VudChQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6TWVkaWFUeXBlIHR5cGUpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKHR5cGUgPj0g
UGxhdGZvcm1NZWRpYVNlc3Npb246Ok5vbmUgJiYgdHlwZSA8PSBQbGF0Zm9ybU1lZGlhU2Vzc2lv
bjo6V2ViQXVkaW8pOwotCi0gICAgaW50IGNvdW50ID0gMDsKLSAgICBmb3IgKGF1dG8qIHNlc3Np
b24gOiBtX3Nlc3Npb25zKSB7Ci0gICAgICAgIGlmIChzZXNzaW9uLT5tZWRpYVR5cGUoKSA9PSB0
eXBlKQotICAgICAgICAgICAgKytjb3VudDsKLSAgICB9Ci0KLSAgICByZXR1cm4gY291bnQ7Ci19
Ci0KLXZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcjo6YmVnaW5JbnRlcnJ1cHRpb24oUGxhdGZvcm1N
ZWRpYVNlc3Npb246OkludGVycnVwdGlvblR5cGUgdHlwZSkKLXsKLSAgICBMT0coTWVkaWEsICJN
ZWRpYVNlc3Npb25NYW5hZ2VyOjpiZWdpbkludGVycnVwdGlvbiIpOwotCi0gICAgbV9pbnRlcnJ1
cHRlZCA9IHRydWU7Ci0gICAgVmVjdG9yPFBsYXRmb3JtTWVkaWFTZXNzaW9uKj4gc2Vzc2lvbnMg
PSBtX3Nlc3Npb25zOwotICAgIGZvciAoYXV0byogc2Vzc2lvbiA6IHNlc3Npb25zKQotICAgICAg
ICBzZXNzaW9uLT5iZWdpbkludGVycnVwdGlvbih0eXBlKTsKLSAgICB1cGRhdGVTZXNzaW9uU3Rh
dGUoKTsKLX0KLQotdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyOjplbmRJbnRlcnJ1cHRpb24oUGxh
dGZvcm1NZWRpYVNlc3Npb246OkVuZEludGVycnVwdGlvbkZsYWdzIGZsYWdzKQotewotICAgIExP
RyhNZWRpYSwgIk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmVuZEludGVycnVwdGlvbiIpOwotCi0gICAg
bV9pbnRlcnJ1cHRlZCA9IGZhbHNlOwotICAgIFZlY3RvcjxQbGF0Zm9ybU1lZGlhU2Vzc2lvbio+
IHNlc3Npb25zID0gbV9zZXNzaW9uczsKLSAgICBmb3IgKGF1dG8qIHNlc3Npb24gOiBzZXNzaW9u
cykKLSAgICAgICAgc2Vzc2lvbi0+ZW5kSW50ZXJydXB0aW9uKGZsYWdzKTsKLX0KLQotdm9pZCBN
ZWRpYVNlc3Npb25NYW5hZ2VyOjphZGRTZXNzaW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uJiBzZXNz
aW9uKQotewotICAgIExPRyhNZWRpYSwgIk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmFkZFNlc3Npb24g
LSAlcCIsICZzZXNzaW9uKTsKLSAgICAKLSAgICBtX3Nlc3Npb25zLmFwcGVuZCgmc2Vzc2lvbik7
Ci0gICAgaWYgKG1faW50ZXJydXB0ZWQpCi0gICAgICAgIHNlc3Npb24uc2V0U3RhdGUoUGxhdGZv
cm1NZWRpYVNlc3Npb246OkludGVycnVwdGVkKTsKLQotICAgIGlmICghbV9yZW1vdGVDb21tYW5k
TGlzdGVuZXIpCi0gICAgICAgIG1fcmVtb3RlQ29tbWFuZExpc3RlbmVyID0gUmVtb3RlQ29tbWFu
ZExpc3RlbmVyOjpjcmVhdGUoKnRoaXMpOwotCi0gICAgaWYgKCFtX2F1ZGlvSGFyZHdhcmVMaXN0
ZW5lcikKLSAgICAgICAgbV9hdWRpb0hhcmR3YXJlTGlzdGVuZXIgPSBBdWRpb0hhcmR3YXJlTGlz
dGVuZXI6OmNyZWF0ZSgqdGhpcyk7Ci0KLSAgICB1cGRhdGVTZXNzaW9uU3RhdGUoKTsKLX0KLQot
dm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyOjpyZW1vdmVTZXNzaW9uKFBsYXRmb3JtTWVkaWFTZXNz
aW9uJiBzZXNzaW9uKQotewotICAgIExPRyhNZWRpYSwgIk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnJl
bW92ZVNlc3Npb24gLSAlcCIsICZzZXNzaW9uKTsKLSAgICAKLSAgICBzaXplX3QgaW5kZXggPSBt
X3Nlc3Npb25zLmZpbmQoJnNlc3Npb24pOwotICAgIEFTU0VSVChpbmRleCAhPSBub3RGb3VuZCk7
Ci0gICAgaWYgKGluZGV4ID09IG5vdEZvdW5kKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAg
bV9zZXNzaW9ucy5yZW1vdmUoaW5kZXgpOwotCi0gICAgaWYgKG1fc2Vzc2lvbnMuaXNFbXB0eSgp
KSB7Ci0gICAgICAgIG1fcmVtb3RlQ29tbWFuZExpc3RlbmVyID0gbnVsbHB0cjsKLSAgICAgICAg
bV9hdWRpb0hhcmR3YXJlTGlzdGVuZXIgPSBudWxscHRyOwotICAgIH0KLQotICAgIHVwZGF0ZVNl
c3Npb25TdGF0ZSgpOwotfQotCi12b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OmFkZFJlc3RyaWN0
aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUgdHlwZSwgU2Vzc2lvblJlc3RyaWN0
aW9ucyByZXN0cmljdGlvbikKLXsKLSAgICBBU1NFUlQodHlwZSA+IFBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpOb25lICYmIHR5cGUgPD0gUGxhdGZvcm1NZWRpYVNlc3Npb246OldlYkF1ZGlvKTsKLSAg
ICBtX3Jlc3RyaWN0aW9uc1t0eXBlXSB8PSByZXN0cmljdGlvbjsKLX0KLQotdm9pZCBNZWRpYVNl
c3Npb25NYW5hZ2VyOjpyZW1vdmVSZXN0cmljdGlvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWVk
aWFUeXBlIHR5cGUsIFNlc3Npb25SZXN0cmljdGlvbnMgcmVzdHJpY3Rpb24pCi17Ci0gICAgQVNT
RVJUKHR5cGUgPiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Tm9uZSAmJiB0eXBlIDw9IFBsYXRmb3Jt
TWVkaWFTZXNzaW9uOjpXZWJBdWRpbyk7Ci0gICAgbV9yZXN0cmljdGlvbnNbdHlwZV0gJj0gfnJl
c3RyaWN0aW9uOwotfQotCi1NZWRpYVNlc3Npb25NYW5hZ2VyOjpTZXNzaW9uUmVzdHJpY3Rpb25z
IE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnJlc3RyaWN0aW9ucyhQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6
TWVkaWFUeXBlIHR5cGUpCi17Ci0gICAgQVNTRVJUKHR5cGUgPiBQbGF0Zm9ybU1lZGlhU2Vzc2lv
bjo6Tm9uZSAmJiB0eXBlIDw9IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpXZWJBdWRpbyk7Ci0gICAg
cmV0dXJuIG1fcmVzdHJpY3Rpb25zW3R5cGVdOwotfQotCi1ib29sIE1lZGlhU2Vzc2lvbk1hbmFn
ZXI6OnNlc3Npb25XaWxsQmVnaW5QbGF5YmFjayhQbGF0Zm9ybU1lZGlhU2Vzc2lvbiYgc2Vzc2lv
bikKLXsKLSAgICBMT0coTWVkaWEsICJNZWRpYVNlc3Npb25NYW5hZ2VyOjpzZXNzaW9uV2lsbEJl
Z2luUGxheWJhY2sgLSAlcCIsICZzZXNzaW9uKTsKLSAgICAKLSAgICBzZXRDdXJyZW50U2Vzc2lv
bihzZXNzaW9uKTsKLQotICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUgc2Vzc2lv
blR5cGUgPSBzZXNzaW9uLm1lZGlhVHlwZSgpOwotICAgIFNlc3Npb25SZXN0cmljdGlvbnMgcmVz
dHJpY3Rpb25zID0gbV9yZXN0cmljdGlvbnNbc2Vzc2lvblR5cGVdOwotICAgIGlmIChzZXNzaW9u
LnN0YXRlKCkgPT0gUGxhdGZvcm1NZWRpYVNlc3Npb246OkludGVycnVwdGVkICYmIHJlc3RyaWN0
aW9ucyAmIEludGVycnVwdGVkUGxheWJhY2tOb3RQZXJtaXR0ZWQpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLQotI2lmIFVTRShBVURJT19TRVNTSU9OKQotICAgIGlmIChhY3RpdmVBdWRpb1Nlc3Np
b25SZXF1aXJlZCgpICYmICFBdWRpb1Nlc3Npb246OnNoYXJlZFNlc3Npb24oKS50cnlUb1NldEFj
dGl2ZSh0cnVlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCi0KLSAgICBpZiAobV9p
bnRlcnJ1cHRlZCkKLSAgICAgICAgZW5kSW50ZXJydXB0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9u
OjpOb0ZsYWdzKTsKLQotICAgIFZlY3RvcjxQbGF0Zm9ybU1lZGlhU2Vzc2lvbio+IHNlc3Npb25z
ID0gbV9zZXNzaW9uczsKLSAgICBmb3IgKGF1dG8qIG9uZVNlc3Npb24gOiBzZXNzaW9ucykgewot
ICAgICAgICBpZiAob25lU2Vzc2lvbiA9PSAmc2Vzc2lvbikKLSAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICBpZiAob25lU2Vzc2lvbi0+bWVkaWFUeXBlKCkgPT0gc2Vzc2lvblR5cGUgJiYg
cmVzdHJpY3Rpb25zICYgQ29uY3VycmVudFBsYXliYWNrTm90UGVybWl0dGVkKQotICAgICAgICAg
ICAgb25lU2Vzc2lvbi0+cGF1c2VTZXNzaW9uKCk7Ci0gICAgfQotCi0gICAgdXBkYXRlU2Vzc2lv
blN0YXRlKCk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0gICAgCi12b2lkIE1lZGlhU2Vzc2lvbk1h
bmFnZXI6OnNlc3Npb25XaWxsRW5kUGxheWJhY2soUGxhdGZvcm1NZWRpYVNlc3Npb24mIHNlc3Np
b24pCi17Ci0gICAgTE9HKE1lZGlhLCAiTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2Vzc2lvbldpbGxF
bmRQbGF5YmFjayAtICVwIiwgJnNlc3Npb24pOwotICAgIAotICAgIGlmIChtX3Nlc3Npb25zLnNp
emUoKSA8IDIpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBzaXplX3QgcGF1c2luZ1Nlc3Np
b25JbmRleCA9IG5vdEZvdW5kOwotICAgIHNpemVfdCBsYXN0UGxheWluZ1Nlc3Npb25JbmRleCA9
IG5vdEZvdW5kOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9zZXNzaW9ucy5zaXplKCk7
ICsraSkgewotICAgICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbiogb25lU2Vzc2lvbiA9IG1fc2Vz
c2lvbnNbaV07Ci0gICAgICAgIAotICAgICAgICBpZiAob25lU2Vzc2lvbiA9PSAmc2Vzc2lvbikg
ewotICAgICAgICAgICAgcGF1c2luZ1Nlc3Npb25JbmRleCA9IGk7Ci0gICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgfQotICAgICAgICBpZiAob25lU2Vzc2lvbi0+c3RhdGUoKSA9PSBQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6UGxheWluZykgewotICAgICAgICAgICAgbGFzdFBsYXlpbmdTZXNz
aW9uSW5kZXggPSBpOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLSAgICAgICAg
aWYgKG9uZVNlc3Npb24tPnN0YXRlKCkgIT0gUGxhdGZvcm1NZWRpYVNlc3Npb246OlBsYXlpbmcp
Ci0gICAgICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgaWYgKGxhc3RQbGF5aW5nU2Vzc2lvbklu
ZGV4ID09IG5vdEZvdW5kIHx8IHBhdXNpbmdTZXNzaW9uSW5kZXggPT0gbm90Rm91bmQpCi0gICAg
ICAgIHJldHVybjsKLSAgICAKLSAgICBpZiAocGF1c2luZ1Nlc3Npb25JbmRleCA+IGxhc3RQbGF5
aW5nU2Vzc2lvbkluZGV4KQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgbV9zZXNzaW9ucy5y
ZW1vdmUocGF1c2luZ1Nlc3Npb25JbmRleCk7Ci0gICAgbV9zZXNzaW9ucy5pbnNlcnQobGFzdFBs
YXlpbmdTZXNzaW9uSW5kZXgsICZzZXNzaW9uKTsKLSAgICAKLSAgICBMT0coTWVkaWEsICJNZWRp
YVNlc3Npb25NYW5hZ2VyOjpzZXNzaW9uV2lsbEVuZFBsYXliYWNrIC0gc2Vzc2lvbiBtb3ZlZCBm
cm9tIGluZGV4ICV6dSB0byAlenUiLCBwYXVzaW5nU2Vzc2lvbkluZGV4LCBsYXN0UGxheWluZ1Nl
c3Npb25JbmRleCk7Ci19Ci0KLXZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2V0Q3VycmVudFNl
c3Npb24oUGxhdGZvcm1NZWRpYVNlc3Npb24mIHNlc3Npb24pCi17Ci0gICAgTE9HKE1lZGlhLCAi
TWVkaWFTZXNzaW9uTWFuYWdlcjo6c2V0Q3VycmVudFNlc3Npb24gLSAlcCIsICZzZXNzaW9uKTsK
LSAgICAKLSAgICBpZiAobV9zZXNzaW9ucy5zaXplKCkgPCAyKQotICAgICAgICByZXR1cm47Ci0g
ICAgCi0gICAgc2l6ZV90IGluZGV4ID0gbV9zZXNzaW9ucy5maW5kKCZzZXNzaW9uKTsKLSAgICBB
U1NFUlQoaW5kZXggIT0gbm90Rm91bmQpOwotICAgIGlmICghaW5kZXggfHwgaW5kZXggPT0gbm90
Rm91bmQpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fc2Vzc2lvbnMucmVtb3ZlKGluZGV4KTsK
LSAgICBtX3Nlc3Npb25zLmluc2VydCgwLCAmc2Vzc2lvbik7Ci0gICAgCi0gICAgTE9HKE1lZGlh
LCAiTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2V0Q3VycmVudFNlc3Npb24gLSBzZXNzaW9uIG1vdmVk
IGZyb20gaW5kZXggJXp1IHRvIDAiLCBpbmRleCk7Ci19Ci0gICAgCi1QbGF0Zm9ybU1lZGlhU2Vz
c2lvbiogTWVkaWFTZXNzaW9uTWFuYWdlcjo6Y3VycmVudFNlc3Npb24oKQotewotICAgIGlmICgh
bV9zZXNzaW9ucy5zaXplKCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgcmV0dXJu
IG1fc2Vzc2lvbnNbMF07Ci19Ci0gICAgCi1ib29sIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNlc3Np
b25SZXN0cmljdHNJbmxpbmVWaWRlb1BsYXliYWNrKGNvbnN0IFBsYXRmb3JtTWVkaWFTZXNzaW9u
JiBzZXNzaW9uKSBjb25zdAotewotICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUg
c2Vzc2lvblR5cGUgPSBzZXNzaW9uLnByZXNlbnRhdGlvblR5cGUoKTsKLSAgICBpZiAoc2Vzc2lv
blR5cGUgIT0gUGxhdGZvcm1NZWRpYVNlc3Npb246OlZpZGVvKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgICByZXR1cm4gbV9yZXN0cmljdGlvbnNbc2Vzc2lvblR5cGVdICYgSW5saW5lVmlk
ZW9QbGF5YmFja1Jlc3RyaWN0ZWQ7Ci19Ci0KLWJvb2wgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2Vz
c2lvbkNhbkxvYWRNZWRpYShjb25zdCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbiYgc2Vzc2lvbikgY29u
c3QKLXsKLSAgICByZXR1cm4gc2Vzc2lvbi5zdGF0ZSgpID09IFBsYXRmb3JtTWVkaWFTZXNzaW9u
OjpQbGF5aW5nIHx8ICFzZXNzaW9uLmlzSGlkZGVuKCkgfHwgc2Vzc2lvbi5pc1BsYXlpbmdUb1dp
cmVsZXNzUGxheWJhY2tUYXJnZXQoKTsKLX0KLQotdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyOjph
cHBsaWNhdGlvbldpbGxFbnRlckJhY2tncm91bmQoKSBjb25zdAotewotICAgIExPRyhNZWRpYSwg
Ik1lZGlhU2Vzc2lvbk1hbmFnZXI6OmFwcGxpY2F0aW9uV2lsbEVudGVyQmFja2dyb3VuZCIpOwot
ICAgIFZlY3RvcjxQbGF0Zm9ybU1lZGlhU2Vzc2lvbio+IHNlc3Npb25zID0gbV9zZXNzaW9uczsK
LSAgICBmb3IgKGF1dG8qIHNlc3Npb24gOiBzZXNzaW9ucykgewotICAgICAgICBpZiAobV9yZXN0
cmljdGlvbnNbc2Vzc2lvbi0+bWVkaWFUeXBlKCldICYgQmFja2dyb3VuZFByb2Nlc3NQbGF5YmFj
a1Jlc3RyaWN0ZWQpCi0gICAgICAgICAgICBzZXNzaW9uLT5iZWdpbkludGVycnVwdGlvbihQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6RW50ZXJpbmdCYWNrZ3JvdW5kKTsKLSAgICB9Ci19Ci0KLXZvaWQg
TWVkaWFTZXNzaW9uTWFuYWdlcjo6YXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKCkgY29u
c3QKLXsKLSAgICBMT0coTWVkaWEsICJNZWRpYVNlc3Npb25NYW5hZ2VyOjphcHBsaWNhdGlvbldp
bGxFbnRlckZvcmVncm91bmQiKTsKLSAgICBWZWN0b3I8UGxhdGZvcm1NZWRpYVNlc3Npb24qPiBz
ZXNzaW9ucyA9IG1fc2Vzc2lvbnM7Ci0gICAgZm9yIChhdXRvKiBzZXNzaW9uIDogc2Vzc2lvbnMp
IHsKLSAgICAgICAgaWYgKG1fcmVzdHJpY3Rpb25zW3Nlc3Npb24tPm1lZGlhVHlwZSgpXSAmIEJh
Y2tncm91bmRQcm9jZXNzUGxheWJhY2tSZXN0cmljdGVkKQotICAgICAgICAgICAgc2Vzc2lvbi0+
ZW5kSW50ZXJydXB0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNYXlSZXN1bWVQbGF5aW5nKTsK
LSAgICB9Ci19Ci0KLSNpZiAhUExBVEZPUk0oQ09DT0EpCi12b2lkIE1lZGlhU2Vzc2lvbk1hbmFn
ZXI6OnVwZGF0ZVNlc3Npb25TdGF0ZSgpCi17Ci19Ci0jZW5kaWYKLQotdm9pZCBNZWRpYVNlc3Np
b25NYW5hZ2VyOjpkaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoUGxhdGZvcm1NZWRpYVNl
c3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSBjb21tYW5kKQotewotICAgIFBsYXRmb3Jt
TWVkaWFTZXNzaW9uKiBhY3RpdmVTZXNzaW9uID0gY3VycmVudFNlc3Npb24oKTsKLSAgICBpZiAo
IWFjdGl2ZVNlc3Npb24gfHwgIWFjdGl2ZVNlc3Npb24tPmNhblJlY2VpdmVSZW1vdGVDb250cm9s
Q29tbWFuZHMoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIGFjdGl2ZVNlc3Npb24tPmRpZFJlY2Vp
dmVSZW1vdGVDb250cm9sQ29tbWFuZChjb21tYW5kKTsKLX0KLQotdm9pZCBNZWRpYVNlc3Npb25N
YW5hZ2VyOjpzeXN0ZW1XaWxsU2xlZXAoKQotewotICAgIGlmIChtX2ludGVycnVwdGVkKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBmb3IgKGF1dG8gc2Vzc2lvbiA6IG1fc2Vzc2lvbnMpCi0gICAg
ICAgIHNlc3Npb24tPmJlZ2luSW50ZXJydXB0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTeXN0
ZW1TbGVlcCk7Ci19Ci0KLXZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c3lzdGVtRGlkV2FrZSgp
Ci17Ci0gICAgaWYgKG1faW50ZXJydXB0ZWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGZvciAo
YXV0byBzZXNzaW9uIDogbV9zZXNzaW9ucykKLSAgICAgICAgc2Vzc2lvbi0+ZW5kSW50ZXJydXB0
aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNYXlSZXN1bWVQbGF5aW5nKTsKLX0KLQotdm9pZCBN
ZWRpYVNlc3Npb25NYW5hZ2VyOjphdWRpb091dHB1dERldmljZUNoYW5nZWQoKQotewotICAgIHVw
ZGF0ZVNlc3Npb25TdGF0ZSgpOwotfQotCi19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uTWFuYWdlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uTWFuYWdlci5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBkMTUwYTk4NWRjNjc0ZmE3Y2NlZjU1Mjc1MTFmZjJkZDgzZDc0YTA0
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbk1hbmFnZXIuaAorKysgL2Rldi9udWxs
CkBAIC0xLDEzMyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTUgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIE1lZGlhU2Vzc2lv
bk1hbmFnZXJfaAotI2RlZmluZSBNZWRpYVNlc3Npb25NYW5hZ2VyX2gKLQotI2luY2x1ZGUgIkF1
ZGlvSGFyZHdhcmVMaXN0ZW5lci5oIgotI2luY2x1ZGUgIlBsYXRmb3JtTWVkaWFTZXNzaW9uLmgi
Ci0jaW5jbHVkZSAiUmVtb3RlQ29tbWFuZExpc3RlbmVyLmgiCi0jaW5jbHVkZSAiU2V0dGluZ3Mu
aCIKLSNpbmNsdWRlICJTeXN0ZW1TbGVlcExpc3RlbmVyLmgiCi0jaW5jbHVkZSA8bWFwPgotI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBIVE1M
TWVkaWFFbGVtZW50OwotY2xhc3MgUGxhdGZvcm1NZWRpYVNlc3Npb247Ci1jbGFzcyBSZW1vdGVD
b21tYW5kTGlzdGVuZXI7Ci0KLWNsYXNzIE1lZGlhU2Vzc2lvbk1hbmFnZXIgOiBwcml2YXRlIFJl
bW90ZUNvbW1hbmRMaXN0ZW5lckNsaWVudCwgcHJpdmF0ZSBTeXN0ZW1TbGVlcExpc3RlbmVyOjpD
bGllbnQsIHByaXZhdGUgQXVkaW9IYXJkd2FyZUxpc3RlbmVyOjpDbGllbnQgewotICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBN
ZWRpYVNlc3Npb25NYW5hZ2VyJiBzaGFyZWRNYW5hZ2VyKCk7Ci0gICAgdmlydHVhbCB+TWVkaWFT
ZXNzaW9uTWFuYWdlcigpIHsgfQotCi0gICAgYm9vbCBoYXMoUGxhdGZvcm1NZWRpYVNlc3Npb246
Ok1lZGlhVHlwZSkgY29uc3Q7Ci0gICAgaW50IGNvdW50KFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpN
ZWRpYVR5cGUpIGNvbnN0OwotICAgIGJvb2wgYWN0aXZlQXVkaW9TZXNzaW9uUmVxdWlyZWQoKSBj
b25zdDsKLQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYmVnaW5JbnRlcnJ1cHRpb24oUGxhdGZv
cm1NZWRpYVNlc3Npb246OkludGVycnVwdGlvblR5cGUpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgZW5kSW50ZXJydXB0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpFbmRJbnRlcnJ1cHRpb25G
bGFncyk7Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGxpY2F0aW9uV2lsbEVudGVyRm9y
ZWdyb3VuZCgpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwbGljYXRpb25XaWxs
RW50ZXJCYWNrZ3JvdW5kKCkgY29uc3Q7Ci0KLSAgICBlbnVtIFNlc3Npb25SZXN0cmljdGlvbkZs
YWdzIHsKLSAgICAgICAgTm9SZXN0cmljdGlvbnMgPSAwLAotICAgICAgICBDb25jdXJyZW50UGxh
eWJhY2tOb3RQZXJtaXR0ZWQgPSAxIDw8IDAsCi0gICAgICAgIElubGluZVZpZGVvUGxheWJhY2tS
ZXN0cmljdGVkID0gMSA8PCAxLAotICAgICAgICBNZXRhZGF0YVByZWxvYWRpbmdOb3RQZXJtaXR0
ZWQgPSAxIDw8IDIsCi0gICAgICAgIEF1dG9QcmVsb2FkaW5nTm90UGVybWl0dGVkID0gMSA8PCAz
LAotICAgICAgICBCYWNrZ3JvdW5kUHJvY2Vzc1BsYXliYWNrUmVzdHJpY3RlZCA9IDEgPDwgNCwK
LSAgICAgICAgQmFja2dyb3VuZFRhYlBsYXliYWNrUmVzdHJpY3RlZCA9IDEgPDwgNSwKLSAgICAg
ICAgSW50ZXJydXB0ZWRQbGF5YmFja05vdFBlcm1pdHRlZCA9IDEgPDwgNiwKLSAgICB9OwotICAg
IHR5cGVkZWYgdW5zaWduZWQgU2Vzc2lvblJlc3RyaWN0aW9uczsKLQotICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgYWRkUmVzdHJpY3Rpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246Ok1lZGlhVHlwZSwg
U2Vzc2lvblJlc3RyaWN0aW9ucyk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVSZXN0
cmljdGlvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlLCBTZXNzaW9uUmVzdHJpY3Rp
b25zKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBTZXNzaW9uUmVzdHJpY3Rpb25zIHJlc3RyaWN0aW9u
cyhQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVz
ZXRSZXN0cmljdGlvbnMoKTsKLQotICAgIHZpcnR1YWwgYm9vbCBzZXNzaW9uV2lsbEJlZ2luUGxh
eWJhY2soUGxhdGZvcm1NZWRpYVNlc3Npb24mKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2Vzc2lvbldp
bGxFbmRQbGF5YmFjayhQbGF0Zm9ybU1lZGlhU2Vzc2lvbiYpOwotCi0gICAgYm9vbCBzZXNzaW9u
UmVzdHJpY3RzSW5saW5lVmlkZW9QbGF5YmFjayhjb25zdCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbiYp
IGNvbnN0OwotCi0gICAgdmlydHVhbCBib29sIHNlc3Npb25DYW5Mb2FkTWVkaWEoY29uc3QgUGxh
dGZvcm1NZWRpYVNlc3Npb24mKSBjb25zdDsKLQotI2lmIFBMQVRGT1JNKElPUykKLSAgICB2aXJ0
dWFsIHZvaWQgY29uZmlndXJlV2lyZUxlc3NUYXJnZXRNb25pdG9yaW5nKCkgeyB9Ci0gICAgdmly
dHVhbCBib29sIGhhc1dpcmVsZXNzVGFyZ2V0c0F2YWlsYWJsZSgpIHsgcmV0dXJuIGZhbHNlOyB9
Ci0jZW5kaWYKLQotICAgIHZvaWQgc2V0Q3VycmVudFNlc3Npb24oUGxhdGZvcm1NZWRpYVNlc3Np
b24mKTsKLSAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbiogY3VycmVudFNlc3Npb24oKTsKLQotcHJv
dGVjdGVkOgotICAgIGZyaWVuZCBjbGFzcyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjsKLSAgICBleHBs
aWNpdCBNZWRpYVNlc3Npb25NYW5hZ2VyKCk7Ci0KLSAgICB2b2lkIGFkZFNlc3Npb24oUGxhdGZv
cm1NZWRpYVNlc3Npb24mKTsKLSAgICB2b2lkIHJlbW92ZVNlc3Npb24oUGxhdGZvcm1NZWRpYVNl
c3Npb24mKTsKLQotICAgIFZlY3RvcjxQbGF0Zm9ybU1lZGlhU2Vzc2lvbio+IHNlc3Npb25zKCkg
eyByZXR1cm4gbV9zZXNzaW9uczsgfQotCi1wcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBJbnRl
cm5hbHM7Ci0KLSAgICB2b2lkIHVwZGF0ZVNlc3Npb25TdGF0ZSgpOwotCi0gICAgLy8gUmVtb3Rl
Q29tbWFuZExpc3RlbmVyQ2xpZW50Ci0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3Rl
Q29udHJvbENvbW1hbmRUeXBlKSBvdmVycmlkZTsKLQotICAgIC8vIEF1ZGlvSGFyZHdhcmVMaXN0
ZW5lckNsaWVudAotICAgIHZpcnR1YWwgdm9pZCBhdWRpb0hhcmR3YXJlRGlkQmVjb21lQWN0aXZl
KCkgb3ZlcnJpZGUgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGF1ZGlvSGFyZHdhcmVEaWRCZWNvbWVJ
bmFjdGl2ZSgpIG92ZXJyaWRlIHsgfQotICAgIHZpcnR1YWwgdm9pZCBhdWRpb091dHB1dERldmlj
ZUNoYW5nZWQoKSBvdmVycmlkZTsKLQotICAgIC8vIFN5c3RlbVNsZWVwTGlzdGVuZXIKLSAgICB2
aXJ0dWFsIHZvaWQgc3lzdGVtV2lsbFNsZWVwKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lk
IHN5c3RlbURpZFdha2UoKSBvdmVycmlkZTsKLQotICAgIFNlc3Npb25SZXN0cmljdGlvbnMgbV9y
ZXN0cmljdGlvbnNbUGxhdGZvcm1NZWRpYVNlc3Npb246OldlYkF1ZGlvICsgMV07Ci0gICAgVmVj
dG9yPFBsYXRmb3JtTWVkaWFTZXNzaW9uKj4gbV9zZXNzaW9uczsKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8UmVtb3RlQ29tbWFuZExpc3RlbmVyPiBtX3JlbW90ZUNvbW1hbmRMaXN0ZW5lcjsKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8U3lzdGVtU2xlZXBMaXN0ZW5lcj4gbV9zeXN0ZW1TbGVlcExpc3RlbmVy
OwotICAgIFJlZlB0cjxBdWRpb0hhcmR3YXJlTGlzdGVuZXI+IG1fYXVkaW9IYXJkd2FyZUxpc3Rl
bmVyOwotCi0jaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JN
KElPUykKLSAgICBSZWZQdHI8TWVkaWFQbGF5YmFja1RhcmdldD4gbV9wbGF5YmFja1RhcmdldDsK
LSAgICBib29sIG1fY2FuUGxheVRvVGFyZ2V0IHsgZmFsc2UgfTsKLSNlbmRpZgotCi0gICAgYm9v
bCBtX2ludGVycnVwdGVkIHsgZmFsc2UgfTsKLX07Ci0KLX0KLQotI2VuZGlmIC8vIE1lZGlhU2Vz
c2lvbk1hbmFnZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
UGxhdGZvcm1NZWRpYVNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
UGxhdGZvcm1NZWRpYVNlc3Npb24uY3BwCmluZGV4IDY2OTNhNmY2OTkwYmFlZWJkNTJhZjFiZTMy
ZDYyMWY1OWJiNGIwY2EuLjk5ODk3Y2FiNTkyMjBhMzVhMDQ2MWNjZDIxZGU3YjhhNGUyMjRmNTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFT
ZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1l
ZGlhU2Vzc2lvbi5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlICJIVE1MTWVkaWFFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCi0j
aW5jbHVkZSAiTWVkaWFTZXNzaW9uTWFuYWdlci5oIgorI2luY2x1ZGUgIlBsYXRmb3JtTWVkaWFT
ZXNzaW9uTWFuYWdlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTY1LDEyICs2NSwx
MiBAQCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UGxhdGZvcm1NZWRpYVNlc3Npb24oUGxhdGZvcm1N
ZWRpYVNlc3Npb25DbGllbnQmIGNsaWVudCkKICAgICAsIG1fbm90aWZ5aW5nQ2xpZW50KGZhbHNl
KQogewogICAgIEFTU0VSVChtX2NsaWVudC5tZWRpYVR5cGUoKSA+PSBOb25lICYmIG1fY2xpZW50
Lm1lZGlhVHlwZSgpIDw9IFdlYkF1ZGlvKTsKLSAgICBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFy
ZWRNYW5hZ2VyKCkuYWRkU2Vzc2lvbigqdGhpcyk7CisgICAgUGxhdGZvcm1NZWRpYVNlc3Npb25N
YW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuYWRkU2Vzc2lvbigqdGhpcyk7CiB9CiAKIFBsYXRmb3Jt
TWVkaWFTZXNzaW9uOjp+UGxhdGZvcm1NZWRpYVNlc3Npb24oKQogewotICAgIE1lZGlhU2Vzc2lv
bk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5yZW1vdmVTZXNzaW9uKCp0aGlzKTsKKyAgICBQbGF0
Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5yZW1vdmVTZXNzaW9uKCp0
aGlzKTsKIH0KIAogdm9pZCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6c2V0U3RhdGUoU3RhdGUgc3Rh
dGUpCkBAIC0xMTgsNyArMTE4LDcgQEAgYm9vbCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Y2xpZW50
V2lsbEJlZ2luUGxheWJhY2soKQogICAgIGlmIChtX25vdGlmeWluZ0NsaWVudCkKICAgICAgICAg
cmV0dXJuIHRydWU7CiAKLSAgICBpZiAoIU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFn
ZXIoKS5zZXNzaW9uV2lsbEJlZ2luUGxheWJhY2soKnRoaXMpKSB7CisgICAgaWYgKCFQbGF0Zm9y
bU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5zZXNzaW9uV2lsbEJlZ2luUGxh
eWJhY2soKnRoaXMpKSB7CiAgICAgICAgIGlmIChzdGF0ZSgpID09IEludGVycnVwdGVkKQogICAg
ICAgICAgICAgbV9zdGF0ZVRvUmVzdG9yZSA9IFBsYXlpbmc7CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTE0Miw3ICsxNDIsNyBAQCBib29sIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpjbGllbnRX
aWxsUGF1c2VQbGF5YmFjaygpCiAgICAgfQogICAgIAogICAgIHNldFN0YXRlKFBhdXNlZCk7Ci0g
ICAgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLnNlc3Npb25XaWxsRW5kUGxh
eWJhY2soKnRoaXMpOworICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFu
YWdlcigpLnNlc3Npb25XaWxsRW5kUGxheWJhY2soKnRoaXMpOwogICAgIGlmICghbV9jbGllbnRE
YXRhQnVmZmVyaW5nVGltZXIuaXNBY3RpdmUoKSkKICAgICAgICAgbV9jbGllbnREYXRhQnVmZmVy
aW5nVGltZXIuc3RhcnRPbmVTaG90KGtDbGllbnREYXRhQnVmZmVyaW5nVGltZXJUaHJvdHRsZURl
bGF5KTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTIwNCw4ICsyMDQsOCBAQCB2b2lkIFBsYXRmb3Jt
TWVkaWFTZXNzaW9uOjpjbGllbnREYXRhQnVmZmVyaW5nVGltZXJGaXJlZCgpCiAgICAgaWYgKG1f
c3RhdGUgIT0gUGxheWluZyB8fCAhbV9jbGllbnQuZWxlbWVudElzSGlkZGVuKCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OlNlc3Npb25SZXN0cmljdGlvbnMg
cmVzdHJpY3Rpb25zID0gTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLnJlc3Ry
aWN0aW9ucyhtZWRpYVR5cGUoKSk7Ci0gICAgaWYgKChyZXN0cmljdGlvbnMgJiBNZWRpYVNlc3Np
b25NYW5hZ2VyOjpCYWNrZ3JvdW5kVGFiUGxheWJhY2tSZXN0cmljdGVkKSA9PSBNZWRpYVNlc3Np
b25NYW5hZ2VyOjpCYWNrZ3JvdW5kVGFiUGxheWJhY2tSZXN0cmljdGVkKQorICAgIFBsYXRmb3Jt
TWVkaWFTZXNzaW9uTWFuYWdlcjo6U2Vzc2lvblJlc3RyaWN0aW9ucyByZXN0cmljdGlvbnMgPSBQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5yZXN0cmljdGlvbnMo
bWVkaWFUeXBlKCkpOworICAgIGlmICgocmVzdHJpY3Rpb25zICYgUGxhdGZvcm1NZWRpYVNlc3Np
b25NYW5hZ2VyOjpCYWNrZ3JvdW5kVGFiUGxheWJhY2tSZXN0cmljdGVkKSA9PSBQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbk1hbmFnZXI6OkJhY2tncm91bmRUYWJQbGF5YmFja1Jlc3RyaWN0ZWQpCiAgICAg
ICAgIHBhdXNlU2Vzc2lvbigpOwogfQogCkBAIC0yMTQsNyArMjE0LDcgQEAgdm9pZCBQbGF0Zm9y
bU1lZGlhU2Vzc2lvbjo6dXBkYXRlQ2xpZW50RGF0YUJ1ZmZlcmluZygpCiAgICAgaWYgKG1fY2xp
ZW50RGF0YUJ1ZmZlcmluZ1RpbWVyLmlzQWN0aXZlKCkpCiAgICAgICAgIG1fY2xpZW50RGF0YUJ1
ZmZlcmluZ1RpbWVyLnN0b3AoKTsKIAotICAgIG1fY2xpZW50LnNldFNob3VsZEJ1ZmZlckRhdGEo
TWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLnNlc3Npb25DYW5Mb2FkTWVkaWEo
KnRoaXMpKTsKKyAgICBtX2NsaWVudC5zZXRTaG91bGRCdWZmZXJEYXRhKFBsYXRmb3JtTWVkaWFT
ZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLnNlc3Npb25DYW5Mb2FkTWVkaWEoKnRoaXMp
KTsKIH0KIAogYm9vbCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6aXNIaWRkZW4oKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Np
b25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVk
aWFTZXNzaW9uTWFuYWdlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzI5M2Y1NjRiY2FjNGExYjUzYTU0OTFm
YTAwZGVmZDY3MzQ0ZGZjZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAKQEAgLTAsMCArMSwzMzQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQbGF0
Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaCIKKworI2lmIEVOQUJMRShWSURFTykKKworI2luY2x1
ZGUgIkF1ZGlvU2Vzc2lvbi5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJOb3RJ
bXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIlBsYXRmb3JtTWVkaWFTZXNzaW9uLmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworI2lmICFQTEFURk9STShJT1MpCitQbGF0Zm9ybU1lZGlhU2Vzc2lv
bk1hbmFnZXImIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpCit7
CisgICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFBsYXRmb3JtTWVkaWFTZXNzaW9u
TWFuYWdlciwgbWFuYWdlciwgKCkpOworICAgIHJldHVybiBtYW5hZ2VyOworfQorI2VuZGlmCisK
K1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2Vy
KCkKKyAgICA6IG1fc3lzdGVtU2xlZXBMaXN0ZW5lcihTeXN0ZW1TbGVlcExpc3RlbmVyOjpjcmVh
dGUoKnRoaXMpKQoreworICAgIHJlc2V0UmVzdHJpY3Rpb25zKCk7Cit9CisKK3ZvaWQgUGxhdGZv
cm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpyZXNldFJlc3RyaWN0aW9ucygpCit7CisgICAgbV9yZXN0
cmljdGlvbnNbUGxhdGZvcm1NZWRpYVNlc3Npb246OlZpZGVvXSA9IE5vUmVzdHJpY3Rpb25zOwor
ICAgIG1fcmVzdHJpY3Rpb25zW1BsYXRmb3JtTWVkaWFTZXNzaW9uOjpBdWRpb10gPSBOb1Jlc3Ry
aWN0aW9uczsKKyAgICBtX3Jlc3RyaWN0aW9uc1tQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6V2ViQXVk
aW9dID0gTm9SZXN0cmljdGlvbnM7Cit9CisKK2Jvb2wgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5h
Z2VyOjpoYXMoUGxhdGZvcm1NZWRpYVNlc3Npb246Ok1lZGlhVHlwZSB0eXBlKSBjb25zdAorewor
ICAgIEFTU0VSVCh0eXBlID49IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpOb25lICYmIHR5cGUgPD0g
UGxhdGZvcm1NZWRpYVNlc3Npb246OldlYkF1ZGlvKTsKKworICAgIGZvciAoYXV0byogc2Vzc2lv
biA6IG1fc2Vzc2lvbnMpIHsKKyAgICAgICAgaWYgKHNlc3Npb24tPm1lZGlhVHlwZSgpID09IHR5
cGUpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKK2Jvb2wgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjphY3RpdmVBdWRpb1Nlc3Np
b25SZXF1aXJlZCgpIGNvbnN0Cit7CisgICAgZm9yIChhdXRvKiBzZXNzaW9uIDogbV9zZXNzaW9u
cykgeworICAgICAgICBpZiAoc2Vzc2lvbi0+bWVkaWFUeXBlKCkgIT0gUGxhdGZvcm1NZWRpYVNl
c3Npb246Ok5vbmUgJiYgc2Vzc2lvbi0+c3RhdGUoKSA9PSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6
U3RhdGU6OlBsYXlpbmcpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCisg
ICAgcmV0dXJuIGZhbHNlOworfQorCitpbnQgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpj
b3VudChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlIHR5cGUpIGNvbnN0Cit7CisgICAg
QVNTRVJUKHR5cGUgPj0gUGxhdGZvcm1NZWRpYVNlc3Npb246Ok5vbmUgJiYgdHlwZSA8PSBQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6V2ViQXVkaW8pOworCisgICAgaW50IGNvdW50ID0gMDsKKyAgICBm
b3IgKGF1dG8qIHNlc3Npb24gOiBtX3Nlc3Npb25zKSB7CisgICAgICAgIGlmIChzZXNzaW9uLT5t
ZWRpYVR5cGUoKSA9PSB0eXBlKQorICAgICAgICAgICAgKytjb3VudDsKKyAgICB9CisKKyAgICBy
ZXR1cm4gY291bnQ7Cit9CisKK3ZvaWQgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpiZWdp
bkludGVycnVwdGlvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6SW50ZXJydXB0aW9uVHlwZSB0eXBl
KQoreworICAgIExPRyhNZWRpYSwgIlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6YmVnaW5J
bnRlcnJ1cHRpb24iKTsKKworICAgIG1faW50ZXJydXB0ZWQgPSB0cnVlOworICAgIFZlY3RvcjxQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbio+IHNlc3Npb25zID0gbV9zZXNzaW9uczsKKyAgICBmb3IgKGF1
dG8qIHNlc3Npb24gOiBzZXNzaW9ucykKKyAgICAgICAgc2Vzc2lvbi0+YmVnaW5JbnRlcnJ1cHRp
b24odHlwZSk7CisgICAgdXBkYXRlU2Vzc2lvblN0YXRlKCk7Cit9CisKK3ZvaWQgUGxhdGZvcm1N
ZWRpYVNlc3Npb25NYW5hZ2VyOjplbmRJbnRlcnJ1cHRpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246
OkVuZEludGVycnVwdGlvbkZsYWdzIGZsYWdzKQoreworICAgIExPRyhNZWRpYSwgIlBsYXRmb3Jt
TWVkaWFTZXNzaW9uTWFuYWdlcjo6ZW5kSW50ZXJydXB0aW9uIik7CisKKyAgICBtX2ludGVycnVw
dGVkID0gZmFsc2U7CisgICAgVmVjdG9yPFBsYXRmb3JtTWVkaWFTZXNzaW9uKj4gc2Vzc2lvbnMg
PSBtX3Nlc3Npb25zOworICAgIGZvciAoYXV0byogc2Vzc2lvbiA6IHNlc3Npb25zKQorICAgICAg
ICBzZXNzaW9uLT5lbmRJbnRlcnJ1cHRpb24oZmxhZ3MpOworfQorCit2b2lkIFBsYXRmb3JtTWVk
aWFTZXNzaW9uTWFuYWdlcjo6YWRkU2Vzc2lvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbiYgc2Vzc2lv
bikKK3sKKyAgICBMT0coTWVkaWEsICJQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OmFkZFNl
c3Npb24gLSAlcCIsICZzZXNzaW9uKTsKKyAgICAKKyAgICBtX3Nlc3Npb25zLmFwcGVuZCgmc2Vz
c2lvbik7CisgICAgaWYgKG1faW50ZXJydXB0ZWQpCisgICAgICAgIHNlc3Npb24uc2V0U3RhdGUo
UGxhdGZvcm1NZWRpYVNlc3Npb246OkludGVycnVwdGVkKTsKKworICAgIGlmICghbV9yZW1vdGVD
b21tYW5kTGlzdGVuZXIpCisgICAgICAgIG1fcmVtb3RlQ29tbWFuZExpc3RlbmVyID0gUmVtb3Rl
Q29tbWFuZExpc3RlbmVyOjpjcmVhdGUoKnRoaXMpOworCisgICAgaWYgKCFtX2F1ZGlvSGFyZHdh
cmVMaXN0ZW5lcikKKyAgICAgICAgbV9hdWRpb0hhcmR3YXJlTGlzdGVuZXIgPSBBdWRpb0hhcmR3
YXJlTGlzdGVuZXI6OmNyZWF0ZSgqdGhpcyk7CisKKyAgICB1cGRhdGVTZXNzaW9uU3RhdGUoKTsK
K30KKwordm9pZCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnJlbW92ZVNlc3Npb24oUGxh
dGZvcm1NZWRpYVNlc3Npb24mIHNlc3Npb24pCit7CisgICAgTE9HKE1lZGlhLCAiUGxhdGZvcm1N
ZWRpYVNlc3Npb25NYW5hZ2VyOjpyZW1vdmVTZXNzaW9uIC0gJXAiLCAmc2Vzc2lvbik7CisgICAg
CisgICAgc2l6ZV90IGluZGV4ID0gbV9zZXNzaW9ucy5maW5kKCZzZXNzaW9uKTsKKyAgICBBU1NF
UlQoaW5kZXggIT0gbm90Rm91bmQpOworICAgIGlmIChpbmRleCA9PSBub3RGb3VuZCkKKyAgICAg
ICAgcmV0dXJuOworICAgIAorICAgIG1fc2Vzc2lvbnMucmVtb3ZlKGluZGV4KTsKKworICAgIGlm
IChtX3Nlc3Npb25zLmlzRW1wdHkoKSkgeworICAgICAgICBtX3JlbW90ZUNvbW1hbmRMaXN0ZW5l
ciA9IG51bGxwdHI7CisgICAgICAgIG1fYXVkaW9IYXJkd2FyZUxpc3RlbmVyID0gbnVsbHB0cjsK
KyAgICB9CisKKyAgICB1cGRhdGVTZXNzaW9uU3RhdGUoKTsKK30KKwordm9pZCBQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbk1hbmFnZXI6OmFkZFJlc3RyaWN0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpN
ZWRpYVR5cGUgdHlwZSwgU2Vzc2lvblJlc3RyaWN0aW9ucyByZXN0cmljdGlvbikKK3sKKyAgICBB
U1NFUlQodHlwZSA+IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpOb25lICYmIHR5cGUgPD0gUGxhdGZv
cm1NZWRpYVNlc3Npb246OldlYkF1ZGlvKTsKKyAgICBtX3Jlc3RyaWN0aW9uc1t0eXBlXSB8PSBy
ZXN0cmljdGlvbjsKK30KKwordm9pZCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnJlbW92
ZVJlc3RyaWN0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUgdHlwZSwgU2Vzc2lv
blJlc3RyaWN0aW9ucyByZXN0cmljdGlvbikKK3sKKyAgICBBU1NFUlQodHlwZSA+IFBsYXRmb3Jt
TWVkaWFTZXNzaW9uOjpOb25lICYmIHR5cGUgPD0gUGxhdGZvcm1NZWRpYVNlc3Npb246OldlYkF1
ZGlvKTsKKyAgICBtX3Jlc3RyaWN0aW9uc1t0eXBlXSAmPSB+cmVzdHJpY3Rpb247Cit9CisKK1Bs
YXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6U2Vzc2lvblJlc3RyaWN0aW9ucyBQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbk1hbmFnZXI6OnJlc3RyaWN0aW9ucyhQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWVk
aWFUeXBlIHR5cGUpCit7CisgICAgQVNTRVJUKHR5cGUgPiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6
Tm9uZSAmJiB0eXBlIDw9IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpXZWJBdWRpbyk7CisgICAgcmV0
dXJuIG1fcmVzdHJpY3Rpb25zW3R5cGVdOworfQorCitib29sIFBsYXRmb3JtTWVkaWFTZXNzaW9u
TWFuYWdlcjo6c2Vzc2lvbldpbGxCZWdpblBsYXliYWNrKFBsYXRmb3JtTWVkaWFTZXNzaW9uJiBz
ZXNzaW9uKQoreworICAgIExPRyhNZWRpYSwgIlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6
c2Vzc2lvbldpbGxCZWdpblBsYXliYWNrIC0gJXAiLCAmc2Vzc2lvbik7CisgICAgCisgICAgc2V0
Q3VycmVudFNlc3Npb24oc2Vzc2lvbik7CisKKyAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWVk
aWFUeXBlIHNlc3Npb25UeXBlID0gc2Vzc2lvbi5tZWRpYVR5cGUoKTsKKyAgICBTZXNzaW9uUmVz
dHJpY3Rpb25zIHJlc3RyaWN0aW9ucyA9IG1fcmVzdHJpY3Rpb25zW3Nlc3Npb25UeXBlXTsKKyAg
ICBpZiAoc2Vzc2lvbi5zdGF0ZSgpID09IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpJbnRlcnJ1cHRl
ZCAmJiByZXN0cmljdGlvbnMgJiBJbnRlcnJ1cHRlZFBsYXliYWNrTm90UGVybWl0dGVkKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyNpZiBVU0UoQVVESU9fU0VTU0lPTikKKyAgICBpZiAoYWN0
aXZlQXVkaW9TZXNzaW9uUmVxdWlyZWQoKSAmJiAhQXVkaW9TZXNzaW9uOjpzaGFyZWRTZXNzaW9u
KCkudHJ5VG9TZXRBY3RpdmUodHJ1ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgor
CisgICAgaWYgKG1faW50ZXJydXB0ZWQpCisgICAgICAgIGVuZEludGVycnVwdGlvbihQbGF0Zm9y
bU1lZGlhU2Vzc2lvbjo6Tm9GbGFncyk7CisKKyAgICBWZWN0b3I8UGxhdGZvcm1NZWRpYVNlc3Np
b24qPiBzZXNzaW9ucyA9IG1fc2Vzc2lvbnM7CisgICAgZm9yIChhdXRvKiBvbmVTZXNzaW9uIDog
c2Vzc2lvbnMpIHsKKyAgICAgICAgaWYgKG9uZVNlc3Npb24gPT0gJnNlc3Npb24pCisgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKG9uZVNlc3Npb24tPm1lZGlhVHlwZSgpID09IHNl
c3Npb25UeXBlICYmIHJlc3RyaWN0aW9ucyAmIENvbmN1cnJlbnRQbGF5YmFja05vdFBlcm1pdHRl
ZCkKKyAgICAgICAgICAgIG9uZVNlc3Npb24tPnBhdXNlU2Vzc2lvbigpOworICAgIH0KKworICAg
IHVwZGF0ZVNlc3Npb25TdGF0ZSgpOworICAgIHJldHVybiB0cnVlOworfQorICAgIAordm9pZCBQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNlc3Npb25XaWxsRW5kUGxheWJhY2soUGxhdGZv
cm1NZWRpYVNlc3Npb24mIHNlc3Npb24pCit7CisgICAgTE9HKE1lZGlhLCAiUGxhdGZvcm1NZWRp
YVNlc3Npb25NYW5hZ2VyOjpzZXNzaW9uV2lsbEVuZFBsYXliYWNrIC0gJXAiLCAmc2Vzc2lvbik7
CisgICAgCisgICAgaWYgKG1fc2Vzc2lvbnMuc2l6ZSgpIDwgMikKKyAgICAgICAgcmV0dXJuOwor
ICAgIAorICAgIHNpemVfdCBwYXVzaW5nU2Vzc2lvbkluZGV4ID0gbm90Rm91bmQ7CisgICAgc2l6
ZV90IGxhc3RQbGF5aW5nU2Vzc2lvbkluZGV4ID0gbm90Rm91bmQ7CisgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBtX3Nlc3Npb25zLnNpemUoKTsgKytpKSB7CisgICAgICAgIFBsYXRmb3JtTWVk
aWFTZXNzaW9uKiBvbmVTZXNzaW9uID0gbV9zZXNzaW9uc1tpXTsKKyAgICAgICAgCisgICAgICAg
IGlmIChvbmVTZXNzaW9uID09ICZzZXNzaW9uKSB7CisgICAgICAgICAgICBwYXVzaW5nU2Vzc2lv
bkluZGV4ID0gaTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGlm
IChvbmVTZXNzaW9uLT5zdGF0ZSgpID09IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQbGF5aW5nKSB7
CisgICAgICAgICAgICBsYXN0UGxheWluZ1Nlc3Npb25JbmRleCA9IGk7CisgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAob25lU2Vzc2lvbi0+c3RhdGUoKSAhPSBQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UGxheWluZykKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0K
KyAgICBpZiAobGFzdFBsYXlpbmdTZXNzaW9uSW5kZXggPT0gbm90Rm91bmQgfHwgcGF1c2luZ1Nl
c3Npb25JbmRleCA9PSBub3RGb3VuZCkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIGlmIChw
YXVzaW5nU2Vzc2lvbkluZGV4ID4gbGFzdFBsYXlpbmdTZXNzaW9uSW5kZXgpCisgICAgICAgIHJl
dHVybjsKKyAgICAKKyAgICBtX3Nlc3Npb25zLnJlbW92ZShwYXVzaW5nU2Vzc2lvbkluZGV4KTsK
KyAgICBtX3Nlc3Npb25zLmluc2VydChsYXN0UGxheWluZ1Nlc3Npb25JbmRleCwgJnNlc3Npb24p
OworICAgIAorICAgIExPRyhNZWRpYSwgIlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2Vz
c2lvbldpbGxFbmRQbGF5YmFjayAtIHNlc3Npb24gbW92ZWQgZnJvbSBpbmRleCAlenUgdG8gJXp1
IiwgcGF1c2luZ1Nlc3Npb25JbmRleCwgbGFzdFBsYXlpbmdTZXNzaW9uSW5kZXgpOworfQorCit2
b2lkIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2V0Q3VycmVudFNlc3Npb24oUGxhdGZv
cm1NZWRpYVNlc3Npb24mIHNlc3Npb24pCit7CisgICAgTE9HKE1lZGlhLCAiUGxhdGZvcm1NZWRp
YVNlc3Npb25NYW5hZ2VyOjpzZXRDdXJyZW50U2Vzc2lvbiAtICVwIiwgJnNlc3Npb24pOworICAg
IAorICAgIGlmIChtX3Nlc3Npb25zLnNpemUoKSA8IDIpCisgICAgICAgIHJldHVybjsKKyAgICAK
KyAgICBzaXplX3QgaW5kZXggPSBtX3Nlc3Npb25zLmZpbmQoJnNlc3Npb24pOworICAgIEFTU0VS
VChpbmRleCAhPSBub3RGb3VuZCk7CisgICAgaWYgKCFpbmRleCB8fCBpbmRleCA9PSBub3RGb3Vu
ZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9zZXNzaW9ucy5yZW1vdmUoaW5kZXgpOworICAg
IG1fc2Vzc2lvbnMuaW5zZXJ0KDAsICZzZXNzaW9uKTsKKyAgICAKKyAgICBMT0coTWVkaWEsICJQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNldEN1cnJlbnRTZXNzaW9uIC0gc2Vzc2lvbiBt
b3ZlZCBmcm9tIGluZGV4ICV6dSB0byAwIiwgaW5kZXgpOworfQorICAgIAorUGxhdGZvcm1NZWRp
YVNlc3Npb24qIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6Y3VycmVudFNlc3Npb24oKQor
eworICAgIGlmICghbV9zZXNzaW9ucy5zaXplKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
CisgICAgcmV0dXJuIG1fc2Vzc2lvbnNbMF07Cit9CisgICAgCitib29sIFBsYXRmb3JtTWVkaWFT
ZXNzaW9uTWFuYWdlcjo6c2Vzc2lvblJlc3RyaWN0c0lubGluZVZpZGVvUGxheWJhY2soY29uc3Qg
UGxhdGZvcm1NZWRpYVNlc3Npb24mIHNlc3Npb24pIGNvbnN0Cit7CisgICAgUGxhdGZvcm1NZWRp
YVNlc3Npb246Ok1lZGlhVHlwZSBzZXNzaW9uVHlwZSA9IHNlc3Npb24ucHJlc2VudGF0aW9uVHlw
ZSgpOworICAgIGlmIChzZXNzaW9uVHlwZSAhPSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6VmlkZW8p
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBtX3Jlc3RyaWN0aW9uc1tzZXNz
aW9uVHlwZV0gJiBJbmxpbmVWaWRlb1BsYXliYWNrUmVzdHJpY3RlZDsKK30KKworYm9vbCBQbGF0
Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNlc3Npb25DYW5Mb2FkTWVkaWEoY29uc3QgUGxhdGZv
cm1NZWRpYVNlc3Npb24mIHNlc3Npb24pIGNvbnN0Cit7CisgICAgcmV0dXJuIHNlc3Npb24uc3Rh
dGUoKSA9PSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UGxheWluZyB8fCAhc2Vzc2lvbi5pc0hpZGRl
bigpIHx8IHNlc3Npb24uaXNQbGF5aW5nVG9XaXJlbGVzc1BsYXliYWNrVGFyZ2V0KCk7Cit9CisK
K3ZvaWQgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjphcHBsaWNhdGlvbldpbGxFbnRlckJh
Y2tncm91bmQoKSBjb25zdAoreworICAgIExPRyhNZWRpYSwgIlBsYXRmb3JtTWVkaWFTZXNzaW9u
TWFuYWdlcjo6YXBwbGljYXRpb25XaWxsRW50ZXJCYWNrZ3JvdW5kIik7CisgICAgVmVjdG9yPFBs
YXRmb3JtTWVkaWFTZXNzaW9uKj4gc2Vzc2lvbnMgPSBtX3Nlc3Npb25zOworICAgIGZvciAoYXV0
byogc2Vzc2lvbiA6IHNlc3Npb25zKSB7CisgICAgICAgIGlmIChtX3Jlc3RyaWN0aW9uc1tzZXNz
aW9uLT5tZWRpYVR5cGUoKV0gJiBCYWNrZ3JvdW5kUHJvY2Vzc1BsYXliYWNrUmVzdHJpY3RlZCkK
KyAgICAgICAgICAgIHNlc3Npb24tPmJlZ2luSW50ZXJydXB0aW9uKFBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpFbnRlcmluZ0JhY2tncm91bmQpOworICAgIH0KK30KKwordm9pZCBQbGF0Zm9ybU1lZGlh
U2Vzc2lvbk1hbmFnZXI6OmFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZCgpIGNvbnN0Cit7
CisgICAgTE9HKE1lZGlhLCAiUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjphcHBsaWNhdGlv
bldpbGxFbnRlckZvcmVncm91bmQiKTsKKyAgICBWZWN0b3I8UGxhdGZvcm1NZWRpYVNlc3Npb24q
PiBzZXNzaW9ucyA9IG1fc2Vzc2lvbnM7CisgICAgZm9yIChhdXRvKiBzZXNzaW9uIDogc2Vzc2lv
bnMpIHsKKyAgICAgICAgaWYgKG1fcmVzdHJpY3Rpb25zW3Nlc3Npb24tPm1lZGlhVHlwZSgpXSAm
IEJhY2tncm91bmRQcm9jZXNzUGxheWJhY2tSZXN0cmljdGVkKQorICAgICAgICAgICAgc2Vzc2lv
bi0+ZW5kSW50ZXJydXB0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNYXlSZXN1bWVQbGF5aW5n
KTsKKyAgICB9Cit9CisKKyNpZiAhUExBVEZPUk0oQ09DT0EpCit2b2lkIFBsYXRmb3JtTWVkaWFT
ZXNzaW9uTWFuYWdlcjo6dXBkYXRlU2Vzc2lvblN0YXRlKCkKK3sKK30KKyNlbmRpZgorCit2b2lk
IFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6ZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21t
YW5kKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUgY29tbWFu
ZCkKK3sKKyAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbiogYWN0aXZlU2Vzc2lvbiA9IGN1cnJlbnRT
ZXNzaW9uKCk7CisgICAgaWYgKCFhY3RpdmVTZXNzaW9uIHx8ICFhY3RpdmVTZXNzaW9uLT5jYW5S
ZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmRzKCkpCisgICAgICAgIHJldHVybjsKKyAgICBhY3Rp
dmVTZXNzaW9uLT5kaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoY29tbWFuZCk7Cit9CisK
K3ZvaWQgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpzeXN0ZW1XaWxsU2xlZXAoKQorewor
ICAgIGlmIChtX2ludGVycnVwdGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBmb3IgKGF1dG8g
c2Vzc2lvbiA6IG1fc2Vzc2lvbnMpCisgICAgICAgIHNlc3Npb24tPmJlZ2luSW50ZXJydXB0aW9u
KFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTeXN0ZW1TbGVlcCk7Cit9CisKK3ZvaWQgUGxhdGZvcm1N
ZWRpYVNlc3Npb25NYW5hZ2VyOjpzeXN0ZW1EaWRXYWtlKCkKK3sKKyAgICBpZiAobV9pbnRlcnJ1
cHRlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9yIChhdXRvIHNlc3Npb24gOiBtX3Nlc3Np
b25zKQorICAgICAgICBzZXNzaW9uLT5lbmRJbnRlcnJ1cHRpb24oUGxhdGZvcm1NZWRpYVNlc3Np
b246Ok1heVJlc3VtZVBsYXlpbmcpOworfQorCit2b2lkIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFu
YWdlcjo6YXVkaW9PdXRwdXREZXZpY2VDaGFuZ2VkKCkKK3sKKyAgICB1cGRhdGVTZXNzaW9uU3Rh
dGUoKTsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MmQ3NDhhMGJiZjUyYzdiNWE2Zjk2ZDZiZTE2MGVhYmMxMjNkNDZkOAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFu
YWdlci5oCkBAIC0wLDAgKzEsMTMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTUg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFBsYXRm
b3JtTWVkaWFTZXNzaW9uTWFuYWdlcl9oCisjZGVmaW5lIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFu
YWdlcl9oCisKKyNpbmNsdWRlICJBdWRpb0hhcmR3YXJlTGlzdGVuZXIuaCIKKyNpbmNsdWRlICJQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbi5oIgorI2luY2x1ZGUgIlJlbW90ZUNvbW1hbmRMaXN0ZW5lci5o
IgorI2luY2x1ZGUgIlNldHRpbmdzLmgiCisjaW5jbHVkZSAiU3lzdGVtU2xlZXBMaXN0ZW5lci5o
IgorI2luY2x1ZGUgPG1hcD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgSFRNTE1lZGlhRWxlbWVudDsKK2NsYXNzIFBsYXRmb3JtTWVkaWFT
ZXNzaW9uOworY2xhc3MgUmVtb3RlQ29tbWFuZExpc3RlbmVyOworCitjbGFzcyBQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbk1hbmFnZXIgOiBwcml2YXRlIFJlbW90ZUNvbW1hbmRMaXN0ZW5lckNsaWVudCwg
cHJpdmF0ZSBTeXN0ZW1TbGVlcExpc3RlbmVyOjpDbGllbnQsIHByaXZhdGUgQXVkaW9IYXJkd2Fy
ZUxpc3RlbmVyOjpDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGlj
OgorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIm
IHNoYXJlZE1hbmFnZXIoKTsKKyAgICB2aXJ0dWFsIH5QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFn
ZXIoKSB7IH0KKworICAgIGJvb2wgaGFzKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUp
IGNvbnN0OworICAgIGludCBjb3VudChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlKSBj
b25zdDsKKyAgICBib29sIGFjdGl2ZUF1ZGlvU2Vzc2lvblJlcXVpcmVkKCkgY29uc3Q7CisKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGJlZ2luSW50ZXJydXB0aW9uKFBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpJbnRlcnJ1cHRpb25UeXBlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGVuZEludGVy
cnVwdGlvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6RW5kSW50ZXJydXB0aW9uRmxhZ3MpOworCisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQoKSBj
b25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGxpY2F0aW9uV2lsbEVudGVyQmFja2dy
b3VuZCgpIGNvbnN0OworCisgICAgZW51bSBTZXNzaW9uUmVzdHJpY3Rpb25GbGFncyB7CisgICAg
ICAgIE5vUmVzdHJpY3Rpb25zID0gMCwKKyAgICAgICAgQ29uY3VycmVudFBsYXliYWNrTm90UGVy
bWl0dGVkID0gMSA8PCAwLAorICAgICAgICBJbmxpbmVWaWRlb1BsYXliYWNrUmVzdHJpY3RlZCA9
IDEgPDwgMSwKKyAgICAgICAgTWV0YWRhdGFQcmVsb2FkaW5nTm90UGVybWl0dGVkID0gMSA8PCAy
LAorICAgICAgICBBdXRvUHJlbG9hZGluZ05vdFBlcm1pdHRlZCA9IDEgPDwgMywKKyAgICAgICAg
QmFja2dyb3VuZFByb2Nlc3NQbGF5YmFja1Jlc3RyaWN0ZWQgPSAxIDw8IDQsCisgICAgICAgIEJh
Y2tncm91bmRUYWJQbGF5YmFja1Jlc3RyaWN0ZWQgPSAxIDw8IDUsCisgICAgICAgIEludGVycnVw
dGVkUGxheWJhY2tOb3RQZXJtaXR0ZWQgPSAxIDw8IDYsCisgICAgfTsKKyAgICB0eXBlZGVmIHVu
c2lnbmVkIFNlc3Npb25SZXN0cmljdGlvbnM7CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFk
ZFJlc3RyaWN0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUsIFNlc3Npb25SZXN0
cmljdGlvbnMpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlUmVzdHJpY3Rpb24oUGxh
dGZvcm1NZWRpYVNlc3Npb246Ok1lZGlhVHlwZSwgU2Vzc2lvblJlc3RyaWN0aW9ucyk7CisgICAg
V0VCQ09SRV9FWFBPUlQgU2Vzc2lvblJlc3RyaWN0aW9ucyByZXN0cmljdGlvbnMoUGxhdGZvcm1N
ZWRpYVNlc3Npb246Ok1lZGlhVHlwZSk7CisgICAgdmlydHVhbCB2b2lkIHJlc2V0UmVzdHJpY3Rp
b25zKCk7CisKKyAgICB2aXJ0dWFsIGJvb2wgc2Vzc2lvbldpbGxCZWdpblBsYXliYWNrKFBsYXRm
b3JtTWVkaWFTZXNzaW9uJik7CisgICAgdmlydHVhbCB2b2lkIHNlc3Npb25XaWxsRW5kUGxheWJh
Y2soUGxhdGZvcm1NZWRpYVNlc3Npb24mKTsKKworICAgIGJvb2wgc2Vzc2lvblJlc3RyaWN0c0lu
bGluZVZpZGVvUGxheWJhY2soY29uc3QgUGxhdGZvcm1NZWRpYVNlc3Npb24mKSBjb25zdDsKKwor
ICAgIHZpcnR1YWwgYm9vbCBzZXNzaW9uQ2FuTG9hZE1lZGlhKGNvbnN0IFBsYXRmb3JtTWVkaWFT
ZXNzaW9uJikgY29uc3Q7CisKKyNpZiBQTEFURk9STShJT1MpCisgICAgdmlydHVhbCB2b2lkIGNv
bmZpZ3VyZVdpcmVMZXNzVGFyZ2V0TW9uaXRvcmluZygpIHsgfQorICAgIHZpcnR1YWwgYm9vbCBo
YXNXaXJlbGVzc1RhcmdldHNBdmFpbGFibGUoKSB7IHJldHVybiBmYWxzZTsgfQorI2VuZGlmCisK
KyAgICB2b2lkIHNldEN1cnJlbnRTZXNzaW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uJik7CisgICAg
UGxhdGZvcm1NZWRpYVNlc3Npb24qIGN1cnJlbnRTZXNzaW9uKCk7CisKK3Byb3RlY3RlZDoKKyAg
ICBmcmllbmQgY2xhc3MgUGxhdGZvcm1NZWRpYVNlc3Npb247CisgICAgZXhwbGljaXQgUGxhdGZv
cm1NZWRpYVNlc3Npb25NYW5hZ2VyKCk7CisKKyAgICB2b2lkIGFkZFNlc3Npb24oUGxhdGZvcm1N
ZWRpYVNlc3Npb24mKTsKKyAgICB2b2lkIHJlbW92ZVNlc3Npb24oUGxhdGZvcm1NZWRpYVNlc3Np
b24mKTsKKworICAgIFZlY3RvcjxQbGF0Zm9ybU1lZGlhU2Vzc2lvbio+IHNlc3Npb25zKCkgeyBy
ZXR1cm4gbV9zZXNzaW9uczsgfQorCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBJbnRlcm5h
bHM7CisKKyAgICB2b2lkIHVwZGF0ZVNlc3Npb25TdGF0ZSgpOworCisgICAgLy8gUmVtb3RlQ29t
bWFuZExpc3RlbmVyQ2xpZW50CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGRpZFJl
Y2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29u
dHJvbENvbW1hbmRUeXBlKSBvdmVycmlkZTsKKworICAgIC8vIEF1ZGlvSGFyZHdhcmVMaXN0ZW5l
ckNsaWVudAorICAgIHZpcnR1YWwgdm9pZCBhdWRpb0hhcmR3YXJlRGlkQmVjb21lQWN0aXZlKCkg
b3ZlcnJpZGUgeyB9CisgICAgdmlydHVhbCB2b2lkIGF1ZGlvSGFyZHdhcmVEaWRCZWNvbWVJbmFj
dGl2ZSgpIG92ZXJyaWRlIHsgfQorICAgIHZpcnR1YWwgdm9pZCBhdWRpb091dHB1dERldmljZUNo
YW5nZWQoKSBvdmVycmlkZTsKKworICAgIC8vIFN5c3RlbVNsZWVwTGlzdGVuZXIKKyAgICB2aXJ0
dWFsIHZvaWQgc3lzdGVtV2lsbFNsZWVwKCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHN5
c3RlbURpZFdha2UoKSBvdmVycmlkZTsKKworICAgIFNlc3Npb25SZXN0cmljdGlvbnMgbV9yZXN0
cmljdGlvbnNbUGxhdGZvcm1NZWRpYVNlc3Npb246OldlYkF1ZGlvICsgMV07CisgICAgVmVjdG9y
PFBsYXRmb3JtTWVkaWFTZXNzaW9uKj4gbV9zZXNzaW9uczsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
UmVtb3RlQ29tbWFuZExpc3RlbmVyPiBtX3JlbW90ZUNvbW1hbmRMaXN0ZW5lcjsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8U3lzdGVtU2xlZXBMaXN0ZW5lcj4gbV9zeXN0ZW1TbGVlcExpc3RlbmVyOwor
ICAgIFJlZlB0cjxBdWRpb0hhcmR3YXJlTGlzdGVuZXI+IG1fYXVkaW9IYXJkd2FyZUxpc3RlbmVy
OworCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElP
UykKKyAgICBSZWZQdHI8TWVkaWFQbGF5YmFja1RhcmdldD4gbV9wbGF5YmFja1RhcmdldDsKKyAg
ICBib29sIG1fY2FuUGxheVRvVGFyZ2V0IHsgZmFsc2UgfTsKKyNlbmRpZgorCisgICAgYm9vbCBt
X2ludGVycnVwdGVkIHsgZmFsc2UgfTsKK307CisKK30KKworI2VuZGlmIC8vIFBsYXRmb3JtTWVk
aWFTZXNzaW9uTWFuYWdlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MuaAppbmRleCBkYzg2MjFmOWUwN2Nl
ZmU3NDM2NWY3ZTFiNDQ3NDAwNTQ5NjM4YmFiLi4zYjJlNzVmMTkzMjFlMWZhZjE2MjU4NzkyMDNi
OWM0NDZlMzM0NGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9p
b3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5hZ2VySU9TLmgKQEAgLTI4LDcgKzI4LDcgQEAKIAog
I2lmIFBMQVRGT1JNKElPUykKIAotI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbk1hbmFnZXIuaCIKKyNp
bmNsdWRlICJQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaCIKICNpbmNsdWRlIDx3dGYvUmV0
YWluUHRyLmg+CiAKIE9CSkNfQ0xBU1MgV2ViTWVkaWFTZXNzaW9uSGVscGVyOwpAQCAtNDEsNyAr
NDEsNyBAQCBleHRlcm4gTlNTdHJpbmcqIFdlYlVJQXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmVO
b3RpZmljYXRpb247CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgTWVkaWFTZXNzaW9u
TWFuYWdlcmlPUyA6IHB1YmxpYyBNZWRpYVNlc3Npb25NYW5hZ2VyIHsKK2NsYXNzIE1lZGlhU2Vz
c2lvbk1hbmFnZXJpT1MgOiBwdWJsaWMgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyIHsKIHB1
YmxpYzoKICAgICB2aXJ0dWFsIH5NZWRpYVNlc3Npb25NYW5hZ2VyaU9TKCk7CiAKQEAgLTQ5LDcg
KzQ5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBoYXNXaXJlbGVzc1RhcmdldHNBdmFp
bGFibGUoKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgTWVkaWFTZXNz
aW9uTWFuYWdlcjsKKyAgICBmcmllbmQgY2xhc3MgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2Vy
OwogCiAgICAgTWVkaWFTZXNzaW9uTWFuYWdlcmlPUygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5hZ2VySU9TLm1t
CmluZGV4IDYxNzU1Y2VmMzYzYjNjZjBkYzk5NDUzNjUwYzcyNWEzYmE5OTUzMDAuLjU0NGZlZWU0
ZTQ3NWE2Mzc1NzdlN2I3MTY0MTQyYjlmZWFmZjE2YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5hZ2VySU9TLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5hZ2VySU9TLm1t
CkBAIC0xMTAsMTQgKzExMCwxNCBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1NZWRpYVNlc3Npb25NYW5hZ2VyJiBNZWRpYVNlc3Npb25NYW5hZ2Vy
OjpzaGFyZWRNYW5hZ2VyKCkKK1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlciYgUGxhdGZvcm1N
ZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkKIHsKICAgICBERVBSRUNBVEVEX0RF
RklORV9TVEFUSUNfTE9DQUwoTWVkaWFTZXNzaW9uTWFuYWdlcmlPUywgbWFuYWdlciwgKCkpOwog
ICAgIHJldHVybiBtYW5hZ2VyOwogfQogCiBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjpNZWRpYVNl
c3Npb25NYW5hZ2VyaU9TKCkKLSAgICA6TWVkaWFTZXNzaW9uTWFuYWdlcigpCisgICAgOiBQbGF0
Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIoKQogICAgICwgbV9vYmpjT2JzZXJ2ZXIoYWRvcHROUyhb
W1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBhbGxvY10gaW5pdFdpdGhDYWxsYmFjazp0aGlzXSkpCiB7
CiAgICAgcmVzZXRSZXN0cmljdGlvbnMoKTsKQEAgLTEzNCw3ICsxMzQsNyBAQCB2b2lkIE1lZGlh
U2Vzc2lvbk1hbmFnZXJpT1M6OnJlc2V0UmVzdHJpY3Rpb25zKCkKIAogICAgIExPRyhNZWRpYSwg
Ik1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OnJlc2V0UmVzdHJpY3Rpb25zIik7CiAKLSAgICBNZWRp
YVNlc3Npb25NYW5hZ2VyOjpyZXNldFJlc3RyaWN0aW9ucygpOworICAgIFBsYXRmb3JtTWVkaWFT
ZXNzaW9uTWFuYWdlcjo6cmVzZXRSZXN0cmljdGlvbnMoKTsKIAogICAgIHN0YXRpYyB3a0Rldmlj
ZUNsYXNzIGRldmljZUNsYXNzID0gaW9zRGV2aWNlQ2xhc3MoKTsKICAgICBpZiAoZGV2aWNlQ2xh
c3MgPT0gd2tEZXZpY2VDbGFzc2lQaG9uZSB8fCBkZXZpY2VDbGFzcyA9PSB3a0RldmljZUNsYXNz
aVBvZCkKQEAgLTE4OCw3ICsxODgsNyBAQCB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OmNv
bmZpZ3VyZVdpcmVMZXNzVGFyZ2V0TW9uaXRvcmluZygpCiAKIGJvb2wgTWVkaWFTZXNzaW9uTWFu
YWdlcmlPUzo6c2Vzc2lvbldpbGxCZWdpblBsYXliYWNrKFBsYXRmb3JtTWVkaWFTZXNzaW9uJiBz
ZXNzaW9uKQogewotICAgIGlmICghTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2Vzc2lvbldpbGxCZWdp
blBsYXliYWNrKHNlc3Npb24pKQorICAgIGlmICghUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2Vy
OjpzZXNzaW9uV2lsbEJlZ2luUGxheWJhY2soc2Vzc2lvbikpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgIHVwZGF0ZU5vd1BsYXlpbmdJbmZvKCk7CkBAIC0xOTcsNyArMTk3LDcgQEAgYm9v
bCBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjpzZXNzaW9uV2lsbEJlZ2luUGxheWJhY2soUGxhdGZv
cm1NZWRpYVNlc3Npb24mIHNlc3MKICAgICAKIHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6
c2Vzc2lvbldpbGxFbmRQbGF5YmFjayhQbGF0Zm9ybU1lZGlhU2Vzc2lvbiYgc2Vzc2lvbikKIHsK
LSAgICBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzZXNzaW9uV2lsbEVuZFBsYXliYWNrKHNlc3Npb24p
OworICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2Vzc2lvbldpbGxFbmRQbGF5YmFj
ayhzZXNzaW9uKTsKICAgICB1cGRhdGVOb3dQbGF5aW5nSW5mbygpOwogfQogICAgIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRGVzdGluYXRpb25N
YWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRGVzdGluYXRp
b25NYWMuY3BwCmluZGV4IGRjM2ExYjU0ZWQ0M2I3NDI4OThlNTkzOWE3YWRjZmMzOGY0ZTE1M2Mu
LjY4MzQ0ZTA3ZDk5NjIxYTdjY2E1YzNmYWU4OTVhZGIyNjBlOGUxYzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1h
Yy5jcHAKQEAgLTM4LDcgKzM4LDcgQEAKICNpbmNsdWRlICJBdWRpb1Nlc3Npb24uaCIKICNpbmNs
dWRlICJGbG9hdENvbnZlcnNpb24uaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCi0jaW5jbHVkZSAi
TWVkaWFTZXNzaW9uTWFuYWdlci5oIgorI2luY2x1ZGUgIlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFu
YWdlci5oIgogI2luY2x1ZGUgIlZlY3Rvck1hdGguaCIKICNpbmNsdWRlIDxDb3JlQXVkaW8vQXVk
aW9IYXJkd2FyZS5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9tYWMvTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9tYWMvTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5jcHAKaW5kZXggZTI3NDQxODgwOWI3
ZDQ1MTUyZmZhM2JkYWMwOWY2NGU2MjliNDE3YS4uYjM4OWVlZGZhZWUwNjI0OTRiMzlkMTNiNGM3
ZDM4ZjE0MWQ2NGI2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
bWFjL01lZGlhU2Vzc2lvbk1hbmFnZXJNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL21hYy9NZWRpYVNlc3Npb25NYW5hZ2VyTWFjLmNwcApAQCAtMjQsNyArMjQsNyBA
QAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJNZWRpYVNlc3Npb25NYW5h
Z2VyLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmgiCiAKICNpZiBV
U0UoQVVESU9fU0VTU0lPTikKIApAQCAtMzcsOSArMzcsOSBAQCB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIHN0YXRpYyBjb25zdCBzaXplX3Qga1dlYkF1ZGlvQnVmZmVyU2l6ZSA9IDEyODsKIHN0
YXRpYyBjb25zdCBzaXplX3Qga0xvd1Bvd2VyVmlkZW9CdWZmZXJTaXplID0gNDA5NjsKIAotdm9p
ZCBNZWRpYVNlc3Npb25NYW5hZ2VyOjp1cGRhdGVTZXNzaW9uU3RhdGUoKQordm9pZCBQbGF0Zm9y
bU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnVwZGF0ZVNlc3Npb25TdGF0ZSgpCiB7Ci0gICAgTE9HKE1l
ZGlhLCAiTWVkaWFTZXNzaW9uTWFuYWdlcjo6dXBkYXRlU2Vzc2lvblN0YXRlKCkgLSB0eXBlczog
VmlkZW8oJWQpLCBBdWRpbyglZCksIFdlYkF1ZGlvKCVkKSIsIGNvdW50KFBsYXRmb3JtTWVkaWFT
ZXNzaW9uOjpWaWRlbyksIGNvdW50KFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpBdWRpbyksIGNvdW50
KFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpXZWJBdWRpbykpOworICAgIExPRyhNZWRpYSwgIlBsYXRm
b3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6dXBkYXRlU2Vzc2lvblN0YXRlKCkgLSB0eXBlczogVmlk
ZW8oJWQpLCBBdWRpbyglZCksIFdlYkF1ZGlvKCVkKSIsIGNvdW50KFBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpWaWRlbyksIGNvdW50KFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpBdWRpbyksIGNvdW50KFBs
YXRmb3JtTWVkaWFTZXNzaW9uOjpXZWJBdWRpbykpOwogCiAgICAgaWYgKGhhcyhQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6V2ViQXVkaW8pKQogICAgICAgICBBdWRpb1Nlc3Npb246OnNoYXJlZFNlc3Np
b24oKS5zZXRQcmVmZXJyZWRCdWZmZXJTaXplKGtXZWJBdWRpb0J1ZmZlclNpemUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IGU1N2RjMTljMmY5YWVkNTI1NjEyNzgyZDNm
MDI4OGRjMTQwN2I3ZjQuLjJkMjlkYjc1Yjc4ZDc1OGRjNDAwMDY0YzIwOTkyZTM5OTk4ZDcwOTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTc5LDcgKzc5LDYgQEAKICNp
bmNsdWRlICJNYWluRnJhbWUuaCIKICNpbmNsdWRlICJNYWxsb2NTdGF0aXN0aWNzLmgiCiAjaW5j
bHVkZSAiTWVkaWFQbGF5ZXIuaCIKLSNpbmNsdWRlICJNZWRpYVNlc3Npb25NYW5hZ2VyLmgiCiAj
aW5jbHVkZSAiTWVtb3J5Q2FjaGUuaCIKICNpbmNsdWRlICJNZW1vcnlJbmZvLmgiCiAjaW5jbHVk
ZSAiTWljcm9UYXNrLmgiCkBAIC04OCw2ICs4Nyw3IEBACiAjaW5jbHVkZSAiUGFnZS5oIgogI2lu
Y2x1ZGUgIlBhZ2VDYWNoZS5oIgogI2luY2x1ZGUgIlBhZ2VPdmVybGF5LmgiCisjaW5jbHVkZSAi
UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiUHJpbnRDb250ZXh0Lmgi
CiAjaW5jbHVkZSAiUHNldWRvRWxlbWVudC5oIgogI2luY2x1ZGUgIlJhbmdlLmgiCkBAIC0zMjIs
NyArMzIyLDcgQEAgdm9pZCBJbnRlcm5hbHM6OnJlc2V0VG9Db25zaXN0ZW50U3RhdGUoUGFnZSog
cGFnZSkKICAgICBwYWdlLT5tYWluRnJhbWUoKS5sb2FkZXIoKS5jbGVhclRlc3RpbmdPdmVycmlk
ZXMoKTsKICAgICBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c2luZ2xldG9uKCkuc2V0RGVmYXVs
dE9yaWdpblF1b3RhKEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpub1F1b3RhKCkpOwogI2lmIEVO
QUJMRShWSURFTykKLSAgICBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkucmVz
ZXRSZXN0cmljdGlvbnMoKTsKKyAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJl
ZE1hbmFnZXIoKS5yZXNldFJlc3RyaWN0aW9ucygpOwogI2VuZGlmCiAjaWYgSEFWRShBQ0NFU1NJ
QklMSVRZKQogICAgIEFYT2JqZWN0Q2FjaGU6OnNldEVuaGFuY2VkVXNlckludGVyZmFjZUFjY2Vz
c2liaWxpdHkoZmFsc2UpOwpAQCAtMjU5MSw3ICsyNTkxLDcgQEAgVmVjdG9yPFN0cmluZz4gSW50
ZXJuYWxzOjpidWZmZXJlZFNhbXBsZXNGb3JUcmFja0lEKFNvdXJjZUJ1ZmZlciogYnVmZmVyLCBj
b25zdAogI2lmIEVOQUJMRShWSURFTykKIHZvaWQgSW50ZXJuYWxzOjpiZWdpbk1lZGlhU2Vzc2lv
bkludGVycnVwdGlvbigpCiB7Ci0gICAgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdl
cigpLmJlZ2luSW50ZXJydXB0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTeXN0ZW1JbnRlcnJ1
cHRpb24pOworICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigp
LmJlZ2luSW50ZXJydXB0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTeXN0ZW1JbnRlcnJ1cHRp
b24pOwogfQogCiB2b2lkIEludGVybmFsczo6ZW5kTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uKGNv
bnN0IFN0cmluZyYgZmxhZ3NTdHJpbmcpCkBAIC0yNjAxLDE3ICsyNjAxLDE3IEBAIHZvaWQgSW50
ZXJuYWxzOjplbmRNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb24oY29uc3QgU3RyaW5nJiBmbGFnc1N0
cmluZykKICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZmxhZ3NTdHJpbmcsICJNYXlSZXN1bWVQ
bGF5aW5nIikpCiAgICAgICAgIGZsYWdzID0gUGxhdGZvcm1NZWRpYVNlc3Npb246Ok1heVJlc3Vt
ZVBsYXlpbmc7CiAgICAgCi0gICAgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigp
LmVuZEludGVycnVwdGlvbihmbGFncyk7CisgICAgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2Vy
OjpzaGFyZWRNYW5hZ2VyKCkuZW5kSW50ZXJydXB0aW9uKGZsYWdzKTsKIH0KIAogdm9pZCBJbnRl
cm5hbHM6OmFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZCgpIGNvbnN0CiB7Ci0gICAgTWVk
aWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLmFwcGxpY2F0aW9uV2lsbEVudGVyRm9y
ZWdyb3VuZCgpOworICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdl
cigpLmFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZCgpOwogfQogCiB2b2lkIEludGVybmFs
czo6YXBwbGljYXRpb25XaWxsRW50ZXJCYWNrZ3JvdW5kKCkgY29uc3QKIHsKLSAgICBNZWRpYVNl
c3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuYXBwbGljYXRpb25XaWxsRW50ZXJCYWNrZ3Jv
dW5kKCk7CisgICAgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCku
YXBwbGljYXRpb25XaWxsRW50ZXJCYWNrZ3JvdW5kKCk7CiB9CiAKIHZvaWQgSW50ZXJuYWxzOjpz
ZXRNZWRpYVNlc3Npb25SZXN0cmljdGlvbnMoY29uc3QgU3RyaW5nJiBtZWRpYVR5cGVTdHJpbmcs
IGNvbnN0IFN0cmluZyYgcmVzdHJpY3Rpb25zU3RyaW5nLCBFeGNlcHRpb25Db2RlJiBlYykKQEAg
LTI2MjgsMzAgKzI2MjgsMzAgQEAgdm9pZCBJbnRlcm5hbHM6OnNldE1lZGlhU2Vzc2lvblJlc3Ry
aWN0aW9ucyhjb25zdCBTdHJpbmcmIG1lZGlhVHlwZVN0cmluZywgY29uc3QKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OlNlc3Npb25SZXN0cmljdGlv
bnMgcmVzdHJpY3Rpb25zID0gTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLnJl
c3RyaWN0aW9ucyhtZWRpYVR5cGUpOwotICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1h
bmFnZXIoKS5yZW1vdmVSZXN0cmljdGlvbihtZWRpYVR5cGUsIHJlc3RyaWN0aW9ucyk7CisgICAg
UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpTZXNzaW9uUmVzdHJpY3Rpb25zIHJlc3RyaWN0
aW9ucyA9IFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLnJlc3Ry
aWN0aW9ucyhtZWRpYVR5cGUpOworICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hh
cmVkTWFuYWdlcigpLnJlbW92ZVJlc3RyaWN0aW9uKG1lZGlhVHlwZSwgcmVzdHJpY3Rpb25zKTsK
IAotICAgIHJlc3RyaWN0aW9ucyA9IE1lZGlhU2Vzc2lvbk1hbmFnZXI6Ok5vUmVzdHJpY3Rpb25z
OworICAgIHJlc3RyaWN0aW9ucyA9IFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6Tm9SZXN0
cmljdGlvbnM7CiAKICAgICBWZWN0b3I8U3RyaW5nPiByZXN0cmljdGlvbnNBcnJheTsKICAgICBy
ZXN0cmljdGlvbnNTdHJpbmcuc3BsaXQoJywnLCBmYWxzZSwgcmVzdHJpY3Rpb25zQXJyYXkpOwog
ICAgIGZvciAoYXV0byYgcmVzdHJpY3Rpb25TdHJpbmcgOiByZXN0cmljdGlvbnNBcnJheSkgewog
ICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UocmVzdHJpY3Rpb25TdHJpbmcsICJDb25jdXJy
ZW50UGxheWJhY2tOb3RQZXJtaXR0ZWQiKSkKLSAgICAgICAgICAgIHJlc3RyaWN0aW9ucyB8PSBN
ZWRpYVNlc3Npb25NYW5hZ2VyOjpDb25jdXJyZW50UGxheWJhY2tOb3RQZXJtaXR0ZWQ7CisgICAg
ICAgICAgICByZXN0cmljdGlvbnMgfD0gUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpDb25j
dXJyZW50UGxheWJhY2tOb3RQZXJtaXR0ZWQ7CiAgICAgICAgIGlmIChlcXVhbElnbm9yaW5nQ2Fz
ZShyZXN0cmljdGlvblN0cmluZywgIklubGluZVZpZGVvUGxheWJhY2tSZXN0cmljdGVkIikpCi0g
ICAgICAgICAgICByZXN0cmljdGlvbnMgfD0gTWVkaWFTZXNzaW9uTWFuYWdlcjo6SW5saW5lVmlk
ZW9QbGF5YmFja1Jlc3RyaWN0ZWQ7CisgICAgICAgICAgICByZXN0cmljdGlvbnMgfD0gUGxhdGZv
cm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpJbmxpbmVWaWRlb1BsYXliYWNrUmVzdHJpY3RlZDsKICAg
ICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHJlc3RyaWN0aW9uU3RyaW5nLCAiTWV0YWRhdGFQ
cmVsb2FkaW5nTm90UGVybWl0dGVkIikpCi0gICAgICAgICAgICByZXN0cmljdGlvbnMgfD0gTWVk
aWFTZXNzaW9uTWFuYWdlcjo6TWV0YWRhdGFQcmVsb2FkaW5nTm90UGVybWl0dGVkOworICAgICAg
ICAgICAgcmVzdHJpY3Rpb25zIHw9IFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6TWV0YWRh
dGFQcmVsb2FkaW5nTm90UGVybWl0dGVkOwogICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2Uo
cmVzdHJpY3Rpb25TdHJpbmcsICJBdXRvUHJlbG9hZGluZ05vdFBlcm1pdHRlZCIpKQotICAgICAg
ICAgICAgcmVzdHJpY3Rpb25zIHw9IE1lZGlhU2Vzc2lvbk1hbmFnZXI6OkF1dG9QcmVsb2FkaW5n
Tm90UGVybWl0dGVkOworICAgICAgICAgICAgcmVzdHJpY3Rpb25zIHw9IFBsYXRmb3JtTWVkaWFT
ZXNzaW9uTWFuYWdlcjo6QXV0b1ByZWxvYWRpbmdOb3RQZXJtaXR0ZWQ7CiAgICAgICAgIGlmIChl
cXVhbElnbm9yaW5nQ2FzZShyZXN0cmljdGlvblN0cmluZywgIkJhY2tncm91bmRQcm9jZXNzUGxh
eWJhY2tSZXN0cmljdGVkIikpCi0gICAgICAgICAgICByZXN0cmljdGlvbnMgfD0gTWVkaWFTZXNz
aW9uTWFuYWdlcjo6QmFja2dyb3VuZFByb2Nlc3NQbGF5YmFja1Jlc3RyaWN0ZWQ7CisgICAgICAg
ICAgICByZXN0cmljdGlvbnMgfD0gUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpCYWNrZ3Jv
dW5kUHJvY2Vzc1BsYXliYWNrUmVzdHJpY3RlZDsKICAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdD
YXNlKHJlc3RyaWN0aW9uU3RyaW5nLCAiQmFja2dyb3VuZFRhYlBsYXliYWNrUmVzdHJpY3RlZCIp
KQotICAgICAgICAgICAgcmVzdHJpY3Rpb25zIHw9IE1lZGlhU2Vzc2lvbk1hbmFnZXI6OkJhY2tn
cm91bmRUYWJQbGF5YmFja1Jlc3RyaWN0ZWQ7CisgICAgICAgICAgICByZXN0cmljdGlvbnMgfD0g
UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpCYWNrZ3JvdW5kVGFiUGxheWJhY2tSZXN0cmlj
dGVkOwogICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UocmVzdHJpY3Rpb25TdHJpbmcsICJJ
bnRlcnJ1cHRlZFBsYXliYWNrTm90UGVybWl0dGVkIikpCi0gICAgICAgICAgICByZXN0cmljdGlv
bnMgfD0gTWVkaWFTZXNzaW9uTWFuYWdlcjo6SW50ZXJydXB0ZWRQbGF5YmFja05vdFBlcm1pdHRl
ZDsKKyAgICAgICAgICAgIHJlc3RyaWN0aW9ucyB8PSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFn
ZXI6OkludGVycnVwdGVkUGxheWJhY2tOb3RQZXJtaXR0ZWQ7CiAgICAgfQotICAgIE1lZGlhU2Vz
c2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5hZGRSZXN0cmljdGlvbihtZWRpYVR5cGUsIHJl
c3RyaWN0aW9ucyk7CisgICAgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5h
Z2VyKCkuYWRkUmVzdHJpY3Rpb24obWVkaWFUeXBlLCByZXN0cmljdGlvbnMpOwogfQogCiB2b2lk
IEludGVybmFsczo6c2V0TWVkaWFFbGVtZW50UmVzdHJpY3Rpb25zKEhUTUxNZWRpYUVsZW1lbnQq
IGVsZW1lbnQsIGNvbnN0IFN0cmluZyYgcmVzdHJpY3Rpb25zU3RyaW5nLCBFeGNlcHRpb25Db2Rl
JiBlYykKQEAgLTI3MTgsNyArMjcxOCw3IEBAIHZvaWQgSW50ZXJuYWxzOjpwb3N0UmVtb3RlQ29u
dHJvbENvbW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5kU3RyaW5nLCBFeGNlcHRpb25DCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVk
TWFuYWdlcigpLmRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChjb21tYW5kKTsKKyAgICBQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5kaWRSZWNlaXZlUmVt
b3RlQ29udHJvbENvbW1hbmQoY29tbWFuZCk7CiB9CiAKIGJvb2wgSW50ZXJuYWxzOjplbGVtZW50
SXNCbG9ja2luZ0Rpc3BsYXlTbGVlcChFbGVtZW50KiBlbGVtZW50KSBjb25zdApAQCAtMjc1OSwx
NCArMjc1OSwxNCBAQCB2b2lkIEludGVybmFsczo6c2V0QXVkaW9Db250ZXh0UmVzdHJpY3Rpb25z
KEF1ZGlvQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nCiB2b2lkIEludGVybmFsczo6c2lt
dWxhdGVTeXN0ZW1TbGVlcCgpIGNvbnN0CiB7CiAjaWYgRU5BQkxFKFZJREVPKQotICAgIE1lZGlh
U2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5zeXN0ZW1XaWxsU2xlZXAoKTsKKyAgICBQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5zeXN0ZW1XaWxsU2xl
ZXAoKTsKICNlbmRpZgogfQogCiB2b2lkIEludGVybmFsczo6c2ltdWxhdGVTeXN0ZW1XYWtlKCkg
Y29uc3QKIHsKICNpZiBFTkFCTEUoVklERU8pCi0gICAgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hh
cmVkTWFuYWdlcigpLnN5c3RlbURpZFdha2UoKTsKKyAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1h
bmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5zeXN0ZW1EaWRXYWtlKCk7CiAjZW5kaWYKIH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>