appium 2.0.0-beta.26 → 2.0.0-beta.29

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 (118) hide show
  1. package/build/lib/appium.d.ts +215 -0
  2. package/build/lib/appium.d.ts.map +1 -0
  3. package/build/lib/appium.js +62 -54
  4. package/build/lib/cli/args.d.ts +20 -0
  5. package/build/lib/cli/args.d.ts.map +1 -0
  6. package/build/lib/cli/args.js +1 -1
  7. package/build/lib/cli/driver-command.d.ts +36 -0
  8. package/build/lib/cli/driver-command.d.ts.map +1 -0
  9. package/build/lib/cli/driver-command.js +8 -7
  10. package/build/lib/cli/extension-command.d.ts +345 -0
  11. package/build/lib/cli/extension-command.d.ts.map +1 -0
  12. package/build/lib/cli/extension-command.js +52 -38
  13. package/build/lib/cli/extension.d.ts +14 -0
  14. package/build/lib/cli/extension.d.ts.map +1 -0
  15. package/build/lib/cli/extension.js +7 -2
  16. package/build/lib/cli/parser.d.ts +79 -0
  17. package/build/lib/cli/parser.d.ts.map +1 -0
  18. package/build/lib/cli/parser.js +1 -1
  19. package/build/lib/cli/plugin-command.d.ts +39 -0
  20. package/build/lib/cli/plugin-command.d.ts.map +1 -0
  21. package/build/lib/cli/plugin-command.js +6 -7
  22. package/build/lib/cli/utils.d.ts +29 -0
  23. package/build/lib/cli/utils.d.ts.map +1 -0
  24. package/build/lib/cli/utils.js +1 -1
  25. package/build/lib/config-file.d.ts +100 -0
  26. package/build/lib/config-file.d.ts.map +1 -0
  27. package/build/lib/config-file.js +1 -1
  28. package/build/lib/config.d.ts +40 -0
  29. package/build/lib/config.d.ts.map +1 -0
  30. package/build/lib/config.js +2 -2
  31. package/build/lib/constants.d.ts +48 -0
  32. package/build/lib/constants.d.ts.map +1 -0
  33. package/build/lib/constants.js +1 -1
  34. package/build/lib/extension/driver-config.d.ts +84 -0
  35. package/build/lib/extension/driver-config.d.ts.map +1 -0
  36. package/build/lib/extension/driver-config.js +1 -1
  37. package/build/lib/extension/extension-config.d.ts +170 -0
  38. package/build/lib/extension/extension-config.d.ts.map +1 -0
  39. package/build/lib/extension/extension-config.js +2 -2
  40. package/build/lib/extension/index.d.ts +39 -0
  41. package/build/lib/extension/index.d.ts.map +1 -0
  42. package/build/lib/extension/index.js +1 -1
  43. package/build/lib/extension/manifest.d.ts +174 -0
  44. package/build/lib/extension/manifest.d.ts.map +1 -0
  45. package/build/lib/extension/manifest.js +1 -1
  46. package/build/lib/extension/package-changed.d.ts +11 -0
  47. package/build/lib/extension/package-changed.d.ts.map +1 -0
  48. package/build/lib/extension/package-changed.js +1 -1
  49. package/build/lib/extension/plugin-config.d.ts +62 -0
  50. package/build/lib/extension/plugin-config.d.ts.map +1 -0
  51. package/build/lib/extension/plugin-config.js +1 -1
  52. package/build/lib/grid-register.d.ts +10 -0
  53. package/build/lib/grid-register.d.ts.map +1 -0
  54. package/build/lib/logger.d.ts +3 -0
  55. package/build/lib/logger.d.ts.map +1 -0
  56. package/build/lib/logsink.d.ts +4 -0
  57. package/build/lib/logsink.d.ts.map +1 -0
  58. package/build/lib/logsink.js +1 -1
  59. package/build/lib/main.d.ts +51 -0
  60. package/build/lib/main.d.ts.map +1 -0
  61. package/build/lib/main.js +1 -1
  62. package/build/lib/schema/arg-spec.d.ts +143 -0
  63. package/build/lib/schema/arg-spec.d.ts.map +1 -0
  64. package/build/lib/schema/arg-spec.js +1 -1
  65. package/build/lib/schema/cli-args.d.ts +19 -0
  66. package/build/lib/schema/cli-args.d.ts.map +1 -0
  67. package/build/lib/schema/cli-args.js +1 -1
  68. package/build/lib/schema/cli-transformers.d.ts +5 -0
  69. package/build/lib/schema/cli-transformers.d.ts.map +1 -0
  70. package/build/lib/schema/cli-transformers.js +1 -1
  71. package/build/lib/schema/index.d.ts +3 -0
  72. package/build/lib/schema/index.d.ts.map +1 -0
  73. package/build/lib/schema/keywords.d.ts +24 -0
  74. package/build/lib/schema/keywords.d.ts.map +1 -0
  75. package/build/lib/schema/keywords.js +1 -1
  76. package/build/lib/schema/schema.d.ts +259 -0
  77. package/build/lib/schema/schema.d.ts.map +1 -0
  78. package/build/lib/schema/schema.js +3 -3
  79. package/build/lib/utils.d.ts +66 -0
  80. package/build/lib/utils.d.ts.map +1 -0
  81. package/build/lib/utils.js +6 -4
  82. package/build/tsconfig.tsbuildinfo +1 -0
  83. package/lib/appium.js +163 -81
  84. package/lib/cli/args.js +1 -2
  85. package/lib/cli/driver-command.js +11 -8
  86. package/lib/cli/extension-command.js +129 -80
  87. package/lib/cli/extension.js +13 -3
  88. package/lib/cli/parser.js +1 -2
  89. package/lib/cli/plugin-command.js +16 -6
  90. package/lib/cli/utils.js +1 -1
  91. package/lib/config-file.js +3 -4
  92. package/lib/config.js +12 -8
  93. package/lib/constants.js +0 -1
  94. package/lib/extension/driver-config.js +31 -12
  95. package/lib/extension/extension-config.js +21 -22
  96. package/lib/extension/index.js +1 -2
  97. package/lib/extension/manifest.js +23 -127
  98. package/lib/extension/package-changed.js +0 -1
  99. package/lib/extension/plugin-config.js +9 -7
  100. package/lib/logsink.js +4 -0
  101. package/lib/main.js +9 -10
  102. package/lib/schema/arg-spec.js +10 -6
  103. package/lib/schema/cli-args.js +0 -1
  104. package/lib/schema/cli-transformers.js +0 -1
  105. package/lib/schema/keywords.js +0 -1
  106. package/lib/schema/schema.js +2 -3
  107. package/lib/utils.js +49 -16
  108. package/package.json +12 -14
  109. package/types/appium-manifest.d.ts +61 -0
  110. package/types/cli.d.ts +134 -0
  111. package/types/extension.d.ts +56 -0
  112. package/types/external-manifest.d.ts +58 -0
  113. package/types/index.d.ts +7 -0
  114. package/build/lib/appium-config.schema.json +0 -278
  115. package/build/lib/schema/appium-config-schema.js +0 -251
  116. package/lib/schema/appium-config-schema.js +0 -287
  117. package/types/appium-config.d.ts +0 -197
  118. package/types/types.d.ts +0 -245
@@ -74,4 +74,4 @@ function getActiveDrivers(driverConfig, useDrivers = []) {
74
74
  }
75
75
  }));
76
76
  }
77
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9leHRlbnNpb24vaW5kZXguanMiXSwibmFtZXMiOlsibG9hZEV4dGVuc2lvbnMiLCJhcHBpdW1Ib21lIiwibWFuaWZlc3QiLCJNYW5pZmVzdCIsImdldEluc3RhbmNlIiwiZHJpdmVycyIsInBsdWdpbnMiLCJyZWFkIiwiZHJpdmVyQ29uZmlnIiwiRHJpdmVyQ29uZmlnIiwiY3JlYXRlIiwiZXh0RGF0YSIsInBsdWdpbkNvbmZpZyIsIlBsdWdpbkNvbmZpZyIsImdldEFjdGl2ZVBsdWdpbnMiLCJ1c2VQbHVnaW5zIiwiXyIsImNvbXBhY3QiLCJPYmplY3QiLCJrZXlzIiwiaW5zdGFsbGVkRXh0ZW5zaW9ucyIsImZpbHRlciIsInBsdWdpbk5hbWUiLCJpbmNsdWRlcyIsImxlbmd0aCIsIlVTRV9BTExfUExVR0lOUyIsIm1hcCIsImxvZyIsImluZm8iLCJQbHVnaW5DbGFzcyIsInJlcXVpcmUiLCJlcnIiLCJlcnJvciIsIm1lc3NhZ2UiLCJkZWJ1ZyIsInN0YWNrIiwiZ2V0QWN0aXZlRHJpdmVycyIsInVzZURyaXZlcnMiLCJkcml2ZXJOYW1lIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBYU8sZUFBZUEsY0FBZixDQUErQkMsVUFBL0IsRUFBMkM7QUFBQTs7QUFDaEQsUUFBTUMsUUFBUSxHQUFHQyxtQkFBU0MsV0FBVCxDQUFxQkgsVUFBckIsQ0FBakI7O0FBQ0EsUUFBTTtBQUFDSSxJQUFBQSxPQUFEO0FBQVVDLElBQUFBO0FBQVYsTUFBcUIsTUFBTUosUUFBUSxDQUFDSyxJQUFULEVBQWpDO0FBQ0EsUUFBTUMsWUFBWSw0QkFDaEJDLDJCQUFhTCxXQUFiLENBQXlCRixRQUF6QixDQURnQix5RUFFaEJPLDJCQUFhQyxNQUFiLENBQW9CUixRQUFwQixFQUE4QjtBQUFDUyxJQUFBQSxPQUFPLEVBQUVOO0FBQVYsR0FBOUIsQ0FGRjtBQUdBLFFBQU1PLFlBQVksNEJBQ2hCQywyQkFBYVQsV0FBYixDQUF5QkYsUUFBekIsQ0FEZ0IseUVBRWhCVywyQkFBYUgsTUFBYixDQUFvQlIsUUFBcEIsRUFBOEI7QUFBQ1MsSUFBQUEsT0FBTyxFQUFFTDtBQUFWLEdBQTlCLENBRkY7QUFHQSxTQUFPO0FBQUNFLElBQUFBLFlBQUQ7QUFBZUksSUFBQUE7QUFBZixHQUFQO0FBQ0Q7O0FBWU0sU0FBU0UsZ0JBQVQsQ0FBMkJGLFlBQTNCLEVBQXlDRyxVQUFVLEdBQUcsRUFBdEQsRUFBMEQ7QUFDL0QsU0FBT0MsZ0JBQUVDLE9BQUYsQ0FDTEMsTUFBTSxDQUFDQyxJQUFQLENBQVlQLFlBQVksQ0FBQ1EsbUJBQXpCLEVBQ0dDLE1BREgsQ0FFS0MsVUFBRCxJQUNFTixnQkFBRU8sUUFBRixDQUFXUixVQUFYLEVBQXVCTyxVQUF2QixLQUNDUCxVQUFVLENBQUNTLE1BQVgsS0FBc0IsQ0FBdEIsSUFBMkJULFVBQVUsQ0FBQyxDQUFELENBQVYsS0FBa0JVLDBCQUpwRCxFQU1HQyxHQU5ILENBTVFKLFVBQUQsSUFBZ0I7QUFDbkIsUUFBSTtBQUNGSyxzQkFBSUMsSUFBSixDQUFVLDZCQUE0Qk4sVUFBVyxLQUFqRDs7QUFDQSxZQUFNTyxXQUFXLEdBQUdqQixZQUFZLENBQUNrQixPQUFiLENBQXFCUixVQUFyQixDQUFwQjs7QUFFQU8sTUFBQUEsV0FBVyxDQUFDUCxVQUFaLEdBQXlCQSxVQUF6QjtBQUNBLGFBQU9PLFdBQVA7QUFDRCxLQU5ELENBTUUsT0FBT0UsR0FBUCxFQUFZO0FBQ1pKLHNCQUFJSyxLQUFKLENBQ0csMEJBQXlCVixVQUFXLHdDQUFyQyxHQUNHLDhCQUE2QlMsR0FBRyxDQUFDRSxPQUFRLEVBRjlDOztBQUlBTixzQkFBSU8sS0FBSixDQUFVSCxHQUFHLENBQUNJLEtBQWQ7QUFDRDtBQUNGLEdBcEJILENBREssQ0FBUDtBQXVCRDs7QUFVTSxTQUFTQyxnQkFBVCxDQUEyQjVCLFlBQTNCLEVBQXlDNkIsVUFBVSxHQUFHLEVBQXRELEVBQTBEO0FBQy9ELFNBQU9yQixnQkFBRUMsT0FBRixDQUNMQyxNQUFNLENBQUNDLElBQVAsQ0FBWVgsWUFBWSxDQUFDWSxtQkFBekIsRUFDR0MsTUFESCxDQUVLaUIsVUFBRCxJQUNFdEIsZ0JBQUVPLFFBQUYsQ0FBV2MsVUFBWCxFQUF1QkMsVUFBdkIsS0FBc0NELFVBQVUsQ0FBQ2IsTUFBWCxLQUFzQixDQUhsRSxFQUtHRSxHQUxILENBS1FZLFVBQUQsSUFBZ0I7QUFDbkIsUUFBSTtBQUNGWCxzQkFBSUMsSUFBSixDQUFVLDZCQUE0QlUsVUFBVyxLQUFqRDs7QUFDQSxhQUFPOUIsWUFBWSxDQUFDc0IsT0FBYixDQUFxQlEsVUFBckIsQ0FBUDtBQUNELEtBSEQsQ0FHRSxPQUFPUCxHQUFQLEVBQVk7QUFDWkosc0JBQUlLLEtBQUosQ0FDRywwQkFBeUJNLFVBQVcsd0NBQXJDLEdBQ0csOEJBQTZCUCxHQUFHLENBQUNFLE9BQVEsRUFGOUM7O0FBSUFOLHNCQUFJTyxLQUFKLENBQVVILEdBQUcsQ0FBQ0ksS0FBZDtBQUNEO0FBQ0YsR0FoQkgsQ0FESyxDQUFQO0FBbUJEIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBVU0VfQUxMX1BMVUdJTlMgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IGxvZyBmcm9tICcuLi9sb2dnZXInO1xuaW1wb3J0IHsgRHJpdmVyQ29uZmlnIH0gZnJvbSAnLi9kcml2ZXItY29uZmlnJztcbmltcG9ydCB7IE1hbmlmZXN0IH0gZnJvbSAnLi9tYW5pZmVzdCc7XG5pbXBvcnQgeyBQbHVnaW5Db25maWcgfSBmcm9tICcuL3BsdWdpbi1jb25maWcnO1xuXG4vKipcbiAqIExvYWRzIGV4dGVuc2lvbnMgYW5kIGNyZWF0ZXMgYEV4dGVuc2lvbkNvbmZpZ2AgaW5zdGFuY2VzLlxuICpcbiAqIC0gUmVhZHMgdGhlIG1hbmlmZXN0IGZpbGUsIGNyZWF0aW5nIGlmIG5lY2Vzc2FyeVxuICogLSBVc2luZyB0aGUgcGFyc2VkIGV4dGVuc2lvbiBkYXRhLCBjcmVhdGVzL2dldHMgdGhlIGBFeHRlbnNpb25Db25maWdgIHN1YmNsYXNzIGluc3RhbmNlc1xuICogLSBSZXR1cm5zIHRoZXNlIGluc3RhbmNlc1xuICpcbiAqIElmIGBhcHBpdW1Ib21lYCBpcyBuZWVkZWQsIHVzZSBgcmVzb2x2ZUFwcGl1bUhvbWVgIGZyb20gdGhlIGBlbnZgIG1vZHVsZSBpbiBgQGFwcGl1bS9zdXBwb3J0YC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBhcHBpdW1Ib21lXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxFeHRlbnNpb25Db25maWdzPn1cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxvYWRFeHRlbnNpb25zIChhcHBpdW1Ib21lKSB7XG4gIGNvbnN0IG1hbmlmZXN0ID0gTWFuaWZlc3QuZ2V0SW5zdGFuY2UoYXBwaXVtSG9tZSk7XG4gIGNvbnN0IHtkcml2ZXJzLCBwbHVnaW5zfSA9IGF3YWl0IG1hbmlmZXN0LnJlYWQoKTtcbiAgY29uc3QgZHJpdmVyQ29uZmlnID1cbiAgICBEcml2ZXJDb25maWcuZ2V0SW5zdGFuY2UobWFuaWZlc3QpID8/XG4gICAgRHJpdmVyQ29uZmlnLmNyZWF0ZShtYW5pZmVzdCwge2V4dERhdGE6IGRyaXZlcnN9KTtcbiAgY29uc3QgcGx1Z2luQ29uZmlnID1cbiAgICBQbHVnaW5Db25maWcuZ2V0SW5zdGFuY2UobWFuaWZlc3QpID8/XG4gICAgUGx1Z2luQ29uZmlnLmNyZWF0ZShtYW5pZmVzdCwge2V4dERhdGE6IHBsdWdpbnN9KTtcbiAgcmV0dXJuIHtkcml2ZXJDb25maWcsIHBsdWdpbkNvbmZpZ307XG59XG5cbi8qKlxuICogRmluZCBhbnkgcGx1Z2luIG5hbWUgd2hpY2ggaGFzIGJlZW4gaW5zdGFsbGVkLCBhbmQgd2hpY2ggaGFzIGJlZW4gcmVxdWVzdGVkIGZvciBhY3RpdmF0aW9uIGJ5XG4gKiB1c2luZyB0aGUgLS11c2UtcGx1Z2lucyBmbGFnLCBhbmQgdHVybiBlYWNoIG9uZSBpbnRvIGl0cyBjbGFzcywgc28gd2UgY2FuIHNlbmQgdGhlbSBhcyBvYmplY3RzXG4gKiB0byB0aGUgc2VydmVyIGluaXQuIFdlIGFsc28gd2FudCB0byBzZW5kL2Fzc2lnbiB0aGVtIHRvIHRoZSB1bWJyZWxsYSBkcml2ZXIgc28gaXQgY2FuIHVzZSB0aGVtXG4gKiB0byB3cmFwIGNvbW1hbmQgZXhlY3V0aW9uXG4gKlxuICogQHBhcmFtIHtpbXBvcnQoJy4vcGx1Z2luLWNvbmZpZycpLlBsdWdpbkNvbmZpZ30gcGx1Z2luQ29uZmlnIC0gYSBwbHVnaW4gZXh0ZW5zaW9uIGNvbmZpZ1xuICogQHBhcmFtIHtzdHJpbmdbXX0gdXNlUGx1Z2luc1xuICogQHJldHVybnMge2ltcG9ydCgnLi9tYW5pZmVzdCcpLlBsdWdpbkNsYXNzW119XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRBY3RpdmVQbHVnaW5zIChwbHVnaW5Db25maWcsIHVzZVBsdWdpbnMgPSBbXSkge1xuICByZXR1cm4gXy5jb21wYWN0KFxuICAgIE9iamVjdC5rZXlzKHBsdWdpbkNvbmZpZy5pbnN0YWxsZWRFeHRlbnNpb25zKVxuICAgICAgLmZpbHRlcihcbiAgICAgICAgKHBsdWdpbk5hbWUpID0+XG4gICAgICAgICAgXy5pbmNsdWRlcyh1c2VQbHVnaW5zLCBwbHVnaW5OYW1lKSB8fFxuICAgICAgICAgICh1c2VQbHVnaW5zLmxlbmd0aCA9PT0gMSAmJiB1c2VQbHVnaW5zWzBdID09PSBVU0VfQUxMX1BMVUdJTlMpLFxuICAgICAgKVxuICAgICAgLm1hcCgocGx1Z2luTmFtZSkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGxvZy5pbmZvKGBBdHRlbXB0aW5nIHRvIGxvYWQgcGx1Z2luICR7cGx1Z2luTmFtZX0uLi5gKTtcbiAgICAgICAgICBjb25zdCBQbHVnaW5DbGFzcyA9IHBsdWdpbkNvbmZpZy5yZXF1aXJlKHBsdWdpbk5hbWUpO1xuXG4gICAgICAgICAgUGx1Z2luQ2xhc3MucGx1Z2luTmFtZSA9IHBsdWdpbk5hbWU7IC8vIHN0b3JlIHRoZSBwbHVnaW4gbmFtZSBvbiB0aGUgY2xhc3Mgc28gaXQgY2FuIGJlIHVzZWQgbGF0ZXJcbiAgICAgICAgICByZXR1cm4gUGx1Z2luQ2xhc3M7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgIGxvZy5lcnJvcihcbiAgICAgICAgICAgIGBDb3VsZCBub3QgbG9hZCBwbHVnaW4gJyR7cGx1Z2luTmFtZX0nLCBzbyBpdCB3aWxsIG5vdCBiZSBhdmFpbGFibGUuIEVycm9yIGAgK1xuICAgICAgICAgICAgICBgaW4gbG9hZGluZyB0aGUgcGx1Z2luIHdhczogJHtlcnIubWVzc2FnZX1gLFxuICAgICAgICAgICk7XG4gICAgICAgICAgbG9nLmRlYnVnKGVyci5zdGFjayk7XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICApO1xufVxuXG4vKipcbiAqIEZpbmQgYW55IGRyaXZlciBuYW1lIHdoaWNoIGhhcyBiZWVuIGluc3RhbGxlZCwgYW5kIHR1cm4gZWFjaCBvbmUgaW50byBpdHMgY2xhc3MsIHNvIHdlIGNhbiBzZW5kXG4gKiB0aGVtIGFzIG9iamVjdHMgdG8gdGhlIHNlcnZlciBpbml0IGluIGNhc2UgdGhleSBuZWVkIHRvIGFkZCBtZXRob2RzL3JvdXRlcyBvciB1cGRhdGUgdGhlIHNlcnZlci5cbiAqIElmIHRoZSAtLWRyaXZlcnMgZmxhZyB3YXMgZ2l2ZW4sIHRoaXMgbWV0aG9kIG9ubHkgbG9hZHMgdGhlIGdpdmVuIGRyaXZlcnMuXG4gKlxuICogQHBhcmFtIHtpbXBvcnQoJy4vZHJpdmVyLWNvbmZpZycpLkRyaXZlckNvbmZpZ30gZHJpdmVyQ29uZmlnIC0gYSBkcml2ZXIgZXh0ZW5zaW9uIGNvbmZpZ1xuICogQHBhcmFtIHtzdHJpbmdbXX0gW3VzZURyaXZlcnNdIC0gb3B0aW9uYWwgbGlzdCBvZiBkcml2ZXJzIHRvIGxvYWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFjdGl2ZURyaXZlcnMgKGRyaXZlckNvbmZpZywgdXNlRHJpdmVycyA9IFtdKSB7XG4gIHJldHVybiBfLmNvbXBhY3QoXG4gICAgT2JqZWN0LmtleXMoZHJpdmVyQ29uZmlnLmluc3RhbGxlZEV4dGVuc2lvbnMpXG4gICAgICAuZmlsdGVyKFxuICAgICAgICAoZHJpdmVyTmFtZSkgPT5cbiAgICAgICAgICBfLmluY2x1ZGVzKHVzZURyaXZlcnMsIGRyaXZlck5hbWUpIHx8IHVzZURyaXZlcnMubGVuZ3RoID09PSAwLFxuICAgICAgKVxuICAgICAgLm1hcCgoZHJpdmVyTmFtZSkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGxvZy5pbmZvKGBBdHRlbXB0aW5nIHRvIGxvYWQgZHJpdmVyICR7ZHJpdmVyTmFtZX0uLi5gKTtcbiAgICAgICAgICByZXR1cm4gZHJpdmVyQ29uZmlnLnJlcXVpcmUoZHJpdmVyTmFtZSk7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgIGxvZy5lcnJvcihcbiAgICAgICAgICAgIGBDb3VsZCBub3QgbG9hZCBkcml2ZXIgJyR7ZHJpdmVyTmFtZX0nLCBzbyBpdCB3aWxsIG5vdCBiZSBhdmFpbGFibGUuIEVycm9yIGAgK1xuICAgICAgICAgICAgICBgaW4gbG9hZGluZyB0aGUgZHJpdmVyIHdhczogJHtlcnIubWVzc2FnZX1gLFxuICAgICAgICAgICk7XG4gICAgICAgICAgbG9nLmRlYnVnKGVyci5zdGFjayk7XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICApO1xufVxuXG4vKipcbiAqIEB0eXBlZGVmIEV4dGVuc2lvbkNvbmZpZ3NcbiAqIEBwcm9wZXJ0eSB7RHJpdmVyQ29uZmlnfSBkcml2ZXJDb25maWdcbiAqIEBwcm9wZXJ0eSB7UGx1Z2luQ29uZmlnfSBwbHVnaW5Db25maWdcbiAqL1xuIl19
77
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9leHRlbnNpb24vaW5kZXguanMiXSwibmFtZXMiOlsibG9hZEV4dGVuc2lvbnMiLCJhcHBpdW1Ib21lIiwibWFuaWZlc3QiLCJNYW5pZmVzdCIsImdldEluc3RhbmNlIiwiZHJpdmVycyIsInBsdWdpbnMiLCJyZWFkIiwiZHJpdmVyQ29uZmlnIiwiRHJpdmVyQ29uZmlnIiwiY3JlYXRlIiwiZXh0RGF0YSIsInBsdWdpbkNvbmZpZyIsIlBsdWdpbkNvbmZpZyIsImdldEFjdGl2ZVBsdWdpbnMiLCJ1c2VQbHVnaW5zIiwiXyIsImNvbXBhY3QiLCJPYmplY3QiLCJrZXlzIiwiaW5zdGFsbGVkRXh0ZW5zaW9ucyIsImZpbHRlciIsInBsdWdpbk5hbWUiLCJpbmNsdWRlcyIsImxlbmd0aCIsIlVTRV9BTExfUExVR0lOUyIsIm1hcCIsImxvZyIsImluZm8iLCJQbHVnaW5DbGFzcyIsInJlcXVpcmUiLCJlcnIiLCJlcnJvciIsIm1lc3NhZ2UiLCJkZWJ1ZyIsInN0YWNrIiwiZ2V0QWN0aXZlRHJpdmVycyIsInVzZURyaXZlcnMiLCJkcml2ZXJOYW1lIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBYU8sZUFBZUEsY0FBZixDQUErQkMsVUFBL0IsRUFBMkM7QUFBQTs7QUFDaEQsUUFBTUMsUUFBUSxHQUFHQyxtQkFBU0MsV0FBVCxDQUFxQkgsVUFBckIsQ0FBakI7O0FBQ0EsUUFBTTtBQUFDSSxJQUFBQSxPQUFEO0FBQVVDLElBQUFBO0FBQVYsTUFBcUIsTUFBTUosUUFBUSxDQUFDSyxJQUFULEVBQWpDO0FBQ0EsUUFBTUMsWUFBWSw0QkFDaEJDLDJCQUFhTCxXQUFiLENBQXlCRixRQUF6QixDQURnQix5RUFFaEJPLDJCQUFhQyxNQUFiLENBQW9CUixRQUFwQixFQUE4QjtBQUFDUyxJQUFBQSxPQUFPLEVBQUVOO0FBQVYsR0FBOUIsQ0FGRjtBQUdBLFFBQU1PLFlBQVksNEJBQ2hCQywyQkFBYVQsV0FBYixDQUF5QkYsUUFBekIsQ0FEZ0IseUVBRWhCVywyQkFBYUgsTUFBYixDQUFvQlIsUUFBcEIsRUFBOEI7QUFBQ1MsSUFBQUEsT0FBTyxFQUFFTDtBQUFWLEdBQTlCLENBRkY7QUFHQSxTQUFPO0FBQUNFLElBQUFBLFlBQUQ7QUFBZUksSUFBQUE7QUFBZixHQUFQO0FBQ0Q7O0FBWU0sU0FBU0UsZ0JBQVQsQ0FBMkJGLFlBQTNCLEVBQXlDRyxVQUFVLEdBQUcsRUFBdEQsRUFBMEQ7QUFDL0QsU0FBT0MsZ0JBQUVDLE9BQUYsQ0FDTEMsTUFBTSxDQUFDQyxJQUFQLENBQVlQLFlBQVksQ0FBQ1EsbUJBQXpCLEVBQ0dDLE1BREgsQ0FFS0MsVUFBRCxJQUNFTixnQkFBRU8sUUFBRixDQUFXUixVQUFYLEVBQXVCTyxVQUF2QixLQUNDUCxVQUFVLENBQUNTLE1BQVgsS0FBc0IsQ0FBdEIsSUFBMkJULFVBQVUsQ0FBQyxDQUFELENBQVYsS0FBa0JVLDBCQUpwRCxFQU1HQyxHQU5ILENBTVFKLFVBQUQsSUFBZ0I7QUFDbkIsUUFBSTtBQUNGSyxzQkFBSUMsSUFBSixDQUFVLDZCQUE0Qk4sVUFBVyxLQUFqRDs7QUFDQSxZQUFNTyxXQUFXLEdBQUdqQixZQUFZLENBQUNrQixPQUFiLENBQXFCUixVQUFyQixDQUFwQjs7QUFFQU8sTUFBQUEsV0FBVyxDQUFDUCxVQUFaLEdBQXlCQSxVQUF6QjtBQUNBLGFBQU9PLFdBQVA7QUFDRCxLQU5ELENBTUUsT0FBT0UsR0FBUCxFQUFZO0FBQ1pKLHNCQUFJSyxLQUFKLENBQ0csMEJBQXlCVixVQUFXLHdDQUFyQyxHQUNHLDhCQUE2QlMsR0FBRyxDQUFDRSxPQUFRLEVBRjlDOztBQUlBTixzQkFBSU8sS0FBSixDQUFVSCxHQUFHLENBQUNJLEtBQWQ7QUFDRDtBQUNGLEdBcEJILENBREssQ0FBUDtBQXVCRDs7QUFVTSxTQUFTQyxnQkFBVCxDQUEyQjVCLFlBQTNCLEVBQXlDNkIsVUFBVSxHQUFHLEVBQXRELEVBQTBEO0FBQy9ELFNBQU9yQixnQkFBRUMsT0FBRixDQUNMQyxNQUFNLENBQUNDLElBQVAsQ0FBWVgsWUFBWSxDQUFDWSxtQkFBekIsRUFDR0MsTUFESCxDQUVLaUIsVUFBRCxJQUNFdEIsZ0JBQUVPLFFBQUYsQ0FBV2MsVUFBWCxFQUF1QkMsVUFBdkIsS0FBc0NELFVBQVUsQ0FBQ2IsTUFBWCxLQUFzQixDQUhsRSxFQUtHRSxHQUxILENBS1FZLFVBQUQsSUFBZ0I7QUFDbkIsUUFBSTtBQUNGWCxzQkFBSUMsSUFBSixDQUFVLDZCQUE0QlUsVUFBVyxLQUFqRDs7QUFDQSxhQUFPOUIsWUFBWSxDQUFDc0IsT0FBYixDQUFxQlEsVUFBckIsQ0FBUDtBQUNELEtBSEQsQ0FHRSxPQUFPUCxHQUFQLEVBQVk7QUFDWkosc0JBQUlLLEtBQUosQ0FDRywwQkFBeUJNLFVBQVcsd0NBQXJDLEdBQ0csOEJBQTZCUCxHQUFHLENBQUNFLE9BQVEsRUFGOUM7O0FBSUFOLHNCQUFJTyxLQUFKLENBQVVILEdBQUcsQ0FBQ0ksS0FBZDtBQUNEO0FBQ0YsR0FoQkgsQ0FESyxDQUFQO0FBbUJEIiwic291cmNlc0NvbnRlbnQiOlsiXG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgVVNFX0FMTF9QTFVHSU5TIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCBsb2cgZnJvbSAnLi4vbG9nZ2VyJztcbmltcG9ydCB7IERyaXZlckNvbmZpZyB9IGZyb20gJy4vZHJpdmVyLWNvbmZpZyc7XG5pbXBvcnQgeyBNYW5pZmVzdCB9IGZyb20gJy4vbWFuaWZlc3QnO1xuaW1wb3J0IHsgUGx1Z2luQ29uZmlnIH0gZnJvbSAnLi9wbHVnaW4tY29uZmlnJztcblxuLyoqXG4gKiBMb2FkcyBleHRlbnNpb25zIGFuZCBjcmVhdGVzIGBFeHRlbnNpb25Db25maWdgIGluc3RhbmNlcy5cbiAqXG4gKiAtIFJlYWRzIHRoZSBtYW5pZmVzdCBmaWxlLCBjcmVhdGluZyBpZiBuZWNlc3NhcnlcbiAqIC0gVXNpbmcgdGhlIHBhcnNlZCBleHRlbnNpb24gZGF0YSwgY3JlYXRlcy9nZXRzIHRoZSBgRXh0ZW5zaW9uQ29uZmlnYCBzdWJjbGFzcyBpbnN0YW5jZXNcbiAqIC0gUmV0dXJucyB0aGVzZSBpbnN0YW5jZXNcbiAqXG4gKiBJZiBgYXBwaXVtSG9tZWAgaXMgbmVlZGVkLCB1c2UgYHJlc29sdmVBcHBpdW1Ib21lYCBmcm9tIHRoZSBgZW52YCBtb2R1bGUgaW4gYEBhcHBpdW0vc3VwcG9ydGAuXG4gKiBAcGFyYW0ge3N0cmluZ30gYXBwaXVtSG9tZVxuICogQHJldHVybnMge1Byb21pc2U8RXh0ZW5zaW9uQ29uZmlncz59XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb2FkRXh0ZW5zaW9ucyAoYXBwaXVtSG9tZSkge1xuICBjb25zdCBtYW5pZmVzdCA9IE1hbmlmZXN0LmdldEluc3RhbmNlKGFwcGl1bUhvbWUpO1xuICBjb25zdCB7ZHJpdmVycywgcGx1Z2luc30gPSBhd2FpdCBtYW5pZmVzdC5yZWFkKCk7XG4gIGNvbnN0IGRyaXZlckNvbmZpZyA9XG4gICAgRHJpdmVyQ29uZmlnLmdldEluc3RhbmNlKG1hbmlmZXN0KSA/P1xuICAgIERyaXZlckNvbmZpZy5jcmVhdGUobWFuaWZlc3QsIHtleHREYXRhOiBkcml2ZXJzfSk7XG4gIGNvbnN0IHBsdWdpbkNvbmZpZyA9XG4gICAgUGx1Z2luQ29uZmlnLmdldEluc3RhbmNlKG1hbmlmZXN0KSA/P1xuICAgIFBsdWdpbkNvbmZpZy5jcmVhdGUobWFuaWZlc3QsIHtleHREYXRhOiBwbHVnaW5zfSk7XG4gIHJldHVybiB7ZHJpdmVyQ29uZmlnLCBwbHVnaW5Db25maWd9O1xufVxuXG4vKipcbiAqIEZpbmQgYW55IHBsdWdpbiBuYW1lIHdoaWNoIGhhcyBiZWVuIGluc3RhbGxlZCwgYW5kIHdoaWNoIGhhcyBiZWVuIHJlcXVlc3RlZCBmb3IgYWN0aXZhdGlvbiBieVxuICogdXNpbmcgdGhlIC0tdXNlLXBsdWdpbnMgZmxhZywgYW5kIHR1cm4gZWFjaCBvbmUgaW50byBpdHMgY2xhc3MsIHNvIHdlIGNhbiBzZW5kIHRoZW0gYXMgb2JqZWN0c1xuICogdG8gdGhlIHNlcnZlciBpbml0LiBXZSBhbHNvIHdhbnQgdG8gc2VuZC9hc3NpZ24gdGhlbSB0byB0aGUgdW1icmVsbGEgZHJpdmVyIHNvIGl0IGNhbiB1c2UgdGhlbVxuICogdG8gd3JhcCBjb21tYW5kIGV4ZWN1dGlvblxuICpcbiAqIEBwYXJhbSB7aW1wb3J0KCcuL3BsdWdpbi1jb25maWcnKS5QbHVnaW5Db25maWd9IHBsdWdpbkNvbmZpZyAtIGEgcGx1Z2luIGV4dGVuc2lvbiBjb25maWdcbiAqIEBwYXJhbSB7c3RyaW5nW119IHVzZVBsdWdpbnNcbiAqIEByZXR1cm5zIHtpbXBvcnQoJy4uLy4uL3R5cGVzJykuUGx1Z2luQ2xhc3NbXX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFjdGl2ZVBsdWdpbnMgKHBsdWdpbkNvbmZpZywgdXNlUGx1Z2lucyA9IFtdKSB7XG4gIHJldHVybiBfLmNvbXBhY3QoXG4gICAgT2JqZWN0LmtleXMocGx1Z2luQ29uZmlnLmluc3RhbGxlZEV4dGVuc2lvbnMpXG4gICAgICAuZmlsdGVyKFxuICAgICAgICAocGx1Z2luTmFtZSkgPT5cbiAgICAgICAgICBfLmluY2x1ZGVzKHVzZVBsdWdpbnMsIHBsdWdpbk5hbWUpIHx8XG4gICAgICAgICAgKHVzZVBsdWdpbnMubGVuZ3RoID09PSAxICYmIHVzZVBsdWdpbnNbMF0gPT09IFVTRV9BTExfUExVR0lOUyksXG4gICAgICApXG4gICAgICAubWFwKChwbHVnaW5OYW1lKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgbG9nLmluZm8oYEF0dGVtcHRpbmcgdG8gbG9hZCBwbHVnaW4gJHtwbHVnaW5OYW1lfS4uLmApO1xuICAgICAgICAgIGNvbnN0IFBsdWdpbkNsYXNzID0gcGx1Z2luQ29uZmlnLnJlcXVpcmUocGx1Z2luTmFtZSk7XG5cbiAgICAgICAgICBQbHVnaW5DbGFzcy5wbHVnaW5OYW1lID0gcGx1Z2luTmFtZTsgLy8gc3RvcmUgdGhlIHBsdWdpbiBuYW1lIG9uIHRoZSBjbGFzcyBzbyBpdCBjYW4gYmUgdXNlZCBsYXRlclxuICAgICAgICAgIHJldHVybiBQbHVnaW5DbGFzcztcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgbG9nLmVycm9yKFxuICAgICAgICAgICAgYENvdWxkIG5vdCBsb2FkIHBsdWdpbiAnJHtwbHVnaW5OYW1lfScsIHNvIGl0IHdpbGwgbm90IGJlIGF2YWlsYWJsZS4gRXJyb3IgYCArXG4gICAgICAgICAgICAgIGBpbiBsb2FkaW5nIHRoZSBwbHVnaW4gd2FzOiAke2Vyci5tZXNzYWdlfWAsXG4gICAgICAgICAgKTtcbiAgICAgICAgICBsb2cuZGVidWcoZXJyLnN0YWNrKTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICk7XG59XG5cbi8qKlxuICogRmluZCBhbnkgZHJpdmVyIG5hbWUgd2hpY2ggaGFzIGJlZW4gaW5zdGFsbGVkLCBhbmQgdHVybiBlYWNoIG9uZSBpbnRvIGl0cyBjbGFzcywgc28gd2UgY2FuIHNlbmRcbiAqIHRoZW0gYXMgb2JqZWN0cyB0byB0aGUgc2VydmVyIGluaXQgaW4gY2FzZSB0aGV5IG5lZWQgdG8gYWRkIG1ldGhvZHMvcm91dGVzIG9yIHVwZGF0ZSB0aGUgc2VydmVyLlxuICogSWYgdGhlIC0tZHJpdmVycyBmbGFnIHdhcyBnaXZlbiwgdGhpcyBtZXRob2Qgb25seSBsb2FkcyB0aGUgZ2l2ZW4gZHJpdmVycy5cbiAqXG4gKiBAcGFyYW0ge2ltcG9ydCgnLi9kcml2ZXItY29uZmlnJykuRHJpdmVyQ29uZmlnfSBkcml2ZXJDb25maWcgLSBhIGRyaXZlciBleHRlbnNpb24gY29uZmlnXG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBbdXNlRHJpdmVyc10gLSBvcHRpb25hbCBsaXN0IG9mIGRyaXZlcnMgdG8gbG9hZFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWN0aXZlRHJpdmVycyAoZHJpdmVyQ29uZmlnLCB1c2VEcml2ZXJzID0gW10pIHtcbiAgcmV0dXJuIF8uY29tcGFjdChcbiAgICBPYmplY3Qua2V5cyhkcml2ZXJDb25maWcuaW5zdGFsbGVkRXh0ZW5zaW9ucylcbiAgICAgIC5maWx0ZXIoXG4gICAgICAgIChkcml2ZXJOYW1lKSA9PlxuICAgICAgICAgIF8uaW5jbHVkZXModXNlRHJpdmVycywgZHJpdmVyTmFtZSkgfHwgdXNlRHJpdmVycy5sZW5ndGggPT09IDAsXG4gICAgICApXG4gICAgICAubWFwKChkcml2ZXJOYW1lKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgbG9nLmluZm8oYEF0dGVtcHRpbmcgdG8gbG9hZCBkcml2ZXIgJHtkcml2ZXJOYW1lfS4uLmApO1xuICAgICAgICAgIHJldHVybiBkcml2ZXJDb25maWcucmVxdWlyZShkcml2ZXJOYW1lKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgbG9nLmVycm9yKFxuICAgICAgICAgICAgYENvdWxkIG5vdCBsb2FkIGRyaXZlciAnJHtkcml2ZXJOYW1lfScsIHNvIGl0IHdpbGwgbm90IGJlIGF2YWlsYWJsZS4gRXJyb3IgYCArXG4gICAgICAgICAgICAgIGBpbiBsb2FkaW5nIHRoZSBkcml2ZXIgd2FzOiAke2Vyci5tZXNzYWdlfWAsXG4gICAgICAgICAgKTtcbiAgICAgICAgICBsb2cuZGVidWcoZXJyLnN0YWNrKTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICk7XG59XG5cbi8qKlxuICogQHR5cGVkZWYgRXh0ZW5zaW9uQ29uZmlnc1xuICogQHByb3BlcnR5IHtEcml2ZXJDb25maWd9IGRyaXZlckNvbmZpZ1xuICogQHByb3BlcnR5IHtQbHVnaW5Db25maWd9IHBsdWdpbkNvbmZpZ1xuICovXG4iXX0=
@@ -0,0 +1,174 @@
1
+ /**
2
+ * Handles reading & writing of extension config files.
3
+ *
4
+ * Only one instance of this class exists per value of `APPIUM_HOME`.
5
+ */
6
+ export class Manifest {
7
+ /**
8
+ * Returns a new or existing {@link Manifest} instance, based on the value of `appiumHome`.
9
+ *
10
+ * Maintains one instance per value of `appiumHome`.
11
+ * @param {string} appiumHome - Path to `APPIUM_HOME`
12
+ * @returns {Manifest}
13
+ */
14
+ static getInstance: ((appiumHome: any) => Manifest) & _.MemoizedFunction;
15
+ /**
16
+ * Sets internal data to a fresh clone of {@link INITIAL_MANIFEST_DATA}
17
+ *
18
+ * Use {@link Manifest.getInstance} instead.
19
+ * @param {string} appiumHome
20
+ * @private
21
+ */
22
+ private constructor();
23
+ /**
24
+ * The entire contents of a parsed YAML extension config file.
25
+ *
26
+ * Contains proxies for automatic persistence on disk
27
+ * @type {ManifestData}
28
+ * @private
29
+ */
30
+ private _data;
31
+ /**
32
+ * Path to `APPIUM_HOME`.
33
+ * @private
34
+ * @type {Readonly<string>}
35
+ */
36
+ private _appiumHome;
37
+ /**
38
+ * Path to `extensions.yaml`
39
+ * @type {string}
40
+ * Not set until {@link Manifest.read} is called.
41
+ */
42
+ _manifestPath: string;
43
+ /**
44
+ * Helps avoid writing multiple times.
45
+ *
46
+ * If this is `undefined`, calling {@link Manifest.write} will cause it to be
47
+ * set to a `Promise`. When the call to `write()` is complete, the `Promise`
48
+ * will resolve and then this value will be set to `undefined`. Concurrent calls
49
+ * made while this value is a `Promise` will return the `Promise` itself.
50
+ * @private
51
+ * @type {Promise<boolean>|undefined}
52
+ */
53
+ private _writing;
54
+ /**
55
+ * Helps avoid reading multiple times.
56
+ *
57
+ * If this is `undefined`, calling {@link Manifest.read} will cause it to be
58
+ * set to a `Promise`. When the call to `read()` is complete, the `Promise`
59
+ * will resolve and then this value will be set to `undefined`. Concurrent calls
60
+ * made while this value is a `Promise` will return the `Promise` itself.
61
+ * @private
62
+ * @type {Promise<void>|undefined}
63
+ */
64
+ private _reading;
65
+ /**
66
+ * Searches `APPIUM_HOME` for installed extensions and adds them to the manifest.
67
+ * @param {SyncWithInstalledExtensionsOpts} opts
68
+ * @returns {Promise<boolean>} `true` if any extensions were added, `false` otherwise.
69
+ */
70
+ syncWithInstalledExtensions({ depthLimit }?: SyncWithInstalledExtensionsOpts): Promise<boolean>;
71
+ /**
72
+ * Returns `true` if driver with name `name` is registered.
73
+ * @param {string} name - Driver name
74
+ * @returns {boolean}
75
+ */
76
+ hasDriver(name: string): boolean;
77
+ /**
78
+ * Returns `true` if plugin with name `name` is registered.
79
+ * @param {string} name - Plugin name
80
+ * @returns {boolean}
81
+ */
82
+ hasPlugin(name: string): boolean;
83
+ /**
84
+ * Given a path to a `package.json`, add it as either a driver or plugin to the manifest.
85
+ *
86
+ * Will _not_ overwrite existing entries.
87
+ * @template {ExtensionType} ExtType
88
+ * @param {ExtPackageJson<ExtType>} pkgJson
89
+ * @param {string} pkgPath
90
+ * @returns {boolean} - `true` upon success, `false` if the extension is already registered.
91
+ */
92
+ addExtensionFromPackage<ExtType extends import("../../types").ExtensionType>(pkgJson: ExtPackageJson<ExtType>, pkgPath: string): boolean;
93
+ /**
94
+ * Adds an extension to the manifest as was installed by the `appium` CLI. The
95
+ * `extData`, `extType`, and `extName` have already been determined.
96
+ *
97
+ * See {@link Manifest.addExtensionFromPackage} for adding an extension from an on-disk package.
98
+ * @template {ExtensionType} ExtType
99
+ * @param {ExtType} extType - `driver` or `plugin`
100
+ * @param {string} extName - Name of extension
101
+ * @param {ExtManifest<ExtType>} extData - Extension metadata
102
+ * @returns {void}
103
+ */
104
+ addExtension<ExtType_1 extends import("../../types").ExtensionType>(extType: ExtType_1, extName: string, extData: ExtManifest<ExtType_1>): void;
105
+ /**
106
+ * Returns the APPIUM_HOME path
107
+ */
108
+ get appiumHome(): string;
109
+ /**
110
+ * Returns the path to the manifest file
111
+ */
112
+ get manifestPath(): string;
113
+ /**
114
+ * Returns extension data for a particular type.
115
+ *
116
+ * @template {ExtensionType} ExtType
117
+ * @param {ExtType} extType
118
+ * @returns {ExtRecord<ExtType>}
119
+ */
120
+ getExtensionData<ExtType_2 extends import("../../types").ExtensionType>(extType: ExtType_2): ExtRecord<ExtType_2>;
121
+ /**
122
+ * Reads manifest from disk and _overwrites_ the internal data.
123
+ *
124
+ * If the manifest does not exist on disk, an {@link INITIAL_MANIFEST_DATA "empty"} manifest file will be created.
125
+ *
126
+ * If `APPIUM_HOME` contains a `package.json` with an `appium` dependency, then a hash of the `package.json` will be taken. If this hash differs from the last hash, the contents of `APPIUM_HOME/node_modules` will be scanned for extensions that may have been installed outside of the `appium` CLI. Any found extensions will be added to the manifest file, and if so, the manifest file will be written to disk.
127
+ *
128
+ * Only one read operation should happen at a time. This is controlled via the {@link Manifest._reading} property.
129
+ * @returns {Promise<ManifestData>} The data
130
+ */
131
+ read(): Promise<ManifestData>;
132
+ /**
133
+ * Ensures {@link Manifest._manifestPath} is set.
134
+ *
135
+ * Creates the directory if necessary.
136
+ * @private
137
+ * @returns {Promise<string>}
138
+ */
139
+ private _setManifestPath;
140
+ /**
141
+ * Writes the data if it need s writing.
142
+ *
143
+ * If the `schemaRev` prop needs updating, the file will be written.
144
+ *
145
+ * @todo If this becomes too much of a bottleneck, throttle it.
146
+ * @returns {Promise<boolean>} Whether the data was written
147
+ */
148
+ write(): Promise<boolean>;
149
+ }
150
+ /**
151
+ * Type of the string referring to a driver (typically as a key or type string)
152
+ */
153
+ export type DriverType = import('../../types').DriverType;
154
+ /**
155
+ * Type of the string referring to a plugin (typically as a key or type string)
156
+ */
157
+ export type PluginType = import('../../types').PluginType;
158
+ export type SyncWithInstalledExtensionsOpts = {
159
+ /**
160
+ * - Maximum depth to recurse into subdirectories
161
+ */
162
+ depthLimit?: number | undefined;
163
+ };
164
+ export type ManifestData = import('../../types/appium-manifest').ManifestData;
165
+ export type InternalMetadata = import('../../types/appium-manifest').InternalMetadata;
166
+ export type ExtPackageJson<T> = import('../../types/external-manifest').ExtPackageJson<T>;
167
+ export type ExtManifest<T> = import('../../types/appium-manifest').ExtManifest<T>;
168
+ export type ExtRecord<T> = import('../../types/appium-manifest').ExtRecord<T>;
169
+ /**
170
+ * Either `driver` or `plugin` rn
171
+ */
172
+ export type ExtensionType = import('../../types').ExtensionType;
173
+ import _ from "lodash";
174
+ //# sourceMappingURL=manifest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../../lib/extension/manifest.js"],"names":[],"mappings":"AAqGA;;;;GAIG;AACH;IA4DE;;;;;;OAMG;IACH,yEAIG;IAvBH;;;;;;OAMG;IACH,sBAGC;IAzDD;;;;;;OAMG;IACH,cAAM;IAEN;;;;OAIG;IACH,oBAAY;IAEZ;;;;OAIG;IACH,eAHU,MAAM,CAGF;IAEd;;;;;;;;;OASG;IACH,iBAAS;IAET;;;;;;;;;OASG;IACH,iBAAS;IA2BT;;;;OAIG;IACH,6CAHW,+BAA+B,GAC7B,QAAQ,OAAO,CAAC,CA0B5B;IAED;;;;OAIG;IACH,gBAHW,MAAM,GACJ,OAAO,CAInB;IAED;;;;OAIG;IACH,gBAHW,MAAM,GACJ,OAAO,CAInB;IAED;;;;;;;;OAQG;IACH,wHAHW,MAAM,GACJ,OAAO,CAsCnB;IAED;;;;;;;;;;OAUG;IACH,iGAJW,MAAM,oCAEJ,IAAI,CAIhB;IAED;;OAEG;IACH,yBAEC;IAED;;OAEG;IACH,2BAEC;IAED;;;;;;OAMG;IACH,kHAEC;IAED;;;;;;;;;OASG;IACH,QAFa,QAAQ,YAAY,CAAC,CAsDjC;IAED;;;;;;OAMG;IACH,yBAaC;IAED;;;;;;;OAOG;IACH,SAFa,QAAQ,OAAO,CAAC,CAoC5B;CACF;;;;yBAIY,OAAO,aAAa,EAAE,UAAU;;;;yBAKhC,OAAO,aAAa,EAAE,UAAU;;;;;;;2BAShC,OAAO,6BAA6B,EAAE,YAAY;+BAClD,OAAO,6BAA6B,EAAE,gBAAgB;gCAKtD,OAAO,+BAA+B,EAAE,cAAc,CAAC,CAAC,CAAC;6BAKzD,OAAO,6BAA6B,EAAE,WAAW,CAAC,CAAC,CAAC;2BAKpD,OAAO,6BAA6B,EAAE,SAAS,CAAC,CAAC,CAAC;;;;4BAKlD,OAAO,aAAa,EAAE,aAAa"}
@@ -243,4 +243,4 @@ class Manifest {
243
243
  }
244
244
 
245
245
  exports.Manifest = Manifest;
246
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9leHRlbnNpb24vbWFuaWZlc3QuanMiXSwibmFtZXMiOlsiREVGQVVMVF9TRUFSQ0hfREVQVEgiLCJERUZBVUxUX0ZJTkRfRVhURU5TSU9OU19PUFRTIiwiT2JqZWN0IiwiZnJlZXplIiwiZGVwdGhMaW1pdCIsImZpbHRlciIsImZpbGVwYXRoIiwicGF0aCIsImJhc2VuYW1lIiwic3RhcnRzV2l0aCIsIkNPTkZJR19TQ0hFTUFfUkVWIiwiQ09ORklHX0RBVEFfRFJJVkVSX0tFWSIsIkRSSVZFUl9UWVBFIiwiQ09ORklHX0RBVEFfUExVR0lOX0tFWSIsIlBMVUdJTl9UWVBFIiwiSU5JVElBTF9NQU5JRkVTVF9EQVRBIiwic2NoZW1hUmV2IiwiaXNFeHRlbnNpb24iLCJ2YWx1ZSIsIl8iLCJpc1BsYWluT2JqZWN0IiwiYXBwaXVtIiwiaXNTdHJpbmciLCJuYW1lIiwidmVyc2lvbiIsImlzRHJpdmVyIiwiZ2V0IiwiaXNBcnJheSIsImlzUGx1Z2luIiwiTWFuaWZlc3QiLCJfZGF0YSIsIl9hcHBpdW1Ib21lIiwiX21hbmlmZXN0UGF0aCIsIl93cml0aW5nIiwiX3JlYWRpbmciLCJjb25zdHJ1Y3RvciIsImFwcGl1bUhvbWUiLCJjbG9uZURlZXAiLCJnZXRJbnN0YW5jZSIsIm1lbW9pemUiLCJfZ2V0SW5zdGFuY2UiLCJzeW5jV2l0aEluc3RhbGxlZEV4dGVuc2lvbnMiLCJ3YWxrT3B0cyIsImRlZmF1bHRzIiwiZGlkQ2hhbmdlIiwic3RhdHMiLCJmcyIsIndhbGsiLCJpc0RpcmVjdG9yeSIsInBrZyIsImVudiIsInJlYWRQYWNrYWdlSW5EaXIiLCJhZGRlZCIsImFkZEV4dGVuc2lvbkZyb21QYWNrYWdlIiwiam9pbiIsImhhc0RyaXZlciIsIkJvb2xlYW4iLCJkcml2ZXJzIiwiaGFzUGx1Z2luIiwicGx1Z2lucyIsInBrZ0pzb24iLCJwa2dQYXRoIiwiaW50ZXJuYWwiLCJwa2dOYW1lIiwiaW5zdGFsbFR5cGUiLCJJTlNUQUxMX1RZUEVfTlBNIiwiaW5zdGFsbFNwZWMiLCJkcml2ZXJOYW1lIiwiYWRkRXh0ZW5zaW9uIiwib21pdCIsInBsdWdpbk5hbWUiLCJUeXBlRXJyb3IiLCJkaXJuYW1lIiwiZXh0VHlwZSIsImV4dE5hbWUiLCJleHREYXRhIiwibWFuaWZlc3RQYXRoIiwiZ2V0RXh0ZW5zaW9uRGF0YSIsInJlYWQiLCJkYXRhIiwiaXNOZXdGaWxlIiwiX3NldE1hbmlmZXN0UGF0aCIsImxvZyIsImRlYnVnIiwieWFtbCIsInJlYWRGaWxlIiwiWUFNTCIsInBhcnNlIiwiZXJyIiwiY29kZSIsIkVycm9yIiwibWVzc2FnZSIsImluc3RhbGxlZEV4dGVuc2lvbnNDaGFuZ2VkIiwiaGFzQXBwaXVtRGVwZW5kZW5jeSIsIndyaXRlIiwidW5kZWZpbmVkIiwicmVzb2x2ZU1hbmlmZXN0UGF0aCIsInJlbGF0aXZlIiwibWtkaXJwIiwid3JpdGVGaWxlIiwic3RyaW5naWZ5Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQU1BOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQU9BLE1BQU1BLG9CQUFvQixHQUFHLENBQTdCO0FBTUEsTUFBTUMsNEJBQTRCLEdBQUdDLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjO0FBQ2pEQyxFQUFBQSxVQUFVLEVBQUVKLG9CQURxQztBQUdqREssRUFBQUEsTUFBTSxFQUFHQyxRQUFELElBQWMsQ0FBQ0MsY0FBS0MsUUFBTCxDQUFjRixRQUFkLEVBQXdCRyxVQUF4QixDQUFtQyxHQUFuQztBQUgwQixDQUFkLENBQXJDO0FBU0EsTUFBTUMsaUJBQWlCLEdBQUcsQ0FBMUI7QUFNQSxNQUFNQyxzQkFBc0IsR0FBSSxHQUFFQyxzQkFBWSxHQUE5QztBQU1BLE1BQU1DLHNCQUFzQixHQUFJLEdBQUVDLHNCQUFZLEdBQTlDO0FBS0EsTUFBTUMscUJBQXFCLEdBQUdiLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjO0FBQzFDLEdBQUNRLHNCQUFELEdBQTBCVCxNQUFNLENBQUNDLE1BQVAsQ0FBYyxFQUFkLENBRGdCO0FBRTFDLEdBQUNVLHNCQUFELEdBQTBCWCxNQUFNLENBQUNDLE1BQVAsQ0FBYyxFQUFkLENBRmdCO0FBRzFDYSxFQUFBQSxTQUFTLEVBQUVOO0FBSCtCLENBQWQsQ0FBOUI7O0FBYUEsU0FBU08sV0FBVCxDQUFzQkMsS0FBdEIsRUFBNkI7QUFDM0IsU0FDRUMsZ0JBQUVDLGFBQUYsQ0FBZ0JGLEtBQWhCLEtBQ0FDLGdCQUFFQyxhQUFGLENBQWdCRixLQUFLLENBQUNHLE1BQXRCLENBREEsSUFFQUYsZ0JBQUVHLFFBQUYsQ0FBV0osS0FBSyxDQUFDSyxJQUFqQixDQUZBLElBR0FKLGdCQUFFRyxRQUFGLENBQVdKLEtBQUssQ0FBQ00sT0FBakIsQ0FKRjtBQU1EOztBQVNELFNBQVNDLFFBQVQsQ0FBbUJQLEtBQW5CLEVBQTBCO0FBQ3hCLFNBQ0VELFdBQVcsQ0FBQ0MsS0FBRCxDQUFYLElBQ0FDLGdCQUFFRyxRQUFGLENBQVdILGdCQUFFTyxHQUFGLENBQU1SLEtBQU4sRUFBYSxtQkFBYixDQUFYLENBREEsSUFFQUMsZ0JBQUVHLFFBQUYsQ0FBV0gsZ0JBQUVPLEdBQUYsQ0FBTVIsS0FBTixFQUFhLHVCQUFiLENBQVgsQ0FGQSxJQUdBQyxnQkFBRVEsT0FBRixDQUFVUixnQkFBRU8sR0FBRixDQUFNUixLQUFOLEVBQWEsc0JBQWIsQ0FBVixDQUpGO0FBTUQ7O0FBU0QsU0FBU1UsUUFBVCxDQUFtQlYsS0FBbkIsRUFBMEI7QUFDeEIsU0FBT0QsV0FBVyxDQUFDQyxLQUFELENBQVgsSUFBc0JDLGdCQUFFRyxRQUFGLENBQVdILGdCQUFFTyxHQUFGLENBQU1SLEtBQU4sRUFBYSxtQkFBYixDQUFYLENBQTdCO0FBQ0Q7O0FBT00sTUFBTVcsUUFBTixDQUFlO0FBUXBCQyxFQUFBQSxLQUFLO0FBT0xDLEVBQUFBLFdBQVc7QUFPWEMsRUFBQUEsYUFBYTtBQVliQyxFQUFBQSxRQUFRO0FBWVJDLEVBQUFBLFFBQVE7O0FBU1JDLEVBQUFBLFdBQVcsQ0FBRUMsVUFBRixFQUFjO0FBQ3ZCLFNBQUtMLFdBQUwsR0FBbUJLLFVBQW5CO0FBQ0EsU0FBS04sS0FBTCxHQUFhWCxnQkFBRWtCLFNBQUYsQ0FBWXRCLHFCQUFaLENBQWI7QUFDRDs7QUFTaUIsU0FBWHVCLFdBQVcsR0FBR25CLGdCQUFFb0IsT0FBRixDQUFVLFNBQVNDLFlBQVQsQ0FDN0JKLFVBRDZCLEVBRTdCO0FBQ0EsV0FBTyxJQUFJUCxRQUFKLENBQWFPLFVBQWIsQ0FBUDtBQUNELEdBSm9CLENBQUg7O0FBV2UsUUFBM0JLLDJCQUEyQixDQUFFO0FBQUNyQyxJQUFBQSxVQUFVLEdBQUdKO0FBQWQsTUFBc0MsRUFBeEMsRUFBNEM7QUFDM0UsVUFBTTBDLFFBQVEsR0FBR3ZCLGdCQUFFd0IsUUFBRixDQUFXO0FBQUN2QyxNQUFBQTtBQUFELEtBQVgsRUFBeUJILDRCQUF6QixDQUFqQjs7QUFFQSxRQUFJMkMsU0FBUyxHQUFHLEtBQWhCOztBQUNBLGVBQVcsTUFBTTtBQUFDQyxNQUFBQSxLQUFEO0FBQVF0QyxNQUFBQSxJQUFJLEVBQUVEO0FBQWQsS0FBakIsSUFBNEN3QyxZQUFHQyxJQUFILENBQzFDLEtBQUtoQixXQURxQyxFQUUxQ1csUUFGMEMsQ0FBNUMsRUFHRztBQUNELFVBQUlwQyxRQUFRLEtBQUssS0FBS3lCLFdBQWxCLElBQWlDYyxLQUFLLENBQUNHLFdBQU4sRUFBckMsRUFBMEQ7QUFDeEQsWUFBSTtBQUNGLGdCQUFNQyxHQUFHLEdBQUcsTUFBTUMsYUFBSUMsZ0JBQUosQ0FBcUI3QyxRQUFyQixDQUFsQjs7QUFDQSxjQUFJMkMsR0FBRyxJQUFJaEMsV0FBVyxDQUFDZ0MsR0FBRCxDQUF0QixFQUE2QjtBQUczQixrQkFBTUcsS0FBSyxHQUFHLEtBQUtDLHVCQUFMLENBQ1pKLEdBRFksRUFFWjFDLGNBQUsrQyxJQUFMLENBQVVoRCxRQUFWLEVBQW9CLGNBQXBCLENBRlksQ0FBZDtBQUlBc0MsWUFBQUEsU0FBUyxHQUFHQSxTQUFTLElBQUlRLEtBQXpCO0FBQ0Q7QUFDRixTQVhELENBV0UsTUFBTSxDQUFFO0FBQ1g7QUFDRjs7QUFDRCxXQUFPUixTQUFQO0FBQ0Q7O0FBT0RXLEVBQUFBLFNBQVMsQ0FBRWhDLElBQUYsRUFBUTtBQUNmLFdBQU9pQyxPQUFPLENBQUMsS0FBSzFCLEtBQUwsQ0FBVzJCLE9BQVgsQ0FBbUJsQyxJQUFuQixDQUFELENBQWQ7QUFDRDs7QUFPRG1DLEVBQUFBLFNBQVMsQ0FBRW5DLElBQUYsRUFBUTtBQUNmLFdBQU9pQyxPQUFPLENBQUMsS0FBSzFCLEtBQUwsQ0FBVzZCLE9BQVgsQ0FBbUJwQyxJQUFuQixDQUFELENBQWQ7QUFDRDs7QUFXRDhCLEVBQUFBLHVCQUF1QixDQUFFTyxPQUFGLEVBQVdDLE9BQVgsRUFBb0I7QUFJekMsVUFBTUMsUUFBUSxHQUFHO0FBQ2ZDLE1BQUFBLE9BQU8sRUFBRUgsT0FBTyxDQUFDckMsSUFERjtBQUVmQyxNQUFBQSxPQUFPLEVBQUVvQyxPQUFPLENBQUNwQyxPQUZGO0FBR2Z3QyxNQUFBQSxXQUFXLEVBQUVDLGlDQUhFO0FBSWZDLE1BQUFBLFdBQVcsRUFBRyxHQUFFTixPQUFPLENBQUNyQyxJQUFLLElBQUdxQyxPQUFPLENBQUNwQyxPQUFRO0FBSmpDLEtBQWpCOztBQU9BLFFBQUlDLFFBQVEsQ0FBQ21DLE9BQUQsQ0FBWixFQUF1QjtBQUNyQixVQUFJLENBQUMsS0FBS0wsU0FBTCxDQUFlSyxPQUFPLENBQUN2QyxNQUFSLENBQWU4QyxVQUE5QixDQUFMLEVBQWdEO0FBQzlDLGFBQUtDLFlBQUwsQ0FBa0J4RCxzQkFBbEIsRUFBK0JnRCxPQUFPLENBQUN2QyxNQUFSLENBQWU4QyxVQUE5QyxFQUEwRCxFQUN4RCxHQUFHaEQsZ0JBQUVrRCxJQUFGLENBQU9ULE9BQU8sQ0FBQ3ZDLE1BQWYsRUFBdUIsWUFBdkIsQ0FEcUQ7QUFFeEQsYUFBR3lDO0FBRnFELFNBQTFEO0FBSUEsZUFBTyxJQUFQO0FBQ0Q7O0FBQ0QsYUFBTyxLQUFQO0FBQ0QsS0FURCxNQVNPLElBQUlsQyxRQUFRLENBQUNnQyxPQUFELENBQVosRUFBdUI7QUFDNUIsVUFBSSxDQUFDLEtBQUtGLFNBQUwsQ0FBZUUsT0FBTyxDQUFDdkMsTUFBUixDQUFlaUQsVUFBOUIsQ0FBTCxFQUFnRDtBQUM5QyxhQUFLRixZQUFMLENBQWtCdEQsc0JBQWxCLEVBQStCOEMsT0FBTyxDQUFDdkMsTUFBUixDQUFlaUQsVUFBOUMsRUFBMEQsRUFDeEQsR0FBR25ELGdCQUFFa0QsSUFBRixDQUFPVCxPQUFPLENBQUN2QyxNQUFmLEVBQXVCLFlBQXZCLENBRHFEO0FBRXhELGFBQUd5QztBQUZxRCxTQUExRDtBQUlBLGVBQU8sSUFBUDtBQUNEOztBQUNELGFBQU8sS0FBUDtBQUNELEtBVE0sTUFTQTtBQUNMLFlBQU0sSUFBSVMsU0FBSixDQUNILG9CQUFtQmhFLGNBQUtpRSxPQUFMLENBQ2xCWCxPQURrQixDQUVsQixnREFIRSxDQUFOO0FBS0Q7QUFDRjs7QUFhRE8sRUFBQUEsWUFBWSxDQUFFSyxPQUFGLEVBQVdDLE9BQVgsRUFBb0JDLE9BQXBCLEVBQTZCO0FBQ3ZDLFNBQUs3QyxLQUFMLENBQVksR0FBRTJDLE9BQVEsR0FBdEIsRUFBMEJDLE9BQTFCLElBQXFDQyxPQUFyQztBQUNEOztBQUthLE1BQVZ2QyxVQUFVLEdBQUk7QUFDaEIsV0FBTyxLQUFLTCxXQUFaO0FBQ0Q7O0FBS2UsTUFBWjZDLFlBQVksR0FBSTtBQUNsQixXQUFPLEtBQUs1QyxhQUFaO0FBQ0Q7O0FBU0Q2QyxFQUFBQSxnQkFBZ0IsQ0FBRUosT0FBRixFQUFXO0FBQ3pCLFdBQU8sS0FBSzNDLEtBQUwsQ0FBbUMsR0FBRTJDLE9BQVEsR0FBN0MsQ0FBUDtBQUNEOztBQVlTLFFBQUpLLElBQUksR0FBSTtBQUNaLFFBQUksS0FBSzVDLFFBQVQsRUFBbUI7QUFDakIsWUFBTSxLQUFLQSxRQUFYO0FBQ0EsYUFBTyxLQUFLSixLQUFaO0FBQ0Q7O0FBRUQsU0FBS0ksUUFBTCxHQUFnQixDQUFDLFlBQVk7QUFFM0IsVUFBSTZDLElBQUo7QUFDQSxVQUFJQyxTQUFTLEdBQUcsS0FBaEI7QUFDQSxZQUFNLEtBQUtDLGdCQUFMLEVBQU47O0FBQ0EsVUFBSTtBQUNGQyx3QkFBSUMsS0FBSixDQUFXLFdBQVUsS0FBS25ELGFBQWMsS0FBeEM7O0FBQ0EsY0FBTW9ELElBQUksR0FBRyxNQUFNdEMsWUFBR3VDLFFBQUgsQ0FBWSxLQUFLckQsYUFBakIsRUFBZ0MsTUFBaEMsQ0FBbkI7QUFDQStDLFFBQUFBLElBQUksR0FBR08sY0FBS0MsS0FBTCxDQUFXSCxJQUFYLENBQVA7QUFDRCxPQUpELENBSUUsT0FBT0ksR0FBUCxFQUFZO0FBQ1osWUFBSUEsR0FBRyxDQUFDQyxJQUFKLEtBQWEsUUFBakIsRUFBMkI7QUFDekJWLFVBQUFBLElBQUksR0FBRzVELGdCQUFFa0IsU0FBRixDQUFZdEIscUJBQVosQ0FBUDtBQUNBaUUsVUFBQUEsU0FBUyxHQUFHLElBQVo7QUFDRCxTQUhELE1BR087QUFDTCxjQUFJLEtBQUtoRCxhQUFULEVBQXdCO0FBQ3RCLGtCQUFNLElBQUkwRCxLQUFKLENBQ0gsd0RBQUQsR0FDRyxlQUFjLEtBQUsxRCxhQUFjLDhDQUE2Q3dELEdBQUcsQ0FBQ0csT0FBUSxFQUZ6RixDQUFOO0FBSUQsV0FMRCxNQUtPO0FBQ0wsa0JBQU0sSUFBSUQsS0FBSixDQUNILDBEQUF5REYsR0FBRyxDQUFDRyxPQUFRLEVBRGxFLENBQU47QUFHRDtBQUNGO0FBQ0Y7O0FBRUQsV0FBSzdELEtBQUwsR0FBYWlELElBQWI7QUFDQSxVQUFJYSwwQkFBMEIsR0FBRyxLQUFqQzs7QUFDQSxVQUNFLE9BQU0xQyxhQUFJMkMsbUJBQUosQ0FBd0IsS0FBS3pELFVBQTdCLENBQU4sTUFDQyxNQUFNLHNDQUFpQixLQUFLQSxVQUF0QixDQURQLENBREYsRUFHRTtBQUNBd0QsUUFBQUEsMEJBQTBCLEdBQUcsTUFBTSxLQUFLbkQsMkJBQUwsRUFBbkM7QUFDRDs7QUFFRCxVQUFJdUMsU0FBUyxJQUFJWSwwQkFBakIsRUFBNkM7QUFDM0MsY0FBTSxLQUFLRSxLQUFMLEVBQU47QUFDRDtBQUNGLEtBdkNlLEdBQWhCOztBQXdDQSxRQUFJO0FBQ0YsWUFBTSxLQUFLNUQsUUFBWDtBQUNBLGFBQU8sS0FBS0osS0FBWjtBQUNELEtBSEQsU0FHVTtBQUNSLFdBQUtJLFFBQUwsR0FBZ0I2RCxTQUFoQjtBQUNEO0FBQ0Y7O0FBU3FCLFFBQWhCZCxnQkFBZ0IsR0FBSTtBQUN4QixRQUFJLENBQUMsS0FBS2pELGFBQVYsRUFBeUI7QUFDdkIsV0FBS0EsYUFBTCxHQUFxQixNQUFNa0IsYUFBSThDLG1CQUFKLENBQXdCLEtBQUtqRSxXQUE3QixDQUEzQjs7QUFHQSxVQUFJeEIsY0FBSzBGLFFBQUwsQ0FBYyxLQUFLbEUsV0FBbkIsRUFBZ0MsS0FBS0MsYUFBckMsRUFBb0R2QixVQUFwRCxDQUErRCxHQUEvRCxDQUFKLEVBQXlFO0FBQ3ZFLGNBQU0sSUFBSWlGLEtBQUosQ0FDSCw0RUFBMkUsS0FBS3RELFVBQVcsb0JBQW1CLEtBQUtKLGFBQWMsRUFEOUgsQ0FBTjtBQUdEO0FBQ0Y7O0FBRUQsV0FBTyxLQUFLQSxhQUFaO0FBQ0Q7O0FBVVUsUUFBTDhELEtBQUssR0FBSTtBQUNiLFFBQUksS0FBSzdELFFBQVQsRUFBbUI7QUFDakIsYUFBTyxLQUFLQSxRQUFaO0FBQ0Q7O0FBQ0QsU0FBS0EsUUFBTCxHQUFnQixDQUFDLFlBQVk7QUFDM0IsWUFBTSxLQUFLZ0QsZ0JBQUwsRUFBTjs7QUFDQSxVQUFJO0FBQ0YsY0FBTW5DLFlBQUdvRCxNQUFILENBQVUzRixjQUFLaUUsT0FBTCxDQUFhLEtBQUt4QyxhQUFsQixDQUFWLENBQU47QUFDRCxPQUZELENBRUUsT0FBT3dELEdBQVAsRUFBWTtBQUNaLGNBQU0sSUFBSUUsS0FBSixDQUNILGdFQUErRG5GLGNBQUtpRSxPQUFMLENBQzlELEtBQUt4QyxhQUR5RCxDQUU5RCxxQkFBb0J3RCxHQUFHLENBQUNHLE9BQVEsRUFIOUIsQ0FBTjtBQUtEOztBQUNELFVBQUk7QUFDRixjQUFNN0MsWUFBR3FELFNBQUgsQ0FDSixLQUFLbkUsYUFERCxFQUVKc0QsY0FBS2MsU0FBTCxDQUFlLEtBQUt0RSxLQUFwQixDQUZJLEVBR0osTUFISSxDQUFOO0FBS0EsZUFBTyxJQUFQO0FBQ0QsT0FQRCxDQU9FLE9BQU8wRCxHQUFQLEVBQVk7QUFDWixjQUFNLElBQUlFLEtBQUosQ0FDSCx5Q0FBd0MsS0FBSzFELGFBQWMsc0JBQXFCLEtBQUtELFdBQVksSUFBbEcsR0FDRyxpREFBZ0R5RCxHQUFHLENBQUNHLE9BQVEsRUFGM0QsQ0FBTjtBQUlEO0FBQ0YsS0F4QmUsR0FBaEI7O0FBeUJBLFFBQUk7QUFDRixhQUFPLE1BQU0sS0FBSzFELFFBQWxCO0FBQ0QsS0FGRCxTQUVVO0FBQ1IsV0FBS0EsUUFBTCxHQUFnQjhELFNBQWhCO0FBQ0Q7QUFDRjs7QUFqVm1CIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbi8qKlxuICogTW9kdWxlIGNvbnRhaW5pbmcge0BsaW5rIE1hbmlmZXN0fSB3aGljaCBoYW5kbGVzIHJlYWRpbmcgJiB3cml0aW5nIG9mIGV4dGVuc2lvbiBjb25maWcgZmlsZXMuXG4gKi9cblxuaW1wb3J0IHsgZW52LCBmcyB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgWUFNTCBmcm9tICd5YW1sJztcbmltcG9ydCB7IERSSVZFUl9UWVBFLCBQTFVHSU5fVFlQRSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgbG9nIGZyb20gJy4uL2xvZ2dlcic7XG5pbXBvcnQgeyBJTlNUQUxMX1RZUEVfTlBNIH0gZnJvbSAnLi9leHRlbnNpb24tY29uZmlnJztcbmltcG9ydCB7IHBhY2thZ2VEaWRDaGFuZ2UgfSBmcm9tICcuL3BhY2thZ2UtY2hhbmdlZCc7XG5cbi8qKlxuICogRGVmYXVsdCBkZXB0aCB0byBzZWFyY2ggaW4gZGlyZWN0b3J5IHRyZWUgZm9yIHdoYXRldmVyIGl0IGlzIHdlJ3JlIGxvb2tpbmcgZm9yLlxuICpcbiAqIEl0J3MgNCBiZWNhdXNlIHNtYWxsZXIgbnVtYmVycyBkaWRuJ3Qgd29yay5cbiAqL1xuY29uc3QgREVGQVVMVF9TRUFSQ0hfREVQVEggPSA0O1xuXG4vKipcbiAqIERlZmF1bHQgb3B0aW9ucyBmb3Ige0BsaW5rIGZpbmRFeHRlbnNpb25zfS5cbiAqIEB0eXBlIHtSZWFkb25seTxpbXBvcnQoJ2tsYXcnKS5PcHRpb25zPn1cbiAqL1xuY29uc3QgREVGQVVMVF9GSU5EX0VYVEVOU0lPTlNfT1BUUyA9IE9iamVjdC5mcmVlemUoe1xuICBkZXB0aExpbWl0OiBERUZBVUxUX1NFQVJDSF9ERVBUSCxcbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgZmlsdGVyOiAoZmlsZXBhdGgpID0+ICFwYXRoLmJhc2VuYW1lKGZpbGVwYXRoKS5zdGFydHNXaXRoKCcuJyksXG59KTtcblxuLyoqXG4gKiBDdXJyZW50IGNvbmZpZ3VyYXRpb24gc2NoZW1hIHJldmlzaW9uIVxuICovXG5jb25zdCBDT05GSUdfU0NIRU1BX1JFViA9IDI7XG5cbi8qKlxuICogVGhlIG5hbWUgb2YgdGhlIHByb3AgKGBkcml2ZXJzYCkgdXNlZCBpbiBgZXh0ZW5zaW9ucy55YW1sYCBmb3IgZHJpdmVycy5cbiAqIEB0eXBlIHtgJHt0eXBlb2YgRFJJVkVSX1RZUEV9c2B9XG4gKi9cbmNvbnN0IENPTkZJR19EQVRBX0RSSVZFUl9LRVkgPSBgJHtEUklWRVJfVFlQRX1zYDtcblxuLyoqXG4gKiBUaGUgbmFtZSBvZiB0aGUgcHJvcCAoYHBsdWdpbnNgKSB1c2VkIGluIGBleHRlbnNpb25zLnlhbWxgIGZvciBwbHVnaW5zLlxuICogQHR5cGUge2Ake3R5cGVvZiBQTFVHSU5fVFlQRX1zYH1cbiAqL1xuY29uc3QgQ09ORklHX0RBVEFfUExVR0lOX0tFWSA9IGAke1BMVUdJTl9UWVBFfXNgO1xuXG4vKipcbiAqIEB0eXBlIHtSZWFkb25seTxNYW5pZmVzdERhdGE+fVxuICovXG5jb25zdCBJTklUSUFMX01BTklGRVNUX0RBVEEgPSBPYmplY3QuZnJlZXplKHtcbiAgW0NPTkZJR19EQVRBX0RSSVZFUl9LRVldOiBPYmplY3QuZnJlZXplKHt9KSxcbiAgW0NPTkZJR19EQVRBX1BMVUdJTl9LRVldOiBPYmplY3QuZnJlZXplKHt9KSxcbiAgc2NoZW1hUmV2OiBDT05GSUdfU0NIRU1BX1JFVixcbn0pO1xuXG4vKipcbiAqIEdpdmVuIGEgYHBhY2thZ2UuanNvbmAgcmV0dXJuIGB0cnVlYCBpZiBpdCByZXByZXNlbnRzIGFuIEFwcGl1bSBFeHRlbnNpb24gKGVpdGhlciBhIGRyaXZlciBvciBwbHVnaW4pLlxuICpcbiAqIFRoZSBgcGFja2FnZS5qc29uYCBtdXN0IGhhdmUgYW4gYGFwcGl1bWAgcHJvcGVydHkgd2hpY2ggaXMgYW4gb2JqZWN0LlxuICogQHBhcmFtIHthbnl9IHZhbHVlXG4gKiBAcmV0dXJucyB7dmFsdWUgaXMgRXh0ZW5zaW9uUGFja2FnZUpzb248RXh0ZW5zaW9uVHlwZT59XG4gKi9cbmZ1bmN0aW9uIGlzRXh0ZW5zaW9uICh2YWx1ZSkge1xuICByZXR1cm4gKFxuICAgIF8uaXNQbGFpbk9iamVjdCh2YWx1ZSkgJiZcbiAgICBfLmlzUGxhaW5PYmplY3QodmFsdWUuYXBwaXVtKSAmJlxuICAgIF8uaXNTdHJpbmcodmFsdWUubmFtZSkgJiZcbiAgICBfLmlzU3RyaW5nKHZhbHVlLnZlcnNpb24pXG4gICk7XG59XG4vKipcbiAqIEdpdmVuIGEgYHBhY2thZ2UuanNvbmAsIHJldHVybiBgdHJ1ZWAgaWYgaXQgcmVwcmVzZW50cyBhbiBBcHBpdW0gRHJpdmVyLlxuICpcbiAqIFRvIGJlIGNvbnNpZGVyZWQgYSBkcml2ZXIsIGEgYHBhY2thZ2UuanNvbmAgbXVzdCBoYXZlIGEgZmllbGRzXG4gKiBgYXBwaXVtLmRyaXZlck5hbWVgLCBgYXBwaXVtLmF1dG9tYXRpb25OYW1lYCBhbmQgYGFwcGl1bS5wbGF0Zm9ybU5hbWVzYC5cbiAqIEBwYXJhbSB7YW55fSB2YWx1ZSAtIFZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHt2YWx1ZSBpcyBFeHRlbnNpb25QYWNrYWdlSnNvbjxEcml2ZXJUeXBlPn1cbiAqL1xuZnVuY3Rpb24gaXNEcml2ZXIgKHZhbHVlKSB7XG4gIHJldHVybiAoXG4gICAgaXNFeHRlbnNpb24odmFsdWUpICYmXG4gICAgXy5pc1N0cmluZyhfLmdldCh2YWx1ZSwgJ2FwcGl1bS5kcml2ZXJOYW1lJykpICYmXG4gICAgXy5pc1N0cmluZyhfLmdldCh2YWx1ZSwgJ2FwcGl1bS5hdXRvbWF0aW9uTmFtZScpKSAmJlxuICAgIF8uaXNBcnJheShfLmdldCh2YWx1ZSwgJ2FwcGl1bS5wbGF0Zm9ybU5hbWVzJykpXG4gICk7XG59XG5cbi8qKlxuICogR2l2ZW4gYSBgcGFja2FnZS5qc29uYCwgcmV0dXJuIGB0cnVlYCBpZiBpdCByZXByZXNlbnRzIGFuIEFwcGl1bSBQbHVnaW4uXG4gKlxuICogVG8gYmUgY29uc2lkZXJlZCBhIHBsdWdpbiwgYSBgcGFja2FnZS5qc29uYCBtdXN0IGhhdmUgYW4gYGFwcGl1bS5wbHVnaW5OYW1lYCBmaWVsZC5cbiAqIEBwYXJhbSB7YW55fSB2YWx1ZSAtIFZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHt2YWx1ZSBpcyBFeHRlbnNpb25QYWNrYWdlSnNvbjxQbHVnaW5UeXBlPn1cbiAqL1xuZnVuY3Rpb24gaXNQbHVnaW4gKHZhbHVlKSB7XG4gIHJldHVybiBpc0V4dGVuc2lvbih2YWx1ZSkgJiYgXy5pc1N0cmluZyhfLmdldCh2YWx1ZSwgJ2FwcGl1bS5wbHVnaW5OYW1lJykpO1xufVxuXG4vKipcbiAqIEhhbmRsZXMgcmVhZGluZyAmIHdyaXRpbmcgb2YgZXh0ZW5zaW9uIGNvbmZpZyBmaWxlcy5cbiAqXG4gKiBPbmx5IG9uZSBpbnN0YW5jZSBvZiB0aGlzIGNsYXNzIGV4aXN0cyBwZXIgdmFsdWUgb2YgYEFQUElVTV9IT01FYC5cbiAqL1xuZXhwb3J0IGNsYXNzIE1hbmlmZXN0IHtcbiAgLyoqXG4gICAqIFRoZSBlbnRpcmUgY29udGVudHMgb2YgYSBwYXJzZWQgWUFNTCBleHRlbnNpb24gY29uZmlnIGZpbGUuXG4gICAqXG4gICAqIENvbnRhaW5zIHByb3hpZXMgZm9yIGF1dG9tYXRpYyBwZXJzaXN0ZW5jZSBvbiBkaXNrXG4gICAqIEB0eXBlIHtNYW5pZmVzdERhdGF9XG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBfZGF0YTtcblxuICAvKipcbiAgICogUGF0aCB0byBgQVBQSVVNX0hPTUVgLlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAdHlwZSB7UmVhZG9ubHk8c3RyaW5nPn1cbiAgICovXG4gIF9hcHBpdW1Ib21lO1xuXG4gIC8qKlxuICAgKiBQYXRoIHRvIGBleHRlbnNpb25zLnlhbWxgXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqIE5vdCBzZXQgdW50aWwge0BsaW5rIE1hbmlmZXN0LnJlYWR9IGlzIGNhbGxlZC5cbiAgICovXG4gIF9tYW5pZmVzdFBhdGg7XG5cbiAgLyoqXG4gICAqIEhlbHBzIGF2b2lkIHdyaXRpbmcgbXVsdGlwbGUgdGltZXMuXG4gICAqXG4gICAqIElmIHRoaXMgaXMgYHVuZGVmaW5lZGAsIGNhbGxpbmcge0BsaW5rIE1hbmlmZXN0LndyaXRlfSB3aWxsIGNhdXNlIGl0IHRvIGJlXG4gICAqIHNldCB0byBhIGBQcm9taXNlYC4gV2hlbiB0aGUgY2FsbCB0byBgd3JpdGUoKWAgaXMgY29tcGxldGUsIHRoZSBgUHJvbWlzZWBcbiAgICogd2lsbCByZXNvbHZlIGFuZCB0aGVuIHRoaXMgdmFsdWUgd2lsbCBiZSBzZXQgdG8gYHVuZGVmaW5lZGAuICBDb25jdXJyZW50IGNhbGxzXG4gICAqIG1hZGUgd2hpbGUgdGhpcyB2YWx1ZSBpcyBhIGBQcm9taXNlYCB3aWxsIHJldHVybiB0aGUgYFByb21pc2VgIGl0c2VsZi5cbiAgICogQHByaXZhdGVcbiAgICogQHR5cGUge1Byb21pc2U8Ym9vbGVhbj58dW5kZWZpbmVkfVxuICAgKi9cbiAgX3dyaXRpbmc7XG5cbiAgLyoqXG4gICAqIEhlbHBzIGF2b2lkIHJlYWRpbmcgbXVsdGlwbGUgdGltZXMuXG4gICAqXG4gICAqIElmIHRoaXMgaXMgYHVuZGVmaW5lZGAsIGNhbGxpbmcge0BsaW5rIE1hbmlmZXN0LnJlYWR9IHdpbGwgY2F1c2UgaXQgdG8gYmVcbiAgICogc2V0IHRvIGEgYFByb21pc2VgLiBXaGVuIHRoZSBjYWxsIHRvIGByZWFkKClgIGlzIGNvbXBsZXRlLCB0aGUgYFByb21pc2VgXG4gICAqIHdpbGwgcmVzb2x2ZSBhbmQgdGhlbiB0aGlzIHZhbHVlIHdpbGwgYmUgc2V0IHRvIGB1bmRlZmluZWRgLiAgQ29uY3VycmVudCBjYWxsc1xuICAgKiBtYWRlIHdoaWxlIHRoaXMgdmFsdWUgaXMgYSBgUHJvbWlzZWAgd2lsbCByZXR1cm4gdGhlIGBQcm9taXNlYCBpdHNlbGYuXG4gICAqIEBwcml2YXRlXG4gICAqIEB0eXBlIHtQcm9taXNlPHZvaWQ+fHVuZGVmaW5lZH1cbiAgICovXG4gIF9yZWFkaW5nO1xuXG4gIC8qKlxuICAgKiBTZXRzIGludGVybmFsIGRhdGEgdG8gYSBmcmVzaCBjbG9uZSBvZiB7QGxpbmsgSU5JVElBTF9NQU5JRkVTVF9EQVRBfVxuICAgKlxuICAgKiBVc2Uge0BsaW5rIE1hbmlmZXN0LmdldEluc3RhbmNlfSBpbnN0ZWFkLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYXBwaXVtSG9tZVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgY29uc3RydWN0b3IgKGFwcGl1bUhvbWUpIHtcbiAgICB0aGlzLl9hcHBpdW1Ib21lID0gYXBwaXVtSG9tZTtcbiAgICB0aGlzLl9kYXRhID0gXy5jbG9uZURlZXAoSU5JVElBTF9NQU5JRkVTVF9EQVRBKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgbmV3IG9yIGV4aXN0aW5nIHtAbGluayBNYW5pZmVzdH0gaW5zdGFuY2UsIGJhc2VkIG9uIHRoZSB2YWx1ZSBvZiBgYXBwaXVtSG9tZWAuXG4gICAqXG4gICAqIE1haW50YWlucyBvbmUgaW5zdGFuY2UgcGVyIHZhbHVlIG9mIGBhcHBpdW1Ib21lYC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGFwcGl1bUhvbWUgLSBQYXRoIHRvIGBBUFBJVU1fSE9NRWBcbiAgICogQHJldHVybnMge01hbmlmZXN0fVxuICAgKi9cbiAgc3RhdGljIGdldEluc3RhbmNlID0gXy5tZW1vaXplKGZ1bmN0aW9uIF9nZXRJbnN0YW5jZSAoXG4gICAgYXBwaXVtSG9tZSxcbiAgKSB7XG4gICAgcmV0dXJuIG5ldyBNYW5pZmVzdChhcHBpdW1Ib21lKTtcbiAgfSk7XG5cbiAgLyoqXG4gICAqIFNlYXJjaGVzIGBBUFBJVU1fSE9NRWAgZm9yIGluc3RhbGxlZCBleHRlbnNpb25zIGFuZCBhZGRzIHRoZW0gdG8gdGhlIG1hbmlmZXN0LlxuICAgKiBAcGFyYW0ge1N5bmNXaXRoSW5zdGFsbGVkRXh0ZW5zaW9uc09wdHN9IG9wdHNcbiAgICogQHJldHVybnMge1Byb21pc2U8Ym9vbGVhbj59IGB0cnVlYCBpZiBhbnkgZXh0ZW5zaW9ucyB3ZXJlIGFkZGVkLCBgZmFsc2VgIG90aGVyd2lzZS5cbiAgICovXG4gIGFzeW5jIHN5bmNXaXRoSW5zdGFsbGVkRXh0ZW5zaW9ucyAoe2RlcHRoTGltaXQgPSBERUZBVUxUX1NFQVJDSF9ERVBUSH0gPSB7fSkge1xuICAgIGNvbnN0IHdhbGtPcHRzID0gXy5kZWZhdWx0cyh7ZGVwdGhMaW1pdH0sIERFRkFVTFRfRklORF9FWFRFTlNJT05TX09QVFMpO1xuICAgIC8vIHRoaXMgY291bGQgYmUgcGFyYWxsZWxpemVkLCBidXQgd2UgY2FuJ3QgdXNlIGZzLndhbGsgYXMgYW4gYXN5bmMgaXRlcmF0b3JcbiAgICBsZXQgZGlkQ2hhbmdlID0gZmFsc2U7XG4gICAgZm9yIGF3YWl0IChjb25zdCB7c3RhdHMsIHBhdGg6IGZpbGVwYXRofSBvZiBmcy53YWxrKFxuICAgICAgdGhpcy5fYXBwaXVtSG9tZSxcbiAgICAgIHdhbGtPcHRzLFxuICAgICkpIHtcbiAgICAgIGlmIChmaWxlcGF0aCAhPT0gdGhpcy5fYXBwaXVtSG9tZSAmJiBzdGF0cy5pc0RpcmVjdG9yeSgpKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgcGtnID0gYXdhaXQgZW52LnJlYWRQYWNrYWdlSW5EaXIoZmlsZXBhdGgpO1xuICAgICAgICAgIGlmIChwa2cgJiYgaXNFeHRlbnNpb24ocGtnKSkge1xuICAgICAgICAgICAgLy8gaXQncyBwb3NzaWJsZSB0aGF0IHRoaXMgZXh0ZW5zaW9uIGFscmVhZHkgZXhpc3RzIGluIHRoZSBtYW5pZmVzdCxcbiAgICAgICAgICAgIC8vIHNvIG9ubHkgdXBkYXRlIGBkaWRDaGFuZ2VgIGlmIGl0J3MgbmV3LlxuICAgICAgICAgICAgY29uc3QgYWRkZWQgPSB0aGlzLmFkZEV4dGVuc2lvbkZyb21QYWNrYWdlKFxuICAgICAgICAgICAgICBwa2csXG4gICAgICAgICAgICAgIHBhdGguam9pbihmaWxlcGF0aCwgJ3BhY2thZ2UuanNvbicpLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGRpZENoYW5nZSA9IGRpZENoYW5nZSB8fCBhZGRlZDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2gge31cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGRpZENoYW5nZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGB0cnVlYCBpZiBkcml2ZXIgd2l0aCBuYW1lIGBuYW1lYCBpcyByZWdpc3RlcmVkLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIERyaXZlciBuYW1lXG4gICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgKi9cbiAgaGFzRHJpdmVyIChuYW1lKSB7XG4gICAgcmV0dXJuIEJvb2xlYW4odGhpcy5fZGF0YS5kcml2ZXJzW25hbWVdKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGB0cnVlYCBpZiBwbHVnaW4gd2l0aCBuYW1lIGBuYW1lYCBpcyByZWdpc3RlcmVkLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIFBsdWdpbiBuYW1lXG4gICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgKi9cbiAgaGFzUGx1Z2luIChuYW1lKSB7XG4gICAgcmV0dXJuIEJvb2xlYW4odGhpcy5fZGF0YS5wbHVnaW5zW25hbWVdKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHaXZlbiBhIHBhdGggdG8gYSBgcGFja2FnZS5qc29uYCwgYWRkIGl0IGFzIGVpdGhlciBhIGRyaXZlciBvciBwbHVnaW4gdG8gdGhlIG1hbmlmZXN0LlxuICAgKlxuICAgKiBXaWxsIF9ub3RfIG92ZXJ3cml0ZSBleGlzdGluZyBlbnRyaWVzLlxuICAgKiBAdGVtcGxhdGUge0V4dGVuc2lvblR5cGV9IEV4dFR5cGVcbiAgICogQHBhcmFtIHtFeHRlbnNpb25QYWNrYWdlSnNvbjxFeHRUeXBlPn0gcGtnSnNvblxuICAgKiBAcGFyYW0ge3N0cmluZ30gcGtnUGF0aFxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBgdHJ1ZWAgdXBvbiBzdWNjZXNzLCBgZmFsc2VgIGlmIHRoZSBleHRlbnNpb24gaXMgYWxyZWFkeSByZWdpc3RlcmVkLlxuICAgKi9cbiAgYWRkRXh0ZW5zaW9uRnJvbVBhY2thZ2UgKHBrZ0pzb24sIHBrZ1BhdGgpIHtcbiAgICAvKipcbiAgICAgKiBAdHlwZSB7SW50ZXJuYWxEYXRhfVxuICAgICAqL1xuICAgIGNvbnN0IGludGVybmFsID0ge1xuICAgICAgcGtnTmFtZTogcGtnSnNvbi5uYW1lLFxuICAgICAgdmVyc2lvbjogcGtnSnNvbi52ZXJzaW9uLFxuICAgICAgaW5zdGFsbFR5cGU6IElOU1RBTExfVFlQRV9OUE0sXG4gICAgICBpbnN0YWxsU3BlYzogYCR7cGtnSnNvbi5uYW1lfUAke3BrZ0pzb24udmVyc2lvbn1gLFxuICAgIH07XG5cbiAgICBpZiAoaXNEcml2ZXIocGtnSnNvbikpIHtcbiAgICAgIGlmICghdGhpcy5oYXNEcml2ZXIocGtnSnNvbi5hcHBpdW0uZHJpdmVyTmFtZSkpIHtcbiAgICAgICAgdGhpcy5hZGRFeHRlbnNpb24oRFJJVkVSX1RZUEUsIHBrZ0pzb24uYXBwaXVtLmRyaXZlck5hbWUsIHtcbiAgICAgICAgICAuLi5fLm9taXQocGtnSnNvbi5hcHBpdW0sICdkcml2ZXJOYW1lJyksXG4gICAgICAgICAgLi4uaW50ZXJuYWxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gZWxzZSBpZiAoaXNQbHVnaW4ocGtnSnNvbikpIHtcbiAgICAgIGlmICghdGhpcy5oYXNQbHVnaW4ocGtnSnNvbi5hcHBpdW0ucGx1Z2luTmFtZSkpIHtcbiAgICAgICAgdGhpcy5hZGRFeHRlbnNpb24oUExVR0lOX1RZUEUsIHBrZ0pzb24uYXBwaXVtLnBsdWdpbk5hbWUsIHtcbiAgICAgICAgICAuLi5fLm9taXQocGtnSnNvbi5hcHBpdW0sICdwbHVnaW5OYW1lJyksXG4gICAgICAgICAgLi4uaW50ZXJuYWwsXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgICAgYFRoZSBleHRlbnNpb24gaW4gJHtwYXRoLmRpcm5hbWUoXG4gICAgICAgICAgcGtnUGF0aCxcbiAgICAgICAgKX0gaXMgbmVpdGhlciBhIHZhbGlkIGRyaXZlciBub3IgYSB2YWxpZCBwbHVnaW4uYCxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYW4gZXh0ZW5zaW9uIHRvIHRoZSBtYW5pZmVzdCBhcyB3YXMgaW5zdGFsbGVkIGJ5IHRoZSBgYXBwaXVtYCBDTEkuICBUaGVcbiAgICogYGV4dERhdGFgLCBgZXh0VHlwZWAsIGFuZCBgZXh0TmFtZWAgaGF2ZSBhbHJlYWR5IGJlZW4gZGV0ZXJtaW5lZC5cbiAgICpcbiAgICogU2VlIHtAbGluayBNYW5pZmVzdC5hZGRFeHRlbnNpb25Gcm9tUGFja2FnZX0gZm9yIGFkZGluZyBhbiBleHRlbnNpb24gZnJvbSBhbiBvbi1kaXNrIHBhY2thZ2UuXG4gICAqIEB0ZW1wbGF0ZSB7RXh0ZW5zaW9uVHlwZX0gRXh0VHlwZVxuICAgKiBAcGFyYW0ge0V4dFR5cGV9IGV4dFR5cGUgLSBgZHJpdmVyYCBvciBgcGx1Z2luYFxuICAgKiBAcGFyYW0ge3N0cmluZ30gZXh0TmFtZSAtIE5hbWUgb2YgZXh0ZW5zaW9uXG4gICAqIEBwYXJhbSB7RXh0RGF0YTxFeHRUeXBlPn0gZXh0RGF0YSAtIEV4dGVuc2lvbiBtZXRhZGF0YVxuICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICovXG4gIGFkZEV4dGVuc2lvbiAoZXh0VHlwZSwgZXh0TmFtZSwgZXh0RGF0YSkge1xuICAgIHRoaXMuX2RhdGFbYCR7ZXh0VHlwZX1zYF1bZXh0TmFtZV0gPSBleHREYXRhO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIEFQUElVTV9IT01FIHBhdGhcbiAgICovXG4gIGdldCBhcHBpdW1Ib21lICgpIHtcbiAgICByZXR1cm4gdGhpcy5fYXBwaXVtSG9tZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBwYXRoIHRvIHRoZSBtYW5pZmVzdCBmaWxlXG4gICAqL1xuICBnZXQgbWFuaWZlc3RQYXRoICgpIHtcbiAgICByZXR1cm4gdGhpcy5fbWFuaWZlc3RQYXRoO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgZXh0ZW5zaW9uIGRhdGEgZm9yIGEgcGFydGljdWxhciB0eXBlLlxuICAgKlxuICAgKiBAdGVtcGxhdGUge0V4dGVuc2lvblR5cGV9IEV4dFR5cGVcbiAgICogQHBhcmFtIHtFeHRUeXBlfSBleHRUeXBlXG4gICAqIEByZXR1cm5zIHtFeHRSZWNvcmQ8RXh0VHlwZT59XG4gICAqL1xuICBnZXRFeHRlbnNpb25EYXRhIChleHRUeXBlKSB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGFbLyoqIEB0eXBlIHtzdHJpbmd9ICovIChgJHtleHRUeXBlfXNgKV07XG4gIH1cblxuICAvKipcbiAgICogUmVhZHMgbWFuaWZlc3QgZnJvbSBkaXNrIGFuZCBfb3ZlcndyaXRlc18gdGhlIGludGVybmFsIGRhdGEuXG4gICAqXG4gICAqIElmIHRoZSBtYW5pZmVzdCBkb2VzIG5vdCBleGlzdCBvbiBkaXNrLCBhbiB7QGxpbmsgSU5JVElBTF9NQU5JRkVTVF9EQVRBIFwiZW1wdHlcIn0gbWFuaWZlc3QgZmlsZSB3aWxsIGJlIGNyZWF0ZWQuXG4gICAqXG4gICAqIElmIGBBUFBJVU1fSE9NRWAgY29udGFpbnMgYSBgcGFja2FnZS5qc29uYCB3aXRoIGFuIGBhcHBpdW1gIGRlcGVuZGVuY3ksIHRoZW4gYSBoYXNoIG9mIHRoZSBgcGFja2FnZS5qc29uYCB3aWxsIGJlIHRha2VuLiBJZiB0aGlzIGhhc2ggZGlmZmVycyBmcm9tIHRoZSBsYXN0IGhhc2gsIHRoZSBjb250ZW50cyBvZiBgQVBQSVVNX0hPTUUvbm9kZV9tb2R1bGVzYCB3aWxsIGJlIHNjYW5uZWQgZm9yIGV4dGVuc2lvbnMgdGhhdCBtYXkgaGF2ZSBiZWVuIGluc3RhbGxlZCBvdXRzaWRlIG9mIHRoZSBgYXBwaXVtYCBDTEkuICBBbnkgZm91bmQgZXh0ZW5zaW9ucyB3aWxsIGJlIGFkZGVkIHRvIHRoZSBtYW5pZmVzdCBmaWxlLCBhbmQgaWYgc28sIHRoZSBtYW5pZmVzdCBmaWxlIHdpbGwgYmUgd3JpdHRlbiB0byBkaXNrLlxuICAgKlxuICAgKiBPbmx5IG9uZSByZWFkIG9wZXJhdGlvbiBzaG91bGQgaGFwcGVuIGF0IGEgdGltZS4gIFRoaXMgaXMgY29udHJvbGxlZCB2aWEgdGhlIHtAbGluayBNYW5pZmVzdC5fcmVhZGluZ30gcHJvcGVydHkuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPE1hbmlmZXN0RGF0YT59IFRoZSBkYXRhXG4gICAqL1xuICBhc3luYyByZWFkICgpIHtcbiAgICBpZiAodGhpcy5fcmVhZGluZykge1xuICAgICAgYXdhaXQgdGhpcy5fcmVhZGluZztcbiAgICAgIHJldHVybiB0aGlzLl9kYXRhO1xuICAgIH1cblxuICAgIHRoaXMuX3JlYWRpbmcgPSAoYXN5bmMgKCkgPT4ge1xuICAgICAgLyoqIEB0eXBlIHtNYW5pZmVzdERhdGF9ICovXG4gICAgICBsZXQgZGF0YTtcbiAgICAgIGxldCBpc05ld0ZpbGUgPSBmYWxzZTtcbiAgICAgIGF3YWl0IHRoaXMuX3NldE1hbmlmZXN0UGF0aCgpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgbG9nLmRlYnVnKGBSZWFkaW5nICR7dGhpcy5fbWFuaWZlc3RQYXRofS4uLmApO1xuICAgICAgICBjb25zdCB5YW1sID0gYXdhaXQgZnMucmVhZEZpbGUodGhpcy5fbWFuaWZlc3RQYXRoLCAndXRmOCcpO1xuICAgICAgICBkYXRhID0gWUFNTC5wYXJzZSh5YW1sKTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBpZiAoZXJyLmNvZGUgPT09ICdFTk9FTlQnKSB7XG4gICAgICAgICAgZGF0YSA9IF8uY2xvbmVEZWVwKElOSVRJQUxfTUFOSUZFU1RfREFUQSk7XG4gICAgICAgICAgaXNOZXdGaWxlID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAodGhpcy5fbWFuaWZlc3RQYXRoKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgIGBBcHBpdW0gaGFkIHRyb3VibGUgbG9hZGluZyB0aGUgZXh0ZW5zaW9uIGluc3RhbGxhdGlvbiBgICtcbiAgICAgICAgICAgICAgICBgY2FjaGUgZmlsZSAoJHt0aGlzLl9tYW5pZmVzdFBhdGh9KS4gSXQgbWF5IGJlIGludmFsaWQgWUFNTC4gU3BlY2lmaWMgZXJyb3I6ICR7ZXJyLm1lc3NhZ2V9YCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgYEFwcGl1bSBlbmNvdW50ZXJlZCBhbiB1bmtub3duIHByb2JsZW0uIFNwZWNpZmljIGVycm9yOiAke2Vyci5tZXNzYWdlfWAsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB0aGlzLl9kYXRhID0gZGF0YTtcbiAgICAgIGxldCBpbnN0YWxsZWRFeHRlbnNpb25zQ2hhbmdlZCA9IGZhbHNlO1xuICAgICAgaWYgKFxuICAgICAgICBhd2FpdCBlbnYuaGFzQXBwaXVtRGVwZW5kZW5jeSh0aGlzLmFwcGl1bUhvbWUpICYmXG4gICAgICAgIChhd2FpdCBwYWNrYWdlRGlkQ2hhbmdlKHRoaXMuYXBwaXVtSG9tZSkpXG4gICAgICApIHtcbiAgICAgICAgaW5zdGFsbGVkRXh0ZW5zaW9uc0NoYW5nZWQgPSBhd2FpdCB0aGlzLnN5bmNXaXRoSW5zdGFsbGVkRXh0ZW5zaW9ucygpO1xuICAgICAgfVxuXG4gICAgICBpZiAoaXNOZXdGaWxlIHx8IGluc3RhbGxlZEV4dGVuc2lvbnNDaGFuZ2VkKSB7XG4gICAgICAgIGF3YWl0IHRoaXMud3JpdGUoKTtcbiAgICAgIH1cbiAgICB9KSgpO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLl9yZWFkaW5nO1xuICAgICAgcmV0dXJuIHRoaXMuX2RhdGE7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuX3JlYWRpbmcgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEVuc3VyZXMge0BsaW5rIE1hbmlmZXN0Ll9tYW5pZmVzdFBhdGh9IGlzIHNldC5cbiAgICpcbiAgICogQ3JlYXRlcyB0aGUgZGlyZWN0b3J5IGlmIG5lY2Vzc2FyeS5cbiAgICogQHByaXZhdGVcbiAgICogQHJldHVybnMge1Byb21pc2U8c3RyaW5nPn1cbiAgICovXG4gIGFzeW5jIF9zZXRNYW5pZmVzdFBhdGggKCkge1xuICAgIGlmICghdGhpcy5fbWFuaWZlc3RQYXRoKSB7XG4gICAgICB0aGlzLl9tYW5pZmVzdFBhdGggPSBhd2FpdCBlbnYucmVzb2x2ZU1hbmlmZXN0UGF0aCh0aGlzLl9hcHBpdW1Ib21lKTtcblxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICBpZiAocGF0aC5yZWxhdGl2ZSh0aGlzLl9hcHBpdW1Ib21lLCB0aGlzLl9tYW5pZmVzdFBhdGgpLnN0YXJ0c1dpdGgoJy4nKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYE1pc21hdGNoIGJldHdlZW4gbG9jYXRpb24gb2YgQVBQSVVNX0hPTUUgYW5kIG1hbmlmZXN0IGZpbGUuIEFQUElVTV9IT01FOiAke3RoaXMuYXBwaXVtSG9tZX0sIG1hbmlmZXN0IGZpbGU6ICR7dGhpcy5fbWFuaWZlc3RQYXRofWAsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX21hbmlmZXN0UGF0aDtcbiAgfVxuXG4gIC8qKlxuICAgKiBXcml0ZXMgdGhlIGRhdGEgaWYgaXQgbmVlZCBzIHdyaXRpbmcuXG4gICAqXG4gICAqIElmIHRoZSBgc2NoZW1hUmV2YCBwcm9wIG5lZWRzIHVwZGF0aW5nLCB0aGUgZmlsZSB3aWxsIGJlIHdyaXR0ZW4uXG4gICAqXG4gICAqIEB0b2RvIElmIHRoaXMgYmVjb21lcyB0b28gbXVjaCBvZiBhIGJvdHRsZW5lY2ssIHRocm90dGxlIGl0LlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxib29sZWFuPn0gV2hldGhlciB0aGUgZGF0YSB3YXMgd3JpdHRlblxuICAgKi9cbiAgYXN5bmMgd3JpdGUgKCkge1xuICAgIGlmICh0aGlzLl93cml0aW5nKSB7XG4gICAgICByZXR1cm4gdGhpcy5fd3JpdGluZztcbiAgICB9XG4gICAgdGhpcy5fd3JpdGluZyA9IChhc3luYyAoKSA9PiB7XG4gICAgICBhd2FpdCB0aGlzLl9zZXRNYW5pZmVzdFBhdGgoKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IGZzLm1rZGlycChwYXRoLmRpcm5hbWUodGhpcy5fbWFuaWZlc3RQYXRoKSk7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBBcHBpdW0gY291bGQgbm90IGNyZWF0ZSB0aGUgZGlyZWN0b3J5IGZvciB0aGUgbWFuaWZlc3QgZmlsZTogJHtwYXRoLmRpcm5hbWUoXG4gICAgICAgICAgICB0aGlzLl9tYW5pZmVzdFBhdGgsXG4gICAgICAgICAgKX0uIE9yaWdpbmFsIGVycm9yOiAke2Vyci5tZXNzYWdlfWAsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBmcy53cml0ZUZpbGUoXG4gICAgICAgICAgdGhpcy5fbWFuaWZlc3RQYXRoLFxuICAgICAgICAgIFlBTUwuc3RyaW5naWZ5KHRoaXMuX2RhdGEpLFxuICAgICAgICAgICd1dGY4JyxcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBBcHBpdW0gY291bGQgbm90IHdyaXRlIHRvIG1hbmlmZXN0IGF0ICR7dGhpcy5fbWFuaWZlc3RQYXRofSB1c2luZyBBUFBJVU1fSE9NRSAke3RoaXMuX2FwcGl1bUhvbWV9LiBgICtcbiAgICAgICAgICAgIGBQbGVhc2UgZW5zdXJlIGl0IGlzIHdyaXRhYmxlLiBPcmlnaW5hbCBlcnJvcjogJHtlcnIubWVzc2FnZX1gLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0pKCk7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLl93cml0aW5nO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLl93cml0aW5nID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEVpdGhlciBgZHJpdmVyYCBvciBgcGx1Z2luYCByblxuICogQHR5cGVkZWYge3R5cGVvZiBEUklWRVJfVFlQRSB8IHR5cGVvZiBQTFVHSU5fVFlQRX0gRXh0ZW5zaW9uVHlwZVxuICovXG5cbi8qKlxuICogUmVwcmVzZW50cyBhbiBlbnRpcmUgWUFNTCBtYW5pZmVzdCAoYGV4dGVuc2lvbnMueWFtbGApXG4gKiBAdHlwZWRlZiBNYW5pZmVzdERhdGFcbiAqIEBwcm9wZXJ0eSB7RXh0UmVjb3JkPERyaXZlclR5cGU+fSBkcml2ZXJzIC0gUmVjb3JkIG9mIGRyaXZlcnMsIGtleWVkIGJ5IG5hbWVcbiAqIEBwcm9wZXJ0eSB7RXh0UmVjb3JkPFBsdWdpblR5cGU+fSBwbHVnaW5zIC0gUmVjb3JkIG9mIHBsdWdpbnMsIGtleWVkIGJ5IG5hbWVcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBbc2NoZW1hUmV2XSAtIFRoZSBzY2hlbWEgcmV2aXNpb24gb2YgdGhlIG1hbmlmZXN0XG4gKi9cblxuLyoqXG4gKiBDb21iaW5hdGlvbiBvZiBleHRlcm5hbCArIGludGVybmFsIGV4dGVuc2lvbiBkYXRhIHdpdGggYGRyaXZlck5hbWVgL2BwbHVnaW5OYW1lYCByZW1vdmVkIChpdCBiZWNvbWVzIGEga2V5IGluIGFuIHtAbGluayBFeHRSZWNvcmR9IG9iamVjdCkuXG4gKiBAdGVtcGxhdGUge0V4dGVuc2lvblR5cGV9IEV4dFR5cGVcbiAqIEB0eXBlZGVmIHsoT21pdDxFeHRlcm5hbERhdGE8RXh0VHlwZT4sIEV4dFR5cGUgZXh0ZW5kcyBEcml2ZXJUeXBlID8gJ2RyaXZlck5hbWUnIDogJ3BsdWdpbk5hbWUnPikgJiBJbnRlcm5hbERhdGEgJiBDb21tb25EYXRhfSBFeHRlbnNpb25NYW5pZmVzdFxuICovXG5cbi8qKlxuICogTWFuaWZlc3QgZXh0ZW5zaW9uIGRhdGEgd2hpY2ggaXMgX25vdF8gcHJvdmlkZWQgaW4gYHBhY2thZ2UuanNvbmAuICBJdCBtYXkgYmUgZGVyaXZlZFxuICogKGUuZy4sIGBpbnN0YWxsU3BlY2ApIG9yIGNvcGllZCBmcm9tIGVsc2V3aGVyZSBpbiBhIGBwYWNrYWdlLmpzb25gIChlLmcuLFxuICogYHZlcnNpb25gKS5cbiAqIEB0eXBlZGVmIEludGVybmFsRGF0YVxuICogQHByb3BlcnR5IHtzdHJpbmd9IHBrZ05hbWUgLSBOYW1lIG9mIHBhY2thZ2UgKGUuZy4sIGBhcHBpdW0teGN1aXRlc3QtZHJpdmVyYClcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSB2ZXJzaW9uIC0gVmVyc2lvbiBvZiBwYWNrYWdlXG4gKiBAcHJvcGVydHkge2ltcG9ydCgnLi9leHRlbnNpb24tY29uZmlnJykuSW5zdGFsbFR5cGV9IGluc3RhbGxUeXBlIC0gSW5zdGFsbCB0eXBlXG4gKiBAcHJvcGVydHkge3N0cmluZ30gaW5zdGFsbFNwZWMgLSBXaGF0ZXZlciB0aGUgdXNlciB0eXBlZCBhcyB0aGUgZXh0ZW5zaW9uIHRvIGluc3RhbGwuIE1heSBiZSBkZXJpdmVkIGZyb20gYHBhY2thZ2UuanNvbmBcbiAqL1xuXG4vKipcbiAqIENvbnZlcnQgZXh0ZXJuYWwgKGBwYWNrYWdlLmpzb25gKSBleHRlbnNpb24gZGF0YSBpbnRvIG1hbmlmZXN0IGRhdGFcbiAqIEB0eXBlZGVmIHtFeHRlbnNpb25NYW5pZmVzdDxEcml2ZXJUeXBlPn0gTWFuaWZlc3REcml2ZXJEYXRhXG4gKi9cblxuLyoqXG4gKiBDb252ZXJ0IGV4dGVybmFsIChgcGFja2FnZS5qc29uYCkgZXh0ZW5zaW9uIGRhdGEgaW50byBtYW5pZmVzdCBkYXRhXG4gKiBAdHlwZWRlZiB7RXh0ZW5zaW9uTWFuaWZlc3Q8UGx1Z2luVHlwZT59IE1hbmlmZXN0UGx1Z2luRGF0YVxuICovXG5cbi8qKlxuICogRGF0YSBwb2ludHMgc2hhcmVkIGJ5IGFsbCBBcHBpdW0gZXh0ZW5zaW9uc1xuICogQHR5cGVkZWYgQ29tbW9uRGF0YVxuICogQHByb3BlcnR5IHtzdHJpbmd9IG1haW5DbGFzcyAtIE5hbWUgb2YgbWFpbiBjbGFzcyBpbiB0aGUgZXh0ZW5zaW9uXG4gKiBAcHJvcGVydHkge1JlY29yZDxzdHJpbmcsc3RyaW5nPn0gW3NjcmlwdHNdIC0gQ29sbGVjdGlvbiBvZiBzY3JpcHRzIHdoaWNoIGFuIGV4dGVuc2lvbiBtYXkgcnVuXG4gKiBAcHJvcGVydHkge3N0cmluZyB8IChpbXBvcnQoJ2FqdicpLlNjaGVtYU9iamVjdCAmIHtba2V5OiBudW1iZXJdOiBuZXZlcn0pfSBbc2NoZW1hXSAtIEFyZ3VtZW50IHNjaGVtYSBvYmplY3RcbiAqL1xuXG4vKipcbiAqIERyaXZlci1zcGVjaWZpYyBtYW5pZmVzdCBkYXRhLlxuICogQHR5cGVkZWYgRHJpdmVyRGF0YVxuICogQHByb3BlcnR5IHtzdHJpbmd9IGF1dG9tYXRpb25OYW1lIC0gQXV0b21hdGlvbiBlbmdpbmUgdG8gdXNlXG4gKiBAcHJvcGVydHkge3N0cmluZ1tdfSBwbGF0Zm9ybU5hbWVzIC0gUGxhdGZvcm1zIHRvIHJ1biBvblxuICogQHByb3BlcnR5IHtzdHJpbmd9IGRyaXZlck5hbWUgLSBOYW1lIG9mIGRyaXZlciAoX25vdF8gdGhlIHNhbWUgYXMgdGhlIHBhY2thZ2UgbmFtZSwgcHJvYmFibHkpXG4gKi9cblxuLyoqXG4gKiBQbHVnaW4tc3BlY2lmaWMgbWFuaWZlc3QgZGF0YS5cbiAqIEB0eXBlZGVmIFBsdWdpbkRhdGFcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBwbHVnaW5OYW1lIC0gTmFtZSBvZiBwbHVnaW4gKF9ub3RfIHRoZSBzYW1lIGFzIHRoZSBwYWNrYWdlIG5hbWUsIHByb2JhYmx5KVxuICovXG5cbi8qKlxuICogR2VuZXJpYyB0eXBlIHRvIHJlZmVyIHRvIGVpdGhlciB7QGxpbmsgRHJpdmVyRGF0YX0gb3Ige0BsaW5rIFBsdWdpbkRhdGF9XG4gKiBAdGVtcGxhdGUge0V4dGVuc2lvblR5cGV9IEV4dFR5cGVcbiAqIEB0eXBlZGVmIHtDb21tb25EYXRhICYgKEV4dFR5cGUgZXh0ZW5kcyBEcml2ZXJUeXBlID8gRHJpdmVyRGF0YSA6IFBsdWdpbkRhdGEpfSBFeHRlcm5hbERhdGFcbiAqL1xuXG4vKipcbiAqIE1haW4gY2xhc3MvY29uc3RydWN0b3Igb2YgdGhpcmQtcGFydHkgcGx1Z2luXG4gKlxuICogUmVmZXJlbmNlZCBieSB7QGxpbmsgQ29tbW9uRGF0YS5tYWluQ2xhc3N9XG4gKiBAdHlwZWRlZiB7IHtwbHVnaW5OYW1lOiBzdHJpbmd9ICYgaW1wb3J0KCd0eXBlLWZlc3QnKS5DbGFzczx1bmtub3duPiAmIEV4dENsYXNzU3RhdGljTWVtYmVyc30gUGx1Z2luQ2xhc3NcbiAqL1xuXG4vKipcbiAqIE1haW4gY2xhc3MvY29uc3RydWN0b3Igb2YgdGhpcmQtcGFydHkgZHJpdmVyXG4gKlxuICogUmVmZXJlbmNlZCBieSB7QGxpbmsgQ29tbW9uRGF0YS5tYWluQ2xhc3N9XG4gKiBAdHlwZWRlZiB7IHtkcml2ZXJOYW1lOiBzdHJpbmd9ICYgaW1wb3J0KCd0eXBlLWZlc3QnKS5DbGFzczx1bmtub3duPiAmIEV4dENsYXNzU3RhdGljTWVtYmVycyB9IERyaXZlckNsYXNzXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiBFeHRDbGFzc1N0YXRpY01lbWJlcnNcbiAqIEBwcm9wZXJ0eSB7VXBkYXRlU2VydmVyRm59IFt1cGRhdGVTZXJ2ZXJdXG4gKiBAcHJvcGVydHkge2ltcG9ydCgnQGFwcGl1bS9iYXNlLWRyaXZlcicpLk1ldGhvZE1hcH0gW25ld01ldGhvZE1hcF1cbiAqL1xuXG4vKipcbiAqIEBjYWxsYmFjayBVcGRhdGVTZXJ2ZXJGblxuICogQHBhcmFtIHtpbXBvcnQoJ2V4cHJlc3MnKS5FeHByZXNzfSBhcHAgLSBFeHByZXNzIGFwcFxuICogQHBhcmFtIHtpbXBvcnQoJ2h0dHAnKS5TZXJ2ZXJ9IGh0dHBTZXJ2ZXIgLSBIVFRQIHNlcnZlclxuICogQHJldHVybnMge2ltcG9ydCgndHlwZS1mZXN0JykuUHJvbWlzYWJsZTx2b2lkPn1cbiAqL1xuLyoqXG4gKiBHZW5lcmljIHR5cGUgZm9yIGFuIG9iamVjdCBrZXllZCBieSBleHRlbnNpb24gbmFtZSwgd2l0aCB2YWx1ZXMgb2YgdHlwZSB7QGxpbmsgRXh0RGF0YX1cbiAqIEB0ZW1wbGF0ZSB7RXh0ZW5zaW9uVHlwZX0gRXh0VHlwZVxuICogQHR5cGVkZWYge1JlY29yZDxzdHJpbmcsRXh0RGF0YTxFeHRUeXBlPj59IEV4dFJlY29yZFxuICovXG5cbi8qKlxuICogR2VuZXJpYyB0eXBlIHRvIHJlZmVyIHRvIHRoZSBkYXRhIGluIGFuIHtAbGluayBFeHRSZWNvcmR9OyB0aGlzIGlzIHRoZSBkYXRhIGZvciBlYWNoIGV4dGVuc2lvbiBpbiBgZXh0ZW5zaW9ucy55YW1sYC5cbiAqIEB0ZW1wbGF0ZSB7RXh0ZW5zaW9uVHlwZX0gRXh0VHlwZVxuICogQHR5cGVkZWYge0V4dGVuc2lvbk1hbmlmZXN0PEV4dFR5cGU+fSBFeHREYXRhXG4gKi9cblxuLyoqXG4gKiBMaWtlIHtAbGluayBFeHREYXRhfSBleGNlcHQgaXQgX2ZvciBzdXJlXyBoYXMgYSBgc2NoZW1hYCBwcm9wZXJ0eS5cbiAqIEB0ZW1wbGF0ZSB7RXh0ZW5zaW9uVHlwZX0gRXh0VHlwZVxuICogQHR5cGVkZWYgeyhFeHRlbnNpb25NYW5pZmVzdDxFeHRUeXBlPikgJiB7c2NoZW1hOiBpbXBvcnQoJ2FqdicpLlNjaGVtYU9iamVjdHxzdHJpbmd9IH0gRXh0RGF0YVdpdGhTY2hlbWFcbiAqL1xuXG4vKipcbiAqIEdlbmVyaWMgdHlwZSB0byByZWZlciB0byB0aGUgbWFpbiBjbGFzcyBjb25zdHJ1Y3RvciBvZiBhbiBleHRlbnNpb25cbiAqIEB0ZW1wbGF0ZSB7RXh0ZW5zaW9uVHlwZX0gRXh0VHlwZVxuICogQHR5cGVkZWYge0V4dFR5cGUgZXh0ZW5kcyBEcml2ZXJUeXBlID8gRHJpdmVyQ2xhc3MgOiBQbHVnaW5DbGFzc30gRXh0Q2xhc3NcbiAqL1xuXG4vKipcbiAqIEdlbmVyaWMgdHlwZSBmb3IgdGhlIGtleSBvZiBhbiB7QGxpbmsgRXh0UmVjb3JkfSB3aGljaCBjb3JyZXNwb25kcyB0byBhbiBleHRlbnNpb24gbmFtZS5cbiAqIEB0ZW1wbGF0ZSB7RXh0ZW5zaW9uVHlwZX0gRXh0VHlwZVxuICogQHR5cGVkZWYge2tleW9mIEV4dFJlY29yZDxFeHRUeXBlPn0gRXh0TmFtZVxuICovXG5cbi8qKlxuICogVHlwZSBvZiB0aGUgc3RyaW5nIHJlZmVycmluZyB0byBhIGRyaXZlciAodHlwaWNhbGx5IGFzIGEga2V5IG9yIHR5cGUgc3RyaW5nKVxuICogQHR5cGVkZWYge3R5cGVvZiBpbXBvcnQoJy4uL2NvbnN0YW50cycpLkRSSVZFUl9UWVBFfSBEcml2ZXJUeXBlXG4gKi9cblxuLyoqXG4gKiBUeXBlIG9mIHRoZSBzdHJpbmcgcmVmZXJyaW5nIHRvIGEgcGx1Z2luICh0eXBpY2FsbHkgYXMgYSBrZXkgb3IgdHlwZSBzdHJpbmcpXG4gKiBAdHlwZWRlZiB7dHlwZW9mIGltcG9ydCgnLi4vY29uc3RhbnRzJykuUExVR0lOX1RZUEV9IFBsdWdpblR5cGVcbiAqL1xuXG4vKipcbiAqIEEgYHBhY2thZ2UuanNvbmAgY29udGFpbmluZyBleHRlbnNpb24gZGF0YS5cbiAqIEB0ZW1wbGF0ZSB7RXh0ZW5zaW9uVHlwZX0gRXh0VHlwZVxuICogQHR5cGVkZWYge2ltcG9ydCgndHlwZS1mZXN0JykuU2V0UmVxdWlyZWQ8aW1wb3J0KCd0eXBlLWZlc3QnKS5QYWNrYWdlSnNvbiwgJ25hbWUnIHwgJ3ZlcnNpb24nPiAmIHthcHBpdW06IEV4dGVybmFsRGF0YTxFeHRUeXBlPn0gfSBFeHRlbnNpb25QYWNrYWdlSnNvblxuICovXG5cbi8qKlxuICogQHR5cGVkZWYgU3luY1dpdGhJbnN0YWxsZWRFeHRlbnNpb25zT3B0c1xuICogQHByb3BlcnR5IHtudW1iZXJ9IFtkZXB0aExpbWl0XSAtIE1heGltdW0gZGVwdGggdG8gcmVjdXJzZSBpbnRvIHN1YmRpcmVjdG9yaWVzXG4gKi9cbiJdfQ==
246
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9leHRlbnNpb24vbWFuaWZlc3QuanMiXSwibmFtZXMiOlsiREVGQVVMVF9TRUFSQ0hfREVQVEgiLCJERUZBVUxUX0ZJTkRfRVhURU5TSU9OU19PUFRTIiwiT2JqZWN0IiwiZnJlZXplIiwiZGVwdGhMaW1pdCIsImZpbHRlciIsImZpbGVwYXRoIiwicGF0aCIsImJhc2VuYW1lIiwic3RhcnRzV2l0aCIsIkNPTkZJR19TQ0hFTUFfUkVWIiwiQ09ORklHX0RBVEFfRFJJVkVSX0tFWSIsIkRSSVZFUl9UWVBFIiwiQ09ORklHX0RBVEFfUExVR0lOX0tFWSIsIlBMVUdJTl9UWVBFIiwiSU5JVElBTF9NQU5JRkVTVF9EQVRBIiwic2NoZW1hUmV2IiwiaXNFeHRlbnNpb24iLCJ2YWx1ZSIsIl8iLCJpc1BsYWluT2JqZWN0IiwiYXBwaXVtIiwiaXNTdHJpbmciLCJuYW1lIiwidmVyc2lvbiIsImlzRHJpdmVyIiwiZ2V0IiwiaXNBcnJheSIsImlzUGx1Z2luIiwiTWFuaWZlc3QiLCJfZGF0YSIsIl9hcHBpdW1Ib21lIiwiX21hbmlmZXN0UGF0aCIsIl93cml0aW5nIiwiX3JlYWRpbmciLCJjb25zdHJ1Y3RvciIsImFwcGl1bUhvbWUiLCJjbG9uZURlZXAiLCJnZXRJbnN0YW5jZSIsIm1lbW9pemUiLCJfZ2V0SW5zdGFuY2UiLCJzeW5jV2l0aEluc3RhbGxlZEV4dGVuc2lvbnMiLCJ3YWxrT3B0cyIsImRlZmF1bHRzIiwiZGlkQ2hhbmdlIiwic3RhdHMiLCJmcyIsIndhbGsiLCJpc0RpcmVjdG9yeSIsInBrZyIsImVudiIsInJlYWRQYWNrYWdlSW5EaXIiLCJhZGRlZCIsImFkZEV4dGVuc2lvbkZyb21QYWNrYWdlIiwiam9pbiIsImhhc0RyaXZlciIsIkJvb2xlYW4iLCJkcml2ZXJzIiwiaGFzUGx1Z2luIiwicGx1Z2lucyIsInBrZ0pzb24iLCJwa2dQYXRoIiwiaW50ZXJuYWwiLCJwa2dOYW1lIiwiaW5zdGFsbFR5cGUiLCJJTlNUQUxMX1RZUEVfTlBNIiwiaW5zdGFsbFNwZWMiLCJkcml2ZXJOYW1lIiwiYWRkRXh0ZW5zaW9uIiwib21pdCIsInBsdWdpbk5hbWUiLCJUeXBlRXJyb3IiLCJkaXJuYW1lIiwiZXh0VHlwZSIsImV4dE5hbWUiLCJleHREYXRhIiwibWFuaWZlc3RQYXRoIiwiZ2V0RXh0ZW5zaW9uRGF0YSIsInJlYWQiLCJkYXRhIiwiaXNOZXdGaWxlIiwiX3NldE1hbmlmZXN0UGF0aCIsImxvZyIsImRlYnVnIiwieWFtbCIsInJlYWRGaWxlIiwiWUFNTCIsInBhcnNlIiwiZXJyIiwiY29kZSIsIkVycm9yIiwibWVzc2FnZSIsImluc3RhbGxlZEV4dGVuc2lvbnNDaGFuZ2VkIiwiaGFzQXBwaXVtRGVwZW5kZW5jeSIsIndyaXRlIiwidW5kZWZpbmVkIiwicmVzb2x2ZU1hbmlmZXN0UGF0aCIsInJlbGF0aXZlIiwibWtkaXJwIiwid3JpdGVGaWxlIiwic3RyaW5naWZ5Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQU1BOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQU9BLE1BQU1BLG9CQUFvQixHQUFHLENBQTdCO0FBTUEsTUFBTUMsNEJBQTRCLEdBQUdDLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjO0FBQ2pEQyxFQUFBQSxVQUFVLEVBQUVKLG9CQURxQztBQUdqREssRUFBQUEsTUFBTSxFQUFHQyxRQUFELElBQWMsQ0FBQ0MsY0FBS0MsUUFBTCxDQUFjRixRQUFkLEVBQXdCRyxVQUF4QixDQUFtQyxHQUFuQztBQUgwQixDQUFkLENBQXJDO0FBU0EsTUFBTUMsaUJBQWlCLEdBQUcsQ0FBMUI7QUFNQSxNQUFNQyxzQkFBc0IsR0FBSSxHQUFFQyxzQkFBWSxHQUE5QztBQU1BLE1BQU1DLHNCQUFzQixHQUFJLEdBQUVDLHNCQUFZLEdBQTlDO0FBS0EsTUFBTUMscUJBQXFCLEdBQUdiLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjO0FBQzFDLEdBQUNRLHNCQUFELEdBQTBCVCxNQUFNLENBQUNDLE1BQVAsQ0FBYyxFQUFk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LE9BQU8wRCxHQUFQLEVBQVk7QUFDWixjQUFNLElBQUlFLEtBQUosQ0FDSCx5Q0FBd0MsS0FBSzFELGFBQWMsc0JBQXFCLEtBQUtELFdBQVksSUFBbEcsR0FDRyxpREFBZ0R5RCxHQUFHLENBQUNHLE9BQVEsRUFGM0QsQ0FBTjtBQUlEO0FBQ0YsS0F4QmUsR0FBaEI7O0FBeUJBLFFBQUk7QUFDRixhQUFPLE1BQU0sS0FBSzFELFFBQWxCO0FBQ0QsS0FGRCxTQUVVO0FBQ1IsV0FBS0EsUUFBTCxHQUFnQjhELFNBQWhCO0FBQ0Q7QUFDRjs7QUFqVm1CIiwic291cmNlc0NvbnRlbnQiOlsiLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uLy4uL3R5cGVzL2FwcGl1bS1tYW5pZmVzdC5kLnRzXCIgLz5cblxuLyoqXG4gKiBNb2R1bGUgY29udGFpbmluZyB7QGxpbmsgTWFuaWZlc3R9IHdoaWNoIGhhbmRsZXMgcmVhZGluZyAmIHdyaXRpbmcgb2YgZXh0ZW5zaW9uIGNvbmZpZyBmaWxlcy5cbiAqL1xuXG5pbXBvcnQgeyBlbnYsIGZzIH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCBZQU1MIGZyb20gJ3lhbWwnO1xuaW1wb3J0IHsgRFJJVkVSX1RZUEUsIFBMVUdJTl9UWVBFIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCBsb2cgZnJvbSAnLi4vbG9nZ2VyJztcbmltcG9ydCB7IElOU1RBTExfVFlQRV9OUE0gfSBmcm9tICcuL2V4dGVuc2lvbi1jb25maWcnO1xuaW1wb3J0IHsgcGFja2FnZURpZENoYW5nZSB9IGZyb20gJy4vcGFja2FnZS1jaGFuZ2VkJztcblxuLyoqXG4gKiBEZWZhdWx0IGRlcHRoIHRvIHNlYXJjaCBpbiBkaXJlY3RvcnkgdHJlZSBmb3Igd2hhdGV2ZXIgaXQgaXMgd2UncmUgbG9va2luZyBmb3IuXG4gKlxuICogSXQncyA0IGJlY2F1c2Ugc21hbGxlciBudW1iZXJzIGRpZG4ndCB3b3JrLlxuICovXG5jb25zdCBERUZBVUxUX1NFQVJDSF9ERVBUSCA9IDQ7XG5cbi8qKlxuICogRGVmYXVsdCBvcHRpb25zIGZvciB7QGxpbmsgZmluZEV4dGVuc2lvbnN9LlxuICogQHR5cGUge1JlYWRvbmx5PGltcG9ydCgna2xhdycpLk9wdGlvbnM+fVxuICovXG5jb25zdCBERUZBVUxUX0ZJTkRfRVhURU5TSU9OU19PUFRTID0gT2JqZWN0LmZyZWV6ZSh7XG4gIGRlcHRoTGltaXQ6IERFRkFVTFRfU0VBUkNIX0RFUFRILFxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICBmaWx0ZXI6IChmaWxlcGF0aCkgPT4gIXBhdGguYmFzZW5hbWUoZmlsZXBhdGgpLnN0YXJ0c1dpdGgoJy4nKSxcbn0pO1xuXG4vKipcbiAqIEN1cnJlbnQgY29uZmlndXJhdGlvbiBzY2hlbWEgcmV2aXNpb24hXG4gKi9cbmNvbnN0IENPTkZJR19TQ0hFTUFfUkVWID0gMjtcblxuLyoqXG4gKiBUaGUgbmFtZSBvZiB0aGUgcHJvcCAoYGRyaXZlcnNgKSB1c2VkIGluIGBleHRlbnNpb25zLnlhbWxgIGZvciBkcml2ZXJzLlxuICogQHR5cGUge2Ake3R5cGVvZiBEUklWRVJfVFlQRX1zYH1cbiAqL1xuY29uc3QgQ09ORklHX0RBVEFfRFJJVkVSX0tFWSA9IGAke0RSSVZFUl9UWVBFfXNgO1xuXG4vKipcbiAqIFRoZSBuYW1lIG9mIHRoZSBwcm9wIChgcGx1Z2luc2ApIHVzZWQgaW4gYGV4dGVuc2lvbnMueWFtbGAgZm9yIHBsdWdpbnMuXG4gKiBAdHlwZSB7YCR7dHlwZW9mIFBMVUdJTl9UWVBFfXNgfVxuICovXG5jb25zdCBDT05GSUdfREFUQV9QTFVHSU5fS0VZID0gYCR7UExVR0lOX1RZUEV9c2A7XG5cbi8qKlxuICogQHR5cGUge1JlYWRvbmx5PE1hbmlmZXN0RGF0YT59XG4gKi9cbmNvbnN0IElOSVRJQUxfTUFOSUZFU1RfREFUQSA9IE9iamVjdC5mcmVlemUoe1xuICBbQ09ORklHX0RBVEFfRFJJVkVSX0tFWV06IE9iamVjdC5mcmVlemUoe30pLFxuICBbQ09ORklHX0RBVEFfUExVR0lOX0tFWV06IE9iamVjdC5mcmVlemUoe30pLFxuICBzY2hlbWFSZXY6IENPTkZJR19TQ0hFTUFfUkVWLFxufSk7XG5cbi8qKlxuICogR2l2ZW4gYSBgcGFja2FnZS5qc29uYCByZXR1cm4gYHRydWVgIGlmIGl0IHJlcHJlc2VudHMgYW4gQXBwaXVtIEV4dGVuc2lvbiAoZWl0aGVyIGEgZHJpdmVyIG9yIHBsdWdpbikuXG4gKlxuICogVGhlIGBwYWNrYWdlLmpzb25gIG11c3QgaGF2ZSBhbiBgYXBwaXVtYCBwcm9wZXJ0eSB3aGljaCBpcyBhbiBvYmplY3QuXG4gKiBAcGFyYW0ge2FueX0gdmFsdWVcbiAqIEByZXR1cm5zIHt2YWx1ZSBpcyBFeHRQYWNrYWdlSnNvbjxFeHRlbnNpb25UeXBlPn1cbiAqL1xuZnVuY3Rpb24gaXNFeHRlbnNpb24gKHZhbHVlKSB7XG4gIHJldHVybiAoXG4gICAgXy5pc1BsYWluT2JqZWN0KHZhbHVlKSAmJlxuICAgIF8uaXNQbGFpbk9iamVjdCh2YWx1ZS5hcHBpdW0pICYmXG4gICAgXy5pc1N0cmluZyh2YWx1ZS5uYW1lKSAmJlxuICAgIF8uaXNTdHJpbmcodmFsdWUudmVyc2lvbilcbiAgKTtcbn1cbi8qKlxuICogR2l2ZW4gYSBgcGFja2FnZS5qc29uYCwgcmV0dXJuIGB0cnVlYCBpZiBpdCByZXByZXNlbnRzIGFuIEFwcGl1bSBEcml2ZXIuXG4gKlxuICogVG8gYmUgY29uc2lkZXJlZCBhIGRyaXZlciwgYSBgcGFja2FnZS5qc29uYCBtdXN0IGhhdmUgYSBmaWVsZHNcbiAqIGBhcHBpdW0uZHJpdmVyTmFtZWAsIGBhcHBpdW0uYXV0b21hdGlvbk5hbWVgIGFuZCBgYXBwaXVtLnBsYXRmb3JtTmFtZXNgLlxuICogQHBhcmFtIHthbnl9IHZhbHVlIC0gVmFsdWUgdG8gdGVzdFxuICogQHJldHVybnMge3ZhbHVlIGlzIEV4dFBhY2thZ2VKc29uPERyaXZlclR5cGU+fVxuICovXG5mdW5jdGlvbiBpc0RyaXZlciAodmFsdWUpIHtcbiAgcmV0dXJuIChcbiAgICBpc0V4dGVuc2lvbih2YWx1ZSkgJiZcbiAgICBfLmlzU3RyaW5nKF8uZ2V0KHZhbHVlLCAnYXBwaXVtLmRyaXZlck5hbWUnKSkgJiZcbiAgICBfLmlzU3RyaW5nKF8uZ2V0KHZhbHVlLCAnYXBwaXVtLmF1dG9tYXRpb25OYW1lJykpICYmXG4gICAgXy5pc0FycmF5KF8uZ2V0KHZhbHVlLCAnYXBwaXVtLnBsYXRmb3JtTmFtZXMnKSlcbiAgKTtcbn1cblxuLyoqXG4gKiBHaXZlbiBhIGBwYWNrYWdlLmpzb25gLCByZXR1cm4gYHRydWVgIGlmIGl0IHJlcHJlc2VudHMgYW4gQXBwaXVtIFBsdWdpbi5cbiAqXG4gKiBUbyBiZSBjb25zaWRlcmVkIGEgcGx1Z2luLCBhIGBwYWNrYWdlLmpzb25gIG11c3QgaGF2ZSBhbiBgYXBwaXVtLnBsdWdpbk5hbWVgIGZpZWxkLlxuICogQHBhcmFtIHthbnl9IHZhbHVlIC0gVmFsdWUgdG8gdGVzdFxuICogQHJldHVybnMge3ZhbHVlIGlzIEV4dFBhY2thZ2VKc29uPFBsdWdpblR5cGU+fVxuICovXG5mdW5jdGlvbiBpc1BsdWdpbiAodmFsdWUpIHtcbiAgcmV0dXJuIGlzRXh0ZW5zaW9uKHZhbHVlKSAmJiBfLmlzU3RyaW5nKF8uZ2V0KHZhbHVlLCAnYXBwaXVtLnBsdWdpbk5hbWUnKSk7XG59XG5cbi8qKlxuICogSGFuZGxlcyByZWFkaW5nICYgd3JpdGluZyBvZiBleHRlbnNpb24gY29uZmlnIGZpbGVzLlxuICpcbiAqIE9ubHkgb25lIGluc3RhbmNlIG9mIHRoaXMgY2xhc3MgZXhpc3RzIHBlciB2YWx1ZSBvZiBgQVBQSVVNX0hPTUVgLlxuICovXG5leHBvcnQgY2xhc3MgTWFuaWZlc3Qge1xuICAvKipcbiAgICogVGhlIGVudGlyZSBjb250ZW50cyBvZiBhIHBhcnNlZCBZQU1MIGV4dGVuc2lvbiBjb25maWcgZmlsZS5cbiAgICpcbiAgICogQ29udGFpbnMgcHJveGllcyBmb3IgYXV0b21hdGljIHBlcnNpc3RlbmNlIG9uIGRpc2tcbiAgICogQHR5cGUge01hbmlmZXN0RGF0YX1cbiAgICogQHByaXZhdGVcbiAgICovXG4gIF9kYXRhO1xuXG4gIC8qKlxuICAgKiBQYXRoIHRvIGBBUFBJVU1fSE9NRWAuXG4gICAqIEBwcml2YXRlXG4gICAqIEB0eXBlIHtSZWFkb25seTxzdHJpbmc+fVxuICAgKi9cbiAgX2FwcGl1bUhvbWU7XG5cbiAgLyoqXG4gICAqIFBhdGggdG8gYGV4dGVuc2lvbnMueWFtbGBcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICogTm90IHNldCB1bnRpbCB7QGxpbmsgTWFuaWZlc3QucmVhZH0gaXMgY2FsbGVkLlxuICAgKi9cbiAgX21hbmlmZXN0UGF0aDtcblxuICAvKipcbiAgICogSGVscHMgYXZvaWQgd3JpdGluZyBtdWx0aXBsZSB0aW1lcy5cbiAgICpcbiAgICogSWYgdGhpcyBpcyBgdW5kZWZpbmVkYCwgY2FsbGluZyB7QGxpbmsgTWFuaWZlc3Qud3JpdGV9IHdpbGwgY2F1c2UgaXQgdG8gYmVcbiAgICogc2V0IHRvIGEgYFByb21pc2VgLiBXaGVuIHRoZSBjYWxsIHRvIGB3cml0ZSgpYCBpcyBjb21wbGV0ZSwgdGhlIGBQcm9taXNlYFxuICAgKiB3aWxsIHJlc29sdmUgYW5kIHRoZW4gdGhpcyB2YWx1ZSB3aWxsIGJlIHNldCB0byBgdW5kZWZpbmVkYC4gIENvbmN1cnJlbnQgY2FsbHNcbiAgICogbWFkZSB3aGlsZSB0aGlzIHZhbHVlIGlzIGEgYFByb21pc2VgIHdpbGwgcmV0dXJuIHRoZSBgUHJvbWlzZWAgaXRzZWxmLlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAdHlwZSB7UHJvbWlzZTxib29sZWFuPnx1bmRlZmluZWR9XG4gICAqL1xuICBfd3JpdGluZztcblxuICAvKipcbiAgICogSGVscHMgYXZvaWQgcmVhZGluZyBtdWx0aXBsZSB0aW1lcy5cbiAgICpcbiAgICogSWYgdGhpcyBpcyBgdW5kZWZpbmVkYCwgY2FsbGluZyB7QGxpbmsgTWFuaWZlc3QucmVhZH0gd2lsbCBjYXVzZSBpdCB0byBiZVxuICAgKiBzZXQgdG8gYSBgUHJvbWlzZWAuIFdoZW4gdGhlIGNhbGwgdG8gYHJlYWQoKWAgaXMgY29tcGxldGUsIHRoZSBgUHJvbWlzZWBcbiAgICogd2lsbCByZXNvbHZlIGFuZCB0aGVuIHRoaXMgdmFsdWUgd2lsbCBiZSBzZXQgdG8gYHVuZGVmaW5lZGAuICBDb25jdXJyZW50IGNhbGxzXG4gICAqIG1hZGUgd2hpbGUgdGhpcyB2YWx1ZSBpcyBhIGBQcm9taXNlYCB3aWxsIHJldHVybiB0aGUgYFByb21pc2VgIGl0c2VsZi5cbiAgICogQHByaXZhdGVcbiAgICogQHR5cGUge1Byb21pc2U8dm9pZD58dW5kZWZpbmVkfVxuICAgKi9cbiAgX3JlYWRpbmc7XG5cbiAgLyoqXG4gICAqIFNldHMgaW50ZXJuYWwgZGF0YSB0byBhIGZyZXNoIGNsb25lIG9mIHtAbGluayBJTklUSUFMX01BTklGRVNUX0RBVEF9XG4gICAqXG4gICAqIFVzZSB7QGxpbmsgTWFuaWZlc3QuZ2V0SW5zdGFuY2V9IGluc3RlYWQuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhcHBpdW1Ib21lXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBjb25zdHJ1Y3RvciAoYXBwaXVtSG9tZSkge1xuICAgIHRoaXMuX2FwcGl1bUhvbWUgPSBhcHBpdW1Ib21lO1xuICAgIHRoaXMuX2RhdGEgPSBfLmNsb25lRGVlcChJTklUSUFMX01BTklGRVNUX0RBVEEpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBuZXcgb3IgZXhpc3Rpbmcge0BsaW5rIE1hbmlmZXN0fSBpbnN0YW5jZSwgYmFzZWQgb24gdGhlIHZhbHVlIG9mIGBhcHBpdW1Ib21lYC5cbiAgICpcbiAgICogTWFpbnRhaW5zIG9uZSBpbnN0YW5jZSBwZXIgdmFsdWUgb2YgYGFwcGl1bUhvbWVgLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYXBwaXVtSG9tZSAtIFBhdGggdG8gYEFQUElVTV9IT01FYFxuICAgKiBAcmV0dXJucyB7TWFuaWZlc3R9XG4gICAqL1xuICBzdGF0aWMgZ2V0SW5zdGFuY2UgPSBfLm1lbW9pemUoZnVuY3Rpb24gX2dldEluc3RhbmNlIChcbiAgICBhcHBpdW1Ib21lLFxuICApIHtcbiAgICByZXR1cm4gbmV3IE1hbmlmZXN0KGFwcGl1bUhvbWUpO1xuICB9KTtcblxuICAvKipcbiAgICogU2VhcmNoZXMgYEFQUElVTV9IT01FYCBmb3IgaW5zdGFsbGVkIGV4dGVuc2lvbnMgYW5kIGFkZHMgdGhlbSB0byB0aGUgbWFuaWZlc3QuXG4gICAqIEBwYXJhbSB7U3luY1dpdGhJbnN0YWxsZWRFeHRlbnNpb25zT3B0c30gb3B0c1xuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxib29sZWFuPn0gYHRydWVgIGlmIGFueSBleHRlbnNpb25zIHdlcmUgYWRkZWQsIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICAgKi9cbiAgYXN5bmMgc3luY1dpdGhJbnN0YWxsZWRFeHRlbnNpb25zICh7ZGVwdGhMaW1pdCA9IERFRkFVTFRfU0VBUkNIX0RFUFRIfSA9IHt9KSB7XG4gICAgY29uc3Qgd2Fsa09wdHMgPSBfLmRlZmF1bHRzKHtkZXB0aExpbWl0fSwgREVGQVVMVF9GSU5EX0VYVEVOU0lPTlNfT1BUUyk7XG4gICAgLy8gdGhpcyBjb3VsZCBiZSBwYXJhbGxlbGl6ZWQsIGJ1dCB3ZSBjYW4ndCB1c2UgZnMud2FsayBhcyBhbiBhc3luYyBpdGVyYXRvclxuICAgIGxldCBkaWRDaGFuZ2UgPSBmYWxzZTtcbiAgICBmb3IgYXdhaXQgKGNvbnN0IHtzdGF0cywgcGF0aDogZmlsZXBhdGh9IG9mIGZzLndhbGsoXG4gICAgICB0aGlzLl9hcHBpdW1Ib21lLFxuICAgICAgd2Fsa09wdHMsXG4gICAgKSkge1xuICAgICAgaWYgKGZpbGVwYXRoICE9PSB0aGlzLl9hcHBpdW1Ib21lICYmIHN0YXRzLmlzRGlyZWN0b3J5KCkpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBwa2cgPSBhd2FpdCBlbnYucmVhZFBhY2thZ2VJbkRpcihmaWxlcGF0aCk7XG4gICAgICAgICAgaWYgKHBrZyAmJiBpc0V4dGVuc2lvbihwa2cpKSB7XG4gICAgICAgICAgICAvLyBpdCdzIHBvc3NpYmxlIHRoYXQgdGhpcyBleHRlbnNpb24gYWxyZWFkeSBleGlzdHMgaW4gdGhlIG1hbmlmZXN0LFxuICAgICAgICAgICAgLy8gc28gb25seSB1cGRhdGUgYGRpZENoYW5nZWAgaWYgaXQncyBuZXcuXG4gICAgICAgICAgICBjb25zdCBhZGRlZCA9IHRoaXMuYWRkRXh0ZW5zaW9uRnJvbVBhY2thZ2UoXG4gICAgICAgICAgICAgIHBrZyxcbiAgICAgICAgICAgICAgcGF0aC5qb2luKGZpbGVwYXRoLCAncGFja2FnZS5qc29uJyksXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgZGlkQ2hhbmdlID0gZGlkQ2hhbmdlIHx8IGFkZGVkO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCB7fVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZGlkQ2hhbmdlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYHRydWVgIGlmIGRyaXZlciB3aXRoIG5hbWUgYG5hbWVgIGlzIHJlZ2lzdGVyZWQuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIC0gRHJpdmVyIG5hbWVcbiAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAqL1xuICBoYXNEcml2ZXIgKG5hbWUpIHtcbiAgICByZXR1cm4gQm9vbGVhbih0aGlzLl9kYXRhLmRyaXZlcnNbbmFtZV0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYHRydWVgIGlmIHBsdWdpbiB3aXRoIG5hbWUgYG5hbWVgIGlzIHJlZ2lzdGVyZWQuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIC0gUGx1Z2luIG5hbWVcbiAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAqL1xuICBoYXNQbHVnaW4gKG5hbWUpIHtcbiAgICByZXR1cm4gQm9vbGVhbih0aGlzLl9kYXRhLnBsdWdpbnNbbmFtZV0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdpdmVuIGEgcGF0aCB0byBhIGBwYWNrYWdlLmpzb25gLCBhZGQgaXQgYXMgZWl0aGVyIGEgZHJpdmVyIG9yIHBsdWdpbiB0byB0aGUgbWFuaWZlc3QuXG4gICAqXG4gICAqIFdpbGwgX25vdF8gb3ZlcndyaXRlIGV4aXN0aW5nIGVudHJpZXMuXG4gICAqIEB0ZW1wbGF0ZSB7RXh0ZW5zaW9uVHlwZX0gRXh0VHlwZVxuICAgKiBAcGFyYW0ge0V4dFBhY2thZ2VKc29uPEV4dFR5cGU+fSBwa2dKc29uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwa2dQYXRoXG4gICAqIEByZXR1cm5zIHtib29sZWFufSAtIGB0cnVlYCB1cG9uIHN1Y2Nlc3MsIGBmYWxzZWAgaWYgdGhlIGV4dGVuc2lvbiBpcyBhbHJlYWR5IHJlZ2lzdGVyZWQuXG4gICAqL1xuICBhZGRFeHRlbnNpb25Gcm9tUGFja2FnZSAocGtnSnNvbiwgcGtnUGF0aCkge1xuICAgIC8qKlxuICAgICAqIEB0eXBlIHtJbnRlcm5hbE1ldGFkYXRhfVxuICAgICAqL1xuICAgIGNvbnN0IGludGVybmFsID0ge1xuICAgICAgcGtnTmFtZTogcGtnSnNvbi5uYW1lLFxuICAgICAgdmVyc2lvbjogcGtnSnNvbi52ZXJzaW9uLFxuICAgICAgaW5zdGFsbFR5cGU6IElOU1RBTExfVFlQRV9OUE0sXG4gICAgICBpbnN0YWxsU3BlYzogYCR7cGtnSnNvbi5uYW1lfUAke3BrZ0pzb24udmVyc2lvbn1gLFxuICAgIH07XG5cbiAgICBpZiAoaXNEcml2ZXIocGtnSnNvbikpIHtcbiAgICAgIGlmICghdGhpcy5oYXNEcml2ZXIocGtnSnNvbi5hcHBpdW0uZHJpdmVyTmFtZSkpIHtcbiAgICAgICAgdGhpcy5hZGRFeHRlbnNpb24oRFJJVkVSX1RZUEUsIHBrZ0pzb24uYXBwaXVtLmRyaXZlck5hbWUsIHtcbiAgICAgICAgICAuLi5fLm9taXQocGtnSnNvbi5hcHBpdW0sICdkcml2ZXJOYW1lJyksXG4gICAgICAgICAgLi4uaW50ZXJuYWxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gZWxzZSBpZiAoaXNQbHVnaW4ocGtnSnNvbikpIHtcbiAgICAgIGlmICghdGhpcy5oYXNQbHVnaW4ocGtnSnNvbi5hcHBpdW0ucGx1Z2luTmFtZSkpIHtcbiAgICAgICAgdGhpcy5hZGRFeHRlbnNpb24oUExVR0lOX1RZUEUsIHBrZ0pzb24uYXBwaXVtLnBsdWdpbk5hbWUsIHtcbiAgICAgICAgICAuLi5fLm9taXQocGtnSnNvbi5hcHBpdW0sICdwbHVnaW5OYW1lJyksXG4gICAgICAgICAgLi4uaW50ZXJuYWwsXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgICAgYFRoZSBleHRlbnNpb24gaW4gJHtwYXRoLmRpcm5hbWUoXG4gICAgICAgICAgcGtnUGF0aCxcbiAgICAgICAgKX0gaXMgbmVpdGhlciBhIHZhbGlkIGRyaXZlciBub3IgYSB2YWxpZCBwbHVnaW4uYCxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYW4gZXh0ZW5zaW9uIHRvIHRoZSBtYW5pZmVzdCBhcyB3YXMgaW5zdGFsbGVkIGJ5IHRoZSBgYXBwaXVtYCBDTEkuICBUaGVcbiAgICogYGV4dERhdGFgLCBgZXh0VHlwZWAsIGFuZCBgZXh0TmFtZWAgaGF2ZSBhbHJlYWR5IGJlZW4gZGV0ZXJtaW5lZC5cbiAgICpcbiAgICogU2VlIHtAbGluayBNYW5pZmVzdC5hZGRFeHRlbnNpb25Gcm9tUGFja2FnZX0gZm9yIGFkZGluZyBhbiBleHRlbnNpb24gZnJvbSBhbiBvbi1kaXNrIHBhY2thZ2UuXG4gICAqIEB0ZW1wbGF0ZSB7RXh0ZW5zaW9uVHlwZX0gRXh0VHlwZVxuICAgKiBAcGFyYW0ge0V4dFR5cGV9IGV4dFR5cGUgLSBgZHJpdmVyYCBvciBgcGx1Z2luYFxuICAgKiBAcGFyYW0ge3N0cmluZ30gZXh0TmFtZSAtIE5hbWUgb2YgZXh0ZW5zaW9uXG4gICAqIEBwYXJhbSB7RXh0TWFuaWZlc3Q8RXh0VHlwZT59IGV4dERhdGEgLSBFeHRlbnNpb24gbWV0YWRhdGFcbiAgICogQHJldHVybnMge3ZvaWR9XG4gICAqL1xuICBhZGRFeHRlbnNpb24gKGV4dFR5cGUsIGV4dE5hbWUsIGV4dERhdGEpIHtcbiAgICB0aGlzLl9kYXRhW2Ake2V4dFR5cGV9c2BdW2V4dE5hbWVdID0gZXh0RGF0YTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBBUFBJVU1fSE9NRSBwYXRoXG4gICAqL1xuICBnZXQgYXBwaXVtSG9tZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2FwcGl1bUhvbWU7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgcGF0aCB0byB0aGUgbWFuaWZlc3QgZmlsZVxuICAgKi9cbiAgZ2V0IG1hbmlmZXN0UGF0aCAoKSB7XG4gICAgcmV0dXJuIHRoaXMuX21hbmlmZXN0UGF0aDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGV4dGVuc2lvbiBkYXRhIGZvciBhIHBhcnRpY3VsYXIgdHlwZS5cbiAgICpcbiAgICogQHRlbXBsYXRlIHtFeHRlbnNpb25UeXBlfSBFeHRUeXBlXG4gICAqIEBwYXJhbSB7RXh0VHlwZX0gZXh0VHlwZVxuICAgKiBAcmV0dXJucyB7RXh0UmVjb3JkPEV4dFR5cGU+fVxuICAgKi9cbiAgZ2V0RXh0ZW5zaW9uRGF0YSAoZXh0VHlwZSkge1xuICAgIHJldHVybiB0aGlzLl9kYXRhWy8qKiBAdHlwZSB7c3RyaW5nfSAqLyAoYCR7ZXh0VHlwZX1zYCldO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlYWRzIG1hbmlmZXN0IGZyb20gZGlzayBhbmQgX292ZXJ3cml0ZXNfIHRoZSBpbnRlcm5hbCBkYXRhLlxuICAgKlxuICAgKiBJZiB0aGUgbWFuaWZlc3QgZG9lcyBub3QgZXhpc3Qgb24gZGlzaywgYW4ge0BsaW5rIElOSVRJQUxfTUFOSUZFU1RfREFUQSBcImVtcHR5XCJ9IG1hbmlmZXN0IGZpbGUgd2lsbCBiZSBjcmVhdGVkLlxuICAgKlxuICAgKiBJZiBgQVBQSVVNX0hPTUVgIGNvbnRhaW5zIGEgYHBhY2thZ2UuanNvbmAgd2l0aCBhbiBgYXBwaXVtYCBkZXBlbmRlbmN5LCB0aGVuIGEgaGFzaCBvZiB0aGUgYHBhY2thZ2UuanNvbmAgd2lsbCBiZSB0YWtlbi4gSWYgdGhpcyBoYXNoIGRpZmZlcnMgZnJvbSB0aGUgbGFzdCBoYXNoLCB0aGUgY29udGVudHMgb2YgYEFQUElVTV9IT01FL25vZGVfbW9kdWxlc2Agd2lsbCBiZSBzY2FubmVkIGZvciBleHRlbnNpb25zIHRoYXQgbWF5IGhhdmUgYmVlbiBpbnN0YWxsZWQgb3V0c2lkZSBvZiB0aGUgYGFwcGl1bWAgQ0xJLiAgQW55IGZvdW5kIGV4dGVuc2lvbnMgd2lsbCBiZSBhZGRlZCB0byB0aGUgbWFuaWZlc3QgZmlsZSwgYW5kIGlmIHNvLCB0aGUgbWFuaWZlc3QgZmlsZSB3aWxsIGJlIHdyaXR0ZW4gdG8gZGlzay5cbiAgICpcbiAgICogT25seSBvbmUgcmVhZCBvcGVyYXRpb24gc2hvdWxkIGhhcHBlbiBhdCBhIHRpbWUuICBUaGlzIGlzIGNvbnRyb2xsZWQgdmlhIHRoZSB7QGxpbmsgTWFuaWZlc3QuX3JlYWRpbmd9IHByb3BlcnR5LlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxNYW5pZmVzdERhdGE+fSBUaGUgZGF0YVxuICAgKi9cbiAgYXN5bmMgcmVhZCAoKSB7XG4gICAgaWYgKHRoaXMuX3JlYWRpbmcpIHtcbiAgICAgIGF3YWl0IHRoaXMuX3JlYWRpbmc7XG4gICAgICByZXR1cm4gdGhpcy5fZGF0YTtcbiAgICB9XG5cbiAgICB0aGlzLl9yZWFkaW5nID0gKGFzeW5jICgpID0+IHtcbiAgICAgIC8qKiBAdHlwZSB7TWFuaWZlc3REYXRhfSAqL1xuICAgICAgbGV0IGRhdGE7XG4gICAgICBsZXQgaXNOZXdGaWxlID0gZmFsc2U7XG4gICAgICBhd2FpdCB0aGlzLl9zZXRNYW5pZmVzdFBhdGgoKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGxvZy5kZWJ1ZyhgUmVhZGluZyAke3RoaXMuX21hbmlmZXN0UGF0aH0uLi5gKTtcbiAgICAgICAgY29uc3QgeWFtbCA9IGF3YWl0IGZzLnJlYWRGaWxlKHRoaXMuX21hbmlmZXN0UGF0aCwgJ3V0ZjgnKTtcbiAgICAgICAgZGF0YSA9IFlBTUwucGFyc2UoeWFtbCk7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgaWYgKGVyci5jb2RlID09PSAnRU5PRU5UJykge1xuICAgICAgICAgIGRhdGEgPSBfLmNsb25lRGVlcChJTklUSUFMX01BTklGRVNUX0RBVEEpO1xuICAgICAgICAgIGlzTmV3RmlsZSA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKHRoaXMuX21hbmlmZXN0UGF0aCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICBgQXBwaXVtIGhhZCB0cm91YmxlIGxvYWRpbmcgdGhlIGV4dGVuc2lvbiBpbnN0YWxsYXRpb24gYCArXG4gICAgICAgICAgICAgICAgYGNhY2hlIGZpbGUgKCR7dGhpcy5fbWFuaWZlc3RQYXRofSkuIEl0IG1heSBiZSBpbnZhbGlkIFlBTUwuIFNwZWNpZmljIGVycm9yOiAke2Vyci5tZXNzYWdlfWAsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgIGBBcHBpdW0gZW5jb3VudGVyZWQgYW4gdW5rbm93biBwcm9ibGVtLiBTcGVjaWZpYyBlcnJvcjogJHtlcnIubWVzc2FnZX1gLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdGhpcy5fZGF0YSA9IGRhdGE7XG4gICAgICBsZXQgaW5zdGFsbGVkRXh0ZW5zaW9uc0NoYW5nZWQgPSBmYWxzZTtcbiAgICAgIGlmIChcbiAgICAgICAgYXdhaXQgZW52Lmhhc0FwcGl1bURlcGVuZGVuY3kodGhpcy5hcHBpdW1Ib21lKSAmJlxuICAgICAgICAoYXdhaXQgcGFja2FnZURpZENoYW5nZSh0aGlzLmFwcGl1bUhvbWUpKVxuICAgICAgKSB7XG4gICAgICAgIGluc3RhbGxlZEV4dGVuc2lvbnNDaGFuZ2VkID0gYXdhaXQgdGhpcy5zeW5jV2l0aEluc3RhbGxlZEV4dGVuc2lvbnMoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGlzTmV3RmlsZSB8fCBpbnN0YWxsZWRFeHRlbnNpb25zQ2hhbmdlZCkge1xuICAgICAgICBhd2FpdCB0aGlzLndyaXRlKCk7XG4gICAgICB9XG4gICAgfSkoKTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5fcmVhZGluZztcbiAgICAgIHJldHVybiB0aGlzLl9kYXRhO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLl9yZWFkaW5nID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBFbnN1cmVzIHtAbGluayBNYW5pZmVzdC5fbWFuaWZlc3RQYXRofSBpcyBzZXQuXG4gICAqXG4gICAqIENyZWF0ZXMgdGhlIGRpcmVjdG9yeSBpZiBuZWNlc3NhcnkuXG4gICAqIEBwcml2YXRlXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHN0cmluZz59XG4gICAqL1xuICBhc3luYyBfc2V0TWFuaWZlc3RQYXRoICgpIHtcbiAgICBpZiAoIXRoaXMuX21hbmlmZXN0UGF0aCkge1xuICAgICAgdGhpcy5fbWFuaWZlc3RQYXRoID0gYXdhaXQgZW52LnJlc29sdmVNYW5pZmVzdFBhdGgodGhpcy5fYXBwaXVtSG9tZSk7XG5cbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgaWYgKHBhdGgucmVsYXRpdmUodGhpcy5fYXBwaXVtSG9tZSwgdGhpcy5fbWFuaWZlc3RQYXRoKS5zdGFydHNXaXRoKCcuJykpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBNaXNtYXRjaCBiZXR3ZWVuIGxvY2F0aW9uIG9mIEFQUElVTV9IT01FIGFuZCBtYW5pZmVzdCBmaWxlLiBBUFBJVU1fSE9NRTogJHt0aGlzLmFwcGl1bUhvbWV9LCBtYW5pZmVzdCBmaWxlOiAke3RoaXMuX21hbmlmZXN0UGF0aH1gLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9tYW5pZmVzdFBhdGg7XG4gIH1cblxuICAvKipcbiAgICogV3JpdGVzIHRoZSBkYXRhIGlmIGl0IG5lZWQgcyB3cml0aW5nLlxuICAgKlxuICAgKiBJZiB0aGUgYHNjaGVtYVJldmAgcHJvcCBuZWVkcyB1cGRhdGluZywgdGhlIGZpbGUgd2lsbCBiZSB3cml0dGVuLlxuICAgKlxuICAgKiBAdG9kbyBJZiB0aGlzIGJlY29tZXMgdG9vIG11Y2ggb2YgYSBib3R0bGVuZWNrLCB0aHJvdHRsZSBpdC5cbiAgICogQHJldHVybnMge1Byb21pc2U8Ym9vbGVhbj59IFdoZXRoZXIgdGhlIGRhdGEgd2FzIHdyaXR0ZW5cbiAgICovXG4gIGFzeW5jIHdyaXRlICgpIHtcbiAgICBpZiAodGhpcy5fd3JpdGluZykge1xuICAgICAgcmV0dXJuIHRoaXMuX3dyaXRpbmc7XG4gICAgfVxuICAgIHRoaXMuX3dyaXRpbmcgPSAoYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgdGhpcy5fc2V0TWFuaWZlc3RQYXRoKCk7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBmcy5ta2RpcnAocGF0aC5kaXJuYW1lKHRoaXMuX21hbmlmZXN0UGF0aCkpO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgQXBwaXVtIGNvdWxkIG5vdCBjcmVhdGUgdGhlIGRpcmVjdG9yeSBmb3IgdGhlIG1hbmlmZXN0IGZpbGU6ICR7cGF0aC5kaXJuYW1lKFxuICAgICAgICAgICAgdGhpcy5fbWFuaWZlc3RQYXRoLFxuICAgICAgICAgICl9LiBPcmlnaW5hbCBlcnJvcjogJHtlcnIubWVzc2FnZX1gLFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgZnMud3JpdGVGaWxlKFxuICAgICAgICAgIHRoaXMuX21hbmlmZXN0UGF0aCxcbiAgICAgICAgICBZQU1MLnN0cmluZ2lmeSh0aGlzLl9kYXRhKSxcbiAgICAgICAgICAndXRmOCcsXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgQXBwaXVtIGNvdWxkIG5vdCB3cml0ZSB0byBtYW5pZmVzdCBhdCAke3RoaXMuX21hbmlmZXN0UGF0aH0gdXNpbmcgQVBQSVVNX0hPTUUgJHt0aGlzLl9hcHBpdW1Ib21lfS4gYCArXG4gICAgICAgICAgICBgUGxlYXNlIGVuc3VyZSBpdCBpcyB3cml0YWJsZS4gT3JpZ2luYWwgZXJyb3I6ICR7ZXJyLm1lc3NhZ2V9YCxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9KSgpO1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5fd3JpdGluZztcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5fd3JpdGluZyA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBUeXBlIG9mIHRoZSBzdHJpbmcgcmVmZXJyaW5nIHRvIGEgZHJpdmVyICh0eXBpY2FsbHkgYXMgYSBrZXkgb3IgdHlwZSBzdHJpbmcpXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCcuLi8uLi90eXBlcycpLkRyaXZlclR5cGV9IERyaXZlclR5cGVcbiAqL1xuXG4vKipcbiAqIFR5cGUgb2YgdGhlIHN0cmluZyByZWZlcnJpbmcgdG8gYSBwbHVnaW4gKHR5cGljYWxseSBhcyBhIGtleSBvciB0eXBlIHN0cmluZylcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJy4uLy4uL3R5cGVzJykuUGx1Z2luVHlwZX0gUGx1Z2luVHlwZVxuICovXG5cbi8qKlxuICogQHR5cGVkZWYgU3luY1dpdGhJbnN0YWxsZWRFeHRlbnNpb25zT3B0c1xuICogQHByb3BlcnR5IHtudW1iZXJ9IFtkZXB0aExpbWl0XSAtIE1heGltdW0gZGVwdGggdG8gcmVjdXJzZSBpbnRvIHN1YmRpcmVjdG9yaWVzXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCcuLi8uLi90eXBlcy9hcHBpdW0tbWFuaWZlc3QnKS5NYW5pZmVzdERhdGF9IE1hbmlmZXN0RGF0YVxuICogQHR5cGVkZWYge2ltcG9ydCgnLi4vLi4vdHlwZXMvYXBwaXVtLW1hbmlmZXN0JykuSW50ZXJuYWxNZXRhZGF0YX0gSW50ZXJuYWxNZXRhZGF0YVxuICovXG5cbi8qKlxuICogQHRlbXBsYXRlIFRcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJy4uLy4uL3R5cGVzL2V4dGVybmFsLW1hbmlmZXN0JykuRXh0UGFja2FnZUpzb248VD59IEV4dFBhY2thZ2VKc29uXG4gKi9cblxuLyoqXG4gKiBAdGVtcGxhdGUgVFxuICogQHR5cGVkZWYge2ltcG9ydCgnLi4vLi4vdHlwZXMvYXBwaXVtLW1hbmlmZXN0JykuRXh0TWFuaWZlc3Q8VD59IEV4dE1hbmlmZXN0XG4gKi9cblxuLyoqXG4gKiBAdGVtcGxhdGUgVFxuICogQHR5cGVkZWYge2ltcG9ydCgnLi4vLi4vdHlwZXMvYXBwaXVtLW1hbmlmZXN0JykuRXh0UmVjb3JkPFQ+fSBFeHRSZWNvcmRcbiAqL1xuXG4vKipcbiAqIEVpdGhlciBgZHJpdmVyYCBvciBgcGx1Z2luYCByblxuICogQHR5cGVkZWYge2ltcG9ydCgnLi4vLi4vdHlwZXMnKS5FeHRlbnNpb25UeXBlfSBFeHRlbnNpb25UeXBlXG4gKi9cblxuIl19
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Determines if extensions have changed, and updates a hash the `package.json` in `appiumHome` if so.
3
+ *
4
+ * If they have, we need to sync them with the `extensions.yaml` manifest.
5
+ *
6
+ * _Warning: this makes a blocking call to `writeFileSync`._
7
+ * @param {string} appiumHome
8
+ * @returns {Promise<boolean>} `true` if `package.json` `appiumHome` changed
9
+ */
10
+ export function packageDidChange(appiumHome: string): Promise<boolean>;
11
+ //# sourceMappingURL=package-changed.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-changed.d.ts","sourceRoot":"","sources":["../../../lib/extension/package-changed.js"],"names":[],"mappings":"AAOA;;;;;;;;GAQG;AACH,6CAHW,MAAM,GACJ,QAAQ,OAAO,CAAC,CAgD5B"}
@@ -65,4 +65,4 @@ async function packageDidChange(appiumHome) {
65
65
 
66
66
  return isChanged;
67
67
  }
68
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9leHRlbnNpb24vcGFja2FnZS1jaGFuZ2VkLmpzIl0sIm5hbWVzIjpbInBhY2thZ2VEaWRDaGFuZ2UiLCJhcHBpdW1Ib21lIiwiaGFzaEZpbGVuYW1lIiwicGF0aCIsImpvaW4iLCJQS0dfSEFTSEZJTEVfUkVMQVRJVkVfUEFUSCIsImlzQ2hhbmdlZCIsIndyaXRlSGFzaCIsImhhc2giLCJvbGRIYXNoIiwiaGFzaEZpbGVuYW1lRGlyIiwiZGlybmFtZSIsImxvZyIsImRlYnVnIiwiZnMiLCJta2RpcnAiLCJlcnIiLCJFcnJvciIsIm1lc3NhZ2UiLCJjd2QiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBV08sZUFBZUEsZ0JBQWYsQ0FBaUNDLFVBQWpDLEVBQTZDO0FBQ2xELFFBQU1DLFlBQVksR0FBR0MsY0FBS0MsSUFBTCxDQUFVSCxVQUFWLEVBQXNCSSxxQ0FBdEIsQ0FBckI7O0FBS0EsTUFBSUMsU0FBSjtBQUVBLE1BQUlDLFNBQUo7QUFFQSxNQUFJQyxJQUFKO0FBRUEsTUFBSUMsT0FBSjs7QUFHQSxRQUFNQyxlQUFlLEdBQUdQLGNBQUtRLE9BQUwsQ0FBYVQsWUFBYixDQUF4Qjs7QUFDQVUsa0JBQUlDLEtBQUosQ0FBVyxpQ0FBZ0NILGVBQWdCLEVBQTNEOztBQUNBLE1BQUk7QUFDRixVQUFNSSxZQUFHQyxNQUFILENBQVVMLGVBQVYsQ0FBTjtBQUNELEdBRkQsQ0FFRSxPQUFPTSxHQUFQLEVBQVk7QUFDWixVQUFNLElBQUlDLEtBQUosQ0FDSCx3REFBdURQLGVBQWdCLHFCQUFvQk0sR0FBRyxDQUFDRSxPQUFRLEVBRHBHLENBQU47QUFHRDs7QUFFRCxNQUFJO0FBQ0YsS0FBQztBQUFDWixNQUFBQSxTQUFEO0FBQVlDLE1BQUFBLFNBQVo7QUFBdUJFLE1BQUFBLE9BQXZCO0FBQWdDRCxNQUFBQTtBQUFoQyxRQUF3QyxNQUFNLHNDQUFpQjtBQUM5RFcsTUFBQUEsR0FBRyxFQUFFbEIsVUFEeUQ7QUFFOURDLE1BQUFBLFlBQVksRUFBRUc7QUFGZ0QsS0FBakIsQ0FBL0M7QUFJRCxHQUxELENBS0UsTUFBTTtBQUNOLFdBQU8sSUFBUDtBQUNEOztBQUVELE1BQUlDLFNBQUosRUFBZTtBQUNiLFFBQUk7QUFBQTs7QUFDRkMsTUFBQUEsU0FBUzs7QUFDVEssc0JBQUlDLEtBQUosQ0FBVyxtQkFBa0JaLFVBQVcsdUJBQTlCLFlBQW9EUSxPQUFwRCwrQ0FBK0QsUUFBUyxRQUFPRCxJQUFLLEVBQTlGO0FBQ0QsS0FIRCxDQUdFLE9BQU9RLEdBQVAsRUFBWTtBQUNaLFlBQU0sSUFBSUMsS0FBSixDQUNILHFDQUFvQ1AsZUFBZ0IscUJBQW9CTSxHQUFHLENBQUNFLE9BQVEsRUFEakYsQ0FBTjtBQUdEO0FBQ0Y7O0FBRUQsU0FBT1osU0FBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmltcG9ydCB7IGZzIH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcbmltcG9ydCB7IGlzUGFja2FnZUNoYW5nZWQgfSBmcm9tICdwYWNrYWdlLWNoYW5nZWQnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBQS0dfSEFTSEZJTEVfUkVMQVRJVkVfUEFUSCB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgbG9nIGZyb20gJy4uL2xvZ2dlcic7XG5cbi8qKlxuICogRGV0ZXJtaW5lcyBpZiBleHRlbnNpb25zIGhhdmUgY2hhbmdlZCwgYW5kIHVwZGF0ZXMgYSBoYXNoIHRoZSBgcGFja2FnZS5qc29uYCBpbiBgYXBwaXVtSG9tZWAgaWYgc28uXG4gKlxuICogSWYgdGhleSBoYXZlLCB3ZSBuZWVkIHRvIHN5bmMgdGhlbSB3aXRoIHRoZSBgZXh0ZW5zaW9ucy55YW1sYCBtYW5pZmVzdC5cbiAqXG4gKiBfV2FybmluZzogdGhpcyBtYWtlcyBhIGJsb2NraW5nIGNhbGwgdG8gYHdyaXRlRmlsZVN5bmNgLl9cbiAqIEBwYXJhbSB7c3RyaW5nfSBhcHBpdW1Ib21lXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxib29sZWFuPn0gYHRydWVgIGlmIGBwYWNrYWdlLmpzb25gIGBhcHBpdW1Ib21lYCBjaGFuZ2VkXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBwYWNrYWdlRGlkQ2hhbmdlIChhcHBpdW1Ib21lKSB7XG4gIGNvbnN0IGhhc2hGaWxlbmFtZSA9IHBhdGguam9pbihhcHBpdW1Ib21lLCBQS0dfSEFTSEZJTEVfUkVMQVRJVkVfUEFUSCk7XG5cbiAgLy8gWFhYOiB0aGUgdHlwZXMgaW4gYHBhY2thZ2UtY2hhbmdlZGAgc2VlbSB0byBiZSB3cm9uZy5cblxuICAvKiogQHR5cGUge2Jvb2xlYW59ICovXG4gIGxldCBpc0NoYW5nZWQ7XG4gIC8qKiBAdHlwZSB7KCkgPT4gdm9pZH0gKi9cbiAgbGV0IHdyaXRlSGFzaDtcbiAgLyoqIEB0eXBlIHtzdHJpbmd9ICovXG4gIGxldCBoYXNoO1xuICAvKiogQHR5cGUge3N0cmluZ3x1bmRlZmluZWR9ICovXG4gIGxldCBvbGRIYXNoO1xuXG4gIC8vIGZpcnN0IG1rZGlycCB0aGUgdGFyZ2V0IGRpci5cbiAgY29uc3QgaGFzaEZpbGVuYW1lRGlyID0gcGF0aC5kaXJuYW1lKGhhc2hGaWxlbmFtZSk7XG4gIGxvZy5kZWJ1ZyhgQ3JlYXRpbmcgaGFzaCBmaWxlIGRpcmVjdG9yeTogJHtoYXNoRmlsZW5hbWVEaXJ9YCk7XG4gIHRyeSB7XG4gICAgYXdhaXQgZnMubWtkaXJwKGhhc2hGaWxlbmFtZURpcik7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBBcHBpdW0gY291bGQgbm90IGNyZWF0ZSB0aGUgZGlyZWN0b3J5IGZvciBoYXNoIGZpbGU6ICR7aGFzaEZpbGVuYW1lRGlyfS4gT3JpZ2luYWwgZXJyb3I6ICR7ZXJyLm1lc3NhZ2V9YCxcbiAgICApO1xuICB9XG5cbiAgdHJ5IHtcbiAgICAoe2lzQ2hhbmdlZCwgd3JpdGVIYXNoLCBvbGRIYXNoLCBoYXNofSA9IGF3YWl0IGlzUGFja2FnZUNoYW5nZWQoe1xuICAgICAgY3dkOiBhcHBpdW1Ib21lLFxuICAgICAgaGFzaEZpbGVuYW1lOiBQS0dfSEFTSEZJTEVfUkVMQVRJVkVfUEFUSCxcbiAgICB9KSk7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgaWYgKGlzQ2hhbmdlZCkge1xuICAgIHRyeSB7XG4gICAgICB3cml0ZUhhc2goKTtcbiAgICAgIGxvZy5kZWJ1ZyhgVXBkYXRlZCBoYXNoIG9mICR7YXBwaXVtSG9tZX0vcGFja2FnZS5qc29uIGZyb206ICR7b2xkSGFzaCA/PyAnKG5vbmUpJ30gdG86ICR7aGFzaH1gKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYEFwcGl1bSBjb3VsZCBub3Qgd3JpdGUgaGFzaCBmaWxlOiAke2hhc2hGaWxlbmFtZURpcn0uIE9yaWdpbmFsIGVycm9yOiAke2Vyci5tZXNzYWdlfWAsXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBpc0NoYW5nZWQ7XG59XG4iXX0=
68
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9leHRlbnNpb24vcGFja2FnZS1jaGFuZ2VkLmpzIl0sIm5hbWVzIjpbInBhY2thZ2VEaWRDaGFuZ2UiLCJhcHBpdW1Ib21lIiwiaGFzaEZpbGVuYW1lIiwicGF0aCIsImpvaW4iLCJQS0dfSEFTSEZJTEVfUkVMQVRJVkVfUEFUSCIsImlzQ2hhbmdlZCIsIndyaXRlSGFzaCIsImhhc2giLCJvbGRIYXNoIiwiaGFzaEZpbGVuYW1lRGlyIiwiZGlybmFtZSIsImxvZyIsImRlYnVnIiwiZnMiLCJta2RpcnAiLCJlcnIiLCJFcnJvciIsIm1lc3NhZ2UiLCJjd2QiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBV08sZUFBZUEsZ0JBQWYsQ0FBaUNDLFVBQWpDLEVBQTZDO0FBQ2xELFFBQU1DLFlBQVksR0FBR0MsY0FBS0MsSUFBTCxDQUFVSCxVQUFWLEVBQXNCSSxxQ0FBdEIsQ0FBckI7O0FBS0EsTUFBSUMsU0FBSjtBQUVBLE1BQUlDLFNBQUo7QUFFQSxNQUFJQyxJQUFKO0FBRUEsTUFBSUMsT0FBSjs7QUFHQSxRQUFNQyxlQUFlLEdBQUdQLGNBQUtRLE9BQUwsQ0FBYVQsWUFBYixDQUF4Qjs7QUFDQVUsa0JBQUlDLEtBQUosQ0FBVyxpQ0FBZ0NILGVBQWdCLEVBQTNEOztBQUNBLE1BQUk7QUFDRixVQUFNSSxZQUFHQyxNQUFILENBQVVMLGVBQVYsQ0FBTjtBQUNELEdBRkQsQ0FFRSxPQUFPTSxHQUFQLEVBQVk7QUFDWixVQUFNLElBQUlDLEtBQUosQ0FDSCx3REFBdURQLGVBQWdCLHFCQUFvQk0sR0FBRyxDQUFDRSxPQUFRLEVBRHBHLENBQU47QUFHRDs7QUFFRCxNQUFJO0FBQ0YsS0FBQztBQUFDWixNQUFBQSxTQUFEO0FBQVlDLE1BQUFBLFNBQVo7QUFBdUJFLE1BQUFBLE9BQXZCO0FBQWdDRCxNQUFBQTtBQUFoQyxRQUF3QyxNQUFNLHNDQUFpQjtBQUM5RFcsTUFBQUEsR0FBRyxFQUFFbEIsVUFEeUQ7QUFFOURDLE1BQUFBLFlBQVksRUFBRUc7QUFGZ0QsS0FBakIsQ0FBL0M7QUFJRCxHQUxELENBS0UsTUFBTTtBQUNOLFdBQU8sSUFBUDtBQUNEOztBQUVELE1BQUlDLFNBQUosRUFBZTtBQUNiLFFBQUk7QUFBQTs7QUFDRkMsTUFBQUEsU0FBUzs7QUFDVEssc0JBQUlDLEtBQUosQ0FBVyxtQkFBa0JaLFVBQVcsdUJBQTlCLFlBQW9EUSxPQUFwRCwrQ0FBK0QsUUFBUyxRQUFPRCxJQUFLLEVBQTlGO0FBQ0QsS0FIRCxDQUdFLE9BQU9RLEdBQVAsRUFBWTtBQUNaLFlBQU0sSUFBSUMsS0FBSixDQUNILHFDQUFvQ1AsZUFBZ0IscUJBQW9CTSxHQUFHLENBQUNFLE9BQVEsRUFEakYsQ0FBTjtBQUdEO0FBQ0Y7O0FBRUQsU0FBT1osU0FBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiXG5pbXBvcnQgeyBmcyB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5pbXBvcnQgeyBpc1BhY2thZ2VDaGFuZ2VkIH0gZnJvbSAncGFja2FnZS1jaGFuZ2VkJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgUEtHX0hBU0hGSUxFX1JFTEFUSVZFX1BBVEggfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IGxvZyBmcm9tICcuLi9sb2dnZXInO1xuXG4vKipcbiAqIERldGVybWluZXMgaWYgZXh0ZW5zaW9ucyBoYXZlIGNoYW5nZWQsIGFuZCB1cGRhdGVzIGEgaGFzaCB0aGUgYHBhY2thZ2UuanNvbmAgaW4gYGFwcGl1bUhvbWVgIGlmIHNvLlxuICpcbiAqIElmIHRoZXkgaGF2ZSwgd2UgbmVlZCB0byBzeW5jIHRoZW0gd2l0aCB0aGUgYGV4dGVuc2lvbnMueWFtbGAgbWFuaWZlc3QuXG4gKlxuICogX1dhcm5pbmc6IHRoaXMgbWFrZXMgYSBibG9ja2luZyBjYWxsIHRvIGB3cml0ZUZpbGVTeW5jYC5fXG4gKiBAcGFyYW0ge3N0cmluZ30gYXBwaXVtSG9tZVxuICogQHJldHVybnMge1Byb21pc2U8Ym9vbGVhbj59IGB0cnVlYCBpZiBgcGFja2FnZS5qc29uYCBgYXBwaXVtSG9tZWAgY2hhbmdlZFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcGFja2FnZURpZENoYW5nZSAoYXBwaXVtSG9tZSkge1xuICBjb25zdCBoYXNoRmlsZW5hbWUgPSBwYXRoLmpvaW4oYXBwaXVtSG9tZSwgUEtHX0hBU0hGSUxFX1JFTEFUSVZFX1BBVEgpO1xuXG4gIC8vIFhYWDogdGhlIHR5cGVzIGluIGBwYWNrYWdlLWNoYW5nZWRgIHNlZW0gdG8gYmUgd3JvbmcuXG5cbiAgLyoqIEB0eXBlIHtib29sZWFufSAqL1xuICBsZXQgaXNDaGFuZ2VkO1xuICAvKiogQHR5cGUgeygpID0+IHZvaWR9ICovXG4gIGxldCB3cml0ZUhhc2g7XG4gIC8qKiBAdHlwZSB7c3RyaW5nfSAqL1xuICBsZXQgaGFzaDtcbiAgLyoqIEB0eXBlIHtzdHJpbmd8dW5kZWZpbmVkfSAqL1xuICBsZXQgb2xkSGFzaDtcblxuICAvLyBmaXJzdCBta2RpcnAgdGhlIHRhcmdldCBkaXIuXG4gIGNvbnN0IGhhc2hGaWxlbmFtZURpciA9IHBhdGguZGlybmFtZShoYXNoRmlsZW5hbWUpO1xuICBsb2cuZGVidWcoYENyZWF0aW5nIGhhc2ggZmlsZSBkaXJlY3Rvcnk6ICR7aGFzaEZpbGVuYW1lRGlyfWApO1xuICB0cnkge1xuICAgIGF3YWl0IGZzLm1rZGlycChoYXNoRmlsZW5hbWVEaXIpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgQXBwaXVtIGNvdWxkIG5vdCBjcmVhdGUgdGhlIGRpcmVjdG9yeSBmb3IgaGFzaCBmaWxlOiAke2hhc2hGaWxlbmFtZURpcn0uIE9yaWdpbmFsIGVycm9yOiAke2Vyci5tZXNzYWdlfWAsXG4gICAgKTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgKHtpc0NoYW5nZWQsIHdyaXRlSGFzaCwgb2xkSGFzaCwgaGFzaH0gPSBhd2FpdCBpc1BhY2thZ2VDaGFuZ2VkKHtcbiAgICAgIGN3ZDogYXBwaXVtSG9tZSxcbiAgICAgIGhhc2hGaWxlbmFtZTogUEtHX0hBU0hGSUxFX1JFTEFUSVZFX1BBVEgsXG4gICAgfSkpO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGlmIChpc0NoYW5nZWQpIHtcbiAgICB0cnkge1xuICAgICAgd3JpdGVIYXNoKCk7XG4gICAgICBsb2cuZGVidWcoYFVwZGF0ZWQgaGFzaCBvZiAke2FwcGl1bUhvbWV9L3BhY2thZ2UuanNvbiBmcm9tOiAke29sZEhhc2ggPz8gJyhub25lKSd9IHRvOiAke2hhc2h9YCk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBBcHBpdW0gY291bGQgbm90IHdyaXRlIGhhc2ggZmlsZTogJHtoYXNoRmlsZW5hbWVEaXJ9LiBPcmlnaW5hbCBlcnJvcjogJHtlcnIubWVzc2FnZX1gLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gaXNDaGFuZ2VkO1xufVxuIl19
@@ -0,0 +1,62 @@
1
+ /**
2
+ * @extends {ExtensionConfig<PluginType>}
3
+ */
4
+ export class PluginConfig extends ExtensionConfig<"plugin"> {
5
+ /**
6
+ * A mapping of {@link Manifest} instances to {@link PluginConfig} instances.
7
+ *
8
+ * `Manifest` and {@link ExtensionConfig} have a one-to-many relationship; each `Manifest` should be associated with a `DriverConfig` and a `PluginConfig`; no more, no less.
9
+ *
10
+ * This variable tracks the `Manifest`-to-`PluginConfig` portion.
11
+ *
12
+ * @type {WeakMap<Manifest,PluginConfig>}
13
+ * @private
14
+ */
15
+ private static _instances;
16
+ /**
17
+ * Creates a new {@link PluginConfig} instance for a {@link Manifest} instance.
18
+ *
19
+ * @param {Manifest} manifest
20
+ * @param {PluginConfigOptions} [opts]
21
+ * @throws If `manifest` already associated with a `PluginConfig`
22
+ * @returns {PluginConfig}
23
+ */
24
+ static create(manifest: Manifest, { extData, logFn }?: PluginConfigOptions | undefined): PluginConfig;
25
+ /**
26
+ * Returns a PluginConfig associated with a Manifest
27
+ * @param {Manifest} manifest
28
+ * @returns {PluginConfig|undefined}
29
+ */
30
+ static getInstance(manifest: Manifest): PluginConfig | undefined;
31
+ /**
32
+ * Call {@link PluginConfig.create} instead.
33
+ *
34
+ * Just calls the superclass' constructor with the correct extension type
35
+ * @private
36
+ * @param {Manifest} manifest - IO object
37
+ * @param {PluginConfigOptions} [opts]
38
+ */
39
+ private constructor();
40
+ /**
41
+ *
42
+ * @param {(keyof PluginRecord)[]} activeNames
43
+ * @returns {void}
44
+ */
45
+ print(activeNames: (keyof PluginRecord)[]): void;
46
+ }
47
+ export type PluginConfigOptions = {
48
+ /**
49
+ * - Optional logging function
50
+ */
51
+ logFn?: import("./extension-config").ExtensionLogFn | undefined;
52
+ /**
53
+ * - Extension data
54
+ */
55
+ extData?: import("../../types").PluginRecord | undefined;
56
+ };
57
+ export type PluginRecord = import('../../types/appium-manifest').PluginRecord;
58
+ export type PluginType = import('../../types').PluginType;
59
+ export type PluginMetadata = import('../../types/external-manifest').ExtMetadata<PluginType>;
60
+ export type Manifest = import('./manifest').Manifest;
61
+ import { ExtensionConfig } from "./extension-config";
62
+ //# sourceMappingURL=plugin-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-config.d.ts","sourceRoot":"","sources":["../../../lib/extension/plugin-config.js"],"names":[],"mappings":"AAMA;;GAEG;AACH;IAEE;;;;;;;;;OASG;IACF,0BAAkC;IAkBlC;;;;;;;OAOG;IACH,wBALW,QAAQ,yDAGN,YAAY,CASxB;IAED;;;;QAII;IACJ,6BAHY,QAAQ,GACN,YAAY,GAAC,SAAS,CAInC;IAxCD;;;;;;;MAOE;IACF,sBAMC;IAqCD;;;;MAIE;IACF,mBAHU,CAAC,MAAM,YAAY,CAAC,EAAE,GACpB,IAAI,CAoBf;CACH;;;;;;;;;;;2BAUY,OAAO,6BAA6B,EAAE,YAAY;yBAClD,OAAO,aAAa,EAAE,UAAU;6BAChC,OAAO,+BAA+B,EAAE,WAAW,CAAC,UAAU,CAAC;uBAC/D,OAAO,YAAY,EAAE,QAAQ"}
@@ -84,4 +84,4 @@ class PluginConfig extends _extensionConfig.ExtensionConfig {
84
84
  }
85
85
 
86
86
  exports.PluginConfig = PluginConfig;
87
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9leHRlbnNpb24vcGx1Z2luLWNvbmZpZy5qcyJdLCJuYW1lcyI6WyJQbHVnaW5Db25maWciLCJFeHRlbnNpb25Db25maWciLCJfaW5zdGFuY2VzIiwiV2Vha01hcCIsImNvbnN0cnVjdG9yIiwibWFuaWZlc3QiLCJleHREYXRhIiwibG9nRm4iLCJQTFVHSU5fVFlQRSIsInZhbGlkYXRlIiwiY3JlYXRlIiwiaW5zdGFuY2UiLCJnZXRJbnN0YW5jZSIsIkVycm9yIiwiYXBwaXVtSG9tZSIsInNldCIsImdldCIsImV4dGVuc2lvbkRlc2MiLCJwbHVnaW5OYW1lIiwidmVyc2lvbiIsInByaW50IiwiYWN0aXZlTmFtZXMiLCJwbHVnaW5OYW1lcyIsIk9iamVjdCIsImtleXMiLCJpbnN0YWxsZWRFeHRlbnNpb25zIiwiXyIsImlzRW1wdHkiLCJsb2ciLCJpbmZvIiwicGx1Z2luRGF0YSIsInRvUGFpcnMiLCJhY3RpdmVUeHQiLCJpbmNsdWRlcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFLTyxNQUFNQSxZQUFOLFNBQTJCQyxnQ0FBM0IsQ0FBMkM7QUFZOUIsU0FBVkMsVUFBVSxHQUFHLElBQUlDLE9BQUosRUFBSDs7QUFVakJDLEVBQUFBLFdBQVcsQ0FBRUMsUUFBRixFQUFZO0FBQUNDLElBQUFBLE9BQUQ7QUFBVUMsSUFBQUE7QUFBVixNQUFtQixFQUEvQixFQUFtQztBQUM1QyxVQUFNQyxzQkFBTixFQUFtQkgsUUFBbkIsRUFBNkJFLEtBQTdCOztBQUVBLFFBQUlELE9BQUosRUFBYTtBQUNYLFdBQUtHLFFBQUwsQ0FBY0gsT0FBZDtBQUNEO0FBQ0Y7O0FBVVksU0FBTkksTUFBTSxDQUFFTCxRQUFGLEVBQVk7QUFBQ0MsSUFBQUEsT0FBRDtBQUFVQyxJQUFBQTtBQUFWLE1BQW1CLEVBQS9CLEVBQW1DO0FBQzlDLFVBQU1JLFFBQVEsR0FBRyxJQUFJWCxZQUFKLENBQWlCSyxRQUFqQixFQUEyQjtBQUFDRSxNQUFBQSxLQUFEO0FBQVFELE1BQUFBO0FBQVIsS0FBM0IsQ0FBakI7O0FBQ0EsUUFBSU4sWUFBWSxDQUFDWSxXQUFiLENBQXlCUCxRQUF6QixDQUFKLEVBQXdDO0FBQ3RDLFlBQU0sSUFBSVEsS0FBSixDQUFXLDZCQUE0QlIsUUFBUSxDQUFDUyxVQUFXLDZFQUEzRCxDQUFOO0FBQ0Q7O0FBQ0RkLElBQUFBLFlBQVksQ0FBQ0UsVUFBYixDQUF3QmEsR0FBeEIsQ0FBNEJWLFFBQTVCLEVBQXNDTSxRQUF0Qzs7QUFDQSxXQUFPQSxRQUFQO0FBQ0Q7O0FBT2lCLFNBQVhDLFdBQVcsQ0FBRVAsUUFBRixFQUFZO0FBQzVCLFdBQU9MLFlBQVksQ0FBQ0UsVUFBYixDQUF3QmMsR0FBeEIsQ0FBNEJYLFFBQTVCLENBQVA7QUFDRDs7QUFNRFksRUFBQUEsYUFBYSxDQUFFQyxVQUFGLEVBQWM7QUFBQ0MsSUFBQUE7QUFBRCxHQUFkLEVBQXlCO0FBQ3BDLFdBQVEsR0FBRUQsVUFBVyxJQUFHQyxPQUFRLEVBQWhDO0FBQ0Q7O0FBT0RDLEVBQUFBLEtBQUssQ0FBRUMsV0FBRixFQUFlO0FBQ2xCLFVBQU1DLFdBQVcsR0FBR0MsTUFBTSxDQUFDQyxJQUFQLENBQVksS0FBS0MsbUJBQWpCLENBQXBCOztBQUVBLFFBQUlDLGdCQUFFQyxPQUFGLENBQVVMLFdBQVYsQ0FBSixFQUE0QjtBQUMxQk0sc0JBQUlDLElBQUosQ0FBVSwwREFBRCxHQUNELGdEQURSOztBQUVBO0FBQ0Q7O0FBRURELG9CQUFJQyxJQUFKLENBQVUsb0JBQVY7O0FBQ0EsU0FBSyxNQUFNLENBQUNYLFVBQUQsRUFBYVksVUFBYixDQUFYLElBQXVDSixnQkFBRUssT0FBRixDQUFVLEtBQUtOLG1CQUFmLENBQXZDLEVBQTRFO0FBQzFFLFlBQU1PLFNBQVMsR0FBR04sZ0JBQUVPLFFBQUYsQ0FBV1osV0FBWCxFQUF3QkgsVUFBeEIsSUFBc0MsV0FBdEMsR0FBb0QsRUFBdEU7O0FBQ0FVLHNCQUFJQyxJQUFKLENBQVUsT0FBTSxLQUFLWixhQUFMLENBQW1CQyxVQUFuQixFQUErQlksVUFBL0IsQ0FBMkMsR0FBRUUsU0FBVSxFQUF2RTtBQUNEOztBQUVELFFBQUlOLGdCQUFFQyxPQUFGLENBQVVOLFdBQVYsQ0FBSixFQUE0QjtBQUMxQk8sc0JBQUlDLElBQUosQ0FBUyxvRkFBVDtBQUNEO0FBQ0Y7O0FBdkY4QyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHtFeHRlbnNpb25Db25maWd9IGZyb20gJy4vZXh0ZW5zaW9uLWNvbmZpZyc7XG5pbXBvcnQgbG9nIGZyb20gJy4uL2xvZ2dlcic7XG5pbXBvcnQge1BMVUdJTl9UWVBFfSBmcm9tICcuLi9jb25zdGFudHMnO1xuXG4vKipcbiAqIEBleHRlbmRzIHtFeHRlbnNpb25Db25maWc8UGx1Z2luVHlwZT59XG4gKi9cbmV4cG9ydCBjbGFzcyBQbHVnaW5Db25maWcgZXh0ZW5kcyBFeHRlbnNpb25Db25maWcge1xuXG4gIC8qKlxuICAgKiBBIG1hcHBpbmcgb2Yge0BsaW5rIE1hbmlmZXN0fSBpbnN0YW5jZXMgdG8ge0BsaW5rIFBsdWdpbkNvbmZpZ30gaW5zdGFuY2VzLlxuICAgKlxuICAgKiBgTWFuaWZlc3RgIGFuZCB7QGxpbmsgRXh0ZW5zaW9uQ29uZmlnfSBoYXZlIGEgb25lLXRvLW1hbnkgcmVsYXRpb25zaGlwOyBlYWNoIGBNYW5pZmVzdGAgc2hvdWxkIGJlIGFzc29jaWF0ZWQgd2l0aCBhIGBEcml2ZXJDb25maWdgIGFuZCBhIGBQbHVnaW5Db25maWdgOyBubyBtb3JlLCBubyBsZXNzLlxuICAgKlxuICAgKiBUaGlzIHZhcmlhYmxlIHRyYWNrcyB0aGUgYE1hbmlmZXN0YC10by1gUGx1Z2luQ29uZmlnYCBwb3J0aW9uLlxuICAgKlxuICAgKiBAdHlwZSB7V2Vha01hcDxNYW5pZmVzdCxQbHVnaW5Db25maWc+fVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgIHN0YXRpYyBfaW5zdGFuY2VzID0gbmV3IFdlYWtNYXAoKTtcblxuICAgLyoqXG4gICAqIENhbGwge0BsaW5rIFBsdWdpbkNvbmZpZy5jcmVhdGV9IGluc3RlYWQuXG4gICAqXG4gICAqIEp1c3QgY2FsbHMgdGhlIHN1cGVyY2xhc3MnIGNvbnN0cnVjdG9yIHdpdGggdGhlIGNvcnJlY3QgZXh0ZW5zaW9uIHR5cGVcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtpbXBvcnQoJy4vbWFuaWZlc3QnKS5NYW5pZmVzdH0gbWFuaWZlc3QgLSBJTyBvYmplY3RcbiAgICogQHBhcmFtIHtQbHVnaW5Db25maWdPcHRpb25zfSBbb3B0c11cbiAgICovXG4gICBjb25zdHJ1Y3RvciAobWFuaWZlc3QsIHtleHREYXRhLCBsb2dGbn0gPSB7fSkge1xuICAgICBzdXBlcihQTFVHSU5fVFlQRSwgbWFuaWZlc3QsIGxvZ0ZuKTtcblxuICAgICBpZiAoZXh0RGF0YSkge1xuICAgICAgIHRoaXMudmFsaWRhdGUoZXh0RGF0YSk7XG4gICAgIH1cbiAgIH1cblxuICAgLyoqXG4gICAgKiBDcmVhdGVzIGEgbmV3IHtAbGluayBQbHVnaW5Db25maWd9IGluc3RhbmNlIGZvciBhIHtAbGluayBNYW5pZmVzdH0gaW5zdGFuY2UuXG4gICAgKlxuICAgICogQHBhcmFtIHtNYW5pZmVzdH0gbWFuaWZlc3RcbiAgICAqIEBwYXJhbSB7UGx1Z2luQ29uZmlnT3B0aW9uc30gW29wdHNdXG4gICAgKiBAdGhyb3dzIElmIGBtYW5pZmVzdGAgYWxyZWFkeSBhc3NvY2lhdGVkIHdpdGggYSBgUGx1Z2luQ29uZmlnYFxuICAgICogQHJldHVybnMge1BsdWdpbkNvbmZpZ31cbiAgICAqL1xuICAgc3RhdGljIGNyZWF0ZSAobWFuaWZlc3QsIHtleHREYXRhLCBsb2dGbn0gPSB7fSkge1xuICAgICBjb25zdCBpbnN0YW5jZSA9IG5ldyBQbHVnaW5Db25maWcobWFuaWZlc3QsIHtsb2dGbiwgZXh0RGF0YX0pO1xuICAgICBpZiAoUGx1Z2luQ29uZmlnLmdldEluc3RhbmNlKG1hbmlmZXN0KSkge1xuICAgICAgIHRocm93IG5ldyBFcnJvcihgTWFuaWZlc3Qgd2l0aCBBUFBJVU1fSE9NRSAke21hbmlmZXN0LmFwcGl1bUhvbWV9IGFscmVhZHkgaGFzIGEgUGx1Z2luQ29uZmlnOyB1c2UgUGx1Z2luQ29uZmlnLmdldEluc3RhbmNlKCkgdG8gcmV0cmlldmUgaXQuYCk7XG4gICAgIH1cbiAgICAgUGx1Z2luQ29uZmlnLl9pbnN0YW5jZXMuc2V0KG1hbmlmZXN0LCBpbnN0YW5jZSk7XG4gICAgIHJldHVybiBpbnN0YW5jZTtcbiAgIH1cblxuICAgLyoqXG4gICAgICogUmV0dXJucyBhIFBsdWdpbkNvbmZpZyBhc3NvY2lhdGVkIHdpdGggYSBNYW5pZmVzdFxuICAgICAqIEBwYXJhbSB7TWFuaWZlc3R9IG1hbmlmZXN0XG4gICAgICogQHJldHVybnMge1BsdWdpbkNvbmZpZ3x1bmRlZmluZWR9XG4gICAgICovXG4gICBzdGF0aWMgZ2V0SW5zdGFuY2UgKG1hbmlmZXN0KSB7XG4gICAgIHJldHVybiBQbHVnaW5Db25maWcuX2luc3RhbmNlcy5nZXQobWFuaWZlc3QpO1xuICAgfVxuICAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwbHVnaW5OYW1lXG4gICAqIEBwYXJhbSB7UGx1Z2luRGF0YX0gcGx1Z2luRGF0YVxuICAgKiBAcmV0dXJucyB7c3RyaW5nfVxuICAgKi9cbiAgIGV4dGVuc2lvbkRlc2MgKHBsdWdpbk5hbWUsIHt2ZXJzaW9ufSkge1xuICAgICByZXR1cm4gYCR7cGx1Z2luTmFtZX1AJHt2ZXJzaW9ufWA7XG4gICB9XG5cbiAgIC8qKlxuICAgKlxuICAgKiBAcGFyYW0geyhrZXlvZiBpbXBvcnQoJy4vbWFuaWZlc3QnKS5FeHRSZWNvcmQ8UGx1Z2luVHlwZT4pW119IGFjdGl2ZU5hbWVzXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAgIHByaW50IChhY3RpdmVOYW1lcykge1xuICAgICBjb25zdCBwbHVnaW5OYW1lcyA9IE9iamVjdC5rZXlzKHRoaXMuaW5zdGFsbGVkRXh0ZW5zaW9ucyk7XG5cbiAgICAgaWYgKF8uaXNFbXB0eShwbHVnaW5OYW1lcykpIHtcbiAgICAgICBsb2cuaW5mbyhgTm8gcGx1Z2lucyBoYXZlIGJlZW4gaW5zdGFsbGVkLiBVc2UgdGhlIFwiYXBwaXVtIHBsdWdpblwiIGAgK1xuICAgICAgICAgICAgICAgJ2NvbW1hbmQgdG8gaW5zdGFsbCB0aGUgb25lKHMpIHlvdSB3YW50IHRvIHVzZS4nKTtcbiAgICAgICByZXR1cm47XG4gICAgIH1cblxuICAgICBsb2cuaW5mbyhgQXZhaWxhYmxlIHBsdWdpbnM6YCk7XG4gICAgIGZvciAoY29uc3QgW3BsdWdpbk5hbWUsIHBsdWdpbkRhdGFdIG9mIF8udG9QYWlycyh0aGlzLmluc3RhbGxlZEV4dGVuc2lvbnMpKSB7XG4gICAgICAgY29uc3QgYWN0aXZlVHh0ID0gXy5pbmNsdWRlcyhhY3RpdmVOYW1lcywgcGx1Z2luTmFtZSkgPyAnIChBQ1RJVkUpJyA6ICcnO1xuICAgICAgIGxvZy5pbmZvKGAgIC0gJHt0aGlzLmV4dGVuc2lvbkRlc2MocGx1Z2luTmFtZSwgcGx1Z2luRGF0YSl9JHthY3RpdmVUeHR9YCk7XG4gICAgIH1cblxuICAgICBpZiAoXy5pc0VtcHR5KGFjdGl2ZU5hbWVzKSkge1xuICAgICAgIGxvZy5pbmZvKCdObyBwbHVnaW5zIGFjdGl2YXRlZC4gVXNlIHRoZSAtLXVzZS1wbHVnaW5zIGZsYWcgd2l0aCBuYW1lcyBvZiBwbHVnaW5zIHRvIGFjdGl2YXRlJyk7XG4gICAgIH1cbiAgIH1cbn1cblxuLyoqXG4gKiBAdHlwZWRlZiBQbHVnaW5Db25maWdPcHRpb25zXG4gKiBAcHJvcGVydHkge2ltcG9ydCgnLi9leHRlbnNpb24tY29uZmlnJykuRXh0ZW5zaW9uTG9nRm59IFtsb2dGbl0gLSBPcHRpb25hbCBsb2dnaW5nIGZ1bmN0aW9uXG4gKiBAcHJvcGVydHkge2ltcG9ydCgnLi9tYW5pZmVzdCcpLkV4dFJlY29yZDxQbHVnaW5UeXBlPn0gW2V4dERhdGFdIC0gRXh0ZW5zaW9uIGRhdGFcbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJy4vbWFuaWZlc3QnKS5QbHVnaW5UeXBlfSBQbHVnaW5UeXBlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCcuL21hbmlmZXN0JykuRXh0RGF0YTxQbHVnaW5UeXBlPn0gUGx1Z2luRGF0YVxuICogQHR5cGVkZWYge2ltcG9ydCgnLi9tYW5pZmVzdCcpLk1hbmlmZXN0fSBNYW5pZmVzdFxuICovXG4iXX0=
87
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9leHRlbnNpb24vcGx1Z2luLWNvbmZpZy5qcyJdLCJuYW1lcyI6WyJQbHVnaW5Db25maWciLCJFeHRlbnNpb25Db25maWciLCJfaW5zdGFuY2VzIiwiV2Vha01hcCIsImNvbnN0cnVjdG9yIiwibWFuaWZlc3QiLCJleHREYXRhIiwibG9nRm4iLCJQTFVHSU5fVFlQRSIsInZhbGlkYXRlIiwiY3JlYXRlIiwiaW5zdGFuY2UiLCJnZXRJbnN0YW5jZSIsIkVycm9yIiwiYXBwaXVtSG9tZSIsInNldCIsImdldCIsImV4dGVuc2lvbkRlc2MiLCJwbHVnaW5OYW1lIiwidmVyc2lvbiIsInByaW50IiwiYWN0aXZlTmFtZXMiLCJwbHVnaW5OYW1lcyIsIk9iamVjdCIsImtleXMiLCJpbnN0YWxsZWRFeHRlbnNpb25zIiwiXyIsImlzRW1wdHkiLCJsb2ciLCJpbmZvIiwicGx1Z2luRGF0YSIsInRvUGFpcnMiLCJhY3RpdmVUeHQiLCJpbmNsdWRlcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFLTyxNQUFNQSxZQUFOLFNBQTJCQyxnQ0FBM0IsQ0FBMkM7QUFZOUIsU0FBVkMsVUFBVSxHQUFHLElBQUlDLE9BQUosRUFBSDs7QUFVakJDLEVBQUFBLFdBQVcsQ0FBRUMsUUFBRixFQUFZO0FBQUNDLElBQUFBLE9BQUQ7QUFBVUMsSUFBQUE7QUFBVixNQUFtQixFQUEvQixFQUFtQztBQUM1QyxVQUFNQyxzQkFBTixFQUFtQkgsUUFBbkIsRUFBNkJFLEtBQTdCOztBQUVBLFFBQUlELE9BQUosRUFBYTtBQUNYLFdBQUtHLFFBQUwsQ0FBY0gsT0FBZDtBQUNEO0FBQ0Y7O0FBVVksU0FBTkksTUFBTSxDQUFFTCxRQUFGLEVBQVk7QUFBQ0MsSUFBQUEsT0FBRDtBQUFVQyxJQUFBQTtBQUFWLE1BQW1CLEVBQS9CLEVBQW1DO0FBQzlDLFVBQU1JLFFBQVEsR0FBRyxJQUFJWCxZQUFKLENBQWlCSyxRQUFqQixFQUEyQjtBQUFDRSxNQUFBQSxLQUFEO0FBQVFELE1BQUFBO0FBQVIsS0FBM0IsQ0FBakI7O0FBQ0EsUUFBSU4sWUFBWSxDQUFDWSxXQUFiLENBQXlCUCxRQUF6QixDQUFKLEVBQXdDO0FBQ3RDLFlBQU0sSUFBSVEsS0FBSixDQUFXLDZCQUE0QlIsUUFBUSxDQUFDUyxVQUFXLDZFQUEzRCxDQUFOO0FBQ0Q7O0FBQ0RkLElBQUFBLFlBQVksQ0FBQ0UsVUFBYixDQUF3QmEsR0FBeEIsQ0FBNEJWLFFBQTVCLEVBQXNDTSxRQUF0Qzs7QUFDQSxXQUFPQSxRQUFQO0FBQ0Q7O0FBT2lCLFNBQVhDLFdBQVcsQ0FBRVAsUUFBRixFQUFZO0FBQzVCLFdBQU9MLFlBQVksQ0FBQ0UsVUFBYixDQUF3QmMsR0FBeEIsQ0FBNEJYLFFBQTVCLENBQVA7QUFDRDs7QUFPRFksRUFBQUEsYUFBYSxDQUFFQyxVQUFGLEVBQWM7QUFBQ0MsSUFBQUE7QUFBRCxHQUFkLEVBQXlCO0FBQ3BDLFdBQVEsR0FBRUQsVUFBVyxJQUFHQyxPQUFRLEVBQWhDO0FBQ0Q7O0FBT0RDLEVBQUFBLEtBQUssQ0FBRUMsV0FBRixFQUFlO0FBQ2xCLFVBQU1DLFdBQVcsR0FBR0MsTUFBTSxDQUFDQyxJQUFQLENBQVksS0FBS0MsbUJBQWpCLENBQXBCOztBQUVBLFFBQUlDLGdCQUFFQyxPQUFGLENBQVVMLFdBQVYsQ0FBSixFQUE0QjtBQUMxQk0sc0JBQUlDLElBQUosQ0FBVSwwREFBRCxHQUNELGdEQURSOztBQUVBO0FBQ0Q7O0FBRURELG9CQUFJQyxJQUFKLENBQVUsb0JBQVY7O0FBQ0EsU0FBSyxNQUFNLENBQUNYLFVBQUQsRUFBYVksVUFBYixDQUFYLElBQXVDSixnQkFBRUssT0FBRixDQUFVLEtBQUtOLG1CQUFmLENBQXZDLEVBQTRFO0FBQzFFLFlBQU1PLFNBQVMsR0FBR04sZ0JBQUVPLFFBQUYsQ0FBV1osV0FBWCxFQUF3QkgsVUFBeEIsSUFBc0MsV0FBdEMsR0FBb0QsRUFBdEU7O0FBQ0FVLHNCQUFJQyxJQUFKLENBQVUsT0FBTSxLQUFLWixhQUFMLENBQW1CQyxVQUFuQixFQUErQlksVUFBL0IsQ0FBMkMsR0FBRUUsU0FBVSxFQUF2RTtBQUNEOztBQUVELFFBQUlOLGdCQUFFQyxPQUFGLENBQVVOLFdBQVYsQ0FBSixFQUE0QjtBQUMxQk8sc0JBQUlDLElBQUosQ0FBUyxvRkFBVDtBQUNEO0FBQ0Y7O0FBeEY4QyIsInNvdXJjZXNDb250ZW50IjpbIlxuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7RXh0ZW5zaW9uQ29uZmlnfSBmcm9tICcuL2V4dGVuc2lvbi1jb25maWcnO1xuaW1wb3J0IGxvZyBmcm9tICcuLi9sb2dnZXInO1xuaW1wb3J0IHtQTFVHSU5fVFlQRX0gZnJvbSAnLi4vY29uc3RhbnRzJztcblxuLyoqXG4gKiBAZXh0ZW5kcyB7RXh0ZW5zaW9uQ29uZmlnPFBsdWdpblR5cGU+fVxuICovXG5leHBvcnQgY2xhc3MgUGx1Z2luQ29uZmlnIGV4dGVuZHMgRXh0ZW5zaW9uQ29uZmlnIHtcblxuICAvKipcbiAgICogQSBtYXBwaW5nIG9mIHtAbGluayBNYW5pZmVzdH0gaW5zdGFuY2VzIHRvIHtAbGluayBQbHVnaW5Db25maWd9IGluc3RhbmNlcy5cbiAgICpcbiAgICogYE1hbmlmZXN0YCBhbmQge0BsaW5rIEV4dGVuc2lvbkNvbmZpZ30gaGF2ZSBhIG9uZS10by1tYW55IHJlbGF0aW9uc2hpcDsgZWFjaCBgTWFuaWZlc3RgIHNob3VsZCBiZSBhc3NvY2lhdGVkIHdpdGggYSBgRHJpdmVyQ29uZmlnYCBhbmQgYSBgUGx1Z2luQ29uZmlnYDsgbm8gbW9yZSwgbm8gbGVzcy5cbiAgICpcbiAgICogVGhpcyB2YXJpYWJsZSB0cmFja3MgdGhlIGBNYW5pZmVzdGAtdG8tYFBsdWdpbkNvbmZpZ2AgcG9ydGlvbi5cbiAgICpcbiAgICogQHR5cGUge1dlYWtNYXA8TWFuaWZlc3QsUGx1Z2luQ29uZmlnPn1cbiAgICogQHByaXZhdGVcbiAgICovXG4gICBzdGF0aWMgX2luc3RhbmNlcyA9IG5ldyBXZWFrTWFwKCk7XG5cbiAgIC8qKlxuICAgKiBDYWxsIHtAbGluayBQbHVnaW5Db25maWcuY3JlYXRlfSBpbnN0ZWFkLlxuICAgKlxuICAgKiBKdXN0IGNhbGxzIHRoZSBzdXBlcmNsYXNzJyBjb25zdHJ1Y3RvciB3aXRoIHRoZSBjb3JyZWN0IGV4dGVuc2lvbiB0eXBlXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7TWFuaWZlc3R9IG1hbmlmZXN0IC0gSU8gb2JqZWN0XG4gICAqIEBwYXJhbSB7UGx1Z2luQ29uZmlnT3B0aW9uc30gW29wdHNdXG4gICAqL1xuICAgY29uc3RydWN0b3IgKG1hbmlmZXN0LCB7ZXh0RGF0YSwgbG9nRm59ID0ge30pIHtcbiAgICAgc3VwZXIoUExVR0lOX1RZUEUsIG1hbmlmZXN0LCBsb2dGbik7XG5cbiAgICAgaWYgKGV4dERhdGEpIHtcbiAgICAgICB0aGlzLnZhbGlkYXRlKGV4dERhdGEpO1xuICAgICB9XG4gICB9XG5cbiAgIC8qKlxuICAgICogQ3JlYXRlcyBhIG5ldyB7QGxpbmsgUGx1Z2luQ29uZmlnfSBpbnN0YW5jZSBmb3IgYSB7QGxpbmsgTWFuaWZlc3R9IGluc3RhbmNlLlxuICAgICpcbiAgICAqIEBwYXJhbSB7TWFuaWZlc3R9IG1hbmlmZXN0XG4gICAgKiBAcGFyYW0ge1BsdWdpbkNvbmZpZ09wdGlvbnN9IFtvcHRzXVxuICAgICogQHRocm93cyBJZiBgbWFuaWZlc3RgIGFscmVhZHkgYXNzb2NpYXRlZCB3aXRoIGEgYFBsdWdpbkNvbmZpZ2BcbiAgICAqIEByZXR1cm5zIHtQbHVnaW5Db25maWd9XG4gICAgKi9cbiAgIHN0YXRpYyBjcmVhdGUgKG1hbmlmZXN0LCB7ZXh0RGF0YSwgbG9nRm59ID0ge30pIHtcbiAgICAgY29uc3QgaW5zdGFuY2UgPSBuZXcgUGx1Z2luQ29uZmlnKG1hbmlmZXN0LCB7bG9nRm4sIGV4dERhdGF9KTtcbiAgICAgaWYgKFBsdWdpbkNvbmZpZy5nZXRJbnN0YW5jZShtYW5pZmVzdCkpIHtcbiAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE1hbmlmZXN0IHdpdGggQVBQSVVNX0hPTUUgJHttYW5pZmVzdC5hcHBpdW1Ib21lfSBhbHJlYWR5IGhhcyBhIFBsdWdpbkNvbmZpZzsgdXNlIFBsdWdpbkNvbmZpZy5nZXRJbnN0YW5jZSgpIHRvIHJldHJpZXZlIGl0LmApO1xuICAgICB9XG4gICAgIFBsdWdpbkNvbmZpZy5faW5zdGFuY2VzLnNldChtYW5pZmVzdCwgaW5zdGFuY2UpO1xuICAgICByZXR1cm4gaW5zdGFuY2U7XG4gICB9XG5cbiAgIC8qKlxuICAgICAqIFJldHVybnMgYSBQbHVnaW5Db25maWcgYXNzb2NpYXRlZCB3aXRoIGEgTWFuaWZlc3RcbiAgICAgKiBAcGFyYW0ge01hbmlmZXN0fSBtYW5pZmVzdFxuICAgICAqIEByZXR1cm5zIHtQbHVnaW5Db25maWd8dW5kZWZpbmVkfVxuICAgICAqL1xuICAgc3RhdGljIGdldEluc3RhbmNlIChtYW5pZmVzdCkge1xuICAgICByZXR1cm4gUGx1Z2luQ29uZmlnLl9pbnN0YW5jZXMuZ2V0KG1hbmlmZXN0KTtcbiAgIH1cblxuICAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwbHVnaW5OYW1lXG4gICAqIEBwYXJhbSB7aW1wb3J0KCcuLi8uLi90eXBlcy9hcHBpdW0tbWFuaWZlc3QnKS5FeHRNYW5pZmVzdDxQbHVnaW5UeXBlPn0gcGx1Z2luRGF0YVxuICAgKiBAcmV0dXJucyB7c3RyaW5nfVxuICAgKi9cbiAgIGV4dGVuc2lvbkRlc2MgKHBsdWdpbk5hbWUsIHt2ZXJzaW9ufSkge1xuICAgICByZXR1cm4gYCR7cGx1Z2luTmFtZX1AJHt2ZXJzaW9ufWA7XG4gICB9XG5cbiAgIC8qKlxuICAgKlxuICAgKiBAcGFyYW0geyhrZXlvZiBQbHVnaW5SZWNvcmQpW119IGFjdGl2ZU5hbWVzXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAgIHByaW50IChhY3RpdmVOYW1lcykge1xuICAgICBjb25zdCBwbHVnaW5OYW1lcyA9IE9iamVjdC5rZXlzKHRoaXMuaW5zdGFsbGVkRXh0ZW5zaW9ucyk7XG5cbiAgICAgaWYgKF8uaXNFbXB0eShwbHVnaW5OYW1lcykpIHtcbiAgICAgICBsb2cuaW5mbyhgTm8gcGx1Z2lucyBoYXZlIGJlZW4gaW5zdGFsbGVkLiBVc2UgdGhlIFwiYXBwaXVtIHBsdWdpblwiIGAgK1xuICAgICAgICAgICAgICAgJ2NvbW1hbmQgdG8gaW5zdGFsbCB0aGUgb25lKHMpIHlvdSB3YW50IHRvIHVzZS4nKTtcbiAgICAgICByZXR1cm47XG4gICAgIH1cblxuICAgICBsb2cuaW5mbyhgQXZhaWxhYmxlIHBsdWdpbnM6YCk7XG4gICAgIGZvciAoY29uc3QgW3BsdWdpbk5hbWUsIHBsdWdpbkRhdGFdIG9mIF8udG9QYWlycyh0aGlzLmluc3RhbGxlZEV4dGVuc2lvbnMpKSB7XG4gICAgICAgY29uc3QgYWN0aXZlVHh0ID0gXy5pbmNsdWRlcyhhY3RpdmVOYW1lcywgcGx1Z2luTmFtZSkgPyAnIChBQ1RJVkUpJyA6ICcnO1xuICAgICAgIGxvZy5pbmZvKGAgIC0gJHt0aGlzLmV4dGVuc2lvbkRlc2MocGx1Z2luTmFtZSwgcGx1Z2luRGF0YSl9JHthY3RpdmVUeHR9YCk7XG4gICAgIH1cblxuICAgICBpZiAoXy5pc0VtcHR5KGFjdGl2ZU5hbWVzKSkge1xuICAgICAgIGxvZy5pbmZvKCdObyBwbHVnaW5zIGFjdGl2YXRlZC4gVXNlIHRoZSAtLXVzZS1wbHVnaW5zIGZsYWcgd2l0aCBuYW1lcyBvZiBwbHVnaW5zIHRvIGFjdGl2YXRlJyk7XG4gICAgIH1cbiAgIH1cbn1cblxuLyoqXG4gKiBAdHlwZWRlZiBQbHVnaW5Db25maWdPcHRpb25zXG4gKiBAcHJvcGVydHkge2ltcG9ydCgnLi9leHRlbnNpb24tY29uZmlnJykuRXh0ZW5zaW9uTG9nRm59IFtsb2dGbl0gLSBPcHRpb25hbCBsb2dnaW5nIGZ1bmN0aW9uXG4gKiBAcHJvcGVydHkge2ltcG9ydCgnLi4vLi4vdHlwZXMvYXBwaXVtLW1hbmlmZXN0JykuUGx1Z2luUmVjb3JkfSBbZXh0RGF0YV0gLSBFeHRlbnNpb24gZGF0YVxuICovXG5cblxuLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCcuLi8uLi90eXBlcy9hcHBpdW0tbWFuaWZlc3QnKS5QbHVnaW5SZWNvcmR9IFBsdWdpblJlY29yZFxuICogQHR5cGVkZWYge2ltcG9ydCgnLi4vLi4vdHlwZXMnKS5QbHVnaW5UeXBlfSBQbHVnaW5UeXBlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCcuLi8uLi90eXBlcy9leHRlcm5hbC1tYW5pZmVzdCcpLkV4dE1ldGFkYXRhPFBsdWdpblR5cGU+fSBQbHVnaW5NZXRhZGF0YVxuICogQHR5cGVkZWYge2ltcG9ydCgnLi9tYW5pZmVzdCcpLk1hbmlmZXN0fSBNYW5pZmVzdFxuICovXG4iXX0=
@@ -0,0 +1,10 @@
1
+ export default registerNode;
2
+ /**
3
+ * Registers a new node with a selenium grid
4
+ * @param {string|object} data - Path or object representing selenium grid node config file. If a `string`, all subsequent arguments are required!
5
+ * @param {string} [addr] - Bind to this address
6
+ * @param {number} [port] - Bind to this port
7
+ * @param {string} [basePath] - Base path for the grid
8
+ */
9
+ declare function registerNode(data: string | object, addr?: string | undefined, port?: number | undefined, basePath?: string | undefined): Promise<void>;
10
+ //# sourceMappingURL=grid-register.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grid-register.d.ts","sourceRoot":"","sources":["../../lib/grid-register.js"],"names":[],"mappings":";AAWA;;;;;;GAMG;AACH,oCALW,MAAM,GAAC,MAAM,sGAwBvB"}
@@ -0,0 +1,3 @@
1
+ export default log;
2
+ declare let log: import("@appium/types").AppiumLogger;
3
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../lib/logger.js"],"names":[],"mappings":";AAGA,sDAAqC"}
@@ -0,0 +1,4 @@
1
+ export default init;
2
+ export function init(args: any): Promise<void>;
3
+ export function clear(): void;
4
+ //# sourceMappingURL=logsink.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logsink.d.ts","sourceRoot":"","sources":["../../lib/logsink.js"],"names":[],"mappings":";AA6LA,+CA0BC;AAED,8BAOC"}