@i-novus/n2o-components 1.0.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/index.js +0 -0
- package/lib/display/Alerts/Alert.d.ts +2 -0
- package/lib/display/Alerts/Alert.js +121 -0
- package/lib/display/Alerts/AlertSection.d.ts +18 -0
- package/lib/display/Alerts/AlertSection.js +64 -0
- package/lib/display/Alerts/AlertWrapper.d.ts +6 -0
- package/lib/display/Alerts/AlertWrapper.js +39 -0
- package/lib/display/Alerts/DefaultAlert.d.ts +6 -0
- package/lib/display/Alerts/DefaultAlert.js +125 -0
- package/lib/display/Alerts/LoaderAlert.d.ts +5 -0
- package/lib/display/Alerts/LoaderAlert.js +36 -0
- package/lib/display/Alerts/types.d.ts +49 -0
- package/lib/display/Alerts/types.js +24 -0
- package/lib/display/Alerts/utils.d.ts +15 -0
- package/lib/display/Alerts/utils.js +102 -0
- package/lib/display/Badge/Badge.d.ts +16 -0
- package/lib/display/Badge/Badge.js +77 -0
- package/lib/display/Badge/enums.d.ts +9 -0
- package/lib/display/Badge/enums.js +23 -0
- package/lib/display/Badge/utils.d.ts +9 -0
- package/lib/display/Badge/utils.js +49 -0
- package/lib/display/Block.d.ts +369 -0
- package/lib/display/Block.js +38 -0
- package/lib/display/CodeViewer/CodeViewer.d.ts +13 -0
- package/lib/display/CodeViewer/CodeViewer.js +96 -0
- package/lib/display/Drawer/Drawer.d.ts +25 -0
- package/lib/display/Drawer/Drawer.js +99 -0
- package/lib/display/DropdownCustomItem.d.ts +7 -0
- package/lib/display/DropdownCustomItem.js +23 -0
- package/lib/display/Filter/Buttons.d.ts +11 -0
- package/lib/display/Filter/Buttons.js +42 -0
- package/lib/display/Filter/Filter.d.ts +8 -0
- package/lib/display/Filter/Filter.js +38 -0
- package/lib/display/HelpPopover.d.ts +16 -0
- package/lib/display/HelpPopover.js +104 -0
- package/lib/display/Html.d.ts +8 -0
- package/lib/display/Html.js +29 -0
- package/lib/display/Icon/Icon.d.ts +11 -0
- package/lib/display/Icon/Icon.js +42 -0
- package/lib/display/Image/Image.d.ts +30 -0
- package/lib/display/Image/Image.js +93 -0
- package/lib/display/Image/ImageInfo.d.ts +7 -0
- package/lib/display/Image/ImageInfo.js +23 -0
- package/lib/display/InputIcon.d.ts +13 -0
- package/lib/display/InputIcon.js +33 -0
- package/lib/display/NavItemImage/NavItemImage.d.ts +9 -0
- package/lib/display/NavItemImage/NavItemImage.js +35 -0
- package/lib/display/OutputList.d.ts +12 -0
- package/lib/display/OutputList.js +46 -0
- package/lib/display/OutputListItem.d.ts +10 -0
- package/lib/display/OutputListItem.js +58 -0
- package/lib/display/OutputText.d.ts +15 -0
- package/lib/display/OutputText.js +170 -0
- package/lib/display/Pagination/Pagination.d.ts +2 -0
- package/lib/display/Pagination/Pagination.js +273 -0
- package/lib/display/Pagination/PaginationButton.d.ts +13 -0
- package/lib/display/Pagination/PaginationButton.js +53 -0
- package/lib/display/Pagination/types.d.ts +62 -0
- package/lib/display/Pagination/types.js +36 -0
- package/lib/display/PopoverConfirm/PopoverConfirm.d.ts +30 -0
- package/lib/display/PopoverConfirm/PopoverConfirm.js +87 -0
- package/lib/display/ProgressControl/ProgressControl.d.ts +17 -0
- package/lib/display/ProgressControl/ProgressControl.js +68 -0
- package/lib/display/Slider.d.ts +23 -0
- package/lib/display/Slider.js +107 -0
- package/lib/display/Status.d.ts +9 -0
- package/lib/display/Status.js +40 -0
- package/lib/display/StatusText/StatusText.d.ts +10 -0
- package/lib/display/StatusText/StatusText.js +35 -0
- package/lib/display/StatusText/types.d.ts +18 -0
- package/lib/display/StatusText/types.js +19 -0
- package/lib/display/StatusText/utils.d.ts +3 -0
- package/lib/display/StatusText/utils.js +29 -0
- package/lib/display/Text.d.ts +12 -0
- package/lib/display/Text.js +38 -0
- package/lib/display/Typography/Base.d.ts +32 -0
- package/lib/display/Typography/Base.js +259 -0
- package/lib/display/Typography/ContentEditable.d.ts +15 -0
- package/lib/display/Typography/ContentEditable.js +86 -0
- package/lib/display/Typography/Paragraph.d.ts +4 -0
- package/lib/display/Typography/Paragraph.js +23 -0
- package/lib/display/Typography/Text.d.ts +9 -0
- package/lib/display/Typography/Text.js +37 -0
- package/lib/display/Typography/Title.d.ts +7 -0
- package/lib/display/Typography/Title.js +28 -0
- package/lib/display/Typography/utils.d.ts +13 -0
- package/lib/display/Typography/utils.js +75 -0
- package/lib/helpers/HelpPopover.d.ts +9 -0
- package/lib/helpers/HelpPopover.js +46 -0
- package/lib/helpers/withRightPlaceholder.d.ts +9 -0
- package/lib/helpers/withRightPlaceholder.js +35 -0
- package/lib/inputs/Checkbox/Checkbox.d.ts +29 -0
- package/lib/inputs/Checkbox/Checkbox.js +117 -0
- package/lib/inputs/Checkbox/CheckboxControl.d.ts +7 -0
- package/lib/inputs/Checkbox/CheckboxControl.js +33 -0
- package/lib/inputs/CheckboxGroup/CheckboxGroup.d.ts +11 -0
- package/lib/inputs/CheckboxGroup/CheckboxGroup.js +84 -0
- package/lib/inputs/CodeEditor/CodeEditor.d.ts +21 -0
- package/lib/inputs/CodeEditor/CodeEditor.js +85 -0
- package/lib/inputs/DatePicker/Calendar.d.ts +65 -0
- package/lib/inputs/DatePicker/Calendar.js +556 -0
- package/lib/inputs/DatePicker/CalendarHeader.d.ts +26 -0
- package/lib/inputs/DatePicker/CalendarHeader.js +213 -0
- package/lib/inputs/DatePicker/Clock.d.ts +10 -0
- package/lib/inputs/DatePicker/Clock.js +45 -0
- package/lib/inputs/DatePicker/DateInput.d.ts +44 -0
- package/lib/inputs/DatePicker/DateInput.js +262 -0
- package/lib/inputs/DatePicker/DateInputGroup.d.ts +20 -0
- package/lib/inputs/DatePicker/DateInputGroup.js +77 -0
- package/lib/inputs/DatePicker/DateInterval.d.ts +24 -0
- package/lib/inputs/DatePicker/DateInterval.js +92 -0
- package/lib/inputs/DatePicker/DatePicker.d.ts +22 -0
- package/lib/inputs/DatePicker/DatePicker.js +36 -0
- package/lib/inputs/DatePicker/DateTimeControl.d.ts +98 -0
- package/lib/inputs/DatePicker/DateTimeControl.js +452 -0
- package/lib/inputs/DatePicker/Day.d.ts +14 -0
- package/lib/inputs/DatePicker/Day.js +50 -0
- package/lib/inputs/DatePicker/PopUp.d.ts +19 -0
- package/lib/inputs/DatePicker/PopUp.js +71 -0
- package/lib/inputs/DatePicker/types.d.ts +31 -0
- package/lib/inputs/DatePicker/types.js +25 -0
- package/lib/inputs/DatePicker/utils.d.ts +39 -0
- package/lib/inputs/DatePicker/utils.js +304 -0
- package/lib/inputs/Input.d.ts +51 -0
- package/lib/inputs/Input.js +200 -0
- package/lib/inputs/InputMask/InputMask.d.ts +23 -0
- package/lib/inputs/InputMask/InputMask.js +310 -0
- package/lib/inputs/InputMoney/InputMoney.d.ts +101 -0
- package/lib/inputs/InputMoney/InputMoney.js +258 -0
- package/lib/inputs/InputNumber/InputNumber.d.ts +29 -0
- package/lib/inputs/InputNumber/InputNumber.js +316 -0
- package/lib/inputs/InputNumber/index.d.ts +1 -0
- package/lib/inputs/InputNumber/index.js +14 -0
- package/lib/inputs/InputNumber/types.d.ts +18 -0
- package/lib/inputs/InputNumber/types.js +14 -0
- package/lib/inputs/InputNumber/utils.d.ts +6 -0
- package/lib/inputs/InputNumber/utils.js +86 -0
- package/lib/inputs/InputPassword/InputPassword.d.ts +10 -0
- package/lib/inputs/InputPassword/InputPassword.js +81 -0
- package/lib/inputs/InputSelect/InputAddon.d.ts +17 -0
- package/lib/inputs/InputSelect/InputAddon.js +31 -0
- package/lib/inputs/InputSelect/InputContent.d.ts +63 -0
- package/lib/inputs/InputSelect/InputContent.js +188 -0
- package/lib/inputs/InputSelect/InputSelect.d.ts +296 -0
- package/lib/inputs/InputSelect/InputSelect.js +795 -0
- package/lib/inputs/InputSelect/InputSelectGroup.d.ts +43 -0
- package/lib/inputs/InputSelect/InputSelectGroup.js +113 -0
- package/lib/inputs/InputSelect/PopupItems.d.ts +55 -0
- package/lib/inputs/InputSelect/PopupItems.js +357 -0
- package/lib/inputs/InputSelect/PopupList.d.ts +82 -0
- package/lib/inputs/InputSelect/PopupList.js +138 -0
- package/lib/inputs/InputSelect/SelectedItems.d.ts +17 -0
- package/lib/inputs/InputSelect/SelectedItems.js +125 -0
- package/lib/inputs/InputSelect/constants.d.ts +4 -0
- package/lib/inputs/InputSelect/constants.js +15 -0
- package/lib/inputs/InputSelect/types.d.ts +16 -0
- package/lib/inputs/InputSelect/types.js +16 -0
- package/lib/inputs/InputSelect/utils.d.ts +9 -0
- package/lib/inputs/InputSelect/utils.js +142 -0
- package/lib/inputs/InputSelectTree/InputSelectTree.d.ts +114 -0
- package/lib/inputs/InputSelectTree/InputSelectTree.js +466 -0
- package/lib/inputs/InputSelectTree/TreeSelectNode.d.ts +36 -0
- package/lib/inputs/InputSelectTree/TreeSelectNode.js +63 -0
- package/lib/inputs/InputSelectTree/allProps.d.ts +123 -0
- package/lib/inputs/InputSelectTree/allProps.js +48 -0
- package/lib/inputs/InputSelectTree/until.d.ts +4 -0
- package/lib/inputs/InputSelectTree/until.js +83 -0
- package/lib/inputs/InputText.d.ts +41 -0
- package/lib/inputs/InputText.js +170 -0
- package/lib/inputs/NumberPicker/NumberPicker.d.ts +15 -0
- package/lib/inputs/NumberPicker/NumberPicker.js +129 -0
- package/lib/inputs/NumberPicker/NumberPickerButton.d.ts +8 -0
- package/lib/inputs/NumberPicker/NumberPickerButton.js +64 -0
- package/lib/inputs/NumberPicker/index.d.ts +1 -0
- package/lib/inputs/NumberPicker/index.js +14 -0
- package/lib/inputs/NumberPicker/utils.d.ts +2 -0
- package/lib/inputs/NumberPicker/utils.js +31 -0
- package/lib/inputs/RadioGroup/default/Group.d.ts +15 -0
- package/lib/inputs/RadioGroup/default/Group.js +63 -0
- package/lib/inputs/RadioGroup/default/Input.d.ts +17 -0
- package/lib/inputs/RadioGroup/default/Input.js +77 -0
- package/lib/inputs/RadioGroup/tabs/Group.d.ts +3 -0
- package/lib/inputs/RadioGroup/tabs/Group.js +24 -0
- package/lib/inputs/RadioGroup/tabs/Input.d.ts +3 -0
- package/lib/inputs/RadioGroup/tabs/Input.js +21 -0
- package/lib/inputs/Rating/Rating.d.ts +30 -0
- package/lib/inputs/Rating/Rating.js +212 -0
- package/lib/inputs/Select/Popup.d.ts +31 -0
- package/lib/inputs/Select/Popup.js +131 -0
- package/lib/inputs/Select/Select.d.ts +225 -0
- package/lib/inputs/Select/Select.js +705 -0
- package/lib/inputs/Select/SelectInput.d.ts +19 -0
- package/lib/inputs/Select/SelectInput.js +85 -0
- package/lib/inputs/Select/utils.d.ts +1 -0
- package/lib/inputs/Select/utils.js +28 -0
- package/lib/inputs/Switch/Switch.d.ts +11 -0
- package/lib/inputs/Switch/Switch.js +41 -0
- package/lib/inputs/TextArea.d.ts +12 -0
- package/lib/inputs/TextArea.js +54 -0
- package/lib/inputs/TextEditor/TextEditor.d.ts +11 -0
- package/lib/inputs/TextEditor/TextEditor.js +89 -0
- package/lib/inputs/TimePicker/TimePicker.d.ts +50 -0
- package/lib/inputs/TimePicker/TimePicker.js +398 -0
- package/lib/inputs/utils.d.ts +5 -0
- package/lib/inputs/utils.js +39 -0
- package/lib/layouts/ScrollContainer.d.ts +218 -0
- package/lib/layouts/ScrollContainer.js +128 -0
- package/lib/layouts/Spinner/CoverSpinner.d.ts +29 -0
- package/lib/layouts/Spinner/CoverSpinner.js +153 -0
- package/lib/layouts/Spinner/InlineSpinner.d.ts +5 -0
- package/lib/layouts/Spinner/InlineSpinner.js +27 -0
- package/lib/layouts/Spinner/Spinner.d.ts +31 -0
- package/lib/layouts/Spinner/Spinner.js +178 -0
- package/lib/styles/components/Calendar.scss +125 -0
- package/lib/styles/components/CalendarHeader.scss +75 -0
- package/lib/styles/components/DateInputGroup.scss +39 -0
- package/lib/styles/components/DatePicker.scss +18 -0
- package/lib/styles/components/Day.scss +29 -0
- package/lib/styles/components/OutputList.scss +14 -0
- package/lib/styles/components/OutputText.scss +50 -0
- package/lib/styles/controls/CodeEditor.scss +4 -0
- package/lib/styles/controls/InputNumber.scss +36 -0
- package/lib/styles/controls/InputPassword.scss +17 -0
- package/lib/styles/controls/InputText.scss +59 -0
- package/lib/styles/controls/NumberPicker.scss +36 -0
- package/lib/styles/controls/ProgressControl.scss +3 -0
- package/lib/styles/controls/Slider.scss +32 -0
- package/lib/styles/controls/Switch.scss +105 -0
- package/lib/styles/controls/TextEditor.scss +23 -0
- package/lib/styles/controls/TimePicker.scss +32 -0
- package/lib/styles/n2o/variables.scss +328 -0
- package/lib/styles/theme/variables.scss +81 -0
- package/lib/styles/variables.scss +10 -0
- package/lib/types.d.ts +25 -0
- package/lib/types.js +6 -0
- package/lib/utils/id.d.ts +3 -0
- package/lib/utils/id.js +46 -0
- package/lib/utils/isEmptyModel.d.ts +1 -0
- package/lib/utils/isEmptyModel.js +21 -0
- package/lib/utils/parseFormatter.js +153 -0
- package/package.json +196 -0
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import { Filter, TOption } from '../InputSelect/types';
|
|
3
|
+
import { TreeNode } from './TreeSelectNode';
|
|
4
|
+
/**
|
|
5
|
+
* @reactProps {function} onBlur
|
|
6
|
+
* @reactProps {string} placeholder
|
|
7
|
+
* @reactProps {function} setTreeExpandedKeys
|
|
8
|
+
* @reactProps {array} treeExpandedKeys
|
|
9
|
+
* @reactProps {node} children
|
|
10
|
+
* @returns {*}
|
|
11
|
+
* @constructor
|
|
12
|
+
* @param props
|
|
13
|
+
*/
|
|
14
|
+
declare function InputSelectTree({ t, fetchData, onFocus, value, onBlur, placeholder, notFoundContent, loading, parentFieldId, valueFieldId, labelFieldId, iconFieldId, imageFieldId, badge, hasChildrenFieldId, options, onSearch, onSelect, onChange, hasCheckboxes, filter, multiSelect, children, onClose, onToggle, ajax, className, showCheckedStrategy, maxTagTextLength, disabled, }: Props): JSX.Element;
|
|
15
|
+
declare namespace InputSelectTree {
|
|
16
|
+
var defaultProps: Props;
|
|
17
|
+
}
|
|
18
|
+
declare type Props = {
|
|
19
|
+
/**
|
|
20
|
+
* Флаг динамичексой подгрузки данных. В данных обязательно указывать параметр hasChildrens
|
|
21
|
+
*/
|
|
22
|
+
ajax?: boolean;
|
|
23
|
+
/**
|
|
24
|
+
* Данные для badge
|
|
25
|
+
*/
|
|
26
|
+
badge: object;
|
|
27
|
+
children: ReactNode;
|
|
28
|
+
className?: string;
|
|
29
|
+
/**
|
|
30
|
+
* Флаг неактивности
|
|
31
|
+
*/
|
|
32
|
+
disabled: boolean;
|
|
33
|
+
/**
|
|
34
|
+
* Callback на открытие
|
|
35
|
+
*/
|
|
36
|
+
fetchData?: any;
|
|
37
|
+
/**
|
|
38
|
+
* Варианты фильтрации
|
|
39
|
+
*/
|
|
40
|
+
filter: Filter;
|
|
41
|
+
/**
|
|
42
|
+
* Флаг для показа чекбоксов в элементах дерева. Переводит InputSelectTree в мульти режим
|
|
43
|
+
*/
|
|
44
|
+
hasCheckboxes: boolean;
|
|
45
|
+
/**
|
|
46
|
+
* Значение ключа hasChildren в данных
|
|
47
|
+
*/
|
|
48
|
+
hasChildrenFieldId: string;
|
|
49
|
+
/**
|
|
50
|
+
* Значение ключа icon в данных
|
|
51
|
+
*/
|
|
52
|
+
iconFieldId: string;
|
|
53
|
+
/**
|
|
54
|
+
* Значение ключа image в данных
|
|
55
|
+
*/
|
|
56
|
+
imageFieldId: string;
|
|
57
|
+
/**
|
|
58
|
+
* Значение ключа label в данных
|
|
59
|
+
*/
|
|
60
|
+
labelFieldId: string;
|
|
61
|
+
/**
|
|
62
|
+
* Флаг анимации загрузки
|
|
63
|
+
*/
|
|
64
|
+
loading: boolean;
|
|
65
|
+
/**
|
|
66
|
+
* Количество символов выбранных элементов в chechbox режиме
|
|
67
|
+
*/
|
|
68
|
+
maxTagTextLength: number;
|
|
69
|
+
/**
|
|
70
|
+
* Мульти выбор значений
|
|
71
|
+
*/
|
|
72
|
+
multiSelect: boolean;
|
|
73
|
+
notFoundContent?: any;
|
|
74
|
+
onBlur(arg?: Props['value']): void;
|
|
75
|
+
/**
|
|
76
|
+
* Calback изменения
|
|
77
|
+
*/
|
|
78
|
+
onChange(arg: Props['value']): void;
|
|
79
|
+
/**
|
|
80
|
+
* Callback на закрытие
|
|
81
|
+
*/
|
|
82
|
+
onClose(): void;
|
|
83
|
+
onFocus(): void;
|
|
84
|
+
/**
|
|
85
|
+
* Callback на поиск
|
|
86
|
+
*/
|
|
87
|
+
onSearch(arg: Props['value']): void;
|
|
88
|
+
onSelect(arg: Props['value']): void;
|
|
89
|
+
onToggle(arg: boolean): void;
|
|
90
|
+
/**
|
|
91
|
+
* Данные для построения дерева
|
|
92
|
+
*/
|
|
93
|
+
options: TOption[];
|
|
94
|
+
/**
|
|
95
|
+
* Значение ключа parent в данных
|
|
96
|
+
*/
|
|
97
|
+
parentFieldId: string;
|
|
98
|
+
/**
|
|
99
|
+
* Placeholder контрола
|
|
100
|
+
*/
|
|
101
|
+
placeholder: string;
|
|
102
|
+
showCheckedStrategy: string;
|
|
103
|
+
t(arg: string): void;
|
|
104
|
+
/**
|
|
105
|
+
* Значение
|
|
106
|
+
*/
|
|
107
|
+
value?: any;
|
|
108
|
+
/**
|
|
109
|
+
* Значение ключа value в данных
|
|
110
|
+
*/
|
|
111
|
+
valueFieldId: string;
|
|
112
|
+
};
|
|
113
|
+
export { TreeNode, InputSelectTree };
|
|
114
|
+
export declare const InputSelectTreeComponent: any;
|
|
@@ -0,0 +1,466 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
6
|
+
|
|
7
|
+
Object.defineProperty(exports, "__esModule", {
|
|
8
|
+
value: true
|
|
9
|
+
});
|
|
10
|
+
exports.InputSelectTree = InputSelectTree;
|
|
11
|
+
Object.defineProperty(exports, "TreeNode", {
|
|
12
|
+
enumerable: true,
|
|
13
|
+
get: function get() {
|
|
14
|
+
return _TreeSelectNode.TreeNode;
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
exports.InputSelectTreeComponent = void 0;
|
|
18
|
+
|
|
19
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
20
|
+
|
|
21
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
22
|
+
|
|
23
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
24
|
+
|
|
25
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
26
|
+
|
|
27
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
28
|
+
|
|
29
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
30
|
+
|
|
31
|
+
var _rcTreeSelect = _interopRequireDefault(require("rc-tree-select"));
|
|
32
|
+
|
|
33
|
+
var _difference = _interopRequireDefault(require("lodash/difference"));
|
|
34
|
+
|
|
35
|
+
var _filter = _interopRequireDefault(require("lodash/filter"));
|
|
36
|
+
|
|
37
|
+
var _find = _interopRequireDefault(require("lodash/find"));
|
|
38
|
+
|
|
39
|
+
var _isArray = _interopRequireDefault(require("lodash/isArray"));
|
|
40
|
+
|
|
41
|
+
var _isEmpty = _interopRequireDefault(require("lodash/isEmpty"));
|
|
42
|
+
|
|
43
|
+
var _keys = _interopRequireDefault(require("lodash/keys"));
|
|
44
|
+
|
|
45
|
+
var _map = _interopRequireDefault(require("lodash/map"));
|
|
46
|
+
|
|
47
|
+
var _some = _interopRequireDefault(require("lodash/some"));
|
|
48
|
+
|
|
49
|
+
var _classnames = _interopRequireDefault(require("classnames"));
|
|
50
|
+
|
|
51
|
+
var _reactI18next = require("react-i18next");
|
|
52
|
+
|
|
53
|
+
var _reactOnclickoutside = _interopRequireDefault(require("react-onclickoutside"));
|
|
54
|
+
|
|
55
|
+
var _Icon = require("../../display/Icon/Icon");
|
|
56
|
+
|
|
57
|
+
var _InlineSpinner = require("../../layouts/Spinner/InlineSpinner");
|
|
58
|
+
|
|
59
|
+
var _Checkbox = require("../Checkbox/Checkbox");
|
|
60
|
+
|
|
61
|
+
var _TreeSelectNode = require("./TreeSelectNode");
|
|
62
|
+
|
|
63
|
+
var _until = require("./until");
|
|
64
|
+
|
|
65
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
66
|
+
|
|
67
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
68
|
+
|
|
69
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
70
|
+
|
|
71
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
72
|
+
|
|
73
|
+
var renderSwitcherIcon = function renderSwitcherIcon(_ref) {
|
|
74
|
+
var isLeaf = _ref.isLeaf;
|
|
75
|
+
return isLeaf ? null : /*#__PURE__*/_react["default"].createElement(_Icon.Icon, {
|
|
76
|
+
name: "fa fa-chevron-right"
|
|
77
|
+
});
|
|
78
|
+
}; // eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
var getPopupContainer = function getPopupContainer(container) {
|
|
82
|
+
return container;
|
|
83
|
+
};
|
|
84
|
+
/**
|
|
85
|
+
* Взять данные по ids.
|
|
86
|
+
* ['id', 'id'] => [{ id: 'id', ... },{ id: 'id', ... }]
|
|
87
|
+
* @param options
|
|
88
|
+
* @param ids
|
|
89
|
+
* @param valueFieldId
|
|
90
|
+
*/
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
var getDataByIds = function getDataByIds(options, ids, valueFieldId) {
|
|
94
|
+
return (0, _filter["default"])(options, function (node) {
|
|
95
|
+
return (0, _some["default"])(ids, function (v) {
|
|
96
|
+
return v === node[valueFieldId];
|
|
97
|
+
});
|
|
98
|
+
});
|
|
99
|
+
};
|
|
100
|
+
|
|
101
|
+
var getSingleValue = function getSingleValue(options, value, valueFieldId) {
|
|
102
|
+
return (0, _find["default"])(options, [valueFieldId, value]);
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
var getMultiValue = function getMultiValue(options, value, valueFieldId) {
|
|
106
|
+
return getDataByIds(options, value, valueFieldId);
|
|
107
|
+
};
|
|
108
|
+
/**
|
|
109
|
+
* Функция преобразования value rcTreeSelect в формат n2o
|
|
110
|
+
* Производит поиск по родителям и потомкам.
|
|
111
|
+
* rcTreeSelect не дает информации о выделенных потомках при моде 'SHOW_PARENT'
|
|
112
|
+
* и о выделенных родителях при 'SHOW_CHILD'
|
|
113
|
+
* ['id', 'id'] => [{ id: 'id', ... },{ id: 'id', ... }]
|
|
114
|
+
* @param options
|
|
115
|
+
* @param value
|
|
116
|
+
* @param multiSelect
|
|
117
|
+
* @param valueFieldId
|
|
118
|
+
* @returns {*}
|
|
119
|
+
*/
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
var getItemByValue = function getItemByValue(options, value, multiSelect, valueFieldId) {
|
|
123
|
+
if (!value) {
|
|
124
|
+
return null;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
if (!multiSelect) {
|
|
128
|
+
return getSingleValue(options, value, valueFieldId);
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
return getMultiValue(options, value, valueFieldId);
|
|
132
|
+
};
|
|
133
|
+
/**
|
|
134
|
+
* @reactProps {function} onBlur
|
|
135
|
+
* @reactProps {string} placeholder
|
|
136
|
+
* @reactProps {function} setTreeExpandedKeys
|
|
137
|
+
* @reactProps {array} treeExpandedKeys
|
|
138
|
+
* @reactProps {node} children
|
|
139
|
+
* @returns {*}
|
|
140
|
+
* @constructor
|
|
141
|
+
* @param props
|
|
142
|
+
*/
|
|
143
|
+
// TODO переделать в класс
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
function InputSelectTree(_ref2) {
|
|
147
|
+
var t = _ref2.t,
|
|
148
|
+
fetchData = _ref2.fetchData,
|
|
149
|
+
onFocus = _ref2.onFocus,
|
|
150
|
+
value = _ref2.value,
|
|
151
|
+
onBlur = _ref2.onBlur,
|
|
152
|
+
placeholder = _ref2.placeholder,
|
|
153
|
+
_ref2$notFoundContent = _ref2.notFoundContent,
|
|
154
|
+
notFoundContent = _ref2$notFoundContent === void 0 ? t('noData') : _ref2$notFoundContent,
|
|
155
|
+
loading = _ref2.loading,
|
|
156
|
+
parentFieldId = _ref2.parentFieldId,
|
|
157
|
+
valueFieldId = _ref2.valueFieldId,
|
|
158
|
+
labelFieldId = _ref2.labelFieldId,
|
|
159
|
+
iconFieldId = _ref2.iconFieldId,
|
|
160
|
+
imageFieldId = _ref2.imageFieldId,
|
|
161
|
+
badge = _ref2.badge,
|
|
162
|
+
hasChildrenFieldId = _ref2.hasChildrenFieldId,
|
|
163
|
+
options = _ref2.options,
|
|
164
|
+
onSearch = _ref2.onSearch,
|
|
165
|
+
onSelect = _ref2.onSelect,
|
|
166
|
+
onChange = _ref2.onChange,
|
|
167
|
+
hasCheckboxes = _ref2.hasCheckboxes,
|
|
168
|
+
filter = _ref2.filter,
|
|
169
|
+
multiSelect = _ref2.multiSelect,
|
|
170
|
+
children = _ref2.children,
|
|
171
|
+
onClose = _ref2.onClose,
|
|
172
|
+
onToggle = _ref2.onToggle,
|
|
173
|
+
ajax = _ref2.ajax,
|
|
174
|
+
className = _ref2.className,
|
|
175
|
+
showCheckedStrategy = _ref2.showCheckedStrategy,
|
|
176
|
+
maxTagTextLength = _ref2.maxTagTextLength,
|
|
177
|
+
disabled = _ref2.disabled;
|
|
178
|
+
var treeExpandedKeys = (0, _react.useRef)([]);
|
|
179
|
+
|
|
180
|
+
var _useState = (0, _react.useState)(''),
|
|
181
|
+
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
|
|
182
|
+
searchValue = _useState2[0],
|
|
183
|
+
setSearchValue = _useState2[1]; // eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
184
|
+
|
|
185
|
+
|
|
186
|
+
InputSelectTree.handleClickOutside = function () {
|
|
187
|
+
return setSearchValue('');
|
|
188
|
+
};
|
|
189
|
+
/**
|
|
190
|
+
* Функуия для создания дерева.
|
|
191
|
+
* Преобразует коллекцию вида [..., { ... }] в [ ..., {..., children: [...]}]
|
|
192
|
+
* Вложение происходит при совпадении valueFieldId и parentFieldId.
|
|
193
|
+
* @param items
|
|
194
|
+
* @returns {*}
|
|
195
|
+
*/
|
|
196
|
+
|
|
197
|
+
|
|
198
|
+
var treeData = (0, _react.useMemo)(function () {
|
|
199
|
+
var popupProps = {
|
|
200
|
+
prefixCls: 'n2o-select-tree',
|
|
201
|
+
iconFieldId: iconFieldId,
|
|
202
|
+
imageFieldId: imageFieldId,
|
|
203
|
+
labelFieldId: labelFieldId,
|
|
204
|
+
badge: badge
|
|
205
|
+
};
|
|
206
|
+
var items = options || [];
|
|
207
|
+
var itemsByID = (0, _toConsumableArray2["default"])(items).reduce(function (acc, item) {
|
|
208
|
+
return _objectSpread(_objectSpread({}, acc), {}, (0, _defineProperty2["default"])({}, item[valueFieldId], _objectSpread(_objectSpread(_objectSpread({}, item), {}, {
|
|
209
|
+
key: item[valueFieldId],
|
|
210
|
+
value: item[valueFieldId],
|
|
211
|
+
title: item.formattedTitle || (0, _until.visiblePartPopup)(item, popupProps)
|
|
212
|
+
}, ajax && {
|
|
213
|
+
isLeaf: !item[hasChildrenFieldId]
|
|
214
|
+
}), {}, {
|
|
215
|
+
children: []
|
|
216
|
+
})));
|
|
217
|
+
}, {} // eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
218
|
+
);
|
|
219
|
+
(0, _keys["default"])(itemsByID).forEach(function (key) {
|
|
220
|
+
if (itemsByID[key][parentFieldId] && itemsByID[itemsByID[key][parentFieldId]] && itemsByID[itemsByID[key][parentFieldId]].children) {
|
|
221
|
+
itemsByID[itemsByID[key][parentFieldId]].children.push(_objectSpread({}, itemsByID[key]));
|
|
222
|
+
}
|
|
223
|
+
});
|
|
224
|
+
return (0, _keys["default"])(itemsByID).filter(function (key) {
|
|
225
|
+
if (!itemsByID[key][parentFieldId]) {
|
|
226
|
+
return true;
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
return !!(itemsByID[key][parentFieldId] && // eslint-disable-next-line no-prototype-builtins
|
|
230
|
+
!itemsByID.hasOwnProperty(itemsByID[key][parentFieldId]));
|
|
231
|
+
}) // eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
232
|
+
.reduce(function (acc, key) {
|
|
233
|
+
return [].concat((0, _toConsumableArray2["default"])(acc), [_objectSpread({}, itemsByID[key])]);
|
|
234
|
+
}, []);
|
|
235
|
+
}, [ajax, badge, options, hasChildrenFieldId, iconFieldId, imageFieldId, labelFieldId, parentFieldId, valueFieldId]);
|
|
236
|
+
/**
|
|
237
|
+
* Функция для поиска.
|
|
238
|
+
* При поиске вызов функции происходит для каждого элемента дерева.
|
|
239
|
+
* @param input
|
|
240
|
+
* @param node
|
|
241
|
+
* @returns {*}
|
|
242
|
+
*/
|
|
243
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
244
|
+
|
|
245
|
+
var handlerFilter = (0, _react.useCallback)(function (input, node) {
|
|
246
|
+
var mode = ['includes', 'startsWith', 'endsWith'];
|
|
247
|
+
|
|
248
|
+
if (mode.includes(filter)) {
|
|
249
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
250
|
+
return String.prototype[filter].call(node.props[labelFieldId].toLowerCase(), input.toLowerCase());
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
return true;
|
|
254
|
+
}, [filter, labelFieldId]);
|
|
255
|
+
/**
|
|
256
|
+
* Функция для обратного преобразования value n2o в формат rcTreeSelect
|
|
257
|
+
* ['id', 'id'] => [{ id: 'id', ... },{ id: 'id', ... }]
|
|
258
|
+
* @param value
|
|
259
|
+
* @returns {*}
|
|
260
|
+
*/
|
|
261
|
+
|
|
262
|
+
var setValue = function setValue(value) {
|
|
263
|
+
if (!value) {
|
|
264
|
+
return [];
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
if ((0, _isArray["default"])(value)) {
|
|
268
|
+
return (0, _map["default"])(value, function (v) {
|
|
269
|
+
return v[valueFieldId];
|
|
270
|
+
});
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
return value[valueFieldId];
|
|
274
|
+
};
|
|
275
|
+
/**
|
|
276
|
+
* Функция для переопределения onChange
|
|
277
|
+
* @param value
|
|
278
|
+
*/
|
|
279
|
+
|
|
280
|
+
|
|
281
|
+
var handleChange = (0, _react.useCallback)(function (value) {
|
|
282
|
+
onChange(getItemByValue(options, value, multiSelect, valueFieldId));
|
|
283
|
+
onBlur(getItemByValue(options, value, multiSelect, valueFieldId)); // eslint-disable-next-line react-hooks/exhaustive-deps
|
|
284
|
+
}, [options, multiSelect, onChange, valueFieldId]);
|
|
285
|
+
/**
|
|
286
|
+
* Функция для переопределения onSelect
|
|
287
|
+
* @param value
|
|
288
|
+
*/
|
|
289
|
+
|
|
290
|
+
var handleSelect = (0, _react.useCallback)(function (value) {
|
|
291
|
+
onSelect(getItemByValue(options, value, multiSelect, valueFieldId));
|
|
292
|
+
onBlur(); // eslint-disable-next-line react-hooks/exhaustive-deps
|
|
293
|
+
}, [options, multiSelect, onSelect, valueFieldId]);
|
|
294
|
+
/**
|
|
295
|
+
* Функция для переопределения onSearch
|
|
296
|
+
* @param value
|
|
297
|
+
*/
|
|
298
|
+
|
|
299
|
+
var handleSearch = (0, _react.useCallback)(function (value) {
|
|
300
|
+
setSearchValue(value);
|
|
301
|
+
onSearch(value);
|
|
302
|
+
return true;
|
|
303
|
+
}, [onSearch]);
|
|
304
|
+
var clearSearch = (0, _react.useCallback)(function () {
|
|
305
|
+
setSearchValue('');
|
|
306
|
+
}, []);
|
|
307
|
+
/**
|
|
308
|
+
* Функция для контроля открытия/закрытия popup
|
|
309
|
+
* @param visible
|
|
310
|
+
* @returns {boolean}
|
|
311
|
+
*/
|
|
312
|
+
|
|
313
|
+
var handleDropdownVisibleChange = (0, _react.useCallback)(function (visible) {
|
|
314
|
+
if (visible) {
|
|
315
|
+
onFocus();
|
|
316
|
+
} // onToggle(visible)
|
|
317
|
+
// setDropdownExpanded(visible)
|
|
318
|
+
|
|
319
|
+
|
|
320
|
+
if (visible && !options.length) {
|
|
321
|
+
fetchData();
|
|
322
|
+
} else {
|
|
323
|
+
onClose();
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
if (ajax) {
|
|
327
|
+
treeExpandedKeys.current = [];
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
return false; // eslint-disable-next-line react-hooks/exhaustive-deps
|
|
331
|
+
}, [ajax, onClose, onFocus, fetchData, onToggle]);
|
|
332
|
+
/**
|
|
333
|
+
* Функция для контроля открытия/закрытия элемента дерева
|
|
334
|
+
* @param keys
|
|
335
|
+
*/
|
|
336
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
337
|
+
|
|
338
|
+
var onTreeExpand = (0, _react.useCallback)( /*#__PURE__*/function () {
|
|
339
|
+
var _ref3 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(keys) {
|
|
340
|
+
var currentKey;
|
|
341
|
+
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
342
|
+
while (1) {
|
|
343
|
+
switch (_context.prev = _context.next) {
|
|
344
|
+
case 0:
|
|
345
|
+
currentKey = (0, _difference["default"])(keys, treeExpandedKeys.current);
|
|
346
|
+
|
|
347
|
+
if (!ajax) {
|
|
348
|
+
_context.next = 4;
|
|
349
|
+
break;
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
_context.next = 4;
|
|
353
|
+
return fetchData({
|
|
354
|
+
'filter.parent_id': currentKey[0]
|
|
355
|
+
}, true);
|
|
356
|
+
|
|
357
|
+
case 4:
|
|
358
|
+
treeExpandedKeys.current = keys;
|
|
359
|
+
|
|
360
|
+
case 5:
|
|
361
|
+
case "end":
|
|
362
|
+
return _context.stop();
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
}, _callee);
|
|
366
|
+
}));
|
|
367
|
+
|
|
368
|
+
return function (_x) {
|
|
369
|
+
return _ref3.apply(this, arguments);
|
|
370
|
+
};
|
|
371
|
+
}(), [ajax, fetchData]);
|
|
372
|
+
|
|
373
|
+
var clearIcon = /*#__PURE__*/_react["default"].createElement(_Icon.Icon, {
|
|
374
|
+
onClick: clearSearch,
|
|
375
|
+
name: "fa fa-times n2o-input-select-tree__clear-icon"
|
|
376
|
+
});
|
|
377
|
+
|
|
378
|
+
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
379
|
+
className: (0, _classnames["default"])('n2o-select-tree-container', className, {
|
|
380
|
+
empty: (0, _isEmpty["default"])(value),
|
|
381
|
+
multi: multiSelect,
|
|
382
|
+
single: !multiSelect
|
|
383
|
+
})
|
|
384
|
+
}, /*#__PURE__*/_react["default"].createElement(_rcTreeSelect["default"], {
|
|
385
|
+
allowClear: !(0, _isEmpty["default"])(value),
|
|
386
|
+
value: setValue(value),
|
|
387
|
+
onDropdownVisibleChange: handleDropdownVisibleChange,
|
|
388
|
+
switcherIcon: renderSwitcherIcon,
|
|
389
|
+
suffixIcon: /*#__PURE__*/_react["default"].createElement(_Icon.Icon, {
|
|
390
|
+
name: "fa fa-chevron-down"
|
|
391
|
+
}),
|
|
392
|
+
multiple: multiSelect,
|
|
393
|
+
treeCheckable: hasCheckboxes && /*#__PURE__*/_react["default"].createElement(_Checkbox.Checkbox, {
|
|
394
|
+
inline: true
|
|
395
|
+
}),
|
|
396
|
+
treeData: treeData,
|
|
397
|
+
filterTreeNode: handlerFilter,
|
|
398
|
+
treeNodeFilterProp: labelFieldId,
|
|
399
|
+
treeNodeLabelProp: labelFieldId,
|
|
400
|
+
maxTagTextLength: maxTagTextLength,
|
|
401
|
+
clearIcon: clearIcon // иконка очищения всего инпута
|
|
402
|
+
,
|
|
403
|
+
removeIcon: (0, _isEmpty["default"])(value) ? null : clearIcon // иконка очищения итема
|
|
404
|
+
,
|
|
405
|
+
onChange: handleChange,
|
|
406
|
+
onSelect: handleSelect,
|
|
407
|
+
onSearch: handleSearch,
|
|
408
|
+
onTreeExpand: onTreeExpand,
|
|
409
|
+
showCheckedStrategy: (0, _until.getCheckedStrategy)(showCheckedStrategy),
|
|
410
|
+
getPopupContainer: getPopupContainer,
|
|
411
|
+
notFoundContent: loading ? /*#__PURE__*/_react["default"].createElement(_InlineSpinner.InlineSpinner, null) : notFoundContent,
|
|
412
|
+
placeholder: searchValue ? null : placeholder,
|
|
413
|
+
disabled: disabled,
|
|
414
|
+
searchValue: searchValue,
|
|
415
|
+
showSearch: !multiSelect,
|
|
416
|
+
listHeight: 400,
|
|
417
|
+
prefixCls: "n2o-select-tree"
|
|
418
|
+
}, children));
|
|
419
|
+
}
|
|
420
|
+
|
|
421
|
+
InputSelectTree.defaultProps = {
|
|
422
|
+
children: null,
|
|
423
|
+
hasChildrenFieldId: 'hasChildren',
|
|
424
|
+
disabled: false,
|
|
425
|
+
loading: false,
|
|
426
|
+
parentFieldId: 'parentId',
|
|
427
|
+
valueFieldId: 'id',
|
|
428
|
+
labelFieldId: 'name',
|
|
429
|
+
iconFieldId: 'icon',
|
|
430
|
+
badge: {
|
|
431
|
+
fieldId: 'badge',
|
|
432
|
+
colorFieldId: 'color'
|
|
433
|
+
},
|
|
434
|
+
imageFieldId: 'image',
|
|
435
|
+
sortFieldId: 'name',
|
|
436
|
+
filter: 'startsWith',
|
|
437
|
+
hasCheckboxes: false,
|
|
438
|
+
multiSelect: false,
|
|
439
|
+
options: [],
|
|
440
|
+
transitionName: 'slide-up',
|
|
441
|
+
choiceTransitionName: 'zoom',
|
|
442
|
+
showCheckedStrategy: 'all',
|
|
443
|
+
allowClear: true,
|
|
444
|
+
placeholder: '',
|
|
445
|
+
showSearch: true,
|
|
446
|
+
maxTagTextLength: 10,
|
|
447
|
+
onSearch: function onSearch() {},
|
|
448
|
+
onSelect: function onSelect() {},
|
|
449
|
+
onChange: function onChange() {},
|
|
450
|
+
onClose: function onClose() {},
|
|
451
|
+
onToggle: function onToggle() {},
|
|
452
|
+
onFocus: function onFocus() {},
|
|
453
|
+
onBlur: function onBlur() {},
|
|
454
|
+
onInput: function onInput() {},
|
|
455
|
+
t: function t() {}
|
|
456
|
+
};
|
|
457
|
+
var clickOutsideConfig = {
|
|
458
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
459
|
+
handleClickOutside: function handleClickOutside() {
|
|
460
|
+
return InputSelectTree.handleClickOutside;
|
|
461
|
+
}
|
|
462
|
+
};
|
|
463
|
+
var InputSelectTreeComponent = // eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
464
|
+
(0, _reactOnclickoutside["default"])((0, _reactI18next.withTranslation)()(InputSelectTree), clickOutsideConfig);
|
|
465
|
+
exports.InputSelectTreeComponent = InputSelectTreeComponent;
|
|
466
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9pbnB1dHMvSW5wdXRTZWxlY3RUcmVlL0lucHV0U2VsZWN0VHJlZS50c3giXSwibmFtZXMiOlsicmVuZGVyU3dpdGNoZXJJY29uIiwiaXNMZWFmIiwiZ2V0UG9wdXBDb250YWluZXIiLCJjb250YWluZXIiLCJnZXREYXRhQnlJZHMiLCJvcHRpb25zIiwiaWRzIiwidmFsdWVGaWVsZElkIiwibm9kZSIsInYiLCJnZXRTaW5nbGVWYWx1ZSIsInZhbHVlIiwiZ2V0TXVsdGlWYWx1ZSIsImdldEl0ZW1CeVZhbHVlIiwibXVsdGlTZWxlY3QiLCJJbnB1dFNlbGVjdFRyZWUiLCJ0IiwiZmV0Y2hEYXRhIiwib25Gb2N1cyIsIm9uQmx1ciIsInBsYWNlaG9sZGVyIiwibm90Rm91bmRDb250ZW50IiwibG9hZGluZyIsInBhcmVudEZpZWxkSWQiLCJsYWJlbEZpZWxkSWQiLCJpY29uRmllbGRJZCIsImltYWdlRmllbGRJZCIsImJhZGdlIiwiaGFzQ2hpbGRyZW5GaWVsZElkIiwib25TZWFyY2giLCJvblNlbGVjdCIsIm9uQ2hhbmdlIiwiaGFzQ2hlY2tib3hlcyIsImZpbHRlciIsImNoaWxkcmVuIiwib25DbG9zZSIsIm9uVG9nZ2xlIiwiYWpheCIsImNsYXNzTmFtZSIsInNob3dDaGVja2VkU3RyYXRlZ3kiLCJtYXhUYWdUZXh0TGVuZ3RoIiwiZGlzYWJsZWQiLCJ0cmVlRXhwYW5kZWRLZXlzIiwic2VhcmNoVmFsdWUiLCJzZXRTZWFyY2hWYWx1ZSIsImhhbmRsZUNsaWNrT3V0c2lkZSIsInRyZWVEYXRhIiwicG9wdXBQcm9wcyIsInByZWZpeENscyIsIml0ZW1zIiwiaXRlbXNCeUlEIiwicmVkdWNlIiwiYWNjIiwiaXRlbSIsImtleSIsInRpdGxlIiwiZm9ybWF0dGVkVGl0bGUiLCJmb3JFYWNoIiwicHVzaCIsImhhc093blByb3BlcnR5IiwiaGFuZGxlckZpbHRlciIsImlucHV0IiwibW9kZSIsImluY2x1ZGVzIiwiU3RyaW5nIiwicHJvdG90eXBlIiwiY2FsbCIsInByb3BzIiwidG9Mb3dlckNhc2UiLCJzZXRWYWx1ZSIsImhhbmRsZUNoYW5nZSIsImhhbmRsZVNlbGVjdCIsImhhbmRsZVNlYXJjaCIsImNsZWFyU2VhcmNoIiwiaGFuZGxlRHJvcGRvd25WaXNpYmxlQ2hhbmdlIiwidmlzaWJsZSIsImxlbmd0aCIsImN1cnJlbnQiLCJvblRyZWVFeHBhbmQiLCJrZXlzIiwiY3VycmVudEtleSIsImNsZWFySWNvbiIsImVtcHR5IiwibXVsdGkiLCJzaW5nbGUiLCJkZWZhdWx0UHJvcHMiLCJmaWVsZElkIiwiY29sb3JGaWVsZElkIiwic29ydEZpZWxkSWQiLCJ0cmFuc2l0aW9uTmFtZSIsImNob2ljZVRyYW5zaXRpb25OYW1lIiwiYWxsb3dDbGVhciIsInNob3dTZWFyY2giLCJvbklucHV0IiwiY2xpY2tPdXRzaWRlQ29uZmlnIiwiSW5wdXRTZWxlY3RUcmVlQ29tcG9uZW50Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBR0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBQ0E7Ozs7Ozs7Ozs7QUFFQSxJQUFNQSxrQkFBa0IsR0FBRyxTQUFyQkEsa0JBQXFCO0FBQUEsTUFBR0MsTUFBSCxRQUFHQSxNQUFIO0FBQUEsU0FBb0NBLE1BQU0sR0FBRyxJQUFILGdCQUFVLGdDQUFDLFVBQUQ7QUFBTSxJQUFBLElBQUksRUFBQztBQUFYLElBQXBEO0FBQUEsQ0FBM0IsQyxDQUNBOzs7QUFDQSxJQUFNQyxpQkFBaUIsR0FBRyxTQUFwQkEsaUJBQW9CLENBQUNDLFNBQUQ7QUFBQSxTQUFvQkEsU0FBcEI7QUFBQSxDQUExQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQSxJQUFNQyxZQUFZLEdBQUcsU0FBZkEsWUFBZSxDQUFDQyxPQUFELEVBQTRCQyxHQUE1QixF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QSxvQkFBb0IsRUFBRSxNQXBCSztBQXFCM0JuRCxFQUFBQSxtQkFBbUIsRUFBRSxLQXJCTTtBQXNCM0JvRCxFQUFBQSxVQUFVLEVBQUUsSUF0QmU7QUF1QjNCdkUsRUFBQUEsV0FBVyxFQUFFLEVBdkJjO0FBd0IzQndFLEVBQUFBLFVBQVUsRUFBRSxJQXhCZTtBQXlCM0JwRCxFQUFBQSxnQkFBZ0IsRUFBRSxFQXpCUztBQTBCM0JYLEVBQUFBLFFBQVEsRUFBRSxvQkFBTSxDQUFFLENBMUJTO0FBMkIzQkMsRUFBQUEsUUFBUSxFQUFFLG9CQUFNLENBQUUsQ0EzQlM7QUE0QjNCQyxFQUFBQSxRQUFRLEVBQUUsb0JBQU0sQ0FBRSxDQTVCUztBQTZCM0JJLEVBQUFBLE9BQU8sRUFBRSxtQkFBTSxDQUFFLENBN0JVO0FBOEIzQkMsRUFBQUEsUUFBUSxFQUFFLG9CQUFNLENBQUUsQ0E5QlM7QUErQjNCbEIsRUFBQUEsT0FBTyxFQUFFLG1CQUFNLENBQUUsQ0EvQlU7QUFnQzNCQyxFQUFBQSxNQUFNLEVBQUUsa0JBQU0sQ0FBRSxDQWhDVztBQWlDM0IwRSxFQUFBQSxPQUFPLEVBQUUsbUJBQU0sQ0FBRSxDQWpDVTtBQWtDM0I3RSxFQUFBQSxDQUFDLEVBQUUsYUFBTSxDQUFFO0FBbENnQixDQUEvQjtBQTBJQSxJQUFNOEUsa0JBQWtCLEdBQUc7QUFDdkI7QUFDQWpELEVBQUFBLGtCQUFrQixFQUFFO0FBQUEsV0FBTzlCLGVBQUQsQ0FBeUI4QixrQkFBL0I7QUFBQTtBQUZHLENBQTNCO0FBS08sSUFBTWtELHdCQUF3QixHQUNqQztBQUNBLHFDQUFrQixxQ0FBa0JoRixlQUFsQixDQUFsQixFQUE2RCtFLGtCQUE3RCxDQUZHIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IHVzZUNhbGxiYWNrLCBSZWFjdE5vZGUsIHVzZU1lbW8sIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCBUcmVlU2VsZWN0IGZyb20gJ3JjLXRyZWUtc2VsZWN0J1xuaW1wb3J0IGRpZmZlcmVuY2UgZnJvbSAnbG9kYXNoL2RpZmZlcmVuY2UnXG5pbXBvcnQgZmlsdGVyRiBmcm9tICdsb2Rhc2gvZmlsdGVyJ1xuaW1wb3J0IGZpbmQgZnJvbSAnbG9kYXNoL2ZpbmQnXG5pbXBvcnQgaXNBcnJheSBmcm9tICdsb2Rhc2gvaXNBcnJheSdcbmltcG9ydCBpc0VtcHR5IGZyb20gJ2xvZGFzaC9pc0VtcHR5J1xuaW1wb3J0IGtleXMgZnJvbSAnbG9kYXNoL2tleXMnXG5pbXBvcnQgbWFwIGZyb20gJ2xvZGFzaC9tYXAnXG5pbXBvcnQgc29tZSBmcm9tICdsb2Rhc2gvc29tZSdcbmltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnXG5pbXBvcnQgeyB3aXRoVHJhbnNsYXRpb24gfSBmcm9tICdyZWFjdC1pMThuZXh0J1xuaW1wb3J0IG9uQ2xpY2tPdXRzaWRlSE9DIGZyb20gJ3JlYWN0LW9uY2xpY2tvdXRzaWRlJ1xuXG5pbXBvcnQgeyBGaWx0ZXIsIFRPcHRpb24gfSBmcm9tICcuLi9JbnB1dFNlbGVjdC90eXBlcydcbmltcG9ydCB7IEljb24gfSBmcm9tICcuLi8uLi9kaXNwbGF5L0ljb24vSWNvbidcbmltcG9ydCB7IElubGluZVNwaW5uZXIgfSBmcm9tICcuLi8uLi9sYXlvdXRzL1NwaW5uZXIvSW5saW5lU3Bpbm5lcidcbmltcG9ydCB7IENoZWNrYm94IH0gZnJvbSAnLi4vQ2hlY2tib3gvQ2hlY2tib3gnXG5cbmltcG9ydCB7IFRyZWVOb2RlIH0gZnJvbSAnLi9UcmVlU2VsZWN0Tm9kZSdcbmltcG9ydCB7IHZpc2libGVQYXJ0UG9wdXAsIGdldENoZWNrZWRTdHJhdGVneSB9IGZyb20gJy4vdW50aWwnXG5cbmNvbnN0IHJlbmRlclN3aXRjaGVySWNvbiA9ICh7IGlzTGVhZiB9OiB7aXNMZWFmOiBib29sZWFufSkgPT4gKGlzTGVhZiA/IG51bGwgOiA8SWNvbiBuYW1lPVwiZmEgZmEtY2hldnJvbi1yaWdodFwiIC8+KVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbmNvbnN0IGdldFBvcHVwQ29udGFpbmVyID0gKGNvbnRhaW5lcjogYW55KSA9PiBjb250YWluZXJcbi8qKlxuICog0JLQt9GP0YLRjCDQtNCw0L3QvdGL0LUg0L/QviBpZHMuXG4gKiBbJ2lkJywgJ2lkJ10gPT4gW3sgaWQ6ICdpZCcsIC4uLiB9LHsgaWQ6ICdpZCcsIC4uLiB9XVxuICogQHBhcmFtIG9wdGlvbnNcbiAqIEBwYXJhbSBpZHNcbiAqIEBwYXJhbSB2YWx1ZUZpZWxkSWRcbiAqL1xuY29uc3QgZ2V0RGF0YUJ5SWRzID0gKG9wdGlvbnM6IFByb3BzWydvcHRpb25zJ10sIGlkczogc3RyaW5nW10sIHZhbHVlRmllbGRJZDogUHJvcHNbJ3ZhbHVlRmllbGRJZCddKSA9PiBmaWx0ZXJGKG9wdGlvbnMsIG5vZGUgPT4gc29tZShpZHMsIHYgPT4gdiA9PT0gbm9kZVt2YWx1ZUZpZWxkSWQgYXMga2V5b2YgVE9wdGlvbl0pKVxuXG5jb25zdCBnZXRTaW5nbGVWYWx1ZSA9IChvcHRpb25zOiBQcm9wc1snb3B0aW9ucyddLCB2YWx1ZTogUHJvcHNbJ3ZhbHVlJ10sIHZhbHVlRmllbGRJZDogUHJvcHNbJ3ZhbHVlRmllbGRJZCddKSA9PiBmaW5kKG9wdGlvbnMsIFt2YWx1ZUZpZWxkSWQsIHZhbHVlXSlcbmNvbnN0IGdldE11bHRpVmFsdWUgPSAob3B0aW9uczogUHJvcHNbJ29wdGlvbnMnXSwgdmFsdWU6IFByb3BzWyd2YWx1ZSddLCB2YWx1ZUZpZWxkSWQ6IFByb3BzWyd2YWx1ZUZpZWxkSWQnXSkgPT4gZ2V0RGF0YUJ5SWRzKG9wdGlvbnMsIHZhbHVlLCB2YWx1ZUZpZWxkSWQpXG5cbi8qKlxuICog0KTRg9C90LrRhtC40Y8g0L/RgNC10L7QsdGA0LDQt9C+0LLQsNC90LjRjyB2YWx1ZSByY1RyZWVTZWxlY3Qg0LIg0YTQvtGA0LzQsNGCIG4yb1xuICog0J/RgNC+0LjQt9Cy0L7QtNC40YIg0L/QvtC40YHQuiDQv9C+INGA0L7QtNC40YLQtdC70Y/QvCDQuCDQv9C+0YLQvtC80LrQsNC8LlxuICogcmNUcmVlU2VsZWN0INC90LUg0LTQsNC10YIg0LjQvdGE0L7RgNC80LDRhtC40Lgg0L4g0LLRi9C00LXQu9C10L3QvdGL0YUg0L/QvtGC0L7QvNC60LDRhSDQv9GA0Lgg0LzQvtC00LUgJ1NIT1dfUEFSRU5UJ1xuICog0Lgg0L4g0LLRi9C00LXQu9C10L3QvdGL0YUg0YDQvtC00LjRgtC10LvRj9GFINC/0YDQuCAnU0hPV19DSElMRCdcbiAqIFsnaWQnLCAnaWQnXSA9PiBbeyBpZDogJ2lkJywgLi4uIH0seyBpZDogJ2lkJywgLi4uIH1dXG4gKiBAcGFyYW0gb3B0aW9uc1xuICogQHBhcmFtIHZhbHVlXG4gKiBAcGFyYW0gbXVsdGlTZWxlY3RcbiAqIEBwYXJhbSB2YWx1ZUZpZWxkSWRcbiAqIEByZXR1cm5zIHsqfVxuICovXG5jb25zdCBnZXRJdGVtQnlWYWx1ZSA9IChvcHRpb25zOiBQcm9wc1snb3B0aW9ucyddLCB2YWx1ZTogUHJvcHNbJ3ZhbHVlJ10sIG11bHRpU2VsZWN0OiBQcm9wc1snbXVsdGlTZWxlY3QnXSwgdmFsdWVGaWVsZElkOiBQcm9wc1sndmFsdWVGaWVsZElkJ10pID0+IHtcbiAgICBpZiAoIXZhbHVlKSB7IHJldHVybiBudWxsIH1cbiAgICBpZiAoIW11bHRpU2VsZWN0KSB7XG4gICAgICAgIHJldHVybiBnZXRTaW5nbGVWYWx1ZShvcHRpb25zLCB2YWx1ZSwgdmFsdWVGaWVsZElkKVxuICAgIH1cblxuICAgIHJldHVybiBnZXRNdWx0aVZhbHVlKG9wdGlvbnMsIHZhbHVlLCB2YWx1ZUZpZWxkSWQpXG59XG5cbi8qKlxuICogQHJlYWN0UHJvcHMge2Z1bmN0aW9ufSBvbkJsdXJcbiAqIEByZWFjdFByb3BzIHtzdHJpbmd9IHBsYWNlaG9sZGVyXG4gKiBAcmVhY3RQcm9wcyB7ZnVuY3Rpb259IHNldFRyZWVFeHBhbmRlZEtleXNcbiAqIEByZWFjdFByb3BzIHthcnJheX0gdHJlZUV4cGFuZGVkS2V5c1xuICogQHJlYWN0UHJvcHMge25vZGV9IGNoaWxkcmVuXG4gKiBAcmV0dXJucyB7Kn1cbiAqIEBjb25zdHJ1Y3RvclxuICogQHBhcmFtIHByb3BzXG4gKi9cbi8vIFRPRE8g0L/QtdGA0LXQtNC10LvQsNGC0Ywg0LIg0LrQu9Cw0YHRgVxuZnVuY3Rpb24gSW5wdXRTZWxlY3RUcmVlKHtcbiAgICB0LFxuICAgIGZldGNoRGF0YSxcbiAgICBvbkZvY3VzLFxuICAgIHZhbHVlLFxuICAgIG9uQmx1cixcbiAgICBwbGFjZWhvbGRlcixcbiAgICBub3RGb3VuZENvbnRlbnQgPSB0KCdub0RhdGEnKSxcbiAgICBsb2FkaW5nLFxuICAgIHBhcmVudEZpZWxkSWQsXG4gICAgdmFsdWVGaWVsZElkLFxuICAgIGxhYmVsRmllbGRJZCxcbiAgICBpY29uRmllbGRJZCxcbiAgICBpbWFnZUZpZWxkSWQsXG4gICAgYmFkZ2UsXG4gICAgaGFzQ2hpbGRyZW5GaWVsZElkLFxuICAgIG9wdGlvbnMsXG4gICAgb25TZWFyY2gsXG4gICAgb25TZWxlY3QsXG4gICAgb25DaGFuZ2UsXG4gICAgaGFzQ2hlY2tib3hlcyxcbiAgICBmaWx0ZXIsXG4gICAgbXVsdGlTZWxlY3QsXG4gICAgY2hpbGRyZW4sXG4gICAgb25DbG9zZSxcbiAgICBvblRvZ2dsZSxcbiAgICBhamF4LFxuICAgIGNsYXNzTmFtZSxcbiAgICBzaG93Q2hlY2tlZFN0cmF0ZWd5LFxuICAgIG1heFRhZ1RleHRMZW5ndGgsXG4gICAgZGlzYWJsZWQsXG59OiBQcm9wcykge1xuICAgIGNvbnN0IHRyZWVFeHBhbmRlZEtleXMgPSB1c2VSZWYoW10pXG4gICAgY29uc3QgW3NlYXJjaFZhbHVlLCBzZXRTZWFyY2hWYWx1ZV0gPSB1c2VTdGF0ZSgnJyk7XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIChJbnB1dFNlbGVjdFRyZWUgYXMgYW55KS5oYW5kbGVDbGlja091dHNpZGUgPSAoKSA9PiBzZXRTZWFyY2hWYWx1ZSgnJylcblxuICAgIC8qKlxuICAgICAqINCk0YPQvdC60YPQuNGPINC00LvRjyDRgdC+0LfQtNCw0L3QuNGPINC00LXRgNC10LLQsC5cbiAgICAgKiDQn9GA0LXQvtCx0YDQsNC30YPQtdGCINC60L7Qu9C70LXQutGG0LjRjiDQstC40LTQsCBbLi4uLCB7IC4uLiB9XSDQsiBbIC4uLiwgey4uLiwgY2hpbGRyZW46IFsuLi5dfV1cbiAgICAgKiDQktC70L7QttC10L3QuNC1INC/0YDQvtC40YHRhdC+0LTQuNGCINC/0YDQuCDRgdC+0LLQv9Cw0LTQtdC90LjQuCB2YWx1ZUZpZWxkSWQg0LggcGFyZW50RmllbGRJZC5cbiAgICAgKiBAcGFyYW0gaXRlbXNcbiAgICAgKiBAcmV0dXJucyB7Kn1cbiAgICAgKi9cbiAgICBjb25zdCB0cmVlRGF0YSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgICBjb25zdCBwb3B1cFByb3BzID0ge1xuICAgICAgICAgICAgcHJlZml4Q2xzOiAnbjJvLXNlbGVjdC10cmVlJyxcbiAgICAgICAgICAgIGljb25GaWVsZElkLFxuICAgICAgICAgICAgaW1hZ2VGaWVsZElkLFxuICAgICAgICAgICAgbGFiZWxGaWVsZElkLFxuICAgICAgICAgICAgYmFkZ2UsXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaXRlbXMgPSBvcHRpb25zIHx8IFtdXG4gICAgICAgIGNvbnN0IGl0ZW1zQnlJRCA9IFsuLi5pdGVtc10ucmVkdWNlKFxuICAgICAgICAgICAgKGFjYywgaXRlbSkgPT4gKHtcbiAgICAgICAgICAgICAgICAuLi5hY2MsXG4gICAgICAgICAgICAgICAgW2l0ZW1bdmFsdWVGaWVsZElkIGFzIGtleW9mIFRPcHRpb25dXToge1xuICAgICAgICAgICAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgICAgICAgICAgICBrZXk6IGl0ZW1bdmFsdWVGaWVsZElkIGFzIGtleW9mIFRPcHRpb25dLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogaXRlbVt2YWx1ZUZpZWxkSWQgYXMga2V5b2YgVE9wdGlvbl0sXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLmZvcm1hdHRlZFRpdGxlIHx8IHZpc2libGVQYXJ0UG9wdXAoaXRlbSwgcG9wdXBQcm9wcyksXG4gICAgICAgICAgICAgICAgICAgIC4uLihhamF4ICYmIHsgaXNMZWFmOiAhaXRlbVtoYXNDaGlsZHJlbkZpZWxkSWQgYXMga2V5b2YgVE9wdGlvbl0gfSksXG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBbXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB7fSxcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgICAgKSBhcyBhbnlcblxuICAgICAgICBrZXlzKGl0ZW1zQnlJRCkuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgaXRlbXNCeUlEW2tleV1bcGFyZW50RmllbGRJZF0gJiZcbiAgICAgICAgICAgICAgICBpdGVtc0J5SURbaXRlbXNCeUlEW2tleV1bcGFyZW50RmllbGRJZF1dICYmXG4gICAgICAgICAgICAgICAgaXRlbXNCeUlEW2l0ZW1zQnlJRFtrZXldW3BhcmVudEZpZWxkSWRdXS5jaGlsZHJlblxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgaXRlbXNCeUlEW2l0ZW1zQnlJRFtrZXldW3BhcmVudEZpZWxkSWRdXS5jaGlsZHJlbi5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgLi4uaXRlbXNCeUlEW2tleV0sXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSlcblxuICAgICAgICByZXR1cm4ga2V5cyhpdGVtc0J5SUQpXG4gICAgICAgICAgICAuZmlsdGVyKChrZXkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIWl0ZW1zQnlJRFtrZXldW3BhcmVudEZpZWxkSWRdKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuICEhKGl0ZW1zQnlJRFtrZXldW3BhcmVudEZpZWxkSWRdICYmXG4gICAgICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b3R5cGUtYnVpbHRpbnNcbiAgICAgICAgICAgICAgICAgICAgIWl0ZW1zQnlJRC5oYXNPd25Qcm9wZXJ0eShpdGVtc0J5SURba2V5XVtwYXJlbnRGaWVsZElkXSkpXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgICAgICAgIC5yZWR1Y2UoKGFjYywga2V5KSA9PiBbLi4uYWNjLCB7IC4uLml0ZW1zQnlJRFtrZXldIH1dIGFzIGFueSwgW10pXG4gICAgfSwgW1xuICAgICAgICBhamF4LCBiYWRnZSwgb3B0aW9ucywgaGFzQ2hpbGRyZW5GaWVsZElkLFxuICAgICAgICBpY29uRmllbGRJZCwgaW1hZ2VGaWVsZElkLCBsYWJlbEZpZWxkSWQsXG4gICAgICAgIHBhcmVudEZpZWxkSWQsIHZhbHVlRmllbGRJZCxcbiAgICBdKVxuXG4gICAgLyoqXG4gICAgICog0KTRg9C90LrRhtC40Y8g0LTQu9GPINC/0L7QuNGB0LrQsC5cbiAgICAgKiDQn9GA0Lgg0L/QvtC40YHQutC1INCy0YvQt9C+0LIg0YTRg9C90LrRhtC40Lgg0L/RgNC+0LjRgdGF0L7QtNC40YIg0LTQu9GPINC60LDQttC00L7Qs9C+INGN0LvQtdC80LXQvdGC0LAg0LTQtdGA0LXQstCwLlxuICAgICAqIEBwYXJhbSBpbnB1dFxuICAgICAqIEBwYXJhbSBub2RlXG4gICAgICogQHJldHVybnMgeyp9XG4gICAgICovXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBjb25zdCBoYW5kbGVyRmlsdGVyID0gdXNlQ2FsbGJhY2soKGlucHV0OiBzdHJpbmcsIG5vZGU6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCBtb2RlID0gWydpbmNsdWRlcycsICdzdGFydHNXaXRoJywgJ2VuZHNXaXRoJ11cblxuICAgICAgICBpZiAobW9kZS5pbmNsdWRlcyhmaWx0ZXIpKSB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICAgICAgcmV0dXJuIChTdHJpbmcucHJvdG90eXBlW2ZpbHRlciBhcyBhbnldIGFzIGFueSkuY2FsbChcbiAgICAgICAgICAgICAgICBub2RlLnByb3BzW2xhYmVsRmllbGRJZF0udG9Mb3dlckNhc2UoKSxcbiAgICAgICAgICAgICAgICBpbnB1dC50b0xvd2VyQ2FzZSgpLFxuICAgICAgICAgICAgKVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICB9LCBbZmlsdGVyLCBsYWJlbEZpZWxkSWRdKVxuXG4gICAgLyoqXG4gICAgICog0KTRg9C90LrRhtC40Y8g0LTQu9GPINC+0LHRgNCw0YLQvdC+0LPQviDQv9GA0LXQvtCx0YDQsNC30L7QstCw0L3QuNGPIHZhbHVlIG4ybyDQsiDRhNC+0YDQvNCw0YIgcmNUcmVlU2VsZWN0XG4gICAgICogWydpZCcsICdpZCddID0+IFt7IGlkOiAnaWQnLCAuLi4gfSx7IGlkOiAnaWQnLCAuLi4gfV1cbiAgICAgKiBAcGFyYW0gdmFsdWVcbiAgICAgKiBAcmV0dXJucyB7Kn1cbiAgICAgKi9cbiAgICBjb25zdCBzZXRWYWx1ZSA9ICh2YWx1ZTogUHJvcHNbJ3ZhbHVlJ10pID0+IHtcbiAgICAgICAgaWYgKCF2YWx1ZSkgeyByZXR1cm4gW10gfVxuICAgICAgICBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBtYXAodmFsdWUsIHYgPT4gdlt2YWx1ZUZpZWxkSWRdKVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHZhbHVlW3ZhbHVlRmllbGRJZF1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQpNGD0L3QutGG0LjRjyDQtNC70Y8g0L/QtdGA0LXQvtC/0YDQtdC00LXQu9C10L3QuNGPIG9uQ2hhbmdlXG4gICAgICogQHBhcmFtIHZhbHVlXG4gICAgICovXG4gICAgY29uc3QgaGFuZGxlQ2hhbmdlID0gdXNlQ2FsbGJhY2soKHZhbHVlOiBQcm9wc1sndmFsdWUnXSkgPT4ge1xuICAgICAgICBvbkNoYW5nZShnZXRJdGVtQnlWYWx1ZShvcHRpb25zLCB2YWx1ZSwgbXVsdGlTZWxlY3QsIHZhbHVlRmllbGRJZCkpXG4gICAgICAgIG9uQmx1cihnZXRJdGVtQnlWYWx1ZShvcHRpb25zLCB2YWx1ZSwgbXVsdGlTZWxlY3QsIHZhbHVlRmllbGRJZCkpXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgICB9LCBbb3B0aW9ucywgbXVsdGlTZWxlY3QsIG9uQ2hhbmdlLCB2YWx1ZUZpZWxkSWRdKVxuXG4gICAgLyoqXG4gICAgICog0KTRg9C90LrRhtC40Y8g0LTQu9GPINC/0LXRgNC10L7Qv9GA0LXQtNC10LvQtdC90LjRjyBvblNlbGVjdFxuICAgICAqIEBwYXJhbSB2YWx1ZVxuICAgICAqL1xuICAgIGNvbnN0IGhhbmRsZVNlbGVjdCA9IHVzZUNhbGxiYWNrKCh2YWx1ZTogUHJvcHNbJ3ZhbHVlJ10pID0+IHtcbiAgICAgICAgb25TZWxlY3QoZ2V0SXRlbUJ5VmFsdWUob3B0aW9ucywgdmFsdWUsIG11bHRpU2VsZWN0LCB2YWx1ZUZpZWxkSWQpKVxuICAgICAgICBvbkJsdXIoKVxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXG4gICAgfSwgW29wdGlvbnMsIG11bHRpU2VsZWN0LCBvblNlbGVjdCwgdmFsdWVGaWVsZElkXSlcblxuICAgIC8qKlxuICAgICAqINCk0YPQvdC60YbQuNGPINC00LvRjyDQv9C10YDQtdC+0L/RgNC10LTQtdC70LXQvdC40Y8gb25TZWFyY2hcbiAgICAgKiBAcGFyYW0gdmFsdWVcbiAgICAgKi9cbiAgICBjb25zdCBoYW5kbGVTZWFyY2ggPSB1c2VDYWxsYmFjaygodmFsdWU6IFByb3BzWyd2YWx1ZSddKSA9PiB7XG4gICAgICAgIHNldFNlYXJjaFZhbHVlKHZhbHVlKVxuICAgICAgICBvblNlYXJjaCh2YWx1ZSlcblxuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgIH0sIFtvblNlYXJjaF0pXG5cbiAgICBjb25zdCBjbGVhclNlYXJjaCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAgICAgc2V0U2VhcmNoVmFsdWUoJycpXG4gICAgfSwgW10pXG5cbiAgICAvKipcbiAgICAgKiDQpNGD0L3QutGG0LjRjyDQtNC70Y8g0LrQvtC90YLRgNC+0LvRjyDQvtGC0LrRgNGL0YLQuNGPL9C30LDQutGA0YvRgtC40Y8gcG9wdXBcbiAgICAgKiBAcGFyYW0gdmlzaWJsZVxuICAgICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgICAqL1xuICAgIGNvbnN0IGhhbmRsZURyb3Bkb3duVmlzaWJsZUNoYW5nZSA9IHVzZUNhbGxiYWNrKCh2aXNpYmxlOiBib29sZWFuKSA9PiB7XG4gICAgICAgIGlmICh2aXNpYmxlKSB7XG4gICAgICAgICAgICBvbkZvY3VzKClcbiAgICAgICAgfVxuICAgICAgICAvLyBvblRvZ2dsZSh2aXNpYmxlKVxuICAgICAgICAvLyBzZXREcm9wZG93bkV4cGFuZGVkKHZpc2libGUpXG5cbiAgICAgICAgaWYgKHZpc2libGUgJiYgIW9wdGlvbnMubGVuZ3RoKSB7XG4gICAgICAgICAgICBmZXRjaERhdGEoKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgb25DbG9zZSgpXG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFqYXgpIHsgdHJlZUV4cGFuZGVkS2V5cy5jdXJyZW50ID0gW10gfVxuXG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXG4gICAgfSwgW2FqYXgsIG9uQ2xvc2UsIG9uRm9jdXMsIGZldGNoRGF0YSwgb25Ub2dnbGVdKVxuXG4gICAgLyoqXG4gICAgICog0KTRg9C90LrRhtC40Y8g0LTQu9GPINC60L7QvdGC0YDQvtC70Y8g0L7RgtC60YDRi9GC0LjRjy/Qt9Cw0LrRgNGL0YLQuNGPINGN0LvQtdC80LXQvdGC0LAg0LTQtdGA0LXQstCwXG4gICAgICogQHBhcmFtIGtleXNcbiAgICAgKi9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIGNvbnN0IG9uVHJlZUV4cGFuZCA9IHVzZUNhbGxiYWNrKGFzeW5jIChrZXlzOiBhbnkpID0+IHtcbiAgICAgICAgY29uc3QgY3VycmVudEtleSA9IGRpZmZlcmVuY2Uoa2V5cywgdHJlZUV4cGFuZGVkS2V5cy5jdXJyZW50KVxuXG4gICAgICAgIGlmIChhamF4KSB7XG4gICAgICAgICAgICBhd2FpdCBmZXRjaERhdGEoeyAnZmlsdGVyLnBhcmVudF9pZCc6IGN1cnJlbnRLZXlbMF0gfSwgdHJ1ZSlcbiAgICAgICAgfVxuICAgICAgICB0cmVlRXhwYW5kZWRLZXlzLmN1cnJlbnQgPSBrZXlzXG4gICAgfSwgW2FqYXgsIGZldGNoRGF0YV0pXG5cbiAgICBjb25zdCBjbGVhckljb24gPSAoXG4gICAgICAgIDxJY29uXG4gICAgICAgICAgICBvbkNsaWNrPXtjbGVhclNlYXJjaH1cbiAgICAgICAgICAgIG5hbWU9XCJmYSBmYS10aW1lcyBuMm8taW5wdXQtc2VsZWN0LXRyZWVfX2NsZWFyLWljb25cIlxuICAgICAgICAvPlxuICAgIClcblxuICAgIHJldHVybiAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc05hbWVzKFxuICAgICAgICAgICAgJ24yby1zZWxlY3QtdHJlZS1jb250YWluZXInLFxuICAgICAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGVtcHR5OiBpc0VtcHR5KHZhbHVlKSwgbXVsdGk6IG11bHRpU2VsZWN0LCBzaW5nbGU6ICFtdWx0aVNlbGVjdCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICl9XG4gICAgICAgID5cbiAgICAgICAgICAgIDxUcmVlU2VsZWN0XG4gICAgICAgICAgICAgICAgYWxsb3dDbGVhcj17IWlzRW1wdHkodmFsdWUpfVxuICAgICAgICAgICAgICAgIHZhbHVlPXtzZXRWYWx1ZSh2YWx1ZSl9XG4gICAgICAgICAgICAgICAgb25Ecm9wZG93blZpc2libGVDaGFuZ2U9e2hhbmRsZURyb3Bkb3duVmlzaWJsZUNoYW5nZX1cbiAgICAgICAgICAgICAgICBzd2l0Y2hlckljb249e3JlbmRlclN3aXRjaGVySWNvbn1cbiAgICAgICAgICAgICAgICBzdWZmaXhJY29uPXs8SWNvbiBuYW1lPVwiZmEgZmEtY2hldnJvbi1kb3duXCIgLz59XG4gICAgICAgICAgICAgICAgbXVsdGlwbGU9e211bHRpU2VsZWN0fVxuICAgICAgICAgICAgICAgIHRyZWVDaGVja2FibGU9e2hhc0NoZWNrYm94ZXMgJiYgPENoZWNrYm94IGlubGluZSAvPn1cbiAgICAgICAgICAgICAgICB0cmVlRGF0YT17dHJlZURhdGF9XG4gICAgICAgICAgICAgICAgZmlsdGVyVHJlZU5vZGU9e2hhbmRsZXJGaWx0ZXJ9XG4gICAgICAgICAgICAgICAgdHJlZU5vZGVGaWx0ZXJQcm9wPXtsYWJlbEZpZWxkSWR9XG4gICAgICAgICAgICAgICAgdHJlZU5vZGVMYWJlbFByb3A9e2xhYmVsRmllbGRJZH1cbiAgICAgICAgICAgICAgICBtYXhUYWdUZXh0TGVuZ3RoPXttYXhUYWdUZXh0TGVuZ3RofVxuICAgICAgICAgICAgICAgIGNsZWFySWNvbj17Y2xlYXJJY29ufSAvLyDQuNC60L7QvdC60LAg0L7Rh9C40YnQtdC90LjRjyDQstGB0LXQs9C+INC40L3Qv9GD0YLQsFxuICAgICAgICAgICAgICAgIHJlbW92ZUljb249e2lzRW1wdHkodmFsdWUpID8gbnVsbCA6IGNsZWFySWNvbn0gLy8g0LjQutC+0L3QutCwINC+0YfQuNGJ0LXQvdC40Y8g0LjRgtC10LzQsFxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgICAgICAgb25TZWxlY3Q9e2hhbmRsZVNlbGVjdH1cbiAgICAgICAgICAgICAgICBvblNlYXJjaD17aGFuZGxlU2VhcmNofVxuICAgICAgICAgICAgICAgIG9uVHJlZUV4cGFuZD17b25UcmVlRXhwYW5kfVxuICAgICAgICAgICAgICAgIHNob3dDaGVja2VkU3RyYXRlZ3k9e2dldENoZWNrZWRTdHJhdGVneShzaG93Q2hlY2tlZFN0cmF0ZWd5KX1cbiAgICAgICAgICAgICAgICBnZXRQb3B1cENvbnRhaW5lcj17Z2V0UG9wdXBDb250YWluZXJ9XG4gICAgICAgICAgICAgICAgbm90Rm91bmRDb250ZW50PXtsb2FkaW5nID8gPElubGluZVNwaW5uZXIgLz4gOiBub3RGb3VuZENvbnRlbnR9XG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e3NlYXJjaFZhbHVlID8gbnVsbCA6IHBsYWNlaG9sZGVyfVxuICAgICAgICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgICAgICAgICBzZWFyY2hWYWx1ZT17c2VhcmNoVmFsdWV9XG4gICAgICAgICAgICAgICAgc2hvd1NlYXJjaD17IW11bHRpU2VsZWN0fVxuICAgICAgICAgICAgICAgIGxpc3RIZWlnaHQ9ezQwMH1cbiAgICAgICAgICAgICAgICBwcmVmaXhDbHM9XCJuMm8tc2VsZWN0LXRyZWVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAgICAgIDwvVHJlZVNlbGVjdD5cbiAgICAgICAgPC9kaXY+XG4gICAgKVxufVxuXG5JbnB1dFNlbGVjdFRyZWUuZGVmYXVsdFByb3BzID0ge1xuICAgIGNoaWxkcmVuOiBudWxsLFxuICAgIGhhc0NoaWxkcmVuRmllbGRJZDogJ2hhc0NoaWxkcmVuJyxcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgbG9hZGluZzogZmFsc2UsXG4gICAgcGFyZW50RmllbGRJZDogJ3BhcmVudElkJyxcbiAgICB2YWx1ZUZpZWxkSWQ6ICdpZCcsXG4gICAgbGFiZWxGaWVsZElkOiAnbmFtZScsXG4gICAgaWNvbkZpZWxkSWQ6ICdpY29uJyxcbiAgICBiYWRnZToge1xuICAgICAgICBmaWVsZElkOiAnYmFkZ2UnLFxuICAgICAgICBjb2xvckZpZWxkSWQ6ICdjb2xvcicsXG4gICAgfSxcbiAgICBpbWFnZUZpZWxkSWQ6ICdpbWFnZScsXG4gICAgc29ydEZpZWxkSWQ6ICduYW1lJyxcbiAgICBmaWx0ZXI6ICdzdGFydHNXaXRoJyxcbiAgICBoYXNDaGVja2JveGVzOiBmYWxzZSxcbiAgICBtdWx0aVNlbGVjdDogZmFsc2UsXG4gICAgb3B0aW9uczogW10sXG4gICAgdHJhbnNpdGlvbk5hbWU6ICdzbGlkZS11cCcsXG4gICAgY2hvaWNlVHJhbnNpdGlvbk5hbWU6ICd6b29tJyxcbiAgICBzaG93Q2hlY2tlZFN0cmF0ZWd5OiAnYWxsJyxcbiAgICBhbGxvd0NsZWFyOiB0cnVlLFxuICAgIHBsYWNlaG9sZGVyOiAnJyxcbiAgICBzaG93U2VhcmNoOiB0cnVlLFxuICAgIG1heFRhZ1RleHRMZW5ndGg6IDEwLFxuICAgIG9uU2VhcmNoOiAoKSA9PiB7fSxcbiAgICBvblNlbGVjdDogKCkgPT4ge30sXG4gICAgb25DaGFuZ2U6ICgpID0+IHt9LFxuICAgIG9uQ2xvc2U6ICgpID0+IHt9LFxuICAgIG9uVG9nZ2xlOiAoKSA9PiB7fSxcbiAgICBvbkZvY3VzOiAoKSA9PiB7fSxcbiAgICBvbkJsdXI6ICgpID0+IHt9LFxuICAgIG9uSW5wdXQ6ICgpID0+IHt9LFxuICAgIHQ6ICgpID0+IHt9LFxufSBhcyBQcm9wc1xuXG50eXBlIFByb3BzID0ge1xuICAgIC8qKlxuICAgICAqINCk0LvQsNCzINC00LjQvdCw0LzQuNGH0LXQutGB0L7QuSDQv9C+0LTQs9GA0YPQt9C60Lgg0LTQsNC90L3Ri9GFLiDQkiDQtNCw0L3QvdGL0YUg0L7QsdGP0LfQsNGC0LXQu9GM0L3QviDRg9C60LDQt9GL0LLQsNGC0Ywg0L/QsNGA0LDQvNC10YLRgCBoYXNDaGlsZHJlbnNcbiAgICAgKi9cbiAgICBhamF4PzogYm9vbGVhbixcbiAgICAvKipcbiAgICAgKiDQlNCw0L3QvdGL0LUg0LTQu9GPIGJhZGdlXG4gICAgICovXG4gICAgYmFkZ2U6IG9iamVjdCxcbiAgICBjaGlsZHJlbjogUmVhY3ROb2RlLFxuICAgIGNsYXNzTmFtZT86IHN0cmluZyxcbiAgICAvKipcbiAgICAgKiDQpNC70LDQsyDQvdC10LDQutGC0LjQstC90L7RgdGC0LhcbiAgICAgKi9cbiAgICBkaXNhYmxlZDogYm9vbGVhbixcbiAgICAvKipcbiAgICAgKiBDYWxsYmFjayDQvdCwINC+0YLQutGA0YvRgtC40LVcbiAgICAgKi9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIGZldGNoRGF0YT86IGFueSxcbiAgICAvKipcbiAgICAgKiDQktCw0YDQuNCw0L3RgtGLINGE0LjQu9GM0YLRgNCw0YbQuNC4XG4gICAgICovXG4gICAgZmlsdGVyOiBGaWx0ZXIsXG4gICAgLyoqXG4gICAgICog0KTQu9Cw0LMg0LTQu9GPINC/0L7QutCw0LfQsCDRh9C10LrQsdC+0LrRgdC+0LIg0LIg0Y3Qu9C10LzQtdC90YLQsNGFINC00LXRgNC10LLQsC4g0J/QtdGA0LXQstC+0LTQuNGCIElucHV0U2VsZWN0VHJlZSDQsiDQvNGD0LvRjNGC0Lgg0YDQtdC20LjQvFxuICAgICAqL1xuICAgIGhhc0NoZWNrYm94ZXM6IGJvb2xlYW4sXG4gICAgLyoqXG4gICAgICog0JfQvdCw0YfQtdC90LjQtSDQutC70Y7Rh9CwIGhhc0NoaWxkcmVuINCyINC00LDQvdC90YvRhVxuICAgICAqL1xuICAgIGhhc0NoaWxkcmVuRmllbGRJZDogc3RyaW5nLFxuICAgIC8qKlxuICAgICAqINCX0L3QsNGH0LXQvdC40LUg0LrQu9GO0YfQsCBpY29uINCyINC00LDQvdC90YvRhVxuICAgICAqL1xuICAgIGljb25GaWVsZElkOiBzdHJpbmcsXG4gICAgLyoqXG4gICAgICogINCX0L3QsNGH0LXQvdC40LUg0LrQu9GO0YfQsCBpbWFnZSDQsiDQtNCw0L3QvdGL0YVcbiAgICAgKi9cbiAgICBpbWFnZUZpZWxkSWQ6IHN0cmluZyxcbiAgICAvKipcbiAgICAgKiDQl9C90LDRh9C10L3QuNC1INC60LvRjtGH0LAgbGFiZWwg0LIg0LTQsNC90L3Ri9GFXG4gICAgICovXG4gICAgbGFiZWxGaWVsZElkOiBzdHJpbmcsXG4gICAgLyoqXG4gICAgICog0KTQu9Cw0LMg0LDQvdC40LzQsNGG0LjQuCDQt9Cw0LPRgNGD0LfQutC4XG4gICAgICovXG4gICAgbG9hZGluZzogYm9vbGVhbixcbiAgICAvKipcbiAgICAgKiDQmtC+0LvQuNGH0LXRgdGC0LLQviDRgdC40LzQstC+0LvQvtCyINCy0YvQsdGA0LDQvdC90YvRhSDRjdC70LXQvNC10L3RgtC+0LIg0LIgY2hlY2hib3gg0YDQtdC20LjQvNC1XG4gICAgICovXG4gICAgbWF4VGFnVGV4dExlbmd0aDogbnVtYmVyLFxuICAgIC8qKlxuICAgICAqINCc0YPQu9GM0YLQuCDQstGL0LHQvtGAINC30L3QsNGH0LXQvdC40LlcbiAgICAgKi9cbiAgICBtdWx0aVNlbGVjdDogYm9vbGVhbixcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIG5vdEZvdW5kQ29udGVudD86IGFueSxcbiAgICBvbkJsdXIoYXJnPzogUHJvcHNbJ3ZhbHVlJ10pOiB2b2lkLFxuICAgIC8qKlxuICAgICAqIENhbGJhY2sg0LjQt9C80LXQvdC10L3QuNGPXG4gICAgICovXG4gICAgb25DaGFuZ2UoYXJnOiBQcm9wc1sndmFsdWUnXSk6IHZvaWQsXG4gICAgLyoqXG4gICAgICogQ2FsbGJhY2sg0L3QsCDQt9Cw0LrRgNGL0YLQuNC1XG4gICAgICovXG4gICAgb25DbG9zZSgpOiB2b2lkLFxuICAgIG9uRm9jdXMoKTogdm9pZCxcbiAgICAvKipcbiAgICAgKiBDYWxsYmFjayDQvdCwINC/0L7QuNGB0LpcbiAgICAgKi9cbiAgICBvblNlYXJjaChhcmc6IFByb3BzWyd2YWx1ZSddKTogdm9pZCxcbiAgICBvblNlbGVjdChhcmc6IFByb3BzWyd2YWx1ZSddKTogdm9pZCxcbiAgICBvblRvZ2dsZShhcmc6IGJvb2xlYW4pOiB2b2lkLFxuICAgIC8qKlxuICAgICAqINCU0LDQvdC90YvQtSDQtNC70Y8g0L/QvtGB0YLRgNC+0LXQvdC40Y8g0LTQtdGA0LXQstCwXG4gICAgICovXG4gICAgb3B0aW9uczogVE9wdGlvbltdLFxuICAgIC8qKlxuICAgICAqINCX0L3QsNGH0LXQvdC40LUg0LrQu9GO0YfQsCBwYXJlbnQg0LIg0LTQsNC90L3Ri9GFXG4gICAgICovXG4gICAgcGFyZW50RmllbGRJZDogc3RyaW5nLFxuICAgIC8qKlxuICAgICAqIFBsYWNlaG9sZGVyINC60L7QvdGC0YDQvtC70LBcbiAgICAgKi9cbiAgICBwbGFjZWhvbGRlcjogc3RyaW5nLFxuICAgIHNob3dDaGVja2VkU3RyYXRlZ3k6IHN0cmluZyxcbiAgICB0KGFyZzogc3RyaW5nKTogdm9pZCxcbiAgICAvKipcbiAgICAgKiDQl9C90LDRh9C10L3QuNC1XG4gICAgICovXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICB2YWx1ZT86IGFueSxcbiAgICAvKipcbiAgICAgKiDQl9C90LDRh9C10L3QuNC1INC60LvRjtGH0LAgdmFsdWUg0LIg0LTQsNC90L3Ri9GFXG4gICAgICovXG4gICAgdmFsdWVGaWVsZElkOiBzdHJpbmdcbn1cblxuZXhwb3J0IHsgVHJlZU5vZGUsIElucHV0U2VsZWN0VHJlZSB9XG5cbmNvbnN0IGNsaWNrT3V0c2lkZUNvbmZpZyA9IHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIGhhbmRsZUNsaWNrT3V0c2lkZTogKCkgPT4gKElucHV0U2VsZWN0VHJlZSBhcyBhbnkpLmhhbmRsZUNsaWNrT3V0c2lkZSxcbn1cblxuZXhwb3J0IGNvbnN0IElucHV0U2VsZWN0VHJlZUNvbXBvbmVudCA9IChcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIG9uQ2xpY2tPdXRzaWRlSE9DKHdpdGhUcmFuc2xhdGlvbigpKElucHV0U2VsZWN0VHJlZSBhcyBhbnkpLCBjbGlja091dHNpZGVDb25maWcpIGFzIGFueVxuKVxuIl19
|