appium 2.0.0-beta.40 → 2.0.0-beta.43

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.
Files changed (59) hide show
  1. package/build/lib/appium.d.ts.map +1 -1
  2. package/build/lib/appium.js +14 -15
  3. package/build/lib/cli/args.d.ts +2 -5
  4. package/build/lib/cli/args.d.ts.map +1 -1
  5. package/build/lib/cli/args.js +2 -2
  6. package/build/lib/cli/driver-command.d.ts +2 -1
  7. package/build/lib/cli/driver-command.d.ts.map +1 -1
  8. package/build/lib/cli/driver-command.js +5 -3
  9. package/build/lib/cli/extension-command.d.ts +5 -1
  10. package/build/lib/cli/extension-command.d.ts.map +1 -1
  11. package/build/lib/cli/extension-command.js +4 -3
  12. package/build/lib/cli/extension.d.ts +8 -4
  13. package/build/lib/cli/extension.d.ts.map +1 -1
  14. package/build/lib/cli/extension.js +2 -1
  15. package/build/lib/cli/parser.d.ts +5 -1
  16. package/build/lib/cli/parser.d.ts.map +1 -1
  17. package/build/lib/cli/parser.js +19 -6
  18. package/build/lib/cli/plugin-command.d.ts +2 -1
  19. package/build/lib/cli/plugin-command.d.ts.map +1 -1
  20. package/build/lib/cli/plugin-command.js +5 -3
  21. package/build/lib/config-file.d.ts.map +1 -1
  22. package/build/lib/config-file.js +8 -6
  23. package/build/lib/config.d.ts +10 -2
  24. package/build/lib/config.d.ts.map +1 -1
  25. package/build/lib/config.js +30 -32
  26. package/build/lib/extension/extension-config.d.ts.map +1 -1
  27. package/build/lib/extension/extension-config.js +3 -3
  28. package/build/lib/extension/index.js +6 -5
  29. package/build/lib/extension/package-changed.js +2 -4
  30. package/build/lib/main.d.ts.map +1 -1
  31. package/build/lib/main.js +25 -31
  32. package/build/lib/schema/arg-spec.d.ts +5 -5
  33. package/build/lib/schema/arg-spec.d.ts.map +1 -1
  34. package/build/lib/schema/arg-spec.js +2 -2
  35. package/build/lib/schema/cli-args.js +5 -7
  36. package/build/lib/schema/schema.d.ts +3 -3
  37. package/build/lib/schema/schema.d.ts.map +1 -1
  38. package/build/lib/schema/schema.js +2 -4
  39. package/build/tsconfig.tsbuildinfo +1 -1
  40. package/build/types/cli.d.ts +16 -5
  41. package/build/types/cli.d.ts.map +1 -1
  42. package/lib/appium.js +8 -5
  43. package/lib/cli/args.js +3 -5
  44. package/lib/cli/driver-command.js +2 -2
  45. package/lib/cli/extension-command.js +3 -2
  46. package/lib/cli/extension.js +16 -4
  47. package/lib/cli/parser.js +27 -5
  48. package/lib/cli/plugin-command.js +2 -2
  49. package/lib/config-file.js +4 -2
  50. package/lib/config.js +40 -26
  51. package/lib/extension/extension-config.js +4 -6
  52. package/lib/main.js +21 -14
  53. package/lib/schema/arg-spec.js +1 -1
  54. package/lib/schema/schema.js +1 -1
  55. package/package.json +27 -17
  56. package/scripts/autoinstall-extensions.js +11 -3
  57. package/test.d.ts +7 -0
  58. package/test.js +13 -0
  59. package/types/cli.ts +23 -19
@@ -61,11 +61,13 @@ class PluginCommand extends _extensionCommand.default {
61
61
 
62
62
  async run({
63
63
  plugin,
64
- scriptName
64
+ scriptName,
65
+ extraArgs
65
66
  }) {
66
67
  return await super._run({
67
68
  installSpec: plugin,
68
- scriptName
69
+ scriptName,
70
+ extraArgs
69
71
  });
70
72
  }
71
73
 
@@ -87,4 +89,4 @@ class PluginCommand extends _extensionCommand.default {
87
89
  }
88
90
 
89
91
  exports.default = PluginCommand;
90
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSRVFfUExVR0lOX0ZJRUxEUyIsIlBsdWdpbkNvbW1hbmQiLCJFeHRlbnNpb25Db21tYW5kIiwiY29uc3RydWN0b3IiLCJjb25maWciLCJqc29uIiwia25vd25FeHRlbnNpb25zIiwiS05PV05fUExVR0lOUyIsImluc3RhbGwiLCJwbHVnaW4iLCJpbnN0YWxsVHlwZSIsInBhY2thZ2VOYW1lIiwiX2luc3RhbGwiLCJpbnN0YWxsU3BlYyIsInVuaW5zdGFsbCIsIl91bmluc3RhbGwiLCJ1cGRhdGUiLCJ1bnNhZmUiLCJfdXBkYXRlIiwicnVuIiwic2NyaXB0TmFtZSIsIl9ydW4iLCJnZXRQb3N0SW5zdGFsbFRleHQiLCJleHROYW1lIiwiZXh0RGF0YSIsInZlcnNpb24iLCJncmVlbiIsInZhbGlkYXRlRXh0ZW5zaW9uRmllbGRzIiwicGx1Z2luTWV0YWRhdGEiLCJtaXNzaW5nRmllbGRzIiwicmVkdWNlIiwiYWNjIiwiZmllbGQiLCJfIiwiaXNFbXB0eSIsIkVycm9yIiwiSlNPTiIsInN0cmluZ2lmeSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9jbGkvcGx1Z2luLWNvbW1hbmQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBFeHRlbnNpb25Db21tYW5kIGZyb20gJy4vZXh0ZW5zaW9uLWNvbW1hbmQnO1xuaW1wb3J0IHtLTk9XTl9QTFVHSU5TfSBmcm9tICcuLi9jb25zdGFudHMnO1xuXG5jb25zdCBSRVFfUExVR0lOX0ZJRUxEUyA9IFsncGx1Z2luTmFtZScsICdtYWluQ2xhc3MnXTtcblxuLyoqXG4gKiBAZXh0ZW5kcyB7RXh0ZW5zaW9uQ29tbWFuZDxQbHVnaW5UeXBlPn1cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGx1Z2luQ29tbWFuZCBleHRlbmRzIEV4dGVuc2lvbkNvbW1hbmQge1xuICAvKipcbiAgICpcbiAgICogQHBhcmFtIHtpbXBvcnQoJy4vZXh0ZW5zaW9uLWNvbW1hbmQnKS5FeHRlbnNpb25Db21tYW5kT3B0aW9uczxQbHVnaW5UeXBlPn0gb3B0c1xuICAgKi9cbiAgY29uc3RydWN0b3Ioe2NvbmZpZywganNvbn0pIHtcbiAgICBzdXBlcih7Y29uZmlnLCBqc29ufSk7XG4gICAgdGhpcy5rbm93bkV4dGVuc2lvbnMgPSBLTk9XTl9QTFVHSU5TO1xuICB9XG5cbiAgYXN5bmMgaW5zdGFsbCh7cGx1Z2luLCBpbnN0YWxsVHlwZSwgcGFja2FnZU5hbWV9KSB7XG4gICAgcmV0dXJuIGF3YWl0IHN1cGVyLl9pbnN0YWxsKHtcbiAgICAgIGluc3RhbGxTcGVjOiBwbHVnaW4sXG4gICAgICBpbnN0YWxsVHlwZSxcbiAgICAgIHBhY2thZ2VOYW1lLFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgdW5pbnN0YWxsKHtwbHVnaW59KSB7XG4gICAgcmV0dXJuIGF3YWl0IHN1cGVyLl91bmluc3RhbGwoe2luc3RhbGxTcGVjOiBwbHVnaW59KTtcbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZSh7cGx1Z2luLCB1bnNhZmV9KSB7XG4gICAgcmV0dXJuIGF3YWl0IHN1cGVyLl91cGRhdGUoe2luc3RhbGxTcGVjOiBwbHVnaW4sIHVuc2FmZX0pO1xuICB9XG5cbiAgYXN5bmMgcnVuKHtwbHVnaW4sIHNjcmlwdE5hbWV9KSB7XG4gICAgcmV0dXJuIGF3YWl0IHN1cGVyLl9ydW4oe2luc3RhbGxTcGVjOiBwbHVnaW4sIHNjcmlwdE5hbWV9KTtcbiAgfVxuXG4gIGdldFBvc3RJbnN0YWxsVGV4dCh7ZXh0TmFtZSwgZXh0RGF0YX0pIHtcbiAgICByZXR1cm4gYFBsdWdpbiAke2V4dE5hbWV9QCR7ZXh0RGF0YS52ZXJzaW9ufSBzdWNjZXNzZnVsbHkgaW5zdGFsbGVkYC5ncmVlbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgZmllbGRzIGluIGBhcHBpdW1gIGZpZWxkIG9mIGBkcml2ZXJNZXRhZGF0YWBcbiAgICpcbiAgICogRm9yIGFueSBgcGFja2FnZS5qc29uYCBmaWVsZHMgd2hpY2ggYSBkcml2ZXIgcmVxdWlyZXMsIHZhbGlkYXRlIHRoZSB0eXBlIG9mXG4gICAqIHRob3NlIGZpZWxkcyBvbiB0aGUgYHBhY2thZ2UuanNvbmAgZGF0YSwgdGhyb3dpbmcgYW4gZXJyb3IgaWYgYW55dGhpbmcgaXNcbiAgICogYW1pc3MuXG4gICAqIEBwYXJhbSB7aW1wb3J0KCdhcHBpdW0vdHlwZXMnKS5FeHRNZXRhZGF0YTxQbHVnaW5UeXBlPn0gcGx1Z2luTWV0YWRhdGFcbiAgICogQHBhcmFtIHtzdHJpbmd9IGluc3RhbGxTcGVjXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAgdmFsaWRhdGVFeHRlbnNpb25GaWVsZHMocGx1Z2luTWV0YWRhdGEsIGluc3RhbGxTcGVjKSB7XG4gICAgY29uc3QgbWlzc2luZ0ZpZWxkcyA9IFJFUV9QTFVHSU5fRklFTERTLnJlZHVjZShcbiAgICAgIChhY2MsIGZpZWxkKSA9PiAocGx1Z2luTWV0YWRhdGFbZmllbGRdID8gYWNjIDogWy4uLmFjYywgZmllbGRdKSxcbiAgICAgIFtdXG4gICAgKTtcblxuICAgIGlmICghXy5pc0VtcHR5KG1pc3NpbmdGaWVsZHMpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBJbnN0YWxsZWQgcGx1Z2luIFwiJHtpbnN0YWxsU3BlY31cIiBkaWQgbm90IGV4cG9zZSBjb3JyZWN0IGZpZWxkcyBmb3IgY29tcGFiaWxpdHkgYCArXG4gICAgICAgICAgYHdpdGggQXBwaXVtLiBNaXNzaW5nIGZpZWxkczogJHtKU09OLnN0cmluZ2lmeShtaXNzaW5nRmllbGRzKX1gXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ0BhcHBpdW0vdHlwZXMnKS5QbHVnaW5UeXBlfSBQbHVnaW5UeXBlXG4gKi9cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFFQSxNQUFNQSxpQkFBaUIsR0FBRyxDQUFDLFlBQUQsRUFBZSxXQUFmLENBQTFCOztBQUtlLE1BQU1DLGFBQU4sU0FBNEJDLHlCQUE1QixDQUE2QztFQUsxREMsV0FBVyxDQUFDO0lBQUNDLE1BQUQ7SUFBU0M7RUFBVCxDQUFELEVBQWlCO0lBQzFCLE1BQU07TUFBQ0QsTUFBRDtNQUFTQztJQUFULENBQU47SUFDQSxLQUFLQyxlQUFMLEdBQXVCQyx3QkFBdkI7RUFDRDs7RUFFWSxNQUFQQyxPQUFPLENBQUM7SUFBQ0MsTUFBRDtJQUFTQyxXQUFUO0lBQXNCQztFQUF0QixDQUFELEVBQXFDO0lBQ2hELE9BQU8sTUFBTSxNQUFNQyxRQUFOLENBQWU7TUFDMUJDLFdBQVcsRUFBRUosTUFEYTtNQUUxQkMsV0FGMEI7TUFHMUJDO0lBSDBCLENBQWYsQ0FBYjtFQUtEOztFQUVjLE1BQVRHLFNBQVMsQ0FBQztJQUFDTDtFQUFELENBQUQsRUFBVztJQUN4QixPQUFPLE1BQU0sTUFBTU0sVUFBTixDQUFpQjtNQUFDRixXQUFXLEVBQUVKO0lBQWQsQ0FBakIsQ0FBYjtFQUNEOztFQUVXLE1BQU5PLE1BQU0sQ0FBQztJQUFDUCxNQUFEO0lBQVNRO0VBQVQsQ0FBRCxFQUFtQjtJQUM3QixPQUFPLE1BQU0sTUFBTUMsT0FBTixDQUFjO01BQUNMLFdBQVcsRUFBRUosTUFBZDtNQUFzQlE7SUFBdEIsQ0FBZCxDQUFiO0VBQ0Q7O0VBRVEsTUFBSEUsR0FBRyxDQUFDO0lBQUNWLE1BQUQ7SUFBU1c7RUFBVCxDQUFELEVBQXVCO0lBQzlCLE9BQU8sTUFBTSxNQUFNQyxJQUFOLENBQVc7TUFBQ1IsV0FBVyxFQUFFSixNQUFkO01BQXNCVztJQUF0QixDQUFYLENBQWI7RUFDRDs7RUFFREUsa0JBQWtCLENBQUM7SUFBQ0MsT0FBRDtJQUFVQztFQUFWLENBQUQsRUFBcUI7SUFDckMsT0FBUSxVQUFTRCxPQUFRLElBQUdDLE9BQU8sQ0FBQ0MsT0FBUSx5QkFBckMsQ0FBOERDLEtBQXJFO0VBQ0Q7O0VBWURDLHVCQUF1QixDQUFDQyxjQUFELEVBQWlCZixXQUFqQixFQUE4QjtJQUNuRCxNQUFNZ0IsYUFBYSxHQUFHN0IsaUJBQWlCLENBQUM4QixNQUFsQixDQUNwQixDQUFDQyxHQUFELEVBQU1DLEtBQU4sS0FBaUJKLGNBQWMsQ0FBQ0ksS0FBRCxDQUFkLEdBQXdCRCxHQUF4QixHQUE4QixDQUFDLEdBQUdBLEdBQUosRUFBU0MsS0FBVCxDQUQzQixFQUVwQixFQUZvQixDQUF0Qjs7SUFLQSxJQUFJLENBQUNDLGVBQUEsQ0FBRUMsT0FBRixDQUFVTCxhQUFWLENBQUwsRUFBK0I7TUFDN0IsTUFBTSxJQUFJTSxLQUFKLENBQ0gscUJBQW9CdEIsV0FBWSxrREFBakMsR0FDRyxnQ0FBK0J1QixJQUFJLENBQUNDLFNBQUwsQ0FBZVIsYUFBZixDQUE4QixFQUY1RCxDQUFOO0lBSUQ7RUFDRjs7QUF4RHlEIn0=
92
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSRVFfUExVR0lOX0ZJRUxEUyIsIlBsdWdpbkNvbW1hbmQiLCJFeHRlbnNpb25Db21tYW5kIiwiY29uc3RydWN0b3IiLCJjb25maWciLCJqc29uIiwia25vd25FeHRlbnNpb25zIiwiS05PV05fUExVR0lOUyIsImluc3RhbGwiLCJwbHVnaW4iLCJpbnN0YWxsVHlwZSIsInBhY2thZ2VOYW1lIiwiX2luc3RhbGwiLCJpbnN0YWxsU3BlYyIsInVuaW5zdGFsbCIsIl91bmluc3RhbGwiLCJ1cGRhdGUiLCJ1bnNhZmUiLCJfdXBkYXRlIiwicnVuIiwic2NyaXB0TmFtZSIsImV4dHJhQXJncyIsIl9ydW4iLCJnZXRQb3N0SW5zdGFsbFRleHQiLCJleHROYW1lIiwiZXh0RGF0YSIsInZlcnNpb24iLCJncmVlbiIsInZhbGlkYXRlRXh0ZW5zaW9uRmllbGRzIiwicGx1Z2luTWV0YWRhdGEiLCJtaXNzaW5nRmllbGRzIiwicmVkdWNlIiwiYWNjIiwiZmllbGQiLCJfIiwiaXNFbXB0eSIsIkVycm9yIiwiSlNPTiIsInN0cmluZ2lmeSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9jbGkvcGx1Z2luLWNvbW1hbmQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBFeHRlbnNpb25Db21tYW5kIGZyb20gJy4vZXh0ZW5zaW9uLWNvbW1hbmQnO1xuaW1wb3J0IHtLTk9XTl9QTFVHSU5TfSBmcm9tICcuLi9jb25zdGFudHMnO1xuXG5jb25zdCBSRVFfUExVR0lOX0ZJRUxEUyA9IFsncGx1Z2luTmFtZScsICdtYWluQ2xhc3MnXTtcblxuLyoqXG4gKiBAZXh0ZW5kcyB7RXh0ZW5zaW9uQ29tbWFuZDxQbHVnaW5UeXBlPn1cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGx1Z2luQ29tbWFuZCBleHRlbmRzIEV4dGVuc2lvbkNvbW1hbmQge1xuICAvKipcbiAgICpcbiAgICogQHBhcmFtIHtpbXBvcnQoJy4vZXh0ZW5zaW9uLWNvbW1hbmQnKS5FeHRlbnNpb25Db21tYW5kT3B0aW9uczxQbHVnaW5UeXBlPn0gb3B0c1xuICAgKi9cbiAgY29uc3RydWN0b3Ioe2NvbmZpZywganNvbn0pIHtcbiAgICBzdXBlcih7Y29uZmlnLCBqc29ufSk7XG4gICAgdGhpcy5rbm93bkV4dGVuc2lvbnMgPSBLTk9XTl9QTFVHSU5TO1xuICB9XG5cbiAgYXN5bmMgaW5zdGFsbCh7cGx1Z2luLCBpbnN0YWxsVHlwZSwgcGFja2FnZU5hbWV9KSB7XG4gICAgcmV0dXJuIGF3YWl0IHN1cGVyLl9pbnN0YWxsKHtcbiAgICAgIGluc3RhbGxTcGVjOiBwbHVnaW4sXG4gICAgICBpbnN0YWxsVHlwZSxcbiAgICAgIHBhY2thZ2VOYW1lLFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgdW5pbnN0YWxsKHtwbHVnaW59KSB7XG4gICAgcmV0dXJuIGF3YWl0IHN1cGVyLl91bmluc3RhbGwoe2luc3RhbGxTcGVjOiBwbHVnaW59KTtcbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZSh7cGx1Z2luLCB1bnNhZmV9KSB7XG4gICAgcmV0dXJuIGF3YWl0IHN1cGVyLl91cGRhdGUoe2luc3RhbGxTcGVjOiBwbHVnaW4sIHVuc2FmZX0pO1xuICB9XG5cbiAgYXN5bmMgcnVuKHtwbHVnaW4sIHNjcmlwdE5hbWUsIGV4dHJhQXJnc30pIHtcbiAgICByZXR1cm4gYXdhaXQgc3VwZXIuX3J1bih7aW5zdGFsbFNwZWM6IHBsdWdpbiwgc2NyaXB0TmFtZSwgZXh0cmFBcmdzfSk7XG4gIH1cblxuICBnZXRQb3N0SW5zdGFsbFRleHQoe2V4dE5hbWUsIGV4dERhdGF9KSB7XG4gICAgcmV0dXJuIGBQbHVnaW4gJHtleHROYW1lfUAke2V4dERhdGEudmVyc2lvbn0gc3VjY2Vzc2Z1bGx5IGluc3RhbGxlZGAuZ3JlZW47XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIGZpZWxkcyBpbiBgYXBwaXVtYCBmaWVsZCBvZiBgZHJpdmVyTWV0YWRhdGFgXG4gICAqXG4gICAqIEZvciBhbnkgYHBhY2thZ2UuanNvbmAgZmllbGRzIHdoaWNoIGEgZHJpdmVyIHJlcXVpcmVzLCB2YWxpZGF0ZSB0aGUgdHlwZSBvZlxuICAgKiB0aG9zZSBmaWVsZHMgb24gdGhlIGBwYWNrYWdlLmpzb25gIGRhdGEsIHRocm93aW5nIGFuIGVycm9yIGlmIGFueXRoaW5nIGlzXG4gICAqIGFtaXNzLlxuICAgKiBAcGFyYW0ge2ltcG9ydCgnYXBwaXVtL3R5cGVzJykuRXh0TWV0YWRhdGE8UGx1Z2luVHlwZT59IHBsdWdpbk1ldGFkYXRhXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBpbnN0YWxsU3BlY1xuICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICovXG4gIHZhbGlkYXRlRXh0ZW5zaW9uRmllbGRzKHBsdWdpbk1ldGFkYXRhLCBpbnN0YWxsU3BlYykge1xuICAgIGNvbnN0IG1pc3NpbmdGaWVsZHMgPSBSRVFfUExVR0lOX0ZJRUxEUy5yZWR1Y2UoXG4gICAgICAoYWNjLCBmaWVsZCkgPT4gKHBsdWdpbk1ldGFkYXRhW2ZpZWxkXSA/IGFjYyA6IFsuLi5hY2MsIGZpZWxkXSksXG4gICAgICBbXVxuICAgICk7XG5cbiAgICBpZiAoIV8uaXNFbXB0eShtaXNzaW5nRmllbGRzKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgSW5zdGFsbGVkIHBsdWdpbiBcIiR7aW5zdGFsbFNwZWN9XCIgZGlkIG5vdCBleHBvc2UgY29ycmVjdCBmaWVsZHMgZm9yIGNvbXBhYmlsaXR5IGAgK1xuICAgICAgICAgIGB3aXRoIEFwcGl1bS4gTWlzc2luZyBmaWVsZHM6ICR7SlNPTi5zdHJpbmdpZnkobWlzc2luZ0ZpZWxkcyl9YFxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdAYXBwaXVtL3R5cGVzJykuUGx1Z2luVHlwZX0gUGx1Z2luVHlwZVxuICovXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBRUEsTUFBTUEsaUJBQWlCLEdBQUcsQ0FBQyxZQUFELEVBQWUsV0FBZixDQUExQjs7QUFLZSxNQUFNQyxhQUFOLFNBQTRCQyx5QkFBNUIsQ0FBNkM7RUFLMURDLFdBQVcsQ0FBQztJQUFDQyxNQUFEO0lBQVNDO0VBQVQsQ0FBRCxFQUFpQjtJQUMxQixNQUFNO01BQUNELE1BQUQ7TUFBU0M7SUFBVCxDQUFOO0lBQ0EsS0FBS0MsZUFBTCxHQUF1QkMsd0JBQXZCO0VBQ0Q7O0VBRVksTUFBUEMsT0FBTyxDQUFDO0lBQUNDLE1BQUQ7SUFBU0MsV0FBVDtJQUFzQkM7RUFBdEIsQ0FBRCxFQUFxQztJQUNoRCxPQUFPLE1BQU0sTUFBTUMsUUFBTixDQUFlO01BQzFCQyxXQUFXLEVBQUVKLE1BRGE7TUFFMUJDLFdBRjBCO01BRzFCQztJQUgwQixDQUFmLENBQWI7RUFLRDs7RUFFYyxNQUFURyxTQUFTLENBQUM7SUFBQ0w7RUFBRCxDQUFELEVBQVc7SUFDeEIsT0FBTyxNQUFNLE1BQU1NLFVBQU4sQ0FBaUI7TUFBQ0YsV0FBVyxFQUFFSjtJQUFkLENBQWpCLENBQWI7RUFDRDs7RUFFVyxNQUFOTyxNQUFNLENBQUM7SUFBQ1AsTUFBRDtJQUFTUTtFQUFULENBQUQsRUFBbUI7SUFDN0IsT0FBTyxNQUFNLE1BQU1DLE9BQU4sQ0FBYztNQUFDTCxXQUFXLEVBQUVKLE1BQWQ7TUFBc0JRO0lBQXRCLENBQWQsQ0FBYjtFQUNEOztFQUVRLE1BQUhFLEdBQUcsQ0FBQztJQUFDVixNQUFEO0lBQVNXLFVBQVQ7SUFBcUJDO0VBQXJCLENBQUQsRUFBa0M7SUFDekMsT0FBTyxNQUFNLE1BQU1DLElBQU4sQ0FBVztNQUFDVCxXQUFXLEVBQUVKLE1BQWQ7TUFBc0JXLFVBQXRCO01BQWtDQztJQUFsQyxDQUFYLENBQWI7RUFDRDs7RUFFREUsa0JBQWtCLENBQUM7SUFBQ0MsT0FBRDtJQUFVQztFQUFWLENBQUQsRUFBcUI7SUFDckMsT0FBUSxVQUFTRCxPQUFRLElBQUdDLE9BQU8sQ0FBQ0MsT0FBUSx5QkFBckMsQ0FBOERDLEtBQXJFO0VBQ0Q7O0VBWURDLHVCQUF1QixDQUFDQyxjQUFELEVBQWlCaEIsV0FBakIsRUFBOEI7SUFDbkQsTUFBTWlCLGFBQWEsR0FBRzlCLGlCQUFpQixDQUFDK0IsTUFBbEIsQ0FDcEIsQ0FBQ0MsR0FBRCxFQUFNQyxLQUFOLEtBQWlCSixjQUFjLENBQUNJLEtBQUQsQ0FBZCxHQUF3QkQsR0FBeEIsR0FBOEIsQ0FBQyxHQUFHQSxHQUFKLEVBQVNDLEtBQVQsQ0FEM0IsRUFFcEIsRUFGb0IsQ0FBdEI7O0lBS0EsSUFBSSxDQUFDQyxlQUFBLENBQUVDLE9BQUYsQ0FBVUwsYUFBVixDQUFMLEVBQStCO01BQzdCLE1BQU0sSUFBSU0sS0FBSixDQUNILHFCQUFvQnZCLFdBQVksa0RBQWpDLEdBQ0csZ0NBQStCd0IsSUFBSSxDQUFDQyxTQUFMLENBQWVSLGFBQWYsQ0FBOEIsRUFGNUQsQ0FBTjtJQUlEO0VBQ0Y7O0FBeER5RCJ9
@@ -1 +1 @@
1
- {"version":3,"file":"config-file.d.ts","sourceRoot":"","sources":["../../lib/config-file.js"],"names":[],"mappings":"AAkEA;;;;;;;;;;;;;;GAcG;AACH,sCAPW,OAAO,KAAK,EAAE,WAAW,EAAE,WAC3B,oBAAoB,CAAC,QAAQ,CAAC,GAAC,GAAG,iDAIhC,MAAM,CAUlB;AAED;;;;;;;;GAQG;AACH,yGAFa,QAAQ,oBAAoB,CAAC,CAwCzC;AAED;;;;GAIG;AACH,wCAHW,YAAY,GACV,sBAAsB,CA+BlC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qCAoBY,WAAW,2BAAoB,WAAW,CAAC,CAAC;;;;2BAK5C,OAAO,eAAe,EAAE,YAAY;;;;qCAKpC,OAAO,eAAe,EAAE,sBAAsB;;;;sBAK9C,MAAM"}
1
+ {"version":3,"file":"config-file.d.ts","sourceRoot":"","sources":["../../lib/config-file.js"],"names":[],"mappings":"AAkEA;;;;;;;;;;;;;;GAcG;AACH,sCAPW,OAAO,KAAK,EAAE,WAAW,EAAE,WAC3B,oBAAoB,CAAC,QAAQ,CAAC,GAAC,GAAG,iDAIhC,MAAM,CAUlB;AAED;;;;;;;;GAQG;AACH,yGAFa,QAAQ,oBAAoB,CAAC,CAwCzC;AAED;;;;GAIG;AACH,wCAHW,YAAY,GACV,sBAAsB,CAiClC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qCAoBY,WAAW,2BAAoB,WAAW,CAAC,CAAC;;;;2BAK5C,OAAO,eAAe,EAAE,YAAY;;;;qCAKpC,OAAO,eAAe,EAAE,sBAAsB;;;;sBAK9C,MAAM"}
@@ -108,7 +108,7 @@ async function readConfigFile(filepath, opts = {}) {
108
108
  }
109
109
  }
110
110
 
111
- return result !== null && result !== void 0 ? result : {};
111
+ return result ?? {};
112
112
  }
113
113
 
114
114
  function normalizeConfig(config) {
@@ -118,19 +118,21 @@ function normalizeConfig(config) {
118
118
  const obj = _lodash.default.isUndefined(section) ? config : _lodash.default.get(config, section, config);
119
119
 
120
120
  const mappedObj = _lodash.default.mapKeys(obj, (__, prop) => {
121
- var _schema$properties$pr, _schema$properties$pr2;
121
+ var _schema$properties$pr;
122
122
 
123
- return (_schema$properties$pr = (_schema$properties$pr2 = schema.properties[prop]) === null || _schema$properties$pr2 === void 0 ? void 0 : _schema$properties$pr2.appiumCliDest) !== null && _schema$properties$pr !== void 0 ? _schema$properties$pr : _lodash.default.camelCase(prop);
123
+ return ((_schema$properties$pr = schema.properties[prop]) === null || _schema$properties$pr === void 0 ? void 0 : _schema$properties$pr.appiumCliDest) ?? _lodash.default.camelCase(prop);
124
124
  });
125
125
 
126
126
  return _lodash.default.mapValues(mappedObj, (value, property) => {
127
+ var _schema$properties;
128
+
127
129
  const nextSection = section ? `${section}.${property}` : property;
128
- return isSchemaTypeObject(value) ? normalize(config, nextSection) : value;
130
+ return isSchemaTypeObject((_schema$properties = schema.properties) === null || _schema$properties === void 0 ? void 0 : _schema$properties[property]) ? normalize(config, nextSection) : value;
129
131
  });
130
132
  };
131
133
 
132
- const isSchemaTypeObject = schema => Boolean(schema.properties);
134
+ const isSchemaTypeObject = schema => Boolean((schema === null || schema === void 0 ? void 0 : schema.properties) || (schema === null || schema === void 0 ? void 0 : schema.type) === 'object');
133
135
 
134
136
  return normalize(config);
135
137
  }
136
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ5YW1sTG9hZGVyIiwiZmlsZXBhdGgiLCJjb250ZW50IiwieWFtbCIsInBhcnNlIiwicmF3Q29uZmlnIiwiTWFwIiwianNvbkxvYWRlciIsInNldCIsIkpTT04iLCJsb2FkQ29uZmlnRmlsZSIsImxjIiwibG9hZCIsImVyciIsImNvZGUiLCJtZXNzYWdlIiwiU3ludGF4RXJyb3IiLCJzZWFyY2hDb25maWdGaWxlIiwic2VhcmNoIiwiZm9ybWF0RXJyb3JzIiwiZXJyb3JzIiwiY29uZmlnIiwib3B0cyIsImxlbmd0aCIsIlR5cGVFcnJvciIsImJldHRlckFqdkVycm9ycyIsImdldFNjaGVtYSIsInNjaGVtYUlkIiwianNvbiIsImZvcm1hdCIsInJlYWRDb25maWdGaWxlIiwibGlsY29uZmlnIiwibG9hZGVycyIsIm5vRXh0IiwicGFja2FnZVByb3AiLCJyZXN1bHQiLCJpc0VtcHR5IiwicHJldHR5IiwiY29uZmlnUmVzdWx0IiwidmFsaWRhdGUiLCJfIiwicmVhc29uIiwiZ2V0Iiwibm9ybWFsaXplQ29uZmlnIiwiZGVsZXRlIiwic2NoZW1hIiwibm9ybWFsaXplIiwic2VjdGlvbiIsIm9iaiIsImlzVW5kZWZpbmVkIiwibWFwcGVkT2JqIiwibWFwS2V5cyIsIl9fIiwicHJvcCIsInByb3BlcnRpZXMiLCJhcHBpdW1DbGlEZXN0IiwiY2FtZWxDYXNlIiwibWFwVmFsdWVzIiwidmFsdWUiLCJwcm9wZXJ0eSIsIm5leHRTZWN0aW9uIiwiaXNTY2hlbWFUeXBlT2JqZWN0IiwiQm9vbGVhbiJdLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9jb25maWctZmlsZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYmV0dGVyQWp2RXJyb3JzIGZyb20gJ0BzaWR2aW5kL2JldHRlci1hanYtZXJyb3JzJztcbmltcG9ydCB7bGlsY29uZmlnfSBmcm9tICdsaWxjb25maWcnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB5YW1sIGZyb20gJ3lhbWwnO1xuaW1wb3J0IHtnZXRTY2hlbWEsIHZhbGlkYXRlfSBmcm9tICcuL3NjaGVtYS9zY2hlbWEnO1xuXG4vKipcbiAqIGxpbGNvbmZpZyBsb2FkZXIgdG8gaGFuZGxlIGAueWFtbGAgZmlsZXNcbiAqIEB0eXBlIHtpbXBvcnQoJ2xpbGNvbmZpZycpLkxvYWRlclN5bmN9XG4gKi9cbmZ1bmN0aW9uIHlhbWxMb2FkZXIoZmlsZXBhdGgsIGNvbnRlbnQpIHtcbiAgcmV0dXJuIHlhbWwucGFyc2UoY29udGVudCk7XG59XG5cbi8qKlxuICogQSBjYWNoZSBvZiB0aGUgcmF3IGNvbmZpZyBmaWxlIChhIEpTT04gc3RyaW5nKSBhdCBhIGZpbGVwYXRoLlxuICogVGhpcyBpcyB1c2VkIGZvciBiZXR0ZXIgZXJyb3IgcmVwb3J0aW5nLlxuICogTm90ZSB0aGF0IGNvbmZpZyBmaWxlcyBuZWVkbid0IGJlIEpTT04sIGJ1dCBpdCBoZWxwcyBpZiB0aGV5IGFyZS5cbiAqIEB0eXBlIHtNYXA8c3RyaW5nLFJhd0pzb24+fVxuICovXG5jb25zdCByYXdDb25maWcgPSBuZXcgTWFwKCk7XG5cbi8qKlxuICogQ3VzdG9tIEpTT04gbG9hZGVyIHRoYXQgY2FjaGVzIHRoZSByYXcgY29uZmlnIGZpbGUgKGZvciB1c2Ugd2l0aCBgYmV0dGVyLWFqdi1lcnJvcnNgKS5cbiAqIElmIGl0IHdlcmVuJ3QgZm9yIHRoaXMgY2FjaGUsIHRoaXMgd291bGQgYmUgdW5uZWNlc3NhcnkuXG4gKiBAdHlwZSB7aW1wb3J0KCdsaWxjb25maWcnKS5Mb2FkZXJTeW5jfVxuICovXG5mdW5jdGlvbiBqc29uTG9hZGVyKGZpbGVwYXRoLCBjb250ZW50KSB7XG4gIHJhd0NvbmZpZy5zZXQoZmlsZXBhdGgsIGNvbnRlbnQpO1xuICByZXR1cm4gSlNPTi5wYXJzZShjb250ZW50KTtcbn1cblxuLyoqXG4gKiBMb2FkcyBhIGNvbmZpZyBmaWxlIGZyb20gYW4gZXhwbGljaXQgcGF0aFxuICogQHBhcmFtIHtMaWxjb25maWdBc3luY1NlYXJjaGVyfSBsYyAtIGxpbGNvbmZpZyBpbnN0YW5jZVxuICogQHBhcmFtIHtzdHJpbmd9IGZpbGVwYXRoIC0gUGF0aCB0byBjb25maWcgZmlsZVxuICogQHJldHVybnMge1Byb21pc2U8aW1wb3J0KCdsaWxjb25maWcnKS5MaWxjb25maWdSZXN1bHQ+fVxuICovXG5hc3luYyBmdW5jdGlvbiBsb2FkQ29uZmlnRmlsZShsYywgZmlsZXBhdGgpIHtcbiAgdHJ5IHtcbiAgICAvLyByZW1vdmluZyBcImF3YWl0XCIgd2lsbCBjYXVzZSBhbnkgcmVqZWN0aW9uIHRvIF9ub3RfIGJlIGNhdWdodCBpbiB0aGlzIGJsb2NrIVxuICAgIHJldHVybiBhd2FpdCBsYy5sb2FkKGZpbGVwYXRoKTtcbiAgfSBjYXRjaCAoLyoqIEB0eXBlIHt1bmtub3dufSAqLyBlcnIpIHtcbiAgICBpZiAoLyoqIEB0eXBlIHtOb2RlSlMuRXJybm9FeGNlcHRpb259ICovIChlcnIpLmNvZGUgPT09ICdFTk9FTlQnKSB7XG4gICAgICAvKiogQHR5cGUge05vZGVKUy5FcnJub0V4Y2VwdGlvbn0gKi8gKFxuICAgICAgICBlcnJcbiAgICAgICkubWVzc2FnZSA9IGBDb25maWcgZmlsZSBub3QgZm91bmQgYXQgdXNlci1wcm92aWRlZCBwYXRoOiAke2ZpbGVwYXRofWA7XG4gICAgICB0aHJvdyBlcnI7XG4gICAgfSBlbHNlIGlmIChlcnIgaW5zdGFuY2VvZiBTeW50YXhFcnJvcikge1xuICAgICAgLy8gZ2VuZXJhbGx5IGludmFsaWQgSlNPTlxuICAgICAgZXJyLm1lc3NhZ2UgPSBgQ29uZmlnIGZpbGUgYXQgdXNlci1wcm92aWRlZCBwYXRoICR7ZmlsZXBhdGh9IGlzIGludmFsaWQ6XFxuJHtlcnIubWVzc2FnZX1gO1xuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cbiAgICB0aHJvdyBlcnI7XG4gIH1cbn1cblxuLyoqXG4gKiBTZWFyY2hlcyBmb3IgYSBjb25maWcgZmlsZVxuICogQHBhcmFtIHtMaWxjb25maWdBc3luY1NlYXJjaGVyfSBsYyAtIGxpbGNvbmZpZyBpbnN0YW5jZVxuICogQHJldHVybnMge1Byb21pc2U8aW1wb3J0KCdsaWxjb25maWcnKS5MaWxjb25maWdSZXN1bHQ+fVxuICovXG5hc3luYyBmdW5jdGlvbiBzZWFyY2hDb25maWdGaWxlKGxjKSB7XG4gIHJldHVybiBhd2FpdCBsYy5zZWFyY2goKTtcbn1cblxuLyoqXG4gKiBHaXZlbiBhbiBhcnJheSBvZiBlcnJvcnMgYW5kIHRoZSByZXN1bHQgb2YgbG9hZGluZyBhIGNvbmZpZyBmaWxlLCBnZW5lcmF0ZSBhXG4gKiBoZWxwZnVsIHN0cmluZyBmb3IgdGhlIHVzZXIuXG4gKlxuICogLSBJZiBgb3B0c2AgY29udGFpbnMgYSBganNvbmAgcHJvcGVydHksIHRoaXMgc2hvdWxkIGJlIHRoZSBvcmlnaW5hbCBKU09OXG4gKiAgIF9zdHJpbmdfIG9mIHRoZSBjb25maWcgZmlsZS4gIFRoaXMgaXMgb25seSBhcHBsaWNhYmxlIGlmIHRoZSBjb25maWcgZmlsZVxuICogICB3YXMgaW4gSlNPTiBmb3JtYXQuIElmIHByZXNlbnQsIGl0IHdpbGwgYXNzb2NpYXRlIGxpbmUgbnVtYmVycyB3aXRoIGVycm9ycy5cbiAqIC0gSWYgYGVycm9yc2AgaGFwcGVucyB0byBiZSBlbXB0eSwgdGhpcyB3aWxsIHRocm93LlxuICogQHBhcmFtIHtpbXBvcnQoJ2FqdicpLkVycm9yT2JqZWN0W119IGVycm9ycyAtIE5vbi1lbXB0eSBhcnJheSBvZiBlcnJvcnMuIFJlcXVpcmVkLlxuICogQHBhcmFtIHtSZWFkQ29uZmlnRmlsZVJlc3VsdFsnY29uZmlnJ118YW55fSBbY29uZmlnXSAtXG4gKiBDb25maWd1cmF0aW9uICYgbWV0YWRhdGFcbiAqIEBwYXJhbSB7Rm9ybWF0Q29uZmlnRXJyb3JzT3B0aW9uc30gW29wdHNdXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IElmIGBlcnJvcnNgIGlzIGVtcHR5XG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0RXJyb3JzKGVycm9ycyA9IFtdLCBjb25maWcgPSB7fSwgb3B0cyA9IHt9KSB7XG4gIGlmIChlcnJvcnMgJiYgIWVycm9ycy5sZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdBcnJheSBvZiBlcnJvcnMgbXVzdCBiZSBub24tZW1wdHknKTtcbiAgfVxuICByZXR1cm4gYmV0dGVyQWp2RXJyb3JzKGdldFNjaGVtYShvcHRzLnNjaGVtYUlkKSwgY29uZmlnLCBlcnJvcnMsIHtcbiAgICBqc29uOiBvcHRzLmpzb24sXG4gICAgZm9ybWF0OiAnY2xpJyxcbiAgfSk7XG59XG5cbi8qKlxuICogR2l2ZW4gYW4gb3B0aW9uYWwgcGF0aCwgcmVhZCBhIGNvbmZpZyBmaWxlLiBWYWxpZGF0ZXMgdGhlIGNvbmZpZyBmaWxlLlxuICpcbiAqIENhbGwge0BsaW5rIHZhbGlkYXRlfSBpZiB5b3UgYWxyZWFkeSBoYXZlIGEgY29uZmlnIG9iamVjdC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBbZmlsZXBhdGhdIC0gUGF0aCB0byBjb25maWcgZmlsZSwgaWYgd2UgaGF2ZSBvbmVcbiAqIEBwYXJhbSB7UmVhZENvbmZpZ0ZpbGVPcHRpb25zfSBbb3B0c10gLSBPcHRpb25zXG4gKiBAcHVibGljXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxSZWFkQ29uZmlnRmlsZVJlc3VsdD59IENvbnRhaW5zIGNvbmZpZyBhbmQgZmlsZXBhdGgsIGlmIGZvdW5kLCBhbmQgYW55IGVycm9yc1xuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVhZENvbmZpZ0ZpbGUoZmlsZXBhdGgsIG9wdHMgPSB7fSkge1xuICBjb25zdCBsYyA9IGxpbGNvbmZpZygnYXBwaXVtJywge1xuICAgIGxvYWRlcnM6IHtcbiAgICAgICcueWFtbCc6IHlhbWxMb2FkZXIsXG4gICAgICAnLnltbCc6IHlhbWxMb2FkZXIsXG4gICAgICAnLmpzb24nOiBqc29uTG9hZGVyLFxuICAgICAgbm9FeHQ6IGpzb25Mb2FkZXIsXG4gICAgfSxcbiAgICBwYWNrYWdlUHJvcDogJ2FwcGl1bUNvbmZpZycsXG4gIH0pO1xuXG4gIGNvbnN0IHJlc3VsdCA9IGZpbGVwYXRoID8gYXdhaXQgbG9hZENvbmZpZ0ZpbGUobGMsIGZpbGVwYXRoKSA6IGF3YWl0IHNlYXJjaENvbmZpZ0ZpbGUobGMpO1xuXG4gIGlmIChyZXN1bHQ/LmZpbGVwYXRoICYmICFyZXN1bHQ/LmlzRW1wdHkpIHtcbiAgICBjb25zdCB7cHJldHR5ID0gdHJ1ZX0gPSBvcHRzO1xuICAgIHRyeSB7XG4gICAgICBsZXQgY29uZmlnUmVzdWx0O1xuICAgICAgY29uc3QgZXJyb3JzID0gdmFsaWRhdGUocmVzdWx0LmNvbmZpZyk7XG4gICAgICBpZiAoXy5pc0VtcHR5KGVycm9ycykpIHtcbiAgICAgICAgY29uZmlnUmVzdWx0ID0gey4uLnJlc3VsdCwgZXJyb3JzfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHJlYXNvbiA9IGZvcm1hdEVycm9ycyhlcnJvcnMsIHJlc3VsdC5jb25maWcsIHtcbiAgICAgICAgICBqc29uOiByYXdDb25maWcuZ2V0KHJlc3VsdC5maWxlcGF0aCksXG4gICAgICAgICAgcHJldHR5LFxuICAgICAgICB9KTtcbiAgICAgICAgY29uZmlnUmVzdWx0ID0gcmVhc29uID8gey4uLnJlc3VsdCwgZXJyb3JzLCByZWFzb259IDogey4uLnJlc3VsdCwgZXJyb3JzfTtcbiAgICAgIH1cblxuICAgICAgLy8gbm9ybWFsaXplICh0byBjYW1lbCBjYXNlKSBhbGwgdG9wLWxldmVsIHByb3BlcnR5IG5hbWVzIG9mIHRoZSBjb25maWcgZmlsZVxuICAgICAgY29uZmlnUmVzdWx0LmNvbmZpZyA9IG5vcm1hbGl6ZUNvbmZpZygvKiogQHR5cGUge0FwcGl1bUNvbmZpZ30gKi8gKGNvbmZpZ1Jlc3VsdC5jb25maWcpKTtcblxuICAgICAgcmV0dXJuIGNvbmZpZ1Jlc3VsdDtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgLy8gY2xlYW4gdXAgdGhlIHJhdyBjb25maWcgZmlsZSBjYWNoZSwgd2hpY2ggaXMgb25seSBrZXB0IHRvIGJldHRlciByZXBvcnQgZXJyb3JzLlxuICAgICAgcmF3Q29uZmlnLmRlbGV0ZShyZXN1bHQuZmlsZXBhdGgpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0ID8/IHt9O1xufVxuXG4vKipcbiAqIENvbnZlcnQgc2NoZW1hIHByb3BlcnR5IG5hbWVzIHRvIGVpdGhlciBhKSB0aGUgdmFsdWUgb2YgdGhlIGBhcHBpdW1DbGlEZXN0YCBwcm9wZXJ0eSwgaWYgYW55OyBvciBiKSBjYW1lbC1jYXNlXG4gKiBAcGFyYW0ge0FwcGl1bUNvbmZpZ30gY29uZmlnIC0gQ29uZmlndXJhdGlvbiBvYmplY3RcbiAqIEByZXR1cm5zIHtOb3JtYWxpemVkQXBwaXVtQ29uZmlnfSBOZXcgb2JqZWN0IHdpdGggY2FtZWwtY2FzZWQga2V5cyAob3IgYGRlc3RgIGtleXMpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplQ29uZmlnKGNvbmZpZykge1xuICBjb25zdCBzY2hlbWEgPSBnZXRTY2hlbWEoKTtcbiAgLyoqXG4gICAqIEBwYXJhbSB7QXBwaXVtQ29uZmlnfSBjb25maWdcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtzZWN0aW9uXSAtIEtleXBhdGggKGxvZGFzaCBgXy5nZXQoKWAgc3R5bGUpIHRvIHNlY3Rpb24gb2YgY29uZmlnLiBJZiBvbWl0dGVkLCBhc3N1bWUgcm9vdCBBcHBpdW0gY29uZmlnIHNjaGVtYVxuICAgKiBAdG9kbyBSZXdyaXRlIGFzIGEgbG9vcFxuICAgKiBAcmV0dXJucyBOb3JtYWxpemVkIHNlY3Rpb24gb2YgY29uZmlnXG4gICAqL1xuICBjb25zdCBub3JtYWxpemUgPSAoY29uZmlnLCBzZWN0aW9uKSA9PiB7XG4gICAgY29uc3Qgb2JqID0gXy5pc1VuZGVmaW5lZChzZWN0aW9uKSA/IGNvbmZpZyA6IF8uZ2V0KGNvbmZpZywgc2VjdGlvbiwgY29uZmlnKTtcblxuICAgIGNvbnN0IG1hcHBlZE9iaiA9IF8ubWFwS2V5cyhcbiAgICAgIG9iaixcbiAgICAgIChfXywgcHJvcCkgPT4gc2NoZW1hLnByb3BlcnRpZXNbcHJvcF0/LmFwcGl1bUNsaURlc3QgPz8gXy5jYW1lbENhc2UocHJvcClcbiAgICApO1xuXG4gICAgcmV0dXJuIF8ubWFwVmFsdWVzKG1hcHBlZE9iaiwgKHZhbHVlLCBwcm9wZXJ0eSkgPT4ge1xuICAgICAgY29uc3QgbmV4dFNlY3Rpb24gPSBzZWN0aW9uID8gYCR7c2VjdGlvbn0uJHtwcm9wZXJ0eX1gIDogcHJvcGVydHk7XG4gICAgICByZXR1cm4gaXNTY2hlbWFUeXBlT2JqZWN0KHZhbHVlKSA/IG5vcm1hbGl6ZShjb25maWcsIG5leHRTZWN0aW9uKSA6IHZhbHVlO1xuICAgIH0pO1xuICB9O1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgc2NoZW1hIHByb3AgcmVmZXJlbmNlcyBhbiBvYmplY3QsIG9yIGlmIGl0J3MgYW4gb2JqZWN0IGl0c2VsZlxuICAgKiBAcGFyYW0ge2ltcG9ydCgnYWp2JykuU2NoZW1hT2JqZWN0fG9iamVjdH0gc2NoZW1hIC0gUmVmZXJlbmNpbmcgc2NoZW1hIG9iamVjdFxuICAgKi9cbiAgY29uc3QgaXNTY2hlbWFUeXBlT2JqZWN0ID0gKHNjaGVtYSkgPT4gQm9vbGVhbihzY2hlbWEucHJvcGVydGllcyk7XG5cbiAgcmV0dXJuIG5vcm1hbGl6ZShjb25maWcpO1xufVxuXG4vKipcbiAqIFJlc3VsdCBvZiBjYWxsaW5nIHtAbGluayByZWFkQ29uZmlnRmlsZX0uXG4gKiBAdHlwZWRlZiBSZWFkQ29uZmlnRmlsZVJlc3VsdFxuICogQHByb3BlcnR5IHtpbXBvcnQoJ2FqdicpLkVycm9yT2JqZWN0W119IFtlcnJvcnNdIC0gVmFsaWRhdGlvbiBlcnJvcnNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbZmlsZXBhdGhdIC0gVGhlIHBhdGggdG8gdGhlIGNvbmZpZyBmaWxlLCBpZiBmb3VuZFxuICogQHByb3BlcnR5IHtib29sZWFufSBbaXNFbXB0eV0gLSBJZiBgdHJ1ZWAsIHRoZSBjb25maWcgZmlsZSBleGlzdHMgYnV0IGlzIGVtcHR5XG4gKiBAcHJvcGVydHkge05vcm1hbGl6ZWRBcHBpdW1Db25maWd9IFtjb25maWddIC0gVGhlIHBhcnNlZCBjb25maWd1cmF0aW9uXG4gKiBAcHJvcGVydHkge3N0cmluZ3xpbXBvcnQoJ0BzaWR2aW5kL2JldHRlci1hanYtZXJyb3JzJykuSU91dHB1dEVycm9yW119IFtyZWFzb25dIC0gSHVtYW4tcmVhZGFibGUgZXJyb3IgbWVzc2FnZXMgYW5kIHN1Z2dlc3Rpb25zLiBJZiB0aGUgYHByZXR0eWAgb3B0aW9uIGlzIGB0cnVlYCwgdGhpcyB3aWxsIGJlIGEgbmljZSBzdHJpbmcgdG8gcHJpbnQuXG4gKi9cblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgcmVhZENvbmZpZ0ZpbGV9LlxuICogQHR5cGVkZWYgUmVhZENvbmZpZ0ZpbGVPcHRpb25zXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IFtwcmV0dHk9dHJ1ZV0gSWYgYGZhbHNlYCwgZG8gbm90IHVzZSBjb2xvciBhbmQgZmFuY3kgZm9ybWF0dGluZyBpbiB0aGUgYHJlYXNvbmAgcHJvcGVydHkgb2YgdGhlIHtAbGluayBSZWFkQ29uZmlnRmlsZVJlc3VsdH0uIFRoZSB2YWx1ZSBvZiBgcmVhc29uYCBpcyB0aGVuIHN1aXRhYmxlIGZvciBtYWNoaW5lLXJlYWRpbmcuXG4gKi9cblxuLyoqXG4gKiBUaGlzIGlzIGFuIGBBc3luY1NlYXJjaGVyYCB3aGljaCBpcyBpbmV4cGxpY2FibHkgX25vdF8gZXhwb3J0ZWQgYnkgdGhlIGBsaWxjb25maWdgIHR5cGUgZGVmaW5pdGlvbi5cbiAqIEB0eXBlZGVmIHtSZXR1cm5UeXBlPGltcG9ydCgnbGlsY29uZmlnJylbXCJsaWxjb25maWdcIl0+fSBMaWxjb25maWdBc3luY1NlYXJjaGVyXG4gKi9cblxuLyoqXG4gKiBUaGUgY29udGVudHMgb2YgYW4gQXBwaXVtIGNvbmZpZyBmaWxlLiBHZW5lcmF0ZWQgZnJvbSBzY2hlbWFcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ0BhcHBpdW0vdHlwZXMnKS5BcHBpdW1Db25maWd9IEFwcGl1bUNvbmZpZ1xuICovXG5cbi8qKlxuICogVGhlIGNvbnRlbnRzIG9mIGFuIEFwcGl1bSBjb25maWcgZmlsZSB3aXRoIGNhbWVsY2FzZWQgcHJvcGVydHkgbmFtZXMgKGFuZCB1c2luZyBgYXBwaXVtQ2xpRGVzdGAgdmFsdWUgaWYgcHJlc2VudCkuIEdlbmVyYXRlZCBmcm9tIHtAbGluayBBcHBpdW1Db25maWd9XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdAYXBwaXVtL3R5cGVzJykuTm9ybWFsaXplZEFwcGl1bUNvbmZpZ30gTm9ybWFsaXplZEFwcGl1bUNvbmZpZ1xuICovXG5cbi8qKlxuICogVGhlIHN0cmluZyBzaG91bGQgYmUgYSByYXcgSlNPTiBzdHJpbmcuXG4gKiBAdHlwZWRlZiB7c3RyaW5nfSBSYXdKc29uXG4gKi9cblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgZm9ybWF0RXJyb3JzfS5cbiAqIEB0eXBlZGVmIEZvcm1hdENvbmZpZ0Vycm9yc09wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7aW1wb3J0KCcuL2NvbmZpZy1maWxlJykuUmF3SnNvbn0gW2pzb25dIC0gUmF3IEpTT04gY29uZmlnIChhcyBzdHJpbmcpXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IFtwcmV0dHk9dHJ1ZV0gLSBXaGV0aGVyIHRvIGZvcm1hdCBlcnJvcnMgYXMgYSBDTEktZnJpZW5kbHkgc3RyaW5nXG4gKiBAcHJvcGVydHkge3N0cmluZ30gIFtzY2hlbWFJZF0gLSBTcGVjaWZpYyBJRCBvZiBhIHByb3A7IG90aGVyd2lzZSBlbnRpcmUgc2NoZW1hXG4gKi9cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQU1BLFNBQVNBLFVBQVQsQ0FBb0JDLFFBQXBCLEVBQThCQyxPQUE5QixFQUF1QztFQUNyQyxPQUFPQyxhQUFBLENBQUtDLEtBQUwsQ0FBV0YsT0FBWCxDQUFQO0FBQ0Q7O0FBUUQsTUFBTUcsU0FBUyxHQUFHLElBQUlD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
138
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ5YW1sTG9hZGVyIiwiZmlsZXBhdGgiLCJjb250ZW50IiwieWFtbCIsInBhcnNlIiwicmF3Q29uZmlnIiwiTWFwIiwianNvbkxvYWRlciIsInNldCIsIkpTT04iLCJsb2FkQ29uZmlnRmlsZSIsImxjIiwibG9hZCIsImVyciIsImNvZGUiLCJtZXNzYWdlIiwiU3ludGF4RXJyb3IiLCJzZWFyY2hDb25maWdGaWxlIiwic2VhcmNoIiwiZm9ybWF0RXJyb3JzIiwiZXJyb3JzIiwiY29uZmlnIiwib3B0cyIsImxlbmd0aCIsIlR5cGVFcnJvciIsImJldHRlckFqdkVycm9ycyIsImdldFNjaGVtYSIsInNjaGVtYUlkIiwianNvbiIsImZvcm1hdCIsInJlYWRDb25maWdGaWxlIiwibGlsY29uZmlnIiwibG9hZGVycyIsIm5vRXh0IiwicGFja2FnZVByb3AiLCJyZXN1bHQiLCJpc0VtcHR5IiwicHJldHR5IiwiY29uZmlnUmVzdWx0IiwidmFsaWRhdGUiLCJfIiwicmVhc29uIiwiZ2V0Iiwibm9ybWFsaXplQ29uZmlnIiwiZGVsZXRlIiwic2NoZW1hIiwibm9ybWFsaXplIiwic2VjdGlvbiIsIm9iaiIsImlzVW5kZWZpbmVkIiwibWFwcGVkT2JqIiwibWFwS2V5cyIsIl9fIiwicHJvcCIsInByb3BlcnRpZXMiLCJhcHBpdW1DbGlEZXN0IiwiY2FtZWxDYXNlIiwibWFwVmFsdWVzIiwidmFsdWUiLCJwcm9wZXJ0eSIsIm5leHRTZWN0aW9uIiwiaXNTY2hlbWFUeXBlT2JqZWN0IiwiQm9vbGVhbiIsInR5cGUiXSwic291cmNlcyI6WyIuLi8uLi9saWIvY29uZmlnLWZpbGUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGJldHRlckFqdkVycm9ycyBmcm9tICdAc2lkdmluZC9iZXR0ZXItYWp2LWVycm9ycyc7XG5pbXBvcnQge2xpbGNvbmZpZ30gZnJvbSAnbGlsY29uZmlnJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeWFtbCBmcm9tICd5YW1sJztcbmltcG9ydCB7Z2V0U2NoZW1hLCB2YWxpZGF0ZX0gZnJvbSAnLi9zY2hlbWEvc2NoZW1hJztcblxuLyoqXG4gKiBsaWxjb25maWcgbG9hZGVyIHRvIGhhbmRsZSBgLnlhbWxgIGZpbGVzXG4gKiBAdHlwZSB7aW1wb3J0KCdsaWxjb25maWcnKS5Mb2FkZXJTeW5jfVxuICovXG5mdW5jdGlvbiB5YW1sTG9hZGVyKGZpbGVwYXRoLCBjb250ZW50KSB7XG4gIHJldHVybiB5YW1sLnBhcnNlKGNvbnRlbnQpO1xufVxuXG4vKipcbiAqIEEgY2FjaGUgb2YgdGhlIHJhdyBjb25maWcgZmlsZSAoYSBKU09OIHN0cmluZykgYXQgYSBmaWxlcGF0aC5cbiAqIFRoaXMgaXMgdXNlZCBmb3IgYmV0dGVyIGVycm9yIHJlcG9ydGluZy5cbiAqIE5vdGUgdGhhdCBjb25maWcgZmlsZXMgbmVlZG4ndCBiZSBKU09OLCBidXQgaXQgaGVscHMgaWYgdGhleSBhcmUuXG4gKiBAdHlwZSB7TWFwPHN0cmluZyxSYXdKc29uPn1cbiAqL1xuY29uc3QgcmF3Q29uZmlnID0gbmV3IE1hcCgpO1xuXG4vKipcbiAqIEN1c3RvbSBKU09OIGxvYWRlciB0aGF0IGNhY2hlcyB0aGUgcmF3IGNvbmZpZyBmaWxlIChmb3IgdXNlIHdpdGggYGJldHRlci1hanYtZXJyb3JzYCkuXG4gKiBJZiBpdCB3ZXJlbid0IGZvciB0aGlzIGNhY2hlLCB0aGlzIHdvdWxkIGJlIHVubmVjZXNzYXJ5LlxuICogQHR5cGUge2ltcG9ydCgnbGlsY29uZmlnJykuTG9hZGVyU3luY31cbiAqL1xuZnVuY3Rpb24ganNvbkxvYWRlcihmaWxlcGF0aCwgY29udGVudCkge1xuICByYXdDb25maWcuc2V0KGZpbGVwYXRoLCBjb250ZW50KTtcbiAgcmV0dXJuIEpTT04ucGFyc2UoY29udGVudCk7XG59XG5cbi8qKlxuICogTG9hZHMgYSBjb25maWcgZmlsZSBmcm9tIGFuIGV4cGxpY2l0IHBhdGhcbiAqIEBwYXJhbSB7TGlsY29uZmlnQXN5bmNTZWFyY2hlcn0gbGMgLSBsaWxjb25maWcgaW5zdGFuY2VcbiAqIEBwYXJhbSB7c3RyaW5nfSBmaWxlcGF0aCAtIFBhdGggdG8gY29uZmlnIGZpbGVcbiAqIEByZXR1cm5zIHtQcm9taXNlPGltcG9ydCgnbGlsY29uZmlnJykuTGlsY29uZmlnUmVzdWx0Pn1cbiAqL1xuYXN5bmMgZnVuY3Rpb24gbG9hZENvbmZpZ0ZpbGUobGMsIGZpbGVwYXRoKSB7XG4gIHRyeSB7XG4gICAgLy8gcmVtb3ZpbmcgXCJhd2FpdFwiIHdpbGwgY2F1c2UgYW55IHJlamVjdGlvbiB0byBfbm90XyBiZSBjYXVnaHQgaW4gdGhpcyBibG9jayFcbiAgICByZXR1cm4gYXdhaXQgbGMubG9hZChmaWxlcGF0aCk7XG4gIH0gY2F0Y2ggKC8qKiBAdHlwZSB7dW5rbm93bn0gKi8gZXJyKSB7XG4gICAgaWYgKC8qKiBAdHlwZSB7Tm9kZUpTLkVycm5vRXhjZXB0aW9ufSAqLyAoZXJyKS5jb2RlID09PSAnRU5PRU5UJykge1xuICAgICAgLyoqIEB0eXBlIHtOb2RlSlMuRXJybm9FeGNlcHRpb259ICovIChcbiAgICAgICAgZXJyXG4gICAgICApLm1lc3NhZ2UgPSBgQ29uZmlnIGZpbGUgbm90IGZvdW5kIGF0IHVzZXItcHJvdmlkZWQgcGF0aDogJHtmaWxlcGF0aH1gO1xuICAgICAgdGhyb3cgZXJyO1xuICAgIH0gZWxzZSBpZiAoZXJyIGluc3RhbmNlb2YgU3ludGF4RXJyb3IpIHtcbiAgICAgIC8vIGdlbmVyYWxseSBpbnZhbGlkIEpTT05cbiAgICAgIGVyci5tZXNzYWdlID0gYENvbmZpZyBmaWxlIGF0IHVzZXItcHJvdmlkZWQgcGF0aCAke2ZpbGVwYXRofSBpcyBpbnZhbGlkOlxcbiR7ZXJyLm1lc3NhZ2V9YDtcbiAgICAgIHRocm93IGVycjtcbiAgICB9XG4gICAgdGhyb3cgZXJyO1xuICB9XG59XG5cbi8qKlxuICogU2VhcmNoZXMgZm9yIGEgY29uZmlnIGZpbGVcbiAqIEBwYXJhbSB7TGlsY29uZmlnQXN5bmNTZWFyY2hlcn0gbGMgLSBsaWxjb25maWcgaW5zdGFuY2VcbiAqIEByZXR1cm5zIHtQcm9taXNlPGltcG9ydCgnbGlsY29uZmlnJykuTGlsY29uZmlnUmVzdWx0Pn1cbiAqL1xuYXN5bmMgZnVuY3Rpb24gc2VhcmNoQ29uZmlnRmlsZShsYykge1xuICByZXR1cm4gYXdhaXQgbGMuc2VhcmNoKCk7XG59XG5cbi8qKlxuICogR2l2ZW4gYW4gYXJyYXkgb2YgZXJyb3JzIGFuZCB0aGUgcmVzdWx0IG9mIGxvYWRpbmcgYSBjb25maWcgZmlsZSwgZ2VuZXJhdGUgYVxuICogaGVscGZ1bCBzdHJpbmcgZm9yIHRoZSB1c2VyLlxuICpcbiAqIC0gSWYgYG9wdHNgIGNvbnRhaW5zIGEgYGpzb25gIHByb3BlcnR5LCB0aGlzIHNob3VsZCBiZSB0aGUgb3JpZ2luYWwgSlNPTlxuICogICBfc3RyaW5nXyBvZiB0aGUgY29uZmlnIGZpbGUuICBUaGlzIGlzIG9ubHkgYXBwbGljYWJsZSBpZiB0aGUgY29uZmlnIGZpbGVcbiAqICAgd2FzIGluIEpTT04gZm9ybWF0LiBJZiBwcmVzZW50LCBpdCB3aWxsIGFzc29jaWF0ZSBsaW5lIG51bWJlcnMgd2l0aCBlcnJvcnMuXG4gKiAtIElmIGBlcnJvcnNgIGhhcHBlbnMgdG8gYmUgZW1wdHksIHRoaXMgd2lsbCB0aHJvdy5cbiAqIEBwYXJhbSB7aW1wb3J0KCdhanYnKS5FcnJvck9iamVjdFtdfSBlcnJvcnMgLSBOb24tZW1wdHkgYXJyYXkgb2YgZXJyb3JzLiBSZXF1aXJlZC5cbiAqIEBwYXJhbSB7UmVhZENvbmZpZ0ZpbGVSZXN1bHRbJ2NvbmZpZyddfGFueX0gW2NvbmZpZ10gLVxuICogQ29uZmlndXJhdGlvbiAmIG1ldGFkYXRhXG4gKiBAcGFyYW0ge0Zvcm1hdENvbmZpZ0Vycm9yc09wdGlvbnN9IFtvcHRzXVxuICogQHRocm93cyB7VHlwZUVycm9yfSBJZiBgZXJyb3JzYCBpcyBlbXB0eVxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdEVycm9ycyhlcnJvcnMgPSBbXSwgY29uZmlnID0ge30sIG9wdHMgPSB7fSkge1xuICBpZiAoZXJyb3JzICYmICFlcnJvcnMubGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJyYXkgb2YgZXJyb3JzIG11c3QgYmUgbm9uLWVtcHR5Jyk7XG4gIH1cbiAgcmV0dXJuIGJldHRlckFqdkVycm9ycyhnZXRTY2hlbWEob3B0cy5zY2hlbWFJZCksIGNvbmZpZywgZXJyb3JzLCB7XG4gICAganNvbjogb3B0cy5qc29uLFxuICAgIGZvcm1hdDogJ2NsaScsXG4gIH0pO1xufVxuXG4vKipcbiAqIEdpdmVuIGFuIG9wdGlvbmFsIHBhdGgsIHJlYWQgYSBjb25maWcgZmlsZS4gVmFsaWRhdGVzIHRoZSBjb25maWcgZmlsZS5cbiAqXG4gKiBDYWxsIHtAbGluayB2YWxpZGF0ZX0gaWYgeW91IGFscmVhZHkgaGF2ZSBhIGNvbmZpZyBvYmplY3QuXG4gKiBAcGFyYW0ge3N0cmluZ30gW2ZpbGVwYXRoXSAtIFBhdGggdG8gY29uZmlnIGZpbGUsIGlmIHdlIGhhdmUgb25lXG4gKiBAcGFyYW0ge1JlYWRDb25maWdGaWxlT3B0aW9uc30gW29wdHNdIC0gT3B0aW9uc1xuICogQHB1YmxpY1xuICogQHJldHVybnMge1Byb21pc2U8UmVhZENvbmZpZ0ZpbGVSZXN1bHQ+fSBDb250YWlucyBjb25maWcgYW5kIGZpbGVwYXRoLCBpZiBmb3VuZCwgYW5kIGFueSBlcnJvcnNcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlYWRDb25maWdGaWxlKGZpbGVwYXRoLCBvcHRzID0ge30pIHtcbiAgY29uc3QgbGMgPSBsaWxjb25maWcoJ2FwcGl1bScsIHtcbiAgICBsb2FkZXJzOiB7XG4gICAgICAnLnlhbWwnOiB5YW1sTG9hZGVyLFxuICAgICAgJy55bWwnOiB5YW1sTG9hZGVyLFxuICAgICAgJy5qc29uJzoganNvbkxvYWRlcixcbiAgICAgIG5vRXh0OiBqc29uTG9hZGVyLFxuICAgIH0sXG4gICAgcGFja2FnZVByb3A6ICdhcHBpdW1Db25maWcnLFxuICB9KTtcblxuICBjb25zdCByZXN1bHQgPSBmaWxlcGF0aCA/IGF3YWl0IGxvYWRDb25maWdGaWxlKGxjLCBmaWxlcGF0aCkgOiBhd2FpdCBzZWFyY2hDb25maWdGaWxlKGxjKTtcblxuICBpZiAocmVzdWx0Py5maWxlcGF0aCAmJiAhcmVzdWx0Py5pc0VtcHR5KSB7XG4gICAgY29uc3Qge3ByZXR0eSA9IHRydWV9ID0gb3B0cztcbiAgICB0cnkge1xuICAgICAgbGV0IGNvbmZpZ1Jlc3VsdDtcbiAgICAgIGNvbnN0IGVycm9ycyA9IHZhbGlkYXRlKHJlc3VsdC5jb25maWcpO1xuICAgICAgaWYgKF8uaXNFbXB0eShlcnJvcnMpKSB7XG4gICAgICAgIGNvbmZpZ1Jlc3VsdCA9IHsuLi5yZXN1bHQsIGVycm9yc307XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCByZWFzb24gPSBmb3JtYXRFcnJvcnMoZXJyb3JzLCByZXN1bHQuY29uZmlnLCB7XG4gICAgICAgICAganNvbjogcmF3Q29uZmlnLmdldChyZXN1bHQuZmlsZXBhdGgpLFxuICAgICAgICAgIHByZXR0eSxcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbmZpZ1Jlc3VsdCA9IHJlYXNvbiA/IHsuLi5yZXN1bHQsIGVycm9ycywgcmVhc29ufSA6IHsuLi5yZXN1bHQsIGVycm9yc307XG4gICAgICB9XG5cbiAgICAgIC8vIG5vcm1hbGl6ZSAodG8gY2FtZWwgY2FzZSkgYWxsIHRvcC1sZXZlbCBwcm9wZXJ0eSBuYW1lcyBvZiB0aGUgY29uZmlnIGZpbGVcbiAgICAgIGNvbmZpZ1Jlc3VsdC5jb25maWcgPSBub3JtYWxpemVDb25maWcoLyoqIEB0eXBlIHtBcHBpdW1Db25maWd9ICovIChjb25maWdSZXN1bHQuY29uZmlnKSk7XG5cbiAgICAgIHJldHVybiBjb25maWdSZXN1bHQ7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIC8vIGNsZWFuIHVwIHRoZSByYXcgY29uZmlnIGZpbGUgY2FjaGUsIHdoaWNoIGlzIG9ubHkga2VwdCB0byBiZXR0ZXIgcmVwb3J0IGVycm9ycy5cbiAgICAgIHJhd0NvbmZpZy5kZWxldGUocmVzdWx0LmZpbGVwYXRoKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdCA/PyB7fTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0IHNjaGVtYSBwcm9wZXJ0eSBuYW1lcyB0byBlaXRoZXIgYSkgdGhlIHZhbHVlIG9mIHRoZSBgYXBwaXVtQ2xpRGVzdGAgcHJvcGVydHksIGlmIGFueTsgb3IgYikgY2FtZWwtY2FzZVxuICogQHBhcmFtIHtBcHBpdW1Db25maWd9IGNvbmZpZyAtIENvbmZpZ3VyYXRpb24gb2JqZWN0XG4gKiBAcmV0dXJucyB7Tm9ybWFsaXplZEFwcGl1bUNvbmZpZ30gTmV3IG9iamVjdCB3aXRoIGNhbWVsLWNhc2VkIGtleXMgKG9yIGBkZXN0YCBrZXlzKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZUNvbmZpZyhjb25maWcpIHtcbiAgY29uc3Qgc2NoZW1hID0gZ2V0U2NoZW1hKCk7XG4gIC8qKlxuICAgKiBAcGFyYW0ge0FwcGl1bUNvbmZpZ30gY29uZmlnXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbc2VjdGlvbl0gLSBLZXlwYXRoIChsb2Rhc2ggYF8uZ2V0KClgIHN0eWxlKSB0byBzZWN0aW9uIG9mIGNvbmZpZy4gSWYgb21pdHRlZCwgYXNzdW1lIHJvb3QgQXBwaXVtIGNvbmZpZyBzY2hlbWFcbiAgICogQHRvZG8gUmV3cml0ZSBhcyBhIGxvb3BcbiAgICogQHJldHVybnMgTm9ybWFsaXplZCBzZWN0aW9uIG9mIGNvbmZpZ1xuICAgKi9cbiAgY29uc3Qgbm9ybWFsaXplID0gKGNvbmZpZywgc2VjdGlvbikgPT4ge1xuICAgIGNvbnN0IG9iaiA9IF8uaXNVbmRlZmluZWQoc2VjdGlvbikgPyBjb25maWcgOiBfLmdldChjb25maWcsIHNlY3Rpb24sIGNvbmZpZyk7XG5cbiAgICBjb25zdCBtYXBwZWRPYmogPSBfLm1hcEtleXMoXG4gICAgICBvYmosXG4gICAgICAoX18sIHByb3ApID0+IHNjaGVtYS5wcm9wZXJ0aWVzW3Byb3BdPy5hcHBpdW1DbGlEZXN0ID8/IF8uY2FtZWxDYXNlKHByb3ApXG4gICAgKTtcblxuICAgIHJldHVybiBfLm1hcFZhbHVlcyhtYXBwZWRPYmosICh2YWx1ZSwgcHJvcGVydHkpID0+IHtcbiAgICAgIGNvbnN0IG5leHRTZWN0aW9uID0gc2VjdGlvbiA/IGAke3NlY3Rpb259LiR7cHJvcGVydHl9YCA6IHByb3BlcnR5O1xuICAgICAgcmV0dXJuIGlzU2NoZW1hVHlwZU9iamVjdChzY2hlbWEucHJvcGVydGllcz8uW3Byb3BlcnR5XSlcbiAgICAgICAgPyBub3JtYWxpemUoY29uZmlnLCBuZXh0U2VjdGlvbilcbiAgICAgICAgOiB2YWx1ZTtcbiAgICB9KTtcbiAgfTtcblxuICAvKipcbiAgICogUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHNjaGVtYSBwcm9wIHJlZmVyZW5jZXMgYW4gb2JqZWN0LCBvciBpZiBpdCdzIGFuIG9iamVjdCBpdHNlbGZcbiAgICogQHBhcmFtIHtpbXBvcnQoJ2FqdicpLlNjaGVtYU9iamVjdHxvYmplY3R9IHNjaGVtYSAtIFJlZmVyZW5jaW5nIHNjaGVtYSBvYmplY3RcbiAgICovXG4gIGNvbnN0IGlzU2NoZW1hVHlwZU9iamVjdCA9IChzY2hlbWEpID0+IEJvb2xlYW4oc2NoZW1hPy5wcm9wZXJ0aWVzIHx8IHNjaGVtYT8udHlwZSA9PT0gJ29iamVjdCcpO1xuXG4gIHJldHVybiBub3JtYWxpemUoY29uZmlnKTtcbn1cblxuLyoqXG4gKiBSZXN1bHQgb2YgY2FsbGluZyB7QGxpbmsgcmVhZENvbmZpZ0ZpbGV9LlxuICogQHR5cGVkZWYgUmVhZENvbmZpZ0ZpbGVSZXN1bHRcbiAqIEBwcm9wZXJ0eSB7aW1wb3J0KCdhanYnKS5FcnJvck9iamVjdFtdfSBbZXJyb3JzXSAtIFZhbGlkYXRpb24gZXJyb3JzXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW2ZpbGVwYXRoXSAtIFRoZSBwYXRoIHRvIHRoZSBjb25maWcgZmlsZSwgaWYgZm91bmRcbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gW2lzRW1wdHldIC0gSWYgYHRydWVgLCB0aGUgY29uZmlnIGZpbGUgZXhpc3RzIGJ1dCBpcyBlbXB0eVxuICogQHByb3BlcnR5IHtOb3JtYWxpemVkQXBwaXVtQ29uZmlnfSBbY29uZmlnXSAtIFRoZSBwYXJzZWQgY29uZmlndXJhdGlvblxuICogQHByb3BlcnR5IHtzdHJpbmd8aW1wb3J0KCdAc2lkdmluZC9iZXR0ZXItYWp2LWVycm9ycycpLklPdXRwdXRFcnJvcltdfSBbcmVhc29uXSAtIEh1bWFuLXJlYWRhYmxlIGVycm9yIG1lc3NhZ2VzIGFuZCBzdWdnZXN0aW9ucy4gSWYgdGhlIGBwcmV0dHlgIG9wdGlvbiBpcyBgdHJ1ZWAsIHRoaXMgd2lsbCBiZSBhIG5pY2Ugc3RyaW5nIHRvIHByaW50LlxuICovXG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIHJlYWRDb25maWdGaWxlfS5cbiAqIEB0eXBlZGVmIFJlYWRDb25maWdGaWxlT3B0aW9uc1xuICogQHByb3BlcnR5IHtib29sZWFufSBbcHJldHR5PXRydWVdIElmIGBmYWxzZWAsIGRvIG5vdCB1c2UgY29sb3IgYW5kIGZhbmN5IGZvcm1hdHRpbmcgaW4gdGhlIGByZWFzb25gIHByb3BlcnR5IG9mIHRoZSB7QGxpbmsgUmVhZENvbmZpZ0ZpbGVSZXN1bHR9LiBUaGUgdmFsdWUgb2YgYHJlYXNvbmAgaXMgdGhlbiBzdWl0YWJsZSBmb3IgbWFjaGluZS1yZWFkaW5nLlxuICovXG5cbi8qKlxuICogVGhpcyBpcyBhbiBgQXN5bmNTZWFyY2hlcmAgd2hpY2ggaXMgaW5leHBsaWNhYmx5IF9ub3RfIGV4cG9ydGVkIGJ5IHRoZSBgbGlsY29uZmlnYCB0eXBlIGRlZmluaXRpb24uXG4gKiBAdHlwZWRlZiB7UmV0dXJuVHlwZTxpbXBvcnQoJ2xpbGNvbmZpZycpW1wibGlsY29uZmlnXCJdPn0gTGlsY29uZmlnQXN5bmNTZWFyY2hlclxuICovXG5cbi8qKlxuICogVGhlIGNvbnRlbnRzIG9mIGFuIEFwcGl1bSBjb25maWcgZmlsZS4gR2VuZXJhdGVkIGZyb20gc2NoZW1hXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdAYXBwaXVtL3R5cGVzJykuQXBwaXVtQ29uZmlnfSBBcHBpdW1Db25maWdcbiAqL1xuXG4vKipcbiAqIFRoZSBjb250ZW50cyBvZiBhbiBBcHBpdW0gY29uZmlnIGZpbGUgd2l0aCBjYW1lbGNhc2VkIHByb3BlcnR5IG5hbWVzIChhbmQgdXNpbmcgYGFwcGl1bUNsaURlc3RgIHZhbHVlIGlmIHByZXNlbnQpLiBHZW5lcmF0ZWQgZnJvbSB7QGxpbmsgQXBwaXVtQ29uZmlnfVxuICogQHR5cGVkZWYge2ltcG9ydCgnQGFwcGl1bS90eXBlcycpLk5vcm1hbGl6ZWRBcHBpdW1Db25maWd9IE5vcm1hbGl6ZWRBcHBpdW1Db25maWdcbiAqL1xuXG4vKipcbiAqIFRoZSBzdHJpbmcgc2hvdWxkIGJlIGEgcmF3IEpTT04gc3RyaW5nLlxuICogQHR5cGVkZWYge3N0cmluZ30gUmF3SnNvblxuICovXG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIGZvcm1hdEVycm9yc30uXG4gKiBAdHlwZWRlZiBGb3JtYXRDb25maWdFcnJvcnNPcHRpb25zXG4gKiBAcHJvcGVydHkge2ltcG9ydCgnLi9jb25maWctZmlsZScpLlJhd0pzb259IFtqc29uXSAtIFJhdyBKU09OIGNvbmZpZyAoYXMgc3RyaW5nKVxuICogQHByb3BlcnR5IHtib29sZWFufSBbcHJldHR5PXRydWVdIC0gV2hldGhlciB0byBmb3JtYXQgZXJyb3JzIGFzIGEgQ0xJLWZyaWVuZGx5IHN0cmluZ1xuICogQHByb3BlcnR5IHtzdHJpbmd9ICBbc2NoZW1hSWRdIC0gU3BlY2lmaWMgSUQgb2YgYSBwcm9wOyBvdGhlcndpc2UgZW50aXJlIHNjaGVtYVxuICovXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFNQSxTQUFTQSxVQUFULENBQW9CQyxRQUFwQixFQUE4QkMsT0FBOUIsRUFB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
@@ -1,3 +1,4 @@
1
+ export function checkNpmOk(): Promise<void>;
1
2
  export type ParsedArgs = import('appium/types').ParsedArgs;
2
3
  export type Args = import('appium/types').Args;
3
4
  export type ArgSpec = import("./schema/arg-spec").ArgSpec<any>;
@@ -22,9 +23,16 @@ export function validateTmpDir(tmpDir: string): Promise<void>;
22
23
  * @returns {Args}
23
24
  */
24
25
  export function getNonDefaultServerArgs(parsedArgs: Args): Args;
25
- export function getGitRev(useGithubApiFallback?: boolean): Promise<any>;
26
+ /**
27
+ * @param {boolean} [useGithubApiFallback]
28
+ * @returns {Promise<string?>}
29
+ */
30
+ export function getGitRev(useGithubApiFallback?: boolean | undefined): Promise<string | null>;
26
31
  export const APPIUM_VER: any;
27
- export function updateBuildInfo(useGithubApiFallback?: boolean): Promise<void>;
32
+ /**
33
+ * @param {boolean} [useGithubApiFallback]
34
+ */
35
+ export function updateBuildInfo(useGithubApiFallback?: boolean | undefined): Promise<void>;
28
36
  /**
29
37
  * Shows a breakdown of the current config after CLI params, config file loaded & defaults applied.
30
38
  *
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../lib/config.js"],"names":[],"mappings":"yBAuUa,OAAO,cAAc,EAAE,UAAU;mBACjC,OAAO,cAAc,EAAE,IAAI;;AAzMxC;;;;;;GAMG;AACH,gCAFa,OAAO,cAAc,EAAE,SAAS,CAI5C;AAED,oCAKC;AAeD,+CAGC;AAhBD,6CAWC;AA4ID;;GAEG;AACH,uCAFW,MAAM,iBAWhB;AAjJD;;;;GAIG;AACH,oDAHW,IAAI,GACF,IAAI,CAmFhB;AApMD,wEAgCC;AAzED,6BAAsC;AAkBtC,+EAUC;AAiOD;;;;;;;;;;GAUG;AACH,0DALW,QAAQ,UAAU,CAAC,gBACnB,OAAO,eAAe,EAAE,oBAAoB,YAC5C,QAAQ,UAAU,CAAC,cACnB,UAAU,QAoBpB;AAgBD,6BAAuC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../lib/config.js"],"names":[],"mappings":"AAsJA,4CAOC;yBAwLY,OAAO,cAAc,EAAE,UAAU;mBACjC,OAAO,cAAc,EAAE,IAAI;;AApNxC;;;;;;GAMG;AACH,gCAFa,OAAO,cAAc,EAAE,SAAS,CAI5C;AAED,oCAOC;AAwBD,+CAGC;AAhBD,6CAWC;AA4ID;;GAEG;AACH,uCAFW,MAAM,iBAWhB;AAjJD;;;;GAIG;AACH,oDAHW,IAAI,GACF,IAAI,CAmFhB;AAtMD;;;GAGG;AACH,uEAFa,QAAQ,MAAM,QAAE,CA6B5B;AArFD,6BAAsC;AA4BtC;;GAEG;AACH,2FAUC;AAmOD;;;;;;;;;;GAUG;AACH,0DALW,QAAQ,UAAU,CAAC,gBACnB,OAAO,eAAe,EAAE,oBAAoB,YAC5C,QAAQ,UAAU,CAAC,cACnB,UAAU,QAoBpB;AAgBD,6BAAuC"}
@@ -7,6 +7,7 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.APPIUM_VER = void 0;
9
9
  exports.checkNodeOk = checkNodeOk;
10
+ exports.checkNpmOk = checkNpmOk;
10
11
  exports.getBuildInfo = getBuildInfo;
11
12
  exports.getGitRev = getGitRev;
12
13
  exports.getNonDefaultServerArgs = getNonDefaultServerArgs;
@@ -27,8 +28,6 @@ var _axios = _interopRequireDefault(require("axios"));
27
28
 
28
29
  var _teen_process = require("teen_process");
29
30
 
30
- var _logger = _interopRequireDefault(require("./logger"));
31
-
32
31
  var _semver = _interopRequireDefault(require("semver"));
33
32
 
34
33
  var _findUp = _interopRequireDefault(require("find-up"));
@@ -40,6 +39,7 @@ const npmPackage = _support.fs.readPackageJsonFrom(__dirname);
40
39
  const APPIUM_VER = npmPackage.version;
41
40
  exports.APPIUM_VER = APPIUM_VER;
42
41
  const MIN_NODE_VERSION = npmPackage.engines.node;
42
+ const MIN_NPM_VERSION = npmPackage.engines.npm;
43
43
  const GIT_META_ROOT = '.git';
44
44
  const GIT_BINARY = `git${_support.system.isWindows() ? '.exe' : ''}`;
45
45
  const GITHUB_API = 'https://api.github.com/repos/appium/appium';
@@ -51,6 +51,13 @@ function getNodeVersion() {
51
51
  return _semver.default.coerce(process.version);
52
52
  }
53
53
 
54
+ async function getNpmVersion() {
55
+ const {
56
+ stdout
57
+ } = await (0, _teen_process.exec)(_support.system.isWindows() ? 'npm.cmd' : 'npm', ['--version']);
58
+ return stdout.trim();
59
+ }
60
+
54
61
  async function updateBuildInfo(useGithubApiFallback = false) {
55
62
  const sha = await getGitRev(useGithubApiFallback);
56
63
 
@@ -59,10 +66,10 @@ async function updateBuildInfo(useGithubApiFallback = false) {
59
66
  }
60
67
 
61
68
  BUILD_INFO['git-sha'] = sha;
62
- const built = await getGitTimestamp(sha, useGithubApiFallback);
69
+ const buildTimestamp = await getGitTimestamp(sha, useGithubApiFallback);
63
70
 
64
- if (built) {
65
- BUILD_INFO.built = built;
71
+ if (buildTimestamp) {
72
+ BUILD_INFO.built = buildTimestamp;
66
73
  }
67
74
  }
68
75
 
@@ -92,22 +99,13 @@ async function getGitRev(useGithubApiFallback = false) {
92
99
  }
93
100
 
94
101
  try {
95
- const resBodyObj = (await _axios.default.get(`${GITHUB_API}/tags`, {
102
+ var _await$axios$get$data, _await$axios$get$data2;
103
+
104
+ return (_await$axios$get$data = (await _axios.default.get(`${GITHUB_API}/git/refs/tags/appium@${APPIUM_VER}`, {
96
105
  headers: {
97
106
  'User-Agent': `Appium ${APPIUM_VER}`
98
107
  }
99
- })).data;
100
-
101
- if (_lodash.default.isArray(resBodyObj)) {
102
- for (const {
103
- name,
104
- commit
105
- } of resBodyObj) {
106
- if (name === `v${APPIUM_VER}` && commit && commit.sha) {
107
- return commit.sha;
108
- }
109
- }
110
- }
108
+ })).data) === null || _await$axios$get$data === void 0 ? void 0 : (_await$axios$get$data2 = _await$axios$get$data.object) === null || _await$axios$get$data2 === void 0 ? void 0 : _await$axios$get$data2.sha;
111
109
  } catch (ign) {}
112
110
 
113
111
  return null;
@@ -132,21 +130,13 @@ async function getGitTimestamp(commitSha, useGithubApiFallback = false) {
132
130
  }
133
131
 
134
132
  try {
135
- const resBodyObj = (await _axios.default.get(`${GITHUB_API}/commits/${commitSha}`, {
133
+ var _await$axios$get$data3, _await$axios$get$data4;
134
+
135
+ return (_await$axios$get$data3 = (await _axios.default.get(`${GITHUB_API}/git/tags/${commitSha}`, {
136
136
  headers: {
137
137
  'User-Agent': `Appium ${APPIUM_VER}`
138
138
  }
139
- })).data;
140
-
141
- if (resBodyObj && resBodyObj.commit) {
142
- if (resBodyObj.commit.committer && resBodyObj.commit.committer.date) {
143
- return resBodyObj.commit.committer.date;
144
- }
145
-
146
- if (resBodyObj.commit.author && resBodyObj.commit.author.date) {
147
- return resBodyObj.commit.author.date;
148
- }
149
- }
139
+ })).data) === null || _await$axios$get$data3 === void 0 ? void 0 : (_await$axios$get$data4 = _await$axios$get$data3.tagger) === null || _await$axios$get$data4 === void 0 ? void 0 : _await$axios$get$data4.date;
150
140
  } catch (ign) {}
151
141
 
152
142
  return null;
@@ -160,7 +150,15 @@ function checkNodeOk() {
160
150
  const version = getNodeVersion();
161
151
 
162
152
  if (!_semver.default.satisfies(version, MIN_NODE_VERSION)) {
163
- _logger.default.errorAndThrow(`Node version must be ${MIN_NODE_VERSION}. Currently ${version.version}`);
153
+ throw new Error(`Node version must be at least ${MIN_NODE_VERSION}; current is ${version.version}`);
154
+ }
155
+ }
156
+
157
+ async function checkNpmOk() {
158
+ const npmVersion = await getNpmVersion();
159
+
160
+ if (!_semver.default.satisfies(npmVersion, MIN_NPM_VERSION)) {
161
+ throw new Error(`npm version must be at least ${MIN_NPM_VERSION}; current is ${npmVersion}. Run "npm install -g npm" to upgrade.`);
164
162
  }
165
163
  }
166
164
 
@@ -252,4 +250,4 @@ async function validateTmpDir(tmpDir) {
252
250
  const rootDir = _support.fs.findRoot(__dirname);
253
251
 
254
252
  exports.rootDir = rootDir;
255
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJucG1QYWNrYWdlIiwiZnMiLCJyZWFkUGFja2FnZUpzb25Gcm9tIiwiX19kaXJuYW1lIiwiQVBQSVVNX1ZFUiIsInZlcnNpb24iLCJNSU5fTk9ERV9WRVJTSU9OIiwiZW5naW5lcyIsIm5vZGUiLCJHSVRfTUVUQV9ST09UIiwiR0lUX0JJTkFSWSIsInN5c3RlbSIsImlzV2luZG93cyIsIkdJVEhVQl9BUEkiLCJCVUlMRF9JTkZPIiwiZ2V0Tm9kZVZlcnNpb24iLCJzZW12ZXIiLCJjb2VyY2UiLCJwcm9jZXNzIiwidXBkYXRlQnVpbGRJbmZvIiwidXNlR2l0aHViQXBpRmFsbGJhY2siLCJzaGEiLCJnZXRHaXRSZXYiLCJidWlsdCIsImdldEdpdFRpbWVzdGFtcCIsImZpbmRHaXRSb290IiwiZmluZFVwIiwiY3dkIiwicm9vdERpciIsInR5cGUiLCJnaXRSb290Iiwic3Rkb3V0IiwiZXhlYyIsInRyaW0iLCJpZ24iLCJyZXNCb2R5T2JqIiwiYXhpb3MiLCJnZXQiLCJoZWFkZXJzIiwiZGF0YSIsIl8iLCJpc0FycmF5IiwibmFtZSIsImNvbW1pdCIsImNvbW1pdFNoYSIsImNvbW1pdHRlciIsImRhdGUiLCJhdXRob3IiLCJnZXRCdWlsZEluZm8iLCJjaGVja05vZGVPayIsInNhdGlzZmllcyIsImxvZ2dlciIsImVycm9yQW5kVGhyb3ciLCJ3YXJuTm9kZURlcHJlY2F0aW9ucyIsInNob3dCdWlsZEluZm8iLCJjb25zb2xlIiwibG9nIiwiSlNPTiIsInN0cmluZ2lmeSIsImdldE5vbkRlZmF1bHRTZXJ2ZXJBcmdzIiwicGFyc2VkQXJncyIsImZsYXR0ZW4iLCJhcmdzIiwiYXJnU3BlY3MiLCJnZXRBbGxBcmdTcGVjcyIsImZsYXR0ZW5lZCIsInJlZHVjZSIsInZhbHVlcyIsImFjYyIsImFyZ1NwZWMiLCJoYXMiLCJkZXN0IiwidmFsdWUiLCJ0eXBlc0RpZmZlciIsImRlZmF1bHRzRnJvbVNjaGVtYSIsImRlZmF1bHRWYWx1ZUlzQXJyYXkiLCJhcmdzVmFsdWVJc0FycmF5IiwiYXJyYXlzRGlmZmVyIiwiZ3QiLCJzaXplIiwiZGlmZmVyZW5jZSIsInZhbHVlc0RpZmZlciIsImRlZmF1bHRJc0RlZmluZWQiLCJpc1VuZGVmaW5lZCIsImFyZ1ZhbHVlTm90QXJyYXlPckFycmF5c0RpZmZlciIsIm92ZXJTb21lIiwibmVnYXRlIiwiZGVmYXVsdFZhbHVlTm90QXJyYXlBbmRWYWx1ZXNEaWZmZXIiLCJvdmVyRXZlcnkiLCJpc05vdERlZmF1bHQiLCJnZXREZWZhdWx0c0ZvclNjaGVtYSIsInBpY2tCeSIsIl9fIiwia2V5Iiwic2V0IiwiY29tcGFjdENvbmZpZyIsInBhcnRpYWwiLCJvbWl0QnkiLCJpc09iamVjdCIsImlzRW1wdHkiLCJzaG93Q29uZmlnIiwibm9uRGVmYXVsdFByZUNvbmZpZ1BhcnNlZEFyZ3MiLCJjb25maWdSZXN1bHQiLCJkZWZhdWx0cyIsImRpciIsImNvbmZpZyIsImZpbGVwYXRoIiwidmFsaWRhdGVUbXBEaXIiLCJ0bXBEaXIiLCJta2RpcnAiLCJlIiwiRXJyb3IiLCJmaW5kUm9vdCJdLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9jb25maWcuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7c3lzdGVtLCBmc30gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XG5pbXBvcnQge2V4ZWN9IGZyb20gJ3RlZW5fcHJvY2Vzcyc7XG5pbXBvcnQgbG9nZ2VyIGZyb20gJy4vbG9nZ2VyJztcbmltcG9ydCBzZW12ZXIgZnJvbSAnc2VtdmVyJztcbmltcG9ydCBmaW5kVXAgZnJvbSAnZmluZC11cCc7XG5pbXBvcnQge2dldERlZmF1bHRzRm9yU2NoZW1hLCBnZXRBbGxBcmdTcGVjc30gZnJvbSAnLi9zY2hlbWEvc2NoZW1hJztcblxuY29uc3QgbnBtUGFja2FnZSA9IGZzLnJlYWRQYWNrYWdlSnNvbkZyb20oX19kaXJuYW1lKTtcblxuY29uc3QgQVBQSVVNX1ZFUiA9IG5wbVBhY2thZ2UudmVyc2lvbjtcbmNvbnN0IE1JTl9OT0RFX1ZFUlNJT04gPSBucG1QYWNrYWdlLmVuZ2luZXMubm9kZTtcblxuY29uc3QgR0lUX01FVEFfUk9PVCA9ICcuZ2l0JztcbmNvbnN0IEdJVF9CSU5BUlkgPSBgZ2l0JHtzeXN0ZW0uaXNXaW5kb3dzKCkgPyAnLmV4ZScgOiAnJ31gO1xuY29uc3QgR0lUSFVCX0FQSSA9ICdodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL2FwcGl1bS9hcHBpdW0nO1xuXG4vKipcbiAqIEB0eXBlIHtpbXBvcnQoJ2FwcGl1bS90eXBlcycpLkJ1aWxkSW5mb31cbiAqL1xuY29uc3QgQlVJTERfSU5GTyA9IHtcbiAgdmVyc2lvbjogQVBQSVVNX1ZFUixcbn07XG5cbmZ1bmN0aW9uIGdldE5vZGVWZXJzaW9uKCkge1xuICByZXR1cm4gLyoqIEB0eXBlIHtpbXBvcnQoJ3NlbXZlcicpLlNlbVZlcn0gKi8gKHNlbXZlci5jb2VyY2UocHJvY2Vzcy52ZXJzaW9uKSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHVwZGF0ZUJ1aWxkSW5mbyh1c2VHaXRodWJBcGlGYWxsYmFjayA9IGZhbHNlKSB7XG4gIGNvbnN0IHNoYSA9IGF3YWl0IGdldEdpdFJldih1c2VHaXRodWJBcGlGYWxsYmFjayk7XG4gIGlmICghc2hhKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIEJVSUxEX0lORk9bJ2dpdC1zaGEnXSA9IHNoYTtcbiAgY29uc3QgYnVpbHQgPSBhd2FpdCBnZXRHaXRUaW1lc3RhbXAoc2hhLCB1c2VHaXRodWJBcGlGYWxsYmFjayk7XG4gIGlmIChidWlsdCkge1xuICAgIEJVSUxEX0lORk8uYnVpbHQgPSBidWlsdDtcbiAgfVxufVxuXG4vKipcbiAqIEZpbmRzIHRoZSBHaXQgbWV0YWRhdGEgZGlyIChzZWUgYEdJVF9NRVRBX1JPT1RgKVxuICpcbiAqIFRoaXMgaXMgbmVlZGVkIGJlY2F1c2UgQXBwaXVtIGNhbm5vdCBhc3N1bWUgYHBhY2thZ2UuanNvbmAgYW5kIGAuZ2l0YCBhcmUgaW4gdGhlIHNhbWVcbiAqIGRpcmVjdG9yeS4gIE1vbm9yZXBvcywgc2VlP1xuICogQHJldHVybnMge1Byb21pc2U8c3RyaW5nfHVuZGVmaW5lZD59IFBhdGggdG8gZGlyIG9yIGB1bmRlZmluZWRgIGlmIG5vdCBmb3VuZFxuICovXG5hc3luYyBmdW5jdGlvbiBmaW5kR2l0Um9vdCgpIHtcbiAgcmV0dXJuIGF3YWl0IGZpbmRVcChHSVRfTUVUQV9ST09ULCB7Y3dkOiByb290RGlyLCB0eXBlOiAnZGlyZWN0b3J5J30pO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRHaXRSZXYodXNlR2l0aHViQXBpRmFsbGJhY2sgPSBmYWxzZSkge1xuICBjb25zdCBnaXRSb290ID0gYXdhaXQgZmluZEdpdFJvb3QoKTtcbiAgaWYgKGdpdFJvb3QpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3Qge3N0ZG91dH0gPSBhd2FpdCBleGVjKEdJVF9CSU5BUlksIFsncmV2LXBhcnNlJywgJ0hFQUQnXSwge1xuICAgICAgICBjd2Q6IGdpdFJvb3QsXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBzdGRvdXQudHJpbSgpO1xuICAgIH0gY2F0Y2ggKGlnbikge31cbiAgfVxuXG4gIGlmICghdXNlR2l0aHViQXBpRmFsbGJhY2spIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHRyeSB7XG4gICAgY29uc3QgcmVzQm9keU9iaiA9IChcbiAgICAgIGF3YWl0IGF4aW9zLmdldChgJHtHSVRIVUJfQVBJfS90YWdzYCwge1xuICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgJ1VzZXItQWdlbnQnOiBgQXBwaXVtICR7QVBQSVVNX1ZFUn1gLFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICApLmRhdGE7XG4gICAgaWYgKF8uaXNBcnJheShyZXNCb2R5T2JqKSkge1xuICAgICAgZm9yIChjb25zdCB7bmFtZSwgY29tbWl0fSBvZiByZXNCb2R5T2JqKSB7XG4gICAgICAgIGlmIChuYW1lID09PSBgdiR7QVBQSVVNX1ZFUn1gICYmIGNvbW1pdCAmJiBjb21taXQuc2hhKSB7XG4gICAgICAgICAgcmV0dXJuIGNvbW1pdC5zaGE7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0gY2F0Y2ggKGlnbikge31cbiAgcmV0dXJuIG51bGw7XG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IGNvbW1pdFNoYVxuICogQHBhcmFtIHtib29sZWFufSBbdXNlR2l0aHViQXBpRmFsbGJhY2tdXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxzdHJpbmc/Pn1cbiAqL1xuYXN5bmMgZnVuY3Rpb24gZ2V0R2l0VGltZXN0YW1wKGNvbW1pdFNoYSwgdXNlR2l0aHViQXBpRmFsbGJhY2sgPSBmYWxzZSkge1xuICBjb25zdCBnaXRSb290ID0gYXdhaXQgZmluZEdpdFJvb3QoKTtcbiAgaWYgKGdpdFJvb3QpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3Qge3N0ZG91dH0gPSBhd2FpdCBleGVjKEdJVF9CSU5BUlksIFsnc2hvdycsICctcycsICctLWZvcm1hdD0lY2knLCBjb21taXRTaGFdLCB7XG4gICAgICAgIGN3ZDogZ2l0Um9vdCxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHN0ZG91dC50cmltKCk7XG4gICAgfSBjYXRjaCAoaWduKSB7fVxuICB9XG5cbiAgaWYgKCF1c2VHaXRodWJBcGlGYWxsYmFjaykge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBjb25zdCByZXNCb2R5T2JqID0gKFxuICAgICAgYXdhaXQgYXhpb3MuZ2V0KGAke0dJVEhVQl9BUEl9L2NvbW1pdHMvJHtjb21taXRTaGF9YCwge1xuICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgJ1VzZXItQWdlbnQnOiBgQXBwaXVtICR7QVBQSVVNX1ZFUn1gLFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICApLmRhdGE7XG4gICAgaWYgKHJlc0JvZHlPYmogJiYgcmVzQm9keU9iai5jb21taXQpIHtcbiAgICAgIGlmIChyZXNCb2R5T2JqLmNvbW1pdC5jb21taXR0ZXIgJiYgcmVzQm9keU9iai5jb21taXQuY29tbWl0dGVyLmRhdGUpIHtcbiAgICAgICAgcmV0dXJuIHJlc0JvZHlPYmouY29tbWl0LmNvbW1pdHRlci5kYXRlO1xuICAgICAgfVxuICAgICAgaWYgKHJlc0JvZHlPYmouY29tbWl0LmF1dGhvciAmJiByZXNCb2R5T2JqLmNvbW1pdC5hdXRob3IuZGF0ZSkge1xuICAgICAgICByZXR1cm4gcmVzQm9keU9iai5jb21taXQuYXV0aG9yLmRhdGU7XG4gICAgICB9XG4gICAgfVxuICB9IGNhdGNoIChpZ24pIHt9XG4gIHJldHVybiBudWxsO1xufVxuXG4vKipcbiAqIE11dGFibGUgb2JqZWN0IGNvbnRhaW5pbmcgQXBwaXVtIGJ1aWxkIGluZm9ybWF0aW9uLiBCeSBkZWZhdWx0IGl0XG4gKiBvbmx5IGNvbnRhaW5zIHRoZSBBcHBpdW0gdmVyc2lvbiwgYnV0IGlzIHVwZGF0ZWQgd2l0aCB0aGUgYnVpbGQgdGltZXN0YW1wXG4gKiBhbmQgZ2l0IGNvbW1pdCBoYXNoIGFzeW5jaHJvbm91c2x5IGFzIHNvb24gYXMgYHVwZGF0ZUJ1aWxkSW5mb2AgaXMgY2FsbGVkXG4gKiBhbmQgc3VjY2VlZHMuXG4gKiBAcmV0dXJucyB7aW1wb3J0KCdhcHBpdW0vdHlwZXMnKS5CdWlsZEluZm99XG4gKi9cbmZ1bmN0aW9uIGdldEJ1aWxkSW5mbygpIHtcbiAgcmV0dXJuIEJVSUxEX0lORk87XG59XG5cbmZ1bmN0aW9uIGNoZWNrTm9kZU9rKCkge1xuICBjb25zdCB2ZXJzaW9uID0gZ2V0Tm9kZVZlcnNpb24oKTtcbiAgaWYgKCFzZW12ZXIuc2F0aXNmaWVzKHZlcnNpb24sIE1JTl9OT0RFX1ZFUlNJT04pKSB7XG4gICAgbG9nZ2VyLmVycm9yQW5kVGhyb3coYE5vZGUgdmVyc2lvbiBtdXN0IGJlICR7TUlOX05PREVfVkVSU0lPTn0uIEN1cnJlbnRseSAke3ZlcnNpb24udmVyc2lvbn1gKTtcbiAgfVxufVxuXG5mdW5jdGlvbiB3YXJuTm9kZURlcHJlY2F0aW9ucygpIHtcbiAgLyoqXG4gICAqIFVuY29tbWVudCB0aGlzIHNlY3Rpb24gdG8gZ2V0IG5vZGUgdmVyc2lvbiBkZXByZWNhdGlvbiB3YXJuaW5nc1xuICAgKiBBbHNvIGFkZCB0ZXN0IGNhc2VzIHRvIGNvbmZpZy1zcGVjcy5qcyB0byBjb3ZlciB0aGUgY2FzZXMgYWRkZWRcbiAgICoqL1xuICAvLyBjb25zdCB2ZXJzaW9uID0gZ2V0Tm9kZVZlcnNpb24oKTtcbiAgLy8gaWYgKHZlcnNpb24ubWFqb3IgPCA4KSB7XG4gIC8vICAgbG9nZ2VyLndhcm4oYEFwcGl1bSBzdXBwb3J0IGZvciB2ZXJzaW9ucyBvZiBub2RlIDwgJHt2ZXJzaW9uLm1ham9yfSBoYXMgYmVlbiBgICtcbiAgLy8gICAgICAgICAgICAgICAnZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHZlcnNpb24uIFBsZWFzZSAnICtcbiAgLy8gICAgICAgICAgICAgICAndXBncmFkZSEnKTtcbiAgLy8gfVxufVxuXG5hc3luYyBmdW5jdGlvbiBzaG93QnVpbGRJbmZvKCkge1xuICBhd2FpdCB1cGRhdGVCdWlsZEluZm8odHJ1ZSk7XG4gIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KGdldEJ1aWxkSW5mbygpKSk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tY29uc29sZVxufVxuXG4vKipcbiAqIFJldHVybnMgay92IHBhaXJzIG9mIHNlcnZlciBhcmd1bWVudHMgd2hpY2ggYXJlIF9ub3RfIHRoZSBkZWZhdWx0cy5cbiAqIEBwYXJhbSB7QXJnc30gcGFyc2VkQXJnc1xuICogQHJldHVybnMge0FyZ3N9XG4gKi9cbmZ1bmN0aW9uIGdldE5vbkRlZmF1bHRTZXJ2ZXJBcmdzKHBhcnNlZEFyZ3MpIHtcbiAgLyoqXG4gICAqIEZsYXR0ZW5zIHBhcnNlZCBhcmdzIGludG8gYSBzaW5nbGUgbGV2ZWwgb2JqZWN0IGZvciBjb21wYXJpc29uIHdpdGhcbiAgICogZmxhdHRlbmVkIGRlZmF1bHRzIGFjcm9zcyBzZXJ2ZXIgYXJncyBhbmQgZXh0ZW5zaW9uIGFyZ3MuXG4gICAqIEBwYXJhbSB7QXJnc30gYXJnc1xuICAgKiBAcmV0dXJucyB7UmVjb3JkPHN0cmluZywgeyB2YWx1ZTogYW55LCBhcmdTcGVjOiBBcmdTcGVjIH0+fVxuICAgKi9cbiAgY29uc3QgZmxhdHRlbiA9IChhcmdzKSA9PiB7XG4gICAgY29uc3QgYXJnU3BlY3MgPSBnZXRBbGxBcmdTcGVjcygpO1xuICAgIGNvbnN0IGZsYXR0ZW5lZCA9IF8ucmVkdWNlKFxuICAgICAgWy4uLmFyZ1NwZWNzLnZhbHVlcygpXSxcbiAgICAgIChhY2MsIGFyZ1NwZWMpID0+IHtcbiAgICAgICAgaWYgKF8uaGFzKGFyZ3MsIGFyZ1NwZWMuZGVzdCkpIHtcbiAgICAgICAgICBhY2NbYXJnU3BlYy5kZXN0XSA9IHt2YWx1ZTogXy5nZXQoYXJncywgYXJnU3BlYy5kZXN0KSwgYXJnU3BlY307XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgIH0sXG4gICAgICAvKiogQHR5cGUge1JlY29yZDxzdHJpbmcsIHsgdmFsdWU6IGFueSwgYXJnU3BlYzogQXJnU3BlYyB9Pn0gKi8gKHt9KVxuICAgICk7XG5cbiAgICByZXR1cm4gZmxhdHRlbmVkO1xuICB9O1xuXG4gIGNvbnN0IGFyZ3MgPSBmbGF0dGVuKHBhcnNlZEFyZ3MpO1xuXG4gIC8vIGhvcGVmdWxseSB0aGVzZSBmdW5jdGlvbiBuYW1lcyBhcmUgZGVzY3JpcHRpdmUgZW5vdWdoXG4gIGNvbnN0IHR5cGVzRGlmZmVyID0gLyoqIEBwYXJhbSB7c3RyaW5nfSBkZXN0ICovIChkZXN0KSA9PlxuICAgIHR5cGVvZiBhcmdzW2Rlc3RdLnZhbHVlICE9PSB0eXBlb2YgZGVmYXVsdHNGcm9tU2NoZW1hW2Rlc3RdO1xuXG4gIGNvbnN0IGRlZmF1bHRWYWx1ZUlzQXJyYXkgPSAvKiogQHBhcmFtIHtzdHJpbmd9IGRlc3QgKi8gKGRlc3QpID0+XG4gICAgXy5pc0FycmF5KGRlZmF1bHRzRnJvbVNjaGVtYVtkZXN0XSk7XG5cbiAgY29uc3QgYXJnc1ZhbHVlSXNBcnJheSA9IC8qKiBAcGFyYW0ge3N0cmluZ30gZGVzdCAqLyAoZGVzdCkgPT4gXy5pc0FycmF5KGFyZ3NbZGVzdF0udmFsdWUpO1xuXG4gIGNvbnN0IGFycmF5c0RpZmZlciA9IC8qKiBAcGFyYW0ge3N0cmluZ30gZGVzdCAqLyAoZGVzdCkgPT5cbiAgICBfLmd0KF8uc2l6ZShfLmRpZmZlcmVuY2UoYXJnc1tkZXN0XS52YWx1ZSwgZGVmYXVsdHNGcm9tU2NoZW1hW2Rlc3RdKSksIDApO1xuXG4gIGNvbnN0IHZhbHVlc0RpZmZlciA9IC8qKiBAcGFyYW0ge3N0cmluZ30gZGVzdCAqLyAoZGVzdCkgPT5cbiAgICBhcmdzW2Rlc3RdLnZhbHVlICE9PSBkZWZhdWx0c0Zyb21TY2hlbWFbZGVzdF07XG5cbiAgY29uc3QgZGVmYXVsdElzRGVmaW5lZCA9IC8qKiBAcGFyYW0ge3N0cmluZ30gZGVzdCAqLyAoZGVzdCkgPT5cbiAgICAhXy5pc1VuZGVmaW5lZChkZWZhdWx0c0Zyb21TY2hlbWFbZGVzdF0pO1xuXG4gIC8vIG5vdGUgdGhhdCBgXy5vdmVyRXZlcnlgIGlzIGxpa2UgYW4gXCJBTkRcIiwgYW5kIGBfLm92ZXJTb21lYCBpcyBsaWtlIGFuIFwiT1JcIlxuXG4gIGNvbnN0IGFyZ1ZhbHVlTm90QXJyYXlPckFycmF5c0RpZmZlciA9IF8ub3ZlclNvbWUoW18ubmVnYXRlKGFyZ3NWYWx1ZUlzQXJyYXkpLCBhcnJheXNEaWZmZXJdKTtcblxuICBjb25zdCBkZWZhdWx0VmFsdWVOb3RBcnJheUFuZFZhbHVlc0RpZmZlciA9IF8ub3ZlckV2ZXJ5KFtcbiAgICBfLm5lZ2F0ZShkZWZhdWx0VmFsdWVJc0FycmF5KSxcbiAgICB2YWx1ZXNEaWZmZXIsXG4gIF0pO1xuXG4gIC8qKlxuICAgKiBUaGlzIHVzZWQgdG8gYmUgYSBoaWRlb3VzIGNvbmRpdGlvbmFsLCBidXQgaXQncyBicm9rZW4gdXAgaW50byBhIGhpZGVvdXMgZnVuY3Rpb24gaW5zdGVhZC5cbiAgICogaG9wZWZ1bGx5IHRoaXMgbWFrZXMgdGhpbmdzIGEgbGl0dGxlIG1vcmUgdW5kZXJzdGFuZGFibGUuXG4gICAqIC0gY2hlY2tzIGlmIHRoZSBkZWZhdWx0IHZhbHVlIGlzIGRlZmluZWRcbiAgICogLSBpZiBzbywgYW5kIHRoZSBkZWZhdWx0IGlzIG5vdCBhbiBhcnJheTpcbiAgICogICAtIGVuc3VyZXMgdGhlIHR5cGVzIGFyZSB0aGUgc2FtZVxuICAgKiAgIC0gZW5zdXJlcyB0aGUgdmFsdWVzIGFyZSBlcXVhbFxuICAgKiAtIGlmIHNvLCBhbmQgdGhlIGRlZmF1bHQgaXMgYW4gYXJyYXk6XG4gICAqICAgLSBlbnN1cmVzIHRoZSBhcmdzIHZhbHVlIGlzIGFuIGFycmF5XG4gICAqICAgLSBlbnN1cmVzIHRoZSBhcmdzIHZhbHVlcyBkbyBub3QgZGlmZmVyIGZyb20gdGhlIGRlZmF1bHQgdmFsdWVzXG4gICAqIEB0eXBlIHsoZGVzdDogc3RyaW5nKSA9PiBib29sZWFufVxuICAgKi9cbiAgY29uc3QgaXNOb3REZWZhdWx0ID0gXy5vdmVyRXZlcnkoW1xuICAgIGRlZmF1bHRJc0RlZmluZWQsXG4gICAgXy5vdmVyU29tZShbXG4gICAgICB0eXBlc0RpZmZlcixcbiAgICAgIF8ub3ZlckV2ZXJ5KFtkZWZhdWx0VmFsdWVJc0FycmF5LCBhcmdWYWx1ZU5vdEFycmF5T3JBcnJheXNEaWZmZXJdKSxcbiAgICAgIGRlZmF1bHRWYWx1ZU5vdEFycmF5QW5kVmFsdWVzRGlmZmVyLFxuICAgIF0pLFxuICBdKTtcblxuICBjb25zdCBkZWZhdWx0c0Zyb21TY2hlbWEgPSBnZXREZWZhdWx0c0ZvclNjaGVtYSh0cnVlKTtcblxuICByZXR1cm4gXy5yZWR1Y2UoXG4gICAgXy5waWNrQnkoYXJncywgKF9fLCBrZXkpID0+IGlzTm90RGVmYXVsdChrZXkpKSxcbiAgICAvLyBleHBsb2RlcyB0aGUgZmxhdHRlbmVkIG9iamVjdCBiYWNrIGludG8gbmVzdGVkIG9uZVxuICAgIChhY2MsIHt2YWx1ZSwgYXJnU3BlY30pID0+IF8uc2V0KGFjYywgYXJnU3BlYy5kZXN0LCB2YWx1ZSksXG4gICAgLyoqIEB0eXBlIHtBcmdzfSAqLyAoe30pXG4gICk7XG59XG5cbi8qKlxuICogQ29tcGFjdHMgYW4gb2JqZWN0IGZvciB7QGxpbmsgc2hvd0NvbmZpZ306XG4gKiAxLiBSZW1vdmVzIGBzdWJjb21tYW5kYCBrZXkvdmFsdWVcbiAqIDIuIFJlbW92ZXMgYHVuZGVmaW5lZGAgdmFsdWVzXG4gKiAzLiBSZW1vdmVzIGVtcHR5IG9iamVjdHMgKGJ1dCBub3QgYGZhbHNlYCB2YWx1ZXMpXG4gKiBEb2VzIG5vdCBvcGVyYXRlIHJlY3Vyc2l2ZWx5LlxuICovXG5jb25zdCBjb21wYWN0Q29uZmlnID0gXy5wYXJ0aWFsKFxuICBfLm9taXRCeSxcbiAgXyxcbiAgKHZhbHVlLCBrZXkpID0+XG4gICAga2V5ID09PSAnc3ViY29tbWFuZCcgfHwgXy5pc1VuZGVmaW5lZCh2YWx1ZSkgfHwgKF8uaXNPYmplY3QodmFsdWUpICYmIF8uaXNFbXB0eSh2YWx1ZSkpXG4pO1xuXG4vKipcbiAqIFNob3dzIGEgYnJlYWtkb3duIG9mIHRoZSBjdXJyZW50IGNvbmZpZyBhZnRlciBDTEkgcGFyYW1zLCBjb25maWcgZmlsZSBsb2FkZWQgJiBkZWZhdWx0cyBhcHBsaWVkLlxuICpcbiAqIFRoZSBhY3R1YWwgc2hhcGUgb2YgYHByZUNvbmZpZ1BhcnNlZEFyZ3NgIGFuZCBgZGVmYXVsdHNgIGRvZXMgbm90IG1hdHRlciBmb3IgdGhlIHB1cnBvc2VzIG9mIHRoaXMgZnVuY3Rpb24sXG4gKiBidXQgaXQncyBpbnRlbmRlZCB0byBiZSBjYWxsZWQgd2l0aCB2YWx1ZXMgb2YgdHlwZSB7QGxpbmsgUGFyc2VkQXJnc30gYW5kIGBEZWZhdWx0VmFsdWVzPHRydWU+YCwgcmVzcGVjdGl2ZWx5LlxuICpcbiAqIEBwYXJhbSB7UGFydGlhbDxQYXJzZWRBcmdzPn0gbm9uRGVmYXVsdFByZUNvbmZpZ1BhcnNlZEFyZ3MgLSBQYXJzZWQgQ0xJIGFyZ3MgKG9yIHBhcmFtIHRvIGBpbml0KClgKSBiZWZvcmUgY29uZmlnICYgZGVmYXVsdHMgYXBwbGllZFxuICogQHBhcmFtIHtpbXBvcnQoJy4vY29uZmlnLWZpbGUnKS5SZWFkQ29uZmlnRmlsZVJlc3VsdH0gY29uZmlnUmVzdWx0IC0gUmVzdWx0IG9mIGF0dGVtcHRpbmcgdG8gbG9hZCBhIGNvbmZpZyBmaWxlLiAgX011c3RfIGJlIG5vcm1hbGl6ZWRcbiAqIEBwYXJhbSB7UGFydGlhbDxQYXJzZWRBcmdzPn0gZGVmYXVsdHMgLSBDb25maWd1cmF0aW9uIGRlZmF1bHRzIGZyb20gc2NoZW1hc1xuICogQHBhcmFtIHtQYXJzZWRBcmdzfSBwYXJzZWRBcmdzIC0gRW50aXJlIHBhcnNlZCBhcmdzIG9iamVjdFxuICovXG5mdW5jdGlvbiBzaG93Q29uZmlnKG5vbkRlZmF1bHRQcmVDb25maWdQYXJzZWRBcmdzLCBjb25maWdSZXN1bHQsIGRlZmF1bHRzLCBwYXJzZWRBcmdzKSB7XG4gIGNvbnNvbGUubG9nKCdBcHBpdW0gQ29uZmlndXJhdGlvblxcbicpO1xuICBjb25zb2xlLmxvZygnZnJvbSBkZWZhdWx0czpcXG4nKTtcbiAgY29uc29sZS5kaXIoY29tcGFjdENvbmZpZyhkZWZhdWx0cykpO1xuICBpZiAoY29uZmlnUmVzdWx0LmNvbmZpZykge1xuICAgIGNvbnNvbGUubG9nKGBcXG5mcm9tIGNvbmZpZyBmaWxlIGF0ICR7Y29uZmlnUmVzdWx0LmZpbGVwYXRofTpcXG5gKTtcbiAgICBjb25zb2xlLmRpcihjb21wYWN0Q29uZmlnKGNvbmZpZ1Jlc3VsdC5jb25maWcpKTtcbiAgfSBlbHNlIHtcbiAgICBjb25zb2xlLmxvZyhgXFxuKG5vIGNvbmZpZ3VyYXRpb24gZmlsZSBsb2FkZWQpYCk7XG4gIH1cbiAgaWYgKF8uaXNFbXB0eShub25EZWZhdWx0UHJlQ29uZmlnUGFyc2VkQXJncykpIHtcbiAgICBjb25zb2xlLmxvZyhgXFxuKG5vIENMSSBwYXJhbWV0ZXJzIHByb3ZpZGVkKWApO1xuICB9IGVsc2Uge1xuICAgIGNvbnNvbGUubG9nKCdcXG52aWEgQ0xJIG9yIGZ1bmN0aW9uIGNhbGw6XFxuJyk7XG4gICAgY29uc29sZS5kaXIoY29tcGFjdENvbmZpZyhub25EZWZhdWx0UHJlQ29uZmlnUGFyc2VkQXJncykpO1xuICB9XG4gIGNvbnNvbGUubG9nKCdcXG5maW5hbCBjb25maWd1cmF0aW9uOlxcbicpO1xuICBjb25zb2xlLmRpcihjb21wYWN0Q29uZmlnKHBhcnNlZEFyZ3MpKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdG1wRGlyXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHZhbGlkYXRlVG1wRGlyKHRtcERpcikge1xuICB0cnkge1xuICAgIGF3YWl0IGZzLm1rZGlycCh0bXBEaXIpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYFdlIGNvdWxkIG5vdCBlbnN1cmUgdGhhdCB0aGUgdGVtcCBkaXIgeW91IHNwZWNpZmllZCBgICtcbiAgICAgICAgYCgke3RtcERpcn0pIGV4aXN0cy4gUGxlYXNlIG1ha2Ugc3VyZSBpdCdzIHdyaXRlYWJsZS5gXG4gICAgKTtcbiAgfVxufVxuXG5jb25zdCByb290RGlyID0gZnMuZmluZFJvb3QoX19kaXJuYW1lKTtcblxuZXhwb3J0IHtcbiAgZ2V0QnVpbGRJbmZvLFxuICBjaGVja05vZGVPayxcbiAgc2hvd0J1aWxkSW5mbyxcbiAgd2Fybk5vZGVEZXByZWNhdGlvbnMsXG4gIHZhbGlkYXRlVG1wRGlyLFxuICBnZXROb25EZWZhdWx0U2VydmVyQXJncyxcbiAgZ2V0R2l0UmV2LFxuICBBUFBJVU1fVkVSLFxuICB1cGRhdGVCdWlsZEluZm8sXG4gIHNob3dDb25maWcsXG4gIHJvb3REaXIsXG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ2FwcGl1bS90eXBlcycpLlBhcnNlZEFyZ3N9IFBhcnNlZEFyZ3NcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ2FwcGl1bS90eXBlcycpLkFyZ3N9IEFyZ3NcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJy4vc2NoZW1hL2FyZy1zcGVjJykuQXJnU3BlY30gQXJnU3BlY1xuICovXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBLE1BQU1BLFVBQVUsR0FBR0MsV0FBQSxDQUFHQyxtQkFBSCxDQUF1QkMsU0FBdkIsQ0FBbkI7O0FBRUEsTUFBTUMsVUFBVSxHQUFHSixVQUFVLENBQUNLLE9BQTlCOztBQUNBLE1BQU1DLGdCQUFnQixHQUFHTixVQUFVLENBQUNPLE9BQVgsQ0FBbUJDLElBQTVDO0FBRUEsTUFBTUMsYUFBYSxHQUFHLE1BQXRCO0FBQ0EsTUFBTUMsVUFBVSxHQUFJLE1BQUtDLGVBQUEsQ0FBT0MsU0FBUCxLQUFxQixNQUFyQixHQUE4QixFQUFHLEVBQTFEO0FBQ0EsTUFBTUMsVUFBVSxHQUFHLDRDQUFuQjtBQUtBLE1BQU1DLFVBQVUsR0FBRztFQUNqQlQsT0FBTyxFQUFFRDtBQURRLENBQW5COztBQUlBLFNBQVNXLGNBQVQsR0FBMEI7RUFDeEIsT0FBK0NDLGVBQUEsQ0FBT0MsTUFBUCxDQUFjQyxPQUFPLENBQUNiLE9BQXRCLENBQS9DO0FBQ0Q7O0FBRUQsZUFBZWMsZUFBZixDQUErQkMsb0JBQW9CLEdBQUcsS0FBdEQsRUFBNkQ7RUFDM0QsTUFBTUMsR0FBRyxHQUFHLE1BQU1DLFNBQVMsQ0FBQ0Ysb0JBQUQsQ0FBM0I7O0VBQ0EsSUFBSSxDQUFDQyxHQUFMLEVBQVU7SUFDUjtFQUNEOztFQUNEUCxVQUFVLENBQUMsU0FBRCxDQUFWLEdBQXdCTyxHQUF4QjtFQUNBLE1BQU1FLEtBQUssR0FBRyxNQUFNQyxlQUFlLENBQUNILEdBQUQsRUFBTUQsb0JBQU4sQ0FBbkM7O0VBQ0EsSUFBSUcsS0FBSixFQUFXO0lBQ1RULFVBQVUsQ0FBQ1MsS0FBWCxHQUFtQkEsS0FBbkI7RUFDRDtBQUNGOztBQVNELGVBQWVFLFdBQWYsR0FBNkI7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
253
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJucG1QYWNrYWdlIiwiZnMiLCJyZWFkUGFja2FnZUpzb25Gcm9tIiwiX19kaXJuYW1lIiwiQVBQSVVNX1ZFUiIsInZlcnNpb24iLCJNSU5fTk9ERV9WRVJTSU9OIiwiZW5naW5lcyIsIm5vZGUiLCJNSU5fTlBNX1ZFUlNJT04iLCJucG0iLCJHSVRfTUVUQV9ST09UIiwiR0lUX0JJTkFSWSIsInN5c3RlbSIsImlzV2luZG93cyIsIkdJVEhVQl9BUEkiLCJCVUlMRF9JTkZPIiwiZ2V0Tm9kZVZlcnNpb24iLCJzZW12ZXIiLCJjb2VyY2UiLCJwcm9jZXNzIiwiZ2V0TnBtVmVyc2lvbiIsInN0ZG91dCIsImV4ZWMiLCJ0cmltIiwidXBkYXRlQnVpbGRJbmZvIiwidXNlR2l0aHViQXBpRmFsbGJhY2siLCJzaGEiLCJnZXRHaXRSZXYiLCJidWlsZFRpbWVzdGFtcCIsImdldEdpdFRpbWVzdGFtcCIsImJ1aWx0IiwiZmluZEdpdFJvb3QiLCJmaW5kVXAiLCJjd2QiLCJyb290RGlyIiwidHlwZSIsImdpdFJvb3QiLCJpZ24iLCJheGlvcyIsImdldCIsImhlYWRlcnMiLCJkYXRhIiwib2JqZWN0IiwiY29tbWl0U2hhIiwidGFnZ2VyIiwiZGF0ZSIsImdldEJ1aWxkSW5mbyIsImNoZWNrTm9kZU9rIiwic2F0aXNmaWVzIiwiRXJyb3IiLCJjaGVja05wbU9rIiwibnBtVmVyc2lvbiIsIndhcm5Ob2RlRGVwcmVjYXRpb25zIiwic2hvd0J1aWxkSW5mbyIsImNvbnNvbGUiLCJsb2ciLCJKU09OIiwic3RyaW5naWZ5IiwiZ2V0Tm9uRGVmYXVsdFNlcnZlckFyZ3MiLCJwYXJzZWRBcmdzIiwiZmxhdHRlbiIsImFyZ3MiLCJhcmdTcGVjcyIsImdldEFsbEFyZ1NwZWNzIiwiZmxhdHRlbmVkIiwiXyIsInJlZHVjZSIsInZhbHVlcyIsImFjYyIsImFyZ1NwZWMiLCJoYXMiLCJkZXN0IiwidmFsdWUiLCJ0eXBlc0RpZmZlciIsImRlZmF1bHRzRnJvbVNjaGVtYSIsImRlZmF1bHRWYWx1ZUlzQXJyYXkiLCJpc0FycmF5IiwiYXJnc1ZhbHVlSXNBcnJheSIsImFycmF5c0RpZmZlciIsImd0Iiwic2l6ZSIsImRpZmZlcmVuY2UiLCJ2YWx1ZXNEaWZmZXIiLCJkZWZhdWx0SXNEZWZpbmVkIiwiaXNVbmRlZmluZWQiLCJhcmdWYWx1ZU5vdEFycmF5T3JBcnJheXNEaWZmZXIiLCJvdmVyU29tZSIsIm5lZ2F0ZSIsImRlZmF1bHRWYWx1ZU5vdEFycmF5QW5kVmFsdWVzRGlmZmVyIiwib3ZlckV2ZXJ5IiwiaXNOb3REZWZhdWx0IiwiZ2V0RGVmYXVsdHNGb3JTY2hlbWEiLCJwaWNrQnkiLCJfXyIsImtleSIsInNldCIsImNvbXBhY3RDb25maWciLCJwYXJ0aWFsIiwib21pdEJ5IiwiaXNPYmplY3QiLCJpc0VtcHR5Iiwic2hvd0NvbmZpZyIsIm5vbkRlZmF1bHRQcmVDb25maWdQYXJzZWRBcmdzIiwiY29uZmlnUmVzdWx0IiwiZGVmYXVsdHMiLCJkaXIiLCJjb25maWciLCJmaWxlcGF0aCIsInZhbGlkYXRlVG1wRGlyIiwidG1wRGlyIiwibWtkaXJwIiwiZSIsImZpbmRSb290Il0sInNvdXJjZXMiOlsiLi4vLi4vbGliL2NvbmZpZy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1jb25zb2xlICovXG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHtzeXN0ZW0sIGZzfSBmcm9tICdAYXBwaXVtL3N1cHBvcnQnO1xuaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcbmltcG9ydCB7ZXhlY30gZnJvbSAndGVlbl9wcm9jZXNzJztcbmltcG9ydCBzZW12ZXIgZnJvbSAnc2VtdmVyJztcbmltcG9ydCBmaW5kVXAgZnJvbSAnZmluZC11cCc7XG5pbXBvcnQge2dldERlZmF1bHRzRm9yU2NoZW1hLCBnZXRBbGxBcmdTcGVjc30gZnJvbSAnLi9zY2hlbWEvc2NoZW1hJztcblxuY29uc3QgbnBtUGFja2FnZSA9IGZzLnJlYWRQYWNrYWdlSnNvbkZyb20oX19kaXJuYW1lKTtcblxuY29uc3QgQVBQSVVNX1ZFUiA9IG5wbVBhY2thZ2UudmVyc2lvbjtcbmNvbnN0IE1JTl9OT0RFX1ZFUlNJT04gPSBucG1QYWNrYWdlLmVuZ2luZXMubm9kZTtcbmNvbnN0IE1JTl9OUE1fVkVSU0lPTiA9IG5wbVBhY2thZ2UuZW5naW5lcy5ucG07XG5cbmNvbnN0IEdJVF9NRVRBX1JPT1QgPSAnLmdpdCc7XG5jb25zdCBHSVRfQklOQVJZID0gYGdpdCR7c3lzdGVtLmlzV2luZG93cygpID8gJy5leGUnIDogJyd9YDtcbmNvbnN0IEdJVEhVQl9BUEkgPSAnaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9hcHBpdW0vYXBwaXVtJztcblxuLyoqXG4gKiBAdHlwZSB7aW1wb3J0KCdhcHBpdW0vdHlwZXMnKS5CdWlsZEluZm99XG4gKi9cbmNvbnN0IEJVSUxEX0lORk8gPSB7XG4gIHZlcnNpb246IEFQUElVTV9WRVIsXG59O1xuXG5mdW5jdGlvbiBnZXROb2RlVmVyc2lvbigpIHtcbiAgcmV0dXJuIC8qKiBAdHlwZSB7aW1wb3J0KCdzZW12ZXInKS5TZW1WZXJ9ICovIChzZW12ZXIuY29lcmNlKHByb2Nlc3MudmVyc2lvbikpO1xufVxuXG4vKipcbiAqIFJldHVybnMgdmVyc2lvbiBvZiBgbnBtYFxuICogQHJldHVybnMge1Byb21pc2U8c3RyaW5nPn1cbiAqL1xuYXN5bmMgZnVuY3Rpb24gZ2V0TnBtVmVyc2lvbigpIHtcbiAgY29uc3Qge3N0ZG91dH0gPSBhd2FpdCBleGVjKHN5c3RlbS5pc1dpbmRvd3MoKSA/ICducG0uY21kJyA6ICducG0nLCBbJy0tdmVyc2lvbiddKTtcbiAgcmV0dXJuIHN0ZG91dC50cmltKCk7XG59XG5cbi8qKlxuICogQHBhcmFtIHtib29sZWFufSBbdXNlR2l0aHViQXBpRmFsbGJhY2tdXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHVwZGF0ZUJ1aWxkSW5mbyh1c2VHaXRodWJBcGlGYWxsYmFjayA9IGZhbHNlKSB7XG4gIGNvbnN0IHNoYSA9IGF3YWl0IGdldEdpdFJldih1c2VHaXRodWJBcGlGYWxsYmFjayk7XG4gIGlmICghc2hhKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIEJVSUxEX0lORk9bJ2dpdC1zaGEnXSA9IHNoYTtcbiAgY29uc3QgYnVpbGRUaW1lc3RhbXAgPSBhd2FpdCBnZXRHaXRUaW1lc3RhbXAoc2hhLCB1c2VHaXRodWJBcGlGYWxsYmFjayk7XG4gIGlmIChidWlsZFRpbWVzdGFtcCkge1xuICAgIEJVSUxEX0lORk8uYnVpbHQgPSBidWlsZFRpbWVzdGFtcDtcbiAgfVxufVxuXG4vKipcbiAqIEZpbmRzIHRoZSBHaXQgbWV0YWRhdGEgZGlyIChzZWUgYEdJVF9NRVRBX1JPT1RgKVxuICpcbiAqIFRoaXMgaXMgbmVlZGVkIGJlY2F1c2UgQXBwaXVtIGNhbm5vdCBhc3N1bWUgYHBhY2thZ2UuanNvbmAgYW5kIGAuZ2l0YCBhcmUgaW4gdGhlIHNhbWVcbiAqIGRpcmVjdG9yeS4gIE1vbm9yZXBvcywgc2VlP1xuICogQHJldHVybnMge1Byb21pc2U8c3RyaW5nfHVuZGVmaW5lZD59IFBhdGggdG8gZGlyIG9yIGB1bmRlZmluZWRgIGlmIG5vdCBmb3VuZFxuICovXG5hc3luYyBmdW5jdGlvbiBmaW5kR2l0Um9vdCgpIHtcbiAgcmV0dXJuIGF3YWl0IGZpbmRVcChHSVRfTUVUQV9ST09ULCB7Y3dkOiByb290RGlyLCB0eXBlOiAnZGlyZWN0b3J5J30pO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW3VzZUdpdGh1YkFwaUZhbGxiYWNrXVxuICogQHJldHVybnMge1Byb21pc2U8c3RyaW5nPz59XG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGdldEdpdFJldih1c2VHaXRodWJBcGlGYWxsYmFjayA9IGZhbHNlKSB7XG4gIGNvbnN0IGdpdFJvb3QgPSBhd2FpdCBmaW5kR2l0Um9vdCgpO1xuICBpZiAoZ2l0Um9vdCkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB7c3Rkb3V0fSA9IGF3YWl0IGV4ZWMoR0lUX0JJTkFSWSwgWydyZXYtcGFyc2UnLCAnSEVBRCddLCB7XG4gICAgICAgIGN3ZDogZ2l0Um9vdCxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHN0ZG91dC50cmltKCk7XG4gICAgfSBjYXRjaCAoaWduKSB7fVxuICB9XG5cbiAgaWYgKCF1c2VHaXRodWJBcGlGYWxsYmFjaykge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLy8gSWYgdGhlIHBhY2thZ2UgZm9sZGVyIGlzIG5vdCBhIHZhbGlkIGdpdCByZXBvc2l0b3J5XG4gIC8vIHRoZW4gZmV0Y2ggdGhlIGNvcnJlc3BvbmRpbmcgdGFnIGluZm8gZnJvbSBHaXRIdWJcbiAgdHJ5IHtcbiAgICByZXR1cm4gKFxuICAgICAgYXdhaXQgYXhpb3MuZ2V0KGAke0dJVEhVQl9BUEl9L2dpdC9yZWZzL3RhZ3MvYXBwaXVtQCR7QVBQSVVNX1ZFUn1gLCB7XG4gICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAnVXNlci1BZ2VudCc6IGBBcHBpdW0gJHtBUFBJVU1fVkVSfWAsXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgICkuZGF0YT8ub2JqZWN0Py5zaGE7XG4gIH0gY2F0Y2ggKGlnbikge31cbiAgcmV0dXJuIG51bGw7XG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IGNvbW1pdFNoYVxuICogQHBhcmFtIHtib29sZWFufSBbdXNlR2l0aHViQXBpRmFsbGJhY2tdXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxzdHJpbmc/Pn1cbiAqL1xuYXN5bmMgZnVuY3Rpb24gZ2V0R2l0VGltZXN0YW1wKGNvbW1pdFNoYSwgdXNlR2l0aHViQXBpRmFsbGJhY2sgPSBmYWxzZSkge1xuICBjb25zdCBnaXRSb290ID0gYXdhaXQgZmluZEdpdFJvb3QoKTtcbiAgaWYgKGdpdFJvb3QpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3Qge3N0ZG91dH0gPSBhd2FpdCBleGVjKEdJVF9CSU5BUlksIFsnc2hvdycsICctcycsICctLWZvcm1hdD0lY2knLCBjb21taXRTaGFdLCB7XG4gICAgICAgIGN3ZDogZ2l0Um9vdCxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHN0ZG91dC50cmltKCk7XG4gICAgfSBjYXRjaCAoaWduKSB7fVxuICB9XG5cbiAgaWYgKCF1c2VHaXRodWJBcGlGYWxsYmFjaykge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgdHJ5IHtcbiAgICByZXR1cm4gKFxuICAgICAgYXdhaXQgYXhpb3MuZ2V0KGAke0dJVEhVQl9BUEl9L2dpdC90YWdzLyR7Y29tbWl0U2hhfWAsIHtcbiAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICdVc2VyLUFnZW50JzogYEFwcGl1bSAke0FQUElVTV9WRVJ9YCxcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgKS5kYXRhPy50YWdnZXI/LmRhdGU7XG4gIH0gY2F0Y2ggKGlnbikge31cbiAgcmV0dXJuIG51bGw7XG59XG5cbi8qKlxuICogTXV0YWJsZSBvYmplY3QgY29udGFpbmluZyBBcHBpdW0gYnVpbGQgaW5mb3JtYXRpb24uIEJ5IGRlZmF1bHQgaXRcbiAqIG9ubHkgY29udGFpbnMgdGhlIEFwcGl1bSB2ZXJzaW9uLCBidXQgaXMgdXBkYXRlZCB3aXRoIHRoZSBidWlsZCB0aW1lc3RhbXBcbiAqIGFuZCBnaXQgY29tbWl0IGhhc2ggYXN5bmNocm9ub3VzbHkgYXMgc29vbiBhcyBgdXBkYXRlQnVpbGRJbmZvYCBpcyBjYWxsZWRcbiAqIGFuZCBzdWNjZWVkcy5cbiAqIEByZXR1cm5zIHtpbXBvcnQoJ2FwcGl1bS90eXBlcycpLkJ1aWxkSW5mb31cbiAqL1xuZnVuY3Rpb24gZ2V0QnVpbGRJbmZvKCkge1xuICByZXR1cm4gQlVJTERfSU5GTztcbn1cblxuZnVuY3Rpb24gY2hlY2tOb2RlT2soKSB7XG4gIGNvbnN0IHZlcnNpb24gPSBnZXROb2RlVmVyc2lvbigpO1xuICBpZiAoIXNlbXZlci5zYXRpc2ZpZXModmVyc2lvbiwgTUlOX05PREVfVkVSU0lPTikpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgTm9kZSB2ZXJzaW9uIG11c3QgYmUgYXQgbGVhc3QgJHtNSU5fTk9ERV9WRVJTSU9OfTsgY3VycmVudCBpcyAke3ZlcnNpb24udmVyc2lvbn1gXG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY2hlY2tOcG1PaygpIHtcbiAgY29uc3QgbnBtVmVyc2lvbiA9IGF3YWl0IGdldE5wbVZlcnNpb24oKTtcbiAgaWYgKCFzZW12ZXIuc2F0aXNmaWVzKG5wbVZlcnNpb24sIE1JTl9OUE1fVkVSU0lPTikpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgbnBtIHZlcnNpb24gbXVzdCBiZSBhdCBsZWFzdCAke01JTl9OUE1fVkVSU0lPTn07IGN1cnJlbnQgaXMgJHtucG1WZXJzaW9ufS4gUnVuIFwibnBtIGluc3RhbGwgLWcgbnBtXCIgdG8gdXBncmFkZS5gXG4gICAgKTtcbiAgfVxufVxuXG5mdW5jdGlvbiB3YXJuTm9kZURlcHJlY2F0aW9ucygpIHtcbiAgLyoqXG4gICAqIFVuY29tbWVudCB0aGlzIHNlY3Rpb24gdG8gZ2V0IG5vZGUgdmVyc2lvbiBkZXByZWNhdGlvbiB3YXJuaW5nc1xuICAgKiBBbHNvIGFkZCB0ZXN0IGNhc2VzIHRvIGNvbmZpZy1zcGVjcy5qcyB0byBjb3ZlciB0aGUgY2FzZXMgYWRkZWRcbiAgICoqL1xuICAvLyBjb25zdCB2ZXJzaW9uID0gZ2V0Tm9kZVZlcnNpb24oKTtcbiAgLy8gaWYgKHZlcnNpb24ubWFqb3IgPCA4KSB7XG4gIC8vICAgbG9nZ2VyLndhcm4oYEFwcGl1bSBzdXBwb3J0IGZvciB2ZXJzaW9ucyBvZiBub2RlIDwgJHt2ZXJzaW9uLm1ham9yfSBoYXMgYmVlbiBgICtcbiAgLy8gICAgICAgICAgICAgICAnZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHZlcnNpb24uIFBsZWFzZSAnICtcbiAgLy8gICAgICAgICAgICAgICAndXBncmFkZSEnKTtcbiAgLy8gfVxufVxuXG5hc3luYyBmdW5jdGlvbiBzaG93QnVpbGRJbmZvKCkge1xuICBhd2FpdCB1cGRhdGVCdWlsZEluZm8odHJ1ZSk7XG4gIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KGdldEJ1aWxkSW5mbygpKSk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tY29uc29sZVxufVxuXG4vKipcbiAqIFJldHVybnMgay92IHBhaXJzIG9mIHNlcnZlciBhcmd1bWVudHMgd2hpY2ggYXJlIF9ub3RfIHRoZSBkZWZhdWx0cy5cbiAqIEBwYXJhbSB7QXJnc30gcGFyc2VkQXJnc1xuICogQHJldHVybnMge0FyZ3N9XG4gKi9cbmZ1bmN0aW9uIGdldE5vbkRlZmF1bHRTZXJ2ZXJBcmdzKHBhcnNlZEFyZ3MpIHtcbiAgLyoqXG4gICAqIEZsYXR0ZW5zIHBhcnNlZCBhcmdzIGludG8gYSBzaW5nbGUgbGV2ZWwgb2JqZWN0IGZvciBjb21wYXJpc29uIHdpdGhcbiAgICogZmxhdHRlbmVkIGRlZmF1bHRzIGFjcm9zcyBzZXJ2ZXIgYXJncyBhbmQgZXh0ZW5zaW9uIGFyZ3MuXG4gICAqIEBwYXJhbSB7QXJnc30gYXJnc1xuICAgKiBAcmV0dXJucyB7UmVjb3JkPHN0cmluZywgeyB2YWx1ZTogYW55LCBhcmdTcGVjOiBBcmdTcGVjIH0+fVxuICAgKi9cbiAgY29uc3QgZmxhdHRlbiA9IChhcmdzKSA9PiB7XG4gICAgY29uc3QgYXJnU3BlY3MgPSBnZXRBbGxBcmdTcGVjcygpO1xuICAgIGNvbnN0IGZsYXR0ZW5lZCA9IF8ucmVkdWNlKFxuICAgICAgWy4uLmFyZ1NwZWNzLnZhbHVlcygpXSxcbiAgICAgIChhY2MsIGFyZ1NwZWMpID0+IHtcbiAgICAgICAgaWYgKF8uaGFzKGFyZ3MsIGFyZ1NwZWMuZGVzdCkpIHtcbiAgICAgICAgICBhY2NbYXJnU3BlYy5kZXN0XSA9IHt2YWx1ZTogXy5nZXQoYXJncywgYXJnU3BlYy5kZXN0KSwgYXJnU3BlY307XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgIH0sXG4gICAgICAvKiogQHR5cGUge1JlY29yZDxzdHJpbmcsIHsgdmFsdWU6IGFueSwgYXJnU3BlYzogQXJnU3BlYyB9Pn0gKi8gKHt9KVxuICAgICk7XG5cbiAgICByZXR1cm4gZmxhdHRlbmVkO1xuICB9O1xuXG4gIGNvbnN0IGFyZ3MgPSBmbGF0dGVuKHBhcnNlZEFyZ3MpO1xuXG4gIC8vIGhvcGVmdWxseSB0aGVzZSBmdW5jdGlvbiBuYW1lcyBhcmUgZGVzY3JpcHRpdmUgZW5vdWdoXG4gIGNvbnN0IHR5cGVzRGlmZmVyID0gLyoqIEBwYXJhbSB7c3RyaW5nfSBkZXN0ICovIChkZXN0KSA9PlxuICAgIHR5cGVvZiBhcmdzW2Rlc3RdLnZhbHVlICE9PSB0eXBlb2YgZGVmYXVsdHNGcm9tU2NoZW1hW2Rlc3RdO1xuXG4gIGNvbnN0IGRlZmF1bHRWYWx1ZUlzQXJyYXkgPSAvKiogQHBhcmFtIHtzdHJpbmd9IGRlc3QgKi8gKGRlc3QpID0+XG4gICAgXy5pc0FycmF5KGRlZmF1bHRzRnJvbVNjaGVtYVtkZXN0XSk7XG5cbiAgY29uc3QgYXJnc1ZhbHVlSXNBcnJheSA9IC8qKiBAcGFyYW0ge3N0cmluZ30gZGVzdCAqLyAoZGVzdCkgPT4gXy5pc0FycmF5KGFyZ3NbZGVzdF0udmFsdWUpO1xuXG4gIGNvbnN0IGFycmF5c0RpZmZlciA9IC8qKiBAcGFyYW0ge3N0cmluZ30gZGVzdCAqLyAoZGVzdCkgPT5cbiAgICBfLmd0KF8uc2l6ZShfLmRpZmZlcmVuY2UoYXJnc1tkZXN0XS52YWx1ZSwgZGVmYXVsdHNGcm9tU2NoZW1hW2Rlc3RdKSksIDApO1xuXG4gIGNvbnN0IHZhbHVlc0RpZmZlciA9IC8qKiBAcGFyYW0ge3N0cmluZ30gZGVzdCAqLyAoZGVzdCkgPT5cbiAgICBhcmdzW2Rlc3RdLnZhbHVlICE9PSBkZWZhdWx0c0Zyb21TY2hlbWFbZGVzdF07XG5cbiAgY29uc3QgZGVmYXVsdElzRGVmaW5lZCA9IC8qKiBAcGFyYW0ge3N0cmluZ30gZGVzdCAqLyAoZGVzdCkgPT5cbiAgICAhXy5pc1VuZGVmaW5lZChkZWZhdWx0c0Zyb21TY2hlbWFbZGVzdF0pO1xuXG4gIC8vIG5vdGUgdGhhdCBgXy5vdmVyRXZlcnlgIGlzIGxpa2UgYW4gXCJBTkRcIiwgYW5kIGBfLm92ZXJTb21lYCBpcyBsaWtlIGFuIFwiT1JcIlxuXG4gIGNvbnN0IGFyZ1ZhbHVlTm90QXJyYXlPckFycmF5c0RpZmZlciA9IF8ub3ZlclNvbWUoW18ubmVnYXRlKGFyZ3NWYWx1ZUlzQXJyYXkpLCBhcnJheXNEaWZmZXJdKTtcblxuICBjb25zdCBkZWZhdWx0VmFsdWVOb3RBcnJheUFuZFZhbHVlc0RpZmZlciA9IF8ub3ZlckV2ZXJ5KFtcbiAgICBfLm5lZ2F0ZShkZWZhdWx0VmFsdWVJc0FycmF5KSxcbiAgICB2YWx1ZXNEaWZmZXIsXG4gIF0pO1xuXG4gIC8qKlxuICAgKiBUaGlzIHVzZWQgdG8gYmUgYSBoaWRlb3VzIGNvbmRpdGlvbmFsLCBidXQgaXQncyBicm9rZW4gdXAgaW50byBhIGhpZGVvdXMgZnVuY3Rpb24gaW5zdGVhZC5cbiAgICogaG9wZWZ1bGx5IHRoaXMgbWFrZXMgdGhpbmdzIGEgbGl0dGxlIG1vcmUgdW5kZXJzdGFuZGFibGUuXG4gICAqIC0gY2hlY2tzIGlmIHRoZSBkZWZhdWx0IHZhbHVlIGlzIGRlZmluZWRcbiAgICogLSBpZiBzbywgYW5kIHRoZSBkZWZhdWx0IGlzIG5vdCBhbiBhcnJheTpcbiAgICogICAtIGVuc3VyZXMgdGhlIHR5cGVzIGFyZSB0aGUgc2FtZVxuICAgKiAgIC0gZW5zdXJlcyB0aGUgdmFsdWVzIGFyZSBlcXVhbFxuICAgKiAtIGlmIHNvLCBhbmQgdGhlIGRlZmF1bHQgaXMgYW4gYXJyYXk6XG4gICAqICAgLSBlbnN1cmVzIHRoZSBhcmdzIHZhbHVlIGlzIGFuIGFycmF5XG4gICAqICAgLSBlbnN1cmVzIHRoZSBhcmdzIHZhbHVlcyBkbyBub3QgZGlmZmVyIGZyb20gdGhlIGRlZmF1bHQgdmFsdWVzXG4gICAqIEB0eXBlIHsoZGVzdDogc3RyaW5nKSA9PiBib29sZWFufVxuICAgKi9cbiAgY29uc3QgaXNOb3REZWZhdWx0ID0gXy5vdmVyRXZlcnkoW1xuICAgIGRlZmF1bHRJc0RlZmluZWQsXG4gICAgXy5vdmVyU29tZShbXG4gICAgICB0eXBlc0RpZmZlcixcbiAgICAgIF8ub3ZlckV2ZXJ5KFtkZWZhdWx0VmFsdWVJc0FycmF5LCBhcmdWYWx1ZU5vdEFycmF5T3JBcnJheXNEaWZmZXJdKSxcbiAgICAgIGRlZmF1bHRWYWx1ZU5vdEFycmF5QW5kVmFsdWVzRGlmZmVyLFxuICAgIF0pLFxuICBdKTtcblxuICBjb25zdCBkZWZhdWx0c0Zyb21TY2hlbWEgPSBnZXREZWZhdWx0c0ZvclNjaGVtYSh0cnVlKTtcblxuICByZXR1cm4gXy5yZWR1Y2UoXG4gICAgXy5waWNrQnkoYXJncywgKF9fLCBrZXkpID0+IGlzTm90RGVmYXVsdChrZXkpKSxcbiAgICAvLyBleHBsb2RlcyB0aGUgZmxhdHRlbmVkIG9iamVjdCBiYWNrIGludG8gbmVzdGVkIG9uZVxuICAgIChhY2MsIHt2YWx1ZSwgYXJnU3BlY30pID0+IF8uc2V0KGFjYywgYXJnU3BlYy5kZXN0LCB2YWx1ZSksXG4gICAgLyoqIEB0eXBlIHtBcmdzfSAqLyAoe30pXG4gICk7XG59XG5cbi8qKlxuICogQ29tcGFjdHMgYW4gb2JqZWN0IGZvciB7QGxpbmsgc2hvd0NvbmZpZ306XG4gKiAxLiBSZW1vdmVzIGBzdWJjb21tYW5kYCBrZXkvdmFsdWVcbiAqIDIuIFJlbW92ZXMgYHVuZGVmaW5lZGAgdmFsdWVzXG4gKiAzLiBSZW1vdmVzIGVtcHR5IG9iamVjdHMgKGJ1dCBub3QgYGZhbHNlYCB2YWx1ZXMpXG4gKiBEb2VzIG5vdCBvcGVyYXRlIHJlY3Vyc2l2ZWx5LlxuICovXG5jb25zdCBjb21wYWN0Q29uZmlnID0gXy5wYXJ0aWFsKFxuICBfLm9taXRCeSxcbiAgXyxcbiAgKHZhbHVlLCBrZXkpID0+XG4gICAga2V5ID09PSAnc3ViY29tbWFuZCcgfHwgXy5pc1VuZGVmaW5lZCh2YWx1ZSkgfHwgKF8uaXNPYmplY3QodmFsdWUpICYmIF8uaXNFbXB0eSh2YWx1ZSkpXG4pO1xuXG4vKipcbiAqIFNob3dzIGEgYnJlYWtkb3duIG9mIHRoZSBjdXJyZW50IGNvbmZpZyBhZnRlciBDTEkgcGFyYW1zLCBjb25maWcgZmlsZSBsb2FkZWQgJiBkZWZhdWx0cyBhcHBsaWVkLlxuICpcbiAqIFRoZSBhY3R1YWwgc2hhcGUgb2YgYHByZUNvbmZpZ1BhcnNlZEFyZ3NgIGFuZCBgZGVmYXVsdHNgIGRvZXMgbm90IG1hdHRlciBmb3IgdGhlIHB1cnBvc2VzIG9mIHRoaXMgZnVuY3Rpb24sXG4gKiBidXQgaXQncyBpbnRlbmRlZCB0byBiZSBjYWxsZWQgd2l0aCB2YWx1ZXMgb2YgdHlwZSB7QGxpbmsgUGFyc2VkQXJnc30gYW5kIGBEZWZhdWx0VmFsdWVzPHRydWU+YCwgcmVzcGVjdGl2ZWx5LlxuICpcbiAqIEBwYXJhbSB7UGFydGlhbDxQYXJzZWRBcmdzPn0gbm9uRGVmYXVsdFByZUNvbmZpZ1BhcnNlZEFyZ3MgLSBQYXJzZWQgQ0xJIGFyZ3MgKG9yIHBhcmFtIHRvIGBpbml0KClgKSBiZWZvcmUgY29uZmlnICYgZGVmYXVsdHMgYXBwbGllZFxuICogQHBhcmFtIHtpbXBvcnQoJy4vY29uZmlnLWZpbGUnKS5SZWFkQ29uZmlnRmlsZVJlc3VsdH0gY29uZmlnUmVzdWx0IC0gUmVzdWx0IG9mIGF0dGVtcHRpbmcgdG8gbG9hZCBhIGNvbmZpZyBmaWxlLiAgX011c3RfIGJlIG5vcm1hbGl6ZWRcbiAqIEBwYXJhbSB7UGFydGlhbDxQYXJzZWRBcmdzPn0gZGVmYXVsdHMgLSBDb25maWd1cmF0aW9uIGRlZmF1bHRzIGZyb20gc2NoZW1hc1xuICogQHBhcmFtIHtQYXJzZWRBcmdzfSBwYXJzZWRBcmdzIC0gRW50aXJlIHBhcnNlZCBhcmdzIG9iamVjdFxuICovXG5mdW5jdGlvbiBzaG93Q29uZmlnKG5vbkRlZmF1bHRQcmVDb25maWdQYXJzZWRBcmdzLCBjb25maWdSZXN1bHQsIGRlZmF1bHRzLCBwYXJzZWRBcmdzKSB7XG4gIGNvbnNvbGUubG9nKCdBcHBpdW0gQ29uZmlndXJhdGlvblxcbicpO1xuICBjb25zb2xlLmxvZygnZnJvbSBkZWZhdWx0czpcXG4nKTtcbiAgY29uc29sZS5kaXIoY29tcGFjdENvbmZpZyhkZWZhdWx0cykpO1xuICBpZiAoY29uZmlnUmVzdWx0LmNvbmZpZykge1xuICAgIGNvbnNvbGUubG9nKGBcXG5mcm9tIGNvbmZpZyBmaWxlIGF0ICR7Y29uZmlnUmVzdWx0LmZpbGVwYXRofTpcXG5gKTtcbiAgICBjb25zb2xlLmRpcihjb21wYWN0Q29uZmlnKGNvbmZpZ1Jlc3VsdC5jb25maWcpKTtcbiAgfSBlbHNlIHtcbiAgICBjb25zb2xlLmxvZyhgXFxuKG5vIGNvbmZpZ3VyYXRpb24gZmlsZSBsb2FkZWQpYCk7XG4gIH1cbiAgaWYgKF8uaXNFbXB0eShub25EZWZhdWx0UHJlQ29uZmlnUGFyc2VkQXJncykpIHtcbiAgICBjb25zb2xlLmxvZyhgXFxuKG5vIENMSSBwYXJhbWV0ZXJzIHByb3ZpZGVkKWApO1xuICB9IGVsc2Uge1xuICAgIGNvbnNvbGUubG9nKCdcXG52aWEgQ0xJIG9yIGZ1bmN0aW9uIGNhbGw6XFxuJyk7XG4gICAgY29uc29sZS5kaXIoY29tcGFjdENvbmZpZyhub25EZWZhdWx0UHJlQ29uZmlnUGFyc2VkQXJncykpO1xuICB9XG4gIGNvbnNvbGUubG9nKCdcXG5maW5hbCBjb25maWd1cmF0aW9uOlxcbicpO1xuICBjb25zb2xlLmRpcihjb21wYWN0Q29uZmlnKHBhcnNlZEFyZ3MpKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdG1wRGlyXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHZhbGlkYXRlVG1wRGlyKHRtcERpcikge1xuICB0cnkge1xuICAgIGF3YWl0IGZzLm1rZGlycCh0bXBEaXIpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYFdlIGNvdWxkIG5vdCBlbnN1cmUgdGhhdCB0aGUgdGVtcCBkaXIgeW91IHNwZWNpZmllZCBgICtcbiAgICAgICAgYCgke3RtcERpcn0pIGV4aXN0cy4gUGxlYXNlIG1ha2Ugc3VyZSBpdCdzIHdyaXRlYWJsZS5gXG4gICAgKTtcbiAgfVxufVxuXG5jb25zdCByb290RGlyID0gZnMuZmluZFJvb3QoX19kaXJuYW1lKTtcblxuZXhwb3J0IHtcbiAgZ2V0QnVpbGRJbmZvLFxuICBjaGVja05vZGVPayxcbiAgc2hvd0J1aWxkSW5mbyxcbiAgd2Fybk5vZGVEZXByZWNhdGlvbnMsXG4gIHZhbGlkYXRlVG1wRGlyLFxuICBnZXROb25EZWZhdWx0U2VydmVyQXJncyxcbiAgZ2V0R2l0UmV2LFxuICBBUFBJVU1fVkVSLFxuICB1cGRhdGVCdWlsZEluZm8sXG4gIHNob3dDb25maWcsXG4gIHJvb3REaXIsXG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ2FwcGl1bS90eXBlcycpLlBhcnNlZEFyZ3N9IFBhcnNlZEFyZ3NcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ2FwcGl1bS90eXBlcycpLkFyZ3N9IEFyZ3NcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJy4vc2NoZW1hL2FyZy1zcGVjJykuQXJnU3BlY30gQXJnU3BlY1xuICovXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQSxNQUFNQSxVQUFVLEdBQUdDLFdBQUEsQ0FBR0MsbUJBQUgsQ0FBdUJDLFNBQXZCLENBQW5COztBQUVBLE1BQU1DLFVBQVUsR0FBR0osVUFBVSxDQUFDSyxPQUE5Qjs7QUFDQSxNQUFNQyxnQkFBZ0IsR0FBR04sVUFBVSxDQUFDTyxPQUFYLENBQW1CQyxJQUE1QztBQUNBLE1BQU1DLGVBQWUsR0FBR1QsVUFBVSxDQUFDTyxPQUFYLENBQW1CRyxHQUEzQztBQUVBLE1BQU1DLGFBQWEsR0FBRyxNQUF0QjtBQUNBLE1BQU1DLFVBQVUsR0FBSSxNQUFLQyxlQUFBLENBQU9DLFNBQVAsS0FBcUIsTUFBckIsR0FBOEIsRUFBRyxFQUExRDtBQUNBLE1BQU1DLFVBQVUsR0FBRyw0Q0FBbkI7QUFLQSxNQUFNQyxVQUFVLEdBQUc7RUFDakJYLE9BQU8sRUFBRUQ7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
@@ -1 +1 @@
1
- {"version":3,"file":"extension-config.d.ts","sourceRoot":"","sources":["../../../lib/extension/extension-config.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"extension-config.d.ts","sourceRoot":"","sources":["../../../lib/extension/extension-config.js"],"names":[],"mappings":"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"}