sidesys-generic-ui 2.4.6 → 2.4.7
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/esm2022/lib/animation/animation.component.mjs +6 -3
- package/esm2022/lib/avatar/components/profile-group/s-profile-group.component.mjs +1 -1
- package/esm2022/lib/avatar/s-avatar.component.mjs +13 -16
- package/esm2022/lib/badge/s-badge.component.mjs +7 -6
- package/esm2022/lib/bottom-status-bar/bottom-status-bar.component.mjs +7 -11
- package/esm2022/lib/breadcrum/s-breadcrum.component.mjs +7 -4
- package/esm2022/lib/button/components/button/s-button.component.mjs +7 -3
- package/esm2022/lib/card/s-card.component.mjs +10 -7
- package/esm2022/lib/checkbox/checkbox-new/s-checkbox.component.mjs +12 -5
- package/esm2022/lib/checkbox/s-checkbox.component.mjs +8 -8
- package/esm2022/lib/collapse/s-collapse.component.mjs +7 -4
- package/esm2022/lib/company-logo/s-company-logo.component.mjs +9 -5
- package/esm2022/lib/container/s-container.component.mjs +6 -3
- package/esm2022/lib/content/s-content.component.mjs +6 -3
- package/esm2022/lib/dynamic-form/s-dynamic-form.component.mjs +1 -1
- package/esm2022/lib/empty/empty.component.mjs +4 -3
- package/esm2022/lib/footer/s-footer.component.mjs +3 -3
- package/esm2022/lib/grid-multi-inputs/grid-multi-inputs.component.mjs +1 -1
- package/esm2022/lib/icon-material/s-icon-material.component.mjs +6 -3
- package/esm2022/lib/input/components/calendar/s-calendar.component.mjs +11 -14
- package/esm2022/lib/input/components/color/s-color.component.mjs +10 -8
- package/esm2022/lib/input/components/error-control/s-error-control.component.mjs +18 -15
- package/esm2022/lib/input/components/input/s-input-model.mjs +2 -6
- package/esm2022/lib/input/components/input/s-input.component.mjs +11 -5
- package/esm2022/lib/input/components/input-number/s-input-number.component.mjs +12 -12
- package/esm2022/lib/input/components/input-textarea/s-input-textarea.component.mjs +11 -8
- package/esm2022/lib/input/components/slider/s-slider.component.mjs +21 -13
- package/esm2022/lib/input/components/time/s-time.component.mjs +11 -14
- package/esm2022/lib/input/components/validation-error/s-validation-error.component.mjs +7 -4
- package/esm2022/lib/link/s-link.component.mjs +6 -3
- package/esm2022/lib/list/s-list.component.mjs +6 -3
- package/esm2022/lib/list-simple/s-list-simple.component.mjs +6 -3
- package/esm2022/lib/modal/modal-confirm/modal-confirm.component.mjs +6 -13
- package/esm2022/lib/modal/modal-confirm/models/modal-confirm.interface.mjs +1 -1
- package/esm2022/lib/modal/modal-confirm/services/modal-confirm.service.mjs +1 -1
- package/esm2022/lib/navbar/components/icon-menu/components/s-notificaction.component.mjs +1 -1
- package/esm2022/lib/navbar/components/icon-menu/s-icon-menu.component.mjs +1 -1
- package/esm2022/lib/navbar/components/menu-main/s-menu-main.component.mjs +1 -1
- package/esm2022/lib/navbar/s-navbar.component.mjs +9 -3
- package/esm2022/lib/pagination/s-pagination.component.mjs +7 -4
- package/esm2022/lib/popup/s-popup.component.mjs +22 -19
- package/esm2022/lib/precode/s-precode.component.mjs +9 -7
- package/esm2022/lib/progressbar/s-progressbar.component.mjs +6 -3
- package/esm2022/lib/radio/s-radio.component.mjs +13 -11
- package/esm2022/lib/select/select/s-select.component.mjs +12 -8
- package/esm2022/lib/select/select-multiple/s-select-multiple-model.mjs +1 -1
- package/esm2022/lib/select/select-multiple/s-select-multiple.component.mjs +12 -10
- package/esm2022/lib/select/select-multiple-old/s-select-multiple-old.component.mjs +1 -1
- package/esm2022/lib/select/select-simple/s-select-simple.component.mjs +1 -1
- package/esm2022/lib/sidebar/s-sidebar.component.mjs +6 -3
- package/esm2022/lib/spinner/s-spinner.component.mjs +1 -1
- package/esm2022/lib/sub-menu/s-sub-menu.component.mjs +1 -1
- package/esm2022/lib/table-complete/table-complete.component.mjs +7 -3
- package/esm2022/lib/table-double/table-double.component.mjs +4 -3
- package/esm2022/lib/table-double/table-double.model.mjs +1 -1
- package/esm2022/lib/table-double-complete/table-double-complete.component.mjs +6 -4
- package/esm2022/lib/table-double-complete/table-double-complete.model.mjs +1 -1
- package/esm2022/lib/table-t/s-tablet.component.mjs +6 -3
- package/esm2022/lib/table-t/table-actions-buttons/interfaces/TypeActions.interface.mjs +1 -1
- package/esm2022/lib/table-t/table-actions-buttons/table-actions-buttons.component.mjs +6 -3
- package/esm2022/lib/tabs/models/configTabs.interface.mjs +1 -1
- package/esm2022/lib/tabs/s-tabs.component.mjs +8 -4
- package/esm2022/lib/tag/s-tag.component.mjs +6 -3
- package/esm2022/lib/timeline/s-timeline.component.mjs +6 -3
- package/esm2022/lib/toast/s-toast-service.mjs +3 -3
- package/esm2022/lib/toast/s-toast.component.mjs +3 -3
- package/esm2022/lib/toggle-switch/s-toggle-switch.component.mjs +1 -1
- package/esm2022/lib/toggle-switch/toggle-switch-form/toggle-switch-form.component.mjs +12 -10
- package/esm2022/lib/toolbar-top/toolbar-top.component.mjs +4 -3
- package/esm2022/lib/tooltip/s-tooltip.component.mjs +32 -16
- package/esm2022/lib/tree-list/s-tree-list.component.mjs +6 -3
- package/fesm2022/sidesys-generic-ui.mjs +581 -461
- package/fesm2022/sidesys-generic-ui.mjs.map +1 -1
- package/lib/animation/animation.component.d.ts +2 -1
- package/lib/avatar/s-avatar.component.d.ts +2 -2
- package/lib/badge/s-badge.component.d.ts +3 -5
- package/lib/bottom-status-bar/bottom-status-bar.component.d.ts +2 -0
- package/lib/breadcrum/s-breadcrum.component.d.ts +2 -1
- package/lib/button/components/button/s-button.component.d.ts +6 -5
- package/lib/card/s-card.component.d.ts +3 -2
- package/lib/checkbox/checkbox-new/s-checkbox.component.d.ts +5 -3
- package/lib/collapse/s-collapse.component.d.ts +2 -1
- package/lib/company-logo/s-company-logo.component.d.ts +2 -1
- package/lib/container/s-container.component.d.ts +2 -1
- package/lib/content/s-content.component.d.ts +2 -1
- package/lib/empty/empty.component.d.ts +2 -0
- package/lib/icon-material/s-icon-material.component.d.ts +2 -1
- package/lib/input/components/calendar/s-calendar.component.d.ts +4 -3
- package/lib/input/components/color/s-color.component.d.ts +4 -3
- package/lib/input/components/error-control/s-error-control.component.d.ts +2 -1
- package/lib/input/components/input/s-input-model.d.ts +0 -1
- package/lib/input/components/input/s-input.component.d.ts +5 -2
- package/lib/input/components/input-number/s-input-number.component.d.ts +4 -2
- package/lib/input/components/input-textarea/s-input-textarea.component.d.ts +4 -2
- package/lib/input/components/time/s-time.component.d.ts +4 -3
- package/lib/input/components/validation-error/s-validation-error.component.d.ts +2 -1
- package/lib/link/s-link.component.d.ts +2 -1
- package/lib/list/s-list.component.d.ts +2 -1
- package/lib/list-simple/s-list-simple.component.d.ts +2 -1
- package/lib/modal/modal-confirm/modal-confirm.component.d.ts +1 -0
- package/lib/modal/modal-confirm/models/modal-confirm.interface.d.ts +1 -0
- package/lib/navbar/s-navbar.component.d.ts +5 -3
- package/lib/pagination/s-pagination.component.d.ts +2 -1
- package/lib/popup/s-popup.component.d.ts +2 -1
- package/lib/precode/s-precode.component.d.ts +3 -5
- package/lib/progressbar/s-progressbar.component.d.ts +2 -1
- package/lib/radio/s-radio.component.d.ts +3 -2
- package/lib/select/select/s-select.component.d.ts +5 -3
- package/lib/select/select-multiple/s-select-multiple-model.d.ts +1 -0
- package/lib/select/select-multiple/s-select-multiple.component.d.ts +5 -3
- package/lib/sidebar/s-sidebar.component.d.ts +2 -1
- package/lib/table-complete/table-complete.component.d.ts +3 -1
- package/lib/table-double/table-double.component.d.ts +1 -0
- package/lib/table-double/table-double.model.d.ts +1 -0
- package/lib/table-double-complete/table-double-complete.component.d.ts +1 -0
- package/lib/table-double-complete/table-double-complete.model.d.ts +1 -0
- package/lib/table-t/s-tablet.component.d.ts +2 -1
- package/lib/table-t/table-actions-buttons/interfaces/TypeActions.interface.d.ts +1 -0
- package/lib/table-t/table-actions-buttons/table-actions-buttons.component.d.ts +2 -1
- package/lib/tabs/models/configTabs.interface.d.ts +1 -0
- package/lib/tabs/s-tabs.component.d.ts +2 -2
- package/lib/tag/s-tag.component.d.ts +2 -1
- package/lib/timeline/s-timeline.component.d.ts +2 -1
- package/lib/toast/s-toast-service.d.ts +3 -3
- package/lib/toggle-switch/toggle-switch-form/toggle-switch-form.component.d.ts +6 -3
- package/lib/toolbar-top/toolbar-top.component.d.ts +2 -0
- package/lib/tooltip/s-tooltip.component.d.ts +2 -1
- package/lib/tree-list/s-tree-list.component.d.ts +2 -1
- package/package.json +1 -1
|
@@ -7,6 +7,7 @@ export class STreeListComponent {
|
|
|
7
7
|
constructor() {
|
|
8
8
|
this.treeNodes = []; // Lista de valores que va a nutrir el árbol
|
|
9
9
|
this.hideAll = false; // Ocultar todos los checkboxes
|
|
10
|
+
this.id = 's-tree-list';
|
|
10
11
|
this.selected = input();
|
|
11
12
|
//TODO QUEADAN ESTOS DOS OUTPUT PERO PARECIERAN SER LO MISMO
|
|
12
13
|
this.emitSelectNode = new EventEmitter(); //Nodo seleccionado
|
|
@@ -103,18 +104,20 @@ export class STreeListComponent {
|
|
|
103
104
|
});
|
|
104
105
|
}
|
|
105
106
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: STreeListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
106
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.13", type: STreeListComponent, selector: "s-tree-list", inputs: { treeNodes: { classPropertyName: "treeNodes", publicName: "treeNodes", isSignal: false, isRequired: false, transformFunction: null }, hideAll: { classPropertyName: "hideAll", publicName: "hideAll", isSignal: false, isRequired: false, transformFunction: null }, selected: { classPropertyName: "selected", publicName: "selected", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { emitSelectNode: "emitSelectNode", emitChecked: "emitChecked" }, ngImport: i0, template: "<ng-template #treeNodeTemplate let-node>\n <div\n class=\"s-tree-list\"\n (click)=\"selectNode(node)\"\n [ngClass]=\"node === selectedNode() ? 's-tree-list__selected-node' : ''\">\n <span\n class=\"s-tree-list__toggle-icon\"\n *ngIf=\"node.children && node.children.length\"\n tabindex=\"0\"\n (keydown.enter)=\"toggleNode(node)\"\n (click)=\"toggleNode(node)\">\n <s-icon-mat class=\"s-tree-list__icon-arrow\">{{\n node.expanded ? 'keyboard_arrow_down' : 'keyboard_arrow_right'\n }}</s-icon-mat>\n </span>\n\n <div class=\"s-tree-list__content\">\n <s-checkbox-old\n *ngIf=\"!node.hide && !node.hideRoot && !node.hideAll && !hideAll\"\n [model]=\"node.checked\"\n [value]=\"node\"\n [isUndefined]=\"node.isUndefined\"\n (emitSelection)=\"checkNode($event)\"\n [disabled]=\"node.disable\">\n </s-checkbox-old>\n <s-icon-mat class=\"s-tree-list__content-icon\" *ngIf=\"node.icon\">{{ node.icon }}</s-icon-mat>\n <span class=\"s-tree-list__content-title\">{{ node.label }}</span>\n </div>\n </div>\n\n <div class=\"s-tree-list__node-children\" *ngIf=\"node.expanded && node.children\">\n <ng-container *ngFor=\"let child of node.children\">\n <
|
|
107
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.13", type: STreeListComponent, selector: "s-tree-list", inputs: { treeNodes: { classPropertyName: "treeNodes", publicName: "treeNodes", isSignal: false, isRequired: false, transformFunction: null }, hideAll: { classPropertyName: "hideAll", publicName: "hideAll", isSignal: false, isRequired: false, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: false, isRequired: false, transformFunction: null }, selected: { classPropertyName: "selected", publicName: "selected", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { emitSelectNode: "emitSelectNode", emitChecked: "emitChecked" }, ngImport: i0, template: "<ng-template #treeNodeTemplate let-node>\n <div\n class=\"s-tree-list\"\n [id]=\"id\"\n (click)=\"selectNode(node)\"\n [ngClass]=\"node === selectedNode() ? 's-tree-list__selected-node' : ''\">\n <span\n class=\"s-tree-list__toggle-icon\"\n *ngIf=\"node.children && node.children.length\"\n tabindex=\"0\"\n (keydown.enter)=\"toggleNode(node)\"\n (click)=\"toggleNode(node)\">\n <s-icon-mat class=\"s-tree-list__icon-arrow\">{{\n node.expanded ? 'keyboard_arrow_down' : 'keyboard_arrow_right'\n }}</s-icon-mat>\n </span>\n\n <div class=\"s-tree-list__content\">\n <s-checkbox-old\n *ngIf=\"!node.hide && !node.hideRoot && !node.hideAll && !hideAll\"\n [model]=\"node.checked\"\n [value]=\"node\"\n [isUndefined]=\"node.isUndefined\"\n (emitSelection)=\"checkNode($event)\"\n [disabled]=\"node.disable\">\n </s-checkbox-old>\n <s-icon-mat class=\"s-tree-list__content-icon\" *ngIf=\"node.icon\">{{ node.icon }}</s-icon-mat>\n <span class=\"s-tree-list__content-title\">{{ node.label }}</span>\n </div>\n </div>\n\n <div class=\"s-tree-list__node-children\" *ngIf=\"node.expanded && node.children\">\n <ng-container *ngFor=\"let child of node.children\">\n <div\n [id]=\"id + '-child-' + child.value\"\n [ngTemplateOutlet]=\"treeNodeTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: child }\"></div>\n </ng-container>\n </div>\n</ng-template>\n\n<ng-container *ngFor=\"let node of treeNodes\">\n <ng-container [ngTemplateOutlet]=\"treeNodeTemplate\" [ngTemplateOutletContext]=\"{ $implicit: node }\"></ng-container>\n</ng-container>\n", styles: [".s-tree-list{display:flex;align-items:center;cursor:pointer;margin-bottom:.6rem}.s-tree-list:hover{background-color:var(--neutrals-900)}.s-tree-list:active{background-color:var(--primary-300)}.s-tree-list-toggle-icon{margin-right:.313rem}.s-tree-list__selected-node{background-color:var(--primary-200)}.s-tree-list__content{align-items:center;display:flex;padding-left:.3rem}.s-tree-list__content-icon{font-size:.8rem;color:var(--primary-600);margin-left:.5rem}.s-tree-list__content-title{margin-left:.5rem}.s-tree-list__node-children{margin-left:1.25rem}.s-tree-list__node-children.show{display:block}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.SCheckboxOldComponent, selector: "s-checkbox-old", inputs: ["value", "model", "disabled", "isUndefined", "label", "boldSelectActive", "tabIndex"], outputs: ["emitSelection"] }, { kind: "component", type: i3.SIconMaterialComponent, selector: "s-icon-mat", inputs: ["name", "size", "fill", "weight", "grade", "style", "type", "id"] }] }); }
|
|
107
108
|
}
|
|
108
109
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: STreeListComponent, decorators: [{
|
|
109
110
|
type: Component,
|
|
110
|
-
args: [{ selector: 's-tree-list', template: "<ng-template #treeNodeTemplate let-node>\n <div\n class=\"s-tree-list\"\n (click)=\"selectNode(node)\"\n [ngClass]=\"node === selectedNode() ? 's-tree-list__selected-node' : ''\">\n <span\n class=\"s-tree-list__toggle-icon\"\n *ngIf=\"node.children && node.children.length\"\n tabindex=\"0\"\n (keydown.enter)=\"toggleNode(node)\"\n (click)=\"toggleNode(node)\">\n <s-icon-mat class=\"s-tree-list__icon-arrow\">{{\n node.expanded ? 'keyboard_arrow_down' : 'keyboard_arrow_right'\n }}</s-icon-mat>\n </span>\n\n <div class=\"s-tree-list__content\">\n <s-checkbox-old\n *ngIf=\"!node.hide && !node.hideRoot && !node.hideAll && !hideAll\"\n [model]=\"node.checked\"\n [value]=\"node\"\n [isUndefined]=\"node.isUndefined\"\n (emitSelection)=\"checkNode($event)\"\n [disabled]=\"node.disable\">\n </s-checkbox-old>\n <s-icon-mat class=\"s-tree-list__content-icon\" *ngIf=\"node.icon\">{{ node.icon }}</s-icon-mat>\n <span class=\"s-tree-list__content-title\">{{ node.label }}</span>\n </div>\n </div>\n\n <div class=\"s-tree-list__node-children\" *ngIf=\"node.expanded && node.children\">\n <ng-container *ngFor=\"let child of node.children\">\n <
|
|
111
|
+
args: [{ selector: 's-tree-list', template: "<ng-template #treeNodeTemplate let-node>\n <div\n class=\"s-tree-list\"\n [id]=\"id\"\n (click)=\"selectNode(node)\"\n [ngClass]=\"node === selectedNode() ? 's-tree-list__selected-node' : ''\">\n <span\n class=\"s-tree-list__toggle-icon\"\n *ngIf=\"node.children && node.children.length\"\n tabindex=\"0\"\n (keydown.enter)=\"toggleNode(node)\"\n (click)=\"toggleNode(node)\">\n <s-icon-mat class=\"s-tree-list__icon-arrow\">{{\n node.expanded ? 'keyboard_arrow_down' : 'keyboard_arrow_right'\n }}</s-icon-mat>\n </span>\n\n <div class=\"s-tree-list__content\">\n <s-checkbox-old\n *ngIf=\"!node.hide && !node.hideRoot && !node.hideAll && !hideAll\"\n [model]=\"node.checked\"\n [value]=\"node\"\n [isUndefined]=\"node.isUndefined\"\n (emitSelection)=\"checkNode($event)\"\n [disabled]=\"node.disable\">\n </s-checkbox-old>\n <s-icon-mat class=\"s-tree-list__content-icon\" *ngIf=\"node.icon\">{{ node.icon }}</s-icon-mat>\n <span class=\"s-tree-list__content-title\">{{ node.label }}</span>\n </div>\n </div>\n\n <div class=\"s-tree-list__node-children\" *ngIf=\"node.expanded && node.children\">\n <ng-container *ngFor=\"let child of node.children\">\n <div\n [id]=\"id + '-child-' + child.value\"\n [ngTemplateOutlet]=\"treeNodeTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: child }\"></div>\n </ng-container>\n </div>\n</ng-template>\n\n<ng-container *ngFor=\"let node of treeNodes\">\n <ng-container [ngTemplateOutlet]=\"treeNodeTemplate\" [ngTemplateOutletContext]=\"{ $implicit: node }\"></ng-container>\n</ng-container>\n", styles: [".s-tree-list{display:flex;align-items:center;cursor:pointer;margin-bottom:.6rem}.s-tree-list:hover{background-color:var(--neutrals-900)}.s-tree-list:active{background-color:var(--primary-300)}.s-tree-list-toggle-icon{margin-right:.313rem}.s-tree-list__selected-node{background-color:var(--primary-200)}.s-tree-list__content{align-items:center;display:flex;padding-left:.3rem}.s-tree-list__content-icon{font-size:.8rem;color:var(--primary-600);margin-left:.5rem}.s-tree-list__content-title{margin-left:.5rem}.s-tree-list__node-children{margin-left:1.25rem}.s-tree-list__node-children.show{display:block}\n"] }]
|
|
111
112
|
}], ctorParameters: () => [], propDecorators: { treeNodes: [{
|
|
112
113
|
type: Input
|
|
113
114
|
}], hideAll: [{
|
|
114
115
|
type: Input
|
|
116
|
+
}], id: [{
|
|
117
|
+
type: Input
|
|
115
118
|
}], emitSelectNode: [{
|
|
116
119
|
type: Output
|
|
117
120
|
}], emitChecked: [{
|
|
118
121
|
type: Output
|
|
119
122
|
}] } });
|
|
120
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicy10cmVlLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2lkZXN5cy1nZW5lcmljLXVpL3NyYy9saWIvdHJlZS1saXN0L3MtdHJlZS1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NpZGVzeXMtZ2VuZXJpYy11aS9zcmMvbGliL3RyZWUtbGlzdC9zLXRyZWUtbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFVLE1BQU0sZUFBZSxDQUFDOzs7OztBQVF0RyxNQUFNLE9BQU8sa0JBQWtCO0lBWTdCO1FBWFMsY0FBUyxHQUFlLEVBQUUsQ0FBQyxDQUFDLDRDQUE0QztRQUN4RSxZQUFPLEdBQVksS0FBSyxDQUFDLENBQUMsK0JBQStCO1FBQ2xFLGFBQVEsR0FBRyxLQUFLLEVBQVUsQ0FBQztRQUUzQiw0REFBNEQ7UUFDbEQsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDLENBQUMsbUJBQW1CO1FBQzdELGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQyxDQUFDLGdDQUFnQztRQUVqRixpQkFBWSxHQUFHLE1BQU0sQ0FBdUIsU0FBUyxDQUFDLENBQUM7UUFDaEQsZUFBVSxHQUFVLEVBQUUsQ0FBQztRQUc1QixNQUFNLENBQ0osR0FBRyxFQUFFO1lBQ0gsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3RDLElBQUksYUFBYSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUMvQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDLENBQUM7Z0JBQ25ELElB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Q0FBQyxDQUFDO0lBQ0wsQ0FBQzsrR0EvR1Usa0JBQWtCO21HQUFsQixrQkFBa0IsK2dCQ1IvQix5bkRBMENBOzs0RkRsQ2Esa0JBQWtCO2tCQUw5QixTQUFTOytCQUNFLGFBQWE7d0RBS2QsU0FBUztzQkFBakIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBSUksY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIGlucHV0LCBzaWduYWwsIGVmZmVjdCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUcmVlTm9kZSB9IGZyb20gJy4vbW9kZWxzL3RyZWUtbm9kZS5pbnRlcmZhY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzLXRyZWUtbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9zLXRyZWUtbGlzdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3MtdHJlZS1saXN0LmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFNUcmVlTGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIHRyZWVOb2RlczogVHJlZU5vZGVbXSA9IFtdOyAvLyBMaXN0YSBkZSB2YWxvcmVzIHF1ZSB2YSBhIG51dHJpciBlbCDDoXJib2xcbiAgQElucHV0KCkgaGlkZUFsbDogYm9vbGVhbiA9IGZhbHNlOyAvLyBPY3VsdGFyIHRvZG9zIGxvcyBjaGVja2JveGVzXG4gIHNlbGVjdGVkID0gaW5wdXQ8c3RyaW5nPigpO1xuXG4gIC8vVE9ETyBRVUVBREFOIEVTVE9TIERPUyBPVVRQVVQgUEVSTyBQQVJFQ0lFUkFOIFNFUiBMTyBNSVNNT1xuICBAT3V0cHV0KCkgZW1pdFNlbGVjdE5vZGUgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTsgLy9Ob2RvIHNlbGVjY2lvbmFkb1xuICBAT3V0cHV0KCkgZW1pdENoZWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTsgLy9Ob3RpZmljYSBsb3MgY2FtYmlvcywgc3RyaW5nW11cblxuICBzZWxlY3RlZE5vZGUgPSBzaWduYWw8VHJlZU5vZGUgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHB1YmxpYyBjaGVja05vZGVzOiBhbnlbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGVmZmVjdChcbiAgICAgICgpID0+IHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRWYWx1ZSA9IHRoaXMuc2VsZWN0ZWQoKTtcbiAgICAgICAgaWYgKHNlbGVjdGVkVmFsdWUgJiYgdGhpcy50cmVlTm9kZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGNvbnN0IG5vZGUgPSB0aGlzLmZpbmRBbmRFeHBhbmROb2RlKHNlbGVjdGVkVmFsdWUpO1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWROb2RlLnNldChub2RlKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfVxuICAgICk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zZWxlY3RlZCgpICYmIHRoaXMudHJlZU5vZGVzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IHNlbGVjdGVkVmFsdWUgPSB0aGlzLnNlbGVjdGVkKCk7XG4gICAgICBpZiAoc2VsZWN0ZWRWYWx1ZSkge1xuICAgICAgICBjb25zdCBub2RlID0gdGhpcy5maW5kQW5kRXhwYW5kTm9kZShzZWxlY3RlZFZhbHVlKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZE5vZGUuc2V0KG5vZGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZpbmRBbmRFeHBhbmROb2RlKHZhbHVlOiBzdHJpbmcpOiBUcmVlTm9kZSB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgZXhwYW5kUGFyZW50cyA9IChub2RlczogVHJlZU5vZGVbXSwgdGFyZ2V0VmFsdWU6IHN0cmluZyk6IFRyZWVOb2RlIHwgdW5kZWZpbmVkID0+IHtcbiAgICAgIGZvciAoY29uc3Qgbm9kZSBvZiBub2Rlcykge1xuICAgICAgICBpZiAobm9kZS52YWx1ZSA9PT0gdGFyZ2V0VmFsdWUpIHJldHVybiBub2RlO1xuXG4gICAgICAgIGlmIChub2RlLmNoaWxkcmVuKSB7XG4gICAgICAgICAgY29uc3QgZm91bmQgPSBleHBhbmRQYXJlbnRzKG5vZGUuY2hpbGRyZW4sIHRhcmdldFZhbHVlKTtcbiAgICAgICAgICBpZiAoZm91bmQpIHtcbiAgICAgICAgICAgIG5vZGUuZXhwYW5kZWQgPSB0cnVlOyAvLyBleHBhbmRpbW9zIGVsIHBhZHJlXG4gICAgICAgICAgICByZXR1cm4gZm91bmQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH07XG5cbiAgICByZXR1cm4gZXhwYW5kUGFyZW50cyh0aGlzLnRyZWVOb2RlcywgdmFsdWUpO1xuICB9XG5cbiAgdG9nZ2xlTm9kZShub2RlOiBUcmVlTm9kZSk6IHZvaWQge1xuICAgIG5vZGUuZXhwYW5kZWQgPSAhbm9kZS5leHBhbmRlZDtcbiAgfVxuXG4gIHNlbGVjdE5vZGUobm9kZTogVHJlZU5vZGUpOiB2b2lkIHtcbiAgICB0aGlzLmVtaXRTZWxlY3ROb2RlLmVtaXQobm9kZSk7XG4gIH1cblxuICBpc05vZGVTZWxlY3RlZChub2RlOiBUcmVlTm9kZSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkTm9kZSgpID09PSBub2RlO1xuICB9XG5cbiAgY2hlY2tOb2RlKGV2ZW50OiBhbnkpIHtcbiAgICBjb25zdCBub2RlID0gZXZlbnQudmFsdWU7XG4gICAgY29uc3QgaXNDaGVja2VkID0gZXZlbnQuZXZlbnQ7XG5cbiAgICAvLyBVcGRhdGUgY2hlY2tlZCBub2RlcyBpbiB0cmVlXG4gICAgY29uc3Qgbm9kZUluVHJlZSA9IHRoaXMuZmluZE5vZGUodGhpcy50cmVlTm9kZXMsIG5vZGUsIGlzQ2hlY2tlZCk7XG4gICAgaWYgKG5vZGVJblRyZWUpIHRoaXMuY2hlY2tBbGxDaGlsZHJlbihbbm9kZUluVHJlZV0sIGlzQ2hlY2tlZCk7XG5cbiAgICBpZiAoaXNDaGVja2VkKSB7XG4gICAgICB0aGlzLmNoZWNrTm9kZXM/LnB1c2gobm9kZS52YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY2hlY2tOb2RlcyA9IHRoaXMuY2hlY2tOb2Rlcz8uZmlsdGVyKGMgPT4gYyAhPSBub2RlLnZhbHVlKTtcbiAgICB9XG5cbiAgICBjb25zdCBjaGVja2VkTm9kZXMgPSB0aGlzLmdldENoZWNrZWROb2Rlc1RvTm90aWZ5KHRoaXMudHJlZU5vZGVzLCBbXSk7XG4gICAgLy8gTm90aWZ5IGNoYW5nZVxuICAgIHRoaXMuZW1pdENoZWNrZWQuZW1pdChjaGVja2VkTm9kZXMpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDaGVja2VkTm9kZXNUb05vdGlmeShub2RlczogVHJlZU5vZGVbXSwgcmVzdWx0OiBzdHJpbmdbXSk6IHN0cmluZ1tdIHtcbiAgICBub2Rlcy5mb3JFYWNoKG5vZGUgPT4ge1xuICAgICAgaWYgKG5vZGUuY2hlY2tlZCkgcmVzdWx0LnB1c2gobm9kZS52YWx1ZSk7XG4gICAgICBpZiAobm9kZS5jaGlsZHJlbikge1xuICAgICAgICB0aGlzLmdldENoZWNrZWROb2Rlc1RvTm90aWZ5KG5vZGUuY2hpbGRyZW4sIHJlc3VsdCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIGZpbmROb2RlKHRyZWVzOiBUcmVlTm9kZVtdLCBmaW5kZWROb2RlOiBUcmVlTm9kZSwgaXNDaGVja2VkOiBib29sZWFuKTogVHJlZU5vZGUgfCB1bmRlZmluZWQge1xuICAgIGZvciAoY29uc3Qgbm9kZSBvZiB0cmVlcykge1xuICAgICAgaWYgKG5vZGUgPT0gZmluZGVkTm9kZSkgcmV0dXJuIG5vZGU7XG4gICAgICBpZiAobm9kZS5jaGlsZHJlbikge1xuICAgICAgICBjb25zdCBmb3VuZGVkID0gdGhpcy5maW5kTm9kZShub2RlLmNoaWxkcmVuLCBmaW5kZWROb2RlLCBpc0NoZWNrZWQpO1xuICAgICAgICBpZiAoZm91bmRlZCkgcmV0dXJuIGZvdW5kZWQ7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBwcml2YXRlIGNoZWNrQWxsQ2hpbGRyZW4obm9kZXM6IFRyZWVOb2RlW10sIGlzQ2hlY2tlZDogYm9vbGVhbikge1xuICAgIG5vZGVzLmZvckVhY2gobiA9PiB7XG4gICAgICBuLmNoZWNrZWQgPSBpc0NoZWNrZWQ7XG4gICAgICBpZiAobi5jaGlsZHJlbikgdGhpcy5jaGVja0FsbENoaWxkcmVuKG4uY2hpbGRyZW4sIGlzQ2hlY2tlZCk7XG4gICAgfSk7XG4gIH1cbn1cbiIsIjxuZy10ZW1wbGF0ZSAjdHJlZU5vZGVUZW1wbGF0ZSBsZXQtbm9kZT5cbiAgPGRpdlxuICAgIGNsYXNzPVwicy10cmVlLWxpc3RcIlxuICAgIChjbGljayk9XCJzZWxlY3ROb2RlKG5vZGUpXCJcbiAgICBbbmdDbGFzc109XCJub2RlID09PSBzZWxlY3RlZE5vZGUoKSA/ICdzLXRyZWUtbGlzdF9fc2VsZWN0ZWQtbm9kZScgOiAnJ1wiPlxuICAgIDxzcGFuXG4gICAgICBjbGFzcz1cInMtdHJlZS1saXN0X190b2dnbGUtaWNvblwiXG4gICAgICAqbmdJZj1cIm5vZGUuY2hpbGRyZW4gJiYgbm9kZS5jaGlsZHJlbi5sZW5ndGhcIlxuICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgIChrZXlkb3duLmVudGVyKT1cInRvZ2dsZU5vZGUobm9kZSlcIlxuICAgICAgKGNsaWNrKT1cInRvZ2dsZU5vZGUobm9kZSlcIj5cbiAgICAgIDxzLWljb24tbWF0IGNsYXNzPVwicy10cmVlLWxpc3RfX2ljb24tYXJyb3dcIj57e1xuICAgICAgICBub2RlLmV4cGFuZGVkID8gJ2tleWJvYXJkX2Fycm93X2Rvd24nIDogJ2tleWJvYXJkX2Fycm93X3JpZ2h0J1xuICAgICAgfX08L3MtaWNvbi1tYXQ+XG4gICAgPC9zcGFuPlxuXG4gICAgPGRpdiBjbGFzcz1cInMtdHJlZS1saXN0X19jb250ZW50XCI+XG4gICAgICA8cy1jaGVja2JveC1vbGRcbiAgICAgICAgKm5nSWY9XCIhbm9kZS5oaWRlICYmICFub2RlLmhpZGVSb290ICYmICFub2RlLmhpZGVBbGwgJiYgIWhpZGVBbGxcIlxuICAgICAgICBbbW9kZWxdPVwibm9kZS5jaGVja2VkXCJcbiAgICAgICAgW3ZhbHVlXT1cIm5vZGVcIlxuICAgICAgICBbaXNVbmRlZmluZWRdPVwibm9kZS5pc1VuZGVmaW5lZFwiXG4gICAgICAgIChlbWl0U2VsZWN0aW9uKT1cImNoZWNrTm9kZSgkZXZlbnQpXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cIm5vZGUuZGlzYWJsZVwiPlxuICAgICAgPC9zLWNoZWNrYm94LW9sZD5cbiAgICAgIDxzLWljb24tbWF0IGNsYXNzPVwicy10cmVlLWxpc3RfX2NvbnRlbnQtaWNvblwiICpuZ0lmPVwibm9kZS5pY29uXCI+e3sgbm9kZS5pY29uIH19PC9zLWljb24tbWF0PlxuICAgICAgPHNwYW4gY2xhc3M9XCJzLXRyZWUtbGlzdF9fY29udGVudC10aXRsZVwiPnt7IG5vZGUubGFiZWwgfX08L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJzLXRyZWUtbGlzdF9fbm9kZS1jaGlsZHJlblwiICpuZ0lmPVwibm9kZS5leHBhbmRlZCAmJiBub2RlLmNoaWxkcmVuXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY2hpbGQgb2Ygbm9kZS5jaGlsZHJlblwiPlxuICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJ0cmVlTm9kZVRlbXBsYXRlXCJcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBjaGlsZCB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgbm9kZSBvZiB0cmVlTm9kZXNcIj5cbiAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJ0cmVlTm9kZVRlbXBsYXRlXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBub2RlIH1cIj48L25nLWNvbnRhaW5lcj5cbjwvbmctY29udGFpbmVyPlxuIl19
|
|
123
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicy10cmVlLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2lkZXN5cy1nZW5lcmljLXVpL3NyYy9saWIvdHJlZS1saXN0L3MtdHJlZS1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NpZGVzeXMtZ2VuZXJpYy11aS9zcmMvbGliL3RyZWUtbGlzdC9zLXRyZWUtbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFVLE1BQU0sZUFBZSxDQUFDOzs7OztBQVF0RyxNQUFNLE9BQU8sa0JBQWtCO0lBYTdCO1FBWlMsY0FBUyxHQUFlLEVBQUUsQ0FBQyxDQUFDLDRDQUE0QztRQUN4RSxZQUFPLEdBQVksS0FBSyxDQUFDLENBQUMsK0JBQStCO1FBQ3pELE9BQUUsR0FBWSxhQUFhLENBQUM7UUFDckMsYUFBUSxHQUFHLEtBQUssRUFBVSxDQUFDO1FBRTNCLDREQUE0RDtRQUNsRCxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFPLENBQUMsQ0FBQyxtQkFBbUI7UUFDN0QsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDLENBQUMsZ0NBQWdDO1FBRWpGLGlCQUFZLEdBQUcsTUFBTSxDQUF1QixTQUFTLENBQUMsQ0FBQztRQUNoRCxlQUFVLEdBQVUsRUFBRSxDQUFDO1FBRzVCLE1BQU0sQ0FDSixHQUFHLEVBQUU7WUFDSCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDdEMsSUFBSSxhQUFhLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQy9DLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FB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U0FBUyxDQUFDLENBQUM7UUFDL0QsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOytHQWhIVSxrQkFBa0I7bUdBQWxCLGtCQUFrQiwrbkJDUi9CLHVxREE0Q0E7OzRGRHBDYSxrQkFBa0I7a0JBTDlCLFNBQVM7K0JBQ0UsYUFBYTt3REFLZCxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxFQUFFO3NCQUFWLEtBQUs7Z0JBSUksY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIGlucHV0LCBzaWduYWwsIGVmZmVjdCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUcmVlTm9kZSB9IGZyb20gJy4vbW9kZWxzL3RyZWUtbm9kZS5pbnRlcmZhY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzLXRyZWUtbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9zLXRyZWUtbGlzdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3MtdHJlZS1saXN0LmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFNUcmVlTGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIHRyZWVOb2RlczogVHJlZU5vZGVbXSA9IFtdOyAvLyBMaXN0YSBkZSB2YWxvcmVzIHF1ZSB2YSBhIG51dHJpciBlbCDDoXJib2xcbiAgQElucHV0KCkgaGlkZUFsbDogYm9vbGVhbiA9IGZhbHNlOyAvLyBPY3VsdGFyIHRvZG9zIGxvcyBjaGVja2JveGVzXG4gIEBJbnB1dCgpIGlkPzogc3RyaW5nID0gJ3MtdHJlZS1saXN0JztcbiAgc2VsZWN0ZWQgPSBpbnB1dDxzdHJpbmc+KCk7XG5cbiAgLy9UT0RPIFFVRUFEQU4gRVNUT1MgRE9TIE9VVFBVVCBQRVJPIFBBUkVDSUVSQU4gU0VSIExPIE1JU01PXG4gIEBPdXRwdXQoKSBlbWl0U2VsZWN0Tm9kZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpOyAvL05vZG8gc2VsZWNjaW9uYWRvXG4gIEBPdXRwdXQoKSBlbWl0Q2hlY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpOyAvL05vdGlmaWNhIGxvcyBjYW1iaW9zLCBzdHJpbmdbXVxuXG4gIHNlbGVjdGVkTm9kZSA9IHNpZ25hbDxUcmVlTm9kZSB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcHVibGljIGNoZWNrTm9kZXM6IGFueVtdID0gW107XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgZWZmZWN0KFxuICAgICAgKCkgPT4ge1xuICAgICAgICBjb25zdCBzZWxlY3RlZFZhbHVlID0gdGhpcy5zZWxlY3RlZCgpO1xuICAgICAgICBpZiAoc2VsZWN0ZWRWYWx1ZSAmJiB0aGlzLnRyZWVOb2Rlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgY29uc3Qgbm9kZSA9IHRoaXMuZmluZEFuZEV4cGFuZE5vZGUoc2VsZWN0ZWRWYWx1ZSk7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZE5vZGUuc2V0KG5vZGUpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9XG4gICAgKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNlbGVjdGVkKCkgJiYgdGhpcy50cmVlTm9kZXMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3Qgc2VsZWN0ZWRWYWx1ZSA9IHRoaXMuc2VsZWN0ZWQoKTtcbiAgICAgIGlmIChzZWxlY3RlZFZhbHVlKSB7XG4gICAgICAgIGNvbnN0IG5vZGUgPSB0aGlzLmZpbmRBbmRFeHBhbmROb2RlKHNlbGVjdGVkVmFsdWUpO1xuICAgICAgICB0aGlzLnNlbGVjdGVkTm9kZS5zZXQobm9kZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZmluZEFuZEV4cGFuZE5vZGUodmFsdWU6IHN0cmluZyk6IFRyZWVOb2RlIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBleHBhbmRQYXJlbnRzID0gKG5vZGVzOiBUcmVlTm9kZVtdLCB0YXJnZXRWYWx1ZTogc3RyaW5nKTogVHJlZU5vZGUgfCB1bmRlZmluZWQgPT4ge1xuICAgICAgZm9yIChjb25zdCBub2RlIG9mIG5vZGVzKSB7XG4gICAgICAgIGlmIChub2RlLnZhbHVlID09PSB0YXJnZXRWYWx1ZSkgcmV0dXJuIG5vZGU7XG5cbiAgICAgICAgaWYgKG5vZGUuY2hpbGRyZW4pIHtcbiAgICAgICAgICBjb25zdCBmb3VuZCA9IGV4cGFuZFBhcmVudHMobm9kZS5jaGlsZHJlbiwgdGFyZ2V0VmFsdWUpO1xuICAgICAgICAgIGlmIChmb3VuZCkge1xuICAgICAgICAgICAgbm9kZS5leHBhbmRlZCA9IHRydWU7IC8vIGV4cGFuZGltb3MgZWwgcGFkcmVcbiAgICAgICAgICAgIHJldHVybiBmb3VuZDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfTtcblxuICAgIHJldHVybiBleHBhbmRQYXJlbnRzKHRoaXMudHJlZU5vZGVzLCB2YWx1ZSk7XG4gIH1cblxuICB0b2dnbGVOb2RlKG5vZGU6IFRyZWVOb2RlKTogdm9pZCB7XG4gICAgbm9kZS5leHBhbmRlZCA9ICFub2RlLmV4cGFuZGVkO1xuICB9XG5cbiAgc2VsZWN0Tm9kZShub2RlOiBUcmVlTm9kZSk6IHZvaWQge1xuICAgIHRoaXMuZW1pdFNlbGVjdE5vZGUuZW1pdChub2RlKTtcbiAgfVxuXG4gIGlzTm9kZVNlbGVjdGVkKG5vZGU6IFRyZWVOb2RlKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWROb2RlKCkgPT09IG5vZGU7XG4gIH1cblxuICBjaGVja05vZGUoZXZlbnQ6IGFueSkge1xuICAgIGNvbnN0IG5vZGUgPSBldmVudC52YWx1ZTtcbiAgICBjb25zdCBpc0NoZWNrZWQgPSBldmVudC5ldmVudDtcblxuICAgIC8vIFVwZGF0ZSBjaGVja2VkIG5vZGVzIGluIHRyZWVcbiAgICBjb25zdCBub2RlSW5UcmVlID0gdGhpcy5maW5kTm9kZSh0aGlzLnRyZWVOb2Rlcywgbm9kZSwgaXNDaGVja2VkKTtcbiAgICBpZiAobm9kZUluVHJlZSkgdGhpcy5jaGVja0FsbENoaWxkcmVuKFtub2RlSW5UcmVlXSwgaXNDaGVja2VkKTtcblxuICAgIGlmIChpc0NoZWNrZWQpIHtcbiAgICAgIHRoaXMuY2hlY2tOb2Rlcz8ucHVzaChub2RlLnZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jaGVja05vZGVzID0gdGhpcy5jaGVja05vZGVzPy5maWx0ZXIoYyA9PiBjICE9IG5vZGUudmFsdWUpO1xuICAgIH1cblxuICAgIGNvbnN0IGNoZWNrZWROb2RlcyA9IHRoaXMuZ2V0Q2hlY2tlZE5vZGVzVG9Ob3RpZnkodGhpcy50cmVlTm9kZXMsIFtdKTtcbiAgICAvLyBOb3RpZnkgY2hhbmdlXG4gICAgdGhpcy5lbWl0Q2hlY2tlZC5lbWl0KGNoZWNrZWROb2Rlcyk7XG4gIH1cblxuICBwcml2YXRlIGdldENoZWNrZWROb2Rlc1RvTm90aWZ5KG5vZGVzOiBUcmVlTm9kZVtdLCByZXN1bHQ6IHN0cmluZ1tdKTogc3RyaW5nW10ge1xuICAgIG5vZGVzLmZvckVhY2gobm9kZSA9PiB7XG4gICAgICBpZiAobm9kZS5jaGVja2VkKSByZXN1bHQucHVzaChub2RlLnZhbHVlKTtcbiAgICAgIGlmIChub2RlLmNoaWxkcmVuKSB7XG4gICAgICAgIHRoaXMuZ2V0Q2hlY2tlZE5vZGVzVG9Ob3RpZnkobm9kZS5jaGlsZHJlbiwgcmVzdWx0KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgZmluZE5vZGUodHJlZXM6IFRyZWVOb2RlW10sIGZpbmRlZE5vZGU6IFRyZWVOb2RlLCBpc0NoZWNrZWQ6IGJvb2xlYW4pOiBUcmVlTm9kZSB8IHVuZGVmaW5lZCB7XG4gICAgZm9yIChjb25zdCBub2RlIG9mIHRyZWVzKSB7XG4gICAgICBpZiAobm9kZSA9PSBmaW5kZWROb2RlKSByZXR1cm4gbm9kZTtcbiAgICAgIGlmIChub2RlLmNoaWxkcmVuKSB7XG4gICAgICAgIGNvbnN0IGZvdW5kZWQgPSB0aGlzLmZpbmROb2RlKG5vZGUuY2hpbGRyZW4sIGZpbmRlZE5vZGUsIGlzQ2hlY2tlZCk7XG4gICAgICAgIGlmIChmb3VuZGVkKSByZXR1cm4gZm91bmRlZDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tBbGxDaGlsZHJlbihub2RlczogVHJlZU5vZGVbXSwgaXNDaGVja2VkOiBib29sZWFuKSB7XG4gICAgbm9kZXMuZm9yRWFjaChuID0+IHtcbiAgICAgIG4uY2hlY2tlZCA9IGlzQ2hlY2tlZDtcbiAgICAgIGlmIChuLmNoaWxkcmVuKSB0aGlzLmNoZWNrQWxsQ2hpbGRyZW4obi5jaGlsZHJlbiwgaXNDaGVja2VkKTtcbiAgICB9KTtcbiAgfVxufVxuIiwiPG5nLXRlbXBsYXRlICN0cmVlTm9kZVRlbXBsYXRlIGxldC1ub2RlPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJzLXRyZWUtbGlzdFwiXG4gICAgW2lkXT1cImlkXCJcbiAgICAoY2xpY2spPVwic2VsZWN0Tm9kZShub2RlKVwiXG4gICAgW25nQ2xhc3NdPVwibm9kZSA9PT0gc2VsZWN0ZWROb2RlKCkgPyAncy10cmVlLWxpc3RfX3NlbGVjdGVkLW5vZGUnIDogJydcIj5cbiAgICA8c3BhblxuICAgICAgY2xhc3M9XCJzLXRyZWUtbGlzdF9fdG9nZ2xlLWljb25cIlxuICAgICAgKm5nSWY9XCJub2RlLmNoaWxkcmVuICYmIG5vZGUuY2hpbGRyZW4ubGVuZ3RoXCJcbiAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAoa2V5ZG93bi5lbnRlcik9XCJ0b2dnbGVOb2RlKG5vZGUpXCJcbiAgICAgIChjbGljayk9XCJ0b2dnbGVOb2RlKG5vZGUpXCI+XG4gICAgICA8cy1pY29uLW1hdCBjbGFzcz1cInMtdHJlZS1saXN0X19pY29uLWFycm93XCI+e3tcbiAgICAgICAgbm9kZS5leHBhbmRlZCA/ICdrZXlib2FyZF9hcnJvd19kb3duJyA6ICdrZXlib2FyZF9hcnJvd19yaWdodCdcbiAgICAgIH19PC9zLWljb24tbWF0PlxuICAgIDwvc3Bhbj5cblxuICAgIDxkaXYgY2xhc3M9XCJzLXRyZWUtbGlzdF9fY29udGVudFwiPlxuICAgICAgPHMtY2hlY2tib3gtb2xkXG4gICAgICAgICpuZ0lmPVwiIW5vZGUuaGlkZSAmJiAhbm9kZS5oaWRlUm9vdCAmJiAhbm9kZS5oaWRlQWxsICYmICFoaWRlQWxsXCJcbiAgICAgICAgW21vZGVsXT1cIm5vZGUuY2hlY2tlZFwiXG4gICAgICAgIFt2YWx1ZV09XCJub2RlXCJcbiAgICAgICAgW2lzVW5kZWZpbmVkXT1cIm5vZGUuaXNVbmRlZmluZWRcIlxuICAgICAgICAoZW1pdFNlbGVjdGlvbik9XCJjaGVja05vZGUoJGV2ZW50KVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJub2RlLmRpc2FibGVcIj5cbiAgICAgIDwvcy1jaGVja2JveC1vbGQ+XG4gICAgICA8cy1pY29uLW1hdCBjbGFzcz1cInMtdHJlZS1saXN0X19jb250ZW50LWljb25cIiAqbmdJZj1cIm5vZGUuaWNvblwiPnt7IG5vZGUuaWNvbiB9fTwvcy1pY29uLW1hdD5cbiAgICAgIDxzcGFuIGNsYXNzPVwicy10cmVlLWxpc3RfX2NvbnRlbnQtdGl0bGVcIj57eyBub2RlLmxhYmVsIH19PC9zcGFuPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwicy10cmVlLWxpc3RfX25vZGUtY2hpbGRyZW5cIiAqbmdJZj1cIm5vZGUuZXhwYW5kZWQgJiYgbm9kZS5jaGlsZHJlblwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNoaWxkIG9mIG5vZGUuY2hpbGRyZW5cIj5cbiAgICAgIDxkaXZcbiAgICAgICAgW2lkXT1cImlkICsgJy1jaGlsZC0nICsgY2hpbGQudmFsdWVcIlxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJ0cmVlTm9kZVRlbXBsYXRlXCJcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBjaGlsZCB9XCI+PC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgbm9kZSBvZiB0cmVlTm9kZXNcIj5cbiAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJ0cmVlTm9kZVRlbXBsYXRlXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBub2RlIH1cIj48L25nLWNvbnRhaW5lcj5cbjwvbmctY29udGFpbmVyPlxuIl19
|