@1money/component-ui 0.0.76 → 0.0.77

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (145) hide show
  1. package/es/components/ProForm/ProForm.d.ts +1 -1
  2. package/es/components/ProForm/ProForm.js +2 -3
  3. package/es/components/ProForm/ProFormDependency.d.ts +2 -1
  4. package/es/components/ProForm/ProFormDependency.js +1 -1
  5. package/es/components/ProForm/ProFormItem.d.ts +7 -2
  6. package/es/components/ProForm/ProFormItem.js +1 -1
  7. package/es/components/ProForm/ProFormList.d.ts +6 -1
  8. package/es/components/ProForm/ProFormList.js +13 -5
  9. package/es/components/ProForm/SchemaForm.d.ts +1 -1
  10. package/es/components/ProForm/SchemaForm.js +8 -5
  11. package/es/components/ProForm/context.d.ts +8 -7
  12. package/es/components/ProForm/context.js +1 -1
  13. package/es/components/ProForm/core/constants.d.ts +1 -1
  14. package/es/components/ProForm/core/constants.js +2 -2
  15. package/es/components/ProForm/core/formStore.d.ts +4 -4
  16. package/es/components/ProForm/core/formStore.js +1 -1
  17. package/es/components/ProForm/core/hooks/useForm.d.ts +1 -1
  18. package/es/components/ProForm/core/hooks/useForm.js +34 -9
  19. package/es/components/ProForm/core/hooks/useFormCore.d.ts +2 -2
  20. package/es/components/ProForm/core/hooks/useFormCore.js +17 -123
  21. package/es/components/ProForm/core/interface.d.ts +70 -91
  22. package/es/components/ProForm/core/namePathType.d.ts +25 -0
  23. package/es/components/ProForm/core/namePathType.js +2 -0
  24. package/es/components/ProForm/core/pathUtils.d.ts +5 -3
  25. package/es/components/ProForm/core/pathUtils.js +19 -1
  26. package/es/components/ProForm/core/runRules.d.ts +8 -17
  27. package/es/components/ProForm/core/runRules.js +22 -129
  28. package/es/components/ProForm/core/useFormItem.d.ts +1 -1
  29. package/es/components/ProForm/core/useFormItem.js +14 -66
  30. package/es/components/ProForm/core/validationError.d.ts +2 -2
  31. package/es/components/ProForm/core/validationError.js +1 -1
  32. package/es/components/ProForm/fields/ProFormCheckbox.d.ts +1 -1
  33. package/es/components/ProForm/fields/ProFormCheckboxGroup.d.ts +1 -1
  34. package/es/components/ProForm/fields/ProFormCheckboxGroup.js +1 -1
  35. package/es/components/ProForm/fields/ProFormDatePicker.d.ts +1 -1
  36. package/es/components/ProForm/fields/ProFormDatePicker.js +1 -1
  37. package/es/components/ProForm/fields/ProFormFieldSet.d.ts +7 -2
  38. package/es/components/ProForm/fields/ProFormFieldSet.js +5 -7
  39. package/es/components/ProForm/fields/ProFormPassword.d.ts +1 -1
  40. package/es/components/ProForm/fields/ProFormRadioGroup.d.ts +1 -1
  41. package/es/components/ProForm/fields/ProFormRadioGroup.js +1 -1
  42. package/es/components/ProForm/fields/ProFormSelect.d.ts +1 -1
  43. package/es/components/ProForm/fields/ProFormSelect.js +1 -1
  44. package/es/components/ProForm/fields/ProFormSlider.d.ts +1 -1
  45. package/es/components/ProForm/fields/ProFormSwitch.d.ts +1 -1
  46. package/es/components/ProForm/fields/ProFormText.d.ts +1 -1
  47. package/es/components/ProForm/fields/ProFormTextArea.d.ts +1 -1
  48. package/es/components/ProForm/fields/ProFormUpload.d.ts +1 -1
  49. package/es/components/ProForm/fields/ProFormUpload.js +1 -1
  50. package/es/components/ProForm/fields/createProFormField.d.ts +8 -2
  51. package/es/components/ProForm/fields/createProFormField.js +3 -3
  52. package/es/components/ProForm/hooks/useFieldRequest.d.ts +1 -1
  53. package/es/components/ProForm/hooks/useFieldRequest.js +1 -1
  54. package/es/components/ProForm/hooks/useUrlSync.d.ts +8 -7
  55. package/es/components/ProForm/hooks/useUrlSync.js +1 -1
  56. package/es/components/ProForm/index.d.ts +35 -26
  57. package/es/components/ProForm/index.js +1 -1
  58. package/es/components/ProForm/interface.d.ts +96 -91
  59. package/es/components/ProForm/layouts/DialogForm.d.ts +1 -1
  60. package/es/components/ProForm/layouts/DialogForm.js +1 -1
  61. package/es/components/ProForm/layouts/DrawerForm.d.ts +1 -1
  62. package/es/components/ProForm/layouts/DrawerForm.js +1 -1
  63. package/es/components/ProForm/layouts/QueryFilter.d.ts +1 -1
  64. package/es/components/ProForm/layouts/QueryFilter.js +1 -1
  65. package/es/components/ProForm/layouts/useOverlayForm.d.ts +2 -2
  66. package/es/components/ProForm/layouts/useOverlayForm.js +1 -1
  67. package/es/components/ProForm/utils.d.ts +8 -8
  68. package/es/components/ProForm/utils.js +1 -1
  69. package/es/index.css +1 -1
  70. package/es/index.d.ts +1 -1
  71. package/es/index.js +1 -1
  72. package/lib/components/ProForm/ProForm.d.ts +1 -1
  73. package/lib/components/ProForm/ProForm.js +2 -3
  74. package/lib/components/ProForm/ProFormDependency.d.ts +2 -1
  75. package/lib/components/ProForm/ProFormDependency.js +1 -1
  76. package/lib/components/ProForm/ProFormItem.d.ts +7 -2
  77. package/lib/components/ProForm/ProFormItem.js +1 -1
  78. package/lib/components/ProForm/ProFormList.d.ts +6 -1
  79. package/lib/components/ProForm/ProFormList.js +13 -5
  80. package/lib/components/ProForm/SchemaForm.d.ts +1 -1
  81. package/lib/components/ProForm/SchemaForm.js +8 -5
  82. package/lib/components/ProForm/context.d.ts +8 -7
  83. package/lib/components/ProForm/context.js +1 -1
  84. package/lib/components/ProForm/core/constants.d.ts +1 -1
  85. package/lib/components/ProForm/core/constants.js +2 -2
  86. package/lib/components/ProForm/core/formStore.d.ts +4 -4
  87. package/lib/components/ProForm/core/formStore.js +1 -1
  88. package/lib/components/ProForm/core/hooks/useForm.d.ts +1 -1
  89. package/lib/components/ProForm/core/hooks/useForm.js +34 -9
  90. package/lib/components/ProForm/core/hooks/useFormCore.d.ts +2 -2
  91. package/lib/components/ProForm/core/hooks/useFormCore.js +16 -122
  92. package/lib/components/ProForm/core/interface.d.ts +70 -91
  93. package/lib/components/ProForm/core/namePathType.d.ts +25 -0
  94. package/lib/components/ProForm/core/namePathType.js +6 -0
  95. package/lib/components/ProForm/core/pathUtils.d.ts +5 -3
  96. package/lib/components/ProForm/core/pathUtils.js +20 -1
  97. package/lib/components/ProForm/core/runRules.d.ts +8 -17
  98. package/lib/components/ProForm/core/runRules.js +22 -130
  99. package/lib/components/ProForm/core/useFormItem.d.ts +1 -1
  100. package/lib/components/ProForm/core/useFormItem.js +17 -69
  101. package/lib/components/ProForm/core/validationError.d.ts +2 -2
  102. package/lib/components/ProForm/core/validationError.js +1 -1
  103. package/lib/components/ProForm/fields/ProFormCheckbox.d.ts +1 -1
  104. package/lib/components/ProForm/fields/ProFormCheckboxGroup.d.ts +1 -1
  105. package/lib/components/ProForm/fields/ProFormCheckboxGroup.js +1 -1
  106. package/lib/components/ProForm/fields/ProFormDatePicker.d.ts +1 -1
  107. package/lib/components/ProForm/fields/ProFormDatePicker.js +1 -1
  108. package/lib/components/ProForm/fields/ProFormFieldSet.d.ts +7 -2
  109. package/lib/components/ProForm/fields/ProFormFieldSet.js +5 -7
  110. package/lib/components/ProForm/fields/ProFormPassword.d.ts +1 -1
  111. package/lib/components/ProForm/fields/ProFormRadioGroup.d.ts +1 -1
  112. package/lib/components/ProForm/fields/ProFormRadioGroup.js +1 -1
  113. package/lib/components/ProForm/fields/ProFormSelect.d.ts +1 -1
  114. package/lib/components/ProForm/fields/ProFormSelect.js +1 -1
  115. package/lib/components/ProForm/fields/ProFormSlider.d.ts +1 -1
  116. package/lib/components/ProForm/fields/ProFormSwitch.d.ts +1 -1
  117. package/lib/components/ProForm/fields/ProFormText.d.ts +1 -1
  118. package/lib/components/ProForm/fields/ProFormTextArea.d.ts +1 -1
  119. package/lib/components/ProForm/fields/ProFormUpload.d.ts +1 -1
  120. package/lib/components/ProForm/fields/ProFormUpload.js +1 -1
  121. package/lib/components/ProForm/fields/createProFormField.d.ts +8 -2
  122. package/lib/components/ProForm/fields/createProFormField.js +3 -3
  123. package/lib/components/ProForm/hooks/useFieldRequest.d.ts +1 -1
  124. package/lib/components/ProForm/hooks/useFieldRequest.js +1 -1
  125. package/lib/components/ProForm/hooks/useUrlSync.d.ts +8 -7
  126. package/lib/components/ProForm/hooks/useUrlSync.js +1 -1
  127. package/lib/components/ProForm/index.d.ts +35 -26
  128. package/lib/components/ProForm/index.js +1 -1
  129. package/lib/components/ProForm/interface.d.ts +96 -91
  130. package/lib/components/ProForm/layouts/DialogForm.d.ts +1 -1
  131. package/lib/components/ProForm/layouts/DialogForm.js +1 -1
  132. package/lib/components/ProForm/layouts/DrawerForm.d.ts +1 -1
  133. package/lib/components/ProForm/layouts/DrawerForm.js +1 -1
  134. package/lib/components/ProForm/layouts/QueryFilter.d.ts +1 -1
  135. package/lib/components/ProForm/layouts/QueryFilter.js +1 -1
  136. package/lib/components/ProForm/layouts/useOverlayForm.d.ts +2 -2
  137. package/lib/components/ProForm/layouts/useOverlayForm.js +1 -1
  138. package/lib/components/ProForm/utils.d.ts +8 -8
  139. package/lib/components/ProForm/utils.js +1 -1
  140. package/lib/index.css +1 -1
  141. package/lib/index.d.ts +1 -1
  142. package/lib/index.js +1 -1
  143. package/package.json +1 -1
  144. package/scripts/mcp-server/examples.generated.json +53 -17
  145. package/scripts/mcp-server/index.generated.json +1734 -160
@@ -33,9 +33,6 @@ var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, gene
33
33
  };
34
34
  import { resolveValue } from './pathUtils';
35
35
  import { devWarnOnce } from './devWarning';
36
- function isThenable(value) {
37
- return value !== null && _typeof(value) === 'object' && typeof value.then === 'function';
38
- }
39
36
  /** Empty for `required`: undefined / null / '' / empty array. */
40
37
  function isEmptyValue(value) {
41
38
  return value === undefined || value === null || value === '' || Array.isArray(value) && value.length === 0;
@@ -131,7 +128,7 @@ export function filterRulesByTrigger(rules, trigger, activeTriggers, fieldName)
131
128
  if (!matches && ruleTriggers.length > 0 && !ruleTriggers.some(function (t) {
132
129
  return activeTriggers.includes(t);
133
130
  })) {
134
- var name = fieldName !== null && fieldName !== void 0 ? fieldName : '(unknown)';
131
+ var name = fieldName !== null && fieldName !== void 0 ? fieldName : '(any)';
135
132
  devWarnOnce("trigger:".concat(name, ":").concat(ruleTriggers.join(',')), "[ProForm] Field \"".concat(name, "\": rule validateTrigger [").concat(ruleTriggers.join(', '), "] is outside this field's active trigger set [").concat(activeTriggers.join(', '), "] \u2014 the rule will only run on submit. Include it in the item/form validateTrigger to run it interactively."));
136
133
  }
137
134
  return matches;
@@ -401,72 +398,10 @@ function foldRuleResult(rule, result, state) {
401
398
  if (result.warning !== null && state.warning === null) state.warning = result.warning;
402
399
  return result.error;
403
400
  }
404
- /**
405
- * Evaluate ONE rule (transform → builtin checks → validator → deep rules)
406
- * synchronously. Promise-returning validators are deferred (see runRulesSync).
407
- */
408
- function evalRuleSync(rule, rawValue, name) {
409
- var prep = applyTransform(rule, rawValue);
410
- if (!prep.ok) return {
411
- error: prep.failure,
412
- warning: null
413
- };
414
- var value = prep.value;
415
- var failure = checkBuiltinRules(rule, value, name);
416
- if (failure === null && typeof rule.validator === 'function') {
417
- try {
418
- var result = rule.validator(rule, value);
419
- if (isThenable(result)) {
420
- result.then(function (resolved) {
421
- return warnLegacyValidatorReturn(name, resolved);
422
- }, function () {});
423
- } else {
424
- warnLegacyValidatorReturn(name, result);
425
- }
426
- } catch (err) {
427
- failure = resolveFailureMessage(err, rule);
428
- }
429
- }
430
- if (failure !== null) return {
431
- error: failure,
432
- warning: null
433
- };
434
- if ((rule.fields || rule.defaultField) && !isEmptyValue(value)) {
435
- // Deep rules need a container; a non-empty primitive fails the PARENT
436
- // (clear attribution) instead of producing confusing child errors.
437
- if (_typeof(value) !== 'object' || value === null) {
438
- return {
439
- error: rule.message || "".concat(name, " must be an object or an array"),
440
- warning: null
441
- };
442
- }
443
- var acc = {
444
- error: null,
445
- warning: null
446
- };
447
- var _iterator4 = _createForOfIteratorHelper(deepRuleEntries(rule, value, name)),
448
- _step4;
449
- try {
450
- for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
451
- var _step4$value = _slicedToArray(_step4.value, 3),
452
- subRule = _step4$value[0],
453
- subValue = _step4$value[1],
454
- subName = _step4$value[2];
455
- if (mergeSubResult(acc, subRule, evalRuleSync(subRule, subValue, subName))) break;
456
- }
457
- } catch (err) {
458
- _iterator4.e(err);
459
- } finally {
460
- _iterator4.f();
461
- }
462
- return acc;
463
- }
464
- return PASS;
465
- }
466
- /** Async counterpart of evalRuleSync — custom validators are awaited. */
401
+ /** Evaluate ONE rule (transform → builtin checks → validator → deep rules); custom validators are awaited. */
467
402
  function evalRuleAsync(rule, rawValue, name) {
468
403
  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
469
- var prep, value, failure, result, acc, _iterator5, _step5, _step5$value, subRule, subValue, subName, _t, _t2, _t3, _t4, _t5;
404
+ var prep, value, failure, result, acc, _iterator4, _step4, _step4$value, subRule, subValue, subName, _t, _t2, _t3, _t4, _t5;
470
405
  return _regeneratorRuntime.wrap(function (_context) {
471
406
  while (1) switch (_context.prev = _context.next) {
472
407
  case 0:
@@ -525,15 +460,15 @@ function evalRuleAsync(rule, rawValue, name) {
525
460
  error: null,
526
461
  warning: null
527
462
  };
528
- _iterator5 = _createForOfIteratorHelper(deepRuleEntries(rule, value, name));
463
+ _iterator4 = _createForOfIteratorHelper(deepRuleEntries(rule, value, name));
529
464
  _context.prev = 8;
530
- _iterator5.s();
465
+ _iterator4.s();
531
466
  case 9:
532
- if ((_step5 = _iterator5.n()).done) {
467
+ if ((_step4 = _iterator4.n()).done) {
533
468
  _context.next = 12;
534
469
  break;
535
470
  }
536
- _step5$value = _slicedToArray(_step5.value, 3), subRule = _step5$value[0], subValue = _step5$value[1], subName = _step5$value[2];
471
+ _step4$value = _slicedToArray(_step4.value, 3), subRule = _step4$value[0], subValue = _step4$value[1], subName = _step4$value[2];
537
472
  _t2 = mergeSubResult;
538
473
  _t3 = acc;
539
474
  _t4 = subRule;
@@ -554,10 +489,10 @@ function evalRuleAsync(rule, rawValue, name) {
554
489
  case 13:
555
490
  _context.prev = 13;
556
491
  _t5 = _context["catch"](8);
557
- _iterator5.e(_t5);
492
+ _iterator4.e(_t5);
558
493
  case 14:
559
494
  _context.prev = 14;
560
- _iterator5.f();
495
+ _iterator4.f();
561
496
  return _context.finish(14);
562
497
  case 15:
563
498
  return _context.abrupt("return", acc);
@@ -571,73 +506,31 @@ function evalRuleAsync(rule, rawValue, name) {
571
506
  }));
572
507
  }
573
508
  /**
574
- * Synchronous rule run. A Promise-returning validator CANNOT be evaluated
575
- * here it is deferred (treated as passing for this run; its rejection is
576
- * swallowed) and left to the async runs (blur/submit), which always await it.
577
- * Failing it instead would mis-report "Validation failed" on every keystroke
578
- * for perfectly valid input.
509
+ * Rule run. Custom validators are awaited (sync or async): resolving passes,
510
+ * rejecting/throwing fails. Return values are ignored.
579
511
  *
580
- * The per-rule try/catch is the engine's totality choke point: NO input —
581
- * including exotic values that break a builtin check — may escape as a throw;
582
- * every failure surfaces through the error/warning channels.
583
- */
584
- export function runRulesSync(name, value, values, rules, instance) {
585
- var state = {
586
- warning: null
587
- };
588
- var _iterator6 = _createForOfIteratorHelper(resolveRules(rules, values, instance)),
589
- _step6;
590
- try {
591
- for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
592
- var rule = _step6.value;
593
- var result = void 0;
594
- try {
595
- result = evalRuleSync(rule, value, name);
596
- } catch (err) {
597
- result = {
598
- error: resolveFailureMessage(err, rule),
599
- warning: null
600
- };
601
- }
602
- var error = foldRuleResult(rule, result, state);
603
- if (error !== null) return {
604
- error: error,
605
- warning: state.warning
606
- };
607
- }
608
- } catch (err) {
609
- _iterator6.e(err);
610
- } finally {
611
- _iterator6.f();
612
- }
613
- return {
614
- error: null,
615
- warning: state.warning
616
- };
617
- }
618
- /**
619
- * Asynchronous rule run. Custom validators are awaited (sync or async):
620
- * resolving passes, rejecting/throwing fails. Return values are ignored.
621
- * Shares the totality choke point with runRulesSync.
512
+ * The per-rule try/catch is the totality choke point: NO input — including
513
+ * exotic values that break a builtin check — may escape as a throw; every
514
+ * failure surfaces through the error/warning channels.
622
515
  */
623
516
  export function runRulesAsync(name, value, values, rules, instance) {
624
517
  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
625
- var state, _iterator7, _step7, rule, result, error, _t6, _t7;
518
+ var state, _iterator5, _step5, rule, result, error, _t6, _t7;
626
519
  return _regeneratorRuntime.wrap(function (_context2) {
627
520
  while (1) switch (_context2.prev = _context2.next) {
628
521
  case 0:
629
522
  state = {
630
523
  warning: null
631
524
  };
632
- _iterator7 = _createForOfIteratorHelper(resolveRules(rules, values, instance));
525
+ _iterator5 = _createForOfIteratorHelper(resolveRules(rules, values, instance));
633
526
  _context2.prev = 1;
634
- _iterator7.s();
527
+ _iterator5.s();
635
528
  case 2:
636
- if ((_step7 = _iterator7.n()).done) {
529
+ if ((_step5 = _iterator5.n()).done) {
637
530
  _context2.next = 8;
638
531
  break;
639
532
  }
640
- rule = _step7.value;
533
+ rule = _step5.value;
641
534
  result = void 0;
642
535
  _context2.prev = 3;
643
536
  _context2.next = 4;
@@ -672,10 +565,10 @@ export function runRulesAsync(name, value, values, rules, instance) {
672
565
  case 9:
673
566
  _context2.prev = 9;
674
567
  _t7 = _context2["catch"](1);
675
- _iterator7.e(_t7);
568
+ _iterator5.e(_t7);
676
569
  case 10:
677
570
  _context2.prev = 10;
678
- _iterator7.f();
571
+ _iterator5.f();
679
572
  return _context2.finish(10);
680
573
  case 11:
681
574
  return _context2.abrupt("return", {
@@ -689,4 +582,4 @@ export function runRulesAsync(name, value, values, rules, instance) {
689
582
  }, _callee2, null, [[1, 9, 10, 11], [3, 5]]);
690
583
  }));
691
584
  }
692
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9jb3JlL3J1blJ1bGVzLmpzIiwiY29tcG9uZW50cy9Qcm9Gb3JtL3NyYy9jb21wb25lbnRzL1Byb0Zvcm0vY29yZS9ydW5SdWxlcy50cyJdLCJuYW1lcyI6WyJfX2F3YWl0ZXIiLCJ0aGlzQXJnIiwiX2FyZ3VtZW50cyIsIlAiLCJnZW5lcmF0b3IiLCJhZG9wdCIsInZhbHVlIiwicmVzb2x2ZSIsIlByb21pc2UiLCJyZWplY3QiLCJmdWxmaWxsZWQiLCJzdGVwIiwibmV4dCIsImUiLCJyZWplY3RlZCIsInJlc3VsdCIsImRvbmUiLCJ0aGVuIiwiYXBwbHkiLCJyZXNvbHZlVmFsdWUiLCJkZXZXYXJuT25jZSIsImlzVGhlbmFibGUiLCJfdHlwZW9mIiwiaXNFbXB0eVZhbHVlIiwidW5kZWZpbmVkIiwiQXJyYXkiLCJpc0FycmF5IiwibGVuZ3RoIiwiY29lcmNlRmFpbHVyZVJlYXNvbiIsInJlYXNvbiIsIkVycm9yIiwibWVzc2FnZSIsInJlc29sdmVGYWlsdXJlTWVzc2FnZSIsInJ1bGUiLCJfYSIsInJlc29sdmVSdWxlcyIsInJ1bGVzIiwidmFsdWVzIiwiaW5zdGFuY2UiLCJzb21lIiwiY3R4IiwiT2JqZWN0IiwiYXNzaWduIiwiZ2V0RmllbGRWYWx1ZSIsIm5hbWUiLCJnZXRGaWVsZHNWYWx1ZSIsIm1hcCIsImVyciIsInZhbGlkYXRvciIsIm5vcm1hbGl6ZVRyaWdnZXJzIiwiaXRlbVRyaWdnZXIiLCJmb3JtVHJpZ2dlciIsImVmZmVjdGl2ZSIsImZpbHRlclJ1bGVzQnlUcmlnZ2VyIiwidHJpZ2dlciIsImFjdGl2ZVRyaWdnZXJzIiwiZmllbGROYW1lIiwiaW5jbHVkZXMiLCJmaWx0ZXIiLCJydWxlVHJpZ2dlciIsInZhbGlkYXRlVHJpZ2dlciIsInJ1bGVUcmlnZ2VycyIsIm1hdGNoZXMiLCJ0IiwiY29uY2F0Iiwiam9pbiIsIlRZUEVfQ0hFQ0tTIiwic3RyaW5nIiwidiIsIm51bWJlciIsIk51bWJlciIsImlzTmFOIiwiYm9vbGVhbiIsIm1ldGhvZCIsImludGVnZXIiLCJpc0ludGVnZXIiLCJmbG9hdCIsImFycmF5Iiwib2JqZWN0IiwiZGF0ZSIsIkRhdGUiLCJnZXRUaW1lIiwicmVnZXhwIiwiUmVnRXhwIiwiaGV4IiwidGVzdCIsImVtYWlsIiwidXJsIiwiVVJMIiwidHlwZUZhaWx1cmVNZXNzYWdlIiwidHlwZSIsIm1lYXN1cmVWYWx1ZSIsIm1lYXN1cmVkIiwidW5pdCIsImNoZWNrQnVpbHRpblJ1bGVzIiwicmVxdWlyZWQiLCJ3aGl0ZXNwYWNlIiwidHJpbSIsImxlbiIsIm0iLCJtaW4iLCJtYXgiLCJwYXR0ZXJuIiwiZ2xvYmFsIiwic3RpY2t5IiwibGFzdEluZGV4IiwidG9SdWxlQXJyYXkiLCJkZWVwTWVtYmVycyIsIm1lbWJlciIsImluZGV4IiwiU3RyaW5nIiwiZW50cmllcyIsIlBBU1MiLCJlcnJvciIsIndhcm5pbmciLCJ3YXJuTGVnYWN5VmFsaWRhdG9yUmV0dXJuIiwiYXBwbHlUcmFuc2Zvcm0iLCJyYXdWYWx1ZSIsInRyYW5zZm9ybSIsIm9rIiwiZmFpbHVyZSIsImRlZXBSdWxlRW50cmllcyIsImZpZWxkcyIsInNvdXJjZSIsIl9pIiwiX09iamVjdCRlbnRyaWVzIiwiX09iamVjdCRlbnRyaWVzJF9pIiwiX3NsaWNlZFRvQXJyYXkiLCJrZXkiLCJzdWJSdWxlcyIsIl9pdGVyYXRvciIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiX3N0ZXAiLCJzIiwibiIsInN1YlJ1bGUiLCJwdXNoIiwiZiIsImRlZmF1bHRGaWVsZCIsIl9pdGVyYXRvcjIiLCJfc3RlcDIiLCJfc3RlcDIkdmFsdWUiLCJfaXRlcmF0b3IzIiwiX3N0ZXAzIiwibWVyZ2VTdWJSZXN1bHQiLCJhY2MiLCJzdWIiLCJ3YXJuaW5nT25seSIsImZvbGRSdWxlUmVzdWx0Iiwic3RhdGUiLCJjb250ZW50IiwiZXZhbFJ1bGVTeW5jIiwicHJlcCIsInJlc29sdmVkIiwiX2l0ZXJhdG9yNCIsIl9zdGVwNCIsIl9zdGVwNCR2YWx1ZSIsInN1YlZhbHVlIiwic3ViTmFtZSIsImV2YWxSdWxlQXN5bmMiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwibWFyayIsIl9jYWxsZWUiLCJfaXRlcmF0b3I1IiwiX3N0ZXA1IiwiX3N0ZXA1JHZhbHVlIiwiX3QiLCJfdDIiLCJfdDMiLCJfdDQiLCJfdDUiLCJ3cmFwIiwiX2NvbnRleHQiLCJwcmV2IiwiYWJydXB0Iiwic2VudCIsImZpbmlzaCIsInN0b3AiLCJydW5SdWxlc1N5bmMiLCJfaXRlcmF0b3I2IiwiX3N0ZXA2IiwicnVuUnVsZXNBc3luYyIsIl9jYWxsZWUyIiwiX2l0ZXJhdG9yNyIsIl9zdGVwNyIsIl90NiIsIl90NyIsIl9jb250ZXh0MiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBSUEsU0FBUyxHQUFJLElBQUksSUFBSSxJQUFJLENBQUNBLFNBQVMsSUFBSyxVQUFVQyxPQUFPLEVBQUVDLFVBQVUsRUFBRUMsQ0FBQyxFQUFFQyxTQUFTLEVBQUU7RUFDckYsU0FBU0MsS0FBS0EsQ0FBQ0MsS0FBSyxFQUFFO0lBQUUsT0FBT0EsS0FBSyxZQUFZSCxDQUFDLEdBQUdHLEtBQUssR0FBRyxJQUFJSCxDQUFDLENBQUMsVUFBVUksT0FBTyxFQUFFO01BQUVBLE9BQU8sQ0FBQ0QsS0FBSyxDQUFDO0lBQUUsQ0FBQyxDQUFDO0VBQUU7RUFDM0csT0FBTyxLQUFLSCxDQUFDLEtBQUtBLENBQUMsR0FBR0ssT0FBTyxDQUFDLEVBQUUsVUFBVUQsT0FBTyxFQUFFRSxNQUFNLEVBQUU7SUFDdkQsU0FBU0MsU0FBU0EsQ0FBQ0osS0FBSyxFQUFFO01BQUUsSUFBSTtRQUFFSyxJQUFJLENBQUNQLFNBQVMsQ0FBQ1EsSUFBSSxDQUFDTixLQUFLLENBQUMsQ0FBQztNQUFFLENBQUMsQ0FBQyxPQUFPTyxDQUFDLEVBQUU7UUFBRUosTUFBTSxDQUFDSSxDQUFDLENBQUM7TUFBRTtJQUFFO0lBQzFGLFNBQVNDLFFBQVFBLENBQUNSLEtBQUssRUFBRTtNQUFFLElBQUk7UUFBRUssSUFBSSxDQUFDUCxTQUFT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VUFBTyxDQUFFO1FBQUE7VUFBQXlFLFNBQUEsQ0FBQS9LLElBQUE7VUFBQTtRQUFBO1VBQUErSyxTQUFBLENBQUEvSyxJQUFBO1VBQUE7UUFBQTtVQUFBK0ssU0FBQSxDQUFBZCxJQUFBO1VBQUFhLEdBQUEsR0FBQUMsU0FBQTtVQUFBSixVQUFBLENBQUExSyxDQUFBLENBQUE2SyxHQUFBO1FBQUE7VUFBQUMsU0FBQSxDQUFBZCxJQUFBO1VBQUFVLFVBQUEsQ0FBQTlDLENBQUE7VUFBQSxPQUFBa0QsU0FBQSxDQUFBWCxNQUFBO1FBQUE7VUFBQSxPQUFBVyxTQUFBLENBQUFiLE1BQUEsV0FFdkQ7WUFBRTdELEtBQUssRUFBRSxJQUFJO1lBQUVDLE9BQU8sRUFBRW1DLEtBQUssQ0FBQ25DO1VBQU8sQ0FBRTtRQUFBO1FBQUE7VUFBQSxPQUFBeUUsU0FBQSxDQUFBVixJQUFBO01BQUE7SUFBQSxHQUFBSyxRQUFBO0VBQUEsQ0FDL0MsRUFBQTtBRHRFRCIsImZpbGUiOiJjb21wb25lbnRzL1Byb0Zvcm0vY29yZS9ydW5SdWxlcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xuaW1wb3J0IHsgcmVzb2x2ZVZhbHVlIH0gZnJvbSAnLi9wYXRoVXRpbHMnO1xuaW1wb3J0IHsgZGV2V2Fybk9uY2UgfSBmcm9tICcuL2Rldldhcm5pbmcnO1xuZnVuY3Rpb24gaXNUaGVuYWJsZSh2YWx1ZSkge1xuICAgIHJldHVybiAodmFsdWUgIT09IG51bGwgJiZcbiAgICAgICAgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJlxuICAgICAgICB0eXBlb2YgdmFsdWUudGhlbiA9PT0gJ2Z1bmN0aW9uJyk7XG59XG4vKiogRW1wdHkgZm9yIGByZXF1aXJlZGA6IHVuZGVmaW5lZCAvIG51bGwgLyAnJyAvIGVtcHR5IGFycmF5LiAqL1xuZnVuY3Rpb24gaXNFbXB0eVZhbHVlKHZhbHVlKSB7XG4gICAgcmV0dXJuICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICAgIHZhbHVlID09PSBudWxsIHx8XG4gICAgICAgIHZhbHVlID09PSAnJyB8fFxuICAgICAgICAoQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoID09PSAwKSk7XG59XG4vKipcbiAqIENvZXJjZSBhIHRocm93bi9yZWplY3RlZCByZWFzb24gaW50byBkaXNwbGF5YWJsZSBmYWlsdXJlIGNvbnRlbnQ6XG4gKiBhIG5vbi1lbXB0eSBFcnJvci5tZXNzYWdlIG9yIGEgbm9uLWVtcHR5IHBsYWluIHN0cmluZyDigJQgb3RoZXJ3aXNlIG51bGxcbiAqIChjYWxsZXIgcGlja3MgaXRzIGZhbGxiYWNrKS4gU2hhcmVkIHdpdGggdGhlIGZvcm0tbGV2ZWwgbGFzdC1yZXNvcnQgbmV0cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvZXJjZUZhaWx1cmVSZWFzb24ocmVhc29uKSB7XG4gICAgaWYgKHJlYXNvbiBpbnN0YW5jZW9mIEVycm9yICYmIHJlYXNvbi5tZXNzYWdlKVxuICAgICAgICByZXR1cm4gcmVhc29uLm1lc3NhZ2U7XG4gICAgaWYgKHR5cGVvZiByZWFzb24gPT09ICdzdHJpbmcnICYmIHJlYXNvbilcbiAgICAgICAgcmV0dXJuIHJlYXNvbjtcbiAgICByZXR1cm4gbnVsbDtcbn1cbi8qKlxuICogRmFpbHVyZSBtZXNzYWdlIGZvciBhIHJlamVjdGVkL3Rocm93biBjdXN0b20gdmFsaWRhdG9yOlxuICogRXJyb3IubWVzc2FnZSDihpIgcGxhaW4gc3RyaW5nIHJlYXNvbiDihpIgcnVsZS5tZXNzYWdlIOKGkiBnZW5lcmljIGZhbGxiYWNrLlxuICovXG5mdW5jdGlvbiByZXNvbHZlRmFpbHVyZU1lc3NhZ2UocmVhc29uLCBydWxlKSB7XG4gICAgdmFyIF9hO1xuICAgIHJldHVybiAoX2EgPSBjb2VyY2VGYWlsdXJlUmVhc29uKHJlYXNvbikpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IChydWxlLm1lc3NhZ2UgfHwgJ1ZhbGlkYXRpb24gZmFpbGVkJyk7XG59XG4vKipcbiAqIFJlc29sdmUgZnVuY3Rpb24tZm9ybSBydWxlcyBpbnRvIHN0YXRpYyBydWxlcy4gVGhlXG4gKiBjb250ZXh0IGV4cG9zZXMgdGhlIHZhbHVlIHNuYXBzaG90IHRoZSBydW4gd2FzIGludm9rZWQgd2l0aDsgZnVuY3Rpb24gcnVsZXNcbiAqIG11c3QgYmUgY2hlYXAgYW5kIHNpZGUtZWZmZWN0IGZyZWUg4oCUIHRoZXkgbWF5IGJlIHJlc29sdmVkIG1vcmUgdGhhbiBvbmNlXG4gKiBwZXIgdmFsaWRhdGlvbiBwYXNzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZVJ1bGVzKHJ1bGVzLCB2YWx1ZXMsIGluc3RhbmNlKSB7XG4gICAgLy8gRmFzdCBwYXRoOiBubyBmdW5jdGlvbiBydWxlcyDihpIgbm90aGluZyB0byByZXNvbHZlLCBubyBjdHggYWxsb2NhdGlvbi5cbiAgICAvLyBUaGlzIGFsc28gbWFrZXMgdGhlIGVuZ2luZS1pbnRlcm5hbCByZS1yZXNvbHV0aW9uIG9mIGFscmVhZHktcmVzb2x2ZWRcbiAgICAvLyBhcnJheXMgZnJlZS5cbiAgICBpZiAoIXJ1bGVzLnNvbWUoKHJ1bGUpID0+IHR5cGVvZiBydWxlID09PSAnZnVuY3Rpb24nKSkge1xuICAgICAgICByZXR1cm4gcnVsZXM7XG4gICAgfVxuICAgIC8vIExpdmUtaW5zdGFuY2UgbWVtYmVycyAoc2V0RmllbGRzVmFsdWUsIGdldEZpZWxkRXJyb3IsIOKApikgYXJlIHNwcmVhZCBpblxuICAgIC8vIHdoZW4gYXZhaWxhYmxlOyB0aGUgcmVhZHMgYWx3YXlzIGNvbWUgZnJvbSB0aGUgdmFsaWRhdGlvbi10aW1lIHNuYXBzaG90LlxuICAgIGNvbnN0IGN0eCA9IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgaW5zdGFuY2UpLCB7IGdldEZpZWxkVmFsdWU6IChuYW1lKSA9PiByZXNvbHZlVmFsdWUodmFsdWVzLCBuYW1lKSwgZ2V0RmllbGRzVmFsdWU6ICgpID0+IHZhbHVlcyB9KTtcbiAgICByZXR1cm4gcnVsZXMubWFwKChydWxlKSA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgcnVsZSAhPT0gJ2Z1bmN0aW9uJylcbiAgICAgICAgICAgIHJldHVybiBydWxlO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIHJ1bGUoY3R4KTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAvLyBBIHRocm93aW5nIHJ1bGUgZmFjdG9yeSBtdXN0IG5vdCBjcmFzaCByZW5kZXJpbmcgb3IgdmFsaWRhdGlvbiDigJRcbiAgICAgICAgICAgIC8vIHN1cmZhY2UgaXQgYXMgYSBydWxlIHRoYXQgYWx3YXlzIGZhaWxzIHdpdGggdGhlIHRocm93biByZWFzb24uXG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHZhbGlkYXRvcjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9KTtcbn1cbi8qKlxuICogTm9ybWFsaXplIGEgZm9ybS9pdGVtLWxldmVsIHZhbGlkYXRlVHJpZ2dlciBjb25maWcgaW50byB0aGUgZWZmZWN0aXZlXG4gKiBpbnRlcmFjdGl2ZSBldmVudCBsaXN0OiBpdGVtLWxldmVsICh3aGVuIHByZXNlbnQpIG92ZXJyaWRlcyBmb3JtLWxldmVsO1xuICogYGZhbHNlYCBkaXNhYmxlcyBpbnRlcmFjdGl2ZSB2YWxpZGF0aW9uIGVudGlyZWx5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplVHJpZ2dlcnMoaXRlbVRyaWdnZXIsIGZvcm1UcmlnZ2VyKSB7XG4gICAgY29uc3QgZWZmZWN0aXZlID0gaXRlbVRyaWdnZXIgPT09IHVuZGVmaW5lZCA/IGZvcm1UcmlnZ2VyIDogaXRlbVRyaWdnZXI7XG4gICAgaWYgKGVmZmVjdGl2ZSA9PT0gZmFsc2UpXG4gICAgICAgIHJldHVybiBbXTtcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheShlZmZlY3RpdmUpID8gZWZmZWN0aXZlIDogW2VmZmVjdGl2ZV07XG59XG4vKipcbiAqIEZpbHRlciBydWxlcyBhcHBsaWNhYmxlIHRvIGFuIGludGVyYWN0aXZlIGV2ZW50OiB0aGUgZXZlbnRcbiAqIHZhbGlkYXRlcyBvbmx5IHdoZW4gaXQgaXMgaW4gdGhlIGl0ZW0ncyBlZmZlY3RpdmUgdHJpZ2dlciBzZXQuIFdpdGhpbiB0aGVcbiAqIHNldCwgYSBydWxlIFdJVEhPVVQgYHZhbGlkYXRlVHJpZ2dlcmAgcnVucyBvbiBldmVyeSBldmVudDsgYSBydWxlIFdJVEggb25lXG4gKiBydW5zIG9ubHkgb24gbWF0Y2hpbmcgZXZlbnRzIOKAlCBzbyBhIHJ1bGUgdHJpZ2dlciBvdXRzaWRlIHRoZSBpdGVtJ3Mgc2V0XG4gKiBuZXZlciBmaXJlcyBpbnRlcmFjdGl2ZWx5LiBTdWJtaXQtdGltZSB2YWxpZGF0aW9uIGJ5cGFzc2VzIHRoaXMgZmlsdGVyIGFuZFxuICogcnVucyBldmVyeSBydWxlLlxuICpcbiAqIERldiBndWFyZDogYSBydWxlIHdob3NlIChub24tZW1wdHkpIHRyaWdnZXIgc2V0IGlzIGZ1bGx5IE9VVFNJREUgdGhlXG4gKiBhY3RpdmUgc2V0IGNhbiBuZXZlciBmaXJlIGludGVyYWN0aXZlbHkg4oCUIHVzdWFsbHkgYSBsZWZ0b3ZlciBvZiB0aGVcbiAqIHByZS0wLjAuNzYgb3ZlcnJpZGUgc2VtYW50aWNzLCBzbyBpdCB3YXJucyBvbmNlLiBgdmFsaWRhdGVUcmlnZ2VyOiBbXWBcbiAqIGlzIHRoZSBkZWxpYmVyYXRlIHN1Ym1pdC1vbmx5IGlkaW9tIGFuZCBzdGF5cyBzaWxlbnQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXJSdWxlc0J5VHJpZ2dlcihydWxlcywgdHJpZ2dlciwgYWN0aXZlVHJpZ2dlcnMsIGZpZWxkTmFtZSkge1xuICAgIGlmICghYWN0aXZlVHJpZ2dlcnMuaW5jbHVkZXModHJpZ2dlcikpXG4gICAgICAgIHJldHVybiBbXTtcbiAgICByZXR1cm4gcnVsZXMuZmlsdGVyKChydWxlKSA9PiB7XG4gICAgICAgIGNvbnN0IHJ1bGVUcmlnZ2VyID0gcnVsZS52YWxpZGF0ZVRyaWdnZXI7XG4gICAgICAgIGlmIChydWxlVHJpZ2dlciA9PT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIGNvbnN0IHJ1bGVUcmlnZ2VycyA9IEFycmF5LmlzQXJyYXkocnVsZVRyaWdnZXIpID8gcnVsZVRyaWdnZXIgOiBbcnVsZVRyaWdnZXJdO1xuICAgICAgICBjb25zdCBtYXRjaGVzID0gcnVsZVRyaWdnZXJzLmluY2x1ZGVzKHRyaWdnZXIpO1xuICAgICAgICBpZiAoIW1hdGNoZXMgJiZcbiAgICAgICAgICAgIHJ1bGVUcmlnZ2Vycy5sZW5ndGggPiAwICYmXG4gICAgICAgICAgICAhcnVsZVRyaWdnZXJzLnNvbWUoKHQpID0+IGFjdGl2ZVRyaWdnZXJzLmluY2x1ZGVzKHQpKSkge1xuICAgICAgICAgICAgY29uc3QgbmFtZSA9IGZpZWxkTmFtZSAhPT0gbnVsbCAmJiBmaWVsZE5hbWUgIT09IHZvaWQgMCA/IGZpZWxkTmFtZSA6ICcodW5rbm93biknO1xuICAgICAgICAgICAgZGV2V2Fybk9uY2UoYHRyaWdnZXI6JHtuYW1lfToke3J1bGVUcmlnZ2Vycy5qb2luKCcsJyl9YCwgYFtQcm9Gb3JtXSBGaWVsZCBcIiR7bmFtZX1cIjogcnVsZSB2YWxpZGF0ZVRyaWdnZXIgWyR7cnVsZVRyaWdnZXJzLmpvaW4oJywgJyl9XSBpcyBvdXRzaWRlIHRoaXMgZmllbGQncyBhY3RpdmUgdHJpZ2dlciBzZXQgWyR7YWN0aXZlVHJpZ2dlcnMuam9pbignLCAnKX1dIOKAlCB0aGUgcnVsZSB3aWxsIG9ubHkgcnVuIG9uIHN1Ym1pdC4gSW5jbHVkZSBpdCBpbiB0aGUgaXRlbS9mb3JtIHZhbGlkYXRlVHJpZ2dlciB0byBydW4gaXQgaW50ZXJhY3RpdmVseS5gKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWF0Y2hlcztcbiAgICB9KTtcbn1cbi8qKiBCdWlsdC1pbiBgdHlwZWAgY2hlY2tzLiBgZW51bWAgaXMgaGFuZGxlZCBzZXBhcmF0ZWx5IGFnYWluc3QgYHJ1bGUuZW51bWAuICovXG5jb25zdCBUWVBFX0NIRUNLUyA9IHtcbiAgICBzdHJpbmc6ICh2KSA9PiB0eXBlb2YgdiA9PT0gJ3N0cmluZycsXG4gICAgbnVtYmVyOiAodikgPT4gdHlwZW9mIHYgPT09ICdudW1iZXInICYmICFOdW1iZXIuaXNOYU4odiksXG4gICAgYm9vbGVhbjogKHYpID0+IHR5cGVvZiB2ID09PSAnYm9vbGVhbicsXG4gICAgbWV0aG9kOiAodikgPT4gdHlwZW9mIHYgPT09ICdmdW5jdGlvbicsXG4gICAgaW50ZWdlcjogKHYpID0+IHR5cGVvZiB2ID09PSAnbnVtYmVyJyAmJiBOdW1iZXIuaXNJbnRlZ2VyKHYpLFxuICAgIGZsb2F0OiAodikgPT4gdHlwZW9mIHYgPT09ICdudW1iZXInICYmICFOdW1iZXIuaXNOYU4odikgJiYgIU51bWJlci5pc0ludGVnZXIodiksXG4gICAgYXJyYXk6ICh2KSA9PiBBcnJheS5pc0FycmF5KHYpLFxuICAgIG9iamVjdDogKHYpID0+IHR5cGVvZiB2ID09PSAnb2JqZWN0JyAmJiB2ICE9PSBudWxsICYmICFBcnJheS5pc0FycmF5KHYpLFxuICAgIGRhdGU6ICh2KSA9PiB2IGluc3RhbmNlb2YgRGF0ZVxuICAgICAgICA/ICFOdW1iZXIuaXNOYU4odi5nZXRUaW1lKCkpXG4gICAgICAgIDogdHlwZW9mICh2ID09PSBudWxsIHx8IHYgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHYuZ2V0VGltZSkgPT09ICdmdW5jdGlvbicgJiZcbiAgICAgICAgICAgICFOdW1iZXIuaXNOYU4odi5nZXRUaW1lKCkpLFxuICAgIHJlZ2V4cDogKHYpID0+IHtcbiAgICAgICAgaWYgKHYgaW5zdGFuY2VvZiBSZWdFeHApXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgaWYgKHR5cGVvZiB2ICE9PSAnc3RyaW5nJylcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIG5ldyBSZWdFeHAodik7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoX2EpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgaGV4OiAodikgPT4gdHlwZW9mIHYgPT09ICdzdHJpbmcnICYmIC9eIz8oW2EtZjAtOV17Nn18W2EtZjAtOV17M30pJC9pLnRlc3QodiksXG4gICAgLy8gU3RyaW5nLW9ubHk6IGNvZXJjaW5nIHZpYSBTdHJpbmcoKSB3b3VsZCBsZXQgZS5nLiBbJ2FAYi5jbyddIHN0cmluZ2lmeVxuICAgIC8vIGludG8gYSBwYXNzaW5nIHZhbHVlLlxuICAgIGVtYWlsOiAodikgPT4gdHlwZW9mIHYgPT09ICdzdHJpbmcnICYmIC9eW15cXHNAXStAW15cXHNAXStcXC5bXlxcc0BdKyQvLnRlc3QodiksXG4gICAgdXJsOiAodikgPT4ge1xuICAgICAgICBpZiAodHlwZW9mIHYgIT09ICdzdHJpbmcnKVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgbmV3IFVSTCh2KTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChfYSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfSxcbn07XG4vKiogRnJpZW5kbHkgZ2VuZXJhdGVkIG1lc3NhZ2VzIGZvciB0aGUgbGVnYWN5IHR5cGUgbmFtZXM7IG90aGVycyBnZXQgYSBnZW5lcmljIG9uZS4gKi9cbmZ1bmN0aW9uIHR5cGVGYWlsdXJlTWVzc2FnZShuYW1lLCB0eXBlKSB7XG4gICAgaWYgKHR5cGUgPT09ICdudW1iZXInKVxuICAgICAgICByZXR1cm4gYCR7bmFtZX0gbXVzdCBiZSBhIG51bWJlcmA7XG4gICAgaWYgKHR5cGUgPT09ICdlbWFpbCcpXG4gICAgICAgIHJldHVybiBgJHtuYW1lfSBtdXN0IGJlIGEgdmFsaWQgZW1haWxgO1xuICAgIGlmICh0eXBlID09PSAndXJsJylcbiAgICAgICAgcmV0dXJuIGAke25hbWV9IG11c3QgYmUgYSB2YWxpZCBVUkxgO1xuICAgIHJldHVybiBgJHtuYW1lfSBpcyBub3QgYSB2YWxpZCAke3R5cGV9YDtcbn1cbi8qKiBNZWFzdXJlIGEgdmFsdWUgZm9yIGxlbi9taW4vbWF4OiBzdHJpbmcg4oaSIGxlbmd0aCwgYXJyYXkg4oaSIGNvdW50LCBudW1iZXIg4oaSIHZhbHVlLiAqL1xuZnVuY3Rpb24gbWVhc3VyZVZhbHVlKHZhbHVlKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpXG4gICAgICAgIHJldHVybiB7IG1lYXN1cmVkOiB2YWx1ZS5sZW5ndGgsIHVuaXQ6ICcgY2hhcmFjdGVycycgfTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpXG4gICAgICAgIHJldHVybiB7IG1lYXN1cmVkOiB2YWx1ZS5sZW5ndGgsIHVuaXQ6ICcgaXRlbXMnIH07XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgJiYgIU51bWJlci5pc05hTih2YWx1ZSkpXG4gICAgICAgIHJldHVybiB7IG1lYXN1cmVkOiB2YWx1ZSwgdW5pdDogJycgfTtcbiAgICByZXR1cm4gbnVsbDtcbn1cbi8qKlxuICogRXZhbHVhdGUgZXZlcnkgYnVpbHQtaW4gKG5vbi1gdmFsaWRhdG9yYCkgcnVsZSBraW5kIGZvciBhIHNpbmdsZSBydWxlLlxuICogUmV0dXJucyB0aGUgZXJyb3IgY29udGVudCBmb3IgdGhlIGZpcnN0IGZhaWxpbmcgY2hlY2ssIG9yIG51bGwuXG4gKlxuICogRW1wdHkgdmFsdWVzICh1bmRlZmluZWQgLyBudWxsIC8gJycgLyBlbXB0eSBhcnJheSkgYXJlIG9ubHkgY2hlY2tlZCBieVxuICogYHJlcXVpcmVkYCDigJQgZXZlcnkgb3RoZXIgYnVpbHRpbiBjaGVjayBpcyBza2lwcGVkLCBzbyBvcHRpb25hbCBmaWVsZHNcbiAqIGRvbid0IGVycm9yIHVudGlsIHRoZXkgaGF2ZSBjb250ZW50LiBDdXN0b20gdmFsaWRhdG9ycyBhcmUgTk9UIHN1YmplY3QgdG9cbiAqIHRoaXMgc2tpcCAodGhleSByZWNlaXZlIHRoZSBlbXB0eSB2YWx1ZSBhbmQgZGVjaWRlIHRoZW1zZWx2ZXMpLlxuICovXG5mdW5jdGlvbiBjaGVja0J1aWx0aW5SdWxlcyhydWxlLCB2YWx1ZSwgbmFtZSkge1xuICAgIGlmIChydWxlLnJlcXVpcmVkICYmIGlzRW1wdHlWYWx1ZSh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIHJ1bGUubWVzc2FnZSB8fCBgJHtuYW1lfSBpcyByZXF1aXJlZGA7XG4gICAgfVxuICAgIGlmIChpc0VtcHR5VmFsdWUodmFsdWUpKVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAvLyBOb24tZW1wdHkgc3RyaW5nIG9mIG9ubHkgd2hpdGVzcGFjZSAodGhlIHJlcXVpcmVkK3doaXRlc3BhY2UgdHJpbSBpZGlvbSkuXG4gICAgaWYgKHJ1bGUud2hpdGVzcGFjZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHZhbHVlLnRyaW0oKSA9PT0gJycpIHtcbiAgICAgICAgcmV0dXJuIHJ1bGUubWVzc2FnZSB8fCBgJHtuYW1lfSBjYW5ub3QgYmUgYmxhbmtgO1xuICAgIH1cbiAgICAvLyBsZW46IGV4YWN0IGxlbmd0aC9jb3VudC92YWx1ZSDigJQgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIG1pbi9tYXguXG4gICAgaWYgKHJ1bGUubGVuICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc3QgbSA9IG1lYXN1cmVWYWx1ZSh2YWx1ZSk7XG4gICAgICAgIGlmIChtICE9PSBudWxsICYmIG0ubWVhc3VyZWQgIT09IHJ1bGUubGVuKSB7XG4gICAgICAgICAgICByZXR1cm4gcnVsZS5tZXNzYWdlIHx8IGAke25hbWV9IG11c3QgYmUgZXhhY3RseSAke3J1bGUubGVufSR7bS51bml0fWA7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZWxzZSBpZiAocnVsZS5taW4gIT09IHVuZGVmaW5lZCB8fCBydWxlLm1heCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbnN0IG0gPSBtZWFzdXJlVmFsdWUodmFsdWUpO1xuICAgICAgICBpZiAobSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgaWYgKHJ1bGUubWluICE9PSB1bmRlZmluZWQgJiYgbS5tZWFzdXJlZCA8IHJ1bGUubWluKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJ1bGUubWVzc2FnZSB8fCBgJHtuYW1lfSBtdXN0IGJlIGF0IGxlYXN0ICR7cnVsZS5taW59JHttLnVuaXR9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChydWxlLm1heCAhPT0gdW5kZWZpbmVkICYmIG0ubWVhc3VyZWQgPiBydWxlLm1heCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBydWxlLm1lc3NhZ2UgfHwgYCR7bmFtZX0gbXVzdCBiZSBubyBtb3JlIHRoYW4gJHtydWxlLm1heH0ke20udW5pdH1gO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChydWxlLnBhdHRlcm4gJiYgdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICAvLyBBIC9nIG9yIC95IHJlZ2V4IGlzIHN0YXRlZnVsOiBsYXN0SW5kZXggcGVyc2lzdHMgYWNyb3NzIC50ZXN0KCkgY2FsbHMsXG4gICAgICAgIC8vIHNvIHJlcGVhdGVkIHJ1bnMgd291bGQgYWx0ZXJuYXRlIHBhc3MvZmFpbCDigJQgcmVzZXQgaXQgZXZlcnkgcnVuLlxuICAgICAgICBpZiAocnVsZS5wYXR0ZXJuLmdsb2JhbCB8fCBydWxlLnBhdHRlcm4uc3RpY2t5KVxuICAgICAgICAgICAgcnVsZS5wYXR0ZXJuLmxhc3RJbmRleCA9IDA7XG4gICAgICAgIGlmICghcnVsZS5wYXR0ZXJuLnRlc3QodmFsdWUpKSB7XG4gICAgICAgICAgICByZXR1cm4gcnVsZS5tZXNzYWdlIHx8IGAke25hbWV9IGZvcm1hdCBpcyBpbnZhbGlkYDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAocnVsZS50eXBlICYmIHJ1bGUudHlwZSAhPT0gJ2VudW0nICYmICFUWVBFX0NIRUNLU1tydWxlLnR5cGVdKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gcnVsZS5tZXNzYWdlIHx8IHR5cGVGYWlsdXJlTWVzc2FnZShuYW1lLCBydWxlLnR5cGUpO1xuICAgIH1cbiAgICAvLyBlbnVtIG1lbWJlcnNoaXA6IGFwcGxpZXMgZm9yIHR5cGUgJ2VudW0nIG9yIHdoZW5ldmVyIHJ1bGUuZW51bSBpcyBwcmVzZW50LlxuICAgIGlmIChydWxlLmVudW0gJiYgQXJyYXkuaXNBcnJheShydWxlLmVudW0pICYmICFydWxlLmVudW0uaW5jbHVkZXModmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBydWxlLm1lc3NhZ2UgfHwgYCR7bmFtZX0gbXVzdCBiZSBvbmUgb2YgJHtydWxlLmVudW0uam9pbignLCAnKX1gO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbn1cbmZ1bmN0aW9uIHRvUnVsZUFycmF5KHJ1bGVzKSB7XG4gICAgaWYgKCFydWxlcylcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KHJ1bGVzKSA/IHJ1bGVzIDogW3J1bGVzXTtcbn1cbi8qKiBNZW1iZXJzIGZvciBkZWVwIHJ1bGVzOiBhcnJheSDihpIgaW5kZXhlZCBlbnRyaWVzLCBwbGFpbiBvYmplY3Qg4oaSIGtleSBlbnRyaWVzLiAqL1xuZnVuY3Rpb24gZGVlcE1lbWJlcnModmFsdWUpIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpXG4gICAgICAgIHJldHVybiB2YWx1ZS5tYXAoKG1lbWJlciwgaW5kZXgpID0+IFtTdHJpbmcoaW5kZXgpLCBtZW1iZXJdKTtcbiAgICBpZiAodmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JylcbiAgICAgICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHZhbHVlKTtcbiAgICByZXR1cm4gW107XG59XG5jb25zdCBQQVNTID0geyBlcnJvcjogbnVsbCwgd2FybmluZzogbnVsbCB9O1xuLyoqXG4gKiBEZXYgZ3VhcmQgZm9yIHRoZSBwcmUtMC4wLjc2IHZhbGlkYXRvciBjb250cmFjdDogcmV0dXJuaW5nIGEgc3RyaW5nIG9yXG4gKiBgZmFsc2VgIHVzZWQgdG8gRkFJTCB0aGUgcnVsZSDigJQgdW5kZXIgdGhlIGAocnVsZSwgdmFsdWUpYCBjb250cmFjdCByZXR1cm5cbiAqIHZhbHVlcyBhcmUgaWdub3JlZCBhbmQgb25seSB0aHJvdy9yZWplY3QgZmFpbHMuIFN1Y2ggYSByZXR1cm4gaXMgYWxtb3N0XG4gKiBjZXJ0YWlubHkgYSBsZWdhY3kgdmFsaWRhdG9yIHNpbGVudGx5IHBhc3NpbmcsIHNvIGl0IHdhcm5zIG9uY2UuXG4gKi9cbmZ1bmN0aW9uIHdhcm5MZWdhY3lWYWxpZGF0b3JSZXR1cm4obmFtZSwgcmVzdWx0KSB7XG4gICAgaWYgKHR5cGVvZiByZXN1bHQgIT09ICdzdHJpbmcnICYmIHJlc3VsdCAhPT0gZmFsc2UpXG4gICAgICAgIHJldHVybjtcbiAgICBkZXZXYXJuT25jZShgdmFsaWRhdG9yLXJldHVybjoke25hbWV9YCwgYFtQcm9Gb3JtXSBGaWVsZCBcIiR7bmFtZX1cIjogYSBjdXN0b20gdmFsaWRhdG9yIHJldHVybmVkICR7dHlwZW9mIHJlc3VsdCA9PT0gJ3N0cmluZycgPyAnYSBzdHJpbmcnIDogJ2ZhbHNlJ30g4oCUIHJldHVybiB2YWx1ZXMgYXJlIElHTk9SRUQ7IHZhbGlkYXRvcnMgZmFpbCBieSB0aHJvd2luZyBvciByZWplY3RpbmcgKGEgdGhyb3duIEVycm9yJ3MgbWVzc2FnZSBiZWNvbWVzIHRoZSBmaWVsZCBlcnJvcikuYCk7XG59XG4vKiogUnVuIGEgcnVsZSdzIHRyYW5zZm9ybSwgY29udGFpbmluZyB0aHJvd3MgYXMgYSBydWxlIGZhaWx1cmUuICovXG5mdW5jdGlvbiBhcHBseVRyYW5zZm9ybShydWxlLCByYXdWYWx1ZSkge1xuICAgIGlmICh0eXBlb2YgcnVsZS50cmFuc2Zvcm0gIT09ICdmdW5jdGlvbicpXG4gICAgICAgIHJldHVybiB7IG9rOiB0cnVlLCB2YWx1ZTogcmF3VmFsdWUgfTtcbiAgICB0cnkge1xuICAgICAgICByZXR1cm4geyBvazogdHJ1ZSwgdmFsdWU6IHJ1bGUudHJhbnNmb3JtKHJhd1ZhbHVlKSB9O1xuICAgIH1cbiAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgIHJldHVybiB7IG9rOiBmYWxzZSwgZmFpbHVyZTogcmVzb2x2ZUZhaWx1cmVNZXNzYWdlKGVyciwgcnVsZSkgfTtcbiAgICB9XG59XG4vKipcbiAqIEZsYXR0ZW4gYSBydWxlJ3MgZGVlcCBzb3VyY2VzIChgZmllbGRzYCBwZXIga2V5LCB0aGVuIGBkZWZhdWx0RmllbGRgIHBlclxuICogbWVtYmVyKSBpbnRvIFtzdWJSdWxlLCBtZW1iZXJWYWx1ZSwgbWVtYmVyTmFtZV0gdHVwbGVzIOKAlCB0aGUgc2luZ2xlIHBsYWNlXG4gKiB0aGF0IGtub3dzIGhvdyBkZWVwIHJ1bGVzIG1hcCBvbnRvIGEgY29udGFpbmVyIHZhbHVlLlxuICovXG5mdW5jdGlvbiBkZWVwUnVsZUVudHJpZXMocnVsZSwgdmFsdWUsIG5hbWUpIHtcbiAgICBjb25zdCBlbnRyaWVzID0gW107XG4gICAgaWYgKHJ1bGUuZmllbGRzKSB7XG4gICAgICAgIGNvbnN0IHNvdXJjZSA9IHZhbHVlO1xuICAgICAgICBmb3IgKGNvbnN0IFtrZXksIHN1YlJ1bGVzXSBvZiBPYmplY3QuZW50cmllcyhydWxlLmZpZWxkcykpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3Qgc3ViUnVsZSBvZiB0b1J1bGVBcnJheShzdWJSdWxlcykpIHtcbiAgICAgICAgICAgICAgICBlbnRyaWVzLnB1c2goW3N1YlJ1bGUsIHNvdXJjZVtrZXldLCBgJHtuYW1lfS4ke2tleX1gXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKHJ1bGUuZGVmYXVsdEZpZWxkKSB7XG4gICAgICAgIGZvciAoY29uc3QgW2tleSwgbWVtYmVyXSBvZiBkZWVwTWVtYmVycyh2YWx1ZSkpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3Qgc3ViUnVsZSBvZiB0b1J1bGVBcnJheShydWxlLmRlZmF1bHRGaWVsZCkpIHtcbiAgICAgICAgICAgICAgICBlbnRyaWVzLnB1c2goW3N1YlJ1bGUsIG1lbWJlciwgYCR7bmFtZX0uJHtrZXl9YF0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBlbnRyaWVzO1xufVxuLyoqXG4gKiBNZXJnZSBhIHN1Yi1ydWxlJ3Mgb3V0Y29tZSBpbnRvIHRoZSBwYXJlbnQncyBjaGFubmVscy4gQSBzdWItcnVsZSBmbGFnZ2VkXG4gKiBgd2FybmluZ09ubHlgIGNvbnRyaWJ1dGVzIGl0cyBmYWlsdXJlIGFzIGEgV0FSTklORzsgb3RoZXJ3aXNlIGl0cyBlcnJvclxuICogYmxvY2tzLiBSZXR1cm5zIHRydWUgd2hlbiBhIGJsb2NraW5nIGVycm9yIGxhbmRlZCAoc3RvcCB3YWxraW5nKS5cbiAqL1xuZnVuY3Rpb24gbWVyZ2VTdWJSZXN1bHQoYWNjLCBzdWJSdWxlLCBzdWIpIHtcbiAgICBpZiAoc3ViLndhcm5pbmcgIT09IG51bGwgJiYgYWNjLndhcm5pbmcgPT09IG51bGwpXG4gICAgICAgIGFjYy53YXJuaW5nID0gc3ViLndhcm5pbmc7XG4gICAgaWYgKHN1Yi5lcnJvciAhPT0gbnVsbCkge1xuICAgICAgICBpZiAoc3ViUnVsZS53YXJuaW5nT25seSkge1xuICAgICAgICAgICAgaWYgKGFjYy53YXJuaW5nID09PSBudWxsKVxuICAgICAgICAgICAgICAgIGFjYy53YXJuaW5nID0gc3ViLmVycm9yO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgYWNjLmVycm9yID0gc3ViLmVycm9yO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xufVxuLyoqXG4gKiBGb2xkIG9uZSBydWxlJ3Mgb3V0Y29tZSBpbnRvIHRoZSBydW4tbGV2ZWwgY2hhbm5lbHMuIEEgcnVsZSBmbGFnZ2VkXG4gKiBgd2FybmluZ09ubHlgIGRvd25ncmFkZXMgZXZlcnl0aGluZyBpdCBwcm9kdWNlZCAob3duIGNoZWNrcyBBTkQgZGVlcFxuICogc3ViLXJ1bGVzKSB0byBhIHdhcm5pbmcuIFJldHVybnMgdGhlIGJsb2NraW5nIGVycm9yIHRvIHN1cmZhY2UsIG9yIG51bGwuXG4gKi9cbmZ1bmN0aW9uIGZvbGRSdWxlUmVzdWx0KHJ1bGUsIHJlc3VsdCwgc3RhdGUpIHtcbiAgICB2YXIgX2E7XG4gICAgaWYgKHJ1bGUud2FybmluZ09ubHkpIHtcbiAgICAgICAgY29uc3QgY29udGVudCA9IChfYSA9IHJlc3VsdC5lcnJvcikgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogcmVzdWx0Lndhcm5pbmc7XG4gICAgICAgIGlmIChjb250ZW50ICE9PSBudWxsICYmIHN0YXRlLndhcm5pbmcgPT09IG51bGwpXG4gICAgICAgICAgICBzdGF0ZS53YXJuaW5nID0gY29udGVudDtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGlmIChyZXN1bHQud2FybmluZyAhPT0gbnVsbCAmJiBzdGF0ZS53YXJuaW5nID09PSBudWxsKVxuICAgICAgICBzdGF0ZS53YXJuaW5nID0gcmVzdWx0Lndhcm5pbmc7XG4gICAgcmV0dXJuIHJlc3VsdC5lcnJvcjtcbn1cbi8qKlxuICogRXZhbHVhdGUgT05FIHJ1bGUgKHRyYW5zZm9ybSDihpIgYnVpbHRpbiBjaGVja3Mg4oaSIHZhbGlkYXRvciDihpIgZGVlcCBydWxlcylcbiAqIHN5bmNocm9ub3VzbHkuIFByb21pc2UtcmV0dXJuaW5nIHZhbGlkYXRvcnMgYXJlIGRlZmVycmVkIChzZWUgcnVuUnVsZXNTeW5jKS5cbiAqL1xuZnVuY3Rpb24gZXZhbFJ1bGVTeW5jKHJ1bGUsIHJhd1ZhbHVlLCBuYW1lKSB7XG4gICAgY29uc3QgcHJlcCA9IGFwcGx5VHJhbnNmb3JtKHJ1bGUsIHJhd1ZhbHVlKTtcbiAgICBpZiAoIXByZXAub2spXG4gICAgICAgIHJldHVybiB7IGVycm9yOiBwcmVwLmZhaWx1cmUsIHdhcm5pbmc6IG51bGwgfTtcbiAgICBjb25zdCB2YWx1ZSA9IHByZXAudmFsdWU7XG4gICAgbGV0IGZhaWx1cmUgPSBjaGVja0J1aWx0aW5SdWxlcyhydWxlLCB2YWx1ZSwgbmFtZSk7XG4gICAgaWYgKGZhaWx1cmUgPT09IG51bGwgJiYgdHlwZW9mIHJ1bGUudmFsaWRhdG9yID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBydWxlLnZhbGlkYXRvcihydWxlLCB2YWx1ZSk7XG4gICAgICAgICAgICBpZiAoaXNUaGVuYWJsZShyZXN1bHQpKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnRoZW4oKHJlc29sdmVkKSA9PiB3YXJuTGVnYWN5VmFsaWRhdG9yUmV0dXJuKG5hbWUsIHJlc29sdmVkKSwgKCkgPT4geyB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHdhcm5MZWdhY3lWYWxpZGF0b3JSZXR1cm4obmFtZSwgcmVzdWx0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICBmYWlsdXJlID0gcmVzb2x2ZUZhaWx1cmVNZXNzYWdlKGVyciwgcnVsZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKGZhaWx1cmUgIT09IG51bGwpXG4gICAgICAgIHJldHVybiB7IGVycm9yOiBmYWlsdXJlLCB3YXJuaW5nOiBudWxsIH07XG4gICAgaWYgKChydWxlLmZpZWxkcyB8fCBydWxlLmRlZmF1bHRGaWVsZCkgJiYgIWlzRW1wdHlWYWx1ZSh2YWx1ZSkpIHtcbiAgICAgICAgLy8gRGVlcCBydWxlcyBuZWVkIGEgY29udGFpbmVyOyBhIG5vbi1lbXB0eSBwcmltaXRpdmUgZmFpbHMgdGhlIFBBUkVOVFxuICAgICAgICAvLyAoY2xlYXIgYXR0cmlidXRpb24pIGluc3RlYWQgb2YgcHJvZHVjaW5nIGNvbmZ1c2luZyBjaGlsZCBlcnJvcnMuXG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdvYmplY3QnIHx8IHZhbHVlID09PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4geyBlcnJvcjogcnVsZS5tZXNzYWdlIHx8IGAke25hbWV9IG11c3QgYmUgYW4gb2JqZWN0IG9yIGFuIGFycmF5YCwgd2FybmluZzogbnVsbCB9O1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFjYyA9IHsgZXJyb3I6IG51bGwsIHdhcm5pbmc6IG51bGwgfTtcbiAgICAgICAgZm9yIChjb25zdCBbc3ViUnVsZSwgc3ViVmFsdWUsIHN1Yk5hbWVdIG9mIGRlZXBSdWxlRW50cmllcyhydWxlLCB2YWx1ZSwgbmFtZSkpIHtcbiAgICAgICAgICAgIGlmIChtZXJnZVN1YlJlc3VsdChhY2MsIHN1YlJ1bGUsIGV2YWxSdWxlU3luYyhzdWJSdWxlLCBzdWJWYWx1ZSwgc3ViTmFtZSkpKVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgfVxuICAgIHJldHVybiBQQVNTO1xufVxuLyoqIEFzeW5jIGNvdW50ZXJwYXJ0IG9mIGV2YWxSdWxlU3luYyDigJQgY3VzdG9tIHZhbGlkYXRvcnMgYXJlIGF3YWl0ZWQuICovXG5mdW5jdGlvbiBldmFsUnVsZUFzeW5jKHJ1bGUsIHJhd1ZhbHVlLCBuYW1lKSB7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgY29uc3QgcHJlcCA9IGFwcGx5VHJhbnNmb3JtKHJ1bGUsIHJhd1ZhbHVlKTtcbiAgICAgICAgaWYgKCFwcmVwLm9rKVxuICAgICAgICAgICAgcmV0dXJuIHsgZXJyb3I6IHByZXAuZmFpbHVyZSwgd2FybmluZzogbnVsbCB9O1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHByZXAudmFsdWU7XG4gICAgICAgIGxldCBmYWlsdXJlID0gY2hlY2tCdWlsdGluUnVsZXMocnVsZSwgdmFsdWUsIG5hbWUpO1xuICAgICAgICBpZiAoZmFpbHVyZSA9PT0gbnVsbCAmJiB0eXBlb2YgcnVsZS52YWxpZGF0b3IgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gKHlpZWxkIHJ1bGUudmFsaWRhdG9yKHJ1bGUsIHZhbHVlKSk7XG4gICAgICAgICAgICAgICAgd2FybkxlZ2FjeVZhbGlkYXRvclJldHVybihuYW1lLCByZXN1bHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgIGZhaWx1cmUgPSByZXNvbHZlRmFpbHVyZU1lc3NhZ2UoZXJyLCBydWxlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoZmFpbHVyZSAhPT0gbnVsbClcbiAgICAgICAgICAgIHJldHVybiB7IGVycm9yOiBmYWlsdXJlLCB3YXJuaW5nOiBudWxsIH07XG4gICAgICAgIGlmICgocnVsZS5maWVsZHMgfHwgcnVsZS5kZWZhdWx0RmllbGQpICYmICFpc0VtcHR5VmFsdWUodmFsdWUpKSB7XG4gICAgICAgICAgICAvLyBEZWVwIHJ1bGVzIG5lZWQgYSBjb250YWluZXI7IGEgbm9uLWVtcHR5IHByaW1pdGl2ZSBmYWlscyB0aGUgUEFSRU5UXG4gICAgICAgICAgICAvLyAoY2xlYXIgYXR0cmlidXRpb24pIGluc3RlYWQgb2YgcHJvZHVjaW5nIGNvbmZ1c2luZyBjaGlsZCBlcnJvcnMuXG4gICAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0JyB8fCB2YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7IGVycm9yOiBydWxlLm1lc3NhZ2UgfHwgYCR7bmFtZX0gbXVzdCBiZSBhbiBvYmplY3Qgb3IgYW4gYXJyYXlgLCB3YXJuaW5nOiBudWxsIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBhY2MgPSB7IGVycm9yOiBudWxsLCB3YXJuaW5nOiBudWxsIH07XG4gICAgICAgICAgICBmb3IgKGNvbnN0IFtzdWJSdWxlLCBzdWJWYWx1ZSwgc3ViTmFtZV0gb2YgZGVlcFJ1bGVFbnRyaWVzKHJ1bGUsIHZhbHVlLCBuYW1lKSkge1xuICAgICAgICAgICAgICAgIGlmIChtZXJnZVN1YlJlc3VsdChhY2MsIHN1YlJ1bGUsIHlpZWxkIGV2YWxSdWxlQXN5bmMoc3ViUnVsZSwgc3ViVmFsdWUsIHN1Yk5hbWUpKSlcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBQQVNTO1xuICAgIH0pO1xufVxuLyoqXG4gKiBTeW5jaHJvbm91cyBydWxlIHJ1bi4gQSBQcm9taXNlLXJldHVybmluZyB2YWxpZGF0b3IgQ0FOTk9UIGJlIGV2YWx1YXRlZFxuICogaGVyZSDigJQgaXQgaXMgZGVmZXJyZWQgKHRyZWF0ZWQgYXMgcGFzc2luZyBmb3IgdGhpcyBydW47IGl0cyByZWplY3Rpb24gaXNcbiAqIHN3YWxsb3dlZCkgYW5kIGxlZnQgdG8gdGhlIGFzeW5jIHJ1bnMgKGJsdXIvc3VibWl0KSwgd2hpY2ggYWx3YXlzIGF3YWl0IGl0LlxuICogRmFpbGluZyBpdCBpbnN0ZWFkIHdvdWxkIG1pcy1yZXBvcnQgXCJWYWxpZGF0aW9uIGZhaWxlZFwiIG9uIGV2ZXJ5IGtleXN0cm9rZVxuICogZm9yIHBlcmZlY3RseSB2YWxpZCBpbnB1dC5cbiAqXG4gKiBUaGUgcGVyLXJ1bGUgdHJ5L2NhdGNoIGlzIHRoZSBlbmdpbmUncyB0b3RhbGl0eSBjaG9rZSBwb2ludDogTk8gaW5wdXQg4oCUXG4gKiBpbmNsdWRpbmcgZXhvdGljIHZhbHVlcyB0aGF0IGJyZWFrIGEgYnVpbHRpbiBjaGVjayDigJQgbWF5IGVzY2FwZSBhcyBhIHRocm93O1xuICogZXZlcnkgZmFpbHVyZSBzdXJmYWNlcyB0aHJvdWdoIHRoZSBlcnJvci93YXJuaW5nIGNoYW5uZWxzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcnVuUnVsZXNTeW5jKG5hbWUsIHZhbHVlLCB2YWx1ZXMsIHJ1bGVzLCBpbnN0YW5jZSkge1xuICAgIGNvbnN0IHN0YXRlID0geyB3YXJuaW5nOiBudWxsIH07XG4gICAgZm9yIChjb25zdCBydWxlIG9mIHJlc29sdmVSdWxlcyhydWxlcywgdmFsdWVzLCBpbnN0YW5jZSkpIHtcbiAgICAgICAgbGV0IHJlc3VsdDtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJlc3VsdCA9IGV2YWxSdWxlU3luYyhydWxlLCB2YWx1ZSwgbmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgcmVzdWx0ID0geyBlcnJvcjogcmVzb2x2ZUZhaWx1cmVNZXNzYWdlKGVyciwgcnVsZSksIHdhcm5pbmc6IG51bGwgfTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBlcnJvciA9IGZvbGRSdWxlUmVzdWx0KHJ1bGUsIHJlc3VsdCwgc3RhdGUpO1xuICAgICAgICBpZiAoZXJyb3IgIT09IG51bGwpXG4gICAgICAgICAgICByZXR1cm4geyBlcnJvciwgd2FybmluZzogc3RhdGUud2FybmluZyB9O1xuICAgIH1cbiAgICByZXR1cm4geyBlcnJvcjogbnVsbCwgd2FybmluZzogc3RhdGUud2FybmluZyB9O1xufVxuLyoqXG4gKiBBc3luY2hyb25vdXMgcnVsZSBydW4uIEN1c3RvbSB2YWxpZGF0b3JzIGFyZSBhd2FpdGVkIChzeW5jIG9yIGFzeW5jKTpcbiAqIHJlc29sdmluZyBwYXNzZXMsIHJlamVjdGluZy90aHJvd2luZyBmYWlscy4gUmV0dXJuIHZhbHVlcyBhcmUgaWdub3JlZC5cbiAqIFNoYXJlcyB0aGUgdG90YWxpdHkgY2hva2UgcG9pbnQgd2l0aCBydW5SdWxlc1N5bmMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBydW5SdWxlc0FzeW5jKG5hbWUsIHZhbHVlLCB2YWx1ZXMsIHJ1bGVzLCBpbnN0YW5jZSkge1xuICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGNvbnN0IHN0YXRlID0geyB3YXJuaW5nOiBudWxsIH07XG4gICAgICAgIGZvciAoY29uc3QgcnVsZSBvZiByZXNvbHZlUnVsZXMocnVsZXMsIHZhbHVlcywgaW5zdGFuY2UpKSB7XG4gICAgICAgICAgICBsZXQgcmVzdWx0O1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICByZXN1bHQgPSB5aWVsZCBldmFsUnVsZUFzeW5jKHJ1bGUsIHZhbHVlLCBuYW1lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgPSB7IGVycm9yOiByZXNvbHZlRmFpbHVyZU1lc3NhZ2UoZXJyLCBydWxlKSwgd2FybmluZzogbnVsbCB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgZXJyb3IgPSBmb2xkUnVsZVJlc3VsdChydWxlLCByZXN1bHQsIHN0YXRlKTtcbiAgICAgICAgICAgIGlmIChlcnJvciAhPT0gbnVsbClcbiAgICAgICAgICAgICAgICByZXR1cm4geyBlcnJvciwgd2FybmluZzogc3RhdGUud2FybmluZyB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IGVycm9yOiBudWxsLCB3YXJuaW5nOiBzdGF0ZS53YXJuaW5nIH07XG4gICAgfSk7XG59IixudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
585
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9jb3JlL3J1blJ1bGVzLmpzIiwiY29tcG9uZW50cy9Qcm9Gb3JtL3NyYy9jb21wb25lbnRzL1Byb0Zvcm0vY29yZS9ydW5SdWxlcy50cyJdLCJuYW1lcyI6WyJfX2F3YWl0ZXIiLCJ0aGlzQXJnIiwiX2FyZ3VtZW50cyIsIlAiLCJnZW5lcmF0b3IiLCJhZG9wdCIsInZhbHVlIiwicmVzb2x2ZSIsIlByb21pc2UiLCJyZWplY3QiLCJmdWxmaWxsZWQiLCJzdGVwIiwibmV4dCIsImUiLCJyZWplY3RlZCIsInJlc3VsdCIsImRvbmUiLCJ0aGVuIiwiYXBwbHkiLCJyZXNvbHZlVmFsdWUiLCJkZXZXYXJuT25jZSIsImlzRW1wdHlWYWx1ZSIsInVuZGVmaW5lZCIsIkFycmF5IiwiaXNBcnJheSIsImxlbmd0aCIsImNvZXJjZUZhaWx1cmVSZWFzb24iLCJyZWFzb24iLCJFcnJvciIsIm1lc3NhZ2UiLCJyZXNvbHZlRmFpbHVyZU1lc3NhZ2UiLCJydWxlIiwiX2EiLCJyZXNvbHZlUnVsZXMiLCJydWxlcyIsInZhbHVlcyIsImluc3RhbmNlIiwic29tZSIsImN0eCIsIk9iamVjdCIsImFzc2lnbiIsImdldEZpZWxkVmFsdWUiLCJuYW1lIiwiZ2V0RmllbGRzVmFsdWUiLCJtYXAiLCJlcnIiLCJ2YWxpZGF0b3IiLCJub3JtYWxpemVUcmlnZ2VycyIsIml0ZW1UcmlnZ2VyIiwiZm9ybVRyaWdnZXIiLCJlZmZlY3RpdmUiLCJmaWx0ZXJSdWxlc0J5VHJpZ2dlciIsInRyaWdnZXIiLCJhY3RpdmVUcmlnZ2VycyIsImZpZWxkTmFtZSIsImluY2x1ZGVzIiwiZmlsdGVyIiwicnVsZVRyaWdnZXIiLCJ2YWxpZGF0ZVRyaWdnZXIiLCJydWxlVHJpZ2dlcnMiLCJtYXRjaGVzIiwidCIsImNvbmNhdCIsImpvaW4iLCJUWVBFX0NIRUNLUyIsInN0cmluZyIsInYiLCJudW1iZXIiLCJOdW1iZXIiLCJpc05hTiIsImJvb2xlYW4iLCJtZXRob2QiLCJpbnRlZ2VyIiwiaXNJbnRlZ2VyIiwiZmxvYXQiLCJhcnJheSIsIm9iamVjdCIsIl90eXBlb2YiLCJkYXRlIiwiRGF0ZSIsImdldFRpbWUiLCJyZWdleHAiLCJSZWdFeHAiLCJoZXgiLCJ0ZXN0IiwiZW1haWwiLCJ1cmwiLCJVUkwiLCJ0eXBlRmFpbHVyZU1lc3NhZ2UiLCJ0eXBlIiwibWVhc3VyZVZhbHVlIiwibWVhc3VyZWQiLCJ1bml0IiwiY2hlY2tCdWlsdGluUnVsZXMiLCJyZXF1aXJlZCIsIndoaXRlc3BhY2UiLCJ0cmltIiwibGVuIiwibSIsIm1pbiIsIm1heCIsInBhdHRlcm4iLCJnbG9iYWwiLCJzdGlja3kiLCJsYXN0SW5kZXgiLCJ0b1J1bGVBcnJheSIsImRlZXBNZW1iZXJzIiwibWVtYmVyIiwiaW5kZXgiLCJTdHJpbmciLCJlbnRyaWVzIiwiUEFTUyIsImVycm9yIiwid2FybmluZyIsIndhcm5MZWdhY3lWYWxpZGF0b3JSZXR1cm4iLCJhcHBseVRyYW5zZm9ybSIsInJhd1ZhbHVlIiwidHJhbnNmb3JtIiwib2siLCJmYWlsdXJlIiwiZGVlcFJ1bGVFbnRyaWVzIiwiZmllbGRzIiwic291cmNlIiwiX2kiLCJfT2JqZWN0JGVudHJpZXMiLCJfT2JqZWN0JGVudHJpZXMkX2kiLCJfc2xpY2VkVG9BcnJheSIsImtleSIsInN1YlJ1bGVzIiwiX2l0ZXJhdG9yIiwiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCJfc3RlcCIsInMiLCJuIiwic3ViUnVsZSIsInB1c2giLCJmIiwiZGVmYXVsdEZpZWxkIiwiX2l0ZXJhdG9yMiIsIl9zdGVwMiIsIl9zdGVwMiR2YWx1ZSIsIl9pdGVyYXRvcjMiLCJfc3RlcDMiLCJtZXJnZVN1YlJlc3VsdCIsImFjYyIsInN1YiIsIndhcm5pbmdPbmx5IiwiZm9sZFJ1bGVSZXN1bHQiLCJzdGF0ZSIsImNvbnRlbnQiLCJldmFsUnVsZUFzeW5jIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwicHJlcCIsIl9pdGVyYXRvcjQiLCJfc3RlcDQiLCJfc3RlcDQkdmFsdWUiLCJzdWJWYWx1ZSIsInN1Yk5hbWUiLCJfdCIsIl90MiIsIl90MyIsIl90NCIsIl90NSIsIndyYXAiLCJfY29udGV4dCIsInByZXYiLCJhYnJ1cHQiLCJzZW50IiwiZmluaXNoIiwic3RvcCIsInJ1blJ1bGVzQXN5bmMiLCJfY2FsbGVlMiIsIl9pdGVyYXRvcjUiLCJfc3RlcDUiLCJfdDYiLCJfdDciLCJfY29udGV4dDIiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUlBLFNBQVMsR0FBSSxJQUFJLElBQUksSUFBSSxDQUFDQSxTQUFTLElBQUssVUFBVUMsT0FBTyxFQUFFQyxVQUFVLEVBQUVDLENBQUMsRUFBRUMsU0FBUyxFQUFFO0VBQ3JGLFNBQVNDLEtBQUtBLENBQUNDLEtBQUssRUFBRTtJQUFFLE9BQU9BLEtBQUssWUFBWUgsQ0FBQyxHQUFHRyxLQUFLLEdBQUcsSUFBSUgsQ0FBQyxDQUFDLFVBQVVJLE9BQU8sRUFBRTtNQUFFQSxPQUFPLENBQUNELEtBQUssQ0FBQztJQUFFLENBQUMsQ0FBQztFQUFFO0VBQzNHLE9BQU8sS0FBS0gsQ0FBQyxLQUFLQSxDQUFDLEdBQUdLLE9BQU8sQ0FBQyxFQUFFLFVBQVVELE9BQU8sRUFBRUUsTUFBTSxFQUFFO0lBQ3ZELFNBQVNDLFNBQVNBLENBQUNKLEtBQUssRUFBRTtNQUFFLElBQUk7UUFBRUssSUFBSSxDQUFDUCxTQUFTLENBQUNRLElBQUksQ0FBQ04sS0FBSyxDQUFDLENBQUM7TUFBRSxDQUFDLENBQUMsT0FBT08sQ0FBQyxFQUFFO1FBQUVKLE1BQU0sQ0FBQ0ksQ0FBQyxDQUFDO01BQUU7SUFBRTtJQUMxRixTQUFTQyxRQUFRQSxDQUFDUixLQUFLLEVBQUU7TUFBRSxJQUFJO1FBQUVLLElBQUksQ0FBQ1AsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDRSxLQUFLLENBQUMsQ0FBQztNQUFFLENBQUMsQ0FBQyxPQUFPTyxDQUFDLEVBQUU7UUFBRUosTUFBTSxDQUFDSSxDQUFDLENBQUM7TUFBRTtJQUFFO0lBQzdGLFNB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O1FBQUE7VUFBQSxPQUFBaUUsU0FBQSxDQUFBUCxJQUFBO01BQUE7SUFBQSxHQUFBRSxRQUFBO0VBQUEsQ0FDL0MsRUFBQTtBRDFERCIsImZpbGUiOiJjb21wb25lbnRzL1Byb0Zvcm0vY29yZS9ydW5SdWxlcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xuaW1wb3J0IHsgcmVzb2x2ZVZhbHVlIH0gZnJvbSAnLi9wYXRoVXRpbHMnO1xuaW1wb3J0IHsgZGV2V2Fybk9uY2UgfSBmcm9tICcuL2Rldldhcm5pbmcnO1xuLyoqIEVtcHR5IGZvciBgcmVxdWlyZWRgOiB1bmRlZmluZWQgLyBudWxsIC8gJycgLyBlbXB0eSBhcnJheS4gKi9cbmZ1bmN0aW9uIGlzRW1wdHlWYWx1ZSh2YWx1ZSkge1xuICAgIHJldHVybiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICB2YWx1ZSA9PT0gbnVsbCB8fFxuICAgICAgICB2YWx1ZSA9PT0gJycgfHxcbiAgICAgICAgKEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA9PT0gMCkpO1xufVxuLyoqXG4gKiBDb2VyY2UgYSB0aHJvd24vcmVqZWN0ZWQgcmVhc29uIGludG8gZGlzcGxheWFibGUgZmFpbHVyZSBjb250ZW50OlxuICogYSBub24tZW1wdHkgRXJyb3IubWVzc2FnZSBvciBhIG5vbi1lbXB0eSBwbGFpbiBzdHJpbmcg4oCUIG90aGVyd2lzZSBudWxsXG4gKiAoY2FsbGVyIHBpY2tzIGl0cyBmYWxsYmFjaykuIFNoYXJlZCB3aXRoIHRoZSBmb3JtLWxldmVsIGxhc3QtcmVzb3J0IG5ldHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb2VyY2VGYWlsdXJlUmVhc29uKHJlYXNvbikge1xuICAgIGlmIChyZWFzb24gaW5zdGFuY2VvZiBFcnJvciAmJiByZWFzb24ubWVzc2FnZSlcbiAgICAgICAgcmV0dXJuIHJlYXNvbi5tZXNzYWdlO1xuICAgIGlmICh0eXBlb2YgcmVhc29uID09PSAnc3RyaW5nJyAmJiByZWFzb24pXG4gICAgICAgIHJldHVybiByZWFzb247XG4gICAgcmV0dXJuIG51bGw7XG59XG4vKipcbiAqIEZhaWx1cmUgbWVzc2FnZSBmb3IgYSByZWplY3RlZC90aHJvd24gY3VzdG9tIHZhbGlkYXRvcjpcbiAqIEVycm9yLm1lc3NhZ2Ug4oaSIHBsYWluIHN0cmluZyByZWFzb24g4oaSIHJ1bGUubWVzc2FnZSDihpIgZ2VuZXJpYyBmYWxsYmFjay5cbiAqL1xuZnVuY3Rpb24gcmVzb2x2ZUZhaWx1cmVNZXNzYWdlKHJlYXNvbiwgcnVsZSkge1xuICAgIHZhciBfYTtcbiAgICByZXR1cm4gKF9hID0gY29lcmNlRmFpbHVyZVJlYXNvbihyZWFzb24pKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAocnVsZS5tZXNzYWdlIHx8ICdWYWxpZGF0aW9uIGZhaWxlZCcpO1xufVxuLyoqXG4gKiBSZXNvbHZlIGZ1bmN0aW9uLWZvcm0gcnVsZXMgaW50byBzdGF0aWMgcnVsZXMuIFRoZVxuICogY29udGV4dCBleHBvc2VzIHRoZSB2YWx1ZSBzbmFwc2hvdCB0aGUgcnVuIHdhcyBpbnZva2VkIHdpdGg7IGZ1bmN0aW9uIHJ1bGVzXG4gKiBtdXN0IGJlIGNoZWFwIGFuZCBzaWRlLWVmZmVjdCBmcmVlIOKAlCB0aGV5IG1heSBiZSByZXNvbHZlZCBtb3JlIHRoYW4gb25jZVxuICogcGVyIHZhbGlkYXRpb24gcGFzcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVSdWxlcyhydWxlcywgdmFsdWVzLCBpbnN0YW5jZSkge1xuICAgIC8vIEZhc3QgcGF0aDogbm8gZnVuY3Rpb24gcnVsZXMg4oaSIG5vdGhpbmcgdG8gcmVzb2x2ZSwgbm8gY3R4IGFsbG9jYXRpb24uXG4gICAgLy8gVGhpcyBhbHNvIG1ha2VzIHRoZSBlbmdpbmUtaW50ZXJuYWwgcmUtcmVzb2x1dGlvbiBvZiBhbHJlYWR5LXJlc29sdmVkXG4gICAgLy8gYXJyYXlzIGZyZWUuXG4gICAgaWYgKCFydWxlcy5zb21lKChydWxlKSA9PiB0eXBlb2YgcnVsZSA9PT0gJ2Z1bmN0aW9uJykpIHtcbiAgICAgICAgcmV0dXJuIHJ1bGVzO1xuICAgIH1cbiAgICAvLyBMaXZlLWluc3RhbmNlIG1lbWJlcnMgKHNldEZpZWxkc1ZhbHVlLCBnZXRGaWVsZEVycm9yLCDigKYpIGFyZSBzcHJlYWQgaW5cbiAgICAvLyB3aGVuIGF2YWlsYWJsZTsgdGhlIHJlYWRzIGFsd2F5cyBjb21lIGZyb20gdGhlIHZhbGlkYXRpb24tdGltZSBzbmFwc2hvdC5cbiAgICBjb25zdCBjdHggPSBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGluc3RhbmNlKSwgeyBnZXRGaWVsZFZhbHVlOiAobmFtZSkgPT4gcmVzb2x2ZVZhbHVlKHZhbHVlcywgbmFtZSksIGdldEZpZWxkc1ZhbHVlOiAoKSA9PiB2YWx1ZXMgfSk7XG4gICAgcmV0dXJuIHJ1bGVzLm1hcCgocnVsZSkgPT4ge1xuICAgICAgICBpZiAodHlwZW9mIHJ1bGUgIT09ICdmdW5jdGlvbicpXG4gICAgICAgICAgICByZXR1cm4gcnVsZTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiBydWxlKGN0eCk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgLy8gQSB0aHJvd2luZyBydWxlIGZhY3RvcnkgbXVzdCBub3QgY3Jhc2ggcmVuZGVyaW5nIG9yIHZhbGlkYXRpb24g4oCUXG4gICAgICAgICAgICAvLyBzdXJmYWNlIGl0IGFzIGEgcnVsZSB0aGF0IGFsd2F5cyBmYWlscyB3aXRoIHRoZSB0aHJvd24gcmVhc29uLlxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3I6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfSk7XG59XG4vKipcbiAqIE5vcm1hbGl6ZSBhIGZvcm0vaXRlbS1sZXZlbCB2YWxpZGF0ZVRyaWdnZXIgY29uZmlnIGludG8gdGhlIGVmZmVjdGl2ZVxuICogaW50ZXJhY3RpdmUgZXZlbnQgbGlzdDogaXRlbS1sZXZlbCAod2hlbiBwcmVzZW50KSBvdmVycmlkZXMgZm9ybS1sZXZlbDtcbiAqIGBmYWxzZWAgZGlzYWJsZXMgaW50ZXJhY3RpdmUgdmFsaWRhdGlvbiBlbnRpcmVseS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZVRyaWdnZXJzKGl0ZW1UcmlnZ2VyLCBmb3JtVHJpZ2dlcikge1xuICAgIGNvbnN0IGVmZmVjdGl2ZSA9IGl0ZW1UcmlnZ2VyID09PSB1bmRlZmluZWQgPyBmb3JtVHJpZ2dlciA6IGl0ZW1UcmlnZ2VyO1xuICAgIGlmIChlZmZlY3RpdmUgPT09IGZhbHNlKVxuICAgICAgICByZXR1cm4gW107XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkoZWZmZWN0aXZlKSA/IGVmZmVjdGl2ZSA6IFtlZmZlY3RpdmVdO1xufVxuLyoqXG4gKiBGaWx0ZXIgcnVsZXMgYXBwbGljYWJsZSB0byBhbiBpbnRlcmFjdGl2ZSBldmVudDogdGhlIGV2ZW50XG4gKiB2YWxpZGF0ZXMgb25seSB3aGVuIGl0IGlzIGluIHRoZSBpdGVtJ3MgZWZmZWN0aXZlIHRyaWdnZXIgc2V0LiBXaXRoaW4gdGhlXG4gKiBzZXQsIGEgcnVsZSBXSVRIT1VUIGB2YWxpZGF0ZVRyaWdnZXJgIHJ1bnMgb24gZXZlcnkgZXZlbnQ7IGEgcnVsZSBXSVRIIG9uZVxuICogcnVucyBvbmx5IG9uIG1hdGNoaW5nIGV2ZW50cyDigJQgc28gYSBydWxlIHRyaWdnZXIgb3V0c2lkZSB0aGUgaXRlbSdzIHNldFxuICogbmV2ZXIgZmlyZXMgaW50ZXJhY3RpdmVseS4gU3VibWl0LXRpbWUgdmFsaWRhdGlvbiBieXBhc3NlcyB0aGlzIGZpbHRlciBhbmRcbiAqIHJ1bnMgZXZlcnkgcnVsZS5cbiAqXG4gKiBEZXYgZ3VhcmQ6IGEgcnVsZSB3aG9zZSAobm9uLWVtcHR5KSB0cmlnZ2VyIHNldCBpcyBmdWxseSBPVVRTSURFIHRoZVxuICogYWN0aXZlIHNldCBjYW4gbmV2ZXIgZmlyZSBpbnRlcmFjdGl2ZWx5IOKAlCB1c3VhbGx5IGEgbGVmdG92ZXIgb2YgdGhlXG4gKiBwcmUtMC4wLjc2IG92ZXJyaWRlIHNlbWFudGljcywgc28gaXQgd2FybnMgb25jZS4gYHZhbGlkYXRlVHJpZ2dlcjogW11gXG4gKiBpcyB0aGUgZGVsaWJlcmF0ZSBzdWJtaXQtb25seSBpZGlvbSBhbmQgc3RheXMgc2lsZW50LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZmlsdGVyUnVsZXNCeVRyaWdnZXIocnVsZXMsIHRyaWdnZXIsIGFjdGl2ZVRyaWdnZXJzLCBmaWVsZE5hbWUpIHtcbiAgICBpZiAoIWFjdGl2ZVRyaWdnZXJzLmluY2x1ZGVzKHRyaWdnZXIpKVxuICAgICAgICByZXR1cm4gW107XG4gICAgcmV0dXJuIHJ1bGVzLmZpbHRlcigocnVsZSkgPT4ge1xuICAgICAgICBjb25zdCBydWxlVHJpZ2dlciA9IHJ1bGUudmFsaWRhdGVUcmlnZ2VyO1xuICAgICAgICBpZiAocnVsZVRyaWdnZXIgPT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICBjb25zdCBydWxlVHJpZ2dlcnMgPSBBcnJheS5pc0FycmF5KHJ1bGVUcmlnZ2VyKSA/IHJ1bGVUcmlnZ2VyIDogW3J1bGVUcmlnZ2VyXTtcbiAgICAgICAgY29uc3QgbWF0Y2hlcyA9IHJ1bGVUcmlnZ2Vycy5pbmNsdWRlcyh0cmlnZ2VyKTtcbiAgICAgICAgaWYgKCFtYXRjaGVzICYmXG4gICAgICAgICAgICBydWxlVHJpZ2dlcnMubGVuZ3RoID4gMCAmJlxuICAgICAgICAgICAgIXJ1bGVUcmlnZ2Vycy5zb21lKCh0KSA9PiBhY3RpdmVUcmlnZ2Vycy5pbmNsdWRlcyh0KSkpIHtcbiAgICAgICAgICAgIGNvbnN0IG5hbWUgPSBmaWVsZE5hbWUgIT09IG51bGwgJiYgZmllbGROYW1lICE9PSB2b2lkIDAgPyBmaWVsZE5hbWUgOiAnKGFueSknO1xuICAgICAgICAgICAgZGV2V2Fybk9uY2UoYHRyaWdnZXI6JHtuYW1lfToke3J1bGVUcmlnZ2Vycy5qb2luKCcsJyl9YCwgYFtQcm9Gb3JtXSBGaWVsZCBcIiR7bmFtZX1cIjogcnVsZSB2YWxpZGF0ZVRyaWdnZXIgWyR7cnVsZVRyaWdnZXJzLmpvaW4oJywgJyl9XSBpcyBvdXRzaWRlIHRoaXMgZmllbGQncyBhY3RpdmUgdHJpZ2dlciBzZXQgWyR7YWN0aXZlVHJpZ2dlcnMuam9pbignLCAnKX1dIOKAlCB0aGUgcnVsZSB3aWxsIG9ubHkgcnVuIG9uIHN1Ym1pdC4gSW5jbHVkZSBpdCBpbiB0aGUgaXRlbS9mb3JtIHZhbGlkYXRlVHJpZ2dlciB0byBydW4gaXQgaW50ZXJhY3RpdmVseS5gKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWF0Y2hlcztcbiAgICB9KTtcbn1cbi8qKiBCdWlsdC1pbiBgdHlwZWAgY2hlY2tzLiBgZW51bWAgaXMgaGFuZGxlZCBzZXBhcmF0ZWx5IGFnYWluc3QgYHJ1bGUuZW51bWAuICovXG5jb25zdCBUWVBFX0NIRUNLUyA9IHtcbiAgICBzdHJpbmc6ICh2KSA9PiB0eXBlb2YgdiA9PT0gJ3N0cmluZycsXG4gICAgbnVtYmVyOiAodikgPT4gdHlwZW9mIHYgPT09ICdudW1iZXInICYmICFOdW1iZXIuaXNOYU4odiksXG4gICAgYm9vbGVhbjogKHYpID0+IHR5cGVvZiB2ID09PSAnYm9vbGVhbicsXG4gICAgbWV0aG9kOiAodikgPT4gdHlwZW9mIHYgPT09ICdmdW5jdGlvbicsXG4gICAgaW50ZWdlcjogKHYpID0+IHR5cGVvZiB2ID09PSAnbnVtYmVyJyAmJiBOdW1iZXIuaXNJbnRlZ2VyKHYpLFxuICAgIGZsb2F0OiAodikgPT4gdHlwZW9mIHYgPT09ICdudW1iZXInICYmICFOdW1iZXIuaXNOYU4odikgJiYgIU51bWJlci5pc0ludGVnZXIodiksXG4gICAgYXJyYXk6ICh2KSA9PiBBcnJheS5pc0FycmF5KHYpLFxuICAgIG9iamVjdDogKHYpID0+IHR5cGVvZiB2ID09PSAnb2JqZWN0JyAmJiB2ICE9PSBudWxsICYmICFBcnJheS5pc0FycmF5KHYpLFxuICAgIGRhdGU6ICh2KSA9PiB2IGluc3RhbmNlb2YgRGF0ZVxuICAgICAgICA/ICFOdW1iZXIuaXNOYU4odi5nZXRUaW1lKCkpXG4gICAgICAgIDogdHlwZW9mICh2ID09PSBudWxsIHx8IHYgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHYuZ2V0VGltZSkgPT09ICdmdW5jdGlvbicgJiZcbiAgICAgICAgICAgICFOdW1iZXIuaXNOYU4odi5nZXRUaW1lKCkpLFxuICAgIHJlZ2V4cDogKHYpID0+IHtcbiAgICAgICAgaWYgKHYgaW5zdGFuY2VvZiBSZWdFeHApXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgaWYgKHR5cGVvZiB2ICE9PSAnc3RyaW5nJylcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIG5ldyBSZWdFeHAodik7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoX2EpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgaGV4OiAodikgPT4gdHlwZW9mIHYgPT09ICdzdHJpbmcnICYmIC9eIz8oW2EtZjAtOV17Nn18W2EtZjAtOV17M30pJC9pLnRlc3QodiksXG4gICAgLy8gU3RyaW5nLW9ubHk6IGNvZXJjaW5nIHZpYSBTdHJpbmcoKSB3b3VsZCBsZXQgZS5nLiBbJ2FAYi5jbyddIHN0cmluZ2lmeVxuICAgIC8vIGludG8gYSBwYXNzaW5nIHZhbHVlLlxuICAgIGVtYWlsOiAodikgPT4gdHlwZW9mIHYgPT09ICdzdHJpbmcnICYmIC9eW15cXHNAXStAW15cXHNAXStcXC5bXlxcc0BdKyQvLnRlc3QodiksXG4gICAgdXJsOiAodikgPT4ge1xuICAgICAgICBpZiAodHlwZW9mIHYgIT09ICdzdHJpbmcnKVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgbmV3IFVSTCh2KTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChfYSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfSxcbn07XG4vKiogRnJpZW5kbHkgZ2VuZXJhdGVkIG1lc3NhZ2VzIGZvciB0aGUgbGVnYWN5IHR5cGUgbmFtZXM7IG90aGVycyBnZXQgYSBnZW5lcmljIG9uZS4gKi9cbmZ1bmN0aW9uIHR5cGVGYWlsdXJlTWVzc2FnZShuYW1lLCB0eXBlKSB7XG4gICAgaWYgKHR5cGUgPT09ICdudW1iZXInKVxuICAgICAgICByZXR1cm4gYCR7bmFtZX0gbXVzdCBiZSBhIG51bWJlcmA7XG4gICAgaWYgKHR5cGUgPT09ICdlbWFpbCcpXG4gICAgICAgIHJldHVybiBgJHtuYW1lfSBtdXN0IGJlIGEgdmFsaWQgZW1haWxgO1xuICAgIGlmICh0eXBlID09PSAndXJsJylcbiAgICAgICAgcmV0dXJuIGAke25hbWV9IG11c3QgYmUgYSB2YWxpZCBVUkxgO1xuICAgIHJldHVybiBgJHtuYW1lfSBpcyBub3QgYSB2YWxpZCAke3R5cGV9YDtcbn1cbi8qKiBNZWFzdXJlIGEgdmFsdWUgZm9yIGxlbi9taW4vbWF4OiBzdHJpbmcg4oaSIGxlbmd0aCwgYXJyYXkg4oaSIGNvdW50LCBudW1iZXIg4oaSIHZhbHVlLiAqL1xuZnVuY3Rpb24gbWVhc3VyZVZhbHVlKHZhbHVlKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpXG4gICAgICAgIHJldHVybiB7IG1lYXN1cmVkOiB2YWx1ZS5sZW5ndGgsIHVuaXQ6ICcgY2hhcmFjdGVycycgfTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpXG4gICAgICAgIHJldHVybiB7IG1lYXN1cmVkOiB2YWx1ZS5sZW5ndGgsIHVuaXQ6ICcgaXRlbXMnIH07XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgJiYgIU51bWJlci5pc05hTih2YWx1ZSkpXG4gICAgICAgIHJldHVybiB7IG1lYXN1cmVkOiB2YWx1ZSwgdW5pdDogJycgfTtcbiAgICByZXR1cm4gbnVsbDtcbn1cbi8qKlxuICogRXZhbHVhdGUgZXZlcnkgYnVpbHQtaW4gKG5vbi1gdmFsaWRhdG9yYCkgcnVsZSBraW5kIGZvciBhIHNpbmdsZSBydWxlLlxuICogUmV0dXJucyB0aGUgZXJyb3IgY29udGVudCBmb3IgdGhlIGZpcnN0IGZhaWxpbmcgY2hlY2ssIG9yIG51bGwuXG4gKlxuICogRW1wdHkgdmFsdWVzICh1bmRlZmluZWQgLyBudWxsIC8gJycgLyBlbXB0eSBhcnJheSkgYXJlIG9ubHkgY2hlY2tlZCBieVxuICogYHJlcXVpcmVkYCDigJQgZXZlcnkgb3RoZXIgYnVpbHRpbiBjaGVjayBpcyBza2lwcGVkLCBzbyBvcHRpb25hbCBmaWVsZHNcbiAqIGRvbid0IGVycm9yIHVudGlsIHRoZXkgaGF2ZSBjb250ZW50LiBDdXN0b20gdmFsaWRhdG9ycyBhcmUgTk9UIHN1YmplY3QgdG9cbiAqIHRoaXMgc2tpcCAodGhleSByZWNlaXZlIHRoZSBlbXB0eSB2YWx1ZSBhbmQgZGVjaWRlIHRoZW1zZWx2ZXMpLlxuICovXG5mdW5jdGlvbiBjaGVja0J1aWx0aW5SdWxlcyhydWxlLCB2YWx1ZSwgbmFtZSkge1xuICAgIGlmIChydWxlLnJlcXVpcmVkICYmIGlzRW1wdHlWYWx1ZSh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIHJ1bGUubWVzc2FnZSB8fCBgJHtuYW1lfSBpcyByZXF1aXJlZGA7XG4gICAgfVxuICAgIGlmIChpc0VtcHR5VmFsdWUodmFsdWUpKVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAvLyBOb24tZW1wdHkgc3RyaW5nIG9mIG9ubHkgd2hpdGVzcGFjZSAodGhlIHJlcXVpcmVkK3doaXRlc3BhY2UgdHJpbSBpZGlvbSkuXG4gICAgaWYgKHJ1bGUud2hpdGVzcGFjZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHZhbHVlLnRyaW0oKSA9PT0gJycpIHtcbiAgICAgICAgcmV0dXJuIHJ1bGUubWVzc2FnZSB8fCBgJHtuYW1lfSBjYW5ub3QgYmUgYmxhbmtgO1xuICAgIH1cbiAgICAvLyBsZW46IGV4YWN0IGxlbmd0aC9jb3VudC92YWx1ZSDigJQgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIG1pbi9tYXguXG4gICAgaWYgKHJ1bGUubGVuICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc3QgbSA9IG1lYXN1cmVWYWx1ZSh2YWx1ZSk7XG4gICAgICAgIGlmIChtICE9PSBudWxsICYmIG0ubWVhc3VyZWQgIT09IHJ1bGUubGVuKSB7XG4gICAgICAgICAgICByZXR1cm4gcnVsZS5tZXNzYWdlIHx8IGAke25hbWV9IG11c3QgYmUgZXhhY3RseSAke3J1bGUubGVufSR7bS51bml0fWA7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZWxzZSBpZiAocnVsZS5taW4gIT09IHVuZGVmaW5lZCB8fCBydWxlLm1heCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbnN0IG0gPSBtZWFzdXJlVmFsdWUodmFsdWUpO1xuICAgICAgICBpZiAobSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgaWYgKHJ1bGUubWluICE9PSB1bmRlZmluZWQgJiYgbS5tZWFzdXJlZCA8IHJ1bGUubWluKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJ1bGUubWVzc2FnZSB8fCBgJHtuYW1lfSBtdXN0IGJlIGF0IGxlYXN0ICR7cnVsZS5taW59JHttLnVuaXR9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChydWxlLm1heCAhPT0gdW5kZWZpbmVkICYmIG0ubWVhc3VyZWQgPiBydWxlLm1heCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBydWxlLm1lc3NhZ2UgfHwgYCR7bmFtZX0gbXVzdCBiZSBubyBtb3JlIHRoYW4gJHtydWxlLm1heH0ke20udW5pdH1gO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChydWxlLnBhdHRlcm4gJiYgdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICAvLyBBIC9nIG9yIC95IHJlZ2V4IGlzIHN0YXRlZnVsOiBsYXN0SW5kZXggcGVyc2lzdHMgYWNyb3NzIC50ZXN0KCkgY2FsbHMsXG4gICAgICAgIC8vIHNvIHJlcGVhdGVkIHJ1bnMgd291bGQgYWx0ZXJuYXRlIHBhc3MvZmFpbCDigJQgcmVzZXQgaXQgZXZlcnkgcnVuLlxuICAgICAgICBpZiAocnVsZS5wYXR0ZXJuLmdsb2JhbCB8fCBydWxlLnBhdHRlcm4uc3RpY2t5KVxuICAgICAgICAgICAgcnVsZS5wYXR0ZXJuLmxhc3RJbmRleCA9IDA7XG4gICAgICAgIGlmICghcnVsZS5wYXR0ZXJuLnRlc3QodmFsdWUpKSB7XG4gICAgICAgICAgICByZXR1cm4gcnVsZS5tZXNzYWdlIHx8IGAke25hbWV9IGZvcm1hdCBpcyBpbnZhbGlkYDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAocnVsZS50eXBlICYmIHJ1bGUudHlwZSAhPT0gJ2VudW0nICYmICFUWVBFX0NIRUNLU1tydWxlLnR5cGVdKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gcnVsZS5tZXNzYWdlIHx8IHR5cGVGYWlsdXJlTWVzc2FnZShuYW1lLCBydWxlLnR5cGUpO1xuICAgIH1cbiAgICAvLyBlbnVtIG1lbWJlcnNoaXA6IGFwcGxpZXMgZm9yIHR5cGUgJ2VudW0nIG9yIHdoZW5ldmVyIHJ1bGUuZW51bSBpcyBwcmVzZW50LlxuICAgIGlmIChydWxlLmVudW0gJiYgQXJyYXkuaXNBcnJheShydWxlLmVudW0pICYmICFydWxlLmVudW0uaW5jbHVkZXModmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBydWxlLm1lc3NhZ2UgfHwgYCR7bmFtZX0gbXVzdCBiZSBvbmUgb2YgJHtydWxlLmVudW0uam9pbignLCAnKX1gO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbn1cbmZ1bmN0aW9uIHRvUnVsZUFycmF5KHJ1bGVzKSB7XG4gICAgaWYgKCFydWxlcylcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KHJ1bGVzKSA/IHJ1bGVzIDogW3J1bGVzXTtcbn1cbi8qKiBNZW1iZXJzIGZvciBkZWVwIHJ1bGVzOiBhcnJheSDihpIgaW5kZXhlZCBlbnRyaWVzLCBwbGFpbiBvYmplY3Qg4oaSIGtleSBlbnRyaWVzLiAqL1xuZnVuY3Rpb24gZGVlcE1lbWJlcnModmFsdWUpIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpXG4gICAgICAgIHJldHVybiB2YWx1ZS5tYXAoKG1lbWJlciwgaW5kZXgpID0+IFtTdHJpbmcoaW5kZXgpLCBtZW1iZXJdKTtcbiAgICBpZiAodmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JylcbiAgICAgICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHZhbHVlKTtcbiAgICByZXR1cm4gW107XG59XG5jb25zdCBQQVNTID0geyBlcnJvcjogbnVsbCwgd2FybmluZzogbnVsbCB9O1xuLyoqXG4gKiBEZXYgZ3VhcmQgZm9yIHRoZSBwcmUtMC4wLjc2IHZhbGlkYXRvciBjb250cmFjdDogcmV0dXJuaW5nIGEgc3RyaW5nIG9yXG4gKiBgZmFsc2VgIHVzZWQgdG8gRkFJTCB0aGUgcnVsZSDigJQgdW5kZXIgdGhlIGAocnVsZSwgdmFsdWUpYCBjb250cmFjdCByZXR1cm5cbiAqIHZhbHVlcyBhcmUgaWdub3JlZCBhbmQgb25seSB0aHJvdy9yZWplY3QgZmFpbHMuIFN1Y2ggYSByZXR1cm4gaXMgYWxtb3N0XG4gKiBjZXJ0YWlubHkgYSBsZWdhY3kgdmFsaWRhdG9yIHNpbGVudGx5IHBhc3NpbmcsIHNvIGl0IHdhcm5zIG9uY2UuXG4gKi9cbmZ1bmN0aW9uIHdhcm5MZWdhY3lWYWxpZGF0b3JSZXR1cm4obmFtZSwgcmVzdWx0KSB7XG4gICAgaWYgKHR5cGVvZiByZXN1bHQgIT09ICdzdHJpbmcnICYmIHJlc3VsdCAhPT0gZmFsc2UpXG4gICAgICAgIHJldHVybjtcbiAgICBkZXZXYXJuT25jZShgdmFsaWRhdG9yLXJldHVybjoke25hbWV9YCwgYFtQcm9Gb3JtXSBGaWVsZCBcIiR7bmFtZX1cIjogYSBjdXN0b20gdmFsaWRhdG9yIHJldHVybmVkICR7dHlwZW9mIHJlc3VsdCA9PT0gJ3N0cmluZycgPyAnYSBzdHJpbmcnIDogJ2ZhbHNlJ30g4oCUIHJldHVybiB2YWx1ZXMgYXJlIElHTk9SRUQ7IHZhbGlkYXRvcnMgZmFpbCBieSB0aHJvd2luZyBvciByZWplY3RpbmcgKGEgdGhyb3duIEVycm9yJ3MgbWVzc2FnZSBiZWNvbWVzIHRoZSBmaWVsZCBlcnJvcikuYCk7XG59XG4vKiogUnVuIGEgcnVsZSdzIHRyYW5zZm9ybSwgY29udGFpbmluZyB0aHJvd3MgYXMgYSBydWxlIGZhaWx1cmUuICovXG5mdW5jdGlvbiBhcHBseVRyYW5zZm9ybShydWxlLCByYXdWYWx1ZSkge1xuICAgIGlmICh0eXBlb2YgcnVsZS50cmFuc2Zvcm0gIT09ICdmdW5jdGlvbicpXG4gICAgICAgIHJldHVybiB7IG9rOiB0cnVlLCB2YWx1ZTogcmF3VmFsdWUgfTtcbiAgICB0cnkge1xuICAgICAgICByZXR1cm4geyBvazogdHJ1ZSwgdmFsdWU6IHJ1bGUudHJhbnNmb3JtKHJhd1ZhbHVlKSB9O1xuICAgIH1cbiAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgIHJldHVybiB7IG9rOiBmYWxzZSwgZmFpbHVyZTogcmVzb2x2ZUZhaWx1cmVNZXNzYWdlKGVyciwgcnVsZSkgfTtcbiAgICB9XG59XG4vKipcbiAqIEZsYXR0ZW4gYSBydWxlJ3MgZGVlcCBzb3VyY2VzIChgZmllbGRzYCBwZXIga2V5LCB0aGVuIGBkZWZhdWx0RmllbGRgIHBlclxuICogbWVtYmVyKSBpbnRvIFtzdWJSdWxlLCBtZW1iZXJWYWx1ZSwgbWVtYmVyTmFtZV0gdHVwbGVzIOKAlCB0aGUgc2luZ2xlIHBsYWNlXG4gKiB0aGF0IGtub3dzIGhvdyBkZWVwIHJ1bGVzIG1hcCBvbnRvIGEgY29udGFpbmVyIHZhbHVlLlxuICovXG5mdW5jdGlvbiBkZWVwUnVsZUVudHJpZXMocnVsZSwgdmFsdWUsIG5hbWUpIHtcbiAgICBjb25zdCBlbnRyaWVzID0gW107XG4gICAgaWYgKHJ1bGUuZmllbGRzKSB7XG4gICAgICAgIGNvbnN0IHNvdXJjZSA9IHZhbHVlO1xuICAgICAgICBmb3IgKGNvbnN0IFtrZXksIHN1YlJ1bGVzXSBvZiBPYmplY3QuZW50cmllcyhydWxlLmZpZWxkcykpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3Qgc3ViUnVsZSBvZiB0b1J1bGVBcnJheShzdWJSdWxlcykpIHtcbiAgICAgICAgICAgICAgICBlbnRyaWVzLnB1c2goW3N1YlJ1bGUsIHNvdXJjZVtrZXldLCBgJHtuYW1lfS4ke2tleX1gXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKHJ1bGUuZGVmYXVsdEZpZWxkKSB7XG4gICAgICAgIGZvciAoY29uc3QgW2tleSwgbWVtYmVyXSBvZiBkZWVwTWVtYmVycyh2YWx1ZSkpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3Qgc3ViUnVsZSBvZiB0b1J1bGVBcnJheShydWxlLmRlZmF1bHRGaWVsZCkpIHtcbiAgICAgICAgICAgICAgICBlbnRyaWVzLnB1c2goW3N1YlJ1bGUsIG1lbWJlciwgYCR7bmFtZX0uJHtrZXl9YF0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBlbnRyaWVzO1xufVxuLyoqXG4gKiBNZXJnZSBhIHN1Yi1ydWxlJ3Mgb3V0Y29tZSBpbnRvIHRoZSBwYXJlbnQncyBjaGFubmVscy4gQSBzdWItcnVsZSBmbGFnZ2VkXG4gKiBgd2FybmluZ09ubHlgIGNvbnRyaWJ1dGVzIGl0cyBmYWlsdXJlIGFzIGEgV0FSTklORzsgb3RoZXJ3aXNlIGl0cyBlcnJvclxuICogYmxvY2tzLiBSZXR1cm5zIHRydWUgd2hlbiBhIGJsb2NraW5nIGVycm9yIGxhbmRlZCAoc3RvcCB3YWxraW5nKS5cbiAqL1xuZnVuY3Rpb24gbWVyZ2VTdWJSZXN1bHQoYWNjLCBzdWJSdWxlLCBzdWIpIHtcbiAgICBpZiAoc3ViLndhcm5pbmcgIT09IG51bGwgJiYgYWNjLndhcm5pbmcgPT09IG51bGwpXG4gICAgICAgIGFjYy53YXJuaW5nID0gc3ViLndhcm5pbmc7XG4gICAgaWYgKHN1Yi5lcnJvciAhPT0gbnVsbCkge1xuICAgICAgICBpZiAoc3ViUnVsZS53YXJuaW5nT25seSkge1xuICAgICAgICAgICAgaWYgKGFjYy53YXJuaW5nID09PSBudWxsKVxuICAgICAgICAgICAgICAgIGFjYy53YXJuaW5nID0gc3ViLmVycm9yO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgYWNjLmVycm9yID0gc3ViLmVycm9yO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xufVxuLyoqXG4gKiBGb2xkIG9uZSBydWxlJ3Mgb3V0Y29tZSBpbnRvIHRoZSBydW4tbGV2ZWwgY2hhbm5lbHMuIEEgcnVsZSBmbGFnZ2VkXG4gKiBgd2FybmluZ09ubHlgIGRvd25ncmFkZXMgZXZlcnl0aGluZyBpdCBwcm9kdWNlZCAob3duIGNoZWNrcyBBTkQgZGVlcFxuICogc3ViLXJ1bGVzKSB0byBhIHdhcm5pbmcuIFJldHVybnMgdGhlIGJsb2NraW5nIGVycm9yIHRvIHN1cmZhY2UsIG9yIG51bGwuXG4gKi9cbmZ1bmN0aW9uIGZvbGRSdWxlUmVzdWx0KHJ1bGUsIHJlc3VsdCwgc3RhdGUpIHtcbiAgICB2YXIgX2E7XG4gICAgaWYgKHJ1bGUud2FybmluZ09ubHkpIHtcbiAgICAgICAgY29uc3QgY29udGVudCA9IChfYSA9IHJlc3VsdC5lcnJvcikgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogcmVzdWx0Lndhcm5pbmc7XG4gICAgICAgIGlmIChjb250ZW50ICE9PSBudWxsICYmIHN0YXRlLndhcm5pbmcgPT09IG51bGwpXG4gICAgICAgICAgICBzdGF0ZS53YXJuaW5nID0gY29udGVudDtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGlmIChyZXN1bHQud2FybmluZyAhPT0gbnVsbCAmJiBzdGF0ZS53YXJuaW5nID09PSBudWxsKVxuICAgICAgICBzdGF0ZS53YXJuaW5nID0gcmVzdWx0Lndhcm5pbmc7XG4gICAgcmV0dXJuIHJlc3VsdC5lcnJvcjtcbn1cbi8qKiBFdmFsdWF0ZSBPTkUgcnVsZSAodHJhbnNmb3JtIOKGkiBidWlsdGluIGNoZWNrcyDihpIgdmFsaWRhdG9yIOKGkiBkZWVwIHJ1bGVzKTsgY3VzdG9tIHZhbGlkYXRvcnMgYXJlIGF3YWl0ZWQuICovXG5mdW5jdGlvbiBldmFsUnVsZUFzeW5jKHJ1bGUsIHJhd1ZhbHVlLCBuYW1lKSB7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgY29uc3QgcHJlcCA9IGFwcGx5VHJhbnNmb3JtKHJ1bGUsIHJhd1ZhbHVlKTtcbiAgICAgICAgaWYgKCFwcmVwLm9rKVxuICAgICAgICAgICAgcmV0dXJuIHsgZXJyb3I6IHByZXAuZmFpbHVyZSwgd2FybmluZzogbnVsbCB9O1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHByZXAudmFsdWU7XG4gICAgICAgIGxldCBmYWlsdXJlID0gY2hlY2tCdWlsdGluUnVsZXMocnVsZSwgdmFsdWUsIG5hbWUpO1xuICAgICAgICBpZiAoZmFpbHVyZSA9PT0gbnVsbCAmJiB0eXBlb2YgcnVsZS52YWxpZGF0b3IgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gKHlpZWxkIHJ1bGUudmFsaWRhdG9yKHJ1bGUsIHZhbHVlKSk7XG4gICAgICAgICAgICAgICAgd2FybkxlZ2FjeVZhbGlkYXRvclJldHVybihuYW1lLCByZXN1bHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgIGZhaWx1cmUgPSByZXNvbHZlRmFpbHVyZU1lc3NhZ2UoZXJyLCBydWxlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoZmFpbHVyZSAhPT0gbnVsbClcbiAgICAgICAgICAgIHJldHVybiB7IGVycm9yOiBmYWlsdXJlLCB3YXJuaW5nOiBudWxsIH07XG4gICAgICAgIGlmICgocnVsZS5maWVsZHMgfHwgcnVsZS5kZWZhdWx0RmllbGQpICYmICFpc0VtcHR5VmFsdWUodmFsdWUpKSB7XG4gICAgICAgICAgICAvLyBEZWVwIHJ1bGVzIG5lZWQgYSBjb250YWluZXI7IGEgbm9uLWVtcHR5IHByaW1pdGl2ZSBmYWlscyB0aGUgUEFSRU5UXG4gICAgICAgICAgICAvLyAoY2xlYXIgYXR0cmlidXRpb24pIGluc3RlYWQgb2YgcHJvZHVjaW5nIGNvbmZ1c2luZyBjaGlsZCBlcnJvcnMuXG4gICAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0JyB8fCB2YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7IGVycm9yOiBydWxlLm1lc3NhZ2UgfHwgYCR7bmFtZX0gbXVzdCBiZSBhbiBvYmplY3Qgb3IgYW4gYXJyYXlgLCB3YXJuaW5nOiBudWxsIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBhY2MgPSB7IGVycm9yOiBudWxsLCB3YXJuaW5nOiBudWxsIH07XG4gICAgICAgICAgICBmb3IgKGNvbnN0IFtzdWJSdWxlLCBzdWJWYWx1ZSwgc3ViTmFtZV0gb2YgZGVlcFJ1bGVFbnRyaWVzKHJ1bGUsIHZhbHVlLCBuYW1lKSkge1xuICAgICAgICAgICAgICAgIGlmIChtZXJnZVN1YlJlc3VsdChhY2MsIHN1YlJ1bGUsIHlpZWxkIGV2YWxSdWxlQXN5bmMoc3ViUnVsZSwgc3ViVmFsdWUsIHN1Yk5hbWUpKSlcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBQQVNTO1xuICAgIH0pO1xufVxuLyoqXG4gKiBSdWxlIHJ1bi4gQ3VzdG9tIHZhbGlkYXRvcnMgYXJlIGF3YWl0ZWQgKHN5bmMgb3IgYXN5bmMpOiByZXNvbHZpbmcgcGFzc2VzLFxuICogcmVqZWN0aW5nL3Rocm93aW5nIGZhaWxzLiBSZXR1cm4gdmFsdWVzIGFyZSBpZ25vcmVkLlxuICpcbiAqIFRoZSBwZXItcnVsZSB0cnkvY2F0Y2ggaXMgdGhlIHRvdGFsaXR5IGNob2tlIHBvaW50OiBOTyBpbnB1dCDigJQgaW5jbHVkaW5nXG4gKiBleG90aWMgdmFsdWVzIHRoYXQgYnJlYWsgYSBidWlsdGluIGNoZWNrIOKAlCBtYXkgZXNjYXBlIGFzIGEgdGhyb3c7IGV2ZXJ5XG4gKiBmYWlsdXJlIHN1cmZhY2VzIHRocm91Z2ggdGhlIGVycm9yL3dhcm5pbmcgY2hhbm5lbHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBydW5SdWxlc0FzeW5jKG5hbWUsIHZhbHVlLCB2YWx1ZXMsIHJ1bGVzLCBpbnN0YW5jZSkge1xuICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGNvbnN0IHN0YXRlID0geyB3YXJuaW5nOiBudWxsIH07XG4gICAgICAgIGZvciAoY29uc3QgcnVsZSBvZiByZXNvbHZlUnVsZXMocnVsZXMsIHZhbHVlcywgaW5zdGFuY2UpKSB7XG4gICAgICAgICAgICBsZXQgcmVzdWx0O1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICByZXN1bHQgPSB5aWVsZCBldmFsUnVsZUFzeW5jKHJ1bGUsIHZhbHVlLCBuYW1lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgPSB7IGVycm9yOiByZXNvbHZlRmFpbHVyZU1lc3NhZ2UoZXJyLCBydWxlKSwgd2FybmluZzogbnVsbCB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgZXJyb3IgPSBmb2xkUnVsZVJlc3VsdChydWxlLCByZXN1bHQsIHN0YXRlKTtcbiAgICAgICAgICAgIGlmIChlcnJvciAhPT0gbnVsbClcbiAgICAgICAgICAgICAgICByZXR1cm4geyBlcnJvciwgd2FybmluZzogc3RhdGUud2FybmluZyB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IGVycm9yOiBudWxsLCB3YXJuaW5nOiBzdGF0ZS53YXJuaW5nIH07XG4gICAgfSk7XG59IixudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
@@ -12,7 +12,7 @@ export interface UseFormItemOptions {
12
12
  validateTrigger?: ValidateTriggerProp;
13
13
  }
14
14
  export interface UseFormItemReturn {
15
- fieldValue: unknown;
15
+ fieldValue: any;
16
16
  fieldError: ReactNode | undefined;
17
17
  fieldWarning: ReactNode | undefined;
18
18
  fieldValidating: boolean;