<?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>157304</bug_id>
          
          <creation_ts>2016-05-03 00:40:20 -0700</creation_ts>
          <short_desc>REGRESSION(r200350): broke jsc tests (Requested by alexchristensen on #webkit).</short_desc>
          <delta_ts>2016-05-03 03:01:29 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>157286</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>joepeck</cc>
    
    <cc>timothy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1189697</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-03 00:40:20 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/200350 broke the build:
broke jsc tests (Requested by alexchristensen on #webkit).

This is an automatic bug report generated by webkitbot. 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 fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189699</commentid>
    <comment_count>1</comment_count>
      <attachid>277986</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-03 00:40:55 -0700</bug_when>
    <thetext>Created attachment 277986
ROLLOUT of r200350

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>1189712</commentid>
    <comment_count>2</comment_count>
      <attachid>277986</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-05-03 02:14:03 -0700</bug_when>
    <thetext>Comment on attachment 277986
ROLLOUT of r200350

Clearing cq flag at the moment as I&apos;m attempting a fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189718</commentid>
    <comment_count>3</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-05-03 03:01:29 -0700</bug_when>
    <thetext>I believe my fix &lt;http://trac.webkit.org/changeset/200367&gt; addressed this. All bots are green so far with jsc-cloop bots passing where they were previous failing. I&apos;m going to close this.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>277986</attachid>
            <date>2016-05-03 00:40:55 -0700</date>
            <delta_ts>2016-05-03 02:14:03 -0700</delta_ts>
            <desc>ROLLOUT of r200350</desc>
            <filename>bug-157304-20160503004132.patch</filename>
            <type>text/plain</type>
            <size>69317</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAwMzYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
YTM2YjMzNjc0MjMyOTZhNTlkMjhhNDRlOWNjOGY0ZjUwZjA4ZDgzLi4yZGRmZGMxN2Q5M2ViODU0
ZDkxYzIwNmYxYWU3ZjFiNTI4MjE1ZTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAxNi0wNS0wMyAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIwMDM1MC4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NzMwNAorCisgICAg
ICAgIGJyb2tlIGpzYyB0ZXN0cyAoUmVxdWVzdGVkIGJ5IGFsZXhjaHJpc3RlbnNlbiBvbiAjd2Vi
a2l0KS4KKworICAgICAgICBSZXZlcnRlZCBjaGFuZ2VzZXQ6CisKKyAgICAgICAgIk1ha2UgY29u
c29sZSBhIG5hbWVzcGFjZSBvYmplY3QgKGxpa2UgTWF0aC9KU09OKSwgYWxsb3dpbmcKKyAgICAg
ICAgZnVuY3Rpb25zIHRvIGJlIGNhbGxlZCB1bmJvdW5kIgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3Mjg2CisgICAgICAgIGh0dHA6Ly90cmFjLndl
YmtpdC5vcmcvY2hhbmdlc2V0LzIwMDM1MAorCiAyMDE2LTA1LTAyICBKb3NlcGggUGVjb3Jhcm8g
IDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogUmVmbGVjdC50
b1N0cmluZygpIHNob3VsZCBiZSBbb2JqZWN0IE9iamVjdF0gbm90IFtvYmplY3QgUmVmbGVjdF0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBiNDMzNjNkNWRiZTM1MDVmMzc0
ZjU2NGZiZGMzMDliMjE1MmI4ZmYzLi5lYmVkODRhNGIxY2Y0ZDU2NmYwMTc0YTNlZDU3MDZhMGM1
ODE3ZWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC02MjUsNyArNjI1
LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBydW50aW1lL0NvbXBpbGF0aW9u
UmVzdWx0LmNwcAogICAgIHJ1bnRpbWUvQ29tcGxldGlvbi5jcHAKICAgICBydW50aW1lL0NvbnNv
bGVDbGllbnQuY3BwCi0gICAgcnVudGltZS9Db25zb2xlT2JqZWN0LmNwcAorICAgIHJ1bnRpbWUv
Q29uc29sZVByb3RvdHlwZS5jcHAKICAgICBydW50aW1lL0NvbnN0YW50TW9kZS5jcHAKICAgICBy
dW50aW1lL0NvbnN0cnVjdERhdGEuY3BwCiAgICAgcnVudGltZS9Db250cm9sRmxvd1Byb2ZpbGVy
LmNwcApAQCAtNjkwLDYgKzY5MCw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAg
cnVudGltZS9KU0NKU1ZhbHVlLmNwcAogICAgIHJ1bnRpbWUvSlNDYWxsZWUuY3BwCiAgICAgcnVu
dGltZS9KU0NlbGwuY3BwCisgICAgcnVudGltZS9KU0NvbnNvbGUuY3BwCiAgICAgcnVudGltZS9K
U0RhdGFWaWV3LmNwcAogICAgIHJ1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlwZS5jcHAKICAgICBy
dW50aW1lL0pTRGF0ZU1hdGguY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGVl
YmQ5NzUwOTQ5NjczNDA1YzY1OTdlMDE5MGI1NWMxMzlhYmFjMzguLmExNWNmZDU4OWJmYWQyZDA4
MGQxMDhlNDY0YWQyYmViNWNkOTU2MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC0xNTY4LDYgKzE1NjgsMTAgQEAKIAkJQTUzMzlFQzkxQkI0QjQ2MDAwNTRGMDA1IC8qIEhlYXBP
YnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTUzMzlFQzgxQkI0QjQ1MTAwNTRGMDA1IC8qIEhlYXBPYnNlcnZlci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE1Mzk4RkFCMUM3NTBEQTQwMDYw
QTk2MyAvKiBIZWFwUHJvZmlsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE1Mzk4RkFBMUM3NTBEOTUwMDYwQTk2MyAvKiBIZWFwUHJvZmlsZXIuaCAq
LzsgfTsKIAkJQTUzOThGQUMxQzc1MERBNjAwNjBBOTYzIC8qIEhlYXBQcm9maWxlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTM5OEZBOTFDNzUw
RDk1MDA2MEE5NjMgLyogSGVhcFByb2ZpbGVyLmNwcCAqLzsgfTsKKwkJQTUzQ0UwODUxOEJDMUE1
NjAwQkVERjc2IC8qIENvbnNvbGVQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUzQ0UwODExOEJDMUE1NjAwQkVERjc2IC8qIENvbnNv
bGVQcm90b3R5cGUuY3BwICovOyB9OworCQlBNTNDRTA4NjE4QkMxQTU2MDBCRURGNzYgLyogQ29u
c29sZVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTUzQ0UwODIxOEJDMUE1NjAwQkVERjc2IC8qIENvbnNvbGVQcm90b3R5cGUuaCAqLzsg
fTsKKwkJQTUzQ0UwODcxOEJDMUE1NjAwQkVERjc2IC8qIEpTQ29uc29sZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTNDRTA4MzE4QkMxQTU2MDBC
RURGNzYgLyogSlNDb25zb2xlLmNwcCAqLzsgfTsKKwkJQTUzQ0UwODgxOEJDMUE1NjAwQkVERjc2
IC8qIEpTQ29uc29sZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTUzQ0UwODQxOEJDMUE1NjAwQkVERjc2IC8qIEpTQ29uc29sZS5oICovOyB9OwogCQlB
NTNDRTA4QTE4QkMyMUMzMDBCRURGNzYgLyogQ29uc29sZUNsaWVudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUzQ0UwODkxOEJDMjFDMzAwQkVERjc2
IC8qIENvbnNvbGVDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlBNTNGMUFDMDE4QzkwRjhGMDA3MkVCNkQgLyogZnJhbWV3b3JrLnNiIGlu
IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTNGMUFCRTE4
QzkwRUM3MDA3MkVCNkQgLyogZnJhbWV3b3JrLnNiICovOyB9OwogCQlBNTQ5ODIwMzE4OTFEMEIw
MDA4MUU1QjggLyogRXZlbnRMb29wLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE1NDk4MjAxMTg5MUQwQjAwMDgxRTVCOCAvKiBFdmVudExvb3AuY3Bw
ICovOyB9OwpAQCAtMTU4NSw4ICsxNTg5LDYgQEAKIAkJQTU1MTY1RDUxQkRGMTM1QTAwM0I3NUMx
IC8qIFNjcmlwdFByb2ZpbGluZ1Njb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBNTUxNjVENDFCREYxMzREMDAzQjc1QzEgLyogU2NyaXB0UHJvZmls
aW5nU2NvcGUuaCAqLzsgfTsKIAkJQTU1MkMzN0YxQUREQjhGRTAwMTM5NzI2IC8qIEpTUmVtb3Rl
SW5zcGVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE1NTJDMzdEMUFEREI4RkUwMDEzOTcyNiAvKiBKU1JlbW90ZUluc3BlY3Rvci5jcHAgKi87
IH07CiAJCUE1NTJDMzgwMUFEREI4RkUwMDEzOTcyNiAvKiBKU1JlbW90ZUluc3BlY3Rvci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU1MkMzN0UxQURE
QjhGRTAwMTM5NzI2IC8qIEpTUmVtb3RlSW5zcGVjdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJQTU1NzE0QkUxQ0Q4MDQ5RjAwMDREMkM2IC8q
IENvbnNvbGVPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE1NTcxNEJEMUNEODA0OEUwMDA0RDJDNiAvKiBDb25zb2xlT2JqZWN0LmggKi87IH07
Ci0JCUE1NTcxNEJGMUNEODA0QTQwMDA0RDJDNiAvKiBDb25zb2xlT2JqZWN0LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1NTcxNEJDMUNEODA0OEUw
MDA0RDJDNiAvKiBDb25zb2xlT2JqZWN0LmNwcCAqLzsgfTsKIAkJQTU1RDkzQTUxODUwMTJBODAw
NDAwREVEIC8qIFNjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTVEOTNBMzE4NTAxMkE4MDA0MDBERUQgLyogU2NyaXB0
RnVuY3Rpb25DYWxsLmNwcCAqLzsgfTsKIAkJQTU1RDkzQTYxODUwMTJBODAwNDAwREVEIC8qIFNj
cmlwdEZ1bmN0aW9uQ2FsbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTU1RDkzQTQxODUwMTJBODAwNDAwREVEIC8qIFNjcmlwdEZ1bmN0aW9uQ2FsbC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE1NUQ5
M0FDMTg1MTRGNzkwMDQwMERFRCAvKiBJbnNwZWN0b3JQcm90b2NvbFR5cGVzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTVEOTNBQjE4NTE0Rjc5MDA0
MDBERUQgLyogSW5zcGVjdG9yUHJvdG9jb2xUeXBlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0zNzg3LDYgKzM3ODksMTAgQEAKIAkJQTUzMzlF
QzgxQkI0QjQ1MTAwNTRGMDA1IC8qIEhlYXBPYnNlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBIZWFwT2JzZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQTUzOThGQTkxQzc1MEQ5NTAwNjBBOTYzIC8qIEhlYXBQcm9maWxlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIZWFwUHJvZmlsZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBNTM5OEZBQTFDNzUwRDk1MDA2MEE5NjMgLyogSGVhcFByb2Zp
bGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhlYXBQcm9maWxlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTNDRTA4MTE4QkMxQTU2MDBCRURGNzYgLyog
Q29uc29sZVByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBDb25zb2xlUHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTUz
Q0UwODIxOEJDMUE1NjAwQkVERjc2IC8qIENvbnNvbGVQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQ29uc29sZVByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlBNTNDRTA4MzE4QkMxQTU2MDBCRURGNzYgLyogSlNDb25zb2xlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ29uc29sZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1M0NFMDg0MThCQzFBNTYwMEJFREY3NiAvKiBKU0Nv
bnNvbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDb25zb2xlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1M0NFMDg5MThCQzIxQzMwMEJFREY3NiAvKiBD
b25zb2xlQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbnNvbGVD
bGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTUzRjFBQkUxOEM5MEVDNzAw
NzJFQjZEIC8qIGZyYW1ld29yay5zYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBmcmFtZXdvcmsuc2I7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUE1NDk4MjAxMTg5MUQwQjAwMDgxRTVCOCAvKiBFdmVudExvb3AuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRXZlbnRMb29wLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM4MDIsOCArMzgwOCw2IEBACiAJCUE1NTE2NUQ0
MUJERjEzNEQwMDNCNzVDMSAvKiBTY3JpcHRQcm9maWxpbmdTY29wZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRQcm9maWxpbmdTY29wZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBNTUyQzM3RDFBRERCOEZFMDAxMzk3MjYgLyogSlNSZW1vdGVJbnNw
ZWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNSZW1vdGVJ
bnNwZWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTUyQzM3RTFBRERC
OEZFMDAxMzk3MjYgLyogSlNSZW1vdGVJbnNwZWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNSZW1vdGVJbnNwZWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJQTU1NzE0QkMxQ0Q4MDQ4RTAwMDREMkM2IC8qIENvbnNvbGVPYmplY3QuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29uc29sZU9iamVjdC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE1NTcxNEJEMUNEODA0OEUwMDA0RDJDNiAvKiBDb25z
b2xlT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbnNvbGVPYmpl
Y3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU1RDkzQTMxODUwMTJBODAwNDAw
REVEIC8qIFNjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBTY3JpcHRGdW5jdGlvbkNhbGwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBNTVEOTNBNDE4NTAxMkE4MDA0MDBERUQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdEZ1bmN0aW9uQ2FsbC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTVEOTNBQjE4NTE0Rjc5MDA0MDBERUQgLyog
SW5zcGVjdG9yUHJvdG9jb2xUeXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBJbnNwZWN0b3JQcm90b2NvbFR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC01NTUwLDggKzU1NTQsOCBAQAogCQkJCTBGREIyQ0U5MTc0ODk2QzcwMDdCM0MxQiAvKiBDb25j
dXJyZW50SklUTG9jay5oICovLAogCQkJCUE1QjZBNzRDMThDNkRCQTYwMEYxMUU5MSAvKiBDb25z
b2xlQ2xpZW50LmNwcCAqLywKIAkJCQlBNTNDRTA4OTE4QkMyMUMzMDBCRURGNzYgLyogQ29uc29s
ZUNsaWVudC5oICovLAotCQkJCUE1NTcxNEJDMUNEODA0OEUwMDA0RDJDNiAvKiBDb25zb2xlT2Jq
ZWN0LmNwcCAqLywKLQkJCQlBNTU3MTRCRDFDRDgwNDhFMDAwNEQyQzYgLyogQ29uc29sZU9iamVj
dC5oICovLAorCQkJCUE1M0NFMDgxMThCQzFBNTYwMEJFREY3NiAvKiBDb25zb2xlUHJvdG90eXBl
LmNwcCAqLywKKwkJCQlBNTNDRTA4MjE4QkMxQTU2MDBCRURGNzYgLyogQ29uc29sZVByb3RvdHlw
ZS5oICovLAogCQkJCUE1RkQwMDcxMTg5QjAzOEMwMDYzMzIzMSAvKiBDb25zb2xlVHlwZXMuaCAq
LywKIAkJCQkwRjk3OEIzQTFBQUVBNzFEMDA3QzczNjkgLyogQ29uc3RhbnRNb2RlLmNwcCAqLywK
IAkJCQkwRkZDOTlEMDE4NEVDOEFEMDA5QzEwQUIgLyogQ29uc3RhbnRNb2RlLmggKi8sCkBAIC01
NzAyLDYgKzU3MDYsOCBAQAogCQkJCUY2OTJBODg3MDI1NTU5N0QwMUZGNjBGNyAvKiBKU0NKU1Zh
bHVlLmNwcCAqLywKIAkJCQkxNEFCQjM2RTA5OUMwNzY0MDBFMkEyNEYgLyogSlNDSlNWYWx1ZS5o
ICovLAogCQkJCTg2NUEzMEYwMTM1MDA3RTEwMENEQjQ5RSAvKiBKU0NKU1ZhbHVlSW5saW5lcy5o
ICovLAorCQkJCUE1M0NFMDgzMThCQzFBNTYwMEJFREY3NiAvKiBKU0NvbnNvbGUuY3BwICovLAor
CQkJCUE1M0NFMDg0MThCQzFBNTYwMEJFREY3NiAvKiBKU0NvbnNvbGUuaCAqLywKIAkJCQkwRjJC
NjZCRDE3QjZCNUFCMDBBN0FFM0YgLyogSlNEYXRhVmlldy5jcHAgKi8sCiAJCQkJMEYyQjY2QkUx
N0I2QjVBQjAwQTdBRTNGIC8qIEpTRGF0YVZpZXcuaCAqLywKIAkJCQkwRjJCNjZCRjE3QjZCNUFC
MDBBN0FFM0YgLyogSlNEYXRhVmlld1Byb3RvdHlwZS5jcHAgKi8sCkBAIC03MTI0LDYgKzcxMzAs
NyBAQAogCQkJCTE0NDgzNkU3MTMyREE3QkUwMDVCRTc4NSAvKiBDb25zZXJ2YXRpdmVSb290cy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTUzQ0UwOEExOEJDMjFDMzAwQkVERjc2IC8qIENvbnNvbGVD
bGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1RkQwMDdBMTg5QjA1MTAwMDYzMzIzMSAvKiBD
b25zb2xlTWVzc2FnZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTUzQ0UwODYxOEJDMUE1NjAwQkVE
Rjc2IC8qIENvbnNvbGVQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1RkQwMDc0MTg5
QjAzOEMwMDYzMzIzMSAvKiBDb25zb2xlVHlwZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRkM5
OUQxMTg0RUM4QUQwMDlDMTBBQiAvKiBDb25zdGFudE1vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUUzNTQ2MjJCMUI2MDY1RDEwMDU0NTM4NiAvKiBDb25zdHJ1Y3RBYmlsaXR5LmggaW4gSGVhZGVy
cyAqLywKQEAgLTc1NzQsNyArNzU4MSw2IEBACiAJCQkJQTUzOThGQUIxQzc1MERBNDAwNjBBOTYz
IC8qIEhlYXBQcm9maWxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTE1ODdENzIxQjREQzE0MTAw
RDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTE1ODdENzYxQjREQzFDNjAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlw
ZS5sdXQuaCBpbiBIZWFkZXJzICovLAotCQkJCUE1NTcxNEJFMUNEODA0OUYwMDA0RDJDNiAvKiBD
b25zb2xlT2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBMUQ3OTJGRDFCNDM4NjRCMDA0NTE2
RjUgLyogSW50bE51bWJlckZvcm1hdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTFENzkyRkYxQjQz
ODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTEyNTg0NkUxQjQ1QTM2MDAwQ0M3RjZDIC8qIEludGxOdW1iZXJGb3JtYXRDb25z
dHJ1Y3Rvci5sdXQuaCBpbiBIZWFkZXJzICovLApAQCAtNzYzMCw2ICs3NjM2LDcgQEAKIAkJCQlC
QzE4QzQyQjBFMTZGNUNEMDBCMzQ0NjAgLyogSlNDSlNWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJODY1QTMwRjExMzUwMDdFMTAwQ0RCNDlFIC8qIEpTQ0pTVmFsdWVJbmxpbmVzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCQzE4QzQxRDBFMTZGNUNEMDBCMzQ0NjAgLyogSlNDbGFzc1JlZi5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJQTUzQ0UwODgxOEJDMUE1NjAwQkVERjc2IC8qIEpTQ29uc29sZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJODZFM0M2MTMxNjdCQUJENzAwNkQ3NjBBIC8qIEpTQ29udGV4
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZFM0M2MTcxNjdCQUJFRTAwNkQ3NjBBIC8qIEpTQ29u
dGV4dEludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNThDMDI0MjE4RTRBNDFBMDAwMzJC
QzUgLyogSlNDb250ZXh0UHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC04NjY3LDcgKzg2NzQs
NiBAQAogCQkJCTBGRUM4NTFGMUJEQUNEQUMwMDgwRkY3NCAvKiBCM01lbW9yeVZhbHVlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGRUM4NTIxMUJEQUNEQUMwMDgwRkY3NCAvKiBCM09wY29kZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVDODUyMzFCREFDREFDMDA4MEZGNzQgLyogQjNPcmln
aW4uY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQTU1NzE0QkYxQ0Q4MDRBNDAwMDREMkM2IC8qIENv
bnNvbGVPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFQzg1MjUxQkRBQ0RBQzAwODBG
Rjc0IC8qIEIzUGF0Y2hwb2ludFNwZWNpYWwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFQzg1
MjcxQkRBQ0RBQzAwODBGRjc0IC8qIEIzUGF0Y2hwb2ludFZhbHVlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGRUM4NTI5MUJEQUNEQUMwMDgwRkY3NCAvKiBCM1BoYXNlU2NvcGUuY3BwIGluIFNv
dXJjZXMgKi8sCkBAIC04NzMyLDYgKzg3MzgsNyBAQAogCQkJCTE0NkIxNkQ4MTJFQjVCNTkwMDFC
RUMxQiAvKiBDb25zZXJ2YXRpdmVSb290cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNUI2QTc0
RDE4QzZEQkE2MDBGMTFFOTEgLyogQ29uc29sZUNsaWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlBNUZEMDA3OTE4OUIwNTEwMDA2MzMyMzEgLyogQ29uc29sZU1lc3NhZ2UuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJQTUzQ0UwODUxOEJDMUE1NjAwQkVERjc2IC8qIENvbnNvbGVQcm90b3R5cGUu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY5NzhCM0IxQUFFQTcxRDAwN0M3MzY5IC8qIENvbnN0
YW50TW9kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDI4MDgyRTEwN0VDMDU3MDAxM0U3QjIg
LyogQ29uc3RydWN0RGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTdEMjNGMTE4OTFCNUI0
MDAzMUM3RkEgLyogQ29udGVudFNlYXJjaFV0aWxpdGllcy5jcHAgaW4gU291cmNlcyAqLywKQEAg
LTkwODUsNiArOTA5Miw3IEBACiAJCQkJMTQ3RjM5RDExMDdFQzM3NjAwNDI3QTQ4IC8qIEpTQ2Vs
bC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDdGMzlENjEwN0VDMzc2MDA0MjdBNDggLyogSlND
SlNWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDQwRkNFNDBBNTFFNDZCMDAwNUYwNjEg
LyogSlNDbGFzc1JlZi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBNTNDRTA4NzE4QkMxQTU2MDBC
RURGNzYgLyogSlNDb25zb2xlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2RTNDNjE2MTY3QkFC
RUUwMDZENzYwQSAvKiBKU0NvbnRleHQubW0gaW4gU291cmNlcyAqLywKIAkJCQkxNEJENUEzMDBB
M0U5MUY2MDBCQUY1OUMgLyogSlNDb250ZXh0UmVmLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3
MjAyOEI2MTc5NzYwMUUwMDk4MDI4QyAvKiBKU0NUZXN0UnVubmVyVXRpbHMuY3BwIGluIFNvdXJj
ZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25J
ZGVudGlmaWVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRp
ZmllcnMuaAppbmRleCAwNzU2MzQ2MjQ0N2VkYTYwMWI5YTNlZGE5OGJhZDdhOTk2Y2FiNTVjLi4y
YjFlZDYwYTIzNjc0ZWE3ZTg3MzNiOTA1MjIyYTIzNmI0Y2E0ZjQ1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKQEAgLTEyOSw3ICsx
MjksNiBAQAogICAgIG1hY3JvKGNvbXBpbGF0aW9ucykgXAogICAgIG1hY3JvKGNvbXBpbGUpIFwK
ICAgICBtYWNybyhjb25maWd1cmFibGUpIFwKLSAgICBtYWNybyhjb25zb2xlKSBcCiAgICAgbWFj
cm8oY29uc3RydWN0b3IpIFwKICAgICBtYWNybyhjb3VudCkgXAogICAgIG1hY3JvKGNvdW50ZXJz
KSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25zb2xlT2Jq
ZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnNvbGVPYmplY3QuY3Bw
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxM2JiMzdmYzYxYjgzZWNhOGY1MjNlMmM1
NzdmZGNhMDY2MDBkYTIzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnNvbGVPYmplY3QuY3BwCisr
KyAvZGV2L251bGwKQEAgLTEsMzYyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQt
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJD
b25zb2xlT2JqZWN0LmgiCi0KLSNpbmNsdWRlICJDb25zb2xlQ2xpZW50LmgiCi0jaW5jbHVkZSAi
RXJyb3IuaCIKLSNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCi0jaW5jbHVkZSAiU2NyaXB0QXJndW1l
bnRzLmgiCi0jaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5oIgotCi1uYW1lc3BhY2Ug
SlNDIHsKLQotU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKENvbnNvbGVP
YmplY3QpOwotCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJv
dG9GdW5jRGVidWcoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjb25zb2xlUHJvdG9GdW5jRXJyb3IoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jTG9nKEV4ZWNTdGF0ZSopOwotc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY0luZm8oRXhl
Y1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJv
dG9GdW5jV2FybihFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNvbnNvbGVQcm90b0Z1bmNDbGVhcihFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNEaXIoRXhlY1N0YXRlKik7Ci1zdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jRGlyWE1MKEV4
ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVBy
b3RvRnVuY1RhYmxlKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY29uc29sZVByb3RvRnVuY1RyYWNlKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY0Fzc2VydChFeGVjU3RhdGUqKTsK
LXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNDb3Vu
dChFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNv
bGVQcm90b0Z1bmNQcm9maWxlKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY1Byb2ZpbGVFbmQoRXhlY1N0YXRlKik7Ci1zdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jVGFrZUhlYXBT
bmFwc2hvdChFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGNvbnNvbGVQcm90b0Z1bmNUaW1lKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY1RpbWVFbmQoRXhlY1N0YXRlKik7Ci1zdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jVGltZVN0YW1w
KEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29s
ZVByb3RvRnVuY0dyb3VwKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgY29uc29sZVByb3RvRnVuY0dyb3VwQ29sbGFwc2VkKEV4ZWNTdGF0ZSopOwotc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY0dyb3VwRW5k
KEV4ZWNTdGF0ZSopOwotCi1jb25zdCBDbGFzc0luZm8gQ29uc29sZU9iamVjdDo6c19pbmZvID0g
eyAiQ29uc29sZSIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoQ29uc29s
ZU9iamVjdCkgfTsKLQotQ29uc29sZU9iamVjdDo6Q29uc29sZU9iamVjdChWTSYgdm0sIFN0cnVj
dHVyZSogc3RydWN0dXJlKQotICAgIDogSlNOb25GaW5hbE9iamVjdCh2bSwgc3RydWN0dXJlKQot
ewotfQotCi12b2lkIENvbnNvbGVPYmplY3Q6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCkKLXsKLSAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7
Ci0gICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOwotCi0gICAgLy8gRm9yIGxlZ2FjeSByZWFz
b25zLCBjb25zb2xlIHByb3BlcnRpZXMgYXJlIGVudW1lcmFibGUsIHdyaXRhYmxlLCBkZWxldGVh
YmxlLAotICAgIC8vIGFuZCBhbGwgaGF2ZSBhIGxlbmd0aCBvZiAwLiBUaGlzIG1heSBjaGFuZ2Ug
aWYgQ29uc29sZSBpcyBzdGFuZGFyZGl6ZWQuCi0KLSAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJ
VEhPVVRfVFJBTlNJVElPTigiZGVidWciLCBjb25zb2xlUHJvdG9GdW5jRGVidWcsIE5vbmUsIDAp
OwotICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKCJlcnJvciIsIGNv
bnNvbGVQcm90b0Z1bmNFcnJvciwgTm9uZSwgMCk7Ci0gICAgSlNDX05BVElWRV9GVU5DVElPTl9X
SVRIT1VUX1RSQU5TSVRJT04oImxvZyIsIGNvbnNvbGVQcm90b0Z1bmNMb2csIE5vbmUsIDApOwot
ICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKCJpbmZvIiwgY29uc29s
ZVByb3RvRnVuY0luZm8sIE5vbmUsIDApOwotICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9V
VF9UUkFOU0lUSU9OKCJ3YXJuIiwgY29uc29sZVByb3RvRnVuY1dhcm4sIE5vbmUsIDApOwotCi0g
ICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1l
cy0+Y2xlYXIsIGNvbnNvbGVQcm90b0Z1bmNDbGVhciwgTm9uZSwgMCk7Ci0gICAgSlNDX05BVElW
RV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04oImRpciIsIGNvbnNvbGVQcm90b0Z1bmNEaXIs
IE5vbmUsIDApOwotICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKCJk
aXJ4bWwiLCBjb25zb2xlUHJvdG9GdW5jRGlyWE1MLCBOb25lLCAwKTsKLSAgICBKU0NfTkFUSVZF
X0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTigidGFibGUiLCBjb25zb2xlUHJvdG9GdW5jVGFi
bGUsIE5vbmUsIDApOwotICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9O
KCJ0cmFjZSIsIGNvbnNvbGVQcm90b0Z1bmNUcmFjZSwgTm9uZSwgMCk7Ci0gICAgSlNDX05BVElW
RV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04oImFzc2VydCIsIGNvbnNvbGVQcm90b0Z1bmNB
c3NlcnQsIE5vbmUsIDApOwotICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lU
SU9OKHZtLnByb3BlcnR5TmFtZXMtPmNvdW50LCBjb25zb2xlUHJvdG9GdW5jQ291bnQsIE5vbmUs
IDApOwotICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKCJwcm9maWxl
IiwgY29uc29sZVByb3RvRnVuY1Byb2ZpbGUsIE5vbmUsIDApOwotICAgIEpTQ19OQVRJVkVfRlVO
Q1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKCJwcm9maWxlRW5kIiwgY29uc29sZVByb3RvRnVuY1By
b2ZpbGVFbmQsIE5vbmUsIDApOwotICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFO
U0lUSU9OKCJ0aW1lIiwgY29uc29sZVByb3RvRnVuY1RpbWUsIE5vbmUsIDApOwotICAgIEpTQ19O
QVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKCJ0aW1lRW5kIiwgY29uc29sZVByb3Rv
RnVuY1RpbWVFbmQsIE5vbmUsIDApOwotICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9U
UkFOU0lUSU9OKCJ0aW1lU3RhbXAiLCBjb25zb2xlUHJvdG9GdW5jVGltZVN0YW1wLCBOb25lLCAw
KTsKLSAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTigidGFrZUhlYXBT
bmFwc2hvdCIsIGNvbnNvbGVQcm90b0Z1bmNUYWtlSGVhcFNuYXBzaG90LCBOb25lLCAwKTsKLSAg
ICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTigiZ3JvdXAiLCBjb25zb2xl
UHJvdG9GdW5jR3JvdXAsIE5vbmUsIDApOwotICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9V
VF9UUkFOU0lUSU9OKCJncm91cENvbGxhcHNlZCIsIGNvbnNvbGVQcm90b0Z1bmNHcm91cENvbGxh
cHNlZCwgTm9uZSwgMCk7Ci0gICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJ
T04oImdyb3VwRW5kIiwgY29uc29sZVByb3RvRnVuY0dyb3VwRW5kLCBOb25lLCAwKTsKLX0KLQot
c3RhdGljIFN0cmluZyB2YWx1ZVRvU3RyaW5nV2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrKEV4ZWNT
dGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKLXsKLSAgICBpZiAodmFsdWUuaXNVbmRlZmluZWRP
ck51bGwoKSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIHJldHVybiB2YWx1ZS50b1N0
cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7Ci19Ci0KLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBjb25z
b2xlTG9nV2l0aExldmVsKEV4ZWNTdGF0ZSogZXhlYywgTWVzc2FnZUxldmVsIGxldmVsKQotewot
ICAgIENvbnNvbGVDbGllbnQqIGNsaWVudCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+
Y29uc29sZUNsaWVudCgpOwotICAgIGlmICghY2xpZW50KQotICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotCi0gICAgUmVmUHRyPEluc3BlY3Rvcjo6U2NyaXB0
QXJndW1lbnRzPiBhcmd1bWVudHMoSW5zcGVjdG9yOjpjcmVhdGVTY3JpcHRBcmd1bWVudHMoZXhl
YywgMCkpOwotICAgIGNsaWVudC0+bG9nV2l0aExldmVsKGV4ZWMsIGFyZ3VtZW50cy5yZWxlYXNl
KCksIGxldmVsKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwot
fQotCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5j
RGVidWcoRXhlY1N0YXRlKiBleGVjKQotewotICAgIHJldHVybiBjb25zb2xlTG9nV2l0aExldmVs
KGV4ZWMsIE1lc3NhZ2VMZXZlbDo6RGVidWcpOwotfQotCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jRXJyb3IoRXhlY1N0YXRlKiBleGVjKQotewot
ICAgIHJldHVybiBjb25zb2xlTG9nV2l0aExldmVsKGV4ZWMsIE1lc3NhZ2VMZXZlbDo6RXJyb3Ip
OwotfQotCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9G
dW5jTG9nKEV4ZWNTdGF0ZSogZXhlYykKLXsKLSAgICByZXR1cm4gY29uc29sZUxvZ1dpdGhMZXZl
bChleGVjLCBNZXNzYWdlTGV2ZWw6OkxvZyk7Ci19Ci0KLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNJbmZvKEV4ZWNTdGF0ZSogZXhlYykKLXsKLSAg
ICByZXR1cm4gY29uc29sZUxvZ1dpdGhMZXZlbChleGVjLCBNZXNzYWdlTGV2ZWw6OkluZm8pOwot
fQotCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5j
V2FybihFeGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAgcmV0dXJuIGNvbnNvbGVMb2dXaXRoTGV2ZWwo
ZXhlYywgTWVzc2FnZUxldmVsOjpXYXJuaW5nKTsKLX0KLQotc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY0NsZWFyKEV4ZWNTdGF0ZSogZXhlYykKLXsK
LSAgICBDb25zb2xlQ2xpZW50KiBjbGllbnQgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkt
PmNvbnNvbGVDbGllbnQoKTsKLSAgICBpZiAoIWNsaWVudCkKLSAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLQotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlNjcmlw
dEFyZ3VtZW50cz4gYXJndW1lbnRzKEluc3BlY3Rvcjo6Y3JlYXRlU2NyaXB0QXJndW1lbnRzKGV4
ZWMsIDApKTsKLSAgICBjbGllbnQtPmNsZWFyKGV4ZWMsIGFyZ3VtZW50cy5yZWxlYXNlKCkpOwot
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci19Ci0KLXN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNEaXIoRXhlY1N0YXRl
KiBleGVjKQotewotICAgIENvbnNvbGVDbGllbnQqIGNsaWVudCA9IGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKS0+Y29uc29sZUNsaWVudCgpOwotICAgIGlmICghY2xpZW50KQotICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotCi0gICAgUmVmUHRyPEluc3Bl
Y3Rvcjo6U2NyaXB0QXJndW1lbnRzPiBhcmd1bWVudHMoSW5zcGVjdG9yOjpjcmVhdGVTY3JpcHRB
cmd1bWVudHMoZXhlYywgMCkpOwotICAgIGNsaWVudC0+ZGlyKGV4ZWMsIGFyZ3VtZW50cy5yZWxl
YXNlKCkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci19Ci0K
LXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNEaXJY
TUwoRXhlY1N0YXRlKiBleGVjKQotewotICAgIENvbnNvbGVDbGllbnQqIGNsaWVudCA9IGV4ZWMt
PmxleGljYWxHbG9iYWxPYmplY3QoKS0+Y29uc29sZUNsaWVudCgpOwotICAgIGlmICghY2xpZW50
KQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotCi0gICAg
UmVmUHRyPEluc3BlY3Rvcjo6U2NyaXB0QXJndW1lbnRzPiBhcmd1bWVudHMoSW5zcGVjdG9yOjpj
cmVhdGVTY3JpcHRBcmd1bWVudHMoZXhlYywgMCkpOwotICAgIGNsaWVudC0+ZGlyWE1MKGV4ZWMs
IGFyZ3VtZW50cy5yZWxlYXNlKCkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7Ci19Ci0KLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNv
bGVQcm90b0Z1bmNUYWJsZShFeGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAgQ29uc29sZUNsaWVudCog
Y2xpZW50ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5jb25zb2xlQ2xpZW50KCk7Ci0g
ICAgaWYgKCFjbGllbnQpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7Ci0KLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVudHM+IGFyZ3VtZW50
cyhJbnNwZWN0b3I6OmNyZWF0ZVNjcmlwdEFyZ3VtZW50cyhleGVjLCAwKSk7Ci0gICAgY2xpZW50
LT50YWJsZShleGVjLCBhcmd1bWVudHMucmVsZWFzZSgpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotfQotCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jVHJhY2UoRXhlY1N0YXRlKiBleGVjKQotewotICAgIENv
bnNvbGVDbGllbnQqIGNsaWVudCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+Y29uc29s
ZUNsaWVudCgpOwotICAgIGlmICghY2xpZW50KQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwotCi0gICAgUmVmUHRyPEluc3BlY3Rvcjo6U2NyaXB0QXJndW1l
bnRzPiBhcmd1bWVudHMoSW5zcGVjdG9yOjpjcmVhdGVTY3JpcHRBcmd1bWVudHMoZXhlYywgMCkp
OwotICAgIGNsaWVudC0+dHJhY2UoZXhlYywgYXJndW1lbnRzLnJlbGVhc2UoKSk7Ci0gICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLX0KLQotc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY0Fzc2VydChFeGVjU3RhdGUqIGV4
ZWMpCi17Ci0gICAgQ29uc29sZUNsaWVudCogY2xpZW50ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpLT5jb25zb2xlQ2xpZW50KCk7Ci0gICAgaWYgKCFjbGllbnQpCi0gICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0KLSAgICBib29sIGNvbmRpdGlvbihl
eGVjLT5hcmd1bWVudCgwKS50b0Jvb2xlYW4oZXhlYykpOwotICAgIGlmIChleGVjLT5oYWRFeGNl
cHRpb24oKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
LQotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlNjcmlwdEFyZ3VtZW50cz4gYXJndW1lbnRzKEluc3Bl
Y3Rvcjo6Y3JlYXRlU2NyaXB0QXJndW1lbnRzKGV4ZWMsIDEpKTsKLSAgICBjbGllbnQtPmFzc2Vy
dENvbmRpdGlvbihleGVjLCBhcmd1bWVudHMucmVsZWFzZSgpLCBjb25kaXRpb24pOwotICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci19Ci0KLXN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNDb3VudChFeGVjU3RhdGUqIGV4
ZWMpCi17Ci0gICAgQ29uc29sZUNsaWVudCogY2xpZW50ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpLT5jb25zb2xlQ2xpZW50KCk7Ci0gICAgaWYgKCFjbGllbnQpCi0gICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0KLSAgICBSZWZQdHI8SW5zcGVjdG9y
OjpTY3JpcHRBcmd1bWVudHM+IGFyZ3VtZW50cyhJbnNwZWN0b3I6OmNyZWF0ZVNjcmlwdEFyZ3Vt
ZW50cyhleGVjLCAwKSk7Ci0gICAgY2xpZW50LT5jb3VudChleGVjLCBhcmd1bWVudHMucmVsZWFz
ZSgpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotfQotCi1z
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jUHJvZmls
ZShFeGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAgQ29uc29sZUNsaWVudCogY2xpZW50ID0gZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5jb25zb2xlQ2xpZW50KCk7Ci0gICAgaWYgKCFjbGllbnQp
Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0KLSAgICBz
aXplX3QgYXJnc0NvdW50ID0gZXhlYy0+YXJndW1lbnRDb3VudCgpOwotICAgIGlmICghYXJnc0Nv
dW50KSB7Ci0gICAgICAgIGNsaWVudC0+cHJvZmlsZShleGVjLCBTdHJpbmcoKSk7Ci0gICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgfQotCi0gICAgY29u
c3QgU3RyaW5nJiB0aXRsZSh2YWx1ZVRvU3RyaW5nV2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrKGV4
ZWMsIGV4ZWMtPmFyZ3VtZW50KDApKSk7Ci0gICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQot
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotCi0gICAgY2xp
ZW50LT5wcm9maWxlKGV4ZWMsIHRpdGxlKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwotfQotCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
b25zb2xlUHJvdG9GdW5jUHJvZmlsZUVuZChFeGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAgQ29uc29s
ZUNsaWVudCogY2xpZW50ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5jb25zb2xlQ2xp
ZW50KCk7Ci0gICAgaWYgKCFjbGllbnQpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7Ci0KLSAgICBzaXplX3QgYXJnc0NvdW50ID0gZXhlYy0+YXJndW1lbnRD
b3VudCgpOwotICAgIGlmICghYXJnc0NvdW50KSB7Ci0gICAgICAgIGNsaWVudC0+cHJvZmlsZUVu
ZChleGVjLCBTdHJpbmcoKSk7Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7Ci0gICAgfQotCi0gICAgY29uc3QgU3RyaW5nJiB0aXRsZSh2YWx1ZVRvU3RyaW5n
V2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApKSk7Ci0gICAg
aWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwotCi0gICAgY2xpZW50LT5wcm9maWxlRW5kKGV4ZWMsIHRpdGxlKTsK
LSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotfQotCi1zdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jVGFrZUhlYXBTbmFw
c2hvdChFeGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAgQ29uc29sZUNsaWVudCogY2xpZW50ID0gZXhl
Yy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5jb25zb2xlQ2xpZW50KCk7Ci0gICAgaWYgKCFjbGll
bnQpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0KLSAg
ICBzaXplX3QgYXJnc0NvdW50ID0gZXhlYy0+YXJndW1lbnRDb3VudCgpOwotICAgIGlmICghYXJn
c0NvdW50KSB7Ci0gICAgICAgIGNsaWVudC0+dGFrZUhlYXBTbmFwc2hvdChleGVjLCBTdHJpbmco
KSk7Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAg
fQotCi0gICAgY29uc3QgU3RyaW5nJiB0aXRsZSh2YWx1ZVRvU3RyaW5nV2l0aFVuZGVmaW5lZE9y
TnVsbENoZWNrKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApKSk7Ci0gICAgaWYgKGV4ZWMtPmhhZEV4
Y2VwdGlvbigpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwotCi0gICAgY2xpZW50LT50YWtlSGVhcFNuYXBzaG90KGV4ZWMsIHRpdGxlKTsKLSAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotfQotCi1zdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jVGltZShFeGVjU3RhdGUqIGV4ZWMp
Ci17Ci0gICAgQ29uc29sZUNsaWVudCogY2xpZW50ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVj
dCgpLT5jb25zb2xlQ2xpZW50KCk7Ci0gICAgaWYgKCFjbGllbnQpCi0gICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0KLSAgICBpZiAoZXhlYy0+YXJndW1lbnRD
b3VudCgpIDwgMSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVOb3RF
bm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7Ci0KLSAgICBjb25zdCBTdHJpbmcmIHRpdGxlKHZh
bHVlVG9TdHJpbmdXaXRoVW5kZWZpbmVkT3JOdWxsQ2hlY2soZXhlYywgZXhlYy0+YXJndW1lbnQo
MCkpKTsKLSAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0KLSAgICBjbGllbnQtPnRpbWUoZXhlYywgdGl0
bGUpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci19Ci0KLXN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNUaW1lRW5k
KEV4ZWNTdGF0ZSogZXhlYykKLXsKLSAgICBDb25zb2xlQ2xpZW50KiBjbGllbnQgPSBleGVjLT5s
ZXhpY2FsR2xvYmFsT2JqZWN0KCktPmNvbnNvbGVDbGllbnQoKTsKLSAgICBpZiAoIWNsaWVudCkK
LSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLQotICAgIGlm
IChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9y
KGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKLQotICAgIGNvbnN0
IFN0cmluZyYgdGl0bGUodmFsdWVUb1N0cmluZ1dpdGhVbmRlZmluZWRPck51bGxDaGVjayhleGVj
LCBleGVjLT5hcmd1bWVudCgwKSkpOwotICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKLSAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLQotICAgIGNsaWVu
dC0+dGltZUVuZChleGVjLCB0aXRsZSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKLX0KLQotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29u
c29sZVByb3RvRnVuY1RpbWVTdGFtcChFeGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAgQ29uc29sZUNs
aWVudCogY2xpZW50ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5jb25zb2xlQ2xpZW50
KCk7Ci0gICAgaWYgKCFjbGllbnQpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7Ci0KLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVudHM+IGFy
Z3VtZW50cyhJbnNwZWN0b3I6OmNyZWF0ZVNjcmlwdEFyZ3VtZW50cyhleGVjLCAwKSk7Ci0gICAg
Y2xpZW50LT50aW1lU3RhbXAoZXhlYywgYXJndW1lbnRzLnJlbGVhc2UoKSk7Ci0gICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLX0KLQotc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY0dyb3VwKEV4ZWNTdGF0ZSogZXhlYykK
LXsKLSAgICBDb25zb2xlQ2xpZW50KiBjbGllbnQgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCktPmNvbnNvbGVDbGllbnQoKTsKLSAgICBpZiAoIWNsaWVudCkKLSAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLQotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlNj
cmlwdEFyZ3VtZW50cz4gYXJndW1lbnRzKEluc3BlY3Rvcjo6Y3JlYXRlU2NyaXB0QXJndW1lbnRz
KGV4ZWMsIDApKTsKLSAgICBjbGllbnQtPmdyb3VwKGV4ZWMsIGFyZ3VtZW50cy5yZWxlYXNlKCkp
OwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci19Ci0KLXN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNHcm91cENvbGxh
cHNlZChFeGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAgQ29uc29sZUNsaWVudCogY2xpZW50ID0gZXhl
Yy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5jb25zb2xlQ2xpZW50KCk7Ci0gICAgaWYgKCFjbGll
bnQpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0KLSAg
ICBSZWZQdHI8SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVudHM+IGFyZ3VtZW50cyhJbnNwZWN0b3I6
OmNyZWF0ZVNjcmlwdEFyZ3VtZW50cyhleGVjLCAwKSk7Ci0gICAgY2xpZW50LT5ncm91cENvbGxh
cHNlZChleGVjLCBhcmd1bWVudHMucmVsZWFzZSgpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwotfQotCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjb25zb2xlUHJvdG9GdW5jR3JvdXBFbmQoRXhlY1N0YXRlKiBleGVjKQotewotICAgIENv
bnNvbGVDbGllbnQqIGNsaWVudCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+Y29uc29s
ZUNsaWVudCgpOwotICAgIGlmICghY2xpZW50KQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwotCi0gICAgUmVmUHRyPEluc3BlY3Rvcjo6U2NyaXB0QXJndW1l
bnRzPiBhcmd1bWVudHMoSW5zcGVjdG9yOjpjcmVhdGVTY3JpcHRBcmd1bWVudHMoZXhlYywgMCkp
OwotICAgIGNsaWVudC0+Z3JvdXBFbmQoZXhlYywgYXJndW1lbnRzLnJlbGVhc2UoKSk7Ci0gICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLX0KLQotfSAvLyBuYW1lc3Bh
Y2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25zb2xl
T2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25zb2xlT2JqZWN0LmgK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFkMGU0MDQzY2QzOThmZTFmMTdiOGEwMWIw
ZjA3MzNjNWYyMTdmZGMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc29sZU9iamVjdC5oCisrKyAv
ZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJKU09iamVjdC5o
IgotCi1uYW1lc3BhY2UgSlNDIHsKLQotY2xhc3MgQ29uc29sZU9iamVjdCA6IHB1YmxpYyBKU05v
bkZpbmFsT2JqZWN0IHsKLXByaXZhdGU6Ci0gICAgQ29uc29sZU9iamVjdChWTSYsIFN0cnVjdHVy
ZSopOwotCi1wdWJsaWM6Ci0gICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7Ci0KLSAg
ICBzdGF0aWMgQ29uc29sZU9iamVjdCogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAgewotICAgICAgICBDb25zb2xl
T2JqZWN0KiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxDb25zb2xlT2JqZWN0
Pih2bS5oZWFwKSkgQ29uc29sZU9iamVjdCh2bSwgc3RydWN0dXJlKTsKLSAgICAgICAgb2JqZWN0
LT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0KTsKLSAgICAgICAgcmV0dXJuIG9iamVj
dDsKLSAgICB9Ci0KLSAgICBERUNMQVJFX0lORk87Ci0KLSAgICBzdGF0aWMgU3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIHByb3RvdHlwZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2
bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVy
ZUZsYWdzKSwgaW5mbygpKTsKLSAgICB9Ci0KLXByb3RlY3RlZDoKLSAgICB2b2lkIGZpbmlzaENy
ZWF0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqKTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc29sZVByb3RvdHlw
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25zb2xlUHJvdG90eXBlLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5mMTg1ZmVmNmFkYjNiOGI0ODYzNWExNTRjMjYxYWEzMDc2MzhjZTQ1Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc29sZVBy
b3RvdHlwZS5jcHAKQEAgLTAsMCArMSw0MjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ29uc29s
ZVByb3RvdHlwZS5oIgorCisjaW5jbHVkZSAiQ29uc29sZUNsaWVudC5oIgorI2luY2x1ZGUgIkVy
cm9yLmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgorI2luY2x1ZGUgIkpTQ0lubGlu
ZXMuaCIKKyNpbmNsdWRlICJKU0NvbnNvbGUuaCIKKyNpbmNsdWRlICJTY3JpcHRBcmd1bWVudHMu
aCIKKyNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmgiCisKK25hbWVzcGFjZSBKU0Mg
eworCitjb25zdCBDbGFzc0luZm8gQ29uc29sZVByb3RvdHlwZTo6c19pbmZvID0geyAiQ29uc29s
ZVByb3RvdHlwZSIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoQ29uc29s
ZVByb3RvdHlwZSkgfTsKKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29u
c29sZVByb3RvRnVuY0RlYnVnKEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY0Vycm9yKEV4ZWNTdGF0ZSopOworc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY0xvZyhFeGVjU3RhdGUq
KTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNJ
bmZvKEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29u
c29sZVByb3RvRnVuY1dhcm4oRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jQ2xlYXIoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jRGlyKEV4ZWNTdGF0ZSop
Oworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY0Rp
clhNTChFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNv
bnNvbGVQcm90b0Z1bmNUYWJsZShFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNUcmFjZShFeGVjU3RhdGUqKTsKK3N0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNBc3NlcnQoRXhlY1N0
YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9G
dW5jQ291bnQoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBjb25zb2xlUHJvdG9GdW5jUHJvZmlsZShFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNQcm9maWxlRW5kKEV4ZWNTdGF0ZSop
Oworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY1Rh
a2VIZWFwU25hcHNob3QoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jVGltZShFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNUaW1lRW5kKEV4ZWNTdGF0ZSop
Oworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY1Rp
bWVTdGFtcChFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGNvbnNvbGVQcm90b0Z1bmNHcm91cChFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNHcm91cENvbGxhcHNlZChFeGVjU3RhdGUq
KTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNH
cm91cEVuZChFeGVjU3RhdGUqKTsKKwordm9pZCBDb25zb2xlUHJvdG90eXBlOjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgQmFzZTo6
ZmluaXNoQ3JlYXRpb24odm0pOworICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKKyAgICB2
bS5wcm90b3R5cGVNYXAuYWRkUHJvdG90eXBlKHRoaXMpOworCisgICAgLy8gRm9yIGxlZ2FjeSBy
ZWFzb25zLCBjb25zb2xlIHByb3BlcnRpZXMgYXJlIGVudW1lcmFibGUsIHdyaXRhYmxlLCBkZWxl
dGVhYmxlLAorICAgIC8vIGFuZCBhbGwgaGF2ZSBhIGxlbmd0aCBvZiAwLiBUaGlzIG1heSBjaGFu
Z2UgaWYgQ29uc29sZSBpcyBzdGFuZGFyZGl6ZWQuCisKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9O
X1dJVEhPVVRfVFJBTlNJVElPTigiZGVidWciLCBjb25zb2xlUHJvdG9GdW5jRGVidWcsIE5vbmUs
IDApOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKCJlcnJvciIs
IGNvbnNvbGVQcm90b0Z1bmNFcnJvciwgTm9uZSwgMCk7CisgICAgSlNDX05BVElWRV9GVU5DVElP
Tl9XSVRIT1VUX1RSQU5TSVRJT04oImxvZyIsIGNvbnNvbGVQcm90b0Z1bmNMb2csIE5vbmUsIDAp
OworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKCJpbmZvIiwgY29u
c29sZVByb3RvRnVuY0luZm8sIE5vbmUsIDApOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lU
SE9VVF9UUkFOU0lUSU9OKCJ3YXJuIiwgY29uc29sZVByb3RvRnVuY1dhcm4sIE5vbmUsIDApOwor
CisgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04oImNsZWFyIiwgY29u
c29sZVByb3RvRnVuY0NsZWFyLCBOb25lLCAwKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJ
VEhPVVRfVFJBTlNJVElPTigiZGlyIiwgY29uc29sZVByb3RvRnVuY0RpciwgTm9uZSwgMCk7Cisg
ICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04oImRpcnhtbCIsIGNvbnNv
bGVQcm90b0Z1bmNEaXJYTUwsIE5vbmUsIDApOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lU
SE9VVF9UUkFOU0lUSU9OKCJ0YWJsZSIsIGNvbnNvbGVQcm90b0Z1bmNUYWJsZSwgTm9uZSwgMCk7
CisgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04oInRyYWNlIiwgY29u
c29sZVByb3RvRnVuY1RyYWNlLCBOb25lLCAwKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJ
VEhPVVRfVFJBTlNJVElPTigiYXNzZXJ0IiwgY29uc29sZVByb3RvRnVuY0Fzc2VydCwgTm9uZSwg
MCk7CisgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04oImNvdW50Iiwg
Y29uc29sZVByb3RvRnVuY0NvdW50LCBOb25lLCAwKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9O
X1dJVEhPVVRfVFJBTlNJVElPTigicHJvZmlsZSIsIGNvbnNvbGVQcm90b0Z1bmNQcm9maWxlLCBO
b25lLCAwKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTigicHJv
ZmlsZUVuZCIsIGNvbnNvbGVQcm90b0Z1bmNQcm9maWxlRW5kLCBOb25lLCAwKTsKKyAgICBKU0Nf
TkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTigidGltZSIsIGNvbnNvbGVQcm90b0Z1
bmNUaW1lLCBOb25lLCAwKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJ
VElPTigidGltZUVuZCIsIGNvbnNvbGVQcm90b0Z1bmNUaW1lRW5kLCBOb25lLCAwKTsKKyAgICBK
U0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTigidGltZVN0YW1wIiwgY29uc29s
ZVByb3RvRnVuY1RpbWVTdGFtcCwgTm9uZSwgMCk7CisgICAgSlNDX05BVElWRV9GVU5DVElPTl9X
SVRIT1VUX1RSQU5TSVRJT04oInRha2VIZWFwU25hcHNob3QiLCBjb25zb2xlUHJvdG9GdW5jVGFr
ZUhlYXBTbmFwc2hvdCwgTm9uZSwgMCk7CisgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VU
X1RSQU5TSVRJT04oImdyb3VwIiwgY29uc29sZVByb3RvRnVuY0dyb3VwLCBOb25lLCAwKTsKKyAg
ICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTigiZ3JvdXBDb2xsYXBzZWQi
LCBjb25zb2xlUHJvdG9GdW5jR3JvdXBDb2xsYXBzZWQsIE5vbmUsIDApOworICAgIEpTQ19OQVRJ
VkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKCJncm91cEVuZCIsIGNvbnNvbGVQcm90b0Z1
bmNHcm91cEVuZCwgTm9uZSwgMCk7Cit9CisKK3N0YXRpYyBTdHJpbmcgdmFsdWVUb1N0cmluZ1dp
dGhVbmRlZmluZWRPck51bGxDaGVjayhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCit7
CisgICAgaWYgKHZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCisgICAgICAgIHJldHVybiBTdHJp
bmcoKTsKKyAgICByZXR1cm4gdmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworfQor
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgY29uc29sZUxvZ1dpdGhMZXZlbChFeGVjU3RhdGUqIGV4
ZWMsIE1lc3NhZ2VMZXZlbCBsZXZlbCkKK3sKKyAgICBKU0NvbnNvbGUqIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNDYXN0PEpTQ29uc29sZSo+KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIWNh
c3RlZFRoaXMpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNDb25zb2xlOjppbmZvKCkpOwor
ICAgIENvbnNvbGVDbGllbnQqIGNsaWVudCA9IGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLT5j
b25zb2xlQ2xpZW50KCk7CisgICAgaWYgKCFjbGllbnQpCisgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpTY3JpcHRB
cmd1bWVudHM+IGFyZ3VtZW50cyhJbnNwZWN0b3I6OmNyZWF0ZVNjcmlwdEFyZ3VtZW50cyhleGVj
LCAwKSk7CisgICAgY2xpZW50LT5sb2dXaXRoTGV2ZWwoZXhlYywgYXJndW1lbnRzLnJlbGVhc2Uo
KSwgbGV2ZWwpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Cit9
CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNE
ZWJ1ZyhFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgcmV0dXJuIGNvbnNvbGVMb2dXaXRoTGV2ZWwo
ZXhlYywgTWVzc2FnZUxldmVsOjpEZWJ1Zyk7Cit9CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNFcnJvcihFeGVjU3RhdGUqIGV4ZWMpCit7Cisg
ICAgcmV0dXJuIGNvbnNvbGVMb2dXaXRoTGV2ZWwoZXhlYywgTWVzc2FnZUxldmVsOjpFcnJvcik7
Cit9CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1
bmNMb2coRXhlY1N0YXRlKiBleGVjKQoreworICAgIHJldHVybiBjb25zb2xlTG9nV2l0aExldmVs
KGV4ZWMsIE1lc3NhZ2VMZXZlbDo6TG9nKTsKK30KKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY0luZm8oRXhlY1N0YXRlKiBleGVjKQoreworICAg
IHJldHVybiBjb25zb2xlTG9nV2l0aExldmVsKGV4ZWMsIE1lc3NhZ2VMZXZlbDo6SW5mbyk7Cit9
CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNX
YXJuKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICByZXR1cm4gY29uc29sZUxvZ1dpdGhMZXZlbChl
eGVjLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcpOworfQorCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jQ2xlYXIoRXhlY1N0YXRlKiBleGVjKQorewor
ICAgIEpTQ29uc29sZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNDb25zb2xlKj4oZXhl
Yy0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghY2FzdGVkVGhpcykKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0
ZWRUaGlzLCBKU0NvbnNvbGU6OmluZm8oKSk7CisgICAgQ29uc29sZUNsaWVudCogY2xpZW50ID0g
Y2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCktPmNvbnNvbGVDbGllbnQoKTsKKyAgICBpZiAoIWNs
aWVudCkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKwor
ICAgIFJlZlB0cjxJbnNwZWN0b3I6OlNjcmlwdEFyZ3VtZW50cz4gYXJndW1lbnRzKEluc3BlY3Rv
cjo6Y3JlYXRlU2NyaXB0QXJndW1lbnRzKGV4ZWMsIDApKTsKKyAgICBjbGllbnQtPmNsZWFyKGV4
ZWMsIGFyZ3VtZW50cy5yZWxlYXNlKCkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7Cit9CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNv
bnNvbGVQcm90b0Z1bmNEaXIoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEpTQ29uc29sZSogY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNDb25zb2xlKj4oZXhlYy0+dGhpc1ZhbHVlKCkpOwor
ICAgIGlmICghY2FzdGVkVGhpcykKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
Yyk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU0NvbnNvbGU6
OmluZm8oKSk7CisgICAgQ29uc29sZUNsaWVudCogY2xpZW50ID0gY2FzdGVkVGhpcy0+Z2xvYmFs
T2JqZWN0KCktPmNvbnNvbGVDbGllbnQoKTsKKyAgICBpZiAoIWNsaWVudCkKKyAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKworICAgIFJlZlB0cjxJbnNwZWN0
b3I6OlNjcmlwdEFyZ3VtZW50cz4gYXJndW1lbnRzKEluc3BlY3Rvcjo6Y3JlYXRlU2NyaXB0QXJn
dW1lbnRzKGV4ZWMsIDApKTsKKyAgICBjbGllbnQtPmRpcihleGVjLCBhcmd1bWVudHMucmVsZWFz
ZSgpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworfQorCitz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jRGlyWE1M
KEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBKU0NvbnNvbGUqIGNhc3RlZFRoaXMgPSBqc0R5bmFt
aWNDYXN0PEpTQ29uc29sZSo+KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIWNhc3RlZFRo
aXMpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNDb25zb2xlOjppbmZvKCkpOworICAgIENv
bnNvbGVDbGllbnQqIGNsaWVudCA9IGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLT5jb25zb2xl
Q2xpZW50KCk7CisgICAgaWYgKCFjbGllbnQpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CisKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVu
dHM+IGFyZ3VtZW50cyhJbnNwZWN0b3I6OmNyZWF0ZVNjcmlwdEFyZ3VtZW50cyhleGVjLCAwKSk7
CisgICAgY2xpZW50LT5kaXJYTUwoZXhlYywgYXJndW1lbnRzLnJlbGVhc2UoKSk7CisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKK30KKworc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY1RhYmxlKEV4ZWNTdGF0ZSogZXhl
YykKK3sKKyAgICBKU0NvbnNvbGUqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTQ29uc29s
ZSo+KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIWNhc3RlZFRoaXMpCisgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJ
VFMoY2FzdGVkVGhpcywgSlNDb25zb2xlOjppbmZvKCkpOworICAgIENvbnNvbGVDbGllbnQqIGNs
aWVudCA9IGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLT5jb25zb2xlQ2xpZW50KCk7CisgICAg
aWYgKCFjbGllbnQpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CisKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVudHM+IGFyZ3VtZW50cyhJ
bnNwZWN0b3I6OmNyZWF0ZVNjcmlwdEFyZ3VtZW50cyhleGVjLCAwKSk7CisgICAgY2xpZW50LT50
YWJsZShleGVjLCBhcmd1bWVudHMucmVsZWFzZSgpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOworfQorCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjb25zb2xlUHJvdG9GdW5jVHJhY2UoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEpTQ29u
c29sZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNDb25zb2xlKj4oZXhlYy0+dGhpc1Zh
bHVlKCkpOworICAgIGlmICghY2FzdGVkVGhpcykKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZXhlYyk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBK
U0NvbnNvbGU6OmluZm8oKSk7CisgICAgQ29uc29sZUNsaWVudCogY2xpZW50ID0gY2FzdGVkVGhp
cy0+Z2xvYmFsT2JqZWN0KCktPmNvbnNvbGVDbGllbnQoKTsKKyAgICBpZiAoIWNsaWVudCkKKyAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKworICAgIFJlZlB0
cjxJbnNwZWN0b3I6OlNjcmlwdEFyZ3VtZW50cz4gYXJndW1lbnRzKEluc3BlY3Rvcjo6Y3JlYXRl
U2NyaXB0QXJndW1lbnRzKGV4ZWMsIDApKTsKKyAgICBjbGllbnQtPnRyYWNlKGV4ZWMsIGFyZ3Vt
ZW50cy5yZWxlYXNlKCkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7Cit9CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90
b0Z1bmNBc3NlcnQoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEpTQ29uc29sZSogY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNDb25zb2xlKj4oZXhlYy0+dGhpc1ZhbHVlKCkpOworICAgIGlm
ICghY2FzdGVkVGhpcykKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7Cisg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU0NvbnNvbGU6OmluZm8o
KSk7CisgICAgQ29uc29sZUNsaWVudCogY2xpZW50ID0gY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0
KCktPmNvbnNvbGVDbGllbnQoKTsKKyAgICBpZiAoIWNsaWVudCkKKyAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKworICAgIGJvb2wgY29uZGl0aW9uKGV4ZWMt
PmFyZ3VtZW50KDApLnRvQm9vbGVhbihleGVjKSk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlv
bigpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworCisg
ICAgUmVmUHRyPEluc3BlY3Rvcjo6U2NyaXB0QXJndW1lbnRzPiBhcmd1bWVudHMoSW5zcGVjdG9y
OjpjcmVhdGVTY3JpcHRBcmd1bWVudHMoZXhlYywgMSkpOworICAgIGNsaWVudC0+YXNzZXJ0Q29u
ZGl0aW9uKGV4ZWMsIGFyZ3VtZW50cy5yZWxlYXNlKCksIGNvbmRpdGlvbik7CisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKK30KKworc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY0NvdW50KEV4ZWNTdGF0ZSogZXhlYykK
K3sKKyAgICBKU0NvbnNvbGUqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTQ29uc29sZSo+
KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIWNhc3RlZFRoaXMpCisgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
Y2FzdGVkVGhpcywgSlNDb25zb2xlOjppbmZvKCkpOworICAgIENvbnNvbGVDbGllbnQqIGNsaWVu
dCA9IGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLT5jb25zb2xlQ2xpZW50KCk7CisgICAgaWYg
KCFjbGllbnQpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CisKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVudHM+IGFyZ3VtZW50cyhJbnNw
ZWN0b3I6OmNyZWF0ZVNjcmlwdEFyZ3VtZW50cyhleGVjLCAwKSk7CisgICAgY2xpZW50LT5jb3Vu
dChleGVjLCBhcmd1bWVudHMucmVsZWFzZSgpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOworfQorCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBjb25zb2xlUHJvdG9GdW5jUHJvZmlsZShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgSlNDb25z
b2xlKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0NvbnNvbGUqPihleGVjLT50aGlzVmFs
dWUoKSk7CisgICAgaWYgKCFjYXN0ZWRUaGlzKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpT
Q29uc29sZTo6aW5mbygpKTsKKyAgICBDb25zb2xlQ2xpZW50KiBjbGllbnQgPSBjYXN0ZWRUaGlz
LT5nbG9iYWxPYmplY3QoKS0+Y29uc29sZUNsaWVudCgpOworICAgIGlmICghY2xpZW50KQorICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworCisgICAgc2l6ZV90
IGFyZ3NDb3VudCA9IGV4ZWMtPmFyZ3VtZW50Q291bnQoKTsKKyAgICBpZiAoIWFyZ3NDb3VudCkg
eworICAgICAgICBjbGllbnQtPnByb2ZpbGUoZXhlYywgU3RyaW5nKCkpOworICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIH0KKworICAgIGNvbnN0IFN0
cmluZyYgdGl0bGUodmFsdWVUb1N0cmluZ1dpdGhVbmRlZmluZWRPck51bGxDaGVjayhleGVjLCBl
eGVjLT5hcmd1bWVudCgwKSkpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKworICAgIGNsaWVudC0+
cHJvZmlsZShleGVjLCB0aXRsZSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKK30KKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29s
ZVByb3RvRnVuY1Byb2ZpbGVFbmQoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEpTQ29uc29sZSog
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNDb25zb2xlKj4oZXhlYy0+dGhpc1ZhbHVlKCkp
OworICAgIGlmICghY2FzdGVkVGhpcykKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYyk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU0NvbnNv
bGU6OmluZm8oKSk7CisgICAgQ29uc29sZUNsaWVudCogY2xpZW50ID0gY2FzdGVkVGhpcy0+Z2xv
YmFsT2JqZWN0KCktPmNvbnNvbGVDbGllbnQoKTsKKyAgICBpZiAoIWNsaWVudCkKKyAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKworICAgIHNpemVfdCBhcmdz
Q291bnQgPSBleGVjLT5hcmd1bWVudENvdW50KCk7CisgICAgaWYgKCFhcmdzQ291bnQpIHsKKyAg
ICAgICAgY2xpZW50LT5wcm9maWxlRW5kKGV4ZWMsIFN0cmluZygpKTsKKyAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICB9CisKKyAgICBjb25zdCBTdHJp
bmcmIHRpdGxlKHZhbHVlVG9TdHJpbmdXaXRoVW5kZWZpbmVkT3JOdWxsQ2hlY2soZXhlYywgZXhl
Yy0+YXJndW1lbnQoMCkpKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisKKyAgICBjbGllbnQtPnBy
b2ZpbGVFbmQoZXhlYywgdGl0bGUpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7Cit9CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNv
bGVQcm90b0Z1bmNUYWtlSGVhcFNuYXBzaG90KEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBKU0Nv
bnNvbGUqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTQ29uc29sZSo+KGV4ZWMtPnRoaXNW
YWx1ZSgpKTsKKyAgICBpZiAoIWNhc3RlZFRoaXMpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywg
SlNDb25zb2xlOjppbmZvKCkpOworICAgIENvbnNvbGVDbGllbnQqIGNsaWVudCA9IGNhc3RlZFRo
aXMtPmdsb2JhbE9iamVjdCgpLT5jb25zb2xlQ2xpZW50KCk7CisgICAgaWYgKCFjbGllbnQpCisg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisKKyAgICBzaXpl
X3QgYXJnc0NvdW50ID0gZXhlYy0+YXJndW1lbnRDb3VudCgpOworICAgIGlmICghYXJnc0NvdW50
KSB7CisgICAgICAgIGNsaWVudC0+dGFrZUhlYXBTbmFwc2hvdChleGVjLCBTdHJpbmcoKSk7Cisg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgfQorCisg
ICAgY29uc3QgU3RyaW5nJiB0aXRsZSh2YWx1ZVRvU3RyaW5nV2l0aFVuZGVmaW5lZE9yTnVsbENo
ZWNrKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApKSk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlv
bigpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworCisg
ICAgY2xpZW50LT50YWtlSGVhcFNuYXBzaG90KGV4ZWMsIHRpdGxlKTsKKyAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworfQorCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jVGltZShFeGVjU3RhdGUqIGV4ZWMpCit7Cisg
ICAgSlNDb25zb2xlKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0NvbnNvbGUqPihleGVj
LT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFjYXN0ZWRUaGlzKQorICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3Rl
ZFRoaXMsIEpTQ29uc29sZTo6aW5mbygpKTsKKyAgICBDb25zb2xlQ2xpZW50KiBjbGllbnQgPSBj
YXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKS0+Y29uc29sZUNsaWVudCgpOworICAgIGlmICghY2xp
ZW50KQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworCisg
ICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpCisgICAgICAgIHJldHVybiB0aHJvd1ZN
RXJyb3IoZXhlYywgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoZXhlYykpOworCisgICAg
Y29uc3QgU3RyaW5nJiB0aXRsZSh2YWx1ZVRvU3RyaW5nV2l0aFVuZGVmaW5lZE9yTnVsbENoZWNr
KGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApKSk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigp
KQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworCisgICAg
Y2xpZW50LT50aW1lKGV4ZWMsIHRpdGxlKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOworfQorCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
b25zb2xlUHJvdG9GdW5jVGltZUVuZChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgSlNDb25zb2xl
KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0NvbnNvbGUqPihleGVjLT50aGlzVmFsdWUo
KSk7CisgICAgaWYgKCFjYXN0ZWRUaGlzKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTQ29u
c29sZTo6aW5mbygpKTsKKyAgICBDb25zb2xlQ2xpZW50KiBjbGllbnQgPSBjYXN0ZWRUaGlzLT5n
bG9iYWxPYmplY3QoKS0+Y29uc29sZUNsaWVudCgpOworICAgIGlmICghY2xpZW50KQorICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworCisgICAgaWYgKGV4ZWMt
PmFyZ3VtZW50Q291bnQoKSA8IDEpCisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywg
Y3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoZXhlYykpOworCisgICAgY29uc3QgU3RyaW5n
JiB0aXRsZSh2YWx1ZVRvU3RyaW5nV2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrKGV4ZWMsIGV4ZWMt
PmFyZ3VtZW50KDApKSk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworCisgICAgY2xpZW50LT50aW1l
RW5kKGV4ZWMsIHRpdGxlKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOworfQorCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJv
dG9GdW5jVGltZVN0YW1wKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBKU0NvbnNvbGUqIGNhc3Rl
ZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTQ29uc29sZSo+KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKKyAg
ICBpZiAoIWNhc3RlZFRoaXMpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMp
OworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNDb25zb2xlOjpp
bmZvKCkpOworICAgIENvbnNvbGVDbGllbnQqIGNsaWVudCA9IGNhc3RlZFRoaXMtPmdsb2JhbE9i
amVjdCgpLT5jb25zb2xlQ2xpZW50KCk7CisgICAgaWYgKCFjbGllbnQpCisgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisKKyAgICBSZWZQdHI8SW5zcGVjdG9y
OjpTY3JpcHRBcmd1bWVudHM+IGFyZ3VtZW50cyhJbnNwZWN0b3I6OmNyZWF0ZVNjcmlwdEFyZ3Vt
ZW50cyhleGVjLCAwKSk7CisgICAgY2xpZW50LT50aW1lU3RhbXAoZXhlYywgYXJndW1lbnRzLnJl
bGVhc2UoKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKK30K
Kworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY0dy
b3VwKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBKU0NvbnNvbGUqIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTQ29uc29sZSo+KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIWNhc3Rl
ZFRoaXMpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNDb25zb2xlOjppbmZvKCkpOworICAg
IENvbnNvbGVDbGllbnQqIGNsaWVudCA9IGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLT5jb25z
b2xlQ2xpZW50KCk7CisgICAgaWYgKCFjbGllbnQpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CisKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpTY3JpcHRBcmd1
bWVudHM+IGFyZ3VtZW50cyhJbnNwZWN0b3I6OmNyZWF0ZVNjcmlwdEFyZ3VtZW50cyhleGVjLCAw
KSk7CisgICAgY2xpZW50LT5ncm91cChleGVjLCBhcmd1bWVudHMucmVsZWFzZSgpKTsKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworfQorCitzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jR3JvdXBDb2xsYXBzZWQoRXhl
Y1N0YXRlKiBleGVjKQoreworICAgIEpTQ29uc29sZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNDb25zb2xlKj4oZXhlYy0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghY2FzdGVkVGhpcykK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU0NvbnNvbGU6OmluZm8oKSk7CisgICAgQ29uc29s
ZUNsaWVudCogY2xpZW50ID0gY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCktPmNvbnNvbGVDbGll
bnQoKTsKKyAgICBpZiAoIWNsaWVudCkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKKworICAgIFJlZlB0cjxJbnNwZWN0b3I6OlNjcmlwdEFyZ3VtZW50cz4g
YXJndW1lbnRzKEluc3BlY3Rvcjo6Y3JlYXRlU2NyaXB0QXJndW1lbnRzKGV4ZWMsIDApKTsKKyAg
ICBjbGllbnQtPmdyb3VwQ29sbGFwc2VkKGV4ZWMsIGFyZ3VtZW50cy5yZWxlYXNlKCkpOworICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Cit9CisKK3N0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNHcm91cEVuZChFeGVjU3Rh
dGUqIGV4ZWMpCit7CisgICAgSlNDb25zb2xlKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U0NvbnNvbGUqPihleGVjLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFjYXN0ZWRUaGlzKQorICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTQ29uc29sZTo6aW5mbygpKTsKKyAgICBDb25zb2xlQ2xp
ZW50KiBjbGllbnQgPSBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKS0+Y29uc29sZUNsaWVudCgp
OworICAgIGlmICghY2xpZW50KQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOworCisgICAgUmVmUHRyPEluc3BlY3Rvcjo6U2NyaXB0QXJndW1lbnRzPiBhcmd1
bWVudHMoSW5zcGVjdG9yOjpjcmVhdGVTY3JpcHRBcmd1bWVudHMoZXhlYywgMCkpOworICAgIGNs
aWVudC0+Z3JvdXBFbmQoZXhlYywgYXJndW1lbnRzLnJlbGVhc2UoKSk7CisgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc29sZVByb3RvdHlwZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29uc29sZVByb3RvdHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEyN2FkMjRh
ZGE0YzVjYzMyMjc3MTViMWI3MjI1MTZjMWU1NmM2OTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25zb2xlUHJvdG90eXBlLmgKQEAgLTAsMCArMSw2
MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgQ29uc29sZVByb3RvdHlwZV9oCisjZGVmaW5lIENvbnNvbGVQcm90b3R5cGVfaAorCisjaW5j
bHVkZSAiSlNPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIENvbnNvbGVQcm90
b3R5cGUgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBK
U05vbkZpbmFsT2JqZWN0IEJhc2U7CisKKyAgICBERUNMQVJFX0lORk87CisKKyAgICBzdGF0aWMg
Q29uc29sZVByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgeworICAgICAgICBDb25zb2xlUHJvdG90
eXBlKiBwcm90b3R5cGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxDb25zb2xlUHJvdG90
eXBlPih2bS5oZWFwKSkgQ29uc29sZVByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKKyAgICAgICAg
cHJvdG90eXBlLT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgcmV0
dXJuIHByb3RvdHlwZTsKKyAgICB9CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3Rv
dHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwg
aW5mbygpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQ29uc29sZVByb3RvdHlwZShWTSYgdm0s
IFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgICAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKKyAg
ICB7CisgICAgfQorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCop
OworfTsKKworfQorCisjZW5kaWYgLy8gIWRlZmluZWQoQ29uc29sZVByb3RvdHlwZV9oKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDb25zb2xlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ29uc29sZS5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2Qw
NGFiZjU4NDRmZDMzZDMzZmYzN2RhMTM1ZmYwN2FhNGM2NDY3ZAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ29uc29sZS5jcHAKQEAgLTAsMCArMSwz
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU0NvbnNvbGUuaCIKKworI2luY2x1ZGUgIkpTQ0pT
VmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgorCituYW1lc3Bh
Y2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEpTQ29uc29sZTo6c19pbmZvID0geyAiQ29uc29s
ZSIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNDb25zb2xlKSB9Owor
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NvbnNvbGUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ29uc29sZS5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmRlNjExZWM3NjBjNDJkNWUxODFjODdkZDZkMzhiZDVhYzkyMzQ3YmQKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NvbnNvbGUuaApAQCAtMCwwICsx
LDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBKU0NvbnNvbGVfaAorI2RlZmluZSBKU0NvbnNvbGVfaAorCisjaW5jbHVkZSAiSlNPYmpl
Y3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEpTQ29uc29sZSA6IHB1YmxpYyBKU05v
bkZpbmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFz
ZTsKKworICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2
bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVy
ZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgSlNDb25zb2xlKiBjcmVhdGUo
Vk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICB7CisgICAgICAgIEpTQ29uc29sZSog
aW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0NvbnNvbGU+KHZtLmhlYXAp
KSBKU0NvbnNvbGUodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIGluc3RhbmNlLT5maW5pc2hDcmVh
dGlvbih2bSk7CisgICAgICAgIHJldHVybiBpbnN0YW5jZTsKKyAgICB9CisKKyAgICBzdGF0aWMg
SlNDb25zb2xlKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
KyAgICB7CisgICAgICAgIHJldHVybiBjcmVhdGUoZXhlYy0+dm0oKSwgc3RydWN0dXJlKTsKKyAg
ICB9CisKK3ByaXZhdGU6CisgICAgSlNDb25zb2xlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCisgICAgICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQorICAgIHsKKyAgICB9Cit9OworCit9
CisKKyNlbmRpZiAvLyAhZGVmaW5lZChKU0NvbnNvbGVfaCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCBiYmJkMzU3MjBiNWIyYjFh
YmI2MmQ2MjJmNTM4Yzc3ZjllZjkxMWE3Li43ZGU5MjYwNzkyYzM0MjlmMjZmMDllZGQzOTk0YzUz
NGIxNWI3ZDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwCkBAIC0zOSw3ICszOSw3IEBACiAjaW5jbHVkZSAiQ2xvbmVkQXJndW1lbnRz
LmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiQ29kZUNhY2hlLmgiCi0jaW5j
bHVkZSAiQ29uc29sZU9iamVjdC5oIgorI2luY2x1ZGUgIkNvbnNvbGVQcm90b3R5cGUuaCIKICNp
bmNsdWRlICJEYXRlQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJEYXRlUHJvdG90eXBlLmgiCiAj
aW5jbHVkZSAiRGVidWdnZXIuaCIKQEAgLTcwLDYgKzcwLDcgQEAKICNpbmNsdWRlICJKU0NhbGxi
YWNrQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJKU0NhbGxiYWNrRnVuY3Rpb24uaCIKICNpbmNs
dWRlICJKU0NhbGxiYWNrT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNDb25zb2xlLmgiCiAjaW5jbHVk
ZSAiSlNEYXRhVmlldy5oIgogI2luY2x1ZGUgIkpTRGF0YVZpZXdQcm90b3R5cGUuaCIKICNpbmNs
dWRlICJKU0RvbGxhclZNLmgiCkBAIC00OTcsOCArNDk4LDYgQEAgcHV0RGlyZWN0V2l0aG91dFRy
YW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPiBqc05hbWUsIGxvd2VyTmFtZSAjIyBDb25z
dHJ1Y3QKICAgICBSZWZsZWN0T2JqZWN0KiByZWZsZWN0T2JqZWN0ID0gUmVmbGVjdE9iamVjdDo6
Y3JlYXRlKHZtLCB0aGlzLCBSZWZsZWN0T2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMs
IG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRp
b24odm0sIHZtLnByb3BlcnR5TmFtZXMtPlJlZmxlY3QsIHJlZmxlY3RPYmplY3QsIERvbnRFbnVt
KTsKIAotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5jb25zb2xlLCBDb25zb2xlT2JqZWN0OjpjcmVhdGUodm0sIHRoaXMsIENvbnNvbGVPYmplY3Q6
OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKSk7Ci0K
ICAgICBKU1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3IqIHR5cGVkQXJyYXlTdXBlckNvbnN0cnVj
dG9yID0gSlNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yOjpjcmVhdGUodm0sIHRoaXMsIEpTVHlw
ZWRBcnJheVZpZXdDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0
aW9uUHJvdG90eXBlLmdldCgpKSwgdHlwZWRBcnJheVByb3RvLCBzcGVjaWVzR2V0dGVyU2V0dGVy
KTsKICAgICB0eXBlZEFycmF5UHJvdG8tPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgdHlwZWRBcnJheVN1cGVyQ29uc3RydWN0b3Is
IERvbnRFbnVtKTsKIApAQCAtNjc0LDYgKzY3MywxMSBAQCBwdXREaXJlY3RXaXRob3V0VHJhbnNp
dGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+IGpzTmFtZSwgbG93ZXJOYW1lICMjIENvbnN0cnVj
dAogCiAgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1Rp
bWVDb25zdGFudDo6RGVmaW5lUHJvcGVydHlGdW5jdGlvbildID0gbV9kZWZpbmVQcm9wZXJ0eUZ1
bmN0aW9uLmdldCgpOwogCisgICAgQ29uc29sZVByb3RvdHlwZSogY29uc29sZVByb3RvdHlwZSA9
IENvbnNvbGVQcm90b3R5cGU6OmNyZWF0ZSh2bSwgdGhpcywgQ29uc29sZVByb3RvdHlwZTo6Y3Jl
YXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpOworICAgIG1f
Y29uc29sZVN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpTQ29uc29sZTo6Y3JlYXRlU3RydWN0dXJl
KHZtLCB0aGlzLCBjb25zb2xlUHJvdG90eXBlKSk7CisgICAgSlNDb25zb2xlKiBjb25zb2xlT2Jq
ZWN0ID0gSlNDb25zb2xlOjpjcmVhdGUodm0sIG1fY29uc29sZVN0cnVjdHVyZS5nZXQoKSk7Cisg
ICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmco
ZXhlYywgImNvbnNvbGUiKSwgY29uc29sZU9iamVjdCwgRG9udEVudW0pOworCiAgICAgaWYgKFVO
TElLRUxZKE9wdGlvbnM6OnVzZURvbGxhclZNKCkpKSB7CiAgICAgICAgIEpTRG9sbGFyVk1Qcm90
b3R5cGUqIGRvbGxhclZNUHJvdG90eXBlID0gSlNEb2xsYXJWTVByb3RvdHlwZTo6Y3JlYXRlKHZt
LCB0aGlzLCBKU0RvbGxhclZNUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1f
b2JqZWN0UHJvdG90eXBlLmdldCgpKSk7CiAgICAgICAgIG1fZG9sbGFyVk1TdHJ1Y3R1cmUuc2V0
KHZtLCB0aGlzLCBKU0RvbGxhclZNOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIGRvbGxhclZN
UHJvdG90eXBlKSk7CkBAIC05OTYsNiArMTAwMCw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZp
c2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNp
dG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9yZWdFeHBNYXRjaGVzQXJyYXlTbG93UHV0U3RydWN0
dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9tb2R1bGVSZWNvcmRTdHJ1
Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX21vZHVsZU5hbWVzcGFj
ZU9iamVjdFN0cnVjdHVyZSk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fY29u
c29sZVN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZG9sbGFy
Vk1TdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2ludGVybmFs
RnVuY3Rpb25TdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3By
b3h5T2JqZWN0U3RydWN0dXJlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5oCmluZGV4IDhiYjE0YzMzMzEzNjAxZjg0NTIxYWJkN2ZiYTFmNjE4OGQ1
ZDYyZWIuLmQ4NDg5MGE5NzQzMzcxNzMwZTcyMzk3N2IxMjA4MjQxOTU3NDE1MTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtMjgxLDYg
KzI4MSw3IEBAIHByb3RlY3RlZDoKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3ByaXZh
dGVOYW1lU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcmVnRXhwU3Ry
dWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fZ2VuZXJhdG9yRnVuY3Rpb25T
dHJ1Y3R1cmU7CisgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9jb25zb2xlU3RydWN0dXJl
OwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fZG9sbGFyVk1TdHJ1Y3R1cmU7CiAgICAg
V3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9pbnRlcm5hbEZ1bmN0aW9uU3RydWN0dXJlOwogICAg
IFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1faXRlcmF0b3JSZXN1bHRPYmplY3RTdHJ1Y3R1cmU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoT2JqZWN0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3QuY3BwCmluZGV4IDNm
OWE4ODdkYThjNmNkNThiZTFhMDVjN2FhNDA1OWZhMWFiNzBhMWEuLjY2ZDMxYjc0ZDlhODc2NzI0
YTk3Y2E1MGE5YTYzYTE4Y2M5NjM2ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL01hdGhPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL01hdGhPYmplY3QuY3BwCkBAIC02OSw2ICs2OSwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNUYW4oRXhlY1N0YXRlKik7CiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNUYW5oKEV4ZWNTdGF0ZSopOwogRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jSU11bChFeGVjU3RhdGUqKTsKIAorfQorCitu
YW1lc3BhY2UgSlNDIHsKKwogY29uc3QgQ2xhc3NJbmZvIE1hdGhPYmplY3Q6OnNfaW5mbyA9IHsg
Ik1hdGgiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKE1hdGhPYmplY3Qp
IH07CiAKIE1hdGhPYmplY3Q6Ok1hdGhPYmplY3QoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3Qu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3QuaAppbmRleCBiNmU5
ZjNmM2RhZWY3NTE3MmE2NGUxYWVhYjFkZTc1MWU1MDk3YjgxLi4xYTEzM2Q1NTRkYTQ0MGE3NWRk
NDE2Njc3NmVlNzhlOGQyYjJkZmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9NYXRoT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TWF0aE9iamVjdC5oCkBAIC0zMSw2ICszMSw3IEBAIHByaXZhdGU6CiAKIHB1YmxpYzoKICAgICB0
eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
U3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blBy
b3BlcnR5U2xvdDsKIAogICAgIHN0YXRpYyBNYXRoT2JqZWN0KiBjcmVhdGUoVk0mIHZtLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
aW5kZXggYzk1ZWNkYjNmMGVlYTI2ZjQyNTU3ODMzODU2MzVjMDAwNWE5MjdmNi4uNDA2M2ZlZDBi
MTM0NGMwMGU0MjdjZTRlMDU4ZWU2Zjk4NzEyZjhiYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisy
MDE2LTA1LTAzICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KKworICAg
ICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjAwMzUwLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3MzA0CisKKyAgICAgICAgYnJva2UganNj
IHRlc3RzIChSZXF1ZXN0ZWQgYnkgYWxleGNocmlzdGVuc2VuIG9uICN3ZWJraXQpLgorCisgICAg
ICAgIFJldmVydGVkIGNoYW5nZXNldDoKKworICAgICAgICAiTWFrZSBjb25zb2xlIGEgbmFtZXNw
YWNlIG9iamVjdCAobGlrZSBNYXRoL0pTT04pLCBhbGxvd2luZworICAgICAgICBmdW5jdGlvbnMg
dG8gYmUgY2FsbGVkIHVuYm91bmQiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNTcyODYKKyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFu
Z2VzZXQvMjAwMzUwCisKIDIwMTYtMDUtMDIgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBh
cHBsZS5jb20+CiAKICAgICAgICAgRG9uJ3QgcnVuIHRyYW5zaXRpb25zIHRvL2Zyb20gJ2F1dG8n
IHZhbHVlcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvY29uc29sZS1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9qcy9jb25zb2xlLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZGY5NWRjYTk0YmRlYmEyYjZjZTMwNzhkNzBkYzRjMTAzMDkyMDU4Yy4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9q
cy9jb25zb2xlLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDE3MCArMCwwIEBACi1D
T05TT0xFIE1FU1NBR0U6IGxpbmUgMTk6IGxvZyBtZXNzYWdlCi1DT05TT0xFIE1FU1NBR0U6IGxp
bmUgMjA6IGxvZyBtZXNzYWdlCi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgMjE6IGxvZyBtZXNzYWdl
Ci1DT05TT0xFIE1FU1NBR0U6IGxpbmUgMjI6IGxvZyBtZXNzYWdlCi1DT05TT0xFIE1FU1NBR0U6
IGxpbmUgMjM6IGxvZyBtZXNzYWdlCi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgMjQ6IGxvZyBtZXNz
YWdlCi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgMjY6IGxvZyBtZXNzYWdlCi1DT05TT0xFIE1FU1NB
R0U6IGxpbmUgMTogMQotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6IDIKLUNPTlNPTEUgTUVTU0FH
RTogbGluZSAxOiAzCi1QQVNTIHR5cGVvZiBjb25zb2xlIGlzICJvYmplY3QiCi1QQVNTIGNvbnNv
bGUudG9TdHJpbmcoKSBpcyAiW29iamVjdCBDb25zb2xlXSIKLVBBU1MgT2JqZWN0LmdldFByb3Rv
dHlwZU9mKGNvbnNvbGUpIGlzIE9iamVjdC5nZXRQcm90b3R5cGVPZih7fSkKLVBBU1MgY29uc29s
ZSBpcyBjb25zb2xlCi1QQVNTIGNvbnNvbGVEZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSBpcyB0cnVl
Ci1QQVNTIGNvbnNvbGVEZXNjcmlwdG9yLndyaXRhYmxlIGlzIHRydWUKLVBBU1MgY29uc29sZURl
c2NyaXB0b3IuZW51bWVyYWJsZSBpcyB0cnVlCi0KLWNvbnNvbGUuZGVidWcKLVBBU1MgdHlwZW9m
IGNvbnNvbGUuZGVidWcgaXMgImZ1bmN0aW9uIgotUEFTUyBjb25zb2xlLmRlYnVnLmxlbmd0aCBp
cyAwCi1QQVNTIGRlc2NyaXB0b3IuY29uZmlndXJhYmxlIGlzIHRydWUKLVBBU1MgZGVzY3JpcHRv
ci53cml0YWJsZSBpcyB0cnVlCi1QQVNTIGRlc2NyaXB0b3IuZW51bWVyYWJsZSBpcyB0cnVlCi0K
LWNvbnNvbGUuZXJyb3IKLVBBU1MgdHlwZW9mIGNvbnNvbGUuZXJyb3IgaXMgImZ1bmN0aW9uIgot
UEFTUyBjb25zb2xlLmVycm9yLmxlbmd0aCBpcyAwCi1QQVNTIGRlc2NyaXB0b3IuY29uZmlndXJh
YmxlIGlzIHRydWUKLVBBU1MgZGVzY3JpcHRvci53cml0YWJsZSBpcyB0cnVlCi1QQVNTIGRlc2Ny
aXB0b3IuZW51bWVyYWJsZSBpcyB0cnVlCi0KLWNvbnNvbGUubG9nCi1QQVNTIHR5cGVvZiBjb25z
b2xlLmxvZyBpcyAiZnVuY3Rpb24iCi1QQVNTIGNvbnNvbGUubG9nLmxlbmd0aCBpcyAwCi1QQVNT
IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlIGlzIHRydWUKLVBBU1MgZGVzY3JpcHRvci53cml0YWJs
ZSBpcyB0cnVlCi1QQVNTIGRlc2NyaXB0b3IuZW51bWVyYWJsZSBpcyB0cnVlCi0KLWNvbnNvbGUu
aW5mbwotUEFTUyB0eXBlb2YgY29uc29sZS5pbmZvIGlzICJmdW5jdGlvbiIKLVBBU1MgY29uc29s
ZS5pbmZvLmxlbmd0aCBpcyAwCi1QQVNTIGRlc2NyaXB0b3IuY29uZmlndXJhYmxlIGlzIHRydWUK
LVBBU1MgZGVzY3JpcHRvci53cml0YWJsZSBpcyB0cnVlCi1QQVNTIGRlc2NyaXB0b3IuZW51bWVy
YWJsZSBpcyB0cnVlCi0KLWNvbnNvbGUud2FybgotUEFTUyB0eXBlb2YgY29uc29sZS53YXJuIGlz
ICJmdW5jdGlvbiIKLVBBU1MgY29uc29sZS53YXJuLmxlbmd0aCBpcyAwCi1QQVNTIGRlc2NyaXB0
b3IuY29uZmlndXJhYmxlIGlzIHRydWUKLVBBU1MgZGVzY3JpcHRvci53cml0YWJsZSBpcyB0cnVl
Ci1QQVNTIGRlc2NyaXB0b3IuZW51bWVyYWJsZSBpcyB0cnVlCi0KLWNvbnNvbGUuY2xlYXIKLVBB
U1MgdHlwZW9mIGNvbnNvbGUuY2xlYXIgaXMgImZ1bmN0aW9uIgotUEFTUyBjb25zb2xlLmNsZWFy
Lmxlbmd0aCBpcyAwCi1QQVNTIGRlc2NyaXB0b3IuY29uZmlndXJhYmxlIGlzIHRydWUKLVBBU1Mg
ZGVzY3JpcHRvci53cml0YWJsZSBpcyB0cnVlCi1QQVNTIGRlc2NyaXB0b3IuZW51bWVyYWJsZSBp
cyB0cnVlCi0KLWNvbnNvbGUuZGlyCi1QQVNTIHR5cGVvZiBjb25zb2xlLmRpciBpcyAiZnVuY3Rp
b24iCi1QQVNTIGNvbnNvbGUuZGlyLmxlbmd0aCBpcyAwCi1QQVNTIGRlc2NyaXB0b3IuY29uZmln
dXJhYmxlIGlzIHRydWUKLVBBU1MgZGVzY3JpcHRvci53cml0YWJsZSBpcyB0cnVlCi1QQVNTIGRl
c2NyaXB0b3IuZW51bWVyYWJsZSBpcyB0cnVlCi0KLWNvbnNvbGUuZGlyeG1sCi1QQVNTIHR5cGVv
ZiBjb25zb2xlLmRpcnhtbCBpcyAiZnVuY3Rpb24iCi1QQVNTIGNvbnNvbGUuZGlyeG1sLmxlbmd0
aCBpcyAwCi1QQVNTIGRlc2NyaXB0b3IuY29uZmlndXJhYmxlIGlzIHRydWUKLVBBU1MgZGVzY3Jp
cHRvci53cml0YWJsZSBpcyB0cnVlCi1QQVNTIGRlc2NyaXB0b3IuZW51bWVyYWJsZSBpcyB0cnVl
Ci0KLWNvbnNvbGUudGFibGUKLVBBU1MgdHlwZW9mIGNvbnNvbGUudGFibGUgaXMgImZ1bmN0aW9u
IgotUEFTUyBjb25zb2xlLnRhYmxlLmxlbmd0aCBpcyAwCi1QQVNTIGRlc2NyaXB0b3IuY29uZmln
dXJhYmxlIGlzIHRydWUKLVBBU1MgZGVzY3JpcHRvci53cml0YWJsZSBpcyB0cnVlCi1QQVNTIGRl
c2NyaXB0b3IuZW51bWVyYWJsZSBpcyB0cnVlCi0KLWNvbnNvbGUudHJhY2UKLVBBU1MgdHlwZW9m
IGNvbnNvbGUudHJhY2UgaXMgImZ1bmN0aW9uIgotUEFTUyBjb25zb2xlLnRyYWNlLmxlbmd0aCBp
cyAwCi1QQVNTIGRlc2NyaXB0b3IuY29uZmlndXJhYmxlIGlzIHRydWUKLVBBU1MgZGVzY3JpcHRv
ci53cml0YWJsZSBpcyB0cnVlCi1QQVNTIGRlc2NyaXB0b3IuZW51bWVyYWJsZSBpcyB0cnVlCi0K
LWNvbnNvbGUuYXNzZXJ0Ci1QQVNTIHR5cGVvZiBjb25zb2xlLmFzc2VydCBpcyAiZnVuY3Rpb24i
Ci1QQVNTIGNvbnNvbGUuYXNzZXJ0Lmxlbmd0aCBpcyAwCi1QQVNTIGRlc2NyaXB0b3IuY29uZmln
dXJhYmxlIGlzIHRydWUKLVBBU1MgZGVzY3JpcHRvci53cml0YWJsZSBpcyB0cnVlCi1QQVNTIGRl
c2NyaXB0b3IuZW51bWVyYWJsZSBpcyB0cnVlCi0KLWNvbnNvbGUuY291bnQKLVBBU1MgdHlwZW9m
IGNvbnNvbGUuY291bnQgaXMgImZ1bmN0aW9uIgotUEFTUyBjb25zb2xlLmNvdW50Lmxlbmd0aCBp
cyAwCi1QQVNTIGRlc2NyaXB0b3IuY29uZmlndXJhYmxlIGlzIHRydWUKLVBBU1MgZGVzY3JpcHRv
ci53cml0YWJsZSBpcyB0cnVlCi1QQVNTIGRlc2NyaXB0b3IuZW51bWVyYWJsZSBpcyB0cnVlCi0K
LWNvbnNvbGUucHJvZmlsZQotUEFTUyB0eXBlb2YgY29uc29sZS5wcm9maWxlIGlzICJmdW5jdGlv
biIKLVBBU1MgY29uc29sZS5wcm9maWxlLmxlbmd0aCBpcyAwCi1QQVNTIGRlc2NyaXB0b3IuY29u
ZmlndXJhYmxlIGlzIHRydWUKLVBBU1MgZGVzY3JpcHRvci53cml0YWJsZSBpcyB0cnVlCi1QQVNT
IGRlc2NyaXB0b3IuZW51bWVyYWJsZSBpcyB0cnVlCi0KLWNvbnNvbGUucHJvZmlsZUVuZAotUEFT
UyB0eXBlb2YgY29uc29sZS5wcm9maWxlRW5kIGlzICJmdW5jdGlvbiIKLVBBU1MgY29uc29sZS5w
cm9maWxlRW5kLmxlbmd0aCBpcyAwCi1QQVNTIGRlc2NyaXB0b3IuY29uZmlndXJhYmxlIGlzIHRy
dWUKLVBBU1MgZGVzY3JpcHRvci53cml0YWJsZSBpcyB0cnVlCi1QQVNTIGRlc2NyaXB0b3IuZW51
bWVyYWJsZSBpcyB0cnVlCi0KLWNvbnNvbGUudGltZQotUEFTUyB0eXBlb2YgY29uc29sZS50aW1l
IGlzICJmdW5jdGlvbiIKLVBBU1MgY29uc29sZS50aW1lLmxlbmd0aCBpcyAwCi1QQVNTIGRlc2Ny
aXB0b3IuY29uZmlndXJhYmxlIGlzIHRydWUKLVBBU1MgZGVzY3JpcHRvci53cml0YWJsZSBpcyB0
cnVlCi1QQVNTIGRlc2NyaXB0b3IuZW51bWVyYWJsZSBpcyB0cnVlCi0KLWNvbnNvbGUudGltZUVu
ZAotUEFTUyB0eXBlb2YgY29uc29sZS50aW1lRW5kIGlzICJmdW5jdGlvbiIKLVBBU1MgY29uc29s
ZS50aW1lRW5kLmxlbmd0aCBpcyAwCi1QQVNTIGRlc2NyaXB0b3IuY29uZmlndXJhYmxlIGlzIHRy
dWUKLVBBU1MgZGVzY3JpcHRvci53cml0YWJsZSBpcyB0cnVlCi1QQVNTIGRlc2NyaXB0b3IuZW51
bWVyYWJsZSBpcyB0cnVlCi0KLWNvbnNvbGUudGltZVN0YW1wCi1QQVNTIHR5cGVvZiBjb25zb2xl
LnRpbWVTdGFtcCBpcyAiZnVuY3Rpb24iCi1QQVNTIGNvbnNvbGUudGltZVN0YW1wLmxlbmd0aCBp
cyAwCi1QQVNTIGRlc2NyaXB0b3IuY29uZmlndXJhYmxlIGlzIHRydWUKLVBBU1MgZGVzY3JpcHRv
ci53cml0YWJsZSBpcyB0cnVlCi1QQVNTIGRlc2NyaXB0b3IuZW51bWVyYWJsZSBpcyB0cnVlCi0K
LWNvbnNvbGUudGFrZUhlYXBTbmFwc2hvdAotUEFTUyB0eXBlb2YgY29uc29sZS50YWtlSGVhcFNu
YXBzaG90IGlzICJmdW5jdGlvbiIKLVBBU1MgY29uc29sZS50YWtlSGVhcFNuYXBzaG90Lmxlbmd0
aCBpcyAwCi1QQVNTIGRlc2NyaXB0b3IuY29uZmlndXJhYmxlIGlzIHRydWUKLVBBU1MgZGVzY3Jp
cHRvci53cml0YWJsZSBpcyB0cnVlCi1QQVNTIGRlc2NyaXB0b3IuZW51bWVyYWJsZSBpcyB0cnVl
Ci0KLWNvbnNvbGUuZ3JvdXAKLVBBU1MgdHlwZW9mIGNvbnNvbGUuZ3JvdXAgaXMgImZ1bmN0aW9u
IgotUEFTUyBjb25zb2xlLmdyb3VwLmxlbmd0aCBpcyAwCi1QQVNTIGRlc2NyaXB0b3IuY29uZmln
dXJhYmxlIGlzIHRydWUKLVBBU1MgZGVzY3JpcHRvci53cml0YWJsZSBpcyB0cnVlCi1QQVNTIGRl
c2NyaXB0b3IuZW51bWVyYWJsZSBpcyB0cnVlCi0KLWNvbnNvbGUuZ3JvdXBDb2xsYXBzZWQKLVBB
U1MgdHlwZW9mIGNvbnNvbGUuZ3JvdXBDb2xsYXBzZWQgaXMgImZ1bmN0aW9uIgotUEFTUyBjb25z
b2xlLmdyb3VwQ29sbGFwc2VkLmxlbmd0aCBpcyAwCi1QQVNTIGRlc2NyaXB0b3IuY29uZmlndXJh
YmxlIGlzIHRydWUKLVBBU1MgZGVzY3JpcHRvci53cml0YWJsZSBpcyB0cnVlCi1QQVNTIGRlc2Ny
aXB0b3IuZW51bWVyYWJsZSBpcyB0cnVlCi0KLWNvbnNvbGUuZ3JvdXBFbmQKLVBBU1MgdHlwZW9m
IGNvbnNvbGUuZ3JvdXBFbmQgaXMgImZ1bmN0aW9uIgotUEFTUyBjb25zb2xlLmdyb3VwRW5kLmxl
bmd0aCBpcyAwCi1QQVNTIGRlc2NyaXB0b3IuY29uZmlndXJhYmxlIGlzIHRydWUKLVBBU1MgZGVz
Y3JpcHRvci53cml0YWJsZSBpcyB0cnVlCi1QQVNTIGRlc2NyaXB0b3IuZW51bWVyYWJsZSBpcyB0
cnVlCi0KLVBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoY29uc29sZSkubGVuZ3RoIGlz
IGVudW1lcmFibGVQcm9wZXJ0eUNvdW50Ci1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
Ci0KLVRFU1QgQ09NUExFVEUKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvY29uc29sZS5o
dG1sIGIvTGF5b3V0VGVzdHMvanMvY29uc29sZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA3ZTBmMzA0NmM2ZmE3ODA1ZTY1ZTA4ZDk4NjY1NjIzNmExNzFhNTA4Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2pzL2Nv
bnNvbGUuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLTwhRE9DVFlQRSBIVE1M
IFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0
IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxi
b2R5PgotPHNjcmlwdD4KLXNob3VsZEJlRXF1YWxUb1N0cmluZygidHlwZW9mIGNvbnNvbGUiLCAi
b2JqZWN0Iik7Ci1zaG91bGRCZUVxdWFsVG9TdHJpbmcoImNvbnNvbGUudG9TdHJpbmcoKSIsICJb
b2JqZWN0IENvbnNvbGVdIik7Ci1zaG91bGRCZSgiT2JqZWN0LmdldFByb3RvdHlwZU9mKGNvbnNv
bGUpIiwgIk9iamVjdC5nZXRQcm90b3R5cGVPZih7fSkiKTsKLXNob3VsZEJlKCJjb25zb2xlIiwg
ImNvbnNvbGUiKTsKLQotdmFyIGNvbnNvbGVEZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcih3aW5kb3csICJjb25zb2xlIik7Ci1zaG91bGRCZVRydWUoJ2NvbnNvbGVE
ZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZScpOwotc2hvdWxkQmVUcnVlKCdjb25zb2xlRGVzY3JpcHRv
ci53cml0YWJsZScpOwotc2hvdWxkQmVUcnVlKCdjb25zb2xlRGVzY3JpcHRvci5lbnVtZXJhYmxl
Jyk7Ci0KLS8vIENvbnNvbGUgbWV0aG9kcyBkb24ndCBjYXJlIHdoYXQgdGhlaXIgdGhpcyBvYmpl
Y3QgaXMuCi1jb25zb2xlLmxvZygibG9nIG1lc3NhZ2UiKTsKLWNvbnNvbGUubG9nLmNhbGwobnVs
bCwgImxvZyBtZXNzYWdlIik7Ci1jb25zb2xlLmxvZy5jYWxsKHVuZGVmaW5lZCwgImxvZyBtZXNz
YWdlIik7Ci1jb25zb2xlLmxvZy5jYWxsKGNvbnNvbGUsICJsb2cgbWVzc2FnZSIpOwotY29uc29s
ZS5sb2cuY2FsbCgxMjMsICJsb2cgbWVzc2FnZSIpOwotY29uc29sZS5sb2cuY2FsbCgiaWdub3Jl
IiwgImxvZyBtZXNzYWdlIik7Ci1jb25zb2xlLmxvZy5iaW5kKGNvbnNvbGUsICJsb2cgbWVzc2Fn
ZSIpOwotY29uc29sZS5sb2cuYmluZChjb25zb2xlKSgibG9nIG1lc3NhZ2UiKTsKLVsxLDIsM10u
Zm9yRWFjaChjb25zb2xlLmxvZyk7Ci0KLS8vIEFsbCBwcm9wZXJ0aWVzIHNob3VsZCBiZSBlbnVt
ZXJhYmxlLgotdmFyIHByb3BlcnR5LCBkZXNjcmlwdG9yOwotdmFyIGVudW1lcmFibGVQcm9wZXJ0
eUNvdW50ID0gMDsKLWZvciAocHJvcGVydHkgaW4gY29uc29sZSkgewotICAgIGVudW1lcmFibGVQ
cm9wZXJ0eUNvdW50Kys7Ci0gICAgZGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IoY29uc29sZSwgcHJvcGVydHkpOwotCi0gICAgZGVidWcoIiIpOwotICAgIGRlYnVn
KGBjb25zb2xlLiR7cHJvcGVydHl9YCk7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKGB0eXBl
b2YgY29uc29sZS4ke3Byb3BlcnR5fWAsICJmdW5jdGlvbiIpOwotICAgIHNob3VsZEJlKGBjb25z
b2xlLiR7cHJvcGVydHl9Lmxlbmd0aGAsICcwJyk7Ci0gICAgc2hvdWxkQmVUcnVlKCdkZXNjcmlw
dG9yLmNvbmZpZ3VyYWJsZScpOwotICAgIHNob3VsZEJlVHJ1ZSgnZGVzY3JpcHRvci53cml0YWJs
ZScpOwotICAgIHNob3VsZEJlVHJ1ZSgnZGVzY3JpcHRvci5lbnVtZXJhYmxlJyk7Ci19Ci0KLWRl
YnVnKCIiKTsKLXNob3VsZEJlKCJPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhjb25zb2xlKS5s
ZW5ndGgiLCAiZW51bWVyYWJsZVByb3BlcnR5Q291bnQiKTsKLTwvc2NyaXB0PgotPHNjcmlwdCBz
cmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9o
dG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>