You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flagon.apache.org by po...@apache.org on 2021/04/02 02:58:48 UTC

[incubator-flagon-useralejs] 02/03: pulling from https://github.com/UncleGedd/incubator-flagon-useralejs/tree/spike-workers

This is an automated email from the ASF dual-hosted git repository.

poorejc pushed a commit to branch UncleGedd-flagon-userale-50
in repository https://gitbox.apache.org/repos/asf/incubator-flagon-useralejs.git

commit e16ff33796bec28b6fff04e43c9d67be4cb74fd6
Merge: 0ec3645 f508dd9
Author: poorejc <po...@apache.org>
AuthorDate: Thu Apr 1 22:57:23 2021 -0400

    pulling from https://github.com/UncleGedd/incubator-flagon-useralejs/tree/spike-workers

 .gitignore                              |     1 +
 build/UserALEWebExtension/background.js |   201 +-
 build/UserALEWebExtension/content.js    |   674 +-
 build/UserALEWebExtension/options.js    |   106 +-
 build/userale-2.1.1.js                  |   716 +-
 build/userale-2.1.1.min.js              |     3 +-
 cypress.json                            |     4 +
 example/index.html                      |     2 +
 example/log-label-example/README.md     |    60 +
 example/log-label-example/index.html    |    46 +
 gulpfile.js                             |   192 -
 journey/userale.journey.js              |    18 +
 package-lock.json                       | 17768 ++++++++++--------------------
 package.json                            |    38 +-
 rollup.config.js                        |    73 +
 src/attachHandlers.js                   |    15 +-
 src/configure.js                        |     8 +-
 src/getInitialSettings.js               |   114 +-
 src/main.js                             |    16 +-
 src/packageLogs.js                      |    52 +-
 src/sendLogs.js                         |    31 +-
 src/worker.js                           |    16 +
 test/main_spec.js                       |    19 +-
 test/sendLogs_spec.js                   |    73 +-
 test/testUtils.js                       |     5 +
 25 files changed, 7122 insertions(+), 13129 deletions(-)

diff --cc build/UserALEWebExtension/background.js
index 6350eaa,7be0fc0..b22015d
--- a/build/UserALEWebExtension/background.js
+++ b/build/UserALEWebExtension/background.js
@@@ -1,29 -1,27 +1,27 @@@
--/*
--* Licensed to the Apache Software Foundation (ASF) under one or more
--* contributor license agreements.  See the NOTICE file distributed with
--    * this work for additional information regarding copyright ownership.
--* The ASF licenses this file to You under the Apache License, Version 2.0
--* (the "License"); you may not use this file except in compliance with
--    * the License.  You may obtain a copy of the License at
--*
--*   http://www.apache.org/licenses/LICENSE-2.0
--*
--* Unless required by applicable law or agreed to in writing, software
--* distributed under the License is distributed on an "AS IS" BASIS,
--* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
--* See the License for the specific language governing permissions and
--* limitations under the License.
- */
- 
- /* eslint-disable */
- 
- // these are default values, which can be overridden by the user on the options page
- var userAleHost = 'http://localhost:8000';
- var userAleScript = 'userale-2.1.1.min.js';
- var toolUser = 'nobody';
- var toolName = 'test_app';
- var toolVersion = '2.1.1';
- 
++/*
++* Licensed to the Apache Software Foundation (ASF) under one or more
++* contributor license agreements.  See the NOTICE file distributed with
++    * this work for additional information regarding copyright ownership.
++* The ASF licenses this file to You under the Apache License, Version 2.0
++* (the "License"); you may not use this file except in compliance with
++    * the License.  You may obtain a copy of the License at
++*
++*   http://www.apache.org/licenses/LICENSE-2.0
++*
++* Unless required by applicable law or agreed to in writing, software
++* distributed under the License is distributed on an "AS IS" BASIS,
++* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
++* See the License for the specific language governing permissions and
++* limitations under the License.
+ */
+ 
+ /* eslint-disable */
+ // these are default values, which can be overridden by the user on the options page
+ var userAleHost = 'http://localhost:8000';
+ var userAleScript = 'userale-2.1.1.min.js';
+ var toolUser = 'nobody';
+ var toolName = 'test_app';
+ var toolVersion = '2.1.1';
  /* eslint-enable */
  
  /*
diff --cc build/UserALEWebExtension/content.js
index 704252b,5a52c22..3da7a66
--- a/build/UserALEWebExtension/content.js
+++ b/build/UserALEWebExtension/content.js
@@@ -1,29 -1,27 +1,27 @@@
--/*
--* Licensed to the Apache Software Foundation (ASF) under one or more
--* contributor license agreements.  See the NOTICE file distributed with
--    * this work for additional information regarding copyright ownership.
--* The ASF licenses this file to You under the Apache License, Version 2.0
--* (the "License"); you may not use this file except in compliance with
--    * the License.  You may obtain a copy of the License at
--*
--*   http://www.apache.org/licenses/LICENSE-2.0
--*
--* Unless required by applicable law or agreed to in writing, software
--* distributed under the License is distributed on an "AS IS" BASIS,
--* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
--* See the License for the specific language governing permissions and
--* limitations under the License.
- */
- 
- /* eslint-disable */
- 
- // these are default values, which can be overridden by the user on the options page
- var userAleHost = 'http://localhost:8000';
- var userAleScript = 'userale-2.1.1.min.js';
- var toolUser = 'nobody';
- var toolName = 'test_app';
- var toolVersion = '2.1.1';
- 
++/*
++* Licensed to the Apache Software Foundation (ASF) under one or more
++* contributor license agreements.  See the NOTICE file distributed with
++    * this work for additional information regarding copyright ownership.
++* The ASF licenses this file to You under the Apache License, Version 2.0
++* (the "License"); you may not use this file except in compliance with
++    * the License.  You may obtain a copy of the License at
++*
++*   http://www.apache.org/licenses/LICENSE-2.0
++*
++* Unless required by applicable law or agreed to in writing, software
++* distributed under the License is distributed on an "AS IS" BASIS,
++* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
++* See the License for the specific language governing permissions and
++* limitations under the License.
+ */
+ 
+ /* eslint-disable */
+ // these are default values, which can be overridden by the user on the options page
+ var userAleHost = 'http://localhost:8000';
+ var userAleScript = 'userale-2.1.1.min.js';
+ var toolUser = 'nobody';
+ var toolName = 'test_app';
+ var toolVersion = '2.1.1';
  /* eslint-enable */
  
  /*
@@@ -729,16 -736,161 +736,16 @@@ function selectorizePath(path) 
      pathSelectors.push(getSelector(pathEle));
      ++i;
    }
+ 
    return pathSelectors;
  }
- 
  function detectBrowser() {
-     return {
-         'browser': browser$1 ? browser$1.name : '',
-         'version': browser$1 ? browser$1.version : ''
-     };
+   return {
+     'browser': browser$1 ? browser$1.name : '',
+     'version': browser$1 ? browser$1.version : ''
+   };
  }
  
 -function workerSendLog(e) {
 -  var _e$data = e.data,
 -      url = _e$data.url,
 -      logs = _e$data.logs;
 -  fetch(url, {
 -    method: 'POST',
 -    headers: {
 -      'Content-Type': 'application/json'
 -    },
 -    body: JSON.stringify(logs && logs.length > 0 ? logs : [])
 -  });
 -}
 -function createWorker(fn) {
 -  var blob = new Blob(['self.onmessage = ', fn.toString()], {
 -    type: 'text/javascript'
 -  });
 -  var url = URL.createObjectURL(blob);
 -  return new Worker(url);
 -}
 -
 -/*
 - * Licensed to the Apache Software Foundation (ASF) under one or more
 - * contributor license agreements.  See the NOTICE file distributed with
 - * this work for additional information regarding copyright ownership.
 - * The ASF licenses this file to You under the Apache License, Version 2.0
 - * (the "License"); you may not use this file except in compliance with
 - * the License.  You may obtain a copy of the License at
 - * 
 - *   http://www.apache.org/licenses/LICENSE-2.0
 - * 
 - * Unless required by applicable law or agreed to in writing, software
 - * distributed under the License is distributed on an "AS IS" BASIS,
 - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 - * See the License for the specific language governing permissions and
 - * limitations under the License.
 - */
 -var sendIntervalId = null;
 -/**
 - * Initializes the log queue processors.
 - * @param  {Array} logs   Array of logs to append to.
 - * @param  {Object} config Configuration object to use when logging.
 - */
 -
 -function initSender(logs, config) {
 -  if (sendIntervalId !== null) {
 -    clearInterval(sendIntervalId);
 -  }
 -
 -  sendIntervalId = sendOnInterval(logs, config);
 -  sendOnClose(logs, config);
 -}
 -/**
 - * Checks the provided log array on an interval, flushing the logs
 - * if the queue has reached the threshold specified by the provided config.
 - * @param  {Array} logs   Array of logs to read from.
 - * @param  {Object} config Configuration object to be read from.
 - * @return {Number}        The newly created interval id.
 - */
 -
 -function sendOnInterval(logs, config) {
 -  return setInterval(function () {
 -    if (!config.on) {
 -      return;
 -    }
 -
 -    if (logs.length >= config.logCountThreshold) {
 -      sendLogs(logs.slice(0), config, 0); // Send a copy
 -
 -      logs.splice(0); // Clear array reference (no reassignment)
 -    }
 -  }, config.transmitInterval);
 -}
 -/**
 - * Provides a simplified send function that can be called before events that would
 - * refresh page can resolve so that log queue ('logs) can be shipped immediately. This
 - * is different than sendOnClose because browser security practices prevent you from
 - * listening the process responsible for window navigation actions, in action (e.g., refresh;
 - * you can only detect, after the fact, the process responsible for the current window state.
 - * @param  {Array} logs   Array of logs to read from.
 - * @param  {Object} config Configuration object to be read from.
 - */
 -
 -function sendOnRefresh(logs, config) {
 -  if (!config.on) {
 -    return;
 -  }
 -
 -  if (logs.length > 0) {
 -    sendLogs(logs, config, 1);
 -  }
 -}
 -/**
 - * Attempts to flush the remaining logs when the window is closed.
 - * @param  {Array} logs   Array of logs to be flushed.
 - * @param  {Object} config Configuration object to be read from.
 - */
 -
 -function sendOnClose(logs, config) {
 -  if (!config.on) {
 -    return;
 -  }
 -
 -  var worker = createWorker(workerSendLog);
 -  document.addEventListener('visibilitychange', function () {
 -    if (document.visibilityState === 'hidden' && logs.length > 0) {
 -      worker.postMessage({
 -        url: config.url,
 -        logs: logs
 -      });
 -      logs.splice(0, logs.length);
 -    }
 -  });
 -}
 -/**
 - * Sends the provided array of logs to the specified url,
 - * retrying the request up to the specified number of retries.
 - * @param  {Array} logs    Array of logs to send.
 - * @param  {string} config     configuration parameters (e.g., to extract URL from & send the POST request to).
 - * @param  {Number} retries Maximum number of attempts to send the logs.
 - */
 -// @todo expose config object to sendLogs replate url with config.url
 -
 -function sendLogs(logs, config, retries) {
 -  var req = new XMLHttpRequest(); // @todo setRequestHeader for Auth
 -
 -  var data = JSON.stringify(logs);
 -  req.open('POST', config.url);
 -
 -  if (config.authHeader) {
 -    req.setRequestHeader('Authorization', config.authHeader);
 -  }
 -
 -  req.setRequestHeader('Content-type', 'application/json;charset=UTF-8');
 -
 -  req.onreadystatechange = function () {
 -    if (req.readyState === 4 && req.status !== 200) {
 -      if (retries > 0) {
 -        sendLogs(logs, config, retries--);
 -      }
 -    }
 -  };
 -
 -  req.send(data);
 -}
 -
  /*
   * Licensed to the Apache Software Foundation (ASF) under one or more
   * contributor license agreements.  See the NOTICE file distributed with
@@@ -849,154 -1027,24 +882,149 @@@ function attachHandlers(config) 
        }
      }, true);
    });
- 
-   Object.keys(refreshEvents).forEach(function(ev) {
-     document.addEventListener(ev, function(e) {
+   Object.keys(refreshEvents).forEach(function (ev) {
+     document.addEventListener(ev, function (e) {
        packageLog(e, events[ev]);
 -      sendOnRefresh(logs$1, config);
      }, true);
    });
- 
-   windowEvents.forEach(function(ev) {
-     window.addEventListener(ev, function(e) {
-       packageLog(e, function() { return { 'window' : true }; });
+   windowEvents.forEach(function (ev) {
+     window.addEventListener(ev, function (e) {
+       packageLog(e, function () {
+         return {
+           'window': true
+         };
+       });
      }, true);
    });
- 
    return true;
  }
  
++function workerSendLog(e) {
++  var _e$data = e.data,
++      url = _e$data.url,
++      logs = _e$data.logs;
++  fetch(url, {
++    method: 'POST',
++    headers: {
++      'Content-Type': 'application/json'
++    },
++    body: JSON.stringify(logs && logs.length > 0 ? logs : [])
++  });
++}
++function createWorker(fn) {
++  var blob = new Blob(['self.onmessage = ', fn.toString()], {
++    type: 'text/javascript'
++  });
++  var url = URL.createObjectURL(blob);
++  return new Worker(url);
++}
++
 +/*
 + * Licensed to the Apache Software Foundation (ASF) under one or more
 + * contributor license agreements.  See the NOTICE file distributed with
 + * this work for additional information regarding copyright ownership.
 + * The ASF licenses this file to You under the Apache License, Version 2.0
 + * (the "License"); you may not use this file except in compliance with
 + * the License.  You may obtain a copy of the License at
 + * 
 + *   http://www.apache.org/licenses/LICENSE-2.0
 + * 
 + * Unless required by applicable law or agreed to in writing, software
 + * distributed under the License is distributed on an "AS IS" BASIS,
 + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 + * See the License for the specific language governing permissions and
 + * limitations under the License.
 + */
- 
 +var sendIntervalId = null;
- 
 +/**
 + * Initializes the log queue processors.
 + * @param  {Array} logs   Array of logs to append to.
 + * @param  {Object} config Configuration object to use when logging.
 + */
++
 +function initSender(logs, config) {
 +  if (sendIntervalId !== null) {
 +    clearInterval(sendIntervalId);
 +  }
 +
 +  sendIntervalId = sendOnInterval(logs, config);
 +  sendOnClose(logs, config);
 +}
- 
 +/**
 + * Checks the provided log array on an interval, flushing the logs
 + * if the queue has reached the threshold specified by the provided config.
 + * @param  {Array} logs   Array of logs to read from.
 + * @param  {Object} config Configuration object to be read from.
 + * @return {Number}        The newly created interval id.
 + */
++
 +function sendOnInterval(logs, config) {
-   return setInterval(function() {
++  return setInterval(function () {
 +    if (!config.on) {
 +      return;
 +    }
 +
 +    if (logs.length >= config.logCountThreshold) {
 +      sendLogs(logs.slice(0), config, 0); // Send a copy
++
 +      logs.splice(0); // Clear array reference (no reassignment)
 +    }
 +  }, config.transmitInterval);
 +}
- 
 +/**
 + * Attempts to flush the remaining logs when the window is closed.
 + * @param  {Array} logs   Array of logs to be flushed.
 + * @param  {Object} config Configuration object to be read from.
 + */
++
 +function sendOnClose(logs, config) {
- /** if (!config.on) {
++  if (!config.on) {
 +    return;
-  } */
- document.addEventListener('visibilitychange', function () {
++  }
++
++  var worker = createWorker(workerSendLog);
++  document.addEventListener('visibilitychange', function () {
 +    if (document.visibilityState === 'hidden' && logs.length > 0) {
-       navigator.sendBeacon(config.url, JSON.stringify(logs));
-       logs.splice(0); // Clear array reference (no reassignment)
++      worker.postMessage({
++        url: config.url,
++        logs: logs
++      });
++      logs.splice(0, logs.length);
 +    }
 +  });
- /**
-     if (navigator.sendBeacon) {
-     window.addEventListener('unload', function() {
-       ;
-   } else {
-     window.addEventListener('beforeunload', function() {
-       if (logs.length > 0) {
-         sendLogs(logs, config, 1);
-       }
-     })
-   }
- */
 +}
- 
 +/**
 + * Sends the provided array of logs to the specified url,
 + * retrying the request up to the specified number of retries.
 + * @param  {Array} logs    Array of logs to send.
 + * @param  {string} config     configuration parameters (e.g., to extract URL from & send the POST request to).
 + * @param  {Number} retries Maximum number of attempts to send the logs.
 + */
- 
 +// @todo expose config object to sendLogs replate url with config.url
++
 +function sendLogs(logs, config, retries) {
-   var req = new XMLHttpRequest();
++  var req = new XMLHttpRequest(); // @todo setRequestHeader for Auth
 +
-   // @todo setRequestHeader for Auth
 +  var data = JSON.stringify(logs);
- 
 +  req.open('POST', config.url);
++
 +  if (config.authHeader) {
 +    req.setRequestHeader('Authorization', config.authHeader);
 +  }
 +
 +  req.setRequestHeader('Content-type', 'application/json;charset=UTF-8');
 +
-   req.onreadystatechange = function() {
++  req.onreadystatechange = function () {
 +    if (req.readyState === 4 && req.status !== 200) {
 +      if (retries > 0) {
 +        sendLogs(logs, config, retries--);
 +      }
 +    }
 +  };
 +
 +  req.send(data);
 +}
 +
- /*
-  * Licensed to the Apache Software Foundation (ASF) under one or more
-  * contributor license agreements.  See the NOTICE file distributed with
-  * this work for additional information regarding copyright ownership.
-  * The ASF licenses this file to You under the Apache License, Version 2.0
-  * (the "License"); you may not use this file except in compliance with
-  * the License.  You may obtain a copy of the License at
-  * 
-  *   http://www.apache.org/licenses/LICENSE-2.0
-  * 
-  * Unless required by applicable law or agreed to in writing, software
-  * distributed under the License is distributed on an "AS IS" BASIS,
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  */
- 
  var config = {};
  var logs = [];
  var startLoadTimestamp = Date.now();
diff --cc build/userale-2.1.1.js
index 4f4f158,f82cbe3..bfccd42
--- a/build/userale-2.1.1.js
+++ b/build/userale-2.1.1.js
@@@ -711,16 -738,161 +738,16 @@@
        pathSelectors.push(getSelector(pathEle));
        ++i;
      }
+ 
      return pathSelectors;
    }
- 
    function detectBrowser() {
-       return {
-           'browser': browser ? browser.name : '',
-           'version': browser ? browser.version : ''
-       };
+     return {
+       'browser': browser ? browser.name : '',
+       'version': browser ? browser.version : ''
+     };
    }
  
 -  function workerSendLog(e) {
 -    var _e$data = e.data,
 -        url = _e$data.url,
 -        logs = _e$data.logs;
 -    fetch(url, {
 -      method: 'POST',
 -      headers: {
 -        'Content-Type': 'application/json'
 -      },
 -      body: JSON.stringify(logs && logs.length > 0 ? logs : [])
 -    });
 -  }
 -  function createWorker(fn) {
 -    var blob = new Blob(['self.onmessage = ', fn.toString()], {
 -      type: 'text/javascript'
 -    });
 -    var url = URL.createObjectURL(blob);
 -    return new Worker(url);
 -  }
 -
 -  /*
 -   * Licensed to the Apache Software Foundation (ASF) under one or more
 -   * contributor license agreements.  See the NOTICE file distributed with
 -   * this work for additional information regarding copyright ownership.
 -   * The ASF licenses this file to You under the Apache License, Version 2.0
 -   * (the "License"); you may not use this file except in compliance with
 -   * the License.  You may obtain a copy of the License at
 -   * 
 -   *   http://www.apache.org/licenses/LICENSE-2.0
 -   * 
 -   * Unless required by applicable law or agreed to in writing, software
 -   * distributed under the License is distributed on an "AS IS" BASIS,
 -   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 -   * See the License for the specific language governing permissions and
 -   * limitations under the License.
 -   */
 -  var sendIntervalId = null;
 -  /**
 -   * Initializes the log queue processors.
 -   * @param  {Array} logs   Array of logs to append to.
 -   * @param  {Object} config Configuration object to use when logging.
 -   */
 -
 -  function initSender(logs, config) {
 -    if (sendIntervalId !== null) {
 -      clearInterval(sendIntervalId);
 -    }
 -
 -    sendIntervalId = sendOnInterval(logs, config);
 -    sendOnClose(logs, config);
 -  }
 -  /**
 -   * Checks the provided log array on an interval, flushing the logs
 -   * if the queue has reached the threshold specified by the provided config.
 -   * @param  {Array} logs   Array of logs to read from.
 -   * @param  {Object} config Configuration object to be read from.
 -   * @return {Number}        The newly created interval id.
 -   */
 -
 -  function sendOnInterval(logs, config) {
 -    return setInterval(function () {
 -      if (!config.on) {
 -        return;
 -      }
 -
 -      if (logs.length >= config.logCountThreshold) {
 -        sendLogs(logs.slice(0), config, 0); // Send a copy
 -
 -        logs.splice(0); // Clear array reference (no reassignment)
 -      }
 -    }, config.transmitInterval);
 -  }
 -  /**
 -   * Provides a simplified send function that can be called before events that would
 -   * refresh page can resolve so that log queue ('logs) can be shipped immediately. This
 -   * is different than sendOnClose because browser security practices prevent you from
 -   * listening the process responsible for window navigation actions, in action (e.g., refresh;
 -   * you can only detect, after the fact, the process responsible for the current window state.
 -   * @param  {Array} logs   Array of logs to read from.
 -   * @param  {Object} config Configuration object to be read from.
 -   */
 -
 -  function sendOnRefresh(logs, config) {
 -    if (!config.on) {
 -      return;
 -    }
 -
 -    if (logs.length > 0) {
 -      sendLogs(logs, config, 1);
 -    }
 -  }
 -  /**
 -   * Attempts to flush the remaining logs when the window is closed.
 -   * @param  {Array} logs   Array of logs to be flushed.
 -   * @param  {Object} config Configuration object to be read from.
 -   */
 -
 -  function sendOnClose(logs, config) {
 -    if (!config.on) {
 -      return;
 -    }
 -
 -    var worker = createWorker(workerSendLog);
 -    document.addEventListener('visibilitychange', function () {
 -      if (document.visibilityState === 'hidden' && logs.length > 0) {
 -        worker.postMessage({
 -          url: config.url,
 -          logs: logs
 -        });
 -        logs.splice(0, logs.length);
 -      }
 -    });
 -  }
 -  /**
 -   * Sends the provided array of logs to the specified url,
 -   * retrying the request up to the specified number of retries.
 -   * @param  {Array} logs    Array of logs to send.
 -   * @param  {string} config     configuration parameters (e.g., to extract URL from & send the POST request to).
 -   * @param  {Number} retries Maximum number of attempts to send the logs.
 -   */
 -  // @todo expose config object to sendLogs replate url with config.url
 -
 -  function sendLogs(logs, config, retries) {
 -    var req = new XMLHttpRequest(); // @todo setRequestHeader for Auth
 -
 -    var data = JSON.stringify(logs);
 -    req.open('POST', config.url);
 -
 -    if (config.authHeader) {
 -      req.setRequestHeader('Authorization', config.authHeader);
 -    }
 -
 -    req.setRequestHeader('Content-type', 'application/json;charset=UTF-8');
 -
 -    req.onreadystatechange = function () {
 -      if (req.readyState === 4 && req.status !== 200) {
 -        if (retries > 0) {
 -          sendLogs(logs, config, retries--);
 -        }
 -      }
 -    };
 -
 -    req.send(data);
 -  }
 -
    /*
     * Licensed to the Apache Software Foundation (ASF) under one or more
     * contributor license agreements.  See the NOTICE file distributed with
@@@ -864,154 -1094,24 +949,149 @@@
          }
        }, true);
      });
- 
-     Object.keys(refreshEvents).forEach(function(ev) {
-       document.addEventListener(ev, function(e) {
+     Object.keys(refreshEvents).forEach(function (ev) {
+       document.addEventListener(ev, function (e) {
          packageLog(e, events[ev]);
 -        sendOnRefresh(logs$1, config);
        }, true);
      });
- 
-     windowEvents.forEach(function(ev) {
-       window.addEventListener(ev, function(e) {
-         packageLog(e, function() { return { 'window' : true }; });
+     windowEvents.forEach(function (ev) {
+       window.addEventListener(ev, function (e) {
+         packageLog(e, function () {
+           return {
+             'window': true
+           };
+         });
        }, true);
      });
- 
      return true;
    }
  
++  function workerSendLog(e) {
++    var _e$data = e.data,
++        url = _e$data.url,
++        logs = _e$data.logs;
++    fetch(url, {
++      method: 'POST',
++      headers: {
++        'Content-Type': 'application/json'
++      },
++      body: JSON.stringify(logs && logs.length > 0 ? logs : [])
++    });
++  }
++  function createWorker(fn) {
++    var blob = new Blob(['self.onmessage = ', fn.toString()], {
++      type: 'text/javascript'
++    });
++    var url = URL.createObjectURL(blob);
++    return new Worker(url);
++  }
++
 +  /*
 +   * Licensed to the Apache Software Foundation (ASF) under one or more
 +   * contributor license agreements.  See the NOTICE file distributed with
 +   * this work for additional information regarding copyright ownership.
 +   * The ASF licenses this file to You under the Apache License, Version 2.0
 +   * (the "License"); you may not use this file except in compliance with
 +   * the License.  You may obtain a copy of the License at
 +   * 
 +   *   http://www.apache.org/licenses/LICENSE-2.0
 +   * 
 +   * Unless required by applicable law or agreed to in writing, software
 +   * distributed under the License is distributed on an "AS IS" BASIS,
 +   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 +   * See the License for the specific language governing permissions and
 +   * limitations under the License.
 +   */
- 
 +  var sendIntervalId = null;
- 
 +  /**
 +   * Initializes the log queue processors.
 +   * @param  {Array} logs   Array of logs to append to.
 +   * @param  {Object} config Configuration object to use when logging.
 +   */
++
 +  function initSender(logs, config) {
 +    if (sendIntervalId !== null) {
 +      clearInterval(sendIntervalId);
 +    }
 +
 +    sendIntervalId = sendOnInterval(logs, config);
 +    sendOnClose(logs, config);
 +  }
- 
 +  /**
 +   * Checks the provided log array on an interval, flushing the logs
 +   * if the queue has reached the threshold specified by the provided config.
 +   * @param  {Array} logs   Array of logs to read from.
 +   * @param  {Object} config Configuration object to be read from.
 +   * @return {Number}        The newly created interval id.
 +   */
++
 +  function sendOnInterval(logs, config) {
-     return setInterval(function() {
++    return setInterval(function () {
 +      if (!config.on) {
 +        return;
 +      }
 +
 +      if (logs.length >= config.logCountThreshold) {
 +        sendLogs(logs.slice(0), config, 0); // Send a copy
++
 +        logs.splice(0); // Clear array reference (no reassignment)
 +      }
 +    }, config.transmitInterval);
 +  }
- 
 +  /**
 +   * Attempts to flush the remaining logs when the window is closed.
 +   * @param  {Array} logs   Array of logs to be flushed.
 +   * @param  {Object} config Configuration object to be read from.
 +   */
++
 +  function sendOnClose(logs, config) {
-   /** if (!config.on) {
++    if (!config.on) {
 +      return;
-    } */
-   document.addEventListener('visibilitychange', function () {
++    }
++
++    var worker = createWorker(workerSendLog);
++    document.addEventListener('visibilitychange', function () {
 +      if (document.visibilityState === 'hidden' && logs.length > 0) {
-         navigator.sendBeacon(config.url, JSON.stringify(logs));
-         logs.splice(0); // Clear array reference (no reassignment)
++        worker.postMessage({
++          url: config.url,
++          logs: logs
++        });
++        logs.splice(0, logs.length);
 +      }
 +    });
-   /**
-       if (navigator.sendBeacon) {
-       window.addEventListener('unload', function() {
-         ;
-     } else {
-       window.addEventListener('beforeunload', function() {
-         if (logs.length > 0) {
-           sendLogs(logs, config, 1);
-         }
-       })
-     }
-   */
 +  }
- 
 +  /**
 +   * Sends the provided array of logs to the specified url,
 +   * retrying the request up to the specified number of retries.
 +   * @param  {Array} logs    Array of logs to send.
 +   * @param  {string} config     configuration parameters (e.g., to extract URL from & send the POST request to).
 +   * @param  {Number} retries Maximum number of attempts to send the logs.
 +   */
- 
 +  // @todo expose config object to sendLogs replate url with config.url
++
 +  function sendLogs(logs, config, retries) {
-     var req = new XMLHttpRequest();
++    var req = new XMLHttpRequest(); // @todo setRequestHeader for Auth
 +
-     // @todo setRequestHeader for Auth
 +    var data = JSON.stringify(logs);
- 
 +    req.open('POST', config.url);
++
 +    if (config.authHeader) {
 +      req.setRequestHeader('Authorization', config.authHeader);
 +    }
 +
 +    req.setRequestHeader('Content-type', 'application/json;charset=UTF-8');
 +
-     req.onreadystatechange = function() {
++    req.onreadystatechange = function () {
 +      if (req.readyState === 4 && req.status !== 200) {
 +        if (retries > 0) {
 +          sendLogs(logs, config, retries--);
 +        }
 +      }
 +    };
 +
 +    req.send(data);
 +  }
 +
-   /*
-    * Licensed to the Apache Software Foundation (ASF) under one or more
-    * contributor license agreements.  See the NOTICE file distributed with
-    * this work for additional information regarding copyright ownership.
-    * The ASF licenses this file to You under the Apache License, Version 2.0
-    * (the "License"); you may not use this file except in compliance with
-    * the License.  You may obtain a copy of the License at
-    * 
-    *   http://www.apache.org/licenses/LICENSE-2.0
-    * 
-    * Unless required by applicable law or agreed to in writing, software
-    * distributed under the License is distributed on an "AS IS" BASIS,
-    * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    * See the License for the specific language governing permissions and
-    * limitations under the License.
-    */
- 
    var config = {};
    var logs = [];
    var startLoadTimestamp = Date.now();
diff --cc build/userale-2.1.1.min.js
index 50736ea,1c9fee5..ad1f22b
--- a/build/userale-2.1.1.min.js
+++ b/build/userale-2.1.1.min.js
@@@ -15,4 -15,5 +15,5 @@@
   * limitations under the License.
   * @preserved
   */
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).userale={})}(this,function(n){"use strict";var e="2.1.1",i=null;function t(n,o){Object.keys(o).forEach(function(e){var t;"userFromParams"!==e||(t=function(e){e=new RegExp("[?&]"+e+"(=([^&#]*)|&|#|$)"),e=window.location.href.match(e);return e&&e[2]?decodeURIComponent(e[2].replace(/\+/g," ")):null [...]
+ 
 -!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n((e="undefined"!=typeof globalThis?globalThis:e||self).userale={})}(this,(function(e){"use strict";function n(e){return(n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var t="2.1.1",o=null;fu [...]
++!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n((e="undefined"!=typeof globalThis?globalThis:e||self).userale={})}(this,(function(e){"use strict";function n(e){return(n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var t="2.1.1",o=null;fu [...]
diff --cc package-lock.json
index b5ce3f7,5bca08c..591bb66
--- a/package-lock.json
+++ b/package-lock.json
@@@ -2074,255 -2379,237 +2379,239 @@@
          "node": "*"
        }
      },
-     "node_modules/assign-symbols": {
-       "version": "1.0.0",
-       "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
-       "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=",
-       "dev": true,
-       "engines": {
-         "node": ">=0.10.0"
-       }
+     "node_modules/buffer-from": {
+       "version": "1.1.1",
+       "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
+       "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==",
+       "dev": true
      },
-     "node_modules/astral-regex": {
-       "version": "1.0.0",
-       "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz",
-       "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==",
+     "node_modules/builtin-modules": {
+       "version": "3.2.0",
+       "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz",
+       "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==",
        "dev": true,
        "engines": {
-         "node": ">=4"
+         "node": ">=6"
+       },
+       "funding": {
+         "url": "https://github.com/sponsors/sindresorhus"
        }
      },
-     "node_modules/async-done": {
-       "version": "1.3.2",
-       "resolved": "https://registry.npmjs.org/async-done/-/async-done-1.3.2.tgz",
-       "integrity": "sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw==",
+     "node_modules/bytes": {
+       "version": "3.1.0",
+       "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
+       "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==",
        "dev": true,
-       "dependencies": {
-         "end-of-stream": "^1.1.0",
-         "once": "^1.3.2",
-         "process-nextick-args": "^2.0.0",
-         "stream-exhaust": "^1.0.1"
-       },
        "engines": {
-         "node": ">= 0.10"
+         "node": ">= 0.8"
        }
      },
-     "node_modules/async-each": {
-       "version": "1.0.3",
-       "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz",
-       "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==",
-       "dev": true
-     },
-     "node_modules/async-settle": {
-       "version": "1.0.0",
-       "resolved": "https://registry.npmjs.org/async-settle/-/async-settle-1.0.0.tgz",
-       "integrity": "sha1-HQqRS7Aldb7IqPOnTlCA9yssDGs=",
+     "node_modules/cacheable-request": {
+       "version": "6.1.0",
+       "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz",
+       "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==",
        "dev": true,
        "dependencies": {
-         "async-done": "^1.2.2"
+         "clone-response": "^1.0.2",
+         "get-stream": "^5.1.0",
+         "http-cache-semantics": "^4.0.0",
+         "keyv": "^3.0.0",
+         "lowercase-keys": "^2.0.0",
+         "normalize-url": "^4.1.0",
+         "responselike": "^1.0.2"
        },
        "engines": {
-         "node": ">= 0.10"
+         "node": ">=8"
        }
      },
-     "node_modules/asynckit": {
-       "version": "0.4.0",
-       "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
-       "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
-       "dev": true
-     },
-     "node_modules/atob": {
-       "version": "2.1.2",
-       "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
-       "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
+     "node_modules/cacheable-request/node_modules/lowercase-keys": {
+       "version": "2.0.0",
+       "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz",
+       "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==",
        "dev": true,
-       "bin": {
-         "atob": "bin/atob.js"
-       },
        "engines": {
-         "node": ">= 4.5.0"
+         "node": ">=8"
        }
      },
-     "node_modules/aws-sign2": {
-       "version": "0.7.0",
-       "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
-       "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=",
+     "node_modules/cachedir": {
+       "version": "2.3.0",
+       "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.3.0.tgz",
+       "integrity": "sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==",
        "dev": true,
        "engines": {
-         "node": "*"
+         "node": ">=6"
        }
      },
-     "node_modules/aws4": {
-       "version": "1.11.0",
-       "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz",
-       "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==",
-       "dev": true
-     },
-     "node_modules/babel-plugin-dynamic-import-node": {
-       "version": "2.3.3",
-       "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz",
-       "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==",
+     "node_modules/call-bind": {
+       "version": "1.0.2",
+       "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
+       "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
        "dev": true,
        "dependencies": {
-         "object.assign": "^4.1.0"
+         "function-bind": "^1.1.1",
+         "get-intrinsic": "^1.0.2"
+       },
+       "funding": {
+         "url": "https://github.com/sponsors/ljharb"
        }
      },
-     "node_modules/babel-plugin-polyfill-corejs2": {
-       "version": "0.1.10",
-       "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.1.10.tgz",
-       "integrity": "sha512-DO95wD4g0A8KRaHKi0D51NdGXzvpqVLnLu5BTvDlpqUEpTmeEtypgC1xqesORaWmiUOQI14UHKlzNd9iZ2G3ZA==",
+     "node_modules/callsites": {
+       "version": "3.1.0",
+       "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+       "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
        "dev": true,
-       "dependencies": {
-         "@babel/compat-data": "^7.13.0",
-         "@babel/helper-define-polyfill-provider": "^0.1.5",
-         "semver": "^6.1.1"
-       },
-       "peerDependencies": {
-         "@babel/core": "^7.0.0-0"
+       "engines": {
+         "node": ">=6"
        }
      },
-     "node_modules/babel-plugin-polyfill-corejs3": {
-       "version": "0.1.7",
-       "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.1.7.tgz",
-       "integrity": "sha512-u+gbS9bbPhZWEeyy1oR/YaaSpod/KDT07arZHb80aTpl8H5ZBq+uN1nN9/xtX7jQyfLdPfoqI4Rue/MQSWJquw==",
+     "node_modules/camelcase": {
+       "version": "5.3.1",
+       "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
+       "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
        "dev": true,
-       "dependencies": {
-         "@babel/helper-define-polyfill-provider": "^0.1.5",
-         "core-js-compat": "^3.8.1"
-       },
-       "peerDependencies": {
-         "@babel/core": "^7.0.0-0"
+       "engines": {
+         "node": ">=6"
        }
      },
-     "node_modules/babel-plugin-polyfill-regenerator": {
-       "version": "0.1.6",
-       "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.1.6.tgz",
-       "integrity": "sha512-OUrYG9iKPKz8NxswXbRAdSwF0GhRdIEMTloQATJi4bDuFqrXaXcCUT/VGNrr8pBcjMh1RxZ7Xt9cytVJTJfvMg==",
+     "node_modules/caniuse-lite": {
 -      "version": "1.0.30001204",
 -      "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001204.tgz",
 -      "integrity": "sha512-JUdjWpcxfJ9IPamy2f5JaRDCaqJOxDzOSKtbdx4rH9VivMd1vIzoPumsJa9LoMIi4Fx2BV2KZOxWhNkBjaYivQ==",
++      "version": "1.0.30001205",
++      "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001205.tgz",
++      "integrity": "sha512-TL1GrS5V6LElbitPazidkBMD9sa448bQDDLrumDqaggmKFcuU2JW1wTOHJPukAcOMtEmLcmDJEzfRrf+GjM0Og==",
+       "dev": true
+     },
+     "node_modules/caseless": {
+       "version": "0.12.0",
+       "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
+       "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
+       "dev": true
+     },
+     "node_modules/chai": {
+       "version": "4.3.4",
+       "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.4.tgz",
+       "integrity": "sha512-yS5H68VYOCtN1cjfwumDSuzn/9c+yza4f3reKXlE5rUg7SFcCEy90gJvydNgOYtblyf4Zi6jIWRnXOgErta0KA==",
        "dev": true,
        "dependencies": {
-         "@babel/helper-define-polyfill-provider": "^0.1.5"
+         "assertion-error": "^1.1.0",
+         "check-error": "^1.0.2",
+         "deep-eql": "^3.0.1",
+         "get-func-name": "^2.0.0",
+         "pathval": "^1.1.1",
+         "type-detect": "^4.0.5"
        },
-       "peerDependencies": {
-         "@babel/core": "^7.0.0-0"
+       "engines": {
+         "node": ">=4"
        }
      },
-     "node_modules/bach": {
-       "version": "1.2.0",
-       "resolved": "https://registry.npmjs.org/bach/-/bach-1.2.0.tgz",
-       "integrity": "sha1-Szzpa/JxNPeaG0FKUcFONMO9mIA=",
+     "node_modules/chalk": {
+       "version": "2.4.2",
+       "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+       "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
        "dev": true,
        "dependencies": {
-         "arr-filter": "^1.1.1",
-         "arr-flatten": "^1.0.1",
-         "arr-map": "^2.0.0",
-         "array-each": "^1.0.0",
-         "array-initial": "^1.0.0",
-         "array-last": "^1.1.1",
-         "async-done": "^1.2.2",
-         "async-settle": "^1.0.0",
-         "now-and-later": "^2.0.0"
+         "ansi-styles": "^3.2.1",
+         "escape-string-regexp": "^1.0.5",
+         "supports-color": "^5.3.0"
        },
        "engines": {
-         "node": ">= 0.10"
+         "node": ">=4"
        }
      },
-     "node_modules/balanced-match": {
-       "version": "1.0.0",
-       "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
-       "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
-       "dev": true
-     },
-     "node_modules/base": {
-       "version": "0.11.2",
-       "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz",
-       "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
+     "node_modules/check-error": {
+       "version": "1.0.2",
+       "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz",
+       "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=",
        "dev": true,
-       "dependencies": {
-         "cache-base": "^1.0.1",
-         "class-utils": "^0.3.5",
-         "component-emitter": "^1.2.1",
-         "define-property": "^1.0.0",
-         "isobject": "^3.0.1",
-         "mixin-deep": "^1.2.0",
-         "pascalcase": "^0.1.1"
-       },
        "engines": {
-         "node": ">=0.10.0"
+         "node": "*"
        }
      },
-     "node_modules/base/node_modules/define-property": {
-       "version": "1.0.0",
-       "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
-       "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+     "node_modules/check-more-types": {
+       "version": "2.24.0",
+       "resolved": "https://registry.npmjs.org/check-more-types/-/check-more-types-2.24.0.tgz",
+       "integrity": "sha1-FCD/sQ/URNz8ebQ4kbv//TKoRgA=",
        "dev": true,
-       "dependencies": {
-         "is-descriptor": "^1.0.0"
-       },
        "engines": {
-         "node": ">=0.10.0"
+         "node": ">= 0.8.0"
        }
      },
-     "node_modules/base/node_modules/is-accessor-descriptor": {
-       "version": "1.0.0",
-       "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
-       "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+     "node_modules/chokidar": {
+       "version": "3.5.1",
+       "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz",
+       "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==",
        "dev": true,
        "dependencies": {
-         "kind-of": "^6.0.0"
+         "anymatch": "~3.1.1",
+         "braces": "~3.0.2",
++        "fsevents": "~2.3.1",
+         "glob-parent": "~5.1.0",
+         "is-binary-path": "~2.1.0",
+         "is-glob": "~4.0.1",
+         "normalize-path": "~3.0.0",
+         "readdirp": "~3.5.0"
        },
        "engines": {
-         "node": ">=0.10.0"
+         "node": ">= 8.10.0"
+       },
+       "optionalDependencies": {
+         "fsevents": "~2.3.1"
        }
      },
-     "node_modules/base/node_modules/is-data-descriptor": {
-       "version": "1.0.0",
-       "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
-       "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+     "node_modules/ci-info": {
+       "version": "2.0.0",
+       "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz",
+       "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==",
+       "dev": true
+     },
+     "node_modules/cli-boxes": {
+       "version": "2.2.1",
+       "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz",
+       "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==",
        "dev": true,
-       "dependencies": {
-         "kind-of": "^6.0.0"
-       },
        "engines": {
-         "node": ">=0.10.0"
+         "node": ">=6"
+       },
+       "funding": {
+         "url": "https://github.com/sponsors/sindresorhus"
        }
      },
-     "node_modules/base/node_modules/is-descriptor": {
+     "node_modules/cli-cursor": {
        "version": "1.0.2",
-       "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
-       "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+       "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz",
+       "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=",
        "dev": true,
        "dependencies": {
-         "is-accessor-descriptor": "^1.0.0",
-         "is-data-descriptor": "^1.0.0",
-         "kind-of": "^6.0.2"
+         "restore-cursor": "^1.0.1"
        },
        "engines": {
          "node": ">=0.10.0"
        }
      },
-     "node_modules/base/node_modules/kind-of": {
-       "version": "6.0.3",
-       "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
-       "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
+     "node_modules/cli-table3": {
+       "version": "0.6.0",
+       "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.0.tgz",
+       "integrity": "sha512-gnB85c3MGC7Nm9I/FkiasNBOKjOiO1RNuXXarQms37q4QMpWdlbBgD/VnOStA2faG1dpXMv31RFApjX1/QdgWQ==",
        "dev": true,
+       "dependencies": {
++        "colors": "^1.1.2",
+         "object-assign": "^4.1.0",
+         "string-width": "^4.2.0"
+       },
        "engines": {
-         "node": ">=0.10.0"
+         "node": "10.* || >= 12.*"
+       },
+       "optionalDependencies": {
+         "colors": "^1.1.2"
        }
      },
-     "node_modules/bcrypt-pbkdf": {
-       "version": "1.0.2",
-       "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
-       "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
+     "node_modules/cli-truncate": {
+       "version": "0.2.1",
+       "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-0.2.1.tgz",
+       "integrity": "sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ=",
        "dev": true,
        "dependencies": {
-         "tweetnacl": "^0.14.3"
-       }
-     },
-     "node_modules/binary-extensions": {
-       "version": "1.13.1",
-       "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz",
-       "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==",
-       "dev": true,
+         "slice-ansi": "0.0.4",
+         "string-width": "^1.0.1"
+       },
        "engines": {
          "node": ">=0.10.0"
        }
@@@ -2647,727 -2866,645 +2868,646 @@@
          "url": "https://github.com/sponsors/sindresorhus"
        }
      },
-     "node_modules/cacheable-request/node_modules/lowercase-keys": {
-       "version": "2.0.0",
-       "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz",
-       "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==",
-       "dev": true,
-       "engines": {
-         "node": ">=8"
-       }
-     },
-     "node_modules/call-bind": {
-       "version": "1.0.2",
-       "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
-       "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
+     "node_modules/content-disposition": {
+       "version": "0.5.3",
+       "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz",
+       "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==",
        "dev": true,
        "dependencies": {
-         "function-bind": "^1.1.1",
-         "get-intrinsic": "^1.0.2"
+         "safe-buffer": "5.1.2"
        },
-       "funding": {
-         "url": "https://github.com/sponsors/ljharb"
-       }
-     },
-     "node_modules/callsites": {
-       "version": "3.1.0",
-       "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
-       "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
-       "dev": true,
        "engines": {
-         "node": ">=6"
+         "node": ">= 0.6"
        }
      },
-     "node_modules/camelcase": {
-       "version": "2.1.1",
-       "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
-       "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=",
+     "node_modules/content-type": {
+       "version": "1.0.4",
+       "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
+       "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==",
        "dev": true,
        "engines": {
-         "node": ">=0.10.0"
+         "node": ">= 0.6"
        }
      },
-     "node_modules/camelcase-keys": {
-       "version": "2.1.0",
-       "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz",
-       "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=",
+     "node_modules/convert-source-map": {
+       "version": "1.7.0",
+       "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz",
+       "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==",
        "dev": true,
        "dependencies": {
-         "camelcase": "^2.0.0",
-         "map-obj": "^1.0.0"
-       },
-       "engines": {
-         "node": ">=0.10.0"
+         "safe-buffer": "~5.1.1"
        }
      },
-     "node_modules/caniuse-lite": {
-       "version": "1.0.30001199",
-       "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001199.tgz",
-       "integrity": "sha512-ifbK2eChUCFUwGhlEzIoVwzFt1+iriSjyKKFYNfv6hN34483wyWpLLavYQXhnR036LhkdUYaSDpHg1El++VgHQ==",
-       "dev": true
+     "node_modules/cookie": {
+       "version": "0.4.0",
+       "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz",
+       "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==",
+       "dev": true,
+       "engines": {
+         "node": ">= 0.6"
+       }
      },
-     "node_modules/caseless": {
-       "version": "0.12.0",
-       "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
-       "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
+     "node_modules/cookie-signature": {
+       "version": "1.0.6",
+       "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
+       "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=",
        "dev": true
      },
-     "node_modules/chai": {
-       "version": "4.3.4",
-       "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.4.tgz",
-       "integrity": "sha512-yS5H68VYOCtN1cjfwumDSuzn/9c+yza4f3reKXlE5rUg7SFcCEy90gJvydNgOYtblyf4Zi6jIWRnXOgErta0KA==",
+     "node_modules/core-js-compat": {
 -      "version": "3.9.1",
 -      "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.9.1.tgz",
 -      "integrity": "sha512-jXAirMQxrkbiiLsCx9bQPJFA6llDadKMpYrBJQJ3/c4/vsPP/fAf29h24tviRlvwUL6AmY5CHLu2GvjuYviQqA==",
++      "version": "3.10.0",
++      "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.10.0.tgz",
++      "integrity": "sha512-9yVewub2MXNYyGvuLnMHcN1k9RkvB7/ofktpeKTIaASyB88YYqGzUnu0ywMMhJrDHOMiTjSHWGzR+i7Wb9Z1kQ==",
        "dev": true,
        "dependencies": {
-         "assertion-error": "^1.1.0",
-         "check-error": "^1.0.2",
-         "deep-eql": "^3.0.1",
-         "get-func-name": "^2.0.0",
-         "pathval": "^1.1.1",
-         "type-detect": "^4.0.5"
+         "browserslist": "^4.16.3",
+         "semver": "7.0.0"
        },
-       "engines": {
-         "node": ">=4"
+       "funding": {
+         "type": "opencollective",
+         "url": "https://opencollective.com/core-js"
        }
      },
-     "node_modules/chalk": {
-       "version": "2.4.2",
-       "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
-       "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+     "node_modules/core-js-compat/node_modules/semver": {
+       "version": "7.0.0",
+       "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz",
+       "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==",
        "dev": true,
-       "dependencies": {
-         "ansi-styles": "^3.2.1",
-         "escape-string-regexp": "^1.0.5",
-         "supports-color": "^5.3.0"
-       },
-       "engines": {
-         "node": ">=4"
+       "bin": {
+         "semver": "bin/semver.js"
        }
      },
-     "node_modules/chardet": {
-       "version": "0.7.0",
-       "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz",
-       "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==",
-       "dev": true
-     },
-     "node_modules/check-error": {
+     "node_modules/core-util-is": {
        "version": "1.0.2",
-       "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz",
-       "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=",
-       "dev": true,
-       "engines": {
-         "node": "*"
-       }
+       "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
+       "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
+       "dev": true
      },
-     "node_modules/chokidar": {
-       "version": "2.1.8",
-       "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz",
-       "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==",
-       "deprecated": "Chokidar 2 will break on node v14+. Upgrade to chokidar 3 with 15x less dependencies.",
+     "node_modules/cross-spawn": {
+       "version": "7.0.3",
+       "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
+       "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
        "dev": true,
        "dependencies": {
-         "anymatch": "^2.0.0",
-         "async-each": "^1.0.1",
-         "braces": "^2.3.2",
-         "fsevents": "^1.2.7",
-         "glob-parent": "^3.1.0",
-         "inherits": "^2.0.3",
-         "is-binary-path": "^1.0.0",
-         "is-glob": "^4.0.0",
-         "normalize-path": "^3.0.0",
-         "path-is-absolute": "^1.0.0",
-         "readdirp": "^2.2.1",
-         "upath": "^1.1.1"
+         "path-key": "^3.1.0",
+         "shebang-command": "^2.0.0",
+         "which": "^2.0.1"
        },
-       "optionalDependencies": {
-         "fsevents": "^1.2.7"
+       "engines": {
+         "node": ">= 8"
        }
      },
-     "node_modules/chokidar/node_modules/glob-parent": {
-       "version": "3.1.0",
-       "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
-       "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
+     "node_modules/crypto-random-string": {
+       "version": "2.0.0",
+       "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz",
+       "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==",
        "dev": true,
-       "dependencies": {
-         "is-glob": "^3.1.0",
-         "path-dirname": "^1.0.0"
+       "engines": {
+         "node": ">=8"
        }
      },
-     "node_modules/chokidar/node_modules/glob-parent/node_modules/is-glob": {
-       "version": "3.1.0",
-       "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
-       "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
+     "node_modules/cssom": {
+       "version": "0.4.4",
+       "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz",
+       "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==",
+       "dev": true
+     },
+     "node_modules/cssstyle": {
+       "version": "2.3.0",
+       "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz",
+       "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==",
        "dev": true,
        "dependencies": {
-         "is-extglob": "^2.1.0"
+         "cssom": "~0.3.6"
        },
        "engines": {
-         "node": ">=0.10.0"
+         "node": ">=8"
        }
      },
-     "node_modules/ci-info": {
-       "version": "2.0.0",
-       "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz",
-       "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==",
+     "node_modules/cssstyle/node_modules/cssom": {
+       "version": "0.3.8",
+       "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz",
+       "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==",
        "dev": true
      },
-     "node_modules/class-utils": {
-       "version": "0.3.6",
-       "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz",
-       "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==",
+     "node_modules/cypress": {
+       "version": "6.8.0",
+       "resolved": "https://registry.npmjs.org/cypress/-/cypress-6.8.0.tgz",
+       "integrity": "sha512-W2e9Oqi7DmF48QtOD0LfsOLVq6ef2hcXZvJXI/E3PgFNmZXEVwBefhAxVCW9yTPortjYA2XkM20KyC4HRkOm9w==",
        "dev": true,
+       "hasInstallScript": true,
        "dependencies": {
-         "arr-union": "^3.1.0",
-         "define-property": "^0.2.5",
-         "isobject": "^3.0.0",
-         "static-extend": "^0.1.1"
+         "@cypress/listr-verbose-renderer": "^0.4.1",
+         "@cypress/request": "^2.88.5",
+         "@cypress/xvfb": "^1.2.4",
+         "@types/node": "12.12.50",
+         "@types/sinonjs__fake-timers": "^6.0.1",
+         "@types/sizzle": "^2.3.2",
+         "arch": "^2.1.2",
+         "blob-util": "2.0.2",
+         "bluebird": "^3.7.2",
+         "cachedir": "^2.3.0",
+         "chalk": "^4.1.0",
+         "check-more-types": "^2.24.0",
+         "cli-table3": "~0.6.0",
+         "commander": "^5.1.0",
+         "common-tags": "^1.8.0",
+         "dayjs": "^1.9.3",
+         "debug": "4.3.2",
+         "eventemitter2": "^6.4.2",
+         "execa": "^4.0.2",
+         "executable": "^4.1.1",
+         "extract-zip": "^1.7.0",
+         "fs-extra": "^9.0.1",
+         "getos": "^3.2.1",
+         "is-ci": "^2.0.0",
+         "is-installed-globally": "^0.3.2",
+         "lazy-ass": "^1.6.0",
+         "listr": "^0.14.3",
+         "lodash": "^4.17.19",
+         "log-symbols": "^4.0.0",
+         "minimist": "^1.2.5",
+         "moment": "^2.29.1",
+         "ospath": "^1.2.2",
+         "pretty-bytes": "^5.4.1",
+         "ramda": "~0.27.1",
+         "request-progress": "^3.0.0",
+         "supports-color": "^7.2.0",
+         "tmp": "~0.2.1",
+         "untildify": "^4.0.0",
+         "url": "^0.11.0",
+         "yauzl": "^2.10.0"
+       },
+       "bin": {
+         "cypress": "bin/cypress"
        },
        "engines": {
-         "node": ">=0.10.0"
+         "node": ">=10.0.0"
        }
      },
-     "node_modules/clean-stack": {
-       "version": "2.2.0",
-       "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz",
-       "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==",
-       "dev": true,
-       "engines": {
-         "node": ">=6"
-       }
+     "node_modules/cypress/node_modules/@types/node": {
+       "version": "12.12.50",
+       "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.50.tgz",
+       "integrity": "sha512-5ImO01Fb8YsEOYpV+aeyGYztcYcjGsBvN4D7G5r1ef2cuQOpymjWNQi5V0rKHE6PC2ru3HkoUr/Br2/8GUA84w==",
+       "dev": true
      },
-     "node_modules/cli-boxes": {
-       "version": "2.2.1",
-       "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz",
-       "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==",
+     "node_modules/cypress/node_modules/ansi-styles": {
+       "version": "4.3.0",
+       "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+       "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
        "dev": true,
+       "dependencies": {
+         "color-convert": "^2.0.1"
+       },
        "engines": {
-         "node": ">=6"
+         "node": ">=8"
        },
        "funding": {
-         "url": "https://github.com/sponsors/sindresorhus"
+         "url": "https://github.com/chalk/ansi-styles?sponsor=1"
        }
      },
-     "node_modules/cli-cursor": {
-       "version": "3.1.0",
-       "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz",
-       "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==",
+     "node_modules/cypress/node_modules/chalk": {
+       "version": "4.1.0",
+       "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
+       "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
        "dev": true,
        "dependencies": {
-         "restore-cursor": "^3.1.0"
+         "ansi-styles": "^4.1.0",
+         "supports-color": "^7.1.0"
        },
        "engines": {
-         "node": ">=8"
+         "node": ">=10"
+       },
+       "funding": {
+         "url": "https://github.com/chalk/chalk?sponsor=1"
        }
      },
-     "node_modules/cli-width": {
-       "version": "3.0.0",
-       "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz",
-       "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==",
+     "node_modules/cypress/node_modules/color-convert": {
+       "version": "2.0.1",
+       "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+       "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
        "dev": true,
+       "dependencies": {
+         "color-name": "~1.1.4"
+       },
        "engines": {
-         "node": ">= 10"
+         "node": ">=7.0.0"
        }
      },
-     "node_modules/cliui": {
-       "version": "3.2.0",
-       "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
-       "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=",
+     "node_modules/cypress/node_modules/color-name": {
+       "version": "1.1.4",
+       "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+       "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+       "dev": true
+     },
+     "node_modules/cypress/node_modules/debug": {
+       "version": "4.3.2",
+       "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
+       "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==",
        "dev": true,
        "dependencies": {
-         "string-width": "^1.0.1",
-         "strip-ansi": "^3.0.1",
-         "wrap-ansi": "^2.0.0"
+         "ms": "2.1.2"
+       },
+       "engines": {
+         "node": ">=6.0"
+       },
+       "peerDependenciesMeta": {
+         "supports-color": {
+           "optional": true
+         }
        }
      },
-     "node_modules/cliui/node_modules/ansi-regex": {
-       "version": "2.1.1",
-       "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
-       "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+     "node_modules/cypress/node_modules/has-flag": {
+       "version": "4.0.0",
+       "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+       "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
        "dev": true,
        "engines": {
-         "node": ">=0.10.0"
+         "node": ">=8"
        }
      },
-     "node_modules/cliui/node_modules/is-fullwidth-code-point": {
-       "version": "1.0.0",
-       "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
-       "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
+     "node_modules/cypress/node_modules/supports-color": {
+       "version": "7.2.0",
+       "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+       "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
        "dev": true,
        "dependencies": {
-         "number-is-nan": "^1.0.0"
+         "has-flag": "^4.0.0"
        },
        "engines": {
-         "node": ">=0.10.0"
+         "node": ">=8"
        }
      },
-     "node_modules/cliui/node_modules/string-width": {
-       "version": "1.0.2",
-       "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
-       "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+     "node_modules/dashdash": {
+       "version": "1.14.1",
+       "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
+       "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
        "dev": true,
        "dependencies": {
-         "code-point-at": "^1.0.0",
-         "is-fullwidth-code-point": "^1.0.0",
-         "strip-ansi": "^3.0.0"
+         "assert-plus": "^1.0.0"
        },
        "engines": {
-         "node": ">=0.10.0"
+         "node": ">=0.10"
        }
      },
-     "node_modules/cliui/node_modules/strip-ansi": {
-       "version": "3.0.1",
-       "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
-       "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+     "node_modules/data-urls": {
+       "version": "2.0.0",
+       "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz",
+       "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==",
        "dev": true,
        "dependencies": {
-         "ansi-regex": "^2.0.0"
+         "abab": "^2.0.3",
+         "whatwg-mimetype": "^2.3.0",
+         "whatwg-url": "^8.0.0"
        },
        "engines": {
-         "node": ">=0.10.0"
+         "node": ">=10"
        }
      },
-     "node_modules/clone": {
-       "version": "2.1.2",
-       "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz",
-       "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=",
+     "node_modules/date-fns": {
+       "version": "1.30.1",
+       "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.30.1.tgz",
+       "integrity": "sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==",
+       "dev": true
+     },
+     "node_modules/dayjs": {
+       "version": "1.10.4",
+       "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.10.4.tgz",
+       "integrity": "sha512-RI/Hh4kqRc1UKLOAf/T5zdMMX5DQIlDxwUe3wSyMMnEbGunnpENCdbUgM+dW7kXidZqCttBrmw7BhN4TMddkCw==",
+       "dev": true
+     },
+     "node_modules/debug": {
+       "version": "4.3.1",
+       "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz",
+       "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==",
        "dev": true,
+       "dependencies": {
+         "ms": "2.1.2"
+       },
        "engines": {
-         "node": ">=0.8"
+         "node": ">=6.0"
+       },
+       "peerDependenciesMeta": {
+         "supports-color": {
+           "optional": true
+         }
        }
      },
-     "node_modules/clone-buffer": {
-       "version": "1.0.0",
-       "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz",
-       "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=",
+     "node_modules/decamelize": {
+       "version": "4.0.0",
+       "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz",
+       "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==",
        "dev": true,
        "engines": {
-         "node": ">= 0.10"
-       }
-     },
-     "node_modules/clone-response": {
-       "version": "1.0.2",
-       "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz",
-       "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=",
-       "dev": true,
-       "dependencies": {
-         "mimic-response": "^1.0.0"
+         "node": ">=10"
+       },
+       "funding": {
+         "url": "https://github.com/sponsors/sindresorhus"
        }
      },
-     "node_modules/clone-stats": {
-       "version": "1.0.0",
-       "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz",
-       "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=",
+     "node_modules/decimal.js": {
+       "version": "10.2.1",
+       "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.2.1.tgz",
+       "integrity": "sha512-KaL7+6Fw6i5A2XSnsbhm/6B+NuEA7TZ4vqxnd5tXz9sbKtrN9Srj8ab4vKVdK8YAqZO9P1kg45Y6YLoduPf+kw==",
        "dev": true
      },
-     "node_modules/cloneable-readable": {
-       "version": "1.1.3",
-       "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.3.tgz",
-       "integrity": "sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==",
-       "dev": true,
-       "dependencies": {
-         "inherits": "^2.0.1",
-         "process-nextick-args": "^2.0.0",
-         "readable-stream": "^2.3.5"
-       }
-     },
-     "node_modules/code-point-at": {
-       "version": "1.1.0",
-       "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
-       "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
-       "dev": true,
-       "engines": {
-         "node": ">=0.10.0"
-       }
-     },
-     "node_modules/collection-map": {
-       "version": "1.0.0",
-       "resolved": "https://registry.npmjs.org/collection-map/-/collection-map-1.0.0.tgz",
-       "integrity": "sha1-rqDwb40mx4DCt1SUOFVEsiVa8Yw=",
+     "node_modules/decompress-response": {
+       "version": "3.3.0",
+       "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz",
+       "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=",
        "dev": true,
        "dependencies": {
-         "arr-map": "^2.0.2",
-         "for-own": "^1.0.0",
-         "make-iterator": "^1.0.0"
+         "mimic-response": "^1.0.0"
        },
        "engines": {
-         "node": ">=0.10.0"
+         "node": ">=4"
        }
      },
-     "node_modules/collection-visit": {
-       "version": "1.0.0",
-       "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
-       "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=",
+     "node_modules/deep-eql": {
+       "version": "3.0.1",
+       "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz",
+       "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==",
        "dev": true,
        "dependencies": {
-         "map-visit": "^1.0.0",
-         "object-visit": "^1.0.0"
+         "type-detect": "^4.0.0"
        },
        "engines": {
-         "node": ">=0.10.0"
+         "node": ">=0.12"
        }
      },
-     "node_modules/color-convert": {
-       "version": "1.9.3",
-       "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
-       "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+     "node_modules/deep-extend": {
+       "version": "0.6.0",
+       "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
+       "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
        "dev": true,
-       "dependencies": {
-         "color-name": "1.1.3"
+       "engines": {
+         "node": ">=4.0.0"
        }
      },
-     "node_modules/color-name": {
-       "version": "1.1.3",
-       "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
-       "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
+     "node_modules/deep-is": {
+       "version": "0.1.3",
+       "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
+       "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
        "dev": true
      },
-     "node_modules/color-support": {
-       "version": "1.1.3",
-       "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz",
-       "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==",
+     "node_modules/deepmerge": {
+       "version": "4.2.2",
+       "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz",
+       "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==",
        "dev": true,
-       "bin": {
-         "color-support": "bin.js"
+       "engines": {
+         "node": ">=0.10.0"
        }
      },
-     "node_modules/colorette": {
-       "version": "1.2.2",
-       "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz",
-       "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==",
+     "node_modules/defer-to-connect": {
+       "version": "1.1.3",
+       "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz",
+       "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==",
        "dev": true
      },
-     "node_modules/combined-stream": {
-       "version": "1.0.8",
-       "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
-       "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+     "node_modules/define-properties": {
+       "version": "1.1.3",
+       "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
+       "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
        "dev": true,
        "dependencies": {
-         "delayed-stream": "~1.0.0"
+         "object-keys": "^1.0.12"
        },
        "engines": {
-         "node": ">= 0.8"
+         "node": ">= 0.4"
        }
      },
-     "node_modules/commander": {
-       "version": "2.20.3",
-       "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
-       "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
-       "dev": true
-     },
-     "node_modules/commenting": {
-       "version": "1.1.0",
-       "resolved": "https://registry.npmjs.org/commenting/-/commenting-1.1.0.tgz",
-       "integrity": "sha512-YeNK4tavZwtH7jEgK1ZINXzLKm6DZdEMfsaaieOsCAN0S8vsY7UeuO3Q7d/M018EFgE+IeUAuBOKkFccBZsUZA==",
-       "dev": true
-     },
-     "node_modules/commondir": {
-       "version": "1.0.1",
-       "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
-       "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=",
-       "dev": true
-     },
-     "node_modules/component-emitter": {
-       "version": "1.3.0",
-       "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz",
-       "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==",
-       "dev": true
+     "node_modules/delayed-stream": {
+       "version": "1.0.0",
+       "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+       "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
+       "dev": true,
+       "engines": {
+         "node": ">=0.4.0"
+       }
      },
-     "node_modules/composer": {
-       "version": "4.1.0",
-       "resolved": "https://registry.npmjs.org/composer/-/composer-4.1.0.tgz",
-       "integrity": "sha512-qIIoNYjwFHrQFUdB8kD3pZs30+JeYK9149EpOYr/NVrii00KMO31IonzZMeRSU4qazyWZpEgVzkBmQ6VFWxedA==",
+     "node_modules/depd": {
+       "version": "1.1.2",
+       "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
+       "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=",
        "dev": true,
-       "dependencies": {
-         "pretty-time": "^1.1.0",
-         "use": "^3.1.1"
-       },
        "engines": {
-         "node": ">=8"
+         "node": ">= 0.6"
        }
      },
-     "node_modules/concat-map": {
-       "version": "0.0.1",
-       "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
-       "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
+     "node_modules/destroy": {
+       "version": "1.0.4",
+       "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
+       "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=",
        "dev": true
      },
-     "node_modules/concat-stream": {
-       "version": "1.6.2",
-       "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
-       "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
-       "dev": true,
-       "engines": [
-         "node >= 0.8"
-       ],
-       "dependencies": {
-         "buffer-from": "^1.0.0",
-         "inherits": "^2.0.3",
-         "readable-stream": "^2.2.2",
-         "typedarray": "^0.0.6"
-       }
+     "node_modules/detect-browser": {
+       "version": "5.2.0",
+       "resolved": "https://registry.npmjs.org/detect-browser/-/detect-browser-5.2.0.tgz",
+       "integrity": "sha512-tr7XntDAu50BVENgQfajMLzacmSe34D+qZc4zjnniz0ZVuw/TZcLcyxHQjYpJTM36sGEkZZlYLnIM1hH7alTMA==",
+       "dev": true
      },
-     "node_modules/configstore": {
-       "version": "5.0.1",
-       "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz",
-       "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==",
+     "node_modules/diff": {
+       "version": "5.0.0",
+       "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz",
+       "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==",
        "dev": true,
-       "dependencies": {
-         "dot-prop": "^5.2.0",
-         "graceful-fs": "^4.1.2",
-         "make-dir": "^3.0.0",
-         "unique-string": "^2.0.0",
-         "write-file-atomic": "^3.0.0",
-         "xdg-basedir": "^4.0.0"
-       },
        "engines": {
-         "node": ">=8"
+         "node": ">=0.3.1"
        }
      },
-     "node_modules/configstore/node_modules/make-dir": {
-       "version": "3.1.0",
-       "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
-       "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
+     "node_modules/dir-glob": {
+       "version": "3.0.1",
+       "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
+       "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
        "dev": true,
        "dependencies": {
-         "semver": "^6.0.0"
+         "path-type": "^4.0.0"
        },
        "engines": {
          "node": ">=8"
-       },
-       "funding": {
-         "url": "https://github.com/sponsors/sindresorhus"
        }
      },
-     "node_modules/content-disposition": {
-       "version": "0.5.3",
-       "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz",
-       "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==",
+     "node_modules/doctrine": {
+       "version": "3.0.0",
+       "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
+       "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
        "dev": true,
        "dependencies": {
-         "safe-buffer": "5.1.2"
+         "esutils": "^2.0.2"
        },
        "engines": {
-         "node": ">= 0.6"
+         "node": ">=6.0.0"
        }
      },
-     "node_modules/content-type": {
-       "version": "1.0.4",
-       "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
-       "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==",
+     "node_modules/dom-storage": {
+       "version": "2.1.0",
+       "resolved": "https://registry.npmjs.org/dom-storage/-/dom-storage-2.1.0.tgz",
+       "integrity": "sha512-g6RpyWXzl0RR6OTElHKBl7nwnK87GUyZMYC7JWsB/IA73vpqK2K6LT39x4VepLxlSsWBFrPVLnsSR5Jyty0+2Q==",
        "dev": true,
        "engines": {
-         "node": ">= 0.6"
+         "node": "*"
        }
      },
-     "node_modules/convert-source-map": {
-       "version": "1.7.0",
-       "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz",
-       "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==",
+     "node_modules/domexception": {
+       "version": "2.0.1",
+       "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz",
+       "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==",
        "dev": true,
        "dependencies": {
-         "safe-buffer": "~5.1.1"
-       }
-     },
-     "node_modules/cookie": {
-       "version": "0.4.0",
-       "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz",
-       "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==",
-       "dev": true,
+         "webidl-conversions": "^5.0.0"
+       },
        "engines": {
-         "node": ">= 0.6"
+         "node": ">=8"
        }
      },
-     "node_modules/cookie-signature": {
-       "version": "1.0.6",
-       "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
-       "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=",
-       "dev": true
-     },
-     "node_modules/copy-descriptor": {
-       "version": "0.1.1",
-       "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
-       "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=",
+     "node_modules/domexception/node_modules/webidl-conversions": {
+       "version": "5.0.0",
+       "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz",
+       "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==",
        "dev": true,
        "engines": {
-         "node": ">=0.10.0"
+         "node": ">=8"
        }
      },
-     "node_modules/copy-props": {
-       "version": "2.0.4",
-       "resolved": "https://registry.npmjs.org/copy-props/-/copy-props-2.0.4.tgz",
-       "integrity": "sha512-7cjuUME+p+S3HZlbllgsn2CDwS+5eCCX16qBgNC4jgSTf49qR1VKy/Zhl400m0IQXl/bPGEVqncgUUMjrr4s8A==",
+     "node_modules/dot-prop": {
+       "version": "5.3.0",
+       "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz",
+       "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==",
        "dev": true,
        "dependencies": {
-         "each-props": "^1.3.0",
-         "is-plain-object": "^2.0.1"
+         "is-obj": "^2.0.0"
+       },
+       "engines": {
+         "node": ">=8"
        }
      },
-     "node_modules/core-js-compat": {
-       "version": "3.9.1",
-       "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.9.1.tgz",
-       "integrity": "sha512-jXAirMQxrkbiiLsCx9bQPJFA6llDadKMpYrBJQJ3/c4/vsPP/fAf29h24tviRlvwUL6AmY5CHLu2GvjuYviQqA==",
-       "dev": true,
-       "dependencies": {
-         "browserslist": "^4.16.3",
-         "semver": "7.0.0"
-       },
-       "funding": {
-         "type": "opencollective",
-         "url": "https://opencollective.com/core-js"
-       }
-     },
-     "node_modules/core-js-compat/node_modules/semver": {
-       "version": "7.0.0",
-       "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz",
-       "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==",
-       "dev": true,
-       "bin": {
-         "semver": "bin/semver.js"
-       }
+     "node_modules/duplexer": {
+       "version": "0.1.2",
+       "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz",
+       "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==",
+       "dev": true
      },
-     "node_modules/core-util-is": {
-       "version": "1.0.2",
-       "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
-       "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
+     "node_modules/duplexer3": {
+       "version": "0.1.4",
+       "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz",
+       "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=",
        "dev": true
      },
-     "node_modules/cross-spawn": {
-       "version": "6.0.5",
-       "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
-       "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
+     "node_modules/ecc-jsbn": {
+       "version": "0.1.2",
+       "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
+       "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
        "dev": true,
        "dependencies": {
-         "nice-try": "^1.0.4",
-         "path-key": "^2.0.1",
-         "semver": "^5.5.0",
-         "shebang-command": "^1.2.0",
-         "which": "^1.2.9"
-       },
-       "engines": {
-         "node": ">=4.8"
-       }
-     },
-     "node_modules/cross-spawn/node_modules/semver": {
-       "version": "5.7.1",
-       "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
-       "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
-       "dev": true,
-       "bin": {
-         "semver": "bin/semver"
+         "jsbn": "~0.1.0",
+         "safer-buffer": "^2.1.0"
        }
      },
-     "node_modules/crypto-random-string": {
-       "version": "2.0.0",
-       "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz",
-       "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==",
-       "dev": true,
-       "engines": {
-         "node": ">=8"
-       }
+     "node_modules/ee-first": {
+       "version": "1.1.1",
+       "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
+       "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=",
+       "dev": true
      },
-     "node_modules/cssom": {
-       "version": "0.4.4",
-       "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz",
-       "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==",
+     "node_modules/electron-to-chromium": {
 -      "version": "1.3.702",
 -      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.702.tgz",
 -      "integrity": "sha512-qJVUKFWQnF6wP7MmTngDkmm8/KPzaiTXNFOAg5j7DSa6J7kPou7mTBqC8jpUOxauQWwHR3pn4dMRdV8IE1xdtA==",
++      "version": "1.3.705",
++      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.705.tgz",
++      "integrity": "sha512-agtrL5vLSOIK89sE/YSzAgqCw76eZ60gf3J7Tid5RfLbSp5H4nWL28/dIV+H+ZhNNi1JNiaF62jffwYsAyXc0g==",
        "dev": true
      },
-     "node_modules/cssstyle": {
-       "version": "2.3.0",
-       "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz",
-       "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==",
+     "node_modules/elegant-spinner": {
+       "version": "1.0.1",
+       "resolved": "https://registry.npmjs.org/elegant-spinner/-/elegant-spinner-1.0.1.tgz",
+       "integrity": "sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4=",
        "dev": true,
-       "dependencies": {
-         "cssom": "~0.3.6"
-       },
        "engines": {
-         "node": ">=8"
+         "node": ">=0.10.0"
        }
      },
-     "node_modules/cssstyle/node_modules/cssom": {
-       "version": "0.3.8",
-       "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz",
-       "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==",
+     "node_modules/emoji-regex": {
+       "version": "8.0.0",
+       "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+       "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
        "dev": true
      },
-     "node_modules/currently-unhandled": {
-       "version": "0.4.1",
-       "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
-       "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=",
+     "node_modules/encodeurl": {
+       "version": "1.0.2",
+       "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
+       "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=",
        "dev": true,
-       "dependencies": {
-         "array-find-index": "^1.0.1"
-       },
        "engines": {
-         "node": ">=0.10.0"
+         "node": ">= 0.8"
        }
      },
-     "node_modules/d": {
-       "version": "1.0.1",
-       "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz",
-       "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==",
+     "node_modules/end-of-stream": {
+       "version": "1.4.4",
+       "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
+       "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
        "dev": true,
        "dependencies": {
-         "es5-ext": "^0.10.50",
-         "type": "^1.0.1"
+         "once": "^1.4.0"
        }
      },
-     "node_modules/dargs": {
-       "version": "7.0.0",
-       "resolved": "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz",
-       "integrity": "sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==",
+     "node_modules/enquirer": {
+       "version": "2.3.6",
+       "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz",
+       "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==",
        "dev": true,
+       "dependencies": {
+         "ansi-colors": "^4.1.1"
+       },
        "engines": {
-         "node": ">=8"
+         "node": ">=8.6"
        }
      },
-     "node_modules/dashdash": {
-       "version": "1.14.1",
-       "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
-       "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
+     "node_modules/escalade": {
+       "version": "3.1.1",
+       "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
+       "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
        "dev": true,
-       "dependencies": {
-         "assert-plus": "^1.0.0"
-       },
        "engines": {
-         "node": ">=0.10"
+         "node": ">=6"
        }
      },
-     "node_modules/data-urls": {
-       "version": "2.0.0",
-       "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz",
-       "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==",
+     "node_modules/escape-goat": {
+       "version": "2.1.1",
+       "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz",
+       "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==",
        "dev": true,
-       "dependencies": {
-         "abab": "^2.0.3",
-         "whatwg-mimetype": "^2.3.0",
-         "whatwg-url": "^8.0.0"
-       },
        "engines": {
-         "node": ">=10"
+         "node": ">=8"
        }
      },
-     "node_modules/dateformat": {
-       "version": "1.0.12",
-       "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.12.tgz",
-       "integrity": "sha1-nxJLZ1lMk3/3BpMuSmQsyo27/uk=",
+     "node_modules/escape-html": {
+       "version": "1.0.3",
+       "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
+       "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=",
+       "dev": true
+     },
+     "node_modules/escape-string-regexp": {
+       "version": "1.0.5",
+       "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+       "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
        "dev": true,
-       "dependencies": {
-         "get-stdin": "^4.0.1",
-         "meow": "^3.3.0"
-       },
-       "bin": {
-         "dateformat": "bin/cli.js"
-       },
        "engines": {
-         "node": "*"
+         "node": ">=0.8.0"
        }
      },
-     "node_modules/debug": {
-       "version": "4.3.1",
-       "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz",
-       "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==",
+     "node_modules/escodegen": {
+       "version": "2.0.0",
+       "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz",
+       "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==",
        "dev": true,
        "dependencies": {
-         "ms": "2.1.2"
+         "esprima": "^4.0.1",
+         "estraverse": "^5.2.0",
+         "esutils": "^2.0.2",
 -        "optionator": "^0.8.1"
++        "optionator": "^0.8.1",
++        "source-map": "~0.6.1"
+       },
+       "bin": {
+         "escodegen": "bin/escodegen.js",
+         "esgenerate": "bin/esgenerate.js"
        },
        "engines": {
          "node": ">=6.0"
@@@ -6864,401 -5155,410 +5158,411 @@@
          "node": ">=8"
        }
      },
-     "node_modules/loud-rejection": {
-       "version": "1.6.0",
-       "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz",
-       "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=",
+     "node_modules/joi": {
+       "version": "17.4.0",
+       "resolved": "https://registry.npmjs.org/joi/-/joi-17.4.0.tgz",
+       "integrity": "sha512-F4WiW2xaV6wc1jxete70Rw4V/VuMd6IN+a5ilZsxG4uYtUXWu2kq9W5P2dz30e7Gmw8RCbY/u/uk+dMPma9tAg==",
        "dev": true,
        "dependencies": {
-         "currently-unhandled": "^0.4.1",
-         "signal-exit": "^3.0.0"
-       },
-       "engines": {
-         "node": ">=0.10.0"
+         "@hapi/hoek": "^9.0.0",
+         "@hapi/topo": "^5.0.0",
+         "@sideway/address": "^4.1.0",
+         "@sideway/formula": "^3.0.0",
+         "@sideway/pinpoint": "^2.0.0"
        }
      },
-     "node_modules/lowercase-keys": {
-       "version": "1.0.1",
-       "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz",
-       "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==",
-       "dev": true,
-       "engines": {
-         "node": ">=0.10.0"
-       }
-     },
-     "node_modules/magic-string": {
-       "version": "0.25.7",
-       "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz",
-       "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==",
-       "dev": true,
-       "dependencies": {
-         "sourcemap-codec": "^1.4.4"
-       }
+     "node_modules/js-tokens": {
+       "version": "4.0.0",
+       "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+       "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+       "dev": true
      },
-     "node_modules/make-dir": {
-       "version": "2.1.0",
-       "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
-       "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
+     "node_modules/js-yaml": {
+       "version": "3.14.1",
+       "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
+       "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
        "dev": true,
        "dependencies": {
-         "pify": "^4.0.1",
-         "semver": "^5.6.0"
+         "argparse": "^1.0.7",
+         "esprima": "^4.0.0"
        },
-       "engines": {
-         "node": ">=6"
-       }
-     },
-     "node_modules/make-dir/node_modules/semver": {
-       "version": "5.7.1",
-       "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
-       "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
-       "dev": true,
        "bin": {
-         "semver": "bin/semver"
+         "js-yaml": "bin/js-yaml.js"
        }
      },
-     "node_modules/make-error": {
-       "version": "1.3.6",
-       "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz",
-       "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==",
+     "node_modules/jsbn": {
+       "version": "0.1.1",
+       "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
+       "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
        "dev": true
      },
-     "node_modules/make-error-cause": {
-       "version": "1.2.2",
-       "resolved": "https://registry.npmjs.org/make-error-cause/-/make-error-cause-1.2.2.tgz",
-       "integrity": "sha1-3wOI/NCzeBbf8KX7gQiTl3fcvJ0=",
-       "dev": true,
-       "dependencies": {
-         "make-error": "^1.2.0"
-       }
-     },
-     "node_modules/make-iterator": {
-       "version": "1.0.1",
-       "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz",
-       "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==",
+     "node_modules/jsdom": {
+       "version": "16.5.2",
+       "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.5.2.tgz",
+       "integrity": "sha512-JxNtPt9C1ut85boCbJmffaQ06NBnzkQY/MWO3YxPW8IWS38A26z+B1oBvA9LwKrytewdfymnhi4UNH3/RAgZrg==",
        "dev": true,
        "dependencies": {
-         "kind-of": "^6.0.2"
+         "abab": "^2.0.5",
+         "acorn": "^8.1.0",
+         "acorn-globals": "^6.0.0",
+         "cssom": "^0.4.4",
+         "cssstyle": "^2.3.0",
+         "data-urls": "^2.0.0",
+         "decimal.js": "^10.2.1",
+         "domexception": "^2.0.1",
+         "escodegen": "^2.0.0",
+         "html-encoding-sniffer": "^2.0.1",
+         "is-potential-custom-element-name": "^1.0.0",
+         "nwsapi": "^2.2.0",
+         "parse5": "6.0.1",
+         "request": "^2.88.2",
+         "request-promise-native": "^1.0.9",
+         "saxes": "^5.0.1",
+         "symbol-tree": "^3.2.4",
+         "tough-cookie": "^4.0.0",
+         "w3c-hr-time": "^1.0.2",
+         "w3c-xmlserializer": "^2.0.0",
+         "webidl-conversions": "^6.1.0",
+         "whatwg-encoding": "^1.0.5",
+         "whatwg-mimetype": "^2.3.0",
+         "whatwg-url": "^8.5.0",
+         "ws": "^7.4.4",
+         "xml-name-validator": "^3.0.0"
        },
        "engines": {
-         "node": ">=0.10.0"
-       }
-     },
-     "node_modules/make-iterator/node_modules/kind-of": {
-       "version": "6.0.3",
-       "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
-       "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
-       "dev": true,
-       "engines": {
-         "node": ">=0.10.0"
-       }
-     },
-     "node_modules/map-cache": {
-       "version": "0.2.2",
-       "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
-       "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=",
-       "dev": true,
-       "engines": {
-         "node": ">=0.10.0"
+         "node": ">=10"
+       },
+       "peerDependencies": {
+         "canvas": "^2.5.0"
+       },
+       "peerDependenciesMeta": {
+         "canvas": {
+           "optional": true
+         }
        }
      },
-     "node_modules/map-obj": {
-       "version": "1.0.1",
-       "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
-       "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
+     "node_modules/jsdom-worker": {
+       "version": "0.2.1",
+       "resolved": "https://registry.npmjs.org/jsdom-worker/-/jsdom-worker-0.2.1.tgz",
+       "integrity": "sha512-LwGtjkIfbDObphy4lUJmmAmo5cM/WS8r1A61apecFeqkjUvOhhinxM8wQFS51ndR+6jXxzAX3bhxMOG3njckaw==",
        "dev": true,
-       "engines": {
-         "node": ">=0.10.0"
+       "dependencies": {
+         "mitt": "^1.1.3",
+         "uuid-v4": "^0.1.0"
+       },
+       "peerDependencies": {
+         "node-fetch": "*"
        }
      },
-     "node_modules/map-visit": {
-       "version": "1.0.0",
-       "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
-       "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=",
+     "node_modules/jsdom/node_modules/acorn": {
+       "version": "8.1.0",
+       "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.1.0.tgz",
+       "integrity": "sha512-LWCF/Wn0nfHOmJ9rzQApGnxnvgfROzGilS8936rqN/lfcYkY9MYZzdMqN+2NJ4SlTc+m5HiSa+kNfDtI64dwUA==",
        "dev": true,
-       "dependencies": {
-         "object-visit": "^1.0.0"
+       "bin": {
+         "acorn": "bin/acorn"
        },
        "engines": {
-         "node": ">=0.10.0"
+         "node": ">=0.4.0"
        }
      },
-     "node_modules/matchdep": {
-       "version": "2.0.0",
-       "resolved": "https://registry.npmjs.org/matchdep/-/matchdep-2.0.0.tgz",
-       "integrity": "sha1-xvNINKDY28OzfCfui7yyfHd1WC4=",
+     "node_modules/jsdom/node_modules/tough-cookie": {
+       "version": "4.0.0",
+       "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz",
+       "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==",
        "dev": true,
        "dependencies": {
-         "findup-sync": "^2.0.0",
-         "micromatch": "^3.0.4",
-         "resolve": "^1.4.0",
-         "stack-trace": "0.0.10"
+         "psl": "^1.1.33",
+         "punycode": "^2.1.1",
+         "universalify": "^0.1.2"
        },
        "engines": {
-         "node": ">= 0.10.0"
+         "node": ">=6"
        }
      },
-     "node_modules/matchdep/node_modules/define-property": {
-       "version": "2.0.2",
-       "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
-       "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
+     "node_modules/jsdom/node_modules/universalify": {
+       "version": "0.1.2",
+       "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
+       "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
        "dev": true,
-       "dependencies": {
-         "is-descriptor": "^1.0.2",
-         "isobject": "^3.0.1"
-       },
        "engines": {
-         "node": ">=0.10.0"
+         "node": ">= 4.0.0"
        }
      },
-     "node_modules/matchdep/node_modules/extend-shallow": {
-       "version": "3.0.2",
-       "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
-       "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
+     "node_modules/jsesc": {
+       "version": "2.5.2",
+       "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
+       "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
        "dev": true,
-       "dependencies": {
-         "assign-symbols": "^1.0.0",
-         "is-extendable": "^1.0.1"
+       "bin": {
+         "jsesc": "bin/jsesc"
        },
        "engines": {
-         "node": ">=0.10.0"
+         "node": ">=4"
        }
      },
-     "node_modules/matchdep/node_modules/findup-sync": {
-       "version": "2.0.0",
-       "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz",
-       "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=",
+     "node_modules/json-buffer": {
+       "version": "3.0.0",
+       "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz",
+       "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=",
+       "dev": true
+     },
+     "node_modules/json-schema": {
+       "version": "0.2.3",
+       "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
+       "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=",
+       "dev": true
+     },
+     "node_modules/json-schema-traverse": {
+       "version": "0.4.1",
+       "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+       "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+       "dev": true
+     },
+     "node_modules/json-stable-stringify-without-jsonify": {
+       "version": "1.0.1",
+       "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
+       "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
+       "dev": true
+     },
+     "node_modules/json-stringify-safe": {
+       "version": "5.0.1",
+       "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
+       "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
+       "dev": true
+     },
+     "node_modules/json5": {
+       "version": "2.2.0",
+       "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz",
+       "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==",
        "dev": true,
        "dependencies": {
-         "detect-file": "^1.0.0",
-         "is-glob": "^3.1.0",
-         "micromatch": "^3.0.4",
-         "resolve-dir": "^1.0.1"
+         "minimist": "^1.2.5"
+       },
+       "bin": {
+         "json5": "lib/cli.js"
        },
        "engines": {
-         "node": ">= 0.10"
+         "node": ">=6"
        }
      },
-     "node_modules/matchdep/node_modules/is-accessor-descriptor": {
-       "version": "1.0.0",
-       "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
-       "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+     "node_modules/jsonfile": {
+       "version": "6.1.0",
+       "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
+       "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
        "dev": true,
        "dependencies": {
-         "kind-of": "^6.0.0"
++        "graceful-fs": "^4.1.6",
+         "universalify": "^2.0.0"
        },
-       "engines": {
-         "node": ">=0.10.0"
+       "optionalDependencies": {
+         "graceful-fs": "^4.1.6"
        }
      },
-     "node_modules/matchdep/node_modules/is-data-descriptor": {
-       "version": "1.0.0",
-       "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
-       "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+     "node_modules/jsprim": {
+       "version": "1.4.1",
+       "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
+       "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
        "dev": true,
+       "engines": [
+         "node >=0.6.0"
+       ],
        "dependencies": {
-         "kind-of": "^6.0.0"
-       },
-       "engines": {
-         "node": ">=0.10.0"
+         "assert-plus": "1.0.0",
+         "extsprintf": "1.3.0",
+         "json-schema": "0.2.3",
+         "verror": "1.10.0"
        }
      },
-     "node_modules/matchdep/node_modules/is-descriptor": {
-       "version": "1.0.2",
-       "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
-       "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+     "node_modules/just-extend": {
+       "version": "4.1.1",
+       "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.1.1.tgz",
+       "integrity": "sha512-aWgeGFW67BP3e5181Ep1Fv2v8z//iBJfrvyTnq8wG86vEESwmonn1zPBJ0VfmT9CJq2FIT0VsETtrNFm2a+SHA==",
+       "dev": true
+     },
+     "node_modules/keyv": {
+       "version": "3.1.0",
+       "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz",
+       "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==",
        "dev": true,
        "dependencies": {
-         "is-accessor-descriptor": "^1.0.0",
-         "is-data-descriptor": "^1.0.0",
-         "kind-of": "^6.0.2"
-       },
-       "engines": {
-         "node": ">=0.10.0"
+         "json-buffer": "3.0.0"
        }
      },
-     "node_modules/matchdep/node_modules/is-extendable": {
-       "version": "1.0.1",
-       "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
-       "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+     "node_modules/latest-version": {
+       "version": "5.1.0",
+       "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz",
+       "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==",
        "dev": true,
        "dependencies": {
-         "is-plain-object": "^2.0.4"
+         "package-json": "^6.3.0"
        },
        "engines": {
-         "node": ">=0.10.0"
+         "node": ">=8"
        }
      },
-     "node_modules/matchdep/node_modules/is-glob": {
-       "version": "3.1.0",
-       "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
-       "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
+     "node_modules/lazy-ass": {
+       "version": "1.6.0",
+       "resolved": "https://registry.npmjs.org/lazy-ass/-/lazy-ass-1.6.0.tgz",
+       "integrity": "sha1-eZllXoZGwX8In90YfRUNMyTVRRM=",
        "dev": true,
-       "dependencies": {
-         "is-extglob": "^2.1.0"
-       },
        "engines": {
-         "node": ">=0.10.0"
+         "node": "> 0.8"
        }
      },
-     "node_modules/matchdep/node_modules/kind-of": {
-       "version": "6.0.3",
-       "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
-       "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
+     "node_modules/levn": {
+       "version": "0.4.1",
+       "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
+       "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
        "dev": true,
+       "dependencies": {
+         "prelude-ls": "^1.2.1",
+         "type-check": "~0.4.0"
+       },
        "engines": {
-         "node": ">=0.10.0"
+         "node": ">= 0.8.0"
        }
      },
-     "node_modules/matchdep/node_modules/micromatch": {
-       "version": "3.1.10",
-       "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
-       "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+     "node_modules/listr": {
+       "version": "0.14.3",
+       "resolved": "https://registry.npmjs.org/listr/-/listr-0.14.3.tgz",
+       "integrity": "sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA==",
        "dev": true,
        "dependencies": {
-         "arr-diff": "^4.0.0",
-         "array-unique": "^0.3.2",
-         "braces": "^2.3.1",
-         "define-property": "^2.0.2",
-         "extend-shallow": "^3.0.2",
-         "extglob": "^2.0.4",
-         "fragment-cache": "^0.2.1",
-         "kind-of": "^6.0.2",
-         "nanomatch": "^1.2.9",
-         "object.pick": "^1.3.0",
-         "regex-not": "^1.0.0",
-         "snapdragon": "^0.8.1",
-         "to-regex": "^3.0.2"
+         "@samverschueren/stream-to-observable": "^0.3.0",
+         "is-observable": "^1.1.0",
+         "is-promise": "^2.1.0",
+         "is-stream": "^1.1.0",
+         "listr-silent-renderer": "^1.1.1",
+         "listr-update-renderer": "^0.5.0",
+         "listr-verbose-renderer": "^0.5.0",
+         "p-map": "^2.0.0",
+         "rxjs": "^6.3.3"
        },
        "engines": {
-         "node": ">=0.10.0"
+         "node": ">=6"
        }
      },
-     "node_modules/media-typer": {
-       "version": "0.3.0",
-       "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
-       "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=",
+     "node_modules/listr-silent-renderer": {
+       "version": "1.1.1",
+       "resolved": "https://registry.npmjs.org/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz",
+       "integrity": "sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4=",
        "dev": true,
        "engines": {
-         "node": ">= 0.6"
+         "node": ">=4"
        }
      },
-     "node_modules/meow": {
-       "version": "3.7.0",
-       "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
-       "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=",
+     "node_modules/listr-update-renderer": {
+       "version": "0.5.0",
+       "resolved": "https://registry.npmjs.org/listr-update-renderer/-/listr-update-renderer-0.5.0.tgz",
+       "integrity": "sha512-tKRsZpKz8GSGqoI/+caPmfrypiaq+OQCbd+CovEC24uk1h952lVj5sC7SqyFUm+OaJ5HN/a1YLt5cit2FMNsFA==",
        "dev": true,
        "dependencies": {
-         "camelcase-keys": "^2.0.0",
-         "decamelize": "^1.1.2",
-         "loud-rejection": "^1.0.0",
-         "map-obj": "^1.0.1",
-         "minimist": "^1.1.3",
-         "normalize-package-data": "^2.3.4",
-         "object-assign": "^4.0.1",
-         "read-pkg-up": "^1.0.1",
-         "redent": "^1.0.0",
-         "trim-newlines": "^1.0.0"
+         "chalk": "^1.1.3",
+         "cli-truncate": "^0.2.1",
+         "elegant-spinner": "^1.0.1",
+         "figures": "^1.7.0",
+         "indent-string": "^3.0.0",
+         "log-symbols": "^1.0.2",
+         "log-update": "^2.3.0",
+         "strip-ansi": "^3.0.1"
        },
        "engines": {
-         "node": ">=0.10.0"
+         "node": ">=6"
+       },
+       "peerDependencies": {
+         "listr": "^0.14.2"
        }
      },
-     "node_modules/merge-descriptors": {
-       "version": "1.0.1",
-       "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
-       "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=",
-       "dev": true
-     },
-     "node_modules/merge-stream": {
-       "version": "2.0.0",
-       "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
-       "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
-       "dev": true
-     },
-     "node_modules/merge2": {
-       "version": "1.4.1",
-       "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
-       "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+     "node_modules/listr-update-renderer/node_modules/ansi-regex": {
+       "version": "2.1.1",
+       "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+       "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
        "dev": true,
        "engines": {
-         "node": ">= 8"
+         "node": ">=0.10.0"
        }
      },
-     "node_modules/methods": {
-       "version": "1.1.2",
-       "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
-       "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=",
+     "node_modules/listr-update-renderer/node_modules/ansi-styles": {
+       "version": "2.2.1",
+       "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+       "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
        "dev": true,
        "engines": {
-         "node": ">= 0.6"
+         "node": ">=0.10.0"
        }
      },
-     "node_modules/micromatch": {
-       "version": "4.0.2",
-       "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz",
-       "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==",
+     "node_modules/listr-update-renderer/node_modules/chalk": {
+       "version": "1.1.3",
+       "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+       "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
        "dev": true,
        "dependencies": {
-         "braces": "^3.0.1",
-         "picomatch": "^2.0.5"
+         "ansi-styles": "^2.2.1",
+         "escape-string-regexp": "^1.0.2",
+         "has-ansi": "^2.0.0",
+         "strip-ansi": "^3.0.0",
+         "supports-color": "^2.0.0"
        },
        "engines": {
-         "node": ">=8"
+         "node": ">=0.10.0"
        }
      },
-     "node_modules/micromatch/node_modules/braces": {
-       "version": "3.0.2",
-       "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
-       "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+     "node_modules/listr-update-renderer/node_modules/log-symbols": {
+       "version": "1.0.2",
+       "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz",
+       "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=",
        "dev": true,
        "dependencies": {
-         "fill-range": "^7.0.1"
+         "chalk": "^1.0.0"
        },
        "engines": {
-         "node": ">=8"
+         "node": ">=0.10.0"
        }
      },
-     "node_modules/micromatch/node_modules/fill-range": {
-       "version": "7.0.1",
-       "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
-       "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+     "node_modules/listr-update-renderer/node_modules/strip-ansi": {
+       "version": "3.0.1",
+       "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+       "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
        "dev": true,
        "dependencies": {
-         "to-regex-range": "^5.0.1"
+         "ansi-regex": "^2.0.0"
        },
        "engines": {
-         "node": ">=8"
+         "node": ">=0.10.0"
        }
      },
-     "node_modules/micromatch/node_modules/is-number": {
-       "version": "7.0.0",
-       "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
-       "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+     "node_modules/listr-update-renderer/node_modules/supports-color": {
+       "version": "2.0.0",
+       "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+       "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
        "dev": true,
        "engines": {
-         "node": ">=0.12.0"
+         "node": ">=0.8.0"
        }
      },
-     "node_modules/micromatch/node_modules/to-regex-range": {
-       "version": "5.0.1",
-       "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
-       "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+     "node_modules/listr-verbose-renderer": {
+       "version": "0.5.0",
+       "resolved": "https://registry.npmjs.org/listr-verbose-renderer/-/listr-verbose-renderer-0.5.0.tgz",
+       "integrity": "sha512-04PDPqSlsqIOaaaGZ+41vq5FejI9auqTInicFRndCBgE3bXG8D6W1I+mWhk+1nqbHmyhla/6BUrd5OSiHwKRXw==",
        "dev": true,
        "dependencies": {
-         "is-number": "^7.0.0"
+         "chalk": "^2.4.1",
+         "cli-cursor": "^2.1.0",
+         "date-fns": "^1.27.2",
+         "figures": "^2.0.0"
        },
        "engines": {
-         "node": ">=8.0"
+         "node": ">=4"
        }
      },
-     "node_modules/mime": {
-       "version": "1.6.0",
-       "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
-       "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+     "node_modules/listr-verbose-renderer/node_modules/cli-cursor": {
+       "version": "2.1.0",
+       "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
+       "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=",
        "dev": true,
-       "bin": {
-         "mime": "cli.js"
+       "dependencies": {
+         "restore-cursor": "^2.0.0"
        },
        "engines": {
          "node": ">=4"
@@@ -9920,21 -7346,66 +7350,72 @@@
        }
      },
      "node_modules/rollup": {
-       "version": "2.41.2",
-       "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.41.2.tgz",
-       "integrity": "sha512-6u8fJJXJx6fmvKrAC9DHYZgONvSkz8S9b/VFBjoQ6dkKdHyPpPbpqiNl2Bao9XBzDHpq672X6sGZ9G1ZBqAHMg==",
+       "version": "2.44.0",
+       "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.44.0.tgz",
+       "integrity": "sha512-rGSF4pLwvuaH/x4nAS+zP6UNn5YUDWf/TeEU5IoXSZKBbKRNTCI3qMnYXKZgrC0D2KzS2baiOZt1OlqhMu5rnQ==",
        "dev": true,
 +      "dependencies": {
 +        "fsevents": "~2.3.1"
 +      },
        "bin": {
          "rollup": "dist/bin/rollup"
        },
        "engines": {
-         "node": ">=10.0.0"
-       },
-       "optionalDependencies": {
-         "fsevents": "~2.3.1"
+         "node": ">=10.0.0"
+       },
+       "optionalDependencies": {
+         "fsevents": "~2.3.1"
+       }
+     },
+     "node_modules/rollup-plugin-copy": {
+       "version": "3.4.0",
+       "resolved": "https://registry.npmjs.org/rollup-plugin-copy/-/rollup-plugin-copy-3.4.0.tgz",
+       "integrity": "sha512-rGUmYYsYsceRJRqLVlE9FivJMxJ7X6jDlP79fmFkL8sJs7VVMSVyA2yfyL+PGyO/vJs4A87hwhgVfz61njI+uQ==",
+       "dev": true,
+       "dependencies": {
+         "@types/fs-extra": "^8.0.1",
+         "colorette": "^1.1.0",
+         "fs-extra": "^8.1.0",
+         "globby": "10.0.1",
+         "is-plain-object": "^3.0.0"
+       },
+       "engines": {
+         "node": ">=8.3"
+       }
+     },
+     "node_modules/rollup-plugin-copy/node_modules/fs-extra": {
+       "version": "8.1.0",
+       "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
+       "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
+       "dev": true,
+       "dependencies": {
+         "graceful-fs": "^4.2.0",
+         "jsonfile": "^4.0.0",
+         "universalify": "^0.1.0"
+       },
+       "engines": {
+         "node": ">=6 <7 || >=8"
+       }
+     },
+     "node_modules/rollup-plugin-copy/node_modules/jsonfile": {
+       "version": "4.0.0",
+       "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
+       "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
+       "dev": true,
++      "dependencies": {
++        "graceful-fs": "^4.1.6"
++      },
+       "optionalDependencies": {
+         "graceful-fs": "^4.1.6"
+       }
+     },
+     "node_modules/rollup-plugin-copy/node_modules/universalify": {
+       "version": "0.1.2",
+       "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
+       "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
+       "dev": true,
+       "engines": {
+         "node": ">= 4.0.0"
        }
      },
      "node_modules/rollup-plugin-license": {
@@@ -10840,54 -8006,49 +8016,49 @@@
        "dev": true
      },
      "node_modules/table": {
-       "version": "5.4.6",
-       "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz",
-       "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==",
+       "version": "6.0.9",
+       "resolved": "https://registry.npmjs.org/table/-/table-6.0.9.tgz",
+       "integrity": "sha512-F3cLs9a3hL1Z7N4+EkSscsel3z55XT950AvB05bwayrNg5T1/gykXtigioTAjbltvbMSJvvhFCbnf6mX+ntnJQ==",
        "dev": true,
        "dependencies": {
-         "ajv": "^6.10.2",
-         "lodash": "^4.17.14",
-         "slice-ansi": "^2.1.0",
-         "string-width": "^3.0.0"
+         "ajv": "^8.0.1",
+         "is-boolean-object": "^1.1.0",
+         "is-number-object": "^1.0.4",
+         "is-string": "^1.0.5",
+         "lodash.clonedeep": "^4.5.0",
+         "lodash.flatten": "^4.4.0",
+         "lodash.truncate": "^4.4.2",
+         "slice-ansi": "^4.0.0",
+         "string-width": "^4.2.0"
        },
        "engines": {
-         "node": ">=6.0.0"
-       }
-     },
-     "node_modules/table/node_modules/emoji-regex": {
-       "version": "7.0.3",
-       "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
-       "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
-       "dev": true
-     },
-     "node_modules/table/node_modules/is-fullwidth-code-point": {
-       "version": "2.0.0",
-       "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
-       "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
-       "dev": true,
-       "engines": {
-         "node": ">=4"
+         "node": ">=10.0.0"
        }
      },
-     "node_modules/table/node_modules/string-width": {
-       "version": "3.1.0",
-       "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
-       "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+     "node_modules/table/node_modules/ajv": {
 -      "version": "8.0.1",
 -      "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.0.1.tgz",
 -      "integrity": "sha512-46ZA4TalFcLLqX1dEU3dhdY38wAtDydJ4e7QQTVekLUTzXkb1LfqU6VOBXC/a9wiv4T094WURqJH6ZitF92Kqw==",
++      "version": "8.0.3",
++      "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.0.3.tgz",
++      "integrity": "sha512-Df6NAivu9KpZw+q8ySijAgLvr1mUA5ihkRvCLCxpdYR21ann5yIuN+PpFxmweSj7i3yjJ0x5LN5KVs0RRzskAQ==",
        "dev": true,
        "dependencies": {
-         "emoji-regex": "^7.0.1",
-         "is-fullwidth-code-point": "^2.0.0",
-         "strip-ansi": "^5.1.0"
+         "fast-deep-equal": "^3.1.1",
+         "json-schema-traverse": "^1.0.0",
+         "require-from-string": "^2.0.2",
+         "uri-js": "^4.2.2"
        },
-       "engines": {
-         "node": ">=6"
+       "funding": {
+         "type": "github",
+         "url": "https://github.com/sponsors/epoberezkin"
        }
      },
-     "node_modules/term-size": {
-       "version": "2.2.1",
-       "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz",
-       "integrity": "sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==",
+     "node_modules/table/node_modules/ansi-styles": {
+       "version": "4.3.0",
+       "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+       "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
        "dev": true,
+       "dependencies": {
+         "color-convert": "^2.0.1"
+       },
        "engines": {
          "node": ">=8"
        },
@@@ -14509,25 -10978,15 +10988,15 @@@
        "dev": true
      },
      "camelcase": {
-       "version": "2.1.1",
-       "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
-       "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=",
+       "version": "5.3.1",
+       "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
+       "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
        "dev": true
      },
-     "camelcase-keys": {
-       "version": "2.1.0",
-       "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz",
-       "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=",
-       "dev": true,
-       "requires": {
-         "camelcase": "^2.0.0",
-         "map-obj": "^1.0.0"
-       }
-     },
      "caniuse-lite": {
-       "version": "1.0.30001199",
-       "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001199.tgz",
-       "integrity": "sha512-ifbK2eChUCFUwGhlEzIoVwzFt1+iriSjyKKFYNfv6hN34483wyWpLLavYQXhnR036LhkdUYaSDpHg1El++VgHQ==",
 -      "version": "1.0.30001204",
 -      "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001204.tgz",
 -      "integrity": "sha512-JUdjWpcxfJ9IPamy2f5JaRDCaqJOxDzOSKtbdx4rH9VivMd1vIzoPumsJa9LoMIi4Fx2BV2KZOxWhNkBjaYivQ==",
++      "version": "1.0.30001205",
++      "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001205.tgz",
++      "integrity": "sha512-TL1GrS5V6LElbitPazidkBMD9sa448bQDDLrumDqaggmKFcuU2JW1wTOHJPukAcOMtEmLcmDJEzfRrf+GjM0Og==",
        "dev": true
      },
      "caseless": {
@@@ -14923,26 -11330,10 +11340,10 @@@
        "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=",
        "dev": true
      },
-     "copy-descriptor": {
-       "version": "0.1.1",
-       "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
-       "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=",
-       "dev": true
-     },
-     "copy-props": {
-       "version": "2.0.4",
-       "resolved": "https://registry.npmjs.org/copy-props/-/copy-props-2.0.4.tgz",
-       "integrity": "sha512-7cjuUME+p+S3HZlbllgsn2CDwS+5eCCX16qBgNC4jgSTf49qR1VKy/Zhl400m0IQXl/bPGEVqncgUUMjrr4s8A==",
-       "dev": true,
-       "requires": {
-         "each-props": "^1.3.0",
-         "is-plain-object": "^2.0.1"
-       }
-     },
      "core-js-compat": {
--      "version": "3.9.1",
--      "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.9.1.tgz",
--      "integrity": "sha512-jXAirMQxrkbiiLsCx9bQPJFA6llDadKMpYrBJQJ3/c4/vsPP/fAf29h24tviRlvwUL6AmY5CHLu2GvjuYviQqA==",
++      "version": "3.10.0",
++      "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.10.0.tgz",
++      "integrity": "sha512-9yVewub2MXNYyGvuLnMHcN1k9RkvB7/ofktpeKTIaASyB88YYqGzUnu0ywMMhJrDHOMiTjSHWGzR+i7Wb9Z1kQ==",
        "dev": true,
        "requires": {
          "browserslist": "^4.16.3",
@@@ -15333,9 -11721,15 +11731,15 @@@
        "dev": true
      },
      "electron-to-chromium": {
-       "version": "1.3.687",
-       "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.687.tgz",
-       "integrity": "sha512-IpzksdQNl3wdgkzf7dnA7/v10w0Utf1dF2L+B4+gKrloBrxCut+au+kky3PYvle3RMdSxZP+UiCZtLbcYRxSNQ==",
 -      "version": "1.3.702",
 -      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.702.tgz",
 -      "integrity": "sha512-qJVUKFWQnF6wP7MmTngDkmm8/KPzaiTXNFOAg5j7DSa6J7kPou7mTBqC8jpUOxauQWwHR3pn4dMRdV8IE1xdtA==",
++      "version": "1.3.705",
++      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.705.tgz",
++      "integrity": "sha512-agtrL5vLSOIK89sE/YSzAgqCw76eZ60gf3J7Tid5RfLbSp5H4nWL28/dIV+H+ZhNNi1JNiaF62jffwYsAyXc0g==",
+       "dev": true
+     },
+     "elegant-spinner": {
+       "version": "1.0.1",
+       "resolved": "https://registry.npmjs.org/elegant-spinner/-/elegant-spinner-1.0.1.tgz",
+       "integrity": "sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4=",
        "dev": true
      },
      "emoji-regex": {
@@@ -20922,38 -15269,73 +15279,73 @@@
        "dev": true
      },
      "table": {
-       "version": "5.4.6",
-       "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz",
-       "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==",
+       "version": "6.0.9",
+       "resolved": "https://registry.npmjs.org/table/-/table-6.0.9.tgz",
+       "integrity": "sha512-F3cLs9a3hL1Z7N4+EkSscsel3z55XT950AvB05bwayrNg5T1/gykXtigioTAjbltvbMSJvvhFCbnf6mX+ntnJQ==",
        "dev": true,
        "requires": {
-         "ajv": "^6.10.2",
-         "lodash": "^4.17.14",
-         "slice-ansi": "^2.1.0",
-         "string-width": "^3.0.0"
+         "ajv": "^8.0.1",
+         "is-boolean-object": "^1.1.0",
+         "is-number-object": "^1.0.4",
+         "is-string": "^1.0.5",
+         "lodash.clonedeep": "^4.5.0",
+         "lodash.flatten": "^4.4.0",
+         "lodash.truncate": "^4.4.2",
+         "slice-ansi": "^4.0.0",
+         "string-width": "^4.2.0"
        },
        "dependencies": {
-         "emoji-regex": {
-           "version": "7.0.3",
-           "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
-           "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
+         "ajv": {
 -          "version": "8.0.1",
 -          "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.0.1.tgz",
 -          "integrity": "sha512-46ZA4TalFcLLqX1dEU3dhdY38wAtDydJ4e7QQTVekLUTzXkb1LfqU6VOBXC/a9wiv4T094WURqJH6ZitF92Kqw==",
++          "version": "8.0.3",
++          "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.0.3.tgz",
++          "integrity": "sha512-Df6NAivu9KpZw+q8ySijAgLvr1mUA5ihkRvCLCxpdYR21ann5yIuN+PpFxmweSj7i3yjJ0x5LN5KVs0RRzskAQ==",
+           "dev": true,
+           "requires": {
+             "fast-deep-equal": "^3.1.1",
+             "json-schema-traverse": "^1.0.0",
+             "require-from-string": "^2.0.2",
+             "uri-js": "^4.2.2"
+           }
+         },
+         "ansi-styles": {
+           "version": "4.3.0",
+           "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+           "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+           "dev": true,
+           "requires": {
+             "color-convert": "^2.0.1"
+           }
+         },
+         "color-convert": {
+           "version": "2.0.1",
+           "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+           "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+           "dev": true,
+           "requires": {
+             "color-name": "~1.1.4"
+           }
+         },
+         "color-name": {
+           "version": "1.1.4",
+           "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+           "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
            "dev": true
          },
-         "is-fullwidth-code-point": {
-           "version": "2.0.0",
-           "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
-           "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+         "json-schema-traverse": {
+           "version": "1.0.0",
+           "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+           "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
            "dev": true
          },
-         "string-width": {
-           "version": "3.1.0",
-           "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
-           "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+         "slice-ansi": {
+           "version": "4.0.0",
+           "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz",
+           "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==",
            "dev": true,
            "requires": {
-             "emoji-regex": "^7.0.1",
-             "is-fullwidth-code-point": "^2.0.0",
-             "strip-ansi": "^5.1.0"
+             "ansi-styles": "^4.0.0",
+             "astral-regex": "^2.0.0",
+             "is-fullwidth-code-point": "^3.0.0"
            }
          }
        }
diff --cc src/attachHandlers.js
index dbe0277,5baa201..e440c99
--- a/src/attachHandlers.js
+++ b/src/attachHandlers.js
@@@ -15,17 -15,18 +15,16 @@@
   * limitations under the License.
   */
  
 -import { logs } from './packageLogs';
  import { packageLog } from './packageLogs.js';
  import { packageIntervalLog} from './packageLogs';
 -import { sendOnRefresh } from "./sendLogs";
  
- // @todo var>let
- var events;
- var bufferBools;
- var bufferedEvents;
+ let events;
+ let bufferBools;
+ let bufferedEvents;
  //@todo: Investigate drag events and their behavior
- var intervalEvents = ['click', 'focus', 'blur', 'input', 'change', 'mouseover', 'submit'];
- var refreshEvents;
- var windowEvents = ['load', 'blur', 'focus'];
+ const intervalEvents = ['click', 'focus', 'blur', 'input', 'change', 'mouseover', 'submit'];
+ let refreshEvents;
+ const windowEvents = ['load', 'blur', 'focus'];
  
  /**
   * Maps an event to an object containing useful information.