@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.
- package/es/components/ProForm/ProForm.d.ts +1 -1
- package/es/components/ProForm/ProForm.js +2 -3
- package/es/components/ProForm/ProFormDependency.d.ts +2 -1
- package/es/components/ProForm/ProFormDependency.js +1 -1
- package/es/components/ProForm/ProFormItem.d.ts +7 -2
- package/es/components/ProForm/ProFormItem.js +1 -1
- package/es/components/ProForm/ProFormList.d.ts +6 -1
- package/es/components/ProForm/ProFormList.js +13 -5
- package/es/components/ProForm/SchemaForm.d.ts +1 -1
- package/es/components/ProForm/SchemaForm.js +8 -5
- package/es/components/ProForm/context.d.ts +8 -7
- package/es/components/ProForm/context.js +1 -1
- package/es/components/ProForm/core/constants.d.ts +1 -1
- package/es/components/ProForm/core/constants.js +2 -2
- package/es/components/ProForm/core/formStore.d.ts +4 -4
- package/es/components/ProForm/core/formStore.js +1 -1
- package/es/components/ProForm/core/hooks/useForm.d.ts +1 -1
- package/es/components/ProForm/core/hooks/useForm.js +34 -9
- package/es/components/ProForm/core/hooks/useFormCore.d.ts +2 -2
- package/es/components/ProForm/core/hooks/useFormCore.js +17 -123
- package/es/components/ProForm/core/interface.d.ts +70 -91
- package/es/components/ProForm/core/namePathType.d.ts +25 -0
- package/es/components/ProForm/core/namePathType.js +2 -0
- package/es/components/ProForm/core/pathUtils.d.ts +5 -3
- package/es/components/ProForm/core/pathUtils.js +19 -1
- package/es/components/ProForm/core/runRules.d.ts +8 -17
- package/es/components/ProForm/core/runRules.js +22 -129
- package/es/components/ProForm/core/useFormItem.d.ts +1 -1
- package/es/components/ProForm/core/useFormItem.js +14 -66
- package/es/components/ProForm/core/validationError.d.ts +2 -2
- package/es/components/ProForm/core/validationError.js +1 -1
- package/es/components/ProForm/fields/ProFormCheckbox.d.ts +1 -1
- package/es/components/ProForm/fields/ProFormCheckboxGroup.d.ts +1 -1
- package/es/components/ProForm/fields/ProFormCheckboxGroup.js +1 -1
- package/es/components/ProForm/fields/ProFormDatePicker.d.ts +1 -1
- package/es/components/ProForm/fields/ProFormDatePicker.js +1 -1
- package/es/components/ProForm/fields/ProFormFieldSet.d.ts +7 -2
- package/es/components/ProForm/fields/ProFormFieldSet.js +5 -7
- package/es/components/ProForm/fields/ProFormPassword.d.ts +1 -1
- package/es/components/ProForm/fields/ProFormRadioGroup.d.ts +1 -1
- package/es/components/ProForm/fields/ProFormRadioGroup.js +1 -1
- package/es/components/ProForm/fields/ProFormSelect.d.ts +1 -1
- package/es/components/ProForm/fields/ProFormSelect.js +1 -1
- package/es/components/ProForm/fields/ProFormSlider.d.ts +1 -1
- package/es/components/ProForm/fields/ProFormSwitch.d.ts +1 -1
- package/es/components/ProForm/fields/ProFormText.d.ts +1 -1
- package/es/components/ProForm/fields/ProFormTextArea.d.ts +1 -1
- package/es/components/ProForm/fields/ProFormUpload.d.ts +1 -1
- package/es/components/ProForm/fields/ProFormUpload.js +1 -1
- package/es/components/ProForm/fields/createProFormField.d.ts +8 -2
- package/es/components/ProForm/fields/createProFormField.js +3 -3
- package/es/components/ProForm/hooks/useFieldRequest.d.ts +1 -1
- package/es/components/ProForm/hooks/useFieldRequest.js +1 -1
- package/es/components/ProForm/hooks/useUrlSync.d.ts +8 -7
- package/es/components/ProForm/hooks/useUrlSync.js +1 -1
- package/es/components/ProForm/index.d.ts +35 -26
- package/es/components/ProForm/index.js +1 -1
- package/es/components/ProForm/interface.d.ts +96 -91
- package/es/components/ProForm/layouts/DialogForm.d.ts +1 -1
- package/es/components/ProForm/layouts/DialogForm.js +1 -1
- package/es/components/ProForm/layouts/DrawerForm.d.ts +1 -1
- package/es/components/ProForm/layouts/DrawerForm.js +1 -1
- package/es/components/ProForm/layouts/QueryFilter.d.ts +1 -1
- package/es/components/ProForm/layouts/QueryFilter.js +1 -1
- package/es/components/ProForm/layouts/useOverlayForm.d.ts +2 -2
- package/es/components/ProForm/layouts/useOverlayForm.js +1 -1
- package/es/components/ProForm/utils.d.ts +8 -8
- package/es/components/ProForm/utils.js +1 -1
- package/es/index.css +1 -1
- package/es/index.d.ts +1 -1
- package/es/index.js +1 -1
- package/lib/components/ProForm/ProForm.d.ts +1 -1
- package/lib/components/ProForm/ProForm.js +2 -3
- package/lib/components/ProForm/ProFormDependency.d.ts +2 -1
- package/lib/components/ProForm/ProFormDependency.js +1 -1
- package/lib/components/ProForm/ProFormItem.d.ts +7 -2
- package/lib/components/ProForm/ProFormItem.js +1 -1
- package/lib/components/ProForm/ProFormList.d.ts +6 -1
- package/lib/components/ProForm/ProFormList.js +13 -5
- package/lib/components/ProForm/SchemaForm.d.ts +1 -1
- package/lib/components/ProForm/SchemaForm.js +8 -5
- package/lib/components/ProForm/context.d.ts +8 -7
- package/lib/components/ProForm/context.js +1 -1
- package/lib/components/ProForm/core/constants.d.ts +1 -1
- package/lib/components/ProForm/core/constants.js +2 -2
- package/lib/components/ProForm/core/formStore.d.ts +4 -4
- package/lib/components/ProForm/core/formStore.js +1 -1
- package/lib/components/ProForm/core/hooks/useForm.d.ts +1 -1
- package/lib/components/ProForm/core/hooks/useForm.js +34 -9
- package/lib/components/ProForm/core/hooks/useFormCore.d.ts +2 -2
- package/lib/components/ProForm/core/hooks/useFormCore.js +16 -122
- package/lib/components/ProForm/core/interface.d.ts +70 -91
- package/lib/components/ProForm/core/namePathType.d.ts +25 -0
- package/lib/components/ProForm/core/namePathType.js +6 -0
- package/lib/components/ProForm/core/pathUtils.d.ts +5 -3
- package/lib/components/ProForm/core/pathUtils.js +20 -1
- package/lib/components/ProForm/core/runRules.d.ts +8 -17
- package/lib/components/ProForm/core/runRules.js +22 -130
- package/lib/components/ProForm/core/useFormItem.d.ts +1 -1
- package/lib/components/ProForm/core/useFormItem.js +17 -69
- package/lib/components/ProForm/core/validationError.d.ts +2 -2
- package/lib/components/ProForm/core/validationError.js +1 -1
- package/lib/components/ProForm/fields/ProFormCheckbox.d.ts +1 -1
- package/lib/components/ProForm/fields/ProFormCheckboxGroup.d.ts +1 -1
- package/lib/components/ProForm/fields/ProFormCheckboxGroup.js +1 -1
- package/lib/components/ProForm/fields/ProFormDatePicker.d.ts +1 -1
- package/lib/components/ProForm/fields/ProFormDatePicker.js +1 -1
- package/lib/components/ProForm/fields/ProFormFieldSet.d.ts +7 -2
- package/lib/components/ProForm/fields/ProFormFieldSet.js +5 -7
- package/lib/components/ProForm/fields/ProFormPassword.d.ts +1 -1
- package/lib/components/ProForm/fields/ProFormRadioGroup.d.ts +1 -1
- package/lib/components/ProForm/fields/ProFormRadioGroup.js +1 -1
- package/lib/components/ProForm/fields/ProFormSelect.d.ts +1 -1
- package/lib/components/ProForm/fields/ProFormSelect.js +1 -1
- package/lib/components/ProForm/fields/ProFormSlider.d.ts +1 -1
- package/lib/components/ProForm/fields/ProFormSwitch.d.ts +1 -1
- package/lib/components/ProForm/fields/ProFormText.d.ts +1 -1
- package/lib/components/ProForm/fields/ProFormTextArea.d.ts +1 -1
- package/lib/components/ProForm/fields/ProFormUpload.d.ts +1 -1
- package/lib/components/ProForm/fields/ProFormUpload.js +1 -1
- package/lib/components/ProForm/fields/createProFormField.d.ts +8 -2
- package/lib/components/ProForm/fields/createProFormField.js +3 -3
- package/lib/components/ProForm/hooks/useFieldRequest.d.ts +1 -1
- package/lib/components/ProForm/hooks/useFieldRequest.js +1 -1
- package/lib/components/ProForm/hooks/useUrlSync.d.ts +8 -7
- package/lib/components/ProForm/hooks/useUrlSync.js +1 -1
- package/lib/components/ProForm/index.d.ts +35 -26
- package/lib/components/ProForm/index.js +1 -1
- package/lib/components/ProForm/interface.d.ts +96 -91
- package/lib/components/ProForm/layouts/DialogForm.d.ts +1 -1
- package/lib/components/ProForm/layouts/DialogForm.js +1 -1
- package/lib/components/ProForm/layouts/DrawerForm.d.ts +1 -1
- package/lib/components/ProForm/layouts/DrawerForm.js +1 -1
- package/lib/components/ProForm/layouts/QueryFilter.d.ts +1 -1
- package/lib/components/ProForm/layouts/QueryFilter.js +1 -1
- package/lib/components/ProForm/layouts/useOverlayForm.d.ts +2 -2
- package/lib/components/ProForm/layouts/useOverlayForm.js +1 -1
- package/lib/components/ProForm/utils.d.ts +8 -8
- package/lib/components/ProForm/utils.js +1 -1
- package/lib/index.css +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.js +1 -1
- package/package.json +1 -1
- package/scripts/mcp-server/examples.generated.json +53 -17
- package/scripts/mcp-server/index.generated.json +1734 -160
|
@@ -9,7 +9,6 @@ exports.filterRulesByTrigger = filterRulesByTrigger;
|
|
|
9
9
|
exports.normalizeTriggers = normalizeTriggers;
|
|
10
10
|
exports.resolveRules = resolveRules;
|
|
11
11
|
exports.runRulesAsync = runRulesAsync;
|
|
12
|
-
exports.runRulesSync = runRulesSync;
|
|
13
12
|
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
14
13
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
15
14
|
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
|
@@ -45,9 +44,6 @@ var __awaiter = void 0 && (void 0).__awaiter || function (thisArg, _arguments, P
|
|
|
45
44
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
46
45
|
});
|
|
47
46
|
};
|
|
48
|
-
function isThenable(value) {
|
|
49
|
-
return value !== null && (0, _typeof2["default"])(value) === 'object' && typeof value.then === 'function';
|
|
50
|
-
}
|
|
51
47
|
/** Empty for `required`: undefined / null / '' / empty array. */
|
|
52
48
|
function isEmptyValue(value) {
|
|
53
49
|
return value === undefined || value === null || value === '' || Array.isArray(value) && value.length === 0;
|
|
@@ -143,7 +139,7 @@ function filterRulesByTrigger(rules, trigger, activeTriggers, fieldName) {
|
|
|
143
139
|
if (!matches && ruleTriggers.length > 0 && !ruleTriggers.some(function (t) {
|
|
144
140
|
return activeTriggers.includes(t);
|
|
145
141
|
})) {
|
|
146
|
-
var name = fieldName !== null && fieldName !== void 0 ? fieldName : '(
|
|
142
|
+
var name = fieldName !== null && fieldName !== void 0 ? fieldName : '(any)';
|
|
147
143
|
(0, _devWarning.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."));
|
|
148
144
|
}
|
|
149
145
|
return matches;
|
|
@@ -413,72 +409,10 @@ function foldRuleResult(rule, result, state) {
|
|
|
413
409
|
if (result.warning !== null && state.warning === null) state.warning = result.warning;
|
|
414
410
|
return result.error;
|
|
415
411
|
}
|
|
416
|
-
/**
|
|
417
|
-
* Evaluate ONE rule (transform → builtin checks → validator → deep rules)
|
|
418
|
-
* synchronously. Promise-returning validators are deferred (see runRulesSync).
|
|
419
|
-
*/
|
|
420
|
-
function evalRuleSync(rule, rawValue, name) {
|
|
421
|
-
var prep = applyTransform(rule, rawValue);
|
|
422
|
-
if (!prep.ok) return {
|
|
423
|
-
error: prep.failure,
|
|
424
|
-
warning: null
|
|
425
|
-
};
|
|
426
|
-
var value = prep.value;
|
|
427
|
-
var failure = checkBuiltinRules(rule, value, name);
|
|
428
|
-
if (failure === null && typeof rule.validator === 'function') {
|
|
429
|
-
try {
|
|
430
|
-
var result = rule.validator(rule, value);
|
|
431
|
-
if (isThenable(result)) {
|
|
432
|
-
result.then(function (resolved) {
|
|
433
|
-
return warnLegacyValidatorReturn(name, resolved);
|
|
434
|
-
}, function () {});
|
|
435
|
-
} else {
|
|
436
|
-
warnLegacyValidatorReturn(name, result);
|
|
437
|
-
}
|
|
438
|
-
} catch (err) {
|
|
439
|
-
failure = resolveFailureMessage(err, rule);
|
|
440
|
-
}
|
|
441
|
-
}
|
|
442
|
-
if (failure !== null) return {
|
|
443
|
-
error: failure,
|
|
444
|
-
warning: null
|
|
445
|
-
};
|
|
446
|
-
if ((rule.fields || rule.defaultField) && !isEmptyValue(value)) {
|
|
447
|
-
// Deep rules need a container; a non-empty primitive fails the PARENT
|
|
448
|
-
// (clear attribution) instead of producing confusing child errors.
|
|
449
|
-
if ((0, _typeof2["default"])(value) !== 'object' || value === null) {
|
|
450
|
-
return {
|
|
451
|
-
error: rule.message || "".concat(name, " must be an object or an array"),
|
|
452
|
-
warning: null
|
|
453
|
-
};
|
|
454
|
-
}
|
|
455
|
-
var acc = {
|
|
456
|
-
error: null,
|
|
457
|
-
warning: null
|
|
458
|
-
};
|
|
459
|
-
var _iterator4 = _createForOfIteratorHelper(deepRuleEntries(rule, value, name)),
|
|
460
|
-
_step4;
|
|
461
|
-
try {
|
|
462
|
-
for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
|
|
463
|
-
var _step4$value = (0, _slicedToArray2["default"])(_step4.value, 3),
|
|
464
|
-
subRule = _step4$value[0],
|
|
465
|
-
subValue = _step4$value[1],
|
|
466
|
-
subName = _step4$value[2];
|
|
467
|
-
if (mergeSubResult(acc, subRule, evalRuleSync(subRule, subValue, subName))) break;
|
|
468
|
-
}
|
|
469
|
-
} catch (err) {
|
|
470
|
-
_iterator4.e(err);
|
|
471
|
-
} finally {
|
|
472
|
-
_iterator4.f();
|
|
473
|
-
}
|
|
474
|
-
return acc;
|
|
475
|
-
}
|
|
476
|
-
return PASS;
|
|
477
|
-
}
|
|
478
|
-
/** Async counterpart of evalRuleSync — custom validators are awaited. */
|
|
412
|
+
/** Evaluate ONE rule (transform → builtin checks → validator → deep rules); custom validators are awaited. */
|
|
479
413
|
function evalRuleAsync(rule, rawValue, name) {
|
|
480
414
|
return __awaiter(this, void 0, void 0, /*#__PURE__*/_regenerator["default"].mark(function _callee() {
|
|
481
|
-
var prep, value, failure, result, acc,
|
|
415
|
+
var prep, value, failure, result, acc, _iterator4, _step4, _step4$value, subRule, subValue, subName, _t, _t2, _t3, _t4, _t5;
|
|
482
416
|
return _regenerator["default"].wrap(function (_context) {
|
|
483
417
|
while (1) switch (_context.prev = _context.next) {
|
|
484
418
|
case 0:
|
|
@@ -537,15 +471,15 @@ function evalRuleAsync(rule, rawValue, name) {
|
|
|
537
471
|
error: null,
|
|
538
472
|
warning: null
|
|
539
473
|
};
|
|
540
|
-
|
|
474
|
+
_iterator4 = _createForOfIteratorHelper(deepRuleEntries(rule, value, name));
|
|
541
475
|
_context.prev = 8;
|
|
542
|
-
|
|
476
|
+
_iterator4.s();
|
|
543
477
|
case 9:
|
|
544
|
-
if ((
|
|
478
|
+
if ((_step4 = _iterator4.n()).done) {
|
|
545
479
|
_context.next = 12;
|
|
546
480
|
break;
|
|
547
481
|
}
|
|
548
|
-
|
|
482
|
+
_step4$value = (0, _slicedToArray2["default"])(_step4.value, 3), subRule = _step4$value[0], subValue = _step4$value[1], subName = _step4$value[2];
|
|
549
483
|
_t2 = mergeSubResult;
|
|
550
484
|
_t3 = acc;
|
|
551
485
|
_t4 = subRule;
|
|
@@ -566,10 +500,10 @@ function evalRuleAsync(rule, rawValue, name) {
|
|
|
566
500
|
case 13:
|
|
567
501
|
_context.prev = 13;
|
|
568
502
|
_t5 = _context["catch"](8);
|
|
569
|
-
|
|
503
|
+
_iterator4.e(_t5);
|
|
570
504
|
case 14:
|
|
571
505
|
_context.prev = 14;
|
|
572
|
-
|
|
506
|
+
_iterator4.f();
|
|
573
507
|
return _context.finish(14);
|
|
574
508
|
case 15:
|
|
575
509
|
return _context.abrupt("return", acc);
|
|
@@ -583,73 +517,31 @@ function evalRuleAsync(rule, rawValue, name) {
|
|
|
583
517
|
}));
|
|
584
518
|
}
|
|
585
519
|
/**
|
|
586
|
-
*
|
|
587
|
-
*
|
|
588
|
-
* swallowed) and left to the async runs (blur/submit), which always await it.
|
|
589
|
-
* Failing it instead would mis-report "Validation failed" on every keystroke
|
|
590
|
-
* for perfectly valid input.
|
|
520
|
+
* Rule run. Custom validators are awaited (sync or async): resolving passes,
|
|
521
|
+
* rejecting/throwing fails. Return values are ignored.
|
|
591
522
|
*
|
|
592
|
-
* The per-rule try/catch is the
|
|
593
|
-
*
|
|
594
|
-
*
|
|
595
|
-
*/
|
|
596
|
-
function runRulesSync(name, value, values, rules, instance) {
|
|
597
|
-
var state = {
|
|
598
|
-
warning: null
|
|
599
|
-
};
|
|
600
|
-
var _iterator6 = _createForOfIteratorHelper(resolveRules(rules, values, instance)),
|
|
601
|
-
_step6;
|
|
602
|
-
try {
|
|
603
|
-
for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
|
|
604
|
-
var rule = _step6.value;
|
|
605
|
-
var result = void 0;
|
|
606
|
-
try {
|
|
607
|
-
result = evalRuleSync(rule, value, name);
|
|
608
|
-
} catch (err) {
|
|
609
|
-
result = {
|
|
610
|
-
error: resolveFailureMessage(err, rule),
|
|
611
|
-
warning: null
|
|
612
|
-
};
|
|
613
|
-
}
|
|
614
|
-
var error = foldRuleResult(rule, result, state);
|
|
615
|
-
if (error !== null) return {
|
|
616
|
-
error: error,
|
|
617
|
-
warning: state.warning
|
|
618
|
-
};
|
|
619
|
-
}
|
|
620
|
-
} catch (err) {
|
|
621
|
-
_iterator6.e(err);
|
|
622
|
-
} finally {
|
|
623
|
-
_iterator6.f();
|
|
624
|
-
}
|
|
625
|
-
return {
|
|
626
|
-
error: null,
|
|
627
|
-
warning: state.warning
|
|
628
|
-
};
|
|
629
|
-
}
|
|
630
|
-
/**
|
|
631
|
-
* Asynchronous rule run. Custom validators are awaited (sync or async):
|
|
632
|
-
* resolving passes, rejecting/throwing fails. Return values are ignored.
|
|
633
|
-
* Shares the totality choke point with runRulesSync.
|
|
523
|
+
* The per-rule try/catch is the totality choke point: NO input — including
|
|
524
|
+
* exotic values that break a builtin check — may escape as a throw; every
|
|
525
|
+
* failure surfaces through the error/warning channels.
|
|
634
526
|
*/
|
|
635
527
|
function runRulesAsync(name, value, values, rules, instance) {
|
|
636
528
|
return __awaiter(this, void 0, void 0, /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
|
|
637
|
-
var state,
|
|
529
|
+
var state, _iterator5, _step5, rule, result, error, _t6, _t7;
|
|
638
530
|
return _regenerator["default"].wrap(function (_context2) {
|
|
639
531
|
while (1) switch (_context2.prev = _context2.next) {
|
|
640
532
|
case 0:
|
|
641
533
|
state = {
|
|
642
534
|
warning: null
|
|
643
535
|
};
|
|
644
|
-
|
|
536
|
+
_iterator5 = _createForOfIteratorHelper(resolveRules(rules, values, instance));
|
|
645
537
|
_context2.prev = 1;
|
|
646
|
-
|
|
538
|
+
_iterator5.s();
|
|
647
539
|
case 2:
|
|
648
|
-
if ((
|
|
540
|
+
if ((_step5 = _iterator5.n()).done) {
|
|
649
541
|
_context2.next = 8;
|
|
650
542
|
break;
|
|
651
543
|
}
|
|
652
|
-
rule =
|
|
544
|
+
rule = _step5.value;
|
|
653
545
|
result = void 0;
|
|
654
546
|
_context2.prev = 3;
|
|
655
547
|
_context2.next = 4;
|
|
@@ -684,10 +576,10 @@ function runRulesAsync(name, value, values, rules, instance) {
|
|
|
684
576
|
case 9:
|
|
685
577
|
_context2.prev = 9;
|
|
686
578
|
_t7 = _context2["catch"](1);
|
|
687
|
-
|
|
579
|
+
_iterator5.e(_t7);
|
|
688
580
|
case 10:
|
|
689
581
|
_context2.prev = 10;
|
|
690
|
-
|
|
582
|
+
_iterator5.f();
|
|
691
583
|
return _context2.finish(10);
|
|
692
584
|
case 11:
|
|
693
585
|
return _context2.abrupt("return", {
|
|
@@ -701,4 +593,4 @@ function runRulesAsync(name, value, values, rules, instance) {
|
|
|
701
593
|
}, _callee2, null, [[1, 9, 10, 11], [3, 5]]);
|
|
702
594
|
}));
|
|
703
595
|
}
|
|
704
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9zcmMvY29tcG9uZW50cy9Qcm9Gb3JtL2NvcmUvcnVuUnVsZXMudHMiLCJjb21wb25lbnRzL1Byb0Zvcm0vY29yZS9ydW5SdWxlcy5qcyJdLCJuYW1lcyI6WyJfcGF0aFV0aWxzIiwicmVxdWlyZSIsIl9kZXZXYXJuaW5nIiwiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCJyIiwiZSIsInQiLCJTeW1ib2wiLCJpdGVyYXRvciIsIkFycmF5IiwiaXNBcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsImxlbmd0aCIsIl9uIiwiRiIsInMiLCJuIiwiZG9uZSIsInZhbHVlIiwiZiIsIlR5cGVFcnJvciIsIm8iLCJhIiwidSIsImNhbGwiLCJuZXh0IiwiX2FycmF5TGlrZVRvQXJyYXkiLCJ0b1N0cmluZyIsInNsaWNlIiwiY29uc3RydWN0b3IiLCJuYW1lIiwiZnJvbSIsInRlc3QiLCJfX2F3YWl0ZXIiLCJ0aGlzQXJnIiwiX2FyZ3VtZW50cyIsIlAiLCJnZW5lcmF0b3IiLCJhZG9wdCIsInJlc29sdmUiLCJQcm9taXNlIiwicmVqZWN0IiwiZnVsZmlsbGVkIiwic3RlcCIsInJlamVjdGVkIiwicmVzdWx0IiwidGhlbiIsImFwcGx5IiwiaXNUaGVuYWJsZSIsIl90eXBlb2YyIiwiaXNFbXB0eVZhbHVlIiwidW5kZWZpbmVkIiwiY29lcmNlRmFpbHVyZVJlYXNvbiIsInJlYXNvbiIsIkVycm9yIiwibWVzc2FnZSIsInJlc29sdmVGYWlsdXJlTWVzc2FnZSIsInJ1bGUiLCJfYSIsInJlc29sdmVSdWxlcyIsInJ1bGVzIiwidmFsdWVzIiwiaW5zdGFuY2UiLCJzb21lIiwiY3R4IiwiT2JqZWN0IiwiYXNzaWduIiwiZ2V0RmllbGRWYWx1ZSIsInJlc29sdmVWYWx1ZSIsImdldEZpZWxkc1ZhbHVlIiwibWFwIiwiZXJyIiwidmFsaWRhdG9yIiwibm9ybWFsaXplVHJpZ2dlcnMiLCJpdGVtVHJpZ2dlciIsImZvcm1UcmlnZ2VyIiwiZWZmZWN0aXZlIiwiZmlsdGVyUnVsZXNCeVRyaWdnZXIiLCJ0cmlnZ2VyIiwiYWN0aXZlVHJpZ2dlcnMiLCJmaWVsZE5hbWUiLCJpbmNsdWRlcyIsImZpbHRlciIsInJ1bGVUcmlnZ2VyIiwidmFsaWRhdGVUcmlnZ2VyIiwicnVsZVRyaWdnZXJzIiwibWF0Y2hlcyIsImRldldhcm5PbmNlIiwiY29uY2F0Iiwiam9pbiIsIlRZUEVfQ0hFQ0tTIiwic3RyaW5nIiwidiIsIm51bWJlciIsIk51bWJlciIsImlzTmFOIiwiYm9vbGVhbiIsIm1ldGhvZCIsImludGVnZXIiLCJpc0ludGVnZXIiLCJmbG9hdCIsImFycmF5Iiwib2JqZWN0IiwiZGF0ZSIsIkRhdGUiLCJnZXRUaW1lIiwicmVnZXhwIiwiUmVnRXhwIiwiaGV4IiwiZW1haWwiLCJ1cmwiLCJVUkwiLCJ0eXBlRmFpbHVyZU1lc3NhZ2UiLCJ0eXBlIiwibWVhc3VyZVZhbHVlIiwibWVhc3VyZWQiLCJ1bml0IiwiY2hlY2tCdWlsdGluUnVsZXMiLCJyZXF1aXJlZCIsIndoaXRlc3BhY2UiLCJ0cmltIiwibGVuIiwibSIsIm1pbiIsIm1heCIsInBhdHRlcm4iLCJnbG9iYWwiLCJzdGlja3kiLCJsYXN0SW5kZXgiLCJ0b1J1bGVBcnJheSIsImRlZXBNZW1iZXJzIiwibWVtYmVyIiwiaW5kZXgiLCJTdHJpbmciLCJlbnRyaWVzIiwiUEFTUyIsImVycm9yIiwid2FybmluZyIsIndhcm5MZWdhY3lWYWxpZGF0b3JSZXR1cm4iLCJhcHBseVRyYW5zZm9ybSIsInJhd1ZhbHVlIiwidHJhbnNmb3JtIiwib2siLCJmYWlsdXJlIiwiZGVlcFJ1bGVFbnRyaWVzIiwiZmllbGRzIiwic291cmNlIiwiX2kiLCJfT2JqZWN0JGVudHJpZXMiLCJfT2JqZWN0JGVudHJpZXMkX2kiLCJfc2xpY2VkVG9BcnJheTIiLCJrZXkiLCJzdWJSdWxlcyIsIl9pdGVyYXRvciIsIl9zdGVwIiwic3ViUnVsZSIsInB1c2giLCJkZWZhdWx0RmllbGQiLCJfaXRlcmF0b3IyIiwiX3N0ZXAyIiwiX3N0ZXAyJHZhbHVlIiwiX2l0ZXJhdG9yMyIsIl9zdGVwMyIsIm1lcmdlU3ViUmVzdWx0IiwiYWNjIiwic3ViIiwid2FybmluZ09ubHkiLCJmb2xkUnVsZVJlc3VsdCIsInN0YXRlIiwiY29udGVudCIsImV2YWxSdWxlU3luYyIsInByZXAiLCJyZXNvbHZlZCIsIl9pdGVyYXRvcjQiLCJfc3RlcDQiLCJfc3RlcDQkdmFsdWUiLCJzdWJWYWx1ZSIsInN1Yk5hbWUiLCJldmFsUnVsZUFzeW5jIiwiX3JlZ2VuZXJhdG9yIiwibWFyayIsIl9jYWxsZWUiLCJfaXRlcmF0b3I1IiwiX3N0ZXA1IiwiX3N0ZXA1JHZhbHVlIiwiX3QiLCJfdDIiLCJfdDMiLCJfdDQiLCJfdDUiLCJ3cmFwIiwiX2NvbnRleHQiLCJwcmV2IiwiYWJydXB0Iiwic2VudCIsImZpbmlzaCIsInN0b3AiLCJydW5SdWxlc1N5bmMiLCJfaXRlcmF0b3I2IiwiX3N0ZXA2IiwicnVuUnVsZXNBc3luYyIsIl9jYWxsZWUyIiwiX2l0ZXJhdG9yNyIsIl9zdGVwNyIsIl90NiIsIl90NyIsIl9jb250ZXh0MiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsSUFBQUEsVUFBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsV0FBQSxHQUFBRCxPQUFBO0FBQTJDLFNBQUFFLDJCQUFBQyxDQUFBLEVBQUFDLENBQUEsUUFBQUMsQ0FBQSx5QkFBQUMsTUFBQSxJQUFBSCxDQUFBLENBQUFHLE1BQUEsQ0FBQUMsUUFBQSxLQUFBSixDQUFBLHFCQUFBRSxDQUFBLFFBQUFHLEtBQUEsQ0FBQUMsT0FBQSxDQUFBTixDQUFBLE1BQUFFLENBQUEsR0FBQUssMkJBQUEsQ0FBQVAsQ0FBQSxNQUFBQyxDQUFBLElBQUFELENBQUEsdUJBQUFBLENBQUEsQ0FBQVEsTUFBQSxJQUFBTixDQUFBLEtBQUFGLENBQUEsR0FBQUUsQ0FBQSxPQUFBTyxFQUFBLE1BQUFDLENBQUEsWUFBQUEsRUFBQSxlQUFBQyxDQUFBLEVBQUFELENBQUEsRUFBQUUs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QUMsU0FBQTtVQUFBSixVQUFBLENBQUFyTSxDQUFBLENBQUF3TSxHQUFBO1FBQUE7VUFBQUMsU0FBQSxDQUFBZCxJQUFBO1VBQUFVLFVBQUEsQ0FBQXZMLENBQUE7VUFBQSxPQUFBMkwsU0FBQSxDQUFBWCxNQUFBO1FBQUE7VUFBQSxPQUFBVyxTQUFBLENBQUFiLE1BQUEsV0FFdkQ7WUFBRXpELEtBQUssRUFBRSxJQUFJO1lBQUVDLE9BQU8sRUFBRStCLEtBQUssQ0FBQy9CO1VBQU8sQ0FBRTtRQUFBO1FBQUE7VUFBQSxPQUFBcUUsU0FBQSxDQUFBVixJQUFBO01BQUE7SUFBQSxHQUFBSyxRQUFBO0VBQUEsQ0FDL0MsRUFBQTtBQ3RFRCIsImZpbGUiOiJjb21wb25lbnRzL1Byb0Zvcm0vY29yZS9ydW5SdWxlcy5qcyIsInNvdXJjZXNDb250ZW50IjpbbnVsbCwidmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG5pbXBvcnQgeyByZXNvbHZlVmFsdWUgfSBmcm9tICcuL3BhdGhVdGlscyc7XG5pbXBvcnQgeyBkZXZXYXJuT25jZSB9IGZyb20gJy4vZGV2V2FybmluZyc7XG5mdW5jdGlvbiBpc1RoZW5hYmxlKHZhbHVlKSB7XG4gICAgcmV0dXJuICh2YWx1ZSAhPT0gbnVsbCAmJlxuICAgICAgICB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmXG4gICAgICAgIHR5cGVvZiB2YWx1ZS50aGVuID09PSAnZnVuY3Rpb24nKTtcbn1cbi8qKiBFbXB0eSBmb3IgYHJlcXVpcmVkYDogdW5kZWZpbmVkIC8gbnVsbCAvICcnIC8gZW1wdHkgYXJyYXkuICovXG5mdW5jdGlvbiBpc0VtcHR5VmFsdWUodmFsdWUpIHtcbiAgICByZXR1cm4gKHZhbHVlID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgdmFsdWUgPT09IG51bGwgfHxcbiAgICAgICAgdmFsdWUgPT09ICcnIHx8XG4gICAgICAgIChBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPT09IDApKTtcbn1cbi8qKlxuICogQ29lcmNlIGEgdGhyb3duL3JlamVjdGVkIHJlYXNvbiBpbnRvIGRpc3BsYXlhYmxlIGZhaWx1cmUgY29udGVudDpcbiAqIGEgbm9uLWVtcHR5IEVycm9yLm1lc3NhZ2Ugb3IgYSBub24tZW1wdHkgcGxhaW4gc3RyaW5nIOKAlCBvdGhlcndpc2UgbnVsbFxuICogKGNhbGxlciBwaWNrcyBpdHMgZmFsbGJhY2spLiBTaGFyZWQgd2l0aCB0aGUgZm9ybS1sZXZlbCBsYXN0LXJlc29ydCBuZXRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY29lcmNlRmFpbHVyZVJlYXNvbihyZWFzb24pIHtcbiAgICBpZiAocmVhc29uIGluc3RhbmNlb2YgRXJyb3IgJiYgcmVhc29uLm1lc3NhZ2UpXG4gICAgICAgIHJldHVybiByZWFzb24ubWVzc2FnZTtcbiAgICBpZiAodHlwZW9mIHJlYXNvbiA9PT0gJ3N0cmluZycgJiYgcmVhc29uKVxuICAgICAgICByZXR1cm4gcmVhc29uO1xuICAgIHJldHVybiBudWxsO1xufVxuLyoqXG4gKiBGYWlsdXJlIG1lc3NhZ2UgZm9yIGEgcmVqZWN0ZWQvdGhyb3duIGN1c3RvbSB2YWxpZGF0b3I6XG4gKiBFcnJvci5tZXNzYWdlIOKGkiBwbGFpbiBzdHJpbmcgcmVhc29uIOKGkiBydWxlLm1lc3NhZ2Ug4oaSIGdlbmVyaWMgZmFsbGJhY2suXG4gKi9cbmZ1bmN0aW9uIHJlc29sdmVGYWlsdXJlTWVzc2FnZShyZWFzb24sIHJ1bGUpIHtcbiAgICB2YXIgX2E7XG4gICAgcmV0dXJuIChfYSA9IGNvZXJjZUZhaWx1cmVSZWFzb24ocmVhc29uKSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogKHJ1bGUubWVzc2FnZSB8fCAnVmFsaWRhdGlvbiBmYWlsZWQnKTtcbn1cbi8qKlxuICogUmVzb2x2ZSBmdW5jdGlvbi1mb3JtIHJ1bGVzIGludG8gc3RhdGljIHJ1bGVzLiBUaGVcbiAqIGNvbnRleHQgZXhwb3NlcyB0aGUgdmFsdWUgc25hcHNob3QgdGhlIHJ1biB3YXMgaW52b2tlZCB3aXRoOyBmdW5jdGlvbiBydWxlc1xuICogbXVzdCBiZSBjaGVhcCBhbmQgc2lkZS1lZmZlY3QgZnJlZSDigJQgdGhleSBtYXkgYmUgcmVzb2x2ZWQgbW9yZSB0aGFuIG9uY2VcbiAqIHBlciB2YWxpZGF0aW9uIHBhc3MuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlUnVsZXMocnVsZXMsIHZhbHVlcywgaW5zdGFuY2UpIHtcbiAgICAvLyBGYXN0IHBhdGg6IG5vIGZ1bmN0aW9uIHJ1bGVzIOKGkiBub3RoaW5nIHRvIHJlc29sdmUsIG5vIGN0eCBhbGxvY2F0aW9uLlxuICAgIC8vIFRoaXMgYWxzbyBtYWtlcyB0aGUgZW5naW5lLWludGVybmFsIHJlLXJlc29sdXRpb24gb2YgYWxyZWFkeS1yZXNvbHZlZFxuICAgIC8vIGFycmF5cyBmcmVlLlxuICAgIGlmICghcnVsZXMuc29tZSgocnVsZSkgPT4gdHlwZW9mIHJ1bGUgPT09ICdmdW5jdGlvbicpKSB7XG4gICAgICAgIHJldHVybiBydWxlcztcbiAgICB9XG4gICAgLy8gTGl2ZS1pbnN0YW5jZSBtZW1iZXJzIChzZXRGaWVsZHNWYWx1ZSwgZ2V0RmllbGRFcnJvciwg4oCmKSBhcmUgc3ByZWFkIGluXG4gICAgLy8gd2hlbiBhdmFpbGFibGU7IHRoZSByZWFkcyBhbHdheXMgY29tZSBmcm9tIHRoZSB2YWxpZGF0aW9uLXRpbWUgc25hcHNob3QuXG4gICAgY29uc3QgY3R4ID0gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBpbnN0YW5jZSksIHsgZ2V0RmllbGRWYWx1ZTogKG5hbWUpID0+IHJlc29sdmVWYWx1ZSh2YWx1ZXMsIG5hbWUpLCBnZXRGaWVsZHNWYWx1ZTogKCkgPT4gdmFsdWVzIH0pO1xuICAgIHJldHVybiBydWxlcy5tYXAoKHJ1bGUpID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiBydWxlICE9PSAnZnVuY3Rpb24nKVxuICAgICAgICAgICAgcmV0dXJuIHJ1bGU7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gcnVsZShjdHgpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIC8vIEEgdGhyb3dpbmcgcnVsZSBmYWN0b3J5IG11c3Qgbm90IGNyYXNoIHJlbmRlcmluZyBvciB2YWxpZGF0aW9uIOKAlFxuICAgICAgICAgICAgLy8gc3VyZmFjZSBpdCBhcyBhIHJ1bGUgdGhhdCBhbHdheXMgZmFpbHMgd2l0aCB0aGUgdGhyb3duIHJlYXNvbi5cbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IGVycjtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH0pO1xufVxuLyoqXG4gKiBOb3JtYWxpemUgYSBmb3JtL2l0ZW0tbGV2ZWwgdmFsaWRhdGVUcmlnZ2VyIGNvbmZpZyBpbnRvIHRoZSBlZmZlY3RpdmVcbiAqIGludGVyYWN0aXZlIGV2ZW50IGxpc3Q6IGl0ZW0tbGV2ZWwgKHdoZW4gcHJlc2VudCkgb3ZlcnJpZGVzIGZvcm0tbGV2ZWw7XG4gKiBgZmFsc2VgIGRpc2FibGVzIGludGVyYWN0aXZlIHZhbGlkYXRpb24gZW50aXJlbHkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVUcmlnZ2VycyhpdGVtVHJpZ2dlciwgZm9ybVRyaWdnZXIpIHtcbiAgICBjb25zdCBlZmZlY3RpdmUgPSBpdGVtVHJpZ2dlciA9PT0gdW5kZWZpbmVkID8gZm9ybVRyaWdnZXIgOiBpdGVtVHJpZ2dlcjtcbiAgICBpZiAoZWZmZWN0aXZlID09PSBmYWxzZSlcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KGVmZmVjdGl2ZSkgPyBlZmZlY3RpdmUgOiBbZWZmZWN0aXZlXTtcbn1cbi8qKlxuICogRmlsdGVyIHJ1bGVzIGFwcGxpY2FibGUgdG8gYW4gaW50ZXJhY3RpdmUgZXZlbnQ6IHRoZSBldmVudFxuICogdmFsaWRhdGVzIG9ubHkgd2hlbiBpdCBpcyBpbiB0aGUgaXRlbSdzIGVmZmVjdGl2ZSB0cmlnZ2VyIHNldC4gV2l0aGluIHRoZVxuICogc2V0LCBhIHJ1bGUgV0lUSE9VVCBgdmFsaWRhdGVUcmlnZ2VyYCBydW5zIG9uIGV2ZXJ5IGV2ZW50OyBhIHJ1bGUgV0lUSCBvbmVcbiAqIHJ1bnMgb25seSBvbiBtYXRjaGluZyBldmVudHMg4oCUIHNvIGEgcnVsZSB0cmlnZ2VyIG91dHNpZGUgdGhlIGl0ZW0ncyBzZXRcbiAqIG5ldmVyIGZpcmVzIGludGVyYWN0aXZlbHkuIFN1Ym1pdC10aW1lIHZhbGlkYXRpb24gYnlwYXNzZXMgdGhpcyBmaWx0ZXIgYW5kXG4gKiBydW5zIGV2ZXJ5IHJ1bGUuXG4gKlxuICogRGV2IGd1YXJkOiBhIHJ1bGUgd2hvc2UgKG5vbi1lbXB0eSkgdHJpZ2dlciBzZXQgaXMgZnVsbHkgT1VUU0lERSB0aGVcbiAqIGFjdGl2ZSBzZXQgY2FuIG5ldmVyIGZpcmUgaW50ZXJhY3RpdmVseSDigJQgdXN1YWxseSBhIGxlZnRvdmVyIG9mIHRoZVxuICogcHJlLTAuMC43NiBvdmVycmlkZSBzZW1hbnRpY3MsIHNvIGl0IHdhcm5zIG9uY2UuIGB2YWxpZGF0ZVRyaWdnZXI6IFtdYFxuICogaXMgdGhlIGRlbGliZXJhdGUgc3VibWl0LW9ubHkgaWRpb20gYW5kIHN0YXlzIHNpbGVudC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlclJ1bGVzQnlUcmlnZ2VyKHJ1bGVzLCB0cmlnZ2VyLCBhY3RpdmVUcmlnZ2VycywgZmllbGROYW1lKSB7XG4gICAgaWYgKCFhY3RpdmVUcmlnZ2Vycy5pbmNsdWRlcyh0cmlnZ2VyKSlcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIHJldHVybiBydWxlcy5maWx0ZXIoKHJ1bGUpID0+IHtcbiAgICAgICAgY29uc3QgcnVsZVRyaWdnZXIgPSBydWxlLnZhbGlkYXRlVHJpZ2dlcjtcbiAgICAgICAgaWYgKHJ1bGVUcmlnZ2VyID09PSB1bmRlZmluZWQpXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgY29uc3QgcnVsZVRyaWdnZXJzID0gQXJyYXkuaXNBcnJheShydWxlVHJpZ2dlcikgPyBydWxlVHJpZ2dlciA6IFtydWxlVHJpZ2dlcl07XG4gICAgICAgIGNvbnN0IG1hdGNoZXMgPSBydWxlVHJpZ2dlcnMuaW5jbHVkZXModHJpZ2dlcik7XG4gICAgICAgIGlmICghbWF0Y2hlcyAmJlxuICAgICAgICAgICAgcnVsZVRyaWdnZXJzLmxlbmd0aCA+IDAgJiZcbiAgICAgICAgICAgICFydWxlVHJpZ2dlcnMuc29tZSgodCkgPT4gYWN0aXZlVHJpZ2dlcnMuaW5jbHVkZXModCkpKSB7XG4gICAgICAgICAgICBjb25zdCBuYW1lID0gZmllbGROYW1lICE9PSBudWxsICYmIGZpZWxkTmFtZSAhPT0gdm9pZCAwID8gZmllbGROYW1lIDogJyh1bmtub3duKSc7XG4gICAgICAgICAgICBkZXZXYXJuT25jZShgdHJpZ2dlcjoke25hbWV9OiR7cnVsZVRyaWdnZXJzLmpvaW4oJywnKX1gLCBgW1Byb0Zvcm1dIEZpZWxkIFwiJHtuYW1lfVwiOiBydWxlIHZhbGlkYXRlVHJpZ2dlciBbJHtydWxlVHJpZ2dlcnMuam9pbignLCAnKX1dIGlzIG91dHNpZGUgdGhpcyBmaWVsZCdzIGFjdGl2ZSB0cmlnZ2VyIHNldCBbJHthY3RpdmVUcmlnZ2Vycy5qb2luKCcsICcpfV0g4oCUIHRoZSBydWxlIHdpbGwgb25seSBydW4gb24gc3VibWl0LiBJbmNsdWRlIGl0IGluIHRoZSBpdGVtL2Zvcm0gdmFsaWRhdGVUcmlnZ2VyIHRvIHJ1biBpdCBpbnRlcmFjdGl2ZWx5LmApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtYXRjaGVzO1xuICAgIH0pO1xufVxuLyoqIEJ1aWx0LWluIGB0eXBlYCBjaGVja3MuIGBlbnVtYCBpcyBoYW5kbGVkIHNlcGFyYXRlbHkgYWdhaW5zdCBgcnVsZS5lbnVtYC4gKi9cbmNvbnN0IFRZUEVfQ0hFQ0tTID0ge1xuICAgIHN0cmluZzogKHYpID0+IHR5cGVvZiB2ID09PSAnc3RyaW5nJyxcbiAgICBudW1iZXI6ICh2KSA9PiB0eXBlb2YgdiA9PT0gJ251bWJlcicgJiYgIU51bWJlci5pc05hTih2KSxcbiAgICBib29sZWFuOiAodikgPT4gdHlwZW9mIHYgPT09ICdib29sZWFuJyxcbiAgICBtZXRob2Q6ICh2KSA9PiB0eXBlb2YgdiA9PT0gJ2Z1bmN0aW9uJyxcbiAgICBpbnRlZ2VyOiAodikgPT4gdHlwZW9mIHYgPT09ICdudW1iZXInICYmIE51bWJlci5pc0ludGVnZXIodiksXG4gICAgZmxvYXQ6ICh2KSA9PiB0eXBlb2YgdiA9PT0gJ251bWJlcicgJiYgIU51bWJlci5pc05hTih2KSAmJiAhTnVtYmVyLmlzSW50ZWdlcih2KSxcbiAgICBhcnJheTogKHYpID0+IEFycmF5LmlzQXJyYXkodiksXG4gICAgb2JqZWN0OiAodikgPT4gdHlwZW9mIHYgPT09ICdvYmplY3QnICYmIHYgIT09IG51bGwgJiYgIUFycmF5LmlzQXJyYXkodiksXG4gICAgZGF0ZTogKHYpID0+IHYgaW5zdGFuY2VvZiBEYXRlXG4gICAgICAgID8gIU51bWJlci5pc05hTih2LmdldFRpbWUoKSlcbiAgICAgICAgOiB0eXBlb2YgKHYgPT09IG51bGwgfHwgdiA9PT0gdm9pZCAwID8gdm9pZCAwIDogdi5nZXRUaW1lKSA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAgICAgICAgICAgIU51bWJlci5pc05hTih2LmdldFRpbWUoKSksXG4gICAgcmVnZXhwOiAodikgPT4ge1xuICAgICAgICBpZiAodiBpbnN0YW5jZW9mIFJlZ0V4cClcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICBpZiAodHlwZW9mIHYgIT09ICdzdHJpbmcnKVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgbmV3IFJlZ0V4cCh2KTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChfYSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfSxcbiAgICBoZXg6ICh2KSA9PiB0eXBlb2YgdiA9PT0gJ3N0cmluZycgJiYgL14jPyhbYS1mMC05XXs2fXxbYS1mMC05XXszfSkkL2kudGVzdCh2KSxcbiAgICAvLyBTdHJpbmctb25seTogY29lcmNpbmcgdmlhIFN0cmluZygpIHdvdWxkIGxldCBlLmcuIFsnYUBiLmNvJ10gc3RyaW5naWZ5XG4gICAgLy8gaW50byBhIHBhc3NpbmcgdmFsdWUuXG4gICAgZW1haWw6ICh2KSA9PiB0eXBlb2YgdiA9PT0gJ3N0cmluZycgJiYgL15bXlxcc0BdK0BbXlxcc0BdK1xcLlteXFxzQF0rJC8udGVzdCh2KSxcbiAgICB1cmw6ICh2KSA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgdiAhPT0gJ3N0cmluZycpXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBuZXcgVVJMKHYpO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKF9hKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9LFxufTtcbi8qKiBGcmllbmRseSBnZW5lcmF0ZWQgbWVzc2FnZXMgZm9yIHRoZSBsZWdhY3kgdHlwZSBuYW1lczsgb3RoZXJzIGdldCBhIGdlbmVyaWMgb25lLiAqL1xuZnVuY3Rpb24gdHlwZUZhaWx1cmVNZXNzYWdlKG5hbWUsIHR5cGUpIHtcbiAgICBpZiAodHlwZSA9PT0gJ251bWJlcicpXG4gICAgICAgIHJldHVybiBgJHtuYW1lfSBtdXN0IGJlIGEgbnVtYmVyYDtcbiAgICBpZiAodHlwZSA9PT0gJ2VtYWlsJylcbiAgICAgICAgcmV0dXJuIGAke25hbWV9IG11c3QgYmUgYSB2YWxpZCBlbWFpbGA7XG4gICAgaWYgKHR5cGUgPT09ICd1cmwnKVxuICAgICAgICByZXR1cm4gYCR7bmFtZX0gbXVzdCBiZSBhIHZhbGlkIFVSTGA7XG4gICAgcmV0dXJuIGAke25hbWV9IGlzIG5vdCBhIHZhbGlkICR7dHlwZX1gO1xufVxuLyoqIE1lYXN1cmUgYSB2YWx1ZSBmb3IgbGVuL21pbi9tYXg6IHN0cmluZyDihpIgbGVuZ3RoLCBhcnJheSDihpIgY291bnQsIG51bWJlciDihpIgdmFsdWUuICovXG5mdW5jdGlvbiBtZWFzdXJlVmFsdWUodmFsdWUpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJylcbiAgICAgICAgcmV0dXJuIHsgbWVhc3VyZWQ6IHZhbHVlLmxlbmd0aCwgdW5pdDogJyBjaGFyYWN0ZXJzJyB9O1xuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSlcbiAgICAgICAgcmV0dXJuIHsgbWVhc3VyZWQ6IHZhbHVlLmxlbmd0aCwgdW5pdDogJyBpdGVtcycgfTtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyAmJiAhTnVtYmVyLmlzTmFOKHZhbHVlKSlcbiAgICAgICAgcmV0dXJuIHsgbWVhc3VyZWQ6IHZhbHVlLCB1bml0OiAnJyB9O1xuICAgIHJldHVybiBudWxsO1xufVxuLyoqXG4gKiBFdmFsdWF0ZSBldmVyeSBidWlsdC1pbiAobm9uLWB2YWxpZGF0b3JgKSBydWxlIGtpbmQgZm9yIGEgc2luZ2xlIHJ1bGUuXG4gKiBSZXR1cm5zIHRoZSBlcnJvciBjb250ZW50IGZvciB0aGUgZmlyc3QgZmFpbGluZyBjaGVjaywgb3IgbnVsbC5cbiAqXG4gKiBFbXB0eSB2YWx1ZXMgKHVuZGVmaW5lZCAvIG51bGwgLyAnJyAvIGVtcHR5IGFycmF5KSBhcmUgb25seSBjaGVja2VkIGJ5XG4gKiBgcmVxdWlyZWRgIOKAlCBldmVyeSBvdGhlciBidWlsdGluIGNoZWNrIGlzIHNraXBwZWQsIHNvIG9wdGlvbmFsIGZpZWxkc1xuICogZG9uJ3QgZXJyb3IgdW50aWwgdGhleSBoYXZlIGNvbnRlbnQuIEN1c3RvbSB2YWxpZGF0b3JzIGFyZSBOT1Qgc3ViamVjdCB0b1xuICogdGhpcyBza2lwICh0aGV5IHJlY2VpdmUgdGhlIGVtcHR5IHZhbHVlIGFuZCBkZWNpZGUgdGhlbXNlbHZlcykuXG4gKi9cbmZ1bmN0aW9uIGNoZWNrQnVpbHRpblJ1bGVzKHJ1bGUsIHZhbHVlLCBuYW1lKSB7XG4gICAgaWYgKHJ1bGUucmVxdWlyZWQgJiYgaXNFbXB0eVZhbHVlKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gcnVsZS5tZXNzYWdlIHx8IGAke25hbWV9IGlzIHJlcXVpcmVkYDtcbiAgICB9XG4gICAgaWYgKGlzRW1wdHlWYWx1ZSh2YWx1ZSkpXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIC8vIE5vbi1lbXB0eSBzdHJpbmcgb2Ygb25seSB3aGl0ZXNwYWNlICh0aGUgcmVxdWlyZWQrd2hpdGVzcGFjZSB0cmltIGlkaW9tKS5cbiAgICBpZiAocnVsZS53aGl0ZXNwYWNlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgdmFsdWUudHJpbSgpID09PSAnJykge1xuICAgICAgICByZXR1cm4gcnVsZS5tZXNzYWdlIHx8IGAke25hbWV9IGNhbm5vdCBiZSBibGFua2A7XG4gICAgfVxuICAgIC8vIGxlbjogZXhhY3QgbGVuZ3RoL2NvdW50L3ZhbHVlIOKAlCB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgbWluL21heC5cbiAgICBpZiAocnVsZS5sZW4gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zdCBtID0gbWVhc3VyZVZhbHVlKHZhbHVlKTtcbiAgICAgICAgaWYgKG0gIT09IG51bGwgJiYgbS5tZWFzdXJlZCAhPT0gcnVsZS5sZW4pIHtcbiAgICAgICAgICAgIHJldHVybiBydWxlLm1lc3NhZ2UgfHwgYCR7bmFtZX0gbXVzdCBiZSBleGFjdGx5ICR7cnVsZS5sZW59JHttLnVuaXR9YDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIGlmIChydWxlLm1pbiAhPT0gdW5kZWZpbmVkIHx8IHJ1bGUubWF4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc3QgbSA9IG1lYXN1cmVWYWx1ZSh2YWx1ZSk7XG4gICAgICAgIGlmIChtICE9PSBudWxsKSB7XG4gICAgICAgICAgICBpZiAocnVsZS5taW4gIT09IHVuZGVmaW5lZCAmJiBtLm1lYXN1cmVkIDwgcnVsZS5taW4pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcnVsZS5tZXNzYWdlIHx8IGAke25hbWV9IG11c3QgYmUgYXQgbGVhc3QgJHtydWxlLm1pbn0ke20udW5pdH1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHJ1bGUubWF4ICE9PSB1bmRlZmluZWQgJiYgbS5tZWFzdXJlZCA+IHJ1bGUubWF4KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJ1bGUubWVzc2FnZSB8fCBgJHtuYW1lfSBtdXN0IGJlIG5vIG1vcmUgdGhhbiAke3J1bGUubWF4fSR7bS51bml0fWA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKHJ1bGUucGF0dGVybiAmJiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIC8vIEEgL2cgb3IgL3kgcmVnZXggaXMgc3RhdGVmdWw6IGxhc3RJbmRleCBwZXJzaXN0cyBhY3Jvc3MgLnRlc3QoKSBjYWxscyxcbiAgICAgICAgLy8gc28gcmVwZWF0ZWQgcnVucyB3b3VsZCBhbHRlcm5hdGUgcGFzcy9mYWlsIOKAlCByZXNldCBpdCBldmVyeSBydW4uXG4gICAgICAgIGlmIChydWxlLnBhdHRlcm4uZ2xvYmFsIHx8IHJ1bGUucGF0dGVybi5zdGlja3kpXG4gICAgICAgICAgICBydWxlLnBhdHRlcm4ubGFzdEluZGV4ID0gMDtcbiAgICAgICAgaWYgKCFydWxlLnBhdHRlcm4udGVzdCh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBydWxlLm1lc3NhZ2UgfHwgYCR7bmFtZX0gZm9ybWF0IGlzIGludmFsaWRgO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChydWxlLnR5cGUgJiYgcnVsZS50eXBlICE9PSAnZW51bScgJiYgIVRZUEVfQ0hFQ0tTW3J1bGUudHlwZV0odmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBydWxlLm1lc3NhZ2UgfHwgdHlwZUZhaWx1cmVNZXNzYWdlKG5hbWUsIHJ1bGUudHlwZSk7XG4gICAgfVxuICAgIC8vIGVudW0gbWVtYmVyc2hpcDogYXBwbGllcyBmb3IgdHlwZSAnZW51bScgb3Igd2hlbmV2ZXIgcnVsZS5lbnVtIGlzIHByZXNlbnQuXG4gICAgaWYgKHJ1bGUuZW51bSAmJiBBcnJheS5pc0FycmF5KHJ1bGUuZW51bSkgJiYgIXJ1bGUuZW51bS5pbmNsdWRlcyh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIHJ1bGUubWVzc2FnZSB8fCBgJHtuYW1lfSBtdXN0IGJlIG9uZSBvZiAke3J1bGUuZW51bS5qb2luKCcsICcpfWA7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xufVxuZnVuY3Rpb24gdG9SdWxlQXJyYXkocnVsZXMpIHtcbiAgICBpZiAoIXJ1bGVzKVxuICAgICAgICByZXR1cm4gW107XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkocnVsZXMpID8gcnVsZXMgOiBbcnVsZXNdO1xufVxuLyoqIE1lbWJlcnMgZm9yIGRlZXAgcnVsZXM6IGFycmF5IOKGkiBpbmRleGVkIGVudHJpZXMsIHBsYWluIG9iamVjdCDihpIga2V5IGVudHJpZXMuICovXG5mdW5jdGlvbiBkZWVwTWVtYmVycyh2YWx1ZSkge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSlcbiAgICAgICAgcmV0dXJuIHZhbHVlLm1hcCgobWVtYmVyLCBpbmRleCkgPT4gW1N0cmluZyhpbmRleCksIG1lbWJlcl0pO1xuICAgIGlmICh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKVxuICAgICAgICByZXR1cm4gT2JqZWN0LmVudHJpZXModmFsdWUpO1xuICAgIHJldHVybiBbXTtcbn1cbmNvbnN0IFBBU1MgPSB7IGVycm9yOiBudWxsLCB3YXJuaW5nOiBudWxsIH07XG4vKipcbiAqIERldiBndWFyZCBmb3IgdGhlIHByZS0wLjAuNzYgdmFsaWRhdG9yIGNvbnRyYWN0OiByZXR1cm5pbmcgYSBzdHJpbmcgb3JcbiAqIGBmYWxzZWAgdXNlZCB0byBGQUlMIHRoZSBydWxlIOKAlCB1bmRlciB0aGUgYChydWxlLCB2YWx1ZSlgIGNvbnRyYWN0IHJldHVyblxuICogdmFsdWVzIGFyZSBpZ25vcmVkIGFuZCBvbmx5IHRocm93L3JlamVjdCBmYWlscy4gU3VjaCBhIHJldHVybiBpcyBhbG1vc3RcbiAqIGNlcnRhaW5seSBhIGxlZ2FjeSB2YWxpZGF0b3Igc2lsZW50bHkgcGFzc2luZywgc28gaXQgd2FybnMgb25jZS5cbiAqL1xuZnVuY3Rpb24gd2FybkxlZ2FjeVZhbGlkYXRvclJldHVybihuYW1lLCByZXN1bHQpIHtcbiAgICBpZiAodHlwZW9mIHJlc3VsdCAhPT0gJ3N0cmluZycgJiYgcmVzdWx0ICE9PSBmYWxzZSlcbiAgICAgICAgcmV0dXJuO1xuICAgIGRldldhcm5PbmNlKGB2YWxpZGF0b3ItcmV0dXJuOiR7bmFtZX1gLCBgW1Byb0Zvcm1dIEZpZWxkIFwiJHtuYW1lfVwiOiBhIGN1c3RvbSB2YWxpZGF0b3IgcmV0dXJuZWQgJHt0eXBlb2YgcmVzdWx0ID09PSAnc3RyaW5nJyA/ICdhIHN0cmluZycgOiAnZmFsc2UnfSDigJQgcmV0dXJuIHZhbHVlcyBhcmUgSUdOT1JFRDsgdmFsaWRhdG9ycyBmYWlsIGJ5IHRocm93aW5nIG9yIHJlamVjdGluZyAoYSB0aHJvd24gRXJyb3IncyBtZXNzYWdlIGJlY29tZXMgdGhlIGZpZWxkIGVycm9yKS5gKTtcbn1cbi8qKiBSdW4gYSBydWxlJ3MgdHJhbnNmb3JtLCBjb250YWluaW5nIHRocm93cyBhcyBhIHJ1bGUgZmFpbHVyZS4gKi9cbmZ1bmN0aW9uIGFwcGx5VHJhbnNmb3JtKHJ1bGUsIHJhd1ZhbHVlKSB7XG4gICAgaWYgKHR5cGVvZiBydWxlLnRyYW5zZm9ybSAhPT0gJ2Z1bmN0aW9uJylcbiAgICAgICAgcmV0dXJuIHsgb2s6IHRydWUsIHZhbHVlOiByYXdWYWx1ZSB9O1xuICAgIHRyeSB7XG4gICAgICAgIHJldHVybiB7IG9rOiB0cnVlLCB2YWx1ZTogcnVsZS50cmFuc2Zvcm0ocmF3VmFsdWUpIH07XG4gICAgfVxuICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgcmV0dXJuIHsgb2s6IGZhbHNlLCBmYWlsdXJlOiByZXNvbHZlRmFpbHVyZU1lc3NhZ2UoZXJyLCBydWxlKSB9O1xuICAgIH1cbn1cbi8qKlxuICogRmxhdHRlbiBhIHJ1bGUncyBkZWVwIHNvdXJjZXMgKGBmaWVsZHNgIHBlciBrZXksIHRoZW4gYGRlZmF1bHRGaWVsZGAgcGVyXG4gKiBtZW1iZXIpIGludG8gW3N1YlJ1bGUsIG1lbWJlclZhbHVlLCBtZW1iZXJOYW1lXSB0dXBsZXMg4oCUIHRoZSBzaW5nbGUgcGxhY2VcbiAqIHRoYXQga25vd3MgaG93IGRlZXAgcnVsZXMgbWFwIG9udG8gYSBjb250YWluZXIgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIGRlZXBSdWxlRW50cmllcyhydWxlLCB2YWx1ZSwgbmFtZSkge1xuICAgIGNvbnN0IGVudHJpZXMgPSBbXTtcbiAgICBpZiAocnVsZS5maWVsZHMpIHtcbiAgICAgICAgY29uc3Qgc291cmNlID0gdmFsdWU7XG4gICAgICAgIGZvciAoY29uc3QgW2tleSwgc3ViUnVsZXNdIG9mIE9iamVjdC5lbnRyaWVzKHJ1bGUuZmllbGRzKSkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBzdWJSdWxlIG9mIHRvUnVsZUFycmF5KHN1YlJ1bGVzKSkge1xuICAgICAgICAgICAgICAgIGVudHJpZXMucHVzaChbc3ViUnVsZSwgc291cmNlW2tleV0sIGAke25hbWV9LiR7a2V5fWBdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAocnVsZS5kZWZhdWx0RmllbGQpIHtcbiAgICAgICAgZm9yIChjb25zdCBba2V5LCBtZW1iZXJdIG9mIGRlZXBNZW1iZXJzKHZhbHVlKSkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBzdWJSdWxlIG9mIHRvUnVsZUFycmF5KHJ1bGUuZGVmYXVsdEZpZWxkKSkge1xuICAgICAgICAgICAgICAgIGVudHJpZXMucHVzaChbc3ViUnVsZSwgbWVtYmVyLCBgJHtuYW1lfS4ke2tleX1gXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGVudHJpZXM7XG59XG4vKipcbiAqIE1lcmdlIGEgc3ViLXJ1bGUncyBvdXRjb21lIGludG8gdGhlIHBhcmVudCdzIGNoYW5uZWxzLiBBIHN1Yi1ydWxlIGZsYWdnZWRcbiAqIGB3YXJuaW5nT25seWAgY29udHJpYnV0ZXMgaXRzIGZhaWx1cmUgYXMgYSBXQVJOSU5HOyBvdGhlcndpc2UgaXRzIGVycm9yXG4gKiBibG9ja3MuIFJldHVybnMgdHJ1ZSB3aGVuIGEgYmxvY2tpbmcgZXJyb3IgbGFuZGVkIChzdG9wIHdhbGtpbmcpLlxuICovXG5mdW5jdGlvbiBtZXJnZVN1YlJlc3VsdChhY2MsIHN1YlJ1bGUsIHN1Yikge1xuICAgIGlmIChzdWIud2FybmluZyAhPT0gbnVsbCAmJiBhY2Mud2FybmluZyA9PT0gbnVsbClcbiAgICAgICAgYWNjLndhcm5pbmcgPSBzdWIud2FybmluZztcbiAgICBpZiAoc3ViLmVycm9yICE9PSBudWxsKSB7XG4gICAgICAgIGlmIChzdWJSdWxlLndhcm5pbmdPbmx5KSB7XG4gICAgICAgICAgICBpZiAoYWNjLndhcm5pbmcgPT09IG51bGwpXG4gICAgICAgICAgICAgICAgYWNjLndhcm5pbmcgPSBzdWIuZXJyb3I7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBhY2MuZXJyb3IgPSBzdWIuZXJyb3I7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59XG4vKipcbiAqIEZvbGQgb25lIHJ1bGUncyBvdXRjb21lIGludG8gdGhlIHJ1bi1sZXZlbCBjaGFubmVscy4gQSBydWxlIGZsYWdnZWRcbiAqIGB3YXJuaW5nT25seWAgZG93bmdyYWRlcyBldmVyeXRoaW5nIGl0IHByb2R1Y2VkIChvd24gY2hlY2tzIEFORCBkZWVwXG4gKiBzdWItcnVsZXMpIHRvIGEgd2FybmluZy4gUmV0dXJucyB0aGUgYmxvY2tpbmcgZXJyb3IgdG8gc3VyZmFjZSwgb3IgbnVsbC5cbiAqL1xuZnVuY3Rpb24gZm9sZFJ1bGVSZXN1bHQocnVsZSwgcmVzdWx0LCBzdGF0ZSkge1xuICAgIHZhciBfYTtcbiAgICBpZiAocnVsZS53YXJuaW5nT25seSkge1xuICAgICAgICBjb25zdCBjb250ZW50ID0gKF9hID0gcmVzdWx0LmVycm9yKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiByZXN1bHQud2FybmluZztcbiAgICAgICAgaWYgKGNvbnRlbnQgIT09IG51bGwgJiYgc3RhdGUud2FybmluZyA9PT0gbnVsbClcbiAgICAgICAgICAgIHN0YXRlLndhcm5pbmcgPSBjb250ZW50O1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgaWYgKHJlc3VsdC53YXJuaW5nICE9PSBudWxsICYmIHN0YXRlLndhcm5pbmcgPT09IG51bGwpXG4gICAgICAgIHN0YXRlLndhcm5pbmcgPSByZXN1bHQud2FybmluZztcbiAgICByZXR1cm4gcmVzdWx0LmVycm9yO1xufVxuLyoqXG4gKiBFdmFsdWF0ZSBPTkUgcnVsZSAodHJhbnNmb3JtIOKGkiBidWlsdGluIGNoZWNrcyDihpIgdmFsaWRhdG9yIOKGkiBkZWVwIHJ1bGVzKVxuICogc3luY2hyb25vdXNseS4gUHJvbWlzZS1yZXR1cm5pbmcgdmFsaWRhdG9ycyBhcmUgZGVmZXJyZWQgKHNlZSBydW5SdWxlc1N5bmMpLlxuICovXG5mdW5jdGlvbiBldmFsUnVsZVN5bmMocnVsZSwgcmF3VmFsdWUsIG5hbWUpIHtcbiAgICBjb25zdCBwcmVwID0gYXBwbHlUcmFuc2Zvcm0ocnVsZSwgcmF3VmFsdWUpO1xuICAgIGlmICghcHJlcC5vaylcbiAgICAgICAgcmV0dXJuIHsgZXJyb3I6IHByZXAuZmFpbHVyZSwgd2FybmluZzogbnVsbCB9O1xuICAgIGNvbnN0IHZhbHVlID0gcHJlcC52YWx1ZTtcbiAgICBsZXQgZmFpbHVyZSA9IGNoZWNrQnVpbHRpblJ1bGVzKHJ1bGUsIHZhbHVlLCBuYW1lKTtcbiAgICBpZiAoZmFpbHVyZSA9PT0gbnVsbCAmJiB0eXBlb2YgcnVsZS52YWxpZGF0b3IgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHJ1bGUudmFsaWRhdG9yKHJ1bGUsIHZhbHVlKTtcbiAgICAgICAgICAgIGlmIChpc1RoZW5hYmxlKHJlc3VsdCkpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQudGhlbigocmVzb2x2ZWQpID0+IHdhcm5MZWdhY3lWYWxpZGF0b3JSZXR1cm4obmFtZSwgcmVzb2x2ZWQpLCAoKSA9PiB7IH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgd2FybkxlZ2FjeVZhbGlkYXRvclJldHVybihuYW1lLCByZXN1bHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIGZhaWx1cmUgPSByZXNvbHZlRmFpbHVyZU1lc3NhZ2UoZXJyLCBydWxlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoZmFpbHVyZSAhPT0gbnVsbClcbiAgICAgICAgcmV0dXJuIHsgZXJyb3I6IGZhaWx1cmUsIHdhcm5pbmc6IG51bGwgfTtcbiAgICBpZiAoKHJ1bGUuZmllbGRzIHx8IHJ1bGUuZGVmYXVsdEZpZWxkKSAmJiAhaXNFbXB0eVZhbHVlKHZhbHVlKSkge1xuICAgICAgICAvLyBEZWVwIHJ1bGVzIG5lZWQgYSBjb250YWluZXI7IGEgbm9uLWVtcHR5IHByaW1pdGl2ZSBmYWlscyB0aGUgUEFSRU5UXG4gICAgICAgIC8vIChjbGVhciBhdHRyaWJ1dGlvbikgaW5zdGVhZCBvZiBwcm9kdWNpbmcgY29uZnVzaW5nIGNoaWxkIGVycm9ycy5cbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ29iamVjdCcgfHwgdmFsdWUgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiB7IGVycm9yOiBydWxlLm1lc3NhZ2UgfHwgYCR7bmFtZX0gbXVzdCBiZSBhbiBvYmplY3Qgb3IgYW4gYXJyYXlgLCB3YXJuaW5nOiBudWxsIH07XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYWNjID0geyBlcnJvcjogbnVsbCwgd2FybmluZzogbnVsbCB9O1xuICAgICAgICBmb3IgKGNvbnN0IFtzdWJSdWxlLCBzdWJWYWx1ZSwgc3ViTmFtZV0gb2YgZGVlcFJ1bGVFbnRyaWVzKHJ1bGUsIHZhbHVlLCBuYW1lKSkge1xuICAgICAgICAgICAgaWYgKG1lcmdlU3ViUmVzdWx0KGFjYywgc3ViUnVsZSwgZXZhbFJ1bGVTeW5jKHN1YlJ1bGUsIHN1YlZhbHVlLCBzdWJOYW1lKSkpXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICB9XG4gICAgcmV0dXJuIFBBU1M7XG59XG4vKiogQXN5bmMgY291bnRlcnBhcnQgb2YgZXZhbFJ1bGVTeW5jIOKAlCBjdXN0b20gdmFsaWRhdG9ycyBhcmUgYXdhaXRlZC4gKi9cbmZ1bmN0aW9uIGV2YWxSdWxlQXN5bmMocnVsZSwgcmF3VmFsdWUsIG5hbWUpIHtcbiAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICBjb25zdCBwcmVwID0gYXBwbHlUcmFuc2Zvcm0ocnVsZSwgcmF3VmFsdWUpO1xuICAgICAgICBpZiAoIXByZXAub2spXG4gICAgICAgICAgICByZXR1cm4geyBlcnJvcjogcHJlcC5mYWlsdXJlLCB3YXJuaW5nOiBudWxsIH07XG4gICAgICAgIGNvbnN0IHZhbHVlID0gcHJlcC52YWx1ZTtcbiAgICAgICAgbGV0IGZhaWx1cmUgPSBjaGVja0J1aWx0aW5SdWxlcyhydWxlLCB2YWx1ZSwgbmFtZSk7XG4gICAgICAgIGlmIChmYWlsdXJlID09PSBudWxsICYmIHR5cGVvZiBydWxlLnZhbGlkYXRvciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSAoeWllbGQgcnVsZS52YWxpZGF0b3IocnVsZSwgdmFsdWUpKTtcbiAgICAgICAgICAgICAgICB3YXJuTGVnYWN5VmFsaWRhdG9yUmV0dXJuKG5hbWUsIHJlc3VsdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgZmFpbHVyZSA9IHJlc29sdmVGYWlsdXJlTWVzc2FnZShlcnIsIHJ1bGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChmYWlsdXJlICE9PSBudWxsKVxuICAgICAgICAgICAgcmV0dXJuIHsgZXJyb3I6IGZhaWx1cmUsIHdhcm5pbmc6IG51bGwgfTtcbiAgICAgICAgaWYgKChydWxlLmZpZWxkcyB8fCBydWxlLmRlZmF1bHRGaWVsZCkgJiYgIWlzRW1wdHlWYWx1ZSh2YWx1ZSkpIHtcbiAgICAgICAgICAgIC8vIERlZXAgcnVsZXMgbmVlZCBhIGNvbnRhaW5lcjsgYSBub24tZW1wdHkgcHJpbWl0aXZlIGZhaWxzIHRoZSBQQVJFTlRcbiAgICAgICAgICAgIC8vIChjbGVhciBhdHRyaWJ1dGlvbikgaW5zdGVhZCBvZiBwcm9kdWNpbmcgY29uZnVzaW5nIGNoaWxkIGVycm9ycy5cbiAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdvYmplY3QnIHx8IHZhbHVlID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgZXJyb3I6IHJ1bGUubWVzc2FnZSB8fCBgJHtuYW1lfSBtdXN0IGJlIGFuIG9iamVjdCBvciBhbiBhcnJheWAsIHdhcm5pbmc6IG51bGwgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGFjYyA9IHsgZXJyb3I6IG51bGwsIHdhcm5pbmc6IG51bGwgfTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgW3N1YlJ1bGUsIHN1YlZhbHVlLCBzdWJOYW1lXSBvZiBkZWVwUnVsZUVudHJpZXMocnVsZSwgdmFsdWUsIG5hbWUpKSB7XG4gICAgICAgICAgICAgICAgaWYgKG1lcmdlU3ViUmVzdWx0KGFjYywgc3ViUnVsZSwgeWllbGQgZXZhbFJ1bGVBc3luYyhzdWJSdWxlLCBzdWJWYWx1ZSwgc3ViTmFtZSkpKVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFBBU1M7XG4gICAgfSk7XG59XG4vKipcbiAqIFN5bmNocm9ub3VzIHJ1bGUgcnVuLiBBIFByb21pc2UtcmV0dXJuaW5nIHZhbGlkYXRvciBDQU5OT1QgYmUgZXZhbHVhdGVkXG4gKiBoZXJlIOKAlCBpdCBpcyBkZWZlcnJlZCAodHJlYXRlZCBhcyBwYXNzaW5nIGZvciB0aGlzIHJ1bjsgaXRzIHJlamVjdGlvbiBpc1xuICogc3dhbGxvd2VkKSBhbmQgbGVmdCB0byB0aGUgYXN5bmMgcnVucyAoYmx1ci9zdWJtaXQpLCB3aGljaCBhbHdheXMgYXdhaXQgaXQuXG4gKiBGYWlsaW5nIGl0IGluc3RlYWQgd291bGQgbWlzLXJlcG9ydCBcIlZhbGlkYXRpb24gZmFpbGVkXCIgb24gZXZlcnkga2V5c3Ryb2tlXG4gKiBmb3IgcGVyZmVjdGx5IHZhbGlkIGlucHV0LlxuICpcbiAqIFRoZSBwZXItcnVsZSB0cnkvY2F0Y2ggaXMgdGhlIGVuZ2luZSdzIHRvdGFsaXR5IGNob2tlIHBvaW50OiBOTyBpbnB1dCDigJRcbiAqIGluY2x1ZGluZyBleG90aWMgdmFsdWVzIHRoYXQgYnJlYWsgYSBidWlsdGluIGNoZWNrIOKAlCBtYXkgZXNjYXBlIGFzIGEgdGhyb3c7XG4gKiBldmVyeSBmYWlsdXJlIHN1cmZhY2VzIHRocm91Z2ggdGhlIGVycm9yL3dhcm5pbmcgY2hhbm5lbHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBydW5SdWxlc1N5bmMobmFtZSwgdmFsdWUsIHZhbHVlcywgcnVsZXMsIGluc3RhbmNlKSB7XG4gICAgY29uc3Qgc3RhdGUgPSB7IHdhcm5pbmc6IG51bGwgfTtcbiAgICBmb3IgKGNvbnN0IHJ1bGUgb2YgcmVzb2x2ZVJ1bGVzKHJ1bGVzLCB2YWx1ZXMsIGluc3RhbmNlKSkge1xuICAgICAgICBsZXQgcmVzdWx0O1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmVzdWx0ID0gZXZhbFJ1bGVTeW5jKHJ1bGUsIHZhbHVlLCBuYW1lKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICByZXN1bHQgPSB7IGVycm9yOiByZXNvbHZlRmFpbHVyZU1lc3NhZ2UoZXJyLCBydWxlKSwgd2FybmluZzogbnVsbCB9O1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGVycm9yID0gZm9sZFJ1bGVSZXN1bHQocnVsZSwgcmVzdWx0LCBzdGF0ZSk7XG4gICAgICAgIGlmIChlcnJvciAhPT0gbnVsbClcbiAgICAgICAgICAgIHJldHVybiB7IGVycm9yLCB3YXJuaW5nOiBzdGF0ZS53YXJuaW5nIH07XG4gICAgfVxuICAgIHJldHVybiB7IGVycm9yOiBudWxsLCB3YXJuaW5nOiBzdGF0ZS53YXJuaW5nIH07XG59XG4vKipcbiAqIEFzeW5jaHJvbm91cyBydWxlIHJ1bi4gQ3VzdG9tIHZhbGlkYXRvcnMgYXJlIGF3YWl0ZWQgKHN5bmMgb3IgYXN5bmMpOlxuICogcmVzb2x2aW5nIHBhc3NlcywgcmVqZWN0aW5nL3Rocm93aW5nIGZhaWxzLiBSZXR1cm4gdmFsdWVzIGFyZSBpZ25vcmVkLlxuICogU2hhcmVzIHRoZSB0b3RhbGl0eSBjaG9rZSBwb2ludCB3aXRoIHJ1blJ1bGVzU3luYy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJ1blJ1bGVzQXN5bmMobmFtZSwgdmFsdWUsIHZhbHVlcywgcnVsZXMsIGluc3RhbmNlKSB7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgY29uc3Qgc3RhdGUgPSB7IHdhcm5pbmc6IG51bGwgfTtcbiAgICAgICAgZm9yIChjb25zdCBydWxlIG9mIHJlc29sdmVSdWxlcyhydWxlcywgdmFsdWVzLCBpbnN0YW5jZSkpIHtcbiAgICAgICAgICAgIGxldCByZXN1bHQ7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IHlpZWxkIGV2YWxSdWxlQXN5bmMocnVsZSwgdmFsdWUsIG5hbWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IHsgZXJyb3I6IHJlc29sdmVGYWlsdXJlTWVzc2FnZShlcnIsIHJ1bGUpLCB3YXJuaW5nOiBudWxsIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBlcnJvciA9IGZvbGRSdWxlUmVzdWx0KHJ1bGUsIHJlc3VsdCwgc3RhdGUpO1xuICAgICAgICAgICAgaWYgKGVycm9yICE9PSBudWxsKVxuICAgICAgICAgICAgICAgIHJldHVybiB7IGVycm9yLCB3YXJuaW5nOiBzdGF0ZS53YXJuaW5nIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgZXJyb3I6IG51bGwsIHdhcm5pbmc6IHN0YXRlLndhcm5pbmcgfTtcbiAgICB9KTtcbn0iXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
|
|
596
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9zcmMvY29tcG9uZW50cy9Qcm9Gb3JtL2NvcmUvcnVuUnVsZXMudHMiLCJjb21wb25lbnRzL1Byb0Zvcm0vY29yZS9ydW5SdWxlcy5qcyJdLCJuYW1lcyI6WyJfcGF0aFV0aWxzIiwicmVxdWlyZSIsIl9kZXZXYXJuaW5nIiwiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCJyIiwiZSIsInQiLCJTeW1ib2wiLCJpdGVyYXRvciIsIkFycmF5IiwiaXNBcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsImxlbmd0aCIsIl9uIiwiRiIsInMiLCJuIiwiZG9uZSIsInZhbHVlIiwiZiIsIlR5cGVFcnJvciIsIm8iLCJhIiwidSIsImNhbGwiLCJuZXh0IiwiX2FycmF5TGlrZVRvQXJyYXkiLCJ0b1N0cmluZyIsInNsaWNlIiwiY29uc3RydWN0b3IiLCJuYW1lIiwiZnJvbSIsInRlc3QiLCJfX2F3YWl0ZXIiLCJ0aGlzQXJnIiwiX2FyZ3VtZW50cyIsIlAiLCJnZW5lcmF0b3IiLCJhZG9wdCIsInJlc29sdmUiLCJQcm9taXNlIiwicmVqZWN0IiwiZnVsZmlsbGVkIiwic3RlcCIsInJlamVjdGVkIiwicmVzdWx0IiwidGhlbiIsImFwcGx5IiwiaXNFbXB0eVZhbHVlIiwidW5kZWZpbmVkIiwiY29lcmNlRmFpbHVyZVJlYXNvbiIsInJlYXNvbiIsIkVycm9yIiwibWVzc2FnZSIsInJlc29sdmVGYWlsdXJlTWVzc2FnZSIsInJ1bGUiLCJfYSIsInJlc29sdmVSdWxlcyIsInJ1bGVzIiwidmFsdWVzIiwiaW5zdGFuY2UiLCJzb21lIiwiY3R4IiwiT2JqZWN0IiwiYXNzaWduIiwiZ2V0RmllbGRWYWx1ZSIsInJlc29sdmVWYWx1ZSIsImdldEZpZWxkc1ZhbHVlIiwibWFwIiwiZXJyIiwidmFsaWRhdG9yIiwibm9ybWFsaXplVHJpZ2dlcnMiLCJpdGVtVHJpZ2dlciIsImZvcm1UcmlnZ2VyIiwiZWZmZWN0aXZlIiwiZmlsdGVyUnVsZXNCeVRyaWdnZXIiLCJ0cmlnZ2VyIiwiYWN0aXZlVHJpZ2dlcnMiLCJmaWVsZE5hbWUiLCJpbmNsdWRlcyIsImZpbHRlciIsInJ1bGVUcmlnZ2VyIiwidmFsaWRhdGVUcmlnZ2VyIiwicnVsZVRyaWdnZXJzIiwibWF0Y2hlcyIsImRldldhcm5PbmNlIiwiY29uY2F0Iiwiam9pbiIsIlRZUEVfQ0hFQ0tTIiwic3RyaW5nIiwidiIsIm51bWJlciIsIk51bWJlciIsImlzTmFOIiwiYm9vbGVhbiIsIm1ldGhvZCIsImludGVnZXIiLCJpc0ludGVnZXIiLCJmbG9hdCIsImFycmF5Iiwib2JqZWN0IiwiX3R5cGVvZjIiLCJkYXRlIiwiRGF0ZSIsImdldFRpbWUiLCJyZWdleHAiLCJSZWdFeHAiLCJoZXgiLCJlbWFpbCIsInVybCIsIlVSTCIsInR5cGVGYWlsdXJlTWVzc2FnZSIsInR5cGUiLCJtZWFzdXJlVmFsdWUiLCJtZWFzdXJlZCIsInVuaXQiLCJjaGVja0J1aWx0aW5SdWxlcyIsInJlcXVpcmVkIiwid2hpdGVzcGFjZSIsInRyaW0iLCJsZW4iLCJtIiwibWluIiwibWF4IiwicGF0dGVybiIsImdsb2JhbCIsInN0aWNreSIsImxhc3RJbmRleCIsInRvUnVsZUFycmF5IiwiZGVlcE1lbWJlcnMiLCJtZW1iZXIiLCJpbmRleCIsIlN0cmluZyIsImVudHJpZXMiLCJQQVNTIiwiZXJyb3IiLCJ3YXJuaW5nIiwid2FybkxlZ2FjeVZhbGlkYXRvclJldHVybiIsImFwcGx5VHJhbnNmb3JtIiwicmF3VmFsdWUiLCJ0cmFuc2Zvcm0iLCJvayIsImZhaWx1cmUiLCJkZWVwUnVsZUVudHJpZXMiLCJmaWVsZHMiLCJzb3VyY2UiLCJfaSIsIl9PYmplY3QkZW50cmllcyIsIl9PYmplY3QkZW50cmllcyRfaSIsIl9zbGljZWRUb0FycmF5MiIsImtleSIsInN1YlJ1bGVzIiwiX2l0ZXJhdG9yIiwiX3N0ZXAiLCJzdWJSdWxlIiwicHVzaCIsImRlZmF1bHRGaWVsZCIsIl9pdGVyYXRvcjIiLCJfc3RlcDIiLCJfc3RlcDIkdmFsdWUiLCJfaXRlcmF0b3IzIiwiX3N0ZXAzIiwibWVyZ2VTdWJSZXN1bHQiLCJhY2MiLCJzdWIiLCJ3YXJuaW5nT25seSIsImZvbGRSdWxlUmVzdWx0Iiwic3RhdGUiLCJjb250ZW50IiwiZXZhbFJ1bGVBc3luYyIsIl9yZWdlbmVyYXRvciIsIm1hcmsiLCJfY2FsbGVlIiwicHJlcCIsIl9pdGVyYXRvcjQiLCJfc3RlcDQiLCJfc3RlcDQkdmFsdWUiLCJzdWJWYWx1ZSIsInN1Yk5hbWUiLCJfdCIsIl90MiIsIl90MyIsIl90NCIsIl90NSIsIndyYXAiLCJfY29udGV4dCIsInByZXYiLCJhYnJ1cHQiLCJzZW50IiwiZmluaXNoIiwic3RvcCIsInJ1blJ1bGVzQXN5bmMiLCJfY2FsbGVlMiIsIl9pdGVyYXRvcjUiLCJfc3RlcDUiLCJfdDYiLCJfdDciLCJfY29udGV4dDIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsSUFBQUEsVUFBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsV0FBQSxHQUFBRCxPQUFBO0FBQTJDLFNBQUFFLDJCQUFBQyxDQUFBLEVBQUFDLENBQUEsUUFBQUMsQ0FBQSx5QkFBQUMsTUFBQSxJQUFBSCxDQUFBLENBQUFHLE1BQUEsQ0FBQUMsUUFBQSxLQUFBSixDQUFBLHFCQUFBRSxDQUFBLFFBQUFHLEtBQUEsQ0FBQUMsT0FBQSxDQUFBTixDQUFBLE1BQUFFLENBQUEsR0FBQUssMkJBQUEsQ0FBQVAsQ0FBQSxNQUFBQyxDQUFBLElBQUFELENBQUEsdUJBQUFBLENBQUEsQ0FBQVEsTUFBQSxJQUFBTixDQUFBLEtBQUFGLENBQUEsR0FBQUUsQ0FBQSxPQUFBTyxFQUFBLE1BQUFDLENBQUEsWUFBQUEsRUFBQSxlQUFBQyxDQUFBLEVBQUFELENBQUEsRUFBQUUsQ0FBQSxXQUFBQSxFQUFBLFdBQUFILEVBQUEsSUFBQVQsQ0FBQSxDQUFBUSxNQUFBLEtBQUFLLElBQUEsV0FBQUEsSUFBQSxNQUFBQyxLQUFBLEVBQUFkLENBQUEsQ0FBQVMsRUFBQSxVQUFBUixDQUFB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cyIsInNvdXJjZXNDb250ZW50IjpbbnVsbCwidmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG5pbXBvcnQgeyByZXNvbHZlVmFsdWUgfSBmcm9tICcuL3BhdGhVdGlscyc7XG5pbXBvcnQgeyBkZXZXYXJuT25jZSB9IGZyb20gJy4vZGV2V2FybmluZyc7XG4vKiogRW1wdHkgZm9yIGByZXF1aXJlZGA6IHVuZGVmaW5lZCAvIG51bGwgLyAnJyAvIGVtcHR5IGFycmF5LiAqL1xuZnVuY3Rpb24gaXNFbXB0eVZhbHVlKHZhbHVlKSB7XG4gICAgcmV0dXJuICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICAgIHZhbHVlID09PSBudWxsIHx8XG4gICAgICAgIHZhbHVlID09PSAnJyB8fFxuICAgICAgICAoQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoID09PSAwKSk7XG59XG4vKipcbiAqIENvZXJjZSBhIHRocm93bi9yZWplY3RlZCByZWFzb24gaW50byBkaXNwbGF5YWJsZSBmYWlsdXJlIGNvbnRlbnQ6XG4gKiBhIG5vbi1lbXB0eSBFcnJvci5tZXNzYWdlIG9yIGEgbm9uLWVtcHR5IHBsYWluIHN0cmluZyDigJQgb3RoZXJ3aXNlIG51bGxcbiAqIChjYWxsZXIgcGlja3MgaXRzIGZhbGxiYWNrKS4gU2hhcmVkIHdpdGggdGhlIGZvcm0tbGV2ZWwgbGFzdC1yZXNvcnQgbmV0cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvZXJjZUZhaWx1cmVSZWFzb24ocmVhc29uKSB7XG4gICAgaWYgKHJlYXNvbiBpbnN0YW5jZW9mIEVycm9yICYmIHJlYXNvbi5tZXNzYWdlKVxuICAgICAgICByZXR1cm4gcmVhc29uLm1lc3NhZ2U7XG4gICAgaWYgKHR5cGVvZiByZWFzb24gPT09ICdzdHJpbmcnICYmIHJlYXNvbilcbiAgICAgICAgcmV0dXJuIHJlYXNvbjtcbiAgICByZXR1cm4gbnVsbDtcbn1cbi8qKlxuICogRmFpbHVyZSBtZXNzYWdlIGZvciBhIHJlamVjdGVkL3Rocm93biBjdXN0b20gdmFsaWRhdG9yOlxuICogRXJyb3IubWVzc2FnZSDihpIgcGxhaW4gc3RyaW5nIHJlYXNvbiDihpIgcnVsZS5tZXNzYWdlIOKGkiBnZW5lcmljIGZhbGxiYWNrLlxuICovXG5mdW5jdGlvbiByZXNvbHZlRmFpbHVyZU1lc3NhZ2UocmVhc29uLCBydWxlKSB7XG4gICAgdmFyIF9hO1xuICAgIHJldHVybiAoX2EgPSBjb2VyY2VGYWlsdXJlUmVhc29uKHJlYXNvbikpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IChydWxlLm1lc3NhZ2UgfHwgJ1ZhbGlkYXRpb24gZmFpbGVkJyk7XG59XG4vKipcbiAqIFJlc29sdmUgZnVuY3Rpb24tZm9ybSBydWxlcyBpbnRvIHN0YXRpYyBydWxlcy4gVGhlXG4gKiBjb250ZXh0IGV4cG9zZXMgdGhlIHZhbHVlIHNuYXBzaG90IHRoZSBydW4gd2FzIGludm9rZWQgd2l0aDsgZnVuY3Rpb24gcnVsZXNcbiAqIG11c3QgYmUgY2hlYXAgYW5kIHNpZGUtZWZmZWN0IGZyZWUg4oCUIHRoZXkgbWF5IGJlIHJlc29sdmVkIG1vcmUgdGhhbiBvbmNlXG4gKiBwZXIgdmFsaWRhdGlvbiBwYXNzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZVJ1bGVzKHJ1bGVzLCB2YWx1ZXMsIGluc3RhbmNlKSB7XG4gICAgLy8gRmFzdCBwYXRoOiBubyBmdW5jdGlvbiBydWxlcyDihpIgbm90aGluZyB0byByZXNvbHZlLCBubyBjdHggYWxsb2NhdGlvbi5cbiAgICAvLyBUaGlzIGFsc28gbWFrZXMgdGhlIGVuZ2luZS1pbnRlcm5hbCByZS1yZXNvbHV0aW9uIG9mIGFscmVhZHktcmVzb2x2ZWRcbiAgICAvLyBhcnJheXMgZnJlZS5cbiAgICBpZiAoIXJ1bGVzLnNvbWUoKHJ1bGUpID0+IHR5cGVvZiBydWxlID09PSAnZnVuY3Rpb24nKSkge1xuICAgICAgICByZXR1cm4gcnVsZXM7XG4gICAgfVxuICAgIC8vIExpdmUtaW5zdGFuY2UgbWVtYmVycyAoc2V0RmllbGRzVmFsdWUsIGdldEZpZWxkRXJyb3IsIOKApikgYXJlIHNwcmVhZCBpblxuICAgIC8vIHdoZW4gYXZhaWxhYmxlOyB0aGUgcmVhZHMgYWx3YXlzIGNvbWUgZnJvbSB0aGUgdmFsaWRhdGlvbi10aW1lIHNuYXBzaG90LlxuICAgIGNvbnN0IGN0eCA9IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgaW5zdGFuY2UpLCB7IGdldEZpZWxkVmFsdWU6IChuYW1lKSA9PiByZXNvbHZlVmFsdWUodmFsdWVzLCBuYW1lKSwgZ2V0RmllbGRzVmFsdWU6ICgpID0+IHZhbHVlcyB9KTtcbiAgICByZXR1cm4gcnVsZXMubWFwKChydWxlKSA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgcnVsZSAhPT0gJ2Z1bmN0aW9uJylcbiAgICAgICAgICAgIHJldHVybiBydWxlO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIHJ1bGUoY3R4KTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAvLyBBIHRocm93aW5nIHJ1bGUgZmFjdG9yeSBtdXN0IG5vdCBjcmFzaCByZW5kZXJpbmcgb3IgdmFsaWRhdGlvbiDigJRcbiAgICAgICAgICAgIC8vIHN1cmZhY2UgaXQgYXMgYSBydWxlIHRoYXQgYWx3YXlzIGZhaWxzIHdpdGggdGhlIHRocm93biByZWFzb24uXG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHZhbGlkYXRvcjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9KTtcbn1cbi8qKlxuICogTm9ybWFsaXplIGEgZm9ybS9pdGVtLWxldmVsIHZhbGlkYXRlVHJpZ2dlciBjb25maWcgaW50byB0aGUgZWZmZWN0aXZlXG4gKiBpbnRlcmFjdGl2ZSBldmVudCBsaXN0OiBpdGVtLWxldmVsICh3aGVuIHByZXNlbnQpIG92ZXJyaWRlcyBmb3JtLWxldmVsO1xuICogYGZhbHNlYCBkaXNhYmxlcyBpbnRlcmFjdGl2ZSB2YWxpZGF0aW9uIGVudGlyZWx5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplVHJpZ2dlcnMoaXRlbVRyaWdnZXIsIGZvcm1UcmlnZ2VyKSB7XG4gICAgY29uc3QgZWZmZWN0aXZlID0gaXRlbVRyaWdnZXIgPT09IHVuZGVmaW5lZCA/IGZvcm1UcmlnZ2VyIDogaXRlbVRyaWdnZXI7XG4gICAgaWYgKGVmZmVjdGl2ZSA9PT0gZmFsc2UpXG4gICAgICAgIHJldHVybiBbXTtcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheShlZmZlY3RpdmUpID8gZWZmZWN0aXZlIDogW2VmZmVjdGl2ZV07XG59XG4vKipcbiAqIEZpbHRlciBydWxlcyBhcHBsaWNhYmxlIHRvIGFuIGludGVyYWN0aXZlIGV2ZW50OiB0aGUgZXZlbnRcbiAqIHZhbGlkYXRlcyBvbmx5IHdoZW4gaXQgaXMgaW4gdGhlIGl0ZW0ncyBlZmZlY3RpdmUgdHJpZ2dlciBzZXQuIFdpdGhpbiB0aGVcbiAqIHNldCwgYSBydWxlIFdJVEhPVVQgYHZhbGlkYXRlVHJpZ2dlcmAgcnVucyBvbiBldmVyeSBldmVudDsgYSBydWxlIFdJVEggb25lXG4gKiBydW5zIG9ubHkgb24gbWF0Y2hpbmcgZXZlbnRzIOKAlCBzbyBhIHJ1bGUgdHJpZ2dlciBvdXRzaWRlIHRoZSBpdGVtJ3Mgc2V0XG4gKiBuZXZlciBmaXJlcyBpbnRlcmFjdGl2ZWx5LiBTdWJtaXQtdGltZSB2YWxpZGF0aW9uIGJ5cGFzc2VzIHRoaXMgZmlsdGVyIGFuZFxuICogcnVucyBldmVyeSBydWxlLlxuICpcbiAqIERldiBndWFyZDogYSBydWxlIHdob3NlIChub24tZW1wdHkpIHRyaWdnZXIgc2V0IGlzIGZ1bGx5IE9VVFNJREUgdGhlXG4gKiBhY3RpdmUgc2V0IGNhbiBuZXZlciBmaXJlIGludGVyYWN0aXZlbHkg4oCUIHVzdWFsbHkgYSBsZWZ0b3ZlciBvZiB0aGVcbiAqIHByZS0wLjAuNzYgb3ZlcnJpZGUgc2VtYW50aWNzLCBzbyBpdCB3YXJucyBvbmNlLiBgdmFsaWRhdGVUcmlnZ2VyOiBbXWBcbiAqIGlzIHRoZSBkZWxpYmVyYXRlIHN1Ym1pdC1vbmx5IGlkaW9tIGFuZCBzdGF5cyBzaWxlbnQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXJSdWxlc0J5VHJpZ2dlcihydWxlcywgdHJpZ2dlciwgYWN0aXZlVHJpZ2dlcnMsIGZpZWxkTmFtZSkge1xuICAgIGlmICghYWN0aXZlVHJpZ2dlcnMuaW5jbHVkZXModHJpZ2dlcikpXG4gICAgICAgIHJldHVybiBbXTtcbiAgICByZXR1cm4gcnVsZXMuZmlsdGVyKChydWxlKSA9PiB7XG4gICAgICAgIGNvbnN0IHJ1bGVUcmlnZ2VyID0gcnVsZS52YWxpZGF0ZVRyaWdnZXI7XG4gICAgICAgIGlmIChydWxlVHJpZ2dlciA9PT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIGNvbnN0IHJ1bGVUcmlnZ2VycyA9IEFycmF5LmlzQXJyYXkocnVsZVRyaWdnZXIpID8gcnVsZVRyaWdnZXIgOiBbcnVsZVRyaWdnZXJdO1xuICAgICAgICBjb25zdCBtYXRjaGVzID0gcnVsZVRyaWdnZXJzLmluY2x1ZGVzKHRyaWdnZXIpO1xuICAgICAgICBpZiAoIW1hdGNoZXMgJiZcbiAgICAgICAgICAgIHJ1bGVUcmlnZ2Vycy5sZW5ndGggPiAwICYmXG4gICAgICAgICAgICAhcnVsZVRyaWdnZXJzLnNvbWUoKHQpID0+IGFjdGl2ZVRyaWdnZXJzLmluY2x1ZGVzKHQpKSkge1xuICAgICAgICAgICAgY29uc3QgbmFtZSA9IGZpZWxkTmFtZSAhPT0gbnVsbCAmJiBmaWVsZE5hbWUgIT09IHZvaWQgMCA/IGZpZWxkTmFtZSA6ICcoYW55KSc7XG4gICAgICAgICAgICBkZXZXYXJuT25jZShgdHJpZ2dlcjoke25hbWV9OiR7cnVsZVRyaWdnZXJzLmpvaW4oJywnKX1gLCBgW1Byb0Zvcm1dIEZpZWxkIFwiJHtuYW1lfVwiOiBydWxlIHZhbGlkYXRlVHJpZ2dlciBbJHtydWxlVHJpZ2dlcnMuam9pbignLCAnKX1dIGlzIG91dHNpZGUgdGhpcyBmaWVsZCdzIGFjdGl2ZSB0cmlnZ2VyIHNldCBbJHthY3RpdmVUcmlnZ2Vycy5qb2luKCcsICcpfV0g4oCUIHRoZSBydWxlIHdpbGwgb25seSBydW4gb24gc3VibWl0LiBJbmNsdWRlIGl0IGluIHRoZSBpdGVtL2Zvcm0gdmFsaWRhdGVUcmlnZ2VyIHRvIHJ1biBpdCBpbnRlcmFjdGl2ZWx5LmApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtYXRjaGVzO1xuICAgIH0pO1xufVxuLyoqIEJ1aWx0LWluIGB0eXBlYCBjaGVja3MuIGBlbnVtYCBpcyBoYW5kbGVkIHNlcGFyYXRlbHkgYWdhaW5zdCBgcnVsZS5lbnVtYC4gKi9cbmNvbnN0IFRZUEVfQ0hFQ0tTID0ge1xuICAgIHN0cmluZzogKHYpID0+IHR5cGVvZiB2ID09PSAnc3RyaW5nJyxcbiAgICBudW1iZXI6ICh2KSA9PiB0eXBlb2YgdiA9PT0gJ251bWJlcicgJiYgIU51bWJlci5pc05hTih2KSxcbiAgICBib29sZWFuOiAodikgPT4gdHlwZW9mIHYgPT09ICdib29sZWFuJyxcbiAgICBtZXRob2Q6ICh2KSA9PiB0eXBlb2YgdiA9PT0gJ2Z1bmN0aW9uJyxcbiAgICBpbnRlZ2VyOiAodikgPT4gdHlwZW9mIHYgPT09ICdudW1iZXInICYmIE51bWJlci5pc0ludGVnZXIodiksXG4gICAgZmxvYXQ6ICh2KSA9PiB0eXBlb2YgdiA9PT0gJ251bWJlcicgJiYgIU51bWJlci5pc05hTih2KSAmJiAhTnVtYmVyLmlzSW50ZWdlcih2KSxcbiAgICBhcnJheTogKHYpID0+IEFycmF5LmlzQXJyYXkodiksXG4gICAgb2JqZWN0OiAodikgPT4gdHlwZW9mIHYgPT09ICdvYmplY3QnICYmIHYgIT09IG51bGwgJiYgIUFycmF5LmlzQXJyYXkodiksXG4gICAgZGF0ZTogKHYpID0+IHYgaW5zdGFuY2VvZiBEYXRlXG4gICAgICAgID8gIU51bWJlci5pc05hTih2LmdldFRpbWUoKSlcbiAgICAgICAgOiB0eXBlb2YgKHYgPT09IG51bGwgfHwgdiA9PT0gdm9pZCAwID8gdm9pZCAwIDogdi5nZXRUaW1lKSA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAgICAgICAgICAgIU51bWJlci5pc05hTih2LmdldFRpbWUoKSksXG4gICAgcmVnZXhwOiAodikgPT4ge1xuICAgICAgICBpZiAodiBpbnN0YW5jZW9mIFJlZ0V4cClcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICBpZiAodHlwZW9mIHYgIT09ICdzdHJpbmcnKVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgbmV3IFJlZ0V4cCh2KTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChfYSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfSxcbiAgICBoZXg6ICh2KSA9PiB0eXBlb2YgdiA9PT0gJ3N0cmluZycgJiYgL14jPyhbYS1mMC05XXs2fXxbYS1mMC05XXszfSkkL2kudGVzdCh2KSxcbiAgICAvLyBTdHJpbmctb25seTogY29lcmNpbmcgdmlhIFN0cmluZygpIHdvdWxkIGxldCBlLmcuIFsnYUBiLmNvJ10gc3RyaW5naWZ5XG4gICAgLy8gaW50byBhIHBhc3NpbmcgdmFsdWUuXG4gICAgZW1haWw6ICh2KSA9PiB0eXBlb2YgdiA9PT0gJ3N0cmluZycgJiYgL15bXlxcc0BdK0BbXlxcc0BdK1xcLlteXFxzQF0rJC8udGVzdCh2KSxcbiAgICB1cmw6ICh2KSA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgdiAhPT0gJ3N0cmluZycpXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBuZXcgVVJMKHYpO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKF9hKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9LFxufTtcbi8qKiBGcmllbmRseSBnZW5lcmF0ZWQgbWVzc2FnZXMgZm9yIHRoZSBsZWdhY3kgdHlwZSBuYW1lczsgb3RoZXJzIGdldCBhIGdlbmVyaWMgb25lLiAqL1xuZnVuY3Rpb24gdHlwZUZhaWx1cmVNZXNzYWdlKG5hbWUsIHR5cGUpIHtcbiAgICBpZiAodHlwZSA9PT0gJ251bWJlcicpXG4gICAgICAgIHJldHVybiBgJHtuYW1lfSBtdXN0IGJlIGEgbnVtYmVyYDtcbiAgICBpZiAodHlwZSA9PT0gJ2VtYWlsJylcbiAgICAgICAgcmV0dXJuIGAke25hbWV9IG11c3QgYmUgYSB2YWxpZCBlbWFpbGA7XG4gICAgaWYgKHR5cGUgPT09ICd1cmwnKVxuICAgICAgICByZXR1cm4gYCR7bmFtZX0gbXVzdCBiZSBhIHZhbGlkIFVSTGA7XG4gICAgcmV0dXJuIGAke25hbWV9IGlzIG5vdCBhIHZhbGlkICR7dHlwZX1gO1xufVxuLyoqIE1lYXN1cmUgYSB2YWx1ZSBmb3IgbGVuL21pbi9tYXg6IHN0cmluZyDihpIgbGVuZ3RoLCBhcnJheSDihpIgY291bnQsIG51bWJlciDihpIgdmFsdWUuICovXG5mdW5jdGlvbiBtZWFzdXJlVmFsdWUodmFsdWUpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJylcbiAgICAgICAgcmV0dXJuIHsgbWVhc3VyZWQ6IHZhbHVlLmxlbmd0aCwgdW5pdDogJyBjaGFyYWN0ZXJzJyB9O1xuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSlcbiAgICAgICAgcmV0dXJuIHsgbWVhc3VyZWQ6IHZhbHVlLmxlbmd0aCwgdW5pdDogJyBpdGVtcycgfTtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyAmJiAhTnVtYmVyLmlzTmFOKHZhbHVlKSlcbiAgICAgICAgcmV0dXJuIHsgbWVhc3VyZWQ6IHZhbHVlLCB1bml0OiAnJyB9O1xuICAgIHJldHVybiBudWxsO1xufVxuLyoqXG4gKiBFdmFsdWF0ZSBldmVyeSBidWlsdC1pbiAobm9uLWB2YWxpZGF0b3JgKSBydWxlIGtpbmQgZm9yIGEgc2luZ2xlIHJ1bGUuXG4gKiBSZXR1cm5zIHRoZSBlcnJvciBjb250ZW50IGZvciB0aGUgZmlyc3QgZmFpbGluZyBjaGVjaywgb3IgbnVsbC5cbiAqXG4gKiBFbXB0eSB2YWx1ZXMgKHVuZGVmaW5lZCAvIG51bGwgLyAnJyAvIGVtcHR5IGFycmF5KSBhcmUgb25seSBjaGVja2VkIGJ5XG4gKiBgcmVxdWlyZWRgIOKAlCBldmVyeSBvdGhlciBidWlsdGluIGNoZWNrIGlzIHNraXBwZWQsIHNvIG9wdGlvbmFsIGZpZWxkc1xuICogZG9uJ3QgZXJyb3IgdW50aWwgdGhleSBoYXZlIGNvbnRlbnQuIEN1c3RvbSB2YWxpZGF0b3JzIGFyZSBOT1Qgc3ViamVjdCB0b1xuICogdGhpcyBza2lwICh0aGV5IHJlY2VpdmUgdGhlIGVtcHR5IHZhbHVlIGFuZCBkZWNpZGUgdGhlbXNlbHZlcykuXG4gKi9cbmZ1bmN0aW9uIGNoZWNrQnVpbHRpblJ1bGVzKHJ1bGUsIHZhbHVlLCBuYW1lKSB7XG4gICAgaWYgKHJ1bGUucmVxdWlyZWQgJiYgaXNFbXB0eVZhbHVlKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gcnVsZS5tZXNzYWdlIHx8IGAke25hbWV9IGlzIHJlcXVpcmVkYDtcbiAgICB9XG4gICAgaWYgKGlzRW1wdHlWYWx1ZSh2YWx1ZSkpXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIC8vIE5vbi1lbXB0eSBzdHJpbmcgb2Ygb25seSB3aGl0ZXNwYWNlICh0aGUgcmVxdWlyZWQrd2hpdGVzcGFjZSB0cmltIGlkaW9tKS5cbiAgICBpZiAocnVsZS53aGl0ZXNwYWNlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgdmFsdWUudHJpbSgpID09PSAnJykge1xuICAgICAgICByZXR1cm4gcnVsZS5tZXNzYWdlIHx8IGAke25hbWV9IGNhbm5vdCBiZSBibGFua2A7XG4gICAgfVxuICAgIC8vIGxlbjogZXhhY3QgbGVuZ3RoL2NvdW50L3ZhbHVlIOKAlCB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgbWluL21heC5cbiAgICBpZiAocnVsZS5sZW4gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zdCBtID0gbWVhc3VyZVZhbHVlKHZhbHVlKTtcbiAgICAgICAgaWYgKG0gIT09IG51bGwgJiYgbS5tZWFzdXJlZCAhPT0gcnVsZS5sZW4pIHtcbiAgICAgICAgICAgIHJldHVybiBydWxlLm1lc3NhZ2UgfHwgYCR7bmFtZX0gbXVzdCBiZSBleGFjdGx5ICR7cnVsZS5sZW59JHttLnVuaXR9YDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIGlmIChydWxlLm1pbiAhPT0gdW5kZWZpbmVkIHx8IHJ1bGUubWF4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc3QgbSA9IG1lYXN1cmVWYWx1ZSh2YWx1ZSk7XG4gICAgICAgIGlmIChtICE9PSBudWxsKSB7XG4gICAgICAgICAgICBpZiAocnVsZS5taW4gIT09IHVuZGVmaW5lZCAmJiBtLm1lYXN1cmVkIDwgcnVsZS5taW4pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcnVsZS5tZXNzYWdlIHx8IGAke25hbWV9IG11c3QgYmUgYXQgbGVhc3QgJHtydWxlLm1pbn0ke20udW5pdH1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHJ1bGUubWF4ICE9PSB1bmRlZmluZWQgJiYgbS5tZWFzdXJlZCA+IHJ1bGUubWF4KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJ1bGUubWVzc2FnZSB8fCBgJHtuYW1lfSBtdXN0IGJlIG5vIG1vcmUgdGhhbiAke3J1bGUubWF4fSR7bS51bml0fWA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKHJ1bGUucGF0dGVybiAmJiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIC8vIEEgL2cgb3IgL3kgcmVnZXggaXMgc3RhdGVmdWw6IGxhc3RJbmRleCBwZXJzaXN0cyBhY3Jvc3MgLnRlc3QoKSBjYWxscyxcbiAgICAgICAgLy8gc28gcmVwZWF0ZWQgcnVucyB3b3VsZCBhbHRlcm5hdGUgcGFzcy9mYWlsIOKAlCByZXNldCBpdCBldmVyeSBydW4uXG4gICAgICAgIGlmIChydWxlLnBhdHRlcm4uZ2xvYmFsIHx8IHJ1bGUucGF0dGVybi5zdGlja3kpXG4gICAgICAgICAgICBydWxlLnBhdHRlcm4ubGFzdEluZGV4ID0gMDtcbiAgICAgICAgaWYgKCFydWxlLnBhdHRlcm4udGVzdCh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBydWxlLm1lc3NhZ2UgfHwgYCR7bmFtZX0gZm9ybWF0IGlzIGludmFsaWRgO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChydWxlLnR5cGUgJiYgcnVsZS50eXBlICE9PSAnZW51bScgJiYgIVRZUEVfQ0hFQ0tTW3J1bGUudHlwZV0odmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBydWxlLm1lc3NhZ2UgfHwgdHlwZUZhaWx1cmVNZXNzYWdlKG5hbWUsIHJ1bGUudHlwZSk7XG4gICAgfVxuICAgIC8vIGVudW0gbWVtYmVyc2hpcDogYXBwbGllcyBmb3IgdHlwZSAnZW51bScgb3Igd2hlbmV2ZXIgcnVsZS5lbnVtIGlzIHByZXNlbnQuXG4gICAgaWYgKHJ1bGUuZW51bSAmJiBBcnJheS5pc0FycmF5KHJ1bGUuZW51bSkgJiYgIXJ1bGUuZW51bS5pbmNsdWRlcyh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIHJ1bGUubWVzc2FnZSB8fCBgJHtuYW1lfSBtdXN0IGJlIG9uZSBvZiAke3J1bGUuZW51bS5qb2luKCcsICcpfWA7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xufVxuZnVuY3Rpb24gdG9SdWxlQXJyYXkocnVsZXMpIHtcbiAgICBpZiAoIXJ1bGVzKVxuICAgICAgICByZXR1cm4gW107XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkocnVsZXMpID8gcnVsZXMgOiBbcnVsZXNdO1xufVxuLyoqIE1lbWJlcnMgZm9yIGRlZXAgcnVsZXM6IGFycmF5IOKGkiBpbmRleGVkIGVudHJpZXMsIHBsYWluIG9iamVjdCDihpIga2V5IGVudHJpZXMuICovXG5mdW5jdGlvbiBkZWVwTWVtYmVycyh2YWx1ZSkge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSlcbiAgICAgICAgcmV0dXJuIHZhbHVlLm1hcCgobWVtYmVyLCBpbmRleCkgPT4gW1N0cmluZyhpbmRleCksIG1lbWJlcl0pO1xuICAgIGlmICh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKVxuICAgICAgICByZXR1cm4gT2JqZWN0LmVudHJpZXModmFsdWUpO1xuICAgIHJldHVybiBbXTtcbn1cbmNvbnN0IFBBU1MgPSB7IGVycm9yOiBudWxsLCB3YXJuaW5nOiBudWxsIH07XG4vKipcbiAqIERldiBndWFyZCBmb3IgdGhlIHByZS0wLjAuNzYgdmFsaWRhdG9yIGNvbnRyYWN0OiByZXR1cm5pbmcgYSBzdHJpbmcgb3JcbiAqIGBmYWxzZWAgdXNlZCB0byBGQUlMIHRoZSBydWxlIOKAlCB1bmRlciB0aGUgYChydWxlLCB2YWx1ZSlgIGNvbnRyYWN0IHJldHVyblxuICogdmFsdWVzIGFyZSBpZ25vcmVkIGFuZCBvbmx5IHRocm93L3JlamVjdCBmYWlscy4gU3VjaCBhIHJldHVybiBpcyBhbG1vc3RcbiAqIGNlcnRhaW5seSBhIGxlZ2FjeSB2YWxpZGF0b3Igc2lsZW50bHkgcGFzc2luZywgc28gaXQgd2FybnMgb25jZS5cbiAqL1xuZnVuY3Rpb24gd2FybkxlZ2FjeVZhbGlkYXRvclJldHVybihuYW1lLCByZXN1bHQpIHtcbiAgICBpZiAodHlwZW9mIHJlc3VsdCAhPT0gJ3N0cmluZycgJiYgcmVzdWx0ICE9PSBmYWxzZSlcbiAgICAgICAgcmV0dXJuO1xuICAgIGRldldhcm5PbmNlKGB2YWxpZGF0b3ItcmV0dXJuOiR7bmFtZX1gLCBgW1Byb0Zvcm1dIEZpZWxkIFwiJHtuYW1lfVwiOiBhIGN1c3RvbSB2YWxpZGF0b3IgcmV0dXJuZWQgJHt0eXBlb2YgcmVzdWx0ID09PSAnc3RyaW5nJyA/ICdhIHN0cmluZycgOiAnZmFsc2UnfSDigJQgcmV0dXJuIHZhbHVlcyBhcmUgSUdOT1JFRDsgdmFsaWRhdG9ycyBmYWlsIGJ5IHRocm93aW5nIG9yIHJlamVjdGluZyAoYSB0aHJvd24gRXJyb3IncyBtZXNzYWdlIGJlY29tZXMgdGhlIGZpZWxkIGVycm9yKS5gKTtcbn1cbi8qKiBSdW4gYSBydWxlJ3MgdHJhbnNmb3JtLCBjb250YWluaW5nIHRocm93cyBhcyBhIHJ1bGUgZmFpbHVyZS4gKi9cbmZ1bmN0aW9uIGFwcGx5VHJhbnNmb3JtKHJ1bGUsIHJhd1ZhbHVlKSB7XG4gICAgaWYgKHR5cGVvZiBydWxlLnRyYW5zZm9ybSAhPT0gJ2Z1bmN0aW9uJylcbiAgICAgICAgcmV0dXJuIHsgb2s6IHRydWUsIHZhbHVlOiByYXdWYWx1ZSB9O1xuICAgIHRyeSB7XG4gICAgICAgIHJldHVybiB7IG9rOiB0cnVlLCB2YWx1ZTogcnVsZS50cmFuc2Zvcm0ocmF3VmFsdWUpIH07XG4gICAgfVxuICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgcmV0dXJuIHsgb2s6IGZhbHNlLCBmYWlsdXJlOiByZXNvbHZlRmFpbHVyZU1lc3NhZ2UoZXJyLCBydWxlKSB9O1xuICAgIH1cbn1cbi8qKlxuICogRmxhdHRlbiBhIHJ1bGUncyBkZWVwIHNvdXJjZXMgKGBmaWVsZHNgIHBlciBrZXksIHRoZW4gYGRlZmF1bHRGaWVsZGAgcGVyXG4gKiBtZW1iZXIpIGludG8gW3N1YlJ1bGUsIG1lbWJlclZhbHVlLCBtZW1iZXJOYW1lXSB0dXBsZXMg4oCUIHRoZSBzaW5nbGUgcGxhY2VcbiAqIHRoYXQga25vd3MgaG93IGRlZXAgcnVsZXMgbWFwIG9udG8gYSBjb250YWluZXIgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIGRlZXBSdWxlRW50cmllcyhydWxlLCB2YWx1ZSwgbmFtZSkge1xuICAgIGNvbnN0IGVudHJpZXMgPSBbXTtcbiAgICBpZiAocnVsZS5maWVsZHMpIHtcbiAgICAgICAgY29uc3Qgc291cmNlID0gdmFsdWU7XG4gICAgICAgIGZvciAoY29uc3QgW2tleSwgc3ViUnVsZXNdIG9mIE9iamVjdC5lbnRyaWVzKHJ1bGUuZmllbGRzKSkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBzdWJSdWxlIG9mIHRvUnVsZUFycmF5KHN1YlJ1bGVzKSkge1xuICAgICAgICAgICAgICAgIGVudHJpZXMucHVzaChbc3ViUnVsZSwgc291cmNlW2tleV0sIGAke25hbWV9LiR7a2V5fWBdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAocnVsZS5kZWZhdWx0RmllbGQpIHtcbiAgICAgICAgZm9yIChjb25zdCBba2V5LCBtZW1iZXJdIG9mIGRlZXBNZW1iZXJzKHZhbHVlKSkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBzdWJSdWxlIG9mIHRvUnVsZUFycmF5KHJ1bGUuZGVmYXVsdEZpZWxkKSkge1xuICAgICAgICAgICAgICAgIGVudHJpZXMucHVzaChbc3ViUnVsZSwgbWVtYmVyLCBgJHtuYW1lfS4ke2tleX1gXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGVudHJpZXM7XG59XG4vKipcbiAqIE1lcmdlIGEgc3ViLXJ1bGUncyBvdXRjb21lIGludG8gdGhlIHBhcmVudCdzIGNoYW5uZWxzLiBBIHN1Yi1ydWxlIGZsYWdnZWRcbiAqIGB3YXJuaW5nT25seWAgY29udHJpYnV0ZXMgaXRzIGZhaWx1cmUgYXMgYSBXQVJOSU5HOyBvdGhlcndpc2UgaXRzIGVycm9yXG4gKiBibG9ja3MuIFJldHVybnMgdHJ1ZSB3aGVuIGEgYmxvY2tpbmcgZXJyb3IgbGFuZGVkIChzdG9wIHdhbGtpbmcpLlxuICovXG5mdW5jdGlvbiBtZXJnZVN1YlJlc3VsdChhY2MsIHN1YlJ1bGUsIHN1Yikge1xuICAgIGlmIChzdWIud2FybmluZyAhPT0gbnVsbCAmJiBhY2Mud2FybmluZyA9PT0gbnVsbClcbiAgICAgICAgYWNjLndhcm5pbmcgPSBzdWIud2FybmluZztcbiAgICBpZiAoc3ViLmVycm9yICE9PSBudWxsKSB7XG4gICAgICAgIGlmIChzdWJSdWxlLndhcm5pbmdPbmx5KSB7XG4gICAgICAgICAgICBpZiAoYWNjLndhcm5pbmcgPT09IG51bGwpXG4gICAgICAgICAgICAgICAgYWNjLndhcm5pbmcgPSBzdWIuZXJyb3I7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBhY2MuZXJyb3IgPSBzdWIuZXJyb3I7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59XG4vKipcbiAqIEZvbGQgb25lIHJ1bGUncyBvdXRjb21lIGludG8gdGhlIHJ1bi1sZXZlbCBjaGFubmVscy4gQSBydWxlIGZsYWdnZWRcbiAqIGB3YXJuaW5nT25seWAgZG93bmdyYWRlcyBldmVyeXRoaW5nIGl0IHByb2R1Y2VkIChvd24gY2hlY2tzIEFORCBkZWVwXG4gKiBzdWItcnVsZXMpIHRvIGEgd2FybmluZy4gUmV0dXJucyB0aGUgYmxvY2tpbmcgZXJyb3IgdG8gc3VyZmFjZSwgb3IgbnVsbC5cbiAqL1xuZnVuY3Rpb24gZm9sZFJ1bGVSZXN1bHQocnVsZSwgcmVzdWx0LCBzdGF0ZSkge1xuICAgIHZhciBfYTtcbiAgICBpZiAocnVsZS53YXJuaW5nT25seSkge1xuICAgICAgICBjb25zdCBjb250ZW50ID0gKF9hID0gcmVzdWx0LmVycm9yKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiByZXN1bHQud2FybmluZztcbiAgICAgICAgaWYgKGNvbnRlbnQgIT09IG51bGwgJiYgc3RhdGUud2FybmluZyA9PT0gbnVsbClcbiAgICAgICAgICAgIHN0YXRlLndhcm5pbmcgPSBjb250ZW50O1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgaWYgKHJlc3VsdC53YXJuaW5nICE9PSBudWxsICYmIHN0YXRlLndhcm5pbmcgPT09IG51bGwpXG4gICAgICAgIHN0YXRlLndhcm5pbmcgPSByZXN1bHQud2FybmluZztcbiAgICByZXR1cm4gcmVzdWx0LmVycm9yO1xufVxuLyoqIEV2YWx1YXRlIE9ORSBydWxlICh0cmFuc2Zvcm0g4oaSIGJ1aWx0aW4gY2hlY2tzIOKGkiB2YWxpZGF0b3Ig4oaSIGRlZXAgcnVsZXMpOyBjdXN0b20gdmFsaWRhdG9ycyBhcmUgYXdhaXRlZC4gKi9cbmZ1bmN0aW9uIGV2YWxSdWxlQXN5bmMocnVsZSwgcmF3VmFsdWUsIG5hbWUpIHtcbiAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICBjb25zdCBwcmVwID0gYXBwbHlUcmFuc2Zvcm0ocnVsZSwgcmF3VmFsdWUpO1xuICAgICAgICBpZiAoIXByZXAub2spXG4gICAgICAgICAgICByZXR1cm4geyBlcnJvcjogcHJlcC5mYWlsdXJlLCB3YXJuaW5nOiBudWxsIH07XG4gICAgICAgIGNvbnN0IHZhbHVlID0gcHJlcC52YWx1ZTtcbiAgICAgICAgbGV0IGZhaWx1cmUgPSBjaGVja0J1aWx0aW5SdWxlcyhydWxlLCB2YWx1ZSwgbmFtZSk7XG4gICAgICAgIGlmIChmYWlsdXJlID09PSBudWxsICYmIHR5cGVvZiBydWxlLnZhbGlkYXRvciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSAoeWllbGQgcnVsZS52YWxpZGF0b3IocnVsZSwgdmFsdWUpKTtcbiAgICAgICAgICAgICAgICB3YXJuTGVnYWN5VmFsaWRhdG9yUmV0dXJuKG5hbWUsIHJlc3VsdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgZmFpbHVyZSA9IHJlc29sdmVGYWlsdXJlTWVzc2FnZShlcnIsIHJ1bGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChmYWlsdXJlICE9PSBudWxsKVxuICAgICAgICAgICAgcmV0dXJuIHsgZXJyb3I6IGZhaWx1cmUsIHdhcm5pbmc6IG51bGwgfTtcbiAgICAgICAgaWYgKChydWxlLmZpZWxkcyB8fCBydWxlLmRlZmF1bHRGaWVsZCkgJiYgIWlzRW1wdHlWYWx1ZSh2YWx1ZSkpIHtcbiAgICAgICAgICAgIC8vIERlZXAgcnVsZXMgbmVlZCBhIGNvbnRhaW5lcjsgYSBub24tZW1wdHkgcHJpbWl0aXZlIGZhaWxzIHRoZSBQQVJFTlRcbiAgICAgICAgICAgIC8vIChjbGVhciBhdHRyaWJ1dGlvbikgaW5zdGVhZCBvZiBwcm9kdWNpbmcgY29uZnVzaW5nIGNoaWxkIGVycm9ycy5cbiAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdvYmplY3QnIHx8IHZhbHVlID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgZXJyb3I6IHJ1bGUubWVzc2FnZSB8fCBgJHtuYW1lfSBtdXN0IGJlIGFuIG9iamVjdCBvciBhbiBhcnJheWAsIHdhcm5pbmc6IG51bGwgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGFjYyA9IHsgZXJyb3I6IG51bGwsIHdhcm5pbmc6IG51bGwgfTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgW3N1YlJ1bGUsIHN1YlZhbHVlLCBzdWJOYW1lXSBvZiBkZWVwUnVsZUVudHJpZXMocnVsZSwgdmFsdWUsIG5hbWUpKSB7XG4gICAgICAgICAgICAgICAgaWYgKG1lcmdlU3ViUmVzdWx0KGFjYywgc3ViUnVsZSwgeWllbGQgZXZhbFJ1bGVBc3luYyhzdWJSdWxlLCBzdWJWYWx1ZSwgc3ViTmFtZSkpKVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFBBU1M7XG4gICAgfSk7XG59XG4vKipcbiAqIFJ1bGUgcnVuLiBDdXN0b20gdmFsaWRhdG9ycyBhcmUgYXdhaXRlZCAoc3luYyBvciBhc3luYyk6IHJlc29sdmluZyBwYXNzZXMsXG4gKiByZWplY3RpbmcvdGhyb3dpbmcgZmFpbHMuIFJldHVybiB2YWx1ZXMgYXJlIGlnbm9yZWQuXG4gKlxuICogVGhlIHBlci1ydWxlIHRyeS9jYXRjaCBpcyB0aGUgdG90YWxpdHkgY2hva2UgcG9pbnQ6IE5PIGlucHV0IOKAlCBpbmNsdWRpbmdcbiAqIGV4b3RpYyB2YWx1ZXMgdGhhdCBicmVhayBhIGJ1aWx0aW4gY2hlY2sg4oCUIG1heSBlc2NhcGUgYXMgYSB0aHJvdzsgZXZlcnlcbiAqIGZhaWx1cmUgc3VyZmFjZXMgdGhyb3VnaCB0aGUgZXJyb3Ivd2FybmluZyBjaGFubmVscy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJ1blJ1bGVzQXN5bmMobmFtZSwgdmFsdWUsIHZhbHVlcywgcnVsZXMsIGluc3RhbmNlKSB7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgY29uc3Qgc3RhdGUgPSB7IHdhcm5pbmc6IG51bGwgfTtcbiAgICAgICAgZm9yIChjb25zdCBydWxlIG9mIHJlc29sdmVSdWxlcyhydWxlcywgdmFsdWVzLCBpbnN0YW5jZSkpIHtcbiAgICAgICAgICAgIGxldCByZXN1bHQ7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IHlpZWxkIGV2YWxSdWxlQXN5bmMocnVsZSwgdmFsdWUsIG5hbWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IHsgZXJyb3I6IHJlc29sdmVGYWlsdXJlTWVzc2FnZShlcnIsIHJ1bGUpLCB3YXJuaW5nOiBudWxsIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBlcnJvciA9IGZvbGRSdWxlUmVzdWx0KHJ1bGUsIHJlc3VsdCwgc3RhdGUpO1xuICAgICAgICAgICAgaWYgKGVycm9yICE9PSBudWxsKVxuICAgICAgICAgICAgICAgIHJldHVybiB7IGVycm9yLCB3YXJuaW5nOiBzdGF0ZS53YXJuaW5nIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgZXJyb3I6IG51bGwsIHdhcm5pbmc6IHN0YXRlLndhcm5pbmcgfTtcbiAgICB9KTtcbn0iXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
|
|
@@ -12,7 +12,7 @@ export interface UseFormItemOptions {
|
|
|
12
12
|
validateTrigger?: ValidateTriggerProp;
|
|
13
13
|
}
|
|
14
14
|
export interface UseFormItemReturn {
|
|
15
|
-
fieldValue:
|
|
15
|
+
fieldValue: any;
|
|
16
16
|
fieldError: ReactNode | undefined;
|
|
17
17
|
fieldWarning: ReactNode | undefined;
|
|
18
18
|
fieldValidating: boolean;
|