@kontur.candy/tools 2.130.2 → 2.131.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +8 -0
- package/README.md +6 -6
- package/distr/Common/CandyApiClient/CandyApiClient.js +52 -2
- package/distr/Common/CandyApiClient/FakeCandyApiClient.js +17 -1
- package/distr/Common/CandyApiClient/Types/DraftActions/FufSizeTooLargeError.js +11 -0
- package/distr/Common/HttpClient/HttpClient.js +14 -2
- package/distr/Common/IterableUtils.js +6 -1
- package/distr/Common/ModelPath/Map/Map2.js +5 -45
- package/distr/Common/ModelPath/ModelPath.js +26 -1
- package/distr/Common/ModelPath/ModelPathHelper.js +13 -0
- package/distr/Common/ModelPath/PathSplitHelper.js +26 -0
- package/distr/Tools/src/BuildTasks/ReadFormSource.js +2 -1
- package/distr/Tools/src/CLICommands/BuildForms/BuildFormsOptions.js +7 -7
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/RunFormCompilationViaWebpackDevServer.js +3 -5
- package/distr/Tools/src/Commons/Options/CommandBasedOptionsParser.js +1 -1
- package/distr/Tools/src/FormWebpackConfiguration/CacheAssetsPlugin.js +56 -8
- package/distr/Tools/src/FormWebpackConfiguration/createFormWebpackConfiguration.js +5 -4
- package/distr/Tools/src/LocalServerFrontEndDist/enhancedClient.js +1 -1
- package/distr/Tools/src/LocalServerFrontEndDist/index.js +1 -1
- package/distr/Tools/src/LocalServerFrontEndDist/index.js.map +1 -1
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.js +957 -2596
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.js.map +1 -1
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.min.js +53 -38
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.min.js.map +1 -1
- package/package.json +9 -9
|
@@ -1,2922 +1,1283 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
/******/
|
|
4
3
|
(function () {
|
|
5
|
-
// webpackBootstrap
|
|
6
|
-
|
|
7
|
-
/******/
|
|
8
4
|
"use strict";
|
|
9
|
-
/******/
|
|
10
5
|
|
|
11
6
|
var __webpack_modules__ = {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
/*!************************************************************************!*\
|
|
15
|
-
!*** ./Common/CandyApiClient/ClientDraftInfo/GetClientDraftInfoUrl.ts ***!
|
|
16
|
-
\************************************************************************/
|
|
17
|
-
|
|
18
|
-
/***/
|
|
19
|
-
function (module, __webpack_exports__, __webpack_require__) {
|
|
20
|
-
__webpack_require__.r(__webpack_exports__);
|
|
21
|
-
/* harmony export */
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
__webpack_require__.d(__webpack_exports__, {
|
|
25
|
-
/* harmony export */
|
|
26
|
-
"getClientDraftInfoUrl": function () {
|
|
27
|
-
return (
|
|
28
|
-
/* binding */
|
|
29
|
-
getClientDraftInfoUrl
|
|
30
|
-
);
|
|
31
|
-
}
|
|
32
|
-
/* harmony export */
|
|
33
|
-
|
|
34
|
-
});
|
|
35
|
-
/* module decorator */
|
|
7
|
+
730: function (e, r, t) {
|
|
8
|
+
var o, n, i;
|
|
36
9
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
(function () {
|
|
41
|
-
var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;
|
|
42
|
-
enterModule && enterModule(module);
|
|
43
|
-
})();
|
|
44
|
-
|
|
45
|
-
var __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal["default"].signature : function (a) {
|
|
46
|
-
return a;
|
|
47
|
-
};
|
|
48
|
-
|
|
49
|
-
function getClientDraftInfoUrl(draftId) {
|
|
50
|
-
// NOTE Эта функция объявлена отдельно, ибо она входит в состав client.js и
|
|
51
|
-
// не должно происходить утежеления client.js-а
|
|
52
|
-
return "v1/ns/".concat(draftId.ns, "/drafts/").concat(draftId.draftId, "/client-draft-info");
|
|
10
|
+
function a(e) {
|
|
11
|
+
return "v1/ns/".concat(e.ns, "/drafts/").concat(e.draftId, "/client-draft-info");
|
|
53
12
|
}
|
|
54
13
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;
|
|
59
|
-
|
|
60
|
-
if (!reactHotLoader) {
|
|
61
|
-
return;
|
|
14
|
+
t.d(r, {
|
|
15
|
+
m: function () {
|
|
16
|
+
return a;
|
|
62
17
|
}
|
|
63
|
-
|
|
64
|
-
reactHotLoader.register(getClientDraftInfoUrl, "getClientDraftInfoUrl", "C:\\buildAgent\\work\\8df8f1edd755969c\\Common\\CandyApiClient\\ClientDraftInfo\\GetClientDraftInfoUrl.ts");
|
|
65
|
-
})();
|
|
66
|
-
|
|
67
|
-
;
|
|
68
|
-
|
|
69
|
-
(function () {
|
|
70
|
-
var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;
|
|
71
|
-
leaveModule && leaveModule(module);
|
|
72
|
-
})();
|
|
73
|
-
/***/
|
|
74
|
-
|
|
18
|
+
}), e = t.hmd(e), (o = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.enterModule : void 0) && o(e), "undefined" != typeof reactHotLoaderGlobal && reactHotLoaderGlobal.default.signature, (n = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.default : void 0) && n.register(a, "getClientDraftInfoUrl", "C:\\BuildAgent\\work\\forms-root\\Common\\CandyApiClient\\ClientDraftInfo\\GetClientDraftInfoUrl.ts"), (i = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.leaveModule : void 0) && i(e);
|
|
75
19
|
},
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
/***/
|
|
84
|
-
function (module, __webpack_exports__, __webpack_require__) {
|
|
85
|
-
__webpack_require__.r(__webpack_exports__);
|
|
86
|
-
/* harmony export */
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
__webpack_require__.d(__webpack_exports__, {
|
|
90
|
-
/* harmony export */
|
|
91
|
-
"ApplicationError": function () {
|
|
92
|
-
return (
|
|
93
|
-
/* binding */
|
|
94
|
-
ApplicationError
|
|
95
|
-
);
|
|
96
|
-
},
|
|
97
|
-
|
|
98
|
-
/* harmony export */
|
|
99
|
-
"NotImplementedError": function () {
|
|
100
|
-
return (
|
|
101
|
-
/* binding */
|
|
102
|
-
NotImplementedError
|
|
103
|
-
);
|
|
104
|
-
},
|
|
105
|
-
|
|
106
|
-
/* harmony export */
|
|
107
|
-
"NotSupportedError": function () {
|
|
108
|
-
return (
|
|
109
|
-
/* binding */
|
|
110
|
-
NotSupportedError
|
|
111
|
-
);
|
|
112
|
-
},
|
|
113
|
-
|
|
114
|
-
/* harmony export */
|
|
115
|
-
"InvalidProgramStateError": function () {
|
|
116
|
-
return (
|
|
117
|
-
/* binding */
|
|
118
|
-
InvalidProgramStateError
|
|
119
|
-
);
|
|
120
|
-
},
|
|
121
|
-
|
|
122
|
-
/* harmony export */
|
|
123
|
-
"InvalidArgumentError": function () {
|
|
124
|
-
return (
|
|
125
|
-
/* binding */
|
|
126
|
-
InvalidArgumentError
|
|
127
|
-
);
|
|
128
|
-
},
|
|
129
|
-
|
|
130
|
-
/* harmony export */
|
|
131
|
-
"TypingError": function () {
|
|
132
|
-
return (
|
|
133
|
-
/* binding */
|
|
134
|
-
TypingError
|
|
135
|
-
);
|
|
136
|
-
}
|
|
137
|
-
/* harmony export */
|
|
138
|
-
|
|
139
|
-
});
|
|
140
|
-
/* module decorator */
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
module = __webpack_require__.hmd(module);
|
|
144
|
-
|
|
145
|
-
function _typeof(obj) {
|
|
146
|
-
"@babel/helpers - typeof";
|
|
147
|
-
|
|
148
|
-
if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
|
|
149
|
-
_typeof = function _typeof(obj) {
|
|
150
|
-
return typeof obj;
|
|
151
|
-
};
|
|
152
|
-
} else {
|
|
153
|
-
_typeof = function _typeof(obj) {
|
|
154
|
-
return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
|
|
155
|
-
};
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
return _typeof(obj);
|
|
20
|
+
556: function (module, __webpack_exports__, __webpack_require__) {
|
|
21
|
+
function _typeof(e) {
|
|
22
|
+
return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (e) {
|
|
23
|
+
return typeof e;
|
|
24
|
+
} : function (e) {
|
|
25
|
+
return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e;
|
|
26
|
+
}, _typeof(e);
|
|
159
27
|
}
|
|
160
28
|
|
|
161
|
-
|
|
162
|
-
var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;
|
|
163
|
-
enterModule && enterModule(module);
|
|
164
|
-
})();
|
|
29
|
+
var enterModule;
|
|
165
30
|
|
|
166
|
-
function _classCallCheck(
|
|
167
|
-
if (!(
|
|
168
|
-
throw new TypeError("Cannot call a class as a function");
|
|
169
|
-
}
|
|
31
|
+
function _classCallCheck(e, r) {
|
|
32
|
+
if (!(e instanceof r)) throw new TypeError("Cannot call a class as a function");
|
|
170
33
|
}
|
|
171
34
|
|
|
172
|
-
function _defineProperties(
|
|
173
|
-
for (var
|
|
174
|
-
var
|
|
175
|
-
|
|
176
|
-
descriptor.configurable = true;
|
|
177
|
-
if ("value" in descriptor) descriptor.writable = true;
|
|
178
|
-
Object.defineProperty(target, descriptor.key, descriptor);
|
|
35
|
+
function _defineProperties(e, r) {
|
|
36
|
+
for (var t = 0; t < r.length; t++) {
|
|
37
|
+
var o = r[t];
|
|
38
|
+
o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, o.key, o);
|
|
179
39
|
}
|
|
180
40
|
}
|
|
181
41
|
|
|
182
|
-
function _createClass(
|
|
183
|
-
|
|
184
|
-
if (staticProps) _defineProperties(Constructor, staticProps);
|
|
185
|
-
return Constructor;
|
|
42
|
+
function _createClass(e, r, t) {
|
|
43
|
+
return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), e;
|
|
186
44
|
}
|
|
187
45
|
|
|
188
|
-
function _inherits(
|
|
189
|
-
if (typeof
|
|
190
|
-
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
subClass.prototype = Object.create(superClass && superClass.prototype, {
|
|
46
|
+
function _inherits(e, r) {
|
|
47
|
+
if ("function" != typeof r && null !== r) throw new TypeError("Super expression must either be null or a function");
|
|
48
|
+
e.prototype = Object.create(r && r.prototype, {
|
|
194
49
|
constructor: {
|
|
195
|
-
value:
|
|
196
|
-
writable:
|
|
197
|
-
configurable:
|
|
50
|
+
value: e,
|
|
51
|
+
writable: !0,
|
|
52
|
+
configurable: !0
|
|
198
53
|
}
|
|
199
|
-
});
|
|
200
|
-
if (superClass) _setPrototypeOf(subClass, superClass);
|
|
54
|
+
}), r && _setPrototypeOf(e, r);
|
|
201
55
|
}
|
|
202
56
|
|
|
203
|
-
function _createSuper(
|
|
204
|
-
var
|
|
57
|
+
function _createSuper(e) {
|
|
58
|
+
var r = _isNativeReflectConstruct();
|
|
205
59
|
|
|
206
|
-
return function
|
|
207
|
-
var
|
|
208
|
-
|
|
60
|
+
return function () {
|
|
61
|
+
var t,
|
|
62
|
+
o = _getPrototypeOf(e);
|
|
209
63
|
|
|
210
|
-
if (
|
|
211
|
-
var
|
|
64
|
+
if (r) {
|
|
65
|
+
var n = _getPrototypeOf(this).constructor;
|
|
212
66
|
|
|
213
|
-
|
|
214
|
-
} else
|
|
215
|
-
result = Super.apply(this, arguments);
|
|
216
|
-
}
|
|
67
|
+
t = Reflect.construct(o, arguments, n);
|
|
68
|
+
} else t = o.apply(this, arguments);
|
|
217
69
|
|
|
218
|
-
return _possibleConstructorReturn(this,
|
|
70
|
+
return _possibleConstructorReturn(this, t);
|
|
219
71
|
};
|
|
220
72
|
}
|
|
221
73
|
|
|
222
|
-
function _possibleConstructorReturn(
|
|
223
|
-
if (
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
throw new TypeError("Derived constructors may only return object or undefined");
|
|
227
|
-
}
|
|
228
|
-
|
|
229
|
-
return _assertThisInitialized(self);
|
|
74
|
+
function _possibleConstructorReturn(e, r) {
|
|
75
|
+
if (r && ("object" === _typeof(r) || "function" == typeof r)) return r;
|
|
76
|
+
if (void 0 !== r) throw new TypeError("Derived constructors may only return object or undefined");
|
|
77
|
+
return _assertThisInitialized(e);
|
|
230
78
|
}
|
|
231
79
|
|
|
232
|
-
function _assertThisInitialized(
|
|
233
|
-
if (
|
|
234
|
-
|
|
235
|
-
}
|
|
236
|
-
|
|
237
|
-
return self;
|
|
80
|
+
function _assertThisInitialized(e) {
|
|
81
|
+
if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
|
|
82
|
+
return e;
|
|
238
83
|
}
|
|
239
84
|
|
|
240
|
-
function _wrapNativeSuper(
|
|
241
|
-
var
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
if (
|
|
245
|
-
|
|
246
|
-
if (typeof Class !== "function") {
|
|
247
|
-
throw new TypeError("Super expression must either be null or a function");
|
|
248
|
-
}
|
|
249
|
-
|
|
250
|
-
if (typeof _cache !== "undefined") {
|
|
251
|
-
if (_cache.has(Class)) return _cache.get(Class);
|
|
85
|
+
function _wrapNativeSuper(e) {
|
|
86
|
+
var r = "function" == typeof Map ? new Map() : void 0;
|
|
87
|
+
return _wrapNativeSuper = function (e) {
|
|
88
|
+
if (null === e || !_isNativeFunction(e)) return e;
|
|
89
|
+
if ("function" != typeof e) throw new TypeError("Super expression must either be null or a function");
|
|
252
90
|
|
|
253
|
-
|
|
91
|
+
if (void 0 !== r) {
|
|
92
|
+
if (r.has(e)) return r.get(e);
|
|
93
|
+
r.set(e, t);
|
|
254
94
|
}
|
|
255
95
|
|
|
256
|
-
function
|
|
257
|
-
return _construct(
|
|
96
|
+
function t() {
|
|
97
|
+
return _construct(e, arguments, _getPrototypeOf(this).constructor);
|
|
258
98
|
}
|
|
259
99
|
|
|
260
|
-
|
|
100
|
+
return t.prototype = Object.create(e.prototype, {
|
|
261
101
|
constructor: {
|
|
262
|
-
value:
|
|
263
|
-
enumerable:
|
|
264
|
-
writable:
|
|
265
|
-
configurable:
|
|
102
|
+
value: t,
|
|
103
|
+
enumerable: !1,
|
|
104
|
+
writable: !0,
|
|
105
|
+
configurable: !0
|
|
266
106
|
}
|
|
267
|
-
});
|
|
268
|
-
|
|
269
|
-
};
|
|
270
|
-
|
|
271
|
-
return _wrapNativeSuper(Class);
|
|
107
|
+
}), _setPrototypeOf(t, e);
|
|
108
|
+
}, _wrapNativeSuper(e);
|
|
272
109
|
}
|
|
273
110
|
|
|
274
|
-
function _construct(
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
var Constructor = Function.bind.apply(Parent, a);
|
|
282
|
-
var instance = new Constructor();
|
|
283
|
-
if (Class) _setPrototypeOf(instance, Class.prototype);
|
|
284
|
-
return instance;
|
|
285
|
-
};
|
|
286
|
-
}
|
|
287
|
-
|
|
288
|
-
return _construct.apply(null, arguments);
|
|
111
|
+
function _construct(e, r, t) {
|
|
112
|
+
return _construct = _isNativeReflectConstruct() ? Reflect.construct : function (e, r, t) {
|
|
113
|
+
var o = [null];
|
|
114
|
+
o.push.apply(o, r);
|
|
115
|
+
var n = new (Function.bind.apply(e, o))();
|
|
116
|
+
return t && _setPrototypeOf(n, t.prototype), n;
|
|
117
|
+
}, _construct.apply(null, arguments);
|
|
289
118
|
}
|
|
290
119
|
|
|
291
120
|
function _isNativeReflectConstruct() {
|
|
292
|
-
if (typeof Reflect
|
|
293
|
-
if (Reflect.construct.sham) return
|
|
294
|
-
if (typeof Proxy
|
|
121
|
+
if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
|
|
122
|
+
if (Reflect.construct.sham) return !1;
|
|
123
|
+
if ("function" == typeof Proxy) return !0;
|
|
295
124
|
|
|
296
125
|
try {
|
|
297
|
-
Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));
|
|
298
|
-
return true;
|
|
126
|
+
return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})), !0;
|
|
299
127
|
} catch (e) {
|
|
300
|
-
return
|
|
128
|
+
return !1;
|
|
301
129
|
}
|
|
302
130
|
}
|
|
303
131
|
|
|
304
|
-
function _isNativeFunction(
|
|
305
|
-
return Function.toString.call(
|
|
132
|
+
function _isNativeFunction(e) {
|
|
133
|
+
return -1 !== Function.toString.call(e).indexOf("[native code]");
|
|
306
134
|
}
|
|
307
135
|
|
|
308
|
-
function _setPrototypeOf(
|
|
309
|
-
_setPrototypeOf = Object.setPrototypeOf || function
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
};
|
|
313
|
-
|
|
314
|
-
return _setPrototypeOf(o, p);
|
|
136
|
+
function _setPrototypeOf(e, r) {
|
|
137
|
+
return _setPrototypeOf = Object.setPrototypeOf || function (e, r) {
|
|
138
|
+
return e.__proto__ = r, e;
|
|
139
|
+
}, _setPrototypeOf(e, r);
|
|
315
140
|
}
|
|
316
141
|
|
|
317
|
-
function _getPrototypeOf(
|
|
318
|
-
_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function
|
|
319
|
-
return
|
|
320
|
-
};
|
|
321
|
-
return _getPrototypeOf(o);
|
|
142
|
+
function _getPrototypeOf(e) {
|
|
143
|
+
return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) {
|
|
144
|
+
return e.__proto__ || Object.getPrototypeOf(e);
|
|
145
|
+
}, _getPrototypeOf(e);
|
|
322
146
|
}
|
|
323
147
|
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
148
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
149
|
+
nj: function () {
|
|
150
|
+
return NotImplementedError;
|
|
151
|
+
}
|
|
152
|
+
}), module = __webpack_require__.hmd(module), enterModule = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.enterModule : void 0, enterModule && enterModule(module);
|
|
327
153
|
|
|
328
|
-
var
|
|
154
|
+
var __signature__ = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.default.signature : function (e) {
|
|
155
|
+
return e;
|
|
156
|
+
},
|
|
157
|
+
ApplicationError = function (_Error) {
|
|
329
158
|
_inherits(ApplicationError, _Error);
|
|
330
159
|
|
|
331
160
|
var _super = _createSuper(ApplicationError);
|
|
332
161
|
|
|
333
|
-
function ApplicationError(
|
|
334
|
-
var
|
|
335
|
-
|
|
336
|
-
_classCallCheck(this, ApplicationError);
|
|
337
|
-
|
|
338
|
-
_this = _super.call(this, message);
|
|
339
|
-
_this.name = _this.constructor.name;
|
|
340
|
-
return _this;
|
|
162
|
+
function ApplicationError(e) {
|
|
163
|
+
var r;
|
|
164
|
+
return _classCallCheck(this, ApplicationError), (r = _super.call(this, e)).name = r.constructor.name, r;
|
|
341
165
|
}
|
|
342
166
|
|
|
343
|
-
_createClass(ApplicationError, [{
|
|
167
|
+
return _createClass(ApplicationError, [{
|
|
344
168
|
key: "__reactstandin__regenerateByEval",
|
|
345
|
-
value:
|
|
346
|
-
function __reactstandin__regenerateByEval(key, code) {
|
|
347
|
-
// @ts-ignore
|
|
169
|
+
value: function __reactstandin__regenerateByEval(key, code) {
|
|
348
170
|
this[key] = eval(code);
|
|
349
171
|
}
|
|
350
|
-
}]);
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
}( /*#__PURE__*/_wrapNativeSuper(Error));
|
|
354
|
-
|
|
355
|
-
var NotImplementedError = /*#__PURE__*/function (_ApplicationError) {
|
|
172
|
+
}]), ApplicationError;
|
|
173
|
+
}(_wrapNativeSuper(Error)),
|
|
174
|
+
NotImplementedError = function (_ApplicationError) {
|
|
356
175
|
_inherits(NotImplementedError, _ApplicationError);
|
|
357
176
|
|
|
358
177
|
var _super2 = _createSuper(NotImplementedError);
|
|
359
178
|
|
|
360
179
|
function NotImplementedError() {
|
|
361
|
-
_classCallCheck(this, NotImplementedError);
|
|
362
|
-
|
|
363
|
-
return _super2.call(this, "Operation not implemented");
|
|
180
|
+
return _classCallCheck(this, NotImplementedError), _super2.call(this, "Operation not implemented");
|
|
364
181
|
}
|
|
365
182
|
|
|
366
|
-
_createClass(NotImplementedError, [{
|
|
183
|
+
return _createClass(NotImplementedError, [{
|
|
367
184
|
key: "__reactstandin__regenerateByEval",
|
|
368
|
-
value:
|
|
369
|
-
function __reactstandin__regenerateByEval(key, code) {
|
|
370
|
-
// @ts-ignore
|
|
185
|
+
value: function __reactstandin__regenerateByEval(key, code) {
|
|
371
186
|
this[key] = eval(code);
|
|
372
187
|
}
|
|
373
|
-
}]);
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
}(ApplicationError);
|
|
377
|
-
|
|
378
|
-
var NotSupportedError = /*#__PURE__*/function (_ApplicationError2) {
|
|
188
|
+
}]), NotImplementedError;
|
|
189
|
+
}(ApplicationError),
|
|
190
|
+
NotSupportedError = function (_ApplicationError2) {
|
|
379
191
|
_inherits(NotSupportedError, _ApplicationError2);
|
|
380
192
|
|
|
381
193
|
var _super3 = _createSuper(NotSupportedError);
|
|
382
194
|
|
|
383
|
-
function NotSupportedError(
|
|
384
|
-
_classCallCheck(this, NotSupportedError);
|
|
385
|
-
|
|
386
|
-
return _super3.call(this, message !== null && message !== void 0 ? message : "Operation not supported");
|
|
195
|
+
function NotSupportedError(e) {
|
|
196
|
+
return _classCallCheck(this, NotSupportedError), _super3.call(this, null != e ? e : "Operation not supported");
|
|
387
197
|
}
|
|
388
198
|
|
|
389
|
-
_createClass(NotSupportedError, [{
|
|
199
|
+
return _createClass(NotSupportedError, [{
|
|
390
200
|
key: "__reactstandin__regenerateByEval",
|
|
391
|
-
value:
|
|
392
|
-
function __reactstandin__regenerateByEval(key, code) {
|
|
393
|
-
// @ts-ignore
|
|
201
|
+
value: function __reactstandin__regenerateByEval(key, code) {
|
|
394
202
|
this[key] = eval(code);
|
|
395
203
|
}
|
|
396
|
-
}]);
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
}(ApplicationError);
|
|
400
|
-
|
|
401
|
-
var InvalidProgramStateError = /*#__PURE__*/function (_ApplicationError3) {
|
|
204
|
+
}]), NotSupportedError;
|
|
205
|
+
}(ApplicationError),
|
|
206
|
+
InvalidProgramStateError = function (_ApplicationError3) {
|
|
402
207
|
_inherits(InvalidProgramStateError, _ApplicationError3);
|
|
403
208
|
|
|
404
209
|
var _super4 = _createSuper(InvalidProgramStateError);
|
|
405
210
|
|
|
406
|
-
function InvalidProgramStateError(
|
|
407
|
-
_classCallCheck(this, InvalidProgramStateError);
|
|
408
|
-
|
|
409
|
-
return _super4.call(this, "Invalid program state" + (message != undefined ? ": " + message : ""));
|
|
211
|
+
function InvalidProgramStateError(e) {
|
|
212
|
+
return _classCallCheck(this, InvalidProgramStateError), _super4.call(this, "Invalid program state" + (null != e ? ": " + e : ""));
|
|
410
213
|
}
|
|
411
214
|
|
|
412
|
-
_createClass(InvalidProgramStateError, [{
|
|
215
|
+
return _createClass(InvalidProgramStateError, [{
|
|
413
216
|
key: "__reactstandin__regenerateByEval",
|
|
414
|
-
value:
|
|
415
|
-
function __reactstandin__regenerateByEval(key, code) {
|
|
416
|
-
// @ts-ignore
|
|
217
|
+
value: function __reactstandin__regenerateByEval(key, code) {
|
|
417
218
|
this[key] = eval(code);
|
|
418
219
|
}
|
|
419
|
-
}]);
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
}(ApplicationError);
|
|
423
|
-
|
|
424
|
-
var InvalidArgumentError = /*#__PURE__*/function (_ApplicationError4) {
|
|
220
|
+
}]), InvalidProgramStateError;
|
|
221
|
+
}(ApplicationError),
|
|
222
|
+
InvalidArgumentError = function (_ApplicationError4) {
|
|
425
223
|
_inherits(InvalidArgumentError, _ApplicationError4);
|
|
426
224
|
|
|
427
225
|
var _super5 = _createSuper(InvalidArgumentError);
|
|
428
226
|
|
|
429
|
-
function InvalidArgumentError(
|
|
430
|
-
_classCallCheck(this, InvalidArgumentError);
|
|
431
|
-
|
|
432
|
-
return _super5.call(this, message != undefined ? "".concat(message, " (argument: ").concat(argumentName, ")") : "Invalid argument value: ".concat(argumentName));
|
|
227
|
+
function InvalidArgumentError(e, r) {
|
|
228
|
+
return _classCallCheck(this, InvalidArgumentError), _super5.call(this, null != r ? "".concat(r, " (argument: ").concat(e, ")") : "Invalid argument value: ".concat(e));
|
|
433
229
|
}
|
|
434
230
|
|
|
435
|
-
_createClass(InvalidArgumentError, [{
|
|
231
|
+
return _createClass(InvalidArgumentError, [{
|
|
436
232
|
key: "__reactstandin__regenerateByEval",
|
|
437
|
-
value:
|
|
438
|
-
function __reactstandin__regenerateByEval(key, code) {
|
|
439
|
-
// @ts-ignore
|
|
233
|
+
value: function __reactstandin__regenerateByEval(key, code) {
|
|
440
234
|
this[key] = eval(code);
|
|
441
235
|
}
|
|
442
|
-
}]);
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
}(ApplicationError);
|
|
446
|
-
|
|
447
|
-
var TypingError = /*#__PURE__*/function (_ApplicationError5) {
|
|
236
|
+
}]), InvalidArgumentError;
|
|
237
|
+
}(ApplicationError),
|
|
238
|
+
TypingError = function (_ApplicationError5) {
|
|
448
239
|
_inherits(TypingError, _ApplicationError5);
|
|
449
240
|
|
|
450
241
|
var _super6 = _createSuper(TypingError);
|
|
451
242
|
|
|
452
243
|
function TypingError() {
|
|
453
|
-
_classCallCheck(this, TypingError);
|
|
454
|
-
|
|
455
|
-
return _super6.call(this, "Invalid typing");
|
|
244
|
+
return _classCallCheck(this, TypingError), _super6.call(this, "Invalid typing");
|
|
456
245
|
}
|
|
457
246
|
|
|
458
|
-
_createClass(TypingError, [{
|
|
247
|
+
return _createClass(TypingError, [{
|
|
459
248
|
key: "__reactstandin__regenerateByEval",
|
|
460
|
-
value:
|
|
461
|
-
function __reactstandin__regenerateByEval(key, code) {
|
|
462
|
-
// @ts-ignore
|
|
249
|
+
value: function __reactstandin__regenerateByEval(key, code) {
|
|
463
250
|
this[key] = eval(code);
|
|
464
251
|
}
|
|
465
|
-
}]);
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
;
|
|
471
|
-
|
|
472
|
-
(function () {
|
|
473
|
-
var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;
|
|
474
|
-
|
|
475
|
-
if (!reactHotLoader) {
|
|
476
|
-
return;
|
|
477
|
-
}
|
|
478
|
-
|
|
479
|
-
reactHotLoader.register(ApplicationError, "ApplicationError", "C:\\buildAgent\\work\\8df8f1edd755969c\\Common\\Errors.ts");
|
|
480
|
-
reactHotLoader.register(NotImplementedError, "NotImplementedError", "C:\\buildAgent\\work\\8df8f1edd755969c\\Common\\Errors.ts");
|
|
481
|
-
reactHotLoader.register(NotSupportedError, "NotSupportedError", "C:\\buildAgent\\work\\8df8f1edd755969c\\Common\\Errors.ts");
|
|
482
|
-
reactHotLoader.register(InvalidProgramStateError, "InvalidProgramStateError", "C:\\buildAgent\\work\\8df8f1edd755969c\\Common\\Errors.ts");
|
|
483
|
-
reactHotLoader.register(InvalidArgumentError, "InvalidArgumentError", "C:\\buildAgent\\work\\8df8f1edd755969c\\Common\\Errors.ts");
|
|
484
|
-
reactHotLoader.register(TypingError, "TypingError", "C:\\buildAgent\\work\\8df8f1edd755969c\\Common\\Errors.ts");
|
|
485
|
-
})();
|
|
486
|
-
|
|
487
|
-
;
|
|
488
|
-
|
|
489
|
-
(function () {
|
|
490
|
-
var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;
|
|
491
|
-
leaveModule && leaveModule(module);
|
|
492
|
-
})();
|
|
493
|
-
/***/
|
|
252
|
+
}]), TypingError;
|
|
253
|
+
}(ApplicationError),
|
|
254
|
+
reactHotLoader,
|
|
255
|
+
leaveModule;
|
|
494
256
|
|
|
257
|
+
reactHotLoader = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.default : void 0, reactHotLoader && (reactHotLoader.register(ApplicationError, "ApplicationError", "C:\\BuildAgent\\work\\forms-root\\Common\\Errors.ts"), reactHotLoader.register(NotImplementedError, "NotImplementedError", "C:\\BuildAgent\\work\\forms-root\\Common\\Errors.ts"), reactHotLoader.register(NotSupportedError, "NotSupportedError", "C:\\BuildAgent\\work\\forms-root\\Common\\Errors.ts"), reactHotLoader.register(InvalidProgramStateError, "InvalidProgramStateError", "C:\\BuildAgent\\work\\forms-root\\Common\\Errors.ts"), reactHotLoader.register(InvalidArgumentError, "InvalidArgumentError", "C:\\BuildAgent\\work\\forms-root\\Common\\Errors.ts"), reactHotLoader.register(TypingError, "TypingError", "C:\\BuildAgent\\work\\forms-root\\Common\\Errors.ts")), leaveModule = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.leaveModule : void 0, leaveModule && leaveModule(module);
|
|
495
258
|
},
|
|
259
|
+
255: function (e, r, t) {
|
|
260
|
+
var o, n, i;
|
|
496
261
|
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
/***/
|
|
504
|
-
function (module, __webpack_exports__, __webpack_require__) {
|
|
505
|
-
__webpack_require__.r(__webpack_exports__);
|
|
506
|
-
/* harmony export */
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
__webpack_require__.d(__webpack_exports__, {
|
|
510
|
-
/* harmony export */
|
|
511
|
-
"isNotNullOrUndefined": function () {
|
|
512
|
-
return (
|
|
513
|
-
/* binding */
|
|
514
|
-
isNotNullOrUndefined
|
|
515
|
-
);
|
|
516
|
-
},
|
|
517
|
-
|
|
518
|
-
/* harmony export */
|
|
519
|
-
"stringifyUnknownError": function () {
|
|
520
|
-
return (
|
|
521
|
-
/* binding */
|
|
522
|
-
stringifyUnknownError
|
|
523
|
-
);
|
|
524
|
-
},
|
|
525
|
-
|
|
526
|
-
/* harmony export */
|
|
527
|
-
"ensureNotNullOrUndefined": function () {
|
|
528
|
-
return (
|
|
529
|
-
/* binding */
|
|
530
|
-
ensureNotNullOrUndefined
|
|
531
|
-
);
|
|
532
|
-
},
|
|
533
|
-
|
|
534
|
-
/* harmony export */
|
|
535
|
-
"noop": function () {
|
|
536
|
-
return (
|
|
537
|
-
/* binding */
|
|
538
|
-
noop
|
|
539
|
-
);
|
|
540
|
-
},
|
|
541
|
-
|
|
542
|
-
/* harmony export */
|
|
543
|
-
"reject": function () {
|
|
544
|
-
return (
|
|
545
|
-
/* binding */
|
|
546
|
-
reject
|
|
547
|
-
);
|
|
548
|
-
},
|
|
549
|
-
|
|
550
|
-
/* harmony export */
|
|
551
|
-
"isLengthGreaterThenOrEqual": function () {
|
|
552
|
-
return (
|
|
553
|
-
/* binding */
|
|
554
|
-
isLengthGreaterThenOrEqual
|
|
555
|
-
);
|
|
556
|
-
},
|
|
557
|
-
|
|
558
|
-
/* harmony export */
|
|
559
|
-
"minLengthOrUndefined": function () {
|
|
560
|
-
return (
|
|
561
|
-
/* binding */
|
|
562
|
-
minLengthOrUndefined
|
|
563
|
-
);
|
|
564
|
-
},
|
|
565
|
-
|
|
566
|
-
/* harmony export */
|
|
567
|
-
"arrayHasLength": function () {
|
|
568
|
-
return (
|
|
569
|
-
/* binding */
|
|
570
|
-
arrayHasLength
|
|
571
|
-
);
|
|
572
|
-
},
|
|
573
|
-
|
|
574
|
-
/* harmony export */
|
|
575
|
-
"arrayIsNotEmpty": function () {
|
|
576
|
-
return (
|
|
577
|
-
/* binding */
|
|
578
|
-
arrayIsNotEmpty
|
|
579
|
-
);
|
|
580
|
-
},
|
|
581
|
-
|
|
582
|
-
/* harmony export */
|
|
583
|
-
"arrayHasAtLeastOneItem": function () {
|
|
584
|
-
return (
|
|
585
|
-
/* binding */
|
|
586
|
-
arrayHasAtLeastOneItem
|
|
587
|
-
);
|
|
588
|
-
},
|
|
589
|
-
|
|
590
|
-
/* harmony export */
|
|
591
|
-
"ensureArrayIsNotEmpty": function () {
|
|
592
|
-
return (
|
|
593
|
-
/* binding */
|
|
594
|
-
ensureArrayIsNotEmpty
|
|
595
|
-
);
|
|
596
|
-
},
|
|
597
|
-
|
|
598
|
-
/* harmony export */
|
|
599
|
-
"ensureArrayHasLength": function () {
|
|
600
|
-
return (
|
|
601
|
-
/* binding */
|
|
602
|
-
ensureArrayHasLength
|
|
603
|
-
);
|
|
604
|
-
},
|
|
605
|
-
|
|
606
|
-
/* harmony export */
|
|
607
|
-
"ensureArrayLengthGreaterThenOrEqual": function () {
|
|
608
|
-
return (
|
|
609
|
-
/* binding */
|
|
610
|
-
ensureArrayLengthGreaterThenOrEqual
|
|
611
|
-
);
|
|
612
|
-
},
|
|
613
|
-
|
|
614
|
-
/* harmony export */
|
|
615
|
-
"ensureNever": function () {
|
|
616
|
-
return (
|
|
617
|
-
/* binding */
|
|
618
|
-
ensureNever
|
|
619
|
-
);
|
|
620
|
-
},
|
|
621
|
-
|
|
622
|
-
/* harmony export */
|
|
623
|
-
"ensureAndGetString": function () {
|
|
624
|
-
return (
|
|
625
|
-
/* binding */
|
|
626
|
-
ensureAndGetString
|
|
627
|
-
);
|
|
628
|
-
},
|
|
629
|
-
|
|
630
|
-
/* harmony export */
|
|
631
|
-
"runAsyncAction": function () {
|
|
632
|
-
return (
|
|
633
|
-
/* binding */
|
|
634
|
-
runAsyncAction
|
|
635
|
-
);
|
|
636
|
-
},
|
|
637
|
-
|
|
638
|
-
/* harmony export */
|
|
639
|
-
"isNullOrEmpty": function () {
|
|
640
|
-
return (
|
|
641
|
-
/* binding */
|
|
642
|
-
isNullOrEmpty
|
|
643
|
-
);
|
|
644
|
-
},
|
|
645
|
-
|
|
646
|
-
/* harmony export */
|
|
647
|
-
"isNotNullOrEmpty": function () {
|
|
648
|
-
return (
|
|
649
|
-
/* binding */
|
|
650
|
-
isNotNullOrEmpty
|
|
651
|
-
);
|
|
652
|
-
},
|
|
653
|
-
|
|
654
|
-
/* harmony export */
|
|
655
|
-
"isNullOrWhiteSpace": function () {
|
|
656
|
-
return (
|
|
657
|
-
/* binding */
|
|
658
|
-
isNullOrWhiteSpace
|
|
659
|
-
);
|
|
660
|
-
},
|
|
661
|
-
|
|
662
|
-
/* harmony export */
|
|
663
|
-
"trimLastSlash": function () {
|
|
664
|
-
return (
|
|
665
|
-
/* binding */
|
|
666
|
-
trimLastSlash
|
|
667
|
-
);
|
|
668
|
-
},
|
|
669
|
-
|
|
670
|
-
/* harmony export */
|
|
671
|
-
"assertIs": function () {
|
|
672
|
-
return (
|
|
673
|
-
/* binding */
|
|
674
|
-
assertIs
|
|
675
|
-
);
|
|
676
|
-
}
|
|
677
|
-
/* harmony export */
|
|
678
|
-
|
|
679
|
-
});
|
|
680
|
-
/* module decorator */
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
module = __webpack_require__.hmd(module);
|
|
684
|
-
|
|
685
|
-
(function () {
|
|
686
|
-
var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;
|
|
687
|
-
enterModule && enterModule(module);
|
|
688
|
-
})();
|
|
689
|
-
|
|
690
|
-
function _typeof(obj) {
|
|
691
|
-
"@babel/helpers - typeof";
|
|
692
|
-
|
|
693
|
-
if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
|
|
694
|
-
_typeof = function _typeof(obj) {
|
|
695
|
-
return typeof obj;
|
|
696
|
-
};
|
|
697
|
-
} else {
|
|
698
|
-
_typeof = function _typeof(obj) {
|
|
699
|
-
return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
|
|
700
|
-
};
|
|
701
|
-
}
|
|
702
|
-
|
|
703
|
-
return _typeof(obj);
|
|
262
|
+
function a(e) {
|
|
263
|
+
return a = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (e) {
|
|
264
|
+
return typeof e;
|
|
265
|
+
} : function (e) {
|
|
266
|
+
return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e;
|
|
267
|
+
}, a(e);
|
|
704
268
|
}
|
|
705
269
|
|
|
706
|
-
|
|
707
|
-
return
|
|
708
|
-
};
|
|
709
|
-
/***
|
|
710
|
-
* Строготипизированная замена для Boolean(...)
|
|
711
|
-
* Обычно используется для [...].filter(isNotNullOrUndefined)
|
|
712
|
-
*/
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
function isNotNullOrUndefined(input) {
|
|
716
|
-
return input != undefined;
|
|
270
|
+
function s(e) {
|
|
271
|
+
return null != e;
|
|
717
272
|
}
|
|
718
273
|
|
|
719
|
-
function
|
|
720
|
-
|
|
721
|
-
return _typeof(error) === "object" && (error === null || error === void 0 ? void 0 : error["message"]);
|
|
274
|
+
function u(e) {
|
|
275
|
+
throw "string" == typeof e || null == e ? new Error(null != e ? e : "Undefined is not allowed") : e;
|
|
722
276
|
}
|
|
723
277
|
|
|
724
|
-
function
|
|
725
|
-
|
|
726
|
-
throw new Error("Value must be defined");
|
|
727
|
-
}
|
|
278
|
+
function l(e, r) {
|
|
279
|
+
return e.length >= r;
|
|
728
280
|
}
|
|
729
281
|
|
|
730
|
-
function
|
|
282
|
+
function c(e, r) {
|
|
283
|
+
return e.length === r;
|
|
731
284
|
}
|
|
732
285
|
|
|
733
|
-
function
|
|
734
|
-
|
|
735
|
-
throw new Error(message !== null && message !== void 0 ? message : "Undefined is not allowed");
|
|
736
|
-
} else {
|
|
737
|
-
throw message;
|
|
738
|
-
}
|
|
286
|
+
function d(e) {
|
|
287
|
+
return e.length > 0;
|
|
739
288
|
}
|
|
740
289
|
|
|
741
|
-
function
|
|
742
|
-
return
|
|
290
|
+
function f(e) {
|
|
291
|
+
return null == e || "" === e;
|
|
743
292
|
}
|
|
744
293
|
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
return
|
|
294
|
+
t.d(r, {
|
|
295
|
+
d1: function () {
|
|
296
|
+
return u;
|
|
748
297
|
}
|
|
749
|
-
|
|
750
|
-
return
|
|
751
|
-
}
|
|
752
|
-
|
|
753
|
-
function
|
|
754
|
-
|
|
755
|
-
}
|
|
756
|
-
|
|
757
|
-
function
|
|
758
|
-
|
|
759
|
-
}
|
|
760
|
-
|
|
761
|
-
function
|
|
762
|
-
|
|
763
|
-
}
|
|
764
|
-
|
|
765
|
-
function
|
|
766
|
-
|
|
767
|
-
|
|
298
|
+
}), e = t.hmd(e), (o = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.enterModule : void 0) && o(e), "undefined" != typeof reactHotLoaderGlobal && reactHotLoaderGlobal.default.signature, (n = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.default : void 0) && (n.register(s, "isNotNullOrUndefined", "C:\\BuildAgent\\work\\forms-root\\Common\\TypingUtils.ts"), n.register(function (e) {
|
|
299
|
+
return "object" === a(e) && (null == e ? void 0 : e.message);
|
|
300
|
+
}, "stringifyUnknownError", "C:\\BuildAgent\\work\\forms-root\\Common\\TypingUtils.ts"), n.register(function (e) {
|
|
301
|
+
if (!s(e)) throw new Error("Value must be defined");
|
|
302
|
+
}, "ensureNotNullOrUndefined", "C:\\BuildAgent\\work\\forms-root\\Common\\TypingUtils.ts"), n.register(function () {}, "noop", "C:\\BuildAgent\\work\\forms-root\\Common\\TypingUtils.ts"), n.register(u, "reject", "C:\\BuildAgent\\work\\forms-root\\Common\\TypingUtils.ts"), n.register(l, "isLengthGreaterThenOrEqual", "C:\\BuildAgent\\work\\forms-root\\Common\\TypingUtils.ts"), n.register(function (e, r) {
|
|
303
|
+
if (l(e, r)) return e;
|
|
304
|
+
}, "minLengthOrUndefined", "C:\\BuildAgent\\work\\forms-root\\Common\\TypingUtils.ts"), n.register(c, "arrayHasLength", "C:\\BuildAgent\\work\\forms-root\\Common\\TypingUtils.ts"), n.register(d, "arrayIsNotEmpty", "C:\\BuildAgent\\work\\forms-root\\Common\\TypingUtils.ts"), n.register(function (e) {
|
|
305
|
+
return e.length > 0;
|
|
306
|
+
}, "arrayHasAtLeastOneItem", "C:\\BuildAgent\\work\\forms-root\\Common\\TypingUtils.ts"), n.register(function (e) {
|
|
307
|
+
if (!d(e)) throw new Error("Array must be not empty");
|
|
308
|
+
}, "ensureArrayIsNotEmpty", "C:\\BuildAgent\\work\\forms-root\\Common\\TypingUtils.ts"), n.register(function (e, r) {
|
|
309
|
+
if (!c(e, r)) throw new Error("Array should has length ".concat(r));
|
|
310
|
+
}, "ensureArrayHasLength", "C:\\BuildAgent\\work\\forms-root\\Common\\TypingUtils.ts"), n.register(function (e, r) {
|
|
311
|
+
if (!l(e, r)) throw new Error("Array must have minimal length ".concat(r));
|
|
312
|
+
}, "ensureArrayLengthGreaterThenOrEqual", "C:\\BuildAgent\\work\\forms-root\\Common\\TypingUtils.ts"), n.register(function (e) {}, "ensureNever", "C:\\BuildAgent\\work\\forms-root\\Common\\TypingUtils.ts"), n.register(function (e) {
|
|
313
|
+
return "".concat(e);
|
|
314
|
+
}, "ensureAndGetString", "C:\\BuildAgent\\work\\forms-root\\Common\\TypingUtils.ts"), n.register(function (e) {
|
|
315
|
+
e();
|
|
316
|
+
}, "runAsyncAction", "C:\\BuildAgent\\work\\forms-root\\Common\\TypingUtils.ts"), n.register(f, "isNullOrEmpty", "C:\\BuildAgent\\work\\forms-root\\Common\\TypingUtils.ts"), n.register(function (e) {
|
|
317
|
+
return !f(e);
|
|
318
|
+
}, "isNotNullOrEmpty", "C:\\BuildAgent\\work\\forms-root\\Common\\TypingUtils.ts"), n.register(function (e) {
|
|
319
|
+
return null == e || "" === e.trim();
|
|
320
|
+
}, "isNullOrWhiteSpace", "C:\\BuildAgent\\work\\forms-root\\Common\\TypingUtils.ts"), n.register(function (e) {
|
|
321
|
+
return "/" === e.slice(-1) ? e.slice(0, -1) : e;
|
|
322
|
+
}, "trimLastSlash", "C:\\BuildAgent\\work\\forms-root\\Common\\TypingUtils.ts"), n.register(function (e) {}, "assertIs", "C:\\BuildAgent\\work\\forms-root\\Common\\TypingUtils.ts")), (i = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.leaveModule : void 0) && i(e);
|
|
323
|
+
},
|
|
324
|
+
133: function (e, r, t) {
|
|
325
|
+
var o = "undefined" != typeof globalThis && globalThis || "undefined" != typeof self && self || void 0 !== o && o,
|
|
326
|
+
n = ("URLSearchParams" in o),
|
|
327
|
+
i = "Symbol" in o && "iterator" in Symbol,
|
|
328
|
+
a = "FileReader" in o && "Blob" in o && function () {
|
|
329
|
+
try {
|
|
330
|
+
return new Blob(), !0;
|
|
331
|
+
} catch (e) {
|
|
332
|
+
return !1;
|
|
768
333
|
}
|
|
769
|
-
}
|
|
334
|
+
}(),
|
|
335
|
+
s = ("FormData" in o),
|
|
336
|
+
u = ("ArrayBuffer" in o);
|
|
770
337
|
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
}
|
|
338
|
+
if (u) var l = ["[object Int8Array]", "[object Uint8Array]", "[object Uint8ClampedArray]", "[object Int16Array]", "[object Uint16Array]", "[object Int32Array]", "[object Uint32Array]", "[object Float32Array]", "[object Float64Array]"],
|
|
339
|
+
c = ArrayBuffer.isView || function (e) {
|
|
340
|
+
return e && l.indexOf(Object.prototype.toString.call(e)) > -1;
|
|
341
|
+
};
|
|
776
342
|
|
|
777
|
-
function
|
|
778
|
-
if (
|
|
779
|
-
|
|
780
|
-
}
|
|
343
|
+
function d(e) {
|
|
344
|
+
if ("string" != typeof e && (e = String(e)), /[^a-z0-9\-#$%&'*+.^_`|~!]/i.test(e) || "" === e) throw new TypeError('Invalid character in header field name: "' + e + '"');
|
|
345
|
+
return e.toLowerCase();
|
|
781
346
|
}
|
|
782
347
|
|
|
783
|
-
function
|
|
348
|
+
function f(e) {
|
|
349
|
+
return "string" != typeof e && (e = String(e)), e;
|
|
784
350
|
}
|
|
785
351
|
|
|
786
|
-
function
|
|
787
|
-
|
|
352
|
+
function p(e) {
|
|
353
|
+
var r = {
|
|
354
|
+
next: function () {
|
|
355
|
+
var r = e.shift();
|
|
356
|
+
return {
|
|
357
|
+
done: void 0 === r,
|
|
358
|
+
value: r
|
|
359
|
+
};
|
|
360
|
+
}
|
|
361
|
+
};
|
|
362
|
+
return i && (r[Symbol.iterator] = function () {
|
|
363
|
+
return r;
|
|
364
|
+
}), r;
|
|
788
365
|
}
|
|
789
366
|
|
|
790
|
-
function
|
|
791
|
-
|
|
792
|
-
|
|
367
|
+
function y(e) {
|
|
368
|
+
this.map = {}, e instanceof y ? e.forEach(function (e, r) {
|
|
369
|
+
this.append(r, e);
|
|
370
|
+
}, this) : Array.isArray(e) ? e.forEach(function (e) {
|
|
371
|
+
this.append(e[0], e[1]);
|
|
372
|
+
}, this) : e && Object.getOwnPropertyNames(e).forEach(function (r) {
|
|
373
|
+
this.append(r, e[r]);
|
|
374
|
+
}, this);
|
|
793
375
|
}
|
|
794
376
|
|
|
795
|
-
function
|
|
796
|
-
|
|
377
|
+
function m(e) {
|
|
378
|
+
if (e.bodyUsed) return Promise.reject(new TypeError("Already read"));
|
|
379
|
+
e.bodyUsed = !0;
|
|
797
380
|
}
|
|
798
381
|
|
|
799
|
-
function
|
|
800
|
-
return
|
|
382
|
+
function h(e) {
|
|
383
|
+
return new Promise(function (r, t) {
|
|
384
|
+
e.onload = function () {
|
|
385
|
+
r(e.result);
|
|
386
|
+
}, e.onerror = function () {
|
|
387
|
+
t(e.error);
|
|
388
|
+
};
|
|
389
|
+
});
|
|
801
390
|
}
|
|
802
391
|
|
|
803
|
-
function
|
|
804
|
-
|
|
805
|
-
|
|
392
|
+
function g(e) {
|
|
393
|
+
var r = new FileReader(),
|
|
394
|
+
t = h(r);
|
|
395
|
+
return r.readAsArrayBuffer(e), t;
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
function _(e) {
|
|
399
|
+
if (e.slice) return e.slice(0);
|
|
400
|
+
var r = new Uint8Array(e.byteLength);
|
|
401
|
+
return r.set(new Uint8Array(e)), r.buffer;
|
|
402
|
+
}
|
|
403
|
+
|
|
404
|
+
function b() {
|
|
405
|
+
return this.bodyUsed = !1, this._initBody = function (e) {
|
|
406
|
+
var r;
|
|
407
|
+
this.bodyUsed = this.bodyUsed, this._bodyInit = e, e ? "string" == typeof e ? this._bodyText = e : a && Blob.prototype.isPrototypeOf(e) ? this._bodyBlob = e : s && FormData.prototype.isPrototypeOf(e) ? this._bodyFormData = e : n && URLSearchParams.prototype.isPrototypeOf(e) ? this._bodyText = e.toString() : u && a && (r = e) && DataView.prototype.isPrototypeOf(r) ? (this._bodyArrayBuffer = _(e.buffer), this._bodyInit = new Blob([this._bodyArrayBuffer])) : u && (ArrayBuffer.prototype.isPrototypeOf(e) || c(e)) ? this._bodyArrayBuffer = _(e) : this._bodyText = e = Object.prototype.toString.call(e) : this._bodyText = "", this.headers.get("content-type") || ("string" == typeof e ? this.headers.set("content-type", "text/plain;charset=UTF-8") : this._bodyBlob && this._bodyBlob.type ? this.headers.set("content-type", this._bodyBlob.type) : n && URLSearchParams.prototype.isPrototypeOf(e) && this.headers.set("content-type", "application/x-www-form-urlencoded;charset=UTF-8"));
|
|
408
|
+
}, a && (this.blob = function () {
|
|
409
|
+
var e = m(this);
|
|
410
|
+
if (e) return e;
|
|
411
|
+
if (this._bodyBlob) return Promise.resolve(this._bodyBlob);
|
|
412
|
+
if (this._bodyArrayBuffer) return Promise.resolve(new Blob([this._bodyArrayBuffer]));
|
|
413
|
+
if (this._bodyFormData) throw new Error("could not read FormData body as blob");
|
|
414
|
+
return Promise.resolve(new Blob([this._bodyText]));
|
|
415
|
+
}, this.arrayBuffer = function () {
|
|
416
|
+
return this._bodyArrayBuffer ? m(this) || (ArrayBuffer.isView(this._bodyArrayBuffer) ? Promise.resolve(this._bodyArrayBuffer.buffer.slice(this._bodyArrayBuffer.byteOffset, this._bodyArrayBuffer.byteOffset + this._bodyArrayBuffer.byteLength)) : Promise.resolve(this._bodyArrayBuffer)) : this.blob().then(g);
|
|
417
|
+
}), this.text = function () {
|
|
418
|
+
var e,
|
|
419
|
+
r,
|
|
420
|
+
t,
|
|
421
|
+
o = m(this);
|
|
422
|
+
if (o) return o;
|
|
423
|
+
if (this._bodyBlob) return e = this._bodyBlob, t = h(r = new FileReader()), r.readAsText(e), t;
|
|
424
|
+
if (this._bodyArrayBuffer) return Promise.resolve(function (e) {
|
|
425
|
+
for (var r = new Uint8Array(e), t = new Array(r.length), o = 0; o < r.length; o++) t[o] = String.fromCharCode(r[o]);
|
|
426
|
+
|
|
427
|
+
return t.join("");
|
|
428
|
+
}(this._bodyArrayBuffer));
|
|
429
|
+
if (this._bodyFormData) throw new Error("could not read FormData body as text");
|
|
430
|
+
return Promise.resolve(this._bodyText);
|
|
431
|
+
}, s && (this.formData = function () {
|
|
432
|
+
return this.text().then(w);
|
|
433
|
+
}), this.json = function () {
|
|
434
|
+
return this.text().then(JSON.parse);
|
|
435
|
+
}, this;
|
|
436
|
+
}
|
|
437
|
+
|
|
438
|
+
y.prototype.append = function (e, r) {
|
|
439
|
+
e = d(e), r = f(r);
|
|
440
|
+
var t = this.map[e];
|
|
441
|
+
this.map[e] = t ? t + ", " + r : r;
|
|
442
|
+
}, y.prototype.delete = function (e) {
|
|
443
|
+
delete this.map[d(e)];
|
|
444
|
+
}, y.prototype.get = function (e) {
|
|
445
|
+
return e = d(e), this.has(e) ? this.map[e] : null;
|
|
446
|
+
}, y.prototype.has = function (e) {
|
|
447
|
+
return this.map.hasOwnProperty(d(e));
|
|
448
|
+
}, y.prototype.set = function (e, r) {
|
|
449
|
+
this.map[d(e)] = f(r);
|
|
450
|
+
}, y.prototype.forEach = function (e, r) {
|
|
451
|
+
for (var t in this.map) this.map.hasOwnProperty(t) && e.call(r, this.map[t], t, this);
|
|
452
|
+
}, y.prototype.keys = function () {
|
|
453
|
+
var e = [];
|
|
454
|
+
return this.forEach(function (r, t) {
|
|
455
|
+
e.push(t);
|
|
456
|
+
}), p(e);
|
|
457
|
+
}, y.prototype.values = function () {
|
|
458
|
+
var e = [];
|
|
459
|
+
return this.forEach(function (r) {
|
|
460
|
+
e.push(r);
|
|
461
|
+
}), p(e);
|
|
462
|
+
}, y.prototype.entries = function () {
|
|
463
|
+
var e = [];
|
|
464
|
+
return this.forEach(function (r, t) {
|
|
465
|
+
e.push([t, r]);
|
|
466
|
+
}), p(e);
|
|
467
|
+
}, i && (y.prototype[Symbol.iterator] = y.prototype.entries);
|
|
468
|
+
var v = ["DELETE", "GET", "HEAD", "OPTIONS", "POST", "PUT"];
|
|
469
|
+
|
|
470
|
+
function E(e, r) {
|
|
471
|
+
if (!(this instanceof E)) throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.');
|
|
472
|
+
var t,
|
|
473
|
+
o,
|
|
474
|
+
n = (r = r || {}).body;
|
|
475
|
+
|
|
476
|
+
if (e instanceof E) {
|
|
477
|
+
if (e.bodyUsed) throw new TypeError("Already read");
|
|
478
|
+
this.url = e.url, this.credentials = e.credentials, r.headers || (this.headers = new y(e.headers)), this.method = e.method, this.mode = e.mode, this.signal = e.signal, n || null == e._bodyInit || (n = e._bodyInit, e.bodyUsed = !0);
|
|
479
|
+
} else this.url = String(e);
|
|
480
|
+
|
|
481
|
+
if (this.credentials = r.credentials || this.credentials || "same-origin", !r.headers && this.headers || (this.headers = new y(r.headers)), this.method = (o = (t = r.method || this.method || "GET").toUpperCase(), v.indexOf(o) > -1 ? o : t), this.mode = r.mode || this.mode || null, this.signal = r.signal || this.signal, this.referrer = null, ("GET" === this.method || "HEAD" === this.method) && n) throw new TypeError("Body not allowed for GET or HEAD requests");
|
|
482
|
+
|
|
483
|
+
if (this._initBody(n), !("GET" !== this.method && "HEAD" !== this.method || "no-store" !== r.cache && "no-cache" !== r.cache)) {
|
|
484
|
+
var i = /([?&])_=[^&]*/;
|
|
485
|
+
i.test(this.url) ? this.url = this.url.replace(i, "$1_=" + new Date().getTime()) : this.url += (/\?/.test(this.url) ? "&" : "?") + "_=" + new Date().getTime();
|
|
486
|
+
}
|
|
487
|
+
}
|
|
488
|
+
|
|
489
|
+
function w(e) {
|
|
490
|
+
var r = new FormData();
|
|
491
|
+
return e.trim().split("&").forEach(function (e) {
|
|
492
|
+
if (e) {
|
|
493
|
+
var t = e.split("="),
|
|
494
|
+
o = t.shift().replace(/\+/g, " "),
|
|
495
|
+
n = t.join("=").replace(/\+/g, " ");
|
|
496
|
+
r.append(decodeURIComponent(o), decodeURIComponent(n));
|
|
497
|
+
}
|
|
498
|
+
}), r;
|
|
499
|
+
}
|
|
500
|
+
|
|
501
|
+
function C(e, r) {
|
|
502
|
+
if (!(this instanceof C)) throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.');
|
|
503
|
+
r || (r = {}), this.type = "default", this.status = void 0 === r.status ? 200 : r.status, this.ok = this.status >= 200 && this.status < 300, this.statusText = void 0 === r.statusText ? "" : "" + r.statusText, this.headers = new y(r.headers), this.url = r.url || "", this._initBody(e);
|
|
504
|
+
}
|
|
505
|
+
|
|
506
|
+
E.prototype.clone = function () {
|
|
507
|
+
return new E(this, {
|
|
508
|
+
body: this._bodyInit
|
|
509
|
+
});
|
|
510
|
+
}, b.call(E.prototype), b.call(C.prototype), C.prototype.clone = function () {
|
|
511
|
+
return new C(this._bodyInit, {
|
|
512
|
+
status: this.status,
|
|
513
|
+
statusText: this.statusText,
|
|
514
|
+
headers: new y(this.headers),
|
|
515
|
+
url: this.url
|
|
516
|
+
});
|
|
517
|
+
}, C.error = function () {
|
|
518
|
+
var e = new C(null, {
|
|
519
|
+
status: 0,
|
|
520
|
+
statusText: ""
|
|
521
|
+
});
|
|
522
|
+
return e.type = "error", e;
|
|
523
|
+
};
|
|
524
|
+
var k = [301, 302, 303, 307, 308];
|
|
806
525
|
|
|
807
|
-
function
|
|
808
|
-
|
|
809
|
-
|
|
526
|
+
C.redirect = function (e, r) {
|
|
527
|
+
if (-1 === k.indexOf(r)) throw new RangeError("Invalid status code");
|
|
528
|
+
return new C(null, {
|
|
529
|
+
status: r,
|
|
530
|
+
headers: {
|
|
531
|
+
location: e
|
|
532
|
+
}
|
|
533
|
+
});
|
|
534
|
+
};
|
|
810
535
|
|
|
811
|
-
|
|
536
|
+
var A = o.DOMException;
|
|
537
|
+
|
|
538
|
+
try {
|
|
539
|
+
new A();
|
|
540
|
+
} catch (e) {
|
|
541
|
+
(A = function (e, r) {
|
|
542
|
+
this.message = e, this.name = r;
|
|
543
|
+
var t = Error(e);
|
|
544
|
+
this.stack = t.stack;
|
|
545
|
+
}).prototype = Object.create(Error.prototype), A.prototype.constructor = A;
|
|
546
|
+
}
|
|
547
|
+
|
|
548
|
+
function P(e, r) {
|
|
549
|
+
return new Promise(function (t, n) {
|
|
550
|
+
var i = new E(e, r);
|
|
551
|
+
if (i.signal && i.signal.aborted) return n(new A("Aborted", "AbortError"));
|
|
552
|
+
var s = new XMLHttpRequest();
|
|
553
|
+
|
|
554
|
+
function l() {
|
|
555
|
+
s.abort();
|
|
556
|
+
}
|
|
557
|
+
|
|
558
|
+
s.onload = function () {
|
|
559
|
+
var e,
|
|
560
|
+
r,
|
|
561
|
+
o = {
|
|
562
|
+
status: s.status,
|
|
563
|
+
statusText: s.statusText,
|
|
564
|
+
headers: (e = s.getAllResponseHeaders() || "", r = new y(), e.replace(/\r?\n[\t ]+/g, " ").split("\r").map(function (e) {
|
|
565
|
+
return 0 === e.indexOf("\n") ? e.substr(1, e.length) : e;
|
|
566
|
+
}).forEach(function (e) {
|
|
567
|
+
var t = e.split(":"),
|
|
568
|
+
o = t.shift().trim();
|
|
569
|
+
|
|
570
|
+
if (o) {
|
|
571
|
+
var n = t.join(":").trim();
|
|
572
|
+
r.append(o, n);
|
|
573
|
+
}
|
|
574
|
+
}), r)
|
|
575
|
+
};
|
|
576
|
+
o.url = "responseURL" in s ? s.responseURL : o.headers.get("X-Request-URL");
|
|
577
|
+
var n = "response" in s ? s.response : s.responseText;
|
|
578
|
+
setTimeout(function () {
|
|
579
|
+
t(new C(n, o));
|
|
580
|
+
}, 0);
|
|
581
|
+
}, s.onerror = function () {
|
|
582
|
+
setTimeout(function () {
|
|
583
|
+
n(new TypeError("Network request failed"));
|
|
584
|
+
}, 0);
|
|
585
|
+
}, s.ontimeout = function () {
|
|
586
|
+
setTimeout(function () {
|
|
587
|
+
n(new TypeError("Network request failed"));
|
|
588
|
+
}, 0);
|
|
589
|
+
}, s.onabort = function () {
|
|
590
|
+
setTimeout(function () {
|
|
591
|
+
n(new A("Aborted", "AbortError"));
|
|
592
|
+
}, 0);
|
|
593
|
+
}, s.open(i.method, function (e) {
|
|
594
|
+
try {
|
|
595
|
+
return "" === e && o.location.href ? o.location.href : e;
|
|
596
|
+
} catch (r) {
|
|
597
|
+
return e;
|
|
598
|
+
}
|
|
599
|
+
}(i.url), !0), "include" === i.credentials ? s.withCredentials = !0 : "omit" === i.credentials && (s.withCredentials = !1), "responseType" in s && (a ? s.responseType = "blob" : u && i.headers.get("Content-Type") && -1 !== i.headers.get("Content-Type").indexOf("application/octet-stream") && (s.responseType = "arraybuffer")), !r || "object" != typeof r.headers || r.headers instanceof y ? i.headers.forEach(function (e, r) {
|
|
600
|
+
s.setRequestHeader(r, e);
|
|
601
|
+
}) : Object.getOwnPropertyNames(r.headers).forEach(function (e) {
|
|
602
|
+
s.setRequestHeader(e, f(r.headers[e]));
|
|
603
|
+
}), i.signal && (i.signal.addEventListener("abort", l), s.onreadystatechange = function () {
|
|
604
|
+
4 === s.readyState && i.signal.removeEventListener("abort", l);
|
|
605
|
+
}), s.send(void 0 === i._bodyInit ? null : i._bodyInit);
|
|
606
|
+
});
|
|
812
607
|
}
|
|
813
608
|
|
|
814
|
-
;
|
|
609
|
+
P.polyfill = !0, o.fetch || (o.fetch = P, o.Headers = y, o.Request = E, o.Response = C);
|
|
610
|
+
var O,
|
|
611
|
+
L = t(255),
|
|
612
|
+
B = t(412),
|
|
613
|
+
T = t(730),
|
|
614
|
+
S = t(68),
|
|
615
|
+
I = t(152);
|
|
815
616
|
|
|
816
|
-
|
|
817
|
-
var
|
|
617
|
+
function j(e, r) {
|
|
618
|
+
var t = Object.keys(e);
|
|
818
619
|
|
|
819
|
-
if (
|
|
820
|
-
|
|
620
|
+
if (Object.getOwnPropertySymbols) {
|
|
621
|
+
var o = Object.getOwnPropertySymbols(e);
|
|
622
|
+
r && (o = o.filter(function (r) {
|
|
623
|
+
return Object.getOwnPropertyDescriptor(e, r).enumerable;
|
|
624
|
+
})), t.push.apply(t, o);
|
|
821
625
|
}
|
|
822
626
|
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
reactHotLoader.register(ensureNotNullOrUndefined, "ensureNotNullOrUndefined", "C:\\buildAgent\\work\\8df8f1edd755969c\\Common\\TypingUtils.ts");
|
|
826
|
-
reactHotLoader.register(noop, "noop", "C:\\buildAgent\\work\\8df8f1edd755969c\\Common\\TypingUtils.ts");
|
|
827
|
-
reactHotLoader.register(reject, "reject", "C:\\buildAgent\\work\\8df8f1edd755969c\\Common\\TypingUtils.ts");
|
|
828
|
-
reactHotLoader.register(isLengthGreaterThenOrEqual, "isLengthGreaterThenOrEqual", "C:\\buildAgent\\work\\8df8f1edd755969c\\Common\\TypingUtils.ts");
|
|
829
|
-
reactHotLoader.register(minLengthOrUndefined, "minLengthOrUndefined", "C:\\buildAgent\\work\\8df8f1edd755969c\\Common\\TypingUtils.ts");
|
|
830
|
-
reactHotLoader.register(arrayHasLength, "arrayHasLength", "C:\\buildAgent\\work\\8df8f1edd755969c\\Common\\TypingUtils.ts");
|
|
831
|
-
reactHotLoader.register(arrayIsNotEmpty, "arrayIsNotEmpty", "C:\\buildAgent\\work\\8df8f1edd755969c\\Common\\TypingUtils.ts");
|
|
832
|
-
reactHotLoader.register(arrayHasAtLeastOneItem, "arrayHasAtLeastOneItem", "C:\\buildAgent\\work\\8df8f1edd755969c\\Common\\TypingUtils.ts");
|
|
833
|
-
reactHotLoader.register(ensureArrayIsNotEmpty, "ensureArrayIsNotEmpty", "C:\\buildAgent\\work\\8df8f1edd755969c\\Common\\TypingUtils.ts");
|
|
834
|
-
reactHotLoader.register(ensureArrayHasLength, "ensureArrayHasLength", "C:\\buildAgent\\work\\8df8f1edd755969c\\Common\\TypingUtils.ts");
|
|
835
|
-
reactHotLoader.register(ensureArrayLengthGreaterThenOrEqual, "ensureArrayLengthGreaterThenOrEqual", "C:\\buildAgent\\work\\8df8f1edd755969c\\Common\\TypingUtils.ts");
|
|
836
|
-
reactHotLoader.register(ensureNever, "ensureNever", "C:\\buildAgent\\work\\8df8f1edd755969c\\Common\\TypingUtils.ts");
|
|
837
|
-
reactHotLoader.register(ensureAndGetString, "ensureAndGetString", "C:\\buildAgent\\work\\8df8f1edd755969c\\Common\\TypingUtils.ts");
|
|
838
|
-
reactHotLoader.register(runAsyncAction, "runAsyncAction", "C:\\buildAgent\\work\\8df8f1edd755969c\\Common\\TypingUtils.ts");
|
|
839
|
-
reactHotLoader.register(isNullOrEmpty, "isNullOrEmpty", "C:\\buildAgent\\work\\8df8f1edd755969c\\Common\\TypingUtils.ts");
|
|
840
|
-
reactHotLoader.register(isNotNullOrEmpty, "isNotNullOrEmpty", "C:\\buildAgent\\work\\8df8f1edd755969c\\Common\\TypingUtils.ts");
|
|
841
|
-
reactHotLoader.register(isNullOrWhiteSpace, "isNullOrWhiteSpace", "C:\\buildAgent\\work\\8df8f1edd755969c\\Common\\TypingUtils.ts");
|
|
842
|
-
reactHotLoader.register(trimLastSlash, "trimLastSlash", "C:\\buildAgent\\work\\8df8f1edd755969c\\Common\\TypingUtils.ts");
|
|
843
|
-
reactHotLoader.register(assertIs, "assertIs", "C:\\buildAgent\\work\\8df8f1edd755969c\\Common\\TypingUtils.ts");
|
|
844
|
-
})();
|
|
845
|
-
|
|
846
|
-
;
|
|
847
|
-
|
|
848
|
-
(function () {
|
|
849
|
-
var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;
|
|
850
|
-
leaveModule && leaveModule(module);
|
|
851
|
-
})();
|
|
852
|
-
/***/
|
|
853
|
-
|
|
854
|
-
},
|
|
855
|
-
|
|
856
|
-
/***/
|
|
857
|
-
"./Engine/src/Forms/Client/Client.ts":
|
|
858
|
-
/*!*******************************************!*\
|
|
859
|
-
!*** ./Engine/src/Forms/Client/Client.ts ***!
|
|
860
|
-
\*******************************************/
|
|
861
|
-
|
|
862
|
-
/***/
|
|
863
|
-
function (module, __webpack_exports__, __webpack_require__) {
|
|
864
|
-
__webpack_require__.r(__webpack_exports__);
|
|
865
|
-
/* harmony export */
|
|
866
|
-
|
|
627
|
+
return t;
|
|
628
|
+
}
|
|
867
629
|
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
/* harmony export */
|
|
878
|
-
"CandyClientExports": function () {
|
|
879
|
-
return (
|
|
880
|
-
/* binding */
|
|
881
|
-
CandyClientExports
|
|
882
|
-
);
|
|
630
|
+
function H(e) {
|
|
631
|
+
for (var r = 1; r < arguments.length; r++) {
|
|
632
|
+
var t = null != arguments[r] ? arguments[r] : {};
|
|
633
|
+
r % 2 ? j(Object(t), !0).forEach(function (r) {
|
|
634
|
+
F(e, r, t[r]);
|
|
635
|
+
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : j(Object(t)).forEach(function (r) {
|
|
636
|
+
Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));
|
|
637
|
+
});
|
|
883
638
|
}
|
|
884
|
-
/* harmony export */
|
|
885
|
-
|
|
886
|
-
});
|
|
887
|
-
/* harmony import */
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
var whatwg_fetch__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(
|
|
891
|
-
/*! whatwg-fetch */
|
|
892
|
-
"./node_modules/whatwg-fetch/fetch.js");
|
|
893
|
-
/* harmony import */
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
var _Common_TypingUtils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(
|
|
897
|
-
/*! ../../../../Common/TypingUtils */
|
|
898
|
-
"./Common/TypingUtils.ts");
|
|
899
|
-
/* harmony import */
|
|
900
639
|
|
|
640
|
+
return e;
|
|
641
|
+
}
|
|
901
642
|
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
643
|
+
function F(e, r, t) {
|
|
644
|
+
return r in e ? Object.defineProperty(e, r, {
|
|
645
|
+
value: t,
|
|
646
|
+
enumerable: !0,
|
|
647
|
+
configurable: !0,
|
|
648
|
+
writable: !0
|
|
649
|
+
}) : e[r] = t, e;
|
|
650
|
+
}
|
|
906
651
|
|
|
652
|
+
function U(e, r) {
|
|
653
|
+
(null == r || r > e.length) && (r = e.length);
|
|
907
654
|
|
|
908
|
-
|
|
909
|
-
/*! ../../../../Common/CandyApiClient/ClientDraftInfo/GetClientDraftInfoUrl */
|
|
910
|
-
"./Common/CandyApiClient/ClientDraftInfo/GetClientDraftInfoUrl.ts");
|
|
911
|
-
/* harmony import */
|
|
655
|
+
for (var t = 0, o = new Array(r); t < r; t++) o[t] = e[t];
|
|
912
656
|
|
|
657
|
+
return o;
|
|
658
|
+
}
|
|
913
659
|
|
|
914
|
-
|
|
915
|
-
/*! ./ClientSettings */
|
|
916
|
-
"./Engine/src/Forms/Client/ClientSettings.ts");
|
|
917
|
-
/* harmony import */
|
|
660
|
+
function G() {}
|
|
918
661
|
|
|
662
|
+
function M(e) {
|
|
663
|
+
return "string" == typeof e ? "false" !== e && "true" === e : Boolean(e);
|
|
664
|
+
}
|
|
919
665
|
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
666
|
+
function D() {
|
|
667
|
+
var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "",
|
|
668
|
+
r = t.g.CF.keformsUrl || "";
|
|
669
|
+
return "".concat(r, "/").concat(e).replace(/([^:])\/{2,}/g, "$1/");
|
|
670
|
+
}
|
|
924
671
|
|
|
672
|
+
function x(e, r) {
|
|
673
|
+
if (void 0 === r) return e;
|
|
925
674
|
|
|
926
|
-
|
|
675
|
+
for (var t = [], o = 0, n = Object.keys(r); o < n.length; o++) {
|
|
676
|
+
var i = n[o],
|
|
677
|
+
a = r[i];
|
|
678
|
+
null != a && t.push("".concat(i, "=").concat(encodeURIComponent(a)));
|
|
679
|
+
}
|
|
927
680
|
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
enterModule && enterModule(module);
|
|
931
|
-
})();
|
|
681
|
+
return 0 === t.length ? e : e + "?" + t.join("&");
|
|
682
|
+
}
|
|
932
683
|
|
|
933
|
-
function
|
|
934
|
-
|
|
684
|
+
function N(e) {
|
|
685
|
+
return new RegExp("^(?:".concat(e.replace(/\./g, "\\.").replace(/\*/g, "[a-z0-9-.]+"), ")$")).test(t.g.location.host);
|
|
686
|
+
}
|
|
935
687
|
|
|
936
|
-
|
|
937
|
-
|
|
688
|
+
function R(e) {
|
|
689
|
+
return (t.g.location.search.trim().replace(/^(\?|#|&)/, "").split("&").map(function (e) {
|
|
690
|
+
return e.replace(/\+/g, " ").split("=").map(decodeURIComponent);
|
|
691
|
+
}).find(function (r) {
|
|
692
|
+
return (t = r, o = 1, function (e) {
|
|
693
|
+
if (Array.isArray(e)) return e;
|
|
694
|
+
}(t) || function (e, r) {
|
|
695
|
+
var t = null == e ? null : "undefined" != typeof Symbol && e[Symbol.iterator] || e["@@iterator"];
|
|
938
696
|
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
697
|
+
if (null != t) {
|
|
698
|
+
var o,
|
|
699
|
+
n,
|
|
700
|
+
i = [],
|
|
701
|
+
a = !0,
|
|
702
|
+
s = !1;
|
|
944
703
|
|
|
945
|
-
|
|
946
|
-
|
|
704
|
+
try {
|
|
705
|
+
for (t = t.call(e); !(a = (o = t.next()).done) && (i.push(o.value), !r || i.length !== r); a = !0);
|
|
706
|
+
} catch (e) {
|
|
707
|
+
s = !0, n = e;
|
|
708
|
+
} finally {
|
|
709
|
+
try {
|
|
710
|
+
a || null == t.return || t.return();
|
|
711
|
+
} finally {
|
|
712
|
+
if (s) throw n;
|
|
713
|
+
}
|
|
714
|
+
}
|
|
947
715
|
|
|
948
|
-
|
|
716
|
+
return i;
|
|
717
|
+
}
|
|
718
|
+
}(t, o) || function (e, r) {
|
|
719
|
+
if (e) {
|
|
720
|
+
if ("string" == typeof e) return U(e, r);
|
|
721
|
+
var t = Object.prototype.toString.call(e).slice(8, -1);
|
|
722
|
+
return "Object" === t && e.constructor && (t = e.constructor.name), "Map" === t || "Set" === t ? Array.from(e) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? U(e, r) : void 0;
|
|
723
|
+
}
|
|
724
|
+
}(t, o) || function () {
|
|
725
|
+
throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
726
|
+
}())[0] == e;
|
|
727
|
+
var t, o;
|
|
728
|
+
}) || [])[1];
|
|
949
729
|
}
|
|
950
730
|
|
|
951
|
-
function
|
|
952
|
-
|
|
953
|
-
|
|
731
|
+
function V(e, r) {
|
|
732
|
+
var t = 0;
|
|
733
|
+
e.forEach(function (o) {
|
|
734
|
+
o(function (o) {
|
|
735
|
+
if (t !== e.length) {
|
|
736
|
+
if (o) return t = e.length, void r(o);
|
|
737
|
+
(t += 1) === e.length && r();
|
|
738
|
+
}
|
|
739
|
+
});
|
|
740
|
+
});
|
|
741
|
+
}
|
|
954
742
|
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
743
|
+
function q(e, r) {
|
|
744
|
+
var o = e.gfv,
|
|
745
|
+
n = e.engineVersion,
|
|
746
|
+
i = e.resourcesVersion;
|
|
747
|
+
if (t.g.CF.entryPoint[o]) r();else {
|
|
748
|
+
var a = n && !t.g[n],
|
|
749
|
+
s = "true" === R("debug") ? "" : ".min",
|
|
750
|
+
u = [],
|
|
751
|
+
l = {
|
|
752
|
+
v: i,
|
|
753
|
+
resourceZone: e.resourceZone
|
|
754
|
+
};
|
|
755
|
+
u.push(function (e) {
|
|
756
|
+
return B.e.styleSheet(D(x("static/public/styles/".concat(o).concat(s, ".css"), l)), !0, e);
|
|
757
|
+
}), u.push(function (e) {
|
|
758
|
+
return B.e.script(D(x("static/public/scripts/".concat(o).concat(s, ".js"), l)), e);
|
|
759
|
+
}), a && u.push(function (e) {
|
|
760
|
+
return B.e.styleSheet(D(x("static/public/styles/candy_".concat(n).concat(s, ".css"), l)), !1, e);
|
|
761
|
+
}, function (e) {
|
|
762
|
+
return B.e.script(D(x("static/public/scripts/candy_".concat(n).concat(s, ".js"), l)), e);
|
|
763
|
+
}), V(u, r);
|
|
764
|
+
}
|
|
765
|
+
}
|
|
766
|
+
|
|
767
|
+
function Z(e, r, o) {
|
|
768
|
+
var n;
|
|
769
|
+
(null !== (n = t.g.CF.entryPoint[r.gfv]) && void 0 !== n ? n : (0, L.d1)("Form entry point ".concat(r.gfv, " not found.")))(e, r).then(function (e) {
|
|
770
|
+
var r = e.publicForm || (0, I.P)(e);
|
|
771
|
+
o(null, r);
|
|
772
|
+
}).catch(o);
|
|
773
|
+
}
|
|
774
|
+
|
|
775
|
+
function z(e) {
|
|
776
|
+
if (null != e) return t.g[e] && t.g[e].default;
|
|
777
|
+
}
|
|
778
|
+
|
|
779
|
+
function K(e, r) {
|
|
780
|
+
var o,
|
|
781
|
+
n,
|
|
782
|
+
i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : G,
|
|
783
|
+
a = null,
|
|
784
|
+
s = r.ns,
|
|
785
|
+
u = r.draftId;
|
|
786
|
+
if (N(S.Z.konturDomains) ? S.Z.authorized ? u ? s || (a = new Error("options.ns is required")) : a = new Error("options.draftId is required") : a = new Error("user.unauthenticated") : a = new Error("domain.untrusted"), a) i(a);else {
|
|
787
|
+
var l = null !== (o = r.resourceZone) && void 0 !== o ? o : R("resourceZone"),
|
|
788
|
+
c = x(D((0, T.m)({
|
|
789
|
+
ns: s,
|
|
790
|
+
draftId: u
|
|
791
|
+
})), {
|
|
792
|
+
resourceZone: l
|
|
793
|
+
}),
|
|
794
|
+
d = {
|
|
795
|
+
method: "GET"
|
|
796
|
+
};
|
|
797
|
+
if (null == r.authentication || "browser-credentials-include" === r.authentication) d.credentials = "include";else if ("authSid" in r.authentication && null != r.authentication.authSid) {
|
|
798
|
+
var f;
|
|
799
|
+
d.credentials = "omit", d.headers = null !== (f = d.headers) && void 0 !== f ? f : {}, d.headers.Authorization = "AUTH.SID ".concat(r.authentication.authSid);
|
|
800
|
+
} else d.credentials = "omit";
|
|
801
|
+
var p = null !== (n = r.fetch) && void 0 !== n ? n : P;
|
|
802
|
+
p(c, d).then(function (e) {
|
|
803
|
+
return e.json();
|
|
804
|
+
}).then(function (o) {
|
|
805
|
+
var n,
|
|
806
|
+
a,
|
|
807
|
+
s,
|
|
808
|
+
u,
|
|
809
|
+
c = o.gfv,
|
|
810
|
+
d = o.engineVersion,
|
|
811
|
+
f = H(H(H({
|
|
812
|
+
authorized: S.Z.authorized,
|
|
813
|
+
cauldronApiUrl: S.Z.cauldronApiUrl,
|
|
814
|
+
isTestServer: S.Z.isTestServer,
|
|
815
|
+
renderCachingForIE8: S.Z.renderCachingForIE8,
|
|
816
|
+
normalizationOnServer: S.Z.normalizationOnServer,
|
|
817
|
+
normativeUrl: S.Z.normativeUrl,
|
|
818
|
+
resourcesVersion: S.Z.resourcesVersion,
|
|
819
|
+
konturDomains: S.Z.konturDomains
|
|
820
|
+
}, r), {}, {
|
|
821
|
+
abonId: r.abonId,
|
|
822
|
+
orgId: r.orgId,
|
|
823
|
+
userId: r.userId
|
|
824
|
+
}, o), {}, {
|
|
825
|
+
gfv: c,
|
|
826
|
+
isIndividual: o.isIndividual,
|
|
827
|
+
isForeign: o.isForeign,
|
|
828
|
+
engineVersion: d,
|
|
829
|
+
feedbackEnabled: null !== (n = r.feedbackEnabled) && void 0 !== n ? n : o.feedbackEnabled,
|
|
830
|
+
candyTourAvailable: o.candyTourAvailable,
|
|
831
|
+
eventEmitter: r.eventEmitter,
|
|
832
|
+
formInfo: o.formInfo,
|
|
833
|
+
printInfo: o.printInfo,
|
|
834
|
+
regions: o.regions,
|
|
835
|
+
hasTemplates: o.hasTemplates,
|
|
836
|
+
model: r.model,
|
|
837
|
+
isDisabledCleanForm: null !== (a = r.isDisabledCleanForm) && void 0 !== a && a,
|
|
838
|
+
isDisabledCloseButton: null !== (s = r.isDisabledCloseButton) && void 0 !== s && s,
|
|
839
|
+
isDisabledCloseAndSaveButton: null !== (u = r.isDisabledCloseAndSaveButton) && void 0 !== u && u,
|
|
840
|
+
resourceZone: l,
|
|
841
|
+
authentication: r.authentication
|
|
958
842
|
});
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
843
|
+
q({
|
|
844
|
+
gfv: f.gfv,
|
|
845
|
+
engineVersion: f.engineVersion,
|
|
846
|
+
resourceZone: f.resourceZone,
|
|
847
|
+
resourcesVersion: f.resourcesVersion,
|
|
848
|
+
theme: f.theme
|
|
849
|
+
}, function (o) {
|
|
850
|
+
if (!o && t.g.CF.entryPoint[c]) {
|
|
851
|
+
var n = z(d);
|
|
852
|
+
Z(e, H(H({}, f), {}, {
|
|
853
|
+
templatesApi: r.templatesApi,
|
|
854
|
+
renderForm: n
|
|
855
|
+
}), i);
|
|
856
|
+
} else i(new Error("dynamic loading is not supported for gfv ".concat(c)));
|
|
964
857
|
});
|
|
965
|
-
}
|
|
858
|
+
}).catch(i);
|
|
966
859
|
}
|
|
967
|
-
|
|
968
|
-
return target;
|
|
969
860
|
}
|
|
970
861
|
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
862
|
+
e = t.hmd(e), (O = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.enterModule : void 0) && O(e), "undefined" != typeof reactHotLoaderGlobal && reactHotLoaderGlobal.default.signature;
|
|
863
|
+
var W,
|
|
864
|
+
$,
|
|
865
|
+
X = {
|
|
866
|
+
start: K,
|
|
867
|
+
entryPoint: {},
|
|
868
|
+
partialRenderingForIE8: M("{partialRenderingForIE8}"),
|
|
869
|
+
keformsUrl: "{keformsUrl}"
|
|
870
|
+
};
|
|
871
|
+
t.g.CF = X, (W = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.default : void 0) && (W.register(G, "defaultCallback", "C:\\BuildAgent\\work\\forms-root\\Engine\\src\\Forms\\Client\\Client.ts"), W.register(M, "parseBool", "C:\\BuildAgent\\work\\forms-root\\Engine\\src\\Forms\\Client\\Client.ts"), W.register(D, "url", "C:\\BuildAgent\\work\\forms-root\\Engine\\src\\Forms\\Client\\Client.ts"), W.register(x, "buildUrl", "C:\\BuildAgent\\work\\forms-root\\Engine\\src\\Forms\\Client\\Client.ts"), W.register(N, "isAllowed", "C:\\BuildAgent\\work\\forms-root\\Engine\\src\\Forms\\Client\\Client.ts"), W.register(R, "getParameterByName", "C:\\BuildAgent\\work\\forms-root\\Engine\\src\\Forms\\Client\\Client.ts"), W.register(V, "runParallel", "C:\\BuildAgent\\work\\forms-root\\Engine\\src\\Forms\\Client\\Client.ts"), W.register(function (e, r) {
|
|
872
|
+
try {
|
|
873
|
+
var t,
|
|
874
|
+
o,
|
|
875
|
+
n,
|
|
876
|
+
i,
|
|
877
|
+
a,
|
|
878
|
+
s,
|
|
879
|
+
u,
|
|
880
|
+
l,
|
|
881
|
+
c,
|
|
882
|
+
d,
|
|
883
|
+
f = e.split(".").slice(0, 3).map(function (e) {
|
|
884
|
+
return parseInt(e, 10);
|
|
885
|
+
}),
|
|
886
|
+
p = r.split(".").slice(0, 3).map(function (e) {
|
|
887
|
+
return parseInt(e, 10);
|
|
978
888
|
});
|
|
979
|
-
|
|
980
|
-
|
|
889
|
+
return (null !== (t = f[0]) && void 0 !== t ? t : 0) > (null !== (o = p[0]) && void 0 !== o ? o : 0) || (null !== (n = f[0]) && void 0 !== n ? n : 0) === (null !== (i = p[0]) && void 0 !== i ? i : 0) && ((null !== (a = f[1]) && void 0 !== a ? a : 0) > (null !== (s = p[1]) && void 0 !== s ? s : 0) || (null !== (u = f[1]) && void 0 !== u ? u : 0) === (null !== (l = p[1]) && void 0 !== l ? l : 0) && (null !== (c = f[2]) && void 0 !== c ? c : 0) >= (null !== (d = p[2]) && void 0 !== d ? d : 0));
|
|
890
|
+
} catch (e) {
|
|
891
|
+
return !1;
|
|
981
892
|
}
|
|
893
|
+
}, "isEngineVersionGreaterThanOrEqual", "C:\\BuildAgent\\work\\forms-root\\Engine\\src\\Forms\\Client\\Client.ts"), W.register(q, "loadForm", "C:\\BuildAgent\\work\\forms-root\\Engine\\src\\Forms\\Client\\Client.ts"), W.register(Z, "renderForm", "C:\\BuildAgent\\work\\forms-root\\Engine\\src\\Forms\\Client\\Client.ts"), W.register(z, "getEngineEntryPoint", "C:\\BuildAgent\\work\\forms-root\\Engine\\src\\Forms\\Client\\Client.ts"), W.register(K, "start", "C:\\BuildAgent\\work\\forms-root\\Engine\\src\\Forms\\Client\\Client.ts"), W.register(X, "CandyClientExports", "C:\\BuildAgent\\work\\forms-root\\Engine\\src\\Forms\\Client\\Client.ts")), ($ = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.leaveModule : void 0) && $(e);
|
|
894
|
+
},
|
|
895
|
+
68: function (e, r, t) {
|
|
896
|
+
var o;
|
|
982
897
|
|
|
983
|
-
|
|
898
|
+
function n(e) {
|
|
899
|
+
return "string" == typeof e ? "false" !== e && "true" === e : Boolean(e);
|
|
984
900
|
}
|
|
985
901
|
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
|
|
902
|
+
t.d(r, {
|
|
903
|
+
Z: function () {
|
|
904
|
+
return s;
|
|
905
|
+
}
|
|
906
|
+
}), e = t.hmd(e), (o = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.enterModule : void 0) && o(e), "undefined" != typeof reactHotLoaderGlobal && reactHotLoaderGlobal.default.signature;
|
|
907
|
+
var i,
|
|
908
|
+
a,
|
|
909
|
+
s = {
|
|
910
|
+
authorized: n("{authorized}"),
|
|
911
|
+
cauldronApiUrl: "{cauldronApiUrl}",
|
|
912
|
+
isTestServer: n("{isTestServer}"),
|
|
913
|
+
renderCachingForIE8: n("{renderCachingForIE8}"),
|
|
914
|
+
normalizationOnServer: n("{normalizationOnServer}"),
|
|
915
|
+
normativeUrl: "{normativeUrl}",
|
|
916
|
+
resourcesVersion: "{resourcesVersion}",
|
|
917
|
+
konturDomains: "{konturDomains}"
|
|
918
|
+
};
|
|
919
|
+
(i = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.default : void 0) && (i.register(n, "parseBool", "C:\\BuildAgent\\work\\forms-root\\Engine\\src\\Forms\\Client\\ClientSettings.ts"), i.register(s, "clientSettings", "C:\\BuildAgent\\work\\forms-root\\Engine\\src\\Forms\\Client\\ClientSettings.ts")), (a = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.leaveModule : void 0) && a(e);
|
|
920
|
+
},
|
|
921
|
+
152: function (module, __webpack_exports__, __webpack_require__) {
|
|
922
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
923
|
+
P: function () {
|
|
924
|
+
return createLegacyPublicForm;
|
|
925
|
+
}
|
|
926
|
+
});
|
|
989
927
|
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
}
|
|
928
|
+
var _Common_Errors__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(556),
|
|
929
|
+
enterModule;
|
|
993
930
|
|
|
994
|
-
function
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
|
|
931
|
+
function _typeof(e) {
|
|
932
|
+
return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (e) {
|
|
933
|
+
return typeof e;
|
|
934
|
+
} : function (e) {
|
|
935
|
+
return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e;
|
|
936
|
+
}, _typeof(e);
|
|
1001
937
|
}
|
|
1002
938
|
|
|
1003
|
-
function
|
|
1004
|
-
if (
|
|
1005
|
-
|
|
1006
|
-
for (var i = 0, arr2 = new Array(len); i < len; i++) {
|
|
1007
|
-
arr2[i] = arr[i];
|
|
1008
|
-
}
|
|
1009
|
-
|
|
1010
|
-
return arr2;
|
|
939
|
+
function _classCallCheck(e, r) {
|
|
940
|
+
if (!(e instanceof r)) throw new TypeError("Cannot call a class as a function");
|
|
1011
941
|
}
|
|
1012
942
|
|
|
1013
|
-
function
|
|
1014
|
-
var
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
var _arr = [];
|
|
1018
|
-
var _n = true;
|
|
1019
|
-
var _d = false;
|
|
1020
|
-
|
|
1021
|
-
var _s, _e;
|
|
1022
|
-
|
|
1023
|
-
try {
|
|
1024
|
-
for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {
|
|
1025
|
-
_arr.push(_s.value);
|
|
1026
|
-
|
|
1027
|
-
if (i && _arr.length === i) break;
|
|
1028
|
-
}
|
|
1029
|
-
} catch (err) {
|
|
1030
|
-
_d = true;
|
|
1031
|
-
_e = err;
|
|
1032
|
-
} finally {
|
|
1033
|
-
try {
|
|
1034
|
-
if (!_n && _i["return"] != null) _i["return"]();
|
|
1035
|
-
} finally {
|
|
1036
|
-
if (_d) throw _e;
|
|
1037
|
-
}
|
|
943
|
+
function _defineProperties(e, r) {
|
|
944
|
+
for (var t = 0; t < r.length; t++) {
|
|
945
|
+
var o = r[t];
|
|
946
|
+
o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, o.key, o);
|
|
1038
947
|
}
|
|
1039
|
-
|
|
1040
|
-
return _arr;
|
|
1041
948
|
}
|
|
1042
949
|
|
|
1043
|
-
function
|
|
1044
|
-
|
|
950
|
+
function _createClass(e, r, t) {
|
|
951
|
+
return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), e;
|
|
1045
952
|
}
|
|
1046
953
|
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
-
};
|
|
1050
|
-
/* tslint:disable:no-null-keyword no-any no-unsafe-any */
|
|
954
|
+
function ownKeys(e, r) {
|
|
955
|
+
var t = Object.keys(e);
|
|
1051
956
|
|
|
957
|
+
if (Object.getOwnPropertySymbols) {
|
|
958
|
+
var o = Object.getOwnPropertySymbols(e);
|
|
959
|
+
r && (o = o.filter(function (r) {
|
|
960
|
+
return Object.getOwnPropertyDescriptor(e, r).enumerable;
|
|
961
|
+
})), t.push.apply(t, o);
|
|
962
|
+
}
|
|
1052
963
|
|
|
1053
|
-
|
|
1054
|
-
/* empty */
|
|
964
|
+
return t;
|
|
1055
965
|
}
|
|
1056
966
|
|
|
1057
|
-
function
|
|
1058
|
-
|
|
1059
|
-
|
|
1060
|
-
|
|
1061
|
-
|
|
1062
|
-
|
|
1063
|
-
|
|
1064
|
-
|
|
1065
|
-
}
|
|
1066
|
-
|
|
1067
|
-
return false;
|
|
967
|
+
function _objectSpread(e) {
|
|
968
|
+
for (var r = 1; r < arguments.length; r++) {
|
|
969
|
+
var t = null != arguments[r] ? arguments[r] : {};
|
|
970
|
+
r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {
|
|
971
|
+
_defineProperty(e, r, t[r]);
|
|
972
|
+
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {
|
|
973
|
+
Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));
|
|
974
|
+
});
|
|
1068
975
|
}
|
|
1069
976
|
|
|
1070
|
-
return
|
|
977
|
+
return e;
|
|
1071
978
|
}
|
|
1072
979
|
|
|
1073
|
-
function
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
980
|
+
function _defineProperty(e, r, t) {
|
|
981
|
+
return r in e ? Object.defineProperty(e, r, {
|
|
982
|
+
value: t,
|
|
983
|
+
enumerable: !0,
|
|
984
|
+
configurable: !0,
|
|
985
|
+
writable: !0
|
|
986
|
+
}) : e[r] = t, e;
|
|
1077
987
|
}
|
|
1078
988
|
|
|
1079
|
-
|
|
1080
|
-
if (params === undefined) {
|
|
1081
|
-
return path;
|
|
1082
|
-
}
|
|
1083
|
-
|
|
1084
|
-
var queryParts = [];
|
|
1085
|
-
|
|
1086
|
-
for (var _i = 0, _Object$keys = Object.keys(params); _i < _Object$keys.length; _i++) {
|
|
1087
|
-
var _paramName = _Object$keys[_i];
|
|
1088
|
-
var paramValue = params[_paramName];
|
|
989
|
+
module = __webpack_require__.hmd(module), enterModule = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.enterModule : void 0, enterModule && enterModule(module);
|
|
1089
990
|
|
|
1090
|
-
|
|
1091
|
-
|
|
1092
|
-
|
|
1093
|
-
}
|
|
991
|
+
var __signature__ = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.default.signature : function (e) {
|
|
992
|
+
return e;
|
|
993
|
+
};
|
|
1094
994
|
|
|
1095
|
-
|
|
1096
|
-
|
|
995
|
+
function modelChangeEventPath(e, r) {
|
|
996
|
+
if (null != r) {
|
|
997
|
+
if (null == e) throw new Error("Path must be defined");
|
|
998
|
+
return ["model", "change", e, r];
|
|
1097
999
|
}
|
|
1098
1000
|
|
|
1099
|
-
return
|
|
1001
|
+
return null != e ? ["model", "change", e] : ["model", "change"];
|
|
1100
1002
|
}
|
|
1101
1003
|
|
|
1102
|
-
function
|
|
1103
|
-
return
|
|
1004
|
+
function mapChunkValues(e) {
|
|
1005
|
+
return Object.keys(e).filter(function (r) {
|
|
1006
|
+
return e[r] && Object.prototype.hasOwnProperty.call(e[r], "value");
|
|
1007
|
+
}).map(function (r) {
|
|
1008
|
+
var t = e[r];
|
|
1009
|
+
return null == t ? {} : _defineProperty({}, r, t.value);
|
|
1010
|
+
});
|
|
1104
1011
|
}
|
|
1105
1012
|
|
|
1106
|
-
function
|
|
1107
|
-
return
|
|
1108
|
-
return
|
|
1109
|
-
})
|
|
1110
|
-
.find(function (_ref) {
|
|
1111
|
-
var _ref2 = _slicedToArray(_ref, 1),
|
|
1112
|
-
key = _ref2[0];
|
|
1113
|
-
|
|
1114
|
-
return key == name;
|
|
1115
|
-
}) || [])[1];
|
|
1013
|
+
function reduceChunkValues(e) {
|
|
1014
|
+
return e.reduce(function (e, r) {
|
|
1015
|
+
return _objectSpread(_objectSpread({}, e), r);
|
|
1016
|
+
}, {});
|
|
1116
1017
|
}
|
|
1117
1018
|
|
|
1118
|
-
function
|
|
1119
|
-
|
|
1120
|
-
|
|
1121
|
-
|
|
1122
|
-
if (completed === tasks.length) {
|
|
1123
|
-
return;
|
|
1124
|
-
}
|
|
1125
|
-
|
|
1126
|
-
if (error) {
|
|
1127
|
-
completed = tasks.length;
|
|
1128
|
-
callback(error);
|
|
1129
|
-
return;
|
|
1130
|
-
}
|
|
1131
|
-
|
|
1132
|
-
completed += 1;
|
|
1019
|
+
var LegacyPublicForm = function () {
|
|
1020
|
+
function LegacyPublicForm(e) {
|
|
1021
|
+
_classCallCheck(this, LegacyPublicForm), this.form = void 0, this.form = e;
|
|
1022
|
+
}
|
|
1133
1023
|
|
|
1134
|
-
|
|
1135
|
-
|
|
1136
|
-
|
|
1137
|
-
|
|
1138
|
-
});
|
|
1139
|
-
}
|
|
1140
|
-
|
|
1141
|
-
function isEngineVersionGreaterThanOrEqual(left, right) {
|
|
1142
|
-
try {
|
|
1143
|
-
var _leftNumbers$, _rightNumbers$, _leftNumbers$2, _rightNumbers$2, _leftNumbers$3, _rightNumbers$3, _leftNumbers$4, _rightNumbers$4, _leftNumbers$5, _rightNumbers$5;
|
|
1144
|
-
|
|
1145
|
-
var leftNumbers = left.split(".").slice(0, 3).map(function (x) {
|
|
1146
|
-
return parseInt(x, 10);
|
|
1147
|
-
});
|
|
1148
|
-
var rightNumbers = right.split(".").slice(0, 3).map(function (x) {
|
|
1149
|
-
return parseInt(x, 10);
|
|
1150
|
-
});
|
|
1151
|
-
return ((_leftNumbers$ = leftNumbers[0]) !== null && _leftNumbers$ !== void 0 ? _leftNumbers$ : 0) > ((_rightNumbers$ = rightNumbers[0]) !== null && _rightNumbers$ !== void 0 ? _rightNumbers$ : 0) || ((_leftNumbers$2 = leftNumbers[0]) !== null && _leftNumbers$2 !== void 0 ? _leftNumbers$2 : 0) === ((_rightNumbers$2 = rightNumbers[0]) !== null && _rightNumbers$2 !== void 0 ? _rightNumbers$2 : 0) && (((_leftNumbers$3 = leftNumbers[1]) !== null && _leftNumbers$3 !== void 0 ? _leftNumbers$3 : 0) > ((_rightNumbers$3 = rightNumbers[1]) !== null && _rightNumbers$3 !== void 0 ? _rightNumbers$3 : 0) || ((_leftNumbers$4 = leftNumbers[1]) !== null && _leftNumbers$4 !== void 0 ? _leftNumbers$4 : 0) === ((_rightNumbers$4 = rightNumbers[1]) !== null && _rightNumbers$4 !== void 0 ? _rightNumbers$4 : 0) && ((_leftNumbers$5 = leftNumbers[2]) !== null && _leftNumbers$5 !== void 0 ? _leftNumbers$5 : 0) >= ((_rightNumbers$5 = rightNumbers[2]) !== null && _rightNumbers$5 !== void 0 ? _rightNumbers$5 : 0));
|
|
1152
|
-
} catch (_unused) {
|
|
1153
|
-
return false;
|
|
1154
|
-
}
|
|
1155
|
-
}
|
|
1156
|
-
|
|
1157
|
-
function loadForm(settings, callback) {
|
|
1158
|
-
var gfv = settings.gfv,
|
|
1159
|
-
engineVersion = settings.engineVersion,
|
|
1160
|
-
resourcesVersion = settings.resourcesVersion;
|
|
1161
|
-
|
|
1162
|
-
if (__webpack_require__.g.CF.entryPoint[gfv]) {
|
|
1163
|
-
callback();
|
|
1164
|
-
return;
|
|
1165
|
-
}
|
|
1166
|
-
|
|
1167
|
-
var isNeedEngine = engineVersion && !__webpack_require__.g[engineVersion];
|
|
1168
|
-
var noStylesForGfv = false; // engineVersion != undefined && (isEngineVersionGreaterThanOrEqual(engineVersion, "4.214.0") || engineVersion === "local");
|
|
1169
|
-
|
|
1170
|
-
var needLoadStylesForGfv = !noStylesForGfv;
|
|
1171
|
-
var min = getParameterByName("debug") === "true" ? "" : ".min";
|
|
1172
|
-
var tasks = [];
|
|
1173
|
-
var params = {
|
|
1174
|
-
v: resourcesVersion,
|
|
1175
|
-
resourceZone: settings.resourceZone
|
|
1176
|
-
};
|
|
1177
|
-
|
|
1178
|
-
if (needLoadStylesForGfv) {
|
|
1179
|
-
tasks.push(function (cb) {
|
|
1180
|
-
return _Helpers_LoadIntoDocument__WEBPACK_IMPORTED_MODULE_2__.LoadIntoDocument.styleSheet(url(buildUrl("static/public/styles/".concat(gfv).concat(min, ".css"), params)), true, cb);
|
|
1181
|
-
});
|
|
1182
|
-
}
|
|
1183
|
-
|
|
1184
|
-
tasks.push(function (cb) {
|
|
1185
|
-
return _Helpers_LoadIntoDocument__WEBPACK_IMPORTED_MODULE_2__.LoadIntoDocument.script(url(buildUrl("static/public/scripts/".concat(gfv).concat(min, ".js"), params)), cb);
|
|
1186
|
-
});
|
|
1187
|
-
|
|
1188
|
-
if (isNeedEngine) {
|
|
1189
|
-
tasks.push(function (cb) {
|
|
1190
|
-
return _Helpers_LoadIntoDocument__WEBPACK_IMPORTED_MODULE_2__.LoadIntoDocument.styleSheet(url(buildUrl("static/public/styles/candy_".concat(engineVersion).concat(min, ".css"), params)), false, cb);
|
|
1191
|
-
}, function (cb) {
|
|
1192
|
-
return _Helpers_LoadIntoDocument__WEBPACK_IMPORTED_MODULE_2__.LoadIntoDocument.script(url(buildUrl("static/public/scripts/candy_".concat(engineVersion).concat(min, ".js"), params)), cb);
|
|
1193
|
-
});
|
|
1194
|
-
}
|
|
1195
|
-
|
|
1196
|
-
runParallel(tasks, callback);
|
|
1197
|
-
}
|
|
1198
|
-
|
|
1199
|
-
function renderForm(pageContent, extendedSettings, callback) {
|
|
1200
|
-
var _global$CF$entryPoint;
|
|
1201
|
-
|
|
1202
|
-
var formEntryPoint = (_global$CF$entryPoint = __webpack_require__.g.CF.entryPoint[extendedSettings.gfv]) !== null && _global$CF$entryPoint !== void 0 ? _global$CF$entryPoint : (0, _Common_TypingUtils__WEBPACK_IMPORTED_MODULE_1__.reject)("Form entry point ".concat(extendedSettings.gfv, " not found."));
|
|
1203
|
-
formEntryPoint(pageContent, extendedSettings).then(function (form) {
|
|
1204
|
-
var publicForm = form.publicForm || (0, _LegacyPublicForm_CreateLegacyPublicForm__WEBPACK_IMPORTED_MODULE_5__.createLegacyPublicForm)(form);
|
|
1205
|
-
callback(null, publicForm);
|
|
1206
|
-
})["catch"](callback);
|
|
1207
|
-
}
|
|
1208
|
-
|
|
1209
|
-
function getEngineEntryPoint(engineVersion) {
|
|
1210
|
-
if (engineVersion == undefined) {
|
|
1211
|
-
return undefined;
|
|
1212
|
-
} // eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
|
1213
|
-
|
|
1214
|
-
|
|
1215
|
-
return __webpack_require__.g[engineVersion] && __webpack_require__.g[engineVersion]["default"];
|
|
1216
|
-
}
|
|
1217
|
-
|
|
1218
|
-
function start(pageContent, options) {
|
|
1219
|
-
var _options$resourceZone, _options$fetch;
|
|
1220
|
-
|
|
1221
|
-
var callback = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : defaultCallback;
|
|
1222
|
-
var error = null;
|
|
1223
|
-
var ns = options.ns,
|
|
1224
|
-
draftId = options.draftId;
|
|
1225
|
-
|
|
1226
|
-
if (!isAllowed(_ClientSettings__WEBPACK_IMPORTED_MODULE_4__.clientSettings.konturDomains)) {
|
|
1227
|
-
error = new Error("domain.untrusted");
|
|
1228
|
-
} else if (!_ClientSettings__WEBPACK_IMPORTED_MODULE_4__.clientSettings.authorized) {
|
|
1229
|
-
error = new Error("user.unauthenticated");
|
|
1230
|
-
} else if (!draftId) {
|
|
1231
|
-
error = new Error("options.draftId is required");
|
|
1232
|
-
} else if (!ns) {
|
|
1233
|
-
error = new Error("options.ns is required");
|
|
1234
|
-
}
|
|
1235
|
-
|
|
1236
|
-
if (error) {
|
|
1237
|
-
callback(error);
|
|
1238
|
-
return;
|
|
1239
|
-
}
|
|
1240
|
-
|
|
1241
|
-
var resourceZone = (_options$resourceZone = options.resourceZone) !== null && _options$resourceZone !== void 0 ? _options$resourceZone : getParameterByName("resourceZone");
|
|
1242
|
-
var clientDraftUrl = buildUrl(url((0, _Common_CandyApiClient_ClientDraftInfo_GetClientDraftInfoUrl__WEBPACK_IMPORTED_MODULE_3__.getClientDraftInfoUrl)({
|
|
1243
|
-
ns: ns,
|
|
1244
|
-
draftId: draftId
|
|
1245
|
-
})), {
|
|
1246
|
-
resourceZone: resourceZone
|
|
1247
|
-
});
|
|
1248
|
-
var requestOptions = {
|
|
1249
|
-
method: "GET"
|
|
1250
|
-
};
|
|
1251
|
-
|
|
1252
|
-
if (options.authentication == undefined || options.authentication === "browser-credentials-include") {
|
|
1253
|
-
requestOptions.credentials = "include";
|
|
1254
|
-
} else if ("authSid" in options.authentication && options.authentication.authSid != undefined) {
|
|
1255
|
-
var _requestOptions$heade;
|
|
1256
|
-
|
|
1257
|
-
requestOptions.credentials = "omit";
|
|
1258
|
-
requestOptions.headers = (_requestOptions$heade = requestOptions.headers) !== null && _requestOptions$heade !== void 0 ? _requestOptions$heade : {};
|
|
1259
|
-
requestOptions.headers["Authorization"] = "AUTH.SID ".concat(options.authentication.authSid);
|
|
1260
|
-
} else {
|
|
1261
|
-
requestOptions.credentials = "omit";
|
|
1262
|
-
}
|
|
1263
|
-
|
|
1264
|
-
var fetchImpl = (_options$fetch = options.fetch) !== null && _options$fetch !== void 0 ? _options$fetch : whatwg_fetch__WEBPACK_IMPORTED_MODULE_0__.fetch;
|
|
1265
|
-
fetchImpl(clientDraftUrl, requestOptions).then(function (x) {
|
|
1266
|
-
return x.json();
|
|
1267
|
-
}).then(function (clientDraftInfo) {
|
|
1268
|
-
var _options$feedbackEnab, _options$isDisabledCl, _options$isDisabledCl2, _options$isDisabledCl3;
|
|
1269
|
-
|
|
1270
|
-
var gfv = clientDraftInfo.gfv;
|
|
1271
|
-
var engineVersion = clientDraftInfo.engineVersion;
|
|
1272
|
-
|
|
1273
|
-
var extendedSettings = _objectSpread(_objectSpread(_objectSpread({
|
|
1274
|
-
authorized: _ClientSettings__WEBPACK_IMPORTED_MODULE_4__.clientSettings.authorized,
|
|
1275
|
-
cauldronApiUrl: _ClientSettings__WEBPACK_IMPORTED_MODULE_4__.clientSettings.cauldronApiUrl,
|
|
1276
|
-
isTestServer: _ClientSettings__WEBPACK_IMPORTED_MODULE_4__.clientSettings.isTestServer,
|
|
1277
|
-
renderCachingForIE8: _ClientSettings__WEBPACK_IMPORTED_MODULE_4__.clientSettings.renderCachingForIE8,
|
|
1278
|
-
normalizationOnServer: _ClientSettings__WEBPACK_IMPORTED_MODULE_4__.clientSettings.normalizationOnServer,
|
|
1279
|
-
normativeUrl: _ClientSettings__WEBPACK_IMPORTED_MODULE_4__.clientSettings.normativeUrl,
|
|
1280
|
-
resourcesVersion: _ClientSettings__WEBPACK_IMPORTED_MODULE_4__.clientSettings.resourcesVersion,
|
|
1281
|
-
konturDomains: _ClientSettings__WEBPACK_IMPORTED_MODULE_4__.clientSettings.konturDomains
|
|
1282
|
-
}, options), {}, {
|
|
1283
|
-
abonId: options.abonId,
|
|
1284
|
-
orgId: options.orgId,
|
|
1285
|
-
userId: options.userId
|
|
1286
|
-
}, clientDraftInfo), {}, {
|
|
1287
|
-
gfv: gfv,
|
|
1288
|
-
isIndividual: clientDraftInfo.isIndividual,
|
|
1289
|
-
isForeign: clientDraftInfo.isForeign,
|
|
1290
|
-
engineVersion: engineVersion,
|
|
1291
|
-
feedbackEnabled: (_options$feedbackEnab = options.feedbackEnabled) !== null && _options$feedbackEnab !== void 0 ? _options$feedbackEnab : clientDraftInfo.feedbackEnabled,
|
|
1292
|
-
candyTourAvailable: clientDraftInfo.candyTourAvailable,
|
|
1293
|
-
eventEmitter: options.eventEmitter,
|
|
1294
|
-
formInfo: clientDraftInfo.formInfo,
|
|
1295
|
-
printInfo: clientDraftInfo.printInfo,
|
|
1296
|
-
regions: clientDraftInfo.regions,
|
|
1297
|
-
hasTemplates: clientDraftInfo.hasTemplates,
|
|
1298
|
-
model: options.model,
|
|
1299
|
-
isDisabledCleanForm: (_options$isDisabledCl = options.isDisabledCleanForm) !== null && _options$isDisabledCl !== void 0 ? _options$isDisabledCl : false,
|
|
1300
|
-
isDisabledCloseButton: (_options$isDisabledCl2 = options.isDisabledCloseButton) !== null && _options$isDisabledCl2 !== void 0 ? _options$isDisabledCl2 : false,
|
|
1301
|
-
isDisabledCloseAndSaveButton: (_options$isDisabledCl3 = options.isDisabledCloseAndSaveButton) !== null && _options$isDisabledCl3 !== void 0 ? _options$isDisabledCl3 : false,
|
|
1302
|
-
resourceZone: resourceZone,
|
|
1303
|
-
authentication: options.authentication
|
|
1304
|
-
});
|
|
1305
|
-
|
|
1306
|
-
loadForm({
|
|
1307
|
-
gfv: extendedSettings.gfv,
|
|
1308
|
-
engineVersion: extendedSettings.engineVersion,
|
|
1309
|
-
resourceZone: extendedSettings.resourceZone,
|
|
1310
|
-
resourcesVersion: extendedSettings.resourcesVersion,
|
|
1311
|
-
theme: extendedSettings.theme
|
|
1312
|
-
}, function (loadError) {
|
|
1313
|
-
if (loadError || !__webpack_require__.g.CF.entryPoint[gfv]) {
|
|
1314
|
-
callback(new Error("dynamic loading is not supported for gfv ".concat(gfv)));
|
|
1315
|
-
return;
|
|
1316
|
-
}
|
|
1317
|
-
|
|
1318
|
-
var render = getEngineEntryPoint(engineVersion);
|
|
1319
|
-
renderForm(pageContent, _objectSpread(_objectSpread({}, extendedSettings), {}, {
|
|
1320
|
-
templatesApi: options.templatesApi,
|
|
1321
|
-
renderForm: render
|
|
1322
|
-
}), callback);
|
|
1323
|
-
});
|
|
1324
|
-
})["catch"](callback);
|
|
1325
|
-
}
|
|
1326
|
-
|
|
1327
|
-
var CandyClientExports = {
|
|
1328
|
-
start: start,
|
|
1329
|
-
entryPoint: {},
|
|
1330
|
-
partialRenderingForIE8: parseBool("{partialRenderingForIE8}"),
|
|
1331
|
-
keformsUrl: "{keformsUrl}"
|
|
1332
|
-
};
|
|
1333
|
-
__webpack_require__.g.CF = CandyClientExports;
|
|
1334
|
-
;
|
|
1335
|
-
|
|
1336
|
-
(function () {
|
|
1337
|
-
var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;
|
|
1338
|
-
|
|
1339
|
-
if (!reactHotLoader) {
|
|
1340
|
-
return;
|
|
1341
|
-
}
|
|
1342
|
-
|
|
1343
|
-
reactHotLoader.register(defaultCallback, "defaultCallback", "C:\\buildAgent\\work\\8df8f1edd755969c\\Engine\\src\\Forms\\Client\\Client.ts");
|
|
1344
|
-
reactHotLoader.register(parseBool, "parseBool", "C:\\buildAgent\\work\\8df8f1edd755969c\\Engine\\src\\Forms\\Client\\Client.ts");
|
|
1345
|
-
reactHotLoader.register(url, "url", "C:\\buildAgent\\work\\8df8f1edd755969c\\Engine\\src\\Forms\\Client\\Client.ts");
|
|
1346
|
-
reactHotLoader.register(buildUrl, "buildUrl", "C:\\buildAgent\\work\\8df8f1edd755969c\\Engine\\src\\Forms\\Client\\Client.ts");
|
|
1347
|
-
reactHotLoader.register(isAllowed, "isAllowed", "C:\\buildAgent\\work\\8df8f1edd755969c\\Engine\\src\\Forms\\Client\\Client.ts");
|
|
1348
|
-
reactHotLoader.register(getParameterByName, "getParameterByName", "C:\\buildAgent\\work\\8df8f1edd755969c\\Engine\\src\\Forms\\Client\\Client.ts");
|
|
1349
|
-
reactHotLoader.register(runParallel, "runParallel", "C:\\buildAgent\\work\\8df8f1edd755969c\\Engine\\src\\Forms\\Client\\Client.ts");
|
|
1350
|
-
reactHotLoader.register(isEngineVersionGreaterThanOrEqual, "isEngineVersionGreaterThanOrEqual", "C:\\buildAgent\\work\\8df8f1edd755969c\\Engine\\src\\Forms\\Client\\Client.ts");
|
|
1351
|
-
reactHotLoader.register(loadForm, "loadForm", "C:\\buildAgent\\work\\8df8f1edd755969c\\Engine\\src\\Forms\\Client\\Client.ts");
|
|
1352
|
-
reactHotLoader.register(renderForm, "renderForm", "C:\\buildAgent\\work\\8df8f1edd755969c\\Engine\\src\\Forms\\Client\\Client.ts");
|
|
1353
|
-
reactHotLoader.register(getEngineEntryPoint, "getEngineEntryPoint", "C:\\buildAgent\\work\\8df8f1edd755969c\\Engine\\src\\Forms\\Client\\Client.ts");
|
|
1354
|
-
reactHotLoader.register(start, "start", "C:\\buildAgent\\work\\8df8f1edd755969c\\Engine\\src\\Forms\\Client\\Client.ts");
|
|
1355
|
-
reactHotLoader.register(CandyClientExports, "CandyClientExports", "C:\\buildAgent\\work\\8df8f1edd755969c\\Engine\\src\\Forms\\Client\\Client.ts");
|
|
1356
|
-
})();
|
|
1357
|
-
|
|
1358
|
-
;
|
|
1359
|
-
|
|
1360
|
-
(function () {
|
|
1361
|
-
var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;
|
|
1362
|
-
leaveModule && leaveModule(module);
|
|
1363
|
-
})();
|
|
1364
|
-
/***/
|
|
1365
|
-
|
|
1366
|
-
},
|
|
1367
|
-
|
|
1368
|
-
/***/
|
|
1369
|
-
"./Engine/src/Forms/Client/ClientSettings.ts":
|
|
1370
|
-
/*!***************************************************!*\
|
|
1371
|
-
!*** ./Engine/src/Forms/Client/ClientSettings.ts ***!
|
|
1372
|
-
\***************************************************/
|
|
1373
|
-
|
|
1374
|
-
/***/
|
|
1375
|
-
function (module, __webpack_exports__, __webpack_require__) {
|
|
1376
|
-
__webpack_require__.r(__webpack_exports__);
|
|
1377
|
-
/* harmony export */
|
|
1378
|
-
|
|
1379
|
-
|
|
1380
|
-
__webpack_require__.d(__webpack_exports__, {
|
|
1381
|
-
/* harmony export */
|
|
1382
|
-
"clientSettings": function () {
|
|
1383
|
-
return (
|
|
1384
|
-
/* binding */
|
|
1385
|
-
clientSettings
|
|
1386
|
-
);
|
|
1387
|
-
}
|
|
1388
|
-
/* harmony export */
|
|
1389
|
-
|
|
1390
|
-
});
|
|
1391
|
-
/* module decorator */
|
|
1392
|
-
|
|
1393
|
-
|
|
1394
|
-
module = __webpack_require__.hmd(module);
|
|
1395
|
-
|
|
1396
|
-
(function () {
|
|
1397
|
-
var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;
|
|
1398
|
-
enterModule && enterModule(module);
|
|
1399
|
-
})();
|
|
1400
|
-
|
|
1401
|
-
var __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal["default"].signature : function (a) {
|
|
1402
|
-
return a;
|
|
1403
|
-
};
|
|
1404
|
-
|
|
1405
|
-
function parseBool(value) {
|
|
1406
|
-
if (typeof value === "string") {
|
|
1407
|
-
if (value === "false") {
|
|
1408
|
-
return false;
|
|
1409
|
-
}
|
|
1410
|
-
|
|
1411
|
-
if (value === "true") {
|
|
1412
|
-
return true;
|
|
1413
|
-
}
|
|
1414
|
-
|
|
1415
|
-
return false;
|
|
1416
|
-
}
|
|
1417
|
-
|
|
1418
|
-
return Boolean(value);
|
|
1419
|
-
}
|
|
1420
|
-
|
|
1421
|
-
var clientSettings = {
|
|
1422
|
-
authorized: parseBool("{authorized}"),
|
|
1423
|
-
cauldronApiUrl: "{cauldronApiUrl}",
|
|
1424
|
-
isTestServer: parseBool("{isTestServer}"),
|
|
1425
|
-
renderCachingForIE8: parseBool("{renderCachingForIE8}"),
|
|
1426
|
-
normalizationOnServer: parseBool("{normalizationOnServer}"),
|
|
1427
|
-
normativeUrl: "{normativeUrl}",
|
|
1428
|
-
resourcesVersion: "{resourcesVersion}",
|
|
1429
|
-
konturDomains: "{konturDomains}"
|
|
1430
|
-
};
|
|
1431
|
-
;
|
|
1432
|
-
|
|
1433
|
-
(function () {
|
|
1434
|
-
var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;
|
|
1435
|
-
|
|
1436
|
-
if (!reactHotLoader) {
|
|
1437
|
-
return;
|
|
1438
|
-
}
|
|
1439
|
-
|
|
1440
|
-
reactHotLoader.register(parseBool, "parseBool", "C:\\buildAgent\\work\\8df8f1edd755969c\\Engine\\src\\Forms\\Client\\ClientSettings.ts");
|
|
1441
|
-
reactHotLoader.register(clientSettings, "clientSettings", "C:\\buildAgent\\work\\8df8f1edd755969c\\Engine\\src\\Forms\\Client\\ClientSettings.ts");
|
|
1442
|
-
})();
|
|
1443
|
-
|
|
1444
|
-
;
|
|
1445
|
-
|
|
1446
|
-
(function () {
|
|
1447
|
-
var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;
|
|
1448
|
-
leaveModule && leaveModule(module);
|
|
1449
|
-
})();
|
|
1450
|
-
/***/
|
|
1451
|
-
|
|
1452
|
-
},
|
|
1453
|
-
|
|
1454
|
-
/***/
|
|
1455
|
-
"./Engine/src/Forms/Client/LegacyPublicForm/CreateLegacyPublicForm.ts":
|
|
1456
|
-
/*!****************************************************************************!*\
|
|
1457
|
-
!*** ./Engine/src/Forms/Client/LegacyPublicForm/CreateLegacyPublicForm.ts ***!
|
|
1458
|
-
\****************************************************************************/
|
|
1459
|
-
|
|
1460
|
-
/***/
|
|
1461
|
-
function (module, __webpack_exports__, __webpack_require__) {
|
|
1462
|
-
__webpack_require__.r(__webpack_exports__);
|
|
1463
|
-
/* harmony export */
|
|
1464
|
-
|
|
1465
|
-
|
|
1466
|
-
__webpack_require__.d(__webpack_exports__, {
|
|
1467
|
-
/* harmony export */
|
|
1468
|
-
"modelChangeEventPath": function () {
|
|
1469
|
-
return (
|
|
1470
|
-
/* binding */
|
|
1471
|
-
modelChangeEventPath
|
|
1472
|
-
);
|
|
1473
|
-
},
|
|
1474
|
-
|
|
1475
|
-
/* harmony export */
|
|
1476
|
-
"createLegacyPublicForm": function () {
|
|
1477
|
-
return (
|
|
1478
|
-
/* binding */
|
|
1479
|
-
createLegacyPublicForm
|
|
1480
|
-
);
|
|
1481
|
-
}
|
|
1482
|
-
/* harmony export */
|
|
1483
|
-
|
|
1484
|
-
});
|
|
1485
|
-
/* harmony import */
|
|
1486
|
-
|
|
1487
|
-
|
|
1488
|
-
var _Common_Errors__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(
|
|
1489
|
-
/*! ../../../../../Common/Errors */
|
|
1490
|
-
"./Common/Errors.ts");
|
|
1491
|
-
/* module decorator */
|
|
1492
|
-
|
|
1493
|
-
|
|
1494
|
-
module = __webpack_require__.hmd(module);
|
|
1495
|
-
|
|
1496
|
-
(function () {
|
|
1497
|
-
var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;
|
|
1498
|
-
enterModule && enterModule(module);
|
|
1499
|
-
})();
|
|
1500
|
-
|
|
1501
|
-
function _typeof(obj) {
|
|
1502
|
-
"@babel/helpers - typeof";
|
|
1503
|
-
|
|
1504
|
-
if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
|
|
1505
|
-
_typeof = function _typeof(obj) {
|
|
1506
|
-
return typeof obj;
|
|
1507
|
-
};
|
|
1508
|
-
} else {
|
|
1509
|
-
_typeof = function _typeof(obj) {
|
|
1510
|
-
return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
|
|
1511
|
-
};
|
|
1512
|
-
}
|
|
1513
|
-
|
|
1514
|
-
return _typeof(obj);
|
|
1515
|
-
}
|
|
1516
|
-
|
|
1517
|
-
function _classCallCheck(instance, Constructor) {
|
|
1518
|
-
if (!(instance instanceof Constructor)) {
|
|
1519
|
-
throw new TypeError("Cannot call a class as a function");
|
|
1520
|
-
}
|
|
1521
|
-
}
|
|
1522
|
-
|
|
1523
|
-
function _defineProperties(target, props) {
|
|
1524
|
-
for (var i = 0; i < props.length; i++) {
|
|
1525
|
-
var descriptor = props[i];
|
|
1526
|
-
descriptor.enumerable = descriptor.enumerable || false;
|
|
1527
|
-
descriptor.configurable = true;
|
|
1528
|
-
if ("value" in descriptor) descriptor.writable = true;
|
|
1529
|
-
Object.defineProperty(target, descriptor.key, descriptor);
|
|
1530
|
-
}
|
|
1531
|
-
}
|
|
1532
|
-
|
|
1533
|
-
function _createClass(Constructor, protoProps, staticProps) {
|
|
1534
|
-
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
|
|
1535
|
-
if (staticProps) _defineProperties(Constructor, staticProps);
|
|
1536
|
-
return Constructor;
|
|
1537
|
-
}
|
|
1538
|
-
|
|
1539
|
-
function ownKeys(object, enumerableOnly) {
|
|
1540
|
-
var keys = Object.keys(object);
|
|
1541
|
-
|
|
1542
|
-
if (Object.getOwnPropertySymbols) {
|
|
1543
|
-
var symbols = Object.getOwnPropertySymbols(object);
|
|
1544
|
-
|
|
1545
|
-
if (enumerableOnly) {
|
|
1546
|
-
symbols = symbols.filter(function (sym) {
|
|
1547
|
-
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
|
|
1548
|
-
});
|
|
1549
|
-
}
|
|
1550
|
-
|
|
1551
|
-
keys.push.apply(keys, symbols);
|
|
1552
|
-
}
|
|
1553
|
-
|
|
1554
|
-
return keys;
|
|
1555
|
-
}
|
|
1556
|
-
|
|
1557
|
-
function _objectSpread(target) {
|
|
1558
|
-
for (var i = 1; i < arguments.length; i++) {
|
|
1559
|
-
var source = arguments[i] != null ? arguments[i] : {};
|
|
1560
|
-
|
|
1561
|
-
if (i % 2) {
|
|
1562
|
-
ownKeys(Object(source), true).forEach(function (key) {
|
|
1563
|
-
_defineProperty(target, key, source[key]);
|
|
1564
|
-
});
|
|
1565
|
-
} else if (Object.getOwnPropertyDescriptors) {
|
|
1566
|
-
Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
|
|
1567
|
-
} else {
|
|
1568
|
-
ownKeys(Object(source)).forEach(function (key) {
|
|
1569
|
-
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
|
|
1570
|
-
});
|
|
1571
|
-
}
|
|
1572
|
-
}
|
|
1573
|
-
|
|
1574
|
-
return target;
|
|
1575
|
-
}
|
|
1576
|
-
|
|
1577
|
-
function _defineProperty(obj, key, value) {
|
|
1578
|
-
if (key in obj) {
|
|
1579
|
-
Object.defineProperty(obj, key, {
|
|
1580
|
-
value: value,
|
|
1581
|
-
enumerable: true,
|
|
1582
|
-
configurable: true,
|
|
1583
|
-
writable: true
|
|
1584
|
-
});
|
|
1585
|
-
} else {
|
|
1586
|
-
obj[key] = value;
|
|
1587
|
-
}
|
|
1588
|
-
|
|
1589
|
-
return obj;
|
|
1590
|
-
}
|
|
1591
|
-
|
|
1592
|
-
var __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal["default"].signature : function (a) {
|
|
1593
|
-
return a;
|
|
1594
|
-
};
|
|
1595
|
-
|
|
1596
|
-
function modelChangeEventPath(path, fieldName) {
|
|
1597
|
-
if (fieldName != undefined) {
|
|
1598
|
-
if (path == undefined) {
|
|
1599
|
-
throw new Error("Path must be defined");
|
|
1600
|
-
}
|
|
1601
|
-
|
|
1602
|
-
return ["model", "change", path, fieldName];
|
|
1603
|
-
}
|
|
1604
|
-
|
|
1605
|
-
if (path != undefined) {
|
|
1606
|
-
return ["model", "change", path];
|
|
1607
|
-
}
|
|
1608
|
-
|
|
1609
|
-
return ["model", "change"];
|
|
1610
|
-
}
|
|
1611
|
-
|
|
1612
|
-
function mapChunkValues(chunk) {
|
|
1613
|
-
return Object.keys(chunk).filter(function (path) {
|
|
1614
|
-
return chunk[path] && Object.prototype.hasOwnProperty.call(chunk[path], "value");
|
|
1615
|
-
}).map(function (path) {
|
|
1616
|
-
var result = chunk[path];
|
|
1617
|
-
|
|
1618
|
-
if (result == undefined) {
|
|
1619
|
-
return {};
|
|
1024
|
+
return _createClass(LegacyPublicForm, [{
|
|
1025
|
+
key: "batchUpdate",
|
|
1026
|
+
value: function (e) {
|
|
1027
|
+
throw new Error("Method not implemented.");
|
|
1620
1028
|
}
|
|
1621
|
-
|
|
1622
|
-
return _defineProperty({}, path, result.value);
|
|
1623
|
-
});
|
|
1624
|
-
}
|
|
1625
|
-
|
|
1626
|
-
function reduceChunkValues(chunks) {
|
|
1627
|
-
return chunks.reduce(function (result, chunk) {
|
|
1628
|
-
return _objectSpread(_objectSpread({}, result), chunk);
|
|
1629
|
-
}, {});
|
|
1630
|
-
}
|
|
1631
|
-
|
|
1632
|
-
var LegacyPublicForm = /*#__PURE__*/function () {
|
|
1633
|
-
function LegacyPublicForm(form) {
|
|
1634
|
-
_classCallCheck(this, LegacyPublicForm);
|
|
1635
|
-
|
|
1636
|
-
this.form = void 0;
|
|
1637
|
-
this.form = form;
|
|
1638
|
-
}
|
|
1639
|
-
|
|
1640
|
-
_createClass(LegacyPublicForm, [{
|
|
1029
|
+
}, {
|
|
1641
1030
|
key: "runCheck",
|
|
1642
|
-
value: function
|
|
1031
|
+
value: function () {
|
|
1643
1032
|
throw new Error("Method not implemented.");
|
|
1644
1033
|
}
|
|
1645
1034
|
}, {
|
|
1646
1035
|
key: "setErrorLog",
|
|
1647
|
-
value: function
|
|
1036
|
+
value: function (e) {
|
|
1648
1037
|
throw new Error("Method not implemented.");
|
|
1649
1038
|
}
|
|
1650
1039
|
}, {
|
|
1651
1040
|
key: "__INTERNAL__importFromEmployeeService",
|
|
1652
|
-
value: function
|
|
1041
|
+
value: function () {
|
|
1653
1042
|
throw new Error("Method not implemented.");
|
|
1654
1043
|
}
|
|
1655
1044
|
}, {
|
|
1656
1045
|
key: "getByGId",
|
|
1657
|
-
value: function
|
|
1658
|
-
return this.form.picklistsProvider.getDigestApiPicklist(
|
|
1046
|
+
value: function (e, r) {
|
|
1047
|
+
return this.form.picklistsProvider.getDigestApiPicklist(e).query(r);
|
|
1659
1048
|
}
|
|
1660
1049
|
}, {
|
|
1661
1050
|
key: "on",
|
|
1662
|
-
value: function
|
|
1663
|
-
this.form.eventManager.on(["form",
|
|
1051
|
+
value: function (e, r) {
|
|
1052
|
+
this.form.eventManager.on(["form", e], r);
|
|
1664
1053
|
}
|
|
1665
1054
|
}, {
|
|
1666
1055
|
key: "off",
|
|
1667
|
-
value: function
|
|
1668
|
-
this.form.eventManager.off(["form",
|
|
1056
|
+
value: function (e, r) {
|
|
1057
|
+
this.form.eventManager.off(["form", e], r);
|
|
1669
1058
|
}
|
|
1670
1059
|
}, {
|
|
1671
1060
|
key: "onModelChange",
|
|
1672
|
-
value: function
|
|
1673
|
-
// eslint-disable-next-line no-console
|
|
1061
|
+
value: function (e, r) {
|
|
1674
1062
|
console.error("form.onModelChange() is not supported yet");
|
|
1675
1063
|
}
|
|
1676
1064
|
}, {
|
|
1677
1065
|
key: "offModelChange",
|
|
1678
|
-
value: function
|
|
1679
|
-
// eslint-disable-next-line no-console
|
|
1066
|
+
value: function (e, r) {
|
|
1680
1067
|
console.error("form.offModelChange() is not supported yet");
|
|
1681
1068
|
}
|
|
1682
1069
|
}, {
|
|
1683
1070
|
key: "save",
|
|
1684
|
-
value: function
|
|
1071
|
+
value: function () {
|
|
1685
1072
|
return this.form.changeSet.send();
|
|
1686
1073
|
}
|
|
1687
1074
|
}, {
|
|
1688
1075
|
key: "close",
|
|
1689
|
-
value: function
|
|
1690
|
-
this.form.changeSet.stopAutosend();
|
|
1691
|
-
|
|
1692
|
-
if (this.form.unmount) {
|
|
1693
|
-
this.form.unmount();
|
|
1694
|
-
}
|
|
1695
|
-
|
|
1696
|
-
return this.form.changeSet.send();
|
|
1076
|
+
value: function () {
|
|
1077
|
+
return this.form.changeSet.stopAutosend(), this.form.unmount && this.form.unmount(), this.form.changeSet.send();
|
|
1697
1078
|
}
|
|
1698
1079
|
}, {
|
|
1699
1080
|
key: "getTourSteps",
|
|
1700
|
-
value: function
|
|
1701
|
-
// For old keweb
|
|
1081
|
+
value: function () {
|
|
1702
1082
|
return [];
|
|
1703
1083
|
}
|
|
1704
1084
|
}, {
|
|
1705
1085
|
key: "validate",
|
|
1706
|
-
value: function
|
|
1707
|
-
var
|
|
1708
|
-
|
|
1709
|
-
|
|
1710
|
-
return this.form.validator.validateAll(keys);
|
|
1086
|
+
value: function () {
|
|
1087
|
+
var e = Object.keys(this.form.model.getChunk(this.form.settings.formRoot));
|
|
1088
|
+
return this.form.validator.validateAll(e);
|
|
1711
1089
|
}
|
|
1712
1090
|
}, {
|
|
1713
1091
|
key: "hasErrors",
|
|
1714
|
-
value: function
|
|
1715
|
-
var
|
|
1716
|
-
return
|
|
1092
|
+
value: function () {
|
|
1093
|
+
var e = this.form.model.get(this.form.settings.formRoot, "errorsCount");
|
|
1094
|
+
return null != e && e > 0;
|
|
1717
1095
|
}
|
|
1718
1096
|
}, {
|
|
1719
1097
|
key: "onErrorsCountChanged",
|
|
1720
|
-
value: function
|
|
1721
|
-
this.form.eventManager.on(modelChangeEventPath(this.form.settings.formRoot, "errorsCount"),
|
|
1098
|
+
value: function (e) {
|
|
1099
|
+
this.form.eventManager.on(modelChangeEventPath(this.form.settings.formRoot, "errorsCount"), e);
|
|
1722
1100
|
}
|
|
1723
1101
|
}, {
|
|
1724
1102
|
key: "offErrorsCountChanged",
|
|
1725
|
-
value: function
|
|
1726
|
-
this.form.eventManager.off(modelChangeEventPath(this.form.settings.formRoot, "errorsCount"),
|
|
1103
|
+
value: function (e) {
|
|
1104
|
+
this.form.eventManager.off(modelChangeEventPath(this.form.settings.formRoot, "errorsCount"), e);
|
|
1727
1105
|
}
|
|
1728
1106
|
}, {
|
|
1729
1107
|
key: "set",
|
|
1730
|
-
value: function
|
|
1731
|
-
if (
|
|
1732
|
-
|
|
1733
|
-
|
|
1734
|
-
|
|
1735
|
-
|
|
1108
|
+
value: function (e, r) {
|
|
1109
|
+
if (null === e || "string" == typeof e || "object" !== _typeof(e) || Array.isArray(e)) {
|
|
1110
|
+
if ("string" != typeof e) throw new Error("form.set() parameter should be string path or object with path-value pairs");
|
|
1111
|
+
this.form.model.set(e, "value", r);
|
|
1112
|
+
} else {
|
|
1113
|
+
var t = Object.keys(e).reduce(function (r, t) {
|
|
1114
|
+
return _objectSpread(_defineProperty({}, t, {
|
|
1115
|
+
value: e[t]
|
|
1116
|
+
}), r);
|
|
1736
1117
|
}, {});
|
|
1737
|
-
this.form.model.fill(
|
|
1738
|
-
return;
|
|
1739
|
-
}
|
|
1740
|
-
|
|
1741
|
-
if (typeof pathOrModelChunk === "string") {
|
|
1742
|
-
this.form.model.set(pathOrModelChunk, "value", value);
|
|
1743
|
-
return;
|
|
1118
|
+
this.form.model.fill(t);
|
|
1744
1119
|
}
|
|
1745
|
-
|
|
1746
|
-
throw new Error("form.set() parameter should be string path or object with path-value pairs");
|
|
1747
1120
|
}
|
|
1748
1121
|
}, {
|
|
1749
1122
|
key: "get",
|
|
1750
|
-
value: function
|
|
1751
|
-
var
|
|
1752
|
-
|
|
1753
|
-
|
|
1754
|
-
|
|
1755
|
-
|
|
1756
|
-
|
|
1757
|
-
|
|
1758
|
-
|
|
1759
|
-
}, []));
|
|
1760
|
-
}
|
|
1761
|
-
|
|
1762
|
-
if (typeof pathOrArray === "string") {
|
|
1763
|
-
return reduceChunkValues(mapChunkValues(this.form.model.getChunk(pathOrArray)));
|
|
1764
|
-
}
|
|
1765
|
-
|
|
1766
|
-
if (pathOrArray === undefined) {
|
|
1767
|
-
return reduceChunkValues(mapChunkValues(this.form.model.getChunk(this.form.settings.formRoot)));
|
|
1768
|
-
}
|
|
1769
|
-
|
|
1123
|
+
value: function (e) {
|
|
1124
|
+
var r = this;
|
|
1125
|
+
if (Array.isArray(e)) return reduceChunkValues(e.map(function (e) {
|
|
1126
|
+
return mapChunkValues(r.form.model.getChunk(e));
|
|
1127
|
+
}).reduce(function (e, r) {
|
|
1128
|
+
return e.concat(r);
|
|
1129
|
+
}, []));
|
|
1130
|
+
if ("string" == typeof e) return reduceChunkValues(mapChunkValues(this.form.model.getChunk(e)));
|
|
1131
|
+
if (void 0 === e) return reduceChunkValues(mapChunkValues(this.form.model.getChunk(this.form.settings.formRoot)));
|
|
1770
1132
|
throw new Error("form.get() parameter should be string path or array of paths");
|
|
1771
1133
|
}
|
|
1772
1134
|
}, {
|
|
1773
1135
|
key: "getValue",
|
|
1774
|
-
value: function
|
|
1775
|
-
|
|
1776
|
-
return this.form.model.get(path, "value");
|
|
1136
|
+
value: function (e) {
|
|
1137
|
+
return this.form.model.get(e, "value");
|
|
1777
1138
|
}
|
|
1778
1139
|
}, {
|
|
1779
1140
|
key: "addInstance",
|
|
1780
|
-
value: function
|
|
1781
|
-
throw new _Common_Errors__WEBPACK_IMPORTED_MODULE_0__.
|
|
1141
|
+
value: function (e) {
|
|
1142
|
+
throw new _Common_Errors__WEBPACK_IMPORTED_MODULE_0__.nj();
|
|
1782
1143
|
}
|
|
1783
1144
|
}, {
|
|
1784
1145
|
key: "getChildren",
|
|
1785
|
-
value: function
|
|
1786
|
-
throw new _Common_Errors__WEBPACK_IMPORTED_MODULE_0__.
|
|
1146
|
+
value: function (e) {
|
|
1147
|
+
throw new _Common_Errors__WEBPACK_IMPORTED_MODULE_0__.nj();
|
|
1787
1148
|
}
|
|
1788
1149
|
}, {
|
|
1789
1150
|
key: "removeInstance",
|
|
1790
|
-
value: function
|
|
1791
|
-
throw new _Common_Errors__WEBPACK_IMPORTED_MODULE_0__.
|
|
1151
|
+
value: function (e, r) {
|
|
1152
|
+
throw new _Common_Errors__WEBPACK_IMPORTED_MODULE_0__.nj();
|
|
1792
1153
|
}
|
|
1793
1154
|
}, {
|
|
1794
1155
|
key: "removeInstances",
|
|
1795
|
-
value: function
|
|
1796
|
-
throw new _Common_Errors__WEBPACK_IMPORTED_MODULE_0__.
|
|
1156
|
+
value: function (e, r) {
|
|
1157
|
+
throw new _Common_Errors__WEBPACK_IMPORTED_MODULE_0__.nj();
|
|
1158
|
+
}
|
|
1159
|
+
}, {
|
|
1160
|
+
key: "setAllCheckboxesFor113103",
|
|
1161
|
+
value: function (e) {
|
|
1162
|
+
return Promise.resolve(void 0);
|
|
1163
|
+
}
|
|
1164
|
+
}, {
|
|
1165
|
+
key: "setAutoFieldsToAutoValue",
|
|
1166
|
+
value: function (e) {
|
|
1167
|
+
return Promise.resolve(void 0);
|
|
1797
1168
|
}
|
|
1798
1169
|
}, {
|
|
1799
1170
|
key: "__reactstandin__regenerateByEval",
|
|
1800
|
-
value:
|
|
1801
|
-
function __reactstandin__regenerateByEval(key, code) {
|
|
1802
|
-
// @ts-ignore
|
|
1171
|
+
value: function __reactstandin__regenerateByEval(key, code) {
|
|
1803
1172
|
this[key] = eval(code);
|
|
1804
1173
|
}
|
|
1805
|
-
}]);
|
|
1174
|
+
}]), LegacyPublicForm;
|
|
1175
|
+
}(),
|
|
1176
|
+
reactHotLoader,
|
|
1177
|
+
leaveModule;
|
|
1806
1178
|
|
|
1807
|
-
|
|
1808
|
-
|
|
1809
|
-
|
|
1810
|
-
function createLegacyPublicForm(form) {
|
|
1811
|
-
// @ts-ignore
|
|
1812
|
-
return new LegacyPublicForm(form);
|
|
1179
|
+
function createLegacyPublicForm(e) {
|
|
1180
|
+
return new LegacyPublicForm(e);
|
|
1813
1181
|
}
|
|
1814
1182
|
|
|
1815
|
-
;
|
|
1816
|
-
|
|
1817
|
-
(function () {
|
|
1818
|
-
var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;
|
|
1819
|
-
|
|
1820
|
-
if (!reactHotLoader) {
|
|
1821
|
-
return;
|
|
1822
|
-
}
|
|
1823
|
-
|
|
1824
|
-
reactHotLoader.register(modelChangeEventPath, "modelChangeEventPath", "C:\\buildAgent\\work\\8df8f1edd755969c\\Engine\\src\\Forms\\Client\\LegacyPublicForm\\CreateLegacyPublicForm.ts");
|
|
1825
|
-
reactHotLoader.register(mapChunkValues, "mapChunkValues", "C:\\buildAgent\\work\\8df8f1edd755969c\\Engine\\src\\Forms\\Client\\LegacyPublicForm\\CreateLegacyPublicForm.ts");
|
|
1826
|
-
reactHotLoader.register(reduceChunkValues, "reduceChunkValues", "C:\\buildAgent\\work\\8df8f1edd755969c\\Engine\\src\\Forms\\Client\\LegacyPublicForm\\CreateLegacyPublicForm.ts");
|
|
1827
|
-
reactHotLoader.register(LegacyPublicForm, "LegacyPublicForm", "C:\\buildAgent\\work\\8df8f1edd755969c\\Engine\\src\\Forms\\Client\\LegacyPublicForm\\CreateLegacyPublicForm.ts");
|
|
1828
|
-
reactHotLoader.register(createLegacyPublicForm, "createLegacyPublicForm", "C:\\buildAgent\\work\\8df8f1edd755969c\\Engine\\src\\Forms\\Client\\LegacyPublicForm\\CreateLegacyPublicForm.ts");
|
|
1829
|
-
})();
|
|
1830
|
-
|
|
1831
|
-
;
|
|
1832
|
-
|
|
1833
|
-
(function () {
|
|
1834
|
-
var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;
|
|
1835
|
-
leaveModule && leaveModule(module);
|
|
1836
|
-
})();
|
|
1837
|
-
/***/
|
|
1838
|
-
|
|
1183
|
+
reactHotLoader = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.default : void 0, reactHotLoader && (reactHotLoader.register(modelChangeEventPath, "modelChangeEventPath", "C:\\BuildAgent\\work\\forms-root\\Engine\\src\\Forms\\Client\\LegacyPublicForm\\CreateLegacyPublicForm.ts"), reactHotLoader.register(mapChunkValues, "mapChunkValues", "C:\\BuildAgent\\work\\forms-root\\Engine\\src\\Forms\\Client\\LegacyPublicForm\\CreateLegacyPublicForm.ts"), reactHotLoader.register(reduceChunkValues, "reduceChunkValues", "C:\\BuildAgent\\work\\forms-root\\Engine\\src\\Forms\\Client\\LegacyPublicForm\\CreateLegacyPublicForm.ts"), reactHotLoader.register(LegacyPublicForm, "LegacyPublicForm", "C:\\BuildAgent\\work\\forms-root\\Engine\\src\\Forms\\Client\\LegacyPublicForm\\CreateLegacyPublicForm.ts"), reactHotLoader.register(createLegacyPublicForm, "createLegacyPublicForm", "C:\\BuildAgent\\work\\forms-root\\Engine\\src\\Forms\\Client\\LegacyPublicForm\\CreateLegacyPublicForm.ts")), leaveModule = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.leaveModule : void 0, leaveModule && leaveModule(module);
|
|
1839
1184
|
},
|
|
1185
|
+
412: function (e, r, t) {
|
|
1186
|
+
var o;
|
|
1840
1187
|
|
|
1841
|
-
|
|
1842
|
-
|
|
1843
|
-
|
|
1844
|
-
|
|
1845
|
-
\************************************************/
|
|
1846
|
-
|
|
1847
|
-
/***/
|
|
1848
|
-
function (module, __webpack_exports__, __webpack_require__) {
|
|
1849
|
-
__webpack_require__.r(__webpack_exports__);
|
|
1850
|
-
/* harmony export */
|
|
1851
|
-
|
|
1852
|
-
|
|
1853
|
-
__webpack_require__.d(__webpack_exports__, {
|
|
1854
|
-
/* harmony export */
|
|
1855
|
-
"LoadIntoDocument": function () {
|
|
1856
|
-
return (
|
|
1857
|
-
/* binding */
|
|
1858
|
-
LoadIntoDocument
|
|
1859
|
-
);
|
|
1860
|
-
}
|
|
1861
|
-
/* harmony export */
|
|
1862
|
-
|
|
1863
|
-
});
|
|
1864
|
-
/* module decorator */
|
|
1865
|
-
|
|
1866
|
-
|
|
1867
|
-
module = __webpack_require__.hmd(module);
|
|
1868
|
-
|
|
1869
|
-
(function () {
|
|
1870
|
-
var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;
|
|
1871
|
-
enterModule && enterModule(module);
|
|
1872
|
-
})();
|
|
1873
|
-
|
|
1874
|
-
function _classCallCheck(instance, Constructor) {
|
|
1875
|
-
if (!(instance instanceof Constructor)) {
|
|
1876
|
-
throw new TypeError("Cannot call a class as a function");
|
|
1188
|
+
function n(e, r) {
|
|
1189
|
+
for (var t = 0; t < r.length; t++) {
|
|
1190
|
+
var o = r[t];
|
|
1191
|
+
o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, o.key, o);
|
|
1877
1192
|
}
|
|
1878
1193
|
}
|
|
1879
1194
|
|
|
1880
|
-
|
|
1881
|
-
|
|
1882
|
-
|
|
1883
|
-
descriptor.enumerable = descriptor.enumerable || false;
|
|
1884
|
-
descriptor.configurable = true;
|
|
1885
|
-
if ("value" in descriptor) descriptor.writable = true;
|
|
1886
|
-
Object.defineProperty(target, descriptor.key, descriptor);
|
|
1195
|
+
t.d(r, {
|
|
1196
|
+
e: function () {
|
|
1197
|
+
return s;
|
|
1887
1198
|
}
|
|
1888
|
-
}
|
|
1889
|
-
|
|
1890
|
-
function _createClass(Constructor, protoProps, staticProps) {
|
|
1891
|
-
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
|
|
1892
|
-
if (staticProps) _defineProperties(Constructor, staticProps);
|
|
1893
|
-
return Constructor;
|
|
1894
|
-
}
|
|
1895
|
-
|
|
1896
|
-
var __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal["default"].signature : function (a) {
|
|
1897
|
-
return a;
|
|
1898
|
-
}; // tslint:disable no-unsafe-any
|
|
1199
|
+
}), e = t.hmd(e), (o = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.enterModule : void 0) && o(e), "undefined" != typeof reactHotLoaderGlobal && reactHotLoaderGlobal.default.signature;
|
|
1899
1200
|
|
|
1900
|
-
|
|
1901
|
-
|
|
1902
|
-
|
|
1903
|
-
|
|
1201
|
+
var i,
|
|
1202
|
+
a,
|
|
1203
|
+
s = function () {
|
|
1204
|
+
function e() {
|
|
1205
|
+
!function (e, r) {
|
|
1206
|
+
if (!(e instanceof r)) throw new TypeError("Cannot call a class as a function");
|
|
1207
|
+
}(this, e);
|
|
1904
1208
|
}
|
|
1905
1209
|
|
|
1906
|
-
|
|
1210
|
+
var r, t;
|
|
1211
|
+
return r = e, t = [{
|
|
1907
1212
|
key: "script",
|
|
1908
|
-
value: function
|
|
1909
|
-
var
|
|
1910
|
-
|
|
1911
|
-
|
|
1912
|
-
var script = document.createElement("script");
|
|
1913
|
-
|
|
1914
|
-
function loadHandler() {
|
|
1915
|
-
if (scriptLoaded) {
|
|
1916
|
-
return;
|
|
1917
|
-
}
|
|
1918
|
-
|
|
1919
|
-
if (!script.readyState || script.readyState === "loaded" || script.readyState === "complete") {
|
|
1920
|
-
scriptLoaded = true;
|
|
1921
|
-
callback();
|
|
1922
|
-
}
|
|
1923
|
-
} // Hang the user callback to be called when the script completes to load.
|
|
1924
|
-
// NOTE(user): This callback will be called in IE even upon error. In any
|
|
1925
|
-
// case it is the client's responsibility to verify that the script ran
|
|
1926
|
-
// successfully.
|
|
1927
|
-
|
|
1928
|
-
|
|
1929
|
-
script.onload = loadHandler;
|
|
1930
|
-
script.onreadystatechange = loadHandler; // Add an error callback.
|
|
1931
|
-
// NOTE(user): Not supported in IE.
|
|
1932
|
-
|
|
1933
|
-
script.onerror = function () {
|
|
1934
|
-
if (script.parentNode) {
|
|
1935
|
-
script.parentNode.removeChild(script);
|
|
1936
|
-
}
|
|
1937
|
-
|
|
1938
|
-
callback(new Error("Error while loading script."));
|
|
1939
|
-
}; // Add the script element to the document.
|
|
1940
|
-
// NOTE(user): Safari never loads the script if we don't set
|
|
1941
|
-
// the src attribute before appending.
|
|
1213
|
+
value: function (e, r) {
|
|
1214
|
+
var t = !1,
|
|
1215
|
+
o = document.getElementsByTagName("head")[0] || document.documentElement,
|
|
1216
|
+
n = document.createElement("script");
|
|
1942
1217
|
|
|
1218
|
+
function i() {
|
|
1219
|
+
t || n.readyState && "loaded" !== n.readyState && "complete" !== n.readyState || (t = !0, r());
|
|
1220
|
+
}
|
|
1943
1221
|
|
|
1944
|
-
|
|
1945
|
-
|
|
1946
|
-
|
|
1222
|
+
n.onload = i, n.onreadystatechange = i, n.onerror = function () {
|
|
1223
|
+
n.parentNode && n.parentNode.removeChild(n), r(new Error("Error while loading script."));
|
|
1224
|
+
}, n.src = e, n.setAttribute("crossorigin", "use-credentials"), o.appendChild(n);
|
|
1947
1225
|
}
|
|
1948
1226
|
}, {
|
|
1949
1227
|
key: "styleSheet",
|
|
1950
|
-
value: function
|
|
1951
|
-
var
|
|
1952
|
-
|
|
1953
|
-
|
|
1954
|
-
|
|
1955
|
-
|
|
1956
|
-
|
|
1957
|
-
|
|
1958
|
-
|
|
1959
|
-
|
|
1960
|
-
|
|
1961
|
-
callback(new Error("Error while loading stylesheet."));
|
|
1962
|
-
}
|
|
1963
|
-
};
|
|
1964
|
-
|
|
1965
|
-
var head = (_document$getElements = document.getElementsByTagName("head")[0]) !== null && _document$getElements !== void 0 ? _document$getElements : document.documentElement;
|
|
1966
|
-
var link = document.createElement("link");
|
|
1967
|
-
link.setAttribute("rel", "stylesheet");
|
|
1968
|
-
link.setAttribute("type", "text/css");
|
|
1969
|
-
link.addEventListener("load", resolve);
|
|
1970
|
-
link.addEventListener("error", reject);
|
|
1971
|
-
head.appendChild(link);
|
|
1972
|
-
link.setAttribute("href", uri);
|
|
1973
|
-
}
|
|
1974
|
-
}]);
|
|
1975
|
-
|
|
1976
|
-
return LoadIntoDocument;
|
|
1228
|
+
value: function (e, r, t) {
|
|
1229
|
+
var o,
|
|
1230
|
+
n = null !== (o = document.getElementsByTagName("head")[0]) && void 0 !== o ? o : document.documentElement,
|
|
1231
|
+
i = document.createElement("link");
|
|
1232
|
+
i.setAttribute("rel", "stylesheet"), i.setAttribute("type", "text/css"), i.addEventListener("load", function () {
|
|
1233
|
+
return t(void 0);
|
|
1234
|
+
}), i.addEventListener("error", function () {
|
|
1235
|
+
t(r ? void 0 : new Error("Error while loading stylesheet."));
|
|
1236
|
+
}), n.appendChild(i), i.setAttribute("href", e);
|
|
1237
|
+
}
|
|
1238
|
+
}], null && n(r.prototype, null), t && n(r, t), e;
|
|
1977
1239
|
}();
|
|
1978
1240
|
|
|
1979
|
-
;
|
|
1980
|
-
|
|
1981
|
-
|
|
1982
|
-
|
|
1983
|
-
|
|
1984
|
-
|
|
1985
|
-
|
|
1986
|
-
|
|
1987
|
-
|
|
1988
|
-
|
|
1989
|
-
|
|
1990
|
-
|
|
1991
|
-
|
|
1992
|
-
|
|
1993
|
-
|
|
1994
|
-
var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;
|
|
1995
|
-
leaveModule && leaveModule(module);
|
|
1996
|
-
})();
|
|
1997
|
-
/***/
|
|
1998
|
-
|
|
1999
|
-
},
|
|
2000
|
-
|
|
2001
|
-
/***/
|
|
2002
|
-
"./node_modules/whatwg-fetch/fetch.js":
|
|
2003
|
-
/*!********************************************!*\
|
|
2004
|
-
!*** ./node_modules/whatwg-fetch/fetch.js ***!
|
|
2005
|
-
\********************************************/
|
|
2006
|
-
|
|
2007
|
-
/***/
|
|
2008
|
-
function (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
2009
|
-
__webpack_require__.r(__webpack_exports__);
|
|
2010
|
-
/* harmony export */
|
|
2011
|
-
|
|
2012
|
-
|
|
2013
|
-
__webpack_require__.d(__webpack_exports__, {
|
|
2014
|
-
/* harmony export */
|
|
2015
|
-
"Headers": function () {
|
|
2016
|
-
return (
|
|
2017
|
-
/* binding */
|
|
2018
|
-
Headers
|
|
2019
|
-
);
|
|
2020
|
-
},
|
|
2021
|
-
|
|
2022
|
-
/* harmony export */
|
|
2023
|
-
"Request": function () {
|
|
2024
|
-
return (
|
|
2025
|
-
/* binding */
|
|
2026
|
-
Request
|
|
2027
|
-
);
|
|
2028
|
-
},
|
|
2029
|
-
|
|
2030
|
-
/* harmony export */
|
|
2031
|
-
"Response": function () {
|
|
2032
|
-
return (
|
|
2033
|
-
/* binding */
|
|
2034
|
-
Response
|
|
2035
|
-
);
|
|
2036
|
-
},
|
|
2037
|
-
|
|
2038
|
-
/* harmony export */
|
|
2039
|
-
"DOMException": function () {
|
|
2040
|
-
return (
|
|
2041
|
-
/* binding */
|
|
2042
|
-
DOMException
|
|
2043
|
-
);
|
|
2044
|
-
},
|
|
2045
|
-
|
|
2046
|
-
/* harmony export */
|
|
2047
|
-
"fetch": function () {
|
|
2048
|
-
return (
|
|
2049
|
-
/* binding */
|
|
2050
|
-
fetch
|
|
2051
|
-
);
|
|
2052
|
-
}
|
|
2053
|
-
/* harmony export */
|
|
2054
|
-
|
|
2055
|
-
});
|
|
2056
|
-
|
|
2057
|
-
var global = typeof globalThis !== 'undefined' && globalThis || typeof self !== 'undefined' && self || typeof global !== 'undefined' && global;
|
|
2058
|
-
var support = {
|
|
2059
|
-
searchParams: 'URLSearchParams' in global,
|
|
2060
|
-
iterable: 'Symbol' in global && 'iterator' in Symbol,
|
|
2061
|
-
blob: 'FileReader' in global && 'Blob' in global && function () {
|
|
2062
|
-
try {
|
|
2063
|
-
new Blob();
|
|
2064
|
-
return true;
|
|
2065
|
-
} catch (e) {
|
|
2066
|
-
return false;
|
|
2067
|
-
}
|
|
2068
|
-
}(),
|
|
2069
|
-
formData: 'FormData' in global,
|
|
2070
|
-
arrayBuffer: 'ArrayBuffer' in global
|
|
2071
|
-
};
|
|
2072
|
-
|
|
2073
|
-
function isDataView(obj) {
|
|
2074
|
-
return obj && DataView.prototype.isPrototypeOf(obj);
|
|
2075
|
-
}
|
|
2076
|
-
|
|
2077
|
-
if (support.arrayBuffer) {
|
|
2078
|
-
var viewClasses = ['[object Int8Array]', '[object Uint8Array]', '[object Uint8ClampedArray]', '[object Int16Array]', '[object Uint16Array]', '[object Int32Array]', '[object Uint32Array]', '[object Float32Array]', '[object Float64Array]'];
|
|
2079
|
-
|
|
2080
|
-
var isArrayBufferView = ArrayBuffer.isView || function (obj) {
|
|
2081
|
-
return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1;
|
|
2082
|
-
};
|
|
2083
|
-
}
|
|
2084
|
-
|
|
2085
|
-
function normalizeName(name) {
|
|
2086
|
-
if (typeof name !== 'string') {
|
|
2087
|
-
name = String(name);
|
|
2088
|
-
}
|
|
2089
|
-
|
|
2090
|
-
if (/[^a-z0-9\-#$%&'*+.^_`|~!]/i.test(name) || name === '') {
|
|
2091
|
-
throw new TypeError('Invalid character in header field name: "' + name + '"');
|
|
2092
|
-
}
|
|
2093
|
-
|
|
2094
|
-
return name.toLowerCase();
|
|
2095
|
-
}
|
|
2096
|
-
|
|
2097
|
-
function normalizeValue(value) {
|
|
2098
|
-
if (typeof value !== 'string') {
|
|
2099
|
-
value = String(value);
|
|
2100
|
-
}
|
|
2101
|
-
|
|
2102
|
-
return value;
|
|
2103
|
-
} // Build a destructive iterator for the value list
|
|
2104
|
-
|
|
2105
|
-
|
|
2106
|
-
function iteratorFor(items) {
|
|
2107
|
-
var iterator = {
|
|
2108
|
-
next: function () {
|
|
2109
|
-
var value = items.shift();
|
|
2110
|
-
return {
|
|
2111
|
-
done: value === undefined,
|
|
2112
|
-
value: value
|
|
2113
|
-
};
|
|
2114
|
-
}
|
|
2115
|
-
};
|
|
2116
|
-
|
|
2117
|
-
if (support.iterable) {
|
|
2118
|
-
iterator[Symbol.iterator] = function () {
|
|
2119
|
-
return iterator;
|
|
2120
|
-
};
|
|
2121
|
-
}
|
|
2122
|
-
|
|
2123
|
-
return iterator;
|
|
2124
|
-
}
|
|
2125
|
-
|
|
2126
|
-
function Headers(headers) {
|
|
2127
|
-
this.map = {};
|
|
2128
|
-
|
|
2129
|
-
if (headers instanceof Headers) {
|
|
2130
|
-
headers.forEach(function (value, name) {
|
|
2131
|
-
this.append(name, value);
|
|
2132
|
-
}, this);
|
|
2133
|
-
} else if (Array.isArray(headers)) {
|
|
2134
|
-
headers.forEach(function (header) {
|
|
2135
|
-
this.append(header[0], header[1]);
|
|
2136
|
-
}, this);
|
|
2137
|
-
} else if (headers) {
|
|
2138
|
-
Object.getOwnPropertyNames(headers).forEach(function (name) {
|
|
2139
|
-
this.append(name, headers[name]);
|
|
2140
|
-
}, this);
|
|
2141
|
-
}
|
|
2142
|
-
}
|
|
2143
|
-
|
|
2144
|
-
Headers.prototype.append = function (name, value) {
|
|
2145
|
-
name = normalizeName(name);
|
|
2146
|
-
value = normalizeValue(value);
|
|
2147
|
-
var oldValue = this.map[name];
|
|
2148
|
-
this.map[name] = oldValue ? oldValue + ', ' + value : value;
|
|
2149
|
-
};
|
|
2150
|
-
|
|
2151
|
-
Headers.prototype['delete'] = function (name) {
|
|
2152
|
-
delete this.map[normalizeName(name)];
|
|
2153
|
-
};
|
|
2154
|
-
|
|
2155
|
-
Headers.prototype.get = function (name) {
|
|
2156
|
-
name = normalizeName(name);
|
|
2157
|
-
return this.has(name) ? this.map[name] : null;
|
|
2158
|
-
};
|
|
2159
|
-
|
|
2160
|
-
Headers.prototype.has = function (name) {
|
|
2161
|
-
return this.map.hasOwnProperty(normalizeName(name));
|
|
2162
|
-
};
|
|
2163
|
-
|
|
2164
|
-
Headers.prototype.set = function (name, value) {
|
|
2165
|
-
this.map[normalizeName(name)] = normalizeValue(value);
|
|
2166
|
-
};
|
|
2167
|
-
|
|
2168
|
-
Headers.prototype.forEach = function (callback, thisArg) {
|
|
2169
|
-
for (var name in this.map) {
|
|
2170
|
-
if (this.map.hasOwnProperty(name)) {
|
|
2171
|
-
callback.call(thisArg, this.map[name], name, this);
|
|
2172
|
-
}
|
|
2173
|
-
}
|
|
2174
|
-
};
|
|
2175
|
-
|
|
2176
|
-
Headers.prototype.keys = function () {
|
|
2177
|
-
var items = [];
|
|
2178
|
-
this.forEach(function (value, name) {
|
|
2179
|
-
items.push(name);
|
|
2180
|
-
});
|
|
2181
|
-
return iteratorFor(items);
|
|
2182
|
-
};
|
|
2183
|
-
|
|
2184
|
-
Headers.prototype.values = function () {
|
|
2185
|
-
var items = [];
|
|
2186
|
-
this.forEach(function (value) {
|
|
2187
|
-
items.push(value);
|
|
2188
|
-
});
|
|
2189
|
-
return iteratorFor(items);
|
|
2190
|
-
};
|
|
2191
|
-
|
|
2192
|
-
Headers.prototype.entries = function () {
|
|
2193
|
-
var items = [];
|
|
2194
|
-
this.forEach(function (value, name) {
|
|
2195
|
-
items.push([name, value]);
|
|
2196
|
-
});
|
|
2197
|
-
return iteratorFor(items);
|
|
2198
|
-
};
|
|
2199
|
-
|
|
2200
|
-
if (support.iterable) {
|
|
2201
|
-
Headers.prototype[Symbol.iterator] = Headers.prototype.entries;
|
|
2202
|
-
}
|
|
2203
|
-
|
|
2204
|
-
function consumed(body) {
|
|
2205
|
-
if (body.bodyUsed) {
|
|
2206
|
-
return Promise.reject(new TypeError('Already read'));
|
|
2207
|
-
}
|
|
2208
|
-
|
|
2209
|
-
body.bodyUsed = true;
|
|
2210
|
-
}
|
|
2211
|
-
|
|
2212
|
-
function fileReaderReady(reader) {
|
|
2213
|
-
return new Promise(function (resolve, reject) {
|
|
2214
|
-
reader.onload = function () {
|
|
2215
|
-
resolve(reader.result);
|
|
2216
|
-
};
|
|
2217
|
-
|
|
2218
|
-
reader.onerror = function () {
|
|
2219
|
-
reject(reader.error);
|
|
2220
|
-
};
|
|
2221
|
-
});
|
|
2222
|
-
}
|
|
2223
|
-
|
|
2224
|
-
function readBlobAsArrayBuffer(blob) {
|
|
2225
|
-
var reader = new FileReader();
|
|
2226
|
-
var promise = fileReaderReady(reader);
|
|
2227
|
-
reader.readAsArrayBuffer(blob);
|
|
2228
|
-
return promise;
|
|
2229
|
-
}
|
|
2230
|
-
|
|
2231
|
-
function readBlobAsText(blob) {
|
|
2232
|
-
var reader = new FileReader();
|
|
2233
|
-
var promise = fileReaderReady(reader);
|
|
2234
|
-
reader.readAsText(blob);
|
|
2235
|
-
return promise;
|
|
2236
|
-
}
|
|
2237
|
-
|
|
2238
|
-
function readArrayBufferAsText(buf) {
|
|
2239
|
-
var view = new Uint8Array(buf);
|
|
2240
|
-
var chars = new Array(view.length);
|
|
2241
|
-
|
|
2242
|
-
for (var i = 0; i < view.length; i++) {
|
|
2243
|
-
chars[i] = String.fromCharCode(view[i]);
|
|
2244
|
-
}
|
|
2245
|
-
|
|
2246
|
-
return chars.join('');
|
|
2247
|
-
}
|
|
2248
|
-
|
|
2249
|
-
function bufferClone(buf) {
|
|
2250
|
-
if (buf.slice) {
|
|
2251
|
-
return buf.slice(0);
|
|
2252
|
-
} else {
|
|
2253
|
-
var view = new Uint8Array(buf.byteLength);
|
|
2254
|
-
view.set(new Uint8Array(buf));
|
|
2255
|
-
return view.buffer;
|
|
2256
|
-
}
|
|
2257
|
-
}
|
|
2258
|
-
|
|
2259
|
-
function Body() {
|
|
2260
|
-
this.bodyUsed = false;
|
|
2261
|
-
|
|
2262
|
-
this._initBody = function (body) {
|
|
2263
|
-
/*
|
|
2264
|
-
fetch-mock wraps the Response object in an ES6 Proxy to
|
|
2265
|
-
provide useful test harness features such as flush. However, on
|
|
2266
|
-
ES5 browsers without fetch or Proxy support pollyfills must be used;
|
|
2267
|
-
the proxy-pollyfill is unable to proxy an attribute unless it exists
|
|
2268
|
-
on the object before the Proxy is created. This change ensures
|
|
2269
|
-
Response.bodyUsed exists on the instance, while maintaining the
|
|
2270
|
-
semantic of setting Request.bodyUsed in the constructor before
|
|
2271
|
-
_initBody is called.
|
|
2272
|
-
*/
|
|
2273
|
-
this.bodyUsed = this.bodyUsed;
|
|
2274
|
-
this._bodyInit = body;
|
|
2275
|
-
|
|
2276
|
-
if (!body) {
|
|
2277
|
-
this._bodyText = '';
|
|
2278
|
-
} else if (typeof body === 'string') {
|
|
2279
|
-
this._bodyText = body;
|
|
2280
|
-
} else if (support.blob && Blob.prototype.isPrototypeOf(body)) {
|
|
2281
|
-
this._bodyBlob = body;
|
|
2282
|
-
} else if (support.formData && FormData.prototype.isPrototypeOf(body)) {
|
|
2283
|
-
this._bodyFormData = body;
|
|
2284
|
-
} else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {
|
|
2285
|
-
this._bodyText = body.toString();
|
|
2286
|
-
} else if (support.arrayBuffer && support.blob && isDataView(body)) {
|
|
2287
|
-
this._bodyArrayBuffer = bufferClone(body.buffer); // IE 10-11 can't handle a DataView body.
|
|
2288
|
-
|
|
2289
|
-
this._bodyInit = new Blob([this._bodyArrayBuffer]);
|
|
2290
|
-
} else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {
|
|
2291
|
-
this._bodyArrayBuffer = bufferClone(body);
|
|
2292
|
-
} else {
|
|
2293
|
-
this._bodyText = body = Object.prototype.toString.call(body);
|
|
2294
|
-
}
|
|
2295
|
-
|
|
2296
|
-
if (!this.headers.get('content-type')) {
|
|
2297
|
-
if (typeof body === 'string') {
|
|
2298
|
-
this.headers.set('content-type', 'text/plain;charset=UTF-8');
|
|
2299
|
-
} else if (this._bodyBlob && this._bodyBlob.type) {
|
|
2300
|
-
this.headers.set('content-type', this._bodyBlob.type);
|
|
2301
|
-
} else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {
|
|
2302
|
-
this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');
|
|
2303
|
-
}
|
|
2304
|
-
}
|
|
2305
|
-
};
|
|
2306
|
-
|
|
2307
|
-
if (support.blob) {
|
|
2308
|
-
this.blob = function () {
|
|
2309
|
-
var rejected = consumed(this);
|
|
2310
|
-
|
|
2311
|
-
if (rejected) {
|
|
2312
|
-
return rejected;
|
|
2313
|
-
}
|
|
2314
|
-
|
|
2315
|
-
if (this._bodyBlob) {
|
|
2316
|
-
return Promise.resolve(this._bodyBlob);
|
|
2317
|
-
} else if (this._bodyArrayBuffer) {
|
|
2318
|
-
return Promise.resolve(new Blob([this._bodyArrayBuffer]));
|
|
2319
|
-
} else if (this._bodyFormData) {
|
|
2320
|
-
throw new Error('could not read FormData body as blob');
|
|
2321
|
-
} else {
|
|
2322
|
-
return Promise.resolve(new Blob([this._bodyText]));
|
|
2323
|
-
}
|
|
2324
|
-
};
|
|
2325
|
-
|
|
2326
|
-
this.arrayBuffer = function () {
|
|
2327
|
-
if (this._bodyArrayBuffer) {
|
|
2328
|
-
var isConsumed = consumed(this);
|
|
2329
|
-
|
|
2330
|
-
if (isConsumed) {
|
|
2331
|
-
return isConsumed;
|
|
2332
|
-
}
|
|
2333
|
-
|
|
2334
|
-
if (ArrayBuffer.isView(this._bodyArrayBuffer)) {
|
|
2335
|
-
return Promise.resolve(this._bodyArrayBuffer.buffer.slice(this._bodyArrayBuffer.byteOffset, this._bodyArrayBuffer.byteOffset + this._bodyArrayBuffer.byteLength));
|
|
2336
|
-
} else {
|
|
2337
|
-
return Promise.resolve(this._bodyArrayBuffer);
|
|
2338
|
-
}
|
|
2339
|
-
} else {
|
|
2340
|
-
return this.blob().then(readBlobAsArrayBuffer);
|
|
2341
|
-
}
|
|
2342
|
-
};
|
|
2343
|
-
}
|
|
2344
|
-
|
|
2345
|
-
this.text = function () {
|
|
2346
|
-
var rejected = consumed(this);
|
|
2347
|
-
|
|
2348
|
-
if (rejected) {
|
|
2349
|
-
return rejected;
|
|
2350
|
-
}
|
|
2351
|
-
|
|
2352
|
-
if (this._bodyBlob) {
|
|
2353
|
-
return readBlobAsText(this._bodyBlob);
|
|
2354
|
-
} else if (this._bodyArrayBuffer) {
|
|
2355
|
-
return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer));
|
|
2356
|
-
} else if (this._bodyFormData) {
|
|
2357
|
-
throw new Error('could not read FormData body as text');
|
|
2358
|
-
} else {
|
|
2359
|
-
return Promise.resolve(this._bodyText);
|
|
2360
|
-
}
|
|
2361
|
-
};
|
|
2362
|
-
|
|
2363
|
-
if (support.formData) {
|
|
2364
|
-
this.formData = function () {
|
|
2365
|
-
return this.text().then(decode);
|
|
2366
|
-
};
|
|
2367
|
-
}
|
|
2368
|
-
|
|
2369
|
-
this.json = function () {
|
|
2370
|
-
return this.text().then(JSON.parse);
|
|
2371
|
-
};
|
|
2372
|
-
|
|
2373
|
-
return this;
|
|
2374
|
-
} // HTTP methods whose capitalization should be normalized
|
|
2375
|
-
|
|
2376
|
-
|
|
2377
|
-
var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT'];
|
|
2378
|
-
|
|
2379
|
-
function normalizeMethod(method) {
|
|
2380
|
-
var upcased = method.toUpperCase();
|
|
2381
|
-
return methods.indexOf(upcased) > -1 ? upcased : method;
|
|
2382
|
-
}
|
|
2383
|
-
|
|
2384
|
-
function Request(input, options) {
|
|
2385
|
-
if (!(this instanceof Request)) {
|
|
2386
|
-
throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.');
|
|
2387
|
-
}
|
|
2388
|
-
|
|
2389
|
-
options = options || {};
|
|
2390
|
-
var body = options.body;
|
|
2391
|
-
|
|
2392
|
-
if (input instanceof Request) {
|
|
2393
|
-
if (input.bodyUsed) {
|
|
2394
|
-
throw new TypeError('Already read');
|
|
2395
|
-
}
|
|
2396
|
-
|
|
2397
|
-
this.url = input.url;
|
|
2398
|
-
this.credentials = input.credentials;
|
|
2399
|
-
|
|
2400
|
-
if (!options.headers) {
|
|
2401
|
-
this.headers = new Headers(input.headers);
|
|
2402
|
-
}
|
|
2403
|
-
|
|
2404
|
-
this.method = input.method;
|
|
2405
|
-
this.mode = input.mode;
|
|
2406
|
-
this.signal = input.signal;
|
|
2407
|
-
|
|
2408
|
-
if (!body && input._bodyInit != null) {
|
|
2409
|
-
body = input._bodyInit;
|
|
2410
|
-
input.bodyUsed = true;
|
|
2411
|
-
}
|
|
2412
|
-
} else {
|
|
2413
|
-
this.url = String(input);
|
|
2414
|
-
}
|
|
2415
|
-
|
|
2416
|
-
this.credentials = options.credentials || this.credentials || 'same-origin';
|
|
2417
|
-
|
|
2418
|
-
if (options.headers || !this.headers) {
|
|
2419
|
-
this.headers = new Headers(options.headers);
|
|
2420
|
-
}
|
|
2421
|
-
|
|
2422
|
-
this.method = normalizeMethod(options.method || this.method || 'GET');
|
|
2423
|
-
this.mode = options.mode || this.mode || null;
|
|
2424
|
-
this.signal = options.signal || this.signal;
|
|
2425
|
-
this.referrer = null;
|
|
2426
|
-
|
|
2427
|
-
if ((this.method === 'GET' || this.method === 'HEAD') && body) {
|
|
2428
|
-
throw new TypeError('Body not allowed for GET or HEAD requests');
|
|
2429
|
-
}
|
|
2430
|
-
|
|
2431
|
-
this._initBody(body);
|
|
2432
|
-
|
|
2433
|
-
if (this.method === 'GET' || this.method === 'HEAD') {
|
|
2434
|
-
if (options.cache === 'no-store' || options.cache === 'no-cache') {
|
|
2435
|
-
// Search for a '_' parameter in the query string
|
|
2436
|
-
var reParamSearch = /([?&])_=[^&]*/;
|
|
2437
|
-
|
|
2438
|
-
if (reParamSearch.test(this.url)) {
|
|
2439
|
-
// If it already exists then set the value with the current time
|
|
2440
|
-
this.url = this.url.replace(reParamSearch, '$1_=' + new Date().getTime());
|
|
2441
|
-
} else {
|
|
2442
|
-
// Otherwise add a new '_' parameter to the end with the current time
|
|
2443
|
-
var reQueryString = /\?/;
|
|
2444
|
-
this.url += (reQueryString.test(this.url) ? '&' : '?') + '_=' + new Date().getTime();
|
|
2445
|
-
}
|
|
2446
|
-
}
|
|
2447
|
-
}
|
|
2448
|
-
}
|
|
2449
|
-
|
|
2450
|
-
Request.prototype.clone = function () {
|
|
2451
|
-
return new Request(this, {
|
|
2452
|
-
body: this._bodyInit
|
|
2453
|
-
});
|
|
2454
|
-
};
|
|
2455
|
-
|
|
2456
|
-
function decode(body) {
|
|
2457
|
-
var form = new FormData();
|
|
2458
|
-
body.trim().split('&').forEach(function (bytes) {
|
|
2459
|
-
if (bytes) {
|
|
2460
|
-
var split = bytes.split('=');
|
|
2461
|
-
var name = split.shift().replace(/\+/g, ' ');
|
|
2462
|
-
var value = split.join('=').replace(/\+/g, ' ');
|
|
2463
|
-
form.append(decodeURIComponent(name), decodeURIComponent(value));
|
|
2464
|
-
}
|
|
2465
|
-
});
|
|
2466
|
-
return form;
|
|
2467
|
-
}
|
|
2468
|
-
|
|
2469
|
-
function parseHeaders(rawHeaders) {
|
|
2470
|
-
var headers = new Headers(); // Replace instances of \r\n and \n followed by at least one space or horizontal tab with a space
|
|
2471
|
-
// https://tools.ietf.org/html/rfc7230#section-3.2
|
|
2472
|
-
|
|
2473
|
-
var preProcessedHeaders = rawHeaders.replace(/\r?\n[\t ]+/g, ' '); // Avoiding split via regex to work around a common IE11 bug with the core-js 3.6.0 regex polyfill
|
|
2474
|
-
// https://github.com/github/fetch/issues/748
|
|
2475
|
-
// https://github.com/zloirock/core-js/issues/751
|
|
2476
|
-
|
|
2477
|
-
preProcessedHeaders.split('\r').map(function (header) {
|
|
2478
|
-
return header.indexOf('\n') === 0 ? header.substr(1, header.length) : header;
|
|
2479
|
-
}).forEach(function (line) {
|
|
2480
|
-
var parts = line.split(':');
|
|
2481
|
-
var key = parts.shift().trim();
|
|
2482
|
-
|
|
2483
|
-
if (key) {
|
|
2484
|
-
var value = parts.join(':').trim();
|
|
2485
|
-
headers.append(key, value);
|
|
2486
|
-
}
|
|
2487
|
-
});
|
|
2488
|
-
return headers;
|
|
2489
|
-
}
|
|
2490
|
-
|
|
2491
|
-
Body.call(Request.prototype);
|
|
2492
|
-
|
|
2493
|
-
function Response(bodyInit, options) {
|
|
2494
|
-
if (!(this instanceof Response)) {
|
|
2495
|
-
throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.');
|
|
2496
|
-
}
|
|
2497
|
-
|
|
2498
|
-
if (!options) {
|
|
2499
|
-
options = {};
|
|
2500
|
-
}
|
|
2501
|
-
|
|
2502
|
-
this.type = 'default';
|
|
2503
|
-
this.status = options.status === undefined ? 200 : options.status;
|
|
2504
|
-
this.ok = this.status >= 200 && this.status < 300;
|
|
2505
|
-
this.statusText = options.statusText === undefined ? '' : '' + options.statusText;
|
|
2506
|
-
this.headers = new Headers(options.headers);
|
|
2507
|
-
this.url = options.url || '';
|
|
2508
|
-
|
|
2509
|
-
this._initBody(bodyInit);
|
|
2510
|
-
}
|
|
2511
|
-
|
|
2512
|
-
Body.call(Response.prototype);
|
|
2513
|
-
|
|
2514
|
-
Response.prototype.clone = function () {
|
|
2515
|
-
return new Response(this._bodyInit, {
|
|
2516
|
-
status: this.status,
|
|
2517
|
-
statusText: this.statusText,
|
|
2518
|
-
headers: new Headers(this.headers),
|
|
2519
|
-
url: this.url
|
|
2520
|
-
});
|
|
2521
|
-
};
|
|
2522
|
-
|
|
2523
|
-
Response.error = function () {
|
|
2524
|
-
var response = new Response(null, {
|
|
2525
|
-
status: 0,
|
|
2526
|
-
statusText: ''
|
|
2527
|
-
});
|
|
2528
|
-
response.type = 'error';
|
|
2529
|
-
return response;
|
|
2530
|
-
};
|
|
2531
|
-
|
|
2532
|
-
var redirectStatuses = [301, 302, 303, 307, 308];
|
|
2533
|
-
|
|
2534
|
-
Response.redirect = function (url, status) {
|
|
2535
|
-
if (redirectStatuses.indexOf(status) === -1) {
|
|
2536
|
-
throw new RangeError('Invalid status code');
|
|
2537
|
-
}
|
|
2538
|
-
|
|
2539
|
-
return new Response(null, {
|
|
2540
|
-
status: status,
|
|
2541
|
-
headers: {
|
|
2542
|
-
location: url
|
|
2543
|
-
}
|
|
2544
|
-
});
|
|
2545
|
-
};
|
|
2546
|
-
|
|
2547
|
-
var DOMException = global.DOMException;
|
|
2548
|
-
|
|
2549
|
-
try {
|
|
2550
|
-
new DOMException();
|
|
2551
|
-
} catch (err) {
|
|
2552
|
-
DOMException = function (message, name) {
|
|
2553
|
-
this.message = message;
|
|
2554
|
-
this.name = name;
|
|
2555
|
-
var error = Error(message);
|
|
2556
|
-
this.stack = error.stack;
|
|
2557
|
-
};
|
|
2558
|
-
|
|
2559
|
-
DOMException.prototype = Object.create(Error.prototype);
|
|
2560
|
-
DOMException.prototype.constructor = DOMException;
|
|
2561
|
-
}
|
|
2562
|
-
|
|
2563
|
-
function fetch(input, init) {
|
|
2564
|
-
return new Promise(function (resolve, reject) {
|
|
2565
|
-
var request = new Request(input, init);
|
|
2566
|
-
|
|
2567
|
-
if (request.signal && request.signal.aborted) {
|
|
2568
|
-
return reject(new DOMException('Aborted', 'AbortError'));
|
|
2569
|
-
}
|
|
2570
|
-
|
|
2571
|
-
var xhr = new XMLHttpRequest();
|
|
2572
|
-
|
|
2573
|
-
function abortXhr() {
|
|
2574
|
-
xhr.abort();
|
|
2575
|
-
}
|
|
2576
|
-
|
|
2577
|
-
xhr.onload = function () {
|
|
2578
|
-
var options = {
|
|
2579
|
-
status: xhr.status,
|
|
2580
|
-
statusText: xhr.statusText,
|
|
2581
|
-
headers: parseHeaders(xhr.getAllResponseHeaders() || '')
|
|
2582
|
-
};
|
|
2583
|
-
options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');
|
|
2584
|
-
var body = 'response' in xhr ? xhr.response : xhr.responseText;
|
|
2585
|
-
setTimeout(function () {
|
|
2586
|
-
resolve(new Response(body, options));
|
|
2587
|
-
}, 0);
|
|
2588
|
-
};
|
|
2589
|
-
|
|
2590
|
-
xhr.onerror = function () {
|
|
2591
|
-
setTimeout(function () {
|
|
2592
|
-
reject(new TypeError('Network request failed'));
|
|
2593
|
-
}, 0);
|
|
2594
|
-
};
|
|
2595
|
-
|
|
2596
|
-
xhr.ontimeout = function () {
|
|
2597
|
-
setTimeout(function () {
|
|
2598
|
-
reject(new TypeError('Network request failed'));
|
|
2599
|
-
}, 0);
|
|
2600
|
-
};
|
|
2601
|
-
|
|
2602
|
-
xhr.onabort = function () {
|
|
2603
|
-
setTimeout(function () {
|
|
2604
|
-
reject(new DOMException('Aborted', 'AbortError'));
|
|
2605
|
-
}, 0);
|
|
2606
|
-
};
|
|
2607
|
-
|
|
2608
|
-
function fixUrl(url) {
|
|
2609
|
-
try {
|
|
2610
|
-
return url === '' && global.location.href ? global.location.href : url;
|
|
2611
|
-
} catch (e) {
|
|
2612
|
-
return url;
|
|
2613
|
-
}
|
|
2614
|
-
}
|
|
2615
|
-
|
|
2616
|
-
xhr.open(request.method, fixUrl(request.url), true);
|
|
2617
|
-
|
|
2618
|
-
if (request.credentials === 'include') {
|
|
2619
|
-
xhr.withCredentials = true;
|
|
2620
|
-
} else if (request.credentials === 'omit') {
|
|
2621
|
-
xhr.withCredentials = false;
|
|
2622
|
-
}
|
|
2623
|
-
|
|
2624
|
-
if ('responseType' in xhr) {
|
|
2625
|
-
if (support.blob) {
|
|
2626
|
-
xhr.responseType = 'blob';
|
|
2627
|
-
} else if (support.arrayBuffer && request.headers.get('Content-Type') && request.headers.get('Content-Type').indexOf('application/octet-stream') !== -1) {
|
|
2628
|
-
xhr.responseType = 'arraybuffer';
|
|
2629
|
-
}
|
|
2630
|
-
}
|
|
2631
|
-
|
|
2632
|
-
if (init && typeof init.headers === 'object' && !(init.headers instanceof Headers)) {
|
|
2633
|
-
Object.getOwnPropertyNames(init.headers).forEach(function (name) {
|
|
2634
|
-
xhr.setRequestHeader(name, normalizeValue(init.headers[name]));
|
|
2635
|
-
});
|
|
2636
|
-
} else {
|
|
2637
|
-
request.headers.forEach(function (value, name) {
|
|
2638
|
-
xhr.setRequestHeader(name, value);
|
|
2639
|
-
});
|
|
2640
|
-
}
|
|
2641
|
-
|
|
2642
|
-
if (request.signal) {
|
|
2643
|
-
request.signal.addEventListener('abort', abortXhr);
|
|
2644
|
-
|
|
2645
|
-
xhr.onreadystatechange = function () {
|
|
2646
|
-
// DONE (success or failure)
|
|
2647
|
-
if (xhr.readyState === 4) {
|
|
2648
|
-
request.signal.removeEventListener('abort', abortXhr);
|
|
2649
|
-
}
|
|
2650
|
-
};
|
|
2651
|
-
}
|
|
2652
|
-
|
|
2653
|
-
xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);
|
|
2654
|
-
});
|
|
2655
|
-
}
|
|
2656
|
-
|
|
2657
|
-
fetch.polyfill = true;
|
|
2658
|
-
|
|
2659
|
-
if (!global.fetch) {
|
|
2660
|
-
global.fetch = fetch;
|
|
2661
|
-
global.Headers = Headers;
|
|
2662
|
-
global.Request = Request;
|
|
2663
|
-
global.Response = Response;
|
|
2664
|
-
}
|
|
2665
|
-
/***/
|
|
1241
|
+
(i = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.default : void 0) && i.register(s, "LoadIntoDocument", "C:\\BuildAgent\\work\\forms-root\\Engine\\src\\Helpers\\LoadIntoDocument.ts"), (a = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.leaveModule : void 0) && a(e);
|
|
1242
|
+
}
|
|
1243
|
+
},
|
|
1244
|
+
__webpack_module_cache__ = {};
|
|
1245
|
+
|
|
1246
|
+
function __webpack_require__(e) {
|
|
1247
|
+
var r = __webpack_module_cache__[e];
|
|
1248
|
+
if (void 0 !== r) return r.exports;
|
|
1249
|
+
var t = __webpack_module_cache__[e] = {
|
|
1250
|
+
id: e,
|
|
1251
|
+
loaded: !1,
|
|
1252
|
+
exports: {}
|
|
1253
|
+
};
|
|
1254
|
+
return __webpack_modules__[e](t, t.exports, __webpack_require__), t.loaded = !0, t.exports;
|
|
1255
|
+
}
|
|
2666
1256
|
|
|
1257
|
+
__webpack_require__.d = function (e, r) {
|
|
1258
|
+
for (var t in r) __webpack_require__.o(r, t) && !__webpack_require__.o(e, t) && Object.defineProperty(e, t, {
|
|
1259
|
+
enumerable: !0,
|
|
1260
|
+
get: r[t]
|
|
1261
|
+
});
|
|
1262
|
+
}, __webpack_require__.g = function () {
|
|
1263
|
+
if ("object" == typeof globalThis) return globalThis;
|
|
1264
|
+
|
|
1265
|
+
try {
|
|
1266
|
+
return this || new Function("return this")();
|
|
1267
|
+
} catch (e) {
|
|
1268
|
+
if ("object" == typeof window) return window;
|
|
2667
1269
|
}
|
|
2668
|
-
|
|
2669
|
-
|
|
1270
|
+
}(), __webpack_require__.hmd = function (e) {
|
|
1271
|
+
return (e = Object.create(e)).children || (e.children = []), Object.defineProperty(e, "exports", {
|
|
1272
|
+
enumerable: !0,
|
|
1273
|
+
set: function () {
|
|
1274
|
+
throw new Error("ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: " + e.id);
|
|
1275
|
+
}
|
|
1276
|
+
}), e;
|
|
1277
|
+
}, __webpack_require__.o = function (e, r) {
|
|
1278
|
+
return Object.prototype.hasOwnProperty.call(e, r);
|
|
2670
1279
|
};
|
|
2671
|
-
/************************************************************************/
|
|
2672
|
-
|
|
2673
|
-
/******/
|
|
2674
|
-
// The module cache
|
|
2675
|
-
|
|
2676
|
-
/******/
|
|
2677
|
-
|
|
2678
|
-
var __webpack_module_cache__ = {};
|
|
2679
|
-
/******/
|
|
2680
|
-
|
|
2681
|
-
/******/
|
|
2682
|
-
// The require function
|
|
2683
|
-
|
|
2684
|
-
/******/
|
|
2685
|
-
|
|
2686
|
-
function __webpack_require__(moduleId) {
|
|
2687
|
-
/******/
|
|
2688
|
-
// Check if module is in cache
|
|
2689
|
-
|
|
2690
|
-
/******/
|
|
2691
|
-
var cachedModule = __webpack_module_cache__[moduleId];
|
|
2692
|
-
/******/
|
|
2693
|
-
|
|
2694
|
-
if (cachedModule !== undefined) {
|
|
2695
|
-
/******/
|
|
2696
|
-
return cachedModule.exports;
|
|
2697
|
-
/******/
|
|
2698
|
-
}
|
|
2699
|
-
/******/
|
|
2700
|
-
// Create a new module (and put it into the cache)
|
|
2701
|
-
|
|
2702
|
-
/******/
|
|
2703
|
-
|
|
2704
|
-
|
|
2705
|
-
var module = __webpack_module_cache__[moduleId] = {
|
|
2706
|
-
/******/
|
|
2707
|
-
id: moduleId,
|
|
2708
|
-
|
|
2709
|
-
/******/
|
|
2710
|
-
loaded: false,
|
|
2711
|
-
|
|
2712
|
-
/******/
|
|
2713
|
-
exports: {}
|
|
2714
|
-
/******/
|
|
2715
|
-
|
|
2716
|
-
};
|
|
2717
|
-
/******/
|
|
2718
|
-
|
|
2719
|
-
/******/
|
|
2720
|
-
// Execute the module function
|
|
2721
|
-
|
|
2722
|
-
/******/
|
|
2723
|
-
|
|
2724
|
-
__webpack_modules__[moduleId](module, module.exports, __webpack_require__);
|
|
2725
|
-
/******/
|
|
2726
|
-
|
|
2727
|
-
/******/
|
|
2728
|
-
// Flag the module as loaded
|
|
2729
|
-
|
|
2730
|
-
/******/
|
|
2731
|
-
|
|
2732
|
-
|
|
2733
|
-
module.loaded = true;
|
|
2734
|
-
/******/
|
|
2735
|
-
|
|
2736
|
-
/******/
|
|
2737
|
-
// Return the exports of the module
|
|
2738
|
-
|
|
2739
|
-
/******/
|
|
2740
|
-
|
|
2741
|
-
return module.exports;
|
|
2742
|
-
/******/
|
|
2743
|
-
}
|
|
2744
|
-
/******/
|
|
2745
|
-
|
|
2746
|
-
/************************************************************************/
|
|
2747
|
-
|
|
2748
|
-
/******/
|
|
2749
|
-
|
|
2750
|
-
/* webpack/runtime/define property getters */
|
|
2751
|
-
|
|
2752
|
-
/******/
|
|
2753
|
-
|
|
2754
|
-
|
|
2755
|
-
!function () {
|
|
2756
|
-
/******/
|
|
2757
|
-
// define getter functions for harmony exports
|
|
2758
|
-
|
|
2759
|
-
/******/
|
|
2760
|
-
__webpack_require__.d = function (exports, definition) {
|
|
2761
|
-
/******/
|
|
2762
|
-
for (var key in definition) {
|
|
2763
|
-
/******/
|
|
2764
|
-
if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
|
|
2765
|
-
/******/
|
|
2766
|
-
Object.defineProperty(exports, key, {
|
|
2767
|
-
enumerable: true,
|
|
2768
|
-
get: definition[key]
|
|
2769
|
-
});
|
|
2770
|
-
/******/
|
|
2771
|
-
}
|
|
2772
|
-
/******/
|
|
2773
|
-
|
|
2774
|
-
}
|
|
2775
|
-
/******/
|
|
2776
|
-
|
|
2777
|
-
};
|
|
2778
|
-
/******/
|
|
2779
|
-
|
|
2780
|
-
}();
|
|
2781
|
-
/******/
|
|
2782
|
-
|
|
2783
|
-
/******/
|
|
2784
|
-
|
|
2785
|
-
/* webpack/runtime/global */
|
|
2786
|
-
|
|
2787
|
-
/******/
|
|
2788
|
-
|
|
2789
|
-
!function () {
|
|
2790
|
-
/******/
|
|
2791
|
-
__webpack_require__.g = function () {
|
|
2792
|
-
/******/
|
|
2793
|
-
if (typeof globalThis === 'object') return globalThis;
|
|
2794
|
-
/******/
|
|
2795
|
-
|
|
2796
|
-
try {
|
|
2797
|
-
/******/
|
|
2798
|
-
return this || new Function('return this')();
|
|
2799
|
-
/******/
|
|
2800
|
-
} catch (e) {
|
|
2801
|
-
/******/
|
|
2802
|
-
if (typeof window === 'object') return window;
|
|
2803
|
-
/******/
|
|
2804
|
-
}
|
|
2805
|
-
/******/
|
|
2806
|
-
|
|
2807
|
-
}();
|
|
2808
|
-
/******/
|
|
2809
|
-
|
|
2810
|
-
}();
|
|
2811
|
-
/******/
|
|
2812
|
-
|
|
2813
|
-
/******/
|
|
2814
|
-
|
|
2815
|
-
/* webpack/runtime/harmony module decorator */
|
|
2816
|
-
|
|
2817
|
-
/******/
|
|
2818
|
-
|
|
2819
|
-
!function () {
|
|
2820
|
-
/******/
|
|
2821
|
-
__webpack_require__.hmd = function (module) {
|
|
2822
|
-
/******/
|
|
2823
|
-
module = Object.create(module);
|
|
2824
|
-
/******/
|
|
2825
|
-
|
|
2826
|
-
if (!module.children) module.children = [];
|
|
2827
|
-
/******/
|
|
2828
|
-
|
|
2829
|
-
Object.defineProperty(module, 'exports', {
|
|
2830
|
-
/******/
|
|
2831
|
-
enumerable: true,
|
|
2832
|
-
|
|
2833
|
-
/******/
|
|
2834
|
-
set: function () {
|
|
2835
|
-
/******/
|
|
2836
|
-
throw new Error('ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: ' + module.id);
|
|
2837
|
-
/******/
|
|
2838
|
-
}
|
|
2839
|
-
/******/
|
|
2840
|
-
|
|
2841
|
-
});
|
|
2842
|
-
/******/
|
|
2843
|
-
|
|
2844
|
-
return module;
|
|
2845
|
-
/******/
|
|
2846
|
-
};
|
|
2847
|
-
/******/
|
|
2848
|
-
|
|
2849
|
-
}();
|
|
2850
|
-
/******/
|
|
2851
|
-
|
|
2852
|
-
/******/
|
|
2853
|
-
|
|
2854
|
-
/* webpack/runtime/hasOwnProperty shorthand */
|
|
2855
|
-
|
|
2856
|
-
/******/
|
|
2857
|
-
|
|
2858
|
-
!function () {
|
|
2859
|
-
/******/
|
|
2860
|
-
__webpack_require__.o = function (obj, prop) {
|
|
2861
|
-
return Object.prototype.hasOwnProperty.call(obj, prop);
|
|
2862
|
-
};
|
|
2863
|
-
/******/
|
|
2864
|
-
|
|
2865
|
-
}();
|
|
2866
|
-
/******/
|
|
2867
|
-
|
|
2868
|
-
/******/
|
|
2869
|
-
|
|
2870
|
-
/* webpack/runtime/make namespace object */
|
|
2871
|
-
|
|
2872
|
-
/******/
|
|
2873
|
-
|
|
2874
|
-
!function () {
|
|
2875
|
-
/******/
|
|
2876
|
-
// define __esModule on exports
|
|
2877
|
-
|
|
2878
|
-
/******/
|
|
2879
|
-
__webpack_require__.r = function (exports) {
|
|
2880
|
-
/******/
|
|
2881
|
-
if (typeof Symbol !== 'undefined' && Symbol.toStringTag) {
|
|
2882
|
-
/******/
|
|
2883
|
-
Object.defineProperty(exports, Symbol.toStringTag, {
|
|
2884
|
-
value: 'Module'
|
|
2885
|
-
});
|
|
2886
|
-
/******/
|
|
2887
|
-
}
|
|
2888
|
-
/******/
|
|
2889
|
-
|
|
2890
|
-
|
|
2891
|
-
Object.defineProperty(exports, '__esModule', {
|
|
2892
|
-
value: true
|
|
2893
|
-
});
|
|
2894
|
-
/******/
|
|
2895
|
-
};
|
|
2896
|
-
/******/
|
|
2897
|
-
|
|
2898
|
-
}();
|
|
2899
|
-
/******/
|
|
2900
|
-
|
|
2901
|
-
/************************************************************************/
|
|
2902
|
-
|
|
2903
|
-
/******/
|
|
2904
|
-
|
|
2905
|
-
/******/
|
|
2906
|
-
// startup
|
|
2907
|
-
|
|
2908
|
-
/******/
|
|
2909
|
-
// Load entry module and return exports
|
|
2910
|
-
|
|
2911
|
-
/******/
|
|
2912
|
-
// This entry module is referenced by other modules so it can't be inlined
|
|
2913
|
-
|
|
2914
|
-
/******/
|
|
2915
|
-
|
|
2916
|
-
var __webpack_exports__ = __webpack_require__("./Engine/src/Forms/Client/Client.ts");
|
|
2917
|
-
/******/
|
|
2918
|
-
|
|
2919
|
-
/******/
|
|
2920
1280
|
|
|
1281
|
+
var __webpack_exports__ = __webpack_require__(133);
|
|
2921
1282
|
})();
|
|
2922
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Aa29udHVyLmNhbmR5L3dvcmtzcGFjZS9Db21tb24vQ2FuZHlBcGlDbGllbnQvQ2xpZW50RHJhZnRJbmZvL0dldENsaWVudERyYWZ0SW5mb1VybC50cyIsIndlYnBhY2s6Ly9Aa29udHVyLmNhbmR5L3dvcmtzcGFjZS9Db21tb24vRXJyb3JzLnRzIiwid2VicGFjazovL0Brb250dXIuY2FuZHkvd29ya3NwYWNlL0NvbW1vbi9UeXBpbmdVdGlscy50cyIsIndlYnBhY2s6Ly9Aa29udHVyLmNhbmR5L3dvcmtzcGFjZS9FbmdpbmUvc3JjL0Zvcm1zL0NsaWVudC9DbGllbnQudHMiLCJ3ZWJwYWNrOi8vQGtvbnR1ci5jYW5keS93b3Jrc3BhY2UvRW5naW5lL3NyYy9Gb3Jtcy9DbGllbnQvQ2xpZW50U2V0dGluZ3MudHMiLCJ3ZWJwYWNrOi8vQGtvbnR1ci5jYW5keS93b3Jrc3BhY2UvRW5naW5lL3NyYy9Gb3Jtcy9DbGllbnQvTGVnYWN5UHVibGljRm9ybS9DcmVhdGVMZWdhY3lQdWJsaWNGb3JtLnRzIiwid2VicGFjazovL0Brb250dXIuY2FuZHkvd29ya3NwYWNlL0VuZ2luZS9zcmMvSGVscGVycy9Mb2FkSW50b0RvY3VtZW50LnRzIiwid2VicGFjazovL0Brb250dXIuY2FuZHkvd29ya3NwYWNlL25vZGVfbW9kdWxlcy93aGF0d2ctZmV0Y2gvZmV0Y2guanMiLCJ3ZWJwYWNrOi8vQGtvbnR1ci5jYW5keS93b3Jrc3BhY2Uvd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi9Aa29udHVyLmNhbmR5L3dvcmtzcGFjZS93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vQGtvbnR1ci5jYW5keS93b3Jrc3BhY2Uvd2VicGFjay9ydW50aW1lL2dsb2JhbCIsIndlYnBhY2s6L0Brb250dXIuY2FuZHkvd29ya3NwYWNlL3dlYnBhY2svcnVudGltZS9oYXJtb255IG1vZHVsZSBkZWNvcmF0b3IiLCJ3ZWJwYWNrOi9Aa29udHVyLmNhbmR5L3dvcmtzcGFjZS93ZWJwYWNrL3J1bnRpbWUvaGFzT3duUHJvcGVydHkgc2hvcnRoYW5kIiwid2VicGFjazovQGtvbnR1ci5jYW5keS93b3Jrc3BhY2Uvd2VicGFjay9ydW50aW1lL21ha2UgbmFtZXNwYWNlIG9iamVjdCIsIndlYnBhY2s6Ly9Aa29udHVyLmNhbmR5L3dvcmtzcGFjZS93ZWJwYWNrL3N0YXJ0dXAiXSwibmFtZXMiOlsiZ2V0Q2xpZW50RHJhZnRJbmZvVXJsIiwiZHJhZnRJZCIsIkFwcGxpY2F0aW9uRXJyb3IiLCJOb3RJbXBsZW1lbnRlZEVycm9yIiwiTm90U3VwcG9ydGVkRXJyb3IiLCJtZXNzYWdlIiwiSW52YWxpZFByb2dyYW1TdGF0ZUVycm9yIiwiSW52YWxpZEFyZ3VtZW50RXJyb3IiLCJUeXBpbmdFcnJvciIsImlzTm90TnVsbE9yVW5kZWZpbmVkIiwiaW5wdXQiLCJzdHJpbmdpZnlVbmtub3duRXJyb3IiLCJlcnJvciIsImVuc3VyZU5vdE51bGxPclVuZGVmaW5lZCIsIm5vb3AiLCJyZWplY3QiLCJpc0xlbmd0aEdyZWF0ZXJUaGVuT3JFcXVhbCIsIml0ZW1zIiwibWluTGVuZ3RoT3JVbmRlZmluZWQiLCJhcnJheUhhc0xlbmd0aCIsImFycmF5SXNOb3RFbXB0eSIsImFycmF5SGFzQXRMZWFzdE9uZUl0ZW0iLCJlbnN1cmVBcnJheUlzTm90RW1wdHkiLCJlbnN1cmVBcnJheUhhc0xlbmd0aCIsImVuc3VyZUFycmF5TGVuZ3RoR3JlYXRlclRoZW5PckVxdWFsIiwiZW5zdXJlTmV2ZXIiLCJlbnN1cmVBbmRHZXRTdHJpbmciLCJydW5Bc3luY0FjdGlvbiIsImFjdGlvbiIsImlzTnVsbE9yRW1wdHkiLCJpc05vdE51bGxPckVtcHR5IiwiaXNOdWxsT3JXaGl0ZVNwYWNlIiwidHJpbUxhc3RTbGFzaCIsInVybCIsImFzc2VydElzIiwiZGVmYXVsdENhbGxiYWNrIiwicGFyc2VCb29sIiwidmFsdWUiLCJCb29sZWFuIiwicmVsYXRpdmVVcmwiLCJiYXNlVXJsIiwiZ2xvYmFsIiwiYnVpbGRVcmwiLCJwYXJhbXMiLCJxdWVyeVBhcnRzIiwicGFyYW1OYW1lIiwiT2JqZWN0IiwicGFyYW1WYWx1ZSIsImVuY29kZVVSSUNvbXBvbmVudCIsInBhdGgiLCJpc0FsbG93ZWQiLCJkb21haW5zIiwiZ2V0UGFyYW1ldGVyQnlOYW1lIiwicGFyYW0iLCJrZXkiLCJydW5QYXJhbGxlbCIsImNvbXBsZXRlZCIsInRhc2tzIiwidGFzayIsImNhbGxiYWNrIiwiaXNFbmdpbmVWZXJzaW9uR3JlYXRlclRoYW5PckVxdWFsIiwibGVmdE51bWJlcnMiLCJwYXJzZUludCIsInJpZ2h0TnVtYmVycyIsImxvYWRGb3JtIiwiZ2Z2IiwiZW5naW5lVmVyc2lvbiIsInJlc291cmNlc1ZlcnNpb24iLCJzZXR0aW5ncyIsImlzTmVlZEVuZ2luZSIsIm5vU3R5bGVzRm9yR2Z2IiwibmVlZExvYWRTdHlsZXNGb3JHZnYiLCJtaW4iLCJ2IiwicmVzb3VyY2Vab25lIiwiTG9hZEludG9Eb2N1bWVudCIsInJlbmRlckZvcm0iLCJmb3JtRW50cnlQb2ludCIsImV4dGVuZGVkU2V0dGluZ3MiLCJwdWJsaWNGb3JtIiwiZm9ybSIsImNyZWF0ZUxlZ2FjeVB1YmxpY0Zvcm0iLCJnZXRFbmdpbmVFbnRyeVBvaW50Iiwic3RhcnQiLCJucyIsIm9wdGlvbnMiLCJjbGllbnRTZXR0aW5ncyIsImNsaWVudERyYWZ0VXJsIiwicmVxdWVzdE9wdGlvbnMiLCJtZXRob2QiLCJmZXRjaEltcGwiLCJmZXRjaCIsIngiLCJjbGllbnREcmFmdEluZm8iLCJhdXRob3JpemVkIiwiY2F1bGRyb25BcGlVcmwiLCJpc1Rlc3RTZXJ2ZXIiLCJyZW5kZXJDYWNoaW5nRm9ySUU4Iiwibm9ybWFsaXphdGlvbk9uU2VydmVyIiwibm9ybWF0aXZlVXJsIiwia29udHVyRG9tYWlucyIsImFib25JZCIsIm9yZ0lkIiwidXNlcklkIiwiaXNJbmRpdmlkdWFsIiwiaXNGb3JlaWduIiwiZmVlZGJhY2tFbmFibGVkIiwiY2FuZHlUb3VyQXZhaWxhYmxlIiwiZXZlbnRFbWl0dGVyIiwiZm9ybUluZm8iLCJwcmludEluZm8iLCJyZWdpb25zIiwiaGFzVGVtcGxhdGVzIiwibW9kZWwiLCJpc0Rpc2FibGVkQ2xlYW5Gb3JtIiwiaXNEaXNhYmxlZENsb3NlQnV0dG9uIiwiaXNEaXNhYmxlZENsb3NlQW5kU2F2ZUJ1dHRvbiIsImF1dGhlbnRpY2F0aW9uIiwidGhlbWUiLCJsb2FkRXJyb3IiLCJyZW5kZXIiLCJ0ZW1wbGF0ZXNBcGkiLCJDYW5keUNsaWVudEV4cG9ydHMiLCJlbnRyeVBvaW50IiwicGFydGlhbFJlbmRlcmluZ0ZvcklFOCIsImtlZm9ybXNVcmwiLCJtb2RlbENoYW5nZUV2ZW50UGF0aCIsImZpZWxkTmFtZSIsIm1hcENodW5rVmFsdWVzIiwiY2h1bmsiLCJyZXN1bHQiLCJyZWR1Y2VDaHVua1ZhbHVlcyIsIkxlZ2FjeVB1YmxpY0Zvcm0iLCJjb25zb2xlIiwia2V5cyIsImVycm9yQ291bnQiLCJwYXRoT3JNb2RlbENodW5rIiwiQXJyYXkiLCJpbm5lckNodW5rIiwicGF0aE9yQXJyYXkiLCJzY3JpcHRMb2FkZWQiLCJoZWFkIiwiZG9jdW1lbnQiLCJzY3JpcHQiLCJyZXNvbHZlIiwibGluayJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRU8sZUFBQSxxQkFBQSxDQUFBLE9BQUEsRUFBcUQ7QUFDeEQ7QUFDQTtBQUNBLGVBQUEsU0FBQSxNQUFBLENBQWdCQyxPQUFPLENBQXZCLEVBQUEsRUFBQSxVQUFBLEVBQUEsTUFBQSxDQUFxQ0EsT0FBTyxDQUE1QyxPQUFBLEVBQUEsb0JBQUEsQ0FBQTtBQUNIOzs7Ozs7Ozs7OztnQ0FKZUQscUIsRUFBQUEsdUIsRUFBQUEsMkc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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O0FBSUEsaUJBQ0ksQ0FBQSxDQUFBLGFBQUEsR0FBQ0QsV0FBVyxDQUFaLENBQVksQ0FBWixNQUFBLElBQUEsSUFBQSxhQUFBLEtBQUEsS0FBQSxDQUFBLEdBQUEsYUFBQSxHQUFBLENBQUEsS0FBQSxDQUFBLGNBQUEsR0FBeUJFLFlBQVksQ0FBckMsQ0FBcUMsQ0FBckMsTUFBQSxJQUFBLElBQUEsY0FBQSxLQUFBLEtBQUEsQ0FBQSxHQUFBLGNBQUEsR0FBQSxDQUFBLEtBQ0MsQ0FBQSxDQUFBLGNBQUEsR0FBQ0YsV0FBVyxDQUFaLENBQVksQ0FBWixNQUFBLElBQUEsSUFBQSxjQUFBLEtBQUEsS0FBQSxDQUFBLEdBQUEsY0FBQSxHQUFBLENBQUEsT0FBQSxDQUFBLGVBQUEsR0FBMkJFLFlBQVksQ0FBdkMsQ0FBdUMsQ0FBdkMsTUFBQSxJQUFBLElBQUEsZUFBQSxLQUFBLEtBQUEsQ0FBQSxHQUFBLGVBQUEsR0FBQSxDQUFBLE1BQ0ksQ0FBQSxDQUFBLGNBQUEsR0FBQ0YsV0FBVyxDQUFaLENBQVksQ0FBWixNQUFBLElBQUEsSUFBQSxjQUFBLEtBQUEsS0FBQSxDQUFBLEdBQUEsY0FBQSxHQUFBLENBQUEsS0FBQSxDQUFBLGVBQUEsR0FBeUJFLFlBQVksQ0FBckMsQ0FBcUMsQ0FBckMsTUFBQSxJQUFBLElBQUEsZUFBQSxLQUFBLEtBQUEsQ0FBQSxHQUFBLGVBQUEsR0FBQSxDQUFBLEtBQ0ksQ0FBQSxDQUFBLGNBQUEsR0FBQ0YsV0FBVyxDQUFaLENBQVksQ0FBWixNQUFBLElBQUEsSUFBQSxjQUFBLEtBQUEsS0FBQSxDQUFBLEdBQUEsY0FBQSxHQUFBLENBQUEsT0FBQSxDQUFBLGVBQUEsR0FBMkJFLFlBQVksQ0FBdkMsQ0FBdUMsQ0FBdkMsTUFBQSxJQUFBLElBQUEsZUFBQSxLQUFBLEtBQUEsQ0FBQSxHQUFBLGVBQUEsR0FBQSxDQUFBLEtBQ0csQ0FBQSxDQUFBLGNBQUEsR0FBQ0YsV0FBVyxDQUFaLENBQVksQ0FBWixNQUFBLElBQUEsSUFBQSxjQUFBLEtBQUEsS0FBQSxDQUFBLEdBQUEsY0FB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QSxDQUFBLFVBQUEsTUFBQSxFQUFBO0FBQ0EsaUJBQUEsTUFBQSxDQUFBLE1BQUEsQ0FBQSxDQUFBLENBQUEsRUFBQSxNQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0ssV0FGTCxFQUVLLElBRkw7QUFHQSxTQUpJLE1BSUEsSUFBQSxPQUFBLEVBQUE7QUFDSixVQUFBLE1BQUEsQ0FBQSxtQkFBQSxDQUFBLE9BQUEsRUFBQSxPQUFBLENBQUEsVUFBQSxJQUFBLEVBQUE7QUFDQSxpQkFBQSxNQUFBLENBQUEsSUFBQSxFQUFBLE9BQUEsQ0FBQSxJQUFBLENBQUE7QUFDSyxXQUZMLEVBRUssSUFGTDtBQUdBO0FBQ0E7O0FBRUEsTUFBQSxPQUFBLENBQUEsU0FBQSxDQUFBLE1BQUEsR0FBQSxVQUFBLElBQUEsRUFBQSxLQUFBLEVBQUE7QUFDQSxRQUFBLElBQUEsR0FBQSxhQUFBLENBQUEsSUFBQSxDQUFBO0FBQ0EsUUFBQSxLQUFBLEdBQUEsY0FBQSxDQUFBLEtBQUEsQ0FBQTtBQUNBLFlBQUEsUUFBQSxHQUFBLEtBQUEsR0FBQSxDQUFBLElBQUEsQ0FBQTtBQUNBLGFBQUEsR0FBQSxDQUFBLElBQUEsSUFBQSxRQUFBLEdBQUEsUUFBQSxHQUFBLElBQUEsR0FBQSxLQUFBLEdBQUEsS0FBQTtBQUNBLE9BTEE7O0FBT0EsTUFBQSxPQUFBLENBQUEsU0FBQSxDQUFBLFFBQUEsSUFBQSxVQUFBLElBQUEsRUFBQTtBQUNBLGVBQUEsS0FBQSxHQUFBLENBQUEsYUFBQSxDQUFBLElBQUEsQ0FBQSxDQUFBO0FBQ0EsT0FGQTs7QUFJQSxNQUFBLE9BQUEsQ0FBQSxTQUFBLENBQUEsR0FBQSxHQUFBLFVBQUEsSUFBQSxFQUFBO0FBQ0EsUUFBQSxJQUFBLEdBQUEsYUFBQSxDQUFBLElBQUEsQ0FBQTtBQUNBLGVBQUEsS0FBQSxHQUFBLENBQUEsSUFBQSxJQUFBLEtBQUEsR0FBQSxDQUFBLElBQUEsQ0FBQSxHQUFBLElBQUE7QUFDQSxPQUhBOztBQUtBLE1BQUEsT0FBQSxDQUFBLFNBQUEsQ0FBQSxHQUFBLEdBQUEsVUFBQSxJQUFBLEVBQUE7QUFDQSxlQUFBLEtBQUEsR0FBQSxDQUFBLGNBQUEsQ0FBQSxhQUFBLENBQUEsSUFBQSxDQUFBLENBQUE7QUFDQSxPQUZBOztBQUlBLE1BQUEsT0FBQSxDQUFBLFNBQUEsQ0FBQSxHQUFBLEdBQUEsVUFBQSxJQUFBLEVBQUEsS0FBQSxFQUFBO0FBQ0EsYUFBQSxHQUFBLENBQUEsYUFBQSxDQUFBLElBQUEsQ0FBQSxJQUFBLGNBQUEsQ0FBQSxLQUFBLENBQUE7QUFDQSxPQUZBOztBQUlBLE1BQUEsT0FBQSxDQUFBLFNBQUEsQ0FBQSxPQUFBLEdBQUEsVUFBQSxRQUFBLEVBQUEsT0FBQSxFQUFBO0FBQ0EsYUFBQSxJQUFBLElBQUEsSUFBQSxLQUFBLEdBQUEsRUFBQTtBQUNBLGNBQUEsS0FBQSxHQUFBLENBQUEsY0FBQSxDQUFBLElBQUEsQ0FBQSxFQUFBO0FBQ0EsWUFBQSxRQUFBLENBQUEsSUFBQSxDQUFBLE9BQUEsRUFBQSxLQUFBLEdBQUEsQ0FBQSxJQUFBLENBQUEsRUFBQSxJQUFBLEVBQUEsSUFBQTtBQUNBO0FBQ0E7QUFDQSxPQU5BOztBQVFBLE1BQUEsT0FBQSxDQUFBLFNBQUEsQ0FBQSxJQUFBLEdBQUEsWUFBQTtBQUNBLFlBQUEsS0FBQSxHQUFBLEVBQUE7QUFDQSxhQUFBLE9BQUEsQ0FBQSxVQUFBLEtBQUEsRUFBQSxJQUFBLEVBQUE7QUFDQSxVQUFBLEtBQUEsQ0FBQSxJQUFBLENBQUEsSUFBQTtBQUNHLFNBRkg7QUFHQSxlQUFBLFdBQUEsQ0FBQSxLQUFBLENBQUE7QUFDQSxPQU5BOztBQVFBLE1BQUEsT0FBQSxDQUFBLFNBQUEsQ0FBQSxNQUFBLEdBQUEsWUFBQTtBQUNBLFlBQUEsS0FBQSxHQUFBLEVBQUE7QUFDQSxhQUFBLE9BQUEsQ0FBQSxVQUFBLEtBQUEsRUFBQTtBQUNBLFVBQUEsS0FBQSxDQUFBLElBQUEsQ0FBQSxLQUFBO0FBQ0csU0FGSDtBQUdBLGVBQUEsV0FBQSxDQUFBLEtBQUEsQ0FBQTtBQUNBLE9BTkE7O0FBUUEsTUFBQSxPQUFBLENBQUEsU0FBQSxDQUFBLE9BQUEsR0FBQSxZQUFBO0FBQ0EsWUFBQSxLQUFBLEdBQUEsRUFBQTtBQUNBLGFBQUEsT0FBQSxDQUFBLFVBQUEsS0FBQSxFQUFBLElBQUEsRUFBQTtBQUNBLFVBQUEsS0FBQSxDQUFBLElBQUEsQ0FBQSxDQUFBLElBQUEsRUFBQSxLQUFBLENBQUE7QUFDRyxTQUZIO0FBR0EsZUFBQSxXQUFBLENBQUEsS0FBQSxDQUFBO0FBQ0EsT0FOQTs7QUFRQSxVQUFBLE9BQUEsQ0FBQSxRQUFBLEVBQUE7QUFDQSxRQUFBLE9BQUEsQ0FBQSxTQUFBLENBQUEsTUFBQSxDQUFBLFFBQUEsSUFBQSxPQUFBLENBQUEsU0FBQSxDQUFBLE9BQUE7QUFDQTs7QUFFQSxlQUFBLFFBQUEsQ0FBQSxJQUFBLEVBQUE7QUFDQSxZQUFBLElBQUEsQ0FBQSxRQUFBLEVBQUE7QUFDQSxpQkFBQSxPQUFBLENBQUEsTUFBQSxDQUFBLElBQUEsU0FBQSxDQUFBLGNBQUEsQ0FBQSxDQUFBO0FBQ0E7O0FBQ0EsUUFBQSxJQUFBLENBQUEsUUFBQSxHQUFBLElBQUE7QUFDQTs7QUFFQSxlQUFBLGVBQUEsQ0FBQSxNQUFBLEVBQUE7QUFDQSxlQUFBLElBQUEsT0FBQSxDQUFBLFVBQUEsT0FBQSxFQUFBLE1BQUEsRUFBQTtBQUNBLFVBQUEsTUFBQSxDQUFBLE1BQUEsR0FBQSxZQUFBO0FBQ0EsWUFBQSxPQUFBLENBQUEsTUFBQSxDQUFBLE1BQUEsQ0FBQTtBQUNBLFdBRkE7O0FBR0EsVUFBQSxNQUFBLENBQUEsT0FBQSxHQUFBLFlBQUE7QUFDQSxZQUFBLE1BQUEsQ0FBQSxNQUFBLENBQUEsS0FBQSxDQUFBO0FBQ0EsV0FGQTtBQUdHLFNBUEgsQ0FBQTtBQVFBOztBQUVBLGVBQUEscUJBQUEsQ0FBQSxJQUFBLEVBQUE7QUFDQSxZQUFBLE1BQUEsR0FBQSxJQUFBLFVBQUEsRUFBQTtBQUNBLFlBQUEsT0FBQSxHQUFBLGVBQUEsQ0FBQSxNQUFBLENBQUE7QUFDQSxRQUFBLE1BQUEsQ0FBQSxpQkFBQSxDQUFBLElBQUE7QUFDQSxlQUFBLE9BQUE7QUFDQTs7QUFFQSxlQUFBLGNBQUEsQ0FBQSxJQUFBLEVBQUE7QUFDQSxZQUFBLE1BQUEsR0FBQSxJQUFBLFVBQUEsRUFBQTtBQUNBLFlBQUEsT0FBQSxHQUFBLGVBQUEsQ0FBQSxNQUFBLENBQUE7QUFDQSxRQUFBLE1BQUEsQ0FBQSxVQUFBLENBQUEsSUFBQTtBQUNBLGVBQUEsT0FBQTtBQUNBOztBQUVBLGVBQUEscUJBQUEsQ0FBQSxHQUFBLEVBQUE7QUFDQSxZQUFBLElBQUEsR0FBQSxJQUFBLFVBQUEsQ0FBQSxHQUFBLENBQUE7QUFDQSxZQUFBLEtBQUEsR0FBQSxJQUFBLEtBQUEsQ0FBQSxJQUFBLENBQUEsTUFBQSxDQUFBOztBQUVBLGFBQUEsSUFBQSxDQUFBLEdBQUEsQ0FBQSxFQUFrQixDQUFBLEdBQUEsSUFBQSxDQUFBLE1BQWxCLEVBQW1DLENBQUEsRUFBbkMsRUFBbUM7QUFDbkMsVUFBQSxLQUFBLENBQUEsQ0FBQSxDQUFBLEdBQUEsTUFBQSxDQUFBLFlBQUEsQ0FBQSxJQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQTs7QUFDQSxlQUFBLEtBQUEsQ0FBQSxJQUFBLENBQUEsRUFBQSxDQUFBO0FBQ0E7O0FBRUEsZUFBQSxXQUFBLENBQUEsR0FBQSxFQUFBO0FBQ0EsWUFBQSxHQUFBLENBQUEsS0FBQSxFQUFBO0FBQ0EsaUJBQUEsR0FBQSxDQUFBLEtBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxTQUZBLE1BRUk7QUFDSixjQUFBLElBQUEsR0FBQSxJQUFBLFVBQUEsQ0FBQSxHQUFBLENBQUEsVUFBQSxDQUFBO0FBQ0EsVUFBQSxJQUFBLENBQUEsR0FBQSxDQUFBLElBQUEsVUFBQSxDQUFBLEdBQUEsQ0FBQTtBQUNBLGlCQUFBLElBQUEsQ0FBQSxNQUFBO0FBQ0E7QUFDQTs7QUFFQSxlQUFBLElBQUEsR0FBQTtBQUNBLGFBQUEsUUFBQSxHQUFBLEtBQUE7O0FBRUEsYUFBQSxTQUFBLEdBQUEsVUFBQSxJQUFBLEVBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQUEsUUFBQSxHQUFBLEtBQUEsUUFBQTtBQUNBLGVBQUEsU0FBQSxHQUFBLElBQUE7O0FBQ0EsY0FBQSxDQUFBLElBQUEsRUFBQTtBQUNBLGlCQUFBLFNBQUEsR0FBQSxFQUFBO0FBQ0EsV0FGQSxNQUVNLElBQUEsT0FBQSxJQUFBLEtBQUEsUUFBQSxFQUFBO0FBQ04saUJBQUEsU0FBQSxHQUFBLElBQUE7QUFDQSxXQUZNLE1BRUEsSUFBQSxPQUFBLENBQUEsSUFBQSxJQUFBLElBQUEsQ0FBQSxTQUFBLENBQUEsYUFBQSxDQUFBLElBQUEsQ0FBQSxFQUFBO0FBQ04saUJBQUEsU0FBQSxHQUFBLElBQUE7QUFDQSxXQUZNLE1BRUEsSUFBQSxPQUFBLENBQUEsUUFBQSxJQUFBLFFBQUEsQ0FBQSxTQUFBLENBQUEsYUFBQSxDQUFBLElBQUEsQ0FBQSxFQUFBO0FBQ04saUJBQUEsYUFBQSxHQUFBLElBQUE7QUFDQSxXQUZNLE1BRUEsSUFBQSxPQUFBLENBQUEsWUFBQSxJQUFBLGVBQUEsQ0FBQSxTQUFBLENBQUEsYUFBQSxDQUFBLElBQUEsQ0FBQSxFQUFBO0FBQ04saUJBQUEsU0FBQSxHQUFBLElBQUEsQ0FBQSxRQUFBLEVBQUE7QUFDQSxXQUZNLE1BRUEsSUFBQSxPQUFBLENBQUEsV0FBQSxJQUFBLE9BQUEsQ0FBQSxJQUFBLElBQUEsVUFBQSxDQUFBLElBQUEsQ0FBQSxFQUFBO0FBQ04saUJBQUEsZ0JBQUEsR0FBQSxXQUFBLENBQUEsSUFBQSxDQUFBLE1BQUEsQ0FBQSxDQURNLENBRU47O0FBQ0EsaUJBQUEsU0FBQSxHQUFBLElBQUEsSUFBQSxDQUFBLENBQUEsS0FBQSxnQkFBQSxDQUFBLENBQUE7QUFDQSxXQUpNLE1BSUEsSUFBQSxPQUFBLENBQUEsV0FBQSxLQUFBLFdBQUEsQ0FBQSxTQUFBLENBQUEsYUFBQSxDQUFBLElBQUEsS0FBQSxpQkFBQSxDQUFBLElBQUEsQ0FBQSxDQUFBLEVBQUE7QUFDTixpQkFBQSxnQkFBQSxHQUFBLFdBQUEsQ0FBQSxJQUFBLENB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ZUFBQSxHQUFBLEdBQUEsS0FBQSxDQUFBLEdBQUE7QUFDQSxlQUFBLFdBQUEsR0FBQSxLQUFBLENBQUEsV0FBQTs7QUFDQSxjQUFBLENBQUEsT0FBQSxDQUFBLE9BQUEsRUFBQTtBQUNBLGlCQUFBLE9BQUEsR0FBQSxJQUFBLE9BQUEsQ0FBQSxLQUFBLENBQUEsT0FBQSxDQUFBO0FBQ0E7O0FBQ0EsZUFBQSxNQUFBLEdBQUEsS0FBQSxDQUFBLE1BQUE7QUFDQSxlQUFBLElBQUEsR0FBQSxLQUFBLENBQUEsSUFBQTtBQUNBLGVBQUEsTUFBQSxHQUFBLEtBQUEsQ0FBQSxNQUFBOztBQUNBLGNBQUEsQ0FBQSxJQUFBLElBQUEsS0FBQSxDQUFBLFNBQUEsSUFBQSxJQUFBLEVBQUE7QUFDQSxZQUFBLElBQUEsR0FBQSxLQUFBLENBQUEsU0FBQTtBQUNBLFlBQUEsS0FBQSxDQUFBLFFBQUEsR0FBQSxJQUFBO0FBQ0E7QUFDQSxTQWhCQSxNQWdCSTtBQUNKLGVBQUEsR0FBQSxHQUFBLE1BQUEsQ0FBQSxLQUFBLENBQUE7QUFDQTs7QUFFQSxhQUFBLFdBQUEsR0FBQSxPQUFBLENBQUEsV0FBQSxJQUFBLEtBQUEsV0FBQSxJQUFBLGFBQUE7O0FBQ0EsWUFBQSxPQUFBLENBQUEsT0FBQSxJQUFBLENBQUEsS0FBQSxPQUFBLEVBQUE7QUFDQSxlQUFBLE9BQUEsR0FBQSxJQUFBLE9BQUEsQ0FBQSxPQUFBLENBQUEsT0FBQSxDQUFBO0FBQ0E7O0FBQ0EsYUFBQSxNQUFBLEdBQUEsZUFBQSxDQUFBLE9BQUEsQ0FBQSxNQUFBLElBQUEsS0FBQSxNQUFBLElBQUEsS0FBQSxDQUFBO0FBQ0EsYUFBQSxJQUFBLEdBQUEsT0FBQSxDQUFBLElBQUEsSUFBQSxLQUFBLElBQUEsSUFBQSxJQUFBO0FBQ0EsYUFBQSxNQUFBLEdBQUEsT0FBQSxDQUFBLE1BQUEsSUFBQSxLQUFBLE1BQUE7QUFDQSxhQUFBLFFBQUEsR0FBQSxJQUFBOztBQUVBLFlBQUEsQ0FBQSxLQUFBLE1BQUEsS0FBQSxLQUFBLElBQUEsS0FBQSxNQUFBLEtBQUEsTUFBQSxLQUFBLElBQUEsRUFBQTtBQUNBLGdCQUFBLElBQUEsU0FBQSxDQUFBLDJDQUFBLENBQUE7QUFDQTs7QUFDQSxhQUFBLFNBQUEsQ0FBQSxJQUFBOztBQUVBLFlBQUEsS0FBQSxNQUFBLEtBQUEsS0FBQSxJQUFBLEtBQUEsTUFBQSxLQUFBLE1BQUEsRUFBQTtBQUNBLGNBQUEsT0FBQSxDQUFBLEtBQUEsS0FBQSxVQUFBLElBQUEsT0FBQSxDQUFBLEtBQUEsS0FBQSxVQUFBLEVBQUE7QUFDQTtBQUNBLGdCQUFBLGFBQUEsR0FBQSxlQUFBOztBQUNBLGdCQUFBLGFBQUEsQ0FBQSxJQUFBLENBQUEsS0FBQSxHQUFBLENBQUEsRUFBQTtBQUNBO0FBQ0EsbUJBQUEsR0FBQSxHQUFBLEtBQUEsR0FBQSxDQUFBLE9BQUEsQ0FBQSxhQUFBLEVBQUEsU0FBQSxJQUFBLElBQUEsR0FBQSxPQUFBLEVBQUEsQ0FBQTtBQUNBLGFBSEEsTUFHUTtBQUNSO0FBQ0Esa0JBQUEsYUFBQSxHQUFBLElBQUE7QUFDQSxtQkFBQSxHQUFBLElBQUEsQ0FBQSxhQUFBLENBQUEsSUFBQSxDQUFBLEtBQUEsR0FBQSxJQUFBLEdBQUEsR0FBQSxHQUFBLElBQUEsSUFBQSxHQUFBLElBQUEsSUFBQSxHQUFBLE9BQUEsRUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLE1BQUEsT0FBQSxDQUFBLFNBQUEsQ0FBQSxLQUFBLEdBQUEsWUFBQTtBQUNBLGVBQUEsSUFBQSxPQUFBLENBQUEsSUFBQSxFQUFBO0FBQTRCLFVBQUEsSUFBQSxFQUFBLEtBQUE7QUFBNUIsU0FBQSxDQUFBO0FBQ0EsT0FGQTs7QUFJQSxlQUFBLE1BQUEsQ0FBQSxJQUFBLEVBQUE7QUFDQSxZQUFBLElBQUEsR0FBQSxJQUFBLFFBQUEsRUFBQTtBQUNBLFFBQUEsSUFBQSxDQUNBLElBREEsR0FFQSxLQUZBLENBRUEsR0FGQSxFQUdBLE9BSEEsQ0FHQSxVQUFBLEtBQUEsRUFBQTtBQUNBLGNBQUEsS0FBQSxFQUFBO0FBQ0EsZ0JBQUEsS0FBQSxHQUFBLEtBQUEsQ0FBQSxLQUFBLENBQUEsR0FBQSxDQUFBO0FBQ0EsZ0JBQUEsSUFBQSxHQUFBLEtBQUEsQ0FBQSxLQUFBLEdBQUEsT0FBQSxDQUFBLEtBQUEsRUFBQSxHQUFBLENBQUE7QUFDQSxnQkFBQSxLQUFBLEdBQUEsS0FBQSxDQUFBLElBQUEsQ0FBQSxHQUFBLEVBQUEsT0FBQSxDQUFBLEtBQUEsRUFBQSxHQUFBLENBQUE7QUFDQSxZQUFBLElBQUEsQ0FBQSxNQUFBLENBQUEsa0JBQUEsQ0FBQSxJQUFBLENBQUEsRUFBQSxrQkFBQSxDQUFBLEtBQUEsQ0FBQTtBQUNBO0FBQ0ssU0FWTDtBQVdBLGVBQUEsSUFBQTtBQUNBOztBQUVBLGVBQUEsWUFBQSxDQUFBLFVBQUEsRUFBQTtBQUNBLFlBQUEsT0FBQSxHQUFBLElBQUEsT0FBQSxFQUFBLENBREEsQ0FFQTtBQUNBOztBQUNBLFlBQUEsbUJBQUEsR0FBQSxVQUFBLENBQUEsT0FBQSxDQUFBLGNBQUEsRUFBQSxHQUFBLENBQUEsQ0FKQSxDQUtBO0FBQ0E7QUFDQTs7QUFDQSxRQUFBLG1CQUFBLENBQ0EsS0FEQSxDQUNBLElBREEsRUFFQSxHQUZBLENBRUEsVUFBQSxNQUFBLEVBQUE7QUFDQSxpQkFBQSxNQUFBLENBQUEsT0FBQSxDQUFBLElBQUEsTUFBQSxDQUFBLEdBQUEsTUFBQSxDQUFBLE1BQUEsQ0FBQSxDQUFBLEVBQUEsTUFBQSxDQUFBLE1BQUEsQ0FBQSxHQUFBLE1BQUE7QUFDSyxTQUpMLEVBS0EsT0FMQSxDQUtBLFVBQUEsSUFBQSxFQUFBO0FBQ0EsY0FBQSxLQUFBLEdBQUEsSUFBQSxDQUFBLEtBQUEsQ0FBQSxHQUFBLENBQUE7QUFDQSxjQUFBLEdBQUEsR0FBQSxLQUFBLENBQUEsS0FBQSxHQUFBLElBQUEsRUFBQTs7QUFDQSxjQUFBLEdBQUEsRUFBQTtBQUNBLGdCQUFBLEtBQUEsR0FBQSxLQUFBLENBQUEsSUFBQSxDQUFBLEdBQUEsRUFBQSxJQUFBLEVBQUE7QUFDQSxZQUFBLE9BQUEsQ0FBQSxNQUFBLENBQUEsR0FBQSxFQUFBLEtBQUE7QUFDQTtBQUNLLFNBWkw7QUFhQSxlQUFBLE9BQUE7QUFDQTs7QUFFQSxNQUFBLElBQUEsQ0FBQSxJQUFBLENBQUEsT0FBQSxDQUFBLFNBQUE7O0FBRU8sZUFBQSxRQUFBLENBQUEsUUFBQSxFQUFBLE9BQUEsRUFBQTtBQUNQLFlBQUEsRUFBQSxnQkFBQSxRQUFBLENBQUEsRUFBQTtBQUNBLGdCQUFBLElBQUEsU0FBQSxDQUFBLDRGQUFBLENBQUE7QUFDQTs7QUFDQSxZQUFBLENBQUEsT0FBQSxFQUFBO0FBQ0EsVUFBQSxPQUFBLEdBQUEsRUFBQTtBQUNBOztBQUVBLGFBQUEsSUFBQSxHQUFBLFNBQUE7QUFDQSxhQUFBLE1BQUEsR0FBQSxPQUFBLENBQUEsTUFBQSxLQUFBLFNBQUEsR0FBQSxHQUFBLEdBQUEsT0FBQSxDQUFBLE1BQUE7QUFDQSxhQUFBLEVBQUEsR0FBQSxLQUFBLE1BQUEsSUFBQSxHQUFBLElBQUEsS0FBQSxNQUFBLEdBQUEsR0FBQTtBQUNBLGFBQUEsVUFBQSxHQUFBLE9BQUEsQ0FBQSxVQUFBLEtBQUEsU0FBQSxHQUFBLEVBQUEsR0FBQSxLQUFBLE9BQUEsQ0FBQSxVQUFBO0FBQ0EsYUFBQSxPQUFBLEdBQUEsSUFBQSxPQUFBLENBQUEsT0FBQSxDQUFBLE9BQUEsQ0FBQTtBQUNBLGFBQUEsR0FBQSxHQUFBLE9BQUEsQ0FBQSxHQUFBLElBQUEsRUFBQTs7QUFDQSxhQUFBLFNBQUEsQ0FBQSxRQUFBO0FBQ0E7O0FBRUEsTUFBQSxJQUFBLENBQUEsSUFBQSxDQUFBLFFBQUEsQ0FBQSxTQUFBOztBQUVBLE1BQUEsUUFBQSxDQUFBLFNBQUEsQ0FBQSxLQUFBLEdBQUEsWUFBQTtBQUNBLGVBQUEsSUFBQSxRQUFBLENBQUEsS0FBQSxTQUFBLEVBQUE7QUFDQSxVQUFBLE1BQUEsRUFBQSxLQUFBLE1BREE7QUFFQSxVQUFBLFVBQUEsRUFBQSxLQUFBLFVBRkE7QUFHQSxVQUFBLE9BQUEsRUFBQSxJQUFBLE9BQUEsQ0FBQSxLQUFBLE9BQUEsQ0FIQTtBQUlBLFVBQUEsR0FBQSxFQUFBLEtBQUE7QUFKQSxTQUFBLENBQUE7QUFNQSxPQVBBOztBQVNBLE1BQUEsUUFBQSxDQUFBLEtBQUEsR0FBQSxZQUFBO0FBQ0EsWUFBQSxRQUFBLEdBQUEsSUFBQSxRQUFBLENBQUEsSUFBQSxFQUFBO0FBQXFDLFVBQUEsTUFBQSxFQUFBLENBQXJDO0FBQXFDLFVBQUEsVUFBQSxFQUFBO0FBQXJDLFNBQUEsQ0FBQTtBQUNBLFFBQUEsUUFBQSxDQUFBLElBQUEsR0FBQSxPQUFBO0FBQ0EsZUFBQSxRQUFBO0FBQ0EsT0FKQTs7QUFNQSxVQUFBLGdCQUFBLEdBQUEsQ0FBQSxHQUFBLEVBQUEsR0FBQSxFQUFBLEdBQUEsRUFBQSxHQUFBLEVBQUEsR0FBQSxDQUFBOztBQUVBLE1BQUEsUUFBQSxDQUFBLFFBQUEsR0FBQSxVQUFBLEdBQUEsRUFBQSxNQUFBLEVBQUE7QUFDQSxZQUFBLGdCQUFBLENBQUEsT0FBQSxDQUFBLE1BQUEsTUFBQSxDQUFBLENBQUEsRUFBQTtBQUNBLGdCQUFBLElBQUEsVUFBQSxDQUFBLHFCQUFBLENBQUE7QUFDQTs7QUFFQSxlQUFBLElBQUEsUUFBQSxDQUFBLElBQUEsRUFBQTtBQUE2QixVQUFBLE1BQUEsRUFBQSxNQUE3QjtBQUE2QixVQUFBLE9BQUEsRUFBQTtBQUEwQixZQUFBLFFBQUEsRUFBQTtBQUExQjtBQUE3QixTQUFBLENBQUE7QUFDQSxPQU5BOztBQVFPLFVBQUEsWUFBQSxHQUFBLE1BQUEsQ0FBQSxZQUFBOztBQUNQLFVBQUE7QUFDQSxZQUFBLFlBQUE7QUFDQSxPQUZBLENBRUUsT0FBQSxHQUFBLEVBQUE7QUFDRixRQUFBLFlBQUEsR0FBQSxVQUFBLE9BQUEsRUFBQSxJQUFBLEVBQUE7QUFDQSxlQUFBLE9BQUEsR0FBQSxPQUFBO0FBQ0EsZUFBQSxJQUFBLEdBQUEsSUFBQTtBQUNBLGNBQUEsS0FBQSxHQUFBLEtBQUEsQ0FBQSxPQUFBLENBQUE7QUFDQSxlQUFBLEtBQUEsR0FBQSxLQUFBLENBQUEsS0FBQTtBQUNBLFNBTEE7O0FBTUEsUUFBQSxZQUFBLENBQUEsU0FBQSxHQUFBLE1BQUEsQ0FBQSxNQUFBLENBQUEsS0FBQSxDQUFBLFNBQUEsQ0FBQTtBQUNBLFFBQUEsWUFBQSxDQUFBLFNBQUEsQ0FBQSxXQUFBLEdBQUEsWUFBQTtBQUNBOztBQUVPLGVBQUEsS0FBQSxDQUFBLEtBQUEsRUFBQSxJQUFBLEVBQUE7QUFDUCxlQUFBLElBQUEsT0FBQSxDQUFBLFVBQUEsT0FBQSxFQUFBLE1BQUEsRUFBQTtBQUNBLGNBQUEsT0FBQSxHQUFBLElBQUEsT0FBQSxDQUFBLEtBQUEsRUFBQSxJQUFBLENBQUE7O0FBRUEsY0FBQSxPQUFBLENBQUEsTUFBQSxJQUFBLE9BQUEsQ0FBQSxNQUFBLENBQUEsT0FBQSxFQUFBO0FBQ0EsbUJBQUEsTUFBQSxDQUFBLElBQUEsWUFBQSxDQUFBLFNBQUEsRUFBQSxZQUFBLENBQUEsQ0FBQTtBQUNBOztBQUVBLGNBQUEsR0FBQSxHQUFBLElBQUEsY0FBQSxFQUFBOztBQUVBLG1CQUFBLFFBQUEsR0FBQTtBQUNBLFlBQUEsR0FBQSxDQUFBLEtBQUE7QUFDQTs7QUFFQSxVQUFBLEdBQUEsQ0FBQSxNQUFBLEdBQUEsWUFBQTtBQUNBLGdCQUFBLE9BQUEsR0FBQTtBQUNBLGNBQUEsTUFBQSxFQUFBLEdBQUEsQ0FBQSxNQURBO0FBRUEsY0FBQSxVQUFBLEVBQUEsR0FBQSxDQUFBLFVBRkE7QUFHQSxjQUFBLE9BQUEsRUFBQSxZQUFBLENBQUEsR0FBQSxDQUFBLHFCQUFBLE1BQUEsRUFBQTtBQUhBLGFBQUE7QUFLQSxZQUFBLE9BQUEsQ0FBQSxHQUFBLEdBQUEsaUJBQUEsR0FBQSxHQUFBLEdBQUEsQ0FBQSxXQUFBLEdBQUEsT0FBQSxDQUFBLE9BQUEsQ0FBQSxHQUFBLENBQUEsZUFBQSxDQUFBO0FBQ0EsZ0JBQUEsSUFBQSxHQUFBLGNBQUEsR0FBQSxHQUFBLEdBQUEsQ0FBQSxRQUFBLEdBQUEsR0FBQSxDQUFBLFlBQUE7QUFDQSxZQUFBLFVBQUEsQ0FBQSxZQUFBO0FBQ0EsY0FBQSxPQUFBLENBQUEsSUFBQSxRQUFBLENBQUEsSUFBQSxFQUFBLE9BQUEsQ0FBQSxDQUFBO0FBQ08sYUFGUCxFQUVPLENBRlAsQ0FBQTtBQUdBLFdBWEE7O0FBYUEsVUFBQSxHQUFBLENBQUEsT0FBQSxHQUFBLFlBQUE7QUFDQSxZQUFBLFVBQUEsQ0FBQSxZQUFBO0FBQ0EsY0FBQSxNQUFBLENBQUEsSUFBQSxTQUFBLENBQUEsd0JBQUEsQ0FBQSxDQUFBO0FBQ08sYUFGUCxFQUVPLENBRlAsQ0FBQTtBQUdBLFdBSkE7O0FBTUEsVUFBQSxHQUFBLENBQUEsU0FBQSxHQUFBLFlBQUE7QUFDQSxZQUFBLFVBQUEsQ0FBQSxZQUFBO0FBQ0EsY0FBQSxNQUFBLENBQUEsSUFBQSxTQUFBLENBQUEsd0JBQUEsQ0FBQSxDQUFBO0FBQ08sYUFGUCxFQUVPLENBRlAsQ0FBQTtBQUdBLFdBSkE7O0FBTUEsVUFBQSxHQUFBLENBQUEsT0FBQSxHQUFBLFlBQUE7QUFDQSxZQUFBLFVBQUEsQ0FBQSxZQUFBO0FBQ0EsY0FBQSxNQUFBLENBQUEsSUFBQSxZQUFBLENBQUEsU0FBQSxFQUFBLFlBQUEsQ0FBQSxDQUFBO0FBQ08sYUFGUCxFQUVPLENBRlAsQ0FBQTtBQUdBLFdBSkE7O0FBTUEsbUJBQUEsTUFBQSxDQUFBLEdBQUEsRUFBQTtBQUNBLGdCQUFBO0FBQ0EscUJBQUEsR0FBQSxLQUFBLEVBQUEsSUFBQSxNQUFBLENBQUEsUUFBQSxDQUFBLElBQUEsR0FBQSxNQUFBLENBQUEsUUFBQSxDQUFBLElBQUEsR0FBQSxHQUFBO0FBQ0EsYUFGQSxDQUVRLE9BQUEsQ0FBQSxFQUFBO0FBQ1IscUJBQUEsR0FBQTtBQUNBO0FBQ0E7O0FBRUEsVUFBQSxHQUFBLENBQUEsSUFBQSxDQUFBLE9BQUEsQ0FBQSxNQUFBLEVBQUEsTUFBQSxDQUFBLE9BQUEsQ0FBQSxHQUFBLENBQUEsRUFBQSxJQUFBOztBQUVBLGNBQUEsT0FBQSxDQUFBLFdBQUEsS0FBQSxTQUFBLEVBQUE7QUFDQSxZQUFBLEdBQUEsQ0FBQSxlQUFBLEdBQUEsSUFBQTtBQUNBLFdBRkEsTUFFTSxJQUFBLE9BQUEsQ0FBQSxXQUFBLEtBQUEsTUFBQSxFQUFB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QUFBOzs7QUFFQTtBQUFBOztBQUNBOzs7QUFBQSxJQUFBLE1BQUEsQ0FBQSxNQUFBLEdBQUEsSUFBQTs7O0FBRUE7QUFBQTs7QUFDQTs7QUFBQSxXQUFBLE1BQUEsQ0FBQSxPQUFBO0FBQ0E7QUFBQTs7Ozs7Ozs7Ozs7Ozs7QUN6QkE7OztBQUNBLElBQUEsbUJBQUEsQ0FBQSxDQUFBLEdBQUEsVUFBQSxPQUFBLEVBQUEsVUFBQSxFQUFBO0FBQ0E7QUFBQSxXQUFBLElBQUEsR0FBQSxJQUFBLFVBQUEsRUFBQTtBQUNBO0FBQUEsWUFBQSxtQkFBQSxDQUFBLENBQUEsQ0FBQSxVQUFBLEVBQUEsR0FBQSxLQUFBLENBQUEsbUJBQUEsQ0FBQSxDQUFBLENBQUEsT0FBQSxFQUFBLEdBQUEsQ0FBQSxFQUFBO0FBQ0E7QUFBQSxVQUFBLE1BQUEsQ0FBQSxjQUFBLENBQUEsT0FBQSxFQUFBLEdBQUEsRUFBQTtBQUF5QyxZQUFBLFVBQUEsRUFBQSxJQUF6QztBQUF5QyxZQUFBLEdBQUEsRUFBQSxVQUFBLENBQUEsR0FBQTtBQUF6QyxXQUFBO0FBQ0E7QUFBQTtBQUNBOztBQUFBO0FBQ0E7O0FBQUEsS0FOQTs7Ozs7Ozs7Ozs7Ozs7QUNEQSxJQUFBLG1CQUFBLENBQUEsQ0FBQSxHQUFBLFlBQUE7QUFDQTtBQUFBLFVBQUEsT0FBQSxVQUFBLEtBQUEsUUFBQSxFQUFBLE9BQUEsVUFBQTtBQUNBOztBQUFBLFVBQUE7QUFDQTtBQUFBLGVBQUEsUUFBQSxJQUFBLFFBQUEsQ0FBQSxhQUFBLEdBQUE7QUFDQTtBQUFBLE9BRkEsQ0FFRyxPQUFBLENBQUEsRUFBQTtBQUNIO0FBQUEsWUFBQSxPQUFBLE1BQUEsS0FBQSxRQUFBLEVBQUEsT0FBQSxNQUFBO0FBQ0E7QUFBQTtBQUNBOztBQUFDLEtBUEQsRUFBQTs7Ozs7Ozs7Ozs7Ozs7QUNBQSxJQUFBLG1CQUFBLENBQUEsR0FBQSxHQUFBLFVBQUEsTUFBQSxFQUFBO0FBQ0E7QUFBQSxNQUFBLE1BQUEsR0FBQSxNQUFBLENBQUEsTUFBQSxDQUFBLE1BQUEsQ0FBQTtBQUNBOztBQUFBLFVBQUEsQ0FBQSxNQUFBLENBQUEsUUFBQSxFQUFBLE1BQUEsQ0FBQSxRQUFBLEdBQUEsRUFBQTtBQUNBOztBQUFBLE1BQUEsTUFBQSxDQUFBLGNBQUEsQ0FBQSxNQUFBLEVBQUEsU0FBQSxFQUFBO0FBQ0E7QUFBQSxRQUFBLFVBQUEsRUFBQSxJQURBOztBQUVBO0FBQUEsUUFBQSxHQUFBLEVBQUEsWUFBQTtBQUNBO0FBQUEsZ0JBQUEsSUFBQSxLQUFBLENBQUEsNEZBQUEsTUFBQSxDQUFBLEVBQUEsQ0FBQTtBQUNBO0FBQUE7QUFDQTs7QUFMQSxPQUFBO0FBTUE7O0FBQUEsYUFBQSxNQUFBO0FBQ0E7QUFBQSxLQVZBOzs7Ozs7Ozs7Ozs7OztBQ0FBLElBQUEsbUJBQUEsQ0FBQSxDQUFBLEdBQUEsVUFBQSxHQUFBLEVBQUEsSUFBQSxFQUFBO0FBQThDLGFBQUEsTUFBQSxDQUFBLFNBQUEsQ0FBQSxjQUFBLENBQUEsSUFBQSxDQUFBLEdBQUEsRUFBQSxJQUFBLENBQUE7QUFBQSxLQUE5Qzs7Ozs7Ozs7Ozs7Ozs7QUNBQTs7O0FBQ0EsSUFBQSxtQkFBQSxDQUFBLENBQUEsR0FBQSxVQUFBLE9BQUEsRUFBQTtBQUNBO0FBQUEsVUFBQSxPQUFBLE1BQUEsS0FBQSxXQUFBLElBQUEsTUFBQSxDQUFBLFdBQUEsRUFBQTtBQUNBO0FBQUEsUUFBQSxNQUFBLENBQUEsY0FBQSxDQUFBLE9BQUEsRUFBQSxNQUFBLENBQUEsV0FBQSxFQUFBO0FBQXVELFVBQUEsS0FBQSxFQUFBO0FBQXZELFNBQUE7QUFDQTtBQUFBO0FBQ0E7OztBQUFBLE1BQUEsTUFBQSxDQUFBLGNBQUEsQ0FBQSxPQUFBLEVBQUEsWUFBQSxFQUFBO0FBQWdELFFBQUEsS0FBQSxFQUFBO0FBQWhELE9BQUE7QUFDQTtBQUFBLEtBTEE7Ozs7Ozs7Ozs7O0FDREE7OztBQUNBOzs7QUFDQTs7OztBQUNBLE1BQUEsbUJBQUEsR0FBQSxtQkFBQSxDQUFBLHFDQUFBLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEcmFmdEZ1bGxJZCB9IGZyb20gXCIuLi9UeXBlcy9EcmFmdEZ1bGxJZFwiO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2xpZW50RHJhZnRJbmZvVXJsKGRyYWZ0SWQ6IERyYWZ0RnVsbElkKSB7XG4gICAgLy8gTk9URSDQrdGC0LAg0YTRg9C90LrRhtC40Y8g0L7QsdGK0Y/QstC70LXQvdCwINC+0YLQtNC10LvRjNC90L4sINC40LHQviDQvtC90LAg0LLRhdC+0LTQuNGCINCyINGB0L7RgdGC0LDQsiBjbGllbnQuanMg0LhcbiAgICAvLyDQvdC1INC00L7Qu9C20L3QviDQv9GA0L7QuNGB0YXQvtC00LjRgtGMINGD0YLQtdC20LXQu9C10L3QuNGPIGNsaWVudC5qcy3QsFxuICAgIHJldHVybiBgdjEvbnMvJHtkcmFmdElkLm5zfS9kcmFmdHMvJHtkcmFmdElkLmRyYWZ0SWR9L2NsaWVudC1kcmFmdC1pbmZvYDtcbn1cbiIsImV4cG9ydCBjbGFzcyBBcHBsaWNhdGlvbkVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcpIHtcbiAgICAgICAgc3VwZXIobWVzc2FnZSk7XG4gICAgICAgIHRoaXMubmFtZSA9IHRoaXMuY29uc3RydWN0b3IubmFtZTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBOb3RJbXBsZW1lbnRlZEVycm9yIGV4dGVuZHMgQXBwbGljYXRpb25FcnJvciB7XG4gICAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcihcIk9wZXJhdGlvbiBub3QgaW1wbGVtZW50ZWRcIik7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgTm90U3VwcG9ydGVkRXJyb3IgZXh0ZW5kcyBBcHBsaWNhdGlvbkVycm9yIHtcbiAgICBwdWJsaWMgY29uc3RydWN0b3IobWVzc2FnZT86IHN0cmluZykge1xuICAgICAgICBzdXBlcihtZXNzYWdlID8/IFwiT3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWRcIik7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgSW52YWxpZFByb2dyYW1TdGF0ZUVycm9yIGV4dGVuZHMgQXBwbGljYXRpb25FcnJvciB7XG4gICAgcHVibGljIGNvbnN0cnVjdG9yKG1lc3NhZ2U/OiBzdHJpbmcpIHtcbiAgICAgICAgc3VwZXIoXCJJbnZhbGlkIHByb2dyYW0gc3RhdGVcIiArIChtZXNzYWdlICE9IHVuZGVmaW5lZCA/IFwiOiBcIiArIG1lc3NhZ2UgOiBcIlwiKSk7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgSW52YWxpZEFyZ3VtZW50RXJyb3IgZXh0ZW5kcyBBcHBsaWNhdGlvbkVycm9yIHtcbiAgICBwdWJsaWMgY29uc3RydWN0b3IoYXJndW1lbnROYW1lOiBzdHJpbmcsIG1lc3NhZ2U/OiBzdHJpbmcpIHtcbiAgICAgICAgc3VwZXIoXG4gICAgICAgICAgICBtZXNzYWdlICE9IHVuZGVmaW5lZCA/IGAke21lc3NhZ2V9IChhcmd1bWVudDogJHthcmd1bWVudE5hbWV9KWAgOiBgSW52YWxpZCBhcmd1bWVudCB2YWx1ZTogJHthcmd1bWVudE5hbWV9YFxuICAgICAgICApO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFR5cGluZ0Vycm9yIGV4dGVuZHMgQXBwbGljYXRpb25FcnJvciB7XG4gICAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcihcIkludmFsaWQgdHlwaW5nXCIpO1xuICAgIH1cbn1cbiIsIi8qKipcbiAqINCh0YLRgNC+0LPQvtGC0LjQv9C40LfQuNGA0L7QstCw0L3QvdCw0Y8g0LfQsNC80LXQvdCwINC00LvRjyBCb29sZWFuKC4uLilcbiAqINCe0LHRi9GH0L3QviDQuNGB0L/QvtC70YzQt9GD0LXRgtGB0Y8g0LTQu9GPIFsuLi5dLmZpbHRlcihpc05vdE51bGxPclVuZGVmaW5lZClcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzTm90TnVsbE9yVW5kZWZpbmVkPFQ+KGlucHV0OiBUKTogaW5wdXQgaXMgTm9uTnVsbGFibGU8VD4ge1xuICAgIHJldHVybiBpbnB1dCAhPSB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdHJpbmdpZnlVbmtub3duRXJyb3IoZXJyb3I6IHVua25vd24pOiB1bmRlZmluZWQgfCBzdHJpbmcge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLXJldHVyblxuICAgIHJldHVybiB0eXBlb2YgZXJyb3IgPT09IFwib2JqZWN0XCIgJiYgZXJyb3I/LltcIm1lc3NhZ2VcIl07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlbnN1cmVOb3ROdWxsT3JVbmRlZmluZWQ8VD4oaW5wdXQ6IFQpOiBhc3NlcnRzIGlucHV0IGlzIE5vbk51bGxhYmxlPFQ+IHtcbiAgICBpZiAoIWlzTm90TnVsbE9yVW5kZWZpbmVkKGlucHV0KSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFZhbHVlIG11c3QgYmUgZGVmaW5lZGApO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5vb3AoKTogdm9pZCB7XG4gICAgLy8gbm9vcFxufVxuXG5leHBvcnQgdHlwZSBFcnJvckZpcnN0Q2FsbGJhY2s8VD4gPSAoLi4uYXJnczogW0Vycm9yLCBudWxsIHwgdW5kZWZpbmVkXSB8IFtudWxsIHwgdW5kZWZpbmVkLCBUXSB8IFtFcnJvcl0pID0+IHZvaWQ7XG5cbmV4cG9ydCBmdW5jdGlvbiByZWplY3QobWVzc2FnZT86IHN0cmluZyB8IEVycm9yKTogbmV2ZXIge1xuICAgIGlmICh0eXBlb2YgbWVzc2FnZSA9PT0gXCJzdHJpbmdcIiB8fCBtZXNzYWdlID09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSA/PyBcIlVuZGVmaW5lZCBpcyBub3QgYWxsb3dlZFwiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBtZXNzYWdlO1xuICAgIH1cbn1cblxudHlwZSBBcnJheU9mTGVuZ3RoPFRJdGVtLCBUTGVuZ3RoIGV4dGVuZHMgbnVtYmVyLCBUUmVzdCBleHRlbmRzIFRJdGVtW10gPSBbXT4gPSBUUmVzdCBleHRlbmRzIHsgbGVuZ3RoOiBUTGVuZ3RoIH1cbiAgICA/IFRSZXN0XG4gICAgOiBBcnJheU9mTGVuZ3RoPFRJdGVtLCBUTGVuZ3RoLCBbVEl0ZW0sIC4uLlRSZXN0XT47XG5cbmV4cG9ydCB0eXBlIE1pbkxlbmd0aEFycmF5PFRJdGVtLCBUTGVuZ3RoIGV4dGVuZHMgbnVtYmVyLCBUUmVzdCBleHRlbmRzIFRJdGVtW10gPSBbXT4gPSBUUmVzdCBleHRlbmRzIHtcbiAgICBsZW5ndGg6IFRMZW5ndGg7XG59XG4gICAgPyBbLi4uVFJlc3QsIC4uLlRJdGVtW11dXG4gICAgOiBNaW5MZW5ndGhBcnJheTxUSXRlbSwgVExlbmd0aCwgWy4uLlRSZXN0LCBUSXRlbV0+O1xuXG5leHBvcnQgZnVuY3Rpb24gaXNMZW5ndGhHcmVhdGVyVGhlbk9yRXF1YWw8VCwgVE51bSBleHRlbmRzIG51bWJlcj4oXG4gICAgaXRlbXM6IHJlYWRvbmx5IFRbXSxcbiAgICBtaW5MZW5ndGg6IFROdW1cbik6IGl0ZW1zIGlzIE1pbkxlbmd0aEFycmF5PFQsIFROdW0+IHtcbiAgICByZXR1cm4gaXRlbXMubGVuZ3RoID49IG1pbkxlbmd0aDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1pbkxlbmd0aE9yVW5kZWZpbmVkPFQsIFROdW0gZXh0ZW5kcyBudW1iZXI+KFxuICAgIGl0ZW1zOiBUW10sXG4gICAgbWluTGVuZ3RoOiBUTnVtXG4pOiB1bmRlZmluZWQgfCBNaW5MZW5ndGhBcnJheTxULCBUTnVtPiB7XG4gICAgaWYgKGlzTGVuZ3RoR3JlYXRlclRoZW5PckVxdWFsKGl0ZW1zLCBtaW5MZW5ndGgpKSB7XG4gICAgICAgIHJldHVybiBpdGVtcztcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFycmF5SGFzTGVuZ3RoPFQsIFROdW0gZXh0ZW5kcyBudW1iZXI+KFxuICAgIGl0ZW1zOiByZWFkb25seSBUW10sXG4gICAgbGVuZ3RoOiBUTnVtXG4pOiBpdGVtcyBpcyBBcnJheU9mTGVuZ3RoPFQsIFROdW0+IHtcbiAgICByZXR1cm4gaXRlbXMubGVuZ3RoID09PSBsZW5ndGg7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcnJheUlzTm90RW1wdHk8VD4oaXRlbXM6IHJlYWRvbmx5IFRbXSk6IGl0ZW1zIGlzIE1pbkxlbmd0aEFycmF5PFQsIDE+IHtcbiAgICByZXR1cm4gaXRlbXMubGVuZ3RoID4gMDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFycmF5SGFzQXRMZWFzdE9uZUl0ZW08VD4oaXRlbXM6IHJlYWRvbmx5IFRbXSk6IGl0ZW1zIGlzIE1pbkxlbmd0aEFycmF5PFQsIDE+IHtcbiAgICByZXR1cm4gaXRlbXMubGVuZ3RoID4gMDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZUFycmF5SXNOb3RFbXB0eTxUPihpdGVtczogcmVhZG9ubHkgVFtdKTogYXNzZXJ0cyBpdGVtcyBpcyBNaW5MZW5ndGhBcnJheTxULCAxPiB7XG4gICAgaWYgKCFhcnJheUlzTm90RW1wdHkoaXRlbXMpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQXJyYXkgbXVzdCBiZSBub3QgZW1wdHlgKTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlbnN1cmVBcnJheUhhc0xlbmd0aDxULCBUTnVtIGV4dGVuZHMgbnVtYmVyPihcbiAgICBpdGVtczogcmVhZG9ubHkgVFtdLFxuICAgIGxlbmd0aDogVE51bVxuKTogYXNzZXJ0cyBpdGVtcyBpcyBBcnJheU9mTGVuZ3RoPFQsIFROdW0+IHtcbiAgICBpZiAoIWFycmF5SGFzTGVuZ3RoKGl0ZW1zLCBsZW5ndGgpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQXJyYXkgc2hvdWxkIGhhcyBsZW5ndGggJHtsZW5ndGh9YCk7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZW5zdXJlQXJyYXlMZW5ndGhHcmVhdGVyVGhlbk9yRXF1YWw8VCwgVE51bSBleHRlbmRzIG51bWJlcj4oXG4gICAgaXRlbXM6IHJlYWRvbmx5IFRbXSxcbiAgICBsZW5ndGg6IFROdW1cbik6IGFzc2VydHMgaXRlbXMgaXMgQXJyYXlPZkxlbmd0aDxULCBUTnVtPiB7XG4gICAgaWYgKCFpc0xlbmd0aEdyZWF0ZXJUaGVuT3JFcXVhbChpdGVtcywgbGVuZ3RoKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEFycmF5IG11c3QgaGF2ZSBtaW5pbWFsIGxlbmd0aCAke2xlbmd0aH1gKTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlbnN1cmVOZXZlcihuZXZlckFyZ3VtZW50OiBuZXZlcik6IHZvaWQge1xuICAgIC8vIG5vb3Bcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZUFuZEdldFN0cmluZyhuZXZlckFyZ3VtZW50OiBuZXZlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke25ldmVyQXJndW1lbnR9YDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJ1bkFzeW5jQWN0aW9uKGFjdGlvbjogKCkgPT4gUHJvbWlzZTx2b2lkPik6IHZvaWQge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZmxvYXRpbmctcHJvbWlzZXNcbiAgICBhY3Rpb24oKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTnVsbE9yRW1wdHkoaW5wdXQ6IHN0cmluZyB8IHVuZGVmaW5lZCk6IGlucHV0IGlzIHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIGlucHV0ID09IHVuZGVmaW5lZCB8fCBpbnB1dCA9PT0gXCJcIjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTm90TnVsbE9yRW1wdHkoaW5wdXQ6IHN0cmluZyB8IHVuZGVmaW5lZCk6IGlucHV0IGlzIHN0cmluZyB7XG4gICAgcmV0dXJuICFpc051bGxPckVtcHR5KGlucHV0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTnVsbE9yV2hpdGVTcGFjZShpbnB1dDogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbCk6IGlucHV0IGlzIHVuZGVmaW5lZCB8IG51bGwge1xuICAgIHJldHVybiBpbnB1dCA9PSB1bmRlZmluZWQgfHwgaW5wdXQudHJpbSgpID09PSBcIlwiO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHJpbUxhc3RTbGFzaCh1cmw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHVybC5zbGljZSgtMSkgPT09IFwiL1wiID8gdXJsLnNsaWNlKDAsIC0xKSA6IHVybDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydElzPFQ+KHZhbHVlOiBUKTogdm9pZCB7XG4gICAgLy8gbm9vcFxufVxuIiwiLyogdHNsaW50OmRpc2FibGU6bm8tbnVsbC1rZXl3b3JkIG5vLWFueSBuby11bnNhZmUtYW55ICovXG5pbXBvcnQgeyBmZXRjaCB9IGZyb20gXCJ3aGF0d2ctZmV0Y2hcIjtcblxuaW1wb3J0IHsgRXJyb3JGaXJzdENhbGxiYWNrLCByZWplY3QgfSBmcm9tIFwiLi4vLi4vLi4vLi4vQ29tbW9uL1R5cGluZ1V0aWxzXCI7XG5pbXBvcnQgdHlwZSB7IElGb3JtIH0gZnJvbSBcIi4uLy4uL0VuZ2luZS9Gb3JtL0lGb3JtXCI7XG5pbXBvcnQgeyBMb2FkSW50b0RvY3VtZW50IH0gZnJvbSBcIi4uLy4uL0hlbHBlcnMvTG9hZEludG9Eb2N1bWVudFwiO1xuaW1wb3J0IHR5cGUgeyBJUHVibGljRm9ybSB9IGZyb20gXCIuLi9QdWJsaWNGb3JtL0lQdWJsaWNGb3JtXCI7XG5pbXBvcnQgdHlwZSB7IElLZVdlYlRlbXBsYXRlc0FwaUNsaWVudCB9IGZyb20gXCIuLi9UeXBlcy9JS2VXZWJUZW1wbGF0ZXNBcGlDbGllbnRcIjtcbmltcG9ydCB0eXBlIHsgQ2xpZW50RHJhZnRJbmZvUmVzcG9uc2UgfSBmcm9tIFwiLi4vLi4vLi4vLi4vQ29tbW9uL0NhbmR5QXBpQ2xpZW50L0NsaWVudERyYWZ0SW5mby9DbGllbnREcmFmdEluZm9SZXNwb25zZVwiO1xuaW1wb3J0IHsgZ2V0Q2xpZW50RHJhZnRJbmZvVXJsIH0gZnJvbSBcIi4uLy4uLy4uLy4uL0NvbW1vbi9DYW5keUFwaUNsaWVudC9DbGllbnREcmFmdEluZm8vR2V0Q2xpZW50RHJhZnRJbmZvVXJsXCI7XG5pbXBvcnQgeyBBVU9PcHRpb25zIH0gZnJvbSBcIi4uL1R5cGVzL0FVT09wdGlvbnNcIjtcbmltcG9ydCB0eXBlIHsgTGF5b3V0RXZlbnRzU3RhdGljIH0gZnJvbSBcIi4uLy4uL0NvbnRyb2xzL0ludGVybmFscy9MYXlvdXRFdmVudHMvTGF5b3V0RXZlbnRzXCI7XG5cbmltcG9ydCB7IGNsaWVudFNldHRpbmdzIH0gZnJvbSBcIi4vQ2xpZW50U2V0dGluZ3NcIjtcbmltcG9ydCB7IGNyZWF0ZUxlZ2FjeVB1YmxpY0Zvcm0gfSBmcm9tIFwiLi9MZWdhY3lQdWJsaWNGb3JtL0NyZWF0ZUxlZ2FjeVB1YmxpY0Zvcm1cIjtcblxudHlwZSBGb3JtQ29udGFpbmVyID0gc3RyaW5nIHwgSFRNTEVsZW1lbnQ7XG5cbnR5cGUgRW5naW5lRW50cnlQb2ludCA9ICgpID0+IHZvaWQ7XG5cbmludGVyZmFjZSBSZW5kZXJGb3JtU2V0dGluZ3Mge1xuICAgIGdmdjogc3RyaW5nO1xuICAgIGVuZ2luZVZlcnNpb24/OiB1bmRlZmluZWQgfCBudWxsIHwgc3RyaW5nO1xuICAgIHJlc291cmNlc1ZlcnNpb246IHN0cmluZztcbiAgICB0aGVtZT86IHVuZGVmaW5lZCB8IG51bGwgfCBzdHJpbmc7XG4gICAgcmVzb3VyY2Vab25lPzogc3RyaW5nO1xuICAgIHJlbmRlckZvcm06IHVuZGVmaW5lZCB8IEVuZ2luZUVudHJ5UG9pbnQ7XG4gICAgdGVtcGxhdGVzQXBpPzogSUtlV2ViVGVtcGxhdGVzQXBpQ2xpZW50O1xufVxuXG50eXBlIFN0YXJ0Rm9ybUZ1bmMgPSAocGFnZUNvbnRlbnQ6IEZvcm1Db250YWluZXIsIGV4dGVuZGVkU2V0dGluZ3M6IFJlbmRlckZvcm1TZXR0aW5ncykgPT4gUHJvbWlzZTxJRm9ybT47XG5cbmludGVyZmFjZSBDYW5keUdsb2JhbEluamVjdGVkVmFyIHtcbiAgICBzdGFydDogKHBhZ2VDb250ZW50OiBGb3JtQ29udGFpbmVyLCBvcHRpb25zOiBTdGFydEZvcm1PcHRpb25zLCBjYWxsYmFjaz86IEVycm9yRmlyc3RDYWxsYmFjazxJUHVibGljRm9ybT4pID0+IHZvaWQ7XG4gICAga2Vmb3Jtc1VybD86IHN0cmluZztcbiAgICBwYXJ0aWFsUmVuZGVyaW5nRm9ySUU4OiBib29sZWFuO1xuICAgIGVudHJ5UG9pbnQ6IHsgW2tleTogc3RyaW5nXTogU3RhcnRGb3JtRnVuYyB9O1xuICAgIGxvYWRFcnJvcj86IHVua25vd247XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgICBpbnRlcmZhY2UgV2luZG93IHtcbiAgICAgICAgQ0Y6IENhbmR5R2xvYmFsSW5qZWN0ZWRWYXI7XG4gICAgfVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1uYW1lc3BhY2VcbiAgICBuYW1lc3BhY2UgTm9kZUpTIHtcbiAgICAgICAgaW50ZXJmYWNlIEdsb2JhbCB7XG4gICAgICAgICAgICBDRjogQ2FuZHlHbG9iYWxJbmplY3RlZFZhcjtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZGVjbGFyZSBjb25zdCBnbG9iYWw6IFdpbmRvdztcblxuZnVuY3Rpb24gZGVmYXVsdENhbGxiYWNrKCk6IHZvaWQge1xuICAgIC8qIGVtcHR5ICovXG59XG5cbmZ1bmN0aW9uIHBhcnNlQm9vbCh2YWx1ZTogdW5rbm93bik6IGJvb2xlYW4ge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgaWYgKHZhbHVlID09PSBcImZhbHNlXCIpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodmFsdWUgPT09IFwidHJ1ZVwiKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBCb29sZWFuKHZhbHVlKTtcbn1cblxuZnVuY3Rpb24gdXJsKHJlbGF0aXZlVXJsOiBzdHJpbmcgPSBcIlwiKTogc3RyaW5nIHtcbiAgICBjb25zdCBiYXNlVXJsID0gZ2xvYmFsLkNGLmtlZm9ybXNVcmwgfHwgXCJcIjtcblxuICAgIHJldHVybiBgJHtiYXNlVXJsfS8ke3JlbGF0aXZlVXJsfWAucmVwbGFjZSgvKFteOl0pXFwvezIsfS9nLCBcIiQxL1wiKTtcbn1cblxuZnVuY3Rpb24gYnVpbGRVcmwocGF0aDogc3RyaW5nLCBwYXJhbXM6IHsgW3BhcmFtTmFtZTogc3RyaW5nXTogdW5kZWZpbmVkIHwgc3RyaW5nIH0pOiBzdHJpbmcge1xuICAgIGlmIChwYXJhbXMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gcGF0aDtcbiAgICB9XG4gICAgY29uc3QgcXVlcnlQYXJ0czogc3RyaW5nW10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IHBhcmFtTmFtZSBvZiBPYmplY3Qua2V5cyhwYXJhbXMpKSB7XG4gICAgICAgIGNvbnN0IHBhcmFtVmFsdWUgPSBwYXJhbXNbcGFyYW1OYW1lXTtcbiAgICAgICAgaWYgKHBhcmFtVmFsdWUgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBxdWVyeVBhcnRzLnB1c2goYCR7cGFyYW1OYW1lfT0ke2VuY29kZVVSSUNvbXBvbmVudChwYXJhbVZhbHVlKX1gKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAocXVlcnlQYXJ0cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHBhdGg7XG4gICAgfVxuICAgIHJldHVybiBwYXRoICsgXCI/XCIgKyBxdWVyeVBhcnRzLmpvaW4oXCImXCIpO1xufVxuXG5mdW5jdGlvbiBpc0FsbG93ZWQoZG9tYWluczogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIG5ldyBSZWdFeHAoYF4oPzoke2RvbWFpbnMucmVwbGFjZSgvXFwuL2csIFwiXFxcXC5cIikucmVwbGFjZSgvXFwqL2csIFwiW2EtejAtOS0uXStcIil9KSRgKS50ZXN0KFxuICAgICAgICBnbG9iYWwubG9jYXRpb24uaG9zdFxuICAgICk7XG59XG5cbmZ1bmN0aW9uIGdldFBhcmFtZXRlckJ5TmFtZShuYW1lOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiAoXG4gICAgICAgIChnbG9iYWwubG9jYXRpb24uc2VhcmNoXG4gICAgICAgICAgICAudHJpbSgpXG4gICAgICAgICAgICAucmVwbGFjZSgvXihcXD98I3wmKS8sIFwiXCIpXG4gICAgICAgICAgICAuc3BsaXQoXCImXCIpXG4gICAgICAgICAgICAubWFwKHBhcmFtID0+IHBhcmFtLnJlcGxhY2UoL1xcKy9nLCBcIiBcIikuc3BsaXQoXCI9XCIpLm1hcChkZWNvZGVVUklDb21wb25lbnQpKVxuICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnRyaXBsZS1lcXVhbHNcbiAgICAgICAgICAgIC5maW5kKChba2V5XSkgPT4ga2V5ID09IG5hbWUpIHx8IFtdKVsxXVxuICAgICk7XG59XG5cbnR5cGUgVGFzayA9IChjYWxsYmFjazogKGVycm9yPzogRXJyb3IpID0+IHZvaWQpID0+IHZvaWQ7XG5cbmZ1bmN0aW9uIHJ1blBhcmFsbGVsKHRhc2tzOiBUYXNrW10sIGNhbGxiYWNrOiAoZXJyb3I/OiBFcnJvcikgPT4gdm9pZCk6IHZvaWQge1xuICAgIGxldCBjb21wbGV0ZWQgPSAwO1xuXG4gICAgdGFza3MuZm9yRWFjaCh0YXNrID0+IHtcbiAgICAgICAgdGFzayhlcnJvciA9PiB7XG4gICAgICAgICAgICBpZiAoY29tcGxldGVkID09PSB0YXNrcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICBjb21wbGV0ZWQgPSB0YXNrcy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgY2FsbGJhY2soZXJyb3IpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29tcGxldGVkICs9IDE7XG4gICAgICAgICAgICBpZiAoY29tcGxldGVkID09PSB0YXNrcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBjYWxsYmFjaygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9KTtcbn1cblxuaW50ZXJmYWNlIFN0YXJ0Rm9ybVNldHRpbmcge1xuICAgIGdmdjogc3RyaW5nO1xuICAgIGVuZ2luZVZlcnNpb24/OiB1bmRlZmluZWQgfCBudWxsIHwgc3RyaW5nO1xuICAgIHJlc291cmNlWm9uZT86IHN0cmluZztcbiAgICByZXNvdXJjZXNWZXJzaW9uOiBzdHJpbmc7XG4gICAgdGhlbWU/OiB1bmRlZmluZWQgfCBudWxsIHwgc3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNFbmdpbmVWZXJzaW9uR3JlYXRlclRoYW5PckVxdWFsKGxlZnQ6IHN0cmluZywgcmlnaHQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGxlZnROdW1iZXJzID0gbGVmdFxuICAgICAgICAgICAgLnNwbGl0KFwiLlwiKVxuICAgICAgICAgICAgLnNsaWNlKDAsIDMpXG4gICAgICAgICAgICAubWFwKHggPT4gcGFyc2VJbnQoeCwgMTApKTtcbiAgICAgICAgY29uc3QgcmlnaHROdW1iZXJzID0gcmlnaHRcbiAgICAgICAgICAgIC5zcGxpdChcIi5cIilcbiAgICAgICAgICAgIC5zbGljZSgwLCAzKVxuICAgICAgICAgICAgLm1hcCh4ID0+IHBhcnNlSW50KHgsIDEwKSk7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAobGVmdE51bWJlcnNbMF0gPz8gMCkgPiAocmlnaHROdW1iZXJzWzBdID8/IDApIHx8XG4gICAgICAgICAgICAoKGxlZnROdW1iZXJzWzBdID8/IDApID09PSAocmlnaHROdW1iZXJzWzBdID8/IDApICYmXG4gICAgICAgICAgICAgICAgKChsZWZ0TnVtYmVyc1sxXSA/PyAwKSA+IChyaWdodE51bWJlcnNbMV0gPz8gMCkgfHxcbiAgICAgICAgICAgICAgICAgICAgKChsZWZ0TnVtYmVyc1sxXSA/PyAwKSA9PT0gKHJpZ2h0TnVtYmVyc1sxXSA/PyAwKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgKGxlZnROdW1iZXJzWzJdID8/IDApID49IChyaWdodE51bWJlcnNbMl0gPz8gMCkpKSlcbiAgICAgICAgKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gbG9hZEZvcm0oc2V0dGluZ3M6IFN0YXJ0Rm9ybVNldHRpbmcsIGNhbGxiYWNrOiAoZXJyb3I/OiBudWxsIHwgdW5kZWZpbmVkIHwgRXJyb3IpID0+IHZvaWQpOiB2b2lkIHtcbiAgICBjb25zdCB7IGdmdiwgZW5naW5lVmVyc2lvbiwgcmVzb3VyY2VzVmVyc2lvbiB9ID0gc2V0dGluZ3M7XG5cbiAgICBpZiAoZ2xvYmFsLkNGLmVudHJ5UG9pbnRbZ2Z2XSkge1xuICAgICAgICBjYWxsYmFjaygpO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGlzTmVlZEVuZ2luZSA9IGVuZ2luZVZlcnNpb24gJiYgIWdsb2JhbFtlbmdpbmVWZXJzaW9uXTtcbiAgICBjb25zdCBub1N0eWxlc0ZvckdmdiA9IGZhbHNlOyAvLyBlbmdpbmVWZXJzaW9uICE9IHVuZGVmaW5lZCAmJiAoaXNFbmdpbmVWZXJzaW9uR3JlYXRlclRoYW5PckVxdWFsKGVuZ2luZVZlcnNpb24sIFwiNC4yMTQuMFwiKSB8fCBlbmdpbmVWZXJzaW9uID09PSBcImxvY2FsXCIpO1xuICAgIGNvbnN0IG5lZWRMb2FkU3R5bGVzRm9yR2Z2ID0gIW5vU3R5bGVzRm9yR2Z2O1xuICAgIGNvbnN0IG1pbiA9IGdldFBhcmFtZXRlckJ5TmFtZShcImRlYnVnXCIpID09PSBcInRydWVcIiA/IFwiXCIgOiBcIi5taW5cIjtcbiAgICBjb25zdCB0YXNrczogVGFza1tdID0gW107XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7IHY6IHJlc291cmNlc1ZlcnNpb24sIHJlc291cmNlWm9uZTogc2V0dGluZ3MucmVzb3VyY2Vab25lIH07XG4gICAgaWYgKG5lZWRMb2FkU3R5bGVzRm9yR2Z2KSB7XG4gICAgICAgIHRhc2tzLnB1c2goY2IgPT5cbiAgICAgICAgICAgIExvYWRJbnRvRG9jdW1lbnQuc3R5bGVTaGVldCh1cmwoYnVpbGRVcmwoYHN0YXRpYy9wdWJsaWMvc3R5bGVzLyR7Z2Z2fSR7bWlufS5jc3NgLCBwYXJhbXMpKSwgdHJ1ZSwgY2IpXG4gICAgICAgICk7XG4gICAgfVxuICAgIHRhc2tzLnB1c2goY2IgPT4gTG9hZEludG9Eb2N1bWVudC5zY3JpcHQodXJsKGJ1aWxkVXJsKGBzdGF0aWMvcHVibGljL3NjcmlwdHMvJHtnZnZ9JHttaW59LmpzYCwgcGFyYW1zKSksIGNiKSk7XG5cbiAgICBpZiAoaXNOZWVkRW5naW5lKSB7XG4gICAgICAgIHRhc2tzLnB1c2goXG4gICAgICAgICAgICBjYiA9PlxuICAgICAgICAgICAgICAgIExvYWRJbnRvRG9jdW1lbnQuc3R5bGVTaGVldChcbiAgICAgICAgICAgICAgICAgICAgdXJsKGJ1aWxkVXJsKGBzdGF0aWMvcHVibGljL3N0eWxlcy9jYW5keV8ke2VuZ2luZVZlcnNpb259JHttaW59LmNzc2AsIHBhcmFtcykpLFxuICAgICAgICAgICAgICAgICAgICBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgY2JcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgY2IgPT5cbiAgICAgICAgICAgICAgICBMb2FkSW50b0RvY3VtZW50LnNjcmlwdChcbiAgICAgICAgICAgICAgICAgICAgdXJsKGJ1aWxkVXJsKGBzdGF0aWMvcHVibGljL3NjcmlwdHMvY2FuZHlfJHtlbmdpbmVWZXJzaW9ufSR7bWlufS5qc2AsIHBhcmFtcykpLFxuICAgICAgICAgICAgICAgICAgICBjYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBydW5QYXJhbGxlbCh0YXNrcywgY2FsbGJhY2spO1xufVxuXG5mdW5jdGlvbiByZW5kZXJGb3JtKFxuICAgIHBhZ2VDb250ZW50OiBGb3JtQ29udGFpbmVyLFxuICAgIGV4dGVuZGVkU2V0dGluZ3M6IFJlbmRlckZvcm1TZXR0aW5ncyxcbiAgICBjYWxsYmFjazogRXJyb3JGaXJzdENhbGxiYWNrPElQdWJsaWNGb3JtPlxuKTogdm9pZCB7XG4gICAgY29uc3QgZm9ybUVudHJ5UG9pbnQgPVxuICAgICAgICBnbG9iYWwuQ0YuZW50cnlQb2ludFtleHRlbmRlZFNldHRpbmdzLmdmdl0gPz8gcmVqZWN0KGBGb3JtIGVudHJ5IHBvaW50ICR7ZXh0ZW5kZWRTZXR0aW5ncy5nZnZ9IG5vdCBmb3VuZC5gKTtcbiAgICBmb3JtRW50cnlQb2ludChwYWdlQ29udGVudCwgZXh0ZW5kZWRTZXR0aW5ncylcbiAgICAgICAgLnRoZW4oZm9ybSA9PiB7XG4gICAgICAgICAgICBjb25zdCBwdWJsaWNGb3JtID0gZm9ybS5wdWJsaWNGb3JtIHx8IGNyZWF0ZUxlZ2FjeVB1YmxpY0Zvcm0oZm9ybSk7XG5cbiAgICAgICAgICAgIGNhbGxiYWNrKG51bGwsIHB1YmxpY0Zvcm0pO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goY2FsbGJhY2spO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN0YXJ0Rm9ybU9wdGlvbnMgZXh0ZW5kcyBQYXJ0aWFsPEFVT09wdGlvbnM+IHtcbiAgICBuczogc3RyaW5nO1xuICAgIGRyYWZ0SWQ6IHN0cmluZztcbiAgICBnZnY/OiBzdHJpbmc7XG4gICAgcmVzb3VyY2Vab25lPzogc3RyaW5nO1xuICAgIHRlbXBsYXRlc0FwaT86IElLZVdlYlRlbXBsYXRlc0FwaUNsaWVudDtcbiAgICBmZWVkYmFja0VuYWJsZWQ/OiBib29sZWFuO1xuICAgIGlzRGlzYWJsZWRDbG9zZUJ1dHRvbj86IGJvb2xlYW47XG4gICAgaXNEaXNhYmxlZENsb3NlQW5kU2F2ZUJ1dHRvbj86IGJvb2xlYW47XG4gICAgaXNEaXNhYmxlZENsZWFuRm9ybT86IGJvb2xlYW47XG4gICAgdGhlbWU/OiB1bmRlZmluZWQgfCBudWxsIHwgc3RyaW5nO1xuICAgIGF1dGhlbnRpY2F0aW9uPzogXCJicm93c2VyLWNyZWRlbnRpYWxzLWluY2x1ZGVcIiB8IHsgYXV0aFNpZDogc3RyaW5nIH07XG4gICAgZmV0Y2g/OiB0eXBlb2YgZmV0Y2g7XG4gICAgbW9kZWw/OiB7IFtwYXRoOiBzdHJpbmddOiB1bmtub3duIH07XG4gICAgZXZlbnRFbWl0dGVyPzogTGF5b3V0RXZlbnRzU3RhdGljO1xuICAgIGVtcGxveWVySWQ/OiBzdHJpbmc7XG59XG5cbmZ1bmN0aW9uIGdldEVuZ2luZUVudHJ5UG9pbnQoZW5naW5lVmVyc2lvbjogdW5kZWZpbmVkIHwgbnVsbCB8IHN0cmluZyk6IHVuZGVmaW5lZCB8IEVuZ2luZUVudHJ5UG9pbnQge1xuICAgIGlmIChlbmdpbmVWZXJzaW9uID09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1yZXR1cm5cbiAgICByZXR1cm4gZ2xvYmFsW2VuZ2luZVZlcnNpb25dICYmIGdsb2JhbFtlbmdpbmVWZXJzaW9uXS5kZWZhdWx0O1xufVxuXG5mdW5jdGlvbiBzdGFydChcbiAgICBwYWdlQ29udGVudDogRm9ybUNvbnRhaW5lcixcbiAgICBvcHRpb25zOiBTdGFydEZvcm1PcHRpb25zLFxuICAgIGNhbGxiYWNrOiBFcnJvckZpcnN0Q2FsbGJhY2s8SVB1YmxpY0Zvcm0+ID0gZGVmYXVsdENhbGxiYWNrXG4pOiB2b2lkIHtcbiAgICBsZXQgZXJyb3IgPSBudWxsO1xuICAgIGNvbnN0IHsgbnMsIGRyYWZ0SWQgfSA9IG9wdGlvbnM7XG5cbiAgICBpZiAoIWlzQWxsb3dlZChjbGllbnRTZXR0aW5ncy5rb250dXJEb21haW5zKSkge1xuICAgICAgICBlcnJvciA9IG5ldyBFcnJvcihcImRvbWFpbi51bnRydXN0ZWRcIik7XG4gICAgfSBlbHNlIGlmICghY2xpZW50U2V0dGluZ3MuYXV0aG9yaXplZCkge1xuICAgICAgICBlcnJvciA9IG5ldyBFcnJvcihcInVzZXIudW5hdXRoZW50aWNhdGVkXCIpO1xuICAgIH0gZWxzZSBpZiAoIWRyYWZ0SWQpIHtcbiAgICAgICAgZXJyb3IgPSBuZXcgRXJyb3IoXCJvcHRpb25zLmRyYWZ0SWQgaXMgcmVxdWlyZWRcIik7XG4gICAgfSBlbHNlIGlmICghbnMpIHtcbiAgICAgICAgZXJyb3IgPSBuZXcgRXJyb3IoXCJvcHRpb25zLm5zIGlzIHJlcXVpcmVkXCIpO1xuICAgIH1cblxuICAgIGlmIChlcnJvcikge1xuICAgICAgICBjYWxsYmFjayhlcnJvcik7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCByZXNvdXJjZVpvbmUgPSBvcHRpb25zLnJlc291cmNlWm9uZSA/PyBnZXRQYXJhbWV0ZXJCeU5hbWUoXCJyZXNvdXJjZVpvbmVcIik7XG4gICAgY29uc3QgY2xpZW50RHJhZnRVcmwgPSBidWlsZFVybCh1cmwoZ2V0Q2xpZW50RHJhZnRJbmZvVXJsKHsgbnM6IG5zLCBkcmFmdElkOiBkcmFmdElkIH0pKSwge1xuICAgICAgICByZXNvdXJjZVpvbmU6IHJlc291cmNlWm9uZSxcbiAgICB9KTtcblxuICAgIGNvbnN0IHJlcXVlc3RPcHRpb25zOiBSZXF1ZXN0SW5pdCA9IHsgbWV0aG9kOiBcIkdFVFwiIH07XG4gICAgaWYgKG9wdGlvbnMuYXV0aGVudGljYXRpb24gPT0gdW5kZWZpbmVkIHx8IG9wdGlvbnMuYXV0aGVudGljYXRpb24gPT09IFwiYnJvd3Nlci1jcmVkZW50aWFscy1pbmNsdWRlXCIpIHtcbiAgICAgICAgcmVxdWVzdE9wdGlvbnMuY3JlZGVudGlhbHMgPSBcImluY2x1ZGVcIjtcbiAgICB9IGVsc2UgaWYgKFwiYXV0aFNpZFwiIGluIG9wdGlvbnMuYXV0aGVudGljYXRpb24gJiYgb3B0aW9ucy5hdXRoZW50aWNhdGlvbi5hdXRoU2lkICE9IHVuZGVmaW5lZCkge1xuICAgICAgICByZXF1ZXN0T3B0aW9ucy5jcmVkZW50aWFscyA9IFwib21pdFwiO1xuICAgICAgICByZXF1ZXN0T3B0aW9ucy5oZWFkZXJzID0gcmVxdWVzdE9wdGlvbnMuaGVhZGVycyA/PyB7fTtcbiAgICAgICAgcmVxdWVzdE9wdGlvbnMuaGVhZGVyc1tcIkF1dGhvcml6YXRpb25cIl0gPSBgQVVUSC5TSUQgJHtvcHRpb25zLmF1dGhlbnRpY2F0aW9uLmF1dGhTaWR9YDtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXF1ZXN0T3B0aW9ucy5jcmVkZW50aWFscyA9IFwib21pdFwiO1xuICAgIH1cbiAgICBjb25zdCBmZXRjaEltcGwgPSBvcHRpb25zLmZldGNoID8/IGZldGNoO1xuXG4gICAgZmV0Y2hJbXBsKGNsaWVudERyYWZ0VXJsLCByZXF1ZXN0T3B0aW9ucylcbiAgICAgICAgLnRoZW4oeCA9PiB4Lmpzb24oKSlcbiAgICAgICAgLnRoZW4oKGNsaWVudERyYWZ0SW5mbzogQ2xpZW50RHJhZnRJbmZvUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGdmdiA9IGNsaWVudERyYWZ0SW5mby5nZnY7XG4gICAgICAgICAgICBjb25zdCBlbmdpbmVWZXJzaW9uID0gY2xpZW50RHJhZnRJbmZvLmVuZ2luZVZlcnNpb247XG4gICAgICAgICAgICBjb25zdCBleHRlbmRlZFNldHRpbmdzID0ge1xuICAgICAgICAgICAgICAgIGF1dGhvcml6ZWQ6IGNsaWVudFNldHRpbmdzLmF1dGhvcml6ZWQsXG4gICAgICAgICAgICAgICAgY2F1bGRyb25BcGlVcmw6IGNsaWVudFNldHRpbmdzLmNhdWxkcm9uQXBpVXJsLFxuICAgICAgICAgICAgICAgIGlzVGVzdFNlcnZlcjogY2xpZW50U2V0dGluZ3MuaXNUZXN0U2VydmVyLFxuICAgICAgICAgICAgICAgIHJlbmRlckNhY2hpbmdGb3JJRTg6IGNsaWVudFNldHRpbmdzLnJlbmRlckNhY2hpbmdGb3JJRTgsXG4gICAgICAgICAgICAgICAgbm9ybWFsaXphdGlvbk9uU2VydmVyOiBjbGllbnRTZXR0aW5ncy5ub3JtYWxpemF0aW9uT25TZXJ2ZXIsXG4gICAgICAgICAgICAgICAgbm9ybWF0aXZlVXJsOiBjbGllbnRTZXR0aW5ncy5ub3JtYXRpdmVVcmwsXG4gICAgICAgICAgICAgICAgcmVzb3VyY2VzVmVyc2lvbjogY2xpZW50U2V0dGluZ3MucmVzb3VyY2VzVmVyc2lvbixcbiAgICAgICAgICAgICAgICBrb250dXJEb21haW5zOiBjbGllbnRTZXR0aW5ncy5rb250dXJEb21haW5zLFxuICAgICAgICAgICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgICAgICAgICAgYWJvbklkOiBvcHRpb25zLmFib25JZCxcbiAgICAgICAgICAgICAgICBvcmdJZDogb3B0aW9ucy5vcmdJZCxcbiAgICAgICAgICAgICAgICB1c2VySWQ6IG9wdGlvbnMudXNlcklkLFxuICAgICAgICAgICAgICAgIC4uLmNsaWVudERyYWZ0SW5mbyxcbiAgICAgICAgICAgICAgICBnZnY6IGdmdixcbiAgICAgICAgICAgICAgICBpc0luZGl2aWR1YWw6IGNsaWVudERyYWZ0SW5mby5pc0luZGl2aWR1YWwsXG4gICAgICAgICAgICAgICAgaXNGb3JlaWduOiBjbGllbnREcmFmdEluZm8uaXNGb3JlaWduLFxuICAgICAgICAgICAgICAgIGVuZ2luZVZlcnNpb246IGVuZ2luZVZlcnNpb24sXG4gICAgICAgICAgICAgICAgZmVlZGJhY2tFbmFibGVkOiBvcHRpb25zLmZlZWRiYWNrRW5hYmxlZCA/PyBjbGllbnREcmFmdEluZm8uZmVlZGJhY2tFbmFibGVkLFxuICAgICAgICAgICAgICAgIGNhbmR5VG91ckF2YWlsYWJsZTogY2xpZW50RHJhZnRJbmZvLmNhbmR5VG91ckF2YWlsYWJsZSxcbiAgICAgICAgICAgICAgICBldmVudEVtaXR0ZXI6IG9wdGlvbnMuZXZlbnRFbWl0dGVyLFxuICAgICAgICAgICAgICAgIGZvcm1JbmZvOiBjbGllbnREcmFmdEluZm8uZm9ybUluZm8sXG4gICAgICAgICAgICAgICAgcHJpbnRJbmZvOiBjbGllbnREcmFmdEluZm8ucHJpbnRJbmZvLFxuICAgICAgICAgICAgICAgIHJlZ2lvbnM6IGNsaWVudERyYWZ0SW5mby5yZWdpb25zLFxuICAgICAgICAgICAgICAgIGhhc1RlbXBsYXRlczogY2xpZW50RHJhZnRJbmZvLmhhc1RlbXBsYXRlcyxcbiAgICAgICAgICAgICAgICBtb2RlbDogb3B0aW9ucy5tb2RlbCxcbiAgICAgICAgICAgICAgICBpc0Rpc2FibGVkQ2xlYW5Gb3JtOiBvcHRpb25zLmlzRGlzYWJsZWRDbGVhbkZvcm0gPz8gZmFsc2UsXG4gICAgICAgICAgICAgICAgaXNEaXNhYmxlZENsb3NlQnV0dG9uOiBvcHRpb25zLmlzRGlzYWJsZWRDbG9zZUJ1dHRvbiA/PyBmYWxzZSxcbiAgICAgICAgICAgICAgICBpc0Rpc2FibGVkQ2xvc2VBbmRTYXZlQnV0dG9uOiBvcHRpb25zLmlzRGlzYWJsZWRDbG9zZUFuZFNhdmVCdXR0b24gPz8gZmFsc2UsXG4gICAgICAgICAgICAgICAgcmVzb3VyY2Vab25lOiByZXNvdXJjZVpvbmUsXG4gICAgICAgICAgICAgICAgYXV0aGVudGljYXRpb246IG9wdGlvbnMuYXV0aGVudGljYXRpb24sXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBsb2FkRm9ybShcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGdmdjogZXh0ZW5kZWRTZXR0aW5ncy5nZnYsXG4gICAgICAgICAgICAgICAgICAgIGVuZ2luZVZlcnNpb246IGV4dGVuZGVkU2V0dGluZ3MuZW5naW5lVmVyc2lvbixcbiAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2Vab25lOiBleHRlbmRlZFNldHRpbmdzLnJlc291cmNlWm9uZSxcbiAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VzVmVyc2lvbjogZXh0ZW5kZWRTZXR0aW5ncy5yZXNvdXJjZXNWZXJzaW9uLFxuICAgICAgICAgICAgICAgICAgICB0aGVtZTogZXh0ZW5kZWRTZXR0aW5ncy50aGVtZSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGxvYWRFcnJvciA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChsb2FkRXJyb3IgfHwgIWdsb2JhbC5DRi5lbnRyeVBvaW50W2dmdl0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKG5ldyBFcnJvcihgZHluYW1pYyBsb2FkaW5nIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIGdmdiAke2dmdn1gKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVuZGVyID0gZ2V0RW5naW5lRW50cnlQb2ludChlbmdpbmVWZXJzaW9uKTtcblxuICAgICAgICAgICAgICAgICAgICByZW5kZXJGb3JtKFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFnZUNvbnRlbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uZXh0ZW5kZWRTZXR0aW5ncyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZXNBcGk6IG9wdGlvbnMudGVtcGxhdGVzQXBpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlckZvcm06IHJlbmRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFja1xuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaChjYWxsYmFjayk7XG59XG5cbmNvbnN0IENhbmR5Q2xpZW50RXhwb3J0czogQ2FuZHlHbG9iYWxJbmplY3RlZFZhciA9IHtcbiAgICBzdGFydDogc3RhcnQsXG4gICAgZW50cnlQb2ludDoge30sXG4gICAgcGFydGlhbFJlbmRlcmluZ0ZvcklFODogcGFyc2VCb29sKFwie3BhcnRpYWxSZW5kZXJpbmdGb3JJRTh9XCIpLFxuICAgIGtlZm9ybXNVcmw6IFwie2tlZm9ybXNVcmx9XCIsXG59O1xuXG5nbG9iYWwuQ0YgPSBDYW5keUNsaWVudEV4cG9ydHM7XG5cbmV4cG9ydCB7IENhbmR5Q2xpZW50RXhwb3J0cyB9O1xuIiwiZnVuY3Rpb24gcGFyc2VCb29sKHZhbHVlOiB1bmtub3duKTogYm9vbGVhbiB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICBpZiAodmFsdWUgPT09IFwiZmFsc2VcIikge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gXCJ0cnVlXCIpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIEJvb2xlYW4odmFsdWUpO1xufVxuXG5leHBvcnQgY29uc3QgY2xpZW50U2V0dGluZ3MgPSB7XG4gICAgYXV0aG9yaXplZDogcGFyc2VCb29sKFwie2F1dGhvcml6ZWR9XCIpLFxuICAgIGNhdWxkcm9uQXBpVXJsOiBcIntjYXVsZHJvbkFwaVVybH1cIixcbiAgICBpc1Rlc3RTZXJ2ZXI6IHBhcnNlQm9vbChcIntpc1Rlc3RTZXJ2ZXJ9XCIpLFxuICAgIHJlbmRlckNhY2hpbmdGb3JJRTg6IHBhcnNlQm9vbChcIntyZW5kZXJDYWNoaW5nRm9ySUU4fVwiKSxcbiAgICBub3JtYWxpemF0aW9uT25TZXJ2ZXI6IHBhcnNlQm9vbChcIntub3JtYWxpemF0aW9uT25TZXJ2ZXJ9XCIpLFxuICAgIG5vcm1hdGl2ZVVybDogXCJ7bm9ybWF0aXZlVXJsfVwiLFxuICAgIHJlc291cmNlc1ZlcnNpb246IFwie3Jlc291cmNlc1ZlcnNpb259XCIsXG4gICAga29udHVyRG9tYWluczogXCJ7a29udHVyRG9tYWluc31cIixcbn07XG4iLCJpbXBvcnQgeyBOb3RJbXBsZW1lbnRlZEVycm9yIH0gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL0NvbW1vbi9FcnJvcnNcIjtcbmltcG9ydCB0eXBlIHsgU3RlcCB9IGZyb20gXCIuLi8uLi8uLi9Db250cm9scy9Gb3JtUGFydHMvVG91ci9Ub3VyVHlwZXNcIjtcbmltcG9ydCB0eXBlIHsgU2VydmVyRXJyb3JMb2cgfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vQ29tbW9uL0NhbmR5QXBpQ2xpZW50L1R5cGVzL0Vycm9yTG9nL1NlcnZlckVycm9yTG9nXCI7XG5pbXBvcnQgdHlwZSB7IE1vZGVsVmFsdWUgfSBmcm9tIFwiLi4vLi4vLi4vRW5naW5lL0NvcmUvQ29yZVR5cGVzXCI7XG5pbXBvcnQgdHlwZSB7IEV4dGVybmFsSG9va0Z1bmN0aW9uIH0gZnJvbSBcIi4uLy4uLy4uL0VuZ2luZS9Db3JlL0V2ZW50TWFuYWdlbWVudC9FeHRlcm5hbEV2ZW50cy9FeHRlcm5hbEhvb2tGdW5jdGlvblwiO1xuaW1wb3J0IHR5cGUgeyBSZWFkb25seU1vZGVsQ2h1bmsgfSBmcm9tIFwiLi4vLi4vLi4vRW5naW5lL0NvcmUvTW9kZWxTdG9yaW5nL01vZGVsQ2h1bmtcIjtcbmltcG9ydCB0eXBlIHsgUGlja2xpc3RRdWVyeVJlc3BvbnNlIH0gZnJvbSBcIi4uLy4uLy4uL0VuZ2luZS9Db3JlL1BpY2tsaXN0cy9QaWNrbGlzdFR5cGVzXCI7XG5pbXBvcnQgdHlwZSB7IElGb3JtIH0gZnJvbSBcIi4uLy4uLy4uL0VuZ2luZS9Gb3JtL0lGb3JtXCI7XG5pbXBvcnQgdHlwZSB7IElQdWJsaWNGb3JtIH0gZnJvbSBcIi4uLy4uL1B1YmxpY0Zvcm0vSVB1YmxpY0Zvcm1cIjtcbmltcG9ydCB7IE1vZGVsRXZlbnRzTGlzdGVuZXIgfSBmcm9tIFwiLi4vLi4vLi4vRW5naW5lL0NvcmUvRXZlbnRNYW5hZ2VtZW50L01vZGVsRXZlbnRzL01vZGVsRXZlbnRcIjtcbmltcG9ydCB7IERpZ2VzdFF1ZXJ5RmlsdGVyIH0gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL0NvbW1vbi9DYW5keUFwaUNsaWVudC9EaWdlc3RBcGlDbGllbnQvVHlwZXMvRGlnZXN0UXVlcnlGaWx0ZXJcIjtcbmltcG9ydCB7IEVtcGxveWVlIH0gZnJvbSBcIi4uLy4uLy4uL0VtcGxveWVlc0ltcG9ydC9TdGFmZlNlcnZpY2VXaWRnZXQvQ2xpZW50L1R5cGVzXCI7XG5cbmltcG9ydCB7IElMZWdhY3lGb3JtIH0gZnJvbSBcIi4vSUxlZ2FjeUZvcm1cIjtcblxuZXhwb3J0IHR5cGUgTW9kZWxFdmVudFBhdGggPVxuICAgIHwgW1wibW9kZWxcIiwgXCJjaGFuZ2VcIiwgc3RyaW5nLCBzdHJpbmddXG4gICAgfCBbXCJtb2RlbFwiLCBcInJlbW92ZVwiLCBzdHJpbmcsIHN0cmluZ11cbiAgICB8IFtcIm1vZGVsXCIsIFwiY2hhbmdlXCIsIHN0cmluZ11cbiAgICB8IFtcIm1vZGVsXCIsIFwicmVtb3ZlXCIsIHN0cmluZ11cbiAgICB8IFtcIm1vZGVsXCIsIFwiY2hhbmdlXCJdXG4gICAgfCBbXCJtb2RlbFwiLCBcInJlbW92ZVwiXTtcblxuZXhwb3J0IGZ1bmN0aW9uIG1vZGVsQ2hhbmdlRXZlbnRQYXRoKHBhdGg/OiBzdHJpbmcsIGZpZWxkTmFtZT86IHN0cmluZyk6IE1vZGVsRXZlbnRQYXRoIHtcbiAgICBpZiAoZmllbGROYW1lICE9IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAocGF0aCA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlBhdGggbXVzdCBiZSBkZWZpbmVkXCIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbXCJtb2RlbFwiLCBcImNoYW5nZVwiLCBwYXRoLCBmaWVsZE5hbWVdO1xuICAgIH1cbiAgICBpZiAocGF0aCAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIFtcIm1vZGVsXCIsIFwiY2hhbmdlXCIsIHBhdGhdO1xuICAgIH1cbiAgICByZXR1cm4gW1wibW9kZWxcIiwgXCJjaGFuZ2VcIl07XG59XG5cbmZ1bmN0aW9uIG1hcENodW5rVmFsdWVzKGNodW5rOiBSZWFkb25seU1vZGVsQ2h1bmspOiBBcnJheTx7IFtwYXRoOiBzdHJpbmddOiBNb2RlbFZhbHVlIH0+IHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMoY2h1bmspXG4gICAgICAgIC5maWx0ZXIocGF0aCA9PiBjaHVua1twYXRoXSAmJiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoY2h1bmtbcGF0aF0sIFwidmFsdWVcIikpXG4gICAgICAgIC5tYXAocGF0aCA9PiB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBjaHVua1twYXRoXTtcbiAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHsgW3BhdGhdOiByZXN1bHQudmFsdWUgfTtcbiAgICAgICAgfSk7XG59XG5cbmZ1bmN0aW9uIHJlZHVjZUNodW5rVmFsdWVzKGNodW5rczogQXJyYXk8eyBbcGF0aDogc3RyaW5nXTogTW9kZWxWYWx1ZSB9Pik6IHsgW3BhdGg6IHN0cmluZ106IE1vZGVsVmFsdWUgfSB7XG4gICAgcmV0dXJuIGNodW5rcy5yZWR1Y2UoXG4gICAgICAgIChyZXN1bHQsIGNodW5rKSA9PiAoe1xuICAgICAgICAgICAgLi4ucmVzdWx0LFxuICAgICAgICAgICAgLi4uY2h1bmssXG4gICAgICAgIH0pLFxuICAgICAgICB7fVxuICAgICk7XG59XG5cbmNsYXNzIExlZ2FjeVB1YmxpY0Zvcm0gaW1wbGVtZW50cyBJUHVibGljRm9ybSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBmb3JtOiBJTGVnYWN5Rm9ybTtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3Rvcihmb3JtOiBJTGVnYWN5Rm9ybSkge1xuICAgICAgICB0aGlzLmZvcm0gPSBmb3JtO1xuICAgIH1cblxuICAgIHB1YmxpYyBydW5DaGVjaygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XG4gICAgfVxuXG4gICAgcHVibGljIHNldEVycm9yTG9nKGVycm9yTG9nOiBQYXJ0aWFsPFNlcnZlckVycm9yTG9nPik6IHZvaWQge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNZXRob2Qgbm90IGltcGxlbWVudGVkLlwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgX19JTlRFUk5BTF9faW1wb3J0RnJvbUVtcGxveWVlU2VydmljZSgpOiBQcm9taXNlPEVtcGxveWVlW10gfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEJ5R0lkKGdJZDogc3RyaW5nLCBmaWx0ZXI/OiBEaWdlc3RRdWVyeUZpbHRlcik6IFByb21pc2U8UGlja2xpc3RRdWVyeVJlc3BvbnNlPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvcm0ucGlja2xpc3RzUHJvdmlkZXIuZ2V0RGlnZXN0QXBpUGlja2xpc3QoZ0lkKS5xdWVyeShmaWx0ZXIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbihldmVudE5hbWU6IHN0cmluZywgbGlzdGVuZXI6IEV4dGVybmFsSG9va0Z1bmN0aW9uKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZm9ybS5ldmVudE1hbmFnZXIub24oW1wiZm9ybVwiLCBldmVudE5hbWVdLCBsaXN0ZW5lcik7XG4gICAgfVxuXG4gICAgcHVibGljIG9mZihldmVudE5hbWU6IHN0cmluZywgbGlzdGVuZXI6IEV4dGVybmFsSG9va0Z1bmN0aW9uKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZm9ybS5ldmVudE1hbmFnZXIub2ZmKFtcImZvcm1cIiwgZXZlbnROYW1lXSwgbGlzdGVuZXIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbk1vZGVsQ2hhbmdlKHBhdGg6IHN0cmluZyB8IHN0cmluZ1tdLCBsaXN0ZW5lcjogdW5rbm93bik6IHZvaWQge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICBjb25zb2xlLmVycm9yKFwiZm9ybS5vbk1vZGVsQ2hhbmdlKCkgaXMgbm90IHN1cHBvcnRlZCB5ZXRcIik7XG4gICAgfVxuXG4gICAgcHVibGljIG9mZk1vZGVsQ2hhbmdlKHBhdGg6IHN0cmluZyB8IHN0cmluZ1tdLCBsaXN0ZW5lcjogdW5rbm93bik6IHZvaWQge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICBjb25zb2xlLmVycm9yKFwiZm9ybS5vZmZNb2RlbENoYW5nZSgpIGlzIG5vdCBzdXBwb3J0ZWQgeWV0XCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzYXZlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5mb3JtLmNoYW5nZVNldC5zZW5kKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGNsb3NlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aGlzLmZvcm0uY2hhbmdlU2V0LnN0b3BBdXRvc2VuZCgpO1xuICAgICAgICBpZiAodGhpcy5mb3JtLnVubW91bnQpIHtcbiAgICAgICAgICAgIHRoaXMuZm9ybS51bm1vdW50KCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5mb3JtLmNoYW5nZVNldC5zZW5kKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFRvdXJTdGVwcygpOiBTdGVwW10ge1xuICAgICAgICAvLyBGb3Igb2xkIGtld2ViXG4gICAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdmFsaWRhdGUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyh0aGlzLmZvcm0ubW9kZWwuZ2V0Q2h1bmsodGhpcy5mb3JtLnNldHRpbmdzLmZvcm1Sb290KSk7XG4gICAgICAgIC8vIEB0cy1pZ25vcmUg0K3RgtC+INCyINGB0YLQsNGA0YvRhSDQtNCy0LjQttC60LDRhSDRgtGD0YIg0YLQsNC60L7QuSDQstGL0LfQvtCyXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLXJldHVyblxuICAgICAgICByZXR1cm4gdGhpcy5mb3JtLnZhbGlkYXRvci52YWxpZGF0ZUFsbChrZXlzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaGFzRXJyb3JzKCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBlcnJvckNvdW50ID0gdGhpcy5mb3JtLm1vZGVsLmdldCh0aGlzLmZvcm0uc2V0dGluZ3MuZm9ybVJvb3QsIFwiZXJyb3JzQ291bnRcIik7XG4gICAgICAgIHJldHVybiBlcnJvckNvdW50ICE9IHVuZGVmaW5lZCAmJiBlcnJvckNvdW50ID4gMDtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25FcnJvcnNDb3VudENoYW5nZWQobGlzdGVuZXI6IE1vZGVsRXZlbnRzTGlzdGVuZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5mb3JtLmV2ZW50TWFuYWdlci5vbihtb2RlbENoYW5nZUV2ZW50UGF0aCh0aGlzLmZvcm0uc2V0dGluZ3MuZm9ybVJvb3QsIFwiZXJyb3JzQ291bnRcIiksIGxpc3RlbmVyKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb2ZmRXJyb3JzQ291bnRDaGFuZ2VkKGxpc3RlbmVyOiBNb2RlbEV2ZW50c0xpc3RlbmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZm9ybS5ldmVudE1hbmFnZXIub2ZmKG1vZGVsQ2hhbmdlRXZlbnRQYXRoKHRoaXMuZm9ybS5zZXR0aW5ncy5mb3JtUm9vdCwgXCJlcnJvcnNDb3VudFwiKSwgbGlzdGVuZXIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXQocGF0aE9yTW9kZWxDaHVuazogeyBbcGF0aDogc3RyaW5nXTogc3RyaW5nIHwgdW5kZWZpbmVkIH0pOiB2b2lkIHwgUHJvbWlzZTx2b2lkPjtcbiAgICBwdWJsaWMgc2V0KHBhdGhPck1vZGVsQ2h1bms6IHN0cmluZywgdmFsdWU6IE1vZGVsVmFsdWUpOiB2b2lkIHwgUHJvbWlzZTx2b2lkPjtcbiAgICBwdWJsaWMgc2V0KFxuICAgICAgICBwYXRoT3JNb2RlbENodW5rOiBzdHJpbmcgfCB7IFtwYXRoOiBzdHJpbmddOiBzdHJpbmcgfCB1bmRlZmluZWQgfSxcbiAgICAgICAgdmFsdWU/OiBNb2RlbFZhbHVlXG4gICAgKTogdm9pZCB8IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICBwYXRoT3JNb2RlbENodW5rICE9PSBudWxsICYmXG4gICAgICAgICAgICB0eXBlb2YgcGF0aE9yTW9kZWxDaHVuayAhPT0gXCJzdHJpbmdcIiAmJlxuICAgICAgICAgICAgdHlwZW9mIHBhdGhPck1vZGVsQ2h1bmsgPT09IFwib2JqZWN0XCIgJiZcbiAgICAgICAgICAgICFBcnJheS5pc0FycmF5KHBhdGhPck1vZGVsQ2h1bmspXG4gICAgICAgICkge1xuICAgICAgICAgICAgY29uc3QgaW5uZXJDaHVuayA9IE9iamVjdC5rZXlzKHBhdGhPck1vZGVsQ2h1bmspLnJlZHVjZTxSZWFkb25seU1vZGVsQ2h1bms+KFxuICAgICAgICAgICAgICAgIChyZXN1bHQsIHBhdGgpID0+ICh7IFtwYXRoXTogeyB2YWx1ZTogcGF0aE9yTW9kZWxDaHVua1twYXRoXSB9LCAuLi5yZXN1bHQgfSksXG4gICAgICAgICAgICAgICAge31cbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIHRoaXMuZm9ybS5tb2RlbC5maWxsKGlubmVyQ2h1bmspO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGVvZiBwYXRoT3JNb2RlbENodW5rID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICB0aGlzLmZvcm0ubW9kZWwuc2V0KHBhdGhPck1vZGVsQ2h1bmssIFwidmFsdWVcIiwgdmFsdWUpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiZm9ybS5zZXQoKSBwYXJhbWV0ZXIgc2hvdWxkIGJlIHN0cmluZyBwYXRoIG9yIG9iamVjdCB3aXRoIHBhdGgtdmFsdWUgcGFpcnNcIik7XG4gICAgfVxuXG4gICAgcHVibGljIGdldChwYXRoT3JBcnJheTogc3RyaW5nIHwgc3RyaW5nW10pOiB7IFtwYXRoOiBzdHJpbmddOiBNb2RlbFZhbHVlIH0ge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShwYXRoT3JBcnJheSkpIHtcbiAgICAgICAgICAgIHJldHVybiByZWR1Y2VDaHVua1ZhbHVlcyhcbiAgICAgICAgICAgICAgICBwYXRoT3JBcnJheVxuICAgICAgICAgICAgICAgICAgICAubWFwKHBhdGggPT4gbWFwQ2h1bmtWYWx1ZXModGhpcy5mb3JtLm1vZGVsLmdldENodW5rKHBhdGgpKSlcbiAgICAgICAgICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWFueVxuICAgICAgICAgICAgICAgICAgICAucmVkdWNlPEFycmF5PHsgW3BhdGg6IHN0cmluZ106IE1vZGVsVmFsdWUgfT4+KChyZXN1bHQsIGFycmF5KSA9PiByZXN1bHQuY29uY2F0KGFycmF5KSwgW10pXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGVvZiBwYXRoT3JBcnJheSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgcmV0dXJuIHJlZHVjZUNodW5rVmFsdWVzKG1hcENodW5rVmFsdWVzKHRoaXMuZm9ybS5tb2RlbC5nZXRDaHVuayhwYXRoT3JBcnJheSkpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwYXRoT3JBcnJheSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVkdWNlQ2h1bmtWYWx1ZXMobWFwQ2h1bmtWYWx1ZXModGhpcy5mb3JtLm1vZGVsLmdldENodW5rKHRoaXMuZm9ybS5zZXR0aW5ncy5mb3JtUm9vdCkpKTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJmb3JtLmdldCgpIHBhcmFtZXRlciBzaG91bGQgYmUgc3RyaW5nIHBhdGggb3IgYXJyYXkgb2YgcGF0aHNcIik7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFZhbHVlKHBhdGg6IHN0cmluZyk6IE1vZGVsVmFsdWUge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1yZXR1cm5cbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybS5tb2RlbC5nZXQocGF0aCwgXCJ2YWx1ZVwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkSW5zdGFuY2UocGF0aDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Q2hpbGRyZW4ocGF0aDogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyByZW1vdmVJbnN0YW5jZShwYXRoOiBzdHJpbmcsIGluc3RhbmNlOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVtb3ZlSW5zdGFuY2VzKHBhdGg6IHN0cmluZywgaW5zdGFuY2U6IHN0cmluZ1tdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTGVnYWN5UHVibGljRm9ybShmb3JtOiBJRm9ybSk6IElQdWJsaWNGb3JtIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgcmV0dXJuIG5ldyBMZWdhY3lQdWJsaWNGb3JtKGZvcm0gYXMgSUxlZ2FjeUZvcm0pO1xufVxuIiwiLy8gdHNsaW50OmRpc2FibGUgbm8tdW5zYWZlLWFueVxuZXhwb3J0IGNsYXNzIExvYWRJbnRvRG9jdW1lbnQge1xuICAgIHB1YmxpYyBzdGF0aWMgc2NyaXB0KHVyaTogc3RyaW5nLCBjYWxsYmFjazogKGVycm9yPzogRXJyb3IpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgbGV0IHNjcmlwdExvYWRlZCA9IGZhbHNlO1xuICAgICAgICBjb25zdCBoZWFkID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJoZWFkXCIpWzBdIHx8IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgICAgY29uc3Qgc2NyaXB0OiBhbnkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic2NyaXB0XCIpO1xuXG4gICAgICAgIGZ1bmN0aW9uIGxvYWRIYW5kbGVyKCk6IHZvaWQge1xuICAgICAgICAgICAgaWYgKHNjcmlwdExvYWRlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFzY3JpcHQucmVhZHlTdGF0ZSB8fCBzY3JpcHQucmVhZHlTdGF0ZSA9PT0gXCJsb2FkZWRcIiB8fCBzY3JpcHQucmVhZHlTdGF0ZSA9PT0gXCJjb21wbGV0ZVwiKSB7XG4gICAgICAgICAgICAgICAgc2NyaXB0TG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBjYWxsYmFjaygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gSGFuZyB0aGUgdXNlciBjYWxsYmFjayB0byBiZSBjYWxsZWQgd2hlbiB0aGUgc2NyaXB0IGNvbXBsZXRlcyB0byBsb2FkLlxuICAgICAgICAvLyBOT1RFKHVzZXIpOiBUaGlzIGNhbGxiYWNrIHdpbGwgYmUgY2FsbGVkIGluIElFIGV2ZW4gdXBvbiBlcnJvci4gSW4gYW55XG4gICAgICAgIC8vIGNhc2UgaXQgaXMgdGhlIGNsaWVudCdzIHJlc3BvbnNpYmlsaXR5IHRvIHZlcmlmeSB0aGF0IHRoZSBzY3JpcHQgcmFuXG4gICAgICAgIC8vIHN1Y2Nlc3NmdWxseS5cbiAgICAgICAgc2NyaXB0Lm9ubG9hZCA9IGxvYWRIYW5kbGVyO1xuICAgICAgICBzY3JpcHQub25yZWFkeXN0YXRlY2hhbmdlID0gbG9hZEhhbmRsZXI7XG5cbiAgICAgICAgLy8gQWRkIGFuIGVycm9yIGNhbGxiYWNrLlxuICAgICAgICAvLyBOT1RFKHVzZXIpOiBOb3Qgc3VwcG9ydGVkIGluIElFLlxuICAgICAgICBzY3JpcHQub25lcnJvciA9ICgpID0+IHtcbiAgICAgICAgICAgIGlmIChzY3JpcHQucGFyZW50Tm9kZSkge1xuICAgICAgICAgICAgICAgIHNjcmlwdC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHNjcmlwdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYWxsYmFjayhuZXcgRXJyb3IoXCJFcnJvciB3aGlsZSBsb2FkaW5nIHNjcmlwdC5cIikpO1xuICAgICAgICB9O1xuXG4gICAgICAgIC8vIEFkZCB0aGUgc2NyaXB0IGVsZW1lbnQgdG8gdGhlIGRvY3VtZW50LlxuICAgICAgICAvLyBOT1RFKHVzZXIpOiBTYWZhcmkgbmV2ZXIgbG9hZHMgdGhlIHNjcmlwdCBpZiB3ZSBkb24ndCBzZXRcbiAgICAgICAgLy8gdGhlIHNyYyBhdHRyaWJ1dGUgYmVmb3JlIGFwcGVuZGluZy5cbiAgICAgICAgc2NyaXB0LnNyYyA9IHVyaTtcbiAgICAgICAgc2NyaXB0LnNldEF0dHJpYnV0ZShcImNyb3Nzb3JpZ2luXCIsIFwidXNlLWNyZWRlbnRpYWxzXCIpO1xuICAgICAgICBoZWFkLmFwcGVuZENoaWxkKHNjcmlwdCk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBzdHlsZVNoZWV0KHVyaTogc3RyaW5nLCBpZ25vcmVFcnJvcjogYm9vbGVhbiwgY2FsbGJhY2s6IChlcnJvcj86IEVycm9yKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHJlc29sdmUgPSAoKSA9PiBjYWxsYmFjayh1bmRlZmluZWQpO1xuICAgICAgICBjb25zdCByZWplY3QgPSAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoaWdub3JlRXJyb3IpIHtcbiAgICAgICAgICAgICAgICBjYWxsYmFjayh1bmRlZmluZWQpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjYWxsYmFjayhuZXcgRXJyb3IoXCJFcnJvciB3aGlsZSBsb2FkaW5nIHN0eWxlc2hlZXQuXCIpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBoZWFkID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJoZWFkXCIpWzBdID8/IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcbiAgICAgICAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJsaW5rXCIpO1xuXG4gICAgICAgIGxpbmsuc2V0QXR0cmlidXRlKFwicmVsXCIsIFwic3R5bGVzaGVldFwiKTtcbiAgICAgICAgbGluay5zZXRBdHRyaWJ1dGUoXCJ0eXBlXCIsIFwidGV4dC9jc3NcIik7XG4gICAgICAgIGxpbmsuYWRkRXZlbnRMaXN0ZW5lcihcImxvYWRcIiwgcmVzb2x2ZSk7XG4gICAgICAgIGxpbmsuYWRkRXZlbnRMaXN0ZW5lcihcImVycm9yXCIsIHJlamVjdCk7XG4gICAgICAgIGhlYWQuYXBwZW5kQ2hpbGQobGluayk7XG4gICAgICAgIGxpbmsuc2V0QXR0cmlidXRlKFwiaHJlZlwiLCB1cmkpO1xuICAgIH1cbn1cbiIsInZhciBnbG9iYWwgPVxuICAodHlwZW9mIGdsb2JhbFRoaXMgIT09ICd1bmRlZmluZWQnICYmIGdsb2JhbFRoaXMpIHx8XG4gICh0eXBlb2Ygc2VsZiAhPT0gJ3VuZGVmaW5lZCcgJiYgc2VsZikgfHxcbiAgKHR5cGVvZiBnbG9iYWwgIT09ICd1bmRlZmluZWQnICYmIGdsb2JhbClcblxudmFyIHN1cHBvcnQgPSB7XG4gIHNlYXJjaFBhcmFtczogJ1VSTFNlYXJjaFBhcmFtcycgaW4gZ2xvYmFsLFxuICBpdGVyYWJsZTogJ1N5bWJvbCcgaW4gZ2xvYmFsICYmICdpdGVyYXRvcicgaW4gU3ltYm9sLFxuICBibG9iOlxuICAgICdGaWxlUmVhZGVyJyBpbiBnbG9iYWwgJiZcbiAgICAnQmxvYicgaW4gZ2xvYmFsICYmXG4gICAgKGZ1bmN0aW9uKCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgbmV3IEJsb2IoKVxuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICB9KSgpLFxuICBmb3JtRGF0YTogJ0Zvcm1EYXRhJyBpbiBnbG9iYWwsXG4gIGFycmF5QnVmZmVyOiAnQXJyYXlCdWZmZXInIGluIGdsb2JhbFxufVxuXG5mdW5jdGlvbiBpc0RhdGFWaWV3KG9iaikge1xuICByZXR1cm4gb2JqICYmIERhdGFWaWV3LnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKG9iailcbn1cblxuaWYgKHN1cHBvcnQuYXJyYXlCdWZmZXIpIHtcbiAgdmFyIHZpZXdDbGFzc2VzID0gW1xuICAgICdbb2JqZWN0IEludDhBcnJheV0nLFxuICAgICdbb2JqZWN0IFVpbnQ4QXJyYXldJyxcbiAgICAnW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0nLFxuICAgICdbb2JqZWN0IEludDE2QXJyYXldJyxcbiAgICAnW29iamVjdCBVaW50MTZBcnJheV0nLFxuICAgICdbb2JqZWN0IEludDMyQXJyYXldJyxcbiAgICAnW29iamVjdCBVaW50MzJBcnJheV0nLFxuICAgICdbb2JqZWN0IEZsb2F0MzJBcnJheV0nLFxuICAgICdbb2JqZWN0IEZsb2F0NjRBcnJheV0nXG4gIF1cblxuICB2YXIgaXNBcnJheUJ1ZmZlclZpZXcgPVxuICAgIEFycmF5QnVmZmVyLmlzVmlldyB8fFxuICAgIGZ1bmN0aW9uKG9iaikge1xuICAgICAgcmV0dXJuIG9iaiAmJiB2aWV3Q2xhc3Nlcy5pbmRleE9mKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvYmopKSA+IC0xXG4gICAgfVxufVxuXG5mdW5jdGlvbiBub3JtYWxpemVOYW1lKG5hbWUpIHtcbiAgaWYgKHR5cGVvZiBuYW1lICE9PSAnc3RyaW5nJykge1xuICAgIG5hbWUgPSBTdHJpbmcobmFtZSlcbiAgfVxuICBpZiAoL1teYS16MC05XFwtIyQlJicqKy5eX2B8fiFdL2kudGVzdChuYW1lKSB8fCBuYW1lID09PSAnJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgY2hhcmFjdGVyIGluIGhlYWRlciBmaWVsZCBuYW1lOiBcIicgKyBuYW1lICsgJ1wiJylcbiAgfVxuICByZXR1cm4gbmFtZS50b0xvd2VyQ2FzZSgpXG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZVZhbHVlKHZhbHVlKSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnKSB7XG4gICAgdmFsdWUgPSBTdHJpbmcodmFsdWUpXG4gIH1cbiAgcmV0dXJuIHZhbHVlXG59XG5cbi8vIEJ1aWxkIGEgZGVzdHJ1Y3RpdmUgaXRlcmF0b3IgZm9yIHRoZSB2YWx1ZSBsaXN0XG5mdW5jdGlvbiBpdGVyYXRvckZvcihpdGVtcykge1xuICB2YXIgaXRlcmF0b3IgPSB7XG4gICAgbmV4dDogZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgdmFsdWUgPSBpdGVtcy5zaGlmdCgpXG4gICAgICByZXR1cm4ge2RvbmU6IHZhbHVlID09PSB1bmRlZmluZWQsIHZhbHVlOiB2YWx1ZX1cbiAgICB9XG4gIH1cblxuICBpZiAoc3VwcG9ydC5pdGVyYWJsZSkge1xuICAgIGl0ZXJhdG9yW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBpdGVyYXRvclxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBpdGVyYXRvclxufVxuXG5leHBvcnQgZnVuY3Rpb24gSGVhZGVycyhoZWFkZXJzKSB7XG4gIHRoaXMubWFwID0ge31cblxuICBpZiAoaGVhZGVycyBpbnN0YW5jZW9mIEhlYWRlcnMpIHtcbiAgICBoZWFkZXJzLmZvckVhY2goZnVuY3Rpb24odmFsdWUsIG5hbWUpIHtcbiAgICAgIHRoaXMuYXBwZW5kKG5hbWUsIHZhbHVlKVxuICAgIH0sIHRoaXMpXG4gIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShoZWFkZXJzKSkge1xuICAgIGhlYWRlcnMuZm9yRWFjaChmdW5jdGlvbihoZWFkZXIpIHtcbiAgICAgIHRoaXMuYXBwZW5kKGhlYWRlclswXSwgaGVhZGVyWzFdKVxuICAgIH0sIHRoaXMpXG4gIH0gZWxzZSBpZiAoaGVhZGVycykge1xuICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGhlYWRlcnMpLmZvckVhY2goZnVuY3Rpb24obmFtZSkge1xuICAgICAgdGhpcy5hcHBlbmQobmFtZSwgaGVhZGVyc1tuYW1lXSlcbiAgICB9LCB0aGlzKVxuICB9XG59XG5cbkhlYWRlcnMucHJvdG90eXBlLmFwcGVuZCA9IGZ1bmN0aW9uKG5hbWUsIHZhbHVlKSB7XG4gIG5hbWUgPSBub3JtYWxpemVOYW1lKG5hbWUpXG4gIHZhbHVlID0gbm9ybWFsaXplVmFsdWUodmFsdWUpXG4gIHZhciBvbGRWYWx1ZSA9IHRoaXMubWFwW25hbWVdXG4gIHRoaXMubWFwW25hbWVdID0gb2xkVmFsdWUgPyBvbGRWYWx1ZSArICcsICcgKyB2YWx1ZSA6IHZhbHVlXG59XG5cbkhlYWRlcnMucHJvdG90eXBlWydkZWxldGUnXSA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgZGVsZXRlIHRoaXMubWFwW25vcm1hbGl6ZU5hbWUobmFtZSldXG59XG5cbkhlYWRlcnMucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgbmFtZSA9IG5vcm1hbGl6ZU5hbWUobmFtZSlcbiAgcmV0dXJuIHRoaXMuaGFzKG5hbWUpID8gdGhpcy5tYXBbbmFtZV0gOiBudWxsXG59XG5cbkhlYWRlcnMucHJvdG90eXBlLmhhcyA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgcmV0dXJuIHRoaXMubWFwLmhhc093blByb3BlcnR5KG5vcm1hbGl6ZU5hbWUobmFtZSkpXG59XG5cbkhlYWRlcnMucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uKG5hbWUsIHZhbHVlKSB7XG4gIHRoaXMubWFwW25vcm1hbGl6ZU5hbWUobmFtZSldID0gbm9ybWFsaXplVmFsdWUodmFsdWUpXG59XG5cbkhlYWRlcnMucHJvdG90eXBlLmZvckVhY2ggPSBmdW5jdGlvbihjYWxsYmFjaywgdGhpc0FyZykge1xuICBmb3IgKHZhciBuYW1lIGluIHRoaXMubWFwKSB7XG4gICAgaWYgKHRoaXMubWFwLmhhc093blByb3BlcnR5KG5hbWUpKSB7XG4gICAgICBjYWxsYmFjay5jYWxsKHRoaXNBcmcsIHRoaXMubWFwW25hbWVdLCBuYW1lLCB0aGlzKVxuICAgIH1cbiAgfVxufVxuXG5IZWFkZXJzLnByb3RvdHlwZS5rZXlzID0gZnVuY3Rpb24oKSB7XG4gIHZhciBpdGVtcyA9IFtdXG4gIHRoaXMuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSwgbmFtZSkge1xuICAgIGl0ZW1zLnB1c2gobmFtZSlcbiAgfSlcbiAgcmV0dXJuIGl0ZXJhdG9yRm9yKGl0ZW1zKVxufVxuXG5IZWFkZXJzLnByb3RvdHlwZS52YWx1ZXMgPSBmdW5jdGlvbigpIHtcbiAgdmFyIGl0ZW1zID0gW11cbiAgdGhpcy5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgaXRlbXMucHVzaCh2YWx1ZSlcbiAgfSlcbiAgcmV0dXJuIGl0ZXJhdG9yRm9yKGl0ZW1zKVxufVxuXG5IZWFkZXJzLnByb3RvdHlwZS5lbnRyaWVzID0gZnVuY3Rpb24oKSB7XG4gIHZhciBpdGVtcyA9IFtdXG4gIHRoaXMuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSwgbmFtZSkge1xuICAgIGl0ZW1zLnB1c2goW25hbWUsIHZhbHVlXSlcbiAgfSlcbiAgcmV0dXJuIGl0ZXJhdG9yRm9yKGl0ZW1zKVxufVxuXG5pZiAoc3VwcG9ydC5pdGVyYWJsZSkge1xuICBIZWFkZXJzLnByb3RvdHlwZVtTeW1ib2wuaXRlcmF0b3JdID0gSGVhZGVycy5wcm90b3R5cGUuZW50cmllc1xufVxuXG5mdW5jdGlvbiBjb25zdW1lZChib2R5KSB7XG4gIGlmIChib2R5LmJvZHlVc2VkKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBUeXBlRXJyb3IoJ0FscmVhZHkgcmVhZCcpKVxuICB9XG4gIGJvZHkuYm9keVVzZWQgPSB0cnVlXG59XG5cbmZ1bmN0aW9uIGZpbGVSZWFkZXJSZWFkeShyZWFkZXIpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xuICAgIHJlYWRlci5vbmxvYWQgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJlc29sdmUocmVhZGVyLnJlc3VsdClcbiAgICB9XG4gICAgcmVhZGVyLm9uZXJyb3IgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJlamVjdChyZWFkZXIuZXJyb3IpXG4gICAgfVxuICB9KVxufVxuXG5mdW5jdGlvbiByZWFkQmxvYkFzQXJyYXlCdWZmZXIoYmxvYikge1xuICB2YXIgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKVxuICB2YXIgcHJvbWlzZSA9IGZpbGVSZWFkZXJSZWFkeShyZWFkZXIpXG4gIHJlYWRlci5yZWFkQXNBcnJheUJ1ZmZlcihibG9iKVxuICByZXR1cm4gcHJvbWlzZVxufVxuXG5mdW5jdGlvbiByZWFkQmxvYkFzVGV4dChibG9iKSB7XG4gIHZhciByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpXG4gIHZhciBwcm9taXNlID0gZmlsZVJlYWRlclJlYWR5KHJlYWRlcilcbiAgcmVhZGVyLnJlYWRBc1RleHQoYmxvYilcbiAgcmV0dXJuIHByb21pc2Vcbn1cblxuZnVuY3Rpb24gcmVhZEFycmF5QnVmZmVyQXNUZXh0KGJ1Zikge1xuICB2YXIgdmlldyA9IG5ldyBVaW50OEFycmF5KGJ1ZilcbiAgdmFyIGNoYXJzID0gbmV3IEFycmF5KHZpZXcubGVuZ3RoKVxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdmlldy5sZW5ndGg7IGkrKykge1xuICAgIGNoYXJzW2ldID0gU3RyaW5nLmZyb21DaGFyQ29kZSh2aWV3W2ldKVxuICB9XG4gIHJldHVybiBjaGFycy5qb2luKCcnKVxufVxuXG5mdW5jdGlvbiBidWZmZXJDbG9uZShidWYpIHtcbiAgaWYgKGJ1Zi5zbGljZSkge1xuICAgIHJldHVybiBidWYuc2xpY2UoMClcbiAgfSBlbHNlIHtcbiAgICB2YXIgdmlldyA9IG5ldyBVaW50OEFycmF5KGJ1Zi5ieXRlTGVuZ3RoKVxuICAgIHZpZXcuc2V0KG5ldyBVaW50OEFycmF5KGJ1ZikpXG4gICAgcmV0dXJuIHZpZXcuYnVmZmVyXG4gIH1cbn1cblxuZnVuY3Rpb24gQm9keSgpIHtcbiAgdGhpcy5ib2R5VXNlZCA9IGZhbHNlXG5cbiAgdGhpcy5faW5pdEJvZHkgPSBmdW5jdGlvbihib2R5KSB7XG4gICAgLypcbiAgICAgIGZldGNoLW1vY2sgd3JhcHMgdGhlIFJlc3BvbnNlIG9iamVjdCBpbiBhbiBFUzYgUHJveHkgdG9cbiAgICAgIHByb3ZpZGUgdXNlZnVsIHRlc3QgaGFybmVzcyBmZWF0dXJlcyBzdWNoIGFzIGZsdXNoLiBIb3dldmVyLCBvblxuICAgICAgRVM1IGJyb3dzZXJzIHdpdGhvdXQgZmV0Y2ggb3IgUHJveHkgc3VwcG9ydCBwb2xseWZpbGxzIG11c3QgYmUgdXNlZDtcbiAgICAgIHRoZSBwcm94eS1wb2xseWZpbGwgaXMgdW5hYmxlIHRvIHByb3h5IGFuIGF0dHJpYnV0ZSB1bmxlc3MgaXQgZXhpc3RzXG4gICAgICBvbiB0aGUgb2JqZWN0IGJlZm9yZSB0aGUgUHJveHkgaXMgY3JlYXRlZC4gVGhpcyBjaGFuZ2UgZW5zdXJlc1xuICAgICAgUmVzcG9uc2UuYm9keVVzZWQgZXhpc3RzIG9uIHRoZSBpbnN0YW5jZSwgd2hpbGUgbWFpbnRhaW5pbmcgdGhlXG4gICAgICBzZW1hbnRpYyBvZiBzZXR0aW5nIFJlcXVlc3QuYm9keVVzZWQgaW4gdGhlIGNvbnN0cnVjdG9yIGJlZm9yZVxuICAgICAgX2luaXRCb2R5IGlzIGNhbGxlZC5cbiAgICAqL1xuICAgIHRoaXMuYm9keVVzZWQgPSB0aGlzLmJvZHlVc2VkXG4gICAgdGhpcy5fYm9keUluaXQgPSBib2R5XG4gICAgaWYgKCFib2R5KSB7XG4gICAgICB0aGlzLl9ib2R5VGV4dCA9ICcnXG4gICAgfSBlbHNlIGlmICh0eXBlb2YgYm9keSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHRoaXMuX2JvZHlUZXh0ID0gYm9keVxuICAgIH0gZWxzZSBpZiAoc3VwcG9ydC5ibG9iICYmIEJsb2IucHJvdG90eXBlLmlzUHJvdG90eXBlT2YoYm9keSkpIHtcbiAgICAgIHRoaXMuX2JvZHlCbG9iID0gYm9keVxuICAgIH0gZWxzZSBpZiAoc3VwcG9ydC5mb3JtRGF0YSAmJiBGb3JtRGF0YS5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihib2R5KSkge1xuICAgICAgdGhpcy5fYm9keUZvcm1EYXRhID0gYm9keVxuICAgIH0gZWxzZSBpZiAoc3VwcG9ydC5zZWFyY2hQYXJhbXMgJiYgVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKGJvZHkpKSB7XG4gICAgICB0aGlzLl9ib2R5VGV4dCA9IGJvZHkudG9TdHJpbmcoKVxuICAgIH0gZWxzZSBpZiAoc3VwcG9ydC5hcnJheUJ1ZmZlciAmJiBzdXBwb3J0LmJsb2IgJiYgaXNEYXRhVmlldyhib2R5KSkge1xuICAgICAgdGhpcy5fYm9keUFycmF5QnVmZmVyID0gYnVmZmVyQ2xvbmUoYm9keS5idWZmZXIpXG4gICAgICAvLyBJRSAxMC0xMSBjYW4ndCBoYW5kbGUgYSBEYXRhVmlldyBib2R5LlxuICAgICAgdGhpcy5fYm9keUluaXQgPSBuZXcgQmxvYihbdGhpcy5fYm9keUFycmF5QnVmZmVyXSlcbiAgICB9IGVsc2UgaWYgKHN1cHBvcnQuYXJyYXlCdWZmZXIgJiYgKEFycmF5QnVmZmVyLnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKGJvZHkpIHx8IGlzQXJyYXlCdWZmZXJWaWV3KGJvZHkpKSkge1xuICAgICAgdGhpcy5fYm9keUFycmF5QnVmZmVyID0gYnVmZmVyQ2xvbmUoYm9keSlcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fYm9keVRleHQgPSBib2R5ID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGJvZHkpXG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmhlYWRlcnMuZ2V0KCdjb250ZW50LXR5cGUnKSkge1xuICAgICAgaWYgKHR5cGVvZiBib2R5ID09PSAnc3RyaW5nJykge1xuICAgICAgICB0aGlzLmhlYWRlcnMuc2V0KCdjb250ZW50LXR5cGUnLCAndGV4dC9wbGFpbjtjaGFyc2V0PVVURi04JylcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5fYm9keUJsb2IgJiYgdGhpcy5fYm9keUJsb2IudHlwZSkge1xuICAgICAgICB0aGlzLmhlYWRlcnMuc2V0KCdjb250ZW50LXR5cGUnLCB0aGlzLl9ib2R5QmxvYi50eXBlKVxuICAgICAgfSBlbHNlIGlmIChzdXBwb3J0LnNlYXJjaFBhcmFtcyAmJiBVUkxTZWFyY2hQYXJhbXMucHJvdG90eXBlLmlzUHJvdG90eXBlT2YoYm9keSkpIHtcbiAgICAgICAgdGhpcy5oZWFkZXJzLnNldCgnY29udGVudC10eXBlJywgJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDtjaGFyc2V0PVVURi04JylcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoc3VwcG9ydC5ibG9iKSB7XG4gICAgdGhpcy5ibG9iID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgcmVqZWN0ZWQgPSBjb25zdW1lZCh0aGlzKVxuICAgICAgaWYgKHJlamVjdGVkKSB7XG4gICAgICAgIHJldHVybiByZWplY3RlZFxuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5fYm9keUJsb2IpIHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLl9ib2R5QmxvYilcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5fYm9keUFycmF5QnVmZmVyKSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUobmV3IEJsb2IoW3RoaXMuX2JvZHlBcnJheUJ1ZmZlcl0pKVxuICAgICAgfSBlbHNlIGlmICh0aGlzLl9ib2R5Rm9ybURhdGEpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdjb3VsZCBub3QgcmVhZCBGb3JtRGF0YSBib2R5IGFzIGJsb2InKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShuZXcgQmxvYihbdGhpcy5fYm9keVRleHRdKSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmFycmF5QnVmZmVyID0gZnVuY3Rpb24oKSB7XG4gICAgICBpZiAodGhpcy5fYm9keUFycmF5QnVmZmVyKSB7XG4gICAgICAgIHZhciBpc0NvbnN1bWVkID0gY29uc3VtZWQodGhpcylcbiAgICAgICAgaWYgKGlzQ29uc3VtZWQpIHtcbiAgICAgICAgICByZXR1cm4gaXNDb25zdW1lZFxuICAgICAgICB9XG4gICAgICAgIGlmIChBcnJheUJ1ZmZlci5pc1ZpZXcodGhpcy5fYm9keUFycmF5QnVmZmVyKSkge1xuICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoXG4gICAgICAgICAgICB0aGlzLl9ib2R5QXJyYXlCdWZmZXIuYnVmZmVyLnNsaWNlKFxuICAgICAgICAgICAgICB0aGlzLl9ib2R5QXJyYXlCdWZmZXIuYnl0ZU9mZnNldCxcbiAgICAgICAgICAgICAgdGhpcy5fYm9keUFycmF5QnVmZmVyLmJ5dGVPZmZzZXQgKyB0aGlzLl9ib2R5QXJyYXlCdWZmZXIuYnl0ZUxlbmd0aFxuICAgICAgICAgICAgKVxuICAgICAgICAgIClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuX2JvZHlBcnJheUJ1ZmZlcilcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYmxvYigpLnRoZW4ocmVhZEJsb2JBc0FycmF5QnVmZmVyKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHRoaXMudGV4dCA9IGZ1bmN0aW9uKCkge1xuICAgIHZhciByZWplY3RlZCA9IGNvbnN1bWVkKHRoaXMpXG4gICAgaWYgKHJlamVjdGVkKSB7XG4gICAgICByZXR1cm4gcmVqZWN0ZWRcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fYm9keUJsb2IpIHtcbiAgICAgIHJldHVybiByZWFkQmxvYkFzVGV4dCh0aGlzLl9ib2R5QmxvYilcbiAgICB9IGVsc2UgaWYgKHRoaXMuX2JvZHlBcnJheUJ1ZmZlcikge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZWFkQXJyYXlCdWZmZXJBc1RleHQodGhpcy5fYm9keUFycmF5QnVmZmVyKSlcbiAgICB9IGVsc2UgaWYgKHRoaXMuX2JvZHlGb3JtRGF0YSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjb3VsZCBub3QgcmVhZCBGb3JtRGF0YSBib2R5IGFzIHRleHQnKVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuX2JvZHlUZXh0KVxuICAgIH1cbiAgfVxuXG4gIGlmIChzdXBwb3J0LmZvcm1EYXRhKSB7XG4gICAgdGhpcy5mb3JtRGF0YSA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMudGV4dCgpLnRoZW4oZGVjb2RlKVxuICAgIH1cbiAgfVxuXG4gIHRoaXMuanNvbiA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnRleHQoKS50aGVuKEpTT04ucGFyc2UpXG4gIH1cblxuICByZXR1cm4gdGhpc1xufVxuXG4vLyBIVFRQIG1ldGhvZHMgd2hvc2UgY2FwaXRhbGl6YXRpb24gc2hvdWxkIGJlIG5vcm1hbGl6ZWRcbnZhciBtZXRob2RzID0gWydERUxFVEUnLCAnR0VUJywgJ0hFQUQnLCAnT1BUSU9OUycsICdQT1NUJywgJ1BVVCddXG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZU1ldGhvZChtZXRob2QpIHtcbiAgdmFyIHVwY2FzZWQgPSBtZXRob2QudG9VcHBlckNhc2UoKVxuICByZXR1cm4gbWV0aG9kcy5pbmRleE9mKHVwY2FzZWQpID4gLTEgPyB1cGNhc2VkIDogbWV0aG9kXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBSZXF1ZXN0KGlucHV0LCBvcHRpb25zKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBSZXF1ZXN0KSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1BsZWFzZSB1c2UgdGhlIFwibmV3XCIgb3BlcmF0b3IsIHRoaXMgRE9NIG9iamVjdCBjb25zdHJ1Y3RvciBjYW5ub3QgYmUgY2FsbGVkIGFzIGEgZnVuY3Rpb24uJylcbiAgfVxuXG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9XG4gIHZhciBib2R5ID0gb3B0aW9ucy5ib2R5XG5cbiAgaWYgKGlucHV0IGluc3RhbmNlb2YgUmVxdWVzdCkge1xuICAgIGlmIChpbnB1dC5ib2R5VXNlZCkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQWxyZWFkeSByZWFkJylcbiAgICB9XG4gICAgdGhpcy51cmwgPSBpbnB1dC51cmxcbiAgICB0aGlzLmNyZWRlbnRpYWxzID0gaW5wdXQuY3JlZGVudGlhbHNcbiAgICBpZiAoIW9wdGlvbnMuaGVhZGVycykge1xuICAgICAgdGhpcy5oZWFkZXJzID0gbmV3IEhlYWRlcnMoaW5wdXQuaGVhZGVycylcbiAgICB9XG4gICAgdGhpcy5tZXRob2QgPSBpbnB1dC5tZXRob2RcbiAgICB0aGlzLm1vZGUgPSBpbnB1dC5tb2RlXG4gICAgdGhpcy5zaWduYWwgPSBpbnB1dC5zaWduYWxcbiAgICBpZiAoIWJvZHkgJiYgaW5wdXQuX2JvZHlJbml0ICE9IG51bGwpIHtcbiAgICAgIGJvZHkgPSBpbnB1dC5fYm9keUluaXRcbiAgICAgIGlucHV0LmJvZHlVc2VkID0gdHJ1ZVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB0aGlzLnVybCA9IFN0cmluZyhpbnB1dClcbiAgfVxuXG4gIHRoaXMuY3JlZGVudGlhbHMgPSBvcHRpb25zLmNyZWRlbnRpYWxzIHx8IHRoaXMuY3JlZGVudGlhbHMgfHwgJ3NhbWUtb3JpZ2luJ1xuICBpZiAob3B0aW9ucy5oZWFkZXJzIHx8ICF0aGlzLmhlYWRlcnMpIHtcbiAgICB0aGlzLmhlYWRlcnMgPSBuZXcgSGVhZGVycyhvcHRpb25zLmhlYWRlcnMpXG4gIH1cbiAgdGhpcy5tZXRob2QgPSBub3JtYWxpemVNZXRob2Qob3B0aW9ucy5tZXRob2QgfHwgdGhpcy5tZXRob2QgfHwgJ0dFVCcpXG4gIHRoaXMubW9kZSA9IG9wdGlvbnMubW9kZSB8fCB0aGlzLm1vZGUgfHwgbnVsbFxuICB0aGlzLnNpZ25hbCA9IG9wdGlvbnMuc2lnbmFsIHx8IHRoaXMuc2lnbmFsXG4gIHRoaXMucmVmZXJyZXIgPSBudWxsXG5cbiAgaWYgKCh0aGlzLm1ldGhvZCA9PT0gJ0dFVCcgfHwgdGhpcy5tZXRob2QgPT09ICdIRUFEJykgJiYgYm9keSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0JvZHkgbm90IGFsbG93ZWQgZm9yIEdFVCBvciBIRUFEIHJlcXVlc3RzJylcbiAgfVxuICB0aGlzLl9pbml0Qm9keShib2R5KVxuXG4gIGlmICh0aGlzLm1ldGhvZCA9PT0gJ0dFVCcgfHwgdGhpcy5tZXRob2QgPT09ICdIRUFEJykge1xuICAgIGlmIChvcHRpb25zLmNhY2hlID09PSAnbm8tc3RvcmUnIHx8IG9wdGlvbnMuY2FjaGUgPT09ICduby1jYWNoZScpIHtcbiAgICAgIC8vIFNlYXJjaCBmb3IgYSAnXycgcGFyYW1ldGVyIGluIHRoZSBxdWVyeSBzdHJpbmdcbiAgICAgIHZhciByZVBhcmFtU2VhcmNoID0gLyhbPyZdKV89W14mXSovXG4gICAgICBpZiAocmVQYXJhbVNlYXJjaC50ZXN0KHRoaXMudXJsKSkge1xuICAgICAgICAvLyBJZiBpdCBhbHJlYWR5IGV4aXN0cyB0aGVuIHNldCB0aGUgdmFsdWUgd2l0aCB0aGUgY3VycmVudCB0aW1lXG4gICAgICAgIHRoaXMudXJsID0gdGhpcy51cmwucmVwbGFjZShyZVBhcmFtU2VhcmNoLCAnJDFfPScgKyBuZXcgRGF0ZSgpLmdldFRpbWUoKSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIE90aGVyd2lzZSBhZGQgYSBuZXcgJ18nIHBhcmFtZXRlciB0byB0aGUgZW5kIHdpdGggdGhlIGN1cnJlbnQgdGltZVxuICAgICAgICB2YXIgcmVRdWVyeVN0cmluZyA9IC9cXD8vXG4gICAgICAgIHRoaXMudXJsICs9IChyZVF1ZXJ5U3RyaW5nLnRlc3QodGhpcy51cmwpID8gJyYnIDogJz8nKSArICdfPScgKyBuZXcgRGF0ZSgpLmdldFRpbWUoKVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5SZXF1ZXN0LnByb3RvdHlwZS5jbG9uZSA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gbmV3IFJlcXVlc3QodGhpcywge2JvZHk6IHRoaXMuX2JvZHlJbml0fSlcbn1cblxuZnVuY3Rpb24gZGVjb2RlKGJvZHkpIHtcbiAgdmFyIGZvcm0gPSBuZXcgRm9ybURhdGEoKVxuICBib2R5XG4gICAgLnRyaW0oKVxuICAgIC5zcGxpdCgnJicpXG4gICAgLmZvckVhY2goZnVuY3Rpb24oYnl0ZXMpIHtcbiAgICAgIGlmIChieXRlcykge1xuICAgICAgICB2YXIgc3BsaXQgPSBieXRlcy5zcGxpdCgnPScpXG4gICAgICAgIHZhciBuYW1lID0gc3BsaXQuc2hpZnQoKS5yZXBsYWNlKC9cXCsvZywgJyAnKVxuICAgICAgICB2YXIgdmFsdWUgPSBzcGxpdC5qb2luKCc9JykucmVwbGFjZSgvXFwrL2csICcgJylcbiAgICAgICAgZm9ybS5hcHBlbmQoZGVjb2RlVVJJQ29tcG9uZW50KG5hbWUpLCBkZWNvZGVVUklDb21wb25lbnQodmFsdWUpKVxuICAgICAgfVxuICAgIH0pXG4gIHJldHVybiBmb3JtXG59XG5cbmZ1bmN0aW9uIHBhcnNlSGVhZGVycyhyYXdIZWFkZXJzKSB7XG4gIHZhciBoZWFkZXJzID0gbmV3IEhlYWRlcnMoKVxuICAvLyBSZXBsYWNlIGluc3RhbmNlcyBvZiBcXHJcXG4gYW5kIFxcbiBmb2xsb3dlZCBieSBhdCBsZWFzdCBvbmUgc3BhY2Ugb3IgaG9yaXpvbnRhbCB0YWIgd2l0aCBhIHNwYWNlXG4gIC8vIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMwI3NlY3Rpb24tMy4yXG4gIHZhciBwcmVQcm9jZXNzZWRIZWFkZXJzID0gcmF3SGVhZGVycy5yZXBsYWNlKC9cXHI/XFxuW1xcdCBdKy9nLCAnICcpXG4gIC8vIEF2b2lkaW5nIHNwbGl0IHZpYSByZWdleCB0byB3b3JrIGFyb3VuZCBhIGNvbW1vbiBJRTExIGJ1ZyB3aXRoIHRoZSBjb3JlLWpzIDMuNi4wIHJlZ2V4IHBvbHlmaWxsXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9naXRodWIvZmV0Y2gvaXNzdWVzLzc0OFxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvNzUxXG4gIHByZVByb2Nlc3NlZEhlYWRlcnNcbiAgICAuc3BsaXQoJ1xccicpXG4gICAgLm1hcChmdW5jdGlvbihoZWFkZXIpIHtcbiAgICAgIHJldHVybiBoZWFkZXIuaW5kZXhPZignXFxuJykgPT09IDAgPyBoZWFkZXIuc3Vic3RyKDEsIGhlYWRlci5sZW5ndGgpIDogaGVhZGVyXG4gICAgfSlcbiAgICAuZm9yRWFjaChmdW5jdGlvbihsaW5lKSB7XG4gICAgICB2YXIgcGFydHMgPSBsaW5lLnNwbGl0KCc6JylcbiAgICAgIHZhciBrZXkgPSBwYXJ0cy5zaGlmdCgpLnRyaW0oKVxuICAgICAgaWYgKGtleSkge1xuICAgICAgICB2YXIgdmFsdWUgPSBwYXJ0cy5qb2luKCc6JykudHJpbSgpXG4gICAgICAgIGhlYWRlcnMuYXBwZW5kKGtleSwgdmFsdWUpXG4gICAgICB9XG4gICAgfSlcbiAgcmV0dXJuIGhlYWRlcnNcbn1cblxuQm9keS5jYWxsKFJlcXVlc3QucHJvdG90eXBlKVxuXG5leHBvcnQgZnVuY3Rpb24gUmVzcG9uc2UoYm9keUluaXQsIG9wdGlvbnMpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFJlc3BvbnNlKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1BsZWFzZSB1c2UgdGhlIFwibmV3XCIgb3BlcmF0b3IsIHRoaXMgRE9NIG9iamVjdCBjb25zdHJ1Y3RvciBjYW5ub3QgYmUgY2FsbGVkIGFzIGEgZnVuY3Rpb24uJylcbiAgfVxuICBpZiAoIW9wdGlvbnMpIHtcbiAgICBvcHRpb25zID0ge31cbiAgfVxuXG4gIHRoaXMudHlwZSA9ICdkZWZhdWx0J1xuICB0aGlzLnN0YXR1cyA9IG9wdGlvbnMuc3RhdHVzID09PSB1bmRlZmluZWQgPyAyMDAgOiBvcHRpb25zLnN0YXR1c1xuICB0aGlzLm9rID0gdGhpcy5zdGF0dXMgPj0gMjAwICYmIHRoaXMuc3RhdHVzIDwgMzAwXG4gIHRoaXMuc3RhdHVzVGV4dCA9IG9wdGlvbnMuc3RhdHVzVGV4dCA9PT0gdW5kZWZpbmVkID8gJycgOiAnJyArIG9wdGlvbnMuc3RhdHVzVGV4dFxuICB0aGlzLmhlYWRlcnMgPSBuZXcgSGVhZGVycyhvcHRpb25zLmhlYWRlcnMpXG4gIHRoaXMudXJsID0gb3B0aW9ucy51cmwgfHwgJydcbiAgdGhpcy5faW5pdEJvZHkoYm9keUluaXQpXG59XG5cbkJvZHkuY2FsbChSZXNwb25zZS5wcm90b3R5cGUpXG5cblJlc3BvbnNlLnByb3RvdHlwZS5jbG9uZSA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gbmV3IFJlc3BvbnNlKHRoaXMuX2JvZHlJbml0LCB7XG4gICAgc3RhdHVzOiB0aGlzLnN0YXR1cyxcbiAgICBzdGF0dXNUZXh0OiB0aGlzLnN0YXR1c1RleHQsXG4gICAgaGVhZGVyczogbmV3IEhlYWRlcnModGhpcy5oZWFkZXJzKSxcbiAgICB1cmw6IHRoaXMudXJsXG4gIH0pXG59XG5cblJlc3BvbnNlLmVycm9yID0gZnVuY3Rpb24oKSB7XG4gIHZhciByZXNwb25zZSA9IG5ldyBSZXNwb25zZShudWxsLCB7c3RhdHVzOiAwLCBzdGF0dXNUZXh0OiAnJ30pXG4gIHJlc3BvbnNlLnR5cGUgPSAnZXJyb3InXG4gIHJldHVybiByZXNwb25zZVxufVxuXG52YXIgcmVkaXJlY3RTdGF0dXNlcyA9IFszMDEsIDMwMiwgMzAzLCAzMDcsIDMwOF1cblxuUmVzcG9uc2UucmVkaXJlY3QgPSBmdW5jdGlvbih1cmwsIHN0YXR1cykge1xuICBpZiAocmVkaXJlY3RTdGF0dXNlcy5pbmRleE9mKHN0YXR1cykgPT09IC0xKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0ludmFsaWQgc3RhdHVzIGNvZGUnKVxuICB9XG5cbiAgcmV0dXJuIG5ldyBSZXNwb25zZShudWxsLCB7c3RhdHVzOiBzdGF0dXMsIGhlYWRlcnM6IHtsb2NhdGlvbjogdXJsfX0pXG59XG5cbmV4cG9ydCB2YXIgRE9NRXhjZXB0aW9uID0gZ2xvYmFsLkRPTUV4Y2VwdGlvblxudHJ5IHtcbiAgbmV3IERPTUV4Y2VwdGlvbigpXG59IGNhdGNoIChlcnIpIHtcbiAgRE9NRXhjZXB0aW9uID0gZnVuY3Rpb24obWVzc2FnZSwgbmFtZSkge1xuICAgIHRoaXMubWVzc2FnZSA9IG1lc3NhZ2VcbiAgICB0aGlzLm5hbWUgPSBuYW1lXG4gICAgdmFyIGVycm9yID0gRXJyb3IobWVzc2FnZSlcbiAgICB0aGlzLnN0YWNrID0gZXJyb3Iuc3RhY2tcbiAgfVxuICBET01FeGNlcHRpb24ucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShFcnJvci5wcm90b3R5cGUpXG4gIERPTUV4Y2VwdGlvbi5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBET01FeGNlcHRpb25cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZldGNoKGlucHV0LCBpbml0KSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiAgICB2YXIgcmVxdWVzdCA9IG5ldyBSZXF1ZXN0KGlucHV0LCBpbml0KVxuXG4gICAgaWYgKHJlcXVlc3Quc2lnbmFsICYmIHJlcXVlc3Quc2lnbmFsLmFib3J0ZWQpIHtcbiAgICAgIHJldHVybiByZWplY3QobmV3IERPTUV4Y2VwdGlvbignQWJvcnRlZCcsICdBYm9ydEVycm9yJykpXG4gICAgfVxuXG4gICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpXG5cbiAgICBmdW5jdGlvbiBhYm9ydFhocigpIHtcbiAgICAgIHhoci5hYm9ydCgpXG4gICAgfVxuXG4gICAgeGhyLm9ubG9hZCA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIG9wdGlvbnMgPSB7XG4gICAgICAgIHN0YXR1czogeGhyLnN0YXR1cyxcbiAgICAgICAgc3RhdHVzVGV4dDogeGhyLnN0YXR1c1RleHQsXG4gICAgICAgIGhlYWRlcnM6IHBhcnNlSGVhZGVycyh4aHIuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkgfHwgJycpXG4gICAgICB9XG4gICAgICBvcHRpb25zLnVybCA9ICdyZXNwb25zZVVSTCcgaW4geGhyID8geGhyLnJlc3BvbnNlVVJMIDogb3B0aW9ucy5oZWFkZXJzLmdldCgnWC1SZXF1ZXN0LVVSTCcpXG4gICAgICB2YXIgYm9keSA9ICdyZXNwb25zZScgaW4geGhyID8geGhyLnJlc3BvbnNlIDogeGhyLnJlc3BvbnNlVGV4dFxuICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgICAgcmVzb2x2ZShuZXcgUmVzcG9uc2UoYm9keSwgb3B0aW9ucykpXG4gICAgICB9LCAwKVxuICAgIH1cblxuICAgIHhoci5vbmVycm9yID0gZnVuY3Rpb24oKSB7XG4gICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICByZWplY3QobmV3IFR5cGVFcnJvcignTmV0d29yayByZXF1ZXN0IGZhaWxlZCcpKVxuICAgICAgfSwgMClcbiAgICB9XG5cbiAgICB4aHIub250aW1lb3V0ID0gZnVuY3Rpb24oKSB7XG4gICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICByZWplY3QobmV3IFR5cGVFcnJvcignTmV0d29yayByZXF1ZXN0IGZhaWxlZCcpKVxuICAgICAgfSwgMClcbiAgICB9XG5cbiAgICB4aHIub25hYm9ydCA9IGZ1bmN0aW9uKCkge1xuICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgICAgcmVqZWN0KG5ldyBET01FeGNlcHRpb24oJ0Fib3J0ZWQnLCAnQWJvcnRFcnJvcicpKVxuICAgICAgfSwgMClcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBmaXhVcmwodXJsKSB7XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gdXJsID09PSAnJyAmJiBnbG9iYWwubG9jYXRpb24uaHJlZiA/IGdsb2JhbC5sb2NhdGlvbi5ocmVmIDogdXJsXG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJldHVybiB1cmxcbiAgICAgIH1cbiAgICB9XG5cbiAgICB4aHIub3BlbihyZXF1ZXN0Lm1ldGhvZCwgZml4VXJsKHJlcXVlc3QudXJsKSwgdHJ1ZSlcblxuICAgIGlmIChyZXF1ZXN0LmNyZWRlbnRpYWxzID09PSAnaW5jbHVkZScpIHtcbiAgICAgIHhoci53aXRoQ3JlZGVudGlhbHMgPSB0cnVlXG4gICAgfSBlbHNlIGlmIChyZXF1ZXN0LmNyZWRlbnRpYWxzID09PSAnb21pdCcpIHtcbiAgICAgIHhoci53aXRoQ3JlZGVudGlhbHMgPSBmYWxzZVxuICAgIH1cblxuICAgIGlmICgncmVzcG9uc2VUeXBlJyBpbiB4aHIpIHtcbiAgICAgIGlmIChzdXBwb3J0LmJsb2IpIHtcbiAgICAgICAgeGhyLnJlc3BvbnNlVHlwZSA9ICdibG9iJ1xuICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgc3VwcG9ydC5hcnJheUJ1ZmZlciAmJlxuICAgICAgICByZXF1ZXN0LmhlYWRlcnMuZ2V0KCdDb250ZW50LVR5cGUnKSAmJlxuICAgICAgICByZXF1ZXN0LmhlYWRlcnMuZ2V0KCdDb250ZW50LVR5cGUnKS5pbmRleE9mKCdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nKSAhPT0gLTFcbiAgICAgICkge1xuICAgICAgICB4aHIucmVzcG9uc2VUeXBlID0gJ2FycmF5YnVmZmVyJ1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChpbml0ICYmIHR5cGVvZiBpbml0LmhlYWRlcnMgPT09ICdvYmplY3QnICYmICEoaW5pdC5oZWFkZXJzIGluc3RhbmNlb2YgSGVhZGVycykpIHtcbiAgICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGluaXQuaGVhZGVycykuZm9yRWFjaChmdW5jdGlvbihuYW1lKSB7XG4gICAgICAgIHhoci5zZXRSZXF1ZXN0SGVhZGVyKG5hbWUsIG5vcm1hbGl6ZVZhbHVlKGluaXQuaGVhZGVyc1tuYW1lXSkpXG4gICAgICB9KVxuICAgIH0gZWxzZSB7XG4gICAgICByZXF1ZXN0LmhlYWRlcnMuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSwgbmFtZSkge1xuICAgICAgICB4aHIuc2V0UmVxdWVzdEhlYWRlcihuYW1lLCB2YWx1ZSlcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgaWYgKHJlcXVlc3Quc2lnbmFsKSB7XG4gICAgICByZXF1ZXN0LnNpZ25hbC5hZGRFdmVudExpc3RlbmVyKCdhYm9ydCcsIGFib3J0WGhyKVxuXG4gICAgICB4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIC8vIERPTkUgKHN1Y2Nlc3Mgb3IgZmFpbHVyZSlcbiAgICAgICAgaWYgKHhoci5yZWFkeVN0YXRlID09PSA0KSB7XG4gICAgICAgICAgcmVxdWVzdC5zaWduYWwucmVtb3ZlRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBhYm9ydFhocilcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHhoci5zZW5kKHR5cGVvZiByZXF1ZXN0Ll9ib2R5SW5pdCA9PT0gJ3VuZGVmaW5lZCcgPyBudWxsIDogcmVxdWVzdC5fYm9keUluaXQpXG4gIH0pXG59XG5cbmZldGNoLnBvbHlmaWxsID0gdHJ1ZVxuXG5pZiAoIWdsb2JhbC5mZXRjaCkge1xuICBnbG9iYWwuZmV0Y2ggPSBmZXRjaFxuICBnbG9iYWwuSGVhZGVycyA9IEhlYWRlcnNcbiAgZ2xvYmFsLlJlcXVlc3QgPSBSZXF1ZXN0XG4gIGdsb2JhbC5SZXNwb25zZSA9IFJlc3BvbnNlXG59XG4iLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdGlkOiBtb2R1bGVJZCxcblx0XHRsb2FkZWQ6IGZhbHNlLFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdKG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcblx0bW9kdWxlLmxvYWRlZCA9IHRydWU7XG5cblx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcblx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xufVxuXG4iLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBkZWZpbml0aW9uKSB7XG5cdGZvcih2YXIga2V5IGluIGRlZmluaXRpb24pIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZGVmaW5pdGlvbiwga2V5KSAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIGtleSkpIHtcblx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBkZWZpbml0aW9uW2tleV0gfSk7XG5cdFx0fVxuXHR9XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18uZyA9IChmdW5jdGlvbigpIHtcblx0aWYgKHR5cGVvZiBnbG9iYWxUaGlzID09PSAnb2JqZWN0JykgcmV0dXJuIGdsb2JhbFRoaXM7XG5cdHRyeSB7XG5cdFx0cmV0dXJuIHRoaXMgfHwgbmV3IEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7XG5cdH0gY2F0Y2ggKGUpIHtcblx0XHRpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ29iamVjdCcpIHJldHVybiB3aW5kb3c7XG5cdH1cbn0pKCk7IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5obWQgPSBmdW5jdGlvbihtb2R1bGUpIHtcblx0bW9kdWxlID0gT2JqZWN0LmNyZWF0ZShtb2R1bGUpO1xuXHRpZiAoIW1vZHVsZS5jaGlsZHJlbikgbW9kdWxlLmNoaWxkcmVuID0gW107XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShtb2R1bGUsICdleHBvcnRzJywge1xuXHRcdGVudW1lcmFibGU6IHRydWUsXG5cdFx0c2V0OiBmdW5jdGlvbigpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcignRVMgTW9kdWxlcyBtYXkgbm90IGFzc2lnbiBtb2R1bGUuZXhwb3J0cyBvciBleHBvcnRzLiosIFVzZSBFU00gZXhwb3J0IHN5bnRheCwgaW5zdGVhZDogJyArIG1vZHVsZS5pZCk7XG5cdFx0fVxuXHR9KTtcblx0cmV0dXJuIG1vZHVsZTtcbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqLCBwcm9wKSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKTsgfSIsIi8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uciA9IGZ1bmN0aW9uKGV4cG9ydHMpIHtcblx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG5cdH1cblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbn07IiwiLy8gc3RhcnR1cFxuLy8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4vLyBUaGlzIGVudHJ5IG1vZHVsZSBpcyByZWZlcmVuY2VkIGJ5IG90aGVyIG1vZHVsZXMgc28gaXQgY2FuJ3QgYmUgaW5saW5lZFxudmFyIF9fd2VicGFja19leHBvcnRzX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiLi9FbmdpbmUvc3JjL0Zvcm1zL0NsaWVudC9DbGllbnQudHNcIik7XG4iXSwic291cmNlUm9vdCI6IiJ9
|
|
1283
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Aa29udHVyLmNhbmR5L3dvcmtzcGFjZS9Db21tb24vQ2FuZHlBcGlDbGllbnQvQ2xpZW50RHJhZnRJbmZvL0dldENsaWVudERyYWZ0SW5mb1VybC50cyIsIndlYnBhY2s6Ly9Aa29udHVyLmNhbmR5L3dvcmtzcGFjZS9Db21tb24vRXJyb3JzLnRzIiwid2VicGFjazovL0Brb250dXIuY2FuZHkvd29ya3NwYWNlL0NvbW1vbi9UeXBpbmdVdGlscy50cyIsIndlYnBhY2s6Ly9Aa29udHVyLmNhbmR5L3dvcmtzcGFjZS9ub2RlX21vZHVsZXMvd2hhdHdnLWZldGNoL2ZldGNoLmpzIiwid2VicGFjazovL0Brb250dXIuY2FuZHkvd29ya3NwYWNlL0VuZ2luZS9zcmMvRm9ybXMvQ2xpZW50L0NsaWVudC50cyIsIndlYnBhY2s6Ly9Aa29udHVyLmNhbmR5L3dvcmtzcGFjZS9FbmdpbmUvc3JjL0Zvcm1zL0NsaWVudC9DbGllbnRTZXR0aW5ncy50cyIsIndlYnBhY2s6Ly9Aa29udHVyLmNhbmR5L3dvcmtzcGFjZS9FbmdpbmUvc3JjL0Zvcm1zL0NsaWVudC9MZWdhY3lQdWJsaWNGb3JtL0NyZWF0ZUxlZ2FjeVB1YmxpY0Zvcm0udHMiLCJ3ZWJwYWNrOi8vQGtvbnR1ci5jYW5keS93b3Jrc3BhY2UvRW5naW5lL3NyYy9IZWxwZXJzL0xvYWRJbnRvRG9jdW1lbnQudHMiLCJ3ZWJwYWNrOi8vQGtvbnR1ci5jYW5keS93b3Jrc3BhY2Uvd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi9Aa29udHVyLmNhbmR5L3dvcmtzcGFjZS93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vQGtvbnR1ci5jYW5keS93b3Jrc3BhY2Uvd2VicGFjay9ydW50aW1lL2dsb2JhbCIsIndlYnBhY2s6L0Brb250dXIuY2FuZHkvd29ya3NwYWNlL3dlYnBhY2svcnVudGltZS9oYXJtb255IG1vZHVsZSBkZWNvcmF0b3IiLCJ3ZWJwYWNrOi9Aa29udHVyLmNhbmR5L3dvcmtzcGFjZS93ZWJwYWNrL3J1bnRpbWUvaGFzT3duUHJvcGVydHkgc2hvcnRoYW5kIiwid2VicGFjazovL0Brb250dXIuY2FuZHkvd29ya3NwYWNlL3dlYnBhY2svc3RhcnR1cCJdLCJuYW1lcyI6WyJnZXRDbGllbnREcmFmdEluZm9VcmwiLCJkcmFmdElkIiwibnMiLCJBcHBsaWNhdGlvbkVycm9yIiwiRXJyb3IiLCJtZXNzYWdlIiwibmFtZSIsImNvbnN0cnVjdG9yIiwiTm90SW1wbGVtZW50ZWRFcnJvciIsIk5vdFN1cHBvcnRlZEVycm9yIiwiSW52YWxpZFByb2dyYW1TdGF0ZUVycm9yIiwidW5kZWZpbmVkIiwiSW52YWxpZEFyZ3VtZW50RXJyb3IiLCJhcmd1bWVudE5hbWUiLCJUeXBpbmdFcnJvciIsImlzTm90TnVsbE9yVW5kZWZpbmVkIiwiaW5wdXQiLCJzdHJpbmdpZnlVbmtub3duRXJyb3IiLCJlcnJvciIsImVuc3VyZU5vdE51bGxPclVuZGVmaW5lZCIsIm5vb3AiLCJyZWplY3QiLCJpc0xlbmd0aEdyZWF0ZXJUaGVuT3JFcXVhbCIsIml0ZW1zIiwibWluTGVuZ3RoIiwibGVuZ3RoIiwibWluTGVuZ3RoT3JVbmRlZmluZWQiLCJhcnJheUhhc0xlbmd0aCIsImFycmF5SXNOb3RFbXB0eSIsImFycmF5SGFzQXRMZWFzdE9uZUl0ZW0iLCJlbnN1cmVBcnJheUlzTm90RW1wdHkiLCJlbnN1cmVBcnJheUhhc0xlbmd0aCIsImVuc3VyZUFycmF5TGVuZ3RoR3JlYXRlclRoZW5PckVxdWFsIiwiZW5zdXJlTmV2ZXIiLCJuZXZlckFyZ3VtZW50IiwiZW5zdXJlQW5kR2V0U3RyaW5nIiwicnVuQXN5bmNBY3Rpb24iLCJhY3Rpb24iLCJpc051bGxPckVtcHR5IiwiaXNOb3ROdWxsT3JFbXB0eSIsImlzTnVsbE9yV2hpdGVTcGFjZSIsInRyaW0iLCJ0cmltTGFzdFNsYXNoIiwidXJsIiwic2xpY2UiLCJhc3NlcnRJcyIsInZhbHVlIiwiZ2xvYmFsIiwiZ2xvYmFsVGhpcyIsInNlbGYiLCJzdXBwb3J0IiwiU3ltYm9sIiwiQmxvYiIsImUiLCJvYmoiLCJEYXRhVmlldyIsInByb3RvdHlwZSIsImlzUHJvdG90eXBlT2YiLCJ2aWV3Q2xhc3NlcyIsImlzQXJyYXlCdWZmZXJWaWV3IiwiQXJyYXlCdWZmZXIiLCJpc1ZpZXciLCJpbmRleE9mIiwiT2JqZWN0IiwidG9TdHJpbmciLCJjYWxsIiwibm9ybWFsaXplTmFtZSIsIlN0cmluZyIsInRlc3QiLCJUeXBlRXJyb3IiLCJ0b0xvd2VyQ2FzZSIsIm5vcm1hbGl6ZVZhbHVlIiwiaXRlcmF0b3JGb3IiLCJpdGVyYXRvciIsIm5leHQiLCJzaGlmdCIsImRvbmUiLCJIZWFkZXJzIiwiaGVhZGVycyIsInRoaXMiLCJtYXAiLCJmb3JFYWNoIiwiYXBwZW5kIiwiQXJyYXkiLCJpc0FycmF5IiwiaGVhZGVyIiwiZ2V0T3duUHJvcGVydHlOYW1lcyIsIm9sZFZhbHVlIiwiZ2V0IiwiaGFzIiwiaGFzT3duUHJvcGVydHkiLCJzZXQiLCJjYWxsYmFjayIsInRoaXNBcmciLCJrZXlzIiwicHVzaCIsInZhbHVlcyIsImVudHJpZXMiLCJjb25zdW1lZCIsImJvZHkiLCJib2R5VXNlZCIsIlByb21pc2UiLCJmaWxlUmVhZGVyUmVhZHkiLCJyZWFkZXIiLCJyZXNvbHZlIiwib25sb2FkIiwicmVzdWx0Iiwib25lcnJvciIsInJlYWRCbG9iQXNBcnJheUJ1ZmZlciIsImJsb2IiLCJGaWxlUmVhZGVyIiwicHJvbWlzZSIsInJlYWRBc0FycmF5QnVmZmVyIiwicmVhZEFzVGV4dCIsImJ1ZiIsInZpZXciLCJVaW50OEFycmF5IiwiY2hhcnMiLCJpIiwiZnJvbUNoYXJDb2RlIiwiam9pbiIsImJ1ZmZlckNsb25lIiwiYnl0ZUxlbmd0aCIsImJ1ZmZlciIsIkJvZHkiLCJfaW5pdEJvZHkiLCJfYm9keUluaXQiLCJfYm9keVRleHQiLCJfYm9keUJsb2IiLCJGb3JtRGF0YSIsIl9ib2R5Rm9ybURhdGEiLCJVUkxTZWFyY2hQYXJhbXMiLCJfYm9keUFycmF5QnVmZmVyIiwidHlwZSIsInJlamVjdGVkIiwiYXJyYXlCdWZmZXIiLCJieXRlT2Zmc2V0IiwidGhlbiIsInRleHQiLCJyZWFkQXJyYXlCdWZmZXJBc1RleHQiLCJmb3JtRGF0YSIsImRlY29kZSIsImpzb24iLCJKU09OIiwicGFyc2UiLCJtZXRob2RzIiwibWV0aG9kIiwidXBjYXNlZCIsInRvVXBwZXJDYXNlIiwiUmVxdWVzdCIsIm9wdGlvbnMiLCJjcmVkZW50aWFscyIsIm1vZGUiLCJzaWduYWwiLCJyZWZlcnJlciIsImNhY2hlIiwicmVQYXJhbVNlYXJjaCIsInJlcGxhY2UiLCJEYXRlIiwiZ2V0VGltZSIsImNsb25lIiwiZm9ybSIsInNwbGl0IiwiYnl0ZXMiLCJkZWNvZGVVUklDb21wb25lbnQiLCJyYXdIZWFkZXJzIiwic3Vic3RyIiwibGluZSIsInBhcnRzIiwia2V5IiwiUmVzcG9uc2UiLCJib2R5SW5pdCIsInN0YXR1cyIsIm9rIiwic3RhdHVzVGV4dCIsInJlc3BvbnNlIiwicmVkaXJlY3RTdGF0dXNlcyIsInJlZGlyZWN0IiwiUmFuZ2VFcnJvciIsImxvY2F0aW9uIiwiRE9NRXhjZXB0aW9uIiwiZXJyIiwic3RhY2siLCJjcmVhdGUiLCJmZXRjaCIsImluaXQiLCJyZXF1ZXN0IiwiYWJvcnRlZCIsInhociIsIlhNTEh0dHBSZXF1ZXN0IiwiYWJvcnRYaHIiLCJhYm9ydCIsImdldEFsbFJlc3BvbnNlSGVhZGVycyIsInJlc3BvbnNlVVJMIiwicmVzcG9uc2VUZXh0Iiwic2V0VGltZW91dCIsIm9udGltZW91dCIsIm9uYWJvcnQiLCJocmVmIiwib3BlbiIsImZpeFVybCIsIndpdGhDcmVkZW50aWFscyIsInJlc3BvbnNlVHlwZSIsInNldFJlcXVlc3RIZWFkZXIiLCJhZGRFdmVudExpc3RlbmVyIiwib25yZWFkeXN0YXRlY2hhbmdlIiwicmVhZHlTdGF0ZSIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJzZW5kIiwicG9seWZpbGwiLCJkZWZhdWx0Q2FsbGJhY2siLCJwYXJzZUJvb2wiLCJCb29sZWFuIiwicmVsYXRpdmVVcmwiLCJiYXNlVXJsIiwiQ0YiLCJrZWZvcm1zVXJsIiwiYnVpbGRVcmwiLCJwYXRoIiwicGFyYW1zIiwicXVlcnlQYXJ0cyIsInBhcmFtTmFtZSIsInBhcmFtVmFsdWUiLCJlbmNvZGVVUklDb21wb25lbnQiLCJpc0FsbG93ZWQiLCJkb21haW5zIiwiUmVnRXhwIiwiaG9zdCIsImdldFBhcmFtZXRlckJ5TmFtZSIsInNlYXJjaCIsInBhcmFtIiwiZmluZCIsInJ1blBhcmFsbGVsIiwidGFza3MiLCJjb21wbGV0ZWQiLCJ0YXNrIiwiaXNFbmdpbmVWZXJzaW9uR3JlYXRlclRoYW5PckVxdWFsIiwibGVmdCIsInJpZ2h0IiwibGVmdE51bWJlcnMiLCJwYXJzZUludCIsIngiLCJyaWdodE51bWJlcnMiLCJsb2FkRm9ybSIsInNldHRpbmdzIiwiZ2Z2IiwiZW5naW5lVmVyc2lvbiIsInJlc291cmNlc1ZlcnNpb24iLCJlbnRyeVBvaW50IiwiaXNOZWVkRW5naW5lIiwibWluIiwidiIsInJlc291cmNlWm9uZSIsIkxvYWRJbnRvRG9jdW1lbnQiLCJjYiIsInJlbmRlckZvcm0iLCJwYWdlQ29udGVudCIsImV4dGVuZGVkU2V0dGluZ3MiLCJwdWJsaWNGb3JtIiwiY3JlYXRlTGVnYWN5UHVibGljRm9ybSIsImdldEVuZ2luZUVudHJ5UG9pbnQiLCJzdGFydCIsImNsaWVudFNldHRpbmdzIiwiY2xpZW50RHJhZnRVcmwiLCJyZXF1ZXN0T3B0aW9ucyIsImF1dGhlbnRpY2F0aW9uIiwiYXV0aFNpZCIsImZldGNoSW1wbCIsImNsaWVudERyYWZ0SW5mbyIsImF1dGhvcml6ZWQiLCJjYXVsZHJvbkFwaVVybCIsImlzVGVzdFNlcnZlciIsInJlbmRlckNhY2hpbmdGb3JJRTgiLCJub3JtYWxpemF0aW9uT25TZXJ2ZXIiLCJub3JtYXRpdmVVcmwiLCJrb250dXJEb21haW5zIiwiYWJvbklkIiwib3JnSWQiLCJ1c2VySWQiLCJpc0luZGl2aWR1YWwiLCJpc0ZvcmVpZ24iLCJmZWVkYmFja0VuYWJsZWQiLCJjYW5keVRvdXJBdmFpbGFibGUiLCJldmVudEVtaXR0ZXIiLCJmb3JtSW5mbyIsInByaW50SW5mbyIsInJlZ2lvbnMiLCJoYXNUZW1wbGF0ZXMiLCJtb2RlbCIsImlzRGlzYWJsZWRDbGVhbkZvcm0iLCJpc0Rpc2FibGVkQ2xvc2VCdXR0b24iLCJpc0Rpc2FibGVkQ2xvc2VBbmRTYXZlQnV0dG9uIiwidGhlbWUiLCJsb2FkRXJyb3IiLCJyZW5kZXIiLCJ0ZW1wbGF0ZXNBcGkiLCJDYW5keUNsaWVudEV4cG9ydHMiLCJwYXJ0aWFsUmVuZGVyaW5nRm9ySUU4IiwibW9kZWxDaGFuZ2VFdmVudFBhdGgiLCJmaWVsZE5hbWUiLCJtYXBDaHVua1ZhbHVlcyIsImNodW5rIiwiZmlsdGVyIiwicmVkdWNlQ2h1bmtWYWx1ZXMiLCJjaHVua3MiLCJyZWR1Y2UiLCJMZWdhY3lQdWJsaWNGb3JtIiwidXBkYXRlUHJvYyIsImVycm9yTG9nIiwiZ0lkIiwicGlja2xpc3RzUHJvdmlkZXIiLCJnZXREaWdlc3RBcGlQaWNrbGlzdCIsInF1ZXJ5IiwiZXZlbnROYW1lIiwibGlzdGVuZXIiLCJldmVudE1hbmFnZXIiLCJvbiIsIm9mZiIsImNvbnNvbGUiLCJjaGFuZ2VTZXQiLCJzdG9wQXV0b3NlbmQiLCJ1bm1vdW50IiwiZ2V0Q2h1bmsiLCJmb3JtUm9vdCIsInZhbGlkYXRvciIsInZhbGlkYXRlQWxsIiwiZXJyb3JDb3VudCIsInBhdGhPck1vZGVsQ2h1bmsiLCJpbm5lckNodW5rIiwiZmlsbCIsInBhdGhPckFycmF5IiwiYXJyYXkiLCJjb25jYXQiLCJpbnN0YW5jZSIsImVuYWJsZWQiLCJwYXRoUHJlZml4ZXMiLCJ1cmkiLCJzY3JpcHRMb2FkZWQiLCJoZWFkIiwiZG9jdW1lbnQiLCJnZXRFbGVtZW50c0J5VGFnTmFtZSIsImRvY3VtZW50RWxlbWVudCIsInNjcmlwdCIsImNyZWF0ZUVsZW1lbnQiLCJsb2FkSGFuZGxlciIsInBhcmVudE5vZGUiLCJyZW1vdmVDaGlsZCIsInNyYyIsInNldEF0dHJpYnV0ZSIsImFwcGVuZENoaWxkIiwiaWdub3JlRXJyb3IiLCJsaW5rIiwiX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsIm1vZHVsZUlkIiwiY2FjaGVkTW9kdWxlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImlkIiwibG9hZGVkIiwiX193ZWJwYWNrX21vZHVsZXNfXyIsImQiLCJkZWZpbml0aW9uIiwibyIsImRlZmluZVByb3BlcnR5IiwiZW51bWVyYWJsZSIsImciLCJGdW5jdGlvbiIsIndpbmRvdyIsImhtZCIsImNoaWxkcmVuIiwicHJvcCIsIl9fd2VicGFja19leHBvcnRzX18iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUVPLGVBQVNBLENBQVQsQ0FBK0JDLENBQS9CLEVBQStCQTtBQUdsQyxlQUFBLFNBQUEsTUFBQSxDQUFnQkEsQ0FBQUEsQ0FBUUMsRUFBeEIsRUFBQSxVQUFBLEVBQUEsTUFBQSxDQUFxQ0QsQ0FBQUEsQ0FBUUEsT0FBN0MsRUFBQSxvQkFBQSxDQUFBOzs7Ozs7OzJUQUhZRCxDLEVBQUFBLHVCLEVBQUFBLHFHLEdBQUFBLEMsMEZBQUFBLEs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7VUNGSEcsZ0JBQUFBLEdBQWIsVUFBQSxNQUFBLEVBQUE7QUFBQSxRQUFBLFNBQUEsQ0FBQSxnQkFBQSxFQUFBLE1BQUEsQ0FBQTs7QUFBQSxZQUFBLE1BQUEsR0FBQSxZQUFBLENBQUEsZ0JBQUEsQ0FBQTs7QUFDSSxpQkFBQSxnQkFBQSxDQUFtQkUsQ0FBbkIsRUFBbUJBO0FBQWlCLGNBQUEsQ0FBQTtBQUFBLGlCQUFBLGVBQUEsQ0FBQSxJQUFBLEVBQUEsZ0JBQUEsQ0FBQSxFQUFBLENBQ2hDLENBQUEsR0FBQSxNQUFBLENBQUEsSUFBQSxDQUFB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U0FBOUJBLEVBQXlDO0FBQ3hDOFMsTUFBQUEsVUFBQUEsRUFBQUEsQ0FBWSxDQUQ0QjtBQUV4Q2xSLE1BQUFBLEdBQUFBLEVBQUssWUFBQTtBQUNKLGNBQU0sSUFBSXZGLEtBQUosQ0FBVSw0RkFBNEZpVyxDQUFBQSxDQUFPQyxFQUE3RyxDQUFOO0FBQW1IQTtBQUg1RSxLQUF6Q3ZTLENBTUEsRUFBT3NTLENBQVA7QUFBT0EsR0ZSUkosRUdEQUEsbUJBQUFBLENBQW9CVSxDQUFwQlYsR0FBd0IsVUFBUzNTLENBQVQsRUFBYzZULENBQWQsRUFBY0E7QUFBUSxXQUFPcFQsTUFBQUEsQ0FBT1AsU0FBUE8sQ0FBaUIyQixjQUFqQjNCLENBQWdDRSxJQUFoQ0YsQ0FBcUNULENBQXJDUyxFQUEwQ29ULENBQTFDcFQsQ0FBUDtBQUFpRG9ULEdIQy9GbEI7O0FJRUEsTUFBSW1CLG1CQUFBQSxHQUFzQm5CLG1CQUFBQSxDQUFvQixHQUFwQkEsQ0FBMUI7QUFBOEMsQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERyYWZ0RnVsbElkIH0gZnJvbSBcIi4uL1R5cGVzL0RyYWZ0RnVsbElkXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDbGllbnREcmFmdEluZm9VcmwoZHJhZnRJZDogRHJhZnRGdWxsSWQpIHtcbiAgICAvLyBOT1RFINCt0YLQsCDRhNGD0L3QutGG0LjRjyDQvtCx0YrRj9Cy0LvQtdC90LAg0L7RgtC00LXQu9GM0L3Qviwg0LjQsdC+INC+0L3QsCDQstGF0L7QtNC40YIg0LIg0YHQvtGB0YLQsNCyIGNsaWVudC5qcyDQuFxuICAgIC8vINC90LUg0LTQvtC70LbQvdC+INC/0YDQvtC40YHRhdC+0LTQuNGC0Ywg0YPRgtC10LbQtdC70LXQvdC40Y8gY2xpZW50LmpzLdCwXG4gICAgcmV0dXJuIGB2MS9ucy8ke2RyYWZ0SWQubnN9L2RyYWZ0cy8ke2RyYWZ0SWQuZHJhZnRJZH0vY2xpZW50LWRyYWZ0LWluZm9gO1xufVxuIiwiZXhwb3J0IGNsYXNzIEFwcGxpY2F0aW9uRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gICAgcHVibGljIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZykge1xuICAgICAgICBzdXBlcihtZXNzYWdlKTtcbiAgICAgICAgdGhpcy5uYW1lID0gdGhpcy5jb25zdHJ1Y3Rvci5uYW1lO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIE5vdEltcGxlbWVudGVkRXJyb3IgZXh0ZW5kcyBBcHBsaWNhdGlvbkVycm9yIHtcbiAgICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKFwiT3BlcmF0aW9uIG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBOb3RTdXBwb3J0ZWRFcnJvciBleHRlbmRzIEFwcGxpY2F0aW9uRXJyb3Ige1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgICAgIHN1cGVyKG1lc3NhZ2UgPz8gXCJPcGVyYXRpb24gbm90IHN1cHBvcnRlZFwiKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBJbnZhbGlkUHJvZ3JhbVN0YXRlRXJyb3IgZXh0ZW5kcyBBcHBsaWNhdGlvbkVycm9yIHtcbiAgICBwdWJsaWMgY29uc3RydWN0b3IobWVzc2FnZT86IHN0cmluZykge1xuICAgICAgICBzdXBlcihcIkludmFsaWQgcHJvZ3JhbSBzdGF0ZVwiICsgKG1lc3NhZ2UgIT0gdW5kZWZpbmVkID8gXCI6IFwiICsgbWVzc2FnZSA6IFwiXCIpKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBJbnZhbGlkQXJndW1lbnRFcnJvciBleHRlbmRzIEFwcGxpY2F0aW9uRXJyb3Ige1xuICAgIHB1YmxpYyBjb25zdHJ1Y3Rvcihhcmd1bWVudE5hbWU6IHN0cmluZywgbWVzc2FnZT86IHN0cmluZykge1xuICAgICAgICBzdXBlcihcbiAgICAgICAgICAgIG1lc3NhZ2UgIT0gdW5kZWZpbmVkID8gYCR7bWVzc2FnZX0gKGFyZ3VtZW50OiAke2FyZ3VtZW50TmFtZX0pYCA6IGBJbnZhbGlkIGFyZ3VtZW50IHZhbHVlOiAke2FyZ3VtZW50TmFtZX1gXG4gICAgICAgICk7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgVHlwaW5nRXJyb3IgZXh0ZW5kcyBBcHBsaWNhdGlvbkVycm9yIHtcbiAgICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKFwiSW52YWxpZCB0eXBpbmdcIik7XG4gICAgfVxufVxuIiwiLyoqKlxuICog0KHRgtGA0L7Qs9C+0YLQuNC/0LjQt9C40YDQvtCy0LDQvdC90LDRjyDQt9Cw0LzQtdC90LAg0LTQu9GPIEJvb2xlYW4oLi4uKVxuICog0J7QsdGL0YfQvdC+INC40YHQv9C+0LvRjNC30YPQtdGC0YHRjyDQtNC70Y8gWy4uLl0uZmlsdGVyKGlzTm90TnVsbE9yVW5kZWZpbmVkKVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNOb3ROdWxsT3JVbmRlZmluZWQ8VD4oaW5wdXQ6IFQpOiBpbnB1dCBpcyBOb25OdWxsYWJsZTxUPiB7XG4gICAgcmV0dXJuIGlucHV0ICE9IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0cmluZ2lmeVVua25vd25FcnJvcihlcnJvcjogdW5rbm93bik6IHVuZGVmaW5lZCB8IHN0cmluZyB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtcmV0dXJuXG4gICAgcmV0dXJuIHR5cGVvZiBlcnJvciA9PT0gXCJvYmplY3RcIiAmJiBlcnJvcj8uW1wibWVzc2FnZVwiXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZU5vdE51bGxPclVuZGVmaW5lZDxUPihpbnB1dDogVCk6IGFzc2VydHMgaW5wdXQgaXMgTm9uTnVsbGFibGU8VD4ge1xuICAgIGlmICghaXNOb3ROdWxsT3JVbmRlZmluZWQoaW5wdXQpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVmFsdWUgbXVzdCBiZSBkZWZpbmVkYCk7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbm9vcCgpOiB2b2lkIHtcbiAgICAvLyBub29wXG59XG5cbmV4cG9ydCB0eXBlIEVycm9yRmlyc3RDYWxsYmFjazxUPiA9ICguLi5hcmdzOiBbRXJyb3IsIG51bGwgfCB1bmRlZmluZWRdIHwgW251bGwgfCB1bmRlZmluZWQsIFRdIHwgW0Vycm9yXSkgPT4gdm9pZDtcblxuZXhwb3J0IGZ1bmN0aW9uIHJlamVjdChtZXNzYWdlPzogc3RyaW5nIHwgRXJyb3IpOiBuZXZlciB7XG4gICAgaWYgKHR5cGVvZiBtZXNzYWdlID09PSBcInN0cmluZ1wiIHx8IG1lc3NhZ2UgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlID8/IFwiVW5kZWZpbmVkIGlzIG5vdCBhbGxvd2VkXCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG1lc3NhZ2U7XG4gICAgfVxufVxuXG50eXBlIEFycmF5T2ZMZW5ndGg8VEl0ZW0sIFRMZW5ndGggZXh0ZW5kcyBudW1iZXIsIFRSZXN0IGV4dGVuZHMgVEl0ZW1bXSA9IFtdPiA9IFRSZXN0IGV4dGVuZHMgeyBsZW5ndGg6IFRMZW5ndGggfVxuICAgID8gVFJlc3RcbiAgICA6IEFycmF5T2ZMZW5ndGg8VEl0ZW0sIFRMZW5ndGgsIFtUSXRlbSwgLi4uVFJlc3RdPjtcblxuZXhwb3J0IHR5cGUgTWluTGVuZ3RoQXJyYXk8VEl0ZW0sIFRMZW5ndGggZXh0ZW5kcyBudW1iZXIsIFRSZXN0IGV4dGVuZHMgVEl0ZW1bXSA9IFtdPiA9IFRSZXN0IGV4dGVuZHMge1xuICAgIGxlbmd0aDogVExlbmd0aDtcbn1cbiAgICA/IFsuLi5UUmVzdCwgLi4uVEl0ZW1bXV1cbiAgICA6IE1pbkxlbmd0aEFycmF5PFRJdGVtLCBUTGVuZ3RoLCBbLi4uVFJlc3QsIFRJdGVtXT47XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0xlbmd0aEdyZWF0ZXJUaGVuT3JFcXVhbDxULCBUTnVtIGV4dGVuZHMgbnVtYmVyPihcbiAgICBpdGVtczogcmVhZG9ubHkgVFtdLFxuICAgIG1pbkxlbmd0aDogVE51bVxuKTogaXRlbXMgaXMgTWluTGVuZ3RoQXJyYXk8VCwgVE51bT4ge1xuICAgIHJldHVybiBpdGVtcy5sZW5ndGggPj0gbWluTGVuZ3RoO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWluTGVuZ3RoT3JVbmRlZmluZWQ8VCwgVE51bSBleHRlbmRzIG51bWJlcj4oXG4gICAgaXRlbXM6IFRbXSxcbiAgICBtaW5MZW5ndGg6IFROdW1cbik6IHVuZGVmaW5lZCB8IE1pbkxlbmd0aEFycmF5PFQsIFROdW0+IHtcbiAgICBpZiAoaXNMZW5ndGhHcmVhdGVyVGhlbk9yRXF1YWwoaXRlbXMsIG1pbkxlbmd0aCkpIHtcbiAgICAgICAgcmV0dXJuIGl0ZW1zO1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXJyYXlIYXNMZW5ndGg8VCwgVE51bSBleHRlbmRzIG51bWJlcj4oXG4gICAgaXRlbXM6IHJlYWRvbmx5IFRbXSxcbiAgICBsZW5ndGg6IFROdW1cbik6IGl0ZW1zIGlzIEFycmF5T2ZMZW5ndGg8VCwgVE51bT4ge1xuICAgIHJldHVybiBpdGVtcy5sZW5ndGggPT09IGxlbmd0aDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFycmF5SXNOb3RFbXB0eTxUPihpdGVtczogcmVhZG9ubHkgVFtdKTogaXRlbXMgaXMgTWluTGVuZ3RoQXJyYXk8VCwgMT4ge1xuICAgIHJldHVybiBpdGVtcy5sZW5ndGggPiAwO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXJyYXlIYXNBdExlYXN0T25lSXRlbTxUPihpdGVtczogcmVhZG9ubHkgVFtdKTogaXRlbXMgaXMgTWluTGVuZ3RoQXJyYXk8VCwgMT4ge1xuICAgIHJldHVybiBpdGVtcy5sZW5ndGggPiAwO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZW5zdXJlQXJyYXlJc05vdEVtcHR5PFQ+KGl0ZW1zOiByZWFkb25seSBUW10pOiBhc3NlcnRzIGl0ZW1zIGlzIE1pbkxlbmd0aEFycmF5PFQsIDE+IHtcbiAgICBpZiAoIWFycmF5SXNOb3RFbXB0eShpdGVtcykpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBcnJheSBtdXN0IGJlIG5vdCBlbXB0eWApO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZUFycmF5SGFzTGVuZ3RoPFQsIFROdW0gZXh0ZW5kcyBudW1iZXI+KFxuICAgIGl0ZW1zOiByZWFkb25seSBUW10sXG4gICAgbGVuZ3RoOiBUTnVtXG4pOiBhc3NlcnRzIGl0ZW1zIGlzIEFycmF5T2ZMZW5ndGg8VCwgVE51bT4ge1xuICAgIGlmICghYXJyYXlIYXNMZW5ndGgoaXRlbXMsIGxlbmd0aCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBcnJheSBzaG91bGQgaGFzIGxlbmd0aCAke2xlbmd0aH1gKTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlbnN1cmVBcnJheUxlbmd0aEdyZWF0ZXJUaGVuT3JFcXVhbDxULCBUTnVtIGV4dGVuZHMgbnVtYmVyPihcbiAgICBpdGVtczogcmVhZG9ubHkgVFtdLFxuICAgIGxlbmd0aDogVE51bVxuKTogYXNzZXJ0cyBpdGVtcyBpcyBBcnJheU9mTGVuZ3RoPFQsIFROdW0+IHtcbiAgICBpZiAoIWlzTGVuZ3RoR3JlYXRlclRoZW5PckVxdWFsKGl0ZW1zLCBsZW5ndGgpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQXJyYXkgbXVzdCBoYXZlIG1pbmltYWwgbGVuZ3RoICR7bGVuZ3RofWApO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZU5ldmVyKG5ldmVyQXJndW1lbnQ6IG5ldmVyKTogdm9pZCB7XG4gICAgLy8gbm9vcFxufVxuXG5leHBvcnQgZnVuY3Rpb24gZW5zdXJlQW5kR2V0U3RyaW5nKG5ldmVyQXJndW1lbnQ6IG5ldmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7bmV2ZXJBcmd1bWVudH1gO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcnVuQXN5bmNBY3Rpb24oYWN0aW9uOiAoKSA9PiBQcm9taXNlPHZvaWQ+KTogdm9pZCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1mbG9hdGluZy1wcm9taXNlc1xuICAgIGFjdGlvbigpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNOdWxsT3JFbXB0eShpbnB1dDogc3RyaW5nIHwgdW5kZWZpbmVkKTogaW5wdXQgaXMgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gaW5wdXQgPT0gdW5kZWZpbmVkIHx8IGlucHV0ID09PSBcIlwiO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNOb3ROdWxsT3JFbXB0eShpbnB1dDogc3RyaW5nIHwgdW5kZWZpbmVkKTogaW5wdXQgaXMgc3RyaW5nIHtcbiAgICByZXR1cm4gIWlzTnVsbE9yRW1wdHkoaW5wdXQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNOdWxsT3JXaGl0ZVNwYWNlKGlucHV0OiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsKTogaW5wdXQgaXMgdW5kZWZpbmVkIHwgbnVsbCB7XG4gICAgcmV0dXJuIGlucHV0ID09IHVuZGVmaW5lZCB8fCBpbnB1dC50cmltKCkgPT09IFwiXCI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0cmltTGFzdFNsYXNoKHVybDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdXJsLnNsaWNlKC0xKSA9PT0gXCIvXCIgPyB1cmwuc2xpY2UoMCwgLTEpIDogdXJsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0SXM8VD4odmFsdWU6IFQpOiB2b2lkIHtcbiAgICAvLyBub29wXG59XG4iLCJ2YXIgZ2xvYmFsID1cbiAgKHR5cGVvZiBnbG9iYWxUaGlzICE9PSAndW5kZWZpbmVkJyAmJiBnbG9iYWxUaGlzKSB8fFxuICAodHlwZW9mIHNlbGYgIT09ICd1bmRlZmluZWQnICYmIHNlbGYpIHx8XG4gICh0eXBlb2YgZ2xvYmFsICE9PSAndW5kZWZpbmVkJyAmJiBnbG9iYWwpXG5cbnZhciBzdXBwb3J0ID0ge1xuICBzZWFyY2hQYXJhbXM6ICdVUkxTZWFyY2hQYXJhbXMnIGluIGdsb2JhbCxcbiAgaXRlcmFibGU6ICdTeW1ib2wnIGluIGdsb2JhbCAmJiAnaXRlcmF0b3InIGluIFN5bWJvbCxcbiAgYmxvYjpcbiAgICAnRmlsZVJlYWRlcicgaW4gZ2xvYmFsICYmXG4gICAgJ0Jsb2InIGluIGdsb2JhbCAmJlxuICAgIChmdW5jdGlvbigpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIG5ldyBCbG9iKClcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgfSkoKSxcbiAgZm9ybURhdGE6ICdGb3JtRGF0YScgaW4gZ2xvYmFsLFxuICBhcnJheUJ1ZmZlcjogJ0FycmF5QnVmZmVyJyBpbiBnbG9iYWxcbn1cblxuZnVuY3Rpb24gaXNEYXRhVmlldyhvYmopIHtcbiAgcmV0dXJuIG9iaiAmJiBEYXRhVmlldy5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihvYmopXG59XG5cbmlmIChzdXBwb3J0LmFycmF5QnVmZmVyKSB7XG4gIHZhciB2aWV3Q2xhc3NlcyA9IFtcbiAgICAnW29iamVjdCBJbnQ4QXJyYXldJyxcbiAgICAnW29iamVjdCBVaW50OEFycmF5XScsXG4gICAgJ1tvYmplY3QgVWludDhDbGFtcGVkQXJyYXldJyxcbiAgICAnW29iamVjdCBJbnQxNkFycmF5XScsXG4gICAgJ1tvYmplY3QgVWludDE2QXJyYXldJyxcbiAgICAnW29iamVjdCBJbnQzMkFycmF5XScsXG4gICAgJ1tvYmplY3QgVWludDMyQXJyYXldJyxcbiAgICAnW29iamVjdCBGbG9hdDMyQXJyYXldJyxcbiAgICAnW29iamVjdCBGbG9hdDY0QXJyYXldJ1xuICBdXG5cbiAgdmFyIGlzQXJyYXlCdWZmZXJWaWV3ID1cbiAgICBBcnJheUJ1ZmZlci5pc1ZpZXcgfHxcbiAgICBmdW5jdGlvbihvYmopIHtcbiAgICAgIHJldHVybiBvYmogJiYgdmlld0NsYXNzZXMuaW5kZXhPZihPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwob2JqKSkgPiAtMVxuICAgIH1cbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplTmFtZShuYW1lKSB7XG4gIGlmICh0eXBlb2YgbmFtZSAhPT0gJ3N0cmluZycpIHtcbiAgICBuYW1lID0gU3RyaW5nKG5hbWUpXG4gIH1cbiAgaWYgKC9bXmEtejAtOVxcLSMkJSYnKisuXl9gfH4hXS9pLnRlc3QobmFtZSkgfHwgbmFtZSA9PT0gJycpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIGNoYXJhY3RlciBpbiBoZWFkZXIgZmllbGQgbmFtZTogXCInICsgbmFtZSArICdcIicpXG4gIH1cbiAgcmV0dXJuIG5hbWUudG9Mb3dlckNhc2UoKVxufVxuXG5mdW5jdGlvbiBub3JtYWxpemVWYWx1ZSh2YWx1ZSkge1xuICBpZiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJykge1xuICAgIHZhbHVlID0gU3RyaW5nKHZhbHVlKVxuICB9XG4gIHJldHVybiB2YWx1ZVxufVxuXG4vLyBCdWlsZCBhIGRlc3RydWN0aXZlIGl0ZXJhdG9yIGZvciB0aGUgdmFsdWUgbGlzdFxuZnVuY3Rpb24gaXRlcmF0b3JGb3IoaXRlbXMpIHtcbiAgdmFyIGl0ZXJhdG9yID0ge1xuICAgIG5leHQ6IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIHZhbHVlID0gaXRlbXMuc2hpZnQoKVxuICAgICAgcmV0dXJuIHtkb25lOiB2YWx1ZSA9PT0gdW5kZWZpbmVkLCB2YWx1ZTogdmFsdWV9XG4gICAgfVxuICB9XG5cbiAgaWYgKHN1cHBvcnQuaXRlcmFibGUpIHtcbiAgICBpdGVyYXRvcltTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gaXRlcmF0b3JcbiAgICB9XG4gIH1cblxuICByZXR1cm4gaXRlcmF0b3Jcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEhlYWRlcnMoaGVhZGVycykge1xuICB0aGlzLm1hcCA9IHt9XG5cbiAgaWYgKGhlYWRlcnMgaW5zdGFuY2VvZiBIZWFkZXJzKSB7XG4gICAgaGVhZGVycy5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlLCBuYW1lKSB7XG4gICAgICB0aGlzLmFwcGVuZChuYW1lLCB2YWx1ZSlcbiAgICB9LCB0aGlzKVxuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoaGVhZGVycykpIHtcbiAgICBoZWFkZXJzLmZvckVhY2goZnVuY3Rpb24oaGVhZGVyKSB7XG4gICAgICB0aGlzLmFwcGVuZChoZWFkZXJbMF0sIGhlYWRlclsxXSlcbiAgICB9LCB0aGlzKVxuICB9IGVsc2UgaWYgKGhlYWRlcnMpIHtcbiAgICBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhoZWFkZXJzKS5mb3JFYWNoKGZ1bmN0aW9uKG5hbWUpIHtcbiAgICAgIHRoaXMuYXBwZW5kKG5hbWUsIGhlYWRlcnNbbmFtZV0pXG4gICAgfSwgdGhpcylcbiAgfVxufVxuXG5IZWFkZXJzLnByb3RvdHlwZS5hcHBlbmQgPSBmdW5jdGlvbihuYW1lLCB2YWx1ZSkge1xuICBuYW1lID0gbm9ybWFsaXplTmFtZShuYW1lKVxuICB2YWx1ZSA9IG5vcm1hbGl6ZVZhbHVlKHZhbHVlKVxuICB2YXIgb2xkVmFsdWUgPSB0aGlzLm1hcFtuYW1lXVxuICB0aGlzLm1hcFtuYW1lXSA9IG9sZFZhbHVlID8gb2xkVmFsdWUgKyAnLCAnICsgdmFsdWUgOiB2YWx1ZVxufVxuXG5IZWFkZXJzLnByb3RvdHlwZVsnZGVsZXRlJ10gPSBmdW5jdGlvbihuYW1lKSB7XG4gIGRlbGV0ZSB0aGlzLm1hcFtub3JtYWxpemVOYW1lKG5hbWUpXVxufVxuXG5IZWFkZXJzLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbihuYW1lKSB7XG4gIG5hbWUgPSBub3JtYWxpemVOYW1lKG5hbWUpXG4gIHJldHVybiB0aGlzLmhhcyhuYW1lKSA/IHRoaXMubWFwW25hbWVdIDogbnVsbFxufVxuXG5IZWFkZXJzLnByb3RvdHlwZS5oYXMgPSBmdW5jdGlvbihuYW1lKSB7XG4gIHJldHVybiB0aGlzLm1hcC5oYXNPd25Qcm9wZXJ0eShub3JtYWxpemVOYW1lKG5hbWUpKVxufVxuXG5IZWFkZXJzLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbihuYW1lLCB2YWx1ZSkge1xuICB0aGlzLm1hcFtub3JtYWxpemVOYW1lKG5hbWUpXSA9IG5vcm1hbGl6ZVZhbHVlKHZhbHVlKVxufVxuXG5IZWFkZXJzLnByb3RvdHlwZS5mb3JFYWNoID0gZnVuY3Rpb24oY2FsbGJhY2ssIHRoaXNBcmcpIHtcbiAgZm9yICh2YXIgbmFtZSBpbiB0aGlzLm1hcCkge1xuICAgIGlmICh0aGlzLm1hcC5oYXNPd25Qcm9wZXJ0eShuYW1lKSkge1xuICAgICAgY2FsbGJhY2suY2FsbCh0aGlzQXJnLCB0aGlzLm1hcFtuYW1lXSwgbmFtZSwgdGhpcylcbiAgICB9XG4gIH1cbn1cblxuSGVhZGVycy5wcm90b3R5cGUua2V5cyA9IGZ1bmN0aW9uKCkge1xuICB2YXIgaXRlbXMgPSBbXVxuICB0aGlzLmZvckVhY2goZnVuY3Rpb24odmFsdWUsIG5hbWUpIHtcbiAgICBpdGVtcy5wdXNoKG5hbWUpXG4gIH0pXG4gIHJldHVybiBpdGVyYXRvckZvcihpdGVtcylcbn1cblxuSGVhZGVycy5wcm90b3R5cGUudmFsdWVzID0gZnVuY3Rpb24oKSB7XG4gIHZhciBpdGVtcyA9IFtdXG4gIHRoaXMuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSkge1xuICAgIGl0ZW1zLnB1c2godmFsdWUpXG4gIH0pXG4gIHJldHVybiBpdGVyYXRvckZvcihpdGVtcylcbn1cblxuSGVhZGVycy5wcm90b3R5cGUuZW50cmllcyA9IGZ1bmN0aW9uKCkge1xuICB2YXIgaXRlbXMgPSBbXVxuICB0aGlzLmZvckVhY2goZnVuY3Rpb24odmFsdWUsIG5hbWUpIHtcbiAgICBpdGVtcy5wdXNoKFtuYW1lLCB2YWx1ZV0pXG4gIH0pXG4gIHJldHVybiBpdGVyYXRvckZvcihpdGVtcylcbn1cblxuaWYgKHN1cHBvcnQuaXRlcmFibGUpIHtcbiAgSGVhZGVycy5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXSA9IEhlYWRlcnMucHJvdG90eXBlLmVudHJpZXNcbn1cblxuZnVuY3Rpb24gY29uc3VtZWQoYm9keSkge1xuICBpZiAoYm9keS5ib2R5VXNlZCkge1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgVHlwZUVycm9yKCdBbHJlYWR5IHJlYWQnKSlcbiAgfVxuICBib2R5LmJvZHlVc2VkID0gdHJ1ZVxufVxuXG5mdW5jdGlvbiBmaWxlUmVhZGVyUmVhZHkocmVhZGVyKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiAgICByZWFkZXIub25sb2FkID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXNvbHZlKHJlYWRlci5yZXN1bHQpXG4gICAgfVxuICAgIHJlYWRlci5vbmVycm9yID0gZnVuY3Rpb24oKSB7XG4gICAgICByZWplY3QocmVhZGVyLmVycm9yKVxuICAgIH1cbiAgfSlcbn1cblxuZnVuY3Rpb24gcmVhZEJsb2JBc0FycmF5QnVmZmVyKGJsb2IpIHtcbiAgdmFyIHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKClcbiAgdmFyIHByb21pc2UgPSBmaWxlUmVhZGVyUmVhZHkocmVhZGVyKVxuICByZWFkZXIucmVhZEFzQXJyYXlCdWZmZXIoYmxvYilcbiAgcmV0dXJuIHByb21pc2Vcbn1cblxuZnVuY3Rpb24gcmVhZEJsb2JBc1RleHQoYmxvYikge1xuICB2YXIgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKVxuICB2YXIgcHJvbWlzZSA9IGZpbGVSZWFkZXJSZWFkeShyZWFkZXIpXG4gIHJlYWRlci5yZWFkQXNUZXh0KGJsb2IpXG4gIHJldHVybiBwcm9taXNlXG59XG5cbmZ1bmN0aW9uIHJlYWRBcnJheUJ1ZmZlckFzVGV4dChidWYpIHtcbiAgdmFyIHZpZXcgPSBuZXcgVWludDhBcnJheShidWYpXG4gIHZhciBjaGFycyA9IG5ldyBBcnJheSh2aWV3Lmxlbmd0aClcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHZpZXcubGVuZ3RoOyBpKyspIHtcbiAgICBjaGFyc1tpXSA9IFN0cmluZy5mcm9tQ2hhckNvZGUodmlld1tpXSlcbiAgfVxuICByZXR1cm4gY2hhcnMuam9pbignJylcbn1cblxuZnVuY3Rpb24gYnVmZmVyQ2xvbmUoYnVmKSB7XG4gIGlmIChidWYuc2xpY2UpIHtcbiAgICByZXR1cm4gYnVmLnNsaWNlKDApXG4gIH0gZWxzZSB7XG4gICAgdmFyIHZpZXcgPSBuZXcgVWludDhBcnJheShidWYuYnl0ZUxlbmd0aClcbiAgICB2aWV3LnNldChuZXcgVWludDhBcnJheShidWYpKVxuICAgIHJldHVybiB2aWV3LmJ1ZmZlclxuICB9XG59XG5cbmZ1bmN0aW9uIEJvZHkoKSB7XG4gIHRoaXMuYm9keVVzZWQgPSBmYWxzZVxuXG4gIHRoaXMuX2luaXRCb2R5ID0gZnVuY3Rpb24oYm9keSkge1xuICAgIC8qXG4gICAgICBmZXRjaC1tb2NrIHdyYXBzIHRoZSBSZXNwb25zZSBvYmplY3QgaW4gYW4gRVM2IFByb3h5IHRvXG4gICAgICBwcm92aWRlIHVzZWZ1bCB0ZXN0IGhhcm5lc3MgZmVhdHVyZXMgc3VjaCBhcyBmbHVzaC4gSG93ZXZlciwgb25cbiAgICAgIEVTNSBicm93c2VycyB3aXRob3V0IGZldGNoIG9yIFByb3h5IHN1cHBvcnQgcG9sbHlmaWxscyBtdXN0IGJlIHVzZWQ7XG4gICAgICB0aGUgcHJveHktcG9sbHlmaWxsIGlzIHVuYWJsZSB0byBwcm94eSBhbiBhdHRyaWJ1dGUgdW5sZXNzIGl0IGV4aXN0c1xuICAgICAgb24gdGhlIG9iamVjdCBiZWZvcmUgdGhlIFByb3h5IGlzIGNyZWF0ZWQuIFRoaXMgY2hhbmdlIGVuc3VyZXNcbiAgICAgIFJlc3BvbnNlLmJvZHlVc2VkIGV4aXN0cyBvbiB0aGUgaW5zdGFuY2UsIHdoaWxlIG1haW50YWluaW5nIHRoZVxuICAgICAgc2VtYW50aWMgb2Ygc2V0dGluZyBSZXF1ZXN0LmJvZHlVc2VkIGluIHRoZSBjb25zdHJ1Y3RvciBiZWZvcmVcbiAgICAgIF9pbml0Qm9keSBpcyBjYWxsZWQuXG4gICAgKi9cbiAgICB0aGlzLmJvZHlVc2VkID0gdGhpcy5ib2R5VXNlZFxuICAgIHRoaXMuX2JvZHlJbml0ID0gYm9keVxuICAgIGlmICghYm9keSkge1xuICAgICAgdGhpcy5fYm9keVRleHQgPSAnJ1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGJvZHkgPT09ICdzdHJpbmcnKSB7XG4gICAgICB0aGlzLl9ib2R5VGV4dCA9IGJvZHlcbiAgICB9IGVsc2UgaWYgKHN1cHBvcnQuYmxvYiAmJiBCbG9iLnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKGJvZHkpKSB7XG4gICAgICB0aGlzLl9ib2R5QmxvYiA9IGJvZHlcbiAgICB9IGVsc2UgaWYgKHN1cHBvcnQuZm9ybURhdGEgJiYgRm9ybURhdGEucHJvdG90eXBlLmlzUHJvdG90eXBlT2YoYm9keSkpIHtcbiAgICAgIHRoaXMuX2JvZHlGb3JtRGF0YSA9IGJvZHlcbiAgICB9IGVsc2UgaWYgKHN1cHBvcnQuc2VhcmNoUGFyYW1zICYmIFVSTFNlYXJjaFBhcmFtcy5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihib2R5KSkge1xuICAgICAgdGhpcy5fYm9keVRleHQgPSBib2R5LnRvU3RyaW5nKClcbiAgICB9IGVsc2UgaWYgKHN1cHBvcnQuYXJyYXlCdWZmZXIgJiYgc3VwcG9ydC5ibG9iICYmIGlzRGF0YVZpZXcoYm9keSkpIHtcbiAgICAgIHRoaXMuX2JvZHlBcnJheUJ1ZmZlciA9IGJ1ZmZlckNsb25lKGJvZHkuYnVmZmVyKVxuICAgICAgLy8gSUUgMTAtMTEgY2FuJ3QgaGFuZGxlIGEgRGF0YVZpZXcgYm9keS5cbiAgICAgIHRoaXMuX2JvZHlJbml0ID0gbmV3IEJsb2IoW3RoaXMuX2JvZHlBcnJheUJ1ZmZlcl0pXG4gICAgfSBlbHNlIGlmIChzdXBwb3J0LmFycmF5QnVmZmVyICYmIChBcnJheUJ1ZmZlci5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihib2R5KSB8fCBpc0FycmF5QnVmZmVyVmlldyhib2R5KSkpIHtcbiAgICAgIHRoaXMuX2JvZHlBcnJheUJ1ZmZlciA9IGJ1ZmZlckNsb25lKGJvZHkpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2JvZHlUZXh0ID0gYm9keSA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChib2R5KVxuICAgIH1cblxuICAgIGlmICghdGhpcy5oZWFkZXJzLmdldCgnY29udGVudC10eXBlJykpIHtcbiAgICAgIGlmICh0eXBlb2YgYm9keSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgdGhpcy5oZWFkZXJzLnNldCgnY29udGVudC10eXBlJywgJ3RleHQvcGxhaW47Y2hhcnNldD1VVEYtOCcpXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuX2JvZHlCbG9iICYmIHRoaXMuX2JvZHlCbG9iLnR5cGUpIHtcbiAgICAgICAgdGhpcy5oZWFkZXJzLnNldCgnY29udGVudC10eXBlJywgdGhpcy5fYm9keUJsb2IudHlwZSlcbiAgICAgIH0gZWxzZSBpZiAoc3VwcG9ydC5zZWFyY2hQYXJhbXMgJiYgVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKGJvZHkpKSB7XG4gICAgICAgIHRoaXMuaGVhZGVycy5zZXQoJ2NvbnRlbnQtdHlwZScsICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7Y2hhcnNldD1VVEYtOCcpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKHN1cHBvcnQuYmxvYikge1xuICAgIHRoaXMuYmxvYiA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIHJlamVjdGVkID0gY29uc3VtZWQodGhpcylcbiAgICAgIGlmIChyZWplY3RlZCkge1xuICAgICAgICByZXR1cm4gcmVqZWN0ZWRcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuX2JvZHlCbG9iKSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5fYm9keUJsb2IpXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuX2JvZHlBcnJheUJ1ZmZlcikge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG5ldyBCbG9iKFt0aGlzLl9ib2R5QXJyYXlCdWZmZXJdKSlcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5fYm9keUZvcm1EYXRhKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignY291bGQgbm90IHJlYWQgRm9ybURhdGEgYm9keSBhcyBibG9iJylcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUobmV3IEJsb2IoW3RoaXMuX2JvZHlUZXh0XSkpXG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5hcnJheUJ1ZmZlciA9IGZ1bmN0aW9uKCkge1xuICAgICAgaWYgKHRoaXMuX2JvZHlBcnJheUJ1ZmZlcikge1xuICAgICAgICB2YXIgaXNDb25zdW1lZCA9IGNvbnN1bWVkKHRoaXMpXG4gICAgICAgIGlmIChpc0NvbnN1bWVkKSB7XG4gICAgICAgICAgcmV0dXJuIGlzQ29uc3VtZWRcbiAgICAgICAgfVxuICAgICAgICBpZiAoQXJyYXlCdWZmZXIuaXNWaWV3KHRoaXMuX2JvZHlBcnJheUJ1ZmZlcikpIHtcbiAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFxuICAgICAgICAgICAgdGhpcy5fYm9keUFycmF5QnVmZmVyLmJ1ZmZlci5zbGljZShcbiAgICAgICAgICAgICAgdGhpcy5fYm9keUFycmF5QnVmZmVyLmJ5dGVPZmZzZXQsXG4gICAgICAgICAgICAgIHRoaXMuX2JvZHlBcnJheUJ1ZmZlci5ieXRlT2Zmc2V0ICsgdGhpcy5fYm9keUFycmF5QnVmZmVyLmJ5dGVMZW5ndGhcbiAgICAgICAgICAgIClcbiAgICAgICAgICApXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLl9ib2R5QXJyYXlCdWZmZXIpXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJsb2IoKS50aGVuKHJlYWRCbG9iQXNBcnJheUJ1ZmZlcilcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB0aGlzLnRleHQgPSBmdW5jdGlvbigpIHtcbiAgICB2YXIgcmVqZWN0ZWQgPSBjb25zdW1lZCh0aGlzKVxuICAgIGlmIChyZWplY3RlZCkge1xuICAgICAgcmV0dXJuIHJlamVjdGVkXG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2JvZHlCbG9iKSB7XG4gICAgICByZXR1cm4gcmVhZEJsb2JBc1RleHQodGhpcy5fYm9keUJsb2IpXG4gICAgfSBlbHNlIGlmICh0aGlzLl9ib2R5QXJyYXlCdWZmZXIpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVhZEFycmF5QnVmZmVyQXNUZXh0KHRoaXMuX2JvZHlBcnJheUJ1ZmZlcikpXG4gICAgfSBlbHNlIGlmICh0aGlzLl9ib2R5Rm9ybURhdGEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignY291bGQgbm90IHJlYWQgRm9ybURhdGEgYm9keSBhcyB0ZXh0JylcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLl9ib2R5VGV4dClcbiAgICB9XG4gIH1cblxuICBpZiAoc3VwcG9ydC5mb3JtRGF0YSkge1xuICAgIHRoaXMuZm9ybURhdGEgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLnRleHQoKS50aGVuKGRlY29kZSlcbiAgICB9XG4gIH1cblxuICB0aGlzLmpzb24gPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy50ZXh0KCkudGhlbihKU09OLnBhcnNlKVxuICB9XG5cbiAgcmV0dXJuIHRoaXNcbn1cblxuLy8gSFRUUCBtZXRob2RzIHdob3NlIGNhcGl0YWxpemF0aW9uIHNob3VsZCBiZSBub3JtYWxpemVkXG52YXIgbWV0aG9kcyA9IFsnREVMRVRFJywgJ0dFVCcsICdIRUFEJywgJ09QVElPTlMnLCAnUE9TVCcsICdQVVQnXVxuXG5mdW5jdGlvbiBub3JtYWxpemVNZXRob2QobWV0aG9kKSB7XG4gIHZhciB1cGNhc2VkID0gbWV0aG9kLnRvVXBwZXJDYXNlKClcbiAgcmV0dXJuIG1ldGhvZHMuaW5kZXhPZih1cGNhc2VkKSA+IC0xID8gdXBjYXNlZCA6IG1ldGhvZFxufVxuXG5leHBvcnQgZnVuY3Rpb24gUmVxdWVzdChpbnB1dCwgb3B0aW9ucykge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgUmVxdWVzdCkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdQbGVhc2UgdXNlIHRoZSBcIm5ld1wiIG9wZXJhdG9yLCB0aGlzIERPTSBvYmplY3QgY29uc3RydWN0b3IgY2Fubm90IGJlIGNhbGxlZCBhcyBhIGZ1bmN0aW9uLicpXG4gIH1cblxuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fVxuICB2YXIgYm9keSA9IG9wdGlvbnMuYm9keVxuXG4gIGlmIChpbnB1dCBpbnN0YW5jZW9mIFJlcXVlc3QpIHtcbiAgICBpZiAoaW5wdXQuYm9keVVzZWQpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0FscmVhZHkgcmVhZCcpXG4gICAgfVxuICAgIHRoaXMudXJsID0gaW5wdXQudXJsXG4gICAgdGhpcy5jcmVkZW50aWFscyA9IGlucHV0LmNyZWRlbnRpYWxzXG4gICAgaWYgKCFvcHRpb25zLmhlYWRlcnMpIHtcbiAgICAgIHRoaXMuaGVhZGVycyA9IG5ldyBIZWFkZXJzKGlucHV0LmhlYWRlcnMpXG4gICAgfVxuICAgIHRoaXMubWV0aG9kID0gaW5wdXQubWV0aG9kXG4gICAgdGhpcy5tb2RlID0gaW5wdXQubW9kZVxuICAgIHRoaXMuc2lnbmFsID0gaW5wdXQuc2lnbmFsXG4gICAgaWYgKCFib2R5ICYmIGlucHV0Ll9ib2R5SW5pdCAhPSBudWxsKSB7XG4gICAgICBib2R5ID0gaW5wdXQuX2JvZHlJbml0XG4gICAgICBpbnB1dC5ib2R5VXNlZCA9IHRydWVcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdGhpcy51cmwgPSBTdHJpbmcoaW5wdXQpXG4gIH1cblxuICB0aGlzLmNyZWRlbnRpYWxzID0gb3B0aW9ucy5jcmVkZW50aWFscyB8fCB0aGlzLmNyZWRlbnRpYWxzIHx8ICdzYW1lLW9yaWdpbidcbiAgaWYgKG9wdGlvbnMuaGVhZGVycyB8fCAhdGhpcy5oZWFkZXJzKSB7XG4gICAgdGhpcy5oZWFkZXJzID0gbmV3IEhlYWRlcnMob3B0aW9ucy5oZWFkZXJzKVxuICB9XG4gIHRoaXMubWV0aG9kID0gbm9ybWFsaXplTWV0aG9kKG9wdGlvbnMubWV0aG9kIHx8IHRoaXMubWV0aG9kIHx8ICdHRVQnKVxuICB0aGlzLm1vZGUgPSBvcHRpb25zLm1vZGUgfHwgdGhpcy5tb2RlIHx8IG51bGxcbiAgdGhpcy5zaWduYWwgPSBvcHRpb25zLnNpZ25hbCB8fCB0aGlzLnNpZ25hbFxuICB0aGlzLnJlZmVycmVyID0gbnVsbFxuXG4gIGlmICgodGhpcy5tZXRob2QgPT09ICdHRVQnIHx8IHRoaXMubWV0aG9kID09PSAnSEVBRCcpICYmIGJvZHkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdCb2R5IG5vdCBhbGxvd2VkIGZvciBHRVQgb3IgSEVBRCByZXF1ZXN0cycpXG4gIH1cbiAgdGhpcy5faW5pdEJvZHkoYm9keSlcblxuICBpZiAodGhpcy5tZXRob2QgPT09ICdHRVQnIHx8IHRoaXMubWV0aG9kID09PSAnSEVBRCcpIHtcbiAgICBpZiAob3B0aW9ucy5jYWNoZSA9PT0gJ25vLXN0b3JlJyB8fCBvcHRpb25zLmNhY2hlID09PSAnbm8tY2FjaGUnKSB7XG4gICAgICAvLyBTZWFyY2ggZm9yIGEgJ18nIHBhcmFtZXRlciBpbiB0aGUgcXVlcnkgc3RyaW5nXG4gICAgICB2YXIgcmVQYXJhbVNlYXJjaCA9IC8oWz8mXSlfPVteJl0qL1xuICAgICAgaWYgKHJlUGFyYW1TZWFyY2gudGVzdCh0aGlzLnVybCkpIHtcbiAgICAgICAgLy8gSWYgaXQgYWxyZWFkeSBleGlzdHMgdGhlbiBzZXQgdGhlIHZhbHVlIHdpdGggdGhlIGN1cnJlbnQgdGltZVxuICAgICAgICB0aGlzLnVybCA9IHRoaXMudXJsLnJlcGxhY2UocmVQYXJhbVNlYXJjaCwgJyQxXz0nICsgbmV3IERhdGUoKS5nZXRUaW1lKCkpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBPdGhlcndpc2UgYWRkIGEgbmV3ICdfJyBwYXJhbWV0ZXIgdG8gdGhlIGVuZCB3aXRoIHRoZSBjdXJyZW50IHRpbWVcbiAgICAgICAgdmFyIHJlUXVlcnlTdHJpbmcgPSAvXFw/L1xuICAgICAgICB0aGlzLnVybCArPSAocmVRdWVyeVN0cmluZy50ZXN0KHRoaXMudXJsKSA/ICcmJyA6ICc/JykgKyAnXz0nICsgbmV3IERhdGUoKS5nZXRUaW1lKClcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuUmVxdWVzdC5wcm90b3R5cGUuY2xvbmUgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIG5ldyBSZXF1ZXN0KHRoaXMsIHtib2R5OiB0aGlzLl9ib2R5SW5pdH0pXG59XG5cbmZ1bmN0aW9uIGRlY29kZShib2R5KSB7XG4gIHZhciBmb3JtID0gbmV3IEZvcm1EYXRhKClcbiAgYm9keVxuICAgIC50cmltKClcbiAgICAuc3BsaXQoJyYnKVxuICAgIC5mb3JFYWNoKGZ1bmN0aW9uKGJ5dGVzKSB7XG4gICAgICBpZiAoYnl0ZXMpIHtcbiAgICAgICAgdmFyIHNwbGl0ID0gYnl0ZXMuc3BsaXQoJz0nKVxuICAgICAgICB2YXIgbmFtZSA9IHNwbGl0LnNoaWZ0KCkucmVwbGFjZSgvXFwrL2csICcgJylcbiAgICAgICAgdmFyIHZhbHVlID0gc3BsaXQuam9pbignPScpLnJlcGxhY2UoL1xcKy9nLCAnICcpXG4gICAgICAgIGZvcm0uYXBwZW5kKGRlY29kZVVSSUNvbXBvbmVudChuYW1lKSwgZGVjb2RlVVJJQ29tcG9uZW50KHZhbHVlKSlcbiAgICAgIH1cbiAgICB9KVxuICByZXR1cm4gZm9ybVxufVxuXG5mdW5jdGlvbiBwYXJzZUhlYWRlcnMocmF3SGVhZGVycykge1xuICB2YXIgaGVhZGVycyA9IG5ldyBIZWFkZXJzKClcbiAgLy8gUmVwbGFjZSBpbnN0YW5jZXMgb2YgXFxyXFxuIGFuZCBcXG4gZm9sbG93ZWQgYnkgYXQgbGVhc3Qgb25lIHNwYWNlIG9yIGhvcml6b250YWwgdGFiIHdpdGggYSBzcGFjZVxuICAvLyBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMCNzZWN0aW9uLTMuMlxuICB2YXIgcHJlUHJvY2Vzc2VkSGVhZGVycyA9IHJhd0hlYWRlcnMucmVwbGFjZSgvXFxyP1xcbltcXHQgXSsvZywgJyAnKVxuICAvLyBBdm9pZGluZyBzcGxpdCB2aWEgcmVnZXggdG8gd29yayBhcm91bmQgYSBjb21tb24gSUUxMSBidWcgd2l0aCB0aGUgY29yZS1qcyAzLjYuMCByZWdleCBwb2x5ZmlsbFxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vZ2l0aHViL2ZldGNoL2lzc3Vlcy83NDhcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzc1MVxuICBwcmVQcm9jZXNzZWRIZWFkZXJzXG4gICAgLnNwbGl0KCdcXHInKVxuICAgIC5tYXAoZnVuY3Rpb24oaGVhZGVyKSB7XG4gICAgICByZXR1cm4gaGVhZGVyLmluZGV4T2YoJ1xcbicpID09PSAwID8gaGVhZGVyLnN1YnN0cigxLCBoZWFkZXIubGVuZ3RoKSA6IGhlYWRlclxuICAgIH0pXG4gICAgLmZvckVhY2goZnVuY3Rpb24obGluZSkge1xuICAgICAgdmFyIHBhcnRzID0gbGluZS5zcGxpdCgnOicpXG4gICAgICB2YXIga2V5ID0gcGFydHMuc2hpZnQoKS50cmltKClcbiAgICAgIGlmIChrZXkpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gcGFydHMuam9pbignOicpLnRyaW0oKVxuICAgICAgICBoZWFkZXJzLmFwcGVuZChrZXksIHZhbHVlKVxuICAgICAgfVxuICAgIH0pXG4gIHJldHVybiBoZWFkZXJzXG59XG5cbkJvZHkuY2FsbChSZXF1ZXN0LnByb3RvdHlwZSlcblxuZXhwb3J0IGZ1bmN0aW9uIFJlc3BvbnNlKGJvZHlJbml0LCBvcHRpb25zKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBSZXNwb25zZSkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdQbGVhc2UgdXNlIHRoZSBcIm5ld1wiIG9wZXJhdG9yLCB0aGlzIERPTSBvYmplY3QgY29uc3RydWN0b3IgY2Fubm90IGJlIGNhbGxlZCBhcyBhIGZ1bmN0aW9uLicpXG4gIH1cbiAgaWYgKCFvcHRpb25zKSB7XG4gICAgb3B0aW9ucyA9IHt9XG4gIH1cblxuICB0aGlzLnR5cGUgPSAnZGVmYXVsdCdcbiAgdGhpcy5zdGF0dXMgPSBvcHRpb25zLnN0YXR1cyA9PT0gdW5kZWZpbmVkID8gMjAwIDogb3B0aW9ucy5zdGF0dXNcbiAgdGhpcy5vayA9IHRoaXMuc3RhdHVzID49IDIwMCAmJiB0aGlzLnN0YXR1cyA8IDMwMFxuICB0aGlzLnN0YXR1c1RleHQgPSBvcHRpb25zLnN0YXR1c1RleHQgPT09IHVuZGVmaW5lZCA/ICcnIDogJycgKyBvcHRpb25zLnN0YXR1c1RleHRcbiAgdGhpcy5oZWFkZXJzID0gbmV3IEhlYWRlcnMob3B0aW9ucy5oZWFkZXJzKVxuICB0aGlzLnVybCA9IG9wdGlvbnMudXJsIHx8ICcnXG4gIHRoaXMuX2luaXRCb2R5KGJvZHlJbml0KVxufVxuXG5Cb2R5LmNhbGwoUmVzcG9uc2UucHJvdG90eXBlKVxuXG5SZXNwb25zZS5wcm90b3R5cGUuY2xvbmUgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIG5ldyBSZXNwb25zZSh0aGlzLl9ib2R5SW5pdCwge1xuICAgIHN0YXR1czogdGhpcy5zdGF0dXMsXG4gICAgc3RhdHVzVGV4dDogdGhpcy5zdGF0dXNUZXh0LFxuICAgIGhlYWRlcnM6IG5ldyBIZWFkZXJzKHRoaXMuaGVhZGVycyksXG4gICAgdXJsOiB0aGlzLnVybFxuICB9KVxufVxuXG5SZXNwb25zZS5lcnJvciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgcmVzcG9uc2UgPSBuZXcgUmVzcG9uc2UobnVsbCwge3N0YXR1czogMCwgc3RhdHVzVGV4dDogJyd9KVxuICByZXNwb25zZS50eXBlID0gJ2Vycm9yJ1xuICByZXR1cm4gcmVzcG9uc2Vcbn1cblxudmFyIHJlZGlyZWN0U3RhdHVzZXMgPSBbMzAxLCAzMDIsIDMwMywgMzA3LCAzMDhdXG5cblJlc3BvbnNlLnJlZGlyZWN0ID0gZnVuY3Rpb24odXJsLCBzdGF0dXMpIHtcbiAgaWYgKHJlZGlyZWN0U3RhdHVzZXMuaW5kZXhPZihzdGF0dXMpID09PSAtMSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbnZhbGlkIHN0YXR1cyBjb2RlJylcbiAgfVxuXG4gIHJldHVybiBuZXcgUmVzcG9uc2UobnVsbCwge3N0YXR1czogc3RhdHVzLCBoZWFkZXJzOiB7bG9jYXRpb246IHVybH19KVxufVxuXG5leHBvcnQgdmFyIERPTUV4Y2VwdGlvbiA9IGdsb2JhbC5ET01FeGNlcHRpb25cbnRyeSB7XG4gIG5ldyBET01FeGNlcHRpb24oKVxufSBjYXRjaCAoZXJyKSB7XG4gIERPTUV4Y2VwdGlvbiA9IGZ1bmN0aW9uKG1lc3NhZ2UsIG5hbWUpIHtcbiAgICB0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlXG4gICAgdGhpcy5uYW1lID0gbmFtZVxuICAgIHZhciBlcnJvciA9IEVycm9yKG1lc3NhZ2UpXG4gICAgdGhpcy5zdGFjayA9IGVycm9yLnN0YWNrXG4gIH1cbiAgRE9NRXhjZXB0aW9uLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoRXJyb3IucHJvdG90eXBlKVxuICBET01FeGNlcHRpb24ucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gRE9NRXhjZXB0aW9uXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmZXRjaChpbnB1dCwgaW5pdCkge1xuICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgdmFyIHJlcXVlc3QgPSBuZXcgUmVxdWVzdChpbnB1dCwgaW5pdClcblxuICAgIGlmIChyZXF1ZXN0LnNpZ25hbCAmJiByZXF1ZXN0LnNpZ25hbC5hYm9ydGVkKSB7XG4gICAgICByZXR1cm4gcmVqZWN0KG5ldyBET01FeGNlcHRpb24oJ0Fib3J0ZWQnLCAnQWJvcnRFcnJvcicpKVxuICAgIH1cblxuICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKVxuXG4gICAgZnVuY3Rpb24gYWJvcnRYaHIoKSB7XG4gICAgICB4aHIuYWJvcnQoKVxuICAgIH1cblxuICAgIHhoci5vbmxvYWQgPSBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBvcHRpb25zID0ge1xuICAgICAgICBzdGF0dXM6IHhoci5zdGF0dXMsXG4gICAgICAgIHN0YXR1c1RleHQ6IHhoci5zdGF0dXNUZXh0LFxuICAgICAgICBoZWFkZXJzOiBwYXJzZUhlYWRlcnMoeGhyLmdldEFsbFJlc3BvbnNlSGVhZGVycygpIHx8ICcnKVxuICAgICAgfVxuICAgICAgb3B0aW9ucy51cmwgPSAncmVzcG9uc2VVUkwnIGluIHhociA/IHhoci5yZXNwb25zZVVSTCA6IG9wdGlvbnMuaGVhZGVycy5nZXQoJ1gtUmVxdWVzdC1VUkwnKVxuICAgICAgdmFyIGJvZHkgPSAncmVzcG9uc2UnIGluIHhociA/IHhoci5yZXNwb25zZSA6IHhoci5yZXNwb25zZVRleHRcbiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgIHJlc29sdmUobmV3IFJlc3BvbnNlKGJvZHksIG9wdGlvbnMpKVxuICAgICAgfSwgMClcbiAgICB9XG5cbiAgICB4aHIub25lcnJvciA9IGZ1bmN0aW9uKCkge1xuICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgICAgcmVqZWN0KG5ldyBUeXBlRXJyb3IoJ05ldHdvcmsgcmVxdWVzdCBmYWlsZWQnKSlcbiAgICAgIH0sIDApXG4gICAgfVxuXG4gICAgeGhyLm9udGltZW91dCA9IGZ1bmN0aW9uKCkge1xuICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgICAgcmVqZWN0KG5ldyBUeXBlRXJyb3IoJ05ldHdvcmsgcmVxdWVzdCBmYWlsZWQnKSlcbiAgICAgIH0sIDApXG4gICAgfVxuXG4gICAgeGhyLm9uYWJvcnQgPSBmdW5jdGlvbigpIHtcbiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgIHJlamVjdChuZXcgRE9NRXhjZXB0aW9uKCdBYm9ydGVkJywgJ0Fib3J0RXJyb3InKSlcbiAgICAgIH0sIDApXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZml4VXJsKHVybCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIHVybCA9PT0gJycgJiYgZ2xvYmFsLmxvY2F0aW9uLmhyZWYgPyBnbG9iYWwubG9jYXRpb24uaHJlZiA6IHVybFxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gdXJsXG4gICAgICB9XG4gICAgfVxuXG4gICAgeGhyLm9wZW4ocmVxdWVzdC5tZXRob2QsIGZpeFVybChyZXF1ZXN0LnVybCksIHRydWUpXG5cbiAgICBpZiAocmVxdWVzdC5jcmVkZW50aWFscyA9PT0gJ2luY2x1ZGUnKSB7XG4gICAgICB4aHIud2l0aENyZWRlbnRpYWxzID0gdHJ1ZVxuICAgIH0gZWxzZSBpZiAocmVxdWVzdC5jcmVkZW50aWFscyA9PT0gJ29taXQnKSB7XG4gICAgICB4aHIud2l0aENyZWRlbnRpYWxzID0gZmFsc2VcbiAgICB9XG5cbiAgICBpZiAoJ3Jlc3BvbnNlVHlwZScgaW4geGhyKSB7XG4gICAgICBpZiAoc3VwcG9ydC5ibG9iKSB7XG4gICAgICAgIHhoci5yZXNwb25zZVR5cGUgPSAnYmxvYidcbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIHN1cHBvcnQuYXJyYXlCdWZmZXIgJiZcbiAgICAgICAgcmVxdWVzdC5oZWFkZXJzLmdldCgnQ29udGVudC1UeXBlJykgJiZcbiAgICAgICAgcmVxdWVzdC5oZWFkZXJzLmdldCgnQ29udGVudC1UeXBlJykuaW5kZXhPZignYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJykgIT09IC0xXG4gICAgICApIHtcbiAgICAgICAgeGhyLnJlc3BvbnNlVHlwZSA9ICdhcnJheWJ1ZmZlcidcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoaW5pdCAmJiB0eXBlb2YgaW5pdC5oZWFkZXJzID09PSAnb2JqZWN0JyAmJiAhKGluaXQuaGVhZGVycyBpbnN0YW5jZW9mIEhlYWRlcnMpKSB7XG4gICAgICBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhpbml0LmhlYWRlcnMpLmZvckVhY2goZnVuY3Rpb24obmFtZSkge1xuICAgICAgICB4aHIuc2V0UmVxdWVzdEhlYWRlcihuYW1lLCBub3JtYWxpemVWYWx1ZShpbml0LmhlYWRlcnNbbmFtZV0pKVxuICAgICAgfSlcbiAgICB9IGVsc2Uge1xuICAgICAgcmVxdWVzdC5oZWFkZXJzLmZvckVhY2goZnVuY3Rpb24odmFsdWUsIG5hbWUpIHtcbiAgICAgICAgeGhyLnNldFJlcXVlc3RIZWFkZXIobmFtZSwgdmFsdWUpXG4gICAgICB9KVxuICAgIH1cblxuICAgIGlmIChyZXF1ZXN0LnNpZ25hbCkge1xuICAgICAgcmVxdWVzdC5zaWduYWwuYWRkRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBhYm9ydFhocilcblxuICAgICAgeGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAvLyBET05FIChzdWNjZXNzIG9yIGZhaWx1cmUpXG4gICAgICAgIGlmICh4aHIucmVhZHlTdGF0ZSA9PT0gNCkge1xuICAgICAgICAgIHJlcXVlc3Quc2lnbmFsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Fib3J0JywgYWJvcnRYaHIpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICB4aHIuc2VuZCh0eXBlb2YgcmVxdWVzdC5fYm9keUluaXQgPT09ICd1bmRlZmluZWQnID8gbnVsbCA6IHJlcXVlc3QuX2JvZHlJbml0KVxuICB9KVxufVxuXG5mZXRjaC5wb2x5ZmlsbCA9IHRydWVcblxuaWYgKCFnbG9iYWwuZmV0Y2gpIHtcbiAgZ2xvYmFsLmZldGNoID0gZmV0Y2hcbiAgZ2xvYmFsLkhlYWRlcnMgPSBIZWFkZXJzXG4gIGdsb2JhbC5SZXF1ZXN0ID0gUmVxdWVzdFxuICBnbG9iYWwuUmVzcG9uc2UgPSBSZXNwb25zZVxufVxuIiwiLyogdHNsaW50OmRpc2FibGU6bm8tbnVsbC1rZXl3b3JkIG5vLWFueSBuby11bnNhZmUtYW55ICovXG5pbXBvcnQgeyBmZXRjaCB9IGZyb20gXCJ3aGF0d2ctZmV0Y2hcIjtcblxuaW1wb3J0IHsgRXJyb3JGaXJzdENhbGxiYWNrLCByZWplY3QgfSBmcm9tIFwiLi4vLi4vLi4vLi4vQ29tbW9uL1R5cGluZ1V0aWxzXCI7XG5pbXBvcnQgdHlwZSB7IElGb3JtIH0gZnJvbSBcIi4uLy4uL0VuZ2luZS9Gb3JtL0lGb3JtXCI7XG5pbXBvcnQgeyBMb2FkSW50b0RvY3VtZW50IH0gZnJvbSBcIi4uLy4uL0hlbHBlcnMvTG9hZEludG9Eb2N1bWVudFwiO1xuaW1wb3J0IHR5cGUgeyBJUHVibGljRm9ybSB9IGZyb20gXCIuLi9QdWJsaWNGb3JtL0lQdWJsaWNGb3JtXCI7XG5pbXBvcnQgdHlwZSB7IElLZVdlYlRlbXBsYXRlc0FwaUNsaWVudCB9IGZyb20gXCIuLi9UeXBlcy9JS2VXZWJUZW1wbGF0ZXNBcGlDbGllbnRcIjtcbmltcG9ydCB0eXBlIHsgQ2xpZW50RHJhZnRJbmZvUmVzcG9uc2UgfSBmcm9tIFwiLi4vLi4vLi4vLi4vQ29tbW9uL0NhbmR5QXBpQ2xpZW50L0NsaWVudERyYWZ0SW5mby9DbGllbnREcmFmdEluZm9SZXNwb25zZVwiO1xuaW1wb3J0IHsgZ2V0Q2xpZW50RHJhZnRJbmZvVXJsIH0gZnJvbSBcIi4uLy4uLy4uLy4uL0NvbW1vbi9DYW5keUFwaUNsaWVudC9DbGllbnREcmFmdEluZm8vR2V0Q2xpZW50RHJhZnRJbmZvVXJsXCI7XG5pbXBvcnQgeyBBVU9PcHRpb25zIH0gZnJvbSBcIi4uL1R5cGVzL0FVT09wdGlvbnNcIjtcbmltcG9ydCB0eXBlIHsgTGF5b3V0RXZlbnRzU3RhdGljIH0gZnJvbSBcIi4uLy4uL0NvbnRyb2xzL0ludGVybmFscy9MYXlvdXRFdmVudHMvTGF5b3V0RXZlbnRzXCI7XG5cbmltcG9ydCB7IGNsaWVudFNldHRpbmdzIH0gZnJvbSBcIi4vQ2xpZW50U2V0dGluZ3NcIjtcbmltcG9ydCB7IGNyZWF0ZUxlZ2FjeVB1YmxpY0Zvcm0gfSBmcm9tIFwiLi9MZWdhY3lQdWJsaWNGb3JtL0NyZWF0ZUxlZ2FjeVB1YmxpY0Zvcm1cIjtcblxudHlwZSBGb3JtQ29udGFpbmVyID0gc3RyaW5nIHwgSFRNTEVsZW1lbnQ7XG5cbnR5cGUgRW5naW5lRW50cnlQb2ludCA9ICgpID0+IHZvaWQ7XG5cbmludGVyZmFjZSBSZW5kZXJGb3JtU2V0dGluZ3Mge1xuICAgIGdmdjogc3RyaW5nO1xuICAgIGVuZ2luZVZlcnNpb24/OiB1bmRlZmluZWQgfCBudWxsIHwgc3RyaW5nO1xuICAgIHJlc291cmNlc1ZlcnNpb246IHN0cmluZztcbiAgICB0aGVtZT86IHVuZGVmaW5lZCB8IG51bGwgfCBzdHJpbmc7XG4gICAgcmVzb3VyY2Vab25lPzogc3RyaW5nO1xuICAgIHJlbmRlckZvcm06IHVuZGVmaW5lZCB8IEVuZ2luZUVudHJ5UG9pbnQ7XG4gICAgdGVtcGxhdGVzQXBpPzogSUtlV2ViVGVtcGxhdGVzQXBpQ2xpZW50O1xufVxuXG50eXBlIFN0YXJ0Rm9ybUZ1bmMgPSAocGFnZUNvbnRlbnQ6IEZvcm1Db250YWluZXIsIGV4dGVuZGVkU2V0dGluZ3M6IFJlbmRlckZvcm1TZXR0aW5ncykgPT4gUHJvbWlzZTxJRm9ybT47XG5cbmludGVyZmFjZSBDYW5keUdsb2JhbEluamVjdGVkVmFyIHtcbiAgICBzdGFydDogKHBhZ2VDb250ZW50OiBGb3JtQ29udGFpbmVyLCBvcHRpb25zOiBTdGFydEZvcm1PcHRpb25zLCBjYWxsYmFjaz86IEVycm9yRmlyc3RDYWxsYmFjazxJUHVibGljRm9ybT4pID0+IHZvaWQ7XG4gICAga2Vmb3Jtc1VybD86IHN0cmluZztcbiAgICBwYXJ0aWFsUmVuZGVyaW5nRm9ySUU4OiBib29sZWFuO1xuICAgIGVudHJ5UG9pbnQ6IHsgW2tleTogc3RyaW5nXTogU3RhcnRGb3JtRnVuYyB9O1xuICAgIGxvYWRFcnJvcj86IHVua25vd247XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgICBpbnRlcmZhY2UgV2luZG93IHtcbiAgICAgICAgQ0Y6IENhbmR5R2xvYmFsSW5qZWN0ZWRWYXI7XG4gICAgfVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1uYW1lc3BhY2VcbiAgICBuYW1lc3BhY2UgTm9kZUpTIHtcbiAgICAgICAgaW50ZXJmYWNlIEdsb2JhbCB7XG4gICAgICAgICAgICBDRjogQ2FuZHlHbG9iYWxJbmplY3RlZFZhcjtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZGVjbGFyZSBjb25zdCBnbG9iYWw6IFdpbmRvdztcblxuZnVuY3Rpb24gZGVmYXVsdENhbGxiYWNrKCk6IHZvaWQge1xuICAgIC8qIGVtcHR5ICovXG59XG5cbmZ1bmN0aW9uIHBhcnNlQm9vbCh2YWx1ZTogdW5rbm93bik6IGJvb2xlYW4ge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgaWYgKHZhbHVlID09PSBcImZhbHNlXCIpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodmFsdWUgPT09IFwidHJ1ZVwiKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBCb29sZWFuKHZhbHVlKTtcbn1cblxuZnVuY3Rpb24gdXJsKHJlbGF0aXZlVXJsOiBzdHJpbmcgPSBcIlwiKTogc3RyaW5nIHtcbiAgICBjb25zdCBiYXNlVXJsID0gZ2xvYmFsLkNGLmtlZm9ybXNVcmwgfHwgXCJcIjtcblxuICAgIHJldHVybiBgJHtiYXNlVXJsfS8ke3JlbGF0aXZlVXJsfWAucmVwbGFjZSgvKFteOl0pXFwvezIsfS9nLCBcIiQxL1wiKTtcbn1cblxuZnVuY3Rpb24gYnVpbGRVcmwocGF0aDogc3RyaW5nLCBwYXJhbXM6IHsgW3BhcmFtTmFtZTogc3RyaW5nXTogdW5kZWZpbmVkIHwgc3RyaW5nIH0pOiBzdHJpbmcge1xuICAgIGlmIChwYXJhbXMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gcGF0aDtcbiAgICB9XG4gICAgY29uc3QgcXVlcnlQYXJ0czogc3RyaW5nW10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IHBhcmFtTmFtZSBvZiBPYmplY3Qua2V5cyhwYXJhbXMpKSB7XG4gICAgICAgIGNvbnN0IHBhcmFtVmFsdWUgPSBwYXJhbXNbcGFyYW1OYW1lXTtcbiAgICAgICAgaWYgKHBhcmFtVmFsdWUgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBxdWVyeVBhcnRzLnB1c2goYCR7cGFyYW1OYW1lfT0ke2VuY29kZVVSSUNvbXBvbmVudChwYXJhbVZhbHVlKX1gKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAocXVlcnlQYXJ0cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHBhdGg7XG4gICAgfVxuICAgIHJldHVybiBwYXRoICsgXCI/XCIgKyBxdWVyeVBhcnRzLmpvaW4oXCImXCIpO1xufVxuXG5mdW5jdGlvbiBpc0FsbG93ZWQoZG9tYWluczogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIG5ldyBSZWdFeHAoYF4oPzoke2RvbWFpbnMucmVwbGFjZSgvXFwuL2csIFwiXFxcXC5cIikucmVwbGFjZSgvXFwqL2csIFwiW2EtejAtOS0uXStcIil9KSRgKS50ZXN0KFxuICAgICAgICBnbG9iYWwubG9jYXRpb24uaG9zdFxuICAgICk7XG59XG5cbmZ1bmN0aW9uIGdldFBhcmFtZXRlckJ5TmFtZShuYW1lOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiAoXG4gICAgICAgIChnbG9iYWwubG9jYXRpb24uc2VhcmNoXG4gICAgICAgICAgICAudHJpbSgpXG4gICAgICAgICAgICAucmVwbGFjZSgvXihcXD98I3wmKS8sIFwiXCIpXG4gICAgICAgICAgICAuc3BsaXQoXCImXCIpXG4gICAgICAgICAgICAubWFwKHBhcmFtID0+IHBhcmFtLnJlcGxhY2UoL1xcKy9nLCBcIiBcIikuc3BsaXQoXCI9XCIpLm1hcChkZWNvZGVVUklDb21wb25lbnQpKVxuICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnRyaXBsZS1lcXVhbHNcbiAgICAgICAgICAgIC5maW5kKChba2V5XSkgPT4ga2V5ID09IG5hbWUpIHx8IFtdKVsxXVxuICAgICk7XG59XG5cbnR5cGUgVGFzayA9IChjYWxsYmFjazogKGVycm9yPzogRXJyb3IpID0+IHZvaWQpID0+IHZvaWQ7XG5cbmZ1bmN0aW9uIHJ1blBhcmFsbGVsKHRhc2tzOiBUYXNrW10sIGNhbGxiYWNrOiAoZXJyb3I/OiBFcnJvcikgPT4gdm9pZCk6IHZvaWQge1xuICAgIGxldCBjb21wbGV0ZWQgPSAwO1xuXG4gICAgdGFza3MuZm9yRWFjaCh0YXNrID0+IHtcbiAgICAgICAgdGFzayhlcnJvciA9PiB7XG4gICAgICAgICAgICBpZiAoY29tcGxldGVkID09PSB0YXNrcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICBjb21wbGV0ZWQgPSB0YXNrcy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgY2FsbGJhY2soZXJyb3IpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29tcGxldGVkICs9IDE7XG4gICAgICAgICAgICBpZiAoY29tcGxldGVkID09PSB0YXNrcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBjYWxsYmFjaygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9KTtcbn1cblxuaW50ZXJmYWNlIFN0YXJ0Rm9ybVNldHRpbmcge1xuICAgIGdmdjogc3RyaW5nO1xuICAgIGVuZ2luZVZlcnNpb24/OiB1bmRlZmluZWQgfCBudWxsIHwgc3RyaW5nO1xuICAgIHJlc291cmNlWm9uZT86IHN0cmluZztcbiAgICByZXNvdXJjZXNWZXJzaW9uOiBzdHJpbmc7XG4gICAgdGhlbWU/OiB1bmRlZmluZWQgfCBudWxsIHwgc3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNFbmdpbmVWZXJzaW9uR3JlYXRlclRoYW5PckVxdWFsKGxlZnQ6IHN0cmluZywgcmlnaHQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGxlZnROdW1iZXJzID0gbGVmdFxuICAgICAgICAgICAgLnNwbGl0KFwiLlwiKVxuICAgICAgICAgICAgLnNsaWNlKDAsIDMpXG4gICAgICAgICAgICAubWFwKHggPT4gcGFyc2VJbnQoeCwgMTApKTtcbiAgICAgICAgY29uc3QgcmlnaHROdW1iZXJzID0gcmlnaHRcbiAgICAgICAgICAgIC5zcGxpdChcIi5cIilcbiAgICAgICAgICAgIC5zbGljZSgwLCAzKVxuICAgICAgICAgICAgLm1hcCh4ID0+IHBhcnNlSW50KHgsIDEwKSk7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAobGVmdE51bWJlcnNbMF0gPz8gMCkgPiAocmlnaHROdW1iZXJzWzBdID8/IDApIHx8XG4gICAgICAgICAgICAoKGxlZnROdW1iZXJzWzBdID8/IDApID09PSAocmlnaHROdW1iZXJzWzBdID8/IDApICYmXG4gICAgICAgICAgICAgICAgKChsZWZ0TnVtYmVyc1sxXSA/PyAwKSA+IChyaWdodE51bWJlcnNbMV0gPz8gMCkgfHxcbiAgICAgICAgICAgICAgICAgICAgKChsZWZ0TnVtYmVyc1sxXSA/PyAwKSA9PT0gKHJpZ2h0TnVtYmVyc1sxXSA/PyAwKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgKGxlZnROdW1iZXJzWzJdID8/IDApID49IChyaWdodE51bWJlcnNbMl0gPz8gMCkpKSlcbiAgICAgICAgKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gbG9hZEZvcm0oc2V0dGluZ3M6IFN0YXJ0Rm9ybVNldHRpbmcsIGNhbGxiYWNrOiAoZXJyb3I/OiBudWxsIHwgdW5kZWZpbmVkIHwgRXJyb3IpID0+IHZvaWQpOiB2b2lkIHtcbiAgICBjb25zdCB7IGdmdiwgZW5naW5lVmVyc2lvbiwgcmVzb3VyY2VzVmVyc2lvbiB9ID0gc2V0dGluZ3M7XG5cbiAgICBpZiAoZ2xvYmFsLkNGLmVudHJ5UG9pbnRbZ2Z2XSkge1xuICAgICAgICBjYWxsYmFjaygpO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGlzTmVlZEVuZ2luZSA9IGVuZ2luZVZlcnNpb24gJiYgIWdsb2JhbFtlbmdpbmVWZXJzaW9uXTtcbiAgICBjb25zdCBub1N0eWxlc0ZvckdmdiA9IGZhbHNlOyAvLyBlbmdpbmVWZXJzaW9uICE9IHVuZGVmaW5lZCAmJiAoaXNFbmdpbmVWZXJzaW9uR3JlYXRlclRoYW5PckVxdWFsKGVuZ2luZVZlcnNpb24sIFwiNC4yMTQuMFwiKSB8fCBlbmdpbmVWZXJzaW9uID09PSBcImxvY2FsXCIpO1xuICAgIGNvbnN0IG5lZWRMb2FkU3R5bGVzRm9yR2Z2ID0gIW5vU3R5bGVzRm9yR2Z2O1xuICAgIGNvbnN0IG1pbiA9IGdldFBhcmFtZXRlckJ5TmFtZShcImRlYnVnXCIpID09PSBcInRydWVcIiA/IFwiXCIgOiBcIi5taW5cIjtcbiAgICBjb25zdCB0YXNrczogVGFza1tdID0gW107XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7IHY6IHJlc291cmNlc1ZlcnNpb24sIHJlc291cmNlWm9uZTogc2V0dGluZ3MucmVzb3VyY2Vab25lIH07XG4gICAgaWYgKG5lZWRMb2FkU3R5bGVzRm9yR2Z2KSB7XG4gICAgICAgIHRhc2tzLnB1c2goY2IgPT5cbiAgICAgICAgICAgIExvYWRJbnRvRG9jdW1lbnQuc3R5bGVTaGVldCh1cmwoYnVpbGRVcmwoYHN0YXRpYy9wdWJsaWMvc3R5bGVzLyR7Z2Z2fSR7bWlufS5jc3NgLCBwYXJhbXMpKSwgdHJ1ZSwgY2IpXG4gICAgICAgICk7XG4gICAgfVxuICAgIHRhc2tzLnB1c2goY2IgPT4gTG9hZEludG9Eb2N1bWVudC5zY3JpcHQodXJsKGJ1aWxkVXJsKGBzdGF0aWMvcHVibGljL3NjcmlwdHMvJHtnZnZ9JHttaW59LmpzYCwgcGFyYW1zKSksIGNiKSk7XG5cbiAgICBpZiAoaXNOZWVkRW5naW5lKSB7XG4gICAgICAgIHRhc2tzLnB1c2goXG4gICAgICAgICAgICBjYiA9PlxuICAgICAgICAgICAgICAgIExvYWRJbnRvRG9jdW1lbnQuc3R5bGVTaGVldChcbiAgICAgICAgICAgICAgICAgICAgdXJsKGJ1aWxkVXJsKGBzdGF0aWMvcHVibGljL3N0eWxlcy9jYW5keV8ke2VuZ2luZVZlcnNpb259JHttaW59LmNzc2AsIHBhcmFtcykpLFxuICAgICAgICAgICAgICAgICAgICBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgY2JcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgY2IgPT5cbiAgICAgICAgICAgICAgICBMb2FkSW50b0RvY3VtZW50LnNjcmlwdChcbiAgICAgICAgICAgICAgICAgICAgdXJsKGJ1aWxkVXJsKGBzdGF0aWMvcHVibGljL3NjcmlwdHMvY2FuZHlfJHtlbmdpbmVWZXJzaW9ufSR7bWlufS5qc2AsIHBhcmFtcykpLFxuICAgICAgICAgICAgICAgICAgICBjYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBydW5QYXJhbGxlbCh0YXNrcywgY2FsbGJhY2spO1xufVxuXG5mdW5jdGlvbiByZW5kZXJGb3JtKFxuICAgIHBhZ2VDb250ZW50OiBGb3JtQ29udGFpbmVyLFxuICAgIGV4dGVuZGVkU2V0dGluZ3M6IFJlbmRlckZvcm1TZXR0aW5ncyxcbiAgICBjYWxsYmFjazogRXJyb3JGaXJzdENhbGxiYWNrPElQdWJsaWNGb3JtPlxuKTogdm9pZCB7XG4gICAgY29uc3QgZm9ybUVudHJ5UG9pbnQgPVxuICAgICAgICBnbG9iYWwuQ0YuZW50cnlQb2ludFtleHRlbmRlZFNldHRpbmdzLmdmdl0gPz8gcmVqZWN0KGBGb3JtIGVudHJ5IHBvaW50ICR7ZXh0ZW5kZWRTZXR0aW5ncy5nZnZ9IG5vdCBmb3VuZC5gKTtcbiAgICBmb3JtRW50cnlQb2ludChwYWdlQ29udGVudCwgZXh0ZW5kZWRTZXR0aW5ncylcbiAgICAgICAgLnRoZW4oZm9ybSA9PiB7XG4gICAgICAgICAgICBjb25zdCBwdWJsaWNGb3JtID0gZm9ybS5wdWJsaWNGb3JtIHx8IGNyZWF0ZUxlZ2FjeVB1YmxpY0Zvcm0oZm9ybSk7XG5cbiAgICAgICAgICAgIGNhbGxiYWNrKG51bGwsIHB1YmxpY0Zvcm0pO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goY2FsbGJhY2spO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN0YXJ0Rm9ybU9wdGlvbnMgZXh0ZW5kcyBQYXJ0aWFsPEFVT09wdGlvbnM+IHtcbiAgICBuczogc3RyaW5nO1xuICAgIGRyYWZ0SWQ6IHN0cmluZztcbiAgICBnZnY/OiBzdHJpbmc7XG4gICAgcmVzb3VyY2Vab25lPzogc3RyaW5nO1xuICAgIHRlbXBsYXRlc0FwaT86IElLZVdlYlRlbXBsYXRlc0FwaUNsaWVudDtcbiAgICBmZWVkYmFja0VuYWJsZWQ/OiBib29sZWFuO1xuICAgIGlzRGlzYWJsZWRDbG9zZUJ1dHRvbj86IGJvb2xlYW47XG4gICAgaXNEaXNhYmxlZENsb3NlQW5kU2F2ZUJ1dHRvbj86IGJvb2xlYW47XG4gICAgaXNEaXNhYmxlZENsZWFuRm9ybT86IGJvb2xlYW47XG4gICAgdGhlbWU/OiB1bmRlZmluZWQgfCBudWxsIHwgc3RyaW5nO1xuICAgIGF1dGhlbnRpY2F0aW9uPzogXCJicm93c2VyLWNyZWRlbnRpYWxzLWluY2x1ZGVcIiB8IHsgYXV0aFNpZDogc3RyaW5nIH07XG4gICAgZmV0Y2g/OiB0eXBlb2YgZmV0Y2g7XG4gICAgbW9kZWw/OiB7IFtwYXRoOiBzdHJpbmddOiB1bmtub3duIH07XG4gICAgZXZlbnRFbWl0dGVyPzogTGF5b3V0RXZlbnRzU3RhdGljO1xuICAgIGVtcGxveWVySWQ/OiBzdHJpbmc7XG59XG5cbmZ1bmN0aW9uIGdldEVuZ2luZUVudHJ5UG9pbnQoZW5naW5lVmVyc2lvbjogdW5kZWZpbmVkIHwgbnVsbCB8IHN0cmluZyk6IHVuZGVmaW5lZCB8IEVuZ2luZUVudHJ5UG9pbnQge1xuICAgIGlmIChlbmdpbmVWZXJzaW9uID09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1yZXR1cm5cbiAgICByZXR1cm4gZ2xvYmFsW2VuZ2luZVZlcnNpb25dICYmIGdsb2JhbFtlbmdpbmVWZXJzaW9uXS5kZWZhdWx0O1xufVxuXG5mdW5jdGlvbiBzdGFydChcbiAgICBwYWdlQ29udGVudDogRm9ybUNvbnRhaW5lcixcbiAgICBvcHRpb25zOiBTdGFydEZvcm1PcHRpb25zLFxuICAgIGNhbGxiYWNrOiBFcnJvckZpcnN0Q2FsbGJhY2s8SVB1YmxpY0Zvcm0+ID0gZGVmYXVsdENhbGxiYWNrXG4pOiB2b2lkIHtcbiAgICBsZXQgZXJyb3IgPSBudWxsO1xuICAgIGNvbnN0IHsgbnMsIGRyYWZ0SWQgfSA9IG9wdGlvbnM7XG5cbiAgICBpZiAoIWlzQWxsb3dlZChjbGllbnRTZXR0aW5ncy5rb250dXJEb21haW5zKSkge1xuICAgICAgICBlcnJvciA9IG5ldyBFcnJvcihcImRvbWFpbi51bnRydXN0ZWRcIik7XG4gICAgfSBlbHNlIGlmICghY2xpZW50U2V0dGluZ3MuYXV0aG9yaXplZCkge1xuICAgICAgICBlcnJvciA9IG5ldyBFcnJvcihcInVzZXIudW5hdXRoZW50aWNhdGVkXCIpO1xuICAgIH0gZWxzZSBpZiAoIWRyYWZ0SWQpIHtcbiAgICAgICAgZXJyb3IgPSBuZXcgRXJyb3IoXCJvcHRpb25zLmRyYWZ0SWQgaXMgcmVxdWlyZWRcIik7XG4gICAgfSBlbHNlIGlmICghbnMpIHtcbiAgICAgICAgZXJyb3IgPSBuZXcgRXJyb3IoXCJvcHRpb25zLm5zIGlzIHJlcXVpcmVkXCIpO1xuICAgIH1cblxuICAgIGlmIChlcnJvcikge1xuICAgICAgICBjYWxsYmFjayhlcnJvcik7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCByZXNvdXJjZVpvbmUgPSBvcHRpb25zLnJlc291cmNlWm9uZSA/PyBnZXRQYXJhbWV0ZXJCeU5hbWUoXCJyZXNvdXJjZVpvbmVcIik7XG4gICAgY29uc3QgY2xpZW50RHJhZnRVcmwgPSBidWlsZFVybCh1cmwoZ2V0Q2xpZW50RHJhZnRJbmZvVXJsKHsgbnM6IG5zLCBkcmFmdElkOiBkcmFmdElkIH0pKSwge1xuICAgICAgICByZXNvdXJjZVpvbmU6IHJlc291cmNlWm9uZSxcbiAgICB9KTtcblxuICAgIGNvbnN0IHJlcXVlc3RPcHRpb25zOiBSZXF1ZXN0SW5pdCA9IHsgbWV0aG9kOiBcIkdFVFwiIH07XG4gICAgaWYgKG9wdGlvbnMuYXV0aGVudGljYXRpb24gPT0gdW5kZWZpbmVkIHx8IG9wdGlvbnMuYXV0aGVudGljYXRpb24gPT09IFwiYnJvd3Nlci1jcmVkZW50aWFscy1pbmNsdWRlXCIpIHtcbiAgICAgICAgcmVxdWVzdE9wdGlvbnMuY3JlZGVudGlhbHMgPSBcImluY2x1ZGVcIjtcbiAgICB9IGVsc2UgaWYgKFwiYXV0aFNpZFwiIGluIG9wdGlvbnMuYXV0aGVudGljYXRpb24gJiYgb3B0aW9ucy5hdXRoZW50aWNhdGlvbi5hdXRoU2lkICE9IHVuZGVmaW5lZCkge1xuICAgICAgICByZXF1ZXN0T3B0aW9ucy5jcmVkZW50aWFscyA9IFwib21pdFwiO1xuICAgICAgICByZXF1ZXN0T3B0aW9ucy5oZWFkZXJzID0gcmVxdWVzdE9wdGlvbnMuaGVhZGVycyA/PyB7fTtcbiAgICAgICAgcmVxdWVzdE9wdGlvbnMuaGVhZGVyc1tcIkF1dGhvcml6YXRpb25cIl0gPSBgQVVUSC5TSUQgJHtvcHRpb25zLmF1dGhlbnRpY2F0aW9uLmF1dGhTaWR9YDtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXF1ZXN0T3B0aW9ucy5jcmVkZW50aWFscyA9IFwib21pdFwiO1xuICAgIH1cbiAgICBjb25zdCBmZXRjaEltcGwgPSBvcHRpb25zLmZldGNoID8/IGZldGNoO1xuXG4gICAgZmV0Y2hJbXBsKGNsaWVudERyYWZ0VXJsLCByZXF1ZXN0T3B0aW9ucylcbiAgICAgICAgLnRoZW4oeCA9PiB4Lmpzb24oKSlcbiAgICAgICAgLnRoZW4oKGNsaWVudERyYWZ0SW5mbzogQ2xpZW50RHJhZnRJbmZvUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGdmdiA9IGNsaWVudERyYWZ0SW5mby5nZnY7XG4gICAgICAgICAgICBjb25zdCBlbmdpbmVWZXJzaW9uID0gY2xpZW50RHJhZnRJbmZvLmVuZ2luZVZlcnNpb247XG4gICAgICAgICAgICBjb25zdCBleHRlbmRlZFNldHRpbmdzID0ge1xuICAgICAgICAgICAgICAgIGF1dGhvcml6ZWQ6IGNsaWVudFNldHRpbmdzLmF1dGhvcml6ZWQsXG4gICAgICAgICAgICAgICAgY2F1bGRyb25BcGlVcmw6IGNsaWVudFNldHRpbmdzLmNhdWxkcm9uQXBpVXJsLFxuICAgICAgICAgICAgICAgIGlzVGVzdFNlcnZlcjogY2xpZW50U2V0dGluZ3MuaXNUZXN0U2VydmVyLFxuICAgICAgICAgICAgICAgIHJlbmRlckNhY2hpbmdGb3JJRTg6IGNsaWVudFNldHRpbmdzLnJlbmRlckNhY2hpbmdGb3JJRTgsXG4gICAgICAgICAgICAgICAgbm9ybWFsaXphdGlvbk9uU2VydmVyOiBjbGllbnRTZXR0aW5ncy5ub3JtYWxpemF0aW9uT25TZXJ2ZXIsXG4gICAgICAgICAgICAgICAgbm9ybWF0aXZlVXJsOiBjbGllbnRTZXR0aW5ncy5ub3JtYXRpdmVVcmwsXG4gICAgICAgICAgICAgICAgcmVzb3VyY2VzVmVyc2lvbjogY2xpZW50U2V0dGluZ3MucmVzb3VyY2VzVmVyc2lvbixcbiAgICAgICAgICAgICAgICBrb250dXJEb21haW5zOiBjbGllbnRTZXR0aW5ncy5rb250dXJEb21haW5zLFxuICAgICAgICAgICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgICAgICAgICAgYWJvbklkOiBvcHRpb25zLmFib25JZCxcbiAgICAgICAgICAgICAgICBvcmdJZDogb3B0aW9ucy5vcmdJZCxcbiAgICAgICAgICAgICAgICB1c2VySWQ6IG9wdGlvbnMudXNlcklkLFxuICAgICAgICAgICAgICAgIC4uLmNsaWVudERyYWZ0SW5mbyxcbiAgICAgICAgICAgICAgICBnZnY6IGdmdixcbiAgICAgICAgICAgICAgICBpc0luZGl2aWR1YWw6IGNsaWVudERyYWZ0SW5mby5pc0luZGl2aWR1YWwsXG4gICAgICAgICAgICAgICAgaXNGb3JlaWduOiBjbGllbnREcmFmdEluZm8uaXNGb3JlaWduLFxuICAgICAgICAgICAgICAgIGVuZ2luZVZlcnNpb246IGVuZ2luZVZlcnNpb24sXG4gICAgICAgICAgICAgICAgZmVlZGJhY2tFbmFibGVkOiBvcHRpb25zLmZlZWRiYWNrRW5hYmxlZCA/PyBjbGllbnREcmFmdEluZm8uZmVlZGJhY2tFbmFibGVkLFxuICAgICAgICAgICAgICAgIGNhbmR5VG91ckF2YWlsYWJsZTogY2xpZW50RHJhZnRJbmZvLmNhbmR5VG91ckF2YWlsYWJsZSxcbiAgICAgICAgICAgICAgICBldmVudEVtaXR0ZXI6IG9wdGlvbnMuZXZlbnRFbWl0dGVyLFxuICAgICAgICAgICAgICAgIGZvcm1JbmZvOiBjbGllbnREcmFmdEluZm8uZm9ybUluZm8sXG4gICAgICAgICAgICAgICAgcHJpbnRJbmZvOiBjbGllbnREcmFmdEluZm8ucHJpbnRJbmZvLFxuICAgICAgICAgICAgICAgIHJlZ2lvbnM6IGNsaWVudERyYWZ0SW5mby5yZWdpb25zLFxuICAgICAgICAgICAgICAgIGhhc1RlbXBsYXRlczogY2xpZW50RHJhZnRJbmZvLmhhc1RlbXBsYXRlcyxcbiAgICAgICAgICAgICAgICBtb2RlbDogb3B0aW9ucy5tb2RlbCxcbiAgICAgICAgICAgICAgICBpc0Rpc2FibGVkQ2xlYW5Gb3JtOiBvcHRpb25zLmlzRGlzYWJsZWRDbGVhbkZvcm0gPz8gZmFsc2UsXG4gICAgICAgICAgICAgICAgaXNEaXNhYmxlZENsb3NlQnV0dG9uOiBvcHRpb25zLmlzRGlzYWJsZWRDbG9zZUJ1dHRvbiA/PyBmYWxzZSxcbiAgICAgICAgICAgICAgICBpc0Rpc2FibGVkQ2xvc2VBbmRTYXZlQnV0dG9uOiBvcHRpb25zLmlzRGlzYWJsZWRDbG9zZUFuZFNhdmVCdXR0b24gPz8gZmFsc2UsXG4gICAgICAgICAgICAgICAgcmVzb3VyY2Vab25lOiByZXNvdXJjZVpvbmUsXG4gICAgICAgICAgICAgICAgYXV0aGVudGljYXRpb246IG9wdGlvbnMuYXV0aGVudGljYXRpb24sXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBsb2FkRm9ybShcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGdmdjogZXh0ZW5kZWRTZXR0aW5ncy5nZnYsXG4gICAgICAgICAgICAgICAgICAgIGVuZ2luZVZlcnNpb246IGV4dGVuZGVkU2V0dGluZ3MuZW5naW5lVmVyc2lvbixcbiAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2Vab25lOiBleHRlbmRlZFNldHRpbmdzLnJlc291cmNlWm9uZSxcbiAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VzVmVyc2lvbjogZXh0ZW5kZWRTZXR0aW5ncy5yZXNvdXJjZXNWZXJzaW9uLFxuICAgICAgICAgICAgICAgICAgICB0aGVtZTogZXh0ZW5kZWRTZXR0aW5ncy50aGVtZSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGxvYWRFcnJvciA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChsb2FkRXJyb3IgfHwgIWdsb2JhbC5DRi5lbnRyeVBvaW50W2dmdl0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKG5ldyBFcnJvcihgZHluYW1pYyBsb2FkaW5nIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIGdmdiAke2dmdn1gKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVuZGVyID0gZ2V0RW5naW5lRW50cnlQb2ludChlbmdpbmVWZXJzaW9uKTtcblxuICAgICAgICAgICAgICAgICAgICByZW5kZXJGb3JtKFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFnZUNvbnRlbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uZXh0ZW5kZWRTZXR0aW5ncyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZXNBcGk6IG9wdGlvbnMudGVtcGxhdGVzQXBpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlckZvcm06IHJlbmRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFja1xuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaChjYWxsYmFjayk7XG59XG5cbmNvbnN0IENhbmR5Q2xpZW50RXhwb3J0czogQ2FuZHlHbG9iYWxJbmplY3RlZFZhciA9IHtcbiAgICBzdGFydDogc3RhcnQsXG4gICAgZW50cnlQb2ludDoge30sXG4gICAgcGFydGlhbFJlbmRlcmluZ0ZvcklFODogcGFyc2VCb29sKFwie3BhcnRpYWxSZW5kZXJpbmdGb3JJRTh9XCIpLFxuICAgIGtlZm9ybXNVcmw6IFwie2tlZm9ybXNVcmx9XCIsXG59O1xuXG5nbG9iYWwuQ0YgPSBDYW5keUNsaWVudEV4cG9ydHM7XG5cbmV4cG9ydCB7IENhbmR5Q2xpZW50RXhwb3J0cyB9O1xuIiwiZnVuY3Rpb24gcGFyc2VCb29sKHZhbHVlOiB1bmtub3duKTogYm9vbGVhbiB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICBpZiAodmFsdWUgPT09IFwiZmFsc2VcIikge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gXCJ0cnVlXCIpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIEJvb2xlYW4odmFsdWUpO1xufVxuXG5leHBvcnQgY29uc3QgY2xpZW50U2V0dGluZ3MgPSB7XG4gICAgYXV0aG9yaXplZDogcGFyc2VCb29sKFwie2F1dGhvcml6ZWR9XCIpLFxuICAgIGNhdWxkcm9uQXBpVXJsOiBcIntjYXVsZHJvbkFwaVVybH1cIixcbiAgICBpc1Rlc3RTZXJ2ZXI6IHBhcnNlQm9vbChcIntpc1Rlc3RTZXJ2ZXJ9XCIpLFxuICAgIHJlbmRlckNhY2hpbmdGb3JJRTg6IHBhcnNlQm9vbChcIntyZW5kZXJDYWNoaW5nRm9ySUU4fVwiKSxcbiAgICBub3JtYWxpemF0aW9uT25TZXJ2ZXI6IHBhcnNlQm9vbChcIntub3JtYWxpemF0aW9uT25TZXJ2ZXJ9XCIpLFxuICAgIG5vcm1hdGl2ZVVybDogXCJ7bm9ybWF0aXZlVXJsfVwiLFxuICAgIHJlc291cmNlc1ZlcnNpb246IFwie3Jlc291cmNlc1ZlcnNpb259XCIsXG4gICAga29udHVyRG9tYWluczogXCJ7a29udHVyRG9tYWluc31cIixcbn07XG4iLCJpbXBvcnQgeyBOb3RJbXBsZW1lbnRlZEVycm9yIH0gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL0NvbW1vbi9FcnJvcnNcIjtcbmltcG9ydCB0eXBlIHsgU3RlcCB9IGZyb20gXCIuLi8uLi8uLi9Db250cm9scy9Gb3JtUGFydHMvVG91ci9Ub3VyVHlwZXNcIjtcbmltcG9ydCB0eXBlIHsgU2VydmVyRXJyb3JMb2cgfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vQ29tbW9uL0NhbmR5QXBpQ2xpZW50L1R5cGVzL0Vycm9yTG9nL1NlcnZlckVycm9yTG9nXCI7XG5pbXBvcnQgdHlwZSB7IE1vZGVsVmFsdWUgfSBmcm9tIFwiLi4vLi4vLi4vRW5naW5lL0NvcmUvQ29yZVR5cGVzXCI7XG5pbXBvcnQgdHlwZSB7IEV4dGVybmFsSG9va0Z1bmN0aW9uIH0gZnJvbSBcIi4uLy4uLy4uL0VuZ2luZS9Db3JlL0V2ZW50TWFuYWdlbWVudC9FeHRlcm5hbEV2ZW50cy9FeHRlcm5hbEhvb2tGdW5jdGlvblwiO1xuaW1wb3J0IHR5cGUgeyBSZWFkb25seU1vZGVsQ2h1bmsgfSBmcm9tIFwiLi4vLi4vLi4vRW5naW5lL0NvcmUvTW9kZWxTdG9yaW5nL01vZGVsQ2h1bmtcIjtcbmltcG9ydCB0eXBlIHsgUGlja2xpc3RRdWVyeVJlc3BvbnNlIH0gZnJvbSBcIi4uLy4uLy4uL0VuZ2luZS9Db3JlL1BpY2tsaXN0cy9QaWNrbGlzdFR5cGVzXCI7XG5pbXBvcnQgdHlwZSB7IElGb3JtIH0gZnJvbSBcIi4uLy4uLy4uL0VuZ2luZS9Gb3JtL0lGb3JtXCI7XG5pbXBvcnQgdHlwZSB7IElQdWJsaWNGb3JtIH0gZnJvbSBcIi4uLy4uL1B1YmxpY0Zvcm0vSVB1YmxpY0Zvcm1cIjtcbmltcG9ydCB7IE1vZGVsRXZlbnRzTGlzdGVuZXIgfSBmcm9tIFwiLi4vLi4vLi4vRW5naW5lL0NvcmUvRXZlbnRNYW5hZ2VtZW50L01vZGVsRXZlbnRzL01vZGVsRXZlbnRcIjtcbmltcG9ydCB7IERpZ2VzdFF1ZXJ5RmlsdGVyIH0gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL0NvbW1vbi9DYW5keUFwaUNsaWVudC9EaWdlc3RBcGlDbGllbnQvVHlwZXMvRGlnZXN0UXVlcnlGaWx0ZXJcIjtcbmltcG9ydCB7IEVtcGxveWVlIH0gZnJvbSBcIi4uLy4uLy4uL0VtcGxveWVlc0ltcG9ydC9TdGFmZlNlcnZpY2VXaWRnZXQvQ2xpZW50L1R5cGVzXCI7XG5pbXBvcnQgeyBJVXBkYXRlRm9ybU1vZGVsQWNjZXNzb3IgfSBmcm9tIFwiLi4vLi4vLi4vRW5naW5lL0Zvcm0vSUZvcm1Nb2RlbEFjY2Vzc29yXCI7XG5cbmltcG9ydCB7IElMZWdhY3lGb3JtIH0gZnJvbSBcIi4vSUxlZ2FjeUZvcm1cIjtcblxuZXhwb3J0IHR5cGUgTW9kZWxFdmVudFBhdGggPVxuICAgIHwgW1wibW9kZWxcIiwgXCJjaGFuZ2VcIiwgc3RyaW5nLCBzdHJpbmddXG4gICAgfCBbXCJtb2RlbFwiLCBcInJlbW92ZVwiLCBzdHJpbmcsIHN0cmluZ11cbiAgICB8IFtcIm1vZGVsXCIsIFwiY2hhbmdlXCIsIHN0cmluZ11cbiAgICB8IFtcIm1vZGVsXCIsIFwicmVtb3ZlXCIsIHN0cmluZ11cbiAgICB8IFtcIm1vZGVsXCIsIFwiY2hhbmdlXCJdXG4gICAgfCBbXCJtb2RlbFwiLCBcInJlbW92ZVwiXTtcblxuZXhwb3J0IGZ1bmN0aW9uIG1vZGVsQ2hhbmdlRXZlbnRQYXRoKHBhdGg/OiBzdHJpbmcsIGZpZWxkTmFtZT86IHN0cmluZyk6IE1vZGVsRXZlbnRQYXRoIHtcbiAgICBpZiAoZmllbGROYW1lICE9IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAocGF0aCA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlBhdGggbXVzdCBiZSBkZWZpbmVkXCIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbXCJtb2RlbFwiLCBcImNoYW5nZVwiLCBwYXRoLCBmaWVsZE5hbWVdO1xuICAgIH1cbiAgICBpZiAocGF0aCAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIFtcIm1vZGVsXCIsIFwiY2hhbmdlXCIsIHBhdGhdO1xuICAgIH1cbiAgICByZXR1cm4gW1wibW9kZWxcIiwgXCJjaGFuZ2VcIl07XG59XG5cbmZ1bmN0aW9uIG1hcENodW5rVmFsdWVzKGNodW5rOiBSZWFkb25seU1vZGVsQ2h1bmspOiBBcnJheTx7IFtwYXRoOiBzdHJpbmddOiBNb2RlbFZhbHVlIH0+IHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMoY2h1bmspXG4gICAgICAgIC5maWx0ZXIocGF0aCA9PiBjaHVua1twYXRoXSAmJiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoY2h1bmtbcGF0aF0sIFwidmFsdWVcIikpXG4gICAgICAgIC5tYXAocGF0aCA9PiB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBjaHVua1twYXRoXTtcbiAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHsgW3BhdGhdOiByZXN1bHQudmFsdWUgfTtcbiAgICAgICAgfSk7XG59XG5cbmZ1bmN0aW9uIHJlZHVjZUNodW5rVmFsdWVzKGNodW5rczogQXJyYXk8eyBbcGF0aDogc3RyaW5nXTogTW9kZWxWYWx1ZSB9Pik6IHsgW3BhdGg6IHN0cmluZ106IE1vZGVsVmFsdWUgfSB7XG4gICAgcmV0dXJuIGNodW5rcy5yZWR1Y2UoXG4gICAgICAgIChyZXN1bHQsIGNodW5rKSA9PiAoe1xuICAgICAgICAgICAgLi4ucmVzdWx0LFxuICAgICAgICAgICAgLi4uY2h1bmssXG4gICAgICAgIH0pLFxuICAgICAgICB7fVxuICAgICk7XG59XG5cbmNsYXNzIExlZ2FjeVB1YmxpY0Zvcm0gaW1wbGVtZW50cyBJUHVibGljRm9ybSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBmb3JtOiBJTGVnYWN5Rm9ybTtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3Rvcihmb3JtOiBJTGVnYWN5Rm9ybSkge1xuICAgICAgICB0aGlzLmZvcm0gPSBmb3JtO1xuICAgIH1cblxuICAgIHB1YmxpYyBiYXRjaFVwZGF0ZSh1cGRhdGVQcm9jOiAodXBkYXRlQWNjZXNzb3I6IElVcGRhdGVGb3JtTW9kZWxBY2Nlc3NvcikgPT4gdm9pZCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNZXRob2Qgbm90IGltcGxlbWVudGVkLlwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcnVuQ2hlY2soKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCBub3QgaW1wbGVtZW50ZWQuXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRFcnJvckxvZyhlcnJvckxvZzogUGFydGlhbDxTZXJ2ZXJFcnJvckxvZz4pOiB2b2lkIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XG4gICAgfVxuXG4gICAgcHVibGljIF9fSU5URVJOQUxfX2ltcG9ydEZyb21FbXBsb3llZVNlcnZpY2UoKTogUHJvbWlzZTxFbXBsb3llZVtdIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCBub3QgaW1wbGVtZW50ZWQuXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRCeUdJZChnSWQ6IHN0cmluZywgZmlsdGVyPzogRGlnZXN0UXVlcnlGaWx0ZXIpOiBQcm9taXNlPFBpY2tsaXN0UXVlcnlSZXNwb25zZT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5mb3JtLnBpY2tsaXN0c1Byb3ZpZGVyLmdldERpZ2VzdEFwaVBpY2tsaXN0KGdJZCkucXVlcnkoZmlsdGVyKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb24oZXZlbnROYW1lOiBzdHJpbmcsIGxpc3RlbmVyOiBFeHRlcm5hbEhvb2tGdW5jdGlvbik6IHZvaWQge1xuICAgICAgICB0aGlzLmZvcm0uZXZlbnRNYW5hZ2VyLm9uKFtcImZvcm1cIiwgZXZlbnROYW1lXSwgbGlzdGVuZXIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvZmYoZXZlbnROYW1lOiBzdHJpbmcsIGxpc3RlbmVyOiBFeHRlcm5hbEhvb2tGdW5jdGlvbik6IHZvaWQge1xuICAgICAgICB0aGlzLmZvcm0uZXZlbnRNYW5hZ2VyLm9mZihbXCJmb3JtXCIsIGV2ZW50TmFtZV0sIGxpc3RlbmVyKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25Nb2RlbENoYW5nZShwYXRoOiBzdHJpbmcgfCBzdHJpbmdbXSwgbGlzdGVuZXI6IHVua25vd24pOiB2b2lkIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgICAgY29uc29sZS5lcnJvcihcImZvcm0ub25Nb2RlbENoYW5nZSgpIGlzIG5vdCBzdXBwb3J0ZWQgeWV0XCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvZmZNb2RlbENoYW5nZShwYXRoOiBzdHJpbmcgfCBzdHJpbmdbXSwgbGlzdGVuZXI6IHVua25vd24pOiB2b2lkIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgICAgY29uc29sZS5lcnJvcihcImZvcm0ub2ZmTW9kZWxDaGFuZ2UoKSBpcyBub3Qgc3VwcG9ydGVkIHlldFwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2F2ZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybS5jaGFuZ2VTZXQuc2VuZCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjbG9zZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhpcy5mb3JtLmNoYW5nZVNldC5zdG9wQXV0b3NlbmQoKTtcbiAgICAgICAgaWYgKHRoaXMuZm9ybS51bm1vdW50KSB7XG4gICAgICAgICAgICB0aGlzLmZvcm0udW5tb3VudCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybS5jaGFuZ2VTZXQuc2VuZCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRUb3VyU3RlcHMoKTogU3RlcFtdIHtcbiAgICAgICAgLy8gRm9yIG9sZCBrZXdlYlxuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgcHVibGljIHZhbGlkYXRlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXModGhpcy5mb3JtLm1vZGVsLmdldENodW5rKHRoaXMuZm9ybS5zZXR0aW5ncy5mb3JtUm9vdCkpO1xuICAgICAgICAvLyBAdHMtaWdub3JlINCt0YLQviDQsiDRgdGC0LDRgNGL0YUg0LTQstC40LbQutCw0YUg0YLRg9GCINGC0LDQutC+0Lkg0LLRi9C30L7QslxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1yZXR1cm5cbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybS52YWxpZGF0b3IudmFsaWRhdGVBbGwoa2V5cyk7XG4gICAgfVxuXG4gICAgcHVibGljIGhhc0Vycm9ycygpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgZXJyb3JDb3VudCA9IHRoaXMuZm9ybS5tb2RlbC5nZXQodGhpcy5mb3JtLnNldHRpbmdzLmZvcm1Sb290LCBcImVycm9yc0NvdW50XCIpO1xuICAgICAgICByZXR1cm4gZXJyb3JDb3VudCAhPSB1bmRlZmluZWQgJiYgZXJyb3JDb3VudCA+IDA7XG4gICAgfVxuXG4gICAgcHVibGljIG9uRXJyb3JzQ291bnRDaGFuZ2VkKGxpc3RlbmVyOiBNb2RlbEV2ZW50c0xpc3RlbmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZm9ybS5ldmVudE1hbmFnZXIub24obW9kZWxDaGFuZ2VFdmVudFBhdGgodGhpcy5mb3JtLnNldHRpbmdzLmZvcm1Sb290LCBcImVycm9yc0NvdW50XCIpLCBsaXN0ZW5lcik7XG4gICAgfVxuXG4gICAgcHVibGljIG9mZkVycm9yc0NvdW50Q2hhbmdlZChsaXN0ZW5lcjogTW9kZWxFdmVudHNMaXN0ZW5lcik6IHZvaWQge1xuICAgICAgICB0aGlzLmZvcm0uZXZlbnRNYW5hZ2VyLm9mZihtb2RlbENoYW5nZUV2ZW50UGF0aCh0aGlzLmZvcm0uc2V0dGluZ3MuZm9ybVJvb3QsIFwiZXJyb3JzQ291bnRcIiksIGxpc3RlbmVyKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0KHBhdGhPck1vZGVsQ2h1bms6IHsgW3BhdGg6IHN0cmluZ106IHN0cmluZyB8IHVuZGVmaW5lZCB9KTogdm9pZCB8IFByb21pc2U8dm9pZD47XG4gICAgcHVibGljIHNldChwYXRoT3JNb2RlbENodW5rOiBzdHJpbmcsIHZhbHVlOiBNb2RlbFZhbHVlKTogdm9pZCB8IFByb21pc2U8dm9pZD47XG4gICAgcHVibGljIHNldChcbiAgICAgICAgcGF0aE9yTW9kZWxDaHVuazogc3RyaW5nIHwgeyBbcGF0aDogc3RyaW5nXTogc3RyaW5nIHwgdW5kZWZpbmVkIH0sXG4gICAgICAgIHZhbHVlPzogTW9kZWxWYWx1ZVxuICAgICk6IHZvaWQgfCBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgcGF0aE9yTW9kZWxDaHVuayAhPT0gbnVsbCAmJlxuICAgICAgICAgICAgdHlwZW9mIHBhdGhPck1vZGVsQ2h1bmsgIT09IFwic3RyaW5nXCIgJiZcbiAgICAgICAgICAgIHR5cGVvZiBwYXRoT3JNb2RlbENodW5rID09PSBcIm9iamVjdFwiICYmXG4gICAgICAgICAgICAhQXJyYXkuaXNBcnJheShwYXRoT3JNb2RlbENodW5rKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIGNvbnN0IGlubmVyQ2h1bmsgPSBPYmplY3Qua2V5cyhwYXRoT3JNb2RlbENodW5rKS5yZWR1Y2U8UmVhZG9ubHlNb2RlbENodW5rPihcbiAgICAgICAgICAgICAgICAocmVzdWx0LCBwYXRoKSA9PiAoeyBbcGF0aF06IHsgdmFsdWU6IHBhdGhPck1vZGVsQ2h1bmtbcGF0aF0gfSwgLi4ucmVzdWx0IH0pLFxuICAgICAgICAgICAgICAgIHt9XG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICB0aGlzLmZvcm0ubW9kZWwuZmlsbChpbm5lckNodW5rKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2YgcGF0aE9yTW9kZWxDaHVuayA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgdGhpcy5mb3JtLm1vZGVsLnNldChwYXRoT3JNb2RlbENodW5rLCBcInZhbHVlXCIsIHZhbHVlKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcImZvcm0uc2V0KCkgcGFyYW1ldGVyIHNob3VsZCBiZSBzdHJpbmcgcGF0aCBvciBvYmplY3Qgd2l0aCBwYXRoLXZhbHVlIHBhaXJzXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQocGF0aE9yQXJyYXk6IHN0cmluZyB8IHN0cmluZ1tdKTogeyBbcGF0aDogc3RyaW5nXTogTW9kZWxWYWx1ZSB9IHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocGF0aE9yQXJyYXkpKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVkdWNlQ2h1bmtWYWx1ZXMoXG4gICAgICAgICAgICAgICAgcGF0aE9yQXJyYXlcbiAgICAgICAgICAgICAgICAgICAgLm1hcChwYXRoID0+IG1hcENodW5rVmFsdWVzKHRoaXMuZm9ybS5tb2RlbC5nZXRDaHVuayhwYXRoKSkpXG4gICAgICAgICAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1hbnlcbiAgICAgICAgICAgICAgICAgICAgLnJlZHVjZTxBcnJheTx7IFtwYXRoOiBzdHJpbmddOiBNb2RlbFZhbHVlIH0+PigocmVzdWx0LCBhcnJheSkgPT4gcmVzdWx0LmNvbmNhdChhcnJheSksIFtdKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2YgcGF0aE9yQXJyYXkgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIHJldHVybiByZWR1Y2VDaHVua1ZhbHVlcyhtYXBDaHVua1ZhbHVlcyh0aGlzLmZvcm0ubW9kZWwuZ2V0Q2h1bmsocGF0aE9yQXJyYXkpKSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocGF0aE9yQXJyYXkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIHJlZHVjZUNodW5rVmFsdWVzKG1hcENodW5rVmFsdWVzKHRoaXMuZm9ybS5tb2RlbC5nZXRDaHVuayh0aGlzLmZvcm0uc2V0dGluZ3MuZm9ybVJvb3QpKSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiZm9ybS5nZXQoKSBwYXJhbWV0ZXIgc2hvdWxkIGJlIHN0cmluZyBwYXRoIG9yIGFycmF5IG9mIHBhdGhzXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRWYWx1ZShwYXRoOiBzdHJpbmcpOiBNb2RlbFZhbHVlIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtcmV0dXJuXG4gICAgICAgIHJldHVybiB0aGlzLmZvcm0ubW9kZWwuZ2V0KHBhdGgsIFwidmFsdWVcIik7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZEluc3RhbmNlKHBhdGg6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldENoaWxkcmVuKHBhdGg6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVtb3ZlSW5zdGFuY2UocGF0aDogc3RyaW5nLCBpbnN0YW5jZTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHJlbW92ZUluc3RhbmNlcyhwYXRoOiBzdHJpbmcsIGluc3RhbmNlOiBzdHJpbmdbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRBbGxDaGVja2JveGVzRm9yMTEzMTAzKGVuYWJsZWQ6IGJvb2xlYW4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRBdXRvRmllbGRzVG9BdXRvVmFsdWUocGF0aFByZWZpeGVzOiBzdHJpbmdbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCk7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTGVnYWN5UHVibGljRm9ybShmb3JtOiBJRm9ybSk6IElQdWJsaWNGb3JtIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgcmV0dXJuIG5ldyBMZWdhY3lQdWJsaWNGb3JtKGZvcm0gYXMgSUxlZ2FjeUZvcm0pO1xufVxuIiwiLy8gdHNsaW50OmRpc2FibGUgbm8tdW5zYWZlLWFueVxuZXhwb3J0IGNsYXNzIExvYWRJbnRvRG9jdW1lbnQge1xuICAgIHB1YmxpYyBzdGF0aWMgc2NyaXB0KHVyaTogc3RyaW5nLCBjYWxsYmFjazogKGVycm9yPzogRXJyb3IpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgbGV0IHNjcmlwdExvYWRlZCA9IGZhbHNlO1xuICAgICAgICBjb25zdCBoZWFkID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJoZWFkXCIpWzBdIHx8IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgICAgY29uc3Qgc2NyaXB0OiBhbnkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic2NyaXB0XCIpO1xuXG4gICAgICAgIGZ1bmN0aW9uIGxvYWRIYW5kbGVyKCk6IHZvaWQge1xuICAgICAgICAgICAgaWYgKHNjcmlwdExvYWRlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFzY3JpcHQucmVhZHlTdGF0ZSB8fCBzY3JpcHQucmVhZHlTdGF0ZSA9PT0gXCJsb2FkZWRcIiB8fCBzY3JpcHQucmVhZHlTdGF0ZSA9PT0gXCJjb21wbGV0ZVwiKSB7XG4gICAgICAgICAgICAgICAgc2NyaXB0TG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBjYWxsYmFjaygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gSGFuZyB0aGUgdXNlciBjYWxsYmFjayB0byBiZSBjYWxsZWQgd2hlbiB0aGUgc2NyaXB0IGNvbXBsZXRlcyB0byBsb2FkLlxuICAgICAgICAvLyBOT1RFKHVzZXIpOiBUaGlzIGNhbGxiYWNrIHdpbGwgYmUgY2FsbGVkIGluIElFIGV2ZW4gdXBvbiBlcnJvci4gSW4gYW55XG4gICAgICAgIC8vIGNhc2UgaXQgaXMgdGhlIGNsaWVudCdzIHJlc3BvbnNpYmlsaXR5IHRvIHZlcmlmeSB0aGF0IHRoZSBzY3JpcHQgcmFuXG4gICAgICAgIC8vIHN1Y2Nlc3NmdWxseS5cbiAgICAgICAgc2NyaXB0Lm9ubG9hZCA9IGxvYWRIYW5kbGVyO1xuICAgICAgICBzY3JpcHQub25yZWFkeXN0YXRlY2hhbmdlID0gbG9hZEhhbmRsZXI7XG5cbiAgICAgICAgLy8gQWRkIGFuIGVycm9yIGNhbGxiYWNrLlxuICAgICAgICAvLyBOT1RFKHVzZXIpOiBOb3Qgc3VwcG9ydGVkIGluIElFLlxuICAgICAgICBzY3JpcHQub25lcnJvciA9ICgpID0+IHtcbiAgICAgICAgICAgIGlmIChzY3JpcHQucGFyZW50Tm9kZSkge1xuICAgICAgICAgICAgICAgIHNjcmlwdC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHNjcmlwdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYWxsYmFjayhuZXcgRXJyb3IoXCJFcnJvciB3aGlsZSBsb2FkaW5nIHNjcmlwdC5cIikpO1xuICAgICAgICB9O1xuXG4gICAgICAgIC8vIEFkZCB0aGUgc2NyaXB0IGVsZW1lbnQgdG8gdGhlIGRvY3VtZW50LlxuICAgICAgICAvLyBOT1RFKHVzZXIpOiBTYWZhcmkgbmV2ZXIgbG9hZHMgdGhlIHNjcmlwdCBpZiB3ZSBkb24ndCBzZXRcbiAgICAgICAgLy8gdGhlIHNyYyBhdHRyaWJ1dGUgYmVmb3JlIGFwcGVuZGluZy5cbiAgICAgICAgc2NyaXB0LnNyYyA9IHVyaTtcbiAgICAgICAgc2NyaXB0LnNldEF0dHJpYnV0ZShcImNyb3Nzb3JpZ2luXCIsIFwidXNlLWNyZWRlbnRpYWxzXCIpO1xuICAgICAgICBoZWFkLmFwcGVuZENoaWxkKHNjcmlwdCk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBzdHlsZVNoZWV0KHVyaTogc3RyaW5nLCBpZ25vcmVFcnJvcjogYm9vbGVhbiwgY2FsbGJhY2s6IChlcnJvcj86IEVycm9yKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHJlc29sdmUgPSAoKSA9PiBjYWxsYmFjayh1bmRlZmluZWQpO1xuICAgICAgICBjb25zdCByZWplY3QgPSAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoaWdub3JlRXJyb3IpIHtcbiAgICAgICAgICAgICAgICBjYWxsYmFjayh1bmRlZmluZWQpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjYWxsYmFjayhuZXcgRXJyb3IoXCJFcnJvciB3aGlsZSBsb2FkaW5nIHN0eWxlc2hlZXQuXCIpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBoZWFkID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJoZWFkXCIpWzBdID8/IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcbiAgICAgICAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJsaW5rXCIpO1xuXG4gICAgICAgIGxpbmsuc2V0QXR0cmlidXRlKFwicmVsXCIsIFwic3R5bGVzaGVldFwiKTtcbiAgICAgICAgbGluay5zZXRBdHRyaWJ1dGUoXCJ0eXBlXCIsIFwidGV4dC9jc3NcIik7XG4gICAgICAgIGxpbmsuYWRkRXZlbnRMaXN0ZW5lcihcImxvYWRcIiwgcmVzb2x2ZSk7XG4gICAgICAgIGxpbmsuYWRkRXZlbnRMaXN0ZW5lcihcImVycm9yXCIsIHJlamVjdCk7XG4gICAgICAgIGhlYWQuYXBwZW5kQ2hpbGQobGluayk7XG4gICAgICAgIGxpbmsuc2V0QXR0cmlidXRlKFwiaHJlZlwiLCB1cmkpO1xuICAgIH1cbn1cbiIsIi8vIFRoZSBtb2R1bGUgY2FjaGVcbnZhciBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18gPSB7fTtcblxuLy8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbmZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG5cdHZhciBjYWNoZWRNb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdO1xuXHRpZiAoY2FjaGVkTW9kdWxlICE9PSB1bmRlZmluZWQpIHtcblx0XHRyZXR1cm4gY2FjaGVkTW9kdWxlLmV4cG9ydHM7XG5cdH1cblx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcblx0dmFyIG1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF0gPSB7XG5cdFx0aWQ6IG1vZHVsZUlkLFxuXHRcdGxvYWRlZDogZmFsc2UsXG5cdFx0ZXhwb3J0czoge31cblx0fTtcblxuXHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cblx0X193ZWJwYWNrX21vZHVsZXNfX1ttb2R1bGVJZF0obW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cblx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuXHRtb2R1bGUubG9hZGVkID0gdHJ1ZTtcblxuXHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuXHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG59XG5cbiIsIi8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb25zIGZvciBoYXJtb255IGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIGRlZmluaXRpb24pIHtcblx0Zm9yKHZhciBrZXkgaW4gZGVmaW5pdGlvbikge1xuXHRcdGlmKF9fd2VicGFja19yZXF1aXJlX18ubyhkZWZpbml0aW9uLCBrZXkpICYmICFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywga2V5KSkge1xuXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGRlZmluaXRpb25ba2V5XSB9KTtcblx0XHR9XG5cdH1cbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5nID0gKGZ1bmN0aW9uKCkge1xuXHRpZiAodHlwZW9mIGdsb2JhbFRoaXMgPT09ICdvYmplY3QnKSByZXR1cm4gZ2xvYmFsVGhpcztcblx0dHJ5IHtcblx0XHRyZXR1cm4gdGhpcyB8fCBuZXcgRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcblx0fSBjYXRjaCAoZSkge1xuXHRcdGlmICh0eXBlb2Ygd2luZG93ID09PSAnb2JqZWN0JykgcmV0dXJuIHdpbmRvdztcblx0fVxufSkoKTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLmhtZCA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuXHRtb2R1bGUgPSBPYmplY3QuY3JlYXRlKG1vZHVsZSk7XG5cdGlmICghbW9kdWxlLmNoaWxkcmVuKSBtb2R1bGUuY2hpbGRyZW4gPSBbXTtcblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG1vZHVsZSwgJ2V4cG9ydHMnLCB7XG5cdFx0ZW51bWVyYWJsZTogdHJ1ZSxcblx0XHRzZXQ6IGZ1bmN0aW9uKCkge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKCdFUyBNb2R1bGVzIG1heSBub3QgYXNzaWduIG1vZHVsZS5leHBvcnRzIG9yIGV4cG9ydHMuKiwgVXNlIEVTTSBleHBvcnQgc3ludGF4LCBpbnN0ZWFkOiAnICsgbW9kdWxlLmlkKTtcblx0XHR9XG5cdH0pO1xuXHRyZXR1cm4gbW9kdWxlO1xufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmosIHByb3ApIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApOyB9IiwiLy8gc3RhcnR1cFxuLy8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4vLyBUaGlzIGVudHJ5IG1vZHVsZSBpcyByZWZlcmVuY2VkIGJ5IG90aGVyIG1vZHVsZXMgc28gaXQgY2FuJ3QgYmUgaW5saW5lZFxudmFyIF9fd2VicGFja19leHBvcnRzX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEzMyk7XG4iXSwic291cmNlUm9vdCI6IiJ9
|