appium-xcuitest-driver 3.56.0 → 3.56.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/build/index.js CHANGED
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.startServer = exports.default = exports.XCUITestDriver = void 0;
6
+ exports.default = exports.startServer = exports.XCUITestDriver = void 0;
7
7
 
8
8
  require("source-map-support/register");
9
9
 
@@ -6,8 +6,8 @@ Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
8
  exports.extractBundleId = extractBundleId;
9
- exports.parseLocalizableStrings = parseLocalizableStrings;
10
9
  exports.verifyApplicationPlatform = verifyApplicationPlatform;
10
+ exports.parseLocalizableStrings = parseLocalizableStrings;
11
11
 
12
12
  require("source-map-support/register");
13
13
 
@@ -5,10 +5,10 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.doesSupportKeychainApi = void 0;
9
- exports.hasCertificateLegacy = hasCertificateLegacy;
10
8
  exports.installCertificate = installCertificate;
11
9
  exports.installCertificateLegacy = installCertificateLegacy;
10
+ exports.hasCertificateLegacy = hasCertificateLegacy;
11
+ exports.doesSupportKeychainApi = void 0;
12
12
 
13
13
  require("source-map-support/register");
14
14
 
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.helpers = exports.default = exports.commands = void 0;
6
+ exports.default = exports.helpers = exports.commands = void 0;
7
7
 
8
8
  require("source-map-support/register");
9
9
 
@@ -5,8 +5,8 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.default = exports.commands = void 0;
9
8
  exports.parseCommonName = parseCommonName;
9
+ exports.default = exports.commands = void 0;
10
10
 
11
11
  require("source-map-support/register");
12
12
 
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.helpers = exports.default = exports.commands = void 0;
8
+ exports.default = exports.helpers = exports.commands = void 0;
9
9
 
10
10
  require("source-map-support/register");
11
11
 
@@ -5,8 +5,8 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.default = exports.commands = void 0;
9
8
  exports.parseContainerPath = parseContainerPath;
9
+ exports.default = exports.commands = void 0;
10
10
 
11
11
  require("source-map-support/register");
12
12
 
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.helpers = exports.default = exports.commands = void 0;
8
+ exports.default = exports.helpers = exports.commands = void 0;
9
9
 
10
10
  require("source-map-support/register");
11
11
 
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.helpers = exports.extensions = exports.default = exports.commands = void 0;
8
+ exports.default = exports.extensions = exports.helpers = exports.commands = void 0;
9
9
 
10
10
  require("source-map-support/register");
11
11
 
@@ -5,9 +5,8 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.extensions = exports.default = exports.commands = void 0;
9
8
  exports.gesturesChainToString = gesturesChainToString;
10
- exports.helpers = void 0;
9
+ exports.default = exports.commands = exports.helpers = exports.extensions = void 0;
11
10
 
12
11
  require("source-map-support/register");
13
12
 
@@ -450,4 +449,4 @@ var _default = extensions;
450
449
  exports.default = _default;require('source-map-support').install();
451
450
 
452
451
 
453
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9nZXN0dXJlLmpzIl0sIm5hbWVzIjpbIlNVUFBPUlRFRF9HRVNUVVJFX0RJUkVDVElPTlMiLCJoZWxwZXJzIiwiZXh0ZW5zaW9ucyIsImNvbW1hbmRzIiwidG9FbGVtZW50SWQiLCJvcHRzIiwiZWxlbWVudCIsImxvZyIsImluZm8iLCJlbCIsImVsZW1lbnRJZCIsInV0aWwiLCJ1bndyYXBFbGVtZW50IiwidG9FbGVtZW50T3JBcHBsaWNhdGlvbklkIiwiZHJpdmVyIiwiZmluZE5hdGl2ZUVsZW1lbnRPckVsZW1lbnRzIiwibW92ZVRvIiwieG9mZnNldCIsInlvZmZzZXQiLCJpc1dlYkNvbnRleHQiLCJ4IiwieSIsImdldExvY2F0aW9uIiwiY29vcmRzIiwiY3VyV2ViQ29vcmRzIiwiYXRvbXNFbGVtZW50IiwiZ2V0QXRvbXNFbGVtZW50IiwicmVsQ29vcmRzIiwiZXhlY3V0ZUF0b20iLCJfIiwiaXNOaWwiLCJjdXJDb29yZHMiLCJlcnJvcnMiLCJVbmtub3duRXhjZXB0aW9uIiwiZWxQb3MiLCJyZXF1aXJlRmxvYXRQYXJhbWV0ZXIiLCJwYXJhbU5hbWUiLCJwYXJhbVZhbHVlIiwibWV0aG9kTmFtZSIsImlzVW5kZWZpbmVkIiwiSW52YWxpZEFyZ3VtZW50RXJyb3IiLCJyZXN1bHQiLCJwYXJzZUZsb2F0IiwiaXNOYU4iLCJyZXF1aXJlSW50UGFyYW1ldGVyIiwicGFyc2VJbnQiLCJtb2JpbGVTaGFrZSIsImlzU2ltdWxhdG9yIiwiVW5rbm93bkVycm9yIiwiZGV2aWNlIiwic2hha2UiLCJjbGljayIsIm5hdGl2ZUNsaWNrIiwic2V0dGluZ3MiLCJnZXRTZXR0aW5ncyIsIm5hdGl2ZVdlYlRhcCIsIm5hdGl2ZVdlYlRhcFN0cmljdCIsImRlYnVnIiwiZ2VzdHVyZXNDaGFpblRvU3RyaW5nIiwiZ2VzdHVyZXMiLCJrZXlzVG9JbmNsdWRlIiwibWFwIiwiaXRlbSIsIm90aGVyS2V5cyIsImRpZmZlcmVuY2UiLCJrZXlzIiwiaXNBcnJheSIsImludGVyc2VjdGlvbiIsImxlbmd0aCIsImFjdGlvbiIsImlzUGxhaW5PYmplY3QiLCJKU09OIiwic3RyaW5naWZ5Iiwiam9pbiIsInBlcmZvcm1BY3Rpb25zIiwiYWN0aW9ucyIsInByZXByb2Nlc3NlZEFjdGlvbnMiLCJPYmplY3QiLCJhc3NpZ24iLCJ0eXBlIiwicGFyYW1ldGVycyIsInBvaW50ZXJUeXBlIiwibW9kaWZpZWRBY3Rpb24iLCJjbG9uZSIsImZpbHRlciIsImlubmVyQWN0aW9uIiwiZHVyYXRpb24iLCJwcm94eUNvbW1hbmQiLCJyZWxlYXNlQWN0aW9ucyIsIndhcm4iLCJwZXJmb3JtVG91Y2giLCJlIiwiZXJyb3JBbmRUaHJvdyIsIm1lc3NhZ2UiLCJwZXJmb3JtTXVsdGlBY3Rpb24iLCJpIiwiZW5kcG9pbnQiLCJtb2JpbGVTY3JvbGwiLCJuYW1lIiwiZGlyZWN0aW9uIiwicHJlZGljYXRlU3RyaW5nIiwidG9WaXNpYmxlIiwiZGlzdGFuY2UiLCJwYXJhbXMiLCJpbmNsdWRlcyIsInRvTG93ZXIiLCJtb2JpbGVTd2lwZSIsInZlbG9jaXR5IiwibW9iaWxlUGluY2giLCJzY2FsZSIsIm1vYmlsZURvdWJsZVRhcCIsIm1vYmlsZVR3b0ZpbmdlclRhcCIsIm1vYmlsZVRvdWNoQW5kSG9sZCIsIm1vYmlsZVRhcCIsIm1vYmlsZURyYWdGcm9tVG9Gb3JEdXJhdGlvbiIsImZyb21YIiwiZnJvbVkiLCJ0b1giLCJ0b1kiLCJtb2JpbGVUYXBXaXRoTnVtYmVyT2ZUYXBzIiwibnVtYmVyT2ZUYXBzIiwibnVtYmVyT2ZUb3VjaGVzIiwibW9iaWxlU2VsZWN0UGlja2VyV2hlZWxWYWx1ZSIsImlzU3RyaW5nIiwib3JkZXIiLCJ0b0xvd2VyQ2FzZSIsIm9mZnNldCIsIm1vYmlsZVJvdGF0ZUVsZW1lbnQiLCJyb3RhdGlvbiIsImdldENvb3JkaW5hdGVzIiwiZ2VzdHVyZSIsImNvb3JkaW5hdGVzIiwiYXJlT2Zmc2V0cyIsIm9wdGlvblgiLCJvcHRpb25zIiwib3B0aW9uWSIsInJlY3QiLCJnZXRFbGVtZW50UmVjdCIsInBvcyIsInNpemUiLCJ3Iiwid2lkdGgiLCJoIiwiaGVpZ2h0Iiwib2Zmc2V0WCIsIm9mZnNldFkiLCJhcHBseU1vdmVUb09mZnNldCIsImZpcnN0Q29vcmRpbmF0ZXMiLCJzZWNvbmRDb29yZGluYXRlcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUVBLE1BQU1BLDRCQUE0QixHQUFHLENBQUMsSUFBRCxFQUFPLE1BQVAsRUFBZSxNQUFmLEVBQXVCLE9BQXZCLENBQXJDO0FBRUEsTUFBTUMsT0FBTyxHQUFHLEVBQWhCO0FBQUEsTUFBb0JDLFVBQVUsR0FBRyxFQUFqQztBQUFBLE1BQXFDQyxRQUFRLEdBQUcsRUFBaEQ7Ozs7O0FBRUEsU0FBU0MsV0FBVCxDQUFzQkMsSUFBSSxHQUFHLEVBQTdCLEVBQWlDO0FBQy9CLE1BQUlBLElBQUksQ0FBQ0MsT0FBVCxFQUFrQjtBQUNoQkMsb0JBQUlDLElBQUosQ0FBVSwrRUFBVjtBQUNEOztBQUNELFFBQU1DLEVBQUUsR0FBR0osSUFBSSxDQUFDSyxTQUFMLElBQWtCTCxJQUFJLENBQUNDLE9BQWxDO0FBQ0EsU0FBT0csRUFBRSxHQUFHRSxvQkFBS0MsYUFBTCxDQUFtQkgsRUFBbkIsQ0FBSCxHQUE0QixJQUFyQztBQUNEOztBQUVELGVBQWVJLHdCQUFmLENBQXlDQyxNQUF6QyxFQUFpRFQsSUFBSSxHQUFHLEVBQXhELEVBQTREO0FBQzFELFNBQU9ELFdBQVcsQ0FBQ0MsSUFBRCxDQUFYLElBQ0ZNLG9CQUFLQyxhQUFMLENBQW1CLE1BQU1FLE1BQU0sQ0FBQ0MsMkJBQVAsQ0FBb0MsWUFBcEMsRUFBa0QsNEJBQWxELEVBQStFLEtBQS9FLENBQXpCLENBREw7QUFFRDs7QUFFRFosUUFBUSxDQUFDYSxNQUFULEdBQWtCLGVBQWVBLE1BQWYsQ0FBdUJQLEVBQXZCLEVBQTJCUSxPQUFPLEdBQUcsQ0FBckMsRUFBd0NDLE9BQU8sR0FBRyxDQUFsRCxFQUFxRDtBQUNyRVQsRUFBQUEsRUFB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QUNDLE1BQVAsQ0FBYzVFLFVBQWQsRUFBMEJELE9BQTFCLEVBQW1DRSxRQUFuQztlQUVlRCxVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXJyb3JzIH0gZnJvbSAnYXBwaXVtLWJhc2UtZHJpdmVyJztcbmltcG9ydCB7IHV0aWwgfSBmcm9tICdhcHBpdW0tc3VwcG9ydCc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IGxvZyBmcm9tICcuLi9sb2dnZXInO1xuXG5jb25zdCBTVVBQT1JURURfR0VTVFVSRV9ESVJFQ1RJT05TID0gWyd1cCcsICdkb3duJywgJ2xlZnQnLCAncmlnaHQnXTtcblxuY29uc3QgaGVscGVycyA9IHt9LCBleHRlbnNpb25zID0ge30sIGNvbW1hbmRzID0ge307XG5cbmZ1bmN0aW9uIHRvRWxlbWVudElkIChvcHRzID0ge30pIHtcbiAgaWYgKG9wdHMuZWxlbWVudCkge1xuICAgIGxvZy5pbmZvKGBUaGUgJ2VsZW1lbnQnIGFyZ3VtZW50IG5hbWUgaXMgZGVwcmVjYXRlZC4gQ29uc2lkZXIgdXNpbmcgJ2VsZW1lbnRJZCcgaW5zdGVhZGApO1xuICB9XG4gIGNvbnN0IGVsID0gb3B0cy5lbGVtZW50SWQgfHwgb3B0cy5lbGVtZW50O1xuICByZXR1cm4gZWwgPyB1dGlsLnVud3JhcEVsZW1lbnQoZWwpIDogbnVsbDtcbn1cblxuYXN5bmMgZnVuY3Rpb24gdG9FbGVtZW50T3JBcHBsaWNhdGlvbklkIChkcml2ZXIsIG9wdHMgPSB7fSkge1xuICByZXR1cm4gdG9FbGVtZW50SWQob3B0cylcbiAgICB8fCB1dGlsLnVud3JhcEVsZW1lbnQoYXdhaXQgZHJpdmVyLmZpbmROYXRpdmVFbGVtZW50T3JFbGVtZW50cyhgY2xhc3MgbmFtZWAsIGBYQ1VJRWxlbWVudFR5cGVBcHBsaWNhdGlvbmAsIGZhbHNlKSk7XG59XG5cbmNvbW1hbmRzLm1vdmVUbyA9IGFzeW5jIGZ1bmN0aW9uIG1vdmVUbyAoZWwsIHhvZmZzZXQgPSAwLCB5b2Zmc2V0ID0gMCkge1xuICBlbCA9IHV0aWwudW53cmFwRWxlbWVudChlbCk7XG5cbiAgaWYgKHRoaXMuaXNXZWJDb250ZXh0KCkpIHtcbiAgICBsZXQge3gsIHl9ID0gYXdhaXQgdGhpcy5nZXRMb2NhdGlvbihlbCk7XG4gICAgbGV0IGNvb3JkcyA9IHtcbiAgICAgIHg6IHggKyB4b2Zmc2V0LFxuICAgICAgeTogeSArIHlvZmZzZXRcbiAgICB9O1xuICAgIHRoaXMuY3VyV2ViQ29vcmRzID0gY29vcmRzO1xuICAgIGxldCBhdG9tc0VsZW1lbnQgPSB0aGlzLmdldEF0b21zRWxlbWVudChlbCk7XG4gICAgbGV0IHJlbENvb3JkcyA9IHt4OiB4b2Zmc2V0LCB5OiB5b2Zmc2V0fTtcbiAgICBhd2FpdCB0aGlzLmV4ZWN1dGVBdG9tKCdtb3ZlX21vdXNlJywgW2F0b21zRWxlbWVudCwgcmVsQ29vcmRzXSk7XG4gIH0gZWxzZSB7XG4gICAgaWYgKF8uaXNOaWwoZWwpKSB7XG4gICAgICBpZiAoIXRoaXMuY3VyQ29vcmRzKSB7XG4gICAgICAgIHRocm93IG5ldyBlcnJvcnMuVW5rbm93bkV4Y2VwdGlvbihcbiAgICAgICAgICAnQ3VycmVudCBjdXJzb3IgcG9zaXRpb24gdW5rbm93biwgcGxlYXNlIHVzZSBtb3ZlVG8gd2l0aCBhbiBlbGVtZW50IHRoZSBmaXJzdCB0aW1lLicpO1xuICAgICAgfVxuICAgICAgdGhpcy5jdXJDb29yZHMgPSB7XG4gICAgICAgIHg6IHRoaXMuY3VyQ29vcmRzLnggKyB4b2Zmc2V0LFxuICAgICAgICB5OiB0aGlzLmN1ckNvb3Jkcy55ICsgeW9mZnNldFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IGVsUG9zID0gYXdhaXQgdGhpcy5nZXRMb2NhdGlvbihlbCk7XG4gICAgICB0aGlzLmN1ckNvb3JkcyA9IHtcbiAgICAgICAgeDogZWxQb3MueCArIHhvZmZzZXQsXG4gICAgICAgIHk6IGVsUG9zLnkgKyB5b2Zmc2V0XG4gICAgICB9O1xuICAgIH1cbiAgfVxufTtcblxuZnVuY3Rpb24gcmVxdWlyZUZsb2F0UGFyYW1ldGVyIChwYXJhbU5hbWUsIHBhcmFtVmFsdWUsIG1ldGhvZE5hbWUpIHtcbiAgaWYgKF8uaXNVbmRlZmluZWQocGFyYW1WYWx1ZSkpIHtcbiAgICB0aHJvdyBuZXcgZXJyb3JzLkludmFsaWRBcmd1bWVudEVycm9yKGBcIiR7cGFyYW1OYW1lfVwiIHBhcmFtZXRlciBpcyBtYW5kYXRvcnkgZm9yIFwiJHttZXRob2ROYW1lfVwiIGNhbGxgKTtcbiAgfVxuICBjb25zdCByZXN1bHQgPSBwYXJzZUZsb2F0KHBhcmFtVmFsdWUpO1xuICBpZiAoaXNOYU4ocmVzdWx0KSkge1xuICAgIHRocm93IG5ldyBlcnJvcnMuSW52YWxpZEFyZ3VtZW50RXJyb3IoYFwiJHtwYXJhbU5hbWV9XCIgcGFyYW1ldGVyIHNob3VsZCBiZSBhIHZhbGlkIG51bWJlci4gXCIke3BhcmFtVmFsdWV9XCIgaXMgZ2l2ZW4gaW5zdGVhZGApO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIHJlcXVpcmVJbnRQYXJhbWV0ZXIgKHBhcmFtTmFtZSwgcGFyYW1WYWx1ZSwgbWV0aG9kTmFtZSkge1xuICBpZiAoXy5pc1VuZGVmaW5lZChwYXJhbVZhbHVlKSkge1xuICAgIHRocm93IG5ldyBlcnJvcnMuSW52YWxpZEFyZ3VtZW50RXJyb3IoYFwiJHtwYXJhbU5hbWV9XCIgcGFyYW1ldGVyIGlzIG1hbmRhdG9yeSBmb3IgXCIke21ldGhvZE5hbWV9XCIgY2FsbGApO1xuICB9XG4gIGNvbnN0IHJlc3VsdCA9IHBhcnNlSW50KHBhcmFtVmFsdWUsIDEwKTtcbiAgaWYgKGlzTmFOKHJlc3VsdCkpIHtcbiAgICB0aHJvdyBuZXcgZXJyb3JzLkludmFsaWRBcmd1bWVudEVycm9yKGBcIiR7cGFyYW1OYW1lfVwiIHBhcmFtZXRlciBzaG91bGQgYmUgYSB2YWxpZCBpbnRlZ2VyLiBcIiR7cGFyYW1WYWx1ZX1cIiBpcyBnaXZlbiBpbnN0ZWFkYCk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuY29tbWFuZHMubW9iaWxlU2hha2UgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVTaGFrZSAoKSB7XG4gIGlmICghdGhpcy5pc1NpbXVsYXRvcigpKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5Vbmtub3duRXJyb3IoJ1NoYWtlIGlzIG5vdCBzdXBwb3J0ZWQgb24gcmVhbCBkZXZpY2VzJyk7XG4gIH1cbiAgYXdhaXQgdGhpcy5vcHRzLmRldmljZS5zaGFrZSgpO1xufTtcblxuY29tbWFuZHMuY2xpY2sgPSBhc3luYyBmdW5jdGlvbiBjbGljayAoZWwpIHtcbiAgaWYgKCF0aGlzLmlzV2ViQ29udGV4dCgpKSB7XG4gICAgLy8gdGhlcmUgYXJlIG11bHRpcGxlIGNvbW1hbmRzIHRoYXQgbWFwIGhlcmUsIHNvIG1hbnVhbGx5IHByb3h5XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMubmF0aXZlQ2xpY2soZWwpO1xuICB9XG4gIGVsID0gdXRpbC51bndyYXBFbGVtZW50KGVsKTtcbiAgaWYgKChhd2FpdCB0aGlzLnNldHRpbmdzLmdldFNldHRpbmdzKCkpLm5hdGl2ZVdlYlRhcCB8fCAoYXdhaXQgdGhpcy5zZXR0aW5ncy5nZXRTZXR0aW5ncygpKS5uYXRpdmVXZWJUYXBTdHJpY3QpIHtcbiAgICAvLyBhdG9tcy1iYXNlZCBjbGlja3MgZG9uJ3QgYWx3YXlzIHdvcmsgaW4gc2FmYXJpIDdcbiAgICBsb2cuZGVidWcoJ1VzaW5nIG5hdGl2ZSB3ZWIgdGFwJyk7XG4gICAgYXdhaXQgdGhpcy5uYXRpdmVXZWJUYXAoZWwpO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IGF0b21zRWxlbWVudCA9IHRoaXMuZ2V0QXRvbXNFbGVtZW50KGVsKTtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5leGVjdXRlQXRvbSgnY2xpY2snLCBbYXRvbXNFbGVtZW50XSk7XG4gIH1cbn07XG5cbmZ1bmN0aW9uIGdlc3R1cmVzQ2hhaW5Ub1N0cmluZyAoZ2VzdHVyZXMsIGtleXNUb0luY2x1ZGUgPSBbJ29wdGlvbnMnXSkge1xuICByZXR1cm4gZ2VzdHVyZXMubWFwKChpdGVtKSA9PiB7XG4gICAgbGV0IG90aGVyS2V5cyA9IF8uZGlmZmVyZW5jZShfLmtleXMoaXRlbSksIFsnYWN0aW9uJ10pO1xuICAgIG90aGVyS2V5cyA9IF8uaXNBcnJheShrZXlzVG9JbmNsdWRlKSA/IF8uaW50ZXJzZWN0aW9uKG90aGVyS2V5cywga2V5c1RvSW5jbHVkZSkgOiBvdGhlcktleXM7XG4gICAgaWYgKG90aGVyS2V5cy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBgJHtpdGVtLmFjdGlvbn1gICtcbiAgICAgICAgYCgke18ubWFwKG90aGVyS2V5cywgKHgpID0+IHggKyAnPScgKyAoXy5pc1BsYWluT2JqZWN0KGl0ZW1beF0pID8gSlNPTi5zdHJpbmdpZnkoaXRlbVt4XSkgOiBpdGVtW3hdKSkuam9pbignLCAnKX0pYDtcbiAgICB9XG4gICAgcmV0dXJuIGl0ZW0uYWN0aW9uO1xuICB9KS5qb2luKCctJyk7XG59XG5cbmNvbW1hbmRzLnBlcmZvcm1BY3Rpb25zID0gYXN5bmMgZnVuY3Rpb24gcGVyZm9ybUFjdGlvbnMgKGFjdGlvbnMpIHtcbiAgbG9nLmRlYnVnKGBSZWNlaXZlZCB0aGUgZm9sbG93aW5nIFczQyBhY3Rpb25zOiAke0pTT04uc3RyaW5naWZ5KGFjdGlvbnMsIG51bGwsICcgICcpfWApO1xuICAvLyBUaGlzIGlzIG1hbmRhdG9yeSwgc2luY2UgV0RBIG9ubHkgc3VwcG9ydHMgVE9VQ0ggcG9pbnRlciB0eXBlXG4gIC8vIGFuZCBTZWxlbml1bSBBUEkgdXNlcyBNT1VTRSBhcyB0aGUgZGVmYXVsdCBvbmVcbiAgY29uc3QgcHJlcHJvY2Vzc2VkQWN0aW9ucyA9IGFjdGlvbnNcbiAgICAubWFwKChhY3Rpb24pID0+IE9iamVjdC5hc3NpZ24oe30sIGFjdGlvbiwgYWN0aW9uLnR5cGUgPT09ICdwb2ludGVyJyA/IHtcbiAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgcG9pbnRlclR5cGU6ICd0b3VjaCdcbiAgICAgIH1cbiAgICB9IDoge30pKVxuICAgIC5tYXAoKGFjdGlvbikgPT4ge1xuICAgICAgY29uc3QgbW9kaWZpZWRBY3Rpb24gPSBfLmNsb25lKGFjdGlvbikgfHwge307XG4gICAgICAvLyBTZWxlbml1bSBBUEkgdW5leHBlY3RlZGx5IGluc2VydHMgemVybyBwYXVzZXMsIHdoaWNoIGFyZSBub3Qgc3VwcG9ydGVkIGJ5IFdEQVxuICAgICAgbW9kaWZpZWRBY3Rpb24uYWN0aW9ucyA9IChhY3Rpb24uYWN0aW9ucyB8fCBbXSlcbiAgICAgICAgLmZpbHRlcigoaW5uZXJBY3Rpb24pID0+ICEoaW5uZXJBY3Rpb24udHlwZSA9PT0gJ3BhdXNlJyAmJiBpbm5lckFjdGlvbi5kdXJhdGlvbiA9PT0gMCkpO1xuICAgICAgcmV0dXJuIG1vZGlmaWVkQWN0aW9uO1xuICAgIH0pO1xuICBsb2cuZGVidWcoYFByZXByb2Nlc3NlZCBhY3Rpb25zOiAke0pTT04uc3RyaW5naWZ5KHByZXByb2Nlc3NlZEFjdGlvbnMsIG51bGwsICcgICcpfWApO1xuICByZXR1cm4gYXdhaXQgdGhpcy5wcm94eUNvbW1hbmQoJy9hY3Rpb25zJywgJ1BPU1QnLCB7YWN0aW9uczogcHJlcHJvY2Vzc2VkQWN0aW9uc30pO1xufTtcblxuY29tbWFuZHMucmVsZWFzZUFjdGlvbnMgPSBmdW5jdGlvbiByZWxlYXNlQWN0aW9ucyAoKSB7XG4gIGxvZy53YXJuKCdPbiB0aGlzIHBsYXRmb3JtLCByZWxlYXNlQWN0aW9ucyBpcyBhIG5vLW9wJyk7XG59O1xuXG5jb21tYW5kcy5wZXJmb3JtVG91Y2ggPSBhc3luYyBmdW5jdGlvbiBwZXJmb3JtVG91Y2ggKGdlc3R1cmVzKSB7XG4gIGxvZy5kZWJ1ZyhgUmVjZWl2ZWQgdGhlIGZvbGxvd2luZyB0b3VjaCBhY3Rpb246ICR7Z2VzdHVyZXNDaGFpblRvU3RyaW5nKGdlc3R1cmVzKX1gKTtcbiAgdHJ5IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5wcm94eUNvbW1hbmQoJy93ZGEvdG91Y2gvcGVyZm9ybScsICdQT1NUJywge2FjdGlvbnM6IGdlc3R1cmVzfSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBpZiAoIXRoaXMuaXNXZWJDb250ZXh0KCkpIHtcbiAgICAgIHRocm93IGU7XG4gICAgfVxuICAgIGxvZy5lcnJvckFuZFRocm93KCdUaGUgVG91Y2ggQVBJIGlzIGFpbWVkIGZvciB1c2FnZSBpbiBOQVRJVkUgY29udGV4dC4gJyArXG4gICAgICAnQ29uc2lkZXIgdXNpbmcgXCJleGVjdXRlXCIgQVBJIHdpdGggY3VzdG9tIGV2ZW50cyB0cmlnZ2VyIHNjcmlwdCAnICtcbiAgICAgIGB0byBlbXVsYXRlIHRvdWNoIGV2ZW50cyBiZWluZyBpbiBXRUJWSUVXIGNvbnRleHQuIE9yaWdpbmFsIGVycm9yOiAke2UubWVzc2FnZX1gKTtcbiAgfVxufTtcblxuY29tbWFuZHMucGVyZm9ybU11bHRpQWN0aW9uID0gYXN5bmMgZnVuY3Rpb24gcGVyZm9ybU11bHRpQWN0aW9uIChhY3Rpb25zKSB7XG4gIGxvZy5kZWJ1ZyhgUmVjZWl2ZWQgdGhlIGZvbGxvd2luZyBtdWx0aSB0b3VjaCBhY3Rpb246YCk7XG4gIGZvciAobGV0IGkgaW4gYWN0aW9ucykge1xuICAgIGxvZy5kZWJ1ZyhgICAgICR7cGFyc2VJbnQoaSwgMTApICsgMX06ICR7Xy5tYXAoYWN0aW9uc1tpXSwgJ2FjdGlvbicpLmpvaW4oJy0nKX1gKTtcbiAgfVxuICB0cnkge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLnByb3h5Q29tbWFuZCgnL3dkYS90b3VjaC9tdWx0aS9wZXJmb3JtJywgJ1BPU1QnLCB7YWN0aW9uc30pO1xuICB9IGNhdGNoIChlKSB7XG4gICAgaWYgKCF0aGlzLmlzV2ViQ29udGV4dCgpKSB7XG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgICBsb2cuZXJyb3JBbmRUaHJvdygnVGhlIE11bHRpVG91Y2ggQVBJIGlzIGFpbWVkIGZvciB1c2FnZSBpbiBOQVRJVkUgY29udGV4dC4gJyArXG4gICAgICAnQ29uc2lkZXIgdXNpbmcgXCJleGVjdXRlXCIgQVBJIHdpdGggY3VzdG9tIGV2ZW50cyB0cmlnZ2VyIHNjcmlwdCAnICtcbiAgICAgIGB0byBlbXVsYXRlIG11bHRpdG91Y2ggZXZlbnRzIGJlaW5nIGluIFdFQlZJRVcgY29udGV4dC4gT3JpZ2luYWwgZXJyb3I6ICR7ZS5tZXNzYWdlfWApO1xuICB9XG59O1xuXG5jb21tYW5kcy5uYXRpdmVDbGljayA9IGFzeW5jIGZ1bmN0aW9uIG5hdGl2ZUNsaWNrIChlbCkge1xuICBlbCA9IHV0aWwudW53cmFwRWxlbWVudChlbCk7XG4gIGxldCBlbmRwb2ludCA9IGAvZWxlbWVudC8ke2VsfS9jbGlja2A7XG4gIHJldHVybiBhd2FpdCB0aGlzLnByb3h5Q29tbWFuZChlbmRwb2ludCwgJ1BPU1QnLCB7fSk7XG59O1xuXG4vKlxuICogU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9XZWJEcml2ZXJBZ2VudC9ibG9iL21hc3Rlci9XZWJEcml2ZXJBZ2VudExpYi9Db21tYW5kcy9GQkVsZW1lbnRDb21tYW5kcy5tXG4gKiB0byBnZXQgdGhlIGluZm8gYWJvdXQgYXZhaWxhYmxlIFdEQSBnZXN0dXJlcyBBUElcbiAqXG4gKiBTZWUgaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL3JlZmVyZW5jZS94Y3Rlc3QveGN1aWVsZW1lbnQgYW5kXG4gKiBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vcmVmZXJlbmNlL3hjdGVzdC94Y3VpY29vcmRpbmF0ZSB0byBnZXQgdGhlIGRldGFpbGVkIGRlc2NyaXB0aW9uIG9mXG4gKiBhbGwgWENUZXN0IGdlc3R1cmVzXG4qL1xuXG5oZWxwZXJzLm1vYmlsZVNjcm9sbCA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZVNjcm9sbCAob3B0cyA9IHt9KSB7XG4gIC8vIFdEQSBzdXBwb3J0cyBmb3VyIHNjcm9sbGluZyBzdHJhdGVnaWVzOiBwcmVkaWNhdGlvbiBiYXNlZCBvbiBuYW1lLCBkaXJlY3Rpb24sXG4gIC8vIHByZWRpY2F0ZVN0cmluZywgYW5kIHRvVmlzaWJsZSwgaW4gdGhhdCBvcmRlclxuICBjb25zdCB7XG4gICAgbmFtZSxcbiAgICBkaXJlY3Rpb24sXG4gICAgcHJlZGljYXRlU3RyaW5nLFxuICAgIHRvVmlzaWJsZSxcbiAgICBkaXN0YW5jZSxcbiAgfSA9IG9wdHM7XG4gIGNvbnN0IHBhcmFtcyA9IHt9O1xuICBpZiAobmFtZSkge1xuICAgIHBhcmFtcy5uYW1lID0gbmFtZTtcbiAgfSBlbHNlIGlmIChkaXJlY3Rpb24pIHtcbiAgICBpZiAoIVNVUFBPUlRFRF9HRVNUVVJFX0RJUkVDVElPTlMuaW5jbHVkZXMoXy50b0xvd2VyKGRpcmVjdGlvbikpKSB7XG4gICAgICB0aHJvdyBuZXcgZXJyb3JzLkludmFsaWRBcmd1bWVudEVycm9yKGAnZGlyZWN0aW9uJyBtdXN0IGJlIG9uZSBvZjogJHtTVVBQT1JURURfR0VTVFVSRV9ESVJFQ1RJT05TfWApO1xuICAgIH1cbiAgICBwYXJhbXMuZGlyZWN0aW9uID0gZGlyZWN0aW9uO1xuICB9IGVsc2UgaWYgKHByZWRpY2F0ZVN0cmluZykge1xuICAgIHBhcmFtcy5wcmVkaWNhdGVTdHJpbmcgPSBwcmVkaWNhdGVTdHJpbmc7XG4gIH0gZWxzZSBpZiAodG9WaXNpYmxlKSB7XG4gICAgcGFyYW1zLnRvVmlzaWJsZSA9IHRvVmlzaWJsZTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgZXJyb3JzLkludmFsaWRBcmd1bWVudEVycm9yKFxuICAgICAgJ01vYmlsZSBzY3JvbGwgc3VwcG9ydHMgdGhlIGZvbGxvd2luZyBzdHJhdGVnaWVzOiBuYW1lLCBkaXJlY3Rpb24sIHByZWRpY2F0ZVN0cmluZywgYW5kIHRvVmlzaWJsZS4gJyArXG4gICAgICAnU3BlY2lmeSBvbmUgb2YgdGhlc2UnKTtcbiAgfVxuICAvLyB3ZSBjYW4gYWxzbyBvcHRpb25hbGx5IHBhc3MgYSBkaXN0YW5jZSB3aGljaCBhcHBlYXJzIHRvIGJlIGEgcmF0aW8gb2ZcbiAgLy8gc2NyZWVuIGhlaWdodCwgc28gMS4wIG1lYW5zIGEgZnVsbCBzY3JlZW4ncyB3b3J0aCBvZiBzY3JvbGxpbmdcbiAgaWYgKCFfLmlzTmlsKGRpc3RhbmNlKSkge1xuICAgIHBhcmFtcy5kaXN0YW5jZSA9IGRpc3RhbmNlO1xuICB9XG4gIGNvbnN0IGVsZW1lbnRJZCA9IGF3YWl0IHRvRWxlbWVudE9yQXBwbGljYXRpb25JZCh0aGlzLCBvcHRzKTtcbiAgcmV0dXJuIGF3YWl0IHRoaXMucHJveHlDb21tYW5kKGAvd2RhL2VsZW1lbnQvJHtlbGVtZW50SWR9L3Njcm9sbGAsICdQT1NUJywgcGFyYW1zKTtcbn07XG5cbmhlbHBlcnMubW9iaWxlU3dpcGUgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVTd2lwZSAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICBkaXJlY3Rpb24sXG4gICAgdmVsb2NpdHksXG4gIH0gPSBvcHRzO1xuICBpZiAoIVNVUFBPUlRFRF9HRVNUVVJFX0RJUkVDVElPTlMuaW5jbHVkZXMoXy50b0xvd2VyKGRpcmVjdGlvbikpKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkQXJndW1lbnRFcnJvcihgJ2RpcmVjdGlvbicgbXVzdCBiZSBvbmUgb2Y6ICR7U1VQUE9SVEVEX0dFU1RVUkVfRElSRUNUSU9OU31gKTtcbiAgfVxuICBjb25zdCBwYXJhbXMgPSB7ZGlyZWN0aW9ufTtcbiAgaWYgKCFfLmlzTmlsKHZlbG9jaXR5KSkge1xuICAgIHBhcmFtcy52ZWxvY2l0eSA9IHZlbG9jaXR5O1xuICB9XG4gIGNvbnN0IGVsZW1lbnRJZCA9IGF3YWl0IHRvRWxlbWVudE9yQXBwbGljYXRpb25JZCh0aGlzLCBvcHRzKTtcbiAgcmV0dXJuIGF3YWl0IHRoaXMucHJveHlDb21tYW5kKGAvd2RhL2VsZW1lbnQvJHtlbGVtZW50SWR9L3N3aXBlYCwgJ1BPU1QnLCBwYXJhbXMpO1xufTtcblxuaGVscGVycy5tb2JpbGVQaW5jaCA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZVBpbmNoIChvcHRzID0ge30pIHtcbiAgY29uc3QgcGFyYW1zID0ge1xuICAgIHNjYWxlOiByZXF1aXJlRmxvYXRQYXJhbWV0ZXIoJ3NjYWxlJywgb3B0cy5zY2FsZSwgJ3BpbmNoJyksXG4gICAgdmVsb2NpdHk6IHJlcXVpcmVGbG9hdFBhcmFtZXRlcigndmVsb2NpdHknLCBvcHRzLnZlbG9jaXR5LCAncGluY2gnKVxuICB9O1xuICBjb25zdCBlbGVtZW50SWQgPSBhd2FpdCB0b0VsZW1lbnRPckFwcGxpY2F0aW9uSWQodGhpcywgb3B0cyk7XG4gIHJldHVybiBhd2FpdCB0aGlzLnByb3h5Q29tbWFuZChgL3dkYS9lbGVtZW50LyR7ZWxlbWVudElkfS9waW5jaGAsICdQT1NUJywgcGFyYW1zKTtcbn07XG5cbmhlbHBlcnMubW9iaWxlRG91YmxlVGFwID0gYXN5bmMgZnVuY3Rpb24gbW9iaWxlRG91YmxlVGFwIChvcHRzID0ge30pIHtcbiAgY29uc3QgZWxlbWVudElkID0gdG9FbGVtZW50SWQob3B0cyk7XG4gIGlmIChlbGVtZW50SWQpIHtcbiAgICAvLyBEb3VibGUgdGFwIGVsZW1lbnRcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5wcm94eUNvbW1hbmQoYC93ZGEvZWxlbWVudC8ke2VsZW1lbnRJZH0vZG91YmxlVGFwYCwgJ1BPU1QnKTtcbiAgfVxuICAvLyBEb3VibGUgdGFwIGNvb3JkaW5hdGVzXG4gIGNvbnN0IHBhcmFtcyA9IHtcbiAgICB4OiByZXF1aXJlRmxvYXRQYXJhbWV0ZXIoJ3gnLCBvcHRzLngsICdkb3VibGVUYXAnKSxcbiAgICB5OiByZXF1aXJlRmxvYXRQYXJhbWV0ZXIoJ3knLCBvcHRzLnksICdkb3VibGVUYXAnKVxuICB9O1xuICByZXR1cm4gYXdhaXQgdGhpcy5wcm94eUNvbW1hbmQoJy93ZGEvZG91YmxlVGFwJywgJ1BPU1QnLCBwYXJhbXMpO1xufTtcblxuaGVscGVycy5tb2JpbGVUd29GaW5nZXJUYXAgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVUd29GaW5nZXJUYXAgKG9wdHMgPSB7fSkge1xuICBjb25zdCBlbGVtZW50SWQgPSBhd2FpdCB0b0VsZW1lbnRPckFwcGxpY2F0aW9uSWQodGhpcywgb3B0cyk7XG4gIHJldHVybiBhd2FpdCB0aGlzLnByb3h5Q29tbWFuZChgL3dkYS9lbGVtZW50LyR7ZWxlbWVudElkfS90d29GaW5nZXJUYXBgLCAnUE9TVCcpO1xufTtcblxuaGVscGVycy5tb2JpbGVUb3VjaEFuZEhvbGQgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVUb3VjaEFuZEhvbGQgKG9wdHMgPSB7fSkge1xuICBjb25zdCBwYXJhbXMgPSB7XG4gICAgZHVyYXRpb246IHJlcXVpcmVGbG9hdFBhcmFtZXRlcignZHVyYXRpb24nLCBvcHRzLmR1cmF0aW9uLCAndG91Y2hBbmRIb2xkJylcbiAgfTtcbiAgY29uc3QgZWxlbWVudElkID0gdG9FbGVtZW50SWQob3B0cyk7XG4gIGlmIChlbGVtZW50SWQpIHtcbiAgICAvLyBMb25nIHRhcCBlbGVtZW50XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMucHJveHlDb21tYW5kKGAvd2RhL2VsZW1lbnQvJHtlbGVtZW50SWR9L3RvdWNoQW5kSG9sZGAsICdQT1NUJywgcGFyYW1zKTtcbiAgfVxuICAvLyBMb25nIHRhcCBjb29yZGluYXRlc1xuICBwYXJhbXMueCA9IHJlcXVpcmVGbG9hdFBhcmFtZXRlcigneCcsIG9wdHMueCwgJ3RvdWNoQW5kSG9sZCcpO1xuICBwYXJhbXMueSA9IHJlcXVpcmVGbG9hdFBhcmFtZXRlcigneScsIG9wdHMueSwgJ3RvdWNoQW5kSG9sZCcpO1xuICByZXR1cm4gYXdhaXQgdGhpcy5wcm94eUNvbW1hbmQoJy93ZGEvdG91Y2hBbmRIb2xkJywgJ1BPU1QnLCBwYXJhbXMpO1xufTtcblxuaGVscGVycy5tb2JpbGVUYXAgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVUYXAgKG9wdHMgPSB7fSkge1xuICBjb25zdCBwYXJhbXMgPSB7XG4gICAgeDogcmVxdWlyZUZsb2F0UGFyYW1ldGVyKCd4Jywgb3B0cy54LCAndGFwJyksXG4gICAgeTogcmVxdWlyZUZsb2F0UGFyYW1ldGVyKCd5Jywgb3B0cy55LCAndGFwJylcbiAgfTtcbiAgY29uc3QgZWxlbWVudElkID0gdG9FbGVtZW50SWQob3B0cykgfHwgJzAnO1xuICByZXR1cm4gYXdhaXQgdGhpcy5wcm94eUNvbW1hbmQoYC93ZGEvdGFwLyR7ZWxlbWVudElkfWAsICdQT1NUJywgcGFyYW1zKTtcbn07XG5cbmhlbHBlcnMubW9iaWxlRHJhZ0Zyb21Ub0ZvckR1cmF0aW9uID0gYXN5bmMgZnVuY3Rpb24gbW9iaWxlRHJhZ0Zyb21Ub0ZvckR1cmF0aW9uIChvcHRzID0ge30pIHtcbiAgY29uc3QgcGFyYW1zID0ge1xuICAgIGR1cmF0aW9uOiByZXF1aXJlRmxvYXRQYXJhbWV0ZXIoJ2R1cmF0aW9uJywgb3B0cy5kdXJhdGlvbiwgJ2RyYWdGcm9tVG9Gb3JEdXJhdGlvbicpLFxuICAgIGZyb21YOiByZXF1aXJlRmxvYXRQYXJhbWV0ZXIoJ2Zyb21YJywgb3B0cy5mcm9tWCwgJ2RyYWdGcm9tVG9Gb3JEdXJhdGlvbicpLFxuICAgIGZyb21ZOiByZXF1aXJlRmxvYXRQYXJhbWV0ZXIoJ2Zyb21ZJywgb3B0cy5mcm9tWSwgJ2RyYWdGcm9tVG9Gb3JEdXJhdGlvbicpLFxuICAgIHRvWDogcmVxdWlyZUZsb2F0UGFyYW1ldGVyKCd0b1gnLCBvcHRzLnRvWCwgJ2RyYWdGcm9tVG9Gb3JEdXJhdGlvbicpLFxuICAgIHRvWTogcmVxdWlyZUZsb2F0UGFyYW1ldGVyKCd0b1knLCBvcHRzLnRvWSwgJ2RyYWdGcm9tVG9Gb3JEdXJhdGlvbicpXG4gIH07XG4gIGNvbnN0IGVsZW1lbnRJZCA9IHRvRWxlbWVudElkKG9wdHMpO1xuICByZXR1cm4gZWxlbWVudElkXG4gICAgLy8gRHJhZyBlbGVtZW50XG4gICAgPyBhd2FpdCB0aGlzLnByb3h5Q29tbWFuZChgL3dkYS9lbGVtZW50LyR7ZWxlbWVudElkfS9kcmFnZnJvbXRvZm9yZHVyYXRpb25gLCAnUE9TVCcsIHBhcmFtcylcbiAgICAvLyBEcmFnIGNvb3JkaW5hdGVzXG4gICAgOiBhd2FpdCB0aGlzLnByb3h5Q29tbWFuZCgnL3dkYS9kcmFnZnJvbXRvZm9yZHVyYXRpb24nLCAnUE9TVCcsIHBhcmFtcyk7XG59O1xuXG5oZWxwZXJzLm1vYmlsZVRhcFdpdGhOdW1iZXJPZlRhcHMgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVUYXBXaXRoTnVtYmVyT2ZUYXBzIChvcHRzID0ge30pIHtcbiAgY29uc3QgZWxlbWVudElkID0gdG9FbGVtZW50SWQob3B0cyk7XG4gIGlmICghZWxlbWVudElkKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkQXJndW1lbnRFcnJvcignRWxlbWVudCBpZCBpcyBleHBlY3RlZCB0byBiZSBzZXQgZm9yIHRhcFdpdGhOdW1iZXJPZlRhcHMgbWV0aG9kJyk7XG4gIH1cbiAgY29uc3QgcGFyYW1zID0ge1xuICAgIG51bWJlck9mVGFwczogcmVxdWlyZUludFBhcmFtZXRlcignbnVtYmVyT2ZUYXBzJywgb3B0cy5udW1iZXJPZlRhcHMsICd0YXBXaXRoTnVtYmVyT2ZUYXBzJyksXG4gICAgbnVtYmVyT2ZUb3VjaGVzOiByZXF1aXJlSW50UGFyYW1ldGVyKCdudW1iZXJPZlRvdWNoZXMnLCBvcHRzLm51bWJlck9mVG91Y2hlcywgJ3RhcFdpdGhOdW1iZXJPZlRhcHMnKSxcbiAgfTtcbiAgcmV0dXJuIGF3YWl0IHRoaXMucHJveHlDb21tYW5kKGAvd2RhL2VsZW1lbnQvJHtlbGVtZW50SWR9L3RhcFdpdGhOdW1iZXJPZlRhcHNgLCAnUE9TVCcsIHBhcmFtcyk7XG59O1xuXG5oZWxwZXJzLm1vYmlsZVNlbGVjdFBpY2tlcldoZWVsVmFsdWUgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVTZWxlY3RQaWNrZXJXaGVlbFZhbHVlIChvcHRzID0ge30pIHtcbiAgY29uc3QgZWxlbWVudElkID0gdG9FbGVtZW50SWQob3B0cyk7XG4gIGlmICghZWxlbWVudElkKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkQXJndW1lbnRFcnJvcignRWxlbWVudCBpZCBpcyBleHBlY3RlZCB0byBiZSBzZXQgZm9yIHNlbGVjdFBpY2tlcldoZWVsVmFsdWUgbWV0aG9kJyk7XG4gIH1cbiAgaWYgKCFfLmlzU3RyaW5nKG9wdHMub3JkZXIpIHx8ICFbJ25leHQnLCAncHJldmlvdXMnXS5pbmNsdWRlcyhvcHRzLm9yZGVyLnRvTG93ZXJDYXNlKCkpKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkQXJndW1lbnRFcnJvcihgVGhlIG1hbmRhdG9yeSAnb3JkZXInIHBhcmFtZXRlciBpcyBleHBlY3RlZCB0byBiZSBlcXVhbCBlaXRoZXIgdG8gJ25leHQnIG9yICdwcmV2aW91cycuIGAgK1xuICAgICAgYCcke29wdHMub3JkZXJ9JyBpcyBnaXZlbiBpbnN0ZWFkYCk7XG4gIH1cbiAgY29uc3QgcGFyYW1zID0ge29yZGVyOiBvcHRzLm9yZGVyfTtcbiAgaWYgKG9wdHMub2Zmc2V0KSB7XG4gICAgcGFyYW1zLm9mZnNldCA9IHJlcXVpcmVGbG9hdFBhcmFtZXRlcignb2Zmc2V0Jywgb3B0cy5vZmZzZXQsICdzZWxlY3RQaWNrZXJXaGVlbFZhbHVlJyk7XG4gIH1cbiAgcmV0dXJuIGF3YWl0IHRoaXMucHJveHlDb21tYW5kKGAvd2RhL3BpY2tlcndoZWVsLyR7ZWxlbWVudElkfS9zZWxlY3RgLCAnUE9TVCcsIHBhcmFtcyk7XG59O1xuXG5oZWxwZXJzLm1vYmlsZVJvdGF0ZUVsZW1lbnQgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVSb3RhdGVFbGVtZW50IChvcHRzID0ge30pIHtcbiAgY29uc3QgZWxlbWVudElkID0gdG9FbGVtZW50SWQob3B0cyk7XG4gIGlmICghZWxlbWVudElkKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkQXJndW1lbnRFcnJvcignRWxlbWVudCBpZCBpcyBleHBlY3RlZCB0byBiZSBzZXQgZm9yIHJvdGF0ZUVsZW1lbnQgbWV0aG9kJyk7XG4gIH1cbiAgY29uc3QgcGFyYW1zID0ge1xuICAgIHJvdGF0aW9uOiByZXF1aXJlRmxvYXRQYXJhbWV0ZXIoJ3JvdGF0aW9uJywgb3B0cy5yb3RhdGlvbiwgJ3JvdGF0ZUVsZW1lbnQnKSxcbiAgICB2ZWxvY2l0eTogcmVxdWlyZUZsb2F0UGFyYW1ldGVyKCd2ZWxvY2l0eScsIG9wdHMudmVsb2NpdHksICdyb3RhdGVFbGVtZW50JyksXG4gIH07XG4gIHJldHVybiBhd2FpdCB0aGlzLnByb3h5Q29tbWFuZChgL3dkYS9lbGVtZW50LyR7ZWxlbWVudElkfS9yb3RhdGVgLCAnUE9TVCcsIHBhcmFtcyk7XG59O1xuXG5oZWxwZXJzLmdldENvb3JkaW5hdGVzID0gYXN5bmMgZnVuY3Rpb24gZ2V0Q29vcmRpbmF0ZXMgKGdlc3R1cmUpIHtcbiAgLy8gZGVmYXVsdHNcbiAgbGV0IGNvb3JkaW5hdGVzID0ge3g6IDAsIHk6IDAsIGFyZU9mZnNldHM6IGZhbHNlfTtcblxuICBsZXQgb3B0aW9uWCA9IG51bGw7XG4gIGlmIChnZXN0dXJlLm9wdGlvbnMueCkge1xuICAgIG9wdGlvblggPSByZXF1aXJlRmxvYXRQYXJhbWV0ZXIoJ3gnLCBnZXN0dXJlLm9wdGlvbnMueCwgJ2dldENvb3JkaW5hdGVzJyk7XG4gIH1cbiAgbGV0IG9wdGlvblkgPSBudWxsO1xuICBpZiAoZ2VzdHVyZS5vcHRpb25zLnkpIHtcbiAgICBvcHRpb25ZID0gcmVxdWlyZUZsb2F0UGFyYW1ldGVyKCd5JywgZ2VzdHVyZS5vcHRpb25zLnksICdnZXRDb29yZGluYXRlcycpO1xuICB9XG5cbiAgLy8gZmlndXJlIG91dCB0aGUgZWxlbWVudCBjb29yZGluYXRlcy5cbiAgY29uc3QgZWxlbWVudElkID0gdG9FbGVtZW50SWQoZ2VzdHVyZS5vcHRpb25zKTtcbiAgaWYgKGVsZW1lbnRJZCkge1xuICAgIGxldCByZWN0ID0gYXdhaXQgdGhpcy5nZXRFbGVtZW50UmVjdChlbGVtZW50SWQpO1xuICAgIGxldCBwb3MgPSB7eDogcmVjdC54LCB5OiByZWN0Lnl9O1xuICAgIGxldCBzaXplID0ge3c6IHJlY3Qud2lkdGgsIGg6IHJlY3QuaGVpZ2h0fTtcblxuICAgIC8vIGRlZmF1bHRzXG4gICAgbGV0IG9mZnNldFggPSAwO1xuICAgIGxldCBvZmZzZXRZID0gMDtcblxuICAgIC8vIGdldCB0aGUgcmVhbCBvZmZzZXRzXG4gICAgaWYgKG9wdGlvblggfHwgb3B0aW9uWSkge1xuICAgICAgb2Zmc2V0WCA9IChvcHRpb25YIHx8IDApO1xuICAgICAgb2Zmc2V0WSA9IChvcHRpb25ZIHx8IDApO1xuICAgIH0gZWxzZSB7XG4gICAgICBvZmZzZXRYID0gKHNpemUudyAvIDIpO1xuICAgICAgb2Zmc2V0WSA9IChzaXplLmggLyAyKTtcbiAgICB9XG5cbiAgICAvLyBhcHBseSB0aGUgb2Zmc2V0c1xuICAgIGNvb3JkaW5hdGVzLnggPSBwb3MueCArIG9mZnNldFg7XG4gICAgY29vcmRpbmF0ZXMueSA9IHBvcy55ICsgb2Zmc2V0WTtcbiAgfSBlbHNlIHtcbiAgICAvLyBtb3ZlVG8gY29vcmRpbmF0ZXMgYXJlIHBhc3NlZCBpbiBhcyBvZmZzZXRzXG4gICAgY29vcmRpbmF0ZXMuYXJlT2Zmc2V0cyA9IChnZXN0dXJlLmFjdGlvbiA9PT0gJ21vdmVUbycpO1xuICAgIGNvb3JkaW5hdGVzLnggPSAob3B0aW9uWCB8fCAwKTtcbiAgICBjb29yZGluYXRlcy55ID0gKG9wdGlvblkgfHwgMCk7XG4gIH1cbiAgcmV0dXJuIGNvb3JkaW5hdGVzO1xufTtcblxuaGVscGVycy5hcHBseU1vdmVUb09mZnNldCA9IGZ1bmN0aW9uIGFwcGx5TW92ZVRvT2Zmc2V0IChmaXJzdENvb3JkaW5hdGVzLCBzZWNvbmRDb29yZGluYXRlcykge1xuICBpZiAoc2Vjb25kQ29vcmRpbmF0ZXMuYXJlT2Zmc2V0cykge1xuICAgIHJldHVybiB7XG4gICAgICB4OiBmaXJzdENvb3JkaW5hdGVzLnggKyBzZWNvbmRDb29yZGluYXRlcy54LFxuICAgICAgeTogZmlyc3RDb29yZGluYXRlcy55ICsgc2Vjb25kQ29vcmRpbmF0ZXMueSxcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBzZWNvbmRDb29yZGluYXRlcztcbiAgfVxufTtcblxuT2JqZWN0LmFzc2lnbihleHRlbnNpb25zLCBoZWxwZXJzLCBjb21tYW5kcyk7XG5leHBvcnQgeyBleHRlbnNpb25zLCBoZWxwZXJzLCBjb21tYW5kcywgZ2VzdHVyZXNDaGFpblRvU3RyaW5nIH07XG5leHBvcnQgZGVmYXVsdCBleHRlbnNpb25zO1xuIl0sImZpbGUiOiJsaWIvY29tbWFuZHMvZ2VzdHVyZS5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLiJ9
452
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9nZXN0dXJlLmpzIl0sIm5hbWVzIjpbIlNVUFBPUlRFRF9HRVNUVVJFX0RJUkVDVElPTlMiLCJoZWxwZXJzIiwiZXh0ZW5zaW9ucyIsImNvbW1hbmRzIiwidG9FbGVtZW50SWQiLCJvcHRzIiwiZWxlbWVudCIsImxvZyIsImluZm8iLCJlbCIsImVsZW1lbnRJZCIsInV0aWwiLCJ1bndyYXBFbGVtZW50IiwidG9FbGVtZW50T3JBcHBsaWNhdGlvbklkIiwiZHJpdmVyIiwiZmluZE5hdGl2ZUVsZW1lbnRPckVsZW1lbnRzIiwibW92ZVRvIiwieG9mZnNldCIsInlvZmZzZXQiLCJpc1dlYkNvbnRleHQiLCJ4IiwieSIsImdldExvY2F0aW9uIiwiY29vcmRzIiwiY3VyV2ViQ29vcmRzIiwiYXRvbXNFbGVtZW50IiwiZ2V0QXRvbXNFbGVtZW50IiwicmVsQ29vcmRzIiwiZXhlY3V0ZUF0b20iLCJfIiwiaXNOaWwiLCJjdXJDb29yZHMiLCJlcnJvcnMiLCJVbmtub3duRXhjZXB0aW9uIiwiZWxQb3MiLCJyZXF1aXJlRmxvYXRQYXJhbWV0ZXIiLCJwYXJhbU5hbWUiLCJwYXJhbVZhbHVlIiwibWV0aG9kTmFtZSIsImlzVW5kZWZpbmVkIiwiSW52YWxpZEFyZ3VtZW50RXJyb3IiLCJyZXN1bHQiLCJwYXJzZUZsb2F0IiwiaXNOYU4iLCJyZXF1aXJlSW50UGFyYW1ldGVyIiwicGFyc2VJbnQiLCJtb2JpbGVTaGFrZSIsImlzU2ltdWxhdG9yIiwiVW5rbm93bkVycm9yIiwiZGV2aWNlIiwic2hha2UiLCJjbGljayIsIm5hdGl2ZUNsaWNrIiwic2V0dGluZ3MiLCJnZXRTZXR0aW5ncyIsIm5hdGl2ZVdlYlRhcCIsIm5hdGl2ZVdlYlRhcFN0cmljdCIsImRlYnVnIiwiZ2VzdHVyZXNDaGFpblRvU3RyaW5nIiwiZ2VzdHVyZXMiLCJrZXlzVG9JbmNsdWRlIiwibWFwIiwiaXRlbSIsIm90aGVyS2V5cyIsImRpZmZlcmVuY2UiLCJrZXlzIiwiaXNBcnJheSIsImludGVyc2VjdGlvbiIsImxlbmd0aCIsImFjdGlvbiIsImlzUGxhaW5PYmplY3QiLCJKU09OIiwic3RyaW5naWZ5Iiwiam9pbiIsInBlcmZvcm1BY3Rpb25zIiwiYWN0aW9ucyIsInByZXByb2Nlc3NlZEFjdGlvbnMiLCJPYmplY3QiLCJhc3NpZ24iLCJ0eXBlIiwicGFyYW1ldGVycyIsInBvaW50ZXJUeXBlIiwibW9kaWZpZWRBY3Rpb24iLCJjbG9uZSIsImZpbHRlciIsImlubmVyQWN0aW9uIiwiZHVyYXRpb24iLCJwcm94eUNvbW1hbmQiLCJyZWxlYXNlQWN0aW9ucyIsIndhcm4iLCJwZXJmb3JtVG91Y2giLCJlIiwiZXJyb3JBbmRUaHJvdyIsIm1lc3NhZ2UiLCJwZXJmb3JtTXVsdGlBY3Rpb24iLCJpIiwiZW5kcG9pbnQiLCJtb2JpbGVTY3JvbGwiLCJuYW1lIiwiZGlyZWN0aW9uIiwicHJlZGljYXRlU3RyaW5nIiwidG9WaXNpYmxlIiwiZGlzdGFuY2UiLCJwYXJhbXMiLCJpbmNsdWRlcyIsInRvTG93ZXIiLCJtb2JpbGVTd2lwZSIsInZlbG9jaXR5IiwibW9iaWxlUGluY2giLCJzY2FsZSIsIm1vYmlsZURvdWJsZVRhcCIsIm1vYmlsZVR3b0ZpbmdlclRhcCIsIm1vYmlsZVRvdWNoQW5kSG9sZCIsIm1vYmlsZVRhcCIsIm1vYmlsZURyYWdGcm9tVG9Gb3JEdXJhdGlvbiIsImZyb21YIiwiZnJvbVkiLCJ0b1giLCJ0b1kiLCJtb2JpbGVUYXBXaXRoTnVtYmVyT2ZUYXBzIiwibnVtYmVyT2ZUYXBzIiwibnVtYmVyT2ZUb3VjaGVzIiwibW9iaWxlU2VsZWN0UGlja2VyV2hlZWxWYWx1ZSIsImlzU3RyaW5nIiwib3JkZXIiLCJ0b0xvd2VyQ2FzZSIsIm9mZnNldCIsIm1vYmlsZVJvdGF0ZUVsZW1lbnQiLCJyb3RhdGlvbiIsImdldENvb3JkaW5hdGVzIiwiZ2VzdHVyZSIsImNvb3JkaW5hdGVzIiwiYXJlT2Zmc2V0cyIsIm9wdGlvblgiLCJvcHRpb25zIiwib3B0aW9uWSIsInJlY3QiLCJnZXRFbGVtZW50UmVjdCIsInBvcyIsInNpemUiLCJ3Iiwid2lkdGgiLCJoIiwiaGVpZ2h0Iiwib2Zmc2V0WCIsIm9mZnNldFkiLCJhcHBseU1vdmVUb09mZnNldCIsImZpcnN0Q29vcmRpbmF0ZXMiLCJzZWNvbmRDb29yZGluYXRlcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUEsTUFBTUEsNEJBQTRCLEdBQUcsQ0FBQyxJQUFELEVBQU8sTUFBUCxFQUFlLE1BQWYsRUFBdUIsT0FBdkIsQ0FBckM7QUFFQSxNQUFNQyxPQUFPLEdBQUcsRUFBaEI7QUFBQSxNQUFvQkMsVUFBVSxHQUFHLEVBQWpDO0FBQUEsTUFBcUNDLFFBQVEsR0FBRyxFQUFoRDs7Ozs7QUFFQSxTQUFTQyxXQUFULENBQXNCQyxJQUFJLEdBQUcsRUFBN0IsRUFBaUM7QUFDL0IsTUFBSUEsSUFBSSxDQUFDQyxPQUFULEVBQWtCO0FBQ2hCQyxvQkFBSUMsSUFBSixDQUFVLCtFQUFWO0FBQ0Q7O0FBQ0QsUUFBTUMsRUFBRSxHQUFHSixJQUFJLENBQUNLLFNBQUwsSUFBa0JMLElBQUksQ0FBQ0MsT0FBbEM7QUFDQSxTQUFPRyxFQUFFLEdBQUdFLG9CQUFLQyxhQUFMLENBQW1CSCxFQUFuQixDQUFILEdBQTRCLElBQXJDO0FBQ0Q7O0FBRUQsZUFBZUksd0JBQWYsQ0FBeUNDLE1BQXpDLEVBQWlEVCxJQUFJLEdBQUcsRUFBeEQsRUFBNEQ7QUFDMUQsU0FBT0QsV0FBVyxDQUFDQyxJQUFELENBQVgsSUFDRk0sb0JBQUtDLGFBQUwsQ0FBbUIsTUFBTUUsTUFBTSxDQUFDQywyQkFBUCxDQUFvQyxZQUFwQyxFQUFrRCw0QkFBbEQsRUFBK0UsS0FBL0UsQ0FBekIsQ0FETDtBQUVEOztBQUVEWixRQUFRLENBQUNhLE1BQVQsR0FBa0IsZUFBZUEsTUFBZixDQUF1QlAsRUFBdkIsRUFBMkJRLE9BQU8sR0FBRyxDQUFyQyxFQUF3Q0MsT0FBTyxHQUFHLENBQWxELEVBQXFEO0FBQ3JFVCxFQUFBQSxFQUFF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Q0MsTUFBUCxDQUFjNUUsVUFBZCxFQUEwQkQsT0FBMUIsRUFBbUNFLFFBQW5DO2VBRWVELFUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBlcnJvcnMgfSBmcm9tICdhcHBpdW0tYmFzZS1kcml2ZXInO1xuaW1wb3J0IHsgdXRpbCB9IGZyb20gJ2FwcGl1bS1zdXBwb3J0JztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgbG9nIGZyb20gJy4uL2xvZ2dlcic7XG5cbmNvbnN0IFNVUFBPUlRFRF9HRVNUVVJFX0RJUkVDVElPTlMgPSBbJ3VwJywgJ2Rvd24nLCAnbGVmdCcsICdyaWdodCddO1xuXG5jb25zdCBoZWxwZXJzID0ge30sIGV4dGVuc2lvbnMgPSB7fSwgY29tbWFuZHMgPSB7fTtcblxuZnVuY3Rpb24gdG9FbGVtZW50SWQgKG9wdHMgPSB7fSkge1xuICBpZiAob3B0cy5lbGVtZW50KSB7XG4gICAgbG9nLmluZm8oYFRoZSAnZWxlbWVudCcgYXJndW1lbnQgbmFtZSBpcyBkZXByZWNhdGVkLiBDb25zaWRlciB1c2luZyAnZWxlbWVudElkJyBpbnN0ZWFkYCk7XG4gIH1cbiAgY29uc3QgZWwgPSBvcHRzLmVsZW1lbnRJZCB8fCBvcHRzLmVsZW1lbnQ7XG4gIHJldHVybiBlbCA/IHV0aWwudW53cmFwRWxlbWVudChlbCkgOiBudWxsO1xufVxuXG5hc3luYyBmdW5jdGlvbiB0b0VsZW1lbnRPckFwcGxpY2F0aW9uSWQgKGRyaXZlciwgb3B0cyA9IHt9KSB7XG4gIHJldHVybiB0b0VsZW1lbnRJZChvcHRzKVxuICAgIHx8IHV0aWwudW53cmFwRWxlbWVudChhd2FpdCBkcml2ZXIuZmluZE5hdGl2ZUVsZW1lbnRPckVsZW1lbnRzKGBjbGFzcyBuYW1lYCwgYFhDVUlFbGVtZW50VHlwZUFwcGxpY2F0aW9uYCwgZmFsc2UpKTtcbn1cblxuY29tbWFuZHMubW92ZVRvID0gYXN5bmMgZnVuY3Rpb24gbW92ZVRvIChlbCwgeG9mZnNldCA9IDAsIHlvZmZzZXQgPSAwKSB7XG4gIGVsID0gdXRpbC51bndyYXBFbGVtZW50KGVsKTtcblxuICBpZiAodGhpcy5pc1dlYkNvbnRleHQoKSkge1xuICAgIGxldCB7eCwgeX0gPSBhd2FpdCB0aGlzLmdldExvY2F0aW9uKGVsKTtcbiAgICBsZXQgY29vcmRzID0ge1xuICAgICAgeDogeCArIHhvZmZzZXQsXG4gICAgICB5OiB5ICsgeW9mZnNldFxuICAgIH07XG4gICAgdGhpcy5jdXJXZWJDb29yZHMgPSBjb29yZHM7XG4gICAgbGV0IGF0b21zRWxlbWVudCA9IHRoaXMuZ2V0QXRvbXNFbGVtZW50KGVsKTtcbiAgICBsZXQgcmVsQ29vcmRzID0ge3g6IHhvZmZzZXQsIHk6IHlvZmZzZXR9O1xuICAgIGF3YWl0IHRoaXMuZXhlY3V0ZUF0b20oJ21vdmVfbW91c2UnLCBbYXRvbXNFbGVtZW50LCByZWxDb29yZHNdKTtcbiAgfSBlbHNlIHtcbiAgICBpZiAoXy5pc05pbChlbCkpIHtcbiAgICAgIGlmICghdGhpcy5jdXJDb29yZHMpIHtcbiAgICAgICAgdGhyb3cgbmV3IGVycm9ycy5Vbmtub3duRXhjZXB0aW9uKFxuICAgICAgICAgICdDdXJyZW50IGN1cnNvciBwb3NpdGlvbiB1bmtub3duLCBwbGVhc2UgdXNlIG1vdmVUbyB3aXRoIGFuIGVsZW1lbnQgdGhlIGZpcnN0IHRpbWUuJyk7XG4gICAgICB9XG4gICAgICB0aGlzLmN1ckNvb3JkcyA9IHtcbiAgICAgICAgeDogdGhpcy5jdXJDb29yZHMueCArIHhvZmZzZXQsXG4gICAgICAgIHk6IHRoaXMuY3VyQ29vcmRzLnkgKyB5b2Zmc2V0XG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgZWxQb3MgPSBhd2FpdCB0aGlzLmdldExvY2F0aW9uKGVsKTtcbiAgICAgIHRoaXMuY3VyQ29vcmRzID0ge1xuICAgICAgICB4OiBlbFBvcy54ICsgeG9mZnNldCxcbiAgICAgICAgeTogZWxQb3MueSArIHlvZmZzZXRcbiAgICAgIH07XG4gICAgfVxuICB9XG59O1xuXG5mdW5jdGlvbiByZXF1aXJlRmxvYXRQYXJhbWV0ZXIgKHBhcmFtTmFtZSwgcGFyYW1WYWx1ZSwgbWV0aG9kTmFtZSkge1xuICBpZiAoXy5pc1VuZGVmaW5lZChwYXJhbVZhbHVlKSkge1xuICAgIHRocm93IG5ldyBlcnJvcnMuSW52YWxpZEFyZ3VtZW50RXJyb3IoYFwiJHtwYXJhbU5hbWV9XCIgcGFyYW1ldGVyIGlzIG1hbmRhdG9yeSBmb3IgXCIke21ldGhvZE5hbWV9XCIgY2FsbGApO1xuICB9XG4gIGNvbnN0IHJlc3VsdCA9IHBhcnNlRmxvYXQocGFyYW1WYWx1ZSk7XG4gIGlmIChpc05hTihyZXN1bHQpKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkQXJndW1lbnRFcnJvcihgXCIke3BhcmFtTmFtZX1cIiBwYXJhbWV0ZXIgc2hvdWxkIGJlIGEgdmFsaWQgbnVtYmVyLiBcIiR7cGFyYW1WYWx1ZX1cIiBpcyBnaXZlbiBpbnN0ZWFkYCk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gcmVxdWlyZUludFBhcmFtZXRlciAocGFyYW1OYW1lLCBwYXJhbVZhbHVlLCBtZXRob2ROYW1lKSB7XG4gIGlmIChfLmlzVW5kZWZpbmVkKHBhcmFtVmFsdWUpKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkQXJndW1lbnRFcnJvcihgXCIke3BhcmFtTmFtZX1cIiBwYXJhbWV0ZXIgaXMgbWFuZGF0b3J5IGZvciBcIiR7bWV0aG9kTmFtZX1cIiBjYWxsYCk7XG4gIH1cbiAgY29uc3QgcmVzdWx0ID0gcGFyc2VJbnQocGFyYW1WYWx1ZSwgMTApO1xuICBpZiAoaXNOYU4ocmVzdWx0KSkge1xuICAgIHRocm93IG5ldyBlcnJvcnMuSW52YWxpZEFyZ3VtZW50RXJyb3IoYFwiJHtwYXJhbU5hbWV9XCIgcGFyYW1ldGVyIHNob3VsZCBiZSBhIHZhbGlkIGludGVnZXIuIFwiJHtwYXJhbVZhbHVlfVwiIGlzIGdpdmVuIGluc3RlYWRgKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5jb21tYW5kcy5tb2JpbGVTaGFrZSA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZVNoYWtlICgpIHtcbiAgaWYgKCF0aGlzLmlzU2ltdWxhdG9yKCkpIHtcbiAgICB0aHJvdyBuZXcgZXJyb3JzLlVua25vd25FcnJvcignU2hha2UgaXMgbm90IHN1cHBvcnRlZCBvbiByZWFsIGRldmljZXMnKTtcbiAgfVxuICBhd2FpdCB0aGlzLm9wdHMuZGV2aWNlLnNoYWtlKCk7XG59O1xuXG5jb21tYW5kcy5jbGljayA9IGFzeW5jIGZ1bmN0aW9uIGNsaWNrIChlbCkge1xuICBpZiAoIXRoaXMuaXNXZWJDb250ZXh0KCkpIHtcbiAgICAvLyB0aGVyZSBhcmUgbXVsdGlwbGUgY29tbWFuZHMgdGhhdCBtYXAgaGVyZSwgc28gbWFudWFsbHkgcHJveHlcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5uYXRpdmVDbGljayhlbCk7XG4gIH1cbiAgZWwgPSB1dGlsLnVud3JhcEVsZW1lbnQoZWwpO1xuICBpZiAoKGF3YWl0IHRoaXMuc2V0dGluZ3MuZ2V0U2V0dGluZ3MoKSkubmF0aXZlV2ViVGFwIHx8IChhd2FpdCB0aGlzLnNldHRpbmdzLmdldFNldHRpbmdzKCkpLm5hdGl2ZVdlYlRhcFN0cmljdCkge1xuICAgIC8vIGF0b21zLWJhc2VkIGNsaWNrcyBkb24ndCBhbHdheXMgd29yayBpbiBzYWZhcmkgN1xuICAgIGxvZy5kZWJ1ZygnVXNpbmcgbmF0aXZlIHdlYiB0YXAnKTtcbiAgICBhd2FpdCB0aGlzLm5hdGl2ZVdlYlRhcChlbCk7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgYXRvbXNFbGVtZW50ID0gdGhpcy5nZXRBdG9tc0VsZW1lbnQoZWwpO1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmV4ZWN1dGVBdG9tKCdjbGljaycsIFthdG9tc0VsZW1lbnRdKTtcbiAgfVxufTtcblxuZnVuY3Rpb24gZ2VzdHVyZXNDaGFpblRvU3RyaW5nIChnZXN0dXJlcywga2V5c1RvSW5jbHVkZSA9IFsnb3B0aW9ucyddKSB7XG4gIHJldHVybiBnZXN0dXJlcy5tYXAoKGl0ZW0pID0+IHtcbiAgICBsZXQgb3RoZXJLZXlzID0gXy5kaWZmZXJlbmNlKF8ua2V5cyhpdGVtKSwgWydhY3Rpb24nXSk7XG4gICAgb3RoZXJLZXlzID0gXy5pc0FycmF5KGtleXNUb0luY2x1ZGUpID8gXy5pbnRlcnNlY3Rpb24ob3RoZXJLZXlzLCBrZXlzVG9JbmNsdWRlKSA6IG90aGVyS2V5cztcbiAgICBpZiAob3RoZXJLZXlzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIGAke2l0ZW0uYWN0aW9ufWAgK1xuICAgICAgICBgKCR7Xy5tYXAob3RoZXJLZXlzLCAoeCkgPT4geCArICc9JyArIChfLmlzUGxhaW5PYmplY3QoaXRlbVt4XSkgPyBKU09OLnN0cmluZ2lmeShpdGVtW3hdKSA6IGl0ZW1beF0pKS5qb2luKCcsICcpfSlgO1xuICAgIH1cbiAgICByZXR1cm4gaXRlbS5hY3Rpb247XG4gIH0pLmpvaW4oJy0nKTtcbn1cblxuY29tbWFuZHMucGVyZm9ybUFjdGlvbnMgPSBhc3luYyBmdW5jdGlvbiBwZXJmb3JtQWN0aW9ucyAoYWN0aW9ucykge1xuICBsb2cuZGVidWcoYFJlY2VpdmVkIHRoZSBmb2xsb3dpbmcgVzNDIGFjdGlvbnM6ICR7SlNPTi5zdHJpbmdpZnkoYWN0aW9ucywgbnVsbCwgJyAgJyl9YCk7XG4gIC8vIFRoaXMgaXMgbWFuZGF0b3J5LCBzaW5jZSBXREEgb25seSBzdXBwb3J0cyBUT1VDSCBwb2ludGVyIHR5cGVcbiAgLy8gYW5kIFNlbGVuaXVtIEFQSSB1c2VzIE1PVVNFIGFzIHRoZSBkZWZhdWx0IG9uZVxuICBjb25zdCBwcmVwcm9jZXNzZWRBY3Rpb25zID0gYWN0aW9uc1xuICAgIC5tYXAoKGFjdGlvbikgPT4gT2JqZWN0LmFzc2lnbih7fSwgYWN0aW9uLCBhY3Rpb24udHlwZSA9PT0gJ3BvaW50ZXInID8ge1xuICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICBwb2ludGVyVHlwZTogJ3RvdWNoJ1xuICAgICAgfVxuICAgIH0gOiB7fSkpXG4gICAgLm1hcCgoYWN0aW9uKSA9PiB7XG4gICAgICBjb25zdCBtb2RpZmllZEFjdGlvbiA9IF8uY2xvbmUoYWN0aW9uKSB8fCB7fTtcbiAgICAgIC8vIFNlbGVuaXVtIEFQSSB1bmV4cGVjdGVkbHkgaW5zZXJ0cyB6ZXJvIHBhdXNlcywgd2hpY2ggYXJlIG5vdCBzdXBwb3J0ZWQgYnkgV0RBXG4gICAgICBtb2RpZmllZEFjdGlvbi5hY3Rpb25zID0gKGFjdGlvbi5hY3Rpb25zIHx8IFtdKVxuICAgICAgICAuZmlsdGVyKChpbm5lckFjdGlvbikgPT4gIShpbm5lckFjdGlvbi50eXBlID09PSAncGF1c2UnICYmIGlubmVyQWN0aW9uLmR1cmF0aW9uID09PSAwKSk7XG4gICAgICByZXR1cm4gbW9kaWZpZWRBY3Rpb247XG4gICAgfSk7XG4gIGxvZy5kZWJ1ZyhgUHJlcHJvY2Vzc2VkIGFjdGlvbnM6ICR7SlNPTi5zdHJpbmdpZnkocHJlcHJvY2Vzc2VkQWN0aW9ucywgbnVsbCwgJyAgJyl9YCk7XG4gIHJldHVybiBhd2FpdCB0aGlzLnByb3h5Q29tbWFuZCgnL2FjdGlvbnMnLCAnUE9TVCcsIHthY3Rpb25zOiBwcmVwcm9jZXNzZWRBY3Rpb25zfSk7XG59O1xuXG5jb21tYW5kcy5yZWxlYXNlQWN0aW9ucyA9IGZ1bmN0aW9uIHJlbGVhc2VBY3Rpb25zICgpIHtcbiAgbG9nLndhcm4oJ09uIHRoaXMgcGxhdGZvcm0sIHJlbGVhc2VBY3Rpb25zIGlzIGEgbm8tb3AnKTtcbn07XG5cbmNvbW1hbmRzLnBlcmZvcm1Ub3VjaCA9IGFzeW5jIGZ1bmN0aW9uIHBlcmZvcm1Ub3VjaCAoZ2VzdHVyZXMpIHtcbiAgbG9nLmRlYnVnKGBSZWNlaXZlZCB0aGUgZm9sbG93aW5nIHRvdWNoIGFjdGlvbjogJHtnZXN0dXJlc0NoYWluVG9TdHJpbmcoZ2VzdHVyZXMpfWApO1xuICB0cnkge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLnByb3h5Q29tbWFuZCgnL3dkYS90b3VjaC9wZXJmb3JtJywgJ1BPU1QnLCB7YWN0aW9uczogZ2VzdHVyZXN9KTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGlmICghdGhpcy5pc1dlYkNvbnRleHQoKSkge1xuICAgICAgdGhyb3cgZTtcbiAgICB9XG4gICAgbG9nLmVycm9yQW5kVGhyb3coJ1RoZSBUb3VjaCBBUEkgaXMgYWltZWQgZm9yIHVzYWdlIGluIE5BVElWRSBjb250ZXh0LiAnICtcbiAgICAgICdDb25zaWRlciB1c2luZyBcImV4ZWN1dGVcIiBBUEkgd2l0aCBjdXN0b20gZXZlbnRzIHRyaWdnZXIgc2NyaXB0ICcgK1xuICAgICAgYHRvIGVtdWxhdGUgdG91Y2ggZXZlbnRzIGJlaW5nIGluIFdFQlZJRVcgY29udGV4dC4gT3JpZ2luYWwgZXJyb3I6ICR7ZS5tZXNzYWdlfWApO1xuICB9XG59O1xuXG5jb21tYW5kcy5wZXJmb3JtTXVsdGlBY3Rpb24gPSBhc3luYyBmdW5jdGlvbiBwZXJmb3JtTXVsdGlBY3Rpb24gKGFjdGlvbnMpIHtcbiAgbG9nLmRlYnVnKGBSZWNlaXZlZCB0aGUgZm9sbG93aW5nIG11bHRpIHRvdWNoIGFjdGlvbjpgKTtcbiAgZm9yIChsZXQgaSBpbiBhY3Rpb25zKSB7XG4gICAgbG9nLmRlYnVnKGAgICAgJHtwYXJzZUludChpLCAxMCkgKyAxfTogJHtfLm1hcChhY3Rpb25zW2ldLCAnYWN0aW9uJykuam9pbignLScpfWApO1xuICB9XG4gIHRyeSB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMucHJveHlDb21tYW5kKCcvd2RhL3RvdWNoL211bHRpL3BlcmZvcm0nLCAnUE9TVCcsIHthY3Rpb25zfSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBpZiAoIXRoaXMuaXNXZWJDb250ZXh0KCkpIHtcbiAgICAgIHRocm93IGU7XG4gICAgfVxuICAgIGxvZy5lcnJvckFuZFRocm93KCdUaGUgTXVsdGlUb3VjaCBBUEkgaXMgYWltZWQgZm9yIHVzYWdlIGluIE5BVElWRSBjb250ZXh0LiAnICtcbiAgICAgICdDb25zaWRlciB1c2luZyBcImV4ZWN1dGVcIiBBUEkgd2l0aCBjdXN0b20gZXZlbnRzIHRyaWdnZXIgc2NyaXB0ICcgK1xuICAgICAgYHRvIGVtdWxhdGUgbXVsdGl0b3VjaCBldmVudHMgYmVpbmcgaW4gV0VCVklFVyBjb250ZXh0LiBPcmlnaW5hbCBlcnJvcjogJHtlLm1lc3NhZ2V9YCk7XG4gIH1cbn07XG5cbmNvbW1hbmRzLm5hdGl2ZUNsaWNrID0gYXN5bmMgZnVuY3Rpb24gbmF0aXZlQ2xpY2sgKGVsKSB7XG4gIGVsID0gdXRpbC51bndyYXBFbGVtZW50KGVsKTtcbiAgbGV0IGVuZHBvaW50ID0gYC9lbGVtZW50LyR7ZWx9L2NsaWNrYDtcbiAgcmV0dXJuIGF3YWl0IHRoaXMucHJveHlDb21tYW5kKGVuZHBvaW50LCAnUE9TVCcsIHt9KTtcbn07XG5cbi8qXG4gKiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL1dlYkRyaXZlckFnZW50L2Jsb2IvbWFzdGVyL1dlYkRyaXZlckFnZW50TGliL0NvbW1hbmRzL0ZCRWxlbWVudENvbW1hbmRzLm1cbiAqIHRvIGdldCB0aGUgaW5mbyBhYm91dCBhdmFpbGFibGUgV0RBIGdlc3R1cmVzIEFQSVxuICpcbiAqIFNlZSBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vcmVmZXJlbmNlL3hjdGVzdC94Y3VpZWxlbWVudCBhbmRcbiAqIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9yZWZlcmVuY2UveGN0ZXN0L3hjdWljb29yZGluYXRlIHRvIGdldCB0aGUgZGV0YWlsZWQgZGVzY3JpcHRpb24gb2ZcbiAqIGFsbCBYQ1Rlc3QgZ2VzdHVyZXNcbiovXG5cbmhlbHBlcnMubW9iaWxlU2Nyb2xsID0gYXN5bmMgZnVuY3Rpb24gbW9iaWxlU2Nyb2xsIChvcHRzID0ge30pIHtcbiAgLy8gV0RBIHN1cHBvcnRzIGZvdXIgc2Nyb2xsaW5nIHN0cmF0ZWdpZXM6IHByZWRpY2F0aW9uIGJhc2VkIG9uIG5hbWUsIGRpcmVjdGlvbixcbiAgLy8gcHJlZGljYXRlU3RyaW5nLCBhbmQgdG9WaXNpYmxlLCBpbiB0aGF0IG9yZGVyXG4gIGNvbnN0IHtcbiAgICBuYW1lLFxuICAgIGRpcmVjdGlvbixcbiAgICBwcmVkaWNhdGVTdHJpbmcsXG4gICAgdG9WaXNpYmxlLFxuICAgIGRpc3RhbmNlLFxuICB9ID0gb3B0cztcbiAgY29uc3QgcGFyYW1zID0ge307XG4gIGlmIChuYW1lKSB7XG4gICAgcGFyYW1zLm5hbWUgPSBuYW1lO1xuICB9IGVsc2UgaWYgKGRpcmVjdGlvbikge1xuICAgIGlmICghU1VQUE9SVEVEX0dFU1RVUkVfRElSRUNUSU9OUy5pbmNsdWRlcyhfLnRvTG93ZXIoZGlyZWN0aW9uKSkpIHtcbiAgICAgIHRocm93IG5ldyBlcnJvcnMuSW52YWxpZEFyZ3VtZW50RXJyb3IoYCdkaXJlY3Rpb24nIG11c3QgYmUgb25lIG9mOiAke1NVUFBPUlRFRF9HRVNUVVJFX0RJUkVDVElPTlN9YCk7XG4gICAgfVxuICAgIHBhcmFtcy5kaXJlY3Rpb24gPSBkaXJlY3Rpb247XG4gIH0gZWxzZSBpZiAocHJlZGljYXRlU3RyaW5nKSB7XG4gICAgcGFyYW1zLnByZWRpY2F0ZVN0cmluZyA9IHByZWRpY2F0ZVN0cmluZztcbiAgfSBlbHNlIGlmICh0b1Zpc2libGUpIHtcbiAgICBwYXJhbXMudG9WaXNpYmxlID0gdG9WaXNpYmxlO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBlcnJvcnMuSW52YWxpZEFyZ3VtZW50RXJyb3IoXG4gICAgICAnTW9iaWxlIHNjcm9sbCBzdXBwb3J0cyB0aGUgZm9sbG93aW5nIHN0cmF0ZWdpZXM6IG5hbWUsIGRpcmVjdGlvbiwgcHJlZGljYXRlU3RyaW5nLCBhbmQgdG9WaXNpYmxlLiAnICtcbiAgICAgICdTcGVjaWZ5IG9uZSBvZiB0aGVzZScpO1xuICB9XG4gIC8vIHdlIGNhbiBhbHNvIG9wdGlvbmFsbHkgcGFzcyBhIGRpc3RhbmNlIHdoaWNoIGFwcGVhcnMgdG8gYmUgYSByYXRpbyBvZlxuICAvLyBzY3JlZW4gaGVpZ2h0LCBzbyAxLjAgbWVhbnMgYSBmdWxsIHNjcmVlbidzIHdvcnRoIG9mIHNjcm9sbGluZ1xuICBpZiAoIV8uaXNOaWwoZGlzdGFuY2UpKSB7XG4gICAgcGFyYW1zLmRpc3RhbmNlID0gZGlzdGFuY2U7XG4gIH1cbiAgY29uc3QgZWxlbWVudElkID0gYXdhaXQgdG9FbGVtZW50T3JBcHBsaWNhdGlvbklkKHRoaXMsIG9wdHMpO1xuICByZXR1cm4gYXdhaXQgdGhpcy5wcm94eUNvbW1hbmQoYC93ZGEvZWxlbWVudC8ke2VsZW1lbnRJZH0vc2Nyb2xsYCwgJ1BPU1QnLCBwYXJhbXMpO1xufTtcblxuaGVscGVycy5tb2JpbGVTd2lwZSA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZVN3aXBlIChvcHRzID0ge30pIHtcbiAgY29uc3Qge1xuICAgIGRpcmVjdGlvbixcbiAgICB2ZWxvY2l0eSxcbiAgfSA9IG9wdHM7XG4gIGlmICghU1VQUE9SVEVEX0dFU1RVUkVfRElSRUNUSU9OUy5pbmNsdWRlcyhfLnRvTG93ZXIoZGlyZWN0aW9uKSkpIHtcbiAgICB0aHJvdyBuZXcgZXJyb3JzLkludmFsaWRBcmd1bWVudEVycm9yKGAnZGlyZWN0aW9uJyBtdXN0IGJlIG9uZSBvZjogJHtTVVBQT1JURURfR0VTVFVSRV9ESVJFQ1RJT05TfWApO1xuICB9XG4gIGNvbnN0IHBhcmFtcyA9IHtkaXJlY3Rpb259O1xuICBpZiAoIV8uaXNOaWwodmVsb2NpdHkpKSB7XG4gICAgcGFyYW1zLnZlbG9jaXR5ID0gdmVsb2NpdHk7XG4gIH1cbiAgY29uc3QgZWxlbWVudElkID0gYXdhaXQgdG9FbGVtZW50T3JBcHBsaWNhdGlvbklkKHRoaXMsIG9wdHMpO1xuICByZXR1cm4gYXdhaXQgdGhpcy5wcm94eUNvbW1hbmQoYC93ZGEvZWxlbWVudC8ke2VsZW1lbnRJZH0vc3dpcGVgLCAnUE9TVCcsIHBhcmFtcyk7XG59O1xuXG5oZWxwZXJzLm1vYmlsZVBpbmNoID0gYXN5bmMgZnVuY3Rpb24gbW9iaWxlUGluY2ggKG9wdHMgPSB7fSkge1xuICBjb25zdCBwYXJhbXMgPSB7XG4gICAgc2NhbGU6IHJlcXVpcmVGbG9hdFBhcmFtZXRlcignc2NhbGUnLCBvcHRzLnNjYWxlLCAncGluY2gnKSxcbiAgICB2ZWxvY2l0eTogcmVxdWlyZUZsb2F0UGFyYW1ldGVyKCd2ZWxvY2l0eScsIG9wdHMudmVsb2NpdHksICdwaW5jaCcpXG4gIH07XG4gIGNvbnN0IGVsZW1lbnRJZCA9IGF3YWl0IHRvRWxlbWVudE9yQXBwbGljYXRpb25JZCh0aGlzLCBvcHRzKTtcbiAgcmV0dXJuIGF3YWl0IHRoaXMucHJveHlDb21tYW5kKGAvd2RhL2VsZW1lbnQvJHtlbGVtZW50SWR9L3BpbmNoYCwgJ1BPU1QnLCBwYXJhbXMpO1xufTtcblxuaGVscGVycy5tb2JpbGVEb3VibGVUYXAgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVEb3VibGVUYXAgKG9wdHMgPSB7fSkge1xuICBjb25zdCBlbGVtZW50SWQgPSB0b0VsZW1lbnRJZChvcHRzKTtcbiAgaWYgKGVsZW1lbnRJZCkge1xuICAgIC8vIERvdWJsZSB0YXAgZWxlbWVudFxuICAgIHJldHVybiBhd2FpdCB0aGlzLnByb3h5Q29tbWFuZChgL3dkYS9lbGVtZW50LyR7ZWxlbWVudElkfS9kb3VibGVUYXBgLCAnUE9TVCcpO1xuICB9XG4gIC8vIERvdWJsZSB0YXAgY29vcmRpbmF0ZXNcbiAgY29uc3QgcGFyYW1zID0ge1xuICAgIHg6IHJlcXVpcmVGbG9hdFBhcmFtZXRlcigneCcsIG9wdHMueCwgJ2RvdWJsZVRhcCcpLFxuICAgIHk6IHJlcXVpcmVGbG9hdFBhcmFtZXRlcigneScsIG9wdHMueSwgJ2RvdWJsZVRhcCcpXG4gIH07XG4gIHJldHVybiBhd2FpdCB0aGlzLnByb3h5Q29tbWFuZCgnL3dkYS9kb3VibGVUYXAnLCAnUE9TVCcsIHBhcmFtcyk7XG59O1xuXG5oZWxwZXJzLm1vYmlsZVR3b0ZpbmdlclRhcCA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZVR3b0ZpbmdlclRhcCAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IGVsZW1lbnRJZCA9IGF3YWl0IHRvRWxlbWVudE9yQXBwbGljYXRpb25JZCh0aGlzLCBvcHRzKTtcbiAgcmV0dXJuIGF3YWl0IHRoaXMucHJveHlDb21tYW5kKGAvd2RhL2VsZW1lbnQvJHtlbGVtZW50SWR9L3R3b0ZpbmdlclRhcGAsICdQT1NUJyk7XG59O1xuXG5oZWxwZXJzLm1vYmlsZVRvdWNoQW5kSG9sZCA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZVRvdWNoQW5kSG9sZCAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHBhcmFtcyA9IHtcbiAgICBkdXJhdGlvbjogcmVxdWlyZUZsb2F0UGFyYW1ldGVyKCdkdXJhdGlvbicsIG9wdHMuZHVyYXRpb24sICd0b3VjaEFuZEhvbGQnKVxuICB9O1xuICBjb25zdCBlbGVtZW50SWQgPSB0b0VsZW1lbnRJZChvcHRzKTtcbiAgaWYgKGVsZW1lbnRJZCkge1xuICAgIC8vIExvbmcgdGFwIGVsZW1lbnRcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5wcm94eUNvbW1hbmQoYC93ZGEvZWxlbWVudC8ke2VsZW1lbnRJZH0vdG91Y2hBbmRIb2xkYCwgJ1BPU1QnLCBwYXJhbXMpO1xuICB9XG4gIC8vIExvbmcgdGFwIGNvb3JkaW5hdGVzXG4gIHBhcmFtcy54ID0gcmVxdWlyZUZsb2F0UGFyYW1ldGVyKCd4Jywgb3B0cy54LCAndG91Y2hBbmRIb2xkJyk7XG4gIHBhcmFtcy55ID0gcmVxdWlyZUZsb2F0UGFyYW1ldGVyKCd5Jywgb3B0cy55LCAndG91Y2hBbmRIb2xkJyk7XG4gIHJldHVybiBhd2FpdCB0aGlzLnByb3h5Q29tbWFuZCgnL3dkYS90b3VjaEFuZEhvbGQnLCAnUE9TVCcsIHBhcmFtcyk7XG59O1xuXG5oZWxwZXJzLm1vYmlsZVRhcCA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZVRhcCAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHBhcmFtcyA9IHtcbiAgICB4OiByZXF1aXJlRmxvYXRQYXJhbWV0ZXIoJ3gnLCBvcHRzLngsICd0YXAnKSxcbiAgICB5OiByZXF1aXJlRmxvYXRQYXJhbWV0ZXIoJ3knLCBvcHRzLnksICd0YXAnKVxuICB9O1xuICBjb25zdCBlbGVtZW50SWQgPSB0b0VsZW1lbnRJZChvcHRzKSB8fCAnMCc7XG4gIHJldHVybiBhd2FpdCB0aGlzLnByb3h5Q29tbWFuZChgL3dkYS90YXAvJHtlbGVtZW50SWR9YCwgJ1BPU1QnLCBwYXJhbXMpO1xufTtcblxuaGVscGVycy5tb2JpbGVEcmFnRnJvbVRvRm9yRHVyYXRpb24gPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVEcmFnRnJvbVRvRm9yRHVyYXRpb24gKG9wdHMgPSB7fSkge1xuICBjb25zdCBwYXJhbXMgPSB7XG4gICAgZHVyYXRpb246IHJlcXVpcmVGbG9hdFBhcmFtZXRlcignZHVyYXRpb24nLCBvcHRzLmR1cmF0aW9uLCAnZHJhZ0Zyb21Ub0ZvckR1cmF0aW9uJyksXG4gICAgZnJvbVg6IHJlcXVpcmVGbG9hdFBhcmFtZXRlcignZnJvbVgnLCBvcHRzLmZyb21YLCAnZHJhZ0Zyb21Ub0ZvckR1cmF0aW9uJyksXG4gICAgZnJvbVk6IHJlcXVpcmVGbG9hdFBhcmFtZXRlcignZnJvbVknLCBvcHRzLmZyb21ZLCAnZHJhZ0Zyb21Ub0ZvckR1cmF0aW9uJyksXG4gICAgdG9YOiByZXF1aXJlRmxvYXRQYXJhbWV0ZXIoJ3RvWCcsIG9wdHMudG9YLCAnZHJhZ0Zyb21Ub0ZvckR1cmF0aW9uJyksXG4gICAgdG9ZOiByZXF1aXJlRmxvYXRQYXJhbWV0ZXIoJ3RvWScsIG9wdHMudG9ZLCAnZHJhZ0Zyb21Ub0ZvckR1cmF0aW9uJylcbiAgfTtcbiAgY29uc3QgZWxlbWVudElkID0gdG9FbGVtZW50SWQob3B0cyk7XG4gIHJldHVybiBlbGVtZW50SWRcbiAgICAvLyBEcmFnIGVsZW1lbnRcbiAgICA/IGF3YWl0IHRoaXMucHJveHlDb21tYW5kKGAvd2RhL2VsZW1lbnQvJHtlbGVtZW50SWR9L2RyYWdmcm9tdG9mb3JkdXJhdGlvbmAsICdQT1NUJywgcGFyYW1zKVxuICAgIC8vIERyYWcgY29vcmRpbmF0ZXNcbiAgICA6IGF3YWl0IHRoaXMucHJveHlDb21tYW5kKCcvd2RhL2RyYWdmcm9tdG9mb3JkdXJhdGlvbicsICdQT1NUJywgcGFyYW1zKTtcbn07XG5cbmhlbHBlcnMubW9iaWxlVGFwV2l0aE51bWJlck9mVGFwcyA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZVRhcFdpdGhOdW1iZXJPZlRhcHMgKG9wdHMgPSB7fSkge1xuICBjb25zdCBlbGVtZW50SWQgPSB0b0VsZW1lbnRJZChvcHRzKTtcbiAgaWYgKCFlbGVtZW50SWQpIHtcbiAgICB0aHJvdyBuZXcgZXJyb3JzLkludmFsaWRBcmd1bWVudEVycm9yKCdFbGVtZW50IGlkIGlzIGV4cGVjdGVkIHRvIGJlIHNldCBmb3IgdGFwV2l0aE51bWJlck9mVGFwcyBtZXRob2QnKTtcbiAgfVxuICBjb25zdCBwYXJhbXMgPSB7XG4gICAgbnVtYmVyT2ZUYXBzOiByZXF1aXJlSW50UGFyYW1ldGVyKCdudW1iZXJPZlRhcHMnLCBvcHRzLm51bWJlck9mVGFwcywgJ3RhcFdpdGhOdW1iZXJPZlRhcHMnKSxcbiAgICBudW1iZXJPZlRvdWNoZXM6IHJlcXVpcmVJbnRQYXJhbWV0ZXIoJ251bWJlck9mVG91Y2hlcycsIG9wdHMubnVtYmVyT2ZUb3VjaGVzLCAndGFwV2l0aE51bWJlck9mVGFwcycpLFxuICB9O1xuICByZXR1cm4gYXdhaXQgdGhpcy5wcm94eUNvbW1hbmQoYC93ZGEvZWxlbWVudC8ke2VsZW1lbnRJZH0vdGFwV2l0aE51bWJlck9mVGFwc2AsICdQT1NUJywgcGFyYW1zKTtcbn07XG5cbmhlbHBlcnMubW9iaWxlU2VsZWN0UGlja2VyV2hlZWxWYWx1ZSA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZVNlbGVjdFBpY2tlcldoZWVsVmFsdWUgKG9wdHMgPSB7fSkge1xuICBjb25zdCBlbGVtZW50SWQgPSB0b0VsZW1lbnRJZChvcHRzKTtcbiAgaWYgKCFlbGVtZW50SWQpIHtcbiAgICB0aHJvdyBuZXcgZXJyb3JzLkludmFsaWRBcmd1bWVudEVycm9yKCdFbGVtZW50IGlkIGlzIGV4cGVjdGVkIHRvIGJlIHNldCBmb3Igc2VsZWN0UGlja2VyV2hlZWxWYWx1ZSBtZXRob2QnKTtcbiAgfVxuICBpZiAoIV8uaXNTdHJpbmcob3B0cy5vcmRlcikgfHwgIVsnbmV4dCcsICdwcmV2aW91cyddLmluY2x1ZGVzKG9wdHMub3JkZXIudG9Mb3dlckNhc2UoKSkpIHtcbiAgICB0aHJvdyBuZXcgZXJyb3JzLkludmFsaWRBcmd1bWVudEVycm9yKGBUaGUgbWFuZGF0b3J5ICdvcmRlcicgcGFyYW1ldGVyIGlzIGV4cGVjdGVkIHRvIGJlIGVxdWFsIGVpdGhlciB0byAnbmV4dCcgb3IgJ3ByZXZpb3VzJy4gYCArXG4gICAgICBgJyR7b3B0cy5vcmRlcn0nIGlzIGdpdmVuIGluc3RlYWRgKTtcbiAgfVxuICBjb25zdCBwYXJhbXMgPSB7b3JkZXI6IG9wdHMub3JkZXJ9O1xuICBpZiAob3B0cy5vZmZzZXQpIHtcbiAgICBwYXJhbXMub2Zmc2V0ID0gcmVxdWlyZUZsb2F0UGFyYW1ldGVyKCdvZmZzZXQnLCBvcHRzLm9mZnNldCwgJ3NlbGVjdFBpY2tlcldoZWVsVmFsdWUnKTtcbiAgfVxuICByZXR1cm4gYXdhaXQgdGhpcy5wcm94eUNvbW1hbmQoYC93ZGEvcGlja2Vyd2hlZWwvJHtlbGVtZW50SWR9L3NlbGVjdGAsICdQT1NUJywgcGFyYW1zKTtcbn07XG5cbmhlbHBlcnMubW9iaWxlUm90YXRlRWxlbWVudCA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZVJvdGF0ZUVsZW1lbnQgKG9wdHMgPSB7fSkge1xuICBjb25zdCBlbGVtZW50SWQgPSB0b0VsZW1lbnRJZChvcHRzKTtcbiAgaWYgKCFlbGVtZW50SWQpIHtcbiAgICB0aHJvdyBuZXcgZXJyb3JzLkludmFsaWRBcmd1bWVudEVycm9yKCdFbGVtZW50IGlkIGlzIGV4cGVjdGVkIHRvIGJlIHNldCBmb3Igcm90YXRlRWxlbWVudCBtZXRob2QnKTtcbiAgfVxuICBjb25zdCBwYXJhbXMgPSB7XG4gICAgcm90YXRpb246IHJlcXVpcmVGbG9hdFBhcmFtZXRlcigncm90YXRpb24nLCBvcHRzLnJvdGF0aW9uLCAncm90YXRlRWxlbWVudCcpLFxuICAgIHZlbG9jaXR5OiByZXF1aXJlRmxvYXRQYXJhbWV0ZXIoJ3ZlbG9jaXR5Jywgb3B0cy52ZWxvY2l0eSwgJ3JvdGF0ZUVsZW1lbnQnKSxcbiAgfTtcbiAgcmV0dXJuIGF3YWl0IHRoaXMucHJveHlDb21tYW5kKGAvd2RhL2VsZW1lbnQvJHtlbGVtZW50SWR9L3JvdGF0ZWAsICdQT1NUJywgcGFyYW1zKTtcbn07XG5cbmhlbHBlcnMuZ2V0Q29vcmRpbmF0ZXMgPSBhc3luYyBmdW5jdGlvbiBnZXRDb29yZGluYXRlcyAoZ2VzdHVyZSkge1xuICAvLyBkZWZhdWx0c1xuICBsZXQgY29vcmRpbmF0ZXMgPSB7eDogMCwgeTogMCwgYXJlT2Zmc2V0czogZmFsc2V9O1xuXG4gIGxldCBvcHRpb25YID0gbnVsbDtcbiAgaWYgKGdlc3R1cmUub3B0aW9ucy54KSB7XG4gICAgb3B0aW9uWCA9IHJlcXVpcmVGbG9hdFBhcmFtZXRlcigneCcsIGdlc3R1cmUub3B0aW9ucy54LCAnZ2V0Q29vcmRpbmF0ZXMnKTtcbiAgfVxuICBsZXQgb3B0aW9uWSA9IG51bGw7XG4gIGlmIChnZXN0dXJlLm9wdGlvbnMueSkge1xuICAgIG9wdGlvblkgPSByZXF1aXJlRmxvYXRQYXJhbWV0ZXIoJ3knLCBnZXN0dXJlLm9wdGlvbnMueSwgJ2dldENvb3JkaW5hdGVzJyk7XG4gIH1cblxuICAvLyBmaWd1cmUgb3V0IHRoZSBlbGVtZW50IGNvb3JkaW5hdGVzLlxuICBjb25zdCBlbGVtZW50SWQgPSB0b0VsZW1lbnRJZChnZXN0dXJlLm9wdGlvbnMpO1xuICBpZiAoZWxlbWVudElkKSB7XG4gICAgbGV0IHJlY3QgPSBhd2FpdCB0aGlzLmdldEVsZW1lbnRSZWN0KGVsZW1lbnRJZCk7XG4gICAgbGV0IHBvcyA9IHt4OiByZWN0LngsIHk6IHJlY3QueX07XG4gICAgbGV0IHNpemUgPSB7dzogcmVjdC53aWR0aCwgaDogcmVjdC5oZWlnaHR9O1xuXG4gICAgLy8gZGVmYXVsdHNcbiAgICBsZXQgb2Zmc2V0WCA9IDA7XG4gICAgbGV0IG9mZnNldFkgPSAwO1xuXG4gICAgLy8gZ2V0IHRoZSByZWFsIG9mZnNldHNcbiAgICBpZiAob3B0aW9uWCB8fCBvcHRpb25ZKSB7XG4gICAgICBvZmZzZXRYID0gKG9wdGlvblggfHwgMCk7XG4gICAgICBvZmZzZXRZID0gKG9wdGlvblkgfHwgMCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG9mZnNldFggPSAoc2l6ZS53IC8gMik7XG4gICAgICBvZmZzZXRZID0gKHNpemUuaCAvIDIpO1xuICAgIH1cblxuICAgIC8vIGFwcGx5IHRoZSBvZmZzZXRzXG4gICAgY29vcmRpbmF0ZXMueCA9IHBvcy54ICsgb2Zmc2V0WDtcbiAgICBjb29yZGluYXRlcy55ID0gcG9zLnkgKyBvZmZzZXRZO1xuICB9IGVsc2Uge1xuICAgIC8vIG1vdmVUbyBjb29yZGluYXRlcyBhcmUgcGFzc2VkIGluIGFzIG9mZnNldHNcbiAgICBjb29yZGluYXRlcy5hcmVPZmZzZXRzID0gKGdlc3R1cmUuYWN0aW9uID09PSAnbW92ZVRvJyk7XG4gICAgY29vcmRpbmF0ZXMueCA9IChvcHRpb25YIHx8IDApO1xuICAgIGNvb3JkaW5hdGVzLnkgPSAob3B0aW9uWSB8fCAwKTtcbiAgfVxuICByZXR1cm4gY29vcmRpbmF0ZXM7XG59O1xuXG5oZWxwZXJzLmFwcGx5TW92ZVRvT2Zmc2V0ID0gZnVuY3Rpb24gYXBwbHlNb3ZlVG9PZmZzZXQgKGZpcnN0Q29vcmRpbmF0ZXMsIHNlY29uZENvb3JkaW5hdGVzKSB7XG4gIGlmIChzZWNvbmRDb29yZGluYXRlcy5hcmVPZmZzZXRzKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHg6IGZpcnN0Q29vcmRpbmF0ZXMueCArIHNlY29uZENvb3JkaW5hdGVzLngsXG4gICAgICB5OiBmaXJzdENvb3JkaW5hdGVzLnkgKyBzZWNvbmRDb29yZGluYXRlcy55LFxuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHNlY29uZENvb3JkaW5hdGVzO1xuICB9XG59O1xuXG5PYmplY3QuYXNzaWduKGV4dGVuc2lvbnMsIGhlbHBlcnMsIGNvbW1hbmRzKTtcbmV4cG9ydCB7IGV4dGVuc2lvbnMsIGhlbHBlcnMsIGNvbW1hbmRzLCBnZXN0dXJlc0NoYWluVG9TdHJpbmcgfTtcbmV4cG9ydCBkZWZhdWx0IGV4dGVuc2lvbnM7XG4iXSwiZmlsZSI6ImxpYi9jb21tYW5kcy9nZXN0dXJlLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uIn0=
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.helpers = exports.default = exports.commands = void 0;
6
+ exports.default = exports.helpers = exports.commands = void 0;
7
7
 
8
8
  require("source-map-support/register");
9
9
 
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.helpers = exports.default = exports.commands = void 0;
8
+ exports.default = exports.helpers = exports.commands = void 0;
9
9
 
10
10
  require("source-map-support/register");
11
11
 
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.helpers = exports.default = exports.commands = void 0;
8
+ exports.default = exports.helpers = exports.commands = void 0;
9
9
 
10
10
  require("source-map-support/register");
11
11
 
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.helpers = exports.default = void 0;
8
+ exports.default = exports.helpers = void 0;
9
9
 
10
10
  require("source-map-support/register");
11
11
 
@@ -5,13 +5,13 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.helpers = exports.default = exports.commands = void 0;
8
+ exports.default = exports.helpers = exports.commands = void 0;
9
9
 
10
10
  require("source-map-support/register");
11
11
 
12
12
  var _lodash = _interopRequireDefault(require("lodash"));
13
13
 
14
- var _xmldom = _interopRequireDefault(require("xmldom"));
14
+ var _xmldom = _interopRequireDefault(require("@xmldom/xmldom"));
15
15
 
16
16
  var _js2xmlparser = _interopRequireDefault(require("js2xmlparser2"));
17
17
 
@@ -29,7 +29,7 @@ commands.getPageSource = async function getPageSource() {
29
29
  }
30
30
 
31
31
  if ((await this.settings.getSettings()).useJSONSource) {
32
- let srcTree = await this.mobileGetSource({
32
+ const srcTree = await this.mobileGetSource({
33
33
  format: 'json'
34
34
  });
35
35
  return getSourceXml(getTreeForXML(srcTree));
@@ -39,10 +39,10 @@ commands.getPageSource = async function getPageSource() {
39
39
  };
40
40
 
41
41
  helpers.getNativePageSource = async function getNativePageSource() {
42
- let srcTree = await this.proxyCommand('/source', 'GET');
43
- let parser = new _xmldom.default.DOMParser();
44
- let tree = parser.parseFromString(srcTree);
45
- let doc = parser.parseFromString(APPIUM_SRC_XML);
42
+ const srcTree = await this.proxyCommand('/source', 'GET');
43
+ const parser = new _xmldom.default.DOMParser();
44
+ const tree = parser.parseFromString(srcTree);
45
+ const doc = parser.parseFromString(APPIUM_SRC_XML);
46
46
  doc.documentElement.appendChild(tree.documentElement);
47
47
  return new _xmldom.default.XMLSerializer().serializeToString(doc);
48
48
  };
@@ -126,4 +126,4 @@ var _default = extensions;
126
126
  exports.default = _default;require('source-map-support').install();
127
127
 
128
128
 
129
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9zb3VyY2UuanMiXSwibmFtZXMiOlsiY29tbWFuZHMiLCJoZWxwZXJzIiwiZXh0ZW5zaW9ucyIsIkFQUElVTV9TUkNfWE1MIiwiZ2V0UGFnZVNvdXJjZSIsImlzV2ViQ29udGV4dCIsInNjcmlwdCIsImV4ZWN1dGVBdG9tIiwic2V0dGluZ3MiLCJnZXRTZXR0aW5ncyIsInVzZUpTT05Tb3VyY2UiLCJzcmNUcmVlIiwibW9iaWxlR2V0U291cmNlIiwiZm9ybWF0IiwiZ2V0U291cmNlWG1sIiwiZ2V0VHJlZUZvclhNTCIsImdldE5hdGl2ZVBhZ2VTb3VyY2UiLCJwcm94eUNvbW1hbmQiLCJwYXJzZXIiLCJ4bWxkb20iLCJET01QYXJzZXIiLCJ0cmVlIiwicGFyc2VGcm9tU3RyaW5nIiwiZG9jIiwiZG9jdW1lbnRFbGVtZW50IiwiYXBwZW5kQ2hpbGQiLCJYTUxTZXJpYWxpemVyIiwic2VyaWFsaXplVG9TdHJpbmciLCJvcHRzIiwiXyIsImlzU3RyaW5nIiwicGFyYW1zTWFwIiwiZXhjbHVkZWRBdHRyaWJ1dGVzIiwiZXhjbHVkZWRfYXR0cmlidXRlcyIsInF1ZXJ5IiwiT2JqZWN0IiwiZW50cmllcyIsIm1hcCIsImsiLCJ2IiwiZW5jb2RlVVJJQ29tcG9uZW50Iiwiam9pbiIsImdldFRyZWUiLCJlbGVtZW50IiwiZWxlbWVudEluZGV4IiwicGFyZW50UGF0aCIsImN1clBhdGgiLCJyZWN0Iiwic3VidHJlZSIsInR5cGUiLCJlbmFibGVkIiwicGFyc2VJbnQiLCJpc0VuYWJsZWQiLCJ2aXNpYmxlIiwiaXNWaXNpYmxlIiwieCIsInkiLCJ3aWR0aCIsImhlaWdodCIsIm5hbWUiLCJsYWJlbCIsInZhbHVlIiwiaSIsImNoaWxkcmVuIiwibGVuZ3RoIiwicHVzaCIsImpzb25Tb3VyY2UiLCJ3cmFwQXJyYXkiLCJlbGVtZW50TmFtZSIsImRlY2xhcmF0aW9uIiwiaW5jbHVkZSIsInByZXR0eVByaW50aW5nIiwiaW5kZW50U3RyaW5nIiwiYXNz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RUFBcURGLENBQUMsRUFBdEQsRUFBMEQ7QUFDeERkLE1BQUFBLE9BQU8sQ0FBQyxHQUFELENBQVAsQ0FBYWlCLElBQWIsQ0FBa0J2QixPQUFPLENBQUNDLE9BQU8sQ0FBQ29CLFFBQVIsQ0FBaUJELENBQWpCLENBQUQsRUFBc0JBLENBQXRCLEVBQXlCaEIsT0FBekIsQ0FBekI7QUFDRDs7QUFDRCxXQUFPO0FBQ0wsT0FBRSxrQkFBaUJILE9BQU8sQ0FBQ00sSUFBSyxFQUFoQyxHQUFvQ0Q7QUFEL0IsS0FBUDtBQUdEOztBQUNELE1BQUkzQixJQUFJLEdBQUdxQixPQUFPLENBQUMvQixPQUFELEVBQVUsQ0FBVixFQUFhLEVBQWIsQ0FBbEI7QUFDQSxTQUFPVSxJQUFQO0FBQ0Q7O0FBRUQsU0FBU1AsWUFBVCxDQUF1Qm9ELFVBQXZCLEVBQW1DO0FBQ2pDLFNBQU8sMkJBQU8sV0FBUCxFQUFvQkEsVUFBcEIsRUFBZ0M7QUFDckNDLElBQUFBLFNBQVMsRUFBRTtBQUFDakIsTUFBQUEsT0FBTyxFQUFFLEtBQVY7QUFBaUJrQixNQUFBQSxXQUFXLEVBQUU7QUFBOUIsS0FEMEI7QUFFckNDLElBQUFBLFdBQVcsRUFBRTtBQUFDQyxNQUFBQSxPQUFPLEVBQUU7QUFBVixLQUZ3QjtBQUdyQ0MsSUFBQUEsY0FBYyxFQUFFO0FBQUNDLE1BQUFBLFlBQVksRUFBRTtBQUFmO0FBSHFCLEdBQWhDLENBQVA7QUFLRDs7QUFHRHJDLE1BQU0sQ0FBQ3NDLE1BQVAsQ0FBY3ZFLFVBQWQsRUFBMEJGLFFBQTFCLEVBQW9DQyxPQUFwQztlQUVlQyxVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB4bWxkb20gZnJvbSAneG1sZG9tJztcbmltcG9ydCBqczJ4bWwgZnJvbSAnanMyeG1scGFyc2VyMic7XG5cblxubGV0IGNvbW1hbmRzID0ge30sIGhlbHBlcnMgPSB7fSwgZXh0ZW5zaW9ucyA9IHt9O1xuXG5jb25zdCBBUFBJVU1fU1JDX1hNTCA9ICc8P3htbCB2ZXJzaW9uPVwiMS4wXCIgZW5jb2Rpbmc9XCJVVEYtOFwiPz48QXBwaXVtQVVULz4nO1xuXG5cbmNvbW1hbmRzLmdldFBhZ2VTb3VyY2UgPSBhc3luYyBmdW5jdGlvbiBnZXRQYWdlU291cmNlICgpIHtcbiAgaWYgKHRoaXMuaXNXZWJDb250ZXh0KCkpIHtcbiAgICBjb25zdCBzY3JpcHQgPSAncmV0dXJuIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5vdXRlckhUTUwnO1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmV4ZWN1dGVBdG9tKCdleGVjdXRlX3NjcmlwdCcsIFtzY3JpcHQsIFtdXSk7XG4gIH1cblxuICBpZiAoKGF3YWl0IHRoaXMuc2V0dGluZ3MuZ2V0U2V0dGluZ3MoKSkudXNlSlNPTlNvdXJjZSkge1xuICAgIGxldCBzcmNUcmVlID0gYXdhaXQgdGhpcy5tb2JpbGVHZXRTb3VyY2Uoe2Zvcm1hdDogJ2pzb24nfSk7XG4gICAgcmV0dXJuIGdldFNvdXJjZVhtbChnZXRUcmVlRm9yWE1MKHNyY1RyZWUpKTtcbiAgfVxuICByZXR1cm4gYXdhaXQgdGhpcy5nZXROYXRpdmVQYWdlU291cmNlKCk7XG59O1xuXG5oZWxwZXJzLmdldE5hdGl2ZVBhZ2VTb3VyY2UgPSBhc3luYyBmdW5jdGlvbiBnZXROYXRpdmVQYWdlU291cmNlICgpIHtcbiAgbGV0IHNyY1RyZWUgPSBhd2FpdCB0aGlzLnByb3h5Q29tbWFuZCgnL3NvdXJjZScsICdHRVQnKTtcblxuICBsZXQgcGFyc2VyID0gbmV3IHhtbGRvbS5ET01QYXJzZXIoKTtcblxuICBsZXQgdHJlZSA9IHBhcnNlci5wYXJzZUZyb21TdHJpbmcoc3JjVHJlZSk7XG5cbiAgbGV0IGRvYyA9IHBhcnNlci5wYXJzZUZyb21TdHJpbmcoQVBQSVVNX1NSQ19YTUwpO1xuICBkb2MuZG9jdW1lbnRFbGVtZW50LmFwcGVuZENoaWxkKHRyZWUuZG9jdW1lbnRFbGVtZW50KTtcblxuICByZXR1cm4gbmV3IHhtbGRvbS5YTUxTZXJpYWxpemVyKCkuc2VyaWFsaXplVG9TdHJpbmcoZG9jKTtcbn07XG5cbmhlbHBlcnMubW9iaWxlR2V0U291cmNlID0gYXN5bmMgZnVuY3Rpb24gbW9iaWxlR2V0U291cmNlIChvcHRzID0ge30pIHtcbiAgaWYgKCFfLmlzU3RyaW5nKG9wdHMuZm9ybWF0KSkge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmdldE5hdGl2ZVBhZ2VTb3VyY2UoKTtcbiAgfVxuICBjb25zdCBwYXJhbXNNYXAgPSB7XG4gICAgZm9ybWF0OiBvcHRzLmZvcm1hdCxcbiAgfTtcbiAgaWYgKG9wdHMuZXhjbHVkZWRBdHRyaWJ1dGVzKSB7XG4gICAgcGFyYW1zTWFwLmV4Y2x1ZGVkX2F0dHJpYnV0ZXMgPSBvcHRzLmV4Y2x1ZGVkQXR0cmlidXRlcztcbiAgfVxuICBjb25zdCBxdWVyeSA9IE9iamVjdC5lbnRyaWVzKHBhcmFtc01hcClcbiAgICAubWFwKChbaywgdl0pID0+IGAke2VuY29kZVVSSUNvbXBvbmVudChrKX09JHtlbmNvZGVVUklDb21wb25lbnQodil9YClcbiAgICAuam9pbignJicpO1xuICByZXR1cm4gYXdhaXQgdGhpcy5wcm94eUNvbW1hbmQoYC9zb3VyY2U/JHtxdWVyeX1gLCAnR0VUJyk7XG59O1xuXG4vKiBXaWxsIGdldCBKU09OIG9mIHRoZSBmb3JtOlxuICogICB7IGlzRW5hYmxlZDogJzEnLFxuICogICAgIGlzVmlzaWJsZTogJzEnLFxuICogICAgIGZyYW1lOiAne3swLCAwfSwgezM3NSwgNjY3fX0nLFxuICogICAgIGNoaWxkcmVuOlxuICogICAgICBbIHsgaXNFbmFibGVkOiAnMScsXG4gKiAgICAgICAgICBpc1Zpc2libGU6ICcxJyxcbiAqICAgICAgICAgIGZyYW1lOiAne3swLCAwfSwgezM3NSwgNjY3fX0nLFxuICogICAgICAgICAgY2hpbGRyZW46IFtdLFxuICogICAgICAgICAgcmVjdDogeyB4OiAwLCB5OiAwLCB3aWR0aDogMzc1LCBoZWlnaHQ6IDY2NyB9LFxuICogICAgICAgICAgdmFsdWU6IG51bGwsXG4gKiAgICAgICAgICBsYWJlbDogbnVsbCxcbiAqICAgICAgICAgIHR5cGU6ICdPdGhlcicsXG4gKiAgICAgICAgICBuYW1lOiBudWxsLFxuICogICAgICAgICAgcmF3SWRlbnRpZmllcjogbnVsbCB9LFxuICogICAgIHJlY3Q6IHsgb3JpZ2luOiB7IHg6IDAsIHk6IDAgfSwgc2l6ZTogeyB3aWR0aDogMzc1LCBoZWlnaHQ6IDY2NyB9IH0sXG4gKiAgICAgdmFsdWU6IG51bGwsXG4gKiAgICAgbGFiZWw6ICdVSUNhdGFsb2cnLFxuICogICAgIHR5cGU6ICdBcHBsaWNhdGlvbicsXG4gKiAgICAgbmFtZTogJ1VJQ2F0YWxvZycsXG4gKiAgICAgcmF3SWRlbnRpZmllcjogbnVsbCB9XG4gKi9cbmZ1bmN0aW9uIGdldFRyZWVGb3JYTUwgKHNyY1RyZWUpIHtcbiAgZnVuY3Rpb24gZ2V0VHJlZSAoZWxlbWVudCwgZWxlbWVudEluZGV4LCBwYXJlbnRQYXRoKSB7XG4gICAgbGV0IGN1clBhdGggPSBgJHtwYXJlbnRQYXRofS8ke2VsZW1lbnRJbmRleH1gO1xuICAgIGxldCByZWN0ID0gZWxlbWVudC5yZWN0IHx8IHt9O1xuICAgIGxldCBzdWJ0cmVlID0ge1xuICAgICAgJ0AnOiB7XG4gICAgICAgIHR5cGU6IGBYQ1VJRWxlbWVudFR5cGUke2VsZW1lbnQudHlwZX1gLFxuICAgICAgICBlbmFibGVkOiBwYXJzZUludChlbGVtZW50LmlzRW5hYmxlZCwgMTApID09PSAxLFxuICAgICAgICB2aXNpYmxlOiBwYXJzZUludChlbGVtZW50LmlzVmlzaWJsZSwgMTApID09PSAxLFxuICAgICAgICB4OiByZWN0LngsXG4gICAgICAgIHk6IHJlY3QueSxcbiAgICAgICAgd2lkdGg6IHJlY3Qud2lkdGgsXG4gICAgICAgIGhlaWdodDogcmVjdC5oZWlnaHQsXG4gICAgICB9LFxuICAgICAgJz4nOiBbXVxuICAgIH07XG4gICAgaWYgKGVsZW1lbnQubmFtZSAhPT0gbnVsbCkge1xuICAgICAgc3VidHJlZVsnQCddLm5hbWUgPSBlbGVtZW50Lm5hbWU7XG4gICAgfVxuICAgIGlmIChlbGVtZW50LmxhYmVsICE9PSBudWxsKSB7XG4gICAgICBzdWJ0cmVlWydAJ10ubGFiZWwgPSBlbGVtZW50LmxhYmVsO1xuICAgIH1cbiAgICBpZiAoZWxlbWVudC52YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgc3VidHJlZVsnQCddLnZhbHVlID0gZWxlbWVudC52YWx1ZTtcbiAgICB9XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCAoZWxlbWVudC5jaGlsZHJlbiB8fCBbXSkubGVuZ3RoOyBpKyspIHtcbiAgICAgIHN1YnRyZWVbJz4nXS5wdXNoKGdldFRyZWUoZWxlbWVudC5jaGlsZHJlbltpXSwgaSwgY3VyUGF0aCkpO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgW2BYQ1VJRWxlbWVudFR5cGUke2VsZW1lbnQudHlwZX1gXTogc3VidHJlZVxuICAgIH07XG4gIH1cbiAgbGV0IHRyZWUgPSBnZXRUcmVlKHNyY1RyZWUsIDAsICcnKTtcbiAgcmV0dXJuIHRyZWU7XG59XG5cbmZ1bmN0aW9uIGdldFNvdXJjZVhtbCAoanNvblNvdXJjZSkge1xuICByZXR1cm4ganMyeG1sKCdBcHBpdW1BVVQnLCBqc29uU291cmNlLCB7XG4gICAgd3JhcEFycmF5OiB7ZW5hYmxlZDogZmFsc2UsIGVsZW1lbnROYW1lOiAnZWxlbWVudCd9LFxuICAgIGRlY2xhcmF0aW9uOiB7aW5jbHVkZTogdHJ1ZX0sXG4gICAgcHJldHR5UHJpbnRpbmc6IHtpbmRlbnRTdHJpbmc6ICcgICd9XG4gIH0pO1xufVxuXG5cbk9iamVjdC5hc3NpZ24oZXh0ZW5zaW9ucywgY29tbWFuZHMsIGhlbHBlcnMpO1xuZXhwb3J0IHsgY29tbWFuZHMsIGhlbHBlcnMgfTtcbmV4cG9ydCBkZWZhdWx0IGV4dGVuc2lvbnM7XG4iXSwiZmlsZSI6ImxpYi9jb21tYW5kcy9zb3VyY2UuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4ifQ==
129
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9zb3VyY2UuanMiXSwibmFtZXMiOlsiY29tbWFuZHMiLCJoZWxwZXJzIiwiZXh0ZW5zaW9ucyIsIkFQUElVTV9TUkNfWE1MIiwiZ2V0UGFnZVNvdXJjZSIsImlzV2ViQ29udGV4dCIsInNjcmlwdCIsImV4ZWN1dGVBdG9tIiwic2V0dGluZ3MiLCJnZXRTZXR0aW5ncyIsInVzZUpTT05Tb3VyY2UiLCJzcmNUcmVlIiwibW9iaWxlR2V0U291cmNlIiwiZm9ybWF0IiwiZ2V0U291cmNlWG1sIiwiZ2V0VHJlZUZvclhNTCIsImdldE5hdGl2ZVBhZ2VTb3VyY2UiLCJwcm94eUNvbW1hbmQiLCJwYXJzZXIiLCJ4bWxkb20iLCJET01QYXJzZXIiLCJ0cmVlIiwicGFyc2VGcm9tU3RyaW5nIiwiZG9jIiwiZG9jdW1lbnRFbGVtZW50IiwiYXBwZW5kQ2hpbGQiLCJYTUxTZXJpYWxpemVyIiwic2VyaWFsaXplVG9TdHJpbmciLCJvcHRzIiwiXyIsImlzU3RyaW5nIiwicGFyYW1zTWFwIiwiZXhjbHVkZWRBdHRyaWJ1dGVzIiwiZXhjbHVkZWRfYXR0cmlidXRlcyIsInF1ZXJ5IiwiT2JqZWN0IiwiZW50cmllcyIsIm1hcCIsImsiLCJ2IiwiZW5jb2RlVVJJQ29tcG9uZW50Iiwiam9pbiIsImdldFRyZWUiLCJlbGVtZW50IiwiZWxlbWVudEluZGV4IiwicGFyZW50UGF0aCIsImN1clBhdGgiLCJyZWN0Iiwic3VidHJlZSIsInR5cGUiLCJlbmFibGVkIiwicGFyc2VJbnQiLCJpc0VuYWJsZWQiLCJ2aXNpYmxlIiwiaXNWaXNpYmxlIiwieCIsInkiLCJ3aWR0aCIsImhlaWdodCIsIm5hbWUiLCJsYWJlbCIsInZhbHVlIiwiaSIsImNoaWxkcmVuIiwibGVuZ3RoIiwicHVzaCIsImpzb25Tb3VyY2UiLCJ3cmFwQXJyYXkiLCJlbGVtZW50TmFtZSIsImRlY2xhcmF0aW9uIiwiaW5jbHVkZSIsInByZXR0eVByaW50aW5nIiwiaW5kZW50U3RyaW5nIiwiYXNz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RUFBcURGLENBQUMsRUFBdEQsRUFBMEQ7QUFDeERkLE1BQUFBLE9BQU8sQ0FBQyxHQUFELENBQVAsQ0FBYWlCLElBQWIsQ0FBa0J2QixPQUFPLENBQUNDLE9BQU8sQ0FBQ29CLFFBQVIsQ0FBaUJELENBQWpCLENBQUQsRUFBc0JBLENBQXRCLEVBQXlCaEIsT0FBekIsQ0FBekI7QUFDRDs7QUFDRCxXQUFPO0FBQ0wsT0FBRSxrQkFBaUJILE9BQU8sQ0FBQ00sSUFBSyxFQUFoQyxHQUFvQ0Q7QUFEL0IsS0FBUDtBQUdEOztBQUNELE1BQUkzQixJQUFJLEdBQUdxQixPQUFPLENBQUMvQixPQUFELEVBQVUsQ0FBVixFQUFhLEVBQWIsQ0FBbEI7QUFDQSxTQUFPVSxJQUFQO0FBQ0Q7O0FBRUQsU0FBU1AsWUFBVCxDQUF1Qm9ELFVBQXZCLEVBQW1DO0FBQ2pDLFNBQU8sMkJBQU8sV0FBUCxFQUFvQkEsVUFBcEIsRUFBZ0M7QUFDckNDLElBQUFBLFNBQVMsRUFBRTtBQUFDakIsTUFBQUEsT0FBTyxFQUFFLEtBQVY7QUFBaUJrQixNQUFBQSxXQUFXLEVBQUU7QUFBOUIsS0FEMEI7QUFFckNDLElBQUFBLFdBQVcsRUFBRTtBQUFDQyxNQUFBQSxPQUFPLEVBQUU7QUFBVixLQUZ3QjtBQUdyQ0MsSUFBQUEsY0FBYyxFQUFFO0FBQUNDLE1BQUFBLFlBQVksRUFBRTtBQUFmO0FBSHFCLEdBQWhDLENBQVA7QUFLRDs7QUFHRHJDLE1BQU0sQ0FBQ3NDLE1BQVAsQ0FBY3ZFLFVBQWQsRUFBMEJGLFFBQTFCLEVBQW9DQyxPQUFwQztlQUVlQyxVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB4bWxkb20gZnJvbSAnQHhtbGRvbS94bWxkb20nO1xuaW1wb3J0IGpzMnhtbCBmcm9tICdqczJ4bWxwYXJzZXIyJztcblxuXG5sZXQgY29tbWFuZHMgPSB7fSwgaGVscGVycyA9IHt9LCBleHRlbnNpb25zID0ge307XG5cbmNvbnN0IEFQUElVTV9TUkNfWE1MID0gJzw/eG1sIHZlcnNpb249XCIxLjBcIiBlbmNvZGluZz1cIlVURi04XCI/PjxBcHBpdW1BVVQvPic7XG5cblxuY29tbWFuZHMuZ2V0UGFnZVNvdXJjZSA9IGFzeW5jIGZ1bmN0aW9uIGdldFBhZ2VTb3VyY2UgKCkge1xuICBpZiAodGhpcy5pc1dlYkNvbnRleHQoKSkge1xuICAgIGNvbnN0IHNjcmlwdCA9ICdyZXR1cm4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50Lm91dGVySFRNTCc7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuZXhlY3V0ZUF0b20oJ2V4ZWN1dGVfc2NyaXB0JywgW3NjcmlwdCwgW11dKTtcbiAgfVxuXG4gIGlmICgoYXdhaXQgdGhpcy5zZXR0aW5ncy5nZXRTZXR0aW5ncygpKS51c2VKU09OU291cmNlKSB7XG4gICAgY29uc3Qgc3JjVHJlZSA9IGF3YWl0IHRoaXMubW9iaWxlR2V0U291cmNlKHtmb3JtYXQ6ICdqc29uJ30pO1xuICAgIHJldHVybiBnZXRTb3VyY2VYbWwoZ2V0VHJlZUZvclhNTChzcmNUcmVlKSk7XG4gIH1cbiAgcmV0dXJuIGF3YWl0IHRoaXMuZ2V0TmF0aXZlUGFnZVNvdXJjZSgpO1xufTtcblxuaGVscGVycy5nZXROYXRpdmVQYWdlU291cmNlID0gYXN5bmMgZnVuY3Rpb24gZ2V0TmF0aXZlUGFnZVNvdXJjZSAoKSB7XG4gIGNvbnN0IHNyY1RyZWUgPSBhd2FpdCB0aGlzLnByb3h5Q29tbWFuZCgnL3NvdXJjZScsICdHRVQnKTtcbiAgY29uc3QgcGFyc2VyID0gbmV3IHhtbGRvbS5ET01QYXJzZXIoKTtcbiAgY29uc3QgdHJlZSA9IHBhcnNlci5wYXJzZUZyb21TdHJpbmcoc3JjVHJlZSk7XG4gIGNvbnN0IGRvYyA9IHBhcnNlci5wYXJzZUZyb21TdHJpbmcoQVBQSVVNX1NSQ19YTUwpO1xuICBkb2MuZG9jdW1lbnRFbGVtZW50LmFwcGVuZENoaWxkKHRyZWUuZG9jdW1lbnRFbGVtZW50KTtcbiAgcmV0dXJuIG5ldyB4bWxkb20uWE1MU2VyaWFsaXplcigpLnNlcmlhbGl6ZVRvU3RyaW5nKGRvYyk7XG59O1xuXG5oZWxwZXJzLm1vYmlsZUdldFNvdXJjZSA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZUdldFNvdXJjZSAob3B0cyA9IHt9KSB7XG4gIGlmICghXy5pc1N0cmluZyhvcHRzLmZvcm1hdCkpIHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5nZXROYXRpdmVQYWdlU291cmNlKCk7XG4gIH1cbiAgY29uc3QgcGFyYW1zTWFwID0ge1xuICAgIGZvcm1hdDogb3B0cy5mb3JtYXQsXG4gIH07XG4gIGlmIChvcHRzLmV4Y2x1ZGVkQXR0cmlidXRlcykge1xuICAgIHBhcmFtc01hcC5leGNsdWRlZF9hdHRyaWJ1dGVzID0gb3B0cy5leGNsdWRlZEF0dHJpYnV0ZXM7XG4gIH1cbiAgY29uc3QgcXVlcnkgPSBPYmplY3QuZW50cmllcyhwYXJhbXNNYXApXG4gICAgLm1hcCgoW2ssIHZdKSA9PiBgJHtlbmNvZGVVUklDb21wb25lbnQoayl9PSR7ZW5jb2RlVVJJQ29tcG9uZW50KHYpfWApXG4gICAgLmpvaW4oJyYnKTtcbiAgcmV0dXJuIGF3YWl0IHRoaXMucHJveHlDb21tYW5kKGAvc291cmNlPyR7cXVlcnl9YCwgJ0dFVCcpO1xufTtcblxuLyogV2lsbCBnZXQgSlNPTiBvZiB0aGUgZm9ybTpcbiAqICAgeyBpc0VuYWJsZWQ6ICcxJyxcbiAqICAgICBpc1Zpc2libGU6ICcxJyxcbiAqICAgICBmcmFtZTogJ3t7MCwgMH0sIHszNzUsIDY2N319JyxcbiAqICAgICBjaGlsZHJlbjpcbiAqICAgICAgWyB7IGlzRW5hYmxlZDogJzEnLFxuICogICAgICAgICAgaXNWaXNpYmxlOiAnMScsXG4gKiAgICAgICAgICBmcmFtZTogJ3t7MCwgMH0sIHszNzUsIDY2N319JyxcbiAqICAgICAgICAgIGNoaWxkcmVuOiBbXSxcbiAqICAgICAgICAgIHJlY3Q6IHsgeDogMCwgeTogMCwgd2lkdGg6IDM3NSwgaGVpZ2h0OiA2NjcgfSxcbiAqICAgICAgICAgIHZhbHVlOiBudWxsLFxuICogICAgICAgICAgbGFiZWw6IG51bGwsXG4gKiAgICAgICAgICB0eXBlOiAnT3RoZXInLFxuICogICAgICAgICAgbmFtZTogbnVsbCxcbiAqICAgICAgICAgIHJhd0lkZW50aWZpZXI6IG51bGwgfSxcbiAqICAgICByZWN0OiB7IG9yaWdpbjogeyB4OiAwLCB5OiAwIH0sIHNpemU6IHsgd2lkdGg6IDM3NSwgaGVpZ2h0OiA2NjcgfSB9LFxuICogICAgIHZhbHVlOiBudWxsLFxuICogICAgIGxhYmVsOiAnVUlDYXRhbG9nJyxcbiAqICAgICB0eXBlOiAnQXBwbGljYXRpb24nLFxuICogICAgIG5hbWU6ICdVSUNhdGFsb2cnLFxuICogICAgIHJhd0lkZW50aWZpZXI6IG51bGwgfVxuICovXG5mdW5jdGlvbiBnZXRUcmVlRm9yWE1MIChzcmNUcmVlKSB7XG4gIGZ1bmN0aW9uIGdldFRyZWUgKGVsZW1lbnQsIGVsZW1lbnRJbmRleCwgcGFyZW50UGF0aCkge1xuICAgIGxldCBjdXJQYXRoID0gYCR7cGFyZW50UGF0aH0vJHtlbGVtZW50SW5kZXh9YDtcbiAgICBsZXQgcmVjdCA9IGVsZW1lbnQucmVjdCB8fCB7fTtcbiAgICBsZXQgc3VidHJlZSA9IHtcbiAgICAgICdAJzoge1xuICAgICAgICB0eXBlOiBgWENVSUVsZW1lbnRUeXBlJHtlbGVtZW50LnR5cGV9YCxcbiAgICAgICAgZW5hYmxlZDogcGFyc2VJbnQoZWxlbWVudC5pc0VuYWJsZWQsIDEwKSA9PT0gMSxcbiAgICAgICAgdmlzaWJsZTogcGFyc2VJbnQoZWxlbWVudC5pc1Zpc2libGUsIDEwKSA9PT0gMSxcbiAgICAgICAgeDogcmVjdC54LFxuICAgICAgICB5OiByZWN0LnksXG4gICAgICAgIHdpZHRoOiByZWN0LndpZHRoLFxuICAgICAgICBoZWlnaHQ6IHJlY3QuaGVpZ2h0LFxuICAgICAgfSxcbiAgICAgICc+JzogW11cbiAgICB9O1xuICAgIGlmIChlbGVtZW50Lm5hbWUgIT09IG51bGwpIHtcbiAgICAgIHN1YnRyZWVbJ0AnXS5uYW1lID0gZWxlbWVudC5uYW1lO1xuICAgIH1cbiAgICBpZiAoZWxlbWVudC5sYWJlbCAhPT0gbnVsbCkge1xuICAgICAgc3VidHJlZVsnQCddLmxhYmVsID0gZWxlbWVudC5sYWJlbDtcbiAgICB9XG4gICAgaWYgKGVsZW1lbnQudmFsdWUgIT09IG51bGwpIHtcbiAgICAgIHN1YnRyZWVbJ0AnXS52YWx1ZSA9IGVsZW1lbnQudmFsdWU7XG4gICAgfVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgKGVsZW1lbnQuY2hpbGRyZW4gfHwgW10pLmxlbmd0aDsgaSsrKSB7XG4gICAgICBzdWJ0cmVlWyc+J10ucHVzaChnZXRUcmVlKGVsZW1lbnQuY2hpbGRyZW5baV0sIGksIGN1clBhdGgpKTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIFtgWENVSUVsZW1lbnRUeXBlJHtlbGVtZW50LnR5cGV9YF06IHN1YnRyZWVcbiAgICB9O1xuICB9XG4gIGxldCB0cmVlID0gZ2V0VHJlZShzcmNUcmVlLCAwLCAnJyk7XG4gIHJldHVybiB0cmVlO1xufVxuXG5mdW5jdGlvbiBnZXRTb3VyY2VYbWwgKGpzb25Tb3VyY2UpIHtcbiAgcmV0dXJuIGpzMnhtbCgnQXBwaXVtQVVUJywganNvblNvdXJjZSwge1xuICAgIHdyYXBBcnJheToge2VuYWJsZWQ6IGZhbHNlLCBlbGVtZW50TmFtZTogJ2VsZW1lbnQnfSxcbiAgICBkZWNsYXJhdGlvbjoge2luY2x1ZGU6IHRydWV9LFxuICAgIHByZXR0eVByaW50aW5nOiB7aW5kZW50U3RyaW5nOiAnICAnfVxuICB9KTtcbn1cblxuXG5PYmplY3QuYXNzaWduKGV4dGVuc2lvbnMsIGNvbW1hbmRzLCBoZWxwZXJzKTtcbmV4cG9ydCB7IGNvbW1hbmRzLCBoZWxwZXJzIH07XG5leHBvcnQgZGVmYXVsdCBleHRlbnNpb25zO1xuIl0sImZpbGUiOiJsaWIvY29tbWFuZHMvc291cmNlLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uIn0=
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.helpers = exports.default = exports.commands = void 0;
8
+ exports.default = exports.helpers = exports.commands = void 0;
9
9
 
10
10
  require("source-map-support/register");
11
11
 
@@ -6,8 +6,8 @@ Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
8
  exports.assertIDB = assertIDB;
9
- exports.default = exports.commands = void 0;
10
9
  exports.parseXCTestStdout = parseXCTestStdout;
10
+ exports.default = exports.commands = void 0;
11
11
 
12
12
  require("source-map-support/register");
13
13
 
@@ -7,9 +7,9 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.createJSCookie = createJSCookie;
9
9
  exports.createJWPCookie = createJWPCookie;
10
- exports.default = void 0;
11
- exports.expireCookie = expireCookie;
12
10
  exports.getValue = getValue;
11
+ exports.expireCookie = expireCookie;
12
+ exports.default = void 0;
13
13
 
14
14
  require("source-map-support/register");
15
15
 
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.desiredCapConstraints = exports.default = exports.PLATFORM_NAME_TVOS = exports.PLATFORM_NAME_IOS = void 0;
6
+ exports.default = exports.PLATFORM_NAME_TVOS = exports.PLATFORM_NAME_IOS = exports.desiredCapConstraints = void 0;
7
7
 
8
8
  require("source-map-support/register");
9
9
 
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.default = exports.RotatingLog = exports.MAX_LOG_ENTRIES_COUNT = void 0;
8
+ exports.default = exports.MAX_LOG_ENTRIES_COUNT = exports.RotatingLog = void 0;
9
9
 
10
10
  require("source-map-support/register");
11
11
 
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.default = exports.XCUITestDriver = void 0;
8
+ exports.XCUITestDriver = exports.default = void 0;
9
9
 
10
10
  require("source-map-support/register");
11
11
 
@@ -7,9 +7,9 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.getConnectedDevices = getConnectedDevices;
9
9
  exports.getOSVersion = getOSVersion;
10
- exports.getRealDeviceObj = getRealDeviceObj;
11
- exports.installToRealDevice = installToRealDevice;
12
10
  exports.runRealDeviceReset = runRealDeviceReset;
11
+ exports.installToRealDevice = installToRealDevice;
12
+ exports.getRealDeviceObj = getRealDeviceObj;
13
13
 
14
14
  require("source-map-support/register");
15
15
 
@@ -7,13 +7,13 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.createSim = createSim;
9
9
  exports.getExistingSim = getExistingSim;
10
- exports.installToSimulator = installToSimulator;
11
10
  exports.runSimulatorReset = runSimulatorReset;
11
+ exports.installToSimulator = installToSimulator;
12
+ exports.shutdownSimulator = shutdownSimulator;
13
+ exports.shutdownOtherSimulators = shutdownOtherSimulators;
12
14
  exports.setLocale = setLocale;
13
- exports.setLocaleAndPreferences = setLocaleAndPreferences;
14
15
  exports.setPreferences = setPreferences;
15
- exports.shutdownOtherSimulators = shutdownOtherSimulators;
16
- exports.shutdownSimulator = shutdownSimulator;
16
+ exports.setLocaleAndPreferences = setLocaleAndPreferences;
17
17
 
18
18
  require("source-map-support/register");
19
19
 
@@ -5,23 +5,23 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.DEFAULT_TIMEOUT_KEY = void 0;
9
- exports.checkAppPresent = checkAppPresent;
10
- exports.clearLogs = clearLogs;
11
- exports.clearSystemFiles = clearSystemFiles;
12
8
  exports.detectUdid = detectUdid;
13
- exports.encodeBase64OrUpload = encodeBase64OrUpload;
14
- exports.getAndCheckIosSdkVersion = getAndCheckIosSdkVersion;
15
9
  exports.getAndCheckXcodeVersion = getAndCheckXcodeVersion;
10
+ exports.getAndCheckIosSdkVersion = getAndCheckIosSdkVersion;
11
+ exports.checkAppPresent = checkAppPresent;
16
12
  exports.getDriverInfo = getDriverInfo;
17
- exports.getPIDsListeningOnPort = getPIDsListeningOnPort;
18
- exports.isLocalHost = isLocalHost;
19
- exports.markSystemFilesForCleanup = markSystemFilesForCleanup;
13
+ exports.clearSystemFiles = clearSystemFiles;
14
+ exports.translateDeviceName = translateDeviceName;
20
15
  exports.normalizeCommandTimeouts = normalizeCommandTimeouts;
21
- exports.normalizePlatformVersion = normalizePlatformVersion;
16
+ exports.markSystemFilesForCleanup = markSystemFilesForCleanup;
22
17
  exports.printUser = printUser;
18
+ exports.getPIDsListeningOnPort = getPIDsListeningOnPort;
19
+ exports.encodeBase64OrUpload = encodeBase64OrUpload;
23
20
  exports.removeAllSessionWebSocketHandlers = removeAllSessionWebSocketHandlers;
24
- exports.translateDeviceName = translateDeviceName;
21
+ exports.isLocalHost = isLocalHost;
22
+ exports.normalizePlatformVersion = normalizePlatformVersion;
23
+ exports.clearLogs = clearLogs;
24
+ exports.DEFAULT_TIMEOUT_KEY = void 0;
25
25
 
26
26
  require("source-map-support/register");
27
27
 
@@ -1,5 +1,5 @@
1
1
  import _ from 'lodash';
2
- import xmldom from 'xmldom';
2
+ import xmldom from '@xmldom/xmldom';
3
3
  import js2xml from 'js2xmlparser2';
4
4
 
5
5
 
@@ -15,22 +15,18 @@ commands.getPageSource = async function getPageSource () {
15
15
  }
16
16
 
17
17
  if ((await this.settings.getSettings()).useJSONSource) {
18
- let srcTree = await this.mobileGetSource({format: 'json'});
18
+ const srcTree = await this.mobileGetSource({format: 'json'});
19
19
  return getSourceXml(getTreeForXML(srcTree));
20
20
  }
21
21
  return await this.getNativePageSource();
22
22
  };
23
23
 
24
24
  helpers.getNativePageSource = async function getNativePageSource () {
25
- let srcTree = await this.proxyCommand('/source', 'GET');
26
-
27
- let parser = new xmldom.DOMParser();
28
-
29
- let tree = parser.parseFromString(srcTree);
30
-
31
- let doc = parser.parseFromString(APPIUM_SRC_XML);
25
+ const srcTree = await this.proxyCommand('/source', 'GET');
26
+ const parser = new xmldom.DOMParser();
27
+ const tree = parser.parseFromString(srcTree);
28
+ const doc = parser.parseFromString(APPIUM_SRC_XML);
32
29
  doc.documentElement.appendChild(tree.documentElement);
33
-
34
30
  return new xmldom.XMLSerializer().serializeToString(doc);
35
31
  };
36
32
 
package/package.json CHANGED
@@ -8,7 +8,7 @@
8
8
  "xcuitest",
9
9
  "xctest"
10
10
  ],
11
- "version": "3.56.0",
11
+ "version": "3.56.1",
12
12
  "author": "appium",
13
13
  "license": "Apache-2.0",
14
14
  "repository": {
@@ -47,6 +47,7 @@
47
47
  ],
48
48
  "dependencies": {
49
49
  "@babel/runtime": "^7.0.0",
50
+ "@xmldom/xmldom": "^0.x",
50
51
  "appium-base-driver": "^7.0.0",
51
52
  "appium-idb": "^0.x",
52
53
  "appium-ios-device": "^1.8.0",
@@ -59,7 +60,7 @@
59
60
  "asyncbox": "^2.3.1",
60
61
  "bluebird": "^3.5.1",
61
62
  "css-selector-parser": "^1.4.1",
62
- "js2xmlparser2": "^0.2.0",
63
+ "js2xmlparser2": "^0.x",
63
64
  "lodash": "^4.17.10",
64
65
  "lru-cache": "^6.0.0",
65
66
  "moment": "^2.24.0",
@@ -67,10 +68,9 @@
67
68
  "node-simctl": "^6.4.0",
68
69
  "portscanner": "2.2.0",
69
70
  "semver": "^7.0.0",
70
- "source-map-support": "^0.5.5",
71
+ "source-map-support": "^0.x",
71
72
  "teen_process": "^1.14.0",
72
- "ws": "^8.0.0",
73
- "xmldom": "^0.x"
73
+ "ws": "^8.0.0"
74
74
  },
75
75
  "scripts": {
76
76
  "clean": "rm -rf node_modules && rm -f package-lock.json && npm install",