@1money/component-ui 0.0.42 → 0.0.44
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/README.md +19 -24
- package/es/components/Dropdown/Dropdown.js +11 -3
- package/es/components/Icons/interface.d.ts +3 -0
- package/es/components/Input/FieldShell/FieldShell.css +1 -1
- package/es/components/Input/FieldShell/FieldShell.js +2 -3
- package/es/components/Select/Select.js +130 -91
- package/es/components/Select/SelectCustom.d.ts +6 -0
- package/es/components/Select/SelectCustom.js +232 -0
- package/es/components/Select/SelectFieldShell.d.ts +2 -0
- package/es/components/Select/SelectFieldShell.js +12 -4
- package/es/components/Select/SelectOptionContent.d.ts +8 -0
- package/es/components/Select/SelectOptionContent.js +20 -11
- package/es/components/Select/SelectSearchControl.d.ts +3 -0
- package/es/components/Select/SelectSearchControl.js +9 -4
- package/es/components/Select/index.d.ts +5 -2
- package/es/components/Select/index.js +8 -3
- package/es/components/Select/interface.d.ts +147 -1
- package/es/components/Select/interface.js +1 -1
- package/es/components/Select/style/Select.css +1 -1
- package/es/components/Select/useSelectShell.d.ts +34 -0
- package/es/components/Select/useSelectShell.js +106 -0
- package/es/components/Trigger/Trigger.js +33 -8
- package/es/components/Trigger/interface.d.ts +25 -2
- package/es/components/Upload/interface.d.ts +2 -0
- package/es/hooks/index.d.ts +2 -0
- package/es/hooks/index.js +2 -0
- package/es/hooks/useFloatingAnimation.d.ts +24 -0
- package/es/hooks/useFloatingAnimation.js +45 -0
- package/es/index.css +1 -1
- package/es/index.d.ts +2 -2
- package/es/index.js +1 -1
- package/es/stories/docs/ComponentDocsPage.js +2 -2
- package/es/stories/docs/componentDocMeta.js +1 -4
- package/lib/components/Dropdown/Dropdown.js +11 -3
- package/lib/components/Icons/interface.d.ts +3 -0
- package/lib/components/Input/FieldShell/FieldShell.css +1 -1
- package/lib/components/Input/FieldShell/FieldShell.js +2 -3
- package/lib/components/Select/Select.js +129 -90
- package/lib/components/Select/SelectCustom.d.ts +6 -0
- package/lib/components/Select/SelectCustom.js +242 -0
- package/lib/components/Select/SelectFieldShell.d.ts +2 -0
- package/lib/components/Select/SelectFieldShell.js +12 -4
- package/lib/components/Select/SelectOptionContent.d.ts +8 -0
- package/lib/components/Select/SelectOptionContent.js +21 -12
- package/lib/components/Select/SelectSearchControl.d.ts +3 -0
- package/lib/components/Select/SelectSearchControl.js +9 -4
- package/lib/components/Select/index.d.ts +5 -2
- package/lib/components/Select/index.js +9 -17
- package/lib/components/Select/interface.d.ts +147 -1
- package/lib/components/Select/interface.js +1 -1
- package/lib/components/Select/style/Select.css +1 -1
- package/lib/components/Select/useSelectShell.d.ts +34 -0
- package/lib/components/Select/useSelectShell.js +114 -0
- package/lib/components/Trigger/Trigger.js +32 -7
- package/lib/components/Trigger/interface.d.ts +25 -2
- package/lib/components/Upload/interface.d.ts +2 -0
- package/lib/hooks/index.d.ts +2 -0
- package/lib/hooks/index.js +13 -0
- package/lib/hooks/useFloatingAnimation.d.ts +24 -0
- package/lib/hooks/useFloatingAnimation.js +51 -0
- package/lib/index.css +1 -1
- package/lib/index.d.ts +2 -2
- package/lib/index.js +1 -1
- package/lib/stories/docs/ComponentDocsPage.js +2 -2
- package/lib/stories/docs/componentDocMeta.js +1 -4
- package/package.json +1 -1
- package/scripts/mcp-server/examples.generated.json +549 -519
- package/scripts/mcp-server/index.generated.json +887 -583
|
@@ -1,15 +1,18 @@
|
|
|
1
|
+
import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
|
|
1
2
|
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
2
3
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import {
|
|
4
|
+
import { FloatingFocusManager, FloatingPortal, useInteractions, useListNavigation, useTypeahead } from '@floating-ui/react';
|
|
4
5
|
import { memo, useEffect, useId, useMemo, useRef, useState } from 'react';
|
|
5
6
|
import { useControlledState, useEventCallback } from '@1money/hooks';
|
|
6
7
|
import { Icons } from '../Icons';
|
|
8
|
+
import { Spinner } from '../Spinner';
|
|
7
9
|
import { TypographyBody, TypographyLabel } from '../Typography';
|
|
8
10
|
import { joinCls, default as rootClassnames } from '../../utils/classnames';
|
|
9
11
|
import SelectFieldShell from './SelectFieldShell';
|
|
10
12
|
import SelectOptionContent from './SelectOptionContent';
|
|
11
13
|
import SelectSearchControl from './SelectSearchControl';
|
|
12
14
|
import SelectValueContent from './SelectValueContent';
|
|
15
|
+
import { useSelectShell } from './useSelectShell';
|
|
13
16
|
import { KEYBOARD, SELECT_TYPOGRAPHY } from './constants';
|
|
14
17
|
import { extractOptionText, filterOptionGroups, flattenOptionGroups, getMultipleValue, getOptionsByValues, getSelectedOptions, isOptionSelected, normalizeSize, normalizeOptionGroups, removeMultipleValue, toggleMultipleValue } from './utils';
|
|
15
18
|
import './style';
|
|
@@ -37,7 +40,11 @@ export var Select = function Select(props) {
|
|
|
37
40
|
_props$variant = props.variant,
|
|
38
41
|
variant = _props$variant === void 0 ? 'fill' : _props$variant,
|
|
39
42
|
_props$disabled = props.disabled,
|
|
40
|
-
|
|
43
|
+
disabledProp = _props$disabled === void 0 ? false : _props$disabled,
|
|
44
|
+
_props$readOnly = props.readOnly,
|
|
45
|
+
readOnly = _props$readOnly === void 0 ? false : _props$readOnly,
|
|
46
|
+
_props$loading = props.loading,
|
|
47
|
+
loading = _props$loading === void 0 ? false : _props$loading,
|
|
41
48
|
_props$multiple = props.multiple,
|
|
42
49
|
multiple = _props$multiple === void 0 ? false : _props$multiple,
|
|
43
50
|
maxVisibleValues = props.maxVisibleValues,
|
|
@@ -48,6 +55,8 @@ export var Select = function Select(props) {
|
|
|
48
55
|
searchValue = props.searchValue,
|
|
49
56
|
_props$defaultSearchV = props.defaultSearchValue,
|
|
50
57
|
defaultSearchValue = _props$defaultSearchV === void 0 ? '' : _props$defaultSearchV,
|
|
58
|
+
_props$filterInputAut = props.filterInputAutoFocus,
|
|
59
|
+
filterInputAutoFocus = _props$filterInputAut === void 0 ? true : _props$filterInputAut,
|
|
51
60
|
label = props.label,
|
|
52
61
|
info = props.info,
|
|
53
62
|
description = props.description,
|
|
@@ -61,34 +70,42 @@ export var Select = function Select(props) {
|
|
|
61
70
|
open = props.open,
|
|
62
71
|
_props$defaultOpen = props.defaultOpen,
|
|
63
72
|
defaultOpen = _props$defaultOpen === void 0 ? false : _props$defaultOpen,
|
|
73
|
+
_props$portal = props.portal,
|
|
74
|
+
portal = _props$portal === void 0 ? true : _props$portal,
|
|
75
|
+
_props$allowDeselect = props.allowDeselect,
|
|
76
|
+
allowDeselect = _props$allowDeselect === void 0 ? false : _props$allowDeselect,
|
|
77
|
+
panelClassName = props.panelClassName,
|
|
78
|
+
optionClassName = props.optionClassName,
|
|
64
79
|
_props$listMaxHeight = props.listMaxHeight,
|
|
65
80
|
listMaxHeight = _props$listMaxHeight === void 0 ? DEFAULT_MAX_HEIGHT : _props$listMaxHeight,
|
|
81
|
+
offset = props.offset,
|
|
82
|
+
animation = props.animation,
|
|
66
83
|
onChange = props.onChange,
|
|
67
84
|
onOpenChange = props.onOpenChange,
|
|
68
85
|
onSearchChange = props.onSearchChange,
|
|
69
86
|
onBlur = props.onBlur,
|
|
70
87
|
filterOption = props.filterOption,
|
|
71
88
|
renderOption = props.renderOption,
|
|
89
|
+
renderOptionContent = props.renderOptionContent,
|
|
72
90
|
renderValue = props.renderValue,
|
|
73
91
|
ref = props.ref;
|
|
92
|
+
var disabled = disabledProp || loading;
|
|
93
|
+
var interactive = !disabled && !readOnly;
|
|
74
94
|
var classes = rootClassnames(prefixCls);
|
|
75
95
|
var autoId = useId();
|
|
76
96
|
var triggerId = id !== null && id !== void 0 ? id : autoId;
|
|
77
97
|
var labelId = useId();
|
|
78
98
|
var descriptionId = useId();
|
|
79
99
|
var feedbackId = useId();
|
|
100
|
+
var optionIdPrefix = useId();
|
|
80
101
|
var _useControlledState = useControlledState(defaultValue !== null && defaultValue !== void 0 ? defaultValue : multiple ? [] : undefined, value),
|
|
81
102
|
_useControlledState2 = _slicedToArray(_useControlledState, 2),
|
|
82
103
|
innerValue = _useControlledState2[0],
|
|
83
104
|
setInnerValue = _useControlledState2[1];
|
|
84
|
-
var _useControlledState3 = useControlledState(
|
|
105
|
+
var _useControlledState3 = useControlledState(defaultSearchValue, searchValue),
|
|
85
106
|
_useControlledState4 = _slicedToArray(_useControlledState3, 2),
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
var _useControlledState5 = useControlledState(defaultSearchValue, searchValue),
|
|
89
|
-
_useControlledState6 = _slicedToArray(_useControlledState5, 2),
|
|
90
|
-
innerSearchValue = _useControlledState6[0],
|
|
91
|
-
setInnerSearchValue = _useControlledState6[1];
|
|
107
|
+
innerSearchValue = _useControlledState4[0],
|
|
108
|
+
setInnerSearchValue = _useControlledState4[1];
|
|
92
109
|
var _useState = useState(null),
|
|
93
110
|
_useState2 = _slicedToArray(_useState, 2),
|
|
94
111
|
activeIndex = _useState2[0],
|
|
@@ -130,35 +147,24 @@ export var Select = function Select(props) {
|
|
|
130
147
|
ref.current = node;
|
|
131
148
|
}
|
|
132
149
|
});
|
|
133
|
-
var
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
middleware: [offset(0), flip({
|
|
143
|
-
padding: 8
|
|
144
|
-
}), shift({
|
|
145
|
-
padding: 8
|
|
146
|
-
}), floatingSize({
|
|
147
|
-
apply: function apply(_ref) {
|
|
148
|
-
var rects = _ref.rects,
|
|
149
|
-
elements = _ref.elements,
|
|
150
|
-
availableHeight = _ref.availableHeight;
|
|
151
|
-
var nextMaxHeight = Math.max(120, Math.min(listMaxHeight, availableHeight));
|
|
152
|
-
Object.assign(elements.floating.style, {
|
|
153
|
-
width: "".concat(rects.reference.width, "px"),
|
|
154
|
-
maxHeight: "".concat(nextMaxHeight, "px")
|
|
155
|
-
});
|
|
156
|
-
}
|
|
157
|
-
})]
|
|
150
|
+
var _useSelectShell = useSelectShell({
|
|
151
|
+
open: open,
|
|
152
|
+
defaultOpen: defaultOpen,
|
|
153
|
+
onOpenChange: onOpenChange,
|
|
154
|
+
disabled: disabled,
|
|
155
|
+
readOnly: readOnly,
|
|
156
|
+
listMaxHeight: listMaxHeight,
|
|
157
|
+
animation: animation,
|
|
158
|
+
offset: offset
|
|
158
159
|
}),
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
160
|
+
innerOpen = _useSelectShell.isOpen,
|
|
161
|
+
handleOpenChange = _useSelectShell.setOpen,
|
|
162
|
+
refs = _useSelectShell.refs,
|
|
163
|
+
context = _useSelectShell.context,
|
|
164
|
+
floatingStyles = _useSelectShell.floatingStyles,
|
|
165
|
+
transitionStyles = _useSelectShell.transitionStyles,
|
|
166
|
+
isMounted = _useSelectShell.isMounted,
|
|
167
|
+
baseInteractions = _useSelectShell.baseInteractions;
|
|
162
168
|
var setReference = useEventCallback(function (node) {
|
|
163
169
|
refs.setReference(node);
|
|
164
170
|
handleTriggerRef(node);
|
|
@@ -167,23 +173,14 @@ export var Select = function Select(props) {
|
|
|
167
173
|
refs.setFloating(node);
|
|
168
174
|
floatingRef.current = node;
|
|
169
175
|
});
|
|
170
|
-
var click = useClick(context, {
|
|
171
|
-
enabled: !disabled
|
|
172
|
-
});
|
|
173
|
-
var dismiss = useDismiss(context, {
|
|
174
|
-
enabled: !disabled,
|
|
175
|
-
outsidePressEvent: 'mousedown'
|
|
176
|
-
});
|
|
177
|
-
var role = useRole(context, {
|
|
178
|
-
role: 'select'
|
|
179
|
-
});
|
|
180
176
|
var listNavigation = useListNavigation(context, {
|
|
181
177
|
listRef: listRef,
|
|
182
178
|
activeIndex: activeIndex,
|
|
183
179
|
selectedIndex: selectedIndex,
|
|
184
180
|
onNavigate: setActiveIndex,
|
|
185
181
|
enabled: innerOpen,
|
|
186
|
-
loop: true
|
|
182
|
+
loop: true,
|
|
183
|
+
virtual: searchable
|
|
187
184
|
});
|
|
188
185
|
var typeahead = useTypeahead(context, {
|
|
189
186
|
listRef: listContentRef,
|
|
@@ -192,7 +189,7 @@ export var Select = function Select(props) {
|
|
|
192
189
|
enabled: innerOpen && !searchable,
|
|
193
190
|
onMatch: setActiveIndex
|
|
194
191
|
});
|
|
195
|
-
var _useInteractions = useInteractions([
|
|
192
|
+
var _useInteractions = useInteractions([].concat(_toConsumableArray(baseInteractions), [listNavigation, typeahead])),
|
|
196
193
|
getReferenceProps = _useInteractions.getReferenceProps,
|
|
197
194
|
getFloatingProps = _useInteractions.getFloatingProps,
|
|
198
195
|
getItemProps = _useInteractions.getItemProps;
|
|
@@ -201,15 +198,6 @@ export var Select = function Select(props) {
|
|
|
201
198
|
return !option.disabled;
|
|
202
199
|
});
|
|
203
200
|
}, [visibleFlatOptions]);
|
|
204
|
-
var lastEnabledIndex = useMemo(function () {
|
|
205
|
-
var _a;
|
|
206
|
-
for (var index = visibleFlatOptions.length - 1; index >= 0; index -= 1) {
|
|
207
|
-
if (!((_a = visibleFlatOptions[index]) === null || _a === void 0 ? void 0 : _a.disabled)) {
|
|
208
|
-
return index;
|
|
209
|
-
}
|
|
210
|
-
}
|
|
211
|
-
return null;
|
|
212
|
-
}, [visibleFlatOptions]);
|
|
213
201
|
useEffect(function () {
|
|
214
202
|
if (!innerOpen) {
|
|
215
203
|
setActiveIndex(selectedIndex);
|
|
@@ -238,14 +226,14 @@ export var Select = function Select(props) {
|
|
|
238
226
|
listRef.current = listRef.current.slice(0, visibleFlatOptions.length);
|
|
239
227
|
listContentRef.current = listContentRef.current.slice(0, visibleFlatOptions.length);
|
|
240
228
|
}, [visibleFlatOptions.length]);
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
if (innerOpen &&
|
|
244
|
-
|
|
229
|
+
var setSearchInputRef = useEventCallback(function (node) {
|
|
230
|
+
searchInputRef.current = node;
|
|
231
|
+
if (node && innerOpen && filterInputAutoFocus) {
|
|
232
|
+
node.focus({
|
|
245
233
|
preventScroll: true
|
|
246
234
|
});
|
|
247
235
|
}
|
|
248
|
-
}
|
|
236
|
+
});
|
|
249
237
|
var notifyBlurIfOutside = useEventCallback(function (relatedTarget, event) {
|
|
250
238
|
var _a, _b;
|
|
251
239
|
var nextTarget = relatedTarget;
|
|
@@ -263,10 +251,10 @@ export var Select = function Select(props) {
|
|
|
263
251
|
});
|
|
264
252
|
var commitChange = useEventCallback(function (nextValue, nextOption) {
|
|
265
253
|
setInnerValue(nextValue);
|
|
266
|
-
onChange === null || onChange === void 0 ? void 0 : onChange(nextValue, nextOption);
|
|
254
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(nextValue, nextOption, name);
|
|
267
255
|
});
|
|
268
256
|
var handleSelectOption = useEventCallback(function (option) {
|
|
269
|
-
var _a;
|
|
257
|
+
var _a, _b;
|
|
270
258
|
if (option.disabled) {
|
|
271
259
|
return;
|
|
272
260
|
}
|
|
@@ -276,10 +264,19 @@ export var Select = function Select(props) {
|
|
|
276
264
|
commitChange(nextValue, nextOptions);
|
|
277
265
|
return;
|
|
278
266
|
}
|
|
267
|
+
if (allowDeselect && innerValue === option.value) {
|
|
268
|
+
commitChange(undefined, undefined);
|
|
269
|
+
handleOpenChange(false);
|
|
270
|
+
onBlur === null || onBlur === void 0 ? void 0 : onBlur();
|
|
271
|
+
(_a = triggerRef.current) === null || _a === void 0 ? void 0 : _a.focus({
|
|
272
|
+
preventScroll: true
|
|
273
|
+
});
|
|
274
|
+
return;
|
|
275
|
+
}
|
|
279
276
|
commitChange(option.value, option);
|
|
280
277
|
handleOpenChange(false);
|
|
281
278
|
onBlur === null || onBlur === void 0 ? void 0 : onBlur();
|
|
282
|
-
(
|
|
279
|
+
(_b = triggerRef.current) === null || _b === void 0 ? void 0 : _b.focus({
|
|
283
280
|
preventScroll: true
|
|
284
281
|
});
|
|
285
282
|
});
|
|
@@ -295,10 +292,15 @@ export var Select = function Select(props) {
|
|
|
295
292
|
commitChange(nextValue, nextOptions);
|
|
296
293
|
});
|
|
297
294
|
var handleTriggerKeyDown = useEventCallback(function (event) {
|
|
298
|
-
if (
|
|
295
|
+
if (!interactive) {
|
|
299
296
|
return;
|
|
300
297
|
}
|
|
301
298
|
if (event.key === KEYBOARD.ENTER || event.key === KEYBOARD.SPACE) {
|
|
299
|
+
if (innerOpen && activeIndex !== null && visibleFlatOptions[activeIndex] && !visibleFlatOptions[activeIndex].disabled) {
|
|
300
|
+
event.preventDefault();
|
|
301
|
+
handleSelectOption(visibleFlatOptions[activeIndex]);
|
|
302
|
+
return;
|
|
303
|
+
}
|
|
302
304
|
event.preventDefault();
|
|
303
305
|
handleOpenChange(!innerOpen);
|
|
304
306
|
return;
|
|
@@ -331,34 +333,57 @@ export var Select = function Select(props) {
|
|
|
331
333
|
setInnerSearchValue(nextValue);
|
|
332
334
|
onSearchChange === null || onSearchChange === void 0 ? void 0 : onSearchChange(nextValue);
|
|
333
335
|
});
|
|
336
|
+
var findEnabledIndex = useEventCallback(function (current, direction) {
|
|
337
|
+
var _a;
|
|
338
|
+
var length = visibleFlatOptions.length;
|
|
339
|
+
if (length === 0) {
|
|
340
|
+
return null;
|
|
341
|
+
}
|
|
342
|
+
var start = current !== null && current !== void 0 ? current : direction === 1 ? -1 : length;
|
|
343
|
+
for (var step = 1; step <= length; step += 1) {
|
|
344
|
+
var candidate = ((start + direction * step) % length + length) % length;
|
|
345
|
+
if (!((_a = visibleFlatOptions[candidate]) === null || _a === void 0 ? void 0 : _a.disabled)) {
|
|
346
|
+
return candidate;
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
return null;
|
|
350
|
+
});
|
|
334
351
|
var handleSearchKeyDown = useEventCallback(function (event) {
|
|
335
|
-
var _a
|
|
336
|
-
if (event.key === KEYBOARD.ARROW_DOWN
|
|
352
|
+
var _a;
|
|
353
|
+
if (event.key === KEYBOARD.ARROW_DOWN) {
|
|
337
354
|
event.preventDefault();
|
|
338
|
-
|
|
339
|
-
(
|
|
340
|
-
|
|
341
|
-
}
|
|
355
|
+
var next = findEnabledIndex(activeIndex, 1);
|
|
356
|
+
if (next !== null) {
|
|
357
|
+
setActiveIndex(next);
|
|
358
|
+
}
|
|
342
359
|
return;
|
|
343
360
|
}
|
|
344
|
-
if (event.key === KEYBOARD.ARROW_UP
|
|
361
|
+
if (event.key === KEYBOARD.ARROW_UP) {
|
|
345
362
|
event.preventDefault();
|
|
346
|
-
|
|
347
|
-
(
|
|
348
|
-
|
|
349
|
-
}
|
|
363
|
+
var prev = findEnabledIndex(activeIndex, -1);
|
|
364
|
+
if (prev !== null) {
|
|
365
|
+
setActiveIndex(prev);
|
|
366
|
+
}
|
|
367
|
+
return;
|
|
368
|
+
}
|
|
369
|
+
if (event.key === KEYBOARD.ENTER) {
|
|
370
|
+
if (activeIndex !== null && visibleFlatOptions[activeIndex] && !visibleFlatOptions[activeIndex].disabled) {
|
|
371
|
+
event.preventDefault();
|
|
372
|
+
handleSelectOption(visibleFlatOptions[activeIndex]);
|
|
373
|
+
}
|
|
350
374
|
return;
|
|
351
375
|
}
|
|
352
376
|
if (event.key === KEYBOARD.ESCAPE) {
|
|
353
377
|
event.preventDefault();
|
|
354
378
|
handleOpenChange(false);
|
|
355
|
-
(
|
|
379
|
+
(_a = triggerRef.current) === null || _a === void 0 ? void 0 : _a.focus({
|
|
356
380
|
preventScroll: true
|
|
357
381
|
});
|
|
358
382
|
}
|
|
359
383
|
});
|
|
360
384
|
var renderValueMeta = {
|
|
361
385
|
disabled: disabled,
|
|
386
|
+
readOnly: readOnly,
|
|
362
387
|
multiple: multiple,
|
|
363
388
|
maxVisibleValues: maxVisibleValues,
|
|
364
389
|
open: innerOpen,
|
|
@@ -367,8 +392,9 @@ export var Select = function Select(props) {
|
|
|
367
392
|
};
|
|
368
393
|
var valueLabelClass = hasSelection ? 'value' : 'placeholder';
|
|
369
394
|
var isMultipleValueFilled = multiple && hasSelection && maxVisibleValues === undefined;
|
|
370
|
-
var triggerClassName = classes('trigger', joinCls(classes("trigger-".concat(normalizedSize)), classes("trigger-".concat(variant)), innerOpen && classes('trigger-open'), isMultipleValueFilled && classes('trigger-multiple-filled'), hasSelection ? classes('trigger-filled') : classes('trigger-placeholder'), status !== 'default' && classes("trigger-".concat(status)), disabled && classes('trigger-disabled')));
|
|
395
|
+
var triggerClassName = classes('trigger', joinCls(classes("trigger-".concat(normalizedSize)), classes("trigger-".concat(variant)), innerOpen && classes('trigger-open'), isMultipleValueFilled && classes('trigger-multiple-filled'), hasSelection ? classes('trigger-filled') : classes('trigger-placeholder'), status !== 'default' && classes("trigger-".concat(status)), disabled && classes('trigger-disabled'), readOnly && !disabled && classes('trigger-readonly')));
|
|
371
396
|
var iconSize = normalizedSize === 'small' ? 16 : 20;
|
|
397
|
+
var activeOptionId = searchable && innerOpen && activeIndex !== null ? "".concat(optionIdPrefix, "-").concat(activeIndex) : undefined;
|
|
372
398
|
var floatingAriaLabelledBy = ariaLabelledBy !== null && ariaLabelledBy !== void 0 ? ariaLabelledBy : label ? labelId : undefined;
|
|
373
399
|
var describedByIds = [description ? descriptionId : null, feedback ? feedbackId : null].filter(Boolean).join(' ') || undefined;
|
|
374
400
|
return _jsxs(SelectFieldShell, {
|
|
@@ -378,6 +404,8 @@ export var Select = function Select(props) {
|
|
|
378
404
|
variant: variant,
|
|
379
405
|
status: status,
|
|
380
406
|
disabled: disabled,
|
|
407
|
+
readOnly: readOnly,
|
|
408
|
+
loading: loading,
|
|
381
409
|
label: label,
|
|
382
410
|
info: info,
|
|
383
411
|
description: description,
|
|
@@ -392,6 +420,7 @@ export var Select = function Select(props) {
|
|
|
392
420
|
type: 'button',
|
|
393
421
|
name: name,
|
|
394
422
|
disabled: disabled,
|
|
423
|
+
'aria-readonly': readOnly || undefined,
|
|
395
424
|
className: triggerClassName,
|
|
396
425
|
onKeyDown: handleTriggerKeyDown,
|
|
397
426
|
onBlur: handleTriggerBlur,
|
|
@@ -422,28 +451,33 @@ export var Select = function Select(props) {
|
|
|
422
451
|
})]
|
|
423
452
|
}), _jsx("span", {
|
|
424
453
|
className: classes('icon'),
|
|
425
|
-
children: _jsx(
|
|
454
|
+
children: loading ? _jsx(Spinner, {
|
|
455
|
+
size: iconSize,
|
|
456
|
+
strokeWidth: 2
|
|
457
|
+
}) : _jsx(Icons, {
|
|
426
458
|
name: innerOpen ? 'chevronUp' : 'chevronDown',
|
|
427
459
|
size: iconSize,
|
|
428
460
|
color: "currentColor"
|
|
429
461
|
})
|
|
430
462
|
})]
|
|
431
|
-
})),
|
|
432
|
-
|
|
463
|
+
})), isMounted && interactive && function () {
|
|
464
|
+
var panelNode = _jsx(FloatingFocusManager, {
|
|
433
465
|
context: context,
|
|
434
466
|
modal: false,
|
|
435
467
|
initialFocus: -1,
|
|
436
468
|
returnFocus: false,
|
|
437
469
|
children: _jsxs("div", Object.assign({}, getFloatingProps({
|
|
438
470
|
ref: setFloating,
|
|
439
|
-
className: classes('panel'),
|
|
440
|
-
style: floatingStyles
|
|
471
|
+
className: joinCls(classes('panel'), panelClassName),
|
|
472
|
+
style: Object.assign(Object.assign({}, floatingStyles), transitionStyles)
|
|
441
473
|
}), {
|
|
442
474
|
children: [searchable && _jsx(SelectSearchControl, {
|
|
443
|
-
ref:
|
|
475
|
+
ref: setSearchInputRef,
|
|
444
476
|
classes: classes,
|
|
477
|
+
size: normalizedSize,
|
|
445
478
|
placeholder: searchPlaceholder,
|
|
446
479
|
value: innerSearchValue,
|
|
480
|
+
activeDescendant: activeOptionId,
|
|
447
481
|
onBlur: handleSearchBlur,
|
|
448
482
|
onChange: handleSearchChange,
|
|
449
483
|
onKeyDown: handleSearchKeyDown
|
|
@@ -486,9 +520,10 @@ export var Select = function Select(props) {
|
|
|
486
520
|
ref: function ref(node) {
|
|
487
521
|
listRef.current[optionFlatIndex] = node;
|
|
488
522
|
},
|
|
523
|
+
id: "".concat(optionIdPrefix, "-").concat(optionFlatIndex),
|
|
489
524
|
type: 'button',
|
|
490
525
|
role: 'option',
|
|
491
|
-
className: classes('option', joinCls(active && classes('option-active'), selected && classes('option-selected'), option.disabled && classes('option-disabled'))),
|
|
526
|
+
className: classes('option', joinCls(active && classes('option-active'), selected && classes('option-selected'), option.disabled && classes('option-disabled'), optionClassName)),
|
|
492
527
|
disabled: option.disabled,
|
|
493
528
|
'aria-selected': selected,
|
|
494
529
|
onClick: function onClick(event) {
|
|
@@ -503,7 +538,8 @@ export var Select = function Select(props) {
|
|
|
503
538
|
children: renderOption ? renderOption(option, optionMeta) : _jsx(SelectOptionContent, {
|
|
504
539
|
classes: classes,
|
|
505
540
|
option: option,
|
|
506
|
-
selected: selected
|
|
541
|
+
selected: selected,
|
|
542
|
+
content: renderOptionContent === null || renderOptionContent === void 0 ? void 0 : renderOptionContent(option, optionMeta)
|
|
507
543
|
})
|
|
508
544
|
}), "".concat(group.key, "-").concat(option.value));
|
|
509
545
|
})]
|
|
@@ -515,10 +551,13 @@ export var Select = function Select(props) {
|
|
|
515
551
|
children: panelFooter
|
|
516
552
|
})]
|
|
517
553
|
}))
|
|
518
|
-
})
|
|
519
|
-
|
|
554
|
+
});
|
|
555
|
+
return portal ? _jsx(FloatingPortal, {
|
|
556
|
+
children: panelNode
|
|
557
|
+
}) : panelNode;
|
|
558
|
+
}()]
|
|
520
559
|
});
|
|
521
560
|
};
|
|
522
561
|
Select.displayName = 'Select';
|
|
523
562
|
export default /*#__PURE__*/memo(Select);
|
|
524
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvU2VsZWN0L1NlbGVjdC5qcyIsImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvU2VsZWN0L1NlbGVjdC50c3giXSwibmFtZXMiOlsianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsImF1dG9VcGRhdGUiLCJmbGlwIiwiRmxvYXRpbmdGb2N1c01hbmFnZXIiLCJGbG9hdGluZ1BvcnRhbCIsIm9mZnNldCIsInNoaWZ0Iiwic2l6ZSIsImZsb2F0aW5nU2l6ZSIsInVzZUNsaWNrIiwidXNlRGlzbWlzcyIsInVzZUZsb2F0aW5nIiwidXNlSW50ZXJhY3Rpb25zIiwidXNlTGlzdE5hdmlnYXRpb24iLCJ1c2VSb2xlIiwidXNlVHlwZWFoZWFkIiwibWVtbyIsInVzZUVmZmVjdCIsInVzZUlkIiwidXNlTWVtbyIsInVzZVJlZiIsInVzZVN0YXRlIiwidXNlQ29udHJvbGxlZFN0YXRlIiwidXNlRXZlbnRDYWxsYmFjayIsIkljb25zIiwiVHlwb2dyYXBoeUJvZHkiLCJUeXBvZ3JhcGh5TGFiZWwiLCJqb2luQ2xzIiwiZGVmYXVsdCIsInJvb3RDbGFzc25hbWVzIiwiU2VsZWN0RmllbGRTaGVsbCIsIlNlbGVjdE9wdGlvbkNvbnRlbnQiLCJTZWxlY3RTZWFyY2hDb250cm9sIiwiU2VsZWN0VmFsdWVDb250ZW50IiwiS0VZQk9BUkQiLCJTRUxFQ1RfVFlQT0dSQVBIWSIsImV4dHJhY3RPcHRpb25UZXh0IiwiZmlsdGVyT3B0aW9uR3JvdXBzIiwiZmxhdHRlbk9wdGlvbkdyb3VwcyIsImdldE11bHRpcGxlVmFsdWUiLCJnZXRPcHRpb25zQnlWYWx1ZXMiLCJnZXRTZWxlY3RlZE9wdGlvbnMiLCJpc09wdGlvblNlbGVjdGVkIiwibm9ybWFsaXplU2l6ZSIsIm5vcm1hbGl6ZU9wdGlvbkdyb3VwcyIsInJlbW92ZU11bHRpcGxlVmFsdWUiLCJ0b2dnbGVNdWx0aXBsZVZhbHVlIiwiREVGQVVMVF9NQVhfSEVJR0hUIiwiU2VsZWN0IiwicHJvcHMiLCJfcHJvcHMkY2xhc3NOYW1lIiwiY2xhc3NOYW1lIiwiX3Byb3BzJHByZWZpeENscyIsInByZWZpeENscyIsInN0eWxlIiwiaWQiLCJuYW1lIiwiYXJpYUxhYmVsIiwiYXJpYUxhYmVsbGVkQnkiLCJfcHJvcHMkcGxhY2Vob2xkZXIiLCJwbGFjZWhvbGRlciIsIl9wcm9wcyRvcHRpb25zIiwib3B0aW9ucyIsInZhbHVlIiwiZGVmYXVsdFZhbHVlIiwiX3Byb3BzJHNpemUiLCJfcHJvcHMkc3RhdHVzIiwic3RhdHVzIiwiX3Byb3BzJHZhcmlhbnQiLCJ2YXJpYW50IiwiX3Byb3BzJGRpc2FibGVkIiwiZGlzYWJsZWQiLCJfcHJvcHMkbXVsdGlwbGUiLCJtdWx0aXBsZSIsIm1heFZpc2libGVWYWx1ZXMiLCJfcHJvcHMkc2VhcmNoYWJsZSIsInNlYXJjaGFibGUiLCJfcHJvcHMkc2VhcmNoUGxhY2Vob2wiLCJzZWFyY2hQbGFjZWhvbGRlciIsInNlYXJjaFZhbHVlIiwiX3Byb3BzJGRlZmF1bHRTZWFyY2hWIiwiZGVmYXVsdFNlYXJjaFZhbHVlIiwibGFiZWwiLCJpbmZvIiwiZGVzY3JpcHRpb24iLCJmZWVkYmFjayIsIl9wcm9wcyRyZXF1aXJlZCIsInJlcXVpcmVkIiwicHJlZml4IiwiX3Byb3BzJGVtcHR5Q29udGVudCIsImVtcHR5Q29udGVudCIsInBhbmVsRm9vdGVyIiwib3BlbiIsIl9wcm9wcyRkZWZhdWx0T3BlbiIsImRlZmF1bHRPcGVuIiwiX3Byb3BzJGxpc3RNYXhIZWlnaHQiLCJsaXN0TWF4SGVpZ2h0Iiwib25DaGFuZ2UiLCJvbk9wZW5DaGFuZ2UiLCJvblNlYXJjaENoYW5nZSIsIm9uQmx1ciIsImZpbHRlck9wdGlvbiIsInJlbmRlck9wdGlvbiIsInJlbmRlclZhbHVlIiwicmVmIiwiY2xhc3NlcyIsImF1dG9JZCIsInRyaWdnZXJJZCIsImxhYmVsSWQiLCJkZXNjcmlwdGlvbklkIiwiZmVlZGJhY2tJZCIsIl91c2VDb250cm9sbGVkU3RhdGUiLCJ1bmRlZmluZWQiLCJfdXNlQ29udHJvbGxlZFN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwiaW5uZXJWYWx1ZSIsInNldElubmVyVmFsdWUiLCJfdXNlQ29udHJvbGxlZFN0YXRlMyIsIl91c2VDb250cm9sbGVkU3RhdGU0IiwiaW5uZXJPcGVuIiwic2V0SW5uZXJPcGVuIiwiX3VzZUNvbnRyb2xsZWRTdGF0ZTUiLCJfdXNlQ29udHJvbGxlZFN0YXRlNiIsImlubmVyU2VhcmNoVmFsdWUiLCJzZXRJbm5lclNlYXJjaFZhbHVlIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsImFjdGl2ZUluZGV4Iiwic2V0QWN0aXZlSW5kZXgiLCJub3JtYWxpemVkU2l6ZSIsImFsbE9wdGlvbkdyb3VwcyIsImFsbEZsYXRPcHRpb25zIiwidmlzaWJsZU9wdGlvbkdyb3VwcyIsInZpc2libGVGbGF0T3B0aW9ucyIsInNlbGVjdGVkT3B0aW9ucyIsInNlbGVjdGVkSW5kZXgiLCJsZW5ndGgiLCJtYXRjaGVkSW5kZXgiLCJmaW5kSW5kZXgiLCJvcHRpb24iLCJoYXNTZWxlY3Rpb24iLCJsaXN0UmVmIiwibGlzdENvbnRlbnRSZWYiLCJmbG9hdGluZ1JlZiIsInRyaWdnZXJSZWYiLCJzZWFyY2hJbnB1dFJlZiIsImhhbmRsZVRyaWdnZXJSZWYiLCJub2RlIiwiY3VycmVudCIsImhhbmRsZU9wZW5DaGFuZ2UiLCJuZXh0T3BlbiIsIl91c2VGbG9hdGluZyIsInBsYWNlbWVudCIsIndoaWxlRWxlbWVudHNNb3VudGVkIiwibWlkZGxld2FyZSIsInBhZGRpbmciLCJhcHBseSIsIl9yZWYiLCJyZWN0cyIsImVsZW1lbnRzIiwiYXZhaWxhYmxlSGVpZ2h0IiwibmV4dE1heEhlaWdodCIsIk1hdGgiLCJtYXgiLCJtaW4iLCJPYmplY3QiLCJhc3NpZ24iLCJmbG9hdGluZyIsIndpZHRoIiwiY29uY2F0IiwicmVmZXJlbmNlIiwibWF4SGVpZ2h0IiwicmVmcyIsImZsb2F0aW5nU3R5bGVzIiwiY29udGV4dCIsInNldFJlZmVyZW5jZSIsInNldEZsb2F0aW5nIiwiY2xpY2siLCJlbmFibGVkIiwiZGlzbWlzcyIsIm91dHNpZGVQcmVzc0V2ZW50Iiwicm9sZSIsImxpc3ROYXZpZ2F0aW9uIiwib25OYXZpZ2F0ZSIsImxvb3AiLCJ0eXBlYWhlYWQiLCJvbk1hdGNoIiwiX3VzZUludGVyYWN0aW9ucyIsImdldFJlZmVyZW5jZVByb3BzIiwiZ2V0RmxvYXRpbmdQcm9wcyIsImdldEl0ZW1Qcm9wcyIsImZpcnN0RW5hYmxlZEluZGV4IiwibGFzdEVuYWJsZWRJbmRleCIsIl9hIiwiaW5kZXgiLCJwcmV2IiwiZm9jdXMiLCJwcmV2ZW50U2Nyb2xsIiwic2xpY2UiLCJub3RpZnlCbHVySWZPdXRzaWRlIiwicmVsYXRlZFRhcmdldCIsImV2ZW50IiwiX2IiLCJuZXh0VGFyZ2V0Iiwid2l0aGluVHJpZ2dlciIsImNvbnRhaW5zIiwid2l0aGluRmxvYXRpbmciLCJoYW5kbGVUcmlnZ2VyQmx1ciIsImhhbmRsZU9wdGlvbkJsdXIiLCJjb21taXRDaGFuZ2UiLCJuZXh0VmFsdWUiLCJuZXh0T3B0aW9uIiwiaGFuZGxlU2VsZWN0T3B0aW9uIiwibmV4dE9wdGlvbnMiLCJoYW5kbGVSZW1vdmVTZWxlY3RlZFZhbHVlIiwib3B0aW9uVmFsdWUiLCJpbmNsdWRlcyIsImhhbmRsZVRyaWdnZXJLZXlEb3duIiwia2V5IiwiRU5URVIiLCJTUEFDRSIsInByZXZlbnREZWZhdWx0IiwiQVJST1dfRE9XTiIsIkFSUk9XX1VQIiwiaGFuZGxlSXRlbU1vdXNlRW50ZXIiLCJoYW5kbGVUYWdSZW1vdmVNb3VzZURvd24iLCJzdG9wUHJvcGFnYXRpb24iLCJoYW5kbGVUYWdSZW1vdmVDbGljayIsImhhbmRsZVNlYXJjaEJsdXIiLCJoYW5kbGVTZWFyY2hDaGFuZ2UiLCJfZXZlbnQiLCJoYW5kbGVTZWFyY2hLZXlEb3duIiwiX2MiLCJFU0NBUEUiLCJyZW5kZXJWYWx1ZU1ldGEiLCJ2YWx1ZUxhYmVsQ2xhc3MiLCJpc011bHRpcGxlVmFsdWVGaWxsZWQiLCJ0cmlnZ2VyQ2xhc3NOYW1lIiwiaWNvblNpemUiLCJmbG9hdGluZ0FyaWFMYWJlbGxlZEJ5IiwiZGVzY3JpYmVkQnlJZHMiLCJmaWx0ZXIiLCJCb29sZWFuIiwiam9pbiIsImNoaWxkcmVuIiwidHlwZSIsIm9uS2V5RG93biIsIm9uUmVtb3ZlIiwib25SZW1vdmVDbGljayIsIm9uUmVtb3ZlTW91c2VEb3duIiwiY29sb3IiLCJtb2RhbCIsImluaXRpYWxGb2N1cyIsInJldHVybkZvY3VzIiwiZW1wdHkiLCJmbGF0SW5kZXgiLCJtYXAiLCJncm91cCIsImdyb3VwTGFiZWwiLCJzdHJvbmciLCJvcHRpb25GbGF0SW5kZXgiLCJzZWxlY3RlZCIsImFjdGl2ZSIsIm9wdGlvbk1ldGEiLCJvbkNsaWNrIiwib25Nb3VzZUVudGVyIiwiZGlzcGxheU5hbWUiXSwibWFwcGluZ3MiOiI7QUFBQSxTQUFTQSxHQUFHLElBQUlDLElBQUksRUFBRUMsSUFBSSxJQUFJQyxLQUFLLFFBQVEsbUJBQW1CO0FDQTlELFNBQ0VDLFVBQVUsRUFDVkMsSUFBSSxFQUNKQyxvQkFBb0IsRUFDcEJDLGNBQWMsRUFDZEMsTUFBTSxFQUNOQyxLQUFLLEVBQ0xDLElBQUksSUFBSUMsWUFBWSxFQUNwQkMsUUFBUSxFQUNSQyxVQUFVLEVBQ1ZDLFdBQVcsRUFDWEMsZUFBZSxFQUNmQyxpQkFBaUIsRUFDakJDLE9BQU8sRUFDUEMsWUFBWSxRQUNQLG9CQUFvQjtBQUMzQixTQUFTQyxJQUFJLEVBQUVDLFNBQVMsRUFBRUMsS0FBSyxFQUFFQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsUUFBUSxRQUFRLE9BQU87QUFDekUsU0FBU0Msa0JBQWtCLEVBQUVDLGdCQUFnQixRQUFRLGVBQWU7QUFDcEUsU0FBU0MsS0FBSyxRQUFRLFVBQVU7QUFDaEMsU0FBU0MsY0FBYyxFQUFFQyxlQUFlLFFBQVEsZUFBZTtBQUMvRCxTQUFTQyxPQUFPLEVBQUVDLE9BQU8sSUFBSUMsY0FBYyxRQUFRLHdCQUF3QjtBQWdCM0UsT0FBT0MsZ0JBQWdCLE1BQU0sb0JBQW9CO0FBQ2pELE9BQU9DLG1CQUFtQixNQUFNLHVCQUF1QjtB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QUEySSxRQUFBLEVBQUd6SjtVQUFXLENBQUEsQ0FDdEQ7UUFBQSxDQUFBLENBQUE7TUFDRyxDQUFBO0lBQ2UsQ0FBQSxDQUUxQjtFQUFBLENBQUEsQ0FDZ0I7QUFFdkIsQ0FBQztBQUVEM0MsTUFBTSxDQUFDME4sV0FBVyxHQUFHLFFBQVE7QUFFN0IsNEJBQWUxUCxJQUFJLENBQUNnQyxNQUFNLENBQUMiLCJmaWxlIjoiY29tcG9uZW50cy9TZWxlY3QvU2VsZWN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IGF1dG9VcGRhdGUsIGZsaXAsIEZsb2F0aW5nRm9jdXNNYW5hZ2VyLCBGbG9hdGluZ1BvcnRhbCwgb2Zmc2V0LCBzaGlmdCwgc2l6ZSBhcyBmbG9hdGluZ1NpemUsIHVzZUNsaWNrLCB1c2VEaXNtaXNzLCB1c2VGbG9hdGluZywgdXNlSW50ZXJhY3Rpb25zLCB1c2VMaXN0TmF2aWdhdGlvbiwgdXNlUm9sZSwgdXNlVHlwZWFoZWFkLCB9IGZyb20gJ0BmbG9hdGluZy11aS9yZWFjdCc7XG5pbXBvcnQgeyBtZW1vLCB1c2VFZmZlY3QsIHVzZUlkLCB1c2VNZW1vLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlQ29udHJvbGxlZFN0YXRlLCB1c2VFdmVudENhbGxiYWNrIH0gZnJvbSAnQDFtb25leS9ob29rcyc7XG5pbXBvcnQgeyBJY29ucyB9IGZyb20gJy4uL0ljb25zJztcbmltcG9ydCB7IFR5cG9ncmFwaHlCb2R5LCBUeXBvZ3JhcGh5TGFiZWwgfSBmcm9tICcuLi9UeXBvZ3JhcGh5JztcbmltcG9ydCB7IGpvaW5DbHMsIGRlZmF1bHQgYXMgcm9vdENsYXNzbmFtZXMgfSBmcm9tICcuLi8uLi91dGlscy9jbGFzc25hbWVzJztcbmltcG9ydCBTZWxlY3RGaWVsZFNoZWxsIGZyb20gJy4vU2VsZWN0RmllbGRTaGVsbCc7XG5pbXBvcnQgU2VsZWN0T3B0aW9uQ29udGVudCBmcm9tICcuL1NlbGVjdE9wdGlvbkNvbnRlbnQnO1xuaW1wb3J0IFNlbGVjdFNlYXJjaENvbnRyb2wgZnJvbSAnLi9TZWxlY3RTZWFyY2hDb250cm9sJztcbmltcG9ydCBTZWxlY3RWYWx1ZUNvbnRlbnQgZnJvbSAnLi9TZWxlY3RWYWx1ZUNvbnRlbnQnO1xuaW1wb3J0IHsgS0VZQk9BUkQsIFNFTEVDVF9UWVBPR1JBUEhZIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgZXh0cmFjdE9wdGlvblRleHQsIGZpbHRlck9wdGlvbkdyb3VwcywgZmxhdHRlbk9wdGlvbkdyb3VwcywgZ2V0TXVsdGlwbGVWYWx1ZSwgZ2V0T3B0aW9uc0J5VmFsdWVzLCBnZXRTZWxlY3RlZE9wdGlvbnMsIGlzT3B0aW9uU2VsZWN0ZWQsIG5vcm1hbGl6ZVNpemUsIG5vcm1hbGl6ZU9wdGlvbkdyb3VwcywgcmVtb3ZlTXVsdGlwbGVWYWx1ZSwgdG9nZ2xlTXVsdGlwbGVWYWx1ZSwgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCAnLi9zdHlsZSc7XG5jb25zdCBERUZBVUxUX01BWF9IRUlHSFQgPSAzMjA7XG5leHBvcnQgY29uc3QgU2VsZWN0ID0gKHByb3BzKSA9PiB7XG4gICAgY29uc3QgeyBjbGFzc05hbWUgPSAnJywgcHJlZml4Q2xzID0gJ3NlbGVjdCcsIHN0eWxlLCBpZCwgbmFtZSwgJ2FyaWEtbGFiZWwnOiBhcmlhTGFiZWwsICdhcmlhLWxhYmVsbGVkYnknOiBhcmlhTGFiZWxsZWRCeSwgcGxhY2Vob2xkZXIgPSAnVmFsdWUnLCBvcHRpb25zID0gW10sIHZhbHVlLCBkZWZhdWx0VmFsdWUsIHNpemUgPSAnbGFyZ2UnLCBzdGF0dXMgPSAnZGVmYXVsdCcsIHZhcmlhbnQgPSAnZmlsbCcsIGRpc2FibGVkID0gZmFsc2UsIG11bHRpcGxlID0gZmFsc2UsIG1heFZpc2libGVWYWx1ZXMsIHNlYXJjaGFibGUgPSBmYWxzZSwgc2VhcmNoUGxhY2Vob2xkZXIgPSAnU2VhcmNoJywgc2VhcmNoVmFsdWUsIGRlZmF1bHRTZWFyY2hWYWx1ZSA9ICcnLCBsYWJlbCwgaW5mbywgZGVzY3JpcHRpb24sIGZlZWRiYWNrLCByZXF1aXJlZCA9IGZhbHNlLCBwcmVmaXgsIGVtcHR5Q29udGVudCA9ICdObyBvcHRpb25zJywgcGFuZWxGb290ZXIsIG9wZW4sIGRlZmF1bHRPcGVuID0gZmFsc2UsIGxpc3RNYXhIZWlnaHQgPSBERUZBVUxUX01BWF9IRUlHSFQsIG9uQ2hhbmdlLCBvbk9wZW5DaGFuZ2UsIG9uU2VhcmNoQ2hhbmdlLCBvbkJsdXIsIGZpbHRlck9wdGlvbiwgcmVuZGVyT3B0aW9uLCByZW5kZXJWYWx1ZSwgcmVmLCB9ID0gcHJvcHM7XG4gICAgY29uc3QgY2xhc3NlcyA9IHJvb3RDbGFzc25hbWVzKHByZWZpeENscyk7XG4gICAgY29uc3QgYXV0b0lkID0gdXNlSWQoKTtcbiAgICBjb25zdCB0cmlnZ2VySWQgPSBpZCAhPT0gbnVsbCAmJiBpZCAhPT0gdm9pZCAwID8gaWQgOiBhdXRvSWQ7XG4gICAgY29uc3QgbGFiZWxJZCA9IHVzZUlkKCk7XG4gICAgY29uc3QgZGVzY3JpcHRpb25JZCA9IHVzZUlkKCk7XG4gICAgY29uc3QgZmVlZGJhY2tJZCA9IHVzZUlkKCk7XG4gICAgY29uc3QgW2lubmVyVmFsdWUsIHNldElubmVyVmFsdWVdID0gdXNlQ29udHJvbGxlZFN0YXRlKGRlZmF1bHRWYWx1ZSAhPT0gbnVsbCAmJiBkZWZhdWx0VmFsdWUgIT09IHZvaWQgMCA/IGRlZmF1bHRWYWx1ZSA6IChtdWx0aXBsZSA/IFtdIDogdW5kZWZpbmVkKSwgdmFsdWUpO1xuICAgIGNvbnN0IFtpbm5lck9wZW4sIHNldElubmVyT3Blbl0gPSB1c2VDb250cm9sbGVkU3RhdGUoZGVmYXVsdE9wZW4sIG9wZW4pO1xuICAgIGNvbnN0IFtpbm5lclNlYXJjaFZhbHVlLCBzZXRJbm5lclNlYXJjaFZhbHVlXSA9IHVzZUNvbnRyb2xsZWRTdGF0ZShkZWZhdWx0U2VhcmNoVmFsdWUsIHNlYXJjaFZhbHVlKTtcbiAgICBjb25zdCBbYWN0aXZlSW5kZXgsIHNldEFjdGl2ZUluZGV4XSA9IHVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IG5vcm1hbGl6ZWRTaXplID0gbm9ybWFsaXplU2l6ZShzaXplKTtcbiAgICBjb25zdCBhbGxPcHRpb25Hcm91cHMgPSB1c2VNZW1vKCgpID0+IG5vcm1hbGl6ZU9wdGlvbkdyb3VwcyhvcHRpb25zKSwgW29wdGlvbnNdKTtcbiAgICBjb25zdCBhbGxGbGF0T3B0aW9ucyA9IHVzZU1lbW8oKCkgPT4gZmxhdHRlbk9wdGlvbkdyb3VwcyhhbGxPcHRpb25Hcm91cHMpLCBbYWxsT3B0aW9uR3JvdXBzXSk7XG4gICAgY29uc3QgdmlzaWJsZU9wdGlvbkdyb3VwcyA9IHVzZU1lbW8oKCkgPT4gKHNlYXJjaGFibGVcbiAgICAgICAgPyBmaWx0ZXJPcHRpb25Hcm91cHMoYWxsT3B0aW9uR3JvdXBzLCBpbm5lclNlYXJjaFZhbHVlLCBmaWx0ZXJPcHRpb24pXG4gICAgICAgIDogYWxsT3B0aW9uR3JvdXBzKSwgW2FsbE9wdGlvbkdyb3VwcywgZmlsdGVyT3B0aW9uLCBpbm5lclNlYXJjaFZhbHVlLCBzZWFyY2hhYmxlXSk7XG4gICAgY29uc3QgdmlzaWJsZUZsYXRPcHRpb25zID0gdXNlTWVtbygoKSA9PiBmbGF0dGVuT3B0aW9uR3JvdXBzKHZpc2libGVPcHRpb25Hcm91cHMpLCBbdmlzaWJsZU9wdGlvbkdyb3Vwc10pO1xuICAgIGNvbnN0IHNlbGVjdGVkT3B0aW9ucyA9IHVzZU1lbW8oKCkgPT4gZ2V0U2VsZWN0ZWRPcHRpb25zKGFsbEZsYXRPcHRpb25zLCBpbm5lclZhbHVlLCBtdWx0aXBsZSksIFthbGxGbGF0T3B0aW9ucywgaW5uZXJWYWx1ZSwgbXVsdGlwbGVdKTtcbiAgICBjb25zdCBzZWxlY3RlZEluZGV4ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICAgIGlmIChzZWxlY3RlZE9wdGlvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBtYXRjaGVkSW5kZXggPSB2aXNpYmxlRmxhdE9wdGlvbnMuZmluZEluZGV4KChvcHRpb24pID0+IG9wdGlvbi52YWx1ZSA9PT0gc2VsZWN0ZWRPcHRpb25zWzBdLnZhbHVlKTtcbiAgICAgICAgcmV0dXJuIG1hdGNoZWRJbmRleCA+PSAwID8gbWF0Y2hlZEluZGV4IDogbnVsbDtcbiAgICB9LCBbc2VsZWN0ZWRPcHRpb25zLCB2aXNpYmxlRmxhdE9wdGlvbnNdKTtcbiAgICBjb25zdCBoYXNTZWxlY3Rpb24gPSBzZWxlY3RlZE9wdGlvbnMubGVuZ3RoID4gMDtcbiAgICBjb25zdCBsaXN0UmVmID0gdXNlUmVmKFtdKTtcbiAgICBjb25zdCBsaXN0Q29udGVudFJlZiA9IHVzZVJlZihbXSk7XG4gICAgY29uc3QgZmxvYXRpbmdSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgdHJpZ2dlclJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBzZWFyY2hJbnB1dFJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBoYW5kbGVUcmlnZ2VyUmVmID0gdXNlRXZlbnRDYWxsYmFjaygobm9kZSkgPT4ge1xuICAgICAgICB0cmlnZ2VyUmVmLmN1cnJlbnQgPSBub2RlO1xuICAgICAgICBpZiAocmVmKSB7XG4gICAgICAgICAgICByZWYuY3VycmVudCA9IG5vZGU7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVPcGVuQ2hhbmdlID0gdXNlRXZlbnRDYWxsYmFjaygobmV4dE9wZW4pID0+IHtcbiAgICAgICAgc2V0SW5uZXJPcGVuKG5leHRPcGVuKTtcbiAgICAgICAgb25PcGVuQ2hhbmdlID09PSBudWxsIHx8IG9uT3BlbkNoYW5nZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25PcGVuQ2hhbmdlKG5leHRPcGVuKTtcbiAgICB9KTtcbiAgICBjb25zdCB7IHJlZnMsIGZsb2F0aW5nU3R5bGVzLCBjb250ZXh0LCB9ID0gdXNlRmxvYXRpbmcoe1xuICAgICAgICBvcGVuOiBpbm5lck9wZW4sXG4gICAgICAgIG9uT3BlbkNoYW5nZTogaGFuZGxlT3BlbkNoYW5nZSxcbiAgICAgICAgcGxhY2VtZW50OiAnYm90dG9tLXN0YXJ0JyxcbiAgICAgICAgd2hpbGVFbGVtZW50c01vdW50ZWQ6IGF1dG9VcGRhdGUsXG4gICAgICAgIG1pZGRsZXdhcmU6IFtcbiAgICAgICAgICAgIG9mZnNldCgwKSxcbiAgICAgICAgICAgIGZsaXAoeyBwYWRkaW5nOiA4IH0pLFxuICAgICAgICAgICAgc2hpZnQoeyBwYWRkaW5nOiA4IH0pLFxuICAgICAgICAgICAgZmxvYXRpbmdTaXplKHtcbiAgICAgICAgICAgICAgICBhcHBseSh7IHJlY3RzLCBlbGVtZW50cywgYXZhaWxhYmxlSGVpZ2h0IH0pIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV4dE1heEhlaWdodCA9IE1hdGgubWF4KDEyMCwgTWF0aC5taW4obGlzdE1heEhlaWdodCwgYXZhaWxhYmxlSGVpZ2h0KSk7XG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oZWxlbWVudHMuZmxvYXRpbmcuc3R5bGUsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBgJHtyZWN0cy5yZWZlcmVuY2Uud2lkdGh9cHhgLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWF4SGVpZ2h0OiBgJHtuZXh0TWF4SGVpZ2h0fXB4YCxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICBdLFxuICAgIH0pO1xuICAgIGNvbnN0IHNldFJlZmVyZW5jZSA9IHVzZUV2ZW50Q2FsbGJhY2soKG5vZGUpID0+IHtcbiAgICAgICAgcmVmcy5zZXRSZWZlcmVuY2Uobm9kZSk7XG4gICAgICAgIGhhbmRsZVRyaWdnZXJSZWYobm9kZSk7XG4gICAgfSk7XG4gICAgY29uc3Qgc2V0RmxvYXRpbmcgPSB1c2VFdmVudENhbGxiYWNrKChub2RlKSA9PiB7XG4gICAgICAgIHJlZnMuc2V0RmxvYXRpbmcobm9kZSk7XG4gICAgICAgIGZsb2F0aW5nUmVmLmN1cnJlbnQgPSBub2RlO1xuICAgIH0pO1xuICAgIGNvbnN0IGNsaWNrID0gdXNlQ2xpY2soY29udGV4dCwgeyBlbmFibGVkOiAhZGlzYWJsZWQgfSk7XG4gICAgY29uc3QgZGlzbWlzcyA9IHVzZURpc21pc3MoY29udGV4dCwgeyBlbmFibGVkOiAhZGlzYWJsZWQsIG91dHNpZGVQcmVzc0V2ZW50OiAnbW91c2Vkb3duJyB9KTtcbiAgICBjb25zdCByb2xlID0gdXNlUm9sZShjb250ZXh0LCB7IHJvbGU6ICdzZWxlY3QnIH0pO1xuICAgIGNvbnN0IGxpc3ROYXZpZ2F0aW9uID0gdXNlTGlzdE5hdmlnYXRpb24oY29udGV4dCwge1xuICAgICAgICBsaXN0UmVmLFxuICAgICAgICBhY3RpdmVJbmRleCxcbiAgICAgICAgc2VsZWN0ZWRJbmRleCxcbiAgICAgICAgb25OYXZpZ2F0ZTogc2V0QWN0aXZlSW5kZXgsXG4gICAgICAgIGVuYWJsZWQ6IGlubmVyT3BlbixcbiAgICAgICAgbG9vcDogdHJ1ZSxcbiAgICB9KTtcbiAgICBjb25zdCB0eXBlYWhlYWQgPSB1c2VUeXBlYWhlYWQoY29udGV4dCwge1xuICAgICAgICBsaXN0UmVmOiBsaXN0Q29udGVudFJlZixcbiAgICAgICAgYWN0aXZlSW5kZXgsXG4gICAgICAgIHNlbGVjdGVkSW5kZXgsXG4gICAgICAgIGVuYWJsZWQ6IGlubmVyT3BlbiAmJiAhc2VhcmNoYWJsZSxcbiAgICAgICAgb25NYXRjaDogc2V0QWN0aXZlSW5kZXgsXG4gICAgfSk7XG4gICAgY29uc3QgeyBnZXRSZWZlcmVuY2VQcm9wcywgZ2V0RmxvYXRpbmdQcm9wcywgZ2V0SXRlbVByb3BzIH0gPSB1c2VJbnRlcmFjdGlvbnMoW1xuICAgICAgICBjbGljayxcbiAgICAgICAgZGlzbWlzcyxcbiAgICAgICAgcm9sZSxcbiAgICAgICAgbGlzdE5hdmlnYXRpb24sXG4gICAgICAgIHR5cGVhaGVhZCxcbiAgICBdKTtcbiAgICBjb25zdCBmaXJzdEVuYWJsZWRJbmRleCA9IHVzZU1lbW8oKCkgPT4gdmlzaWJsZUZsYXRPcHRpb25zLmZpbmRJbmRleCgob3B0aW9uKSA9PiAhb3B0aW9uLmRpc2FibGVkKSwgW3Zpc2libGVGbGF0T3B0aW9uc10pO1xuICAgIGNvbnN0IGxhc3RFbmFibGVkSW5kZXggPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBmb3IgKGxldCBpbmRleCA9IHZpc2libGVGbGF0T3B0aW9ucy5sZW5ndGggLSAxOyBpbmRleCA+PSAwOyBpbmRleCAtPSAxKSB7XG4gICAgICAgICAgICBpZiAoISgoX2EgPSB2aXNpYmxlRmxhdE9wdGlvbnNbaW5kZXhdKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZGlzYWJsZWQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH0sIFt2aXNpYmxlRmxhdE9wdGlvbnNdKTtcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAoIWlubmVyT3Blbikge1xuICAgICAgICAgICAgc2V0QWN0aXZlSW5kZXgoc2VsZWN0ZWRJbmRleCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgc2V0QWN0aXZlSW5kZXgoKHByZXYpID0+IHtcbiAgICAgICAgICAgIGlmIChwcmV2ICE9PSBudWxsICYmIHZpc2libGVGbGF0T3B0aW9uc1twcmV2XSAmJiAhdmlzaWJsZUZsYXRPcHRpb25zW3ByZXZdLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHByZXY7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWRJbmRleCAhPT0gbnVsbCAmJlxuICAgICAgICAgICAgICAgIHZpc2libGVGbGF0T3B0aW9uc1tzZWxlY3RlZEluZGV4XSAmJlxuICAgICAgICAgICAgICAgICF2aXNpYmxlRmxhdE9wdGlvbnNbc2VsZWN0ZWRJbmRleF0uZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZWN0ZWRJbmRleDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmaXJzdEVuYWJsZWRJbmRleCA+PSAwID8gZmlyc3RFbmFibGVkSW5kZXggOiBudWxsO1xuICAgICAgICB9KTtcbiAgICB9LCBbZmlyc3RFbmFibGVkSW5kZXgsIGlubmVyT3Blbiwgc2VsZWN0ZWRJbmRleCwgdmlzaWJsZUZsYXRPcHRpb25zXSk7XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBpZiAoIWlubmVyT3BlbiB8fCBhY3RpdmVJbmRleCA9PT0gbnVsbCB8fCBzZWFyY2hhYmxlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgKF9hID0gbGlzdFJlZi5jdXJyZW50W2FjdGl2ZUluZGV4XSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmZvY3VzKHsgcHJldmVudFNjcm9sbDogdHJ1ZSB9KTtcbiAgICB9LCBbYWN0aXZlSW5kZXgsIGlubmVyT3Blbiwgc2VhcmNoYWJsZV0pO1xuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGxpc3RSZWYuY3VycmVudCA9IGxpc3RSZWYuY3VycmVudC5zbGljZSgwLCB2aXNpYmxlRmxhdE9wdGlvbnMubGVuZ3RoKTtcbiAgICAgICAgbGlzdENvbnRlbnRSZWYuY3VycmVudCA9IGxpc3RDb250ZW50UmVmLmN1cnJlbnQuc2xpY2UoMCwgdmlzaWJsZUZsYXRPcHRpb25zLmxlbmd0aCk7XG4gICAgfSwgW3Zpc2libGVGbGF0T3B0aW9ucy5sZW5ndGhdKTtcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGlmIChpbm5lck9wZW4gJiYgc2VhcmNoYWJsZSkge1xuICAgICAgICAgICAgKF9hID0gc2VhcmNoSW5wdXRSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmZvY3VzKHsgcHJldmVudFNjcm9sbDogdHJ1ZSB9KTtcbiAgICAgICAgfVxuICAgIH0sIFtpbm5lck9wZW4sIHNlYXJjaGFibGVdKTtcbiAgICBjb25zdCBub3RpZnlCbHVySWZPdXRzaWRlID0gdXNlRXZlbnRDYWxsYmFjaygocmVsYXRlZFRhcmdldCwgZXZlbnQpID0+IHtcbiAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgY29uc3QgbmV4dFRhcmdldCA9IHJlbGF0ZWRUYXJnZXQ7XG4gICAgICAgIGNvbnN0IHdpdGhpblRyaWdnZXIgPSAhIShuZXh0VGFyZ2V0ICYmICgoX2EgPSB0cmlnZ2VyUmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jb250YWlucyhuZXh0VGFyZ2V0KSkpO1xuICAgICAgICBjb25zdCB3aXRoaW5GbG9hdGluZyA9ICEhKG5leHRUYXJnZXQgJiYgKChfYiA9IGZsb2F0aW5nUmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5jb250YWlucyhuZXh0VGFyZ2V0KSkpO1xuICAgICAgICBpZiAoIXdpdGhpblRyaWdnZXIgJiYgIXdpdGhpbkZsb2F0aW5nKSB7XG4gICAgICAgICAgICBvbkJsdXIgPT09IG51bGwgfHwgb25CbHVyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkJsdXIoZXZlbnQpO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgY29uc3QgaGFuZGxlVHJpZ2dlckJsdXIgPSB1c2VFdmVudENhbGxiYWNrKChldmVudCkgPT4ge1xuICAgICAgICBub3RpZnlCbHVySWZPdXRzaWRlKGV2ZW50LnJlbGF0ZWRUYXJnZXQsIGV2ZW50KTtcbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVPcHRpb25CbHVyID0gdXNlRXZlbnRDYWxsYmFjaygoZXZlbnQpID0+IHtcbiAgICAgICAgbm90aWZ5Qmx1cklmT3V0c2lkZShldmVudC5yZWxhdGVkVGFyZ2V0LCBldmVudCk7XG4gICAgfSk7XG4gICAgY29uc3QgY29tbWl0Q2hhbmdlID0gdXNlRXZlbnRDYWxsYmFjaygobmV4dFZhbHVlLCBuZXh0T3B0aW9uKSA9PiB7XG4gICAgICAgIHNldElubmVyVmFsdWUobmV4dFZhbHVlKTtcbiAgICAgICAgb25DaGFuZ2UgPT09IG51bGwgfHwgb25DaGFuZ2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQ2hhbmdlKG5leHRWYWx1ZSwgbmV4dE9wdGlvbik7XG4gICAgfSk7XG4gICAgY29uc3QgaGFuZGxlU2VsZWN0T3B0aW9uID0gdXNlRXZlbnRDYWxsYmFjaygob3B0aW9uKSA9PiB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgaWYgKG9wdGlvbi5kaXNhYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChtdWx0aXBsZSkge1xuICAgICAgICAgICAgY29uc3QgbmV4dFZhbHVlID0gdG9nZ2xlTXVsdGlwbGVWYWx1ZShpbm5lclZhbHVlLCBvcHRpb24udmFsdWUpO1xuICAgICAgICAgICAgY29uc3QgbmV4dE9wdGlvbnMgPSBnZXRPcHRpb25zQnlWYWx1ZXMoYWxsRmxhdE9wdGlvbnMsIG5leHRWYWx1ZSk7XG4gICAgICAgICAgICBjb21taXRDaGFuZ2UobmV4dFZhbHVlLCBuZXh0T3B0aW9ucyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29tbWl0Q2hhbmdlKG9wdGlvbi52YWx1ZSwgb3B0aW9uKTtcbiAgICAgICAgaGFuZGxlT3BlbkNoYW5nZShmYWxzZSk7XG4gICAgICAgIG9uQmx1ciA9PT0gbnVsbCB8fCBvbkJsdXIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQmx1cigpO1xuICAgICAgICAoX2EgPSB0cmlnZ2VyUmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5mb2N1cyh7IHByZXZlbnRTY3JvbGw6IHRydWUgfSk7XG4gICAgfSk7XG4gICAgY29uc3QgaGFuZGxlUmVtb3ZlU2VsZWN0ZWRWYWx1ZSA9IHVzZUV2ZW50Q2FsbGJhY2soKG9wdGlvblZhbHVlKSA9PiB7XG4gICAgICAgIGlmICghbXVsdGlwbGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWdldE11bHRpcGxlVmFsdWUoaW5uZXJWYWx1ZSkuaW5jbHVkZXMob3B0aW9uVmFsdWUpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbmV4dFZhbHVlID0gcmVtb3ZlTXVsdGlwbGVWYWx1ZShpbm5lclZhbHVlLCBvcHRpb25WYWx1ZSk7XG4gICAgICAgIGNvbnN0IG5leHRPcHRpb25zID0gZ2V0T3B0aW9uc0J5VmFsdWVzKGFsbEZsYXRPcHRpb25zLCBuZXh0VmFsdWUpO1xuICAgICAgICBjb21taXRDaGFuZ2UobmV4dFZhbHVlLCBuZXh0T3B0aW9ucyk7XG4gICAgfSk7XG4gICAgY29uc3QgaGFuZGxlVHJpZ2dlcktleURvd24gPSB1c2VFdmVudENhbGxiYWNrKChldmVudCkgPT4ge1xuICAgICAgICBpZiAoZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSBLRVlCT0FSRC5FTlRFUiB8fCBldmVudC5rZXkgPT09IEtFWUJPQVJELlNQQUNFKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgaGFuZGxlT3BlbkNoYW5nZSghaW5uZXJPcGVuKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSBLRVlCT0FSRC5BUlJPV19ET1dOIHx8IGV2ZW50LmtleSA9PT0gS0VZQk9BUkQuQVJST1dfVVApIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBpZiAoIWlubmVyT3Blbikge1xuICAgICAgICAgICAgICAgIGhhbmRsZU9wZW5DaGFuZ2UodHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVJdGVtTW91c2VFbnRlciA9IHVzZUV2ZW50Q2FsbGJhY2soKGluZGV4KSA9PiB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgaWYgKCEoKF9hID0gdmlzaWJsZUZsYXRPcHRpb25zW2luZGV4XSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmRpc2FibGVkKSkge1xuICAgICAgICAgICAgc2V0QWN0aXZlSW5kZXgoaW5kZXgpO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgY29uc3QgaGFuZGxlVGFnUmVtb3ZlTW91c2VEb3duID0gdXNlRXZlbnRDYWxsYmFjaygoZXZlbnQpID0+IHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfSk7XG4gICAgY29uc3QgaGFuZGxlVGFnUmVtb3ZlQ2xpY2sgPSB1c2VFdmVudENhbGxiYWNrKChldmVudCkgPT4ge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVTZWFyY2hCbHVyID0gdXNlRXZlbnRDYWxsYmFjaygoZXZlbnQpID0+IHtcbiAgICAgICAgbm90aWZ5Qmx1cklmT3V0c2lkZShldmVudC5yZWxhdGVkVGFyZ2V0LCBldmVudCk7XG4gICAgfSk7XG4gICAgY29uc3QgaGFuZGxlU2VhcmNoQ2hhbmdlID0gdXNlRXZlbnRDYWxsYmFjaygobmV4dFZhbHVlLCBfZXZlbnQpID0+IHtcbiAgICAgICAgc2V0SW5uZXJTZWFyY2hWYWx1ZShuZXh0VmFsdWUpO1xuICAgICAgICBvblNlYXJjaENoYW5nZSA9PT0gbnVsbCB8fCBvblNlYXJjaENoYW5nZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25TZWFyY2hDaGFuZ2UobmV4dFZhbHVlKTtcbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVTZWFyY2hLZXlEb3duID0gdXNlRXZlbnRDYWxsYmFjaygoZXZlbnQpID0+IHtcbiAgICAgICAgdmFyIF9hLCBfYiwgX2M7XG4gICAgICAgIGlmIChldmVudC5rZXkgPT09IEtFWUJPQVJELkFSUk9XX0RPV04gJiYgZmlyc3RFbmFibGVkSW5kZXggPj0gMCkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIHNldEFjdGl2ZUluZGV4KGZpcnN0RW5hYmxlZEluZGV4KTtcbiAgICAgICAgICAgIChfYSA9IGxpc3RSZWYuY3VycmVudFtmaXJzdEVuYWJsZWRJbmRleF0pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5mb2N1cyh7IHByZXZlbnRTY3JvbGw6IHRydWUgfSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gS0VZQk9BUkQuQVJST1dfVVAgJiYgbGFzdEVuYWJsZWRJbmRleCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIHNldEFjdGl2ZUluZGV4KGxhc3RFbmFibGVkSW5kZXgpO1xuICAgICAgICAgICAgKF9iID0gbGlzdFJlZi5jdXJyZW50W2xhc3RFbmFibGVkSW5kZXhdKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuZm9jdXMoeyBwcmV2ZW50U2Nyb2xsOiB0cnVlIH0pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChldmVudC5rZXkgPT09IEtFWUJPQVJELkVTQ0FQRSkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGhhbmRsZU9wZW5DaGFuZ2UoZmFsc2UpO1xuICAgICAgICAgICAgKF9jID0gdHJpZ2dlclJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2MuZm9jdXMoeyBwcmV2ZW50U2Nyb2xsOiB0cnVlIH0pO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgY29uc3QgcmVuZGVyVmFsdWVNZXRhID0ge1xuICAgICAgICBkaXNhYmxlZCxcbiAgICAgICAgbXVsdGlwbGUsXG4gICAgICAgIG1heFZpc2libGVWYWx1ZXMsXG4gICAgICAgIG9wZW46IGlubmVyT3BlbixcbiAgICAgICAgcGxhY2Vob2xkZXI6ICFoYXNTZWxlY3Rpb24sXG4gICAgICAgIHNlbGVjdGVkT3B0aW9ucyxcbiAgICB9O1xuICAgIGNvbnN0IHZhbHVlTGFiZWxDbGFzcyA9IGhhc1NlbGVjdGlvbiA/ICd2YWx1ZScgOiAncGxhY2Vob2xkZXInO1xuICAgIGNvbnN0IGlzTXVsdGlwbGVWYWx1ZUZpbGxlZCA9IChtdWx0aXBsZSAmJlxuICAgICAgICBoYXNTZWxlY3Rpb24gJiZcbiAgICAgICAgbWF4VmlzaWJsZVZhbHVlcyA9PT0gdW5kZWZpbmVkKTtcbiAgICBjb25zdCB0cmlnZ2VyQ2xhc3NOYW1lID0gY2xhc3NlcygndHJpZ2dlcicsIGpvaW5DbHMoY2xhc3NlcyhgdHJpZ2dlci0ke25vcm1hbGl6ZWRTaXplfWApLCBjbGFzc2VzKGB0cmlnZ2VyLSR7dmFyaWFudH1gKSwgaW5uZXJPcGVuICYmIGNsYXNzZXMoJ3RyaWdnZXItb3BlbicpLCBpc011bHRpcGxlVmFsdWVGaWxsZWQgJiYgY2xhc3NlcygndHJpZ2dlci1tdWx0aXBsZS1maWxsZWQnKSwgaGFzU2VsZWN0aW9uID8gY2xhc3NlcygndHJpZ2dlci1maWxsZWQnKSA6IGNsYXNzZXMoJ3RyaWdnZXItcGxhY2Vob2xkZXInKSwgc3RhdHVzICE9PSAnZGVmYXVsdCcgJiYgY2xhc3NlcyhgdHJpZ2dlci0ke3N0YXR1c31gKSwgZGlzYWJsZWQgJiYgY2xhc3NlcygndHJpZ2dlci1kaXNhYmxlZCcpKSk7XG4gICAgY29uc3QgaWNvblNpemUgPSBub3JtYWxpemVkU2l6ZSA9PT0gJ3NtYWxsJyA/IDE2IDogMjA7XG4gICAgY29uc3QgZmxvYXRpbmdBcmlhTGFiZWxsZWRCeSA9IGFyaWFMYWJlbGxlZEJ5ICE9PSBudWxsICYmIGFyaWFMYWJlbGxlZEJ5ICE9PSB2b2lkIDAgPyBhcmlhTGFiZWxsZWRCeSA6IChsYWJlbCA/IGxhYmVsSWQgOiB1bmRlZmluZWQpO1xuICAgIGNvbnN0IGRlc2NyaWJlZEJ5SWRzID0gW1xuICAgICAgICBkZXNjcmlwdGlvbiA/IGRlc2NyaXB0aW9uSWQgOiBudWxsLFxuICAgICAgICBmZWVkYmFjayA/IGZlZWRiYWNrSWQgOiBudWxsLFxuICAgIF0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oJyAnKSB8fCB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIChfanN4cyhTZWxlY3RGaWVsZFNoZWxsLCB7IGNsYXNzZXM6IGNsYXNzZXMsIGNsYXNzTmFtZTogY2xhc3NOYW1lLCBzaXplOiBub3JtYWxpemVkU2l6ZSwgdmFyaWFudDogdmFyaWFudCwgc3RhdHVzOiBzdGF0dXMsIGRpc2FibGVkOiBkaXNhYmxlZCwgbGFiZWw6IGxhYmVsLCBpbmZvOiBpbmZvLCBkZXNjcmlwdGlvbjogZGVzY3JpcHRpb24sIGZlZWRiYWNrOiBmZWVkYmFjaywgcmVxdWlyZWQ6IHJlcXVpcmVkLCBsYWJlbElkOiBsYWJlbElkLCBkZXNjcmlwdGlvbklkOiBkZXNjcmlwdGlvbklkLCBmZWVkYmFja0lkOiBmZWVkYmFja0lkLCBjaGlsZHJlbjogW19qc3hzKFwiYnV0dG9uXCIsIE9iamVjdC5hc3NpZ24oe30sIGdldFJlZmVyZW5jZVByb3BzKHtcbiAgICAgICAgICAgICAgICByZWY6IHNldFJlZmVyZW5jZSxcbiAgICAgICAgICAgICAgICBpZDogdHJpZ2dlcklkLFxuICAgICAgICAgICAgICAgIHR5cGU6ICdidXR0b24nLFxuICAgICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQsXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiB0cmlnZ2VyQ2xhc3NOYW1lLFxuICAgICAgICAgICAgICAgIG9uS2V5RG93bjogaGFuZGxlVHJpZ2dlcktleURvd24sXG4gICAgICAgICAgICAgICAgb25CbHVyOiBoYW5kbGVUcmlnZ2VyQmx1cixcbiAgICAgICAgICAgICAgICAnYXJpYS1sYWJlbCc6IGFyaWFMYWJlbCxcbiAgICAgICAgICAgICAgICAnYXJpYS1sYWJlbGxlZGJ5JzogZmxvYXRpbmdBcmlhTGFiZWxsZWRCeSxcbiAgICAgICAgICAgICAgICAnYXJpYS1kZXNjcmliZWRieSc6IGRlc2NyaWJlZEJ5SWRzLFxuICAgICAgICAgICAgfSksIHsgY2hpbGRyZW46IFtfanN4cyhcInNwYW5cIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ2NvbnRlbnQnKSwgY2hpbGRyZW46IFtwcmVmaXggJiYgX2pzeChcInNwYW5cIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ3ByZWZpeCcpLCBjaGlsZHJlbjogcHJlZml4IH0pLCBfanN4KFwic3BhblwiLCB7IGNsYXNzTmFtZTogY2xhc3Nlcyh2YWx1ZUxhYmVsQ2xhc3MsIGpvaW5DbHMoY2xhc3NlcyhgJHt2YWx1ZUxhYmVsQ2xhc3N9LSR7bm9ybWFsaXplZFNpemV9YCksIGlzTXVsdGlwbGVWYWx1ZUZpbGxlZCAmJiBjbGFzc2VzKGAke3ZhbHVlTGFiZWxDbGFzc30tbXVsdGlwbGVgKSwgZGlzYWJsZWQgJiYgY2xhc3NlcyhgJHt2YWx1ZUxhYmVsQ2xhc3N9LWRpc2FibGVkYCkpKSwgY2hpbGRyZW46IF9qc3goU2VsZWN0VmFsdWVDb250ZW50LCB7IGNsYXNzZXM6IGNsYXNzZXMsIGhhc1NlbGVjdGlvbjogaGFzU2VsZWN0aW9uLCBtdWx0aXBsZTogbXVsdGlwbGUsIHBsYWNlaG9sZGVyOiBwbGFjZWhvbGRlciwgcmVuZGVyVmFsdWU6IHJlbmRlclZhbHVlLCByZW5kZXJWYWx1ZU1ldGE6IHJlbmRlclZhbHVlTWV0YSwgc2VsZWN0ZWRPcHRpb25zOiBzZWxlY3RlZE9wdGlvbnMsIG1heFZpc2libGVWYWx1ZXM6IG1heFZpc2libGVWYWx1ZXMsIG9uUmVtb3ZlOiBoYW5kbGVSZW1vdmVTZWxlY3RlZFZhbHVlLCBvblJlbW92ZUNsaWNrOiBoYW5kbGVUYWdSZW1vdmVDbGljaywgb25SZW1vdmVNb3VzZURvd246IGhhbmRsZVRhZ1JlbW92ZU1vdXNlRG93biB9KSB9KV0gfSksIF9qc3goXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdpY29uJyksIGNoaWxkcmVuOiBfanN4KEljb25zLCB7IG5hbWU6IGlubmVyT3BlbiA/ICdjaGV2cm9uVXAnIDogJ2NoZXZyb25Eb3duJywgc2l6ZTogaWNvblNpemUsIGNvbG9yOiBcImN1cnJlbnRDb2xvclwiIH0pIH0pXSB9KSksIGlubmVyT3BlbiAmJiAhZGlzYWJsZWQgJiYgKF9qc3goRmxvYXRpbmdQb3J0YWwsIHsgY2hpbGRyZW46IF9qc3goRmxvYXRpbmdGb2N1c01hbmFnZXIsIHsgY29udGV4dDogY29udGV4dCwgbW9kYWw6IGZhbHNlLCBpbml0aWFsRm9jdXM6IC0xLCByZXR1cm5Gb2N1czogZmFsc2UsIGNoaWxkcmVuOiBfanN4cyhcImRpdlwiLCBPYmplY3QuYXNzaWduKHt9LCBnZXRGbG9hdGluZ1Byb3BzKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZjogc2V0RmxvYXRpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6IGNsYXNzZXMoJ3BhbmVsJyksXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZTogZmxvYXRpbmdTdHlsZXMsXG4gICAgICAgICAgICAgICAgICAgIH0pLCB7IGNoaWxkcmVuOiBbc2VhcmNoYWJsZSAmJiAoX2pzeChTZWxlY3RTZWFyY2hDb250cm9sLCB7IHJlZjogc2VhcmNoSW5wdXRSZWYsIGNsYXNzZXM6IGNsYXNzZXMsIHBsYWNlaG9sZGVyOiBzZWFyY2hQbGFjZWhvbGRlciwgdmFsdWU6IGlubmVyU2VhcmNoVmFsdWUsIG9uQmx1cjogaGFuZGxlU2VhcmNoQmx1ciwgb25DaGFuZ2U6IGhhbmRsZVNlYXJjaENoYW5nZSwgb25LZXlEb3duOiBoYW5kbGVTZWFyY2hLZXlEb3duIH0pKSwgX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygncGFuZWwtYm9keScpLCBjaGlsZHJlbjogdmlzaWJsZUZsYXRPcHRpb25zLmxlbmd0aCA9PT0gMCA/IChfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdlbXB0eScpLCBjaGlsZHJlbjogX2pzeChUeXBvZ3JhcGh5Qm9keSwgeyBzaXplOiBTRUxFQ1RfVFlQT0dSQVBIWS5lbXB0eS5zaXplLCBjb2xvcjogU0VMRUNUX1RZUE9HUkFQSFkuZW1wdHkuY29sb3IsIGNoaWxkcmVuOiBlbXB0eUNvbnRlbnQgfSkgfSkpIDogKCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZmxhdEluZGV4ID0gMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB2aXNpYmxlT3B0aW9uR3JvdXBzLm1hcCgoZ3JvdXApID0+IChfanN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygnZ3JvdXAnKSwgY2hpbGRyZW46IFtncm91cC5sYWJlbCAmJiAoX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygnZ3JvdXAtbGFiZWwnKSwgY2hpbGRyZW46IF9qc3goVHlwb2dyYXBoeUxhYmVsLCB7IHNpemU6IFNFTEVDVF9UWVBPR1JBUEhZLmdyb3VwTGFiZWwuc2l6ZSwgc3Ryb25nOiB0cnVlLCBjaGlsZHJlbjogZ3JvdXAubGFiZWwgfSkgfSkpLCBncm91cC5vcHRpb25zLm1hcCgob3B0aW9uKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvcHRpb25GbGF0SW5kZXggPSBmbGF0SW5kZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGF0SW5kZXggKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkID0gaXNPcHRpb25TZWxlY3RlZChpbm5lclZhbHVlLCBtdWx0aXBsZSwgb3B0aW9uLnZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGFjdGl2ZSA9IGFjdGl2ZUluZGV4ID09PSBvcHRpb25GbGF0SW5kZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvcHRpb25NZXRhID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogISFvcHRpb24uZGlzYWJsZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg6IG9wdGlvbkZsYXRJbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVuOiBpbm5lck9wZW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdENvbnRlbnRSZWYuY3VycmVudFtvcHRpb25GbGF0SW5kZXhdID0gZXh0cmFjdE9wdGlvblRleHQob3B0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoX2pzeChcImJ1dHRvblwiLCBPYmplY3QuYXNzaWduKHt9LCBnZXRJdGVtUHJvcHMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZihub2RlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RSZWYuY3VycmVudFtvcHRpb25GbGF0SW5kZXhdID0gbm9kZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdidXR0b24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU6ICdvcHRpb24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogY2xhc3Nlcygnb3B0aW9uJywgam9pbkNscyhhY3RpdmUgJiYgY2xhc3Nlcygnb3B0aW9uLWFjdGl2ZScpLCBzZWxlY3RlZCAmJiBjbGFzc2VzKCdvcHRpb24tc2VsZWN0ZWQnKSwgb3B0aW9uLmRpc2FibGVkICYmIGNsYXNzZXMoJ29wdGlvbi1kaXNhYmxlZCcpKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IG9wdGlvbi5kaXNhYmxlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXJpYS1zZWxlY3RlZCc6IHNlbGVjdGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s6IChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVTZWxlY3RPcHRpb24ob3B0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uTW91c2VFbnRlcjogKCkgPT4gaGFuZGxlSXRlbU1vdXNlRW50ZXIob3B0aW9uRmxhdEluZGV4KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6IGhhbmRsZU9wdGlvbkJsdXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgeyBjaGlsZHJlbjogcmVuZGVyT3B0aW9uID8gKHJlbmRlck9wdGlvbihvcHRpb24sIG9wdGlvbk1ldGEpKSA6IChfanN4KFNlbGVjdE9wdGlvbkNvbnRlbnQsIHsgY2xhc3NlczogY2xhc3Nlcywgb3B0aW9uOiBvcHRpb24sIHNlbGVjdGVkOiBzZWxlY3RlZCB9KSkgfSksIGAke2dyb3VwLmtleX0tJHtvcHRpb24udmFsdWV9YCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KV0gfSwgZ3JvdXAua2V5KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSgpKSB9KSwgcGFuZWxGb290ZXIgIT0gbnVsbCAmJiAoX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygncGFuZWwtZm9vdGVyJyksIGNoaWxkcmVuOiBwYW5lbEZvb3RlciB9KSldIH0pKSB9KSB9KSldIH0pKTtcbn07XG5TZWxlY3QuZGlzcGxheU5hbWUgPSAnU2VsZWN0JztcbmV4cG9ydCBkZWZhdWx0IG1lbW8oU2VsZWN0KTsiLG51bGxdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
|
|
563
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvU2VsZWN0L1NlbGVjdC5qcyIsImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvU2VsZWN0L1NlbGVjdC50c3giXSwibmFtZXMiOlsianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIkZsb2F0aW5nRm9jdXNNYW5hZ2VyIiwiRmxvYXRpbmdQb3J0YWwiLCJ1c2VJbnRlcmFjdGlvbnMiLCJ1c2VMaXN0TmF2aWdhdGlvbiIsInVzZVR5cGVhaGVhZCIsIm1lbW8iLCJ1c2VFZmZlY3QiLCJ1c2VJZCIsInVzZU1lbW8iLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsInVzZUNvbnRyb2xsZWRTdGF0ZSIsInVzZUV2ZW50Q2FsbGJhY2siLCJJY29ucyIsIlNwaW5uZXIiLCJUeXBvZ3JhcGh5Qm9keSIsIlR5cG9ncmFwaHlMYWJlbCIsImpvaW5DbHMiLCJkZWZhdWx0Iiwicm9vdENsYXNzbmFtZXMiLCJTZWxlY3RGaWVsZFNoZWxsIiwiU2VsZWN0T3B0aW9uQ29udGVudCIsIlNlbGVjdFNlYXJjaENvbnRyb2wiLCJTZWxlY3RWYWx1ZUNvbnRlbnQiLCJ1c2VTZWxlY3RTaGVsbCIsIktFWUJPQVJEIiwiU0VMRUNUX1RZUE9HUkFQSFkiLCJleHRyYWN0T3B0aW9uVGV4dCIsImZpbHRlck9wdGlvbkdyb3VwcyIsImZsYXR0ZW5PcHRpb25Hcm91cHMiLCJnZXRNdWx0aXBsZVZhbHVlIiwiZ2V0T3B0aW9uc0J5VmFsdWVzIiwiZ2V0U2VsZWN0ZWRPcHRpb25zIiwiaXNPcHRpb25TZWxlY3RlZCIsIm5vcm1hbGl6ZVNpemUiLCJub3JtYWxpemVPcHRpb25Hcm91cHMiLCJyZW1vdmVNdWx0aXBsZVZhbHVlIiwidG9nZ2xlTXVsdGlwbGVWYWx1ZSIsIkRFRkFVTFRfTUFYX0hFSUdIVCIsIlNlbGVjdCIsInByb3BzIiwiX3Byb3BzJGNsYXNzTmFtZSIsImNsYXNzTmFtZSIsIl9wcm9wcyRwcmVmaXhDbHMiLCJwcmVmaXhDbHMiLCJzdHlsZSIsImlkIiwibmFtZSIsImFyaWFMYWJlbCIsImFyaWFMYWJlbGxlZEJ5IiwiX3Byb3BzJHBsYWNlaG9sZGVyIiwicGxhY2Vob2xkZXIiLCJfcHJvcHMkb3B0aW9ucyIsIm9wdGlvbnMiLCJ2YWx1ZSIsImRlZmF1bHRWYWx1ZSIsIl9wcm9wcyRzaXplIiwic2l6ZSIsIl9wcm9wcyRzdGF0dXMiLCJzdGF0dXMiLCJfcHJvcHMkdmFyaWFudCIsInZhcmlhbnQiLCJfcHJvcHMkZGlzYWJsZWQiLCJkaXNhYmxlZCIsImRpc2FibGVkUHJvcCIsIl9wcm9wcyRyZWFkT25seSIsInJlYWRPbmx5IiwiX3Byb3BzJGxvYWRpbmciLCJsb2FkaW5nIiwiX3Byb3BzJG11bHRpcGxlIiwibXVsdGlwbGUiLCJtYXhWaXNpYmxlVmFsdWVzIiwiX3Byb3BzJHNlYXJjaGFibGUiLCJzZWFyY2hhYmxlIiwiX3Byb3BzJHNlYXJjaFBsYWNlaG9sIiwic2VhcmNoUGxhY2Vob2xkZXIiLCJzZWFyY2hWYWx1ZSIsIl9wcm9wcyRkZWZhdWx0U2VhcmNoViIsImRlZmF1bHRTZWFyY2hWYWx1ZSIsIl9wcm9wcyRmaWx0ZXJJbnB1dEF1dCIsImZpbHRlcklucHV0QXV0b0ZvY3VzIiwibGFiZWwiLCJpbmZvIiwiZGVzY3JpcHRpb24iLCJmZWVkYmFjayIsIl9wcm9wcyRyZXF1aXJlZCIsInJlcXVpcmVkIiwicHJlZml4IiwiX3Byb3BzJGVtcHR5Q29udGVudCIsImVtcHR5Q29udGVudCIsInBhbmVsRm9vdGVyIiwib3BlbiIsIl9wcm9wcyRkZWZhdWx0T3BlbiIsImRlZmF1bHRPcGVuIiwiX3Byb3BzJHBvcnRhbCIsInBvcnRhbCIsIl9wcm9wcyRhbGxvd0Rlc2VsZWN0IiwiYWxsb3dEZXNlbGVjdCIsInBhbmVsQ2xhc3NOYW1lIiwib3B0aW9uQ2xhc3NOYW1lIiwiX3Byb3BzJGxpc3RNYXhIZWlnaHQiLCJsaXN0TWF4SGVpZ2h0Iiwib2Zmc2V0IiwiYW5pbWF0aW9uIiwib25DaGFuZ2UiLCJvbk9wZW5DaGFuZ2UiLCJvblNlYXJjaENoYW5nZSIsIm9uQmx1ciIsImZpbHRlck9wdGlvbiIsInJlbmRlck9wdGlvbiIsInJlbmRlck9wdGlvbkNvbnRlbnQiLCJyZW5kZXJWYWx1ZSIsInJlZiIsImludGVyYWN0aXZlIiwiY2xhc3NlcyIsImF1dG9JZCIsInRyaWdnZXJJZCIsImxhYmVsSWQiLCJkZXNjcmlwdGlvbklkIiwiZmVlZGJhY2tJZCIsIm9wdGlvbklkUHJlZml4IiwiX3VzZUNvbnRyb2xsZWRTdGF0ZSIsInVuZGVmaW5lZCIsIl91c2VDb250cm9sbGVkU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJpbm5lclZhbHVlIiwic2V0SW5uZXJWYWx1ZSIsIl91c2VDb250cm9sbGVkU3RhdGUzIiwiX3VzZUNvbnRyb2xsZWRTdGF0ZTQiLCJpbm5lclNlYXJjaFZhbHVlIiwic2V0SW5uZXJTZWFyY2hWYWx1ZSIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJhY3RpdmVJbmRleCIsInNldEFjdGl2ZUluZGV4Iiwibm9ybWFsaXplZFNpemUiLCJhbGxPcHRpb25Hcm91cHMiLCJhbGxGbGF0T3B0aW9ucyIsInZpc2libGVPcHRpb25Hcm91cHMiLCJ2aXNpYmxlRmxhdE9wdGlvbnMiLCJzZWxlY3RlZE9wdGlvbnMiLCJzZWxlY3RlZEluZGV4IiwibGVuZ3RoIiwibWF0Y2hlZEluZGV4IiwiZmluZEluZGV4Iiwib3B0aW9uIiwiaGFzU2VsZWN0aW9uIiwibGlzdFJlZiIsImxpc3RDb250ZW50UmVmIiwiZmxvYXRpbmdSZWYiLCJ0cmlnZ2VyUmVmIiwic2VhcmNoSW5wdXRSZWYiLCJoYW5kbGVUcmlnZ2VyUmVmIiwibm9kZSIsImN1cnJlbnQiLCJfdXNlU2VsZWN0U2hlbGwiLCJpbm5lck9wZW4iLCJpc09wZW4iLCJoYW5kbGVPcGVuQ2hhbmdlIiwic2V0T3BlbiIsInJlZnMiLCJjb250ZXh0IiwiZmxvYXRpbmdTdHlsZXMiLCJ0cmFuc2l0aW9uU3R5bGVzIiwiaXNNb3VudGVkIiwiYmFzZUludGVyYWN0aW9ucyIsInNldFJlZmVyZW5jZSIsInNldEZsb2F0aW5nIiwibGlzdE5hdmlnYXRpb24iLCJvbk5hdmlnYXRlIiwiZW5hYmxlZCIsImxvb3AiLCJ2aXJ0dWFsIiwidHlwZWFoZWFkIiwib25NYXRjaCIsIl91c2VJbnRlcmFjdGlvbnMiLCJjb25jYXQiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJnZXRSZWZlcmVuY2VQcm9wcyIsImdldEZsb2F0aW5nUHJvcHMiLCJnZXRJdGVtUHJvcHMiLCJmaXJzdEVuYWJsZWRJbmRleCIsInByZXYiLCJfYSIsImZvY3VzIiwicHJldmVudFNjcm9sbCIsInNsaWNlIiwic2V0U2VhcmNoSW5wdXRSZWYiLCJub3RpZnlCbHVySWZPdXRzaWRlIiwicmVsYXRlZFRhcmdldCIsImV2ZW50IiwiX2IiLCJuZXh0VGFyZ2V0Iiwid2l0aGluVHJpZ2dlciIsImNvbnRhaW5zIiwid2l0aGluRmxvYXRpbmciLCJoYW5kbGVUcmlnZ2VyQmx1ciIsImhhbmRsZU9wdGlvbkJsdXIiLCJjb21taXRDaGFuZ2UiLCJuZXh0VmFsdWUiLCJuZXh0T3B0aW9uIiwiaGFuZGxlU2VsZWN0T3B0aW9uIiwibmV4dE9wdGlvbnMiLCJoYW5kbGVSZW1vdmVTZWxlY3RlZFZhbHVlIiwib3B0aW9uVmFsdWUiLCJpbmNsdWRlcyIsImhhbmRsZVRyaWdnZXJLZXlEb3duIiwia2V5IiwiRU5URVIiLCJTUEFDRSIsInByZXZlbnREZWZhdWx0IiwiQVJST1dfRE9XTiIsIkFSUk9XX1VQIiwiaGFuZGxlSXRlbU1vdXNlRW50ZXIiLCJpbmRleCIsImhhbmRsZVRhZ1JlbW92ZU1vdXNlRG93biIsInN0b3BQcm9wYWdhdGlvbiIsImhhbmRsZVRhZ1JlbW92ZUNsaWNrIiwiaGFuZGxlU2VhcmNoQmx1ciIsImhhbmRsZVNlYXJjaENoYW5nZSIsIl9ldmVudCIsImZpbmRFbmFibGVkSW5kZXgiLCJkaXJlY3Rpb24iLCJzdGFydCIsInN0ZXAiLCJjYW5kaWRhdGUiLCJoYW5kbGVTZWFyY2hLZXlEb3duIiwibmV4dCIsIkVTQ0FQRSIsInJlbmRlclZhbHVlTWV0YSIsInZhbHVlTGFiZWxDbGFzcyIsImlzTXVsdGlwbGVWYWx1ZUZpbGxlZCIsInRyaWdnZXJDbGFzc05hbWUiLCJpY29uU2l6ZSIsImFjdGl2ZU9wdGlvbklkIiwiZmxvYXRpbmdBcmlhTGFiZWxsZWRCeSIsImRlc2NyaWJlZEJ5SWRzIiwiZmlsdGVyIiwiQm9vbGVhbiIsImpvaW4iLCJjaGlsZHJlbiIsIk9iamVjdCIsImFzc2lnbiIsInR5cGUiLCJvbktleURvd24iLCJvblJlbW92ZSIsIm9uUmVtb3ZlQ2xpY2siLCJvblJlbW92ZU1vdXNlRG93biIsInN0cm9rZVdpZHRoIiwiY29sb3IiLCJwYW5lbE5vZGUiLCJtb2RhbCIsImluaXRpYWxGb2N1cyIsInJldHVybkZvY3VzIiwiYWN0aXZlRGVzY2VuZGFudCIsImVtcHR5IiwiZmxhdEluZGV4IiwibWFwIiwiZ3JvdXAiLCJncm91cExhYmVsIiwic3Ryb25nIiwib3B0aW9uRmxhdEluZGV4Iiwic2VsZWN0ZWQiLCJhY3RpdmUiLCJvcHRpb25NZXRhIiwicm9sZSIsIm9uQ2xpY2siLCJvbk1vdXNlRW50ZXIiLCJjb250ZW50IiwiZGlzcGxheU5hbWUiXSwibWFwcGluZ3MiOiI7O0FBQUEsU0FBU0EsR0FBRyxJQUFJQyxJQUFJLEVBQUVDLElBQUksSUFBSUMsS0FBSyxRQUFRLG1CQUFtQjtBQ0E5RCxTQUNFQyxvQkFBb0IsRUFDcEJDLGNBQWMsRUFDZEMsZUFBZSxFQUNmQyxpQkFBaUIsRUFDakJDLFlBQVksUUFDUCxvQkFBb0I7QUFDM0IsU0FBU0MsSUFBSSxFQUFFQyxTQUFTLEVBQUVDLEtBQUssRUFBRUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLFFBQVEsUUFBUSxPQUFPO0FBQ3pFLFNBQVNDLGtCQUFrQixFQUFFQyxnQkFBZ0IsUUFBUSxlQUFlO0FBQ3BFLFNBQVNDLEtBQUssUUFBUSxVQUFVO0FBQ2hDLFNBQVNDLE9BQU8sUUFBUSxZQUFZO0FBQ3BDLFNBQVNDLGNBQWMsRUFBRUMsZUFBZSxRQUFRLGVBQWU7QUFDL0QsU0FBU0MsT0FBTyxFQUFFQyxPQUFPLElBQUlDLGNBQWMsUUFB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QUFDIiwiZmlsZSI6ImNvbXBvbmVudHMvU2VsZWN0L1NlbGVjdC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGpzeCBhcyBfanN4LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBGbG9hdGluZ0ZvY3VzTWFuYWdlciwgRmxvYXRpbmdQb3J0YWwsIHVzZUludGVyYWN0aW9ucywgdXNlTGlzdE5hdmlnYXRpb24sIHVzZVR5cGVhaGVhZCwgfSBmcm9tICdAZmxvYXRpbmctdWkvcmVhY3QnO1xuaW1wb3J0IHsgbWVtbywgdXNlRWZmZWN0LCB1c2VJZCwgdXNlTWVtbywgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZUNvbnRyb2xsZWRTdGF0ZSwgdXNlRXZlbnRDYWxsYmFjayB9IGZyb20gJ0AxbW9uZXkvaG9va3MnO1xuaW1wb3J0IHsgSWNvbnMgfSBmcm9tICcuLi9JY29ucyc7XG5pbXBvcnQgeyBTcGlubmVyIH0gZnJvbSAnLi4vU3Bpbm5lcic7XG5pbXBvcnQgeyBUeXBvZ3JhcGh5Qm9keSwgVHlwb2dyYXBoeUxhYmVsIH0gZnJvbSAnLi4vVHlwb2dyYXBoeSc7XG5pbXBvcnQgeyBqb2luQ2xzLCBkZWZhdWx0IGFzIHJvb3RDbGFzc25hbWVzIH0gZnJvbSAnLi4vLi4vdXRpbHMvY2xhc3NuYW1lcyc7XG5pbXBvcnQgU2VsZWN0RmllbGRTaGVsbCBmcm9tICcuL1NlbGVjdEZpZWxkU2hlbGwnO1xuaW1wb3J0IFNlbGVjdE9wdGlvbkNvbnRlbnQgZnJvbSAnLi9TZWxlY3RPcHRpb25Db250ZW50JztcbmltcG9ydCBTZWxlY3RTZWFyY2hDb250cm9sIGZyb20gJy4vU2VsZWN0U2VhcmNoQ29udHJvbCc7XG5pbXBvcnQgU2VsZWN0VmFsdWVDb250ZW50IGZyb20gJy4vU2VsZWN0VmFsdWVDb250ZW50JztcbmltcG9ydCB7IHVzZVNlbGVjdFNoZWxsIH0gZnJvbSAnLi91c2VTZWxlY3RTaGVsbCc7XG5pbXBvcnQgeyBLRVlCT0FSRCwgU0VMRUNUX1RZUE9HUkFQSFkgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBleHRyYWN0T3B0aW9uVGV4dCwgZmlsdGVyT3B0aW9uR3JvdXBzLCBmbGF0dGVuT3B0aW9uR3JvdXBzLCBnZXRNdWx0aXBsZVZhbHVlLCBnZXRPcHRpb25zQnlWYWx1ZXMsIGdldFNlbGVjdGVkT3B0aW9ucywgaXNPcHRpb25TZWxlY3RlZCwgbm9ybWFsaXplU2l6ZSwgbm9ybWFsaXplT3B0aW9uR3JvdXBzLCByZW1vdmVNdWx0aXBsZVZhbHVlLCB0b2dnbGVNdWx0aXBsZVZhbHVlLCB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0ICcuL3N0eWxlJztcbmNvbnN0IERFRkFVTFRfTUFYX0hFSUdIVCA9IDMyMDtcbmV4cG9ydCBjb25zdCBTZWxlY3QgPSAocHJvcHMpID0+IHtcbiAgICBjb25zdCB7IGNsYXNzTmFtZSA9ICcnLCBwcmVmaXhDbHMgPSAnc2VsZWN0Jywgc3R5bGUsIGlkLCBuYW1lLCAnYXJpYS1sYWJlbCc6IGFyaWFMYWJlbCwgJ2FyaWEtbGFiZWxsZWRieSc6IGFyaWFMYWJlbGxlZEJ5LCBwbGFjZWhvbGRlciA9ICdWYWx1ZScsIG9wdGlvbnMgPSBbXSwgdmFsdWUsIGRlZmF1bHRWYWx1ZSwgc2l6ZSA9ICdsYXJnZScsIHN0YXR1cyA9ICdkZWZhdWx0JywgdmFyaWFudCA9ICdmaWxsJywgZGlzYWJsZWQ6IGRpc2FibGVkUHJvcCA9IGZhbHNlLCByZWFkT25seSA9IGZhbHNlLCBsb2FkaW5nID0gZmFsc2UsIG11bHRpcGxlID0gZmFsc2UsIG1heFZpc2libGVWYWx1ZXMsIHNlYXJjaGFibGUgPSBmYWxzZSwgc2VhcmNoUGxhY2Vob2xkZXIgPSAnU2VhcmNoJywgc2VhcmNoVmFsdWUsIGRlZmF1bHRTZWFyY2hWYWx1ZSA9ICcnLCBmaWx0ZXJJbnB1dEF1dG9Gb2N1cyA9IHRydWUsIGxhYmVsLCBpbmZvLCBkZXNjcmlwdGlvbiwgZmVlZGJhY2ssIHJlcXVpcmVkID0gZmFsc2UsIHByZWZpeCwgZW1wdHlDb250ZW50ID0gJ05vIG9wdGlvbnMnLCBwYW5lbEZvb3Rlciwgb3BlbiwgZGVmYXVsdE9wZW4gPSBmYWxzZSwgcG9ydGFsID0gdHJ1ZSwgYWxsb3dEZXNlbGVjdCA9IGZhbHNlLCBwYW5lbENsYXNzTmFtZSwgb3B0aW9uQ2xhc3NOYW1lLCBsaXN0TWF4SGVpZ2h0ID0gREVGQVVMVF9NQVhfSEVJR0hULCBvZmZzZXQsIGFuaW1hdGlvbiwgb25DaGFuZ2UsIG9uT3BlbkNoYW5nZSwgb25TZWFyY2hDaGFuZ2UsIG9uQmx1ciwgZmlsdGVyT3B0aW9uLCByZW5kZXJPcHRpb24sIHJlbmRlck9wdGlvbkNvbnRlbnQsIHJlbmRlclZhbHVlLCByZWYsIH0gPSBwcm9wcztcbiAgICBjb25zdCBkaXNhYmxlZCA9IGRpc2FibGVkUHJvcCB8fCBsb2FkaW5nO1xuICAgIGNvbnN0IGludGVyYWN0aXZlID0gIWRpc2FibGVkICYmICFyZWFkT25seTtcbiAgICBjb25zdCBjbGFzc2VzID0gcm9vdENsYXNzbmFtZXMocHJlZml4Q2xzKTtcbiAgICBjb25zdCBhdXRvSWQgPSB1c2VJZCgpO1xuICAgIGNvbnN0IHRyaWdnZXJJZCA9IGlkICE9PSBudWxsICYmIGlkICE9PSB2b2lkIDAgPyBpZCA6IGF1dG9JZDtcbiAgICBjb25zdCBsYWJlbElkID0gdXNlSWQoKTtcbiAgICBjb25zdCBkZXNjcmlwdGlvbklkID0gdXNlSWQoKTtcbiAgICBjb25zdCBmZWVkYmFja0lkID0gdXNlSWQoKTtcbiAgICBjb25zdCBvcHRpb25JZFByZWZpeCA9IHVzZUlkKCk7XG4gICAgY29uc3QgW2lubmVyVmFsdWUsIHNldElubmVyVmFsdWVdID0gdXNlQ29udHJvbGxlZFN0YXRlKGRlZmF1bHRWYWx1ZSAhPT0gbnVsbCAmJiBkZWZhdWx0VmFsdWUgIT09IHZvaWQgMCA/IGRlZmF1bHRWYWx1ZSA6IChtdWx0aXBsZSA/IFtdIDogdW5kZWZpbmVkKSwgdmFsdWUpO1xuICAgIGNvbnN0IFtpbm5lclNlYXJjaFZhbHVlLCBzZXRJbm5lclNlYXJjaFZhbHVlXSA9IHVzZUNvbnRyb2xsZWRTdGF0ZShkZWZhdWx0U2VhcmNoVmFsdWUsIHNlYXJjaFZhbHVlKTtcbiAgICBjb25zdCBbYWN0aXZlSW5kZXgsIHNldEFjdGl2ZUluZGV4XSA9IHVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IG5vcm1hbGl6ZWRTaXplID0gbm9ybWFsaXplU2l6ZShzaXplKTtcbiAgICBjb25zdCBhbGxPcHRpb25Hcm91cHMgPSB1c2VNZW1vKCgpID0+IG5vcm1hbGl6ZU9wdGlvbkdyb3VwcyhvcHRpb25zKSwgW29wdGlvbnNdKTtcbiAgICBjb25zdCBhbGxGbGF0T3B0aW9ucyA9IHVzZU1lbW8oKCkgPT4gZmxhdHRlbk9wdGlvbkdyb3VwcyhhbGxPcHRpb25Hcm91cHMpLCBbYWxsT3B0aW9uR3JvdXBzXSk7XG4gICAgY29uc3QgdmlzaWJsZU9wdGlvbkdyb3VwcyA9IHVzZU1lbW8oKCkgPT4gKHNlYXJjaGFibGVcbiAgICAgICAgPyBmaWx0ZXJPcHRpb25Hcm91cHMoYWxsT3B0aW9uR3JvdXBzLCBpbm5lclNlYXJjaFZhbHVlLCBmaWx0ZXJPcHRpb24pXG4gICAgICAgIDogYWxsT3B0aW9uR3JvdXBzKSwgW2FsbE9wdGlvbkdyb3VwcywgZmlsdGVyT3B0aW9uLCBpbm5lclNlYXJjaFZhbHVlLCBzZWFyY2hhYmxlXSk7XG4gICAgY29uc3QgdmlzaWJsZUZsYXRPcHRpb25zID0gdXNlTWVtbygoKSA9PiBmbGF0dGVuT3B0aW9uR3JvdXBzKHZpc2libGVPcHRpb25Hcm91cHMpLCBbdmlzaWJsZU9wdGlvbkdyb3Vwc10pO1xuICAgIGNvbnN0IHNlbGVjdGVkT3B0aW9ucyA9IHVzZU1lbW8oKCkgPT4gZ2V0U2VsZWN0ZWRPcHRpb25zKGFsbEZsYXRPcHRpb25zLCBpbm5lclZhbHVlLCBtdWx0aXBsZSksIFthbGxGbGF0T3B0aW9ucywgaW5uZXJWYWx1ZSwgbXVsdGlwbGVdKTtcbiAgICBjb25zdCBzZWxlY3RlZEluZGV4ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICAgIGlmIChzZWxlY3RlZE9wdGlvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBtYXRjaGVkSW5kZXggPSB2aXNpYmxlRmxhdE9wdGlvbnMuZmluZEluZGV4KChvcHRpb24pID0+IG9wdGlvbi52YWx1ZSA9PT0gc2VsZWN0ZWRPcHRpb25zWzBdLnZhbHVlKTtcbiAgICAgICAgcmV0dXJuIG1hdGNoZWRJbmRleCA+PSAwID8gbWF0Y2hlZEluZGV4IDogbnVsbDtcbiAgICB9LCBbc2VsZWN0ZWRPcHRpb25zLCB2aXNpYmxlRmxhdE9wdGlvbnNdKTtcbiAgICBjb25zdCBoYXNTZWxlY3Rpb24gPSBzZWxlY3RlZE9wdGlvbnMubGVuZ3RoID4gMDtcbiAgICBjb25zdCBsaXN0UmVmID0gdXNlUmVmKFtdKTtcbiAgICBjb25zdCBsaXN0Q29udGVudFJlZiA9IHVzZVJlZihbXSk7XG4gICAgY29uc3QgZmxvYXRpbmdSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgdHJpZ2dlclJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBzZWFyY2hJbnB1dFJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBoYW5kbGVUcmlnZ2VyUmVmID0gdXNlRXZlbnRDYWxsYmFjaygobm9kZSkgPT4ge1xuICAgICAgICB0cmlnZ2VyUmVmLmN1cnJlbnQgPSBub2RlO1xuICAgICAgICBpZiAocmVmKSB7XG4gICAgICAgICAgICByZWYuY3VycmVudCA9IG5vZGU7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCB7IGlzT3BlbjogaW5uZXJPcGVuLCBzZXRPcGVuOiBoYW5kbGVPcGVuQ2hhbmdlLCByZWZzLCBjb250ZXh0LCBmbG9hdGluZ1N0eWxlcywgdHJhbnNpdGlvblN0eWxlcywgaXNNb3VudGVkLCBiYXNlSW50ZXJhY3Rpb25zLCB9ID0gdXNlU2VsZWN0U2hlbGwoe1xuICAgICAgICBvcGVuLFxuICAgICAgICBkZWZhdWx0T3BlbixcbiAgICAgICAgb25PcGVuQ2hhbmdlLFxuICAgICAgICBkaXNhYmxlZCxcbiAgICAgICAgcmVhZE9ubHksXG4gICAgICAgIGxpc3RNYXhIZWlnaHQsXG4gICAgICAgIGFuaW1hdGlvbixcbiAgICAgICAgb2Zmc2V0LFxuICAgIH0pO1xuICAgIGNvbnN0IHNldFJlZmVyZW5jZSA9IHVzZUV2ZW50Q2FsbGJhY2soKG5vZGUpID0+IHtcbiAgICAgICAgcmVmcy5zZXRSZWZlcmVuY2Uobm9kZSk7XG4gICAgICAgIGhhbmRsZVRyaWdnZXJSZWYobm9kZSk7XG4gICAgfSk7XG4gICAgY29uc3Qgc2V0RmxvYXRpbmcgPSB1c2VFdmVudENhbGxiYWNrKChub2RlKSA9PiB7XG4gICAgICAgIHJlZnMuc2V0RmxvYXRpbmcobm9kZSk7XG4gICAgICAgIGZsb2F0aW5nUmVmLmN1cnJlbnQgPSBub2RlO1xuICAgIH0pO1xuICAgIGNvbnN0IGxpc3ROYXZpZ2F0aW9uID0gdXNlTGlzdE5hdmlnYXRpb24oY29udGV4dCwge1xuICAgICAgICBsaXN0UmVmLFxuICAgICAgICBhY3RpdmVJbmRleCxcbiAgICAgICAgc2VsZWN0ZWRJbmRleCxcbiAgICAgICAgb25OYXZpZ2F0ZTogc2V0QWN0aXZlSW5kZXgsXG4gICAgICAgIGVuYWJsZWQ6IGlubmVyT3BlbixcbiAgICAgICAgbG9vcDogdHJ1ZSxcbiAgICAgICAgdmlydHVhbDogc2VhcmNoYWJsZSxcbiAgICB9KTtcbiAgICBjb25zdCB0eXBlYWhlYWQgPSB1c2VUeXBlYWhlYWQoY29udGV4dCwge1xuICAgICAgICBsaXN0UmVmOiBsaXN0Q29udGVudFJlZixcbiAgICAgICAgYWN0aXZlSW5kZXgsXG4gICAgICAgIHNlbGVjdGVkSW5kZXgsXG4gICAgICAgIGVuYWJsZWQ6IGlubmVyT3BlbiAmJiAhc2VhcmNoYWJsZSxcbiAgICAgICAgb25NYXRjaDogc2V0QWN0aXZlSW5kZXgsXG4gICAgfSk7XG4gICAgY29uc3QgeyBnZXRSZWZlcmVuY2VQcm9wcywgZ2V0RmxvYXRpbmdQcm9wcywgZ2V0SXRlbVByb3BzIH0gPSB1c2VJbnRlcmFjdGlvbnMoW1xuICAgICAgICAuLi5iYXNlSW50ZXJhY3Rpb25zLFxuICAgICAgICBsaXN0TmF2aWdhdGlvbixcbiAgICAgICAgdHlwZWFoZWFkLFxuICAgIF0pO1xuICAgIGNvbnN0IGZpcnN0RW5hYmxlZEluZGV4ID0gdXNlTWVtbygoKSA9PiB2aXNpYmxlRmxhdE9wdGlvbnMuZmluZEluZGV4KChvcHRpb24pID0+ICFvcHRpb24uZGlzYWJsZWQpLCBbdmlzaWJsZUZsYXRPcHRpb25zXSk7XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKCFpbm5lck9wZW4pIHtcbiAgICAgICAgICAgIHNldEFjdGl2ZUluZGV4KHNlbGVjdGVkSW5kZXgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHNldEFjdGl2ZUluZGV4KChwcmV2KSA9PiB7XG4gICAgICAgICAgICBpZiAocHJldiAhPT0gbnVsbCAmJiB2aXNpYmxlRmxhdE9wdGlvbnNbcHJldl0gJiYgIXZpc2libGVGbGF0T3B0aW9uc1twcmV2XS5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBwcmV2O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHNlbGVjdGVkSW5kZXggIT09IG51bGwgJiZcbiAgICAgICAgICAgICAgICB2aXNpYmxlRmxhdE9wdGlvbnNbc2VsZWN0ZWRJbmRleF0gJiZcbiAgICAgICAgICAgICAgICAhdmlzaWJsZUZsYXRPcHRpb25zW3NlbGVjdGVkSW5kZXhdLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGVjdGVkSW5kZXg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmlyc3RFbmFibGVkSW5kZXggPj0gMCA/IGZpcnN0RW5hYmxlZEluZGV4IDogbnVsbDtcbiAgICAgICAgfSk7XG4gICAgfSwgW2ZpcnN0RW5hYmxlZEluZGV4LCBpbm5lck9wZW4sIHNlbGVjdGVkSW5kZXgsIHZpc2libGVGbGF0T3B0aW9uc10pO1xuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgaWYgKCFpbm5lck9wZW4gfHwgYWN0aXZlSW5kZXggPT09IG51bGwgfHwgc2VhcmNoYWJsZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIChfYSA9IGxpc3RSZWYuY3VycmVudFthY3RpdmVJbmRleF0pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5mb2N1cyh7IHByZXZlbnRTY3JvbGw6IHRydWUgfSk7XG4gICAgfSwgW2FjdGl2ZUluZGV4LCBpbm5lck9wZW4sIHNlYXJjaGFibGVdKTtcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBsaXN0UmVmLmN1cnJlbnQgPSBsaXN0UmVmLmN1cnJlbnQuc2xpY2UoMCwgdmlzaWJsZUZsYXRPcHRpb25zLmxlbmd0aCk7XG4gICAgICAgIGxpc3RDb250ZW50UmVmLmN1cnJlbnQgPSBsaXN0Q29udGVudFJlZi5jdXJyZW50LnNsaWNlKDAsIHZpc2libGVGbGF0T3B0aW9ucy5sZW5ndGgpO1xuICAgIH0sIFt2aXNpYmxlRmxhdE9wdGlvbnMubGVuZ3RoXSk7XG4gICAgY29uc3Qgc2V0U2VhcmNoSW5wdXRSZWYgPSB1c2VFdmVudENhbGxiYWNrKChub2RlKSA9PiB7XG4gICAgICAgIHNlYXJjaElucHV0UmVmLmN1cnJlbnQgPSBub2RlO1xuICAgICAgICBpZiAobm9kZSAmJiBpbm5lck9wZW4gJiYgZmlsdGVySW5wdXRBdXRvRm9jdXMpIHtcbiAgICAgICAgICAgIG5vZGUuZm9jdXMoeyBwcmV2ZW50U2Nyb2xsOiB0cnVlIH0pO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgY29uc3Qgbm90aWZ5Qmx1cklmT3V0c2lkZSA9IHVzZUV2ZW50Q2FsbGJhY2soKHJlbGF0ZWRUYXJnZXQsIGV2ZW50KSA9PiB7XG4gICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgIGNvbnN0IG5leHRUYXJnZXQgPSByZWxhdGVkVGFyZ2V0O1xuICAgICAgICBjb25zdCB3aXRoaW5UcmlnZ2VyID0gISEobmV4dFRhcmdldCAmJiAoKF9hID0gdHJpZ2dlclJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY29udGFpbnMobmV4dFRhcmdldCkpKTtcbiAgICAgICAgY29uc3Qgd2l0aGluRmxvYXRpbmcgPSAhIShuZXh0VGFyZ2V0ICYmICgoX2IgPSBmbG9hdGluZ1JlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuY29udGFpbnMobmV4dFRhcmdldCkpKTtcbiAgICAgICAgaWYgKCF3aXRoaW5UcmlnZ2VyICYmICF3aXRoaW5GbG9hdGluZykge1xuICAgICAgICAgICAgb25CbHVyID09PSBudWxsIHx8IG9uQmx1ciA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25CbHVyKGV2ZW50KTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZVRyaWdnZXJCbHVyID0gdXNlRXZlbnRDYWxsYmFjaygoZXZlbnQpID0+IHtcbiAgICAgICAgbm90aWZ5Qmx1cklmT3V0c2lkZShldmVudC5yZWxhdGVkVGFyZ2V0LCBldmVudCk7XG4gICAgfSk7XG4gICAgY29uc3QgaGFuZGxlT3B0aW9uQmx1ciA9IHVzZUV2ZW50Q2FsbGJhY2soKGV2ZW50KSA9PiB7XG4gICAgICAgIG5vdGlmeUJsdXJJZk91dHNpZGUoZXZlbnQucmVsYXRlZFRhcmdldCwgZXZlbnQpO1xuICAgIH0pO1xuICAgIGNvbnN0IGNvbW1pdENoYW5nZSA9IHVzZUV2ZW50Q2FsbGJhY2soKG5leHRWYWx1ZSwgbmV4dE9wdGlvbikgPT4ge1xuICAgICAgICBzZXRJbm5lclZhbHVlKG5leHRWYWx1ZSk7XG4gICAgICAgIG9uQ2hhbmdlID09PSBudWxsIHx8IG9uQ2hhbmdlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkNoYW5nZShuZXh0VmFsdWUsIG5leHRPcHRpb24sIG5hbWUpO1xuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZVNlbGVjdE9wdGlvbiA9IHVzZUV2ZW50Q2FsbGJhY2soKG9wdGlvbikgPT4ge1xuICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICBpZiAob3B0aW9uLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG11bHRpcGxlKSB7XG4gICAgICAgICAgICBjb25zdCBuZXh0VmFsdWUgPSB0b2dnbGVNdWx0aXBsZVZhbHVlKGlubmVyVmFsdWUsIG9wdGlvbi52YWx1ZSk7XG4gICAgICAgICAgICBjb25zdCBuZXh0T3B0aW9ucyA9IGdldE9wdGlvbnNCeVZhbHVlcyhhbGxGbGF0T3B0aW9ucywgbmV4dFZhbHVlKTtcbiAgICAgICAgICAgIGNvbW1pdENoYW5nZShuZXh0VmFsdWUsIG5leHRPcHRpb25zKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYWxsb3dEZXNlbGVjdCAmJiBpbm5lclZhbHVlID09PSBvcHRpb24udmFsdWUpIHtcbiAgICAgICAgICAgIGNvbW1pdENoYW5nZSh1bmRlZmluZWQsIHVuZGVmaW5lZCk7XG4gICAgICAgICAgICBoYW5kbGVPcGVuQ2hhbmdlKGZhbHNlKTtcbiAgICAgICAgICAgIG9uQmx1ciA9PT0gbnVsbCB8fCBvbkJsdXIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQmx1cigpO1xuICAgICAgICAgICAgKF9hID0gdHJpZ2dlclJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZm9jdXMoeyBwcmV2ZW50U2Nyb2xsOiB0cnVlIH0pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbW1pdENoYW5nZShvcHRpb24udmFsdWUsIG9wdGlvbik7XG4gICAgICAgIGhhbmRsZU9wZW5DaGFuZ2UoZmFsc2UpO1xuICAgICAgICBvbkJsdXIgPT09IG51bGwgfHwgb25CbHVyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkJsdXIoKTtcbiAgICAgICAgKF9iID0gdHJpZ2dlclJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuZm9jdXMoeyBwcmV2ZW50U2Nyb2xsOiB0cnVlIH0pO1xuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZVJlbW92ZVNlbGVjdGVkVmFsdWUgPSB1c2VFdmVudENhbGxiYWNrKChvcHRpb25WYWx1ZSkgPT4ge1xuICAgICAgICBpZiAoIW11bHRpcGxlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFnZXRNdWx0aXBsZVZhbHVlKGlubmVyVmFsdWUpLmluY2x1ZGVzKG9wdGlvblZhbHVlKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5leHRWYWx1ZSA9IHJlbW92ZU11bHRpcGxlVmFsdWUoaW5uZXJWYWx1ZSwgb3B0aW9uVmFsdWUpO1xuICAgICAgICBjb25zdCBuZXh0T3B0aW9ucyA9IGdldE9wdGlvbnNCeVZhbHVlcyhhbGxGbGF0T3B0aW9ucywgbmV4dFZhbHVlKTtcbiAgICAgICAgY29tbWl0Q2hhbmdlKG5leHRWYWx1ZSwgbmV4dE9wdGlvbnMpO1xuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZVRyaWdnZXJLZXlEb3duID0gdXNlRXZlbnRDYWxsYmFjaygoZXZlbnQpID0+IHtcbiAgICAgICAgaWYgKCFpbnRlcmFjdGl2ZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChldmVudC5rZXkgPT09IEtFWUJPQVJELkVOVEVSIHx8IGV2ZW50LmtleSA9PT0gS0VZQk9BUkQuU1BBQ0UpIHtcbiAgICAgICAgICAgIGlmIChpbm5lck9wZW4gJiZcbiAgICAgICAgICAgICAgICBhY3RpdmVJbmRleCAhPT0gbnVsbCAmJlxuICAgICAgICAgICAgICAgIHZpc2libGVGbGF0T3B0aW9uc1thY3RpdmVJbmRleF0gJiZcbiAgICAgICAgICAgICAgICAhdmlzaWJsZUZsYXRPcHRpb25zW2FjdGl2ZUluZGV4XS5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgaGFuZGxlU2VsZWN0T3B0aW9uKHZpc2libGVGbGF0T3B0aW9uc1thY3RpdmVJbmRleF0pO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBoYW5kbGVPcGVuQ2hhbmdlKCFpbm5lck9wZW4pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChldmVudC5rZXkgPT09IEtFWUJPQVJELkFSUk9XX0RPV04gfHwgZXZlbnQua2V5ID09PSBLRVlCT0FSRC5BUlJPV19VUCkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGlmICghaW5uZXJPcGVuKSB7XG4gICAgICAgICAgICAgICAgaGFuZGxlT3BlbkNoYW5nZSh0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZUl0ZW1Nb3VzZUVudGVyID0gdXNlRXZlbnRDYWxsYmFjaygoaW5kZXgpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBpZiAoISgoX2EgPSB2aXNpYmxlRmxhdE9wdGlvbnNbaW5kZXhdKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZGlzYWJsZWQpKSB7XG4gICAgICAgICAgICBzZXRBY3RpdmVJbmRleChpbmRleCk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVUYWdSZW1vdmVNb3VzZURvd24gPSB1c2VFdmVudENhbGxiYWNrKChldmVudCkgPT4ge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVUYWdSZW1vdmVDbGljayA9IHVzZUV2ZW50Q2FsbGJhY2soKGV2ZW50KSA9PiB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZVNlYXJjaEJsdXIgPSB1c2VFdmVudENhbGxiYWNrKChldmVudCkgPT4ge1xuICAgICAgICBub3RpZnlCbHVySWZPdXRzaWRlKGV2ZW50LnJlbGF0ZWRUYXJnZXQsIGV2ZW50KTtcbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVTZWFyY2hDaGFuZ2UgPSB1c2VFdmVudENhbGxiYWNrKChuZXh0VmFsdWUsIF9ldmVudCkgPT4ge1xuICAgICAgICBzZXRJbm5lclNlYXJjaFZhbHVlKG5leHRWYWx1ZSk7XG4gICAgICAgIG9uU2VhcmNoQ2hhbmdlID09PSBudWxsIHx8IG9uU2VhcmNoQ2hhbmdlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvblNlYXJjaENoYW5nZShuZXh0VmFsdWUpO1xuICAgIH0pO1xuICAgIGNvbnN0IGZpbmRFbmFibGVkSW5kZXggPSB1c2VFdmVudENhbGxiYWNrKChjdXJyZW50LCBkaXJlY3Rpb24pID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBjb25zdCBsZW5ndGggPSB2aXNpYmxlRmxhdE9wdGlvbnMubGVuZ3RoO1xuICAgICAgICBpZiAobGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzdGFydCA9IGN1cnJlbnQgIT09IG51bGwgJiYgY3VycmVudCAhPT0gdm9pZCAwID8gY3VycmVudCA6IChkaXJlY3Rpb24gPT09IDEgPyAtMSA6IGxlbmd0aCk7XG4gICAgICAgIGZvciAobGV0IHN0ZXAgPSAxOyBzdGVwIDw9IGxlbmd0aDsgc3RlcCArPSAxKSB7XG4gICAgICAgICAgICBjb25zdCBjYW5kaWRhdGUgPSAoKHN0YXJ0ICsgZGlyZWN0aW9uICogc3RlcCkgJSBsZW5ndGggKyBsZW5ndGgpICUgbGVuZ3RoO1xuICAgICAgICAgICAgaWYgKCEoKF9hID0gdmlzaWJsZUZsYXRPcHRpb25zW2NhbmRpZGF0ZV0pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5kaXNhYmxlZCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY2FuZGlkYXRlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZVNlYXJjaEtleURvd24gPSB1c2VFdmVudENhbGxiYWNrKChldmVudCkgPT4ge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGlmIChldmVudC5rZXkgPT09IEtFWUJPQVJELkFSUk9XX0RPV04pIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBjb25zdCBuZXh0ID0gZmluZEVuYWJsZWRJbmRleChhY3RpdmVJbmRleCwgMSk7XG4gICAgICAgICAgICBpZiAobmV4dCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHNldEFjdGl2ZUluZGV4KG5leHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChldmVudC5rZXkgPT09IEtFWUJPQVJELkFSUk9XX1VQKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgY29uc3QgcHJldiA9IGZpbmRFbmFibGVkSW5kZXgoYWN0aXZlSW5kZXgsIC0xKTtcbiAgICAgICAgICAgIGlmIChwcmV2ICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgc2V0QWN0aXZlSW5kZXgocHJldik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gS0VZQk9BUkQuRU5URVIpIHtcbiAgICAgICAgICAgIGlmIChhY3RpdmVJbmRleCAhPT0gbnVsbCAmJlxuICAgICAgICAgICAgICAgIHZpc2libGVGbGF0T3B0aW9uc1thY3RpdmVJbmRleF0gJiZcbiAgICAgICAgICAgICAgICAhdmlzaWJsZUZsYXRPcHRpb25zW2FjdGl2ZUluZGV4XS5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgaGFuZGxlU2VsZWN0T3B0aW9uKHZpc2libGVGbGF0T3B0aW9uc1thY3RpdmVJbmRleF0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChldmVudC5rZXkgPT09IEtFWUJPQVJELkVTQ0FQRSkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGhhbmRsZU9wZW5DaGFuZ2UoZmFsc2UpO1xuICAgICAgICAgICAgKF9hID0gdHJpZ2dlclJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZm9jdXMoeyBwcmV2ZW50U2Nyb2xsOiB0cnVlIH0pO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgY29uc3QgcmVuZGVyVmFsdWVNZXRhID0ge1xuICAgICAgICBkaXNhYmxlZCxcbiAgICAgICAgcmVhZE9ubHksXG4gICAgICAgIG11bHRpcGxlLFxuICAgICAgICBtYXhWaXNpYmxlVmFsdWVzLFxuICAgICAgICBvcGVuOiBpbm5lck9wZW4sXG4gICAgICAgIHBsYWNlaG9sZGVyOiAhaGFzU2VsZWN0aW9uLFxuICAgICAgICBzZWxlY3RlZE9wdGlvbnMsXG4gICAgfTtcbiAgICBjb25zdCB2YWx1ZUxhYmVsQ2xhc3MgPSBoYXNTZWxlY3Rpb24gPyAndmFsdWUnIDogJ3BsYWNlaG9sZGVyJztcbiAgICBjb25zdCBpc011bHRpcGxlVmFsdWVGaWxsZWQgPSAobXVsdGlwbGUgJiZcbiAgICAgICAgaGFzU2VsZWN0aW9uICYmXG4gICAgICAgIG1heFZpc2libGVWYWx1ZXMgPT09IHVuZGVmaW5lZCk7XG4gICAgY29uc3QgdHJpZ2dlckNsYXNzTmFtZSA9IGNsYXNzZXMoJ3RyaWdnZXInLCBqb2luQ2xzKGNsYXNzZXMoYHRyaWdnZXItJHtub3JtYWxpemVkU2l6ZX1gKSwgY2xhc3NlcyhgdHJpZ2dlci0ke3ZhcmlhbnR9YCksIGlubmVyT3BlbiAmJiBjbGFzc2VzKCd0cmlnZ2VyLW9wZW4nKSwgaXNNdWx0aXBsZVZhbHVlRmlsbGVkICYmIGNsYXNzZXMoJ3RyaWdnZXItbXVsdGlwbGUtZmlsbGVkJyksIGhhc1NlbGVjdGlvbiA/IGNsYXNzZXMoJ3RyaWdnZXItZmlsbGVkJykgOiBjbGFzc2VzKCd0cmlnZ2VyLXBsYWNlaG9sZGVyJyksIHN0YXR1cyAhPT0gJ2RlZmF1bHQnICYmIGNsYXNzZXMoYHRyaWdnZXItJHtzdGF0dXN9YCksIGRpc2FibGVkICYmIGNsYXNzZXMoJ3RyaWdnZXItZGlzYWJsZWQnKSwgcmVhZE9ubHkgJiYgIWRpc2FibGVkICYmIGNsYXNzZXMoJ3RyaWdnZXItcmVhZG9ubHknKSkpO1xuICAgIGNvbnN0IGljb25TaXplID0gbm9ybWFsaXplZFNpemUgPT09ICdzbWFsbCcgPyAxNiA6IDIwO1xuICAgIGNvbnN0IGFjdGl2ZU9wdGlvbklkID0gc2VhcmNoYWJsZSAmJiBpbm5lck9wZW4gJiYgYWN0aXZlSW5kZXggIT09IG51bGxcbiAgICAgICAgPyBgJHtvcHRpb25JZFByZWZpeH0tJHthY3RpdmVJbmRleH1gXG4gICAgICAgIDogdW5kZWZpbmVkO1xuICAgIGNvbnN0IGZsb2F0aW5nQXJpYUxhYmVsbGVkQnkgPSBhcmlhTGFiZWxsZWRCeSAhPT0gbnVsbCAmJiBhcmlhTGFiZWxsZWRCeSAhPT0gdm9pZCAwID8gYXJpYUxhYmVsbGVkQnkgOiAobGFiZWwgPyBsYWJlbElkIDogdW5kZWZpbmVkKTtcbiAgICBjb25zdCBkZXNjcmliZWRCeUlkcyA9IFtcbiAgICAgICAgZGVzY3JpcHRpb24gPyBkZXNjcmlwdGlvbklkIDogbnVsbCxcbiAgICAgICAgZmVlZGJhY2sgPyBmZWVkYmFja0lkIDogbnVsbCxcbiAgICBdLmZpbHRlcihCb29sZWFuKS5qb2luKCcgJykgfHwgdW5kZWZpbmVkO1xuICAgIHJldHVybiAoX2pzeHMoU2VsZWN0RmllbGRTaGVsbCwgeyBjbGFzc2VzOiBjbGFzc2VzLCBjbGFzc05hbWU6IGNsYXNzTmFtZSwgc2l6ZTogbm9ybWFsaXplZFNpemUsIHZhcmlhbnQ6IHZhcmlhbnQsIHN0YXR1czogc3RhdHVzLCBkaXNhYmxlZDogZGlzYWJsZWQsIHJlYWRPbmx5OiByZWFkT25seSwgbG9hZGluZzogbG9hZGluZywgbGFiZWw6IGxhYmVsLCBpbmZvOiBpbmZvLCBkZXNjcmlwdGlvbjogZGVzY3JpcHRpb24sIGZlZWRiYWNrOiBmZWVkYmFjaywgcmVxdWlyZWQ6IHJlcXVpcmVkLCBsYWJlbElkOiBsYWJlbElkLCBkZXNjcmlwdGlvbklkOiBkZXNjcmlwdGlvbklkLCBmZWVkYmFja0lkOiBmZWVkYmFja0lkLCBjaGlsZHJlbjogW19qc3hzKFwiYnV0dG9uXCIsIE9iamVjdC5hc3NpZ24oe30sIGdldFJlZmVyZW5jZVByb3BzKHtcbiAgICAgICAgICAgICAgICByZWY6IHNldFJlZmVyZW5jZSxcbiAgICAgICAgICAgICAgICBpZDogdHJpZ2dlcklkLFxuICAgICAgICAgICAgICAgIHR5cGU6ICdidXR0b24nLFxuICAgICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQsXG4gICAgICAgICAgICAgICAgJ2FyaWEtcmVhZG9ubHknOiByZWFkT25seSB8fCB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiB0cmlnZ2VyQ2xhc3NOYW1lLFxuICAgICAgICAgICAgICAgIG9uS2V5RG93bjogaGFuZGxlVHJpZ2dlcktleURvd24sXG4gICAgICAgICAgICAgICAgb25CbHVyOiBoYW5kbGVUcmlnZ2VyQmx1cixcbiAgICAgICAgICAgICAgICAnYXJpYS1sYWJlbCc6IGFyaWFMYWJlbCxcbiAgICAgICAgICAgICAgICAnYXJpYS1sYWJlbGxlZGJ5JzogZmxvYXRpbmdBcmlhTGFiZWxsZWRCeSxcbiAgICAgICAgICAgICAgICAnYXJpYS1kZXNjcmliZWRieSc6IGRlc2NyaWJlZEJ5SWRzLFxuICAgICAgICAgICAgfSksIHsgY2hpbGRyZW46IFtfanN4cyhcInNwYW5cIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ2NvbnRlbnQnKSwgY2hpbGRyZW46IFtwcmVmaXggJiYgX2pzeChcInNwYW5cIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ3ByZWZpeCcpLCBjaGlsZHJlbjogcHJlZml4IH0pLCBfanN4KFwic3BhblwiLCB7IGNsYXNzTmFtZTogY2xhc3Nlcyh2YWx1ZUxhYmVsQ2xhc3MsIGpvaW5DbHMoY2xhc3NlcyhgJHt2YWx1ZUxhYmVsQ2xhc3N9LSR7bm9ybWFsaXplZFNpemV9YCksIGlzTXVsdGlwbGVWYWx1ZUZpbGxlZCAmJiBjbGFzc2VzKGAke3ZhbHVlTGFiZWxDbGFzc30tbXVsdGlwbGVgKSwgZGlzYWJsZWQgJiYgY2xhc3NlcyhgJHt2YWx1ZUxhYmVsQ2xhc3N9LWRpc2FibGVkYCkpKSwgY2hpbGRyZW46IF9qc3goU2VsZWN0VmFsdWVDb250ZW50LCB7IGNsYXNzZXM6IGNsYXNzZXMsIGhhc1NlbGVjdGlvbjogaGFzU2VsZWN0aW9uLCBtdWx0aXBsZTogbXVsdGlwbGUsIHBsYWNlaG9sZGVyOiBwbGFjZWhvbGRlciwgcmVuZGVyVmFsdWU6IHJlbmRlclZhbHVlLCByZW5kZXJWYWx1ZU1ldGE6IHJlbmRlclZhbHVlTWV0YSwgc2VsZWN0ZWRPcHRpb25zOiBzZWxlY3RlZE9wdGlvbnMsIG1heFZpc2libGVWYWx1ZXM6IG1heFZpc2libGVWYWx1ZXMsIG9uUmVtb3ZlOiBoYW5kbGVSZW1vdmVTZWxlY3RlZFZhbHVlLCBvblJlbW92ZUNsaWNrOiBoYW5kbGVUYWdSZW1vdmVDbGljaywgb25SZW1vdmVNb3VzZURvd246IGhhbmRsZVRhZ1JlbW92ZU1vdXNlRG93biB9KSB9KV0gfSksIF9qc3goXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdpY29uJyksIGNoaWxkcmVuOiBsb2FkaW5nID8gKF9qc3goU3Bpbm5lciwgeyBzaXplOiBpY29uU2l6ZSwgc3Ryb2tlV2lkdGg6IDIgfSkpIDogKF9qc3goSWNvbnMsIHsgbmFtZTogaW5uZXJPcGVuID8gJ2NoZXZyb25VcCcgOiAnY2hldnJvbkRvd24nLCBzaXplOiBpY29uU2l6ZSwgY29sb3I6IFwiY3VycmVudENvbG9yXCIgfSkpIH0pXSB9KSksIGlzTW91bnRlZCAmJiBpbnRlcmFjdGl2ZSAmJiAoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhbmVsTm9kZSA9IChfanN4KEZsb2F0aW5nRm9jdXNNYW5hZ2VyLCB7IGNvbnRleHQ6IGNvbnRleHQsIG1vZGFsOiBmYWxzZSwgaW5pdGlhbEZvY3VzOiAtMSwgcmV0dXJuRm9jdXM6IGZhbHNlLCBjaGlsZHJlbjogX2pzeHMoXCJkaXZcIiwgT2JqZWN0LmFzc2lnbih7fSwgZ2V0RmxvYXRpbmdQcm9wcyh7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWY6IHNldEZsb2F0aW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiBqb2luQ2xzKGNsYXNzZXMoJ3BhbmVsJyksIHBhbmVsQ2xhc3NOYW1lKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlOiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGZsb2F0aW5nU3R5bGVzKSwgdHJhbnNpdGlvblN0eWxlcyksXG4gICAgICAgICAgICAgICAgICAgIH0pLCB7IGNoaWxkcmVuOiBbc2VhcmNoYWJsZSAmJiAoX2pzeChTZWxlY3RTZWFyY2hDb250cm9sLCB7IHJlZjogc2V0U2VhcmNoSW5wdXRSZWYsIGNsYXNzZXM6IGNsYXNzZXMsIHNpemU6IG5vcm1hbGl6ZWRTaXplLCBwbGFjZWhvbGRlcjogc2VhcmNoUGxhY2Vob2xkZXIsIHZhbHVlOiBpbm5lclNlYXJjaFZhbHVlLCBhY3RpdmVEZXNjZW5kYW50OiBhY3RpdmVPcHRpb25JZCwgb25CbHVyOiBoYW5kbGVTZWFyY2hCbHVyLCBvbkNoYW5nZTogaGFuZGxlU2VhcmNoQ2hhbmdlLCBvbktleURvd246IGhhbmRsZVNlYXJjaEtleURvd24gfSkpLCBfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdwYW5lbC1ib2R5JyksIGNoaWxkcmVuOiB2aXNpYmxlRmxhdE9wdGlvbnMubGVuZ3RoID09PSAwID8gKF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ2VtcHR5JyksIGNoaWxkcmVuOiBfanN4KFR5cG9ncmFwaHlCb2R5LCB7IHNpemU6IFNFTEVDVF9UWVBPR1JBUEhZLmVtcHR5LnNpemUsIGNvbG9yOiBTRUxFQ1RfVFlQT0dSQVBIWS5lbXB0eS5jb2xvciwgY2hpbGRyZW46IGVtcHR5Q29udGVudCB9KSB9KSkgOiAoKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBmbGF0SW5kZXggPSAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2libGVPcHRpb25Hcm91cHMubWFwKChncm91cCkgPT4gKF9qc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdncm91cCcpLCBjaGlsZHJlbjogW2dyb3VwLmxhYmVsICYmIChfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdncm91cC1sYWJlbCcpLCBjaGlsZHJlbjogX2pzeChUeXBvZ3JhcGh5TGFiZWwsIHsgc2l6ZTogU0VMRUNUX1RZUE9HUkFQSFkuZ3JvdXBMYWJlbC5zaXplLCBzdHJvbmc6IHRydWUsIGNoaWxkcmVuOiBncm91cC5sYWJlbCB9KSB9KSksIGdyb3VwLm9wdGlvbnMubWFwKChvcHRpb24pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9wdGlvbkZsYXRJbmRleCA9IGZsYXRJbmRleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYXRJbmRleCArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPSBpc09wdGlvblNlbGVjdGVkKGlubmVyVmFsdWUsIG11bHRpcGxlLCBvcHRpb24udmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYWN0aXZlID0gYWN0aXZlSW5kZXggPT09IG9wdGlvbkZsYXRJbmRleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9wdGlvbk1ldGEgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiAhIW9wdGlvbi5kaXNhYmxlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleDogb3B0aW9uRmxhdEluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZW46IGlubmVyT3BlbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0Q29udGVudFJlZi5jdXJyZW50W29wdGlvbkZsYXRJbmRleF0gPSBleHRyYWN0T3B0aW9uVGV4dChvcHRpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChfanN4KFwiYnV0dG9uXCIsIE9iamVjdC5hc3NpZ24oe30sIGdldEl0ZW1Qcm9wcyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmKG5vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdFJlZi5jdXJyZW50W29wdGlvbkZsYXRJbmRleF0gPSBub2RlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGAke29wdGlvbklkUHJlZml4fS0ke29wdGlvbkZsYXRJbmRleH1gLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdidXR0b24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU6ICdvcHRpb24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogY2xhc3Nlcygnb3B0aW9uJywgam9pbkNscyhhY3RpdmUgJiYgY2xhc3Nlcygnb3B0aW9uLWFjdGl2ZScpLCBzZWxlY3RlZCAmJiBjbGFzc2VzKCdvcHRpb24tc2VsZWN0ZWQnKSwgb3B0aW9uLmRpc2FibGVkICYmIGNsYXNzZXMoJ29wdGlvbi1kaXNhYmxlZCcpLCBvcHRpb25DbGFzc05hbWUpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogb3B0aW9uLmRpc2FibGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhcmlhLXNlbGVjdGVkJzogc2VsZWN0ZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljazogKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZVNlbGVjdE9wdGlvbihvcHRpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Nb3VzZUVudGVyOiAoKSA9PiBoYW5kbGVJdGVtTW91c2VFbnRlcihvcHRpb25GbGF0SW5kZXgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogaGFuZGxlT3B0aW9uQmx1cixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB7IGNoaWxkcmVuOiByZW5kZXJPcHRpb24gPyAocmVuZGVyT3B0aW9uKG9wdGlvbiwgb3B0aW9uTWV0YSkpIDogKF9qc3goU2VsZWN0T3B0aW9uQ29udGVudCwgeyBjbGFzc2VzOiBjbGFzc2VzLCBvcHRpb246IG9wdGlvbiwgc2VsZWN0ZWQ6IHNlbGVjdGVkLCBjb250ZW50OiByZW5kZXJPcHRpb25Db250ZW50ID09PSBudWxsIHx8IHJlbmRlck9wdGlvbkNvbnRlbnQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHJlbmRlck9wdGlvbkNvbnRlbnQob3B0aW9uLCBvcHRpb25NZXRhKSB9KSkgfSksIGAke2dyb3VwLmtleX0tJHtvcHRpb24udmFsdWV9YCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KV0gfSwgZ3JvdXAua2V5KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSgpKSB9KSwgcGFuZWxGb290ZXIgIT0gbnVsbCAmJiAoX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygncGFuZWwtZm9vdGVyJyksIGNoaWxkcmVuOiBwYW5lbEZvb3RlciB9KSldIH0pKSB9KSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHBvcnRhbCA/IF9qc3goRmxvYXRpbmdQb3J0YWwsIHsgY2hpbGRyZW46IHBhbmVsTm9kZSB9KSA6IHBhbmVsTm9kZTtcbiAgICAgICAgICAgIH0pKCldIH0pKTtcbn07XG5TZWxlY3QuZGlzcGxheU5hbWUgPSAnU2VsZWN0JztcbmV4cG9ydCBkZWZhdWx0IG1lbW8oU2VsZWN0KTsiLG51bGxdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
|