botframework-directlinejs 0.15.10-master.a81fec7 → 0.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/directLine.js CHANGED
@@ -694,7 +694,7 @@ var DirectLine = exports.DirectLine = /*#__PURE__*/function () {
694
694
  if (customAgent) {
695
695
  clientAgent += "; ".concat(customAgent);
696
696
  }
697
- return "".concat(DIRECT_LINE_VERSION, " (").concat(clientAgent, " ").concat("0.15.10-master.a81fec7", ")");
697
+ return "".concat(DIRECT_LINE_VERSION, " (").concat(clientAgent, " ").concat("0.16.0", ")");
698
698
  }
699
699
  }, {
700
700
  key: "setUserId",
@@ -18,7 +18,6 @@ var _buffer = require("buffer");
18
18
  var _Observable = require("rxjs/Observable");
19
19
  var BFSE = _interopRequireWildcard(require("botframework-streaming"));
20
20
  var _createDeferred = _interopRequireDefault(require("./createDeferred"));
21
- var _crossFetch = _interopRequireDefault(require("cross-fetch"));
22
21
  var _directLine = require("./directLine");
23
22
  var _WebSocketClientWithNetworkInformation = _interopRequireDefault(require("./streaming/WebSocketClientWithNetworkInformation"));
24
23
  var _excluded = ["attachments"];
@@ -264,7 +263,7 @@ var DirectLineStreaming = exports.DirectLineStreaming = /*#__PURE__*/function ()
264
263
  case 5:
265
264
  _context3.prev = 5;
266
265
  _context3.next = 6;
267
- return (0, _crossFetch["default"])("".concat(this.domain, "/tokens/refresh"), {
266
+ return fetch("".concat(this.domain, "/tokens/refresh"), {
268
267
  method: 'POST',
269
268
  headers: this.commonHeaders()
270
269
  });
@@ -421,7 +420,7 @@ var DirectLineStreaming = exports.DirectLineStreaming = /*#__PURE__*/function ()
421
420
  case 0:
422
421
  media = attachment;
423
422
  _context5.next = 1;
424
- return (0, _crossFetch["default"])(media.contentUrl);
423
+ return fetch(media.contentUrl);
425
424
  case 1:
426
425
  res = _context5.sent;
427
426
  if (!res.ok) {
@@ -778,4 +777,4 @@ var DirectLineStreaming = exports.DirectLineStreaming = /*#__PURE__*/function ()
778
777
  }
779
778
  }]);
780
779
  }();
781
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfQmVoYXZpb3JTdWJqZWN0IiwicmVxdWlyZSIsIl9idWZmZXIiLCJfT2JzZXJ2YWJsZSIsIkJGU0UiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsIl9jcmVhdGVEZWZlcnJlZCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfY3Jvc3NGZXRjaCIsIl9kaXJlY3RMaW5lIiwiX1dlYlNvY2tldENsaWVudFdpdGhOZXR3b3JrSW5mb3JtYXRpb24iLCJfZXhjbHVkZWQiLCJlIiwidCIsIldlYWtNYXAiLCJyIiwibiIsIl9fZXNNb2R1bGUiLCJvIiwiaSIsImYiLCJfX3Byb3RvX18iLCJfdHlwZW9mIiwiaGFzIiwiZ2V0Iiwic2V0IiwiX3Q4IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJfY2xhc3NQcml2YXRlRmllbGRJbml0U3BlYyIsImEiLCJfY2hlY2tQcml2YXRlUmVkZWNsYXJhdGlvbiIsIlR5cGVFcnJvciIsIl9jbGFzc1ByaXZhdGVGaWVsZEdldCIsInMiLCJfYXNzZXJ0Q2xhc3NCcmFuZCIsIl9jbGFzc1ByaXZhdGVGaWVsZFNldCIsImFyZ3VtZW50cyIsImxlbmd0aCIsIkRJUkVDVF9MSU5FX1ZFUlNJT04iLCJNQVhfUkVUUllfQ09VTlQiLCJyZWZyZXNoVG9rZW5MaWZldGltZSIsInJlZnJlc2hUb2tlbkludGVydmFsIiwiU3RyZWFtSGFuZGxlciIsImMkIiwic3EiLCJfY2xhc3NDYWxsQ2hlY2syIiwiX2RlZmluZVByb3BlcnR5MiIsInN1YnNjcmliZXIiLCJjb25uZWN0aW9uU3RhdHVzJCIsInNob3VsZFF1ZXVlIiwiX2NyZWF0ZUNsYXNzMiIsImtleSIsInZhbHVlIiwic2V0U3Vic2NyaWJlciIsIl9wcm9jZXNzUmVxdWVzdCIsIl9hc3luY1RvR2VuZXJhdG9yMiIsIl9yZWdlbmVyYXRvciIsIm1hcmsiLCJfY2FsbGVlIiwicmVxdWVzdCIsImxvZ2dlciIsInN0cmVhbXMiLCJzdHJlYW0wIiwiYWN0aXZpdHlTZXRKc29uIiwiYWN0aXZpdHlTZXQiLCJhY3Rpdml0eSIsImF0dGFjaG1lbnRzIiwic3RyZWFtIiwiYXR0YWNobWVudCIsImRhdGFVcmkiLCJ3cmFwIiwiX2NvbnRleHQiLCJwcmV2IiwibmV4dCIsIl90b0NvbnN1bWFibGVBcnJheTIiLCJzaGlmdCIsInJlYWRBc1N0cmluZyIsInNlbnQiLCJKU09OIiwicGFyc2UiLCJhY3Rpdml0aWVzIiwiZXJyb3IiLCJFcnJvciIsImFicnVwdCIsIlN0cmVhbWluZ1Jlc3BvbnNlIiwiY3JlYXRlIiwicHVzaCIsImNvbnRlbnRUeXBlIiwiY29udGVudFVybCIsImFjdGl2aXR5UXVldWUiLCJzdG9wIiwicHJvY2Vzc1JlcXVlc3QiLCJfeCIsIl94MiIsImFwcGx5IiwiZmx1c2giLCJfdGhpcyIsImZvckVhY2giLCJlbmQiLCJjb21wbGV0ZSIsIl9uZXR3b3JrSW5mb3JtYXRpb24iLCJEaXJlY3RMaW5lU3RyZWFtaW5nIiwiZXhwb3J0cyIsIm9wdGlvbnMiLCJfdGhpczIiLCJCZWhhdmlvclN1YmplY3QiLCJDb25uZWN0aW9uU3RhdHVzIiwiVW5pbml0aWFsaXplZCIsIkFib3J0Q29udHJvbGxlciIsIm5ldHdvcmtJbmZvcm1hdGlvbiIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwidHlwZSIsImNvbnNvbGUiLCJ3YXJuIiwidG9rZW4iLCJyZWZyZXNoVG9rZW4iLCJFeHBpcmVkVG9rZW4iLCJkb21haW4iLCJjb252ZXJzYXRpb25JZCIsIl9ib3RBZ2VudCIsImdldEJvdEFnZW50IiwiYm90QWdlbnQiLCJxdWV1ZUFjdGl2aXRpZXMiLCJhY3Rpdml0eSQiLCJPYnNlcnZhYmxlIiwiX3JlZiIsIl9jYWxsZWUyIiwiX2NvbnRleHQyIiwiYWN0aXZpdHlTdWJzY3JpYmVyIiwidGhlU3RyZWFtSGFuZGxlciIsImNvbm5lY3REZWZlcnJlZCIsInJlc29sdmUiLCJfeDMiLCJzaGFyZSIsImNvbm5lY3RXaXRoUmV0cnlBc3luYyIsInJlY29ubmVjdCIsIl9yZWYyIiwiZ2V0VmFsdWUiLCJFbmRlZCIsIl9lbmRBYm9ydENvbnRyb2xsZXIiLCJhYm9ydCIsInN0cmVhbUNvbm5lY3Rpb24iLCJkaXNjb25uZWN0IiwiY29tbW9uSGVhZGVycyIsIkF1dGhvcml6YXRpb24iLCJjb25jYXQiLCJjdXN0b21BZ2VudCIsInVuZGVmaW5lZCIsImNsaWVudEFnZW50IiwiX3JlZnJlc2hUb2tlbiIsIl9jYWxsZWUzIiwiZmlyc3RDYWxsIiwicmV0cnlDb3VudCIsIm51bWJlck9mQXR0ZW1wdHMiLCJyZXMiLCJfeWllbGQkcmVzJGpzb24iLCJfYXJnczMiLCJfdCIsIl9jb250ZXh0MyIsIndhaXRVbnRpbE9ubGluZSIsInNpZ25hbCIsImFib3J0ZWQiLCJzbGVlcCIsImZldGNoIiwibWV0aG9kIiwiaGVhZGVycyIsIm9rIiwianNvbiIsInN0YXR1cyIsInN0YXR1c1RleHQiLCJtcyIsIl90aGlzMyIsIlByb21pc2UiLCJ0aW1lciIsInNldFRpbWVvdXQiLCJjbGVhclRpbWVvdXQiLCJvbmNlIiwicG9zdEFjdGl2aXR5IiwiX3RoaXM0IiwiRmFpbGVkVG9Db25uZWN0IiwicG9zdE1lc3NhZ2VXaXRoQXR0YWNobWVudHMiLCJyZXNwJCIsIl9yZWYzIiwiX2NhbGxlZTQiLCJyZXNwIiwibnVtYmVyT2ZTdHJlYW1zIiwiaWRTdHJpbmciLCJfSlNPTiRwYXJzZSIsImlkIiwiX3QyIiwiX2NvbnRleHQ0IiwiU3RyZWFtaW5nUmVxdWVzdCIsInNldEJvZHkiLCJzdHJpbmdpZnkiLCJzZW5kIiwic3RhdHVzQ29kZSIsIklkIiwiX3g0IiwibWVzc2FnZSIsIl90aGlzNSIsIm1lc3NhZ2VXaXRob3V0QXR0YWNobWVudHMiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMyIiwiaHR0cENvbnRlbnRMaXN0IiwiX2NhbGxlZTYiLCJhcnJheUJ1ZmZlcnMiLCJ1cmwiLCJhY3Rpdml0eVN0cmVhbSIsIl95aWVsZCRyZXNwJHN0cmVhbXMkIiwiX3Q1IiwiX2NvbnRleHQ2IiwiYWxsIiwibWFwIiwiX3JlZjUiLCJfY2FsbGVlNSIsIm1lZGlhIiwiX3QzIiwiX3Q0IiwiX2NvbnRleHQ1IiwiYXJyYXlCdWZmZXIiLCJfeDUiLCJfcmVmNiIsImJ1ZmZlciIsIkJ1ZmZlciIsImZyb20iLCJTdWJzY3JpYmFibGVTdHJlYW0iLCJ3cml0ZSIsImh0dHBDb250ZW50IiwiSHR0cENvbnRlbnQiLCJjb250ZW50TGVuZ3RoIiwiYWRkU3RyZWFtIiwicmVhZEFzSnNvbiIsIl93YWl0VW50aWxPbmxpbmUiLCJfY2FsbGVlNyIsIl90aGlzNiIsIl9jb250ZXh0NyIsInJlamVjdCIsImRvbmUiLCJzdWJzY3JpcHRpb24iLCJzdWJzY3JpYmUiLCJjcyIsIk9ubGluZSIsIl9zdWJzY3JpcHRpb24iLCJ1bnN1YnNjcmliZSIsIl9zdWJzY3JpcHRpb24yIiwiX2Nvbm5lY3RBc3luYyIsIl9jYWxsZWU5IiwiX3RoaXM3IiwicmUiLCJwYXJhbXMiLCJhYm9ydENvbnRyb2xsZXIiLCJ1cmxTZWFyY2hQYXJhbXMiLCJ3c1VybCIsIl9jb250ZXh0OSIsIlJlZ0V4cCIsInRlc3QiLCJVUkxTZWFyY2hQYXJhbXMiLCJ0b1N0cmluZyIsInJlcGxhY2UiLCJfcmVmNyIsIl9jYWxsZWU4IiwicmVzcG9uc2UiLCJyZXNwb25zZVN0cmluZyIsImNvbnZlcnNhdGlvbiIsIl90NiIsIl9jb250ZXh0OCIsIldlYlNvY2tldENsaWVudFdpdGhOZXR3b3JrSW5mb3JtYXRpb24iLCJkaXNjb25uZWN0aW9uSGFuZGxlciIsInJlcXVlc3RIYW5kbGVyIiwic3RyZWFtaW5nUmVxdWVzdCIsImNvbm5lY3QiLCJfeDYiLCJfeDciLCJjb25uZWN0QXN5bmMiLCJfY29ubmVjdFdpdGhSZXRyeUFzeW5jIiwiX2NhbGxlZTAiLCJudW1SZXRyaWVzIiwic3RhcnQiLCJfdDciLCJfY29udGV4dDAiLCJjcmVhdGVEZWZlcnJlZCIsInByb21pc2UiLCJDb25uZWN0aW5nIiwiRGF0ZSIsIm5vdyIsImdldFJldHJ5RGVsYXkiLCJNYXRoIiwiZmxvb3IiLCJyYW5kb20iXSwic291cmNlcyI6WyIuLi9zcmMvZGlyZWN0TGluZVN0cmVhbWluZy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBJbiBvcmRlciB0byBrZWVwIGZpbGUgc2l6ZSBkb3duLCBvbmx5IGltcG9ydCB0aGUgcGFydHMgb2YgcnhqcyB0aGF0IHdlIHVzZVxuXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzL0JlaGF2aW9yU3ViamVjdCc7XG5pbXBvcnQgeyBCdWZmZXIgfSBmcm9tICdidWZmZXInO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMvT2JzZXJ2YWJsZSc7XG5pbXBvcnQgeyBTdWJzY3JpYmVyIH0gZnJvbSAncnhqcy9TdWJzY3JpYmVyJztcbmltcG9ydCAqIGFzIEJGU0UgZnJvbSAnYm90ZnJhbWV3b3JrLXN0cmVhbWluZyc7XG5pbXBvcnQgY3JlYXRlRGVmZXJyZWQgZnJvbSAnLi9jcmVhdGVEZWZlcnJlZCc7XG5pbXBvcnQgZmV0Y2ggZnJvbSAnY3Jvc3MtZmV0Y2gnO1xuXG5pbXBvcnQgeyBBY3Rpdml0eSwgQ29ubmVjdGlvblN0YXR1cywgQ29udmVyc2F0aW9uLCBEaXJlY3RMaW5lLCBJQm90Q29ubmVjdGlvbiwgTWVkaWEsIE1lc3NhZ2UgfSBmcm9tICcuL2RpcmVjdExpbmUnO1xuaW1wb3J0IFdlYlNvY2tldENsaWVudFdpdGhOZXR3b3JrSW5mb3JtYXRpb24gZnJvbSAnLi9zdHJlYW1pbmcvV2ViU29ja2V0Q2xpZW50V2l0aE5ldHdvcmtJbmZvcm1hdGlvbic7XG5pbXBvcnQgdHlwZSB7IERlZmVycmVkIH0gZnJvbSAnLi9jcmVhdGVEZWZlcnJlZCc7XG5cbmNvbnN0IERJUkVDVF9MSU5FX1ZFUlNJT04gPSAnRGlyZWN0TGluZS8zLjAnO1xuY29uc3QgTUFYX1JFVFJZX0NPVU5UID0gMztcbmNvbnN0IHJlZnJlc2hUb2tlbkxpZmV0aW1lID0gMzAgKiA2MCAqIDEwMDA7XG4vL2NvbnN0IHJlZnJlc2hUb2tlbkxpZmV0aW1lID0gNTAwMDtcbi8vIGNvbnN0IHRpbWVvdXQgPSAyMCAqIDEwMDA7XG5jb25zdCByZWZyZXNoVG9rZW5JbnRlcnZhbCA9IHJlZnJlc2hUb2tlbkxpZmV0aW1lIC8gMjtcblxuaW50ZXJmYWNlIERpcmVjdExpbmVTdHJlYW1pbmdPcHRpb25zIHtcbiAgdG9rZW46IHN0cmluZztcbiAgY29udmVyc2F0aW9uSWQ/OiBzdHJpbmc7XG4gIGRvbWFpbjogc3RyaW5nO1xuICAvLyBBdHRhY2hlZCB0byBhbGwgcmVxdWVzdHMgdG8gaWRlbnRpZnkgcmVxdWVzdGluZyBhZ2VudC5cbiAgYm90QWdlbnQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIFtgTmV0d29ya0luZm9ybWF0aW9uYCBBUEldKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9OZXR3b3JrX0luZm9ybWF0aW9uX0FQSSkuXG4gICAqIFdoZW4gdGhlIGBOZXR3b3JrSW5mb3JtYXRpb25gIGRldGVjdCBuZXR3b3JrIGNoYW5nZXMgb3Igb2ZmbGluZSwgaXQgd2lsbCBkaXNjb25uZWN0IHRoZSBXZWIgU29ja2V0IGFuZCByZWNvbm5lY3QgaXQuXG4gICAqL1xuICBuZXR3b3JrSW5mb3JtYXRpb24/OiBOZXR3b3JrSW5mb3JtYXRpb247XG59XG5cbmNsYXNzIFN0cmVhbUhhbmRsZXIgaW1wbGVtZW50cyBCRlNFLlJlcXVlc3RIYW5kbGVyIHtcbiAgcHJpdmF0ZSBjb25uZWN0aW9uU3RhdHVzJDtcbiAgcHJpdmF0ZSBzdWJzY3JpYmVyOiBTdWJzY3JpYmVyPEFjdGl2aXR5PjtcbiAgcHJpdmF0ZSBzaG91bGRRdWV1ZTogKCkgPT4gYm9vbGVhbjtcbiAgcHJpdmF0ZSBhY3Rpdml0eVF1ZXVlOiBBcnJheTxBY3Rpdml0eT4gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihzOiBTdWJzY3JpYmVyPEFjdGl2aXR5PiwgYyQ6IE9ic2VydmFibGU8Q29ubmVjdGlvblN0YXR1cz4sIHNxOiAoKSA9PiBib29sZWFuKSB7XG4gICAgdGhpcy5zdWJzY3JpYmVyID0gcztcbiAgICB0aGlzLmNvbm5lY3Rpb25TdGF0dXMkID0gYyQ7XG4gICAgdGhpcy5zaG91bGRRdWV1ZSA9IHNxO1xuICB9XG5cbiAgcHVibGljIHNldFN1YnNjcmliZXIoczogU3Vic2NyaWJlcjxBY3Rpdml0eT4pIHtcbiAgICB0aGlzLnN1YnNjcmliZXIgPSBzO1xuICB9XG5cbiAgYXN5bmMgcHJvY2Vzc1JlcXVlc3QocmVxdWVzdDogQkZTRS5JUmVjZWl2ZVJlcXVlc3QsIGxvZ2dlcj86IGFueSk6IFByb21pc2U8QkZTRS5TdHJlYW1pbmdSZXNwb25zZT4ge1xuICAgIGNvbnN0IHN0cmVhbXMgPSBbLi4ucmVxdWVzdC5zdHJlYW1zXTtcbiAgICBjb25zdCBzdHJlYW0wID0gc3RyZWFtcy5zaGlmdCgpO1xuICAgIGNvbnN0IGFjdGl2aXR5U2V0SnNvbiA9IGF3YWl0IHN0cmVhbTAucmVhZEFzU3RyaW5nKCk7XG4gICAgY29uc3QgYWN0aXZpdHlTZXQgPSBKU09OLnBhcnNlKGFjdGl2aXR5U2V0SnNvbik7XG5cbiAgICBpZiAoYWN0aXZpdHlTZXQuYWN0aXZpdGllcy5sZW5ndGggIT09IDEpIHtcbiAgICAgIC8vIE9ubHkgb25lIGFjdGl2aXR5IGlzIGV4cGVjdGVkIGluIGEgc2V0IGluIHN0cmVhbWluZ1xuICAgICAgdGhpcy5zdWJzY3JpYmVyLmVycm9yKG5ldyBFcnJvcigndGhlcmUgc2hvdWxkIGJlIGV4YWN0bHkgb25lIGFjdGl2aXR5JykpO1xuICAgICAgcmV0dXJuIEJGU0UuU3RyZWFtaW5nUmVzcG9uc2UuY3JlYXRlKDUwMCk7XG4gICAgfVxuXG4gICAgY29uc3QgYWN0aXZpdHkgPSBhY3Rpdml0eVNldC5hY3Rpdml0aWVzWzBdO1xuXG4gICAgaWYgKHN0cmVhbXMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgYXR0YWNobWVudHMgPSBbLi4uYWN0aXZpdHkuYXR0YWNobWVudHNdO1xuXG4gICAgICBsZXQgc3RyZWFtOiBCRlNFLkNvbnRlbnRTdHJlYW07XG4gICAgICB3aGlsZSAoKHN0cmVhbSA9IHN0cmVhbXMuc2hpZnQoKSkpIHtcbiAgICAgICAgY29uc3QgYXR0YWNobWVudCA9IGF3YWl0IHN0cmVhbS5yZWFkQXNTdHJpbmcoKTtcbiAgICAgICAgY29uc3QgZGF0YVVyaSA9ICdkYXRhOnRleHQvcGxhaW47YmFzZTY0LCcgKyBhdHRhY2htZW50O1xuICAgICAgICBhdHRhY2htZW50cy5wdXNoKHsgY29udGVudFR5cGU6IHN0cmVhbS5jb250ZW50VHlwZSwgY29udGVudFVybDogZGF0YVVyaSB9KTtcbiAgICAgIH1cblxuICAgICAgYWN0aXZpdHkuYXR0YWNobWVudHMgPSBhdHRhY2htZW50cztcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zaG91bGRRdWV1ZSgpKSB7XG4gICAgICB0aGlzLmFjdGl2aXR5UXVldWUucHVzaChhY3Rpdml0eSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc3Vic2NyaWJlci5uZXh0KGFjdGl2aXR5KTtcbiAgICB9XG5cbiAgICByZXR1cm4gQkZTRS5TdHJlYW1pbmdSZXNwb25zZS5jcmVhdGUoMjAwKTtcbiAgfVxuXG4gIHB1YmxpYyBmbHVzaCgpIHtcbiAgICB0aGlzLmFjdGl2aXR5UXVldWUuZm9yRWFjaChhID0+IHRoaXMuc3Vic2NyaWJlci5uZXh0KGEpKTtcbiAgICB0aGlzLmFjdGl2aXR5UXVldWUgPSBbXTtcbiAgfVxuXG4gIHB1YmxpYyBlbmQoKSB7XG4gICAgdGhpcy5zdWJzY3JpYmVyLmNvbXBsZXRlKCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIERpcmVjdExpbmVTdHJlYW1pbmcgaW1wbGVtZW50cyBJQm90Q29ubmVjdGlvbiB7XG4gIHB1YmxpYyBjb25uZWN0aW9uU3RhdHVzJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoQ29ubmVjdGlvblN0YXR1cy5VbmluaXRpYWxpemVkKTtcbiAgcHVibGljIGFjdGl2aXR5JDogT2JzZXJ2YWJsZTxBY3Rpdml0eT47XG5cbiAgcHJpdmF0ZSBhY3Rpdml0eVN1YnNjcmliZXI6IFN1YnNjcmliZXI8QWN0aXZpdHk+O1xuICBwcml2YXRlIGNvbm5lY3REZWZlcnJlZDogRGVmZXJyZWQ8dm9pZD47XG4gIHByaXZhdGUgdGhlU3RyZWFtSGFuZGxlcjogU3RyZWFtSGFuZGxlcjtcblxuICBwcml2YXRlIGRvbWFpbjogc3RyaW5nO1xuXG4gIHByaXZhdGUgY29udmVyc2F0aW9uSWQ6IHN0cmluZztcbiAgcHJpdmF0ZSB0b2tlbjogc3RyaW5nO1xuICBwcml2YXRlIHN0cmVhbUNvbm5lY3Rpb246IEJGU0UuV2ViU29ja2V0Q2xpZW50O1xuICBwcml2YXRlIHF1ZXVlQWN0aXZpdGllczogYm9vbGVhbjtcblxuICBwcml2YXRlIF9ib3RBZ2VudCA9ICcnO1xuICBwcml2YXRlIF9lbmRBYm9ydENvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG5cbiAgI25ldHdvcmtJbmZvcm1hdGlvbjogTmV0d29ya0luZm9ybWF0aW9uIHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IERpcmVjdExpbmVTdHJlYW1pbmdPcHRpb25zKSB7XG4gICAgLy8gUmVjdGlmaWVzIGBvcHRpb25zLm5ldHdvcmtJbmZvcm1hdGlvbmAuXG4gICAgY29uc3QgbmV0d29ya0luZm9ybWF0aW9uID0gb3B0aW9ucz8ubmV0d29ya0luZm9ybWF0aW9uO1xuXG4gICAgaWYgKFxuICAgICAgdHlwZW9mIG5ldHdvcmtJbmZvcm1hdGlvbiA9PT0gJ3VuZGVmaW5lZCcgfHxcbiAgICAgICh0eXBlb2YgbmV0d29ya0luZm9ybWF0aW9uLmFkZEV2ZW50TGlzdGVuZXIgPT09ICdmdW5jdGlvbicgJiZcbiAgICAgICAgdHlwZW9mIG5ldHdvcmtJbmZvcm1hdGlvbi5yZW1vdmVFdmVudExpc3RlbmVyID09PSAnZnVuY3Rpb24nICYmXG4gICAgICAgIHR5cGVvZiBuZXR3b3JrSW5mb3JtYXRpb24udHlwZSA9PT0gJ3N0cmluZycpXG4gICAgKSB7XG4gICAgICB0aGlzLiNuZXR3b3JrSW5mb3JtYXRpb24gPSBuZXR3b3JrSW5mb3JtYXRpb247XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgJ2JvdGZyYW1ld29yay1kaXJlY3RsaW5lanM6IFwibmV0d29ya0luZm9ybWF0aW9uXCIgb3B0aW9uIHNwZWNpZmllZCBtdXN0IGJlIGEgYE5ldHdvcmtJbmZvcm1hdGlvbmAtbGlrZSBpbnN0YW5jZSBleHRlbmRpbmcgYEV2ZW50VGFyZ2V0YCBpbnRlcmZhY2Ugd2l0aCBhIGB0eXBlYCBwcm9wZXJ0eSByZXR1cm5pbmcgYSBzdHJpbmcuJ1xuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLnRva2VuID0gb3B0aW9ucy50b2tlbjtcblxuICAgIHRoaXMucmVmcmVzaFRva2VuKCkuY2F0Y2goKCkgPT4ge1xuICAgICAgdGhpcy5jb25uZWN0aW9uU3RhdHVzJC5uZXh0KENvbm5lY3Rpb25TdGF0dXMuRXhwaXJlZFRva2VuKTtcbiAgICB9KTtcblxuICAgIHRoaXMuZG9tYWluID0gb3B0aW9ucy5kb21haW47XG5cbiAgICBpZiAob3B0aW9ucy5jb252ZXJzYXRpb25JZCkge1xuICAgICAgdGhpcy5jb252ZXJzYXRpb25JZCA9IG9wdGlvbnMuY29udmVyc2F0aW9uSWQ7XG4gICAgfVxuXG4gICAgdGhpcy5fYm90QWdlbnQgPSB0aGlzLmdldEJvdEFnZW50KG9wdGlvbnMuYm90QWdlbnQpO1xuXG4gICAgdGhpcy5xdWV1ZUFjdGl2aXRpZXMgPSB0cnVlO1xuICAgIHRoaXMuYWN0aXZpdHkkID0gT2JzZXJ2YWJsZS5jcmVhdGUoYXN5bmMgKHN1YnNjcmliZXI6IFN1YnNjcmliZXI8QWN0aXZpdHk+KSA9PiB7XG4gICAgICB0aGlzLmFjdGl2aXR5U3Vic2NyaWJlciA9IHN1YnNjcmliZXI7XG4gICAgICB0aGlzLnRoZVN0cmVhbUhhbmRsZXIgPSBuZXcgU3RyZWFtSGFuZGxlcihzdWJzY3JpYmVyLCB0aGlzLmNvbm5lY3Rpb25TdGF0dXMkLCAoKSA9PiB0aGlzLnF1ZXVlQWN0aXZpdGllcyk7XG5cbiAgICAgIC8vIFJlc29sdmluZyBjb25uZWN0RGVmZXJyZWQgd2lsbCBraWNrLW9mZiB0aGUgY29ubmVjdGlvbi5cbiAgICAgIHRoaXMuY29ubmVjdERlZmVycmVkLnJlc29sdmUoKTtcbiAgICB9KS5zaGFyZSgpO1xuXG4gICAgLy8gY29ubmVjdFdpdGhSZXRyeUFzeW5jKCkgd2lsbCBjcmVhdGUgdGhlIGNvbm5lY3REZWZlcnJlZCBvYmplY3QgcmVxdWlyZWQgaW4gYWN0aXZpdHkkLlxuICAgIHRoaXMuY29ubmVjdFdpdGhSZXRyeUFzeW5jKCk7XG4gIH1cblxuICBwdWJsaWMgcmVjb25uZWN0KHsgY29udmVyc2F0aW9uSWQsIHRva2VuIH06IENvbnZlcnNhdGlvbikge1xuICAgIGlmICh0aGlzLmNvbm5lY3Rpb25TdGF0dXMkLmdldFZhbHVlKCkgPT09IENvbm5lY3Rpb25TdGF0dXMuRW5kZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ29ubmVjdGlvbiBoYXMgZW5kZWQuJyk7XG4gICAgfVxuXG4gICAgdGhpcy5jb252ZXJzYXRpb25JZCA9IGNvbnZlcnNhdGlvbklkO1xuICAgIHRoaXMudG9rZW4gPSB0b2tlbjtcblxuICAgIHRoaXMuY29ubmVjdERlZmVycmVkLnJlc29sdmUoKTtcbiAgfVxuXG4gIGVuZCgpIHtcbiAgICAvLyBPbmNlIGVuZCgpIGlzIGNhbGxlZCwgbm8gcmVjb25uZWN0aW9uIGNhbiBiZSBtYWRlLlxuICAgIHRoaXMuX2VuZEFib3J0Q29udHJvbGxlci5hYm9ydCgpO1xuXG4gICAgdGhpcy5hY3Rpdml0eVN1YnNjcmliZXIuY29tcGxldGUoKTtcblxuICAgIHRoaXMuY29ubmVjdGlvblN0YXR1cyQubmV4dChDb25uZWN0aW9uU3RhdHVzLkVuZGVkKTtcbiAgICB0aGlzLmNvbm5lY3Rpb25TdGF0dXMkLmNvbXBsZXRlKCk7XG5cbiAgICB0aGlzLnN0cmVhbUNvbm5lY3Rpb24uZGlzY29ubmVjdCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb21tb25IZWFkZXJzKCkge1xuICAgIHJldHVybiB7XG4gICAgICBBdXRob3JpemF0aW9uOiBgQmVhcmVyICR7dGhpcy50b2tlbn1gLFxuICAgICAgJ3gtbXMtYm90LWFnZW50JzogdGhpcy5fYm90QWdlbnRcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRCb3RBZ2VudChjdXN0b21BZ2VudDogc3RyaW5nID0gJycpOiBzdHJpbmcge1xuICAgIGxldCBjbGllbnRBZ2VudCA9ICdkaXJlY3RsaW5lU3RyZWFtaW5nJztcblxuICAgIGlmIChjdXN0b21BZ2VudCkge1xuICAgICAgY2xpZW50QWdlbnQgKz0gYDsgJHtjdXN0b21BZ2VudH1gO1xuICAgIH1cblxuICAgIHJldHVybiBgJHtESVJFQ1RfTElORV9WRVJTSU9OfSAoJHtjbGllbnRBZ2VudH0pYDtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcmVmcmVzaFRva2VuKGZpcnN0Q2FsbCA9IHRydWUsIHJldHJ5Q291bnQgPSAwKSB7XG4gICAgYXdhaXQgdGhpcy53YWl0VW50aWxPbmxpbmUoKTtcblxuICAgIGxldCBudW1iZXJPZkF0dGVtcHRzID0gMDtcbiAgICB3aGlsZSAobnVtYmVyT2ZBdHRlbXB0cyA8IE1BWF9SRVRSWV9DT1VOVCkge1xuICAgICAgaWYgKHRoaXMuX2VuZEFib3J0Q29udHJvbGxlci5zaWduYWwuYWJvcnRlZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIG51bWJlck9mQXR0ZW1wdHMrKztcbiAgICAgIGF3YWl0IHRoaXMuc2xlZXAocmVmcmVzaFRva2VuSW50ZXJ2YWwpO1xuXG4gICAgICBpZiAodGhpcy5fZW5kQWJvcnRDb250cm9sbGVyLnNpZ25hbC5hYm9ydGVkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgZmV0Y2goYCR7dGhpcy5kb21haW59L3Rva2Vucy9yZWZyZXNoYCwgeyBtZXRob2Q6ICdQT1NUJywgaGVhZGVyczogdGhpcy5jb21tb25IZWFkZXJzKCkgfSk7XG4gICAgICAgIGlmIChyZXMub2spIHtcbiAgICAgICAgICBudW1iZXJPZkF0dGVtcHRzID0gMDtcbiAgICAgICAgICBjb25zdCB7IHRva2VuIH0gPSBhd2FpdCByZXMuanNvbigpO1xuICAgICAgICAgIHRoaXMudG9rZW4gPSB0b2tlbjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAocmVzLnN0YXR1cyA9PT0gNDAzIHx8IHJlcy5zdGF0dXMgPT09IDQwMykge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihgRmF0YWwgZXJyb3Igd2hpbGUgcmVmcmVzaGluZyB0aGUgdG9rZW46ICR7cmVzLnN0YXR1c30gJHtyZXMuc3RhdHVzVGV4dH1gKTtcbiAgICAgICAgICAgIHRoaXMuc3RyZWFtQ29ubmVjdGlvbi5kaXNjb25uZWN0KCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgUmVmcmVzaCBhdHRlbXB0ICMke251bWJlck9mQXR0ZW1wdHN9IGZhaWxlZDogJHtyZXMuc3RhdHVzfSAke3Jlcy5zdGF0dXNUZXh0fWApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjb25zb2xlLndhcm4oYFJlZnJlc2ggYXR0ZW1wdCAjJHtudW1iZXJPZkF0dGVtcHRzfSB0aHJldyBhbiBleGNlcHRpb246ICR7ZX1gKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zb2xlLmVycm9yKCdSZXRyaWVzIGV4aGF1c3RlZCcpO1xuICAgIHRoaXMuc3RyZWFtQ29ubmVjdGlvbi5kaXNjb25uZWN0KCk7XG4gIH1cblxuICBwcml2YXRlIHNsZWVwKG1zOiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5fZW5kQWJvcnRDb250cm9sbGVyLnNpZ25hbC5hYm9ydGVkKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgY29uc3QgdGltZXIgPSBzZXRUaW1lb3V0KHJlc29sdmUsIG1zKTtcbiAgICAgIHRoaXMuX2VuZEFib3J0Q29udHJvbGxlci5zaWduYWwuYWRkRXZlbnRMaXN0ZW5lcignYWJvcnQnLCAoKSA9PiB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aW1lcik7XG4gICAgICAgIHJlc29sdmUoKTtcbiAgICAgIH0sIHsgb25jZTogdHJ1ZSB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHBvc3RBY3Rpdml0eShhY3Rpdml0eTogQWN0aXZpdHkpIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLmNvbm5lY3Rpb25TdGF0dXMkLnZhbHVlID09PSBDb25uZWN0aW9uU3RhdHVzLkVuZGVkIHx8XG4gICAgICB0aGlzLmNvbm5lY3Rpb25TdGF0dXMkLnZhbHVlID09PSBDb25uZWN0aW9uU3RhdHVzLkZhaWxlZFRvQ29ubmVjdFxuICAgICkge1xuICAgICAgcmV0dXJuIE9ic2VydmFibGUudGhyb3cobmV3IEVycm9yKCdDb25uZWN0aW9uIGlzIGNsb3NlZCcpKTtcbiAgICB9XG5cbiAgICBpZiAoYWN0aXZpdHkudHlwZSA9PT0gJ21lc3NhZ2UnICYmIGFjdGl2aXR5LmF0dGFjaG1lbnRzICYmIGFjdGl2aXR5LmF0dGFjaG1lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiB0aGlzLnBvc3RNZXNzYWdlV2l0aEF0dGFjaG1lbnRzKGFjdGl2aXR5KTtcbiAgICB9XG5cbiAgICBjb25zdCByZXNwJCA9IE9ic2VydmFibGUuY3JlYXRlKGFzeW5jIHN1YnNjcmliZXIgPT4ge1xuICAgICAgY29uc3QgcmVxdWVzdCA9IEJGU0UuU3RyZWFtaW5nUmVxdWVzdC5jcmVhdGUoXG4gICAgICAgICdQT1NUJyxcbiAgICAgICAgJy92My9kaXJlY3RsaW5lL2NvbnZlcnNhdGlvbnMvJyArIHRoaXMuY29udmVyc2F0aW9uSWQgKyAnL2FjdGl2aXRpZXMnXG4gICAgICApO1xuICAgICAgcmVxdWVzdC5zZXRCb2R5KEpTT04uc3RyaW5naWZ5KGFjdGl2aXR5KSk7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlc3AgPSBhd2FpdCB0aGlzLnN0cmVhbUNvbm5lY3Rpb24uc2VuZChyZXF1ZXN0KTtcbiAgICAgICAgaWYgKHJlc3Auc3RhdHVzQ29kZSAhPT0gMjAwKSB0aHJvdyBuZXcgRXJyb3IoJ1Bvc3RBY3Rpdml0eSByZXR1cm5lZCAnICsgcmVzcC5zdGF0dXNDb2RlKTtcbiAgICAgICAgY29uc3QgbnVtYmVyT2ZTdHJlYW1zID0gcmVzcC5zdHJlYW1zLmxlbmd0aDtcbiAgICAgICAgaWYgKG51bWJlck9mU3RyZWFtcyAhPT0gMSkgdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCBvbmUgc3RyZWFtIGJ1dCBnb3QgJyArIG51bWJlck9mU3RyZWFtcyk7XG4gICAgICAgIGNvbnN0IGlkU3RyaW5nID0gYXdhaXQgcmVzcC5zdHJlYW1zWzBdLnJlYWRBc1N0cmluZygpO1xuICAgICAgICBjb25zdCB7IElkOiBpZCB9ID0gSlNPTi5wYXJzZShpZFN0cmluZyk7XG4gICAgICAgIHN1YnNjcmliZXIubmV4dChpZCk7XG4gICAgICAgIHJldHVybiBzdWJzY3JpYmVyLmNvbXBsZXRlKCk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIC8vIElmIHRoZXJlIGlzIGEgbmV0d29yayBpc3N1ZSB0aGVuIGl0cyBoYW5kbGVkIGJ5XG4gICAgICAgIC8vIHRoZSBkaXNjb25uZWN0aW9uSGFuZGxlci4gRXZlcnl0aGluZyBlbHNlIGNhblxuICAgICAgICAvLyBiZSByZXRyaWVkXG4gICAgICAgIGNvbnNvbGUud2FybihlKTtcbiAgICAgICAgdGhpcy5zdHJlYW1Db25uZWN0aW9uLmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgcmV0dXJuIHN1YnNjcmliZXIuZXJyb3IoZSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3AkO1xuICB9XG5cbiAgcHJpdmF0ZSBwb3N0TWVzc2FnZVdpdGhBdHRhY2htZW50cyhtZXNzYWdlOiBNZXNzYWdlKSB7XG4gICAgY29uc3QgeyBhdHRhY2htZW50cywgLi4ubWVzc2FnZVdpdGhvdXRBdHRhY2htZW50cyB9ID0gbWVzc2FnZTtcblxuICAgIHJldHVybiBPYnNlcnZhYmxlLmNyZWF0ZShzdWJzY3JpYmVyID0+IHtcbiAgICAgIGNvbnN0IGh0dHBDb250ZW50TGlzdCA9IFtdO1xuICAgICAgKGFzeW5jICgpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBhcnJheUJ1ZmZlcnMgPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgICAgIGF0dGFjaG1lbnRzLm1hcChhc3luYyBhdHRhY2htZW50ID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgbWVkaWEgPSBhdHRhY2htZW50IGFzIE1lZGlhO1xuICAgICAgICAgICAgICBjb25zdCByZXMgPSBhd2FpdCBmZXRjaChtZWRpYS5jb250ZW50VXJsKTtcbiAgICAgICAgICAgICAgaWYgKHJlcy5vaykge1xuICAgICAgICAgICAgICAgIHJldHVybiB7IGFycmF5QnVmZmVyOiBhd2FpdCByZXMuYXJyYXlCdWZmZXIoKSwgbWVkaWEgfTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJy4uLicpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBhcnJheUJ1ZmZlcnMuZm9yRWFjaCgoeyBhcnJheUJ1ZmZlciwgbWVkaWEgfSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgYnVmZmVyID0gQnVmZmVyLmZyb20oYXJyYXlCdWZmZXIpO1xuICAgICAgICAgICAgY29uc3Qgc3RyZWFtID0gbmV3IEJGU0UuU3Vic2NyaWJhYmxlU3RyZWFtKCk7XG4gICAgICAgICAgICBzdHJlYW0ud3JpdGUoYnVmZmVyKTtcbiAgICAgICAgICAgIGNvbnN0IGh0dHBDb250ZW50ID0gbmV3IEJGU0UuSHR0cENvbnRlbnQoeyB0eXBlOiBtZWRpYS5jb250ZW50VHlwZSwgY29udGVudExlbmd0aDogYnVmZmVyLmxlbmd0aCB9LCBzdHJlYW0pO1xuICAgICAgICAgICAgaHR0cENvbnRlbnRMaXN0LnB1c2goaHR0cENvbnRlbnQpO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgY29uc3QgdXJsID0gYC92My9kaXJlY3RsaW5lL2NvbnZlcnNhdGlvbnMvJHt0aGlzLmNvbnZlcnNhdGlvbklkfS91c2Vycy8ke21lc3NhZ2VXaXRob3V0QXR0YWNobWVudHMuZnJvbS5pZH0vdXBsb2FkYDtcbiAgICAgICAgICBjb25zdCByZXF1ZXN0ID0gQkZTRS5TdHJlYW1pbmdSZXF1ZXN0LmNyZWF0ZSgnUFVUJywgdXJsKTtcbiAgICAgICAgICBjb25zdCBhY3Rpdml0eVN0cmVhbSA9IG5ldyBCRlNFLlN1YnNjcmliYWJsZVN0cmVhbSgpO1xuICAgICAgICAgIGFjdGl2aXR5U3RyZWFtLndyaXRlKEpTT04uc3RyaW5naWZ5KG1lc3NhZ2VXaXRob3V0QXR0YWNobWVudHMpLCAndXRmLTgnKTtcbiAgICAgICAgICByZXF1ZXN0LmFkZFN0cmVhbShcbiAgICAgICAgICAgIG5ldyBCRlNFLkh0dHBDb250ZW50KFxuICAgICAgICAgICAgICB7IHR5cGU6ICdhcHBsaWNhdGlvbi92bmQubWljcm9zb2Z0LmFjdGl2aXR5JywgY29udGVudExlbmd0aDogYWN0aXZpdHlTdHJlYW0ubGVuZ3RoIH0sXG4gICAgICAgICAgICAgIGFjdGl2aXR5U3RyZWFtXG4gICAgICAgICAgICApXG4gICAgICAgICAgKTtcbiAgICAgICAgICBodHRwQ29udGVudExpc3QuZm9yRWFjaChlID0+IHJlcXVlc3QuYWRkU3RyZWFtKGUpKTtcblxuICAgICAgICAgIGNvbnN0IHJlc3AgPSBhd2FpdCB0aGlzLnN0cmVhbUNvbm5lY3Rpb24uc2VuZChyZXF1ZXN0KTtcbiAgICAgICAgICBpZiAocmVzcC5zdHJlYW1zICYmIHJlc3Auc3RyZWFtcy5sZW5ndGggIT09IDEpIHtcbiAgICAgICAgICAgIHN1YnNjcmliZXIuZXJyb3IobmV3IEVycm9yKGBJbnZhbGlkIHN0cmVhbSBjb3VudCAke3Jlc3Auc3RyZWFtcy5sZW5ndGh9YCkpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCB7IElkOiBpZCB9ID0gYXdhaXQgcmVzcC5zdHJlYW1zWzBdLnJlYWRBc0pzb248eyBJZDogc3RyaW5nIH0+KCk7XG4gICAgICAgICAgICBzdWJzY3JpYmVyLm5leHQoaWQpO1xuICAgICAgICAgICAgc3Vic2NyaWJlci5jb21wbGV0ZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIHN1YnNjcmliZXIuZXJyb3IoZSk7XG4gICAgICAgIH1cbiAgICAgIH0pKCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHdhaXRVbnRpbE9ubGluZSgpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgbGV0IGRvbmUgPSBmYWxzZTtcbiAgICAgIGxldCBzdWJzY3JpcHRpb246IHsgdW5zdWJzY3JpYmUoKTogdm9pZCB9O1xuICAgICAgc3Vic2NyaXB0aW9uID0gdGhpcy5jb25uZWN0aW9uU3RhdHVzJC5zdWJzY3JpYmUoXG4gICAgICAgIGNzID0+IHtcbiAgICAgICAgICBpZiAoY3MgPT09IENvbm5lY3Rpb25TdGF0dXMuT25saW5lKSB7XG4gICAgICAgICAgICBkb25lID0gdHJ1ZTtcbiAgICAgICAgICAgIHN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgIHJldHVybiByZXNvbHZlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBlID0+IHtcbiAgICAgICAgICBkb25lID0gdHJ1ZTtcbiAgICAgICAgICBzdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgICB9XG4gICAgICApO1xuICAgICAgaWYgKGRvbmUpIHtcbiAgICAgICAgc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNvbm5lY3RBc3luYygpIHtcbiAgICBpZiAodGhpcy5fZW5kQWJvcnRDb250cm9sbGVyLnNpZ25hbC5hYm9ydGVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nvbm5lY3Rpb24gaGFzIGVuZGVkLicpO1xuICAgIH1cblxuICAgIGNvbnN0IHJlID0gbmV3IFJlZ0V4cCgnXmh0dHAocz8pJyk7XG5cbiAgICBpZiAoIXJlLnRlc3QodGhpcy5kb21haW4pKSB7XG4gICAgICB0aHJvdyAnRG9tYWluIG11c3QgYmVnaW4gd2l0aCBodHRwIG9yIGh0dHBzJztcbiAgICB9XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7IHRva2VuOiB0aGlzLnRva2VuIH07XG5cbiAgICBpZiAodGhpcy5jb252ZXJzYXRpb25JZCkge1xuICAgICAgcGFyYW1zWydjb252ZXJzYXRpb25JZCddID0gdGhpcy5jb252ZXJzYXRpb25JZDtcbiAgICB9XG5cbiAgICBjb25zdCBhYm9ydENvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gICAgY29uc3QgdXJsU2VhcmNoUGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyhwYXJhbXMpLnRvU3RyaW5nKCk7XG4gICAgY29uc3Qgd3NVcmwgPSBgJHt0aGlzLmRvbWFpbi5yZXBsYWNlKHJlLCAnd3MkMScpfS9jb252ZXJzYXRpb25zL2Nvbm5lY3Q/JHt1cmxTZWFyY2hQYXJhbXN9YDtcblxuICAgIC8vIFRoaXMgcHJvbWlzZSB3aWxsIHJlc29sdmUgd2hlbiBpdCBpcyBkaXNjb25uZWN0ZWQuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGlmICh0aGlzLl9lbmRBYm9ydENvbnRyb2xsZXIuc2lnbmFsLmFib3J0ZWQpIHtcbiAgICAgICAgICByZXR1cm4gcmVqZWN0KG5ldyBFcnJvcignQ29ubmVjdGlvbiBoYXMgZW5kZWQuJykpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zdHJlYW1Db25uZWN0aW9uID0gbmV3IFdlYlNvY2tldENsaWVudFdpdGhOZXR3b3JrSW5mb3JtYXRpb24oe1xuICAgICAgICAgIGRpc2Nvbm5lY3Rpb25IYW5kbGVyOiByZXNvbHZlLFxuICAgICAgICAgIG5ldHdvcmtJbmZvcm1hdGlvbjogdGhpcy4jbmV0d29ya0luZm9ybWF0aW9uLFxuICAgICAgICAgIHJlcXVlc3RIYW5kbGVyOiB7XG4gICAgICAgICAgICBwcm9jZXNzUmVxdWVzdDogc3RyZWFtaW5nUmVxdWVzdCA9PiB7XG4gICAgICAgICAgICAgIC8vIElmIGBzdHJlYW1Db25uZWN0aW9uYCBpcyBzdGlsbCBjdXJyZW50LCBhbGxvdyBjYWxsIHRvIGBwcm9jZXNzUmVxdWVzdCgpYCwgb3RoZXJ3aXNlLCBpZ25vcmUgY2FsbHMgdG8gYHByb2Nlc3NSZXF1ZXN0KClgLlxuICAgICAgICAgICAgICAvLyBUaGlzIHByZXZlbnRzIHpvbWJpZSBjb25uZWN0aW9ucyBmcm9tIHNlbmRpbmcgdXMgcmVxdWVzdHMuXG4gICAgICAgICAgICAgIGlmIChhYm9ydENvbnRyb2xsZXIuc2lnbmFsLmFib3J0ZWQpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBwcm9jZXNzIHN0cmVhbWluZyByZXF1ZXN0LCBgc3RyZWFtaW5nQ29ubmVjdGlvbmAgc2hvdWxkIGJlIGRpc2Nvbm5lY3RlZC4nKTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLnRoZVN0cmVhbUhhbmRsZXIucHJvY2Vzc1JlcXVlc3Qoc3RyZWFtaW5nUmVxdWVzdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICB1cmw6IHdzVXJsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMucXVldWVBY3Rpdml0aWVzID0gdHJ1ZTtcblxuICAgICAgICBhd2FpdCB0aGlzLnN0cmVhbUNvbm5lY3Rpb24uY29ubmVjdCgpO1xuXG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSBCRlNFLlN0cmVhbWluZ1JlcXVlc3QuY3JlYXRlKCdQT1NUJywgJy92My9kaXJlY3RsaW5lL2NvbnZlcnNhdGlvbnMnKTtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLnN0cmVhbUNvbm5lY3Rpb24uc2VuZChyZXF1ZXN0KTtcblxuICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzQ29kZSAhPT0gMjAwKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb25uZWN0aW9uIHJlc3BvbnNlIGNvZGUgJyArIHJlc3BvbnNlLnN0YXR1c0NvZGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJlc3BvbnNlLnN0cmVhbXMubGVuZ3RoICE9PSAxKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCAxIHN0cmVhbSBidXQgZ290ICcgKyByZXNwb25zZS5zdHJlYW1zLmxlbmd0aCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZXNwb25zZVN0cmluZyA9IGF3YWl0IHJlc3BvbnNlLnN0cmVhbXNbMF0ucmVhZEFzU3RyaW5nKCk7XG4gICAgICAgIGNvbnN0IGNvbnZlcnNhdGlvbiA9IEpTT04ucGFyc2UocmVzcG9uc2VTdHJpbmcpO1xuXG4gICAgICAgIHRoaXMuY29udmVyc2F0aW9uSWQgPSBjb252ZXJzYXRpb24uY29udmVyc2F0aW9uSWQ7XG4gICAgICAgIHRoaXMuY29ubmVjdGlvblN0YXR1cyQubmV4dChDb25uZWN0aW9uU3RhdHVzLk9ubGluZSk7XG5cbiAgICAgICAgLy8gV2FpdCB1bnRpbCBETCBjb25zdW1lcnMgaGF2ZSBoYWQgYSBjaGFuY2UgdG8gYmUgbm90aWZpZWRcbiAgICAgICAgLy8gb2YgdGhlIGNvbm5lY3Rpb24gc3RhdHVzIGNoYW5nZS5cbiAgICAgICAgLy8gVGhpcyBpcyBzcGVjaWZpYyB0byBSeEpTIGltcGxlbWVudGF0aW9uIG9mIG9ic2VydmFibGUsIHdoaWNoIGNhbGxpbmcgc3Vic2NyaWJlKCkgYWZ0ZXIgbmV4dCgpIHdpbGwgc3RpbGwgZ2V0IHRoZSB2YWx1ZS5cbiAgICAgICAgYXdhaXQgdGhpcy53YWl0VW50aWxPbmxpbmUoKTtcblxuICAgICAgICB0aGlzLnRoZVN0cmVhbUhhbmRsZXIuZmx1c2goKTtcbiAgICAgICAgdGhpcy5xdWV1ZUFjdGl2aXRpZXMgPSBmYWxzZTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgfVxuICAgIH0pLmZpbmFsbHkoKCkgPT4gYWJvcnRDb250cm9sbGVyLmFib3J0KCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjb25uZWN0V2l0aFJldHJ5QXN5bmMoKSB7XG4gICAgLy8gVGhpcyBmb3ItbG9vcCB3aWxsIGJyZWFrIHdoZW4gc29tZW9uZSBjYWxsIGVuZCgpIGFuZCBpdCB3aWxsIHNpZ25hbCBDb25uZWN0aW9uU3RhdHVzLkVuZGVkLlxuICAgIGZvciAoOzspIHtcbiAgICAgIC8vIENyZWF0ZSBhIG5ldyBzaWduYWwgYW5kIHdhaXQgZm9yIHNvbWVvbmUga2lja2luZyBvZmYgdGhlIGNvbm5lY3Rpb246XG4gICAgICAvLyAtIHN1YnNjcmliZSB0byBhY3Rpdml0eSQsIG9yO1xuICAgICAgLy8gLSByZXRyaWVzIGV4aGF1c3RlZCAoRmFpbGVkVG9Db25uZWN0KSwgdGhlbiwgc29tZW9uZSBjYWxsIHJlY29ubmVjdCgpXG4gICAgICBhd2FpdCAodGhpcy5jb25uZWN0RGVmZXJyZWQgPSBjcmVhdGVEZWZlcnJlZCgpKS5wcm9taXNlO1xuXG4gICAgICBsZXQgbnVtUmV0cmllcyA9IE1BWF9SRVRSWV9DT1VOVDtcblxuICAgICAgdGhpcy5jb25uZWN0aW9uU3RhdHVzJC5uZXh0KENvbm5lY3Rpb25TdGF0dXMuQ29ubmVjdGluZyk7XG5cbiAgICAgIHdoaWxlIChudW1SZXRyaWVzID4gMCkge1xuICAgICAgICBudW1SZXRyaWVzLS07XG5cbiAgICAgICAgaWYgKHRoaXMuX2VuZEFib3J0Q29udHJvbGxlci5zaWduYWwuYWJvcnRlZCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKTtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgIC8vIFRoaXMgcHJvbWlzZSB3aWxsIHJlamVjdC9yZXNvbHZlIHdoZW4gZGlzY29ubmVjdGVkLlxuICAgICAgICAgIGF3YWl0IHRoaXMuY29ubmVjdEFzeW5jKCk7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgIGlmICh0aGlzLl9lbmRBYm9ydENvbnRyb2xsZXIuc2lnbmFsLmFib3J0ZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSWYgc29tZW9uZSBjYWxsIGVuZCgpIHRvIGJyZWFrIHRoZSBjb25uZWN0aW9uLCB3ZSB3aWxsIG5ldmVyIGxpc3RlbiB0byBhbnkgcmVjb25uZWN0KCkuXG4gICAgICAgIGlmICh0aGlzLmNvbm5lY3Rpb25TdGF0dXMkLmdldFZhbHVlKCkgPT09IENvbm5lY3Rpb25TdGF0dXMuRW5kZWQpIHtcbiAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBvbmx5IHBsYWNlIHRoZSBsb29wIGluIHRoaXMgZnVuY3Rpb24gd2lsbCBiZSBicm9rZS5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBNYWtlIHN1cmUgd2UgZG9uJ3Qgc2lnbmFsIENvbm5lY3Rpb25TdGF0dXMuQ29ubmVjdGluZyB0d2ljZSBvciBtb3JlIHdpdGhvdXQgYW4gYWN0dWFsIGNvbm5lY3Rpb24uXG4gICAgICAgIC8vIFN1YnNlcXVlbnQgcmV0cmllcyBzaG91bGQgYmUgdHJhbnNwYXJlbnQuXG4gICAgICAgIGlmICh0aGlzLmNvbm5lY3Rpb25TdGF0dXMkLmdldFZhbHVlKCkgIT09IENvbm5lY3Rpb25TdGF0dXMuQ29ubmVjdGluZykge1xuICAgICAgICAgIHRoaXMuY29ubmVjdGlvblN0YXR1cyQubmV4dChDb25uZWN0aW9uU3RhdHVzLkNvbm5lY3RpbmcpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSWYgdGhlIGN1cnJlbnQgY29ubmVjdGlvbiBsYXN0ZWQgZm9yIG1vcmUgdGhhbiBhIG1pbnV0ZSwgdGhlIHByZXZpb3VzIGNvbm5lY3Rpb24gaXMgZ29vZCwgd2hpY2ggbWVhbnM6XG4gICAgICAgIC8vIC0gd2Ugc2hvdWxkIHJlc2V0IHRoZSByZXRyeSBjb3VudGVyLCBhbmQ7XG4gICAgICAgIC8vIC0gd2Ugc2hvdWxkIHJlY29ubmVjdCBpbW1lZGlhdGVseS5cbiAgICAgICAgaWYgKDYwMDAwIDwgRGF0ZS5ub3coKSAtIHN0YXJ0KSB7XG4gICAgICAgICAgbnVtUmV0cmllcyA9IE1BWF9SRVRSWV9DT1VOVDtcbiAgICAgICAgfSBlbHNlIGlmIChudW1SZXRyaWVzID4gMCkge1xuICAgICAgICAgIC8vIFNsZWVwIG9ubHkgaWYgd2UgYXJlIGRvaW5nIHJldHJ5LiBPdGhlcndpc2UsIHdlIGFyZSBnb2luZyB0byBicmVhayB0aGUgbG9vcCBhbmQgc2lnbmFsIEZhaWxlZFRvQ29ubmVjdC5cbiAgICAgICAgICBhd2FpdCB0aGlzLnNsZWVwKHRoaXMuZ2V0UmV0cnlEZWxheSgpKTtcblxuICAgICAgICAgIGlmICh0aGlzLl9lbmRBYm9ydENvbnRyb2xsZXIuc2lnbmFsLmFib3J0ZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gVE9ETzogW1RFU1RdIE1ha2Ugc3VyZSBGYWlsZWRUb0Nvbm5lY3QgaXMgcmVwb3J0ZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgbGFzdCBkaXNjb25uZWN0aW9uLCBzaG91bGQgYmUgbm8gZ2V0UmV0cnlEZWxheSgpLlxuICAgICAgLy8gRmFpbGVkIHRvIHJlY29ubmVjdCBhZnRlciBtdWx0aXBsZSByZXRyaWVzLlxuICAgICAgdGhpcy5jb25uZWN0aW9uU3RhdHVzJC5uZXh0KENvbm5lY3Rpb25TdGF0dXMuRmFpbGVkVG9Db25uZWN0KTtcbiAgICB9XG5cbiAgICAvLyBOb3RlOiBObyBjb2RlIHdpbGwgaGl0IHRoaXMgbGluZS5cbiAgfVxuXG4gIC8vIFJldHVybnMgdGhlIGRlbGF5IGR1cmF0aW9uIGluIG1pbGxpc2Vjb25kc1xuICBwcml2YXRlIGdldFJldHJ5RGVsYXkoKSB7XG4gICAgcmV0dXJuIE1hdGguZmxvb3IoMzAwMCArIE1hdGgucmFuZG9tKCkgKiAxMjAwMCk7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBRUEsSUFBQUEsZ0JBQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLE9BQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLFdBQUEsR0FBQUYsT0FBQTtBQUVBLElBQUFHLElBQUEsR0FBQUMsdUJBQUEsQ0FBQUosT0FBQTtBQUNBLElBQUFLLGVBQUEsR0FBQUMsc0JBQUEsQ0FBQU4sT0FBQTtBQUNBLElBQUFPLFdBQUEsR0FBQUQsc0JBQUEsQ0FBQU4sT0FBQTtBQUVBLElBQUFRLFdBQUEsR0FBQVIsT0FBQTtBQUNBLElBQUFTLHNDQUFBLEdBQUFILHNCQUFBLENBQUFOLE9BQUE7QUFBc0csSUFBQVUsU0FBQTtBQUFBLFNBQUFOLHdCQUFBTyxDQUFBLEVBQUFDLENBQUEsNkJBQUFDLE9BQUEsTUFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBVCx1QkFBQSxZQUFBQSx3QkFBQU8sQ0FBQSxFQUFBQyxDQUFBLFNBQUFBLENBQUEsSUFBQUQsQ0FBQSxJQUFBQSxDQUFBLENBQUFLLFVB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
780
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfQmVoYXZpb3JTdWJqZWN0IiwicmVxdWlyZSIsIl9idWZmZXIiLCJfT2JzZXJ2YWJsZSIsIkJGU0UiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsIl9jcmVhdGVEZWZlcnJlZCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfZGlyZWN0TGluZSIsIl9XZWJTb2NrZXRDbGllbnRXaXRoTmV0d29ya0luZm9ybWF0aW9uIiwiX2V4Y2x1ZGVkIiwiZSIsInQiLCJXZWFrTWFwIiwiciIsIm4iLCJfX2VzTW9kdWxlIiwibyIsImkiLCJmIiwiX19wcm90b19fIiwiX3R5cGVvZiIsImhhcyIsImdldCIsInNldCIsIl90OCIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiX2NsYXNzUHJpdmF0ZUZpZWxkSW5pdFNwZWMiLCJhIiwiX2NoZWNrUHJpdmF0ZVJlZGVjbGFyYXRpb24iLCJUeXBlRXJyb3IiLCJfY2xhc3NQcml2YXRlRmllbGRHZXQiLCJzIiwiX2Fzc2VydENsYXNzQnJhbmQiLCJfY2xhc3NQcml2YXRlRmllbGRTZXQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJESVJFQ1RfTElORV9WRVJTSU9OIiwiTUFYX1JFVFJZX0NPVU5UIiwicmVmcmVzaFRva2VuTGlmZXRpbWUiLCJyZWZyZXNoVG9rZW5JbnRlcnZhbCIsIlN0cmVhbUhhbmRsZXIiLCJjJCIsInNxIiwiX2NsYXNzQ2FsbENoZWNrMiIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJzdWJzY3JpYmVyIiwiY29ubmVjdGlvblN0YXR1cyQiLCJzaG91bGRRdWV1ZSIsIl9jcmVhdGVDbGFzczIiLCJrZXkiLCJ2YWx1ZSIsInNldFN1YnNjcmliZXIiLCJfcHJvY2Vzc1JlcXVlc3QiLCJfYXN5bmNUb0dlbmVyYXRvcjIiLCJfcmVnZW5lcmF0b3IiLCJtYXJrIiwiX2NhbGxlZSIsInJlcXVlc3QiLCJsb2dnZXIiLCJzdHJlYW1zIiwic3RyZWFtMCIsImFjdGl2aXR5U2V0SnNvbiIsImFjdGl2aXR5U2V0IiwiYWN0aXZpdHkiLCJhdHRhY2htZW50cyIsInN0cmVhbSIsImF0dGFjaG1lbnQiLCJkYXRhVXJpIiwid3JhcCIsIl9jb250ZXh0IiwicHJldiIsIm5leHQiLCJfdG9Db25zdW1hYmxlQXJyYXkyIiwic2hpZnQiLCJyZWFkQXNTdHJpbmciLCJzZW50IiwiSlNPTiIsInBhcnNlIiwiYWN0aXZpdGllcyIsImVycm9yIiwiRXJyb3IiLCJhYnJ1cHQiLCJTdHJlYW1pbmdSZXNwb25zZSIsImNyZWF0ZSIsInB1c2giLCJjb250ZW50VHlwZSIsImNvbnRlbnRVcmwiLCJhY3Rpdml0eVF1ZXVlIiwic3RvcCIsInByb2Nlc3NSZXF1ZXN0IiwiX3giLCJfeDIiLCJhcHBseSIsImZsdXNoIiwiX3RoaXMiLCJmb3JFYWNoIiwiZW5kIiwiY29tcGxldGUiLCJfbmV0d29ya0luZm9ybWF0aW9uIiwiRGlyZWN0TGluZVN0cmVhbWluZyIsImV4cG9ydHMiLCJvcHRpb25zIiwiX3RoaXMyIiwiQmVoYXZpb3JTdWJqZWN0IiwiQ29ubmVjdGlvblN0YXR1cyIsIlVuaW5pdGlhbGl6ZWQiLCJBYm9ydENvbnRyb2xsZXIiLCJuZXR3b3JrSW5mb3JtYXRpb24iLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsInR5cGUiLCJjb25zb2xlIiwid2FybiIsInRva2VuIiwicmVmcmVzaFRva2VuIiwiRXhwaXJlZFRva2VuIiwiZG9tYWluIiwiY29udmVyc2F0aW9uSWQiLCJfYm90QWdlbnQiLCJnZXRCb3RBZ2VudCIsImJvdEFnZW50IiwicXVldWVBY3Rpdml0aWVzIiwiYWN0aXZpdHkkIiwiT2JzZXJ2YWJsZSIsIl9yZWYiLCJfY2FsbGVlMiIsIl9jb250ZXh0MiIsImFjdGl2aXR5U3Vic2NyaWJlciIsInRoZVN0cmVhbUhhbmRsZXIiLCJjb25uZWN0RGVmZXJyZWQiLCJyZXNvbHZlIiwiX3gzIiwic2hhcmUiLCJjb25uZWN0V2l0aFJldHJ5QXN5bmMiLCJyZWNvbm5lY3QiLCJfcmVmMiIsImdldFZhbHVlIiwiRW5kZWQiLCJfZW5kQWJvcnRDb250cm9sbGVyIiwiYWJvcnQiLCJzdHJlYW1Db25uZWN0aW9uIiwiZGlzY29ubmVjdCIsImNvbW1vbkhlYWRlcnMiLCJBdXRob3JpemF0aW9uIiwiY29uY2F0IiwiY3VzdG9tQWdlbnQiLCJ1bmRlZmluZWQiLCJjbGllbnRBZ2VudCIsIl9yZWZyZXNoVG9rZW4iLCJfY2FsbGVlMyIsImZpcnN0Q2FsbCIsInJldHJ5Q291bnQiLCJudW1iZXJPZkF0dGVtcHRzIiwicmVzIiwiX3lpZWxkJHJlcyRqc29uIiwiX2FyZ3MzIiwiX3QiLCJfY29udGV4dDMiLCJ3YWl0VW50aWxPbmxpbmUiLCJzaWduYWwiLCJhYm9ydGVkIiwic2xlZXAiLCJmZXRjaCIsIm1ldGhvZCIsImhlYWRlcnMiLCJvayIsImpzb24iLCJzdGF0dXMiLCJzdGF0dXNUZXh0IiwibXMiLCJfdGhpczMiLCJQcm9taXNlIiwidGltZXIiLCJzZXRUaW1lb3V0IiwiY2xlYXJUaW1lb3V0Iiwib25jZSIsInBvc3RBY3Rpdml0eSIsIl90aGlzNCIsIkZhaWxlZFRvQ29ubmVjdCIsInBvc3RNZXNzYWdlV2l0aEF0dGFjaG1lbnRzIiwicmVzcCQiLCJfcmVmMyIsIl9jYWxsZWU0IiwicmVzcCIsIm51bWJlck9mU3RyZWFtcyIsImlkU3RyaW5nIiwiX0pTT04kcGFyc2UiLCJpZCIsIl90MiIsIl9jb250ZXh0NCIsIlN0cmVhbWluZ1JlcXVlc3QiLCJzZXRCb2R5Iiwic3RyaW5naWZ5Iiwic2VuZCIsInN0YXR1c0NvZGUiLCJJZCIsIl94NCIsIm1lc3NhZ2UiLCJfdGhpczUiLCJtZXNzYWdlV2l0aG91dEF0dGFjaG1lbnRzIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzMiIsImh0dHBDb250ZW50TGlzdCIsIl9jYWxsZWU2IiwiYXJyYXlCdWZmZXJzIiwidXJsIiwiYWN0aXZpdHlTdHJlYW0iLCJfeWllbGQkcmVzcCRzdHJlYW1zJCIsIl90NSIsIl9jb250ZXh0NiIsImFsbCIsIm1hcCIsIl9yZWY1IiwiX2NhbGxlZTUiLCJtZWRpYSIsIl90MyIsIl90NCIsIl9jb250ZXh0NSIsImFycmF5QnVmZmVyIiwiX3g1IiwiX3JlZjYiLCJidWZmZXIiLCJCdWZmZXIiLCJmcm9tIiwiU3Vic2NyaWJhYmxlU3RyZWFtIiwid3JpdGUiLCJodHRwQ29udGVudCIsIkh0dHBDb250ZW50IiwiY29udGVudExlbmd0aCIsImFkZFN0cmVhbSIsInJlYWRBc0pzb24iLCJfd2FpdFVudGlsT25saW5lIiwiX2NhbGxlZTciLCJfdGhpczYiLCJfY29udGV4dDciLCJyZWplY3QiLCJkb25lIiwic3Vic2NyaXB0aW9uIiwic3Vic2NyaWJlIiwiY3MiLCJPbmxpbmUiLCJfc3Vic2NyaXB0aW9uIiwidW5zdWJzY3JpYmUiLCJfc3Vic2NyaXB0aW9uMiIsIl9jb25uZWN0QXN5bmMiLCJfY2FsbGVlOSIsIl90aGlzNyIsInJlIiwicGFyYW1zIiwiYWJvcnRDb250cm9sbGVyIiwidXJsU2VhcmNoUGFyYW1zIiwid3NVcmwiLCJfY29udGV4dDkiLCJSZWdFeHAiLCJ0ZXN0IiwiVVJMU2VhcmNoUGFyYW1zIiwidG9TdHJpbmciLCJyZXBsYWNlIiwiX3JlZjciLCJfY2FsbGVlOCIsInJlc3BvbnNlIiwicmVzcG9uc2VTdHJpbmciLCJjb252ZXJzYXRpb24iLCJfdDYiLCJfY29udGV4dDgiLCJXZWJTb2NrZXRDbGllbnRXaXRoTmV0d29ya0luZm9ybWF0aW9uIiwiZGlzY29ubmVjdGlvbkhhbmRsZXIiLCJyZXF1ZXN0SGFuZGxlciIsInN0cmVhbWluZ1JlcXVlc3QiLCJjb25uZWN0IiwiX3g2IiwiX3g3IiwiY29ubmVjdEFzeW5jIiwiX2Nvbm5lY3RXaXRoUmV0cnlBc3luYyIsIl9jYWxsZWUwIiwibnVtUmV0cmllcyIsInN0YXJ0IiwiX3Q3IiwiX2NvbnRleHQwIiwiY3JlYXRlRGVmZXJyZWQiLCJwcm9taXNlIiwiQ29ubmVjdGluZyIsIkRhdGUiLCJub3ciLCJnZXRSZXRyeURlbGF5IiwiTWF0aCIsImZsb29yIiwicmFuZG9tIl0sInNvdXJjZXMiOlsiLi4vc3JjL2RpcmVjdExpbmVTdHJlYW1pbmcudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gSW4gb3JkZXIgdG8ga2VlcCBmaWxlIHNpemUgZG93biwgb25seSBpbXBvcnQgdGhlIHBhcnRzIG9mIHJ4anMgdGhhdCB3ZSB1c2VcblxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcy9CZWhhdmlvclN1YmplY3QnO1xuaW1wb3J0IHsgQnVmZmVyIH0gZnJvbSAnYnVmZmVyJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzL09ic2VydmFibGUnO1xuaW1wb3J0IHsgU3Vic2NyaWJlciB9IGZyb20gJ3J4anMvU3Vic2NyaWJlcic7XG5pbXBvcnQgKiBhcyBCRlNFIGZyb20gJ2JvdGZyYW1ld29yay1zdHJlYW1pbmcnO1xuaW1wb3J0IGNyZWF0ZURlZmVycmVkIGZyb20gJy4vY3JlYXRlRGVmZXJyZWQnO1xuXG5pbXBvcnQgeyBBY3Rpdml0eSwgQ29ubmVjdGlvblN0YXR1cywgQ29udmVyc2F0aW9uLCBEaXJlY3RMaW5lLCBJQm90Q29ubmVjdGlvbiwgTWVkaWEsIE1lc3NhZ2UgfSBmcm9tICcuL2RpcmVjdExpbmUnO1xuaW1wb3J0IFdlYlNvY2tldENsaWVudFdpdGhOZXR3b3JrSW5mb3JtYXRpb24gZnJvbSAnLi9zdHJlYW1pbmcvV2ViU29ja2V0Q2xpZW50V2l0aE5ldHdvcmtJbmZvcm1hdGlvbic7XG5pbXBvcnQgdHlwZSB7IERlZmVycmVkIH0gZnJvbSAnLi9jcmVhdGVEZWZlcnJlZCc7XG5cbmNvbnN0IERJUkVDVF9MSU5FX1ZFUlNJT04gPSAnRGlyZWN0TGluZS8zLjAnO1xuY29uc3QgTUFYX1JFVFJZX0NPVU5UID0gMztcbmNvbnN0IHJlZnJlc2hUb2tlbkxpZmV0aW1lID0gMzAgKiA2MCAqIDEwMDA7XG4vL2NvbnN0IHJlZnJlc2hUb2tlbkxpZmV0aW1lID0gNTAwMDtcbi8vIGNvbnN0IHRpbWVvdXQgPSAyMCAqIDEwMDA7XG5jb25zdCByZWZyZXNoVG9rZW5JbnRlcnZhbCA9IHJlZnJlc2hUb2tlbkxpZmV0aW1lIC8gMjtcblxuaW50ZXJmYWNlIERpcmVjdExpbmVTdHJlYW1pbmdPcHRpb25zIHtcbiAgdG9rZW46IHN0cmluZztcbiAgY29udmVyc2F0aW9uSWQ/OiBzdHJpbmc7XG4gIGRvbWFpbjogc3RyaW5nO1xuICAvLyBBdHRhY2hlZCB0byBhbGwgcmVxdWVzdHMgdG8gaWRlbnRpZnkgcmVxdWVzdGluZyBhZ2VudC5cbiAgYm90QWdlbnQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIFtgTmV0d29ya0luZm9ybWF0aW9uYCBBUEldKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9OZXR3b3JrX0luZm9ybWF0aW9uX0FQSSkuXG4gICAqIFdoZW4gdGhlIGBOZXR3b3JrSW5mb3JtYXRpb25gIGRldGVjdCBuZXR3b3JrIGNoYW5nZXMgb3Igb2ZmbGluZSwgaXQgd2lsbCBkaXNjb25uZWN0IHRoZSBXZWIgU29ja2V0IGFuZCByZWNvbm5lY3QgaXQuXG4gICAqL1xuICBuZXR3b3JrSW5mb3JtYXRpb24/OiBOZXR3b3JrSW5mb3JtYXRpb247XG59XG5cbmNsYXNzIFN0cmVhbUhhbmRsZXIgaW1wbGVtZW50cyBCRlNFLlJlcXVlc3RIYW5kbGVyIHtcbiAgcHJpdmF0ZSBjb25uZWN0aW9uU3RhdHVzJDtcbiAgcHJpdmF0ZSBzdWJzY3JpYmVyOiBTdWJzY3JpYmVyPEFjdGl2aXR5PjtcbiAgcHJpdmF0ZSBzaG91bGRRdWV1ZTogKCkgPT4gYm9vbGVhbjtcbiAgcHJpdmF0ZSBhY3Rpdml0eVF1ZXVlOiBBcnJheTxBY3Rpdml0eT4gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihzOiBTdWJzY3JpYmVyPEFjdGl2aXR5PiwgYyQ6IE9ic2VydmFibGU8Q29ubmVjdGlvblN0YXR1cz4sIHNxOiAoKSA9PiBib29sZWFuKSB7XG4gICAgdGhpcy5zdWJzY3JpYmVyID0gcztcbiAgICB0aGlzLmNvbm5lY3Rpb25TdGF0dXMkID0gYyQ7XG4gICAgdGhpcy5zaG91bGRRdWV1ZSA9IHNxO1xuICB9XG5cbiAgcHVibGljIHNldFN1YnNjcmliZXIoczogU3Vic2NyaWJlcjxBY3Rpdml0eT4pIHtcbiAgICB0aGlzLnN1YnNjcmliZXIgPSBzO1xuICB9XG5cbiAgYXN5bmMgcHJvY2Vzc1JlcXVlc3QocmVxdWVzdDogQkZTRS5JUmVjZWl2ZVJlcXVlc3QsIGxvZ2dlcj86IGFueSk6IFByb21pc2U8QkZTRS5TdHJlYW1pbmdSZXNwb25zZT4ge1xuICAgIGNvbnN0IHN0cmVhbXMgPSBbLi4ucmVxdWVzdC5zdHJlYW1zXTtcbiAgICBjb25zdCBzdHJlYW0wID0gc3RyZWFtcy5zaGlmdCgpO1xuICAgIGNvbnN0IGFjdGl2aXR5U2V0SnNvbiA9IGF3YWl0IHN0cmVhbTAucmVhZEFzU3RyaW5nKCk7XG4gICAgY29uc3QgYWN0aXZpdHlTZXQgPSBKU09OLnBhcnNlKGFjdGl2aXR5U2V0SnNvbik7XG5cbiAgICBpZiAoYWN0aXZpdHlTZXQuYWN0aXZpdGllcy5sZW5ndGggIT09IDEpIHtcbiAgICAgIC8vIE9ubHkgb25lIGFjdGl2aXR5IGlzIGV4cGVjdGVkIGluIGEgc2V0IGluIHN0cmVhbWluZ1xuICAgICAgdGhpcy5zdWJzY3JpYmVyLmVycm9yKG5ldyBFcnJvcigndGhlcmUgc2hvdWxkIGJlIGV4YWN0bHkgb25lIGFjdGl2aXR5JykpO1xuICAgICAgcmV0dXJuIEJGU0UuU3RyZWFtaW5nUmVzcG9uc2UuY3JlYXRlKDUwMCk7XG4gICAgfVxuXG4gICAgY29uc3QgYWN0aXZpdHkgPSBhY3Rpdml0eVNldC5hY3Rpdml0aWVzWzBdO1xuXG4gICAgaWYgKHN0cmVhbXMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgYXR0YWNobWVudHMgPSBbLi4uYWN0aXZpdHkuYXR0YWNobWVudHNdO1xuXG4gICAgICBsZXQgc3RyZWFtOiBCRlNFLkNvbnRlbnRTdHJlYW07XG4gICAgICB3aGlsZSAoKHN0cmVhbSA9IHN0cmVhbXMuc2hpZnQoKSkpIHtcbiAgICAgICAgY29uc3QgYXR0YWNobWVudCA9IGF3YWl0IHN0cmVhbS5yZWFkQXNTdHJpbmcoKTtcbiAgICAgICAgY29uc3QgZGF0YVVyaSA9ICdkYXRhOnRleHQvcGxhaW47YmFzZTY0LCcgKyBhdHRhY2htZW50O1xuICAgICAgICBhdHRhY2htZW50cy5wdXNoKHsgY29udGVudFR5cGU6IHN0cmVhbS5jb250ZW50VHlwZSwgY29udGVudFVybDogZGF0YVVyaSB9KTtcbiAgICAgIH1cblxuICAgICAgYWN0aXZpdHkuYXR0YWNobWVudHMgPSBhdHRhY2htZW50cztcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zaG91bGRRdWV1ZSgpKSB7XG4gICAgICB0aGlzLmFjdGl2aXR5UXVldWUucHVzaChhY3Rpdml0eSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc3Vic2NyaWJlci5uZXh0KGFjdGl2aXR5KTtcbiAgICB9XG5cbiAgICByZXR1cm4gQkZTRS5TdHJlYW1pbmdSZXNwb25zZS5jcmVhdGUoMjAwKTtcbiAgfVxuXG4gIHB1YmxpYyBmbHVzaCgpIHtcbiAgICB0aGlzLmFjdGl2aXR5UXVldWUuZm9yRWFjaChhID0+IHRoaXMuc3Vic2NyaWJlci5uZXh0KGEpKTtcbiAgICB0aGlzLmFjdGl2aXR5UXVldWUgPSBbXTtcbiAgfVxuXG4gIHB1YmxpYyBlbmQoKSB7XG4gICAgdGhpcy5zdWJzY3JpYmVyLmNvbXBsZXRlKCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIERpcmVjdExpbmVTdHJlYW1pbmcgaW1wbGVtZW50cyBJQm90Q29ubmVjdGlvbiB7XG4gIHB1YmxpYyBjb25uZWN0aW9uU3RhdHVzJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoQ29ubmVjdGlvblN0YXR1cy5VbmluaXRpYWxpemVkKTtcbiAgcHVibGljIGFjdGl2aXR5JDogT2JzZXJ2YWJsZTxBY3Rpdml0eT47XG5cbiAgcHJpdmF0ZSBhY3Rpdml0eVN1YnNjcmliZXI6IFN1YnNjcmliZXI8QWN0aXZpdHk+O1xuICBwcml2YXRlIGNvbm5lY3REZWZlcnJlZDogRGVmZXJyZWQ8dm9pZD47XG4gIHByaXZhdGUgdGhlU3RyZWFtSGFuZGxlcjogU3RyZWFtSGFuZGxlcjtcblxuICBwcml2YXRlIGRvbWFpbjogc3RyaW5nO1xuXG4gIHByaXZhdGUgY29udmVyc2F0aW9uSWQ6IHN0cmluZztcbiAgcHJpdmF0ZSB0b2tlbjogc3RyaW5nO1xuICBwcml2YXRlIHN0cmVhbUNvbm5lY3Rpb246IEJGU0UuV2ViU29ja2V0Q2xpZW50O1xuICBwcml2YXRlIHF1ZXVlQWN0aXZpdGllczogYm9vbGVhbjtcblxuICBwcml2YXRlIF9ib3RBZ2VudCA9ICcnO1xuICBwcml2YXRlIF9lbmRBYm9ydENvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG5cbiAgI25ldHdvcmtJbmZvcm1hdGlvbjogTmV0d29ya0luZm9ybWF0aW9uIHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IERpcmVjdExpbmVTdHJlYW1pbmdPcHRpb25zKSB7XG4gICAgLy8gUmVjdGlmaWVzIGBvcHRpb25zLm5ldHdvcmtJbmZvcm1hdGlvbmAuXG4gICAgY29uc3QgbmV0d29ya0luZm9ybWF0aW9uID0gb3B0aW9ucz8ubmV0d29ya0luZm9ybWF0aW9uO1xuXG4gICAgaWYgKFxuICAgICAgdHlwZW9mIG5ldHdvcmtJbmZvcm1hdGlvbiA9PT0gJ3VuZGVmaW5lZCcgfHxcbiAgICAgICh0eXBlb2YgbmV0d29ya0luZm9ybWF0aW9uLmFkZEV2ZW50TGlzdGVuZXIgPT09ICdmdW5jdGlvbicgJiZcbiAgICAgICAgdHlwZW9mIG5ldHdvcmtJbmZvcm1hdGlvbi5yZW1vdmVFdmVudExpc3RlbmVyID09PSAnZnVuY3Rpb24nICYmXG4gICAgICAgIHR5cGVvZiBuZXR3b3JrSW5mb3JtYXRpb24udHlwZSA9PT0gJ3N0cmluZycpXG4gICAgKSB7XG4gICAgICB0aGlzLiNuZXR3b3JrSW5mb3JtYXRpb24gPSBuZXR3b3JrSW5mb3JtYXRpb247XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgJ2JvdGZyYW1ld29yay1kaXJlY3RsaW5lanM6IFwibmV0d29ya0luZm9ybWF0aW9uXCIgb3B0aW9uIHNwZWNpZmllZCBtdXN0IGJlIGEgYE5ldHdvcmtJbmZvcm1hdGlvbmAtbGlrZSBpbnN0YW5jZSBleHRlbmRpbmcgYEV2ZW50VGFyZ2V0YCBpbnRlcmZhY2Ugd2l0aCBhIGB0eXBlYCBwcm9wZXJ0eSByZXR1cm5pbmcgYSBzdHJpbmcuJ1xuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLnRva2VuID0gb3B0aW9ucy50b2tlbjtcblxuICAgIHRoaXMucmVmcmVzaFRva2VuKCkuY2F0Y2goKCkgPT4ge1xuICAgICAgdGhpcy5jb25uZWN0aW9uU3RhdHVzJC5uZXh0KENvbm5lY3Rpb25TdGF0dXMuRXhwaXJlZFRva2VuKTtcbiAgICB9KTtcblxuICAgIHRoaXMuZG9tYWluID0gb3B0aW9ucy5kb21haW47XG5cbiAgICBpZiAob3B0aW9ucy5jb252ZXJzYXRpb25JZCkge1xuICAgICAgdGhpcy5jb252ZXJzYXRpb25JZCA9IG9wdGlvbnMuY29udmVyc2F0aW9uSWQ7XG4gICAgfVxuXG4gICAgdGhpcy5fYm90QWdlbnQgPSB0aGlzLmdldEJvdEFnZW50KG9wdGlvbnMuYm90QWdlbnQpO1xuXG4gICAgdGhpcy5xdWV1ZUFjdGl2aXRpZXMgPSB0cnVlO1xuICAgIHRoaXMuYWN0aXZpdHkkID0gT2JzZXJ2YWJsZS5jcmVhdGUoYXN5bmMgKHN1YnNjcmliZXI6IFN1YnNjcmliZXI8QWN0aXZpdHk+KSA9PiB7XG4gICAgICB0aGlzLmFjdGl2aXR5U3Vic2NyaWJlciA9IHN1YnNjcmliZXI7XG4gICAgICB0aGlzLnRoZVN0cmVhbUhhbmRsZXIgPSBuZXcgU3RyZWFtSGFuZGxlcihzdWJzY3JpYmVyLCB0aGlzLmNvbm5lY3Rpb25TdGF0dXMkLCAoKSA9PiB0aGlzLnF1ZXVlQWN0aXZpdGllcyk7XG5cbiAgICAgIC8vIFJlc29sdmluZyBjb25uZWN0RGVmZXJyZWQgd2lsbCBraWNrLW9mZiB0aGUgY29ubmVjdGlvbi5cbiAgICAgIHRoaXMuY29ubmVjdERlZmVycmVkLnJlc29sdmUoKTtcbiAgICB9KS5zaGFyZSgpO1xuXG4gICAgLy8gY29ubmVjdFdpdGhSZXRyeUFzeW5jKCkgd2lsbCBjcmVhdGUgdGhlIGNvbm5lY3REZWZlcnJlZCBvYmplY3QgcmVxdWlyZWQgaW4gYWN0aXZpdHkkLlxuICAgIHRoaXMuY29ubmVjdFdpdGhSZXRyeUFzeW5jKCk7XG4gIH1cblxuICBwdWJsaWMgcmVjb25uZWN0KHsgY29udmVyc2F0aW9uSWQsIHRva2VuIH06IENvbnZlcnNhdGlvbikge1xuICAgIGlmICh0aGlzLmNvbm5lY3Rpb25TdGF0dXMkLmdldFZhbHVlKCkgPT09IENvbm5lY3Rpb25TdGF0dXMuRW5kZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ29ubmVjdGlvbiBoYXMgZW5kZWQuJyk7XG4gICAgfVxuXG4gICAgdGhpcy5jb252ZXJzYXRpb25JZCA9IGNvbnZlcnNhdGlvbklkO1xuICAgIHRoaXMudG9rZW4gPSB0b2tlbjtcblxuICAgIHRoaXMuY29ubmVjdERlZmVycmVkLnJlc29sdmUoKTtcbiAgfVxuXG4gIGVuZCgpIHtcbiAgICAvLyBPbmNlIGVuZCgpIGlzIGNhbGxlZCwgbm8gcmVjb25uZWN0aW9uIGNhbiBiZSBtYWRlLlxuICAgIHRoaXMuX2VuZEFib3J0Q29udHJvbGxlci5hYm9ydCgpO1xuXG4gICAgdGhpcy5hY3Rpdml0eVN1YnNjcmliZXIuY29tcGxldGUoKTtcblxuICAgIHRoaXMuY29ubmVjdGlvblN0YXR1cyQubmV4dChDb25uZWN0aW9uU3RhdHVzLkVuZGVkKTtcbiAgICB0aGlzLmNvbm5lY3Rpb25TdGF0dXMkLmNvbXBsZXRlKCk7XG5cbiAgICB0aGlzLnN0cmVhbUNvbm5lY3Rpb24uZGlzY29ubmVjdCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb21tb25IZWFkZXJzKCkge1xuICAgIHJldHVybiB7XG4gICAgICBBdXRob3JpemF0aW9uOiBgQmVhcmVyICR7dGhpcy50b2tlbn1gLFxuICAgICAgJ3gtbXMtYm90LWFnZW50JzogdGhpcy5fYm90QWdlbnRcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRCb3RBZ2VudChjdXN0b21BZ2VudDogc3RyaW5nID0gJycpOiBzdHJpbmcge1xuICAgIGxldCBjbGllbnRBZ2VudCA9ICdkaXJlY3RsaW5lU3RyZWFtaW5nJztcblxuICAgIGlmIChjdXN0b21BZ2VudCkge1xuICAgICAgY2xpZW50QWdlbnQgKz0gYDsgJHtjdXN0b21BZ2VudH1gO1xuICAgIH1cblxuICAgIHJldHVybiBgJHtESVJFQ1RfTElORV9WRVJTSU9OfSAoJHtjbGllbnRBZ2VudH0pYDtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcmVmcmVzaFRva2VuKGZpcnN0Q2FsbCA9IHRydWUsIHJldHJ5Q291bnQgPSAwKSB7XG4gICAgYXdhaXQgdGhpcy53YWl0VW50aWxPbmxpbmUoKTtcblxuICAgIGxldCBudW1iZXJPZkF0dGVtcHRzID0gMDtcbiAgICB3aGlsZSAobnVtYmVyT2ZBdHRlbXB0cyA8IE1BWF9SRVRSWV9DT1VOVCkge1xuICAgICAgaWYgKHRoaXMuX2VuZEFib3J0Q29udHJvbGxlci5zaWduYWwuYWJvcnRlZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIG51bWJlck9mQXR0ZW1wdHMrKztcbiAgICAgIGF3YWl0IHRoaXMuc2xlZXAocmVmcmVzaFRva2VuSW50ZXJ2YWwpO1xuXG4gICAgICBpZiAodGhpcy5fZW5kQWJvcnRDb250cm9sbGVyLnNpZ25hbC5hYm9ydGVkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgZmV0Y2goYCR7dGhpcy5kb21haW59L3Rva2Vucy9yZWZyZXNoYCwgeyBtZXRob2Q6ICdQT1NUJywgaGVhZGVyczogdGhpcy5jb21tb25IZWFkZXJzKCkgfSk7XG4gICAgICAgIGlmIChyZXMub2spIHtcbiAgICAgICAgICBudW1iZXJPZkF0dGVtcHRzID0gMDtcbiAgICAgICAgICBjb25zdCB7IHRva2VuIH0gPSBhd2FpdCByZXMuanNvbigpO1xuICAgICAgICAgIHRoaXMudG9rZW4gPSB0b2tlbjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAocmVzLnN0YXR1cyA9PT0gNDAzIHx8IHJlcy5zdGF0dXMgPT09IDQwMykge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihgRmF0YWwgZXJyb3Igd2hpbGUgcmVmcmVzaGluZyB0aGUgdG9rZW46ICR7cmVzLnN0YXR1c30gJHtyZXMuc3RhdHVzVGV4dH1gKTtcbiAgICAgICAgICAgIHRoaXMuc3RyZWFtQ29ubmVjdGlvbi5kaXNjb25uZWN0KCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgUmVmcmVzaCBhdHRlbXB0ICMke251bWJlck9mQXR0ZW1wdHN9IGZhaWxlZDogJHtyZXMuc3RhdHVzfSAke3Jlcy5zdGF0dXNUZXh0fWApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjb25zb2xlLndhcm4oYFJlZnJlc2ggYXR0ZW1wdCAjJHtudW1iZXJPZkF0dGVtcHRzfSB0aHJldyBhbiBleGNlcHRpb246ICR7ZX1gKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zb2xlLmVycm9yKCdSZXRyaWVzIGV4aGF1c3RlZCcpO1xuICAgIHRoaXMuc3RyZWFtQ29ubmVjdGlvbi5kaXNjb25uZWN0KCk7XG4gIH1cblxuICBwcml2YXRlIHNsZWVwKG1zOiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5fZW5kQWJvcnRDb250cm9sbGVyLnNpZ25hbC5hYm9ydGVkKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgY29uc3QgdGltZXIgPSBzZXRUaW1lb3V0KHJlc29sdmUsIG1zKTtcbiAgICAgIHRoaXMuX2VuZEFib3J0Q29udHJvbGxlci5zaWduYWwuYWRkRXZlbnRMaXN0ZW5lcignYWJvcnQnLCAoKSA9PiB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aW1lcik7XG4gICAgICAgIHJlc29sdmUoKTtcbiAgICAgIH0sIHsgb25jZTogdHJ1ZSB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHBvc3RBY3Rpdml0eShhY3Rpdml0eTogQWN0aXZpdHkpIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLmNvbm5lY3Rpb25TdGF0dXMkLnZhbHVlID09PSBDb25uZWN0aW9uU3RhdHVzLkVuZGVkIHx8XG4gICAgICB0aGlzLmNvbm5lY3Rpb25TdGF0dXMkLnZhbHVlID09PSBDb25uZWN0aW9uU3RhdHVzLkZhaWxlZFRvQ29ubmVjdFxuICAgICkge1xuICAgICAgcmV0dXJuIE9ic2VydmFibGUudGhyb3cobmV3IEVycm9yKCdDb25uZWN0aW9uIGlzIGNsb3NlZCcpKTtcbiAgICB9XG5cbiAgICBpZiAoYWN0aXZpdHkudHlwZSA9PT0gJ21lc3NhZ2UnICYmIGFjdGl2aXR5LmF0dGFjaG1lbnRzICYmIGFjdGl2aXR5LmF0dGFjaG1lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiB0aGlzLnBvc3RNZXNzYWdlV2l0aEF0dGFjaG1lbnRzKGFjdGl2aXR5KTtcbiAgICB9XG5cbiAgICBjb25zdCByZXNwJCA9IE9ic2VydmFibGUuY3JlYXRlKGFzeW5jIHN1YnNjcmliZXIgPT4ge1xuICAgICAgY29uc3QgcmVxdWVzdCA9IEJGU0UuU3RyZWFtaW5nUmVxdWVzdC5jcmVhdGUoXG4gICAgICAgICdQT1NUJyxcbiAgICAgICAgJy92My9kaXJlY3RsaW5lL2NvbnZlcnNhdGlvbnMvJyArIHRoaXMuY29udmVyc2F0aW9uSWQgKyAnL2FjdGl2aXRpZXMnXG4gICAgICApO1xuICAgICAgcmVxdWVzdC5zZXRCb2R5KEpTT04uc3RyaW5naWZ5KGFjdGl2aXR5KSk7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlc3AgPSBhd2FpdCB0aGlzLnN0cmVhbUNvbm5lY3Rpb24uc2VuZChyZXF1ZXN0KTtcbiAgICAgICAgaWYgKHJlc3Auc3RhdHVzQ29kZSAhPT0gMjAwKSB0aHJvdyBuZXcgRXJyb3IoJ1Bvc3RBY3Rpdml0eSByZXR1cm5lZCAnICsgcmVzcC5zdGF0dXNDb2RlKTtcbiAgICAgICAgY29uc3QgbnVtYmVyT2ZTdHJlYW1zID0gcmVzcC5zdHJlYW1zLmxlbmd0aDtcbiAgICAgICAgaWYgKG51bWJlck9mU3RyZWFtcyAhPT0gMSkgdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCBvbmUgc3RyZWFtIGJ1dCBnb3QgJyArIG51bWJlck9mU3RyZWFtcyk7XG4gICAgICAgIGNvbnN0IGlkU3RyaW5nID0gYXdhaXQgcmVzcC5zdHJlYW1zWzBdLnJlYWRBc1N0cmluZygpO1xuICAgICAgICBjb25zdCB7IElkOiBpZCB9ID0gSlNPTi5wYXJzZShpZFN0cmluZyk7XG4gICAgICAgIHN1YnNjcmliZXIubmV4dChpZCk7XG4gICAgICAgIHJldHVybiBzdWJzY3JpYmVyLmNvbXBsZXRlKCk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIC8vIElmIHRoZXJlIGlzIGEgbmV0d29yayBpc3N1ZSB0aGVuIGl0cyBoYW5kbGVkIGJ5XG4gICAgICAgIC8vIHRoZSBkaXNjb25uZWN0aW9uSGFuZGxlci4gRXZlcnl0aGluZyBlbHNlIGNhblxuICAgICAgICAvLyBiZSByZXRyaWVkXG4gICAgICAgIGNvbnNvbGUud2FybihlKTtcbiAgICAgICAgdGhpcy5zdHJlYW1Db25uZWN0aW9uLmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgcmV0dXJuIHN1YnNjcmliZXIuZXJyb3IoZSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3AkO1xuICB9XG5cbiAgcHJpdmF0ZSBwb3N0TWVzc2FnZVdpdGhBdHRhY2htZW50cyhtZXNzYWdlOiBNZXNzYWdlKSB7XG4gICAgY29uc3QgeyBhdHRhY2htZW50cywgLi4ubWVzc2FnZVdpdGhvdXRBdHRhY2htZW50cyB9ID0gbWVzc2FnZTtcblxuICAgIHJldHVybiBPYnNlcnZhYmxlLmNyZWF0ZShzdWJzY3JpYmVyID0+IHtcbiAgICAgIGNvbnN0IGh0dHBDb250ZW50TGlzdCA9IFtdO1xuICAgICAgKGFzeW5jICgpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBhcnJheUJ1ZmZlcnMgPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgICAgIGF0dGFjaG1lbnRzLm1hcChhc3luYyBhdHRhY2htZW50ID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgbWVkaWEgPSBhdHRhY2htZW50IGFzIE1lZGlhO1xuICAgICAgICAgICAgICBjb25zdCByZXMgPSBhd2FpdCBmZXRjaChtZWRpYS5jb250ZW50VXJsKTtcbiAgICAgICAgICAgICAgaWYgKHJlcy5vaykge1xuICAgICAgICAgICAgICAgIHJldHVybiB7IGFycmF5QnVmZmVyOiBhd2FpdCByZXMuYXJyYXlCdWZmZXIoKSwgbWVkaWEgfTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJy4uLicpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBhcnJheUJ1ZmZlcnMuZm9yRWFjaCgoeyBhcnJheUJ1ZmZlciwgbWVkaWEgfSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgYnVmZmVyID0gQnVmZmVyLmZyb20oYXJyYXlCdWZmZXIpO1xuICAgICAgICAgICAgY29uc3Qgc3RyZWFtID0gbmV3IEJGU0UuU3Vic2NyaWJhYmxlU3RyZWFtKCk7XG4gICAgICAgICAgICBzdHJlYW0ud3JpdGUoYnVmZmVyKTtcbiAgICAgICAgICAgIGNvbnN0IGh0dHBDb250ZW50ID0gbmV3IEJGU0UuSHR0cENvbnRlbnQoeyB0eXBlOiBtZWRpYS5jb250ZW50VHlwZSwgY29udGVudExlbmd0aDogYnVmZmVyLmxlbmd0aCB9LCBzdHJlYW0pO1xuICAgICAgICAgICAgaHR0cENvbnRlbnRMaXN0LnB1c2goaHR0cENvbnRlbnQpO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgY29uc3QgdXJsID0gYC92My9kaXJlY3RsaW5lL2NvbnZlcnNhdGlvbnMvJHt0aGlzLmNvbnZlcnNhdGlvbklkfS91c2Vycy8ke21lc3NhZ2VXaXRob3V0QXR0YWNobWVudHMuZnJvbS5pZH0vdXBsb2FkYDtcbiAgICAgICAgICBjb25zdCByZXF1ZXN0ID0gQkZTRS5TdHJlYW1pbmdSZXF1ZXN0LmNyZWF0ZSgnUFVUJywgdXJsKTtcbiAgICAgICAgICBjb25zdCBhY3Rpdml0eVN0cmVhbSA9IG5ldyBCRlNFLlN1YnNjcmliYWJsZVN0cmVhbSgpO1xuICAgICAgICAgIGFjdGl2aXR5U3RyZWFtLndyaXRlKEpTT04uc3RyaW5naWZ5KG1lc3NhZ2VXaXRob3V0QXR0YWNobWVudHMpLCAndXRmLTgnKTtcbiAgICAgICAgICByZXF1ZXN0LmFkZFN0cmVhbShcbiAgICAgICAgICAgIG5ldyBCRlNFLkh0dHBDb250ZW50KFxuICAgICAgICAgICAgICB7IHR5cGU6ICdhcHBsaWNhdGlvbi92bmQubWljcm9zb2Z0LmFjdGl2aXR5JywgY29udGVudExlbmd0aDogYWN0aXZpdHlTdHJlYW0ubGVuZ3RoIH0sXG4gICAgICAgICAgICAgIGFjdGl2aXR5U3RyZWFtXG4gICAgICAgICAgICApXG4gICAgICAgICAgKTtcbiAgICAgICAgICBodHRwQ29udGVudExpc3QuZm9yRWFjaChlID0+IHJlcXVlc3QuYWRkU3RyZWFtKGUpKTtcblxuICAgICAgICAgIGNvbnN0IHJlc3AgPSBhd2FpdCB0aGlzLnN0cmVhbUNvbm5lY3Rpb24uc2VuZChyZXF1ZXN0KTtcbiAgICAgICAgICBpZiAocmVzcC5zdHJlYW1zICYmIHJlc3Auc3RyZWFtcy5sZW5ndGggIT09IDEpIHtcbiAgICAgICAgICAgIHN1YnNjcmliZXIuZXJyb3IobmV3IEVycm9yKGBJbnZhbGlkIHN0cmVhbSBjb3VudCAke3Jlc3Auc3RyZWFtcy5sZW5ndGh9YCkpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCB7IElkOiBpZCB9ID0gYXdhaXQgcmVzcC5zdHJlYW1zWzBdLnJlYWRBc0pzb248eyBJZDogc3RyaW5nIH0+KCk7XG4gICAgICAgICAgICBzdWJzY3JpYmVyLm5leHQoaWQpO1xuICAgICAgICAgICAgc3Vic2NyaWJlci5jb21wbGV0ZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIHN1YnNjcmliZXIuZXJyb3IoZSk7XG4gICAgICAgIH1cbiAgICAgIH0pKCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHdhaXRVbnRpbE9ubGluZSgpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgbGV0IGRvbmUgPSBmYWxzZTtcbiAgICAgIGxldCBzdWJzY3JpcHRpb246IHsgdW5zdWJzY3JpYmUoKTogdm9pZCB9O1xuICAgICAgc3Vic2NyaXB0aW9uID0gdGhpcy5jb25uZWN0aW9uU3RhdHVzJC5zdWJzY3JpYmUoXG4gICAgICAgIGNzID0+IHtcbiAgICAgICAgICBpZiAoY3MgPT09IENvbm5lY3Rpb25TdGF0dXMuT25saW5lKSB7XG4gICAgICAgICAgICBkb25lID0gdHJ1ZTtcbiAgICAgICAgICAgIHN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgIHJldHVybiByZXNvbHZlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBlID0+IHtcbiAgICAgICAgICBkb25lID0gdHJ1ZTtcbiAgICAgICAgICBzdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgICB9XG4gICAgICApO1xuICAgICAgaWYgKGRvbmUpIHtcbiAgICAgICAgc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNvbm5lY3RBc3luYygpIHtcbiAgICBpZiAodGhpcy5fZW5kQWJvcnRDb250cm9sbGVyLnNpZ25hbC5hYm9ydGVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nvbm5lY3Rpb24gaGFzIGVuZGVkLicpO1xuICAgIH1cblxuICAgIGNvbnN0IHJlID0gbmV3IFJlZ0V4cCgnXmh0dHAocz8pJyk7XG5cbiAgICBpZiAoIXJlLnRlc3QodGhpcy5kb21haW4pKSB7XG4gICAgICB0aHJvdyAnRG9tYWluIG11c3QgYmVnaW4gd2l0aCBodHRwIG9yIGh0dHBzJztcbiAgICB9XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7IHRva2VuOiB0aGlzLnRva2VuIH07XG5cbiAgICBpZiAodGhpcy5jb252ZXJzYXRpb25JZCkge1xuICAgICAgcGFyYW1zWydjb252ZXJzYXRpb25JZCddID0gdGhpcy5jb252ZXJzYXRpb25JZDtcbiAgICB9XG5cbiAgICBjb25zdCBhYm9ydENvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gICAgY29uc3QgdXJsU2VhcmNoUGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyhwYXJhbXMpLnRvU3RyaW5nKCk7XG4gICAgY29uc3Qgd3NVcmwgPSBgJHt0aGlzLmRvbWFpbi5yZXBsYWNlKHJlLCAnd3MkMScpfS9jb252ZXJzYXRpb25zL2Nvbm5lY3Q/JHt1cmxTZWFyY2hQYXJhbXN9YDtcblxuICAgIC8vIFRoaXMgcHJvbWlzZSB3aWxsIHJlc29sdmUgd2hlbiBpdCBpcyBkaXNjb25uZWN0ZWQuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGlmICh0aGlzLl9lbmRBYm9ydENvbnRyb2xsZXIuc2lnbmFsLmFib3J0ZWQpIHtcbiAgICAgICAgICByZXR1cm4gcmVqZWN0KG5ldyBFcnJvcignQ29ubmVjdGlvbiBoYXMgZW5kZWQuJykpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zdHJlYW1Db25uZWN0aW9uID0gbmV3IFdlYlNvY2tldENsaWVudFdpdGhOZXR3b3JrSW5mb3JtYXRpb24oe1xuICAgICAgICAgIGRpc2Nvbm5lY3Rpb25IYW5kbGVyOiByZXNvbHZlLFxuICAgICAgICAgIG5ldHdvcmtJbmZvcm1hdGlvbjogdGhpcy4jbmV0d29ya0luZm9ybWF0aW9uLFxuICAgICAgICAgIHJlcXVlc3RIYW5kbGVyOiB7XG4gICAgICAgICAgICBwcm9jZXNzUmVxdWVzdDogc3RyZWFtaW5nUmVxdWVzdCA9PiB7XG4gICAgICAgICAgICAgIC8vIElmIGBzdHJlYW1Db25uZWN0aW9uYCBpcyBzdGlsbCBjdXJyZW50LCBhbGxvdyBjYWxsIHRvIGBwcm9jZXNzUmVxdWVzdCgpYCwgb3RoZXJ3aXNlLCBpZ25vcmUgY2FsbHMgdG8gYHByb2Nlc3NSZXF1ZXN0KClgLlxuICAgICAgICAgICAgICAvLyBUaGlzIHByZXZlbnRzIHpvbWJpZSBjb25uZWN0aW9ucyBmcm9tIHNlbmRpbmcgdXMgcmVxdWVzdHMuXG4gICAgICAgICAgICAgIGlmIChhYm9ydENvbnRyb2xsZXIuc2lnbmFsLmFib3J0ZWQpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBwcm9jZXNzIHN0cmVhbWluZyByZXF1ZXN0LCBgc3RyZWFtaW5nQ29ubmVjdGlvbmAgc2hvdWxkIGJlIGRpc2Nvbm5lY3RlZC4nKTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLnRoZVN0cmVhbUhhbmRsZXIucHJvY2Vzc1JlcXVlc3Qoc3RyZWFtaW5nUmVxdWVzdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICB1cmw6IHdzVXJsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMucXVldWVBY3Rpdml0aWVzID0gdHJ1ZTtcblxuICAgICAgICBhd2FpdCB0aGlzLnN0cmVhbUNvbm5lY3Rpb24uY29ubmVjdCgpO1xuXG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSBCRlNFLlN0cmVhbWluZ1JlcXVlc3QuY3JlYXRlKCdQT1NUJywgJy92My9kaXJlY3RsaW5lL2NvbnZlcnNhdGlvbnMnKTtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLnN0cmVhbUNvbm5lY3Rpb24uc2VuZChyZXF1ZXN0KTtcblxuICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzQ29kZSAhPT0gMjAwKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb25uZWN0aW9uIHJlc3BvbnNlIGNvZGUgJyArIHJlc3BvbnNlLnN0YXR1c0NvZGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJlc3BvbnNlLnN0cmVhbXMubGVuZ3RoICE9PSAxKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCAxIHN0cmVhbSBidXQgZ290ICcgKyByZXNwb25zZS5zdHJlYW1zLmxlbmd0aCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZXNwb25zZVN0cmluZyA9IGF3YWl0IHJlc3BvbnNlLnN0cmVhbXNbMF0ucmVhZEFzU3RyaW5nKCk7XG4gICAgICAgIGNvbnN0IGNvbnZlcnNhdGlvbiA9IEpTT04ucGFyc2UocmVzcG9uc2VTdHJpbmcpO1xuXG4gICAgICAgIHRoaXMuY29udmVyc2F0aW9uSWQgPSBjb252ZXJzYXRpb24uY29udmVyc2F0aW9uSWQ7XG4gICAgICAgIHRoaXMuY29ubmVjdGlvblN0YXR1cyQubmV4dChDb25uZWN0aW9uU3RhdHVzLk9ubGluZSk7XG5cbiAgICAgICAgLy8gV2FpdCB1bnRpbCBETCBjb25zdW1lcnMgaGF2ZSBoYWQgYSBjaGFuY2UgdG8gYmUgbm90aWZpZWRcbiAgICAgICAgLy8gb2YgdGhlIGNvbm5lY3Rpb24gc3RhdHVzIGNoYW5nZS5cbiAgICAgICAgLy8gVGhpcyBpcyBzcGVjaWZpYyB0byBSeEpTIGltcGxlbWVudGF0aW9uIG9mIG9ic2VydmFibGUsIHdoaWNoIGNhbGxpbmcgc3Vic2NyaWJlKCkgYWZ0ZXIgbmV4dCgpIHdpbGwgc3RpbGwgZ2V0IHRoZSB2YWx1ZS5cbiAgICAgICAgYXdhaXQgdGhpcy53YWl0VW50aWxPbmxpbmUoKTtcblxuICAgICAgICB0aGlzLnRoZVN0cmVhbUhhbmRsZXIuZmx1c2goKTtcbiAgICAgICAgdGhpcy5xdWV1ZUFjdGl2aXRpZXMgPSBmYWxzZTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgfVxuICAgIH0pLmZpbmFsbHkoKCkgPT4gYWJvcnRDb250cm9sbGVyLmFib3J0KCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjb25uZWN0V2l0aFJldHJ5QXN5bmMoKSB7XG4gICAgLy8gVGhpcyBmb3ItbG9vcCB3aWxsIGJyZWFrIHdoZW4gc29tZW9uZSBjYWxsIGVuZCgpIGFuZCBpdCB3aWxsIHNpZ25hbCBDb25uZWN0aW9uU3RhdHVzLkVuZGVkLlxuICAgIGZvciAoOzspIHtcbiAgICAgIC8vIENyZWF0ZSBhIG5ldyBzaWduYWwgYW5kIHdhaXQgZm9yIHNvbWVvbmUga2lja2luZyBvZmYgdGhlIGNvbm5lY3Rpb246XG4gICAgICAvLyAtIHN1YnNjcmliZSB0byBhY3Rpdml0eSQsIG9yO1xuICAgICAgLy8gLSByZXRyaWVzIGV4aGF1c3RlZCAoRmFpbGVkVG9Db25uZWN0KSwgdGhlbiwgc29tZW9uZSBjYWxsIHJlY29ubmVjdCgpXG4gICAgICBhd2FpdCAodGhpcy5jb25uZWN0RGVmZXJyZWQgPSBjcmVhdGVEZWZlcnJlZCgpKS5wcm9taXNlO1xuXG4gICAgICBsZXQgbnVtUmV0cmllcyA9IE1BWF9SRVRSWV9DT1VOVDtcblxuICAgICAgdGhpcy5jb25uZWN0aW9uU3RhdHVzJC5uZXh0KENvbm5lY3Rpb25TdGF0dXMuQ29ubmVjdGluZyk7XG5cbiAgICAgIHdoaWxlIChudW1SZXRyaWVzID4gMCkge1xuICAgICAgICBudW1SZXRyaWVzLS07XG5cbiAgICAgICAgaWYgKHRoaXMuX2VuZEFib3J0Q29udHJvbGxlci5zaWduYWwuYWJvcnRlZCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKTtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgIC8vIFRoaXMgcHJvbWlzZSB3aWxsIHJlamVjdC9yZXNvbHZlIHdoZW4gZGlzY29ubmVjdGVkLlxuICAgICAgICAgIGF3YWl0IHRoaXMuY29ubmVjdEFzeW5jKCk7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgIGlmICh0aGlzLl9lbmRBYm9ydENvbnRyb2xsZXIuc2lnbmFsLmFib3J0ZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSWYgc29tZW9uZSBjYWxsIGVuZCgpIHRvIGJyZWFrIHRoZSBjb25uZWN0aW9uLCB3ZSB3aWxsIG5ldmVyIGxpc3RlbiB0byBhbnkgcmVjb25uZWN0KCkuXG4gICAgICAgIGlmICh0aGlzLmNvbm5lY3Rpb25TdGF0dXMkLmdldFZhbHVlKCkgPT09IENvbm5lY3Rpb25TdGF0dXMuRW5kZWQpIHtcbiAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBvbmx5IHBsYWNlIHRoZSBsb29wIGluIHRoaXMgZnVuY3Rpb24gd2lsbCBiZSBicm9rZS5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBNYWtlIHN1cmUgd2UgZG9uJ3Qgc2lnbmFsIENvbm5lY3Rpb25TdGF0dXMuQ29ubmVjdGluZyB0d2ljZSBvciBtb3JlIHdpdGhvdXQgYW4gYWN0dWFsIGNvbm5lY3Rpb24uXG4gICAgICAgIC8vIFN1YnNlcXVlbnQgcmV0cmllcyBzaG91bGQgYmUgdHJhbnNwYXJlbnQuXG4gICAgICAgIGlmICh0aGlzLmNvbm5lY3Rpb25TdGF0dXMkLmdldFZhbHVlKCkgIT09IENvbm5lY3Rpb25TdGF0dXMuQ29ubmVjdGluZykge1xuICAgICAgICAgIHRoaXMuY29ubmVjdGlvblN0YXR1cyQubmV4dChDb25uZWN0aW9uU3RhdHVzLkNvbm5lY3RpbmcpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSWYgdGhlIGN1cnJlbnQgY29ubmVjdGlvbiBsYXN0ZWQgZm9yIG1vcmUgdGhhbiBhIG1pbnV0ZSwgdGhlIHByZXZpb3VzIGNvbm5lY3Rpb24gaXMgZ29vZCwgd2hpY2ggbWVhbnM6XG4gICAgICAgIC8vIC0gd2Ugc2hvdWxkIHJlc2V0IHRoZSByZXRyeSBjb3VudGVyLCBhbmQ7XG4gICAgICAgIC8vIC0gd2Ugc2hvdWxkIHJlY29ubmVjdCBpbW1lZGlhdGVseS5cbiAgICAgICAgaWYgKDYwMDAwIDwgRGF0ZS5ub3coKSAtIHN0YXJ0KSB7XG4gICAgICAgICAgbnVtUmV0cmllcyA9IE1BWF9SRVRSWV9DT1VOVDtcbiAgICAgICAgfSBlbHNlIGlmIChudW1SZXRyaWVzID4gMCkge1xuICAgICAgICAgIC8vIFNsZWVwIG9ubHkgaWYgd2UgYXJlIGRvaW5nIHJldHJ5LiBPdGhlcndpc2UsIHdlIGFyZSBnb2luZyB0byBicmVhayB0aGUgbG9vcCBhbmQgc2lnbmFsIEZhaWxlZFRvQ29ubmVjdC5cbiAgICAgICAgICBhd2FpdCB0aGlzLnNsZWVwKHRoaXMuZ2V0UmV0cnlEZWxheSgpKTtcblxuICAgICAgICAgIGlmICh0aGlzLl9lbmRBYm9ydENvbnRyb2xsZXIuc2lnbmFsLmFib3J0ZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gVE9ETzogW1RFU1RdIE1ha2Ugc3VyZSBGYWlsZWRUb0Nvbm5lY3QgaXMgcmVwb3J0ZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgbGFzdCBkaXNjb25uZWN0aW9uLCBzaG91bGQgYmUgbm8gZ2V0UmV0cnlEZWxheSgpLlxuICAgICAgLy8gRmFpbGVkIHRvIHJlY29ubmVjdCBhZnRlciBtdWx0aXBsZSByZXRyaWVzLlxuICAgICAgdGhpcy5jb25uZWN0aW9uU3RhdHVzJC5uZXh0KENvbm5lY3Rpb25TdGF0dXMuRmFpbGVkVG9Db25uZWN0KTtcbiAgICB9XG5cbiAgICAvLyBOb3RlOiBObyBjb2RlIHdpbGwgaGl0IHRoaXMgbGluZS5cbiAgfVxuXG4gIC8vIFJldHVybnMgdGhlIGRlbGF5IGR1cmF0aW9uIGluIG1pbGxpc2Vjb25kc1xuICBwcml2YXRlIGdldFJldHJ5RGVsYXkoKSB7XG4gICAgcmV0dXJuIE1hdGguZmxvb3IoMzAwMCArIE1hdGgucmFuZG9tKCkgKiAxMjAwMCk7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBRUEsSUFBQUEsZ0JBQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLE9BQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLFdBQUEsR0FBQUYsT0FBQTtBQUVBLElBQUFHLElBQUEsR0FBQUMsdUJBQUEsQ0FBQUosT0FBQTtBQUNBLElBQUFLLGVBQUEsR0FBQUMsc0JBQUEsQ0FBQU4sT0FBQTtBQUVBLElBQUFPLFdBQUEsR0FBQVAsT0FBQTtBQUNBLElBQUFRLHNDQUFBLEdBQUFGLHNCQUFBLENBQUFOLE9BQUE7QUFBc0csSUFBQVMsU0FBQTtBQUFBLFNBQUFMLHdCQUFBTSxDQUFBLEVBQUFDLENBQUEsNkJBQUFDLE9BQUEsTUFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBUix1QkFBQSxZQUFBQSx3QkFBQU0sQ0FBQSxFQUFBQyxDQUFBLFNBQUFBLENBQUEsSUFBQUQsQ0FBQSxJQUFBQSxDQUFBLENBQUFLLFVBQUEsU0FBQUwsQ0FBQSxNQUFBTSxDQUFBLEVBQUFDLENBQUEsRUFBQUMsQ0FBQSxLQUFBQyxTQUFBLG1CQUFBVCxDQUFBLGlCQUFBQSxDQUFBLGdCQUFB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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "botframework-directlinejs",
3
- "version": "0.15.10-master.a81fec7",
3
+ "version": "0.16.0",
4
4
  "description": "Client library for the Microsoft Bot Framework Direct Line 3.0 protocol",
5
5
  "files": [
6
6
  "dist/**/*",
@@ -30,7 +30,6 @@
30
30
  "botframework-streaming": "^4.23.3",
31
31
  "buffer": "6.0.3",
32
32
  "core-js": "^3.49.0",
33
- "cross-fetch": "^3.1.5",
34
33
  "jwt-decode": "3.1.2",
35
34
  "rxjs": "5.5.12",
36
35
  "url-search-params-polyfill": "^8.2.5"