@nurihaus/web-design-system 0.0.2 → 0.0.4

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/dist/index.js CHANGED
@@ -2,6 +2,274 @@
2
2
  /******/ "use strict";
3
3
  /******/ var __webpack_modules__ = ({
4
4
 
5
+ /***/ 283:
6
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
7
+
8
+
9
+
10
+ Object.defineProperty(exports, "__esModule", ({
11
+ value: true
12
+ }));
13
+ var jsx_runtime_1 = __webpack_require__(848);
14
+ var react_1 = __webpack_require__(540);
15
+ __webpack_require__(47);
16
+ var badge_1 = __webpack_require__(899);
17
+ var Avatar = function Avatar(props) {
18
+ var size = props.size,
19
+ src = props.src,
20
+ alt = props.alt,
21
+ badgeOption = props.badgeOption;
22
+ var _a = (0, react_1.useState)(false),
23
+ isImageDownload = _a[0],
24
+ setIsImageDownload = _a[1];
25
+ return (0, jsx_runtime_1.jsxs)("div", {
26
+ className: "avatar ".concat(size),
27
+ children: [(0, jsx_runtime_1.jsx)("img", {
28
+ src: src,
29
+ alt: alt !== null && alt !== void 0 ? alt : "avatar",
30
+ className: "avatar ".concat(size, " ").concat(!isImageDownload ? "hidden" : ""),
31
+ onLoad: function onLoad() {
32
+ return setIsImageDownload(true);
33
+ }
34
+ }), !isImageDownload && (0, jsx_runtime_1.jsx)("div", {
35
+ className: "avatar avatar-skeleton ".concat(size),
36
+ children: (0, jsx_runtime_1.jsx)("div", {
37
+ className: "avatar skeleton-animation"
38
+ })
39
+ }), (0, jsx_runtime_1.jsx)(badge_1.BaseBadge, {
40
+ asChild: true,
41
+ style: {
42
+ position: "absolute",
43
+ right: "0",
44
+ bottom: "0"
45
+ },
46
+ children: badgeOption
47
+ })]
48
+ });
49
+ };
50
+ exports["default"] = Avatar;
51
+
52
+ /***/ }),
53
+
54
+ /***/ 950:
55
+ /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
56
+
57
+
58
+
59
+ var __importDefault = this && this.__importDefault || function (mod) {
60
+ return mod && mod.__esModule ? mod : {
61
+ "default": mod
62
+ };
63
+ };
64
+ Object.defineProperty(exports, "__esModule", ({
65
+ value: true
66
+ }));
67
+ exports.Avatar = void 0;
68
+ var avatar_1 = __webpack_require__(283);
69
+ Object.defineProperty(exports, "Avatar", ({
70
+ enumerable: true,
71
+ get: function get() {
72
+ return __importDefault(avatar_1)["default"];
73
+ }
74
+ }));
75
+
76
+ /***/ }),
77
+
78
+ /***/ 899:
79
+ /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
80
+
81
+
82
+
83
+ var __assign = this && this.__assign || function () {
84
+ __assign = Object.assign || function (t) {
85
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
86
+ s = arguments[i];
87
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
88
+ }
89
+ return t;
90
+ };
91
+ return __assign.apply(this, arguments);
92
+ };
93
+ var __importDefault = this && this.__importDefault || function (mod) {
94
+ return mod && mod.__esModule ? mod : {
95
+ "default": mod
96
+ };
97
+ };
98
+ Object.defineProperty(exports, "__esModule", ({
99
+ value: true
100
+ }));
101
+ exports.IconTextOptionBadge = exports.IconTextBadge = exports.OptionBadge = exports.BaseBadge = void 0;
102
+ var jsx_runtime_1 = __webpack_require__(848);
103
+ __webpack_require__(903);
104
+ __webpack_require__(487);
105
+ __webpack_require__(783);
106
+ var composer_1 = __importDefault(__webpack_require__(777));
107
+ var BaseBadge = function BaseBadge(props) {
108
+ var _a = props.asChild,
109
+ asChild = _a === void 0 ? false : _a,
110
+ borderColor = props.borderColor,
111
+ _b = props.textColor,
112
+ textColor = _b === void 0 ? "black" : _b,
113
+ backgroundColor = props.backgroundColor,
114
+ _c = props.size,
115
+ size = _c === void 0 ? "l" : _c,
116
+ style = props.style,
117
+ children = props.children,
118
+ className = props.className;
119
+ var Comp = asChild ? composer_1["default"] : "div";
120
+ var composedClassName = "nuri-theme base-badge ".concat(size, " border-").concat(borderColor, " text-").concat(textColor, " background-").concat(backgroundColor, " ").concat(className);
121
+ return (0, jsx_runtime_1.jsx)(Comp, {
122
+ style: style,
123
+ className: composedClassName,
124
+ children: children
125
+ });
126
+ };
127
+ exports.BaseBadge = BaseBadge;
128
+ var OptionBadge = function OptionBadge(props) {
129
+ var option = props.option;
130
+ return (0, jsx_runtime_1.jsx)(exports.BaseBadge, __assign({}, props, {
131
+ children: option
132
+ }));
133
+ };
134
+ exports.OptionBadge = OptionBadge;
135
+ var IconTextBadge = function IconTextBadge(props) {
136
+ var icon = props.icon,
137
+ text = props.text;
138
+ return (0, jsx_runtime_1.jsxs)(exports.BaseBadge, __assign({}, props, {
139
+ children: [icon, (0, jsx_runtime_1.jsx)("span", {
140
+ children: text
141
+ })]
142
+ }));
143
+ };
144
+ exports.IconTextBadge = IconTextBadge;
145
+ var IconTextOptionBadge = function IconTextOptionBadge(props) {
146
+ var icon = props.icon,
147
+ text = props.text,
148
+ option = props.option;
149
+ return (0, jsx_runtime_1.jsxs)(exports.BaseBadge, __assign({}, props, {
150
+ className: "icon-text-option",
151
+ children: [(0, jsx_runtime_1.jsxs)("span", {
152
+ children: [icon, (0, jsx_runtime_1.jsx)("span", {
153
+ children: text
154
+ })]
155
+ }), option]
156
+ }));
157
+ };
158
+ exports.IconTextOptionBadge = IconTextOptionBadge;
159
+
160
+ /***/ }),
161
+
162
+ /***/ 777:
163
+ /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
164
+
165
+
166
+
167
+ var __assign = this && this.__assign || function () {
168
+ __assign = Object.assign || function (t) {
169
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
170
+ s = arguments[i];
171
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
172
+ }
173
+ return t;
174
+ };
175
+ return __assign.apply(this, arguments);
176
+ };
177
+ var __rest = this && this.__rest || function (s, e) {
178
+ var t = {};
179
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
180
+ if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
181
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
182
+ }
183
+ return t;
184
+ };
185
+ Object.defineProperty(exports, "__esModule", ({
186
+ value: true
187
+ }));
188
+ var react_1 = __webpack_require__(540);
189
+ function composeRefs() {
190
+ var refs = [];
191
+ for (var _i = 0; _i < arguments.length; _i++) {
192
+ refs[_i] = arguments[_i];
193
+ }
194
+ return function (node) {
195
+ refs.forEach(function (ref) {
196
+ if (ref) {
197
+ if (typeof ref === "function") {
198
+ ref(node);
199
+ } else {
200
+ ref.current = node;
201
+ }
202
+ }
203
+ });
204
+ };
205
+ }
206
+ var Composer = (0, react_1.forwardRef)(function (_a, ref) {
207
+ var children = _a.children,
208
+ composerProps = __rest(_a, ["children"]);
209
+ var childArray = react_1.Children.toArray(children);
210
+ if (childArray.length > 1) {
211
+ throw new Error("Composer can only have one child");
212
+ }
213
+ var isValidChild = (0, react_1.isValidElement)(childArray[0]);
214
+ if (!isValidChild) {
215
+ throw new Error("child should be React node!");
216
+ }
217
+ var child = childArray[0];
218
+ var childRef = getElementRef(child);
219
+ var mergedProps = mergeProps(composerProps, child.props);
220
+ return (0, react_1.cloneElement)(child, __assign(__assign({}, mergedProps), {
221
+ ref: ref ? composeRefs(ref, childRef) : childRef
222
+ }));
223
+ });
224
+ Composer.displayName = "Composer";
225
+ function mergeProps(composerProps, childProps) {
226
+ var overrideProps = __assign({}, childProps);
227
+ var _loop_1 = function _loop_1(propName) {
228
+ var composerPropValue = composerProps[propName];
229
+ var childPropValue = childProps[propName];
230
+ var isHandler = /^on[A-Z]/.test(propName);
231
+ if (isHandler) {
232
+ if (composerPropValue && childPropValue) {
233
+ overrideProps[propName] = function () {
234
+ var args = [];
235
+ for (var _i = 0; _i < arguments.length; _i++) {
236
+ args[_i] = arguments[_i];
237
+ }
238
+ childPropValue.apply(void 0, args);
239
+ composerPropValue.apply(void 0, args);
240
+ };
241
+ } else if (composerPropValue) {
242
+ overrideProps[propName] = composerPropValue;
243
+ }
244
+ } else if (propName === "style") {
245
+ overrideProps[propName] = __assign(__assign({}, composerPropValue), childPropValue);
246
+ } else if (propName === "className") {
247
+ overrideProps[propName] = [composerPropValue, childPropValue].filter(Boolean).join(" ");
248
+ }
249
+ };
250
+ for (var propName in composerProps) {
251
+ _loop_1(propName);
252
+ }
253
+ return __assign(__assign({}, composerProps), overrideProps);
254
+ }
255
+ function getElementRef(element) {
256
+ var _a, _b;
257
+ var getter = (_a = Object.getOwnPropertyDescriptor(element.props, "ref")) === null || _a === void 0 ? void 0 : _a.get;
258
+ var mayWarn = getter && "isReactWarning" in getter && getter.isReactWarning;
259
+ if (mayWarn) {
260
+ return element.ref;
261
+ }
262
+ getter = (_b = Object.getOwnPropertyDescriptor(element, "ref")) === null || _b === void 0 ? void 0 : _b.get;
263
+ mayWarn = getter && "isReactWarning" in getter && getter.isReactWarning;
264
+ if (mayWarn) {
265
+ return element.props.ref;
266
+ }
267
+ return element.props.ref || element.ref;
268
+ }
269
+ exports["default"] = Composer;
270
+
271
+ /***/ }),
272
+
5
273
  /***/ 970:
6
274
  /***/ ((module, __webpack_exports__, __webpack_require__) => {
7
275
 
@@ -439,7 +707,6 @@ module.exports = function (item) {
439
707
  /***/ 20:
440
708
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
441
709
 
442
- var __webpack_unused_export__;
443
710
  /**
444
711
  * @license React
445
712
  * react-jsx-runtime.production.min.js
@@ -450,7 +717,7 @@ var __webpack_unused_export__;
450
717
  * LICENSE file in the root directory of this source tree.
451
718
  */
452
719
  var f=__webpack_require__(540),k=Symbol.for("react.element"),l=Symbol.for("react.fragment"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};
453
- function q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=""+g);void 0!==a.key&&(e=""+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}__webpack_unused_export__=l;__webpack_unused_export__=q;__webpack_unused_export__=q;
720
+ function q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=""+g);void 0!==a.key&&(e=""+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}exports.Fragment=l;exports.jsx=q;exports.jsxs=q;
454
721
 
455
722
 
456
723
  /***/ }),
@@ -506,63 +773,259 @@ if (true) {
506
773
 
507
774
 
508
775
  if (true) {
509
- /* unused reexport */ __webpack_require__(20);
776
+ module.exports = __webpack_require__(20);
510
777
  } else {}
511
778
 
512
779
 
513
780
  /***/ }),
514
781
 
515
- /***/ 72:
516
- /***/ ((module) => {
782
+ /***/ 47:
783
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
517
784
 
785
+ __webpack_require__.r(__webpack_exports__);
786
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
787
+ /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
788
+ /* harmony export */ });
789
+ /* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(72);
790
+ /* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);
791
+ /* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(825);
792
+ /* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);
793
+ /* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(659);
794
+ /* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);
795
+ /* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(56);
796
+ /* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);
797
+ /* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(159);
798
+ /* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);
799
+ /* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(113);
800
+ /* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);
801
+ /* harmony import */ var _node_modules_css_loader_dist_cjs_js_avatar_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(970);
518
802
 
803
+
804
+
805
+
806
+
807
+
808
+
809
+
810
+
811
+
519
812
 
520
- var stylesInDOM = [];
521
- function getIndexByIdentifier(identifier) {
522
- var result = -1;
523
- for (var i = 0; i < stylesInDOM.length; i++) {
524
- if (stylesInDOM[i].identifier === identifier) {
525
- result = i;
526
- break;
527
- }
528
- }
529
- return result;
530
- }
531
- function modulesToDom(list, options) {
532
- var idCountMap = {};
533
- var identifiers = [];
534
- for (var i = 0; i < list.length; i++) {
535
- var item = list[i];
536
- var id = options.base ? item[0] + options.base : item[0];
537
- var count = idCountMap[id] || 0;
538
- var identifier = "".concat(id, " ").concat(count);
539
- idCountMap[id] = count + 1;
540
- var indexByIdentifier = getIndexByIdentifier(identifier);
541
- var obj = {
542
- css: item[1],
543
- media: item[2],
544
- sourceMap: item[3],
545
- supports: item[4],
546
- layer: item[5]
547
- };
548
- if (indexByIdentifier !== -1) {
549
- stylesInDOM[indexByIdentifier].references++;
550
- stylesInDOM[indexByIdentifier].updater(obj);
551
- } else {
552
- var updater = addElementStyle(obj, options);
553
- options.byIndex = i;
554
- stylesInDOM.splice(i, 0, {
555
- identifier: identifier,
556
- updater: updater,
557
- references: 1
558
- });
559
- }
560
- identifiers.push(identifier);
561
- }
562
- return identifiers;
563
- }
564
- function addElementStyle(obj, options) {
565
- var api = options.domAPI(options);
813
+ var options = {};
814
+
815
+ options.styleTagTransform = (_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());
816
+ options.setAttributes = (_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());
817
+ options.insert = _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");
818
+ options.domAPI = (_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());
819
+ options.insertStyleElement = (_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());
820
+
821
+ var update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_css_loader_dist_cjs_js_avatar_css__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .A, options);
822
+
823
+
824
+
825
+
826
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_css_loader_dist_cjs_js_avatar_css__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .A && _node_modules_css_loader_dist_cjs_js_avatar_css__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .A.locals ? _node_modules_css_loader_dist_cjs_js_avatar_css__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .A.locals : undefined);
827
+
828
+
829
+ /***/ }),
830
+
831
+ /***/ 903:
832
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
833
+
834
+ __webpack_require__.r(__webpack_exports__);
835
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
836
+ /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
837
+ /* harmony export */ });
838
+ /* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(72);
839
+ /* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);
840
+ /* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(825);
841
+ /* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);
842
+ /* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(659);
843
+ /* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);
844
+ /* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(56);
845
+ /* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);
846
+ /* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(159);
847
+ /* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);
848
+ /* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(113);
849
+ /* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);
850
+ /* harmony import */ var _node_modules_css_loader_dist_cjs_js_badge_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(606);
851
+
852
+
853
+
854
+
855
+
856
+
857
+
858
+
859
+
860
+
861
+
862
+ var options = {};
863
+
864
+ options.styleTagTransform = (_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());
865
+ options.setAttributes = (_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());
866
+ options.insert = _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");
867
+ options.domAPI = (_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());
868
+ options.insertStyleElement = (_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());
869
+
870
+ var update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_css_loader_dist_cjs_js_badge_css__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .A, options);
871
+
872
+
873
+
874
+
875
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_css_loader_dist_cjs_js_badge_css__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .A && _node_modules_css_loader_dist_cjs_js_badge_css__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .A.locals ? _node_modules_css_loader_dist_cjs_js_badge_css__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .A.locals : undefined);
876
+
877
+
878
+ /***/ }),
879
+
880
+ /***/ 487:
881
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
882
+
883
+ __webpack_require__.r(__webpack_exports__);
884
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
885
+ /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
886
+ /* harmony export */ });
887
+ /* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(72);
888
+ /* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);
889
+ /* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(825);
890
+ /* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);
891
+ /* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(659);
892
+ /* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);
893
+ /* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(56);
894
+ /* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);
895
+ /* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(159);
896
+ /* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);
897
+ /* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(113);
898
+ /* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);
899
+ /* harmony import */ var _node_modules_css_loader_dist_cjs_js_color_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(890);
900
+
901
+
902
+
903
+
904
+
905
+
906
+
907
+
908
+
909
+
910
+
911
+ var options = {};
912
+
913
+ options.styleTagTransform = (_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());
914
+ options.setAttributes = (_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());
915
+ options.insert = _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");
916
+ options.domAPI = (_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());
917
+ options.insertStyleElement = (_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());
918
+
919
+ var update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_css_loader_dist_cjs_js_color_css__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .A, options);
920
+
921
+
922
+
923
+
924
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_css_loader_dist_cjs_js_color_css__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .A && _node_modules_css_loader_dist_cjs_js_color_css__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .A.locals ? _node_modules_css_loader_dist_cjs_js_color_css__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .A.locals : undefined);
925
+
926
+
927
+ /***/ }),
928
+
929
+ /***/ 783:
930
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
931
+
932
+ __webpack_require__.r(__webpack_exports__);
933
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
934
+ /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
935
+ /* harmony export */ });
936
+ /* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(72);
937
+ /* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);
938
+ /* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(825);
939
+ /* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);
940
+ /* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(659);
941
+ /* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);
942
+ /* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(56);
943
+ /* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);
944
+ /* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(159);
945
+ /* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);
946
+ /* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(113);
947
+ /* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);
948
+ /* harmony import */ var _node_modules_css_loader_dist_cjs_js_font_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(476);
949
+
950
+
951
+
952
+
953
+
954
+
955
+
956
+
957
+
958
+
959
+
960
+ var options = {};
961
+
962
+ options.styleTagTransform = (_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());
963
+ options.setAttributes = (_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());
964
+ options.insert = _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");
965
+ options.domAPI = (_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());
966
+ options.insertStyleElement = (_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());
967
+
968
+ var update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_css_loader_dist_cjs_js_font_css__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .A, options);
969
+
970
+
971
+
972
+
973
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_css_loader_dist_cjs_js_font_css__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .A && _node_modules_css_loader_dist_cjs_js_font_css__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .A.locals ? _node_modules_css_loader_dist_cjs_js_font_css__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .A.locals : undefined);
974
+
975
+
976
+ /***/ }),
977
+
978
+ /***/ 72:
979
+ /***/ ((module) => {
980
+
981
+
982
+
983
+ var stylesInDOM = [];
984
+ function getIndexByIdentifier(identifier) {
985
+ var result = -1;
986
+ for (var i = 0; i < stylesInDOM.length; i++) {
987
+ if (stylesInDOM[i].identifier === identifier) {
988
+ result = i;
989
+ break;
990
+ }
991
+ }
992
+ return result;
993
+ }
994
+ function modulesToDom(list, options) {
995
+ var idCountMap = {};
996
+ var identifiers = [];
997
+ for (var i = 0; i < list.length; i++) {
998
+ var item = list[i];
999
+ var id = options.base ? item[0] + options.base : item[0];
1000
+ var count = idCountMap[id] || 0;
1001
+ var identifier = "".concat(id, " ").concat(count);
1002
+ idCountMap[id] = count + 1;
1003
+ var indexByIdentifier = getIndexByIdentifier(identifier);
1004
+ var obj = {
1005
+ css: item[1],
1006
+ media: item[2],
1007
+ sourceMap: item[3],
1008
+ supports: item[4],
1009
+ layer: item[5]
1010
+ };
1011
+ if (indexByIdentifier !== -1) {
1012
+ stylesInDOM[indexByIdentifier].references++;
1013
+ stylesInDOM[indexByIdentifier].updater(obj);
1014
+ } else {
1015
+ var updater = addElementStyle(obj, options);
1016
+ options.byIndex = i;
1017
+ stylesInDOM.splice(i, 0, {
1018
+ identifier: identifier,
1019
+ updater: updater,
1020
+ references: 1
1021
+ });
1022
+ }
1023
+ identifiers.push(identifier);
1024
+ }
1025
+ return identifiers;
1026
+ }
1027
+ function addElementStyle(obj, options) {
1028
+ var api = options.domAPI(options);
566
1029
  api.update(obj);
567
1030
  var updater = function updater(newObj) {
568
1031
  if (newObj) {
@@ -781,7 +1244,7 @@ module.exports = styleTagTransform;
781
1244
  /******/ };
782
1245
  /******/
783
1246
  /******/ // Execute the module function
784
- /******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
1247
+ /******/ __webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);
785
1248
  /******/
786
1249
  /******/ // Return the exports of the module
787
1250
  /******/ return module.exports;
@@ -817,6 +1280,17 @@ module.exports = styleTagTransform;
817
1280
  /******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
818
1281
  /******/ })();
819
1282
  /******/
1283
+ /******/ /* webpack/runtime/make namespace object */
1284
+ /******/ (() => {
1285
+ /******/ // define __esModule on exports
1286
+ /******/ __webpack_require__.r = (exports) => {
1287
+ /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
1288
+ /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
1289
+ /******/ }
1290
+ /******/ Object.defineProperty(exports, '__esModule', { value: true });
1291
+ /******/ };
1292
+ /******/ })();
1293
+ /******/
820
1294
  /******/ /* webpack/runtime/nonce */
821
1295
  /******/ (() => {
822
1296
  /******/ __webpack_require__.nc = undefined;
@@ -824,351 +1298,25 @@ module.exports = styleTagTransform;
824
1298
  /******/
825
1299
  /************************************************************************/
826
1300
  var __webpack_exports__ = {};
1301
+ // This entry need to be wrapped in an IIFE because it uses a non-standard name for the exports (exports).
1302
+ (() => {
1303
+ var exports = __webpack_exports__;
1304
+ var __webpack_unused_export__;
827
1305
 
828
- // EXTERNAL MODULE: ./node_modules/react/jsx-runtime.js
829
- var jsx_runtime = __webpack_require__(848);
830
- // EXTERNAL MODULE: ./node_modules/react/index.js
831
- var react = __webpack_require__(540);
832
- // EXTERNAL MODULE: ./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js
833
- var injectStylesIntoStyleTag = __webpack_require__(72);
834
- var injectStylesIntoStyleTag_default = /*#__PURE__*/__webpack_require__.n(injectStylesIntoStyleTag);
835
- // EXTERNAL MODULE: ./node_modules/style-loader/dist/runtime/styleDomAPI.js
836
- var styleDomAPI = __webpack_require__(825);
837
- var styleDomAPI_default = /*#__PURE__*/__webpack_require__.n(styleDomAPI);
838
- // EXTERNAL MODULE: ./node_modules/style-loader/dist/runtime/insertBySelector.js
839
- var insertBySelector = __webpack_require__(659);
840
- var insertBySelector_default = /*#__PURE__*/__webpack_require__.n(insertBySelector);
841
- // EXTERNAL MODULE: ./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js
842
- var setAttributesWithoutAttributes = __webpack_require__(56);
843
- var setAttributesWithoutAttributes_default = /*#__PURE__*/__webpack_require__.n(setAttributesWithoutAttributes);
844
- // EXTERNAL MODULE: ./node_modules/style-loader/dist/runtime/insertStyleElement.js
845
- var insertStyleElement = __webpack_require__(159);
846
- var insertStyleElement_default = /*#__PURE__*/__webpack_require__.n(insertStyleElement);
847
- // EXTERNAL MODULE: ./node_modules/style-loader/dist/runtime/styleTagTransform.js
848
- var styleTagTransform = __webpack_require__(113);
849
- var styleTagTransform_default = /*#__PURE__*/__webpack_require__.n(styleTagTransform);
850
- // EXTERNAL MODULE: ./node_modules/css-loader/dist/cjs.js!./components/avatar/avatar.css
851
- var avatar = __webpack_require__(970);
852
- ;// ./components/avatar/avatar.css
853
-
854
-
855
-
856
-
857
-
858
-
859
-
860
-
861
-
862
-
863
-
864
- var options = {};
865
-
866
- options.styleTagTransform = (styleTagTransform_default());
867
- options.setAttributes = (setAttributesWithoutAttributes_default());
868
- options.insert = insertBySelector_default().bind(null, "head");
869
- options.domAPI = (styleDomAPI_default());
870
- options.insertStyleElement = (insertStyleElement_default());
871
-
872
- var update = injectStylesIntoStyleTag_default()(avatar/* default */.A, options);
873
-
874
-
875
-
876
-
877
- /* harmony default export */ const avatar_avatar = (avatar/* default */.A && avatar/* default */.A.locals ? avatar/* default */.A.locals : undefined);
878
-
879
- // EXTERNAL MODULE: ./node_modules/css-loader/dist/cjs.js!./components/badge/badge.css
880
- var badge = __webpack_require__(606);
881
- ;// ./components/badge/badge.css
882
-
883
-
884
-
885
-
886
-
887
-
888
-
889
-
890
-
891
-
892
-
893
- var badge_options = {};
894
-
895
- badge_options.styleTagTransform = (styleTagTransform_default());
896
- badge_options.setAttributes = (setAttributesWithoutAttributes_default());
897
- badge_options.insert = insertBySelector_default().bind(null, "head");
898
- badge_options.domAPI = (styleDomAPI_default());
899
- badge_options.insertStyleElement = (insertStyleElement_default());
900
-
901
- var badge_update = injectStylesIntoStyleTag_default()(badge/* default */.A, badge_options);
902
-
903
-
904
-
905
-
906
- /* harmony default export */ const badge_badge = (badge/* default */.A && badge/* default */.A.locals ? badge/* default */.A.locals : undefined);
907
-
908
- // EXTERNAL MODULE: ./node_modules/css-loader/dist/cjs.js!./styles/token/color.css
909
- var color = __webpack_require__(890);
910
- ;// ./styles/token/color.css
911
-
912
-
913
-
914
-
915
-
916
-
917
-
918
-
919
-
920
-
921
-
922
- var color_options = {};
923
-
924
- color_options.styleTagTransform = (styleTagTransform_default());
925
- color_options.setAttributes = (setAttributesWithoutAttributes_default());
926
- color_options.insert = insertBySelector_default().bind(null, "head");
927
- color_options.domAPI = (styleDomAPI_default());
928
- color_options.insertStyleElement = (insertStyleElement_default());
929
-
930
- var color_update = injectStylesIntoStyleTag_default()(color/* default */.A, color_options);
931
-
932
-
933
-
934
-
935
- /* harmony default export */ const token_color = (color/* default */.A && color/* default */.A.locals ? color/* default */.A.locals : undefined);
936
-
937
- // EXTERNAL MODULE: ./node_modules/css-loader/dist/cjs.js!./styles/token/font.css
938
- var font = __webpack_require__(476);
939
- ;// ./styles/token/font.css
940
-
941
-
942
-
943
-
944
-
945
-
946
-
947
-
948
-
949
-
950
-
951
- var font_options = {};
952
-
953
- font_options.styleTagTransform = (styleTagTransform_default());
954
- font_options.setAttributes = (setAttributesWithoutAttributes_default());
955
- font_options.insert = insertBySelector_default().bind(null, "head");
956
- font_options.domAPI = (styleDomAPI_default());
957
- font_options.insertStyleElement = (insertStyleElement_default());
958
-
959
- var font_update = injectStylesIntoStyleTag_default()(font/* default */.A, font_options);
960
-
961
-
962
-
963
-
964
- /* harmony default export */ const token_font = (font/* default */.A && font/* default */.A.locals ? font/* default */.A.locals : undefined);
965
1306
 
966
- ;// ./components/core/composer/index.tsx
967
- var __assign = undefined && undefined.__assign || function () {
968
- __assign = Object.assign || function (t) {
969
- for (var s, i = 1, n = arguments.length; i < n; i++) {
970
- s = arguments[i];
971
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
972
- }
973
- return t;
974
- };
975
- return __assign.apply(this, arguments);
976
- };
977
- var __rest = undefined && undefined.__rest || function (s, e) {
978
- var t = {};
979
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
980
- if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
981
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
982
- }
983
- return t;
984
- };
985
-
986
- function composeRefs() {
987
- var refs = [];
988
- for (var _i = 0; _i < arguments.length; _i++) {
989
- refs[_i] = arguments[_i];
990
- }
991
- return function (node) {
992
- refs.forEach(function (ref) {
993
- if (ref) {
994
- if (typeof ref === "function") {
995
- ref(node);
996
- } else {
997
- ref.current = node;
998
- }
999
- }
1000
- });
1001
- };
1002
- }
1003
- var composer_Composer = /*#__PURE__*/(0,react.forwardRef)(function (_a, ref) {
1004
- var children = _a.children,
1005
- composerProps = __rest(_a, ["children"]);
1006
- var childArray = react.Children.toArray(children);
1007
- if (childArray.length > 1) {
1008
- throw new Error("Composer can only have one child");
1009
- }
1010
- var isValidChild = /*#__PURE__*/(0,react.isValidElement)(childArray[0]);
1011
- if (!isValidChild) {
1012
- throw new Error("child should be React node!");
1013
- }
1014
- var child = childArray[0];
1015
- var childRef = getElementRef(child);
1016
- var mergedProps = mergeProps(composerProps, child.props);
1017
- return /*#__PURE__*/(0,react.cloneElement)(child, __assign(__assign({}, mergedProps), {
1018
- ref: ref ? composeRefs(ref, childRef) : childRef
1019
- }));
1307
+ __webpack_unused_export__ = ({
1308
+ value: true
1020
1309
  });
1021
- composer_Composer.displayName = "Composer";
1022
- function mergeProps(composerProps, childProps) {
1023
- var overrideProps = __assign({}, childProps);
1024
- var _loop_1 = function _loop_1(propName) {
1025
- var composerPropValue = composerProps[propName];
1026
- var childPropValue = childProps[propName];
1027
- var isHandler = /^on[A-Z]/.test(propName);
1028
- if (isHandler) {
1029
- if (composerPropValue && childPropValue) {
1030
- overrideProps[propName] = function () {
1031
- var args = [];
1032
- for (var _i = 0; _i < arguments.length; _i++) {
1033
- args[_i] = arguments[_i];
1034
- }
1035
- childPropValue.apply(void 0, args);
1036
- composerPropValue.apply(void 0, args);
1037
- };
1038
- } else if (composerPropValue) {
1039
- overrideProps[propName] = composerPropValue;
1040
- }
1041
- } else if (propName === "style") {
1042
- overrideProps[propName] = __assign(__assign({}, composerPropValue), childPropValue);
1043
- } else if (propName === "className") {
1044
- overrideProps[propName] = [composerPropValue, childPropValue].filter(Boolean).join(" ");
1045
- }
1046
- };
1047
- for (var propName in composerProps) {
1048
- _loop_1(propName);
1049
- }
1050
- return __assign(__assign({}, composerProps), overrideProps);
1051
- }
1052
- function getElementRef(element) {
1053
- var _a, _b;
1054
- var getter = (_a = Object.getOwnPropertyDescriptor(element.props, "ref")) === null || _a === void 0 ? void 0 : _a.get;
1055
- var mayWarn = getter && "isReactWarning" in getter && getter.isReactWarning;
1056
- if (mayWarn) {
1057
- return element.ref;
1310
+ __webpack_unused_export__ = void 0;
1311
+ var avatar_1 = __webpack_require__(950);
1312
+ __webpack_unused_export__ = ({
1313
+ enumerable: true,
1314
+ get: function get() {
1315
+ return avatar_1.Avatar;
1058
1316
  }
1059
- getter = (_b = Object.getOwnPropertyDescriptor(element, "ref")) === null || _b === void 0 ? void 0 : _b.get;
1060
- mayWarn = getter && "isReactWarning" in getter && getter.isReactWarning;
1061
- if (mayWarn) {
1062
- return element.props.ref;
1063
- }
1064
- return element.props.ref || element.ref;
1065
- }
1066
- /* harmony default export */ const composer = ((/* unused pure expression or super */ null && (composer_Composer)));
1067
- ;// ./components/badge/badge.tsx
1068
- var badge_assign = undefined && undefined.__assign || function () {
1069
- badge_assign = Object.assign || function (t) {
1070
- for (var s, i = 1, n = arguments.length; i < n; i++) {
1071
- s = arguments[i];
1072
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
1073
- }
1074
- return t;
1075
- };
1076
- return badge_assign.apply(this, arguments);
1077
- };
1078
-
1079
-
1080
-
1081
-
1082
-
1083
- var badge_BaseBadge = function BaseBadge(props) {
1084
- var _a = props.asChild,
1085
- asChild = _a === void 0 ? false : _a,
1086
- borderColor = props.borderColor,
1087
- _b = props.textColor,
1088
- textColor = _b === void 0 ? "black" : _b,
1089
- backgroundColor = props.backgroundColor,
1090
- _c = props.size,
1091
- size = _c === void 0 ? "l" : _c,
1092
- style = props.style,
1093
- children = props.children,
1094
- className = props.className;
1095
- var Comp = asChild ? Composer : "div";
1096
- var composedClassName = "nuri-theme base-badge ".concat(size, " border-").concat(borderColor, " text-").concat(textColor, " background-").concat(backgroundColor, " ").concat(className);
1097
- return _jsx(Comp, {
1098
- style: style,
1099
- className: composedClassName,
1100
- children: children
1101
- });
1102
- };
1103
- var OptionBadge = function OptionBadge(props) {
1104
- var option = props.option;
1105
- return _jsx(badge_BaseBadge, badge_assign({}, props, {
1106
- children: option
1107
- }));
1108
- };
1109
- var IconTextBadge = function IconTextBadge(props) {
1110
- var icon = props.icon,
1111
- text = props.text;
1112
- return _jsxs(badge_BaseBadge, badge_assign({}, props, {
1113
- children: [icon, _jsx("span", {
1114
- children: text
1115
- })]
1116
- }));
1117
- };
1118
- var IconTextOptionBadge = function IconTextOptionBadge(props) {
1119
- var icon = props.icon,
1120
- text = props.text,
1121
- option = props.option;
1122
- return _jsxs(badge_BaseBadge, badge_assign({}, props, {
1123
- className: "icon-text-option",
1124
- children: [_jsxs("span", {
1125
- children: [icon, _jsx("span", {
1126
- children: text
1127
- })]
1128
- }), option]
1129
- }));
1130
- };
1131
- ;// ./components/avatar/avatar.tsx
1132
-
1133
-
1134
-
1135
-
1136
- var Avatar = function Avatar(props) {
1137
- var size = props.size,
1138
- src = props.src,
1139
- alt = props.alt,
1140
- badgeOption = props.badgeOption;
1141
- var _a = useState(false),
1142
- isImageDownload = _a[0],
1143
- setIsImageDownload = _a[1];
1144
- return _jsxs("div", {
1145
- className: "avatar ".concat(size),
1146
- children: [_jsx("img", {
1147
- src: src,
1148
- alt: alt !== null && alt !== void 0 ? alt : "avatar",
1149
- className: "avatar ".concat(size, " ").concat(!isImageDownload ? "hidden" : ""),
1150
- onLoad: function onLoad() {
1151
- return setIsImageDownload(true);
1152
- }
1153
- }), !isImageDownload && _jsx("div", {
1154
- className: "avatar avatar-skeleton ".concat(size),
1155
- children: _jsx("div", {
1156
- className: "avatar skeleton-animation"
1157
- })
1158
- }), _jsx(BaseBadge, {
1159
- asChild: true,
1160
- style: {
1161
- position: "absolute",
1162
- right: "0",
1163
- bottom: "0"
1164
- },
1165
- children: badgeOption
1166
- })]
1167
- });
1168
- };
1169
- /* harmony default export */ const components_avatar_avatar = ((/* unused pure expression or super */ null && (Avatar)));
1170
- ;// ./index.ts
1317
+ });
1318
+ })();
1171
1319
 
1172
1320
  /******/ })()
1173
1321
  ;
1174
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUFNLEVBQUUsU0FBUkEsTUFBTUEsQ0FBQSxFQUFFO1FBQU0sT0FBQUQsa0JBQWtCLENBQUMsSUFBSSxDQUFDO01BQXhCO0lBQXdCLEVBQ3RDLEVBQ0QsQ0FBQ0QsZUFBZSxJQUNmYixJQUFBO01BQUtKLFNBQVMsRUFBRSwwQkFBQUcsTUFBQSxDQUEwQkwsSUFBSSxDQUFFO01BQUF6QyxRQUFBLEVBQzlDK0MsSUFBQTtRQUFLSixTQUFTLEVBQUM7TUFBMkI7SUFBRyxFQUVoRCxFQUVESSxJQUFBLENBQUNaLFNBQVM7TUFDUkMsT0FBTztNQUNQTSxLQUFLLEVBQUU7UUFDTHFCLFFBQVEsRUFBRSxVQUFVO1FBQ3BCQyxLQUFLLEVBQUUsR0FBRztRQUNWQyxNQUFNLEVBQUU7T0FDVDtNQUFBakUsUUFBQSxFQUVBMkQ7SUFBVyxFQUNGO0VBQUEsRUFDUjtBQUVWLENBQUM7QUFFRCwrREFBZUgsZ0RBQUFBLE1BQU0iLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9AbnVyaWhhdXMvd2ViLWRlc2lnbi1zeXN0ZW0vLi9jb21wb25lbnRzL2F2YXRhci9hdmF0YXIuY3NzIiwid2VicGFjazovL0BudXJpaGF1cy93ZWItZGVzaWduLXN5c3RlbS8uL2NvbXBvbmVudHMvYmFkZ2UvYmFkZ2UuY3NzIiwid2VicGFjazovL0BudXJpaGF1cy93ZWItZGVzaWduLXN5c3RlbS8uL3N0eWxlcy90b2tlbi9jb2xvci5jc3MiLCJ3ZWJwYWNrOi8vQG51cmloYXVzL3dlYi1kZXNpZ24tc3lzdGVtLy4vc3R5bGVzL3Rva2VuL2ZvbnQuY3NzIiwid2VicGFjazovL0BudXJpaGF1cy93ZWItZGVzaWduLXN5c3RlbS8uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanMiLCJ3ZWJwYWNrOi8vQG51cmloYXVzL3dlYi1kZXNpZ24tc3lzdGVtLy4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL3NvdXJjZU1hcHMuanMiLCJ3ZWJwYWNrOi8vQG51cmloYXVzL3dlYi1kZXNpZ24tc3lzdGVtLy4vbm9kZV9tb2R1bGVzL3JlYWN0L2Nqcy9yZWFjdC1qc3gtcnVudGltZS5wcm9kdWN0aW9uLm1pbi5qcyIsIndlYnBhY2s6Ly9AbnVyaWhhdXMvd2ViLWRlc2lnbi1zeXN0ZW0vLi9ub2RlX21vZHVsZXMvcmVhY3QvY2pzL3JlYWN0LnByb2R1Y3Rpb24ubWluLmpzIiwid2VicGFjazovL0BudXJpaGF1cy93ZWItZGVzaWduLXN5c3RlbS8uL25vZGVfbW9kdWxlcy9yZWFjdC9pbmRleC5qcyIsIndlYnBhY2s6Ly9AbnVyaWhhdXMvd2ViLWRlc2lnbi1zeXN0ZW0vLi9ub2RlX21vZHVsZXMvcmVhY3QvanN4LXJ1bnRpbWUuanMiLCJ3ZWJwYWNrOi8vQG51cmloYXVzL3dlYi1kZXNpZ24tc3lzdGVtLy4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzIiwid2VicGFjazovL0BudXJpaGF1cy93ZWItZGVzaWduLXN5c3RlbS8uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydEJ5U2VsZWN0b3IuanMiLCJ3ZWJwYWNrOi8vQG51cmloYXVzL3dlYi1kZXNpZ24tc3lzdGVtLy4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzIiwid2VicGFjazovL0BudXJpaGF1cy93ZWItZGVzaWduLXN5c3RlbS8uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qcyIsIndlYnBhY2s6Ly9AbnVyaWhhdXMvd2ViLWRlc2lnbi1zeXN0ZW0vLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZURvbUFQSS5qcyIsIndlYnBhY2s6Ly9AbnVyaWhhdXMvd2ViLWRlc2lnbi1zeXN0ZW0vLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZVRhZ1RyYW5zZm9ybS5qcyIsIndlYnBhY2s6Ly9AbnVyaWhhdXMvd2ViLWRlc2lnbi1zeXN0ZW0vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vQG51cmloYXVzL3dlYi1kZXNpZ24tc3lzdGVtL3dlYnBhY2svcnVudGltZS9jb21wYXQgZ2V0IGRlZmF1bHQgZXhwb3J0Iiwid2VicGFjazovL0BudXJpaGF1cy93ZWItZGVzaWduLXN5c3RlbS93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vQG51cmloYXVzL3dlYi1kZXNpZ24tc3lzdGVtL3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQiLCJ3ZWJwYWNrOi8vQG51cmloYXVzL3dlYi1kZXNpZ24tc3lzdGVtL3dlYnBhY2svcnVudGltZS9ub25jZSIsIndlYnBhY2s6Ly9AbnVyaWhhdXMvd2ViLWRlc2lnbi1zeXN0ZW0vLi9jb21wb25lbnRzL2F2YXRhci9hdmF0YXIuY3NzPzZiYWMiLCJ3ZWJwYWNrOi8vQG51cmloYXVzL3dlYi1kZXNpZ24tc3lzdGVtLy4vY29tcG9uZW50cy9iYWRnZS9iYWRnZS5jc3M/OTUzOCIsIndlYnBhY2s6Ly9AbnVyaWhhdXMvd2ViLWRlc2lnbi1zeXN0ZW0vLi9zdHlsZXMvdG9rZW4vY29sb3IuY3NzPzY2Y2EiLCJ3ZWJwYWNrOi8vQG51cmloYXVzL3dlYi1kZXNpZ24tc3lzdGVtLy4vc3R5bGVzL3Rva2VuL2ZvbnQuY3NzPzc2YmIiLCJ3ZWJwYWNrOi8vQG51cmloYXVzL3dlYi1kZXNpZ24tc3lzdGVtLy4vY29tcG9uZW50cy9jb3JlL2NvbXBvc2VyL2luZGV4LnRzeCIsIndlYnBhY2s6Ly9AbnVyaWhhdXMvd2ViLWRlc2lnbi1zeXN0ZW0vLi9jb21wb25lbnRzL2JhZGdlL2JhZGdlLnRzeCIsIndlYnBhY2s6Ly9AbnVyaWhhdXMvd2ViLWRlc2lnbi1zeXN0ZW0vLi9jb21wb25lbnRzL2F2YXRhci9hdmF0YXIudHN4Iiwid2VicGFjazovL0BudXJpaGF1cy93ZWItZGVzaWduLXN5c3RlbS8uL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvc291cmNlTWFwcy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIGAuYXZhdGFyIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAmIGRpdiB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICB9XG5cbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuXG4gICY6d2hlcmUoLnhsKSB7XG4gICAgd2lkdGg6IDEyNHB4O1xuICAgIGhlaWdodDogMTI0cHg7XG4gIH1cblxuICAmOndoZXJlKC5sKSB7XG4gICAgd2lkdGg6IDc0cHg7XG4gICAgaGVpZ2h0OiA3NHB4O1xuICB9XG5cbiAgJjp3aGVyZSgubSkge1xuICAgIHdpZHRoOiA1OHB4O1xuICAgIGhlaWdodDogNThweDtcbiAgfVxuXG4gICY6d2hlcmUoLnMpIHtcbiAgICB3aWR0aDogNDBweDtcbiAgICBoZWlnaHQ6IDQwcHg7XG4gIH1cblxuICAuYXZhdGFyLXNrZWxldG9uIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNlMGUwZTA7XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcblxuICAgIC5za2VsZXRvbi1hbmltYXRpb24ge1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoXG4gICAgICAgIDkwZGVnLFxuICAgICAgICByZ2JhKDI1NSwgMjU1LCAyNTUsIDApIDAlLFxuICAgICAgICByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNCkgNTAlLFxuICAgICAgICByZ2JhKDI1NSwgMjU1LCAyNTUsIDApIDEwMCVcbiAgICAgICk7XG4gICAgICBhbmltYXRpb246IHNoaW1tZXIgMS41cyBpbmZpbml0ZTtcbiAgICB9XG4gIH1cbn1cblxuQGtleWZyYW1lcyBzaGltbWVyIHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTAwJSk7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpO1xuICB9XG59XG5gLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL2NvbXBvbmVudHMvYXZhdGFyL2F2YXRhci5jc3NcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBQUE7RUFDRSxrQkFBa0I7RUFDbEI7SUFDRSxrQkFBa0I7SUFDbEIsYUFBYTtJQUNiLG1CQUFtQjtJQUNuQix1QkFBdUI7SUFDdkIsZ0JBQWdCO0VBQ2xCOztFQUVBLGtCQUFrQjs7RUFFbEI7SUFDRSxZQUFZO0lBQ1osYUFBYTtFQUNmOztFQUVBO0lBQ0UsV0FBVztJQUNYLFlBQVk7RUFDZDs7RUFFQTtJQUNFLFdBQVc7SUFDWCxZQUFZO0VBQ2Q7O0VBRUE7SUFDRSxXQUFXO0lBQ1gsWUFBWTtFQUNkOztFQUVBO0lBQ0Usa0JBQWtCO0lBQ2xCLE1BQU07SUFDTixPQUFPO0lBQ1AsV0FBVztJQUNYLFlBQVk7SUFDWix5QkFBeUI7SUFDekIsa0JBQWtCO0lBQ2xCLFdBQVc7SUFDWCxZQUFZOztJQUVaO01BQ0UsV0FBVztNQUNYLFlBQVk7TUFDWjs7Ozs7T0FLQztNQUNELGdDQUFnQztJQUNsQztFQUNGO0FBQ0Y7O0FBRUE7RUFDRTtJQUNFLDRCQUE0QjtFQUM5QjtFQUNBO0lBQ0UsMkJBQTJCO0VBQzdCO0FBQ0ZcIixcInNvdXJjZXNDb250ZW50XCI6W1wiLmF2YXRhciB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICAmIGRpdiB7XFxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuICAgIG92ZXJmbG93OiBoaWRkZW47XFxuICB9XFxuXFxuICBib3JkZXItcmFkaXVzOiA1MCU7XFxuXFxuICAmOndoZXJlKC54bCkge1xcbiAgICB3aWR0aDogMTI0cHg7XFxuICAgIGhlaWdodDogMTI0cHg7XFxuICB9XFxuXFxuICAmOndoZXJlKC5sKSB7XFxuICAgIHdpZHRoOiA3NHB4O1xcbiAgICBoZWlnaHQ6IDc0cHg7XFxuICB9XFxuXFxuICAmOndoZXJlKC5tKSB7XFxuICAgIHdpZHRoOiA1OHB4O1xcbiAgICBoZWlnaHQ6IDU4cHg7XFxuICB9XFxuXFxuICAmOndoZXJlKC5zKSB7XFxuICAgIHdpZHRoOiA0MHB4O1xcbiAgICBoZWlnaHQ6IDQwcHg7XFxuICB9XFxuXFxuICAuYXZhdGFyLXNrZWxldG9uIHtcXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICB0b3A6IDA7XFxuICAgIGxlZnQ6IDA7XFxuICAgIHdpZHRoOiAxMDAlO1xcbiAgICBoZWlnaHQ6IDEwMCU7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICNlMGUwZTA7XFxuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcXG4gICAgd2lkdGg6IDEwMCU7XFxuICAgIGhlaWdodDogMTAwJTtcXG5cXG4gICAgLnNrZWxldG9uLWFuaW1hdGlvbiB7XFxuICAgICAgd2lkdGg6IDEwMCU7XFxuICAgICAgaGVpZ2h0OiAxMDAlO1xcbiAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudChcXG4gICAgICAgIDkwZGVnLFxcbiAgICAgICAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwKSAwJSxcXG4gICAgICAgIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC40KSA1MCUsXFxuICAgICAgICByZ2JhKDI1NSwgMjU1LCAyNTUsIDApIDEwMCVcXG4gICAgICApO1xcbiAgICAgIGFuaW1hdGlvbjogc2hpbW1lciAxLjVzIGluZmluaXRlO1xcbiAgICB9XFxuICB9XFxufVxcblxcbkBrZXlmcmFtZXMgc2hpbW1lciB7XFxuICAwJSB7XFxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTAwJSk7XFxuICB9XFxuICAxMDAlIHtcXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpO1xcbiAgfVxcbn1cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9zb3VyY2VNYXBzLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgYC5iYXNlLWJhZGdlIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGdhcDogNHB4O1xuXG4gIGJvcmRlci1yYWRpdXM6IDQwcHg7XG5cbiAgJjp3aGVyZSgubCkge1xuICAgIGhlaWdodDogNDhweDtcblxuICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXNtKTtcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tbGluZS1oZWlnaHQtc20pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1zZW1pYm9sZCk7XG4gIH1cblxuICAmOndoZXJlKC5tKSB7XG4gICAgaGVpZ2h0OiA0MHB4O1xuXG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtc20pO1xuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1saW5lLWhlaWdodC1zbSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LXNlbWlib2xkKTtcbiAgfVxuXG4gICY6d2hlcmUoLnIpIHtcbiAgICBoZWlnaHQ6IDM2cHg7XG5cbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1zbSk7XG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLWxpbmUtaGVpZ2h0LXNtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtc2VtaWJvbGQpO1xuICB9XG5cbiAgJjp3aGVyZSgucykge1xuICAgIGhlaWdodDogMzJweDtcblxuICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXNtKTtcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tbGluZS1oZWlnaHQtc20pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1ib2xkKTtcbiAgfVxuXG4gICY6d2hlcmUoLnNtKSB7XG4gICAgaGVpZ2h0OiAyOHB4O1xuXG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUteHNtKTtcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tbGluZS1oZWlnaHQteHNtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtYm9sZCk7XG4gIH1cblxuICAmW2NsYXNzKj1cImJhY2tncm91bmQtXCJdIHtcbiAgICAmLmJhY2tncm91bmQtYmxhY2sge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS1ibGFjayk7XG4gICAgfVxuICAgICYuYmFja2dyb3VuZC13aGl0ZSB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5LXdoaXRlKTtcbiAgICB9XG4gICAgJi5iYWNrZ3JvdW5kLWdyYXlGYSB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5LWdyYXktZmEpO1xuICAgIH1cbiAgICAmLmJhY2tncm91bmQtcHVycGxlMzkge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItcG9pbnQtcHVycGxlLTM5KTtcbiAgICB9XG4gIH1cblxuICAmW2NsYXNzKj1cInRleHQtXCJdIHtcbiAgICAmLnRleHQtYmxhY2sge1xuICAgICAgY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnktYmxhY2spO1xuICAgIH1cbiAgICAmLnRleHQtd2hpdGUge1xuICAgICAgY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnktd2hpdGUpO1xuICAgIH1cbiAgICAmLnRleHQtZ3JheUZhIHtcbiAgICAgIGNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5LWdyYXktZmEpO1xuICAgIH1cbiAgICAmLnRleHQtcHVycGxlMzkge1xuICAgICAgY29sb3I6IHZhcigtLWNvbG9yLXBvaW50LXB1cnBsZS0zOSk7XG4gICAgfVxuICB9XG5cbiAgJltjbGFzcyo9XCJib3JkZXItXCJdIHtcbiAgICAmLmJvcmRlci1ibGFjayB7XG4gICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jb2xvci1wcmltYXJ5LWJsYWNrKTtcbiAgICB9XG4gICAgJi5ib3JkZXItd2hpdGUge1xuICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY29sb3ItcHJpbWFyeS13aGl0ZSk7XG4gICAgfVxuICAgICYuYm9yZGVyLWdyYXlGYSB7XG4gICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jb2xvci1wcmltYXJ5LWdyYXktZmEpO1xuICAgIH1cbiAgICAmLmJvcmRlci1wdXJwbGUzOSB7XG4gICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jb2xvci1wb2ludC1wdXJwbGUtMzkpO1xuICAgIH1cbiAgfVxuXG4gICYuaWNvbi10ZXh0LW9wdGlvbiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcblxuICAgIHBhZGRpbmc6IDAgMjBweDtcbiAgfVxuXG4gICYuaWNvbi10ZXh0LW9wdGlvbiA+IHNwYW4ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDRweDtcbiAgfVxufVxuYCwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9jb21wb25lbnRzL2JhZGdlL2JhZGdlLmNzc1wiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFBQTtFQUNFLGFBQWE7RUFDYixtQkFBbUI7RUFDbkIsdUJBQXVCO0VBQ3ZCLFFBQVE7O0VBRVIsbUJBQW1COztFQUVuQjtJQUNFLFlBQVk7O0lBRVosOEJBQThCO0lBQzlCLGtDQUFrQztJQUNsQyx3Q0FBd0M7RUFDMUM7O0VBRUE7SUFDRSxZQUFZOztJQUVaLDhCQUE4QjtJQUM5QixrQ0FBa0M7SUFDbEMsd0NBQXdDO0VBQzFDOztFQUVBO0lBQ0UsWUFBWTs7SUFFWiw4QkFBOEI7SUFDOUIsa0NBQWtDO0lBQ2xDLHdDQUF3QztFQUMxQzs7RUFFQTtJQUNFLFlBQVk7O0lBRVosOEJBQThCO0lBQzlCLGtDQUFrQztJQUNsQyxvQ0FBb0M7RUFDdEM7O0VBRUE7SUFDRSxZQUFZOztJQUVaLCtCQUErQjtJQUMvQixtQ0FBbUM7SUFDbkMsb0NBQW9DO0VBQ3RDOztFQUVBO0lBQ0U7TUFDRSw0Q0FBNEM7SUFDOUM7SUFDQTtNQUNFLDRDQUE0QztJQUM5QztJQUNBO01BQ0UsOENBQThDO0lBQ2hEO0lBQ0E7TUFDRSw4Q0FBOEM7SUFDaEQ7RUFDRjs7RUFFQTtJQUNFO01BQ0UsaUNBQWlDO0lBQ25DO0lBQ0E7TUFDRSxpQ0FBaUM7SUFDbkM7SUFDQTtNQUNFLG1DQUFtQztJQUNyQztJQUNBO01BQ0UsbUNBQW1DO0lBQ3JDO0VBQ0Y7O0VBRUE7SUFDRTtNQUNFLDRDQUE0QztJQUM5QztJQUNBO01BQ0UsNENBQTRDO0lBQzlDO0lBQ0E7TUFDRSw4Q0FBOEM7SUFDaEQ7SUFDQTtNQUNFLDhDQUE4QztJQUNoRDtFQUNGOztFQUVBO0lBQ0UsYUFBYTtJQUNiLG1CQUFtQjtJQUNuQiw4QkFBOEI7O0lBRTlCLGVBQWU7RUFDakI7O0VBRUE7SUFDRSxhQUFhO0lBQ2IsbUJBQW1CO0lBQ25CLFFBQVE7RUFDVjtBQUNGXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIi5iYXNlLWJhZGdlIHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuICBnYXA6IDRweDtcXG5cXG4gIGJvcmRlci1yYWRpdXM6IDQwcHg7XFxuXFxuICAmOndoZXJlKC5sKSB7XFxuICAgIGhlaWdodDogNDhweDtcXG5cXG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtc20pO1xcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tbGluZS1oZWlnaHQtc20pO1xcbiAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtc2VtaWJvbGQpO1xcbiAgfVxcblxcbiAgJjp3aGVyZSgubSkge1xcbiAgICBoZWlnaHQ6IDQwcHg7XFxuXFxuICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXNtKTtcXG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLWxpbmUtaGVpZ2h0LXNtKTtcXG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LXNlbWlib2xkKTtcXG4gIH1cXG5cXG4gICY6d2hlcmUoLnIpIHtcXG4gICAgaGVpZ2h0OiAzNnB4O1xcblxcbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1zbSk7XFxuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1saW5lLWhlaWdodC1zbSk7XFxuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1zZW1pYm9sZCk7XFxuICB9XFxuXFxuICAmOndoZXJlKC5zKSB7XFxuICAgIGhlaWdodDogMzJweDtcXG5cXG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtc20pO1xcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tbGluZS1oZWlnaHQtc20pO1xcbiAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtYm9sZCk7XFxuICB9XFxuXFxuICAmOndoZXJlKC5zbSkge1xcbiAgICBoZWlnaHQ6IDI4cHg7XFxuXFxuICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXhzbSk7XFxuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1saW5lLWhlaWdodC14c20pO1xcbiAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtYm9sZCk7XFxuICB9XFxuXFxuICAmW2NsYXNzKj1cXFwiYmFja2dyb3VuZC1cXFwiXSB7XFxuICAgICYuYmFja2dyb3VuZC1ibGFjayB7XFxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS1ibGFjayk7XFxuICAgIH1cXG4gICAgJi5iYWNrZ3JvdW5kLXdoaXRlIHtcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5LXdoaXRlKTtcXG4gICAgfVxcbiAgICAmLmJhY2tncm91bmQtZ3JheUZhIHtcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5LWdyYXktZmEpO1xcbiAgICB9XFxuICAgICYuYmFja2dyb3VuZC1wdXJwbGUzOSB7XFxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItcG9pbnQtcHVycGxlLTM5KTtcXG4gICAgfVxcbiAgfVxcblxcbiAgJltjbGFzcyo9XFxcInRleHQtXFxcIl0ge1xcbiAgICAmLnRleHQtYmxhY2sge1xcbiAgICAgIGNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5LWJsYWNrKTtcXG4gICAgfVxcbiAgICAmLnRleHQtd2hpdGUge1xcbiAgICAgIGNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5LXdoaXRlKTtcXG4gICAgfVxcbiAgICAmLnRleHQtZ3JheUZhIHtcXG4gICAgICBjb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS1ncmF5LWZhKTtcXG4gICAgfVxcbiAgICAmLnRleHQtcHVycGxlMzkge1xcbiAgICAgIGNvbG9yOiB2YXIoLS1jb2xvci1wb2ludC1wdXJwbGUtMzkpO1xcbiAgICB9XFxuICB9XFxuXFxuICAmW2NsYXNzKj1cXFwiYm9yZGVyLVxcXCJdIHtcXG4gICAgJi5ib3JkZXItYmxhY2sge1xcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNvbG9yLXByaW1hcnktYmxhY2spO1xcbiAgICB9XFxuICAgICYuYm9yZGVyLXdoaXRlIHtcXG4gICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jb2xvci1wcmltYXJ5LXdoaXRlKTtcXG4gICAgfVxcbiAgICAmLmJvcmRlci1ncmF5RmEge1xcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNvbG9yLXByaW1hcnktZ3JheS1mYSk7XFxuICAgIH1cXG4gICAgJi5ib3JkZXItcHVycGxlMzkge1xcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNvbG9yLXBvaW50LXB1cnBsZS0zOSk7XFxuICAgIH1cXG4gIH1cXG5cXG4gICYuaWNvbi10ZXh0LW9wdGlvbiB7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcXG5cXG4gICAgcGFkZGluZzogMCAyMHB4O1xcbiAgfVxcblxcbiAgJi5pY29uLXRleHQtb3B0aW9uID4gc3BhbiB7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICAgIGdhcDogNHB4O1xcbiAgfVxcbn1cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9zb3VyY2VNYXBzLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgYC5udXJpLXRoZW1lIHtcbiAgLS1jb2xvci1wcmltYXJ5LWJsYWNrOiAjMDAwMDAwO1xuICAtLWNvbG9yLXByaW1hcnktd2hpdGU6ICNmZmZmZmY7XG4gIC0tY29sb3ItcHJpbWFyeS1ncmF5LWZhOiAjZmFmYWZhO1xuICAtLWNvbG9yLXByaW1hcnktZ3JheS1mNDogI2Y0ZjRmNTtcbiAgLS1jb2xvci1wcmltYXJ5LWdyYXktZTQ6ICNlNGU0ZTc7XG4gIC0tY29sb3ItcHJpbWFyeS1ncmF5LWQ0OiAjZDRkNGQ4O1xuICAtLWNvbG9yLXByaW1hcnktZ3JheS1hMTogI2ExYTFhYTtcbiAgLS1jb2xvci1wcmltYXJ5LWdyYXktNzE6ICM3MTcxN2E7XG4gIC0tY29sb3ItcHJpbWFyeS1ncmF5LTUyOiAjNTI1MjViO1xuICAtLWNvbG9yLXByaW1hcnktZ3JheS0zZjogIzNmM2Y0NjtcbiAgLS1jb2xvci1wcmltYXJ5LWdyYXktMjc6ICMyNzI3MmE7XG4gIC0tY29sb3ItcHJpbWFyeS1ncmF5LTE4OiAjMTgxODFiO1xuXG4gIC0tY29sb3ItcG9pbnQtcHVycGxlLTM5OiAjMzkxZDVkO1xuICAtLWNvbG9yLXBvaW50LXB1cnBsZS00YzogIzRjMjc3YztcbiAgLS1jb2xvci1wb2ludC1wdXJwbGUtZGQ6ICNkZGQxZjA7XG4gIC0tY29sb3ItcG9pbnQtcHVycGxlLWU5OiAjZTllMGY1O1xuICAtLWNvbG9yLXBvaW50LXB1cnBsZS1mNDogI2Y0ZWZmYTtcbiAgLS1jb2xvci1wb2ludC1wdXJwbGUtNDE6ICM0YzFkODg7XG4gIC0tY29sb3ItcG9pbnQtcHVycGxlLTk1OiAjOTU3ZWI0O1xuXG4gIC0tY29sb3ItYWNjZW50LXJlZC1kZjogI2RmNTM1YztcbiAgLS1jb2xvci1hY2NlbnQtbWFnZW50YS1iMDogI2IwMmU0YztcbiAgLS1jb2xvci1hY2NlbnQtZ3JlZW4tMjg6ICMyODlhM2E7XG5cbiAgLS1jb2xvci1ldGMtc2tlbGV0b24tZTQ6ICNlNGU0ZTc7XG4gIC0tY29sb3ItZXRjLXNrZWxldG9uLWY3OiAjZjdmN2Y4O1xuICAtLWNvbG9yLWV0Yy1za2VsZXRvbi1mZjogI2ZmZmZmZjtcblxuICAtLWNvbG9yLWV0Yy1ob3Zlci1lZTogI2VlZWVlZTtcbn1cbmAsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vc3R5bGVzL3Rva2VuL2NvbG9yLmNzc1wiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFBQTtFQUNFLDhCQUE4QjtFQUM5Qiw4QkFBOEI7RUFDOUIsZ0NBQWdDO0VBQ2hDLGdDQUFnQztFQUNoQyxnQ0FBZ0M7RUFDaEMsZ0NBQWdDO0VBQ2hDLGdDQUFnQztFQUNoQyxnQ0FBZ0M7RUFDaEMsZ0NBQWdDO0VBQ2hDLGdDQUFnQztFQUNoQyxnQ0FBZ0M7RUFDaEMsZ0NBQWdDOztFQUVoQyxnQ0FBZ0M7RUFDaEMsZ0NBQWdDO0VBQ2hDLGdDQUFnQztFQUNoQyxnQ0FBZ0M7RUFDaEMsZ0NBQWdDO0VBQ2hDLGdDQUFnQztFQUNoQyxnQ0FBZ0M7O0VBRWhDLDhCQUE4QjtFQUM5QixrQ0FBa0M7RUFDbEMsZ0NBQWdDOztFQUVoQyxnQ0FBZ0M7RUFDaEMsZ0NBQWdDO0VBQ2hDLGdDQUFnQzs7RUFFaEMsNkJBQTZCO0FBQy9CXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIi5udXJpLXRoZW1lIHtcXG4gIC0tY29sb3ItcHJpbWFyeS1ibGFjazogIzAwMDAwMDtcXG4gIC0tY29sb3ItcHJpbWFyeS13aGl0ZTogI2ZmZmZmZjtcXG4gIC0tY29sb3ItcHJpbWFyeS1ncmF5LWZhOiAjZmFmYWZhO1xcbiAgLS1jb2xvci1wcmltYXJ5LWdyYXktZjQ6ICNmNGY0ZjU7XFxuICAtLWNvbG9yLXByaW1hcnktZ3JheS1lNDogI2U0ZTRlNztcXG4gIC0tY29sb3ItcHJpbWFyeS1ncmF5LWQ0OiAjZDRkNGQ4O1xcbiAgLS1jb2xvci1wcmltYXJ5LWdyYXktYTE6ICNhMWExYWE7XFxuICAtLWNvbG9yLXByaW1hcnktZ3JheS03MTogIzcxNzE3YTtcXG4gIC0tY29sb3ItcHJpbWFyeS1ncmF5LTUyOiAjNTI1MjViO1xcbiAgLS1jb2xvci1wcmltYXJ5LWdyYXktM2Y6ICMzZjNmNDY7XFxuICAtLWNvbG9yLXByaW1hcnktZ3JheS0yNzogIzI3MjcyYTtcXG4gIC0tY29sb3ItcHJpbWFyeS1ncmF5LTE4OiAjMTgxODFiO1xcblxcbiAgLS1jb2xvci1wb2ludC1wdXJwbGUtMzk6ICMzOTFkNWQ7XFxuICAtLWNvbG9yLXBvaW50LXB1cnBsZS00YzogIzRjMjc3YztcXG4gIC0tY29sb3ItcG9pbnQtcHVycGxlLWRkOiAjZGRkMWYwO1xcbiAgLS1jb2xvci1wb2ludC1wdXJwbGUtZTk6ICNlOWUwZjU7XFxuICAtLWNvbG9yLXBvaW50LXB1cnBsZS1mNDogI2Y0ZWZmYTtcXG4gIC0tY29sb3ItcG9pbnQtcHVycGxlLTQxOiAjNGMxZDg4O1xcbiAgLS1jb2xvci1wb2ludC1wdXJwbGUtOTU6ICM5NTdlYjQ7XFxuXFxuICAtLWNvbG9yLWFjY2VudC1yZWQtZGY6ICNkZjUzNWM7XFxuICAtLWNvbG9yLWFjY2VudC1tYWdlbnRhLWIwOiAjYjAyZTRjO1xcbiAgLS1jb2xvci1hY2NlbnQtZ3JlZW4tMjg6ICMyODlhM2E7XFxuXFxuICAtLWNvbG9yLWV0Yy1za2VsZXRvbi1lNDogI2U0ZTRlNztcXG4gIC0tY29sb3ItZXRjLXNrZWxldG9uLWY3OiAjZjdmN2Y4O1xcbiAgLS1jb2xvci1ldGMtc2tlbGV0b24tZmY6ICNmZmZmZmY7XFxuXFxuICAtLWNvbG9yLWV0Yy1ob3Zlci1lZTogI2VlZWVlZTtcXG59XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvc291cmNlTWFwcy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIGAubnVyaS10aGVtZSB7XG4gIC0tZm9udC1zaXplLXhzbTogMTJweDtcbiAgLS1mb250LXNpemUtc206IDE0cHg7XG4gIC0tZm9udC1zaXplLWJhc2U6IDE2cHg7XG4gIC0tZm9udC1zaXplLWxnOiAxOHB4O1xuICAtLWZvbnQtc2l6ZS14bDogMjBweDtcbiAgLS1mb250LXNpemUtMnhsOiAyNHB4O1xuICAtLWZvbnQtc2l6ZS0zeGw6IDMwcHg7XG4gIC0tZm9udC1zaXplLTR4bDogMzZweDtcbiAgLS1mb250LXNpemUtNXhsOiA0OHB4O1xuICAtLWZvbnQtc2l6ZS02eGw6IDYwcHg7XG5cbiAgLS1saW5lLWhlaWdodC14c206IDE4cHg7XG4gIC0tbGluZS1oZWlnaHQtc206IDE4cHg7XG4gIC0tbGluZS1oZWlnaHQtYmFzZTogMjJweDtcbiAgLS1saW5lLWhlaWdodC1sZzogMjRweDtcbiAgLS1saW5lLWhlaWdodC14bDogMjhweDtcbiAgLS1saW5lLWhlaWdodC0yeGw6IDMycHg7XG4gIC0tbGluZS1oZWlnaHQtM3hsOiAzNnB4O1xuICAtLWxpbmUtaGVpZ2h0LTR4bDogNDNweDtcbiAgLS1saW5lLWhlaWdodC01eGw6IDY2cHg7XG4gIC0tbGluZS1oZWlnaHQtNnhsOiA4MnB4O1xuXG4gIC0tZm9udC13ZWlnaHQtcmVndWxhcjogNDAwO1xuICAtLWZvbnQtd2VpZ2h0LW1lZGl1bTogNTAwO1xuICAtLWZvbnQtd2VpZ2h0LXNlbWlib2xkOiA2MDA7XG4gIC0tZm9udC13ZWlnaHQtYm9sZDogNzAwO1xuICAtLWZvbnQtd2VpZ2h0LWV4dHJhYm9sZDogODAwO1xufVxuYCwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9zdHlsZXMvdG9rZW4vZm9udC5jc3NcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBQUE7RUFDRSxxQkFBcUI7RUFDckIsb0JBQW9CO0VBQ3BCLHNCQUFzQjtFQUN0QixvQkFBb0I7RUFDcEIsb0JBQW9CO0VBQ3BCLHFCQUFxQjtFQUNyQixxQkFBcUI7RUFDckIscUJBQXFCO0VBQ3JCLHFCQUFxQjtFQUNyQixxQkFBcUI7O0VBRXJCLHVCQUF1QjtFQUN2QixzQkFBc0I7RUFDdEIsd0JBQXdCO0VBQ3hCLHNCQUFzQjtFQUN0QixzQkFBc0I7RUFDdEIsdUJBQXVCO0VBQ3ZCLHVCQUF1QjtFQUN2Qix1QkFBdUI7RUFDdkIsdUJBQXVCO0VBQ3ZCLHVCQUF1Qjs7RUFFdkIsMEJBQTBCO0VBQzFCLHlCQUF5QjtFQUN6QiwyQkFBMkI7RUFDM0IsdUJBQXVCO0VBQ3ZCLDRCQUE0QjtBQUM5QlwiLFwic291cmNlc0NvbnRlbnRcIjpbXCIubnVyaS10aGVtZSB7XFxuICAtLWZvbnQtc2l6ZS14c206IDEycHg7XFxuICAtLWZvbnQtc2l6ZS1zbTogMTRweDtcXG4gIC0tZm9udC1zaXplLWJhc2U6IDE2cHg7XFxuICAtLWZvbnQtc2l6ZS1sZzogMThweDtcXG4gIC0tZm9udC1zaXplLXhsOiAyMHB4O1xcbiAgLS1mb250LXNpemUtMnhsOiAyNHB4O1xcbiAgLS1mb250LXNpemUtM3hsOiAzMHB4O1xcbiAgLS1mb250LXNpemUtNHhsOiAzNnB4O1xcbiAgLS1mb250LXNpemUtNXhsOiA0OHB4O1xcbiAgLS1mb250LXNpemUtNnhsOiA2MHB4O1xcblxcbiAgLS1saW5lLWhlaWdodC14c206IDE4cHg7XFxuICAtLWxpbmUtaGVpZ2h0LXNtOiAxOHB4O1xcbiAgLS1saW5lLWhlaWdodC1iYXNlOiAyMnB4O1xcbiAgLS1saW5lLWhlaWdodC1sZzogMjRweDtcXG4gIC0tbGluZS1oZWlnaHQteGw6IDI4cHg7XFxuICAtLWxpbmUtaGVpZ2h0LTJ4bDogMzJweDtcXG4gIC0tbGluZS1oZWlnaHQtM3hsOiAzNnB4O1xcbiAgLS1saW5lLWhlaWdodC00eGw6IDQzcHg7XFxuICAtLWxpbmUtaGVpZ2h0LTV4bDogNjZweDtcXG4gIC0tbGluZS1oZWlnaHQtNnhsOiA4MnB4O1xcblxcbiAgLS1mb250LXdlaWdodC1yZWd1bGFyOiA0MDA7XFxuICAtLWZvbnQtd2VpZ2h0LW1lZGl1bTogNTAwO1xcbiAgLS1mb250LXdlaWdodC1zZW1pYm9sZDogNjAwO1xcbiAgLS1mb250LXdlaWdodC1ib2xkOiA3MDA7XFxuICAtLWZvbnQtd2VpZ2h0LWV4dHJhYm9sZDogODAwO1xcbn1cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qXG4gIE1JVCBMaWNlbnNlIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwXG4gIEF1dGhvciBUb2JpYXMgS29wcGVycyBAc29rcmFcbiovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChjc3NXaXRoTWFwcGluZ1RvU3RyaW5nKSB7XG4gIHZhciBsaXN0ID0gW107XG5cbiAgLy8gcmV0dXJuIHRoZSBsaXN0IG9mIG1vZHVsZXMgYXMgY3NzIHN0cmluZ1xuICBsaXN0LnRvU3RyaW5nID0gZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICB2YXIgY29udGVudCA9IFwiXCI7XG4gICAgICB2YXIgbmVlZExheWVyID0gdHlwZW9mIGl0ZW1bNV0gIT09IFwidW5kZWZpbmVkXCI7XG4gICAgICBpZiAoaXRlbVs0XSkge1xuICAgICAgICBjb250ZW50ICs9IFwiQHN1cHBvcnRzIChcIi5jb25jYXQoaXRlbVs0XSwgXCIpIHtcIik7XG4gICAgICB9XG4gICAgICBpZiAoaXRlbVsyXSkge1xuICAgICAgICBjb250ZW50ICs9IFwiQG1lZGlhIFwiLmNvbmNhdChpdGVtWzJdLCBcIiB7XCIpO1xuICAgICAgfVxuICAgICAgaWYgKG5lZWRMYXllcikge1xuICAgICAgICBjb250ZW50ICs9IFwiQGxheWVyXCIuY29uY2F0KGl0ZW1bNV0ubGVuZ3RoID4gMCA/IFwiIFwiLmNvbmNhdChpdGVtWzVdKSA6IFwiXCIsIFwiIHtcIik7XG4gICAgICB9XG4gICAgICBjb250ZW50ICs9IGNzc1dpdGhNYXBwaW5nVG9TdHJpbmcoaXRlbSk7XG4gICAgICBpZiAobmVlZExheWVyKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJ9XCI7XG4gICAgICB9XG4gICAgICBpZiAoaXRlbVsyXSkge1xuICAgICAgICBjb250ZW50ICs9IFwifVwiO1xuICAgICAgfVxuICAgICAgaWYgKGl0ZW1bNF0pIHtcbiAgICAgICAgY29udGVudCArPSBcIn1cIjtcbiAgICAgIH1cbiAgICAgIHJldHVybiBjb250ZW50O1xuICAgIH0pLmpvaW4oXCJcIik7XG4gIH07XG5cbiAgLy8gaW1wb3J0IGEgbGlzdCBvZiBtb2R1bGVzIGludG8gdGhlIGxpc3RcbiAgbGlzdC5pID0gZnVuY3Rpb24gaShtb2R1bGVzLCBtZWRpYSwgZGVkdXBlLCBzdXBwb3J0cywgbGF5ZXIpIHtcbiAgICBpZiAodHlwZW9mIG1vZHVsZXMgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIG1vZHVsZXMgPSBbW251bGwsIG1vZHVsZXMsIHVuZGVmaW5lZF1dO1xuICAgIH1cbiAgICB2YXIgYWxyZWFkeUltcG9ydGVkTW9kdWxlcyA9IHt9O1xuICAgIGlmIChkZWR1cGUpIHtcbiAgICAgIGZvciAodmFyIGsgPSAwOyBrIDwgdGhpcy5sZW5ndGg7IGsrKykge1xuICAgICAgICB2YXIgaWQgPSB0aGlzW2tdWzBdO1xuICAgICAgICBpZiAoaWQgIT0gbnVsbCkge1xuICAgICAgICAgIGFscmVhZHlJbXBvcnRlZE1vZHVsZXNbaWRdID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBmb3IgKHZhciBfayA9IDA7IF9rIDwgbW9kdWxlcy5sZW5ndGg7IF9rKyspIHtcbiAgICAgIHZhciBpdGVtID0gW10uY29uY2F0KG1vZHVsZXNbX2tdKTtcbiAgICAgIGlmIChkZWR1cGUgJiYgYWxyZWFkeUltcG9ydGVkTW9kdWxlc1tpdGVtWzBdXSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGlmICh0eXBlb2YgbGF5ZXIgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBpdGVtWzVdID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgICAgaXRlbVs1XSA9IGxheWVyO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGl0ZW1bMV0gPSBcIkBsYXllclwiLmNvbmNhdChpdGVtWzVdLmxlbmd0aCA+IDAgPyBcIiBcIi5jb25jYXQoaXRlbVs1XSkgOiBcIlwiLCBcIiB7XCIpLmNvbmNhdChpdGVtWzFdLCBcIn1cIik7XG4gICAgICAgICAgaXRlbVs1XSA9IGxheWVyO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAobWVkaWEpIHtcbiAgICAgICAgaWYgKCFpdGVtWzJdKSB7XG4gICAgICAgICAgaXRlbVsyXSA9IG1lZGlhO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGl0ZW1bMV0gPSBcIkBtZWRpYSBcIi5jb25jYXQoaXRlbVsyXSwgXCIge1wiKS5jb25jYXQoaXRlbVsxXSwgXCJ9XCIpO1xuICAgICAgICAgIGl0ZW1bMl0gPSBtZWRpYTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHN1cHBvcnRzKSB7XG4gICAgICAgIGlmICghaXRlbVs0XSkge1xuICAgICAgICAgIGl0ZW1bNF0gPSBcIlwiLmNvbmNhdChzdXBwb3J0cyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaXRlbVsxXSA9IFwiQHN1cHBvcnRzIChcIi5jb25jYXQoaXRlbVs0XSwgXCIpIHtcIikuY29uY2F0KGl0ZW1bMV0sIFwifVwiKTtcbiAgICAgICAgICBpdGVtWzRdID0gc3VwcG9ydHM7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGxpc3QucHVzaChpdGVtKTtcbiAgICB9XG4gIH07XG4gIHJldHVybiBsaXN0O1xufTsiLCJcInVzZSBzdHJpY3RcIjtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXRlbSkge1xuICB2YXIgY29udGVudCA9IGl0ZW1bMV07XG4gIHZhciBjc3NNYXBwaW5nID0gaXRlbVszXTtcbiAgaWYgKCFjc3NNYXBwaW5nKSB7XG4gICAgcmV0dXJuIGNvbnRlbnQ7XG4gIH1cbiAgaWYgKHR5cGVvZiBidG9hID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICB2YXIgYmFzZTY0ID0gYnRvYSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkoY3NzTWFwcGluZykpKSk7XG4gICAgdmFyIGRhdGEgPSBcInNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LFwiLmNvbmNhdChiYXNlNjQpO1xuICAgIHZhciBzb3VyY2VNYXBwaW5nID0gXCIvKiMgXCIuY29uY2F0KGRhdGEsIFwiICovXCIpO1xuICAgIHJldHVybiBbY29udGVudF0uY29uY2F0KFtzb3VyY2VNYXBwaW5nXSkuam9pbihcIlxcblwiKTtcbiAgfVxuICByZXR1cm4gW2NvbnRlbnRdLmpvaW4oXCJcXG5cIik7XG59OyIsIi8qKlxuICogQGxpY2Vuc2UgUmVhY3RcbiAqIHJlYWN0LWpzeC1ydW50aW1lLnByb2R1Y3Rpb24ubWluLmpzXG4gKlxuICogQ29weXJpZ2h0IChjKSBGYWNlYm9vaywgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cbid1c2Ugc3RyaWN0Jzt2YXIgZj1yZXF1aXJlKFwicmVhY3RcIiksaz1TeW1ib2wuZm9yKFwicmVhY3QuZWxlbWVudFwiKSxsPVN5bWJvbC5mb3IoXCJyZWFjdC5mcmFnbWVudFwiKSxtPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksbj1mLl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVELlJlYWN0Q3VycmVudE93bmVyLHA9e2tleTohMCxyZWY6ITAsX19zZWxmOiEwLF9fc291cmNlOiEwfTtcbmZ1bmN0aW9uIHEoYyxhLGcpe3ZhciBiLGQ9e30sZT1udWxsLGg9bnVsbDt2b2lkIDAhPT1nJiYoZT1cIlwiK2cpO3ZvaWQgMCE9PWEua2V5JiYoZT1cIlwiK2Eua2V5KTt2b2lkIDAhPT1hLnJlZiYmKGg9YS5yZWYpO2ZvcihiIGluIGEpbS5jYWxsKGEsYikmJiFwLmhhc093blByb3BlcnR5KGIpJiYoZFtiXT1hW2JdKTtpZihjJiZjLmRlZmF1bHRQcm9wcylmb3IoYiBpbiBhPWMuZGVmYXVsdFByb3BzLGEpdm9pZCAwPT09ZFtiXSYmKGRbYl09YVtiXSk7cmV0dXJueyQkdHlwZW9mOmssdHlwZTpjLGtleTplLHJlZjpoLHByb3BzOmQsX293bmVyOm4uY3VycmVudH19ZXhwb3J0cy5GcmFnbWVudD1sO2V4cG9ydHMuanN4PXE7ZXhwb3J0cy5qc3hzPXE7XG4iLCIvKipcbiAqIEBsaWNlbnNlIFJlYWN0XG4gKiByZWFjdC5wcm9kdWN0aW9uLm1pbi5qc1xuICpcbiAqIENvcHlyaWdodCAoYykgRmFjZWJvb2ssIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG4ndXNlIHN0cmljdCc7dmFyIGw9U3ltYm9sLmZvcihcInJlYWN0LmVsZW1lbnRcIiksbj1TeW1ib2wuZm9yKFwicmVhY3QucG9ydGFsXCIpLHA9U3ltYm9sLmZvcihcInJlYWN0LmZyYWdtZW50XCIpLHE9U3ltYm9sLmZvcihcInJlYWN0LnN0cmljdF9tb2RlXCIpLHI9U3ltYm9sLmZvcihcInJlYWN0LnByb2ZpbGVyXCIpLHQ9U3ltYm9sLmZvcihcInJlYWN0LnByb3ZpZGVyXCIpLHU9U3ltYm9sLmZvcihcInJlYWN0LmNvbnRleHRcIiksdj1TeW1ib2wuZm9yKFwicmVhY3QuZm9yd2FyZF9yZWZcIiksdz1TeW1ib2wuZm9yKFwicmVhY3Quc3VzcGVuc2VcIikseD1TeW1ib2wuZm9yKFwicmVhY3QubWVtb1wiKSx5PVN5bWJvbC5mb3IoXCJyZWFjdC5sYXp5XCIpLHo9U3ltYm9sLml0ZXJhdG9yO2Z1bmN0aW9uIEEoYSl7aWYobnVsbD09PWF8fFwib2JqZWN0XCIhPT10eXBlb2YgYSlyZXR1cm4gbnVsbDthPXomJmFbel18fGFbXCJAQGl0ZXJhdG9yXCJdO3JldHVyblwiZnVuY3Rpb25cIj09PXR5cGVvZiBhP2E6bnVsbH1cbnZhciBCPXtpc01vdW50ZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hMX0sZW5xdWV1ZUZvcmNlVXBkYXRlOmZ1bmN0aW9uKCl7fSxlbnF1ZXVlUmVwbGFjZVN0YXRlOmZ1bmN0aW9uKCl7fSxlbnF1ZXVlU2V0U3RhdGU6ZnVuY3Rpb24oKXt9fSxDPU9iamVjdC5hc3NpZ24sRD17fTtmdW5jdGlvbiBFKGEsYixlKXt0aGlzLnByb3BzPWE7dGhpcy5jb250ZXh0PWI7dGhpcy5yZWZzPUQ7dGhpcy51cGRhdGVyPWV8fEJ9RS5wcm90b3R5cGUuaXNSZWFjdENvbXBvbmVudD17fTtcbkUucHJvdG90eXBlLnNldFN0YXRlPWZ1bmN0aW9uKGEsYil7aWYoXCJvYmplY3RcIiE9PXR5cGVvZiBhJiZcImZ1bmN0aW9uXCIhPT10eXBlb2YgYSYmbnVsbCE9YSl0aHJvdyBFcnJvcihcInNldFN0YXRlKC4uLik6IHRha2VzIGFuIG9iamVjdCBvZiBzdGF0ZSB2YXJpYWJsZXMgdG8gdXBkYXRlIG9yIGEgZnVuY3Rpb24gd2hpY2ggcmV0dXJucyBhbiBvYmplY3Qgb2Ygc3RhdGUgdmFyaWFibGVzLlwiKTt0aGlzLnVwZGF0ZXIuZW5xdWV1ZVNldFN0YXRlKHRoaXMsYSxiLFwic2V0U3RhdGVcIil9O0UucHJvdG90eXBlLmZvcmNlVXBkYXRlPWZ1bmN0aW9uKGEpe3RoaXMudXBkYXRlci5lbnF1ZXVlRm9yY2VVcGRhdGUodGhpcyxhLFwiZm9yY2VVcGRhdGVcIil9O2Z1bmN0aW9uIEYoKXt9Ri5wcm90b3R5cGU9RS5wcm90b3R5cGU7ZnVuY3Rpb24gRyhhLGIsZSl7dGhpcy5wcm9wcz1hO3RoaXMuY29udGV4dD1iO3RoaXMucmVmcz1EO3RoaXMudXBkYXRlcj1lfHxCfXZhciBIPUcucHJvdG90eXBlPW5ldyBGO1xuSC5jb25zdHJ1Y3Rvcj1HO0MoSCxFLnByb3RvdHlwZSk7SC5pc1B1cmVSZWFjdENvbXBvbmVudD0hMDt2YXIgST1BcnJheS5pc0FycmF5LEo9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxLPXtjdXJyZW50Om51bGx9LEw9e2tleTohMCxyZWY6ITAsX19zZWxmOiEwLF9fc291cmNlOiEwfTtcbmZ1bmN0aW9uIE0oYSxiLGUpe3ZhciBkLGM9e30saz1udWxsLGg9bnVsbDtpZihudWxsIT1iKWZvcihkIGluIHZvaWQgMCE9PWIucmVmJiYoaD1iLnJlZiksdm9pZCAwIT09Yi5rZXkmJihrPVwiXCIrYi5rZXkpLGIpSi5jYWxsKGIsZCkmJiFMLmhhc093blByb3BlcnR5KGQpJiYoY1tkXT1iW2RdKTt2YXIgZz1hcmd1bWVudHMubGVuZ3RoLTI7aWYoMT09PWcpYy5jaGlsZHJlbj1lO2Vsc2UgaWYoMTxnKXtmb3IodmFyIGY9QXJyYXkoZyksbT0wO208ZzttKyspZlttXT1hcmd1bWVudHNbbSsyXTtjLmNoaWxkcmVuPWZ9aWYoYSYmYS5kZWZhdWx0UHJvcHMpZm9yKGQgaW4gZz1hLmRlZmF1bHRQcm9wcyxnKXZvaWQgMD09PWNbZF0mJihjW2RdPWdbZF0pO3JldHVybnskJHR5cGVvZjpsLHR5cGU6YSxrZXk6ayxyZWY6aCxwcm9wczpjLF9vd25lcjpLLmN1cnJlbnR9fVxuZnVuY3Rpb24gTihhLGIpe3JldHVybnskJHR5cGVvZjpsLHR5cGU6YS50eXBlLGtleTpiLHJlZjphLnJlZixwcm9wczphLnByb3BzLF9vd25lcjphLl9vd25lcn19ZnVuY3Rpb24gTyhhKXtyZXR1cm5cIm9iamVjdFwiPT09dHlwZW9mIGEmJm51bGwhPT1hJiZhLiQkdHlwZW9mPT09bH1mdW5jdGlvbiBlc2NhcGUoYSl7dmFyIGI9e1wiPVwiOlwiPTBcIixcIjpcIjpcIj0yXCJ9O3JldHVyblwiJFwiK2EucmVwbGFjZSgvWz06XS9nLGZ1bmN0aW9uKGEpe3JldHVybiBiW2FdfSl9dmFyIFA9L1xcLysvZztmdW5jdGlvbiBRKGEsYil7cmV0dXJuXCJvYmplY3RcIj09PXR5cGVvZiBhJiZudWxsIT09YSYmbnVsbCE9YS5rZXk/ZXNjYXBlKFwiXCIrYS5rZXkpOmIudG9TdHJpbmcoMzYpfVxuZnVuY3Rpb24gUihhLGIsZSxkLGMpe3ZhciBrPXR5cGVvZiBhO2lmKFwidW5kZWZpbmVkXCI9PT1rfHxcImJvb2xlYW5cIj09PWspYT1udWxsO3ZhciBoPSExO2lmKG51bGw9PT1hKWg9ITA7ZWxzZSBzd2l0Y2goayl7Y2FzZSBcInN0cmluZ1wiOmNhc2UgXCJudW1iZXJcIjpoPSEwO2JyZWFrO2Nhc2UgXCJvYmplY3RcIjpzd2l0Y2goYS4kJHR5cGVvZil7Y2FzZSBsOmNhc2UgbjpoPSEwfX1pZihoKXJldHVybiBoPWEsYz1jKGgpLGE9XCJcIj09PWQ/XCIuXCIrUShoLDApOmQsSShjKT8oZT1cIlwiLG51bGwhPWEmJihlPWEucmVwbGFjZShQLFwiJCYvXCIpK1wiL1wiKSxSKGMsYixlLFwiXCIsZnVuY3Rpb24oYSl7cmV0dXJuIGF9KSk6bnVsbCE9YyYmKE8oYykmJihjPU4oYyxlKyghYy5rZXl8fGgmJmgua2V5PT09Yy5rZXk/XCJcIjooXCJcIitjLmtleSkucmVwbGFjZShQLFwiJCYvXCIpK1wiL1wiKSthKSksYi5wdXNoKGMpKSwxO2g9MDtkPVwiXCI9PT1kP1wiLlwiOmQrXCI6XCI7aWYoSShhKSlmb3IodmFyIGc9MDtnPGEubGVuZ3RoO2crKyl7az1cbmFbZ107dmFyIGY9ZCtRKGssZyk7aCs9UihrLGIsZSxmLGMpfWVsc2UgaWYoZj1BKGEpLFwiZnVuY3Rpb25cIj09PXR5cGVvZiBmKWZvcihhPWYuY2FsbChhKSxnPTA7IShrPWEubmV4dCgpKS5kb25lOylrPWsudmFsdWUsZj1kK1EoayxnKyspLGgrPVIoayxiLGUsZixjKTtlbHNlIGlmKFwib2JqZWN0XCI9PT1rKXRocm93IGI9U3RyaW5nKGEpLEVycm9yKFwiT2JqZWN0cyBhcmUgbm90IHZhbGlkIGFzIGEgUmVhY3QgY2hpbGQgKGZvdW5kOiBcIisoXCJbb2JqZWN0IE9iamVjdF1cIj09PWI/XCJvYmplY3Qgd2l0aCBrZXlzIHtcIitPYmplY3Qua2V5cyhhKS5qb2luKFwiLCBcIikrXCJ9XCI6YikrXCIpLiBJZiB5b3UgbWVhbnQgdG8gcmVuZGVyIGEgY29sbGVjdGlvbiBvZiBjaGlsZHJlbiwgdXNlIGFuIGFycmF5IGluc3RlYWQuXCIpO3JldHVybiBofVxuZnVuY3Rpb24gUyhhLGIsZSl7aWYobnVsbD09YSlyZXR1cm4gYTt2YXIgZD1bXSxjPTA7UihhLGQsXCJcIixcIlwiLGZ1bmN0aW9uKGEpe3JldHVybiBiLmNhbGwoZSxhLGMrKyl9KTtyZXR1cm4gZH1mdW5jdGlvbiBUKGEpe2lmKC0xPT09YS5fc3RhdHVzKXt2YXIgYj1hLl9yZXN1bHQ7Yj1iKCk7Yi50aGVuKGZ1bmN0aW9uKGIpe2lmKDA9PT1hLl9zdGF0dXN8fC0xPT09YS5fc3RhdHVzKWEuX3N0YXR1cz0xLGEuX3Jlc3VsdD1ifSxmdW5jdGlvbihiKXtpZigwPT09YS5fc3RhdHVzfHwtMT09PWEuX3N0YXR1cylhLl9zdGF0dXM9MixhLl9yZXN1bHQ9Yn0pOy0xPT09YS5fc3RhdHVzJiYoYS5fc3RhdHVzPTAsYS5fcmVzdWx0PWIpfWlmKDE9PT1hLl9zdGF0dXMpcmV0dXJuIGEuX3Jlc3VsdC5kZWZhdWx0O3Rocm93IGEuX3Jlc3VsdDt9XG52YXIgVT17Y3VycmVudDpudWxsfSxWPXt0cmFuc2l0aW9uOm51bGx9LFc9e1JlYWN0Q3VycmVudERpc3BhdGNoZXI6VSxSZWFjdEN1cnJlbnRCYXRjaENvbmZpZzpWLFJlYWN0Q3VycmVudE93bmVyOkt9O2Z1bmN0aW9uIFgoKXt0aHJvdyBFcnJvcihcImFjdCguLi4pIGlzIG5vdCBzdXBwb3J0ZWQgaW4gcHJvZHVjdGlvbiBidWlsZHMgb2YgUmVhY3QuXCIpO31cbmV4cG9ydHMuQ2hpbGRyZW49e21hcDpTLGZvckVhY2g6ZnVuY3Rpb24oYSxiLGUpe1MoYSxmdW5jdGlvbigpe2IuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxlKX0sY291bnQ6ZnVuY3Rpb24oYSl7dmFyIGI9MDtTKGEsZnVuY3Rpb24oKXtiKyt9KTtyZXR1cm4gYn0sdG9BcnJheTpmdW5jdGlvbihhKXtyZXR1cm4gUyhhLGZ1bmN0aW9uKGEpe3JldHVybiBhfSl8fFtdfSxvbmx5OmZ1bmN0aW9uKGEpe2lmKCFPKGEpKXRocm93IEVycm9yKFwiUmVhY3QuQ2hpbGRyZW4ub25seSBleHBlY3RlZCB0byByZWNlaXZlIGEgc2luZ2xlIFJlYWN0IGVsZW1lbnQgY2hpbGQuXCIpO3JldHVybiBhfX07ZXhwb3J0cy5Db21wb25lbnQ9RTtleHBvcnRzLkZyYWdtZW50PXA7ZXhwb3J0cy5Qcm9maWxlcj1yO2V4cG9ydHMuUHVyZUNvbXBvbmVudD1HO2V4cG9ydHMuU3RyaWN0TW9kZT1xO2V4cG9ydHMuU3VzcGVuc2U9dztcbmV4cG9ydHMuX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQ9VztleHBvcnRzLmFjdD1YO1xuZXhwb3J0cy5jbG9uZUVsZW1lbnQ9ZnVuY3Rpb24oYSxiLGUpe2lmKG51bGw9PT1hfHx2b2lkIDA9PT1hKXRocm93IEVycm9yKFwiUmVhY3QuY2xvbmVFbGVtZW50KC4uLik6IFRoZSBhcmd1bWVudCBtdXN0IGJlIGEgUmVhY3QgZWxlbWVudCwgYnV0IHlvdSBwYXNzZWQgXCIrYStcIi5cIik7dmFyIGQ9Qyh7fSxhLnByb3BzKSxjPWEua2V5LGs9YS5yZWYsaD1hLl9vd25lcjtpZihudWxsIT1iKXt2b2lkIDAhPT1iLnJlZiYmKGs9Yi5yZWYsaD1LLmN1cnJlbnQpO3ZvaWQgMCE9PWIua2V5JiYoYz1cIlwiK2Iua2V5KTtpZihhLnR5cGUmJmEudHlwZS5kZWZhdWx0UHJvcHMpdmFyIGc9YS50eXBlLmRlZmF1bHRQcm9wcztmb3IoZiBpbiBiKUouY2FsbChiLGYpJiYhTC5oYXNPd25Qcm9wZXJ0eShmKSYmKGRbZl09dm9pZCAwPT09YltmXSYmdm9pZCAwIT09Zz9nW2ZdOmJbZl0pfXZhciBmPWFyZ3VtZW50cy5sZW5ndGgtMjtpZigxPT09ZilkLmNoaWxkcmVuPWU7ZWxzZSBpZigxPGYpe2c9QXJyYXkoZik7XG5mb3IodmFyIG09MDttPGY7bSsrKWdbbV09YXJndW1lbnRzW20rMl07ZC5jaGlsZHJlbj1nfXJldHVybnskJHR5cGVvZjpsLHR5cGU6YS50eXBlLGtleTpjLHJlZjprLHByb3BzOmQsX293bmVyOmh9fTtleHBvcnRzLmNyZWF0ZUNvbnRleHQ9ZnVuY3Rpb24oYSl7YT17JCR0eXBlb2Y6dSxfY3VycmVudFZhbHVlOmEsX2N1cnJlbnRWYWx1ZTI6YSxfdGhyZWFkQ291bnQ6MCxQcm92aWRlcjpudWxsLENvbnN1bWVyOm51bGwsX2RlZmF1bHRWYWx1ZTpudWxsLF9nbG9iYWxOYW1lOm51bGx9O2EuUHJvdmlkZXI9eyQkdHlwZW9mOnQsX2NvbnRleHQ6YX07cmV0dXJuIGEuQ29uc3VtZXI9YX07ZXhwb3J0cy5jcmVhdGVFbGVtZW50PU07ZXhwb3J0cy5jcmVhdGVGYWN0b3J5PWZ1bmN0aW9uKGEpe3ZhciBiPU0uYmluZChudWxsLGEpO2IudHlwZT1hO3JldHVybiBifTtleHBvcnRzLmNyZWF0ZVJlZj1mdW5jdGlvbigpe3JldHVybntjdXJyZW50Om51bGx9fTtcbmV4cG9ydHMuZm9yd2FyZFJlZj1mdW5jdGlvbihhKXtyZXR1cm57JCR0eXBlb2Y6dixyZW5kZXI6YX19O2V4cG9ydHMuaXNWYWxpZEVsZW1lbnQ9TztleHBvcnRzLmxhenk9ZnVuY3Rpb24oYSl7cmV0dXJueyQkdHlwZW9mOnksX3BheWxvYWQ6e19zdGF0dXM6LTEsX3Jlc3VsdDphfSxfaW5pdDpUfX07ZXhwb3J0cy5tZW1vPWZ1bmN0aW9uKGEsYil7cmV0dXJueyQkdHlwZW9mOngsdHlwZTphLGNvbXBhcmU6dm9pZCAwPT09Yj9udWxsOmJ9fTtleHBvcnRzLnN0YXJ0VHJhbnNpdGlvbj1mdW5jdGlvbihhKXt2YXIgYj1WLnRyYW5zaXRpb247Vi50cmFuc2l0aW9uPXt9O3RyeXthKCl9ZmluYWxseXtWLnRyYW5zaXRpb249Yn19O2V4cG9ydHMudW5zdGFibGVfYWN0PVg7ZXhwb3J0cy51c2VDYWxsYmFjaz1mdW5jdGlvbihhLGIpe3JldHVybiBVLmN1cnJlbnQudXNlQ2FsbGJhY2soYSxiKX07ZXhwb3J0cy51c2VDb250ZXh0PWZ1bmN0aW9uKGEpe3JldHVybiBVLmN1cnJlbnQudXNlQ29udGV4dChhKX07XG5leHBvcnRzLnVzZURlYnVnVmFsdWU9ZnVuY3Rpb24oKXt9O2V4cG9ydHMudXNlRGVmZXJyZWRWYWx1ZT1mdW5jdGlvbihhKXtyZXR1cm4gVS5jdXJyZW50LnVzZURlZmVycmVkVmFsdWUoYSl9O2V4cG9ydHMudXNlRWZmZWN0PWZ1bmN0aW9uKGEsYil7cmV0dXJuIFUuY3VycmVudC51c2VFZmZlY3QoYSxiKX07ZXhwb3J0cy51c2VJZD1mdW5jdGlvbigpe3JldHVybiBVLmN1cnJlbnQudXNlSWQoKX07ZXhwb3J0cy51c2VJbXBlcmF0aXZlSGFuZGxlPWZ1bmN0aW9uKGEsYixlKXtyZXR1cm4gVS5jdXJyZW50LnVzZUltcGVyYXRpdmVIYW5kbGUoYSxiLGUpfTtleHBvcnRzLnVzZUluc2VydGlvbkVmZmVjdD1mdW5jdGlvbihhLGIpe3JldHVybiBVLmN1cnJlbnQudXNlSW5zZXJ0aW9uRWZmZWN0KGEsYil9O2V4cG9ydHMudXNlTGF5b3V0RWZmZWN0PWZ1bmN0aW9uKGEsYil7cmV0dXJuIFUuY3VycmVudC51c2VMYXlvdXRFZmZlY3QoYSxiKX07XG5leHBvcnRzLnVzZU1lbW89ZnVuY3Rpb24oYSxiKXtyZXR1cm4gVS5jdXJyZW50LnVzZU1lbW8oYSxiKX07ZXhwb3J0cy51c2VSZWR1Y2VyPWZ1bmN0aW9uKGEsYixlKXtyZXR1cm4gVS5jdXJyZW50LnVzZVJlZHVjZXIoYSxiLGUpfTtleHBvcnRzLnVzZVJlZj1mdW5jdGlvbihhKXtyZXR1cm4gVS5jdXJyZW50LnVzZVJlZihhKX07ZXhwb3J0cy51c2VTdGF0ZT1mdW5jdGlvbihhKXtyZXR1cm4gVS5jdXJyZW50LnVzZVN0YXRlKGEpfTtleHBvcnRzLnVzZVN5bmNFeHRlcm5hbFN0b3JlPWZ1bmN0aW9uKGEsYixlKXtyZXR1cm4gVS5jdXJyZW50LnVzZVN5bmNFeHRlcm5hbFN0b3JlKGEsYixlKX07ZXhwb3J0cy51c2VUcmFuc2l0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIFUuY3VycmVudC51c2VUcmFuc2l0aW9uKCl9O2V4cG9ydHMudmVyc2lvbj1cIjE4LjMuMVwiO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJykge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LnByb2R1Y3Rpb24ubWluLmpzJyk7XG59IGVsc2Uge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LmRldmVsb3BtZW50LmpzJyk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtanN4LXJ1bnRpbWUucHJvZHVjdGlvbi5taW4uanMnKTtcbn0gZWxzZSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtanN4LXJ1bnRpbWUuZGV2ZWxvcG1lbnQuanMnKTtcbn1cbiIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgc3R5bGVzSW5ET00gPSBbXTtcbmZ1bmN0aW9uIGdldEluZGV4QnlJZGVudGlmaWVyKGlkZW50aWZpZXIpIHtcbiAgdmFyIHJlc3VsdCA9IC0xO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHN0eWxlc0luRE9NLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKHN0eWxlc0luRE9NW2ldLmlkZW50aWZpZXIgPT09IGlkZW50aWZpZXIpIHtcbiAgICAgIHJlc3VsdCA9IGk7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cbmZ1bmN0aW9uIG1vZHVsZXNUb0RvbShsaXN0LCBvcHRpb25zKSB7XG4gIHZhciBpZENvdW50TWFwID0ge307XG4gIHZhciBpZGVudGlmaWVycyA9IFtdO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgaXRlbSA9IGxpc3RbaV07XG4gICAgdmFyIGlkID0gb3B0aW9ucy5iYXNlID8gaXRlbVswXSArIG9wdGlvbnMuYmFzZSA6IGl0ZW1bMF07XG4gICAgdmFyIGNvdW50ID0gaWRDb3VudE1hcFtpZF0gfHwgMDtcbiAgICB2YXIgaWRlbnRpZmllciA9IFwiXCIuY29uY2F0KGlkLCBcIiBcIikuY29uY2F0KGNvdW50KTtcbiAgICBpZENvdW50TWFwW2lkXSA9IGNvdW50ICsgMTtcbiAgICB2YXIgaW5kZXhCeUlkZW50aWZpZXIgPSBnZXRJbmRleEJ5SWRlbnRpZmllcihpZGVudGlmaWVyKTtcbiAgICB2YXIgb2JqID0ge1xuICAgICAgY3NzOiBpdGVtWzFdLFxuICAgICAgbWVkaWE6IGl0ZW1bMl0sXG4gICAgICBzb3VyY2VNYXA6IGl0ZW1bM10sXG4gICAgICBzdXBwb3J0czogaXRlbVs0XSxcbiAgICAgIGxheWVyOiBpdGVtWzVdXG4gICAgfTtcbiAgICBpZiAoaW5kZXhCeUlkZW50aWZpZXIgIT09IC0xKSB7XG4gICAgICBzdHlsZXNJbkRPTVtpbmRleEJ5SWRlbnRpZmllcl0ucmVmZXJlbmNlcysrO1xuICAgICAgc3R5bGVzSW5ET01baW5kZXhCeUlkZW50aWZpZXJdLnVwZGF0ZXIob2JqKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHVwZGF0ZXIgPSBhZGRFbGVtZW50U3R5bGUob2JqLCBvcHRpb25zKTtcbiAgICAgIG9wdGlvbnMuYnlJbmRleCA9IGk7XG4gICAgICBzdHlsZXNJbkRPTS5zcGxpY2UoaSwgMCwge1xuICAgICAgICBpZGVudGlmaWVyOiBpZGVudGlmaWVyLFxuICAgICAgICB1cGRhdGVyOiB1cGRhdGVyLFxuICAgICAgICByZWZlcmVuY2VzOiAxXG4gICAgICB9KTtcbiAgICB9XG4gICAgaWRlbnRpZmllcnMucHVzaChpZGVudGlmaWVyKTtcbiAgfVxuICByZXR1cm4gaWRlbnRpZmllcnM7XG59XG5mdW5jdGlvbiBhZGRFbGVtZW50U3R5bGUob2JqLCBvcHRpb25zKSB7XG4gIHZhciBhcGkgPSBvcHRpb25zLmRvbUFQSShvcHRpb25zKTtcbiAgYXBpLnVwZGF0ZShvYmopO1xuICB2YXIgdXBkYXRlciA9IGZ1bmN0aW9uIHVwZGF0ZXIobmV3T2JqKSB7XG4gICAgaWYgKG5ld09iaikge1xuICAgICAgaWYgKG5ld09iai5jc3MgPT09IG9iai5jc3MgJiYgbmV3T2JqLm1lZGlhID09PSBvYmoubWVkaWEgJiYgbmV3T2JqLnNvdXJjZU1hcCA9PT0gb2JqLnNvdXJjZU1hcCAmJiBuZXdPYmouc3VwcG9ydHMgPT09IG9iai5zdXBwb3J0cyAmJiBuZXdPYmoubGF5ZXIgPT09IG9iai5sYXllcikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBhcGkudXBkYXRlKG9iaiA9IG5ld09iaik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFwaS5yZW1vdmUoKTtcbiAgICB9XG4gIH07XG4gIHJldHVybiB1cGRhdGVyO1xufVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAobGlzdCwgb3B0aW9ucykge1xuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgbGlzdCA9IGxpc3QgfHwgW107XG4gIHZhciBsYXN0SWRlbnRpZmllcnMgPSBtb2R1bGVzVG9Eb20obGlzdCwgb3B0aW9ucyk7XG4gIHJldHVybiBmdW5jdGlvbiB1cGRhdGUobmV3TGlzdCkge1xuICAgIG5ld0xpc3QgPSBuZXdMaXN0IHx8IFtdO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGFzdElkZW50aWZpZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgaWRlbnRpZmllciA9IGxhc3RJZGVudGlmaWVyc1tpXTtcbiAgICAgIHZhciBpbmRleCA9IGdldEluZGV4QnlJZGVudGlmaWVyKGlkZW50aWZpZXIpO1xuICAgICAgc3R5bGVzSW5ET01baW5kZXhdLnJlZmVyZW5jZXMtLTtcbiAgICB9XG4gICAgdmFyIG5ld0xhc3RJZGVudGlmaWVycyA9IG1vZHVsZXNUb0RvbShuZXdMaXN0LCBvcHRpb25zKTtcbiAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgbGFzdElkZW50aWZpZXJzLmxlbmd0aDsgX2krKykge1xuICAgICAgdmFyIF9pZGVudGlmaWVyID0gbGFzdElkZW50aWZpZXJzW19pXTtcbiAgICAgIHZhciBfaW5kZXggPSBnZXRJbmRleEJ5SWRlbnRpZmllcihfaWRlbnRpZmllcik7XG4gICAgICBpZiAoc3R5bGVzSW5ET01bX2luZGV4XS5yZWZlcmVuY2VzID09PSAwKSB7XG4gICAgICAgIHN0eWxlc0luRE9NW19pbmRleF0udXBkYXRlcigpO1xuICAgICAgICBzdHlsZXNJbkRPTS5zcGxpY2UoX2luZGV4LCAxKTtcbiAgICAgIH1cbiAgICB9XG4gICAgbGFzdElkZW50aWZpZXJzID0gbmV3TGFzdElkZW50aWZpZXJzO1xuICB9O1xufTsiLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIG1lbW8gPSB7fTtcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5mdW5jdGlvbiBnZXRUYXJnZXQodGFyZ2V0KSB7XG4gIGlmICh0eXBlb2YgbWVtb1t0YXJnZXRdID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgdmFyIHN0eWxlVGFyZ2V0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih0YXJnZXQpO1xuXG4gICAgLy8gU3BlY2lhbCBjYXNlIHRvIHJldHVybiBoZWFkIG9mIGlmcmFtZSBpbnN0ZWFkIG9mIGlmcmFtZSBpdHNlbGZcbiAgICBpZiAod2luZG93LkhUTUxJRnJhbWVFbGVtZW50ICYmIHN0eWxlVGFyZ2V0IGluc3RhbmNlb2Ygd2luZG93LkhUTUxJRnJhbWVFbGVtZW50KSB7XG4gICAgICB0cnkge1xuICAgICAgICAvLyBUaGlzIHdpbGwgdGhyb3cgYW4gZXhjZXB0aW9uIGlmIGFjY2VzcyB0byBpZnJhbWUgaXMgYmxvY2tlZFxuICAgICAgICAvLyBkdWUgdG8gY3Jvc3Mtb3JpZ2luIHJlc3RyaWN0aW9uc1xuICAgICAgICBzdHlsZVRhcmdldCA9IHN0eWxlVGFyZ2V0LmNvbnRlbnREb2N1bWVudC5oZWFkO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dFxuICAgICAgICBzdHlsZVRhcmdldCA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuICAgIG1lbW9bdGFyZ2V0XSA9IHN0eWxlVGFyZ2V0O1xuICB9XG4gIHJldHVybiBtZW1vW3RhcmdldF07XG59XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuZnVuY3Rpb24gaW5zZXJ0QnlTZWxlY3RvcihpbnNlcnQsIHN0eWxlKSB7XG4gIHZhciB0YXJnZXQgPSBnZXRUYXJnZXQoaW5zZXJ0KTtcbiAgaWYgKCF0YXJnZXQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJDb3VsZG4ndCBmaW5kIGEgc3R5bGUgdGFyZ2V0LiBUaGlzIHByb2JhYmx5IG1lYW5zIHRoYXQgdGhlIHZhbHVlIGZvciB0aGUgJ2luc2VydCcgcGFyYW1ldGVyIGlzIGludmFsaWQuXCIpO1xuICB9XG4gIHRhcmdldC5hcHBlbmRDaGlsZChzdHlsZSk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGluc2VydEJ5U2VsZWN0b3I7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuZnVuY3Rpb24gaW5zZXJ0U3R5bGVFbGVtZW50KG9wdGlvbnMpIHtcbiAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIik7XG4gIG9wdGlvbnMuc2V0QXR0cmlidXRlcyhlbGVtZW50LCBvcHRpb25zLmF0dHJpYnV0ZXMpO1xuICBvcHRpb25zLmluc2VydChlbGVtZW50LCBvcHRpb25zLm9wdGlvbnMpO1xuICByZXR1cm4gZWxlbWVudDtcbn1cbm1vZHVsZS5leHBvcnRzID0gaW5zZXJ0U3R5bGVFbGVtZW50OyIsIlwidXNlIHN0cmljdFwiO1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cbmZ1bmN0aW9uIHNldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcyhzdHlsZUVsZW1lbnQpIHtcbiAgdmFyIG5vbmNlID0gdHlwZW9mIF9fd2VicGFja19ub25jZV9fICE9PSBcInVuZGVmaW5lZFwiID8gX193ZWJwYWNrX25vbmNlX18gOiBudWxsO1xuICBpZiAobm9uY2UpIHtcbiAgICBzdHlsZUVsZW1lbnQuc2V0QXR0cmlidXRlKFwibm9uY2VcIiwgbm9uY2UpO1xuICB9XG59XG5tb2R1bGUuZXhwb3J0cyA9IHNldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlczsiLCJcInVzZSBzdHJpY3RcIjtcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5mdW5jdGlvbiBhcHBseShzdHlsZUVsZW1lbnQsIG9wdGlvbnMsIG9iaikge1xuICB2YXIgY3NzID0gXCJcIjtcbiAgaWYgKG9iai5zdXBwb3J0cykge1xuICAgIGNzcyArPSBcIkBzdXBwb3J0cyAoXCIuY29uY2F0KG9iai5zdXBwb3J0cywgXCIpIHtcIik7XG4gIH1cbiAgaWYgKG9iai5tZWRpYSkge1xuICAgIGNzcyArPSBcIkBtZWRpYSBcIi5jb25jYXQob2JqLm1lZGlhLCBcIiB7XCIpO1xuICB9XG4gIHZhciBuZWVkTGF5ZXIgPSB0eXBlb2Ygb2JqLmxheWVyICE9PSBcInVuZGVmaW5lZFwiO1xuICBpZiAobmVlZExheWVyKSB7XG4gICAgY3NzICs9IFwiQGxheWVyXCIuY29uY2F0KG9iai5sYXllci5sZW5ndGggPiAwID8gXCIgXCIuY29uY2F0KG9iai5sYXllcikgOiBcIlwiLCBcIiB7XCIpO1xuICB9XG4gIGNzcyArPSBvYmouY3NzO1xuICBpZiAobmVlZExheWVyKSB7XG4gICAgY3NzICs9IFwifVwiO1xuICB9XG4gIGlmIChvYmoubWVkaWEpIHtcbiAgICBjc3MgKz0gXCJ9XCI7XG4gIH1cbiAgaWYgKG9iai5zdXBwb3J0cykge1xuICAgIGNzcyArPSBcIn1cIjtcbiAgfVxuICB2YXIgc291cmNlTWFwID0gb2JqLnNvdXJjZU1hcDtcbiAgaWYgKHNvdXJjZU1hcCAmJiB0eXBlb2YgYnRvYSAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgIGNzcyArPSBcIlxcbi8qIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsXCIuY29uY2F0KGJ0b2EodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KHNvdXJjZU1hcCkpKSksIFwiICovXCIpO1xuICB9XG5cbiAgLy8gRm9yIG9sZCBJRVxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgICovXG4gIG9wdGlvbnMuc3R5bGVUYWdUcmFuc2Zvcm0oY3NzLCBzdHlsZUVsZW1lbnQsIG9wdGlvbnMub3B0aW9ucyk7XG59XG5mdW5jdGlvbiByZW1vdmVTdHlsZUVsZW1lbnQoc3R5bGVFbGVtZW50KSB7XG4gIC8vIGlzdGFuYnVsIGlnbm9yZSBpZlxuICBpZiAoc3R5bGVFbGVtZW50LnBhcmVudE5vZGUgPT09IG51bGwpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgc3R5bGVFbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoc3R5bGVFbGVtZW50KTtcbn1cblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5mdW5jdGlvbiBkb21BUEkob3B0aW9ucykge1xuICBpZiAodHlwZW9mIGRvY3VtZW50ID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHVwZGF0ZTogZnVuY3Rpb24gdXBkYXRlKCkge30sXG4gICAgICByZW1vdmU6IGZ1bmN0aW9uIHJlbW92ZSgpIHt9XG4gICAgfTtcbiAgfVxuICB2YXIgc3R5bGVFbGVtZW50ID0gb3B0aW9ucy5pbnNlcnRTdHlsZUVsZW1lbnQob3B0aW9ucyk7XG4gIHJldHVybiB7XG4gICAgdXBkYXRlOiBmdW5jdGlvbiB1cGRhdGUob2JqKSB7XG4gICAgICBhcHBseShzdHlsZUVsZW1lbnQsIG9wdGlvbnMsIG9iaik7XG4gICAgfSxcbiAgICByZW1vdmU6IGZ1bmN0aW9uIHJlbW92ZSgpIHtcbiAgICAgIHJlbW92ZVN0eWxlRWxlbWVudChzdHlsZUVsZW1lbnQpO1xuICAgIH1cbiAgfTtcbn1cbm1vZHVsZS5leHBvcnRzID0gZG9tQVBJOyIsIlwidXNlIHN0cmljdFwiO1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cbmZ1bmN0aW9uIHN0eWxlVGFnVHJhbnNmb3JtKGNzcywgc3R5bGVFbGVtZW50KSB7XG4gIGlmIChzdHlsZUVsZW1lbnQuc3R5bGVTaGVldCkge1xuICAgIHN0eWxlRWxlbWVudC5zdHlsZVNoZWV0LmNzc1RleHQgPSBjc3M7XG4gIH0gZWxzZSB7XG4gICAgd2hpbGUgKHN0eWxlRWxlbWVudC5maXJzdENoaWxkKSB7XG4gICAgICBzdHlsZUVsZW1lbnQucmVtb3ZlQ2hpbGQoc3R5bGVFbGVtZW50LmZpcnN0Q2hpbGQpO1xuICAgIH1cbiAgICBzdHlsZUVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY3NzKSk7XG4gIH1cbn1cbm1vZHVsZS5leHBvcnRzID0gc3R5bGVUYWdUcmFuc2Zvcm07IiwiLy8gVGhlIG1vZHVsZSBjYWNoZVxudmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9IHt9O1xuXG4vLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcblx0dmFyIGNhY2hlZE1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF07XG5cdGlmIChjYWNoZWRNb2R1bGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiBjYWNoZWRNb2R1bGUuZXhwb3J0cztcblx0fVxuXHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuXHR2YXIgbW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXSA9IHtcblx0XHRpZDogbW9kdWxlSWQsXG5cdFx0Ly8gbm8gbW9kdWxlLmxvYWRlZCBuZWVkZWRcblx0XHRleHBvcnRzOiB7fVxuXHR9O1xuXG5cdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuXHRfX3dlYnBhY2tfbW9kdWxlc19fW21vZHVsZUlkXShtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuXHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuXHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG59XG5cbiIsIi8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSAobW9kdWxlKSA9PiB7XG5cdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuXHRcdCgpID0+IChtb2R1bGVbJ2RlZmF1bHQnXSkgOlxuXHRcdCgpID0+IChtb2R1bGUpO1xuXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCB7IGE6IGdldHRlciB9KTtcblx0cmV0dXJuIGdldHRlcjtcbn07IiwiLy8gZGVmaW5lIGdldHRlciBmdW5jdGlvbnMgZm9yIGhhcm1vbnkgZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5kID0gKGV4cG9ydHMsIGRlZmluaXRpb24pID0+IHtcblx0Zm9yKHZhciBrZXkgaW4gZGVmaW5pdGlvbikge1xuXHRcdGlmKF9fd2VicGFja19yZXF1aXJlX18ubyhkZWZpbml0aW9uLCBrZXkpICYmICFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywga2V5KSkge1xuXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGRlZmluaXRpb25ba2V5XSB9KTtcblx0XHR9XG5cdH1cbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5vID0gKG9iaiwgcHJvcCkgPT4gKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApKSIsIl9fd2VicGFja19yZXF1aXJlX18ubmMgPSB1bmRlZmluZWQ7IiwiXG4gICAgICBpbXBvcnQgQVBJIGZyb20gXCIhLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICBpbXBvcnQgZG9tQVBJIGZyb20gXCIhLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRGbiBmcm9tIFwiIS4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydEJ5U2VsZWN0b3IuanNcIjtcbiAgICAgIGltcG9ydCBzZXRBdHRyaWJ1dGVzIGZyb20gXCIhLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0U3R5bGVFbGVtZW50IGZyb20gXCIhLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzXCI7XG4gICAgICBpbXBvcnQgc3R5bGVUYWdUcmFuc2Zvcm1GbiBmcm9tIFwiIS4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzXCI7XG4gICAgICBpbXBvcnQgY29udGVudCwgKiBhcyBuYW1lZEV4cG9ydCBmcm9tIFwiISEuLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL2F2YXRhci5jc3NcIjtcbiAgICAgIFxuICAgICAgXG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuc3R5bGVUYWdUcmFuc2Zvcm0gPSBzdHlsZVRhZ1RyYW5zZm9ybUZuO1xub3B0aW9ucy5zZXRBdHRyaWJ1dGVzID0gc2V0QXR0cmlidXRlcztcbm9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi9hdmF0YXIuY3NzXCI7XG4gICAgICAgZXhwb3J0IGRlZmF1bHQgY29udGVudCAmJiBjb250ZW50LmxvY2FscyA/IGNvbnRlbnQubG9jYWxzIDogdW5kZWZpbmVkO1xuIiwiXG4gICAgICBpbXBvcnQgQVBJIGZyb20gXCIhLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICBpbXBvcnQgZG9tQVBJIGZyb20gXCIhLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRGbiBmcm9tIFwiIS4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydEJ5U2VsZWN0b3IuanNcIjtcbiAgICAgIGltcG9ydCBzZXRBdHRyaWJ1dGVzIGZyb20gXCIhLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0U3R5bGVFbGVtZW50IGZyb20gXCIhLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzXCI7XG4gICAgICBpbXBvcnQgc3R5bGVUYWdUcmFuc2Zvcm1GbiBmcm9tIFwiIS4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzXCI7XG4gICAgICBpbXBvcnQgY29udGVudCwgKiBhcyBuYW1lZEV4cG9ydCBmcm9tIFwiISEuLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL2JhZGdlLmNzc1wiO1xuICAgICAgXG4gICAgICBcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5zdHlsZVRhZ1RyYW5zZm9ybSA9IHN0eWxlVGFnVHJhbnNmb3JtRm47XG5vcHRpb25zLnNldEF0dHJpYnV0ZXMgPSBzZXRBdHRyaWJ1dGVzO1xub3B0aW9ucy5pbnNlcnQgPSBpbnNlcnRGbi5iaW5kKG51bGwsIFwiaGVhZFwiKTtcbm9wdGlvbnMuZG9tQVBJID0gZG9tQVBJO1xub3B0aW9ucy5pbnNlcnRTdHlsZUVsZW1lbnQgPSBpbnNlcnRTdHlsZUVsZW1lbnQ7XG5cbnZhciB1cGRhdGUgPSBBUEkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgKiBmcm9tIFwiISEuLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL2JhZGdlLmNzc1wiO1xuICAgICAgIGV4cG9ydCBkZWZhdWx0IGNvbnRlbnQgJiYgY29udGVudC5sb2NhbHMgPyBjb250ZW50LmxvY2FscyA6IHVuZGVmaW5lZDtcbiIsIlxuICAgICAgaW1wb3J0IEFQSSBmcm9tIFwiIS4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgaW1wb3J0IGRvbUFQSSBmcm9tIFwiIS4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlRG9tQVBJLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0Rm4gZnJvbSBcIiEuLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRCeVNlbGVjdG9yLmpzXCI7XG4gICAgICBpbXBvcnQgc2V0QXR0cmlidXRlcyBmcm9tIFwiIS4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydFN0eWxlRWxlbWVudCBmcm9tIFwiIS4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydFN0eWxlRWxlbWVudC5qc1wiO1xuICAgICAgaW1wb3J0IHN0eWxlVGFnVHJhbnNmb3JtRm4gZnJvbSBcIiEuLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZVRhZ1RyYW5zZm9ybS5qc1wiO1xuICAgICAgaW1wb3J0IGNvbnRlbnQsICogYXMgbmFtZWRFeHBvcnQgZnJvbSBcIiEhLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi9jb2xvci5jc3NcIjtcbiAgICAgIFxuICAgICAgXG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuc3R5bGVUYWdUcmFuc2Zvcm0gPSBzdHlsZVRhZ1RyYW5zZm9ybUZuO1xub3B0aW9ucy5zZXRBdHRyaWJ1dGVzID0gc2V0QXR0cmlidXRlcztcbm9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi9jb2xvci5jc3NcIjtcbiAgICAgICBleHBvcnQgZGVmYXVsdCBjb250ZW50ICYmIGNvbnRlbnQubG9jYWxzID8gY29udGVudC5sb2NhbHMgOiB1bmRlZmluZWQ7XG4iLCJcbiAgICAgIGltcG9ydCBBUEkgZnJvbSBcIiEuLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgIGltcG9ydCBkb21BUEkgZnJvbSBcIiEuLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZURvbUFQSS5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydEZuIGZyb20gXCIhLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0QnlTZWxlY3Rvci5qc1wiO1xuICAgICAgaW1wb3J0IHNldEF0dHJpYnV0ZXMgZnJvbSBcIiEuLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRTdHlsZUVsZW1lbnQgZnJvbSBcIiEuLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRTdHlsZUVsZW1lbnQuanNcIjtcbiAgICAgIGltcG9ydCBzdHlsZVRhZ1RyYW5zZm9ybUZuIGZyb20gXCIhLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanNcIjtcbiAgICAgIGltcG9ydCBjb250ZW50LCAqIGFzIG5hbWVkRXhwb3J0IGZyb20gXCIhIS4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vZm9udC5jc3NcIjtcbiAgICAgIFxuICAgICAgXG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuc3R5bGVUYWdUcmFuc2Zvcm0gPSBzdHlsZVRhZ1RyYW5zZm9ybUZuO1xub3B0aW9ucy5zZXRBdHRyaWJ1dGVzID0gc2V0QXR0cmlidXRlcztcbm9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi9mb250LmNzc1wiO1xuICAgICAgIGV4cG9ydCBkZWZhdWx0IGNvbnRlbnQgJiYgY29udGVudC5sb2NhbHMgPyBjb250ZW50LmxvY2FscyA6IHVuZGVmaW5lZDtcbiIsImltcG9ydCB7XG4gIENoaWxkcmVuLFxuICBjbG9uZUVsZW1lbnQsXG4gIGZvcndhcmRSZWYsXG4gIGlzVmFsaWRFbGVtZW50LFxuICBSZWFjdEVsZW1lbnQsXG4gIFJlZixcbn0gZnJvbSBcInJlYWN0XCI7XG5cbmZ1bmN0aW9uIGNvbXBvc2VSZWZzPFQ+KC4uLnJlZnM6IChSZWY8VD4gfCB1bmRlZmluZWQpW10pIHtcbiAgcmV0dXJuIChub2RlOiBUKSA9PiB7XG4gICAgcmVmcy5mb3JFYWNoKChyZWYpID0+IHtcbiAgICAgIGlmIChyZWYpIHtcbiAgICAgICAgaWYgKHR5cGVvZiByZWYgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgIHJlZihub2RlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAocmVmIGFzIFJlYWN0Lk11dGFibGVSZWZPYmplY3Q8VD4pLmN1cnJlbnQgPSBub2RlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH07XG59XG5cbmludGVyZmFjZSBDb21wb3NlclByb3BzIGV4dGVuZHMgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTEVsZW1lbnQ+IHtcbiAgY2hpbGRyZW4/OiBSZWFjdC5SZWFjdE5vZGU7XG59XG5cbmNvbnN0IENvbXBvc2VyID0gZm9yd2FyZFJlZjxIVE1MRWxlbWVudCwgQ29tcG9zZXJQcm9wcz4oXG4gICh7IGNoaWxkcmVuLCAuLi5jb21wb3NlclByb3BzIH0sIHJlZikgPT4ge1xuICAgIGNvbnN0IGNoaWxkQXJyYXkgPSBDaGlsZHJlbi50b0FycmF5KGNoaWxkcmVuKTtcblxuICAgIGlmIChjaGlsZEFycmF5Lmxlbmd0aCA+IDEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkNvbXBvc2VyIGNhbiBvbmx5IGhhdmUgb25lIGNoaWxkXCIpO1xuICAgIH1cblxuICAgIGNvbnN0IGlzVmFsaWRDaGlsZCA9IGlzVmFsaWRFbGVtZW50KGNoaWxkQXJyYXlbMF0pO1xuXG4gICAgaWYgKCFpc1ZhbGlkQ2hpbGQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcImNoaWxkIHNob3VsZCBiZSBSZWFjdCBub2RlIVwiKTtcbiAgICB9XG5cbiAgICBjb25zdCBjaGlsZCA9IGNoaWxkQXJyYXlbMF0gYXMgUmVhY3RFbGVtZW50O1xuICAgIGNvbnN0IGNoaWxkUmVmID0gZ2V0RWxlbWVudFJlZihjaGlsZCk7XG5cbiAgICBjb25zdCBtZXJnZWRQcm9wcyA9IG1lcmdlUHJvcHMoY29tcG9zZXJQcm9wcywgY2hpbGQucHJvcHMpO1xuXG4gICAgcmV0dXJuIGNsb25lRWxlbWVudChjaGlsZCwge1xuICAgICAgLi4ubWVyZ2VkUHJvcHMsXG4gICAgICByZWY6IHJlZiA/IGNvbXBvc2VSZWZzKHJlZiwgY2hpbGRSZWYpIDogY2hpbGRSZWYsXG4gICAgfSk7XG4gIH1cbik7XG5cbkNvbXBvc2VyLmRpc3BsYXlOYW1lID0gXCJDb21wb3NlclwiO1xuXG5mdW5jdGlvbiBtZXJnZVByb3BzKFxuICBjb21wb3NlclByb3BzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICBjaGlsZFByb3BzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+XG4pIHtcbiAgY29uc3Qgb3ZlcnJpZGVQcm9wcyA9IHsgLi4uY2hpbGRQcm9wcyB9O1xuXG4gIGZvciAoY29uc3QgcHJvcE5hbWUgaW4gY29tcG9zZXJQcm9wcykge1xuICAgIGNvbnN0IGNvbXBvc2VyUHJvcFZhbHVlID0gY29tcG9zZXJQcm9wc1twcm9wTmFtZV07XG4gICAgY29uc3QgY2hpbGRQcm9wVmFsdWUgPSBjaGlsZFByb3BzW3Byb3BOYW1lXTtcblxuICAgIGNvbnN0IGlzSGFuZGxlciA9IC9eb25bQS1aXS8udGVzdChwcm9wTmFtZSk7XG4gICAgaWYgKGlzSGFuZGxlcikge1xuICAgICAgaWYgKGNvbXBvc2VyUHJvcFZhbHVlICYmIGNoaWxkUHJvcFZhbHVlKSB7XG4gICAgICAgIG92ZXJyaWRlUHJvcHNbcHJvcE5hbWVdID0gKC4uLmFyZ3M6IHVua25vd25bXSkgPT4ge1xuICAgICAgICAgIGNoaWxkUHJvcFZhbHVlKC4uLmFyZ3MpO1xuICAgICAgICAgIGNvbXBvc2VyUHJvcFZhbHVlKC4uLmFyZ3MpO1xuICAgICAgICB9O1xuICAgICAgfSBlbHNlIGlmIChjb21wb3NlclByb3BWYWx1ZSkge1xuICAgICAgICBvdmVycmlkZVByb3BzW3Byb3BOYW1lXSA9IGNvbXBvc2VyUHJvcFZhbHVlO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAocHJvcE5hbWUgPT09IFwic3R5bGVcIikge1xuICAgICAgb3ZlcnJpZGVQcm9wc1twcm9wTmFtZV0gPSB7IC4uLmNvbXBvc2VyUHJvcFZhbHVlLCAuLi5jaGlsZFByb3BWYWx1ZSB9O1xuICAgIH0gZWxzZSBpZiAocHJvcE5hbWUgPT09IFwiY2xhc3NOYW1lXCIpIHtcbiAgICAgIG92ZXJyaWRlUHJvcHNbcHJvcE5hbWVdID0gW2NvbXBvc2VyUHJvcFZhbHVlLCBjaGlsZFByb3BWYWx1ZV1cbiAgICAgICAgLmZpbHRlcihCb29sZWFuKVxuICAgICAgICAuam9pbihcIiBcIik7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHsgLi4uY29tcG9zZXJQcm9wcywgLi4ub3ZlcnJpZGVQcm9wcyB9O1xufVxuXG5mdW5jdGlvbiBnZXRFbGVtZW50UmVmKGVsZW1lbnQ6IFJlYWN0RWxlbWVudCkge1xuICBsZXQgZ2V0dGVyID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlbGVtZW50LnByb3BzLCBcInJlZlwiKT8uZ2V0O1xuICBsZXQgbWF5V2FybiA9IGdldHRlciAmJiBcImlzUmVhY3RXYXJuaW5nXCIgaW4gZ2V0dGVyICYmIGdldHRlci5pc1JlYWN0V2FybmluZztcbiAgaWYgKG1heVdhcm4pIHtcbiAgICByZXR1cm4gKGVsZW1lbnQgYXMgYW55KS5yZWY7XG4gIH1cblxuICBnZXR0ZXIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGVsZW1lbnQsIFwicmVmXCIpPy5nZXQ7XG4gIG1heVdhcm4gPSBnZXR0ZXIgJiYgXCJpc1JlYWN0V2FybmluZ1wiIGluIGdldHRlciAmJiBnZXR0ZXIuaXNSZWFjdFdhcm5pbmc7XG4gIGlmIChtYXlXYXJuKSB7XG4gICAgcmV0dXJuIChlbGVtZW50LnByb3BzIGFzIHsgcmVmPzogUmVhY3QuUmVmPHVua25vd24+IH0pLnJlZjtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgKGVsZW1lbnQucHJvcHMgYXMgeyByZWY/OiBSZWFjdC5SZWY8dW5rbm93bj4gfSkucmVmIHx8IChlbGVtZW50IGFzIGFueSkucmVmXG4gICk7XG59XG5cbmV4cG9ydCB0eXBlIHsgQ29tcG9zZXJQcm9wcyB9O1xuZXhwb3J0IGRlZmF1bHQgQ29tcG9zZXI7XG4iLCJpbXBvcnQgXCIuL2JhZGdlLmNzc1wiO1xuaW1wb3J0IHsgY29sb3JzIH0gZnJvbSBcIi4uLy4uL3N0eWxlcy90b2tlbi9jb2xvcnNcIjtcbmltcG9ydCBcIi4uLy4uL3N0eWxlcy90b2tlbi9jb2xvci5jc3NcIjtcbmltcG9ydCBcIi4uLy4uL3N0eWxlcy90b2tlbi9mb250LmNzc1wiO1xuaW1wb3J0IENvbXBvc2VyIGZyb20gXCIuLi9jb3JlL2NvbXBvc2VyXCI7XG5pbXBvcnQgeyBSZWFjdE5vZGUgfSBmcm9tIFwicmVhY3RcIjtcblxuaW50ZXJmYWNlIEJhc2VCYWRnZVByb3BzIGV4dGVuZHMgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+IHtcbiAgYm9yZGVyQ29sb3I/OiBrZXlvZiB0eXBlb2YgY29sb3JzO1xuICB0ZXh0Q29sb3I/OiBrZXlvZiB0eXBlb2YgY29sb3JzO1xuICBiYWNrZ3JvdW5kQ29sb3I/OiBrZXlvZiB0eXBlb2YgY29sb3JzO1xuICBzaXplPzogXCJsXCIgfCBcIm1cIiB8IFwiclwiIHwgXCJzXCIgfCBcInNtXCI7XG4gIGFzQ2hpbGQ/OiBib29sZWFuO1xuICBjaGlsZHJlbj86IFJlYWN0Tm9kZTtcbn1cblxuZXhwb3J0IGNvbnN0IEJhc2VCYWRnZSA9IChwcm9wczogQmFzZUJhZGdlUHJvcHMpID0+IHtcbiAgY29uc3Qge1xuICAgIGFzQ2hpbGQgPSBmYWxzZSxcbiAgICBib3JkZXJDb2xvcixcbiAgICB0ZXh0Q29sb3IgPSBcImJsYWNrXCIsXG4gICAgYmFja2dyb3VuZENvbG9yLFxuICAgIHNpemUgPSBcImxcIixcbiAgICBzdHlsZSxcbiAgICBjaGlsZHJlbixcbiAgICBjbGFzc05hbWUsXG4gIH0gPSBwcm9wcztcblxuICBjb25zdCBDb21wID0gYXNDaGlsZCA/IENvbXBvc2VyIDogXCJkaXZcIjtcblxuICBjb25zdCBjb21wb3NlZENsYXNzTmFtZSA9IGBudXJpLXRoZW1lIGJhc2UtYmFkZ2UgJHtzaXplfSBib3JkZXItJHtib3JkZXJDb2xvcn0gdGV4dC0ke3RleHRDb2xvcn0gYmFja2dyb3VuZC0ke2JhY2tncm91bmRDb2xvcn0gJHtjbGFzc05hbWV9YDtcblxuICByZXR1cm4gKFxuICAgIDxDb21wIHN0eWxlPXtzdHlsZX0gY2xhc3NOYW1lPXtjb21wb3NlZENsYXNzTmFtZX0+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9Db21wPlxuICApO1xufTtcblxuZXhwb3J0IGNvbnN0IE9wdGlvbkJhZGdlID0gKFxuICBwcm9wczogT21pdDxCYXNlQmFkZ2VQcm9wcywgXCJhc0NoaWxkXCIgfCBcImNoaWxkcmVuXCI+ICYge1xuICAgIG9wdGlvbjogUmVhY3ROb2RlO1xuICB9XG4pID0+IHtcbiAgY29uc3QgeyBvcHRpb24gfSA9IHByb3BzO1xuXG4gIHJldHVybiA8QmFzZUJhZGdlIHsuLi5wcm9wc30+e29wdGlvbn08L0Jhc2VCYWRnZT47XG59O1xuXG5leHBvcnQgY29uc3QgSWNvblRleHRCYWRnZSA9IChcbiAgcHJvcHM6IE9taXQ8QmFzZUJhZGdlUHJvcHMsIFwiYXNDaGlsZFwiIHwgXCJjaGlsZHJlblwiPiAmIHtcbiAgICBpY29uOiBSZWFjdE5vZGU7XG4gICAgdGV4dDogUmVhY3ROb2RlO1xuICB9XG4pID0+IHtcbiAgY29uc3QgeyBpY29uLCB0ZXh0IH0gPSBwcm9wcztcblxuICByZXR1cm4gKFxuICAgIDxCYXNlQmFkZ2Ugey4uLnByb3BzfT5cbiAgICAgIHtpY29ufVxuICAgICAgPHNwYW4+e3RleHR9PC9zcGFuPlxuICAgIDwvQmFzZUJhZGdlPlxuICApO1xufTtcblxuZXhwb3J0IGNvbnN0IEljb25UZXh0T3B0aW9uQmFkZ2UgPSAoXG4gIHByb3BzOiBPbWl0PEJhc2VCYWRnZVByb3BzLCBcImFzQ2hpbGRcIiB8IFwiY2hpbGRyZW5cIj4gJiB7XG4gICAgaWNvbjogUmVhY3ROb2RlO1xuICAgIHRleHQ6IFJlYWN0Tm9kZTtcbiAgICBvcHRpb246IFJlYWN0Tm9kZTtcbiAgfVxuKSA9PiB7XG4gIGNvbnN0IHsgaWNvbiwgdGV4dCwgb3B0aW9uIH0gPSBwcm9wcztcblxuICByZXR1cm4gKFxuICAgIDxCYXNlQmFkZ2Ugey4uLnByb3BzfSBjbGFzc05hbWU9e2BpY29uLXRleHQtb3B0aW9uYH0+XG4gICAgICA8c3Bhbj5cbiAgICAgICAge2ljb259XG4gICAgICAgIDxzcGFuPnt0ZXh0fTwvc3Bhbj5cbiAgICAgIDwvc3Bhbj5cbiAgICAgIHtvcHRpb259XG4gICAgPC9CYXNlQmFkZ2U+XG4gICk7XG59O1xuIiwiaW1wb3J0IHsgUmVhY3ROb2RlLCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFwiLi9hdmF0YXIuY3NzXCI7XG5pbXBvcnQgeyBCYXNlQmFkZ2UgfSBmcm9tIFwiLi4vYmFkZ2UvYmFkZ2VcIjtcbmludGVyZmFjZSBBdmF0YXJQcm9wcyB7XG4gIHNpemU6IFwieGxcIiB8IFwibFwiIHwgXCJtXCIgfCBcInNcIjtcbiAgc3JjPzogc3RyaW5nO1xuICBhbHQ/OiBzdHJpbmc7XG4gIGJhZGdlT3B0aW9uPzogUmVhY3ROb2RlIHwgc3RyaW5nO1xufVxuXG5jb25zdCBBdmF0YXIgPSAocHJvcHM6IEF2YXRhclByb3BzKSA9PiB7XG4gIGNvbnN0IHsgc2l6ZSwgc3JjLCBhbHQsIGJhZGdlT3B0aW9uIH0gPSBwcm9wcztcbiAgY29uc3QgW2lzSW1hZ2VEb3dubG9hZCwgc2V0SXNJbWFnZURvd25sb2FkXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPXtgYXZhdGFyICR7c2l6ZX1gfT5cbiAgICAgIDxpbWdcbiAgICAgICAgc3JjPXtzcmN9XG4gICAgICAgIGFsdD17YWx0ID8/IFwiYXZhdGFyXCJ9XG4gICAgICAgIGNsYXNzTmFtZT17YGF2YXRhciAke3NpemV9ICR7IWlzSW1hZ2VEb3dubG9hZCA/IFwiaGlkZGVuXCIgOiBcIlwifWB9XG4gICAgICAgIG9uTG9hZD17KCkgPT4gc2V0SXNJbWFnZURvd25sb2FkKHRydWUpfVxuICAgICAgLz5cbiAgICAgIHshaXNJbWFnZURvd25sb2FkICYmIChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e2BhdmF0YXIgYXZhdGFyLXNrZWxldG9uICR7c2l6ZX1gfT5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImF2YXRhciBza2VsZXRvbi1hbmltYXRpb25cIiAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICl9XG5cbiAgICAgIDxCYXNlQmFkZ2VcbiAgICAgICAgYXNDaGlsZFxuICAgICAgICBzdHlsZT17e1xuICAgICAgICAgIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gICAgICAgICAgcmlnaHQ6IFwiMFwiLFxuICAgICAgICAgIGJvdHRvbTogXCIwXCIsXG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIHtiYWRnZU9wdGlvbn1cbiAgICAgIDwvQmFzZUJhZGdlPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgQXZhdGFyO1xuIiwiZXhwb3J0ICogZnJvbSBcIi4vY29tcG9uZW50cy9hdmF0YXIvYXZhdGFyXCI7XG4iXSwibmFtZXMiOlsiQ2hpbGRyZW4iLCJjbG9uZUVsZW1lbnQiLCJmb3J3YXJkUmVmIiwiaXNWYWxpZEVsZW1lbnQiLCJjb21wb3NlUmVmcyIsInJlZnMiLCJfaSIsImFyZ3VtZW50cyIsImxlbmd0aCIsIm5vZGUiLCJmb3JFYWNoIiwicmVmIiwiY3VycmVudCIsIkNvbXBvc2VyIiwiX2EiLCJjaGlsZHJlbiIsImNvbXBvc2VyUHJvcHMiLCJfX3Jlc3QiLCJjaGlsZEFycmF5IiwidG9BcnJheSIsIkVycm9yIiwiaXNWYWxpZENoaWxkIiwiY2hpbGQiLCJjaGlsZFJlZiIsImdldEVsZW1lbnRSZWYiLCJtZXJnZWRQcm9wcyIsIm1lcmdlUHJvcHMiLCJwcm9wcyIsIl9fYXNzaWduIiwiZGlzcGxheU5hbWUiLCJjaGlsZFByb3BzIiwib3ZlcnJpZGVQcm9wcyIsInByb3BOYW1lIiwiY29tcG9zZXJQcm9wVmFsdWUiLCJjaGlsZFByb3BWYWx1ZSIsImlzSGFuZGxlciIsInRlc3QiLCJhcmdzIiwiYXBwbHkiLCJmaWx0ZXIiLCJCb29sZWFuIiwiam9pbiIsImVsZW1lbnQiLCJnZXR0ZXIiLCJPYmplY3QiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJnZXQiLCJtYXlXYXJuIiwiaXNSZWFjdFdhcm5pbmciLCJfYiIsIkJhc2VCYWRnZSIsImFzQ2hpbGQiLCJib3JkZXJDb2xvciIsInRleHRDb2xvciIsImJhY2tncm91bmRDb2xvciIsIl9jIiwic2l6ZSIsInN0eWxlIiwiY2xhc3NOYW1lIiwiQ29tcCIsImNvbXBvc2VkQ2xhc3NOYW1lIiwiY29uY2F0IiwiX2pzeCIsIk9wdGlvbkJhZGdlIiwib3B0aW9uIiwiSWNvblRleHRCYWRnZSIsImljb24iLCJ0ZXh0IiwiX2pzeHMiLCJJY29uVGV4dE9wdGlvbkJhZGdlIiwidXNlU3RhdGUiLCJBdmF0YXIiLCJzcmMiLCJhbHQiLCJiYWRnZU9wdGlvbiIsImlzSW1hZ2VEb3dubG9hZCIsInNldElzSW1hZ2VEb3dubG9hZCIsIm9uTG9hZCIsInBvc2l0aW9uIiwicmlnaHQiLCJib3R0b20iXSwic291cmNlUm9vdCI6IiJ9
1322
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUFBLElBQUFBLE9BQUEsR0FBQUMsbUJBQUE7QUFDQUEsbUJBQUE7QUFDQSxJQUFBQyxPQUFBLEdBQUFELG1CQUFBO0FBUUEsSUFBTUUsTUFBTSxHQUFHLFNBQVRBLE1BQU1BLENBQUlDLEtBQWtCO0VBQ3hCLElBQUFDLElBQUksR0FBNEJELEtBQUssQ0FBQUMsSUFBakM7SUFBRUMsR0FBRyxHQUF1QkYsS0FBSyxDQUFBRSxHQUE1QjtJQUFFQyxHQUFHLEdBQWtCSCxLQUFLLENBQUFHLEdBQXZCO0lBQUVDLFdBQVcsR0FBS0osS0FBSyxDQUFBSSxXQUFWO0VBQzdCLElBQUFDLEVBQUEsR0FBd0MsSUFBQVQsT0FBQSxDQUFBVSxRQUFRLEVBQUMsS0FBSyxDQUFDO0lBQXREQyxlQUFlLEdBQUFGLEVBQUE7SUFBRUcsa0JBQWtCLEdBQUFILEVBQUEsR0FBbUI7RUFFN0QsT0FDRSxJQUFBSSxhQUFBLENBQUFDLElBQUE7SUFBS0MsU0FBUyxFQUFFLFVBQUFDLE1BQUEsQ0FBVVgsSUFBSSxDQUFFO0lBQUFZLFFBQUEsR0FDOUIsSUFBQUosYUFBQSxDQUFBSyxHQUFBO01BQ0VaLEdBQUcsRUFBRUEsR0FBRztNQUNSQyxHQUFHLEVBQUVBLEdBQUcsYUFBSEEsR0FBRyxjQUFIQSxHQUFHLEdBQUksUUFBUTtNQUNwQlEsU0FBUyxFQUFFLFVBQUFDLE1BQUEsQ0FBVVgsSUFBSSxPQUFBVyxNQUFBLENBQUksQ0FBQ0wsZUFBZSxHQUFHLFFBQVEsR0FBRyxFQUFFLENBQUU7TUFDL0RRLE1BQU0sRUFBRSxTQUFSQSxNQUFNQSxDQUFBLEVBQUU7UUFBTSxPQUFBUCxrQkFBa0IsQ0FBQyxJQUFJLENBQUM7TUFBeEI7SUFBd0IsRUFDdEMsRUFDRCxDQUFDRCxlQUFlLElBQ2YsSUFBQUUsYUFBQSxDQUFBSyxHQUFBO01BQUtILFNBQVMsRUFBRSwwQkFBQUMsTUFBQSxDQUEwQlgsSUFBSSxDQUFFO01BQUFZLFFBQUEsRUFDOUMsSUFBQUosYUFBQSxDQUFBSyxHQUFBO1FBQUtILFNBQVMsRUFBQztNQUEyQjtJQUFHLEVBRWhELEVBRUQsSUFBQUYsYUFBQSxDQUFBSyxHQUFBLEVBQUNoQixPQUFBLENBQUFrQixTQUFTO01BQ1JDLE9BQU87TUFDUEMsS0FBSyxFQUFFO1FBQ0xDLFFBQVEsRUFBRSxVQUFVO1FBQ3BCQyxLQUFLLEVBQUUsR0FBRztRQUNWQyxNQUFNLEVBQUU7T0FDVDtNQUFBUixRQUFBLEVBRUFUO0lBQVcsRUFDRjtFQUFBLEVBQ1I7QUFFVixDQUFDO0FBRURrQixrQkFBQSxHQUFldkIsTUFBTTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDMUNyQixJQUFBd0IsUUFBQSxHQUFBMUIsbUJBQUE7QUFBUzJCLDBDQUFBO0VBQUFFLFVBQUE7RUFBQUMsR0FBQSxXQUFBQSxJQUFBO0lBQUEsT0FBQUMsZUFBQSxDQUFBTCxRQUFBLFlBQU87RUFBQTtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FoQjFCLG1CQUFBO0FBRUFBLG1CQUFBO0FBQ0FBLG1CQUFBO0FBQ0EsSUFBQWdDLFVBQUEsR0FBQUQsZUFBQSxDQUFBL0IsbUJBQUE7QUFZTyxJQUFNbUIsU0FBUyxHQUFHLFNBQVpBLFNBQVNBLENBQUloQixLQUFxQjtFQUUzQyxJQUFBSyxFQUFBLEdBUUVMLEtBQUssQ0FBQWlCLE9BUlE7SUFBZkEsT0FBTyxHQUFBWixFQUFBLGNBQUcsS0FBSyxHQUFBQSxFQUFBO0lBQ2Z5QixXQUFXLEdBT1Q5QixLQUFLLENBQUE4QixXQVBJO0lBQ1hDLEVBQUEsR0FNRS9CLEtBQUssQ0FBQWdDLFNBTlk7SUFBbkJBLFNBQVMsR0FBQUQsRUFBQSxjQUFHLE9BQU8sR0FBQUEsRUFBQTtJQUNuQkUsZUFBZSxHQUtiakMsS0FBSyxDQUFBaUMsZUFMUTtJQUNmQyxFQUFBLEdBSUVsQyxLQUFLLENBQUFDLElBSkc7SUFBVkEsSUFBSSxHQUFBaUMsRUFBQSxjQUFHLEdBQUcsR0FBQUEsRUFBQTtJQUNWaEIsS0FBSyxHQUdIbEIsS0FBSyxDQUFBa0IsS0FIRjtJQUNMTCxRQUFRLEdBRU5iLEtBQUssQ0FBQWEsUUFGQztJQUNSRixTQUFTLEdBQ1BYLEtBQUssQ0FBQVcsU0FERTtFQUdYLElBQU13QixJQUFJLEdBQUdsQixPQUFPLEdBQUdZLFVBQUEsV0FBUSxHQUFHLEtBQUs7RUFFdkMsSUFBTU8saUJBQWlCLEdBQUcseUJBQUF4QixNQUFBLENBQXlCWCxJQUFJLGNBQUFXLE1BQUEsQ0FBV2tCLFdBQVcsWUFBQWxCLE1BQUEsQ0FBU29CLFNBQVMsa0JBQUFwQixNQUFBLENBQWVxQixlQUFlLE9BQUFyQixNQUFBLENBQUlELFNBQVMsQ0FBRTtFQUU1SSxPQUNFLElBQUFGLGFBQUEsQ0FBQUssR0FBQSxFQUFDcUIsSUFBSTtJQUFDakIsS0FBSyxFQUFFQSxLQUFLO0lBQUVQLFNBQVMsRUFBRXlCLGlCQUFpQjtJQUFBdkIsUUFBQSxFQUM3Q0E7RUFBUSxFQUNKO0FBRVgsQ0FBQztBQXJCWVMsaUJBQVMsR0FBQU4sU0FBQTtBQXVCZixJQUFNcUIsV0FBVyxHQUFHLFNBQWRBLFdBQVdBLENBQ3RCckMsS0FFQztFQUVPLElBQUFzQyxNQUFNLEdBQUt0QyxLQUFLLENBQUFzQyxNQUFWO0VBRWQsT0FBTyxJQUFBN0IsYUFBQSxDQUFBSyxHQUFBLEVBQUNRLE9BQUEsQ0FBQU4sU0FBUyxFQUFBdUIsUUFBQSxLQUFLdkMsS0FBSztJQUFBYSxRQUFBLEVBQUd5QjtFQUFNLEdBQWE7QUFDbkQsQ0FBQztBQVJZaEIsbUJBQVcsR0FBQWUsV0FBQTtBQVVqQixJQUFNRyxhQUFhLEdBQUcsU0FBaEJBLGFBQWFBLENBQ3hCeEMsS0FHQztFQUVPLElBQUF5QyxJQUFJLEdBQVd6QyxLQUFLLENBQUF5QyxJQUFoQjtJQUFFQyxJQUFJLEdBQUsxQyxLQUFLLENBQUEwQyxJQUFWO0VBRWxCLE9BQ0UsSUFBQWpDLGFBQUEsQ0FBQUMsSUFBQSxFQUFDWSxPQUFBLENBQUFOLFNBQVMsRUFBQXVCLFFBQUEsS0FBS3ZDLEtBQUs7SUFBQWEsUUFBQSxHQUNqQjRCLElBQUksRUFDTCxJQUFBaEMsYUFBQSxDQUFBSyxHQUFBO01BQUFELFFBQUEsRUFBTzZCO0lBQUksRUFBUTtFQUFBLEdBQ1Q7QUFFaEIsQ0FBQztBQWRZcEIscUJBQWEsR0FBQWtCLGFBQUE7QUFnQm5CLElBQU1HLG1CQUFtQixHQUFHLFNBQXRCQSxtQkFBbUJBLENBQzlCM0MsS0FJQztFQUVPLElBQUF5QyxJQUFJLEdBQW1CekMsS0FBSyxDQUFBeUMsSUFBeEI7SUFBRUMsSUFBSSxHQUFhMUMsS0FBSyxDQUFBMEMsSUFBbEI7SUFBRUosTUFBTSxHQUFLdEMsS0FBSyxDQUFBc0MsTUFBVjtFQUUxQixPQUNFLElBQUE3QixhQUFBLENBQUFDLElBQUEsRUFBQ1ksT0FBQSxDQUFBTixTQUFTLEVBQUF1QixRQUFBLEtBQUt2QyxLQUFLO0lBQUVXLFNBQVMsRUFBRSxrQkFBa0I7SUFBQUUsUUFBQSxHQUNqRCxJQUFBSixhQUFBLENBQUFDLElBQUE7TUFBQUcsUUFBQSxHQUNHNEIsSUFBSSxFQUNMLElBQUFoQyxhQUFBLENBQUFLLEdBQUE7UUFBQUQsUUFBQSxFQUFPNkI7TUFBSSxFQUFRO0lBQUEsRUFDZCxFQUNOSixNQUFNO0VBQUEsR0FDRztBQUVoQixDQUFDO0FBbEJZaEIsMkJBQW1CLEdBQUFxQixtQkFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDakVoQyxJQUFBL0MsT0FBQSxHQUFBQyxtQkFBQTtBQVNBLFNBQVMrQyxXQUFXQSxDQUFBO0VBQUksSUFBQUMsSUFBQTtPQUFBLElBQUFDLEVBQUEsSUFBK0IsRUFBL0JBLEVBQUEsR0FBQUMsU0FBQSxDQUFBQyxNQUErQixFQUEvQkYsRUFBQSxFQUErQjtJQUEvQkQsSUFBQSxDQUFBQyxFQUFBLElBQUFDLFNBQUEsQ0FBQUQsRUFBQTs7RUFDdEIsT0FBTyxVQUFDRyxJQUFPO0lBQ2JKLElBQUksQ0FBQ0ssT0FBTyxDQUFDLFVBQUNDLEdBQUc7TUFDZixJQUFJQSxHQUFHLEVBQUU7UUFDUCxJQUFJLE9BQU9BLEdBQUcsS0FBSyxVQUFVLEVBQUU7VUFDN0JBLEdBQUcsQ0FBQ0YsSUFBSSxDQUFDO1FBQ1gsQ0FBQyxNQUFNO1VBQ0pFLEdBQWlDLENBQUNDLE9BQU8sR0FBR0gsSUFBSTtRQUNuRDtNQUNGO0lBQ0YsQ0FBQyxDQUFDO0VBQ0osQ0FBQztBQUNIO0FBTUEsSUFBTUksUUFBUSxHQUFHLElBQUF6RCxPQUFBLENBQUEwRCxVQUFVLEVBQ3pCLFVBQUNqRCxFQUE4QixFQUFFOEMsR0FBRztFQUFqQyxJQUFBdEMsUUFBUSxHQUFBUixFQUFBLENBQUFRLFFBQUE7SUFBSzBDLGFBQWEsR0FBQUMsTUFBQSxDQUFBbkQsRUFBQSxFQUE1QixZQUE4QixDQUFGO0VBQzNCLElBQU1vRCxVQUFVLEdBQUc3RCxPQUFBLENBQUE4RCxRQUFRLENBQUNDLE9BQU8sQ0FBQzlDLFFBQVEsQ0FBQztFQUU3QyxJQUFJNEMsVUFBVSxDQUFDVCxNQUFNLEdBQUcsQ0FBQyxFQUFFO0lBQ3pCLE1BQU0sSUFBSVksS0FBSyxDQUFDLGtDQUFrQyxDQUFDO0VBQ3JEO0VBRUEsSUFBTUMsWUFBWSxHQUFHLElBQUFqRSxPQUFBLENBQUFrRSxjQUFjLEVBQUNMLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztFQUVsRCxJQUFJLENBQUNJLFlBQVksRUFBRTtJQUNqQixNQUFNLElBQUlELEtBQUssQ0FBQyw2QkFBNkIsQ0FBQztFQUNoRDtFQUVBLElBQU1HLEtBQUssR0FBR04sVUFBVSxDQUFDLENBQUMsQ0FBaUI7RUFDM0MsSUFBTU8sUUFBUSxHQUFHQyxhQUFhLENBQUNGLEtBQUssQ0FBQztFQUVyQyxJQUFNRyxXQUFXLEdBQUdDLFVBQVUsQ0FBQ1osYUFBYSxFQUFFUSxLQUFLLENBQUMvRCxLQUFLLENBQUM7RUFFMUQsT0FBTyxJQUFBSixPQUFBLENBQUF3RSxZQUFZLEVBQUNMLEtBQUssRUFBQXhCLFFBQUEsQ0FBQUEsUUFBQSxLQUNwQjJCLFdBQVc7SUFDZGYsR0FBRyxFQUFFQSxHQUFHLEdBQUdQLFdBQVcsQ0FBQ08sR0FBRyxFQUFFYSxRQUFRLENBQUMsR0FBR0E7RUFBUSxHQUNoRDtBQUNKLENBQUMsQ0FDRjtBQUVEWCxRQUFRLENBQUNnQixXQUFXLEdBQUcsVUFBVTtBQUVqQyxTQUFTRixVQUFVQSxDQUNqQlosYUFBa0MsRUFDbENlLFVBQStCO0VBRS9CLElBQU1DLGFBQWEsR0FBQWhDLFFBQUEsS0FBUStCLFVBQVUsQ0FBRTtpQ0FFNUJFLFFBQVE7SUFDakIsSUFBTUMsaUJBQWlCLEdBQUdsQixhQUFhLENBQUNpQixRQUFRLENBQUM7SUFDakQsSUFBTUUsY0FBYyxHQUFHSixVQUFVLENBQUNFLFFBQVEsQ0FBQztJQUUzQyxJQUFNRyxTQUFTLEdBQUcsVUFBVSxDQUFDQyxJQUFJLENBQUNKLFFBQVEsQ0FBQztJQUMzQyxJQUFJRyxTQUFTLEVBQUU7TUFDYixJQUFJRixpQkFBaUIsSUFBSUMsY0FBYyxFQUFFO1FBQ3ZDSCxhQUFhLENBQUNDLFFBQVEsQ0FBQyxHQUFHO1VBQUMsSUFBQUssSUFBQTtlQUFBLElBQUEvQixFQUFBLElBQWtCLEVBQWxCQSxFQUFBLEdBQUFDLFNBQUEsQ0FBQUMsTUFBa0IsRUFBbEJGLEVBQUEsRUFBa0I7WUFBbEIrQixJQUFBLENBQUEvQixFQUFBLElBQUFDLFNBQUEsQ0FBQUQsRUFBQTs7VUFDekI0QixjQUFjLENBQUFJLEtBQUEsU0FBSUQsSUFBSTtVQUN0QkosaUJBQWlCLENBQUFLLEtBQUEsU0FBSUQsSUFBSTtRQUMzQixDQUFDO01BQ0gsQ0FBQyxNQUFNLElBQUlKLGlCQUFpQixFQUFFO1FBQzVCRixhQUFhLENBQUNDLFFBQVEsQ0FBQyxHQUFHQyxpQkFBaUI7TUFDN0M7SUFDRixDQUFDLE1BQU0sSUFBSUQsUUFBUSxLQUFLLE9BQU8sRUFBRTtNQUMvQkQsYUFBYSxDQUFDQyxRQUFRLENBQUMsR0FBQWpDLFFBQUEsQ0FBQUEsUUFBQSxLQUFRa0MsaUJBQWlCLEdBQUtDLGNBQWMsQ0FBRTtJQUN2RSxDQUFDLE1BQU0sSUFBSUYsUUFBUSxLQUFLLFdBQVcsRUFBRTtNQUNuQ0QsYUFBYSxDQUFDQyxRQUFRLENBQUMsR0FBRyxDQUFDQyxpQkFBaUIsRUFBRUMsY0FBYyxDQUFDLENBQzFESyxNQUFNLENBQUNDLE9BQU8sQ0FBQyxDQUNmQyxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQ2Q7O0VBcEJGLEtBQUssSUFBTVQsUUFBUSxJQUFJakIsYUFBYTtZQUF6QmlCLFFBQVE7O0VBdUJuQixPQUFBakMsUUFBQSxDQUFBQSxRQUFBLEtBQVlnQixhQUFhLEdBQUtnQixhQUFhO0FBQzdDO0FBRUEsU0FBU04sYUFBYUEsQ0FBQ2lCLE9BQXFCOztFQUMxQyxJQUFJQyxNQUFNLEdBQUcsQ0FBQTlFLEVBQUEsR0FBQW1CLE1BQU0sQ0FBQzRELHdCQUF3QixDQUFDRixPQUFPLENBQUNsRixLQUFLLEVBQUUsS0FBSyxDQUFDLGNBQUFLLEVBQUEsdUJBQUFBLEVBQUEsQ0FBRXNCLEdBQUc7RUFDdkUsSUFBSTBELE9BQU8sR0FBR0YsTUFBTSxJQUFJLGdCQUFnQixJQUFJQSxNQUFNLElBQUlBLE1BQU0sQ0FBQ0csY0FBYztFQUMzRSxJQUFJRCxPQUFPLEVBQUU7SUFDWCxPQUFRSCxPQUFlLENBQUMvQixHQUFHO0VBQzdCO0VBRUFnQyxNQUFNLEdBQUcsQ0FBQXBELEVBQUEsR0FBQVAsTUFBTSxDQUFDNEQsd0JBQXdCLENBQUNGLE9BQU8sRUFBRSxLQUFLLENBQUMsY0FBQW5ELEVBQUEsdUJBQUFBLEVBQUEsQ0FBRUosR0FBRztFQUM3RDBELE9BQU8sR0FBR0YsTUFBTSxJQUFJLGdCQUFnQixJQUFJQSxNQUFNLElBQUlBLE1BQU0sQ0FBQ0csY0FBYztFQUN2RSxJQUFJRCxPQUFPLEVBQUU7SUFDWCxPQUFRSCxPQUFPLENBQUNsRixLQUFzQyxDQUFDbUQsR0FBRztFQUM1RDtFQUVBLE9BQ0crQixPQUFPLENBQUNsRixLQUFzQyxDQUFDbUQsR0FBRyxJQUFLK0IsT0FBZSxDQUFDL0IsR0FBRztBQUUvRTtBQUdBN0Isa0JBQUEsR0FBZStCLFFBQVE7Ozs7Ozs7Ozs7Ozs7O0FDMUd2QjtBQUM2RztBQUNqQjtBQUM1Riw4QkFBOEIsbUZBQTJCLENBQUMsNEZBQXFDO0FBQy9GO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLCtGQUErRixZQUFZLE1BQU0sWUFBWSxXQUFXLFlBQVksYUFBYSxhQUFhLE9BQU8sYUFBYSxNQUFNLFVBQVUsVUFBVSxNQUFNLEtBQUssVUFBVSxVQUFVLE1BQU0sS0FBSyxVQUFVLFVBQVUsTUFBTSxLQUFLLFVBQVUsVUFBVSxNQUFNLEtBQUssWUFBWSxXQUFXLFVBQVUsVUFBVSxVQUFVLFlBQVksYUFBYSxXQUFXLFdBQVcsS0FBSyxVQUFVLFVBQVUsU0FBUyxLQUFLLFlBQVksTUFBTSxLQUFLLE1BQU0sS0FBSyxLQUFLLFlBQVksTUFBTSxLQUFLLFlBQVksTUFBTSxrQ0FBa0MsdUJBQXVCLFdBQVcseUJBQXlCLG9CQUFvQiwwQkFBMEIsOEJBQThCLHVCQUF1QixLQUFLLHlCQUF5QixvQkFBb0IsbUJBQW1CLG9CQUFvQixLQUFLLG1CQUFtQixrQkFBa0IsbUJBQW1CLEtBQUssbUJBQW1CLGtCQUFrQixtQkFBbUIsS0FBSyxtQkFBbUIsa0JBQWtCLG1CQUFtQixLQUFLLHdCQUF3Qix5QkFBeUIsYUFBYSxjQUFjLGtCQUFrQixtQkFBbUIsZ0NBQWdDLHlCQUF5QixrQkFBa0IsbUJBQW1CLDZCQUE2QixvQkFBb0IscUJBQXFCLDhLQUE4Syx5Q0FBeUMsT0FBTyxLQUFLLEdBQUcsd0JBQXdCLFFBQVEsbUNBQW1DLEtBQUssVUFBVSxrQ0FBa0MsS0FBSyxHQUFHLHFCQUFxQjtBQUN2b0Q7QUFDQSxpRUFBZSx1QkFBdUIsRUFBQzs7Ozs7Ozs7Ozs7Ozs7O0FDeEV2QztBQUM2RztBQUNqQjtBQUM1Riw4QkFBOEIsbUZBQTJCLENBQUMsNEZBQXFDO0FBQy9GO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLDZGQUE2RixVQUFVLFlBQVksYUFBYSxZQUFZLGFBQWEsTUFBTSxXQUFXLFlBQVksYUFBYSxhQUFhLE9BQU8sS0FBSyxXQUFXLFlBQVksYUFBYSxhQUFhLE9BQU8sS0FBSyxXQUFXLFlBQVksYUFBYSxhQUFhLE9BQU8sS0FBSyxXQUFXLFlBQVksYUFBYSxhQUFhLE9BQU8sS0FBSyxXQUFXLFlBQVksYUFBYSxhQUFhLE9BQU8sS0FBSyxLQUFLLFlBQVksTUFBTSxLQUFLLFlBQVksTUFBTSxLQUFLLFlBQVksTUFBTSxLQUFLLFlBQVksTUFBTSxNQUFNLEtBQUssS0FBSyxZQUFZLE1BQU0sS0FBSyxZQUFZLE1BQU0sS0FBSyxZQUFZLE1BQU0sS0FBSyxZQUFZLE1BQU0sTUFBTSxLQUFLLEtBQUssWUFBWSxNQUFNLEtBQUssWUFBWSxNQUFNLEtBQUssWUFBWSxNQUFNLEtBQUssWUFBWSxNQUFNLE1BQU0sS0FBSyxVQUFVLFlBQVksY0FBYyxXQUFXLE9BQU8sS0FBSyxVQUFVLFlBQVksV0FBVyxLQUFLLHNDQUFzQyxrQkFBa0Isd0JBQXdCLDRCQUE0QixhQUFhLDBCQUEwQixtQkFBbUIsbUJBQW1CLHVDQUF1Qyx5Q0FBeUMsK0NBQStDLEtBQUssbUJBQW1CLG1CQUFtQix1Q0FBdUMseUNBQXlDLCtDQUErQyxLQUFLLG1CQUFtQixtQkFBbUIsdUNBQXVDLHlDQUF5QywrQ0FBK0MsS0FBSyxtQkFBbUIsbUJBQW1CLHVDQUF1Qyx5Q0FBeUMsMkNBQTJDLEtBQUssb0JBQW9CLG1CQUFtQix3Q0FBd0MsMENBQTBDLDJDQUEyQyxLQUFLLGlDQUFpQywwQkFBMEIscURBQXFELE9BQU8sMEJBQTBCLHFEQUFxRCxPQUFPLDJCQUEyQix1REFBdUQsT0FBTyw2QkFBNkIsdURBQXVELE9BQU8sS0FBSywyQkFBMkIsb0JBQW9CLDBDQUEwQyxPQUFPLG9CQUFvQiwwQ0FBMEMsT0FBTyxxQkFBcUIsNENBQTRDLE9BQU8sdUJBQXVCLDRDQUE0QyxPQUFPLEtBQUssNkJBQTZCLHNCQUFzQixxREFBcUQsT0FBTyxzQkFBc0IscURBQXFELE9BQU8sdUJBQXVCLHVEQUF1RCxPQUFPLHlCQUF5Qix1REFBdUQsT0FBTyxLQUFLLDBCQUEwQixvQkFBb0IsMEJBQTBCLHFDQUFxQyx3QkFBd0IsS0FBSyxpQ0FBaUMsb0JBQW9CLDBCQUEwQixlQUFlLEtBQUssR0FBRyxxQkFBcUI7QUFDdG9HO0FBQ0EsaUVBQWUsdUJBQXVCLEVBQUM7Ozs7Ozs7Ozs7Ozs7OztBQ2xIdkM7QUFDNkc7QUFDakI7QUFDNUYsOEJBQThCLG1GQUEyQixDQUFDLDRGQUFxQztBQUMvRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU8seUZBQXlGLFlBQVksYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxjQUFjLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGNBQWMsYUFBYSxhQUFhLGNBQWMsYUFBYSxhQUFhLGNBQWMsYUFBYSx1Q0FBdUMsbUNBQW1DLG1DQUFtQyxxQ0FBcUMscUNBQXFDLHFDQUFxQyxxQ0FBcUMscUNBQXFDLHFDQUFxQyxxQ0FBcUMscUNBQXFDLHFDQUFxQyxxQ0FBcUMsdUNBQXVDLHFDQUFxQyxxQ0FBcUMscUNBQXFDLHFDQUFxQyxxQ0FBcUMscUNBQXFDLHFDQUFxQyx1Q0FBdUMscUNBQXFDLHVDQUF1QyxxQ0FBcUMscUNBQXFDLG9DQUFvQyxHQUFHLHFCQUFxQjtBQUN2N0M7QUFDQSxpRUFBZSx1QkFBdUIsRUFBQzs7Ozs7Ozs7Ozs7Ozs7O0FDdkN2QztBQUM2RztBQUNqQjtBQUM1Riw4QkFBOEIsbUZBQTJCLENBQUMsNEZBQXFDO0FBQy9GO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLHdGQUF3RixZQUFZLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxjQUFjLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGNBQWMsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLHVDQUF1QywwQkFBMEIseUJBQXlCLDJCQUEyQix5QkFBeUIseUJBQXlCLDBCQUEwQiwwQkFBMEIsMEJBQTBCLDBCQUEwQiwwQkFBMEIsOEJBQThCLDJCQUEyQiw2QkFBNkIsMkJBQTJCLDJCQUEyQiw0QkFBNEIsNEJBQTRCLDRCQUE0Qiw0QkFBNEIsNEJBQTRCLGlDQUFpQyw4QkFBOEIsZ0NBQWdDLDRCQUE0QixpQ0FBaUMsR0FBRyxxQkFBcUI7QUFDMXBDO0FBQ0EsaUVBQWUsdUJBQXVCLEVBQUM7Ozs7Ozs7O0FDcEMxQjs7QUFFYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscURBQXFEO0FBQ3JEO0FBQ0E7QUFDQSxnREFBZ0Q7QUFDaEQ7QUFDQTtBQUNBLHFGQUFxRjtBQUNyRjtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0IsaUJBQWlCO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixxQkFBcUI7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Ysc0ZBQXNGLHFCQUFxQjtBQUMzRztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1YsaURBQWlELHFCQUFxQjtBQUN0RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Ysc0RBQXNELHFCQUFxQjtBQUMzRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7O0FDcEZhOztBQUViO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1REFBdUQsY0FBYztBQUNyRTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7O0FDZkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2EsTUFBTSxtQkFBTyxDQUFDLEdBQU8sNktBQTZLO0FBQy9NLGtCQUFrQixVQUFVLGVBQWUscUJBQXFCLDZCQUE2QiwwQkFBMEIsMERBQTBELDRFQUE0RSxPQUFPLHdEQUF3RCxnQkFBZ0IsR0FBRyxXQUFXLEdBQUcsWUFBWTs7Ozs7Ozs7QUNWelc7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2EscVdBQXFXLGNBQWMsNkNBQTZDLDJCQUEyQjtBQUN4YyxPQUFPLHFCQUFxQixTQUFTLGdDQUFnQyxpQ0FBaUMsOEJBQThCLHNCQUFzQixrQkFBa0IsYUFBYSxlQUFlLFlBQVksa0JBQWtCO0FBQ3RPLG1DQUFtQyw0TEFBNEwsbURBQW1ELG9DQUFvQyx1REFBdUQsY0FBYyx3QkFBd0Isa0JBQWtCLGFBQWEsZUFBZSxZQUFZLGtCQUFrQjtBQUMvZCxnQkFBZ0IsaUJBQWlCLDBCQUEwQix5REFBeUQsYUFBYSxJQUFJO0FBQ3JJLGtCQUFrQixVQUFVLGVBQWUsNEhBQTRILHlCQUF5QixzQkFBc0IsYUFBYSx1QkFBdUIsSUFBSSx3QkFBd0IsYUFBYSw0RUFBNEUsT0FBTztBQUN0WCxnQkFBZ0IsT0FBTyxzRUFBc0UsY0FBYyxvREFBb0QsbUJBQW1CLE9BQU8sbUJBQW1CLHdDQUF3QyxZQUFZLEVBQUUsYUFBYSxnQkFBZ0I7QUFDL1Isc0JBQXNCLGVBQWUseUNBQXlDLFNBQVMsaUJBQWlCLGVBQWUsaUNBQWlDLE1BQU0saUNBQWlDLG9CQUFvQixtSEFBbUgsU0FBUywyR0FBMkcsSUFBSSxtQkFBbUIsb0JBQW9CLFdBQVcsS0FBSztBQUNyZixLQUFLLGVBQWUsZ0JBQWdCLHlEQUF5RCxtQkFBbUIsd0NBQXdDLHlJQUF5SSw4QkFBOEIsa0ZBQWtGO0FBQ2paLGtCQUFrQixvQkFBb0IsYUFBYSx3QkFBd0IsdUJBQXVCLEVBQUUsU0FBUyxjQUFjLG1CQUFtQixnQkFBZ0IsTUFBTSxtQkFBbUIseURBQXlELGFBQWEseURBQXlELEVBQUUsMENBQTBDLDBDQUEwQztBQUM1WSxPQUFPLGFBQWEsSUFBSSxnQkFBZ0IsSUFBSSx3RUFBd0UsYUFBYTtBQUNqSSxnQkFBZ0IsRUFBRSw4QkFBOEIsZUFBZSx3QkFBd0IsSUFBSSxtQkFBbUIsUUFBUSxlQUFlLElBQUksRUFBRSxTQUFTLHFCQUFxQix1QkFBdUIsU0FBUyxNQUFNLGtCQUFrQiw4RkFBOEYsV0FBVyxpQkFBaUIsR0FBRyxnQkFBZ0IsR0FBRyxnQkFBZ0IsR0FBRyxxQkFBcUIsR0FBRyxrQkFBa0IsR0FBRyxnQkFBZ0I7QUFDamMsMERBQTBELEdBQUcsV0FBVztBQUN4RSxvQkFBb0IsaUJBQWlCLDRIQUE0SCxVQUFVLHFDQUFxQyxZQUFZLHNDQUFzQyw2QkFBNkIseURBQXlELHlGQUF5Rix5QkFBeUIsc0JBQXNCLGFBQWE7QUFDN2UsWUFBWSxJQUFJLHdCQUF3QixhQUFhLE9BQU8sc0RBQXNELHFCQUFxQixhQUFhLEdBQUcsNEhBQTRILFlBQVksdUJBQXVCLHFCQUFxQixxQkFBcUIsR0FBRyxxQkFBcUIsYUFBYSxxQkFBcUIsU0FBUyxVQUFVLGlCQUFpQixZQUFZLE9BQU87QUFDamQsa0JBQWtCLGFBQWEsT0FBTyxzQkFBc0Isc0JBQXNCLEdBQUcsWUFBWSxhQUFhLE9BQU8scUJBQXFCLHFCQUFxQixXQUFXLFlBQVksZUFBZSxPQUFPLDhDQUE4Qyx1QkFBdUIsYUFBYSxtQkFBbUIsZ0JBQWdCLElBQUksSUFBSSxRQUFRLGlCQUFpQixvQkFBb0IsR0FBRyxtQkFBbUIsZUFBZSxtQ0FBbUMsa0JBQWtCLGFBQWE7QUFDN2QscUJBQXFCLGNBQWMsd0JBQXdCLGFBQWEsc0NBQXNDLGlCQUFpQixlQUFlLGlDQUFpQyxhQUFhLFlBQVksMEJBQTBCLDJCQUEyQixpQkFBaUIsNkNBQTZDLDBCQUEwQixlQUFlLDBDQUEwQyx1QkFBdUIsZUFBZTtBQUNwYixlQUFlLGVBQWUsK0JBQStCLGtCQUFrQixpQkFBaUIsb0NBQW9DLGNBQWMsYUFBYSw0QkFBNEIsZ0JBQWdCLGFBQWEsOEJBQThCLDRCQUE0QixpQkFBaUIsOENBQThDLHFCQUFxQixZQUFZLGtDQUFrQyxlQUFlOzs7Ozs7OztBQ3pCdFo7O0FBRWIsSUFBSSxJQUFxQztBQUN6QyxFQUFFLHlDQUF5RDtBQUMzRCxFQUFFLEtBQUssRUFFTjs7Ozs7Ozs7QUNOWTs7QUFFYixJQUFJLElBQXFDO0FBQ3pDLEVBQUUsd0NBQXFFO0FBQ3ZFLEVBQUUsS0FBSyxFQUVOOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0xELE1BQWtHO0FBQ2xHLE1BQXdGO0FBQ3hGLE1BQStGO0FBQy9GLE1BQWtIO0FBQ2xILE1BQTJHO0FBQzNHLE1BQTJHO0FBQzNHLE1BQXVHO0FBQ3ZHO0FBQ0E7O0FBRUE7O0FBRUEsNEJBQTRCLHFHQUFtQjtBQUMvQyx3QkFBd0Isa0hBQWE7QUFDckMsaUJBQWlCLHVHQUFhO0FBQzlCLGlCQUFpQiwrRkFBTTtBQUN2Qiw2QkFBNkIsc0dBQWtCOztBQUUvQyxhQUFhLDBHQUFHLENBQUMsZ0dBQU87Ozs7QUFJaUQ7QUFDekUsT0FBTyxpRUFBZSxnR0FBTyxJQUFJLGdHQUFPLFVBQVUsZ0dBQU8sbUJBQW1CLEVBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDdkI3RSxNQUFrRztBQUNsRyxNQUF3RjtBQUN4RixNQUErRjtBQUMvRixNQUFrSDtBQUNsSCxNQUEyRztBQUMzRyxNQUEyRztBQUMzRyxNQUFzRztBQUN0RztBQUNBOztBQUVBOztBQUVBLDRCQUE0QixxR0FBbUI7QUFDL0Msd0JBQXdCLGtIQUFhO0FBQ3JDLGlCQUFpQix1R0FBYTtBQUM5QixpQkFBaUIsK0ZBQU07QUFDdkIsNkJBQTZCLHNHQUFrQjs7QUFFL0MsYUFBYSwwR0FBRyxDQUFDLCtGQUFPOzs7O0FBSWdEO0FBQ3hFLE9BQU8saUVBQWUsK0ZBQU8sSUFBSSwrRkFBTyxVQUFVLCtGQUFPLG1CQUFtQixFQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3ZCN0UsTUFBa0c7QUFDbEcsTUFBd0Y7QUFDeEYsTUFBK0Y7QUFDL0YsTUFBa0g7QUFDbEgsTUFBMkc7QUFDM0csTUFBMkc7QUFDM0csTUFBc0c7QUFDdEc7QUFDQTs7QUFFQTs7QUFFQSw0QkFBNEIscUdBQW1CO0FBQy9DLHdCQUF3QixrSEFBYTtBQUNyQyxpQkFBaUIsdUdBQWE7QUFDOUIsaUJBQWlCLCtGQUFNO0FBQ3ZCLDZCQUE2QixzR0FBa0I7O0FBRS9DLGFBQWEsMEdBQUcsQ0FBQywrRkFBTzs7OztBQUlnRDtBQUN4RSxPQUFPLGlFQUFlLCtGQUFPLElBQUksK0ZBQU8sVUFBVSwrRkFBTyxtQkFBbUIsRUFBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUN2QjdFLE1BQWtHO0FBQ2xHLE1BQXdGO0FBQ3hGLE1BQStGO0FBQy9GLE1BQWtIO0FBQ2xILE1BQTJHO0FBQzNHLE1BQTJHO0FBQzNHLE1BQXFHO0FBQ3JHO0FBQ0E7O0FBRUE7O0FBRUEsNEJBQTRCLHFHQUFtQjtBQUMvQyx3QkFBd0Isa0hBQWE7QUFDckMsaUJBQWlCLHVHQUFhO0FBQzlCLGlCQUFpQiwrRkFBTTtBQUN2Qiw2QkFBNkIsc0dBQWtCOztBQUUvQyxhQUFhLDBHQUFHLENBQUMsOEZBQU87Ozs7QUFJK0M7QUFDdkUsT0FBTyxpRUFBZSw4RkFBTyxJQUFJLDhGQUFPLFVBQVUsOEZBQU8sbUJBQW1CLEVBQUM7Ozs7Ozs7O0FDeEJoRTs7QUFFYjtBQUNBO0FBQ0E7QUFDQSxrQkFBa0Isd0JBQXdCO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLGlCQUFpQjtBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLDRCQUE0QjtBQUNoRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLDZCQUE2QjtBQUNsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7OztBQ25GYTs7QUFFYjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7QUNqQ2E7O0FBRWI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7OztBQ1RhOztBQUViO0FBQ0E7QUFDQSxjQUFjLEtBQXdDLEdBQUcsc0JBQWlCLEdBQUcsQ0FBSTtBQUNqRjtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7O0FDVGE7O0FBRWI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrREFBa0Q7QUFDbEQ7QUFDQTtBQUNBLDBDQUEwQztBQUMxQztBQUNBO0FBQ0E7QUFDQSxpRkFBaUY7QUFDakY7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQSx5REFBeUQ7QUFDekQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQztBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7QUM1RGE7O0FBRWI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7OztVQ2JBO1VBQ0E7O1VBRUE7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7O1VBRUE7VUFDQTs7VUFFQTtVQUNBO1VBQ0E7Ozs7O1dDdEJBO1dBQ0E7V0FDQTtXQUNBO1dBQ0E7V0FDQSxpQ0FBaUMsV0FBVztXQUM1QztXQUNBOzs7OztXQ1BBO1dBQ0E7V0FDQTtXQUNBO1dBQ0EseUNBQXlDLHdDQUF3QztXQUNqRjtXQUNBO1dBQ0E7Ozs7O1dDUEE7Ozs7O1dDQUE7V0FDQTtXQUNBO1dBQ0EsdURBQXVELGlCQUFpQjtXQUN4RTtXQUNBLGdEQUFnRCxhQUFhO1dBQzdEOzs7OztXQ05BOzs7Ozs7Ozs7Ozs7Ozs7QUNBQSxJQUFBOUIsUUFBQSxHQUFBMUIsbUJBQUE7QUFBUzJCLDZCQUFBO0VBQUFFLFVBQUE7RUFBQUMsR0FBQSxXQUFBQSxJQUFBO0lBQUEsT0FBQUosUUFBQSxDQUFBeEIsTUFBTTtFQUFBO0FBQUEsRyIsInNvdXJjZXMiOlsid2VicGFjazovL0BudXJpaGF1cy93ZWItZGVzaWduLXN5c3RlbS8uL2NvbXBvbmVudHMvYXZhdGFyL2F2YXRhci50c3giLCJ3ZWJwYWNrOi8vQG51cmloYXVzL3dlYi1kZXNpZ24tc3lzdGVtLy4vY29tcG9uZW50cy9hdmF0YXIvaW5kZXgudHMiLCJ3ZWJwYWNrOi8vQG51cmloYXVzL3dlYi1kZXNpZ24tc3lzdGVtLy4vY29tcG9uZW50cy9iYWRnZS9iYWRnZS50c3giLCJ3ZWJwYWNrOi8vQG51cmloYXVzL3dlYi1kZXNpZ24tc3lzdGVtLy4vY29tcG9uZW50cy9jb3JlL2NvbXBvc2VyL2luZGV4LnRzeCIsIndlYnBhY2s6Ly9AbnVyaWhhdXMvd2ViLWRlc2lnbi1zeXN0ZW0vLi9jb21wb25lbnRzL2F2YXRhci9hdmF0YXIuY3NzIiwid2VicGFjazovL0BudXJpaGF1cy93ZWItZGVzaWduLXN5c3RlbS8uL2NvbXBvbmVudHMvYmFkZ2UvYmFkZ2UuY3NzIiwid2VicGFjazovL0BudXJpaGF1cy93ZWItZGVzaWduLXN5c3RlbS8uL3N0eWxlcy90b2tlbi9jb2xvci5jc3MiLCJ3ZWJwYWNrOi8vQG51cmloYXVzL3dlYi1kZXNpZ24tc3lzdGVtLy4vc3R5bGVzL3Rva2VuL2ZvbnQuY3NzIiwid2VicGFjazovL0BudXJpaGF1cy93ZWItZGVzaWduLXN5c3RlbS8uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanMiLCJ3ZWJwYWNrOi8vQG51cmloYXVzL3dlYi1kZXNpZ24tc3lzdGVtLy4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL3NvdXJjZU1hcHMuanMiLCJ3ZWJwYWNrOi8vQG51cmloYXVzL3dlYi1kZXNpZ24tc3lzdGVtLy4vbm9kZV9tb2R1bGVzL3JlYWN0L2Nqcy9yZWFjdC1qc3gtcnVudGltZS5wcm9kdWN0aW9uLm1pbi5qcyIsIndlYnBhY2s6Ly9AbnVyaWhhdXMvd2ViLWRlc2lnbi1zeXN0ZW0vLi9ub2RlX21vZHVsZXMvcmVhY3QvY2pzL3JlYWN0LnByb2R1Y3Rpb24ubWluLmpzIiwid2VicGFjazovL0BudXJpaGF1cy93ZWItZGVzaWduLXN5c3RlbS8uL25vZGVfbW9kdWxlcy9yZWFjdC9pbmRleC5qcyIsIndlYnBhY2s6Ly9AbnVyaWhhdXMvd2ViLWRlc2lnbi1zeXN0ZW0vLi9ub2RlX21vZHVsZXMvcmVhY3QvanN4LXJ1bnRpbWUuanMiLCJ3ZWJwYWNrOi8vQG51cmloYXVzL3dlYi1kZXNpZ24tc3lzdGVtLy4vY29tcG9uZW50cy9hdmF0YXIvYXZhdGFyLmNzcz82YmFjIiwid2VicGFjazovL0BudXJpaGF1cy93ZWItZGVzaWduLXN5c3RlbS8uL2NvbXBvbmVudHMvYmFkZ2UvYmFkZ2UuY3NzPzk1MzgiLCJ3ZWJwYWNrOi8vQG51cmloYXVzL3dlYi1kZXNpZ24tc3lzdGVtLy4vc3R5bGVzL3Rva2VuL2NvbG9yLmNzcz82NmNhIiwid2VicGFjazovL0BudXJpaGF1cy93ZWItZGVzaWduLXN5c3RlbS8uL3N0eWxlcy90b2tlbi9mb250LmNzcz83NmJiIiwid2VicGFjazovL0BudXJpaGF1cy93ZWItZGVzaWduLXN5c3RlbS8uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qcyIsIndlYnBhY2s6Ly9AbnVyaWhhdXMvd2ViLWRlc2lnbi1zeXN0ZW0vLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRCeVNlbGVjdG9yLmpzIiwid2VicGFjazovL0BudXJpaGF1cy93ZWItZGVzaWduLXN5c3RlbS8uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydFN0eWxlRWxlbWVudC5qcyIsIndlYnBhY2s6Ly9AbnVyaWhhdXMvd2ViLWRlc2lnbi1zeXN0ZW0vLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMuanMiLCJ3ZWJwYWNrOi8vQG51cmloYXVzL3dlYi1kZXNpZ24tc3lzdGVtLy4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanMiLCJ3ZWJwYWNrOi8vQG51cmloYXVzL3dlYi1kZXNpZ24tc3lzdGVtLy4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanMiLCJ3ZWJwYWNrOi8vQG51cmloYXVzL3dlYi1kZXNpZ24tc3lzdGVtL3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL0BudXJpaGF1cy93ZWItZGVzaWduLXN5c3RlbS93ZWJwYWNrL3J1bnRpbWUvY29tcGF0IGdldCBkZWZhdWx0IGV4cG9ydCIsIndlYnBhY2s6Ly9AbnVyaWhhdXMvd2ViLWRlc2lnbi1zeXN0ZW0vd2VicGFjay9ydW50aW1lL2RlZmluZSBwcm9wZXJ0eSBnZXR0ZXJzIiwid2VicGFjazovL0BudXJpaGF1cy93ZWItZGVzaWduLXN5c3RlbS93ZWJwYWNrL3J1bnRpbWUvaGFzT3duUHJvcGVydHkgc2hvcnRoYW5kIiwid2VicGFjazovL0BudXJpaGF1cy93ZWItZGVzaWduLXN5c3RlbS93ZWJwYWNrL3J1bnRpbWUvbWFrZSBuYW1lc3BhY2Ugb2JqZWN0Iiwid2VicGFjazovL0BudXJpaGF1cy93ZWItZGVzaWduLXN5c3RlbS93ZWJwYWNrL3J1bnRpbWUvbm9uY2UiLCJ3ZWJwYWNrOi8vQG51cmloYXVzL3dlYi1kZXNpZ24tc3lzdGVtLy4vaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVhY3ROb2RlLCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFwiLi9hdmF0YXIuY3NzXCI7XG5pbXBvcnQgeyBCYXNlQmFkZ2UgfSBmcm9tIFwiLi4vYmFkZ2UvYmFkZ2VcIjtcbmludGVyZmFjZSBBdmF0YXJQcm9wcyB7XG4gIHNpemU6IFwieGxcIiB8IFwibFwiIHwgXCJtXCIgfCBcInNcIjtcbiAgc3JjPzogc3RyaW5nO1xuICBhbHQ/OiBzdHJpbmc7XG4gIGJhZGdlT3B0aW9uPzogUmVhY3ROb2RlIHwgc3RyaW5nO1xufVxuXG5jb25zdCBBdmF0YXIgPSAocHJvcHM6IEF2YXRhclByb3BzKSA9PiB7XG4gIGNvbnN0IHsgc2l6ZSwgc3JjLCBhbHQsIGJhZGdlT3B0aW9uIH0gPSBwcm9wcztcbiAgY29uc3QgW2lzSW1hZ2VEb3dubG9hZCwgc2V0SXNJbWFnZURvd25sb2FkXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPXtgYXZhdGFyICR7c2l6ZX1gfT5cbiAgICAgIDxpbWdcbiAgICAgICAgc3JjPXtzcmN9XG4gICAgICAgIGFsdD17YWx0ID8/IFwiYXZhdGFyXCJ9XG4gICAgICAgIGNsYXNzTmFtZT17YGF2YXRhciAke3NpemV9ICR7IWlzSW1hZ2VEb3dubG9hZCA/IFwiaGlkZGVuXCIgOiBcIlwifWB9XG4gICAgICAgIG9uTG9hZD17KCkgPT4gc2V0SXNJbWFnZURvd25sb2FkKHRydWUpfVxuICAgICAgLz5cbiAgICAgIHshaXNJbWFnZURvd25sb2FkICYmIChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e2BhdmF0YXIgYXZhdGFyLXNrZWxldG9uICR7c2l6ZX1gfT5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImF2YXRhciBza2VsZXRvbi1hbmltYXRpb25cIiAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICl9XG5cbiAgICAgIDxCYXNlQmFkZ2VcbiAgICAgICAgYXNDaGlsZFxuICAgICAgICBzdHlsZT17e1xuICAgICAgICAgIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gICAgICAgICAgcmlnaHQ6IFwiMFwiLFxuICAgICAgICAgIGJvdHRvbTogXCIwXCIsXG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIHtiYWRnZU9wdGlvbn1cbiAgICAgIDwvQmFzZUJhZGdlPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgQXZhdGFyO1xuIiwiZXhwb3J0IHsgZGVmYXVsdCBhcyBBdmF0YXIgfSBmcm9tIFwiLi9hdmF0YXJcIjtcbiIsImltcG9ydCBcIi4vYmFkZ2UuY3NzXCI7XG5pbXBvcnQgeyBjb2xvcnMgfSBmcm9tIFwiLi4vLi4vc3R5bGVzL3Rva2VuL2NvbG9yc1wiO1xuaW1wb3J0IFwiLi4vLi4vc3R5bGVzL3Rva2VuL2NvbG9yLmNzc1wiO1xuaW1wb3J0IFwiLi4vLi4vc3R5bGVzL3Rva2VuL2ZvbnQuY3NzXCI7XG5pbXBvcnQgQ29tcG9zZXIgZnJvbSBcIi4uL2NvcmUvY29tcG9zZXJcIjtcbmltcG9ydCB7IFJlYWN0Tm9kZSB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbnRlcmZhY2UgQmFzZUJhZGdlUHJvcHMgZXh0ZW5kcyBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRGl2RWxlbWVudD4ge1xuICBib3JkZXJDb2xvcj86IGtleW9mIHR5cGVvZiBjb2xvcnM7XG4gIHRleHRDb2xvcj86IGtleW9mIHR5cGVvZiBjb2xvcnM7XG4gIGJhY2tncm91bmRDb2xvcj86IGtleW9mIHR5cGVvZiBjb2xvcnM7XG4gIHNpemU/OiBcImxcIiB8IFwibVwiIHwgXCJyXCIgfCBcInNcIiB8IFwic21cIjtcbiAgYXNDaGlsZD86IGJvb2xlYW47XG4gIGNoaWxkcmVuPzogUmVhY3ROb2RlO1xufVxuXG5leHBvcnQgY29uc3QgQmFzZUJhZGdlID0gKHByb3BzOiBCYXNlQmFkZ2VQcm9wcykgPT4ge1xuICBjb25zdCB7XG4gICAgYXNDaGlsZCA9IGZhbHNlLFxuICAgIGJvcmRlckNvbG9yLFxuICAgIHRleHRDb2xvciA9IFwiYmxhY2tcIixcbiAgICBiYWNrZ3JvdW5kQ29sb3IsXG4gICAgc2l6ZSA9IFwibFwiLFxuICAgIHN0eWxlLFxuICAgIGNoaWxkcmVuLFxuICAgIGNsYXNzTmFtZSxcbiAgfSA9IHByb3BzO1xuXG4gIGNvbnN0IENvbXAgPSBhc0NoaWxkID8gQ29tcG9zZXIgOiBcImRpdlwiO1xuXG4gIGNvbnN0IGNvbXBvc2VkQ2xhc3NOYW1lID0gYG51cmktdGhlbWUgYmFzZS1iYWRnZSAke3NpemV9IGJvcmRlci0ke2JvcmRlckNvbG9yfSB0ZXh0LSR7dGV4dENvbG9yfSBiYWNrZ3JvdW5kLSR7YmFja2dyb3VuZENvbG9yfSAke2NsYXNzTmFtZX1gO1xuXG4gIHJldHVybiAoXG4gICAgPENvbXAgc3R5bGU9e3N0eWxlfSBjbGFzc05hbWU9e2NvbXBvc2VkQ2xhc3NOYW1lfT5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L0NvbXA+XG4gICk7XG59O1xuXG5leHBvcnQgY29uc3QgT3B0aW9uQmFkZ2UgPSAoXG4gIHByb3BzOiBPbWl0PEJhc2VCYWRnZVByb3BzLCBcImFzQ2hpbGRcIiB8IFwiY2hpbGRyZW5cIj4gJiB7XG4gICAgb3B0aW9uOiBSZWFjdE5vZGU7XG4gIH1cbikgPT4ge1xuICBjb25zdCB7IG9wdGlvbiB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIDxCYXNlQmFkZ2Ugey4uLnByb3BzfT57b3B0aW9ufTwvQmFzZUJhZGdlPjtcbn07XG5cbmV4cG9ydCBjb25zdCBJY29uVGV4dEJhZGdlID0gKFxuICBwcm9wczogT21pdDxCYXNlQmFkZ2VQcm9wcywgXCJhc0NoaWxkXCIgfCBcImNoaWxkcmVuXCI+ICYge1xuICAgIGljb246IFJlYWN0Tm9kZTtcbiAgICB0ZXh0OiBSZWFjdE5vZGU7XG4gIH1cbikgPT4ge1xuICBjb25zdCB7IGljb24sIHRleHQgfSA9IHByb3BzO1xuXG4gIHJldHVybiAoXG4gICAgPEJhc2VCYWRnZSB7Li4ucHJvcHN9PlxuICAgICAge2ljb259XG4gICAgICA8c3Bhbj57dGV4dH08L3NwYW4+XG4gICAgPC9CYXNlQmFkZ2U+XG4gICk7XG59O1xuXG5leHBvcnQgY29uc3QgSWNvblRleHRPcHRpb25CYWRnZSA9IChcbiAgcHJvcHM6IE9taXQ8QmFzZUJhZGdlUHJvcHMsIFwiYXNDaGlsZFwiIHwgXCJjaGlsZHJlblwiPiAmIHtcbiAgICBpY29uOiBSZWFjdE5vZGU7XG4gICAgdGV4dDogUmVhY3ROb2RlO1xuICAgIG9wdGlvbjogUmVhY3ROb2RlO1xuICB9XG4pID0+IHtcbiAgY29uc3QgeyBpY29uLCB0ZXh0LCBvcHRpb24gfSA9IHByb3BzO1xuXG4gIHJldHVybiAoXG4gICAgPEJhc2VCYWRnZSB7Li4ucHJvcHN9IGNsYXNzTmFtZT17YGljb24tdGV4dC1vcHRpb25gfT5cbiAgICAgIDxzcGFuPlxuICAgICAgICB7aWNvbn1cbiAgICAgICAgPHNwYW4+e3RleHR9PC9zcGFuPlxuICAgICAgPC9zcGFuPlxuICAgICAge29wdGlvbn1cbiAgICA8L0Jhc2VCYWRnZT5cbiAgKTtcbn07XG4iLCJpbXBvcnQge1xuICBDaGlsZHJlbixcbiAgY2xvbmVFbGVtZW50LFxuICBmb3J3YXJkUmVmLFxuICBpc1ZhbGlkRWxlbWVudCxcbiAgUmVhY3RFbGVtZW50LFxuICBSZWYsXG59IGZyb20gXCJyZWFjdFwiO1xuXG5mdW5jdGlvbiBjb21wb3NlUmVmczxUPiguLi5yZWZzOiAoUmVmPFQ+IHwgdW5kZWZpbmVkKVtdKSB7XG4gIHJldHVybiAobm9kZTogVCkgPT4ge1xuICAgIHJlZnMuZm9yRWFjaCgocmVmKSA9PiB7XG4gICAgICBpZiAocmVmKSB7XG4gICAgICAgIGlmICh0eXBlb2YgcmVmID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICByZWYobm9kZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgKHJlZiBhcyBSZWFjdC5NdXRhYmxlUmVmT2JqZWN0PFQ+KS5jdXJyZW50ID0gbm9kZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9O1xufVxuXG5pbnRlcmZhY2UgQ29tcG9zZXJQcm9wcyBleHRlbmRzIFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxFbGVtZW50PiB7XG4gIGNoaWxkcmVuPzogUmVhY3QuUmVhY3ROb2RlO1xufVxuXG5jb25zdCBDb21wb3NlciA9IGZvcndhcmRSZWY8SFRNTEVsZW1lbnQsIENvbXBvc2VyUHJvcHM+KFxuICAoeyBjaGlsZHJlbiwgLi4uY29tcG9zZXJQcm9wcyB9LCByZWYpID0+IHtcbiAgICBjb25zdCBjaGlsZEFycmF5ID0gQ2hpbGRyZW4udG9BcnJheShjaGlsZHJlbik7XG5cbiAgICBpZiAoY2hpbGRBcnJheS5sZW5ndGggPiAxKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDb21wb3NlciBjYW4gb25seSBoYXZlIG9uZSBjaGlsZFwiKTtcbiAgICB9XG5cbiAgICBjb25zdCBpc1ZhbGlkQ2hpbGQgPSBpc1ZhbGlkRWxlbWVudChjaGlsZEFycmF5WzBdKTtcblxuICAgIGlmICghaXNWYWxpZENoaWxkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJjaGlsZCBzaG91bGQgYmUgUmVhY3Qgbm9kZSFcIik7XG4gICAgfVxuXG4gICAgY29uc3QgY2hpbGQgPSBjaGlsZEFycmF5WzBdIGFzIFJlYWN0RWxlbWVudDtcbiAgICBjb25zdCBjaGlsZFJlZiA9IGdldEVsZW1lbnRSZWYoY2hpbGQpO1xuXG4gICAgY29uc3QgbWVyZ2VkUHJvcHMgPSBtZXJnZVByb3BzKGNvbXBvc2VyUHJvcHMsIGNoaWxkLnByb3BzKTtcblxuICAgIHJldHVybiBjbG9uZUVsZW1lbnQoY2hpbGQsIHtcbiAgICAgIC4uLm1lcmdlZFByb3BzLFxuICAgICAgcmVmOiByZWYgPyBjb21wb3NlUmVmcyhyZWYsIGNoaWxkUmVmKSA6IGNoaWxkUmVmLFxuICAgIH0pO1xuICB9XG4pO1xuXG5Db21wb3Nlci5kaXNwbGF5TmFtZSA9IFwiQ29tcG9zZXJcIjtcblxuZnVuY3Rpb24gbWVyZ2VQcm9wcyhcbiAgY29tcG9zZXJQcm9wczogUmVjb3JkPHN0cmluZywgYW55PixcbiAgY2hpbGRQcm9wczogUmVjb3JkPHN0cmluZywgYW55PlxuKSB7XG4gIGNvbnN0IG92ZXJyaWRlUHJvcHMgPSB7IC4uLmNoaWxkUHJvcHMgfTtcblxuICBmb3IgKGNvbnN0IHByb3BOYW1lIGluIGNvbXBvc2VyUHJvcHMpIHtcbiAgICBjb25zdCBjb21wb3NlclByb3BWYWx1ZSA9IGNvbXBvc2VyUHJvcHNbcHJvcE5hbWVdO1xuICAgIGNvbnN0IGNoaWxkUHJvcFZhbHVlID0gY2hpbGRQcm9wc1twcm9wTmFtZV07XG5cbiAgICBjb25zdCBpc0hhbmRsZXIgPSAvXm9uW0EtWl0vLnRlc3QocHJvcE5hbWUpO1xuICAgIGlmIChpc0hhbmRsZXIpIHtcbiAgICAgIGlmIChjb21wb3NlclByb3BWYWx1ZSAmJiBjaGlsZFByb3BWYWx1ZSkge1xuICAgICAgICBvdmVycmlkZVByb3BzW3Byb3BOYW1lXSA9ICguLi5hcmdzOiB1bmtub3duW10pID0+IHtcbiAgICAgICAgICBjaGlsZFByb3BWYWx1ZSguLi5hcmdzKTtcbiAgICAgICAgICBjb21wb3NlclByb3BWYWx1ZSguLi5hcmdzKTtcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAoY29tcG9zZXJQcm9wVmFsdWUpIHtcbiAgICAgICAgb3ZlcnJpZGVQcm9wc1twcm9wTmFtZV0gPSBjb21wb3NlclByb3BWYWx1ZTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHByb3BOYW1lID09PSBcInN0eWxlXCIpIHtcbiAgICAgIG92ZXJyaWRlUHJvcHNbcHJvcE5hbWVdID0geyAuLi5jb21wb3NlclByb3BWYWx1ZSwgLi4uY2hpbGRQcm9wVmFsdWUgfTtcbiAgICB9IGVsc2UgaWYgKHByb3BOYW1lID09PSBcImNsYXNzTmFtZVwiKSB7XG4gICAgICBvdmVycmlkZVByb3BzW3Byb3BOYW1lXSA9IFtjb21wb3NlclByb3BWYWx1ZSwgY2hpbGRQcm9wVmFsdWVdXG4gICAgICAgIC5maWx0ZXIoQm9vbGVhbilcbiAgICAgICAgLmpvaW4oXCIgXCIpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7IC4uLmNvbXBvc2VyUHJvcHMsIC4uLm92ZXJyaWRlUHJvcHMgfTtcbn1cblxuZnVuY3Rpb24gZ2V0RWxlbWVudFJlZihlbGVtZW50OiBSZWFjdEVsZW1lbnQpIHtcbiAgbGV0IGdldHRlciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZWxlbWVudC5wcm9wcywgXCJyZWZcIik/LmdldDtcbiAgbGV0IG1heVdhcm4gPSBnZXR0ZXIgJiYgXCJpc1JlYWN0V2FybmluZ1wiIGluIGdldHRlciAmJiBnZXR0ZXIuaXNSZWFjdFdhcm5pbmc7XG4gIGlmIChtYXlXYXJuKSB7XG4gICAgcmV0dXJuIChlbGVtZW50IGFzIGFueSkucmVmO1xuICB9XG5cbiAgZ2V0dGVyID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlbGVtZW50LCBcInJlZlwiKT8uZ2V0O1xuICBtYXlXYXJuID0gZ2V0dGVyICYmIFwiaXNSZWFjdFdhcm5pbmdcIiBpbiBnZXR0ZXIgJiYgZ2V0dGVyLmlzUmVhY3RXYXJuaW5nO1xuICBpZiAobWF5V2Fybikge1xuICAgIHJldHVybiAoZWxlbWVudC5wcm9wcyBhcyB7IHJlZj86IFJlYWN0LlJlZjx1bmtub3duPiB9KS5yZWY7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIChlbGVtZW50LnByb3BzIGFzIHsgcmVmPzogUmVhY3QuUmVmPHVua25vd24+IH0pLnJlZiB8fCAoZWxlbWVudCBhcyBhbnkpLnJlZlxuICApO1xufVxuXG5leHBvcnQgdHlwZSB7IENvbXBvc2VyUHJvcHMgfTtcbmV4cG9ydCBkZWZhdWx0IENvbXBvc2VyO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9zb3VyY2VNYXBzLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgYC5hdmF0YXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICYgZGl2IHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gIH1cblxuICBib3JkZXItcmFkaXVzOiA1MCU7XG5cbiAgJjp3aGVyZSgueGwpIHtcbiAgICB3aWR0aDogMTI0cHg7XG4gICAgaGVpZ2h0OiAxMjRweDtcbiAgfVxuXG4gICY6d2hlcmUoLmwpIHtcbiAgICB3aWR0aDogNzRweDtcbiAgICBoZWlnaHQ6IDc0cHg7XG4gIH1cblxuICAmOndoZXJlKC5tKSB7XG4gICAgd2lkdGg6IDU4cHg7XG4gICAgaGVpZ2h0OiA1OHB4O1xuICB9XG5cbiAgJjp3aGVyZSgucykge1xuICAgIHdpZHRoOiA0MHB4O1xuICAgIGhlaWdodDogNDBweDtcbiAgfVxuXG4gIC5hdmF0YXItc2tlbGV0b24ge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2UwZTBlMDtcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuXG4gICAgLnNrZWxldG9uLWFuaW1hdGlvbiB7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudChcbiAgICAgICAgOTBkZWcsXG4gICAgICAgIHJnYmEoMjU1LCAyNTUsIDI1NSwgMCkgMCUsXG4gICAgICAgIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC40KSA1MCUsXG4gICAgICAgIHJnYmEoMjU1LCAyNTUsIDI1NSwgMCkgMTAwJVxuICAgICAgKTtcbiAgICAgIGFuaW1hdGlvbjogc2hpbW1lciAxLjVzIGluZmluaXRlO1xuICAgIH1cbiAgfVxufVxuXG5Aa2V5ZnJhbWVzIHNoaW1tZXIge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMDAlKTtcbiAgfVxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XG4gIH1cbn1cbmAsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vY29tcG9uZW50cy9hdmF0YXIvYXZhdGFyLmNzc1wiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFBQTtFQUNFLGtCQUFrQjtFQUNsQjtJQUNFLGtCQUFrQjtJQUNsQixhQUFhO0lBQ2IsbUJBQW1CO0lBQ25CLHVCQUF1QjtJQUN2QixnQkFBZ0I7RUFDbEI7O0VBRUEsa0JBQWtCOztFQUVsQjtJQUNFLFlBQVk7SUFDWixhQUFhO0VBQ2Y7O0VBRUE7SUFDRSxXQUFXO0lBQ1gsWUFBWTtFQUNkOztFQUVBO0lBQ0UsV0FBVztJQUNYLFlBQVk7RUFDZDs7RUFFQTtJQUNFLFdBQVc7SUFDWCxZQUFZO0VBQ2Q7O0VBRUE7SUFDRSxrQkFBa0I7SUFDbEIsTUFBTTtJQUNOLE9BQU87SUFDUCxXQUFXO0lBQ1gsWUFBWTtJQUNaLHlCQUF5QjtJQUN6QixrQkFBa0I7SUFDbEIsV0FBVztJQUNYLFlBQVk7O0lBRVo7TUFDRSxXQUFXO01BQ1gsWUFBWTtNQUNaOzs7OztPQUtDO01BQ0QsZ0NBQWdDO0lBQ2xDO0VBQ0Y7QUFDRjs7QUFFQTtFQUNFO0lBQ0UsNEJBQTRCO0VBQzlCO0VBQ0E7SUFDRSwyQkFBMkI7RUFDN0I7QUFDRlwiLFwic291cmNlc0NvbnRlbnRcIjpbXCIuYXZhdGFyIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gICYgZGl2IHtcXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIH1cXG5cXG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcXG5cXG4gICY6d2hlcmUoLnhsKSB7XFxuICAgIHdpZHRoOiAxMjRweDtcXG4gICAgaGVpZ2h0OiAxMjRweDtcXG4gIH1cXG5cXG4gICY6d2hlcmUoLmwpIHtcXG4gICAgd2lkdGg6IDc0cHg7XFxuICAgIGhlaWdodDogNzRweDtcXG4gIH1cXG5cXG4gICY6d2hlcmUoLm0pIHtcXG4gICAgd2lkdGg6IDU4cHg7XFxuICAgIGhlaWdodDogNThweDtcXG4gIH1cXG5cXG4gICY6d2hlcmUoLnMpIHtcXG4gICAgd2lkdGg6IDQwcHg7XFxuICAgIGhlaWdodDogNDBweDtcXG4gIH1cXG5cXG4gIC5hdmF0YXItc2tlbGV0b24ge1xcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAgIHRvcDogMDtcXG4gICAgbGVmdDogMDtcXG4gICAgd2lkdGg6IDEwMCU7XFxuICAgIGhlaWdodDogMTAwJTtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2UwZTBlMDtcXG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xcbiAgICB3aWR0aDogMTAwJTtcXG4gICAgaGVpZ2h0OiAxMDAlO1xcblxcbiAgICAuc2tlbGV0b24tYW5pbWF0aW9uIHtcXG4gICAgICB3aWR0aDogMTAwJTtcXG4gICAgICBoZWlnaHQ6IDEwMCU7XFxuICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KFxcbiAgICAgICAgOTBkZWcsXFxuICAgICAgICByZ2JhKDI1NSwgMjU1LCAyNTUsIDApIDAlLFxcbiAgICAgICAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjQpIDUwJSxcXG4gICAgICAgIHJnYmEoMjU1LCAyNTUsIDI1NSwgMCkgMTAwJVxcbiAgICAgICk7XFxuICAgICAgYW5pbWF0aW9uOiBzaGltbWVyIDEuNXMgaW5maW5pdGU7XFxuICAgIH1cXG4gIH1cXG59XFxuXFxuQGtleWZyYW1lcyBzaGltbWVyIHtcXG4gIDAlIHtcXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMDAlKTtcXG4gIH1cXG4gIDEwMCUge1xcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XFxuICB9XFxufVxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL3NvdXJjZU1hcHMuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBgLmJhc2UtYmFkZ2Uge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgZ2FwOiA0cHg7XG5cbiAgYm9yZGVyLXJhZGl1czogNDBweDtcblxuICAmOndoZXJlKC5sKSB7XG4gICAgaGVpZ2h0OiA0OHB4O1xuXG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtc20pO1xuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1saW5lLWhlaWdodC1zbSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LXNlbWlib2xkKTtcbiAgfVxuXG4gICY6d2hlcmUoLm0pIHtcbiAgICBoZWlnaHQ6IDQwcHg7XG5cbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1zbSk7XG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLWxpbmUtaGVpZ2h0LXNtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtc2VtaWJvbGQpO1xuICB9XG5cbiAgJjp3aGVyZSgucikge1xuICAgIGhlaWdodDogMzZweDtcblxuICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXNtKTtcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tbGluZS1oZWlnaHQtc20pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1zZW1pYm9sZCk7XG4gIH1cblxuICAmOndoZXJlKC5zKSB7XG4gICAgaGVpZ2h0OiAzMnB4O1xuXG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtc20pO1xuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1saW5lLWhlaWdodC1zbSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LWJvbGQpO1xuICB9XG5cbiAgJjp3aGVyZSguc20pIHtcbiAgICBoZWlnaHQ6IDI4cHg7XG5cbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS14c20pO1xuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1saW5lLWhlaWdodC14c20pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1ib2xkKTtcbiAgfVxuXG4gICZbY2xhc3MqPVwiYmFja2dyb3VuZC1cIl0ge1xuICAgICYuYmFja2dyb3VuZC1ibGFjayB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5LWJsYWNrKTtcbiAgICB9XG4gICAgJi5iYWNrZ3JvdW5kLXdoaXRlIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnktd2hpdGUpO1xuICAgIH1cbiAgICAmLmJhY2tncm91bmQtZ3JheUZhIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnktZ3JheS1mYSk7XG4gICAgfVxuICAgICYuYmFja2dyb3VuZC1wdXJwbGUzOSB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1wb2ludC1wdXJwbGUtMzkpO1xuICAgIH1cbiAgfVxuXG4gICZbY2xhc3MqPVwidGV4dC1cIl0ge1xuICAgICYudGV4dC1ibGFjayB7XG4gICAgICBjb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS1ibGFjayk7XG4gICAgfVxuICAgICYudGV4dC13aGl0ZSB7XG4gICAgICBjb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS13aGl0ZSk7XG4gICAgfVxuICAgICYudGV4dC1ncmF5RmEge1xuICAgICAgY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnktZ3JheS1mYSk7XG4gICAgfVxuICAgICYudGV4dC1wdXJwbGUzOSB7XG4gICAgICBjb2xvcjogdmFyKC0tY29sb3ItcG9pbnQtcHVycGxlLTM5KTtcbiAgICB9XG4gIH1cblxuICAmW2NsYXNzKj1cImJvcmRlci1cIl0ge1xuICAgICYuYm9yZGVyLWJsYWNrIHtcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNvbG9yLXByaW1hcnktYmxhY2spO1xuICAgIH1cbiAgICAmLmJvcmRlci13aGl0ZSB7XG4gICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jb2xvci1wcmltYXJ5LXdoaXRlKTtcbiAgICB9XG4gICAgJi5ib3JkZXItZ3JheUZhIHtcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNvbG9yLXByaW1hcnktZ3JheS1mYSk7XG4gICAgfVxuICAgICYuYm9yZGVyLXB1cnBsZTM5IHtcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNvbG9yLXBvaW50LXB1cnBsZS0zOSk7XG4gICAgfVxuICB9XG5cbiAgJi5pY29uLXRleHQtb3B0aW9uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuXG4gICAgcGFkZGluZzogMCAyMHB4O1xuICB9XG5cbiAgJi5pY29uLXRleHQtb3B0aW9uID4gc3BhbiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogNHB4O1xuICB9XG59XG5gLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL2NvbXBvbmVudHMvYmFkZ2UvYmFkZ2UuY3NzXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUFBO0VBQ0UsYUFBYTtFQUNiLG1CQUFtQjtFQUNuQix1QkFBdUI7RUFDdkIsUUFBUTs7RUFFUixtQkFBbUI7O0VBRW5CO0lBQ0UsWUFBWTs7SUFFWiw4QkFBOEI7SUFDOUIsa0NBQWtDO0lBQ2xDLHdDQUF3QztFQUMxQzs7RUFFQTtJQUNFLFlBQVk7O0lBRVosOEJBQThCO0lBQzlCLGtDQUFrQztJQUNsQyx3Q0FBd0M7RUFDMUM7O0VBRUE7SUFDRSxZQUFZOztJQUVaLDhCQUE4QjtJQUM5QixrQ0FBa0M7SUFDbEMsd0NBQXdDO0VBQzFDOztFQUVBO0lBQ0UsWUFBWTs7SUFFWiw4QkFBOEI7SUFDOUIsa0NBQWtDO0lBQ2xDLG9DQUFvQztFQUN0Qzs7RUFFQTtJQUNFLFlBQVk7O0lBRVosK0JBQStCO0lBQy9CLG1DQUFtQztJQUNuQyxvQ0FBb0M7RUFDdEM7O0VBRUE7SUFDRTtNQUNFLDRDQUE0QztJQUM5QztJQUNBO01BQ0UsNENBQTRDO0lBQzlDO0lBQ0E7TUFDRSw4Q0FBOEM7SUFDaEQ7SUFDQTtNQUNFLDhDQUE4QztJQUNoRDtFQUNGOztFQUVBO0lBQ0U7TUFDRSxpQ0FBaUM7SUFDbkM7SUFDQTtNQUNFLGlDQUFpQztJQUNuQztJQUNBO01BQ0UsbUNBQW1DO0lBQ3JDO0lBQ0E7TUFDRSxtQ0FBbUM7SUFDckM7RUFDRjs7RUFFQTtJQUNFO01BQ0UsNENBQTRDO0lBQzlDO0lBQ0E7TUFDRSw0Q0FBNEM7SUFDOUM7SUFDQTtNQUNFLDhDQUE4QztJQUNoRDtJQUNBO01BQ0UsOENBQThDO0lBQ2hEO0VBQ0Y7O0VBRUE7SUFDRSxhQUFhO0lBQ2IsbUJBQW1CO0lBQ25CLDhCQUE4Qjs7SUFFOUIsZUFBZTtFQUNqQjs7RUFFQTtJQUNFLGFBQWE7SUFDYixtQkFBbUI7SUFDbkIsUUFBUTtFQUNWO0FBQ0ZcIixcInNvdXJjZXNDb250ZW50XCI6W1wiLmJhc2UtYmFkZ2Uge1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG4gIGdhcDogNHB4O1xcblxcbiAgYm9yZGVyLXJhZGl1czogNDBweDtcXG5cXG4gICY6d2hlcmUoLmwpIHtcXG4gICAgaGVpZ2h0OiA0OHB4O1xcblxcbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1zbSk7XFxuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1saW5lLWhlaWdodC1zbSk7XFxuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1zZW1pYm9sZCk7XFxuICB9XFxuXFxuICAmOndoZXJlKC5tKSB7XFxuICAgIGhlaWdodDogNDBweDtcXG5cXG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtc20pO1xcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tbGluZS1oZWlnaHQtc20pO1xcbiAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtc2VtaWJvbGQpO1xcbiAgfVxcblxcbiAgJjp3aGVyZSgucikge1xcbiAgICBoZWlnaHQ6IDM2cHg7XFxuXFxuICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXNtKTtcXG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLWxpbmUtaGVpZ2h0LXNtKTtcXG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LXNlbWlib2xkKTtcXG4gIH1cXG5cXG4gICY6d2hlcmUoLnMpIHtcXG4gICAgaGVpZ2h0OiAzMnB4O1xcblxcbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1zbSk7XFxuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1saW5lLWhlaWdodC1zbSk7XFxuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1ib2xkKTtcXG4gIH1cXG5cXG4gICY6d2hlcmUoLnNtKSB7XFxuICAgIGhlaWdodDogMjhweDtcXG5cXG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUteHNtKTtcXG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLWxpbmUtaGVpZ2h0LXhzbSk7XFxuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1ib2xkKTtcXG4gIH1cXG5cXG4gICZbY2xhc3MqPVxcXCJiYWNrZ3JvdW5kLVxcXCJdIHtcXG4gICAgJi5iYWNrZ3JvdW5kLWJsYWNrIHtcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5LWJsYWNrKTtcXG4gICAgfVxcbiAgICAmLmJhY2tncm91bmQtd2hpdGUge1xcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnktd2hpdGUpO1xcbiAgICB9XFxuICAgICYuYmFja2dyb3VuZC1ncmF5RmEge1xcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnktZ3JheS1mYSk7XFxuICAgIH1cXG4gICAgJi5iYWNrZ3JvdW5kLXB1cnBsZTM5IHtcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1wb2ludC1wdXJwbGUtMzkpO1xcbiAgICB9XFxuICB9XFxuXFxuICAmW2NsYXNzKj1cXFwidGV4dC1cXFwiXSB7XFxuICAgICYudGV4dC1ibGFjayB7XFxuICAgICAgY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnktYmxhY2spO1xcbiAgICB9XFxuICAgICYudGV4dC13aGl0ZSB7XFxuICAgICAgY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnktd2hpdGUpO1xcbiAgICB9XFxuICAgICYudGV4dC1ncmF5RmEge1xcbiAgICAgIGNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5LWdyYXktZmEpO1xcbiAgICB9XFxuICAgICYudGV4dC1wdXJwbGUzOSB7XFxuICAgICAgY29sb3I6IHZhcigtLWNvbG9yLXBvaW50LXB1cnBsZS0zOSk7XFxuICAgIH1cXG4gIH1cXG5cXG4gICZbY2xhc3MqPVxcXCJib3JkZXItXFxcIl0ge1xcbiAgICAmLmJvcmRlci1ibGFjayB7XFxuICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY29sb3ItcHJpbWFyeS1ibGFjayk7XFxuICAgIH1cXG4gICAgJi5ib3JkZXItd2hpdGUge1xcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNvbG9yLXByaW1hcnktd2hpdGUpO1xcbiAgICB9XFxuICAgICYuYm9yZGVyLWdyYXlGYSB7XFxuICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY29sb3ItcHJpbWFyeS1ncmF5LWZhKTtcXG4gICAgfVxcbiAgICAmLmJvcmRlci1wdXJwbGUzOSB7XFxuICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY29sb3ItcG9pbnQtcHVycGxlLTM5KTtcXG4gICAgfVxcbiAgfVxcblxcbiAgJi5pY29uLXRleHQtb3B0aW9uIHtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xcblxcbiAgICBwYWRkaW5nOiAwIDIwcHg7XFxuICB9XFxuXFxuICAmLmljb24tdGV4dC1vcHRpb24gPiBzcGFuIHtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAgZ2FwOiA0cHg7XFxuICB9XFxufVxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL3NvdXJjZU1hcHMuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBgLm51cmktdGhlbWUge1xuICAtLWNvbG9yLXByaW1hcnktYmxhY2s6ICMwMDAwMDA7XG4gIC0tY29sb3ItcHJpbWFyeS13aGl0ZTogI2ZmZmZmZjtcbiAgLS1jb2xvci1wcmltYXJ5LWdyYXktZmE6ICNmYWZhZmE7XG4gIC0tY29sb3ItcHJpbWFyeS1ncmF5LWY0OiAjZjRmNGY1O1xuICAtLWNvbG9yLXByaW1hcnktZ3JheS1lNDogI2U0ZTRlNztcbiAgLS1jb2xvci1wcmltYXJ5LWdyYXktZDQ6ICNkNGQ0ZDg7XG4gIC0tY29sb3ItcHJpbWFyeS1ncmF5LWExOiAjYTFhMWFhO1xuICAtLWNvbG9yLXByaW1hcnktZ3JheS03MTogIzcxNzE3YTtcbiAgLS1jb2xvci1wcmltYXJ5LWdyYXktNTI6ICM1MjUyNWI7XG4gIC0tY29sb3ItcHJpbWFyeS1ncmF5LTNmOiAjM2YzZjQ2O1xuICAtLWNvbG9yLXByaW1hcnktZ3JheS0yNzogIzI3MjcyYTtcbiAgLS1jb2xvci1wcmltYXJ5LWdyYXktMTg6ICMxODE4MWI7XG5cbiAgLS1jb2xvci1wb2ludC1wdXJwbGUtMzk6ICMzOTFkNWQ7XG4gIC0tY29sb3ItcG9pbnQtcHVycGxlLTRjOiAjNGMyNzdjO1xuICAtLWNvbG9yLXBvaW50LXB1cnBsZS1kZDogI2RkZDFmMDtcbiAgLS1jb2xvci1wb2ludC1wdXJwbGUtZTk6ICNlOWUwZjU7XG4gIC0tY29sb3ItcG9pbnQtcHVycGxlLWY0OiAjZjRlZmZhO1xuICAtLWNvbG9yLXBvaW50LXB1cnBsZS00MTogIzRjMWQ4ODtcbiAgLS1jb2xvci1wb2ludC1wdXJwbGUtOTU6ICM5NTdlYjQ7XG5cbiAgLS1jb2xvci1hY2NlbnQtcmVkLWRmOiAjZGY1MzVjO1xuICAtLWNvbG9yLWFjY2VudC1tYWdlbnRhLWIwOiAjYjAyZTRjO1xuICAtLWNvbG9yLWFjY2VudC1ncmVlbi0yODogIzI4OWEzYTtcblxuICAtLWNvbG9yLWV0Yy1za2VsZXRvbi1lNDogI2U0ZTRlNztcbiAgLS1jb2xvci1ldGMtc2tlbGV0b24tZjc6ICNmN2Y3Zjg7XG4gIC0tY29sb3ItZXRjLXNrZWxldG9uLWZmOiAjZmZmZmZmO1xuXG4gIC0tY29sb3ItZXRjLWhvdmVyLWVlOiAjZWVlZWVlO1xufVxuYCwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9zdHlsZXMvdG9rZW4vY29sb3IuY3NzXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUFBO0VBQ0UsOEJBQThCO0VBQzlCLDhCQUE4QjtFQUM5QixnQ0FBZ0M7RUFDaEMsZ0NBQWdDO0VBQ2hDLGdDQUFnQztFQUNoQyxnQ0FBZ0M7RUFDaEMsZ0NBQWdDO0VBQ2hDLGdDQUFnQztFQUNoQyxnQ0FBZ0M7RUFDaEMsZ0NBQWdDO0VBQ2hDLGdDQUFnQztFQUNoQyxnQ0FBZ0M7O0VBRWhDLGdDQUFnQztFQUNoQyxnQ0FBZ0M7RUFDaEMsZ0NBQWdDO0VBQ2hDLGdDQUFnQztFQUNoQyxnQ0FBZ0M7RUFDaEMsZ0NBQWdDO0VBQ2hDLGdDQUFnQzs7RUFFaEMsOEJBQThCO0VBQzlCLGtDQUFrQztFQUNsQyxnQ0FBZ0M7O0VBRWhDLGdDQUFnQztFQUNoQyxnQ0FBZ0M7RUFDaEMsZ0NBQWdDOztFQUVoQyw2QkFBNkI7QUFDL0JcIixcInNvdXJjZXNDb250ZW50XCI6W1wiLm51cmktdGhlbWUge1xcbiAgLS1jb2xvci1wcmltYXJ5LWJsYWNrOiAjMDAwMDAwO1xcbiAgLS1jb2xvci1wcmltYXJ5LXdoaXRlOiAjZmZmZmZmO1xcbiAgLS1jb2xvci1wcmltYXJ5LWdyYXktZmE6ICNmYWZhZmE7XFxuICAtLWNvbG9yLXByaW1hcnktZ3JheS1mNDogI2Y0ZjRmNTtcXG4gIC0tY29sb3ItcHJpbWFyeS1ncmF5LWU0OiAjZTRlNGU3O1xcbiAgLS1jb2xvci1wcmltYXJ5LWdyYXktZDQ6ICNkNGQ0ZDg7XFxuICAtLWNvbG9yLXByaW1hcnktZ3JheS1hMTogI2ExYTFhYTtcXG4gIC0tY29sb3ItcHJpbWFyeS1ncmF5LTcxOiAjNzE3MTdhO1xcbiAgLS1jb2xvci1wcmltYXJ5LWdyYXktNTI6ICM1MjUyNWI7XFxuICAtLWNvbG9yLXByaW1hcnktZ3JheS0zZjogIzNmM2Y0NjtcXG4gIC0tY29sb3ItcHJpbWFyeS1ncmF5LTI3OiAjMjcyNzJhO1xcbiAgLS1jb2xvci1wcmltYXJ5LWdyYXktMTg6ICMxODE4MWI7XFxuXFxuICAtLWNvbG9yLXBvaW50LXB1cnBsZS0zOTogIzM5MWQ1ZDtcXG4gIC0tY29sb3ItcG9pbnQtcHVycGxlLTRjOiAjNGMyNzdjO1xcbiAgLS1jb2xvci1wb2ludC1wdXJwbGUtZGQ6ICNkZGQxZjA7XFxuICAtLWNvbG9yLXBvaW50LXB1cnBsZS1lOTogI2U5ZTBmNTtcXG4gIC0tY29sb3ItcG9pbnQtcHVycGxlLWY0OiAjZjRlZmZhO1xcbiAgLS1jb2xvci1wb2ludC1wdXJwbGUtNDE6ICM0YzFkODg7XFxuICAtLWNvbG9yLXBvaW50LXB1cnBsZS05NTogIzk1N2ViNDtcXG5cXG4gIC0tY29sb3ItYWNjZW50LXJlZC1kZjogI2RmNTM1YztcXG4gIC0tY29sb3ItYWNjZW50LW1hZ2VudGEtYjA6ICNiMDJlNGM7XFxuICAtLWNvbG9yLWFjY2VudC1ncmVlbi0yODogIzI4OWEzYTtcXG5cXG4gIC0tY29sb3ItZXRjLXNrZWxldG9uLWU0OiAjZTRlNGU3O1xcbiAgLS1jb2xvci1ldGMtc2tlbGV0b24tZjc6ICNmN2Y3Zjg7XFxuICAtLWNvbG9yLWV0Yy1za2VsZXRvbi1mZjogI2ZmZmZmZjtcXG5cXG4gIC0tY29sb3ItZXRjLWhvdmVyLWVlOiAjZWVlZWVlO1xcbn1cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9zb3VyY2VNYXBzLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgYC5udXJpLXRoZW1lIHtcbiAgLS1mb250LXNpemUteHNtOiAxMnB4O1xuICAtLWZvbnQtc2l6ZS1zbTogMTRweDtcbiAgLS1mb250LXNpemUtYmFzZTogMTZweDtcbiAgLS1mb250LXNpemUtbGc6IDE4cHg7XG4gIC0tZm9udC1zaXplLXhsOiAyMHB4O1xuICAtLWZvbnQtc2l6ZS0yeGw6IDI0cHg7XG4gIC0tZm9udC1zaXplLTN4bDogMzBweDtcbiAgLS1mb250LXNpemUtNHhsOiAzNnB4O1xuICAtLWZvbnQtc2l6ZS01eGw6IDQ4cHg7XG4gIC0tZm9udC1zaXplLTZ4bDogNjBweDtcblxuICAtLWxpbmUtaGVpZ2h0LXhzbTogMThweDtcbiAgLS1saW5lLWhlaWdodC1zbTogMThweDtcbiAgLS1saW5lLWhlaWdodC1iYXNlOiAyMnB4O1xuICAtLWxpbmUtaGVpZ2h0LWxnOiAyNHB4O1xuICAtLWxpbmUtaGVpZ2h0LXhsOiAyOHB4O1xuICAtLWxpbmUtaGVpZ2h0LTJ4bDogMzJweDtcbiAgLS1saW5lLWhlaWdodC0zeGw6IDM2cHg7XG4gIC0tbGluZS1oZWlnaHQtNHhsOiA0M3B4O1xuICAtLWxpbmUtaGVpZ2h0LTV4bDogNjZweDtcbiAgLS1saW5lLWhlaWdodC02eGw6IDgycHg7XG5cbiAgLS1mb250LXdlaWdodC1yZWd1bGFyOiA0MDA7XG4gIC0tZm9udC13ZWlnaHQtbWVkaXVtOiA1MDA7XG4gIC0tZm9udC13ZWlnaHQtc2VtaWJvbGQ6IDYwMDtcbiAgLS1mb250LXdlaWdodC1ib2xkOiA3MDA7XG4gIC0tZm9udC13ZWlnaHQtZXh0cmFib2xkOiA4MDA7XG59XG5gLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL3N0eWxlcy90b2tlbi9mb250LmNzc1wiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFBQTtFQUNFLHFCQUFxQjtFQUNyQixvQkFBb0I7RUFDcEIsc0JBQXNCO0VBQ3RCLG9CQUFvQjtFQUNwQixvQkFBb0I7RUFDcEIscUJBQXFCO0VBQ3JCLHFCQUFxQjtFQUNyQixxQkFBcUI7RUFDckIscUJBQXFCO0VBQ3JCLHFCQUFxQjs7RUFFckIsdUJBQXVCO0VBQ3ZCLHNCQUFzQjtFQUN0Qix3QkFBd0I7RUFDeEIsc0JBQXNCO0VBQ3RCLHNCQUFzQjtFQUN0Qix1QkFBdUI7RUFDdkIsdUJBQXVCO0VBQ3ZCLHVCQUF1QjtFQUN2Qix1QkFBdUI7RUFDdkIsdUJBQXVCOztFQUV2QiwwQkFBMEI7RUFDMUIseUJBQXlCO0VBQ3pCLDJCQUEyQjtFQUMzQix1QkFBdUI7RUFDdkIsNEJBQTRCO0FBQzlCXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIi5udXJpLXRoZW1lIHtcXG4gIC0tZm9udC1zaXplLXhzbTogMTJweDtcXG4gIC0tZm9udC1zaXplLXNtOiAxNHB4O1xcbiAgLS1mb250LXNpemUtYmFzZTogMTZweDtcXG4gIC0tZm9udC1zaXplLWxnOiAxOHB4O1xcbiAgLS1mb250LXNpemUteGw6IDIwcHg7XFxuICAtLWZvbnQtc2l6ZS0yeGw6IDI0cHg7XFxuICAtLWZvbnQtc2l6ZS0zeGw6IDMwcHg7XFxuICAtLWZvbnQtc2l6ZS00eGw6IDM2cHg7XFxuICAtLWZvbnQtc2l6ZS01eGw6IDQ4cHg7XFxuICAtLWZvbnQtc2l6ZS02eGw6IDYwcHg7XFxuXFxuICAtLWxpbmUtaGVpZ2h0LXhzbTogMThweDtcXG4gIC0tbGluZS1oZWlnaHQtc206IDE4cHg7XFxuICAtLWxpbmUtaGVpZ2h0LWJhc2U6IDIycHg7XFxuICAtLWxpbmUtaGVpZ2h0LWxnOiAyNHB4O1xcbiAgLS1saW5lLWhlaWdodC14bDogMjhweDtcXG4gIC0tbGluZS1oZWlnaHQtMnhsOiAzMnB4O1xcbiAgLS1saW5lLWhlaWdodC0zeGw6IDM2cHg7XFxuICAtLWxpbmUtaGVpZ2h0LTR4bDogNDNweDtcXG4gIC0tbGluZS1oZWlnaHQtNXhsOiA2NnB4O1xcbiAgLS1saW5lLWhlaWdodC02eGw6IDgycHg7XFxuXFxuICAtLWZvbnQtd2VpZ2h0LXJlZ3VsYXI6IDQwMDtcXG4gIC0tZm9udC13ZWlnaHQtbWVkaXVtOiA1MDA7XFxuICAtLWZvbnQtd2VpZ2h0LXNlbWlib2xkOiA2MDA7XFxuICAtLWZvbnQtd2VpZ2h0LWJvbGQ6IDcwMDtcXG4gIC0tZm9udC13ZWlnaHQtZXh0cmFib2xkOiA4MDA7XFxufVxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCJcInVzZSBzdHJpY3RcIjtcblxuLypcbiAgTUlUIExpY2Vuc2UgaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9taXQtbGljZW5zZS5waHBcbiAgQXV0aG9yIFRvYmlhcyBLb3BwZXJzIEBzb2tyYVxuKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGNzc1dpdGhNYXBwaW5nVG9TdHJpbmcpIHtcbiAgdmFyIGxpc3QgPSBbXTtcblxuICAvLyByZXR1cm4gdGhlIGxpc3Qgb2YgbW9kdWxlcyBhcyBjc3Mgc3RyaW5nXG4gIGxpc3QudG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgIHZhciBjb250ZW50ID0gXCJcIjtcbiAgICAgIHZhciBuZWVkTGF5ZXIgPSB0eXBlb2YgaXRlbVs1XSAhPT0gXCJ1bmRlZmluZWRcIjtcbiAgICAgIGlmIChpdGVtWzRdKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJAc3VwcG9ydHMgKFwiLmNvbmNhdChpdGVtWzRdLCBcIikge1wiKTtcbiAgICAgIH1cbiAgICAgIGlmIChpdGVtWzJdKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJAbWVkaWEgXCIuY29uY2F0KGl0ZW1bMl0sIFwiIHtcIik7XG4gICAgICB9XG4gICAgICBpZiAobmVlZExheWVyKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJAbGF5ZXJcIi5jb25jYXQoaXRlbVs1XS5sZW5ndGggPiAwID8gXCIgXCIuY29uY2F0KGl0ZW1bNV0pIDogXCJcIiwgXCIge1wiKTtcbiAgICAgIH1cbiAgICAgIGNvbnRlbnQgKz0gY3NzV2l0aE1hcHBpbmdUb1N0cmluZyhpdGVtKTtcbiAgICAgIGlmIChuZWVkTGF5ZXIpIHtcbiAgICAgICAgY29udGVudCArPSBcIn1cIjtcbiAgICAgIH1cbiAgICAgIGlmIChpdGVtWzJdKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJ9XCI7XG4gICAgICB9XG4gICAgICBpZiAoaXRlbVs0XSkge1xuICAgICAgICBjb250ZW50ICs9IFwifVwiO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgfSkuam9pbihcIlwiKTtcbiAgfTtcblxuICAvLyBpbXBvcnQgYSBsaXN0IG9mIG1vZHVsZXMgaW50byB0aGUgbGlzdFxuICBsaXN0LmkgPSBmdW5jdGlvbiBpKG1vZHVsZXMsIG1lZGlhLCBkZWR1cGUsIHN1cHBvcnRzLCBsYXllcikge1xuICAgIGlmICh0eXBlb2YgbW9kdWxlcyA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgbW9kdWxlcyA9IFtbbnVsbCwgbW9kdWxlcywgdW5kZWZpbmVkXV07XG4gICAgfVxuICAgIHZhciBhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzID0ge307XG4gICAgaWYgKGRlZHVwZSkge1xuICAgICAgZm9yICh2YXIgayA9IDA7IGsgPCB0aGlzLmxlbmd0aDsgaysrKSB7XG4gICAgICAgIHZhciBpZCA9IHRoaXNba11bMF07XG4gICAgICAgIGlmIChpZCAhPSBudWxsKSB7XG4gICAgICAgICAgYWxyZWFkeUltcG9ydGVkTW9kdWxlc1tpZF0gPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGZvciAodmFyIF9rID0gMDsgX2sgPCBtb2R1bGVzLmxlbmd0aDsgX2srKykge1xuICAgICAgdmFyIGl0ZW0gPSBbXS5jb25jYXQobW9kdWxlc1tfa10pO1xuICAgICAgaWYgKGRlZHVwZSAmJiBhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzW2l0ZW1bMF1dKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKHR5cGVvZiBsYXllciAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICBpZiAodHlwZW9mIGl0ZW1bNV0gPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICBpdGVtWzVdID0gbGF5ZXI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaXRlbVsxXSA9IFwiQGxheWVyXCIuY29uY2F0KGl0ZW1bNV0ubGVuZ3RoID4gMCA/IFwiIFwiLmNvbmNhdChpdGVtWzVdKSA6IFwiXCIsIFwiIHtcIikuY29uY2F0KGl0ZW1bMV0sIFwifVwiKTtcbiAgICAgICAgICBpdGVtWzVdID0gbGF5ZXI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChtZWRpYSkge1xuICAgICAgICBpZiAoIWl0ZW1bMl0pIHtcbiAgICAgICAgICBpdGVtWzJdID0gbWVkaWE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaXRlbVsxXSA9IFwiQG1lZGlhIFwiLmNvbmNhdChpdGVtWzJdLCBcIiB7XCIpLmNvbmNhdChpdGVtWzFdLCBcIn1cIik7XG4gICAgICAgICAgaXRlbVsyXSA9IG1lZGlhO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoc3VwcG9ydHMpIHtcbiAgICAgICAgaWYgKCFpdGVtWzRdKSB7XG4gICAgICAgICAgaXRlbVs0XSA9IFwiXCIuY29uY2F0KHN1cHBvcnRzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpdGVtWzFdID0gXCJAc3VwcG9ydHMgKFwiLmNvbmNhdChpdGVtWzRdLCBcIikge1wiKS5jb25jYXQoaXRlbVsxXSwgXCJ9XCIpO1xuICAgICAgICAgIGl0ZW1bNF0gPSBzdXBwb3J0cztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgbGlzdC5wdXNoKGl0ZW0pO1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIGxpc3Q7XG59OyIsIlwidXNlIHN0cmljdFwiO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdGVtKSB7XG4gIHZhciBjb250ZW50ID0gaXRlbVsxXTtcbiAgdmFyIGNzc01hcHBpbmcgPSBpdGVtWzNdO1xuICBpZiAoIWNzc01hcHBpbmcpIHtcbiAgICByZXR1cm4gY29udGVudDtcbiAgfVxuICBpZiAodHlwZW9mIGJ0b2EgPT09IFwiZnVuY3Rpb25cIikge1xuICAgIHZhciBiYXNlNjQgPSBidG9hKHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShjc3NNYXBwaW5nKSkpKTtcbiAgICB2YXIgZGF0YSA9IFwic291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsXCIuY29uY2F0KGJhc2U2NCk7XG4gICAgdmFyIHNvdXJjZU1hcHBpbmcgPSBcIi8qIyBcIi5jb25jYXQoZGF0YSwgXCIgKi9cIik7XG4gICAgcmV0dXJuIFtjb250ZW50XS5jb25jYXQoW3NvdXJjZU1hcHBpbmddKS5qb2luKFwiXFxuXCIpO1xuICB9XG4gIHJldHVybiBbY29udGVudF0uam9pbihcIlxcblwiKTtcbn07IiwiLyoqXG4gKiBAbGljZW5zZSBSZWFjdFxuICogcmVhY3QtanN4LXJ1bnRpbWUucHJvZHVjdGlvbi5taW4uanNcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIEZhY2Vib29rLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuJ3VzZSBzdHJpY3QnO3ZhciBmPXJlcXVpcmUoXCJyZWFjdFwiKSxrPVN5bWJvbC5mb3IoXCJyZWFjdC5lbGVtZW50XCIpLGw9U3ltYm9sLmZvcihcInJlYWN0LmZyYWdtZW50XCIpLG09T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxuPWYuX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQuUmVhY3RDdXJyZW50T3duZXIscD17a2V5OiEwLHJlZjohMCxfX3NlbGY6ITAsX19zb3VyY2U6ITB9O1xuZnVuY3Rpb24gcShjLGEsZyl7dmFyIGIsZD17fSxlPW51bGwsaD1udWxsO3ZvaWQgMCE9PWcmJihlPVwiXCIrZyk7dm9pZCAwIT09YS5rZXkmJihlPVwiXCIrYS5rZXkpO3ZvaWQgMCE9PWEucmVmJiYoaD1hLnJlZik7Zm9yKGIgaW4gYSltLmNhbGwoYSxiKSYmIXAuaGFzT3duUHJvcGVydHkoYikmJihkW2JdPWFbYl0pO2lmKGMmJmMuZGVmYXVsdFByb3BzKWZvcihiIGluIGE9Yy5kZWZhdWx0UHJvcHMsYSl2b2lkIDA9PT1kW2JdJiYoZFtiXT1hW2JdKTtyZXR1cm57JCR0eXBlb2Y6ayx0eXBlOmMsa2V5OmUscmVmOmgscHJvcHM6ZCxfb3duZXI6bi5jdXJyZW50fX1leHBvcnRzLkZyYWdtZW50PWw7ZXhwb3J0cy5qc3g9cTtleHBvcnRzLmpzeHM9cTtcbiIsIi8qKlxuICogQGxpY2Vuc2UgUmVhY3RcbiAqIHJlYWN0LnByb2R1Y3Rpb24ubWluLmpzXG4gKlxuICogQ29weXJpZ2h0IChjKSBGYWNlYm9vaywgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cbid1c2Ugc3RyaWN0Jzt2YXIgbD1TeW1ib2wuZm9yKFwicmVhY3QuZWxlbWVudFwiKSxuPVN5bWJvbC5mb3IoXCJyZWFjdC5wb3J0YWxcIikscD1TeW1ib2wuZm9yKFwicmVhY3QuZnJhZ21lbnRcIikscT1TeW1ib2wuZm9yKFwicmVhY3Quc3RyaWN0X21vZGVcIikscj1TeW1ib2wuZm9yKFwicmVhY3QucHJvZmlsZXJcIiksdD1TeW1ib2wuZm9yKFwicmVhY3QucHJvdmlkZXJcIiksdT1TeW1ib2wuZm9yKFwicmVhY3QuY29udGV4dFwiKSx2PVN5bWJvbC5mb3IoXCJyZWFjdC5mb3J3YXJkX3JlZlwiKSx3PVN5bWJvbC5mb3IoXCJyZWFjdC5zdXNwZW5zZVwiKSx4PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vXCIpLHk9U3ltYm9sLmZvcihcInJlYWN0LmxhenlcIiksej1TeW1ib2wuaXRlcmF0b3I7ZnVuY3Rpb24gQShhKXtpZihudWxsPT09YXx8XCJvYmplY3RcIiE9PXR5cGVvZiBhKXJldHVybiBudWxsO2E9eiYmYVt6XXx8YVtcIkBAaXRlcmF0b3JcIl07cmV0dXJuXCJmdW5jdGlvblwiPT09dHlwZW9mIGE/YTpudWxsfVxudmFyIEI9e2lzTW91bnRlZDpmdW5jdGlvbigpe3JldHVybiExfSxlbnF1ZXVlRm9yY2VVcGRhdGU6ZnVuY3Rpb24oKXt9LGVucXVldWVSZXBsYWNlU3RhdGU6ZnVuY3Rpb24oKXt9LGVucXVldWVTZXRTdGF0ZTpmdW5jdGlvbigpe319LEM9T2JqZWN0LmFzc2lnbixEPXt9O2Z1bmN0aW9uIEUoYSxiLGUpe3RoaXMucHJvcHM9YTt0aGlzLmNvbnRleHQ9Yjt0aGlzLnJlZnM9RDt0aGlzLnVwZGF0ZXI9ZXx8Qn1FLnByb3RvdHlwZS5pc1JlYWN0Q29tcG9uZW50PXt9O1xuRS5wcm90b3R5cGUuc2V0U3RhdGU9ZnVuY3Rpb24oYSxiKXtpZihcIm9iamVjdFwiIT09dHlwZW9mIGEmJlwiZnVuY3Rpb25cIiE9PXR5cGVvZiBhJiZudWxsIT1hKXRocm93IEVycm9yKFwic2V0U3RhdGUoLi4uKTogdGFrZXMgYW4gb2JqZWN0IG9mIHN0YXRlIHZhcmlhYmxlcyB0byB1cGRhdGUgb3IgYSBmdW5jdGlvbiB3aGljaCByZXR1cm5zIGFuIG9iamVjdCBvZiBzdGF0ZSB2YXJpYWJsZXMuXCIpO3RoaXMudXBkYXRlci5lbnF1ZXVlU2V0U3RhdGUodGhpcyxhLGIsXCJzZXRTdGF0ZVwiKX07RS5wcm90b3R5cGUuZm9yY2VVcGRhdGU9ZnVuY3Rpb24oYSl7dGhpcy51cGRhdGVyLmVucXVldWVGb3JjZVVwZGF0ZSh0aGlzLGEsXCJmb3JjZVVwZGF0ZVwiKX07ZnVuY3Rpb24gRigpe31GLnByb3RvdHlwZT1FLnByb3RvdHlwZTtmdW5jdGlvbiBHKGEsYixlKXt0aGlzLnByb3BzPWE7dGhpcy5jb250ZXh0PWI7dGhpcy5yZWZzPUQ7dGhpcy51cGRhdGVyPWV8fEJ9dmFyIEg9Ry5wcm90b3R5cGU9bmV3IEY7XG5ILmNvbnN0cnVjdG9yPUc7QyhILEUucHJvdG90eXBlKTtILmlzUHVyZVJlYWN0Q29tcG9uZW50PSEwO3ZhciBJPUFycmF5LmlzQXJyYXksSj1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LEs9e2N1cnJlbnQ6bnVsbH0sTD17a2V5OiEwLHJlZjohMCxfX3NlbGY6ITAsX19zb3VyY2U6ITB9O1xuZnVuY3Rpb24gTShhLGIsZSl7dmFyIGQsYz17fSxrPW51bGwsaD1udWxsO2lmKG51bGwhPWIpZm9yKGQgaW4gdm9pZCAwIT09Yi5yZWYmJihoPWIucmVmKSx2b2lkIDAhPT1iLmtleSYmKGs9XCJcIitiLmtleSksYilKLmNhbGwoYixkKSYmIUwuaGFzT3duUHJvcGVydHkoZCkmJihjW2RdPWJbZF0pO3ZhciBnPWFyZ3VtZW50cy5sZW5ndGgtMjtpZigxPT09ZyljLmNoaWxkcmVuPWU7ZWxzZSBpZigxPGcpe2Zvcih2YXIgZj1BcnJheShnKSxtPTA7bTxnO20rKylmW21dPWFyZ3VtZW50c1ttKzJdO2MuY2hpbGRyZW49Zn1pZihhJiZhLmRlZmF1bHRQcm9wcylmb3IoZCBpbiBnPWEuZGVmYXVsdFByb3BzLGcpdm9pZCAwPT09Y1tkXSYmKGNbZF09Z1tkXSk7cmV0dXJueyQkdHlwZW9mOmwsdHlwZTphLGtleTprLHJlZjpoLHByb3BzOmMsX293bmVyOksuY3VycmVudH19XG5mdW5jdGlvbiBOKGEsYil7cmV0dXJueyQkdHlwZW9mOmwsdHlwZTphLnR5cGUsa2V5OmIscmVmOmEucmVmLHByb3BzOmEucHJvcHMsX293bmVyOmEuX293bmVyfX1mdW5jdGlvbiBPKGEpe3JldHVyblwib2JqZWN0XCI9PT10eXBlb2YgYSYmbnVsbCE9PWEmJmEuJCR0eXBlb2Y9PT1sfWZ1bmN0aW9uIGVzY2FwZShhKXt2YXIgYj17XCI9XCI6XCI9MFwiLFwiOlwiOlwiPTJcIn07cmV0dXJuXCIkXCIrYS5yZXBsYWNlKC9bPTpdL2csZnVuY3Rpb24oYSl7cmV0dXJuIGJbYV19KX12YXIgUD0vXFwvKy9nO2Z1bmN0aW9uIFEoYSxiKXtyZXR1cm5cIm9iamVjdFwiPT09dHlwZW9mIGEmJm51bGwhPT1hJiZudWxsIT1hLmtleT9lc2NhcGUoXCJcIithLmtleSk6Yi50b1N0cmluZygzNil9XG5mdW5jdGlvbiBSKGEsYixlLGQsYyl7dmFyIGs9dHlwZW9mIGE7aWYoXCJ1bmRlZmluZWRcIj09PWt8fFwiYm9vbGVhblwiPT09aylhPW51bGw7dmFyIGg9ITE7aWYobnVsbD09PWEpaD0hMDtlbHNlIHN3aXRjaChrKXtjYXNlIFwic3RyaW5nXCI6Y2FzZSBcIm51bWJlclwiOmg9ITA7YnJlYWs7Y2FzZSBcIm9iamVjdFwiOnN3aXRjaChhLiQkdHlwZW9mKXtjYXNlIGw6Y2FzZSBuOmg9ITB9fWlmKGgpcmV0dXJuIGg9YSxjPWMoaCksYT1cIlwiPT09ZD9cIi5cIitRKGgsMCk6ZCxJKGMpPyhlPVwiXCIsbnVsbCE9YSYmKGU9YS5yZXBsYWNlKFAsXCIkJi9cIikrXCIvXCIpLFIoYyxiLGUsXCJcIixmdW5jdGlvbihhKXtyZXR1cm4gYX0pKTpudWxsIT1jJiYoTyhjKSYmKGM9TihjLGUrKCFjLmtleXx8aCYmaC5rZXk9PT1jLmtleT9cIlwiOihcIlwiK2Mua2V5KS5yZXBsYWNlKFAsXCIkJi9cIikrXCIvXCIpK2EpKSxiLnB1c2goYykpLDE7aD0wO2Q9XCJcIj09PWQ/XCIuXCI6ZCtcIjpcIjtpZihJKGEpKWZvcih2YXIgZz0wO2c8YS5sZW5ndGg7ZysrKXtrPVxuYVtnXTt2YXIgZj1kK1EoayxnKTtoKz1SKGssYixlLGYsYyl9ZWxzZSBpZihmPUEoYSksXCJmdW5jdGlvblwiPT09dHlwZW9mIGYpZm9yKGE9Zi5jYWxsKGEpLGc9MDshKGs9YS5uZXh0KCkpLmRvbmU7KWs9ay52YWx1ZSxmPWQrUShrLGcrKyksaCs9UihrLGIsZSxmLGMpO2Vsc2UgaWYoXCJvYmplY3RcIj09PWspdGhyb3cgYj1TdHJpbmcoYSksRXJyb3IoXCJPYmplY3RzIGFyZSBub3QgdmFsaWQgYXMgYSBSZWFjdCBjaGlsZCAoZm91bmQ6IFwiKyhcIltvYmplY3QgT2JqZWN0XVwiPT09Yj9cIm9iamVjdCB3aXRoIGtleXMge1wiK09iamVjdC5rZXlzKGEpLmpvaW4oXCIsIFwiKStcIn1cIjpiKStcIikuIElmIHlvdSBtZWFudCB0byByZW5kZXIgYSBjb2xsZWN0aW9uIG9mIGNoaWxkcmVuLCB1c2UgYW4gYXJyYXkgaW5zdGVhZC5cIik7cmV0dXJuIGh9XG5mdW5jdGlvbiBTKGEsYixlKXtpZihudWxsPT1hKXJldHVybiBhO3ZhciBkPVtdLGM9MDtSKGEsZCxcIlwiLFwiXCIsZnVuY3Rpb24oYSl7cmV0dXJuIGIuY2FsbChlLGEsYysrKX0pO3JldHVybiBkfWZ1bmN0aW9uIFQoYSl7aWYoLTE9PT1hLl9zdGF0dXMpe3ZhciBiPWEuX3Jlc3VsdDtiPWIoKTtiLnRoZW4oZnVuY3Rpb24oYil7aWYoMD09PWEuX3N0YXR1c3x8LTE9PT1hLl9zdGF0dXMpYS5fc3RhdHVzPTEsYS5fcmVzdWx0PWJ9LGZ1bmN0aW9uKGIpe2lmKDA9PT1hLl9zdGF0dXN8fC0xPT09YS5fc3RhdHVzKWEuX3N0YXR1cz0yLGEuX3Jlc3VsdD1ifSk7LTE9PT1hLl9zdGF0dXMmJihhLl9zdGF0dXM9MCxhLl9yZXN1bHQ9Yil9aWYoMT09PWEuX3N0YXR1cylyZXR1cm4gYS5fcmVzdWx0LmRlZmF1bHQ7dGhyb3cgYS5fcmVzdWx0O31cbnZhciBVPXtjdXJyZW50Om51bGx9LFY9e3RyYW5zaXRpb246bnVsbH0sVz17UmVhY3RDdXJyZW50RGlzcGF0Y2hlcjpVLFJlYWN0Q3VycmVudEJhdGNoQ29uZmlnOlYsUmVhY3RDdXJyZW50T3duZXI6S307ZnVuY3Rpb24gWCgpe3Rocm93IEVycm9yKFwiYWN0KC4uLikgaXMgbm90IHN1cHBvcnRlZCBpbiBwcm9kdWN0aW9uIGJ1aWxkcyBvZiBSZWFjdC5cIik7fVxuZXhwb3J0cy5DaGlsZHJlbj17bWFwOlMsZm9yRWFjaDpmdW5jdGlvbihhLGIsZSl7UyhhLGZ1bmN0aW9uKCl7Yi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LGUpfSxjb3VudDpmdW5jdGlvbihhKXt2YXIgYj0wO1MoYSxmdW5jdGlvbigpe2IrK30pO3JldHVybiBifSx0b0FycmF5OmZ1bmN0aW9uKGEpe3JldHVybiBTKGEsZnVuY3Rpb24oYSl7cmV0dXJuIGF9KXx8W119LG9ubHk6ZnVuY3Rpb24oYSl7aWYoIU8oYSkpdGhyb3cgRXJyb3IoXCJSZWFjdC5DaGlsZHJlbi5vbmx5IGV4cGVjdGVkIHRvIHJlY2VpdmUgYSBzaW5nbGUgUmVhY3QgZWxlbWVudCBjaGlsZC5cIik7cmV0dXJuIGF9fTtleHBvcnRzLkNvbXBvbmVudD1FO2V4cG9ydHMuRnJhZ21lbnQ9cDtleHBvcnRzLlByb2ZpbGVyPXI7ZXhwb3J0cy5QdXJlQ29tcG9uZW50PUc7ZXhwb3J0cy5TdHJpY3RNb2RlPXE7ZXhwb3J0cy5TdXNwZW5zZT13O1xuZXhwb3J0cy5fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRD1XO2V4cG9ydHMuYWN0PVg7XG5leHBvcnRzLmNsb25lRWxlbWVudD1mdW5jdGlvbihhLGIsZSl7aWYobnVsbD09PWF8fHZvaWQgMD09PWEpdGhyb3cgRXJyb3IoXCJSZWFjdC5jbG9uZUVsZW1lbnQoLi4uKTogVGhlIGFyZ3VtZW50IG11c3QgYmUgYSBSZWFjdCBlbGVtZW50LCBidXQgeW91IHBhc3NlZCBcIithK1wiLlwiKTt2YXIgZD1DKHt9LGEucHJvcHMpLGM9YS5rZXksaz1hLnJlZixoPWEuX293bmVyO2lmKG51bGwhPWIpe3ZvaWQgMCE9PWIucmVmJiYoaz1iLnJlZixoPUsuY3VycmVudCk7dm9pZCAwIT09Yi5rZXkmJihjPVwiXCIrYi5rZXkpO2lmKGEudHlwZSYmYS50eXBlLmRlZmF1bHRQcm9wcyl2YXIgZz1hLnR5cGUuZGVmYXVsdFByb3BzO2ZvcihmIGluIGIpSi5jYWxsKGIsZikmJiFMLmhhc093blByb3BlcnR5KGYpJiYoZFtmXT12b2lkIDA9PT1iW2ZdJiZ2b2lkIDAhPT1nP2dbZl06YltmXSl9dmFyIGY9YXJndW1lbnRzLmxlbmd0aC0yO2lmKDE9PT1mKWQuY2hpbGRyZW49ZTtlbHNlIGlmKDE8Zil7Zz1BcnJheShmKTtcbmZvcih2YXIgbT0wO208ZjttKyspZ1ttXT1hcmd1bWVudHNbbSsyXTtkLmNoaWxkcmVuPWd9cmV0dXJueyQkdHlwZW9mOmwsdHlwZTphLnR5cGUsa2V5OmMscmVmOmsscHJvcHM6ZCxfb3duZXI6aH19O2V4cG9ydHMuY3JlYXRlQ29udGV4dD1mdW5jdGlvbihhKXthPXskJHR5cGVvZjp1LF9jdXJyZW50VmFsdWU6YSxfY3VycmVudFZhbHVlMjphLF90aHJlYWRDb3VudDowLFByb3ZpZGVyOm51bGwsQ29uc3VtZXI6bnVsbCxfZGVmYXVsdFZhbHVlOm51bGwsX2dsb2JhbE5hbWU6bnVsbH07YS5Qcm92aWRlcj17JCR0eXBlb2Y6dCxfY29udGV4dDphfTtyZXR1cm4gYS5Db25zdW1lcj1hfTtleHBvcnRzLmNyZWF0ZUVsZW1lbnQ9TTtleHBvcnRzLmNyZWF0ZUZhY3Rvcnk9ZnVuY3Rpb24oYSl7dmFyIGI9TS5iaW5kKG51bGwsYSk7Yi50eXBlPWE7cmV0dXJuIGJ9O2V4cG9ydHMuY3JlYXRlUmVmPWZ1bmN0aW9uKCl7cmV0dXJue2N1cnJlbnQ6bnVsbH19O1xuZXhwb3J0cy5mb3J3YXJkUmVmPWZ1bmN0aW9uKGEpe3JldHVybnskJHR5cGVvZjp2LHJlbmRlcjphfX07ZXhwb3J0cy5pc1ZhbGlkRWxlbWVudD1PO2V4cG9ydHMubGF6eT1mdW5jdGlvbihhKXtyZXR1cm57JCR0eXBlb2Y6eSxfcGF5bG9hZDp7X3N0YXR1czotMSxfcmVzdWx0OmF9LF9pbml0OlR9fTtleHBvcnRzLm1lbW89ZnVuY3Rpb24oYSxiKXtyZXR1cm57JCR0eXBlb2Y6eCx0eXBlOmEsY29tcGFyZTp2b2lkIDA9PT1iP251bGw6Yn19O2V4cG9ydHMuc3RhcnRUcmFuc2l0aW9uPWZ1bmN0aW9uKGEpe3ZhciBiPVYudHJhbnNpdGlvbjtWLnRyYW5zaXRpb249e307dHJ5e2EoKX1maW5hbGx5e1YudHJhbnNpdGlvbj1ifX07ZXhwb3J0cy51bnN0YWJsZV9hY3Q9WDtleHBvcnRzLnVzZUNhbGxiYWNrPWZ1bmN0aW9uKGEsYil7cmV0dXJuIFUuY3VycmVudC51c2VDYWxsYmFjayhhLGIpfTtleHBvcnRzLnVzZUNvbnRleHQ9ZnVuY3Rpb24oYSl7cmV0dXJuIFUuY3VycmVudC51c2VDb250ZXh0KGEpfTtcbmV4cG9ydHMudXNlRGVidWdWYWx1ZT1mdW5jdGlvbigpe307ZXhwb3J0cy51c2VEZWZlcnJlZFZhbHVlPWZ1bmN0aW9uKGEpe3JldHVybiBVLmN1cnJlbnQudXNlRGVmZXJyZWRWYWx1ZShhKX07ZXhwb3J0cy51c2VFZmZlY3Q9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gVS5jdXJyZW50LnVzZUVmZmVjdChhLGIpfTtleHBvcnRzLnVzZUlkPWZ1bmN0aW9uKCl7cmV0dXJuIFUuY3VycmVudC51c2VJZCgpfTtleHBvcnRzLnVzZUltcGVyYXRpdmVIYW5kbGU9ZnVuY3Rpb24oYSxiLGUpe3JldHVybiBVLmN1cnJlbnQudXNlSW1wZXJhdGl2ZUhhbmRsZShhLGIsZSl9O2V4cG9ydHMudXNlSW5zZXJ0aW9uRWZmZWN0PWZ1bmN0aW9uKGEsYil7cmV0dXJuIFUuY3VycmVudC51c2VJbnNlcnRpb25FZmZlY3QoYSxiKX07ZXhwb3J0cy51c2VMYXlvdXRFZmZlY3Q9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gVS5jdXJyZW50LnVzZUxheW91dEVmZmVjdChhLGIpfTtcbmV4cG9ydHMudXNlTWVtbz1mdW5jdGlvbihhLGIpe3JldHVybiBVLmN1cnJlbnQudXNlTWVtbyhhLGIpfTtleHBvcnRzLnVzZVJlZHVjZXI9ZnVuY3Rpb24oYSxiLGUpe3JldHVybiBVLmN1cnJlbnQudXNlUmVkdWNlcihhLGIsZSl9O2V4cG9ydHMudXNlUmVmPWZ1bmN0aW9uKGEpe3JldHVybiBVLmN1cnJlbnQudXNlUmVmKGEpfTtleHBvcnRzLnVzZVN0YXRlPWZ1bmN0aW9uKGEpe3JldHVybiBVLmN1cnJlbnQudXNlU3RhdGUoYSl9O2V4cG9ydHMudXNlU3luY0V4dGVybmFsU3RvcmU9ZnVuY3Rpb24oYSxiLGUpe3JldHVybiBVLmN1cnJlbnQudXNlU3luY0V4dGVybmFsU3RvcmUoYSxiLGUpfTtleHBvcnRzLnVzZVRyYW5zaXRpb249ZnVuY3Rpb24oKXtyZXR1cm4gVS5jdXJyZW50LnVzZVRyYW5zaXRpb24oKX07ZXhwb3J0cy52ZXJzaW9uPVwiMTguMy4xXCI7XG4iLCIndXNlIHN0cmljdCc7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QucHJvZHVjdGlvbi5taW4uanMnKTtcbn0gZWxzZSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QuZGV2ZWxvcG1lbnQuanMnKTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1qc3gtcnVudGltZS5wcm9kdWN0aW9uLm1pbi5qcycpO1xufSBlbHNlIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1qc3gtcnVudGltZS5kZXZlbG9wbWVudC5qcycpO1xufVxuIiwiXG4gICAgICBpbXBvcnQgQVBJIGZyb20gXCIhLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICBpbXBvcnQgZG9tQVBJIGZyb20gXCIhLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRGbiBmcm9tIFwiIS4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydEJ5U2VsZWN0b3IuanNcIjtcbiAgICAgIGltcG9ydCBzZXRBdHRyaWJ1dGVzIGZyb20gXCIhLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0U3R5bGVFbGVtZW50IGZyb20gXCIhLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzXCI7XG4gICAgICBpbXBvcnQgc3R5bGVUYWdUcmFuc2Zvcm1GbiBmcm9tIFwiIS4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzXCI7XG4gICAgICBpbXBvcnQgY29udGVudCwgKiBhcyBuYW1lZEV4cG9ydCBmcm9tIFwiISEuLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL2F2YXRhci5jc3NcIjtcbiAgICAgIFxuICAgICAgXG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuc3R5bGVUYWdUcmFuc2Zvcm0gPSBzdHlsZVRhZ1RyYW5zZm9ybUZuO1xub3B0aW9ucy5zZXRBdHRyaWJ1dGVzID0gc2V0QXR0cmlidXRlcztcbm9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi9hdmF0YXIuY3NzXCI7XG4gICAgICAgZXhwb3J0IGRlZmF1bHQgY29udGVudCAmJiBjb250ZW50LmxvY2FscyA/IGNvbnRlbnQubG9jYWxzIDogdW5kZWZpbmVkO1xuIiwiXG4gICAgICBpbXBvcnQgQVBJIGZyb20gXCIhLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICBpbXBvcnQgZG9tQVBJIGZyb20gXCIhLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRGbiBmcm9tIFwiIS4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydEJ5U2VsZWN0b3IuanNcIjtcbiAgICAgIGltcG9ydCBzZXRBdHRyaWJ1dGVzIGZyb20gXCIhLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0U3R5bGVFbGVtZW50IGZyb20gXCIhLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzXCI7XG4gICAgICBpbXBvcnQgc3R5bGVUYWdUcmFuc2Zvcm1GbiBmcm9tIFwiIS4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzXCI7XG4gICAgICBpbXBvcnQgY29udGVudCwgKiBhcyBuYW1lZEV4cG9ydCBmcm9tIFwiISEuLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL2JhZGdlLmNzc1wiO1xuICAgICAgXG4gICAgICBcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5zdHlsZVRhZ1RyYW5zZm9ybSA9IHN0eWxlVGFnVHJhbnNmb3JtRm47XG5vcHRpb25zLnNldEF0dHJpYnV0ZXMgPSBzZXRBdHRyaWJ1dGVzO1xub3B0aW9ucy5pbnNlcnQgPSBpbnNlcnRGbi5iaW5kKG51bGwsIFwiaGVhZFwiKTtcbm9wdGlvbnMuZG9tQVBJID0gZG9tQVBJO1xub3B0aW9ucy5pbnNlcnRTdHlsZUVsZW1lbnQgPSBpbnNlcnRTdHlsZUVsZW1lbnQ7XG5cbnZhciB1cGRhdGUgPSBBUEkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgKiBmcm9tIFwiISEuLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL2JhZGdlLmNzc1wiO1xuICAgICAgIGV4cG9ydCBkZWZhdWx0IGNvbnRlbnQgJiYgY29udGVudC5sb2NhbHMgPyBjb250ZW50LmxvY2FscyA6IHVuZGVmaW5lZDtcbiIsIlxuICAgICAgaW1wb3J0IEFQSSBmcm9tIFwiIS4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgaW1wb3J0IGRvbUFQSSBmcm9tIFwiIS4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlRG9tQVBJLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0Rm4gZnJvbSBcIiEuLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRCeVNlbGVjdG9yLmpzXCI7XG4gICAgICBpbXBvcnQgc2V0QXR0cmlidXRlcyBmcm9tIFwiIS4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydFN0eWxlRWxlbWVudCBmcm9tIFwiIS4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydFN0eWxlRWxlbWVudC5qc1wiO1xuICAgICAgaW1wb3J0IHN0eWxlVGFnVHJhbnNmb3JtRm4gZnJvbSBcIiEuLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZVRhZ1RyYW5zZm9ybS5qc1wiO1xuICAgICAgaW1wb3J0IGNvbnRlbnQsICogYXMgbmFtZWRFeHBvcnQgZnJvbSBcIiEhLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi9jb2xvci5jc3NcIjtcbiAgICAgIFxuICAgICAgXG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuc3R5bGVUYWdUcmFuc2Zvcm0gPSBzdHlsZVRhZ1RyYW5zZm9ybUZuO1xub3B0aW9ucy5zZXRBdHRyaWJ1dGVzID0gc2V0QXR0cmlidXRlcztcbm9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi9jb2xvci5jc3NcIjtcbiAgICAgICBleHBvcnQgZGVmYXVsdCBjb250ZW50ICYmIGNvbnRlbnQubG9jYWxzID8gY29udGVudC5sb2NhbHMgOiB1bmRlZmluZWQ7XG4iLCJcbiAgICAgIGltcG9ydCBBUEkgZnJvbSBcIiEuLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgIGltcG9ydCBkb21BUEkgZnJvbSBcIiEuLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZURvbUFQSS5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydEZuIGZyb20gXCIhLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0QnlTZWxlY3Rvci5qc1wiO1xuICAgICAgaW1wb3J0IHNldEF0dHJpYnV0ZXMgZnJvbSBcIiEuLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRTdHlsZUVsZW1lbnQgZnJvbSBcIiEuLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRTdHlsZUVsZW1lbnQuanNcIjtcbiAgICAgIGltcG9ydCBzdHlsZVRhZ1RyYW5zZm9ybUZuIGZyb20gXCIhLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanNcIjtcbiAgICAgIGltcG9ydCBjb250ZW50LCAqIGFzIG5hbWVkRXhwb3J0IGZyb20gXCIhIS4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vZm9udC5jc3NcIjtcbiAgICAgIFxuICAgICAgXG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuc3R5bGVUYWdUcmFuc2Zvcm0gPSBzdHlsZVRhZ1RyYW5zZm9ybUZuO1xub3B0aW9ucy5zZXRBdHRyaWJ1dGVzID0gc2V0QXR0cmlidXRlcztcbm9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi9mb250LmNzc1wiO1xuICAgICAgIGV4cG9ydCBkZWZhdWx0IGNvbnRlbnQgJiYgY29udGVudC5sb2NhbHMgPyBjb250ZW50LmxvY2FscyA6IHVuZGVmaW5lZDtcbiIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgc3R5bGVzSW5ET00gPSBbXTtcbmZ1bmN0aW9uIGdldEluZGV4QnlJZGVudGlmaWVyKGlkZW50aWZpZXIpIHtcbiAgdmFyIHJlc3VsdCA9IC0xO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHN0eWxlc0luRE9NLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKHN0eWxlc0luRE9NW2ldLmlkZW50aWZpZXIgPT09IGlkZW50aWZpZXIpIHtcbiAgICAgIHJlc3VsdCA9IGk7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cbmZ1bmN0aW9uIG1vZHVsZXNUb0RvbShsaXN0LCBvcHRpb25zKSB7XG4gIHZhciBpZENvdW50TWFwID0ge307XG4gIHZhciBpZGVudGlmaWVycyA9IFtdO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgaXRlbSA9IGxpc3RbaV07XG4gICAgdmFyIGlkID0gb3B0aW9ucy5iYXNlID8gaXRlbVswXSArIG9wdGlvbnMuYmFzZSA6IGl0ZW1bMF07XG4gICAgdmFyIGNvdW50ID0gaWRDb3VudE1hcFtpZF0gfHwgMDtcbiAgICB2YXIgaWRlbnRpZmllciA9IFwiXCIuY29uY2F0KGlkLCBcIiBcIikuY29uY2F0KGNvdW50KTtcbiAgICBpZENvdW50TWFwW2lkXSA9IGNvdW50ICsgMTtcbiAgICB2YXIgaW5kZXhCeUlkZW50aWZpZXIgPSBnZXRJbmRleEJ5SWRlbnRpZmllcihpZGVudGlmaWVyKTtcbiAgICB2YXIgb2JqID0ge1xuICAgICAgY3NzOiBpdGVtWzFdLFxuICAgICAgbWVkaWE6IGl0ZW1bMl0sXG4gICAgICBzb3VyY2VNYXA6IGl0ZW1bM10sXG4gICAgICBzdXBwb3J0czogaXRlbVs0XSxcbiAgICAgIGxheWVyOiBpdGVtWzVdXG4gICAgfTtcbiAgICBpZiAoaW5kZXhCeUlkZW50aWZpZXIgIT09IC0xKSB7XG4gICAgICBzdHlsZXNJbkRPTVtpbmRleEJ5SWRlbnRpZmllcl0ucmVmZXJlbmNlcysrO1xuICAgICAgc3R5bGVzSW5ET01baW5kZXhCeUlkZW50aWZpZXJdLnVwZGF0ZXIob2JqKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHVwZGF0ZXIgPSBhZGRFbGVtZW50U3R5bGUob2JqLCBvcHRpb25zKTtcbiAgICAgIG9wdGlvbnMuYnlJbmRleCA9IGk7XG4gICAgICBzdHlsZXNJbkRPTS5zcGxpY2UoaSwgMCwge1xuICAgICAgICBpZGVudGlmaWVyOiBpZGVudGlmaWVyLFxuICAgICAgICB1cGRhdGVyOiB1cGRhdGVyLFxuICAgICAgICByZWZlcmVuY2VzOiAxXG4gICAgICB9KTtcbiAgICB9XG4gICAgaWRlbnRpZmllcnMucHVzaChpZGVudGlmaWVyKTtcbiAgfVxuICByZXR1cm4gaWRlbnRpZmllcnM7XG59XG5mdW5jdGlvbiBhZGRFbGVtZW50U3R5bGUob2JqLCBvcHRpb25zKSB7XG4gIHZhciBhcGkgPSBvcHRpb25zLmRvbUFQSShvcHRpb25zKTtcbiAgYXBpLnVwZGF0ZShvYmopO1xuICB2YXIgdXBkYXRlciA9IGZ1bmN0aW9uIHVwZGF0ZXIobmV3T2JqKSB7XG4gICAgaWYgKG5ld09iaikge1xuICAgICAgaWYgKG5ld09iai5jc3MgPT09IG9iai5jc3MgJiYgbmV3T2JqLm1lZGlhID09PSBvYmoubWVkaWEgJiYgbmV3T2JqLnNvdXJjZU1hcCA9PT0gb2JqLnNvdXJjZU1hcCAmJiBuZXdPYmouc3VwcG9ydHMgPT09IG9iai5zdXBwb3J0cyAmJiBuZXdPYmoubGF5ZXIgPT09IG9iai5sYXllcikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBhcGkudXBkYXRlKG9iaiA9IG5ld09iaik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFwaS5yZW1vdmUoKTtcbiAgICB9XG4gIH07XG4gIHJldHVybiB1cGRhdGVyO1xufVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAobGlzdCwgb3B0aW9ucykge1xuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgbGlzdCA9IGxpc3QgfHwgW107XG4gIHZhciBsYXN0SWRlbnRpZmllcnMgPSBtb2R1bGVzVG9Eb20obGlzdCwgb3B0aW9ucyk7XG4gIHJldHVybiBmdW5jdGlvbiB1cGRhdGUobmV3TGlzdCkge1xuICAgIG5ld0xpc3QgPSBuZXdMaXN0IHx8IFtdO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGFzdElkZW50aWZpZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgaWRlbnRpZmllciA9IGxhc3RJZGVudGlmaWVyc1tpXTtcbiAgICAgIHZhciBpbmRleCA9IGdldEluZGV4QnlJZGVudGlmaWVyKGlkZW50aWZpZXIpO1xuICAgICAgc3R5bGVzSW5ET01baW5kZXhdLnJlZmVyZW5jZXMtLTtcbiAgICB9XG4gICAgdmFyIG5ld0xhc3RJZGVudGlmaWVycyA9IG1vZHVsZXNUb0RvbShuZXdMaXN0LCBvcHRpb25zKTtcbiAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgbGFzdElkZW50aWZpZXJzLmxlbmd0aDsgX2krKykge1xuICAgICAgdmFyIF9pZGVudGlmaWVyID0gbGFzdElkZW50aWZpZXJzW19pXTtcbiAgICAgIHZhciBfaW5kZXggPSBnZXRJbmRleEJ5SWRlbnRpZmllcihfaWRlbnRpZmllcik7XG4gICAgICBpZiAoc3R5bGVzSW5ET01bX2luZGV4XS5yZWZlcmVuY2VzID09PSAwKSB7XG4gICAgICAgIHN0eWxlc0luRE9NW19pbmRleF0udXBkYXRlcigpO1xuICAgICAgICBzdHlsZXNJbkRPTS5zcGxpY2UoX2luZGV4LCAxKTtcbiAgICAgIH1cbiAgICB9XG4gICAgbGFzdElkZW50aWZpZXJzID0gbmV3TGFzdElkZW50aWZpZXJzO1xuICB9O1xufTsiLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIG1lbW8gPSB7fTtcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5mdW5jdGlvbiBnZXRUYXJnZXQodGFyZ2V0KSB7XG4gIGlmICh0eXBlb2YgbWVtb1t0YXJnZXRdID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgdmFyIHN0eWxlVGFyZ2V0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih0YXJnZXQpO1xuXG4gICAgLy8gU3BlY2lhbCBjYXNlIHRvIHJldHVybiBoZWFkIG9mIGlmcmFtZSBpbnN0ZWFkIG9mIGlmcmFtZSBpdHNlbGZcbiAgICBpZiAod2luZG93LkhUTUxJRnJhbWVFbGVtZW50ICYmIHN0eWxlVGFyZ2V0IGluc3RhbmNlb2Ygd2luZG93LkhUTUxJRnJhbWVFbGVtZW50KSB7XG4gICAgICB0cnkge1xuICAgICAgICAvLyBUaGlzIHdpbGwgdGhyb3cgYW4gZXhjZXB0aW9uIGlmIGFjY2VzcyB0byBpZnJhbWUgaXMgYmxvY2tlZFxuICAgICAgICAvLyBkdWUgdG8gY3Jvc3Mtb3JpZ2luIHJlc3RyaWN0aW9uc1xuICAgICAgICBzdHlsZVRhcmdldCA9IHN0eWxlVGFyZ2V0LmNvbnRlbnREb2N1bWVudC5oZWFkO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dFxuICAgICAgICBzdHlsZVRhcmdldCA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuICAgIG1lbW9bdGFyZ2V0XSA9IHN0eWxlVGFyZ2V0O1xuICB9XG4gIHJldHVybiBtZW1vW3RhcmdldF07XG59XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuZnVuY3Rpb24gaW5zZXJ0QnlTZWxlY3RvcihpbnNlcnQsIHN0eWxlKSB7XG4gIHZhciB0YXJnZXQgPSBnZXRUYXJnZXQoaW5zZXJ0KTtcbiAgaWYgKCF0YXJnZXQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJDb3VsZG4ndCBmaW5kIGEgc3R5bGUgdGFyZ2V0LiBUaGlzIHByb2JhYmx5IG1lYW5zIHRoYXQgdGhlIHZhbHVlIGZvciB0aGUgJ2luc2VydCcgcGFyYW1ldGVyIGlzIGludmFsaWQuXCIpO1xuICB9XG4gIHRhcmdldC5hcHBlbmRDaGlsZChzdHlsZSk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGluc2VydEJ5U2VsZWN0b3I7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuZnVuY3Rpb24gaW5zZXJ0U3R5bGVFbGVtZW50KG9wdGlvbnMpIHtcbiAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIik7XG4gIG9wdGlvbnMuc2V0QXR0cmlidXRlcyhlbGVtZW50LCBvcHRpb25zLmF0dHJpYnV0ZXMpO1xuICBvcHRpb25zLmluc2VydChlbGVtZW50LCBvcHRpb25zLm9wdGlvbnMpO1xuICByZXR1cm4gZWxlbWVudDtcbn1cbm1vZHVsZS5leHBvcnRzID0gaW5zZXJ0U3R5bGVFbGVtZW50OyIsIlwidXNlIHN0cmljdFwiO1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cbmZ1bmN0aW9uIHNldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcyhzdHlsZUVsZW1lbnQpIHtcbiAgdmFyIG5vbmNlID0gdHlwZW9mIF9fd2VicGFja19ub25jZV9fICE9PSBcInVuZGVmaW5lZFwiID8gX193ZWJwYWNrX25vbmNlX18gOiBudWxsO1xuICBpZiAobm9uY2UpIHtcbiAgICBzdHlsZUVsZW1lbnQuc2V0QXR0cmlidXRlKFwibm9uY2VcIiwgbm9uY2UpO1xuICB9XG59XG5tb2R1bGUuZXhwb3J0cyA9IHNldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlczsiLCJcInVzZSBzdHJpY3RcIjtcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5mdW5jdGlvbiBhcHBseShzdHlsZUVsZW1lbnQsIG9wdGlvbnMsIG9iaikge1xuICB2YXIgY3NzID0gXCJcIjtcbiAgaWYgKG9iai5zdXBwb3J0cykge1xuICAgIGNzcyArPSBcIkBzdXBwb3J0cyAoXCIuY29uY2F0KG9iai5zdXBwb3J0cywgXCIpIHtcIik7XG4gIH1cbiAgaWYgKG9iai5tZWRpYSkge1xuICAgIGNzcyArPSBcIkBtZWRpYSBcIi5jb25jYXQob2JqLm1lZGlhLCBcIiB7XCIpO1xuICB9XG4gIHZhciBuZWVkTGF5ZXIgPSB0eXBlb2Ygb2JqLmxheWVyICE9PSBcInVuZGVmaW5lZFwiO1xuICBpZiAobmVlZExheWVyKSB7XG4gICAgY3NzICs9IFwiQGxheWVyXCIuY29uY2F0KG9iai5sYXllci5sZW5ndGggPiAwID8gXCIgXCIuY29uY2F0KG9iai5sYXllcikgOiBcIlwiLCBcIiB7XCIpO1xuICB9XG4gIGNzcyArPSBvYmouY3NzO1xuICBpZiAobmVlZExheWVyKSB7XG4gICAgY3NzICs9IFwifVwiO1xuICB9XG4gIGlmIChvYmoubWVkaWEpIHtcbiAgICBjc3MgKz0gXCJ9XCI7XG4gIH1cbiAgaWYgKG9iai5zdXBwb3J0cykge1xuICAgIGNzcyArPSBcIn1cIjtcbiAgfVxuICB2YXIgc291cmNlTWFwID0gb2JqLnNvdXJjZU1hcDtcbiAgaWYgKHNvdXJjZU1hcCAmJiB0eXBlb2YgYnRvYSAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgIGNzcyArPSBcIlxcbi8qIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsXCIuY29uY2F0KGJ0b2EodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KHNvdXJjZU1hcCkpKSksIFwiICovXCIpO1xuICB9XG5cbiAgLy8gRm9yIG9sZCBJRVxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgICovXG4gIG9wdGlvbnMuc3R5bGVUYWdUcmFuc2Zvcm0oY3NzLCBzdHlsZUVsZW1lbnQsIG9wdGlvbnMub3B0aW9ucyk7XG59XG5mdW5jdGlvbiByZW1vdmVTdHlsZUVsZW1lbnQoc3R5bGVFbGVtZW50KSB7XG4gIC8vIGlzdGFuYnVsIGlnbm9yZSBpZlxuICBpZiAoc3R5bGVFbGVtZW50LnBhcmVudE5vZGUgPT09IG51bGwpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgc3R5bGVFbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoc3R5bGVFbGVtZW50KTtcbn1cblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5mdW5jdGlvbiBkb21BUEkob3B0aW9ucykge1xuICBpZiAodHlwZW9mIGRvY3VtZW50ID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHVwZGF0ZTogZnVuY3Rpb24gdXBkYXRlKCkge30sXG4gICAgICByZW1vdmU6IGZ1bmN0aW9uIHJlbW92ZSgpIHt9XG4gICAgfTtcbiAgfVxuICB2YXIgc3R5bGVFbGVtZW50ID0gb3B0aW9ucy5pbnNlcnRTdHlsZUVsZW1lbnQob3B0aW9ucyk7XG4gIHJldHVybiB7XG4gICAgdXBkYXRlOiBmdW5jdGlvbiB1cGRhdGUob2JqKSB7XG4gICAgICBhcHBseShzdHlsZUVsZW1lbnQsIG9wdGlvbnMsIG9iaik7XG4gICAgfSxcbiAgICByZW1vdmU6IGZ1bmN0aW9uIHJlbW92ZSgpIHtcbiAgICAgIHJlbW92ZVN0eWxlRWxlbWVudChzdHlsZUVsZW1lbnQpO1xuICAgIH1cbiAgfTtcbn1cbm1vZHVsZS5leHBvcnRzID0gZG9tQVBJOyIsIlwidXNlIHN0cmljdFwiO1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cbmZ1bmN0aW9uIHN0eWxlVGFnVHJhbnNmb3JtKGNzcywgc3R5bGVFbGVtZW50KSB7XG4gIGlmIChzdHlsZUVsZW1lbnQuc3R5bGVTaGVldCkge1xuICAgIHN0eWxlRWxlbWVudC5zdHlsZVNoZWV0LmNzc1RleHQgPSBjc3M7XG4gIH0gZWxzZSB7XG4gICAgd2hpbGUgKHN0eWxlRWxlbWVudC5maXJzdENoaWxkKSB7XG4gICAgICBzdHlsZUVsZW1lbnQucmVtb3ZlQ2hpbGQoc3R5bGVFbGVtZW50LmZpcnN0Q2hpbGQpO1xuICAgIH1cbiAgICBzdHlsZUVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY3NzKSk7XG4gIH1cbn1cbm1vZHVsZS5leHBvcnRzID0gc3R5bGVUYWdUcmFuc2Zvcm07IiwiLy8gVGhlIG1vZHVsZSBjYWNoZVxudmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9IHt9O1xuXG4vLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcblx0dmFyIGNhY2hlZE1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF07XG5cdGlmIChjYWNoZWRNb2R1bGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiBjYWNoZWRNb2R1bGUuZXhwb3J0cztcblx0fVxuXHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuXHR2YXIgbW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXSA9IHtcblx0XHRpZDogbW9kdWxlSWQsXG5cdFx0Ly8gbm8gbW9kdWxlLmxvYWRlZCBuZWVkZWRcblx0XHRleHBvcnRzOiB7fVxuXHR9O1xuXG5cdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuXHRfX3dlYnBhY2tfbW9kdWxlc19fW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuXHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuXHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG59XG5cbiIsIi8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSAobW9kdWxlKSA9PiB7XG5cdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuXHRcdCgpID0+IChtb2R1bGVbJ2RlZmF1bHQnXSkgOlxuXHRcdCgpID0+IChtb2R1bGUpO1xuXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCB7IGE6IGdldHRlciB9KTtcblx0cmV0dXJuIGdldHRlcjtcbn07IiwiLy8gZGVmaW5lIGdldHRlciBmdW5jdGlvbnMgZm9yIGhhcm1vbnkgZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5kID0gKGV4cG9ydHMsIGRlZmluaXRpb24pID0+IHtcblx0Zm9yKHZhciBrZXkgaW4gZGVmaW5pdGlvbikge1xuXHRcdGlmKF9fd2VicGFja19yZXF1aXJlX18ubyhkZWZpbml0aW9uLCBrZXkpICYmICFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywga2V5KSkge1xuXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGRlZmluaXRpb25ba2V5XSB9KTtcblx0XHR9XG5cdH1cbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5vID0gKG9iaiwgcHJvcCkgPT4gKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApKSIsIi8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uciA9IChleHBvcnRzKSA9PiB7XG5cdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuXHR9XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18ubmMgPSB1bmRlZmluZWQ7IiwiZXhwb3J0IHsgQXZhdGFyIH0gZnJvbSBcIi4vY29tcG9uZW50cy9hdmF0YXJcIjtcbiJdLCJuYW1lcyI6WyJyZWFjdF8xIiwicmVxdWlyZSIsImJhZGdlXzEiLCJBdmF0YXIiLCJwcm9wcyIsInNpemUiLCJzcmMiLCJhbHQiLCJiYWRnZU9wdGlvbiIsIl9hIiwidXNlU3RhdGUiLCJpc0ltYWdlRG93bmxvYWQiLCJzZXRJc0ltYWdlRG93bmxvYWQiLCJqc3hfcnVudGltZV8xIiwianN4cyIsImNsYXNzTmFtZSIsImNvbmNhdCIsImNoaWxkcmVuIiwianN4Iiwib25Mb2FkIiwiQmFzZUJhZGdlIiwiYXNDaGlsZCIsInN0eWxlIiwicG9zaXRpb24iLCJyaWdodCIsImJvdHRvbSIsImV4cG9ydHMiLCJhdmF0YXJfMSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZW51bWVyYWJsZSIsImdldCIsIl9faW1wb3J0RGVmYXVsdCIsImNvbXBvc2VyXzEiLCJib3JkZXJDb2xvciIsIl9iIiwidGV4dENvbG9yIiwiYmFja2dyb3VuZENvbG9yIiwiX2MiLCJDb21wIiwiY29tcG9zZWRDbGFzc05hbWUiLCJPcHRpb25CYWRnZSIsIm9wdGlvbiIsIl9fYXNzaWduIiwiSWNvblRleHRCYWRnZSIsImljb24iLCJ0ZXh0IiwiSWNvblRleHRPcHRpb25CYWRnZSIsImNvbXBvc2VSZWZzIiwicmVmcyIsIl9pIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwibm9kZSIsImZvckVhY2giLCJyZWYiLCJjdXJyZW50IiwiQ29tcG9zZXIiLCJmb3J3YXJkUmVmIiwiY29tcG9zZXJQcm9wcyIsIl9fcmVzdCIsImNoaWxkQXJyYXkiLCJDaGlsZHJlbiIsInRvQXJyYXkiLCJFcnJvciIsImlzVmFsaWRDaGlsZCIsImlzVmFsaWRFbGVtZW50IiwiY2hpbGQiLCJjaGlsZFJlZiIsImdldEVsZW1lbnRSZWYiLCJtZXJnZWRQcm9wcyIsIm1lcmdlUHJvcHMiLCJjbG9uZUVsZW1lbnQiLCJkaXNwbGF5TmFtZSIsImNoaWxkUHJvcHMiLCJvdmVycmlkZVByb3BzIiwicHJvcE5hbWUiLCJjb21wb3NlclByb3BWYWx1ZSIsImNoaWxkUHJvcFZhbHVlIiwiaXNIYW5kbGVyIiwidGVzdCIsImFyZ3MiLCJhcHBseSIsImZpbHRlciIsIkJvb2xlYW4iLCJqb2luIiwiZWxlbWVudCIsImdldHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsIm1heVdhcm4iLCJpc1JlYWN0V2FybmluZyJdLCJzb3VyY2VSb290IjoiIn0=