@projectcor/maia-components 2.48.0 → 2.49.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -168,7 +168,7 @@ var parseSessionSSE = /*#__PURE__*/function () {
168
168
  _context.prev = 2;
169
169
  case 3:
170
170
  if (!true) {
171
- _context.next = 31;
171
+ _context.next = 32;
172
172
  break;
173
173
  }
174
174
  if (!active.isStopped) {
@@ -176,7 +176,7 @@ var parseSessionSSE = /*#__PURE__*/function () {
176
176
  break;
177
177
  }
178
178
  reader.cancel();
179
- return _context.abrupt("continue", 31);
179
+ return _context.abrupt("continue", 32);
180
180
  case 4:
181
181
  _context.next = 5;
182
182
  return reader.read();
@@ -188,14 +188,14 @@ var parseSessionSSE = /*#__PURE__*/function () {
188
188
  _context.next = 6;
189
189
  break;
190
190
  }
191
- return _context.abrupt("continue", 31);
191
+ return _context.abrupt("continue", 32);
192
192
  case 6:
193
193
  if (!active.isStopped) {
194
194
  _context.next = 7;
195
195
  break;
196
196
  }
197
197
  reader.cancel();
198
- return _context.abrupt("continue", 31);
198
+ return _context.abrupt("continue", 32);
199
199
  case 7:
200
200
  buffer += decoder.decode(value, {
201
201
  stream: true
@@ -207,7 +207,7 @@ var parseSessionSSE = /*#__PURE__*/function () {
207
207
  _iterator.s();
208
208
  case 9:
209
209
  if ((_step = _iterator.n()).done) {
210
- _context.next = 27;
210
+ _context.next = 28;
211
211
  break;
212
212
  }
213
213
  line = _step.value;
@@ -215,21 +215,21 @@ var parseSessionSSE = /*#__PURE__*/function () {
215
215
  _context.next = 10;
216
216
  break;
217
217
  }
218
- return _context.abrupt("continue", 26);
218
+ return _context.abrupt("continue", 27);
219
219
  case 10:
220
220
  _line$split = line.split('\n'), _line$split2 = _slicedToArray(_line$split, 2), eventLine = _line$split2[0], dataLine = _line$split2[1];
221
221
  if (!(!eventLine || !dataLine)) {
222
222
  _context.next = 11;
223
223
  break;
224
224
  }
225
- return _context.abrupt("continue", 26);
225
+ return _context.abrupt("continue", 27);
226
226
  case 11:
227
227
  eventType = eventLine.replace('event: ', '').trim();
228
228
  dataStr = dataLine.replace('data: ', '').trim();
229
229
  _context.prev = 12;
230
230
  data = JSON.parse(dataStr);
231
231
  _t = eventType;
232
- _context.next = _t === 'thinking' ? 13 : _t === 'using_skill' ? 14 : _t === 'answer_reset' ? 15 : _t === 'reasoning_step' ? 16 : _t === 'token' ? 17 : _t === 'content' ? 18 : _t === 'node' ? 19 : _t === 'complete' ? 20 : _t === 'approval_required' ? 21 : _t === 'error' ? 22 : 23;
232
+ _context.next = _t === 'thinking' ? 13 : _t === 'using_skill' ? 14 : _t === 'answer_reset' ? 15 : _t === 'context_compacted' ? 16 : _t === 'reasoning_step' ? 17 : _t === 'token' ? 18 : _t === 'content' ? 19 : _t === 'node' ? 20 : _t === 'complete' ? 21 : _t === 'approval_required' ? 22 : _t === 'error' ? 23 : 24;
233
233
  break;
234
234
  case 13:
235
235
  thinkingDelta = typeof data.delta === 'string' ? data.delta : '';
@@ -248,7 +248,7 @@ var parseSessionSSE = /*#__PURE__*/function () {
248
248
  });
249
249
  }
250
250
  }
251
- return _context.abrupt("continue", 24);
251
+ return _context.abrupt("continue", 25);
252
252
  case 14:
253
253
  if (!hasStartedWriting) {
254
254
  isUsingSkill = true;
@@ -258,11 +258,14 @@ var parseSessionSSE = /*#__PURE__*/function () {
258
258
  store().setStatus(sessionId, 'thinking');
259
259
  store().setActivity(sessionId, getUsingSkillActivity(t, data.skill));
260
260
  }
261
- return _context.abrupt("continue", 24);
261
+ return _context.abrupt("continue", 25);
262
262
  case 15:
263
263
  clearStreamLikeAnswerReset();
264
- return _context.abrupt("continue", 24);
264
+ return _context.abrupt("continue", 25);
265
265
  case 16:
266
+ reasoningStore.setCompaction(placeholderId, data);
267
+ return _context.abrupt("continue", 25);
268
+ case 17:
266
269
  stepTool = typeof data.tool === 'string' ? data.tool : '';
267
270
  stepType = typeof data.type === 'string' ? data.type : '';
268
271
  if (stepTool && stepType !== 'handoff' && data.status === 'running') {
@@ -286,21 +289,21 @@ var parseSessionSSE = /*#__PURE__*/function () {
286
289
  clearStreamLikeAnswerReset();
287
290
  }
288
291
  }
289
- return _context.abrupt("continue", 24);
290
- case 17:
292
+ return _context.abrupt("continue", 25);
293
+ case 18:
291
294
  chunk = typeof data.content === 'string' ? data.content : '';
292
295
  ensureWritingStarted();
293
296
  applyStreamChunk(chunk);
294
- return _context.abrupt("continue", 24);
295
- case 18:
297
+ return _context.abrupt("continue", 25);
298
+ case 19:
296
299
  _chunk = typeof data.content === 'string' ? data.content : '';
297
300
  ensureWritingStarted();
298
301
  applyStreamChunk(_chunk);
299
302
  if (isCompleteLikeSsePayload(data)) {
300
303
  applyStreamComplete(data);
301
304
  }
302
- return _context.abrupt("continue", 24);
303
- case 19:
305
+ return _context.abrupt("continue", 25);
306
+ case 20:
304
307
  isUsingSkill = false;
305
308
  if (data.node === 'agent_transfer') {
306
309
  store().patchMeta(sessionId, {
@@ -314,11 +317,11 @@ var parseSessionSSE = /*#__PURE__*/function () {
314
317
  store().setStatus(sessionId, 'thinking');
315
318
  store().setActivity(sessionId, resolveHitlNodeStreamActivity(data.message, t, hitlExecutionContext !== null && hitlExecutionContext !== void 0 ? hitlExecutionContext : undefined, typeof data.thread_id === 'string' ? data.thread_id : undefined));
316
319
  }
317
- return _context.abrupt("continue", 24);
318
- case 20:
319
- applyStreamComplete(data);
320
- return _context.abrupt("continue", 24);
320
+ return _context.abrupt("continue", 25);
321
321
  case 21:
322
+ applyStreamComplete(data);
323
+ return _context.abrupt("continue", 25);
324
+ case 22:
322
325
  flushPending();
323
326
  // Preaprobado (auto-approve o detección manual): el stream no se corta,
324
327
  // sigue ejecutando las acciones sin esperar decisión del usuario.
@@ -343,8 +346,8 @@ var parseSessionSSE = /*#__PURE__*/function () {
343
346
  store().setStatus(sessionId, 'thinking');
344
347
  store().setActivity(sessionId, resolveInitialHitlStreamActivity(t, hitlExecutionContext !== null && hitlExecutionContext !== void 0 ? hitlExecutionContext : undefined));
345
348
  }
346
- return _context.abrupt("continue", 24);
347
- case 22:
349
+ return _context.abrupt("continue", 25);
350
+ case 23:
348
351
  console.error('SSE Error:', data.error);
349
352
  flushPending();
350
353
  sessionStreamingText.clear(sessionId);
@@ -359,43 +362,43 @@ var parseSessionSSE = /*#__PURE__*/function () {
359
362
  });
360
363
  store().setStatus(sessionId, 'error');
361
364
  (_callbacks$onError = callbacks.onError) === null || _callbacks$onError === void 0 || _callbacks$onError.call(callbacks, (_data$error3 = data.error) === null || _data$error3 === void 0 ? void 0 : _data$error3.type, (_data$error4 = data.error) === null || _data$error4 === void 0 ? void 0 : _data$error4.message);
362
- return _context.abrupt("continue", 24);
363
- case 23:
364
- console.warn('Unknown SSE event type:', eventType);
365
- return _context.abrupt("continue", 24);
365
+ return _context.abrupt("continue", 25);
366
366
  case 24:
367
- _context.next = 26;
368
- break;
367
+ console.warn('Unknown SSE event type:', eventType);
368
+ return _context.abrupt("continue", 25);
369
369
  case 25:
370
- _context.prev = 25;
370
+ _context.next = 27;
371
+ break;
372
+ case 26:
373
+ _context.prev = 26;
371
374
  _t2 = _context["catch"](12);
372
375
  console.error('Error parsing SSE data:', _t2, dataStr);
373
- case 26:
374
- _context.next = 9;
375
- break;
376
376
  case 27:
377
- _context.next = 29;
377
+ _context.next = 9;
378
378
  break;
379
379
  case 28:
380
- _context.prev = 28;
381
- _t3 = _context["catch"](8);
382
- _iterator.e(_t3);
380
+ _context.next = 30;
381
+ break;
383
382
  case 29:
384
383
  _context.prev = 29;
385
- _iterator.f();
386
- return _context.finish(29);
384
+ _t3 = _context["catch"](8);
385
+ _iterator.e(_t3);
387
386
  case 30:
387
+ _context.prev = 30;
388
+ _iterator.f();
389
+ return _context.finish(30);
390
+ case 31:
388
391
  _context.next = 3;
389
392
  break;
390
- case 31:
391
- _context.prev = 31;
392
- flushPending();
393
- return _context.finish(31);
394
393
  case 32:
394
+ _context.prev = 32;
395
+ flushPending();
396
+ return _context.finish(32);
397
+ case 33:
395
398
  case "end":
396
399
  return _context.stop();
397
400
  }
398
- }, _callee, null, [[2,, 31, 32], [8, 28, 29, 30], [12, 25]]);
401
+ }, _callee, null, [[2,, 32, 33], [8, 29, 30, 31], [12, 26]]);
399
402
  }));
400
403
  return function parseSessionSSE(_x, _x2, _x3) {
401
404
  return _ref.apply(this, arguments);
@@ -785,4 +788,4 @@ export var sessionStreamManager = {
785
788
  });
786
789
  }
787
790
  };
788
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJtYWlhIiwiZ2V0SW5pdGlhbFN0cmVhbUFjdGl2aXR5IiwiZ2V0VGhpbmtpbmdMb2FkaW5nTWVzc2FnZSIsImdldFVzaW5nU2tpbGxBY3Rpdml0eSIsImdldFdyaXRpbmdTdHJlYW1BY3Rpdml0eSIsInJlc29sdmVIaXRsTm9kZVN0cmVhbUFjdGl2aXR5IiwicmVzb2x2ZUluaXRpYWxIaXRsU3RyZWFtQWN0aXZpdHkiLCJyZXNvbHZlVG9vbEFjdGlvbkxhYmVsIiwiaXNDb21wbGV0ZUxpa2VTc2VQYXlsb2FkIiwibWVyZ2VTdHJlYW1DaHVuayIsInJlYXNvbmluZ1N0b3JlIiwic2Vzc2lvblN0cmVhbWluZ1RleHQiLCJ1c2VTZXNzaW9uc1N0b3JlIiwiZW5zdXJlU2Vzc2lvbk5vdGlmaWNhdGlvbnNJbml0aWFsaXplZCIsInNlc3Npb25IaXRsQ29udGV4dCIsIk1BWF9DT05DVVJSRU5UX1NUUkVBTVMiLCJTVFJFQU1fVEhST1RUTEVfTVMiLCJhY3RpdmVTdHJlYW1zIiwiTWFwIiwic3RvcmUiLCJnZXRTdGF0ZSIsImlzU3RyZWFtQWN0aXZlIiwic2Vzc2lvbklkIiwiaGFzIiwiZ2V0QWN0aXZlU3RyZWFtQ291bnQiLCJzaXplIiwicGFyc2VTZXNzaW9uU1NFIiwiX3JlZiIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwicmVzcG9uc2UiLCJhY3RpdmUiLCJwYXJhbXMiLCJfcGFyYW1zJGhpdGxFeGVjdXRpb24iLCJfcmVzcG9uc2UkYm9keSIsIl9kYXRhJGVycm9yIiwiX2RhdGEkZXJyb3IyIiwiX2NhbGxiYWNrcyRvbkVycm9yIiwiX2RhdGEkZXJyb3IzIiwiX2RhdGEkZXJyb3I0IiwicGxhY2Vob2xkZXJJZCIsImNhbGxiYWNrcyIsInQiLCJoaXRsRXhlY3V0aW9uQ29udGV4dCIsInBlbmRpbmdDb250ZW50IiwidGhyb3R0bGVUaW1lciIsImZsdXNoVG9TdG9yZXMiLCJlbWl0VGhyb3R0bGVkIiwiZmx1c2hQZW5kaW5nIiwicmVhZGVyIiwiZGVjb2RlciIsImJ1ZmZlciIsImFjY3VtdWxhdGVkQ29udGVudCIsImhhc1N0YXJ0ZWRXcml0aW5nIiwiaXNVc2luZ1NraWxsIiwiZW5zdXJlV3JpdGluZ1N0YXJ0ZWQiLCJhcHBseVN0cmVhbUNodW5rIiwiY2xlYXJTdHJlYW1MaWtlQW5zd2VyUmVzZXQiLCJhcHBseVN0cmVhbUNvbXBsZXRlIiwiX3lpZWxkJHJlYWRlciRyZWFkIiwiZG9uZSIsInZhbHVlIiwibGluZXMiLCJfaXRlcmF0b3IiLCJfc3RlcCIsImxpbmUiLCJfbGluZSRzcGxpdCIsIl9saW5lJHNwbGl0MiIsImV2ZW50TGluZSIsImRhdGFMaW5lIiwiZXZlbnRUeXBlIiwiZGF0YVN0ciIsImRhdGEiLCJ0aGlua2luZ0RlbHRhIiwic3RlcFRvb2wiLCJzdGVwVHlwZSIsImxhYmVsIiwiX2RhdGEkYXJncyIsImNodW5rIiwiX2NodW5rIiwiX2NhbGxiYWNrcyRvbkFwcHJvdmFsIiwiaXNQcmVBcHByb3ZlZCIsIl9yZWYzIiwiX3QiLCJfdDIiLCJfdDMiLCJ3cmFwIiwiX2NvbnRleHQiLCJwcmV2IiwibmV4dCIsImdldCIsImNvbnRlbnQiLCJfY2FsbGJhY2tzJG9uU3RyZWFtVXAiLCJzZXRUZXh0Iiwib25TdHJlYW1VcGRhdGUiLCJjYWxsIiwid2luZG93Iiwic2V0VGltZW91dCIsInRvRW1pdCIsImNsZWFyVGltZW91dCIsImJvZHkiLCJnZXRSZWFkZXIiLCJFcnJvciIsIlRleHREZWNvZGVyIiwiX2NhbGxiYWNrcyRvblN0YXJ0V3JpIiwicGF0Y2hNZXRhIiwiaXNMb2FkaW5nIiwiaXNXcml0aW5nIiwic2V0U3RhdHVzIiwic2V0QWN0aXZpdHkiLCJvblN0YXJ0V3JpdGluZyIsInN5bmNMaXZlTmFycmF0aW9uIiwibWFya0Fuc3dlclJlc2V0IiwicGF5bG9hZCIsIl9wYXlsb2FkJGFnZW50X2lkIiwiX3N1YmFnZW50UmF3JHJlc29sdmVkIiwiX3JlZjIiLCJfY2FsbGJhY2tzJG9uRmluaXNoU3QiLCJmaW5hbENvbnRlbnQiLCJzb3VyY2VzIiwibWVtb3J5U2Vzc2lvbklkIiwibWVtb3J5X3Nlc3Npb25faWQiLCJhdHRhY2htZW50cyIsIkFycmF5IiwiaXNBcnJheSIsInN1Z2dlc3Rpb25zIiwic3VnZ2VzdF9yZXBseSIsImFnZW50SWRSYXciLCJhZ2VudF9pZCIsImFnZW50SWQiLCJjb21wbGV0ZWRBZ2VudElkIiwiU3RyaW5nIiwidHJpbSIsInN1YmFnZW50UmF3Iiwic3ViYWdlbnQiLCJyZXNvbHZlZENvbnRleHQiLCJyZXNvbHZlZF9jb250ZXh0IiwicmVhc29uaW5nIiwiZmluaXNoIiwiZmluaXNoUGF5bG9hZCIsIm9uRmluaXNoU3RyZWFtIiwiaXNTdG9wcGVkIiwiY2FuY2VsIiwiYWJydXB0IiwicmVhZCIsInNlbnQiLCJkZWNvZGUiLCJzdHJlYW0iLCJzcGxpdCIsInBvcCIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwicyIsIm4iLCJfc2xpY2VkVG9BcnJheSIsInJlcGxhY2UiLCJKU09OIiwicGFyc2UiLCJkZWx0YSIsImkiLCJhcHBlbmRUaGlua2luZyIsInBoYXNlIiwibWVzc2FnZSIsInNraWxsIiwidG9vbCIsInR5cGUiLCJzdGF0dXMiLCJhcmdzIiwibmFtZSIsImNhcHR1cmVMZWFkaW5nRnJvbUJvZHkiLCJhcHBseVN0ZXAiLCJzaG91bGRDbGVhclN0cmVhbUZvckxlYWRpbmciLCJub2RlIiwidW5kZWZpbmVkIiwidGhyZWFkX2lkIiwibWFudWFsX2FwcHJvdmFsX2RldGVjdGVkIiwiYXV0b19hcHByb3ZlZCIsImFwcHJvdmFsX3N0YXR1cyIsImNsZWFyIiwib25BcHByb3ZhbFJlcXVpcmVkIiwicGVuZGluZ19hY3Rpb25zIiwibGVuZ3RoIiwiY29uc29sZSIsImVycm9yIiwic2V0RXJyb3IiLCJvbkVycm9yIiwid2FybiIsImUiLCJmIiwic3RvcCIsIl94IiwiX3gyIiwiX3gzIiwiYXBwbHkiLCJhcmd1bWVudHMiLCJzZXNzaW9uU3RyZWFtTWFuYWdlciIsImlzQWN0aXZlIiwiZ2V0QWN0aXZlQ291bnQiLCJnZXRBY3RpdmVTZXNzaW9uSWRzIiwiZnJvbSIsImtleXMiLCJzdGFydFN0cmVhbSIsIl9jYWxsZWUyIiwicmVxdWVzdCIsImFjdGl2aXR5T3B0aW9ucyIsImFnZW50TmFtZSIsImNvbnRyb2xsZXIiLCJfY2FsbGJhY2tzJG9uRXJyb3IyIiwiX3Q0IiwiX2NvbnRleHQyIiwic3RhcnRlZCIsInJlYXNvbiIsIkFib3J0Q29udHJvbGxlciIsInNldCIsImVuc3VyZVNlc3Npb24iLCJfb2JqZWN0U3ByZWFkIiwic3RhcnQiLCJPcmNoZXN0cmF0b3IiLCJvcmNoZXN0cmF0b3IiLCJzaWduYWwiLCJzdGFydENvbnRpbnVlU3RyZWFtIiwiX2NhbGxlZTMiLCJfcmVmNCIsImNvbnRpbnVlUmVxdWVzdCIsInNzZVBhcmFtcyIsIl9jYWxsYmFja3Mkb25FcnJvcjMiLCJfdDUiLCJfY29udGV4dDMiLCJjb250aW51ZVRocmVhZCIsIm9rIiwiY29uY2F0Iiwic3RhcnRSZXRyeVN0cmVhbSIsIl9jYWxsZWU0IiwicmV0cnlSZXF1ZXN0IiwiZGV0YWlsIiwiX2NhbGxiYWNrcyRvbkVycm9yNCIsIl90NiIsIl90NyIsIl9jb250ZXh0NCIsInJldHJ5Q29tcGxldGlvbiIsImpzb24iLCJzdG9wU3RyZWFtIiwiX2NhbGxiYWNrcyRvblN0b3AiLCJhYm9ydCIsInBhcnRpYWxUZXh0IiwiZ2V0U25hcHNob3QiLCJ0ZXh0Iiwib25TdG9wIiwiYWJvcnRTaWxlbnRseSIsIl9zdG9yZSRnZXRNZXRhIiwiZ2V0TWV0YSIsImFib3J0QWxsIiwiX3RoaXMiLCJmb3JFYWNoIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3N0b3JlL3Nlc3Npb25zL3Nlc3Npb25TdHJlYW1NYW5hZ2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnRpbnVlICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1hd2FpdC1pbi1sb29wICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1yZXN0cmljdGVkLXN5bnRheCAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tY29uc3RhbnQtY29uZGl0aW9uICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgbWFpYSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tYWlhJ1xuaW1wb3J0IHR5cGUgeyBBcHByb3ZhbFJlcXVlc3QgfSBmcm9tICcuLi8uLi90eXBlcy9DaGF0J1xuaW1wb3J0IHtcbiAgZ2V0SW5pdGlhbFN0cmVhbUFjdGl2aXR5LFxuICBnZXRUaGlua2luZ0xvYWRpbmdNZXNzYWdlLFxuICBnZXRVc2luZ1NraWxsQWN0aXZpdHksXG4gIGdldFdyaXRpbmdTdHJlYW1BY3Rpdml0eSxcbiAgcmVzb2x2ZUhpdGxOb2RlU3RyZWFtQWN0aXZpdHksXG4gIHJlc29sdmVJbml0aWFsSGl0bFN0cmVhbUFjdGl2aXR5LFxuICByZXNvbHZlVG9vbEFjdGlvbkxhYmVsLFxufSBmcm9tICcuLi8uLi91dGlscy9zdHJlYW1BY3Rpdml0eU1lc3NhZ2VzJ1xuaW1wb3J0IHR5cGUgeyBIaXRsRXhlY3V0aW9uQ29udGV4dCB9IGZyb20gJy4uLy4uL3V0aWxzL3N0cmVhbUFjdGl2aXR5TWVzc2FnZXMnXG5pbXBvcnQgeyBpc0NvbXBsZXRlTGlrZVNzZVBheWxvYWQsIG1lcmdlU3RyZWFtQ2h1bmsgfSBmcm9tICcuLi8uLi91dGlscy9zc2VTdHJlYW1Db250ZW50J1xuaW1wb3J0IHsgcmVhc29uaW5nU3RvcmUgfSBmcm9tICcuLi8uLi9ob29rcy91c2VSZWFzb25pbmdUcmFjZSdcbmltcG9ydCB0eXBlIHsgUmVhc29uaW5nU3RlcFBheWxvYWQsIFJlYXNvbmluZ1RyYWNlUGF5bG9hZCB9IGZyb20gJy4uLy4uL3R5cGVzL3JlYXNvbmluZydcbmltcG9ydCB7IHNlc3Npb25TdHJlYW1pbmdUZXh0IH0gZnJvbSAnLi9zZXNzaW9uU3RyZWFtaW5nVGV4dCdcbmltcG9ydCB7IHVzZVNlc3Npb25zU3RvcmUgfSBmcm9tICcuL3VzZVNlc3Npb25zU3RvcmUnXG5pbXBvcnQgeyBlbnN1cmVTZXNzaW9uTm90aWZpY2F0aW9uc0luaXRpYWxpemVkIH0gZnJvbSAnLi9zZXNzaW9uTm90aWZpY2F0aW9ucydcbmltcG9ydCB7IHNlc3Npb25IaXRsQ29udGV4dCB9IGZyb20gJy4vc2Vzc2lvbkhpdGxDb250ZXh0J1xuaW1wb3J0IHR5cGUgeyBTZXNzaW9uRmluaXNoUGF5bG9hZCwgU2Vzc2lvblN0cmVhbUNhbGxiYWNrcywgU3RhcnRTdHJlYW1SZXN1bHQgfSBmcm9tICcuL3Nlc3Npb25zLnR5cGVzJ1xuXG50eXBlIE9yY2hlc3RyYXRvclJlcXVlc3QgPSBQYXJhbWV0ZXJzPHR5cGVvZiBtYWlhLk9yY2hlc3RyYXRvci5vcmNoZXN0cmF0b3I+WzBdXG50eXBlIENvbnRpbnVlVGhyZWFkUmVxdWVzdCA9IFBhcmFtZXRlcnM8dHlwZW9mIG1haWEuT3JjaGVzdHJhdG9yLmNvbnRpbnVlVGhyZWFkPlswXVxudHlwZSBSZXRyeUNvbXBsZXRpb25SZXF1ZXN0ID0gUGFyYW1ldGVyczx0eXBlb2YgbWFpYS5PcmNoZXN0cmF0b3IucmV0cnlDb21wbGV0aW9uPlswXVxuXG4vKiogQ29tcGF0aWJsZSBjb24gZWwgYHRgIGRlIGkxOG5leHQgKHVzbyBkZSB1bmEgc29sYSBrZXkpLiAqL1xudHlwZSBUcmFuc2xhdGVGbiA9IChrZXk6IHN0cmluZykgPT4gc3RyaW5nXG5cbnR5cGUgU3RhcnRTdHJlYW1QYXJhbXMgPSB7XG4gIHNlc3Npb25JZDogc3RyaW5nXG4gIHBsYWNlaG9sZGVySWQ6IHN0cmluZ1xuICByZXF1ZXN0OiBPcmNoZXN0cmF0b3JSZXF1ZXN0XG4gIGNhbGxiYWNrczogU2Vzc2lvblN0cmVhbUNhbGxiYWNrc1xuICB0OiBUcmFuc2xhdGVGblxuICBhY3Rpdml0eU9wdGlvbnM/OiB7XG4gICAgaXNXZWJTZWFyY2hBY3RpdmU/OiBib29sZWFuXG4gICAgaXNEZWVwU2VhcmNoQWN0aXZlPzogYm9vbGVhblxuICAgIGhhc0F0dGFjaG1lbnRzPzogYm9vbGVhblxuICAgIGF0dGFjaG1lbnRzQ291bnQ/OiBudW1iZXJcbiAgfVxuICBoaXRsRXhlY3V0aW9uQ29udGV4dD86IEhpdGxFeGVjdXRpb25Db250ZXh0IHwgbnVsbFxuICBhZ2VudElkPzogc3RyaW5nIHwgbnVtYmVyXG4gIGFnZW50TmFtZT86IHN0cmluZ1xufVxuXG50eXBlIFN0YXJ0Q29udGludWVTdHJlYW1QYXJhbXMgPSB7XG4gIHNlc3Npb25JZDogc3RyaW5nXG4gIHBsYWNlaG9sZGVySWQ6IHN0cmluZ1xuICBjb250aW51ZVJlcXVlc3Q6IENvbnRpbnVlVGhyZWFkUmVxdWVzdFxuICBjYWxsYmFja3M6IFNlc3Npb25TdHJlYW1DYWxsYmFja3NcbiAgdDogVHJhbnNsYXRlRm5cbiAgaGl0bEV4ZWN1dGlvbkNvbnRleHQ/OiBIaXRsRXhlY3V0aW9uQ29udGV4dCB8IG51bGxcbiAgYWdlbnRJZD86IHN0cmluZyB8IG51bWJlclxuICBhZ2VudE5hbWU/OiBzdHJpbmdcbn1cblxudHlwZSBTdGFydFJldHJ5U3RyZWFtUGFyYW1zID0ge1xuICBzZXNzaW9uSWQ6IHN0cmluZ1xuICBwbGFjZWhvbGRlcklkOiBzdHJpbmdcbiAgcmV0cnlSZXF1ZXN0OiBSZXRyeUNvbXBsZXRpb25SZXF1ZXN0XG4gIGNhbGxiYWNrczogU2Vzc2lvblN0cmVhbUNhbGxiYWNrc1xuICB0OiBUcmFuc2xhdGVGblxuICBhY3Rpdml0eU9wdGlvbnM/OiB7XG4gICAgaXNXZWJTZWFyY2hBY3RpdmU/OiBib29sZWFuXG4gICAgaXNEZWVwU2VhcmNoQWN0aXZlPzogYm9vbGVhblxuICAgIGhhc0F0dGFjaG1lbnRzPzogYm9vbGVhblxuICAgIGF0dGFjaG1lbnRzQ291bnQ/OiBudW1iZXJcbiAgfVxuICBhZ2VudElkPzogc3RyaW5nIHwgbnVtYmVyXG4gIGFnZW50TmFtZT86IHN0cmluZ1xufVxuXG50eXBlIEFjdGl2ZVN0cmVhbSA9IHtcbiAgc2Vzc2lvbklkOiBzdHJpbmdcbiAgY29udHJvbGxlcjogQWJvcnRDb250cm9sbGVyXG4gIGlzU3RvcHBlZDogYm9vbGVhblxufVxuXG4vKipcbiAqIE3DoXhpbW8gZGUgc2VzaW9uZXMgZ2VuZXJhbmRvIGVuIHBhcmFsZWxvLiBQcm90ZWdlIHJlZC9yZWN1cnNvcyBkZWwgY2xpZW50ZS5cbiAqIEFqdXN0YWJsZSBhIGZ1dHVybyB2w61hIGZsYWcgZGVsIGhvc3QuXG4gKi9cbmV4cG9ydCBjb25zdCBNQVhfQ09OQ1VSUkVOVF9TVFJFQU1TID0gNFxuXG5jb25zdCBTVFJFQU1fVEhST1RUTEVfTVMgPSAxNlxuXG5jb25zdCBhY3RpdmVTdHJlYW1zID0gbmV3IE1hcDxzdHJpbmcsIEFjdGl2ZVN0cmVhbT4oKVxuXG5jb25zdCBzdG9yZSA9ICgpID0+IHVzZVNlc3Npb25zU3RvcmUuZ2V0U3RhdGUoKVxuXG5jb25zdCBpc1N0cmVhbUFjdGl2ZSA9IChzZXNzaW9uSWQ6IHN0cmluZyk6IGJvb2xlYW4gPT4gYWN0aXZlU3RyZWFtcy5oYXMoc2Vzc2lvbklkKVxuXG5jb25zdCBnZXRBY3RpdmVTdHJlYW1Db3VudCA9ICgpOiBudW1iZXIgPT4gYWN0aXZlU3RyZWFtcy5zaXplXG5cbmNvbnN0IHBhcnNlU2Vzc2lvblNTRSA9IGFzeW5jIChyZXNwb25zZTogUmVzcG9uc2UsIGFjdGl2ZTogQWN0aXZlU3RyZWFtLCBwYXJhbXM6IFN0YXJ0U3RyZWFtUGFyYW1zKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gIGNvbnN0IHsgc2Vzc2lvbklkLCBwbGFjZWhvbGRlcklkLCBjYWxsYmFja3MsIHQgfSA9IHBhcmFtc1xuICBjb25zdCBoaXRsRXhlY3V0aW9uQ29udGV4dCA9IHBhcmFtcy5oaXRsRXhlY3V0aW9uQ29udGV4dCA/PyBzZXNzaW9uSGl0bENvbnRleHQuZ2V0KHNlc3Npb25JZClcblxuICBsZXQgcGVuZGluZ0NvbnRlbnQ6IHN0cmluZyB8IG51bGwgPSBudWxsXG4gIGxldCB0aHJvdHRsZVRpbWVyOiBudW1iZXIgfCBudWxsID0gbnVsbFxuXG4gIGNvbnN0IGZsdXNoVG9TdG9yZXMgPSAoY29udGVudDogc3RyaW5nKSA9PiB7XG4gICAgc2Vzc2lvblN0cmVhbWluZ1RleHQuc2V0VGV4dChzZXNzaW9uSWQsIHBsYWNlaG9sZGVySWQsIGNvbnRlbnQpXG4gICAgY2FsbGJhY2tzLm9uU3RyZWFtVXBkYXRlPy4oY29udGVudClcbiAgfVxuXG4gIGNvbnN0IGVtaXRUaHJvdHRsZWQgPSAoY29udGVudDogc3RyaW5nKSA9PiB7XG4gICAgcGVuZGluZ0NvbnRlbnQgPSBjb250ZW50XG4gICAgaWYgKHRocm90dGxlVGltZXIgIT0gbnVsbCkgcmV0dXJuXG4gICAgdGhyb3R0bGVUaW1lciA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRocm90dGxlVGltZXIgPSBudWxsXG4gICAgICBpZiAocGVuZGluZ0NvbnRlbnQgIT0gbnVsbCkge1xuICAgICAgICBjb25zdCB0b0VtaXQgPSBwZW5kaW5nQ29udGVudFxuICAgICAgICBwZW5kaW5nQ29udGVudCA9IG51bGxcbiAgICAgICAgZmx1c2hUb1N0b3Jlcyh0b0VtaXQpXG4gICAgICB9XG4gICAgfSwgU1RSRUFNX1RIUk9UVExFX01TKVxuICB9XG5cbiAgY29uc3QgZmx1c2hQZW5kaW5nID0gKCkgPT4ge1xuICAgIGlmICh0aHJvdHRsZVRpbWVyICE9IG51bGwpIHtcbiAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQodGhyb3R0bGVUaW1lcilcbiAgICAgIHRocm90dGxlVGltZXIgPSBudWxsXG4gICAgfVxuICAgIGlmIChwZW5kaW5nQ29udGVudCAhPSBudWxsKSB7XG4gICAgICBjb25zdCB0b0VtaXQgPSBwZW5kaW5nQ29udGVudFxuICAgICAgcGVuZGluZ0NvbnRlbnQgPSBudWxsXG4gICAgICBmbHVzaFRvU3RvcmVzKHRvRW1pdClcbiAgICB9XG4gIH1cblxuICBjb25zdCByZWFkZXIgPSByZXNwb25zZS5ib2R5Py5nZXRSZWFkZXIoKVxuICBpZiAoIXJlYWRlcikge1xuICAgIHRocm93IG5ldyBFcnJvcignTm8gcmVhZGVyIGF2YWlsYWJsZScpXG4gIH1cblxuICBjb25zdCBkZWNvZGVyID0gbmV3IFRleHREZWNvZGVyKClcbiAgbGV0IGJ1ZmZlciA9ICcnXG4gIGxldCBhY2N1bXVsYXRlZENvbnRlbnQgPSAnJ1xuICBsZXQgaGFzU3RhcnRlZFdyaXRpbmcgPSBmYWxzZVxuICAvLyBcIlVzYW5kbyBTa2lsbFwiIHF1ZWRhIHZpc2libGUgbWllbnRyYXMgZWwgbW9kZWxvIHBpZW5zYSBjb24gbGEgc2tpbGwgY2FyZ2FkYTtcbiAgLy8gbG9zIGRlbHRhcyBkZSBgdGhpbmtpbmdgIG5vIGxvIHBpc2FuIGhhc3RhIGxhIHByw7N4aW1hIGFjY2nDs24gbyBlbCBwcmltZXIgdG9rZW4uXG4gIGxldCBpc1VzaW5nU2tpbGwgPSBmYWxzZVxuXG4gIGNvbnN0IGVuc3VyZVdyaXRpbmdTdGFydGVkID0gKCkgPT4ge1xuICAgIGlmIChoYXNTdGFydGVkV3JpdGluZykgcmV0dXJuXG4gICAgaGFzU3RhcnRlZFdyaXRpbmcgPSB0cnVlXG4gICAgc3RvcmUoKS5wYXRjaE1ldGEoc2Vzc2lvbklkLCB7IGlzTG9hZGluZzogdHJ1ZSwgaXNXcml0aW5nOiB0cnVlIH0pXG4gICAgc3RvcmUoKS5zZXRTdGF0dXMoc2Vzc2lvbklkLCAnd3JpdGluZycpXG4gICAgc3RvcmUoKS5zZXRBY3Rpdml0eShzZXNzaW9uSWQsIGdldFdyaXRpbmdTdHJlYW1BY3Rpdml0eSh0KSlcbiAgICBjYWxsYmFja3Mub25TdGFydFdyaXRpbmc/LigpXG4gIH1cblxuICBjb25zdCBhcHBseVN0cmVhbUNodW5rID0gKGNodW5rOiBzdHJpbmcpID0+IHtcbiAgICBpZiAoIWNodW5rKSByZXR1cm5cbiAgICBhY2N1bXVsYXRlZENvbnRlbnQgPSBtZXJnZVN0cmVhbUNodW5rKGFjY3VtdWxhdGVkQ29udGVudCwgY2h1bmspXG4gICAgcmVhc29uaW5nU3RvcmUuc3luY0xpdmVOYXJyYXRpb24ocGxhY2Vob2xkZXJJZCwgYWNjdW11bGF0ZWRDb250ZW50KVxuICAgIGVtaXRUaHJvdHRsZWQoYWNjdW11bGF0ZWRDb250ZW50KVxuICB9XG5cbiAgY29uc3QgY2xlYXJTdHJlYW1MaWtlQW5zd2VyUmVzZXQgPSAoKSA9PiB7XG4gICAgaWYgKHRocm90dGxlVGltZXIgIT0gbnVsbCkge1xuICAgICAgd2luZG93LmNsZWFyVGltZW91dCh0aHJvdHRsZVRpbWVyKVxuICAgICAgdGhyb3R0bGVUaW1lciA9IG51bGxcbiAgICB9XG4gICAgcGVuZGluZ0NvbnRlbnQgPSBudWxsXG4gICAgYWNjdW11bGF0ZWRDb250ZW50ID0gJydcbiAgICBmbHVzaFRvU3RvcmVzKCcnKVxuICAgIHJlYXNvbmluZ1N0b3JlLm1hcmtBbnN3ZXJSZXNldChwbGFjZWhvbGRlcklkKVxuICB9XG5cbiAgY29uc3QgYXBwbHlTdHJlYW1Db21wbGV0ZSA9IChwYXlsb2FkOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikgPT4ge1xuICAgIGNvbnN0IGZpbmFsQ29udGVudCA9IChwYXlsb2FkLmNvbnRlbnQgYXMgc3RyaW5nKSB8fCBhY2N1bXVsYXRlZENvbnRlbnRcbiAgICBjb25zdCBzb3VyY2VzID0gcGF5bG9hZC5zb3VyY2VzIHx8IG51bGxcbiAgICBjb25zdCBtZW1vcnlTZXNzaW9uSWQgPSAocGF5bG9hZC5tZW1vcnlfc2Vzc2lvbl9pZCBhcyBzdHJpbmcpIHx8ICcnXG4gICAgY29uc3QgYXR0YWNobWVudHMgPSBBcnJheS5pc0FycmF5KHBheWxvYWQuYXR0YWNobWVudHMpID8gcGF5bG9hZC5hdHRhY2htZW50cyA6IG51bGxcbiAgICBsZXQgc3VnZ2VzdGlvbnM6IHN0cmluZ1tdIHwgbnVsbCA9IG51bGxcbiAgICBpZiAoQXJyYXkuaXNBcnJheShwYXlsb2FkLnN1Z2dlc3RfcmVwbHkpKSB7XG4gICAgICBzdWdnZXN0aW9ucyA9IHBheWxvYWQuc3VnZ2VzdF9yZXBseSBhcyBzdHJpbmdbXVxuICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShwYXlsb2FkLnN1Z2dlc3Rpb25zKSkge1xuICAgICAgc3VnZ2VzdGlvbnMgPSBwYXlsb2FkLnN1Z2dlc3Rpb25zIGFzIHN0cmluZ1tdXG4gICAgfVxuICAgIGNvbnN0IGFnZW50SWRSYXcgPSBwYXlsb2FkLmFnZW50X2lkID8/IHBheWxvYWQuYWdlbnRJZFxuICAgIGNvbnN0IGNvbXBsZXRlZEFnZW50SWQgPSBhZ2VudElkUmF3ICE9IG51bGwgJiYgU3RyaW5nKGFnZW50SWRSYXcpLnRyaW0oKSAhPT0gJycgPyBTdHJpbmcoYWdlbnRJZFJhdykudHJpbSgpIDogbnVsbFxuICAgIGNvbnN0IHN1YmFnZW50UmF3ID0gcGF5bG9hZC5zdWJhZ2VudCBhcyB7IHJlc29sdmVkX2NvbnRleHQ/OiB1bmtub3duIH0gfCBudWxsIHwgdW5kZWZpbmVkXG4gICAgY29uc3QgcmVzb2x2ZWRDb250ZXh0ID0gc3ViYWdlbnRSYXc/LnJlc29sdmVkX2NvbnRleHQgPz8gbnVsbFxuICAgIGNvbnN0IHJlYXNvbmluZyA9IChwYXlsb2FkLnJlYXNvbmluZyBhcyBSZWFzb25pbmdUcmFjZVBheWxvYWQgfCBudWxsKSA/PyBudWxsXG5cbiAgICByZWFzb25pbmdTdG9yZS5maW5pc2gocGxhY2Vob2xkZXJJZCwgcmVhc29uaW5nKVxuICAgIGZsdXNoUGVuZGluZygpXG4gICAgc3RvcmUoKS5wYXRjaE1ldGEoc2Vzc2lvbklkLCB7IGlzTG9hZGluZzogZmFsc2UsIGlzV3JpdGluZzogZmFsc2UgfSlcbiAgICBzdG9yZSgpLnNldEFjdGl2aXR5KHNlc3Npb25JZCwgbnVsbClcbiAgICBzdG9yZSgpLnNldFN0YXR1cyhzZXNzaW9uSWQsICdjb21wbGV0ZScpXG5cbiAgICBjb25zdCBmaW5pc2hQYXlsb2FkOiBTZXNzaW9uRmluaXNoUGF5bG9hZCA9IHtcbiAgICAgIGNvbnRlbnQ6IGZpbmFsQ29udGVudCxcbiAgICAgIHNvdXJjZXMsXG4gICAgICBtZW1vcnlTZXNzaW9uSWQsXG4gICAgICBhdHRhY2htZW50cyxcbiAgICAgIHN1Z2dlc3Rpb25zLFxuICAgICAgY29tcGxldGVkQWdlbnRJZCxcbiAgICAgIHJlc29sdmVkQ29udGV4dCxcbiAgICAgIHJlYXNvbmluZyxcbiAgICB9XG4gICAgY2FsbGJhY2tzLm9uRmluaXNoU3RyZWFtPy4oZmluaXNoUGF5bG9hZClcblxuICAgIC8vIEVsIHRleHRvIGVuIHZpdm8gTk8gc2UgbGltcGlhIGFjw6EgYSBwcm9ww7NzaXRvLiBFbCBwbGFjZWhvbGRlciBzZSB2YSBjb24gZWxcbiAgICAvLyBgZHJvcGAgcXVlIGhhY2UgZWwgY29uc3VtaWRvciwgeSBjb24gw6lsIHN1IHN1c2NyaXBjacOzbjsgdmFjaWFybG8gYW50ZXMgbG9cbiAgICAvLyBkZWphYmEgbW9udGFkbyB5IHNpbiB0ZXh0byAoYWx0dXJhIDApIGR1cmFudGUgfjI1bXM6IGVsIGZsaWNrZXIgZGUgZmluIGRlXG4gICAgLy8gc3RyZWFtLiBObyBhbGNhbnphIGNvbiBkaWZlcmlybG8sIHBvcnF1ZSBlc3RlIGNsZWFyIHZpYWphIGVuIFN5bmNMYW5lXG4gICAgLy8gKHN0b3JlIGV4dGVybm8pIHkgZWwgc3dhcCBkZSBtZW5zYWplcyBlbiBEZWZhdWx0TGFuZSwgYXPDrSBxdWUgc2llbXByZSBzZVxuICAgIC8vIGN1ZWxhIGVuIGVsIG1lZGlvLiBFbCBzbG90IHNlIGxpYmVyYSBlbiBlbCBwcsOzeGltbyBgc3RhcnQoKWAgZGUgbGEgc2VzacOzbixcbiAgICAvLyB5IGVuIHN0b3AvZXJyb3IvYXBwcm92YWwvY2FtYmlvIGRlIHNlc2nDs24sIHF1ZSBzw60gbGxhbWFuIGBjbGVhcmAuXG4gIH1cblxuICB0cnkge1xuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICBpZiAoYWN0aXZlLmlzU3RvcHBlZCkge1xuICAgICAgICByZWFkZXIuY2FuY2VsKClcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgY29uc3QgeyBkb25lLCB2YWx1ZSB9ID0gYXdhaXQgcmVhZGVyLnJlYWQoKVxuICAgICAgaWYgKGRvbmUpIGJyZWFrXG5cbiAgICAgIGlmIChhY3RpdmUuaXNTdG9wcGVkKSB7XG4gICAgICAgIHJlYWRlci5jYW5jZWwoKVxuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBidWZmZXIgKz0gZGVjb2Rlci5kZWNvZGUodmFsdWUsIHsgc3RyZWFtOiB0cnVlIH0pXG4gICAgICBjb25zdCBsaW5lcyA9IGJ1ZmZlci5zcGxpdCgnXFxuXFxuJylcbiAgICAgIGJ1ZmZlciA9IGxpbmVzLnBvcCgpIHx8ICcnXG5cbiAgICAgIGZvciAoY29uc3QgbGluZSBvZiBsaW5lcykge1xuICAgICAgICBpZiAobGluZS50cmltKCkgPT09ICcnKSBjb250aW51ZVxuXG4gICAgICAgIGNvbnN0IFtldmVudExpbmUsIGRhdGFMaW5lXSA9IGxpbmUuc3BsaXQoJ1xcbicpXG4gICAgICAgIGlmICghZXZlbnRMaW5lIHx8ICFkYXRhTGluZSkgY29udGludWVcblxuICAgICAgICBjb25zdCBldmVudFR5cGUgPSBldmVudExpbmUucmVwbGFjZSgnZXZlbnQ6ICcsICcnKS50cmltKClcbiAgICAgICAgY29uc3QgZGF0YVN0ciA9IGRhdGFMaW5lLnJlcGxhY2UoJ2RhdGE6ICcsICcnKS50cmltKClcblxuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IGRhdGEgPSBKU09OLnBhcnNlKGRhdGFTdHIpXG5cbiAgICAgICAgICBzd2l0Y2ggKGV2ZW50VHlwZSkge1xuICAgICAgICAgICAgY2FzZSAndGhpbmtpbmcnOiB7XG4gICAgICAgICAgICAgIGNvbnN0IHRoaW5raW5nRGVsdGEgPSB0eXBlb2YgZGF0YS5kZWx0YSA9PT0gJ3N0cmluZycgPyBkYXRhLmRlbHRhIDogJydcbiAgICAgICAgICAgICAgaWYgKHR5cGVvZiBkYXRhLmkgPT09ICdudW1iZXInICYmIHRoaW5raW5nRGVsdGEpIHtcbiAgICAgICAgICAgICAgICByZWFzb25pbmdTdG9yZS5hcHBlbmRUaGlua2luZyhwbGFjZWhvbGRlcklkLCBkYXRhLmksIHRoaW5raW5nRGVsdGEpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKCFoYXNTdGFydGVkV3JpdGluZykge1xuICAgICAgICAgICAgICAgIHN0b3JlKCkucGF0Y2hNZXRhKHNlc3Npb25JZCwgeyBpc0xvYWRpbmc6IHRydWUgfSlcbiAgICAgICAgICAgICAgICBzdG9yZSgpLnNldFN0YXR1cyhzZXNzaW9uSWQsICd0aGlua2luZycpXG4gICAgICAgICAgICAgICAgaWYgKCFpc1VzaW5nU2tpbGwpIHtcbiAgICAgICAgICAgICAgICAgIHN0b3JlKCkuc2V0QWN0aXZpdHkoc2Vzc2lvbklkLCB7IHBoYXNlOiAndGhpbmtpbmcnLCBtZXNzYWdlOiBnZXRUaGlua2luZ0xvYWRpbmdNZXNzYWdlKDAsIHQpIH0pXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIFNraWxsIEAtbWVuY2lvbmFkYSAoYWwgYWJyaXIgZWwgc3RyZWFtKSBvIGxsYW1hZGEgYSBgZ2V0X3NraWxsYC5cbiAgICAgICAgICAgIGNhc2UgJ3VzaW5nX3NraWxsJzpcbiAgICAgICAgICAgICAgaWYgKCFoYXNTdGFydGVkV3JpdGluZykge1xuICAgICAgICAgICAgICAgIGlzVXNpbmdTa2lsbCA9IHRydWVcbiAgICAgICAgICAgICAgICBzdG9yZSgpLnBhdGNoTWV0YShzZXNzaW9uSWQsIHsgaXNMb2FkaW5nOiB0cnVlIH0pXG4gICAgICAgICAgICAgICAgc3RvcmUoKS5zZXRTdGF0dXMoc2Vzc2lvbklkLCAndGhpbmtpbmcnKVxuICAgICAgICAgICAgICAgIHN0b3JlKCkuc2V0QWN0aXZpdHkoc2Vzc2lvbklkLCBnZXRVc2luZ1NraWxsQWN0aXZpdHkodCwgZGF0YS5za2lsbCkpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgYnJlYWtcblxuICAgICAgICAgICAgLy8gRWwgYmFja2VuZCBkZXNjYXJ0YSBsbyBlbWl0aWRvIHkgcmVpbmljaWEgbGEgcmVzcHVlc3RhIGRlc2RlIGNlcm8uXG4gICAgICAgICAgICBjYXNlICdhbnN3ZXJfcmVzZXQnOlxuICAgICAgICAgICAgICBjbGVhclN0cmVhbUxpa2VBbnN3ZXJSZXNldCgpXG4gICAgICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgICAgIGNhc2UgJ3JlYXNvbmluZ19zdGVwJzoge1xuICAgICAgICAgICAgICBjb25zdCBzdGVwVG9vbCA9IHR5cGVvZiBkYXRhLnRvb2wgPT09ICdzdHJpbmcnID8gZGF0YS50b29sIDogJydcbiAgICAgICAgICAgICAgY29uc3Qgc3RlcFR5cGUgPSB0eXBlb2YgZGF0YS50eXBlID09PSAnc3RyaW5nJyA/IGRhdGEudHlwZSA6ICcnXG4gICAgICAgICAgICAgIGlmIChzdGVwVG9vbCAmJiBzdGVwVHlwZSAhPT0gJ2hhbmRvZmYnICYmIGRhdGEuc3RhdHVzID09PSAncnVubmluZycpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBsYWJlbCA9IHJlc29sdmVUb29sQWN0aW9uTGFiZWwoc3RlcFRvb2wsIHQsICdwcmVzZW50JylcbiAgICAgICAgICAgICAgICBpZiAobGFiZWwpIHtcbiAgICAgICAgICAgICAgICAgIGlzVXNpbmdTa2lsbCA9IHN0ZXBUb29sID09PSAnZ2V0X3NraWxsJ1xuICAgICAgICAgICAgICAgICAgc3RvcmUoKS5wYXRjaE1ldGEoc2Vzc2lvbklkLCB7IGlzTG9hZGluZzogdHJ1ZSB9KVxuICAgICAgICAgICAgICAgICAgLy8gRWwgc3RlcCBkZSBgZ2V0X3NraWxsYCBsbGVnYSBqdXN0byBkZXNwdcOpcyBkZSBgdXNpbmdfc2tpbGxgOiBtYW50aWVuZSBlbCBub21icmUuXG4gICAgICAgICAgICAgICAgICBzdG9yZSgpLnNldEFjdGl2aXR5KFxuICAgICAgICAgICAgICAgICAgICBzZXNzaW9uSWQsXG4gICAgICAgICAgICAgICAgICAgIGlzVXNpbmdTa2lsbCA/IGdldFVzaW5nU2tpbGxBY3Rpdml0eSh0LCBkYXRhLmFyZ3M/Lm5hbWUpIDogeyBwaGFzZTogJ2FjdGlvbicsIG1lc3NhZ2U6IGxhYmVsIH1cbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKHR5cGVvZiBkYXRhLmkgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICAgICAgcmVhc29uaW5nU3RvcmUuY2FwdHVyZUxlYWRpbmdGcm9tQm9keShwbGFjZWhvbGRlcklkLCBhY2N1bXVsYXRlZENvbnRlbnQpXG4gICAgICAgICAgICAgICAgcmVhc29uaW5nU3RvcmUuYXBwbHlTdGVwKHBsYWNlaG9sZGVySWQsIGRhdGEgYXMgUmVhc29uaW5nU3RlcFBheWxvYWQpXG4gICAgICAgICAgICAgICAgaWYgKHJlYXNvbmluZ1N0b3JlLnNob3VsZENsZWFyU3RyZWFtRm9yTGVhZGluZyhwbGFjZWhvbGRlcklkLCBhY2N1bXVsYXRlZENvbnRlbnQpKSB7XG4gICAgICAgICAgICAgICAgICBjbGVhclN0cmVhbUxpa2VBbnN3ZXJSZXNldCgpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNhc2UgJ3Rva2VuJzoge1xuICAgICAgICAgICAgICBjb25zdCBjaHVuayA9IHR5cGVvZiBkYXRhLmNvbnRlbnQgPT09ICdzdHJpbmcnID8gZGF0YS5jb250ZW50IDogJydcbiAgICAgICAgICAgICAgZW5zdXJlV3JpdGluZ1N0YXJ0ZWQoKVxuICAgICAgICAgICAgICBhcHBseVN0cmVhbUNodW5rKGNodW5rKVxuICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjYXNlICdjb250ZW50Jzoge1xuICAgICAgICAgICAgICBjb25zdCBjaHVuayA9IHR5cGVvZiBkYXRhLmNvbnRlbnQgPT09ICdzdHJpbmcnID8gZGF0YS5jb250ZW50IDogJydcbiAgICAgICAgICAgICAgZW5zdXJlV3JpdGluZ1N0YXJ0ZWQoKVxuICAgICAgICAgICAgICBhcHBseVN0cmVhbUNodW5rKGNodW5rKVxuICAgICAgICAgICAgICBpZiAoaXNDb21wbGV0ZUxpa2VTc2VQYXlsb2FkKGRhdGEpKSB7XG4gICAgICAgICAgICAgICAgYXBwbHlTdHJlYW1Db21wbGV0ZShkYXRhKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNhc2UgJ25vZGUnOlxuICAgICAgICAgICAgICBpc1VzaW5nU2tpbGwgPSBmYWxzZVxuICAgICAgICAgICAgICBpZiAoZGF0YS5ub2RlID09PSAnYWdlbnRfdHJhbnNmZXInKSB7XG4gICAgICAgICAgICAgICAgc3RvcmUoKS5wYXRjaE1ldGEoc2Vzc2lvbklkLCB7IGlzTG9hZGluZzogdHJ1ZSB9KVxuICAgICAgICAgICAgICAgIHN0b3JlKCkuc2V0U3RhdHVzKHNlc3Npb25JZCwgJ3RoaW5raW5nJylcbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChkYXRhLm1lc3NhZ2UgJiYgdHlwZW9mIGRhdGEubWVzc2FnZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICBzdG9yZSgpLnBhdGNoTWV0YShzZXNzaW9uSWQsIHsgaXNMb2FkaW5nOiB0cnVlIH0pXG4gICAgICAgICAgICAgICAgc3RvcmUoKS5zZXRTdGF0dXMoc2Vzc2lvbklkLCAndGhpbmtpbmcnKVxuICAgICAgICAgICAgICAgIHN0b3JlKCkuc2V0QWN0aXZpdHkoXG4gICAgICAgICAgICAgICAgICBzZXNzaW9uSWQsXG4gICAgICAgICAgICAgICAgICByZXNvbHZlSGl0bE5vZGVTdHJlYW1BY3Rpdml0eShcbiAgICAgICAgICAgICAgICAgICAgZGF0YS5tZXNzYWdlLFxuICAgICAgICAgICAgICAgICAgICB0LFxuICAgICAgICAgICAgICAgICAgICBoaXRsRXhlY3V0aW9uQ29udGV4dCA/PyB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgIHR5cGVvZiBkYXRhLnRocmVhZF9pZCA9PT0gJ3N0cmluZycgPyBkYXRhLnRocmVhZF9pZCA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBicmVha1xuXG4gICAgICAgICAgICBjYXNlICdjb21wbGV0ZSc6XG4gICAgICAgICAgICAgIGFwcGx5U3RyZWFtQ29tcGxldGUoZGF0YSlcbiAgICAgICAgICAgICAgYnJlYWtcblxuICAgICAgICAgICAgY2FzZSAnYXBwcm92YWxfcmVxdWlyZWQnOiB7XG4gICAgICAgICAgICAgIGZsdXNoUGVuZGluZygpXG4gICAgICAgICAgICAgIC8vIFByZWFwcm9iYWRvIChhdXRvLWFwcHJvdmUgbyBkZXRlY2Npw7NuIG1hbnVhbCk6IGVsIHN0cmVhbSBubyBzZSBjb3J0YSxcbiAgICAgICAgICAgICAgLy8gc2lndWUgZWplY3V0YW5kbyBsYXMgYWNjaW9uZXMgc2luIGVzcGVyYXIgZGVjaXNpw7NuIGRlbCB1c3VhcmlvLlxuICAgICAgICAgICAgICBjb25zdCBpc1ByZUFwcHJvdmVkID1cbiAgICAgICAgICAgICAgICBkYXRhLm1hbnVhbF9hcHByb3ZhbF9kZXRlY3RlZCA9PT0gdHJ1ZSB8fFxuICAgICAgICAgICAgICAgIGRhdGEuYXV0b19hcHByb3ZlZCA9PT0gdHJ1ZSB8fFxuICAgICAgICAgICAgICAgIGRhdGEuYXBwcm92YWxfc3RhdHVzID09PSAnYXBwcm92ZWQnXG4gICAgICAgICAgICAgIHN0b3JlKCkucGF0Y2hNZXRhKHNlc3Npb25JZCwgeyBpc1dyaXRpbmc6IGZhbHNlIH0pXG4gICAgICAgICAgICAgIGlmICghaXNQcmVBcHByb3ZlZCkge1xuICAgICAgICAgICAgICAgIHJlYXNvbmluZ1N0b3JlLmZpbmlzaChwbGFjZWhvbGRlcklkLCAoZGF0YS5yZWFzb25pbmcgYXMgUmVhc29uaW5nVHJhY2VQYXlsb2FkIHwgbnVsbCkgPz8gbnVsbClcbiAgICAgICAgICAgICAgICBzdG9yZSgpLnBhdGNoTWV0YShzZXNzaW9uSWQsIHsgaXNMb2FkaW5nOiBmYWxzZSB9KVxuICAgICAgICAgICAgICAgIHNlc3Npb25TdHJlYW1pbmdUZXh0LmNsZWFyKHNlc3Npb25JZClcbiAgICAgICAgICAgICAgICBzdG9yZSgpLnNldEFjdGl2aXR5KHNlc3Npb25JZCwgbnVsbClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBzdG9yZSgpLnNldFN0YXR1cyhzZXNzaW9uSWQsICdhd2FpdGluZ19hcHByb3ZhbCcpXG4gICAgICAgICAgICAgIGNhbGxiYWNrcy5vbkFwcHJvdmFsUmVxdWlyZWQ/LihkYXRhIGFzIEFwcHJvdmFsUmVxdWVzdCwgYWNjdW11bGF0ZWRDb250ZW50KVxuICAgICAgICAgICAgICBpZiAoaXNQcmVBcHByb3ZlZCAmJiBBcnJheS5pc0FycmF5KGRhdGEucGVuZGluZ19hY3Rpb25zKSAmJiBkYXRhLnBlbmRpbmdfYWN0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgc3RvcmUoKS5wYXRjaE1ldGEoc2Vzc2lvbklkLCB7IGlzTG9hZGluZzogdHJ1ZSB9KVxuICAgICAgICAgICAgICAgIHN0b3JlKCkuc2V0U3RhdHVzKHNlc3Npb25JZCwgJ3RoaW5raW5nJylcbiAgICAgICAgICAgICAgICBzdG9yZSgpLnNldEFjdGl2aXR5KHNlc3Npb25JZCwgcmVzb2x2ZUluaXRpYWxIaXRsU3RyZWFtQWN0aXZpdHkodCwgaGl0bEV4ZWN1dGlvbkNvbnRleHQgPz8gdW5kZWZpbmVkKSlcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjYXNlICdlcnJvcic6XG4gICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1NTRSBFcnJvcjonLCBkYXRhLmVycm9yKVxuICAgICAgICAgICAgICBmbHVzaFBlbmRpbmcoKVxuICAgICAgICAgICAgICBzZXNzaW9uU3RyZWFtaW5nVGV4dC5jbGVhcihzZXNzaW9uSWQpXG4gICAgICAgICAgICAgIHN0b3JlKCkucGF0Y2hNZXRhKHNlc3Npb25JZCwgeyBpc0xvYWRpbmc6IGZhbHNlLCBpc1dyaXRpbmc6IGZhbHNlIH0pXG4gICAgICAgICAgICAgIHN0b3JlKCkuc2V0QWN0aXZpdHkoc2Vzc2lvbklkLCBudWxsKVxuICAgICAgICAgICAgICBzdG9yZSgpLnNldEVycm9yKHNlc3Npb25JZCwgeyB0eXBlOiBkYXRhLmVycm9yPy50eXBlLCBtZXNzYWdlOiBkYXRhLmVycm9yPy5tZXNzYWdlIH0pXG4gICAgICAgICAgICAgIHN0b3JlKCkuc2V0U3RhdHVzKHNlc3Npb25JZCwgJ2Vycm9yJylcbiAgICAgICAgICAgICAgY2FsbGJhY2tzLm9uRXJyb3I/LihkYXRhLmVycm9yPy50eXBlLCBkYXRhLmVycm9yPy5tZXNzYWdlKVxuICAgICAgICAgICAgICBicmVha1xuXG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICBjb25zb2xlLndhcm4oJ1Vua25vd24gU1NFIGV2ZW50IHR5cGU6JywgZXZlbnRUeXBlKVxuICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAocGFyc2VFcnJvcikge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHBhcnNpbmcgU1NFIGRhdGE6JywgcGFyc2VFcnJvciwgZGF0YVN0cilcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSBmaW5hbGx5IHtcbiAgICBmbHVzaFBlbmRpbmcoKVxuICB9XG59XG5cbi8qKlxuICogTWFuYWdlciBzaW5nbGV0b24gKG1vZHVsZS1sZXZlbCkgcXVlIGNvcnJlIE4gc3RyZWFtcyBkZWwgb3JjaGVzdHJhdG9yIGVuXG4gKiBwYXJhbGVsbywgdW5vIHBvciBgc2Vzc2lvbklkYC4gU29icmV2aXZlIGEgY2FtYmlvcyBkZSB2aXN0YSB5IGFsIGNpZXJyZSBkZWxcbiAqIG1vZGFsOiBsb3Mgc3RyZWFtcyBzb2xvIHNlIGNhbmNlbGFuIGNvbiBzdG9wIGV4cGzDrWNpdG8gZGVsIHVzdWFyaW8gbyBhbFxuICogY29tcGxldGFyL2Vycm9yYXIuXG4gKi9cbmV4cG9ydCBjb25zdCBzZXNzaW9uU3RyZWFtTWFuYWdlciA9IHtcbiAgaXNBY3RpdmU6IGlzU3RyZWFtQWN0aXZlLFxuICBnZXRBY3RpdmVDb3VudDogZ2V0QWN0aXZlU3RyZWFtQ291bnQsXG4gIGdldEFjdGl2ZVNlc3Npb25JZHM6ICgpOiBzdHJpbmdbXSA9PiBBcnJheS5mcm9tKGFjdGl2ZVN0cmVhbXMua2V5cygpKSxcblxuICBhc3luYyBzdGFydFN0cmVhbShwYXJhbXM6IFN0YXJ0U3RyZWFtUGFyYW1zKTogUHJvbWlzZTxTdGFydFN0cmVhbVJlc3VsdD4ge1xuICAgIGVuc3VyZVNlc3Npb25Ob3RpZmljYXRpb25zSW5pdGlhbGl6ZWQoKVxuXG4gICAgY29uc3QgeyBzZXNzaW9uSWQsIHBsYWNlaG9sZGVySWQsIHJlcXVlc3QsIGNhbGxiYWNrcywgdCwgYWN0aXZpdHlPcHRpb25zLCBhZ2VudElkLCBhZ2VudE5hbWUgfSA9IHBhcmFtc1xuXG4gICAgaWYgKGlzU3RyZWFtQWN0aXZlKHNlc3Npb25JZCkpIHtcbiAgICAgIHJldHVybiB7IHN0YXJ0ZWQ6IGZhbHNlLCByZWFzb246ICdhbHJlYWR5X2FjdGl2ZScgfVxuICAgIH1cbiAgICBpZiAoZ2V0QWN0aXZlU3RyZWFtQ291bnQoKSA+PSBNQVhfQ09OQ1VSUkVOVF9TVFJFQU1TKSB7XG4gICAgICByZXR1cm4geyBzdGFydGVkOiBmYWxzZSwgcmVhc29uOiAnbGltaXQnIH1cbiAgICB9XG5cbiAgICBjb25zdCBjb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpXG4gICAgY29uc3QgYWN0aXZlOiBBY3RpdmVTdHJlYW0gPSB7IHNlc3Npb25JZCwgY29udHJvbGxlciwgaXNTdG9wcGVkOiBmYWxzZSB9XG4gICAgYWN0aXZlU3RyZWFtcy5zZXQoc2Vzc2lvbklkLCBhY3RpdmUpXG5cbiAgICBzdG9yZSgpLmVuc3VyZVNlc3Npb24oc2Vzc2lvbklkKVxuICAgIHN0b3JlKCkucGF0Y2hNZXRhKHNlc3Npb25JZCwge1xuICAgICAgcGxhY2Vob2xkZXJJZCxcbiAgICAgIGVycm9yOiBudWxsLFxuICAgICAgaXNMb2FkaW5nOiB0cnVlLFxuICAgICAgaXNXcml0aW5nOiBmYWxzZSxcbiAgICAgIC4uLihhZ2VudElkICE9IG51bGwgPyB7IGFnZW50SWQgfSA6IHt9KSxcbiAgICAgIC4uLihhZ2VudE5hbWUgIT0gbnVsbCA/IHsgYWdlbnROYW1lIH0gOiB7fSksXG4gICAgfSlcbiAgICBzdG9yZSgpLnNldFN0YXR1cyhzZXNzaW9uSWQsICd0aGlua2luZycpXG4gICAgc2Vzc2lvblN0cmVhbWluZ1RleHQuc3RhcnQoc2Vzc2lvbklkLCBwbGFjZWhvbGRlcklkKVxuICAgIHJlYXNvbmluZ1N0b3JlLnN0YXJ0KHBsYWNlaG9sZGVySWQpXG4gICAgc3RvcmUoKS5zZXRBY3Rpdml0eShzZXNzaW9uSWQsIGdldEluaXRpYWxTdHJlYW1BY3Rpdml0eSh0LCBhY3Rpdml0eU9wdGlvbnMgPz8ge30pKVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgbWFpYS5PcmNoZXN0cmF0b3Iub3JjaGVzdHJhdG9yKHJlcXVlc3QsIGNvbnRyb2xsZXIuc2lnbmFsKVxuICAgICAgYXdhaXQgcGFyc2VTZXNzaW9uU1NFKHJlc3BvbnNlLCBhY3RpdmUsIHBhcmFtcylcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaWYgKCFhY3RpdmUuaXNTdG9wcGVkKSB7XG4gICAgICAgIHNlc3Npb25TdHJlYW1pbmdUZXh0LmNsZWFyKHNlc3Npb25JZClcbiAgICAgICAgc3RvcmUoKS5wYXRjaE1ldGEoc2Vzc2lvbklkLCB7IGlzTG9hZGluZzogZmFsc2UsIGlzV3JpdGluZzogZmFsc2UgfSlcbiAgICAgICAgc3RvcmUoKS5zZXRBY3Rpdml0eShzZXNzaW9uSWQsIG51bGwpXG4gICAgICAgIHN0b3JlKCkuc2V0U3RhdHVzKHNlc3Npb25JZCwgJ2Vycm9yJylcbiAgICAgICAgY2FsbGJhY2tzLm9uRXJyb3I/LigpXG4gICAgICB9XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGFjdGl2ZVN0cmVhbXMuZGVsZXRlKHNlc3Npb25JZClcbiAgICB9XG5cbiAgICByZXR1cm4geyBzdGFydGVkOiB0cnVlIH1cbiAgfSxcblxuICAvKiogUmVzdW1lIEhJVEwgKGBjb250aW51ZS10aHJlYWRgKSBrZXllZCBwb3Igc2Vzc2lvbklkIOKAlCBtaXNtbyBtb3RvciBxdWUgb3JjaGVzdHJhdG9yLiAqL1xuICBhc3luYyBzdGFydENvbnRpbnVlU3RyZWFtKHBhcmFtczogU3RhcnRDb250aW51ZVN0cmVhbVBhcmFtcyk6IFByb21pc2U8U3RhcnRTdHJlYW1SZXN1bHQ+IHtcbiAgICBlbnN1cmVTZXNzaW9uTm90aWZpY2F0aW9uc0luaXRpYWxpemVkKClcblxuICAgIGNvbnN0IHsgc2Vzc2lvbklkLCBwbGFjZWhvbGRlcklkLCBjb250aW51ZVJlcXVlc3QsIGNhbGxiYWNrcywgdCwgaGl0bEV4ZWN1dGlvbkNvbnRleHQsIGFnZW50SWQsIGFnZW50TmFtZSB9ID0gcGFyYW1zXG5cbiAgICBpZiAoaXNTdHJlYW1BY3RpdmUoc2Vzc2lvbklkKSkge1xuICAgICAgcmV0dXJuIHsgc3RhcnRlZDogZmFsc2UsIHJlYXNvbjogJ2FscmVhZHlfYWN0aXZlJyB9XG4gICAgfVxuICAgIGlmIChnZXRBY3RpdmVTdHJlYW1Db3VudCgpID49IE1BWF9DT05DVVJSRU5UX1NUUkVBTVMpIHtcbiAgICAgIHJldHVybiB7IHN0YXJ0ZWQ6IGZhbHNlLCByZWFzb246ICdsaW1pdCcgfVxuICAgIH1cblxuICAgIGlmIChoaXRsRXhlY3V0aW9uQ29udGV4dCkge1xuICAgICAgc2Vzc2lvbkhpdGxDb250ZXh0LnNldChzZXNzaW9uSWQsIGhpdGxFeGVjdXRpb25Db250ZXh0KVxuICAgIH1cblxuICAgIGNvbnN0IGNvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKClcbiAgICBjb25zdCBhY3RpdmU6IEFjdGl2ZVN0cmVhbSA9IHsgc2Vzc2lvbklkLCBjb250cm9sbGVyLCBpc1N0b3BwZWQ6IGZhbHNlIH1cbiAgICBhY3RpdmVTdHJlYW1zLnNldChzZXNzaW9uSWQsIGFjdGl2ZSlcblxuICAgIHN0b3JlKCkuZW5zdXJlU2Vzc2lvbihzZXNzaW9uSWQpXG4gICAgc3RvcmUoKS5wYXRjaE1ldGEoc2Vzc2lvbklkLCB7XG4gICAgICBwbGFjZWhvbGRlcklkLFxuICAgICAgZXJyb3I6IG51bGwsXG4gICAgICBpc0xvYWRpbmc6IHRydWUsXG4gICAgICBpc1dyaXRpbmc6IGZhbHNlLFxuICAgICAgLi4uKGFnZW50SWQgIT0gbnVsbCA/IHsgYWdlbnRJZCB9IDoge30pLFxuICAgICAgLi4uKGFnZW50TmFtZSAhPSBudWxsID8geyBhZ2VudE5hbWUgfSA6IHt9KSxcbiAgICB9KVxuICAgIHN0b3JlKCkuc2V0U3RhdHVzKHNlc3Npb25JZCwgJ3RoaW5raW5nJylcbiAgICBzZXNzaW9uU3RyZWFtaW5nVGV4dC5zdGFydChzZXNzaW9uSWQsIHBsYWNlaG9sZGVySWQpXG4gICAgc3RvcmUoKS5zZXRBY3Rpdml0eShcbiAgICAgIHNlc3Npb25JZCxcbiAgICAgIHJlc29sdmVJbml0aWFsSGl0bFN0cmVhbUFjdGl2aXR5KHQsIGhpdGxFeGVjdXRpb25Db250ZXh0ID8/IHNlc3Npb25IaXRsQ29udGV4dC5nZXQoc2Vzc2lvbklkKSA/PyB1bmRlZmluZWQpXG4gICAgKVxuXG4gICAgY29uc3Qgc3NlUGFyYW1zOiBTdGFydFN0cmVhbVBhcmFtcyA9IHtcbiAgICAgIHNlc3Npb25JZCxcbiAgICAgIHBsYWNlaG9sZGVySWQsXG4gICAgICByZXF1ZXN0OiB7fSBhcyBPcmNoZXN0cmF0b3JSZXF1ZXN0LFxuICAgICAgY2FsbGJhY2tzLFxuICAgICAgdCxcbiAgICAgIGhpdGxFeGVjdXRpb25Db250ZXh0OiBoaXRsRXhlY3V0aW9uQ29udGV4dCA/PyBzZXNzaW9uSGl0bENvbnRleHQuZ2V0KHNlc3Npb25JZCksXG4gICAgICBhZ2VudElkLFxuICAgICAgYWdlbnROYW1lLFxuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IG1haWEuT3JjaGVzdHJhdG9yLmNvbnRpbnVlVGhyZWFkKGNvbnRpbnVlUmVxdWVzdCwgY29udHJvbGxlci5zaWduYWwpXG4gICAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgY29udGludWUtdGhyZWFkIGZhaWxlZDogJHtyZXNwb25zZS5zdGF0dXN9YClcbiAgICAgIH1cbiAgICAgIGF3YWl0IHBhcnNlU2Vzc2lvblNTRShyZXNwb25zZSwgYWN0aXZlLCBzc2VQYXJhbXMpXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICghYWN0aXZlLmlzU3RvcHBlZCkge1xuICAgICAgICBzZXNzaW9uU3RyZWFtaW5nVGV4dC5jbGVhcihzZXNzaW9uSWQpXG4gICAgICAgIHN0b3JlKCkucGF0Y2hNZXRhKHNlc3Npb25JZCwgeyBpc0xvYWRpbmc6IGZhbHNlLCBpc1dyaXRpbmc6IGZhbHNlIH0pXG4gICAgICAgIHN0b3JlKCkuc2V0QWN0aXZpdHkoc2Vzc2lvbklkLCBudWxsKVxuICAgICAgICBzdG9yZSgpLnNldFN0YXR1cyhzZXNzaW9uSWQsICdlcnJvcicpXG4gICAgICAgIGNhbGxiYWNrcy5vbkVycm9yPy4oKVxuICAgICAgfVxuICAgIH0gZmluYWxseSB7XG4gICAgICBhY3RpdmVTdHJlYW1zLmRlbGV0ZShzZXNzaW9uSWQpXG4gICAgICBzZXNzaW9uSGl0bENvbnRleHQuY2xlYXIoc2Vzc2lvbklkKVxuICAgIH1cblxuICAgIHJldHVybiB7IHN0YXJ0ZWQ6IHRydWUgfVxuICB9LFxuXG4gIC8qKiBSZWdlbmVyYSBsYSByZXNwdWVzdGEgZGUgdW4gdHVybm8gKGByZXRyeV9jb21wbGV0aW9uYCkg4oCUIG1pc21vIG1vdG9yIFNTRSBxdWUgb3JjaGVzdHJhdG9yLiAqL1xuICBhc3luYyBzdGFydFJldHJ5U3RyZWFtKHBhcmFtczogU3RhcnRSZXRyeVN0cmVhbVBhcmFtcyk6IFByb21pc2U8U3RhcnRTdHJlYW1SZXN1bHQ+IHtcbiAgICBlbnN1cmVTZXNzaW9uTm90aWZpY2F0aW9uc0luaXRpYWxpemVkKClcblxuICAgIGNvbnN0IHsgc2Vzc2lvbklkLCBwbGFjZWhvbGRlcklkLCByZXRyeVJlcXVlc3QsIGNhbGxiYWNrcywgdCwgYWN0aXZpdHlPcHRpb25zLCBhZ2VudElkLCBhZ2VudE5hbWUgfSA9IHBhcmFtc1xuXG4gICAgaWYgKGlzU3RyZWFtQWN0aXZlKHNlc3Npb25JZCkpIHtcbiAgICAgIHJldHVybiB7IHN0YXJ0ZWQ6IGZhbHNlLCByZWFzb246ICdhbHJlYWR5X2FjdGl2ZScgfVxuICAgIH1cbiAgICBpZiAoZ2V0QWN0aXZlU3RyZWFtQ291bnQoKSA+PSBNQVhfQ09OQ1VSUkVOVF9TVFJFQU1TKSB7XG4gICAgICByZXR1cm4geyBzdGFydGVkOiBmYWxzZSwgcmVhc29uOiAnbGltaXQnIH1cbiAgICB9XG5cbiAgICBjb25zdCBjb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpXG4gICAgY29uc3QgYWN0aXZlOiBBY3RpdmVTdHJlYW0gPSB7IHNlc3Npb25JZCwgY29udHJvbGxlciwgaXNTdG9wcGVkOiBmYWxzZSB9XG4gICAgYWN0aXZlU3RyZWFtcy5zZXQoc2Vzc2lvbklkLCBhY3RpdmUpXG5cbiAgICBzdG9yZSgpLmVuc3VyZVNlc3Npb24oc2Vzc2lvbklkKVxuICAgIHN0b3JlKCkucGF0Y2hNZXRhKHNlc3Npb25JZCwge1xuICAgICAgcGxhY2Vob2xkZXJJZCxcbiAgICAgIGVycm9yOiBudWxsLFxuICAgICAgaXNMb2FkaW5nOiB0cnVlLFxuICAgICAgaXNXcml0aW5nOiBmYWxzZSxcbiAgICAgIC4uLihhZ2VudElkICE9IG51bGwgPyB7IGFnZW50SWQgfSA6IHt9KSxcbiAgICAgIC4uLihhZ2VudE5hbWUgIT0gbnVsbCA/IHsgYWdlbnROYW1lIH0gOiB7fSksXG4gICAgfSlcbiAgICBzdG9yZSgpLnNldFN0YXR1cyhzZXNzaW9uSWQsICd0aGlua2luZycpXG4gICAgc2Vzc2lvblN0cmVhbWluZ1RleHQuc3RhcnQoc2Vzc2lvbklkLCBwbGFjZWhvbGRlcklkKVxuICAgIHN0b3JlKCkuc2V0QWN0aXZpdHkoc2Vzc2lvbklkLCBnZXRJbml0aWFsU3RyZWFtQWN0aXZpdHkodCwgYWN0aXZpdHlPcHRpb25zID8/IHt9KSlcblxuICAgIGNvbnN0IHNzZVBhcmFtczogU3RhcnRTdHJlYW1QYXJhbXMgPSB7XG4gICAgICBzZXNzaW9uSWQsXG4gICAgICBwbGFjZWhvbGRlcklkLFxuICAgICAgcmVxdWVzdDoge30gYXMgT3JjaGVzdHJhdG9yUmVxdWVzdCxcbiAgICAgIGNhbGxiYWNrcyxcbiAgICAgIHQsXG4gICAgICBhY3Rpdml0eU9wdGlvbnMsXG4gICAgICBhZ2VudElkLFxuICAgICAgYWdlbnROYW1lLFxuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IG1haWEuT3JjaGVzdHJhdG9yLnJldHJ5Q29tcGxldGlvbihyZXRyeVJlcXVlc3QsIGNvbnRyb2xsZXIuc2lnbmFsKVxuICAgICAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSA0MDQpIHtcbiAgICAgICAgICBsZXQgZGV0YWlsOiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgZGF0YSA9IChhd2FpdCByZXNwb25zZS5qc29uKCkpIGFzIHsgZGV0YWlsPzogc3RyaW5nIH1cbiAgICAgICAgICAgIGRldGFpbCA9IHR5cGVvZiBkYXRhLmRldGFpbCA9PT0gJ3N0cmluZycgPyBkYXRhLmRldGFpbCA6IHVuZGVmaW5lZFxuICAgICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgZGV0YWlsID0gdW5kZWZpbmVkXG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChkZXRhaWwgPT09ICdUdXJuIG5vdCBmb3VuZCcpIHtcbiAgICAgICAgICAgIHNlc3Npb25TdHJlYW1pbmdUZXh0LmNsZWFyKHNlc3Npb25JZClcbiAgICAgICAgICAgIHN0b3JlKCkucGF0Y2hNZXRhKHNlc3Npb25JZCwgeyBpc0xvYWRpbmc6IGZhbHNlLCBpc1dyaXRpbmc6IGZhbHNlLCBwbGFjZWhvbGRlcklkOiBudWxsIH0pXG4gICAgICAgICAgICBzdG9yZSgpLnNldEFjdGl2aXR5KHNlc3Npb25JZCwgbnVsbClcbiAgICAgICAgICAgIHN0b3JlKCkuc2V0U3RhdHVzKHNlc3Npb25JZCwgJ2lkbGUnKVxuICAgICAgICAgICAgYWN0aXZlU3RyZWFtcy5kZWxldGUoc2Vzc2lvbklkKVxuICAgICAgICAgICAgcmV0dXJuIHsgc3RhcnRlZDogZmFsc2UsIHJlYXNvbjogJ3R1cm5fbm90X2ZvdW5kJyB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgcmV0cnlfY29tcGxldGlvbiBmYWlsZWQ6ICR7cmVzcG9uc2Uuc3RhdHVzfWApXG4gICAgICB9XG4gICAgICBhd2FpdCBwYXJzZVNlc3Npb25TU0UocmVzcG9uc2UsIGFjdGl2ZSwgc3NlUGFyYW1zKVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoIWFjdGl2ZS5pc1N0b3BwZWQpIHtcbiAgICAgICAgc2Vzc2lvblN0cmVhbWluZ1RleHQuY2xlYXIoc2Vzc2lvbklkKVxuICAgICAgICBzdG9yZSgpLnBhdGNoTWV0YShzZXNzaW9uSWQsIHsgaXNMb2FkaW5nOiBmYWxzZSwgaXNXcml0aW5nOiBmYWxzZSB9KVxuICAgICAgICBzdG9yZSgpLnNldEFjdGl2aXR5KHNlc3Npb25JZCwgbnVsbClcbiAgICAgICAgc3RvcmUoKS5zZXRTdGF0dXMoc2Vzc2lvbklkLCAnZXJyb3InKVxuICAgICAgICBjYWxsYmFja3Mub25FcnJvcj8uKClcbiAgICAgIH1cbiAgICB9IGZpbmFsbHkge1xuICAgICAgYWN0aXZlU3RyZWFtcy5kZWxldGUoc2Vzc2lvbklkKVxuICAgIH1cblxuICAgIHJldHVybiB7IHN0YXJ0ZWQ6IHRydWUgfVxuICB9LFxuXG4gIC8qKiBDYW5jZWxhY2nDs24gZXhwbMOtY2l0YSBkZWwgdXN1YXJpbyAobWVuc2FqZSBcImNhbmNlbGFkb1wiKS4gKi9cbiAgc3RvcFN0cmVhbShzZXNzaW9uSWQ6IHN0cmluZywgY2FsbGJhY2tzPzogU2Vzc2lvblN0cmVhbUNhbGxiYWNrcykge1xuICAgIGNvbnN0IGFjdGl2ZSA9IGFjdGl2ZVN0cmVhbXMuZ2V0KHNlc3Npb25JZClcbiAgICBpZiAoIWFjdGl2ZSkgcmV0dXJuXG4gICAgYWN0aXZlLmlzU3RvcHBlZCA9IHRydWVcbiAgICBhY3RpdmUuY29udHJvbGxlci5hYm9ydCgpXG4gICAgYWN0aXZlU3RyZWFtcy5kZWxldGUoc2Vzc2lvbklkKVxuICAgIC8vIEVsIHBhcmNpYWwgc2UgcmVzY2F0YSBhbnRlcyBkZSBsaW1waWFyOiBlbCBiYWNrZW5kIGxvIHBlcnNpc3RlLCBwZXJvIHNpIG5vIGxvXG4gICAgLy8gcGFzYW1vcyBhbCBjYWxsYmFjayBkZXNhcGFyZWNlIGRlIHBhbnRhbGxhIGhhc3RhIGVsIHByw7N4aW1vIGZldGNoIGRlIGxhIHNlc2nDs24uXG4gICAgY29uc3QgcGFydGlhbFRleHQgPSBzZXNzaW9uU3RyZWFtaW5nVGV4dC5nZXRTbmFwc2hvdChzZXNzaW9uSWQpLnRleHRcbiAgICBzZXNzaW9uU3RyZWFtaW5nVGV4dC5jbGVhcihzZXNzaW9uSWQpXG4gICAgc3RvcmUoKS5wYXRjaE1ldGEoc2Vzc2lvbklkLCB7IGlzTG9hZGluZzogZmFsc2UsIGlzV3JpdGluZzogZmFsc2UgfSlcbiAgICBzdG9yZSgpLnNldEFjdGl2aXR5KHNlc3Npb25JZCwgbnVsbClcbiAgICBzdG9yZSgpLnNldFN0YXR1cyhzZXNzaW9uSWQsICdjYW5jZWxsZWQnKVxuICAgIGNhbGxiYWNrcz8ub25TdG9wPy4ocGFydGlhbFRleHQpXG4gIH0sXG5cbiAgLyoqIEFib3J0YSBzaW4gbWFyY2FyIFwiY2FuY2VsYWRvXCIgKHVzbyBpbnRlcm5vIC8gbGltcGllemEpLiAqL1xuICBhYm9ydFNpbGVudGx5KHNlc3Npb25JZDogc3RyaW5nKSB7XG4gICAgY29uc3QgYWN0aXZlID0gYWN0aXZlU3RyZWFtcy5nZXQoc2Vzc2lvbklkKVxuICAgIGlmICghYWN0aXZlKSByZXR1cm5cbiAgICBhY3RpdmUuaXNTdG9wcGVkID0gdHJ1ZVxuICAgIGFjdGl2ZS5jb250cm9sbGVyLmFib3J0KClcbiAgICBhY3RpdmVTdHJlYW1zLmRlbGV0ZShzZXNzaW9uSWQpXG4gICAgc2Vzc2lvblN0cmVhbWluZ1RleHQuY2xlYXIoc2Vzc2lvbklkKVxuICAgIHN0b3JlKCkucGF0Y2hNZXRhKHNlc3Npb25JZCwgeyBpc0xvYWRpbmc6IGZhbHNlLCBpc1dyaXRpbmc6IGZhbHNlIH0pXG4gICAgc3RvcmUoKS5zZXRBY3Rpdml0eShzZXNzaW9uSWQsIG51bGwpXG4gICAgaWYgKHN0b3JlKCkuZ2V0TWV0YShzZXNzaW9uSWQpPy5zdGF0dXMgIT09ICdjb21wbGV0ZScpIHtcbiAgICAgIHN0b3JlKCkuc2V0U3RhdHVzKHNlc3Npb25JZCwgJ2lkbGUnKVxuICAgIH1cbiAgfSxcblxuICBhYm9ydEFsbCgpIHtcbiAgICBBcnJheS5mcm9tKGFjdGl2ZVN0cmVhbXMua2V5cygpKS5mb3JFYWNoKHNlc3Npb25JZCA9PiB0aGlzLmFib3J0U2lsZW50bHkoc2Vzc2lvbklkKSlcbiAgfSxcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBT0EsSUFBSSxNQUFNLHFCQUFxQjtBQUV0QyxTQUNFQyx3QkFBd0IsRUFDeEJDLHlCQUF5QixFQUN6QkMscUJBQXFCLEVBQ3JCQyx3QkFBd0IsRUFDeEJDLDZCQUE2QixFQUM3QkMsZ0NBQWdDLEVBQ2hDQyxzQkFBc0IsUUFDakIsb0NBQW9DO0FBRTNDLFNBQVNDLHdCQUF3QixFQUFFQyxnQkFBZ0IsUUFB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
791
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJtYWlhIiwiZ2V0SW5pdGlhbFN0cmVhbUFjdGl2aXR5IiwiZ2V0VGhpbmtpbmdMb2FkaW5nTWVzc2FnZSIsImdldFVzaW5nU2tpbGxBY3Rpdml0eSIsImdldFdyaXRpbmdTdHJlYW1BY3Rpdml0eSIsInJlc29sdmVIaXRsTm9kZVN0cmVhbUFjdGl2aXR5IiwicmVzb2x2ZUluaXRpYWxIaXRsU3RyZWFtQWN0aXZpdHkiLCJyZXNvbHZlVG9vbEFjdGlvbkxhYmVsIiwiaXNDb21wbGV0ZUxpa2VTc2VQYXlsb2FkIiwibWVyZ2VTdHJlYW1DaHVuayIsInJlYXNvbmluZ1N0b3JlIiwic2Vzc2lvblN0cmVhbWluZ1RleHQiLCJ1c2VTZXNzaW9uc1N0b3JlIiwiZW5zdXJlU2Vzc2lvbk5vdGlmaWNhdGlvbnNJbml0aWFsaXplZCIsInNlc3Npb25IaXRsQ29udGV4dCIsIk1BWF9DT05DVVJSRU5UX1NUUkVBTVMiLCJTVFJFQU1fVEhST1RUTEVfTVMiLCJhY3RpdmVTdHJlYW1zIiwiTWFwIiwic3RvcmUiLCJnZXRTdGF0ZSIsImlzU3RyZWFtQWN0aXZlIiwic2Vzc2lvbklkIiwiaGFzIiwiZ2V0QWN0aXZlU3RyZWFtQ291bnQiLCJzaXplIiwicGFyc2VTZXNzaW9uU1NFIiwiX3JlZiIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwicmVzcG9uc2UiLCJhY3RpdmUiLCJwYXJhbXMiLCJfcGFyYW1zJGhpdGxFeGVjdXRpb24iLCJfcmVzcG9uc2UkYm9keSIsIl9kYXRhJGVycm9yIiwiX2RhdGEkZXJyb3IyIiwiX2NhbGxiYWNrcyRvbkVycm9yIiwiX2RhdGEkZXJyb3IzIiwiX2RhdGEkZXJyb3I0IiwicGxhY2Vob2xkZXJJZCIsImNhbGxiYWNrcyIsInQiLCJoaXRsRXhlY3V0aW9uQ29udGV4dCIsInBlbmRpbmdDb250ZW50IiwidGhyb3R0bGVUaW1lciIsImZsdXNoVG9TdG9yZXMiLCJlbWl0VGhyb3R0bGVkIiwiZmx1c2hQZW5kaW5nIiwicmVhZGVyIiwiZGVjb2RlciIsImJ1ZmZlciIsImFjY3VtdWxhdGVkQ29udGVudCIsImhhc1N0YXJ0ZWRXcml0aW5nIiwiaXNVc2luZ1NraWxsIiwiZW5zdXJlV3JpdGluZ1N0YXJ0ZWQiLCJhcHBseVN0cmVhbUNodW5rIiwiY2xlYXJTdHJlYW1MaWtlQW5zd2VyUmVzZXQiLCJhcHBseVN0cmVhbUNvbXBsZXRlIiwiX3lpZWxkJHJlYWRlciRyZWFkIiwiZG9uZSIsInZhbHVlIiwibGluZXMiLCJfaXRlcmF0b3IiLCJfc3RlcCIsImxpbmUiLCJfbGluZSRzcGxpdCIsIl9saW5lJHNwbGl0MiIsImV2ZW50TGluZSIsImRhdGFMaW5lIiwiZXZlbnRUeXBlIiwiZGF0YVN0ciIsImRhdGEiLCJ0aGlua2luZ0RlbHRhIiwic3RlcFRvb2wiLCJzdGVwVHlwZSIsImxhYmVsIiwiX2RhdGEkYXJncyIsImNodW5rIiwiX2NodW5rIiwiX2NhbGxiYWNrcyRvbkFwcHJvdmFsIiwiaXNQcmVBcHByb3ZlZCIsIl9yZWYzIiwiX3QiLCJfdDIiLCJfdDMiLCJ3cmFwIiwiX2NvbnRleHQiLCJwcmV2IiwibmV4dCIsImdldCIsImNvbnRlbnQiLCJfY2FsbGJhY2tzJG9uU3RyZWFtVXAiLCJzZXRUZXh0Iiwib25TdHJlYW1VcGRhdGUiLCJjYWxsIiwid2luZG93Iiwic2V0VGltZW91dCIsInRvRW1pdCIsImNsZWFyVGltZW91dCIsImJvZHkiLCJnZXRSZWFkZXIiLCJFcnJvciIsIlRleHREZWNvZGVyIiwiX2NhbGxiYWNrcyRvblN0YXJ0V3JpIiwicGF0Y2hNZXRhIiwiaXNMb2FkaW5nIiwiaXNXcml0aW5nIiwic2V0U3RhdHVzIiwic2V0QWN0aXZpdHkiLCJvblN0YXJ0V3JpdGluZyIsInN5bmNMaXZlTmFycmF0aW9uIiwibWFya0Fuc3dlclJlc2V0IiwicGF5bG9hZCIsIl9wYXlsb2FkJGFnZW50X2lkIiwiX3N1YmFnZW50UmF3JHJlc29sdmVkIiwiX3JlZjIiLCJfY2FsbGJhY2tzJG9uRmluaXNoU3QiLCJmaW5hbENvbnRlbnQiLCJzb3VyY2VzIiwibWVtb3J5U2Vzc2lvbklkIiwibWVtb3J5X3Nlc3Npb25faWQiLCJhdHRhY2htZW50cyIsIkFycmF5IiwiaXNBcnJheSIsInN1Z2dlc3Rpb25zIiwic3VnZ2VzdF9yZXBseSIsImFnZW50SWRSYXciLCJhZ2VudF9pZCIsImFnZW50SWQiLCJjb21wbGV0ZWRBZ2VudElkIiwiU3RyaW5nIiwidHJpbSIsInN1YmFnZW50UmF3Iiwic3ViYWdlbnQiLCJyZXNvbHZlZENvbnRleHQiLCJyZXNvbHZlZF9jb250ZXh0IiwicmVhc29uaW5nIiwiZmluaXNoIiwiZmluaXNoUGF5bG9hZCIsIm9uRmluaXNoU3RyZWFtIiwiaXNTdG9wcGVkIiwiY2FuY2VsIiwiYWJydXB0IiwicmVhZCIsInNlbnQiLCJkZWNvZGUiLCJzdHJlYW0iLCJzcGxpdCIsInBvcCIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwicyIsIm4iLCJfc2xpY2VkVG9BcnJheSIsInJlcGxhY2UiLCJKU09OIiwicGFyc2UiLCJkZWx0YSIsImkiLCJhcHBlbmRUaGlua2luZyIsInBoYXNlIiwibWVzc2FnZSIsInNraWxsIiwic2V0Q29tcGFjdGlvbiIsInRvb2wiLCJ0eXBlIiwic3RhdHVzIiwiYXJncyIsIm5hbWUiLCJjYXB0dXJlTGVhZGluZ0Zyb21Cb2R5IiwiYXBwbHlTdGVwIiwic2hvdWxkQ2xlYXJTdHJlYW1Gb3JMZWFkaW5nIiwibm9kZSIsInVuZGVmaW5lZCIsInRocmVhZF9pZCIsIm1hbnVhbF9hcHByb3ZhbF9kZXRlY3RlZCIsImF1dG9fYXBwcm92ZWQiLCJhcHByb3ZhbF9zdGF0dXMiLCJjbGVhciIsIm9uQXBwcm92YWxSZXF1aXJlZCIsInBlbmRpbmdfYWN0aW9ucyIsImxlbmd0aCIsImNvbnNvbGUiLCJlcnJvciIsInNldEVycm9yIiwib25FcnJvciIsIndhcm4iLCJlIiwiZiIsInN0b3AiLCJfeCIsIl94MiIsIl94MyIsImFwcGx5IiwiYXJndW1lbnRzIiwic2Vzc2lvblN0cmVhbU1hbmFnZXIiLCJpc0FjdGl2ZSIsImdldEFjdGl2ZUNvdW50IiwiZ2V0QWN0aXZlU2Vzc2lvbklkcyIsImZyb20iLCJrZXlzIiwic3RhcnRTdHJlYW0iLCJfY2FsbGVlMiIsInJlcXVlc3QiLCJhY3Rpdml0eU9wdGlvbnMiLCJhZ2VudE5hbWUiLCJjb250cm9sbGVyIiwiX2NhbGxiYWNrcyRvbkVycm9yMiIsIl90NCIsIl9jb250ZXh0MiIsInN0YXJ0ZWQiLCJyZWFzb24iLCJBYm9ydENvbnRyb2xsZXIiLCJzZXQiLCJlbnN1cmVTZXNzaW9uIiwiX29iamVjdFNwcmVhZCIsInN0YXJ0IiwiT3JjaGVzdHJhdG9yIiwib3JjaGVzdHJhdG9yIiwic2lnbmFsIiwic3RhcnRDb250aW51ZVN0cmVhbSIsIl9jYWxsZWUzIiwiX3JlZjQiLCJjb250aW51ZVJlcXVlc3QiLCJzc2VQYXJhbXMiLCJfY2FsbGJhY2tzJG9uRXJyb3IzIiwiX3Q1IiwiX2NvbnRleHQzIiwiY29udGludWVUaHJlYWQiLCJvayIsImNvbmNhdCIsInN0YXJ0UmV0cnlTdHJlYW0iLCJfY2FsbGVlNCIsInJldHJ5UmVxdWVzdCIsImRldGFpbCIsIl9jYWxsYmFja3Mkb25FcnJvcjQiLCJfdDYiLCJfdDciLCJfY29udGV4dDQiLCJyZXRyeUNvbXBsZXRpb24iLCJqc29uIiwic3RvcFN0cmVhbSIsIl9jYWxsYmFja3Mkb25TdG9wIiwiYWJvcnQiLCJwYXJ0aWFsVGV4dCIsImdldFNuYXBzaG90IiwidGV4dCIsIm9uU3RvcCIsImFib3J0U2lsZW50bHkiLCJfc3RvcmUkZ2V0TWV0YSIsImdldE1ldGEiLCJhYm9ydEFsbCIsIl90aGlzIiwiZm9yRWFjaCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zdG9yZS9zZXNzaW9ucy9zZXNzaW9uU3RyZWFtTWFuYWdlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1jb25zb2xlICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1jb250aW51ZSAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tYXdhaXQtaW4tbG9vcCAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tcmVzdHJpY3RlZC1zeW50YXggKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnN0YW50LWNvbmRpdGlvbiAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IG1haWEgZnJvbSAnLi4vLi4vc2VydmljZXMvbWFpYSdcbmltcG9ydCB0eXBlIHsgQXBwcm92YWxSZXF1ZXN0IH0gZnJvbSAnLi4vLi4vdHlwZXMvQ2hhdCdcbmltcG9ydCB7XG4gIGdldEluaXRpYWxTdHJlYW1BY3Rpdml0eSxcbiAgZ2V0VGhpbmtpbmdMb2FkaW5nTWVzc2FnZSxcbiAgZ2V0VXNpbmdTa2lsbEFjdGl2aXR5LFxuICBnZXRXcml0aW5nU3RyZWFtQWN0aXZpdHksXG4gIHJlc29sdmVIaXRsTm9kZVN0cmVhbUFjdGl2aXR5LFxuICByZXNvbHZlSW5pdGlhbEhpdGxTdHJlYW1BY3Rpdml0eSxcbiAgcmVzb2x2ZVRvb2xBY3Rpb25MYWJlbCxcbn0gZnJvbSAnLi4vLi4vdXRpbHMvc3RyZWFtQWN0aXZpdHlNZXNzYWdlcydcbmltcG9ydCB0eXBlIHsgSGl0bEV4ZWN1dGlvbkNvbnRleHQgfSBmcm9tICcuLi8uLi91dGlscy9zdHJlYW1BY3Rpdml0eU1lc3NhZ2VzJ1xuaW1wb3J0IHsgaXNDb21wbGV0ZUxpa2VTc2VQYXlsb2FkLCBtZXJnZVN0cmVhbUNodW5rIH0gZnJvbSAnLi4vLi4vdXRpbHMvc3NlU3RyZWFtQ29udGVudCdcbmltcG9ydCB7IHJlYXNvbmluZ1N0b3JlIH0gZnJvbSAnLi4vLi4vaG9va3MvdXNlUmVhc29uaW5nVHJhY2UnXG5pbXBvcnQgdHlwZSB7IFJlYXNvbmluZ1N0ZXBQYXlsb2FkLCBSZWFzb25pbmdUcmFjZVBheWxvYWQgfSBmcm9tICcuLi8uLi90eXBlcy9yZWFzb25pbmcnXG5pbXBvcnQgdHlwZSB7IENvbnRleHRDb21wYWN0aW9uUGF5bG9hZCB9IGZyb20gJy4uLy4uL3R5cGVzL2NvbnRleHRDb21wYWN0aW9uJ1xuaW1wb3J0IHsgc2Vzc2lvblN0cmVhbWluZ1RleHQgfSBmcm9tICcuL3Nlc3Npb25TdHJlYW1pbmdUZXh0J1xuaW1wb3J0IHsgdXNlU2Vzc2lvbnNTdG9yZSB9IGZyb20gJy4vdXNlU2Vzc2lvbnNTdG9yZSdcbmltcG9ydCB7IGVuc3VyZVNlc3Npb25Ob3RpZmljYXRpb25zSW5pdGlhbGl6ZWQgfSBmcm9tICcuL3Nlc3Npb25Ob3RpZmljYXRpb25zJ1xuaW1wb3J0IHsgc2Vzc2lvbkhpdGxDb250ZXh0IH0gZnJvbSAnLi9zZXNzaW9uSGl0bENvbnRleHQnXG5pbXBvcnQgdHlwZSB7IFNlc3Npb25GaW5pc2hQYXlsb2FkLCBTZXNzaW9uU3RyZWFtQ2FsbGJhY2tzLCBTdGFydFN0cmVhbVJlc3VsdCB9IGZyb20gJy4vc2Vzc2lvbnMudHlwZXMnXG5cbnR5cGUgT3JjaGVzdHJhdG9yUmVxdWVzdCA9IFBhcmFtZXRlcnM8dHlwZW9mIG1haWEuT3JjaGVzdHJhdG9yLm9yY2hlc3RyYXRvcj5bMF1cbnR5cGUgQ29udGludWVUaHJlYWRSZXF1ZXN0ID0gUGFyYW1ldGVyczx0eXBlb2YgbWFpYS5PcmNoZXN0cmF0b3IuY29udGludWVUaHJlYWQ+WzBdXG50eXBlIFJldHJ5Q29tcGxldGlvblJlcXVlc3QgPSBQYXJhbWV0ZXJzPHR5cGVvZiBtYWlhLk9yY2hlc3RyYXRvci5yZXRyeUNvbXBsZXRpb24+WzBdXG5cbi8qKiBDb21wYXRpYmxlIGNvbiBlbCBgdGAgZGUgaTE4bmV4dCAodXNvIGRlIHVuYSBzb2xhIGtleSkuICovXG50eXBlIFRyYW5zbGF0ZUZuID0gKGtleTogc3RyaW5nKSA9PiBzdHJpbmdcblxudHlwZSBTdGFydFN0cmVhbVBhcmFtcyA9IHtcbiAgc2Vzc2lvbklkOiBzdHJpbmdcbiAgcGxhY2Vob2xkZXJJZDogc3RyaW5nXG4gIHJlcXVlc3Q6IE9yY2hlc3RyYXRvclJlcXVlc3RcbiAgY2FsbGJhY2tzOiBTZXNzaW9uU3RyZWFtQ2FsbGJhY2tzXG4gIHQ6IFRyYW5zbGF0ZUZuXG4gIGFjdGl2aXR5T3B0aW9ucz86IHtcbiAgICBpc1dlYlNlYXJjaEFjdGl2ZT86IGJvb2xlYW5cbiAgICBpc0RlZXBTZWFyY2hBY3RpdmU/OiBib29sZWFuXG4gICAgaGFzQXR0YWNobWVudHM/OiBib29sZWFuXG4gICAgYXR0YWNobWVudHNDb3VudD86IG51bWJlclxuICB9XG4gIGhpdGxFeGVjdXRpb25Db250ZXh0PzogSGl0bEV4ZWN1dGlvbkNvbnRleHQgfCBudWxsXG4gIGFnZW50SWQ/OiBzdHJpbmcgfCBudW1iZXJcbiAgYWdlbnROYW1lPzogc3RyaW5nXG59XG5cbnR5cGUgU3RhcnRDb250aW51ZVN0cmVhbVBhcmFtcyA9IHtcbiAgc2Vzc2lvbklkOiBzdHJpbmdcbiAgcGxhY2Vob2xkZXJJZDogc3RyaW5nXG4gIGNvbnRpbnVlUmVxdWVzdDogQ29udGludWVUaHJlYWRSZXF1ZXN0XG4gIGNhbGxiYWNrczogU2Vzc2lvblN0cmVhbUNhbGxiYWNrc1xuICB0OiBUcmFuc2xhdGVGblxuICBoaXRsRXhlY3V0aW9uQ29udGV4dD86IEhpdGxFeGVjdXRpb25Db250ZXh0IHwgbnVsbFxuICBhZ2VudElkPzogc3RyaW5nIHwgbnVtYmVyXG4gIGFnZW50TmFtZT86IHN0cmluZ1xufVxuXG50eXBlIFN0YXJ0UmV0cnlTdHJlYW1QYXJhbXMgPSB7XG4gIHNlc3Npb25JZDogc3RyaW5nXG4gIHBsYWNlaG9sZGVySWQ6IHN0cmluZ1xuICByZXRyeVJlcXVlc3Q6IFJldHJ5Q29tcGxldGlvblJlcXVlc3RcbiAgY2FsbGJhY2tzOiBTZXNzaW9uU3RyZWFtQ2FsbGJhY2tzXG4gIHQ6IFRyYW5zbGF0ZUZuXG4gIGFjdGl2aXR5T3B0aW9ucz86IHtcbiAgICBpc1dlYlNlYXJjaEFjdGl2ZT86IGJvb2xlYW5cbiAgICBpc0RlZXBTZWFyY2hBY3RpdmU/OiBib29sZWFuXG4gICAgaGFzQXR0YWNobWVudHM/OiBib29sZWFuXG4gICAgYXR0YWNobWVudHNDb3VudD86IG51bWJlclxuICB9XG4gIGFnZW50SWQ/OiBzdHJpbmcgfCBudW1iZXJcbiAgYWdlbnROYW1lPzogc3RyaW5nXG59XG5cbnR5cGUgQWN0aXZlU3RyZWFtID0ge1xuICBzZXNzaW9uSWQ6IHN0cmluZ1xuICBjb250cm9sbGVyOiBBYm9ydENvbnRyb2xsZXJcbiAgaXNTdG9wcGVkOiBib29sZWFuXG59XG5cbi8qKlxuICogTcOheGltbyBkZSBzZXNpb25lcyBnZW5lcmFuZG8gZW4gcGFyYWxlbG8uIFByb3RlZ2UgcmVkL3JlY3Vyc29zIGRlbCBjbGllbnRlLlxuICogQWp1c3RhYmxlIGEgZnV0dXJvIHbDrWEgZmxhZyBkZWwgaG9zdC5cbiAqL1xuZXhwb3J0IGNvbnN0IE1BWF9DT05DVVJSRU5UX1NUUkVBTVMgPSA0XG5cbmNvbnN0IFNUUkVBTV9USFJPVFRMRV9NUyA9IDE2XG5cbmNvbnN0IGFjdGl2ZVN0cmVhbXMgPSBuZXcgTWFwPHN0cmluZywgQWN0aXZlU3RyZWFtPigpXG5cbmNvbnN0IHN0b3JlID0gKCkgPT4gdXNlU2Vzc2lvbnNTdG9yZS5nZXRTdGF0ZSgpXG5cbmNvbnN0IGlzU3RyZWFtQWN0aXZlID0gKHNlc3Npb25JZDogc3RyaW5nKTogYm9vbGVhbiA9PiBhY3RpdmVTdHJlYW1zLmhhcyhzZXNzaW9uSWQpXG5cbmNvbnN0IGdldEFjdGl2ZVN0cmVhbUNvdW50ID0gKCk6IG51bWJlciA9PiBhY3RpdmVTdHJlYW1zLnNpemVcblxuY29uc3QgcGFyc2VTZXNzaW9uU1NFID0gYXN5bmMgKHJlc3BvbnNlOiBSZXNwb25zZSwgYWN0aXZlOiBBY3RpdmVTdHJlYW0sIHBhcmFtczogU3RhcnRTdHJlYW1QYXJhbXMpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgY29uc3QgeyBzZXNzaW9uSWQsIHBsYWNlaG9sZGVySWQsIGNhbGxiYWNrcywgdCB9ID0gcGFyYW1zXG4gIGNvbnN0IGhpdGxFeGVjdXRpb25Db250ZXh0ID0gcGFyYW1zLmhpdGxFeGVjdXRpb25Db250ZXh0ID8/IHNlc3Npb25IaXRsQ29udGV4dC5nZXQoc2Vzc2lvbklkKVxuXG4gIGxldCBwZW5kaW5nQ29udGVudDogc3RyaW5nIHwgbnVsbCA9IG51bGxcbiAgbGV0IHRocm90dGxlVGltZXI6IG51bWJlciB8IG51bGwgPSBudWxsXG5cbiAgY29uc3QgZmx1c2hUb1N0b3JlcyA9IChjb250ZW50OiBzdHJpbmcpID0+IHtcbiAgICBzZXNzaW9uU3RyZWFtaW5nVGV4dC5zZXRUZXh0KHNlc3Npb25JZCwgcGxhY2Vob2xkZXJJZCwgY29udGVudClcbiAgICBjYWxsYmFja3Mub25TdHJlYW1VcGRhdGU/Lihjb250ZW50KVxuICB9XG5cbiAgY29uc3QgZW1pdFRocm90dGxlZCA9IChjb250ZW50OiBzdHJpbmcpID0+IHtcbiAgICBwZW5kaW5nQ29udGVudCA9IGNvbnRlbnRcbiAgICBpZiAodGhyb3R0bGVUaW1lciAhPSBudWxsKSByZXR1cm5cbiAgICB0aHJvdHRsZVRpbWVyID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhyb3R0bGVUaW1lciA9IG51bGxcbiAgICAgIGlmIChwZW5kaW5nQ29udGVudCAhPSBudWxsKSB7XG4gICAgICAgIGNvbnN0IHRvRW1pdCA9IHBlbmRpbmdDb250ZW50XG4gICAgICAgIHBlbmRpbmdDb250ZW50ID0gbnVsbFxuICAgICAgICBmbHVzaFRvU3RvcmVzKHRvRW1pdClcbiAgICAgIH1cbiAgICB9LCBTVFJFQU1fVEhST1RUTEVfTVMpXG4gIH1cblxuICBjb25zdCBmbHVzaFBlbmRpbmcgPSAoKSA9PiB7XG4gICAgaWYgKHRocm90dGxlVGltZXIgIT0gbnVsbCkge1xuICAgICAgd2luZG93LmNsZWFyVGltZW91dCh0aHJvdHRsZVRpbWVyKVxuICAgICAgdGhyb3R0bGVUaW1lciA9IG51bGxcbiAgICB9XG4gICAgaWYgKHBlbmRpbmdDb250ZW50ICE9IG51bGwpIHtcbiAgICAgIGNvbnN0IHRvRW1pdCA9IHBlbmRpbmdDb250ZW50XG4gICAgICBwZW5kaW5nQ29udGVudCA9IG51bGxcbiAgICAgIGZsdXNoVG9TdG9yZXModG9FbWl0KVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHJlYWRlciA9IHJlc3BvbnNlLmJvZHk/LmdldFJlYWRlcigpXG4gIGlmICghcmVhZGVyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdObyByZWFkZXIgYXZhaWxhYmxlJylcbiAgfVxuXG4gIGNvbnN0IGRlY29kZXIgPSBuZXcgVGV4dERlY29kZXIoKVxuICBsZXQgYnVmZmVyID0gJydcbiAgbGV0IGFjY3VtdWxhdGVkQ29udGVudCA9ICcnXG4gIGxldCBoYXNTdGFydGVkV3JpdGluZyA9IGZhbHNlXG4gIC8vIFwiVXNhbmRvIFNraWxsXCIgcXVlZGEgdmlzaWJsZSBtaWVudHJhcyBlbCBtb2RlbG8gcGllbnNhIGNvbiBsYSBza2lsbCBjYXJnYWRhO1xuICAvLyBsb3MgZGVsdGFzIGRlIGB0aGlua2luZ2Agbm8gbG8gcGlzYW4gaGFzdGEgbGEgcHLDs3hpbWEgYWNjacOzbiBvIGVsIHByaW1lciB0b2tlbi5cbiAgbGV0IGlzVXNpbmdTa2lsbCA9IGZhbHNlXG5cbiAgY29uc3QgZW5zdXJlV3JpdGluZ1N0YXJ0ZWQgPSAoKSA9PiB7XG4gICAgaWYgKGhhc1N0YXJ0ZWRXcml0aW5nKSByZXR1cm5cbiAgICBoYXNTdGFydGVkV3JpdGluZyA9IHRydWVcbiAgICBzdG9yZSgpLnBhdGNoTWV0YShzZXNzaW9uSWQsIHsgaXNMb2FkaW5nOiB0cnVlLCBpc1dyaXRpbmc6IHRydWUgfSlcbiAgICBzdG9yZSgpLnNldFN0YXR1cyhzZXNzaW9uSWQsICd3cml0aW5nJylcbiAgICBzdG9yZSgpLnNldEFjdGl2aXR5KHNlc3Npb25JZCwgZ2V0V3JpdGluZ1N0cmVhbUFjdGl2aXR5KHQpKVxuICAgIGNhbGxiYWNrcy5vblN0YXJ0V3JpdGluZz8uKClcbiAgfVxuXG4gIGNvbnN0IGFwcGx5U3RyZWFtQ2h1bmsgPSAoY2h1bms6IHN0cmluZykgPT4ge1xuICAgIGlmICghY2h1bmspIHJldHVyblxuICAgIGFjY3VtdWxhdGVkQ29udGVudCA9IG1lcmdlU3RyZWFtQ2h1bmsoYWNjdW11bGF0ZWRDb250ZW50LCBjaHVuaylcbiAgICByZWFzb25pbmdTdG9yZS5zeW5jTGl2ZU5hcnJhdGlvbihwbGFjZWhvbGRlcklkLCBhY2N1bXVsYXRlZENvbnRlbnQpXG4gICAgZW1pdFRocm90dGxlZChhY2N1bXVsYXRlZENvbnRlbnQpXG4gIH1cblxuICBjb25zdCBjbGVhclN0cmVhbUxpa2VBbnN3ZXJSZXNldCA9ICgpID0+IHtcbiAgICBpZiAodGhyb3R0bGVUaW1lciAhPSBudWxsKSB7XG4gICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KHRocm90dGxlVGltZXIpXG4gICAgICB0aHJvdHRsZVRpbWVyID0gbnVsbFxuICAgIH1cbiAgICBwZW5kaW5nQ29udGVudCA9IG51bGxcbiAgICBhY2N1bXVsYXRlZENvbnRlbnQgPSAnJ1xuICAgIGZsdXNoVG9TdG9yZXMoJycpXG4gICAgcmVhc29uaW5nU3RvcmUubWFya0Fuc3dlclJlc2V0KHBsYWNlaG9sZGVySWQpXG4gIH1cblxuICBjb25zdCBhcHBseVN0cmVhbUNvbXBsZXRlID0gKHBheWxvYWQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSA9PiB7XG4gICAgY29uc3QgZmluYWxDb250ZW50ID0gKHBheWxvYWQuY29udGVudCBhcyBzdHJpbmcpIHx8IGFjY3VtdWxhdGVkQ29udGVudFxuICAgIGNvbnN0IHNvdXJjZXMgPSBwYXlsb2FkLnNvdXJjZXMgfHwgbnVsbFxuICAgIGNvbnN0IG1lbW9yeVNlc3Npb25JZCA9IChwYXlsb2FkLm1lbW9yeV9zZXNzaW9uX2lkIGFzIHN0cmluZykgfHwgJydcbiAgICBjb25zdCBhdHRhY2htZW50cyA9IEFycmF5LmlzQXJyYXkocGF5bG9hZC5hdHRhY2htZW50cykgPyBwYXlsb2FkLmF0dGFjaG1lbnRzIDogbnVsbFxuICAgIGxldCBzdWdnZXN0aW9uczogc3RyaW5nW10gfCBudWxsID0gbnVsbFxuICAgIGlmIChBcnJheS5pc0FycmF5KHBheWxvYWQuc3VnZ2VzdF9yZXBseSkpIHtcbiAgICAgIHN1Z2dlc3Rpb25zID0gcGF5bG9hZC5zdWdnZXN0X3JlcGx5IGFzIHN0cmluZ1tdXG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHBheWxvYWQuc3VnZ2VzdGlvbnMpKSB7XG4gICAgICBzdWdnZXN0aW9ucyA9IHBheWxvYWQuc3VnZ2VzdGlvbnMgYXMgc3RyaW5nW11cbiAgICB9XG4gICAgY29uc3QgYWdlbnRJZFJhdyA9IHBheWxvYWQuYWdlbnRfaWQgPz8gcGF5bG9hZC5hZ2VudElkXG4gICAgY29uc3QgY29tcGxldGVkQWdlbnRJZCA9IGFnZW50SWRSYXcgIT0gbnVsbCAmJiBTdHJpbmcoYWdlbnRJZFJhdykudHJpbSgpICE9PSAnJyA/IFN0cmluZyhhZ2VudElkUmF3KS50cmltKCkgOiBudWxsXG4gICAgY29uc3Qgc3ViYWdlbnRSYXcgPSBwYXlsb2FkLnN1YmFnZW50IGFzIHsgcmVzb2x2ZWRfY29udGV4dD86IHVua25vd24gfSB8IG51bGwgfCB1bmRlZmluZWRcbiAgICBjb25zdCByZXNvbHZlZENvbnRleHQgPSBzdWJhZ2VudFJhdz8ucmVzb2x2ZWRfY29udGV4dCA/PyBudWxsXG4gICAgY29uc3QgcmVhc29uaW5nID0gKHBheWxvYWQucmVhc29uaW5nIGFzIFJlYXNvbmluZ1RyYWNlUGF5bG9hZCB8IG51bGwpID8/IG51bGxcblxuICAgIHJlYXNvbmluZ1N0b3JlLmZpbmlzaChwbGFjZWhvbGRlcklkLCByZWFzb25pbmcpXG4gICAgZmx1c2hQZW5kaW5nKClcbiAgICBzdG9yZSgpLnBhdGNoTWV0YShzZXNzaW9uSWQsIHsgaXNMb2FkaW5nOiBmYWxzZSwgaXNXcml0aW5nOiBmYWxzZSB9KVxuICAgIHN0b3JlKCkuc2V0QWN0aXZpdHkoc2Vzc2lvbklkLCBudWxsKVxuICAgIHN0b3JlKCkuc2V0U3RhdHVzKHNlc3Npb25JZCwgJ2NvbXBsZXRlJylcblxuICAgIGNvbnN0IGZpbmlzaFBheWxvYWQ6IFNlc3Npb25GaW5pc2hQYXlsb2FkID0ge1xuICAgICAgY29udGVudDogZmluYWxDb250ZW50LFxuICAgICAgc291cmNlcyxcbiAgICAgIG1lbW9yeVNlc3Npb25JZCxcbiAgICAgIGF0dGFjaG1lbnRzLFxuICAgICAgc3VnZ2VzdGlvbnMsXG4gICAgICBjb21wbGV0ZWRBZ2VudElkLFxuICAgICAgcmVzb2x2ZWRDb250ZXh0LFxuICAgICAgcmVhc29uaW5nLFxuICAgIH1cbiAgICBjYWxsYmFja3Mub25GaW5pc2hTdHJlYW0/LihmaW5pc2hQYXlsb2FkKVxuXG4gICAgLy8gRWwgdGV4dG8gZW4gdml2byBOTyBzZSBsaW1waWEgYWPDoSBhIHByb3DDs3NpdG8uIEVsIHBsYWNlaG9sZGVyIHNlIHZhIGNvbiBlbFxuICAgIC8vIGBkcm9wYCBxdWUgaGFjZSBlbCBjb25zdW1pZG9yLCB5IGNvbiDDqWwgc3Ugc3VzY3JpcGNpw7NuOyB2YWNpYXJsbyBhbnRlcyBsb1xuICAgIC8vIGRlamFiYSBtb250YWRvIHkgc2luIHRleHRvIChhbHR1cmEgMCkgZHVyYW50ZSB+MjVtczogZWwgZmxpY2tlciBkZSBmaW4gZGVcbiAgICAvLyBzdHJlYW0uIE5vIGFsY2FuemEgY29uIGRpZmVyaXJsbywgcG9ycXVlIGVzdGUgY2xlYXIgdmlhamEgZW4gU3luY0xhbmVcbiAgICAvLyAoc3RvcmUgZXh0ZXJubykgeSBlbCBzd2FwIGRlIG1lbnNhamVzIGVuIERlZmF1bHRMYW5lLCBhc8OtIHF1ZSBzaWVtcHJlIHNlXG4gICAgLy8gY3VlbGEgZW4gZWwgbWVkaW8uIEVsIHNsb3Qgc2UgbGliZXJhIGVuIGVsIHByw7N4aW1vIGBzdGFydCgpYCBkZSBsYSBzZXNpw7NuLFxuICAgIC8vIHkgZW4gc3RvcC9lcnJvci9hcHByb3ZhbC9jYW1iaW8gZGUgc2VzacOzbiwgcXVlIHPDrSBsbGFtYW4gYGNsZWFyYC5cbiAgfVxuXG4gIHRyeSB7XG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgIGlmIChhY3RpdmUuaXNTdG9wcGVkKSB7XG4gICAgICAgIHJlYWRlci5jYW5jZWwoKVxuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7IGRvbmUsIHZhbHVlIH0gPSBhd2FpdCByZWFkZXIucmVhZCgpXG4gICAgICBpZiAoZG9uZSkgYnJlYWtcblxuICAgICAgaWYgKGFjdGl2ZS5pc1N0b3BwZWQpIHtcbiAgICAgICAgcmVhZGVyLmNhbmNlbCgpXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGJ1ZmZlciArPSBkZWNvZGVyLmRlY29kZSh2YWx1ZSwgeyBzdHJlYW06IHRydWUgfSlcbiAgICAgIGNvbnN0IGxpbmVzID0gYnVmZmVyLnNwbGl0KCdcXG5cXG4nKVxuICAgICAgYnVmZmVyID0gbGluZXMucG9wKCkgfHwgJydcblxuICAgICAgZm9yIChjb25zdCBsaW5lIG9mIGxpbmVzKSB7XG4gICAgICAgIGlmIChsaW5lLnRyaW0oKSA9PT0gJycpIGNvbnRpbnVlXG5cbiAgICAgICAgY29uc3QgW2V2ZW50TGluZSwgZGF0YUxpbmVdID0gbGluZS5zcGxpdCgnXFxuJylcbiAgICAgICAgaWYgKCFldmVudExpbmUgfHwgIWRhdGFMaW5lKSBjb250aW51ZVxuXG4gICAgICAgIGNvbnN0IGV2ZW50VHlwZSA9IGV2ZW50TGluZS5yZXBsYWNlKCdldmVudDogJywgJycpLnRyaW0oKVxuICAgICAgICBjb25zdCBkYXRhU3RyID0gZGF0YUxpbmUucmVwbGFjZSgnZGF0YTogJywgJycpLnRyaW0oKVxuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2UoZGF0YVN0cilcblxuICAgICAgICAgIHN3aXRjaCAoZXZlbnRUeXBlKSB7XG4gICAgICAgICAgICBjYXNlICd0aGlua2luZyc6IHtcbiAgICAgICAgICAgICAgY29uc3QgdGhpbmtpbmdEZWx0YSA9IHR5cGVvZiBkYXRhLmRlbHRhID09PSAnc3RyaW5nJyA/IGRhdGEuZGVsdGEgOiAnJ1xuICAgICAgICAgICAgICBpZiAodHlwZW9mIGRhdGEuaSA9PT0gJ251bWJlcicgJiYgdGhpbmtpbmdEZWx0YSkge1xuICAgICAgICAgICAgICAgIHJlYXNvbmluZ1N0b3JlLmFwcGVuZFRoaW5raW5nKHBsYWNlaG9sZGVySWQsIGRhdGEuaSwgdGhpbmtpbmdEZWx0YSlcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoIWhhc1N0YXJ0ZWRXcml0aW5nKSB7XG4gICAgICAgICAgICAgICAgc3RvcmUoKS5wYXRjaE1ldGEoc2Vzc2lvbklkLCB7IGlzTG9hZGluZzogdHJ1ZSB9KVxuICAgICAgICAgICAgICAgIHN0b3JlKCkuc2V0U3RhdHVzKHNlc3Npb25JZCwgJ3RoaW5raW5nJylcbiAgICAgICAgICAgICAgICBpZiAoIWlzVXNpbmdTa2lsbCkge1xuICAgICAgICAgICAgICAgICAgc3RvcmUoKS5zZXRBY3Rpdml0eShzZXNzaW9uSWQsIHsgcGhhc2U6ICd0aGlua2luZycsIG1lc3NhZ2U6IGdldFRoaW5raW5nTG9hZGluZ01lc3NhZ2UoMCwgdCkgfSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gU2tpbGwgQC1tZW5jaW9uYWRhIChhbCBhYnJpciBlbCBzdHJlYW0pIG8gbGxhbWFkYSBhIGBnZXRfc2tpbGxgLlxuICAgICAgICAgICAgY2FzZSAndXNpbmdfc2tpbGwnOlxuICAgICAgICAgICAgICBpZiAoIWhhc1N0YXJ0ZWRXcml0aW5nKSB7XG4gICAgICAgICAgICAgICAgaXNVc2luZ1NraWxsID0gdHJ1ZVxuICAgICAgICAgICAgICAgIHN0b3JlKCkucGF0Y2hNZXRhKHNlc3Npb25JZCwgeyBpc0xvYWRpbmc6IHRydWUgfSlcbiAgICAgICAgICAgICAgICBzdG9yZSgpLnNldFN0YXR1cyhzZXNzaW9uSWQsICd0aGlua2luZycpXG4gICAgICAgICAgICAgICAgc3RvcmUoKS5zZXRBY3Rpdml0eShzZXNzaW9uSWQsIGdldFVzaW5nU2tpbGxBY3Rpdml0eSh0LCBkYXRhLnNraWxsKSlcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBicmVha1xuXG4gICAgICAgICAgICAvLyBFbCBiYWNrZW5kIGRlc2NhcnRhIGxvIGVtaXRpZG8geSByZWluaWNpYSBsYSByZXNwdWVzdGEgZGVzZGUgY2Vyby5cbiAgICAgICAgICAgIGNhc2UgJ2Fuc3dlcl9yZXNldCc6XG4gICAgICAgICAgICAgIGNsZWFyU3RyZWFtTGlrZUFuc3dlclJlc2V0KClcbiAgICAgICAgICAgICAgYnJlYWtcblxuICAgICAgICAgICAgLy8gTUFJQSByZWNvcnTDsyBlbCBjb250ZXh0byBwYXJhIHF1ZSBlbCByZXF1ZXN0IGVudHJhcmEuIFPDs2xvIGxsZWdhXG4gICAgICAgICAgICAvLyBjdWFuZG8gZWwgcmVjb3J0ZSBzZSBub3RhIChpbcOhZ2VuZXMgdmllamFzLCB0dXJub3MgZW50ZXJvcyBvIGVsXG4gICAgICAgICAgICAvLyB0ZXh0byBsaXRlcmFsIGRlIHR1cm5vcyB2aWVqb3MpLCB5IHZpYWphIGp1bnRvIGEgbGEgdHJhemEgcG9ycXVlXG4gICAgICAgICAgICAvLyBjb21wYXJ0ZSBzdSBjaWNsbyBkZSB2aWRhOiBtaXNtbyBwbGFjZWhvbGRlciwgbWlzbW8gcmVuYW1lLlxuICAgICAgICAgICAgY2FzZSAnY29udGV4dF9jb21wYWN0ZWQnOlxuICAgICAgICAgICAgICByZWFzb25pbmdTdG9yZS5zZXRDb21wYWN0aW9uKHBsYWNlaG9sZGVySWQsIGRhdGEgYXMgQ29udGV4dENvbXBhY3Rpb25QYXlsb2FkKVxuICAgICAgICAgICAgICBicmVha1xuXG4gICAgICAgICAgICBjYXNlICdyZWFzb25pbmdfc3RlcCc6IHtcbiAgICAgICAgICAgICAgY29uc3Qgc3RlcFRvb2wgPSB0eXBlb2YgZGF0YS50b29sID09PSAnc3RyaW5nJyA/IGRhdGEudG9vbCA6ICcnXG4gICAgICAgICAgICAgIGNvbnN0IHN0ZXBUeXBlID0gdHlwZW9mIGRhdGEudHlwZSA9PT0gJ3N0cmluZycgPyBkYXRhLnR5cGUgOiAnJ1xuICAgICAgICAgICAgICBpZiAoc3RlcFRvb2wgJiYgc3RlcFR5cGUgIT09ICdoYW5kb2ZmJyAmJiBkYXRhLnN0YXR1cyA9PT0gJ3J1bm5pbmcnKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbGFiZWwgPSByZXNvbHZlVG9vbEFjdGlvbkxhYmVsKHN0ZXBUb29sLCB0LCAncHJlc2VudCcpXG4gICAgICAgICAgICAgICAgaWYgKGxhYmVsKSB7XG4gICAgICAgICAgICAgICAgICBpc1VzaW5nU2tpbGwgPSBzdGVwVG9vbCA9PT0gJ2dldF9za2lsbCdcbiAgICAgICAgICAgICAgICAgIHN0b3JlKCkucGF0Y2hNZXRhKHNlc3Npb25JZCwgeyBpc0xvYWRpbmc6IHRydWUgfSlcbiAgICAgICAgICAgICAgICAgIC8vIEVsIHN0ZXAgZGUgYGdldF9za2lsbGAgbGxlZ2EganVzdG8gZGVzcHXDqXMgZGUgYHVzaW5nX3NraWxsYDogbWFudGllbmUgZWwgbm9tYnJlLlxuICAgICAgICAgICAgICAgICAgc3RvcmUoKS5zZXRBY3Rpdml0eShcbiAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbklkLFxuICAgICAgICAgICAgICAgICAgICBpc1VzaW5nU2tpbGwgPyBnZXRVc2luZ1NraWxsQWN0aXZpdHkodCwgZGF0YS5hcmdzPy5uYW1lKSA6IHsgcGhhc2U6ICdhY3Rpb24nLCBtZXNzYWdlOiBsYWJlbCB9XG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmICh0eXBlb2YgZGF0YS5pID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgICAgIHJlYXNvbmluZ1N0b3JlLmNhcHR1cmVMZWFkaW5nRnJvbUJvZHkocGxhY2Vob2xkZXJJZCwgYWNjdW11bGF0ZWRDb250ZW50KVxuICAgICAgICAgICAgICAgIHJlYXNvbmluZ1N0b3JlLmFwcGx5U3RlcChwbGFjZWhvbGRlcklkLCBkYXRhIGFzIFJlYXNvbmluZ1N0ZXBQYXlsb2FkKVxuICAgICAgICAgICAgICAgIGlmIChyZWFzb25pbmdTdG9yZS5zaG91bGRDbGVhclN0cmVhbUZvckxlYWRpbmcocGxhY2Vob2xkZXJJZCwgYWNjdW11bGF0ZWRDb250ZW50KSkge1xuICAgICAgICAgICAgICAgICAgY2xlYXJTdHJlYW1MaWtlQW5zd2VyUmVzZXQoKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjYXNlICd0b2tlbic6IHtcbiAgICAgICAgICAgICAgY29uc3QgY2h1bmsgPSB0eXBlb2YgZGF0YS5jb250ZW50ID09PSAnc3RyaW5nJyA/IGRhdGEuY29udGVudCA6ICcnXG4gICAgICAgICAgICAgIGVuc3VyZVdyaXRpbmdTdGFydGVkKClcbiAgICAgICAgICAgICAgYXBwbHlTdHJlYW1DaHVuayhjaHVuaylcbiAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY2FzZSAnY29udGVudCc6IHtcbiAgICAgICAgICAgICAgY29uc3QgY2h1bmsgPSB0eXBlb2YgZGF0YS5jb250ZW50ID09PSAnc3RyaW5nJyA/IGRhdGEuY29udGVudCA6ICcnXG4gICAgICAgICAgICAgIGVuc3VyZVdyaXRpbmdTdGFydGVkKClcbiAgICAgICAgICAgICAgYXBwbHlTdHJlYW1DaHVuayhjaHVuaylcbiAgICAgICAgICAgICAgaWYgKGlzQ29tcGxldGVMaWtlU3NlUGF5bG9hZChkYXRhKSkge1xuICAgICAgICAgICAgICAgIGFwcGx5U3RyZWFtQ29tcGxldGUoZGF0YSlcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjYXNlICdub2RlJzpcbiAgICAgICAgICAgICAgaXNVc2luZ1NraWxsID0gZmFsc2VcbiAgICAgICAgICAgICAgaWYgKGRhdGEubm9kZSA9PT0gJ2FnZW50X3RyYW5zZmVyJykge1xuICAgICAgICAgICAgICAgIHN0b3JlKCkucGF0Y2hNZXRhKHNlc3Npb25JZCwgeyBpc0xvYWRpbmc6IHRydWUgfSlcbiAgICAgICAgICAgICAgICBzdG9yZSgpLnNldFN0YXR1cyhzZXNzaW9uSWQsICd0aGlua2luZycpXG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoZGF0YS5tZXNzYWdlICYmIHR5cGVvZiBkYXRhLm1lc3NhZ2UgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgc3RvcmUoKS5wYXRjaE1ldGEoc2Vzc2lvbklkLCB7IGlzTG9hZGluZzogdHJ1ZSB9KVxuICAgICAgICAgICAgICAgIHN0b3JlKCkuc2V0U3RhdHVzKHNlc3Npb25JZCwgJ3RoaW5raW5nJylcbiAgICAgICAgICAgICAgICBzdG9yZSgpLnNldEFjdGl2aXR5KFxuICAgICAgICAgICAgICAgICAgc2Vzc2lvbklkLFxuICAgICAgICAgICAgICAgICAgcmVzb2x2ZUhpdGxOb2RlU3RyZWFtQWN0aXZpdHkoXG4gICAgICAgICAgICAgICAgICAgIGRhdGEubWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgICAgdCxcbiAgICAgICAgICAgICAgICAgICAgaGl0bEV4ZWN1dGlvbkNvbnRleHQgPz8gdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICB0eXBlb2YgZGF0YS50aHJlYWRfaWQgPT09ICdzdHJpbmcnID8gZGF0YS50aHJlYWRfaWQgOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgYnJlYWtcblxuICAgICAgICAgICAgY2FzZSAnY29tcGxldGUnOlxuICAgICAgICAgICAgICBhcHBseVN0cmVhbUNvbXBsZXRlKGRhdGEpXG4gICAgICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgICAgIGNhc2UgJ2FwcHJvdmFsX3JlcXVpcmVkJzoge1xuICAgICAgICAgICAgICBmbHVzaFBlbmRpbmcoKVxuICAgICAgICAgICAgICAvLyBQcmVhcHJvYmFkbyAoYXV0by1hcHByb3ZlIG8gZGV0ZWNjacOzbiBtYW51YWwpOiBlbCBzdHJlYW0gbm8gc2UgY29ydGEsXG4gICAgICAgICAgICAgIC8vIHNpZ3VlIGVqZWN1dGFuZG8gbGFzIGFjY2lvbmVzIHNpbiBlc3BlcmFyIGRlY2lzacOzbiBkZWwgdXN1YXJpby5cbiAgICAgICAgICAgICAgY29uc3QgaXNQcmVBcHByb3ZlZCA9XG4gICAgICAgICAgICAgICAgZGF0YS5tYW51YWxfYXBwcm92YWxfZGV0ZWN0ZWQgPT09IHRydWUgfHxcbiAgICAgICAgICAgICAgICBkYXRhLmF1dG9fYXBwcm92ZWQgPT09IHRydWUgfHxcbiAgICAgICAgICAgICAgICBkYXRhLmFwcHJvdmFsX3N0YXR1cyA9PT0gJ2FwcHJvdmVkJ1xuICAgICAgICAgICAgICBzdG9yZSgpLnBhdGNoTWV0YShzZXNzaW9uSWQsIHsgaXNXcml0aW5nOiBmYWxzZSB9KVxuICAgICAgICAgICAgICBpZiAoIWlzUHJlQXBwcm92ZWQpIHtcbiAgICAgICAgICAgICAgICByZWFzb25pbmdTdG9yZS5maW5pc2gocGxhY2Vob2xkZXJJZCwgKGRhdGEucmVhc29uaW5nIGFzIFJlYXNvbmluZ1RyYWNlUGF5bG9hZCB8IG51bGwpID8/IG51bGwpXG4gICAgICAgICAgICAgICAgc3RvcmUoKS5wYXRjaE1ldGEoc2Vzc2lvbklkLCB7IGlzTG9hZGluZzogZmFsc2UgfSlcbiAgICAgICAgICAgICAgICBzZXNzaW9uU3RyZWFtaW5nVGV4dC5jbGVhcihzZXNzaW9uSWQpXG4gICAgICAgICAgICAgICAgc3RvcmUoKS5zZXRBY3Rpdml0eShzZXNzaW9uSWQsIG51bGwpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgc3RvcmUoKS5zZXRTdGF0dXMoc2Vzc2lvbklkLCAnYXdhaXRpbmdfYXBwcm92YWwnKVxuICAgICAgICAgICAgICBjYWxsYmFja3Mub25BcHByb3ZhbFJlcXVpcmVkPy4oZGF0YSBhcyBBcHByb3ZhbFJlcXVlc3QsIGFjY3VtdWxhdGVkQ29udGVudClcbiAgICAgICAgICAgICAgaWYgKGlzUHJlQXBwcm92ZWQgJiYgQXJyYXkuaXNBcnJheShkYXRhLnBlbmRpbmdfYWN0aW9ucykgJiYgZGF0YS5wZW5kaW5nX2FjdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHN0b3JlKCkucGF0Y2hNZXRhKHNlc3Npb25JZCwgeyBpc0xvYWRpbmc6IHRydWUgfSlcbiAgICAgICAgICAgICAgICBzdG9yZSgpLnNldFN0YXR1cyhzZXNzaW9uSWQsICd0aGlua2luZycpXG4gICAgICAgICAgICAgICAgc3RvcmUoKS5zZXRBY3Rpdml0eShzZXNzaW9uSWQsIHJlc29sdmVJbml0aWFsSGl0bFN0cmVhbUFjdGl2aXR5KHQsIGhpdGxFeGVjdXRpb25Db250ZXh0ID8/IHVuZGVmaW5lZCkpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY2FzZSAnZXJyb3InOlxuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdTU0UgRXJyb3I6JywgZGF0YS5lcnJvcilcbiAgICAgICAgICAgICAgZmx1c2hQZW5kaW5nKClcbiAgICAgICAgICAgICAgc2Vzc2lvblN0cmVhbWluZ1RleHQuY2xlYXIoc2Vzc2lvbklkKVxuICAgICAgICAgICAgICBzdG9yZSgpLnBhdGNoTWV0YShzZXNzaW9uSWQsIHsgaXNMb2FkaW5nOiBmYWxzZSwgaXNXcml0aW5nOiBmYWxzZSB9KVxuICAgICAgICAgICAgICBzdG9yZSgpLnNldEFjdGl2aXR5KHNlc3Npb25JZCwgbnVsbClcbiAgICAgICAgICAgICAgc3RvcmUoKS5zZXRFcnJvcihzZXNzaW9uSWQsIHsgdHlwZTogZGF0YS5lcnJvcj8udHlwZSwgbWVzc2FnZTogZGF0YS5lcnJvcj8ubWVzc2FnZSB9KVxuICAgICAgICAgICAgICBzdG9yZSgpLnNldFN0YXR1cyhzZXNzaW9uSWQsICdlcnJvcicpXG4gICAgICAgICAgICAgIGNhbGxiYWNrcy5vbkVycm9yPy4oZGF0YS5lcnJvcj8udHlwZSwgZGF0YS5lcnJvcj8ubWVzc2FnZSlcbiAgICAgICAgICAgICAgYnJlYWtcblxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgY29uc29sZS53YXJuKCdVbmtub3duIFNTRSBldmVudCB0eXBlOicsIGV2ZW50VHlwZSlcbiAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKHBhcnNlRXJyb3IpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBwYXJzaW5nIFNTRSBkYXRhOicsIHBhcnNlRXJyb3IsIGRhdGFTdHIpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0gZmluYWxseSB7XG4gICAgZmx1c2hQZW5kaW5nKClcbiAgfVxufVxuXG4vKipcbiAqIE1hbmFnZXIgc2luZ2xldG9uIChtb2R1bGUtbGV2ZWwpIHF1ZSBjb3JyZSBOIHN0cmVhbXMgZGVsIG9yY2hlc3RyYXRvciBlblxuICogcGFyYWxlbG8sIHVubyBwb3IgYHNlc3Npb25JZGAuIFNvYnJldml2ZSBhIGNhbWJpb3MgZGUgdmlzdGEgeSBhbCBjaWVycmUgZGVsXG4gKiBtb2RhbDogbG9zIHN0cmVhbXMgc29sbyBzZSBjYW5jZWxhbiBjb24gc3RvcCBleHBsw61jaXRvIGRlbCB1c3VhcmlvIG8gYWxcbiAqIGNvbXBsZXRhci9lcnJvcmFyLlxuICovXG5leHBvcnQgY29uc3Qgc2Vzc2lvblN0cmVhbU1hbmFnZXIgPSB7XG4gIGlzQWN0aXZlOiBpc1N0cmVhbUFjdGl2ZSxcbiAgZ2V0QWN0aXZlQ291bnQ6IGdldEFjdGl2ZVN0cmVhbUNvdW50LFxuICBnZXRBY3RpdmVTZXNzaW9uSWRzOiAoKTogc3RyaW5nW10gPT4gQXJyYXkuZnJvbShhY3RpdmVTdHJlYW1zLmtleXMoKSksXG5cbiAgYXN5bmMgc3RhcnRTdHJlYW0ocGFyYW1zOiBTdGFydFN0cmVhbVBhcmFtcyk6IFByb21pc2U8U3RhcnRTdHJlYW1SZXN1bHQ+IHtcbiAgICBlbnN1cmVTZXNzaW9uTm90aWZpY2F0aW9uc0luaXRpYWxpemVkKClcblxuICAgIGNvbnN0IHsgc2Vzc2lvbklkLCBwbGFjZWhvbGRlcklkLCByZXF1ZXN0LCBjYWxsYmFja3MsIHQsIGFjdGl2aXR5T3B0aW9ucywgYWdlbnRJZCwgYWdlbnROYW1lIH0gPSBwYXJhbXNcblxuICAgIGlmIChpc1N0cmVhbUFjdGl2ZShzZXNzaW9uSWQpKSB7XG4gICAgICByZXR1cm4geyBzdGFydGVkOiBmYWxzZSwgcmVhc29uOiAnYWxyZWFkeV9hY3RpdmUnIH1cbiAgICB9XG4gICAgaWYgKGdldEFjdGl2ZVN0cmVhbUNvdW50KCkgPj0gTUFYX0NPTkNVUlJFTlRfU1RSRUFNUykge1xuICAgICAgcmV0dXJuIHsgc3RhcnRlZDogZmFsc2UsIHJlYXNvbjogJ2xpbWl0JyB9XG4gICAgfVxuXG4gICAgY29uc3QgY29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKVxuICAgIGNvbnN0IGFjdGl2ZTogQWN0aXZlU3RyZWFtID0geyBzZXNzaW9uSWQsIGNvbnRyb2xsZXIsIGlzU3RvcHBlZDogZmFsc2UgfVxuICAgIGFjdGl2ZVN0cmVhbXMuc2V0KHNlc3Npb25JZCwgYWN0aXZlKVxuXG4gICAgc3RvcmUoKS5lbnN1cmVTZXNzaW9uKHNlc3Npb25JZClcbiAgICBzdG9yZSgpLnBhdGNoTWV0YShzZXNzaW9uSWQsIHtcbiAgICAgIHBsYWNlaG9sZGVySWQsXG4gICAgICBlcnJvcjogbnVsbCxcbiAgICAgIGlzTG9hZGluZzogdHJ1ZSxcbiAgICAgIGlzV3JpdGluZzogZmFsc2UsXG4gICAgICAuLi4oYWdlbnRJZCAhPSBudWxsID8geyBhZ2VudElkIH0gOiB7fSksXG4gICAgICAuLi4oYWdlbnROYW1lICE9IG51bGwgPyB7IGFnZW50TmFtZSB9IDoge30pLFxuICAgIH0pXG4gICAgc3RvcmUoKS5zZXRTdGF0dXMoc2Vzc2lvbklkLCAndGhpbmtpbmcnKVxuICAgIHNlc3Npb25TdHJlYW1pbmdUZXh0LnN0YXJ0KHNlc3Npb25JZCwgcGxhY2Vob2xkZXJJZClcbiAgICByZWFzb25pbmdTdG9yZS5zdGFydChwbGFjZWhvbGRlcklkKVxuICAgIHN0b3JlKCkuc2V0QWN0aXZpdHkoc2Vzc2lvbklkLCBnZXRJbml0aWFsU3RyZWFtQWN0aXZpdHkodCwgYWN0aXZpdHlPcHRpb25zID8/IHt9KSlcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IG1haWEuT3JjaGVzdHJhdG9yLm9yY2hlc3RyYXRvcihyZXF1ZXN0LCBjb250cm9sbGVyLnNpZ25hbClcbiAgICAgIGF3YWl0IHBhcnNlU2Vzc2lvblNTRShyZXNwb25zZSwgYWN0aXZlLCBwYXJhbXMpXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICghYWN0aXZlLmlzU3RvcHBlZCkge1xuICAgICAgICBzZXNzaW9uU3RyZWFtaW5nVGV4dC5jbGVhcihzZXNzaW9uSWQpXG4gICAgICAgIHN0b3JlKCkucGF0Y2hNZXRhKHNlc3Npb25JZCwgeyBpc0xvYWRpbmc6IGZhbHNlLCBpc1dyaXRpbmc6IGZhbHNlIH0pXG4gICAgICAgIHN0b3JlKCkuc2V0QWN0aXZpdHkoc2Vzc2lvbklkLCBudWxsKVxuICAgICAgICBzdG9yZSgpLnNldFN0YXR1cyhzZXNzaW9uSWQsICdlcnJvcicpXG4gICAgICAgIGNhbGxiYWNrcy5vbkVycm9yPy4oKVxuICAgICAgfVxuICAgIH0gZmluYWxseSB7XG4gICAgICBhY3RpdmVTdHJlYW1zLmRlbGV0ZShzZXNzaW9uSWQpXG4gICAgfVxuXG4gICAgcmV0dXJuIHsgc3RhcnRlZDogdHJ1ZSB9XG4gIH0sXG5cbiAgLyoqIFJlc3VtZSBISVRMIChgY29udGludWUtdGhyZWFkYCkga2V5ZWQgcG9yIHNlc3Npb25JZCDigJQgbWlzbW8gbW90b3IgcXVlIG9yY2hlc3RyYXRvci4gKi9cbiAgYXN5bmMgc3RhcnRDb250aW51ZVN0cmVhbShwYXJhbXM6IFN0YXJ0Q29udGludWVTdHJlYW1QYXJhbXMpOiBQcm9taXNlPFN0YXJ0U3RyZWFtUmVzdWx0PiB7XG4gICAgZW5zdXJlU2Vzc2lvbk5vdGlmaWNhdGlvbnNJbml0aWFsaXplZCgpXG5cbiAgICBjb25zdCB7IHNlc3Npb25JZCwgcGxhY2Vob2xkZXJJZCwgY29udGludWVSZXF1ZXN0LCBjYWxsYmFja3MsIHQsIGhpdGxFeGVjdXRpb25Db250ZXh0LCBhZ2VudElkLCBhZ2VudE5hbWUgfSA9IHBhcmFtc1xuXG4gICAgaWYgKGlzU3RyZWFtQWN0aXZlKHNlc3Npb25JZCkpIHtcbiAgICAgIHJldHVybiB7IHN0YXJ0ZWQ6IGZhbHNlLCByZWFzb246ICdhbHJlYWR5X2FjdGl2ZScgfVxuICAgIH1cbiAgICBpZiAoZ2V0QWN0aXZlU3RyZWFtQ291bnQoKSA+PSBNQVhfQ09OQ1VSUkVOVF9TVFJFQU1TKSB7XG4gICAgICByZXR1cm4geyBzdGFydGVkOiBmYWxzZSwgcmVhc29uOiAnbGltaXQnIH1cbiAgICB9XG5cbiAgICBpZiAoaGl0bEV4ZWN1dGlvbkNvbnRleHQpIHtcbiAgICAgIHNlc3Npb25IaXRsQ29udGV4dC5zZXQoc2Vzc2lvbklkLCBoaXRsRXhlY3V0aW9uQ29udGV4dClcbiAgICB9XG5cbiAgICBjb25zdCBjb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpXG4gICAgY29uc3QgYWN0aXZlOiBBY3RpdmVTdHJlYW0gPSB7IHNlc3Npb25JZCwgY29udHJvbGxlciwgaXNTdG9wcGVkOiBmYWxzZSB9XG4gICAgYWN0aXZlU3RyZWFtcy5zZXQoc2Vzc2lvbklkLCBhY3RpdmUpXG5cbiAgICBzdG9yZSgpLmVuc3VyZVNlc3Npb24oc2Vzc2lvbklkKVxuICAgIHN0b3JlKCkucGF0Y2hNZXRhKHNlc3Npb25JZCwge1xuICAgICAgcGxhY2Vob2xkZXJJZCxcbiAgICAgIGVycm9yOiBudWxsLFxuICAgICAgaXNMb2FkaW5nOiB0cnVlLFxuICAgICAgaXNXcml0aW5nOiBmYWxzZSxcbiAgICAgIC4uLihhZ2VudElkICE9IG51bGwgPyB7IGFnZW50SWQgfSA6IHt9KSxcbiAgICAgIC4uLihhZ2VudE5hbWUgIT0gbnVsbCA/IHsgYWdlbnROYW1lIH0gOiB7fSksXG4gICAgfSlcbiAgICBzdG9yZSgpLnNldFN0YXR1cyhzZXNzaW9uSWQsICd0aGlua2luZycpXG4gICAgc2Vzc2lvblN0cmVhbWluZ1RleHQuc3RhcnQoc2Vzc2lvbklkLCBwbGFjZWhvbGRlcklkKVxuICAgIHN0b3JlKCkuc2V0QWN0aXZpdHkoXG4gICAgICBzZXNzaW9uSWQsXG4gICAgICByZXNvbHZlSW5pdGlhbEhpdGxTdHJlYW1BY3Rpdml0eSh0LCBoaXRsRXhlY3V0aW9uQ29udGV4dCA/PyBzZXNzaW9uSGl0bENvbnRleHQuZ2V0KHNlc3Npb25JZCkgPz8gdW5kZWZpbmVkKVxuICAgIClcblxuICAgIGNvbnN0IHNzZVBhcmFtczogU3RhcnRTdHJlYW1QYXJhbXMgPSB7XG4gICAgICBzZXNzaW9uSWQsXG4gICAgICBwbGFjZWhvbGRlcklkLFxuICAgICAgcmVxdWVzdDoge30gYXMgT3JjaGVzdHJhdG9yUmVxdWVzdCxcbiAgICAgIGNhbGxiYWNrcyxcbiAgICAgIHQsXG4gICAgICBoaXRsRXhlY3V0aW9uQ29udGV4dDogaGl0bEV4ZWN1dGlvbkNvbnRleHQgPz8gc2Vzc2lvbkhpdGxDb250ZXh0LmdldChzZXNzaW9uSWQpLFxuICAgICAgYWdlbnRJZCxcbiAgICAgIGFnZW50TmFtZSxcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBtYWlhLk9yY2hlc3RyYXRvci5jb250aW51ZVRocmVhZChjb250aW51ZVJlcXVlc3QsIGNvbnRyb2xsZXIuc2lnbmFsKVxuICAgICAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGNvbnRpbnVlLXRocmVhZCBmYWlsZWQ6ICR7cmVzcG9uc2Uuc3RhdHVzfWApXG4gICAgICB9XG4gICAgICBhd2FpdCBwYXJzZVNlc3Npb25TU0UocmVzcG9uc2UsIGFjdGl2ZSwgc3NlUGFyYW1zKVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoIWFjdGl2ZS5pc1N0b3BwZWQpIHtcbiAgICAgICAgc2Vzc2lvblN0cmVhbWluZ1RleHQuY2xlYXIoc2Vzc2lvbklkKVxuICAgICAgICBzdG9yZSgpLnBhdGNoTWV0YShzZXNzaW9uSWQsIHsgaXNMb2FkaW5nOiBmYWxzZSwgaXNXcml0aW5nOiBmYWxzZSB9KVxuICAgICAgICBzdG9yZSgpLnNldEFjdGl2aXR5KHNlc3Npb25JZCwgbnVsbClcbiAgICAgICAgc3RvcmUoKS5zZXRTdGF0dXMoc2Vzc2lvbklkLCAnZXJyb3InKVxuICAgICAgICBjYWxsYmFja3Mub25FcnJvcj8uKClcbiAgICAgIH1cbiAgICB9IGZpbmFsbHkge1xuICAgICAgYWN0aXZlU3RyZWFtcy5kZWxldGUoc2Vzc2lvbklkKVxuICAgICAgc2Vzc2lvbkhpdGxDb250ZXh0LmNsZWFyKHNlc3Npb25JZClcbiAgICB9XG5cbiAgICByZXR1cm4geyBzdGFydGVkOiB0cnVlIH1cbiAgfSxcblxuICAvKiogUmVnZW5lcmEgbGEgcmVzcHVlc3RhIGRlIHVuIHR1cm5vIChgcmV0cnlfY29tcGxldGlvbmApIOKAlCBtaXNtbyBtb3RvciBTU0UgcXVlIG9yY2hlc3RyYXRvci4gKi9cbiAgYXN5bmMgc3RhcnRSZXRyeVN0cmVhbShwYXJhbXM6IFN0YXJ0UmV0cnlTdHJlYW1QYXJhbXMpOiBQcm9taXNlPFN0YXJ0U3RyZWFtUmVzdWx0PiB7XG4gICAgZW5zdXJlU2Vzc2lvbk5vdGlmaWNhdGlvbnNJbml0aWFsaXplZCgpXG5cbiAgICBjb25zdCB7IHNlc3Npb25JZCwgcGxhY2Vob2xkZXJJZCwgcmV0cnlSZXF1ZXN0LCBjYWxsYmFja3MsIHQsIGFjdGl2aXR5T3B0aW9ucywgYWdlbnRJZCwgYWdlbnROYW1lIH0gPSBwYXJhbXNcblxuICAgIGlmIChpc1N0cmVhbUFjdGl2ZShzZXNzaW9uSWQpKSB7XG4gICAgICByZXR1cm4geyBzdGFydGVkOiBmYWxzZSwgcmVhc29uOiAnYWxyZWFkeV9hY3RpdmUnIH1cbiAgICB9XG4gICAgaWYgKGdldEFjdGl2ZVN0cmVhbUNvdW50KCkgPj0gTUFYX0NPTkNVUlJFTlRfU1RSRUFNUykge1xuICAgICAgcmV0dXJuIHsgc3RhcnRlZDogZmFsc2UsIHJlYXNvbjogJ2xpbWl0JyB9XG4gICAgfVxuXG4gICAgY29uc3QgY29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKVxuICAgIGNvbnN0IGFjdGl2ZTogQWN0aXZlU3RyZWFtID0geyBzZXNzaW9uSWQsIGNvbnRyb2xsZXIsIGlzU3RvcHBlZDogZmFsc2UgfVxuICAgIGFjdGl2ZVN0cmVhbXMuc2V0KHNlc3Npb25JZCwgYWN0aXZlKVxuXG4gICAgc3RvcmUoKS5lbnN1cmVTZXNzaW9uKHNlc3Npb25JZClcbiAgICBzdG9yZSgpLnBhdGNoTWV0YShzZXNzaW9uSWQsIHtcbiAgICAgIHBsYWNlaG9sZGVySWQsXG4gICAgICBlcnJvcjogbnVsbCxcbiAgICAgIGlzTG9hZGluZzogdHJ1ZSxcbiAgICAgIGlzV3JpdGluZzogZmFsc2UsXG4gICAgICAuLi4oYWdlbnRJZCAhPSBudWxsID8geyBhZ2VudElkIH0gOiB7fSksXG4gICAgICAuLi4oYWdlbnROYW1lICE9IG51bGwgPyB7IGFnZW50TmFtZSB9IDoge30pLFxuICAgIH0pXG4gICAgc3RvcmUoKS5zZXRTdGF0dXMoc2Vzc2lvbklkLCAndGhpbmtpbmcnKVxuICAgIHNlc3Npb25TdHJlYW1pbmdUZXh0LnN0YXJ0KHNlc3Npb25JZCwgcGxhY2Vob2xkZXJJZClcbiAgICBzdG9yZSgpLnNldEFjdGl2aXR5KHNlc3Npb25JZCwgZ2V0SW5pdGlhbFN0cmVhbUFjdGl2aXR5KHQsIGFjdGl2aXR5T3B0aW9ucyA/PyB7fSkpXG5cbiAgICBjb25zdCBzc2VQYXJhbXM6IFN0YXJ0U3RyZWFtUGFyYW1zID0ge1xuICAgICAgc2Vzc2lvbklkLFxuICAgICAgcGxhY2Vob2xkZXJJZCxcbiAgICAgIHJlcXVlc3Q6IHt9IGFzIE9yY2hlc3RyYXRvclJlcXVlc3QsXG4gICAgICBjYWxsYmFja3MsXG4gICAgICB0LFxuICAgICAgYWN0aXZpdHlPcHRpb25zLFxuICAgICAgYWdlbnRJZCxcbiAgICAgIGFnZW50TmFtZSxcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBtYWlhLk9yY2hlc3RyYXRvci5yZXRyeUNvbXBsZXRpb24ocmV0cnlSZXF1ZXN0LCBjb250cm9sbGVyLnNpZ25hbClcbiAgICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gNDA0KSB7XG4gICAgICAgICAgbGV0IGRldGFpbDogc3RyaW5nIHwgdW5kZWZpbmVkXG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGRhdGEgPSAoYXdhaXQgcmVzcG9uc2UuanNvbigpKSBhcyB7IGRldGFpbD86IHN0cmluZyB9XG4gICAgICAgICAgICBkZXRhaWwgPSB0eXBlb2YgZGF0YS5kZXRhaWwgPT09ICdzdHJpbmcnID8gZGF0YS5kZXRhaWwgOiB1bmRlZmluZWRcbiAgICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgIGRldGFpbCA9IHVuZGVmaW5lZFxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZGV0YWlsID09PSAnVHVybiBub3QgZm91bmQnKSB7XG4gICAgICAgICAgICBzZXNzaW9uU3RyZWFtaW5nVGV4dC5jbGVhcihzZXNzaW9uSWQpXG4gICAgICAgICAgICBzdG9yZSgpLnBhdGNoTWV0YShzZXNzaW9uSWQsIHsgaXNMb2FkaW5nOiBmYWxzZSwgaXNXcml0aW5nOiBmYWxzZSwgcGxhY2Vob2xkZXJJZDogbnVsbCB9KVxuICAgICAgICAgICAgc3RvcmUoKS5zZXRBY3Rpdml0eShzZXNzaW9uSWQsIG51bGwpXG4gICAgICAgICAgICBzdG9yZSgpLnNldFN0YXR1cyhzZXNzaW9uSWQsICdpZGxlJylcbiAgICAgICAgICAgIGFjdGl2ZVN0cmVhbXMuZGVsZXRlKHNlc3Npb25JZClcbiAgICAgICAgICAgIHJldHVybiB7IHN0YXJ0ZWQ6IGZhbHNlLCByZWFzb246ICd0dXJuX25vdF9mb3VuZCcgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYHJldHJ5X2NvbXBsZXRpb24gZmFpbGVkOiAke3Jlc3BvbnNlLnN0YXR1c31gKVxuICAgICAgfVxuICAgICAgYXdhaXQgcGFyc2VTZXNzaW9uU1NFKHJlc3BvbnNlLCBhY3RpdmUsIHNzZVBhcmFtcylcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaWYgKCFhY3RpdmUuaXNTdG9wcGVkKSB7XG4gICAgICAgIHNlc3Npb25TdHJlYW1pbmdUZXh0LmNsZWFyKHNlc3Npb25JZClcbiAgICAgICAgc3RvcmUoKS5wYXRjaE1ldGEoc2Vzc2lvbklkLCB7IGlzTG9hZGluZzogZmFsc2UsIGlzV3JpdGluZzogZmFsc2UgfSlcbiAgICAgICAgc3RvcmUoKS5zZXRBY3Rpdml0eShzZXNzaW9uSWQsIG51bGwpXG4gICAgICAgIHN0b3JlKCkuc2V0U3RhdHVzKHNlc3Npb25JZCwgJ2Vycm9yJylcbiAgICAgICAgY2FsbGJhY2tzLm9uRXJyb3I/LigpXG4gICAgICB9XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGFjdGl2ZVN0cmVhbXMuZGVsZXRlKHNlc3Npb25JZClcbiAgICB9XG5cbiAgICByZXR1cm4geyBzdGFydGVkOiB0cnVlIH1cbiAgfSxcblxuICAvKiogQ2FuY2VsYWNpw7NuIGV4cGzDrWNpdGEgZGVsIHVzdWFyaW8gKG1lbnNhamUgXCJjYW5jZWxhZG9cIikuICovXG4gIHN0b3BTdHJlYW0oc2Vzc2lvbklkOiBzdHJpbmcsIGNhbGxiYWNrcz86IFNlc3Npb25TdHJlYW1DYWxsYmFja3MpIHtcbiAgICBjb25zdCBhY3RpdmUgPSBhY3RpdmVTdHJlYW1zLmdldChzZXNzaW9uSWQpXG4gICAgaWYgKCFhY3RpdmUpIHJldHVyblxuICAgIGFjdGl2ZS5pc1N0b3BwZWQgPSB0cnVlXG4gICAgYWN0aXZlLmNvbnRyb2xsZXIuYWJvcnQoKVxuICAgIGFjdGl2ZVN0cmVhbXMuZGVsZXRlKHNlc3Npb25JZClcbiAgICAvLyBFbCBwYXJjaWFsIHNlIHJlc2NhdGEgYW50ZXMgZGUgbGltcGlhcjogZWwgYmFja2VuZCBsbyBwZXJzaXN0ZSwgcGVybyBzaSBubyBsb1xuICAgIC8vIHBhc2Ftb3MgYWwgY2FsbGJhY2sgZGVzYXBhcmVjZSBkZSBwYW50YWxsYSBoYXN0YSBlbCBwcsOzeGltbyBmZXRjaCBkZSBsYSBzZXNpw7NuLlxuICAgIGNvbnN0IHBhcnRpYWxUZXh0ID0gc2Vzc2lvblN0cmVhbWluZ1RleHQuZ2V0U25hcHNob3Qoc2Vzc2lvbklkKS50ZXh0XG4gICAgc2Vzc2lvblN0cmVhbWluZ1RleHQuY2xlYXIoc2Vzc2lvbklkKVxuICAgIHN0b3JlKCkucGF0Y2hNZXRhKHNlc3Npb25JZCwgeyBpc0xvYWRpbmc6IGZhbHNlLCBpc1dyaXRpbmc6IGZhbHNlIH0pXG4gICAgc3RvcmUoKS5zZXRBY3Rpdml0eShzZXNzaW9uSWQsIG51bGwpXG4gICAgc3RvcmUoKS5zZXRTdGF0dXMoc2Vzc2lvbklkLCAnY2FuY2VsbGVkJylcbiAgICBjYWxsYmFja3M/Lm9uU3RvcD8uKHBhcnRpYWxUZXh0KVxuICB9LFxuXG4gIC8qKiBBYm9ydGEgc2luIG1hcmNhciBcImNhbmNlbGFkb1wiICh1c28gaW50ZXJubyAvIGxpbXBpZXphKS4gKi9cbiAgYWJvcnRTaWxlbnRseShzZXNzaW9uSWQ6IHN0cmluZykge1xuICAgIGNvbnN0IGFjdGl2ZSA9IGFjdGl2ZVN0cmVhbXMuZ2V0KHNlc3Npb25JZClcbiAgICBpZiAoIWFjdGl2ZSkgcmV0dXJuXG4gICAgYWN0aXZlLmlzU3RvcHBlZCA9IHRydWVcbiAgICBhY3RpdmUuY29udHJvbGxlci5hYm9ydCgpXG4gICAgYWN0aXZlU3RyZWFtcy5kZWxldGUoc2Vzc2lvbklkKVxuICAgIHNlc3Npb25TdHJlYW1pbmdUZXh0LmNsZWFyKHNlc3Npb25JZClcbiAgICBzdG9yZSgpLnBhdGNoTWV0YShzZXNzaW9uSWQsIHsgaXNMb2FkaW5nOiBmYWxzZSwgaXNXcml0aW5nOiBmYWxzZSB9KVxuICAgIHN0b3JlKCkuc2V0QWN0aXZpdHkoc2Vzc2lvbklkLCBudWxsKVxuICAgIGlmIChzdG9yZSgpLmdldE1ldGEoc2Vzc2lvbklkKT8uc3RhdHVzICE9PSAnY29tcGxldGUnKSB7XG4gICAgICBzdG9yZSgpLnNldFN0YXR1cyhzZXNzaW9uSWQsICdpZGxlJylcbiAgICB9XG4gIH0sXG5cbiAgYWJvcnRBbGwoKSB7XG4gICAgQXJyYXkuZnJvbShhY3RpdmVTdHJlYW1zLmtleXMoKSkuZm9yRWFjaChzZXNzaW9uSWQgPT4gdGhpcy5hYm9ydFNpbGVudGx5KHNlc3Npb25JZCkpXG4gIH0sXG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU9BLElBQUksTUFBTSxxQkFBcUI7QUFFdEMsU0FDRUMsd0JBQXdCLEVBQ3hCQyx5QkFBeUIsRUFDekJDLHFCQUFxQixFQUNyQkMsd0JBQXdCLEVBQ3hCQyw2QkFBNkIsRUFDN0JDLGdDQUFnQyxFQUNoQ0Msc0JBQXNCLFFBQ2pCLG9DQUFvQztBQUUzQyxTQUFTQyx3QkFBd0IsRUFBRUMsZ0JBQWdCLFFBQVEsOEJBQThCO0FBQ3pGLFNBQVNDLGNBQWMsUUFBUSwrQkFBK0I7QUFHOUQsU0FBU0Msb0JBQW9CLFFBQVEsd0JBQXdCO0FBQzdELFNBQVNDLGdCQUFnQixRQUFRLG9CQUFvQjtBQUNyRCxTQUFTQyxxQ0FBcUMsUUFBUSx3QkFBd0I7QUFDOUUsU0FBU0Msa0JBQWtCLFFBQVEsc0JBQXNCOztBQU96RDs7QUFxREE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLElBQU1DLHNCQUFzQixHQUFHLENBQUM7QUFFdkMsSUFBTUMsa0JBQWtCLEdBQUcsRUFBRTtBQUU3QixJQUFNQyxhQUFhLEdBQUcsSUFBSUMsR0FBRyxDQUF1QixDQUFDO0FBRXJELElBQU1DLEtBQUssR0FBRyxTQUFSQSxLQUFL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
package/lib/types/Chat.js CHANGED
@@ -7,4 +7,4 @@ export var ChatHistoryRole = /*#__PURE__*/function (ChatHistoryRole) {
7
7
  }({});
8
8
 
9
9
  // Backend pending_approval format (before transformation)
10
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDaGF0SGlzdG9yeVJvbGUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvQ2hhdC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgeyBSZWFjdE5vZGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB0eXBlIHsgUmVhc29uaW5nVHJhY2UsIFJlYXNvbmluZ1RyYWNlUGF5bG9hZCB9IGZyb20gJy4vcmVhc29uaW5nJ1xuaW1wb3J0IHsgUHJvamVjdCB9IGZyb20gJy4vUHJvamVjdCdcbmltcG9ydCB7IEF0dGFjaG1lbnRGaWxlIH0gZnJvbSAnLi4vY29tcG9uZW50cy9tb2xlY3VsZXMvQ2hhdEZvb3Rlci9DaGF0Rm9vdGVyJ1xuaW1wb3J0IHsgQ29udGV4dE1lc3NhZ2UgfSBmcm9tICcuL2NvbnRleHRNZW50aW9uJ1xuXG5leHBvcnQgdHlwZSBDaGF0SXRlbSA9IHtcbiAgY2hhdF9pZDogc3RyaW5nXG4gIGNoYXRfc3RhdHVzOiBzdHJpbmdcbiAgbGFzdF9xdWVzdGlvbjogc3RyaW5nXG4gIGxhc3RfcXVlc3Rpb25fZGF0ZTogc3RyaW5nXG4gIG1lc3NhZ2VfaWQ6IHN0cmluZ1xuICBxX2Fuc3dlcnM6IG51bWJlclxuICBnZW5lcmFsX3JhdGluZzogbnVtYmVyXG4gIHVzZXJfaWQ6IHN0cmluZ1xufVxuXG5leHBvcnQgdHlwZSBDaGF0UmVzcG9uc2UgPSB7XG4gIGl0ZW1zOiBDaGF0SXRlbVtdXG4gIGxhc3RfZXZhbHVhdGVkX2tleTogc3RyaW5nXG59XG5cbmV4cG9ydCB0eXBlIENoYXQgPSB7XG4gIGlkOiBzdHJpbmdcbiAgdGl0bGU6IHN0cmluZ1xuICBkYXRlOiBEYXRlXG4gIGFnZW50X3R5cGU/OiBzdHJpbmdcbn1cblxuZXhwb3J0IHR5cGUgQ2hhdE1lc3NhZ2VVc2VyID0ge1xuICBpZDogc3RyaW5nXG4gIG5hbWU6IHN0cmluZ1xuICBhdmF0YXI/OiBzdHJpbmdcbiAgYXZhdGFySWNvbj86IFJlYWN0Tm9kZVxufVxuXG5leHBvcnQgZW51bSBDaGF0SGlzdG9yeVJvbGUge1xuICBVU0VSID0gJ3VzZXInLFxuICBBU1NJU1RBTlQgPSAnYXNzaXN0YW50Jyxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQZW5kaW5nQWN0aW9uIHtcbiAgdG9vbF9uYW1lOiBzdHJpbmdcbiAgdG9vbF9jYWxsX2lkOiBzdHJpbmdcbiAgdG9vbF9hcmdzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgYW55W11cbiAgdGhyZWFkX2lkOiBzdHJpbmcgLy8gRWFjaCBhY3Rpb24gaGFzIGl0cyBvd24gdW5pcXVlIHRocmVhZF9pZFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFwcHJvdmFsUmVxdWVzdCB7XG4gIHR5cGU6ICdhcHByb3ZhbF9yZXF1aXJlZCdcbiAgcGVuZGluZ19hY3Rpb25zOiBQZW5kaW5nQWN0aW9uW11cbiAgdG90YWxfYWN0aW9uczogbnVtYmVyXG4gIG9yaWdpbmFsX3RocmVhZF9pZDogc3RyaW5nIC8vIE9yaWdpbmFsIGNoZWNrcG9pbnQgdGhyZWFkX2lkXG4gIHNlc3Npb25faWQ6IHN0cmluZ1xuICBtZXRhZGF0YTogUmVjb3JkPHN0cmluZywgYW55PlxuICBtYW51YWxfYXBwcm92YWxfZGV0ZWN0ZWQ/OiBib29sZWFuXG4gIHdhcm5pbmdfbWVzc2FnZT86IHN0cmluZ1xuICBhdXRvX2FwcHJvdmVkPzogYm9vbGVhblxuICBhcHByb3ZhbF9zdGF0dXM/OiAncGVuZGluZycgfCAnYXBwcm92ZWQnXG4gIHJlYXNvbmluZz86IFJlYXNvbmluZ1RyYWNlUGF5bG9hZCB8IG51bGxcbn1cblxuLy8gQmFja2VuZCBwZW5kaW5nX2FwcHJvdmFsIGZvcm1hdCAoYmVmb3JlIHRyYW5zZm9ybWF0aW9uKVxuZXhwb3J0IGludGVyZmFjZSBCYWNrZW5kUGVuZGluZ0FwcHJvdmFsIHtcbiAgdHlwZTogJ2FwcHJvdmFsX3JlcXVpcmVkJ1xuICB0b29sX2NhbGxfaWQ6IHN0cmluZ1xuICB0b29sX25hbWU/OiBzdHJpbmdcbiAgdG9vbF9hcmdzPzogUmVjb3JkPHN0cmluZywgYW55PiB8IGFueVtdXG4gIG9yaWdpbmFsX3RocmVhZF9pZDogc3RyaW5nXG4gIHNlc3Npb25faWQ6IHN0cmluZ1xuICBtZXRhZGF0YTogUmVjb3JkPHN0cmluZywgYW55PlxuICBtYW51YWxfYXBwcm92YWxfZGV0ZWN0ZWQ/OiBib29sZWFuXG4gIHdhcm5pbmdfbWVzc2FnZT86IHN0cmluZ1xuICBhdXRvX2FwcHJvdmVkPzogYm9vbGVhblxufVxuXG5leHBvcnQgdHlwZSBDaGF0TWVzc2FnZSA9IHtcbiAgaWQ6IHN0cmluZ1xuICBtZXNzYWdlOiBzdHJpbmdcbiAgZGF0ZTogRGF0ZVxuICBpc0Vycm9yPzogYm9vbGVhblxuICBpc19jYW5jZWxsZWQ/OiBib29sZWFuXG4gIGlzRnJvbnRlbmRDYW5jZWxsZWQ/OiBib29sZWFuXG4gIHVzZXI6IENoYXRNZXNzYWdlVXNlclxuICBwcm9qZWN0SWQ/OiBudW1iZXIgfCBzdHJpbmdcbiAgcHJvamVjdE5hbWU/OiBzdHJpbmdcbiAgY2xpZW50SWQ/OiBudW1iZXIgfCBzdHJpbmdcbiAgY2xpZW50TmFtZT86IHN0cmluZ1xuICBpc0NoYW5nZVByb2plY3Q/OiBib29sZWFuXG4gIHByb2plY3Q/OiBQcm9qZWN0XG4gIGFnZW50SWQ/OiBzdHJpbmdcbiAgb3B0aW9ucz86IHtcbiAgICBpZDogbnVtYmVyIHwgc3RyaW5nXG4gICAgbmFtZT86IHN0cmluZ1xuICB9W11cbiAgcm9sZT86IENoYXRIaXN0b3J5Um9sZVxuICBzb3VyY2VzPzogYW55XG4gIGF0dGFjaG1lbnRzPzogQXR0YWNobWVudEZpbGVbXVxuICB3YXNIZWxwZnVsPzogYm9vbGVhbiB8IG51bGxcbiAgbWVtb3J5U2Vzc2lvbklkPzogc3RyaW5nXG4gIHN1Z2dlc3Rpb25zPzogc3RyaW5nW10gfCBudWxsXG4gIC8qKiBUcmFzIGFwcm9iYXIgY3JlYXRlX2FnZW50OiBhY2Npb25lcyByw6FwaWRhcyBlbiBlbCBtZW5zYWplIGZpbmFsOyByZXF1aWVyZSBhZ2VudElkIGRldGVjdGFkbyBlbiBlbCB0ZXh0byAqL1xuICBjcmVhdGVBZ2VudEZvbGxvd1VwPzogeyBhZ2VudElkOiBzdHJpbmcgfSB8IG51bGxcbiAgYXBwcm92YWw/OiBBcHByb3ZhbFJlcXVlc3RcbiAgYXBwcm92YWxTdGF0dXM/OiAncGVuZGluZycgfCAnYXBwcm92ZWQnIHwgJ3JlamVjdGVkJ1xuICBwcm9qZWN0TWV0YWRhdGE/OiB7XG4gICAgaXNfZGVsZXRlZD86IGJvb2xlYW4gfCBudWxsXG4gIH1cbiAgLyoqXG4gICAqIEVudGlkYWRlcyBtZW5jaW9uYWRhcyBjb24gYEBgIGVuIEVTRSBtZW5zYWplIHB1bnR1YWwuIE5vIHNlIHByb3BhZ2EgYWxcbiAgICogY29udGV4dG8gZ2xvYmFsIG5pIGEgb3Ryb3MgdHVybm9zOyBzw7NsbyB2aXZlIGFjw6EgcGFyYSBxdWUgZWwgcmVuZGVyZXJcbiAgICogcHVlZGEgcGludGFyIGNoaXBzIHkgcGFyYSBtYW5kYXJsbyBhbCBvcmNoZXN0cmF0b3IgdsOtYSBtZXRhZGF0YS5cbiAgICovXG4gIGNvbnRleHRNZXNzYWdlPzogQ29udGV4dE1lc3NhZ2VcbiAgcmVhc29uaW5nPzogUmVhc29uaW5nVHJhY2UgfCBudWxsXG59XG5cbmV4cG9ydCB0eXBlIENoYXRNZXNzYWdlSXRlbSA9IHtcbiAgY2hhdElkOiBzdHJpbmdcbiAgY2hhdFN0YXR1czogc3RyaW5nXG4gIGxhc3RRdWVzdGlvbjogc3RyaW5nXG4gIGxhc3RRdWVzdGlvbkRhdGU6IHN0cmluZ1xuICBtZXNzYWdlSWQ6IHN0cmluZ1xuICBxQW5zd2VyczogbnVtYmVyXG4gIGdlbmVyYWxSYXRpbmc6IG51bWJlclxuICB1c2VySWQ6IHN0cmluZ1xufVxuXG5leHBvcnQgdHlwZSBDaGF0TWVzc2FnZUl0ZW1SZXNwb25zZSA9IHtcbiAgYWdlbnRfaWQ6IHN0cmluZ1xuICB1c2VyX2lkOiBzdHJpbmdcbiAgYW5zd2VyOiBzdHJpbmdcbiAgZGF0ZTogc3RyaW5nXG4gIHRpbWVzdGFtcDogc3RyaW5nXG4gIHF1ZXN0aW9uOiBzdHJpbmdcbiAgd2FzX2hlbHBmdWw6IGJvb2xlYW4gfCBudWxsXG4gIG1lc3NhZ2VfaWQ6IHN0cmluZ1xuICBtZW1vcnlfc2Vzc2lvbl9pZDogc3RyaW5nXG4gIHN1Z2dlc3Rpb25zPzogc3RyaW5nW10gfCBudWxsXG4gIHN1Z2dlc3RfcmVwbHk/OiBzdHJpbmdbXSB8IG51bGxcbiAgaXNfY2FuY2VsbGVkPzogYm9vbGVhblxuICByZWFzb25pbmc/OiBSZWFzb25pbmdUcmFjZVBheWxvYWQgfCBudWxsXG4gIHByb2plY3RfbWV0YWRhdGE/OiB7XG4gICAgaWQ6IG51bWJlciB8IHN0cmluZ1xuICAgIG5hbWU6IHN0cmluZ1xuICAgIGlzX2RlbGV0ZWQ/OiBib29sZWFuIHwgbnVsbFxuICB9XG4gIGNsaWVudF9tZXRhZGF0YT86IHtcbiAgICBpZDogbnVtYmVyIHwgc3RyaW5nXG4gICAgbmFtZTogc3RyaW5nXG4gIH1cbiAgdGFza19tZXRhZGF0YT86IHtcbiAgICBpZDogbnVtYmVyIHwgc3RyaW5nXG4gICAgbmFtZTogc3RyaW5nXG4gIH1cbiAgcHJvamVjdF9pZD86IG51bWJlclxuICBhdHRhY2htZW50cz86IEF0dGFjaG1lbnRGaWxlW11cbiAgc291cmNlcz86IHsgc291cmNlOiBzdHJpbmc7IHJlZmVyZW5jZTogc3RyaW5nIH1bXVxuICBzdGF0dXM/OiBzdHJpbmdcbiAgcGVuZGluZ19hcHByb3ZhbD86IEJhY2tlbmRQZW5kaW5nQXBwcm92YWxcbiAgdGhyZWFkX2lkPzogc3RyaW5nXG4gIC8qKiBTZXQgZGUgZW50aWRhZGVzIG1lbmNpb25hZGFzIGNvbiBgQGAgcXVlIGVsIHVzdWFyaW8gZW52acOzIGVuIGVzZSBtZW5zYWplICovXG4gIGNvbnRleHRfbWVzc2FnZT86IENvbnRleHRNZXNzYWdlXG59XG5cbmV4cG9ydCB0eXBlIENoYXRNZXNzYWdlc1Jlc3BvbnNlU2NoZW1hID0ge1xuICBpdGVtczogQ2hhdE1lc3NhZ2VJdGVtUmVzcG9uc2VbXVxuICBsYXN0X2V2YWx1YXRlZF9rZXk6IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENoYXRIaXN0b3J5IHtcbiAgY29udGVudDogc3RyaW5nXG4gIHJvbGU6IENoYXRIaXN0b3J5Um9sZVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIENoYXRJdGVtUmVzcG9uc2Uge1xuICBhZ2VudF9uYW1lOiBzdHJpbmdcbiAgYWdlbnRfaWQ6IG51bWJlclxuICBhZ2VudF90eXBlPzogc3RyaW5nXG4gIGVtb2ppOiBzdHJpbmcgfCBudWxsXG4gIGlkOiBudW1iZXJcbiAgbGFzdF9xdWVzdGlvbjogc3RyaW5nXG4gIGxhc3RfcXVlc3Rpb25fZGF0ZTogc3RyaW5nXG4gIHNlc3Npb25fZXh0ZXJuYWxfaWQ6IHN0cmluZ1xuICB0aXRsZTogc3RyaW5nIHwgbnVsbFxuICBpc19yZWFkPzogYm9vbGVhblxuICBhdHRhY2htZW50czogQXR0YWNobWVudEZpbGVbXVxuICBwcm9qZWN0X21ldGFkYXRhPzoge1xuICAgIGlkOiBudW1iZXIgfCBzdHJpbmdcbiAgICBuYW1lOiBzdHJpbmdcbiAgfVxuICBjbGllbnRfbWV0YWRhdGE/OiB7XG4gICAgaWQ6IG51bWJlclxuICAgIG5hbWU6IHN0cmluZ1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2hhdHNSZXNwb25zZVNjaGVtYSB7XG4gIGRhdGE6IENoYXRJdGVtUmVzcG9uc2VbXVxuICBoYXNfbW9yZTogYm9vbGVhblxuICBuZXh0X29mZnNldDogbnVtYmVyIHwgbnVsbFxuICB1bnJlYWRfY291bnQ/OiBudW1iZXJcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUYXNrSW5mbyB7XG4gIGlkOiBzdHJpbmdcbiAgdGl0bGU6IHN0cmluZ1xuICB1cmw6IHN0cmluZ1xuICBwcm9qZWN0TmFtZT86IHN0cmluZ1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTs7QUFxQ0EsV0FBWUEsZUFBZSwwQkFBZkEsZUFBZTtFQUFmQSxlQUFlO0VBQWZBLGVBQWU7RUFBQSxPQUFmQSxlQUFlO0FBQUE7O0FBMEIzQiIsImlnbm9yZUxpc3QiOltdfQ==
10
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDaGF0SGlzdG9yeVJvbGUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvQ2hhdC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgeyBSZWFjdE5vZGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB0eXBlIHsgUmVhc29uaW5nVHJhY2UsIFJlYXNvbmluZ1RyYWNlUGF5bG9hZCB9IGZyb20gJy4vcmVhc29uaW5nJ1xuaW1wb3J0IHR5cGUgeyBDb250ZXh0Q29tcGFjdGlvbiB9IGZyb20gJy4vY29udGV4dENvbXBhY3Rpb24nXG5pbXBvcnQgeyBQcm9qZWN0IH0gZnJvbSAnLi9Qcm9qZWN0J1xuaW1wb3J0IHsgQXR0YWNobWVudEZpbGUgfSBmcm9tICcuLi9jb21wb25lbnRzL21vbGVjdWxlcy9DaGF0Rm9vdGVyL0NoYXRGb290ZXInXG5pbXBvcnQgeyBDb250ZXh0TWVzc2FnZSB9IGZyb20gJy4vY29udGV4dE1lbnRpb24nXG5cbmV4cG9ydCB0eXBlIENoYXRJdGVtID0ge1xuICBjaGF0X2lkOiBzdHJpbmdcbiAgY2hhdF9zdGF0dXM6IHN0cmluZ1xuICBsYXN0X3F1ZXN0aW9uOiBzdHJpbmdcbiAgbGFzdF9xdWVzdGlvbl9kYXRlOiBzdHJpbmdcbiAgbWVzc2FnZV9pZDogc3RyaW5nXG4gIHFfYW5zd2VyczogbnVtYmVyXG4gIGdlbmVyYWxfcmF0aW5nOiBudW1iZXJcbiAgdXNlcl9pZDogc3RyaW5nXG59XG5cbmV4cG9ydCB0eXBlIENoYXRSZXNwb25zZSA9IHtcbiAgaXRlbXM6IENoYXRJdGVtW11cbiAgbGFzdF9ldmFsdWF0ZWRfa2V5OiBzdHJpbmdcbn1cblxuZXhwb3J0IHR5cGUgQ2hhdCA9IHtcbiAgaWQ6IHN0cmluZ1xuICB0aXRsZTogc3RyaW5nXG4gIGRhdGU6IERhdGVcbiAgYWdlbnRfdHlwZT86IHN0cmluZ1xufVxuXG5leHBvcnQgdHlwZSBDaGF0TWVzc2FnZVVzZXIgPSB7XG4gIGlkOiBzdHJpbmdcbiAgbmFtZTogc3RyaW5nXG4gIGF2YXRhcj86IHN0cmluZ1xuICBhdmF0YXJJY29uPzogUmVhY3ROb2RlXG59XG5cbmV4cG9ydCBlbnVtIENoYXRIaXN0b3J5Um9sZSB7XG4gIFVTRVIgPSAndXNlcicsXG4gIEFTU0lTVEFOVCA9ICdhc3Npc3RhbnQnLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBlbmRpbmdBY3Rpb24ge1xuICB0b29sX25hbWU6IHN0cmluZ1xuICB0b29sX2NhbGxfaWQ6IHN0cmluZ1xuICB0b29sX2FyZ3M6IFJlY29yZDxzdHJpbmcsIGFueT4gfCBhbnlbXVxuICB0aHJlYWRfaWQ6IHN0cmluZyAvLyBFYWNoIGFjdGlvbiBoYXMgaXRzIG93biB1bmlxdWUgdGhyZWFkX2lkXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXBwcm92YWxSZXF1ZXN0IHtcbiAgdHlwZTogJ2FwcHJvdmFsX3JlcXVpcmVkJ1xuICBwZW5kaW5nX2FjdGlvbnM6IFBlbmRpbmdBY3Rpb25bXVxuICB0b3RhbF9hY3Rpb25zOiBudW1iZXJcbiAgb3JpZ2luYWxfdGhyZWFkX2lkOiBzdHJpbmcgLy8gT3JpZ2luYWwgY2hlY2twb2ludCB0aHJlYWRfaWRcbiAgc2Vzc2lvbl9pZDogc3RyaW5nXG4gIG1ldGFkYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+XG4gIG1hbnVhbF9hcHByb3ZhbF9kZXRlY3RlZD86IGJvb2xlYW5cbiAgd2FybmluZ19tZXNzYWdlPzogc3RyaW5nXG4gIGF1dG9fYXBwcm92ZWQ/OiBib29sZWFuXG4gIGFwcHJvdmFsX3N0YXR1cz86ICdwZW5kaW5nJyB8ICdhcHByb3ZlZCdcbiAgcmVhc29uaW5nPzogUmVhc29uaW5nVHJhY2VQYXlsb2FkIHwgbnVsbFxufVxuXG4vLyBCYWNrZW5kIHBlbmRpbmdfYXBwcm92YWwgZm9ybWF0IChiZWZvcmUgdHJhbnNmb3JtYXRpb24pXG5leHBvcnQgaW50ZXJmYWNlIEJhY2tlbmRQZW5kaW5nQXBwcm92YWwge1xuICB0eXBlOiAnYXBwcm92YWxfcmVxdWlyZWQnXG4gIHRvb2xfY2FsbF9pZDogc3RyaW5nXG4gIHRvb2xfbmFtZT86IHN0cmluZ1xuICB0b29sX2FyZ3M/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgYW55W11cbiAgb3JpZ2luYWxfdGhyZWFkX2lkOiBzdHJpbmdcbiAgc2Vzc2lvbl9pZDogc3RyaW5nXG4gIG1ldGFkYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+XG4gIG1hbnVhbF9hcHByb3ZhbF9kZXRlY3RlZD86IGJvb2xlYW5cbiAgd2FybmluZ19tZXNzYWdlPzogc3RyaW5nXG4gIGF1dG9fYXBwcm92ZWQ/OiBib29sZWFuXG59XG5cbmV4cG9ydCB0eXBlIENoYXRNZXNzYWdlID0ge1xuICBpZDogc3RyaW5nXG4gIG1lc3NhZ2U6IHN0cmluZ1xuICBkYXRlOiBEYXRlXG4gIGlzRXJyb3I/OiBib29sZWFuXG4gIGlzX2NhbmNlbGxlZD86IGJvb2xlYW5cbiAgaXNGcm9udGVuZENhbmNlbGxlZD86IGJvb2xlYW5cbiAgdXNlcjogQ2hhdE1lc3NhZ2VVc2VyXG4gIHByb2plY3RJZD86IG51bWJlciB8IHN0cmluZ1xuICBwcm9qZWN0TmFtZT86IHN0cmluZ1xuICBjbGllbnRJZD86IG51bWJlciB8IHN0cmluZ1xuICBjbGllbnROYW1lPzogc3RyaW5nXG4gIGlzQ2hhbmdlUHJvamVjdD86IGJvb2xlYW5cbiAgcHJvamVjdD86IFByb2plY3RcbiAgYWdlbnRJZD86IHN0cmluZ1xuICBvcHRpb25zPzoge1xuICAgIGlkOiBudW1iZXIgfCBzdHJpbmdcbiAgICBuYW1lPzogc3RyaW5nXG4gIH1bXVxuICByb2xlPzogQ2hhdEhpc3RvcnlSb2xlXG4gIHNvdXJjZXM/OiBhbnlcbiAgYXR0YWNobWVudHM/OiBBdHRhY2htZW50RmlsZVtdXG4gIHdhc0hlbHBmdWw/OiBib29sZWFuIHwgbnVsbFxuICBtZW1vcnlTZXNzaW9uSWQ/OiBzdHJpbmdcbiAgc3VnZ2VzdGlvbnM/OiBzdHJpbmdbXSB8IG51bGxcbiAgLyoqIFRyYXMgYXByb2JhciBjcmVhdGVfYWdlbnQ6IGFjY2lvbmVzIHLDoXBpZGFzIGVuIGVsIG1lbnNhamUgZmluYWw7IHJlcXVpZXJlIGFnZW50SWQgZGV0ZWN0YWRvIGVuIGVsIHRleHRvICovXG4gIGNyZWF0ZUFnZW50Rm9sbG93VXA/OiB7IGFnZW50SWQ6IHN0cmluZyB9IHwgbnVsbFxuICBhcHByb3ZhbD86IEFwcHJvdmFsUmVxdWVzdFxuICBhcHByb3ZhbFN0YXR1cz86ICdwZW5kaW5nJyB8ICdhcHByb3ZlZCcgfCAncmVqZWN0ZWQnXG4gIHByb2plY3RNZXRhZGF0YT86IHtcbiAgICBpc19kZWxldGVkPzogYm9vbGVhbiB8IG51bGxcbiAgfVxuICAvKipcbiAgICogRW50aWRhZGVzIG1lbmNpb25hZGFzIGNvbiBgQGAgZW4gRVNFIG1lbnNhamUgcHVudHVhbC4gTm8gc2UgcHJvcGFnYSBhbFxuICAgKiBjb250ZXh0byBnbG9iYWwgbmkgYSBvdHJvcyB0dXJub3M7IHPDs2xvIHZpdmUgYWPDoSBwYXJhIHF1ZSBlbCByZW5kZXJlclxuICAgKiBwdWVkYSBwaW50YXIgY2hpcHMgeSBwYXJhIG1hbmRhcmxvIGFsIG9yY2hlc3RyYXRvciB2w61hIG1ldGFkYXRhLlxuICAgKi9cbiAgY29udGV4dE1lc3NhZ2U/OiBDb250ZXh0TWVzc2FnZVxuICByZWFzb25pbmc/OiBSZWFzb25pbmdUcmFjZSB8IG51bGxcbiAgLyoqIENvbXBhY3RhY2nDs24gZGUgZXN0ZSB0dXJubywgcGVyc2lzdGlkYS4gRWwgc3RvcmUgZW4gdml2byBwaXNhIGVzdG8gbWllbnRyYXMgc3RyZW1lYS4gKi9cbiAgY29tcGFjdGlvbj86IENvbnRleHRDb21wYWN0aW9uIHwgbnVsbFxufVxuXG5leHBvcnQgdHlwZSBDaGF0TWVzc2FnZUl0ZW0gPSB7XG4gIGNoYXRJZDogc3RyaW5nXG4gIGNoYXRTdGF0dXM6IHN0cmluZ1xuICBsYXN0UXVlc3Rpb246IHN0cmluZ1xuICBsYXN0UXVlc3Rpb25EYXRlOiBzdHJpbmdcbiAgbWVzc2FnZUlkOiBzdHJpbmdcbiAgcUFuc3dlcnM6IG51bWJlclxuICBnZW5lcmFsUmF0aW5nOiBudW1iZXJcbiAgdXNlcklkOiBzdHJpbmdcbn1cblxuZXhwb3J0IHR5cGUgQ2hhdE1lc3NhZ2VJdGVtUmVzcG9uc2UgPSB7XG4gIGFnZW50X2lkOiBzdHJpbmdcbiAgdXNlcl9pZDogc3RyaW5nXG4gIGFuc3dlcjogc3RyaW5nXG4gIGRhdGU6IHN0cmluZ1xuICB0aW1lc3RhbXA6IHN0cmluZ1xuICBxdWVzdGlvbjogc3RyaW5nXG4gIHdhc19oZWxwZnVsOiBib29sZWFuIHwgbnVsbFxuICBtZXNzYWdlX2lkOiBzdHJpbmdcbiAgbWVtb3J5X3Nlc3Npb25faWQ6IHN0cmluZ1xuICBzdWdnZXN0aW9ucz86IHN0cmluZ1tdIHwgbnVsbFxuICBzdWdnZXN0X3JlcGx5Pzogc3RyaW5nW10gfCBudWxsXG4gIGlzX2NhbmNlbGxlZD86IGJvb2xlYW5cbiAgcmVhc29uaW5nPzogUmVhc29uaW5nVHJhY2VQYXlsb2FkIHwgbnVsbFxuICBwcm9qZWN0X21ldGFkYXRhPzoge1xuICAgIGlkOiBudW1iZXIgfCBzdHJpbmdcbiAgICBuYW1lOiBzdHJpbmdcbiAgICBpc19kZWxldGVkPzogYm9vbGVhbiB8IG51bGxcbiAgfVxuICBjbGllbnRfbWV0YWRhdGE/OiB7XG4gICAgaWQ6IG51bWJlciB8IHN0cmluZ1xuICAgIG5hbWU6IHN0cmluZ1xuICB9XG4gIHRhc2tfbWV0YWRhdGE/OiB7XG4gICAgaWQ6IG51bWJlciB8IHN0cmluZ1xuICAgIG5hbWU6IHN0cmluZ1xuICB9XG4gIHByb2plY3RfaWQ/OiBudW1iZXJcbiAgYXR0YWNobWVudHM/OiBBdHRhY2htZW50RmlsZVtdXG4gIHNvdXJjZXM/OiB7IHNvdXJjZTogc3RyaW5nOyByZWZlcmVuY2U6IHN0cmluZyB9W11cbiAgc3RhdHVzPzogc3RyaW5nXG4gIHBlbmRpbmdfYXBwcm92YWw/OiBCYWNrZW5kUGVuZGluZ0FwcHJvdmFsXG4gIHRocmVhZF9pZD86IHN0cmluZ1xuICAvKiogU2V0IGRlIGVudGlkYWRlcyBtZW5jaW9uYWRhcyBjb24gYEBgIHF1ZSBlbCB1c3VhcmlvIGVudmnDsyBlbiBlc2UgbWVuc2FqZSAqL1xuICBjb250ZXh0X21lc3NhZ2U/OiBDb250ZXh0TWVzc2FnZVxufVxuXG5leHBvcnQgdHlwZSBDaGF0TWVzc2FnZXNSZXNwb25zZVNjaGVtYSA9IHtcbiAgaXRlbXM6IENoYXRNZXNzYWdlSXRlbVJlc3BvbnNlW11cbiAgbGFzdF9ldmFsdWF0ZWRfa2V5OiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDaGF0SGlzdG9yeSB7XG4gIGNvbnRlbnQ6IHN0cmluZ1xuICByb2xlOiBDaGF0SGlzdG9yeVJvbGVcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDaGF0SXRlbVJlc3BvbnNlIHtcbiAgYWdlbnRfbmFtZTogc3RyaW5nXG4gIGFnZW50X2lkOiBudW1iZXJcbiAgYWdlbnRfdHlwZT86IHN0cmluZ1xuICBlbW9qaTogc3RyaW5nIHwgbnVsbFxuICBpZDogbnVtYmVyXG4gIGxhc3RfcXVlc3Rpb246IHN0cmluZ1xuICBsYXN0X3F1ZXN0aW9uX2RhdGU6IHN0cmluZ1xuICBzZXNzaW9uX2V4dGVybmFsX2lkOiBzdHJpbmdcbiAgdGl0bGU6IHN0cmluZyB8IG51bGxcbiAgaXNfcmVhZD86IGJvb2xlYW5cbiAgYXR0YWNobWVudHM6IEF0dGFjaG1lbnRGaWxlW11cbiAgcHJvamVjdF9tZXRhZGF0YT86IHtcbiAgICBpZDogbnVtYmVyIHwgc3RyaW5nXG4gICAgbmFtZTogc3RyaW5nXG4gIH1cbiAgY2xpZW50X21ldGFkYXRhPzoge1xuICAgIGlkOiBudW1iZXJcbiAgICBuYW1lOiBzdHJpbmdcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIENoYXRzUmVzcG9uc2VTY2hlbWEge1xuICBkYXRhOiBDaGF0SXRlbVJlc3BvbnNlW11cbiAgaGFzX21vcmU6IGJvb2xlYW5cbiAgbmV4dF9vZmZzZXQ6IG51bWJlciB8IG51bGxcbiAgdW5yZWFkX2NvdW50PzogbnVtYmVyXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFza0luZm8ge1xuICBpZDogc3RyaW5nXG4gIHRpdGxlOiBzdHJpbmdcbiAgdXJsOiBzdHJpbmdcbiAgcHJvamVjdE5hbWU/OiBzdHJpbmdcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7O0FBc0NBLFdBQVlBLGVBQWUsMEJBQWZBLGVBQWU7RUFBZkEsZUFBZTtFQUFmQSxlQUFlO0VBQUEsT0FBZkEsZUFBZTtBQUFBOztBQTBCM0IiLCJpZ25vcmVMaXN0IjpbXX0=