@cloudbase/ai 4.0.0 → 4.0.1-alpha.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.
Files changed (83) hide show
  1. package/.eslintrc.js +1 -0
  2. package/CHANGELOG.md +1164 -0
  3. package/dist/cjs/AI.d.ts +6 -3
  4. package/dist/cjs/AI.js +67 -24
  5. package/dist/cjs/bot/index.js +1 -1
  6. package/dist/cjs/errors.d.ts +10 -0
  7. package/dist/cjs/errors.js +38 -0
  8. package/dist/cjs/index.d.ts +7 -3
  9. package/dist/cjs/index.js +22 -8
  10. package/dist/cjs/models/Ark/index.js +1 -1
  11. package/dist/cjs/models/DashScope/index.js +1 -1
  12. package/dist/cjs/models/DeepSeek/index.js +1 -1
  13. package/dist/cjs/models/Default/index.js +1 -1
  14. package/dist/cjs/models/HunYuan/index.js +1 -1
  15. package/dist/cjs/models/HunYuan/util.js +1 -1
  16. package/dist/cjs/models/HunYuanBeta/index.js +1 -1
  17. package/dist/cjs/models/HunYuanExp/index.js +1 -1
  18. package/dist/cjs/models/HunYuanOpen/index.js +1 -1
  19. package/dist/cjs/models/Moonshot/index.js +1 -1
  20. package/dist/cjs/models/Yi/index.js +1 -1
  21. package/dist/cjs/models/ZhiPu/index.js +1 -1
  22. package/dist/cjs/models/image-model.d.ts +19 -0
  23. package/dist/cjs/models/image-model.js +106 -0
  24. package/dist/cjs/models/index.d.ts +2 -1
  25. package/dist/cjs/models/index.js +4 -2
  26. package/dist/cjs/models/model.js +1 -1
  27. package/dist/cjs/type.d.ts +81 -0
  28. package/dist/cjs/type.js +1 -1
  29. package/dist/cjs/utils.d.ts +1 -1
  30. package/dist/cjs/utils.js +9 -4
  31. package/dist/esm/AI.d.ts +6 -3
  32. package/dist/esm/AI.js +67 -24
  33. package/dist/esm/bot/index.js +1 -1
  34. package/dist/esm/errors.d.ts +10 -0
  35. package/dist/esm/errors.js +35 -0
  36. package/dist/esm/index.d.ts +7 -3
  37. package/dist/esm/index.js +21 -8
  38. package/dist/esm/models/Ark/index.js +1 -1
  39. package/dist/esm/models/DashScope/index.js +1 -1
  40. package/dist/esm/models/DeepSeek/index.js +1 -1
  41. package/dist/esm/models/Default/index.js +1 -1
  42. package/dist/esm/models/HunYuan/index.js +1 -1
  43. package/dist/esm/models/HunYuan/util.js +1 -1
  44. package/dist/esm/models/HunYuanBeta/index.js +1 -1
  45. package/dist/esm/models/HunYuanExp/index.js +1 -1
  46. package/dist/esm/models/HunYuanOpen/index.js +1 -1
  47. package/dist/esm/models/Moonshot/index.js +1 -1
  48. package/dist/esm/models/Yi/index.js +1 -1
  49. package/dist/esm/models/ZhiPu/index.js +1 -1
  50. package/dist/esm/models/image-model.d.ts +19 -0
  51. package/dist/esm/models/image-model.js +103 -0
  52. package/dist/esm/models/index.d.ts +2 -1
  53. package/dist/esm/models/index.js +3 -2
  54. package/dist/esm/models/model.js +1 -1
  55. package/dist/esm/type.d.ts +81 -0
  56. package/dist/esm/type.js +1 -1
  57. package/dist/esm/utils.d.ts +1 -1
  58. package/dist/esm/utils.js +9 -4
  59. package/dist/miniprogram/index.js +1 -1
  60. package/dist/miniprogram/index.js.LICENSE.txt +2 -2
  61. package/package.json +4 -4
  62. package/src/AI.ts +64 -17
  63. package/src/bot/index.ts +2 -0
  64. package/src/errors.ts +23 -0
  65. package/src/index.ts +27 -7
  66. package/src/models/Ark/index.ts +2 -0
  67. package/src/models/DashScope/index.ts +2 -0
  68. package/src/models/DeepSeek/index.ts +2 -0
  69. package/src/models/Default/index.ts +2 -0
  70. package/src/models/HunYuan/index.ts +2 -0
  71. package/src/models/HunYuan/util.ts +2 -0
  72. package/src/models/HunYuanBeta/index.ts +2 -0
  73. package/src/models/HunYuanExp/index.ts +2 -0
  74. package/src/models/HunYuanOpen/index.ts +2 -0
  75. package/src/models/Moonshot/index.ts +3 -0
  76. package/src/models/Yi/index.ts +2 -0
  77. package/src/models/ZhiPu/index.ts +2 -0
  78. package/src/models/image-model.ts +100 -0
  79. package/src/models/index.ts +2 -0
  80. package/src/models/model.ts +2 -0
  81. package/src/type.ts +216 -1
  82. package/src/utils.ts +21 -4
  83. package/tsconfig.json +1 -1
package/dist/cjs/AI.d.ts CHANGED
@@ -6,21 +6,24 @@ import { ICloudbaseConfig } from '@cloudbase/types';
6
6
  declare class AI {
7
7
  private req;
8
8
  baseUrl: string;
9
- aiBaseUrl: string;
10
- aiBotBaseUrl: string;
11
9
  bot: Bot;
12
10
  i18n: ICloudbaseConfig['i18n'];
13
11
  defaultHeaders: {
14
12
  [x: string]: any;
15
13
  };
16
- constructor(req: SDKRequestInterface, baseUrl: string, i18n: ICloudbaseConfig['i18n']);
14
+ private _getBaseUrl?;
15
+ get aiBaseUrl(): string;
16
+ get aiBotBaseUrl(): string;
17
+ constructor(req: SDKRequestInterface, baseUrl: string, i18n: ICloudbaseConfig['i18n'], getBaseUrl?: () => string);
17
18
  handleResponseData(responseData: Promise<unknown> | ReadableStream<Uint8Array>, header?: Headers): Promise<unknown>;
18
19
  createModel(model: string, options?: {
19
20
  defaultModelSubUrl?: string;
20
21
  }): models.ReactModel;
21
22
  registerModel(name: string, model: types.ChatModelConstructor): void;
23
+ createImageModel<T extends 'hunyuan-image' | (string & {})>(provider: T): models.DefaultImageModel<T>;
22
24
  modelRequest: types.ModelReq;
23
25
  botRequest: types.BotReq;
24
26
  registerFunctionTool(functionTool: types.FunctionTool): void;
27
+ private resolveUrl;
25
28
  }
26
29
  export { AI };
package/dist/cjs/AI.js CHANGED
@@ -77,7 +77,7 @@ var utils_1 = require("./utils");
77
77
  var utilities_1 = require("@cloudbase/utilities");
78
78
  var MODELS = models.MODELS;
79
79
  var AI = (function () {
80
- function AI(req, baseUrl, i18n) {
80
+ function AI(req, baseUrl, i18n, getBaseUrl) {
81
81
  var _this = this;
82
82
  this.req = req;
83
83
  this.baseUrl = baseUrl;
@@ -98,7 +98,7 @@ var AI = (function () {
98
98
  method: 'post',
99
99
  headers: __assign(__assign((_c = {}, _c[(_d = this.i18n) === null || _d === void 0 ? void 0 : _d.LANG_HEADER_KEY] = (_e = this.i18n) === null || _e === void 0 ? void 0 : _e.lang, _c), fetchHeaders), headers),
100
100
  body: JSON.stringify(data),
101
- url: url,
101
+ url: this.resolveUrl(url),
102
102
  stream: stream,
103
103
  timeout: timeout,
104
104
  })];
@@ -120,15 +120,16 @@ var AI = (function () {
120
120
  })
121
121
  .join('&');
122
122
  }
123
- var _c, fetchHeaders, _d, responseData, header;
123
+ var resolvedUrl, _c, fetchHeaders, _d, responseData, header;
124
124
  var _e;
125
125
  var _f, _g;
126
126
  return __generator(this, function (_h) {
127
127
  switch (_h.label) {
128
128
  case 0:
129
+ resolvedUrl = this.resolveUrl(url);
129
130
  if (!(method === 'get')) return [3, 2];
130
131
  _c = this.handleResponseData;
131
- return [4, this.req.fetch({ url: "".concat(url, "?").concat(objectToParam(data)), method: method, headers: headers, stream: stream, timeout: timeout })];
132
+ return [4, this.req.fetch({ url: "".concat(resolvedUrl, "?").concat(objectToParam(data)), method: method, headers: headers, stream: stream, timeout: timeout })];
132
133
  case 1: return [2, _c.apply(this, [(_h.sent()).data])];
133
134
  case 2:
134
135
  fetchHeaders = {
@@ -136,7 +137,7 @@ var AI = (function () {
136
137
  };
137
138
  stream && Object.assign(fetchHeaders, { Accept: 'text/event-stream' });
138
139
  return [4, this.req.fetch({
139
- url: url,
140
+ url: resolvedUrl,
140
141
  body: JSON.stringify(data),
141
142
  headers: __assign(__assign((_e = {}, _e[(_f = this.i18n) === null || _f === void 0 ? void 0 : _f.LANG_HEADER_KEY] = (_g = this.i18n) === null || _g === void 0 ? void 0 : _g.lang, _e), fetchHeaders), headers),
142
143
  stream: stream,
@@ -150,8 +151,7 @@ var AI = (function () {
150
151
  });
151
152
  });
152
153
  };
153
- this.aiBaseUrl = "".concat(baseUrl, "/ai");
154
- this.aiBotBaseUrl = "".concat(baseUrl, "/aibot");
154
+ this._getBaseUrl = getBaseUrl;
155
155
  this.bot = new bot_1.Bot(this.botRequest, this.aiBotBaseUrl);
156
156
  this.i18n = i18n;
157
157
  utilities_1.langEvent.bus.on(utilities_1.langEvent.LANG_CHANGE_EVENT, function (params) {
@@ -159,32 +159,63 @@ var AI = (function () {
159
159
  _this.i18n = ((_a = params.data) === null || _a === void 0 ? void 0 : _a.i18n) || _this.i18n;
160
160
  });
161
161
  }
162
+ Object.defineProperty(AI.prototype, "aiBaseUrl", {
163
+ get: function () {
164
+ return "".concat(this._getBaseUrl ? this._getBaseUrl() : this.baseUrl, "/ai");
165
+ },
166
+ enumerable: false,
167
+ configurable: true
168
+ });
169
+ Object.defineProperty(AI.prototype, "aiBotBaseUrl", {
170
+ get: function () {
171
+ return "".concat(this._getBaseUrl ? this._getBaseUrl() : this.baseUrl, "/aibot");
172
+ },
173
+ enumerable: false,
174
+ configurable: true
175
+ });
162
176
  AI.prototype.handleResponseData = function (responseData, header) {
163
177
  var _a, _b;
164
178
  return __awaiter(this, void 0, void 0, function () {
165
- var GO_TO_AI_TEXT, json, json;
166
- return __generator(this, function (_c) {
167
- switch (_c.label) {
179
+ var GO_TO_AI_TEXT, throwIfError, json, _c, isStream, json, json;
180
+ var _this = this;
181
+ return __generator(this, function (_d) {
182
+ switch (_d.label) {
168
183
  case 0:
169
184
  GO_TO_AI_TEXT = "".concat(this.i18n.t('请检查调用方式,或前往云开发 AI+ 首页查看文档'), "\uFF1Ahttps://tcb.cloud.tencent.com/dev#/ai");
170
- if (!(typeof responseData === 'object' && responseData && 'then' in responseData)) return [3, 2];
185
+ throwIfError = function (json) {
186
+ if (typeof json === 'object' && json && 'code' in json && json.code !== 'NORMAL') {
187
+ throw new Error("".concat(_this.i18n.t('AI+ 请求出错,错误码'), "\uFF1A").concat(json.code, "\uFF0C").concat(_this.i18n.t('错误信息'), "\uFF1A").concat(json.message, "\n").concat(GO_TO_AI_TEXT, "\n").concat(JSON.stringify(json, null, 2)));
188
+ }
189
+ };
190
+ if (!(typeof responseData === 'object' && responseData && typeof responseData.getReader !== 'function')) return [3, 4];
191
+ if (!('then' in responseData)) return [3, 2];
171
192
  return [4, responseData];
172
193
  case 1:
173
- json = (_c.sent());
174
- if (typeof json === 'object' && json && 'code' in json && json.code !== 'NORMAL') {
175
- throw new Error("".concat(this.i18n.t('AI+ 请求出错,错误码'), "\uFF1A").concat(json.code, "\uFF0C").concat(this.i18n.t('错误信息'), "\uFF1A").concat(json.message, "\n").concat(GO_TO_AI_TEXT, "\n").concat(JSON.stringify(json, null, 2)));
176
- }
177
- return [2, responseData];
194
+ _c = _d.sent();
195
+ return [3, 3];
178
196
  case 2:
179
- if (!((_b = (_a = header === null || header === void 0 ? void 0 : header.get) === null || _a === void 0 ? void 0 : _a.call(header, 'content-type')) === null || _b === void 0 ? void 0 : _b.includes('application/json'))) return [3, 4];
180
- return [4, (0, utils_1.readableStream2JsonObject)(responseData)];
197
+ _c = responseData;
198
+ _d.label = 3;
181
199
  case 3:
182
- json = _c.sent();
183
- if (typeof json === 'object' && json && 'code' in json && json.code !== 'NORMAL') {
184
- throw new Error("".concat(this.i18n.t('AI+ 请求出错,错误码'), "\uFF1A").concat(json.code, "\uFF0C").concat(this.i18n.t('错误信息'), "\uFF1A").concat(json.message, "\n").concat(GO_TO_AI_TEXT, "\n").concat(JSON.stringify(json, null, 2)));
200
+ json = _c;
201
+ throwIfError(json);
202
+ return [2, responseData];
203
+ case 4:
204
+ isStream = typeof (responseData === null || responseData === void 0 ? void 0 : responseData.getReader) === 'function';
205
+ if (!isStream) {
206
+ json = responseData;
207
+ if (typeof json === 'object' && json && 'code' in json && json.code !== 'NORMAL') {
208
+ throw new Error("".concat(this.i18n.t('AI+ 请求出错,错误码'), "\uFF1A").concat(json.code, "\uFF0C").concat(this.i18n.t('错误信息'), "\uFF1A").concat(json.message, "\n").concat(GO_TO_AI_TEXT, "\n").concat(JSON.stringify(json, null, 2)));
209
+ }
210
+ return [2, responseData];
185
211
  }
186
- _c.label = 4;
187
- case 4: return [2, responseData];
212
+ if (!((_b = (_a = header === null || header === void 0 ? void 0 : header.get) === null || _a === void 0 ? void 0 : _a.call(header, 'content-type')) === null || _b === void 0 ? void 0 : _b.includes('application/json'))) return [3, 6];
213
+ return [4, (0, utils_1.readableStream2JsonObject)(responseData)];
214
+ case 5:
215
+ json = _d.sent();
216
+ throwIfError(json);
217
+ _d.label = 6;
218
+ case 6: return [2, responseData];
188
219
  }
189
220
  });
190
221
  });
@@ -209,13 +240,25 @@ var AI = (function () {
209
240
  }
210
241
  MODELS[name] = model;
211
242
  };
243
+ AI.prototype.createImageModel = function (provider) {
244
+ return new models.DefaultImageModel(this.modelRequest, this.aiBaseUrl, provider);
245
+ };
212
246
  AI.prototype.registerFunctionTool = function (functionTool) {
213
247
  if (models.toolMap.has(functionTool.name)) {
214
248
  console.warn("AI function tool ".concat(functionTool.name, " already exists and will be overwritten!"));
215
249
  }
216
250
  models.toolMap.set(functionTool.name, functionTool.fn);
217
251
  };
252
+ AI.prototype.resolveUrl = function (url) {
253
+ if (!this._getBaseUrl)
254
+ return url;
255
+ var currentBase = this._getBaseUrl();
256
+ if (currentBase !== this.baseUrl && url.startsWith(this.baseUrl)) {
257
+ return url.replace(this.baseUrl, currentBase);
258
+ }
259
+ return url;
260
+ };
218
261
  return AI;
219
262
  }());
220
263
  exports.AI = AI;
221
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQUkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvQUkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLDZCQUEyQjtBQUMzQiwrQ0FBa0M7QUFFbEMsaUNBQW1EO0FBRW5ELGtEQUFnRDtBQUV4QyxJQUFBLE1BQU0sR0FBSyxNQUFNLE9BQVgsQ0FBVztBQUV6QjtJQU9FLFlBQW9CLEdBQXdCLEVBQVMsT0FBZSxFQUFFLElBQThCO1FBQXBHLGlCQVNDO1FBVG1CLFFBQUcsR0FBSCxHQUFHLENBQXFCO1FBQVMsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQWtFcEUsaUJBQVksR0FBbUIsVUFBTyxFQUF1QztnQkFBckMsR0FBRyxTQUFBLEVBQUUsSUFBSSxVQUFBLEVBQUUsT0FBTyxhQUFBLEVBQUUsTUFBTSxZQUFBLEVBQUUsT0FBTyxhQUFBOzs7Ozs7Ozs0QkFDbkUsWUFBWSxHQUFHO2dDQUNuQixjQUFjLEVBQUUsa0JBQWtCOzZCQUNuQyxDQUFBOzRCQUVELE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxFQUFFLE1BQU0sRUFBRSxtQkFBbUIsRUFBRSxDQUFDLENBQUE7NEJBRTlCLFdBQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7b0NBQzNELE1BQU0sRUFBRSxNQUFNO29DQUNkLE9BQU8saUNBQUssTUFBQSxJQUFJLENBQUMsSUFBSSwwQ0FBRSxlQUFlLElBQUcsTUFBQSxJQUFJLENBQUMsSUFBSSwwQ0FBRSxJQUFJLE9BQUssWUFBWSxHQUFLLE9BQU8sQ0FBRTtvQ0FDdkYsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDO29DQUMxQixHQUFHLEtBQUE7b0NBQ0gsTUFBTSxRQUFBO29DQUNOLE9BQU8sU0FBQTtpQ0FDUixDQUFDLEVBQUE7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Q0FBQyxJQUFJLElBQUksRUFBRTtZQUN4QixPQUFPLENBQUMsSUFBSSxDQUFDLG1CQUFZLElBQUkscUJBQWtCLENBQUMsQ0FBQTtZQUNoRCxPQUFNO1NBQ1A7UUFDRCxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFBO0lBQ3RCLENBQUM7SUFzREQsaUNBQW9CLEdBQXBCLFVBQXFCLFlBQWdDO1FBQ25ELElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3pDLE9BQU8sQ0FBQyxJQUFJLENBQUMsMkJBQW9CLFlBQVksQ0FBQyxJQUFJLDZDQUEwQyxDQUFDLENBQUE7U0FDOUY7UUFDRCxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQTtJQUN4RCxDQUFDO0lBQ0gsU0FBQztBQUFELENBQUMsQUFuSUQsSUFtSUM7QUFFUSxnQkFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgU0RLUmVxdWVzdEludGVyZmFjZSB9IGZyb20gJ0BjbG91ZGJhc2UvYWRhcHRlci1pbnRlcmZhY2UnXG5pbXBvcnQgeyBCb3QgfSBmcm9tICcuL2JvdCdcbmltcG9ydCAqIGFzIG1vZGVscyBmcm9tICcuL21vZGVscydcbmltcG9ydCAqIGFzIHR5cGVzIGZyb20gJy4vdHlwZSdcbmltcG9ydCB7IHJlYWRhYmxlU3RyZWFtMkpzb25PYmplY3QgfSBmcm9tICcuL3V0aWxzJ1xuaW1wb3J0IHsgSUNsb3VkYmFzZUNvbmZpZyB9IGZyb20gJ0BjbG91ZGJhc2UvdHlwZXMnXG5pbXBvcnQgeyBsYW5nRXZlbnQgfSBmcm9tICdAY2xvdWRiYXNlL3V0aWxpdGllcydcblxuY29uc3QgeyBNT0RFTFMgfSA9IG1vZGVsc1xuXG5jbGFzcyBBSSB7XG4gIHB1YmxpYyBhaUJhc2VVcmw6IHN0cmluZ1xuICBwdWJsaWMgYWlCb3RCYXNlVXJsOiBzdHJpbmdcbiAgcHVibGljIGJvdDogQm90XG4gIHB1YmxpYyBpMThuOiBJQ2xvdWRiYXNlQ29uZmlnWydpMThuJ11cbiAgZGVmYXVsdEhlYWRlcnM6IHsgW3g6IHN0cmluZ106IGFueSB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZXE6IFNES1JlcXVlc3RJbnRlcmZhY2UsIHB1YmxpYyBiYXNlVXJsOiBzdHJpbmcsIGkxOG46IElDbG91ZGJhc2VDb25maWdbJ2kxOG4nXSkge1xuICAgIHRoaXMuYWlCYXNlVXJsID0gYCR7YmFzZVVybH0vYWlgXG4gICAgdGhpcy5haUJvdEJhc2VVcmwgPSBgJHtiYXNlVXJsfS9haWJvdGBcbiAgICB0aGlzLmJvdCA9IG5ldyBCb3QodGhpcy5ib3RSZXF1ZXN0LCB0aGlzLmFpQm90QmFzZVVybClcbiAgICB0aGlzLmkxOG4gPSBpMThuXG5cbiAgICBsYW5nRXZlbnQuYnVzLm9uKGxhbmdFdmVudC5MQU5HX0NIQU5HRV9FVkVOVCwgKHBhcmFtcykgPT4ge1xuICAgICAgdGhpcy5pMThuID0gcGFyYW1zLmRhdGE/LmkxOG4gfHwgdGhpcy5pMThuXG4gICAgfSlcbiAgfVxuXG4gIGFzeW5jIGhhbmRsZVJlc3BvbnNlRGF0YShyZXNwb25zZURhdGE6IFByb21pc2U8dW5rbm93bj4gfCBSZWFkYWJsZVN0cmVhbTxVaW50OEFycmF5PiwgaGVhZGVyPzogSGVhZGVycykge1xuICAgIGNvbnN0IEdPX1RPX0FJX1RFWFQgPSBgJHt0aGlzLmkxOG4udCgn6K+35qOA5p+l6LCD55So5pa55byP77yM5oiW5YmN5b6A5LqR5byA5Y+RIEFJKyDpppbpobXmn6XnnIvmlofmoaMnKX3vvJpodHRwczovL3RjYi5jbG91ZC50ZW5jZW50LmNvbS9kZXYjL2FpYFxuXG4gICAgaWYgKHR5cGVvZiByZXNwb25zZURhdGEgPT09ICdvYmplY3QnICYmIHJlc3BvbnNlRGF0YSAmJiAndGhlbicgaW4gcmVzcG9uc2VEYXRhKSB7XG4gICAgICAvLyDpnZ7mtYHlvI/or7fmsYLvvIznm7TmjqXov5Tlm54ganNvbiDmlbDmja5cbiAgICAgIGNvbnN0IGpzb24gPSAoYXdhaXQgcmVzcG9uc2VEYXRhKSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICAgICAgaWYgKHR5cGVvZiBqc29uID09PSAnb2JqZWN0JyAmJiBqc29uICYmICdjb2RlJyBpbiBqc29uICYmIGpzb24uY29kZSAhPT0gJ05PUk1BTCcpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAke3RoaXMuaTE4bi50KCdBSSsg6K+35rGC5Ye66ZSZ77yM6ZSZ6K+v56CBJyl977yaJHtqc29uLmNvZGV977yMJHt0aGlzLmkxOG4udCgn6ZSZ6K+v5L+h5oGvJyl977yaJHtcbiAgICAgICAgICBqc29uLm1lc3NhZ2VcbiAgICAgICAgfVxcbiR7R09fVE9fQUlfVEVYVH1cXG4ke0pTT04uc3RyaW5naWZ5KGpzb24sIG51bGwsIDIpfWAsKVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzcG9uc2VEYXRhXG4gICAgfVxuICAgIC8vIOa1geW8j+ivt+axgu+8jOWmguaenOaOpeWPo+WHuumUme+8jOS8muWPmOaIkOS8oCBqc29uIOagvOW8j+eahOWTjeW6lO+8jOmAmui/hyBoZWFkZXIg5Yik5pat5qC85byPXG4gICAgaWYgKGhlYWRlcj8uZ2V0Py4oJ2NvbnRlbnQtdHlwZScpPy5pbmNsdWRlcygnYXBwbGljYXRpb24vanNvbicpKSB7XG4gICAgICBjb25zdCBqc29uID0gYXdhaXQgcmVhZGFibGVTdHJlYW0ySnNvbk9iamVjdChyZXNwb25zZURhdGEgYXMgUmVhZGFibGVTdHJlYW08VWludDhBcnJheT4pXG4gICAgICBpZiAodHlwZW9mIGpzb24gPT09ICdvYmplY3QnICYmIGpzb24gJiYgJ2NvZGUnIGluIGpzb24gJiYganNvbi5jb2RlICE9PSAnTk9STUFMJykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7dGhpcy5pMThuLnQoJ0FJKyDor7fmsYLlh7rplJnvvIzplJnor6/noIEnKX3vvJoke2pzb24uY29kZX3vvIwke3RoaXMuaTE4bi50KCfplJnor6/kv6Hmga8nKX3vvJoke1xuICAgICAgICAgIGpzb24ubWVzc2FnZVxuICAgICAgICB9XFxuJHtHT19UT19BSV9URVhUfVxcbiR7SlNPTi5zdHJpbmdpZnkoanNvbiwgbnVsbCwgMil9YCwpXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXNwb25zZURhdGFcbiAgfVxuXG4gIGNyZWF0ZU1vZGVsKFxuICAgIG1vZGVsOiBzdHJpbmcsXG4gICAgb3B0aW9ucz86IHtcbiAgICAgIGRlZmF1bHRNb2RlbFN1YlVybD86IHN0cmluZ1xuICAgIH0sXG4gICkge1xuICAgIGxldCBzaW1wbGVNb2RlbDogdHlwZXMuU2ltcGxlQ2hhdE1vZGVsXG5cbiAgICBjb25zdCBTaW1wbGVNb2RlbENvbnN0cnVjdG9yID0gTU9ERUxTW21vZGVsXVxuICAgIGlmIChTaW1wbGVNb2RlbENvbnN0cnVjdG9yKSB7XG4gICAgICBzaW1wbGVNb2RlbCA9IG5ldyBTaW1wbGVNb2RlbENvbnN0cnVjdG9yKHRoaXMubW9kZWxSZXF1ZXN0LCB0aGlzLmFpQmFzZVVybClcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgc3ViVXJsID0gdHlwZW9mIG9wdGlvbnM/LmRlZmF1bHRNb2RlbFN1YlVybCA9PT0gJ3N0cmluZycgPyBvcHRpb25zLmRlZmF1bHRNb2RlbFN1YlVybCA6ICcvY2hhdC9jb21wbGV0aW9ucydcblxuICAgICAgc2ltcGxlTW9kZWwgPSBuZXcgbW9kZWxzLkRlZmF1bHRTaW1wbGVNb2RlbCh0aGlzLm1vZGVsUmVxdWVzdCwgdGhpcy5haUJhc2VVcmwsIGAke21vZGVsfSR7c3ViVXJsfWApXG4gICAgfVxuXG4gICAgY29uc3QgcmVhY3RNb2RlbCA9IG5ldyBtb2RlbHMuUmVhY3RNb2RlbChzaW1wbGVNb2RlbClcbiAgICByZXR1cm4gcmVhY3RNb2RlbFxuICB9XG5cbiAgcmVnaXN0ZXJNb2RlbChuYW1lOiBzdHJpbmcsIG1vZGVsOiB0eXBlcy5DaGF0TW9kZWxDb25zdHJ1Y3Rvcikge1xuICAgIGlmIChNT0RFTFNbbmFtZV0gIT0gbnVsbCkge1xuICAgICAgY29uc29sZS53YXJuKGBBSSBtb2RlbCAke25hbWV9IGFscmVhZHkgZXhpc3RzIWApXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgTU9ERUxTW25hbWVdID0gbW9kZWxcbiAgfVxuXG4gIG1vZGVsUmVxdWVzdDogdHlwZXMuTW9kZWxSZXEgPSBhc3luYyAoeyB1cmwsIGRhdGEsIGhlYWRlcnMsIHN0cmVhbSwgdGltZW91dCB9KSA9PiB7XG4gICAgY29uc3QgZmV0Y2hIZWFkZXJzID0ge1xuICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICB9XG4gICAgLy8g5bimIEFjY2VwdDogdGV4dC9ldmVudC1zdHJlYW0gIOivt+axguWktOaYvuW8j+aMh+WumuaYryBTU0Ug57uV6L+HIDYwcyDnmoTpmZDliLZcbiAgICBzdHJlYW0gJiYgT2JqZWN0LmFzc2lnbihmZXRjaEhlYWRlcnMsIHsgQWNjZXB0OiAndGV4dC9ldmVudC1zdHJlYW0nIH0pXG5cbiAgICBjb25zdCB7IGRhdGE6IHJlc3BvbnNlRGF0YSwgaGVhZGVyIH0gPSAoYXdhaXQgdGhpcy5yZXEuZmV0Y2goe1xuICAgICAgbWV0aG9kOiAncG9zdCcsXG4gICAgICBoZWFkZXJzOiB7IFt0aGlzLmkxOG4/LkxBTkdfSEVBREVSX0tFWV06IHRoaXMuaTE4bj8ubGFuZywgLi4uZmV0Y2hIZWFkZXJzLCAuLi5oZWFkZXJzIH0sXG4gICAgICBib2R5OiBKU09OLnN0cmluZ2lmeShkYXRhKSxcbiAgICAgIHVybCxcbiAgICAgIHN0cmVhbSxcbiAgICAgIHRpbWVvdXQsXG4gICAgfSkpIGFzIHsgZGF0YTogUHJvbWlzZTx1bmtub3duPiB8IFJlYWRhYmxlU3RyZWFtPFVpbnQ4QXJyYXk+OyBoZWFkZXI/OiBIZWFkZXJzIH1cblxuICAgIHJldHVybiB0aGlzLmhhbmRsZVJlc3BvbnNlRGF0YShyZXNwb25zZURhdGEsIGhlYWRlcikgYXMgYW55XG4gIH1cblxuICBib3RSZXF1ZXN0OiB0eXBlcy5Cb3RSZXEgPSBhc3luYyAoeyBtZXRob2QsIHVybCwgZGF0YSA9IHt9LCBoZWFkZXJzLCBzdHJlYW0sIHRpbWVvdXQgfSkgPT4ge1xuICAgIGlmIChtZXRob2QgPT09ICdnZXQnKSB7XG4gICAgICByZXR1cm4gdGhpcy5oYW5kbGVSZXNwb25zZURhdGEoKGF3YWl0IHRoaXMucmVxLmZldGNoKHsgdXJsOiBgJHt1cmx9PyR7b2JqZWN0VG9QYXJhbShkYXRhKX1gLCBtZXRob2QsIGhlYWRlcnMsIHN0cmVhbSwgdGltZW91dCB9KSkuZGF0YSwpXG4gICAgfVxuXG4gICAgY29uc3QgZmV0Y2hIZWFkZXJzID0ge1xuICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICB9XG4gICAgLy8g5bimIEFjY2VwdDogdGV4dC9ldmVudC1zdHJlYW0gIOivt+axguWktOaYvuW8j+aMh+WumuaYryBTU0Ug57uV6L+HIDYwcyDnmoTpmZDliLZcbiAgICBzdHJlYW0gJiYgT2JqZWN0LmFzc2lnbihmZXRjaEhlYWRlcnMsIHsgQWNjZXB0OiAndGV4dC9ldmVudC1zdHJlYW0nIH0pXG5cbiAgICBjb25zdCB7IGRhdGE6IHJlc3BvbnNlRGF0YSwgaGVhZGVyIH0gPSAoYXdhaXQgdGhpcy5yZXEuZmV0Y2goe1xuICAgICAgdXJsLFxuICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoZGF0YSksXG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgIFt0aGlzLmkxOG4/LkxBTkdfSEVBREVSX0tFWV06IHRoaXMuaTE4bj8ubGFuZyxcbiAgICAgICAgLi4uZmV0Y2hIZWFkZXJzLFxuICAgICAgICAuLi5oZWFkZXJzLFxuICAgICAgfSxcbiAgICAgIHN0cmVhbSxcbiAgICAgIG1ldGhvZCxcbiAgICAgIHRpbWVvdXQsXG4gICAgfSkpIGFzIHsgZGF0YTogUHJvbWlzZTx1bmtub3duPiB8IFJlYWRhYmxlU3RyZWFtPFVpbnQ4QXJyYXk+OyBoZWFkZXI/OiBIZWFkZXJzIH1cblxuICAgIHJldHVybiB0aGlzLmhhbmRsZVJlc3BvbnNlRGF0YShyZXNwb25zZURhdGEsIGhlYWRlcikgYXMgYW55XG5cbiAgICBmdW5jdGlvbiBvYmplY3RUb1BhcmFtKG9iajogT2JqZWN0KSB7XG4gICAgICByZXR1cm4gT2JqZWN0LmVudHJpZXMob2JqKVxuICAgICAgICAubWFwKChba2V5LCB2YWx1ZV0pID0+IGAke2tleX09JHt2YWx1ZX1gKVxuICAgICAgICAuam9pbignJicpXG4gICAgfVxuICB9XG5cbiAgcmVnaXN0ZXJGdW5jdGlvblRvb2woZnVuY3Rpb25Ub29sOiB0eXBlcy5GdW5jdGlvblRvb2wpIHtcbiAgICBpZiAobW9kZWxzLnRvb2xNYXAuaGFzKGZ1bmN0aW9uVG9vbC5uYW1lKSkge1xuICAgICAgY29uc29sZS53YXJuKGBBSSBmdW5jdGlvbiB0b29sICR7ZnVuY3Rpb25Ub29sLm5hbWV9IGFscmVhZHkgZXhpc3RzIGFuZCB3aWxsIGJlIG92ZXJ3cml0dGVuIWApXG4gICAgfVxuICAgIG1vZGVscy50b29sTWFwLnNldChmdW5jdGlvblRvb2wubmFtZSwgZnVuY3Rpb25Ub29sLmZuKVxuICB9XG59XG5cbmV4cG9ydCB7IEFJIH1cbiJdfQ==
264
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQUkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvQUkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUdBLDZCQUEyQjtBQUMzQiwrQ0FBa0M7QUFFbEMsaUNBQW1EO0FBRW5ELGtEQUFnRDtBQUV4QyxJQUFBLE1BQU0sR0FBSyxNQUFNLE9BQVgsQ0FBVztBQUV6QjtJQWdCRSxZQUNVLEdBQXdCLEVBQ3pCLE9BQWUsRUFDdEIsSUFBOEIsRUFDOUIsVUFBeUI7UUFKM0IsaUJBYUM7UUFaUyxRQUFHLEdBQUgsR0FBRyxDQUFxQjtRQUN6QixZQUFPLEdBQVAsT0FBTyxDQUFRO1FBeUZ4QixpQkFBWSxHQUFtQixVQUFPLEVBQXVDO2dCQUFyQyxHQUFHLFNBQUEsRUFBRSxJQUFJLFVBQUEsRUFBRSxPQUFPLGFBQUEsRUFBRSxNQUFNLFlBQUEsRUFBRSxPQUFPLGFBQUE7Ozs7Ozs7OzRCQUNuRSxZQUFZLEdBQUc7Z0NBQ25CLGNBQWMsRUFBRSxrQkFBa0I7NkJBQ25DLENBQUE7NEJBRUQsTUFBTSxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLEVBQUUsTUFBTSxFQUFFLG1CQUFtQixFQUFFLENBQUMsQ0FBQTs0QkFFOUIsV0FBTSxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQztvQ0FDM0QsTUFBTSxFQUFFLE1BQU07b0NBQ2QsT0FBTyxpQ0FBSyxNQUFBLElBQUksQ0FBQyxJQUFJLDBDQUFFLGVBQWUsSUFBRyxNQUFBLElBQUksQ0FBQyxJQUFJLDBDQUFFLElBQUksT0FBSyxZQUFZLEdBQUssT0FBTyxDQUFFO29DQUN2RixJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUM7b0NBQzFCLEdBQUcsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQztvQ0FD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QyxpQkFBaUIsQ0FBSSxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUE7SUFDckYsQ0FBQztJQXVERCxpQ0FBb0IsR0FBcEIsVUFBcUIsWUFBZ0M7UUFDbkQsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDekMsT0FBTyxDQUFDLElBQUksQ0FBQywyQkFBb0IsWUFBWSxDQUFDLElBQUksNkNBQTBDLENBQUMsQ0FBQTtTQUM5RjtRQUNELE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFBO0lBQ3hELENBQUM7SUFHTyx1QkFBVSxHQUFsQixVQUFtQixHQUFXO1FBQzVCLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVztZQUFFLE9BQU8sR0FBRyxDQUFBO1FBQ2pDLElBQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQTtRQUN0QyxJQUFJLFdBQVcsS0FBSyxJQUFJLENBQUMsT0FBTyxJQUFJLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ2hFLE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFdBQVcsQ0FBQyxDQUFBO1NBQzlDO1FBQ0QsT0FBTyxHQUFHLENBQUE7SUFDWixDQUFDO0lBQ0gsU0FBQztBQUFELENBQUMsQUFoTEQsSUFnTEM7QUFFUSxnQkFBRSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGVxZXFlcSAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uICovXG5pbXBvcnQgdHlwZSB7IFNES1JlcXVlc3RJbnRlcmZhY2UgfSBmcm9tICdAY2xvdWRiYXNlL2FkYXB0ZXItaW50ZXJmYWNlJ1xuaW1wb3J0IHsgQm90IH0gZnJvbSAnLi9ib3QnXG5pbXBvcnQgKiBhcyBtb2RlbHMgZnJvbSAnLi9tb2RlbHMnXG5pbXBvcnQgKiBhcyB0eXBlcyBmcm9tICcuL3R5cGUnXG5pbXBvcnQgeyByZWFkYWJsZVN0cmVhbTJKc29uT2JqZWN0IH0gZnJvbSAnLi91dGlscydcbmltcG9ydCB7IElDbG91ZGJhc2VDb25maWcgfSBmcm9tICdAY2xvdWRiYXNlL3R5cGVzJ1xuaW1wb3J0IHsgbGFuZ0V2ZW50IH0gZnJvbSAnQGNsb3VkYmFzZS91dGlsaXRpZXMnXG5cbmNvbnN0IHsgTU9ERUxTIH0gPSBtb2RlbHNcblxuY2xhc3MgQUkge1xuICBwdWJsaWMgYm90OiBCb3RcbiAgcHVibGljIGkxOG46IElDbG91ZGJhc2VDb25maWdbJ2kxOG4nXVxuICBkZWZhdWx0SGVhZGVyczogeyBbeDogc3RyaW5nXTogYW55IH1cbiAgcHJpdmF0ZSBfZ2V0QmFzZVVybD86ICgpID0+IHN0cmluZ1xuXG4gIC8qKiDliqjmgIHojrflj5YgYWlCYXNlVXJs77yM5pSv5oyBIHJlZ2lzdGVyRW5kUG9pbnRXaXRoS2V5IOWQjuerr+eCueWPmOabtOeUn+aViCAqL1xuICBnZXQgYWlCYXNlVXJsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMuX2dldEJhc2VVcmwgPyB0aGlzLl9nZXRCYXNlVXJsKCkgOiB0aGlzLmJhc2VVcmx9L2FpYFxuICB9XG5cbiAgLyoqIOWKqOaAgeiOt+WPliBhaUJvdEJhc2VVcmzvvIzmlK/mjIEgcmVnaXN0ZXJFbmRQb2ludFdpdGhLZXkg5ZCO56uv54K55Y+Y5pu055Sf5pWIICovXG4gIGdldCBhaUJvdEJhc2VVcmwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5fZ2V0QmFzZVVybCA/IHRoaXMuX2dldEJhc2VVcmwoKSA6IHRoaXMuYmFzZVVybH0vYWlib3RgXG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlcTogU0RLUmVxdWVzdEludGVyZmFjZSxcbiAgICBwdWJsaWMgYmFzZVVybDogc3RyaW5nLFxuICAgIGkxOG46IElDbG91ZGJhc2VDb25maWdbJ2kxOG4nXSxcbiAgICBnZXRCYXNlVXJsPzogKCkgPT4gc3RyaW5nLFxuICApIHtcbiAgICB0aGlzLl9nZXRCYXNlVXJsID0gZ2V0QmFzZVVybFxuICAgIHRoaXMuYm90ID0gbmV3IEJvdCh0aGlzLmJvdFJlcXVlc3QsIHRoaXMuYWlCb3RCYXNlVXJsKVxuICAgIHRoaXMuaTE4biA9IGkxOG5cblxuICAgIGxhbmdFdmVudC5idXMub24obGFuZ0V2ZW50LkxBTkdfQ0hBTkdFX0VWRU5ULCAocGFyYW1zKSA9PiB7XG4gICAgICB0aGlzLmkxOG4gPSBwYXJhbXMuZGF0YT8uaTE4biB8fCB0aGlzLmkxOG5cbiAgICB9KVxuICB9XG5cbiAgYXN5bmMgaGFuZGxlUmVzcG9uc2VEYXRhKHJlc3BvbnNlRGF0YTogUHJvbWlzZTx1bmtub3duPiB8IFJlYWRhYmxlU3RyZWFtPFVpbnQ4QXJyYXk+LCBoZWFkZXI/OiBIZWFkZXJzKSB7XG4gICAgY29uc3QgR09fVE9fQUlfVEVYVCA9IGAke3RoaXMuaTE4bi50KCfor7fmo4Dmn6XosIPnlKjmlrnlvI/vvIzmiJbliY3lvoDkupHlvIDlj5EgQUkrIOmmlumhteafpeeci+aWh+ahoycpfe+8mmh0dHBzOi8vdGNiLmNsb3VkLnRlbmNlbnQuY29tL2RldiMvYWlgXG5cbiAgICBjb25zdCB0aHJvd0lmRXJyb3IgPSAoanNvbjogdW5rbm93bikgPT4ge1xuICAgICAgaWYgKHR5cGVvZiBqc29uID09PSAnb2JqZWN0JyAmJiBqc29uICYmICdjb2RlJyBpbiBqc29uICYmIChqc29uIGFzIGFueSkuY29kZSAhPT0gJ05PUk1BTCcpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAke3RoaXMuaTE4bi50KCdBSSsg6K+35rGC5Ye66ZSZ77yM6ZSZ6K+v56CBJyl977yaJHsoanNvbiBhcyBhbnkpLmNvZGV977yMJHt0aGlzLmkxOG4udCgn6ZSZ6K+v5L+h5oGvJyl977yaJHtcbiAgICAgICAgICAoanNvbiBhcyBhbnkpLm1lc3NhZ2VcbiAgICAgICAgfVxcbiR7R09fVE9fQUlfVEVYVH1cXG4ke0pTT04uc3RyaW5naWZ5KGpzb24sIG51bGwsIDIpfWAsKVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIOmdnua1geW8j+ivt+axgu+8mlxuICAgIC8vIC0g5bCP56iL5bqPL1dlYiDpgILphY3lmajov5Tlm54gUHJvbWlzZe+8iGhhcyAndGhlbifvvIlcbiAgICAvLyAtIE5vZGUg6YCC6YWN5Zmo5bey5bCGIGJvZHkg6Kej5p6Q5Li65pmu6YCa5a+56LGh77yI5pegICd0aGVuJ+OAgeaXoCBnZXRSZWFkZXLvvIlcbiAgICAvLyDkuKTnp43mg4XlhrXpg73mjIkgSlNPTiDmoKHpqozplJnor6/noIHlkI7ljp/moLfov5Tlm55cbiAgICBpZiAodHlwZW9mIHJlc3BvbnNlRGF0YSA9PT0gJ29iamVjdCcgJiYgcmVzcG9uc2VEYXRhICYmIHR5cGVvZiAocmVzcG9uc2VEYXRhIGFzIGFueSkuZ2V0UmVhZGVyICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICBjb25zdCBqc29uID0gJ3RoZW4nIGluIHJlc3BvbnNlRGF0YSA/IGF3YWl0IHJlc3BvbnNlRGF0YSA6IHJlc3BvbnNlRGF0YVxuICAgICAgdGhyb3dJZkVycm9yKGpzb24pXG4gICAgICByZXR1cm4gcmVzcG9uc2VEYXRhXG4gICAgfVxuXG4gICAgLy8g5Yik5patIHJlc3BvbnNlRGF0YSDmmK/lkKbmmK8gUmVhZGFibGVTdHJlYW0g5a6e5L6L77yI5YW85a65IE5vZGUuanMg6YCC6YWN5Zmo6Z2e5rWB5byP5Zy65pmv5bey6Kej5p6Q5Li6IEpTT04g5a+56LGh55qE5oOF5Ya177yJXG4gICAgY29uc3QgaXNTdHJlYW0gPSB0eXBlb2YgKHJlc3BvbnNlRGF0YSBhcyBhbnkpPy5nZXRSZWFkZXIgPT09ICdmdW5jdGlvbidcblxuICAgIGlmICghaXNTdHJlYW0pIHtcbiAgICAgIC8vIHJlc3BvbnNlRGF0YSDlt7Lnu4/mmK/op6PmnpDlkI7nmoQgSlNPTiDlr7nosaHvvIjlpoIgTm9kZS5qcyDpgILphY3lmajpnZ7mtYHlvI/ov5Tlm57vvInvvIznm7TmjqXmo4Dmn6XplJnor6/noIFcbiAgICAgIGNvbnN0IGpzb24gPSByZXNwb25zZURhdGEgYXMgdW5rbm93biBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICAgICAgaWYgKHR5cGVvZiBqc29uID09PSAnb2JqZWN0JyAmJiBqc29uICYmICdjb2RlJyBpbiBqc29uICYmIGpzb24uY29kZSAhPT0gJ05PUk1BTCcpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAke3RoaXMuaTE4bi50KCdBSSsg6K+35rGC5Ye66ZSZ77yM6ZSZ6K+v56CBJyl977yaJHtqc29uLmNvZGV977yMJHt0aGlzLmkxOG4udCgn6ZSZ6K+v5L+h5oGvJyl977yaJHtcbiAgICAgICAgICBqc29uLm1lc3NhZ2VcbiAgICAgICAgfVxcbiR7R09fVE9fQUlfVEVYVH1cXG4ke0pTT04uc3RyaW5naWZ5KGpzb24sIG51bGwsIDIpfWAsKVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3BvbnNlRGF0YVxuICAgIH1cblxuICAgIC8vIOa1geW8j+ivt+axgu+8jOWmguaenOaOpeWPo+WHuumUme+8jOS8muWPmOaIkOS8oCBqc29uIOagvOW8j+eahOWTjeW6lO+8jOmAmui/hyBoZWFkZXIg5Yik5pat5qC85byPXG4gICAgaWYgKGhlYWRlcj8uZ2V0Py4oJ2NvbnRlbnQtdHlwZScpPy5pbmNsdWRlcygnYXBwbGljYXRpb24vanNvbicpKSB7XG4gICAgICBjb25zdCBqc29uID0gYXdhaXQgcmVhZGFibGVTdHJlYW0ySnNvbk9iamVjdChyZXNwb25zZURhdGEgYXMgUmVhZGFibGVTdHJlYW08VWludDhBcnJheT4pXG4gICAgICB0aHJvd0lmRXJyb3IoanNvbilcbiAgICB9XG4gICAgcmV0dXJuIHJlc3BvbnNlRGF0YVxuICB9XG5cbiAgY3JlYXRlTW9kZWwoXG4gICAgbW9kZWw6IHN0cmluZyxcbiAgICBvcHRpb25zPzoge1xuICAgICAgZGVmYXVsdE1vZGVsU3ViVXJsPzogc3RyaW5nXG4gICAgfSxcbiAgKSB7XG4gICAgbGV0IHNpbXBsZU1vZGVsOiB0eXBlcy5TaW1wbGVDaGF0TW9kZWxcblxuICAgIGNvbnN0IFNpbXBsZU1vZGVsQ29uc3RydWN0b3IgPSBNT0RFTFNbbW9kZWxdXG4gICAgaWYgKFNpbXBsZU1vZGVsQ29uc3RydWN0b3IpIHtcbiAgICAgIHNpbXBsZU1vZGVsID0gbmV3IFNpbXBsZU1vZGVsQ29uc3RydWN0b3IodGhpcy5tb2RlbFJlcXVlc3QsIHRoaXMuYWlCYXNlVXJsKVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBzdWJVcmwgPSB0eXBlb2Ygb3B0aW9ucz8uZGVmYXVsdE1vZGVsU3ViVXJsID09PSAnc3RyaW5nJyA/IG9wdGlvbnMuZGVmYXVsdE1vZGVsU3ViVXJsIDogJy9jaGF0L2NvbXBsZXRpb25zJ1xuXG4gICAgICBzaW1wbGVNb2RlbCA9IG5ldyBtb2RlbHMuRGVmYXVsdFNpbXBsZU1vZGVsKHRoaXMubW9kZWxSZXF1ZXN0LCB0aGlzLmFpQmFzZVVybCwgYCR7bW9kZWx9JHtzdWJVcmx9YClcbiAgICB9XG5cbiAgICBjb25zdCByZWFjdE1vZGVsID0gbmV3IG1vZGVscy5SZWFjdE1vZGVsKHNpbXBsZU1vZGVsKVxuICAgIHJldHVybiByZWFjdE1vZGVsXG4gIH1cblxuICByZWdpc3Rlck1vZGVsKG5hbWU6IHN0cmluZywgbW9kZWw6IHR5cGVzLkNoYXRNb2RlbENvbnN0cnVjdG9yKSB7XG4gICAgaWYgKE1PREVMU1tuYW1lXSAhPSBudWxsKSB7XG4gICAgICBjb25zb2xlLndhcm4oYEFJIG1vZGVsICR7bmFtZX0gYWxyZWFkeSBleGlzdHMhYClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBNT0RFTFNbbmFtZV0gPSBtb2RlbFxuICB9XG5cbiAgY3JlYXRlSW1hZ2VNb2RlbDxUIGV4dGVuZHMgJ2h1bnl1YW4taW1hZ2UnIHwgKHN0cmluZyAmIHt9KT4ocHJvdmlkZXI6IFQpIHtcbiAgICByZXR1cm4gbmV3IG1vZGVscy5EZWZhdWx0SW1hZ2VNb2RlbDxUPih0aGlzLm1vZGVsUmVxdWVzdCwgdGhpcy5haUJhc2VVcmwsIHByb3ZpZGVyKVxuICB9XG5cbiAgbW9kZWxSZXF1ZXN0OiB0eXBlcy5Nb2RlbFJlcSA9IGFzeW5jICh7IHVybCwgZGF0YSwgaGVhZGVycywgc3RyZWFtLCB0aW1lb3V0IH0pID0+IHtcbiAgICBjb25zdCBmZXRjaEhlYWRlcnMgPSB7XG4gICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgIH1cbiAgICAvLyDluKYgQWNjZXB0OiB0ZXh0L2V2ZW50LXN0cmVhbSAg6K+35rGC5aS05pi+5byP5oyH5a6a5pivIFNTRSDnu5Xov4cgNjBzIOeahOmZkOWItlxuICAgIHN0cmVhbSAmJiBPYmplY3QuYXNzaWduKGZldGNoSGVhZGVycywgeyBBY2NlcHQ6ICd0ZXh0L2V2ZW50LXN0cmVhbScgfSlcblxuICAgIGNvbnN0IHsgZGF0YTogcmVzcG9uc2VEYXRhLCBoZWFkZXIgfSA9IChhd2FpdCB0aGlzLnJlcS5mZXRjaCh7XG4gICAgICBtZXRob2Q6ICdwb3N0JyxcbiAgICAgIGhlYWRlcnM6IHsgW3RoaXMuaTE4bj8uTEFOR19IRUFERVJfS0VZXTogdGhpcy5pMThuPy5sYW5nLCAuLi5mZXRjaEhlYWRlcnMsIC4uLmhlYWRlcnMgfSxcbiAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KGRhdGEpLFxuICAgICAgdXJsOiB0aGlzLnJlc29sdmVVcmwodXJsKSxcbiAgICAgIHN0cmVhbSxcbiAgICAgIHRpbWVvdXQsXG4gICAgfSkpIGFzIHsgZGF0YTogUHJvbWlzZTx1bmtub3duPiB8IFJlYWRhYmxlU3RyZWFtPFVpbnQ4QXJyYXk+OyBoZWFkZXI/OiBIZWFkZXJzIH1cblxuICAgIHJldHVybiB0aGlzLmhhbmRsZVJlc3BvbnNlRGF0YShyZXNwb25zZURhdGEsIGhlYWRlcikgYXMgYW55XG4gIH1cblxuICBib3RSZXF1ZXN0OiB0eXBlcy5Cb3RSZXEgPSBhc3luYyAoeyBtZXRob2QsIHVybCwgZGF0YSA9IHt9LCBoZWFkZXJzLCBzdHJlYW0sIHRpbWVvdXQgfSkgPT4ge1xuICAgIGNvbnN0IHJlc29sdmVkVXJsID0gdGhpcy5yZXNvbHZlVXJsKHVybClcbiAgICBpZiAobWV0aG9kID09PSAnZ2V0Jykge1xuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlUmVzcG9uc2VEYXRhKChhd2FpdCB0aGlzLnJlcS5mZXRjaCh7IHVybDogYCR7cmVzb2x2ZWRVcmx9PyR7b2JqZWN0VG9QYXJhbShkYXRhKX1gLCBtZXRob2QsIGhlYWRlcnMsIHN0cmVhbSwgdGltZW91dCB9KSkuZGF0YSwpXG4gICAgfVxuXG4gICAgY29uc3QgZmV0Y2hIZWFkZXJzID0ge1xuICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICB9XG4gICAgLy8g5bimIEFjY2VwdDogdGV4dC9ldmVudC1zdHJlYW0gIOivt+axguWktOaYvuW8j+aMh+WumuaYryBTU0Ug57uV6L+HIDYwcyDnmoTpmZDliLZcbiAgICBzdHJlYW0gJiYgT2JqZWN0LmFzc2lnbihmZXRjaEhlYWRlcnMsIHsgQWNjZXB0OiAndGV4dC9ldmVudC1zdHJlYW0nIH0pXG5cbiAgICBjb25zdCB7IGRhdGE6IHJlc3BvbnNlRGF0YSwgaGVhZGVyIH0gPSAoYXdhaXQgdGhpcy5yZXEuZmV0Y2goe1xuICAgICAgdXJsOiByZXNvbHZlZFVybCxcbiAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KGRhdGEpLFxuICAgICAgaGVhZGVyczoge1xuICAgICAgICBbdGhpcy5pMThuPy5MQU5HX0hFQURFUl9LRVldOiB0aGlzLmkxOG4/LmxhbmcsXG4gICAgICAgIC4uLmZldGNoSGVhZGVycyxcbiAgICAgICAgLi4uaGVhZGVycyxcbiAgICAgIH0sXG4gICAgICBzdHJlYW0sXG4gICAgICBtZXRob2QsXG4gICAgICB0aW1lb3V0LFxuICAgIH0pKSBhcyB7IGRhdGE6IFByb21pc2U8dW5rbm93bj4gfCBSZWFkYWJsZVN0cmVhbTxVaW50OEFycmF5PjsgaGVhZGVyPzogSGVhZGVycyB9XG5cbiAgICByZXR1cm4gdGhpcy5oYW5kbGVSZXNwb25zZURhdGEocmVzcG9uc2VEYXRhLCBoZWFkZXIpIGFzIGFueVxuXG4gICAgZnVuY3Rpb24gb2JqZWN0VG9QYXJhbShvYmo6IE9iamVjdCkge1xuICAgICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKG9iailcbiAgICAgICAgLm1hcCgoW2tleSwgdmFsdWVdKSA9PiBgJHtrZXl9PSR7dmFsdWV9YClcbiAgICAgICAgLmpvaW4oJyYnKVxuICAgIH1cbiAgfVxuXG4gIHJlZ2lzdGVyRnVuY3Rpb25Ub29sKGZ1bmN0aW9uVG9vbDogdHlwZXMuRnVuY3Rpb25Ub29sKSB7XG4gICAgaWYgKG1vZGVscy50b29sTWFwLmhhcyhmdW5jdGlvblRvb2wubmFtZSkpIHtcbiAgICAgIGNvbnNvbGUud2FybihgQUkgZnVuY3Rpb24gdG9vbCAke2Z1bmN0aW9uVG9vbC5uYW1lfSBhbHJlYWR5IGV4aXN0cyBhbmQgd2lsbCBiZSBvdmVyd3JpdHRlbiFgKVxuICAgIH1cbiAgICBtb2RlbHMudG9vbE1hcC5zZXQoZnVuY3Rpb25Ub29sLm5hbWUsIGZ1bmN0aW9uVG9vbC5mbilcbiAgfVxuXG4gIC8qKiDliqjmgIHmm7/mjaIgVVJMIOS4reeahCBvcmlnaW4g6YOo5YiG77yM5pSv5oyBIHJlZ2lzdGVyRW5kUG9pbnRXaXRoS2V5IOWQjueUn+aViCAqL1xuICBwcml2YXRlIHJlc29sdmVVcmwodXJsOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy5fZ2V0QmFzZVVybCkgcmV0dXJuIHVybFxuICAgIGNvbnN0IGN1cnJlbnRCYXNlID0gdGhpcy5fZ2V0QmFzZVVybCgpXG4gICAgaWYgKGN1cnJlbnRCYXNlICE9PSB0aGlzLmJhc2VVcmwgJiYgdXJsLnN0YXJ0c1dpdGgodGhpcy5iYXNlVXJsKSkge1xuICAgICAgcmV0dXJuIHVybC5yZXBsYWNlKHRoaXMuYmFzZVVybCwgY3VycmVudEJhc2UpXG4gICAgfVxuICAgIHJldHVybiB1cmxcbiAgfVxufVxuXG5leHBvcnQgeyBBSSB9XG4iXX0=
@@ -373,4 +373,4 @@ var StreamResult = (function () {
373
373
  });
374
374
  return StreamResult;
375
375
  }());
376
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYm90L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF3QkEsa0NBTWlCO0FBRWpCO0lBR0UsYUFBWSxHQUFXLEVBQVMsT0FBZTtRQUFmLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFDN0MsSUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQzFCLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFO1lBQzdCLElBQUksQ0FBQyxHQUFHLEdBQUcsVUFBQyxFQUF5QjtnQkFBdkIsSUFBQSxlQUFZLEVBQVosT0FBTyxtQkFBRyxFQUFFLEtBQUEsRUFBSyxJQUFJLGNBQXZCLFdBQXlCLENBQUY7Z0JBQU8sT0FBQSxHQUFHLHVCQUFNLElBQUksS0FBRSxPQUFPLHdCQUFPLE9BQU8sS0FBRSxhQUFhLEVBQUUsaUJBQVUsS0FBSyxDQUFFLE9BQUssQ0FBQTthQUFBLENBQUE7U0FDdEg7YUFBTTtZQUNMLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFBO1NBQ2Y7SUFDSCxDQUFDO0lBRUQsa0JBQUksR0FBSixVQUFLLEtBQWtCLEVBQUUsT0FBb0I7UUFDM0MsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDO1lBQ2QsTUFBTSxFQUFFLEtBQUs7WUFDYixHQUFHLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7WUFDdEIsSUFBSSxFQUFFLEtBQUs7WUFDWCxPQUFPLEVBQUUsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLE9BQU87U0FDMUIsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVELG9CQUFNLEdBQU4sVUFBTyxFQUF1QixFQUFFLE9BQW9CO1lBQTNDLE9BQU8sYUFBQTtRQUNkLE9BQU8sSUFBSSxDQUFDLEdBQUcs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SyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQTt3QkFDbkMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQTtxQkFDekI7b0JBQUMsT0FBTyxDQUFDLEVBQUU7d0JBQ1YsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRTs0QkFDM0IsT0FBTyxDQUFDLElBQUksQ0FBQyxtREFBbUQsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUE7eUJBQzVFOzZCQUFNOzRCQUNMLFVBQVUsQ0FBQyxTQUFTLEVBQUUsQ0FBQTt5QkFDdkI7cUJBQ0Y7Z0JBQ0gsQ0FBQzthQUNGLENBQUMsQ0FBRSxDQUFFLENBQUE7UUFDUixDQUFDOzs7T0FBQTtJQUVELHNCQUFJLG9DQUFVO2FBQWQ7WUFDRSxPQUFPLElBQUEsMkJBQW1CLEVBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsSUFBSSx1QkFBZSxDQUE2QjtnQkFDckcsU0FBUyxZQUFDLEtBQUssRUFBRSxVQUFVOztvQkFDekIsVUFBVSxDQUFDLE9BQU8sQ0FBQyxNQUFBLEtBQUssYUFBTCxLQUFLLHVCQUFMLEtBQUssQ0FBRSxPQUFPLG1DQUFJLEVBQUUsQ0FBQyxDQUFBO2dCQUMxQyxDQUFDO2FBQ0YsQ0FBQyxDQUFFLENBQUUsQ0FBQTtRQUNSLENBQUM7OztPQUFBO0lBQ0gsbUJBQUM7QUFBRCxDQUFDLEFBNUNELElBNENDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBQYXJzZWRFdmVudCB9IGZyb20gJy4uL2V2ZW50c291cmNlX3BhcnNlcidcbmltcG9ydCB7IEJvdFJlcSwgUmVxT3B0aW9ucyB9IGZyb20gJy4uL3R5cGUnXG5pbXBvcnQge1xuICBJQm90Q3JlYXRlQ29udmVyc2F0aW9uLFxuICBJQm90RGVsZXRlQ29udmVyc2F0aW9uLFxuICBJQm90R2V0Q29udmVyc2F0aW9uLFxuICBJQm90R2V0VGV4dFRvU3BlZWNoUmVzdWx0LFxuICBJQm90UHJldmlldyxcbiAgSUJvdFNlbmRNZXNzYWdlLFxuICBJQm90U3BlZWNoVG9UZXh0LFxuICBJQm90VGV4dFRvU3BlZWNoLFxuICBJQm90VXBsb2FkRmlsZXMsXG4gIElDcmVhdGVCb3QsXG4gIElEZWxldGVCb3QsXG4gIElHZW5lcmF0ZUJvdCxcbiAgSUdlbmVyYXRlSW1hZ2UsXG4gIElHZXRCb3QsXG4gIElHZXRCb3RDaGF0UmVjb3JkcyxcbiAgSUdldEJvdEZlZWRiYWNrLFxuICBJR2V0Qm90TGlzdCxcbiAgSUdldEJvdFJlY29tbWVuZFF1ZXN0aW9ucyxcbiAgSVNlbmRCb3RGZWVkYmFjayxcbiAgSVVwZGF0ZUJvdCxcbn0gZnJvbSAnLi90eXBlcydcbmltcG9ydCB7XG4gIGNyZWF0ZUFzeW5jSXRlcmFibGUsXG4gIHRvUG9seWZpbGxSZWFkYWJsZSxcbiAgY3JlYXRlRXZlbnRTb3VyY2VQYXJzZXJUcmFuc2Zvcm1TdHJlYW0sXG4gIFRleHREZWNvZGVyU3RyZWFtLFxuICBUcmFuc2Zvcm1TdHJlYW0sXG59IGZyb20gJy4uL3V0aWxzJ1xuXG5leHBvcnQgY2xhc3MgQm90IHtcbiAgcmVxOiBCb3RSZXFcblxuICBjb25zdHJ1Y3RvcihyZXE6IEJvdFJlcSwgcHVibGljIGJhc2VVcmw6IHN0cmluZykge1xuICAgIGNvbnN0IHRva2VuID0gYXJndW1lbnRzWzJdXG4gICAgaWYgKHR5cGVvZiB0b2tlbiA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHRoaXMucmVxID0gKHsgaGVhZGVycyA9IHt9LCAuLi5yZXN0IH0pID0+IHJlcSh7IC4uLnJlc3QsIGhlYWRlcnM6IHsgLi4uaGVhZGVycywgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke3Rva2VufWAgfSB9KVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJlcSA9IHJlcVxuICAgIH1cbiAgfVxuXG4gIGxpc3QocHJvcHM6IElHZXRCb3RMaXN0LCBvcHRpb25zPzogUmVxT3B0aW9ucykge1xuICAgIHJldHVybiB0aGlzLnJlcSh7XG4gICAgICBtZXRob2Q6ICdnZXQnLFxuICAgICAgdXJsOiB0aGlzLmpvaW4oJ2JvdHMnKSxcbiAgICAgIGRhdGE6IHByb3BzLFxuICAgICAgdGltZW91dDogb3B0aW9ucz8udGltZW91dCxcbiAgICB9KVxuICB9XG5cbiAgY3JlYXRlKHsgYm90SW5mbyB9OiBJQ3JlYXRlQm90LCBvcHRpb25zPzogUmVxT3B0aW9ucykge1xuICAgIHJldHVybiB0aGlzLnJlcSh7XG4gICAgICBtZXRob2Q6ICdwb3N0JyxcbiAgICAgIHVybDogdGhpcy5qb2luKCdib3RzJyksXG4gICAgICBkYXRhOiBib3RJbmZvLFxuICAgICAgdGltZW91dDogb3B0aW9ucz8udGltZW91dCxcbiAgICB9KVxuICB9XG5cbiAgZ2V0KHsgYm90SWQgfTogSUdldEJvdCwgb3B0aW9ucz86IFJlcU9wdGlvbnMpIHtcbiAgICByZXR1cm4gdGhpcy5yZXEoe1xuICAgICAgbWV0aG9kOiAnZ2V0JyxcbiAgICAgIHVybDogdGhpcy5qb2luKGBib3RzLyR7Ym90SWR9YCksXG4gICAgICB0aW1lb3V0OiBvcHRpb25zPy50aW1lb3V0LFxuICAgIH0pXG4gIH1cblxuICB1cGRhdGUoeyBib3RJZCwgYm90SW5mbyB9OiBJVXBkYXRlQm90LCBvcHRpb25zPzogUmVxT3B0aW9ucykge1xuICAgIHJldHVybiB0aGlzLnJlcSh7XG4gICAgICBtZXRob2Q6ICdQQVRDSCcsXG4gICAgICB1cmw6IHRoaXMuam9pbihgYm90cy8ke2JvdElkfWApLFxuICAgICAgZGF0YTogYm90SW5mbyxcbiAgICAgIHRpbWVvdXQ6IG9wdGlvbnM/LnRpbWVvdXQsXG4gICAgfSlcbiAgfVxuXG4gIGRlbGV0ZSh7IGJvdElkIH06IElEZWxldGVCb3QsIG9wdGlvbnM/OiBSZXFPcHRpb25zKSB7XG4gICAgcmV0dXJuIHRoaXMucmVxKHsgbWV0aG9kOiAnZGVsZXRlJywgdXJsOiB0aGlzLmpvaW4oYGJvdHMvJHtib3RJZH1gKSwgdGltZW91dDogb3B0aW9ucz8udGltZW91dCB9KVxuICB9XG5cbiAgZ2V0Q2hhdFJlY29yZHMocHJvcHM6IElHZXRCb3RDaGF0UmVjb3Jkcywgb3B0aW9ucz86IFJlcU9wdGlvbnMpIHtcbiAgICByZXR1cm4gdGhpcy5yZXEoe1xuICAgICAgbWV0aG9kOiAnZ2V0JyxcbiAgICAgIHVybDogdGhpcy5qb2luKGBib3RzLyR7cHJvcHMuYm90SWR9L3JlY29yZHNgKSxcbiAgICAgIGRhdGE6IHByb3BzLFxuICAgICAgdGltZW91dDogb3B0aW9ucz8udGltZW91dCxcbiAgICB9KVxuICB9XG5cbiAgc2VuZEZlZWRiYWNrKHsgdXNlckZlZWRiYWNrIH06IElTZW5kQm90RmVlZGJhY2ssIG9wdGlvbnM/OiBSZXFPcHRpb25zKSB7XG4gICAgcmV0dXJuIHRoaXMucmVxKHtcbiAgICAgIG1ldGhvZDogJ3Bvc3QnLFxuICAgICAgdXJsOiB0aGlzLmpvaW4oYGJvdHMvJHt1c2VyRmVlZGJhY2suYm90SWR9L2ZlZWRiYWNrYCksXG4gICAgICBkYXRhOiB1c2VyRmVlZGJhY2ssXG4gICAgICB0aW1lb3V0OiBvcHRpb25zPy50aW1lb3V0LFxuICAgIH0pXG4gIH1cblxuICBnZXRGZWVkYmFjayhwcm9wczogSUdldEJvdEZlZWRiYWNrLCBvcHRpb25zPzogUmVxT3B0aW9ucykge1xuICAgIHJldHVybiB0aGlzLnJlcSh7XG4gICAgICBtZXRob2Q6ICdnZXQnLFxuICAgICAgdXJsOiB0aGlzLmpvaW4oYGJvdHMvJHtwcm9wcy5ib3RJZH0vZmVlZGJhY2tgKSxcbiAgICAgIGRhdGE6IHByb3BzLFxuICAgICAgdGltZW91dDogb3B0aW9ucz8udGltZW91dCxcbiAgICB9KVxuICB9XG5cbiAgYXN5bmMgdXBsb2FkRmlsZXMocHJvcHM6IElCb3RVcGxvYWRGaWxlcywgb3B0aW9ucz86IFJlcU9wdGlvbnMpIHtcbiAgICByZXR1cm4gdGhpcy5yZXEoe1xuICAgICAgbWV0aG9kOiAncG9zdCcsXG4gICAgICB1cmw6IHRoaXMuam9pbihgYm90cy8ke3Byb3BzLmJvdElkfS9maWxlc2ApLFxuICAgICAgZGF0YTogcHJvcHMsXG4gICAgICB0aW1lb3V0OiBvcHRpb25zPy50aW1lb3V0LFxuICAgIH0pXG4gIH1cblxuICBhc3luYyBjcmVhdGVDb252ZXJzYXRpb24oeyBib3RJZCwgLi4ucmVzdCB9OiBJQm90Q3JlYXRlQ29udmVyc2F0aW9uLCBvcHRpb25zPzogUmVxT3B0aW9ucykge1xuICAgIHJldHVybiB0aGlzLnJlcSh7XG4gICAgICBtZXRob2Q6ICdwb3N0JyxcbiAgICAgIHVybDogdGhpcy5qb2luKGBib3RzLyR7Ym90SWR9L2NvbnZlcnNhdGlvbmApLFxuICAgICAgZGF0YTogcmVzdCxcbiAgICAgIHRpbWVvdXQ6IG9wdGlvbnM/LnRpbWVvdXQsXG4gICAgfSlcbiAgfVxuXG4gIGFzeW5jIGdldENvbnZlcnNhdGlvbih7IHBhZ2VTaXplID0gMTAsIHBhZ2VOdW1iZXIgPSAxLCBib3RJZCwgLi4ucmVzdCB9OiBJQm90R2V0Q29udmVyc2F0aW9uLCBvcHRpb25zPzogUmVxT3B0aW9ucykge1xuICAgIGlmIChwYWdlTnVtYmVyIDwgMSkgdGhyb3cgbmV3IEVycm9yKCdwYWdlTnVtYmVyIG11c3QgYmUgZ3JlYXRlciB0aGFuIDAnKVxuICAgIGNvbnN0IG9mZnNldCA9IHBhZ2VTaXplICogKHBhZ2VOdW1iZXIgLSAxKVxuICAgIGNvbnN0IGxpbWl0ID0gcGFnZVNpemVcbiAgICByZXR1cm4gdGhpcy5yZXEoe1xuICAgICAgbWV0aG9kOiAnZ2V0JyxcbiAgICAgIHVybDogdGhpcy5qb2luKGBib3RzLyR7Ym90SWR9L2NvbnZlcnNhdGlvbmApLFxuICAgICAgZGF0YTogeyAuLi5yZXN0LCBvZmZzZXQsIGxpbWl0IH0sXG4gICAgICB0aW1lb3V0OiBvcHRpb25zPy50aW1lb3V0LFxuICAgIH0pXG4gIH1cblxuICBhc3luYyBkZWxldGVDb252ZXJzYXRpb24oeyBib3RJZCwgY29udmVyc2F0aW9uSWQsIC4uLnJlc3QgfTogSUJvdERlbGV0ZUNvbnZlcnNhdGlvbiwgb3B0aW9ucz86IFJlcU9wdGlvbnMpIHtcbiAgICByZXR1cm4gdGhpcy5yZXEoe1xuICAgICAgbWV0aG9kOiAnZGVsZXRlJyxcbiAgICAgIHVybDogdGhpcy5qb2luKGBib3RzLyR7Ym90SWR9L2NvbnZlcnNhdGlvbi8ke2NvbnZlcnNhdGlvbklkfWApLFxuICAgICAgZGF0YTogcmVzdCxcbiAgICAgIHRpbWVvdXQ6IG9wdGlvbnM/LnRpbWVvdXQsXG4gICAgfSlcbiAgfVxuXG4gIGFzeW5jIHNwZWVjaFRvVGV4dChwcm9wczogSUJvdFNwZWVjaFRvVGV4dCwgb3B0aW9ucz86IFJlcU9wdGlvbnMpIHtcbiAgICByZXR1cm4gdGhpcy5yZXEoe1xuICAgICAgbWV0aG9kOiAncG9zdCcsXG4gICAgICB1cmw6IHRoaXMuam9pbihgYm90cy8ke3Byb3BzLmJvdElkfS9zcGVlY2gtdG8tdGV4dGApLFxuICAgICAgZGF0YTogcHJvcHMsXG4gICAgICB0aW1lb3V0OiBvcHRpb25zPy50aW1lb3V0LFxuICAgIH0pXG4gIH1cblxuICBhc3luYyB0ZXh0VG9TcGVlY2gocHJvcHM6IElCb3RUZXh0VG9TcGVlY2gsIG9wdGlvbnM/OiBSZXFPcHRpb25zKSB7XG4gICAgcmV0dXJuIHRoaXMucmVxKHtcbiAgICAgIG1ldGhvZDogJ3Bvc3QnLFxuICAgICAgdXJsOiB0aGlzLmpvaW4oYGJvdHMvJHtwcm9wcy5ib3RJZH0vdGV4dC10by1zcGVlY2hgKSxcbiAgICAgIGRhdGE6IHByb3BzLFxuICAgICAgdGltZW91dDogb3B0aW9ucz8udGltZW91dCxcbiAgICB9KVxuICB9XG5cbiAgYXN5bmMgZ2V0VGV4dFRvU3BlZWNoUmVzdWx0KHByb3BzOiBJQm90R2V0VGV4dFRvU3BlZWNoUmVzdWx0LCBvcHRpb25zPzogUmVxT3B0aW9ucykge1xuICAgIHJldHVybiB0aGlzLnJlcSh7XG4gICAgICBtZXRob2Q6ICdnZXQnLFxuICAgICAgdXJsOiB0aGlzLmpvaW4oYGJvdHMvJHtwcm9wcy5ib3RJZH0vdGV4dC10by1zcGVlY2hgKSxcbiAgICAgIGRhdGE6IHByb3BzLFxuICAgICAgdGltZW91dDogb3B0aW9ucz8udGltZW91dCxcbiAgICB9KVxuICB9XG5cbiAgYXN5bmMgZ2V0UmVjb21tZW5kUXVlc3Rpb25zKHByb3BzOiBJR2V0Qm90UmVjb21tZW5kUXVlc3Rpb25zLCBvcHRpb25zPzogUmVxT3B0aW9ucykge1xuICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMucmVxKHtcbiAgICAgIG1ldGhvZDogJ3Bvc3QnLFxuICAgICAgdXJsOiB0aGlzLmpvaW4oYGJvdHMvJHtwcm9wcy5ib3RJZH0vcmVjb21tZW5kLXF1ZXN0aW9uc2ApLFxuICAgICAgZGF0YTogcHJvcHMsXG4gICAgICBzdHJlYW06IHRydWUsXG4gICAgICB0aW1lb3V0OiBvcHRpb25zPy50aW1lb3V0LFxuICAgIH0pXG4gICAgcmV0dXJuIG5ldyBTdHJlYW1SZXN1bHQocmVzKVxuICB9XG5cbiAgYXN5bmMgZ2VuZXJhdGVCb3QocHJvcHM6IElHZW5lcmF0ZUJvdCwgb3B0aW9ucz86IFJlcU9wdGlvbnMpIHtcbiAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLnJlcSh7XG4gICAgICBtZXRob2Q6ICdwb3N0JyxcbiAgICAgIHVybDogdGhpcy5qb2luKCdnZW5lcmF0ZS1ib3QnKSxcbiAgICAgIGRhdGE6IHByb3BzLFxuICAgICAgc3RyZWFtOiB0cnVlLFxuICAgICAgdGltZW91dDogb3B0aW9ucz8udGltZW91dCxcbiAgICB9KVxuICAgIHJldHVybiBuZXcgU3RyZWFtUmVzdWx0KHJlcylcbiAgfVxuXG4gIGFzeW5jIGdldFByZXZpZXcocHJvcHM6IElCb3RQcmV2aWV3LCBvcHRpb25zPzogUmVxT3B0aW9ucykge1xuICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMucmVxKHtcbiAgICAgIG1ldGhvZDogJ3Bvc3QnLFxuICAgICAgdXJsOiB0aGlzLmpvaW4oJ3ByZXZpZXcnKSxcbiAgICAgIGRhdGE6IHByb3BzLFxuICAgICAgc3RyZWFtOiB0cnVlLFxuICAgICAgdGltZW91dDogb3B0aW9ucz8udGltZW91dCxcbiAgICB9KVxuICAgIHJldHVybiBuZXcgU3RyZWFtUmVzdWx0KHJlcylcbiAgfVxuXG4gIGdlbmVyYXRlSW1hZ2UocHJvcHM6IElHZW5lcmF0ZUltYWdlLCBvcHRpb25zPzogUmVxT3B0aW9ucykge1xuICAgIHJldHVybiB0aGlzLnJlcSh7IG1ldGhvZDogJ3Bvc3QnLCB1cmw6IHRoaXMuam9pbignZ2VuZXJhdGUtaW1hZ2UnKSwgZGF0YTogcHJvcHMsIHRpbWVvdXQ6IG9wdGlvbnM/LnRpbWVvdXQgfSlcbiAgfVxuXG4gIGFzeW5jIHNlbmRNZXNzYWdlKHByb3BzOiBJQm90U2VuZE1lc3NhZ2UsIG9wdGlvbnM/OiBSZXFPcHRpb25zKSB7XG4gICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5yZXEoe1xuICAgICAgbWV0aG9kOiAncG9zdCcsXG4gICAgICB1cmw6IHRoaXMuam9pbihgYm90cy8ke3Byb3BzLmJvdElkfS9zZW5kLW1lc3NhZ2VgKSxcbiAgICAgIGRhdGE6IHByb3BzLFxuICAgICAgc3RyZWFtOiB0cnVlLFxuICAgICAgdGltZW91dDogb3B0aW9ucz8udGltZW91dCxcbiAgICB9KVxuICAgIHJldHVybiBuZXcgU3RyZWFtUmVzdWx0KHJlcylcbiAgfVxuXG4gIHByaXZhdGUgam9pbih1cmw6IHN0cmluZykge1xuICAgIHJldHVybiBgJHt0aGlzLmJhc2VVcmx9LyR7dXJsfWBcbiAgfVxufVxuXG50eXBlIEJvdEV2ZW50U3RyZWFtRGF0YSA9IHsgY29udGVudDogc3RyaW5nIH1cblxuY2xhc3MgU3RyZWFtUmVzdWx0IHtcbiAgcHJpdmF0ZSBfZXZlbnRTb3VyY2VTdHJlYW06IFJlYWRhYmxlU3RyZWFtPFBhcnNlZEV2ZW50PlxuXG4gIGNvbnN0cnVjdG9yKF9zdHJlYW06IFJlYWRhYmxlU3RyZWFtPFVpbnQ4QXJyYXk+KSB7XG4gICAgY29uc3Qgc3RyZWFtID0gdG9Qb2x5ZmlsbFJlYWRhYmxlKF9zdHJlYW0pIGFzIHR5cGVvZiBfc3RyZWFtXG4gICAgdGhpcy5fZXZlbnRTb3VyY2VTdHJlYW0gPSBzdHJlYW1cbiAgICAgIC5waXBlVGhyb3VnaChuZXcgVGV4dERlY29kZXJTdHJlYW0oKSlcbiAgICAgIC5waXBlVGhyb3VnaChjcmVhdGVFdmVudFNvdXJjZVBhcnNlclRyYW5zZm9ybVN0cmVhbSgpKVxuICB9XG5cbiAgcHJpdmF0ZSBnZXQgdGVlZWRTdHJlYW0oKSB7XG4gICAgY29uc3QgW3MxLCBzMl0gPSB0aGlzLl9ldmVudFNvdXJjZVN0cmVhbS50ZWUoKVxuICAgIHRoaXMuX2V2ZW50U291cmNlU3RyZWFtID0gczJcbiAgICByZXR1cm4gczFcbiAgfVxuXG4gIGdldCBldmVudFNvdXJjZVN0cmVhbSgpIHtcbiAgICByZXR1cm4gY3JlYXRlQXN5bmNJdGVyYWJsZSh0aGlzLnRlZWVkU3RyZWFtKVxuICB9XG5cbiAgZ2V0IGRhdGFTdHJlYW0oKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUFzeW5jSXRlcmFibGUodGhpcy5ldmVudFNvdXJjZVN0cmVhbS5waXBlVGhyb3VnaChuZXcgVHJhbnNmb3JtU3RyZWFtPFBhcnNlZEV2ZW50LCBCb3RFdmVudFN0cmVhbURhdGE+KHtcbiAgICAgIHRyYW5zZm9ybShjaHVuaywgY29udHJvbGxlcikge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IGRhdGEgPSBKU09OLnBhcnNlKGNodW5rLmRhdGEpXG4gICAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKGRhdGEpXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBpZiAoY2h1bmsuZGF0YSAhPT0gJ1tET05FXScpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignRXJyb3Igd2hlbiB0cmFuc2Zvcm1pbmcgZXZlbnQgc291cmNlIGRhdGEgdG8ganNvbicsIGUsIGNodW5rKVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb250cm9sbGVyLnRlcm1pbmF0ZSgpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgIH0pLCksKVxuICB9XG5cbiAgZ2V0IHRleHRTdHJlYW0oKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUFzeW5jSXRlcmFibGUodGhpcy5kYXRhU3RyZWFtLnBpcGVUaHJvdWdoKG5ldyBUcmFuc2Zvcm1TdHJlYW08Qm90RXZlbnRTdHJlYW1EYXRhLCBzdHJpbmc+KHtcbiAgICAgIHRyYW5zZm9ybShjaHVuaywgY29udHJvbGxlcikge1xuICAgICAgICBjb250cm9sbGVyLmVucXVldWUoY2h1bms/LmNvbnRlbnQgPz8gJycpXG4gICAgICB9LFxuICAgIH0pLCksKVxuICB9XG59XG4iXX0=
376
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYm90L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF3QkEsa0NBTWlCO0FBRWpCO0lBR0UsYUFBWSxHQUFXLEVBQVMsT0FBZTtRQUFmLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFFN0MsSUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQzFCLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFO1lBQzdCLElBQUksQ0FBQyxHQUFHLEdBQUcsVUFBQyxFQUF5QjtnQkFBdkIsSUFBQSxlQUFZLEVBQVosT0FBTyxtQkFBRyxFQUFFLEtBQUEsRUFBSyxJQUFJLGNBQXZCLFdBQXlCLENBQUY7Z0JBQU8sT0FBQSxHQUFHLHVCQUFNLElBQUksS0FBRSxPQUFPLHdCQUFPLE9BQU8sS0FBRSxhQUFhLEVBQUUsaUJBQVUsS0FBSyxDQUFFLE9BQUssQ0FBQTthQUFBLENBQUE7U0FDdEg7YUFBTTtZQUNMLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFBO1NBQ2Y7SUFDSCxDQUFDO0lBRUQsa0JBQUksR0FBSixVQUFLLEtBQWtCLEVBQUUsT0FBb0I7UUFDM0MsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDO1lBQ2QsTUFBTSxFQUFFLEtBQUs7WUFDYixHQUFHLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7WUFDdEIsSUFBSSxFQUFFLEtBQUs7WUFDWCxPQUFPLEVBQUUsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLE9BQU87U0FDMUIsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVELG9CQUFNLEdBQU4sVUFBTyxFQUF1QixFQUFFLE9BQW9CO1lBQTNDLE9BQU8sYUFBQTtRQUNkLE9BQU8sSUFBSSxDQUFDLEdBQUcs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SyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQTt3QkFDbkMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQTtxQkFDekI7b0JBQUMsT0FBTyxDQUFDLEVBQUU7d0JBQ1YsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRTs0QkFDM0IsT0FBTyxDQUFDLElBQUksQ0FBQyxtREFBbUQsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUE7eUJBQzVFOzZCQUFNOzRCQUNMLFVBQVUsQ0FBQyxTQUFTLEVBQUUsQ0FBQTt5QkFDdkI7cUJBQ0Y7Z0JBQ0gsQ0FBQzthQUNGLENBQUMsQ0FBRSxDQUFFLENBQUE7UUFDUixDQUFDOzs7T0FBQTtJQUVELHNCQUFJLG9DQUFVO2FBQWQ7WUFDRSxPQUFPLElBQUEsMkJBQW1CLEVBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsSUFBSSx1QkFBZSxDQUE2QjtnQkFDckcsU0FBUyxZQUFDLEtBQUssRUFBRSxVQUFVOztvQkFDekIsVUFBVSxDQUFDLE9BQU8sQ0FBQyxNQUFBLEtBQUssYUFBTCxLQUFLLHVCQUFMLEtBQUssQ0FBRSxPQUFPLG1DQUFJLEVBQUUsQ0FBQyxDQUFBO2dCQUMxQyxDQUFDO2FBQ0YsQ0FBQyxDQUFFLENBQUUsQ0FBQTtRQUNSLENBQUM7OztPQUFBO0lBQ0gsbUJBQUM7QUFBRCxDQUFDLEFBN0NELElBNkNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBQYXJzZWRFdmVudCB9IGZyb20gJy4uL2V2ZW50c291cmNlX3BhcnNlcidcbmltcG9ydCB7IEJvdFJlcSwgUmVxT3B0aW9ucyB9IGZyb20gJy4uL3R5cGUnXG5pbXBvcnQge1xuICBJQm90Q3JlYXRlQ29udmVyc2F0aW9uLFxuICBJQm90RGVsZXRlQ29udmVyc2F0aW9uLFxuICBJQm90R2V0Q29udmVyc2F0aW9uLFxuICBJQm90R2V0VGV4dFRvU3BlZWNoUmVzdWx0LFxuICBJQm90UHJldmlldyxcbiAgSUJvdFNlbmRNZXNzYWdlLFxuICBJQm90U3BlZWNoVG9UZXh0LFxuICBJQm90VGV4dFRvU3BlZWNoLFxuICBJQm90VXBsb2FkRmlsZXMsXG4gIElDcmVhdGVCb3QsXG4gIElEZWxldGVCb3QsXG4gIElHZW5lcmF0ZUJvdCxcbiAgSUdlbmVyYXRlSW1hZ2UsXG4gIElHZXRCb3QsXG4gIElHZXRCb3RDaGF0UmVjb3JkcyxcbiAgSUdldEJvdEZlZWRiYWNrLFxuICBJR2V0Qm90TGlzdCxcbiAgSUdldEJvdFJlY29tbWVuZFF1ZXN0aW9ucyxcbiAgSVNlbmRCb3RGZWVkYmFjayxcbiAgSVVwZGF0ZUJvdCxcbn0gZnJvbSAnLi90eXBlcydcbmltcG9ydCB7XG4gIGNyZWF0ZUFzeW5jSXRlcmFibGUsXG4gIHRvUG9seWZpbGxSZWFkYWJsZSxcbiAgY3JlYXRlRXZlbnRTb3VyY2VQYXJzZXJUcmFuc2Zvcm1TdHJlYW0sXG4gIFRleHREZWNvZGVyU3RyZWFtLFxuICBUcmFuc2Zvcm1TdHJlYW0sXG59IGZyb20gJy4uL3V0aWxzJ1xuXG5leHBvcnQgY2xhc3MgQm90IHtcbiAgcmVxOiBCb3RSZXFcblxuICBjb25zdHJ1Y3RvcihyZXE6IEJvdFJlcSwgcHVibGljIGJhc2VVcmw6IHN0cmluZykge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItcmVzdC1wYXJhbXNcbiAgICBjb25zdCB0b2tlbiA9IGFyZ3VtZW50c1syXVxuICAgIGlmICh0eXBlb2YgdG9rZW4gPT09ICdzdHJpbmcnKSB7XG4gICAgICB0aGlzLnJlcSA9ICh7IGhlYWRlcnMgPSB7fSwgLi4ucmVzdCB9KSA9PiByZXEoeyAuLi5yZXN0LCBoZWFkZXJzOiB7IC4uLmhlYWRlcnMsIEF1dGhvcml6YXRpb246IGBCZWFyZXIgJHt0b2tlbn1gIH0gfSlcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yZXEgPSByZXFcbiAgICB9XG4gIH1cblxuICBsaXN0KHByb3BzOiBJR2V0Qm90TGlzdCwgb3B0aW9ucz86IFJlcU9wdGlvbnMpIHtcbiAgICByZXR1cm4gdGhpcy5yZXEoe1xuICAgICAgbWV0aG9kOiAnZ2V0JyxcbiAgICAgIHVybDogdGhpcy5qb2luKCdib3RzJyksXG4gICAgICBkYXRhOiBwcm9wcyxcbiAgICAgIHRpbWVvdXQ6IG9wdGlvbnM/LnRpbWVvdXQsXG4gICAgfSlcbiAgfVxuXG4gIGNyZWF0ZSh7IGJvdEluZm8gfTogSUNyZWF0ZUJvdCwgb3B0aW9ucz86IFJlcU9wdGlvbnMpIHtcbiAgICByZXR1cm4gdGhpcy5yZXEoe1xuICAgICAgbWV0aG9kOiAncG9zdCcsXG4gICAgICB1cmw6IHRoaXMuam9pbignYm90cycpLFxuICAgICAgZGF0YTogYm90SW5mbyxcbiAgICAgIHRpbWVvdXQ6IG9wdGlvbnM/LnRpbWVvdXQsXG4gICAgfSlcbiAgfVxuXG4gIGdldCh7IGJvdElkIH06IElHZXRCb3QsIG9wdGlvbnM/OiBSZXFPcHRpb25zKSB7XG4gICAgcmV0dXJuIHRoaXMucmVxKHtcbiAgICAgIG1ldGhvZDogJ2dldCcsXG4gICAgICB1cmw6IHRoaXMuam9pbihgYm90cy8ke2JvdElkfWApLFxuICAgICAgdGltZW91dDogb3B0aW9ucz8udGltZW91dCxcbiAgICB9KVxuICB9XG5cbiAgdXBkYXRlKHsgYm90SWQsIGJvdEluZm8gfTogSVVwZGF0ZUJvdCwgb3B0aW9ucz86IFJlcU9wdGlvbnMpIHtcbiAgICByZXR1cm4gdGhpcy5yZXEoe1xuICAgICAgbWV0aG9kOiAnUEFUQ0gnLFxuICAgICAgdXJsOiB0aGlzLmpvaW4oYGJvdHMvJHtib3RJZH1gKSxcbiAgICAgIGRhdGE6IGJvdEluZm8sXG4gICAgICB0aW1lb3V0OiBvcHRpb25zPy50aW1lb3V0LFxuICAgIH0pXG4gIH1cblxuICBkZWxldGUoeyBib3RJZCB9OiBJRGVsZXRlQm90LCBvcHRpb25zPzogUmVxT3B0aW9ucykge1xuICAgIHJldHVybiB0aGlzLnJlcSh7IG1ldGhvZDogJ2RlbGV0ZScsIHVybDogdGhpcy5qb2luKGBib3RzLyR7Ym90SWR9YCksIHRpbWVvdXQ6IG9wdGlvbnM/LnRpbWVvdXQgfSlcbiAgfVxuXG4gIGdldENoYXRSZWNvcmRzKHByb3BzOiBJR2V0Qm90Q2hhdFJlY29yZHMsIG9wdGlvbnM/OiBSZXFPcHRpb25zKSB7XG4gICAgcmV0dXJuIHRoaXMucmVxKHtcbiAgICAgIG1ldGhvZDogJ2dldCcsXG4gICAgICB1cmw6IHRoaXMuam9pbihgYm90cy8ke3Byb3BzLmJvdElkfS9yZWNvcmRzYCksXG4gICAgICBkYXRhOiBwcm9wcyxcbiAgICAgIHRpbWVvdXQ6IG9wdGlvbnM/LnRpbWVvdXQsXG4gICAgfSlcbiAgfVxuXG4gIHNlbmRGZWVkYmFjayh7IHVzZXJGZWVkYmFjayB9OiBJU2VuZEJvdEZlZWRiYWNrLCBvcHRpb25zPzogUmVxT3B0aW9ucykge1xuICAgIHJldHVybiB0aGlzLnJlcSh7XG4gICAgICBtZXRob2Q6ICdwb3N0JyxcbiAgICAgIHVybDogdGhpcy5qb2luKGBib3RzLyR7dXNlckZlZWRiYWNrLmJvdElkfS9mZWVkYmFja2ApLFxuICAgICAgZGF0YTogdXNlckZlZWRiYWNrLFxuICAgICAgdGltZW91dDogb3B0aW9ucz8udGltZW91dCxcbiAgICB9KVxuICB9XG5cbiAgZ2V0RmVlZGJhY2socHJvcHM6IElHZXRCb3RGZWVkYmFjaywgb3B0aW9ucz86IFJlcU9wdGlvbnMpIHtcbiAgICByZXR1cm4gdGhpcy5yZXEoe1xuICAgICAgbWV0aG9kOiAnZ2V0JyxcbiAgICAgIHVybDogdGhpcy5qb2luKGBib3RzLyR7cHJvcHMuYm90SWR9L2ZlZWRiYWNrYCksXG4gICAgICBkYXRhOiBwcm9wcyxcbiAgICAgIHRpbWVvdXQ6IG9wdGlvbnM/LnRpbWVvdXQsXG4gICAgfSlcbiAgfVxuXG4gIGFzeW5jIHVwbG9hZEZpbGVzKHByb3BzOiBJQm90VXBsb2FkRmlsZXMsIG9wdGlvbnM/OiBSZXFPcHRpb25zKSB7XG4gICAgcmV0dXJuIHRoaXMucmVxKHtcbiAgICAgIG1ldGhvZDogJ3Bvc3QnLFxuICAgICAgdXJsOiB0aGlzLmpvaW4oYGJvdHMvJHtwcm9wcy5ib3RJZH0vZmlsZXNgKSxcbiAgICAgIGRhdGE6IHByb3BzLFxuICAgICAgdGltZW91dDogb3B0aW9ucz8udGltZW91dCxcbiAgICB9KVxuICB9XG5cbiAgYXN5bmMgY3JlYXRlQ29udmVyc2F0aW9uKHsgYm90SWQsIC4uLnJlc3QgfTogSUJvdENyZWF0ZUNvbnZlcnNhdGlvbiwgb3B0aW9ucz86IFJlcU9wdGlvbnMpIHtcbiAgICByZXR1cm4gdGhpcy5yZXEoe1xuICAgICAgbWV0aG9kOiAncG9zdCcsXG4gICAgICB1cmw6IHRoaXMuam9pbihgYm90cy8ke2JvdElkfS9jb252ZXJzYXRpb25gKSxcbiAgICAgIGRhdGE6IHJlc3QsXG4gICAgICB0aW1lb3V0OiBvcHRpb25zPy50aW1lb3V0LFxuICAgIH0pXG4gIH1cblxuICBhc3luYyBnZXRDb252ZXJzYXRpb24oeyBwYWdlU2l6ZSA9IDEwLCBwYWdlTnVtYmVyID0gMSwgYm90SWQsIC4uLnJlc3QgfTogSUJvdEdldENvbnZlcnNhdGlvbiwgb3B0aW9ucz86IFJlcU9wdGlvbnMpIHtcbiAgICBpZiAocGFnZU51bWJlciA8IDEpIHRocm93IG5ldyBFcnJvcigncGFnZU51bWJlciBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAwJylcbiAgICBjb25zdCBvZmZzZXQgPSBwYWdlU2l6ZSAqIChwYWdlTnVtYmVyIC0gMSlcbiAgICBjb25zdCBsaW1pdCA9IHBhZ2VTaXplXG4gICAgcmV0dXJuIHRoaXMucmVxKHtcbiAgICAgIG1ldGhvZDogJ2dldCcsXG4gICAgICB1cmw6IHRoaXMuam9pbihgYm90cy8ke2JvdElkfS9jb252ZXJzYXRpb25gKSxcbiAgICAgIGRhdGE6IHsgLi4ucmVzdCwgb2Zmc2V0LCBsaW1pdCB9LFxuICAgICAgdGltZW91dDogb3B0aW9ucz8udGltZW91dCxcbiAgICB9KVxuICB9XG5cbiAgYXN5bmMgZGVsZXRlQ29udmVyc2F0aW9uKHsgYm90SWQsIGNvbnZlcnNhdGlvbklkLCAuLi5yZXN0IH06IElCb3REZWxldGVDb252ZXJzYXRpb24sIG9wdGlvbnM/OiBSZXFPcHRpb25zKSB7XG4gICAgcmV0dXJuIHRoaXMucmVxKHtcbiAgICAgIG1ldGhvZDogJ2RlbGV0ZScsXG4gICAgICB1cmw6IHRoaXMuam9pbihgYm90cy8ke2JvdElkfS9jb252ZXJzYXRpb24vJHtjb252ZXJzYXRpb25JZH1gKSxcbiAgICAgIGRhdGE6IHJlc3QsXG4gICAgICB0aW1lb3V0OiBvcHRpb25zPy50aW1lb3V0LFxuICAgIH0pXG4gIH1cblxuICBhc3luYyBzcGVlY2hUb1RleHQocHJvcHM6IElCb3RTcGVlY2hUb1RleHQsIG9wdGlvbnM/OiBSZXFPcHRpb25zKSB7XG4gICAgcmV0dXJuIHRoaXMucmVxKHtcbiAgICAgIG1ldGhvZDogJ3Bvc3QnLFxuICAgICAgdXJsOiB0aGlzLmpvaW4oYGJvdHMvJHtwcm9wcy5ib3RJZH0vc3BlZWNoLXRvLXRleHRgKSxcbiAgICAgIGRhdGE6IHByb3BzLFxuICAgICAgdGltZW91dDogb3B0aW9ucz8udGltZW91dCxcbiAgICB9KVxuICB9XG5cbiAgYXN5bmMgdGV4dFRvU3BlZWNoKHByb3BzOiBJQm90VGV4dFRvU3BlZWNoLCBvcHRpb25zPzogUmVxT3B0aW9ucykge1xuICAgIHJldHVybiB0aGlzLnJlcSh7XG4gICAgICBtZXRob2Q6ICdwb3N0JyxcbiAgICAgIHVybDogdGhpcy5qb2luKGBib3RzLyR7cHJvcHMuYm90SWR9L3RleHQtdG8tc3BlZWNoYCksXG4gICAgICBkYXRhOiBwcm9wcyxcbiAgICAgIHRpbWVvdXQ6IG9wdGlvbnM/LnRpbWVvdXQsXG4gICAgfSlcbiAgfVxuXG4gIGFzeW5jIGdldFRleHRUb1NwZWVjaFJlc3VsdChwcm9wczogSUJvdEdldFRleHRUb1NwZWVjaFJlc3VsdCwgb3B0aW9ucz86IFJlcU9wdGlvbnMpIHtcbiAgICByZXR1cm4gdGhpcy5yZXEoe1xuICAgICAgbWV0aG9kOiAnZ2V0JyxcbiAgICAgIHVybDogdGhpcy5qb2luKGBib3RzLyR7cHJvcHMuYm90SWR9L3RleHQtdG8tc3BlZWNoYCksXG4gICAgICBkYXRhOiBwcm9wcyxcbiAgICAgIHRpbWVvdXQ6IG9wdGlvbnM/LnRpbWVvdXQsXG4gICAgfSlcbiAgfVxuXG4gIGFzeW5jIGdldFJlY29tbWVuZFF1ZXN0aW9ucyhwcm9wczogSUdldEJvdFJlY29tbWVuZFF1ZXN0aW9ucywgb3B0aW9ucz86IFJlcU9wdGlvbnMpIHtcbiAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLnJlcSh7XG4gICAgICBtZXRob2Q6ICdwb3N0JyxcbiAgICAgIHVybDogdGhpcy5qb2luKGBib3RzLyR7cHJvcHMuYm90SWR9L3JlY29tbWVuZC1xdWVzdGlvbnNgKSxcbiAgICAgIGRhdGE6IHByb3BzLFxuICAgICAgc3RyZWFtOiB0cnVlLFxuICAgICAgdGltZW91dDogb3B0aW9ucz8udGltZW91dCxcbiAgICB9KVxuICAgIHJldHVybiBuZXcgU3RyZWFtUmVzdWx0KHJlcylcbiAgfVxuXG4gIGFzeW5jIGdlbmVyYXRlQm90KHByb3BzOiBJR2VuZXJhdGVCb3QsIG9wdGlvbnM/OiBSZXFPcHRpb25zKSB7XG4gICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5yZXEoe1xuICAgICAgbWV0aG9kOiAncG9zdCcsXG4gICAgICB1cmw6IHRoaXMuam9pbignZ2VuZXJhdGUtYm90JyksXG4gICAgICBkYXRhOiBwcm9wcyxcbiAgICAgIHN0cmVhbTogdHJ1ZSxcbiAgICAgIHRpbWVvdXQ6IG9wdGlvbnM/LnRpbWVvdXQsXG4gICAgfSlcbiAgICByZXR1cm4gbmV3IFN0cmVhbVJlc3VsdChyZXMpXG4gIH1cblxuICBhc3luYyBnZXRQcmV2aWV3KHByb3BzOiBJQm90UHJldmlldywgb3B0aW9ucz86IFJlcU9wdGlvbnMpIHtcbiAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLnJlcSh7XG4gICAgICBtZXRob2Q6ICdwb3N0JyxcbiAgICAgIHVybDogdGhpcy5qb2luKCdwcmV2aWV3JyksXG4gICAgICBkYXRhOiBwcm9wcyxcbiAgICAgIHN0cmVhbTogdHJ1ZSxcbiAgICAgIHRpbWVvdXQ6IG9wdGlvbnM/LnRpbWVvdXQsXG4gICAgfSlcbiAgICByZXR1cm4gbmV3IFN0cmVhbVJlc3VsdChyZXMpXG4gIH1cblxuICBnZW5lcmF0ZUltYWdlKHByb3BzOiBJR2VuZXJhdGVJbWFnZSwgb3B0aW9ucz86IFJlcU9wdGlvbnMpIHtcbiAgICByZXR1cm4gdGhpcy5yZXEoeyBtZXRob2Q6ICdwb3N0JywgdXJsOiB0aGlzLmpvaW4oJ2dlbmVyYXRlLWltYWdlJyksIGRhdGE6IHByb3BzLCB0aW1lb3V0OiBvcHRpb25zPy50aW1lb3V0IH0pXG4gIH1cblxuICBhc3luYyBzZW5kTWVzc2FnZShwcm9wczogSUJvdFNlbmRNZXNzYWdlLCBvcHRpb25zPzogUmVxT3B0aW9ucykge1xuICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMucmVxKHtcbiAgICAgIG1ldGhvZDogJ3Bvc3QnLFxuICAgICAgdXJsOiB0aGlzLmpvaW4oYGJvdHMvJHtwcm9wcy5ib3RJZH0vc2VuZC1tZXNzYWdlYCksXG4gICAgICBkYXRhOiBwcm9wcyxcbiAgICAgIHN0cmVhbTogdHJ1ZSxcbiAgICAgIHRpbWVvdXQ6IG9wdGlvbnM/LnRpbWVvdXQsXG4gICAgfSlcbiAgICByZXR1cm4gbmV3IFN0cmVhbVJlc3VsdChyZXMpXG4gIH1cblxuICBwcml2YXRlIGpvaW4odXJsOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gYCR7dGhpcy5iYXNlVXJsfS8ke3VybH1gXG4gIH1cbn1cblxudHlwZSBCb3RFdmVudFN0cmVhbURhdGEgPSB7IGNvbnRlbnQ6IHN0cmluZyB9XG5cbmNsYXNzIFN0cmVhbVJlc3VsdCB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgcHJpdmF0ZSBfZXZlbnRTb3VyY2VTdHJlYW06IFJlYWRhYmxlU3RyZWFtPFBhcnNlZEV2ZW50PlxuXG4gIGNvbnN0cnVjdG9yKF9zdHJlYW06IFJlYWRhYmxlU3RyZWFtPFVpbnQ4QXJyYXk+KSB7XG4gICAgY29uc3Qgc3RyZWFtID0gdG9Qb2x5ZmlsbFJlYWRhYmxlKF9zdHJlYW0pIGFzIHR5cGVvZiBfc3RyZWFtXG4gICAgdGhpcy5fZXZlbnRTb3VyY2VTdHJlYW0gPSBzdHJlYW1cbiAgICAgIC5waXBlVGhyb3VnaChuZXcgVGV4dERlY29kZXJTdHJlYW0oKSlcbiAgICAgIC5waXBlVGhyb3VnaChjcmVhdGVFdmVudFNvdXJjZVBhcnNlclRyYW5zZm9ybVN0cmVhbSgpKVxuICB9XG5cbiAgcHJpdmF0ZSBnZXQgdGVlZWRTdHJlYW0oKSB7XG4gICAgY29uc3QgW3MxLCBzMl0gPSB0aGlzLl9ldmVudFNvdXJjZVN0cmVhbS50ZWUoKVxuICAgIHRoaXMuX2V2ZW50U291cmNlU3RyZWFtID0gczJcbiAgICByZXR1cm4gczFcbiAgfVxuXG4gIGdldCBldmVudFNvdXJjZVN0cmVhbSgpIHtcbiAgICByZXR1cm4gY3JlYXRlQXN5bmNJdGVyYWJsZSh0aGlzLnRlZWVkU3RyZWFtKVxuICB9XG5cbiAgZ2V0IGRhdGFTdHJlYW0oKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUFzeW5jSXRlcmFibGUodGhpcy5ldmVudFNvdXJjZVN0cmVhbS5waXBlVGhyb3VnaChuZXcgVHJhbnNmb3JtU3RyZWFtPFBhcnNlZEV2ZW50LCBCb3RFdmVudFN0cmVhbURhdGE+KHtcbiAgICAgIHRyYW5zZm9ybShjaHVuaywgY29udHJvbGxlcikge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IGRhdGEgPSBKU09OLnBhcnNlKGNodW5rLmRhdGEpXG4gICAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKGRhdGEpXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBpZiAoY2h1bmsuZGF0YSAhPT0gJ1tET05FXScpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignRXJyb3Igd2hlbiB0cmFuc2Zvcm1pbmcgZXZlbnQgc291cmNlIGRhdGEgdG8ganNvbicsIGUsIGNodW5rKVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb250cm9sbGVyLnRlcm1pbmF0ZSgpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgIH0pLCksKVxuICB9XG5cbiAgZ2V0IHRleHRTdHJlYW0oKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUFzeW5jSXRlcmFibGUodGhpcy5kYXRhU3RyZWFtLnBpcGVUaHJvdWdoKG5ldyBUcmFuc2Zvcm1TdHJlYW08Qm90RXZlbnRTdHJlYW1EYXRhLCBzdHJpbmc+KHtcbiAgICAgIHRyYW5zZm9ybShjaHVuaywgY29udHJvbGxlcikge1xuICAgICAgICBjb250cm9sbGVyLmVucXVldWUoY2h1bms/LmNvbnRlbnQgPz8gJycpXG4gICAgICB9LFxuICAgIH0pLCksKVxuICB9XG59XG4iXX0=
@@ -0,0 +1,10 @@
1
+ export declare class InvalidParamsError extends Error {
2
+ code: string;
3
+ field?: string;
4
+ constructor(message: string, field?: string);
5
+ toJSON(): {
6
+ code: string;
7
+ message: string;
8
+ field: string;
9
+ };
10
+ }
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ var __extends = (this && this.__extends) || (function () {
3
+ var extendStatics = function (d, b) {
4
+ extendStatics = Object.setPrototypeOf ||
5
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
+ return extendStatics(d, b);
8
+ };
9
+ return function (d, b) {
10
+ if (typeof b !== "function" && b !== null)
11
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
+ extendStatics(d, b);
13
+ function __() { this.constructor = d; }
14
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
+ };
16
+ })();
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.InvalidParamsError = void 0;
19
+ var InvalidParamsError = (function (_super) {
20
+ __extends(InvalidParamsError, _super);
21
+ function InvalidParamsError(message, field) {
22
+ var _this = _super.call(this, message) || this;
23
+ _this.name = 'InvalidParamsError';
24
+ _this.code = 'INVALID_PARAMS';
25
+ _this.field = field;
26
+ return _this;
27
+ }
28
+ InvalidParamsError.prototype.toJSON = function () {
29
+ return {
30
+ code: this.code,
31
+ message: this.message,
32
+ field: this.field,
33
+ };
34
+ };
35
+ return InvalidParamsError;
36
+ }(Error));
37
+ exports.InvalidParamsError = InvalidParamsError;
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Vycm9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFJQTtJQUF3QyxzQ0FBSztJQUkzQyw0QkFBWSxPQUFlLEVBQUUsS0FBYztRQUEzQyxZQUNFLGtCQUFNLE9BQU8sQ0FBQyxTQUlmO1FBSEMsS0FBSSxDQUFDLElBQUksR0FBRyxvQkFBb0IsQ0FBQTtRQUNoQyxLQUFJLENBQUMsSUFBSSxHQUFHLGdCQUFnQixDQUFBO1FBQzVCLEtBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFBOztJQUNwQixDQUFDO0lBRUQsbUNBQU0sR0FBTjtRQUNFLE9BQU87WUFDTCxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDZixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFDckIsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1NBQ2xCLENBQUE7SUFDSCxDQUFDO0lBQ0gseUJBQUM7QUFBRCxDQUFDLEFBbEJELENBQXdDLEtBQUssR0FrQjVDO0FBbEJZLGdEQUFrQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICog5Y+C5pWw5qCh6aqM6ZSZ6K+v57G7XG4gKiDnlKjkuo7nu5/kuIDlj4LmlbDmoKHpqozplJnor6/nmoTmoLzlvI9cbiAqL1xuZXhwb3J0IGNsYXNzIEludmFsaWRQYXJhbXNFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgcHVibGljIGNvZGU6IHN0cmluZ1xuICBwdWJsaWMgZmllbGQ/OiBzdHJpbmdcblxuICBjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcsIGZpZWxkPzogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSlcbiAgICB0aGlzLm5hbWUgPSAnSW52YWxpZFBhcmFtc0Vycm9yJ1xuICAgIHRoaXMuY29kZSA9ICdJTlZBTElEX1BBUkFNUydcbiAgICB0aGlzLmZpZWxkID0gZmllbGRcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICByZXR1cm4ge1xuICAgICAgY29kZTogdGhpcy5jb2RlLFxuICAgICAgbWVzc2FnZTogdGhpcy5tZXNzYWdlLFxuICAgICAgZmllbGQ6IHRoaXMuZmllbGQsXG4gICAgfVxuICB9XG59XG4iXX0=
@@ -15,6 +15,7 @@ declare const restModels: {
15
15
  HunYuanExpSimpleModel: typeof models.HunYuanExpSimpleModel;
16
16
  HunYuanOpenSimpleModel: typeof models.HunYuanOpenSimpleModel;
17
17
  DefaultSimpleModel: typeof models.DefaultSimpleModel;
18
+ DefaultImageModel: typeof models.DefaultImageModel;
18
19
  ReactModel: typeof models.ReactModel;
19
20
  toolMap: Map<string, CallableFunction>;
20
21
  };
@@ -22,9 +23,10 @@ interface IHandleRequestInstance {
22
23
  req: SDKRequestInterface;
23
24
  }
24
25
  type HandleRequestInstanceFunc = (options: IHandleRequestInstance) => SDKRequestInterface;
25
- interface ICreateAi {
26
+ interface ICreateAI {
26
27
  req: SDKRequestInterface;
27
28
  baseUrl?: string;
29
+ getBaseUrl?: () => string;
28
30
  env?: string;
29
31
  getAccessToken?: () => Promise<{
30
32
  accessToken: string;
@@ -32,7 +34,9 @@ interface ICreateAi {
32
34
  handleReqInstance?: HandleRequestInstanceFunc;
33
35
  i18n?: ICloudbaseConfig['i18n'];
34
36
  }
35
- declare function createAi({ env, baseUrl, req, getAccessToken, handleReqInstance, i18n }: ICreateAi): AI;
37
+ declare function createAI({ env, baseUrl, getBaseUrl: getBaseUrlFunc, req, getAccessToken, handleReqInstance, i18n }: ICreateAI): AI;
38
+ declare const createAi: typeof createAI;
36
39
  declare function registerAi(app: ICloudbase): void;
37
- export { AI, Bot, createAi, restModels as models, registerAi, utils };
40
+ export { AI, Bot, createAi, createAI, restModels as models, registerAi, utils };
38
41
  export * from './type';
42
+ export * from './errors';
package/dist/cjs/index.js CHANGED
@@ -84,7 +84,7 @@ var __rest = (this && this.__rest) || function (s, e) {
84
84
  return t;
85
85
  };
86
86
  Object.defineProperty(exports, "__esModule", { value: true });
87
- exports.utils = exports.registerAi = exports.models = exports.createAi = exports.Bot = exports.AI = void 0;
87
+ exports.utils = exports.registerAi = exports.models = exports.createAI = exports.createAi = exports.Bot = exports.AI = void 0;
88
88
  var AI_1 = require("./AI");
89
89
  Object.defineProperty(exports, "AI", { enumerable: true, get: function () { return AI_1.AI; } });
90
90
  var bot_1 = require("./bot");
@@ -124,9 +124,12 @@ var createRequestInstanceWithAccessTokenHeader = function (_a) {
124
124
  fetch: fetch,
125
125
  };
126
126
  };
127
- function createAi(_a) {
128
- var env = _a.env, baseUrl = _a.baseUrl, req = _a.req, getAccessToken = _a.getAccessToken, handleReqInstance = _a.handleReqInstance, i18n = _a.i18n;
127
+ function createAI(_a) {
128
+ var env = _a.env, baseUrl = _a.baseUrl, getBaseUrlFunc = _a.getBaseUrl, req = _a.req, getAccessToken = _a.getAccessToken, handleReqInstance = _a.handleReqInstance, i18n = _a.i18n;
129
129
  var getBaseUrl = function () {
130
+ if (getBaseUrlFunc != null) {
131
+ return getBaseUrlFunc();
132
+ }
130
133
  if (baseUrl != null) {
131
134
  return baseUrl;
132
135
  }
@@ -144,12 +147,13 @@ function createAi(_a) {
144
147
  }
145
148
  return handleReqInstance({ req: req });
146
149
  };
147
- return new AI_1.AI(getReq(), getBaseUrl(), i18n);
150
+ return new AI_1.AI(getReq(), getBaseUrl(), i18n, getBaseUrlFunc);
148
151
  }
152
+ exports.createAI = createAI;
153
+ var createAi = createAI;
149
154
  exports.createAi = createAi;
150
155
  function ai(options) {
151
156
  var _this = this;
152
- var _a;
153
157
  var req = this.request;
154
158
  if (req.fetch == null) {
155
159
  throw new Error('cloudbase.request.fetch() unimplemented!');
@@ -158,8 +162,13 @@ function ai(options) {
158
162
  var _a = _this.getEndPointWithKey('GATEWAY'), BASE_URL = _a.BASE_URL, PROTOCOL = _a.PROTOCOL;
159
163
  return "".concat(PROTOCOL).concat(BASE_URL);
160
164
  };
161
- var baseUrl = (_a = options === null || options === void 0 ? void 0 : options.baseUrl) !== null && _a !== void 0 ? _a : getUrlFromCloud();
162
- return createAi({ req: req, baseUrl: baseUrl, handleReqInstance: function (_a) {
165
+ if (options === null || options === void 0 ? void 0 : options.baseUrl) {
166
+ return createAI({ req: req, baseUrl: options.baseUrl, handleReqInstance: function (_a) {
167
+ var req = _a.req;
168
+ return req;
169
+ }, i18n: this.config.i18n });
170
+ }
171
+ return createAI({ req: req, baseUrl: getUrlFromCloud(), getBaseUrl: getUrlFromCloud, handleReqInstance: function (_a) {
163
172
  var req = _a.req;
164
173
  return req;
165
174
  }, i18n: this.config.i18n });
@@ -178,4 +187,9 @@ function registerAi(app) {
178
187
  }
179
188
  exports.registerAi = registerAi;
180
189
  __exportStar(require("./type"), exports);
181
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBR0EsMkJBQXlCO0FBNEloQixtRkE1SUEsT0FBRSxPQTRJQTtBQTNJWCw2QkFBMkI7QUEySWQsb0ZBM0lKLFNBQUcsT0EySUk7QUExSWhCLCtDQUFrQztBQUNsQyw2Q0FBZ0M7QUF5SThCLHNCQUFLO0FBdkluRSxJQUFNLGNBQWMsR0FBRyxJQUFJLENBQUE7QUFFbkIsSUFBQSxNQUFNLEdBQW9CLE1BQU0sT0FBMUIsRUFBSyxVQUFVLFVBQUssTUFBTSxFQUFsQyxVQUF5QixDQUFGLENBQVc7QUFxSUUsNEJBQU07QUE3SGhELElBQU0sMENBQTBDLEdBQUcsVUFBQyxFQUdrQztRQUZwRixjQUFjLG9CQUFBLEVBQ2QsR0FBRyxTQUFBO0lBRUgsSUFBTSxLQUFLLEdBQXFCLFVBQU8sT0FBMkM7Ozs7O29CQUNoRixJQUFJLE9BQU8sR0FBRyxDQUFDLEtBQUssS0FBSyxVQUFVLEVBQUU7d0JBQ25DLE1BQU0sSUFBSSxLQUFLLENBQUMsNkJBQTZCLENBQUMsQ0FBQTtxQkFDL0M7b0JBRU8sS0FBSyxHQUFtQyxPQUFPLE1BQTFDLEVBQUUsS0FBaUMsT0FBTyxRQUE1QixFQUFaLE9BQU8sbUJBQUcsRUFBRSxLQUFBLEVBQUssV0FBVyxVQUFLLE9BQU8sRUFBakQsb0JBQXVDLENBQUYsQ0FBWTt5QkFFbkQsQ0FBQSxLQUFLLElBQUksSUFBSSxDQUFBLEVBQWIsY0FBYTtvQkFDZixXQUFXLEdBQUcsS0FBSyxDQUFBOzt3QkFFSixXQUFNLGNBQWMsRUFBRSxFQUFBOztvQkFBckMsV0FBVyxHQUFHLENBQUMsU0FBc0IsQ0FBQyxDQUFDLFdBQVcsQ0FBQTs7d0JBR3BELFdBQU8s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QUM1RCx5Q0FBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IElGZXRjaE9wdGlvbnMsIFNES1JlcXVlc3RJbnRlcmZhY2UgfSBmcm9tICdAY2xvdWRiYXNlL2FkYXB0ZXItaW50ZXJmYWNlJ1xuaW1wb3J0IHR5cGUgeyBJQ2xvdWRiYXNlLCBJQ2xvdWRiYXNlQ29uZmlnIH0gZnJvbSAnQGNsb3VkYmFzZS90eXBlcydcbmltcG9ydCB0eXBlIHsgSUNsb3VkYmFzZUNvbXBvbmVudCB9IGZyb20gJ0BjbG91ZGJhc2UvdHlwZXMvY29tcG9uZW50J1xuaW1wb3J0IHsgQUkgfSBmcm9tICcuL0FJJ1xuaW1wb3J0IHsgQm90IH0gZnJvbSAnLi9ib3QnXG5pbXBvcnQgKiBhcyBtb2RlbHMgZnJvbSAnLi9tb2RlbHMnXG5pbXBvcnQgKiBhcyB1dGlscyBmcm9tICcuL3V0aWxzJ1xuXG5jb25zdCBDT01QT05FTlRfTkFNRSA9ICdhaSdcblxuY29uc3QgeyBNT0RFTFMsIC4uLnJlc3RNb2RlbHMgfSA9IG1vZGVsc1xuXG5pbnRlcmZhY2UgSUhhbmRsZVJlcXVlc3RJbnN0YW5jZSB7XG4gIHJlcTogU0RLUmVxdWVzdEludGVyZmFjZVxufVxuXG50eXBlIEhhbmRsZVJlcXVlc3RJbnN0YW5jZUZ1bmMgPSAob3B0aW9uczogSUhhbmRsZVJlcXVlc3RJbnN0YW5jZSkgPT4gU0RLUmVxdWVzdEludGVyZmFjZVxuXG5jb25zdCBjcmVhdGVSZXF1ZXN0SW5zdGFuY2VXaXRoQWNjZXNzVG9rZW5IZWFkZXIgPSAoe1xuICBnZXRBY2Nlc3NUb2tlbixcbiAgcmVxLFxufTogSUhhbmRsZVJlcXVlc3RJbnN0YW5jZSAmIHsgZ2V0QWNjZXNzVG9rZW46ICgpID0+IFByb21pc2U8eyBhY2Nlc3NUb2tlbjogc3RyaW5nIH0+IH0pID0+IHtcbiAgY29uc3QgZmV0Y2g6IHR5cGVvZiByZXEuZmV0Y2ggPSBhc3luYyAob3B0aW9uczogSUZldGNoT3B0aW9ucyAmIHsgdG9rZW4/OiBzdHJpbmcgfSkgPT4ge1xuICAgIGlmICh0eXBlb2YgcmVxLmZldGNoICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3JlcS5mZXRjaCBpcyBub3QgYSBmdW5jdGlvbicpXG4gICAgfVxuXG4gICAgY29uc3QgeyB0b2tlbiwgaGVhZGVycyA9IHt9LCAuLi5yZXN0T3B0aW9ucyB9ID0gb3B0aW9uc1xuICAgIGxldCBhY2Nlc3NUb2tlbjogc3RyaW5nXG4gICAgaWYgKHRva2VuICE9IG51bGwpIHtcbiAgICAgIGFjY2Vzc1Rva2VuID0gdG9rZW5cbiAgICB9IGVsc2Uge1xuICAgICAgYWNjZXNzVG9rZW4gPSAoYXdhaXQgZ2V0QWNjZXNzVG9rZW4oKSkuYWNjZXNzVG9rZW5cbiAgICB9XG5cbiAgICByZXR1cm4gcmVxLmZldGNoKHtcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke2FjY2Vzc1Rva2VufWAsXG4gICAgICAgIC4uLmhlYWRlcnMsXG4gICAgICB9LFxuICAgICAgLi4ucmVzdE9wdGlvbnMsXG4gICAgfSlcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgZG93bmxvYWQ6IHJlcS5kb3dubG9hZCxcbiAgICBwb3N0OiByZXEucG9zdCxcbiAgICB1cGxvYWQ6IHJlcS51cGxvYWQsXG4gICAgZmV0Y2gsXG4gIH1cbn1cblxuaW50ZXJmYWNlIEFJSW5pdE9wdGlvbiB7XG4gIGJhc2VVcmw/OiBzdHJpbmdcbn1cblxuaW50ZXJmYWNlIElDcmVhdGVBaSB7XG4gIHJlcTogU0RLUmVxdWVzdEludGVyZmFjZVxuICBiYXNlVXJsPzogc3RyaW5nXG4gIGVudj86IHN0cmluZ1xuICBnZXRBY2Nlc3NUb2tlbj86ICgpID0+IFByb21pc2U8eyBhY2Nlc3NUb2tlbjogc3RyaW5nIH0+XG4gIGhhbmRsZVJlcUluc3RhbmNlPzogSGFuZGxlUmVxdWVzdEluc3RhbmNlRnVuY1xuICBpMThuPzogSUNsb3VkYmFzZUNvbmZpZ1snaTE4biddXG59XG5cbi8qKlxuICog5pyA566A5Zyw5Yib5bu65LiA5Liq5o6l5LqR5byA5Y+R572R5YWz5pyN5Yqh55qEIGBBSWAg5a6e5L6L77yM6K+35rGC5pe25Lya6Ieq5Yqo5bim5LiK6Ym05p2D6K+35rGC5aS044CCXG4gKiDlj6rpnIDopoHkvKDlhaXvvJpcbiAqXG4gKiAtIGBnZXRBY2Nlc3NUb2tlbmA6IOiOt+WPliBhY2Nlc3NUb2tlbiDnmoTlh73mlbBcbiAqIC0gYHJlcWA6IOivt+axguWHveaVsO+8jOS4gOiIrOS7jiBhZGFwdGVyIOS4iuaLv1xuICogLSBgZW52YDog5LqR5byA5Y+R546v5aKDIElEXG4gKlxuICog5YW25LuW5Y+C5pWw5Y+v5oyJ6ZyA5Lyg5YWl6KaG55uW5Ye95pWw6YC76L6R44CCXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUFpKHsgZW52LCBiYXNlVXJsLCByZXEsIGdldEFjY2Vzc1Rva2VuLCBoYW5kbGVSZXFJbnN0YW5jZSwgaTE4biB9OiBJQ3JlYXRlQWkpIHtcbiAgY29uc3QgZ2V0QmFzZVVybCA9ICgpID0+IHtcbiAgICBpZiAoYmFzZVVybCAhPSBudWxsKSB7XG4gICAgICByZXR1cm4gYmFzZVVybFxuICAgIH1cbiAgICBpZiAoZW52ID09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignYGVudmAgaXMgcmVxdWlyZWQgd2hlbiBgYmFzZVVybGAgaXMgbm90IHByb3ZpZGVkIScpXG4gICAgfVxuICAgIHJldHVybiBgaHR0cHM6Ly8ke2Vudn0uYXBpLnRjbG91ZGJhc2VnYXRld2F5LmNvbS92MWBcbiAgfVxuXG4gIGNvbnN0IGdldFJlcSA9ICgpID0+IHtcbiAgICBpZiAoaGFuZGxlUmVxSW5zdGFuY2UgPT0gbnVsbCkge1xuICAgICAgaWYgKGdldEFjY2Vzc1Rva2VuID09IG51bGwpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdgZ2V0QWNjZXNzVG9rZW5gIGlzIHJlcXVpcmVkIHdoZW4gYGhhbmRsZVJlcUluc3RhbmNlYCBpcyBub3QgcHJvdmlkZWQhJylcbiAgICAgIH1cbiAgICAgIHJldHVybiBjcmVhdGVSZXF1ZXN0SW5zdGFuY2VXaXRoQWNjZXNzVG9rZW5IZWFkZXIoeyByZXEsIGdldEFjY2Vzc1Rva2VuIH0pXG4gICAgfVxuICAgIHJldHVybiBoYW5kbGVSZXFJbnN0YW5jZSh7IHJlcSB9KVxuICB9XG5cbiAgcmV0dXJuIG5ldyBBSShnZXRSZXEoKSwgZ2V0QmFzZVVybCgpLCBpMThuKVxufVxuXG4vKipcbiAqIOWIm+W7uiBgQUlgIOWunuS+i+OAglxuICog6K+l5Ye95pWw5oyC6L295ZyoIGpzIHNkayDnmoQgQ2xvdWRiYXNlIOWunuS+i+S4iuOAglxuICog6K+l5Ye95pWw6LCD55So5LqG5pys5qih5Z2X5pq06Zyy55qEIGBjcmVhdGVBaWAg5Ye95pWw77yM5L2G6LCD55So5pe26YCa6L+H5Lyg5YWl5Y+C5pWw5YGa5LqG6YC76L6R6KaG55uW77yaXG4gKlxuICogLSDkvKDlhaXku44gQ2xvdWRiYXNlIOWunuS+i+S4iueahOS4reW/g+eahCBgcmVxYFxuICogLSDkvKDlhaXku44gQ2xvdWRiYXNlIOWunuS+i+S4iuaLv+WIsOeahCBgYmFzZVVybGBcbiAqIC0g5Lyg5YWl5LiA5Liq5LiN5aSE55CGIGByZXFgIOeahCBgaGFuZGxlUmVxSW5zdGFuY2Vg77yM55Sx5LqOIGByZXFgIOaYr+S7jiBDbG91ZGJhc2Ug5a6e5L6L5LiK5ou/5Yiw55qE77yM6L+Z5Liq5Lit5b+D55qEIGByZXFgIOW3sue7j+WPr+eUqOS6hlxuICogLSDkuI3nlKjkvKDlhaUgYGVudmAg5LqG77yM5Zug5Li65bey57uP5Lyg5LqGIGBiYXNlVXJsYFxuICogLSDkuI3nlKjkvKDlhaUgYGdldEFjY2Vzc1Rva2VuYCDkuobvvIzlm6DkuLrkvKDkuoYgYGhhbmRsZVJlcUluc3RhbmNlYFxuICovXG5mdW5jdGlvbiBhaShcbiAgdGhpczogSUNsb3VkYmFzZSAmIHsgZ2V0RW5kUG9pbnRXaXRoS2V5OiAoa2V5OiAnR0FURVdBWScpID0+IHsgQkFTRV9VUkw6IHN0cmluZzsgUFJPVE9DT0w6IHN0cmluZyB9IH0sXG4gIG9wdGlvbnM/OiBBSUluaXRPcHRpb24sXG4pIHtcbiAgY29uc3QgcmVxID0gdGhpcy5yZXF1ZXN0XG5cbiAgaWYgKHJlcS5mZXRjaCA9PSBudWxsKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdjbG91ZGJhc2UucmVxdWVzdC5mZXRjaCgpIHVuaW1wbGVtZW50ZWQhJylcbiAgfVxuXG4gIGNvbnN0IGdldFVybEZyb21DbG91ZCA9ICgpID0+IHtcbiAgICBjb25zdCB7IEJBU0VfVVJMLCBQUk9UT0NPTCB9ID0gdGhpcy5nZXRFbmRQb2ludFdpdGhLZXkoJ0dBVEVXQVknKVxuICAgIHJldHVybiBgJHtQUk9UT0NPTH0ke0JBU0VfVVJMfWBcbiAgfVxuXG4gIGNvbnN0IGJhc2VVcmwgPSBvcHRpb25zPy5iYXNlVXJsID8/IGdldFVybEZyb21DbG91ZCgpXG5cbiAgcmV0dXJuIGNyZWF0ZUFpKHsgcmVxLCBiYXNlVXJsLCBoYW5kbGVSZXFJbnN0YW5jZTogKHsgcmVxIH0pID0+IHJlcSwgaTE4bjogdGhpcy5jb25maWcuaTE4biB9KVxufVxuXG5jb25zdCBjb21wb25lbnQ6IElDbG91ZGJhc2VDb21wb25lbnQgPSB7XG4gIG5hbWU6IENPTVBPTkVOVF9OQU1FLFxuICBlbnRpdHk6IHsgYWkgfSxcbn1cblxuZnVuY3Rpb24gcmVnaXN0ZXJBaShhcHA6IElDbG91ZGJhc2UpIHtcbiAgdHJ5IHtcbiAgICBhcHAucmVnaXN0ZXJDb21wb25lbnQoY29tcG9uZW50KVxuICB9IGNhdGNoIChlKSB7XG4gICAgY29uc29sZS53YXJuKGUpXG4gIH1cbn1cblxuZXhwb3J0IHsgQUksIEJvdCwgY3JlYXRlQWksIHJlc3RNb2RlbHMgYXMgbW9kZWxzLCByZWdpc3RlckFpLCB1dGlscyB9XG5leHBvcnQgKiBmcm9tICcuL3R5cGUnXG4iXX0=
190
+ __exportStar(require("./errors"), exports);
191
+ try {
192
+ window.registerAi = registerAi;
193
+ }
194
+ catch (e) { }
195
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBSUEsMkJBQXlCO0FBMEpoQixtRkExSkEsT0FBRSxPQTBKQTtBQXpKWCw2QkFBMkI7QUF5SmQsb0ZBekpKLFNBQUcsT0F5Skk7QUF4SmhCLCtDQUFrQztBQUNsQyw2Q0FBZ0M7QUF1SndDLHNCQUFLO0FBcko3RSxJQUFNLGNBQWMsR0FBRyxJQUFJLENBQUE7QUFFbkIsSUFBQSxNQUFNLEdBQW9CLE1BQU0sT0FBMUIsRUFBSyxVQUFVLFVBQUssTUFBTSxFQUFsQyxVQUF5QixDQUFGLENBQVc7QUFtSlksNEJBQU07QUEzSTFELElBQU0sMENBQTBDLEdBQUcsVUFBQyxFQUdrQztRQUZwRixjQUFjLG9CQUFBLEVBQ2QsR0FBRyxTQUFBO0lBRUgsSUFBTSxLQUFLLEdBQXFCLFVBQU8sT0FBMkM7Ozs7O29CQUNoRixJQUFJLE9BQU8sR0FBRyxDQUFDLEtBQUssS0FBSyxVQUFVLEVBQUU7d0JBQ25DLE1BQU0sSUFBSSxLQUFLLENBQUMsNkJBQTZCLENBQUMsQ0FBQTtxQkFDL0M7b0JBRU8sS0FBSyxHQUFtQyxPQUFPLE1BQTFDLEVBQUUsS0FBaUMsT0FBTyxRQUE1QixFQUFaLE9BQU8sbUJBQUcsRUFBRSxLQUFBLEVBQUssV0FBVyxVQUFLLE9BQU8sRUFBakQsb0JBQXVDLENBQUYsQ0FBWTt5QkFFbkQsQ0FBQSxLQUFLLElBQUksSUFBSSxDQUFBLEVBQWIsY0FBYTtvQkFDZixXQUFXLEdBQUcsS0FBSyxDQUFBOzt3QkFFSixXQUFNLGNBQWMsRUFBRSxFQUFBOztvQkFBckMsV0FBVyxHQUFHLENBQUMsU0FBc0IsQ0FBQyxDQUFDLFdBQVcsQ0FBQTs7d0JBR3BELFdBQU8s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QUFFLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUE7QUFDaEosQ0FBQztBQUVELElBQU0sU0FBUyxHQUF3QjtJQUNyQyxJQUFJLEVBQUUsY0FBYztJQUNwQixNQUFNLEVBQUUsRUFBRSxFQUFFLElBQUEsRUFBRTtDQUNmLENBQUE7QUFFRCxTQUFTLFVBQVUsQ0FBQyxHQUFlO0lBQ2pDLElBQUk7UUFDRixHQUFHLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLENBQUE7S0FDakM7SUFBQyxPQUFPLENBQUMsRUFBRTtRQUNWLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7S0FDaEI7QUFDSCxDQUFDO0FBRTJELGdDQUFVO0FBQ3RFLHlDQUFzQjtBQUN0QiwyQ0FBd0I7QUFFeEIsSUFBSTtJQUNELE1BQWMsQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFBO0NBQ3hDO0FBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGVxZXFlcSAqL1xuaW1wb3J0IHR5cGUgeyBJRmV0Y2hPcHRpb25zLCBTREtSZXF1ZXN0SW50ZXJmYWNlIH0gZnJvbSAnQGNsb3VkYmFzZS9hZGFwdGVyLWludGVyZmFjZSdcbmltcG9ydCB0eXBlIHsgSUNsb3VkYmFzZSwgSUNsb3VkYmFzZUNvbmZpZyB9IGZyb20gJ0BjbG91ZGJhc2UvdHlwZXMnXG5pbXBvcnQgdHlwZSB7IElDbG91ZGJhc2VDb21wb25lbnQgfSBmcm9tICdAY2xvdWRiYXNlL3R5cGVzL2NvbXBvbmVudCdcbmltcG9ydCB7IEFJIH0gZnJvbSAnLi9BSSdcbmltcG9ydCB7IEJvdCB9IGZyb20gJy4vYm90J1xuaW1wb3J0ICogYXMgbW9kZWxzIGZyb20gJy4vbW9kZWxzJ1xuaW1wb3J0ICogYXMgdXRpbHMgZnJvbSAnLi91dGlscydcblxuY29uc3QgQ09NUE9ORU5UX05BTUUgPSAnYWknXG5cbmNvbnN0IHsgTU9ERUxTLCAuLi5yZXN0TW9kZWxzIH0gPSBtb2RlbHNcblxuaW50ZXJmYWNlIElIYW5kbGVSZXF1ZXN0SW5zdGFuY2Uge1xuICByZXE6IFNES1JlcXVlc3RJbnRlcmZhY2Vcbn1cblxudHlwZSBIYW5kbGVSZXF1ZXN0SW5zdGFuY2VGdW5jID0gKG9wdGlvbnM6IElIYW5kbGVSZXF1ZXN0SW5zdGFuY2UpID0+IFNES1JlcXVlc3RJbnRlcmZhY2VcblxuY29uc3QgY3JlYXRlUmVxdWVzdEluc3RhbmNlV2l0aEFjY2Vzc1Rva2VuSGVhZGVyID0gKHtcbiAgZ2V0QWNjZXNzVG9rZW4sXG4gIHJlcSxcbn06IElIYW5kbGVSZXF1ZXN0SW5zdGFuY2UgJiB7IGdldEFjY2Vzc1Rva2VuOiAoKSA9PiBQcm9taXNlPHsgYWNjZXNzVG9rZW46IHN0cmluZyB9PiB9KSA9PiB7XG4gIGNvbnN0IGZldGNoOiB0eXBlb2YgcmVxLmZldGNoID0gYXN5bmMgKG9wdGlvbnM6IElGZXRjaE9wdGlvbnMgJiB7IHRva2VuPzogc3RyaW5nIH0pID0+IHtcbiAgICBpZiAodHlwZW9mIHJlcS5mZXRjaCAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdyZXEuZmV0Y2ggaXMgbm90IGEgZnVuY3Rpb24nKVxuICAgIH1cblxuICAgIGNvbnN0IHsgdG9rZW4sIGhlYWRlcnMgPSB7fSwgLi4ucmVzdE9wdGlvbnMgfSA9IG9wdGlvbnNcbiAgICBsZXQgYWNjZXNzVG9rZW46IHN0cmluZ1xuICAgIGlmICh0b2tlbiAhPSBudWxsKSB7XG4gICAgICBhY2Nlc3NUb2tlbiA9IHRva2VuXG4gICAgfSBlbHNlIHtcbiAgICAgIGFjY2Vzc1Rva2VuID0gKGF3YWl0IGdldEFjY2Vzc1Rva2VuKCkpLmFjY2Vzc1Rva2VuXG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcS5mZXRjaCh7XG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgIEF1dGhvcml6YXRpb246IGBCZWFyZXIgJHthY2Nlc3NUb2tlbn1gLFxuICAgICAgICAuLi5oZWFkZXJzLFxuICAgICAgfSxcbiAgICAgIC4uLnJlc3RPcHRpb25zLFxuICAgIH0pXG4gIH1cblxuICByZXR1cm4ge1xuICAgIGRvd25sb2FkOiByZXEuZG93bmxvYWQsXG4gICAgcG9zdDogcmVxLnBvc3QsXG4gICAgdXBsb2FkOiByZXEudXBsb2FkLFxuICAgIGZldGNoLFxuICB9XG59XG5cbmludGVyZmFjZSBBSUluaXRPcHRpb24ge1xuICBiYXNlVXJsPzogc3RyaW5nXG59XG5cbmludGVyZmFjZSBJQ3JlYXRlQUkge1xuICByZXE6IFNES1JlcXVlc3RJbnRlcmZhY2VcbiAgYmFzZVVybD86IHN0cmluZ1xuICAvKiog5Yqo5oCB6I635Y+WIGJhc2VVcmwg55qE5Ye95pWw77yM6Iul5o+Q5L6b5YiZ5LyY5YWI5L2/55So77yM5pSv5oyB56uv54K55Y+Y5pu05ZCO6K+35rGC6Ieq5Yqo6Lef6ZqPICovXG4gIGdldEJhc2VVcmw/OiAoKSA9PiBzdHJpbmdcbiAgZW52Pzogc3RyaW5nXG4gIGdldEFjY2Vzc1Rva2VuPzogKCkgPT4gUHJvbWlzZTx7IGFjY2Vzc1Rva2VuOiBzdHJpbmcgfT5cbiAgaGFuZGxlUmVxSW5zdGFuY2U/OiBIYW5kbGVSZXF1ZXN0SW5zdGFuY2VGdW5jXG4gIGkxOG4/OiBJQ2xvdWRiYXNlQ29uZmlnWydpMThuJ11cbn1cblxuLyoqXG4gKiDmnIDnroDlnLDliJvlu7rkuIDkuKrmjqXkupHlvIDlj5HnvZHlhbPmnI3liqHnmoQgYEFJYCDlrp7kvovvvIzor7fmsYLml7bkvJroh6rliqjluKbkuIrpibTmnYPor7fmsYLlpLTjgIJcbiAqIOWPqumcgOimgeS8oOWFpe+8mlxuICpcbiAqIC0gYGdldEFjY2Vzc1Rva2VuYDog6I635Y+WIGFjY2Vzc1Rva2VuIOeahOWHveaVsFxuICogLSBgcmVxYDog6K+35rGC5Ye95pWw77yM5LiA6Iis5LuOIGFkYXB0ZXIg5LiK5ou/XG4gKiAtIGBlbnZgOiDkupHlvIDlj5Hnjq/looMgSURcbiAqXG4gKiDlhbbku5blj4LmlbDlj6/mjInpnIDkvKDlhaXopobnm5blh73mlbDpgLvovpHjgIJcbiAqL1xuZnVuY3Rpb24gY3JlYXRlQUkoeyBlbnYsIGJhc2VVcmwsIGdldEJhc2VVcmw6IGdldEJhc2VVcmxGdW5jLCByZXEsIGdldEFjY2Vzc1Rva2VuLCBoYW5kbGVSZXFJbnN0YW5jZSwgaTE4biB9OiBJQ3JlYXRlQUkpIHtcbiAgY29uc3QgZ2V0QmFzZVVybCA9ICgpID0+IHtcbiAgICBpZiAoZ2V0QmFzZVVybEZ1bmMgIT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGdldEJhc2VVcmxGdW5jKClcbiAgICB9XG4gICAgaWYgKGJhc2VVcmwgIT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGJhc2VVcmxcbiAgICB9XG4gICAgaWYgKGVudiA9PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2BlbnZgIGlzIHJlcXVpcmVkIHdoZW4gYGJhc2VVcmxgIGlzIG5vdCBwcm92aWRlZCEnKVxuICAgIH1cbiAgICByZXR1cm4gYGh0dHBzOi8vJHtlbnZ9LmFwaS50Y2xvdWRiYXNlZ2F0ZXdheS5jb20vdjFgXG4gIH1cblxuICBjb25zdCBnZXRSZXEgPSAoKSA9PiB7XG4gICAgaWYgKGhhbmRsZVJlcUluc3RhbmNlID09IG51bGwpIHtcbiAgICAgIGlmIChnZXRBY2Nlc3NUb2tlbiA9PSBudWxsKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignYGdldEFjY2Vzc1Rva2VuYCBpcyByZXF1aXJlZCB3aGVuIGBoYW5kbGVSZXFJbnN0YW5jZWAgaXMgbm90IHByb3ZpZGVkIScpXG4gICAgICB9XG4gICAgICByZXR1cm4gY3JlYXRlUmVxdWVzdEluc3RhbmNlV2l0aEFjY2Vzc1Rva2VuSGVhZGVyKHsgcmVxLCBnZXRBY2Nlc3NUb2tlbiB9KVxuICAgIH1cbiAgICByZXR1cm4gaGFuZGxlUmVxSW5zdGFuY2UoeyByZXEgfSlcbiAgfVxuXG4gIHJldHVybiBuZXcgQUkoZ2V0UmVxKCksIGdldEJhc2VVcmwoKSwgaTE4biwgZ2V0QmFzZVVybEZ1bmMpXG59XG5cbi8vIOWFvOWuuVxuLyoqXG4gKiBAZGVwcmVjYXRlZCB1c2UgYGNyZWF0ZUFJYFxuICovXG5jb25zdCBjcmVhdGVBaSA9IGNyZWF0ZUFJXG5cbi8qKlxuICog5Yib5bu6IGBBSWAg5a6e5L6L44CCXG4gKiDor6Xlh73mlbDmjILovb3lnKgganMgc2RrIOeahCBDbG91ZGJhc2Ug5a6e5L6L5LiK44CCXG4gKiDor6Xlh73mlbDosIPnlKjkuobmnKzmqKHlnZfmmrTpnLLnmoQgYGNyZWF0ZUFJYCDlh73mlbDvvIzkvYbosIPnlKjml7bpgJrov4fkvKDlhaXlj4LmlbDlgZrkuobpgLvovpHopobnm5bvvJpcbiAqXG4gKiAtIOS8oOWFpeS7jiBDbG91ZGJhc2Ug5a6e5L6L5LiK55qE5Lit5b+D55qEIGByZXFgXG4gKiAtIOS8oOWFpeS7jiBDbG91ZGJhc2Ug5a6e5L6L5LiK5ou/5Yiw55qEIGBiYXNlVXJsYFxuICogLSDkvKDlhaXkuIDkuKrkuI3lpITnkIYgYHJlcWAg55qEIGBoYW5kbGVSZXFJbnN0YW5jZWDvvIznlLHkuo4gYHJlcWAg5piv5LuOIENsb3VkYmFzZSDlrp7kvovkuIrmi7/liLDnmoTvvIzov5nkuKrkuK3lv4PnmoQgYHJlcWAg5bey57uP5Y+v55So5LqGXG4gKiAtIOS4jeeUqOS8oOWFpSBgZW52YCDkuobvvIzlm6DkuLrlt7Lnu4/kvKDkuoYgYGJhc2VVcmxgXG4gKiAtIOS4jeeUqOS8oOWFpSBgZ2V0QWNjZXNzVG9rZW5gIOS6hu+8jOWboOS4uuS8oOS6hiBgaGFuZGxlUmVxSW5zdGFuY2VgXG4gKi9cbmZ1bmN0aW9uIGFpKFxuICB0aGlzOiBJQ2xvdWRiYXNlICYgeyBnZXRFbmRQb2ludFdpdGhLZXk6IChrZXk6ICdHQVRFV0FZJykgPT4geyBCQVNFX1VSTDogc3RyaW5nOyBQUk9UT0NPTDogc3RyaW5nIH0gfSxcbiAgb3B0aW9ucz86IEFJSW5pdE9wdGlvbixcbikge1xuICBjb25zdCByZXEgPSB0aGlzLnJlcXVlc3RcblxuICBpZiAocmVxLmZldGNoID09IG51bGwpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2Nsb3VkYmFzZS5yZXF1ZXN0LmZldGNoKCkgdW5pbXBsZW1lbnRlZCEnKVxuICB9XG5cbiAgY29uc3QgZ2V0VXJsRnJvbUNsb3VkID0gKCkgPT4ge1xuICAgIGNvbnN0IHsgQkFTRV9VUkwsIFBST1RPQ09MIH0gPSB0aGlzLmdldEVuZFBvaW50V2l0aEtleSgnR0FURVdBWScpXG4gICAgcmV0dXJuIGAke1BST1RPQ09MfSR7QkFTRV9VUkx9YFxuICB9XG5cbiAgLy8g6Iul55So5oi35Lyg5LqG6Z2Z5oCBIGJhc2VVcmwg5YiZ5L2/55So6Z2Z5oCB5YC877yM5ZCm5YiZ5Lyg5YWl5Yqo5oCB6I635Y+W5Ye95pWw5pSv5oyB56uv54K55Y+Y5pu05ZCO55Sf5pWIXG4gIGlmIChvcHRpb25zPy5iYXNlVXJsKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUFJKHsgcmVxLCBiYXNlVXJsOiBvcHRpb25zLmJhc2VVcmwsIGhhbmRsZVJlcUluc3RhbmNlOiAoeyByZXEgfSkgPT4gcmVxLCBpMThuOiB0aGlzLmNvbmZpZy5pMThuIH0pXG4gIH1cblxuICByZXR1cm4gY3JlYXRlQUkoeyByZXEsIGJhc2VVcmw6IGdldFVybEZyb21DbG91ZCgpLCBnZXRCYXNlVXJsOiBnZXRVcmxGcm9tQ2xvdWQsIGhhbmRsZVJlcUluc3RhbmNlOiAoeyByZXEgfSkgPT4gcmVxLCBpMThuOiB0aGlzLmNvbmZpZy5pMThuIH0pXG59XG5cbmNvbnN0IGNvbXBvbmVudDogSUNsb3VkYmFzZUNvbXBvbmVudCA9IHtcbiAgbmFtZTogQ09NUE9ORU5UX05BTUUsXG4gIGVudGl0eTogeyBhaSB9LFxufVxuXG5mdW5jdGlvbiByZWdpc3RlckFpKGFwcDogSUNsb3VkYmFzZSkge1xuICB0cnkge1xuICAgIGFwcC5yZWdpc3RlckNvbXBvbmVudChjb21wb25lbnQpXG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBjb25zb2xlLndhcm4oZSlcbiAgfVxufVxuXG5leHBvcnQgeyBBSSwgQm90LCBjcmVhdGVBaSwgY3JlYXRlQUksIHJlc3RNb2RlbHMgYXMgbW9kZWxzLCByZWdpc3RlckFpLCB1dGlscyB9XG5leHBvcnQgKiBmcm9tICcuL3R5cGUnXG5leHBvcnQgKiBmcm9tICcuL2Vycm9ycydcblxudHJ5IHtcbiAgKHdpbmRvdyBhcyBhbnkpLnJlZ2lzdGVyQWkgPSByZWdpc3RlckFpXG59IGNhdGNoIChlKSB7fVxuIl19
@@ -127,4 +127,4 @@ var ArkSimpleModel = (function () {
127
127
  return ArkSimpleModel;
128
128
  }());
129
129
  exports.ArkSimpleModel = ArkSimpleModel;
130
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbW9kZWxzL0Fyay9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHFDQU1vQjtBQVlwQixTQUFTLFlBQVksQ0FBQyxLQUF5QjtJQUNyQyxJQUFBLFFBQVEsR0FBdUMsS0FBSyxTQUE1QyxFQUFFLEtBQUssR0FBZ0MsS0FBSyxNQUFyQyxFQUFFLFdBQVcsR0FBbUIsS0FBSyxZQUF4QixFQUFFLEtBQUssR0FBWSxLQUFLLE1BQWpCLEVBQUUsS0FBSyxHQUFLLEtBQUssTUFBVixDQUFVO0lBRTVELDZCQUNLLEtBQUssS0FDUixRQUFRLFVBQUEsRUFDUixLQUFLLE9BQUEsRUFDTCxLQUFLLE9BQUEsRUFDTCxLQUFLLE9BQUEsRUFDTCxXQUFXLGFBQUEsSUFDWjtBQUNILENBQUM7QUFFRDtJQUVFLHdCQUFvQixHQUFhLEVBQVMsT0FBZSxFQUFFLE1BQWU7UUFBdEQsUUFBRyxHQUFILEdBQUcsQ0FBVTtRQUFTLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFEbEQsV0FBTSxHQUFHLDZCQUE2QixDQUFBO1FBRTNDLElBQUksTUFBTSxJQUFJLElBQUksRUFBRTtZQUNsQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQTtTQUNyQjtJQUNILENBQUM7SUFFRCxzQkFBWSwrQkFBRzthQUFmO1lBQ0UsT0FBTyxVQUFHLElBQUksQ0FBQyxPQUFPLGNBQUksSUFBSSxDQUFDLE1BQU0sQ0FBRSxDQUFBO1FBQ3pDLENBQUM7OztPQUFBO0lBRVksbUNBQVUsR0FBdkIsVUFBd0IsSUFBd0IsRUFBRSxPQUFvQjs7Ozs7NEJBQ3ZELFdBQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQzs0QkFDMUIsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHOzRCQUNiLElBQUksd0JBQ0MsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUNyQixNQUFNLEVBQUUsS0FBSyxHQUNkOzRCQUNELE1BQU0sRUFBRSxLQUFLOzRCQUNiLE9BQU8sRUFBRSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsT0FBTzt5QkFDMUIsQ0FBQyxFQUFBOzt3QkFSSSxHQUFHLEdBQUcsQ0FBQyxTQVFYLENBQTBCO3dCQUM1QixpQ0FBWSxHQUFHLEtBQUUsV0FBVyxFQUFFLEdBQUcsS0FBRTs7OztLQUNwQztJQUVZLGlDQUFRLEdBQXJCLFVBQXNCLElBQXdCLEVBQUUsT0FBb0I7Ozs7Ozt3QkFDOUQsVUFBVSxHQUFtQixJQUFJLENBQUE7d0JBQ3JCLFdBQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQztnQ0FDN0IsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHO2dDQUNiLElBQUksd0JBQ0MsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUNyQixNQUFNLEVBQUUsSUFBSSxHQUNiO2dDQUNELE1BQU0sRUFBRSxJQUFJO2dDQUNaLE9BQU8sRUFBRSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsT0FBTzs2QkFDMUIsQ0FBQyxFQUFBOzt3QkFSSSxPQUFPLEdBQUcsU0FRZDt3QkFDSSxNQUFNLEdBQUcsSUFBQSwwQkFBa0IsRUFBQyxPQUFPLENBQW1CLENBQUE7d0JBRXRELFNBQVMsR0FBRyxJQUFBLDBCQUFrQixFQUFzQixNQUFNLENBQUMsQ0FBQTt3QkFDM0QsYUFBYSxHQUFHLFNBQVMsQ0FBQyxXQUFXLENBQUMsSUFBSSx1QkFBZSxDQUF1RTs0QkFDcEksU0FBUyxZQUFDLEtBQUssRUFBRSxVQUFVO2dDQUN6QixJQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFDLE1BQU07b0NBQzFDLElBQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUE7b0NBQzVCLElBQUksVUFBVSxJQUFJLElBQUk7d0NBQUUsVUFBVSxHQUFHLElBQUEsa0NBQTBCLEVBQUMsT0FBTyxDQUFDLENBQUE7b0NBQ3hFLElBQUksVUFBVSxFQUFFO3dDQUNkLDZCQUNLLE1BQU0sS0FDVCxhQUFhLEVBQUUsWUFBcUIsRUFDcEMsS0FBSyxFQUFFLE9BQU8sSUFDZjtxQ0FDRjtvQ0FDRCxPQUFPLE1BQU0sQ0FBQTtnQ0FDZixDQUFDLENBQUMsQ0FBQTtnQ0FDRixJQUFNLFFBQVEseUJBQVEsS0FBSyxLQUFFLE9BQU8sRUFBRSxVQUFVLEdBQUUsQ0FBQTtnQ0FDbEQsVUFBVSxDQUFDLE9BQU8sdUJBQU0sUUFBUSxLQUFFLFdBQVcsRUFBRSxLQUFLLElBQUcsQ0FBQTs0QkFDekQsQ0FBQzt5QkFDRixDQUFDLENBQUUsQ0FBQTt3QkFFSixXQUFPLElBQUEsMkJBQW1CLEVBQUMsYUFBYSxDQUFDLEVBQUE7Ozs7S0FDMUM7SUFDSCxxQkFBQztBQUFELENBQUMsQUE1REQsSUE0REM7QUE1RFksd0NBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBjcmVhdGVBc3luY0l0ZXJhYmxlLFxuICBUcmFuc2Zvcm1TdHJlYW0sXG4gIHRvUG9seWZpbGxSZWFkYWJsZSxcbiAgaW50b1N0YW5kYXJkU3RyZWFtLFxuICBpc1Rvb2xDYWxsQXNzaXN0YW50TWVzc2FnZSxcbn0gZnJvbSAnLi4vLi4vdXRpbHMnXG5pbXBvcnQgdHlwZSB7IEFya0dlbmVyYXRlVGV4dE91dHB1dCwgQXJrSW5wdXREYXRhLCBBcmtTdHJlYW1UZXh0T3V0cHV0IH0gZnJvbSAnLi90eXBlJ1xuaW1wb3J0IHR5cGUge1xuICBNb2RlbFJlcSxcbiAgQmFzZUNoYXRNb2RlbElucHV0LFxuICBTaW1wbGVDaGF0TW9kZWwsXG4gIERvR2VuZXJhdGVPdXRwdXQsXG4gIERvU3RyZWFtT3V0cHV0LFxuICBCYXNlRG9TdHJlYW1PdXRwdXRDaHVuayxcbiAgUmVxT3B0aW9ucyxcbn0gZnJvbSAnLi4vLi4vdHlwZSdcblxuZnVuY3Rpb24gcHJvY2Vzc0lucHV0KGlucHV0OiBCYXNlQ2hhdE1vZGVsSW5wdXQpOiBBcmtJbnB1dERhdGEge1xuICBjb25zdCB7IG1lc3NhZ2VzLCBtb2RlbCwgdGVtcGVyYXR1cmUsIHRvb2xzLCB0b3BfcCB9ID0gaW5wdXRcblxuICByZXR1cm4ge1xuICAgIC4uLmlucHV0LFxuICAgIG1lc3NhZ2VzLFxuICAgIG1vZGVsLFxuICAgIHRvb2xzLFxuICAgIHRvcF9wLFxuICAgIHRlbXBlcmF0dXJlLFxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBBcmtTaW1wbGVNb2RlbCBpbXBsZW1lbnRzIFNpbXBsZUNoYXRNb2RlbCB7XG4gIHB1YmxpYyBzdWJVcmwgPSAnYXJrL2FwaS92My9jaGF0L2NvbXBsZXRpb25zJ1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlcTogTW9kZWxSZXEsIHB1YmxpYyBiYXNlVXJsOiBzdHJpbmcsIHN1YlVybD86IHN0cmluZykge1xuICAgIGlmIChzdWJVcmwgIT0gbnVsbCkge1xuICAgICAgdGhpcy5zdWJVcmwgPSBzdWJVcmxcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldCB1cmwoKSB7XG4gICAgcmV0dXJuIGAke3RoaXMuYmFzZVVybH0vJHt0aGlzLnN1YlVybH1gXG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZG9HZW5lcmF0ZShkYXRhOiBCYXNlQ2hhdE1vZGVsSW5wdXQsIG9wdGlvbnM/OiBSZXFPcHRpb25zKTogUHJvbWlzZTxEb0dlbmVyYXRlT3V0cHV0PiB7XG4gICAgY29uc3QgcmVzID0gKGF3YWl0IHRoaXMucmVxKHtcbiAgICAgIHVybDogdGhpcy51cmwsXG4gICAgICBkYXRhOiB7XG4gICAgICAgIC4uLnByb2Nlc3NJbnB1dChkYXRhKSxcbiAgICAgICAgc3RyZWFtOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgICBzdHJlYW06IGZhbHNlLFxuICAgICAgdGltZW91dDogb3B0aW9ucz8udGltZW91dCxcbiAgICB9KSkgYXMgQXJrR2VuZXJhdGVUZXh0T3V0cHV0XG4gICAgcmV0dXJuIHsgLi4ucmVzLCByYXdSZXNwb25zZTogcmVzIH1cbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBkb1N0cmVhbShkYXRhOiBCYXNlQ2hhdE1vZGVsSW5wdXQsIG9wdGlvbnM/OiBSZXFPcHRpb25zKTogUHJvbWlzZTxEb1N0cmVhbU91dHB1dD4ge1xuICAgIGxldCBpc1Rvb2xDYWxsOiBudWxsIHwgYm9vbGVhbiA9IG51bGxcbiAgICBjb25zdCBfc3RyZWFtID0gYXdhaXQgdGhpcy5yZXEoe1xuICAgICAgdXJsOiB0aGlzLnVybCxcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgLi4ucHJvY2Vzc0lucHV0KGRhdGEpLFxuICAgICAgICBzdHJlYW06IHRydWUsXG4gICAgICB9LFxuICAgICAgc3RyZWFtOiB0cnVlLFxuICAgICAgdGltZW91dDogb3B0aW9ucz8udGltZW91dCxcbiAgICB9KVxuICAgIGNvbnN0IHN0cmVhbSA9IHRvUG9seWZpbGxSZWFkYWJsZShfc3RyZWFtKSBhcyB0eXBlb2YgX3N0cmVhbVxuXG4gICAgY29uc3QgYXJrU3RyZWFtID0gaW50b1N0YW5kYXJkU3RyZWFtPEFya1N0cmVhbVRleHRPdXRwdXQ+KHN0cmVhbSlcbiAgICBjb25zdCBzdHJlYW1XaXRoUmF3ID0gYXJrU3RyZWFtLnBpcGVUaHJvdWdoKG5ldyBUcmFuc2Zvcm1TdHJlYW08QXJrU3RyZWFtVGV4dE91dHB1dCwgQmFzZURvU3RyZWFtT3V0cHV0Q2h1bmsgJiB7IHJhd1Jlc3BvbnNlPzogYW55IH0+KHtcbiAgICAgIHRyYW5zZm9ybShjaHVuaywgY29udHJvbGxlcikge1xuICAgICAgICBjb25zdCBuZXdDaG9pY2VzID0gY2h1bmsuY2hvaWNlcy5tYXAoKGNob2ljZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBjaG9pY2UuZGVsdGFcbiAgICAgICAgICBpZiAoaXNUb29sQ2FsbCA9PSBudWxsKSBpc1Rvb2xDYWxsID0gaXNUb29sQ2FsbEFzc2lzdGFudE1lc3NhZ2UobWVzc2FnZSlcbiAgICAgICAgICBpZiAoaXNUb29sQ2FsbCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgLi4uY2hvaWNlLFxuICAgICAgICAgICAgICBmaW5pc2hfcmVhc29uOiAndG9vbF9jYWxscycgYXMgY29uc3QsXG4gICAgICAgICAgICAgIGRlbHRhOiBtZXNzYWdlLFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gY2hvaWNlXG4gICAgICAgIH0pXG4gICAgICAgIGNvbnN0IG5ld0NodW5rID0geyAuLi5jaHVuaywgY2hvaWNlczogbmV3Q2hvaWNlcyB9XG4gICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSh7IC4uLm5ld0NodW5rLCByYXdSZXNwb25zZTogY2h1bmsgfSlcbiAgICAgIH0sXG4gICAgfSksKVxuXG4gICAgcmV0dXJuIGNyZWF0ZUFzeW5jSXRlcmFibGUoc3RyZWFtV2l0aFJhdylcbiAgfVxufVxuIl19
130
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbW9kZWxzL0Fyay9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBLHFDQU1vQjtBQVlwQixTQUFTLFlBQVksQ0FBQyxLQUF5QjtJQUNyQyxJQUFBLFFBQVEsR0FBdUMsS0FBSyxTQUE1QyxFQUFFLEtBQUssR0FBZ0MsS0FBSyxNQUFyQyxFQUFFLFdBQVcsR0FBbUIsS0FBSyxZQUF4QixFQUFFLEtBQUssR0FBWSxLQUFLLE1BQWpCLEVBQUUsS0FBSyxHQUFLLEtBQUssTUFBVixDQUFVO0lBRTVELDZCQUNLLEtBQUssS0FDUixRQUFRLFVBQUEsRUFDUixLQUFLLE9BQUEsRUFDTCxLQUFLLE9BQUEsRUFDTCxLQUFLLE9BQUEsRUFDTCxXQUFXLGFBQUEsSUFDWjtBQUNILENBQUM7QUFFRDtJQUVFLHdCQUFvQixHQUFhLEVBQVMsT0FBZSxFQUFFLE1BQWU7UUFBdEQsUUFBRyxHQUFILEdBQUcsQ0FBVTtRQUFTLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFEbEQsV0FBTSxHQUFHLDZCQUE2QixDQUFBO1FBRTNDLElBQUksTUFBTSxJQUFJLElBQUksRUFBRTtZQUNsQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQTtTQUNyQjtJQUNILENBQUM7SUFFRCxzQkFBWSwrQkFBRzthQUFmO1lBQ0UsT0FBTyxVQUFHLElBQUksQ0FBQyxPQUFPLGNBQUksSUFBSSxDQUFDLE1BQU0sQ0FBRSxDQUFBO1FBQ3pDLENBQUM7OztPQUFBO0lBRVksbUNBQVUsR0FBdkIsVUFBd0IsSUFBd0IsRUFBRSxPQUFvQjs7Ozs7NEJBQ3ZELFdBQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQzs0QkFDMUIsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHOzRCQUNiLElBQUksd0JBQ0MsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUNyQixNQUFNLEVBQUUsS0FBSyxHQUNkOzRCQUNELE1BQU0sRUFBRSxLQUFLOzRCQUNiLE9BQU8sRUFBRSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsT0FBTzt5QkFDMUIsQ0FBQyxFQUFBOzt3QkFSSSxHQUFHLEdBQUcsQ0FBQyxTQVFYLENBQTBCO3dCQUM1QixpQ0FBWSxHQUFHLEtBQUUsV0FBVyxFQUFFLEdBQUcsS0FBRTs7OztLQUNwQztJQUVZLGlDQUFRLEdBQXJCLFVBQXNCLElBQXdCLEVBQUUsT0FBb0I7Ozs7Ozt3QkFDOUQsVUFBVSxHQUFtQixJQUFJLENBQUE7d0JBQ3JCLFdBQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQztnQ0FDN0IsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHO2dDQUNiLElBQUksd0JBQ0MsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUNyQixNQUFNLEVBQUUsSUFBSSxHQUNiO2dDQUNELE1BQU0sRUFBRSxJQUFJO2dDQUNaLE9BQU8sRUFBRSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsT0FBTzs2QkFDMUIsQ0FBQyxFQUFBOzt3QkFSSSxPQUFPLEdBQUcsU0FRZDt3QkFDSSxNQUFNLEdBQUcsSUFBQSwwQkFBa0IsRUFBQyxPQUFPLENBQW1CLENBQUE7d0JBRXRELFNBQVMsR0FBRyxJQUFBLDBCQUFrQixFQUFzQixNQUFNLENBQUMsQ0FBQTt3QkFDM0QsYUFBYSxHQUFHLFNBQVMsQ0FBQyxXQUFXLENBQUMsSUFBSSx1QkFBZSxDQUF1RTs0QkFDcEksU0FBUyxZQUFDLEtBQUssRUFBRSxVQUFVO2dDQUN6QixJQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFDLE1BQU07b0NBQzFDLElBQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUE7b0NBQzVCLElBQUksVUFBVSxJQUFJLElBQUk7d0NBQUUsVUFBVSxHQUFHLElBQUEsa0NBQTBCLEVBQUMsT0FBTyxDQUFDLENBQUE7b0NBQ3hFLElBQUksVUFBVSxFQUFFO3dDQUNkLDZCQUNLLE1BQU0sS0FDVCxhQUFhLEVBQUUsWUFBcUIsRUFDcEMsS0FBSyxFQUFFLE9BQU8sSUFDZjtxQ0FDRjtvQ0FDRCxPQUFPLE1BQU0sQ0FBQTtnQ0FDZixDQUFDLENBQUMsQ0FBQTtnQ0FDRixJQUFNLFFBQVEseUJBQVEsS0FBSyxLQUFFLE9BQU8sRUFBRSxVQUFVLEdBQUUsQ0FBQTtnQ0FDbEQsVUFBVSxDQUFDLE9BQU8sdUJBQU0sUUFBUSxLQUFFLFdBQVcsRUFBRSxLQUFLLElBQUcsQ0FBQTs0QkFDekQsQ0FBQzt5QkFDRixDQUFDLENBQUUsQ0FBQTt3QkFFSixXQUFPLElBQUEsMkJBQW1CLEVBQUMsYUFBYSxDQUFDLEVBQUE7Ozs7S0FDMUM7SUFDSCxxQkFBQztBQUFELENBQUMsQUE1REQsSUE0REM7QUE1RFksd0NBQWMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBlcWVxZXEgKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvbiAqL1xuaW1wb3J0IHtcbiAgY3JlYXRlQXN5bmNJdGVyYWJsZSxcbiAgVHJhbnNmb3JtU3RyZWFtLFxuICB0b1BvbHlmaWxsUmVhZGFibGUsXG4gIGludG9TdGFuZGFyZFN0cmVhbSxcbiAgaXNUb29sQ2FsbEFzc2lzdGFudE1lc3NhZ2UsXG59IGZyb20gJy4uLy4uL3V0aWxzJ1xuaW1wb3J0IHR5cGUgeyBBcmtHZW5lcmF0ZVRleHRPdXRwdXQsIEFya0lucHV0RGF0YSwgQXJrU3RyZWFtVGV4dE91dHB1dCB9IGZyb20gJy4vdHlwZSdcbmltcG9ydCB0eXBlIHtcbiAgTW9kZWxSZXEsXG4gIEJhc2VDaGF0TW9kZWxJbnB1dCxcbiAgU2ltcGxlQ2hhdE1vZGVsLFxuICBEb0dlbmVyYXRlT3V0cHV0LFxuICBEb1N0cmVhbU91dHB1dCxcbiAgQmFzZURvU3RyZWFtT3V0cHV0Q2h1bmssXG4gIFJlcU9wdGlvbnMsXG59IGZyb20gJy4uLy4uL3R5cGUnXG5cbmZ1bmN0aW9uIHByb2Nlc3NJbnB1dChpbnB1dDogQmFzZUNoYXRNb2RlbElucHV0KTogQXJrSW5wdXREYXRhIHtcbiAgY29uc3QgeyBtZXNzYWdlcywgbW9kZWwsIHRlbXBlcmF0dXJlLCB0b29scywgdG9wX3AgfSA9IGlucHV0XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5pbnB1dCxcbiAgICBtZXNzYWdlcyxcbiAgICBtb2RlbCxcbiAgICB0b29scyxcbiAgICB0b3BfcCxcbiAgICB0ZW1wZXJhdHVyZSxcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQXJrU2ltcGxlTW9kZWwgaW1wbGVtZW50cyBTaW1wbGVDaGF0TW9kZWwge1xuICBwdWJsaWMgc3ViVXJsID0gJ2Fyay9hcGkvdjMvY2hhdC9jb21wbGV0aW9ucydcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZXE6IE1vZGVsUmVxLCBwdWJsaWMgYmFzZVVybDogc3RyaW5nLCBzdWJVcmw/OiBzdHJpbmcpIHtcbiAgICBpZiAoc3ViVXJsICE9IG51bGwpIHtcbiAgICAgIHRoaXMuc3ViVXJsID0gc3ViVXJsXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXQgdXJsKCkge1xuICAgIHJldHVybiBgJHt0aGlzLmJhc2VVcmx9LyR7dGhpcy5zdWJVcmx9YFxuICB9XG5cbiAgcHVibGljIGFzeW5jIGRvR2VuZXJhdGUoZGF0YTogQmFzZUNoYXRNb2RlbElucHV0LCBvcHRpb25zPzogUmVxT3B0aW9ucyk6IFByb21pc2U8RG9HZW5lcmF0ZU91dHB1dD4ge1xuICAgIGNvbnN0IHJlcyA9IChhd2FpdCB0aGlzLnJlcSh7XG4gICAgICB1cmw6IHRoaXMudXJsLFxuICAgICAgZGF0YToge1xuICAgICAgICAuLi5wcm9jZXNzSW5wdXQoZGF0YSksXG4gICAgICAgIHN0cmVhbTogZmFsc2UsXG4gICAgICB9LFxuICAgICAgc3RyZWFtOiBmYWxzZSxcbiAgICAgIHRpbWVvdXQ6IG9wdGlvbnM/LnRpbWVvdXQsXG4gICAgfSkpIGFzIEFya0dlbmVyYXRlVGV4dE91dHB1dFxuICAgIHJldHVybiB7IC4uLnJlcywgcmF3UmVzcG9uc2U6IHJlcyB9XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZG9TdHJlYW0oZGF0YTogQmFzZUNoYXRNb2RlbElucHV0LCBvcHRpb25zPzogUmVxT3B0aW9ucyk6IFByb21pc2U8RG9TdHJlYW1PdXRwdXQ+IHtcbiAgICBsZXQgaXNUb29sQ2FsbDogbnVsbCB8IGJvb2xlYW4gPSBudWxsXG4gICAgY29uc3QgX3N0cmVhbSA9IGF3YWl0IHRoaXMucmVxKHtcbiAgICAgIHVybDogdGhpcy51cmwsXG4gICAgICBkYXRhOiB7XG4gICAgICAgIC4uLnByb2Nlc3NJbnB1dChkYXRhKSxcbiAgICAgICAgc3RyZWFtOiB0cnVlLFxuICAgICAgfSxcbiAgICAgIHN0cmVhbTogdHJ1ZSxcbiAgICAgIHRpbWVvdXQ6IG9wdGlvbnM/LnRpbWVvdXQsXG4gICAgfSlcbiAgICBjb25zdCBzdHJlYW0gPSB0b1BvbHlmaWxsUmVhZGFibGUoX3N0cmVhbSkgYXMgdHlwZW9mIF9zdHJlYW1cblxuICAgIGNvbnN0IGFya1N0cmVhbSA9IGludG9TdGFuZGFyZFN0cmVhbTxBcmtTdHJlYW1UZXh0T3V0cHV0PihzdHJlYW0pXG4gICAgY29uc3Qgc3RyZWFtV2l0aFJhdyA9IGFya1N0cmVhbS5waXBlVGhyb3VnaChuZXcgVHJhbnNmb3JtU3RyZWFtPEFya1N0cmVhbVRleHRPdXRwdXQsIEJhc2VEb1N0cmVhbU91dHB1dENodW5rICYgeyByYXdSZXNwb25zZT86IGFueSB9Pih7XG4gICAgICB0cmFuc2Zvcm0oY2h1bmssIGNvbnRyb2xsZXIpIHtcbiAgICAgICAgY29uc3QgbmV3Q2hvaWNlcyA9IGNodW5rLmNob2ljZXMubWFwKChjaG9pY2UpID0+IHtcbiAgICAgICAgICBjb25zdCBtZXNzYWdlID0gY2hvaWNlLmRlbHRhXG4gICAgICAgICAgaWYgKGlzVG9vbENhbGwgPT0gbnVsbCkgaXNUb29sQ2FsbCA9IGlzVG9vbENhbGxBc3Npc3RhbnRNZXNzYWdlKG1lc3NhZ2UpXG4gICAgICAgICAgaWYgKGlzVG9vbENhbGwpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIC4uLmNob2ljZSxcbiAgICAgICAgICAgICAgZmluaXNoX3JlYXNvbjogJ3Rvb2xfY2FsbHMnIGFzIGNvbnN0LFxuICAgICAgICAgICAgICBkZWx0YTogbWVzc2FnZSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGNob2ljZVxuICAgICAgICB9KVxuICAgICAgICBjb25zdCBuZXdDaHVuayA9IHsgLi4uY2h1bmssIGNob2ljZXM6IG5ld0Nob2ljZXMgfVxuICAgICAgICBjb250cm9sbGVyLmVucXVldWUoeyAuLi5uZXdDaHVuaywgcmF3UmVzcG9uc2U6IGNodW5rIH0pXG4gICAgICB9LFxuICAgIH0pLClcblxuICAgIHJldHVybiBjcmVhdGVBc3luY0l0ZXJhYmxlKHN0cmVhbVdpdGhSYXcpXG4gIH1cbn1cbiJdfQ==