<?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>194553</bug_id>
          
          <creation_ts>2019-02-12 12:54:06 -0800</creation_ts>
          <short_desc>[WPE][GTK][STABLE] Remove sandbox APIs from 2.24 branch</short_desc>
          <delta_ts>2019-02-14 03:32:16 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=194274</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Catanzaro">mcatanzaro</reporter>
          <assigned_to name="Michael Catanzaro">mcatanzaro</assigned_to>
          <cc>bugs-noreply</cc>
    
    <cc>cgarcia</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>pgriffis</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1505344</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-02-12 12:54:06 -0800</bug_when>
    <thetext>Remove the sandbox APIs from the 2.24 branch, since they haven&apos;t received enough testing yet.

My patch in bug #194274 upgrades the Since tags to 2.26, for trunk.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1505347</commentid>
    <comment_count>1</comment_count>
      <attachid>361824</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-02-12 12:55:01 -0800</bug_when>
    <thetext>Created attachment 361824
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1505635</commentid>
    <comment_count>2</comment_count>
      <attachid>361824</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-02-12 23:32:15 -0800</bug_when>
    <thetext>Comment on attachment 361824
Patch

Not only the APIs, we should remove the implementation as well, we don&apos;t want dead code in the stable branch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1505722</commentid>
    <comment_count>3</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-02-13 08:37:46 -0800</bug_when>
    <thetext>I think all the code is guarded by ENABLE(BUBBLEWRAP_SANDBOX), so it should not be built. I can remove it all if you want, but there&apos;s probably no benefit, and there&apos;s a small cost in making backports harder.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1505737</commentid>
    <comment_count>4</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-02-13 09:01:57 -0800</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #3)
&gt; I think all the code is guarded by ENABLE(BUBBLEWRAP_SANDBOX), so it should
&gt; not be built. I can remove it all if you want, but there&apos;s probably no
&gt; benefit, and there&apos;s a small cost in making backports harder.

We are not going to backport any sandbox fix anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1505768</commentid>
    <comment_count>5</comment_count>
      <attachid>361925</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-02-13 10:47:25 -0800</bug_when>
    <thetext>Created attachment 361925
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1506118</commentid>
    <comment_count>6</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-02-14 03:31:28 -0800</bug_when>
    <thetext>Committed r241540: &lt;https://trac.webkit.org/changeset/241540&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>361824</attachid>
            <date>2019-02-12 12:55:01 -0800</date>
            <delta_ts>2019-02-13 10:47:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-194553-20190212145500.patch</filename>
            <type>text/plain</type>
            <size>9855</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQxMzA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGZjYTJkZTMwYWMxZTcxZTQ3
ZTZlZjc4NmJlYTIyOTMyMzRiMzY4YWEuLmRiMDg4YjE5YmY0NmM5OGNkNjg0ODY3NDM3YjAxYWJm
MWEzM2I4MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTktMDItMTIgIE1pY2hhZWwg
Q2F0YW56YXJvICA8bWNhdGFuemFyb0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtXUEVdW0dUS11b
U1RBQkxFXSBSZW1vdmUgc2FuZGJveCBBUElzIGZyb20gMi4yNCBicmFuY2gKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NDU1MworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdFdlYkNvbnRleHQuY3BwOgorICAgICAgICAod2Via2l0X3dlYl9jb250ZXh0X3NldF9z
YW5kYm94X2VuYWJsZWQpOiBEZWxldGVkLgorICAgICAgICAod2Via2l0X3dlYl9jb250ZXh0X2Fk
ZF9wYXRoX3RvX3NhbmRib3gpOiBEZWxldGVkLgorICAgICAgICAod2Via2l0X3dlYl9jb250ZXh0
X2dldF9zYW5kYm94X2VuYWJsZWQpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYkNvbnRleHQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9kb2Nz
L3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dw
ZS9XZWJLaXRXZWJDb250ZXh0Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS93cGUvZG9jcy93
cGUtMC4xLXNlY3Rpb25zLnR4dDoKKwogMjAxOS0wMi0xMiAgTWljaGFlbCBDYXRhbnphcm8gIDxt
Y2F0YW56YXJvQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dQRV1bR1RLXSBVbnNhZmUgZ191bnNl
dGVudigpIHVzZSBpbiBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3Bw
CmluZGV4IDcyNGM1ZmJmNWU4NDdjZWQxZjMwZmIwOGNmZDU4ZDhkMWY1NjlmMGIuLmRlYjVlMDZj
OGIxM2M5ZDBlNDZlZmNlMjExYTJiMTIwZDY2OTNjMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCkBAIC0xMTQ3LDcz
ICsxMTQ3LDYgQEAgdm9pZCB3ZWJraXRfd2ViX2NvbnRleHRfcmVnaXN0ZXJfdXJpX3NjaGVtZShX
ZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0LCBjb25zdCBjaGEKICAgICAgICAgY29udGV4dC0+cHJp
di0+cHJvY2Vzc1Bvb2wtPnJlZ2lzdGVyU2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2woU3RyaW5nOjpm
cm9tVVRGOChzY2hlbWUpKTsKIH0KIAotLyoqCi0gKiB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X3Nh
bmRib3hfZW5hYmxlZDoKLSAqIEBjb250ZXh0OiBhICNXZWJLaXRXZWJDb250ZXh0Ci0gKiBAZW5h
YmxlZDogaWYgJVRSVUUgZW5hYmxlIHNhbmRib3hpbmcKLSAqCi0gKiBTZXQgd2hldGhlciBXZWJL
aXQgc3VicHJvY2Vzc2VzIHdpbGwgYmUgc2FuZGJveGVkLCBsaW1pdGluZyBhY2Nlc3MgdG8gdGhl
IHN5c3RlbS4KLSAqCi0gKiBUaGlzIG1ldGhvZCAqKm11c3QgYmUgY2FsbGVkIGJlZm9yZSBhbnkg
d2ViIHByb2Nlc3MgaGFzIGJlZW4gY3JlYXRlZCoqLAotICogYXMgZWFybHkgYXMgcG9zc2libGUg
aW4geW91ciBhcHBsaWNhdGlvbi4gQ2FsbGluZyBpdCBsYXRlciBpcyBhIGZhdGFsIGVycm9yLgot
ICoKLSAqIFRoaXMgaXMgb25seSBpbXBsZW1lbnRlZCBvbiBMaW51eCBhbmQgaXMgYSBuby1vcCBv
dGhlcndpc2UuCi0gKgotICogU2luY2U6IDIuMjQKLSAqLwotdm9pZCB3ZWJraXRfd2ViX2NvbnRl
eHRfc2V0X3NhbmRib3hfZW5hYmxlZChXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0LCBnYm9vbGVh
biBlbmFibGVkKQotewotICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9DT05URVhU
KGNvbnRleHQpKTsKLQotICAgIGlmIChjb250ZXh0LT5wcml2LT5wcm9jZXNzUG9vbC0+cHJvY2Vz
c2VzKCkuc2l6ZSgpKQotICAgICAgICBnX2Vycm9yKCJTYW5kYm94aW5nIGNhbm5vdCBiZSBjaGFu
Z2VkIGFmdGVyIHN1YnByb2Nlc3NlcyB3ZXJlIHNwYXduZWQuIik7Ci0KLSAgICBjb250ZXh0LT5w
cml2LT5wcm9jZXNzUG9vbC0+c2V0U2FuZGJveEVuYWJsZWQoZW5hYmxlZCk7Ci19Ci0KLS8qKgot
ICogd2Via2l0X3dlYl9jb250ZXh0X2FkZF9wYXRoX3RvX3NhbmRib3g6Ci0gKiBAY29udGV4dDog
YSAjV2ViS2l0V2ViQ29udGV4dAotICogQHBhdGg6ICh0eXBlIGZpbGVuYW1lKTogYW4gYWJzb2x1
dGUgcGF0aCB0byBtb3VudCBpbiB0aGUgc2FuZGJveAotICogQHJlYWRfb25seTogaWYgJVRSVUUg
dGhlIHBhdGggd2lsbCBiZSByZWFkLW9ubHkKLSAqCi0gKiBBZGRzIGEgcGF0aCB0byBiZSBtb3Vu
dGVkIGluIHRoZSBzYW5kYm94LiBAcGF0aCBtdXN0IGV4aXN0IGJlZm9yZSBhbnkgd2ViIHByb2Nl
c3MKLSAqIGhhcyBiZWVuIGNyZWF0ZWQgb3RoZXJ3aXNlIGl0IHdpbGwgYmUgc2lsZW50bHkgaWdu
b3JlZC4gSXQgaXMgYSBmYXRhbCBlcnJvciB0bwotICogYWRkIHBhdGhzIGFmdGVyIGEgd2ViIHBy
b2Nlc3MgaGFzIGJlZW4gc3Bhd25lZC4KLSAqCi0gKiBTZWUgYWxzbyB3ZWJraXRfd2ViX2NvbnRl
eHRfc2V0X3NhbmRib3hfZW5hYmxlZCgpCi0gKgotICogU2luY2U6IDIuMjQKLSAqLwotdm9pZCB3
ZWJraXRfd2ViX2NvbnRleHRfYWRkX3BhdGhfdG9fc2FuZGJveChXZWJLaXRXZWJDb250ZXh0KiBj
b250ZXh0LCBjb25zdCBjaGFyKiBwYXRoLCBnYm9vbGVhbiByZWFkT25seSkKLXsKLSAgICBnX3Jl
dHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfQ09OVEVYVChjb250ZXh0KSk7Ci0gICAgZ19yZXR1
cm5faWZfZmFpbChnX3BhdGhfaXNfYWJzb2x1dGUocGF0aCkpOwotCi0gICAgaWYgKGNvbnRleHQt
PnByaXYtPnByb2Nlc3NQb29sLT5wcm9jZXNzZXMoKS5zaXplKCkpCi0gICAgICAgIGdfZXJyb3Io
IlNhbmRib3ggcGF0aHMgY2Fubm90IGJlIGNoYW5nZWQgYWZ0ZXIgc3VicHJvY2Vzc2VzIHdlcmUg
c3Bhd25lZC4iKTsKLQotICAgIGF1dG8gcGVybWlzc2lvbiA9IHJlYWRPbmx5ID8gU2FuZGJveFBl
cm1pc3Npb246OlJlYWRPbmx5IDogU2FuZGJveFBlcm1pc3Npb246OlJlYWRXcml0ZTsKLSAgICBj
b250ZXh0LT5wcml2LT5wcm9jZXNzUG9vbC0+YWRkU2FuZGJveFBhdGgocGF0aCwgcGVybWlzc2lv
bik7Ci19Ci0KLS8qKgotICogd2Via2l0X3dlYl9jb250ZXh0X2dldF9zYW5kYm94X2VuYWJsZWQ6
Ci0gKiBAY29udGV4dDogYSAjV2ViS2l0V2ViQ29udGV4dAotICoKLSAqIEdldCB3aGV0aGVyIHNh
bmRib3hpbmcgaXMgY3VycmVudGx5IGVuYWJsZWQuCi0gKgotICogUmV0dXJuczogJVRSVUUgaWYg
c2FuZGJveGluZyBpcyBlbmFibGVkLCBvciAlRkFMU0Ugb3RoZXJ3aXNlLgotICoKLSAqIFNpbmNl
OiAyLjI0Ci0gKi8KLWdib29sZWFuIHdlYmtpdF93ZWJfY29udGV4dF9nZXRfc2FuZGJveF9lbmFi
bGVkKFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQpCi17Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2Zh
aWwoV0VCS0lUX0lTX1dFQl9DT05URVhUKGNvbnRleHQpLCBGQUxTRSk7Ci0KLSAgICByZXR1cm4g
Y29udGV4dC0+cHJpdi0+cHJvY2Vzc1Bvb2wtPnNhbmRib3hFbmFibGVkKCk7Ci19Ci0KIC8qKgog
ICogd2Via2l0X3dlYl9jb250ZXh0X2dldF9zcGVsbF9jaGVja2luZ19lbmFibGVkOgogICogQGNv
bnRleHQ6IGEgI1dlYktpdFdlYkNvbnRleHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmgKaW5kZXggODEzNTFhZjNjNTEwODBlYjczYzI0
NTA1YzZhZjgyMmY2MjIwYzlhMi4uMzE0OWEzMjljMjc4MjFhYzQ0NDhmNWRjMjRkMGIwMzk1MjI5
ZDRhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRX
ZWJDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRX
ZWJDb250ZXh0LmgKQEAgLTI0NywxOCArMjQ3LDYgQEAgd2Via2l0X3dlYl9jb250ZXh0X3JlZ2lz
dGVyX3VyaV9zY2hlbWUgICAgICAgICAgICAgIChXZWJLaXRXZWJDb250ZXh0CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwb2ludGVyICAgICAg
ICAgICAgICAgICAgICAgICB1c2VyX2RhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdEZXN0cm95Tm90aWZ5ICAgICAgICAgICAgICAgICB1
c2VyX2RhdGFfZGVzdHJveV9mdW5jKTsKIAotV0VCS0lUX0FQSSB2b2lkCi13ZWJraXRfd2ViX2Nv
bnRleHRfc2V0X3NhbmRib3hfZW5hYmxlZCAgICAgICAgICAgICAgKFdlYktpdFdlYkNvbnRleHQg
ICAgICAgICAgICAgICpjb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxl
ZCk7Ci0KLVdFQktJVF9BUEkgZ2Jvb2xlYW4KLXdlYmtpdF93ZWJfY29udGV4dF9nZXRfc2FuZGJv
eF9lbmFibGVkICAgICAgICAgICAgICAoV2ViS2l0V2ViQ29udGV4dCAgICAgICAgICAgICAgKmNv
bnRleHQpOwotCi1XRUJLSVRfQVBJIHZvaWQKLXdlYmtpdF93ZWJfY29udGV4dF9hZGRfcGF0aF90
b19zYW5kYm94ICAgICAgICAgICAgICAoV2ViS2l0V2ViQ29udGV4dCAgICAgICAgICAgICAgKmNv
bnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXIgICAgICAgICAgICAgICAgICAgICpwYXRoLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiAgICAgICAgICAg
ICAgICAgICAgICAgcmVhZF9vbmx5KTsKLQogV0VCS0lUX0FQSSBnYm9vbGVhbgogd2Via2l0X3dl
Yl9jb250ZXh0X2dldF9zcGVsbF9jaGVja2luZ19lbmFibGVkICAgICAgIChXZWJLaXRXZWJDb250
ZXh0ICAgICAgICAgICAgICAqY29udGV4dCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMu
dHh0CmluZGV4IDRlZmI5NTI1ODQ2NzI1MTFlZTk1ZDA2MmE5NmU3ZmY0ZWEzM2ZiMTAuLjM4NzQ1
ZDBlNmQ5NWM2YTgzMDgwOTEzNjQ5MzNkOGFjM2E1NjhiMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4w
LXNlY3Rpb25zLnR4dApAQCAtNTEsOSArNTEsNiBAQCB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X3Nl
Y3VyaXR5X21hbmFnZXIKIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfYWRkaXRpb25hbF9wbHVnaW5z
X2RpcmVjdG9yeQogd2Via2l0X3dlYl9jb250ZXh0X2dldF9wbHVnaW5zCiB3ZWJraXRfd2ViX2Nv
bnRleHRfZ2V0X3BsdWdpbnNfZmluaXNoCi13ZWJraXRfd2ViX2NvbnRleHRfZ2V0X3NhbmRib3hf
ZW5hYmxlZAotd2Via2l0X3dlYl9jb250ZXh0X3NldF9zYW5kYm94X2VuYWJsZWQKLXdlYmtpdF93
ZWJfY29udGV4dF9hZGRfcGF0aF90b19zYW5kYm94CiB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X3Nw
ZWxsX2NoZWNraW5nX2VuYWJsZWQKIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfc3BlbGxfY2hlY2tp
bmdfZW5hYmxlZAogd2Via2l0X3dlYl9jb250ZXh0X2dldF9zcGVsbF9jaGVja2luZ19sYW5ndWFn
ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2Vi
Q29udGV4dC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJDb250
ZXh0LmgKaW5kZXggMDgxY2QxMWEzNDJhOWY2MTFhNGY0MTk4Y2VjMjkzMjk0YzJhMjcwMS4uOGNm
NjQ2ZjRlZGUzNDBlNTI3NmNlZTdkYTg0ZmNkOTMwODkzODc2NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJDb250ZXh0LmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJDb250ZXh0LmgKQEAgLTI0NywxOCAr
MjQ3LDYgQEAgd2Via2l0X3dlYl9jb250ZXh0X3JlZ2lzdGVyX3VyaV9zY2hlbWUgICAgICAgICAg
ICAgIChXZWJLaXRXZWJDb250ZXh0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGdwb2ludGVyICAgICAgICAgICAgICAgICAgICAgICB1c2VyX2Rh
dGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdEZXN0cm95Tm90aWZ5ICAgICAgICAgICAgICAgICB1c2VyX2RhdGFfZGVzdHJveV9mdW5jKTsK
IAotV0VCS0lUX0FQSSB2b2lkCi13ZWJraXRfd2ViX2NvbnRleHRfc2V0X3NhbmRib3hfZW5hYmxl
ZCAgICAgICAgICAgICAgKFdlYktpdFdlYkNvbnRleHQgICAgICAgICAgICAgICAqY29udGV4dCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jv
b2xlYW4gICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZWQpOwotCi1XRUJLSVRfQVBJIGdib29s
ZWFuCi13ZWJraXRfd2ViX2NvbnRleHRfZ2V0X3NhbmRib3hfZW5hYmxlZCAgICAgICAgICAgICAg
KFdlYktpdFdlYkNvbnRleHQgICAgICAgICAgICAgICpjb250ZXh0KTsKLQotV0VCS0lUX0FQSSB2
b2lkCi13ZWJraXRfd2ViX2NvbnRleHRfYWRkX3BhdGhfdG9fc2FuZGJveCAgICAgICAgICAgICAg
KFdlYktpdFdlYkNvbnRleHQgICAgICAgICAgICAgICpjb250ZXh0LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICAgICAgICAg
ICAgICAgICAgICAqcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZ2Jvb2xlYW4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfb25seSk7
Ci0KIFdFQktJVF9BUEkgZ2Jvb2xlYW4KIHdlYmtpdF93ZWJfY29udGV4dF9nZXRfc3BlbGxfY2hl
Y2tpbmdfZW5hYmxlZCAgICAgICAoV2ViS2l0V2ViQ29udGV4dCAgICAgICAgICAgICAgKmNvbnRl
eHQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL2RvY3Mv
d3BlLTAuMS1zZWN0aW9ucy50eHQgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL2Rv
Y3Mvd3BlLTAuMS1zZWN0aW9ucy50eHQKaW5kZXggYTVlY2ZlNDYzN2Y4ZjM5MTdhZjI2MTI3ZmFj
ZTAxNTE3ZjM3ODgwNi4uNDQ2YmIyMjI5YTFmZDU0ZmM2ZDlhOGMyNDc3NjlhMDUwZjA2ZWU3OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9kb2NzL3dwZS0wLjEt
c2VjdGlvbnMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvZG9jcy93
cGUtMC4xLXNlY3Rpb25zLnR4dApAQCAtMjksOSArMjksNiBAQCB3ZWJraXRfd2ViX2NvbnRleHRf
Z2V0X3NlY3VyaXR5X21hbmFnZXIKIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfYWRkaXRpb25hbF9w
bHVnaW5zX2RpcmVjdG9yeQogd2Via2l0X3dlYl9jb250ZXh0X2dldF9wbHVnaW5zCiB3ZWJraXRf
d2ViX2NvbnRleHRfZ2V0X3BsdWdpbnNfZmluaXNoCi13ZWJraXRfd2ViX2NvbnRleHRfZ2V0X3Nh
bmRib3hfZW5hYmxlZAotd2Via2l0X3dlYl9jb250ZXh0X3NldF9zYW5kYm94X2VuYWJsZWQKLXdl
YmtpdF93ZWJfY29udGV4dF9hZGRfcGF0aF90b19zYW5kYm94CiB3ZWJraXRfd2ViX2NvbnRleHRf
Z2V0X3NwZWxsX2NoZWNraW5nX2VuYWJsZWQKIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfc3BlbGxf
Y2hlY2tpbmdfZW5hYmxlZAogd2Via2l0X3dlYl9jb250ZXh0X2dldF9zcGVsbF9jaGVja2luZ19s
YW5ndWFnZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlIGIvU291
cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UKaW5kZXggNzE4Y2EwYTk2NzZmNWI3YTlmZWNhYWM1
ZmNiNDc2YWU1MDA0MjQ5Mi4uOTBlNDdiMTk3NmFkZDE3OGExNjQzZWVlMGY3MDQ3ZTdiZmEwMWZi
YyAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UKKysrIGIvU291cmNl
L2NtYWtlL09wdGlvbnNHVEsuY21ha2UKQEAgLTEyMCwxMSArMTIwLDcgQEAgZWxzZSAoKQogICAg
IFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9SRVNPVVJDRV9VU0FHRSBQ
UklWQVRFIE9GRikKIGVuZGlmICgpCiAKLWlmIChDTUFLRV9TWVNURU1fTkFNRSBNQVRDSEVTICJM
aW51eCIgQU5EIE5PVCBFWElTVFMgIi8uZmxhdHBhay1pbmZvIikKLSAgICBXRUJLSVRfT1BUSU9O
X0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfQlVCQkxFV1JBUF9TQU5EQk9YIFBVQkxJQyBPTikK
LWVsc2UgKCkKLSAgICBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfQlVC
QkxFV1JBUF9TQU5EQk9YIFBSSVZBVEUgT0ZGKQotZW5kaWYgKCkKK1dFQktJVF9PUFRJT05fREVG
QVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9CVUJCTEVXUkFQX1NBTkRCT1ggUFJJVkFURSBPRkYpCiAK
ICMgRW5hYmxlIHZhcmlhdGlvbiBmb250cyB3aGVuIGNhaXJvID49IDEuMTYsIGZvbnRjb25maWcg
Pj0gMi4xMy4wLCBmcmVldHlwZSA+PSAyLjkuMCBhbmQgaGFyZmJ1enogPj0gMS40LjIuCiBpZiAo
KCIke1BDX0NBSVJPX1ZFUlNJT059IiBWRVJTSU9OX0dSRUFURVIgIjEuMTYuMCIgT1IgIiR7UENf
Q0FJUk9fVkVSU0lPTn0iIFNUUkVRVUFMICIxLjE2LjAiKQpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9n
IGIvQ2hhbmdlTG9nCmluZGV4IDAzMWI1ZTI1NDdhM2Y0YjdjMmViNDM4MmI5MTU5ZjBlOTc3ZmQx
OGEuLjQyY2NjNTRjMTFiMmEzM2IxOTRiNDQ0NGNiMTg5NDA2ZmM3YmJlY2MgMTAwNjQ0Ci0tLSBh
L0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxOS0wMi0xMiAg
TWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGlnYWxpYS5jb20+CisKKyAgICAgICAgW1dQ
RV1bR1RLXVtTVEFCTEVdIFJlbW92ZSBzYW5kYm94IEFQSXMgZnJvbSAyLjI0IGJyYW5jaAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0NTUzCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTb3VyY2UvY21h
a2UvT3B0aW9uc0dUSy5jbWFrZToKKwogMjAxOS0wMi0xMSAgQWRyaWFuIFBlcmV6IGRlIENhc3Ry
byAgPGFwZXJlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdW1dQRV0gQWRkIGNvbnRlbnQg
ZXh0ZW5zaW9ucyBzdXBwb3J0IGluIFdLVFIgYW5kIHVuc2tpcCBsYXlvdXQgdGVzdHMK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>361925</attachid>
            <date>2019-02-13 10:47:25 -0800</date>
            <delta_ts>2019-02-14 02:13:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-194553-20190213124724.patch</filename>
            <type>text/plain</type>
            <size>59382</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQxNDM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDA5ZTRlZGI3ZDg3ZjE3ZTIw
NDM5ZjBhZmFhNGY1Yzc1MWU5NmMxYWMuLjU5YjQwZTA0OGE4ZWNiNjFmZDQwMTY2YTA0ZjkzMWNj
NTZkZjRiZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTktMDItMTMgIE1pY2hhZWwg
Q2F0YW56YXJvICA8bWNhdGFuemFyb0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtXUEVdW0dUS11b
U1RBQkxFXSBSZW1vdmUgc2FuZGJveCBBUElzIGZyb20gMi4yNCBicmFuY2gKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NDU1MworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6
CisgICAgICAgICogU291cmNlc0dUSy50eHQ6CisgICAgICAgICogU291cmNlc1dQRS50eHQ6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwOgorICAgICAg
ICAod2Via2l0X3dlYl9jb250ZXh0X3NldF9zYW5kYm94X2VuYWJsZWQpOiBEZWxldGVkLgorICAg
ICAgICAod2Via2l0X3dlYl9jb250ZXh0X2FkZF9wYXRoX3RvX3NhbmRib3gpOiBEZWxldGVkLgor
ICAgICAgICAod2Via2l0X3dlYl9jb250ZXh0X2dldF9zYW5kYm94X2VuYWJsZWQpOiBEZWxldGVk
LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJDb250ZXh0Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS93cGUvZG9jcy93cGUtMC4xLXNlY3Rpb25zLnR4dDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvTGF1bmNoZXIvZ2xpYi9CdWJibGV3cmFwTGF1bmNoZXIuY3BwOiBSZW1vdmVk
LgorICAgICAgICAqIFVJUHJvY2Vzcy9MYXVuY2hlci9nbGliL0J1YmJsZXdyYXBMYXVuY2hlci5o
OiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9MYXVuY2hlci9nbGliL0ZsYXRwYWtMYXVu
Y2hlci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0xhdW5jaGVyL2dsaWIvRmxh
dHBha0xhdW5jaGVyLmg6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0xhdW5jaGVyL2ds
aWIvUHJvY2Vzc0xhdW5jaGVyR0xpYi5jcHA6CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NMYXVu
Y2hlcjo6bGF1bmNoUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OmlzSW5zaWRlRmxhdHBhayk6
IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Byb3h5R0xpYi5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQcm94eTo6cGxhdGZvcm1HZXRMYXVuY2hPcHRpb25zKToKKwogMjAxOS0w
Mi0xMyAgVHJ1aXR0IFNhdmVsbCAgPHRzYXZlbGxAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2
aWV3ZWQsIHJvbGxpbmcgb3V0IHIyNDE0MzMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtR1RLLmNtYWtlIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCA2
MzRiMDAwM2Q5NTFlMTQ4NzlkZTIzMDk5NzdjNzYzYThjNGJkYTg1Li5iZmFkOGM1MTRmOTUyNzBl
ZjcxNWRjODAzOGZhN2I2YWU5ZGFhODBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21ha2UKQEAgLTYy
OCw4ICs2MjgsNiBAQCBpZiAoRU5BQkxFX1BMVUdJTl9QUk9DRVNTX0dUSzIpCiAKICAgICAgICAg
VUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5jcHAKIAotICAgICAgICBVSVByb2Nl
c3MvTGF1bmNoZXIvZ2xpYi9CdWJibGV3cmFwTGF1bmNoZXIuY3BwCi0gICAgICAgIFVJUHJvY2Vz
cy9MYXVuY2hlci9nbGliL0ZsYXRwYWtMYXVuY2hlci5jcHAKICAgICAgICAgVUlQcm9jZXNzL0xh
dW5jaGVyL2dsaWIvUHJvY2Vzc0xhdW5jaGVyR0xpYi5jcHAKIAogICAgICAgICBVSVByb2Nlc3Mv
UGx1Z2lucy91bml4L1BsdWdpblByb2Nlc3NQcm94eVVuaXguY3BwCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXNHVEsudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzR1RLLnR4dApp
bmRleCA0ODI5YTlmZjI3MjM3YzRhNDk0MzFjYzM0NGU5NTMwZDFhMjQ0ZjMxLi5kNDFlYzk1OTFh
N2NkZmFlMWQwMDUzYWZmZWIzZjkzMWEzY2JiZTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NvdXJjZXNHVEsudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0dUSy50eHQKQEAgLTIw
OSw4ICsyMDksNiBAQCBVSVByb2Nlc3MvQXV0b21hdGlvbi9jYWlyby9XZWJBdXRvbWF0aW9uU2Vz
c2lvbkNhaXJvLmNwcAogVUlQcm9jZXNzL0F1dG9tYXRpb24vZ3RrL1dlYkF1dG9tYXRpb25TZXNz
aW9uR3RrLmNwcAogCiBVSVByb2Nlc3MvTGF1bmNoZXIvZ2xpYi9Qcm9jZXNzTGF1bmNoZXJHTGli
LmNwcCBAbm8tdW5pZnkKLVVJUHJvY2Vzcy9MYXVuY2hlci9nbGliL0J1YmJsZXdyYXBMYXVuY2hl
ci5jcHAgQG5vLXVuaWZ5Ci1VSVByb2Nlc3MvTGF1bmNoZXIvZ2xpYi9GbGF0cGFrTGF1bmNoZXIu
Y3BwIEBuby11bmlmeQogCiBVSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvTGVnYWN5
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuY3BwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU291cmNlc1dQRS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNXUEUudHh0CmluZGV4IDVj
ZTk1ODMzYjYwNDEyNjExMDVkODU0ODFiNDFkMDk5ZTJkYmYyNmQuLjZjYmUzM2QwNDUwZGE3YjU5
YjYxMmQ3ODY3NzNiMDg1NGIyYmViOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNl
c1dQRS50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzV1BFLnR4dApAQCAtMTgyLDggKzE4
Miw2IEBAIFVJUHJvY2Vzcy9BdXRvbWF0aW9uL3dwZS9XZWJBdXRvbWF0aW9uU2Vzc2lvbldQRS5j
cHAKIFVJUHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NQcm94eUdMaWIuY3BwCiAKIFVJUHJvY2Vzcy9M
YXVuY2hlci9nbGliL1Byb2Nlc3NMYXVuY2hlckdMaWIuY3BwCi1VSVByb2Nlc3MvTGF1bmNoZXIv
Z2xpYi9CdWJibGV3cmFwTGF1bmNoZXIuY3BwCi1VSVByb2Nlc3MvTGF1bmNoZXIvZ2xpYi9GbGF0
cGFrTGF1bmNoZXIuY3BwCiAKIFVJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9MZWdh
Y3lDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5jcHAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcAppbmRleCA3MjRjNWZi
ZjVlODQ3Y2VkMWYzMGZiMDhjZmQ1OGQ4ZDFmNTY5ZjBiLi5kZWI1ZTA2YzhiMTNjOWQwZTQ2ZWZj
ZTIxMWEyYjEyMGQ2NjkzYzI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcApAQCAtMTE0Nyw3MyArMTE0Nyw2IEBAIHZv
aWQgd2Via2l0X3dlYl9jb250ZXh0X3JlZ2lzdGVyX3VyaV9zY2hlbWUoV2ViS2l0V2ViQ29udGV4
dCogY29udGV4dCwgY29uc3QgY2hhCiAgICAgICAgIGNvbnRleHQtPnByaXYtPnByb2Nlc3NQb29s
LT5yZWdpc3RlclNjaGVtZUZvckN1c3RvbVByb3RvY29sKFN0cmluZzo6ZnJvbVVURjgoc2NoZW1l
KSk7CiB9CiAKLS8qKgotICogd2Via2l0X3dlYl9jb250ZXh0X3NldF9zYW5kYm94X2VuYWJsZWQ6
Ci0gKiBAY29udGV4dDogYSAjV2ViS2l0V2ViQ29udGV4dAotICogQGVuYWJsZWQ6IGlmICVUUlVF
IGVuYWJsZSBzYW5kYm94aW5nCi0gKgotICogU2V0IHdoZXRoZXIgV2ViS2l0IHN1YnByb2Nlc3Nl
cyB3aWxsIGJlIHNhbmRib3hlZCwgbGltaXRpbmcgYWNjZXNzIHRvIHRoZSBzeXN0ZW0uCi0gKgot
ICogVGhpcyBtZXRob2QgKiptdXN0IGJlIGNhbGxlZCBiZWZvcmUgYW55IHdlYiBwcm9jZXNzIGhh
cyBiZWVuIGNyZWF0ZWQqKiwKLSAqIGFzIGVhcmx5IGFzIHBvc3NpYmxlIGluIHlvdXIgYXBwbGlj
YXRpb24uIENhbGxpbmcgaXQgbGF0ZXIgaXMgYSBmYXRhbCBlcnJvci4KLSAqCi0gKiBUaGlzIGlz
IG9ubHkgaW1wbGVtZW50ZWQgb24gTGludXggYW5kIGlzIGEgbm8tb3Agb3RoZXJ3aXNlLgotICoK
LSAqIFNpbmNlOiAyLjI0Ci0gKi8KLXZvaWQgd2Via2l0X3dlYl9jb250ZXh0X3NldF9zYW5kYm94
X2VuYWJsZWQoV2ViS2l0V2ViQ29udGV4dCogY29udGV4dCwgZ2Jvb2xlYW4gZW5hYmxlZCkKLXsK
LSAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfQ09OVEVYVChjb250ZXh0KSk7Ci0K
LSAgICBpZiAoY29udGV4dC0+cHJpdi0+cHJvY2Vzc1Bvb2wtPnByb2Nlc3NlcygpLnNpemUoKSkK
LSAgICAgICAgZ19lcnJvcigiU2FuZGJveGluZyBjYW5ub3QgYmUgY2hhbmdlZCBhZnRlciBzdWJw
cm9jZXNzZXMgd2VyZSBzcGF3bmVkLiIpOwotCi0gICAgY29udGV4dC0+cHJpdi0+cHJvY2Vzc1Bv
b2wtPnNldFNhbmRib3hFbmFibGVkKGVuYWJsZWQpOwotfQotCi0vKioKLSAqIHdlYmtpdF93ZWJf
Y29udGV4dF9hZGRfcGF0aF90b19zYW5kYm94OgotICogQGNvbnRleHQ6IGEgI1dlYktpdFdlYkNv
bnRleHQKLSAqIEBwYXRoOiAodHlwZSBmaWxlbmFtZSk6IGFuIGFic29sdXRlIHBhdGggdG8gbW91
bnQgaW4gdGhlIHNhbmRib3gKLSAqIEByZWFkX29ubHk6IGlmICVUUlVFIHRoZSBwYXRoIHdpbGwg
YmUgcmVhZC1vbmx5Ci0gKgotICogQWRkcyBhIHBhdGggdG8gYmUgbW91bnRlZCBpbiB0aGUgc2Fu
ZGJveC4gQHBhdGggbXVzdCBleGlzdCBiZWZvcmUgYW55IHdlYiBwcm9jZXNzCi0gKiBoYXMgYmVl
biBjcmVhdGVkIG90aGVyd2lzZSBpdCB3aWxsIGJlIHNpbGVudGx5IGlnbm9yZWQuIEl0IGlzIGEg
ZmF0YWwgZXJyb3IgdG8KLSAqIGFkZCBwYXRocyBhZnRlciBhIHdlYiBwcm9jZXNzIGhhcyBiZWVu
IHNwYXduZWQuCi0gKgotICogU2VlIGFsc28gd2Via2l0X3dlYl9jb250ZXh0X3NldF9zYW5kYm94
X2VuYWJsZWQoKQotICoKLSAqIFNpbmNlOiAyLjI0Ci0gKi8KLXZvaWQgd2Via2l0X3dlYl9jb250
ZXh0X2FkZF9wYXRoX3RvX3NhbmRib3goV2ViS2l0V2ViQ29udGV4dCogY29udGV4dCwgY29uc3Qg
Y2hhciogcGF0aCwgZ2Jvb2xlYW4gcmVhZE9ubHkpCi17Ci0gICAgZ19yZXR1cm5faWZfZmFpbChX
RUJLSVRfSVNfV0VCX0NPTlRFWFQoY29udGV4dCkpOwotICAgIGdfcmV0dXJuX2lmX2ZhaWwoZ19w
YXRoX2lzX2Fic29sdXRlKHBhdGgpKTsKLQotICAgIGlmIChjb250ZXh0LT5wcml2LT5wcm9jZXNz
UG9vbC0+cHJvY2Vzc2VzKCkuc2l6ZSgpKQotICAgICAgICBnX2Vycm9yKCJTYW5kYm94IHBhdGhz
IGNhbm5vdCBiZSBjaGFuZ2VkIGFmdGVyIHN1YnByb2Nlc3NlcyB3ZXJlIHNwYXduZWQuIik7Ci0K
LSAgICBhdXRvIHBlcm1pc3Npb24gPSByZWFkT25seSA/IFNhbmRib3hQZXJtaXNzaW9uOjpSZWFk
T25seSA6IFNhbmRib3hQZXJtaXNzaW9uOjpSZWFkV3JpdGU7Ci0gICAgY29udGV4dC0+cHJpdi0+
cHJvY2Vzc1Bvb2wtPmFkZFNhbmRib3hQYXRoKHBhdGgsIHBlcm1pc3Npb24pOwotfQotCi0vKioK
LSAqIHdlYmtpdF93ZWJfY29udGV4dF9nZXRfc2FuZGJveF9lbmFibGVkOgotICogQGNvbnRleHQ6
IGEgI1dlYktpdFdlYkNvbnRleHQKLSAqCi0gKiBHZXQgd2hldGhlciBzYW5kYm94aW5nIGlzIGN1
cnJlbnRseSBlbmFibGVkLgotICoKLSAqIFJldHVybnM6ICVUUlVFIGlmIHNhbmRib3hpbmcgaXMg
ZW5hYmxlZCwgb3IgJUZBTFNFIG90aGVyd2lzZS4KLSAqCi0gKiBTaW5jZTogMi4yNAotICovCi1n
Ym9vbGVhbiB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X3NhbmRib3hfZW5hYmxlZChXZWJLaXRXZWJD
b250ZXh0KiBjb250ZXh0KQotewotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19X
RUJfQ09OVEVYVChjb250ZXh0KSwgRkFMU0UpOwotCi0gICAgcmV0dXJuIGNvbnRleHQtPnByaXYt
PnByb2Nlc3NQb29sLT5zYW5kYm94RW5hYmxlZCgpOwotfQotCiAvKioKICAqIHdlYmtpdF93ZWJf
Y29udGV4dF9nZXRfc3BlbGxfY2hlY2tpbmdfZW5hYmxlZDoKICAqIEBjb250ZXh0OiBhICNXZWJL
aXRXZWJDb250ZXh0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYkNvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViQ29udGV4dC5oCmluZGV4IDgxMzUxYWYzYzUxMDgwZWI3M2MyNDUwNWM2YWY4MjJmNjIy
MGM5YTIuLjMxNDlhMzI5YzI3ODIxYWM0NDQ4ZjVkYzI0ZDBiMDM5NTIyOWQ0YWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5oCkBA
IC0yNDcsMTggKzI0Nyw2IEBAIHdlYmtpdF93ZWJfY29udGV4dF9yZWdpc3Rlcl91cmlfc2NoZW1l
ICAgICAgICAgICAgICAoV2ViS2l0V2ViQ29udGV4dAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncG9pbnRlciAgICAgICAgICAgICAgICAgICAg
ICAgdXNlcl9kYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHRGVzdHJveU5vdGlmeSAgICAgICAgICAgICAgICAgdXNlcl9kYXRhX2Rlc3Ry
b3lfZnVuYyk7CiAKLVdFQktJVF9BUEkgdm9pZAotd2Via2l0X3dlYl9jb250ZXh0X3NldF9zYW5k
Ym94X2VuYWJsZWQgICAgICAgICAgICAgIChXZWJLaXRXZWJDb250ZXh0ICAgICAgICAgICAgICAq
Y29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZ2Jvb2xlYW4gICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZWQpOwotCi1XRUJLSVRf
QVBJIGdib29sZWFuCi13ZWJraXRfd2ViX2NvbnRleHRfZ2V0X3NhbmRib3hfZW5hYmxlZCAgICAg
ICAgICAgICAgKFdlYktpdFdlYkNvbnRleHQgICAgICAgICAgICAgICpjb250ZXh0KTsKLQotV0VC
S0lUX0FQSSB2b2lkCi13ZWJraXRfd2ViX2NvbnRleHRfYWRkX3BhdGhfdG9fc2FuZGJveCAgICAg
ICAgICAgICAgKFdlYktpdFdlYkNvbnRleHQgICAgICAgICAgICAgICpjb250ZXh0LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFy
ICAgICAgICAgICAgICAgICAgICAqcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gICAgICAgICAgICAgICAgICAgICAgIHJl
YWRfb25seSk7Ci0KIFdFQktJVF9BUEkgZ2Jvb2xlYW4KIHdlYmtpdF93ZWJfY29udGV4dF9nZXRf
c3BlbGxfY2hlY2tpbmdfZW5hYmxlZCAgICAgICAoV2ViS2l0V2ViQ29udGV4dCAgICAgICAgICAg
ICAgKmNvbnRleHQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0IGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dAppbmRleCA0ZWZi
OTUyNTg0NjcyNTExZWU5NWQwNjJhOTZlN2ZmNGVhMzNmYjEwLi4zODc0NWQwZTZkOTVjNmE4MzA4
MDkxMzY0OTMzZDhhYzNhNTY4YjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0CisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQK
QEAgLTUxLDkgKzUxLDYgQEAgd2Via2l0X3dlYl9jb250ZXh0X2dldF9zZWN1cml0eV9tYW5hZ2Vy
CiB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X2FkZGl0aW9uYWxfcGx1Z2luc19kaXJlY3RvcnkKIHdl
YmtpdF93ZWJfY29udGV4dF9nZXRfcGx1Z2lucwogd2Via2l0X3dlYl9jb250ZXh0X2dldF9wbHVn
aW5zX2ZpbmlzaAotd2Via2l0X3dlYl9jb250ZXh0X2dldF9zYW5kYm94X2VuYWJsZWQKLXdlYmtp
dF93ZWJfY29udGV4dF9zZXRfc2FuZGJveF9lbmFibGVkCi13ZWJraXRfd2ViX2NvbnRleHRfYWRk
X3BhdGhfdG9fc2FuZGJveAogd2Via2l0X3dlYl9jb250ZXh0X2dldF9zcGVsbF9jaGVja2luZ19l
bmFibGVkCiB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X3NwZWxsX2NoZWNraW5nX2VuYWJsZWQKIHdl
YmtpdF93ZWJfY29udGV4dF9nZXRfc3BlbGxfY2hlY2tpbmdfbGFuZ3VhZ2VzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYkNvbnRleHQuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2ViQ29udGV4dC5oCmluZGV4IDA4
MWNkMTFhMzQyYTlmNjExYTRmNDE5OGNlYzI5MzI5NGMyYTI3MDEuLjhjZjY0NmY0ZWRlMzQwZTUy
NzZjZWU3ZGE4NGZjZDkzMDg5Mzg3NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS93cGUvV2ViS2l0V2ViQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS93cGUvV2ViS2l0V2ViQ29udGV4dC5oCkBAIC0yNDcsMTggKzI0Nyw2IEBAIHdlYmtp
dF93ZWJfY29udGV4dF9yZWdpc3Rlcl91cmlfc2NoZW1lICAgICAgICAgICAgICAoV2ViS2l0V2Vi
Q29udGV4dAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBncG9pbnRlciAgICAgICAgICAgICAgICAgICAgICAgdXNlcl9kYXRhLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRGVzdHJveU5vdGlm
eSAgICAgICAgICAgICAgICAgdXNlcl9kYXRhX2Rlc3Ryb3lfZnVuYyk7CiAKLVdFQktJVF9BUEkg
dm9pZAotd2Via2l0X3dlYl9jb250ZXh0X3NldF9zYW5kYm94X2VuYWJsZWQgICAgICAgICAgICAg
IChXZWJLaXRXZWJDb250ZXh0ICAgICAgICAgICAgICAgKmNvbnRleHQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFuICAgICAgICAg
ICAgICAgICAgICAgICBlbmFibGVkKTsKLQotV0VCS0lUX0FQSSBnYm9vbGVhbgotd2Via2l0X3dl
Yl9jb250ZXh0X2dldF9zYW5kYm94X2VuYWJsZWQgICAgICAgICAgICAgIChXZWJLaXRXZWJDb250
ZXh0ICAgICAgICAgICAgICAqY29udGV4dCk7Ci0KLVdFQktJVF9BUEkgdm9pZAotd2Via2l0X3dl
Yl9jb250ZXh0X2FkZF9wYXRoX3RvX3NhbmRib3ggICAgICAgICAgICAgIChXZWJLaXRXZWJDb250
ZXh0ICAgICAgICAgICAgICAqY29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAgICAgICAgICAgICAgICAgICAgKnBh
dGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGdib29sZWFuICAgICAgICAgICAgICAgICAgICAgICByZWFkX29ubHkpOwotCiBXRUJLSVRfQVBJ
IGdib29sZWFuCiB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X3NwZWxsX2NoZWNraW5nX2VuYWJsZWQg
ICAgICAgKFdlYktpdFdlYkNvbnRleHQgICAgICAgICAgICAgICpjb250ZXh0KTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9kb2NzL3dwZS0wLjEtc2VjdGlv
bnMudHh0IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9kb2NzL3dwZS0wLjEtc2Vj
dGlvbnMudHh0CmluZGV4IGE1ZWNmZTQ2MzdmOGYzOTE3YWYyNjEyN2ZhY2UwMTUxN2YzNzg4MDYu
LjQ0NmJiMjIyOWExZmQ1NGZjNmQ5YThjMjQ3NzY5YTA1MGYwNmVlNzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvZG9jcy93cGUtMC4xLXNlY3Rpb25zLnR4dAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL2RvY3Mvd3BlLTAuMS1zZWN0aW9u
cy50eHQKQEAgLTI5LDkgKzI5LDYgQEAgd2Via2l0X3dlYl9jb250ZXh0X2dldF9zZWN1cml0eV9t
YW5hZ2VyCiB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X2FkZGl0aW9uYWxfcGx1Z2luc19kaXJlY3Rv
cnkKIHdlYmtpdF93ZWJfY29udGV4dF9nZXRfcGx1Z2lucwogd2Via2l0X3dlYl9jb250ZXh0X2dl
dF9wbHVnaW5zX2ZpbmlzaAotd2Via2l0X3dlYl9jb250ZXh0X2dldF9zYW5kYm94X2VuYWJsZWQK
LXdlYmtpdF93ZWJfY29udGV4dF9zZXRfc2FuZGJveF9lbmFibGVkCi13ZWJraXRfd2ViX2NvbnRl
eHRfYWRkX3BhdGhfdG9fc2FuZGJveAogd2Via2l0X3dlYl9jb250ZXh0X2dldF9zcGVsbF9jaGVj
a2luZ19lbmFibGVkCiB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X3NwZWxsX2NoZWNraW5nX2VuYWJs
ZWQKIHdlYmtpdF93ZWJfY29udGV4dF9nZXRfc3BlbGxfY2hlY2tpbmdfbGFuZ3VhZ2VzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9nbGliL0J1YmJsZXdyYXBM
YXVuY2hlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9nbGliL0J1YmJs
ZXdyYXBMYXVuY2hlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY4YjEwMmE2
OGU5NzFjYzM0ZDNkOTE0ZTg0ZDJhNGFjNDJmMjgyMjEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIv
Z2xpYi9CdWJibGV3cmFwTGF1bmNoZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsODUxICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggSWdhbGlhIFMuTC4KLSAqCi0gKiBUaGlzIHBy
b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0g
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVi
bGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRo
ZSBHTlUKLSAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
Ci0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3Nl
ciBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeS4gSWYg
bm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotICovCi0KLSNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJCdWJibGV3cmFwTGF1bmNoZXIuaCIKLQotI2lmIEVOQUJM
RShCVUJCTEVXUkFQX1NBTkRCT1gpCi0KLSNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtRGlzcGxh
eS5oPgotI2luY2x1ZGUgPGZjbnRsLmg+Ci0jaW5jbHVkZSA8Z2xpYi5oPgotI2luY2x1ZGUgPHNl
Y2NvbXAuaD4KLSNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KLSNpbmNsdWRlIDx3dGYvRmlsZVN5c3Rl
bS5oPgotI2luY2x1ZGUgPHd0Zi9nbGliL0dMaWJVdGlsaXRpZXMuaD4KLSNpbmNsdWRlIDx3dGYv
Z2xpYi9HUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgotCi0jaWYg
X19oYXNfaW5jbHVkZSg8c3lzL21lbWZkLmg+KQotCi0jaW5jbHVkZSA8c3lzL21lbWZkLmg+Ci0K
LSNlbHNlCi0KLS8vIFRoZXNlIGRlZmluZXMgd2VyZSBhZGRlZCBpbiBnbGliYyAyLjI3LCB0aGUg
c2FtZSByZWxlYXNlIHRoYXQgYWRkZWQgbWVtZmRfY3JlYXRlLgotLy8gQnV0IHRoZSBrZXJuZWwg
YWRkZWQgYWxsIG9mIHRoaXMgaW4gTGludXggMy4xNy4gU28gaXQncyB0b3RhbGx5IHNhZmUgZm9y
IHVzIHRvCi0vLyBkZXBlbmQgb24sIGFzIGxvbmcgYXMgd2UgZGVmaW5lIGl0IGFsbCBvdXJzZWx2
ZXMuIFJlbW92ZSB0aGlzIG9uY2Ugd2UgZGVwZW5kIG9uCi0vLyBnbGliYyAyLjI3LgotCi0jZGVm
aW5lIEZfQUREX1NFQUxTIDEwMzMKLSNkZWZpbmUgRl9HRVRfU0VBTFMgMTAzNAotCi0jZGVmaW5l
IEZfU0VBTF9TRUFMICAgMHgwMDAxCi0jZGVmaW5lIEZfU0VBTF9TSFJJTksgMHgwMDAyCi0jZGVm
aW5lIEZfU0VBTF9HUk9XICAgMHgwMDA0Ci0jZGVmaW5lIEZfU0VBTF9XUklURSAgMHgwMDA4Ci0K
LSNkZWZpbmUgTUZEX0FMTE9XX1NFQUxJTkcgMlUKLQotc3RhdGljIGludCBtZW1mZF9jcmVhdGUo
Y29uc3QgY2hhciogbmFtZSwgdW5zaWduZWQgZmxhZ3MpCi17Ci0gICAgcmV0dXJuIHN5c2NhbGwo
X19OUl9tZW1mZF9jcmVhdGUsIG5hbWUsIGZsYWdzKTsKLX0KLSNlbmRpZgotCi1uYW1lc3BhY2Ug
V2ViS2l0IHsKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1zdGF0aWMgaW50IGNyZWF0ZVNl
YWxlZE1lbUZkV2l0aERhdGEoY29uc3QgY2hhciogbmFtZSwgZ2NvbnN0cG9pbnRlciBkYXRhLCBz
aXplX3Qgc2l6ZSkKLXsKLSAgICBpbnQgZmQgPSBtZW1mZF9jcmVhdGUobmFtZSwgTUZEX0FMTE9X
X1NFQUxJTkcpOwotICAgIGlmIChmZCA9PSAtMSkgewotICAgICAgICBnX3dhcm5pbmcoIm1lbWZk
X2NyZWF0ZSBmYWlsZWQ6ICVzIiwgZ19zdHJlcnJvcihlcnJubykpOwotICAgICAgICByZXR1cm4g
LTE7Ci0gICAgfQotCi0gICAgc3NpemVfdCBieXRlc1dyaXR0ZW4gPSB3cml0ZShmZCwgZGF0YSwg
c2l6ZSk7Ci0gICAgaWYgKGJ5dGVzV3JpdHRlbiA8IDApIHsKLSAgICAgICAgZ193YXJuaW5nKCJX
cml0aW5nIGFyZ3MgdG8gbWVtZmQgZmFpbGVkOiAlcyIsIGdfc3RyZXJyb3IoZXJybm8pKTsKLSAg
ICAgICAgY2xvc2UoZmQpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotCi0gICAgaWYgKHN0
YXRpY19jYXN0PHNpemVfdD4oYnl0ZXNXcml0dGVuKSAhPSBzaXplKSB7Ci0gICAgICAgIGdfd2Fy
bmluZygiRmFpbGVkIHRvIHdyaXRlIGFsbCBhcmdzIHRvIG1lbWZkIik7Ci0gICAgICAgIGNsb3Nl
KGZkKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLQotICAgIGlmIChsc2VlayhmZCwgMCwg
U0VFS19TRVQpID09IC0xKSB7Ci0gICAgICAgIGdfd2FybmluZygibHNlZWsgZmFpbGVkOiAlcyIs
IGdfc3RyZXJyb3IoZXJybm8pKTsKLSAgICAgICAgY2xvc2UoZmQpOwotICAgICAgICByZXR1cm4g
LTE7Ci0gICAgfQotCi0gICAgaWYgKGZjbnRsKGZkLCBGX0FERF9TRUFMUywgRl9TRUFMX1NIUklO
SyB8IEZfU0VBTF9HUk9XIHwgRl9TRUFMX1dSSVRFIHwgRl9TRUFMX1NFQUwpID09IC0xKSB7Ci0g
ICAgICAgIGdfd2FybmluZygiRmFpbGVkIHRvIHNlYWwgbWVtZmQ6ICVzIiwgZ19zdHJlcnJvcihl
cnJubykpOwotICAgICAgICBjbG9zZShmZCk7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0K
LSAgICByZXR1cm4gZmQ7Ci19Ci0KLXN0YXRpYyBpbnQKLWFyZ3NUb0ZkKGNvbnN0IFZlY3RvcjxD
U3RyaW5nPiYgYXJncywgY29uc3QgY2hhciAqbmFtZSkKLXsKLSAgICBHU3RyaW5nKiBidWZmZXIg
PSBnX3N0cmluZ19uZXcobnVsbHB0cik7Ci0KLSAgICBmb3IgKGNvbnN0IGF1dG8mIGFyZyA6IGFy
Z3MpCi0gICAgICAgIGdfc3RyaW5nX2FwcGVuZF9sZW4oYnVmZmVyLCBhcmcuZGF0YSgpLCBhcmcu
bGVuZ3RoKCkgKyAxKTsgLy8gSW5jbHVkZSBOVUwKLQotICAgIEdSZWZQdHI8R0J5dGVzPiBieXRl
cyA9IGFkb3B0R1JlZihnX3N0cmluZ19mcmVlX3RvX2J5dGVzKGJ1ZmZlcikpOwotCi0gICAgc2l6
ZV90IHNpemU7Ci0gICAgZ2NvbnN0cG9pbnRlciBkYXRhID0gZ19ieXRlc19nZXRfZGF0YShieXRl
cy5nZXQoKSwgJnNpemUpOwotCi0gICAgaW50IG1lbWZkID0gY3JlYXRlU2VhbGVkTWVtRmRXaXRo
RGF0YShuYW1lLCBkYXRhLCBzaXplKTsKLSAgICBpZiAobWVtZmQgPT0gLTEpCi0gICAgICAgIGdf
ZXJyb3IoIkZhaWxlZCB0byB3cml0ZSBtZW1mZCIpOwotCi0gICAgcmV0dXJuIG1lbWZkOwotfQot
Ci1lbnVtIGNsYXNzIERCdXNBZGRyZXNzVHlwZSB7Ci0gICAgTm9ybWFsLAotICAgIEFic3RyYWN0
LAotfTsKLQotY2xhc3MgWERHREJ1c1Byb3h5TGF1bmNoZXIgewotcHVibGljOgotICAgIHZvaWQg
c2V0QWRkcmVzcyhjb25zdCBjaGFyKiBkYnVzQWRkcmVzcywgREJ1c0FkZHJlc3NUeXBlIGFkZHJl
c3NUeXBlKQotICAgIHsKLSAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiBkYnVzUGF0aCA9IGRidXNB
ZGRyZXNzVG9QYXRoKGRidXNBZGRyZXNzLCBhZGRyZXNzVHlwZSk7Ci0gICAgICAgIGlmICghZGJ1
c1BhdGguZ2V0KCkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgR1VuaXF1ZVB0cjxj
aGFyPiBhcHBSdW5EaXIoZ19idWlsZF9maWxlbmFtZShnX2dldF91c2VyX3J1bnRpbWVfZGlyKCks
IGdfZ2V0X3ByZ25hbWUoKSwgbnVsbHB0cikpOwotICAgICAgICBtX3Byb3h5UGF0aCA9IG1ha2VQ
cm94eVBhdGgoYXBwUnVuRGlyLmdldCgpKS5nZXQoKTsKLQotICAgICAgICBtX3NvY2tldCA9IGRi
dXNBZGRyZXNzOwotICAgICAgICBtX3BhdGggPSBkYnVzUGF0aC5nZXQoKTsKLSAgICB9Ci0KLSAg
ICBib29sIGlzUnVubmluZygpIGNvbnN0IHsgcmV0dXJuIG1faXNSdW5uaW5nOyB9OwotICAgIGNv
bnN0IENTdHJpbmcmIHBhdGgoKSBjb25zdCB7IHJldHVybiBtX3BhdGg7IH07Ci0gICAgY29uc3Qg
Q1N0cmluZyYgcHJveHlQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9wcm94eVBhdGg7IH07Ci0KLSAg
ICB2b2lkIHNldFBlcm1pc3Npb25zKFZlY3RvcjxDU3RyaW5nPiYmIHBlcm1pc3Npb25zKQotICAg
IHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTighaXNS
dW5uaW5nKCkpOwotICAgICAgICBtX3Blcm1pc3Npb25zID0gV1RGTW92ZShwZXJtaXNzaW9ucyk7
Ci0gICAgfTsKLQotICAgIHZvaWQgbGF1bmNoKCkKLSAgICB7Ci0gICAgICAgIFJFTEVBU0VfQVNT
RVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIWlzUnVubmluZygpKTsKLQotICAgICAgICBp
ZiAobV9zb2NrZXQuaXNOdWxsKCkgfHwgbV9wYXRoLmlzTnVsbCgpIHx8IG1fcHJveHlQYXRoLmlz
TnVsbCgpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGludCBzeW5jRmRzWzJdOwot
ICAgICAgICBpZiAocGlwZTIgKHN5bmNGZHMsIE9fQ0xPRVhFQykgPT0gLTEpCi0gICAgICAgICAg
ICBnX2Vycm9yKCJGYWlsZWQgdG8gbWFrZSBzeW5jZmRzIGZvciBkYnVzLXByb3h5OiAlcyIsIGdf
c3RyZXJyb3IoZXJybm8pKTsKLQotICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IHN5bmNGZFN0cihn
X3N0cmR1cF9wcmludGYoIi0tZmQ9JWQiLCBzeW5jRmRzWzFdKSk7Ci0KLSAgICAgICAgVmVjdG9y
PENTdHJpbmc+IHByb3h5QXJncyA9IHsKLSAgICAgICAgICAgIG1fc29ja2V0LCBtX3Byb3h5UGF0
aCwKLSAgICAgICAgICAgICItLWZpbHRlciIsCi0gICAgICAgICAgICBzeW5jRmRTdHIuZ2V0KCks
Ci0gICAgICAgIH07Ci0KLSAgICAgICAgaWYgKCFnX3N0cmNtcDAoZ19nZXRlbnYoIldFQktJVF9F
TkFCTEVfREJVU19QUk9YWV9MT0dHSU5HIiksICIxIikpCi0gICAgICAgICAgICBwcm94eUFyZ3Mu
YXBwZW5kKCItLWxvZyIpOwotCi0gICAgICAgIHByb3h5QXJncy5hcHBlbmRWZWN0b3IobV9wZXJt
aXNzaW9ucyk7Ci0KLSAgICAgICAgaW50IHByb3h5RmQgPSBhcmdzVG9GZChwcm94eUFyZ3MsICJk
YnVzLXByb3h5Iik7Ci0gICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gcHJveHlBcmdzU3RyKGdfc3Ry
ZHVwX3ByaW50ZigiLS1hcmdzPSVkIiwgcHJveHlGZCkpOwotCi0gICAgICAgIFZlY3RvcjxDU3Ry
aW5nPiBhcmdzID0gewotICAgICAgICAgICAgREJVU19QUk9YWV9FWEVDVVRBQkxFLAotICAgICAg
ICAgICAgcHJveHlBcmdzU3RyLmdldCgpLAotICAgICAgICB9OwotCi0gICAgICAgIGludCBuYXJn
cyA9IGFyZ3Muc2l6ZSgpICsgMTsKLSAgICAgICAgaW50IGkgPSAwOwotICAgICAgICBjaGFyKiog
YXJndiA9IGdfbmV3YShjaGFyKiwgbmFyZ3MpOwotICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGFy
ZyA6IGFyZ3MpCi0gICAgICAgICAgICBhcmd2W2krK10gPSBjb25zdF9jYXN0PGNoYXIqPihhcmcu
ZGF0YSgpKTsKLSAgICAgICAgYXJndltpXSA9IG51bGxwdHI7Ci0KLSAgICAgICAgR1JlZlB0cjxH
U3VicHJvY2Vzc0xhdW5jaGVyPiBsYXVuY2hlciA9IGFkb3B0R1JlZihnX3N1YnByb2Nlc3NfbGF1
bmNoZXJfbmV3KEdfU1VCUFJPQ0VTU19GTEFHU19JTkhFUklUX0ZEUykpOwotICAgICAgICBnX3N1
YnByb2Nlc3NfbGF1bmNoZXJfc2V0X2NoaWxkX3NldHVwKGxhdW5jaGVyLmdldCgpLCBjaGlsZFNl
dHVwRnVuYywgR0lOVF9UT19QT0lOVEVSKHN5bmNGZHNbMV0pLCBudWxscHRyKTsKLSAgICAgICAg
Z19zdWJwcm9jZXNzX2xhdW5jaGVyX3Rha2VfZmQobGF1bmNoZXIuZ2V0KCksIHByb3h5RmQsIHBy
b3h5RmQpOwotICAgICAgICBnX3N1YnByb2Nlc3NfbGF1bmNoZXJfdGFrZV9mZChsYXVuY2hlci5n
ZXQoKSwgc3luY0Zkc1sxXSwgc3luY0Zkc1sxXSk7Ci0gICAgICAgIC8vIFdlIGFyZSBwdXJwb3Nl
ZnVsbHkgbGVhdmluZyBzeW5jRmRzWzBdIG9wZW4gaGVyZS4KLSAgICAgICAgLy8geGRnLWRidXMt
cHJveHkgd2lsbCBleGl0KCkgaXRzZWxmIG9uY2UgdGhhdCBpcyBjbG9zZWQgb24gb3VyIGV4aXQK
LQotICAgICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7Ci0gICAgICAgIEdSZWZQdHI8
R1N1YnByb2Nlc3M+IHByb2Nlc3MgPSBhZG9wdEdSZWYoZ19zdWJwcm9jZXNzX2xhdW5jaGVyX3Nw
YXdudihsYXVuY2hlci5nZXQoKSwgYXJndiwgJmVycm9yLm91dFB0cigpKSk7Ci0gICAgICAgIGlm
ICghcHJvY2Vzcy5nZXQoKSkKLSAgICAgICAgICAgIGdfZXJyb3IoIkZhaWxlZCB0byBzdGFydCBk
YnVzIHByb3h5OiAlcyIsIGVycm9yLT5tZXNzYWdlKTsKLQotICAgICAgICBjaGFyIG91dDsKLSAg
ICAgICAgLy8gV2UgbmVlZCB0byBlbnN1cmUgdGhlIHByb3h5IGhhcyBjcmVhdGVkIHRoZSBzb2Nr
ZXQuCi0gICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIG1vcmUgYmxvY2tpbmcgSU8uCi0gICAgICAg
IGlmIChyZWFkIChzeW5jRmRzWzBdLCAmb3V0LCAxKSAhPSAxKQotICAgICAgICAgICAgZ19lcnJv
cigiRmFpbGVkIHRvIGZ1bGx5IGxhdW5jaCBkYnVzLXByb3h5ICVzIiwgZ19zdHJlcnJvcihlcnJu
bykpOwotCi0gICAgICAgIG1faXNSdW5uaW5nID0gdHJ1ZTsKLSAgICB9OwotCi1wcml2YXRlOgot
ICAgIHN0YXRpYyB2b2lkIGNoaWxkU2V0dXBGdW5jKGdwb2ludGVyIHVzZXJkYXRhKQotICAgIHsK
LSAgICAgICAgaW50IGZkID0gR1BPSU5URVJfVE9fSU5UKHVzZXJkYXRhKTsKLSAgICAgICAgZmNu
dGwoZmQsIEZfU0VURkQsIDApOyAvLyBVbnNldCBDTE9FWEVDCi0gICAgfQotCi0gICAgc3RhdGlj
IEdVbmlxdWVQdHI8Y2hhcj4gbWFrZVByb3h5UGF0aChjb25zdCBjaGFyKiBhcHBSdW5EaXIpCi0g
ICAgewotICAgICAgICBpZiAoZ19ta2Rpcl93aXRoX3BhcmVudHMoYXBwUnVuRGlyLCAwNzAwKSA9
PSAtMSkgewotICAgICAgICAgICAgZ193YXJuaW5nKCJGYWlsZWQgdG8gbWtkaXIgZm9yIGRidXMg
cHJveHkgKCVzKTogJXMiLCBhcHBSdW5EaXIsIGdfc3RyZXJyb3IoZXJybm8pKTsKLSAgICAgICAg
ICAgIHJldHVybiBHVW5pcXVlUHRyPGNoYXI+KG51bGxwdHIpOwotICAgICAgICB9Ci0KLSAgICAg
ICAgR1VuaXF1ZVB0cjxjaGFyPiBwcm94eVNvY2tldFRlbXBsYXRlKGdfYnVpbGRfZmlsZW5hbWUo
YXBwUnVuRGlyLCAiZGJ1cy1wcm94eS1YWFhYWFgiLCBudWxscHRyKSk7Ci0gICAgICAgIGludCBm
ZDsKLSAgICAgICAgaWYgKChmZCA9IGdfbWtzdGVtcChwcm94eVNvY2tldFRlbXBsYXRlLmdldCgp
KSkgPT0gLTEpIHsKLSAgICAgICAgICAgIGdfd2FybmluZygiRmFpbGVkIHRvIG1ha2Ugc29ja2V0
IGZpbGUgZm9yIGRidXMgcHJveHk6ICVzIiwgZ19zdHJlcnJvcihlcnJubykpOwotICAgICAgICAg
ICAgcmV0dXJuIEdVbmlxdWVQdHI8Y2hhcj4obnVsbHB0cik7Ci0gICAgICAgIH0KLQotICAgICAg
ICBjbG9zZShmZCk7Ci0gICAgICAgIHJldHVybiBwcm94eVNvY2tldFRlbXBsYXRlOwotICAgIH07
Ci0KLSAgICBzdGF0aWMgR1VuaXF1ZVB0cjxjaGFyPiBkYnVzQWRkcmVzc1RvUGF0aChjb25zdCBj
aGFyKiBhZGRyZXNzLCBEQnVzQWRkcmVzc1R5cGUgYWRkcmVzc1R5cGUgPSBEQnVzQWRkcmVzc1R5
cGU6Ok5vcm1hbCkKLSAgICB7Ci0gICAgICAgIGlmICghYWRkcmVzcykKLSAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOwotCi0gICAgICAgIGlmICghZ19zdHJfaGFzX3ByZWZpeChhZGRyZXNzLCAi
dW5peDoiKSkKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgICAgIGNvbnN0IGNo
YXIqIHBhdGggPSBzdHJzdHIoYWRkcmVzcywgYWRkcmVzc1R5cGUgPT0gREJ1c0FkZHJlc3NUeXBl
OjpBYnN0cmFjdCA/ICJhYnN0cmFjdD0iIDogInBhdGg9Iik7Ci0gICAgICAgIGlmICghcGF0aCkK
LSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgICAgIHBhdGggKz0gc3RybGVuKGFk
ZHJlc3NUeXBlID09IERCdXNBZGRyZXNzVHlwZTo6QWJzdHJhY3QgPyAiYWJzdHJhY3Q9IiA6ICJw
YXRoPSIpOwotICAgICAgICBjb25zdCBjaGFyKiBwYXRoRW5kID0gcGF0aDsKLSAgICAgICAgd2hp
bGUgKCpwYXRoRW5kICYmICpwYXRoRW5kICE9ICcsJykKLSAgICAgICAgICAgIHBhdGhFbmQrKzsK
LQotICAgICAgICByZXR1cm4gR1VuaXF1ZVB0cjxjaGFyPihnX3N0cm5kdXAocGF0aCwgcGF0aEVu
ZCAtIHBhdGgpKTsKLX0KLQotICAgIENTdHJpbmcgbV9zb2NrZXQ7Ci0gICAgQ1N0cmluZyBtX3Bh
dGg7Ci0gICAgQ1N0cmluZyBtX3Byb3h5UGF0aDsKLSAgICBib29sIG1faXNSdW5uaW5nOwotICAg
IFZlY3RvcjxDU3RyaW5nPiBtX3Blcm1pc3Npb25zOwotfTsKLQotZW51bSBjbGFzcyBCaW5kRmxh
Z3MgewotICAgIFJlYWRPbmx5LAotICAgIFJlYWRXcml0ZSwKLSAgICBEZXZpY2UsCi19OwotCi1z
dGF0aWMgdm9pZCBiaW5kSWZFeGlzdHMoVmVjdG9yPENTdHJpbmc+JiBhcmdzLCBjb25zdCBjaGFy
KiBwYXRoLCBCaW5kRmxhZ3MgYmluZEZsYWdzID0gQmluZEZsYWdzOjpSZWFkT25seSkKLXsKLSAg
ICBpZiAoIXBhdGgpCi0gICAgICAgIHJldHVybjsKLQotICAgIGNvbnN0IGNoYXIqIGJpbmRUeXBl
OwotICAgIGlmIChiaW5kRmxhZ3MgPT0gQmluZEZsYWdzOjpEZXZpY2UpCi0gICAgICAgIGJpbmRU
eXBlID0gIi0tZGV2LWJpbmQtdHJ5IjsKLSAgICBlbHNlIGlmIChiaW5kRmxhZ3MgPT0gQmluZEZs
YWdzOjpSZWFkT25seSkKLSAgICAgICAgYmluZFR5cGUgPSAiLS1yby1iaW5kLXRyeSI7Ci0gICAg
ZWxzZQotICAgICAgICBiaW5kVHlwZSA9ICItLWJpbmQtdHJ5IjsKLSAgICBhcmdzLmFwcGVuZFZl
Y3RvcihWZWN0b3I8Q1N0cmluZz4oeyBiaW5kVHlwZSwgcGF0aCwgcGF0aCB9KSk7Ci19Ci0KLXN0
YXRpYyB2b2lkIGJpbmREQnVzU2Vzc2lvbihWZWN0b3I8Q1N0cmluZz4mIGFyZ3MsIFhER0RCdXNQ
cm94eUxhdW5jaGVyJiBwcm94eSkKLXsKLSAgICBpZiAoIXByb3h5LmlzUnVubmluZygpKQotICAg
ICAgICBwcm94eS5zZXRBZGRyZXNzKGdfZ2V0ZW52KCJEQlVTX1NFU1NJT05fQlVTX0FERFJFU1Mi
KSwgREJ1c0FkZHJlc3NUeXBlOjpOb3JtYWwpOwotCi0gICAgaWYgKHByb3h5LnByb3h5UGF0aCgp
LmRhdGEoKSkgewotICAgICAgICBhcmdzLmFwcGVuZFZlY3RvcihWZWN0b3I8Q1N0cmluZz4oewot
ICAgICAgICAgICAgIi0tYmluZCIsIHByb3h5LnByb3h5UGF0aCgpLCBwcm94eS5wYXRoKCksCi0g
ICAgICAgIH0pKTsKLSAgICB9Ci19Ci0KLXN0YXRpYyB2b2lkIGJpbmRYMTEoVmVjdG9yPENTdHJp
bmc+JiBhcmdzKQotewotICAgIGNvbnN0IGNoYXIqIGRpc3BsYXkgPSBnX2dldGVudigiRElTUExB
WSIpOwotICAgIGlmICghZGlzcGxheSB8fCBkaXNwbGF5WzBdICE9ICc6JyB8fCAhZ19hc2NpaV9p
c2RpZ2l0KGNvbnN0X2Nhc3Q8Y2hhcio+KGRpc3BsYXkpWzFdKSkKLSAgICAgICAgZGlzcGxheSA9
ICI6MCI7Ci0gICAgR1VuaXF1ZVB0cjxjaGFyPiB4MTFGaWxlKGdfc3RyZHVwX3ByaW50ZigiL3Rt
cC8uWDExLXVuaXgvWCVzIiwgZGlzcGxheSArIDEpKTsKLSAgICBiaW5kSWZFeGlzdHMoYXJncywg
eDExRmlsZS5nZXQoKSwgQmluZEZsYWdzOjpSZWFkV3JpdGUpOwotCi0gICAgY29uc3QgY2hhciog
eGF1dGggPSBnX2dldGVudigiWEFVVEhPUklUWSIpOwotICAgIGlmICgheGF1dGgpIHsKLSAgICAg
ICAgY29uc3QgY2hhciogaG9tZURpciA9IGdfZ2V0X2hvbWVfZGlyKCk7Ci0gICAgICAgIEdVbmlx
dWVQdHI8Y2hhcj4geGF1dGhGaWxlKGdfYnVpbGRfZmlsZW5hbWUoaG9tZURpciwgIi5YYXV0aG9y
aXR5IiwgbnVsbHB0cikpOwotICAgICAgICBiaW5kSWZFeGlzdHMoYXJncywgeGF1dGhGaWxlLmdl
dCgpKTsKLSAgICB9IGVsc2UKLSAgICAgICAgYmluZElmRXhpc3RzKGFyZ3MsIHhhdXRoKTsKLX0K
LQotI2lmIFBMQVRGT1JNKFdBWUxBTkQpICYmIFVTRShFR0wpCi1zdGF0aWMgdm9pZCBiaW5kV2F5
bGFuZChWZWN0b3I8Q1N0cmluZz4mIGFyZ3MpCi17Ci0gICAgY29uc3QgY2hhciogZGlzcGxheSA9
IGdfZ2V0ZW52KCJXQVlMQU5EX0RJU1BMQVkiKTsKLSAgICBpZiAoIWRpc3BsYXkpCi0gICAgICAg
IGRpc3BsYXkgPSAid2F5bGFuZC0wIjsKLQotICAgIGNvbnN0IGNoYXIqIHJ1bnRpbWVEaXIgPSBn
X2dldF91c2VyX3J1bnRpbWVfZGlyKCk7Ci0gICAgR1VuaXF1ZVB0cjxjaGFyPiB3YXlsYW5kUnVu
dGltZUZpbGUoZ19idWlsZF9maWxlbmFtZShydW50aW1lRGlyLCBkaXNwbGF5LCBudWxscHRyKSk7
Ci0gICAgYmluZElmRXhpc3RzKGFyZ3MsIHdheWxhbmRSdW50aW1lRmlsZS5nZXQoKSwgQmluZEZs
YWdzOjpSZWFkV3JpdGUpOwotfQotI2VuZGlmCi0KLXN0YXRpYyB2b2lkIGJpbmRQdWxzZShWZWN0
b3I8Q1N0cmluZz4mIGFyZ3MpCi17Ci0gICAgLy8gRklYTUU6IFRoZSBzZXJ2ZXIgY2FuIGJlIGRl
ZmluZWQgaW4gY29uZmlnIGZpbGVzIHdlJ2QgaGF2ZSB0byBwYXJzZS4KLSAgICAvLyBUaGV5IGNh
biBhbHNvIGJlIHNldCBhcyBYMTEgcHJvcHMgYnV0IHRoYXQgaXMgZ2V0dGluZyBhIGJpdCByaWRp
Y3Vsb3VzLgotICAgIGNvbnN0IGNoYXIqIHB1bHNlU2VydmVyID0gZ19nZXRlbnYoIlBVTFNFX1NF
UlZFUiIpOwotICAgIGlmIChwdWxzZVNlcnZlcikgewotICAgICAgICBpZiAoZ19zdHJfaGFzX3By
ZWZpeChwdWxzZVNlcnZlciwgInVuaXg6IikpCi0gICAgICAgICAgICBiaW5kSWZFeGlzdHMoYXJn
cywgcHVsc2VTZXJ2ZXIgKyA1LCBCaW5kRmxhZ3M6OlJlYWRXcml0ZSk7Ci0gICAgICAgIC8vIGVs
c2UgaXQgdXNlcyB0Y3AKLSAgICB9IGVsc2UgewotICAgICAgICBjb25zdCBjaGFyKiBydW50aW1l
RGlyID0gZ19nZXRfdXNlcl9ydW50aW1lX2RpcigpOwotICAgICAgICBHVW5pcXVlUHRyPGNoYXI+
IHB1bHNlUnVudGltZURpcihnX2J1aWxkX2ZpbGVuYW1lKHJ1bnRpbWVEaXIsICJwdWxzZSIsIG51
bGxwdHIpKTsKLSAgICAgICAgYmluZElmRXhpc3RzKGFyZ3MsIHB1bHNlUnVudGltZURpci5nZXQo
KSwgQmluZEZsYWdzOjpSZWFkV3JpdGUpOwotICAgIH0KLQotICAgIGNvbnN0IGNoYXIqIHB1bHNl
Q29uZmlnID0gZ19nZXRlbnYoIlBVTFNFX0NMSUVOVENPTkZJRyIpOwotICAgIGlmIChwdWxzZUNv
bmZpZykKLSAgICAgICAgYmluZElmRXhpc3RzKGFyZ3MsIHB1bHNlQ29uZmlnKTsKLQotICAgIGNv
bnN0IGNoYXIqIGNvbmZpZ0RpciA9IGdfZ2V0X3VzZXJfY29uZmlnX2RpcigpOwotICAgIEdVbmlx
dWVQdHI8Y2hhcj4gcHVsc2VDb25maWdEaXIoZ19idWlsZF9maWxlbmFtZShjb25maWdEaXIsICJw
dWxzZSIsIG51bGxwdHIpKTsKLSAgICBiaW5kSWZFeGlzdHMoYXJncywgcHVsc2VDb25maWdEaXIu
Z2V0KCkpOwotCi0gICAgY29uc3QgY2hhciogaG9tZURpciA9IGdfZ2V0X2hvbWVfZGlyKCk7Ci0g
ICAgR1VuaXF1ZVB0cjxjaGFyPiBwdWxzZUhvbWVDb25maWdEaXIoZ19idWlsZF9maWxlbmFtZSho
b21lRGlyLCAiLnB1bHNlIiwgbnVsbHB0cikpOwotICAgIEdVbmlxdWVQdHI8Y2hhcj4gYXNvdW5k
SG9tZUNvbmZpZ0RpcihnX2J1aWxkX2ZpbGVuYW1lKGhvbWVEaXIsICIuYXNvdW5kcmMiLCBudWxs
cHRyKSk7Ci0gICAgYmluZElmRXhpc3RzKGFyZ3MsIHB1bHNlSG9tZUNvbmZpZ0Rpci5nZXQoKSk7
Ci0gICAgYmluZElmRXhpc3RzKGFyZ3MsIGFzb3VuZEhvbWVDb25maWdEaXIuZ2V0KCkpOwotCi0g
ICAgLy8gVGhpcyBpcyB0aGUgdWx0aW1hdGUgZmFsbGJhY2sgdG8gcmF3IEFMU0EKLSAgICBiaW5k
SWZFeGlzdHMoYXJncywgIi9kZXYvc25kIiwgQmluZEZsYWdzOjpEZXZpY2UpOwotfQotCi1zdGF0
aWMgdm9pZCBiaW5kRm9udHMoVmVjdG9yPENTdHJpbmc+JiBhcmdzKQotewotICAgIGNvbnN0IGNo
YXIqIGNvbmZpZ0RpciA9IGdfZ2V0X3VzZXJfY29uZmlnX2RpcigpOwotICAgIGNvbnN0IGNoYXIq
IGhvbWVEaXIgPSBnX2dldF9ob21lX2RpcigpOwotICAgIGNvbnN0IGNoYXIqIGRhdGFEaXIgPSBn
X2dldF91c2VyX2RhdGFfZGlyKCk7Ci0gICAgY29uc3QgY2hhciogY2FjaGVEaXIgPSBnX2dldF91
c2VyX2NhY2hlX2RpcigpOwotCi0gICAgLy8gQ29uZmlncyBjYW4gaW5jbHVkZSBjdXN0b20gZGly
cyBidXQgdGhlbiB3ZSBoYXZlIHRvIHBhcnNlIHRoZW0uLi4KLSAgICBHVW5pcXVlUHRyPGNoYXI+
IGZvbnRDb25maWcoZ19idWlsZF9maWxlbmFtZShjb25maWdEaXIsICJmb250Y29uZmlnIiwgbnVs
bHB0cikpOwotICAgIEdVbmlxdWVQdHI8Y2hhcj4gZm9udENhY2hlKGdfYnVpbGRfZmlsZW5hbWUo
Y2FjaGVEaXIsICJmb250Y29uZmlnIiwgbnVsbHB0cikpOwotICAgIEdVbmlxdWVQdHI8Y2hhcj4g
Zm9udEhvbWVDb25maWcoZ19idWlsZF9maWxlbmFtZShob21lRGlyLCAiLmZvbnRzLmNvbmYiLCBu
dWxscHRyKSk7Ci0gICAgR1VuaXF1ZVB0cjxjaGFyPiBmb250SG9tZUNvbmZpZ0RpcihnX2J1aWxk
X2ZpbGVuYW1lKGNvbmZpZ0RpciwgIi5mb250cy5jb25mLmQiLCBudWxscHRyKSk7Ci0gICAgR1Vu
aXF1ZVB0cjxjaGFyPiBmb250RGF0YShnX2J1aWxkX2ZpbGVuYW1lKGRhdGFEaXIsICJmb250cyIs
IG51bGxwdHIpKTsKLSAgICBHVW5pcXVlUHRyPGNoYXI+IGZvbnRIb21lRGF0YShnX2J1aWxkX2Zp
bGVuYW1lKGhvbWVEaXIsICIuZm9udHMiLCBudWxscHRyKSk7Ci0gICAgYmluZElmRXhpc3RzKGFy
Z3MsIGZvbnRDb25maWcuZ2V0KCkpOwotICAgIGJpbmRJZkV4aXN0cyhhcmdzLCBmb250Q2FjaGUu
Z2V0KCksIEJpbmRGbGFnczo6UmVhZFdyaXRlKTsKLSAgICBiaW5kSWZFeGlzdHMoYXJncywgZm9u
dEhvbWVDb25maWcuZ2V0KCkpOwotICAgIGJpbmRJZkV4aXN0cyhhcmdzLCBmb250SG9tZUNvbmZp
Z0Rpci5nZXQoKSk7Ci0gICAgYmluZElmRXhpc3RzKGFyZ3MsIGZvbnREYXRhLmdldCgpKTsKLSAg
ICBiaW5kSWZFeGlzdHMoYXJncywgZm9udEhvbWVEYXRhLmdldCgpKTsKLX0KLQotI2lmIFBMQVRG
T1JNKEdUSykKLXN0YXRpYyB2b2lkIGJpbmRHdGtEYXRhKFZlY3RvcjxDU3RyaW5nPiYgYXJncykK
LXsKLSAgICBjb25zdCBjaGFyKiBjb25maWdEaXIgPSBnX2dldF91c2VyX2NvbmZpZ19kaXIoKTsK
LSAgICBjb25zdCBjaGFyKiBkYXRhRGlyID0gZ19nZXRfdXNlcl9kYXRhX2RpcigpOwotICAgIGNv
bnN0IGNoYXIqIGhvbWVEaXIgPSBnX2dldF9ob21lX2RpcigpOwotCi0gICAgR1VuaXF1ZVB0cjxj
aGFyPiBndGtDb25maWcoZ19idWlsZF9maWxlbmFtZShjb25maWdEaXIsICJndGstMy4wIiwgbnVs
bHB0cikpOwotICAgIEdVbmlxdWVQdHI8Y2hhcj4gdGhlbWVEYXRhKGdfYnVpbGRfZmlsZW5hbWUo
ZGF0YURpciwgInRoZW1lcyIsIG51bGxwdHIpKTsKLSAgICBHVW5pcXVlUHRyPGNoYXI+IHRoZW1l
SG9tZURhdGEoZ19idWlsZF9maWxlbmFtZShob21lRGlyLCAiLnRoZW1lcyIsIG51bGxwdHIpKTsK
LSAgICBHVW5pcXVlUHRyPGNoYXI+IGljb25Ib21lRGF0YShnX2J1aWxkX2ZpbGVuYW1lKGhvbWVE
aXIsICIuaWNvbnMiLCBudWxscHRyKSk7Ci0gICAgYmluZElmRXhpc3RzKGFyZ3MsIGd0a0NvbmZp
Zy5nZXQoKSk7Ci0gICAgYmluZElmRXhpc3RzKGFyZ3MsIHRoZW1lRGF0YS5nZXQoKSk7Ci0gICAg
YmluZElmRXhpc3RzKGFyZ3MsIHRoZW1lSG9tZURhdGEuZ2V0KCkpOwotICAgIGJpbmRJZkV4aXN0
cyhhcmdzLCBpY29uSG9tZURhdGEuZ2V0KCkpOwotfQotCi1zdGF0aWMgdm9pZCBiaW5kQTExeShW
ZWN0b3I8Q1N0cmluZz4mIGFyZ3MpCi17Ci0gICAgc3RhdGljIFhER0RCdXNQcm94eUxhdW5jaGVy
IHByb3h5OwotCi0gICAgaWYgKCFwcm94eS5pc1J1bm5pbmcoKSkgewotICAgICAgICAvLyBGSVhN
RTogQXZvaWQgYmxvY2tpbmcgSU8uLi4gKEl0IGlzIGF0IGxlYXN0IGEgb25lLXRpbWUgY29zdCkK
LSAgICAgICAgR1JlZlB0cjxHREJ1c0Nvbm5lY3Rpb24+IHNlc3Npb25CdXMgPSBhZG9wdEdSZWYo
Z19idXNfZ2V0X3N5bmMoR19CVVNfVFlQRV9TRVNTSU9OLCBudWxscHRyLCBudWxscHRyKSk7Ci0g
ICAgICAgIGlmICghc2Vzc2lvbkJ1cy5nZXQoKSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAg
ICAgICBHUmVmUHRyPEdEQnVzTWVzc2FnZT4gbXNnID0gYWRvcHRHUmVmKGdfZGJ1c19tZXNzYWdl
X25ld19tZXRob2RfY2FsbCgKLSAgICAgICAgICAgICJvcmcuYTExeS5CdXMiLCAiL29yZy9hMTF5
L2J1cyIsICJvcmcuYTExeS5CdXMiLCAiR2V0QWRkcmVzcyIpKTsKLSAgICAgICAgZ19kYnVzX21l
c3NhZ2Vfc2V0X2JvZHkobXNnLmdldCgpLCBnX3ZhcmlhbnRfbmV3KCIoKSIpKTsKLSAgICAgICAg
R1JlZlB0cjxHREJ1c01lc3NhZ2U+IHJlcGx5ID0gYWRvcHRHUmVmKGdfZGJ1c19jb25uZWN0aW9u
X3NlbmRfbWVzc2FnZV93aXRoX3JlcGx5X3N5bmMoCi0gICAgICAgICAgICBzZXNzaW9uQnVzLmdl
dCgpLCBtc2cuZ2V0KCksCi0gICAgICAgICAgICBHX0RCVVNfU0VORF9NRVNTQUdFX0ZMQUdTX05P
TkUsCi0gICAgICAgICAgICAzMDAwMCwKLSAgICAgICAgICAgIG51bGxwdHIsCi0gICAgICAgICAg
ICBudWxscHRyLAotICAgICAgICAgICAgbnVsbHB0cikpOwotCi0gICAgICAgIGlmIChyZXBseS5n
ZXQoKSkgewotICAgICAgICAgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwotICAgICAg
ICAgICAgaWYgKGdfZGJ1c19tZXNzYWdlX3RvX2dlcnJvcihyZXBseS5nZXQoKSwgJmVycm9yLm91
dFB0cigpKSkgewotICAgICAgICAgICAgICAgIGlmICghZ19lcnJvcl9tYXRjaGVzKGVycm9yLmdl
dCgpLCBHX0RCVVNfRVJST1IsIEdfREJVU19FUlJPUl9TRVJWSUNFX1VOS05PV04pKQotICAgICAg
ICAgICAgICAgICAgICBnX3dhcm5pbmcoIkNhbid0IGZpbmQgYTExeSBidXM6ICVzIiwgZXJyb3It
Pm1lc3NhZ2UpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBHVW5pcXVl
T3V0UHRyPGNoYXI+IGExMXlBZGRyZXNzOwotICAgICAgICAgICAgICAgIGdfdmFyaWFudF9nZXQo
Z19kYnVzX21lc3NhZ2VfZ2V0X2JvZHkocmVwbHkuZ2V0KCkpLCAiKHMpIiwgJmExMXlBZGRyZXNz
Lm91dFB0cigpKTsKLSAgICAgICAgICAgICAgICBwcm94eS5zZXRBZGRyZXNzKGExMXlBZGRyZXNz
LmdldCgpLCBEQnVzQWRkcmVzc1R5cGU6OkFic3RyYWN0KTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQotCi0gICAgICAgIHByb3h5LnNldFBlcm1pc3Npb25zKHsKLSAgICAgICAgICAgICItLXNs
b3BweS1uYW1lcyIsCi0gICAgICAgICAgICAiLS1jYWxsPW9yZy5hMTF5LmF0c3BpLlJlZ2lzdHJ5
PW9yZy5hMTF5LmF0c3BpLlNvY2tldC5FbWJlZEAvb3JnL2ExMXkvYXRzcGkvYWNjZXNzaWJsZS9y
b290IiwKLSAgICAgICAgICAgICItLWNhbGw9b3JnLmExMXkuYXRzcGkuUmVnaXN0cnk9b3JnLmEx
MXkuYXRzcGkuU29ja2V0LlVuZW1iZWRAL29yZy9hMTF5L2F0c3BpL2FjY2Vzc2libGUvcm9vdCIs
Ci0gICAgICAgICAgICAiLS1jYWxsPW9yZy5hMTF5LmF0c3BpLlJlZ2lzdHJ5PW9yZy5hMTF5LmF0
c3BpLlJlZ2lzdHJ5LkdldFJlZ2lzdGVyZWRFdmVudHNAL29yZy9hMTF5L2F0c3BpL3JlZ2lzdHJ5
IiwKLSAgICAgICAgICAgICItLWNhbGw9b3JnLmExMXkuYXRzcGkuUmVnaXN0cnk9b3JnLmExMXku
YXRzcGkuRGV2aWNlRXZlbnRDb250cm9sbGVyLkdldEtleXN0cm9rZUxpc3RlbmVyc0Avb3JnL2Ex
MXkvYXRzcGkvcmVnaXN0cnkvZGV2aWNlZXZlbnRjb250cm9sbGVyIiwKLSAgICAgICAgICAgICIt
LWNhbGw9b3JnLmExMXkuYXRzcGkuUmVnaXN0cnk9b3JnLmExMXkuYXRzcGkuRGV2aWNlRXZlbnRD
b250cm9sbGVyLkdldERldmljZUV2ZW50TGlzdGVuZXJzQC9vcmcvYTExeS9hdHNwaS9yZWdpc3Ry
eS9kZXZpY2VldmVudGNvbnRyb2xsZXIiLAotICAgICAgICAgICAgIi0tY2FsbD1vcmcuYTExeS5h
dHNwaS5SZWdpc3RyeT1vcmcuYTExeS5hdHNwaS5EZXZpY2VFdmVudENvbnRyb2xsZXIuTm90aWZ5
TGlzdGVuZXJzU3luY0Avb3JnL2ExMXkvYXRzcGkvcmVnaXN0cnkvZGV2aWNlZXZlbnRjb250cm9s
bGVyIiwKLSAgICAgICAgICAgICItLWNhbGw9b3JnLmExMXkuYXRzcGkuUmVnaXN0cnk9b3JnLmEx
MXkuYXRzcGkuRGV2aWNlRXZlbnRDb250cm9sbGVyLk5vdGlmeUxpc3RlbmVyc0FzeW5jQC9vcmcv
YTExeS9hdHNwaS9yZWdpc3RyeS9kZXZpY2VldmVudGNvbnRyb2xsZXIiLAotICAgICAgICB9KTsK
LQotICAgICAgICBwcm94eS5sYXVuY2goKTsKLSAgICB9Ci0KLSAgICBpZiAocHJveHkucHJveHlQ
YXRoKCkuZGF0YSgpKSB7Ci0gICAgICAgIGFyZ3MuYXBwZW5kVmVjdG9yKFZlY3RvcjxDU3RyaW5n
Pih7Ci0gICAgICAgICAgICAiLS1iaW5kIiwgcHJveHkucHJveHlQYXRoKCksIHByb3h5LnBhdGgo
KSwKLSAgICAgICAgfSkpOwotICAgIH0KLX0KLSNlbmRpZgotCi1zdGF0aWMgYm9vbCBiaW5kUGF0
aFZhcihWZWN0b3I8Q1N0cmluZz4mIGFyZ3MsIGNvbnN0IGNoYXIqIHZhcm5hbWUpCi17Ci0gICAg
Y29uc3QgY2hhciogcGF0aFZhbHVlID0gZ19nZXRlbnYodmFybmFtZSk7Ci0gICAgaWYgKCFwYXRo
VmFsdWUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIEdVbmlxdWVQdHI8Y2hhcio+IHNw
bGl0UGF0aHMoZ19zdHJzcGxpdChwYXRoVmFsdWUsICI6IiwgLTEpKTsKLSAgICBmb3IgKHNpemVf
dCBpID0gMDsgc3BsaXRQYXRocy5nZXQoKVtpXTsgKytpKQotICAgICAgICBiaW5kSWZFeGlzdHMo
YXJncywgc3BsaXRQYXRocy5nZXQoKVtpXSk7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotc3Rh
dGljIHZvaWQgYmluZEdTdHJlYW1lckRhdGEoVmVjdG9yPENTdHJpbmc+JiBhcmdzKQotewotICAg
IGlmICghYmluZFBhdGhWYXIoYXJncywgIkdTVF9QTFVHSU5fUEFUSF8xXzAiKSkKLSAgICAgICAg
YmluZFBhdGhWYXIoYXJncywgIkdTVF9QTFVHSU5fUEFUSCIpOwotCi0gICAgaWYgKCFiaW5kUGF0
aFZhcihhcmdzLCAiR1NUX1BMVUdJTl9TWVNURU1fUEFUSF8xXzAiKSkgewotICAgICAgICBpZiAo
IWJpbmRQYXRoVmFyKGFyZ3MsICJHU1RfUExVR0lOX1NZU1RFTV9QQVRIIikpIHsKLSAgICAgICAg
ICAgIEdVbmlxdWVQdHI8Y2hhcj4gZ3N0RGF0YShnX2J1aWxkX2ZpbGVuYW1lKGdfZ2V0X3VzZXJf
ZGF0YV9kaXIoKSwgImdzdHJlYW1lci0xLjAiLCBudWxscHRyKSk7Ci0gICAgICAgICAgICBiaW5k
SWZFeGlzdHMoYXJncywgZ3N0RGF0YS5nZXQoKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBH
VW5pcXVlUHRyPGNoYXI+IGdzdENhY2hlKGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9jYWNo
ZV9kaXIoKSwgImdzdHJlYW1lci0xLjAiLCBudWxscHRyKSk7Ci0gICAgYmluZElmRXhpc3RzKGFy
Z3MsIGdzdENhY2hlLmdldCgpLCBCaW5kRmxhZ3M6OlJlYWRXcml0ZSk7Ci0KLSAgICAvLyAvdXNy
L2xpYiBpcyBhbHJlYWR5IGFkZGVkIHNvIHRoaXMgaXMgb25seSByZXF1cmllZCBmb3Igb3RoZXIg
ZGlycwotICAgIGNvbnN0IGNoYXIqIHNjYW5uZXJQYXRoID0gZ19nZXRlbnYoIkdTVF9QTFVHSU5f
U0NBTk5FUiIpID86ICIvdXNyL2xpYmV4ZWMvZ3N0cmVhbWVyLTEuMC9nc3QtcGx1Z2luLXNjYW5u
ZXIiOwotICAgIGNvbnN0IGNoYXIqIGhlbHBlclBhdGggPSBnX2dldGVudigiR1NUX0lOU1RBTExf
UExVR0lOU19IRUxQRVIgIikgPzogIi91c3IvbGliZXhlYy9nc3QtaW5zdGFsbC1wbHVnaW5zLWhl
bHBlciI7Ci0KLSAgICBiaW5kSWZFeGlzdHMoYXJncywgc2Nhbm5lclBhdGgpOwotICAgIGJpbmRJ
ZkV4aXN0cyhhcmdzLCBoZWxwZXJQYXRoKTsKLX0KLQotc3RhdGljIHZvaWQgYmluZE9wZW5HTChW
ZWN0b3I8Q1N0cmluZz4mIGFyZ3MpCi17Ci0gICAgYXJncy5hcHBlbmRWZWN0b3IoVmVjdG9yPENT
dHJpbmc+KHsKLSAgICAgICAgIi0tZGV2LWJpbmQtdHJ5IiwgIi9kZXYvZHJpIiwgIi9kZXYvZHJp
IiwKLSAgICAgICAgLy8gTWFsaQotICAgICAgICAiLS1kZXYtYmluZC10cnkiLCAiL2Rldi9tYWxp
IiwgIi9kZXYvbWFsaSIsCi0gICAgICAgICItLWRldi1iaW5kLXRyeSIsICIvZGV2L21hbGkwIiwg
Ii9kZXYvbWFsaTAiLAotICAgICAgICAiLS1kZXYtYmluZC10cnkiLCAiL2Rldi91bXBsb2NrIiwg
Ii9kZXYvdW1wbG9jayIsCi0gICAgICAgIC8vIE52aWRpYQotICAgICAgICAiLS1kZXYtYmluZC10
cnkiLCAiL2Rldi9udmlkaWFjdGwiLCAiL2Rldi9udmlkaWFjdGwiLAotICAgICAgICAiLS1kZXYt
YmluZC10cnkiLCAiL2Rldi9udmlkaWEwIiwgIi9kZXYvbnZpZGlhMCIsCi0gICAgICAgICItLWRl
di1iaW5kLXRyeSIsICIvZGV2L252aWRpYSIsICIvZGV2L252aWRpYSIsCi0gICAgICAgIC8vIEFk
cmVubwotICAgICAgICAiLS1kZXYtYmluZC10cnkiLCAiL2Rldi9rZ3NsLTNkMCIsICIvZGV2L2tn
c2wtM2QwIiwKLSAgICAgICAgIi0tZGV2LWJpbmQtdHJ5IiwgIi9kZXYvaW9uIiwgIi9kZXYvaW9u
IiwKLSNpZiBQTEFURk9STShXUEUpCi0gICAgICAgICItLWRldi1iaW5kLXRyeSIsICIvZGV2L2Zi
MCIsICIvZGV2L2ZiMCIsCi0gICAgICAgICItLWRldi1iaW5kLXRyeSIsICIvZGV2L2ZiMSIsICIv
ZGV2L2ZiMSIsCi0jZW5kaWYKLSAgICB9KSk7Ci19Ci0KLXN0YXRpYyB2b2lkIGJpbmRWNGwoVmVj
dG9yPENTdHJpbmc+JiBhcmdzKQotewotICAgIGFyZ3MuYXBwZW5kVmVjdG9yKFZlY3RvcjxDU3Ry
aW5nPih7Ci0gICAgICAgICItLWRldi1iaW5kLXRyeSIsICIvZGV2L3Y0bCIsICIvZGV2L3Y0bCIs
Ci0gICAgICAgIC8vIE5vdCBwcmV0dHkgYnV0IGEgc3RvcC1nYXAgZm9yIHBpcGV3aXJlIGFueXdh
eS4KLSAgICAgICAgIi0tZGV2LWJpbmQtdHJ5IiwgIi9kZXYvdmlkZW8wIiwgIi9kZXYvdmlkZW8w
IiwKLSAgICAgICAgIi0tZGV2LWJpbmQtdHJ5IiwgIi9kZXYvdmlkZW8xIiwgIi9kZXYvdmlkZW8x
IiwKLSAgICB9KSk7Ci19Ci0KLXN0YXRpYyB2b2lkIGJpbmRTeW1saW5rc1JlYWxQYXRoKFZlY3Rv
cjxDU3RyaW5nPiYgYXJncywgY29uc3QgY2hhciogcGF0aCkKLXsKLSAgICBjaGFyIHJlYWxQYXRo
W1BBVEhfTUFYXTsKLQotICAgIGlmIChyZWFscGF0aChwYXRoLCByZWFsUGF0aCkgJiYgc3RyY21w
KHBhdGgsIHJlYWxQYXRoKSkgewotICAgICAgICBhcmdzLmFwcGVuZFZlY3RvcihWZWN0b3I8Q1N0
cmluZz4oewotICAgICAgICAgICAgIi0tcm8tYmluZCIsIHJlYWxQYXRoLCByZWFsUGF0aCwKLSAg
ICAgICAgfSkpOwotICAgIH0KLX0KLQotc3RhdGljIGludCBzZXR1cFNlY2NvbXAoKQotewotICAg
IC8vIE5PVEU6IFRoaXMgaXMgc2hhcmVkIGNvZGUgKGZsYXRwYWstcnVuLmMgLSBMR1BMdjIuMSsp
Ci0gICAgLy8gVGhlcmUgYXJlIHRvZGF5IGEgbnVtYmVyIG9mIGRpZmZlcmVudCBMaW51eCBjb250
YWluZXIKLSAgICAvLyBpbXBsZW1lbnRhdGlvbnMuIFRoYXQgd2lsbCBsaWtlbHkgY29udGludWUg
Zm9yIGxvbmcgaW50byB0aGUKLSAgICAvLyBmdXR1cmUuIEJ1dCB3ZSBjYW4gc3RpbGwgdHJ5IHRv
IHNoYXJlIGNvZGUsIGFuZCBpdCdzIGltcG9ydGFudAotICAgIC8vIHRvIGRvIHNvIGJlY2F1c2Ug
aXQgYWZmZWN0cyB3aGF0IGxpYnJhcnkgYW5kIGFwcGxpY2F0aW9uIHdyaXRlcnMKLSAgICAvLyBj
YW4gZG8sIGFuZCB3ZSBzaG91bGQgc3VwcG9ydCBjb2RlIHBvcnRhYmlsaXR5IGJldHdlZW4gZGlm
ZmVyZW50Ci0gICAgLy8gY29udGFpbmVyIHRvb2xzLgotICAgIC8vCi0gICAgLy8gVGhpcyBzeXNj
YWxsIGJsYWNrbGlzdCBpcyBjb3BpZWQgZnJvbSBsaW51eC11c2VyLWNocm9vdCwgd2hpY2ggd2Fz
IGluIHR1cm4KLSAgICAvLyBjbGVhcmx5IGluZmx1ZW5jZWQgYnkgdGhlIFNhbmRzdG9ybS5pbyBi
bGFja2xpc3QuCi0gICAgLy8KLSAgICAvLyBJZiB5b3UgbWFrZSBhbnkgY2hhbmdlcyBoZXJlLCBJ
IHN1Z2dlc3Qgc2VuZGluZyB0aGUgY2hhbmdlcyBhbG9uZwotICAgIC8vIHRvIG90aGVyIHNhbmRi
b3ggbWFpbnRhaW5lcnMuIFVzaW5nIHRoZSBsaWJzZWNjb21wIGxpc3QgaXMgYWxzbwotICAgIC8v
IGFuIGFwcHJvcHJpYXRlIHZlbnVlOgotICAgIC8vIGh0dHBzOi8vZ3JvdXBzLmdvb2dsZS5jb20v
Zm9ydW0vIyF0b3BpYy9saWJzZWNjb21wCi0gICAgLy8KLSAgICAvLyBBIG5vbi1leGhhdXN0aXZl
IGxpc3Qgb2YgbGlua3MgdG8gY29udGFpbmVyIHRvb2xpbmcgdGhhdCBtaWdodAotICAgIC8vIHdh
bnQgdG8gc2hhcmUgdGhpcyBibGFja2xpc3Q6Ci0gICAgLy8KLSAgICAvLyAgaHR0cHM6Ly9naXRo
dWIuY29tL3NhbmRzdG9ybS1pby9zYW5kc3Rvcm0KLSAgICAvLyAgICBpbiBzcmMvc2FuZHN0b3Jt
L3N1cGVydmlzb3IuYysrCi0gICAgLy8gIGh0dHA6Ly9jZ2l0LmZyZWVkZXNrdG9wLm9yZy94ZGct
YXBwL3hkZy1hcHAvCi0gICAgLy8gICAgaW4gY29tbW9uL2ZsYXRwYWstcnVuLmMKLSAgICAvLyAg
aHR0cHM6Ly9naXQuZ25vbWUub3JnL2Jyb3dzZS9saW51eC11c2VyLWNocm9vdAotICAgIC8vICAg
IGluIHNyYy9zZXR1cC1zZWNjb21wLmMKLSAgICBzdHJ1Y3Qgc2NtcF9hcmdfY21wIGNsb25lQXJn
ID0gU0NNUF9BMChTQ01QX0NNUF9NQVNLRURfRVEsIENMT05FX05FV1VTRVIsIENMT05FX05FV1VT
RVIpOwotICAgIHN0cnVjdCBzY21wX2FyZ19jbXAgdHR5QXJnID0gU0NNUF9BMShTQ01QX0NNUF9F
USwgc3RhdGljX2Nhc3Q8c2NtcF9kYXR1bV90PihUSU9DU1RJKSwgc3RhdGljX2Nhc3Q8c2NtcF9k
YXR1bV90PigwKSk7Ci0gICAgc3RydWN0IHsKLSAgICAgICAgaW50IHNjYWxsOwotICAgICAgICBz
dHJ1Y3Qgc2NtcF9hcmdfY21wKiBhcmc7Ci0gICAgfSBzeXNjYWxsQmxhY2tsaXN0W10gPSB7Ci0g
ICAgICAgIC8vIEJsb2NrIGRtZXNnCi0gICAgICAgIHsgU0NNUF9TWVMoc3lzbG9nKSwgbnVsbHB0
ciB9LAotICAgICAgICAvLyBVc2VsZXNzIG9sZCBzeXNjYWxsLgotICAgICAgICB7IFNDTVBfU1lT
KHVzZWxpYiksIG51bGxwdHIgfSwKLSAgICAgICAgLy8gRG9uJ3QgYWxsb3cgZGlzYWJsaW5nIGFj
Y291bnRpbmcuCi0gICAgICAgIHsgU0NNUF9TWVMoYWNjdCksIG51bGxwdHIgfSwKLSAgICAgICAg
Ly8gMTYtYml0IGNvZGUgaXMgdW5uZWNlc3NhcnkgaW4gdGhlIHNhbmRib3gsIGFuZCBtb2RpZnlf
bGR0IGlzIGEKLSAgICAgICAgLy8gaGlzdG9yaWMgc291cmNlIG9mIGludGVyZXN0aW5nIGluZm9y
bWF0aW9uIGxlYWtzLgotICAgICAgICB7IFNDTVBfU1lTKG1vZGlmeV9sZHQpLCBudWxscHRyIH0s
Ci0gICAgICAgIC8vIERvbid0IGFsbG93IHJlYWRpbmcgY3VycmVudCBxdW90YSB1c2UuCi0gICAg
ICAgIHsgU0NNUF9TWVMocXVvdGFjdGwpLCBudWxscHRyIH0sCi0KLSAgICAgICAgLy8gRG9uJ3Qg
YWxsb3cgYWNjZXNzIHRvIHRoZSBrZXJuZWwga2V5cmluZy4KLSAgICAgICAgeyBTQ01QX1NZUyhh
ZGRfa2V5KSwgbnVsbHB0ciB9LAotICAgICAgICB7IFNDTVBfU1lTKGtleWN0bCksIG51bGxwdHIg
fSwKLSAgICAgICAgeyBTQ01QX1NZUyhyZXF1ZXN0X2tleSksIG51bGxwdHIgfSwKLQotICAgICAg
ICAvLyBTY2FyeSBWTS9OVU1BIG9wcyAKLSAgICAgICAgeyBTQ01QX1NZUyhtb3ZlX3BhZ2VzKSwg
bnVsbHB0ciB9LAotICAgICAgICB7IFNDTVBfU1lTKG1iaW5kKSwgbnVsbHB0ciB9LAotICAgICAg
ICB7IFNDTVBfU1lTKGdldF9tZW1wb2xpY3kpLCBudWxscHRyIH0sCi0gICAgICAgIHsgU0NNUF9T
WVMoc2V0X21lbXBvbGljeSksIG51bGxwdHIgfSwKLSAgICAgICAgeyBTQ01QX1NZUyhtaWdyYXRl
X3BhZ2VzKSwgbnVsbHB0ciB9LAotCi0gICAgICAgIC8vIERvbid0IGFsbG93IHN1Ym5hbWVzcGFj
ZSBzZXR1cHM6Ci0gICAgICAgIHsgU0NNUF9TWVModW5zaGFyZSksIG51bGxwdHIgfSwKLSAgICAg
ICAgeyBTQ01QX1NZUyhtb3VudCksIG51bGxwdHIgfSwKLSAgICAgICAgeyBTQ01QX1NZUyhwaXZv
dF9yb290KSwgbnVsbHB0ciB9LAotICAgICAgICB7IFNDTVBfU1lTKGNsb25lKSwgJmNsb25lQXJn
IH0sCi0KLSAgICAgICAgLy8gRG9uJ3QgYWxsb3cgZmFraW5nIGlucHV0IHRvIHRoZSBjb250cm9s
bGluZyB0dHkgKENWRS0yMDE3LTUyMjYpCi0gICAgICAgIHsgU0NNUF9TWVMoaW9jdGwpLCAmdHR5
QXJnIH0sCi0KLSAgICAgICAgLy8gUHJvZmlsaW5nIG9wZXJhdGlvbnM7IHdlIGV4cGVjdCB0aGVz
ZSB0byBiZSBkb25lIGJ5IHRvb2xzIGZyb20gb3V0c2lkZQotICAgICAgICAvLyB0aGUgc2FuZGJv
eC4gSW4gcGFydGljdWxhciBwZXJmIGhhcyBiZWVuIHRoZSBzb3VyY2Ugb2YgbWFueSBDVkVzLgot
ICAgICAgICB7IFNDTVBfU1lTKHBlcmZfZXZlbnRfb3BlbiksIG51bGxwdHIgfSwKLSAgICAgICAg
Ly8gRG9uJ3QgYWxsb3cgeW91IHRvIHN3aXRjaCB0byBic2QgZW11bGF0aW9uIG9yIHdoYXRub3Qu
Ci0gICAgICAgIHsgU0NNUF9TWVMocGVyc29uYWxpdHkpLCBudWxscHRyIH0sCi0gICAgICAgIHsg
U0NNUF9TWVMocHRyYWNlKSwgbnVsbHB0ciB9Ci0gICAgfTsKLQotICAgIHNjbXBfZmlsdGVyX2N0
eCBzZWNjb21wID0gc2VjY29tcF9pbml0KFNDTVBfQUNUX0FMTE9XKTsKLSAgICBpZiAoIXNlY2Nv
bXApCi0gICAgICAgIGdfZXJyb3IoIkZhaWxlZCB0byBpbml0IHNlY2NvbXAiKTsKLQotICAgIGZv
ciAoYXV0byYgcnVsZSA6IHN5c2NhbGxCbGFja2xpc3QpIHsKLSAgICAgICAgaW50IHNjYWxsID0g
cnVsZS5zY2FsbDsKLSAgICAgICAgaW50IHI7Ci0gICAgICAgIGlmIChydWxlLmFyZykKLSAgICAg
ICAgICAgIHIgPSBzZWNjb21wX3J1bGVfYWRkKHNlY2NvbXAsIFNDTVBfQUNUX0VSUk5PKEVQRVJN
KSwgc2NhbGwsIDEsIHJ1bGUuYXJnKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgciA9IHNl
Y2NvbXBfcnVsZV9hZGQoc2VjY29tcCwgU0NNUF9BQ1RfRVJSTk8oRVBFUk0pLCBzY2FsbCwgMCk7
Ci0gICAgICAgIGlmIChyID09IC1FRkFVTFQpIHsKLSAgICAgICAgICAgIHNlY2NvbXBfcmVsZWFz
ZShzZWNjb21wKTsKLSAgICAgICAgICAgIGdfZXJyb3IoIkZhaWxlZCB0byBhZGQgc2VjY29tcCBy
dWxlIik7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpbnQgdG1wZmQgPSBtZW1mZF9jcmVhdGUo
InNlY2NvbXAtYnBmIiwgMCk7Ci0gICAgaWYgKHRtcGZkID09IC0xKSB7Ci0gICAgICAgIHNlY2Nv
bXBfcmVsZWFzZShzZWNjb21wKTsKLSAgICAgICAgZ19lcnJvcigiRmFpbGVkIHRvIGNyZWF0ZSBt
ZW1mZDogJXMiLCBnX3N0cmVycm9yKGVycm5vKSk7Ci0gICAgfQotCi0gICAgaWYgKHNlY2NvbXBf
ZXhwb3J0X2JwZihzZWNjb21wLCB0bXBmZCkpIHsKLSAgICAgICAgc2VjY29tcF9yZWxlYXNlKHNl
Y2NvbXApOwotICAgICAgICBjbG9zZSh0bXBmZCk7Ci0gICAgICAgIGdfZXJyb3IoIkZhaWxlZCB0
byBleHBvcnQgc2VjY29tcCBicGYiKTsKLSAgICB9Ci0KLSAgICBpZiAobHNlZWsodG1wZmQsIDAs
IFNFRUtfU0VUKSA8IDApCi0gICAgICAgIGdfZXJyb3IoImxzZWVrIGZhaWxlZDogJXMiLCBnX3N0
cmVycm9yKGVycm5vKSk7Ci0KLSAgICBzZWNjb21wX3JlbGVhc2Uoc2VjY29tcCk7Ci0gICAgcmV0
dXJuIHRtcGZkOwotfQotCi1zdGF0aWMgaW50IGNyZWF0ZUZsYXRwYWtJbmZvKCkKLXsKLSAgICBH
VW5pcXVlUHRyPEdLZXlGaWxlPiBrZXlGaWxlKGdfa2V5X2ZpbGVfbmV3KCkpOwotCi0gICAgY29u
c3QgY2hhciogc2hhcmVkUGVybWlzc2lvbnNbXSA9IHsgIm5ldHdvcmsiLCBudWxscHRyIH07Ci0g
ICAgZ19rZXlfZmlsZV9zZXRfc3RyaW5nX2xpc3Qoa2V5RmlsZS5nZXQoKSwgIkNvbnRleHQiLCAi
c2hhcmVkIiwgc2hhcmVkUGVybWlzc2lvbnMsIHNpemVvZihzaGFyZWRQZXJtaXNzaW9ucykpOwot
Ci0gICAgLy8geGRnLWRlc2t0b3AtcG9ydGFsIHJlbGF0ZXMgeW91ciBuYW1lIHRvIGNlcnRhaW4g
cGVybWlzc2lvbnMgc28gd2Ugd2FudAotICAgIC8vIHRoZW0gdG8gYmUgYXBwbGljYXRpb24gdW5p
cXVlIHdoaWNoIGlzIGJlc3QgZG9uZSB2aWEgR0FwcGxpY2F0aW9uLgotICAgIEdBcHBsaWNhdGlv
biogYXBwID0gZ19hcHBsaWNhdGlvbl9nZXRfZGVmYXVsdCgpOwotICAgIGlmICghYXBwKSB7Ci0g
ICAgICAgIGdfd2FybmluZygiR0FwcGxpY2F0aW9uIGlzIHJlcXVpcmVkIGZvciB4ZGctZGVza3Rv
cC1wb3J0YWwgYWNjZXNzIGluIHRoZSBXZWJLaXQgc2FuZGJveC4gQWN0aW9ucyB0aGF0IHJlcXVp
cmUgeGRnLWRlc2t0b3AtcG9ydGFsIHdpbGwgYmUgYnJva2VuLiIpOwotICAgICAgICByZXR1cm4g
LTE7Ci0gICAgfQotICAgIGdfa2V5X2ZpbGVfc2V0X3N0cmluZyhrZXlGaWxlLmdldCgpLCAiQXBw
bGljYXRpb24iLCAibmFtZSIsIGdfYXBwbGljYXRpb25fZ2V0X2FwcGxpY2F0aW9uX2lkKGFwcCkp
OwotCi0gICAgc2l6ZV90IHNpemU7Ci0gICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwot
ICAgIEdVbmlxdWVQdHI8Y2hhcj4gZGF0YShnX2tleV9maWxlX3RvX2RhdGEoa2V5RmlsZS5nZXQo
KSwgJnNpemUsICZlcnJvci5vdXRQdHIoKSkpOwotICAgIGlmIChlcnJvci5nZXQoKSkgewotICAg
ICAgICBnX3dhcm5pbmcoIiVzIiwgZXJyb3ItPm1lc3NhZ2UpOwotICAgICAgICByZXR1cm4gLTE7
Ci0gICAgfQotCi0gICAgcmV0dXJuIGNyZWF0ZVNlYWxlZE1lbUZkV2l0aERhdGEoImZsYXRwYWst
aW5mbyIsIGRhdGEuZ2V0KCksIHNpemUpOwotfQotCi1HUmVmUHRyPEdTdWJwcm9jZXNzPiBidWJi
bGV3cmFwU3Bhd24oR1N1YnByb2Nlc3NMYXVuY2hlciogbGF1bmNoZXIsIGNvbnN0IFByb2Nlc3NM
YXVuY2hlcjo6TGF1bmNoT3B0aW9ucyYgbGF1bmNoT3B0aW9ucywgY2hhcioqIGFyZ3YsIEdFcnJv
ciAqKmVycm9yKQotewotICAgIEFTU0VSVChsYXVuY2hlcik7Ci0KLSAgICAvLyBJdCBpcyBpbXBv
c3NpYmxlIHRvIGtub3cgd2hhdCBhY2Nlc3MgYXJiaXRyYXJ5IHBsdWdpbnMgbmVlZCBhbmQgc2lu
Y2UgaXQgaXMgZm9yIGxlZ2FjeQotICAgIC8vIHJlYXNvbnMgbGV0cyBqdXN0IGxlYXZlIGl0IHVu
c2FuZGJveGVkLgotICAgIGlmIChsYXVuY2hPcHRpb25zLnByb2Nlc3NUeXBlID09IFByb2Nlc3NM
YXVuY2hlcjo6UHJvY2Vzc1R5cGU6OlBsdWdpbjY0Ci0gICAgICAgIHx8IGxhdW5jaE9wdGlvbnMu
cHJvY2Vzc1R5cGUgPT0gUHJvY2Vzc0xhdW5jaGVyOjpQcm9jZXNzVHlwZTo6UGx1Z2luMzIpCi0g
ICAgICAgIHJldHVybiBhZG9wdEdSZWYoZ19zdWJwcm9jZXNzX2xhdW5jaGVyX3NwYXdudihsYXVu
Y2hlciwgYXJndiwgZXJyb3IpKTsKLQotICAgIC8vIEZvciBub3cgd2UgYXJlIGp1c3QgY29uc2lk
ZXJpbmcgdGhlIG5ldHdvcmsgcHJvY2VzcyB0cnVzdGVkIGFzIGl0Ci0gICAgLy8gcmVxdWlyZXMg
YSBsb3Qgb2YgYWNjZXNzIGJ1dCBkb2Vzbid0IGV4ZWN1dGUgYXJiaXRyYXJ5IGNvZGUgbGlrZQot
ICAgIC8vIHRoZSBXZWJQcm9jZXNzIHdoZXJlIG91ciBmb2N1cyBsaWVzLgotICAgIGlmIChsYXVu
Y2hPcHRpb25zLnByb2Nlc3NUeXBlID09IFByb2Nlc3NMYXVuY2hlcjo6UHJvY2Vzc1R5cGU6Ok5l
dHdvcmspCi0gICAgICAgIHJldHVybiBhZG9wdEdSZWYoZ19zdWJwcm9jZXNzX2xhdW5jaGVyX3Nw
YXdudihsYXVuY2hlciwgYXJndiwgZXJyb3IpKTsKLQotICAgIFZlY3RvcjxDU3RyaW5nPiBzYW5k
Ym94QXJncyA9IHsKLSAgICAgICAgIi0tZGllLXdpdGgtcGFyZW50IiwKLSAgICAgICAgIi0tdW5z
aGFyZS1waWQiLAotICAgICAgICAiLS11bnNoYXJlLXV0cyIsCi0KLSAgICAgICAgLy8gV2UgYXNz
dW1lIC9ldGMgaGFzIHNhZmUgcGVybWlzc2lvbnMuCi0gICAgICAgIC8vIEF0IGEgbGF0ZXIgcG9p
bnQgd2UgY2FuIHN0YXJ0IG1hc2tpbmcgcHJpdmFjeS1jb25jZXJuaW5nIGZpbGVzLgotICAgICAg
ICAiLS1yby1iaW5kIiwgIi9ldGMiLCAiL2V0YyIsCi0gICAgICAgICItLWRldiIsICIvZGV2IiwK
LSAgICAgICAgIi0tcHJvYyIsICIvcHJvYyIsCi0gICAgICAgICItLXRtcGZzIiwgIi90bXAiLAot
ICAgICAgICAiLS11bnNldGVudiIsICJUTVBESVIiLAotICAgICAgICAiLS1kaXIiLCAiL3J1biIs
Ci0gICAgICAgICItLXN5bWxpbmsiLCAiLi4vcnVuIiwgIi92YXIvcnVuIiwKLSAgICAgICAgIi0t
c3ltbGluayIsICIuLi90bXAiLCAiL3Zhci90bXAiLAotICAgICAgICAiLS1yby1iaW5kIiwgIi9z
eXMvYmxvY2siLCAiL3N5cy9ibG9jayIsCi0gICAgICAgICItLXJvLWJpbmQiLCAiL3N5cy9idXMi
LCAiL3N5cy9idXMiLAotICAgICAgICAiLS1yby1iaW5kIiwgIi9zeXMvY2xhc3MiLCAiL3N5cy9j
bGFzcyIsCi0gICAgICAgICItLXJvLWJpbmQiLCAiL3N5cy9kZXYiLCAiL3N5cy9kZXYiLAotICAg
ICAgICAiLS1yby1iaW5kIiwgIi9zeXMvZGV2aWNlcyIsICIvc3lzL2RldmljZXMiLAotCi0gICAg
ICAgICItLXJvLWJpbmQtdHJ5IiwgIi91c3Ivc2hhcmUiLCAiL3Vzci9zaGFyZSIsCi0gICAgICAg
ICItLXJvLWJpbmQtdHJ5IiwgIi91c3IvbG9jYWwvc2hhcmUiLCAiL3Vzci9sb2NhbC9zaGFyZSIs
Ci0gICAgICAgICItLXJvLWJpbmQtdHJ5IiwgREFUQURJUiwgREFUQURJUiwKLQotICAgICAgICAv
LyBXZSBvbmx5IGdyYW50IGFjY2VzcyB0byB0aGUgbGliZGlycyB3ZWJraXQgaXMgYnVpbHQgd2l0
aCBhbmQKLSAgICAgICAgLy8gZ3Vlc3Mgc3lzdGVtIGxpYmRpcnMuIFRoaXMgd2lsbCBhbHdheXMg
aGF2ZSBzb21lIGVkZ2UgY2FzZXMuCi0gICAgICAgICItLXJvLWJpbmQtdHJ5IiwgIi9saWIiLCAi
L2xpYiIsCi0gICAgICAgICItLXJvLWJpbmQtdHJ5IiwgIi91c3IvbGliIiwgIi91c3IvbGliIiwK
LSAgICAgICAgIi0tcm8tYmluZC10cnkiLCAiL3Vzci9sb2NhbC9saWIiLCAiL3Vzci9sb2NhbC9s
aWIiLAotICAgICAgICAiLS1yby1iaW5kLXRyeSIsIExJQkRJUiwgTElCRElSLAotICAgICAgICAi
LS1yby1iaW5kLXRyeSIsICIvbGliNjQiLCAiL2xpYjY0IiwKLSAgICAgICAgIi0tcm8tYmluZC10
cnkiLCAiL3Vzci9saWI2NCIsICIvdXNyL2xpYjY0IiwKLSAgICAgICAgIi0tcm8tYmluZC10cnki
LCAiL3Vzci9sb2NhbC9saWI2NCIsICIvdXNyL2xvY2FsL2xpYjY0IiwKLQotICAgICAgICAiLS1y
by1iaW5kLXRyeSIsIFBLR0xJQkVYRUNESVIsIFBLR0xJQkVYRUNESVIsCi0gICAgfTsKLSAgICAv
LyBXZSB3b3VsZCBoYXZlIHRvIHBhcnNlIGxkIGNvbmZpZyBmaWxlcyBmb3IgbW9yZSBpbmZvLgot
ICAgIGJpbmRQYXRoVmFyKHNhbmRib3hBcmdzLCAiTERfTElCUkFSWV9QQVRIIik7Ci0KLSAgICBj
b25zdCBjaGFyKiBsaWJyYXJ5UGF0aCA9IGdfZ2V0ZW52KCJMRF9MSUJSQVJZX1BBVEgiKTsKLSAg
ICBpZiAobGlicmFyeVBhdGggJiYgbGlicmFyeVBhdGhbMF0pIHsKLSAgICAgICAgLy8gT24gZGlz
dHJvcyB1c2luZyBhIHN1aWQgYndyYXAgaXQgZHJvcHMgdGhpcyBlbnYgdmFyCi0gICAgICAgIC8v
IHNvIHdlIGhhdmUgdG8gcGFzcyBpdCB0aHJvdWdoIHRvIHRoZSBjaGlsZHJlbi4KLSAgICAgICAg
c2FuZGJveEFyZ3MuYXBwZW5kVmVjdG9yKFZlY3RvcjxDU3RyaW5nPih7Ci0gICAgICAgICAgICAi
LS1zZXRlbnYiLCAiTERfTElCUkFSWV9QQVRIIiwgbGlicmFyeVBhdGgsCi0gICAgICAgIH0pKTsK
LSAgICB9Ci0KLSAgICBiaW5kU3ltbGlua3NSZWFsUGF0aChzYW5kYm94QXJncywgIi9ldGMvcmVz
b2x2LmNvbmYiKTsKLSAgICBiaW5kU3ltbGlua3NSZWFsUGF0aChzYW5kYm94QXJncywgIi9ldGMv
bG9jYWx0aW1lIik7Ci0KLSAgICAvLyB4ZGctZGVza3RvcC1wb3J0YWwgZGVmYXVsdHMgdG8gYXNz
dW1pbmcgeW91IGFyZSBob3N0IGFwcGxpY2F0aW9uIHdpdGgKLSAgICAvLyBmdWxsIHBlcm1pc3Np
b25zIHVubGVzcyBpdCBjYW4gaWRlbnRpZnkgeW91IGFzIGEgc25hcCBvciBmbGF0cGFrLgotICAg
IC8vIFRoZSBlYXNpZXN0IG1ldGhvZCBpcyBmb3IgdXMgdG8gcHJldGVuZCB0byBiZSBhIGZsYXRw
YWsgYW5kIGlmIHRoYXQKLSAgICAvLyBmYWlscyBqdXN0IGJsb2NraW5nIHBvcnRhbHMgZW50aXJl
bHkgYXMgaXQganVzdCBiZWNvbWVzIGEgc2FuZGJveCBlc2NhcGUuCi0gICAgaW50IGZsYXRwYWtJ
bmZvRmQgPSBjcmVhdGVGbGF0cGFrSW5mbygpOwotICAgIGlmIChmbGF0cGFrSW5mb0ZkICE9IC0x
KSB7Ci0gICAgICAgIGdfc3VicHJvY2Vzc19sYXVuY2hlcl90YWtlX2ZkKGxhdW5jaGVyLCBmbGF0
cGFrSW5mb0ZkLCBmbGF0cGFrSW5mb0ZkKTsKLSAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiBmbGF0
cGFrSW5mb0ZkU3RyKGdfc3RyZHVwX3ByaW50ZigiJWQiLCBmbGF0cGFrSW5mb0ZkKSk7Ci0KLSAg
ICAgICAgc2FuZGJveEFyZ3MuYXBwZW5kVmVjdG9yKFZlY3RvcjxDU3RyaW5nPih7Ci0gICAgICAg
ICAgICAiLS1yby1iaW5kLWRhdGEiLCBmbGF0cGFrSW5mb0ZkU3RyLmdldCgpLCAiLy5mbGF0cGFr
LWluZm8iCi0gICAgICAgIH0pKTsKLSAgICB9Ci0KLSAgICAvLyBOT1RFOiBUaGlzIGhhcyBuZXR3
b3JrIGFjY2VzcyBmb3IgSExTIHZpYSBHU3RyZWFtZXIuCi0gICAgaWYgKGxhdW5jaE9wdGlvbnMu
cHJvY2Vzc1R5cGUgPT0gUHJvY2Vzc0xhdW5jaGVyOjpQcm9jZXNzVHlwZTo6V2ViKSB7Ci0gICAg
ICAgIHN0YXRpYyBYREdEQnVzUHJveHlMYXVuY2hlciBwcm94eTsKLQotICAgICAgICAvLyBJZiBX
YXlsYW5kIGluIHVzZSBkb24ndCBncmFudCBYMTEKLSNpZiBQTEFURk9STShXQVlMQU5EKSAmJiBV
U0UoRUdMKQotICAgICAgICBpZiAoUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkudHlw
ZSgpID09IFBsYXRmb3JtRGlzcGxheTo6VHlwZTo6V2F5bGFuZCkgewotICAgICAgICAgICAgYmlu
ZFdheWxhbmQoc2FuZGJveEFyZ3MpOwotICAgICAgICAgICAgc2FuZGJveEFyZ3MuYXBwZW5kKCIt
LXVuc2hhcmUtaXBjIik7Ci0gICAgICAgIH0gZWxzZQotI2VuZGlmCi0gICAgICAgICAgICBiaW5k
WDExKHNhbmRib3hBcmdzKTsKLQotICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhdGhBbmRQZXJt
aXNzaW9uIDogbGF1bmNoT3B0aW9ucy5leHRyYVdlYlByb2Nlc3NTYW5kYm94UGF0aHMpIHsKLSAg
ICAgICAgICAgIHNhbmRib3hBcmdzLmFwcGVuZFZlY3RvcihWZWN0b3I8Q1N0cmluZz4oewotICAg
ICAgICAgICAgICAgIHBhdGhBbmRQZXJtaXNzaW9uLnZhbHVlID09IFNhbmRib3hQZXJtaXNzaW9u
OjpSZWFkT25seSA/ICItLXJvLWJpbmQtdHJ5IjogIi0tYmluZC10cnkiLAotICAgICAgICAgICAg
ICAgIHBhdGhBbmRQZXJtaXNzaW9uLmtleSwgcGF0aEFuZFBlcm1pc3Npb24ua2V5Ci0gICAgICAg
ICAgICB9KSk7Ci0gICAgICAgIH0KLQotICAgICAgICBWZWN0b3I8U3RyaW5nPiBleHRyYVBhdGhz
ID0geyAiYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSIsICJ3YXlsYW5kU29ja2V0In07Ci0gICAg
ICAgIGZvciAoY29uc3QgYXV0byYgcGF0aCA6IGV4dHJhUGF0aHMpIHsKLSAgICAgICAgICAgIFN0
cmluZyBleHRyYVBhdGggPSBsYXVuY2hPcHRpb25zLmV4dHJhSW5pdGlhbGl6YXRpb25EYXRhLmdl
dChwYXRoKTsKLSAgICAgICAgICAgIGlmICghZXh0cmFQYXRoLmlzRW1wdHkoKSkKLSAgICAgICAg
ICAgICAgICBzYW5kYm94QXJncy5hcHBlbmRWZWN0b3IoVmVjdG9yPENTdHJpbmc+KHsgIi0tYmlu
ZC10cnkiLCBleHRyYVBhdGgudXRmOCgpLCBleHRyYVBhdGgudXRmOCgpIH0pKTsKLSAgICAgICAg
fQotCi0gICAgICAgIGJpbmREQnVzU2Vzc2lvbihzYW5kYm94QXJncywgcHJveHkpOwotICAgICAg
ICAvLyBGSVhNRTogV2Ugc2hvdWxkIG1vdmUgdG8gUGlwZXdpcmUgYXMgc29vbiBhcyB2aWFibGUs
IFB1bHNlIGRvZXNuJ3QgcmVzdHJpY3QgY2xpZW50cyBhdG0uCi0gICAgICAgIGJpbmRQdWxzZShz
YW5kYm94QXJncyk7Ci0gICAgICAgIGJpbmRGb250cyhzYW5kYm94QXJncyk7Ci0gICAgICAgIGJp
bmRHU3RyZWFtZXJEYXRhKHNhbmRib3hBcmdzKTsKLSAgICAgICAgYmluZE9wZW5HTChzYW5kYm94
QXJncyk7Ci0gICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIGFsc28gZml4ZWQgYnkgUGlwZXdpcmUg
b25jZSBpbiB1c2UuCi0gICAgICAgIGJpbmRWNGwoc2FuZGJveEFyZ3MpOwotI2lmIFBMQVRGT1JN
KEdUSykKLSAgICAgICAgYmluZEExMXkoc2FuZGJveEFyZ3MpOwotICAgICAgICBiaW5kR3RrRGF0
YShzYW5kYm94QXJncyk7Ci0jZW5kaWYKLQotICAgICAgICBpZiAoIXByb3h5LmlzUnVubmluZygp
KSB7Ci0gICAgICAgICAgICBWZWN0b3I8Q1N0cmluZz4gcGVybWlzc2lvbnMgPSB7Ci0gICAgICAg
ICAgICAgICAgLy8gR1N0cmVhbWVycyBwbHVnaW4gaW5zdGFsbCBoZWxwZXIuCi0gICAgICAgICAg
ICAgICAgIi0tY2FsbD1vcmcuZnJlZWRlc2t0b3AuUGFja2FnZUtpdD1vcmcuZnJlZWRlc2t0b3Au
UGFja2FnZUtpdC5Nb2RpZnkyLkluc3RhbGxHU3RyZWFtZXJSZXNvdXJjZXNAL29yZy9mcmVlZGVz
a3RvcC9QYWNrYWdlS2l0IgotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIGlmIChmbGF0cGFr
SW5mb0ZkICE9IC0xKSB7Ci0gICAgICAgICAgICAgICAgLy8geGRnLWRlc2t0b3AtcG9ydGFsIHVz
ZWQgYnkgR1RLIGFuZCB1cy4KLSAgICAgICAgICAgICAgICBwZXJtaXNzaW9ucy5hcHBlbmQoIi0t
dGFsaz1vcmcuZnJlZWRlc2t0b3AucG9ydGFsLkRlc2t0b3AiKTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIHByb3h5LnNldFBlcm1pc3Npb25zKFdURk1vdmUocGVybWlzc2lvbnMpKTsKLSAg
ICAgICAgICAgIHByb3h5LmxhdW5jaCgpOwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAg
ICAgLy8gT25seSBYMTEgdXNlcnMgbmVlZCB0aGlzIGZvciBYU2htIHdoaWNoIGlzIG9ubHkgdGhl
IFdlYiBwcm9jZXNzLgotICAgICAgICBzYW5kYm94QXJncy5hcHBlbmQoIi0tdW5zaGFyZS1pcGMi
KTsKLSAgICB9Ci0KLSNpZiBFTkFCTEUoREVWRUxPUEVSX01PREUpCi0gICAgY29uc3QgY2hhciog
ZXhlY0RpcmVjdG9yeSA9IGdfZ2V0ZW52KCJXRUJLSVRfRVhFQ19QQVRIIik7Ci0gICAgaWYgKGV4
ZWNEaXJlY3RvcnkpIHsKLSAgICAgICAgU3RyaW5nIHBhcmVudERpciA9IEZpbGVTeXN0ZW06OmRp
cmVjdG9yeU5hbWUoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihleGVjRGlyZWN0b3J5KSk7Ci0gICAgICAgIGJpbmRJZkV4aXN0cyhzYW5kYm94QXJncywgcGFy
ZW50RGlyLnV0ZjgoKS5kYXRhKCkpOwotICAgIH0KLQotICAgIENTdHJpbmcgZXhlY3V0YWJsZVBh
dGggPSBnZXRDdXJyZW50RXhlY3V0YWJsZVBhdGgoKTsKLSAgICBpZiAoIWV4ZWN1dGFibGVQYXRo
LmlzTnVsbCgpKSB7Ci0gICAgICAgIC8vIE91ciBleGVjdXRhYmxlIGlzIGAvZm9vL2Jhci9iaW4v
UHJvY2Vzc2AsIHdlIHdhbnQgYC9mb28vYmFyYCBhcyBhIHVzYWJsZSBwcmVmaXgKLSAgICAgICAg
U3RyaW5nIHBhcmVudERpciA9IEZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUoRmlsZVN5c3RlbTo6
ZGlyZWN0b3J5TmFtZShGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKGV4ZWN1dGFibGVQYXRoLmRhdGEoKSkpKTsKLSAgICAgICAgYmluZElmRXhpc3RzKHNhbmRi
b3hBcmdzLCBwYXJlbnREaXIudXRmOCgpLmRhdGEoKSk7Ci0gICAgfQotI2VuZGlmCi0KLSAgICBp
bnQgc2VjY29tcEZkID0gc2V0dXBTZWNjb21wKCk7Ci0gICAgR1VuaXF1ZVB0cjxjaGFyPiBmZFN0
cihnX3N0cmR1cF9wcmludGYoIiVkIiwgc2VjY29tcEZkKSk7Ci0gICAgZ19zdWJwcm9jZXNzX2xh
dW5jaGVyX3Rha2VfZmQobGF1bmNoZXIsIHNlY2NvbXBGZCwgc2VjY29tcEZkKTsKLSAgICBzYW5k
Ym94QXJncy5hcHBlbmRWZWN0b3IoVmVjdG9yPENTdHJpbmc+KHsgIi0tc2VjY29tcCIsIGZkU3Ry
LmdldCgpIH0pKTsKLQotICAgIGludCBid3JhcEZkID0gYXJnc1RvRmQoc2FuZGJveEFyZ3MsICJi
d3JhcCIpOwotICAgIEdVbmlxdWVQdHI8Y2hhcj4gYndyYXBGZFN0cihnX3N0cmR1cF9wcmludGYo
IiVkIiwgYndyYXBGZCkpOwotICAgIGdfc3VicHJvY2Vzc19sYXVuY2hlcl90YWtlX2ZkKGxhdW5j
aGVyLCBid3JhcEZkLCBid3JhcEZkKTsKLQotICAgIFZlY3RvcjxDU3RyaW5nPiBid3JhcEFyZ3Mg
PSB7Ci0gICAgICAgIEJXUkFQX0VYRUNVVEFCTEUsCi0gICAgICAgICItLWFyZ3MiLAotICAgICAg
ICBid3JhcEZkU3RyLmdldCgpLAotICAgICAgICAiLS0iLAotICAgIH07Ci0KLSAgICBjaGFyKiog
bmV3QXJndiA9IGdfbmV3YShjaGFyKiwgZ19zdHJ2X2xlbmd0aChhcmd2KSArIGJ3cmFwQXJncy5z
aXplKCkgKyAxKTsKLSAgICBzaXplX3QgaSA9IDA7Ci0KLSAgICBmb3IgKGF1dG8mIGFyZyA6IGJ3
cmFwQXJncykKLSAgICAgICAgbmV3QXJndltpKytdID0gY29uc3RfY2FzdDxjaGFyKj4oYXJnLmRh
dGEoKSk7Ci0gICAgZm9yIChzaXplX3QgeCA9IDA7IGFyZ3ZbeF07IHgrKykKLSAgICAgICAgbmV3
QXJndltpKytdID0gYXJndlt4XTsKLSAgICBuZXdBcmd2W2krK10gPSBudWxscHRyOwotCi0gICAg
cmV0dXJuIGFkb3B0R1JlZihnX3N1YnByb2Nlc3NfbGF1bmNoZXJfc3Bhd252KGxhdW5jaGVyLCBu
ZXdBcmd2LCBlcnJvcikpOwotfQotCi19OwotCi0jZW5kaWYgLy8gRU5BQkxFKEJVQkJMRVdSQVBf
U0FOREJPWCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL2ds
aWIvQnViYmxld3JhcExhdW5jaGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hl
ci9nbGliL0J1YmJsZXdyYXBMYXVuY2hlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwYzJjZDU1NTRmMDU1OWRiYjc5YzQwNTAxOTlhNGY2ZDZmNmI2YTNkLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0xhdW5jaGVyL2dsaWIvQnViYmxld3JhcExhdW5jaGVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0
MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IElnYWxpYSBTLkwuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKEJVQkJMRVdSQVBfU0FOREJPWCkKLQotI2lu
Y2x1ZGUgIlByb2Nlc3NMYXVuY2hlci5oIgotCi0jaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5o
PgotCi10eXBlZGVmIHN0cnVjdCBfR1N1YnByb2Nlc3MgR1N1YnByb2Nlc3M7Ci10eXBlZGVmIHN0
cnVjdCBfR1N1YnByb2Nlc3NMYXVuY2hlciBHU3VicHJvY2Vzc0xhdW5jaGVyOwotCi1uYW1lc3Bh
Y2UgV2ViS2l0IHsKLQotR1JlZlB0cjxHU3VicHJvY2Vzcz4gYnViYmxld3JhcFNwYXduKEdTdWJw
cm9jZXNzTGF1bmNoZXIqLCBjb25zdCBQcm9jZXNzTGF1bmNoZXI6OkxhdW5jaE9wdGlvbnMmLCBj
aGFyKiogYXJndiwgR0Vycm9yKiopOwotCi19OwotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL2dsaWIvRmxhdHBha0xhdW5jaGVyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL2dsaWIvRmxhdHBha0xhdW5jaGVyLmNwcApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzdkNzc2ZTE4Y2VhODhmOTEwMTEyNGVhY2Nk
MTllNDVmNmYyZTJiOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9nbGliL0ZsYXRwYWtMYXVuY2hl
ci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw2OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE4IElnYWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJGbGF0cGFrTGF1bmNoZXIuaCIKLQotI2lmIE9TKExJTlVYKQotCi0jaW5jbHVkZSA8Z2lv
L2dpby5oPgotI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KLQotbmFtZXNwYWNlIFdl
YktpdCB7Ci0KLUdSZWZQdHI8R1N1YnByb2Nlc3M+IGZsYXRwYWtTcGF3bihHU3VicHJvY2Vzc0xh
dW5jaGVyKiBsYXVuY2hlciwgY29uc3QgV2ViS2l0OjpQcm9jZXNzTGF1bmNoZXI6OkxhdW5jaE9w
dGlvbnMmIGxhdW5jaE9wdGlvbnMsIGNoYXIqKiBhcmd2LCBpbnQgY2hpbGRQcm9jZXNzU29ja2V0
LCBHRXJyb3IqKiBlcnJvcikKLXsKLSAgICBBU1NFUlQobGF1bmNoZXIpOwotCi0gICAgLy8gV2hl
biB3ZSBhcmUgcnVubmluZyBpbnNpZGUgb2YgZmxhdHBhaydzIHNhbmRib3ggd2UgZG8gbm90IGhh
dmUgcGVybWlzc2lvbnMgdG8KLSAgICAvLyB1c2UgdGhlIHNhbWUgc2FuZGJveCB3ZSBkbyBvdXRz
aWRlIGJ1dCBmbGF0cGFrIG9mZmVycyB0byBjcmVhdGUgbmV3IHNhbmRib3hlcwotICAgIC8vIGZv
ciB1cyB1c2luZyBmbGF0cGFrLXNwYXduLgotICAgIC8vCi0gICAgLy8gVGhpcyBpcyBqdXN0IGEg
c3R1YiBpbXBsZW1lbnRhdGlvbiBhdG0gdGhvdWdoIGFzIHRoZSBTcGF3biBpbnRlcmZhY2UgZG9l
cyBub3QgZXhwb3NlCi0gICAgLy8gbXVjaCBvdXRzaWRlIG9mIGAtLXNhbmRib3hgIChubyBwZXJt
aXNzaW9ucykgYW5kIGAtLW5vLW5ldHdvcmtgLiBXZSBuZWVkIHRvCi0gICAgLy8gYWRkIHNvbWUg
cGVybWlzc2lvbnMgaW4gYmV0d2VlbiB0aG9zZSBmb3IgdGhpcyB0byBwcm92aWRlIG1lYW5pbmdm
dWwgc2VjdXJpdHkuCi0KLSAgICBHVW5pcXVlUHRyPGdjaGFyPiBjaGlsZFByb2Nlc3NTb2NrZXRB
cmcoZ19zdHJkdXBfcHJpbnRmKCItLWZvcndhcmQtZmQ9JWQiLCBjaGlsZFByb2Nlc3NTb2NrZXQp
KTsKLSAgICBWZWN0b3I8Y29uc3QgY2hhcio+IGZsYXRwYWtBcmdzID0gewotICAgICAgICAiL3Vz
ci9iaW4vZmxhdHBhay1zcGF3biIsCi0gICAgICAgIGNoaWxkUHJvY2Vzc1NvY2tldEFyZy5nZXQo
KSwKLSAgICB9OwotCi0gICAgY2hhcioqIG5ld0FyZ3YgPSBnX25ld2EoY2hhciosIGdfc3Rydl9s
ZW5ndGgoYXJndikgKyBmbGF0cGFrQXJncy5zaXplKCkgKyAxKTsKLSAgICBzaXplX3QgaSA9IDA7
Ci0KLSAgICBmb3IgKGNvbnN0IGF1dG8mIGFyZyA6IGZsYXRwYWtBcmdzKQotICAgICAgICBuZXdB
cmd2W2krK10gPSBjb25zdF9jYXN0PGNoYXIqPihhcmcpOwotICAgIGZvciAoc2l6ZV90IHggPSAw
OyBhcmd2W3hdOyB4KyspCi0gICAgICAgIG5ld0FyZ3ZbaSsrXSA9IGFyZ3ZbeF07Ci0gICAgbmV3
QXJndltpKytdID0gbnVsbHB0cjsKLQotICAgIHJldHVybiBhZG9wdEdSZWYoZ19zdWJwcm9jZXNz
X2xhdW5jaGVyX3NwYXdudihsYXVuY2hlciwgbmV3QXJndiwgZXJyb3IpKTsKLX0KLQotfTsKLQot
I2VuZGlmIC8vIE9TKExJTlVYKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TGF1bmNoZXIvZ2xpYi9GbGF0cGFrTGF1bmNoZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0xhdW5jaGVyL2dsaWIvRmxhdHBha0xhdW5jaGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDUwMWUyMGM0YmFmNWI0YWZjNzljM2FjOGFhNTM2YTJiYzljYWUyNzQuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTGF1bmNoZXIvZ2xpYi9GbGF0cGFrTGF1bmNoZXIuaAorKysgL2Rldi9udWxsCkBAIC0x
LDQzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggSWdhbGlhIFMuTC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBPUyhMSU5VWCkKLQotI2luY2x1ZGUgIlByb2Nlc3NM
YXVuY2hlci5oIgotCi0jaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgotCi10eXBlZGVmIHN0
cnVjdCBfR1N1YnByb2Nlc3MgR1N1YnByb2Nlc3M7Ci10eXBlZGVmIHN0cnVjdCBfR1N1YnByb2Nl
c3NMYXVuY2hlciBHU3VicHJvY2Vzc0xhdW5jaGVyOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQot
R1JlZlB0cjxHU3VicHJvY2Vzcz4gZmxhdHBha1NwYXduKEdTdWJwcm9jZXNzTGF1bmNoZXIqLCBj
b25zdCBXZWJLaXQ6OlByb2Nlc3NMYXVuY2hlcjo6TGF1bmNoT3B0aW9ucyYsIGNoYXIqKiBhcmd2
LCBpbnQgY2hpbGRQcm9jZXNzU29ja2V0LCBHRXJyb3IqKik7Ci0KLX07Ci0KLSNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvZ2xpYi9Qcm9jZXNzTGF1
bmNoZXJHTGliLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL2dsaWIvUHJv
Y2Vzc0xhdW5jaGVyR0xpYi5jcHAKaW5kZXggMGMzOTA3M2ZlMWRlN2FkYWY1MzEyNjgzZDgxNjQ2
MmY2NGQzZWM2Zi4uZjE3NDE1YzUzNTBiMmUxN2Y1MDAwNzQ3N2E2ZWM3NDVkYWRhNDMxMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvZ2xpYi9Qcm9jZXNzTGF1
bmNoZXJHTGliLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9nbGli
L1Byb2Nlc3NMYXVuY2hlckdMaWIuY3BwCkBAIC0yNyw5ICsyNyw3IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiUHJvY2Vzc0xhdW5jaGVyLmgiCiAKLSNpbmNsdWRlICJCdWJibGV3
cmFwTGF1bmNoZXIuaCIKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCi0jaW5jbHVkZSAiRmxhdHBh
a0xhdW5jaGVyLmgiCiAjaW5jbHVkZSAiUHJvY2Vzc0V4ZWN1dGFibGVQYXRoLmgiCiAjaW5jbHVk
ZSA8ZXJybm8uaD4KICNpbmNsdWRlIDxmY250bC5oPgpAQCAtNTQsMjUgKzUyLDYgQEAgc3RhdGlj
IHZvaWQgY2hpbGRTZXR1cEZ1bmN0aW9uKGdwb2ludGVyIHVzZXJEYXRhKQogICAgIGNsb3NlKHNv
Y2tldCk7CiB9CiAKLSNpZiBPUyhMSU5VWCkKLXN0YXRpYyBib29sIGlzSW5zaWRlRmxhdHBhaygp
Ci17Ci0gICAgc3RhdGljIGludCByZXQgPSAtMTsKLSAgICBpZiAocmV0ICE9IC0xKQotICAgICAg
ICByZXR1cm4gcmV0OwotCi0gICAgR1VuaXF1ZVB0cjxHS2V5RmlsZT4gaW5mb0ZpbGUoZ19rZXlf
ZmlsZV9uZXcoKSk7Ci0gICAgaWYgKCFnX2tleV9maWxlX2xvYWRfZnJvbV9maWxlKGluZm9GaWxl
LmdldCgpLCAiLy5mbGF0cGFrLWluZm8iLCBHX0tFWV9GSUxFX05PTkUsIG51bGxwdHIpKSB7Ci0g
ICAgICAgIHJldCA9IGZhbHNlOwotICAgICAgICByZXR1cm4gcmV0OwotICAgIH0KLQotICAgIC8v
IElmIHdlIGFyZSBpbiBhIGBmbGF0cGFrIGJ1aWxkYCBzZXNzaW9uIHdlIGNhbm5vdCBsYXVuY2gg
b3Vyc2VsdmVzIHNpbmNlIHdlIGFyZW4ndCBpbnN0YWxsZWQuCi0gICAgcmV0ID0gIWdfa2V5X2Zp
bGVfZ2V0X2Jvb2xlYW4oaW5mb0ZpbGUuZ2V0KCksICJJbnN0YW5jZSIsICJidWlsZCIsIG51bGxw
dHIpOwotICAgIHJldHVybiByZXQ7Ci19Ci0jZW5kaWYKLQogdm9pZCBQcm9jZXNzTGF1bmNoZXI6
OmxhdW5jaFByb2Nlc3MoKQogewogICAgIElQQzo6Q29ubmVjdGlvbjo6U29ja2V0UGFpciBzb2Nr
ZXRQYWlyID0gSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVQbGF0Zm9ybUNvbm5lY3Rpb24oSVBDOjpD
b25uZWN0aW9uOjpDb25uZWN0aW9uT3B0aW9uczo6U2V0Q2xvZXhlY09uU2VydmVyKTsKQEAgLTE2
NCwyMiArMTQzLDcgQEAgdm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MoKQogCiAg
ICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwogICAgIEdSZWZQdHI8R1N1YnByb2Nlc3M+
IHByb2Nlc3M7Ci0jaWYgT1MoTElOVVgpCi0gICAgY29uc3QgY2hhciogc2FuZGJveEVudiA9IGdf
Z2V0ZW52KCJXRUJLSVRfRk9SQ0VfU0FOREJPWCIpOwotICAgIGJvb2wgc2FuZGJveEVuYWJsZWQg
PSBtX2xhdW5jaE9wdGlvbnMuZXh0cmFJbml0aWFsaXphdGlvbkRhdGEuZ2V0KCJlbmFibGUtc2Fu
ZGJveCIpID09ICJ0cnVlIjsKLQotICAgIGlmIChzYW5kYm94RW52KQotICAgICAgICBzYW5kYm94
RW5hYmxlZCA9ICFzdHJjbXAoc2FuZGJveEVudiwgIjEiKTsKLQotICAgIGlmIChzYW5kYm94RW5h
YmxlZCAmJiBpc0luc2lkZUZsYXRwYWsoKSkKLSAgICAgICAgcHJvY2VzcyA9IGZsYXRwYWtTcGF3
bihsYXVuY2hlci5nZXQoKSwgbV9sYXVuY2hPcHRpb25zLCBhcmd2LCBzb2NrZXRQYWlyLmNsaWVu
dCwgJmVycm9yLm91dFB0cigpKTsKLSNpZiBFTkFCTEUoQlVCQkxFV1JBUF9TQU5EQk9YKQotICAg
IGVsc2UgaWYgKHNhbmRib3hFbmFibGVkKQotICAgICAgICBwcm9jZXNzID0gYnViYmxld3JhcFNw
YXduKGxhdW5jaGVyLmdldCgpLCBtX2xhdW5jaE9wdGlvbnMsIGFyZ3YsICZlcnJvci5vdXRQdHIo
KSk7Ci0jZW5kaWYKLSAgICBlbHNlCi0jZW5kaWYKLSAgICAgICAgcHJvY2VzcyA9IGFkb3B0R1Jl
ZihnX3N1YnByb2Nlc3NfbGF1bmNoZXJfc3Bhd252KGxhdW5jaGVyLmdldCgpLCBhcmd2LCAmZXJy
b3Iub3V0UHRyKCkpKTsKKyAgICBwcm9jZXNzID0gYWRvcHRHUmVmKGdfc3VicHJvY2Vzc19sYXVu
Y2hlcl9zcGF3bnYobGF1bmNoZXIuZ2V0KCksIGFyZ3YsICZlcnJvci5vdXRQdHIoKSkpOwogCiAg
ICAgaWYgKCFwcm9jZXNzLmdldCgpKQogICAgICAgICBnX2Vycm9yKCJVbmFibGUgdG8gZm9yayBh
IG5ldyBjaGlsZCBwcm9jZXNzOiAlcyIsIGVycm9yLT5tZXNzYWdlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4IGE4NmVkZDgyNDNkNWJlMjg2YTA3ZGJhNzBh
NzYxOWY4ZDUzMDdlMWIuLmZhMTI5YjU0ZDAzZDliMjUyMmY4ZDk5YWY5MzJhYWRlZGE3YmQ3Njcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtNDc5LDEzICs0
NzksNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZW5kRGlzcGxheUNvbmZpZ3VyYXRpb25DaGFuZ2Vk
TWVzc2FnZUZvclRlc3RpbmcoKTsKICAgICB2b2lkIGNsZWFyQ3VycmVudE1vZGlmaWVyU3RhdGVG
b3JUZXN0aW5nKCk7CiAKLSNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdQRSkKLSAgICB2
b2lkIHNldFNhbmRib3hFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBtX3NhbmRib3hFbmFibGVkID0g
ZW5hYmxlZDsgfTsKLSAgICB2b2lkIGFkZFNhbmRib3hQYXRoKGNvbnN0IENTdHJpbmcmIHBhdGgs
IFNhbmRib3hQZXJtaXNzaW9uIHBlcm1pc3Npb24pIHsgbV9leHRyYVNhbmRib3hQYXRocy5hZGQo
cGF0aCwgcGVybWlzc2lvbik7IH07Ci0gICAgY29uc3QgSGFzaE1hcDxDU3RyaW5nLCBTYW5kYm94
UGVybWlzc2lvbj4mIHNhbmRib3hQYXRocygpIGNvbnN0IHsgcmV0dXJuIG1fZXh0cmFTYW5kYm94
UGF0aHM7IH07Ci0gICAgYm9vbCBzYW5kYm94RW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Fu
ZGJveEVuYWJsZWQ7IH07Ci0jZW5kaWYKLQogcHJpdmF0ZToKICAgICB2b2lkIHBsYXRmb3JtSW5p
dGlhbGl6ZSgpOwogCkBAIC03NDMsMTEgKzczNiw2IEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0o
TUFDKSAmJiBFTkFCTEUoV0VCUFJPQ0VTU19XSU5ET1dTRVJWRVJfQkxPQ0tJTkcpCiAgICAgVmVj
dG9yPHN0ZDo6dW5pcXVlX3B0cjxEaXNwbGF5TGluaz4+IG1fZGlzcGxheUxpbmtzOwogI2VuZGlm
Ci0KLSNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdQRSkKLSAgICBib29sIG1fc2FuZGJv
eEVuYWJsZWQgeyBmYWxzZSB9OwotICAgIEhhc2hNYXA8Q1N0cmluZywgU2FuZGJveFBlcm1pc3Np
b24+IG1fZXh0cmFTYW5kYm94UGF0aHM7Ci0jZW5kaWYKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NQ
cm94eUdMaWIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzUHJv
eHlHTGliLmNwcAppbmRleCAwM2VmNmQ4MjYyZDM4YjNkZDQ5NDg4MDVlNDFkZmQ3Mzc3ZTFlNDdj
Li5jNmRhNDJlNDBmOWQ1NGEwOTBjNzljYTJjYzA5NmI0ZWFhZjU1NmJlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NQcm94eUdMaWIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Byb3h5R0xpYi5jcHAKQEAg
LTM5LDEzICszOSw5IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiB2b2lkIFdlYlByb2Nl
c3NQcm94eTo6cGxhdGZvcm1HZXRMYXVuY2hPcHRpb25zKFByb2Nlc3NMYXVuY2hlcjo6TGF1bmNo
T3B0aW9ucyYgbGF1bmNoT3B0aW9ucykKIHsKLSAgICBsYXVuY2hPcHRpb25zLmV4dHJhSW5pdGlh
bGl6YXRpb25EYXRhLnNldCgiZW5hYmxlLXNhbmRib3giLCBtX3Byb2Nlc3NQb29sLT5zYW5kYm94
RW5hYmxlZCgpID8gInRydWUiIDogImZhbHNlIik7Ci0KICAgICB3ZWJzaXRlRGF0YVN0b3JlKCku
cmVzb2x2ZURpcmVjdG9yaWVzSWZOZWNlc3NhcnkoKTsKICAgICBsYXVuY2hPcHRpb25zLmV4dHJh
SW5pdGlhbGl6YXRpb25EYXRhLnNldCgiYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSIsIHdlYnNp
dGVEYXRhU3RvcmUoKS5yZXNvbHZlZEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKSk7CiAKLSAg
ICBsYXVuY2hPcHRpb25zLmV4dHJhV2ViUHJvY2Vzc1NhbmRib3hQYXRocyA9IG1fcHJvY2Vzc1Bv
b2wtPnNhbmRib3hQYXRocygpOwotCiAjaWYgUExBVEZPUk0oV0FZTEFORCkgJiYgVVNFKEVHTCkK
ICAgICBpZiAoUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkudHlwZSgpID09IFBsYXRm
b3JtRGlzcGxheTo6VHlwZTo6V2F5bGFuZCkgewogICAgICAgICBTdHJpbmcgZGlzcGxheU5hbWUg
PSBXYXlsYW5kQ29tcG9zaXRvcjo6c2luZ2xldG9uKCkuZGlzcGxheU5hbWUoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlvbnNH
VEsuY21ha2UKaW5kZXggNzE4Y2EwYTk2NzZmNWI3YTlmZWNhYWM1ZmNiNDc2YWU1MDA0MjQ5Mi4u
OTg1ZDExOTljMTViMmEzMGRkMDIyYjU1Y2Q3MWFiZTk1YTkyM2VhZiAxMDA2NDQKLS0tIGEvU291
cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UKKysrIGIvU291cmNlL2NtYWtlL09wdGlvbnNHVEsu
Y21ha2UKQEAgLTEyMCwxMiArMTIwLDYgQEAgZWxzZSAoKQogICAgIFdFQktJVF9PUFRJT05fREVG
QVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9SRVNPVVJDRV9VU0FHRSBQUklWQVRFIE9GRikKIGVuZGlm
ICgpCiAKLWlmIChDTUFLRV9TWVNURU1fTkFNRSBNQVRDSEVTICJMaW51eCIgQU5EIE5PVCBFWElT
VFMgIi8uZmxhdHBhay1pbmZvIikKLSAgICBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxV
RShFTkFCTEVfQlVCQkxFV1JBUF9TQU5EQk9YIFBVQkxJQyBPTikKLWVsc2UgKCkKLSAgICBXRUJL
SVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfQlVCQkxFV1JBUF9TQU5EQk9YIFBS
SVZBVEUgT0ZGKQotZW5kaWYgKCkKLQogIyBFbmFibGUgdmFyaWF0aW9uIGZvbnRzIHdoZW4gY2Fp
cm8gPj0gMS4xNiwgZm9udGNvbmZpZyA+PSAyLjEzLjAsIGZyZWV0eXBlID49IDIuOS4wIGFuZCBo
YXJmYnV6eiA+PSAxLjQuMi4KIGlmICgoIiR7UENfQ0FJUk9fVkVSU0lPTn0iIFZFUlNJT05fR1JF
QVRFUiAiMS4xNi4wIiBPUiAiJHtQQ19DQUlST19WRVJTSU9OfSIgU1RSRVFVQUwgIjEuMTYuMCIp
CiAgICAgQU5EICgiJHtQQ19GT05UQ09ORklHX1ZFUlNJT059IiBWRVJTSU9OX0dSRUFURVIgIjIu
MTMuMCIgT1IgIiR7UENfRk9OVENPTkZJR19WRVJTSU9OfSIgU1RSRVFVQUwgIjIuMTMuMCIpCkBA
IC0yMTUsMzggKzIwOSw2IEBAIGlmIChFTkFCTEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTKQogICAg
IGVuZGlmICgpCiBlbmRpZiAoKQogCi1pZiAoRU5BQkxFX0JVQkJMRVdSQVBfU0FOREJPWCkKLSAg
ICBmaW5kX3Byb2dyYW0oQldSQVBfRVhFQ1VUQUJMRSBid3JhcCkKLSAgICBpZiAoTk9UIEJXUkFQ
X0VYRUNVVEFCTEUpCi0gICAgICAgIG1lc3NhZ2UoRkFUQUxfRVJST1IgImJ3cmFwIGV4ZWN1dGFi
bGUgaXMgbmVlZGVkIGZvciBFTkFCTEVfQlVCQkxFV1JBUF9TQU5EQk9YIikKLSAgICBlbmRpZiAo
KQotICAgIGFkZF9kZWZpbml0aW9ucygtREJXUkFQX0VYRUNVVEFCTEU9IiR7QldSQVBfRVhFQ1VU
QUJMRX0iKQotCi0gICAgZXhlY3V0ZV9wcm9jZXNzKAotICAgICAgICBDT01NQU5EICIke0JXUkFQ
X0VYRUNVVEFCTEV9IiAtLXZlcnNpb24KLSAgICAgICAgUkVTVUxUX1ZBUklBQkxFIEJXUkFQX1JF
VAotICAgICAgICBPVVRQVVRfVkFSSUFCTEUgQldSQVBfT1VUUFVUCi0gICAgKQotICAgIGlmIChC
V1JBUF9SRVQpCi0gICAgICAgIG1lc3NhZ2UoRkFUQUxfRVJST1IgIkZhaWxlZCB0byBydW4gJHtC
V1JBUF9FWEVDVVRBQkxFfSIpCi0gICAgZW5kaWYgKCkKLSAgICBzdHJpbmcoUkVHRVggTUFUQ0gg
IihbMC05XSsuWzAtOV0rLlswLTldKykiIEJXUkFQX1ZFUlNJT04gIiR7QldSQVBfT1VUUFVUfSIp
Ci0gICAgaWYgKE5PVCAiJHtCV1JBUF9WRVJTSU9OfSIgVkVSU0lPTl9HUkVBVEVSX0VRVUFMICIw
LjMuMSIpCi0gICAgICAgIG1lc3NhZ2UoRkFUQUxfRVJST1IgImJ3cmFwIG11c3QgYmUgPj0gMC4z
LjEgYnV0ICR7QldSQVBfVkVSU0lPTn0gZm91bmQiKQotICAgIGVuZGlmICgpCi0KLSAgICBmaW5k
X3BhY2thZ2UoTGlic2VjY29tcCkKLSAgICBpZiAoTk9UIExJQlNFQ0NPTVBfRk9VTkQpCi0gICAg
ICAgIG1lc3NhZ2UoRkFUQUxfRVJST1IgImxpYnNlY2NvbXAgaXMgbmVlZGVkIGZvciBFTkFCTEVf
QlVCQkxFV1JBUF9TQU5EQk9YIikKLSAgICBlbmRpZiAoKQotCi0gICAgZmluZF9wcm9ncmFtKERC
VVNfUFJPWFlfRVhFQ1VUQUJMRSB4ZGctZGJ1cy1wcm94eSkKLSAgICBpZiAoTk9UIERCVVNfUFJP
WFlfRVhFQ1VUQUJMRSkKLSAgICAgICAgbWVzc2FnZShGQVRBTF9FUlJPUiAieGRnLWRidXMtcHJv
eHkgbm90IGZvdW5kIGFuZCBpcyBuZWVkZWQgZm9yIEVOQUJMRV9CVUJCTEVXUkFQX1NBTkRCT1gi
KQotICAgIGVuZGlmICgpCi0gICAgYWRkX2RlZmluaXRpb25zKC1EREJVU19QUk9YWV9FWEVDVVRB
QkxFPSIke0RCVVNfUFJPWFlfRVhFQ1VUQUJMRX0iKQotZW5kaWYgKCkKLQogaWYgKFVTRV9MSUJT
RUNSRVQpCiAgICAgZmluZF9wYWNrYWdlKExpYnNlY3JldCkKICAgICBpZiAoTk9UIExJQlNFQ1JF
VF9GT1VORCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZSBi
L1NvdXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZQppbmRleCBhMDMxZGU0MDAxNDY2NTBl
ZDE5MmQ3MmJlMjk0MWI4MWZjODM5YmQzLi45NTAzMWUxZGE4MTEzNzBiMDAxYzIyNjMwMTI5ODEw
OWQ5NDdkMzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvV2ViS2l0RmVhdHVyZXMuY21ha2UK
KysrIGIvU291cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlCkBAIC05OSw3ICs5OSw2IEBA
IG1hY3JvKFdFQktJVF9PUFRJT05fQkVHSU4pCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5B
QkxFX0FTWU5DX1NDUk9MTElORyAiRW5hYmxlIGFzeW5jaHJvbm91cyBzY3JvbGxpbmciIFBSSVZB
VEUgT0ZGKQogICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9BVFRBQ0hNRU5UX0VMRU1F
TlQgIlRvZ2dsZSBBdHRhY2htZW50IEVsZW1lbnQgc3VwcG9ydCIgUFJJVkFURSBPRkYpCiAgICAg
V0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0FWRl9DQVBUSU9OUyAiVG9nZ2xlIEFWRm91bmRh
dGlvbiBjYXB0aW9uIHN1cHBvcnQiIFBSSVZBVEUgT0ZGKQotICAgIFdFQktJVF9PUFRJT05fREVG
SU5FKEVOQUJMRV9CVUJCTEVXUkFQX1NBTkRCT1ggIlRvZ2dsZSBCdWJibGV3cmFwIHNhbmRib3hp
bmcgc3VwcG9ydCIgUFJJVkFURSBPRkYpCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxF
X0NBQ0hFX1BBUlRJVElPTklORyAiVG9nZ2xlIGNhY2hlIHBhcnRpdGlvbmluZyBzdXBwb3J0IiBQ
UklWQVRFIE9GRikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfQ0hBTk5FTF9NRVNT
QUdJTkcgIlRvZ2dsZSBDaGFubmVsIE1lc3NhZ2luZyBzdXBwb3J0IiBQUklWQVRFIE9OKQogICAg
IFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9DT05URU5UX0VYVEVOU0lPTlMgIlRvZ2dsZSBD
b250ZW50IEV4dGVuc2lvbnMgc3VwcG9ydCIgUFJJVkFURSBPRkYpCmRpZmYgLS1naXQgYS9DaGFu
Z2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggMDMxYjVlMjU0N2EzZjRiN2MyZWI0MzgyYjkxNTlmMGU5
NzdmZDE4YS4uNmM1NjY2YWJkZWQxMjQ3MmVjZTM0ZmU2MjQwOTg2NzFhMzc3Mjc1YSAxMDA2NDQK
LS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE5LTAy
LTEzICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KKworICAgICAg
ICBbV1BFXVtHVEtdW1NUQUJMRV0gUmVtb3ZlIHNhbmRib3ggQVBJcyBmcm9tIDIuMjQgYnJhbmNo
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTQ1NTMK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNvdXJj
ZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlOgorICAgICAgICAqIFNvdXJjZS9jbWFrZS9XZWJLaXRG
ZWF0dXJlcy5jbWFrZToKKwogMjAxOS0wMi0xMSAgQWRyaWFuIFBlcmV6IGRlIENhc3RybyAgPGFw
ZXJlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdW1dQRV0gQWRkIGNvbnRlbnQgZXh0ZW5z
aW9ucyBzdXBwb3J0IGluIFdLVFIgYW5kIHVuc2tpcCBsYXlvdXQgdGVzdHMK
</data>
<flag name="review"
          id="378561"
          type_id="1"
          status="+"
          setter="cgarcia"
    />
    <flag name="commit-queue"
          id="378562"
          type_id="3"
          status="-"
          setter="mcatanzaro"
    />
          </attachment>
      

    </bug>

</bugzilla>