@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 @@ var __rest = this && this.__rest || function (s, e) {
|
|
|
9
9
|
};
|
|
10
10
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
11
11
|
import { memo, useRef, useMemo, useState, useEffect, useCallback, useImperativeHandle } from 'react';
|
|
12
|
-
import isEqual from 'lodash.isequal';
|
|
13
12
|
import debounce from 'lodash.debounce';
|
|
14
13
|
import { Dropdown } from 'primereact/dropdown';
|
|
15
14
|
import { MultiSelect } from 'primereact/multiselect';
|
|
16
15
|
import { Skeleton } from 'primereact/skeleton';
|
|
17
16
|
import { default as classnames, joinCls } from '../../utils/classnames';
|
|
17
|
+
import useControlledState from '../useControlledState';
|
|
18
|
+
import useEventCallback from '../useEventCallback';
|
|
18
19
|
import { Icons } from '../Icons';
|
|
19
20
|
import { Spinner } from '../Spinner';
|
|
21
|
+
import { DEFAULT_PREFIX_CLS, DEFAULT_SIZE, DEFAULT_PLACEHOLDER, DEFAULT_CLASSNAME, FILTER_PLACEHOLDER, DEBOUNCE_SCROLL_DELAY, SPINNER_STROKE_WIDTH, SKELETON_LABEL_WIDTH, SKELETON_LABEL_HEIGHT, UNSELECTABLE_ON, DATA_ATTR_SELECTOR, COLOR_PRIMARY_BLACK, COLOR_PRIMARY_BLUE, COLOR_NEGATIVE, COLOR_WHITE, ICON_SIZE_XS, ICON_SIZE_SM, ICON_SIZE_MD } from './constants';
|
|
20
22
|
var SelectWrapper = /*#__PURE__*/memo(function (props) {
|
|
21
23
|
var label = props.label,
|
|
22
24
|
message = props.message,
|
|
@@ -34,8 +36,8 @@ var SelectWrapper = /*#__PURE__*/memo(function (props) {
|
|
|
34
36
|
return _jsxs("div", {
|
|
35
37
|
className: classes('wrapper', wrapperCls),
|
|
36
38
|
children: [label ? loading ? _jsx(Skeleton, {
|
|
37
|
-
width:
|
|
38
|
-
height:
|
|
39
|
+
width: SKELETON_LABEL_WIDTH,
|
|
40
|
+
height: SKELETON_LABEL_HEIGHT,
|
|
39
41
|
className: classes('label-loading')
|
|
40
42
|
}) : _jsx("span", {
|
|
41
43
|
className: classes('label', joinCls(required && classes('label-required'), labelCls)),
|
|
@@ -53,20 +55,20 @@ var CustomDropdown = function CustomDropdown(props) {
|
|
|
53
55
|
message = props.message,
|
|
54
56
|
required = props.required,
|
|
55
57
|
_props$prefixCls = props.prefixCls,
|
|
56
|
-
prefixCls = _props$prefixCls === void 0 ?
|
|
58
|
+
prefixCls = _props$prefixCls === void 0 ? DEFAULT_PREFIX_CLS : _props$prefixCls,
|
|
57
59
|
wrapperCls = props.wrapperCls,
|
|
58
60
|
labelCls = props.labelCls,
|
|
59
61
|
messageCls = props.messageCls,
|
|
60
62
|
_props$size = props.size,
|
|
61
|
-
size = _props$size === void 0 ?
|
|
63
|
+
size = _props$size === void 0 ? DEFAULT_SIZE : _props$size,
|
|
62
64
|
success = props.success,
|
|
63
65
|
invalid = props.invalid,
|
|
64
66
|
disabled = props.disabled,
|
|
65
67
|
editable = props.editable,
|
|
66
68
|
_props$placeholder = props.placeholder,
|
|
67
|
-
placeholder = _props$placeholder === void 0 ?
|
|
69
|
+
placeholder = _props$placeholder === void 0 ? DEFAULT_PLACEHOLDER : _props$placeholder,
|
|
68
70
|
_props$className = props.className,
|
|
69
|
-
className = _props$className === void 0 ?
|
|
71
|
+
className = _props$className === void 0 ? DEFAULT_CLASSNAME : _props$className,
|
|
70
72
|
selectedTemplate = props.selectedTemplate,
|
|
71
73
|
tailTemplate = props.tailTemplate,
|
|
72
74
|
_onClick = props.onClick,
|
|
@@ -100,38 +102,38 @@ var CustomDropdown = function CustomDropdown(props) {
|
|
|
100
102
|
return selectRef.current;
|
|
101
103
|
}
|
|
102
104
|
};
|
|
103
|
-
}, [
|
|
105
|
+
}, []);
|
|
104
106
|
useEffect(function () {
|
|
105
107
|
dataIdRef.current = dataId;
|
|
106
108
|
}, [dataId]);
|
|
109
|
+
var handleFocus = useEventCallback(function () {
|
|
110
|
+
return onFocus === null || onFocus === void 0 ? void 0 : onFocus();
|
|
111
|
+
});
|
|
112
|
+
var handleBlur = useEventCallback(function () {
|
|
113
|
+
return onBlur === null || onBlur === void 0 ? void 0 : onBlur();
|
|
114
|
+
});
|
|
107
115
|
useEffect(function () {
|
|
108
116
|
if (isFocus !== lastFocusRef.current) {
|
|
109
117
|
lastFocusRef.current = isFocus;
|
|
110
118
|
if (isFocus) {
|
|
111
|
-
|
|
119
|
+
handleFocus();
|
|
112
120
|
} else {
|
|
113
|
-
|
|
121
|
+
handleBlur();
|
|
114
122
|
}
|
|
115
123
|
}
|
|
116
|
-
}, [isFocus
|
|
124
|
+
}, [isFocus]);
|
|
117
125
|
useEffect(function () {
|
|
118
|
-
var _findCustomDropdownDataId = function findCustomDropdownDataId(target) {
|
|
119
|
-
var _a;
|
|
120
|
-
if (!dataIdRef.current) return false;
|
|
121
|
-
if (((_a = target === null || target === void 0 ? void 0 : target.dataset) === null || _a === void 0 ? void 0 : _a.selectCustomDropdownId) === dataIdRef.current) return true;
|
|
122
|
-
if (target === document.body || target === document) return false;
|
|
123
|
-
var parent = target.parentNode || target.parentElement;
|
|
124
|
-
if (!parent) return false;
|
|
125
|
-
return _findCustomDropdownDataId(parent);
|
|
126
|
-
};
|
|
127
126
|
var removeFocus = function removeFocus(e) {
|
|
128
127
|
if (isClickInside.current) {
|
|
129
128
|
isClickInside.current = false;
|
|
130
129
|
return;
|
|
131
130
|
}
|
|
132
131
|
setIsFocus(function (prev) {
|
|
132
|
+
var _a;
|
|
133
133
|
if (!prev) return false;
|
|
134
|
-
|
|
134
|
+
if (!dataIdRef.current) return false;
|
|
135
|
+
var target = e.target;
|
|
136
|
+
return !!((_a = target === null || target === void 0 ? void 0 : target.closest) === null || _a === void 0 ? void 0 : _a.call(target, "[".concat(DATA_ATTR_SELECTOR, "=\"").concat(dataIdRef.current, "\"]")));
|
|
135
137
|
});
|
|
136
138
|
};
|
|
137
139
|
document.addEventListener('click', removeFocus);
|
|
@@ -180,15 +182,14 @@ var CustomDropdown = function CustomDropdown(props) {
|
|
|
180
182
|
children: placeholder
|
|
181
183
|
}), editable ? null : typeof tailTemplate === 'function' ? tailTemplate(isFocus) : _jsx(Icons, {
|
|
182
184
|
name: 'chevronDown',
|
|
183
|
-
color:
|
|
184
|
-
size:
|
|
185
|
+
color: COLOR_PRIMARY_BLACK,
|
|
186
|
+
size: ICON_SIZE_MD,
|
|
185
187
|
wrapperCls: classes('custom-tail', isFocus ? classes('custom-tail-focus') : '')
|
|
186
188
|
})]
|
|
187
189
|
})
|
|
188
190
|
});
|
|
189
191
|
};
|
|
190
192
|
export var Select = function Select(props) {
|
|
191
|
-
var _a;
|
|
192
193
|
var id = props.id,
|
|
193
194
|
ref = props.ref,
|
|
194
195
|
name = props.name,
|
|
@@ -196,13 +197,13 @@ export var Select = function Select(props) {
|
|
|
196
197
|
message = props.message,
|
|
197
198
|
required = props.required,
|
|
198
199
|
_props$prefixCls2 = props.prefixCls,
|
|
199
|
-
prefixCls = _props$prefixCls2 === void 0 ?
|
|
200
|
+
prefixCls = _props$prefixCls2 === void 0 ? DEFAULT_PREFIX_CLS : _props$prefixCls2,
|
|
200
201
|
wrapperCls = props.wrapperCls,
|
|
201
202
|
labelCls = props.labelCls,
|
|
202
203
|
messageCls = props.messageCls,
|
|
203
204
|
value = props.value,
|
|
204
205
|
_props$size2 = props.size,
|
|
205
|
-
size = _props$size2 === void 0 ?
|
|
206
|
+
size = _props$size2 === void 0 ? DEFAULT_SIZE : _props$size2,
|
|
206
207
|
success = props.success,
|
|
207
208
|
_props$refreshAfterSh = props.refreshAfterShow,
|
|
208
209
|
refreshAfterShow = _props$refreshAfterSh === void 0 ? true : _props$refreshAfterSh,
|
|
@@ -210,43 +211,49 @@ export var Select = function Select(props) {
|
|
|
210
211
|
disabled = props.disabled,
|
|
211
212
|
placeholder = props.placeholder,
|
|
212
213
|
_props$className2 = props.className,
|
|
213
|
-
className = _props$className2 === void 0 ?
|
|
214
|
+
className = _props$className2 === void 0 ? DEFAULT_CLASSNAME : _props$className2,
|
|
214
215
|
multiple = props.multiple,
|
|
215
216
|
options = props.options,
|
|
216
217
|
panelClassName = props.panelClassName,
|
|
217
218
|
defaultValue = props.defaultValue,
|
|
218
219
|
_itemTemplate = props.itemTemplate,
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
220
|
+
onChange = props.onChange,
|
|
221
|
+
onHide = props.onHide,
|
|
222
|
+
onShow = props.onShow,
|
|
222
223
|
unselectable = props.unselectable,
|
|
223
224
|
loading = props.loading,
|
|
224
225
|
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"]);
|
|
225
226
|
var classes = classnames(prefixCls);
|
|
226
|
-
var
|
|
227
|
+
var _useControlledState = useControlledState(defaultValue !== null && defaultValue !== void 0 ? defaultValue : null, value),
|
|
228
|
+
_useControlledState2 = _slicedToArray(_useControlledState, 2),
|
|
229
|
+
selected = _useControlledState2[0],
|
|
230
|
+
setSelected = _useControlledState2[1];
|
|
231
|
+
var _useState5 = useState(false),
|
|
227
232
|
_useState6 = _slicedToArray(_useState5, 2),
|
|
228
|
-
|
|
229
|
-
|
|
233
|
+
isOpen = _useState6[0],
|
|
234
|
+
setIsOpen = _useState6[1];
|
|
230
235
|
var _useState7 = useState(false),
|
|
231
236
|
_useState8 = _slicedToArray(_useState7, 2),
|
|
232
|
-
|
|
233
|
-
|
|
237
|
+
isHover = _useState8[0],
|
|
238
|
+
setIsHover = _useState8[1];
|
|
234
239
|
var _useState9 = useState(false),
|
|
235
240
|
_useState10 = _slicedToArray(_useState9, 2),
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
var _useState11 = useState(false),
|
|
239
|
-
_useState12 = _slicedToArray(_useState11, 2),
|
|
240
|
-
isScrolling = _useState12[0],
|
|
241
|
-
setIsScrolling = _useState12[1];
|
|
241
|
+
isScrolling = _useState10[0],
|
|
242
|
+
setIsScrolling = _useState10[1];
|
|
242
243
|
var selectRef = useRef(null);
|
|
243
|
-
var _ref = useRef(null);
|
|
244
244
|
var selectCls = useMemo(function () {
|
|
245
245
|
return classes(void 0, 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));
|
|
246
246
|
}, [size, isOpen, success, selected, invalid, disabled, loading, className]);
|
|
247
|
-
var debouncedHandleScroll =
|
|
248
|
-
return
|
|
249
|
-
|
|
247
|
+
var debouncedHandleScroll = useMemo(function () {
|
|
248
|
+
return debounce(function () {
|
|
249
|
+
return setIsScrolling(false);
|
|
250
|
+
}, DEBOUNCE_SCROLL_DELAY);
|
|
251
|
+
}, []);
|
|
252
|
+
useEffect(function () {
|
|
253
|
+
return function () {
|
|
254
|
+
return debouncedHandleScroll.cancel();
|
|
255
|
+
};
|
|
256
|
+
}, [debouncedHandleScroll]);
|
|
250
257
|
var refreshDOM = useCallback(function () {
|
|
251
258
|
var _a, _b;
|
|
252
259
|
var ele = (_b = (_a = selectRef.current) === null || _a === void 0 ? void 0 : _a.getOverlay) === null || _b === void 0 ? void 0 : _b.call(_a);
|
|
@@ -259,14 +266,31 @@ export var Select = function Select(props) {
|
|
|
259
266
|
}, 0);
|
|
260
267
|
}
|
|
261
268
|
}, []);
|
|
269
|
+
var filterIconProps = useMemo(function () {
|
|
270
|
+
var _a = rest,
|
|
271
|
+
filterIcon = _a.filterIcon,
|
|
272
|
+
filter = _a.filter,
|
|
273
|
+
others = __rest(_a, ["filterIcon", "filter"]);
|
|
274
|
+
var extraProps = filter ? {
|
|
275
|
+
filterIcon: filterIcon !== null && filterIcon !== void 0 ? filterIcon : _jsx(Icons, {
|
|
276
|
+
name: 'search',
|
|
277
|
+
size: ICON_SIZE_MD,
|
|
278
|
+
color: COLOR_PRIMARY_BLACK,
|
|
279
|
+
wrapperCls: classes('filter-icon')
|
|
280
|
+
})
|
|
281
|
+
} : null;
|
|
282
|
+
return Object.assign(Object.assign(Object.assign({}, others), {
|
|
283
|
+
filter: filter
|
|
284
|
+
}), extraProps || {});
|
|
285
|
+
}, [rest.filter, rest.filterIcon]);
|
|
262
286
|
var SelectComponent = useCallback(function (props) {
|
|
263
287
|
return multiple ? _jsx(MultiSelect, Object.assign({
|
|
264
288
|
unselectable: unselectable,
|
|
265
289
|
showSelectAll: false,
|
|
266
290
|
checkboxIcon: _jsx(Icons, {
|
|
267
291
|
name: 'check',
|
|
268
|
-
size:
|
|
269
|
-
color:
|
|
292
|
+
size: ICON_SIZE_XS,
|
|
293
|
+
color: COLOR_WHITE
|
|
270
294
|
}),
|
|
271
295
|
removeIcon: function removeIcon(props) {
|
|
272
296
|
var _props$iconProps = props.iconProps,
|
|
@@ -275,8 +299,8 @@ export var Select = function Select(props) {
|
|
|
275
299
|
tabIndex = _props$iconProps.tabIndex;
|
|
276
300
|
return _jsx(Icons, {
|
|
277
301
|
name: 'close',
|
|
278
|
-
size:
|
|
279
|
-
color:
|
|
302
|
+
size: ICON_SIZE_SM,
|
|
303
|
+
color: COLOR_PRIMARY_BLACK,
|
|
280
304
|
tabIndex: tabIndex,
|
|
281
305
|
wrapperCls: classes('token-remove-icon'),
|
|
282
306
|
onClick: onClick,
|
|
@@ -304,8 +328,8 @@ export var Select = function Select(props) {
|
|
|
304
328
|
},
|
|
305
329
|
children: [_jsx(Icons, {
|
|
306
330
|
name: 'close',
|
|
307
|
-
size:
|
|
308
|
-
color:
|
|
331
|
+
size: ICON_SIZE_SM,
|
|
332
|
+
color: COLOR_NEGATIVE,
|
|
309
333
|
wrapperCls: classes('panel-header-info-clear-icon')
|
|
310
334
|
}), "Clear all"]
|
|
311
335
|
})]
|
|
@@ -316,19 +340,14 @@ export var Select = function Select(props) {
|
|
|
316
340
|
collapseIcon: multiple ? void 0 : function () {
|
|
317
341
|
return _jsx(Icons, {
|
|
318
342
|
name: 'chevronUp',
|
|
319
|
-
color:
|
|
320
|
-
size:
|
|
343
|
+
color: COLOR_PRIMARY_BLACK,
|
|
344
|
+
size: ICON_SIZE_MD
|
|
321
345
|
});
|
|
322
346
|
}
|
|
323
347
|
}, props));
|
|
324
348
|
}, [multiple]);
|
|
325
|
-
useEffect(function () {
|
|
326
|
-
if (value !== undefined && !isEqual(selected, value)) {
|
|
327
|
-
setSelected(value);
|
|
328
|
-
}
|
|
329
|
-
}, [value]);
|
|
330
349
|
// @ts-expect-error
|
|
331
|
-
useImperativeHandle(ref
|
|
350
|
+
useImperativeHandle(ref, function () {
|
|
332
351
|
var _a, _b;
|
|
333
352
|
return multiple ? {
|
|
334
353
|
props: (_a = selectRef.current) === null || _a === void 0 ? void 0 : _a.props,
|
|
@@ -396,6 +415,28 @@ export var Select = function Select(props) {
|
|
|
396
415
|
}
|
|
397
416
|
};
|
|
398
417
|
}, [multiple]);
|
|
418
|
+
var handleChange = useEventCallback(function (e) {
|
|
419
|
+
var emitChange = onChange;
|
|
420
|
+
setSelected(e.value);
|
|
421
|
+
emitChange === null || emitChange === void 0 ? void 0 : emitChange(e);
|
|
422
|
+
});
|
|
423
|
+
var handleHide = useEventCallback(function () {
|
|
424
|
+
setIsOpen(false);
|
|
425
|
+
onHide === null || onHide === void 0 ? void 0 : onHide();
|
|
426
|
+
});
|
|
427
|
+
var handleShow = useEventCallback(function () {
|
|
428
|
+
setIsOpen(true);
|
|
429
|
+
onShow === null || onShow === void 0 ? void 0 : onShow();
|
|
430
|
+
if (!refreshAfterShow) return;
|
|
431
|
+
setTimeout(function () {
|
|
432
|
+
return refreshDOM();
|
|
433
|
+
}, 0);
|
|
434
|
+
});
|
|
435
|
+
var handleScroll = useCallback(function () {
|
|
436
|
+
debouncedHandleScroll.cancel();
|
|
437
|
+
setIsScrolling(true);
|
|
438
|
+
debouncedHandleScroll();
|
|
439
|
+
}, [debouncedHandleScroll]);
|
|
399
440
|
return _jsx(SelectWrapper, {
|
|
400
441
|
label: label,
|
|
401
442
|
message: message,
|
|
@@ -408,28 +449,12 @@ export var Select = function Select(props) {
|
|
|
408
449
|
invalid: invalid,
|
|
409
450
|
disabled: disabled,
|
|
410
451
|
loading: loading,
|
|
411
|
-
children: _jsx(SelectComponent, Object.assign({},
|
|
412
|
-
var _a = rest,
|
|
413
|
-
filterIcon = _a.filterIcon,
|
|
414
|
-
filter = _a.filter,
|
|
415
|
-
others = __rest(_a, ["filterIcon", "filter"]);
|
|
416
|
-
var extraProps = filter ? {
|
|
417
|
-
filterIcon: filterIcon !== null && filterIcon !== void 0 ? filterIcon : _jsx(Icons, {
|
|
418
|
-
name: 'search',
|
|
419
|
-
size: 20,
|
|
420
|
-
color: '#131313',
|
|
421
|
-
wrapperCls: classes('filter-icon')
|
|
422
|
-
})
|
|
423
|
-
} : null;
|
|
424
|
-
return Object.assign(Object.assign(Object.assign({}, others), {
|
|
425
|
-
filter: filter
|
|
426
|
-
}), extraProps || {});
|
|
427
|
-
}(), {
|
|
452
|
+
children: _jsx(SelectComponent, Object.assign({}, filterIconProps, {
|
|
428
453
|
id: id,
|
|
429
454
|
ref: selectRef,
|
|
430
455
|
name: name,
|
|
431
456
|
loading: loading,
|
|
432
|
-
filterPlaceholder:
|
|
457
|
+
filterPlaceholder: FILTER_PLACEHOLDER,
|
|
433
458
|
required: required,
|
|
434
459
|
disabled: disabled,
|
|
435
460
|
invalid: invalid,
|
|
@@ -442,7 +467,7 @@ export var Select = function Select(props) {
|
|
|
442
467
|
className: classes('panel-item'),
|
|
443
468
|
onClick: function onClick() {
|
|
444
469
|
var _a;
|
|
445
|
-
if (!multiple && unselectable ===
|
|
470
|
+
if (!multiple && unselectable === UNSELECTABLE_ON && option.value === selected) {
|
|
446
471
|
(_a = selectRef.current) === null || _a === void 0 ? void 0 : _a.clear();
|
|
447
472
|
}
|
|
448
473
|
},
|
|
@@ -451,47 +476,29 @@ export var Select = function Select(props) {
|
|
|
451
476
|
children: _itemTemplate ? _itemTemplate(option) : option.label
|
|
452
477
|
}), _jsx(Icons, {
|
|
453
478
|
name: 'check',
|
|
454
|
-
size:
|
|
455
|
-
color:
|
|
479
|
+
size: ICON_SIZE_SM,
|
|
480
|
+
color: COLOR_PRIMARY_BLUE
|
|
456
481
|
})]
|
|
457
482
|
});
|
|
458
483
|
},
|
|
459
484
|
loadingIcon: _jsx(Spinner, {
|
|
460
485
|
className: classes('loading-icon'),
|
|
461
|
-
strokeWidth:
|
|
486
|
+
strokeWidth: SPINNER_STROKE_WIDTH
|
|
462
487
|
}),
|
|
463
488
|
panelClassName: classes('panel', joinCls(panelClassName, isHover && classes('panel-hover'), isScrolling && classes('panel-scrolling'), rest.appendTo === 'self' && classes('panel-append-self'))),
|
|
464
|
-
onChange:
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
_onChange === null || _onChange === void 0 ? void 0 : _onChange(e);
|
|
468
|
-
},
|
|
469
|
-
onHide: function onHide() {
|
|
470
|
-
setIsOpen(false);
|
|
471
|
-
_onHide === null || _onHide === void 0 ? void 0 : _onHide();
|
|
472
|
-
},
|
|
473
|
-
onShow: function onShow() {
|
|
474
|
-
setIsOpen(true);
|
|
475
|
-
_onShow === null || _onShow === void 0 ? void 0 : _onShow();
|
|
476
|
-
if (!refreshAfterShow) return;
|
|
477
|
-
setTimeout(function () {
|
|
478
|
-
return refreshDOM();
|
|
479
|
-
}, 0);
|
|
480
|
-
},
|
|
489
|
+
onChange: handleChange,
|
|
490
|
+
onHide: handleHide,
|
|
491
|
+
onShow: handleShow,
|
|
481
492
|
dropdownIcon: function dropdownIcon() {
|
|
482
493
|
return _jsx(Icons, {
|
|
483
494
|
name: 'chevronDown',
|
|
484
|
-
color:
|
|
485
|
-
size:
|
|
495
|
+
color: COLOR_PRIMARY_BLACK,
|
|
496
|
+
size: ICON_SIZE_MD
|
|
486
497
|
});
|
|
487
498
|
},
|
|
488
499
|
pt: {
|
|
489
500
|
wrapper: {
|
|
490
|
-
onScroll:
|
|
491
|
-
debouncedHandleScroll.cancel();
|
|
492
|
-
setIsScrolling(true);
|
|
493
|
-
debouncedHandleScroll();
|
|
494
|
-
}
|
|
501
|
+
onScroll: handleScroll
|
|
495
502
|
},
|
|
496
503
|
panel: {
|
|
497
504
|
onMouseEnter: function onMouseEnter() {
|
|
@@ -513,4 +520,4 @@ export var Select = function Select(props) {
|
|
|
513
520
|
};
|
|
514
521
|
Select.CustomDropdown = CustomDropdown;
|
|
515
522
|
export default /*#__PURE__*/memo(Select);
|
|
516
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvU2VsZWN0L1NlbGVjdC5qcyIsImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvU2VsZWN0L1NlbGVjdC50c3giXSwibmFtZXMiOlsiX19yZXN0IiwicyIsImUiLCJ0IiwicCIsIk9iamVjdCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImluZGV4T2YiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJpIiwibGVuZ3RoIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwibWVtbyIsInVzZVJlZiIsInVzZU1lbW8iLCJ1c2VTdGF0ZSIsInVzZUVmZmVjdCIsInVzZUNhbGxiYWNrIiwidXNlSW1wZXJhdGl2ZUhhbmRsZSIsImlzRXF1YWwiLCJkZWJvdW5jZSIsIkRyb3Bkb3duIiwiTXVsdGlTZWxlY3QiLCJTa2VsZXRvbiIsImRlZmF1bHQiLCJjbGFzc25hbWVzIiwiam9pbkNscyIsIkljb25zIiwiU3Bpbm5lciIsIlNlbGVjdFdyYXBwZXIiLCJwcm9wcyIsImxhYmVsIiwibWVzc2FnZSIsInJlcXVpcmVkIiwicHJlZml4Q2xzIiwid3JhcHBlckNscyIsImxhYmVsQ2xzIiwibWVzc2FnZUNscyIsInN1Y2Nlc3MiLCJpbnZhbGlkIiwiZGlzYWJsZWQiLCJsb2FkaW5nIiwiY2hpbGRyZW4iLCJjbGFzc2VzIiwiY2xhc3NOYW1lIiwid2lkdGgiLCJoZWlnaHQiLCJDdXN0b21Ecm9wZG93biIsInJlZiIsImRhdGFJZCIsIl9wcm9wcyRwcmVmaXhDbHMiLCJfcHJvcHMkc2l6ZSIsInNpemUiLCJlZGl0YWJsZSIsIl9wcm9wcyRwbGFjZWhvbGRlciIsInBsYWNlaG9sZGVyIiwiX3Byb3BzJGNsYXNzTmFtZSIsInNlbGVjdGVkVGVtcGxhdGUiLCJ0YWlsVGVtcGxhdGUiLCJvbkNsaWNrIiwib25Gb2N1cyIsIm9uQmx1ciIsImlzQ2xpY2tJbnNpZGUiLCJkYXRhSWRSZWYiLCJsYXN0Rm9jdXNSZWYiLCJzZWxlY3RSZWYiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJ2YWx1ZSIsInNldFZhbHVlIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJpc0ZvY3VzIiwic2V0SXNGb2N1cyIsInNlbGVjdENscyIsImZvY3VzIiwiYmx1ciIsImdldERPTU5vZGUiLCJjdXJyZW50IiwiZmluZEN1c3RvbURyb3Bkb3duRGF0YUlkIiwidGFyZ2V0IiwiX2EiLCJkYXRhc2V0Iiwic2VsZWN0Q3VzdG9tRHJvcGRvd25JZCIsImRvY3VtZW50IiwiYm9keSIsInBhcmVudCIsInBhcmVudE5vZGUiLCJwYXJlbnRFbGVtZW50IiwicmVtb3ZlRm9jdXMiLCJwcmV2IiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJjb250ZW50RWRpdGFibGUiLCJhdXRvRm9jdXMiLCJvbklucHV0IiwidmFsIiwiY3VycmVudFRhcmdldCIsImlubmVyVGV4dCIsIm5hbWUiLCJjb2xvciIsIlNlbGVjdCIsImlkIiwiX3Byb3BzJHByZWZpeENsczIiLCJfcHJvcHMkc2l6ZTIiLCJfcHJvcHMkcmVmcmVzaEFmdGVyU2giLCJyZWZyZXNoQWZ0ZXJTaG93IiwiX3Byb3BzJGNsYXNzTmFtZTIiLCJtdWx0aXBsZSIsIm9wdGlvbnMiLCJwYW5lbENsYXNzTmFtZSIsImRlZmF1bHRWYWx1ZSIsIml0ZW1UZW1wbGF0ZSIsIm9uQ2hhbmdlIiwib25IaWRlIiwib25TaG93IiwidW5zZWxlY3RhYmxlIiwicmVzdCIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2Iiwic2VsZWN0ZWQiLCJzZXRTZWxlY3RlZCIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4IiwiaXNPcGVuIiwic2V0SXNPcGVuIiwiX3VzZVN0YXRlOSIsIl91c2VTdGF0ZTEwIiwiaXNIb3ZlciIsInNldElzSG92ZXIiLCJfdXNlU3RhdGUxMSIsIl91c2VTdGF0ZTEyIiwiaXNTY3JvbGxpbmciLCJzZXRJc1Njcm9sbGluZyIsIl9yZWYiLCJBcnJheSIsImlzQXJyYXkiLCJkZWJvdW5jZWRIYW5kbGVTY3JvbGwiLCJyZWZyZXNoRE9NIiwiX2IiLCJlbGUiLCJnZXRPdmVybGF5Iiwib3JpZ2luWkluZGV4Iiwic3R5bGUiLCJ6SW5kZXgiLCJ1bmRlZmluZWQiLCJjb25jYXQiLCJwYXJzZUludCIsInNldFRpbWVvdXQiLCJTZWxlY3RDb21wb25lbnQiLCJhc3NpZ24iLCJzaG93U2VsZWN0QWxsIiwiY2hlY2tib3hJY29uIiwicmVtb3ZlSWNvbiIsIl9wcm9wcyRpY29uUHJvcHMiLCJpY29uUHJvcHMiLCJvbktleURvd24iLCJ0YWJJbmRleCIsInBhbmVsSGVhZGVyVGVtcGxhdGUiLCJfYyIsIl9kIiwiX2UiLCJmaWx0ZXJFbGVtZW50Iiwic2VsZWN0ZWROdW0iLCJtZXRhRGF0YSIsInVwZGF0ZU1vZGVsIiwiY29sbGFwc2VJY29uIiwiaGlkZSIsInNob3ciLCJnZXRFbGVtZW50IiwiZ2V0SW5wdXQiLCJjbGVhciIsImdldEZvY3VzSW5wdXQiLCJnZXRWaXJ0dWFsU2Nyb2xsZXIiLCJmaWx0ZXJJY29uIiwiZmlsdGVyIiwib3RoZXJzIiwiZXh0cmFQcm9wcyIsImZpbHRlclBsYWNlaG9sZGVyIiwib3B0aW9uIiwibG9hZGluZ0ljb24iLCJzdHJva2VXaWR0aCIsImFwcGVuZFRvIiwiZHJvcGRvd25JY29uIiwicHQiLCJ3cmFwcGVyIiwib25TY3JvbGwiLCJjYW5jZWwiLCJwYW5lbCIsIm9uTW91c2VFbnRlciIsIm9uTW91c2VMZWF2ZSIsIm9uVG91Y2hTdGFydCIsIm9uVG91Y2hFbmQiXSwibWFwcGluZ3MiOiI7QUFBQSxJQUFJQSxNQUFNLEdBQUksSUFBSSxJQUFJLElBQUksQ0FBQ0EsTUFBTSxJQUFLLFVBQVVDLENBQUMsRUFBRUMsQ0FBQyxFQUFFO0VBQ2xELElBQUlDLENBQUMsR0FBRyxDQUFDLENBQUM7RUFDVixLQUFLLElBQUlDLENBQUMsSUFBSUgsQ0FBQyxFQUFFLElBQUlJLE1BQU0sQ0FBQ0MsU0FBUyxDQUFDQyxjQUFj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O0VBQ0QsQ0FBQSxDQUNZO0FBRXBCLENBQUM7QUFFRDVCLE1BQU0sQ0FBQ3ZELGNBQWMsR0FBR0EsY0FBYztBQUV0Qyw0QkFBZW5DLElBQUksQ0FBQzBGLE1BQU0sQ0FBQyIsImZpbGUiOiJjb21wb25lbnRzL1NlbGVjdC9TZWxlY3QuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19yZXN0ID0gKHRoaXMgJiYgdGhpcy5fX3Jlc3QpIHx8IGZ1bmN0aW9uIChzLCBlKSB7XG4gICAgdmFyIHQgPSB7fTtcbiAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMClcbiAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKVxuICAgICAgICBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpXG4gICAgICAgICAgICAgICAgdFtwW2ldXSA9IHNbcFtpXV07XG4gICAgICAgIH1cbiAgICByZXR1cm4gdDtcbn07XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCwganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgbWVtbywgdXNlUmVmLCB1c2VNZW1vLCB1c2VTdGF0ZSwgdXNlRWZmZWN0LCB1c2VDYWxsYmFjaywgdXNlSW1wZXJhdGl2ZUhhbmRsZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBpc0VxdWFsIGZyb20gJ2xvZGFzaC5pc2VxdWFsJztcbmltcG9ydCBkZWJvdW5jZSBmcm9tICdsb2Rhc2guZGVib3VuY2UnO1xuaW1wb3J0IHsgRHJvcGRvd24gfSBmcm9tICdwcmltZXJlYWN0L2Ryb3Bkb3duJztcbmltcG9ydCB7IE11bHRpU2VsZWN0IH0gZnJvbSAncHJpbWVyZWFjdC9tdWx0aXNlbGVjdCc7XG5pbXBvcnQgeyBTa2VsZXRvbiB9IGZyb20gJ3ByaW1lcmVhY3Qvc2tlbGV0b24nO1xuaW1wb3J0IHsgZGVmYXVsdCBhcyBjbGFzc25hbWVzLCBqb2luQ2xzIH0gZnJvbSAnLi4vLi4vdXRpbHMvY2xhc3NuYW1lcyc7XG5pbXBvcnQgeyBJY29ucyB9IGZyb20gJy4uL0ljb25zJztcbmltcG9ydCB7IFNwaW5uZXIgfSBmcm9tICcuLi9TcGlubmVyJztcbmNvbnN0IFNlbGVjdFdyYXBwZXIgPSBtZW1vKHByb3BzID0+IHtcbiAgICBjb25zdCB7IGxhYmVsLCBtZXNzYWdlLCByZXF1aXJlZCwgcHJlZml4Q2xzLCB3cmFwcGVyQ2xzLCBsYWJlbENscywgbWVzc2FnZUNscywgc3VjY2VzcywgaW52YWxpZCwgZGlzYWJsZWQsIGxvYWRpbmcsIGNoaWxkcmVuLCB9ID0gcHJvcHM7XG4gICAgY29uc3QgY2xhc3NlcyA9IGNsYXNzbmFtZXMocHJlZml4Q2xzKTtcbiAgICByZXR1cm4gX2pzeHMoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ3dyYXBwZXInLCB3cmFwcGVyQ2xzKSwgY2hpbGRyZW46IFtsYWJlbCA/XG4gICAgICAgICAgICAgICAgbG9hZGluZ1xuICAgICAgICAgICAgICAgICAgICA/IF9qc3goU2tlbGV0b24sIHsgd2lkdGg6ICc3MnB4JywgaGVpZ2h0OiAnMThweCcsIGNsYXNzTmFtZTogY2xhc3NlcygnbGFiZWwtbG9hZGluZycpIH0pXG4gICAgICAgICAgICAgICAgICAgIDogX2pzeChcInNwYW5cIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ2xhYmVsJywgam9pbkNscyhyZXF1aXJlZCAmJiBjbGFzc2VzKCdsYWJlbC1yZXF1aXJlZCcpLCBsYWJlbENscykpLCBjaGlsZHJlbjogbGFiZWwgfSlcbiAgICAgICAgICAgICAgICA6IG51bGwsIGNoaWxkcmVuLCBtZXNzYWdlICYmIF9qc3goXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdtZXNzYWdlJywgam9pbkNscyhzdWNjZXNzICYmIGNsYXNzZXMoJ21lc3NhZ2Utc3VjY2VzcycpLCBpbnZhbGlkICYmIGNsYXNzZXMoJ21lc3NhZ2UtZXJyb3InKSwgbWVzc2FnZUNscykpLCBjaGlsZHJlbjogbWVzc2FnZSB9KV0gfSk7XG59KTtcbmNvbnN0IEN1c3RvbURyb3Bkb3duID0gcHJvcHMgPT4ge1xuICAgIGNvbnN0IHsgcmVmLCBkYXRhSWQsIGxhYmVsLCBtZXNzYWdlLCByZXF1aXJlZCwgcHJlZml4Q2xzID0gJ3NlbGVjdCcsIHdyYXBwZXJDbHMsIGxhYmVsQ2xzLCBtZXNzYWdlQ2xzLCBzaXplID0gJ2xhcmdlJywgc3VjY2VzcywgaW52YWxpZCwgZGlzYWJsZWQsIGVkaXRhYmxlLCBwbGFjZWhvbGRlciA9ICcnLCBjbGFzc05hbWUgPSAnJywgc2VsZWN0ZWRUZW1wbGF0ZSwgdGFpbFRlbXBsYXRlLCBvbkNsaWNrLCBvbkZvY3VzLCBvbkJsdXIsIH0gPSBwcm9wcztcbiAgICBjb25zdCBjbGFzc2VzID0gY2xhc3NuYW1lcyhwcmVmaXhDbHMpO1xuICAgIGNvbnN0IGlzQ2xpY2tJbnNpZGUgPSB1c2VSZWYoZmFsc2UpO1xuICAgIGNvbnN0IGRhdGFJZFJlZiA9IHVzZVJlZihkYXRhSWQpO1xuICAgIGNvbnN0IGxhc3RGb2N1c1JlZiA9IHVzZVJlZihmYWxzZSk7XG4gICAgY29uc3Qgc2VsZWN0UmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IFt2YWx1ZSwgc2V0VmFsdWVdID0gdXNlU3RhdGUoJycpO1xuICAgIGNvbnN0IFtpc0ZvY3VzLCBzZXRJc0ZvY3VzXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBzZWxlY3RDbHMgPSB1c2VNZW1vKCgpID0+IGNsYXNzZXModm9pZCAwLCBqb2luQ2xzKGNsYXNzZXMoc2l6ZSksIGNsYXNzZXMoJ2N1c3RvbScpLCBpc0ZvY3VzICYmIGNsYXNzZXMoJ2ZvY3VzJyksIHN1Y2Nlc3MgJiYgY2xhc3Nlcygnc3VjY2VzcycpLCBpbnZhbGlkICYmIGNsYXNzZXMoJ2ludmFsaWQnKSwgZGlzYWJsZWQgJiYgY2xhc3NlcygnZGlzYWJsZWQnKSwgZWRpdGFibGUgJiYgY2xhc3NlcygnZWRpdGFibGUnKSwgY2xhc3NOYW1lKSksIFtzaXplLCBpc0ZvY3VzLCBzdWNjZXNzLCBpbnZhbGlkLCBkaXNhYmxlZCwgZWRpdGFibGUsIGNsYXNzTmFtZV0pO1xuICAgIHVzZUltcGVyYXRpdmVIYW5kbGUocmVmLCAoKSA9PiAoe1xuICAgICAgICBmb2N1czogKCkgPT4gc2V0SXNGb2N1cyh0cnVlKSxcbiAgICAgICAgYmx1cjogKCkgPT4gc2V0SXNGb2N1cyhmYWxzZSksXG4gICAgICAgIGdldERPTU5vZGU6ICgpID0+IHNlbGVjdFJlZi5jdXJyZW50XG4gICAgfSksIFtyZWZdKTtcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBkYXRhSWRSZWYuY3VycmVudCA9IGRhdGFJZDtcbiAgICB9LCBbZGF0YUlkXSk7XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKGlzRm9jdXMgIT09IGxhc3RGb2N1c1JlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICBsYXN0Rm9jdXNSZWYuY3VycmVudCA9IGlzRm9jdXM7XG4gICAgICAgICAgICBpZiAoaXNGb2N1cykge1xuICAgICAgICAgICAgICAgIG9uRm9jdXMgPT09IG51bGwgfHwgb25Gb2N1cyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25Gb2N1cygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgb25CbHVyID09PSBudWxsIHx8IG9uQmx1ciA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25CbHVyKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LCBbaXNGb2N1cywgb25Gb2N1cywgb25CbHVyXSk7XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgY29uc3QgZmluZEN1c3RvbURyb3Bkb3duRGF0YUlkID0gKHRhcmdldCkgPT4ge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgaWYgKCFkYXRhSWRSZWYuY3VycmVudClcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICBpZiAoKChfYSA9IHRhcmdldCA9PT0gbnVsbCB8fCB0YXJnZXQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHRhcmdldC5kYXRhc2V0KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Euc2VsZWN0Q3VzdG9tRHJvcGRvd25JZCkgPT09IGRhdGFJZFJlZi5jdXJyZW50KVxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgaWYgKHRhcmdldCA9PT0gZG9jdW1lbnQuYm9keSB8fCB0YXJnZXQgPT09IGRvY3VtZW50KVxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudCA9IHRhcmdldC5wYXJlbnROb2RlIHx8IHRhcmdldC5wYXJlbnRFbGVtZW50O1xuICAgICAgICAgICAgaWYgKCFwYXJlbnQpXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgcmV0dXJuIGZpbmRDdXN0b21Ecm9wZG93bkRhdGFJZChwYXJlbnQpO1xuICAgICAgICB9O1xuICAgICAgICBjb25zdCByZW1vdmVGb2N1cyA9IChlKSA9PiB7XG4gICAgICAgICAgICBpZiAoaXNDbGlja0luc2lkZS5jdXJyZW50KSB7XG4gICAgICAgICAgICAgICAgaXNDbGlja0luc2lkZS5jdXJyZW50ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2V0SXNGb2N1cyhwcmV2ID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXByZXYpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmluZEN1c3RvbURyb3Bkb3duRGF0YUlkKGUudGFyZ2V0KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHJlbW92ZUZvY3VzKTtcbiAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgcmVtb3ZlRm9jdXMpO1xuICAgICAgICB9O1xuICAgIH0sIFtdKTtcbiAgICByZXR1cm4gX2pzeChTZWxlY3RXcmFwcGVyLCB7IGxhYmVsOiBsYWJlbCwgbWVzc2FnZTogbWVzc2FnZSwgcmVxdWlyZWQ6IHJlcXVpcmVkLCBwcmVmaXhDbHM6IHByZWZpeENscywgd3JhcHBlckNsczogd3JhcHBlckNscywgbGFiZWxDbHM6IGxhYmVsQ2xzLCBtZXNzYWdlQ2xzOiBtZXNzYWdlQ2xzLCBzdWNjZXNzOiBzdWNjZXNzLCBpbnZhbGlkOiBpbnZhbGlkLCBkaXNhYmxlZDogZGlzYWJsZWQsIGNoaWxkcmVuOiBfanN4cyhcImRpdlwiLCB7IHJlZjogc2VsZWN0UmVmLCBjbGFzc05hbWU6IHNlbGVjdENscywgY29udGVudEVkaXRhYmxlOiAhZGlzYWJsZWQgPyBlZGl0YWJsZSA6IGZhbHNlLCBhdXRvRm9jdXM6IGVkaXRhYmxlLCBcImRhdGEtcGxhY2Vob2xkZXJcIjogcGxhY2Vob2xkZXIsIFwiZGF0YS12YWx1ZVwiOiB2YWx1ZSwgb25DbGljazogKGUpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZGlzYWJsZWQpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICBpZiAoIWVkaXRhYmxlKSB7XG4gICAgICAgICAgICAgICAgICAgIGlzQ2xpY2tJbnNpZGUuY3VycmVudCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHNldElzRm9jdXMocHJldiA9PiAhcHJldik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG9uQ2xpY2sgPT09IG51bGwgfHwgb25DbGljayA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25DbGljayhlKTtcbiAgICAgICAgICAgIH0sIG9uSW5wdXQ6IGUgPT4ge1xuICAgICAgICAgICAgICAgIGxldCB2YWwgPSBlLmN1cnJlbnRUYXJnZXQuaW5uZXJUZXh0O1xuICAgICAgICAgICAgICAgIGlmICh2YWwgPT09ICdcXG4nKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbCA9ICcnO1xuICAgICAgICAgICAgICAgICAgICBlLmN1cnJlbnRUYXJnZXQuaW5uZXJUZXh0ID0gJyc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHNldFZhbHVlKHZhbCk7XG4gICAgICAgICAgICB9LCBjaGlsZHJlbjogWyFkaXNhYmxlZCAmJiBlZGl0YWJsZVxuICAgICAgICAgICAgICAgICAgICA/IG51bGxcbiAgICAgICAgICAgICAgICAgICAgOiB0eXBlb2Ygc2VsZWN0ZWRUZW1wbGF0ZSA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICAgICAgICAgICAgICAgICAgPyBzZWxlY3RlZFRlbXBsYXRlKGlzRm9jdXMpXG4gICAgICAgICAgICAgICAgICAgICAgICA6IF9qc3goXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdjdXN0b20tcGxhY2Vob2xkZXInKSwgY2hpbGRyZW46IHBsYWNlaG9sZGVyIH0pLCBlZGl0YWJsZVxuICAgICAgICAgICAgICAgICAgICA/IG51bGxcbiAgICAgICAgICAgICAgICAgICAgOiB0eXBlb2YgdGFpbFRlbXBsYXRlID09PSAnZnVuY3Rpb24nXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHRhaWxUZW1wbGF0ZShpc0ZvY3VzKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBfanN4KEljb25zLCB7IG5hbWU6ICdjaGV2cm9uRG93bicsIGNvbG9yOiAnIzEzMTMxMycsIHNpemU6IDIwLCB3cmFwcGVyQ2xzOiBjbGFzc2VzKCdjdXN0b20tdGFpbCcsIGlzRm9jdXMgPyBjbGFzc2VzKCdjdXN0b20tdGFpbC1mb2N1cycpIDogJycpIH0pXSB9KSB9KTtcbn07XG5leHBvcnQgY29uc3QgU2VsZWN0ID0gcHJvcHMgPT4ge1xuICAgIHZhciBfYTtcbiAgICBjb25zdCB7IGlkLCByZWYsIG5hbWUsIGxhYmVsLCBtZXNzYWdlLCByZXF1aXJlZCwgcHJlZml4Q2xzID0gJ3NlbGVjdCcsIHdyYXBwZXJDbHMsIGxhYmVsQ2xzLCBtZXNzYWdlQ2xzLCB2YWx1ZSwgc2l6ZSA9ICdsYXJnZScsIHN1Y2Nlc3MsIHJlZnJlc2hBZnRlclNob3cgPSB0cnVlLCBpbnZhbGlkLCBkaXNhYmxlZCwgcGxhY2Vob2xkZXIsIGNsYXNzTmFtZSA9ICcnLCBtdWx0aXBsZSwgb3B0aW9ucywgcGFuZWxDbGFzc05hbWUsIGRlZmF1bHRWYWx1ZSwgaXRlbVRlbXBsYXRlLCBvbkNoYW5nZSwgb25IaWRlLCBvblNob3csIHVuc2VsZWN0YWJsZSwgbG9hZGluZyB9ID0gcHJvcHMsIHJlc3QgPSBfX3Jlc3QocHJvcHMsIFtcImlkXCIsIFwicmVmXCIsIFwibmFtZVwiLCBcImxhYmVsXCIsIFwibWVzc2FnZVwiLCBcInJlcXVpcmVkXCIsIFwicHJlZml4Q2xzXCIsIFwid3JhcHBlckNsc1wiLCBcImxhYmVsQ2xzXCIsIFwibWVzc2FnZUNsc1wiLCBcInZhbHVlXCIsIFwic2l6ZVwiLCBcInN1Y2Nlc3NcIiwgXCJyZWZyZXNoQWZ0ZXJTaG93XCIsIFwiaW52YWxpZFwiLCBcImRpc2FibGVkXCIsIFwicGxhY2Vob2xkZXJcIiwgXCJjbGFzc05hbWVcIiwgXCJtdWx0aXBsZVwiLCBcIm9wdGlvbnNcIiwgXCJwYW5lbENsYXNzTmFtZVwiLCBcImRlZmF1bHRWYWx1ZVwiLCBcIml0ZW1UZW1wbGF0ZVwiLCBcIm9uQ2hhbmdlXCIsIFwib25IaWRlXCIsIFwib25TaG93XCIsIFwidW5zZWxlY3RhYmxlXCIsIFwibG9hZGluZ1wiXSk7XG4gICAgY29uc3QgY2xhc3NlcyA9IGNsYXNzbmFtZXMocHJlZml4Q2xzKTtcbiAgICBjb25zdCBbc2VsZWN0ZWQsIHNldFNlbGVjdGVkXSA9IHVzZVN0YXRlKChfYSA9IHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB2b2lkIDAgPyB2YWx1ZSA6IGRlZmF1bHRWYWx1ZSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogbnVsbCk7XG4gICAgY29uc3QgW2lzT3Blbiwgc2V0SXNPcGVuXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBbaXNIb3Zlciwgc2V0SXNIb3Zlcl0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgW2lzU2Nyb2xsaW5nLCBzZXRJc1Njcm9sbGluZ10gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3Qgc2VsZWN0UmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IF9yZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3Qgc2VsZWN0Q2xzID0gdXNlTWVtbygoKSA9PiBjbGFzc2VzKHZvaWQgMCwgam9pbkNscyhjbGFzc2VzKHNpemUpLCBpc09wZW4gJiYgY2xhc3Nlcygnc2hvdycpLCBzdWNjZXNzICYmIGNsYXNzZXMoJ3N1Y2Nlc3MnKSwgaW52YWxpZCAmJiBjbGFzc2VzKCdpbnZhbGlkJyksIGRpc2FibGVkICYmIGNsYXNzZXMoJ2Rpc2FibGVkJyksIGxvYWRpbmcgJiYgY2xhc3NlcygnbG9hZGluZycpLCAoQXJyYXkuaXNBcnJheShzZWxlY3RlZCkgPyAhIXNlbGVjdGVkLmxlbmd0aCA6ICEhc2VsZWN0ZWQpICYmIGNsYXNzZXMoJ2ZpbGxlZCcpLCBjbGFzc05hbWUpKSwgW3NpemUsIGlzT3Blbiwgc3VjY2Vzcywgc2VsZWN0ZWQsIGludmFsaWQsIGRpc2FibGVkLCBsb2FkaW5nLCBjbGFzc05hbWVdKTtcbiAgICBjb25zdCBkZWJvdW5jZWRIYW5kbGVTY3JvbGwgPSBkZWJvdW5jZSgoKSA9PiBzZXRJc1Njcm9sbGluZyhmYWxzZSksIDUwMCk7XG4gICAgY29uc3QgcmVmcmVzaERPTSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgY29uc3QgZWxlID0gKF9iID0gKF9hID0gc2VsZWN0UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5nZXRPdmVybGF5KSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuY2FsbChfYSk7XG4gICAgICAgIGlmICghZWxlKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCBvcmlnaW5aSW5kZXggPSBlbGUuc3R5bGUuekluZGV4O1xuICAgICAgICBpZiAob3JpZ2luWkluZGV4ICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgZWxlLnN0eWxlLnpJbmRleCA9IGAke3BhcnNlSW50KG9yaWdpblpJbmRleCkgKyAxfWA7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICBlbGUuc3R5bGUuekluZGV4ID0gb3JpZ2luWkluZGV4O1xuICAgICAgICAgICAgfSwgMCk7XG4gICAgICAgIH1cbiAgICB9LCBbXSk7XG4gICAgY29uc3QgU2VsZWN0Q29tcG9uZW50ID0gdXNlQ2FsbGJhY2soKHByb3BzKSA9PiBtdWx0aXBsZVxuICAgICAgICA/IF9qc3goTXVsdGlTZWxlY3QsIE9iamVjdC5hc3NpZ24oeyB1bnNlbGVjdGFibGU6IHVuc2VsZWN0YWJsZSwgc2hvd1NlbGVjdEFsbDogZmFsc2UsIGNoZWNrYm94SWNvbjogX2pzeChJY29ucywgeyBuYW1lOiAnY2hlY2snLCBzaXplOiAxMiwgY29sb3I6ICcjRkVGRUZFJyB9KSwgcmVtb3ZlSWNvbjogcHJvcHMgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgb25DbGljaywgb25LZXlEb3duLCB0YWJJbmRleCB9ID0gcHJvcHMuaWNvblByb3BzO1xuICAgICAgICAgICAgICAgIHJldHVybiBfanN4KEljb25zLCB7IG5hbWU6ICdjbG9zZScsIHNpemU6IDE2LCBjb2xvcjogJyMxMzEzMTMnLCB0YWJJbmRleDogdGFiSW5kZXgsIHdyYXBwZXJDbHM6IGNsYXNzZXMoJ3Rva2VuLXJlbW92ZS1pY29uJyksIG9uQ2xpY2s6IG9uQ2xpY2ssIG9uS2V5RG93bjogb25LZXlEb3duIH0pO1xuICAgICAgICAgICAgfSwgcGFuZWxIZWFkZXJUZW1wbGF0ZTogb3B0aW9ucyA9PiB7XG4gICAgICAgICAgICAgICAgdmFyIF9hLCBfYiwgX2MsIF9kLCBfZTtcbiAgICAgICAgICAgICAgICBjb25zdCB7IGZpbHRlckVsZW1lbnQsIHByb3BzIH0gPSBvcHRpb25zO1xuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZE51bSA9IChfZCA9IChfYyA9IChfYiA9IChfYSA9IHByb3BzID09PSBudWxsIHx8IHByb3BzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBwcm9wcy5tZXRhRGF0YSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnByb3BzKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IudmFsdWUpID09PSBudWxsIHx8IF9jID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYy5sZW5ndGgpICE9PSBudWxsICYmIF9kICE9PSB2b2lkIDAgPyBfZCA6IDA7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9qc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdwYW5lbC1oZWFkZXInKSwgY2hpbGRyZW46IFtfanN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygncGFuZWwtaGVhZGVyLWluZm8nKSwgY2hpbGRyZW46IFtfanN4cyhcInNwYW5cIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ3BhbmVsLWhlYWRlci1pbmZvLWNvdW50JyksIGNoaWxkcmVuOiBbc2VsZWN0ZWROdW0sIFwiIHNlbGVjdGVkXCJdIH0pLCBfanN4cyhcInNwYW5cIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ3BhbmVsLWhlYWRlci1pbmZvLWNsZWFyJyksIG9uQ2xpY2s6IGUgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy51cGRhdGVNb2RlbChlLCBbXSwgW10pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgY2hpbGRyZW46IFtfanN4KEljb25zLCB7IG5hbWU6ICdjbG9zZScsIHNpemU6IDE2LCBjb2xvcjogJyNBRTAwMDAnLCB3cmFwcGVyQ2xzOiBjbGFzc2VzKCdwYW5lbC1oZWFkZXItaW5mby1jbGVhci1pY29uJykgfSksIFwiQ2xlYXIgYWxsXCJdIH0pXSB9KSwgKF9lID0gZmlsdGVyRWxlbWVudCA9PT0gbnVsbCB8fCBmaWx0ZXJFbGVtZW50ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBmaWx0ZXJFbGVtZW50LnByb3BzKSA9PT0gbnVsbCB8fCBfZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2UuY2hpbGRyZW5dIH0pO1xuICAgICAgICAgICAgfSB9LCBwcm9wcykpXG4gICAgICAgIDogX2pzeChEcm9wZG93biwgT2JqZWN0LmFzc2lnbih7IGNvbGxhcHNlSWNvbjogbXVsdGlwbGUgPyB2b2lkIDAgOiAoKSA9PiBfanN4KEljb25zLCB7IG5hbWU6ICdjaGV2cm9uVXAnLCBjb2xvcjogJyMxMzEzMTMnLCBzaXplOiAyMCB9KSB9LCBwcm9wcykpLCBbbXVsdGlwbGVdKTtcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCAmJiAhaXNFcXVhbChzZWxlY3RlZCwgdmFsdWUpKSB7XG4gICAgICAgICAgICBzZXRTZWxlY3RlZCh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9LCBbdmFsdWVdKTtcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgdXNlSW1wZXJhdGl2ZUhhbmRsZShyZWYgIT09IG51bGwgJiYgcmVmICE9PSB2b2lkIDAgPyByZWYgOiBfcmVmLCAoKSA9PiB7XG4gICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgIHJldHVybiAobXVsdGlwbGUgPyB7XG4gICAgICAgICAgICBwcm9wczogKF9hID0gc2VsZWN0UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5wcm9wcyxcbiAgICAgICAgICAgIGZvY3VzOiAoKSA9PiB7IHZhciBfYSwgX2I7IHJldHVybiAoX2IgPSAoX2EgPSBzZWxlY3RSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmZvY3VzKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuY2FsbChfYSk7IH0sXG4gICAgICAgICAgICBoaWRlOiAoKSA9PiB7IHZhciBfYSwgX2I7IHJldHVybiAoX2IgPSAoX2EgPSBzZWxlY3RSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmhpZGUpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5jYWxsKF9hKTsgfSxcbiAgICAgICAgICAgIHNob3c6ICgpID0+IHsgdmFyIF9hLCBfYjsgcmV0dXJuIChfYiA9IChfYSA9IHNlbGVjdFJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Euc2hvdykgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmNhbGwoX2EpOyB9LFxuICAgICAgICAgICAgZ2V0RWxlbWVudDogKCkgPT4geyB2YXIgX2EsIF9iOyByZXR1cm4gKF9iID0gKF9hID0gc2VsZWN0UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5nZXRFbGVtZW50KSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuY2FsbChfYSk7IH0sXG4gICAgICAgICAgICBnZXRJbnB1dDogKCkgPT4geyB2YXIgX2EsIF9iOyByZXR1cm4gKF9iID0gKF9hID0gc2VsZWN0UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5nZXRJbnB1dCkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmNhbGwoX2EpOyB9LFxuICAgICAgICAgICAgZ2V0T3ZlcmxheTogKCkgPT4geyB2YXIgX2EsIF9iOyByZXR1cm4gKF9iID0gKF9hID0gc2VsZWN0UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5nZXRPdmVybGF5KSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuY2FsbChfYSk7IH0sXG4gICAgICAgIH0gOiB7XG4gICAgICAgICAgICBwcm9wczogKF9iID0gc2VsZWN0UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5wcm9wcyxcbiAgICAgICAgICAgIGNsZWFyOiAoKSA9PiB7IHZhciBfYSwgX2I7IHJldHVybiAoX2IgPSAoX2EgPSBzZWxlY3RSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNsZWFyKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuY2FsbChfYSk7IH0sXG4gICAgICAgICAgICBmb2N1czogKCkgPT4geyB2YXIgX2EsIF9iOyByZXR1cm4gKF9iID0gKF9hID0gc2VsZWN0UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5mb2N1cykgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmNhbGwoX2EpOyB9LFxuICAgICAgICAgICAgaGlkZTogKCkgPT4geyB2YXIgX2EsIF9iOyByZXR1cm4gKF9iID0gKF9hID0gc2VsZWN0UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5oaWRlKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuY2FsbChfYSk7IH0sXG4gICAgICAgICAgICBzaG93OiAoKSA9PiB7IHZhciBfYSwgX2I7IHJldHVybiAoX2IgPSAoX2EgPSBzZWxlY3RSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnNob3cpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5jYWxsKF9hKTsgfSxcbiAgICAgICAgICAgIGdldEVsZW1lbnQ6ICgpID0+IHsgdmFyIF9hLCBfYjsgcmV0dXJuIChfYiA9IChfYSA9IHNlbGVjdFJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZ2V0RWxlbWVudCkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmNhbGwoX2EpOyB9LFxuICAgICAgICAgICAgZ2V0SW5wdXQ6ICgpID0+IHsgdmFyIF9hLCBfYjsgcmV0dXJuIChfYiA9IChfYSA9IHNlbGVjdFJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZ2V0SW5wdXQpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5jYWxsKF9hKTsgfSxcbiAgICAgICAgICAgIGdldE92ZXJsYXk6ICgpID0+IHsgdmFyIF9hLCBfYjsgcmV0dXJuIChfYiA9IChfYSA9IHNlbGVjdFJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZ2V0T3ZlcmxheSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmNhbGwoX2EpOyB9LFxuICAgICAgICAgICAgZ2V0Rm9jdXNJbnB1dDogKCkgPT4geyB2YXIgX2EsIF9iOyByZXR1cm4gKF9iID0gKF9hID0gc2VsZWN0UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5nZXRGb2N1c0lucHV0KSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuY2FsbChfYSk7IH0sXG4gICAgICAgICAgICBnZXRWaXJ0dWFsU2Nyb2xsZXI6ICgpID0+IHsgdmFyIF9hLCBfYjsgcmV0dXJuIChfYiA9IChfYSA9IHNlbGVjdFJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZ2V0VmlydHVhbFNjcm9sbGVyKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuY2FsbChfYSk7IH0sXG4gICAgICAgIH0pO1xuICAgIH0sIFttdWx0aXBsZV0pO1xuICAgIHJldHVybiAoX2pzeChTZWxlY3RXcmFwcGVyLCB7IGxhYmVsOiBsYWJlbCwgbWVzc2FnZTogbWVzc2FnZSwgcmVxdWlyZWQ6IHJlcXVpcmVkLCBwcmVmaXhDbHM6IHByZWZpeENscywgd3JhcHBlckNsczogd3JhcHBlckNscywgbGFiZWxDbHM6IGxhYmVsQ2xzLCBtZXNzYWdlQ2xzOiBtZXNzYWdlQ2xzLCBzdWNjZXNzOiBzdWNjZXNzLCBpbnZhbGlkOiBpbnZhbGlkLCBkaXNhYmxlZDogZGlzYWJsZWQsIGxvYWRpbmc6IGxvYWRpbmcsIGNoaWxkcmVuOiBfanN4KFNlbGVjdENvbXBvbmVudCwgT2JqZWN0LmFzc2lnbih7fSwgKCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IF9hID0gcmVzdCwgeyBmaWx0ZXJJY29uLCBmaWx0ZXIgfSA9IF9hLCBvdGhlcnMgPSBfX3Jlc3QoX2EsIFtcImZpbHRlckljb25cIiwgXCJmaWx0ZXJcIl0pO1xuICAgICAgICAgICAgY29uc3QgZXh0cmFQcm9wcyA9IGZpbHRlciA/IHsgZmlsdGVySWNvbjogZmlsdGVySWNvbiAhPT0gbnVsbCAmJiBmaWx0ZXJJY29uICE9PSB2b2lkIDAgPyBmaWx0ZXJJY29uIDogX2pzeChJY29ucywgeyBuYW1lOiAnc2VhcmNoJywgc2l6ZTogMjAsIGNvbG9yOiAnIzEzMTMxMycsIHdyYXBwZXJDbHM6IGNsYXNzZXMoJ2ZpbHRlci1pY29uJykgfSkgfSA6IG51bGw7XG4gICAgICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIG90aGVycyksIHsgZmlsdGVyIH0pLCAoZXh0cmFQcm9wcyB8fCB7fSkpO1xuICAgICAgICB9KSgpLCB7IGlkOiBpZCwgcmVmOiBzZWxlY3RSZWYsIG5hbWU6IG5hbWUsIGxvYWRpbmc6IGxvYWRpbmcsIGZpbHRlclBsYWNlaG9sZGVyOiAnU2VhcmNoJywgcmVxdWlyZWQ6IHJlcXVpcmVkLCBkaXNhYmxlZDogZGlzYWJsZWQsIGludmFsaWQ6IGludmFsaWQsIG9wdGlvbnM6IG9wdGlvbnMsIHBsYWNlaG9sZGVyOiBwbGFjZWhvbGRlciwgdmFsdWU6IHNlbGVjdGVkID09IG51bGwgPyB1bmRlZmluZWQgOiBzZWxlY3RlZCwgY2xhc3NOYW1lOiBzZWxlY3RDbHMsIGl0ZW1UZW1wbGF0ZTogKG9wdGlvbikgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBfanN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygncGFuZWwtaXRlbScpLCBvbkNsaWNrOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW11bHRpcGxlICYmIHVuc2VsZWN0YWJsZSA9PT0gJ29uJyAmJiBvcHRpb24udmFsdWUgPT09IHNlbGVjdGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9hID0gc2VsZWN0UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jbGVhcigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LCBjaGlsZHJlbjogW19qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ3BhbmVsLWl0ZW0tbGFiZWwnKSwgY2hpbGRyZW46IGl0ZW1UZW1wbGF0ZSA/IGl0ZW1UZW1wbGF0ZShvcHRpb24pIDogb3B0aW9uLmxhYmVsIH0pLCBfanN4KEljb25zLCB7IG5hbWU6ICdjaGVjaycsIHNpemU6IDE2LCBjb2xvcjogJyMwNzMzODcnIH0pXSB9KTtcbiAgICAgICAgICAgIH0sIGxvYWRpbmdJY29uOiBfanN4KFNwaW5uZXIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdsb2FkaW5nLWljb24nKSwgc3Ryb2tlV2lkdGg6ICc0JyB9KSwgcGFuZWxDbGFzc05hbWU6IGNsYXNzZXMoJ3BhbmVsJywgam9pbkNscyhwYW5lbENsYXNzTmFtZSwgaXNIb3ZlciAmJiBjbGFzc2VzKCdwYW5lbC1ob3ZlcicpLCBpc1Njcm9sbGluZyAmJiBjbGFzc2VzKCdwYW5lbC1zY3JvbGxpbmcnKSwgcmVzdC5hcHBlbmRUbyA9PT0gJ3NlbGYnICYmIGNsYXNzZXMoJ3BhbmVsLWFwcGVuZC1zZWxmJykpKSwgb25DaGFuZ2U6IChlKSA9PiB7XG4gICAgICAgICAgICAgICAgc2V0U2VsZWN0ZWQoZS52YWx1ZSk7XG4gICAgICAgICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlID09PSBudWxsIHx8IG9uQ2hhbmdlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkNoYW5nZShlKTtcbiAgICAgICAgICAgIH0sIG9uSGlkZTogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHNldElzT3BlbihmYWxzZSk7XG4gICAgICAgICAgICAgICAgb25IaWRlID09PSBudWxsIHx8IG9uSGlkZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25IaWRlKCk7XG4gICAgICAgICAgICB9LCBvblNob3c6ICgpID0+IHtcbiAgICAgICAgICAgICAgICBzZXRJc09wZW4odHJ1ZSk7XG4gICAgICAgICAgICAgICAgb25TaG93ID09PSBudWxsIHx8IG9uU2hvdyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25TaG93KCk7XG4gICAgICAgICAgICAgICAgaWYgKCFyZWZyZXNoQWZ0ZXJTaG93KVxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiByZWZyZXNoRE9NKCksIDApO1xuICAgICAgICAgICAgfSwgZHJvcGRvd25JY29uOiAoKSA9PiBfanN4KEljb25zLCB7IG5hbWU6ICdjaGV2cm9uRG93bicsIGNvbG9yOiAnIzEzMTMxMycsIHNpemU6IDIwIH0pLCBwdDoge1xuICAgICAgICAgICAgICAgIHdyYXBwZXI6IHtcbiAgICAgICAgICAgICAgICAgICAgb25TY3JvbGw6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlYm91bmNlZEhhbmRsZVNjcm9sbC5jYW5jZWwoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldElzU2Nyb2xsaW5nKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVib3VuY2VkSGFuZGxlU2Nyb2xsKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHBhbmVsOiB7XG4gICAgICAgICAgICAgICAgICAgIG9uTW91c2VFbnRlcjogKCkgPT4gc2V0SXNIb3Zlcih0cnVlKSxcbiAgICAgICAgICAgICAgICAgICAgb25Nb3VzZUxlYXZlOiAoKSA9PiBzZXRJc0hvdmVyKGZhbHNlKSxcbiAgICAgICAgICAgICAgICAgICAgb25Ub3VjaFN0YXJ0OiAoKSA9PiBzZXRJc0hvdmVyKHRydWUpLFxuICAgICAgICAgICAgICAgICAgICBvblRvdWNoRW5kOiAoKSA9PiBzZXRJc0hvdmVyKGZhbHNlKSxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IH0pKSB9KSk7XG59O1xuU2VsZWN0LkN1c3RvbURyb3Bkb3duID0gQ3VzdG9tRHJvcGRvd247XG5leHBvcnQgZGVmYXVsdCBtZW1vKFNlbGVjdCk7IixudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
|
|
523
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvU2VsZWN0L1NlbGVjdC5qcyIsImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvU2VsZWN0L1NlbGVjdC50c3giXSwibmFtZXMiOlsiX19yZXN0IiwicyIsImUiLCJ0IiwicCIsIk9iamVjdCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImluZGV4T2YiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJpIiwibGVuZ3RoIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwibWVtbyIsInVzZVJlZiIsInVzZU1lbW8iLCJ1c2VTdGF0ZSIsInVzZUVmZmVjdCIsInVzZUNhbGxiYWNrIiwidXNlSW1wZXJhdGl2ZUhhbmRsZSIsImRlYm91bmNlIiwiRHJvcGRvd24iLCJNdWx0aVNlbGVjdCIsIlNrZWxldG9uIiwiZGVmYXVsdCIsImNsYXNzbmFtZXMiLCJqb2luQ2xzIiwidXNlQ29udHJvbGxlZFN0YXRlIiwidXNlRXZlbnRDYWxsYmFjayIsIkljb25zIiwiU3Bpbm5lciIsIkRFRkFVTFRfUFJFRklYX0NMUyIsIkRFRkFVTFRfU0laRSIsIkRFRkFVTFRfUExBQ0VIT0xERVIiLCJERUZBVUxUX0NMQVNTTkFNRSIsIkZJTFRFUl9QTEFDRUhPTERFUiIsIkRFQk9VTkNFX1NDUk9MTF9ERUxBWSIsIlNQSU5ORVJfU1RST0tFX1dJRFRIIiwiU0tFTEVUT05fTEFCRUxfV0lEVEgiLCJTS0VMRVRPTl9MQUJFTF9IRUlHSFQiLCJVTlNFTEVDVEFCTEVfT04iLCJEQVRBX0FUVFJfU0VMRUNUT1IiLCJDT0xPUl9QUklNQVJZX0JMQUNLIiwiQ09MT1JfUFJJTUFSWV9CTFVFIiwiQ09MT1JfTkVHQVRJVkUiLCJDT0xPUl9XSElURSIsIklDT05fU0laRV9YUyIsIklDT05fU0laRV9TTSIsIklDT05fU0laRV9NRCIsIlNlbGVjdFdyYXBwZXIiLCJwcm9wcyIsImxhYmVsIiwibWVzc2FnZSIsInJlcXVpcmVkIiwicHJlZml4Q2xzIiwid3JhcHBlckNscyIsImxhYmVsQ2xzIiwibWVzc2FnZUNscyIsInN1Y2Nlc3MiLCJpbnZhbGlkIiwiZGlzYWJsZWQiLCJsb2FkaW5nIiwiY2hpbGRyZW4iLCJjbGFzc2VzIiwiY2xhc3NOYW1lIiwid2lkdGgiLCJoZWlnaHQiLCJDdXN0b21Ecm9wZG93biIsInJlZiIsImRhdGFJZCIsIl9wcm9wcyRwcmVmaXhDbHMiLCJfcHJvcHMkc2l6ZSIsInNpemUiLCJlZGl0YWJsZSIsIl9wcm9wcyRwbGFjZWhvbGRlciIsInBsYWNlaG9sZGVyIiwiX3Byb3BzJGNsYXNzTmFtZSIsInNlbGVjdGVkVGVtcGxhdGUiLCJ0YWlsVGVtcGxhdGUiLCJvbkNsaWNrIiwib25Gb2N1cyIsIm9uQmx1ciIsImlzQ2xpY2tJbnNpZGUiLCJkYXRhSWRSZWYiLCJsYXN0Rm9jdXNSZWYiLCJzZWxlY3RSZWYiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJ2YWx1ZSIsInNldFZhbHVlIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJpc0ZvY3VzIiwic2V0SXNGb2N1cyIsInNlbGVjdENscyIsImZvY3VzIiwiYmx1ciIsImdldERPTU5vZGUiLCJjdXJyZW50IiwiaGFuZGxlRm9jdXMiLCJoYW5kbGVCbHVyIiwicmVtb3ZlRm9jdXMiLCJwcmV2IiwiX2EiLCJ0YXJnZXQiLCJjbG9zZXN0IiwiY29uY2F0IiwiZG9jdW1lbnQiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImNvbnRlbnRFZGl0YWJsZSIsImF1dG9Gb2N1cyIsIm9uSW5wdXQiLCJ2YWwiLCJjdXJyZW50VGFyZ2V0IiwiaW5uZXJUZXh0IiwibmFtZSIsImNvbG9yIiwiU2VsZWN0IiwiaWQiLCJfcHJvcHMkcHJlZml4Q2xzMiIsIl9wcm9wcyRzaXplMiIsIl9wcm9wcyRyZWZyZXNoQWZ0ZXJTaCIsInJlZnJlc2hBZnRlclNob3ciLCJfcHJvcHMkY2xhc3NOYW1lMiIsIm11bHRpcGxlIiwib3B0aW9ucyIsInBhbmVsQ2xhc3NOYW1lIiwiZGVmYXVsdFZhbHVlIiwiaXRlbVRlbXBsYXRlIiwib25DaGFuZ2UiLCJvbkhpZGUiLCJvblNob3ciLCJ1bnNlbGVjdGFibGUiLCJyZXN0IiwiX3VzZUNvbnRyb2xsZWRTdGF0ZSIsIl91c2VDb250cm9sbGVkU3RhdGUyIiwic2VsZWN0ZWQiLCJzZXRTZWxlY3RlZCIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2IiwiaXNPcGVuIiwic2V0SXNPcGVuIiwiX3VzZVN0YXRlNyIsIl91c2VTdGF0ZTgiLCJpc0hvdmVyIiwic2V0SXNIb3ZlciIsIl91c2VTdGF0ZTkiLCJfdXNlU3RhdGUxMCIsImlzU2Nyb2xsaW5nIiwic2V0SXNTY3JvbGxpbmciLCJBcnJheSIsImlzQXJyYXkiLCJkZWJvdW5jZWRIYW5kbGVTY3JvbGwiLCJjYW5jZWwiLCJyZWZyZXNoRE9NIiwiX2IiLCJlbGUiLCJnZXRPdmVybGF5Iiwib3JpZ2luWkluZGV4Iiwic3R5bGUiLCJ6SW5kZXgiLCJ1bmRlZmluZWQiLCJwYXJzZUludCIsInNldFRpbWVvdXQiLCJmaWx0ZXJJY29uUHJvcHMiLCJmaWx0ZXJJY29uIiwiZmlsdGVyIiwib3RoZXJzIiwiZXh0cmFQcm9wcyIsImFzc2lnbiIsIlNlbGVjdENvbXBvbmVudCIsInNob3dTZWxlY3RBbGwiLCJjaGVja2JveEljb24iLCJyZW1vdmVJY29uIiwiX3Byb3BzJGljb25Qcm9wcyIsImljb25Qcm9wcyIsIm9uS2V5RG93biIsInRhYkluZGV4IiwicGFuZWxIZWFkZXJUZW1wbGF0ZSIsIl9jIiwiX2QiLCJfZSIsImZpbHRlckVsZW1lbnQiLCJzZWxlY3RlZE51bSIsIm1ldGFEYXRhIiwidXBkYXRlTW9kZWwiLCJjb2xsYXBzZUljb24iLCJoaWRlIiwic2hvdyIsImdldEVsZW1lbnQiLCJnZXRJbnB1dCIsImNsZWFyIiwiZ2V0Rm9jdXNJbnB1dCIsImdldFZpcnR1YWxTY3JvbGxlciIsImhhbmRsZUNoYW5nZSIsImVtaXRDaGFuZ2UiLCJoYW5kbGVIaWRlIiwiaGFuZGxlU2hvdyIsImhhbmRsZVNjcm9sbCIsImZpbHRlclBsYWNlaG9sZGVyIiwib3B0aW9uIiwibG9hZGluZ0ljb24iLCJzdHJva2VXaWR0aCIsImFwcGVuZFRvIiwiZHJvcGRvd25JY29uIiwicHQiLCJ3cmFwcGVyIiwib25TY3JvbGwiLCJwYW5lbCIsIm9uTW91c2VFbnRlciIsIm9uTW91c2VMZWF2ZSIsIm9uVG91Y2hTdGFydCIsIm9uVG91Y2hFbmQiXSwibWFwcGluZ3MiOiI7QUFBQSxJQUFJQSxNQUFNLEdBQUksSUFBSSxJQUFJLElBQUksQ0FBQ0EsTUFBTSxJQUFLLFVBQVVDLENBQUMsRUFBRUMsQ0FBQyxFQUFFO0VBQ2xELElBQUlDLENBQUMsR0FBRyxDQUFDLENBQUM7RUFDVixLQUFLLElBQUlDLENBQUMsSUFBSUgsQ0FBQyxFQUFFLElBQUlJLE1BQU0sQ0FBQ0MsU0FBUyxDQUFDQyxjQUFjLENBQUNDLElBQUksQ0FBQ1AsQ0FBQyxFQUFFRyxDQUFDLENBQUMsSUFBSUYsQ0FBQyxDQUFDTyxPQUFPLENBQUNMLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFDL0VELENBQUMsQ0FBQ0MsQ0FBQyxDQUFDLEdBQUdILENBQUMsQ0FBQ0csQ0FBQyxDQUFDO0VBQ2YsSUFBSUgsQ0FBQyxJQUFJLElBQUksSUFBSSxPQUFPSSxNQUFNLENBQUNLLHFCQUFxQixLQUFLLFVBQVUsRUFDL0QsS0FBSyxJQUFJQyxDQUFDLEdBQUcsQ0FBQyxFQUFFUCxDQUFDLEdBQUdDLE1BQU0sQ0FBQ0sscUJBQXFCLENBQUNULENBQUMsQ0FBQyxFQUFFVSxDQUFDLEdBQUdQLENBQUMsQ0FBQ1EsTUFBTSxFQUFFRCxDQUFDLEVBQUUsRUFBRTtJQUNwRSxJQUFJVCxDQUFDLENBQUNPLE9BQU8sQ0FBQ0wsQ0FBQyxDQUFDTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSU4sTUFBTSxDQUFDQyxTQUFTLENBQUNPLG9CQUFvQixDQUFDTCxJQUFJLENBQUNQLENBQUMsRUFBRUcsQ0FBQyxDQUFDTyxDQUFD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dGVudCI6WyJ2YXIgX19yZXN0ID0gKHRoaXMgJiYgdGhpcy5fX3Jlc3QpIHx8IGZ1bmN0aW9uIChzLCBlKSB7XG4gICAgdmFyIHQgPSB7fTtcbiAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMClcbiAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKVxuICAgICAgICBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpXG4gICAgICAgICAgICAgICAgdFtwW2ldXSA9IHNbcFtpXV07XG4gICAgICAgIH1cbiAgICByZXR1cm4gdDtcbn07XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCwganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgbWVtbywgdXNlUmVmLCB1c2VNZW1vLCB1c2VTdGF0ZSwgdXNlRWZmZWN0LCB1c2VDYWxsYmFjaywgdXNlSW1wZXJhdGl2ZUhhbmRsZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBkZWJvdW5jZSBmcm9tICdsb2Rhc2guZGVib3VuY2UnO1xuaW1wb3J0IHsgRHJvcGRvd24gfSBmcm9tICdwcmltZXJlYWN0L2Ryb3Bkb3duJztcbmltcG9ydCB7IE11bHRpU2VsZWN0IH0gZnJvbSAncHJpbWVyZWFjdC9tdWx0aXNlbGVjdCc7XG5pbXBvcnQgeyBTa2VsZXRvbiB9IGZyb20gJ3ByaW1lcmVhY3Qvc2tlbGV0b24nO1xuaW1wb3J0IHsgZGVmYXVsdCBhcyBjbGFzc25hbWVzLCBqb2luQ2xzIH0gZnJvbSAnLi4vLi4vdXRpbHMvY2xhc3NuYW1lcyc7XG5pbXBvcnQgdXNlQ29udHJvbGxlZFN0YXRlIGZyb20gJy4uL3VzZUNvbnRyb2xsZWRTdGF0ZSc7XG5pbXBvcnQgdXNlRXZlbnRDYWxsYmFjayBmcm9tICcuLi91c2VFdmVudENhbGxiYWNrJztcbmltcG9ydCB7IEljb25zIH0gZnJvbSAnLi4vSWNvbnMnO1xuaW1wb3J0IHsgU3Bpbm5lciB9IGZyb20gJy4uL1NwaW5uZXInO1xuaW1wb3J0IHsgREVGQVVMVF9QUkVGSVhfQ0xTLCBERUZBVUxUX1NJWkUsIERFRkFVTFRfUExBQ0VIT0xERVIsIERFRkFVTFRfQ0xBU1NOQU1FLCBGSUxURVJfUExBQ0VIT0xERVIsIERFQk9VTkNFX1NDUk9MTF9ERUxBWSwgU1BJTk5FUl9TVFJPS0VfV0lEVEgsIFNLRUxFVE9OX0xBQkVMX1dJRFRILCBTS0VMRVRPTl9MQUJFTF9IRUlHSFQsIFVOU0VMRUNUQUJMRV9PTiwgREFUQV9BVFRSX1NFTEVDVE9SLCBDT0xPUl9QUklNQVJZX0JMQUNLLCBDT0xPUl9QUklNQVJZX0JMVUUsIENPTE9SX05FR0FUSVZFLCBDT0xPUl9XSElURSwgSUNPTl9TSVpFX1hTLCBJQ09OX1NJWkVfU00sIElDT05fU0laRV9NRCwgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5jb25zdCBTZWxlY3RXcmFwcGVyID0gbWVtbyhwcm9wcyA9PiB7XG4gICAgY29uc3QgeyBsYWJlbCwgbWVzc2FnZSwgcmVxdWlyZWQsIHByZWZpeENscywgd3JhcHBlckNscywgbGFiZWxDbHMsIG1lc3NhZ2VDbHMsIHN1Y2Nlc3MsIGludmFsaWQsIGRpc2FibGVkLCBsb2FkaW5nLCBjaGlsZHJlbiwgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNsYXNzZXMgPSBjbGFzc25hbWVzKHByZWZpeENscyk7XG4gICAgcmV0dXJuIF9qc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCd3cmFwcGVyJywgd3JhcHBlckNscyksIGNoaWxkcmVuOiBbbGFiZWwgP1xuICAgICAgICAgICAgICAgIGxvYWRpbmdcbiAgICAgICAgICAgICAgICAgICAgPyBfanN4KFNrZWxldG9uLCB7IHdpZHRoOiBTS0VMRVRPTl9MQUJFTF9XSURUSCwgaGVpZ2h0OiBTS0VMRVRPTl9MQUJFTF9IRUlHSFQsIGNsYXNzTmFtZTogY2xhc3NlcygnbGFiZWwtbG9hZGluZycpIH0pXG4gICAgICAgICAgICAgICAgICAgIDogX2pzeChcInNwYW5cIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ2xhYmVsJywgam9pbkNscyhyZXF1aXJlZCAmJiBjbGFzc2VzKCdsYWJlbC1yZXF1aXJlZCcpLCBsYWJlbENscykpLCBjaGlsZHJlbjogbGFiZWwgfSlcbiAgICAgICAgICAgICAgICA6IG51bGwsIGNoaWxkcmVuLCBtZXNzYWdlICYmIF9qc3goXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdtZXNzYWdlJywgam9pbkNscyhzdWNjZXNzICYmIGNsYXNzZXMoJ21lc3NhZ2Utc3VjY2VzcycpLCBpbnZhbGlkICYmIGNsYXNzZXMoJ21lc3NhZ2UtZXJyb3InKSwgbWVzc2FnZUNscykpLCBjaGlsZHJlbjogbWVzc2FnZSB9KV0gfSk7XG59KTtcbmNvbnN0IEN1c3RvbURyb3Bkb3duID0gcHJvcHMgPT4ge1xuICAgIGNvbnN0IHsgcmVmLCBkYXRhSWQsIGxhYmVsLCBtZXNzYWdlLCByZXF1aXJlZCwgcHJlZml4Q2xzID0gREVGQVVMVF9QUkVGSVhfQ0xTLCB3cmFwcGVyQ2xzLCBsYWJlbENscywgbWVzc2FnZUNscywgc2l6ZSA9IERFRkFVTFRfU0laRSwgc3VjY2VzcywgaW52YWxpZCwgZGlzYWJsZWQsIGVkaXRhYmxlLCBwbGFjZWhvbGRlciA9IERFRkFVTFRfUExBQ0VIT0xERVIsIGNsYXNzTmFtZSA9IERFRkFVTFRfQ0xBU1NOQU1FLCBzZWxlY3RlZFRlbXBsYXRlLCB0YWlsVGVtcGxhdGUsIG9uQ2xpY2ssIG9uRm9jdXMsIG9uQmx1ciwgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNsYXNzZXMgPSBjbGFzc25hbWVzKHByZWZpeENscyk7XG4gICAgY29uc3QgaXNDbGlja0luc2lkZSA9IHVzZVJlZihmYWxzZSk7XG4gICAgY29uc3QgZGF0YUlkUmVmID0gdXNlUmVmKGRhdGFJZCk7XG4gICAgY29uc3QgbGFzdEZvY3VzUmVmID0gdXNlUmVmKGZhbHNlKTtcbiAgICBjb25zdCBzZWxlY3RSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgW3ZhbHVlLCBzZXRWYWx1ZV0gPSB1c2VTdGF0ZSgnJyk7XG4gICAgY29uc3QgW2lzRm9jdXMsIHNldElzRm9jdXNdID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IHNlbGVjdENscyA9IHVzZU1lbW8oKCkgPT4gY2xhc3Nlcyh2b2lkIDAsIGpvaW5DbHMoY2xhc3NlcyhzaXplKSwgY2xhc3NlcygnY3VzdG9tJyksIGlzRm9jdXMgJiYgY2xhc3NlcygnZm9jdXMnKSwgc3VjY2VzcyAmJiBjbGFzc2VzKCdzdWNjZXNzJyksIGludmFsaWQgJiYgY2xhc3NlcygnaW52YWxpZCcpLCBkaXNhYmxlZCAmJiBjbGFzc2VzKCdkaXNhYmxlZCcpLCBlZGl0YWJsZSAmJiBjbGFzc2VzKCdlZGl0YWJsZScpLCBjbGFzc05hbWUpKSwgW3NpemUsIGlzRm9jdXMsIHN1Y2Nlc3MsIGludmFsaWQsIGRpc2FibGVkLCBlZGl0YWJsZSwgY2xhc3NOYW1lXSk7XG4gICAgdXNlSW1wZXJhdGl2ZUhhbmRsZShyZWYsICgpID0+ICh7XG4gICAgICAgIGZvY3VzOiAoKSA9PiBzZXRJc0ZvY3VzKHRydWUpLFxuICAgICAgICBibHVyOiAoKSA9PiBzZXRJc0ZvY3VzKGZhbHNlKSxcbiAgICAgICAgZ2V0RE9NTm9kZTogKCkgPT4gc2VsZWN0UmVmLmN1cnJlbnRcbiAgICB9KSwgW10pO1xuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGRhdGFJZFJlZi5jdXJyZW50ID0gZGF0YUlkO1xuICAgIH0sIFtkYXRhSWRdKTtcbiAgICBjb25zdCBoYW5kbGVGb2N1cyA9IHVzZUV2ZW50Q2FsbGJhY2soKCkgPT4gb25Gb2N1cyA9PT0gbnVsbCB8fCBvbkZvY3VzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkZvY3VzKCkpO1xuICAgIGNvbnN0IGhhbmRsZUJsdXIgPSB1c2VFdmVudENhbGxiYWNrKCgpID0+IG9uQmx1ciA9PT0gbnVsbCB8fCBvbkJsdXIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQmx1cigpKTtcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAoaXNGb2N1cyAhPT0gbGFzdEZvY3VzUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIGxhc3RGb2N1c1JlZi5jdXJyZW50ID0gaXNGb2N1cztcbiAgICAgICAgICAgIGlmIChpc0ZvY3VzKSB7XG4gICAgICAgICAgICAgICAgaGFuZGxlRm9jdXMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGhhbmRsZUJsdXIoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sIFtpc0ZvY3VzXSk7XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgY29uc3QgcmVtb3ZlRm9jdXMgPSAoZSkgPT4ge1xuICAgICAgICAgICAgaWYgKGlzQ2xpY2tJbnNpZGUuY3VycmVudCkge1xuICAgICAgICAgICAgICAgIGlzQ2xpY2tJbnNpZGUuY3VycmVudCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNldElzRm9jdXMocHJldiA9PiB7XG4gICAgICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgICAgIGlmICghcHJldilcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIGlmICghZGF0YUlkUmVmLmN1cnJlbnQpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXQgPSBlLnRhcmdldDtcbiAgICAgICAgICAgICAgICByZXR1cm4gISEoKF9hID0gdGFyZ2V0ID09PSBudWxsIHx8IHRhcmdldCA9PT0gdm9pZCAwID8gdm9pZCAwIDogdGFyZ2V0LmNsb3Nlc3QpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jYWxsKHRhcmdldCwgYFske0RBVEFfQVRUUl9TRUxFQ1RPUn09XCIke2RhdGFJZFJlZi5jdXJyZW50fVwiXWApKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHJlbW92ZUZvY3VzKTtcbiAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgcmVtb3ZlRm9jdXMpO1xuICAgICAgICB9O1xuICAgIH0sIFtdKTtcbiAgICByZXR1cm4gX2pzeChTZWxlY3RXcmFwcGVyLCB7IGxhYmVsOiBsYWJlbCwgbWVzc2FnZTogbWVzc2FnZSwgcmVxdWlyZWQ6IHJlcXVpcmVkLCBwcmVmaXhDbHM6IHByZWZpeENscywgd3JhcHBlckNsczogd3JhcHBlckNscywgbGFiZWxDbHM6IGxhYmVsQ2xzLCBtZXNzYWdlQ2xzOiBtZXNzYWdlQ2xzLCBzdWNjZXNzOiBzdWNjZXNzLCBpbnZhbGlkOiBpbnZhbGlkLCBkaXNhYmxlZDogZGlzYWJsZWQsIGNoaWxkcmVuOiBfanN4cyhcImRpdlwiLCB7IHJlZjogc2VsZWN0UmVmLCBjbGFzc05hbWU6IHNlbGVjdENscywgY29udGVudEVkaXRhYmxlOiAhZGlzYWJsZWQgPyBlZGl0YWJsZSA6IGZhbHNlLCBhdXRvRm9jdXM6IGVkaXRhYmxlLCBcImRhdGEtcGxhY2Vob2xkZXJcIjogcGxhY2Vob2xkZXIsIFwiZGF0YS12YWx1ZVwiOiB2YWx1ZSwgb25DbGljazogKGUpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZGlzYWJsZWQpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICBpZiAoIWVkaXRhYmxlKSB7XG4gICAgICAgICAgICAgICAgICAgIGlzQ2xpY2tJbnNpZGUuY3VycmVudCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHNldElzRm9jdXMocHJldiA9PiAhcHJldik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG9uQ2xpY2sgPT09IG51bGwgfHwgb25DbGljayA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25DbGljayhlKTtcbiAgICAgICAgICAgIH0sIG9uSW5wdXQ6IGUgPT4ge1xuICAgICAgICAgICAgICAgIGxldCB2YWwgPSBlLmN1cnJlbnRUYXJnZXQuaW5uZXJUZXh0O1xuICAgICAgICAgICAgICAgIGlmICh2YWwgPT09ICdcXG4nKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbCA9ICcnO1xuICAgICAgICAgICAgICAgICAgICBlLmN1cnJlbnRUYXJnZXQuaW5uZXJUZXh0ID0gJyc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHNldFZhbHVlKHZhbCk7XG4gICAgICAgICAgICB9LCBjaGlsZHJlbjogWyFkaXNhYmxlZCAmJiBlZGl0YWJsZVxuICAgICAgICAgICAgICAgICAgICA/IG51bGxcbiAgICAgICAgICAgICAgICAgICAgOiB0eXBlb2Ygc2VsZWN0ZWRUZW1wbGF0ZSA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICAgICAgICAgICAgICAgICAgPyBzZWxlY3RlZFRlbXBsYXRlKGlzRm9jdXMpXG4gICAgICAgICAgICAgICAgICAgICAgICA6IF9qc3goXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdjdXN0b20tcGxhY2Vob2xkZXInKSwgY2hpbGRyZW46IHBsYWNlaG9sZGVyIH0pLCBlZGl0YWJsZVxuICAgICAgICAgICAgICAgICAgICA/IG51bGxcbiAgICAgICAgICAgICAgICAgICAgOiB0eXBlb2YgdGFpbFRlbXBsYXRlID09PSAnZnVuY3Rpb24nXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHRhaWxUZW1wbGF0ZShpc0ZvY3VzKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBfanN4KEljb25zLCB7IG5hbWU6ICdjaGV2cm9uRG93bicsIGNvbG9yOiBDT0xPUl9QUklNQVJZX0JMQUNLLCBzaXplOiBJQ09OX1NJWkVfTUQsIHdyYXBwZXJDbHM6IGNsYXNzZXMoJ2N1c3RvbS10YWlsJywgaXNGb2N1cyA/IGNsYXNzZXMoJ2N1c3RvbS10YWlsLWZvY3VzJykgOiAnJykgfSldIH0pIH0pO1xufTtcbmV4cG9ydCBjb25zdCBTZWxlY3QgPSBwcm9wcyA9PiB7XG4gICAgY29uc3QgeyBpZCwgcmVmLCBuYW1lLCBsYWJlbCwgbWVzc2FnZSwgcmVxdWlyZWQsIHByZWZpeENscyA9IERFRkFVTFRfUFJFRklYX0NMUywgd3JhcHBlckNscywgbGFiZWxDbHMsIG1lc3NhZ2VDbHMsIHZhbHVlLCBzaXplID0gREVGQVVMVF9TSVpFLCBzdWNjZXNzLCByZWZyZXNoQWZ0ZXJTaG93ID0gdHJ1ZSwgaW52YWxpZCwgZGlzYWJsZWQsIHBsYWNlaG9sZGVyLCBjbGFzc05hbWUgPSBERUZBVUxUX0NMQVNTTkFNRSwgbXVsdGlwbGUsIG9wdGlvbnMsIHBhbmVsQ2xhc3NOYW1lLCBkZWZhdWx0VmFsdWUsIGl0ZW1UZW1wbGF0ZSwgb25DaGFuZ2UsIG9uSGlkZSwgb25TaG93LCB1bnNlbGVjdGFibGUsIGxvYWRpbmcgfSA9IHByb3BzLCByZXN0ID0gX19yZXN0KHByb3BzLCBbXCJpZFwiLCBcInJlZlwiLCBcIm5hbWVcIiwgXCJsYWJlbFwiLCBcIm1lc3NhZ2VcIiwgXCJyZXF1aXJlZFwiLCBcInByZWZpeENsc1wiLCBcIndyYXBwZXJDbHNcIiwgXCJsYWJlbENsc1wiLCBcIm1lc3NhZ2VDbHNcIiwgXCJ2YWx1ZVwiLCBcInNpemVcIiwgXCJzdWNjZXNzXCIsIFwicmVmcmVzaEFmdGVyU2hvd1wiLCBcImludmFsaWRcIiwgXCJkaXNhYmxlZFwiLCBcInBsYWNlaG9sZGVyXCIsIFwiY2xhc3NOYW1lXCIsIFwibXVsdGlwbGVcIiwgXCJvcHRpb25zXCIsIFwicGFuZWxDbGFzc05hbWVcIiwgXCJkZWZhdWx0VmFsdWVcIiwgXCJpdGVtVGVtcGxhdGVcIiwgXCJvbkNoYW5nZVwiLCBcIm9uSGlkZVwiLCBcIm9uU2hvd1wiLCBcInVuc2VsZWN0YWJsZVwiLCBcImxvYWRpbmdcIl0pO1xuICAgIGNvbnN0IGNsYXNzZXMgPSBjbGFzc25hbWVzKHByZWZpeENscyk7XG4gICAgY29uc3QgW3NlbGVjdGVkLCBzZXRTZWxlY3RlZF0gPSB1c2VDb250cm9sbGVkU3RhdGUoZGVmYXVsdFZhbHVlICE9PSBudWxsICYmIGRlZmF1bHRWYWx1ZSAhPT0gdm9pZCAwID8gZGVmYXVsdFZhbHVlIDogbnVsbCwgdmFsdWUpO1xuICAgIGNvbnN0IFtpc09wZW4sIHNldElzT3Blbl0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgW2lzSG92ZXIsIHNldElzSG92ZXJdID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IFtpc1Njcm9sbGluZywgc2V0SXNTY3JvbGxpbmddID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IHNlbGVjdFJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBzZWxlY3RDbHMgPSB1c2VNZW1vKCgpID0+IGNsYXNzZXModm9pZCAwLCBqb2luQ2xzKGNsYXNzZXMoc2l6ZSksIGlzT3BlbiAmJiBjbGFzc2VzKCdzaG93JyksIHN1Y2Nlc3MgJiYgY2xhc3Nlcygnc3VjY2VzcycpLCBpbnZhbGlkICYmIGNsYXNzZXMoJ2ludmFsaWQnKSwgZGlzYWJsZWQgJiYgY2xhc3NlcygnZGlzYWJsZWQnKSwgbG9hZGluZyAmJiBjbGFzc2VzKCdsb2FkaW5nJyksIChBcnJheS5pc0FycmF5KHNlbGVjdGVkKSA/ICEhc2VsZWN0ZWQubGVuZ3RoIDogISFzZWxlY3RlZCkgJiYgY2xhc3NlcygnZmlsbGVkJyksIGNsYXNzTmFtZSkpLCBbc2l6ZSwgaXNPcGVuLCBzdWNjZXNzLCBzZWxlY3RlZCwgaW52YWxpZCwgZGlzYWJsZWQsIGxvYWRpbmcsIGNsYXNzTmFtZV0pO1xuICAgIGNvbnN0IGRlYm91bmNlZEhhbmRsZVNjcm9sbCA9IHVzZU1lbW8oKCkgPT4gZGVib3VuY2UoKCkgPT4gc2V0SXNTY3JvbGxpbmcoZmFsc2UpLCBERUJPVU5DRV9TQ1JPTExfREVMQVkpLCBbXSk7XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgcmV0dXJuICgpID0+IGRlYm91bmNlZEhhbmRsZVNjcm9sbC5jYW5jZWwoKTtcbiAgICB9LCBbZGVib3VuY2VkSGFuZGxlU2Nyb2xsXSk7XG4gICAgY29uc3QgcmVmcmVzaERPTSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgY29uc3QgZWxlID0gKF9iID0gKF9hID0gc2VsZWN0UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5nZXRPdmVybGF5KSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuY2FsbChfYSk7XG4gICAgICAgIGlmICghZWxlKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCBvcmlnaW5aSW5kZXggPSBlbGUuc3R5bGUuekluZGV4O1xuICAgICAgICBpZiAob3JpZ2luWkluZGV4ICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgZWxlLnN0eWxlLnpJbmRleCA9IGAke3BhcnNlSW50KG9yaWdpblpJbmRleCkgKyAxfWA7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICBlbGUuc3R5bGUuekluZGV4ID0gb3JpZ2luWkluZGV4O1xuICAgICAgICAgICAgfSwgMCk7XG4gICAgICAgIH1cbiAgICB9LCBbXSk7XG4gICAgY29uc3QgZmlsdGVySWNvblByb3BzID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICAgIGNvbnN0IF9hID0gcmVzdCwgeyBmaWx0ZXJJY29uLCBmaWx0ZXIgfSA9IF9hLCBvdGhlcnMgPSBfX3Jlc3QoX2EsIFtcImZpbHRlckljb25cIiwgXCJmaWx0ZXJcIl0pO1xuICAgICAgICBjb25zdCBleHRyYVByb3BzID0gZmlsdGVyID8geyBmaWx0ZXJJY29uOiBmaWx0ZXJJY29uICE9PSBudWxsICYmIGZpbHRlckljb24gIT09IHZvaWQgMCA/IGZpbHRlckljb24gOiBfanN4KEljb25zLCB7IG5hbWU6ICdzZWFyY2gnLCBzaXplOiBJQ09OX1NJWkVfTUQsIGNvbG9yOiBDT0xPUl9QUklNQVJZX0JMQUNLLCB3cmFwcGVyQ2xzOiBjbGFzc2VzKCdmaWx0ZXItaWNvbicpIH0pIH0gOiBudWxsO1xuICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIG90aGVycyksIHsgZmlsdGVyIH0pLCAoZXh0cmFQcm9wcyB8fCB7fSkpO1xuICAgIH0sIFtyZXN0LmZpbHRlciwgcmVzdC5maWx0ZXJJY29uXSk7XG4gICAgY29uc3QgU2VsZWN0Q29tcG9uZW50ID0gdXNlQ2FsbGJhY2soKHByb3BzKSA9PiBtdWx0aXBsZVxuICAgICAgICA/IF9qc3goTXVsdGlTZWxlY3QsIE9iamVjdC5hc3NpZ24oeyB1bnNlbGVjdGFibGU6IHVuc2VsZWN0YWJsZSwgc2hvd1NlbGVjdEFsbDogZmFsc2UsIGNoZWNrYm94SWNvbjogX2pzeChJY29ucywgeyBuYW1lOiAnY2hlY2snLCBzaXplOiBJQ09OX1NJWkVfWFMsIGNvbG9yOiBDT0xPUl9XSElURSB9KSwgcmVtb3ZlSWNvbjogcHJvcHMgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgb25DbGljaywgb25LZXlEb3duLCB0YWJJbmRleCB9ID0gcHJvcHMuaWNvblByb3BzO1xuICAgICAgICAgICAgICAgIHJldHVybiBfanN4KEljb25zLCB7IG5hbWU6ICdjbG9zZScsIHNpemU6IElDT05fU0laRV9TTSwgY29sb3I6IENPTE9SX1BSSU1BUllfQkxBQ0ssIHRhYkluZGV4OiB0YWJJbmRleCwgd3JhcHBlckNsczogY2xhc3NlcygndG9rZW4tcmVtb3ZlLWljb24nKSwgb25DbGljazogb25DbGljaywgb25LZXlEb3duOiBvbktleURvd24gfSk7XG4gICAgICAgICAgICB9LCBwYW5lbEhlYWRlclRlbXBsYXRlOiBvcHRpb25zID0+IHtcbiAgICAgICAgICAgICAgICB2YXIgX2EsIF9iLCBfYywgX2QsIF9lO1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgZmlsdGVyRWxlbWVudCwgcHJvcHMgfSA9IG9wdGlvbnM7XG4gICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkTnVtID0gKF9kID0gKF9jID0gKF9iID0gKF9hID0gcHJvcHMgPT09IG51bGwgfHwgcHJvcHMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHByb3BzLm1ldGFEYXRhKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EucHJvcHMpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi52YWx1ZSkgPT09IG51bGwgfHwgX2MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jLmxlbmd0aCkgIT09IG51bGwgJiYgX2QgIT09IHZvaWQgMCA/IF9kIDogMDtcbiAgICAgICAgICAgICAgICByZXR1cm4gX2pzeHMoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ3BhbmVsLWhlYWRlcicpLCBjaGlsZHJlbjogW19qc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdwYW5lbC1oZWFkZXItaW5mbycpLCBjaGlsZHJlbjogW19qc3hzKFwic3BhblwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygncGFuZWwtaGVhZGVyLWluZm8tY291bnQnKSwgY2hpbGRyZW46IFtzZWxlY3RlZE51bSwgXCIgc2VsZWN0ZWRcIl0gfSksIF9qc3hzKFwic3BhblwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygncGFuZWwtaGVhZGVyLWluZm8tY2xlYXInKSwgb25DbGljazogZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLnVwZGF0ZU1vZGVsKGUsIFtdLCBbXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBjaGlsZHJlbjogW19qc3goSWNvbnMsIHsgbmFtZTogJ2Nsb3NlJywgc2l6ZTogSUNPTl9TSVpFX1NNLCBjb2xvcjogQ09MT1JfTkVHQVRJVkUsIHdyYXBwZXJDbHM6IGNsYXNzZXMoJ3BhbmVsLWhlYWRlci1pbmZvLWNsZWFyLWljb24nKSB9KSwgXCJDbGVhciBhbGxcIl0gfSldIH0pLCAoX2UgPSBmaWx0ZXJFbGVtZW50ID09PSBudWxsIHx8IGZpbHRlckVsZW1lbnQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGZpbHRlckVsZW1lbnQucHJvcHMpID09PSBudWxsIHx8IF9lID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZS5jaGlsZHJlbl0gfSk7XG4gICAgICAgICAgICB9IH0sIHByb3BzKSlcbiAgICAgICAgOiBfanN4KERyb3Bkb3duLCBPYmplY3QuYXNzaWduKHsgY29sbGFwc2VJY29uOiBtdWx0aXBsZSA/IHZvaWQgMCA6ICgpID0+IF9qc3goSWNvbnMsIHsgbmFtZTogJ2NoZXZyb25VcCcsIGNvbG9yOiBDT0xPUl9QUklNQVJZX0JMQUNLLCBzaXplOiBJQ09OX1NJWkVfTUQgfSkgfSwgcHJvcHMpKSwgW211bHRpcGxlXSk7XG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgIHVzZUltcGVyYXRpdmVIYW5kbGUocmVmLCAoKSA9PiB7XG4gICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgIHJldHVybiAobXVsdGlwbGUgPyB7XG4gICAgICAgICAgICBwcm9wczogKF9hID0gc2VsZWN0UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5wcm9wcyxcbiAgICAgICAgICAgIGZvY3VzOiAoKSA9PiB7IHZhciBfYSwgX2I7IHJldHVybiAoX2IgPSAoX2EgPSBzZWxlY3RSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmZvY3VzKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuY2FsbChfYSk7IH0sXG4gICAgICAgICAgICBoaWRlOiAoKSA9PiB7IHZhciBfYSwgX2I7IHJldHVybiAoX2IgPSAoX2EgPSBzZWxlY3RSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmhpZGUpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5jYWxsKF9hKTsgfSxcbiAgICAgICAgICAgIHNob3c6ICgpID0+IHsgdmFyIF9hLCBfYjsgcmV0dXJuIChfYiA9IChfYSA9IHNlbGVjdFJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Euc2hvdykgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmNhbGwoX2EpOyB9LFxuICAgICAgICAgICAgZ2V0RWxlbWVudDogKCkgPT4geyB2YXIgX2EsIF9iOyByZXR1cm4gKF9iID0gKF9hID0gc2VsZWN0UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5nZXRFbGVtZW50KSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuY2FsbChfYSk7IH0sXG4gICAgICAgICAgICBnZXRJbnB1dDogKCkgPT4geyB2YXIgX2EsIF9iOyByZXR1cm4gKF9iID0gKF9hID0gc2VsZWN0UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5nZXRJbnB1dCkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmNhbGwoX2EpOyB9LFxuICAgICAgICAgICAgZ2V0T3ZlcmxheTogKCkgPT4geyB2YXIgX2EsIF9iOyByZXR1cm4gKF9iID0gKF9hID0gc2VsZWN0UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5nZXRPdmVybGF5KSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuY2FsbChfYSk7IH0sXG4gICAgICAgIH0gOiB7XG4gICAgICAgICAgICBwcm9wczogKF9iID0gc2VsZWN0UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5wcm9wcyxcbiAgICAgICAgICAgIGNsZWFyOiAoKSA9PiB7IHZhciBfYSwgX2I7IHJldHVybiAoX2IgPSAoX2EgPSBzZWxlY3RSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNsZWFyKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuY2FsbChfYSk7IH0sXG4gICAgICAgICAgICBmb2N1czogKCkgPT4geyB2YXIgX2EsIF9iOyByZXR1cm4gKF9iID0gKF9hID0gc2VsZWN0UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5mb2N1cykgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmNhbGwoX2EpOyB9LFxuICAgICAgICAgICAgaGlkZTogKCkgPT4geyB2YXIgX2EsIF9iOyByZXR1cm4gKF9iID0gKF9hID0gc2VsZWN0UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5oaWRlKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuY2FsbChfYSk7IH0sXG4gICAgICAgICAgICBzaG93OiAoKSA9PiB7IHZhciBfYSwgX2I7IHJldHVybiAoX2IgPSAoX2EgPSBzZWxlY3RSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnNob3cpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5jYWxsKF9hKTsgfSxcbiAgICAgICAgICAgIGdldEVsZW1lbnQ6ICgpID0+IHsgdmFyIF9hLCBfYjsgcmV0dXJuIChfYiA9IChfYSA9IHNlbGVjdFJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZ2V0RWxlbWVudCkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmNhbGwoX2EpOyB9LFxuICAgICAgICAgICAgZ2V0SW5wdXQ6ICgpID0+IHsgdmFyIF9hLCBfYjsgcmV0dXJuIChfYiA9IChfYSA9IHNlbGVjdFJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZ2V0SW5wdXQpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5jYWxsKF9hKTsgfSxcbiAgICAgICAgICAgIGdldE92ZXJsYXk6ICgpID0+IHsgdmFyIF9hLCBfYjsgcmV0dXJuIChfYiA9IChfYSA9IHNlbGVjdFJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZ2V0T3ZlcmxheSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmNhbGwoX2EpOyB9LFxuICAgICAgICAgICAgZ2V0Rm9jdXNJbnB1dDogKCkgPT4geyB2YXIgX2EsIF9iOyByZXR1cm4gKF9iID0gKF9hID0gc2VsZWN0UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5nZXRGb2N1c0lucHV0KSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuY2FsbChfYSk7IH0sXG4gICAgICAgICAgICBnZXRWaXJ0dWFsU2Nyb2xsZXI6ICgpID0+IHsgdmFyIF9hLCBfYjsgcmV0dXJuIChfYiA9IChfYSA9IHNlbGVjdFJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZ2V0VmlydHVhbFNjcm9sbGVyKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuY2FsbChfYSk7IH0sXG4gICAgICAgIH0pO1xuICAgIH0sIFttdWx0aXBsZV0pO1xuICAgIGNvbnN0IGhhbmRsZUNoYW5nZSA9IHVzZUV2ZW50Q2FsbGJhY2soKGUpID0+IHtcbiAgICAgICAgY29uc3QgZW1pdENoYW5nZSA9IG9uQ2hhbmdlO1xuICAgICAgICBzZXRTZWxlY3RlZChlLnZhbHVlKTtcbiAgICAgICAgZW1pdENoYW5nZSA9PT0gbnVsbCB8fCBlbWl0Q2hhbmdlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBlbWl0Q2hhbmdlKGUpO1xuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZUhpZGUgPSB1c2VFdmVudENhbGxiYWNrKCgpID0+IHtcbiAgICAgICAgc2V0SXNPcGVuKGZhbHNlKTtcbiAgICAgICAgb25IaWRlID09PSBudWxsIHx8IG9uSGlkZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25IaWRlKCk7XG4gICAgfSk7XG4gICAgY29uc3QgaGFuZGxlU2hvdyA9IHVzZUV2ZW50Q2FsbGJhY2soKCkgPT4ge1xuICAgICAgICBzZXRJc09wZW4odHJ1ZSk7XG4gICAgICAgIG9uU2hvdyA9PT0gbnVsbCB8fCBvblNob3cgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uU2hvdygpO1xuICAgICAgICBpZiAoIXJlZnJlc2hBZnRlclNob3cpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gcmVmcmVzaERPTSgpLCAwKTtcbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVTY3JvbGwgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICAgIGRlYm91bmNlZEhhbmRsZVNjcm9sbC5jYW5jZWwoKTtcbiAgICAgICAgc2V0SXNTY3JvbGxpbmcodHJ1ZSk7XG4gICAgICAgIGRlYm91bmNlZEhhbmRsZVNjcm9sbCgpO1xuICAgIH0sIFtkZWJvdW5jZWRIYW5kbGVTY3JvbGxdKTtcbiAgICByZXR1cm4gKF9qc3goU2VsZWN0V3JhcHBlciwgeyBsYWJlbDogbGFiZWwsIG1lc3NhZ2U6IG1lc3NhZ2UsIHJlcXVpcmVkOiByZXF1aXJlZCwgcHJlZml4Q2xzOiBwcmVmaXhDbHMsIHdyYXBwZXJDbHM6IHdyYXBwZXJDbHMsIGxhYmVsQ2xzOiBsYWJlbENscywgbWVzc2FnZUNsczogbWVzc2FnZUNscywgc3VjY2Vzczogc3VjY2VzcywgaW52YWxpZDogaW52YWxpZCwgZGlzYWJsZWQ6IGRpc2FibGVkLCBsb2FkaW5nOiBsb2FkaW5nLCBjaGlsZHJlbjogX2pzeChTZWxlY3RDb21wb25lbnQsIE9iamVjdC5hc3NpZ24oe30sIGZpbHRlckljb25Qcm9wcywgeyBpZDogaWQsIHJlZjogc2VsZWN0UmVmLCBuYW1lOiBuYW1lLCBsb2FkaW5nOiBsb2FkaW5nLCBmaWx0ZXJQbGFjZWhvbGRlcjogRklMVEVSX1BMQUNFSE9MREVSLCByZXF1aXJlZDogcmVxdWlyZWQsIGRpc2FibGVkOiBkaXNhYmxlZCwgaW52YWxpZDogaW52YWxpZCwgb3B0aW9uczogb3B0aW9ucywgcGxhY2Vob2xkZXI6IHBsYWNlaG9sZGVyLCB2YWx1ZTogc2VsZWN0ZWQgPT0gbnVsbCA/IHVuZGVmaW5lZCA6IHNlbGVjdGVkLCBjbGFzc05hbWU6IHNlbGVjdENscywgaXRlbVRlbXBsYXRlOiAob3B0aW9uKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9qc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdwYW5lbC1pdGVtJyksIG9uQ2xpY2s6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbXVsdGlwbGUgJiYgdW5zZWxlY3RhYmxlID09PSBVTlNFTEVDVEFCTEVfT04gJiYgb3B0aW9uLnZhbHVlID09PSBzZWxlY3RlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfYSA9IHNlbGVjdFJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY2xlYXIoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSwgY2hpbGRyZW46IFtfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdwYW5lbC1pdGVtLWxhYmVsJyksIGNoaWxkcmVuOiBpdGVtVGVtcGxhdGUgPyBpdGVtVGVtcGxhdGUob3B0aW9uKSA6IG9wdGlvbi5sYWJlbCB9KSwgX2pzeChJY29ucywgeyBuYW1lOiAnY2hlY2snLCBzaXplOiBJQ09OX1NJWkVfU00sIGNvbG9yOiBDT0xPUl9QUklNQVJZX0JMVUUgfSldIH0pO1xuICAgICAgICAgICAgfSwgbG9hZGluZ0ljb246IF9qc3goU3Bpbm5lciwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ2xvYWRpbmctaWNvbicpLCBzdHJva2VXaWR0aDogU1BJTk5FUl9TVFJPS0VfV0lEVEggfSksIHBhbmVsQ2xhc3NOYW1lOiBjbGFzc2VzKCdwYW5lbCcsIGpvaW5DbHMocGFuZWxDbGFzc05hbWUsIGlzSG92ZXIgJiYgY2xhc3NlcygncGFuZWwtaG92ZXInKSwgaXNTY3JvbGxpbmcgJiYgY2xhc3NlcygncGFuZWwtc2Nyb2xsaW5nJyksIHJlc3QuYXBwZW5kVG8gPT09ICdzZWxmJyAmJiBjbGFzc2VzKCdwYW5lbC1hcHBlbmQtc2VsZicpKSksIG9uQ2hhbmdlOiBoYW5kbGVDaGFuZ2UsIG9uSGlkZTogaGFuZGxlSGlkZSwgb25TaG93OiBoYW5kbGVTaG93LCBkcm9wZG93bkljb246ICgpID0+IF9qc3goSWNvbnMsIHsgbmFtZTogJ2NoZXZyb25Eb3duJywgY29sb3I6IENPTE9SX1BSSU1BUllfQkxBQ0ssIHNpemU6IElDT05fU0laRV9NRCB9KSwgcHQ6IHtcbiAgICAgICAgICAgICAgICB3cmFwcGVyOiB7XG4gICAgICAgICAgICAgICAgICAgIG9uU2Nyb2xsOiBoYW5kbGVTY3JvbGxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHBhbmVsOiB7XG4gICAgICAgICAgICAgICAgICAgIG9uTW91c2VFbnRlcjogKCkgPT4gc2V0SXNIb3Zlcih0cnVlKSxcbiAgICAgICAgICAgICAgICAgICAgb25Nb3VzZUxlYXZlOiAoKSA9PiBzZXRJc0hvdmVyKGZhbHNlKSxcbiAgICAgICAgICAgICAgICAgICAgb25Ub3VjaFN0YXJ0OiAoKSA9PiBzZXRJc0hvdmVyKHRydWUpLFxuICAgICAgICAgICAgICAgICAgICBvblRvdWNoRW5kOiAoKSA9PiBzZXRJc0hvdmVyKGZhbHNlKSxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IH0pKSB9KSk7XG59O1xuU2VsZWN0LkN1c3RvbURyb3Bkb3duID0gQ3VzdG9tRHJvcGRvd247XG5leHBvcnQgZGVmYXVsdCBtZW1vKFNlbGVjdCk7IixudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
|