<?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>137408</bug_id>
          
          <creation_ts>2014-10-03 15:03:08 -0700</creation_ts>
          <short_desc>REGRESSION(r174275): Build failures on the internal bots. (Requested by dethbakin on #webkit).</short_desc>
          <delta_ts>2014-10-03 15:05:25 -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>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>137168</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>bdakin</cc>
    
    <cc>fpizlo</cc>
    
    <cc>oliver</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1039365</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-03 15:03:08 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/174275 broke the build:
Build failures on the internal bots. (Requested by dethbakin 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>1039367</commentid>
    <comment_count>1</comment_count>
      <attachid>239240</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-03 15:03:49 -0700</bug_when>
    <thetext>Created attachment 239240
ROLLOUT of r174275

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>1039368</commentid>
    <comment_count>2</comment_count>
      <attachid>239240</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2014-10-03 15:05:22 -0700</bug_when>
    <thetext>Comment on attachment 239240
ROLLOUT of r174275

Clearing flags on attachment: 239240

Committed r174296: &lt;http://trac.webkit.org/changeset/174296&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1039369</commentid>
    <comment_count>3</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2014-10-03 15:05:25 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239240</attachid>
            <date>2014-10-03 15:03:49 -0700</date>
            <delta_ts>2014-10-03 15:05:22 -0700</delta_ts>
            <desc>ROLLOUT of r174275</desc>
            <filename>bug-137408-20141003150351.patch</filename>
            <type>text/plain</type>
            <size>64827</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0Mjk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
NjAxNjA3NDRkODhkYjk0OWYwZjM4OTQyODhmYmM0OTc2NTg4NGVkLi4zYWE1YTY2OGQ3OTc5Yzgx
ZjhiNDkxZjRhMDNhZDRkODdiZjhlMzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAxNC0xMC0wMyAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE3NDI3NS4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzQwOAorCisgICAg
ICAgIEJ1aWxkIGZhaWx1cmVzIG9uIHRoZSBpbnRlcm5hbCBib3RzLiAoUmVxdWVzdGVkIGJ5IGRl
dGhiYWtpbgorICAgICAgICBvbiAjd2Via2l0KS4KKworICAgICAgICBSZXZlcnRlZCBjaGFuZ2Vz
ZXQ6CisKKyAgICAgICAgIkZUTCBzaG91bGQgc2luayBQdXRMb2NhbHMiCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzcxNjgKKyAgICAgICAgaHR0cDov
L3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTc0Mjc1CisKIDIwMTQtMTAtMDMgIE9saXZlciBI
dW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KIAogICAgICAgICB0ZWFyb2ZmX2FyZ3VtZW50cyBzaG91
bGQgYWx3YXlzIHJlZmVyIHRvIHRoZSB1bm1vZGlmaWVkIGFyZ3VtZW50cyByZWdpc3RlcgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRl
eCA2MTQ1NjQ3MDIwMTM4ZWE5MzZlNDM3MmM5MmQxYjJlOTU0NjNjMTgzLi5jZTBjZGM0NGM4N2Ex
ZTI1ZWZiY2FkNTllNGU1MTgwMjE1ZTIyYjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE0LTEw
LTAzICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KKworICAgICAgICBV
bnJldmlld2VkLCByb2xsaW5nIG91dCByMTc0Mjc1LgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3NDA4CisKKyAgICAgICAgQnVpbGQgZmFpbHVyZXMg
b24gdGhlIGludGVybmFsIGJvdHMuIChSZXF1ZXN0ZWQgYnkgZGV0aGJha2luCisgICAgICAgIG9u
ICN3ZWJraXQpLgorCisgICAgICAgIFJldmVydGVkIGNoYW5nZXNldDoKKworICAgICAgICAiRlRM
IHNob3VsZCBzaW5rIFB1dExvY2FscyIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEzNzE2OAorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2No
YW5nZXNldC8xNzQyNzUKKwogMjAxNC0xMC0wMyAgQ2hyaXN0b3BoZSBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CiAKICAgICAgICAgQWRkIFR5cGVDYXN0cy5oIHRvIHhjb2RlcHJvamVjdApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDhiYzU0ZDBkZDA5MGYyOWUyNzIwMDk0
ZmVjZTE1NjQ0ODI5ODAwMWIuLjJmNzJjMmU0Mjk5YjFlZjc0N2UyMGIzZDM4Mzg4OWM2MWFmYjI5
ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTIwNyw3ICsyMDcsNiBA
QCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFn
YXRpb25QaGFzZS5jcHAKICAgICBkZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uY3BwCiAgICAg
ZGZnL0RGR1B1cmVWYWx1ZS5jcHAKLSAgICBkZmcvREZHUHV0TG9jYWxTaW5raW5nUGhhc2UuY3Bw
CiAgICAgZGZnL0RGR1Jlc3VycmVjdGlvbkZvclZhbGlkYXRpb25QaGFzZS5jcHAKICAgICBkZmcv
REZHU1NBQ2FsY3VsYXRvci5jcHAKICAgICBkZmcvREZHU1NBQ29udmVyc2lvblBoYXNlLmNwcApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ov
SmF2YVNjcmlwdENvcmUudmN4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKaW5kZXggYThjYzQ1MmNiNWQzNWNk
NDAwN2I2MjI3MzNmYTI4OTVhNzY5OGIxMS4uNzlkZDdjZjdmYTc3MDU2ZTc4NmY5MjZlZTMzMWIz
MjU0MmE1MDIxYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCkBAIC00
NTMsNyArNDUzLDYgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGRmZ1xERkdQcmVkaWN0
aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxk
ZmdcREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5cZGZnXERGR1B1cmVWYWx1ZS5jcHAiIC8+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxkZmdcREZHUHV0TG9jYWxTaW5raW5nUGhhc2UuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5cZGZnXERGR1Jlc3VycmVjdGlvbkZvclZhbGlkYXRpb25QaGFzZS5jcHAiIC8+CiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxkZmdcREZHU2FmZXBvaW50LmNwcCIgLz4KICAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGRmZ1xERkdTcGVjdWxhdGl2ZUpJVC5jcHAiIC8+CkBAIC0x
MTA1LDEzICsxMTA0LDExIEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxkZmdcREZHUGhp
Q2hpbGRyZW4uaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGRmZ1xERkdQbGFuLmgi
IC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxkZmdcREZHUHJlUG9zdE51bWJlcmluZy5o
IiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZGZnXERGR1ByZWNpc2VMb2NhbENsb2Ji
ZXJpemUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGRmZ1xERkdQcmVkaWN0aW9u
SW5qZWN0aW9uUGhhc2UuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGRmZ1xERkdQ
cmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5cZGZnXERGR1Byb21vdGVIZWFwQWNjZXNzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxkZmdcREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaCIgLz4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXGRmZ1xERkdQdXJlVmFsdWUuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXGRmZ1xERkdQdXRMb2NhbFNpbmtpbmdQaGFzZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5cZGZnXERGR1JlZ2lzdGVyQmFuay5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5cZGZnXERGR1JlZ2lzdGVyU2V0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxkZmdcREZHUmVzdXJyZWN0aW9uRm9yVmFsaWRhdGlvblBoYXNlLmgiIC8+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IGQxYzA3Nzc5ZTkxMzdkMzk0ZjE2MmRmNDVlMWIyNDVlZjVj
MzMxNTcuLmIzMTE3MWQ1YmI3NTJjYWRkZTE1YWMyOGNhZmFkMzk5ZjE0YjZhMTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNTYyLDkgKzE1NjIsNiBAQAogCQlDNDlGRTRBQTE5
QUFDODNFMDBGNDBDRTkgLyogZ2VuZXJhdGVfcHJvdG9jb2xfdHlwZXNfaW1wbGVtZW50YXRpb24u
cHkgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM0OUZF
NEE4MTlBQUM4M0UwMEY0MENFOSAvKiBnZW5lcmF0ZV9wcm90b2NvbF90eXBlc19pbXBsZW1lbnRh
dGlvbi5weSAqLzsgfTsKIAkJQzQ5RkU0QUIxOUFBQzg2MTAwRjQwQ0U5IC8qIGdlbmVyYXRlX3By
b3RvY29sX3R5cGVzX2hlYWRlci5weSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEM0OUZFNEE3MTlBQUM4M0UwMEY0MENFOSAvKiBnZW5lcmF0ZV9wcm90b2Nv
bF90eXBlc19oZWFkZXIucHkgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJQzQ5RkU0QUMxOUFBQzg2MTAwRjQwQ0U5IC8qIGdlbmVyYXRlX3Byb3RvY29s
X3R5cGVzX2ltcGxlbWVudGF0aW9uLnB5IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQzQ5RkU0QTgxOUFBQzgzRTAwRjQwQ0U5IC8qIGdlbmVyYXRlX3Byb3Rv
Y29sX3R5cGVzX2ltcGxlbWVudGF0aW9uLnB5ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07Ci0JCURDMDAwMzkzMTlEOEJFNkYwMDAyM0VCMCAvKiBERkdQcmVj
aXNlTG9jYWxDbG9iYmVyaXplLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBEQzAwMDM5MDE5RDhCRTZGMDAwMjNFQjAgLyogREZHUHJlY2lzZUxvY2FsQ2xv
YmJlcml6ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
Ci0JCURDMDAwMzk4MTlEQkE3MDYwMDAyM0VCMCAvKiBERkdQdXRMb2NhbFNpbmtpbmdQaGFzZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEQzAwMDM5
NjE5REJBNzA2MDAwMjNFQjAgLyogREZHUHV0TG9jYWxTaW5raW5nUGhhc2UuY3BwICovOyB9Owot
CQlEQzAwMDM5OTE5REJBNzA2MDAwMjNFQjAgLyogREZHUHV0TG9jYWxTaW5raW5nUGhhc2UuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDMDAwMzk3MTlE
QkE3MDYwMDAyM0VCMCAvKiBERkdQdXRMb2NhbFNpbmtpbmdQaGFzZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUxMjRBOEY3MEU1NTU3NzUwMDMw
OTFGMSAvKiBPcGFxdWVKU1N0cmluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTEyNEE4RjUwRTU1NTc3NTAwMzA5MUYxIC8qIE9wYXF1ZUpTU3RyaW5n
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTEy
NEE4RjgwRTU1NTc3NTAwMzA5MUYxIC8qIE9wYXF1ZUpTU3RyaW5nLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxMjRBOEY2MEU1NTU3NzUwMDMwOTFG
MSAvKiBPcGFxdWVKU1N0cmluZy5jcHAgKi87IH07CiAJCUUxOEUzQTU5MERGOTI3OEMwMEQ5MEIz
NCAvKiBWTS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFMThFM0E1NzBERjkyNzhDMDBEOTBCMzQgLyogVk0uY3BwICovOyB9OwpAQCAtMzIyNSw5ICsz
MjIyLDYgQEAKIAkJQzQ5RkU0QTgxOUFBQzgzRTAwRjQwQ0U5IC8qIGdlbmVyYXRlX3Byb3RvY29s
X3R5cGVzX2ltcGxlbWVudGF0aW9uLnB5ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBw
YXRoID0gZ2VuZXJhdGVfcHJvdG9jb2xfdHlwZXNfaW1wbGVtZW50YXRpb24ucHk7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQyMTIwMjI4MEFENDMxMEMwMEVENzlCNiAvKiBEYXRlQ29u
dmVyc2lvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGF0ZUNv
bnZlcnNpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMjEyMDIyOTBBRDQz
MTBDMDBFRDc5QjYgLyogRGF0ZUNvbnZlcnNpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IERhdGVDb252ZXJzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CURDMDAwMzkwMTlEOEJFNkYwMDAyM0VCMCAvKiBERkdQcmVjaXNlTG9jYWxDbG9iYmVyaXplLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR1ByZWNpc2VMb2NhbENsb2JiZXJp
emUuaDsgcGF0aCA9IGRmZy9ERkdQcmVjaXNlTG9jYWxDbG9iYmVyaXplLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCURDMDAwMzk2MTlEQkE3MDYwMDAyM0VCMCAvKiBERkdQdXRMb2Nh
bFNpbmtpbmdQaGFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBE
RkdQdXRMb2NhbFNpbmtpbmdQaGFzZS5jcHA7IHBhdGggPSBkZmcvREZHUHV0TG9jYWxTaW5raW5n
UGhhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEQzAwMDM5NzE5REJBNzA2
MDAwMjNFQjAgLyogREZHUHV0TG9jYWxTaW5raW5nUGhhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gREZHUHV0TG9jYWxTaW5raW5nUGhhc2UuaDsgcGF0aCA9IGRmZy9ERkdQ
dXRMb2NhbFNpbmtpbmdQaGFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTI0
QThGNTBFNTU1Nzc1MDAzMDkxRjEgLyogT3BhcXVlSlNTdHJpbmcuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gT3BhcXVlSlNTdHJpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRTEyNEE4RjYwRTU1NTc3NTAwMzA5MUYxIC8qIE9wYXF1ZUpTU3RyaW5nLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE9wYXF1ZUpTU3RyaW5nLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTE3ODYzM0YwRDlCRUMwMDAwRDc0RTc1IC8q
IEluaXRpYWxpemVUaHJlYWRpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SW5pdGlhbGl6ZVRocmVhZGluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDc2
MSw3ICs0NzU1LDYgQEAKIAkJCQkwRjJCOUNERjE5RDBCQTdEMDBCMUQxQjUgLyogREZHUGhpQ2hp
bGRyZW4uaCAqLywKIAkJCQlBNzhBOTc3MjE3OTczOEI4MDA5REY3NDQgLyogREZHUGxhbi5jcHAg
Ki8sCiAJCQkJQTc4QTk3NzMxNzk3MzhCODAwOURGNzQ0IC8qIERGR1BsYW4uaCAqLywKLQkJCQlE
QzAwMDM5MDE5RDhCRTZGMDAwMjNFQjAgLyogREZHUHJlY2lzZUxvY2FsQ2xvYmJlcml6ZS5oICov
LAogCQkJCTBGQkUwRjZEMTZDMURCMDEwMDgyQzVFOCAvKiBERkdQcmVkaWN0aW9uSW5qZWN0aW9u
UGhhc2UuY3BwICovLAogCQkJCTBGQkUwRjZFMTZDMURCMDEwMDgyQzVFOCAvKiBERkdQcmVkaWN0
aW9uSW5qZWN0aW9uUGhhc2UuaCAqLywKIAkJCQkwRkZGQzk1MTE0RUY5MDk1MDBDNzI1MzIgLyog
REZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwICovLApAQCAtNDc3Myw4ICs0NzY2LDYg
QEAKIAkJCQkwRkFBM0UwODE5RDBDMkNCMDBGQUM5RTIgLyogREZHUHJvbW90ZUhlYXBBY2Nlc3Mu
aCAqLywKIAkJCQkwRkIxNzY1RTE5NkI4RjlFMDA5MTA1MkEgLyogREZHUHVyZVZhbHVlLmNwcCAq
LywKIAkJCQkwRkIxNzY1RjE5NkI4RjlFMDA5MTA1MkEgLyogREZHUHVyZVZhbHVlLmggKi8sCi0J
CQkJREMwMDAzOTYxOURCQTcwNjAwMDIzRUIwIC8qIERGR1B1dExvY2FsU2lua2luZ1BoYXNlLmNw
cCAqLywKLQkJCQlEQzAwMDM5NzE5REJBNzA2MDAwMjNFQjAgLyogREZHUHV0TG9jYWxTaW5raW5n
UGhhc2UuaCAqLywKIAkJCQk4NkVDOURDMTEzMjhERjgyMDAyQjJBRDcgLyogREZHUmVnaXN0ZXJC
YW5rLmggKi8sCiAJCQkJMEY2NjZFQ0ExODM2QjM3RTAwRDAxN0YxIC8qIERGR1Jlc3VycmVjdGlv
bkZvclZhbGlkYXRpb25QaGFzZS5jcHAgKi8sCiAJCQkJMEY2NjZFQ0IxODM2QjM3RTAwRDAxN0Yx
IC8qIERGR1Jlc3VycmVjdGlvbkZvclZhbGlkYXRpb25QaGFzZS5oICovLApAQCAtNTU5NSw3ICs1
NTg2LDYgQEAKIAkJCQkwRkVBMEEwODE3MDUxM0RCMDBCQjcyMkMgLyogRlRMQWJicmV2aWF0aW9u
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUzQ0UwOEExOEJDMjFDMzAwQkVERjc2IC8qIENvbnNv
bGVDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUEwQTFEMTcwOEIwMDcwMEJCNzIyQyAv
KiBGVExBYnN0cmFjdEhlYXAuaCBpbiBIZWFkZXJzICovLAotCQkJCURDMDAwMzkzMTlEOEJFNkYw
MDAyM0VCMCAvKiBERkdQcmVjaXNlTG9jYWxDbG9iYmVyaXplLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRkVBMEExRjE3MDhCMDA3MDBCQjcyMkMgLyogRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0ODUzMjgxODdERkRFQzAwODNCNjg3IC8qIEZUTEF2YWls
YWJsZVJlY292ZXJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVBMEEwQTE3MDUxM0RCMDBCQjcy
MkMgLyogRlRMQ2FwYWJpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKQEAgLTU4NTQsNyArNTg0NCw2
IEBACiAJCQkJQkMxOEM0MjgwRTE2RjVDRDAwQjM0NDYwIC8qIEpTU3RyaW5nUmVmLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCQzE4QzQyOTBFMTZGNUNEMDBCMzQ0NjAgLyogSlNTdHJpbmdSZWZDRi5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMUEyOEQ0QTgxNzdCNzFDODAwMDdGQTNDIC8qIEpTU3RyaW5n
UmVmUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJREMwMDAzOTkxOURCQTcwNjAwMDIzRUIw
IC8qIERGR1B1dExvY2FsU2lua2luZ1BoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjkxOUQw
RDE1N0VFMEEyMDA0QTRFN0QgLyogSlNTeW1ib2xUYWJsZU9iamVjdC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkMxOEM0MkEwRTE2RjVDRDAwQjM0NDYwIC8qIEpTVHlwZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEYyQjY2RkIxN0I2QjVBQjAwQTdBRTNGIC8qIEpTVHlwZWRBcnJheUNvbnN0cnVjdG9y
cy5oIGluIEhlYWRlcnMgKi8sCkBAIC02NzMwLDcgKzY3MTksNiBAQAogCQkJCUE3RDg5Q0Y1MTdB
MEI4Q0MwMDc3M0FEOCAvKiBERkdDcml0aWNhbEVkZ2VCcmVha2luZ1BoYXNlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGRkZDOTU5MTRFRjkwQTYwMEM3MjUzMiAvKiBERkdDU0VQaGFzZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRjJGQzc3MjE2RTEyRjcxMDAzOEQ5NzYgLyogREZHRENFUGhh
c2UuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJREMwMDAzOTgxOURCQTcwNjAwMDIzRUIwIC8qIERG
R1B1dExvY2FsU2lua2luZ1BoYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGOEYyQjk5MTcy
RjA0RkYwMDdEQkRBNSAvKiBERkdEZXNpcmVkSWRlbnRpZmllcnMuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQzJDMEY3Q0QxN0JCRkM1QjAwNDY0RkU0IC8qIERGR0Rlc2lyZWRUcmFuc2l0aW9ucy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkU4NTM0QjE3MjNDREE1MDBCNjE4RjUgLyogREZHRGVz
aXJlZFdhdGNocG9pbnRzLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5oCmluZGV4IDY2MGE1YzRlNjEyZDc5NWY0ODNjOGNkNmU4OGZk
NTk5Y2ZiODQ4ZDYuLmE4NjA0MjU2OWY2OWVhNDAyZTEwMDU2N2E2ZDRmNGYzNTdlZTI2YzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKQEAgLTM4NCw3ICsz
ODQsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgcmV0dXJuIHN5
bWJvbFRhYmxlKCktPmNhcHR1cmVFbmQoKTsKICAgICB9Ci0gICAgCisKICAgICBib29sIGlzQ2Fw
dHVyZWQoVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQsIElubGluZUNhbGxGcmFtZSogPSAwKSBjb25z
dDsKICAgICAKICAgICBpbnQgZnJhbWVQb2ludGVyT2Zmc2V0VG9HZXRBY3RpdmF0aW9uUmVnaXN0
ZXJzKGludCBtYWNoaW5lQ2FwdHVyZVN0YXJ0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9PcGVyYW5kcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL09wZXJhbmRzLmgKaW5kZXggMTY4YWFkOTY2OWY3NWZlNjZmMTZjYjJiMDFkZGM5MjEzODRl
NmRlNi4uOTJhOTU2NDM4M2I3MTAwM2QxNGMyNDZhYTMzZGNkMTMwYmMzNDM4NyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wZXJhbmRzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wZXJhbmRzLmgKQEAgLTI1Miw3ICsyNTIsMTEgQEAg
cHVibGljOgogICAgIH0KICAgICAKICAgICB2b2lkIGR1bXBJbkNvbnRleHQoUHJpbnRTdHJlYW0m
IG91dCwgRHVtcENvbnRleHQqIGNvbnRleHQpIGNvbnN0OwotICAgIHZvaWQgZHVtcChQcmludFN0
cmVhbSYgb3V0KSBjb25zdDsKKyAgICAKKyAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkg
Y29uc3QKKyAgICB7CisgICAgICAgIGR1bXBJbkNvbnRleHQob3V0LCAwKTsKKyAgICB9CiAgICAg
CiBwcml2YXRlOgogICAgIFZlY3RvcjxULCA4PiBtX2FyZ3VtZW50czsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGVyYW5kc0lubGluZXMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGVyYW5kc0lubGluZXMuaAppbmRleCBjOWRlZTg4Yzdh
MDNlNDAwYzQ0N2U0OGQ4NDFiMGMzMTVlY2ZlZGY1Li43NGFkNjBiYzE4YTgwYzRiMjkyZjBiMDhh
YjFmMWU5ODc1NWJjYzkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvT3BlcmFuZHNJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L09wZXJhbmRzSW5saW5lcy5oCkBAIC00NywyMiArNDcsNiBAQCB2b2lkIE9wZXJhbmRzPFQsIFRy
YWl0cz46OmR1bXBJbkNvbnRleHQoUHJpbnRTdHJlYW0mIG91dCwgRHVtcENvbnRleHQqIGNvbnRl
eHQpCiAgICAgfQogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBUcmFpdHM+Ci12
b2lkIE9wZXJhbmRzPFQsIFRyYWl0cz46OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKLXsK
LSAgICBDb21tYVByaW50ZXIgY29tbWEoIiAiKTsKLSAgICBmb3IgKHNpemVfdCBhcmd1bWVudElu
ZGV4ID0gbnVtYmVyT2ZBcmd1bWVudHMoKTsgYXJndW1lbnRJbmRleC0tOykgewotICAgICAgICBp
ZiAoVHJhaXRzOjppc0VtcHR5Rm9yRHVtcChhcmd1bWVudChhcmd1bWVudEluZGV4KSkpCi0gICAg
ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiYXJnIiwgYXJndW1l
bnRJbmRleCwgIjoiLCBhcmd1bWVudChhcmd1bWVudEluZGV4KSk7Ci0gICAgfQotICAgIGZvciAo
c2l6ZV90IGxvY2FsSW5kZXggPSAwOyBsb2NhbEluZGV4IDwgbnVtYmVyT2ZMb2NhbHMoKTsgKyts
b2NhbEluZGV4KSB7Ci0gICAgICAgIGlmIChUcmFpdHM6OmlzRW1wdHlGb3JEdW1wKGxvY2FsKGxv
Y2FsSW5kZXgpKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBvdXQucHJpbnQoY29t
bWEsICJsb2MiLCBsb2NhbEluZGV4LCAiOiIsIGxvY2FsKGxvY2FsSW5kZXgpKTsKLSAgICB9Ci19
Ci0KIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gT3BlcmFuZHNJbmxpbmVzX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WaXJ0dWFsUmVnaXN0ZXIu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WaXJ0dWFsUmVnaXN0ZXIuaAppbmRl
eCBiY2E4MzZkZjFhMWY1NWMzYzFjYjUxYmZjOGI2NjhiZDdmYzVkNzUxLi4yNmU1MjVkNDhiZDQz
ZTkwYjlmOWIxMTM0OTgyZGJmNjNmNzRkOTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVmlydHVhbFJlZ2lzdGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1ZpcnR1YWxSZWdpc3Rlci5oCkBAIC01OSw3ICs1OSw2IEBAIHB1YmxpYzoK
ICAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiAobV92aXJ0dWFsUmVnaXN0ZXIgIT0g
c19pbnZhbGlkVmlydHVhbFJlZ2lzdGVyKTsgfQogICAgIGJvb2wgaXNMb2NhbCgpIGNvbnN0IHsg
cmV0dXJuIG9wZXJhbmRJc0xvY2FsKG1fdmlydHVhbFJlZ2lzdGVyKTsgfQogICAgIGJvb2wgaXNB
cmd1bWVudCgpIGNvbnN0IHsgcmV0dXJuIG9wZXJhbmRJc0FyZ3VtZW50KG1fdmlydHVhbFJlZ2lz
dGVyKTsgfQotICAgIGJvb2wgaXNIZWFkZXIoKSBjb25zdCB7IHJldHVybiBtX3ZpcnR1YWxSZWdp
c3RlciA+PSAwICYmIG1fdmlydHVhbFJlZ2lzdGVyIDwgSlNTdGFjazo6VGhpc0FyZ3VtZW50OyB9
CiAgICAgYm9vbCBpc0NvbnN0YW50KCkgY29uc3QgeyByZXR1cm4gbV92aXJ0dWFsUmVnaXN0ZXIg
Pj0gc19maXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleDsgfQogICAgIGludCB0b0xvY2FsKCkgY29u
c3QgeyBBU1NFUlQoaXNMb2NhbCgpKTsgcmV0dXJuIG9wZXJhbmRUb0xvY2FsKG1fdmlydHVhbFJl
Z2lzdGVyKTsgfQogICAgIGludCB0b0FyZ3VtZW50KCkgY29uc3QgeyBBU1NFUlQoaXNBcmd1bWVu
dCgpKTsgcmV0dXJuIG9wZXJhbmRUb0FyZ3VtZW50KG1fdmlydHVhbFJlZ2lzdGVyKTsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVy
SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJl
dGVySW5saW5lcy5oCmluZGV4IDJiZDk5ZTIwMmM2ZGNmNmZlYTdlMWMxMDJhZmUxMDIwOWFlMDk4
YzEuLmMzMDlkYjNlNTBhY2U2ODJmZGNjYjNkOWU4ZTYyMDQ1OWYwODMxMzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJ
bmxpbmVzLmgKQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJz
dHJhY3RTdGF0ZVR5cGU+Ojp2ZXJpZnlFZGdlKE5vZGUqIG5vZGUsIEVkZ2UgZWRnZSkKICAgICBp
ZiAoIShmb3JOb2RlKGVkZ2UpLm1fdHlwZSAmIH50eXBlRmlsdGVyRm9yKGVkZ2UudXNlS2luZCgp
KSkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBERkdfQ1JBU0gobV9ncmFwaCwgbm9kZSwg
dG9DU3RyaW5nKCJFZGdlIHZlcmlmaWNhdGlvbiBlcnJvcjogIiwgbm9kZSwgIi0+IiwgZWRnZSwg
IiB3YXMgZXhwZWN0ZWQgdG8gaGF2ZSB0eXBlICIsIFNwZWN1bGF0aW9uRHVtcCh0eXBlRmlsdGVy
Rm9yKGVkZ2UudXNlS2luZCgpKSksICIgYnV0IGhhcyB0eXBlICIsIFNwZWN1bGF0aW9uRHVtcChm
b3JOb2RlKGVkZ2UpLm1fdHlwZSksICIgKCIsIGZvck5vZGUoZWRnZSkubV90eXBlLCAiKSIpLmRh
dGEoKSk7CisgICAgREZHX0NSQVNIKG1fZ3JhcGgsIG5vZGUsIHRvQ1N0cmluZygiRWRnZSB2ZXJp
ZmljYXRpb24gZXJyb3I6ICIsIG5vZGUsICItPiIsIGVkZ2UsICIgd2FzIGV4cGVjdGVkIHRvIGhh
dmUgdHlwZSAiLCBTcGVjdWxhdGlvbkR1bXAodHlwZUZpbHRlckZvcihlZGdlLnVzZUtpbmQoKSkp
LCAiIGJ1dCBoYXMgdHlwZSAiLCBTcGVjdWxhdGlvbkR1bXAoZm9yTm9kZShlZGdlKS5tX3R5cGUp
KS5kYXRhKCkpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBYnN0cmFjdFN0YXRlVHlwZT4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKaW5kZXgg
Mjc5N2ZkNjRjOWI3M2JmYmVhZjljOTAzODAwMTUxYTMyMjYwNmU4NC4uMjdiMzUwYThkNzE0NDcy
NjczZjEzNjM5YTVkNDY4NjFmMWViMTY4OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTM2OTIsOCArMzY5MiwxMiBAQCBCeXRlQ29k
ZVBhcnNlcjo6SW5saW5lU3RhY2tFbnRyeTo6SW5saW5lU3RhY2tFbnRyeSgKICAgICAgICAgCiAg
ICAgICAgIGlmIChtX2lubGluZUNhbGxGcmFtZS0+Y2FsbGVyLmlubGluZUNhbGxGcmFtZSkKICAg
ICAgICAgICAgIG1faW5saW5lQ2FsbEZyYW1lLT5jYXB0dXJlZFZhcnMgPSBtX2lubGluZUNhbGxG
cmFtZS0+Y2FsbGVyLmlubGluZUNhbGxGcmFtZS0+Y2FwdHVyZWRWYXJzOwotICAgICAgICBlbHNl
Ci0gICAgICAgICAgICBtX2lubGluZUNhbGxGcmFtZS0+Y2FwdHVyZWRWYXJzID0gYnl0ZUNvZGVQ
YXJzZXItPm1fZ3JhcGgubV9vdXRlcm1vc3RDYXB0dXJlZFZhcnM7CisgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgZm9yIChpbnQgaSA9IGJ5dGVDb2RlUGFyc2VyLT5tX2NvZGVCbG9jay0+bV9u
dW1WYXJzOyBpLS07KSB7CisgICAgICAgICAgICAgICAgaWYgKGJ5dGVDb2RlUGFyc2VyLT5tX2Nv
ZGVCbG9jay0+aXNDYXB0dXJlZCh2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpKSkpCisgICAgICAg
ICAgICAgICAgICAgIG1faW5saW5lQ2FsbEZyYW1lLT5jYXB0dXJlZFZhcnMuc2V0KGkpOworICAg
ICAgICAgICAgfQorICAgICAgICB9CiAKICAgICAgICAgZm9yIChpbnQgaSA9IGFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzOyBpLS07KSB7CiAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgYXJn
dW1lbnQgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlclNldC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDbG9iYmVyU2V0LmgKaW5kZXggZDc2ZDM1NTlkOTQzNjEzNzE4NjE4ZWNkOWE1
NmU3ZjliZjJlYmRhMy4uNWRmZTQ5NWZhZmVlMjRlYjBiNjZmOTRiNGI1M2RkM2NmYzQzMmYyMCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyU2V0LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyU2V0LmgKQEAgLTgwLDcgKzgw
LDcgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAgICAgCi0gICAgdm9pZCBvcGVyYXRvcigpKEFi
c3RyYWN0SGVhcCBoZWFwKSBjb25zdAorICAgIHZvaWQgb3BlcmF0b3IoKShBYnN0cmFjdEhlYXAg
aGVhcCkKICAgICB7CiAgICAgICAgIG1fc2V0LmFkZChoZWFwKTsKICAgICB9CkBAIC05Niw3ICs5
Niw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogICAgIAotICAgIHZvaWQgb3BlcmF0b3IoKShB
YnN0cmFjdEhlYXAgaGVhcCkgY29uc3QKKyAgICB2b2lkIG9wZXJhdG9yKCkoQWJzdHJhY3RIZWFw
IGhlYXApCiAgICAgewogICAgICAgICBtX3Jlc3VsdCB8PSBtX3NldC5vdmVybGFwcyhoZWFwKTsK
ICAgICB9CkBAIC0xMDUsNyArMTA1LDcgQEAgcHVibGljOgogICAgIAogcHJpdmF0ZToKICAgICBj
b25zdCBDbG9iYmVyU2V0JiBtX3NldDsKLSAgICBtdXRhYmxlIGJvb2wgbV9yZXN1bHQ7CisgICAg
Ym9vbCBtX3Jlc3VsdDsKIH07CiAKIHZvaWQgYWRkUmVhZHMoR3JhcGgmLCBOb2RlKiwgQ2xvYmJl
clNldCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVy
aXplLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAppbmRleCBl
ZDIwNDJhMmY0OTg1YTg4NDNmNTI3MjhjMTdkNTBlOGFkYWYwNjFhLi5hZWQ1Yzk5MjcyMzgwNTMw
Njk4ZjhjNWQ5MDNmYTMyMGU5Y2FjNDEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Nsb2JiZXJpemUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Nsb2JiZXJpemUuaApAQCAtMSw0ICsxLDQgQEAKLS8qCisgLyoKICAqIENvcHlyaWdodCAoQykg
MjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CkBAIC0zNyw3ICszNyw3IEBACiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIFJlYWRGdW5jdG9yLCB0eXBlbmFtZSBXcml0ZUZ1bmN0b3IsIHR5
cGVuYW1lIERlZkZ1bmN0b3I+Ci12b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBu
b2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdW5jdG9yJiB3cml0ZSwg
Y29uc3QgRGVmRnVuY3RvciYgZGVmKQordm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9k
ZSogbm9kZSwgUmVhZEZ1bmN0b3ImIHJlYWQsIFdyaXRlRnVuY3RvciYgd3JpdGUsIERlZkZ1bmN0
b3ImIGRlZikKIHsKICAgICAvLyBTb21lIG5vdGVzOgogICAgIC8vCkBAIC04OTcsNyArODk3LDcg
QEAgY2xhc3MgTm9PcENsb2JiZXJpemUgewogcHVibGljOgogICAgIE5vT3BDbG9iYmVyaXplKCkg
eyB9CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gVD4KLSAgICB2b2lkIG9wZXJhdG9yKCkoVC4u
LikgY29uc3QgeyB9CisgICAgdm9pZCBvcGVyYXRvcigpKFQuLi4pIHsgfQogfTsKIAogY2xhc3Mg
Q2hlY2tDbG9iYmVyaXplIHsKQEAgLTkwOCwxMiArOTA4LDEyIEBAIHB1YmxpYzoKICAgICB9CiAg
ICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gVD4KLSAgICB2b2lkIG9wZXJhdG9yKCkoVC4u
LikgY29uc3QgeyBtX3Jlc3VsdCA9IHRydWU7IH0KKyAgICB2b2lkIG9wZXJhdG9yKCkoVC4uLikg
eyBtX3Jlc3VsdCA9IHRydWU7IH0KICAgICAKICAgICBib29sIHJlc3VsdCgpIGNvbnN0IHsgcmV0
dXJuIG1fcmVzdWx0OyB9CiAgICAgCiBwcml2YXRlOgotICAgIG11dGFibGUgYm9vbCBtX3Jlc3Vs
dDsKKyAgICBib29sIG1fcmVzdWx0OwogfTsKIAogYm9vbCBkb2VzV3JpdGVzKEdyYXBoJiwgTm9k
ZSopOwpAQCAtOTI2LDcgKzkyNiw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogICAgIAotICAg
IHZvaWQgb3BlcmF0b3IoKShBYnN0cmFjdEhlYXAgb3RoZXJIZWFwKSBjb25zdAorICAgIHZvaWQg
b3BlcmF0b3IoKShBYnN0cmFjdEhlYXAgb3RoZXJIZWFwKQogICAgIHsKICAgICAgICAgaWYgKG1f
cmVzdWx0KQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtOTM3LDcgKzkzNyw3IEBAIHB1YmxpYzoK
IAogcHJpdmF0ZToKICAgICBBYnN0cmFjdEhlYXAgbV9oZWFwOwotICAgIG11dGFibGUgYm9vbCBt
X3Jlc3VsdDsKKyAgICBib29sIG1fcmVzdWx0OwogfTsKIAogYm9vbCBhY2Nlc3Nlc092ZXJsYXAo
R3JhcGgmLCBOb2RlKiwgQWJzdHJhY3RIZWFwKTsKQEAgLTk1NCw3ICs5NTQsNyBAQCBwdWJsaWM6
CiAgICAgewogICAgIH0KICAgICAKLSAgICB2b2lkIG9wZXJhdG9yKCkoQWJzdHJhY3RIZWFwIGhl
YXApIGNvbnN0CisgICAgdm9pZCBvcGVyYXRvcigpKEFic3RyYWN0SGVhcCBoZWFwKQogICAgIHsK
ICAgICAgICAgbV92YWx1ZS5yZWFkKGhlYXApOwogICAgIH0KQEAgLTk3MCw3ICs5NzAsNyBAQCBw
dWJsaWM6CiAgICAgewogICAgIH0KICAgICAKLSAgICB2b2lkIG9wZXJhdG9yKCkoQWJzdHJhY3RI
ZWFwIGhlYXApIGNvbnN0CisgICAgdm9pZCBvcGVyYXRvcigpKEFic3RyYWN0SGVhcCBoZWFwKQog
ICAgIHsKICAgICAgICAgbV92YWx1ZS53cml0ZShoZWFwKTsKICAgICB9CkBAIC05ODYsMTIgKzk4
NiwxMiBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KICAgICAKLSAgICB2b2lkIG9wZXJhdG9yKCko
UHVyZVZhbHVlIHZhbHVlKSBjb25zdAorICAgIHZvaWQgb3BlcmF0b3IoKShQdXJlVmFsdWUgdmFs
dWUpCiAgICAgewogICAgICAgICBtX3ZhbHVlLmRlZih2YWx1ZSk7CiAgICAgfQogICAgIAotICAg
IHZvaWQgb3BlcmF0b3IoKShIZWFwTG9jYXRpb24gbG9jYXRpb24sIE5vZGUqIG5vZGUpIGNvbnN0
CisgICAgdm9pZCBvcGVyYXRvcigpKEhlYXBMb2NhdGlvbiBsb2NhdGlvbiwgTm9kZSogbm9kZSkK
ICAgICB7CiAgICAgICAgIG1fdmFsdWUuZGVmKGxvY2F0aW9uLCBub2RlKTsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZsdXNoRm9ybWF0LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZsdXNoRm9ybWF0LmgKaW5kZXggNTJhMDIzNjBiNTEx
NTFhMDczZmJiZWZlOTZkMGJmZDA0ZDU2ZGJiNi4uMTBlM2MwMDkwYWUzMjk0NGY1YmQ1MmY0Mzll
ODI1NGI1M2U0ODFkMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdG
bHVzaEZvcm1hdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRmx1c2hGb3Jt
YXQuaApAQCAtMTE4LDE3ICsxMTgsNiBAQCBpbmxpbmUgRGF0YUZvcm1hdCBkYXRhRm9ybWF0Rm9y
KEZsdXNoRm9ybWF0IGZvcm1hdCkKICAgICByZXR1cm4gRGF0YUZvcm1hdERlYWQ7CiB9CiAKLWlu
bGluZSBGbHVzaEZvcm1hdCBtZXJnZShGbHVzaEZvcm1hdCBhLCBGbHVzaEZvcm1hdCBiKQotewot
ICAgIGlmIChhID09IERlYWRGbHVzaCkKLSAgICAgICAgcmV0dXJuIGI7Ci0gICAgaWYgKGIgPT0g
RGVhZEZsdXNoKQotICAgICAgICByZXR1cm4gYTsKLSAgICBpZiAoYSA9PSBiKQotICAgICAgICBy
ZXR1cm4gYTsKLSAgICByZXR1cm4gQ29uZmxpY3RpbmdGbHVzaDsKLX0KLQogfSB9IC8vIG5hbWVz
cGFjZSBKU0M6OkRGRwogCiBuYW1lc3BhY2UgV1RGIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdHcmFwaC5jcHAKaW5kZXggY2ZhMGE0MGM5YjdhMTc5Mjc0ZTBkNmM4NzM0NjY5NmYzMTkyMGY1
ZC4uNGRmN2U4NjU5YjljNjU4NmE4MThiMmQ1MmEwMmFlYjRlMGZkYzgwZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKQEAgLTc1LDExICs3NSw2IEBAIEdyYXBoOjpHcmFw
aChWTSYgdm0sIFBsYW4mIHBsYW4sIExvbmdMaXZlZFN0YXRlJiBsb25nTGl2ZWRTdGF0ZSkKICAg
ICAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX211c3RIYW5kbGVWYWx1ZXMuc2l6ZSgpOyBpLS07
KQogICAgICAgICBtX211c3RIYW5kbGVWYWx1ZXNbaV0gPSBmcmVlemVGcmFnaWxlKHBsYW4ubXVz
dEhhbmRsZVZhbHVlc1tpXSk7Ci0gICAgCi0gICAgZm9yICh1bnNpZ25lZCBpID0gbV9jb2RlQmxv
Y2stPm1fbnVtVmFyczsgaS0tOykgewotICAgICAgICBpZiAobV9jb2RlQmxvY2stPmlzQ2FwdHVy
ZWQodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaSkpKQotICAgICAgICAgICAgbV9vdXRlcm1vc3RD
YXB0dXJlZFZhcnMuc2V0KGkpOwotICAgIH0KIH0KIAogR3JhcGg6On5HcmFwaCgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKaW5kZXggZTU4NGExOWQ5YmE0ZWJiMWM1MjczN2YyYWQz
YmM3ZDU1YWU2MWYzOC4uMGNkMTVkZTQ3YzY0NTVjMjkzYTUyMTUxYmJiZjYxYTkxNmZmYzIxNSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaApAQCAtMzY3LDEzICszNjcsNiBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiBiYXNlbGluZUNvZGVCbG9ja0Zvck9yaWdpbkFuZEJhc2Vs
aW5lQ29kZUJsb2NrKGNvZGVPcmlnaW4sIG1fcHJvZmlsZWRCbG9jayk7CiAgICAgfQogICAgIAot
ICAgIGNvbnN0IEJpdFZlY3RvciYgY2FwdHVyZWRWYXJzRm9yKElubGluZUNhbGxGcmFtZSogaW5s
aW5lQ2FsbEZyYW1lKQotICAgIHsKLSAgICAgICAgaWYgKCFpbmxpbmVDYWxsRnJhbWUpCi0gICAg
ICAgICAgICByZXR1cm4gbV9vdXRlcm1vc3RDYXB0dXJlZFZhcnM7Ci0gICAgICAgIHJldHVybiBp
bmxpbmVDYWxsRnJhbWUtPmNhcHR1cmVkVmFyczsKLSAgICB9Ci0gICAgCiAgICAgYm9vbCBpc1N0
cmljdE1vZGVGb3IoQ29kZU9yaWdpbiBjb2RlT3JpZ2luKQogICAgIHsKICAgICAgICAgaWYgKCFj
b2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSkKQEAgLTkwMSw3ICs4OTQsNiBAQCBwdWJsaWM6CiAg
ICAgdW5zaWduZWQgbV9wYXJhbWV0ZXJTbG90czsKICAgICBpbnQgbV9tYWNoaW5lQ2FwdHVyZVN0
YXJ0OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93QXJndW1lbnRbXT4gbV9zbG93QXJndW1lbnRz
OwotICAgIEJpdFZlY3RvciBtX291dGVybW9zdENhcHR1cmVkVmFyczsKIAogI2lmIFVTRShKU1ZB
TFVFMzJfNjQpCiAgICAgc3RkOjp1bm9yZGVyZWRfbWFwPGludDY0X3QsIGRvdWJsZSo+IG1fZG91
YmxlQ29uc3RhbnRzTWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdNYXlFeGl0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAK
aW5kZXggZjcxNzBiODNjZDNlNmNkNWQ0OTk3ODMwNGIwNTk5NzdlNDhiODllZS4uNTA5ODk3NDNk
M2YyZGIzMGIyNWJiYWZmYTRhNjBjYmViOTE3ZjQ5ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR01heUV4aXQuY3BwCkBAIC03OSw4ICs3OSw2IEBAIGJvb2wgbWF5RXhpdChHcmFwaCYg
Z3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBQdXRTdHJ1Y3R1cmVIaW50OgogICAgIGNhc2Ug
UHV0QnlPZmZzZXRIaW50OgogICAgIGNhc2UgUGhhbnRvbU5ld09iamVjdDoKLSAgICBjYXNlIFB1
dExvY2FsOgotICAgIGNhc2UgS2lsbExvY2FsOgogICAgICAgICBicmVhazsKICAgICAgICAgCiAg
ICAgZGVmYXVsdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2Jq
ZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwCmluZGV4IDE4YmMyNDk3MTI3NGM2
Y2JkNjg4MDE5ZDIzZjQ5MDNhMjc5YmI1NjkuLjM2YmUwYjU4N2E3ZGZhNDQ1M2RmMDMxOWQ2Njdk
MWYzZGNkYjU4YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2Jq
ZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcApAQCAtMTU4LDggKzE1OCw2
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBjaGFuZ2VkID0gZmFsc2U7CiAgICAgICAgICAgICBm
b3IgKEJhc2ljQmxvY2sqIGJsb2NrIDogbV9ncmFwaC5ibG9ja3NJbk5hdHVyYWxPcmRlcigpKSB7
CiAgICAgICAgICAgICAgICAgSGFzaE1hcDxOb2RlKiwgYm9vbD4gbWF0ZXJpYWxpemVkID0gbWF0
ZXJpYWxpemVkQXRIZWFkW2Jsb2NrXTsKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKLSAg
ICAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIExvb2tpbmcgYXQgYmxvY2sgIiwgcG9pbnRl
ckR1bXAoYmxvY2spLCAiXG4iKTsKICAgICAgICAgICAgICAgICBmb3IgKE5vZGUqIG5vZGUgOiAq
YmxvY2spIHsKICAgICAgICAgICAgICAgICAgICAgaGFuZGxlTm9kZSgKICAgICAgICAgICAgICAg
ICAgICAgICAgIG5vZGUsCkBAIC0xNjgsMTEgKzE2Niw4IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgWyZdIChOb2RlKiBlc2Nh
cGVlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBpdGVyID0gbWF0ZXJpYWxp
emVkLmZpbmQoZXNjYXBlZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZXIg
IT0gbWF0ZXJpYWxpemVkLmVuZCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlmICh2ZXJib3NlKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxv
ZygiICAgICIsIGVzY2FwZWUsICIgZXNjYXBlcyBhdCAiLCBub2RlLCAiXG4iKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoaXRlciAhPSBtYXRlcmlhbGl6ZWQuZW5kKCkpCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZXItPnZhbHVlID0gdHJ1ZTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgCkBAIC0yNzYsOSArMjcxLDYgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICAgICAgICAgbWF0ZXJpYWxpemVkLmFkZChwYWlyLmtleSk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQotICAgICAg
ICAgICAgICAgIGRhdGFMb2coIlBsYWNpbmcgbWF0ZXJpYWxpemF0aW9uIHBvaW50cyBpbiAiLCBw
b2ludGVyRHVtcChibG9jayksICIgd2l0aCBtYXRlcmlhbGl6YXRpb24gc2V0ICIsIGxpc3REdW1w
KG1hdGVyaWFsaXplZCksICJcbiIpOwotICAgICAgICAgICAgCiAgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIG5vZGVJbmRleCA9IDA7IG5vZGVJbmRleCA8IGJsb2NrLT5zaXplKCk7ICsrbm9kZUlu
ZGV4KSB7CiAgICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT5hdChub2RlSW5kZXgp
OwogICAgICAgICAgICAgICAgIApAQCAtMjg2LDIwICsyNzgsMTEgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgICAgICAgICAgbm9kZSwKICAgICAgICAgICAgICAgICAgICAgWyZdICgpIHsgfSwKICAg
ICAgICAgICAgICAgICAgICAgWyZdIChOb2RlKiBlc2NhcGVlKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBpZiAodmVyYm9zZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9n
KCJTZWVpbmcgIiwgZXNjYXBlZSwgIiBlc2NhcGUgYXQgIiwgbm9kZSwgIlxuIik7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbV9zaW5rQ2Fu
ZGlkYXRlcy5jb250YWlucyhlc2NhcGVlKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlmICh2ZXJib3NlKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIg
ICAgSXQncyBub3QgYSBzaW5rIGNhbmRpZGF0ZS5cbiIpOworICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKCFtX3NpbmtDYW5kaWRhdGVzLmNvbnRhaW5zKGVzY2FwZWUpKQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFtYXRlcmlh
bGl6ZWQuYWRkKGVzY2FwZWUpLmlzTmV3RW50cnkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAodmVyYm9zZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxv
ZygiICAgSXQncyBhbHJlYWR5IG1hdGVyaWFsaXplZC5cbiIpOworICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKCFtYXRlcmlhbGl6ZWQuYWRkKGVzY2FwZWUpLmlzTmV3RW50cnkpCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVN
YXRlcmlhbGl6ZShlc2NhcGVlLCBub2RlKTsKICAgICAgICAgICAgICAgICAgICAgfSk7CkBAIC00
NDksMTYgKzQzMiw2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoTm9k
ZSogbWF0ZXJpYWxpemUgPSBtYXBwaW5nLmdldChlZGdlLm5vZGUoKSkpCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZWRnZS5zZXROb2RlKG1hdGVyaWFsaXplKTsKICAgICAgICAgICAgICAg
ICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgLy8gSWYgeW91IGNh
dXNlIGFuIGVzY2FwZSwgeW91IHNob3VsZG4ndCBzZWUgdGhlIG9yaWdpbmFsIGVzY2FwZWUuCi0g
ICAgICAgICAgICAgICAgaWYgKHZhbGlkYXRpb25FbmFibGVkKCkpIHsKLSAgICAgICAgICAgICAg
ICAgICAgaGFuZGxlTm9kZSgKLSAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICBbJl0gKCkgeyB9LAotICAgICAgICAgICAgICAgICAgICAgICAgWyZd
IChOb2RlKiBlc2NhcGVlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgREZHX0FTU0VS
VChtX2dyYXBoLCBub2RlLCAhbV9zaW5rQ2FuZGlkYXRlcy5jb250YWlucyhlc2NhcGVlKSk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAgIHNpemVfdCB1cHNpbG9uSW5zZXJ0aW9uUG9p
bnQgPSBibG9jay0+c2l6ZSgpIC0gMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUGxhbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3Bw
CmluZGV4IDkxM2NhZGM1N2UyNTI0YWQ3NDE0Y2JjZGU3NjAwZDhiNWZlNjBjNTguLjE3NTE1YzVj
MTBhNmQwNzkxNjQzZTA5MTRhYzk5NGY3N2JiNWE5ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQbGFuLmNwcApAQCAtNTQsNyArNTQsNiBAQAogI2luY2x1ZGUgIkRGR1BoYW50b21SZW1v
dmFsUGhhc2UuaCIKICNpbmNsdWRlICJERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuaCIKICNp
bmNsdWRlICJERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5oIgotI2luY2x1ZGUgIkRGR1B1
dExvY2FsU2lua2luZ1BoYXNlLmgiCiAjaW5jbHVkZSAiREZHUmVzdXJyZWN0aW9uRm9yVmFsaWRh
dGlvblBoYXNlLmgiCiAjaW5jbHVkZSAiREZHU1NBQ29udmVyc2lvblBoYXNlLmgiCiAjaW5jbHVk
ZSAiREZHU1NBTG93ZXJpbmdQaGFzZS5oIgpAQCAtMzIzLDcgKzMyMiw2IEBAIFBsYW46OkNvbXBp
bGF0aW9uUGF0aCBQbGFuOjpjb21waWxlSW5UaHJlYWRJbXBsKExvbmdMaXZlZFN0YXRlJiBsb25n
TGl2ZWRTdGF0ZSkKICAgICAgICAgcGVyZm9ybUNQU1JldGhyZWFkaW5nKGRmZyk7CiAgICAgICAg
IHBlcmZvcm1TU0FDb252ZXJzaW9uKGRmZyk7CiAgICAgICAgIHBlcmZvcm1TU0FMb3dlcmluZyhk
ZmcpOwotICAgICAgICBwZXJmb3JtUHV0TG9jYWxTaW5raW5nKGRmZyk7CiAgICAgICAgIHBlcmZv
cm1HbG9iYWxDU0UoZGZnKTsKICAgICAgICAgcGVyZm9ybUxpdmVuZXNzQW5hbHlzaXMoZGZnKTsK
ICAgICAgICAgcGVyZm9ybUNGQShkZmcpOwpAQCAtMzU3LDcgKzM1NSw3IEBAIFBsYW46OkNvbXBp
bGF0aW9uUGF0aCBQbGFuOjpjb21waWxlSW5UaHJlYWRJbXBsKExvbmdMaXZlZFN0YXRlJiBsb25n
TGl2ZWRTdGF0ZSkKICAgICAgICAgcGVyZm9ybUNGQShkZmcpOwogICAgICAgICBpZiAoT3B0aW9u
czo6dmFsaWRhdGVGVExPU1JFeGl0TGl2ZW5lc3MoKSkKICAgICAgICAgICAgIHBlcmZvcm1SZXN1
cnJlY3Rpb25Gb3JWYWxpZGF0aW9uKGRmZyk7Ci0gICAgICAgIHBlcmZvcm1EQ0UoZGZnKTsgLy8g
V2UgcmVseSBvbiB0aGlzIHRvIGtpbGwgZGVhZCBjb2RlIHRoYXQgd29uJ3QgYmUgcmVjb2duaXpl
ZCBhcyBkZWFkIGJ5IExMVk0uCisgICAgICAgIHBlcmZvcm1EQ0UoZGZnKTsgLy8gV2UgcmVseSBv
biB0aGlzIHRvIGNvbnZlcnQgZGVhZCBTZXRMb2NhbHMgaW50byB0aGUgYXBwcm9wcmlhdGUgaGlu
dCwgYW5kIHRvIGtpbGwgZGVhZCBjb2RlIHRoYXQgd29uJ3QgYmUgcmVjb2duaXplZCBhcyBkZWFk
IGJ5IExMVk0uCiAgICAgICAgIHBlcmZvcm1TdGFja0xheW91dChkZmcpOwogICAgICAgICBwZXJm
b3JtTGl2ZW5lc3NBbmFseXNpcyhkZmcpOwogICAgICAgICBwZXJmb3JtT1NSQXZhaWxhYmlsaXR5
QW5hbHlzaXMoZGZnKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlY2lzZUxvY2FsQ2xvYmJlcml6ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
cmVjaXNlTG9jYWxDbG9iYmVyaXplLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZk
MTM2MzZhMzI5ODQ4MWMyMzQ0ZjVlZTA3Njk5MmYyZDAwNjgzMWIuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdQcmVjaXNlTG9jYWxDbG9iYmVyaXplLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxOTIgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
LSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVm
IERGR1ByZWNpc2VMb2NhbENsb2JiZXJpemVfaAotI2RlZmluZSBERkdQcmVjaXNlTG9jYWxDbG9i
YmVyaXplX2gKLQotI2lmIEVOQUJMRShERkdfSklUKQotCi0jaW5jbHVkZSAiREZHQ2xvYmJlcml6
ZS5oIgotI2luY2x1ZGUgIkRGR01heUV4aXQuaCIKLQotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFj
ZSBERkcgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBSZWFkRnVuY3RvciwgdHlwZW5hbWUgV3JpdGVG
dW5jdG9yLCB0eXBlbmFtZSBEZWZGdW5jdG9yPgotY2xhc3MgUHJlY2lzZUxvY2FsQ2xvYmJlcml6
ZUFkYXB0b3IgewotcHVibGljOgotICAgIFByZWNpc2VMb2NhbENsb2JiZXJpemVBZGFwdG9yKAot
ICAgICAgICBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsCi0gICAgICAgIGNvbnN0IFJlYWRGdW5j
dG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1bmN0b3ImIHdyaXRlLCBjb25zdCBEZWZGdW5jdG9yJiBk
ZWYpCi0gICAgICAgIDogbV9ncmFwaChncmFwaCkKLSAgICAgICAgLCBtX25vZGUobm9kZSkKLSAg
ICAgICAgLCBtX3JlYWQocmVhZCkKLSAgICAgICAgLCBtX3dyaXRlKHdyaXRlKQotICAgICAgICAs
IG1fZGVmKGRlZikKLSAgICB7Ci0gICAgfQotICAgIAotICAgIHZvaWQgcmVhZChBYnN0cmFjdEhl
YXAgaGVhcCkKLSAgICB7Ci0gICAgICAgIGlmIChoZWFwLmtpbmQoKSA9PSBWYXJpYWJsZXMpIHsK
LSAgICAgICAgICAgIGlmIChoZWFwLnBheWxvYWQoKS5pc1RvcCgpKSB7Ci0gICAgICAgICAgICAg
ICAgcmVhZFRvcCgpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIAotICAgICAgICAgICAgY2FsbElmQXBwcm9wcmlhdGUobV9yZWFkLCBWaXJ0dWFs
UmVnaXN0ZXIoaGVhcC5wYXlsb2FkKCkudmFsdWUoKSkpOwotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBpZiAoaGVhcC5vdmVybGFwcyhWYXJpYWJsZXMp
KSB7Ci0gICAgICAgICAgICByZWFkVG9wKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0KLSAgICB9Ci0gICAgCi0gICAgdm9pZCB3cml0ZShBYnN0cmFjdEhlYXAgaGVhcCkKLSAgICB7
Ci0gICAgICAgIGlmIChoZWFwLmtpbmQoKSA9PSBWYXJpYWJsZXMpIHsKLSAgICAgICAgICAgIGlm
IChoZWFwLnBheWxvYWQoKS5pc1RvcCgpKSB7Ci0gICAgICAgICAgICAgICAgd3JpdGVUb3AoKTsK
LSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAKLSAg
ICAgICAgICAgIGNhbGxJZkFwcHJvcHJpYXRlKG1fd3JpdGUsIFZpcnR1YWxSZWdpc3RlcihoZWFw
LnBheWxvYWQoKS52YWx1ZSgpKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAg
ICAgICAgCi0gICAgICAgIGlmIChoZWFwLm92ZXJsYXBzKFZhcmlhYmxlcykpIHsKLSAgICAgICAg
ICAgIHdyaXRlVG9wKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9Ci0g
ICAgCi0gICAgdm9pZCBkZWYoUHVyZVZhbHVlKQotICAgIHsKLSAgICAgICAgLy8gUHVyZVZhbHVl
IGRlZnMgbmV2ZXIgaGF2ZSBhbnl0aGluZyB0byBkbyB3aXRoIGxvY2Fscywgc28gaWdub3JlIHRo
aXMuCi0gICAgfQotICAgIAotICAgIHZvaWQgZGVmKEhlYXBMb2NhdGlvbiBsb2NhdGlvbiwgTm9k
ZSogbm9kZSkKLSAgICB7Ci0gICAgICAgIGlmIChsb2NhdGlvbi5raW5kKCkgIT0gVmFyaWFibGVM
b2MpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIAotICAgICAgICBSRUxFQVNFX0FTU0VS
VChsb2NhdGlvbi5oZWFwKCkua2luZCgpID09IFZhcmlhYmxlcyk7Ci0gICAgICAgIAotICAgICAg
ICBtX2RlZihWaXJ0dWFsUmVnaXN0ZXIobG9jYXRpb24uaGVhcCgpLnBheWxvYWQoKS52YWx1ZSgp
KSwgbm9kZSk7Ci0gICAgfQotICAgIAotcHJpdmF0ZToKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBG
dW5jdG9yPgotICAgIHZvaWQgY2FsbElmQXBwcm9wcmlhdGUoY29uc3QgRnVuY3RvciYgZnVuY3Rv
ciwgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQpCi0gICAgewotICAgICAgICBpZiAob3BlcmFuZC5p
c0xvY2FsKCkgJiYgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG9wZXJhbmQudG9Mb2NhbCgpKSA+PSBt
X2dyYXBoLmJsb2NrKDApLT52YXJpYWJsZXNBdEhlYWQubnVtYmVyT2ZMb2NhbHMoKSkKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgCi0gICAgICAgIGlmIChvcGVyYW5kLmlzQXJndW1lbnQo
KSAmJiAhb3BlcmFuZC5pc0hlYWRlcigpICYmIHN0YXRpY19jYXN0PHVuc2lnbmVkPihvcGVyYW5k
LnRvQXJndW1lbnQoKSkgPj0gbV9ncmFwaC5ibG9jaygwKS0+dmFyaWFibGVzQXRIZWFkLm51bWJl
ck9mQXJndW1lbnRzKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIAotICAgICAgICBm
dW5jdG9yKG9wZXJhbmQpOwotICAgIH0KLSAgICAKLSAgICB2b2lkIHJlYWRUb3AoKQotICAgIHsK
LSAgICAgICAgLy8gQWxsIG9mIHRoZSBvdXRlcm1vc3QgYXJndW1lbnRzLCBleGNlcHQgdGhpcywg
YXJlIGRlZmluaXRlbHkgcmVhZC4KLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9ncmFwaC5t
X2NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpOyBpLS0gPiAxOykKLSAgICAgICAgICAgIG1fcmVh
ZCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpKSk7Ci0gICAgICAgIAotICAgICAgICAvLyBU
aGUgc3RhY2sgaGVhZGVyIGlzIHJlYWQuCi0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBKU1N0YWNrOjpUaGlzQXJndW1lbnQ7ICsraSkKLSAgICAgICAgICAgIG1fcmVhZChWaXJ0dWFs
UmVnaXN0ZXIoaSkpOwotICAgICAgICAKLSAgICAgICAgLy8gUmVhZCBhbGwgb2YgdGhlIGNhcHR1
cmVkIHZhcmlhYmxlcy4KLSAgICAgICAgY29uc3QgQml0VmVjdG9yJiBjYXB0dXJlZFZhcnMgPQot
ICAgICAgICAgICAgbV9ncmFwaC5jYXB0dXJlZFZhcnNGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50
aWMuaW5saW5lQ2FsbEZyYW1lKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpIDogY2FwdHVyZWRW
YXJzLnNldEJpdHMoKSkKLSAgICAgICAgICAgIG1fcmVhZCh2aXJ0dWFsUmVnaXN0ZXJGb3JMb2Nh
bChpKSk7Ci0gICAgICAgIAotICAgICAgICAvLyBSZWFkIGFsbCBvZiB0aGUgaW5saW5lIGFyZ3Vt
ZW50cyBhbmQgY2FsbCBmcmFtZSBoZWFkZXJzIHRoYXQgd2UgZGlkbid0IGFscmVhZHkgY2FwdHVy
ZS4KLSAgICAgICAgZm9yIChJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSA9IG1fbm9k
ZS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZTsgaW5saW5lQ2FsbEZyYW1lOyBpbmxp
bmVDYWxsRnJhbWUgPSBpbmxpbmVDYWxsRnJhbWUtPmNhbGxlci5pbmxpbmVDYWxsRnJhbWUpIHsK
LSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRz
LnNpemUoKTsgaS0tID4gMTspCi0gICAgICAgICAgICAgICAgbV9yZWFkKFZpcnR1YWxSZWdpc3Rl
cihpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1l
bnQoaSkub2Zmc2V0KCkpKTsKLSAgICAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUtPmlzQ2xv
c3VyZUNhbGwpIHsKLSAgICAgICAgICAgICAgICBtX3JlYWQoVmlydHVhbFJlZ2lzdGVyKGlubGlu
ZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBKU1N0YWNrOjpTY29wZUNoYWluKSk7Ci0gICAgICAg
ICAgICAgICAgbV9yZWFkKFZpcnR1YWxSZWdpc3RlcihpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zm
c2V0ICsgSlNTdGFjazo6Q2FsbGVlKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9
Ci0gICAgCi0gICAgdm9pZCB3cml0ZVRvcCgpCi0gICAgewotICAgICAgICBpZiAobV9ncmFwaC5t
X2NvZGVCbG9jay0+dXNlc0FyZ3VtZW50cygpKSB7Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSBtX2dyYXBoLm1fY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCk7IGktLSA+IDE7KQotICAg
ICAgICAgICAgICAgIG1fd3JpdGUodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSkpOwotICAg
ICAgICB9Ci0KLSAgICAgICAgY29uc3QgQml0VmVjdG9yJiBjYXB0dXJlZFZhcnMgPQotICAgICAg
ICAgICAgbV9ncmFwaC5jYXB0dXJlZFZhcnNGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMuaW5s
aW5lQ2FsbEZyYW1lKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpIDogY2FwdHVyZWRWYXJzLnNl
dEJpdHMoKSkKLSAgICAgICAgICAgIG1fd3JpdGUodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaSkp
OwotICAgIH0KLSAgICAKLSAgICBHcmFwaCYgbV9ncmFwaDsKLSAgICBOb2RlKiBtX25vZGU7Ci0g
ICAgY29uc3QgUmVhZEZ1bmN0b3ImIG1fcmVhZDsKLSAgICBjb25zdCBXcml0ZUZ1bmN0b3ImIG1f
d3JpdGU7Ci0gICAgY29uc3QgRGVmRnVuY3RvciYgbV9kZWY7Ci19OwotCi10ZW1wbGF0ZTx0eXBl
bmFtZSBSZWFkRnVuY3Rvcj4KLXZvaWQgZm9yRWFjaExvY2FsUmVhZEJ5VW53aW5kKEdyYXBoJiBn
cmFwaCwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCkKLXsK
LSAgICBpZiAoZ3JhcGgudW5jaGVja2VkQWN0aXZhdGlvblJlZ2lzdGVyKCkuaXNWYWxpZCgpKQot
ICAgICAgICByZWFkKGdyYXBoLmFjdGl2YXRpb25SZWdpc3RlcigpKTsKLSAgICBpZiAoZ3JhcGgu
bV9jb2RlQmxvY2stPnVzZXNBcmd1bWVudHMoKSkKLSAgICAgICAgcmVhZCh1bm1vZGlmaWVkQXJn
dW1lbnRzUmVnaXN0ZXIoZ3JhcGguYXJndW1lbnRzUmVnaXN0ZXJGb3IobnVsbHB0cikpKTsKLSAg
ICAKLSAgICBmb3IgKElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lID0gY29kZU9yaWdp
bi5pbmxpbmVDYWxsRnJhbWU7IGlubGluZUNhbGxGcmFtZTsgaW5saW5lQ2FsbEZyYW1lID0gaW5s
aW5lQ2FsbEZyYW1lLT5jYWxsZXIuaW5saW5lQ2FsbEZyYW1lKSB7Ci0gICAgICAgIGlmIChpbmxp
bmVDYWxsRnJhbWUtPmV4ZWN1dGFibGUtPnVzZXNBcmd1bWVudHMoKSkKLSAgICAgICAgICAgIHJl
YWQodW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKGdyYXBoLmFyZ3VtZW50c1JlZ2lzdGVyRm9y
KGlubGluZUNhbGxGcmFtZSkpKTsKLSAgICB9Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFJlYWRG
dW5jdG9yLCB0eXBlbmFtZSBXcml0ZUZ1bmN0b3IsIHR5cGVuYW1lIERlZkZ1bmN0b3I+Ci12b2lk
IHByZWNpc2VMb2NhbENsb2JiZXJpemUoCi0gICAgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLAot
ICAgIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1bmN0b3ImIHdyaXRlLCBj
b25zdCBEZWZGdW5jdG9yJiBkZWYpCi17Ci0gICAgUHJlY2lzZUxvY2FsQ2xvYmJlcml6ZUFkYXB0
b3I8UmVhZEZ1bmN0b3IsIFdyaXRlRnVuY3RvciwgRGVmRnVuY3Rvcj4KLSAgICAgICAgYWRhcHRv
cihncmFwaCwgbm9kZSwgcmVhZCwgd3JpdGUsIGRlZik7Ci0gICAgY2xvYmJlcml6ZShncmFwaCwg
bm9kZSwgYWRhcHRvcik7Ci0gICAgaWYgKG1heUV4aXQoZ3JhcGgsIG5vZGUpKQotICAgICAgICBm
b3JFYWNoTG9jYWxSZWFkQnlVbndpbmQoZ3JhcGgsIG5vZGUtPm9yaWdpbi5mb3JFeGl0LCByZWFk
KTsKLX0KLQotfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwotCi0jZW5kaWYgLy8gRU5BQkxFKERG
R19KSVQpCi0KLSNlbmRpZiAvLyBERkdQcmVjaXNlTG9jYWxDbG9iYmVyaXplX2gKLQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQdXRMb2NhbFNpbmtpbmdQaGFzZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1B1dExvY2FsU2lua2luZ1BoYXNlLmNw
cApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWIxMWYzYjAxMGUxYWViZDg4ZTUyMjRk
YzQ5NTM4OTk2ZjZlOGU1NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1B1dExvY2FsU2lua2luZ1BoYXNl
LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDUxNyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl
ICJERkdQdXRMb2NhbFNpbmtpbmdQaGFzZS5oIgotCi0jaWYgRU5BQkxFKERGR19KSVQpCi0KLSNp
bmNsdWRlICJERkdCbG9ja01hcElubGluZXMuaCIKLSNpbmNsdWRlICJERkdHcmFwaC5oIgotI2lu
Y2x1ZGUgIkRGR0luc2VydGlvblNldC5oIgotI2luY2x1ZGUgIkRGR1BoYXNlLmgiCi0jaW5jbHVk
ZSAiREZHUHJlY2lzZUxvY2FsQ2xvYmJlcml6ZS5oIgotI2luY2x1ZGUgIkRGR1NTQUNhbGN1bGF0
b3IuaCIKLSNpbmNsdWRlICJERkdWYWxpZGF0ZS5oIgotI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIK
LSNpbmNsdWRlICJPcGVyYW5kc0lubGluZXMuaCIKLQotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFj
ZSBERkcgewotCi1uYW1lc3BhY2UgewotCi1ib29sIHZlcmJvc2UgPSBmYWxzZTsKLQotY2xhc3Mg
VmFyaWFibGVEZWZlcnJhbCB7Ci1wdWJsaWM6Ci0gICAgVmFyaWFibGVEZWZlcnJhbChWYXJpYWJs
ZUFjY2Vzc0RhdGEqIHZhcmlhYmxlID0gbnVsbHB0cikKLSAgICAgICAgOiBtX3ZhcmlhYmxlKHZh
cmlhYmxlKQotICAgIHsKLSAgICB9Ci0gICAgCi0gICAgc3RhdGljIFZhcmlhYmxlRGVmZXJyYWwg
Y29uZmxpY3QoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIFZhcmlhYmxlRGVmZXJyYWwoY29uZmxp
Y3RNYXJrZXIoKSk7Ci0gICAgfQotICAgIAotICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyBy
ZXR1cm4gIW1fdmFyaWFibGU7IH0KLSAgICAKLSAgICBib29sIGhhc1ZhcmlhYmxlKCkgY29uc3Qg
eyByZXR1cm4gISEqdGhpcyAmJiAhaXNDb25mbGljdCgpOyB9Ci0gICAgCi0gICAgVmFyaWFibGVB
Y2Nlc3NEYXRhKiB2YXJpYWJsZSgpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQoaGFzVmFy
aWFibGUoKSk7Ci0gICAgICAgIHJldHVybiBtX3ZhcmlhYmxlOwotICAgIH0KLSAgICAKLSAgICBi
b29sIGlzQ29uZmxpY3QoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fdmFyaWFibGUg
PT0gY29uZmxpY3RNYXJrZXIoKTsKLSAgICB9Ci0gICAgCi0gICAgVmFyaWFibGVEZWZlcnJhbCBt
ZXJnZShWYXJpYWJsZURlZmVycmFsIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgaWYgKCp0
aGlzID09IG90aGVyIHx8ICFvdGhlcikKLSAgICAgICAgICAgIHJldHVybiAqdGhpczsKLSAgICAg
ICAgaWYgKCEqdGhpcykKLSAgICAgICAgICAgIHJldHVybiBvdGhlcjsKLSAgICAgICAgcmV0dXJu
IGNvbmZsaWN0KCk7Ci0gICAgfQotICAgIAotICAgIGJvb2wgb3BlcmF0b3I9PShWYXJpYWJsZURl
ZmVycmFsIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fdmFyaWFibGUgPT0g
b3RoZXIubV92YXJpYWJsZTsKLSAgICB9Ci0gICAgCi0gICAgdm9pZCBkdW1wKFByaW50U3RyZWFt
JiBvdXQpIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAoISp0aGlzKQotICAgICAgICAgICAgb3V0
LnByaW50KCItIik7Ci0gICAgICAgIGVsc2UgaWYgKGlzQ29uZmxpY3QoKSkKLSAgICAgICAgICAg
IG91dC5wcmludCgiQ29uZmxpY3QiKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgb3V0LnBy
aW50KFJhd1BvaW50ZXIobV92YXJpYWJsZSkpOwotICAgIH0KLSAgICAKLSAgICB2b2lkIGR1bXBJ
bkNvbnRleHQoUHJpbnRTdHJlYW0mIG91dCwgRHVtcENvbnRleHQqKSBjb25zdAotICAgIHsKLSAg
ICAgICAgZHVtcChvdXQpOwotICAgIH0KLSAgICAKLXByaXZhdGU6Ci0gICAgc3RhdGljIFZhcmlh
YmxlQWNjZXNzRGF0YSogY29uZmxpY3RNYXJrZXIoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGJp
dHdpc2VfY2FzdDxWYXJpYWJsZUFjY2Vzc0RhdGEqPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4oMSkp
OwotICAgIH0KLSAgICAKLSAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIG1fdmFyaWFibGU7Ci19Owot
Ci1jbGFzcyBQdXRMb2NhbFNpbmtpbmdQaGFzZSA6IHB1YmxpYyBQaGFzZSB7Ci1wdWJsaWM6Ci0g
ICAgUHV0TG9jYWxTaW5raW5nUGhhc2UoR3JhcGgmIGdyYXBoKQotICAgICAgICA6IFBoYXNlKGdy
YXBoLCAiUHV0TG9jYWwgc2lua2luZyIpCi0gICAgewotICAgIH0KLSAgICAKLSAgICBib29sIHJ1
bigpCi0gICAgewotICAgICAgICAvLyBGSVhNRTogT25lIG9mIHRoZSBwcm9ibGVtcyBvZiB0aGlz
IGFwcHJvYWNoIGlzIHRoYXQgaXQgd2lsbCBjcmVhdGUgYSBkdXBsaWNhdGUgUGhpIGdyYXBoCi0g
ICAgICAgIC8vIGZvciBzdW5rZW4gUHV0TG9jYWxzIGluIHRoZSBwcmVzZW5jZSBvZiBpbnRlcmVz
dGluZyBjb250cm9sIGZsb3cgbWVyZ2VzLCBhbmQgd2hlcmUgdGhlCi0gICAgICAgIC8vIHZhbHVl
IGJlaW5nIFB1dExvY2FsJ2QgaXMgYWxzbyBvdGhlcndpc2UgbGl2ZSBpbiB0aGUgREZHIGNvZGUu
IFdlIGNvdWxkIHdvcmsgYXJvdW5kIHRoaXMKLSAgICAgICAgLy8gYnkgZG9pbmcgdGhlIHNpbmtp
bmcgb3ZlciBDUFMsIG9yIG1heWJlIGp1c3QgYnkgZG9pbmcgcmVhbGx5IHNtYXJ0IGhvaXN0aW5n
LiBJdCdzIGFsc28KLSAgICAgICAgLy8gcG9zc2libGUgdGhhdCB0aGUgZHVwbGljYXRlIFBoaSBn
cmFwaCBjYW4gYmUgZGVkdXBsaWNhdGVkIGJ5IExMVk0uIEl0IHdvdWxkIGJlIGJlc3QgaWYgd2UK
LSAgICAgICAgLy8gY291bGQgb2JzZXJ2ZSB0aGF0IHRoZXJlIGlzIGFscmVhZHkgYSBQaGkgZ3Jh
cGggaW4gcGxhY2UgdGhhdCBkb2VzIHdoYXQgd2Ugd2FudC4gSW4KLSAgICAgICAgLy8gcHJpbmNp
cGxlIGlmIHdlIGhhdmUgYSByZXF1ZXN0IHRvIHBsYWNlIGEgUGhpIGF0IGEgcGFydGljdWxhciBw
bGFjZSwgd2UgY291bGQganVzdCBjaGVjawotICAgICAgICAvLyBpZiB0aGVyZSBpcyBhbHJlYWR5
IGEgUGhpIHRoYXQgZG9lcyB3aGF0IHdlIHdhbnQuIEJlY2F1c2UgUHV0TG9jYWxTaW5raW5nUGhh
c2UgcnVucyBqdXN0Ci0gICAgICAgIC8vIGFmdGVyIFNTQSBjb252ZXJzaW9uLCB3ZSBoYXZlIGFs
bW9zdCBhIGd1YXJhbnRlZSB0aGF0IHRoZSBQaGkgZ3JhcGggd2UgcHJvZHVjZSBoZXJlIHdvdWxk
Ci0gICAgICAgIC8vIGJlIHRyaXZpYWxseSByZWR1bmRhbnQgdG8gdGhlIG9uZSB3ZSBhbHJlYWR5
IGhhdmUuCi0gICAgICAgIAotICAgICAgICBpZiAodmVyYm9zZSkgewotICAgICAgICAgICAgZGF0
YUxvZygiR3JhcGggYmVmb3JlIFB1dExvY2FsIHNpbmtpbmc6XG4iKTsKLSAgICAgICAgICAgIG1f
Z3JhcGguZHVtcCgpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBTU0FDYWxjdWxhdG9y
IHNzYUNhbGN1bGF0b3IobV9ncmFwaCk7Ci0gICAgICAgIEluc2VydGlvblNldCBpbnNlcnRpb25T
ZXQobV9ncmFwaCk7Ci0gICAgICAgIAotICAgICAgICAvLyBGaXJzdCBmaWd1cmUgb3V0IHdoZXJl
IHZhcmlvdXMgbG9jYWxzIGFyZSBsaXZlLgotICAgICAgICBCbG9ja01hcDxPcGVyYW5kczxib29s
Pj4gbGl2ZUF0SGVhZChtX2dyYXBoKTsKLSAgICAgICAgQmxvY2tNYXA8T3BlcmFuZHM8Ym9vbD4+
IGxpdmVBdFRhaWwobV9ncmFwaCk7Ci0gICAgICAgIAotICAgICAgICBmb3IgKEJhc2ljQmxvY2sq
IGJsb2NrIDogbV9ncmFwaC5ibG9ja3NJbk5hdHVyYWxPcmRlcigpKSB7Ci0gICAgICAgICAgICBs
aXZlQXRIZWFkW2Jsb2NrXSA9IE9wZXJhbmRzPGJvb2w+KE9wZXJhbmRzTGlrZSwgYmxvY2stPnZh
cmlhYmxlc0F0SGVhZCk7Ci0gICAgICAgICAgICBsaXZlQXRUYWlsW2Jsb2NrXSA9IE9wZXJhbmRz
PGJvb2w+KE9wZXJhbmRzTGlrZSwgYmxvY2stPnZhcmlhYmxlc0F0SGVhZCk7Ci0gICAgICAgICAg
ICAKLSAgICAgICAgICAgIGxpdmVBdEhlYWRbYmxvY2tdLmZpbGwoZmFsc2UpOwotICAgICAgICAg
ICAgbGl2ZUF0VGFpbFtibG9ja10uZmlsbChmYWxzZSk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0g
ICAgICAgIGJvb2wgY2hhbmdlZDsKLSAgICAgICAgZG8gewotICAgICAgICAgICAgY2hhbmdlZCA9
IGZhbHNlOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJ
bmRleCA9IG1fZ3JhcGgubnVtQmxvY2tzKCk7IGJsb2NrSW5kZXgtLTspIHsKLSAgICAgICAgICAg
ICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IG1fZ3JhcGguYmxvY2soYmxvY2tJbmRleCk7Ci0gICAg
ICAgICAgICAgICAgaWYgKCFibG9jaykKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0g
ICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgT3BlcmFuZHM8Ym9vbD4gbGl2ZSA9IGxp
dmVBdFRhaWxbYmxvY2tdOwotICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgbm9kZUluZGV4
ID0gYmxvY2stPnNpemUoKTsgbm9kZUluZGV4LS07KSB7Ci0gICAgICAgICAgICAgICAgICAgIE5v
ZGUqIG5vZGUgPSBibG9jay0+YXQobm9kZUluZGV4KTsKLSAgICAgICAgICAgICAgICAgICAgaWYg
KHZlcmJvc2UpCi0gICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJMaXZlIGF0ICIsIG5v
ZGUsICI6ICIsIGxpdmUsICJcbiIpOwotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAg
ICAgICAgICAgYXV0byBlc2NhcGVIYW5kbGVyID0gWyZdIChWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFu
ZCkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9wZXJhbmQuaXNIZWFkZXIoKSkKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBpZiAodmVyYm9zZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAg
ciIsIG9wZXJhbmQsICIgaXMgbGl2ZSBhdCAiLCBub2RlLCAiXG4iKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGxpdmUub3BlcmFuZChvcGVyYW5kKSA9IHRydWU7Ci0gICAgICAgICAgICAgICAg
ICAgIH07Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBwcmVjaXNl
TG9jYWxDbG9iYmVyaXplKAotICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaCwgbm9kZSwg
ZXNjYXBlSGFuZGxlciwgZXNjYXBlSGFuZGxlciwKLSAgICAgICAgICAgICAgICAgICAgICAgIFsm
XSAoVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQsIE5vZGUqIHNvdXJjZSkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChzb3VyY2UgPT0gbm9kZSkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBUaGlzIGlzIGEgbG9hZC4gSWdub3JlIGl0LgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKG5vZGUtPm9wKCkgPT0gUHV0TG9jYWwpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGxpdmUub3BlcmFuZChvcGVyYW5kKSA9IGZhbHNlOwotICAgICAgICAg
ICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIAot
ICAgICAgICAgICAgICAgIGlmIChsaXZlID09IGxpdmVBdEhlYWRbYmxvY2tdKQotICAgICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBs
aXZlQXRIZWFkW2Jsb2NrXSA9IGxpdmU7Ci0gICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7
Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBwcmVk
ZWNlc3NvciA6IGJsb2NrLT5wcmVkZWNlc3NvcnMpIHsKLSAgICAgICAgICAgICAgICAgICAgZm9y
IChzaXplX3QgaSA9IGxpdmUuc2l6ZSgpOyBpLS07KQotICAgICAgICAgICAgICAgICAgICAgICAg
bGl2ZUF0VGFpbFtwcmVkZWNlc3Nvcl1baV0gfD0gbGl2ZVtpXTsKLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgfSB3aGlsZSAoY2hhbmdlZCk7
Ci0gICAgICAgIAotICAgICAgICAvLyBBbGwgb2YgdGhlIGFyZ3VtZW50cyBzaG91bGQgYmUgbGl2
ZSBhdCBoZWFkIG9mIHJvb3QuIE5vdGUgdGhhdCB3ZSBtYXkgZmluZCB0aGF0IHNvbWUKLSAgICAg
ICAgLy8gbG9jYWxzIGFyZSBsaXZlIGF0IGhlYWQgb2Ygcm9vdC4gVGhpcyBzZWVtcyB3cm9uZyBi
dXQgaXNuJ3QuIFRoaXMgd2lsbCBoYXBwZW4gZm9yIGV4YW1wbGUKLSAgICAgICAgLy8gaWYgdGhl
IGZ1bmN0aW9uIGFjY2Vzc2VzIGNsb3N1cmUgdmFyaWFibGUgIzQyIGZvciBzb21lIG90aGVyIGZ1
bmN0aW9uIGFuZCB3ZSBlaXRoZXIgZG9uJ3QKLSAgICAgICAgLy8gaGF2ZSB2YXJpYWJsZSAjNDIg
YXQgYWxsIG9yIHdlIGhhdmVuJ3Qgc2V0IGl0IGF0IHJvb3QsIGZvciB3aGF0ZXZlciByZWFzb24u
IEJhc2ljYWxseSB0aGlzCi0gICAgICAgIC8vIGFyaXNlcyBzaW5jZSBvdXIgYWxpYXNpbmcgZm9y
IGNsb3N1cmUgdmFyaWFibGVzIGlzIGNvbnNlcnZhdGl2ZWx5IGJhc2VkIG9uIHZhcmlhYmxlIG51
bWJlcgotICAgICAgICAvLyBhbmQgaWdub3JlcyB0aGUgb3duaW5nIHN5bWJvbCB0YWJsZS4gV2Ug
c2hvdWxkIHByb2JhYmx5IGZpeCB0aGlzIGV2ZW50dWFsbHkgYW5kIG1ha2Ugb3VyCi0gICAgICAg
IC8vIGFsaWFzaW5nIG1vcmUgcHJlY2lzZS4KLSAgICAgICAgLy8KLSAgICAgICAgLy8gRm9yIG91
ciBwdXJwb3NlcyBoZXJlLCB0aGUgaW1wcmVjaXNpb24gaW4gdGhlIGFsaWFzaW5nIGlzIGhhcm1s
ZXNzLiBJdCBqdXN0IG1lYW5zIHRoYXQgd2UKLSAgICAgICAgLy8gbWF5IG5vdCBkbyBhcyBtdWNo
IFBoaSBwcnVuaW5nIGFzIHdlIHdhbnRlZC4KLSAgICAgICAgZm9yIChzaXplX3QgaSA9IGxpdmVB
dEhlYWQuYXRJbmRleCgwKS5udW1iZXJPZkFyZ3VtZW50cygpOyBpLS07KQotICAgICAgICAgICAg
REZHX0FTU0VSVChtX2dyYXBoLCBudWxscHRyLCBsaXZlQXRIZWFkLmF0SW5kZXgoMCkuYXJndW1l
bnQoaSkpOwotICAgICAgICAKLSAgICAgICAgLy8gTmV4dCBpZGVudGlmeSB3aGVyZSB3ZSB3b3Vs
ZCB3YW50IHRvIHNpbmsgUHV0TG9jYWxzIHRvLiBXZSBzYXkgdGhhdCB0aGVyZSBpcyBhIGRlZmVy
cmVkCi0gICAgICAgIC8vIGZsdXNoIGlmIHdlIGhhZCBhIFB1dExvY2FsIHdpdGggYSBnaXZlbiBW
YXJpYWJsZUFjY2Vzc0RhdGEqIGJ1dCBpdCBoYXNuJ3QgYmVlbgotICAgICAgICAvLyBtYXRlcmlh
bGl6ZWQgeWV0LgotICAgICAgICBCbG9ja01hcDxPcGVyYW5kczxWYXJpYWJsZURlZmVycmFsPj4g
ZGVmZXJyZWRBdEhlYWQobV9ncmFwaCk7Ci0gICAgICAgIEJsb2NrTWFwPE9wZXJhbmRzPFZhcmlh
YmxlRGVmZXJyYWw+PiBkZWZlcnJlZEF0VGFpbChtX2dyYXBoKTsKLSAgICAgICAgCi0gICAgICAg
IGZvciAoQmFzaWNCbG9jayogYmxvY2sgOiBtX2dyYXBoLmJsb2Nrc0luTmF0dXJhbE9yZGVyKCkp
IHsKLSAgICAgICAgICAgIGRlZmVycmVkQXRIZWFkW2Jsb2NrXSA9Ci0gICAgICAgICAgICAgICAg
T3BlcmFuZHM8VmFyaWFibGVEZWZlcnJhbD4oT3BlcmFuZHNMaWtlLCBibG9jay0+dmFyaWFibGVz
QXRIZWFkKTsKLSAgICAgICAgICAgIGRlZmVycmVkQXRUYWlsW2Jsb2NrXSA9Ci0gICAgICAgICAg
ICAgICAgT3BlcmFuZHM8VmFyaWFibGVEZWZlcnJhbD4oT3BlcmFuZHNMaWtlLCBibG9jay0+dmFy
aWFibGVzQXRIZWFkKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgZGVmZXJyZWRBdEhl
YWQuYXRJbmRleCgwKS5maWxsKFZhcmlhYmxlRGVmZXJyYWw6OmNvbmZsaWN0KCkpOwotICAgICAg
ICAKLSAgICAgICAgZG8gewotICAgICAgICAgICAgY2hhbmdlZCA9IGZhbHNlOwotICAgICAgICAg
ICAgCi0gICAgICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDogbV9ncmFwaC5ibG9ja3NJ
bk5hdHVyYWxPcmRlcigpKSB7Ci0gICAgICAgICAgICAgICAgT3BlcmFuZHM8VmFyaWFibGVEZWZl
cnJhbD4gZGVmZXJyZWQgPSBkZWZlcnJlZEF0SGVhZFtibG9ja107Ci0gICAgICAgICAgICAgICAg
Ci0gICAgICAgICAgICAgICAgZm9yIChOb2RlKiBub2RlIDogKmJsb2NrKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGlmICh2ZXJib3NlKQotICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygi
RGVmZXJyZWQgYXQgIiwgbm9kZSwgIjoiLCBkZWZlcnJlZCwgIlxuIik7Ci0gICAgICAgICAgICAg
ICAgICAgIAotICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBLaWxsTG9jYWwp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLm9wZXJhbmQobm9kZS0+dW5saW5r
ZWRMb2NhbCgpKSA9IFZhcmlhYmxlRGVmZXJyYWw6OmNvbmZsaWN0KCk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgYXV0byBlc2NhcGVIYW5kbGVyID0gWyZdIChW
aXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9w
ZXJhbmQuaXNIZWFkZXIoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSB3aWxsIG1hdGVyaWFsaXplIGp1c3QgYmVmb3Jl
IGFueSByZWFkcy4KLSAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLm9wZXJhbmQob3Bl
cmFuZCkgPSBWYXJpYWJsZURlZmVycmFsKCk7Ci0gICAgICAgICAgICAgICAgICAgIH07Ci0gICAg
ICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBwcmVjaXNlTG9jYWxDbG9iYmVy
aXplKAotICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaCwgbm9kZSwgZXNjYXBlSGFuZGxl
ciwgZXNjYXBlSGFuZGxlciwKLSAgICAgICAgICAgICAgICAgICAgICAgIFsmXSAoVmlydHVhbFJl
Z2lzdGVyIG9wZXJhbmQsIE5vZGUqIHNvdXJjZSkgewotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChzb3VyY2UgPT0gbm9kZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBUaGlzIGlzIGEgbG9hZC4gSWdub3JlIGl0LgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVk
Lm9wZXJhbmQob3BlcmFuZCkgPSBWYXJpYWJsZURlZmVycmFsKG5vZGUtPnZhcmlhYmxlQWNjZXNz
RGF0YSgpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBpZiAoZGVmZXJyZWQgPT0gZGVmZXJy
ZWRBdFRhaWxbYmxvY2tdKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAg
ICAgICAgICAKLSAgICAgICAgICAgICAgICBkZWZlcnJlZEF0VGFpbFtibG9ja10gPSBkZWZlcnJl
ZDsKLSAgICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAKLSAg
ICAgICAgICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIHN1Y2Nlc3NvciA6IGJsb2NrLT5zdWNjZXNz
b3JzKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IGRlZmVycmVkLnNp
emUoKTsgaS0tOykgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiQ29uc2lkZXJpbmcgciIsIGRlZmVycmVk
Lm9wZXJhbmRGb3JJbmRleChpKSwgIiBhdCAiLCBwb2ludGVyRHVtcChibG9jayksICItPiIsIHBv
aW50ZXJEdW1wKHN1Y2Nlc3NvciksICI6ICIsIGRlZmVycmVkW2ldLCAiIGFuZCAiLCBkZWZlcnJl
ZEF0SGVhZFtzdWNjZXNzb3JdW2ldLCAiIG1lcmdlcyB0byAiKTsKLQotICAgICAgICAgICAgICAg
ICAgICAgICAgZGVmZXJyZWRBdEhlYWRbc3VjY2Vzc29yXVtpXSA9Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGVmZXJyZWRBdEhlYWRbc3VjY2Vzc29yXVtpXS5tZXJnZShkZWZlcnJlZFtp
XSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICh2ZXJib3NlKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coZGVmZXJyZWRB
dEhlYWRbc3VjY2Vzc29yXVtpXSwgIlxuIik7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgfSB3aGls
ZSAoY2hhbmdlZCk7Ci0gICAgICAgIAotICAgICAgICAvLyBXZSB3aXNoIHRvIGluc2VydCBQdXRM
b2NhbHMgYXQgYWxsIG9mIHRoZSBtYXRlcmlhbGl6YXRpb24gcG9pbnRzLCB3aGljaCBhcmUgZGVm
aW5lZAotICAgICAgICAvLyBpbXBsaWNpdGx5IGFzIHRoZSBwbGFjZXMgd2hlcmUgd2Ugc2V0IGRl
ZmVycmVkIHRvIERlYWQgd2hpbGUgaXQgd2FzIHByZXZpb3VzbHkgbm90IERlYWQuCi0gICAgICAg
IC8vIFRvIGRvIHRoaXMsIHdlIG1heSBuZWVkIHRvIGJ1aWxkIHNvbWUgUGhpIGZ1bmN0aW9ucyB0
byBoYW5kbGUgc3R1ZmYgbGlrZSB0aGlzOgotICAgICAgICAvLwotICAgICAgICAvLyBCZWZvcmU6
Ci0gICAgICAgIC8vCi0gICAgICAgIC8vICAgICBpZiAocCkKLSAgICAgICAgLy8gICAgICAgICBQ
dXRMb2NhbChyNDIsIEB4KQotICAgICAgICAvLyAgICAgZWxzZQotICAgICAgICAvLyAgICAgICAg
IFB1dExvY2FsKHI0MiwgQHkpCi0gICAgICAgIC8vCi0gICAgICAgIC8vIEFmdGVyOgotICAgICAg
ICAvLwotICAgICAgICAvLyAgICAgaWYgKHApCi0gICAgICAgIC8vICAgICAgICAgVXBzaWxvbihA
eCwgXnopCi0gICAgICAgIC8vICAgICBlbHNlCi0gICAgICAgIC8vICAgICAgICAgVXBzaWxvbihA
eSwgXnopCi0gICAgICAgIC8vICAgICB6OiBQaGkoKQotICAgICAgICAvLyAgICAgUHV0TG9jYWwo
cjQyLCBAeikKLSAgICAgICAgLy8KLSAgICAgICAgLy8gVGhpcyBtZWFucyB0aGF0IHdlIGhhdmUg
YW4gU1NBQ2FsY3VsYXRvcjo6VmFyaWFibGUgZm9yIGVhY2ggbG9jYWwsIGFuZCBhIERlZiBpcyBh
bnkKLSAgICAgICAgLy8gUHV0TG9jYWwgaW4gdGhlIG9yaWdpbmFsIHByb2dyYW0uIFRoZSBvcmln
aW5hbCBQdXRMb2NhbHMgd2lsbCBzaW1wbHkgdmFuaXNoLgotICAgICAgICAKLSAgICAgICAgT3Bl
cmFuZHM8U1NBQ2FsY3VsYXRvcjo6VmFyaWFibGUqPiBvcGVyYW5kVG9WYXJpYWJsZSgKLSAgICAg
ICAgICAgIE9wZXJhbmRzTGlrZSwgbV9ncmFwaC5ibG9jaygwKS0+dmFyaWFibGVzQXRIZWFkKTsK
LSAgICAgICAgVmVjdG9yPFZpcnR1YWxSZWdpc3Rlcj4gaW5kZXhUb09wZXJhbmQ7Ci0gICAgICAg
IGZvciAoc2l6ZV90IGkgPSBtX2dyYXBoLmJsb2NrKDApLT52YXJpYWJsZXNBdEhlYWQuc2l6ZSgp
OyBpLS07KSB7Ci0gICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZChtX2dyYXBoLmJs
b2NrKDApLT52YXJpYWJsZXNBdEhlYWQub3BlcmFuZEZvckluZGV4KGkpKTsKLSAgICAgICAgICAg
IAotICAgICAgICAgICAgU1NBQ2FsY3VsYXRvcjo6VmFyaWFibGUqIHZhcmlhYmxlID0gc3NhQ2Fs
Y3VsYXRvci5uZXdWYXJpYWJsZSgpOwotICAgICAgICAgICAgb3BlcmFuZFRvVmFyaWFibGUub3Bl
cmFuZChvcGVyYW5kKSA9IHZhcmlhYmxlOwotICAgICAgICAgICAgQVNTRVJUKGluZGV4VG9PcGVy
YW5kLnNpemUoKSA9PSB2YXJpYWJsZS0+aW5kZXgoKSk7Ci0gICAgICAgICAgICBpbmRleFRvT3Bl
cmFuZC5hcHBlbmQob3BlcmFuZCk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIEhhc2hT
ZXQ8Tm9kZSo+IHB1dExvY2Fsc1RvU2luazsKLSAgICAgICAgCi0gICAgICAgIGZvciAoQmFzaWNC
bG9jayogYmxvY2sgOiBtX2dyYXBoLmJsb2Nrc0luTmF0dXJhbE9yZGVyKCkpIHsKLSAgICAgICAg
ICAgIGZvciAoTm9kZSogbm9kZSA6ICpibG9jaykgewotICAgICAgICAgICAgICAgIHN3aXRjaCAo
bm9kZS0+b3AoKSkgewotICAgICAgICAgICAgICAgIGNhc2UgUHV0TG9jYWw6Ci0gICAgICAgICAg
ICAgICAgICAgIHB1dExvY2Fsc1RvU2luay5hZGQobm9kZSk7Ci0gICAgICAgICAgICAgICAgICAg
IHNzYUNhbGN1bGF0b3IubmV3RGVmKAotICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmFuZFRv
VmFyaWFibGUub3BlcmFuZChub2RlLT5sb2NhbCgpKSwgYmxvY2ssIG5vZGUtPmNoaWxkMSgpLm5v
ZGUoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2Ug
R2V0QXJndW1lbnQ6Ci0gICAgICAgICAgICAgICAgICAgIHNzYUNhbGN1bGF0b3IubmV3RGVmKAot
ICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmFuZFRvVmFyaWFibGUub3BlcmFuZChub2RlLT5s
b2NhbCgpKSwgYmxvY2ssIG5vZGUpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHNz
YUNhbGN1bGF0b3IuY29tcHV0ZVBoaXMoCi0gICAgICAgICAgICBbJl0gKFNTQUNhbGN1bGF0b3I6
OlZhcmlhYmxlKiB2YXJpYWJsZSwgQmFzaWNCbG9jayogYmxvY2spIC0+IE5vZGUqIHsKLSAgICAg
ICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCA9IGluZGV4VG9PcGVyYW5kW3Zhcmlh
YmxlLT5pbmRleCgpXTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBpZiAoIWxp
dmVBdEhlYWRbYmxvY2tdLm9wZXJhbmQob3BlcmFuZCkpCi0gICAgICAgICAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIFZhcmlhYmxl
RGVmZXJyYWwgdmFyaWFibGVEZWZlcnJhbCA9IGRlZmVycmVkQXRIZWFkW2Jsb2NrXS5vcGVyYW5k
KG9wZXJhbmQpOwotCi0gICAgICAgICAgICAgICAgLy8gV2UgY291bGQgaGF2ZSBhbiBpbnZhbGlk
IGRlZmVycmFsIGJlY2F1c2UgbGl2ZW5lc3MgaXMgaW1wcmVjaXNlLgotICAgICAgICAgICAgICAg
IGlmICghdmFyaWFibGVEZWZlcnJhbC5oYXNWYXJpYWJsZSgpKQotICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLQotICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQotICAgICAg
ICAgICAgICAgICAgICBkYXRhTG9nKCJBZGRpbmcgUGhpIGZvciByIiwgb3BlcmFuZCwgIiBhdCAi
LCBwb2ludGVyRHVtcChibG9jayksICJcbiIpOwotICAgICAgICAgICAgICAgIAotICAgICAgICAg
ICAgICAgIE5vZGUqIHBoaU5vZGUgPSBtX2dyYXBoLmFkZE5vZGUoU3BlY0hlYXBUb3AsIFBoaSwg
Tm9kZU9yaWdpbigpKTsKLSAgICAgICAgICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG51bGxw
dHIsIHZhcmlhYmxlRGVmZXJyYWwuaGFzVmFyaWFibGUoKSk7Ci0gICAgICAgICAgICAgICAgRmx1
c2hGb3JtYXQgZm9ybWF0ID0gdmFyaWFibGVEZWZlcnJhbC52YXJpYWJsZSgpLT5mbHVzaEZvcm1h
dCgpOwotICAgICAgICAgICAgICAgIHBoaU5vZGUtPm1lcmdlRmxhZ3MocmVzdWx0Rm9yKGZvcm1h
dCkpOwotICAgICAgICAgICAgICAgIHJldHVybiBwaGlOb2RlOwotICAgICAgICAgICAgfSk7Ci0g
ICAgICAgIAotICAgICAgICBPcGVyYW5kczxOb2RlKj4gbWFwcGluZyhPcGVyYW5kc0xpa2UsIG1f
Z3JhcGguYmxvY2soMCktPnZhcmlhYmxlc0F0SGVhZCk7Ci0gICAgICAgIE9wZXJhbmRzPFZhcmlh
YmxlRGVmZXJyYWw+IGRlZmVycmVkOwotICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDog
bV9ncmFwaC5ibG9ja3NJbk5hdHVyYWxPcmRlcigpKSB7Ci0gICAgICAgICAgICBtYXBwaW5nLmZp
bGwobnVsbHB0cik7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSBt
YXBwaW5nLnNpemUoKTsgaS0tOykgewotICAgICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBv
cGVyYW5kKG1hcHBpbmcub3BlcmFuZEZvckluZGV4KGkpKTsKLSAgICAgICAgICAgICAgICAKLSAg
ICAgICAgICAgICAgICBTU0FDYWxjdWxhdG9yOjpWYXJpYWJsZSogdmFyaWFibGUgPSBvcGVyYW5k
VG9WYXJpYWJsZS5vcGVyYW5kKG9wZXJhbmQpOwotICAgICAgICAgICAgICAgIFNTQUNhbGN1bGF0
b3I6OkRlZiogZGVmID0gc3NhQ2FsY3VsYXRvci5yZWFjaGluZ0RlZkF0SGVhZChibG9jaywgdmFy
aWFibGUpOwotICAgICAgICAgICAgICAgIGlmICghZGVmKQotICAgICAgICAgICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBtYXBwaW5nLm9wZXJh
bmQob3BlcmFuZCkgPSBkZWYtPnZhbHVlKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAK
LSAgICAgICAgICAgIGlmICh2ZXJib3NlKQotICAgICAgICAgICAgICAgIGRhdGFMb2coIk1hcHBp
bmcgYXQgdG9wIG9mICIsIHBvaW50ZXJEdW1wKGJsb2NrKSwgIjogIiwgbWFwcGluZywgIlxuIik7
Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGZvciAoU1NBQ2FsY3VsYXRvcjo6RGVmKiBwaGlE
ZWYgOiBzc2FDYWxjdWxhdG9yLnBoaXNGb3JCbG9jayhibG9jaykpIHsKLSAgICAgICAgICAgICAg
ICBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCA9IGluZGV4VG9PcGVyYW5kW3BoaURlZi0+dmFyaWFi
bGUoKS0+aW5kZXgoKV07Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgaW5zZXJ0
aW9uU2V0Lmluc2VydCgwLCBwaGlEZWYtPnZhbHVlKCkpOwotICAgICAgICAgICAgICAgIAotICAg
ICAgICAgICAgICAgIGlmICh2ZXJib3NlKQotICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIg
ICBNYXBwaW5nIHIiLCBvcGVyYW5kLCAiIHRvICIsIHBoaURlZi0+dmFsdWUoKSwgIlxuIik7Ci0g
ICAgICAgICAgICAgICAgbWFwcGluZy5vcGVyYW5kKG9wZXJhbmQpID0gcGhpRGVmLT52YWx1ZSgp
OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICBkZWZlcnJlZCA9IGRl
ZmVycmVkQXRIZWFkW2Jsb2NrXTsKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgbm9kZUluZGV4
ID0gMDsgbm9kZUluZGV4IDwgYmxvY2stPnNpemUoKTsgKytub2RlSW5kZXgpIHsKLSAgICAgICAg
ICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0KG5vZGVJbmRleCk7Ci0gICAgICAgICAgICAg
ICAgaWYgKHZlcmJvc2UpCi0gICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIkRlZmVycmVkIGF0
ICIsIG5vZGUsICI6IiwgZGVmZXJyZWQsICJcbiIpOwotICAgICAgICAgICAgICAgIAotICAgICAg
ICAgICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgewotICAgICAgICAgICAgICAgIGNhc2UgUHV0
TG9jYWw6IHsKLSAgICAgICAgICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJs
ZSA9IG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpOwotICAgICAgICAgICAgICAgICAgICBWaXJ0
dWFsUmVnaXN0ZXIgb3BlcmFuZCA9IHZhcmlhYmxlLT5sb2NhbCgpOwotICAgICAgICAgICAgICAg
ICAgICBkZWZlcnJlZC5vcGVyYW5kKG9wZXJhbmQpID0gVmFyaWFibGVEZWZlcnJhbCh2YXJpYWJs
ZSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQotICAgICAgICAgICAgICAgICAg
ICAgICAgZGF0YUxvZygiICAgTWFwcGluZyByIiwgb3BlcmFuZCwgIiB0byAiLCBub2RlLT5jaGls
ZDEoKS5ub2RlKCksICIgYXQgIiwgbm9kZSwgIlxuIik7Ci0gICAgICAgICAgICAgICAgICAgIG1h
cHBpbmcub3BlcmFuZChvcGVyYW5kKSA9IG5vZGUtPmNoaWxkMSgpLm5vZGUoKTsKLSAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAg
ICAKLSAgICAgICAgICAgICAgICBjYXNlIEdldEFyZ3VtZW50OiB7Ci0gICAgICAgICAgICAgICAg
ICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGUgPSBub2RlLT52YXJpYWJsZUFjY2Vzc0Rh
dGEoKTsKLSAgICAgICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQgPSB2YXJp
YWJsZS0+bG9jYWwoKTsKLSAgICAgICAgICAgICAgICAgICAgbWFwcGluZy5vcGVyYW5kKG9wZXJh
bmQpID0gbm9kZTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBjYXNlIEtpbGxMb2NhbDog
ewotICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5vcGVyYW5kKG5vZGUtPnVubGlua2VkTG9j
YWwoKSkgPSBWYXJpYWJsZURlZmVycmFsKCk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBkZWZh
dWx0OiB7Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8gZXNjYXBlSGFuZGxlciA9IFsmXSAoVmly
dHVhbFJlZ2lzdGVyIG9wZXJhbmQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvcGVy
YW5kLmlzSGVhZGVyKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgIFZhcmlhYmxlRGVmZXJy
YWwgdmFyaWFibGVEZWZlcnJhbCA9IGRlZmVycmVkLm9wZXJhbmQob3BlcmFuZCk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoIXZhcmlhYmxlRGVmZXJyYWwuaGFzVmFyaWFibGUoKSkKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgICAgIAot
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gR290dGEgaW5zZXJ0IGEgUHV0TG9jYWwuCi0gICAg
ICAgICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkYXRhTG9nKCJJbnNlcnRpbmcgYSBQdXRMb2NhbCBmb3IgciIsIG9wZXJhbmQsICIgYXQg
Iiwgbm9kZSwgIlxuIik7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIE5vZGUqIGluY29taW5n
ID0gbWFwcGluZy5vcGVyYW5kKG9wZXJhbmQpOwotICAgICAgICAgICAgICAgICAgICAgICAgREZH
X0FTU0VSVChtX2dyYXBoLCBub2RlLCBpbmNvbWluZyk7Ci0gICAgICAgICAgICAgICAgICAgIAot
ICAgICAgICAgICAgICAgICAgICAgICAgaW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbm9kZUluZGV4LCBTcGVjTm9uZSwgUHV0TG9jYWwsIG5vZGUt
Pm9yaWdpbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcEluZm8odmFyaWFibGVEZWZl
cnJhbC52YXJpYWJsZSgpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBFZGdlKGluY29t
aW5nLCB1c2VLaW5kRm9yKHZhcmlhYmxlRGVmZXJyYWwudmFyaWFibGUoKS0+Zmx1c2hGb3JtYXQo
KSkpKTsKLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICBkZWZl
cnJlZC5vcGVyYW5kKG9wZXJhbmQpID0gbnVsbHB0cjsKLSAgICAgICAgICAgICAgICAgICAgfTsK
LSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgcHJlY2lzZUxvY2FsQ2xvYmJl
cml6ZSgKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgsIG5vZGUsIGVzY2FwZUhhbmRs
ZXIsIGVzY2FwZUhhbmRsZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICBbJl0gKFZpcnR1YWxS
ZWdpc3RlciwgTm9kZSopIHsgfSk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgICAgIH0gfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICBz
aXplX3QgdXBzaWxvbkluc2VydGlvblBvaW50ID0gYmxvY2stPnNpemUoKSAtIDE7Ci0gICAgICAg
ICAgICBOb2RlT3JpZ2luIHVwc2lsb25PcmlnaW4gPSBibG9jay0+bGFzdCgpLT5vcmlnaW47Ci0g
ICAgICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIHN1Y2Nlc3NvckJsb2NrIDogYmxvY2stPnN1Y2Nl
c3NvcnMoKSkgewotICAgICAgICAgICAgICAgIGZvciAoU1NBQ2FsY3VsYXRvcjo6RGVmKiBwaGlE
ZWYgOiBzc2FDYWxjdWxhdG9yLnBoaXNGb3JCbG9jayhzdWNjZXNzb3JCbG9jaykpIHsKLSAgICAg
ICAgICAgICAgICAgICAgTm9kZSogcGhpTm9kZSA9IHBoaURlZi0+dmFsdWUoKTsKLSAgICAgICAg
ICAgICAgICAgICAgU1NBQ2FsY3VsYXRvcjo6VmFyaWFibGUqIHZhcmlhYmxlID0gcGhpRGVmLT52
YXJpYWJsZSgpOwotICAgICAgICAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCA9
IGluZGV4VG9PcGVyYW5kW3ZhcmlhYmxlLT5pbmRleCgpXTsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKHZlcmJvc2UpCi0gICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJDcmVhdGluZyBV
cHNpbG9uIGZvciByIiwgb3BlcmFuZCwgIiBhdCAiLCBwb2ludGVyRHVtcChibG9jayksICItPiIs
IHBvaW50ZXJEdW1wKHN1Y2Nlc3NvckJsb2NrKSwgIlxuIik7Ci0gICAgICAgICAgICAgICAgICAg
IFZhcmlhYmxlRGVmZXJyYWwgdmFyaWFibGVEZWZlcnJhbCA9Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBkZWZlcnJlZEF0SGVhZFtzdWNjZXNzb3JCbG9ja10ub3BlcmFuZChvcGVyYW5kKTsKLSAg
ICAgICAgICAgICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBudWxscHRyLCB2YXJpYWJsZURl
ZmVycmFsLmhhc1ZhcmlhYmxlKCkpOwotICAgICAgICAgICAgICAgICAgICBGbHVzaEZvcm1hdCBm
b3JtYXQgPSB2YXJpYWJsZURlZmVycmFsLnZhcmlhYmxlKCktPmZsdXNoRm9ybWF0KCk7Ci0gICAg
ICAgICAgICAgICAgICAgIFVzZUtpbmQgdXNlS2luZCA9IHVzZUtpbmRGb3IoZm9ybWF0KTsKLSAg
ICAgICAgICAgICAgICAgICAgTm9kZSogaW5jb21pbmcgPSBtYXBwaW5nLm9wZXJhbmQob3BlcmFu
ZCk7Ci0gICAgICAgICAgICAgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbnVsbHB0ciwgaW5j
b21pbmcpOwotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgaW5zZXJ0
aW9uU2V0Lmluc2VydE5vZGUoCi0gICAgICAgICAgICAgICAgICAgICAgICB1cHNpbG9uSW5zZXJ0
aW9uUG9pbnQsIFNwZWNOb25lLCBVcHNpbG9uLCB1cHNpbG9uT3JpZ2luLAotICAgICAgICAgICAg
ICAgICAgICAgICAgT3BJbmZvKHBoaU5vZGUpLCBFZGdlKGluY29taW5nLCB1c2VLaW5kKSk7Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAg
ICBpbnNlcnRpb25TZXQuZXhlY3V0ZShibG9jayk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAg
ICAgIC8vIEZpbmFsbHkgZWxpbWluYXRlIHRoZSBzdW5rZW4gUHV0TG9jYWxzIGJ5IHR1cm5pbmcg
dGhlbSBpbnRvIFBoYW50b21zLiBUaGlzIGtlZXBzIHdoYXRldmVyCi0gICAgICAgIC8vIHR5cGUg
Y2hlY2sgdGhleSB3ZXJlIGRvaW5nLiBBbHNvIHByZXBlbmQgS2lsbExvY2FscyB0byB0aGVtIHRv
IGVuc3VyZSB0aGF0IHdlIGtub3cgdGhhdAotICAgICAgICAvLyB0aGUgcmVsZXZhbnQgdmFsdWUg
d2FzICpub3QqIHN0b3JlZCB0byB0aGUgc3RhY2suCi0gICAgICAgIGZvciAoQmFzaWNCbG9jayog
YmxvY2sgOiBtX2dyYXBoLmJsb2Nrc0luTmF0dXJhbE9yZGVyKCkpIHsKLSAgICAgICAgICAgIGZv
ciAodW5zaWduZWQgbm9kZUluZGV4ID0gMDsgbm9kZUluZGV4IDwgYmxvY2stPnNpemUoKTsgKytu
b2RlSW5kZXgpIHsKLSAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0KG5vZGVJ
bmRleCk7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgaWYgKCFwdXRMb2NhbHNU
b1NpbmsuY29udGFpbnMobm9kZSkpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAg
ICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGluc2VydGlvblNldC5pbnNlcnROb2RlKAot
ICAgICAgICAgICAgICAgICAgICBub2RlSW5kZXgsIFNwZWNOb25lLCBLaWxsTG9jYWwsIG5vZGUt
Pm9yaWdpbiwgT3BJbmZvKG5vZGUtPmxvY2FsKCkub2Zmc2V0KCkpKTsKLSAgICAgICAgICAgICAg
ICBub2RlLT5jb252ZXJ0VG9QaGFudG9tKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAK
LSAgICAgICAgICAgIGluc2VydGlvblNldC5leGVjdXRlKGJsb2NrKTsKLSAgICAgICAgfQotICAg
ICAgICAKLSAgICAgICAgaWYgKHZlcmJvc2UpIHsKLSAgICAgICAgICAgIGRhdGFMb2coIkdyYXBo
IGFmdGVyIFB1dExvY2FsIHNpbmtpbmc6XG4iKTsKLSAgICAgICAgICAgIG1fZ3JhcGguZHVtcCgp
OwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci19Owot
Ci19IC8vIGFub255bW91cyBuYW1lc3BhY2UKLSAgICAKLWJvb2wgcGVyZm9ybVB1dExvY2FsU2lu
a2luZyhHcmFwaCYgZ3JhcGgpCi17Ci0gICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24o
IkRGRyBQdXRMb2NhbCBTaW5raW5nIFBoYXNlIik7Ci0gICAgcmV0dXJuIHJ1blBoYXNlPFB1dExv
Y2FsU2lua2luZ1BoYXNlPihncmFwaCk7Ci19Ci0KLX0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcK
LQotI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1B1dExvY2FsU2lua2luZ1BoYXNlLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1B1dExvY2FsU2lua2luZ1BoYXNlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDVmNDExMzgxN2ViMWQ1Y2YzMTg0NzVjMGE1MDcwNDBjNGYxZjZlNTAuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQdXRMb2NhbFNpbmtpbmdQaGFzZS5oCisrKyAvZGV2L251bGwKQEAgLTEs
NDYgKzAsMCBAQAotIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8K
LQotI2lmbmRlZiBERkdQdXRMb2NhbFNpbmtpbmdQaGFzZV9oCi0jZGVmaW5lIERGR1B1dExvY2Fs
U2lua2luZ1BoYXNlX2gKLQotI2lmIEVOQUJMRShERkdfSklUKQotCi1uYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIERGRyB7Ci0KLWNsYXNzIEdyYXBoOwotCi0vLyBTaW5rcyBQdXRMb2NhbHMgdG8g
dGhlIGFic29sdXRlIGxhdGVzdCBwb2ludCB3aGVyZSB0aGV5IGNhbiBwb3NzaWJseSBoYXBwZW4s
IHdoaWNoIGlzIHVzdWFsbHkKLS8vIHNpZGUtZWZmZWN0cyB0aGF0IG1heSBvYnNlcnZlIHRoZW0u
IFRoaXMgZWxpbWluYXRlcyBQdXRMb2NhbHMgaWYgaXQgc2lua3MgdGhlbSBwYXN0IHRoZSBwb2lu
dCBvZgotLy8gdGhlaXIgZGVhdGhzLgotCi1ib29sIHBlcmZvcm1QdXRMb2NhbFNpbmtpbmcoR3Jh
cGgmKTsKLQotfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwotCi0jZW5kaWYgLy8gRU5BQkxFKERG
R19KSVQpCi0KLSNlbmRpZiAvLyBERkdQdXRMb2NhbFNpbmtpbmdQaGFzZV9oCi0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ2FsY3VsYXRvci5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FDYWxjdWxhdG9yLmgKaW5kZXggNGY0Zjg2NTI5ZTY5
YmM1OWE5YTNmN2NlZDdiYmQzOTg4ZjY2YzI1Ni4uOTQwOTM1ZTM5MDBmNzZkZDU5ZTFjYTA1NTVi
NDBkNmZlOGFiNDBlNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
U0FDYWxjdWxhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FDYWxj
dWxhdG9yLmgKQEAgLTE3NCw3ICsxNzQsNyBAQCBwdWJsaWM6CiAgICAgLy8gbm9uTG9jYWxSZWFj
aGluZ0RlZigpIHdpbGwgZmluZCBpdCBsYXRlci4gTm90ZSB0aGF0IGl0IGlzIGdlbmVyYWxseSBh
bHdheXMgc291bmQgdG8gbm90CiAgICAgLy8gcHJ1bmUgYW55IFBoaXMgKHRoYXQgaXMsIHRvIGFs
d2F5cyBoYXZlIHRoZSBmdW5jdG9yIGluc2VydCBhIFBoaSBhbmQgbmV2ZXIgcmV0dXJuIG51bGxw
dHIpLgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFBoaUluc2VydGlvbkZ1bmN0b3I+Ci0gICAgdm9p
ZCBjb21wdXRlUGhpcyhjb25zdCBQaGlJbnNlcnRpb25GdW5jdG9yJiBmdW5jdG9yKQorICAgIHZv
aWQgY29tcHV0ZVBoaXMoUGhpSW5zZXJ0aW9uRnVuY3RvciBmdW5jdG9yKQogICAgIHsKICAgICAg
ICAgREZHX0FTU0VSVChtX2dyYXBoLCBudWxscHRyLCBtX2dyYXBoLm1fZG9taW5hdG9ycy5pc1Zh
bGlkKCkpOwogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHVmFsaWRhdGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5j
cHAKaW5kZXggNGVjYzYzNmYzY2E3NzJlMjNiOTgyOTE5M2ViZTMyMjJhYzFlMGRlZC4uMmYyZTAw
ZGJkNzQ2MDZlNzAxMzdhNjQzOTdjYjJhNmVkY2EyZmJlNCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgcHVibGljOgogICAgIH0g
d2hpbGUgKDApCiAKICAgICAjZGVmaW5lIG5vdFNldCAoc3RhdGljX2Nhc3Q8c2l6ZV90PigtMSkp
Ci0gICAgICAgIAorCiAgICAgdm9pZCB2YWxpZGF0ZSgpCiAgICAgewogICAgICAgICAvLyBOQi4g
VGhpcyBjb2RlIGlzIG5vdCB3cml0dGVuIGZvciBwZXJmb3JtYW5jZSwgc2luY2UgaXQgaXMgbm90
IGludGVuZGVkIHRvIHJ1bgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQml0VmVjdG9yLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi9CaXRWZWN0b3IuaAppbmRleCA5Zjg2ZmQwNjEwOGIzZDU1NDMxMmY4
ZTExZjhiZWIzMTZlMDUxZjdkLi4wZmYyZDA3MWY3OTJmY2NjYjNhODQ2NWY4ZDAxNTVmYjYzMDdl
NjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9CaXRWZWN0b3IuaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9CaXRWZWN0b3IuaApAQCAtMjY5LDU4ICsyNjksNiBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiBJbnRIYXNoPHVpbnRwdHJfdD46Omhhc2godmFsdWUpOwogICAgIH0KICAgICAKLSAg
ICBjbGFzcyBTZXRCaXRzSXRlcmFibGUgewotICAgIHB1YmxpYzoKLSAgICAgICAgU2V0Qml0c0l0
ZXJhYmxlKGNvbnN0IEJpdFZlY3RvciYgYml0VmVjdG9yKQotICAgICAgICAgICAgOiBtX2JpdFZl
Y3RvcihiaXRWZWN0b3IpCi0gICAgICAgIHsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAg
Y2xhc3MgaXRlcmF0b3IgewotICAgICAgICBwdWJsaWM6Ci0gICAgICAgICAgICBpdGVyYXRvcigp
Ci0gICAgICAgICAgICAgICAgOiBtX2JpdFZlY3RvcihudWxscHRyKQotICAgICAgICAgICAgICAg
ICwgbV9pbmRleCgwKQotICAgICAgICAgICAgewotICAgICAgICAgICAgfQotICAgICAgICAgICAg
Ci0gICAgICAgICAgICBpdGVyYXRvcihjb25zdCBCaXRWZWN0b3ImIGJpdFZlY3Rvciwgc2l6ZV90
IGluZGV4KQotICAgICAgICAgICAgICAgIDogbV9iaXRWZWN0b3IoJmJpdFZlY3RvcikKLSAgICAg
ICAgICAgICAgICAsIG1faW5kZXgoaW5kZXgpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIHNpemVfdCBvcGVyYXRvciooKSBjb25zdCB7IHJl
dHVybiBtX2luZGV4OyB9Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGl0ZXJhdG9yJiBvcGVy
YXRvcisrKCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBtX2luZGV4ID0gbV9iaXRW
ZWN0b3ItPmZpbmRCaXQobV9pbmRleCArIDEsIHRydWUpOwotICAgICAgICAgICAgICAgIHJldHVy
biAqdGhpczsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICAgICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IGl0ZXJhdG9yJiBvdGhlcikgY29uc3QKLSAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICByZXR1cm4gbV9pbmRleCA9PSBvdGhlci5tX2luZGV4OwotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgaXRl
cmF0b3ImIG90aGVyKSBjb25zdAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVy
biAhKCp0aGlzID09IG90aGVyKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgcHJpdmF0ZToKLSAg
ICAgICAgICAgIGNvbnN0IEJpdFZlY3RvciogbV9iaXRWZWN0b3I7Ci0gICAgICAgICAgICBzaXpl
X3QgbV9pbmRleDsKLSAgICAgICAgfTsKLSAgICAgICAgCi0gICAgICAgIGl0ZXJhdG9yIGJlZ2lu
KCkgY29uc3QgeyByZXR1cm4gaXRlcmF0b3IobV9iaXRWZWN0b3IsIG1fYml0VmVjdG9yLmZpbmRC
aXQoMCwgdHJ1ZSkpOyB9Ci0gICAgICAgIGl0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIGl0
ZXJhdG9yKG1fYml0VmVjdG9yLCBtX2JpdFZlY3Rvci5zaXplKCkpOyB9Ci0gICAgICAgIAotICAg
IHByaXZhdGU6Ci0gICAgICAgIGNvbnN0IEJpdFZlY3RvciYgbV9iaXRWZWN0b3I7Ci0gICAgfTsK
LSAgICAKLSAgICBTZXRCaXRzSXRlcmFibGUgc2V0Qml0cygpIGNvbnN0IHsgcmV0dXJuIFNldEJp
dHNJdGVyYWJsZSgqdGhpcyk7IH0KLSAgICAKIHByaXZhdGU6CiAgICAgc3RhdGljIHVuc2lnbmVk
IGJpdHNJblBvaW50ZXIoKQogICAgIHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBmMTAxMzZiMTRjMDJmOWViODI3ZDE4M2Rm
ZjU4M2RkMTk1ZDM4NzgwLi41YjMxMWM5ZWFiMzcyY2M5ZTAzZDY4MTgyYTEwY2E4Mzg2MjMzNTQ3
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTQtMTAtMDMgIENvbW1pdCBRdWV1ZSAgPGNvbW1p
dC1xdWV1ZUB3ZWJraXQub3JnPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIx
NzQyNzUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
Mzc0MDgKKworICAgICAgICBCdWlsZCBmYWlsdXJlcyBvbiB0aGUgaW50ZXJuYWwgYm90cy4gKFJl
cXVlc3RlZCBieSBkZXRoYmFraW4KKyAgICAgICAgb24gI3dlYmtpdCkuCisKKyAgICAgICAgUmV2
ZXJ0ZWQgY2hhbmdlc2V0OgorCisgICAgICAgICJGVEwgc2hvdWxkIHNpbmsgUHV0TG9jYWxzIgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3MTY4Cisg
ICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzE3NDI3NQorCiAyMDE0LTEw
LTAyICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgRlRMIHNob3Vs
ZCBzaW5rIFB1dExvY2FscwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9lbGlk
YWJsZS1uZXctb2JqZWN0LXRoZW4tY2FsbC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9y
ZWdyZXNzL2VsaWRhYmxlLW5ldy1vYmplY3QtdGhlbi1jYWxsLWV4cGVjdGVkLnR4dApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzAyNDRjNDdmMjg2ZDM1Yzk5MmY1NGZiMzNkM2JlNmJj
NDU2NzhiZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy9qcy9yZWdyZXNzL2VsaWRhYmxlLW5ldy1vYmplY3QtdGhlbi1jYWxsLWV4cGVj
dGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLUpTUmVncmVzcy9lbGlkYWJs
ZS1uZXctb2JqZWN0LXRoZW4tY2FsbAotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLQot
UEFTUyBubyBleGNlcHRpb24gdGhyb3duCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
Ci0KLVRFU1QgQ09NUExFVEUKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9l
bGlkYWJsZS1uZXctb2JqZWN0LXRoZW4tY2FsbC5odG1sIGIvTGF5b3V0VGVzdHMvanMvcmVncmVz
cy9lbGlkYWJsZS1uZXctb2JqZWN0LXRoZW4tY2FsbC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA5NDY3MDRkYzFlNTQ2YjcyYThiMDQ2MzI4N2NlZWJlNmIwNDRhZWY1Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2pz
L3JlZ3Jlc3MvZWxpZGFibGUtbmV3LW9iamVjdC10aGVuLWNhbGwuaHRtbAorKysgL2Rldi9udWxs
CkBAIC0xLDEyICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhU
TUwvL0VOIj4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy9yZWdyZXNzLXByZS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0ic2Ny
aXB0LXRlc3RzL2VsaWRhYmxlLW5ldy1vYmplY3QtdGhlbi1jYWxsLmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1wb3N0LmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwv
Ym9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0
LXRlc3RzL2VsaWRhYmxlLW5ldy1vYmplY3QtdGhlbi1jYWxsLmpzIGIvTGF5b3V0VGVzdHMvanMv
cmVncmVzcy9zY3JpcHQtdGVzdHMvZWxpZGFibGUtbmV3LW9iamVjdC10aGVuLWNhbGwuanMKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ5NmMyYTExNjgxZTlmZTI3N2Q4NjE5OGFiZDEx
Y2FjNTBhNTdhMmUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvZWxpZGFibGUtbmV3LW9iamVj
dC10aGVuLWNhbGwuanMKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1mdW5jdGlvbiBz
dW1PZkFyaXRoU2VyaWVzKGxpbWl0KSB7Ci0gICAgcmV0dXJuIGxpbWl0ICogKGxpbWl0ICsgMSkg
LyAyOwotfQotCi12YXIgbiA9IDEwMDAwMDAwOwotCi1mdW5jdGlvbiBiYXIocCwgbykgewotICAg
IGlmIChwKQotICAgICAgICByZXR1cm4gNTsKLSAgICBlbHNlCi0gICAgICAgIHJldHVybiA2Owot
fQotCi1mdW5jdGlvbiBmb28oKSB7Ci0gICAgdmFyIHJlc3VsdCA9IDA7Ci0gICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBuOyArK2kpIHsKLSAgICAgICAgdmFyIG8gPSB7ZjogaX07Ci0gICAgICAgIHZh
ciBwID0ge2Y6IGkgKyAxfTsKLSAgICAgICAgYmFyKGksIG8pOwotICAgICAgICBiYXIoaSwgcCk7
Ci0gICAgICAgIHJlc3VsdCArPSBvLmYgKyBwLmY7Ci0gICAgfQotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci0KLXZhciByZXN1bHQgPSBmb28oKTsKLWlmIChyZXN1bHQgIT0gc3VtT2ZBcml0aFNlcmll
cyhuIC0gMSkgKyBzdW1PZkFyaXRoU2VyaWVzKG4pKQotICAgIHRocm93ICJFcnJvcjogYmFkIHJl
c3VsdDogIiArIHJlc3VsdDsK
</data>

          </attachment>
      

    </bug>

</bugzilla>