@datagrok-libraries/utils 4.1.14 → 4.1.16
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/package.json +1 -1
- package/src/items-grid.js +5 -5
- package/src/render-lines-on-sp.d.ts +44 -0
- package/src/render-lines-on-sp.d.ts.map +1 -0
- package/src/render-lines-on-sp.js +135 -0
- package/index.d.ts +0 -4
- package/index.d.ts.map +0 -1
- package/index.js +0 -4
package/package.json
CHANGED
package/src/items-grid.js
CHANGED
|
@@ -31,7 +31,7 @@ export class ItemsGrid {
|
|
|
31
31
|
this._root = ui.divV([], { style: {
|
|
32
32
|
display: 'grid', gridTemplateColumns: `repeat(${this.properties.length}, 1fr)`,
|
|
33
33
|
alignItems: 'center', gap: '12px'
|
|
34
|
-
} });
|
|
34
|
+
}, classes: 'ui-items-grid' });
|
|
35
35
|
this._items = items;
|
|
36
36
|
this.render();
|
|
37
37
|
}
|
|
@@ -42,7 +42,7 @@ export class ItemsGrid {
|
|
|
42
42
|
return this._items;
|
|
43
43
|
}
|
|
44
44
|
render() {
|
|
45
|
-
var _a;
|
|
45
|
+
var _a, _b, _c, _d;
|
|
46
46
|
ui.empty(this._root);
|
|
47
47
|
if (!this.options.horizontalInputNames) {
|
|
48
48
|
for (const prop of this.properties) {
|
|
@@ -59,7 +59,7 @@ export class ItemsGrid {
|
|
|
59
59
|
this._root.appendChild(editor);
|
|
60
60
|
}
|
|
61
61
|
if (this.options.allowAdd) {
|
|
62
|
-
const newEditor = this.getItemDiv(undefined, true);
|
|
62
|
+
const newEditor = this.getItemDiv((_d = (_c = (_b = this.options).newItemFunction) === null || _c === void 0 ? void 0 : _c.call(_b)) !== null && _d !== void 0 ? _d : undefined, true);
|
|
63
63
|
for (const editor of newEditor)
|
|
64
64
|
this._root.appendChild(editor);
|
|
65
65
|
}
|
|
@@ -75,7 +75,7 @@ export class ItemsGrid {
|
|
|
75
75
|
const input = ((_a = this.options.customInputs) === null || _a === void 0 ? void 0 : _a[prop.name]) ? this.options.customInputs[prop.name](item) :
|
|
76
76
|
ui.input.forProperty(prop, item);
|
|
77
77
|
editors.push(this.options.horizontalInputNames ? input.root : this.hideLabel(input.root));
|
|
78
|
-
if (prop.propertyType !== DG.TYPE.BOOL)
|
|
78
|
+
if (prop.propertyType !== DG.TYPE.BOOL && prop.name.toLowerCase() !== 'color')
|
|
79
79
|
input.input && (input.input.style.width = '100%');
|
|
80
80
|
inputsMap[prop.name] = input;
|
|
81
81
|
input.onChanged(() => {
|
|
@@ -130,4 +130,4 @@ export class ItemsGrid {
|
|
|
130
130
|
ui.dialog('dialog').add(itemsGrid.root).show();
|
|
131
131
|
at any point, filled fields can be accessed via itemsGrid.items
|
|
132
132
|
*/
|
|
133
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXRlbXMtZ3JpZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIml0ZW1zLWdyaWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0QyxPQUFPLEtBQUssRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3RDLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFxQjdCLHVHQUF1RztBQUN2RyxNQUFNLE9BQU8sU0FBUztJQWdCbEI7Ozs7Ozs7Ozs7OztPQVlHO0lBQ0wsWUFBWSxVQUF5QixFQUFFLFFBQW9CLEVBQUUsRUFBRSxVQUE0QixFQUFFO1FBekI3RixtREFBbUQ7UUFDNUMsa0JBQWEsR0FBZ0QsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUNsRixvREFBb0Q7UUFDN0Msd0JBQW1CLEdBQWdELElBQUksT0FBTyxFQUFFLENBQUM7UUFDeEYsNENBQTRDO1FBQ3JDLGdCQUFXLEdBQXNCLElBQUksT0FBTyxFQUFFLENBQUM7UUFDdEQsOENBQThDO1FBQ3ZDLGtCQUFhLEdBQXNCLElBQUksT0FBTyxFQUFFLENBQUM7UUFHeEQsWUFBTyxHQUNMLEVBQUMsbUJBQW1CLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUMsQ0FBQztRQWV0RyxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUM3QixJQUFJLENBQUMsT0FBTyxtQ0FBTyxJQUFJLENBQUMsT0FBTyxHQUFLLE9BQU8sQ0FBQyxDQUFDO1FBQzdDLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQ3JCLEVBQUMsS0FBSyxFQUFFO2dCQUNOLE9BQU8sRUFBRSxNQUFNLEVBQUUsbUJBQW1CLEVBQUUsVUFBVSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sUUFBUTtnQkFDOUUsVUFBVSxFQUFF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QUMvQixFQUFFLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMzRixPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7Q0FDRjtBQUVEOzs7Ozs7OztHQVFHIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgREcgZnJvbSAnZGF0YWdyb2stYXBpL2RnJztcbmltcG9ydCAqIGFzIHVpIGZyb20gJ2RhdGFncm9rLWFwaS91aSc7XG5pbXBvcnQge1N1YmplY3R9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgdHlwZSBJdGVtVHlwZSA9IHtbXzpzdHJpbmddOiBhbnl9O1xuZXhwb3J0IHR5cGUgSXRlbXNHcmlkT3B0aW9ucyA9IHtcbiAgICByZW1vdmVCdXR0b25Ub29sdGlwPzogc3RyaW5nLFxuICAgIGFkZEJ1dHRvblRvb2x0aXA/OiBzdHJpbmcsXG4gICAgYWxsb3dSZW1vdmU/OiBib29sZWFuLFxuICAgIGFsbG93QWRkPzogYm9vbGVhbixcbiAgICBob3Jpem9udGFsSW5wdXROYW1lcz86IGJvb2xlYW4sXG4gICAgbmV3SXRlbUZ1bmN0aW9uPzogKCkgPT4gSXRlbVR5cGUsXG4gICAgY3VzdG9tSW5wdXRzPzoge1trZXk6IHN0cmluZ106IChpdGVtOiBJdGVtVHlwZSkgPT4gSW5wdXRUeXBlfVxufTtcblxuZXhwb3J0IHR5cGUgSW5wdXRUeXBlID0ge1xuICAgIGlucHV0PzogSFRNTEVsZW1lbnQsXG4gICAgcm9vdDogSFRNTEVsZW1lbnQsXG4gICAgdmFsdWU6IGFueSxcbiAgICBvbkNoYW5nZWQ6IChhY3Rpb246ICgpID0+IHZvaWQpID0+IHZvaWQsXG4gICAgYWRkT3B0aW9ucz86IChlbDogSFRNTEVsZW1lbnQpID0+IHZvaWRcbn1cblxuLyoqIEVkaXRvciBmb3IgcHJlZGVmaW5lZCBwcm9wZXJ0aWVzIGluIGEgZ3JpZCBmb3JtLiBTdXBwb3J0cyBhZGRpbmcsIHJlbW92aW5nIGFuZCBlZGl0aW5nIG9mIHByb3BzLiAqL1xuZXhwb3J0IGNsYXNzIEl0ZW1zR3JpZCB7XG4gIHByaXZhdGUgX3Jvb3Q6IEhUTUxEaXZFbGVtZW50O1xuICBwcml2YXRlIF9pdGVtczoge1trZXk6IHN0cmluZ106IGFueX1bXTtcblxuICAvKiogT2JzZXJ2YWJsZSBmb3Igd2hlbiB0aGUgYWRkZWQgaXRlbSBpcyBjaGFuZ2UgKi9cbiAgcHVibGljIG9uSXRlbUNoYW5nZWQ6IFN1YmplY3Q8e2l0ZW06SXRlbVR5cGUsIGZpZWxkTmFtZTogc3RyaW5nfT4gPSBuZXcgU3ViamVjdCgpO1xuICAvKiogT2JzZXJ2YWJsZSBmb3Igd2hlbiB0aGUgYWRkaW5nIGl0ZW0gaXMgY2hhbmdlICovXG4gIHB1YmxpYyBvbkFkZGluZ0l0ZW1DaGFuZ2VkOiBTdWJqZWN0PHtpdGVtOkl0ZW1UeXBlLCBmaWVsZE5hbWU6IHN0cmluZ30+ID0gbmV3IFN1YmplY3QoKTtcbiAgLyoqIE9ic2VydmFibGUgZm9yIHdoZW4gdGhlIGl0ZW0gaXMgYWRkZWQgKi9cbiAgcHVibGljIG9uSXRlbUFkZGVkOiBTdWJqZWN0PEl0ZW1UeXBlPiA9IG5ldyBTdWJqZWN0KCk7XG4gIC8qKiBPYnNlcnZhYmxlIGZvciB3aGVuIHRoZSBpdGVtIGlzIHJlbW92ZWQgKi9cbiAgcHVibGljIG9uSXRlbVJlbW92ZWQ6IFN1YmplY3Q8SXRlbVR5cGU+ID0gbmV3IFN1YmplY3QoKTtcblxuICBwcm9wZXJ0aWVzOiBERy5Qcm9wZXJ0eVtdO1xuICBvcHRpb25zOiBJdGVtc0dyaWRPcHRpb25zID1cbiAgICB7cmVtb3ZlQnV0dG9uVG9vbHRpcDogJ1JlbW92ZSBpdGVtJywgYWRkQnV0dG9uVG9vbHRpcDogJ0FkZCBpdGVtJywgYWxsb3dBZGQ6IHRydWUsIGFsbG93UmVtb3ZlOiB0cnVlfTtcbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIEl0ZW1zR3JpZCB3aGljaCBpcyBhIGdyaWQgZm9ybSBmb3IgZWRpdGluZyBwcm9wZXJ0aWVzLlxuICAgICAqIEBwYXJhbSB7REcuUHJvcGVydHlbXX1wcm9wZXJ0aWVzIC0gcHJvcGVydGllcyB0byBiZSBlZGl0ZWRcbiAgICAgKiBAcGFyYW0ge0l0ZW1UeXBlcFtdfWl0ZW1zIC0gaXRlbXMgdG8gYmUgZWRpdGVkXG4gICAgICogQHBhcmFtIHtJdGVtc0dyaWRPcHRpb25zfW9wdGlvbnMgLSBvcHRpb25zIGZvciB0aGUgZ3JpZFxuICAgICAqIE9wdGlvbnMgaW5jbHVkZTpcbiAgICAgKiByZW1vdmVCdXR0b25Ub29sdGlwIC0gdG9vbHRpcCBmb3IgdGhlIHJlbW92ZSBidXR0b24gLSBkZWZhdWx0IGlzICdSZW1vdmUgaXRlbSdcbiAgICAgKiBhZGRCdXR0b25Ub29sdGlwIC0gdG9vbHRpcCBmb3IgdGhlIGFkZCBidXR0b24gLSBkZWZhdWx0IGlzICdBZGQgaXRlbSdcbiAgICAgKiBhbGxvd1JlbW92ZSAtIHdoZXRoZXIgdG8gYWxsb3cgcmVtb3ZpbmcgaXRlbXMgLSBkZWZhdWx0IGlzIHRydWVcbiAgICAgKiBhbGxvd0FkZCAtIHdoZXRoZXIgdG8gYWxsb3cgYWRkaW5nIGl0ZW1zIC0gZGVmYXVsdCBpcyB0cnVlXG4gICAgICogaG9yaXpvbnRhbElucHV0TmFtZXMgLSBTaG93IHRoZSBpbnB1dCBuYW1lcyBuZXh0IHRvIGludHB1dCAtIGRlZmF1bHQgaXMgZmFsc2UsIG5hbWVzIGFyZSBzaG93biBhYm92ZSB0aGUgZ3JpZC5cbiAgICAgKiBuZXdJdGVtRnVuY3Rpb24gLSBmdW5jdGlvbiB0aGF0IHJldHVybnMgbmV3IGl0ZW0gLSBkZWZhdWx0IGlzIHVuZGVmaW5kLCBpbiB3aGljaCBjYXNlIGFuIGVtcHR5IG9iamVjdCBpcyBjcmVhdGVkLlxuICAgICAqL1xuICBjb25zdHJ1Y3Rvcihwcm9wZXJ0aWVzOiBERy5Qcm9wZXJ0eVtdLCBpdGVtczogSXRlbVR5cGVbXSA9IFtdLCBvcHRpb25zOiBJdGVtc0dyaWRPcHRpb25zID0ge30pIHtcbiAgICB0aGlzLnByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzO1xuICAgIHRoaXMub3B0aW9ucyA9IHsuLi50aGlzLm9wdGlvbnMsIC4uLm9wdGlvbnN9O1xuICAgIHRoaXMuX3Jvb3QgPSB1aS5kaXZWKFtdLFxuICAgICAge3N0eWxlOiB7XG4gICAgICAgIGRpc3BsYXk6ICdncmlkJywgZ3JpZFRlbXBsYXRlQ29sdW1uczogYHJlcGVhdCgke3RoaXMucHJvcGVydGllcy5sZW5ndGh9LCAxZnIpYCxcbiAgICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsIGdhcDogJzEycHgnfX0pO1xuICAgIHRoaXMuX2l0ZW1zID0gaXRlbXM7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIGdldCByb290KCk6IEhUTUxEaXZFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5fcm9vdDtcbiAgfVxuXG4gIGdldCBpdGVtcygpOiB7W2tleTogc3RyaW5nXTogYW55fVtdIHtcbiAgICByZXR1cm4gdGhpcy5faXRlbXM7XG4gIH1cblxuICBwcml2YXRlIHJlbmRlcigpOiB2b2lkIHtcbiAgICB1aS5lbXB0eSh0aGlzLl9yb290KTtcbiAgICBpZiAoIXRoaXMub3B0aW9ucy5ob3Jpem9udGFsSW5wdXROYW1lcykge1xuICAgICAgZm9yIChjb25zdCBwcm9wIG9mIHRoaXMucHJvcGVydGllcykge1xuICAgICAgICBjb25zdCBoZWFkZXIgPSB1aS5kaXZUZXh0KHByb3AuY2FwdGlvbiA/PyBwcm9wLm5hbWUpO1xuICAgICAgICBoZWFkZXIuc3R5bGUuZm9udFdlaWdodCA9ICdib2xkJztcbiAgICAgICAgdGhpcy5fcm9vdC5hcHBlbmRDaGlsZChoZWFkZXIpO1xuICAgICAgfVxuICAgIH1cbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcy5faXRlbXMpIHtcbiAgICAgIGNvbnN0IGVkaXRvcnMgPSB0aGlzLmdldEl0ZW1EaXYoaXRlbSk7XG4gICAgICAvLyBpZiAoZWRpdG9ycy5sZW5ndGggIT09IHRoaXMucHJvcGVydGllcy5sZW5ndGggKyAxKVxuICAgICAgLy8gICBlZGl0b3JzLnB1c2godWkuZGl2KCkpO1xuICAgICAgZm9yIChjb25zdCBlZGl0b3Igb2YgZWRpdG9ycylcbiAgICAgICAgdGhpcy5fcm9vdC5hcHBlbmRDaGlsZChlZGl0b3IpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdGlvbnMuYWxsb3dBZGQpIHtcbiAgICAgIGNvbnN0IG5ld0VkaXRvciA9IHRoaXMuZ2V0SXRlbURpdih1bmRlZmluZWQsIHRydWUpO1xuICAgICAgZm9yIChjb25zdCBlZGl0b3Igb2YgbmV3RWRpdG9yKVxuICAgICAgICB0aGlzLl9yb290LmFwcGVuZENoaWxkKGVkaXRvcik7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRJdGVtRGl2KGl0ZW06IEl0ZW1UeXBlID0ge30sIGlzQWRkaW5nPzogYm9vbGVhbik6IEhUTUxFbGVtZW50W10ge1xuICAgIGNvbnN0IGVkaXRvcnM6IEhUTUxFbGVtZW50W10gPSBbXTtcblxuICAgIGNvbnN0IGlucHV0c01hcDoge1tfOiBzdHJpbmddOiBJbnB1dFR5cGV9ID0ge307XG4gICAgbGV0IGxhc3RJbnB1dDogSW5wdXRUeXBlIHwgbnVsbCA9IG51bGw7XG4gICAgZm9yIChjb25zdCBwcm9wIG9mIHRoaXMucHJvcGVydGllcykge1xuICAgICAgaWYgKGl0ZW1bcHJvcC5uYW1lXSA9PT0gdW5kZWZpbmVkKVxuICAgICAgICBpdGVtW3Byb3AubmFtZV0gPSBudWxsOyAvLyBuZWVkZWQgZm9yIGRhdGUgZWRpdG9yLCBpdCBjYW4gbm90IGhhbmRsZSB1bmRlZmluZWRcbiAgICAgIGNvbnN0IGlucHV0ID0gdGhpcy5vcHRpb25zLmN1c3RvbUlucHV0cz8uW3Byb3AubmFtZV0gPyB0aGlzLm9wdGlvbnMuY3VzdG9tSW5wdXRzW3Byb3AubmFtZV0oaXRlbSkgOlxuICAgICAgICB1aS5pbnB1dC5mb3JQcm9wZXJ0eShwcm9wLCBpdGVtKTtcbiAgICAgIGVkaXRvcnMucHVzaCh0aGlzLm9wdGlvbnMuaG9yaXpvbnRhbElucHV0TmFtZXMgPyBpbnB1dC5yb290IDogdGhpcy5oaWRlTGFiZWwoaW5wdXQucm9vdCkpO1xuICAgICAgaWYgKHByb3AucHJvcGVydHlUeXBlICE9PSBERy5UWVBFLkJPT0wpXG4gICAgICAgIGlucHV0LmlucHV0ICYmIChpbnB1dC5pbnB1dC5zdHlsZS53aWR0aCA9ICcxMDAlJyk7XG4gICAgICBpbnB1dHNNYXBbcHJvcC5uYW1lXSA9IGlucHV0O1xuICAgICAgaW5wdXQub25DaGFuZ2VkKCgpID0+IHtcbiAgICAgICAgaXRlbVtwcm9wLm5hbWVdID0gaW5wdXQudmFsdWU7XG4gICAgICAgIGlzQWRkaW5nID8gdGhpcy5vbkFkZGluZ0l0ZW1DaGFuZ2VkLm5leHQoe2l0ZW0sIGZpZWxkTmFtZTogcHJvcC5uYW1lfSkgOlxuICAgICAgICAgIHRoaXMub25JdGVtQ2hhbmdlZC5uZXh0KHtpdGVtLCBmaWVsZE5hbWU6IHByb3AubmFtZX0pO1xuICAgICAgfSk7XG4gICAgICBpbnB1dC5yb290LnN0eWxlLmFsaWduSXRlbXMgPSAnY2VudGVyJzsgLy8gbmVlZGVkIGZvciBtb2xlY3VsZSBlZGl0b3JcbiAgICAgIGxhc3RJbnB1dCA9IGlucHV0O1xuICAgIH1cblxuICAgIGxldCBjb21wYW5pb25CdXR0b246IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XG4gICAgaWYgKGlzQWRkaW5nKSB7XG4gICAgICBjb25zdCBhZGRCdXR0b24gPSB1aS5pY29ucy5hZGQoKCkgPT4ge1xuICAgICAgICBjb25zdCBuZXdJdGVtOiBJdGVtVHlwZSA9IHRoaXMub3B0aW9ucy5uZXdJdGVtRnVuY3Rpb24gPyB0aGlzLm9wdGlvbnMubmV3SXRlbUZ1bmN0aW9uKCkgOiB7fTtcbiAgICAgICAgT2JqZWN0LmtleXMoaW5wdXRzTWFwKS5mb3JFYWNoKChwTmFtZSkgPT4ge1xuICAgICAgICAgIG5ld0l0ZW1bcE5hbWVdID0gaW5wdXRzTWFwW3BOYW1lXS52YWx1ZTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX2l0ZW1zLnB1c2gobmV3SXRlbSk7XG4gICAgICAgIHRoaXMub25JdGVtQWRkZWQubmV4dChuZXdJdGVtKTtcbiAgICAgICAgdGhpcy5yZW5kZXIoKTtcbiAgICAgIH0sIHRoaXMub3B0aW9ucy5hZGRCdXR0b25Ub29sdGlwKTtcbiAgICAgIGNvbXBhbmlvbkJ1dHRvbiA9IGFkZEJ1dHRvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCF0aGlzLm9wdGlvbnMuYWxsb3dSZW1vdmUpIHJldHVybiBlZGl0b3JzO1xuICAgICAgY29uc3QgcmVtb3ZlQnV0dG9uID0gdWkuaWNvbnMuZGVsZXRlKCgpID0+IHtcbiAgICAgICAgdGhpcy5faXRlbXMuc3BsaWNlKHRoaXMuX2l0ZW1zLmluZGV4T2YoaXRlbSksIDEpO1xuICAgICAgICB0aGlzLm9uSXRlbVJlbW92ZWQubmV4dChpdGVtKTtcbiAgICAgICAgdGhpcy5yZW5kZXIoKTtcbiAgICAgIH0sIHRoaXMub3B0aW9ucy5yZW1vdmVCdXR0b25Ub29sdGlwKTtcbiAgICAgIGNvbXBhbmlvbkJ1dHRvbiA9IHJlbW92ZUJ1dHRvbjtcbiAgICB9XG5cbiAgICAvL2VkaXRvcnMucHVzaChjb21wYW5pb25CdXR0b24pO1xuICAgIGxhc3RJbnB1dCAmJiBsYXN0SW5wdXQuYWRkT3B0aW9ucyA/IGxhc3RJbnB1dC5hZGRPcHRpb25zKGNvbXBhbmlvbkJ1dHRvbikgOlxuICAgICAgbGFzdElucHV0Py5yb290LmFwcGVuZENoaWxkKGNvbXBhbmlvbkJ1dHRvbik7XG4gICAgY29tcGFuaW9uQnV0dG9uLnN0eWxlLmNvbG9yID0gJyMyMDgzZDUnO1xuICAgIHJldHVybiBlZGl0b3JzO1xuICB9XG4gIC8vbmVlZGVkIGZvciBjb2xvciBpbnB1dFxuICBwcml2YXRlIGhpZGVMYWJlbChlbDogSFRNTEVsZW1lbnQpOiBIVE1MRWxlbWVudCB7XG4gICAgZWwuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2xhYmVsJylbMF0gJiYgZWwucmVtb3ZlQ2hpbGQoZWwuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2xhYmVsJylbMF0pO1xuICAgIHJldHVybiBlbDtcbiAgfVxufVxuXG4vKiogVXNhZ2UgZXhhbXBsZTpcbiAqIGNvbnN0IHByb3BzID0gW0RHLlByb3BlcnR5LmpzKCduYW1lMicsIERHLlRZUEUuU1RSSU5HKSxcbiAgICAgIERHLlByb3BlcnR5LmpzKCduYW1lMycsIERHLlRZUEUuTlVNKSxcbiAgICAgIERHLlByb3BlcnR5LmZyb21PcHRpb25zKHtuYW1lOiAnbmFtZTQnLCB0eXBlOiBERy5UWVBFLkRBVEVfVElNRSwgbnVsbGFibGU6IHRydWV9KV07XG4gICAgY29uc3QgaXRlbXNHcmlkID0gbmV3IEl0ZW1zR3JpZChwcm9wcyk7XG4gKiB0aGUgY29tcG9uZW50IGhhcyBhIHJvb3QgcHJvcGVydHkgdGhhdCBjYW4gYmUgYWRkZWQgdG8gdGhlIHBhZ2VcbiAgICB1aS5kaWFsb2coJ2RpYWxvZycpLmFkZChpdGVtc0dyaWQucm9vdCkuc2hvdygpO1xuICAgIGF0IGFueSBwb2ludCwgZmlsbGVkIGZpZWxkcyBjYW4gYmUgYWNjZXNzZWQgdmlhIGl0ZW1zR3JpZC5pdGVtc1xuICovXG4iXX0=
|
|
133
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXRlbXMtZ3JpZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIml0ZW1zLWdyaWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0QyxPQUFPLEtBQUssRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3RDLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFxQjdCLHVHQUF1RztBQUN2RyxNQUFNLE9BQU8sU0FBUztJQWdCbEI7Ozs7Ozs7Ozs7OztPQVlHO0lBQ0wsWUFBWSxVQUF5QixFQUFFLFFBQW9CLEVBQUUsRUFBRSxVQUE0QixFQUFFO1FBekI3RixtREFBbUQ7UUFDNUMsa0JBQWEsR0FBZ0QsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUNsRixvREFBb0Q7UUFDN0Msd0JBQW1CLEdBQWdELElBQUksT0FBTyxFQUFFLENBQUM7UUFDeEYsNENBQTRDO1FBQ3JDLGdCQUFXLEdBQXNCLElBQUksT0FBTyxFQUFFLENBQUM7UUFDdEQsOENBQThDO1FBQ3ZDLGtCQUFhLEdBQXNCLElBQUksT0FBTyxFQUFFLENBQUM7UUFHeEQsWUFBTyxHQUNMLEVBQUMsbUJBQW1CLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUMsQ0FBQztRQWV0RyxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUM3QixJQUFJLENBQUMsT0FBTyxtQ0FBTyxJQUFJLENBQUMsT0FBTyxHQUFLLE9BQU8sQ0FBQyxDQUFDO1FBQzdDLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQ3JCLEVBQUMsS0FBSyxFQUFFO2dCQUNOLE9BQU8sRUFBRSxNQUFNLEVBQUUsbUJBQW1CLEVBQUUsVUFBVSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sUUFBUTtnQkFDOUUsVUFBVSxFQUFF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Q0FBQztRQUMvQyxlQUFlLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxTQUFTLENBQUM7UUFDeEMsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUNELHdCQUF3QjtJQUNoQixTQUFTLENBQUMsRUFBZTtRQUMvQixFQUFFLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMzRixPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7Q0FDRjtBQUVEOzs7Ozs7OztHQVFHIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgREcgZnJvbSAnZGF0YWdyb2stYXBpL2RnJztcbmltcG9ydCAqIGFzIHVpIGZyb20gJ2RhdGFncm9rLWFwaS91aSc7XG5pbXBvcnQge1N1YmplY3R9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgdHlwZSBJdGVtVHlwZSA9IHtbXzpzdHJpbmddOiBhbnl9O1xuZXhwb3J0IHR5cGUgSXRlbXNHcmlkT3B0aW9ucyA9IHtcbiAgICByZW1vdmVCdXR0b25Ub29sdGlwPzogc3RyaW5nLFxuICAgIGFkZEJ1dHRvblRvb2x0aXA/OiBzdHJpbmcsXG4gICAgYWxsb3dSZW1vdmU/OiBib29sZWFuLFxuICAgIGFsbG93QWRkPzogYm9vbGVhbixcbiAgICBob3Jpem9udGFsSW5wdXROYW1lcz86IGJvb2xlYW4sXG4gICAgbmV3SXRlbUZ1bmN0aW9uPzogKCkgPT4gSXRlbVR5cGUsXG4gICAgY3VzdG9tSW5wdXRzPzoge1trZXk6IHN0cmluZ106IChpdGVtOiBJdGVtVHlwZSkgPT4gSW5wdXRUeXBlfVxufTtcblxuZXhwb3J0IHR5cGUgSW5wdXRUeXBlID0ge1xuICAgIGlucHV0PzogSFRNTEVsZW1lbnQsXG4gICAgcm9vdDogSFRNTEVsZW1lbnQsXG4gICAgdmFsdWU6IGFueSxcbiAgICBvbkNoYW5nZWQ6IChhY3Rpb246ICgpID0+IHZvaWQpID0+IHZvaWQsXG4gICAgYWRkT3B0aW9ucz86IChlbDogSFRNTEVsZW1lbnQpID0+IHZvaWRcbn1cblxuLyoqIEVkaXRvciBmb3IgcHJlZGVmaW5lZCBwcm9wZXJ0aWVzIGluIGEgZ3JpZCBmb3JtLiBTdXBwb3J0cyBhZGRpbmcsIHJlbW92aW5nIGFuZCBlZGl0aW5nIG9mIHByb3BzLiAqL1xuZXhwb3J0IGNsYXNzIEl0ZW1zR3JpZCB7XG4gIHByaXZhdGUgX3Jvb3Q6IEhUTUxEaXZFbGVtZW50O1xuICBwcml2YXRlIF9pdGVtczoge1trZXk6IHN0cmluZ106IGFueX1bXTtcblxuICAvKiogT2JzZXJ2YWJsZSBmb3Igd2hlbiB0aGUgYWRkZWQgaXRlbSBpcyBjaGFuZ2UgKi9cbiAgcHVibGljIG9uSXRlbUNoYW5nZWQ6IFN1YmplY3Q8e2l0ZW06SXRlbVR5cGUsIGZpZWxkTmFtZTogc3RyaW5nfT4gPSBuZXcgU3ViamVjdCgpO1xuICAvKiogT2JzZXJ2YWJsZSBmb3Igd2hlbiB0aGUgYWRkaW5nIGl0ZW0gaXMgY2hhbmdlICovXG4gIHB1YmxpYyBvbkFkZGluZ0l0ZW1DaGFuZ2VkOiBTdWJqZWN0PHtpdGVtOkl0ZW1UeXBlLCBmaWVsZE5hbWU6IHN0cmluZ30+ID0gbmV3IFN1YmplY3QoKTtcbiAgLyoqIE9ic2VydmFibGUgZm9yIHdoZW4gdGhlIGl0ZW0gaXMgYWRkZWQgKi9cbiAgcHVibGljIG9uSXRlbUFkZGVkOiBTdWJqZWN0PEl0ZW1UeXBlPiA9IG5ldyBTdWJqZWN0KCk7XG4gIC8qKiBPYnNlcnZhYmxlIGZvciB3aGVuIHRoZSBpdGVtIGlzIHJlbW92ZWQgKi9cbiAgcHVibGljIG9uSXRlbVJlbW92ZWQ6IFN1YmplY3Q8SXRlbVR5cGU+ID0gbmV3IFN1YmplY3QoKTtcblxuICBwcm9wZXJ0aWVzOiBERy5Qcm9wZXJ0eVtdO1xuICBvcHRpb25zOiBJdGVtc0dyaWRPcHRpb25zID1cbiAgICB7cmVtb3ZlQnV0dG9uVG9vbHRpcDogJ1JlbW92ZSBpdGVtJywgYWRkQnV0dG9uVG9vbHRpcDogJ0FkZCBpdGVtJywgYWxsb3dBZGQ6IHRydWUsIGFsbG93UmVtb3ZlOiB0cnVlfTtcbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIEl0ZW1zR3JpZCB3aGljaCBpcyBhIGdyaWQgZm9ybSBmb3IgZWRpdGluZyBwcm9wZXJ0aWVzLlxuICAgICAqIEBwYXJhbSB7REcuUHJvcGVydHlbXX1wcm9wZXJ0aWVzIC0gcHJvcGVydGllcyB0byBiZSBlZGl0ZWRcbiAgICAgKiBAcGFyYW0ge0l0ZW1UeXBlcFtdfWl0ZW1zIC0gaXRlbXMgdG8gYmUgZWRpdGVkXG4gICAgICogQHBhcmFtIHtJdGVtc0dyaWRPcHRpb25zfW9wdGlvbnMgLSBvcHRpb25zIGZvciB0aGUgZ3JpZFxuICAgICAqIE9wdGlvbnMgaW5jbHVkZTpcbiAgICAgKiByZW1vdmVCdXR0b25Ub29sdGlwIC0gdG9vbHRpcCBmb3IgdGhlIHJlbW92ZSBidXR0b24gLSBkZWZhdWx0IGlzICdSZW1vdmUgaXRlbSdcbiAgICAgKiBhZGRCdXR0b25Ub29sdGlwIC0gdG9vbHRpcCBmb3IgdGhlIGFkZCBidXR0b24gLSBkZWZhdWx0IGlzICdBZGQgaXRlbSdcbiAgICAgKiBhbGxvd1JlbW92ZSAtIHdoZXRoZXIgdG8gYWxsb3cgcmVtb3ZpbmcgaXRlbXMgLSBkZWZhdWx0IGlzIHRydWVcbiAgICAgKiBhbGxvd0FkZCAtIHdoZXRoZXIgdG8gYWxsb3cgYWRkaW5nIGl0ZW1zIC0gZGVmYXVsdCBpcyB0cnVlXG4gICAgICogaG9yaXpvbnRhbElucHV0TmFtZXMgLSBTaG93IHRoZSBpbnB1dCBuYW1lcyBuZXh0IHRvIGludHB1dCAtIGRlZmF1bHQgaXMgZmFsc2UsIG5hbWVzIGFyZSBzaG93biBhYm92ZSB0aGUgZ3JpZC5cbiAgICAgKiBuZXdJdGVtRnVuY3Rpb24gLSBmdW5jdGlvbiB0aGF0IHJldHVybnMgbmV3IGl0ZW0gLSBkZWZhdWx0IGlzIHVuZGVmaW5kLCBpbiB3aGljaCBjYXNlIGFuIGVtcHR5IG9iamVjdCBpcyBjcmVhdGVkLlxuICAgICAqL1xuICBjb25zdHJ1Y3Rvcihwcm9wZXJ0aWVzOiBERy5Qcm9wZXJ0eVtdLCBpdGVtczogSXRlbVR5cGVbXSA9IFtdLCBvcHRpb25zOiBJdGVtc0dyaWRPcHRpb25zID0ge30pIHtcbiAgICB0aGlzLnByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzO1xuICAgIHRoaXMub3B0aW9ucyA9IHsuLi50aGlzLm9wdGlvbnMsIC4uLm9wdGlvbnN9O1xuICAgIHRoaXMuX3Jvb3QgPSB1aS5kaXZWKFtdLFxuICAgICAge3N0eWxlOiB7XG4gICAgICAgIGRpc3BsYXk6ICdncmlkJywgZ3JpZFRlbXBsYXRlQ29sdW1uczogYHJlcGVhdCgke3RoaXMucHJvcGVydGllcy5sZW5ndGh9LCAxZnIpYCxcbiAgICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsIGdhcDogJzEycHgnfSwgY2xhc3NlczogJ3VpLWl0ZW1zLWdyaWQnfSk7XG4gICAgdGhpcy5faXRlbXMgPSBpdGVtcztcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgZ2V0IHJvb3QoKTogSFRNTERpdkVsZW1lbnQge1xuICAgIHJldHVybiB0aGlzLl9yb290O1xuICB9XG5cbiAgZ2V0IGl0ZW1zKCk6IHtba2V5OiBzdHJpbmddOiBhbnl9W10ge1xuICAgIHJldHVybiB0aGlzLl9pdGVtcztcbiAgfVxuXG4gIHByaXZhdGUgcmVuZGVyKCk6IHZvaWQge1xuICAgIHVpLmVtcHR5KHRoaXMuX3Jvb3QpO1xuICAgIGlmICghdGhpcy5vcHRpb25zLmhvcml6b250YWxJbnB1dE5hbWVzKSB7XG4gICAgICBmb3IgKGNvbnN0IHByb3Agb2YgdGhpcy5wcm9wZXJ0aWVzKSB7XG4gICAgICAgIGNvbnN0IGhlYWRlciA9IHVpLmRpdlRleHQocHJvcC5jYXB0aW9uID8/IHByb3AubmFtZSk7XG4gICAgICAgIGhlYWRlci5zdHlsZS5mb250V2VpZ2h0ID0gJ2JvbGQnO1xuICAgICAgICB0aGlzLl9yb290LmFwcGVuZENoaWxkKGhlYWRlcik7XG4gICAgICB9XG4gICAgfVxuICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aGlzLl9pdGVtcykge1xuICAgICAgY29uc3QgZWRpdG9ycyA9IHRoaXMuZ2V0SXRlbURpdihpdGVtKTtcbiAgICAgIC8vIGlmIChlZGl0b3JzLmxlbmd0aCAhPT0gdGhpcy5wcm9wZXJ0aWVzLmxlbmd0aCArIDEpXG4gICAgICAvLyAgIGVkaXRvcnMucHVzaCh1aS5kaXYoKSk7XG4gICAgICBmb3IgKGNvbnN0IGVkaXRvciBvZiBlZGl0b3JzKVxuICAgICAgICB0aGlzLl9yb290LmFwcGVuZENoaWxkKGVkaXRvcik7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMub3B0aW9ucy5hbGxvd0FkZCkge1xuICAgICAgY29uc3QgbmV3RWRpdG9yID0gdGhpcy5nZXRJdGVtRGl2KHRoaXMub3B0aW9ucy5uZXdJdGVtRnVuY3Rpb24/LigpID8/IHVuZGVmaW5lZCwgdHJ1ZSk7XG4gICAgICBmb3IgKGNvbnN0IGVkaXRvciBvZiBuZXdFZGl0b3IpXG4gICAgICAgIHRoaXMuX3Jvb3QuYXBwZW5kQ2hpbGQoZWRpdG9yKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldEl0ZW1EaXYoaXRlbTogSXRlbVR5cGUgPSB7fSwgaXNBZGRpbmc/OiBib29sZWFuKTogSFRNTEVsZW1lbnRbXSB7XG4gICAgY29uc3QgZWRpdG9yczogSFRNTEVsZW1lbnRbXSA9IFtdO1xuXG4gICAgY29uc3QgaW5wdXRzTWFwOiB7W186IHN0cmluZ106IElucHV0VHlwZX0gPSB7fTtcbiAgICBsZXQgbGFzdElucHV0OiBJbnB1dFR5cGUgfCBudWxsID0gbnVsbDtcbiAgICBmb3IgKGNvbnN0IHByb3Agb2YgdGhpcy5wcm9wZXJ0aWVzKSB7XG4gICAgICBpZiAoaXRlbVtwcm9wLm5hbWVdID09PSB1bmRlZmluZWQpXG4gICAgICAgIGl0ZW1bcHJvcC5uYW1lXSA9IG51bGw7IC8vIG5lZWRlZCBmb3IgZGF0ZSBlZGl0b3IsIGl0IGNhbiBub3QgaGFuZGxlIHVuZGVmaW5lZFxuICAgICAgY29uc3QgaW5wdXQgPSB0aGlzLm9wdGlvbnMuY3VzdG9tSW5wdXRzPy5bcHJvcC5uYW1lXSA/IHRoaXMub3B0aW9ucy5jdXN0b21JbnB1dHNbcHJvcC5uYW1lXShpdGVtKSA6XG4gICAgICAgIHVpLmlucHV0LmZvclByb3BlcnR5KHByb3AsIGl0ZW0pO1xuICAgICAgZWRpdG9ycy5wdXNoKHRoaXMub3B0aW9ucy5ob3Jpem9udGFsSW5wdXROYW1lcyA/IGlucHV0LnJvb3QgOiB0aGlzLmhpZGVMYWJlbChpbnB1dC5yb290KSk7XG4gICAgICBpZiAocHJvcC5wcm9wZXJ0eVR5cGUgIT09IERHLlRZUEUuQk9PTCAmJiBwcm9wLm5hbWUudG9Mb3dlckNhc2UoKSAhPT0gJ2NvbG9yJylcbiAgICAgICAgaW5wdXQuaW5wdXQgJiYgKGlucHV0LmlucHV0LnN0eWxlLndpZHRoID0gJzEwMCUnKTtcbiAgICAgIGlucHV0c01hcFtwcm9wLm5hbWVdID0gaW5wdXQ7XG4gICAgICBpbnB1dC5vbkNoYW5nZWQoKCkgPT4ge1xuICAgICAgICBpdGVtW3Byb3AubmFtZV0gPSBpbnB1dC52YWx1ZTtcbiAgICAgICAgaXNBZGRpbmcgPyB0aGlzLm9uQWRkaW5nSXRlbUNoYW5nZWQubmV4dCh7aXRlbSwgZmllbGROYW1lOiBwcm9wLm5hbWV9KSA6XG4gICAgICAgICAgdGhpcy5vbkl0ZW1DaGFuZ2VkLm5leHQoe2l0ZW0sIGZpZWxkTmFtZTogcHJvcC5uYW1lfSk7XG4gICAgICB9KTtcbiAgICAgIGlucHV0LnJvb3Quc3R5bGUuYWxpZ25JdGVtcyA9ICdjZW50ZXInOyAvLyBuZWVkZWQgZm9yIG1vbGVjdWxlIGVkaXRvclxuICAgICAgbGFzdElucHV0ID0gaW5wdXQ7XG4gICAgfVxuXG4gICAgbGV0IGNvbXBhbmlvbkJ1dHRvbjogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcbiAgICBpZiAoaXNBZGRpbmcpIHtcbiAgICAgIGNvbnN0IGFkZEJ1dHRvbiA9IHVpLmljb25zLmFkZCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IG5ld0l0ZW06IEl0ZW1UeXBlID0gdGhpcy5vcHRpb25zLm5ld0l0ZW1GdW5jdGlvbiA/IHRoaXMub3B0aW9ucy5uZXdJdGVtRnVuY3Rpb24oKSA6IHt9O1xuICAgICAgICBPYmplY3Qua2V5cyhpbnB1dHNNYXApLmZvckVhY2goKHBOYW1lKSA9PiB7XG4gICAgICAgICAgbmV3SXRlbVtwTmFtZV0gPSBpbnB1dHNNYXBbcE5hbWVdLnZhbHVlO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5faXRlbXMucHVzaChuZXdJdGVtKTtcbiAgICAgICAgdGhpcy5vbkl0ZW1BZGRlZC5uZXh0KG5ld0l0ZW0pO1xuICAgICAgICB0aGlzLnJlbmRlcigpO1xuICAgICAgfSwgdGhpcy5vcHRpb25zLmFkZEJ1dHRvblRvb2x0aXApO1xuICAgICAgY29tcGFuaW9uQnV0dG9uID0gYWRkQnV0dG9uO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIXRoaXMub3B0aW9ucy5hbGxvd1JlbW92ZSkgcmV0dXJuIGVkaXRvcnM7XG4gICAgICBjb25zdCByZW1vdmVCdXR0b24gPSB1aS5pY29ucy5kZWxldGUoKCkgPT4ge1xuICAgICAgICB0aGlzLl9pdGVtcy5zcGxpY2UodGhpcy5faXRlbXMuaW5kZXhPZihpdGVtKSwgMSk7XG4gICAgICAgIHRoaXMub25JdGVtUmVtb3ZlZC5uZXh0KGl0ZW0pO1xuICAgICAgICB0aGlzLnJlbmRlcigpO1xuICAgICAgfSwgdGhpcy5vcHRpb25zLnJlbW92ZUJ1dHRvblRvb2x0aXApO1xuICAgICAgY29tcGFuaW9uQnV0dG9uID0gcmVtb3ZlQnV0dG9uO1xuICAgIH1cblxuICAgIC8vZWRpdG9ycy5wdXNoKGNvbXBhbmlvbkJ1dHRvbik7XG4gICAgbGFzdElucHV0ICYmIGxhc3RJbnB1dC5hZGRPcHRpb25zID8gbGFzdElucHV0LmFkZE9wdGlvbnMoY29tcGFuaW9uQnV0dG9uKSA6XG4gICAgICBsYXN0SW5wdXQ/LnJvb3QuYXBwZW5kQ2hpbGQoY29tcGFuaW9uQnV0dG9uKTtcbiAgICBjb21wYW5pb25CdXR0b24uc3R5bGUuY29sb3IgPSAnIzIwODNkNSc7XG4gICAgcmV0dXJuIGVkaXRvcnM7XG4gIH1cbiAgLy9uZWVkZWQgZm9yIGNvbG9yIGlucHV0XG4gIHByaXZhdGUgaGlkZUxhYmVsKGVsOiBIVE1MRWxlbWVudCk6IEhUTUxFbGVtZW50IHtcbiAgICBlbC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnbGFiZWwnKVswXSAmJiBlbC5yZW1vdmVDaGlsZChlbC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnbGFiZWwnKVswXSk7XG4gICAgcmV0dXJuIGVsO1xuICB9XG59XG5cbi8qKiBVc2FnZSBleGFtcGxlOlxuICogY29uc3QgcHJvcHMgPSBbREcuUHJvcGVydHkuanMoJ25hbWUyJywgREcuVFlQRS5TVFJJTkcpLFxuICAgICAgREcuUHJvcGVydHkuanMoJ25hbWUzJywgREcuVFlQRS5OVU0pLFxuICAgICAgREcuUHJvcGVydHkuZnJvbU9wdGlvbnMoe25hbWU6ICduYW1lNCcsIHR5cGU6IERHLlRZUEUuREFURV9USU1FLCBudWxsYWJsZTogdHJ1ZX0pXTtcbiAgICBjb25zdCBpdGVtc0dyaWQgPSBuZXcgSXRlbXNHcmlkKHByb3BzKTtcbiAqIHRoZSBjb21wb25lbnQgaGFzIGEgcm9vdCBwcm9wZXJ0eSB0aGF0IGNhbiBiZSBhZGRlZCB0byB0aGUgcGFnZVxuICAgIHVpLmRpYWxvZygnZGlhbG9nJykuYWRkKGl0ZW1zR3JpZC5yb290KS5zaG93KCk7XG4gICAgYXQgYW55IHBvaW50LCBmaWxsZWQgZmllbGRzIGNhbiBiZSBhY2Nlc3NlZCB2aWEgaXRlbXNHcmlkLml0ZW1zXG4gKi9cbiJdfQ==
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import * as DG from 'datagrok-api/dg';
|
|
2
|
+
import { Subject } from 'rxjs';
|
|
3
|
+
export declare enum LineDirection {
|
|
4
|
+
lower = "lower",
|
|
5
|
+
higher = "higher"
|
|
6
|
+
}
|
|
7
|
+
export type ILineOpts = {
|
|
8
|
+
id: number;
|
|
9
|
+
color?: string;
|
|
10
|
+
directionCol?: string;
|
|
11
|
+
direction?: LineDirection;
|
|
12
|
+
opacity?: number;
|
|
13
|
+
width?: number;
|
|
14
|
+
};
|
|
15
|
+
export type IConnectedPoints = {
|
|
16
|
+
[key: number]: ILineOpts[];
|
|
17
|
+
};
|
|
18
|
+
export type ILines = {
|
|
19
|
+
[key: number]: IConnectedPoints;
|
|
20
|
+
};
|
|
21
|
+
export declare class ScatterPlotLinesRenderer {
|
|
22
|
+
sp: DG.ScatterPlotViewer;
|
|
23
|
+
xAxis: string;
|
|
24
|
+
yAxis: string;
|
|
25
|
+
currentLineIdx: number;
|
|
26
|
+
lines: ILines;
|
|
27
|
+
lineClicked: Subject<number>;
|
|
28
|
+
lineHover: Subject<number>;
|
|
29
|
+
canvas: any;
|
|
30
|
+
paths: {
|
|
31
|
+
[key: number]: Path2D;
|
|
32
|
+
};
|
|
33
|
+
mouseOverLineId: number | null;
|
|
34
|
+
get currentLineId(): number;
|
|
35
|
+
set currentLineId(id: number);
|
|
36
|
+
constructor(sp: DG.ScatterPlotViewer, xAxis: string, yAxis: string, lines: ILines);
|
|
37
|
+
renderLines(): void;
|
|
38
|
+
checkCursorOnLine(x: number, y: number): number | null;
|
|
39
|
+
midPointBtw(p1: DG.Point, p2: DG.Point): DG.Point;
|
|
40
|
+
findPerpendicularPointOnCurve(idx: number, x1: number, y1: number, x2: number, y2: number): DG.Point;
|
|
41
|
+
canvasArrow(path: Path2D, arrowEndX: number, arrowEndY: number, quadX: number, quadY: number): void;
|
|
42
|
+
getArrowPoint(lineOpts: ILineOpts, p1: number, p2: number, pointFrom: DG.Point, pointTo: DG.Point): DG.Point | null;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=render-lines-on-sp.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render-lines-on-sp.d.ts","sourceRoot":"","sources":["render-lines-on-sp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAE/B,oBAAY,aAAa;IACrB,KAAK,UAAU;IACf,MAAM,WAAW;CACpB;AAED,MAAM,MAAM,SAAS,GAAG;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE,CAAA;CAAE,CAAA;AAE7D,MAAM,MAAM,MAAM,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,gBAAgB,CAAA;CAAE,CAAA;AAExD,qBAAa,wBAAwB;IACjC,EAAE,EAAE,EAAE,CAAC,iBAAiB,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,SAAM;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,kBAAyB;IACpC,SAAS,kBAAyB;IAClC,MAAM,EAAE,GAAG,CAAC;IACZ,KAAK,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAM;IACtC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAQ;IAEtC,IAAI,aAAa,IAAI,MAAM,CAE1B;IAED,IAAI,aAAa,CAAC,EAAE,EAAE,MAAM,EAG3B;gBAEW,EAAE,EAAE,EAAE,CAAC,iBAAiB,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAyBjF,WAAW,IAAI,IAAI;IAgDnB,iBAAiB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAWtD,WAAW,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC,KAAK;IAIjD,6BAA6B,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM;IAYzF,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAU5F,aAAa,CAAC,QAAQ,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC,KAAK,GAAG,IAAI;CAgBtH"}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import * as DG from 'datagrok-api/dg';
|
|
2
|
+
import { Subject } from 'rxjs';
|
|
3
|
+
export var LineDirection;
|
|
4
|
+
(function (LineDirection) {
|
|
5
|
+
LineDirection["lower"] = "lower";
|
|
6
|
+
LineDirection["higher"] = "higher";
|
|
7
|
+
})(LineDirection || (LineDirection = {}));
|
|
8
|
+
export class ScatterPlotLinesRenderer {
|
|
9
|
+
get currentLineId() {
|
|
10
|
+
return this.currentLineIdx;
|
|
11
|
+
}
|
|
12
|
+
set currentLineId(id) {
|
|
13
|
+
this.currentLineIdx = id;
|
|
14
|
+
this.sp.render(this.canvas.getContext('2d'));
|
|
15
|
+
}
|
|
16
|
+
constructor(sp, xAxis, yAxis, lines) {
|
|
17
|
+
this.currentLineIdx = -1;
|
|
18
|
+
this.lineClicked = new Subject();
|
|
19
|
+
this.lineHover = new Subject();
|
|
20
|
+
this.paths = {};
|
|
21
|
+
this.mouseOverLineId = null;
|
|
22
|
+
this.sp = sp;
|
|
23
|
+
this.xAxis = xAxis;
|
|
24
|
+
this.yAxis = yAxis;
|
|
25
|
+
this.lines = lines;
|
|
26
|
+
this.canvas = this.sp.getInfo()['canvas'];
|
|
27
|
+
this.canvas.addEventListener('mousedown', (event) => {
|
|
28
|
+
if (this.mouseOverLineId !== null)
|
|
29
|
+
this.lineClicked.next(this.mouseOverLineId);
|
|
30
|
+
});
|
|
31
|
+
this.canvas.addEventListener('mousemove', (event) => {
|
|
32
|
+
this.mouseOverLineId = this.checkCursorOnLine(event.offsetX, event.offsetY);
|
|
33
|
+
if (this.mouseOverLineId !== null)
|
|
34
|
+
this.lineHover.next(this.mouseOverLineId);
|
|
35
|
+
});
|
|
36
|
+
sp.onEvent('d4-before-draw-scene')
|
|
37
|
+
.subscribe((_) => {
|
|
38
|
+
this.renderLines();
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
renderLines() {
|
|
42
|
+
var _a, _b;
|
|
43
|
+
const ctx = this.canvas.getContext('2d');
|
|
44
|
+
const x = this.sp.dataFrame.columns.byName(this.xAxis);
|
|
45
|
+
const y = this.sp.dataFrame.columns.byName(this.yAxis);
|
|
46
|
+
for (let p1 of Object.keys(this.lines).map(Number)) {
|
|
47
|
+
if (this.sp.dataFrame.filter.get(p1)) {
|
|
48
|
+
const pointFrom = this.sp.worldToScreen(x.get(p1), y.get(p1));
|
|
49
|
+
const aX = pointFrom === null || pointFrom === void 0 ? void 0 : pointFrom.x;
|
|
50
|
+
const aY = pointFrom === null || pointFrom === void 0 ? void 0 : pointFrom.y;
|
|
51
|
+
for (let p2 of Object.keys(this.lines[p1]).map(Number)) {
|
|
52
|
+
if (this.sp.dataFrame.filter.get(p2)) {
|
|
53
|
+
const pointTo = this.sp.worldToScreen(x.get(p2), y.get(p2));
|
|
54
|
+
const bX = pointTo === null || pointTo === void 0 ? void 0 : pointTo.x;
|
|
55
|
+
const bY = pointTo === null || pointTo === void 0 ? void 0 : pointTo.y;
|
|
56
|
+
if (aX && aY && bX && bY) {
|
|
57
|
+
for (let lineIdx = 0; lineIdx < this.lines[p1][p2].length; lineIdx++) {
|
|
58
|
+
const lineOpts = this.lines[p1][p2][lineIdx];
|
|
59
|
+
const line = new Path2D();
|
|
60
|
+
this.paths[lineOpts.id] = line;
|
|
61
|
+
line.moveTo(aX, aY);
|
|
62
|
+
const color = (_a = lineOpts.color) !== null && _a !== void 0 ? _a : '0,128,0';
|
|
63
|
+
const opacity = (_b = lineOpts.opacity) !== null && _b !== void 0 ? _b : 1;
|
|
64
|
+
ctx.strokeStyle = `rgba(${color},${opacity})`;
|
|
65
|
+
ctx.lineWidth = lineOpts.width ? lineOpts.id === this.currentLineIdx ? lineOpts.width + 2 : lineOpts.width :
|
|
66
|
+
lineOpts.id === this.currentLineIdx ? 3 : 1;
|
|
67
|
+
let midPoint = this.midPointBtw(pointFrom, pointTo);
|
|
68
|
+
if (lineIdx > 0 || this.lines[p1][p2].length > 1) {
|
|
69
|
+
midPoint = this.findPerpendicularPointOnCurve(lineIdx, pointFrom.x, pointFrom.y, midPoint.x, midPoint.y);
|
|
70
|
+
}
|
|
71
|
+
line.quadraticCurveTo(midPoint.x, midPoint.y, bX, bY);
|
|
72
|
+
if (lineOpts.directionCol) {
|
|
73
|
+
const arrowPoint = this.getArrowPoint(lineOpts, p1, p2, pointFrom, pointTo);
|
|
74
|
+
if (arrowPoint)
|
|
75
|
+
this.canvasArrow(line, arrowPoint.x, arrowPoint.y, midPoint.x, midPoint.y);
|
|
76
|
+
}
|
|
77
|
+
ctx.beginPath();
|
|
78
|
+
ctx.stroke(line);
|
|
79
|
+
ctx.closePath();
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
checkCursorOnLine(x, y) {
|
|
88
|
+
const ctx = this.canvas.getContext('2d');
|
|
89
|
+
for (let id of Object.keys(this.paths).map(Number)) {
|
|
90
|
+
ctx.lineWidth = 5;
|
|
91
|
+
const inStroke = ctx.isPointInStroke(this.paths[id], x * window.devicePixelRatio, y * window.devicePixelRatio);
|
|
92
|
+
if (inStroke)
|
|
93
|
+
return id;
|
|
94
|
+
}
|
|
95
|
+
return null;
|
|
96
|
+
}
|
|
97
|
+
midPointBtw(p1, p2) {
|
|
98
|
+
return new DG.Point(p1.x + (p2.x - p1.x) / 2, p1.y + (p2.y - p1.y) / 2);
|
|
99
|
+
}
|
|
100
|
+
findPerpendicularPointOnCurve(idx, x1, y1, x2, y2) {
|
|
101
|
+
let dx = x2 - x1;
|
|
102
|
+
let dy = y2 - y1;
|
|
103
|
+
const dist = Math.sqrt(dx * dx + dy * dy);
|
|
104
|
+
dx /= dist;
|
|
105
|
+
dy /= dist;
|
|
106
|
+
const perpendicularLen = 50 * Math.floor(idx / 2) + 50;
|
|
107
|
+
return idx % 2 === 0 ?
|
|
108
|
+
new DG.Point(x2 + (perpendicularLen / 2) * dy, y2 - (perpendicularLen / 2) * dx) :
|
|
109
|
+
new DG.Point(x2 - (perpendicularLen / 2) * dy, y2 + (perpendicularLen / 2) * dx);
|
|
110
|
+
}
|
|
111
|
+
canvasArrow(path, arrowEndX, arrowEndY, quadX, quadY) {
|
|
112
|
+
const arrowAngle = Math.atan2(quadX - arrowEndX, quadY - arrowEndY) + Math.PI;
|
|
113
|
+
const arrowWidth = 15;
|
|
114
|
+
path.moveTo(arrowEndX - (arrowWidth * Math.sin(arrowAngle - Math.PI / 10)), arrowEndY - (arrowWidth * Math.cos(arrowAngle - Math.PI / 10)));
|
|
115
|
+
path.lineTo(arrowEndX, arrowEndY);
|
|
116
|
+
path.lineTo(arrowEndX - (arrowWidth * Math.sin(arrowAngle + Math.PI / 10)), arrowEndY - (arrowWidth * Math.cos(arrowAngle + Math.PI / 10)));
|
|
117
|
+
}
|
|
118
|
+
getArrowPoint(lineOpts, p1, p2, pointFrom, pointTo) {
|
|
119
|
+
var _a;
|
|
120
|
+
const compareCol = this.sp.dataFrame.col(lineOpts.directionCol);
|
|
121
|
+
if (compareCol) {
|
|
122
|
+
const direction = (_a = lineOpts.direction) !== null && _a !== void 0 ? _a : LineDirection.higher;
|
|
123
|
+
switch (direction) {
|
|
124
|
+
case LineDirection.higher:
|
|
125
|
+
return compareCol.get(p1) > compareCol.get(p2) ? pointFrom : pointTo;
|
|
126
|
+
case LineDirection.lower:
|
|
127
|
+
return compareCol.get(p1) > compareCol.get(p2) ? pointTo : pointFrom;
|
|
128
|
+
default:
|
|
129
|
+
return null;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
return null;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyLWxpbmVzLW9uLXNwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsicmVuZGVyLWxpbmVzLW9uLXNwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUvQixNQUFNLENBQU4sSUFBWSxhQUdYO0FBSEQsV0FBWSxhQUFhO0lBQ3JCLGdDQUFlLENBQUE7SUFDZixrQ0FBaUIsQ0FBQTtBQUNyQixDQUFDLEVBSFcsYUFBYSxLQUFiLGFBQWEsUUFHeEI7QUFlRCxNQUFNLE9BQU8sd0JBQXdCO0lBWWpDLElBQUksYUFBYTtRQUNiLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUMvQixDQUFDO0lBRUQsSUFBSSxhQUFhLENBQUMsRUFBVTtRQUN4QixJQUFJLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQTZCLENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBRUQsWUFBWSxFQUF3QixFQUFFLEtBQWEsRUFBRSxLQUFhLEVBQUUsS0FBYTtRQWpCakYsbUJBQWMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUVwQixnQkFBVyxHQUFHLElBQUksT0FBTyxFQUFVLENBQUM7UUFDcEMsY0FBUyxHQUFHLElBQUksT0FBTyxFQUFVLENBQUM7UUFFbEMsVUFBSyxHQUE4QixFQUFFLENBQUM7UUFDdEMsb0JBQWUsR0FBa0IsSUFBSSxDQUFDO1FBWWxDLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQ2IsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLE1BQU0sR0FBSSxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBK0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUV4RSxJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsRUFBRSxDQUFDLEtBQWlCLEVBQUUsRUFBRTtZQUM1RCxJQUFJLElBQUksQ0FBQyxlQUFlLEtBQUssSUFBSTtnQkFDN0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3BELENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxLQUFpQixFQUFFLEVBQUU7WUFDNUQsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDNUUsSUFBSSxJQUFJLENBQUMsZUFBZSxLQUFLLElBQUk7Z0JBQzdCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNsRCxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxPQUFPLENBQUMsc0JBQXNCLENBQUM7YUFDN0IsU0FBUyxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUU7WUFDbEIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3ZCLENBQUMsQ0FBQyxDQUFDO0lBRVgsQ0FBQztJQUVELFdBQVc7O1FBQ1AsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUE2QixDQUFDO1FBQ3JFLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsU0FBVSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hELE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsU0FBVSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hELEtBQUssSUFBSSxFQUFFLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBRWhELElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRTtnQkFDbEMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQzlELE1BQU0sRUFBRSxHQUFHLFNBQVMsYUFBVCxTQUFTLHVCQUFULFNBQVMsQ0FBRSxDQUFDLENBQUM7Z0JBQ3hCLE1BQU0sRUFBRSxHQUFHLFNBQVMsYUFBVCxTQUFTLHVCQUFULFNBQVMsQ0FBRSxDQUFDLENBQUM7Z0JBQ3hCLEtBQUssSUFBSSxFQUFFLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFO29CQUNwRCxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUU7d0JBQ2xDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO3dCQUM1RCxNQUFNLEVBQUUsR0FBRyxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsQ0FBQyxDQUFDO3dCQUN0QixNQUFNLEVBQUUsR0FBRyxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsQ0FBQyxDQUFDO3dCQUN0QixJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRTs0QkFDdEIsS0FBSyxJQUFJLE9BQU8sR0FBRyxDQUFDLEVBQUUsT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxFQUFFO2dDQUNsRSxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dDQUM3QyxNQUFNLElBQUksR0FBRyxJQUFJLE1BQU0sRUFBRSxDQUFDO2dDQUMxQixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUM7Z0NBQy9CLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRyxFQUFFLEVBQUcsQ0FBQyxDQUFDO2dDQUN0QixNQUFNLEtBQUssR0FBRyxNQUFBLFFBQVEsQ0FBQyxLQUFLLG1DQUFJLFNBQVMsQ0FBQztnQ0FDMUMsTUFBTSxPQUFPLEdBQUcsTUFBQSxRQUFRLENBQUMsT0FBTyxtQ0FBSSxDQUFDLENBQUM7Z0NBQ3RDLEdBQUcsQ0FBQyxXQUFXLEdBQUcsUUFBUSxLQUFLLElBQUksT0FBTyxHQUFHLENBQUM7Z0NBQzlDLEdBQUcsQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO29DQUN4RyxRQUFRLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dDQUNoRCxJQUFJLFFBQVEsR0FBYSxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQztnQ0FDOUQsSUFBSSxPQUFPLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtvQ0FDOUMsUUFBUSxHQUFHLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxPQUFPLEVBQ2pELFNBQVMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQTtpQ0FDeEQ7Z0NBQ0QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0NBQ3RELElBQUksUUFBUSxDQUFDLFlBQVksRUFBRTtvQ0FDdkIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7b0NBQzVFLElBQUksVUFBVTt3Q0FDVixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7aUNBQ2xGO2dDQUNELEdBQUcsQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQ0FDaEIsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztnQ0FDakIsR0FBRyxDQUFDLFNBQVMsRUFBRSxDQUFDOzZCQUNuQjt5QkFDSjtxQkFDSjtpQkFDSjthQUNKO1NBQ0o7SUFDTCxDQUFDO0lBRUQsaUJBQWlCLENBQUMsQ0FBUyxFQUFFLENBQVM7UUFDbEMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUE2QixDQUFDO1FBQ3JFLEtBQUssSUFBSSxFQUFFLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ2hELEdBQUcsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO1lBQ2xCLE1BQU0sUUFBUSxHQUFHLEdBQUcsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUMvRyxJQUFJLFFBQVE7Z0JBQ1IsT0FBTyxFQUFFLENBQUM7U0FDakI7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQsV0FBVyxDQUFDLEVBQVksRUFBRSxFQUFZO1FBQ2xDLE9BQU8sSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFFRCw2QkFBNkIsQ0FBQyxHQUFXLEVBQUUsRUFBVSxFQUFFLEVBQVUsRUFBRSxFQUFVLEVBQUUsRUFBVTtRQUNyRixJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFBO1FBQ2hCLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUE7UUFDaEIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQTtRQUN6QyxFQUFFLElBQUksSUFBSSxDQUFBO1FBQ1YsRUFBRSxJQUFJLElBQUksQ0FBQTtRQUNWLE1BQU0sZ0JBQWdCLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUN2RCxPQUFPLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDbEIsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FBRyxDQUFDLGdCQUFnQixHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ2xGLElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEdBQUcsQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDekYsQ0FBQztJQUVELFdBQVcsQ0FBQyxJQUFZLEVBQUUsU0FBaUIsRUFBRSxTQUFpQixFQUFFLEtBQWEsRUFBRSxLQUFhO1FBQ3hGLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLFNBQVMsRUFBRSxLQUFLLEdBQUcsU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUM5RSxNQUFNLFVBQVUsR0FBRyxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEdBQUcsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUN0RSxTQUFTLEdBQUcsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDbEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEdBQUcsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUN0RSxTQUFTLEdBQUcsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVELGFBQWEsQ0FBQyxRQUFtQixFQUFFLEVBQVUsRUFBRSxFQUFVLEVBQUUsU0FBbUIsRUFBRSxPQUFpQjs7UUFDN0YsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxTQUFVLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxZQUFhLENBQUMsQ0FBQztRQUNsRSxJQUFJLFVBQVUsRUFBRTtZQUNaLE1BQU0sU0FBUyxHQUFHLE1BQUEsUUFBUSxDQUFDLFNBQVMsbUNBQUksYUFBYSxDQUFDLE1BQU0sQ0FBQztZQUM3RCxRQUFRLFNBQVMsRUFBRTtnQkFDZixLQUFLLGFBQWEsQ0FBQyxNQUFNO29CQUNyQixPQUFPLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7Z0JBQ3pFLEtBQUssYUFBYSxDQUFDLEtBQUs7b0JBQ3BCLE9BQU8sVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztnQkFDekU7b0JBQ0ksT0FBTyxJQUFJLENBQUM7YUFDbkI7U0FDSjtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7Q0FFSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIERHIGZyb20gJ2RhdGFncm9rLWFwaS9kZyc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmV4cG9ydCBlbnVtIExpbmVEaXJlY3Rpb24ge1xuICAgIGxvd2VyID0gJ2xvd2VyJyxcbiAgICBoaWdoZXIgPSAnaGlnaGVyJyxcbn1cblxuZXhwb3J0IHR5cGUgSUxpbmVPcHRzID0ge1xuICAgIGlkOiBudW1iZXI7XG4gICAgY29sb3I/OiBzdHJpbmc7XG4gICAgZGlyZWN0aW9uQ29sPzogc3RyaW5nXG4gICAgZGlyZWN0aW9uPzogTGluZURpcmVjdGlvbjtcbiAgICBvcGFjaXR5PzogbnVtYmVyO1xuICAgIHdpZHRoPzogbnVtYmVyO1xufVxuXG5leHBvcnQgdHlwZSBJQ29ubmVjdGVkUG9pbnRzID0geyBba2V5OiBudW1iZXJdOiBJTGluZU9wdHNbXSB9XG5cbmV4cG9ydCB0eXBlIElMaW5lcyA9IHsgW2tleTogbnVtYmVyXTogSUNvbm5lY3RlZFBvaW50cyB9XG5cbmV4cG9ydCBjbGFzcyBTY2F0dGVyUGxvdExpbmVzUmVuZGVyZXIge1xuICAgIHNwOiBERy5TY2F0dGVyUGxvdFZpZXdlcjtcbiAgICB4QXhpczogc3RyaW5nO1xuICAgIHlBeGlzOiBzdHJpbmc7XG4gICAgY3VycmVudExpbmVJZHggPSAtMTtcbiAgICBsaW5lczogSUxpbmVzO1xuICAgIGxpbmVDbGlja2VkID0gbmV3IFN1YmplY3Q8bnVtYmVyPigpO1xuICAgIGxpbmVIb3ZlciA9IG5ldyBTdWJqZWN0PG51bWJlcj4oKTtcbiAgICBjYW52YXM6IGFueTtcbiAgICBwYXRoczogeyBba2V5OiBudW1iZXJdOiBQYXRoMkQgfSA9IHt9O1xuICAgIG1vdXNlT3ZlckxpbmVJZDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgICBnZXQgY3VycmVudExpbmVJZCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50TGluZUlkeDtcbiAgICB9XG5cbiAgICBzZXQgY3VycmVudExpbmVJZChpZDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuY3VycmVudExpbmVJZHggPSBpZDtcbiAgICAgICAgdGhpcy5zcC5yZW5kZXIodGhpcy5jYW52YXMuZ2V0Q29udGV4dCgnMmQnKSBhcyBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQpO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKHNwOiBERy5TY2F0dGVyUGxvdFZpZXdlciwgeEF4aXM6IHN0cmluZywgeUF4aXM6IHN0cmluZywgbGluZXM6IElMaW5lcykge1xuICAgICAgICB0aGlzLnNwID0gc3A7XG4gICAgICAgIHRoaXMueEF4aXMgPSB4QXhpcztcbiAgICAgICAgdGhpcy55QXhpcyA9IHlBeGlzO1xuICAgICAgICB0aGlzLmxpbmVzID0gbGluZXM7XG4gICAgICAgIHRoaXMuY2FudmFzID0gKHRoaXMuc3AuZ2V0SW5mbygpIGFzIHsgW2luZGV4OiBzdHJpbmddOiBhbnkgfSlbJ2NhbnZhcyddO1xuXG4gICAgICAgIHRoaXMuY2FudmFzLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMubW91c2VPdmVyTGluZUlkICE9PSBudWxsKVxuICAgICAgICAgICAgICAgIHRoaXMubGluZUNsaWNrZWQubmV4dCh0aGlzLm1vdXNlT3ZlckxpbmVJZCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuY2FudmFzLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5tb3VzZU92ZXJMaW5lSWQgPSB0aGlzLmNoZWNrQ3Vyc29yT25MaW5lKGV2ZW50Lm9mZnNldFgsIGV2ZW50Lm9mZnNldFkpO1xuICAgICAgICAgICAgaWYgKHRoaXMubW91c2VPdmVyTGluZUlkICE9PSBudWxsKVxuICAgICAgICAgICAgICAgIHRoaXMubGluZUhvdmVyLm5leHQodGhpcy5tb3VzZU92ZXJMaW5lSWQpO1xuICAgICAgICB9KTtcblxuICAgICAgICBzcC5vbkV2ZW50KCdkNC1iZWZvcmUtZHJhdy1zY2VuZScpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChfOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlckxpbmVzKCk7XG4gICAgICAgICAgICB9KTtcblxuICAgIH1cblxuICAgIHJlbmRlckxpbmVzKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBjdHggPSB0aGlzLmNhbnZhcy5nZXRDb250ZXh0KCcyZCcpIGFzIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDtcbiAgICAgICAgY29uc3QgeCA9IHRoaXMuc3AuZGF0YUZyYW1lIS5jb2x1bW5zLmJ5TmFtZSh0aGlzLnhBeGlzKTtcbiAgICAgICAgY29uc3QgeSA9IHRoaXMuc3AuZGF0YUZyYW1lIS5jb2x1bW5zLmJ5TmFtZSh0aGlzLnlBeGlzKTtcbiAgICAgICAgZm9yIChsZXQgcDEgb2YgT2JqZWN0LmtleXModGhpcy5saW5lcykubWFwKE51bWJlcikpIHtcblxuICAgICAgICAgICAgaWYgKHRoaXMuc3AuZGF0YUZyYW1lLmZpbHRlci5nZXQocDEpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcG9pbnRGcm9tID0gdGhpcy5zcC53b3JsZFRvU2NyZWVuKHguZ2V0KHAxKSwgeS5nZXQocDEpKTtcbiAgICAgICAgICAgICAgICBjb25zdCBhWCA9IHBvaW50RnJvbT8ueDtcbiAgICAgICAgICAgICAgICBjb25zdCBhWSA9IHBvaW50RnJvbT8ueTtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBwMiBvZiBPYmplY3Qua2V5cyh0aGlzLmxpbmVzW3AxXSkubWFwKE51bWJlcikpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc3AuZGF0YUZyYW1lLmZpbHRlci5nZXQocDIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwb2ludFRvID0gdGhpcy5zcC53b3JsZFRvU2NyZWVuKHguZ2V0KHAyKSwgeS5nZXQocDIpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJYID0gcG9pbnRUbz8ueDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJZID0gcG9pbnRUbz8ueTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhWCAmJiBhWSAmJiBiWCAmJiBiWSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGxpbmVJZHggPSAwOyBsaW5lSWR4IDwgdGhpcy5saW5lc1twMV1bcDJdLmxlbmd0aDsgbGluZUlkeCsrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxpbmVPcHRzID0gdGhpcy5saW5lc1twMV1bcDJdW2xpbmVJZHhdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsaW5lID0gbmV3IFBhdGgyRCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBhdGhzW2xpbmVPcHRzLmlkXSA9IGxpbmU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUubW92ZVRvKGFYISwgYVkhKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY29sb3IgPSBsaW5lT3B0cy5jb2xvciA/PyAnMCwxMjgsMCc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9wYWNpdHkgPSBsaW5lT3B0cy5vcGFjaXR5ID8/IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0eC5zdHJva2VTdHlsZSA9IGByZ2JhKCR7Y29sb3J9LCR7b3BhY2l0eX0pYDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4LmxpbmVXaWR0aCA9IGxpbmVPcHRzLndpZHRoID8gbGluZU9wdHMuaWQgPT09IHRoaXMuY3VycmVudExpbmVJZHggPyBsaW5lT3B0cy53aWR0aCArIDIgOiBsaW5lT3B0cy53aWR0aCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lT3B0cy5pZCA9PT0gdGhpcy5jdXJyZW50TGluZUlkeCA/IDMgOiAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbWlkUG9pbnQ6IERHLlBvaW50ID0gdGhpcy5taWRQb2ludEJ0dyhwb2ludEZyb20sIHBvaW50VG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGluZUlkeCA+IDAgfHwgdGhpcy5saW5lc1twMV1bcDJdLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pZFBvaW50ID0gdGhpcy5maW5kUGVycGVuZGljdWxhclBvaW50T25DdXJ2ZShsaW5lSWR4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50RnJvbS54LCBwb2ludEZyb20ueSwgbWlkUG9pbnQueCwgbWlkUG9pbnQueSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lLnF1YWRyYXRpY0N1cnZlVG8obWlkUG9pbnQueCwgbWlkUG9pbnQueSwgYlgsIGJZKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxpbmVPcHRzLmRpcmVjdGlvbkNvbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYXJyb3dQb2ludCA9IHRoaXMuZ2V0QXJyb3dQb2ludChsaW5lT3B0cywgcDEsIHAyLCBwb2ludEZyb20sIHBvaW50VG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFycm93UG9pbnQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jYW52YXNBcnJvdyhsaW5lLCBhcnJvd1BvaW50LngsIGFycm93UG9pbnQueSwgbWlkUG9pbnQueCwgbWlkUG9pbnQueSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4LmJlZ2luUGF0aCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdHguc3Ryb2tlKGxpbmUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdHguY2xvc2VQYXRoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2hlY2tDdXJzb3JPbkxpbmUoeDogbnVtYmVyLCB5OiBudW1iZXIpOiBudW1iZXIgfCBudWxsIHtcbiAgICAgICAgY29uc3QgY3R4ID0gdGhpcy5jYW52YXMuZ2V0Q29udGV4dCgnMmQnKSBhcyBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ7XG4gICAgICAgIGZvciAobGV0IGlkIG9mIE9iamVjdC5rZXlzKHRoaXMucGF0aHMpLm1hcChOdW1iZXIpKSB7XG4gICAgICAgICAgICBjdHgubGluZVdpZHRoID0gNTtcbiAgICAgICAgICAgIGNvbnN0IGluU3Ryb2tlID0gY3R4LmlzUG9pbnRJblN0cm9rZSh0aGlzLnBhdGhzW2lkXSwgeCAqIHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvLCB5ICogd2luZG93LmRldmljZVBpeGVsUmF0aW8pO1xuICAgICAgICAgICAgaWYgKGluU3Ryb2tlKVxuICAgICAgICAgICAgICAgIHJldHVybiBpZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBtaWRQb2ludEJ0dyhwMTogREcuUG9pbnQsIHAyOiBERy5Qb2ludCk6IERHLlBvaW50IHtcbiAgICAgICAgcmV0dXJuIG5ldyBERy5Qb2ludChwMS54ICsgKHAyLnggLSBwMS54KSAvIDIsIHAxLnkgKyAocDIueSAtIHAxLnkpIC8gMik7XG4gICAgfVxuXG4gICAgZmluZFBlcnBlbmRpY3VsYXJQb2ludE9uQ3VydmUoaWR4OiBudW1iZXIsIHgxOiBudW1iZXIsIHkxOiBudW1iZXIsIHgyOiBudW1iZXIsIHkyOiBudW1iZXIpIHtcbiAgICAgICAgbGV0IGR4ID0geDIgLSB4MVxuICAgICAgICBsZXQgZHkgPSB5MiAtIHkxXG4gICAgICAgIGNvbnN0IGRpc3QgPSBNYXRoLnNxcnQoZHggKiBkeCArIGR5ICogZHkpXG4gICAgICAgIGR4IC89IGRpc3RcbiAgICAgICAgZHkgLz0gZGlzdFxuICAgICAgICBjb25zdCBwZXJwZW5kaWN1bGFyTGVuID0gNTAgKiBNYXRoLmZsb29yKGlkeCAvIDIpICsgNTA7XG4gICAgICAgIHJldHVybiBpZHggJSAyID09PSAwID9cbiAgICAgICAgICAgIG5ldyBERy5Qb2ludCh4MiArIChwZXJwZW5kaWN1bGFyTGVuIC8gMikgKiBkeSwgeTIgLSAocGVycGVuZGljdWxhckxlbiAvIDIpICogZHgpIDpcbiAgICAgICAgICAgIG5ldyBERy5Qb2ludCh4MiAtIChwZXJwZW5kaWN1bGFyTGVuIC8gMikgKiBkeSwgeTIgKyAocGVycGVuZGljdWxhckxlbiAvIDIpICogZHgpO1xuICAgIH1cblxuICAgIGNhbnZhc0Fycm93KHBhdGg6IFBhdGgyRCwgYXJyb3dFbmRYOiBudW1iZXIsIGFycm93RW5kWTogbnVtYmVyLCBxdWFkWDogbnVtYmVyLCBxdWFkWTogbnVtYmVyKSB7XG4gICAgICAgIGNvbnN0IGFycm93QW5nbGUgPSBNYXRoLmF0YW4yKHF1YWRYIC0gYXJyb3dFbmRYLCBxdWFkWSAtIGFycm93RW5kWSkgKyBNYXRoLlBJO1xuICAgICAgICBjb25zdCBhcnJvd1dpZHRoID0gMTU7XG4gICAgICAgIHBhdGgubW92ZVRvKGFycm93RW5kWCAtIChhcnJvd1dpZHRoICogTWF0aC5zaW4oYXJyb3dBbmdsZSAtIE1hdGguUEkgLyAxMCkpLFxuICAgICAgICAgICAgYXJyb3dFbmRZIC0gKGFycm93V2lkdGggKiBNYXRoLmNvcyhhcnJvd0FuZ2xlIC0gTWF0aC5QSSAvIDEwKSkpO1xuICAgICAgICBwYXRoLmxpbmVUbyhhcnJvd0VuZFgsIGFycm93RW5kWSk7XG4gICAgICAgIHBhdGgubGluZVRvKGFycm93RW5kWCAtIChhcnJvd1dpZHRoICogTWF0aC5zaW4oYXJyb3dBbmdsZSArIE1hdGguUEkgLyAxMCkpLFxuICAgICAgICAgICAgYXJyb3dFbmRZIC0gKGFycm93V2lkdGggKiBNYXRoLmNvcyhhcnJvd0FuZ2xlICsgTWF0aC5QSSAvIDEwKSkpO1xuICAgIH1cblxuICAgIGdldEFycm93UG9pbnQobGluZU9wdHM6IElMaW5lT3B0cywgcDE6IG51bWJlciwgcDI6IG51bWJlciwgcG9pbnRGcm9tOiBERy5Qb2ludCwgcG9pbnRUbzogREcuUG9pbnQpOiBERy5Qb2ludCB8IG51bGwge1xuICAgICAgICBjb25zdCBjb21wYXJlQ29sID0gdGhpcy5zcC5kYXRhRnJhbWUhLmNvbChsaW5lT3B0cy5kaXJlY3Rpb25Db2whKTtcbiAgICAgICAgaWYgKGNvbXBhcmVDb2wpIHtcbiAgICAgICAgICAgIGNvbnN0IGRpcmVjdGlvbiA9IGxpbmVPcHRzLmRpcmVjdGlvbiA/PyBMaW5lRGlyZWN0aW9uLmhpZ2hlcjtcbiAgICAgICAgICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBMaW5lRGlyZWN0aW9uLmhpZ2hlcjpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVDb2wuZ2V0KHAxKSA+IGNvbXBhcmVDb2wuZ2V0KHAyKSA/IHBvaW50RnJvbSA6IHBvaW50VG87XG4gICAgICAgICAgICAgICAgY2FzZSBMaW5lRGlyZWN0aW9uLmxvd2VyOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29tcGFyZUNvbC5nZXQocDEpID4gY29tcGFyZUNvbC5nZXQocDIpID8gcG9pbnRUbyA6IHBvaW50RnJvbTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbn0iXX0=
|
package/index.d.ts
DELETED
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import { after, before, category, test, expect, expectArray, expectObject } from './src/test';
|
|
2
|
-
import { errorToConsole, rectToConsole } from './src/to-console';
|
|
3
|
-
export { errorToConsole, rectToConsole, after, before, category, test, expect, expectArray, expectObject, };
|
|
4
|
-
//# sourceMappingURL=index.d.ts.map
|
package/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,EAAC,MAAM,YAAY,CAAC;AAC5F,OAAO,EAAC,cAAc,EAAE,aAAa,EAAC,MAAM,kBAAkB,CAAC;AAE/D,OAAO,EACL,cAAc,EACd,aAAa,EAEb,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAC7B,MAAM,EAAE,WAAW,EAAE,YAAY,GAClC,CAAC"}
|
package/index.js
DELETED
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import { after, before, category, test, expect, expectArray, expectObject } from './src/test';
|
|
2
|
-
import { errorToConsole, rectToConsole } from './src/to-console';
|
|
3
|
-
export { errorToConsole, rectToConsole, after, before, category, test, expect, expectArray, expectObject, };
|
|
4
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFDLE1BQU0sWUFBWSxDQUFDO0FBQzVGLE9BQU8sRUFBQyxjQUFjLEVBQUUsYUFBYSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFFL0QsT0FBTyxFQUNMLGNBQWMsRUFDZCxhQUFhLEVBRWIsS0FBSyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUM3QixNQUFNLEVBQUUsV0FBVyxFQUFFLFlBQVksR0FDbEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7YWZ0ZXIsIGJlZm9yZSwgY2F0ZWdvcnksIHRlc3QsIGV4cGVjdCwgZXhwZWN0QXJyYXksIGV4cGVjdE9iamVjdH0gZnJvbSAnLi9zcmMvdGVzdCc7XG5pbXBvcnQge2Vycm9yVG9Db25zb2xlLCByZWN0VG9Db25zb2xlfSBmcm9tICcuL3NyYy90by1jb25zb2xlJztcblxuZXhwb3J0IHtcbiAgZXJyb3JUb0NvbnNvbGUsXG4gIHJlY3RUb0NvbnNvbGUsXG5cbiAgYWZ0ZXIsIGJlZm9yZSwgY2F0ZWdvcnksIHRlc3QsXG4gIGV4cGVjdCwgZXhwZWN0QXJyYXksIGV4cGVjdE9iamVjdCxcbn07Il19
|