@pie-lib/editable-html 10.0.0-beta.2 → 10.0.0-beta.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/editor.js +89 -34
- package/lib/index.js +7 -9
- package/lib/new-serialization.js +2 -2
- package/lib/plugins/image/component.js +6 -5
- package/lib/plugins/image/index.js +81 -72
- package/lib/plugins/index.js +11 -1
- package/lib/plugins/math/index.js +3 -3
- package/lib/plugins/media/index.js +9 -19
- package/lib/plugins/respArea/drag-in-the-blank/index.js +4 -4
- package/lib/plugins/respArea/index.js +83 -81
- package/lib/plugins/table/index.js +84 -9
- package/lib/plugins/toolbar/toolbar.js +21 -16
- package/lib/serialization.js +2 -2
- package/lib/test-serializer.js +2 -2
- package/package.json +3 -4
- package/src/editor.jsx +67 -14
- package/src/index.jsx +6 -8
- package/src/new-serialization.jsx +1 -1
- package/src/plugins/image/component.jsx +5 -4
- package/src/plugins/image/index.jsx +72 -45
- package/src/plugins/index.jsx +6 -0
- package/src/plugins/math/index.jsx +1 -1
- package/src/plugins/media/index.jsx +6 -12
- package/src/plugins/respArea/drag-in-the-blank/index.jsx +3 -3
- package/src/plugins/respArea/index.jsx +75 -61
- package/src/plugins/table/index.jsx +68 -5
- package/src/plugins/toolbar/toolbar.jsx +21 -14
- package/src/serialization.jsx +1 -1
- package/src/test-serializer.js +1 -1
- package/yarn-error.log +18318 -0
|
@@ -194,7 +194,82 @@ var _default = function _default(opts, toolbarPlugins
|
|
|
194
194
|
/* : {toolbar: {}}[] */
|
|
195
195
|
) {
|
|
196
196
|
var core = {
|
|
197
|
-
utils: {}
|
|
197
|
+
utils: {},
|
|
198
|
+
rules: function rules(editor) {
|
|
199
|
+
var normalizeNode = editor.normalizeNode;
|
|
200
|
+
|
|
201
|
+
editor.normalizeNode = function (entry) {
|
|
202
|
+
var _entry = (0, _slicedToArray2["default"])(entry, 2),
|
|
203
|
+
tableNode = _entry[0],
|
|
204
|
+
tablePath = _entry[1];
|
|
205
|
+
|
|
206
|
+
var tableParent = _slate.Node.get(editor, tablePath.slice(0, -1)); // If the element is a paragraph, ensure its children are valid.
|
|
207
|
+
|
|
208
|
+
|
|
209
|
+
if (_slate.Element.isElement(tableNode) && tableNode.type === 'table') {
|
|
210
|
+
var emptyBlock = {
|
|
211
|
+
type: 'paragraph',
|
|
212
|
+
children: [{
|
|
213
|
+
text: ''
|
|
214
|
+
}]
|
|
215
|
+
};
|
|
216
|
+
var tableIndex = tablePath.slice(-1)[0]; // if table is the first element, we need to add a space before
|
|
217
|
+
// so users can focus before the table
|
|
218
|
+
|
|
219
|
+
if (tableIndex === 0) {
|
|
220
|
+
var beforeTablePath = [].concat((0, _toConsumableArray2["default"])(tablePath.slice(0, -1)), [0]);
|
|
221
|
+
editor.apply({
|
|
222
|
+
type: 'insert_node',
|
|
223
|
+
path: beforeTablePath,
|
|
224
|
+
node: emptyBlock
|
|
225
|
+
});
|
|
226
|
+
editor.continueNormalization();
|
|
227
|
+
return;
|
|
228
|
+
} // if table is the last element, we add element after it
|
|
229
|
+
|
|
230
|
+
|
|
231
|
+
if (tableParent.children.length - 1 === tableIndex) {
|
|
232
|
+
var afterTablePath = [].concat((0, _toConsumableArray2["default"])(tablePath.slice(0, -1)), [tableIndex + 1]);
|
|
233
|
+
editor.apply({
|
|
234
|
+
type: 'insert_node',
|
|
235
|
+
path: afterTablePath,
|
|
236
|
+
node: emptyBlock
|
|
237
|
+
});
|
|
238
|
+
editor.continueNormalization();
|
|
239
|
+
return;
|
|
240
|
+
} // if table does not have a tbody, we add it
|
|
241
|
+
|
|
242
|
+
|
|
243
|
+
if (tableNode.children[0].type !== 'tbody') {
|
|
244
|
+
var tBodyNode = {
|
|
245
|
+
type: 'tbody',
|
|
246
|
+
children: []
|
|
247
|
+
};
|
|
248
|
+
|
|
249
|
+
_slate.Transforms.wrapNodes(editor, tBodyNode, {
|
|
250
|
+
at: {
|
|
251
|
+
anchor: {
|
|
252
|
+
path: [].concat((0, _toConsumableArray2["default"])(tablePath), [0]),
|
|
253
|
+
offset: 0
|
|
254
|
+
},
|
|
255
|
+
focus: {
|
|
256
|
+
path: [].concat((0, _toConsumableArray2["default"])(tablePath), [tableNode.children.length]),
|
|
257
|
+
offset: 0
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
});
|
|
261
|
+
|
|
262
|
+
editor.continueNormalization();
|
|
263
|
+
return;
|
|
264
|
+
}
|
|
265
|
+
} // Fall back to the original `normalizeNode` to enforce other constraints.
|
|
266
|
+
|
|
267
|
+
|
|
268
|
+
normalizeNode(entry);
|
|
269
|
+
};
|
|
270
|
+
|
|
271
|
+
return editor;
|
|
272
|
+
}
|
|
198
273
|
};
|
|
199
274
|
|
|
200
275
|
core.utils.createTable = function () {
|
|
@@ -264,7 +339,7 @@ var _default = function _default(opts, toolbarPlugins
|
|
|
264
339
|
/**
|
|
265
340
|
* Note - the node may not be a table node - it may be a node inside a table.
|
|
266
341
|
*/
|
|
267
|
-
customToolbar: function customToolbar(node,
|
|
342
|
+
customToolbar: function customToolbar(node, nodePath, editor, onToolbarDone) {
|
|
268
343
|
log('[customToolbar] node.data: ', node.data);
|
|
269
344
|
|
|
270
345
|
var _core$utils$getTableB = core.utils.getTableBlock(editor),
|
|
@@ -363,10 +438,10 @@ var _default = function _default(opts, toolbarPlugins
|
|
|
363
438
|
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
|
|
364
439
|
var _step3$value = (0, _slicedToArray2["default"])(_step3.value, 2),
|
|
365
440
|
trNode = _step3$value[0],
|
|
366
|
-
|
|
441
|
+
_nodePath = _step3$value[1];
|
|
367
442
|
|
|
368
443
|
_slate.Transforms.insertNodes(editor, [emptyTd], {
|
|
369
|
-
at: [].concat((0, _toConsumableArray2["default"])(
|
|
444
|
+
at: [].concat((0, _toConsumableArray2["default"])(_nodePath), [trNode.children.length])
|
|
370
445
|
});
|
|
371
446
|
}
|
|
372
447
|
} catch (err) {
|
|
@@ -405,11 +480,11 @@ var _default = function _default(opts, toolbarPlugins
|
|
|
405
480
|
for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
|
|
406
481
|
var _step4$value = (0, _slicedToArray2["default"])(_step4.value, 2),
|
|
407
482
|
trNode = _step4$value[0],
|
|
408
|
-
|
|
483
|
+
_nodePath2 = _step4$value[1];
|
|
409
484
|
|
|
410
485
|
if (trNode.children.length > 1) {
|
|
411
486
|
_slate.Transforms.removeNodes(editor, {
|
|
412
|
-
at: [].concat((0, _toConsumableArray2["default"])(
|
|
487
|
+
at: [].concat((0, _toConsumableArray2["default"])(_nodePath2), [columnIndex])
|
|
413
488
|
});
|
|
414
489
|
}
|
|
415
490
|
}
|
|
@@ -460,7 +535,7 @@ var _default = function _default(opts, toolbarPlugins
|
|
|
460
535
|
|
|
461
536
|
var onDone = function onDone() {
|
|
462
537
|
log('[onDone] call onToolbarDone...');
|
|
463
|
-
onToolbarDone(
|
|
538
|
+
onToolbarDone(true);
|
|
464
539
|
};
|
|
465
540
|
|
|
466
541
|
var Tb = function Tb() {
|
|
@@ -485,7 +560,7 @@ var _default = function _default(opts, toolbarPlugins
|
|
|
485
560
|
}
|
|
486
561
|
};
|
|
487
562
|
|
|
488
|
-
core.supports = function (node
|
|
563
|
+
core.supports = function (node) {
|
|
489
564
|
return TABLE_TYPES.includes(node.type);
|
|
490
565
|
};
|
|
491
566
|
|
|
@@ -665,4 +740,4 @@ var serialization = {
|
|
|
665
740
|
}
|
|
666
741
|
};
|
|
667
742
|
exports.serialization = serialization;
|
|
668
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJsb2ciLCJkZWJ1ZyIsIlRhYmxlIiwiUmVhY3QiLCJmb3J3YXJkUmVmIiwicHJvcHMiLCJub2RlQXR0cmlidXRlcyIsIm9taXQiLCJkYXRhVG9BdHRyaWJ1dGVzIiwiZWxlbWVudCIsImRhdGEiLCJhdHRycyIsImF0dHJpYnV0ZXMiLCJvbkZvY3VzIiwib25CbHVyIiwiY2hpbGRyZW4iLCJwcm9wVHlwZXMiLCJQcm9wVHlwZXMiLCJvYmplY3QiLCJmdW5jIiwibm9kZSIsInNoYXBlIiwidHlwZSIsInN0cmluZyIsImFycmF5Iiwib25lT2ZUeXBlIiwiYXJyYXlPZiIsImlzUmVxdWlyZWQiLCJUYWJsZVJvdyIsIlRhYmxlQm9keSIsInVzZUNlbGxTdHlsZXMiLCJtYWtlU3R5bGVzIiwidGQiLCJtaW5XaWR0aCIsIlRhYmxlQ2VsbCIsImNsYXNzZXMiLCJUYWciLCJnZXQiLCJoZWFkZXIiLCJnZXRBbmNlc3RvckJ5VHlwZSIsImVkaXRvciIsImFuY2VzdG9ycyIsIlNsYXRlTm9kZSIsIkVkaXRvciIsInBhdGgiLCJzZWxlY3Rpb24iLCJyZXZlcnNlIiwiYW5jZXN0b3IiLCJhbmNlc3RvclBhdGgiLCJtb3ZlVG9CZWdpbm5pbmdPZlRhYmxlIiwidGFibGVCbG9jayIsInRhYmxlUGF0aCIsImZpcnN0VGRQYXRoIiwiZGVzY2VuZGFudHMiLCJkZXNjZW5kYW50IiwiZGVzY2VuZGFudFBhdGgiLCJUcmFuc2Zvcm1zIiwic2VsZWN0IiwiVEFCTEVfVFlQRVMiLCJvcHRzIiwidG9vbGJhclBsdWdpbnMiLCJjb3JlIiwidXRpbHMiLCJjcmVhdGVUYWJsZSIsInJvdyIsImNvbHVtbnMiLCJ0YWJsZVJvd3MiLCJyb3dMZW5ndGgiLCJBcnJheSIsImZpbGwiLCJsZW5ndGgiLCJjb2x1bW5zTGVuZ3RoIiwiaSIsInRhYmxlUm93IiwiaiIsInB1c2giLCJ0ZXh0IiwiZ2V0VGFibGVCbG9jayIsImlzU2VsZWN0aW9uSW5UYWJsZSIsImNyZWF0ZVRhYmxlV2l0aE9wdGlvbnMiLCJleHRyYSIsImNyZWF0ZWRUYWJsZSIsIm5ld1RhYmxlIiwidG9vbGJhciIsImljb24iLCJvbkNsaWNrIiwiYm9yZGVyIiwiaW5zZXJ0Tm9kZSIsImN1c3RvbVRvb2xiYXIiLCJ2YWx1ZSIsIm9uVG9vbGJhckRvbmUiLCJoYXNCb3JkZXIiLCJhZGRSb3ciLCJ0ck5vZGUiLCJ0clBhdGgiLCJuZXdUciIsImluc2VydE5vZGVzIiwiYXQiLCJyZW1vdmVSb3ciLCJ0Qm9keU5vZGUiLCJ0Qm9keVBhdGgiLCJyZW1vdmVOb2RlcyIsImFkZENvbHVtbiIsImVtcHR5VGQiLCJ0ckVsZW1lbnRzIiwibm9kZXMiLCJtYXRjaCIsIm5vZGVQYXRoIiwicmVtb3ZlQ29sdW1uIiwiY3VycmVudFBhdGgiLCJjb2x1bW5JbmRleCIsInJlbW92ZVRhYmxlIiwidGFibGVOb2RlIiwiYXBwbHkiLCJ0b2dnbGVCb3JkZXIiLCJ1cGRhdGUiLCJwcm9wZXJ0aWVzIiwibmV3UHJvcGVydGllcyIsIm9uRG9uZSIsIlRiIiwiYyIsInN1cHBvcnRzIiwiaW5jbHVkZXMiLCJOb2RlIiwicmVuZGVyTm9kZSIsInBhcnNlU3R5bGVTdHJpbmciLCJzIiwicmVnZXgiLCJyZXN1bHQiLCJleGVjIiwidHJpbSIsInJlYWN0QXR0cmlidXRlcyIsIm8iLCJ0b1N0eWxlT2JqZWN0IiwiY2FtZWxpemUiLCJhZGRVbml0cyIsImF0dHJpYnV0ZXNUb01hcCIsImVsIiwiYWNjIiwiYXR0cmlidXRlIiwiZ2V0QXR0cmlidXRlIiwic3R5bGVTdHJpbmciLCJyZWFjdFN0eWxlT2JqZWN0IiwicmVkdWNlIiwidiIsIm5hbWUiLCJjb252ZXJ0IiwiY2VsbEF0dHJpYnV0ZXMiLCJzZXJpYWxpemF0aW9uIiwiZGVzZXJpYWxpemUiLCJuZXh0IiwidGFnIiwidGFnTmFtZSIsInRvTG93ZXJDYXNlIiwiZnJvbSIsImpzeCIsImNoaWxkTm9kZXMiLCJzZXJpYWxpemUiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcGx1Z2lucy90YWJsZS9pbmRleC5qc3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IE5vZGUgYXMgU2xhdGVOb2RlLCBFZGl0b3IsIFRyYW5zZm9ybXMgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IEdyaWRPbiBmcm9tICdAbWF0ZXJpYWwtdWkvaWNvbnMvR3JpZE9uJztcbmltcG9ydCBUYWJsZVRvb2xiYXIgZnJvbSAnLi90YWJsZS10b29sYmFyJztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgeyBqc3ggfSBmcm9tICdzbGF0ZS1oeXBlcnNjcmlwdCc7XG5pbXBvcnQgeyBtYWtlU3R5bGVzIH0gZnJvbSAnQG1hdGVyaWFsLXVpL3N0eWxlcyc7XG5pbXBvcnQgY29udmVydCBmcm9tICdyZWFjdC1hdHRyLWNvbnZlcnRlcic7XG5pbXBvcnQgeyBvYmplY3QgYXMgdG9TdHlsZU9iamVjdCB9IGZyb20gJ3RvLXN0eWxlJztcbmltcG9ydCBnZXQgZnJvbSAnbG9kYXNoL2dldCc7XG5pbXBvcnQgb21pdCBmcm9tICdsb2Rhc2gvb21pdCc7XG5pbXBvcnQgcmVkdWNlIGZyb20gJ2xvZGFzaC9yZWR1Y2UnO1xuXG5jb25zdCBsb2cgPSBkZWJ1ZygnQHBpZS1saWI6ZWRpdGFibGUtaHRtbDpwbHVnaW5zOnRhYmxlJyk7XG5cbmNvbnN0IFRhYmxlID0gUmVhY3QuZm9yd2FyZFJlZihwcm9wcyA9PiB7XG4gIGNvbnN0IG5vZGVBdHRyaWJ1dGVzID0gb21pdChkYXRhVG9BdHRyaWJ1dGVzKHByb3BzLmVsZW1lbnQuZGF0YSksICduZXdUYWJsZScpO1xuICBjb25zdCBhdHRycyA9IG9taXQocHJvcHMuYXR0cmlidXRlcywgJ25ld1RhYmxlJyk7XG5cbiAgcmV0dXJuIChcbiAgICA8dGFibGUgey4uLmF0dHJzfSB7Li4ubm9kZUF0dHJpYnV0ZXN9IG9uRm9jdXM9e3Byb3BzLm9uRm9jdXN9IG9uQmx1cj17cHJvcHMub25CbHVyfT5cbiAgICAgIHtwcm9wcy5jaGlsZHJlbn1cbiAgICA8L3RhYmxlPlxuICApO1xufSk7XG5cblRhYmxlLnByb3BUeXBlcyA9IHtcbiAgYXR0cmlidXRlczogUHJvcFR5cGVzLm9iamVjdCxcbiAgZWxlbWVudDogUHJvcFR5cGVzLm9iamVjdCxcbiAgb25Gb2N1czogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uQmx1cjogUHJvcFR5cGVzLmZ1bmMsXG4gIG5vZGU6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgdHlwZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBjaGlsZHJlbjogUHJvcFR5cGVzLmFycmF5LFxuICAgIGRhdGE6IFByb3BUeXBlcy5vYmplY3RcbiAgfSksXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMubm9kZSksIFByb3BUeXBlcy5ub2RlXSkuaXNSZXF1aXJlZFxufTtcblxuY29uc3QgVGFibGVSb3cgPSBSZWFjdC5mb3J3YXJkUmVmKHByb3BzID0+IDx0ciB7Li4ucHJvcHMuYXR0cmlidXRlc30+e3Byb3BzLmNoaWxkcmVufTwvdHI+KTtcblxuVGFibGVSb3cucHJvcFR5cGVzID0ge1xuICBhdHRyaWJ1dGVzOiBQcm9wVHlwZXMub2JqZWN0LFxuICBvbkZvY3VzOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25CbHVyOiBQcm9wVHlwZXMuZnVuYyxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5ub2RlKSwgUHJvcFR5cGVzLm5vZGVdKS5pc1JlcXVpcmVkXG59O1xuXG5jb25zdCBUYWJsZUJvZHkgPSBSZWFjdC5mb3J3YXJkUmVmKHByb3BzID0+IDx0Ym9keSB7Li4ucHJvcHMuYXR0cmlidXRlc30+e3Byb3BzLmNoaWxkcmVufTwvdGJvZHk+KTtcblxuVGFibGVCb2R5LnByb3BUeXBlcyA9IHtcbiAgYXR0cmlidXRlczogUHJvcFR5cGVzLm9iamVjdCxcbiAgb25Gb2N1czogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uQmx1cjogUHJvcFR5cGVzLmZ1bmMsXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMubm9kZSksIFByb3BUeXBlcy5ub2RlXSkuaXNSZXF1aXJlZFxufTtcblxuY29uc3QgdXNlQ2VsbFN0eWxlcyA9IG1ha2VTdHlsZXMoe1xuICB0ZDoge1xuICAgIG1pbldpZHRoOiAnMjVweCdcbiAgfVxufSk7XG5cbmNvbnN0IFRhYmxlQ2VsbCA9IFJlYWN0LmZvcndhcmRSZWYocHJvcHMgPT4ge1xuICBjb25zdCBjbGFzc2VzID0gdXNlQ2VsbFN0eWxlcygpO1xuICBjb25zdCB7IG5vZGUgfSA9IHByb3BzO1xuICBjb25zdCBUYWcgPSBnZXQobm9kZSwgJ2RhdGEuaGVhZGVyJykgPyAndGgnIDogJ3RkJztcblxuICBjb25zdCBub2RlQXR0cmlidXRlcyA9IGRhdGFUb0F0dHJpYnV0ZXMocHJvcHMuZWxlbWVudC5kYXRhKTtcbiAgZGVsZXRlIG5vZGVBdHRyaWJ1dGVzLmhlYWRlcjtcblxuICByZXR1cm4gKFxuICAgIDxUYWdcbiAgICAgIHsuLi5wcm9wcy5hdHRyaWJ1dGVzfVxuICAgICAgey4uLm5vZGVBdHRyaWJ1dGVzfVxuICAgICAgY29sU3Bhbj17Z2V0KG5vZGUsICdkYXRhLmNvbHNwYW4nKX1cbiAgICAgIGNsYXNzTmFtZT17Y2xhc3Nlc1tUYWddfVxuICAgICAgb25Gb2N1cz17cHJvcHMub25Gb2N1c31cbiAgICAgIG9uQmx1cj17cHJvcHMub25CbHVyfVxuICAgID5cbiAgICAgIHtwcm9wcy5jaGlsZHJlbn1cbiAgICA8L1RhZz5cbiAgKTtcbn0pO1xuXG5UYWJsZUNlbGwucHJvcFR5cGVzID0ge1xuICBub2RlOiBQcm9wVHlwZXMub2JqZWN0LFxuICBlbGVtZW50OiBQcm9wVHlwZXMub2JqZWN0LFxuICBhdHRyaWJ1dGVzOiBQcm9wVHlwZXMub2JqZWN0LFxuICBvbkZvY3VzOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25CbHVyOiBQcm9wVHlwZXMuZnVuYyxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5ub2RlKSwgUHJvcFR5cGVzLm5vZGVdKS5pc1JlcXVpcmVkXG59O1xuXG5jb25zdCBnZXRBbmNlc3RvckJ5VHlwZSA9IChlZGl0b3IsIHR5cGUpID0+IHtcbiAgaWYgKCFlZGl0b3IgfHwgIXR5cGUpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IGFuY2VzdG9ycyA9IFNsYXRlTm9kZS5hbmNlc3RvcnMoZWRpdG9yLCBFZGl0b3IucGF0aChlZGl0b3IsIGVkaXRvci5zZWxlY3Rpb24pLCB7XG4gICAgcmV2ZXJzZTogdHJ1ZVxuICB9KTtcblxuICBmb3IgKGNvbnN0IFthbmNlc3RvciwgYW5jZXN0b3JQYXRoXSBvZiBhbmNlc3RvcnMpIHtcbiAgICBpZiAoYW5jZXN0b3IudHlwZSA9PT0gdHlwZSkge1xuICAgICAgcmV0dXJuIFthbmNlc3RvciwgYW5jZXN0b3JQYXRoXTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn07XG5cbmNvbnN0IG1vdmVUb0JlZ2lubmluZ09mVGFibGUgPSBlZGl0b3IgPT4ge1xuICBjb25zdCBbdGFibGVCbG9jaywgdGFibGVQYXRoXSA9IGdldEFuY2VzdG9yQnlUeXBlKGVkaXRvciwgJ3RhYmxlJyk7XG4gIGxldCBmaXJzdFRkUGF0aDtcblxuICBmb3IgKGNvbnN0IFtkZXNjZW5kYW50LCBkZXNjZW5kYW50UGF0aF0gb2YgU2xhdGVOb2RlLmRlc2NlbmRhbnRzKHRhYmxlQmxvY2ssIHsgcmV2ZXJzZTogdHJ1ZSB9KSkge1xuICAgIGlmIChkZXNjZW5kYW50LnR5cGUgPT09ICd0ZCcpIHtcbiAgICAgIGZpcnN0VGRQYXRoID0gZGVzY2VuZGFudFBhdGg7XG4gICAgfVxuICB9XG5cbiAgVHJhbnNmb3Jtcy5zZWxlY3QoZWRpdG9yLCBbLi4udGFibGVQYXRoLCAuLi5maXJzdFRkUGF0aF0pO1xufTtcblxuY29uc3QgVEFCTEVfVFlQRVMgPSBbJ3Rib2R5JywgJ3RyJywgJ3RkJywgJ3RhYmxlJ107XG5cbmV4cG9ydCBkZWZhdWx0IChvcHRzLCB0b29sYmFyUGx1Z2lucyAvKiA6ICB7dG9vbGJhcjoge319W10gKi8pID0+IHtcbiAgY29uc3QgY29yZSA9IHtcbiAgICB1dGlsczoge31cbiAgfTtcblxuICBjb3JlLnV0aWxzLmNyZWF0ZVRhYmxlID0gKHJvdyA9IDIsIGNvbHVtbnMgPSAyKSA9PiB7XG4gICAgY29uc3QgdGFibGVSb3dzID0gW107XG4gICAgY29uc3Qgcm93TGVuZ3RoID0gbmV3IEFycmF5KHJvdykuZmlsbCgwKS5sZW5ndGg7XG4gICAgY29uc3QgY29sdW1uc0xlbmd0aCA9IG5ldyBBcnJheShjb2x1bW5zKS5maWxsKDApLmxlbmd0aDtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcm93TGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IHRhYmxlUm93ID0geyB0eXBlOiAndHInLCBjaGlsZHJlbjogW10gfTtcblxuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBjb2x1bW5zTGVuZ3RoOyBqKyspIHtcbiAgICAgICAgdGFibGVSb3cuY2hpbGRyZW4ucHVzaCh7XG4gICAgICAgICAgdHlwZTogJ3RkJyxcbiAgICAgICAgICBjaGlsZHJlbjogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB0ZXh0OiAnJ1xuICAgICAgICAgICAgfVxuICAgICAgICAgIF1cbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHRhYmxlUm93cy5wdXNoKHRhYmxlUm93KTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogJ3RhYmxlJyxcbiAgICAgIGNoaWxkcmVuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiAndGJvZHknLFxuICAgICAgICAgIGNoaWxkcmVuOiB0YWJsZVJvd3NcbiAgICAgICAgfVxuICAgICAgXVxuICAgIH07XG4gIH07XG5cbiAgY29yZS51dGlscy5nZXRUYWJsZUJsb2NrID0gZWRpdG9yID0+IGdldEFuY2VzdG9yQnlUeXBlKGVkaXRvciwgJ3RhYmxlJyk7XG5cbiAgY29yZS51dGlscy5pc1NlbGVjdGlvbkluVGFibGUgPSBlZGl0b3IgPT4gISFjb3JlLnV0aWxzLmdldFRhYmxlQmxvY2soZWRpdG9yKTtcblxuICBjb3JlLnV0aWxzLmNyZWF0ZVRhYmxlV2l0aE9wdGlvbnMgPSAocm93LCBjb2x1bW5zLCBleHRyYSkgPT4ge1xuICAgIGNvbnN0IGNyZWF0ZWRUYWJsZSA9IGNvcmUudXRpbHMuY3JlYXRlVGFibGUocm93LCBjb2x1bW5zKTtcbiAgICBjb25zdCBuZXdUYWJsZSA9IHsgLi4uY3JlYXRlZFRhYmxlLCAuLi5leHRyYSB9O1xuXG4gICAgcmV0dXJuIG5ld1RhYmxlO1xuICB9O1xuXG4gIGNvcmUudG9vbGJhciA9IHtcbiAgICBpY29uOiA8R3JpZE9uIC8+LFxuICAgIG9uQ2xpY2s6IGVkaXRvciA9PiB7XG4gICAgICBsb2coJ2luc2VydCB0YWJsZScpO1xuICAgICAgY29uc3QgbmV3VGFibGUgPSBjb3JlLnV0aWxzLmNyZWF0ZVRhYmxlV2l0aE9wdGlvbnMoMiwgMiwge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgYm9yZGVyOiAnMScsXG4gICAgICAgICAgbmV3VGFibGU6IHRydWVcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIGVkaXRvci5pbnNlcnROb2RlKG5ld1RhYmxlKTtcbiAgICAgIG1vdmVUb0JlZ2lubmluZ09mVGFibGUoZWRpdG9yLCBuZXdUYWJsZSk7XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBOb3RlIC0gdGhlIG5vZGUgbWF5IG5vdCBiZSBhIHRhYmxlIG5vZGUgLSBpdCBtYXkgYmUgYSBub2RlIGluc2lkZSBhIHRhYmxlLlxuICAgICAqL1xuICAgIGN1c3RvbVRvb2xiYXI6IChub2RlLCB2YWx1ZSwgZWRpdG9yLCBvblRvb2xiYXJEb25lKSA9PiB7XG4gICAgICBsb2coJ1tjdXN0b21Ub29sYmFyXSBub2RlLmRhdGE6ICcsIG5vZGUuZGF0YSk7XG5cbiAgICAgIGNvbnN0IFt0YWJsZUJsb2NrXSA9IGNvcmUudXRpbHMuZ2V0VGFibGVCbG9jayhlZGl0b3IpO1xuICAgICAgbG9nKCdbY3VzdG9tVG9vbGJhcl0gdGFibGVCbG9jazogJywgdGFibGVCbG9jayk7XG5cbiAgICAgIGNvbnN0IGhhc0JvcmRlciA9ICgpID0+IGdldCh0YWJsZUJsb2NrLCAnZGF0YS5ib3JkZXInKSAhPT0gJzAnO1xuICAgICAgY29uc3QgYWRkUm93ID0gKCkgPT4ge1xuICAgICAgICBjb25zdCBbdHJOb2RlLCB0clBhdGhdID0gZ2V0QW5jZXN0b3JCeVR5cGUoZWRpdG9yLCAndHInKTtcblxuICAgICAgICBsb2coJ1thZGRSb3ddJyk7XG5cbiAgICAgICAgaWYgKHRyTm9kZSkge1xuICAgICAgICAgIGNvbnN0IG5ld1RyID0geyB0eXBlOiAndHInLCBjaGlsZHJlbjogW10gfTtcbiAgICAgICAgICBjb25zdCBjb2x1bW5zTGVuZ3RoID0gdHJOb2RlLmNoaWxkcmVuLmxlbmd0aDtcblxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29sdW1uc0xlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBuZXdUci5jaGlsZHJlbi5wdXNoKHtcbiAgICAgICAgICAgICAgdHlwZTogJ3RkJyxcbiAgICAgICAgICAgICAgY2hpbGRyZW46IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICB0ZXh0OiAnJ1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgVHJhbnNmb3Jtcy5pbnNlcnROb2RlcyhlZGl0b3IsIFtuZXdUcl0sIHsgYXQ6IHRyUGF0aCB9KTtcbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgY29uc3QgcmVtb3ZlUm93ID0gKCkgPT4ge1xuICAgICAgICBjb25zdCBbdEJvZHlOb2RlLCB0Qm9keVBhdGhdID0gZ2V0QW5jZXN0b3JCeVR5cGUoZWRpdG9yLCAndGJvZHknKTtcblxuICAgICAgICBsb2coJ1tyZW1vdmVSb3ddJyk7XG5cbiAgICAgICAgaWYgKHRCb2R5UGF0aCkge1xuICAgICAgICAgIGlmICh0Qm9keU5vZGUuY2hpbGRyZW4ubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgY29uc3QgWywgdHJQYXRoXSA9IGdldEFuY2VzdG9yQnlUeXBlKGVkaXRvciwgJ3RyJyk7XG5cbiAgICAgICAgICAgIGxvZygnW3JlbW92ZVJvd10nKTtcblxuICAgICAgICAgICAgaWYgKHRyUGF0aCkge1xuICAgICAgICAgICAgICBUcmFuc2Zvcm1zLnJlbW92ZU5vZGVzKGVkaXRvciwgeyBhdDogdHJQYXRoIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgY29uc3QgYWRkQ29sdW1uID0gKCkgPT4ge1xuICAgICAgICBjb25zdCBbdEJvZHlOb2RlLCB0Qm9keVBhdGhdID0gZ2V0QW5jZXN0b3JCeVR5cGUoZWRpdG9yLCAndGJvZHknKTtcblxuICAgICAgICBsb2coJ1thZGRDb2x1bW5dJyk7XG5cbiAgICAgICAgaWYgKHRCb2R5Tm9kZSkge1xuICAgICAgICAgIGNvbnN0IGVtcHR5VGQgPSB7XG4gICAgICAgICAgICB0eXBlOiAndGQnLFxuICAgICAgICAgICAgY2hpbGRyZW46IFt7IHRleHQ6ICcnIH1dXG4gICAgICAgICAgfTtcbiAgICAgICAgICBjb25zdCB0ckVsZW1lbnRzID0gRWRpdG9yLm5vZGVzKGVkaXRvciwge1xuICAgICAgICAgICAgYXQ6IHRCb2R5UGF0aCwgLy8gUGF0aCBvZiBFZGl0b3JcbiAgICAgICAgICAgIG1hdGNoOiBub2RlID0+ICd0cicgPT09IG5vZGUudHlwZVxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgZm9yIChjb25zdCBbdHJOb2RlLCBub2RlUGF0aF0gb2YgdHJFbGVtZW50cykge1xuICAgICAgICAgICAgVHJhbnNmb3Jtcy5pbnNlcnROb2RlcyhlZGl0b3IsIFtlbXB0eVRkXSwge1xuICAgICAgICAgICAgICBhdDogWy4uLm5vZGVQYXRoLCB0ck5vZGUuY2hpbGRyZW4ubGVuZ3RoXVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBjb25zdCByZW1vdmVDb2x1bW4gPSAoKSA9PiB7XG4gICAgICAgIGNvbnN0IFt0Qm9keU5vZGUsIHRCb2R5UGF0aF0gPSBnZXRBbmNlc3RvckJ5VHlwZShlZGl0b3IsICd0Ym9keScpO1xuXG4gICAgICAgIGxvZygnW2FkZENvbHVtbl0nKTtcblxuICAgICAgICBpZiAodEJvZHlOb2RlKSB7XG4gICAgICAgICAgY29uc3QgY3VycmVudFBhdGggPSBFZGl0b3IucGF0aChlZGl0b3IsIGVkaXRvci5zZWxlY3Rpb24pO1xuICAgICAgICAgIGNvbnN0IGNvbHVtbkluZGV4ID0gY3VycmVudFBhdGhbY3VycmVudFBhdGgubGVuZ3RoIC0gMl07XG4gICAgICAgICAgY29uc3QgdHJFbGVtZW50cyA9IEVkaXRvci5ub2RlcyhlZGl0b3IsIHtcbiAgICAgICAgICAgIGF0OiB0Qm9keVBhdGgsIC8vIFBhdGggb2YgRWRpdG9yXG4gICAgICAgICAgICBtYXRjaDogbm9kZSA9PiAndHInID09PSBub2RlLnR5cGVcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIGZvciAoY29uc3QgW3RyTm9kZSwgbm9kZVBhdGhdIG9mIHRyRWxlbWVudHMpIHtcbiAgICAgICAgICAgIGlmICh0ck5vZGUuY2hpbGRyZW4ubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICBUcmFuc2Zvcm1zLnJlbW92ZU5vZGVzKGVkaXRvciwgeyBhdDogWy4uLm5vZGVQYXRoLCBjb2x1bW5JbmRleF0gfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBjb25zdCByZW1vdmVUYWJsZSA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgW3RhYmxlTm9kZSwgdGFibGVQYXRoXSA9IGdldEFuY2VzdG9yQnlUeXBlKGVkaXRvciwgJ3RhYmxlJyk7XG5cbiAgICAgICAgZWRpdG9yLmFwcGx5KHtcbiAgICAgICAgICB0eXBlOiAncmVtb3ZlX25vZGUnLFxuICAgICAgICAgIHBhdGg6IHRhYmxlUGF0aCxcbiAgICAgICAgICBub2RlOiB0YWJsZU5vZGVcbiAgICAgICAgfSk7XG4gICAgICB9O1xuXG4gICAgICBjb25zdCB0b2dnbGVCb3JkZXIgPSAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgZGF0YSB9ID0gdGFibGVCbG9jaztcbiAgICAgICAgY29uc3QgdXBkYXRlID0ge1xuICAgICAgICAgIC4uLmRhdGEsXG4gICAgICAgICAgYm9yZGVyOiBoYXNCb3JkZXIoKSA/ICcwJyA6ICcxJ1xuICAgICAgICB9O1xuICAgICAgICBjb25zdCBbLCB0YWJsZVBhdGhdID0gZ2V0QW5jZXN0b3JCeVR5cGUoZWRpdG9yLCAndGFibGUnKTtcblxuICAgICAgICBsb2coJ1t0b2dnbGVCb3JkZXJdIHVwZGF0ZTogJywgdXBkYXRlKTtcblxuICAgICAgICBlZGl0b3IuYXBwbHkoe1xuICAgICAgICAgIHR5cGU6ICdzZXRfbm9kZScsXG4gICAgICAgICAgcGF0aDogdGFibGVQYXRoLFxuICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgIGRhdGE6IG5vZGUuZGF0YVxuICAgICAgICAgIH0sXG4gICAgICAgICAgbmV3UHJvcGVydGllczogeyBkYXRhOiB1cGRhdGUgfVxuICAgICAgICB9KTtcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IG9uRG9uZSA9ICgpID0+IHtcbiAgICAgICAgbG9nKCdbb25Eb25lXSBjYWxsIG9uVG9vbGJhckRvbmUuLi4nKTtcbiAgICAgICAgb25Ub29sYmFyRG9uZShudWxsLCB0cnVlKTtcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IFRiID0gKCkgPT4gKFxuICAgICAgICA8VGFibGVUb29sYmFyXG4gICAgICAgICAgZWRpdG9yPXtlZGl0b3J9XG4gICAgICAgICAgcGx1Z2lucz17dG9vbGJhclBsdWdpbnN9XG4gICAgICAgICAgb25DaGFuZ2U9e2MgPT4gb25Ub29sYmFyRG9uZShjLCBmYWxzZSl9XG4gICAgICAgICAgb25BZGRSb3c9e2FkZFJvd31cbiAgICAgICAgICBvblJlbW92ZVJvdz17cmVtb3ZlUm93fVxuICAgICAgICAgIG9uQWRkQ29sdW1uPXthZGRDb2x1bW59XG4gICAgICAgICAgb25SZW1vdmVDb2x1bW49e3JlbW92ZUNvbHVtbn1cbiAgICAgICAgICBvblJlbW92ZVRhYmxlPXtyZW1vdmVUYWJsZX1cbiAgICAgICAgICBoYXNCb3JkZXI9e2hhc0JvcmRlcigpfVxuICAgICAgICAgIG9uVG9nZ2xlQm9yZGVyPXt0b2dnbGVCb3JkZXJ9XG4gICAgICAgICAgb25Eb25lPXtvbkRvbmV9XG4gICAgICAgIC8+XG4gICAgICApO1xuICAgICAgcmV0dXJuIFRiO1xuICAgIH1cbiAgfTtcblxuICBjb3JlLnN1cHBvcnRzID0gKG5vZGUsIGVkaXRvcikgPT4gVEFCTEVfVFlQRVMuaW5jbHVkZXMobm9kZS50eXBlKTtcblxuICBjb25zdCBOb2RlID0gcHJvcHMgPT4ge1xuICAgIHN3aXRjaCAocHJvcHMubm9kZS50eXBlKSB7XG4gICAgICBjYXNlICd0YWJsZSc6XG4gICAgICAgIHJldHVybiA8VGFibGUgey4uLnByb3BzfSBvbkZvY3VzPXtvcHRzLm9uRm9jdXN9IG9uQmx1cj17b3B0cy5vbkJsdXJ9IC8+O1xuICAgICAgY2FzZSAndGJvZHknOlxuICAgICAgICByZXR1cm4gPFRhYmxlQm9keSB7Li4ucHJvcHN9IG9uRm9jdXM9e29wdHMub25Gb2N1c30gb25CbHVyPXtvcHRzLm9uQmx1cn0gLz47XG4gICAgICBjYXNlICd0cic6XG4gICAgICAgIHJldHVybiA8VGFibGVSb3cgey4uLnByb3BzfSAvPjtcbiAgICAgIGNhc2UgJ3RkJzpcbiAgICAgICAgcmV0dXJuIDxUYWJsZUNlbGwgey4uLnByb3BzfSBvbkZvY3VzPXtvcHRzLm9uRm9jdXN9IG9uQmx1cj17b3B0cy5vbkJsdXJ9IC8+O1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9O1xuICBOb2RlLnByb3BUeXBlcyA9IHtcbiAgICBub2RlOiBQcm9wVHlwZXMub2JqZWN0XG4gIH07XG5cbiAgY29yZS5yZW5kZXJOb2RlID0gTm9kZTtcblxuICByZXR1cm4gY29yZTtcbn07XG5cbmV4cG9ydCBjb25zdCBwYXJzZVN0eWxlU3RyaW5nID0gcyA9PiB7XG4gIGNvbnN0IHJlZ2V4ID0gLyhbXFx3LV0qKVxccyo6XFxzKihbXjtdKikvZztcbiAgbGV0IG1hdGNoO1xuICBjb25zdCByZXN1bHQgPSB7fTtcbiAgd2hpbGUgKChtYXRjaCA9IHJlZ2V4LmV4ZWMocykpKSB7XG4gICAgcmVzdWx0W21hdGNoWzFdXSA9IG1hdGNoWzJdLnRyaW0oKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuZXhwb3J0IGNvbnN0IHJlYWN0QXR0cmlidXRlcyA9IG8gPT4gdG9TdHlsZU9iamVjdChvLCB7IGNhbWVsaXplOiB0cnVlLCBhZGRVbml0czogZmFsc2UgfSk7XG5cbmNvbnN0IGF0dHJpYnV0ZXNUb01hcCA9IGVsID0+IChhY2MsIGF0dHJpYnV0ZSkgPT4ge1xuICBjb25zdCB2YWx1ZSA9IGVsLmdldEF0dHJpYnV0ZShhdHRyaWJ1dGUpO1xuICBpZiAodmFsdWUpIHtcbiAgICBpZiAoYXR0cmlidXRlID09PSAnc3R5bGUnKSB7XG4gICAgICBjb25zdCBzdHlsZVN0cmluZyA9IGVsLmdldEF0dHJpYnV0ZShhdHRyaWJ1dGUpO1xuICAgICAgY29uc3QgcmVhY3RTdHlsZU9iamVjdCA9IHJlYWN0QXR0cmlidXRlcyhwYXJzZVN0eWxlU3RyaW5nKHN0eWxlU3RyaW5nKSk7XG4gICAgICBhY2NbJ3N0eWxlJ10gPSByZWFjdFN0eWxlT2JqZWN0O1xuICAgIH0gZWxzZSB7XG4gICAgICBhY2NbYXR0cmlidXRlXSA9IGVsLmdldEF0dHJpYnV0ZShhdHRyaWJ1dGUpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gYWNjO1xufTtcblxuY29uc3QgZGF0YVRvQXR0cmlidXRlcyA9IGRhdGEgPT4ge1xuICByZXR1cm4gcmVkdWNlKFxuICAgIGRhdGEsXG4gICAgKGFjYywgdiwgbmFtZSkgPT4ge1xuICAgICAgaWYgKHYpIHtcbiAgICAgICAgYWNjW2NvbnZlcnQobmFtZSldID0gdjtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSxcbiAgICB7fVxuICApO1xufTtcblxuY29uc3QgYXR0cmlidXRlcyA9IFsnYm9yZGVyJywgJ2NlbGxwYWRkaW5nJywgJ2NlbGxzcGFjaW5nJywgJ2NsYXNzJywgJ3N0eWxlJ107XG5cbmNvbnN0IGNlbGxBdHRyaWJ1dGVzID0gWydjb2xzcGFuJywgJ3Jvd3NwYW4nLCAnY2xhc3MnLCAnc3R5bGUnXTtcblxuZXhwb3J0IGNvbnN0IHNlcmlhbGl6YXRpb24gPSB7XG4gIGRlc2VyaWFsaXplKGVsLCBuZXh0KSB7XG4gICAgY29uc3QgdGFnID0gZWwudGFnTmFtZS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgc3dpdGNoICh0YWcpIHtcbiAgICAgIGNhc2UgJ3RhYmxlJzoge1xuICAgICAgICBjb25zdCBjaGlsZHJlbiA9XG4gICAgICAgICAgZWwuY2hpbGRyZW4ubGVuZ3RoID09PSAxICYmIGVsLmNoaWxkcmVuWzBdLnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ3Rib2R5J1xuICAgICAgICAgICAgPyBlbC5jaGlsZHJlblswXS5jaGlsZHJlblxuICAgICAgICAgICAgOiBlbC5jaGlsZHJlbjtcbiAgICAgICAgY29uc3QgYyA9IEFycmF5LmZyb20oY2hpbGRyZW4pO1xuXG4gICAgICAgIHJldHVybiBqc3goXG4gICAgICAgICAgJ2VsZW1lbnQnLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHR5cGU6ICd0YWJsZScsXG4gICAgICAgICAgICBkYXRhOiBhdHRyaWJ1dGVzLnJlZHVjZShhdHRyaWJ1dGVzVG9NYXAoZWwpLCB7fSlcbiAgICAgICAgICB9LFxuICAgICAgICAgIG5leHQoYylcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGNhc2UgJ3Rib2R5Jzoge1xuICAgICAgICByZXR1cm4ganN4KFxuICAgICAgICAgICdlbGVtZW50JyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0eXBlOiAndGJvZHknXG4gICAgICAgICAgfSxcbiAgICAgICAgICBuZXh0KGVsLmNoaWxkTm9kZXMpXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBjYXNlICd0aCc6IHtcbiAgICAgICAgcmV0dXJuIGpzeChcbiAgICAgICAgICAnZWxlbWVudCcsXG4gICAgICAgICAge1xuICAgICAgICAgICAgdHlwZTogJ3RoJyxcbiAgICAgICAgICAgIGRhdGE6IGNlbGxBdHRyaWJ1dGVzLnJlZHVjZShhdHRyaWJ1dGVzVG9NYXAoZWwpLCB7IGhlYWRlcjogdHJ1ZSB9KVxuICAgICAgICAgIH0sXG4gICAgICAgICAgbmV4dChlbC5jaGlsZE5vZGVzKVxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgY2FzZSAndHInOiB7XG4gICAgICAgIHJldHVybiBqc3goXG4gICAgICAgICAgJ2VsZW1lbnQnLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHR5cGU6ICd0cidcbiAgICAgICAgICB9LFxuICAgICAgICAgIG5leHQoQXJyYXkuZnJvbShlbC5jaGlsZHJlbikpXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBjYXNlICd0ZCc6IHtcbiAgICAgICAgcmV0dXJuIGpzeChcbiAgICAgICAgICAnZWxlbWVudCcsXG4gICAgICAgICAge1xuICAgICAgICAgICAgdHlwZTogJ3RkJyxcbiAgICAgICAgICAgIGRhdGE6IGNlbGxBdHRyaWJ1dGVzLnJlZHVjZShhdHRyaWJ1dGVzVG9NYXAoZWwpLCB7IGhlYWRlcjogdHJ1ZSB9KVxuICAgICAgICAgIH0sXG4gICAgICAgICAgbmV4dChlbC5jaGlsZE5vZGVzKVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgc2VyaWFsaXplKG9iamVjdCwgY2hpbGRyZW4pIHtcbiAgICBzd2l0Y2ggKG9iamVjdC50eXBlKSB7XG4gICAgICBjYXNlICd0YWJsZSc6IHtcbiAgICAgICAgY29uc3QgYXR0cmlidXRlcyA9IGRhdGFUb0F0dHJpYnV0ZXMob2JqZWN0LmRhdGEpO1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIDx0YWJsZSB7Li4uYXR0cmlidXRlc30+XG4gICAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgICAgPC90YWJsZT5cbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGNhc2UgJ3Rib2R5Jzoge1xuICAgICAgICByZXR1cm4gPHRib2R5PntjaGlsZHJlbn08L3Rib2R5PjtcbiAgICAgIH1cbiAgICAgIGNhc2UgJ3RyJzoge1xuICAgICAgICByZXR1cm4gPHRyPntjaGlsZHJlbn08L3RyPjtcbiAgICAgIH1cbiAgICAgIGNhc2UgJ3RkJzoge1xuICAgICAgICBjb25zdCBhdHRyaWJ1dGVzID0gZGF0YVRvQXR0cmlidXRlcyhvYmplY3QuZGF0YSk7XG4gICAgICAgIHJldHVybiA8dGQgey4uLmF0dHJpYnV0ZXN9PntjaGlsZHJlbn08L3RkPjtcbiAgICAgIH1cbiAgICAgIGNhc2UgJ3RoJzoge1xuICAgICAgICBjb25zdCBhdHRyaWJ1dGVzID0gZGF0YVRvQXR0cmlidXRlcyhvYmplY3QuZGF0YSk7XG4gICAgICAgIHJldHVybiA8dGggey4uLmF0dHJpYnV0ZXN9PntjaGlsZHJlbn08L3RoPjtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7Ozs7Ozs7OztBQUVBLElBQU1BLEdBQUcsR0FBRyxJQUFBQyxpQkFBQSxF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
|
|
743
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJsb2ciLCJkZWJ1ZyIsIlRhYmxlIiwiUmVhY3QiLCJmb3J3YXJkUmVmIiwicHJvcHMiLCJub2RlQXR0cmlidXRlcyIsIm9taXQiLCJkYXRhVG9BdHRyaWJ1dGVzIiwiZWxlbWVudCIsImRhdGEiLCJhdHRycyIsImF0dHJpYnV0ZXMiLCJvbkZvY3VzIiwib25CbHVyIiwiY2hpbGRyZW4iLCJwcm9wVHlwZXMiLCJQcm9wVHlwZXMiLCJvYmplY3QiLCJmdW5jIiwibm9kZSIsInNoYXBlIiwidHlwZSIsInN0cmluZyIsImFycmF5Iiwib25lT2ZUeXBlIiwiYXJyYXlPZiIsImlzUmVxdWlyZWQiLCJUYWJsZVJvdyIsIlRhYmxlQm9keSIsInVzZUNlbGxTdHlsZXMiLCJtYWtlU3R5bGVzIiwidGQiLCJtaW5XaWR0aCIsIlRhYmxlQ2VsbCIsImNsYXNzZXMiLCJUYWciLCJnZXQiLCJoZWFkZXIiLCJnZXRBbmNlc3RvckJ5VHlwZSIsImVkaXRvciIsImFuY2VzdG9ycyIsIlNsYXRlTm9kZSIsIkVkaXRvciIsInBhdGgiLCJzZWxlY3Rpb24iLCJyZXZlcnNlIiwiYW5jZXN0b3IiLCJhbmNlc3RvclBhdGgiLCJtb3ZlVG9CZWdpbm5pbmdPZlRhYmxlIiwidGFibGVCbG9jayIsInRhYmxlUGF0aCIsImZpcnN0VGRQYXRoIiwiZGVzY2VuZGFudHMiLCJkZXNjZW5kYW50IiwiZGVzY2VuZGFudFBhdGgiLCJUcmFuc2Zvcm1zIiwic2VsZWN0IiwiVEFCTEVfVFlQRVMiLCJvcHRzIiwidG9vbGJhclBsdWdpbnMiLCJjb3JlIiwidXRpbHMiLCJydWxlcyIsIm5vcm1hbGl6ZU5vZGUiLCJlbnRyeSIsInRhYmxlTm9kZSIsInRhYmxlUGFyZW50Iiwic2xpY2UiLCJTbGF0ZUVsZW1lbnQiLCJpc0VsZW1lbnQiLCJlbXB0eUJsb2NrIiwidGV4dCIsInRhYmxlSW5kZXgiLCJiZWZvcmVUYWJsZVBhdGgiLCJhcHBseSIsImNvbnRpbnVlTm9ybWFsaXphdGlvbiIsImxlbmd0aCIsImFmdGVyVGFibGVQYXRoIiwidEJvZHlOb2RlIiwid3JhcE5vZGVzIiwiYXQiLCJhbmNob3IiLCJvZmZzZXQiLCJmb2N1cyIsImNyZWF0ZVRhYmxlIiwicm93IiwiY29sdW1ucyIsInRhYmxlUm93cyIsInJvd0xlbmd0aCIsIkFycmF5IiwiZmlsbCIsImNvbHVtbnNMZW5ndGgiLCJpIiwidGFibGVSb3ciLCJqIiwicHVzaCIsImdldFRhYmxlQmxvY2siLCJpc1NlbGVjdGlvbkluVGFibGUiLCJjcmVhdGVUYWJsZVdpdGhPcHRpb25zIiwiZXh0cmEiLCJjcmVhdGVkVGFibGUiLCJuZXdUYWJsZSIsInRvb2xiYXIiLCJpY29uIiwib25DbGljayIsImJvcmRlciIsImluc2VydE5vZGUiLCJjdXN0b21Ub29sYmFyIiwibm9kZVBhdGgiLCJvblRvb2xiYXJEb25lIiwiaGFzQm9yZGVyIiwiYWRkUm93IiwidHJOb2RlIiwidHJQYXRoIiwibmV3VHIiLCJpbnNlcnROb2RlcyIsInJlbW92ZVJvdyIsInRCb2R5UGF0aCIsInJlbW92ZU5vZGVzIiwiYWRkQ29sdW1uIiwiZW1wdHlUZCIsInRyRWxlbWVudHMiLCJub2RlcyIsIm1hdGNoIiwicmVtb3ZlQ29sdW1uIiwiY3VycmVudFBhdGgiLCJjb2x1bW5JbmRleCIsInJlbW92ZVRhYmxlIiwidG9nZ2xlQm9yZGVyIiwidXBkYXRlIiwicHJvcGVydGllcyIsIm5ld1Byb3BlcnRpZXMiLCJvbkRvbmUiLCJUYiIsImMiLCJzdXBwb3J0cyIsImluY2x1ZGVzIiwiTm9kZSIsInJlbmRlck5vZGUiLCJwYXJzZVN0eWxlU3RyaW5nIiwicyIsInJlZ2V4IiwicmVzdWx0IiwiZXhlYyIsInRyaW0iLCJyZWFjdEF0dHJpYnV0ZXMiLCJvIiwidG9TdHlsZU9iamVjdCIsImNhbWVsaXplIiwiYWRkVW5pdHMiLCJhdHRyaWJ1dGVzVG9NYXAiLCJlbCIsImFjYyIsImF0dHJpYnV0ZSIsInZhbHVlIiwiZ2V0QXR0cmlidXRlIiwic3R5bGVTdHJpbmciLCJyZWFjdFN0eWxlT2JqZWN0IiwicmVkdWNlIiwidiIsIm5hbWUiLCJjb252ZXJ0IiwiY2VsbEF0dHJpYnV0ZXMiLCJzZXJpYWxpemF0aW9uIiwiZGVzZXJpYWxpemUiLCJuZXh0IiwidGFnIiwidGFnTmFtZSIsInRvTG93ZXJDYXNlIiwiZnJvbSIsImpzeCIsImNoaWxkTm9kZXMiLCJzZXJpYWxpemUiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcGx1Z2lucy90YWJsZS9pbmRleC5qc3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IE5vZGUgYXMgU2xhdGVOb2RlLCBFbGVtZW50IGFzIFNsYXRlRWxlbWVudCwgRWRpdG9yLCBUcmFuc2Zvcm1zIH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCBHcmlkT24gZnJvbSAnQG1hdGVyaWFsLXVpL2ljb25zL0dyaWRPbic7XG5pbXBvcnQgVGFibGVUb29sYmFyIGZyb20gJy4vdGFibGUtdG9vbGJhcic7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IHsganN4IH0gZnJvbSAnc2xhdGUtaHlwZXJzY3JpcHQnO1xuaW1wb3J0IHsgbWFrZVN0eWxlcyB9IGZyb20gJ0BtYXRlcmlhbC11aS9zdHlsZXMnO1xuaW1wb3J0IGNvbnZlcnQgZnJvbSAncmVhY3QtYXR0ci1jb252ZXJ0ZXInO1xuaW1wb3J0IHsgb2JqZWN0IGFzIHRvU3R5bGVPYmplY3QgfSBmcm9tICd0by1zdHlsZSc7XG5pbXBvcnQgZ2V0IGZyb20gJ2xvZGFzaC9nZXQnO1xuaW1wb3J0IG9taXQgZnJvbSAnbG9kYXNoL29taXQnO1xuaW1wb3J0IHJlZHVjZSBmcm9tICdsb2Rhc2gvcmVkdWNlJztcblxuY29uc3QgbG9nID0gZGVidWcoJ0BwaWUtbGliOmVkaXRhYmxlLWh0bWw6cGx1Z2luczp0YWJsZScpO1xuXG5jb25zdCBUYWJsZSA9IFJlYWN0LmZvcndhcmRSZWYocHJvcHMgPT4ge1xuICBjb25zdCBub2RlQXR0cmlidXRlcyA9IG9taXQoZGF0YVRvQXR0cmlidXRlcyhwcm9wcy5lbGVtZW50LmRhdGEpLCAnbmV3VGFibGUnKTtcbiAgY29uc3QgYXR0cnMgPSBvbWl0KHByb3BzLmF0dHJpYnV0ZXMsICduZXdUYWJsZScpO1xuXG4gIHJldHVybiAoXG4gICAgPHRhYmxlIHsuLi5hdHRyc30gey4uLm5vZGVBdHRyaWJ1dGVzfSBvbkZvY3VzPXtwcm9wcy5vbkZvY3VzfSBvbkJsdXI9e3Byb3BzLm9uQmx1cn0+XG4gICAgICB7cHJvcHMuY2hpbGRyZW59XG4gICAgPC90YWJsZT5cbiAgKTtcbn0pO1xuXG5UYWJsZS5wcm9wVHlwZXMgPSB7XG4gIGF0dHJpYnV0ZXM6IFByb3BUeXBlcy5vYmplY3QsXG4gIGVsZW1lbnQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIG9uRm9jdXM6IFByb3BUeXBlcy5mdW5jLFxuICBvbkJsdXI6IFByb3BUeXBlcy5mdW5jLFxuICBub2RlOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIHR5cGU6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgY2hpbGRyZW46IFByb3BUeXBlcy5hcnJheSxcbiAgICBkYXRhOiBQcm9wVHlwZXMub2JqZWN0XG4gIH0pLFxuICBjaGlsZHJlbjogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLm5vZGUpLCBQcm9wVHlwZXMubm9kZV0pLmlzUmVxdWlyZWRcbn07XG5cbmNvbnN0IFRhYmxlUm93ID0gUmVhY3QuZm9yd2FyZFJlZihwcm9wcyA9PiA8dHIgey4uLnByb3BzLmF0dHJpYnV0ZXN9Pntwcm9wcy5jaGlsZHJlbn08L3RyPik7XG5cblRhYmxlUm93LnByb3BUeXBlcyA9IHtcbiAgYXR0cmlidXRlczogUHJvcFR5cGVzLm9iamVjdCxcbiAgb25Gb2N1czogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uQmx1cjogUHJvcFR5cGVzLmZ1bmMsXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMubm9kZSksIFByb3BUeXBlcy5ub2RlXSkuaXNSZXF1aXJlZFxufTtcblxuY29uc3QgVGFibGVCb2R5ID0gUmVhY3QuZm9yd2FyZFJlZihwcm9wcyA9PiA8dGJvZHkgey4uLnByb3BzLmF0dHJpYnV0ZXN9Pntwcm9wcy5jaGlsZHJlbn08L3Rib2R5Pik7XG5cblRhYmxlQm9keS5wcm9wVHlwZXMgPSB7XG4gIGF0dHJpYnV0ZXM6IFByb3BUeXBlcy5vYmplY3QsXG4gIG9uRm9jdXM6IFByb3BUeXBlcy5mdW5jLFxuICBvbkJsdXI6IFByb3BUeXBlcy5mdW5jLFxuICBjaGlsZHJlbjogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLm5vZGUpLCBQcm9wVHlwZXMubm9kZV0pLmlzUmVxdWlyZWRcbn07XG5cbmNvbnN0IHVzZUNlbGxTdHlsZXMgPSBtYWtlU3R5bGVzKHtcbiAgdGQ6IHtcbiAgICBtaW5XaWR0aDogJzI1cHgnXG4gIH1cbn0pO1xuXG5jb25zdCBUYWJsZUNlbGwgPSBSZWFjdC5mb3J3YXJkUmVmKHByb3BzID0+IHtcbiAgY29uc3QgY2xhc3NlcyA9IHVzZUNlbGxTdHlsZXMoKTtcbiAgY29uc3QgeyBub2RlIH0gPSBwcm9wcztcbiAgY29uc3QgVGFnID0gZ2V0KG5vZGUsICdkYXRhLmhlYWRlcicpID8gJ3RoJyA6ICd0ZCc7XG5cbiAgY29uc3Qgbm9kZUF0dHJpYnV0ZXMgPSBkYXRhVG9BdHRyaWJ1dGVzKHByb3BzLmVsZW1lbnQuZGF0YSk7XG4gIGRlbGV0ZSBub2RlQXR0cmlidXRlcy5oZWFkZXI7XG5cbiAgcmV0dXJuIChcbiAgICA8VGFnXG4gICAgICB7Li4ucHJvcHMuYXR0cmlidXRlc31cbiAgICAgIHsuLi5ub2RlQXR0cmlidXRlc31cbiAgICAgIGNvbFNwYW49e2dldChub2RlLCAnZGF0YS5jb2xzcGFuJyl9XG4gICAgICBjbGFzc05hbWU9e2NsYXNzZXNbVGFnXX1cbiAgICAgIG9uRm9jdXM9e3Byb3BzLm9uRm9jdXN9XG4gICAgICBvbkJsdXI9e3Byb3BzLm9uQmx1cn1cbiAgICA+XG4gICAgICB7cHJvcHMuY2hpbGRyZW59XG4gICAgPC9UYWc+XG4gICk7XG59KTtcblxuVGFibGVDZWxsLnByb3BUeXBlcyA9IHtcbiAgbm9kZTogUHJvcFR5cGVzLm9iamVjdCxcbiAgZWxlbWVudDogUHJvcFR5cGVzLm9iamVjdCxcbiAgYXR0cmlidXRlczogUHJvcFR5cGVzLm9iamVjdCxcbiAgb25Gb2N1czogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uQmx1cjogUHJvcFR5cGVzLmZ1bmMsXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMubm9kZSksIFByb3BUeXBlcy5ub2RlXSkuaXNSZXF1aXJlZFxufTtcblxuY29uc3QgZ2V0QW5jZXN0b3JCeVR5cGUgPSAoZWRpdG9yLCB0eXBlKSA9PiB7XG4gIGlmICghZWRpdG9yIHx8ICF0eXBlKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBhbmNlc3RvcnMgPSBTbGF0ZU5vZGUuYW5jZXN0b3JzKGVkaXRvciwgRWRpdG9yLnBhdGgoZWRpdG9yLCBlZGl0b3Iuc2VsZWN0aW9uKSwge1xuICAgIHJldmVyc2U6IHRydWVcbiAgfSk7XG5cbiAgZm9yIChjb25zdCBbYW5jZXN0b3IsIGFuY2VzdG9yUGF0aF0gb2YgYW5jZXN0b3JzKSB7XG4gICAgaWYgKGFuY2VzdG9yLnR5cGUgPT09IHR5cGUpIHtcbiAgICAgIHJldHVybiBbYW5jZXN0b3IsIGFuY2VzdG9yUGF0aF07XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59O1xuXG5jb25zdCBtb3ZlVG9CZWdpbm5pbmdPZlRhYmxlID0gZWRpdG9yID0+IHtcbiAgY29uc3QgW3RhYmxlQmxvY2ssIHRhYmxlUGF0aF0gPSBnZXRBbmNlc3RvckJ5VHlwZShlZGl0b3IsICd0YWJsZScpO1xuICBsZXQgZmlyc3RUZFBhdGg7XG5cbiAgZm9yIChjb25zdCBbZGVzY2VuZGFudCwgZGVzY2VuZGFudFBhdGhdIG9mIFNsYXRlTm9kZS5kZXNjZW5kYW50cyh0YWJsZUJsb2NrLCB7IHJldmVyc2U6IHRydWUgfSkpIHtcbiAgICBpZiAoZGVzY2VuZGFudC50eXBlID09PSAndGQnKSB7XG4gICAgICBmaXJzdFRkUGF0aCA9IGRlc2NlbmRhbnRQYXRoO1xuICAgIH1cbiAgfVxuXG4gIFRyYW5zZm9ybXMuc2VsZWN0KGVkaXRvciwgWy4uLnRhYmxlUGF0aCwgLi4uZmlyc3RUZFBhdGhdKTtcbn07XG5cbmNvbnN0IFRBQkxFX1RZUEVTID0gWyd0Ym9keScsICd0cicsICd0ZCcsICd0YWJsZSddO1xuXG5leHBvcnQgZGVmYXVsdCAob3B0cywgdG9vbGJhclBsdWdpbnMgLyogOiAge3Rvb2xiYXI6IHt9fVtdICovKSA9PiB7XG4gIGNvbnN0IGNvcmUgPSB7XG4gICAgdXRpbHM6IHt9LFxuICAgIHJ1bGVzOiBlZGl0b3IgPT4ge1xuICAgICAgY29uc3QgeyBub3JtYWxpemVOb2RlIH0gPSBlZGl0b3I7XG5cbiAgICAgIGVkaXRvci5ub3JtYWxpemVOb2RlID0gZW50cnkgPT4ge1xuICAgICAgICBjb25zdCBbdGFibGVOb2RlLCB0YWJsZVBhdGhdID0gZW50cnk7XG4gICAgICAgIGNvbnN0IHRhYmxlUGFyZW50ID0gU2xhdGVOb2RlLmdldChlZGl0b3IsIHRhYmxlUGF0aC5zbGljZSgwLCAtMSkpO1xuXG4gICAgICAgIC8vIElmIHRoZSBlbGVtZW50IGlzIGEgcGFyYWdyYXBoLCBlbnN1cmUgaXRzIGNoaWxkcmVuIGFyZSB2YWxpZC5cbiAgICAgICAgaWYgKFNsYXRlRWxlbWVudC5pc0VsZW1lbnQodGFibGVOb2RlKSAmJiB0YWJsZU5vZGUudHlwZSA9PT0gJ3RhYmxlJykge1xuICAgICAgICAgIGNvbnN0IGVtcHR5QmxvY2sgPSB7XG4gICAgICAgICAgICB0eXBlOiAncGFyYWdyYXBoJyxcbiAgICAgICAgICAgIGNoaWxkcmVuOiBbeyB0ZXh0OiAnJyB9XVxuICAgICAgICAgIH07XG4gICAgICAgICAgY29uc3QgdGFibGVJbmRleCA9IHRhYmxlUGF0aC5zbGljZSgtMSlbMF07XG5cbiAgICAgICAgICAvLyBpZiB0YWJsZSBpcyB0aGUgZmlyc3QgZWxlbWVudCwgd2UgbmVlZCB0byBhZGQgYSBzcGFjZSBiZWZvcmVcbiAgICAgICAgICAvLyBzbyB1c2VycyBjYW4gZm9jdXMgYmVmb3JlIHRoZSB0YWJsZVxuICAgICAgICAgIGlmICh0YWJsZUluZGV4ID09PSAwKSB7XG4gICAgICAgICAgICBjb25zdCBiZWZvcmVUYWJsZVBhdGggPSBbLi4udGFibGVQYXRoLnNsaWNlKDAsIC0xKSwgMF07XG5cbiAgICAgICAgICAgIGVkaXRvci5hcHBseSh7XG4gICAgICAgICAgICAgIHR5cGU6ICdpbnNlcnRfbm9kZScsXG4gICAgICAgICAgICAgIHBhdGg6IGJlZm9yZVRhYmxlUGF0aCxcbiAgICAgICAgICAgICAgbm9kZTogZW1wdHlCbG9ja1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBlZGl0b3IuY29udGludWVOb3JtYWxpemF0aW9uKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gaWYgdGFibGUgaXMgdGhlIGxhc3QgZWxlbWVudCwgd2UgYWRkIGVsZW1lbnQgYWZ0ZXIgaXRcbiAgICAgICAgICBpZiAodGFibGVQYXJlbnQuY2hpbGRyZW4ubGVuZ3RoIC0gMSA9PT0gdGFibGVJbmRleCkge1xuICAgICAgICAgICAgY29uc3QgYWZ0ZXJUYWJsZVBhdGggPSBbLi4udGFibGVQYXRoLnNsaWNlKDAsIC0xKSwgdGFibGVJbmRleCArIDFdO1xuXG4gICAgICAgICAgICBlZGl0b3IuYXBwbHkoe1xuICAgICAgICAgICAgICB0eXBlOiAnaW5zZXJ0X25vZGUnLFxuICAgICAgICAgICAgICBwYXRoOiBhZnRlclRhYmxlUGF0aCxcbiAgICAgICAgICAgICAgbm9kZTogZW1wdHlCbG9ja1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBlZGl0b3IuY29udGludWVOb3JtYWxpemF0aW9uKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gaWYgdGFibGUgZG9lcyBub3QgaGF2ZSBhIHRib2R5LCB3ZSBhZGQgaXRcbiAgICAgICAgICBpZiAodGFibGVOb2RlLmNoaWxkcmVuWzBdLnR5cGUgIT09ICd0Ym9keScpIHtcbiAgICAgICAgICAgIGNvbnN0IHRCb2R5Tm9kZSA9IHsgdHlwZTogJ3Rib2R5JywgY2hpbGRyZW46IFtdIH07XG5cbiAgICAgICAgICAgIFRyYW5zZm9ybXMud3JhcE5vZGVzKGVkaXRvciwgdEJvZHlOb2RlLCB7XG4gICAgICAgICAgICAgIGF0OiB7XG4gICAgICAgICAgICAgICAgYW5jaG9yOiB7IHBhdGg6IFsuLi50YWJsZVBhdGgsIDBdLCBvZmZzZXQ6IDAgfSxcbiAgICAgICAgICAgICAgICBmb2N1czogeyBwYXRoOiBbLi4udGFibGVQYXRoLCB0YWJsZU5vZGUuY2hpbGRyZW4ubGVuZ3RoXSwgb2Zmc2V0OiAwIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBlZGl0b3IuY29udGludWVOb3JtYWxpemF0aW9uKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gRmFsbCBiYWNrIHRvIHRoZSBvcmlnaW5hbCBgbm9ybWFsaXplTm9kZWAgdG8gZW5mb3JjZSBvdGhlciBjb25zdHJhaW50cy5cbiAgICAgICAgbm9ybWFsaXplTm9kZShlbnRyeSk7XG4gICAgICB9O1xuXG4gICAgICByZXR1cm4gZWRpdG9yO1xuICAgIH1cbiAgfTtcblxuICBjb3JlLnV0aWxzLmNyZWF0ZVRhYmxlID0gKHJvdyA9IDIsIGNvbHVtbnMgPSAyKSA9PiB7XG4gICAgY29uc3QgdGFibGVSb3dzID0gW107XG4gICAgY29uc3Qgcm93TGVuZ3RoID0gbmV3IEFycmF5KHJvdykuZmlsbCgwKS5sZW5ndGg7XG4gICAgY29uc3QgY29sdW1uc0xlbmd0aCA9IG5ldyBBcnJheShjb2x1bW5zKS5maWxsKDApLmxlbmd0aDtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcm93TGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IHRhYmxlUm93ID0geyB0eXBlOiAndHInLCBjaGlsZHJlbjogW10gfTtcblxuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBjb2x1bW5zTGVuZ3RoOyBqKyspIHtcbiAgICAgICAgdGFibGVSb3cuY2hpbGRyZW4ucHVzaCh7XG4gICAgICAgICAgdHlwZTogJ3RkJyxcbiAgICAgICAgICBjaGlsZHJlbjogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB0ZXh0OiAnJ1xuICAgICAgICAgICAgfVxuICAgICAgICAgIF1cbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHRhYmxlUm93cy5wdXNoKHRhYmxlUm93KTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogJ3RhYmxlJyxcbiAgICAgIGNoaWxkcmVuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiAndGJvZHknLFxuICAgICAgICAgIGNoaWxkcmVuOiB0YWJsZVJvd3NcbiAgICAgICAgfVxuICAgICAgXVxuICAgIH07XG4gIH07XG5cbiAgY29yZS51dGlscy5nZXRUYWJsZUJsb2NrID0gZWRpdG9yID0+IGdldEFuY2VzdG9yQnlUeXBlKGVkaXRvciwgJ3RhYmxlJyk7XG5cbiAgY29yZS51dGlscy5pc1NlbGVjdGlvbkluVGFibGUgPSBlZGl0b3IgPT4gISFjb3JlLnV0aWxzLmdldFRhYmxlQmxvY2soZWRpdG9yKTtcblxuICBjb3JlLnV0aWxzLmNyZWF0ZVRhYmxlV2l0aE9wdGlvbnMgPSAocm93LCBjb2x1bW5zLCBleHRyYSkgPT4ge1xuICAgIGNvbnN0IGNyZWF0ZWRUYWJsZSA9IGNvcmUudXRpbHMuY3JlYXRlVGFibGUocm93LCBjb2x1bW5zKTtcbiAgICBjb25zdCBuZXdUYWJsZSA9IHsgLi4uY3JlYXRlZFRhYmxlLCAuLi5leHRyYSB9O1xuXG4gICAgcmV0dXJuIG5ld1RhYmxlO1xuICB9O1xuXG4gIGNvcmUudG9vbGJhciA9IHtcbiAgICBpY29uOiA8R3JpZE9uIC8+LFxuICAgIG9uQ2xpY2s6IGVkaXRvciA9PiB7XG4gICAgICBsb2coJ2luc2VydCB0YWJsZScpO1xuICAgICAgY29uc3QgbmV3VGFibGUgPSBjb3JlLnV0aWxzLmNyZWF0ZVRhYmxlV2l0aE9wdGlvbnMoMiwgMiwge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgYm9yZGVyOiAnMScsXG4gICAgICAgICAgbmV3VGFibGU6IHRydWVcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIGVkaXRvci5pbnNlcnROb2RlKG5ld1RhYmxlKTtcbiAgICAgIG1vdmVUb0JlZ2lubmluZ09mVGFibGUoZWRpdG9yLCBuZXdUYWJsZSk7XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBOb3RlIC0gdGhlIG5vZGUgbWF5IG5vdCBiZSBhIHRhYmxlIG5vZGUgLSBpdCBtYXkgYmUgYSBub2RlIGluc2lkZSBhIHRhYmxlLlxuICAgICAqL1xuICAgIGN1c3RvbVRvb2xiYXI6IChub2RlLCBub2RlUGF0aCwgZWRpdG9yLCBvblRvb2xiYXJEb25lKSA9PiB7XG4gICAgICBsb2coJ1tjdXN0b21Ub29sYmFyXSBub2RlLmRhdGE6ICcsIG5vZGUuZGF0YSk7XG5cbiAgICAgIGNvbnN0IFt0YWJsZUJsb2NrXSA9IGNvcmUudXRpbHMuZ2V0VGFibGVCbG9jayhlZGl0b3IpO1xuICAgICAgbG9nKCdbY3VzdG9tVG9vbGJhcl0gdGFibGVCbG9jazogJywgdGFibGVCbG9jayk7XG5cbiAgICAgIGNvbnN0IGhhc0JvcmRlciA9ICgpID0+IGdldCh0YWJsZUJsb2NrLCAnZGF0YS5ib3JkZXInKSAhPT0gJzAnO1xuICAgICAgY29uc3QgYWRkUm93ID0gKCkgPT4ge1xuICAgICAgICBjb25zdCBbdHJOb2RlLCB0clBhdGhdID0gZ2V0QW5jZXN0b3JCeVR5cGUoZWRpdG9yLCAndHInKTtcblxuICAgICAgICBsb2coJ1thZGRSb3ddJyk7XG5cbiAgICAgICAgaWYgKHRyTm9kZSkge1xuICAgICAgICAgIGNvbnN0IG5ld1RyID0geyB0eXBlOiAndHInLCBjaGlsZHJlbjogW10gfTtcbiAgICAgICAgICBjb25zdCBjb2x1bW5zTGVuZ3RoID0gdHJOb2RlLmNoaWxkcmVuLmxlbmd0aDtcblxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29sdW1uc0xlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBuZXdUci5jaGlsZHJlbi5wdXNoKHtcbiAgICAgICAgICAgICAgdHlwZTogJ3RkJyxcbiAgICAgICAgICAgICAgY2hpbGRyZW46IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICB0ZXh0OiAnJ1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgVHJhbnNmb3Jtcy5pbnNlcnROb2RlcyhlZGl0b3IsIFtuZXdUcl0sIHsgYXQ6IHRyUGF0aCB9KTtcbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgY29uc3QgcmVtb3ZlUm93ID0gKCkgPT4ge1xuICAgICAgICBjb25zdCBbdEJvZHlOb2RlLCB0Qm9keVBhdGhdID0gZ2V0QW5jZXN0b3JCeVR5cGUoZWRpdG9yLCAndGJvZHknKTtcblxuICAgICAgICBsb2coJ1tyZW1vdmVSb3ddJyk7XG5cbiAgICAgICAgaWYgKHRCb2R5UGF0aCkge1xuICAgICAgICAgIGlmICh0Qm9keU5vZGUuY2hpbGRyZW4ubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgY29uc3QgWywgdHJQYXRoXSA9IGdldEFuY2VzdG9yQnlUeXBlKGVkaXRvciwgJ3RyJyk7XG5cbiAgICAgICAgICAgIGxvZygnW3JlbW92ZVJvd10nKTtcblxuICAgICAgICAgICAgaWYgKHRyUGF0aCkge1xuICAgICAgICAgICAgICBUcmFuc2Zvcm1zLnJlbW92ZU5vZGVzKGVkaXRvciwgeyBhdDogdHJQYXRoIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgY29uc3QgYWRkQ29sdW1uID0gKCkgPT4ge1xuICAgICAgICBjb25zdCBbdEJvZHlOb2RlLCB0Qm9keVBhdGhdID0gZ2V0QW5jZXN0b3JCeVR5cGUoZWRpdG9yLCAndGJvZHknKTtcblxuICAgICAgICBsb2coJ1thZGRDb2x1bW5dJyk7XG5cbiAgICAgICAgaWYgKHRCb2R5Tm9kZSkge1xuICAgICAgICAgIGNvbnN0IGVtcHR5VGQgPSB7XG4gICAgICAgICAgICB0eXBlOiAndGQnLFxuICAgICAgICAgICAgY2hpbGRyZW46IFt7IHRleHQ6ICcnIH1dXG4gICAgICAgICAgfTtcbiAgICAgICAgICBjb25zdCB0ckVsZW1lbnRzID0gRWRpdG9yLm5vZGVzKGVkaXRvciwge1xuICAgICAgICAgICAgYXQ6IHRCb2R5UGF0aCwgLy8gUGF0aCBvZiBFZGl0b3JcbiAgICAgICAgICAgIG1hdGNoOiBub2RlID0+ICd0cicgPT09IG5vZGUudHlwZVxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgZm9yIChjb25zdCBbdHJOb2RlLCBub2RlUGF0aF0gb2YgdHJFbGVtZW50cykge1xuICAgICAgICAgICAgVHJhbnNmb3Jtcy5pbnNlcnROb2RlcyhlZGl0b3IsIFtlbXB0eVRkXSwge1xuICAgICAgICAgICAgICBhdDogWy4uLm5vZGVQYXRoLCB0ck5vZGUuY2hpbGRyZW4ubGVuZ3RoXVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBjb25zdCByZW1vdmVDb2x1bW4gPSAoKSA9PiB7XG4gICAgICAgIGNvbnN0IFt0Qm9keU5vZGUsIHRCb2R5UGF0aF0gPSBnZXRBbmNlc3RvckJ5VHlwZShlZGl0b3IsICd0Ym9keScpO1xuXG4gICAgICAgIGxvZygnW2FkZENvbHVtbl0nKTtcblxuICAgICAgICBpZiAodEJvZHlOb2RlKSB7XG4gICAgICAgICAgY29uc3QgY3VycmVudFBhdGggPSBFZGl0b3IucGF0aChlZGl0b3IsIGVkaXRvci5zZWxlY3Rpb24pO1xuICAgICAgICAgIGNvbnN0IGNvbHVtbkluZGV4ID0gY3VycmVudFBhdGhbY3VycmVudFBhdGgubGVuZ3RoIC0gMl07XG4gICAgICAgICAgY29uc3QgdHJFbGVtZW50cyA9IEVkaXRvci5ub2RlcyhlZGl0b3IsIHtcbiAgICAgICAgICAgIGF0OiB0Qm9keVBhdGgsIC8vIFBhdGggb2YgRWRpdG9yXG4gICAgICAgICAgICBtYXRjaDogbm9kZSA9PiAndHInID09PSBub2RlLnR5cGVcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIGZvciAoY29uc3QgW3RyTm9kZSwgbm9kZVBhdGhdIG9mIHRyRWxlbWVudHMpIHtcbiAgICAgICAgICAgIGlmICh0ck5vZGUuY2hpbGRyZW4ubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICBUcmFuc2Zvcm1zLnJlbW92ZU5vZGVzKGVkaXRvciwgeyBhdDogWy4uLm5vZGVQYXRoLCBjb2x1bW5JbmRleF0gfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBjb25zdCByZW1vdmVUYWJsZSA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgW3RhYmxlTm9kZSwgdGFibGVQYXRoXSA9IGdldEFuY2VzdG9yQnlUeXBlKGVkaXRvciwgJ3RhYmxlJyk7XG5cbiAgICAgICAgZWRpdG9yLmFwcGx5KHtcbiAgICAgICAgICB0eXBlOiAncmVtb3ZlX25vZGUnLFxuICAgICAgICAgIHBhdGg6IHRhYmxlUGF0aCxcbiAgICAgICAgICBub2RlOiB0YWJsZU5vZGVcbiAgICAgICAgfSk7XG4gICAgICB9O1xuXG4gICAgICBjb25zdCB0b2dnbGVCb3JkZXIgPSAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgZGF0YSB9ID0gdGFibGVCbG9jaztcbiAgICAgICAgY29uc3QgdXBkYXRlID0ge1xuICAgICAgICAgIC4uLmRhdGEsXG4gICAgICAgICAgYm9yZGVyOiBoYXNCb3JkZXIoKSA/ICcwJyA6ICcxJ1xuICAgICAgICB9O1xuICAgICAgICBjb25zdCBbLCB0YWJsZVBhdGhdID0gZ2V0QW5jZXN0b3JCeVR5cGUoZWRpdG9yLCAndGFibGUnKTtcblxuICAgICAgICBsb2coJ1t0b2dnbGVCb3JkZXJdIHVwZGF0ZTogJywgdXBkYXRlKTtcblxuICAgICAgICBlZGl0b3IuYXBwbHkoe1xuICAgICAgICAgIHR5cGU6ICdzZXRfbm9kZScsXG4gICAgICAgICAgcGF0aDogdGFibGVQYXRoLFxuICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgIGRhdGE6IG5vZGUuZGF0YVxuICAgICAgICAgIH0sXG4gICAgICAgICAgbmV3UHJvcGVydGllczogeyBkYXRhOiB1cGRhdGUgfVxuICAgICAgICB9KTtcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IG9uRG9uZSA9ICgpID0+IHtcbiAgICAgICAgbG9nKCdbb25Eb25lXSBjYWxsIG9uVG9vbGJhckRvbmUuLi4nKTtcbiAgICAgICAgb25Ub29sYmFyRG9uZSh0cnVlKTtcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IFRiID0gKCkgPT4gKFxuICAgICAgICA8VGFibGVUb29sYmFyXG4gICAgICAgICAgZWRpdG9yPXtlZGl0b3J9XG4gICAgICAgICAgcGx1Z2lucz17dG9vbGJhclBsdWdpbnN9XG4gICAgICAgICAgb25DaGFuZ2U9e2MgPT4gb25Ub29sYmFyRG9uZShjLCBmYWxzZSl9XG4gICAgICAgICAgb25BZGRSb3c9e2FkZFJvd31cbiAgICAgICAgICBvblJlbW92ZVJvdz17cmVtb3ZlUm93fVxuICAgICAgICAgIG9uQWRkQ29sdW1uPXthZGRDb2x1bW59XG4gICAgICAgICAgb25SZW1vdmVDb2x1bW49e3JlbW92ZUNvbHVtbn1cbiAgICAgICAgICBvblJlbW92ZVRhYmxlPXtyZW1vdmVUYWJsZX1cbiAgICAgICAgICBoYXNCb3JkZXI9e2hhc0JvcmRlcigpfVxuICAgICAgICAgIG9uVG9nZ2xlQm9yZGVyPXt0b2dnbGVCb3JkZXJ9XG4gICAgICAgICAgb25Eb25lPXtvbkRvbmV9XG4gICAgICAgIC8+XG4gICAgICApO1xuICAgICAgcmV0dXJuIFRiO1xuICAgIH1cbiAgfTtcblxuICBjb3JlLnN1cHBvcnRzID0gbm9kZSA9PiBUQUJMRV9UWVBFUy5pbmNsdWRlcyhub2RlLnR5cGUpO1xuXG4gIGNvbnN0IE5vZGUgPSBwcm9wcyA9PiB7XG4gICAgc3dpdGNoIChwcm9wcy5ub2RlLnR5cGUpIHtcbiAgICAgIGNhc2UgJ3RhYmxlJzpcbiAgICAgICAgcmV0dXJuIDxUYWJsZSB7Li4ucHJvcHN9IG9uRm9jdXM9e29wdHMub25Gb2N1c30gb25CbHVyPXtvcHRzLm9uQmx1cn0gLz47XG4gICAgICBjYXNlICd0Ym9keSc6XG4gICAgICAgIHJldHVybiA8VGFibGVCb2R5IHsuLi5wcm9wc30gb25Gb2N1cz17b3B0cy5vbkZvY3VzfSBvbkJsdXI9e29wdHMub25CbHVyfSAvPjtcbiAgICAgIGNhc2UgJ3RyJzpcbiAgICAgICAgcmV0dXJuIDxUYWJsZVJvdyB7Li4ucHJvcHN9IC8+O1xuICAgICAgY2FzZSAndGQnOlxuICAgICAgICByZXR1cm4gPFRhYmxlQ2VsbCB7Li4ucHJvcHN9IG9uRm9jdXM9e29wdHMub25Gb2N1c30gb25CbHVyPXtvcHRzLm9uQmx1cn0gLz47XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH07XG4gIE5vZGUucHJvcFR5cGVzID0ge1xuICAgIG5vZGU6IFByb3BUeXBlcy5vYmplY3RcbiAgfTtcblxuICBjb3JlLnJlbmRlck5vZGUgPSBOb2RlO1xuXG4gIHJldHVybiBjb3JlO1xufTtcblxuZXhwb3J0IGNvbnN0IHBhcnNlU3R5bGVTdHJpbmcgPSBzID0+IHtcbiAgY29uc3QgcmVnZXggPSAvKFtcXHctXSopXFxzKjpcXHMqKFteO10qKS9nO1xuICBsZXQgbWF0Y2g7XG4gIGNvbnN0IHJlc3VsdCA9IHt9O1xuICB3aGlsZSAoKG1hdGNoID0gcmVnZXguZXhlYyhzKSkpIHtcbiAgICByZXN1bHRbbWF0Y2hbMV1dID0gbWF0Y2hbMl0udHJpbSgpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG5leHBvcnQgY29uc3QgcmVhY3RBdHRyaWJ1dGVzID0gbyA9PiB0b1N0eWxlT2JqZWN0KG8sIHsgY2FtZWxpemU6IHRydWUsIGFkZFVuaXRzOiBmYWxzZSB9KTtcblxuY29uc3QgYXR0cmlidXRlc1RvTWFwID0gZWwgPT4gKGFjYywgYXR0cmlidXRlKSA9PiB7XG4gIGNvbnN0IHZhbHVlID0gZWwuZ2V0QXR0cmlidXRlKGF0dHJpYnV0ZSk7XG4gIGlmICh2YWx1ZSkge1xuICAgIGlmIChhdHRyaWJ1dGUgPT09ICdzdHlsZScpIHtcbiAgICAgIGNvbnN0IHN0eWxlU3RyaW5nID0gZWwuZ2V0QXR0cmlidXRlKGF0dHJpYnV0ZSk7XG4gICAgICBjb25zdCByZWFjdFN0eWxlT2JqZWN0ID0gcmVhY3RBdHRyaWJ1dGVzKHBhcnNlU3R5bGVTdHJpbmcoc3R5bGVTdHJpbmcpKTtcbiAgICAgIGFjY1snc3R5bGUnXSA9IHJlYWN0U3R5bGVPYmplY3Q7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFjY1thdHRyaWJ1dGVdID0gZWwuZ2V0QXR0cmlidXRlKGF0dHJpYnV0ZSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBhY2M7XG59O1xuXG5jb25zdCBkYXRhVG9BdHRyaWJ1dGVzID0gZGF0YSA9PiB7XG4gIHJldHVybiByZWR1Y2UoXG4gICAgZGF0YSxcbiAgICAoYWNjLCB2LCBuYW1lKSA9PiB7XG4gICAgICBpZiAodikge1xuICAgICAgICBhY2NbY29udmVydChuYW1lKV0gPSB2O1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFjYztcbiAgICB9LFxuICAgIHt9XG4gICk7XG59O1xuXG5jb25zdCBhdHRyaWJ1dGVzID0gWydib3JkZXInLCAnY2VsbHBhZGRpbmcnLCAnY2VsbHNwYWNpbmcnLCAnY2xhc3MnLCAnc3R5bGUnXTtcblxuY29uc3QgY2VsbEF0dHJpYnV0ZXMgPSBbJ2NvbHNwYW4nLCAncm93c3BhbicsICdjbGFzcycsICdzdHlsZSddO1xuXG5leHBvcnQgY29uc3Qgc2VyaWFsaXphdGlvbiA9IHtcbiAgZGVzZXJpYWxpemUoZWwsIG5leHQpIHtcbiAgICBjb25zdCB0YWcgPSBlbC50YWdOYW1lLnRvTG93ZXJDYXNlKCk7XG5cbiAgICBzd2l0Y2ggKHRhZykge1xuICAgICAgY2FzZSAndGFibGUnOiB7XG4gICAgICAgIGNvbnN0IGNoaWxkcmVuID1cbiAgICAgICAgICBlbC5jaGlsZHJlbi5sZW5ndGggPT09IDEgJiYgZWwuY2hpbGRyZW5bMF0udGFnTmFtZS50b0xvd2VyQ2FzZSgpID09PSAndGJvZHknXG4gICAgICAgICAgICA/IGVsLmNoaWxkcmVuWzBdLmNoaWxkcmVuXG4gICAgICAgICAgICA6IGVsLmNoaWxkcmVuO1xuICAgICAgICBjb25zdCBjID0gQXJyYXkuZnJvbShjaGlsZHJlbik7XG5cbiAgICAgICAgcmV0dXJuIGpzeChcbiAgICAgICAgICAnZWxlbWVudCcsXG4gICAgICAgICAge1xuICAgICAgICAgICAgdHlwZTogJ3RhYmxlJyxcbiAgICAgICAgICAgIGRhdGE6IGF0dHJpYnV0ZXMucmVkdWNlKGF0dHJpYnV0ZXNUb01hcChlbCksIHt9KVxuICAgICAgICAgIH0sXG4gICAgICAgICAgbmV4dChjKVxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgY2FzZSAndGJvZHknOiB7XG4gICAgICAgIHJldHVybiBqc3goXG4gICAgICAgICAgJ2VsZW1lbnQnLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHR5cGU6ICd0Ym9keSdcbiAgICAgICAgICB9LFxuICAgICAgICAgIG5leHQoZWwuY2hpbGROb2RlcylcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGNhc2UgJ3RoJzoge1xuICAgICAgICByZXR1cm4ganN4KFxuICAgICAgICAgICdlbGVtZW50JyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0eXBlOiAndGgnLFxuICAgICAgICAgICAgZGF0YTogY2VsbEF0dHJpYnV0ZXMucmVkdWNlKGF0dHJpYnV0ZXNUb01hcChlbCksIHsgaGVhZGVyOiB0cnVlIH0pXG4gICAgICAgICAgfSxcbiAgICAgICAgICBuZXh0KGVsLmNoaWxkTm9kZXMpXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBjYXNlICd0cic6IHtcbiAgICAgICAgcmV0dXJuIGpzeChcbiAgICAgICAgICAnZWxlbWVudCcsXG4gICAgICAgICAge1xuICAgICAgICAgICAgdHlwZTogJ3RyJ1xuICAgICAgICAgIH0sXG4gICAgICAgICAgbmV4dChBcnJheS5mcm9tKGVsLmNoaWxkcmVuKSlcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGNhc2UgJ3RkJzoge1xuICAgICAgICByZXR1cm4ganN4KFxuICAgICAgICAgICdlbGVtZW50JyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0eXBlOiAndGQnLFxuICAgICAgICAgICAgZGF0YTogY2VsbEF0dHJpYnV0ZXMucmVkdWNlKGF0dHJpYnV0ZXNUb01hcChlbCksIHsgaGVhZGVyOiB0cnVlIH0pXG4gICAgICAgICAgfSxcbiAgICAgICAgICBuZXh0KGVsLmNoaWxkTm9kZXMpXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBzZXJpYWxpemUob2JqZWN0LCBjaGlsZHJlbikge1xuICAgIHN3aXRjaCAob2JqZWN0LnR5cGUpIHtcbiAgICAgIGNhc2UgJ3RhYmxlJzoge1xuICAgICAgICBjb25zdCBhdHRyaWJ1dGVzID0gZGF0YVRvQXR0cmlidXRlcyhvYmplY3QuZGF0YSk7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgPHRhYmxlIHsuLi5hdHRyaWJ1dGVzfT5cbiAgICAgICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAgICA8L3RhYmxlPlxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgY2FzZSAndGJvZHknOiB7XG4gICAgICAgIHJldHVybiA8dGJvZHk+e2NoaWxkcmVufTwvdGJvZHk+O1xuICAgICAgfVxuICAgICAgY2FzZSAndHInOiB7XG4gICAgICAgIHJldHVybiA8dHI+e2NoaWxkcmVufTwvdHI+O1xuICAgICAgfVxuICAgICAgY2FzZSAndGQnOiB7XG4gICAgICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSBkYXRhVG9BdHRyaWJ1dGVzKG9iamVjdC5kYXRhKTtcbiAgICAgICAgcmV0dXJuIDx0ZCB7Li4uYXR0cmlidXRlc30+e2NoaWxkcmVufTwvdGQ+O1xuICAgICAgfVxuICAgICAgY2FzZSAndGgnOiB7XG4gICAgICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSBkYXRhVG9BdHRyaWJ1dGVzKG9iamVjdC5kYXRhKTtcbiAgICAgICAgcmV0dXJuIDx0aCB7Li4uYXR0cmlidXRlc30+e2NoaWxkcmVufTwvdGg+O1xuICAgICAgfVxuICAgIH1cbiAgfVxufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7Ozs7O0FBRUEsSUFBTUEsR0FBRyxHQUFHLElBQUFDLGlCQUFBLEVBQU0sc0NBQU4sQ0FBWjs7QUFFQSxJQUFNQyxLQUFLLGdCQUFHQyxpQkFBQSxDQUFNQyxVQUFOLENBQWlCLFVBQUFDLEtBQUssRUFBSTtFQUN0QyxJQUFNQyxjQUFjLEdBQUcsSUFBQUMsZ0JBQUEsRUFBS0MsZ0JBQWdCLENBQUNILEtBQUssQ0FBQ0ksT0FBTixDQUFjQyxJQUFmLENBQXJCLEVBQTJDLFVBQTNDLENBQXZCO0VBQ0EsSUFBTUMsS0FBSyxHQUFHLElBQUFKLGdCQUFBLEVBQUtGLEtBQUssQ0FBQ08sVUFBWCxFQUF1QixVQUF2QixDQUFkO0VBRUEsb0JBQ0UsdUVBQVdELEtBQVgsRUFBc0JMLGNBQXRCO0lBQXNDLE9BQU8sRUFBRUQsS0FBSyxDQUFDUSxPQUFyRDtJ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
|
|
@@ -49,7 +49,7 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
|
|
|
49
49
|
|
|
50
50
|
var log = (0, _debug["default"])('@pie-lib:editable-html:plugins:toolbar');
|
|
51
51
|
|
|
52
|
-
var getCustomToolbar = function getCustomToolbar(plugin, node,
|
|
52
|
+
var getCustomToolbar = function getCustomToolbar(plugin, node, nodePath, editor, handleDone) {
|
|
53
53
|
if (!plugin) {
|
|
54
54
|
return;
|
|
55
55
|
}
|
|
@@ -68,7 +68,7 @@ var getCustomToolbar = function getCustomToolbar(plugin, node, value, editor, ha
|
|
|
68
68
|
return plugin.toolbar.CustomToolbarComp;
|
|
69
69
|
} else if (typeof plugin.toolbar.customToolbar === 'function') {
|
|
70
70
|
log('deprecated - use CustomToolbarComp');
|
|
71
|
-
return plugin.toolbar.customToolbar(node,
|
|
71
|
+
return plugin.toolbar.customToolbar(node, nodePath, editor, handleDone);
|
|
72
72
|
}
|
|
73
73
|
};
|
|
74
74
|
|
|
@@ -161,13 +161,13 @@ var Toolbar = function Toolbar(props) {
|
|
|
161
161
|
};
|
|
162
162
|
};
|
|
163
163
|
|
|
164
|
-
var onToolbarDone = function onToolbarDone(
|
|
165
|
-
log('[onToolbarDone] change: ',
|
|
164
|
+
var onToolbarDone = function onToolbarDone(editor, finishEditing) {
|
|
165
|
+
log('[onToolbarDone] change: ', editor, 'finishEditing: ', finishEditing);
|
|
166
166
|
var onChange = props.onChange,
|
|
167
167
|
onDone = props.onDone;
|
|
168
168
|
|
|
169
|
-
if (
|
|
170
|
-
onChange(
|
|
169
|
+
if (editor) {
|
|
170
|
+
onChange(editor, function () {
|
|
171
171
|
if (finishEditing) {
|
|
172
172
|
onDone();
|
|
173
173
|
}
|
|
@@ -180,13 +180,13 @@ var Toolbar = function Toolbar(props) {
|
|
|
180
180
|
}
|
|
181
181
|
};
|
|
182
182
|
|
|
183
|
-
var onDeleteClick = (0, _debounce["default"])(function (e, plugin, node,
|
|
184
|
-
return plugin.deleteNode(e, node,
|
|
183
|
+
var onDeleteClick = (0, _debounce["default"])(function (e, plugin, node, nodePath, editor, onChange) {
|
|
184
|
+
return plugin.deleteNode(e, node, nodePath, editor, onChange);
|
|
185
185
|
}, 500);
|
|
186
186
|
|
|
187
|
-
var onDeleteMouseDown = function onDeleteMouseDown(e
|
|
187
|
+
var onDeleteMouseDown = function onDeleteMouseDown(e) {
|
|
188
188
|
e.persist();
|
|
189
|
-
onDeleteClick(e, plugin, node,
|
|
189
|
+
onDeleteClick(e, plugin, node, nodePath, editor, onChange);
|
|
190
190
|
};
|
|
191
191
|
|
|
192
192
|
var classes = props.classes,
|
|
@@ -261,21 +261,26 @@ var Toolbar = function Toolbar(props) {
|
|
|
261
261
|
});
|
|
262
262
|
log('[render] plugin: ', plugin);
|
|
263
263
|
|
|
264
|
-
var handleDone = function handleDone(
|
|
264
|
+
var handleDone = function handleDone(done) {
|
|
265
|
+
var isDone = done ? editor : null;
|
|
265
266
|
var handler = onDone;
|
|
266
267
|
|
|
267
268
|
if (plugin && plugin.toolbar && plugin.toolbar.customToolbar) {
|
|
268
269
|
handler = onToolbarDone;
|
|
269
270
|
}
|
|
270
271
|
|
|
271
|
-
|
|
272
|
+
if (isDone) {
|
|
273
|
+
editor.selection = null;
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
handler(isDone);
|
|
272
277
|
|
|
273
278
|
if (parentPlugin && parentPlugin.handleDone) {
|
|
274
|
-
parentPlugin.handleDone(
|
|
279
|
+
parentPlugin.handleDone(isDone, node, plugin);
|
|
275
280
|
}
|
|
276
281
|
};
|
|
277
282
|
|
|
278
|
-
var CustomToolbar = getCustomToolbar(plugin, node,
|
|
283
|
+
var CustomToolbar = getCustomToolbar(plugin, node, nodePath, editor, handleDone) || getCustomToolbar(parentPlugin, node, nodePath, editor, handleDone);
|
|
279
284
|
var filteredPlugins = plugin && plugin.filterPlugins ? plugin.filterPlugins(node, plugins) : plugins;
|
|
280
285
|
log('[render] CustomToolbar: ', CustomToolbar);
|
|
281
286
|
var parentExtraStyles = parentPlugin && parentPlugin.pluginStyles ? parentPlugin.pluginStyles(node, parentNode, plugin) : {};
|
|
@@ -318,7 +323,7 @@ var Toolbar = function Toolbar(props) {
|
|
|
318
323
|
"aria-label": "Delete",
|
|
319
324
|
className: classes.iconRoot,
|
|
320
325
|
onMouseDown: function onMouseDown(e) {
|
|
321
|
-
return onDeleteMouseDown(e
|
|
326
|
+
return onDeleteMouseDown(e);
|
|
322
327
|
},
|
|
323
328
|
classes: {
|
|
324
329
|
root: classes.iconRoot
|
|
@@ -362,4 +367,4 @@ var _default = (0, _styles.withStyles)(style, {
|
|
|
362
367
|
})(Toolbar);
|
|
363
368
|
|
|
364
369
|
exports["default"] = _default;
|
|
365
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJsb2ciLCJkZWJ1ZyIsImdldEN1c3RvbVRvb2xiYXIiLCJwbHVnaW4iLCJub2RlIiwidmFsdWUiLCJlZGl0b3IiLCJoYW5kbGVEb25lIiwidG9vbGJhciIsIkN1c3RvbVRvb2xiYXJDb21wIiwiY3VzdG9tVG9vbGJhciIsInN0eWxlIiwicG9zaXRpb24iLCJ6SW5kZXgiLCJjdXJzb3IiLCJqdXN0aWZ5Q29udGVudCIsImJhY2tncm91bmQiLCJtaW5XaWR0aCIsIm1hcmdpbiIsInBhZGRpbmciLCJib3hTaGFkb3ciLCJib3hTaXppbmciLCJkaXNwbGF5IiwidG9vbGJhcldpdGhOb0RvbmUiLCJ0b29sYmFyVG9wIiwidG9wIiwidG9vbGJhclJpZ2h0IiwicmlnaHQiLCJmdWxsV2lkdGgiLCJ3aWR0aCIsImF1dG9XaWR0aCIsImZvY3VzZWQiLCJpY29uUm9vdCIsImhlaWdodCIsInZlcnRpY2FsQWxpZ24iLCJsYWJlbCIsImNvbG9yIiwic2hhcmVkIiwiVG9vbGJhciIsInByb3BzIiwidXNlRWZmZWN0IiwicmVtb3ZlQ2hhcmFjdGVyRGlhbG9ncyIsImhhc01hcmsiLCJ0eXBlIiwibWFya3MiLCJzb21lIiwibWFyayIsImhhc0Jsb2NrIiwiYmxvY2tzIiwib25Ub2dnbGUiLCJvbkNoYW5nZSIsImNoYW5nZSIsIm9uQ2xpY2siLCJlIiwicHJldmVudERlZmF1bHQiLCJvbkJ1dHRvbkNsaWNrIiwiZm4iLCJvblRvb2xiYXJEb25lIiwiZmluaXNoRWRpdGluZyIsIm9uRG9uZSIsIm9uRGVsZXRlQ2xpY2siLCJkZWJvdW5jZSIsImRlbGV0ZU5vZGUiLCJvbkRlbGV0ZU1vdXNlRG93biIsInBlcnNpc3QiLCJjbGFzc2VzIiwicGx1Z2lucyIsInBsdWdpblByb3BzIiwidG9vbGJhck9wdHMiLCJnZXRGb2N1c2VkVmFsdWUiLCJpc0ZvY3VzZWQiLCJ0b29sYmFyUmVmIiwidXNlU2xhdGUiLCJzZWxlY3Rpb24iLCJ1c2VTbGF0ZVNlbGVjdGlvbiIsImdldE5vZGUiLCJkZXB0aCIsIkVkaXRvciIsInVuZGVmaW5lZCIsInBhdGgiLCJUZXh0IiwiaXNUZXh0IiwibGVuZ3RoIiwiZ2V0UGFyZW50Tm9kZSIsIkFycmF5IiwiaXNBcnJheSIsInBhcmVudCIsIm5vZGVQYXRoIiwicGFyZW50Tm9kZSIsImZpbmQiLCJwIiwic3VwcG9ydHMiLCJwYXJlbnRQbHVnaW4iLCJoYW5kbGVyIiwiQ3VzdG9tVG9vbGJhciIsImZpbHRlcmVkUGx1Z2lucyIsImZpbHRlclBsdWdpbnMiLCJwYXJlbnRFeHRyYVN0eWxlcyIsInBsdWdpblN0eWxlcyIsInBsdWdpbkV4dHJhU3R5bGVzIiwiZXh0cmFTdHlsZXMiLCJkZWxldGFibGUiLCJjdXN0b21Ub29sYmFyU2hvd0RvbmUiLCJzaG93RG9uZSIsImFsd2F5c1Zpc2libGUiLCJkZWZhdWx0VG9vbGJhclNob3dEb25lIiwiaGFzRG9uZUJ1dHRvbiIsIm5hbWVzIiwiY2xhc3NOYW1lcyIsImFsaWdubWVudCIsInJvb3QiLCJwcm9wVHlwZXMiLCJQcm9wVHlwZXMiLCJvYmplY3QiLCJpc1JlcXVpcmVkIiwibnVtYmVyIiwiYXJyYXlPZiIsInNoYXBlIiwic3RyaW5nIiwiY2hpbGRyZW4iLCJhcnJheSIsImRhdGEiLCJvbkltYWdlQ2xpY2siLCJmdW5jIiwiYm9vbCIsIm9uZU9mIiwicmVmIiwid2l0aFN0eWxlcyIsImluZGV4Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3BsdWdpbnMvdG9vbGJhci90b29sYmFyLmpzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgQ2hhbmdlLCBFZGl0b3IsIEVsZW1lbnQgYXMgU2xhdGVFbGVtZW50LCBUZXh0LCBOb2RlIH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0IHsgdXNlU2xhdGUsIHVzZVNsYXRlU2VsZWN0aW9uIH0gZnJvbSBcInNsYXRlLXJlYWN0XCI7XG5pbXBvcnQgRGVsZXRlIGZyb20gJ0BtYXRlcmlhbC11aS9pY29ucy9EZWxldGUnO1xuaW1wb3J0IEljb25CdXR0b24gZnJvbSAnQG1hdGVyaWFsLXVpL2NvcmUvSWNvbkJ1dHRvbic7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IGRlYm91bmNlIGZyb20gJ2xvZGFzaC9kZWJvdW5jZSc7XG5cbmltcG9ydCB7IERvbmVCdXR0b24gfSBmcm9tICcuL2RvbmUtYnV0dG9uJztcblxuaW1wb3J0IHsgd2l0aFN0eWxlcyB9IGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlL3N0eWxlcyc7XG5pbXBvcnQgRGVmYXVsdFRvb2xiYXIgZnJvbSAnLi9kZWZhdWx0LXRvb2xiYXInO1xuaW1wb3J0IHsgcmVtb3ZlRGlhbG9ncyBhcyByZW1vdmVDaGFyYWN0ZXJEaWFsb2dzIH0gZnJvbSAnLi4vY2hhcmFjdGVycyc7XG5cbmNvbnN0IGxvZyA9IGRlYnVnKCdAcGllLWxpYjplZGl0YWJsZS1odG1sOnBsdWdpbnM6dG9vbGJhcicpO1xuXG5jb25zdCBnZXRDdXN0b21Ub29sYmFyID0gKHBsdWdpbiwgbm9kZSwgdmFsdWUsIGVkaXRvciwgaGFuZGxlRG9uZSkgPT4ge1xuICBpZiAoIXBsdWdpbikge1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAoIXBsdWdpbi50b29sYmFyKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmIChwbHVnaW4udG9vbGJhci5DdXN0b21Ub29sYmFyQ29tcCkge1xuICAgIC8qKlxuICAgICAqIFVzaW5nIGEgcHJlLWRlZmluZWQgQ29tcG9uZW50IHNob3VsZCBiZSBwcmVmZXJyZWRcbiAgICAgKiBhcyB0aGUgcmVuZGVyaW5nIG9mIGl0IChhbmQgaXQncyBjaGlsZHJlbikgY2FuIGJlIG9wdGltaXplZCBieSBSZWFjdC5cbiAgICAgKiBJZiB5b3Uga2VlcCByZS1kZWZpbmluZyB0aGUgY29tcCB3aXRoIGFuIGlubGluZSBmdW5jdGlvblxuICAgICAqIHRoZW4gcmVhY3Qgd2lsbCBoYXZlIHRvIHJlLXJlbmRlci5cbiAgICAgKi9cbiAgICByZXR1cm4gcGx1Z2luLnRvb2xiYXIuQ3VzdG9tVG9vbGJhckNvbXA7XG4gIH0gZWxzZSBpZiAodHlwZW9mIHBsdWdpbi50b29sYmFyLmN1c3RvbVRvb2xiYXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICBsb2coJ2RlcHJlY2F0ZWQgLSB1c2UgQ3VzdG9tVG9vbGJhckNvbXAnKTtcbiAgICByZXR1cm4gcGx1Z2luLnRvb2xiYXIuY3VzdG9tVG9vbGJhcihub2RlLCB2YWx1ZSwgZWRpdG9yLCBoYW5kbGVEb25lKTtcbiAgfVxufTtcblxuY29uc3Qgc3R5bGUgPSB7XG4gIHRvb2xiYXI6IHtcbiAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICB6SW5kZXg6IDEwLFxuICAgIGN1cnNvcjogJ3BvaW50ZXInLFxuICAgIGp1c3RpZnlDb250ZW50OiAnc3BhY2UtYmV0d2VlbicsXG4gICAgYmFja2dyb3VuZDogJ3ZhcigtLWVkaXRhYmxlLWh0bWwtdG9vbGJhci1iZywgI2VmZWZlZiknLFxuICAgIG1pbldpZHRoOiAnMjgwcHgnLFxuICAgIG1hcmdpbjogJzVweCAwIDAgMCcsXG4gICAgcGFkZGluZzogJzJweCcsXG4gICAgYm94U2hhZG93OlxuICAgICAgJzBweCAxcHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMiksIDBweCAycHggMnB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwcHggM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4xMiknLFxuICAgIGJveFNpemluZzogJ2JvcmRlci1ib3gnLFxuICAgIGRpc3BsYXk6ICdub25lJ1xuICB9LFxuICB0b29sYmFyV2l0aE5vRG9uZToge1xuICAgIG1pbldpZHRoOiAnMjY1cHgnXG4gIH0sXG4gIHRvb2xiYXJUb3A6IHtcbiAgICB0b3A6ICctNDVweCdcbiAgfSxcbiAgdG9vbGJhclJpZ2h0OiB7XG4gICAgcmlnaHQ6IDBcbiAgfSxcbiAgZnVsbFdpZHRoOiB7XG4gICAgd2lkdGg6ICcxMDAlJ1xuICB9LFxuICBhdXRvV2lkdGg6IHtcbiAgICB3aWR0aDogJ2F1dG8nXG4gIH0sXG4gIGZvY3VzZWQ6IHtcbiAgICBkaXNwbGF5OiAnZmxleCdcbiAgfSxcbiAgaWNvblJvb3Q6IHtcbiAgICB3aWR0aDogJzI4cHgnLFxuICAgIGhlaWdodDogJzI4cHgnLFxuICAgIHBhZGRpbmc6ICc0cHgnLFxuICAgIHZlcnRpY2FsQWxpZ246ICd0b3AnXG4gIH0sXG4gIGxhYmVsOiB7XG4gICAgY29sb3I6ICd2YXIoLS1lZGl0YWJsZS1odG1sLXRvb2xiYXItY2hlY2ssICMwMGJiMDApJ1xuICB9LFxuICBzaGFyZWQ6IHtcbiAgICBkaXNwbGF5OiAnZmxleCdcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IFRvb2xiYXIgPSBwcm9wcyA9PiB7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmV0dXJuICgpID0+IHJlbW92ZUNoYXJhY3RlckRpYWxvZ3MoKTtcbiAgfSwgW10pO1xuXG4gIGNvbnN0IGhhc01hcmsgPSB0eXBlID0+IHtcbiAgICBjb25zdCB7IHZhbHVlIH0gPSBwcm9wcztcbiAgICByZXR1cm4gdmFsdWUubWFya3Muc29tZShtYXJrID0+IG1hcmsudHlwZSA9PT0gdHlwZSk7XG4gIH07XG5cbiAgY29uc3QgaGFzQmxvY2sgPSB0eXBlID0+IHtcbiAgICBjb25zdCB7IHZhbHVlIH0gPSBwcm9wcztcbiAgICByZXR1cm4gdmFsdWUuYmxvY2tzLnNvbWUobm9kZSA9PiBub2RlLnR5cGUgPT09IHR5cGUpO1xuICB9O1xuXG4gIGNvbnN0IG9uVG9nZ2xlID0gcGx1Z2luID0+IHtcbiAgICBjb25zdCB7IHZhbHVlLCBvbkNoYW5nZSB9ID0gcHJvcHM7XG5cbiAgICBpZiAoIXBsdWdpbi5vblRvZ2dsZSkgcmV0dXJuO1xuXG4gICAgY29uc3QgY2hhbmdlID0gcGx1Z2luLm9uVG9nZ2xlKHZhbHVlLmNoYW5nZSgpKTtcbiAgICBvbkNoYW5nZShjaGFuZ2UpO1xuICB9O1xuXG4gIGNvbnN0IG9uQ2xpY2sgPSBlID0+IHtcbiAgICBsb2coJ1tvbkNsaWNrXScpO1xuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgfTtcblxuICBjb25zdCBvbkJ1dHRvbkNsaWNrID0gZm4gPT4ge1xuICAgIHJldHVybiBlID0+IHtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGZuKCk7XG4gICAgfTtcbiAgfTtcblxuICBjb25zdCBvblRvb2xiYXJEb25lID0gKGNoYW5nZSwgZmluaXNoRWRpdGluZykgPT4ge1xuICAgIGxvZygnW29uVG9vbGJhckRvbmVdIGNoYW5nZTogJywgY2hhbmdlLCAnZmluaXNoRWRpdGluZzogJywgZmluaXNoRWRpdGluZyk7XG4gICAgY29uc3QgeyBvbkNoYW5nZSwgb25Eb25lIH0gPSBwcm9wcztcblxuICAgIGlmIChjaGFuZ2UpIHtcbiAgICAgIG9uQ2hhbmdlKGNoYW5nZSwgKCkgPT4ge1xuICAgICAgICBpZiAoZmluaXNoRWRpdGluZykge1xuICAgICAgICAgIG9uRG9uZSgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGZpbmlzaEVkaXRpbmcpIHtcbiAgICAgICAgbG9nKCdbb25Ub29sYmFyQ2hhbmdlXSBjYWxsIG9uRG9uZScpO1xuICAgICAgICBvbkRvbmUoKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgY29uc3Qgb25EZWxldGVDbGljayA9IGRlYm91bmNlKFxuICAgIChlLCBwbHVnaW4sIG5vZGUsIHZhbHVlLCBvbkNoYW5nZSkgPT4gcGx1Z2luLmRlbGV0ZU5vZGUoZSwgbm9kZSwgdmFsdWUsIG9uQ2hhbmdlKSxcbiAgICA1MDBcbiAgKTtcblxuICBjb25zdCBvbkRlbGV0ZU1vdXNlRG93biA9IChlLCBwbHVnaW4sIG5vZGUsIHZhbHVlLCBvbkNoYW5nZSkgPT4ge1xuICAgIGUucGVyc2lzdCgpO1xuICAgIG9uRGVsZXRlQ2xpY2soZSwgcGx1Z2luLCBub2RlLCB2YWx1ZSwgb25DaGFuZ2UpO1xuICB9O1xuXG4gIGNvbnN0IHtcbiAgICBjbGFzc2VzLFxuICAgIHBsdWdpbnMsXG4gICAgcGx1Z2luUHJvcHMsXG4gICAgdG9vbGJhck9wdHMsXG4gICAgdmFsdWUsXG4gICAgYXV0b1dpZHRoLFxuICAgIG9uQ2hhbmdlLFxuICAgIGdldEZvY3VzZWRWYWx1ZSxcbiAgICBpc0ZvY3VzZWQsXG4gICAgb25Eb25lLFxuICAgIHRvb2xiYXJSZWZcbiAgfSA9IHByb3BzO1xuXG4gIGNvbnN0IGVkaXRvciA9IHVzZVNsYXRlKCk7XG4gIGNvbnN0IHNlbGVjdGlvbiA9IHVzZVNsYXRlU2VsZWN0aW9uKCk7XG4gIGNvbnN0IGdldE5vZGUgPSAoZWRpdG9yLCBzZWxlY3Rpb24sIGRlcHRoKSA9PiB7XG4gICAgaWYgKCFzZWxlY3Rpb24pIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IFtub2RlLCBwYXRoXSA9IEVkaXRvci5ub2RlKGVkaXRvciwgc2VsZWN0aW9uLCBkZXB0aCA/IHsgZGVwdGggfSA6IHVuZGVmaW5lZCk7XG5cbiAgICBpZiAoIW5vZGUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmICghVGV4dC5pc1RleHQobm9kZSkpIHtcbiAgICAgIHJldHVybiBbbm9kZSwgcGF0aF07XG4gICAgfVxuXG4gICAgcmV0dXJuIGdldE5vZGUoZWRpdG9yLCBzZWxlY3Rpb24sIHBhdGgubGVuZ3RoIC0gMSk7XG4gIH07XG4gIGNvbnN0IGdldFBhcmVudE5vZGUgPSAoZWRpdG9yLCBwYXRoKSA9PiBBcnJheS5pc0FycmF5KHBhdGgpICYmIHBhdGgubGVuZ3RoID4gMCAmJiBFZGl0b3IucGFyZW50KGVkaXRvciwgcGF0aCk7XG5cbiAgY29uc3QgW25vZGUsIG5vZGVQYXRoXSA9IGdldE5vZGUoZWRpdG9yLCBzZWxlY3Rpb24pIHx8IFtdO1xuICBjb25zdCBbcGFyZW50Tm9kZV0gPSBnZXRQYXJlbnROb2RlKGVkaXRvciwgbm9kZVBhdGgpIHx8IFtdO1xuXG4gIGxvZygnIC0tLS0tLS0tLS0tLS0tPiBbcmVuZGVyXSBub2RlOiAnLCBub2RlKTtcbiAgbG9nKCdbcmVuZGVyXSBub2RlOiAnLCBub2RlKTtcblxuICBjb25zdCBwbHVnaW4gPSBwbHVnaW5zLmZpbmQocCA9PiB7XG4gICAgaWYgKCFub2RlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHAudG9vbGJhcikge1xuICAgICAgcmV0dXJuIHAuc3VwcG9ydHMgJiYgcC5zdXBwb3J0cyhub2RlLCBlZGl0b3IsIHZhbHVlKTtcbiAgICB9XG4gIH0pO1xuICBjb25zdCBwYXJlbnRQbHVnaW4gPSBwbHVnaW5zLmZpbmQocCA9PiB7XG4gICAgaWYgKCFwYXJlbnROb2RlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHAudG9vbGJhcikge1xuICAgICAgcmV0dXJuIHAuc3VwcG9ydHMgJiYgcC5zdXBwb3J0cyhwYXJlbnROb2RlLCBlZGl0b3IsIHZhbHVlKTtcbiAgICB9XG4gIH0pO1xuXG4gIGxvZygnW3JlbmRlcl0gcGx1Z2luOiAnLCBwbHVnaW4pO1xuXG4gIGNvbnN0IGhhbmRsZURvbmUgPSBlZGl0b3IgPT4ge1xuICAgIGxldCBoYW5kbGVyID0gb25Eb25lO1xuXG4gICAgaWYgKHBsdWdpbiAmJiBwbHVnaW4udG9vbGJhciAmJiBwbHVnaW4udG9vbGJhci5jdXN0b21Ub29sYmFyKSB7XG4gICAgICBoYW5kbGVyID0gb25Ub29sYmFyRG9uZTtcbiAgICB9XG5cbiAgICBoYW5kbGVyKGVkaXRvcik7XG5cbiAgICBpZiAocGFyZW50UGx1Z2luICYmIHBhcmVudFBsdWdpbi5oYW5kbGVEb25lKSB7XG4gICAgICBwYXJlbnRQbHVnaW4uaGFuZGxlRG9uZShlZGl0b3IsIG5vZGUsIHBsdWdpbik7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IEN1c3RvbVRvb2xiYXIgPSBnZXRDdXN0b21Ub29sYmFyKHBsdWdpbiwgbm9kZSwgdmFsdWUsIGVkaXRvciwgaGFuZGxlRG9uZSk7XG5cbiAgY29uc3QgZmlsdGVyZWRQbHVnaW5zID1cbiAgICBwbHVnaW4gJiYgcGx1Z2luLmZpbHRlclBsdWdpbnMgPyBwbHVnaW4uZmlsdGVyUGx1Z2lucyhub2RlLCBwbHVnaW5zKSA6IHBsdWdpbnM7XG5cbiAgbG9nKCdbcmVuZGVyXSBDdXN0b21Ub29sYmFyOiAnLCBDdXN0b21Ub29sYmFyKTtcbiAgY29uc3QgcGFyZW50RXh0cmFTdHlsZXMgPVxuICAgIHBhcmVudFBsdWdpbiAmJiBwYXJlbnRQbHVnaW4ucGx1Z2luU3R5bGVzXG4gICAgICA/IHBhcmVudFBsdWdpbi5wbHVnaW5TdHlsZXMobm9kZSwgcGFyZW50Tm9kZSwgcGx1Z2luKVxuICAgICAgOiB7fTtcbiAgY29uc3QgcGx1Z2luRXh0cmFTdHlsZXMgPVxuICAgIHBsdWdpbiAmJiBwbHVnaW4ucGx1Z2luU3R5bGVzID8gcGx1Z2luLnBsdWdpblN0eWxlcyhub2RlLCBwYXJlbnROb2RlLCBwbHVnaW4pIDoge307XG4gIGNvbnN0IGV4dHJhU3R5bGVzID0ge1xuICAgIC4uLnBsdWdpbkV4dHJhU3R5bGVzLFxuICAgIC4uLnBhcmVudEV4dHJhU3R5bGVzXG4gIH07XG5cbiAgY29uc3QgZGVsZXRhYmxlID0gbm9kZSAmJiBwbHVnaW4gJiYgdHlwZW9mIHBsdWdpbi5kZWxldGVOb2RlID09PSAnZnVuY3Rpb24nO1xuICBjb25zdCBjdXN0b21Ub29sYmFyU2hvd0RvbmUgPVxuICAgIG5vZGUgJiYgcGx1Z2luICYmIHBsdWdpbi50b29sYmFyICYmIHBsdWdpbi50b29sYmFyLnNob3dEb25lICYmICF0b29sYmFyT3B0cy5hbHdheXNWaXNpYmxlO1xuXG4gIC8vIElmIHRoZXJlIGlzIGEgdG9vbGJhck9wdHMgd2UgY2hlY2sgaWYgdGhlIHNob3dEb25lIGlzIG5vdCBlcXVhbCB0byBmYWxzZVxuICBjb25zdCBkZWZhdWx0VG9vbGJhclNob3dEb25lID0gIXRvb2xiYXJPcHRzIHx8IHRvb2xiYXJPcHRzLnNob3dEb25lICE9PSBmYWxzZTtcblxuICBjb25zdCBoYXNEb25lQnV0dG9uID0gZGVmYXVsdFRvb2xiYXJTaG93RG9uZSB8fCBjdXN0b21Ub29sYmFyU2hvd0RvbmU7XG5cbiAgY29uc3QgbmFtZXMgPSBjbGFzc05hbWVzKGNsYXNzZXMudG9vbGJhciwge1xuICAgIFtjbGFzc2VzLnRvb2xiYXJXaXRoTm9Eb25lXTogIWhhc0RvbmVCdXR0b24sXG4gICAgW2NsYXNzZXMudG9vbGJhclRvcF06IHRvb2xiYXJPcHRzLnBvc2l0aW9uID09PSAndG9wJyxcbiAgICBbY2xhc3Nlcy50b29sYmFyUmlnaHRdOiB0b29sYmFyT3B0cy5hbGlnbm1lbnQgPT09ICdyaWdodCcsXG4gICAgW2NsYXNzZXMuZm9jdXNlZF06IHRvb2xiYXJPcHRzLmFsd2F5c1Zpc2libGUgfHwgaXNGb2N1c2VkLFxuICAgIFtjbGFzc2VzLmF1dG9XaWR0aF06IGF1dG9XaWR0aCxcbiAgICBbY2xhc3Nlcy5mdWxsV2lkdGhdOiAhYXV0b1dpZHRoXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9e25hbWVzfSBzdHlsZT17ZXh0cmFTdHlsZXN9IG9uQ2xpY2s9e29uQ2xpY2t9IHJlZj17dG9vbGJhclJlZn0+XG4gICAgICB7Q3VzdG9tVG9vbGJhciA/IChcbiAgICAgICAgPEN1c3RvbVRvb2xiYXJcbiAgICAgICAgICBlZGl0b3I9e2VkaXRvcn1cbiAgICAgICAgICBub2RlPXtub2RlfVxuICAgICAgICAgIG5vZGVQYXRoPXtub2RlUGF0aH1cbiAgICAgICAgICB2YWx1ZT17dmFsdWV9XG4gICAgICAgICAgb25Ub29sYmFyRG9uZT17b25Ub29sYmFyRG9uZX1cbiAgICAgICAgICBwbHVnaW5Qcm9wcz17cGx1Z2luUHJvcHN9XG4gICAgICAgIC8+XG4gICAgICApIDogKFxuICAgICAgICA8RGVmYXVsdFRvb2xiYXJcbiAgICAgICAgICBlZGl0b3I9e2VkaXRvcn1cbiAgICAgICAgICBub2RlUGF0aD17bm9kZVBhdGh9XG4gICAgICAgICAgcGx1Z2lucz17ZmlsdGVyZWRQbHVnaW5zfVxuICAgICAgICAgIHBsdWdpblByb3BzPXtwbHVnaW5Qcm9wc31cbiAgICAgICAgICB2YWx1ZT17dmFsdWV9XG4gICAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlfVxuICAgICAgICAgIGdldEZvY3VzZWRWYWx1ZT17Z2V0Rm9jdXNlZFZhbHVlfVxuICAgICAgICAgIHNob3dEb25lPXtkZWZhdWx0VG9vbGJhclNob3dEb25lfVxuICAgICAgICAgIG9uRG9uZT17aGFuZGxlRG9uZX1cbiAgICAgICAgICBkZWxldGFibGU9e2RlbGV0YWJsZX1cbiAgICAgICAgLz5cbiAgICAgICl9XG5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc2VzLnNoYXJlZH0+XG4gICAgICAgIHtkZWxldGFibGUgJiYgKFxuICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICBhcmlhLWxhYmVsPVwiRGVsZXRlXCJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3Nlcy5pY29uUm9vdH1cbiAgICAgICAgICAgIG9uTW91c2VEb3duPXtlID0+IG9uRGVsZXRlTW91c2VEb3duKGUsIHBsdWdpbiwgbm9kZSwgdmFsdWUsIG9uQ2hhbmdlKX1cbiAgICAgICAgICAgIGNsYXNzZXM9e3tcbiAgICAgICAgICAgICAgcm9vdDogY2xhc3Nlcy5pY29uUm9vdFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8RGVsZXRlIC8+XG4gICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICApfVxuICAgICAgICB7Y3VzdG9tVG9vbGJhclNob3dEb25lICYmIDxEb25lQnV0dG9uIG9uQ2xpY2s9e2hhbmRsZURvbmV9IC8+fVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5Ub29sYmFyLnByb3BUeXBlcyA9IHtcbiAgZWRpdG9yOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHpJbmRleDogUHJvcFR5cGVzLm51bWJlcixcbiAgdmFsdWU6IFByb3BUeXBlcy5hcnJheU9mKFxuICAgIFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICB0eXBlOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgICAgY2hpbGRyZW46IFByb3BUeXBlcy5hcnJheSxcbiAgICAgIGRhdGE6IFByb3BUeXBlcy5vYmplY3RcbiAgICB9KVxuICApLFxuICBwbHVnaW5zOiBQcm9wVHlwZXMuYXJyYXksXG4gIHBsdWdpbjogUHJvcFR5cGVzLm9iamVjdCxcbiAgb25JbWFnZUNsaWNrOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25Eb25lOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICB0b29sYmFyUmVmOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBjbGFzc2VzOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIGlzRm9jdXNlZDogUHJvcFR5cGVzLmJvb2wsXG4gIGF1dG9XaWR0aDogUHJvcFR5cGVzLmJvb2wsXG4gIG9uQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBnZXRGb2N1c2VkVmFsdWU6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIHBsdWdpblByb3BzOiBQcm9wVHlwZXMub2JqZWN0LFxuICB0b29sYmFyT3B0czogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBwb3NpdGlvbjogUHJvcFR5cGVzLm9uZU9mKFsnYm90dG9tJywgJ3RvcCddKSxcbiAgICBhbGlnbm1lbnQ6IFByb3BUeXBlcy5vbmVPZihbJ2xlZnQnLCAncmlnaHQnXSksXG4gICAgYWx3YXlzVmlzaWJsZTogUHJvcFR5cGVzLmJvb2wsXG4gICAgcmVmOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBzaG93RG9uZTogUHJvcFR5cGVzLmJvb2xcbiAgfSlcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhTdHlsZXMoc3R5bGUsIHsgaW5kZXg6IDEwMDAgfSkoVG9vbGJhcik7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztB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
|
|
370
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJsb2ciLCJkZWJ1ZyIsImdldEN1c3RvbVRvb2xiYXIiLCJwbHVnaW4iLCJub2RlIiwibm9kZVBhdGgiLCJlZGl0b3IiLCJoYW5kbGVEb25lIiwidG9vbGJhciIsIkN1c3RvbVRvb2xiYXJDb21wIiwiY3VzdG9tVG9vbGJhciIsInN0eWxlIiwicG9zaXRpb24iLCJ6SW5kZXgiLCJjdXJzb3IiLCJqdXN0aWZ5Q29udGVudCIsImJhY2tncm91bmQiLCJtaW5XaWR0aCIsIm1hcmdpbiIsInBhZGRpbmciLCJib3hTaGFkb3ciLCJib3hTaXppbmciLCJkaXNwbGF5IiwidG9vbGJhcldpdGhOb0RvbmUiLCJ0b29sYmFyVG9wIiwidG9wIiwidG9vbGJhclJpZ2h0IiwicmlnaHQiLCJmdWxsV2lkdGgiLCJ3aWR0aCIsImF1dG9XaWR0aCIsImZvY3VzZWQiLCJpY29uUm9vdCIsImhlaWdodCIsInZlcnRpY2FsQWxpZ24iLCJsYWJlbCIsImNvbG9yIiwic2hhcmVkIiwiVG9vbGJhciIsInByb3BzIiwidXNlRWZmZWN0IiwicmVtb3ZlQ2hhcmFjdGVyRGlhbG9ncyIsImhhc01hcmsiLCJ0eXBlIiwidmFsdWUiLCJtYXJrcyIsInNvbWUiLCJtYXJrIiwiaGFzQmxvY2siLCJibG9ja3MiLCJvblRvZ2dsZSIsIm9uQ2hhbmdlIiwiY2hhbmdlIiwib25DbGljayIsImUiLCJwcmV2ZW50RGVmYXVsdCIsIm9uQnV0dG9uQ2xpY2siLCJmbiIsIm9uVG9vbGJhckRvbmUiLCJmaW5pc2hFZGl0aW5nIiwib25Eb25lIiwib25EZWxldGVDbGljayIsImRlYm91bmNlIiwiZGVsZXRlTm9kZSIsIm9uRGVsZXRlTW91c2VEb3duIiwicGVyc2lzdCIsImNsYXNzZXMiLCJwbHVnaW5zIiwicGx1Z2luUHJvcHMiLCJ0b29sYmFyT3B0cyIsImdldEZvY3VzZWRWYWx1ZSIsImlzRm9jdXNlZCIsInRvb2xiYXJSZWYiLCJ1c2VTbGF0ZSIsInNlbGVjdGlvbiIsInVzZVNsYXRlU2VsZWN0aW9uIiwiZ2V0Tm9kZSIsImRlcHRoIiwiRWRpdG9yIiwidW5kZWZpbmVkIiwicGF0aCIsIlRleHQiLCJpc1RleHQiLCJsZW5ndGgiLCJnZXRQYXJlbnROb2RlIiwiQXJyYXkiLCJpc0FycmF5IiwicGFyZW50IiwicGFyZW50Tm9kZSIsImZpbmQiLCJwIiwic3VwcG9ydHMiLCJwYXJlbnRQbHVnaW4iLCJkb25lIiwiaXNEb25lIiwiaGFuZGxlciIsIkN1c3RvbVRvb2xiYXIiLCJmaWx0ZXJlZFBsdWdpbnMiLCJmaWx0ZXJQbHVnaW5zIiwicGFyZW50RXh0cmFTdHlsZXMiLCJwbHVnaW5TdHlsZXMiLCJwbHVnaW5FeHRyYVN0eWxlcyIsImV4dHJhU3R5bGVzIiwiZGVsZXRhYmxlIiwiY3VzdG9tVG9vbGJhclNob3dEb25lIiwic2hvd0RvbmUiLCJhbHdheXNWaXNpYmxlIiwiZGVmYXVsdFRvb2xiYXJTaG93RG9uZSIsImhhc0RvbmVCdXR0b24iLCJuYW1lcyIsImNsYXNzTmFtZXMiLCJhbGlnbm1lbnQiLCJyb290IiwicHJvcFR5cGVzIiwiUHJvcFR5cGVzIiwib2JqZWN0IiwiaXNSZXF1aXJlZCIsIm51bWJlciIsImFycmF5T2YiLCJzaGFwZSIsInN0cmluZyIsImNoaWxkcmVuIiwiYXJyYXkiLCJkYXRhIiwib25JbWFnZUNsaWNrIiwiZnVuYyIsImJvb2wiLCJvbmVPZiIsInJlZiIsIndpdGhTdHlsZXMiLCJpbmRleCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wbHVnaW5zL3Rvb2xiYXIvdG9vbGJhci5qc3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IENoYW5nZSwgRWRpdG9yLCBFbGVtZW50IGFzIFNsYXRlRWxlbWVudCwgVGV4dCwgTm9kZSB9IGZyb20gJ3NsYXRlJztcbmltcG9ydCB7IHVzZVNsYXRlLCB1c2VTbGF0ZVNlbGVjdGlvbiB9IGZyb20gXCJzbGF0ZS1yZWFjdFwiO1xuaW1wb3J0IERlbGV0ZSBmcm9tICdAbWF0ZXJpYWwtdWkvaWNvbnMvRGVsZXRlJztcbmltcG9ydCBJY29uQnV0dG9uIGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlL0ljb25CdXR0b24nO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCBkZWJvdW5jZSBmcm9tICdsb2Rhc2gvZGVib3VuY2UnO1xuXG5pbXBvcnQgeyBEb25lQnV0dG9uIH0gZnJvbSAnLi9kb25lLWJ1dHRvbic7XG5cbmltcG9ydCB7IHdpdGhTdHlsZXMgfSBmcm9tICdAbWF0ZXJpYWwtdWkvY29yZS9zdHlsZXMnO1xuaW1wb3J0IERlZmF1bHRUb29sYmFyIGZyb20gJy4vZGVmYXVsdC10b29sYmFyJztcbmltcG9ydCB7IHJlbW92ZURpYWxvZ3MgYXMgcmVtb3ZlQ2hhcmFjdGVyRGlhbG9ncyB9IGZyb20gJy4uL2NoYXJhY3RlcnMnO1xuXG5jb25zdCBsb2cgPSBkZWJ1ZygnQHBpZS1saWI6ZWRpdGFibGUtaHRtbDpwbHVnaW5zOnRvb2xiYXInKTtcblxuY29uc3QgZ2V0Q3VzdG9tVG9vbGJhciA9IChwbHVnaW4sIG5vZGUsIG5vZGVQYXRoLCBlZGl0b3IsIGhhbmRsZURvbmUpID0+IHtcbiAgaWYgKCFwbHVnaW4pIHtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKCFwbHVnaW4udG9vbGJhcikge1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAocGx1Z2luLnRvb2xiYXIuQ3VzdG9tVG9vbGJhckNvbXApIHtcbiAgICAvKipcbiAgICAgKiBVc2luZyBhIHByZS1kZWZpbmVkIENvbXBvbmVudCBzaG91bGQgYmUgcHJlZmVycmVkXG4gICAgICogYXMgdGhlIHJlbmRlcmluZyBvZiBpdCAoYW5kIGl0J3MgY2hpbGRyZW4pIGNhbiBiZSBvcHRpbWl6ZWQgYnkgUmVhY3QuXG4gICAgICogSWYgeW91IGtlZXAgcmUtZGVmaW5pbmcgdGhlIGNvbXAgd2l0aCBhbiBpbmxpbmUgZnVuY3Rpb25cbiAgICAgKiB0aGVuIHJlYWN0IHdpbGwgaGF2ZSB0byByZS1yZW5kZXIuXG4gICAgICovXG4gICAgcmV0dXJuIHBsdWdpbi50b29sYmFyLkN1c3RvbVRvb2xiYXJDb21wO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBwbHVnaW4udG9vbGJhci5jdXN0b21Ub29sYmFyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgbG9nKCdkZXByZWNhdGVkIC0gdXNlIEN1c3RvbVRvb2xiYXJDb21wJyk7XG4gICAgcmV0dXJuIHBsdWdpbi50b29sYmFyLmN1c3RvbVRvb2xiYXIobm9kZSwgbm9kZVBhdGgsIGVkaXRvciwgaGFuZGxlRG9uZSk7XG4gIH1cbn07XG5cbmNvbnN0IHN0eWxlID0ge1xuICB0b29sYmFyOiB7XG4gICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgekluZGV4OiAxMCxcbiAgICBjdXJzb3I6ICdwb2ludGVyJyxcbiAgICBqdXN0aWZ5Q29udGVudDogJ3NwYWNlLWJldHdlZW4nLFxuICAgIGJhY2tncm91bmQ6ICd2YXIoLS1lZGl0YWJsZS1odG1sLXRvb2xiYXItYmcsICNlZmVmZWYpJyxcbiAgICBtaW5XaWR0aDogJzI4MHB4JyxcbiAgICBtYXJnaW46ICc1cHggMCAwIDAnLFxuICAgIHBhZGRpbmc6ICcycHgnLFxuICAgIGJveFNoYWRvdzpcbiAgICAgICcwcHggMXB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLCAwcHggMnB4IDJweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwgMHB4IDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMTIpJyxcbiAgICBib3hTaXppbmc6ICdib3JkZXItYm94JyxcbiAgICBkaXNwbGF5OiAnbm9uZSdcbiAgfSxcbiAgdG9vbGJhcldpdGhOb0RvbmU6IHtcbiAgICBtaW5XaWR0aDogJzI2NXB4J1xuICB9LFxuICB0b29sYmFyVG9wOiB7XG4gICAgdG9wOiAnLTQ1cHgnXG4gIH0sXG4gIHRvb2xiYXJSaWdodDoge1xuICAgIHJpZ2h0OiAwXG4gIH0sXG4gIGZ1bGxXaWR0aDoge1xuICAgIHdpZHRoOiAnMTAwJSdcbiAgfSxcbiAgYXV0b1dpZHRoOiB7XG4gICAgd2lkdGg6ICdhdXRvJ1xuICB9LFxuICBmb2N1c2VkOiB7XG4gICAgZGlzcGxheTogJ2ZsZXgnXG4gIH0sXG4gIGljb25Sb290OiB7XG4gICAgd2lkdGg6ICcyOHB4JyxcbiAgICBoZWlnaHQ6ICcyOHB4JyxcbiAgICBwYWRkaW5nOiAnNHB4JyxcbiAgICB2ZXJ0aWNhbEFsaWduOiAndG9wJ1xuICB9LFxuICBsYWJlbDoge1xuICAgIGNvbG9yOiAndmFyKC0tZWRpdGFibGUtaHRtbC10b29sYmFyLWNoZWNrLCAjMDBiYjAwKSdcbiAgfSxcbiAgc2hhcmVkOiB7XG4gICAgZGlzcGxheTogJ2ZsZXgnXG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBUb29sYmFyID0gcHJvcHMgPT4ge1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHJldHVybiAoKSA9PiByZW1vdmVDaGFyYWN0ZXJEaWFsb2dzKCk7XG4gIH0sIFtdKTtcblxuICBjb25zdCBoYXNNYXJrID0gdHlwZSA9PiB7XG4gICAgY29uc3QgeyB2YWx1ZSB9ID0gcHJvcHM7XG4gICAgcmV0dXJuIHZhbHVlLm1hcmtzLnNvbWUobWFyayA9PiBtYXJrLnR5cGUgPT09IHR5cGUpO1xuICB9O1xuXG4gIGNvbnN0IGhhc0Jsb2NrID0gdHlwZSA9PiB7XG4gICAgY29uc3QgeyB2YWx1ZSB9ID0gcHJvcHM7XG4gICAgcmV0dXJuIHZhbHVlLmJsb2Nrcy5zb21lKG5vZGUgPT4gbm9kZS50eXBlID09PSB0eXBlKTtcbiAgfTtcblxuICBjb25zdCBvblRvZ2dsZSA9IHBsdWdpbiA9PiB7XG4gICAgY29uc3QgeyB2YWx1ZSwgb25DaGFuZ2UgfSA9IHByb3BzO1xuXG4gICAgaWYgKCFwbHVnaW4ub25Ub2dnbGUpIHJldHVybjtcblxuICAgIGNvbnN0IGNoYW5nZSA9IHBsdWdpbi5vblRvZ2dsZSh2YWx1ZS5jaGFuZ2UoKSk7XG4gICAgb25DaGFuZ2UoY2hhbmdlKTtcbiAgfTtcblxuICBjb25zdCBvbkNsaWNrID0gZSA9PiB7XG4gICAgbG9nKCdbb25DbGlja10nKTtcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gIH07XG5cbiAgY29uc3Qgb25CdXR0b25DbGljayA9IGZuID0+IHtcbiAgICByZXR1cm4gZSA9PiB7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBmbigpO1xuICAgIH07XG4gIH07XG5cbiAgY29uc3Qgb25Ub29sYmFyRG9uZSA9IChlZGl0b3IsIGZpbmlzaEVkaXRpbmcpID0+IHtcbiAgICBsb2coJ1tvblRvb2xiYXJEb25lXSBjaGFuZ2U6ICcsIGVkaXRvciwgJ2ZpbmlzaEVkaXRpbmc6ICcsIGZpbmlzaEVkaXRpbmcpO1xuICAgIGNvbnN0IHsgb25DaGFuZ2UsIG9uRG9uZSB9ID0gcHJvcHM7XG5cbiAgICBpZiAoZWRpdG9yKSB7XG4gICAgICBvbkNoYW5nZShlZGl0b3IsICgpID0+IHtcbiAgICAgICAgaWYgKGZpbmlzaEVkaXRpbmcpIHtcbiAgICAgICAgICBvbkRvbmUoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChmaW5pc2hFZGl0aW5nKSB7XG4gICAgICAgIGxvZygnW29uVG9vbGJhckNoYW5nZV0gY2FsbCBvbkRvbmUnKTtcbiAgICAgICAgb25Eb25lKCk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IG9uRGVsZXRlQ2xpY2sgPSBkZWJvdW5jZShcbiAgICAoZSwgcGx1Z2luLCBub2RlLCBub2RlUGF0aCwgZWRpdG9yLCBvbkNoYW5nZSkgPT4gcGx1Z2luLmRlbGV0ZU5vZGUoZSwgbm9kZSwgbm9kZVBhdGgsIGVkaXRvciwgb25DaGFuZ2UpLFxuICAgIDUwMFxuICApO1xuXG4gIGNvbnN0IG9uRGVsZXRlTW91c2VEb3duID0gZSA9PiB7XG4gICAgZS5wZXJzaXN0KCk7XG4gICAgb25EZWxldGVDbGljayhlLCBwbHVnaW4sIG5vZGUsIG5vZGVQYXRoLCBlZGl0b3IsIG9uQ2hhbmdlKTtcbiAgfTtcblxuICBjb25zdCB7XG4gICAgY2xhc3NlcyxcbiAgICBwbHVnaW5zLFxuICAgIHBsdWdpblByb3BzLFxuICAgIHRvb2xiYXJPcHRzLFxuICAgIHZhbHVlLFxuICAgIGF1dG9XaWR0aCxcbiAgICBvbkNoYW5nZSxcbiAgICBnZXRGb2N1c2VkVmFsdWUsXG4gICAgaXNGb2N1c2VkLFxuICAgIG9uRG9uZSxcbiAgICB0b29sYmFyUmVmXG4gIH0gPSBwcm9wcztcblxuICBjb25zdCBlZGl0b3IgPSB1c2VTbGF0ZSgpO1xuICBjb25zdCBzZWxlY3Rpb24gPSB1c2VTbGF0ZVNlbGVjdGlvbigpO1xuICBjb25zdCBnZXROb2RlID0gKGVkaXRvciwgc2VsZWN0aW9uLCBkZXB0aCkgPT4ge1xuICAgIGlmICghc2VsZWN0aW9uKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBbbm9kZSwgcGF0aF0gPSBFZGl0b3Iubm9kZShlZGl0b3IsIHNlbGVjdGlvbiwgZGVwdGggPyB7IGRlcHRoIH0gOiB1bmRlZmluZWQpO1xuXG4gICAgaWYgKCFub2RlKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAoIVRleHQuaXNUZXh0KG5vZGUpKSB7XG4gICAgICByZXR1cm4gW25vZGUsIHBhdGhdO1xuICAgIH1cblxuICAgIHJldHVybiBnZXROb2RlKGVkaXRvciwgc2VsZWN0aW9uLCBwYXRoLmxlbmd0aCAtIDEpO1xuICB9O1xuICBjb25zdCBnZXRQYXJlbnROb2RlID0gKGVkaXRvciwgcGF0aCkgPT4gQXJyYXkuaXNBcnJheShwYXRoKSAmJiBwYXRoLmxlbmd0aCA+IDAgJiYgRWRpdG9yLnBhcmVudChlZGl0b3IsIHBhdGgpO1xuXG4gIGNvbnN0IFtub2RlLCBub2RlUGF0aF0gPSBnZXROb2RlKGVkaXRvciwgc2VsZWN0aW9uKSB8fCBbXTtcbiAgY29uc3QgW3BhcmVudE5vZGVdID0gZ2V0UGFyZW50Tm9kZShlZGl0b3IsIG5vZGVQYXRoKSB8fCBbXTtcblxuICBsb2coJyAtLS0tLS0tLS0tLS0tLT4gW3JlbmRlcl0gbm9kZTogJywgbm9kZSk7XG4gIGxvZygnW3JlbmRlcl0gbm9kZTogJywgbm9kZSk7XG5cbiAgY29uc3QgcGx1Z2luID0gcGx1Z2lucy5maW5kKHAgPT4ge1xuICAgIGlmICghbm9kZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChwLnRvb2xiYXIpIHtcbiAgICAgIHJldHVybiBwLnN1cHBvcnRzICYmIHAuc3VwcG9ydHMobm9kZSwgZWRpdG9yLCB2YWx1ZSk7XG4gICAgfVxuICB9KTtcbiAgY29uc3QgcGFyZW50UGx1Z2luID0gcGx1Z2lucy5maW5kKHAgPT4ge1xuICAgIGlmICghcGFyZW50Tm9kZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChwLnRvb2xiYXIpIHtcbiAgICAgIHJldHVybiBwLnN1cHBvcnRzICYmIHAuc3VwcG9ydHMocGFyZW50Tm9kZSwgZWRpdG9yLCB2YWx1ZSk7XG4gICAgfVxuICB9KTtcblxuICBsb2coJ1tyZW5kZXJdIHBsdWdpbjogJywgcGx1Z2luKTtcblxuICBjb25zdCBoYW5kbGVEb25lID0gZG9uZSA9PiB7XG4gICAgY29uc3QgaXNEb25lID0gZG9uZSA/IGVkaXRvciA6IG51bGw7XG4gICAgbGV0IGhhbmRsZXIgPSBvbkRvbmU7XG5cbiAgICBpZiAocGx1Z2luICYmIHBsdWdpbi50b29sYmFyICYmIHBsdWdpbi50b29sYmFyLmN1c3RvbVRvb2xiYXIpIHtcbiAgICAgIGhhbmRsZXIgPSBvblRvb2xiYXJEb25lO1xuICAgIH1cblxuICAgIGlmIChpc0RvbmUpIHtcbiAgICAgIGVkaXRvci5zZWxlY3Rpb24gPSBudWxsO1xuICAgIH1cblxuICAgIGhhbmRsZXIoaXNEb25lKTtcblxuICAgIGlmIChwYXJlbnRQbHVnaW4gJiYgcGFyZW50UGx1Z2luLmhhbmRsZURvbmUpIHtcbiAgICAgIHBhcmVudFBsdWdpbi5oYW5kbGVEb25lKGlzRG9uZSwgbm9kZSwgcGx1Z2luKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgQ3VzdG9tVG9vbGJhciA9XG4gICAgZ2V0Q3VzdG9tVG9vbGJhcihwbHVnaW4sIG5vZGUsIG5vZGVQYXRoLCBlZGl0b3IsIGhhbmRsZURvbmUpIHx8XG4gICAgZ2V0Q3VzdG9tVG9vbGJhcihwYXJlbnRQbHVnaW4sIG5vZGUsIG5vZGVQYXRoLCBlZGl0b3IsIGhhbmRsZURvbmUpO1xuXG4gIGNvbnN0IGZpbHRlcmVkUGx1Z2lucyA9XG4gICAgcGx1Z2luICYmIHBsdWdpbi5maWx0ZXJQbHVnaW5zID8gcGx1Z2luLmZpbHRlclBsdWdpbnMobm9kZSwgcGx1Z2lucykgOiBwbHVnaW5zO1xuXG4gIGxvZygnW3JlbmRlcl0gQ3VzdG9tVG9vbGJhcjogJywgQ3VzdG9tVG9vbGJhcik7XG4gIGNvbnN0IHBhcmVudEV4dHJhU3R5bGVzID1cbiAgICBwYXJlbnRQbHVnaW4gJiYgcGFyZW50UGx1Z2luLnBsdWdpblN0eWxlc1xuICAgICAgPyBwYXJlbnRQbHVnaW4ucGx1Z2luU3R5bGVzKG5vZGUsIHBhcmVudE5vZGUsIHBsdWdpbilcbiAgICAgIDoge307XG4gIGNvbnN0IHBsdWdpbkV4dHJhU3R5bGVzID1cbiAgICBwbHVnaW4gJiYgcGx1Z2luLnBsdWdpblN0eWxlcyA/IHBsdWdpbi5wbHVnaW5TdHlsZXMobm9kZSwgcGFyZW50Tm9kZSwgcGx1Z2luKSA6IHt9O1xuICBjb25zdCBleHRyYVN0eWxlcyA9IHtcbiAgICAuLi5wbHVnaW5FeHRyYVN0eWxlcyxcbiAgICAuLi5wYXJlbnRFeHRyYVN0eWxlc1xuICB9O1xuXG4gIGNvbnN0IGRlbGV0YWJsZSA9IG5vZGUgJiYgcGx1Z2luICYmIHR5cGVvZiBwbHVnaW4uZGVsZXRlTm9kZSA9PT0gJ2Z1bmN0aW9uJztcbiAgY29uc3QgY3VzdG9tVG9vbGJhclNob3dEb25lID1cbiAgICBub2RlICYmIHBsdWdpbiAmJiBwbHVnaW4udG9vbGJhciAmJiBwbHVnaW4udG9vbGJhci5zaG93RG9uZSAmJiAhdG9vbGJhck9wdHMuYWx3YXlzVmlzaWJsZTtcblxuICAvLyBJZiB0aGVyZSBpcyBhIHRvb2xiYXJPcHRzIHdlIGNoZWNrIGlmIHRoZSBzaG93RG9uZSBpcyBub3QgZXF1YWwgdG8gZmFsc2VcbiAgY29uc3QgZGVmYXVsdFRvb2xiYXJTaG93RG9uZSA9ICF0b29sYmFyT3B0cyB8fCB0b29sYmFyT3B0cy5zaG93RG9uZSAhPT0gZmFsc2U7XG5cbiAgY29uc3QgaGFzRG9uZUJ1dHRvbiA9IGRlZmF1bHRUb29sYmFyU2hvd0RvbmUgfHwgY3VzdG9tVG9vbGJhclNob3dEb25lO1xuXG4gIGNvbnN0IG5hbWVzID0gY2xhc3NOYW1lcyhjbGFzc2VzLnRvb2xiYXIsIHtcbiAgICBbY2xhc3Nlcy50b29sYmFyV2l0aE5vRG9uZV06ICFoYXNEb25lQnV0dG9uLFxuICAgIFtjbGFzc2VzLnRvb2xiYXJUb3BdOiB0b29sYmFyT3B0cy5wb3NpdGlvbiA9PT0gJ3RvcCcsXG4gICAgW2NsYXNzZXMudG9vbGJhclJpZ2h0XTogdG9vbGJhck9wdHMuYWxpZ25tZW50ID09PSAncmlnaHQnLFxuICAgIFtjbGFzc2VzLmZvY3VzZWRdOiB0b29sYmFyT3B0cy5hbHdheXNWaXNpYmxlIHx8IGlzRm9jdXNlZCxcbiAgICBbY2xhc3Nlcy5hdXRvV2lkdGhdOiBhdXRvV2lkdGgsXG4gICAgW2NsYXNzZXMuZnVsbFdpZHRoXTogIWF1dG9XaWR0aFxuICB9KTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPXtuYW1lc30gc3R5bGU9e2V4dHJhU3R5bGVzfSBvbkNsaWNrPXtvbkNsaWNrfSByZWY9e3Rvb2xiYXJSZWZ9PlxuICAgICAge0N1c3RvbVRvb2xiYXIgPyAoXG4gICAgICAgIDxDdXN0b21Ub29sYmFyXG4gICAgICAgICAgZWRpdG9yPXtlZGl0b3J9XG4gICAgICAgICAgbm9kZT17bm9kZX1cbiAgICAgICAgICBub2RlUGF0aD17bm9kZVBhdGh9XG4gICAgICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgICAgIG9uVG9vbGJhckRvbmU9e29uVG9vbGJhckRvbmV9XG4gICAgICAgICAgcGx1Z2luUHJvcHM9e3BsdWdpblByb3BzfVxuICAgICAgICAvPlxuICAgICAgKSA6IChcbiAgICAgICAgPERlZmF1bHRUb29sYmFyXG4gICAgICAgICAgZWRpdG9yPXtlZGl0b3J9XG4gICAgICAgICAgbm9kZVBhdGg9e25vZGVQYXRofVxuICAgICAgICAgIHBsdWdpbnM9e2ZpbHRlcmVkUGx1Z2luc31cbiAgICAgICAgICBwbHVnaW5Qcm9wcz17cGx1Z2luUHJvcHN9XG4gICAgICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZX1cbiAgICAgICAgICBnZXRGb2N1c2VkVmFsdWU9e2dldEZvY3VzZWRWYWx1ZX1cbiAgICAgICAgICBzaG93RG9uZT17ZGVmYXVsdFRvb2xiYXJTaG93RG9uZX1cbiAgICAgICAgICBvbkRvbmU9e2hhbmRsZURvbmV9XG4gICAgICAgICAgZGVsZXRhYmxlPXtkZWxldGFibGV9XG4gICAgICAgIC8+XG4gICAgICApfVxuXG4gICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3Nlcy5zaGFyZWR9PlxuICAgICAgICB7ZGVsZXRhYmxlICYmIChcbiAgICAgICAgICA8SWNvbkJ1dHRvblxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkRlbGV0ZVwiXG4gICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzZXMuaWNvblJvb3R9XG4gICAgICAgICAgICBvbk1vdXNlRG93bj17ZSA9PiBvbkRlbGV0ZU1vdXNlRG93bihlKX1cbiAgICAgICAgICAgIGNsYXNzZXM9e3tcbiAgICAgICAgICAgICAgcm9vdDogY2xhc3Nlcy5pY29uUm9vdFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8RGVsZXRlIC8+XG4gICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICApfVxuICAgICAgICB7Y3VzdG9tVG9vbGJhclNob3dEb25lICYmIDxEb25lQnV0dG9uIG9uQ2xpY2s9e2hhbmRsZURvbmV9IC8+fVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5Ub29sYmFyLnByb3BUeXBlcyA9IHtcbiAgZWRpdG9yOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHpJbmRleDogUHJvcFR5cGVzLm51bWJlcixcbiAgdmFsdWU6IFByb3BUeXBlcy5hcnJheU9mKFxuICAgIFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICB0eXBlOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgICAgY2hpbGRyZW46IFByb3BUeXBlcy5hcnJheSxcbiAgICAgIGRhdGE6IFByb3BUeXBlcy5vYmplY3RcbiAgICB9KVxuICApLFxuICBwbHVnaW5zOiBQcm9wVHlwZXMuYXJyYXksXG4gIHBsdWdpbjogUHJvcFR5cGVzLm9iamVjdCxcbiAgb25JbWFnZUNsaWNrOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25Eb25lOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICB0b29sYmFyUmVmOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBjbGFzc2VzOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIGlzRm9jdXNlZDogUHJvcFR5cGVzLmJvb2wsXG4gIGF1dG9XaWR0aDogUHJvcFR5cGVzLmJvb2wsXG4gIG9uQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBnZXRGb2N1c2VkVmFsdWU6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIHBsdWdpblByb3BzOiBQcm9wVHlwZXMub2JqZWN0LFxuICB0b29sYmFyT3B0czogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBwb3NpdGlvbjogUHJvcFR5cGVzLm9uZU9mKFsnYm90dG9tJywgJ3RvcCddKSxcbiAgICBhbGlnbm1lbnQ6IFByb3BUeXBlcy5vbmVPZihbJ2xlZnQnLCAncmlnaHQnXSksXG4gICAgYWx3YXlzVmlzaWJsZTogUHJvcFR5cGVzLmJvb2wsXG4gICAgcmVmOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBzaG93RG9uZTogUHJvcFR5cGVzLmJvb2xcbiAgfSlcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhTdHlsZXMoc3R5bGUsIHsgaW5kZXg6IDEwMDAgfSkoVG9vbGJhcik7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBOztBQUVBOztBQUNBOztBQUNBOzs7Ozs7Ozs7O0FBRUEsSUFBTUEsR0FBRyxHQUFHLElBQUFDLGlCQUFBLEVBQU0sd0NBQU4sQ0FBWjs7QUFFQSxJQUFNQyxnQkFBZ0IsR0FBRyxTQUFuQkEsZ0JBQW1CLENBQUNDLE1BQUQsRUFBU0MsSUFBVCxFQUFlQyxRQUFmLEVBQXlCQyxNQUF6QixFQUFpQ0MsVUFBakMsRUFBZ0Q7RUFDdkUsSUFBSSxDQUFDSixNQUFMLEVBQWE7SUFDWDtFQUNEOztFQUNELElBQUksQ0FBQ0EsTUFBTSxDQUFDSyxPQUFaLEVBQXFCO0lBQ25CO0VBQ0Q7O0VBQ0QsSUFBSUwsTUFBTSxDQUFDSyxPQUFQLENBQWVDLGlCQUFuQixFQUFzQztJQUNwQztBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7SUFDSSxPQUFPTixNQUFNLENBQUNLLE9BQVAsQ0FBZUMsaUJBQXRCO0VBQ0QsQ0FSRCxNQVFPLElBQUksT0FBT04sTUFBTSxDQUFDSyxPQUFQLENBQWVFLGFBQXRCLEtBQXdDLFVBQTVDLEVBQXdEO0lBQzdEVixHQUFHLENBQUMsb0NBQUQsQ0FBSDtJQUNBLE9BQU9HLE1BQU0sQ0FBQ0ssT0FBUCxDQUFlRSxhQUFmLENBQTZCTixJQUE3QixFQUFtQ0MsUUFBbkMsRUFBNkNDLE1BQTdDLEVBQXFEQyxVQUFyRCxDQUFQO0VBQ0Q7QUFDRixDQW5CRDs7QUFxQkEsSUFBTUksS0FBSyxHQUFHO0VBQ1pILE9BQU8sRUFBRTtJQUNQSSxRQUFRLEVBQUUsVUFESDtJQUVQQyxNQUFNLEVBQUUsRUFG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
|