@1money/react-ui 1.16.0 → 1.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +393 -0
- package/es/components/CheckboxGroup/CheckboxGroup.d.ts +3 -3
- package/es/components/CheckboxGroup/CheckboxGroup.js +94 -91
- package/es/components/CheckboxGroup/interface.d.ts +21 -15
- package/es/components/CheckboxGroup/style/CheckboxGroup.scss +0 -7
- package/es/components/Form/Form.d.ts +29 -0
- package/es/components/Form/Form.js +188 -0
- package/es/components/Form/FormItem.d.ts +4 -0
- package/es/components/Form/FormItem.js +165 -0
- package/es/components/Form/FormItemContent.d.ts +18 -0
- package/es/components/Form/FormItemContent.js +146 -0
- package/es/components/Form/constants.d.ts +46 -0
- package/es/components/Form/constants.js +65 -0
- package/es/components/Form/helper.d.ts +120 -0
- package/es/components/Form/helper.js +284 -0
- package/es/components/Form/index.d.ts +20 -0
- package/es/components/Form/index.js +21 -0
- package/es/components/Form/interface.d.ts +238 -0
- package/es/components/Form/interface.js +2 -0
- package/es/components/Form/style/Form.css +1 -0
- package/es/components/Form/style/Form.scss +167 -0
- package/es/components/Form/style/css.js +2 -0
- package/es/components/Form/style/index.d.ts +1 -0
- package/es/components/Form/style/index.js +2 -0
- package/es/components/Form/useFormItemContext.d.ts +32 -0
- package/es/components/Form/useFormItemContext.js +55 -0
- package/es/components/Form/useFormItemWatch.d.ts +51 -0
- package/es/components/Form/useFormItemWatch.js +69 -0
- package/es/components/Form/useValidationTrigger.d.ts +40 -0
- package/es/components/Form/useValidationTrigger.js +74 -0
- package/es/components/Input/Input.js +72 -74
- package/es/components/Input/interface.d.ts +9 -9
- package/es/components/InputAmount/InputAmount.js +228 -276
- package/es/components/InputAmount/helper.d.ts +46 -0
- package/es/components/InputAmount/helper.js +115 -0
- package/es/components/ProForm/ProForm.d.ts +33 -0
- package/es/components/ProForm/ProForm.js +208 -0
- package/es/components/ProForm/ProFormDependency.d.ts +12 -0
- package/es/components/ProForm/ProFormDependency.js +61 -0
- package/es/components/ProForm/ProFormList.d.ts +19 -0
- package/es/components/ProForm/ProFormList.js +348 -0
- package/es/components/ProForm/Submitter.d.ts +21 -0
- package/es/components/ProForm/Submitter.js +76 -0
- package/es/components/ProForm/constants.d.ts +34 -0
- package/es/components/ProForm/constants.js +40 -0
- package/es/components/ProForm/fields/ProFormCheckbox.d.ts +6 -0
- package/es/components/ProForm/fields/ProFormCheckbox.js +11 -0
- package/es/components/ProForm/fields/ProFormCheckboxGroup.d.ts +6 -0
- package/es/components/ProForm/fields/ProFormCheckboxGroup.js +46 -0
- package/es/components/ProForm/fields/ProFormDigit.d.ts +6 -0
- package/es/components/ProForm/fields/ProFormDigit.js +15 -0
- package/es/components/ProForm/fields/ProFormMoney.d.ts +6 -0
- package/es/components/ProForm/fields/ProFormMoney.js +10 -0
- package/es/components/ProForm/fields/ProFormMultiSelect.d.ts +6 -0
- package/es/components/ProForm/fields/ProFormMultiSelect.js +27 -0
- package/es/components/ProForm/fields/ProFormPassword.d.ts +6 -0
- package/es/components/ProForm/fields/ProFormPassword.js +16 -0
- package/es/components/ProForm/fields/ProFormRadio.d.ts +6 -0
- package/es/components/ProForm/fields/ProFormRadio.js +13 -0
- package/es/components/ProForm/fields/ProFormSelect.d.ts +6 -0
- package/es/components/ProForm/fields/ProFormSelect.js +13 -0
- package/es/components/ProForm/fields/ProFormSwitch.d.ts +6 -0
- package/es/components/ProForm/fields/ProFormSwitch.js +11 -0
- package/es/components/ProForm/fields/ProFormText.d.ts +6 -0
- package/es/components/ProForm/fields/ProFormText.js +15 -0
- package/es/components/ProForm/fields/ProFormTextArea.d.ts +6 -0
- package/es/components/ProForm/fields/ProFormTextArea.js +16 -0
- package/es/components/ProForm/fields/createProFormField.d.ts +43 -0
- package/es/components/ProForm/fields/createProFormField.js +200 -0
- package/es/components/ProForm/fields/index.d.ts +12 -0
- package/es/components/ProForm/fields/index.js +13 -0
- package/es/components/ProForm/index.d.ts +7 -0
- package/es/components/ProForm/index.js +7 -0
- package/es/components/ProForm/interface.d.ts +306 -0
- package/es/components/ProForm/interface.js +2 -0
- package/es/components/ProForm/layouts/DrawerForm.d.ts +16 -0
- package/es/components/ProForm/layouts/DrawerForm.js +79 -0
- package/es/components/ProForm/layouts/ModalForm.d.ts +16 -0
- package/es/components/ProForm/layouts/ModalForm.js +89 -0
- package/es/components/ProForm/layouts/QueryFilter.d.ts +21 -0
- package/es/components/ProForm/layouts/QueryFilter.js +132 -0
- package/es/components/ProForm/layouts/StepsForm.d.ts +13 -0
- package/es/components/ProForm/layouts/StepsForm.js +295 -0
- package/es/components/ProForm/layouts/index.d.ts +4 -0
- package/es/components/ProForm/layouts/index.js +5 -0
- package/es/components/ProForm/layouts/useOverlayForm.d.ts +53 -0
- package/es/components/ProForm/layouts/useOverlayForm.js +143 -0
- package/es/components/ProForm/style/ProForm.module.css +1 -0
- package/es/components/ProForm/style/ProForm.module.scss +59 -0
- package/es/components/ProForm/style/css.js +3 -0
- package/es/components/ProForm/style/index.d.ts +1 -0
- package/es/components/ProForm/style/index.js +3 -0
- package/es/components/ProForm/utils.d.ts +72 -0
- package/es/components/ProForm/utils.js +206 -0
- package/es/components/RadioGroup/RadioGroup.js +46 -23
- package/es/components/RadioGroup/interface.d.ts +3 -1
- package/es/components/Select/Select.d.ts +1 -1
- package/es/components/Select/Select.js +113 -106
- package/es/components/Select/constants.d.ts +18 -0
- package/es/components/Select/constants.js +19 -0
- package/es/components/Sidebar/Sidebar.js +21 -23
- package/es/components/Sidebar/SidebarLogo.d.ts +7 -0
- package/es/components/Sidebar/SidebarLogo.js +33 -0
- package/es/components/Sidebar/SimplySidebar.d.ts +2 -2
- package/es/components/Sidebar/SimplySidebar.js +18 -22
- package/es/components/Sidebar/Stepper.js +14 -14
- package/es/components/Sidebar/constants.d.ts +16 -0
- package/es/components/Sidebar/constants.js +17 -0
- package/es/components/Sidebar/style/Stepper.css +1 -1
- package/es/components/Sidebar/style/Stepper.scss +11 -1
- package/es/components/Switch/Switch.js +28 -25
- package/es/components/Switch/interface.d.ts +9 -4
- package/es/components/useControlledState/index.d.ts +14 -0
- package/es/components/useControlledState/index.js +32 -0
- package/es/components/useEventCallback/index.d.ts +11 -0
- package/es/components/useEventCallback/index.js +17 -0
- package/es/components/useLayoutEffect/index.d.ts +11 -0
- package/es/components/useLayoutEffect/index.js +17 -0
- package/es/components/useLayoutState/index.d.ts +13 -0
- package/es/components/useLayoutState/index.js +71 -0
- package/es/components/useMemoizedFn/index.d.ts +12 -0
- package/es/components/useMemoizedFn/index.js +27 -0
- package/es/components/usePrevious/index.d.ts +11 -0
- package/es/components/usePrevious/index.js +19 -0
- package/es/components/useSafeState/index.d.ts +12 -0
- package/es/components/useSafeState/index.js +24 -0
- package/es/components/useSyncState/index.d.ts +14 -0
- package/es/components/useSyncState/index.js +37 -0
- package/es/components/useUpdateEffect/index.d.ts +9 -0
- package/es/components/useUpdateEffect/index.js +19 -0
- package/es/index.css +1 -1
- package/es/index.d.ts +21 -2
- package/es/index.js +19 -1
- package/jest.setup.d.ts +1 -0
- package/jest.setup.ts +1 -0
- package/lib/components/CheckboxGroup/CheckboxGroup.d.ts +3 -3
- package/lib/components/CheckboxGroup/CheckboxGroup.js +92 -89
- package/lib/components/CheckboxGroup/interface.d.ts +21 -15
- package/lib/components/CheckboxGroup/style/CheckboxGroup.scss +0 -7
- package/lib/components/Form/Form.d.ts +29 -0
- package/lib/components/Form/Form.js +199 -0
- package/lib/components/Form/FormItem.d.ts +4 -0
- package/lib/components/Form/FormItem.js +176 -0
- package/lib/components/Form/FormItemContent.d.ts +18 -0
- package/lib/components/Form/FormItemContent.js +156 -0
- package/lib/components/Form/constants.d.ts +46 -0
- package/lib/components/Form/constants.js +71 -0
- package/lib/components/Form/helper.d.ts +120 -0
- package/lib/components/Form/helper.js +290 -0
- package/lib/components/Form/index.d.ts +20 -0
- package/lib/components/Form/index.js +45 -0
- package/lib/components/Form/interface.d.ts +238 -0
- package/lib/components/Form/interface.js +6 -0
- package/lib/components/Form/style/Form.css +1 -0
- package/lib/components/Form/style/Form.scss +167 -0
- package/lib/components/Form/style/css.js +4 -0
- package/lib/components/Form/style/index.d.ts +1 -0
- package/lib/components/Form/style/index.js +4 -0
- package/lib/components/Form/useFormItemContext.d.ts +32 -0
- package/lib/components/Form/useFormItemContext.js +62 -0
- package/lib/components/Form/useFormItemWatch.d.ts +51 -0
- package/lib/components/Form/useFormItemWatch.js +76 -0
- package/lib/components/Form/useValidationTrigger.d.ts +40 -0
- package/lib/components/Form/useValidationTrigger.js +81 -0
- package/lib/components/Input/Input.js +71 -73
- package/lib/components/Input/interface.d.ts +9 -9
- package/lib/components/InputAmount/InputAmount.js +230 -278
- package/lib/components/InputAmount/helper.d.ts +46 -0
- package/lib/components/InputAmount/helper.js +122 -0
- package/lib/components/ProForm/ProForm.d.ts +33 -0
- package/lib/components/ProForm/ProForm.js +216 -0
- package/lib/components/ProForm/ProFormDependency.d.ts +12 -0
- package/lib/components/ProForm/ProFormDependency.js +67 -0
- package/lib/components/ProForm/ProFormList.d.ts +19 -0
- package/lib/components/ProForm/ProFormList.js +355 -0
- package/lib/components/ProForm/Submitter.d.ts +21 -0
- package/lib/components/ProForm/Submitter.js +83 -0
- package/lib/components/ProForm/constants.d.ts +34 -0
- package/lib/components/ProForm/constants.js +46 -0
- package/lib/components/ProForm/fields/ProFormCheckbox.d.ts +6 -0
- package/lib/components/ProForm/fields/ProFormCheckbox.js +18 -0
- package/lib/components/ProForm/fields/ProFormCheckboxGroup.d.ts +6 -0
- package/lib/components/ProForm/fields/ProFormCheckboxGroup.js +53 -0
- package/lib/components/ProForm/fields/ProFormDigit.d.ts +6 -0
- package/lib/components/ProForm/fields/ProFormDigit.js +22 -0
- package/lib/components/ProForm/fields/ProFormMoney.d.ts +6 -0
- package/lib/components/ProForm/fields/ProFormMoney.js +17 -0
- package/lib/components/ProForm/fields/ProFormMultiSelect.d.ts +6 -0
- package/lib/components/ProForm/fields/ProFormMultiSelect.js +34 -0
- package/lib/components/ProForm/fields/ProFormPassword.d.ts +6 -0
- package/lib/components/ProForm/fields/ProFormPassword.js +23 -0
- package/lib/components/ProForm/fields/ProFormRadio.d.ts +6 -0
- package/lib/components/ProForm/fields/ProFormRadio.js +20 -0
- package/lib/components/ProForm/fields/ProFormSelect.d.ts +6 -0
- package/lib/components/ProForm/fields/ProFormSelect.js +20 -0
- package/lib/components/ProForm/fields/ProFormSwitch.d.ts +6 -0
- package/lib/components/ProForm/fields/ProFormSwitch.js +18 -0
- package/lib/components/ProForm/fields/ProFormText.d.ts +6 -0
- package/lib/components/ProForm/fields/ProFormText.js +22 -0
- package/lib/components/ProForm/fields/ProFormTextArea.d.ts +6 -0
- package/lib/components/ProForm/fields/ProFormTextArea.js +23 -0
- package/lib/components/ProForm/fields/createProFormField.d.ts +43 -0
- package/lib/components/ProForm/fields/createProFormField.js +208 -0
- package/lib/components/ProForm/fields/index.d.ts +12 -0
- package/lib/components/ProForm/fields/index.js +90 -0
- package/lib/components/ProForm/index.d.ts +7 -0
- package/lib/components/ProForm/index.js +73 -0
- package/lib/components/ProForm/interface.d.ts +306 -0
- package/lib/components/ProForm/interface.js +6 -0
- package/lib/components/ProForm/layouts/DrawerForm.d.ts +16 -0
- package/lib/components/ProForm/layouts/DrawerForm.js +86 -0
- package/lib/components/ProForm/layouts/ModalForm.d.ts +16 -0
- package/lib/components/ProForm/layouts/ModalForm.js +96 -0
- package/lib/components/ProForm/layouts/QueryFilter.d.ts +21 -0
- package/lib/components/ProForm/layouts/QueryFilter.js +139 -0
- package/lib/components/ProForm/layouts/StepsForm.d.ts +13 -0
- package/lib/components/ProForm/layouts/StepsForm.js +302 -0
- package/lib/components/ProForm/layouts/index.d.ts +4 -0
- package/lib/components/ProForm/layouts/index.js +40 -0
- package/lib/components/ProForm/layouts/useOverlayForm.d.ts +53 -0
- package/lib/components/ProForm/layouts/useOverlayForm.js +150 -0
- package/lib/components/ProForm/style/ProForm.module.css +1 -0
- package/lib/components/ProForm/style/ProForm.module.scss +59 -0
- package/lib/components/ProForm/style/css.js +4 -0
- package/lib/components/ProForm/style/index.d.ts +1 -0
- package/lib/components/ProForm/style/index.js +4 -0
- package/lib/components/ProForm/utils.d.ts +72 -0
- package/lib/components/ProForm/utils.js +213 -0
- package/lib/components/RadioGroup/RadioGroup.js +45 -22
- package/lib/components/RadioGroup/interface.d.ts +3 -1
- package/lib/components/Select/Select.d.ts +1 -1
- package/lib/components/Select/Select.js +114 -107
- package/lib/components/Select/constants.d.ts +18 -0
- package/lib/components/Select/constants.js +25 -0
- package/lib/components/Sidebar/Sidebar.js +21 -23
- package/lib/components/Sidebar/SidebarLogo.d.ts +7 -0
- package/lib/components/Sidebar/SidebarLogo.js +39 -0
- package/lib/components/Sidebar/SimplySidebar.d.ts +2 -2
- package/lib/components/Sidebar/SimplySidebar.js +17 -21
- package/lib/components/Sidebar/Stepper.js +14 -14
- package/lib/components/Sidebar/constants.d.ts +16 -0
- package/lib/components/Sidebar/constants.js +23 -0
- package/lib/components/Sidebar/style/Stepper.css +1 -1
- package/lib/components/Sidebar/style/Stepper.scss +11 -1
- package/lib/components/Switch/Switch.js +27 -24
- package/lib/components/Switch/interface.d.ts +9 -4
- package/lib/components/useControlledState/index.d.ts +14 -0
- package/lib/components/useControlledState/index.js +39 -0
- package/lib/components/useEventCallback/index.d.ts +11 -0
- package/lib/components/useEventCallback/index.js +24 -0
- package/lib/components/useLayoutEffect/index.d.ts +11 -0
- package/lib/components/useLayoutEffect/index.js +23 -0
- package/lib/components/useLayoutState/index.d.ts +13 -0
- package/lib/components/useLayoutState/index.js +79 -0
- package/lib/components/useMemoizedFn/index.d.ts +12 -0
- package/lib/components/useMemoizedFn/index.js +33 -0
- package/lib/components/usePrevious/index.d.ts +11 -0
- package/lib/components/usePrevious/index.js +25 -0
- package/lib/components/useSafeState/index.d.ts +12 -0
- package/lib/components/useSafeState/index.js +31 -0
- package/lib/components/useSyncState/index.d.ts +14 -0
- package/lib/components/useSyncState/index.js +44 -0
- package/lib/components/useUpdateEffect/index.d.ts +9 -0
- package/lib/components/useUpdateEffect/index.js +25 -0
- package/lib/index.css +1 -1
- package/lib/index.d.ts +21 -2
- package/lib/index.js +213 -1
- package/package.json +16 -1
|
@@ -9,14 +9,16 @@ exports["default"] = exports.Select = void 0;
|
|
|
9
9
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
10
10
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
11
11
|
var _react = require("react");
|
|
12
|
-
var _lodash = _interopRequireDefault(require("lodash.
|
|
13
|
-
var _lodash2 = _interopRequireDefault(require("lodash.debounce"));
|
|
12
|
+
var _lodash = _interopRequireDefault(require("lodash.debounce"));
|
|
14
13
|
var _dropdown = require("primereact/dropdown");
|
|
15
14
|
var _multiselect = require("primereact/multiselect");
|
|
16
15
|
var _skeleton = require("primereact/skeleton");
|
|
17
16
|
var _classnames = _interopRequireWildcard(require("../../utils/classnames"));
|
|
17
|
+
var _useControlledState3 = _interopRequireDefault(require("../useControlledState"));
|
|
18
|
+
var _useEventCallback = _interopRequireDefault(require("../useEventCallback"));
|
|
18
19
|
var _Icons = require("../Icons");
|
|
19
20
|
var _Spinner = require("../Spinner");
|
|
21
|
+
var _constants = require("./constants");
|
|
20
22
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
21
23
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
|
|
22
24
|
var __rest = void 0 && (void 0).__rest || function (s, e) {
|
|
@@ -44,8 +46,8 @@ var SelectWrapper = /*#__PURE__*/(0, _react.memo)(function (props) {
|
|
|
44
46
|
return (0, _jsxRuntime.jsxs)("div", {
|
|
45
47
|
className: classes('wrapper', wrapperCls),
|
|
46
48
|
children: [label ? loading ? (0, _jsxRuntime.jsx)(_skeleton.Skeleton, {
|
|
47
|
-
width:
|
|
48
|
-
height:
|
|
49
|
+
width: _constants.SKELETON_LABEL_WIDTH,
|
|
50
|
+
height: _constants.SKELETON_LABEL_HEIGHT,
|
|
49
51
|
className: classes('label-loading')
|
|
50
52
|
}) : (0, _jsxRuntime.jsx)("span", {
|
|
51
53
|
className: classes('label', (0, _classnames.joinCls)(required && classes('label-required'), labelCls)),
|
|
@@ -63,20 +65,20 @@ var CustomDropdown = function CustomDropdown(props) {
|
|
|
63
65
|
message = props.message,
|
|
64
66
|
required = props.required,
|
|
65
67
|
_props$prefixCls = props.prefixCls,
|
|
66
|
-
prefixCls = _props$prefixCls === void 0 ?
|
|
68
|
+
prefixCls = _props$prefixCls === void 0 ? _constants.DEFAULT_PREFIX_CLS : _props$prefixCls,
|
|
67
69
|
wrapperCls = props.wrapperCls,
|
|
68
70
|
labelCls = props.labelCls,
|
|
69
71
|
messageCls = props.messageCls,
|
|
70
72
|
_props$size = props.size,
|
|
71
|
-
size = _props$size === void 0 ?
|
|
73
|
+
size = _props$size === void 0 ? _constants.DEFAULT_SIZE : _props$size,
|
|
72
74
|
success = props.success,
|
|
73
75
|
invalid = props.invalid,
|
|
74
76
|
disabled = props.disabled,
|
|
75
77
|
editable = props.editable,
|
|
76
78
|
_props$placeholder = props.placeholder,
|
|
77
|
-
placeholder = _props$placeholder === void 0 ?
|
|
79
|
+
placeholder = _props$placeholder === void 0 ? _constants.DEFAULT_PLACEHOLDER : _props$placeholder,
|
|
78
80
|
_props$className = props.className,
|
|
79
|
-
className = _props$className === void 0 ?
|
|
81
|
+
className = _props$className === void 0 ? _constants.DEFAULT_CLASSNAME : _props$className,
|
|
80
82
|
selectedTemplate = props.selectedTemplate,
|
|
81
83
|
tailTemplate = props.tailTemplate,
|
|
82
84
|
_onClick = props.onClick,
|
|
@@ -110,38 +112,38 @@ var CustomDropdown = function CustomDropdown(props) {
|
|
|
110
112
|
return selectRef.current;
|
|
111
113
|
}
|
|
112
114
|
};
|
|
113
|
-
}, [
|
|
115
|
+
}, []);
|
|
114
116
|
(0, _react.useEffect)(function () {
|
|
115
117
|
dataIdRef.current = dataId;
|
|
116
118
|
}, [dataId]);
|
|
119
|
+
var handleFocus = (0, _useEventCallback["default"])(function () {
|
|
120
|
+
return onFocus === null || onFocus === void 0 ? void 0 : onFocus();
|
|
121
|
+
});
|
|
122
|
+
var handleBlur = (0, _useEventCallback["default"])(function () {
|
|
123
|
+
return onBlur === null || onBlur === void 0 ? void 0 : onBlur();
|
|
124
|
+
});
|
|
117
125
|
(0, _react.useEffect)(function () {
|
|
118
126
|
if (isFocus !== lastFocusRef.current) {
|
|
119
127
|
lastFocusRef.current = isFocus;
|
|
120
128
|
if (isFocus) {
|
|
121
|
-
|
|
129
|
+
handleFocus();
|
|
122
130
|
} else {
|
|
123
|
-
|
|
131
|
+
handleBlur();
|
|
124
132
|
}
|
|
125
133
|
}
|
|
126
|
-
}, [isFocus
|
|
134
|
+
}, [isFocus]);
|
|
127
135
|
(0, _react.useEffect)(function () {
|
|
128
|
-
var _findCustomDropdownDataId = function findCustomDropdownDataId(target) {
|
|
129
|
-
var _a;
|
|
130
|
-
if (!dataIdRef.current) return false;
|
|
131
|
-
if (((_a = target === null || target === void 0 ? void 0 : target.dataset) === null || _a === void 0 ? void 0 : _a.selectCustomDropdownId) === dataIdRef.current) return true;
|
|
132
|
-
if (target === document.body || target === document) return false;
|
|
133
|
-
var parent = target.parentNode || target.parentElement;
|
|
134
|
-
if (!parent) return false;
|
|
135
|
-
return _findCustomDropdownDataId(parent);
|
|
136
|
-
};
|
|
137
136
|
var removeFocus = function removeFocus(e) {
|
|
138
137
|
if (isClickInside.current) {
|
|
139
138
|
isClickInside.current = false;
|
|
140
139
|
return;
|
|
141
140
|
}
|
|
142
141
|
setIsFocus(function (prev) {
|
|
142
|
+
var _a;
|
|
143
143
|
if (!prev) return false;
|
|
144
|
-
|
|
144
|
+
if (!dataIdRef.current) return false;
|
|
145
|
+
var target = e.target;
|
|
146
|
+
return !!((_a = target === null || target === void 0 ? void 0 : target.closest) === null || _a === void 0 ? void 0 : _a.call(target, "[".concat(_constants.DATA_ATTR_SELECTOR, "=\"").concat(dataIdRef.current, "\"]")));
|
|
145
147
|
});
|
|
146
148
|
};
|
|
147
149
|
document.addEventListener('click', removeFocus);
|
|
@@ -190,15 +192,14 @@ var CustomDropdown = function CustomDropdown(props) {
|
|
|
190
192
|
children: placeholder
|
|
191
193
|
}), editable ? null : typeof tailTemplate === 'function' ? tailTemplate(isFocus) : (0, _jsxRuntime.jsx)(_Icons.Icons, {
|
|
192
194
|
name: 'chevronDown',
|
|
193
|
-
color:
|
|
194
|
-
size:
|
|
195
|
+
color: _constants.COLOR_PRIMARY_BLACK,
|
|
196
|
+
size: _constants.ICON_SIZE_MD,
|
|
195
197
|
wrapperCls: classes('custom-tail', isFocus ? classes('custom-tail-focus') : '')
|
|
196
198
|
})]
|
|
197
199
|
})
|
|
198
200
|
});
|
|
199
201
|
};
|
|
200
202
|
var Select = exports.Select = function Select(props) {
|
|
201
|
-
var _a;
|
|
202
203
|
var id = props.id,
|
|
203
204
|
ref = props.ref,
|
|
204
205
|
name = props.name,
|
|
@@ -206,13 +207,13 @@ var Select = exports.Select = function Select(props) {
|
|
|
206
207
|
message = props.message,
|
|
207
208
|
required = props.required,
|
|
208
209
|
_props$prefixCls2 = props.prefixCls,
|
|
209
|
-
prefixCls = _props$prefixCls2 === void 0 ?
|
|
210
|
+
prefixCls = _props$prefixCls2 === void 0 ? _constants.DEFAULT_PREFIX_CLS : _props$prefixCls2,
|
|
210
211
|
wrapperCls = props.wrapperCls,
|
|
211
212
|
labelCls = props.labelCls,
|
|
212
213
|
messageCls = props.messageCls,
|
|
213
214
|
value = props.value,
|
|
214
215
|
_props$size2 = props.size,
|
|
215
|
-
size = _props$size2 === void 0 ?
|
|
216
|
+
size = _props$size2 === void 0 ? _constants.DEFAULT_SIZE : _props$size2,
|
|
216
217
|
success = props.success,
|
|
217
218
|
_props$refreshAfterSh = props.refreshAfterShow,
|
|
218
219
|
refreshAfterShow = _props$refreshAfterSh === void 0 ? true : _props$refreshAfterSh,
|
|
@@ -220,43 +221,49 @@ var Select = exports.Select = function Select(props) {
|
|
|
220
221
|
disabled = props.disabled,
|
|
221
222
|
placeholder = props.placeholder,
|
|
222
223
|
_props$className2 = props.className,
|
|
223
|
-
className = _props$className2 === void 0 ?
|
|
224
|
+
className = _props$className2 === void 0 ? _constants.DEFAULT_CLASSNAME : _props$className2,
|
|
224
225
|
multiple = props.multiple,
|
|
225
226
|
options = props.options,
|
|
226
227
|
panelClassName = props.panelClassName,
|
|
227
228
|
defaultValue = props.defaultValue,
|
|
228
229
|
_itemTemplate = props.itemTemplate,
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
230
|
+
onChange = props.onChange,
|
|
231
|
+
onHide = props.onHide,
|
|
232
|
+
onShow = props.onShow,
|
|
232
233
|
unselectable = props.unselectable,
|
|
233
234
|
loading = props.loading,
|
|
234
235
|
rest = __rest(props, ["id", "ref", "name", "label", "message", "required", "prefixCls", "wrapperCls", "labelCls", "messageCls", "value", "size", "success", "refreshAfterShow", "invalid", "disabled", "placeholder", "className", "multiple", "options", "panelClassName", "defaultValue", "itemTemplate", "onChange", "onHide", "onShow", "unselectable", "loading"]);
|
|
235
236
|
var classes = (0, _classnames["default"])(prefixCls);
|
|
236
|
-
var
|
|
237
|
+
var _useControlledState = (0, _useControlledState3["default"])(defaultValue !== null && defaultValue !== void 0 ? defaultValue : null, value),
|
|
238
|
+
_useControlledState2 = (0, _slicedToArray2["default"])(_useControlledState, 2),
|
|
239
|
+
selected = _useControlledState2[0],
|
|
240
|
+
setSelected = _useControlledState2[1];
|
|
241
|
+
var _useState5 = (0, _react.useState)(false),
|
|
237
242
|
_useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
|
|
238
|
-
|
|
239
|
-
|
|
243
|
+
isOpen = _useState6[0],
|
|
244
|
+
setIsOpen = _useState6[1];
|
|
240
245
|
var _useState7 = (0, _react.useState)(false),
|
|
241
246
|
_useState8 = (0, _slicedToArray2["default"])(_useState7, 2),
|
|
242
|
-
|
|
243
|
-
|
|
247
|
+
isHover = _useState8[0],
|
|
248
|
+
setIsHover = _useState8[1];
|
|
244
249
|
var _useState9 = (0, _react.useState)(false),
|
|
245
250
|
_useState10 = (0, _slicedToArray2["default"])(_useState9, 2),
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
var _useState11 = (0, _react.useState)(false),
|
|
249
|
-
_useState12 = (0, _slicedToArray2["default"])(_useState11, 2),
|
|
250
|
-
isScrolling = _useState12[0],
|
|
251
|
-
setIsScrolling = _useState12[1];
|
|
251
|
+
isScrolling = _useState10[0],
|
|
252
|
+
setIsScrolling = _useState10[1];
|
|
252
253
|
var selectRef = (0, _react.useRef)(null);
|
|
253
|
-
var _ref = (0, _react.useRef)(null);
|
|
254
254
|
var selectCls = (0, _react.useMemo)(function () {
|
|
255
255
|
return classes(void 0, (0, _classnames.joinCls)(classes(size), isOpen && classes('show'), success && classes('success'), invalid && classes('invalid'), disabled && classes('disabled'), loading && classes('loading'), (Array.isArray(selected) ? !!selected.length : !!selected) && classes('filled'), className));
|
|
256
256
|
}, [size, isOpen, success, selected, invalid, disabled, loading, className]);
|
|
257
|
-
var debouncedHandleScroll = (0,
|
|
258
|
-
return
|
|
259
|
-
|
|
257
|
+
var debouncedHandleScroll = (0, _react.useMemo)(function () {
|
|
258
|
+
return (0, _lodash["default"])(function () {
|
|
259
|
+
return setIsScrolling(false);
|
|
260
|
+
}, _constants.DEBOUNCE_SCROLL_DELAY);
|
|
261
|
+
}, []);
|
|
262
|
+
(0, _react.useEffect)(function () {
|
|
263
|
+
return function () {
|
|
264
|
+
return debouncedHandleScroll.cancel();
|
|
265
|
+
};
|
|
266
|
+
}, [debouncedHandleScroll]);
|
|
260
267
|
var refreshDOM = (0, _react.useCallback)(function () {
|
|
261
268
|
var _a, _b;
|
|
262
269
|
var ele = (_b = (_a = selectRef.current) === null || _a === void 0 ? void 0 : _a.getOverlay) === null || _b === void 0 ? void 0 : _b.call(_a);
|
|
@@ -269,14 +276,31 @@ var Select = exports.Select = function Select(props) {
|
|
|
269
276
|
}, 0);
|
|
270
277
|
}
|
|
271
278
|
}, []);
|
|
279
|
+
var filterIconProps = (0, _react.useMemo)(function () {
|
|
280
|
+
var _a = rest,
|
|
281
|
+
filterIcon = _a.filterIcon,
|
|
282
|
+
filter = _a.filter,
|
|
283
|
+
others = __rest(_a, ["filterIcon", "filter"]);
|
|
284
|
+
var extraProps = filter ? {
|
|
285
|
+
filterIcon: filterIcon !== null && filterIcon !== void 0 ? filterIcon : (0, _jsxRuntime.jsx)(_Icons.Icons, {
|
|
286
|
+
name: 'search',
|
|
287
|
+
size: _constants.ICON_SIZE_MD,
|
|
288
|
+
color: _constants.COLOR_PRIMARY_BLACK,
|
|
289
|
+
wrapperCls: classes('filter-icon')
|
|
290
|
+
})
|
|
291
|
+
} : null;
|
|
292
|
+
return Object.assign(Object.assign(Object.assign({}, others), {
|
|
293
|
+
filter: filter
|
|
294
|
+
}), extraProps || {});
|
|
295
|
+
}, [rest.filter, rest.filterIcon]);
|
|
272
296
|
var SelectComponent = (0, _react.useCallback)(function (props) {
|
|
273
297
|
return multiple ? (0, _jsxRuntime.jsx)(_multiselect.MultiSelect, Object.assign({
|
|
274
298
|
unselectable: unselectable,
|
|
275
299
|
showSelectAll: false,
|
|
276
300
|
checkboxIcon: (0, _jsxRuntime.jsx)(_Icons.Icons, {
|
|
277
301
|
name: 'check',
|
|
278
|
-
size:
|
|
279
|
-
color:
|
|
302
|
+
size: _constants.ICON_SIZE_XS,
|
|
303
|
+
color: _constants.COLOR_WHITE
|
|
280
304
|
}),
|
|
281
305
|
removeIcon: function removeIcon(props) {
|
|
282
306
|
var _props$iconProps = props.iconProps,
|
|
@@ -285,8 +309,8 @@ var Select = exports.Select = function Select(props) {
|
|
|
285
309
|
tabIndex = _props$iconProps.tabIndex;
|
|
286
310
|
return (0, _jsxRuntime.jsx)(_Icons.Icons, {
|
|
287
311
|
name: 'close',
|
|
288
|
-
size:
|
|
289
|
-
color:
|
|
312
|
+
size: _constants.ICON_SIZE_SM,
|
|
313
|
+
color: _constants.COLOR_PRIMARY_BLACK,
|
|
290
314
|
tabIndex: tabIndex,
|
|
291
315
|
wrapperCls: classes('token-remove-icon'),
|
|
292
316
|
onClick: onClick,
|
|
@@ -314,8 +338,8 @@ var Select = exports.Select = function Select(props) {
|
|
|
314
338
|
},
|
|
315
339
|
children: [(0, _jsxRuntime.jsx)(_Icons.Icons, {
|
|
316
340
|
name: 'close',
|
|
317
|
-
size:
|
|
318
|
-
color:
|
|
341
|
+
size: _constants.ICON_SIZE_SM,
|
|
342
|
+
color: _constants.COLOR_NEGATIVE,
|
|
319
343
|
wrapperCls: classes('panel-header-info-clear-icon')
|
|
320
344
|
}), "Clear all"]
|
|
321
345
|
})]
|
|
@@ -326,19 +350,14 @@ var Select = exports.Select = function Select(props) {
|
|
|
326
350
|
collapseIcon: multiple ? void 0 : function () {
|
|
327
351
|
return (0, _jsxRuntime.jsx)(_Icons.Icons, {
|
|
328
352
|
name: 'chevronUp',
|
|
329
|
-
color:
|
|
330
|
-
size:
|
|
353
|
+
color: _constants.COLOR_PRIMARY_BLACK,
|
|
354
|
+
size: _constants.ICON_SIZE_MD
|
|
331
355
|
});
|
|
332
356
|
}
|
|
333
357
|
}, props));
|
|
334
358
|
}, [multiple]);
|
|
335
|
-
(0, _react.useEffect)(function () {
|
|
336
|
-
if (value !== undefined && !(0, _lodash["default"])(selected, value)) {
|
|
337
|
-
setSelected(value);
|
|
338
|
-
}
|
|
339
|
-
}, [value]);
|
|
340
359
|
// @ts-expect-error
|
|
341
|
-
(0, _react.useImperativeHandle)(ref
|
|
360
|
+
(0, _react.useImperativeHandle)(ref, function () {
|
|
342
361
|
var _a, _b;
|
|
343
362
|
return multiple ? {
|
|
344
363
|
props: (_a = selectRef.current) === null || _a === void 0 ? void 0 : _a.props,
|
|
@@ -406,6 +425,28 @@ var Select = exports.Select = function Select(props) {
|
|
|
406
425
|
}
|
|
407
426
|
};
|
|
408
427
|
}, [multiple]);
|
|
428
|
+
var handleChange = (0, _useEventCallback["default"])(function (e) {
|
|
429
|
+
var emitChange = onChange;
|
|
430
|
+
setSelected(e.value);
|
|
431
|
+
emitChange === null || emitChange === void 0 ? void 0 : emitChange(e);
|
|
432
|
+
});
|
|
433
|
+
var handleHide = (0, _useEventCallback["default"])(function () {
|
|
434
|
+
setIsOpen(false);
|
|
435
|
+
onHide === null || onHide === void 0 ? void 0 : onHide();
|
|
436
|
+
});
|
|
437
|
+
var handleShow = (0, _useEventCallback["default"])(function () {
|
|
438
|
+
setIsOpen(true);
|
|
439
|
+
onShow === null || onShow === void 0 ? void 0 : onShow();
|
|
440
|
+
if (!refreshAfterShow) return;
|
|
441
|
+
setTimeout(function () {
|
|
442
|
+
return refreshDOM();
|
|
443
|
+
}, 0);
|
|
444
|
+
});
|
|
445
|
+
var handleScroll = (0, _react.useCallback)(function () {
|
|
446
|
+
debouncedHandleScroll.cancel();
|
|
447
|
+
setIsScrolling(true);
|
|
448
|
+
debouncedHandleScroll();
|
|
449
|
+
}, [debouncedHandleScroll]);
|
|
409
450
|
return (0, _jsxRuntime.jsx)(SelectWrapper, {
|
|
410
451
|
label: label,
|
|
411
452
|
message: message,
|
|
@@ -418,28 +459,12 @@ var Select = exports.Select = function Select(props) {
|
|
|
418
459
|
invalid: invalid,
|
|
419
460
|
disabled: disabled,
|
|
420
461
|
loading: loading,
|
|
421
|
-
children: (0, _jsxRuntime.jsx)(SelectComponent, Object.assign({},
|
|
422
|
-
var _a = rest,
|
|
423
|
-
filterIcon = _a.filterIcon,
|
|
424
|
-
filter = _a.filter,
|
|
425
|
-
others = __rest(_a, ["filterIcon", "filter"]);
|
|
426
|
-
var extraProps = filter ? {
|
|
427
|
-
filterIcon: filterIcon !== null && filterIcon !== void 0 ? filterIcon : (0, _jsxRuntime.jsx)(_Icons.Icons, {
|
|
428
|
-
name: 'search',
|
|
429
|
-
size: 20,
|
|
430
|
-
color: '#131313',
|
|
431
|
-
wrapperCls: classes('filter-icon')
|
|
432
|
-
})
|
|
433
|
-
} : null;
|
|
434
|
-
return Object.assign(Object.assign(Object.assign({}, others), {
|
|
435
|
-
filter: filter
|
|
436
|
-
}), extraProps || {});
|
|
437
|
-
}(), {
|
|
462
|
+
children: (0, _jsxRuntime.jsx)(SelectComponent, Object.assign({}, filterIconProps, {
|
|
438
463
|
id: id,
|
|
439
464
|
ref: selectRef,
|
|
440
465
|
name: name,
|
|
441
466
|
loading: loading,
|
|
442
|
-
filterPlaceholder:
|
|
467
|
+
filterPlaceholder: _constants.FILTER_PLACEHOLDER,
|
|
443
468
|
required: required,
|
|
444
469
|
disabled: disabled,
|
|
445
470
|
invalid: invalid,
|
|
@@ -452,7 +477,7 @@ var Select = exports.Select = function Select(props) {
|
|
|
452
477
|
className: classes('panel-item'),
|
|
453
478
|
onClick: function onClick() {
|
|
454
479
|
var _a;
|
|
455
|
-
if (!multiple && unselectable ===
|
|
480
|
+
if (!multiple && unselectable === _constants.UNSELECTABLE_ON && option.value === selected) {
|
|
456
481
|
(_a = selectRef.current) === null || _a === void 0 ? void 0 : _a.clear();
|
|
457
482
|
}
|
|
458
483
|
},
|
|
@@ -461,47 +486,29 @@ var Select = exports.Select = function Select(props) {
|
|
|
461
486
|
children: _itemTemplate ? _itemTemplate(option) : option.label
|
|
462
487
|
}), (0, _jsxRuntime.jsx)(_Icons.Icons, {
|
|
463
488
|
name: 'check',
|
|
464
|
-
size:
|
|
465
|
-
color:
|
|
489
|
+
size: _constants.ICON_SIZE_SM,
|
|
490
|
+
color: _constants.COLOR_PRIMARY_BLUE
|
|
466
491
|
})]
|
|
467
492
|
});
|
|
468
493
|
},
|
|
469
494
|
loadingIcon: (0, _jsxRuntime.jsx)(_Spinner.Spinner, {
|
|
470
495
|
className: classes('loading-icon'),
|
|
471
|
-
strokeWidth:
|
|
496
|
+
strokeWidth: _constants.SPINNER_STROKE_WIDTH
|
|
472
497
|
}),
|
|
473
498
|
panelClassName: classes('panel', (0, _classnames.joinCls)(panelClassName, isHover && classes('panel-hover'), isScrolling && classes('panel-scrolling'), rest.appendTo === 'self' && classes('panel-append-self'))),
|
|
474
|
-
onChange:
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
_onChange === null || _onChange === void 0 ? void 0 : _onChange(e);
|
|
478
|
-
},
|
|
479
|
-
onHide: function onHide() {
|
|
480
|
-
setIsOpen(false);
|
|
481
|
-
_onHide === null || _onHide === void 0 ? void 0 : _onHide();
|
|
482
|
-
},
|
|
483
|
-
onShow: function onShow() {
|
|
484
|
-
setIsOpen(true);
|
|
485
|
-
_onShow === null || _onShow === void 0 ? void 0 : _onShow();
|
|
486
|
-
if (!refreshAfterShow) return;
|
|
487
|
-
setTimeout(function () {
|
|
488
|
-
return refreshDOM();
|
|
489
|
-
}, 0);
|
|
490
|
-
},
|
|
499
|
+
onChange: handleChange,
|
|
500
|
+
onHide: handleHide,
|
|
501
|
+
onShow: handleShow,
|
|
491
502
|
dropdownIcon: function dropdownIcon() {
|
|
492
503
|
return (0, _jsxRuntime.jsx)(_Icons.Icons, {
|
|
493
504
|
name: 'chevronDown',
|
|
494
|
-
color:
|
|
495
|
-
size:
|
|
505
|
+
color: _constants.COLOR_PRIMARY_BLACK,
|
|
506
|
+
size: _constants.ICON_SIZE_MD
|
|
496
507
|
});
|
|
497
508
|
},
|
|
498
509
|
pt: {
|
|
499
510
|
wrapper: {
|
|
500
|
-
onScroll:
|
|
501
|
-
debouncedHandleScroll.cancel();
|
|
502
|
-
setIsScrolling(true);
|
|
503
|
-
debouncedHandleScroll();
|
|
504
|
-
}
|
|
511
|
+
onScroll: handleScroll
|
|
505
512
|
},
|
|
506
513
|
panel: {
|
|
507
514
|
onMouseEnter: function onMouseEnter() {
|
|
@@ -523,4 +530,4 @@ var Select = exports.Select = function Select(props) {
|
|
|
523
530
|
};
|
|
524
531
|
Select.CustomDropdown = CustomDropdown;
|
|
525
532
|
var _default = exports["default"] = /*#__PURE__*/(0, _react.memo)(Select);
|
|
526
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvU2VsZWN0L1NlbGVjdC5qcyIsImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvU2VsZWN0L1NlbGVjdC50c3giXSwibmFtZXMiOlsiX2pzeFJ1bnRpbWUiLCJyZXF1aXJlIiwiX3JlYWN0IiwiX2xvZGFzaCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfbG9kYXNoMiIsIl9kcm9wZG93biIsIl9tdWx0aXNlbGVjdCIsIl9za2VsZXRvbiIsIl9jbGFzc25hbWVzIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfSWNvbnMiLCJfU3Bpbm5lciIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIl9fcmVzdCIsInMiLCJwIiwicHJvdG90eXBlIiwiaW5kZXhPZiIsImdldE93blByb3BlcnR5U3ltYm9scyIsImxlbmd0aCIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwiU2VsZWN0V3JhcHBlciIsIm1lbW8iLCJwcm9wcyIsImxhYmVsIiwibWVzc2FnZSIsInJlcXVpcmVkIiwicHJlZml4Q2xzIiwid3JhcHBlckNscyIsImxhYmVsQ2xzIiwibWVzc2FnZUNscyIsInN1Y2Nlc3MiLCJpbnZhbGlkIiwiZGlzYWJsZWQiLCJsb2FkaW5nIiwiY2hpbGRyZW4iLCJjbGFzc2VzIiwiY2xhc3NuYW1lcyIsIl9qc3hzIiwiY2xhc3NOYW1lIiwiX2pzeCIsIlNrZWxldG9uIiwid2lkdGgiLCJoZWlnaHQiLCJqb2luQ2xzIiwiQ3VzdG9tRHJvcGRvd24iLCJyZWYiLCJkYXRhSWQiLCJfcHJvcHMkcHJlZml4Q2xzIiwiX3Byb3BzJHNpemUiLCJzaXplIiwiZWRpdGFibGUiLCJfcHJvcHMkcGxhY2Vob2xkZXIiLCJwbGFjZWhvbGRlciIsIl9wcm9wcyRjbGFzc05hbWUiLCJzZWxlY3RlZFRlbXBsYXRlIiwidGFpbFRlbXBsYXRlIiwib25DbGljayIsIm9uRm9jdXMiLCJvbkJsdXIiLCJpc0NsaWNrSW5zaWRlIiwidXNlUmVmIiwiZGF0YUlkUmVmIiwibGFzdEZvY3VzUmVmIiwic2VsZWN0UmVmIiwiX3VzZVN0YXRlIiwidXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkyIiwidmFsdWUiLCJzZXRWYWx1ZSIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwiaXNGb2N1cyIsInNldElzRm9jdXMiLCJzZWxlY3RDbHMiLCJ1c2VNZW1vIiwidXNlSW1wZXJhdGl2ZUhhbmRsZSIsImZvY3VzIiwiYmx1ciIsImdldERPTU5vZGUiLCJjdXJyZW50IiwidXNlRWZmZWN0IiwiZmluZEN1c3RvbURyb3Bkb3duRGF0YUlkIiwidGFyZ2V0IiwiX2EiLCJkYXRhc2V0Iiwic2VsZWN0Q3VzdG9tRHJvcGRvd25JZCIsImRvY3VtZW50IiwiYm9keSIsInBhcmVudCIsInBhcmVudE5vZGUiLCJwYXJlbnRFbGVtZW50IiwicmVtb3ZlRm9jdXMiLCJwcmV2IiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJjb250ZW50RWRpdGFibGUiLCJhdXRvRm9jdXMiLCJvbklucHV0IiwidmFsIiwiY3VycmVudFRhcmdldCIsImlubmVyVGV4dCIsIkljb25zIiwibmFtZSIsImNvbG9yIiwiU2VsZWN0IiwiZXhwb3J0cyIsImlkIiwiX3Byb3BzJHByZWZpeENsczIiLCJfcHJvcHMkc2l6ZTIiLCJfcHJvcHMkcmVmcmVzaEFmdGVyU2giLCJyZWZyZXNoQWZ0ZXJTaG93IiwiX3Byb3BzJGNsYXNzTmFtZTIiLCJtdWx0aXBsZSIsIm9wdGlvbnMiLCJwYW5lbENsYXNzTmFtZSIsImRlZmF1bHRWYWx1ZSIsIml0ZW1UZW1wbGF0ZSIsIm9uQ2hhbmdlIiwib25IaWRlIiwib25TaG93IiwidW5zZWxlY3RhYmxlIiwicmVzdCIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2Iiwic2VsZWN0ZWQiLCJzZXRTZWxlY3RlZCIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4IiwiaXNPcGVuIiwic2V0SXNPcGVuIiwiX3VzZVN0YXRlOSIsIl91c2VTdGF0ZTEwIiwiaXNIb3ZlciIsInNldElzSG92ZXIiLCJfdXNlU3RhdGUxMSIsIl91c2VTdGF0ZTEyIiwiaXNTY3JvbGxpbmciLCJzZXRJc1Njcm9sbGluZyIsIl9yZWYiLCJBcnJheSIsImlzQXJyYXkiLCJkZWJvdW5jZWRIYW5kbGVTY3JvbGwiLCJkZWJvdW5jZSIsInJlZnJlc2hET00iLCJ1c2VDYWxsYmFjayIsIl9iIiwiZWxlIiwiZ2V0T3ZlcmxheSIsIm9yaWdpblpJbmRleCIsInN0eWxlIiwiekluZGV4IiwidW5kZWZpbmVkIiwiY29uY2F0IiwicGFyc2VJbnQiLCJzZXRUaW1lb3V0IiwiU2VsZWN0Q29tcG9uZW50IiwiTXVsdGlTZWxlY3QiLCJhc3NpZ24iLCJzaG93U2VsZWN0QWxsIiwiY2hlY2tib3hJY29uIiwicmVtb3ZlSWNvbiIsIl9wcm9wcyRpY29uUHJvcHMiLCJpY29uUHJvcHMiLCJvbktleURvd24iLCJ0YWJJbmRleCIsInBhbmVsSGVhZGVyVGVtcGxhdGUiLCJfYyIsIl9kIiwiX2UiLCJmaWx0ZXJFbGVtZW50Iiwic2VsZWN0ZWROdW0iLCJtZXRhRGF0YSIsInVwZGF0ZU1vZGVsIiwiRHJvcGRvd24iLCJjb2xsYXBzZUljb24iLCJpc0VxdWFsIiwiaGlkZSIsInNob3ciLCJnZXRFbGVtZW50IiwiZ2V0SW5wdXQiLCJjbGVhciIsImdldEZvY3VzSW5wdXQiLCJnZXRWaXJ0dWFsU2Nyb2xsZXIiLCJmaWx0ZXJJY29uIiwiZmlsdGVyIiwib3RoZXJzIiwiZXh0cmFQcm9wcyIsImZpbHRlclBsYWNlaG9sZGVyIiwib3B0aW9uIiwibG9hZGluZ0ljb24iLCJTcGlubmVyIiwic3Ryb2tlV2lkdGgiLCJhcHBlbmRUbyIsImRyb3Bkb3duSWNvbiIsInB0Iiwid3JhcHBlciIsIm9uU2Nyb2xsIiwiY2FuY2VsIiwicGFuZWwiLCJvbk1vdXNlRW50ZXIiLCJvbk1vdXNlTGVhdmUiLCJvblRvdWNoU3RhcnQiLCJvblRvdWNoRW5kIiwiX2RlZmF1bHQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQVdBLElBQUFBLFdBQUEsR0FBQUMsT0FBQTtBQ1hBLElBQUFDLE1BQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQUgsT0FBQTtBQUNBLElBQUFJLFFBQUEsR0FBQUQsc0JBQUEsQ0FBQUgsT0FBQTtBQUNBLElBQUFLLFNBQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLFlBQUEsR0FBQU4sT0FBQTtBQUNBLElBQUFPLFNBQUEsR0FBQVAsT0FBQTtBQUNBLElBQUFRLFdBQUEsR0FBQUMsdUJBQUEsQ0FBQVQsT0FBQTtBQUNBLElBQUFVLE1BQUEsR0FBQVYsT0FBQTtBQUNBLElBQUFXLFFBQUEsR0FBQVgsT0FBQTtBQUFxQyxTQUFBWSx5QkFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxtQkFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBRix3QkFBQSxZQUFBQSx5QkFBQUMsQ0FBQSxXQUFBQSxDQUFBLEdBQUFHLENBQUEsR0FBQUQsQ0FBQSxLQUFBRixDQUFBO0FBQUEsU0FBQUosd0JBQUFJLENBQUEsRUFBQUUsQ0FBQSxTQUFBQSxDQUFBLElBQUFGLENBQUEsSUFBQUEsQ0FBQSxDQUFBSSxVQUFBLFNBQUFKLENBQUEsZUFBQUEsQ0FBQSxnQkFBQUssT0FBQSxDQUFBTCxDQUFBLDBCQUFBQSxDQUFBLHNCQUFBQSxDQUFBLFFBQUFHLENBQUEsR0FBQUosd0JBQUEsQ0FBQUcsQ0FBQSxPQUFBQyxDQUFBLElBQUFBLENBQUEsQ0FBQUcsR0FBQSxDQUFBTixDQUFBLFVBQUFHLENBQUEsQ0FBQUksR0FBQSxDQUFBUCxDQUFBLE9BQUFRLENBQUEsS0FBQUMsU0FBQSxVQUFB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QUU7UUFBRSxDQUFBLENBQUk7TUFBQTtNQUMxRWtKLEVBQUUsRUFBRTtRQUNGQyxPQUFPLEVBQUU7VUFDUEMsUUFBUSxFQUFFLFNBQVZBLFFBQVFBLENBQUEsRUFBTztZQUNidkQscUJBQXFCLENBQUN3RCxNQUFNLENBQUEsQ0FBRTtZQUM5QjVELGNBQWMsQ0FBQyxJQUFJLENBQUM7WUFDcEJJLHFCQUFxQixDQUFBLENBQUU7VUFDekI7UUQvTUksQ0NnTkw7UUFDRHlELEtBQUssRUFBRTtVQUNMQyxZQUFZLEVBQUUsU0FBZEEsWUFBWUEsQ0FBQTtZQUFBLE9BQVFsRSxVQUFVLENBQUMsSUFBSSxDQUFDO1VBQUE7VUFDcENtRSxZQUFZLEVBQUUsU0FBZEEsWUFBWUEsQ0FBQTtZQUFBLE9BQVFuRSxVQUFVLENBQUMsS0FBSyxDQUFDO1VBQUE7VUFDckNvRSxZQUFZLEVBQUUsU0FBZEEsWUFBWUEsQ0FBQTtZQUFBLE9BQVFwRSxVQUFVLENBQUMsSUFBSSxDQUFDO1VBQUE7VUFDcENxRSxVQUFVLEVBQUUsU0FBWkEsVUFBVUEsQ0FBQTtZQUFBLE9BQVFyRSxVQUFVLENBQUMsS0FBSyxDQUFDO1VBQUE7UUQvTS9CO01BQ0o7SUNnTkgsQ0FBQSxDQUFBO0VBQ0QsQ0FBQSxDQUNZO0FBRXBCLENBQUM7QUFFRDdCLE1BQU0sQ0FBQzdELGNBQWMsR0FBR0EsY0FBYztBQUFDLElBQUFnSyxRQUFBLEdBQUFsRyxPQUFBLDJCQUV4QixJQUFBckYsV0FBSSxFQUFDb0YsTUFBTSxDQUFDIiwiZmlsZSI6ImNvbXBvbmVudHMvU2VsZWN0L1NlbGVjdC5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBfX3Jlc3QgPSAodGhpcyAmJiB0aGlzLl9fcmVzdCkgfHwgZnVuY3Rpb24gKHMsIGUpIHtcbiAgICB2YXIgdCA9IHt9O1xuICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKVxuICAgICAgICB0W3BdID0gc1twXTtcbiAgICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSlcbiAgICAgICAgICAgICAgICB0W3BbaV1dID0gc1twW2ldXTtcbiAgICAgICAgfVxuICAgIHJldHVybiB0O1xufTtcbmltcG9ydCB7IGpzeCBhcyBfanN4LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBtZW1vLCB1c2VSZWYsIHVzZU1lbW8sIHVzZVN0YXRlLCB1c2VFZmZlY3QsIHVzZUNhbGxiYWNrLCB1c2VJbXBlcmF0aXZlSGFuZGxlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IGlzRXF1YWwgZnJvbSAnbG9kYXNoLmlzZXF1YWwnO1xuaW1wb3J0IGRlYm91bmNlIGZyb20gJ2xvZGFzaC5kZWJvdW5jZSc7XG5pbXBvcnQgeyBEcm9wZG93biB9IGZyb20gJ3ByaW1lcmVhY3QvZHJvcGRvd24nO1xuaW1wb3J0IHsgTXVsdGlTZWxlY3QgfSBmcm9tICdwcmltZXJlYWN0L211bHRpc2VsZWN0JztcbmltcG9ydCB7IFNrZWxldG9uIH0gZnJvbSAncHJpbWVyZWFjdC9za2VsZXRvbic7XG5pbXBvcnQgeyBkZWZhdWx0IGFzIGNsYXNzbmFtZXMsIGpvaW5DbHMgfSBmcm9tICcuLi8uLi91dGlscy9jbGFzc25hbWVzJztcbmltcG9ydCB7IEljb25zIH0gZnJvbSAnLi4vSWNvbnMnO1xuaW1wb3J0IHsgU3Bpbm5lciB9IGZyb20gJy4uL1NwaW5uZXInO1xuY29uc3QgU2VsZWN0V3JhcHBlciA9IG1lbW8ocHJvcHMgPT4ge1xuICAgIGNvbnN0IHsgbGFiZWwsIG1lc3NhZ2UsIHJlcXVpcmVkLCBwcmVmaXhDbHMsIHdyYXBwZXJDbHMsIGxhYmVsQ2xzLCBtZXNzYWdlQ2xzLCBzdWNjZXNzLCBpbnZhbGlkLCBkaXNhYmxlZCwgbG9hZGluZywgY2hpbGRyZW4sIH0gPSBwcm9wcztcbiAgICBjb25zdCBjbGFzc2VzID0gY2xhc3NuYW1lcyhwcmVmaXhDbHMpO1xuICAgIHJldHVybiBfanN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3Nlcygnd3JhcHBlcicsIHdyYXBwZXJDbHMpLCBjaGlsZHJlbjogW2xhYmVsID9cbiAgICAgICAgICAgICAgICBsb2FkaW5nXG4gICAgICAgICAgICAgICAgICAgID8gX2pzeChTa2VsZXRvbiwgeyB3aWR0aDogJzcycHgnLCBoZWlnaHQ6ICcxOHB4JywgY2xhc3NOYW1lOiBjbGFzc2VzKCdsYWJlbC1sb2FkaW5nJykgfSlcbiAgICAgICAgICAgICAgICAgICAgOiBfanN4KFwic3BhblwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygnbGFiZWwnLCBqb2luQ2xzKHJlcXVpcmVkICYmIGNsYXNzZXMoJ2xhYmVsLXJlcXVpcmVkJyksIGxhYmVsQ2xzKSksIGNoaWxkcmVuOiBsYWJlbCB9KVxuICAgICAgICAgICAgICAgIDogbnVsbCwgY2hpbGRyZW4sIG1lc3NhZ2UgJiYgX2pzeChcInNwYW5cIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ21lc3NhZ2UnLCBqb2luQ2xzKHN1Y2Nlc3MgJiYgY2xhc3NlcygnbWVzc2FnZS1zdWNjZXNzJyksIGludmFsaWQgJiYgY2xhc3NlcygnbWVzc2FnZS1lcnJvcicpLCBtZXNzYWdlQ2xzKSksIGNoaWxkcmVuOiBtZXNzYWdlIH0pXSB9KTtcbn0pO1xuY29uc3QgQ3VzdG9tRHJvcGRvd24gPSBwcm9wcyA9PiB7XG4gICAgY29uc3QgeyByZWYsIGRhdGFJZCwgbGFiZWwsIG1lc3NhZ2UsIHJlcXVpcmVkLCBwcmVmaXhDbHMgPSAnc2VsZWN0Jywgd3JhcHBlckNscywgbGFiZWxDbHMsIG1lc3NhZ2VDbHMsIHNpemUgPSAnbGFyZ2UnLCBzdWNjZXNzLCBpbnZhbGlkLCBkaXNhYmxlZCwgZWRpdGFibGUsIHBsYWNlaG9sZGVyID0gJycsIGNsYXNzTmFtZSA9ICcnLCBzZWxlY3RlZFRlbXBsYXRlLCB0YWlsVGVtcGxhdGUsIG9uQ2xpY2ssIG9uRm9jdXMsIG9uQmx1ciwgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNsYXNzZXMgPSBjbGFzc25hbWVzKHByZWZpeENscyk7XG4gICAgY29uc3QgaXNDbGlja0luc2lkZSA9IHVzZVJlZihmYWxzZSk7XG4gICAgY29uc3QgZGF0YUlkUmVmID0gdXNlUmVmKGRhdGFJZCk7XG4gICAgY29uc3QgbGFzdEZvY3VzUmVmID0gdXNlUmVmKGZhbHNlKTtcbiAgICBjb25zdCBzZWxlY3RSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgW3ZhbHVlLCBzZXRWYWx1ZV0gPSB1c2VTdGF0ZSgnJyk7XG4gICAgY29uc3QgW2lzRm9jdXMsIHNldElzRm9jdXNdID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IHNlbGVjdENscyA9IHVzZU1lbW8oKCkgPT4gY2xhc3Nlcyh2b2lkIDAsIGpvaW5DbHMoY2xhc3NlcyhzaXplKSwgY2xhc3NlcygnY3VzdG9tJyksIGlzRm9jdXMgJiYgY2xhc3NlcygnZm9jdXMnKSwgc3VjY2VzcyAmJiBjbGFzc2VzKCdzdWNjZXNzJyksIGludmFsaWQgJiYgY2xhc3NlcygnaW52YWxpZCcpLCBkaXNhYmxlZCAmJiBjbGFzc2VzKCdkaXNhYmxlZCcpLCBlZGl0YWJsZSAmJiBjbGFzc2VzKCdlZGl0YWJsZScpLCBjbGFzc05hbWUpKSwgW3NpemUsIGlzRm9jdXMsIHN1Y2Nlc3MsIGludmFsaWQsIGRpc2FibGVkLCBlZGl0YWJsZSwgY2xhc3NOYW1lXSk7XG4gICAgdXNlSW1wZXJhdGl2ZUhhbmRsZShyZWYsICgpID0+ICh7XG4gICAgICAgIGZvY3VzOiAoKSA9PiBzZXRJc0ZvY3VzKHRydWUpLFxuICAgICAgICBibHVyOiAoKSA9PiBzZXRJc0ZvY3VzKGZhbHNlKSxcbiAgICAgICAgZ2V0RE9NTm9kZTogKCkgPT4gc2VsZWN0UmVmLmN1cnJlbnRcbiAgICB9KSwgW3JlZl0pO1xuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGRhdGFJZFJlZi5jdXJyZW50ID0gZGF0YUlkO1xuICAgIH0sIFtkYXRhSWRdKTtcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAoaXNGb2N1cyAhPT0gbGFzdEZvY3VzUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIGxhc3RGb2N1c1JlZi5jdXJyZW50ID0gaXNGb2N1cztcbiAgICAgICAgICAgIGlmIChpc0ZvY3VzKSB7XG4gICAgICAgICAgICAgICAgb25Gb2N1cyA9PT0gbnVsbCB8fCBvbkZvY3VzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkZvY3VzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBvbkJsdXIgPT09IG51bGwgfHwgb25CbHVyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkJsdXIoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sIFtpc0ZvY3VzLCBvbkZvY3VzLCBvbkJsdXJdKTtcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBjb25zdCBmaW5kQ3VzdG9tRHJvcGRvd25EYXRhSWQgPSAodGFyZ2V0KSA9PiB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICBpZiAoIWRhdGFJZFJlZi5jdXJyZW50KVxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIGlmICgoKF9hID0gdGFyZ2V0ID09PSBudWxsIHx8IHRhcmdldCA9PT0gdm9pZCAwID8gdm9pZCAwIDogdGFyZ2V0LmRhdGFzZXQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5zZWxlY3RDdXN0b21Ecm9wZG93bklkKSA9PT0gZGF0YUlkUmVmLmN1cnJlbnQpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICBpZiAodGFyZ2V0ID09PSBkb2N1bWVudC5ib2R5IHx8IHRhcmdldCA9PT0gZG9jdW1lbnQpXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgY29uc3QgcGFyZW50ID0gdGFyZ2V0LnBhcmVudE5vZGUgfHwgdGFyZ2V0LnBhcmVudEVsZW1lbnQ7XG4gICAgICAgICAgICBpZiAoIXBhcmVudClcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICByZXR1cm4gZmluZEN1c3RvbURyb3Bkb3duRGF0YUlkKHBhcmVudCk7XG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IHJlbW92ZUZvY3VzID0gKGUpID0+IHtcbiAgICAgICAgICAgIGlmIChpc0NsaWNrSW5zaWRlLmN1cnJlbnQpIHtcbiAgICAgICAgICAgICAgICBpc0NsaWNrSW5zaWRlLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZXRJc0ZvY3VzKHByZXYgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghcHJldilcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIHJldHVybiBmaW5kQ3VzdG9tRHJvcGRvd25EYXRhSWQoZS50YXJnZXQpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgcmVtb3ZlRm9jdXMpO1xuICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCByZW1vdmVGb2N1cyk7XG4gICAgICAgIH07XG4gICAgfSwgW10pO1xuICAgIHJldHVybiBfanN4KFNlbGVjdFdyYXBwZXIsIHsgbGFiZWw6IGxhYmVsLCBtZXNzYWdlOiBtZXNzYWdlLCByZXF1aXJlZDogcmVxdWlyZWQsIHByZWZpeENsczogcHJlZml4Q2xzLCB3cmFwcGVyQ2xzOiB3cmFwcGVyQ2xzLCBsYWJlbENsczogbGFiZWxDbHMsIG1lc3NhZ2VDbHM6IG1lc3NhZ2VDbHMsIHN1Y2Nlc3M6IHN1Y2Nlc3MsIGludmFsaWQ6IGludmFsaWQsIGRpc2FibGVkOiBkaXNhYmxlZCwgY2hpbGRyZW46IF9qc3hzKFwiZGl2XCIsIHsgcmVmOiBzZWxlY3RSZWYsIGNsYXNzTmFtZTogc2VsZWN0Q2xzLCBjb250ZW50RWRpdGFibGU6ICFkaXNhYmxlZCA/IGVkaXRhYmxlIDogZmFsc2UsIGF1dG9Gb2N1czogZWRpdGFibGUsIFwiZGF0YS1wbGFjZWhvbGRlclwiOiBwbGFjZWhvbGRlciwgXCJkYXRhLXZhbHVlXCI6IHZhbHVlLCBvbkNsaWNrOiAoZSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChkaXNhYmxlZClcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIGlmICghZWRpdGFibGUpIHtcbiAgICAgICAgICAgICAgICAgICAgaXNDbGlja0luc2lkZS5jdXJyZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgc2V0SXNGb2N1cyhwcmV2ID0+ICFwcmV2KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgb25DbGljayA9PT0gbnVsbCB8fCBvbkNsaWNrID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkNsaWNrKGUpO1xuICAgICAgICAgICAgfSwgb25JbnB1dDogZSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IHZhbCA9IGUuY3VycmVudFRhcmdldC5pbm5lclRleHQ7XG4gICAgICAgICAgICAgICAgaWYgKHZhbCA9PT0gJ1xcbicpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsID0gJyc7XG4gICAgICAgICAgICAgICAgICAgIGUuY3VycmVudFRhcmdldC5pbm5lclRleHQgPSAnJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgc2V0VmFsdWUodmFsKTtcbiAgICAgICAgICAgIH0sIGNoaWxkcmVuOiBbIWRpc2FibGVkICYmIGVkaXRhYmxlXG4gICAgICAgICAgICAgICAgICAgID8gbnVsbFxuICAgICAgICAgICAgICAgICAgICA6IHR5cGVvZiBzZWxlY3RlZFRlbXBsYXRlID09PSAnZnVuY3Rpb24nXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHNlbGVjdGVkVGVtcGxhdGUoaXNGb2N1cylcbiAgICAgICAgICAgICAgICAgICAgICAgIDogX2pzeChcInNwYW5cIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ2N1c3RvbS1wbGFjZWhvbGRlcicpLCBjaGlsZHJlbjogcGxhY2Vob2xkZXIgfSksIGVkaXRhYmxlXG4gICAgICAgICAgICAgICAgICAgID8gbnVsbFxuICAgICAgICAgICAgICAgICAgICA6IHR5cGVvZiB0YWlsVGVtcGxhdGUgPT09ICdmdW5jdGlvbidcbiAgICAgICAgICAgICAgICAgICAgICAgID8gdGFpbFRlbXBsYXRlKGlzRm9jdXMpXG4gICAgICAgICAgICAgICAgICAgICAgICA6IF9qc3goSWNvbnMsIHsgbmFtZTogJ2NoZXZyb25Eb3duJywgY29sb3I6ICcjMTMxMzEzJywgc2l6ZTogMjAsIHdyYXBwZXJDbHM6IGNsYXNzZXMoJ2N1c3RvbS10YWlsJywgaXNGb2N1cyA/IGNsYXNzZXMoJ2N1c3RvbS10YWlsLWZvY3VzJykgOiAnJykgfSldIH0pIH0pO1xufTtcbmV4cG9ydCBjb25zdCBTZWxlY3QgPSBwcm9wcyA9PiB7XG4gICAgdmFyIF9hO1xuICAgIGNvbnN0IHsgaWQsIHJlZiwgbmFtZSwgbGFiZWwsIG1lc3NhZ2UsIHJlcXVpcmVkLCBwcmVmaXhDbHMgPSAnc2VsZWN0Jywgd3JhcHBlckNscywgbGFiZWxDbHMsIG1lc3NhZ2VDbHMsIHZhbHVlLCBzaXplID0gJ2xhcmdlJywgc3VjY2VzcywgcmVmcmVzaEFmdGVyU2hvdyA9IHRydWUsIGludmFsaWQsIGRpc2FibGVkLCBwbGFjZWhvbGRlciwgY2xhc3NOYW1lID0gJycsIG11bHRpcGxlLCBvcHRpb25zLCBwYW5lbENsYXNzTmFtZSwgZGVmYXVsdFZhbHVlLCBpdGVtVGVtcGxhdGUsIG9uQ2hhbmdlLCBvbkhpZGUsIG9uU2hvdywgdW5zZWxlY3RhYmxlLCBsb2FkaW5nIH0gPSBwcm9wcywgcmVzdCA9IF9fcmVzdChwcm9wcywgW1wiaWRcIiwgXCJyZWZcIiwgXCJuYW1lXCIsIFwibGFiZWxcIiwgXCJtZXNzYWdlXCIsIFwicmVxdWlyZWRcIiwgXCJwcmVmaXhDbHNcIiwgXCJ3cmFwcGVyQ2xzXCIsIFwibGFiZWxDbHNcIiwgXCJtZXNzYWdlQ2xzXCIsIFwidmFsdWVcIiwgXCJzaXplXCIsIFwic3VjY2Vzc1wiLCBcInJlZnJlc2hBZnRlclNob3dcIiwgXCJpbnZhbGlkXCIsIFwiZGlzYWJsZWRcIiwgXCJwbGFjZWhvbGRlclwiLCBcImNsYXNzTmFtZVwiLCBcIm11bHRpcGxlXCIsIFwib3B0aW9uc1wiLCBcInBhbmVsQ2xhc3NOYW1lXCIsIFwiZGVmYXVsdFZhbHVlXCIsIFwiaXRlbVRlbXBsYXRlXCIsIFwib25DaGFuZ2VcIiwgXCJvbkhpZGVcIiwgXCJvblNob3dcIiwgXCJ1bnNlbGVjdGFibGVcIiwgXCJsb2FkaW5nXCJdKTtcbiAgICBjb25zdCBjbGFzc2VzID0gY2xhc3NuYW1lcyhwcmVmaXhDbHMpO1xuICAgIGNvbnN0IFtzZWxlY3RlZCwgc2V0U2VsZWN0ZWRdID0gdXNlU3RhdGUoKF9hID0gdmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHZvaWQgMCA/IHZhbHVlIDogZGVmYXVsdFZhbHVlKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBudWxsKTtcbiAgICBjb25zdCBbaXNPcGVuLCBzZXRJc09wZW5dID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IFtpc0hvdmVyLCBzZXRJc0hvdmVyXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBbaXNTY3JvbGxpbmcsIHNldElzU2Nyb2xsaW5nXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBzZWxlY3RSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgX3JlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBzZWxlY3RDbHMgPSB1c2VNZW1vKCgpID0+IGNsYXNzZXModm9pZCAwLCBqb2luQ2xzKGNsYXNzZXMoc2l6ZSksIGlzT3BlbiAmJiBjbGFzc2VzKCdzaG93JyksIHN1Y2Nlc3MgJiYgY2xhc3Nlcygnc3VjY2VzcycpLCBpbnZhbGlkICYmIGNsYXNzZXMoJ2ludmFsaWQnKSwgZGlzYWJsZWQgJiYgY2xhc3NlcygnZGlzYWJsZWQnKSwgbG9hZGluZyAmJiBjbGFzc2VzKCdsb2FkaW5nJyksIChBcnJheS5pc0FycmF5KHNlbGVjdGVkKSA/ICEhc2VsZWN0ZWQubGVuZ3RoIDogISFzZWxlY3RlZCkgJiYgY2xhc3NlcygnZmlsbGVkJyksIGNsYXNzTmFtZSkpLCBbc2l6ZSwgaXNPcGVuLCBzdWNjZXNzLCBzZWxlY3RlZCwgaW52YWxpZCwgZGlzYWJsZWQsIGxvYWRpbmcsIGNsYXNzTmFtZV0pO1xuICAgIGNvbnN0IGRlYm91bmNlZEhhbmRsZVNjcm9sbCA9IGRlYm91bmNlKCgpID0+IHNldElzU2Nyb2xsaW5nKGZhbHNlKSwgNTAwKTtcbiAgICBjb25zdCByZWZyZXNoRE9NID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICBjb25zdCBlbGUgPSAoX2IgPSAoX2EgPSBzZWxlY3RSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmdldE92ZXJsYXkpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5jYWxsKF9hKTtcbiAgICAgICAgaWYgKCFlbGUpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IG9yaWdpblpJbmRleCA9IGVsZS5zdHlsZS56SW5kZXg7XG4gICAgICAgIGlmIChvcmlnaW5aSW5kZXggIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBlbGUuc3R5bGUuekluZGV4ID0gYCR7cGFyc2VJbnQob3JpZ2luWkluZGV4KSArIDF9YDtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGVsZS5zdHlsZS56SW5kZXggPSBvcmlnaW5aSW5kZXg7XG4gICAgICAgICAgICB9LCAwKTtcbiAgICAgICAgfVxuICAgIH0sIFtdKTtcbiAgICBjb25zdCBTZWxlY3RDb21wb25lbnQgPSB1c2VDYWxsYmFjaygocHJvcHMpID0+IG11bHRpcGxlXG4gICAgICAgID8gX2pzeChNdWx0aVNlbGVjdCwgT2JqZWN0LmFzc2lnbih7IHVuc2VsZWN0YWJsZTogdW5zZWxlY3RhYmxlLCBzaG93U2VsZWN0QWxsOiBmYWxzZSwgY2hlY2tib3hJY29uOiBfanN4KEljb25zLCB7IG5hbWU6ICdjaGVjaycsIHNpemU6IDEyLCBjb2xvcjogJyNGRUZFRkUnIH0pLCByZW1vdmVJY29uOiBwcm9wcyA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBvbkNsaWNrLCBvbktleURvd24sIHRhYkluZGV4IH0gPSBwcm9wcy5pY29uUHJvcHM7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9qc3goSWNvbnMsIHsgbmFtZTogJ2Nsb3NlJywgc2l6ZTogMTYsIGNvbG9yOiAnIzEzMTMxMycsIHRhYkluZGV4OiB0YWJJbmRleCwgd3JhcHBlckNsczogY2xhc3NlcygndG9rZW4tcmVtb3ZlLWljb24nKSwgb25DbGljazogb25DbGljaywgb25LZXlEb3duOiBvbktleURvd24gfSk7XG4gICAgICAgICAgICB9LCBwYW5lbEhlYWRlclRlbXBsYXRlOiBvcHRpb25zID0+IHtcbiAgICAgICAgICAgICAgICB2YXIgX2EsIF9iLCBfYywgX2QsIF9lO1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgZmlsdGVyRWxlbWVudCwgcHJvcHMgfSA9IG9wdGlvbnM7XG4gICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkTnVtID0gKF9kID0gKF9jID0gKF9iID0gKF9hID0gcHJvcHMgPT09IG51bGwgfHwgcHJvcHMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHByb3BzLm1ldGFEYXRhKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EucHJvcHMpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi52YWx1ZSkgPT09IG51bGwgfHwgX2MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jLmxlbmd0aCkgIT09IG51bGwgJiYgX2QgIT09IHZvaWQgMCA/IF9kIDogMDtcbiAgICAgICAgICAgICAgICByZXR1cm4gX2pzeHMoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ3BhbmVsLWhlYWRlcicpLCBjaGlsZHJlbjogW19qc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdwYW5lbC1oZWFkZXItaW5mbycpLCBjaGlsZHJlbjogW19qc3hzKFwic3BhblwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygncGFuZWwtaGVhZGVyLWluZm8tY291bnQnKSwgY2hpbGRyZW46IFtzZWxlY3RlZE51bSwgXCIgc2VsZWN0ZWRcIl0gfSksIF9qc3hzKFwic3BhblwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygncGFuZWwtaGVhZGVyLWluZm8tY2xlYXInKSwgb25DbGljazogZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLnVwZGF0ZU1vZGVsKGUsIFtdLCBbXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBjaGlsZHJlbjogW19qc3goSWNvbnMsIHsgbmFtZTogJ2Nsb3NlJywgc2l6ZTogMTYsIGNvbG9yOiAnI0FFMDAwMCcsIHdyYXBwZXJDbHM6IGNsYXNzZXMoJ3BhbmVsLWhlYWRlci1pbmZvLWNsZWFyLWljb24nKSB9KSwgXCJDbGVhciBhbGxcIl0gfSldIH0pLCAoX2UgPSBmaWx0ZXJFbGVtZW50ID09PSBudWxsIHx8IGZpbHRlckVsZW1lbnQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGZpbHRlckVsZW1lbnQucHJvcHMpID09PSBudWxsIHx8IF9lID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZS5jaGlsZHJlbl0gfSk7XG4gICAgICAgICAgICB9IH0sIHByb3BzKSlcbiAgICAgICAgOiBfanN4KERyb3Bkb3duLCBPYmplY3QuYXNzaWduKHsgY29sbGFwc2VJY29uOiBtdWx0aXBsZSA/IHZvaWQgMCA6ICgpID0+IF9qc3goSWNvbnMsIHsgbmFtZTogJ2NoZXZyb25VcCcsIGNvbG9yOiAnIzEzMTMxMycsIHNpemU6IDIwIH0pIH0sIHByb3BzKSksIFttdWx0aXBsZV0pO1xuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkICYmICFpc0VxdWFsKHNlbGVjdGVkLCB2YWx1ZSkpIHtcbiAgICAgICAgICAgIHNldFNlbGVjdGVkKHZhbHVlKTtcbiAgICAgICAgfVxuICAgIH0sIFt2YWx1ZV0pO1xuICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICB1c2VJbXBlcmF0aXZlSGFuZGxlKHJlZiAhPT0gbnVsbCAmJiByZWYgIT09IHZvaWQgMCA/IHJlZiA6IF9yZWYsICgpID0+IHtcbiAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgcmV0dXJuIChtdWx0aXBsZSA/IHtcbiAgICAgICAgICAgIHByb3BzOiAoX2EgPSBzZWxlY3RSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnByb3BzLFxuICAgICAgICAgICAgZm9jdXM6ICgpID0+IHsgdmFyIF9hLCBfYjsgcmV0dXJuIChfYiA9IChfYSA9IHNlbGVjdFJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZm9jdXMpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5jYWxsKF9hKTsgfSxcbiAgICAgICAgICAgIGhpZGU6ICgpID0+IHsgdmFyIF9hLCBfYjsgcmV0dXJuIChfYiA9IChfYSA9IHNlbGVjdFJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuaGlkZSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmNhbGwoX2EpOyB9LFxuICAgICAgICAgICAgc2hvdzogKCkgPT4geyB2YXIgX2EsIF9iOyByZXR1cm4gKF9iID0gKF9hID0gc2VsZWN0UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5zaG93KSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuY2FsbChfYSk7IH0sXG4gICAgICAgICAgICBnZXRFbGVtZW50OiAoKSA9PiB7IHZhciBfYSwgX2I7IHJldHVybiAoX2IgPSAoX2EgPSBzZWxlY3RSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmdldEVsZW1lbnQpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5jYWxsKF9hKTsgfSxcbiAgICAgICAgICAgIGdldElucHV0OiAoKSA9PiB7IHZhciBfYSwgX2I7IHJldHVybiAoX2IgPSAoX2EgPSBzZWxlY3RSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmdldElucHV0KSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuY2FsbChfYSk7IH0sXG4gICAgICAgICAgICBnZXRPdmVybGF5OiAoKSA9PiB7IHZhciBfYSwgX2I7IHJldHVybiAoX2IgPSAoX2EgPSBzZWxlY3RSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmdldE92ZXJsYXkpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5jYWxsKF9hKTsgfSxcbiAgICAgICAgfSA6IHtcbiAgICAgICAgICAgIHByb3BzOiAoX2IgPSBzZWxlY3RSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLnByb3BzLFxuICAgICAgICAgICAgY2xlYXI6ICgpID0+IHsgdmFyIF9hLCBfYjsgcmV0dXJuIChfYiA9IChfYSA9IHNlbGVjdFJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY2xlYXIpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5jYWxsKF9hKTsgfSxcbiAgICAgICAgICAgIGZvY3VzOiAoKSA9PiB7IHZhciBfYSwgX2I7IHJldHVybiAoX2IgPSAoX2EgPSBzZWxlY3RSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmZvY3VzKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuY2FsbChfYSk7IH0sXG4gICAgICAgICAgICBoaWRlOiAoKSA9PiB7IHZhciBfYSwgX2I7IHJldHVybiAoX2IgPSAoX2EgPSBzZWxlY3RSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmhpZGUpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5jYWxsKF9hKTsgfSxcbiAgICAgICAgICAgIHNob3c6ICgpID0+IHsgdmFyIF9hLCBfYjsgcmV0dXJuIChfYiA9IChfYSA9IHNlbGVjdFJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Euc2hvdykgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmNhbGwoX2EpOyB9LFxuICAgICAgICAgICAgZ2V0RWxlbWVudDogKCkgPT4geyB2YXIgX2EsIF9iOyByZXR1cm4gKF9iID0gKF9hID0gc2VsZWN0UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5nZXRFbGVtZW50KSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuY2FsbChfYSk7IH0sXG4gICAgICAgICAgICBnZXRJbnB1dDogKCkgPT4geyB2YXIgX2EsIF9iOyByZXR1cm4gKF9iID0gKF9hID0gc2VsZWN0UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5nZXRJbnB1dCkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmNhbGwoX2EpOyB9LFxuICAgICAgICAgICAgZ2V0T3ZlcmxheTogKCkgPT4geyB2YXIgX2EsIF9iOyByZXR1cm4gKF9iID0gKF9hID0gc2VsZWN0UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5nZXRPdmVybGF5KSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuY2FsbChfYSk7IH0sXG4gICAgICAgICAgICBnZXRGb2N1c0lucHV0OiAoKSA9PiB7IHZhciBfYSwgX2I7IHJldHVybiAoX2IgPSAoX2EgPSBzZWxlY3RSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmdldEZvY3VzSW5wdXQpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5jYWxsKF9hKTsgfSxcbiAgICAgICAgICAgIGdldFZpcnR1YWxTY3JvbGxlcjogKCkgPT4geyB2YXIgX2EsIF9iOyByZXR1cm4gKF9iID0gKF9hID0gc2VsZWN0UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5nZXRWaXJ0dWFsU2Nyb2xsZXIpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5jYWxsKF9hKTsgfSxcbiAgICAgICAgfSk7XG4gICAgfSwgW211bHRpcGxlXSk7XG4gICAgcmV0dXJuIChfanN4KFNlbGVjdFdyYXBwZXIsIHsgbGFiZWw6IGxhYmVsLCBtZXNzYWdlOiBtZXNzYWdlLCByZXF1aXJlZDogcmVxdWlyZWQsIHByZWZpeENsczogcHJlZml4Q2xzLCB3cmFwcGVyQ2xzOiB3cmFwcGVyQ2xzLCBsYWJlbENsczogbGFiZWxDbHMsIG1lc3NhZ2VDbHM6IG1lc3NhZ2VDbHMsIHN1Y2Nlc3M6IHN1Y2Nlc3MsIGludmFsaWQ6IGludmFsaWQsIGRpc2FibGVkOiBkaXNhYmxlZCwgbG9hZGluZzogbG9hZGluZywgY2hpbGRyZW46IF9qc3goU2VsZWN0Q29tcG9uZW50LCBPYmplY3QuYXNzaWduKHt9LCAoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgX2EgPSByZXN0LCB7IGZpbHRlckljb24sIGZpbHRlciB9ID0gX2EsIG90aGVycyA9IF9fcmVzdChfYSwgW1wiZmlsdGVySWNvblwiLCBcImZpbHRlclwiXSk7XG4gICAgICAgICAgICBjb25zdCBleHRyYVByb3BzID0gZmlsdGVyID8geyBmaWx0ZXJJY29uOiBmaWx0ZXJJY29uICE9PSBudWxsICYmIGZpbHRlckljb24gIT09IHZvaWQgMCA/IGZpbHRlckljb24gOiBfanN4KEljb25zLCB7IG5hbWU6ICdzZWFyY2gnLCBzaXplOiAyMCwgY29sb3I6ICcjMTMxMzEzJywgd3JhcHBlckNsczogY2xhc3NlcygnZmlsdGVyLWljb24nKSB9KSB9IDogbnVsbDtcbiAgICAgICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgb3RoZXJzKSwgeyBmaWx0ZXIgfSksIChleHRyYVByb3BzIHx8IHt9KSk7XG4gICAgICAgIH0pKCksIHsgaWQ6IGlkLCByZWY6IHNlbGVjdFJlZiwgbmFtZTogbmFtZSwgbG9hZGluZzogbG9hZGluZywgZmlsdGVyUGxhY2Vob2xkZXI6ICdTZWFyY2gnLCByZXF1aXJlZDogcmVxdWlyZWQsIGRpc2FibGVkOiBkaXNhYmxlZCwgaW52YWxpZDogaW52YWxpZCwgb3B0aW9uczogb3B0aW9ucywgcGxhY2Vob2xkZXI6IHBsYWNlaG9sZGVyLCB2YWx1ZTogc2VsZWN0ZWQgPT0gbnVsbCA/IHVuZGVmaW5lZCA6IHNlbGVjdGVkLCBjbGFzc05hbWU6IHNlbGVjdENscywgaXRlbVRlbXBsYXRlOiAob3B0aW9uKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9qc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdwYW5lbC1pdGVtJyksIG9uQ2xpY2s6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbXVsdGlwbGUgJiYgdW5zZWxlY3RhYmxlID09PSAnb24nICYmIG9wdGlvbi52YWx1ZSA9PT0gc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX2EgPSBzZWxlY3RSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNsZWFyKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sIGNoaWxkcmVuOiBbX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygncGFuZWwtaXRlbS1sYWJlbCcpLCBjaGlsZHJlbjogaXRlbVRlbXBsYXRlID8gaXRlbVRlbXBsYXRlKG9wdGlvbikgOiBvcHRpb24ubGFiZWwgfSksIF9qc3goSWNvbnMsIHsgbmFtZTogJ2NoZWNrJywgc2l6ZTogMTYsIGNvbG9yOiAnIzA3MzM4NycgfSldIH0pO1xuICAgICAgICAgICAgfSwgbG9hZGluZ0ljb246IF9qc3goU3Bpbm5lciwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ2xvYWRpbmctaWNvbicpLCBzdHJva2VXaWR0aDogJzQnIH0pLCBwYW5lbENsYXNzTmFtZTogY2xhc3NlcygncGFuZWwnLCBqb2luQ2xzKHBhbmVsQ2xhc3NOYW1lLCBpc0hvdmVyICYmIGNsYXNzZXMoJ3BhbmVsLWhvdmVyJyksIGlzU2Nyb2xsaW5nICYmIGNsYXNzZXMoJ3BhbmVsLXNjcm9sbGluZycpLCByZXN0LmFwcGVuZFRvID09PSAnc2VsZicgJiYgY2xhc3NlcygncGFuZWwtYXBwZW5kLXNlbGYnKSkpLCBvbkNoYW5nZTogKGUpID0+IHtcbiAgICAgICAgICAgICAgICBzZXRTZWxlY3RlZChlLnZhbHVlKTtcbiAgICAgICAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgICAgICAgICAgICAgb25DaGFuZ2UgPT09IG51bGwgfHwgb25DaGFuZ2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQ2hhbmdlKGUpO1xuICAgICAgICAgICAgfSwgb25IaWRlOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgc2V0SXNPcGVuKGZhbHNlKTtcbiAgICAgICAgICAgICAgICBvbkhpZGUgPT09IG51bGwgfHwgb25IaWRlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkhpZGUoKTtcbiAgICAgICAgICAgIH0sIG9uU2hvdzogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHNldElzT3Blbih0cnVlKTtcbiAgICAgICAgICAgICAgICBvblNob3cgPT09IG51bGwgfHwgb25TaG93ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvblNob3coKTtcbiAgICAgICAgICAgICAgICBpZiAoIXJlZnJlc2hBZnRlclNob3cpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHJlZnJlc2hET00oKSwgMCk7XG4gICAgICAgICAgICB9LCBkcm9wZG93bkljb246ICgpID0+IF9qc3goSWNvbnMsIHsgbmFtZTogJ2NoZXZyb25Eb3duJywgY29sb3I6ICcjMTMxMzEzJywgc2l6ZTogMjAgfSksIHB0OiB7XG4gICAgICAgICAgICAgICAgd3JhcHBlcjoge1xuICAgICAgICAgICAgICAgICAgICBvblNjcm9sbDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVib3VuY2VkSGFuZGxlU2Nyb2xsLmNhbmNlbCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0SXNTY3JvbGxpbmcodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZWJvdW5jZWRIYW5kbGVTY3JvbGwoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgcGFuZWw6IHtcbiAgICAgICAgICAgICAgICAgICAgb25Nb3VzZUVudGVyOiAoKSA9PiBzZXRJc0hvdmVyKHRydWUpLFxuICAgICAgICAgICAgICAgICAgICBvbk1vdXNlTGVhdmU6ICgpID0+IHNldElzSG92ZXIoZmFsc2UpLFxuICAgICAgICAgICAgICAgICAgICBvblRvdWNoU3RhcnQ6ICgpID0+IHNldElzSG92ZXIodHJ1ZSksXG4gICAgICAgICAgICAgICAgICAgIG9uVG91Y2hFbmQ6ICgpID0+IHNldElzSG92ZXIoZmFsc2UpLFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gfSkpIH0pKTtcbn07XG5TZWxlY3QuQ3VzdG9tRHJvcGRvd24gPSBDdXN0b21Ecm9wZG93bjtcbmV4cG9ydCBkZWZhdWx0IG1lbW8oU2VsZWN0KTsiLG51bGxdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
|
|
533
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvU2VsZWN0L1NlbGVjdC5qcyIsImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvU2VsZWN0L1NlbGVjdC50c3giXSwibmFtZXMiOlsiX2pzeFJ1bnRpbWUiLCJyZXF1aXJlIiwiX3JlYWN0IiwiX2xvZGFzaCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfZHJvcGRvd24iLCJfbXVsdGlzZWxlY3QiLCJfc2tlbGV0b24iLCJfY2xhc3NuYW1lcyIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwiX3VzZUNvbnRyb2xsZWRTdGF0ZTMiLCJfdXNlRXZlbnRDYWxsYmFjayIsIl9JY29ucyIsIl9TcGlubmVyIiwiX2NvbnN0YW50cyIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIl9fcmVzdCIsInMiLCJwIiwicHJvdG90eXBlIiwiaW5kZXhPZiIsImdldE93blByb3BlcnR5U3ltYm9scyIsImxlbmd0aCIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwiU2VsZWN0V3JhcHBlciIsIm1lbW8iLCJwcm9wcyIsImxhYmVsIiwibWVzc2FnZSIsInJlcXVpcmVkIiwicHJlZml4Q2xzIiwid3JhcHBlckNscyIsImxhYmVsQ2xzIiwibWVzc2FnZUNscyIsInN1Y2Nlc3MiLCJpbnZhbGlkIiwiZGlzYWJsZWQiLCJsb2FkaW5nIiwiY2hpbGRyZW4iLCJjbGFzc2VzIiwiY2xhc3NuYW1lcyIsIl9qc3hzIiwiY2xhc3NOYW1lIiwiX2pzeCIsIlNrZWxldG9uIiwid2lkdGgiLCJTS0VMRVRPTl9MQUJFTF9XSURUSCIsImhlaWdodCIsIlNLRUxFVE9OX0xBQkVMX0hFSUdIVCIsImpvaW5DbHMiLCJDdXN0b21Ecm9wZG93biIsInJlZiIsImRhdGFJZCIsIl9wcm9wcyRwcmVmaXhDbHMiLCJERUZBVUxUX1BSRUZJWF9DTFMiLCJfcHJvcHMkc2l6ZSIsInNpemUiLCJERUZBVUxUX1NJWkUiLCJlZGl0YWJsZSIsIl9wcm9wcyRwbGFjZWhvbGRlciIsInBsYWNlaG9sZGVyIiwiREVGQVVMVF9QTEFDRUhPTERFUiIsIl9wcm9wcyRjbGFzc05hbWUiLCJERUZBVUxUX0NMQVNTTkFNRSIsInNlbGVjdGVkVGVtcGxhdGUiLCJ0YWlsVGVtcGxhdGUiLCJvbkNsaWNrIiwib25Gb2N1cyIsIm9uQmx1ciIsImlzQ2xpY2tJbnNpZGUiLCJ1c2VSZWYiLCJkYXRhSWRSZWYiLCJsYXN0Rm9jdXNSZWYiLCJzZWxlY3RSZWYiLCJfdXNlU3RhdGUiLCJ1c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheTIiLCJ2YWx1ZSIsInNldFZhbHVlIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJpc0ZvY3VzIiwic2V0SXNGb2N1cyIsInNlbGVjdENscyIsInVzZU1lbW8iLCJ1c2VJbXBlcmF0aXZlSGFuZGxlIiwiZm9jdXMiLCJibHVyIiwiZ2V0RE9NTm9kZSIsImN1cnJlbnQiLCJ1c2VFZmZlY3QiLCJoYW5kbGVGb2N1cyIsInVzZUV2ZW50Q2FsbGJhY2siLCJoYW5kbGVCbHVyIiwicmVtb3ZlRm9jdXMiLCJwcmV2IiwiX2EiLCJ0YXJnZXQiLCJjbG9zZXN0IiwiY29uY2F0IiwiREFUQV9BVFRSX1NFTEVDVE9SIiwiZG9jdW1lbnQiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImNvbnRlbnRFZGl0YWJsZSIsImF1dG9Gb2N1cyIsIm9uSW5wdXQiLCJ2YWwiLCJjdXJyZW50VGFyZ2V0IiwiaW5uZXJUZXh0IiwiSWNvbnMiLCJuYW1lIiwiY29sb3IiLCJDT0xPUl9QUklNQVJZX0JMQUNLIiwiSUNPTl9TSVpFX01EIiwiU2VsZWN0IiwiZXhwb3J0cyIsImlkIiwiX3Byb3BzJHByZWZpeENsczIiLCJfcHJvcHMkc2l6ZTIiLCJfcHJvcHMkcmVmcmVzaEFmdGVyU2giLCJyZWZyZXNoQWZ0ZXJTaG93IiwiX3Byb3BzJGNsYXNzTmFtZTIiLCJtdWx0aXBsZSIsIm9wdGlvbnMiLCJwYW5lbENsYXNzTmFtZSIsImRlZmF1bHRWYWx1ZSIsIml0ZW1UZW1wbGF0ZSIsIm9uQ2hhbmdlIiwib25IaWRlIiwib25TaG93IiwidW5zZWxlY3RhYmxlIiwicmVzdCIsIl91c2VDb250cm9sbGVkU3RhdGUiLCJ1c2VDb250cm9sbGVkU3RhdGUiLCJfdXNlQ29udHJvbGxlZFN0YXRlMiIsInNlbGVjdGVkIiwic2V0U2VsZWN0ZWQiLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsImlzT3BlbiIsInNldElzT3BlbiIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4IiwiaXNIb3ZlciIsInNldElzSG92ZXIiLCJfdXNlU3RhdGU5IiwiX3VzZVN0YXRlMTAiLCJpc1Njcm9sbGluZyIsInNldElzU2Nyb2xsaW5nIiwiQXJyYXkiLCJpc0FycmF5IiwiZGVib3VuY2VkSGFuZGxlU2Nyb2xsIiwiZGVib3VuY2UiLCJERUJPVU5DRV9TQ1JPTExfREVMQVkiLCJjYW5jZWwiLCJyZWZyZXNoRE9NIiwidXNlQ2FsbGJhY2siLCJfYiIsImVsZSIsImdldE92ZXJsYXkiLCJvcmlnaW5aSW5kZXgiLCJzdHlsZSIsInpJbmRleCIsInVuZGVmaW5lZCIsInBhcnNlSW50Iiwic2V0VGltZW91dCIsImZpbHRlckljb25Qcm9wcyIsImZpbHRlckljb24iLCJmaWx0ZXIiLCJvdGhlcnMiLCJleHRyYVByb3BzIiwiYXNzaWduIiwiU2VsZWN0Q29tcG9uZW50IiwiTXVsdGlTZWxlY3QiLCJzaG93U2VsZWN0QWxsIiwiY2hlY2tib3hJY29uIiwiSUNPTl9TSVpFX1hTIiwiQ09MT1JfV0hJVEUiLCJyZW1vdmVJY29uIiwiX3Byb3BzJGljb25Qcm9wcyIsImljb25Qcm9wcyIsIm9uS2V5RG93biIsInRhYkluZGV4IiwiSUNPTl9TSVpFX1NNIiwicGFuZWxIZWFkZXJUZW1wbGF0ZSIsIl9jIiwiX2QiLCJfZSIsImZpbHRlckVsZW1lbnQiLCJzZWxlY3RlZE51bSIsIm1ldGFEYXRhIiwidXBkYXRlTW9kZWwiLCJDT0xPUl9ORUdBVElWRSIsIkRyb3Bkb3duIiwiY29sbGFwc2VJY29uIiwiaGlkZSIsInNob3ciLCJnZXRFbGVtZW50IiwiZ2V0SW5wdXQiLCJjbGVhciIsImdldEZvY3VzSW5wdXQiLCJnZXRWaXJ0dWFsU2Nyb2xsZXIiLCJoYW5kbGVDaGFuZ2UiLCJlbWl0Q2hhbmdlIiwiaGFuZGxlSGlkZSIsImhhbmRsZVNob3ciLCJoYW5kbGVTY3JvbGwiLCJmaWx0ZXJQbGFjZWhvbGRlciIsIkZJTFRFUl9QTEFDRUhPTERFUiIsIm9wdGlvbiIsIlVOU0VMRUNUQUJMRV9PTiIsIkNPTE9SX1BSSU1BUllfQkxVRSIsImxvYWRpbmdJY29uIiwiU3Bpbm5lciIsInN0cm9rZVdpZHRoIiwiU1BJTk5FUl9TVFJPS0VfV0lEVEgiLCJhcHBlbmRUbyIsImRyb3Bkb3duSWNvbiIsInB0Iiwid3JhcHBlciIsIm9uU2Nyb2xsIiwicGFuZWwiLCJvbk1vdXNlRW50ZXIiLCJvbk1vdXNlTGVhdmUiLCJvblRvdWNoU3RhcnQiLCJvblRvdWNoRW5kIiwiX2RlZmF1bHQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQVdBLElBQUFBLFdBQUEsR0FBQUMsT0FBQTtBQ1hBLElBQUFDLE1BQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQUgsT0FBQTtBQUNBLElBQUFJLFNBQUEsR0FBQUosT0FBQTtBQUNBLElBQUFLLFlBQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLFNBQUEsR0FBQU4sT0FBQTtBQUNBLElBQUFPLFdBQUEsR0FBQUMsdUJBQUEsQ0FBQVIsT0FBQTtBQUNBLElBQUFTLG9CQUFBLEdBQUFOLHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBVSxpQkFBQSxHQUFBUCxzQkFBQSxDQUFBSCxPQUFB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LFlBQVksRUFBRSxTQUFkQSxZQUFZQSxDQUFBO1lBQUEsT0FBUS9FLFVBQVUsQ0FBQyxLQUFLLENBQUM7VUFBQTtVQUNyQ2dGLFlBQVksRUFBRSxTQUFkQSxZQUFZQSxDQUFBO1lBQUEsT0FBUWhGLFVBQVUsQ0FBQyxJQUFJLENBQUM7VUFBQTtVQUNwQ2lGLFVBQVUsRUFBRSxTQUFaQSxVQUFVQSxDQUFBO1lBQUEsT0FBUWpGLFVBQVUsQ0FBQyxLQUFLLENBQUM7VUFBQTtRRG5QL0I7TUFDSjtJQ29QSCxDQUFBLENBQUE7RUFDRCxDQUFBLENBQ1k7QUFFcEIsQ0FBQztBQUVEOUIsTUFBTSxDQUFDbEUsY0FBYyxHQUFHQSxjQUFjO0FBQUMsSUFBQWtMLFFBQUEsR0FBQS9HLE9BQUEsMkJBRXhCLElBQUE1RixXQUFJLEVBQUMyRixNQUFNLENBQUMiLCJmaWxlIjoiY29tcG9uZW50cy9TZWxlY3QvU2VsZWN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fcmVzdCA9ICh0aGlzICYmIHRoaXMuX19yZXN0KSB8fCBmdW5jdGlvbiAocywgZSkge1xuICAgIHZhciB0ID0ge307XG4gICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXG4gICAgICAgIHRbcF0gPSBzW3BdO1xuICAgIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKVxuICAgICAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xuICAgICAgICB9XG4gICAgcmV0dXJuIHQ7XG59O1xuaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IG1lbW8sIHVzZVJlZiwgdXNlTWVtbywgdXNlU3RhdGUsIHVzZUVmZmVjdCwgdXNlQ2FsbGJhY2ssIHVzZUltcGVyYXRpdmVIYW5kbGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgZGVib3VuY2UgZnJvbSAnbG9kYXNoLmRlYm91bmNlJztcbmltcG9ydCB7IERyb3Bkb3duIH0gZnJvbSAncHJpbWVyZWFjdC9kcm9wZG93bic7XG5pbXBvcnQgeyBNdWx0aVNlbGVjdCB9IGZyb20gJ3ByaW1lcmVhY3QvbXVsdGlzZWxlY3QnO1xuaW1wb3J0IHsgU2tlbGV0b24gfSBmcm9tICdwcmltZXJlYWN0L3NrZWxldG9uJztcbmltcG9ydCB7IGRlZmF1bHQgYXMgY2xhc3NuYW1lcywgam9pbkNscyB9IGZyb20gJy4uLy4uL3V0aWxzL2NsYXNzbmFtZXMnO1xuaW1wb3J0IHVzZUNvbnRyb2xsZWRTdGF0ZSBmcm9tICcuLi91c2VDb250cm9sbGVkU3RhdGUnO1xuaW1wb3J0IHVzZUV2ZW50Q2FsbGJhY2sgZnJvbSAnLi4vdXNlRXZlbnRDYWxsYmFjayc7XG5pbXBvcnQgeyBJY29ucyB9IGZyb20gJy4uL0ljb25zJztcbmltcG9ydCB7IFNwaW5uZXIgfSBmcm9tICcuLi9TcGlubmVyJztcbmltcG9ydCB7IERFRkFVTFRfUFJFRklYX0NMUywgREVGQVVMVF9TSVpFLCBERUZBVUxUX1BMQUNFSE9MREVSLCBERUZBVUxUX0NMQVNTTkFNRSwgRklMVEVSX1BMQUNFSE9MREVSLCBERUJPVU5DRV9TQ1JPTExfREVMQVksIFNQSU5ORVJfU1RST0tFX1dJRFRILCBTS0VMRVRPTl9MQUJFTF9XSURUSCwgU0tFTEVUT05fTEFCRUxfSEVJR0hULCBVTlNFTEVDVEFCTEVfT04sIERBVEFfQVRUUl9TRUxFQ1RPUiwgQ09MT1JfUFJJTUFSWV9CTEFDSywgQ09MT1JfUFJJTUFSWV9CTFVFLCBDT0xPUl9ORUdBVElWRSwgQ09MT1JfV0hJVEUsIElDT05fU0laRV9YUywgSUNPTl9TSVpFX1NNLCBJQ09OX1NJWkVfTUQsIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuY29uc3QgU2VsZWN0V3JhcHBlciA9IG1lbW8ocHJvcHMgPT4ge1xuICAgIGNvbnN0IHsgbGFiZWwsIG1lc3NhZ2UsIHJlcXVpcmVkLCBwcmVmaXhDbHMsIHdyYXBwZXJDbHMsIGxhYmVsQ2xzLCBtZXNzYWdlQ2xzLCBzdWNjZXNzLCBpbnZhbGlkLCBkaXNhYmxlZCwgbG9hZGluZywgY2hpbGRyZW4sIH0gPSBwcm9wcztcbiAgICBjb25zdCBjbGFzc2VzID0gY2xhc3NuYW1lcyhwcmVmaXhDbHMpO1xuICAgIHJldHVybiBfanN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3Nlcygnd3JhcHBlcicsIHdyYXBwZXJDbHMpLCBjaGlsZHJlbjogW2xhYmVsID9cbiAgICAgICAgICAgICAgICBsb2FkaW5nXG4gICAgICAgICAgICAgICAgICAgID8gX2pzeChTa2VsZXRvbiwgeyB3aWR0aDogU0tFTEVUT05fTEFCRUxfV0lEVEgsIGhlaWdodDogU0tFTEVUT05fTEFCRUxfSEVJR0hULCBjbGFzc05hbWU6IGNsYXNzZXMoJ2xhYmVsLWxvYWRpbmcnKSB9KVxuICAgICAgICAgICAgICAgICAgICA6IF9qc3goXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdsYWJlbCcsIGpvaW5DbHMocmVxdWlyZWQgJiYgY2xhc3NlcygnbGFiZWwtcmVxdWlyZWQnKSwgbGFiZWxDbHMpKSwgY2hpbGRyZW46IGxhYmVsIH0pXG4gICAgICAgICAgICAgICAgOiBudWxsLCBjaGlsZHJlbiwgbWVzc2FnZSAmJiBfanN4KFwic3BhblwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygnbWVzc2FnZScsIGpvaW5DbHMoc3VjY2VzcyAmJiBjbGFzc2VzKCdtZXNzYWdlLXN1Y2Nlc3MnKSwgaW52YWxpZCAmJiBjbGFzc2VzKCdtZXNzYWdlLWVycm9yJyksIG1lc3NhZ2VDbHMpKSwgY2hpbGRyZW46IG1lc3NhZ2UgfSldIH0pO1xufSk7XG5jb25zdCBDdXN0b21Ecm9wZG93biA9IHByb3BzID0+IHtcbiAgICBjb25zdCB7IHJlZiwgZGF0YUlkLCBsYWJlbCwgbWVzc2FnZSwgcmVxdWlyZWQsIHByZWZpeENscyA9IERFRkFVTFRfUFJFRklYX0NMUywgd3JhcHBlckNscywgbGFiZWxDbHMsIG1lc3NhZ2VDbHMsIHNpemUgPSBERUZBVUxUX1NJWkUsIHN1Y2Nlc3MsIGludmFsaWQsIGRpc2FibGVkLCBlZGl0YWJsZSwgcGxhY2Vob2xkZXIgPSBERUZBVUxUX1BMQUNFSE9MREVSLCBjbGFzc05hbWUgPSBERUZBVUxUX0NMQVNTTkFNRSwgc2VsZWN0ZWRUZW1wbGF0ZSwgdGFpbFRlbXBsYXRlLCBvbkNsaWNrLCBvbkZvY3VzLCBvbkJsdXIsIH0gPSBwcm9wcztcbiAgICBjb25zdCBjbGFzc2VzID0gY2xhc3NuYW1lcyhwcmVmaXhDbHMpO1xuICAgIGNvbnN0IGlzQ2xpY2tJbnNpZGUgPSB1c2VSZWYoZmFsc2UpO1xuICAgIGNvbnN0IGRhdGFJZFJlZiA9IHVzZVJlZihkYXRhSWQpO1xuICAgIGNvbnN0IGxhc3RGb2N1c1JlZiA9IHVzZVJlZihmYWxzZSk7XG4gICAgY29uc3Qgc2VsZWN0UmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IFt2YWx1ZSwgc2V0VmFsdWVdID0gdXNlU3RhdGUoJycpO1xuICAgIGNvbnN0IFtpc0ZvY3VzLCBzZXRJc0ZvY3VzXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBzZWxlY3RDbHMgPSB1c2VNZW1vKCgpID0+IGNsYXNzZXModm9pZCAwLCBqb2luQ2xzKGNsYXNzZXMoc2l6ZSksIGNsYXNzZXMoJ2N1c3RvbScpLCBpc0ZvY3VzICYmIGNsYXNzZXMoJ2ZvY3VzJyksIHN1Y2Nlc3MgJiYgY2xhc3Nlcygnc3VjY2VzcycpLCBpbnZhbGlkICYmIGNsYXNzZXMoJ2ludmFsaWQnKSwgZGlzYWJsZWQgJiYgY2xhc3NlcygnZGlzYWJsZWQnKSwgZWRpdGFibGUgJiYgY2xhc3NlcygnZWRpdGFibGUnKSwgY2xhc3NOYW1lKSksIFtzaXplLCBpc0ZvY3VzLCBzdWNjZXNzLCBpbnZhbGlkLCBkaXNhYmxlZCwgZWRpdGFibGUsIGNsYXNzTmFtZV0pO1xuICAgIHVzZUltcGVyYXRpdmVIYW5kbGUocmVmLCAoKSA9PiAoe1xuICAgICAgICBmb2N1czogKCkgPT4gc2V0SXNGb2N1cyh0cnVlKSxcbiAgICAgICAgYmx1cjogKCkgPT4gc2V0SXNGb2N1cyhmYWxzZSksXG4gICAgICAgIGdldERPTU5vZGU6ICgpID0+IHNlbGVjdFJlZi5jdXJyZW50XG4gICAgfSksIFtdKTtcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBkYXRhSWRSZWYuY3VycmVudCA9IGRhdGFJZDtcbiAgICB9LCBbZGF0YUlkXSk7XG4gICAgY29uc3QgaGFuZGxlRm9jdXMgPSB1c2VFdmVudENhbGxiYWNrKCgpID0+IG9uRm9jdXMgPT09IG51bGwgfHwgb25Gb2N1cyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25Gb2N1cygpKTtcbiAgICBjb25zdCBoYW5kbGVCbHVyID0gdXNlRXZlbnRDYWxsYmFjaygoKSA9PiBvbkJsdXIgPT09IG51bGwgfHwgb25CbHVyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkJsdXIoKSk7XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKGlzRm9jdXMgIT09IGxhc3RGb2N1c1JlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICBsYXN0Rm9jdXNSZWYuY3VycmVudCA9IGlzRm9jdXM7XG4gICAgICAgICAgICBpZiAoaXNGb2N1cykge1xuICAgICAgICAgICAgICAgIGhhbmRsZUZvY3VzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBoYW5kbGVCbHVyKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LCBbaXNGb2N1c10pO1xuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlbW92ZUZvY3VzID0gKGUpID0+IHtcbiAgICAgICAgICAgIGlmIChpc0NsaWNrSW5zaWRlLmN1cnJlbnQpIHtcbiAgICAgICAgICAgICAgICBpc0NsaWNrSW5zaWRlLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZXRJc0ZvY3VzKHByZXYgPT4ge1xuICAgICAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgICAgICBpZiAoIXByZXYpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICBpZiAoIWRhdGFJZFJlZi5jdXJyZW50KVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gZS50YXJnZXQ7XG4gICAgICAgICAgICAgICAgcmV0dXJuICEhKChfYSA9IHRhcmdldCA9PT0gbnVsbCB8fCB0YXJnZXQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHRhcmdldC5jbG9zZXN0KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY2FsbCh0YXJnZXQsIGBbJHtEQVRBX0FUVFJfU0VMRUNUT1J9PVwiJHtkYXRhSWRSZWYuY3VycmVudH1cIl1gKSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCByZW1vdmVGb2N1cyk7XG4gICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIHJlbW92ZUZvY3VzKTtcbiAgICAgICAgfTtcbiAgICB9LCBbXSk7XG4gICAgcmV0dXJuIF9qc3goU2VsZWN0V3JhcHBlciwgeyBsYWJlbDogbGFiZWwsIG1lc3NhZ2U6IG1lc3NhZ2UsIHJlcXVpcmVkOiByZXF1aXJlZCwgcHJlZml4Q2xzOiBwcmVmaXhDbHMsIHdyYXBwZXJDbHM6IHdyYXBwZXJDbHMsIGxhYmVsQ2xzOiBsYWJlbENscywgbWVzc2FnZUNsczogbWVzc2FnZUNscywgc3VjY2Vzczogc3VjY2VzcywgaW52YWxpZDogaW52YWxpZCwgZGlzYWJsZWQ6IGRpc2FibGVkLCBjaGlsZHJlbjogX2pzeHMoXCJkaXZcIiwgeyByZWY6IHNlbGVjdFJlZiwgY2xhc3NOYW1lOiBzZWxlY3RDbHMsIGNvbnRlbnRFZGl0YWJsZTogIWRpc2FibGVkID8gZWRpdGFibGUgOiBmYWxzZSwgYXV0b0ZvY3VzOiBlZGl0YWJsZSwgXCJkYXRhLXBsYWNlaG9sZGVyXCI6IHBsYWNlaG9sZGVyLCBcImRhdGEtdmFsdWVcIjogdmFsdWUsIG9uQ2xpY2s6IChlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGRpc2FibGVkKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgaWYgKCFlZGl0YWJsZSkge1xuICAgICAgICAgICAgICAgICAgICBpc0NsaWNrSW5zaWRlLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBzZXRJc0ZvY3VzKHByZXYgPT4gIXByZXYpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBvbkNsaWNrID09PSBudWxsIHx8IG9uQ2xpY2sgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQ2xpY2soZSk7XG4gICAgICAgICAgICB9LCBvbklucHV0OiBlID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgdmFsID0gZS5jdXJyZW50VGFyZ2V0LmlubmVyVGV4dDtcbiAgICAgICAgICAgICAgICBpZiAodmFsID09PSAnXFxuJykge1xuICAgICAgICAgICAgICAgICAgICB2YWwgPSAnJztcbiAgICAgICAgICAgICAgICAgICAgZS5jdXJyZW50VGFyZ2V0LmlubmVyVGV4dCA9ICcnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzZXRWYWx1ZSh2YWwpO1xuICAgICAgICAgICAgfSwgY2hpbGRyZW46IFshZGlzYWJsZWQgJiYgZWRpdGFibGVcbiAgICAgICAgICAgICAgICAgICAgPyBudWxsXG4gICAgICAgICAgICAgICAgICAgIDogdHlwZW9mIHNlbGVjdGVkVGVtcGxhdGUgPT09ICdmdW5jdGlvbidcbiAgICAgICAgICAgICAgICAgICAgICAgID8gc2VsZWN0ZWRUZW1wbGF0ZShpc0ZvY3VzKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBfanN4KFwic3BhblwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygnY3VzdG9tLXBsYWNlaG9sZGVyJyksIGNoaWxkcmVuOiBwbGFjZWhvbGRlciB9KSwgZWRpdGFibGVcbiAgICAgICAgICAgICAgICAgICAgPyBudWxsXG4gICAgICAgICAgICAgICAgICAgIDogdHlwZW9mIHRhaWxUZW1wbGF0ZSA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICAgICAgICAgICAgICAgICAgPyB0YWlsVGVtcGxhdGUoaXNGb2N1cylcbiAgICAgICAgICAgICAgICAgICAgICAgIDogX2pzeChJY29ucywgeyBuYW1lOiAnY2hldnJvbkRvd24nLCBjb2xvcjogQ09MT1JfUFJJTUFSWV9CTEFDSywgc2l6ZTogSUNPTl9TSVpFX01ELCB3cmFwcGVyQ2xzOiBjbGFzc2VzKCdjdXN0b20tdGFpbCcsIGlzRm9jdXMgPyBjbGFzc2VzKCdjdXN0b20tdGFpbC1mb2N1cycpIDogJycpIH0pXSB9KSB9KTtcbn07XG5leHBvcnQgY29uc3QgU2VsZWN0ID0gcHJvcHMgPT4ge1xuICAgIGNvbnN0IHsgaWQsIHJlZiwgbmFtZSwgbGFiZWwsIG1lc3NhZ2UsIHJlcXVpcmVkLCBwcmVmaXhDbHMgPSBERUZBVUxUX1BSRUZJWF9DTFMsIHdyYXBwZXJDbHMsIGxhYmVsQ2xzLCBtZXNzYWdlQ2xzLCB2YWx1ZSwgc2l6ZSA9IERFRkFVTFRfU0laRSwgc3VjY2VzcywgcmVmcmVzaEFmdGVyU2hvdyA9IHRydWUsIGludmFsaWQsIGRpc2FibGVkLCBwbGFjZWhvbGRlciwgY2xhc3NOYW1lID0gREVGQVVMVF9DTEFTU05BTUUsIG11bHRpcGxlLCBvcHRpb25zLCBwYW5lbENsYXNzTmFtZSwgZGVmYXVsdFZhbHVlLCBpdGVtVGVtcGxhdGUsIG9uQ2hhbmdlLCBvbkhpZGUsIG9uU2hvdywgdW5zZWxlY3RhYmxlLCBsb2FkaW5nIH0gPSBwcm9wcywgcmVzdCA9IF9fcmVzdChwcm9wcywgW1wiaWRcIiwgXCJyZWZcIiwgXCJuYW1lXCIsIFwibGFiZWxcIiwgXCJtZXNzYWdlXCIsIFwicmVxdWlyZWRcIiwgXCJwcmVmaXhDbHNcIiwgXCJ3cmFwcGVyQ2xzXCIsIFwibGFiZWxDbHNcIiwgXCJtZXNzYWdlQ2xzXCIsIFwidmFsdWVcIiwgXCJzaXplXCIsIFwic3VjY2Vzc1wiLCBcInJlZnJlc2hBZnRlclNob3dcIiwgXCJpbnZhbGlkXCIsIFwiZGlzYWJsZWRcIiwgXCJwbGFjZWhvbGRlclwiLCBcImNsYXNzTmFtZVwiLCBcIm11bHRpcGxlXCIsIFwib3B0aW9uc1wiLCBcInBhbmVsQ2xhc3NOYW1lXCIsIFwiZGVmYXVsdFZhbHVlXCIsIFwiaXRlbVRlbXBsYXRlXCIsIFwib25DaGFuZ2VcIiwgXCJvbkhpZGVcIiwgXCJvblNob3dcIiwgXCJ1bnNlbGVjdGFibGVcIiwgXCJsb2FkaW5nXCJdKTtcbiAgICBjb25zdCBjbGFzc2VzID0gY2xhc3NuYW1lcyhwcmVmaXhDbHMpO1xuICAgIGNvbnN0IFtzZWxlY3RlZCwgc2V0U2VsZWN0ZWRdID0gdXNlQ29udHJvbGxlZFN0YXRlKGRlZmF1bHRWYWx1ZSAhPT0gbnVsbCAmJiBkZWZhdWx0VmFsdWUgIT09IHZvaWQgMCA/IGRlZmF1bHRWYWx1ZSA6IG51bGwsIHZhbHVlKTtcbiAgICBjb25zdCBbaXNPcGVuLCBzZXRJc09wZW5dID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IFtpc0hvdmVyLCBzZXRJc0hvdmVyXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBbaXNTY3JvbGxpbmcsIHNldElzU2Nyb2xsaW5nXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBzZWxlY3RSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3Qgc2VsZWN0Q2xzID0gdXNlTWVtbygoKSA9PiBjbGFzc2VzKHZvaWQgMCwgam9pbkNscyhjbGFzc2VzKHNpemUpLCBpc09wZW4gJiYgY2xhc3Nlcygnc2hvdycpLCBzdWNjZXNzICYmIGNsYXNzZXMoJ3N1Y2Nlc3MnKSwgaW52YWxpZCAmJiBjbGFzc2VzKCdpbnZhbGlkJyksIGRpc2FibGVkICYmIGNsYXNzZXMoJ2Rpc2FibGVkJyksIGxvYWRpbmcgJiYgY2xhc3NlcygnbG9hZGluZycpLCAoQXJyYXkuaXNBcnJheShzZWxlY3RlZCkgPyAhIXNlbGVjdGVkLmxlbmd0aCA6ICEhc2VsZWN0ZWQpICYmIGNsYXNzZXMoJ2ZpbGxlZCcpLCBjbGFzc05hbWUpKSwgW3NpemUsIGlzT3Blbiwgc3VjY2Vzcywgc2VsZWN0ZWQsIGludmFsaWQsIGRpc2FibGVkLCBsb2FkaW5nLCBjbGFzc05hbWVdKTtcbiAgICBjb25zdCBkZWJvdW5jZWRIYW5kbGVTY3JvbGwgPSB1c2VNZW1vKCgpID0+IGRlYm91bmNlKCgpID0+IHNldElzU2Nyb2xsaW5nKGZhbHNlKSwgREVCT1VOQ0VfU0NST0xMX0RFTEFZKSwgW10pO1xuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHJldHVybiAoKSA9PiBkZWJvdW5jZWRIYW5kbGVTY3JvbGwuY2FuY2VsKCk7XG4gICAgfSwgW2RlYm91bmNlZEhhbmRsZVNjcm9sbF0pO1xuICAgIGNvbnN0IHJlZnJlc2hET00gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgIGNvbnN0IGVsZSA9IChfYiA9IChfYSA9IHNlbGVjdFJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZ2V0T3ZlcmxheSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmNhbGwoX2EpO1xuICAgICAgICBpZiAoIWVsZSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc3Qgb3JpZ2luWkluZGV4ID0gZWxlLnN0eWxlLnpJbmRleDtcbiAgICAgICAgaWYgKG9yaWdpblpJbmRleCAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGVsZS5zdHlsZS56SW5kZXggPSBgJHtwYXJzZUludChvcmlnaW5aSW5kZXgpICsgMX1gO1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgZWxlLnN0eWxlLnpJbmRleCA9IG9yaWdpblpJbmRleDtcbiAgICAgICAgICAgIH0sIDApO1xuICAgICAgICB9XG4gICAgfSwgW10pO1xuICAgIGNvbnN0IGZpbHRlckljb25Qcm9wcyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgICBjb25zdCBfYSA9IHJlc3QsIHsgZmlsdGVySWNvbiwgZmlsdGVyIH0gPSBfYSwgb3RoZXJzID0gX19yZXN0KF9hLCBbXCJmaWx0ZXJJY29uXCIsIFwiZmlsdGVyXCJdKTtcbiAgICAgICAgY29uc3QgZXh0cmFQcm9wcyA9IGZpbHRlciA/IHsgZmlsdGVySWNvbjogZmlsdGVySWNvbiAhPT0gbnVsbCAmJiBmaWx0ZXJJY29uICE9PSB2b2lkIDAgPyBmaWx0ZXJJY29uIDogX2pzeChJY29ucywgeyBuYW1lOiAnc2VhcmNoJywgc2l6ZTogSUNPTl9TSVpFX01ELCBjb2xvcjogQ09MT1JfUFJJTUFSWV9CTEFDSywgd3JhcHBlckNsczogY2xhc3NlcygnZmlsdGVyLWljb24nKSB9KSB9IDogbnVsbDtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBvdGhlcnMpLCB7IGZpbHRlciB9KSwgKGV4dHJhUHJvcHMgfHwge30pKTtcbiAgICB9LCBbcmVzdC5maWx0ZXIsIHJlc3QuZmlsdGVySWNvbl0pO1xuICAgIGNvbnN0IFNlbGVjdENvbXBvbmVudCA9IHVzZUNhbGxiYWNrKChwcm9wcykgPT4gbXVsdGlwbGVcbiAgICAgICAgPyBfanN4KE11bHRpU2VsZWN0LCBPYmplY3QuYXNzaWduKHsgdW5zZWxlY3RhYmxlOiB1bnNlbGVjdGFibGUsIHNob3dTZWxlY3RBbGw6IGZhbHNlLCBjaGVja2JveEljb246IF9qc3goSWNvbnMsIHsgbmFtZTogJ2NoZWNrJywgc2l6ZTogSUNPTl9TSVpFX1hTLCBjb2xvcjogQ09MT1JfV0hJVEUgfSksIHJlbW92ZUljb246IHByb3BzID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IG9uQ2xpY2ssIG9uS2V5RG93biwgdGFiSW5kZXggfSA9IHByb3BzLmljb25Qcm9wcztcbiAgICAgICAgICAgICAgICByZXR1cm4gX2pzeChJY29ucywgeyBuYW1lOiAnY2xvc2UnLCBzaXplOiBJQ09OX1NJWkVfU00sIGNvbG9yOiBDT0xPUl9QUklNQVJZX0JMQUNLLCB0YWJJbmRleDogdGFiSW5kZXgsIHdyYXBwZXJDbHM6IGNsYXNzZXMoJ3Rva2VuLXJlbW92ZS1pY29uJyksIG9uQ2xpY2s6IG9uQ2xpY2ssIG9uS2V5RG93bjogb25LZXlEb3duIH0pO1xuICAgICAgICAgICAgfSwgcGFuZWxIZWFkZXJUZW1wbGF0ZTogb3B0aW9ucyA9PiB7XG4gICAgICAgICAgICAgICAgdmFyIF9hLCBfYiwgX2MsIF9kLCBfZTtcbiAgICAgICAgICAgICAgICBjb25zdCB7IGZpbHRlckVsZW1lbnQsIHByb3BzIH0gPSBvcHRpb25zO1xuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZE51bSA9IChfZCA9IChfYyA9IChfYiA9IChfYSA9IHByb3BzID09PSBudWxsIHx8IHByb3BzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBwcm9wcy5tZXRhRGF0YSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnByb3BzKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IudmFsdWUpID09PSBudWxsIHx8IF9jID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYy5sZW5ndGgpICE9PSBudWxsICYmIF9kICE9PSB2b2lkIDAgPyBfZCA6IDA7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9qc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdwYW5lbC1oZWFkZXInKSwgY2hpbGRyZW46IFtfanN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygncGFuZWwtaGVhZGVyLWluZm8nKSwgY2hpbGRyZW46IFtfanN4cyhcInNwYW5cIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ3BhbmVsLWhlYWRlci1pbmZvLWNvdW50JyksIGNoaWxkcmVuOiBbc2VsZWN0ZWROdW0sIFwiIHNlbGVjdGVkXCJdIH0pLCBfanN4cyhcInNwYW5cIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ3BhbmVsLWhlYWRlci1pbmZvLWNsZWFyJyksIG9uQ2xpY2s6IGUgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy51cGRhdGVNb2RlbChlLCBbXSwgW10pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgY2hpbGRyZW46IFtfanN4KEljb25zLCB7IG5hbWU6ICdjbG9zZScsIHNpemU6IElDT05fU0laRV9TTSwgY29sb3I6IENPTE9SX05FR0FUSVZFLCB3cmFwcGVyQ2xzOiBjbGFzc2VzKCdwYW5lbC1oZWFkZXItaW5mby1jbGVhci1pY29uJykgfSksIFwiQ2xlYXIgYWxsXCJdIH0pXSB9KSwgKF9lID0gZmlsdGVyRWxlbWVudCA9PT0gbnVsbCB8fCBmaWx0ZXJFbGVtZW50ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBmaWx0ZXJFbGVtZW50LnByb3BzKSA9PT0gbnVsbCB8fCBfZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2UuY2hpbGRyZW5dIH0pO1xuICAgICAgICAgICAgfSB9LCBwcm9wcykpXG4gICAgICAgIDogX2pzeChEcm9wZG93biwgT2JqZWN0LmFzc2lnbih7IGNvbGxhcHNlSWNvbjogbXVsdGlwbGUgPyB2b2lkIDAgOiAoKSA9PiBfanN4KEljb25zLCB7IG5hbWU6ICdjaGV2cm9uVXAnLCBjb2xvcjogQ09MT1JfUFJJTUFSWV9CTEFDSywgc2l6ZTogSUNPTl9TSVpFX01EIH0pIH0sIHByb3BzKSksIFttdWx0aXBsZV0pO1xuICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICB1c2VJbXBlcmF0aXZlSGFuZGxlKHJlZiwgKCkgPT4ge1xuICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICByZXR1cm4gKG11bHRpcGxlID8ge1xuICAgICAgICAgICAgcHJvcHM6IChfYSA9IHNlbGVjdFJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EucHJvcHMsXG4gICAgICAgICAgICBmb2N1czogKCkgPT4geyB2YXIgX2EsIF9iOyByZXR1cm4gKF9iID0gKF9hID0gc2VsZWN0UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5mb2N1cykgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmNhbGwoX2EpOyB9LFxuICAgICAgICAgICAgaGlkZTogKCkgPT4geyB2YXIgX2EsIF9iOyByZXR1cm4gKF9iID0gKF9hID0gc2VsZWN0UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5oaWRlKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuY2FsbChfYSk7IH0sXG4gICAgICAgICAgICBzaG93OiAoKSA9PiB7IHZhciBfYSwgX2I7IHJldHVybiAoX2IgPSAoX2EgPSBzZWxlY3RSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnNob3cpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5jYWxsKF9hKTsgfSxcbiAgICAgICAgICAgIGdldEVsZW1lbnQ6ICgpID0+IHsgdmFyIF9hLCBfYjsgcmV0dXJuIChfYiA9IChfYSA9IHNlbGVjdFJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZ2V0RWxlbWVudCkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmNhbGwoX2EpOyB9LFxuICAgICAgICAgICAgZ2V0SW5wdXQ6ICgpID0+IHsgdmFyIF9hLCBfYjsgcmV0dXJuIChfYiA9IChfYSA9IHNlbGVjdFJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZ2V0SW5wdXQpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5jYWxsKF9hKTsgfSxcbiAgICAgICAgICAgIGdldE92ZXJsYXk6ICgpID0+IHsgdmFyIF9hLCBfYjsgcmV0dXJuIChfYiA9IChfYSA9IHNlbGVjdFJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZ2V0T3ZlcmxheSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmNhbGwoX2EpOyB9LFxuICAgICAgICB9IDoge1xuICAgICAgICAgICAgcHJvcHM6IChfYiA9IHNlbGVjdFJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IucHJvcHMsXG4gICAgICAgICAgICBjbGVhcjogKCkgPT4geyB2YXIgX2EsIF9iOyByZXR1cm4gKF9iID0gKF9hID0gc2VsZWN0UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jbGVhcikgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmNhbGwoX2EpOyB9LFxuICAgICAgICAgICAgZm9jdXM6ICgpID0+IHsgdmFyIF9hLCBfYjsgcmV0dXJuIChfYiA9IChfYSA9IHNlbGVjdFJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZm9jdXMpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5jYWxsKF9hKTsgfSxcbiAgICAgICAgICAgIGhpZGU6ICgpID0+IHsgdmFyIF9hLCBfYjsgcmV0dXJuIChfYiA9IChfYSA9IHNlbGVjdFJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuaGlkZSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmNhbGwoX2EpOyB9LFxuICAgICAgICAgICAgc2hvdzogKCkgPT4geyB2YXIgX2EsIF9iOyByZXR1cm4gKF9iID0gKF9hID0gc2VsZWN0UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5zaG93KSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuY2FsbChfYSk7IH0sXG4gICAgICAgICAgICBnZXRFbGVtZW50OiAoKSA9PiB7IHZhciBfYSwgX2I7IHJldHVybiAoX2IgPSAoX2EgPSBzZWxlY3RSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmdldEVsZW1lbnQpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5jYWxsKF9hKTsgfSxcbiAgICAgICAgICAgIGdldElucHV0OiAoKSA9PiB7IHZhciBfYSwgX2I7IHJldHVybiAoX2IgPSAoX2EgPSBzZWxlY3RSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmdldElucHV0KSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuY2FsbChfYSk7IH0sXG4gICAgICAgICAgICBnZXRPdmVybGF5OiAoKSA9PiB7IHZhciBfYSwgX2I7IHJldHVybiAoX2IgPSAoX2EgPSBzZWxlY3RSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmdldE92ZXJsYXkpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5jYWxsKF9hKTsgfSxcbiAgICAgICAgICAgIGdldEZvY3VzSW5wdXQ6ICgpID0+IHsgdmFyIF9hLCBfYjsgcmV0dXJuIChfYiA9IChfYSA9IHNlbGVjdFJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZ2V0Rm9jdXNJbnB1dCkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmNhbGwoX2EpOyB9LFxuICAgICAgICAgICAgZ2V0VmlydHVhbFNjcm9sbGVyOiAoKSA9PiB7IHZhciBfYSwgX2I7IHJldHVybiAoX2IgPSAoX2EgPSBzZWxlY3RSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmdldFZpcnR1YWxTY3JvbGxlcikgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmNhbGwoX2EpOyB9LFxuICAgICAgICB9KTtcbiAgICB9LCBbbXVsdGlwbGVdKTtcbiAgICBjb25zdCBoYW5kbGVDaGFuZ2UgPSB1c2VFdmVudENhbGxiYWNrKChlKSA9PiB7XG4gICAgICAgIGNvbnN0IGVtaXRDaGFuZ2UgPSBvbkNoYW5nZTtcbiAgICAgICAgc2V0U2VsZWN0ZWQoZS52YWx1ZSk7XG4gICAgICAgIGVtaXRDaGFuZ2UgPT09IG51bGwgfHwgZW1pdENoYW5nZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZW1pdENoYW5nZShlKTtcbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVIaWRlID0gdXNlRXZlbnRDYWxsYmFjaygoKSA9PiB7XG4gICAgICAgIHNldElzT3BlbihmYWxzZSk7XG4gICAgICAgIG9uSGlkZSA9PT0gbnVsbCB8fCBvbkhpZGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uSGlkZSgpO1xuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZVNob3cgPSB1c2VFdmVudENhbGxiYWNrKCgpID0+IHtcbiAgICAgICAgc2V0SXNPcGVuKHRydWUpO1xuICAgICAgICBvblNob3cgPT09IG51bGwgfHwgb25TaG93ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvblNob3coKTtcbiAgICAgICAgaWYgKCFyZWZyZXNoQWZ0ZXJTaG93KVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHJlZnJlc2hET00oKSwgMCk7XG4gICAgfSk7XG4gICAgY29uc3QgaGFuZGxlU2Nyb2xsID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgICBkZWJvdW5jZWRIYW5kbGVTY3JvbGwuY2FuY2VsKCk7XG4gICAgICAgIHNldElzU2Nyb2xsaW5nKHRydWUpO1xuICAgICAgICBkZWJvdW5jZWRIYW5kbGVTY3JvbGwoKTtcbiAgICB9LCBbZGVib3VuY2VkSGFuZGxlU2Nyb2xsXSk7XG4gICAgcmV0dXJuIChfanN4KFNlbGVjdFdyYXBwZXIsIHsgbGFiZWw6IGxhYmVsLCBtZXNzYWdlOiBtZXNzYWdlLCByZXF1aXJlZDogcmVxdWlyZWQsIHByZWZpeENsczogcHJlZml4Q2xzLCB3cmFwcGVyQ2xzOiB3cmFwcGVyQ2xzLCBsYWJlbENsczogbGFiZWxDbHMsIG1lc3NhZ2VDbHM6IG1lc3NhZ2VDbHMsIHN1Y2Nlc3M6IHN1Y2Nlc3MsIGludmFsaWQ6IGludmFsaWQsIGRpc2FibGVkOiBkaXNhYmxlZCwgbG9hZGluZzogbG9hZGluZywgY2hpbGRyZW46IF9qc3goU2VsZWN0Q29tcG9uZW50LCBPYmplY3QuYXNzaWduKHt9LCBmaWx0ZXJJY29uUHJvcHMsIHsgaWQ6IGlkLCByZWY6IHNlbGVjdFJlZiwgbmFtZTogbmFtZSwgbG9hZGluZzogbG9hZGluZywgZmlsdGVyUGxhY2Vob2xkZXI6IEZJTFRFUl9QTEFDRUhPTERFUiwgcmVxdWlyZWQ6IHJlcXVpcmVkLCBkaXNhYmxlZDogZGlzYWJsZWQsIGludmFsaWQ6IGludmFsaWQsIG9wdGlvbnM6IG9wdGlvbnMsIHBsYWNlaG9sZGVyOiBwbGFjZWhvbGRlciwgdmFsdWU6IHNlbGVjdGVkID09IG51bGwgPyB1bmRlZmluZWQgOiBzZWxlY3RlZCwgY2xhc3NOYW1lOiBzZWxlY3RDbHMsIGl0ZW1UZW1wbGF0ZTogKG9wdGlvbikgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBfanN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygncGFuZWwtaXRlbScpLCBvbkNsaWNrOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW11bHRpcGxlICYmIHVuc2VsZWN0YWJsZSA9PT0gVU5TRUxFQ1RBQkxFX09OICYmIG9wdGlvbi52YWx1ZSA9PT0gc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX2EgPSBzZWxlY3RSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNsZWFyKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sIGNoaWxkcmVuOiBbX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygncGFuZWwtaXRlbS1sYWJlbCcpLCBjaGlsZHJlbjogaXRlbVRlbXBsYXRlID8gaXRlbVRlbXBsYXRlKG9wdGlvbikgOiBvcHRpb24ubGFiZWwgfSksIF9qc3goSWNvbnMsIHsgbmFtZTogJ2NoZWNrJywgc2l6ZTogSUNPTl9TSVpFX1NNLCBjb2xvcjogQ09MT1JfUFJJTUFSWV9CTFVFIH0pXSB9KTtcbiAgICAgICAgICAgIH0sIGxvYWRpbmdJY29uOiBfanN4KFNwaW5uZXIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdsb2FkaW5nLWljb24nKSwgc3Ryb2tlV2lkdGg6IFNQSU5ORVJfU1RST0tFX1dJRFRIIH0pLCBwYW5lbENsYXNzTmFtZTogY2xhc3NlcygncGFuZWwnLCBqb2luQ2xzKHBhbmVsQ2xhc3NOYW1lLCBpc0hvdmVyICYmIGNsYXNzZXMoJ3BhbmVsLWhvdmVyJyksIGlzU2Nyb2xsaW5nICYmIGNsYXNzZXMoJ3BhbmVsLXNjcm9sbGluZycpLCByZXN0LmFwcGVuZFRvID09PSAnc2VsZicgJiYgY2xhc3NlcygncGFuZWwtYXBwZW5kLXNlbGYnKSkpLCBvbkNoYW5nZTogaGFuZGxlQ2hhbmdlLCBvbkhpZGU6IGhhbmRsZUhpZGUsIG9uU2hvdzogaGFuZGxlU2hvdywgZHJvcGRvd25JY29uOiAoKSA9PiBfanN4KEljb25zLCB7IG5hbWU6ICdjaGV2cm9uRG93bicsIGNvbG9yOiBDT0xPUl9QUklNQVJZX0JMQUNLLCBzaXplOiBJQ09OX1NJWkVfTUQgfSksIHB0OiB7XG4gICAgICAgICAgICAgICAgd3JhcHBlcjoge1xuICAgICAgICAgICAgICAgICAgICBvblNjcm9sbDogaGFuZGxlU2Nyb2xsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBwYW5lbDoge1xuICAgICAgICAgICAgICAgICAgICBvbk1vdXNlRW50ZXI6ICgpID0+IHNldElzSG92ZXIodHJ1ZSksXG4gICAgICAgICAgICAgICAgICAgIG9uTW91c2VMZWF2ZTogKCkgPT4gc2V0SXNIb3ZlcihmYWxzZSksXG4gICAgICAgICAgICAgICAgICAgIG9uVG91Y2hTdGFydDogKCkgPT4gc2V0SXNIb3Zlcih0cnVlKSxcbiAgICAgICAgICAgICAgICAgICAgb25Ub3VjaEVuZDogKCkgPT4gc2V0SXNIb3ZlcihmYWxzZSksXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSB9KSkgfSkpO1xufTtcblNlbGVjdC5DdXN0b21Ecm9wZG93biA9IEN1c3RvbURyb3Bkb3duO1xuZXhwb3J0IGRlZmF1bHQgbWVtbyhTZWxlY3QpOyIsbnVsbF0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
|