<?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>68642</bug_id>
          
          <creation_ts>2011-09-22 11:05:04 -0700</creation_ts>
          <short_desc>REGRESSION(r95672): Broke hundreds of tests (Requested by rniwa on #webkit).</short_desc>
          <delta_ts>2022-03-01 02:51:40 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>68500</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Review Bot">webkit.review.bot</reporter>
          <assigned_to name="WebKit Review Bot">webkit.review.bot</assigned_to>
          <cc>fpizlo</cc>
    
    <cc>oliver</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>471718</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-22 11:05:04 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/95672 broke the build:
Broke hundreds of tests (Requested by rniwa on #webkit).

This is an automatic bug report generated by the sheriff-bot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests case pain.

&quot;Only you can prevent forest fires.&quot; -- Smokey the Bear</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471719</commentid>
    <comment_count>1</comment_count>
      <attachid>108366</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-22 11:05:37 -0700</bug_when>
    <thetext>Created attachment 108366
ROLLOUT of r95672

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the rollout will be successful.  This process takes approximately 15 minutes.

If you would like to land the rollout faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471725</commentid>
    <comment_count>2</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-09-22 11:14:11 -0700</bug_when>
    <thetext>Mn... this might be false positive after all. Since tests are not exhibiting the same failure rate in WK2, it&apos;s probably http://trac.webkit.org/changeset/95673 is the one to blame.

http://build.webkit.org/builders/SnowLeopard%20Intel%20Release%20%28Tests%29/builds/33283</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108366</attachid>
            <date>2011-09-22 11:05:37 -0700</date>
            <delta_ts>2022-03-01 02:51:40 -0800</delta_ts>
            <desc>ROLLOUT of r95672</desc>
            <filename>bug-68642-20110922180403.patch</filename>
            <type>text/plain</type>
            <size>93332</size>
            <attacher name="WebKit Review Bot">webkit.review.bot</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTU3MzgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4
dAppbmRleCBhZmVjMWNkMjViZGUyZDhhNzA2Y2YxYTE3NGE5MmYyM2JjMzI1NjQ1Li5mYzUyNmI2
NDkwYjk4ODU5MmZhZGI2ZjczOGM4M2ZlOTUyYmJhNDc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CkBAIC00OSw3ICs0OSw2IEBAIFNFVChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VT
CiAgICAgaGVhcC9IZWFwLmNwcAogICAgIGhlYXAvSGFuZGxlSGVhcC5jcHAKICAgICBoZWFwL0hh
bmRsZVN0YWNrLmNwcAotICAgIGhlYXAvSmV0dGlzb25lZENvZGVCbG9ja3MuY3BwCiAgICAgaGVh
cC9NYWNoaW5lU3RhY2tNYXJrZXIuY3BwCiAgICAgaGVhcC9NYXJrZWRCbG9jay5jcHAKICAgICBo
ZWFwL01hcmtlZFNwYWNlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggYzVjODZmMzA2
YmU4NTg4ZDVhYWVhMTI5MTExMDA0NGJlNzRjODdiMC4uMTk1Y2RlYmRhYjhhMjI1MDdlMGMzYTJi
ZmFjMzU3OGFhM2I2OGVlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzcg
QEAKKzIwMTEtMDktMjIgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29t
PgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI5NTY3Miwgcjk1NjgxLCByOTU2
ODMsIHI5NTY4NCwgYW5kCisgICAgICAgIHI5NTY4Ny4KKyAgICAgICAgaHR0cDovL3RyYWMud2Vi
a2l0Lm9yZy9jaGFuZ2VzZXQvOTU2NzIKKyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9j
aGFuZ2VzZXQvOTU2ODEKKyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQv
OTU2ODMKKyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvOTU2ODQKKyAg
ICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvOTU2ODcKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4NjQyCisKKyAgICAgICAgQnJv
a2UgaHVuZHJlZHMgb2YgdGVzdHMgKFJlcXVlc3RlZCBieSBybml3YSBvbiAjd2Via2l0KS4KKwor
ICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06
CisgICAgICAgICogSmF2YVNjcmlwdENvcmUucHJvOgorICAgICAgICAqIEphdmFTY3JpcHRDb3Jl
LnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2o6CisgICAgICAgICog
SmF2YVNjcmlwdENvcmUudmNwcm9qL1dURi9XVEYudmNwcm9qOgorICAgICAgICAqIEphdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpDb2RlQmxvY2spOgorICAgICAg
ICAoSlNDOjpGdW5jdGlvbkNvZGVCbG9jazo6Y2FuQ29tcGlsZVdpdGhERkcpOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OnNob3VsZE9wdGltaXplTm93KToKKyAgICAgICAgKEpTQzo6Q29kZUJs
b2NrOjpkdW1wVmFsdWVQcm9maWxlcyk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6
CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6Z2V0U3Ryb25nUHJlZGljdGlvbik6CisgICAgICAgIChKU0M6OkRG
Rzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdDYXBhYmls
aXRpZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjptaWdodENvbXBpbGVGdW5jdGlvbkZvckNvbnN0
cnVjdCk6CisgICAgICAgIChKU0M6OkRGRzo6Y2FuQ29tcGlsZU9wY29kZSk6CisgICAgICAgICog
ZGZnL0RGR0dQUkluZm8uaDoKKyAgICAgICAgKiBkZmcvREZHSklUQ29tcGlsZXIuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpleGl0U3BlY3VsYXRpdmVXaXRoT1NSKToKKyAg
ICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6Y29tcGlsZUVudHJ5KToKKyAgICAgICAgKEpT
Qzo6REZHOjpKSVRDb21waWxlcjo6Y29tcGlsZUJvZHkpOgorICAgICAgICAqIGRmZy9ERkdKSVRD
b21waWxlci5oOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpub3RpY2VPU1JFbnRy
eSk6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKiBkZmcvREZHT1NSRW50cnku
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OnByZXBhcmVPU1JFbnRyeSk6CisgICAgICAgICogZGZn
L0RGR09TUkVudHJ5Lmg6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAg
ICAqIGRmZy9ERkdPcGVyYXRpb25zLmg6CisgICAgICAgICogZGZnL0RGR1Byb3BhZ2F0b3IuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OlByb3BhZ2F0b3I6OnByb3BhZ2F0ZU5vZGVQcmVkaWN0aW9u
cyk6CisgICAgICAgIChKU0M6OkRGRzo6UHJvcGFnYXRvcjo6cGVyZm9ybU5vZGVDU0UpOgorICAg
ICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGhlYXAvQ29uc2VydmF0aXZlUm9vdHMu
Y3BwOgorICAgICAgICAoSlNDOjpDb25zZXJ2YXRpdmVSb290czo6YWRkKToKKyAgICAgICAgKiBo
ZWFwL0NvbnNlcnZhdGl2ZVJvb3RzLmg6CisgICAgICAgIChKU0M6OkNvbnNlcnZhdGl2ZVJvb3Rz
OjpDb25zZXJ2YXRpdmVSb290cyk6CisgICAgICAgIChKU0M6OkNvbnNlcnZhdGl2ZVJvb3RzOjp+
Q29uc2VydmF0aXZlUm9vdHMpOgorICAgICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAgIChK
U0M6OkhlYXA6Om1hcmtSb290cyk6CisgICAgICAgICogaGVhcC9IZWFwLmg6CisgICAgICAgICog
aGVhcC9KZXR0aXNvbmVkQ29kZUJsb2Nrcy5jcHA6IFJlbW92ZWQuCisgICAgICAgICogaGVhcC9K
ZXR0aXNvbmVkQ29kZUJsb2Nrcy5oOiBSZW1vdmVkLgorICAgICAgICAqIGludGVycHJldGVyL1Jl
Z2lzdGVyRmlsZS5jcHA6CisgICAgICAgICogaW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmg6Cisg
ICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgICogaml0L0pJVElubGluZU1ldGhvZHMuaDoK
KyAgICAgICAgKiBqaXQvSklUU3R1YnMuY3BwOgorICAgICAgICAoSlNDOjpERUZJTkVfU1RVQl9G
VU5DVElPTik6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpT
Qzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxlT3B0aW1pemVkRm9yQ29uc3RydWN0KToKKyAg
ICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxlRm9yQ29uc3RydWN0SW50ZXJu
YWwpOgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5oOgorICAgICAgICAoSlNDOjpGdW5j
dGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVGb3JDb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpGdW5j
dGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVGb3IpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1
dGFibGU6OmNvbXBpbGVPcHRpbWl6ZWRGb3IpOgorICAgICAgICAqIHd0Zi9CaXRWZWN0b3IuaDog
UmVtb3ZlZC4KKwogMjAxMS0wOS0yMiAgQWRhbSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgUmVtb3ZlIEZpbmRTYWZhcmkgZnJvbSBhbGwgb3VyIC5zbG4gZmlsZXMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggOWQxMTlkZmI1M2MyZmYz
MzVhMTIxNmYxMDFhYTkxOTgxOTQ3YTFkZi4uYmU3NGM5YjIzMTg2ZmE5YmFiMjAwMDVhYmQ2NGQ5
MTdmZDgzYmRhMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0K
QEAgLTE0MCw4ICsxNDAsNiBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9IYW5kbGUuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGFuZGxlSGVhcC5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hhbmRsZUhl
YXAuaCBcCi0JU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSmV0dGlzb25lZENvZGVCbG9ja3Mu
Y3BwIFwKLQlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9KZXR0aXNvbmVkQ29kZUJsb2Nrcy5o
IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRvci5oIFwKIAlTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9IYW5kbGVTdGFjay5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0hhbmRsZVN0YWNrLmggXApAQCAtNDY2LDcgKzQ2NCw2IEBAIGphdmFzY3JpcHRj
b3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQXNzZXJ0aW9ucy5o
IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0F0b21pY3MuaCBcCiAJU291cmNlL0phdmFT
Y3JpcHRDb3JlL3d0Zi9BVkxUcmVlLmggXAotCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQml0
VmVjdG9yLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQml0bWFwLmggXAogCVNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93dGYvQmxvY2tTdGFjay5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvd3RmL0Jsb29tRmlsdGVyLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnBybyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS5wcm8KaW5kZXggM2RiNzA2MGI2MDgyMDMwOTEyMDZkNjE1NDJkYWJhYzVlMDA1MjZkNS4uYzA2
ZTJmOTdkNDg0Y2NjYjVmNzE0ZmM1OTAyZGJjOWZmYTM3NTE3NiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnBybworKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUucHJvCkBAIC03Nyw3ICs3Nyw2IEBAIFNPVVJDRVMgKz0gXAog
ICAgIGhlYXAvSGFuZGxlSGVhcC5jcHAgXAogICAgIGhlYXAvSGFuZGxlU3RhY2suY3BwIFwKICAg
ICBoZWFwL0hlYXAuY3BwIFwKLSAgICBoZWFwL0pldHRpc29uZWRDb2RlQmxvY2tzLmNwcCBcCiAg
ICAgaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuY3BwIFwKICAgICBoZWFwL01hcmtTdGFjay5jcHAg
XAogICAgIGhlYXAvTWFya2VkQmxvY2suY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmNwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oKaW5kZXggODRiZDI1NDdmYTMzYzQ3
OGJlYTgxY2VlYTEyMTZkNTkwMTgxODgxNC4uM2IzMDgzNGUyZGQ3ZGI1ZWM1M2VkYTBlN2M0NzA1
MzZjYTA5YWE3MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS52Y3Byb2oKQEAgLTE5NzQsMTQgKzE5NzQsNiBAQAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwv
RmlsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RmlsZQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUmVsYXRpdmVQYXRoPSIuLlwuLlxoZWFwXEpldHRpc29uZWRD
b2RlQmxvY2tzLmNwcCIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ZpbGU+Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPEZpbGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbGF0aXZl
UGF0aD0iLi5cLi5caGVhcFxKZXR0aXNvbmVkQ29kZUJsb2Nrcy5oIgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvRmls
ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RmlsZQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgUmVsYXRpdmVQYXRoPSIuLlwuLlxoZWFwXExvY2FsLmgiCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnZjcHJvai9XVEYvV1RGLnZjcHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS52Y3Byb2ovV1RGL1dURi52Y3Byb2oKaW5kZXggYTFiMWQ1N2RiZmM0MzBiNTU4
OTIyMzExMTY3ZDc3ZjJlYWZkODc3ZS4uYzgyOWQ4MzQ1YzRhNGEyMmQwNGNmNDBkNDZhNmE0YjMz
M2QyY2E5ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnZjcHJvai9XVEYvV1RGLnZjcHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmNwcm9qL1dURi9XVEYudmNwcm9qCkBAIC02MzcsMTAgKzYzNyw2IEBACiAJCQk+
CiAJCTwvRmlsZT4KIAkJPEZpbGUKLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cd3RmXEJpdFZlY3Rv
ci5oIgotCQkJPgotCQk8L0ZpbGU+Ci0JCTxGaWxlCiAJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHd0
ZlxCaXRtYXAuaCIKIAkJCT4KIAkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCAzOGY5NzBjYTUwZjY4MDIyMWU3N2I4YjQyZjRkNDUxNTJhZjQ5MWI1Li5jNmQ3ZjNjN2Qy
MmRhNGMwNTEyYjI2MTQ5OWU3NWMxZmZhYWQ4NGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtNzQsOSArNzQsNiBAQAogCQkwRkQ4MkU4NjE0MUYzRkYxMDAxNzlDOTQgLyogUHJl
ZGljdGVkVHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRkQ4MkU4NDE0MUYzRkRBMDAxNzlDOTQgLyogUHJlZGljdGVkVHlwZS5jcHAgKi87IH07
CiAJCTBGRDgyRTkwMTQyMDdBNUYwMDE3OUM5NCAvKiBWYWx1ZVByb2ZpbGUuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZEODJFOEUxNDIwN0E1MTAw
MTc5Qzk0IC8qIFZhbHVlUHJvZmlsZS5jcHAgKi87IH07CiAJCTBGRDgyRUY1MTQyMzA3NUIwMDE3
OUM5NCAvKiBERkdJbnRyaW5zaWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGRDgyRUYzMTQyMzA3MzkwMDE3OUM5NCAvKiBERkdJbnRyaW5zaWMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkwRkQ4MkYy
QjE0MjZDQTZEMDAxNzlDOTQgLyogSmV0dGlzb25lZENvZGVCbG9ja3MuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRDgyRjI5MTQyNkNBNUEwMDE3OUM5
NCAvKiBKZXR0aXNvbmVkQ29kZUJsb2Nrcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07Ci0JCTBGRDgyRjJDMTQyNkNBNzQwMDE3OUM5NCAvKiBKZXR0aXNv
bmVkQ29kZUJsb2Nrcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRkQ4MkYyODE0MjZDQTVBMDAxNzlDOTQgLyogSmV0dGlzb25lZENvZGVCbG9ja3Mu
Y3BwICovOyB9OwotCQkwRkQ4MkY0QjE0MjgwNkExMDAxNzlDOTQgLyogQml0VmVjdG9yLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkQ4MkY0OTE0Mjgw
NjkyMDAxNzlDOTQgLyogQml0VmVjdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTQwMDA2NzcxMkE2Rjc4MzAwNjREMTIzIC8qIE9TQWxsb2Nh
dG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDAw
MDY3NjEyQTZGNzgzMDA2NEQxMjMgLyogT1NBbGxvY2F0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxNDAwMDY5MzEyQTZGOUUxMDA2NEQxMjMg
LyogT1NBbGxvY2F0b3JQb3NpeC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxNDAwMDY5MjEyQTZGOUUxMDA2NEQxMjMgLyogT1NBbGxvY2F0b3JQb3Np
eC5jcHAgKi87IH07CiAJCTE0MDU2NkM0MTA3RUMyNTUwMDVEQkM4RCAvKiBKU0FQSVZhbHVlV3Jh
cHBlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
QzA4OTRENTBGQUZCQTJEMDAwMDE4NjUgLyogSlNBUElWYWx1ZVdyYXBwZXIuY3BwICovOyB9OwpA
QCAtODE2LDkgKzgxMyw2IEBACiAJCTBGRDgyRTg0MTQxRjNGREEwMDE3OUM5NCAvKiBQcmVkaWN0
ZWRUeXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByZWRpY3Rl
ZFR5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkQ4MkU4RTE0MjA3QTUx
MDAxNzlDOTQgLyogVmFsdWVQcm9maWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFZhbHVlUHJvZmlsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBGRDgyRUYzMTQyMzA3MzkwMDE3OUM5NCAvKiBERkdJbnRyaW5zaWMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gREZHSW50cmluc2ljLmg7IHBhdGggPSBkZmcvREZHSW50cmlu
c2ljLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGRDgyRjI4MTQyNkNBNUEwMDE3
OUM5NCAvKiBKZXR0aXNvbmVkQ29kZUJsb2Nrcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKZXR0aXNvbmVkQ29kZUJsb2Nrcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTBGRDgyRjI5MTQyNkNBNUEwMDE3OUM5NCAvKiBKZXR0aXNvbmVkQ29kZUJs
b2Nrcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKZXR0aXNvbmVkQ29kZUJs
b2Nrcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwRkQ4MkY0OTE0MjgwNjkyMDAx
NzlDOTQgLyogQml0VmVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJp
dFZlY3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDAwMDY3NjEyQTZGNzgz
MDA2NEQxMjMgLyogT1NBbGxvY2F0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gT1NBbGxvY2F0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQwMDA2OTIx
MkE2RjlFMTAwNjREMTIzIC8qIE9TQWxsb2NhdG9yUG9zaXguY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gT1NBbGxvY2F0b3JQb3NpeC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTE0MEQxN0Q2MEU4QUQ0QTkwMDBDRDE3RCAvKiBKU0Jhc2VQcml2YXRl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQmFzZVByaXZhdGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2MjcsOCArMTYyMSw2IEBACiAJCTE0MkUzMTJB
MTM0RkYwQTYwMEFGQURCNSAvKiBoZWFwICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQlj
aGlsZHJlbiA9ICgKLQkJCQkwRkQ4MkYyODE0MjZDQTVBMDAxNzlDOTQgLyogSmV0dGlzb25lZENv
ZGVCbG9ja3MuY3BwICovLAotCQkJCTBGRDgyRjI5MTQyNkNBNUEwMDE3OUM5NCAvKiBKZXR0aXNv
bmVkQ29kZUJsb2Nrcy5oICovLAogCQkJCUE3MDQ1NkFGMTQyN0ZCMTUwMDM3REE2OCAvKiBBbGxv
Y2F0aW9uU3BhY2UuaCAqLywKIAkJCQlBNzA0NTZBRTE0MjdGQjAzMDAzN0RBNjggLyogQWxsb2Nh
dGlvblNwYWNlLmNwcCAqLywKIAkJCQkwRjI0MkRBNTEzRjNCMUJCMDA3QURENEMgLyogV2Vha1Jl
ZmVyZW5jZUhhcnZlc3Rlci5oICovLApAQCAtMTgwNSw3ICsxNzk3LDYgQEAKIAkJNjUxNjJFRjEw
OEU2QTIxQzAwNzU1NkNEIC8qIHd0ZiAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hp
bGRyZW4gPSAoCi0JCQkJMEZEODJGNDkxNDI4MDY5MjAwMTc5Qzk0IC8qIEJpdFZlY3Rvci5oICov
LAogCQkJCUMyMkM1MjQ4MTNGQUY2RUYwMEI3REMwRCAvKiBkdG9hICovLAogCQkJCTA2RDM1OEEw
MERBQUQ5QzQwMDNCMTc0RSAvKiBtYWMgKi8sCiAJCQkJODY1NjU3M0UxMTVCRTM1MjAwMjkxRjQw
IC8qIHRleHQgKi8sCkBAIC0yNDMyLDggKzI0MjMsNiBAQAogCQkJCUJDMjU3REU4MEUxRjUxQzUw
MDE2QjZDOSAvKiBBcmd1bWVudHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RDNCMkM0MTAxNTZC
REUwMDI4NjVFNyAvKiBBUk1Bc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2QUREMTQ1
MEZEREVBOTgwMDA2RUVDMiAvKiBBUk12N0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
MEZEODJGNEIxNDI4MDZBMTAwMTc5Qzk0IC8qIEJpdFZlY3Rvci5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJMEZEODJGMkIxNDI2Q0E2RDAwMTc5Qzk0IC8qIEpldHRpc29uZWRDb2RlQmxvY2tzLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRkQ4MkVGNTE0MjMwNzVCMDAxNzlDOTQgLyogREZHSW50cmluc2lj
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkQ4MkU4NTE0MUYzRkUzMDAxNzlDOTQgLyogQm91bmRz
Q2hlY2tlZFBvaW50ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRDgyRTU3MTQxREFGMTAwMDE3
OUM5NCAvKiBERkdPU1JFbnRyeS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMTI0LDcgKzMxMTMsNiBA
QAogCQkJaXNhID0gUEJYU291cmNlc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAy
MTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCi0JCQkJMEZEODJGMkMxNDI2Q0E3NDAwMTc5Qzk0IC8q
IEpldHRpc29uZWRDb2RlQmxvY2tzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRDgyRTkwMTQy
MDdBNUYwMDE3OUM5NCAvKiBWYWx1ZVByb2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZE
ODJFODYxNDFGM0ZGMTAwMTc5Qzk0IC8qIFByZWRpY3RlZFR5cGUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMEZEODJFNTYxNDFEQUYwODAwMTc5Qzk0IC8qIERGR09TUkVudHJ5LmNwcCBpbiBTb3Vy
Y2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApp
bmRleCA2NTVmOTYxMTAwOTBlZTg1NjQxZjZlOTdjMmIwZjg4MjIzZTUzOTM3Li4yMzFhZDJmMDNl
Njk2YTRhZjhhMGU5ZTNhN2QyNjVhOTY4N2Y4ZDJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtMTQyOCwxMCArMTQyOCw3IEBAIENvZGVCbG9j
azo6Q29kZUJsb2NrKFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgQ29kZVR5cGUg
Y29kZVR5cGUsIEpTR2xvCiAgICAgLCBtX3NvdXJjZU9mZnNldChzb3VyY2VPZmZzZXQpCiAgICAg
LCBtX3N5bWJvbFRhYmxlKHN5bVRhYikKICAgICAsIG1fYWx0ZXJuYXRpdmUoYWx0ZXJuYXRpdmUp
Ci0gICAgLCBtX3NwZWN1bGF0aXZlU3VjY2Vzc0NvdW50ZXIoMCkKLSAgICAsIG1fc3BlY3VsYXRp
dmVGYWlsQ291bnRlcigwKQogICAgICwgbV9vcHRpbWl6YXRpb25EZWxheUNvdW50ZXIoMCkKLSAg
ICAsIG1fcmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIoMCkKIHsKICAgICBBU1NFUlQobV9zb3Vy
Y2UpOwogICAgIApAQCAtMTkzOCwyNyArMTkzNSw2IEBAIGJvb2wgRnVuY3Rpb25Db2RlQmxvY2s6
OmNhbkNvbXBpbGVXaXRoREZHKCkKICAgICAgICAgcmV0dXJuIERGRzo6Y2FuQ29tcGlsZUZ1bmN0
aW9uRm9yQ29uc3RydWN0KHRoaXMpOwogICAgIHJldHVybiBERkc6OmNhbkNvbXBpbGVGdW5jdGlv
bkZvckNhbGwodGhpcyk7CiB9Ci0KLXZvaWQgUHJvZ3JhbUNvZGVCbG9jazo6amV0dGlzb24oSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhKQotewotICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgIT0gSklU
Q29kZTo6QmFzZWxpbmVKSVQpOwotICAgIEFTU0VSVCh0aGlzID09IHJlcGxhY2VtZW50KCkpOwot
ICAgIHN0YXRpY19jYXN0PFByb2dyYW1FeGVjdXRhYmxlKj4ob3duZXJFeGVjdXRhYmxlKCkpLT5q
ZXR0aXNvbk9wdGltaXplZENvZGUoZ2xvYmFsRGF0YSk7Ci19Ci0KLXZvaWQgRXZhbENvZGVCbG9j
azo6amV0dGlzb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQotewotICAgIEFTU0VSVChnZXRK
SVRUeXBlKCkgIT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOwotICAgIEFTU0VSVCh0aGlzID09IHJl
cGxhY2VtZW50KCkpOwotICAgIHN0YXRpY19jYXN0PEV2YWxFeGVjdXRhYmxlKj4ob3duZXJFeGVj
dXRhYmxlKCkpLT5qZXR0aXNvbk9wdGltaXplZENvZGUoZ2xvYmFsRGF0YSk7Ci19Ci0KLXZvaWQg
RnVuY3Rpb25Db2RlQmxvY2s6OmpldHRpc29uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKLXsK
LSAgICBBU1NFUlQoZ2V0SklUVHlwZSgpICE9IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKLSAgICBB
U1NFUlQodGhpcyA9PSByZXBsYWNlbWVudCgpKTsKLSAgICBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4
ZWN1dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSktPmpldHRpc29uT3B0aW1pemVkQ29kZUZvcihn
bG9iYWxEYXRhLCBtX2lzQ29uc3RydWN0b3IgPyBDb2RlRm9yQ29uc3RydWN0IDogQ29kZUZvckNh
bGwpOwotfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCkBAIC0xOTk4LDgg
KzE5NzQsOCBAQCBib29sIENvZGVCbG9jazo6c2hvdWxkT3B0aW1pemVOb3coKQogICAgIHByaW50
ZigiUHJvZmlsZSBob3RuZXNzOiAlbGYsICVsZlxuIiwgKGRvdWJsZSludW1iZXJPZkxpdmVOb25B
cmd1bWVudFZhbHVlUHJvZmlsZXMgLyBudW1iZXJPZk5vbkFyZ3VtZW50VmFsdWVQcm9maWxlcywg
KGRvdWJsZSludW1iZXJPZlNhbXBsZXNJblByb2ZpbGVzIC8gVmFsdWVQcm9maWxlOjpudW1iZXJP
ZkJ1Y2tldHMgLyBudW1iZXJPZlZhbHVlUHJvZmlsZXMoKSk7CiAjZW5kaWYKIAotICAgIGlmICgo
IW51bWJlck9mTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVzIHx8IChkb3VibGUpbnVtYmVyT2ZMaXZl
Tm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVzIC8gbnVtYmVyT2ZOb25Bcmd1bWVudFZhbHVlUHJvZmls
ZXMgPj0gMC43NSkKLSAgICAgICAgJiYgKCFudW1iZXJPZlZhbHVlUHJvZmlsZXMoKSB8fCAoZG91
YmxlKW51bWJlck9mU2FtcGxlc0luUHJvZmlsZXMgLyBWYWx1ZVByb2ZpbGU6Om51bWJlck9mQnVj
a2V0cyAvIG51bWJlck9mVmFsdWVQcm9maWxlcygpID49IDAuNSkpCisgICAgaWYgKChkb3VibGUp
bnVtYmVyT2ZMaXZlTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVzIC8gbnVtYmVyT2ZOb25Bcmd1bWVu
dFZhbHVlUHJvZmlsZXMgPj0gMC43NQorICAgICAgICAmJiAoZG91YmxlKW51bWJlck9mU2FtcGxl
c0luUHJvZmlsZXMgLyBWYWx1ZVByb2ZpbGU6Om51bWJlck9mQnVja2V0cyAvIG51bWJlck9mVmFs
dWVQcm9maWxlcygpID49IDAuNSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgCiAgICAgbV9v
cHRpbWl6YXRpb25EZWxheUNvdW50ZXIrKzsKQEAgLTIwNDEsMTEgKzIwMTcsNiBAQCB2b2lkIENv
ZGVCbG9jazo6ZHVtcFZhbHVlUHJvZmlsZXMoKQogICAgICAgICBSYXJlQ2FzZVByb2ZpbGUqIHBy
b2ZpbGUgPSByYXJlQ2FzZVByb2ZpbGUoaSk7CiAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiICAg
YmMgPSAlZDogJXVcbiIsIHByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQsIHByb2ZpbGUtPm1fY291
bnRlcik7CiAgICAgfQotICAgIGZwcmludGYoc3RkZXJyLCAiU3BlY2lhbEZhc3RDYXNlUHJvZmls
ZSBmb3IgJXA6XG4iLCB0aGlzKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVy
T2ZTcGVjaWFsRmFzdENhc2VQcm9maWxlcygpOyArK2kpIHsKLSAgICAgICAgUmFyZUNhc2VQcm9m
aWxlKiBwcm9maWxlID0gc3BlY2lhbEZhc3RDYXNlUHJvZmlsZShpKTsKLSAgICAgICAgZnByaW50
ZihzdGRlcnIsICIgICBiYyA9ICVkOiAldVxuIiwgcHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldCwg
cHJvZmlsZS0+bV9jb3VudGVyKTsKLSAgICB9CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCmluZGV4IDVhNTc3ZDBmMzE2ODdkYTEzOWM5MzI4
OWJmYjA2MzRjNzc5ZmQ4YzUuLmQ4YmNkMGJlYTBkNjljYmUzOThhNzIxYWNlMmU0MWQxMTRhNWVl
NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKQEAgLTMx
LDcgKzMxLDYgQEAKICNkZWZpbmUgQ29kZUJsb2NrX2gKIAogI2luY2x1ZGUgIkNvbXBhY3RKSVRD
b2RlTWFwLmgiCi0jaW5jbHVkZSAiREZHT1NSRW50cnkuaCIKICNpbmNsdWRlICJFdmFsQ29kZUNh
Y2hlLmgiCiAjaW5jbHVkZSAiSW5zdHJ1Y3Rpb24uaCIKICNpbmNsdWRlICJKSVRDb2RlLmgiCkBA
IC0zMzQsMjEgKzMzMyw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgICAg
ICByZXR1cm4gbV9qaXRDb2RlTWFwLmdldCgpOwogICAgICAgICB9Ci0gICAgICAgIAotICAgICAg
ICBERkc6Ok9TUkVudHJ5RGF0YSogYXBwZW5kREZHT1NSRW50cnlEYXRhKHVuc2lnbmVkIGJ5dGVj
b2RlSW5kZXgsIHVuc2lnbmVkIG1hY2hpbmVDb2RlT2Zmc2V0KQotICAgICAgICB7Ci0gICAgICAg
ICAgICBERkc6Ok9TUkVudHJ5RGF0YSBlbnRyeTsKLSAgICAgICAgICAgIGVudHJ5Lm1fYnl0ZWNv
ZGVJbmRleCA9IGJ5dGVjb2RlSW5kZXg7Ci0gICAgICAgICAgICBlbnRyeS5tX21hY2hpbmVDb2Rl
T2Zmc2V0ID0gbWFjaGluZUNvZGVPZmZzZXQ7Ci0gICAgICAgICAgICBtX2RmZ09TUkVudHJ5LmFw
cGVuZChlbnRyeSk7Ci0gICAgICAgICAgICByZXR1cm4gJm1fZGZnT1NSRW50cnkubGFzdCgpOwot
ICAgICAgICB9Ci0gICAgICAgIHVuc2lnbmVkIG51bWJlck9mREZHT1NSRW50cmllcygpIGNvbnN0
IHsgcmV0dXJuIG1fZGZnT1NSRW50cnkuc2l6ZSgpOyB9Ci0gICAgICAgIERGRzo6T1NSRW50cnlE
YXRhKiBkZmdPU1JFbnRyeURhdGEodW5zaWduZWQgaSkgeyByZXR1cm4gJm1fZGZnT1NSRW50cnlb
aV07IH0KLSAgICAgICAgREZHOjpPU1JFbnRyeURhdGEqIGRmZ09TUkVudHJ5RGF0YUZvckJ5dGVj
b2RlSW5kZXgodW5zaWduZWQgYnl0ZWNvZGVJbmRleCkKLSAgICAgICAgewotICAgICAgICAgICAg
cmV0dXJuIGJpbmFyeVNlYXJjaDxERkc6Ok9TUkVudHJ5RGF0YSwgdW5zaWduZWQsIERGRzo6Z2V0
T1NSRW50cnlEYXRhQnl0ZWNvZGVJbmRleD4obV9kZmdPU1JFbnRyeS5iZWdpbigpLCBtX2RmZ09T
UkVudHJ5LnNpemUoKSwgYnl0ZWNvZGVJbmRleCk7Ci0gICAgICAgIH0KICNlbmRpZgogCiAjaWYg
RU5BQkxFKElOVEVSUFJFVEVSKQpAQCAtMzc2LDExICszNjAsOSBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgICAgIG1faml0Q29kZVdpdGhBcml0eUNoZWNrID0gY29kZVdpdGhBcml0eUNoZWNr
OwogICAgICAgICB9CiAgICAgICAgIEpJVENvZGUmIGdldEpJVENvZGUoKSB7IHJldHVybiBtX2pp
dENvZGU7IH0KLSAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGdldEpJVENvZGVXaXRoQXJp
dHlDaGVjaygpIHsgcmV0dXJuIG1faml0Q29kZVdpdGhBcml0eUNoZWNrOyB9CiAgICAgICAgIEpJ
VENvZGU6OkpJVFR5cGUgZ2V0SklUVHlwZSgpIHsgcmV0dXJuIG1faml0Q29kZS5qaXRUeXBlKCk7
IH0KICAgICAgICAgRXhlY3V0YWJsZU1lbW9yeUhhbmRsZSogZXhlY3V0YWJsZU1lbW9yeSgpIHsg
cmV0dXJuIGdldEpJVENvZGUoKS5nZXRFeGVjdXRhYmxlTWVtb3J5KCk7IH0KICAgICAgICAgdmly
dHVhbCBKU09iamVjdCogY29tcGlsZU9wdGltaXplZChFeGVjU3RhdGUqLCBTY29wZUNoYWluTm9k
ZSopID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lkIGpldHRpc29uKEpTR2xvYmFsRGF0YSYpID0g
MDsKICAgICAgICAgdmlydHVhbCBDb2RlQmxvY2sqIHJlcGxhY2VtZW50KCkgPSAwOwogICAgICAg
ICB2aXJ0dWFsIGJvb2wgY2FuQ29tcGlsZVdpdGhERkcoKSA9IDA7CiAgICAgICAgIGJvb2wgaGFz
T3B0aW1pemVkUmVwbGFjZW1lbnQoKQpAQCAtNzAzLDM3ICs2ODUsMTEgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIC8vIHRyaWdnZXIgZmlsZXMuIEFsbCBDb2RlQmxvY2tzIHN0YXJ0IG91dCB3
aXRoIG9wdGltaXplQWZ0ZXJXYXJtVXAoKSwKICAgICAgICAgLy8gYXMgdGhpcyBpcyBjYWxsZWQg
ZnJvbSB0aGUgQ29kZUJsb2NrIGNvbnN0cnVjdG9yLgogICAgICAgICAKLSAgICAgICAgLy8gV2hl
biB3ZSBvYnNlcnZlIGEgbG90IG9mIHNwZWN1bGF0aW9uIGZhaWx1cmVzLCB3ZSB0cmlnZ2VyIGEK
LSAgICAgICAgLy8gcmVvcHRpbWl6YXRpb24uIEJ1dCBlYWNoIHRpbWUsIHdlIGluY3JlYXNlIHRo
ZSBvcHRpbWl6YXRpb24gdHJpZ2dlcgotICAgICAgICAvLyB0byBhdm9pZCB0aHJhc2hpbmcuCi0g
ICAgICAgIHVuc2lnbmVkIHJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyKCkgY29uc3QKLSAgICAg
ICAgewotICAgICAgICAgICAgQVNTRVJUKG1fcmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIgPD0g
MTgpOwotICAgICAgICAgICAgcmV0dXJuIG1fcmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXI7Ci0g
ICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHZvaWQgY291bnRSZW9wdGltaXphdGlvbigpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIG1fcmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIrKzsKLSAg
ICAgICAgICAgIGlmIChtX3Jlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyID4gMTgpCi0gICAgICAg
ICAgICAgICAgbV9yZW9wdGltaXphdGlvblJldHJ5Q291bnRlciA9IDE4OwotICAgICAgICB9Ci0g
ICAgICAgIAogICAgICAgICAvLyBUaGVzZSBmdW5jdGlvbnMgYXJlIHByb3ZpZGVkIHRvIHN1cHBv
cnQgY2FsbGluZwotICAgICAgICAvLyBvcHRpbWl6ZVhZWigpIG1ldGhvZHMgZnJvbSBKSVQtZ2Vu
ZXJhdGVkIGNvZGUuCi0gICAgICAgIHN0YXRpYyBpbnQzMl90IGNvdW50ZXJWYWx1ZUZvck9wdGlt
aXplTmV4dEludm9jYXRpb24oKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gMDsKLSAg
ICAgICAgfQotICAgICAgICAKKyAgICAgICAgLy8gb3B0aW1pemVBZnRlcldhcm1VcCgpIGZyb20g
SklULWdlbmVyYXRlZCBjb2RlLgogICAgICAgICBpbnQzMl90IGNvdW50ZXJWYWx1ZUZvck9wdGlt
aXplQWZ0ZXJXYXJtVXAoKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gLTEwMDAgPDwg
cmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIoKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAg
ICAgaW50MzJfdCBjb3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcCgpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIHJldHVybiAtNTAwMCA8PCByZW9wdGltaXphdGlvblJldHJ5Q291
bnRlcigpOworICAgICAgICAgICAgcmV0dXJuIC0xMDAwOwogICAgICAgICB9CiAgICAgICAgIAog
ICAgICAgICBpbnQzMl90KiBhZGRyZXNzT2ZFeGVjdXRlQ291bnRlcigpCkBAIC03NDEsMTggKzY5
NywxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiAmbV9leGVjdXRlQ291
bnRlcjsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZz
ZXRPZkV4ZWN1dGVDb3VudGVyKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKENvZGVCbG9jaywg
bV9leGVjdXRlQ291bnRlcik7IH0KLQotICAgICAgICBpbnQzMl90IGV4ZWN1dGVDb3VudGVyKCkg
Y29uc3QgeyByZXR1cm4gbV9leGVjdXRlQ291bnRlcjsgfQotICAgICAgICAKLSAgICAgICAgdW5z
aWduZWQgb3B0aW1pemF0aW9uRGVsYXlDb3VudGVyKCkgY29uc3QgeyByZXR1cm4gbV9vcHRpbWl6
YXRpb25EZWxheUNvdW50ZXI7IH0KLSAgICAgICAgCiAgICAgICAgIC8vIENhbGwgdGhpcyB0byBm
b3JjZSB0aGUgbmV4dCBvcHRpbWl6YXRpb24gdHJpZ2dlciB0byBmaXJlLiBUaGlzIGlzCiAgICAg
ICAgIC8vIHJhcmVseSB3aXNlLCBzaW5jZSBvcHRpbWl6YXRpb24gdHJpZ2dlcnMgYXJlIHR5cGlj
YWxseSBtb3JlCiAgICAgICAgIC8vIGV4cGVuc2l2ZSB0aGFuIGV4ZWN1dGluZyBiYXNlbGluZSBj
b2RlLgogICAgICAgICB2b2lkIG9wdGltaXplTmV4dEludm9jYXRpb24oKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBtX2V4ZWN1dGVDb3VudGVyID0gY291bnRlclZhbHVlRm9yT3B0aW1pemVOZXh0
SW52b2NhdGlvbigpOworICAgICAgICAgICAgbV9leGVjdXRlQ291bnRlciA9IDA7CiAgICAgICAg
IH0KICAgICAgICAgCiAgICAgICAgIC8vIENhbGwgdGhpcyB0byBwcmV2ZW50IG9wdGltaXphdGlv
biBmcm9tIGhhcHBlbmluZyBhZ2Fpbi4gTm90ZSB0aGF0CkBAIC03NzYsMTMgKzcyNiw2IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICAgICAgbV9leGVjdXRlQ291bnRlciA9IGNvdW50ZXJWYWx1
ZUZvck9wdGltaXplQWZ0ZXJXYXJtVXAoKTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAg
Ly8gQ2FsbCB0aGlzIHRvIGZvcmNlIGFuIG9wdGltaXphdGlvbiB0cmlnZ2VyIHRvIGZpcmUgb25s
eSBhZnRlcgotICAgICAgICAvLyBhIGxvdCBvZiB3YXJtLXVwLgotICAgICAgICB2b2lkIG9wdGlt
aXplQWZ0ZXJMb25nV2FybVVwKCkKLSAgICAgICAgewotICAgICAgICAgICAgbV9leGVjdXRlQ291
bnRlciA9IGNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVwKCk7Ci0gICAgICAg
IH0KLSAgICAgICAgCiAgICAgICAgIC8vIENhbGwgdGhpcyB0byBjYXVzZSBhbiBvcHRpbWl6YXRp
b24gdHJpZ2dlciB0byBmaXJlIHNvb24sIGJ1dAogICAgICAgICAvLyBub3QgbmVjZXNzYXJpbHkg
dGhlIG5leHQgb25lLiBUaGlzIG1ha2VzIHNlbnNlIGlmIG9wdGltaXphdGlvbgogICAgICAgICAv
LyBzdWNjZWVkcy4gU3VjY2Vzc2Z1bHkgb3B0aW1pemF0aW9uIG1lYW5zIHRoYXQgYWxsIGNhbGxz
IGFyZQpAQCAtODAzLDcyICs3NDYsMTggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIC8vIGlu
IHRoZSBiYXNlbGluZSBjb2RlLgogICAgICAgICB2b2lkIG9wdGltaXplU29vbigpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIG1fZXhlY3V0ZUNvdW50ZXIgPSAtMTAwIDw8IHJlb3B0aW1pemF0aW9u
UmV0cnlDb3VudGVyKCk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIC8vIFRoZSBzcGVj
dWxhdGl2ZSBKSVQgdHJhY2tzIGl0cyBzdWNjZXNzIHJhdGUsIHNvIHRoYXQgd2UgY2FuCi0gICAg
ICAgIC8vIGRlY2lkZSB3aGVuIHRvIHJlb3B0aW1pemUuIEl0J3MgaW50ZXJlc3RpbmcgdG8gbm90
ZSB0aGF0IHRoZXNlCi0gICAgICAgIC8vIGNvdW50ZXJzIG1heSBvdmVyZmxvdyB3aXRob3V0IGFu
eSBwcm90ZWN0aW9uLiBUaGUgc3VjY2VzcwotICAgICAgICAvLyBjb3VudGVyIHdpbGwgb3ZlcmZs
b3cgYmVmb3JlIHRoZSBmYWlsIG9uZSBkb2VzLCBiZWN1YXNlIHRoZQotICAgICAgICAvLyBmYWls
IG9uZSBpcyB1c2VkIGFzIGEgdHJpZ2dlciB0byByZW9wdGltaXplLiBTbyB0aGUgd29yc3QgY2Fz
ZQotICAgICAgICAvLyBpcyB0aGF0IHRoZSBzdWNjZXNzIGNvdW50ZXIgb3ZlcmZsb3dzIGFuZCB3
ZSByZW9wdGltaXplIHdpdGhvdXQKLSAgICAgICAgLy8gbmVlZGluZyB0by4gQnV0IHRoaXMgaXMg
aGFybWxlc3MuIElmIGEgbWV0aG9kIHJlYWxseSBkaWQKLSAgICAgICAgLy8gZXhlY3V0ZSAyXjMy
IHRpbWVzIHRoZW4gY29tcGlsaW5nIGl0IGFnYWluIHByb2JhYmx5IHdvbid0IGh1cnQKLSAgICAg
ICAgLy8gYW55b25lLgotICAgICAgICAKLSAgICAgICAgdm9pZCBjb3VudFNwZWN1bGF0aW9uU3Vj
Y2VzcygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1fc3BlY3VsYXRpdmVTdWNjZXNzQ291bnRl
cisrOworICAgICAgICAgICAgbV9leGVjdXRlQ291bnRlciA9IC0xMDA7CiAgICAgICAgIH0KICAg
ICAgICAgCi0gICAgICAgIHZvaWQgY291bnRTcGVjdWxhdGlvbkZhaWx1cmUoKQotICAgICAgICB7
Ci0gICAgICAgICAgICBtX3NwZWN1bGF0aXZlRmFpbENvdW50ZXIrKzsKLSAgICAgICAgfQotICAg
ICAgICAKLSAgICAgICAgdWludDMyX3Qgc3BlY3VsYXRpdmVTdWNjZXNzQ291bnRlcigpIGNvbnN0
IHsgcmV0dXJuIG1fc3BlY3VsYXRpdmVTdWNjZXNzQ291bnRlcjsgfQotICAgICAgICB1aW50MzJf
dCBzcGVjdWxhdGl2ZUZhaWxDb3VudGVyKCkgY29uc3QgeyByZXR1cm4gbV9zcGVjdWxhdGl2ZUZh
aWxDb3VudGVyOyB9Ci0gICAgICAgIAotICAgICAgICB1aW50MzJfdCogYWRkcmVzc09mU3BlY3Vs
YXRpdmVTdWNjZXNzQ291bnRlcigpIHsgcmV0dXJuICZtX3NwZWN1bGF0aXZlU3VjY2Vzc0NvdW50
ZXI7IH0KLSAgICAgICAgdWludDMyX3QqIGFkZHJlc3NPZlNwZWN1bGF0aXZlRmFpbENvdW50ZXIo
KSB7IHJldHVybiAmbV9zcGVjdWxhdGl2ZUZhaWxDb3VudGVyOyB9Ci0gICAgICAgIAotICAgICAg
ICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mU3BlY3VsYXRpdmVTdWNjZXNzQ291bnRlcigpIHsg
cmV0dXJuIE9CSkVDVF9PRkZTRVRPRihDb2RlQmxvY2ssIG1fc3BlY3VsYXRpdmVTdWNjZXNzQ291
bnRlcik7IH0KLSAgICAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlNwZWN1bGF0aXZlRmFp
bENvdW50ZXIoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoQ29kZUJsb2NrLCBtX3NwZWN1bGF0
aXZlRmFpbENvdW50ZXIpOyB9Ci0gICAgICAgIAogICAgICAgICAvLyBUaGUgYW1vdW50IGJ5IHdo
aWNoIHRoZSBKSVQgd2lsbCBpbmNyZW1lbnQgbV9leGVjdXRlQ291bnRlci4KICAgICAgICAgc3Rh
dGljIHVuc2lnbmVkIGV4ZWN1dGVDb3VudGVySW5jcmVtZW50Rm9yTG9vcCgpIHsgcmV0dXJuIDE7
IH0KICAgICAgICAgc3RhdGljIHVuc2lnbmVkIGV4ZWN1dGVDb3VudGVySW5jcmVtZW50Rm9yUmV0
dXJuKCkgeyByZXR1cm4gMTU7IH0KLQotICAgICAgICAvLyBUaGUgc3VjY2Vzcy9mYWlsdXJlIHJh
dGlvIHdlIHdhbnQuCi0gICAgICAgIHVuc2lnbmVkIGRlc2lyZWRTdWNjZXNzRmFpbFJhdGlvKCkg
eyByZXR1cm4gNjsgfQotICAgICAgICAKLSAgICAgICAgLy8gVGhlIG51bWJlciBvZiBmYWlsdXJl
cyB0aGF0IHRyaWdnZXJzIHRoZSB1c2Ugb2YgdGhlIHJhdGlvLgotICAgICAgICB1bnNpZ25lZCBs
YXJnZUZhaWxDb3VudFRocmVzaG9sZCgpIHsgcmV0dXJuIDIwIDw8IGFsdGVybmF0aXZlKCktPnJl
b3B0aW1pemF0aW9uUmV0cnlDb3VudGVyKCk7IH0KLSAgICAgICAgdW5zaWduZWQgbGFyZ2VGYWls
Q291bnRUaHJlc2hvbGRGb3JMb29wKCkgeyByZXR1cm4gMSA8PCBhbHRlcm5hdGl2ZSgpLT5yZW9w
dGltaXphdGlvblJldHJ5Q291bnRlcigpOyB9Ci0gICAgICAgIAotICAgICAgICBib29sIHNob3Vs
ZFJlb3B0aW1pemVOb3coKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZGVzaXJlZFN1
Y2Nlc3NGYWlsUmF0aW8oKSAqIHNwZWN1bGF0aXZlRmFpbENvdW50ZXIoKSA+PSBzcGVjdWxhdGl2
ZVN1Y2Nlc3NDb3VudGVyKCkgJiYgc3BlY3VsYXRpdmVGYWlsQ291bnRlcigpID49IGxhcmdlRmFp
bENvdW50VGhyZXNob2xkKCk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGJvb2wgc2hv
dWxkUmVvcHRpbWl6ZUZyb21Mb29wTm93KCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJu
IGRlc2lyZWRTdWNjZXNzRmFpbFJhdGlvKCkgKiBzcGVjdWxhdGl2ZUZhaWxDb3VudGVyKCkgPj0g
c3BlY3VsYXRpdmVTdWNjZXNzQ291bnRlcigpICYmIHNwZWN1bGF0aXZlRmFpbENvdW50ZXIoKSA+
PSBsYXJnZUZhaWxDb3VudFRocmVzaG9sZEZvckxvb3AoKTsKLSAgICAgICAgfQogICAgICAgICAK
ICNpZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCiAgICAgICAgIGJvb2wgc2hvdWxkT3B0aW1pemVO
b3coKTsKICNlbHNlCiAgICAgICAgIGJvb2wgc2hvdWxkT3B0aW1pemVOb3coKSB7IHJldHVybiBm
YWxzZTsgfQogI2VuZGlmCi0gICAgICAgIAotICAgICAgICB2b2lkIHJlb3B0aW1pemUoSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhKQotICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQocmVwbGFj
ZW1lbnQoKSAhPSB0aGlzKTsKLSAgICAgICAgICAgIHJlcGxhY2VtZW50KCktPmpldHRpc29uKGds
b2JhbERhdGEpOwotICAgICAgICAgICAgY291bnRSZW9wdGltaXphdGlvbigpOwotICAgICAgICAg
ICAgb3B0aW1pemVBZnRlcldhcm1VcCgpOwotICAgICAgICB9CiAKICNpZiBFTkFCTEUoVkVSQk9T
RV9WQUxVRV9QUk9GSUxFKQogICAgICAgICB2b2lkIGR1bXBWYWx1ZVByb2ZpbGVzKCk7CkBAIC05
MzgsNyArODI3LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAjZW5kaWYKICNpZiBFTkFCTEUoREZHX0pJ
VCkKICAgICAgICAgT3duUHRyPENvbXBhY3RKSVRDb2RlTWFwPiBtX2ppdENvZGVNYXA7Ci0gICAg
ICAgIFZlY3RvcjxERkc6Ok9TUkVudHJ5RGF0YT4gbV9kZmdPU1JFbnRyeTsKICNlbmRpZgogI2lm
IEVOQUJMRShWQUxVRV9QUk9GSUxFUikKICAgICAgICAgU2VnbWVudGVkVmVjdG9yPFZhbHVlUHJv
ZmlsZSwgOD4gbV92YWx1ZVByb2ZpbGVzOwpAQCAtOTYzLDEwICs4NTEsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgT3duUHRyPFByZWRpY3Rpb25UcmFja2VyPiBtX3ByZWRpY3Rpb25zOwog
CiAgICAgICAgIGludDMyX3QgbV9leGVjdXRlQ291bnRlcjsKLSAgICAgICAgdWludDMyX3QgbV9z
cGVjdWxhdGl2ZVN1Y2Nlc3NDb3VudGVyOwotICAgICAgICB1aW50MzJfdCBtX3NwZWN1bGF0aXZl
RmFpbENvdW50ZXI7CiAgICAgICAgIHVpbnQ4X3QgbV9vcHRpbWl6YXRpb25EZWxheUNvdW50ZXI7
Ci0gICAgICAgIHVpbnQ4X3QgbV9yZW9wdGltaXphdGlvblJldHJ5Q291bnRlcjsKIAogICAgICAg
ICBzdHJ1Y3QgUmFyZURhdGEgewogICAgICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
QEAgLTEwMjQsNyArOTA5LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAjaWYgRU5BQkxFKEpJVCkKICAg
ICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZpcnR1YWwgSlNPYmplY3QqIGNvbXBpbGVPcHRpbWl6ZWQo
RXhlY1N0YXRlKiwgU2NvcGVDaGFpbk5vZGUqKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGpldHRp
c29uKEpTR2xvYmFsRGF0YSYpOwogICAgICAgICB2aXJ0dWFsIENvZGVCbG9jayogcmVwbGFjZW1l
bnQoKTsKICAgICAgICAgdmlydHVhbCBib29sIGNhbkNvbXBpbGVXaXRoREZHKCk7CiAjZW5kaWYK
QEAgLTEwNTEsNyArOTM1LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAjaWYgRU5BQkxFKEpJVCkKICAg
ICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZpcnR1YWwgSlNPYmplY3QqIGNvbXBpbGVPcHRpbWl6ZWQo
RXhlY1N0YXRlKiwgU2NvcGVDaGFpbk5vZGUqKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGpldHRp
c29uKEpTR2xvYmFsRGF0YSYpOwogICAgICAgICB2aXJ0dWFsIENvZGVCbG9jayogcmVwbGFjZW1l
bnQoKTsKICAgICAgICAgdmlydHVhbCBib29sIGNhbkNvbXBpbGVXaXRoREZHKCk7CiAjZW5kaWYK
QEAgLTEwNzksNyArOTYyLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAjaWYgRU5BQkxFKEpJVCkKICAg
ICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZpcnR1YWwgSlNPYmplY3QqIGNvbXBpbGVPcHRpbWl6ZWQo
RXhlY1N0YXRlKiwgU2NvcGVDaGFpbk5vZGUqKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGpldHRp
c29uKEpTR2xvYmFsRGF0YSYpOwogICAgICAgICB2aXJ0dWFsIENvZGVCbG9jayogcmVwbGFjZW1l
bnQoKTsKICAgICAgICAgdmlydHVhbCBib29sIGNhbkNvbXBpbGVXaXRoREZHKCk7CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKaW5k
ZXggODI3MzdlOTE4OGMzNDM2ZDk2N2IzZGI1ZmE3Y2RhMjBlYTQ0NzZlMS4uZmQ3YzYyOTY2Y2Y4
NjNlOGViOWU1N2UxMjBmMWFmNTk0MjI5NTg5ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTQ5Miw3ICs0OTIsNyBAQCBwcml2YXRl
OgogICAgICAgICBBU1NFUlQocHJvZmlsZSk7CiAgICAgICAgIFByZWRpY3RlZFR5cGUgcHJlZGlj
dGlvbiA9IHByb2ZpbGUtPmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbigpOwogI2lmIEVOQUJMRShE
RkdfREVCVUdfVkVSQk9TRSkKLSAgICAgICAgcHJpbnRmKCJEeW5hbWljIFtAJXUsIGJjIyV1XSBw
cmVkaWN0aW9uOiAlc1xuIiwgbm9kZUluZGV4LCBieXRlY29kZUluZGV4LCBwcmVkaWN0aW9uVG9T
dHJpbmcocHJlZGljdGlvbikpOworICAgICAgICBwcmludGYoIkR5bmFtaWMgWyV1LCAldV0gcHJl
ZGljdGlvbjogJXNcbiIsIG5vZGVJbmRleCwgYnl0ZWNvZGVJbmRleCwgcHJlZGljdGlvblRvU3Ry
aW5nKHByZWRpY3Rpb24pKTsKICNlbmRpZgogICAgICAgICByZXR1cm4gcHJlZGljdGlvbjsKICAg
ICB9CkBAIC03MzAsMTcgKzczMCw2IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2so
dW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9jb252ZXJ0X3RoaXMp
OwogICAgICAgICB9CiAKLSAgICAgICAgY2FzZSBvcF9jcmVhdGVfdGhpczogewotICAgICAgICAg
ICAgTm9kZUluZGV4IG9wMSA9IGdldChjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsK
LSAgICAgICAgICAgIHNldChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCBhZGRUb0dy
YXBoKENyZWF0ZVRoaXMsIG9wMSkpOwotICAgICAgICAgICAgTkVYVF9PUENPREUob3BfY3JlYXRl
X3RoaXMpOwotICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgY2FzZSBvcF9nZXRfY2Fs
bGVlOiB7Ci0gICAgICAgICAgICBzZXQoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwg
YWRkVG9HcmFwaChHZXRDYWxsZWUpKTsKLSAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2dldF9j
YWxsZWUpOwotICAgICAgICB9Ci0KICAgICAgICAgLy8gPT09IEJpdHdpc2Ugb3BlcmF0aW9ucyA9
PT0KIAogICAgICAgICBjYXNlIG9wX2JpdGFuZDogewpAQCAtMTMxNCwxNCArMTMwMyw2IEBAIGJv
b2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAg
ICBhZGRUb0dyYXBoKFJldHVybiwgZ2V0KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQp
KTsKICAgICAgICAgICAgIExBU1RfT1BDT0RFKG9wX2VuZCk7CiAgICAgICAgICAgICAKLSAgICAg
ICAgY2FzZSBvcF90aHJvdzoKLSAgICAgICAgICAgIGFkZFRvR3JhcGgoVGhyb3csIGdldChjdXJy
ZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSk7Ci0gICAgICAgICAgICBMQVNUX09QQ09ERShv
cF90aHJvdyk7Ci0gICAgICAgICAgICAKLSAgICAgICAgY2FzZSBvcF90aHJvd19yZWZlcmVuY2Vf
ZXJyb3I6Ci0gICAgICAgICAgICBhZGRUb0dyYXBoKFRocm93UmVmZXJlbmNlRXJyb3IpOwotICAg
ICAgICAgICAgTEFTVF9PUENPREUob3BfdGhyb3dfcmVmZXJlbmNlX2Vycm9yKTsKLSAgICAgICAg
ICAgIAogICAgICAgICBjYXNlIG9wX2NhbGw6IHsKICAgICAgICAgICAgIE5vZGVJbmRleCBjYWxs
VGFyZ2V0ID0gZ2V0KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOwogICAgICAgICAg
ICAgaWYgKG1fZ3JhcGguaXNGdW5jdGlvbkNvbnN0YW50KG1fY29kZUJsb2NrLCBjYWxsVGFyZ2V0
KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRp
ZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmgKaW5kZXgg
MDZlZTMyMWRjNTk2OTRmMTE5ZjA3NTFhNjRiNmI0N2Q3NmJlMWQ3Zi4uZTQ1NTNhN2E2NmQ0ZTkz
MjIzM2IzY2FiZDczY2ZmZjI2OGI0OWZmMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NhcGFiaWxpdGllcy5oCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1l
c3BhY2UgREZHIHsKIGlubGluZSBib29sIG1pZ2h0Q29tcGlsZUV2YWwoQ29kZUJsb2NrKikgeyBy
ZXR1cm4gdHJ1ZTsgfQogaW5saW5lIGJvb2wgbWlnaHRDb21waWxlUHJvZ3JhbShDb2RlQmxvY2sq
KSB7IHJldHVybiB0cnVlOyB9CiBpbmxpbmUgYm9vbCBtaWdodENvbXBpbGVGdW5jdGlvbkZvckNh
bGwoQ29kZUJsb2NrKikgeyByZXR1cm4gdHJ1ZTsgfQotaW5saW5lIGJvb2wgbWlnaHRDb21waWxl
RnVuY3Rpb25Gb3JDb25zdHJ1Y3QoQ29kZUJsb2NrKikgeyByZXR1cm4gdHJ1ZTsgfQoraW5saW5l
IGJvb2wgbWlnaHRDb21waWxlRnVuY3Rpb25Gb3JDb25zdHJ1Y3QoQ29kZUJsb2NrKikgeyByZXR1
cm4gZmFsc2U7IH0KIAogLy8gT3Bjb2RlIGNoZWNraW5nLgogaW5saW5lIGJvb2wgY2FuQ29tcGls
ZU9wY29kZShPcGNvZGVJRCBvcGNvZGVJRCkKQEAgLTQ1LDggKzQ1LDYgQEAgaW5saW5lIGJvb2wg
Y2FuQ29tcGlsZU9wY29kZShPcGNvZGVJRCBvcGNvZGVJRCkKICAgICBzd2l0Y2ggKG9wY29kZUlE
KSB7CiAgICAgY2FzZSBvcF9lbnRlcjoKICAgICBjYXNlIG9wX2NvbnZlcnRfdGhpczoKLSAgICBj
YXNlIG9wX2NyZWF0ZV90aGlzOgotICAgIGNhc2Ugb3BfZ2V0X2NhbGxlZToKICAgICBjYXNlIG9w
X2JpdGFuZDoKICAgICBjYXNlIG9wX2JpdG9yOgogICAgIGNhc2Ugb3BfYml0eG9yOgpAQCAtMTE0
LDggKzExMiw2IEBAIGlubGluZSBib29sIGNhbkNvbXBpbGVPcGNvZGUoT3Bjb2RlSUQgb3Bjb2Rl
SUQpCiAgICAgY2FzZSBvcF9jYWxsX3B1dF9yZXN1bHQ6CiAgICAgY2FzZSBvcF9yZXNvbHZlOgog
ICAgIGNhc2Ugb3BfcmVzb2x2ZV9iYXNlOgotICAgIGNhc2Ugb3BfdGhyb3c6Ci0gICAgY2FzZSBv
cF90aHJvd19yZWZlcmVuY2VfZXJyb3I6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGRlZmF1
bHQ6CiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHR1BSSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHUFJJ
bmZvLmgKaW5kZXggN2RlNzRjZjhkMjllNTIxMTE5MTY0MmIwZTI2OTFiZTE0NzE5ZDcxNC4uYjU1
YzdiZTFhYjEwYzhjYmNmNmIwMTc5MzJkMjU0YmU5OThlMTE2NyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHUFJJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdHUFJJbmZvLmgKQEAgLTM2LDcyICszNiwxMiBAQCBuYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIERGRyB7CiB0eXBlZGVmIE1hY3JvQXNzZW1ibGVyOjpSZWdpc3RlcklEIEdQUlJl
ZzsKICNkZWZpbmUgSW52YWxpZEdQUlJlZyAoKEdQUlJlZyktMSkKIAotI2lmIENQVShYODYpCi0K
LWNsYXNzIEdQUkluZm8gewotcHVibGljOgotICAgIHR5cGVkZWYgR1BSUmVnIFJlZ2lzdGVyVHlw
ZTsKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbnVtYmVyT2ZSZWdpc3RlcnMgPSA0OwotCi0g
ICAgLy8gVGhlc2UgcmVnaXN0ZXJzIG1hdGNoIHRoZSBiYXNlbGluZSBKSVQuCi0gICAgc3RhdGlj
IGNvbnN0IEdQUlJlZyBjYWNoZWRSZXN1bHRSZWdpc3RlciA9IFg4NlJlZ2lzdGVyczo6ZWF4Owot
ICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgdGltZW91dENoZWNrUmVnaXN0ZXIgPSBYODZSZWdpc3Rl
cnM6OmVzaTsKLSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGNhbGxGcmFtZVJlZ2lzdGVyID0gWDg2
UmVnaXN0ZXJzOjplZGk7Ci0gICAgLy8gVGVtcG9yYXJ5IHJlZ2lzdGVycy4KLSAgICBzdGF0aWMg
Y29uc3QgR1BSUmVnIHJlZ1QwID0gWDg2UmVnaXN0ZXJzOjplYXg7Ci0gICAgc3RhdGljIGNvbnN0
IEdQUlJlZyByZWdUMSA9IFg4NlJlZ2lzdGVyczo6ZWR4OwotICAgIHN0YXRpYyBjb25zdCBHUFJS
ZWcgcmVnVDIgPSBYODZSZWdpc3RlcnM6OmVjeDsKLSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJl
Z1QzID0gWDg2UmVnaXN0ZXJzOjplYng7Ci0gICAgLy8gVGhlc2UgY29uc3RhbnRzIHByb3ZpZGUg
dGhlIG5hbWVzIGZvciB0aGUgZ2VuZXJhbCBwdXJwb3NlIGFyZ3VtZW50ICYgcmV0dXJuIHZhbHVl
IHJlZ2lzdGVycy4KLSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGFyZ3VtZW50R1BSMCA9IFg4NlJl
Z2lzdGVyczo6ZWN4OyAvLyByZWdUMgotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgYXJndW1lbnRH
UFIxID0gWDg2UmVnaXN0ZXJzOjplZHg7IC8vIHJlZ1QxCi0gICAgc3RhdGljIGNvbnN0IEdQUlJl
ZyByZXR1cm5WYWx1ZUdQUiA9IFg4NlJlZ2lzdGVyczo6ZWF4OyAvLyByZWdUMAotICAgIHN0YXRp
YyBjb25zdCBHUFJSZWcgcmV0dXJuVmFsdWVHUFIyID0gWDg2UmVnaXN0ZXJzOjplZHg7IC8vIHJl
Z1QxCi0KLSAgICBzdGF0aWMgR1BSUmVnIHRvUmVnaXN0ZXIodW5zaWduZWQgaW5kZXgpCi0gICAg
ewotICAgICAgICBBU1NFUlQoaW5kZXggPCBudW1iZXJPZlJlZ2lzdGVycyk7Ci0gICAgICAgIHN0
YXRpYyBjb25zdCBHUFJSZWcgcmVnaXN0ZXJGb3JJbmRleFtudW1iZXJPZlJlZ2lzdGVyc10gPSB7
IHJlZ1QwLCByZWdUMSwgcmVnVDIsIHJlZ1QzLCB9OwotICAgICAgICByZXR1cm4gcmVnaXN0ZXJG
b3JJbmRleFtpbmRleF07Ci0gICAgfQotCi0gICAgc3RhdGljIHVuc2lnbmVkIHRvSW5kZXgoR1BS
UmVnIHJlZykKLSAgICB7Ci0gICAgICAgIEFTU0VSVChyZWcgIT0gSW52YWxpZEdQUlJlZyk7Ci0g
ICAgICAgIEFTU0VSVChyZWcgPCA4KTsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGlu
ZGV4Rm9yUmVnaXN0ZXJbOF0gPSB7IDAsIDIsIDEsIDMsIEludmFsaWRJbmRleCwgSW52YWxpZElu
ZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCB9OwotICAgICAgICB1bnNpZ25lZCByZXN1
bHQgPSBpbmRleEZvclJlZ2lzdGVyW3JlZ107Ci0gICAgICAgIEFTU0VSVChyZXN1bHQgIT0gSW52
YWxpZEluZGV4KTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0KLSNpZm5kZWYgTkRF
QlVHCi0gICAgc3RhdGljIGNvbnN0IGNoYXIqIGRlYnVnTmFtZShHUFJSZWcgcmVnKQotICAgIHsK
LSAgICAgICAgQVNTRVJUKHJlZyAhPSBJbnZhbGlkR1BSUmVnKTsKLSAgICAgICAgQVNTRVJUKHJl
ZyA8IDgpOwotICAgICAgICBzdGF0aWMgY29uc3QgY2hhciogbmFtZUZvclJlZ2lzdGVyWzhdID0g
ewotICAgICAgICAgICAgInJheCIsICJyY3giLCAicmR4IiwgInJieCIsCi0gICAgICAgICAgICAi
cnNwIiwgInJicCIsICJyc2kiLCAicmRpIiwKLSAgICAgICAgfTsKLSAgICAgICAgcmV0dXJuIG5h
bWVGb3JSZWdpc3RlcltyZWddOwotICAgIH0KLSNlbmRpZgotcHJpdmF0ZToKLQotICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBJbnZhbGlkSW5kZXggPSAweGZmZmZmZmZmOwotfTsKLQotI2VuZGlm
Ci0KLSNpZiBDUFUoWDg2XzY0KQotCiBjbGFzcyBHUFJJbmZvIHsKIHB1YmxpYzoKICAgICB0eXBl
ZGVmIEdQUlJlZyBSZWdpc3RlclR5cGU7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG51bWJl
ck9mUmVnaXN0ZXJzID0gOTsKIAotICAgIC8vIFRoZXNlIHJlZ2lzdGVycyBtYXRjaCB0aGUgYmFz
ZWxpbmUgSklULgorICAgIC8vIFRoZXNlIHJlZ2lzdGVycyBtYXRjaCB0aGUgb2xkIEpJVC4KICAg
ICBzdGF0aWMgY29uc3QgR1BSUmVnIGNhY2hlZFJlc3VsdFJlZ2lzdGVyID0gWDg2UmVnaXN0ZXJz
OjplYXg7CiAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyB0aW1lb3V0Q2hlY2tSZWdpc3RlciA9IFg4
NlJlZ2lzdGVyczo6cjEyOwogICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgY2FsbEZyYW1lUmVnaXN0
ZXIgPSBYODZSZWdpc3RlcnM6OnIxMzsKQEAgLTE2MSw4ICsxMDEsNiBAQCBwcml2YXRlOgogICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBJbnZhbGlkSW5kZXggPSAweGZmZmZmZmZmOwogfTsKIAot
I2VuZGlmCi0KIHR5cGVkZWYgUmVnaXN0ZXJCYW5rPEdQUkluZm8+OjppdGVyYXRvciBncHJfaXRl
cmF0b3I7CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKaW5kZXggNTJkMzE1N2RkYjUyMGIzNmQ2NzZiOTNm
MTZhMTRhM2MzZTg1MWU0ZC4uNmQ1YzJmOTg1NzY3ODkxNzIzYjU2MzQ1NzY3MDA0OWU1ZjNmMWE5
ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKQEAg
LTQwOCw5ICs0MDgsNiBAQCB2b2lkIEpJVENvbXBpbGVyOjpleGl0U3BlY3VsYXRpdmVXaXRoT1NS
KGNvbnN0IE9TUkV4aXQmIGV4aXQsIFNwZWN1bGF0aW9uUmVjb3ZlcgogICAgIC8vICAgICAgICAg
ZW50cnksIHNpbmNlIGJvdGggZm9ybXMgb2YgT1NSIGFyZSBleHBlbnNpdmUuIE9TUiBlbnRyeSBp
cwogICAgIC8vICAgICAgICAgcGFydGljdWxhcmx5IGV4cGVuc2l2ZS4KICAgICAvLwotICAgIC8v
ICAgICAoZCkgRnJlcXVlbnQgT1NSIGZhaWx1cmVzLCBldmVuIHRob3NlIHRoYXQgZG8gbm90IHJl
c3VsdCBpbiB0aGUgY29kZQotICAgIC8vICAgICAgICAgcnVubmluZyBpbiBhIGhvdCBsb29wLCBy
ZXN1bHQgaW4gcmVjb21waWxhdGlvbiBnZXR0aW5nIHRyaWdnZXJlZC4KLSAgICAvLwogICAgIC8v
ICAgICBUbyBlbnN1cmUgKGMpLCB3ZSdkIGxpa2UgdG8gc2V0IHRoZSBleGVjdXRlIGNvdW50ZXIg
dG8KICAgICAvLyAgICAgY291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlcldhcm1VcCgpLiBUaGlz
IHNlZW1zIGxpa2UgaXQgd291bGQgZW5kYW5nZXIKICAgICAvLyAgICAgKGEpIGFuZCAoYiksIHNp
bmNlIHRoZW4gZXZlcnkgT1NSIGV4aXQgd291bGQgZGVsYXkgdGhlIG9wcG9ydHVuaXR5IGZvcgpA
QCAtNDE4LDQwICs0MTUsMTEgQEAgdm9pZCBKSVRDb21waWxlcjo6ZXhpdFNwZWN1bGF0aXZlV2l0
aE9TUihjb25zdCBPU1JFeGl0JiBleGl0LCBTcGVjdWxhdGlvblJlY292ZXIKICAgICAvLyAgICAg
ZnJlcXVlbnRseSBhbmQgdGhlIGZ1bmN0aW9uIGhhcyBmZXcgbG9vcHMsIHRoZW4gdGhlIGNvdW50
ZXIgd2lsbCBuZXZlcgogICAgIC8vICAgICBiZWNvbWUgbm9uLW5lZ2F0aXZlIGFuZCBPU1IgZW50
cnkgd2lsbCBuZXZlciBiZSB0cmlnZ2VyZWQuIE9TUiBlbnRyeQogICAgIC8vICAgICB3aWxsIG9u
bHkgaGFwcGVuIGlmIGEgbG9vcCBnZXRzIGhvdCBpbiB0aGUgb2xkIEpJVCwgd2hpY2ggZG9lcyBh
IHByZXR0eQotICAgIC8vICAgICBnb29kIGpvYiBvZiBlbnN1cmluZyAoYSkgYW5kIChiKS4gQnV0
IHRoYXQgZG9lc24ndCB0YWtlIGNhcmUgb2YgKGQpLAotICAgIC8vICAgICBzaW5jZSBlYWNoIHNw
ZWN1bGF0aW9uIGZhaWx1cmUgd291bGQgcmVzZXQgdGhlIGV4ZWN1dGUgY291bnRlci4KLSAgICAv
LyAgICAgU28gd2UgY2hlY2sgaGVyZSBpZiB0aGUgbnVtYmVyIG9mIHNwZWN1bGF0aW9uIGZhaWx1
cmVzIGlzIHNpZ25pZmljYW50bHkKLSAgICAvLyAgICAgbGFyZ2VyIHRoYW4gdGhlIG51bWJlciBv
ZiBzdWNjZXNzZXMgKHdlIHdhbnQgOTAlIHN1Y2Nlc3MgcmF0ZSksIGFuZCBpZgotICAgIC8vICAg
ICB0aGVyZSBoYXZlIGJlZW4gYSBsYXJnZSBlbm91Z2ggbnVtYmVyIG9mIGZhaWx1cmVzLiBJZiBz
bywgd2Ugc2V0IHRoZQotICAgIC8vICAgICBjb3VudGVyIHRvIDA7IG90aGVyd2lzZSB3ZSBzZXQg
dGhlIGNvdW50ZXIgdG8KLSAgICAvLyAgICAgY291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlcldh
cm1VcCgpLgotICAgIAotICAgIG1vdmUoVHJ1c3RlZEltbVB0cihjb2RlQmxvY2soKSksIEdQUklu
Zm86OnJlZ1QwKTsKLSAgICAKLSAgICBsb2FkMzIoQWRkcmVzcyhHUFJJbmZvOjpyZWdUMCwgQ29k
ZUJsb2NrOjpvZmZzZXRPZlNwZWN1bGF0aXZlRmFpbENvdW50ZXIoKSksIEdQUkluZm86OnJlZ1Qy
KTsKLSAgICBsb2FkMzIoQWRkcmVzcyhHUFJJbmZvOjpyZWdUMCwgQ29kZUJsb2NrOjpvZmZzZXRP
ZlNwZWN1bGF0aXZlU3VjY2Vzc0NvdW50ZXIoKSksIEdQUkluZm86OnJlZ1QxKTsKLSAgICBhZGQz
MihJbW0zMigxKSwgR1BSSW5mbzo6cmVnVDIpOwotICAgIGFkZDMyKEltbTMyKC0xKSwgR1BSSW5m
bzo6cmVnVDEpOwotICAgIHN0b3JlMzIoR1BSSW5mbzo6cmVnVDIsIEFkZHJlc3MoR1BSSW5mbzo6
cmVnVDAsIENvZGVCbG9jazo6b2Zmc2V0T2ZTcGVjdWxhdGl2ZUZhaWxDb3VudGVyKCkpKTsKLSAg
ICBzdG9yZTMyKEdQUkluZm86OnJlZ1QxLCBBZGRyZXNzKEdQUkluZm86OnJlZ1QwLCBDb2RlQmxv
Y2s6Om9mZnNldE9mU3BlY3VsYXRpdmVTdWNjZXNzQ291bnRlcigpKSk7Ci0gICAgCi0gICAgbW92
ZShUcnVzdGVkSW1tUHRyKGNvZGVCbG9jaygpLT5hbHRlcm5hdGl2ZSgpKSwgR1BSSW5mbzo6cmVn
VDApOwotICAgIAotICAgIEp1bXAgZmV3RmFpbHMgPSBicmFuY2gzMihCZWxvd09yRXF1YWwsIEdQ
UkluZm86OnJlZ1QyLCBJbW0zMihjb2RlQmxvY2soKS0+bGFyZ2VGYWlsQ291bnRUaHJlc2hvbGQo
KSkpOwotICAgIG11bDMyKEltbTMyKGNvZGVCbG9jaygpLT5kZXNpcmVkU3VjY2Vzc0ZhaWxSYXRp
bygpKSwgR1BSSW5mbzo6cmVnVDIsIEdQUkluZm86OnJlZ1QyKTsKLSAgICAKLSAgICBKdW1wIGxv
d0ZhaWxSYXRlID0gYnJhbmNoMzIoQmVsb3dPckVxdWFsLCBHUFJJbmZvOjpyZWdUMiwgR1BSSW5m
bzo6cmVnVDEpOworICAgIC8vICAgICBnb29kIGpvYiBvZiBlbnN1cmluZyAoYSkgYW5kIChiKS4g
VGhpcyBoZXVyaXN0aWMgbWF5IG5lZWQgdG8gYmUKKyAgICAvLyAgICAgcmV0aG91Z2h0IGluIHRo
ZSBmdXR1cmUsIHBhcnRpY3VsYXJseSBpZiB3ZSBzdXBwb3J0IHJlb3B0aW1pemluZyBjb2RlCisg
ICAgLy8gICAgIHdpdGggbmV3IHZhbHVlIHByb2ZpbGVzIGdhdGhlcmVkIGZyb20gY29kZSB0aGF0
IGRpZCBPU1IgZXhpdC4KICAgICAKLSAgICAvLyBSZW9wdGltaXplIGFzIHNvb24gYXMgcG9zc2li
bGUuCi0gICAgc3RvcmUzMihJbW0zMihDb2RlQmxvY2s6OmNvdW50ZXJWYWx1ZUZvck9wdGltaXpl
TmV4dEludm9jYXRpb24oKSksIEFkZHJlc3MoR1BSSW5mbzo6cmVnVDAsIENvZGVCbG9jazo6b2Zm
c2V0T2ZFeGVjdXRlQ291bnRlcigpKSk7Ci0gICAgSnVtcCBkb25lQWRqdXN0aW5nID0ganVtcCgp
OwotICAgIAotICAgIGZld0ZhaWxzLmxpbmsodGhpcyk7Ci0gICAgbG93RmFpbFJhdGUubGluayh0
aGlzKTsKLSAgICAKLSAgICBzdG9yZTMyKEltbTMyKGNvZGVCbG9jaygpLT5hbHRlcm5hdGl2ZSgp
LT5jb3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcCgpKSwgQWRkcmVzcyhHUFJJ
bmZvOjpyZWdUMCwgQ29kZUJsb2NrOjpvZmZzZXRPZkV4ZWN1dGVDb3VudGVyKCkpKTsKLSAgICAK
LSAgICBkb25lQWRqdXN0aW5nLmxpbmsodGhpcyk7CisgICAgc3RvcmUzMihJbW0zMihjb2RlQmxv
Y2soKS0+YWx0ZXJuYXRpdmUoKS0+Y291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlcldhcm1VcCgp
KSwgY29kZUJsb2NrKCktPmFsdGVybmF0aXZlKCktPmFkZHJlc3NPZkV4ZWN1dGVDb3VudGVyKCkp
OwogICAgIAogICAgIC8vIDEyKSBMb2FkIHRoZSByZXN1bHQgb2YgdGhlIGxhc3QgYnl0ZWNvZGUg
b3BlcmF0aW9uIGludG8gcmVnVDAuCiAgICAgCkBAIC01MTMsOCArNDgxLDYgQEAgdm9pZCBKSVRD
b21waWxlcjo6Y29tcGlsZUVudHJ5KCkKICAgICAvLyBib3RoIG5vcm1hbCByZXR1cm4gY29kZSBh
bmQgd2hlbiBqdW1waW5nIHRvIGFuIGV4Y2VwdGlvbiBoYW5kbGVyKS4KICAgICBwcmVzZXJ2ZVJl
dHVybkFkZHJlc3NBZnRlckNhbGwoR1BSSW5mbzo6cmVnVDIpOwogICAgIGVtaXRQdXRUb0NhbGxG
cmFtZUhlYWRlcihHUFJJbmZvOjpyZWdUMiwgUmVnaXN0ZXJGaWxlOjpSZXR1cm5QQyk7Ci0gICAg
Ci0gICAgYWRkUHRyKEltbTMyKDEpLCBBYnNvbHV0ZUFkZHJlc3MoY29kZUJsb2NrKCktPmFkZHJl
c3NPZlNwZWN1bGF0aXZlU3VjY2Vzc0NvdW50ZXIoKSkpOwogfQogCiB2b2lkIEpJVENvbXBpbGVy
Ojpjb21waWxlQm9keSgpCkBAIC01MzIsNiArNDk4LDEwIEBAIHZvaWQgSklUQ29tcGlsZXI6OmNv
bXBpbGVCb2R5KCkKICAgICBib29sIGNvbXBpbGVkU3BlY3VsYXRpdmUgPSBzcGVjdWxhdGl2ZS5j
b21waWxlKCk7CiAgICAgQVNTRVJUX1VOVVNFRChjb21waWxlZFNwZWN1bGF0aXZlLCBjb21waWxl
ZFNwZWN1bGF0aXZlKTsKIAorI2lmIEVOQUJMRShERkdfT1NSX0VOVFJZKQorICAgIG1fY29kZUJs
b2NrLT5zZXRKSVRDb2RlTWFwKG1faml0Q29kZU1hcEVuY29kZXIuZmluaXNoKCkpOworI2VuZGlm
CisgICAgCiAgICAgbGlua09TUkV4aXRzKHNwZWN1bGF0aXZlKTsKIAogICAgIC8vIEl0ZXJhdGUg
b3ZlciB0aGUgbV9jYWxscyB2ZWN0b3IsIGNoZWNraW5nIGZvciBleGNlcHRpb24gY2hlY2tzLApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCmluZGV4IDkwZmE2OGE2
MWY2ZGUxMGY4MzFhMjUyM2NjMjA3M2QxMTg4Y2Y1MmYuLmM2ZTFkMzZmZmJlMDc1NTlhZDgwMzI0
ZWE2NDkwODJiM2U4YTc2ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHSklUQ29tcGlsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENv
bXBpbGVyLmgKQEAgLTMyMCw0NiArMzIwLDcgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgbm90
aWNlT1NSRW50cnkoQmFzaWNCbG9jayYgYmFzaWNCbG9jaykKICAgICB7Ci0jaWYgRU5BQkxFKERG
R19PU1JfRU5UUlkpCi0gICAgICAgIE9TUkVudHJ5RGF0YSogZW50cnkgPSBjb2RlQmxvY2soKS0+
YXBwZW5kREZHT1NSRW50cnlEYXRhKGJhc2ljQmxvY2suYnl0ZWNvZGVCZWdpbiwgZGlmZmVyZW5j
ZUJldHdlZW4obV9zdGFydE9mQ29kZSwgbGFiZWwoKSkpOwotICAgICAgICAKLSAgICAgICAgdW5z
aWduZWQgbGFzdExpdmVBcmd1bWVudCA9IDA7Ci0gICAgICAgIHVuc2lnbmVkIGxhc3RMaXZlTG9j
YWwgPSAwOwotICAgICAgICAKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJhc2lj
QmxvY2subV9hcmd1bWVudHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIGlmIChiYXNpY0Js
b2NrLm1fYXJndW1lbnRzW2ldLnZhbHVlICE9IE5vTm9kZSkKLSAgICAgICAgICAgICAgICBsYXN0
TGl2ZUFyZ3VtZW50ID0gaTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IGJhc2ljQmxvY2subV9sb2NhbHMuc2l6ZSgpOyArK2kpIHsKLSAgICAg
ICAgICAgIGlmIChiYXNpY0Jsb2NrLm1fbG9jYWxzW2ldLnZhbHVlICE9IE5vTm9kZSkKLSAgICAg
ICAgICAgICAgICBsYXN0TGl2ZUxvY2FsID0gaTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAg
ICAgaWYgKGxhc3RMaXZlQXJndW1lbnQpIHsKLSAgICAgICAgICAgIGVudHJ5LT5tX2xpdmVBcmd1
bWVudHMucmVzaXplKGxhc3RMaXZlQXJndW1lbnQgKyAxKTsKLSAgICAgICAgICAgIGVudHJ5LT5t
X2xpdmVBcmd1bWVudHMuY2xlYXJBbGwoKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8PSBsYXN0TGl2ZUFyZ3VtZW50OyArK2kpIHsKLSAgICAgICAg
ICAgICAgICBpZiAoYmFzaWNCbG9jay5tX2FyZ3VtZW50c1tpXS52YWx1ZSAhPSBOb05vZGUpCi0g
ICAgICAgICAgICAgICAgICAgIGVudHJ5LT5tX2xpdmVBcmd1bWVudHMuc2V0KGkpOwotICAgICAg
ICAgICAgfQotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGVudHJ5LT5tX2xpdmVBcmd1bWVu
dHMuY2xlYXJBbGwoKTsKLSAgICAgICAgCi0gICAgICAgIGlmIChsYXN0TGl2ZUxvY2FsKSB7Ci0g
ICAgICAgICAgICBlbnRyeS0+bV9saXZlVmFyaWFibGVzLnJlc2l6ZShsYXN0TGl2ZUxvY2FsICsg
MSk7Ci0gICAgICAgICAgICBlbnRyeS0+bV9saXZlVmFyaWFibGVzLmNsZWFyQWxsKCk7Ci0gICAg
ICAgICAgICAKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPD0gbGFzdExpdmVM
b2NhbDsgKytpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGJhc2ljQmxvY2subV9sb2NhbHNbaV0u
dmFsdWUgIT0gTm9Ob2RlKQotICAgICAgICAgICAgICAgICAgICBlbnRyeS0+bV9saXZlVmFyaWFi
bGVzLnNldChpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBl
bnRyeS0+bV9saXZlVmFyaWFibGVzLmNsZWFyQWxsKCk7Ci0jZWxzZQotICAgICAgICBVTlVTRURf
UEFSQU0oYmFzaWNCbG9jayk7Ci0jZW5kaWYKKyAgICAgICAgbV9qaXRDb2RlTWFwRW5jb2Rlci5h
cHBlbmQoYmFzaWNCbG9jay5ieXRlY29kZUJlZ2luLCBkaWZmZXJlbmNlQmV0d2VlbihtX3N0YXJ0
T2ZDb2RlLCBsYWJlbCgpKSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtMzkyLDYgKzM1Myw3IEBA
IHByaXZhdGU6CiAgICAgCiAgICAgLy8gSklUIGNvZGUgbWFwIGZvciBPU1IgZW50cnlwb2ludHMu
CiAgICAgTGFiZWwgbV9zdGFydE9mQ29kZTsKKyAgICBDb21wYWN0SklUQ29kZU1hcDo6RW5jb2Rl
ciBtX2ppdENvZGVNYXBFbmNvZGVyOwogCiAgICAgc3RydWN0IFByb3BlcnR5QWNjZXNzUmVjb3Jk
IHsKICAgICAgICAgUHJvcGVydHlBY2Nlc3NSZWNvcmQoQ2FsbCBmdW5jdGlvbkNhbGwsIGludDE2
X3QgZGVsdGFDaGVja0ltbVRvQ2FsbCwgaW50MTZfdCBkZWx0YUNhbGxUb1N0cnVjdENoZWNrLCBp
bnQxNl90IGRlbHRhQ2FsbFRvTG9hZE9yU3RvcmUsIGludDE2X3QgZGVsdGFDYWxsVG9TbG93Q2Fz
ZSwgaW50MTZfdCBkZWx0YUNhbGxUb0RvbmUsIGludDhfdCBiYXNlR1BSLCBpbnQ4X3QgdmFsdWVH
UFIsIGludDhfdCBzY3JhdGNoR1BSKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAppbmRl
eCA4MGU5MGM1NGE3ZmE4ZjViN2ZhM2ZlMmFiZTQyMzlkZDg1Y2VjODdhLi5iNTY3ZjQ3YzJhYzI2
ZDk4MzhiZDZlZjkzYmFiNzdjZGYwMTUzYjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR05vZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05v
ZGUuaApAQCAtMjExLDExICsyMTEsNyBAQCBzdGF0aWMgaW5saW5lIGNvbnN0IGNoYXIqIGFyaXRo
Tm9kZUZsYWdzQXNTdHJpbmcoQXJpdGhOb2RlRmxhZ3MgZmxhZ3MpCiAjZGVmaW5lIEZPUl9FQUNI
X0RGR19PUChtYWNybykgXAogICAgIC8qIE5vZGVzIGZvciBjb25zdGFudHMuICovXAogICAgIG1h
Y3JvKEpTQ29uc3RhbnQsIE5vZGVSZXN1bHRKUykgXAotICAgIFwKLSAgICAvKiBOb2RlcyBmb3Ig
aGFuZGxpbmcgZnVuY3Rpb25zIChib3RoIGFzIGNhbGwgYW5kIGFzIGNvbnN0cnVjdCkuICovXAog
ICAgIG1hY3JvKENvbnZlcnRUaGlzLCBOb2RlUmVzdWx0SlMpIFwKLSAgICBtYWNybyhDcmVhdGVU
aGlzLCBOb2RlUmVzdWx0SlMpIC8qIE5vdGUgdGhpcyBpcyBub3QgTXVzdEdlbmVyYXRlIHNpbmNl
IHdlJ3JlIHJldHVybmluZyBpdCBhbnl3YXkuICovIFwKLSAgICBtYWNybyhHZXRDYWxsZWUsIE5v
ZGVSZXN1bHRKUykgXAogICAgIFwKICAgICAvKiBOb2RlcyBmb3IgbG9jYWwgdmFyaWFibGUgYWNj
ZXNzLiAqL1wKICAgICBtYWNybyhHZXRMb2NhbCwgTm9kZVJlc3VsdEpTKSBcCkBAIC0yOTcsOSAr
MjkzLDcgQEAgc3RhdGljIGlubGluZSBjb25zdCBjaGFyKiBhcml0aE5vZGVGbGFnc0FzU3RyaW5n
KEFyaXRoTm9kZUZsYWdzIGZsYWdzKQogICAgIC8qIEJsb2NrIHRlcm1pbmFscy4gKi9cCiAgICAg
bWFjcm8oSnVtcCwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVJc1Rlcm1pbmFsIHwgTm9kZUlzSnVt
cCkgXAogICAgIG1hY3JvKEJyYW5jaCwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVJc1Rlcm1pbmFs
IHwgTm9kZUlzQnJhbmNoKSBcCi0gICAgbWFjcm8oUmV0dXJuLCBOb2RlTXVzdEdlbmVyYXRlIHwg
Tm9kZUlzVGVybWluYWwpIFwKLSAgICBtYWNybyhUaHJvdywgTm9kZU11c3RHZW5lcmF0ZSB8IE5v
ZGVJc1Rlcm1pbmFsKSBcCi0gICAgbWFjcm8oVGhyb3dSZWZlcmVuY2VFcnJvciwgTm9kZU11c3RH
ZW5lcmF0ZSB8IE5vZGVJc1Rlcm1pbmFsKQorICAgIG1hY3JvKFJldHVybiwgTm9kZU11c3RHZW5l
cmF0ZSB8IE5vZGVJc1Rlcm1pbmFsKQogCiAvLyBUaGlzIGVudW0gZ2VuZXJhdGVzIGEgbW9ub3Rv
bmljYWxseSBpbmNyZWFzaW5nIGlkIGZvciBhbGwgTm9kZSB0eXBlcywKIC8vIGFuZCBpcyB1c2Vk
IGJ5IHRoZSBzdWJzZXF1ZW50IGVudW0gdG8gZmlsbCBvdXQgdGhlIGlkIChhcyBhY2Nlc3NlZCB2
aWEgdGhlIE5vZGVJZE1hc2spLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPU1JFbnRyeS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5
LmNwcAppbmRleCBkZTliM2E0OGQyOTY2MzFjMzRhNWExNTA1ZGFhM2JlOGE3NTA5OWMxLi40Mjg5
Y2JjOWU3ZjFiZDZmOTdhOWQ1OWQ5M2E0M2Y3OTI3MDQzNTYwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09TUkVudHJ5LmNwcApAQCAtNTgsOCArNTgsNyBAQCB2b2lkKiBwcmVwYXJl
T1NSRW50cnkoRXhlY1N0YXRlKiBleGVjLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgdW5zaWduZWQg
Ynl0ZWNvZGVJbgogICAgIEFTU0VSVChjb2RlQmxvY2stPmdldEpJVFR5cGUoKSA9PSBKSVRDb2Rl
OjpERkdKSVQpOwogICAgIEFTU0VSVChjb2RlQmxvY2stPmFsdGVybmF0aXZlKCkpOwogICAgIEFT
U0VSVChjb2RlQmxvY2stPmFsdGVybmF0aXZlKCktPmdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpC
YXNlbGluZUpJVCk7Ci0gICAgQVNTRVJUKCFjb2RlQmxvY2stPmppdENvZGVNYXAoKSk7Ci0gICAg
QVNTRVJUKGNvZGVCbG9jay0+bnVtYmVyT2ZERkdPU1JFbnRyaWVzKCkpOworICAgIEFTU0VSVChj
b2RlQmxvY2stPmppdENvZGVNYXAoKSk7CiAKICNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQog
ICAgIHByaW50ZigiT1NSIGluICVwKCVwKSBmcm9tIGJjIyV1XG4iLCBjb2RlQmxvY2ssIGNvZGVC
bG9jay0+YWx0ZXJuYXRpdmUoKSwgYnl0ZWNvZGVJbmRleCk7CkBAIC02Nyw5ICs2Niw2IEBAIHZv
aWQqIHByZXBhcmVPU1JFbnRyeShFeGVjU3RhdGUqIGV4ZWMsIENvZGVCbG9jayogY29kZUJsb2Nr
LCB1bnNpZ25lZCBieXRlY29kZUluCiAgICAgCiAgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRh
ID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2Nr
ID0gY29kZUJsb2NrLT5hbHRlcm5hdGl2ZSgpOwotICAgIE9TUkVudHJ5RGF0YSogZW50cnkgPSBj
b2RlQmxvY2stPmRmZ09TUkVudHJ5RGF0YUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCk7
Ci0gICAgCi0gICAgQVNTRVJUKGVudHJ5LT5tX2J5dGVjb2RlSW5kZXggPT0gYnl0ZWNvZGVJbmRl
eCk7CiAgICAgCiAgICAgLy8gVGhlIGNvZGUgYmVsb3cgY2hlY2tzIGlmIGl0IGlzIHNhZmUgdG8g
cGVyZm9ybSBPU1IgZW50cnkuIEl0IG1heSBmaW5kCiAgICAgLy8gdGhhdCBpdCBpcyB1bnNhZmUg
dG8gZG8gc28sIGZvciBhbnkgbnVtYmVyIG9mIHJlYXNvbnMsIHdoaWNoIGFyZSBkb2N1bWVudGVk
CkBAIC0xMDEsOCArOTcsNyBAQCB2b2lkKiBwcmVwYXJlT1NSRW50cnkoRXhlY1N0YXRlKiBleGVj
LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbgogICAgICAgICByZXR1
cm4gMDsKICAgICAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgcHJlZGljdGlvbnMtPm51
bWJlck9mQXJndW1lbnRzKCk7ICsraSkgewotICAgICAgICBpZiAoaSA8IGVudHJ5LT5tX2xpdmVB
cmd1bWVudHMuc2l6ZSgpICYmIGVudHJ5LT5tX2xpdmVBcmd1bWVudHMuZ2V0KGkpCi0gICAgICAg
ICAgICAmJiAhcHJlZGljdGlvbklzVmFsaWQoZ2xvYmFsRGF0YSwgZXhlYy0+YXJndW1lbnQoaSAt
IDEpLCBwcmVkaWN0aW9ucy0+Z2V0QXJndW1lbnRQcmVkaWN0aW9uKGkpKSkgeworICAgICAgICBp
ZiAoIXByZWRpY3Rpb25Jc1ZhbGlkKGdsb2JhbERhdGEsIGV4ZWMtPmFyZ3VtZW50KGkgLSAxKSwg
cHJlZGljdGlvbnMtPmdldEFyZ3VtZW50UHJlZGljdGlvbihpKSkpIHsKICNpZiBFTkFCTEUoSklU
X1ZFUkJPU0VfT1NSKQogICAgICAgICAgICAgcHJpbnRmKCIgICAgT1NSIGZhaWxlZCBiZWNhdXNl
IGFyZ3VtZW50ICV1IGlzICVzLCBleHBlY3RlZCAlcy5cbiIsIGksIGV4ZWMtPmFyZ3VtZW50KGkg
LSAxKS5kZXNjcmlwdGlvbigpLCBwcmVkaWN0aW9uVG9TdHJpbmcocHJlZGljdGlvbnMtPmdldEFy
Z3VtZW50UHJlZGljdGlvbihpKSkpOwogI2VuZGlmCkBAIC0xMTAsOSArMTA1LDExIEBAIHZvaWQq
IHByZXBhcmVPU1JFbnRyeShFeGVjU3RhdGUqIGV4ZWMsIENvZGVCbG9jayogY29kZUJsb2NrLCB1
bnNpZ25lZCBieXRlY29kZUluCiAgICAgICAgIH0KICAgICB9CiAgICAgCisgICAgLy8gRklYTUU6
IHdlIG5lZWQgdG8ga25vdyBpZiBhdCBhbiBPU1IgZW50cnksIGEgdmFyaWFibGUgaXMgbGl2ZS4g
SWYgaXQgaXNuJ3QKKyAgICAvLyB0aGVuIHdlIHNob3VsZG4ndCB0cnkgdG8gdmVyaWZ5IGl0cyBw
cmVkaWN0aW9uLgorICAgIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwcmVkaWN0aW9u
cy0+bnVtYmVyT2ZWYXJpYWJsZXMoKTsgKytpKSB7Ci0gICAgICAgIGlmIChpIDwgZW50cnktPm1f
bGl2ZVZhcmlhYmxlcy5zaXplKCkgJiYgZW50cnktPm1fbGl2ZVZhcmlhYmxlcy5nZXQoaSkKLSAg
ICAgICAgICAgICYmICFwcmVkaWN0aW9uSXNWYWxpZChnbG9iYWxEYXRhLCBleGVjLT5yZWdpc3Rl
cnMoKVtpXS5qc1ZhbHVlKCksIHByZWRpY3Rpb25zLT5nZXRQcmVkaWN0aW9uKGkpKSkgeworICAg
ICAgICBpZiAoIXByZWRpY3Rpb25Jc1ZhbGlkKGdsb2JhbERhdGEsIGV4ZWMtPnJlZ2lzdGVycygp
W2ldLmpzVmFsdWUoKSwgcHJlZGljdGlvbnMtPmdldFByZWRpY3Rpb24oaSkpKSB7CiAjaWYgRU5B
QkxFKEpJVF9WRVJCT1NFX09TUikKICAgICAgICAgICAgIHByaW50ZigiICAgIE9TUiBmYWlsZWQg
YmVjYXVzZSB2YXJpYWJsZSAldSBpcyAlcywgZXhwZWN0ZWQgJXMuXG4iLCBpLCBleGVjLT5yZWdp
c3RlcnMoKVtpXS5qc1ZhbHVlKCkuZGVzY3JpcHRpb24oKSwgcHJlZGljdGlvblRvU3RyaW5nKHBy
ZWRpY3Rpb25zLT5nZXRQcmVkaWN0aW9uKGkpKSk7CiAjZW5kaWYKQEAgLTE0Miw5ICsxMzksMzAg
QEAgdm9pZCogcHJlcGFyZU9TUkVudHJ5KEV4ZWNTdGF0ZSogZXhlYywgQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW4KICAgICAKICAgICBleGVjLT5zZXRDb2RlQmxvY2so
Y29kZUJsb2NrKTsKICAgICAKLSAgICAvLyA0KSBGaW5kIGFuZCByZXR1cm4gdGhlIGRlc3RpbmF0
aW9uIG1hY2hpbmUgY29kZSBhZGRyZXNzLgorICAgIC8vIDQpIEZpbmQgYW5kIHJldHVybiB0aGUg
ZGVzdGluYXRpb24gbWFjaGluZSBjb2RlIGFkZHJlc3MuIFRoZSBERkcgc3RvcmVzCisgICAgLy8g
ICAgdGhlIG1hY2hpbmUgY29kZSBvZmZzZXRzIG9mIE9TUiB0YXJnZXRzIGluIGEgQ29tcGFjdEpJ
VENvZGVNYXAuCisgICAgLy8gICAgRGVjb2RpbmcgaXQgaXMgbm90IHN1cGVyIGVmZmljaWVudCwg
YnV0IHdlIGV4cGVjdCB0aGF0IE9TUiBlbnRyeQorICAgIC8vICAgIGhhcHBlbnMgc3VmZmljaWVu
dGx5IHJhcmVseSwgYW5kIHRoYXQgT1NSIGVudHJ5cG9pbnRzIGFyZSBzdWZmaWNpZW50bHkKKyAg
ICAvLyAgICBmZXcsIHRoYXQgdGhpcyB3b24ndCBodXJ0IHRocm91Z2hwdXQuIE5vdGUgdGhhdCB0
aGUgb25seSByZWFsCisgICAgLy8gICAgcmVhc29uIHdoeSB3ZSB1c2UgYSBDb21wYWN0SklUQ29k
ZU1hcCBpcyB0byBhdm9pZCBoYXZpbmcgdG8gaW50cm9kdWNlCisgICAgLy8gICAgeWV0IGFub3Ro
ZXIgZGF0YSBzdHJ1Y3R1cmUgZm9yIG1hcHBpbmcgYmV0d2VlbiBieXRlY29kZSBpbmRpY2VzIGFu
ZAorICAgIC8vICAgIG1hY2hpbmUgY29kZSBvZmZzZXRzLgorICAgIAorICAgIENvbXBhY3RKSVRD
b2RlTWFwOjpEZWNvZGVyIGRlY29kZXIoY29kZUJsb2NrLT5qaXRDb2RlTWFwKCkpOworICAgIHVu
c2lnbmVkIG1hY2hpbmVDb2RlT2Zmc2V0ID0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46
Om1heCgpOworICAgIHdoaWxlIChkZWNvZGVyLm51bWJlck9mRW50cmllc1JlbWFpbmluZygpKSB7
CisgICAgICAgIHVuc2lnbmVkIGN1cnJlbnRCeXRlY29kZUluZGV4OworICAgICAgICB1bnNpZ25l
ZCBjdXJyZW50TWFjaGluZUNvZGVPZmZzZXQ7CisgICAgICAgIGRlY29kZXIucmVhZChjdXJyZW50
Qnl0ZWNvZGVJbmRleCwgY3VycmVudE1hY2hpbmVDb2RlT2Zmc2V0KTsKKyAgICAgICAgaWYgKGN1
cnJlbnRCeXRlY29kZUluZGV4ID09IGJ5dGVjb2RlSW5kZXgpIHsKKyAgICAgICAgICAgIG1hY2hp
bmVDb2RlT2Zmc2V0ID0gY3VycmVudE1hY2hpbmVDb2RlT2Zmc2V0OworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgQVNTRVJUKG1hY2hpbmVDb2RlT2Zmc2V0
ICE9IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSk7CiAgICAgCi0gICAgdm9p
ZCogcmVzdWx0ID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVpbnRlcnByZXRfY2FzdDx1aW50
cHRyX3Q+KGNvZGVCbG9jay0+Z2V0SklUQ29kZSgpLnN0YXJ0KCkpICsgZW50cnktPm1fbWFjaGlu
ZUNvZGVPZmZzZXQpOworICAgIHZvaWQqIHJlc3VsdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+
KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pihjb2RlQmxvY2stPmdldEpJVENvZGUoKS5zdGFy
dCgpKSArIG1hY2hpbmVDb2RlT2Zmc2V0KTsKICAgICAKICNpZiBFTkFCTEUoSklUX1ZFUkJPU0Vf
T1NSKQogICAgIHByaW50ZigiICAgIE9TUiByZXR1cm5pbmcgbWFjaGluZSBjb2RlIGFkZHJlc3Mg
JXAuXG4iLCByZXN1bHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPU1JFbnRyeS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5oCmlu
ZGV4IDE5M2UwODNjZTI5NDg2ZWRhNjQ2MDRjYmExMjk3NGYzZjYxZWFlZjMuLmZiNGUyOThhYjlh
MDY4ZmQyOWIzZjY5ZWE0NzYxY2JhOTJjNmM2ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT1NSRW50cnkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09TUkVudHJ5LmgKQEAgLTI2LDggKzI2LDYgQEAKICNpZm5kZWYgREZHT1NSRW50cnlfaAog
I2RlZmluZSBERkdPU1JFbnRyeV9oCiAKLSNpbmNsdWRlIDx3dGYvQml0VmVjdG9yLmg+Ci0KIG5h
bWVzcGFjZSBKU0MgewogCiBjbGFzcyBFeGVjU3RhdGU7CkBAIC0zNiwxOCArMzQsNiBAQCBjbGFz
cyBDb2RlQmxvY2s7CiBuYW1lc3BhY2UgREZHIHsKIAogI2lmIEVOQUJMRShERkdfSklUKQotc3Ry
dWN0IE9TUkVudHJ5RGF0YSB7Ci0gICAgdW5zaWduZWQgbV9ieXRlY29kZUluZGV4OwotICAgIHVu
c2lnbmVkIG1fbWFjaGluZUNvZGVPZmZzZXQ7Ci0gICAgQml0VmVjdG9yIG1fbGl2ZUFyZ3VtZW50
czsKLSAgICBCaXRWZWN0b3IgbV9saXZlVmFyaWFibGVzOwotfTsKLQotaW5saW5lIHVuc2lnbmVk
IGdldE9TUkVudHJ5RGF0YUJ5dGVjb2RlSW5kZXgoT1NSRW50cnlEYXRhKiBvc3JFbnRyeURhdGEp
Ci17Ci0gICAgcmV0dXJuIG9zckVudHJ5RGF0YS0+bV9ieXRlY29kZUluZGV4OwotfQotCiB2b2lk
KiBwcmVwYXJlT1NSRW50cnkoRXhlY1N0YXRlKiwgQ29kZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNv
ZGVJbmRleCk7CiAjZWxzZQogaW5saW5lIHZvaWQqIHByZXBhcmVPU1JFbnRyeShFeGVjU3RhdGUq
LCBDb2RlQmxvY2sqLCB1bnNpZ25lZCkgeyByZXR1cm4gMDsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKaW5kZXggNzg2NjQwNzUxNTc4ZWUzNTUyMTY5YTQ4
ZjBjYzY5ZjNkYjliMDliMy4uNGVlODZiY2FjODFlODZlNmUzYzFiMGNkMmY3MTI1NTk3Njg4NTMx
NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCkBAIC0x
MTksMjcgKzExOSw2IEBAIEVuY29kZWRKU1ZhbHVlIG9wZXJhdGlvbkNvbnZlcnRUaGlzKEV4ZWNT
dGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wKQogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcCkudG9UaGlzT2JqZWN0KGV4ZWMpKTsK
IH0KIAotRW5jb2RlZEpTVmFsdWUgb3BlcmF0aW9uQ3JlYXRlVGhpcyhFeGVjU3RhdGUqIGV4ZWMs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcCkKLXsKLSAgICBKU0Z1bmN0aW9uKiBjb25zdHJ1Y3Rv
ciA9IGFzRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpOwotICAgIAotI2lmICFBU1NFUlRfRElTQUJM
RUQKLSAgICBDb25zdHJ1Y3REYXRhIGNvbnN0cnVjdERhdGE7Ci0gICAgQVNTRVJUKGNvbnN0cnVj
dG9yLT5nZXRDb25zdHJ1Y3REYXRhKGNvbnN0cnVjdERhdGEpID09IENvbnN0cnVjdFR5cGVKUyk7
Ci0jZW5kaWYKLSAgICAKLSAgICBKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEgPSBleGVjLT5nbG9i
YWxEYXRhKCk7Ci0gICAgCi0gICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmU7Ci0gICAgSlNWYWx1ZSBw
cm90byA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3ApOwotICAgIGlmIChwcm90by5pc09iamVj
dCgpKQotICAgICAgICBzdHJ1Y3R1cmUgPSBhc09iamVjdChwcm90byktPmluaGVyaXRvcklEKGds
b2JhbERhdGEpOwotICAgIGVsc2UKLSAgICAgICAgc3RydWN0dXJlID0gY29uc3RydWN0b3ItPnNj
b3BlKCktPmdsb2JhbE9iamVjdC0+ZW1wdHlPYmplY3RTdHJ1Y3R1cmUoKTsKLSAgICAKLSAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMsIHN0cnVjdHVy
ZSkpOwotfQotCiBFbmNvZGVkSlNWYWx1ZSBvcGVyYXRpb25WYWx1ZUFkZChFeGVjU3RhdGUqIGV4
ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIp
CiB7CiAgICAgSlNWYWx1ZSBvcDEgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCmluZGV4IDQzMzVjN2IyYjJiZjI3
MGZkZmNhZTU3ZTRmZWVlNTg4ODIwZGQ4NTguLjIwM2UxYjUxOTViY2JjMmY1OWVjYWQ3MjhjMjIy
Njc2MDliNzM3ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3Bl
cmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5o
CkBAIC01Niw3ICs1Niw2IEBAIHR5cGVkZWYgdm9pZCAqKCpQX0RGR09wZXJhdGlvbl9FKShFeGVj
U3RhdGUqKTsKIAogLy8gVGhlc2Ugcm91dGluZXMgYXJlIHByb3ZpZGUgY2FsbGJhY2tzIG91dCB0
byBDKysgaW1wbGVtZW50YXRpb25zIG9mIG9wZXJhdGlvbnMgdG9vIGNvbXBsZXggdG8gSklULgog
RW5jb2RlZEpTVmFsdWUgb3BlcmF0aW9uQ29udmVydFRoaXMoRXhlY1N0YXRlKiwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZE9wMSk7Ci1FbmNvZGVkSlNWYWx1ZSBvcGVyYXRpb25DcmVhdGVUaGlzKEV4
ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEpOwogRW5jb2RlZEpTVmFsdWUgb3Bl
cmF0aW9uVmFsdWVBZGQoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZE9wMik7CiBFbmNvZGVkSlNWYWx1ZSBvcGVyYXRpb25WYWx1ZUFk
ZE5vdE51bWJlcihFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkT3AyKTsKIEVuY29kZWRKU1ZhbHVlIG9wZXJhdGlvbkFyaXRoQWRkKEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9wYWdhdG9yLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJvcGFnYXRvci5jcHAKaW5kZXggYzYyNDM2MzMx
YWM2MjRjYWM4M2JlZGVhMGE2ZTc4NmE2Nzc1YjYzNi4uMzllMGE5Y2I2MmE5MjAyMzZjZjk1OWIy
MmFmOTQ5ZmIwNjI1ZTZmNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdQcm9wYWdhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb3Bh
Z2F0b3IuY3BwCkBAIC01MzMsMTcgKzUzMyw2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBjaGFu
Z2VkIHw9IG1lcmdlVXNlKG5vZGUuY2hpbGQxKCksIFByZWRpY3RPYmplY3RVbmtub3duIHwgU3Ry
b25nUHJlZGljdGlvblRhZyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAg
ICAgICAgCi0gICAgICAgIGNhc2UgR2V0Q2FsbGVlOiB7Ci0gICAgICAgICAgICBjaGFuZ2VkIHw9
IHNldFByZWRpY3Rpb24obWFrZVByZWRpY3Rpb24oUHJlZGljdE9iamVjdE90aGVyLCBTdHJvbmdQ
cmVkaWN0aW9uKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICAgICAg
Ci0gICAgICAgIGNhc2UgQ3JlYXRlVGhpczogewotICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJn
ZVVzZShub2RlLmNoaWxkMSgpLCBQcmVkaWN0T2JqZWN0VW5rbm93biB8IFN0cm9uZ1ByZWRpY3Rp
b25UYWcpOwotICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKG1ha2VQcmVkaWN0
aW9uKFByZWRpY3RGaW5hbE9iamVjdCwgU3Ryb25nUHJlZGljdGlvbikpOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIH0KIAogI2lmbmRlZiBOREVCVUcKICAgICAgICAgLy8gVGhlc2UgZ2V0
IGlnbm9yZWQgYmVjYXVzZSB0aGV5IGRvbid0IHJldHVybiBhbnl0aGluZy4KQEAgLTU1Miw4ICs1
NDEsNiBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIFJldHVybjoKICAgICAgICAgY2FzZSBDaGVj
a0hhc0luc3RhbmNlOgogICAgICAgICBjYXNlIFBoaToKLSAgICAgICAgY2FzZSBUaHJvdzoKLSAg
ICAgICAgY2FzZSBUaHJvd1JlZmVyZW5jZUVycm9yOgogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICAKICAgICAgICAgLy8gVGhlc2UgZ2V0IGlnbm9yZWQgYmVjYXVzZSB3ZSBkb24ndCBo
YXZlIHByb2ZpbGluZyBmb3IgdGhlbSwgeWV0LgpAQCAtMTAzMSw3ICsxMDE4LDYgQEAgcHJpdmF0
ZToKICAgICAgICAgY2FzZSBBcml0aE1pbjoKICAgICAgICAgY2FzZSBBcml0aE1heDoKICAgICAg
ICAgY2FzZSBBcml0aFNxcnQ6Ci0gICAgICAgIGNhc2UgR2V0Q2FsbGVlOgogICAgICAgICAgICAg
c2V0UmVwbGFjZW1lbnQocHVyZUNTRShub2RlKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmNwcAppbmRleCBlZTNlOWZhZjFhMzVhNTcxZGI4YWQ4OTBjOWU2ZGZjNDZlMzhlYjZhLi5lMjI4
MzVjN2MyODA3MzgyYTEzN2M4ZTYxNzU1NTMwNTRmYjljZjU3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtODc3LDEyICs4NzcsNiBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgaWYgKHNob3VsZE5vdFNwZWN1bGF0
ZUludGVnZXIobm9kZS5jaGlsZDEoKSkpIHsKLSAgICAgICAgICAgIC8vIERvIGl0IHRoZSBzYWZl
IHdheS4KLSAgICAgICAgICAgIG5vblNwZWN1bGF0aXZlVmFsdWVUb0ludDMyKG5vZGUpOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgCiAgICAgICAgIFNwZWN1bGF0ZUlu
dGVnZXJPcGVyYW5kIG9wMSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKICAgICAgICAgR1BSVGVtcG9y
YXJ5IHJlc3VsdCh0aGlzLCBvcDEpOwogICAgICAgICBtX2ppdC5tb3ZlKG9wMS5ncHIoKSwgcmVz
dWx0LmdwcigpKTsKQEAgLTE1MjQsMTQgKzE1MTgsNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIG5vUmVzdWx0KG1fY29tcGlsZUluZGV4KTsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQotICAgICAgICAKLSAgICBjYXNlIFRocm93OgotICAgIGNhc2Ug
VGhyb3dSZWZlcmVuY2VFcnJvcjogewotICAgICAgICAvLyBXZSBleHBlY3QgdGhhdCB0aHJvdyBz
dGF0ZW1lbnRzIGFyZSByYXJlIGFuZCBhcmUgaW50ZW5kZWQgdG8gZXhpdCB0aGUgY29kZSBibG9j
awotICAgICAgICAvLyBhbnl3YXksIHNvIHdlIGp1c3QgT1NSIGJhY2sgdG8gdGhlIG9sZCBKSVQg
Zm9yIG5vdy4KLSAgICAgICAgdGVybWluYXRlU3BlY3VsYXRpdmVFeGVjdXRpb24oKTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgfQogCiAgICAgY2FzZSBDb252ZXJ0VGhpczogewogICAgICAgICBTcGVj
dWxhdGVDZWxsT3BlcmFuZCB0aGlzVmFsdWUodGhpcywgbm9kZS5jaGlsZDEoKSk7CkBAIC0xNTQx
LDkwICsxNTI3LDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQog
ICAgICAgICBjZWxsUmVzdWx0KHRoaXNWYWx1ZS5ncHIoKSwgbV9jb21waWxlSW5kZXgpOwogICAg
ICAgICBicmVhazsKICAgICB9Ci0gICAgICAgIAotICAgIGNhc2UgQ3JlYXRlVGhpczogewotICAg
ICAgICAvLyBOb3RlIHRoYXQgdGhlcmUgaXMgbm90IHNvIG11Y2ggcHJvZml0IHRvIHNwZWN1bGF0
ZSBoZXJlLiBUaGUgb25seSB0aGluZ3Mgd2UKLSAgICAgICAgLy8gc3BlY3VsYXRlIG9uIGFyZSAo
MSkgdGhhdCBpdCdzIGEgY2VsbCwgc2luY2UgdGhhdCBlbGltaW5hdGVzIGNlbGwgY2hlY2tzCi0g
ICAgICAgIC8vIGxhdGVyIGlmIHRoZSBwcm90byBpcyByZXVzZWQsIGFuZCAoMikgaWYgd2UgaGF2
ZSBhIEZpbmFsT2JqZWN0IHByZWRpY3Rpb24KLSAgICAgICAgLy8gdGhlbiB3ZSBzcGVjdWxhdGUg
YmVjYXVzZSB3ZSB3YW50IHRvIGdldCByZWNvbXBpbGVkIGlmIGl0IGlzbid0IChzaW5jZQotICAg
ICAgICAvLyBvdGhlcndpc2Ugd2UnZCBzdGFydCB0YWtpbmcgc2xvdyBwYXRoIGEgbG90KS4KLSAg
ICAgICAgCi0gICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHByb3RvKHRoaXMsIG5vZGUuY2hp
bGQxKCkpOwotICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwotICAgICAgICBHUFJU
ZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKLSAgICAgICAgCi0gICAgICAgIEdQUlJlZyBwcm90b0dQ
UiA9IHByb3RvLmdwcigpOwotICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0Lmdwcigp
OwotICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7Ci0gICAgICAgIAot
ICAgICAgICBwcm90by51c2UoKTsKLSAgICAgICAgCi0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpK
dW1wTGlzdCBzbG93UGF0aDsKLSAgICAgICAgCi0gICAgICAgIC8vIE5lZWQgdG8gdmVyaWZ5IHRo
YXQgdGhlIHByb3RvdHlwZSBpcyBhbiBvYmplY3QuIElmIHdlIGhhdmUgcmVhc29uIHRvIGJlbGll
dmUKLSAgICAgICAgLy8gdGhhdCBpdCdzIGEgRmluYWxPYmplY3QgdGhlbiB3ZSBzcGVjdWxhdGUg
b24gdGhhdCBkaXJlY3RseS4gT3RoZXJ3aXNlIHdlCi0gICAgICAgIC8vIGRvIHRoZSBzbG93IChz
dHJ1Y3R1cmUtYmFzZWQpIGNoZWNrLgotICAgICAgICBpZiAoc2hvdWxkU3BlY3VsYXRlRmluYWxP
YmplY3Qobm9kZS5jaGlsZDEoKSkpCi0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKG1faml0
LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKHByb3RvR1BSKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFs
RGF0YSgpLT5qc0ZpbmFsT2JqZWN0VlB0cikpKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAg
ICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHByb3RvR1BSLCBKU0NlbGw6
OnN0cnVjdHVyZU9mZnNldCgpKSwgc2NyYXRjaEdQUik7Ci0gICAgICAgICAgICBzbG93UGF0aC5h
cHBlbmQobV9qaXQuYnJhbmNoOChNYWNyb0Fzc2VtYmxlcjo6QmVsb3csIE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKHNjcmF0Y2hHUFIsIFN0cnVjdHVyZTo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKE9iamVjdFR5cGUpKSk7Ci0gICAgICAgIH0KLSAg
ICAgICAgCi0gICAgICAgIC8vIExvYWQgdGhlIGluaGVyaXRvcklEICh0aGUgU3RydWN0dXJlIHRo
YXQgb2JqZWN0cyB3aG8gaGF2ZSBwcm90b0dQUiBhcyB0aGUgcHJvdG90eXBlCi0gICAgICAgIC8v
IHVzZSB0byByZWZlciB0byB0aGF0IHByb3RvdHlwZSkuIElmIHRoZSBpbmhlcml0b3JJRCBpcyBu
b3Qgc2V0LCBnbyB0byBzbG93IHBhdGguCi0gICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3MocHJvdG9HUFIsIEpTT2JqZWN0OjpvZmZzZXRPZkluaGVyaXRvcklEKCkp
LCBzY3JhdGNoR1BSKTsKLSAgICAgICAgc2xvd1BhdGguYXBwZW5kKG1faml0LmJyYW5jaFRlc3RQ
dHIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIHNjcmF0Y2hHUFIpKTsKLSAgICAgICAgCi0gICAgICAg
IE1hcmtlZFNwYWNlOjpTaXplQ2xhc3MqIHNpemVDbGFzcyA9ICZtX2ppdC5nbG9iYWxEYXRhKCkt
PmhlYXAuc2l6ZUNsYXNzRm9yT2JqZWN0KHNpemVvZihKU0ZpbmFsT2JqZWN0KSk7Ci0gICAgICAg
IAotICAgICAgICBtX2ppdC5sb2FkUHRyKCZzaXplQ2xhc3MtPmZpcnN0RnJlZUNlbGwsIHJlc3Vs
dEdQUik7Ci0gICAgICAgIHNsb3dQYXRoLmFwcGVuZChtX2ppdC5icmFuY2hUZXN0UHRyKE1hY3Jv
QXNzZW1ibGVyOjpaZXJvLCByZXN1bHRHUFIpKTsKLSAgICAgICAgCi0gICAgICAgIC8vIFRoZSBv
YmplY3QgaXMgaGFsZi1hbGxvY2F0ZWQ6IHdlIGhhdmUgd2hhdCB3ZSBrbm93IGlzIGEgZnJlc2gg
b2JqZWN0LCBidXQKLSAgICAgICAgLy8gaXQncyBzdGlsbCBvbiB0aGUgR0MncyBmcmVlIGxpc3Qu
Ci0gICAgICAgIAotICAgICAgICAvLyBEaXRjaCB0aGUgaW5oZXJpdG9ySUQgYnkgcGxhY2luZyBp
dCBpbnRvIHRoZSBzdHJ1Y3R1cmUsIHNvIHRoYXQgd2UgY2FuIHJldXNlCi0gICAgICAgIC8vIHNj
cmF0Y2hHUFIuCi0gICAgICAgIG1faml0LnN0b3JlUHRyKHNjcmF0Y2hHUFIsIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNPYmplY3Q6OnN0cnVjdHVyZU9mZnNldCgpKSk7Ci0g
ICAgICAgIAotICAgICAgICAvLyBOb3cgdGhhdCB3ZSBoYXZlIHNjcmF0Y2hHUFIgYmFjaywgcmVt
b3ZlIHRoZSBvYmplY3QgZnJvbSB0aGUgZnJlZSBsaXN0Ci0gICAgICAgIG1faml0LmxvYWRQdHIo
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSKSwgc2NyYXRjaEdQUik7Ci0gICAgICAg
IG1faml0LnN0b3JlUHRyKHNjcmF0Y2hHUFIsICZzaXplQ2xhc3MtPmZpcnN0RnJlZUNlbGwpOwot
ICAgICAgICAKLSAgICAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgb2JqZWN0J3MgdnRhYmxlCi0gICAg
ICAgIG1faml0LnN0b3JlUHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmds
b2JhbERhdGEoKS0+anNGaW5hbE9iamVjdFZQdHIpLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhy
ZXN1bHRHUFIpKTsKLSAgICAgICAgCi0gICAgICAgIC8vIEluaXRpYWxpemUgdGhlIG9iamVjdCdz
IGluaGVyaXRvcklELgotICAgICAgICBtX2ppdC5zdG9yZVB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1
c3RlZEltbVB0cigwKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU09iamVj
dDo6b2Zmc2V0T2ZJbmhlcml0b3JJRCgpKSk7Ci0gICAgICAgIAotICAgICAgICAvLyBJbml0aWFs
aXplIHRoZSBvYmplY3QncyBwcm9wZXJ0eSBzdG9yYWdlIHBvaW50ZXIuCi0gICAgICAgIG1faml0
LmFkZFB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKHNpemVvZihKU09iamVjdCkpLCBy
ZXN1bHRHUFIsIHNjcmF0Y2hHUFIpOwotICAgICAgICBtX2ppdC5zdG9yZVB0cihzY3JhdGNoR1BS
LCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTRmluYWxPYmplY3Q6Om9mZnNl
dE9mUHJvcGVydHlTdG9yYWdlKCkpKTsKLSAgICAgICAgCi0gICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpKdW1wIGRvbmUgPSBtX2ppdC5qdW1wKCk7Ci0gICAgICAgIAotICAgICAgICBzbG93UGF0aC5s
aW5rKCZtX2ppdCk7Ci0gICAgICAgIAotICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhy
ZXN1bHRHUFIpOwotICAgICAgICBtX2ppdC5tb3ZlKHByb3RvR1BSLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjEpOwotICAgICAgICBtX2ppdC5tb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBH
UFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgICAgICBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNo
ZWNrKG9wZXJhdGlvbkNyZWF0ZVRoaXMpOwotICAgICAgICBtX2ppdC5tb3ZlKEdQUkluZm86OnJl
dHVyblZhbHVlR1BSLCByZXN1bHRHUFIpOwotICAgICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJz
KHJlc3VsdEdQUik7Ci0gICAgICAgIAotICAgICAgICBkb25lLmxpbmsoJm1faml0KTsKLSAgICAg
ICAgCi0gICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBtX2NvbXBpbGVJbmRleCwgVXNlQ2hp
bGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgICAgICAK
LSAgICBjYXNlIEdldENhbGxlZTogewotICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMp
OwotICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHN0YXRpY19j
YXN0PFZpcnR1YWxSZWdpc3Rlcj4oUmVnaXN0ZXJGaWxlOjpDYWxsZWUpKSwgcmVzdWx0Lmdwcigp
KTsKLSAgICAgICAgY2VsbFJlc3VsdChyZXN1bHQuZ3ByKCksIG1fY29tcGlsZUluZGV4KTsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgfQogCiAgICAgY2FzZSBHZXRCeUlkOiB7CiAgICAgICAgIFNwZWN1
bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS5jaGlsZDEoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db25zZXJ2YXRpdmVSb290cy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9Db25zZXJ2YXRpdmVSb290cy5jcHAKaW5kZXggZTMzZGQ2Yjg0
OWQ1MGM0ODUyZGQyZjQxMDUwYWZjN2QwYjY5ZmRlZC4uMzNjNjk1ZDMwZGJkN2FhNjc0ZmM4NDdj
MTQwMDU1OGNlMTEwZTU3OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
Q29uc2VydmF0aXZlUm9vdHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Nv
bnNlcnZhdGl2ZVJvb3RzLmNwcApAQCAtMjYsOCArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIkNvbnNlcnZhdGl2ZVJvb3RzLmgiCiAKLSNpbmNsdWRlICJKZXR0aXNvbmVk
Q29kZUJsb2Nrcy5oIgotCiBuYW1lc3BhY2UgSlNDIHsKIAogaW5saW5lIGJvb2wgaXNQb2ludGVy
QWxpZ25lZCh2b2lkKiBwKQpAQCAtMzUsMjAgKzMzLDYgQEAgaW5saW5lIGJvb2wgaXNQb2ludGVy
QWxpZ25lZCh2b2lkKiBwKQogICAgIHJldHVybiAhKChpbnRwdHJfdCkocCkgJiAoc2l6ZW9mKGNo
YXIqKSAtIDEpKTsKIH0KIAotQ29uc2VydmF0aXZlUm9vdHM6OkNvbnNlcnZhdGl2ZVJvb3RzKGNv
bnN0IE1hcmtlZEJsb2NrU2V0KiBibG9ja3MpCi0gICAgOiBtX3Jvb3RzKG1faW5saW5lUm9vdHMp
Ci0gICAgLCBtX3NpemUoMCkKLSAgICAsIG1fY2FwYWNpdHkoaW5saW5lQ2FwYWNpdHkpCi0gICAg
LCBtX2Jsb2NrcyhibG9ja3MpCi17Ci19Ci0KLUNvbnNlcnZhdGl2ZVJvb3RzOjp+Q29uc2VydmF0
aXZlUm9vdHMoKQotewotICAgIGlmIChtX3Jvb3RzICE9IG1faW5saW5lUm9vdHMpCi0gICAgICAg
IE9TQWxsb2NhdG9yOjpkZWNvbW1pdEFuZFJlbGVhc2UobV9yb290cywgbV9jYXBhY2l0eSAqIHNp
emVvZihKU0NlbGwqKSk7Ci19Ci0KIHZvaWQgQ29uc2VydmF0aXZlUm9vdHM6Omdyb3coKQogewog
ICAgIHNpemVfdCBuZXdDYXBhY2l0eSA9IG1fY2FwYWNpdHkgPT0gaW5saW5lQ2FwYWNpdHkgPyBu
b25JbmxpbmVDYXBhY2l0eSA6IG1fY2FwYWNpdHkgKiAyOwpAQCAtNjAsMTYgKzQ0LDggQEAgdm9p
ZCBDb25zZXJ2YXRpdmVSb290czo6Z3JvdygpCiAgICAgbV9yb290cyA9IG5ld1Jvb3RzOwogfQog
Ci1jbGFzcyBEdW1teU1hcmtIb29rIHsKLXB1YmxpYzoKLSAgICB2b2lkIG1hcmsodm9pZCopIHsg
fQotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgTWFya0hvb2s+Ci1pbmxpbmUgdm9pZCBDb25zZXJ2
YXRpdmVSb290czo6Z2VuZXJpY0FkZFBvaW50ZXIodm9pZCogcCwgVGlueUJsb29tRmlsdGVyIGZp
bHRlciwgTWFya0hvb2smIG1hcmtIb29rKQoraW5saW5lIHZvaWQgQ29uc2VydmF0aXZlUm9vdHM6
OmFkZCh2b2lkKiBwLCBUaW55Qmxvb21GaWx0ZXIgZmlsdGVyKQogewotICAgIG1hcmtIb29rLm1h
cmsocCk7Ci0gICAgCiAgICAgTWFya2VkQmxvY2sqIGNhbmRpZGF0ZSA9IE1hcmtlZEJsb2NrOjpi
bG9ja0ZvcihwKTsKICAgICBpZiAoZmlsdGVyLnJ1bGVPdXQocmVpbnRlcnByZXRfY2FzdDxCaXRz
PihjYW5kaWRhdGUpKSkgewogICAgICAgICBBU1NFUlQoIWNhbmRpZGF0ZSB8fCAhbV9ibG9ja3Mt
PnNldCgpLmNvbnRhaW5zKGNhbmRpZGF0ZSkpOwpAQCAtOTQsOCArNzAsNyBAQCBpbmxpbmUgdm9p
ZCBDb25zZXJ2YXRpdmVSb290czo6Z2VuZXJpY0FkZFBvaW50ZXIodm9pZCogcCwgVGlueUJsb29t
RmlsdGVyIGZpbHRlcgogICAgIG1fcm9vdHNbbV9zaXplKytdID0gc3RhdGljX2Nhc3Q8SlNDZWxs
Kj4ocCk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIE1hcmtIb29rPgotdm9pZCBDb25zZXJ2YXRp
dmVSb290czo6Z2VuZXJpY0FkZFNwYW4odm9pZCogYmVnaW4sIHZvaWQqIGVuZCwgTWFya0hvb2sm
IG1hcmtIb29rKQordm9pZCBDb25zZXJ2YXRpdmVSb290czo6YWRkKHZvaWQqIGJlZ2luLCB2b2lk
KiBlbmQpCiB7CiAgICAgQVNTRVJUKGJlZ2luIDw9IGVuZCk7CiAgICAgQVNTRVJUKChzdGF0aWNf
Y2FzdDxjaGFyKj4oZW5kKSAtIHN0YXRpY19jYXN0PGNoYXIqPihiZWdpbikpIDwgMHgxMDAwMDAw
KTsKQEAgLTEwNCwxOCArNzksNyBAQCB2b2lkIENvbnNlcnZhdGl2ZVJvb3RzOjpnZW5lcmljQWRk
U3Bhbih2b2lkKiBiZWdpbiwgdm9pZCogZW5kLCBNYXJrSG9vayYgbWFya0hvbwogCiAgICAgVGlu
eUJsb29tRmlsdGVyIGZpbHRlciA9IG1fYmxvY2tzLT5maWx0ZXIoKTsgLy8gTWFrZSBhIGxvY2Fs
IGNvcHkgb2YgZmlsdGVyIHRvIHNob3cgdGhlIGNvbXBpbGVyIGl0IHdvbid0IGFsaWFzLCBhbmQg
Y2FuIGJlIHJlZ2lzdGVyLWFsbG9jYXRlZC4KICAgICBmb3IgKGNoYXIqKiBpdCA9IHN0YXRpY19j
YXN0PGNoYXIqKj4oYmVnaW4pOyBpdCAhPSBzdGF0aWNfY2FzdDxjaGFyKio+KGVuZCk7ICsraXQp
Ci0gICAgICAgIGdlbmVyaWNBZGRQb2ludGVyKCppdCwgZmlsdGVyLCBtYXJrSG9vayk7Ci19Ci0K
LXZvaWQgQ29uc2VydmF0aXZlUm9vdHM6OmFkZCh2b2lkKiBiZWdpbiwgdm9pZCogZW5kKQotewot
ICAgIER1bW15TWFya0hvb2sgZHVtbXlNYXJrSG9vazsKLSAgICBnZW5lcmljQWRkU3BhbihiZWdp
biwgZW5kLCBkdW1teU1hcmtIb29rKTsKLX0KLQotdm9pZCBDb25zZXJ2YXRpdmVSb290czo6YWRk
KHZvaWQqIGJlZ2luLCB2b2lkKiBlbmQsIEpldHRpc29uZWRDb2RlQmxvY2tzJiBqZXR0aXNvbmVk
Q29kZUJsb2NrcykKLXsKLSAgICBnZW5lcmljQWRkU3BhbihiZWdpbiwgZW5kLCBqZXR0aXNvbmVk
Q29kZUJsb2Nrcyk7CisgICAgICAgIGFkZCgqaXQsIGZpbHRlcik7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29uc2VydmF0
aXZlUm9vdHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbnNlcnZhdGl2ZVJvb3Rz
LmgKaW5kZXggMDM1ZGI4ZjA1ZjhmNzAyYTg1YzFhOGZiYzI0ZjA1MDk0NjVkZmU3Ni4uZTEwMDUw
ZDBhNDFkMTRhOGMxMGYwMzBjNzI1ZjczMTZkNDMyMjY3MSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvQ29uc2VydmF0aXZlUm9vdHMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9Db25zZXJ2YXRpdmVSb290cy5oCkBAIC0zMyw3ICszMyw2IEBACiBuYW1l
c3BhY2UgSlNDIHsKIAogY2xhc3MgSlNDZWxsOwotY2xhc3MgSmV0dGlzb25lZENvZGVCbG9ja3M7
CiBjbGFzcyBIZWFwOwogCiBjbGFzcyBDb25zZXJ2YXRpdmVSb290cyB7CkBAIC00Miw3ICs0MSw2
IEBAIHB1YmxpYzoKICAgICB+Q29uc2VydmF0aXZlUm9vdHMoKTsKIAogICAgIHZvaWQgYWRkKHZv
aWQqIGJlZ2luLCB2b2lkKiBlbmQpOwotICAgIHZvaWQgYWRkKHZvaWQqIGJlZ2luLCB2b2lkKiBl
bmQsIEpldHRpc29uZWRDb2RlQmxvY2tzJik7CiAgICAgCiAgICAgc2l6ZV90IHNpemUoKTsKICAg
ICBKU0NlbGwqKiByb290cygpOwpAQCAtNTEsMTIgKzQ5LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0
aWMgY29uc3Qgc2l6ZV90IGlubGluZUNhcGFjaXR5ID0gMTI4OwogICAgIHN0YXRpYyBjb25zdCBz
aXplX3Qgbm9uSW5saW5lQ2FwYWNpdHkgPSA4MTkyIC8gc2l6ZW9mKEpTQ2VsbCopOwogICAgIAot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIE1hcmtIb29rPgotICAgIHZvaWQgZ2VuZXJpY0FkZFBvaW50
ZXIodm9pZCosIFRpbnlCbG9vbUZpbHRlciwgTWFya0hvb2smKTsKLQotICAgIHRlbXBsYXRlPHR5
cGVuYW1lIE1hcmtIb29rPgotICAgIHZvaWQgZ2VuZXJpY0FkZFNwYW4odm9pZCosIHZvaWQqIGVu
ZCwgTWFya0hvb2smKTsKLSAgICAKKyAgICB2b2lkIGFkZCh2b2lkKiwgVGlueUJsb29tRmlsdGVy
KTsKICAgICB2b2lkIGdyb3coKTsKIAogICAgIEpTQ2VsbCoqIG1fcm9vdHM7CkBAIC02Niw2ICs1
OSwyMCBAQCBwcml2YXRlOgogICAgIEpTQ2VsbCogbV9pbmxpbmVSb290c1tpbmxpbmVDYXBhY2l0
eV07CiB9OwogCitpbmxpbmUgQ29uc2VydmF0aXZlUm9vdHM6OkNvbnNlcnZhdGl2ZVJvb3RzKGNv
bnN0IE1hcmtlZEJsb2NrU2V0KiBibG9ja3MpCisgICAgOiBtX3Jvb3RzKG1faW5saW5lUm9vdHMp
CisgICAgLCBtX3NpemUoMCkKKyAgICAsIG1fY2FwYWNpdHkoaW5saW5lQ2FwYWNpdHkpCisgICAg
LCBtX2Jsb2NrcyhibG9ja3MpCit7Cit9CisKK2lubGluZSBDb25zZXJ2YXRpdmVSb290czo6fkNv
bnNlcnZhdGl2ZVJvb3RzKCkKK3sKKyAgICBpZiAobV9yb290cyAhPSBtX2lubGluZVJvb3RzKQor
ICAgICAgICBPU0FsbG9jYXRvcjo6ZGVjb21taXRBbmRSZWxlYXNlKG1fcm9vdHMsIG1fY2FwYWNp
dHkgKiBzaXplb2YoSlNDZWxsKikpOworfQorCiBpbmxpbmUgc2l6ZV90IENvbnNlcnZhdGl2ZVJv
b3RzOjpzaXplKCkKIHsKICAgICByZXR1cm4gbV9zaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWFwLmNwcAppbmRleCBmNmUxZDVlNTM4MmUwMzQzMjJmODMxZTU4ZWQxMDUzMDdkYjE1MWJkLi45
YjRlZDZhZTAyNWU0MjE3MGEwYjk1MWI5ZjFhNzkwYjYyNTlkYjQ3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IZWFwLmNwcApAQCAtMzk0LDExICszOTQsNiBAQCB2b2lkIEhlYXA6Om1hcmtQcm90
ZWN0ZWRPYmplY3RzKEhlYXBSb290VmlzaXRvciYgaGVhcFJvb3RWaXNpdG9yKQogICAgICAgICBo
ZWFwUm9vdFZpc2l0b3IudmlzaXQoJml0LT5maXJzdCk7CiB9CiAKLXZvaWQgSGVhcDo6YWRkSmV0
dGlzb25lZENvZGVCbG9jayhQYXNzT3duUHRyPENvZGVCbG9jaz4gY29kZUJsb2NrKQotewotICAg
IG1famV0dGlzb25lZENvZGVCbG9ja3MuYWRkQ29kZUJsb2NrKGNvZGVCbG9jayk7Ci19Ci0KIHZv
aWQgSGVhcDo6cHVzaFRlbXBTb3J0VmVjdG9yKFZlY3RvcjxWYWx1ZVN0cmluZ1BhaXI+KiB0ZW1w
VmVjdG9yKQogewogICAgIG1fdGVtcFNvcnRpbmdWZWN0b3JzLmFwcGVuZCh0ZW1wVmVjdG9yKTsK
QEAgLTQ2MSwyMiArNDU2LDIwIEBAIHZvaWQgSGVhcDo6bWFya1Jvb3RzKCkKICAgICBtX29wZXJh
dGlvbkluUHJvZ3Jlc3MgPSBDb2xsZWN0aW9uOwogCiAgICAgdm9pZCogZHVtbXk7Ci0gICAgCisK
ICAgICAvLyBXZSBnYXRoZXIgY29uc2VydmF0aXZlIHJvb3RzIGJlZm9yZSBjbGVhcmluZyBtYXJr
IGJpdHMgYmVjYXVzZSBjb25zZXJ2YXRpdmUKICAgICAvLyBnYXRoZXJpbmcgdXNlcyB0aGUgbWFy
ayBiaXRzIHRvIGRldGVybWluZSB3aGV0aGVyIGEgcmVmZXJlbmNlIGlzIHZhbGlkLgogICAgIENv
bnNlcnZhdGl2ZVJvb3RzIG1hY2hpbmVUaHJlYWRSb290cygmbV9vYmplY3RTcGFjZS5ibG9ja3Mo
KSk7CiAgICAgbV9tYWNoaW5lVGhyZWFkcy5nYXRoZXJDb25zZXJ2YXRpdmVSb290cyhtYWNoaW5l
VGhyZWFkUm9vdHMsICZkdW1teSk7CiAKICAgICBDb25zZXJ2YXRpdmVSb290cyByZWdpc3RlckZp
bGVSb290cygmbV9vYmplY3RTcGFjZS5ibG9ja3MoKSk7Ci0gICAgbV9qZXR0aXNvbmVkQ29kZUJs
b2Nrcy5jbGVhck1hcmtzKCk7Ci0gICAgcmVnaXN0ZXJGaWxlKCkuZ2F0aGVyQ29uc2VydmF0aXZl
Um9vdHMocmVnaXN0ZXJGaWxlUm9vdHMsIG1famV0dGlzb25lZENvZGVCbG9ja3MpOwotICAgIG1f
amV0dGlzb25lZENvZGVCbG9ja3MuZGVsZXRlVW5tYXJrZWRDb2RlQmxvY2tzKCk7CisgICAgcmVn
aXN0ZXJGaWxlKCkuZ2F0aGVyQ29uc2VydmF0aXZlUm9vdHMocmVnaXN0ZXJGaWxlUm9vdHMpOwog
CiAgICAgY2xlYXJNYXJrcygpOwogCiAgICAgU2xvdFZpc2l0b3ImIHZpc2l0b3IgPSBtX3Nsb3RW
aXNpdG9yOwogICAgIEhlYXBSb290VmlzaXRvciBoZWFwUm9vdFZpc2l0b3IodmlzaXRvcik7Ci0g
ICAgCisKICAgICB2aXNpdG9yLmFwcGVuZChtYWNoaW5lVGhyZWFkUm9vdHMpOwogICAgIHZpc2l0
b3IuZHJhaW4oKTsKIApAQCAtNTAwLDkgKzQ5Myw2IEBAIHZvaWQgSGVhcDo6bWFya1Jvb3RzKCkK
IAogICAgIG1faGFuZGxlU3RhY2sudmlzaXQoaGVhcFJvb3RWaXNpdG9yKTsKICAgICB2aXNpdG9y
LmRyYWluKCk7Ci0gICAgCi0gICAgbV9qZXR0aXNvbmVkQ29kZUJsb2Nrcy50cmFjZUNvZGVCbG9j
a3ModmlzaXRvcik7Ci0gICAgdmlzaXRvci5kcmFpbigpOwogCiAgICAgLy8gV2VhayBoYW5kbGVz
IG11c3QgYmUgbWFya2VkIGxhc3QsIGJlY2F1c2UgdGhlaXIgb3duZXJzIHVzZSB0aGUgc2V0IG9m
CiAgICAgLy8gb3BhcXVlIHJvb3RzIHRvIGRldGVybWluZSByZWFjaGFiaWxpdHkuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwLmgKaW5kZXggZWZlNWY0NjljMDY0N2UyNTI1YTQxNDA3YjY2NGY4MWQ5
NzVjYzFjZi4uNGZmMjYwM2JkMGQ1MmU2YWYyNjU0YzMwMDBmOWU4MWM2NTUyZjEwZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXAuaApAQCAtMjUsNyArMjUsNiBAQAogI2luY2x1ZGUgIkFsbG9j
YXRpb25TcGFjZS5oIgogI2luY2x1ZGUgIkhhbmRsZUhlYXAuaCIKICNpbmNsdWRlICJIYW5kbGVT
dGFjay5oIgotI2luY2x1ZGUgIkpldHRpc29uZWRDb2RlQmxvY2tzLmgiCiAjaW5jbHVkZSAiTWFy
a2VkQmxvY2suaCIKICNpbmNsdWRlICJNYXJrZWRCbG9ja1NldC5oIgogI2luY2x1ZGUgIk1hcmtl
ZFNwYWNlLmgiCkBAIC05OSw4ICs5OCw2IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZv
aWQgcHJvdGVjdChKU1ZhbHVlKTsKICAgICAgICAgYm9vbCB1bnByb3RlY3QoSlNWYWx1ZSk7IC8v
IFRydWUgd2hlbiB0aGUgcHJvdGVjdCBjb3VudCBkcm9wcyB0byAwLgotICAgICAgICAKLSAgICAg
ICAgdm9pZCBhZGRKZXR0aXNvbmVkQ29kZUJsb2NrKFBhc3NPd25QdHI8Q29kZUJsb2NrPik7CiAK
ICAgICAgICAgc2l6ZV90IHNpemUoKTsKICAgICAgICAgc2l6ZV90IGNhcGFjaXR5KCk7CkBAIC0x
OTQsNyArMTkxLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFNsb3RWaXNpdG9yIG1fc2xv
dFZpc2l0b3I7CiAgICAgICAgIEhhbmRsZUhlYXAgbV9oYW5kbGVIZWFwOwogICAgICAgICBIYW5k
bGVTdGFjayBtX2hhbmRsZVN0YWNrOwotICAgICAgICBKZXR0aXNvbmVkQ29kZUJsb2NrcyBtX2pl
dHRpc29uZWRDb2RlQmxvY2tzOwogICAgICAgICAKICAgICAgICAgYm9vbCBtX2lzU2FmZVRvQ29s
bGVjdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSmV0dGlzb25l
ZENvZGVCbG9ja3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSmV0dGlzb25lZENv
ZGVCbG9ja3MuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZjIyNzQwNzQxMjFh
Y2I1YzIwNGVkMWZjM2ZjNGUyZWUyMmIyOWYyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0pldHRpc29uZWRD
b2RlQmxvY2tzLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDgzICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAot
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIkpldHRpc29uZWRDb2RlQmxvY2tzLmgiCi0KLSNpbmNsdWRlICJDb2RlQmxvY2su
aCIKLSNpbmNsdWRlICJTbG90VmlzaXRvci5oIgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQot
bmFtZXNwYWNlIEpTQyB7Ci0KLUpldHRpc29uZWRDb2RlQmxvY2tzOjpKZXR0aXNvbmVkQ29kZUJs
b2NrcygpIHsgfQotCi1KZXR0aXNvbmVkQ29kZUJsb2Nrczo6fkpldHRpc29uZWRDb2RlQmxvY2tz
KCkKLXsKLSAgICBXVEY6OmRlbGV0ZUFsbEtleXMobV9tYXApOwotfQotCi12b2lkIEpldHRpc29u
ZWRDb2RlQmxvY2tzOjphZGRDb2RlQmxvY2soUGFzc093blB0cjxDb2RlQmxvY2s+IGNvZGVCbG9j
aykKLXsKLSAgICBBU1NFUlQobV9tYXAuZmluZChjb2RlQmxvY2suZ2V0KCkpID09IG1fbWFwLmVu
ZCgpKTsKLSAgICAKLSAgICBtX21hcC5hZGQoY29kZUJsb2NrLmxlYWtQdHIoKSwgZmFsc2UpOwot
fQotCi12b2lkIEpldHRpc29uZWRDb2RlQmxvY2tzOjpjbGVhck1hcmtzKCkKLXsKLSAgICBIYXNo
TWFwPENvZGVCbG9jayosIGJvb2w+OjppdGVyYXRvciBiZWdpbiA9IG1fbWFwLmJlZ2luKCk7Ci0g
ICAgSGFzaE1hcDxDb2RlQmxvY2sqLCBib29sPjo6aXRlcmF0b3IgZW5kID0gbV9tYXAuZW5kKCk7
Ci0gICAgZm9yIChIYXNoTWFwPENvZGVCbG9jayosIGJvb2w+OjppdGVyYXRvciBpdGVyID0gYmVn
aW47IGl0ZXIgIT0gZW5kOyArK2l0ZXIpCi0gICAgICAgIGl0ZXItPnNlY29uZCA9IGZhbHNlOwot
fQotCi12b2lkIEpldHRpc29uZWRDb2RlQmxvY2tzOjpkZWxldGVVbm1hcmtlZENvZGVCbG9ja3Mo
KQotewotICAgIFZlY3RvcjxDb2RlQmxvY2sqPiB0b1JlbW92ZTsKLSAgICAKLSAgICBIYXNoTWFw
PENvZGVCbG9jayosIGJvb2w+OjppdGVyYXRvciBiZWdpbiA9IG1fbWFwLmJlZ2luKCk7Ci0gICAg
SGFzaE1hcDxDb2RlQmxvY2sqLCBib29sPjo6aXRlcmF0b3IgZW5kID0gbV9tYXAuZW5kKCk7Ci0g
ICAgZm9yIChIYXNoTWFwPENvZGVCbG9jayosIGJvb2w+OjppdGVyYXRvciBpdGVyID0gYmVnaW47
IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKLSAgICAgICAgaWYgKCFpdGVyLT5zZWNvbmQpCi0gICAg
ICAgICAgICB0b1JlbW92ZS5hcHBlbmQoaXRlci0+Zmlyc3QpOwotICAgIH0KLSAgICAKLSAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdG9SZW1vdmUuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAg
bV9tYXAucmVtb3ZlKHRvUmVtb3ZlW2ldKTsKLSAgICAgICAgZGVsZXRlIHRvUmVtb3ZlW2ldOwot
ICAgIH0KLX0KLQotdm9pZCBKZXR0aXNvbmVkQ29kZUJsb2Nrczo6dHJhY2VDb2RlQmxvY2tzKFNs
b3RWaXNpdG9yJiBzbG90VmlzaXRvcikKLXsKLSAgICBIYXNoTWFwPENvZGVCbG9jayosIGJvb2w+
OjppdGVyYXRvciBiZWdpbiA9IG1fbWFwLmJlZ2luKCk7Ci0gICAgSGFzaE1hcDxDb2RlQmxvY2sq
LCBib29sPjo6aXRlcmF0b3IgZW5kID0gbV9tYXAuZW5kKCk7Ci0gICAgZm9yIChIYXNoTWFwPENv
ZGVCbG9jayosIGJvb2w+OjppdGVyYXRvciBpdGVyID0gYmVnaW47IGl0ZXIgIT0gZW5kOyArK2l0
ZXIpCi0gICAgICAgIGl0ZXItPmZpcnN0LT52aXNpdEFnZ3JlZ2F0ZShzbG90VmlzaXRvcik7Ci19
Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwotCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9KZXR0aXNvbmVkQ29kZUJsb2Nrcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSmV0dGlzb25lZENvZGVCbG9ja3MuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MzhkYzk5ZjJhNTgwYjZmYzUwYzYwNTJhY2IwNWRlZDY1ZWM3YzY2Mi4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9KZXR0aXNvbmVkQ29kZUJsb2Nrcy5oCisrKyAvZGV2L251bGwKQEAgLTEsNzkgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIEpl
dHRpc29uZWRDb2RlQmxvY2tzX2gKLSNkZWZpbmUgSmV0dGlzb25lZENvZGVCbG9ja3NfaAotCi0j
aW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgot
I2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+Ci0KLW5hbWVzcGFjZSBKU0MgewotCi1jbGFzcyBD
b2RlQmxvY2s7Ci1jbGFzcyBTbG90VmlzaXRvcjsKLQotY2xhc3MgSmV0dGlzb25lZENvZGVCbG9j
a3MgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOyAvLyBPbmx5IG1hbGxvYydkIGluIENv
bnNlcnZhdGl2ZVJvb3RzCi1wdWJsaWM6Ci0gICAgSmV0dGlzb25lZENvZGVCbG9ja3MoKTsKLSAg
ICAKLSAgICB+SmV0dGlzb25lZENvZGVCbG9ja3MoKTsKLSAgICAKLSAgICB2b2lkIGFkZENvZGVC
bG9jayhQYXNzT3duUHRyPENvZGVCbG9jaz4pOwotICAgIAotICAgIHZvaWQgY2xlYXJNYXJrcygp
OwotICAgIAotICAgIHZvaWQgbWFyayh2b2lkKiBjYW5kaWRhdGVDb2RlQmxvY2spCi0gICAgewot
ICAgICAgICAvLyBXZSBoYXZlIHRvIGNoZWNrIGZvciAwIGFuZCAtMSBiZWNhdXNlIHRob3NlIGFy
ZSB1c2VkIGJ5IHRoZSBIYXNoTWFwIGFzIG1hcmtlcnMuCi0gICAgICAgIHVpbnRwdHJfdCB2YWx1
ZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihjYW5kaWRhdGVDb2RlQmxvY2spOwotICAg
ICAgICAKLSAgICAgICAgLy8gVGhpcyBjaGVja3MgZm9yIGJvdGggb2YgdGhvc2UgbmFzdHkgY2Fz
ZXMgaW4gb25lIGdvLgotICAgICAgICAvLyAwICsgMSA9IDEKLSAgICAgICAgLy8gLTEgKyAxID0g
MAotICAgICAgICBpZiAodmFsdWUgKyAxIDw9IDEpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIAotICAgICAgICBIYXNoTWFwPENvZGVCbG9jayosIGJvb2w+OjppdGVyYXRvciBpdGVyID0g
bV9tYXAuZmluZChzdGF0aWNfY2FzdDxDb2RlQmxvY2sqPihjYW5kaWRhdGVDb2RlQmxvY2spKTsK
LSAgICAgICAgaWYgKGl0ZXIgPT0gbV9tYXAuZW5kKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIGl0ZXItPnNlY29uZCA9IHRydWU7Ci0gICAgfQotICAgIAotICAgIHZvaWQgZGVsZXRl
VW5tYXJrZWRDb2RlQmxvY2tzKCk7Ci0gICAgCi0gICAgdm9pZCB0cmFjZUNvZGVCbG9ja3MoU2xv
dFZpc2l0b3ImKTsKLQotcHJpdmF0ZToKLSAgICAvLyBJdCB3b3VsZCBiZSBncmVhdCB0byB1c2Ug
YW4gT3duUHRyPENvZGVCbG9jaz4gaGVyZSBidXQgdGhhdCB3b3VsZAotICAgIC8vIGFsbW9zdCBj
ZXJ0YWlubHkgbm90IHdvcmsuCi0gICAgSGFzaE1hcDxDb2RlQmxvY2sqLCBib29sPiBtX21hcDsK
LX07Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwotCi0jZW5kaWYgLy8gSmV0dGlzb25lZENvZGVCbG9j
a3NfaAotCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUmVn
aXN0ZXJGaWxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9SZWdpc3Rl
ckZpbGUuY3BwCmluZGV4IDc5ZDYyMzkzZmMxMDRjNmRkZjM3ZWZiNDNkMGJmNTVhMjU4YzgwMmQu
LmFhOWIyNDk3MTczMDM0NWVjMzUyYWYyMzQzYTllNmJjODE3MmNiMmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9SZWdpc3RlckZpbGUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9SZWdpc3RlckZpbGUuY3BwCkBAIC01NSwx
MSArNTUsNiBAQCB2b2lkIFJlZ2lzdGVyRmlsZTo6Z2F0aGVyQ29uc2VydmF0aXZlUm9vdHMoQ29u
c2VydmF0aXZlUm9vdHMmIGNvbnNlcnZhdGl2ZVJvb3RzKQogICAgIGNvbnNlcnZhdGl2ZVJvb3Rz
LmFkZChiZWdpbigpLCBlbmQoKSk7CiB9CiAKLXZvaWQgUmVnaXN0ZXJGaWxlOjpnYXRoZXJDb25z
ZXJ2YXRpdmVSb290cyhDb25zZXJ2YXRpdmVSb290cyYgY29uc2VydmF0aXZlUm9vdHMsIEpldHRp
c29uZWRDb2RlQmxvY2tzJiBqZXR0aXNvbmVkQ29kZUJsb2NrcykKLXsKLSAgICBjb25zZXJ2YXRp
dmVSb290cy5hZGQoYmVnaW4oKSwgZW5kKCksIGpldHRpc29uZWRDb2RlQmxvY2tzKTsKLX0KLQog
dm9pZCBSZWdpc3RlckZpbGU6OnJlbGVhc2VFeGNlc3NDYXBhY2l0eSgpCiB7CiAgICAgcHRyZGlm
Zl90IGRlbHRhID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KG1fY29tbWl0RW5kKSAtIHJl
aW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihtX3Jlc2VydmF0aW9uLmJhc2UoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmgKaW5kZXggMjUx
NWRhM2I1OTY1NTY0YmE5Y2RmYmE3ODM1OTRkMDNmOWY4MTlhYS4uOTFiODBhZGU0ZGRmMWQ4YThm
NTMxNmZmOTk4NjJiNzhkMzYyYzYyOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL1JlZ2lzdGVyRmlsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9SZWdpc3RlckZpbGUuaApAQCAtMzgsNyArMzgsNiBAQAogbmFtZXNwYWNlIEpT
QyB7CiAKICAgICBjbGFzcyBDb25zZXJ2YXRpdmVSb290czsKLSAgICBjbGFzcyBKZXR0aXNvbmVk
Q29kZUJsb2NrczsKIAogICAgIGNsYXNzIFJlZ2lzdGVyRmlsZSB7CiAgICAgICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKFJlZ2lzdGVyRmlsZSk7CkBAIC02NSw3ICs2NCw2IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICB+UmVnaXN0ZXJGaWxlKCk7CiAgICAgICAgIAogICAgICAgICB2b2lkIGdh
dGhlckNvbnNlcnZhdGl2ZVJvb3RzKENvbnNlcnZhdGl2ZVJvb3RzJik7Ci0gICAgICAgIHZvaWQg
Z2F0aGVyQ29uc2VydmF0aXZlUm9vdHMoQ29uc2VydmF0aXZlUm9vdHMmLCBKZXR0aXNvbmVkQ29k
ZUJsb2NrcyYpOwogCiAgICAgICAgIFJlZ2lzdGVyKiBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIHN0
YXRpY19jYXN0PFJlZ2lzdGVyKj4obV9yZXNlcnZhdGlvbi5iYXNlKCkpOyB9CiAgICAgICAgIFJl
Z2lzdGVyKiBlbmQoKSBjb25zdCB7IHJldHVybiBtX2VuZDsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuY3BwCmluZGV4IDMwOWEwYzY2NzIwYTVmMWQ4ZDc3NWEwNjRlMTI5Mzk5NWNiYTZlZDguLjQz
ZThkMmI1MzA3ZWU4NjJlYjg0ODExYTcxODhkZmE2MTczOWZmYjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5jcHAKQEAgLTY5OSwxMCArNjk5LDYgQEAgdm9pZCBKSVQ6OmxpbmtGb3IoSlNGdW5j
dGlvbiogY2FsbGVlLCBDb2RlQmxvY2sqIGNhbGxlckNvZGVCbG9jaywgQ29kZUJsb2NrKiBjYWwK
ICAgICByZXBhdGNoQnVmZmVyLnJlbGluayhDb2RlTG9jYXRpb25OZWFyQ2FsbChjYWxsTGlua0lu
Zm8tPmNhbGxSZXR1cm5Mb2NhdGlvbiksIGdsb2JhbERhdGEtPmppdFN0dWJzLT5jdGlWaXJ0dWFs
Q29uc3RydWN0KCkpOwogfQogCi0jaWYgQ1BVKFg4NikgJiYgRU5BQkxFKFZBTFVFX1BST0ZJTEVS
KQotaW50IGJ1Y2tldENvdW50ZXIgPSAwOwotI2VuZGlmCi0KIH0gLy8gbmFtZXNwYWNlIEpTQwog
CiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUSW5saW5lTWV0aG9kcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJ
bmxpbmVNZXRob2RzLmgKaW5kZXggNTJhMGJmNGZjZTZjNTgyZDY1YmY1NzRkMDRmZmY1NWY0Mjg4
ZGM1OS4uN2M1YTRlMTUxNGE1M2Q2ZDgyNTI0NzdmNmE2ODQ0ZTc3OGQ3YjA5OSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVNZXRob2RzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVNZXRob2RzLmgKQEAgLTQ0Niw4ICs0NDYs
OCBAQCBpbmxpbmUgdm9pZCBKSVQ6OmVtaXRBbGxvY2F0ZUpTRnVuY3Rpb24oRnVuY3Rpb25FeGVj
dXRhYmxlKiBleGVjdXRhYmxlLCBSZWdpc3RlcgogI2VuZGlmCiB9CiAKLSNpZiBDUFUoWDg2KSAm
JiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCi1leHRlcm4gaW50IGJ1Y2tldENvdW50ZXI7CisjaWYg
Q1BVKFg4NikKK3N0YXRpYyBpbnQgYnVja2V0Q291bnRlcjsKICNlbmRpZgogCiAjaWYgRU5BQkxF
KFZBTFVFX1BST0ZJTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRTdHVicy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAppbmRl
eCBkYTAxMmMzZTUyN2EzYThjNGU2YjdmZDMwNTIzNGI0MGQ2NjgyNDRkLi5kMGJmNzU4NmQwMWJi
ZTQzODg0M2UxOGZhYzE5MGZlMzIzNDdlZTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFN0dWJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFN0dWJzLmNwcApAQCAtMTkxNCwyMiArMTkxNCw3IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKHZv
aWQsIG9wdGltaXplX2Zyb21fbG9vcCkKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNhbGxG
cmFtZS0+Y29kZUJsb2NrKCk7CiAgICAgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCA9IHN0YWNrRnJh
bWUuYXJnc1swXS5pbnQzMigpOwogCi0jaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikKLSAgICBw
cmludGYoIkVudGVyZWQgb3B0aW1pemVfZnJvbV9sb29wIHdpdGggZXhlY3V0ZUNvdW50ZXIgPSAl
ZCwgcmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIgPSAldSwgb3B0aW1pemF0aW9uRGVsYXlDb3Vu
dGVyID0gJXVcbiIsIGNvZGVCbG9jay0+ZXhlY3V0ZUNvdW50ZXIoKSwgY29kZUJsb2NrLT5yZW9w
dGltaXphdGlvblJldHJ5Q291bnRlcigpLCBjb2RlQmxvY2stPm9wdGltaXphdGlvbkRlbGF5Q291
bnRlcigpKTsKLSNlbmRpZgotCi0gICAgaWYgKGNvZGVCbG9jay0+aGFzT3B0aW1pemVkUmVwbGFj
ZW1lbnQoKSkgewotI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCi0gICAgICAgIHByaW50Zigi
Q29uc2lkZXJpbmcgbG9vcCBPU1IgaW50byAlcCglcCkgd2l0aCBzdWNjZXNzL2ZhaWwgJXUvJXUu
XG4iLCBjb2RlQmxvY2ssIGNvZGVCbG9jay0+cmVwbGFjZW1lbnQoKSwgY29kZUJsb2NrLT5yZXBs
YWNlbWVudCgpLT5zcGVjdWxhdGl2ZVN1Y2Nlc3NDb3VudGVyKCksIGNvZGVCbG9jay0+cmVwbGFj
ZW1lbnQoKS0+c3BlY3VsYXRpdmVGYWlsQ291bnRlcigpKTsKLSNlbmRpZgotICAgICAgICBpZiAo
Y29kZUJsb2NrLT5yZXBsYWNlbWVudCgpLT5zaG91bGRSZW9wdGltaXplRnJvbUxvb3BOb3coKSkg
ewotI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCi0gICAgICAgICAgICBwcmludGYoIlRyaWdn
ZXJpbmcgcmVvcHRpbWl6YXRpb24gb2YgJXAoJXApIChpbiBsb29wKS5cbiIsIGNvZGVCbG9jaywg
Y29kZUJsb2NrLT5yZXBsYWNlbWVudCgpKTsKLSNlbmRpZgotICAgICAgICAgICAgY29kZUJsb2Nr
LT5yZW9wdGltaXplKGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpKTsKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7CisgICAgaWYgKCFjb2RlQmxvY2stPmhhc09wdGlt
aXplZFJlcGxhY2VtZW50KCkpIHsKICAgICAgICAgaWYgKCFjb2RlQmxvY2stPnNob3VsZE9wdGlt
aXplTm93KCkpIHsKICNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQogICAgICAgICAgICAgcHJp
bnRmKCJEZWxheWluZyBvcHRpbWl6YXRpb24gZm9yICVwIChpbiBsb29wKSBiZWNhdXNlIG9mIGlu
c3VmZmljaWVudCBwcm9maWxpbmcuXG4iLCBjb2RlQmxvY2spOwpAQCAtMTk2Nyw3ICsxOTUyLDYg
QEAgREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCwgb3B0aW1pemVfZnJvbV9sb29wKQogI2VuZGlm
CiAKICAgICAgICAgY29kZUJsb2NrLT5vcHRpbWl6ZVNvb24oKTsKLSAgICAgICAgb3B0aW1pemVk
Q29kZUJsb2NrLT5jb3VudFNwZWN1bGF0aW9uU3VjY2VzcygpOwogICAgICAgICBTVFVCX1NFVF9S
RVRVUk5fQUREUkVTUyhhZGRyZXNzKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE5NzYs
MzAgKzE5NjAsNiBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkLCBvcHRpbWl6ZV9mcm9tX2xv
b3ApCiAgICAgcHJpbnRmKCJPcHRpbWl6aW5nICVwIGZyb20gbG9vcCBzdWNjZWVkZWQsIE9TUiBm
YWlsZWQuXG4iLCBjb2RlQmxvY2spOwogI2VuZGlmCiAKLSAgICAvLyBDb3VudCB0aGUgT1NSIGZh
aWx1cmUgYXMgYSBzcGVjdWxhdGlvbiBmYWlsdXJlLiBJZiB0aGlzIGhhcHBlbnMgYSBsb3QsIHRo
ZW4KLSAgICAvLyByZW9wdGltaXplLgotICAgIG9wdGltaXplZENvZGVCbG9jay0+Y291bnRTcGVj
dWxhdGlvbkZhaWx1cmUoKTsKLSAgICAKLSNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQotICAg
IHByaW50ZigiRW5jb3VudGVyZWQgbG9vcCBPU1IgZmFpbHVyZSBpbnRvICVwKCVwKSB3aXRoIHN1
Y2Nlc3MvZmFpbCAldS8ldS5cbiIsIGNvZGVCbG9jaywgY29kZUJsb2NrLT5yZXBsYWNlbWVudCgp
LCBjb2RlQmxvY2stPnJlcGxhY2VtZW50KCktPnNwZWN1bGF0aXZlU3VjY2Vzc0NvdW50ZXIoKSwg
Y29kZUJsb2NrLT5yZXBsYWNlbWVudCgpLT5zcGVjdWxhdGl2ZUZhaWxDb3VudGVyKCkpOwotI2Vu
ZGlmCi0KLSAgICAvLyBXZSBhcmUgYSBsb3QgbW9yZSBjb25zZXJ2YXRpdmUgYWJvdXQgdHJpZ2dl
cmluZyByZW9wdGltaXphdGlvbiBhZnRlciBPU1IgZmFpbHVyZSB0aGFuCi0gICAgLy8gYmVmb3Jl
IGl0LiBJZiB3ZSBlbnRlciB0aGUgb3B0aW1pemVfZnJvbV9sb29wIHRyaWdnZXIgd2l0aCBhIGJ1
Y2tldCBmdWxsIG9mIGZhaWwKLSAgICAvLyBhbHJlYWR5LCB0aGVuIHdlIHJlYWxseSB3b3VsZCBs
aWtlIHRvIHJlb3B0aW1pemUgaW1tZWRpYXRlbHkuIEJ1dCB0aGlzIGNhc2UgY292ZXJzCi0gICAg
Ly8gc29tZXRoaW5nIGVsc2U6IHRoZXJlIHdlcmVuJ3QgbWFueSAob3IgYW55KSBzcGVjdWxhdGlv
biBmYWlsdXJlcyBiZWZvcmUsIGJ1dCB3ZSBqdXN0Ci0gICAgLy8gZmFpbGVkIHRvIGVudGVyIHRo
ZSBzcGVjdWxhdGl2ZSBjb2RlIGJlY2F1c2Ugc29tZSB2YXJpYWJsZSBoYWQgdGhlIHdyb25nIHZh
bHVlIG9yCi0gICAgLy8gYmVjYXVzZSB0aGUgT1NSIGNvZGUgZGVjaWRlZCBmb3IgYW55IHNwdXJp
b3VzIHJlYXNvbiB0aGF0IGl0IGRpZCBub3Qgd2FudCB0byBPU1IKLSAgICAvLyByaWdodCBub3cu
IFNvLCB3ZSBvbmx5IHRyaWdnZXIgcmVvcHRpbWl6YXRpb24gb25seSB1cG9uIHRoZSBtb3JlIGNv
bnNlcnZhdGl2ZSAobm9uLWxvb3ApCi0gICAgLy8gcmVvcHRpbWl6YXRpb24gdHJpZ2dlci4KLSAg
ICBpZiAob3B0aW1pemVkQ29kZUJsb2NrLT5zaG91bGRSZW9wdGltaXplTm93KCkpIHsKLSNpZiBF
TkFCTEUoSklUX1ZFUkJPU0VfT1NSKQotICAgICAgICBwcmludGYoIlRyaWdnZXJpbmcgcmVvcHRp
bWl6YXRpb24gb2YgJXAoJXApIChpbiBsb29wIGFmdGVyIE9TUiBmYWlsKS5cbiIsIGNvZGVCbG9j
aywgY29kZUJsb2NrLT5yZXBsYWNlbWVudCgpKTsKLSNlbmRpZgotICAgICAgICBjb2RlQmxvY2st
PnJlb3B0aW1pemUoY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCkpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCiAgICAgLy8gT1NSIGZhaWxlZCB0aGlzIHRpbWUsIGJ1dCBpdCBtaWdodCBzdWNjZWVk
IG5leHQgdGltZSEgTGV0IHRoZSBjb2RlIHJ1biBhIGJpdAogICAgIC8vIGxvbmdlciBhbmQgdGhl
biB0cnkgYWdhaW4uCiAgICAgY29kZUJsb2NrLT5vcHRpbWl6ZUFmdGVyV2FybVVwKCk7CkBAIC0y
MDEyLDIzICsxOTcyLDggQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCwgb3B0aW1pemVfZnJv
bV9yZXQpCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBzdGFja0ZyYW1lLmNhbGxGcmFtZTsK
ICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7CiAgICAg
Ci0jaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikKLSAgICBwcmludGYoIkVudGVyZWQgb3B0aW1p
emVfZnJvbV9yZXQgd2l0aCBleGVjdXRlQ291bnRlciA9ICVkLCByZW9wdGltaXphdGlvblJldHJ5
Q291bnRlciA9ICV1LCBvcHRpbWl6YXRpb25EZWxheUNvdW50ZXIgPSAldVxuIiwgY29kZUJsb2Nr
LT5leGVjdXRlQ291bnRlcigpLCBjb2RlQmxvY2stPnJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVy
KCksIGNvZGVCbG9jay0+b3B0aW1pemF0aW9uRGVsYXlDb3VudGVyKCkpOwotI2VuZGlmCi0KLSAg
ICBpZiAoY29kZUJsb2NrLT5oYXNPcHRpbWl6ZWRSZXBsYWNlbWVudCgpKSB7Ci0jaWYgRU5BQkxF
KEpJVF9WRVJCT1NFX09TUikKLSAgICAgICAgcHJpbnRmKCJSZXR1cm5pbmcgZnJvbSBvbGQgSklU
IGNhbGwgZnJhbWUgd2l0aCBvcHRpbWl6ZWQgcmVwbGFjZW1lbnQgJXAoJXApLCB3aXRoIHN1Y2Nl
c3MvZmFpbCAldS8ldS5cbiIsIGNvZGVCbG9jaywgY29kZUJsb2NrLT5yZXBsYWNlbWVudCgpLCBj
b2RlQmxvY2stPnJlcGxhY2VtZW50KCktPnNwZWN1bGF0aXZlU3VjY2Vzc0NvdW50ZXIoKSwgY29k
ZUJsb2NrLT5yZXBsYWNlbWVudCgpLT5zcGVjdWxhdGl2ZUZhaWxDb3VudGVyKCkpOwotI2VuZGlm
Ci0gICAgICAgIGlmIChjb2RlQmxvY2stPnJlcGxhY2VtZW50KCktPnNob3VsZFJlb3B0aW1pemVO
b3coKSkgewotI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCi0gICAgICAgICAgICBwcmludGYo
IlRyaWdnZXJpbmcgcmVvcHRpbWl6YXRpb24gb2YgJXAoJXApIChpbiByZXR1cm4pLlxuIiwgY29k
ZUJsb2NrLCBjb2RlQmxvY2stPnJlcGxhY2VtZW50KCkpOwotI2VuZGlmCi0gICAgICAgICAgICBj
b2RlQmxvY2stPnJlb3B0aW1pemUoY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCkpOwotICAgICAgICB9
Ci0KKyAgICBpZiAoY29kZUJsb2NrLT5oYXNPcHRpbWl6ZWRSZXBsYWNlbWVudCgpKQogICAgICAg
ICByZXR1cm47Ci0gICAgfQogICAgIAogICAgIGlmICghY29kZUJsb2NrLT5zaG91bGRPcHRpbWl6
ZU5vdygpKSB7CiAjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKaW5kZXggMGM1OTMxOTc2NWExZWNkMTU2NzRm
ZGVmMDZiNzFlNGRkZDZhNWYxZS4uYWY0ZDJjOTRhNTdkMTM0ZTEwMWIxMGI2YWM3YjAyNGEyNjdk
MmU4ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJs
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAK
QEAgLTg0LDE4ICs4NCw2IEBAIERGRzo6SW50cmluc2ljIE5hdGl2ZUV4ZWN1dGFibGU6OmludHJp
bnNpYygpIGNvbnN0CiB9CiAjZW5kaWYKIAotLy8gVXRpbGl0eSBtZXRob2QgdXNlZCBmb3IgamV0
dGlzb25pbmcgY29kZSBibG9ja3MuCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RhdGljIHZvaWQg
amV0dGlzb25Db2RlQmxvY2soSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBPd25QdHI8VD4mIGNv
ZGVCbG9jaykKLXsKLSAgICBBU1NFUlQoY29kZUJsb2NrLT5nZXRKSVRUeXBlKCkgIT0gSklUQ29k
ZTo6QmFzZWxpbmVKSVQpOwotICAgIEFTU0VSVChjb2RlQmxvY2stPmFsdGVybmF0aXZlKCkpOwot
ICAgIE93blB0cjxUPiBjb2RlQmxvY2tUb0pldHRpc29uID0gY29kZUJsb2NrLnJlbGVhc2UoKTsK
LSAgICBjb2RlQmxvY2sgPSBzdGF0aWNfcG9pbnRlcl9jYXN0PFQ+KGNvZGVCbG9ja1RvSmV0dGlz
b24tPnJlbGVhc2VBbHRlcm5hdGl2ZSgpKTsKLSAgICBjb2RlQmxvY2tUb0pldHRpc29uLT51bmxp
bmtJbmNvbWluZ0NhbGxzKCk7Ci0gICAgZ2xvYmFsRGF0YS5oZWFwLmFkZEpldHRpc29uZWRDb2Rl
QmxvY2soc3RhdGljX3BvaW50ZXJfY2FzdDxDb2RlQmxvY2s+KGNvZGVCbG9ja1RvSmV0dGlzb24u
cmVsZWFzZSgpKSk7Ci19Ci0KIGNvbnN0IENsYXNzSW5mbyBTY3JpcHRFeGVjdXRhYmxlOjpzX2lu
Zm8gPSB7ICJTY3JpcHRFeGVjdXRhYmxlIiwgJkV4ZWN1dGFibGVCYXNlOjpzX2luZm8sIDAsIDAg
fTsKIAogY29uc3QgQ2xhc3NJbmZvIEV2YWxFeGVjdXRhYmxlOjpzX2luZm8gPSB7ICJFdmFsRXhl
Y3V0YWJsZSIsICZTY3JpcHRFeGVjdXRhYmxlOjpzX2luZm8sIDAsIDAgfTsKQEAgLTIyMywxMyAr
MjExLDYgQEAgSlNPYmplY3QqIEV2YWxFeGVjdXRhYmxlOjpjb21waWxlSW50ZXJuYWwoRXhlY1N0
YXRlKiBleGVjLCBTY29wZUNoYWluTm9kZSogc2NvcGUKICAgICByZXR1cm4gMDsKIH0KIAotdm9p
ZCBFdmFsRXhlY3V0YWJsZTo6amV0dGlzb25PcHRpbWl6ZWRDb2RlKEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSkKLXsKLSAgICBqZXR0aXNvbkNvZGVCbG9jayhnbG9iYWxEYXRhLCBtX2V2YWxDb2Rl
QmxvY2spOwotICAgIG1faml0Q29kZUZvckNhbGwgPSBtX2V2YWxDb2RlQmxvY2stPmdldEpJVENv
ZGUoKTsKLSAgICBBU1NFUlQoIW1faml0Q29kZUZvckNhbGxXaXRoQXJpdHlDaGVjayk7Ci19Ci0K
IHZvaWQgRXZhbEV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3Ip
CiB7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzLCAmc19pbmZvKTsKQEAgLTM0
OSwxMyArMzMwLDYgQEAgSlNPYmplY3QqIFByb2dyYW1FeGVjdXRhYmxlOjpjb21waWxlSW50ZXJu
YWwoRXhlY1N0YXRlKiBleGVjLCBTY29wZUNoYWluTm9kZSogc2MKICAgICByZXR1cm4gMDsKIH0K
IAotdm9pZCBQcm9ncmFtRXhlY3V0YWJsZTo6amV0dGlzb25PcHRpbWl6ZWRDb2RlKEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSkKLXsKLSAgICBqZXR0aXNvbkNvZGVCbG9jayhnbG9iYWxEYXRhLCBt
X3Byb2dyYW1Db2RlQmxvY2spOwotICAgIG1faml0Q29kZUZvckNhbGwgPSBtX3Byb2dyYW1Db2Rl
QmxvY2stPmdldEpJVENvZGUoKTsKLSAgICBBU1NFUlQoIW1faml0Q29kZUZvckNhbGxXaXRoQXJp
dHlDaGVjayk7Ci19Ci0KIHZvaWQgUHJvZ3JhbUV4ZWN1dGFibGU6OnVubGlua0NhbGxzKCkKIHsK
ICNpZiBFTkFCTEUoSklUKQpAQCAtMzk2LDEzICszNzAsMTMgQEAgSlNPYmplY3QqIEZ1bmN0aW9u
RXhlY3V0YWJsZTo6Y29tcGlsZU9wdGltaXplZEZvckNhbGwoRXhlY1N0YXRlKiBleGVjLCBTY29w
ZUNoYWkKICAgICByZXR1cm4gZXJyb3I7CiB9CiAKLUpTT2JqZWN0KiBGdW5jdGlvbkV4ZWN1dGFi
bGU6OmNvbXBpbGVPcHRpbWl6ZWRGb3JDb25zdHJ1Y3QoRXhlY1N0YXRlKiBleGVjLCBTY29wZUNo
YWluTm9kZSogc2NvcGVDaGFpbk5vZGUsIEV4ZWNTdGF0ZSogY2FsbGVlQXJnc0V4ZWMpCitKU09i
amVjdCogRnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxlT3B0aW1pemVkRm9yQ29uc3RydWN0KEV4
ZWNTdGF0ZSogZXhlYywgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW5Ob2RlKQogewogICAgIEFT
U0VSVChleGVjLT5nbG9iYWxEYXRhKCkuZHluYW1pY0dsb2JhbE9iamVjdCk7CiAgICAgQVNTRVJU
KCEhbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QpOwogICAgIEpTT2JqZWN0KiBlcnJvciA9IDA7CiAg
ICAgaWYgKG1fY29kZUJsb2NrRm9yQ29uc3RydWN0LT5nZXRKSVRUeXBlKCkgIT0gSklUQ29kZTo6
dG9wVGllckpJVCgpKQotICAgICAgICBlcnJvciA9IGNvbXBpbGVGb3JDb25zdHJ1Y3RJbnRlcm5h
bChleGVjLCBzY29wZUNoYWluTm9kZSwgY2FsbGVlQXJnc0V4ZWMsIEpJVENvZGU6Om5leHRUaWVy
SklUKG1fY29kZUJsb2NrRm9yQ29uc3RydWN0LT5nZXRKSVRUeXBlKCkpKTsKKyAgICAgICAgZXJy
b3IgPSBjb21waWxlRm9yQ29uc3RydWN0SW50ZXJuYWwoZXhlYywgc2NvcGVDaGFpbk5vZGUsIEpJ
VENvZGU6Om5leHRUaWVySklUKG1fY29kZUJsb2NrRm9yQ29uc3RydWN0LT5nZXRKSVRUeXBlKCkp
KTsKICAgICBBU1NFUlQoISFtX2NvZGVCbG9ja0ZvckNvbnN0cnVjdCk7CiAgICAgcmV0dXJuIGVy
cm9yOwogfQpAQCAtNDg1LDcgKzQ1OSw3IEBAIEpTT2JqZWN0KiBGdW5jdGlvbkV4ZWN1dGFibGU6
OmNvbXBpbGVGb3JDYWxsSW50ZXJuYWwoRXhlY1N0YXRlKiBleGVjLCBTY29wZUNoYWluCiAgICAg
cmV0dXJuIDA7CiB9CiAKLUpTT2JqZWN0KiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVGb3JD
b25zdHJ1Y3RJbnRlcm5hbChFeGVjU3RhdGUqIGV4ZWMsIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNo
YWluTm9kZSwgRXhlY1N0YXRlKiBjYWxsZWVBcmdzRXhlYywgSklUQ29kZTo6SklUVHlwZSBqaXRU
eXBlKQorSlNPYmplY3QqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvckNvbnN0cnVjdElu
dGVybmFsKEV4ZWNTdGF0ZSogZXhlYywgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW5Ob2RlLCBK
SVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGppdFR5cGUpOwog
ICAgIApAQCAtNTI0LDggKzQ5OCw3IEBAIEpTT2JqZWN0KiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNv
bXBpbGVGb3JDb25zdHJ1Y3RJbnRlcm5hbChFeGVjU3RhdGUqIGV4ZWMsIFNjb3BlCiAjaWYgRU5B
QkxFKEpJVCkKICAgICBpZiAoZXhlYy0+Z2xvYmFsRGF0YSgpLmNhblVzZUpJVCgpKSB7CiAgICAg
ICAgIGJvb2wgZGZnQ29tcGlsZWQgPSBmYWxzZTsKLSAgICAgICAgaWYgKGppdFR5cGUgPT0gSklU
Q29kZTo6REZHSklUKQotICAgICAgICAgICAgZGZnQ29tcGlsZWQgPSBERkc6OnRyeUNvbXBpbGVG
dW5jdGlvbihleGVjLCBjYWxsZWVBcmdzRXhlYywgbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QuZ2V0
KCksIG1faml0Q29kZUZvckNvbnN0cnVjdCwgbV9qaXRDb2RlRm9yQ29uc3RydWN0V2l0aEFyaXR5
Q2hlY2spOworICAgICAgICAvLyBGSVhNRTogTWFrZSBpdCBwb3NzaWJsZSB0byBjb21waWxlIGNv
bnN0cnVjdG9ycyB3aXRoIERGRy4KICAgICAgICAgaWYgKGRmZ0NvbXBpbGVkKSB7CiAgICAgICAg
ICAgICBpZiAobV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QtPmFsdGVybmF0aXZlKCkpCiAgICAgICAg
ICAgICAgICAgbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QtPmFsdGVybmF0aXZlKCktPnVubGlua0lu
Y29taW5nQ2FsbHMoKTsKQEAgLTU2MCwyMCArNTMzLDYgQEAgSlNPYmplY3QqIEZ1bmN0aW9uRXhl
Y3V0YWJsZTo6Y29tcGlsZUZvckNvbnN0cnVjdEludGVybmFsKEV4ZWNTdGF0ZSogZXhlYywgU2Nv
cGUKICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBGdW5jdGlvbkV4ZWN1dGFibGU6OmpldHRpc29u
T3B0aW1pemVkQ29kZUZvckNhbGwoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQotewotICAgIGpl
dHRpc29uQ29kZUJsb2NrKGdsb2JhbERhdGEsIG1fY29kZUJsb2NrRm9yQ2FsbCk7Ci0gICAgbV9q
aXRDb2RlRm9yQ2FsbCA9IG1fY29kZUJsb2NrRm9yQ2FsbC0+Z2V0SklUQ29kZSgpOwotICAgIG1f
aml0Q29kZUZvckNhbGxXaXRoQXJpdHlDaGVjayA9IG1fY29kZUJsb2NrRm9yQ2FsbC0+Z2V0SklU
Q29kZVdpdGhBcml0eUNoZWNrKCk7Ci19Ci0KLXZvaWQgRnVuY3Rpb25FeGVjdXRhYmxlOjpqZXR0
aXNvbk9wdGltaXplZENvZGVGb3JDb25zdHJ1Y3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQot
ewotICAgIGpldHRpc29uQ29kZUJsb2NrKGdsb2JhbERhdGEsIG1fY29kZUJsb2NrRm9yQ29uc3Ry
dWN0KTsKLSAgICBtX2ppdENvZGVGb3JDb25zdHJ1Y3QgPSBtX2NvZGVCbG9ja0ZvckNvbnN0cnVj
dC0+Z2V0SklUQ29kZSgpOwotICAgIG1faml0Q29kZUZvckNvbnN0cnVjdFdpdGhBcml0eUNoZWNr
ID0gbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QtPmdldEpJVENvZGVXaXRoQXJpdHlDaGVjaygpOwot
fQotCiB2b2lkIEZ1bmN0aW9uRXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYg
dmlzaXRvcikKIHsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXMsICZzX2luZm8p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCmluZGV4IDNiYmYw
MGFhMzE2MDZlZThjY2FmZWU0YjY0M2VjMWE5ZmY1YmRiZGUuLjQzYTYzMzM5ZjhkNTNhZmVhNjBh
ZTcwYmMwNGJkNDEwYWEyYzFlYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0V4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
eGVjdXRhYmxlLmgKQEAgLTMyNyw4ICszMjcsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
fQogICAgICAgICAKICAgICAgICAgSlNPYmplY3QqIGNvbXBpbGVPcHRpbWl6ZWQoRXhlY1N0YXRl
KiwgU2NvcGVDaGFpbk5vZGUqKTsKLSAgICAgICAgCi0gICAgICAgIHZvaWQgamV0dGlzb25PcHRp
bWl6ZWRDb2RlKEpTR2xvYmFsRGF0YSYpOwogCiAgICAgICAgIEV2YWxDb2RlQmxvY2smIGdlbmVy
YXRlZEJ5dGVjb2RlKCkKICAgICAgICAgewpAQCAtMzk0LDggKzM5Miw2IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICB9CiAKICAgICAgICAgSlNPYmplY3QqIGNvbXBpbGVPcHRpbWl6ZWQoRXhl
Y1N0YXRlKiwgU2NvcGVDaGFpbk5vZGUqKTsKLSAgICAgICAgCi0gICAgICAgIHZvaWQgamV0dGlz
b25PcHRpbWl6ZWRDb2RlKEpTR2xvYmFsRGF0YSYpOwogCiAgICAgICAgIFByb2dyYW1Db2RlQmxv
Y2smIGdlbmVyYXRlZEJ5dGVjb2RlKCkKICAgICAgICAgewpAQCAtNDc5LDggKzQ3NSw2IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICB9CiAKICAgICAgICAgSlNPYmplY3QqIGNvbXBpbGVPcHRp
bWl6ZWRGb3JDYWxsKEV4ZWNTdGF0ZSosIFNjb3BlQ2hhaW5Ob2RlKiwgRXhlY1N0YXRlKiBjYWxs
ZWVBcmdzRXhlYyA9IDApOwotICAgICAgICAKLSAgICAgICAgdm9pZCBqZXR0aXNvbk9wdGltaXpl
ZENvZGVGb3JDYWxsKEpTR2xvYmFsRGF0YSYpOwogCiAgICAgICAgIGJvb2wgaXNHZW5lcmF0ZWRG
b3JDYWxsKCkgY29uc3QKICAgICAgICAgewpAQCAtNDkzLDE5ICs0ODcsMTcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gKm1fY29kZUJsb2NrRm9yQ2FsbDsKICAgICAgICAg
fQogCi0gICAgICAgIEpTT2JqZWN0KiBjb21waWxlRm9yQ29uc3RydWN0KEV4ZWNTdGF0ZSogZXhl
YywgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW5Ob2RlLCBFeGVjU3RhdGUqIGNhbGxlZUFyZ3NF
eGVjID0gMCkKKyAgICAgICAgSlNPYmplY3QqIGNvbXBpbGVGb3JDb25zdHJ1Y3QoRXhlY1N0YXRl
KiBleGVjLCBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbk5vZGUpCiAgICAgICAgIHsKICAgICAg
ICAgICAgIEFTU0VSVChleGVjLT5nbG9iYWxEYXRhKCkuZHluYW1pY0dsb2JhbE9iamVjdCk7CiAg
ICAgICAgICAgICBKU09iamVjdCogZXJyb3IgPSAwOwogICAgICAgICAgICAgaWYgKCFtX2NvZGVC
bG9ja0ZvckNvbnN0cnVjdCkKLSAgICAgICAgICAgICAgICBlcnJvciA9IGNvbXBpbGVGb3JDb25z
dHJ1Y3RJbnRlcm5hbChleGVjLCBzY29wZUNoYWluTm9kZSwgY2FsbGVlQXJnc0V4ZWMsIEpJVENv
ZGU6OmJvdHRvbVRpZXJKSVQoKSk7CisgICAgICAgICAgICAgICAgZXJyb3IgPSBjb21waWxlRm9y
Q29uc3RydWN0SW50ZXJuYWwoZXhlYywgc2NvcGVDaGFpbk5vZGUsIEpJVENvZGU6OmJvdHRvbVRp
ZXJKSVQoKSk7CiAgICAgICAgICAgICBBU1NFUlQoIWVycm9yID09ICEhbV9jb2RlQmxvY2tGb3JD
b25zdHJ1Y3QpOwogICAgICAgICAgICAgcmV0dXJuIGVycm9yOwogICAgICAgICB9CiAKLSAgICAg
ICAgSlNPYmplY3QqIGNvbXBpbGVPcHRpbWl6ZWRGb3JDb25zdHJ1Y3QoRXhlY1N0YXRlKiwgU2Nv
cGVDaGFpbk5vZGUqLCBFeGVjU3RhdGUqIGNhbGxlZUFyZ3NFeGVjID0gMCk7Ci0gICAgICAgIAot
ICAgICAgICB2b2lkIGpldHRpc29uT3B0aW1pemVkQ29kZUZvckNvbnN0cnVjdChKU0dsb2JhbERh
dGEmKTsKKyAgICAgICAgSlNPYmplY3QqIGNvbXBpbGVPcHRpbWl6ZWRGb3JDb25zdHJ1Y3QoRXhl
Y1N0YXRlKiwgU2NvcGVDaGFpbk5vZGUqKTsKIAogICAgICAgICBib29sIGlzR2VuZXJhdGVkRm9y
Q29uc3RydWN0KCkgY29uc3QKICAgICAgICAgewpAQCAtNTI5LDcgKzUyMSw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICAgICAgaWYgKGtpbmQgPT0gQ29kZUZvckNhbGwpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIGNvbXBpbGVGb3JDYWxsKGV4ZWMsIHNjb3BlQ2hhaW5Ob2RlLCBleGVjKTsK
ICAgICAgICAgICAgIEFTU0VSVChraW5kID09IENvZGVGb3JDb25zdHJ1Y3QpOwotICAgICAgICAg
ICAgcmV0dXJuIGNvbXBpbGVGb3JDb25zdHJ1Y3QoZXhlYywgc2NvcGVDaGFpbk5vZGUsIGV4ZWMp
OworICAgICAgICAgICAgcmV0dXJuIGNvbXBpbGVGb3JDb25zdHJ1Y3QoZXhlYywgc2NvcGVDaGFp
bk5vZGUpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBKU09iamVjdCogY29tcGlsZU9w
dGltaXplZEZvcihFeGVjU3RhdGUqIGV4ZWMsIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluTm9k
ZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQpAQCAtNTQzLDE3ICs1MzUsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgICAgIGlmIChraW5kID09IENvZGVGb3JDYWxsKQogICAgICAg
ICAgICAgICAgIHJldHVybiBjb21waWxlT3B0aW1pemVkRm9yQ2FsbChleGVjLCBzY29wZUNoYWlu
Tm9kZSwgZXhlYyk7CiAgICAgICAgICAgICBBU1NFUlQoa2luZCA9PSBDb2RlRm9yQ29uc3RydWN0
KTsKLSAgICAgICAgICAgIHJldHVybiBjb21waWxlT3B0aW1pemVkRm9yQ29uc3RydWN0KGV4ZWMs
IHNjb3BlQ2hhaW5Ob2RlLCBleGVjKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgdm9p
ZCBqZXR0aXNvbk9wdGltaXplZENvZGVGb3IoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBDb2Rl
U3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChraW5k
ID09IENvZGVGb3JDYWxsKSAKLSAgICAgICAgICAgICAgICBqZXR0aXNvbk9wdGltaXplZENvZGVG
b3JDYWxsKGdsb2JhbERhdGEpOwotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAg
QVNTRVJUKGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCk7Ci0gICAgICAgICAgICAgICAgamV0dGlz
b25PcHRpbWl6ZWRDb2RlRm9yQ29uc3RydWN0KGdsb2JhbERhdGEpOwotICAgICAgICAgICAgfQor
ICAgICAgICAgICAgcmV0dXJuIGNvbXBpbGVPcHRpbWl6ZWRGb3JDb25zdHJ1Y3QoZXhlYywgc2Nv
cGVDaGFpbk5vZGUpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBib29sIGlzR2VuZXJh
dGVkRm9yKENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKQEAgLTYwNSw3ICs1ODcsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKEV4ZWNTdGF0ZSosIGNv
bnN0IElkZW50aWZpZXImIG5hbWUsIGNvbnN0IFNvdXJjZUNvZGUmLCBib29sIGZvcmNlVXNlc0Fy
Z3VtZW50cywgRnVuY3Rpb25QYXJhbWV0ZXJzKiwgYm9vbCk7CiAKICAgICAgICAgSlNPYmplY3Qq
IGNvbXBpbGVGb3JDYWxsSW50ZXJuYWwoRXhlY1N0YXRlKiwgU2NvcGVDaGFpbk5vZGUqLCBFeGVj
U3RhdGUqIGNhbGxlZUFyZ3NFeGVjLCBKSVRDb2RlOjpKSVRUeXBlKTsKLSAgICAgICAgSlNPYmpl
Y3QqIGNvbXBpbGVGb3JDb25zdHJ1Y3RJbnRlcm5hbChFeGVjU3RhdGUqLCBTY29wZUNoYWluTm9k
ZSosIEV4ZWNTdGF0ZSogY2FsbGVlQXJnc0V4ZWMsIEpJVENvZGU6OkpJVFR5cGUpOworICAgICAg
ICBKU09iamVjdCogY29tcGlsZUZvckNvbnN0cnVjdEludGVybmFsKEV4ZWNTdGF0ZSosIFNjb3Bl
Q2hhaW5Ob2RlKiwgSklUQ29kZTo6SklUVHlwZSk7CiAgICAgICAgIAogICAgICAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwg
U2NyaXB0RXhlY3V0YWJsZTo6U3RydWN0dXJlRmxhZ3M7CiAgICAgICAgIHVuc2lnbmVkIG1fbnVt
Q2FwdHVyZWRWYXJpYWJsZXMgOiAzMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93dGYvQml0VmVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0JpdFZlY3Rvci5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNWRmNDE1ODJmYWVhZDgwYTkxZjJhZmVm
YmE2MmI0YWIzYTVlNzUwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQml0VmVjdG9yLmgKKysrIC9kZXYvbnVs
bApAQCAtMSwyNDQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKLSAqLwotCi0jaWZuZGVmIEJpdFZlY3Rvcl9oCi0jZGVmaW5lIEJpdFZlY3Rvcl9oCi0KLSNp
bmNsdWRlIDxhbGdvcml0aG0+Ci0jaW5jbHVkZSA8c3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL0Fz
c2VydGlvbnMuaD4KLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9T
dGRMaWJFeHRyYXMuaD4KLQotbmFtZXNwYWNlIFdURiB7Ci0KLS8vIFRoaXMgaXMgYSBzcGFjZS1l
ZmZpY2llbnQsIHJlc2l6ZWFibGUgYml0dmVjdG9yIGNsYXNzLiBJbiB0aGUgY29tbW9uIGNhc2Ug
aXQKLS8vIG9jY3VwaWVzIG9uZSB3b3JkLCBidXQgaWYgbmVjZXNzYXJ5LCBpdCB3aWxsIGluZmxh
dGUgdGhpcyBvbmUgd29yZCB0byBwb2ludAotLy8gdG8gYSBzaW5nbGUgY2h1bmsgb2Ygb3V0LW9m
LWxpbmUgYWxsb2NhdGVkIHN0b3JhZ2UgdG8gc3RvcmUgYW4gYXJiaXRyYXJ5IG51bWJlcgotLy8g
b2YgYml0cy4KLS8vCi0vLyAtIFRoZSBiaXR2ZWN0b3IgbmVlZHMgdG8gYmUgcmVzaXplZCBtYW51
YWxseSAoanVzdCBjYWxsIGVuc3VyZVNpemUoKSkuCi0vLwotLy8gLSBUaGUgYml0dmVjdG9yIHJl
bWVtYmVycyB0aGUgYm91bmQgb2YgaG93IG1hbnkgYml0cyBjYW4gYmUgc3RvcmVkLCBidXQgdGhp
cwotLy8gICBtYXkgYmUgc2xpZ2h0bHkgZ3JlYXRlciAoYnkgYXMgbXVjaCBhcyBzb21lIHBsYXRm
b3JtLXNwZWNpZmljIGNvbnN0YW50KQotLy8gICB0aGFuIHRoZSBsYXN0IGFyZ3VtZW50IHBhc3Nl
ZCB0byBlbnN1cmVTaXplKCkuCi0vLwotLy8gLSBBY2Nlc3NlcyBBU1NFUlQgdGhhdCB5b3UgYXJl
IHdpdGhpbiBib3VuZHMuCi0vLwotLy8gLSBCaXRzIGFyZSBub3QgYXV0b21hdGljYWxseSBpbml0
aWFsaXplZCB0byB6ZXJvLgotLy8KLS8vIE9uIHRoZSBvdGhlciBoYW5kLCB0aGlzIEJpdFZlY3Rv
ciBjbGFzcyBtYXkgbm90IGJlIHRoZSBmYXN0ZXN0IGFyb3VuZCwgc2luY2UKLS8vIGl0IGRvZXMg
Y29uZGl0aW9uYWxzIG9uIGV2ZXJ5IGdldC9zZXQvY2xlYXIuIEJ1dCBpdCBpcyBncmVhdCBpZiB5
b3UgbmVlZCB0bwotLy8ganVnZ2xlIGEgbG90IG9mIHZhcmlhYmxlLWxlbmd0aCBCaXRWZWN0b3Jz
IGFuZCB5b3UncmUgd29ycmllZCBhYm91dCB3YXN0aW5nCi0vLyBzcGFjZS4KLQotY2xhc3MgQml0
VmVjdG9yIHsKLXB1YmxpYzogCi0gICAgQml0VmVjdG9yKCkKLSAgICAgICAgOiBtX2JpdHNPclBv
aW50ZXIobWFrZUlubGluZUJpdHMoMCkpCi0gICAgewotICAgIH0KLSAgICAKLSAgICBCaXRWZWN0
b3IoY29uc3QgQml0VmVjdG9yJiBvdGhlcikKLSAgICAgICAgOiBtX2JpdHNPclBvaW50ZXIobWFr
ZUlubGluZUJpdHMoMCkpCi0gICAgewotICAgICAgICAoKnRoaXMpID0gb3RoZXI7Ci0gICAgfQot
ICAgIAotICAgIH5CaXRWZWN0b3IoKQotICAgIHsKLSAgICAgICAgaWYgKGlzSW5saW5lKCkpCi0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIE91dE9mTGluZUJpdHM6OmRlc3Ryb3kob3V0T2ZM
aW5lQml0cygpKTsKLSAgICB9Ci0gICAgCi0gICAgQml0VmVjdG9yJiBvcGVyYXRvcj0oY29uc3Qg
Qml0VmVjdG9yJiBvdGhlcikKLSAgICB7Ci0gICAgICAgIHVpbnRwdHJfdCBuZXdCaXRzT3JQb2lu
dGVyOwotICAgICAgICBpZiAob3RoZXIuaXNJbmxpbmUoKSkKLSAgICAgICAgICAgIG5ld0JpdHNP
clBvaW50ZXIgPSBvdGhlci5tX2JpdHNPclBvaW50ZXI7Ci0gICAgICAgIGVsc2UgewotICAgICAg
ICAgICAgT3V0T2ZMaW5lQml0cyogbmV3T3V0T2ZMaW5lQml0cyA9IE91dE9mTGluZUJpdHM6OmNy
ZWF0ZShvdGhlci5zaXplKCkpOwotICAgICAgICAgICAgbWVtY3B5KG5ld091dE9mTGluZUJpdHMt
PmJpdHMoKSwgb3RoZXIuYml0cygpLCBieXRlQ291bnQob3RoZXIuc2l6ZSgpKSk7Ci0gICAgICAg
ICAgICBuZXdCaXRzT3JQb2ludGVyID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KG5ld091
dE9mTGluZUJpdHMpOwotICAgICAgICB9Ci0gICAgICAgIGlmICghaXNJbmxpbmUoKSkKLSAgICAg
ICAgICAgIE91dE9mTGluZUJpdHM6OmRlc3Ryb3kob3V0T2ZMaW5lQml0cygpKTsKLSAgICAgICAg
bV9iaXRzT3JQb2ludGVyID0gbmV3Qml0c09yUG9pbnRlcjsKLSAgICAgICAgcmV0dXJuICp0aGlz
OwotICAgIH0KLQotICAgIHNpemVfdCBzaXplKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmIChp
c0lubGluZSgpKQotICAgICAgICAgICAgcmV0dXJuIG1heElubGluZUJpdHMoKTsKLSAgICAgICAg
cmV0dXJuIG91dE9mTGluZUJpdHMoKS0+bnVtQml0cygpOwotICAgIH0KLQotICAgIHZvaWQgZW5z
dXJlU2l6ZShzaXplX3QgbnVtQml0cykKLSAgICB7Ci0gICAgICAgIGlmIChudW1CaXRzIDw9IHNp
emUoKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgcmVzaXplT3V0T2ZMaW5lKG51bUJp
dHMpOwotICAgIH0KLSAgICAKLSAgICAvLyBMaWtlIGVuc3VyZVNpemUoKSwgYnV0IHN1cHBvcnRz
IHJlZHVjaW5nIHRoZSBzaXplIG9mIHRoZSBiaXR2ZWN0b3IuCi0gICAgdm9pZCByZXNpemUoc2l6
ZV90IG51bUJpdHMpCi0gICAgewotICAgICAgICBpZiAoaXNJbmxpbmUoKSkKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgCi0gICAgICAgIGlmIChudW1CaXRzIDw9IG1heElubGluZUJpdHMo
KSkgewotICAgICAgICAgICAgT3V0T2ZMaW5lQml0cyogbXlPdXRPZkxpbmVCaXRzID0gb3V0T2ZM
aW5lQml0cygpOwotICAgICAgICAgICAgbV9iaXRzT3JQb2ludGVyID0gbWFrZUlubGluZUJpdHMo
Km15T3V0T2ZMaW5lQml0cy0+Yml0cygpKTsKLSAgICAgICAgICAgIE91dE9mTGluZUJpdHM6OmRl
c3Ryb3kobXlPdXRPZkxpbmVCaXRzKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQot
ICAgICAgICAKLSAgICAgICAgcmVzaXplT3V0T2ZMaW5lKG51bUJpdHMpOwotICAgIH0KLSAgICAK
LSAgICB2b2lkIGNsZWFyQWxsKCkKLSAgICB7Ci0gICAgICAgIGlmIChpc0lubGluZSgpKQotICAg
ICAgICAgICAgbV9iaXRzT3JQb2ludGVyID0gbWFrZUlubGluZUJpdHMoMCk7Ci0gICAgICAgIGVs
c2UKLSAgICAgICAgICAgIG1lbXNldChvdXRPZkxpbmVCaXRzKCktPmJpdHMoKSwgMCwgYnl0ZUNv
dW50KHNpemUoKSkpOwotICAgIH0KLQotICAgIGJvb2wgZ2V0KHNpemVfdCBiaXQpIGNvbnN0Ci0g
ICAgewotICAgICAgICBBU1NFUlQoYml0IDwgc2l6ZSgpKTsKLSAgICAgICAgcmV0dXJuICEhKGJp
dHMoKVtiaXQgPj4gYml0c0luUG9pbnRlcigpXSAmIChzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDEp
IDw8IChiaXQgJiAoYml0c0luUG9pbnRlcigpIC0gMSkpKSk7Ci0gICAgfQotICAgIAotICAgIHZv
aWQgc2V0KHNpemVfdCBiaXQpCi0gICAgewotICAgICAgICBBU1NFUlQoYml0IDwgc2l6ZSgpKTsK
LSAgICAgICAgYml0cygpW2JpdCA+PiBiaXRzSW5Qb2ludGVyKCldIHw9IChzdGF0aWNfY2FzdDx1
aW50cHRyX3Q+KDEpIDw8IChiaXQgJiAoYml0c0luUG9pbnRlcigpIC0gMSkpKTsKLSAgICB9Ci0g
ICAgCi0gICAgdm9pZCBjbGVhcihzaXplX3QgYml0KQotICAgIHsKLSAgICAgICAgQVNTRVJUKGJp
dCA8IHNpemUoKSk7Ci0gICAgICAgIGJpdHMoKVtiaXQgPj4gYml0c0luUG9pbnRlcigpXSAmPSB+
KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMSkgPDwgKGJpdCAmIChiaXRzSW5Qb2ludGVyKCkgLSAx
KSkpOwotICAgIH0KLSAgICAKLSAgICB2b2lkIHNldChzaXplX3QgYml0LCBib29sIHZhbHVlKQot
ICAgIHsKLSAgICAgICAgaWYgKHZhbHVlKQotICAgICAgICAgICAgc2V0KGJpdCk7Ci0gICAgICAg
IGVsc2UKLSAgICAgICAgICAgIGNsZWFyKGJpdCk7Ci0gICAgfQotICAgIAotcHJpdmF0ZToKLSAg
ICBzdGF0aWMgdW5zaWduZWQgYml0c0luUG9pbnRlcigpCi0gICAgewotICAgICAgICByZXR1cm4g
c2l6ZW9mKHZvaWQqKSA8PCAzOwotICAgIH0KLSAgICAKLSAgICBzdGF0aWMgdW5zaWduZWQgbWF4
SW5saW5lQml0cygpCi0gICAgewotICAgICAgICByZXR1cm4gYml0c0luUG9pbnRlcigpIC0gMTsK
LSAgICB9Ci0gICAgCi0gICAgLy8gVGhpcyBmdW5jdGlvbiByZWxpZXMgb24gYml0Q291bnQgYmVp
bmcgYSBtdWx0aXBsZSBvZiBiaXRzSW5Qb2ludGVyKCkKLSAgICBzdGF0aWMgc2l6ZV90IGJ5dGVD
b3VudChzaXplX3QgYml0Q291bnQpCi0gICAgewotICAgICAgICBBU1NFUlQoIShiaXRDb3VudCAm
IChiaXRzSW5Qb2ludGVyKCkgLSAxKSkpOwotICAgICAgICByZXR1cm4gYml0Q291bnQgPj4gMzsK
LSAgICB9Ci0gICAgCi0gICAgc3RhdGljIHVpbnRwdHJfdCBtYWtlSW5saW5lQml0cyh1aW50cHRy
X3QgYml0cykKLSAgICB7Ci0gICAgICAgIEFTU0VSVCghKGJpdHMgJiAoc3RhdGljX2Nhc3Q8dWlu
dHB0cl90PigxKSA8PCBtYXhJbmxpbmVCaXRzKCkpKSk7Ci0gICAgICAgIHJldHVybiBiaXRzIHwg
KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMSkgPDwgbWF4SW5saW5lQml0cygpKTsKLSAgICB9Ci0g
ICAgCi0gICAgY2xhc3MgT3V0T2ZMaW5lQml0cyB7Ci0gICAgcHVibGljOgotICAgICAgICBzaXpl
X3QgbnVtQml0cygpIGNvbnN0IHsgcmV0dXJuIG1fbnVtQml0czsgfQotICAgICAgICBzaXplX3Qg
bnVtV29yZHMoKSBjb25zdCB7IHJldHVybiAobV9udW1CaXRzICsgYml0c0luUG9pbnRlcigpIC0g
MSkgPj4gYml0c0luUG9pbnRlcigpOyB9Ci0gICAgICAgIHVpbnRwdHJfdCogYml0cygpIHsgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Kj4odGhpcyArIDEpOyB9Ci0gICAgICAgIGNv
bnN0IHVpbnRwdHJfdCogYml0cygpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdWludHB0cl90Kj4odGhpcyArIDEpOyB9Ci0gICAgICAgIAotICAgICAgICBzdGF0aWMgT3V0
T2ZMaW5lQml0cyogY3JlYXRlKHNpemVfdCBudW1CaXRzKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBudW1CaXRzID0gKG51bUJpdHMgKyBiaXRzSW5Qb2ludGVyKCkgLSAxKSAmIH5iaXRzSW5Qb2lu
dGVyKCk7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IChmYXN0TWFsbG9jKHNpemVvZihPdXRPZkxp
bmVCaXRzKSArIChudW1CaXRzID4+IGJpdHNJblBvaW50ZXIoKSkpKSBPdXRPZkxpbmVCaXRzKG51
bUJpdHMpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBzdGF0aWMgdm9pZCBkZXN0cm95
KE91dE9mTGluZUJpdHMqIG91dE9mTGluZUJpdHMpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZh
c3RGcmVlKG91dE9mTGluZUJpdHMpOwotICAgICAgICB9Ci0KLSAgICBwcml2YXRlOgotICAgICAg
ICBPdXRPZkxpbmVCaXRzKHNpemVfdCBudW1CaXRzKQotICAgICAgICAgICAgOiBtX251bUJpdHMo
bnVtQml0cykKLSAgICAgICAgewotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBzaXplX3Qg
bV9udW1CaXRzOwotICAgIH07Ci0gICAgCi0gICAgYm9vbCBpc0lubGluZSgpIGNvbnN0IHsgcmV0
dXJuIG1fYml0c09yUG9pbnRlciA+PiBtYXhJbmxpbmVCaXRzKCk7IH0KLSAgICAKLSAgICBjb25z
dCBPdXRPZkxpbmVCaXRzKiBvdXRPZkxpbmVCaXRzKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBPdXRPZkxpbmVCaXRzKj4obV9iaXRzT3JQb2ludGVyKTsgfQotICAgIE91
dE9mTGluZUJpdHMqIG91dE9mTGluZUJpdHMoKSB7IHJldHVybiByZWludGVycHJldF9jYXN0PE91
dE9mTGluZUJpdHMqPihtX2JpdHNPclBvaW50ZXIpOyB9Ci0gICAgCi0gICAgdm9pZCByZXNpemVP
dXRPZkxpbmUoc2l6ZV90IG51bUJpdHMpCi0gICAgewotICAgICAgICBBU1NFUlQobnVtQml0cyA+
IG1heElubGluZUJpdHMoKSk7Ci0gICAgICAgIE91dE9mTGluZUJpdHMqIG5ld091dE9mTGluZUJp
dHMgPSBPdXRPZkxpbmVCaXRzOjpjcmVhdGUobnVtQml0cyk7Ci0gICAgICAgIG1lbWNweShuZXdP
dXRPZkxpbmVCaXRzLT5iaXRzKCksIGJpdHMoKSwgYnl0ZUNvdW50KHN0ZDo6bWluKHNpemUoKSwg
bnVtQml0cykpKTsKLSAgICAgICAgaWYgKCFpc0lubGluZSgpKQotICAgICAgICAgICAgT3V0T2ZM
aW5lQml0czo6ZGVzdHJveShvdXRPZkxpbmVCaXRzKCkpOwotICAgICAgICBtX2JpdHNPclBvaW50
ZXIgPSByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4obmV3T3V0T2ZMaW5lQml0cyk7Ci0gICAg
fQotICAgIAotICAgIHVpbnRwdHJfdCogYml0cygpCi0gICAgewotICAgICAgICBpZiAoaXNJbmxp
bmUoKSkKLSAgICAgICAgICAgIHJldHVybiAmbV9iaXRzT3JQb2ludGVyOwotICAgICAgICByZXR1
cm4gb3V0T2ZMaW5lQml0cygpLT5iaXRzKCk7Ci0gICAgfQotICAgIAotICAgIGNvbnN0IHVpbnRw
dHJfdCogYml0cygpIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAoaXNJbmxpbmUoKSkKLSAgICAg
ICAgICAgIHJldHVybiAmbV9iaXRzT3JQb2ludGVyOwotICAgICAgICByZXR1cm4gb3V0T2ZMaW5l
Qml0cygpLT5iaXRzKCk7Ci0gICAgfQotICAgIAotICAgIHVpbnRwdHJfdCBtX2JpdHNPclBvaW50
ZXI7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXVEYKLQotdXNpbmcgV1RGOjpCaXRWZWN0b3I7Ci0K
LSNlbmRpZiAvLyBCaXRWZWN0b3JfaAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>