@seniorsistemas/angular-components 18.0.0 → 18.0.2
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/badge/lib/badge/badge.component.d.ts +2 -1
- package/badge/lib/badge/badge.module.d.ts +3 -1
- package/esm2022/badge/lib/badge/badge.component.mjs +6 -4
- package/esm2022/badge/lib/badge/badge.module.mjs +6 -4
- package/esm2022/button/lib/button/button.component.mjs +2 -2
- package/esm2022/custom-fields/lib/custom-fields/custom-fields.component.mjs +10 -15
- package/esm2022/dynamic-form/lib/dynamic-form/components/lookup/lookup.component.mjs +2 -2
- package/esm2022/file-upload/lib/file-upload/file-upload.component.mjs +23 -6
- package/esm2022/file-upload/lib/file-upload/file-upload.module.mjs +7 -3
- package/esm2022/ia-insight/lib/ia-insight/components/ia-insight-card/ia-insight-card.component.mjs +1 -1
- package/esm2022/kanban/lib/kanban/components/kanban-item-dragging/kanban-item-dragging.component.mjs +1 -1
- package/esm2022/label-value/lib/label-value/label-value.component.mjs +1 -1
- package/esm2022/locale/lib/locale/locale.service.mjs +43 -20
- package/esm2022/locale/lib/locale/options/index.mjs +7 -6
- package/esm2022/locale/lib/locale/pipes/localized-date.pipe.mjs +1 -1
- package/esm2022/locale/lib/locale/pipes/localized-time.pipe.mjs +7 -7
- package/esm2022/numeric-mask/lib/numeric-mask/numeric-mask.directive.mjs +579 -0
- package/esm2022/numeric-mask/lib/numeric-mask/numeric-mask.module.mjs +16 -0
- package/esm2022/numeric-mask/public-api.mjs +3 -0
- package/esm2022/numeric-mask/seniorsistemas-angular-components-numeric-mask.mjs +5 -0
- package/esm2022/object-card/lib/object-card/elements/field/object-card-field.component.mjs +7 -4
- package/esm2022/object-card/lib/object-card/object-card.module.mjs +5 -4
- package/esm2022/table/lib/table/table-column/table-columns.component.mjs +1 -1
- package/esm2022/tooltip/lib/tooltip/tooltip.directive.mjs +26 -20
- package/fesm2022/seniorsistemas-angular-components-badge.mjs +10 -6
- package/fesm2022/seniorsistemas-angular-components-badge.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-button.mjs +1 -1
- package/fesm2022/seniorsistemas-angular-components-button.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-custom-fields.mjs +9 -14
- package/fesm2022/seniorsistemas-angular-components-custom-fields.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs +1 -1
- package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-file-upload.mjs +27 -6
- package/fesm2022/seniorsistemas-angular-components-file-upload.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-ia-insight.mjs +1 -1
- package/fesm2022/seniorsistemas-angular-components-ia-insight.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-kanban.mjs +1 -1
- package/fesm2022/seniorsistemas-angular-components-kanban.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-label-value.mjs +1 -1
- package/fesm2022/seniorsistemas-angular-components-label-value.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-locale.mjs +41 -17
- package/fesm2022/seniorsistemas-angular-components-locale.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-numeric-mask.mjs +599 -0
- package/fesm2022/seniorsistemas-angular-components-numeric-mask.mjs.map +1 -0
- package/fesm2022/seniorsistemas-angular-components-object-card.mjs +10 -6
- package/fesm2022/seniorsistemas-angular-components-object-card.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-table.mjs +1 -1
- package/fesm2022/seniorsistemas-angular-components-table.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-tooltip.mjs +23 -17
- package/fesm2022/seniorsistemas-angular-components-tooltip.mjs.map +1 -1
- package/file-upload/lib/file-upload/file-upload.component.d.ts +1 -0
- package/file-upload/lib/file-upload/file-upload.module.d.ts +2 -1
- package/locale/lib/locale/locale.service.d.ts +14 -4
- package/locale/lib/locale/options/index.d.ts +6 -5
- package/locale/lib/locale/pipes/localized-time.pipe.d.ts +2 -2
- package/numeric-mask/README.md +367 -0
- package/numeric-mask/index.d.ts +5 -0
- package/numeric-mask/lib/numeric-mask/numeric-mask.directive.d.ts +195 -0
- package/numeric-mask/lib/numeric-mask/numeric-mask.module.d.ts +7 -0
- package/numeric-mask/public-api.d.ts +2 -0
- package/object-card/lib/object-card/elements/field/object-card-field.component.d.ts +4 -1
- package/object-card/lib/object-card/object-card.module.d.ts +2 -1
- package/package.json +7 -1
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { NumericMaskDirective } from './numeric-mask.directive';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class CurrencyMaskModule {
|
|
5
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CurrencyMaskModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
6
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: CurrencyMaskModule, imports: [NumericMaskDirective], exports: [NumericMaskDirective] });
|
|
7
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CurrencyMaskModule });
|
|
8
|
+
}
|
|
9
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CurrencyMaskModule, decorators: [{
|
|
10
|
+
type: NgModule,
|
|
11
|
+
args: [{
|
|
12
|
+
imports: [NumericMaskDirective],
|
|
13
|
+
exports: [NumericMaskDirective],
|
|
14
|
+
}]
|
|
15
|
+
}] });
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtZXJpYy1tYXNrLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9udW1lcmljLW1hc2svc3JjL2xpYi9udW1lcmljLW1hc2svbnVtZXJpYy1tYXNrLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDOztBQU1oRSxNQUFNLE9BQU8sa0JBQWtCO3dHQUFsQixrQkFBa0I7eUdBQWxCLGtCQUFrQixZQUhqQixvQkFBb0IsYUFDcEIsb0JBQW9CO3lHQUVyQixrQkFBa0I7OzRGQUFsQixrQkFBa0I7a0JBSjlCLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFLENBQUMsb0JBQW9CLENBQUM7b0JBQy9CLE9BQU8sRUFBRSxDQUFDLG9CQUFvQixDQUFDO2lCQUNsQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE51bWVyaWNNYXNrRGlyZWN0aXZlIH0gZnJvbSAnLi9udW1lcmljLW1hc2suZGlyZWN0aXZlJztcblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbTnVtZXJpY01hc2tEaXJlY3RpdmVdLFxuICAgIGV4cG9ydHM6IFtOdW1lcmljTWFza0RpcmVjdGl2ZV0sXG59KVxuZXhwb3J0IGNsYXNzIEN1cnJlbmN5TWFza01vZHVsZSB7fVxuXG4iXX0=
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export * from './lib/numeric-mask/numeric-mask.directive';
|
|
2
|
+
export * from './lib/numeric-mask/numeric-mask.module';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9udW1lcmljLW1hc2svc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYywyQ0FBMkMsQ0FBQztBQUMxRCxjQUFjLHdDQUF3QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9saWIvbnVtZXJpYy1tYXNrL251bWVyaWMtbWFzay5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbnVtZXJpYy1tYXNrL251bWVyaWMtbWFzay5tb2R1bGUnOyJdfQ==
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './public-api';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VuaW9yc2lzdGVtYXMtYW5ndWxhci1jb21wb25lbnRzLW51bWVyaWMtbWFzay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9udW1lcmljLW1hc2svc3JjL3NlbmlvcnNpc3RlbWFzLWFuZ3VsYXItY29tcG9uZW50cy1udW1lcmljLW1hc2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { Component, ContentChild, EventEmitter, Input, Output, TemplateRef, ViewChild } from '@angular/core';
|
|
1
|
+
import { Component, ContentChild, EventEmitter, input, Input, Output, TemplateRef, ViewChild } from '@angular/core';
|
|
2
2
|
import { ThumbnailComponent } from '@seniorsistemas/angular-components/thumbnail';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
import * as i1 from "@seniorsistemas/angular-components/tooltip";
|
|
5
5
|
import * as i2 from "@seniorsistemas/angular-components/thumbnail";
|
|
6
6
|
import * as i3 from "@seniorsistemas/angular-components/button";
|
|
7
|
+
import * as i4 from "@seniorsistemas/angular-components/badge";
|
|
7
8
|
export class ObjectCardFieldComponent {
|
|
8
9
|
static nextId = 0;
|
|
9
10
|
id = `s-object-card-field-${ObjectCardFieldComponent.nextId++}`;
|
|
@@ -17,12 +18,14 @@ export class ObjectCardFieldComponent {
|
|
|
17
18
|
buttonClick = new EventEmitter();
|
|
18
19
|
thumbnailComponent = null;
|
|
19
20
|
content = null;
|
|
21
|
+
badge = input('');
|
|
22
|
+
badgeColor = input('blue');
|
|
20
23
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ObjectCardFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
21
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ObjectCardFieldComponent, selector: "s-object-card-field", inputs: { id: "id", imageSource: "imageSource", imageAlt: "imageAlt", iconClass: "iconClass", label: "label", description: "description", buttonLabel: "buttonLabel", buttonModel: "buttonModel" }, outputs: { buttonClick: "buttonClick" }, queries: [{ propertyName: "thumbnailComponent", first: true, predicate: ThumbnailComponent, descendants: true, static: true }], viewQueries: [{ propertyName: "content", first: true, predicate: TemplateRef, descendants: true, static: true }], ngImport: i0, template: "<ng-template>\n <div class=\"container\">\n <ng-content select=\"s-thumbnail\"></ng-content>\n @if (!thumbnailComponent && (imageSource || iconClass)) {\n <s-thumbnail\n [id]=\"id + '-thumbnail'\"\n [imageSource]=\"imageSource\"\n [imageAlt]=\"imageAlt || label\"\n [iconClass]=\"iconClass ?? ''\"\n size=\"small\"\n ></s-thumbnail>\n }\n\n <div class=\"info-container\">\n <div #labelTemplate><ng-content select=\"[labelTemplate]\"></ng-content></div>\n
|
|
24
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ObjectCardFieldComponent, selector: "s-object-card-field", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: false, isRequired: false, transformFunction: null }, imageSource: { classPropertyName: "imageSource", publicName: "imageSource", isSignal: false, isRequired: false, transformFunction: null }, imageAlt: { classPropertyName: "imageAlt", publicName: "imageAlt", isSignal: false, isRequired: false, transformFunction: null }, iconClass: { classPropertyName: "iconClass", publicName: "iconClass", isSignal: false, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: false, isRequired: false, transformFunction: null }, description: { classPropertyName: "description", publicName: "description", isSignal: false, isRequired: false, transformFunction: null }, buttonLabel: { classPropertyName: "buttonLabel", publicName: "buttonLabel", isSignal: false, isRequired: false, transformFunction: null }, buttonModel: { classPropertyName: "buttonModel", publicName: "buttonModel", isSignal: false, isRequired: false, transformFunction: null }, badge: { classPropertyName: "badge", publicName: "badge", isSignal: true, isRequired: false, transformFunction: null }, badgeColor: { classPropertyName: "badgeColor", publicName: "badgeColor", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { buttonClick: "buttonClick" }, queries: [{ propertyName: "thumbnailComponent", first: true, predicate: ThumbnailComponent, descendants: true, static: true }], viewQueries: [{ propertyName: "content", first: true, predicate: TemplateRef, descendants: true, static: true }], ngImport: i0, template: "<ng-template>\n <div class=\"container\">\n <ng-content select=\"s-thumbnail\"></ng-content>\n @if (!thumbnailComponent && (imageSource || iconClass)) {\n <s-thumbnail\n [id]=\"id + '-thumbnail'\"\n [imageSource]=\"imageSource\"\n [imageAlt]=\"imageAlt || label\"\n [iconClass]=\"iconClass ?? ''\"\n size=\"small\"\n ></s-thumbnail>\n }\n\n <div class=\"info-container\">\n <div #labelTemplate><ng-content select=\"[labelTemplate]\"></ng-content></div>\n\n @if (!labelTemplate.children.length) {\n <span\n [id]=\"id + '-label'\"\n class=\"label\"\n [sTooltip]=\"label\"\n >{{ label }}</span\n >\n }\n\n <div #descriptionTemplate>\n @if (!badge()) {\n <ng-content select=\"[descriptionTemplate]\"></ng-content>\n }\n </div>\n @if (!descriptionTemplate.children.length) {\n <span\n [id]=\"id + '-description'\"\n class=\"description\"\n [sTooltip]=\"description\"\n >{{ description }}</span\n >\n }\n\n @if (badge()) {\n <s-badge\n [text]=\"badge()\"\n [color]=\"badgeColor()\"\n [enableTruncateText]=\"true\"\n >\n </s-badge>\n }\n @if (buttonLabel) {\n <s-button\n [id]=\"id + '-button'\"\n styleClass=\"object-card-button\"\n priority=\"link\"\n [label]=\"buttonLabel\"\n [menuOptions]=\"buttonModel\"\n size=\"small\"\n (clicked)=\"buttonClick.emit($event)\"\n ></s-button>\n }\n </div>\n </div>\n</ng-template>\n\n", styles: [".container{align-items:center;display:flex;height:100%}.info-container{margin-left:10px}.info-container,.info-container span{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.info-container .label{color:#999;display:block}.info-container .description{display:block}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.info-container{flex:1}}@media (max-width: 767px){.info-container,.info-container span{white-space:normal}}.info-container:only-child{margin-left:0}\n"], dependencies: [{ kind: "directive", type: i1.TooltipDirective, selector: "[sTooltip]", inputs: ["sTooltip", "tooltipPosition", "showDelay", "displayTime", "tooltipEvent", "escape", "visible", "mobileBehavior", "focusedInputRef", "checkTruncatedText"] }, { kind: "component", type: i2.ThumbnailComponent, selector: "s-thumbnail", inputs: ["id", "size", "imageSource", "imageFallback", "imageAlt", "iconClass", "hasAction", "actionIconClass", "isTile", "isBrand"] }, { kind: "component", type: i3.ButtonComponent, selector: "s-button", inputs: ["id", "label", "tooltip", "tooltipPosition", "iconClass", "rightIconClass", "caret", "styleClass", "baseZIndex", "disabled", "auxiliary", "type", "priority", "menuOptions", "size", "slide", "animation", "badge", "iconColor"], outputs: ["clicked"] }, { kind: "component", type: i4.BadgeComponent, selector: "s-badge", inputs: ["type", "color", "title", "text", "selectable", "iconClass", "iconPosition", "infoSign", "enableTruncateText"], outputs: ["selected"] }] });
|
|
22
25
|
}
|
|
23
26
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ObjectCardFieldComponent, decorators: [{
|
|
24
27
|
type: Component,
|
|
25
|
-
args: [{ selector: 's-object-card-field', template: "<ng-template>\n <div class=\"container\">\n <ng-content select=\"s-thumbnail\"></ng-content>\n @if (!thumbnailComponent && (imageSource || iconClass)) {\n <s-thumbnail\n [id]=\"id + '-thumbnail'\"\n [imageSource]=\"imageSource\"\n [imageAlt]=\"imageAlt || label\"\n [iconClass]=\"iconClass ?? ''\"\n size=\"small\"\n ></s-thumbnail>\n }\n\n <div class=\"info-container\">\n <div #labelTemplate><ng-content select=\"[labelTemplate]\"></ng-content></div>\n
|
|
28
|
+
args: [{ selector: 's-object-card-field', template: "<ng-template>\n <div class=\"container\">\n <ng-content select=\"s-thumbnail\"></ng-content>\n @if (!thumbnailComponent && (imageSource || iconClass)) {\n <s-thumbnail\n [id]=\"id + '-thumbnail'\"\n [imageSource]=\"imageSource\"\n [imageAlt]=\"imageAlt || label\"\n [iconClass]=\"iconClass ?? ''\"\n size=\"small\"\n ></s-thumbnail>\n }\n\n <div class=\"info-container\">\n <div #labelTemplate><ng-content select=\"[labelTemplate]\"></ng-content></div>\n\n @if (!labelTemplate.children.length) {\n <span\n [id]=\"id + '-label'\"\n class=\"label\"\n [sTooltip]=\"label\"\n >{{ label }}</span\n >\n }\n\n <div #descriptionTemplate>\n @if (!badge()) {\n <ng-content select=\"[descriptionTemplate]\"></ng-content>\n }\n </div>\n @if (!descriptionTemplate.children.length) {\n <span\n [id]=\"id + '-description'\"\n class=\"description\"\n [sTooltip]=\"description\"\n >{{ description }}</span\n >\n }\n\n @if (badge()) {\n <s-badge\n [text]=\"badge()\"\n [color]=\"badgeColor()\"\n [enableTruncateText]=\"true\"\n >\n </s-badge>\n }\n @if (buttonLabel) {\n <s-button\n [id]=\"id + '-button'\"\n styleClass=\"object-card-button\"\n priority=\"link\"\n [label]=\"buttonLabel\"\n [menuOptions]=\"buttonModel\"\n size=\"small\"\n (clicked)=\"buttonClick.emit($event)\"\n ></s-button>\n }\n </div>\n </div>\n</ng-template>\n\n", styles: [".container{align-items:center;display:flex;height:100%}.info-container{margin-left:10px}.info-container,.info-container span{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.info-container .label{color:#999;display:block}.info-container .description{display:block}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.info-container{flex:1}}@media (max-width: 767px){.info-container,.info-container span{white-space:normal}}.info-container:only-child{margin-left:0}\n"] }]
|
|
26
29
|
}], propDecorators: { id: [{
|
|
27
30
|
type: Input
|
|
28
31
|
}], imageSource: [{
|
|
@@ -48,4 +51,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
48
51
|
type: ViewChild,
|
|
49
52
|
args: [TemplateRef, { static: true }]
|
|
50
53
|
}] } });
|
|
51
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LWNhcmQtZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL29iamVjdC1jYXJkL3NyYy9saWIvb2JqZWN0LWNhcmQvZWxlbWVudHMvZmllbGQvb2JqZWN0LWNhcmQtZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL29iamVjdC1jYXJkL3NyYy9saWIvb2JqZWN0LWNhcmQvZWxlbWVudHMvZmllbGQvb2JqZWN0LWNhcmQtZmllbGQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFcEgsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOENBQThDLENBQUM7Ozs7OztBQVNsRixNQUFNLE9BQU8sd0JBQXdCO0lBQzFCLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBR2xCLEVBQUUsR0FBRyx1QkFBdUIsd0JBQXdCLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQztJQUdoRSxXQUFXLENBQVU7SUFHckIsUUFBUSxDQUFVO0lBR2xCLFNBQVMsQ0FBVTtJQUduQixLQUFLLENBQVU7SUFHZixXQUFXLENBQVU7SUFHckIsV0FBVyxDQUFVO0lBR3JCLFdBQVcsR0FBeUIsRUFBRSxDQUFDO0lBR3ZDLFdBQVcsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBR2pDLGtCQUFrQixHQUE4QixJQUFJLENBQUM7SUFHckQsT0FBTyxHQUE0QixJQUFJLENBQUM7SUFFL0MsS0FBSyxHQUFHLEtBQUssQ0FBUyxFQUFFLENBQUMsQ0FBQztJQUUxQixVQUFVLEdBQUcsS0FBSyxDQUFjLE1BQU0sQ0FBQyxDQUFDO3dHQXRDL0Isd0JBQXdCOzRGQUF4Qix3QkFBd0IsMjdDQThCbkIsa0JBQWtCLHVHQUdyQixXQUFXLDhEQzVDMUIsd2pFQThEQTs7NEZEbkRhLHdCQUF3QjtrQkFMcEMsU0FBUzsrQkFDSSxxQkFBcUI7OEJBUXhCLEVBQUU7c0JBRFIsS0FBSztnQkFJQyxXQUFXO3NCQURqQixLQUFLO2dCQUlDLFFBQVE7c0JBRGQsS0FBSztnQkFJQyxTQUFTO3NCQURmLEtBQUs7Z0JBSUMsS0FBSztzQkFEWCxLQUFLO2dCQUlDLFdBQVc7c0JBRGpCLEtBQUs7Z0JBSUMsV0FBVztzQkFEakIsS0FBSztnQkFJQyxXQUFXO3NCQURqQixLQUFLO2dCQUlDLFdBQVc7c0JBRGpCLE1BQU07Z0JBSUEsa0JBQWtCO3NCQUR4QixZQUFZO3VCQUFDLGtCQUFrQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFJM0MsT0FBTztzQkFEYixTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIENvbnRlbnRDaGlsZCwgRXZlbnRFbWl0dGVyLCBpbnB1dCwgSW5wdXQsIE91dHB1dCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmFkZ2VDb2xvcnMgfSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzL2JhZGdlJztcbmltcG9ydCB7IFRodW1ibmFpbENvbXBvbmVudCB9IGZyb20gJ0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvdGh1bWJuYWlsJztcblxuaW1wb3J0IHsgVGllcmVkTWVudUl0ZW1EYXRhIH0gZnJvbSAnQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy90aWVyZWQtbWVudSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncy1vYmplY3QtY2FyZC1maWVsZCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL29iamVjdC1jYXJkLWZpZWxkLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9vYmplY3QtY2FyZC1maWVsZC5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBPYmplY3RDYXJkRmllbGRDb21wb25lbnQge1xuICAgIHB1YmxpYyBzdGF0aWMgbmV4dElkID0gMDtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGlkID0gYHMtb2JqZWN0LWNhcmQtZmllbGQtJHtPYmplY3RDYXJkRmllbGRDb21wb25lbnQubmV4dElkKyt9YDtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGltYWdlU291cmNlPzogc3RyaW5nO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaW1hZ2VBbHQ/OiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBpY29uQ2xhc3M/OiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBsYWJlbD86IHN0cmluZztcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgYnV0dG9uTGFiZWw/OiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBidXR0b25Nb2RlbDogVGllcmVkTWVudUl0ZW1EYXRhW10gPSBbXTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBidXR0b25DbGljayA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBDb250ZW50Q2hpbGQoVGh1bWJuYWlsQ29tcG9uZW50LCB7IHN0YXRpYzogdHJ1ZSB9KVxuICAgIHB1YmxpYyB0aHVtYm5haWxDb21wb25lbnQ6IFRodW1ibmFpbENvbXBvbmVudCB8IG51bGwgPSBudWxsO1xuXG4gICAgQFZpZXdDaGlsZChUZW1wbGF0ZVJlZiwgeyBzdGF0aWM6IHRydWUgfSlcbiAgICBwdWJsaWMgY29udGVudDogVGVtcGxhdGVSZWY8YW55PiB8IG51bGwgPSBudWxsO1xuXG4gICAgYmFkZ2UgPSBpbnB1dDxzdHJpbmc+KCcnKTtcblxuICAgIGJhZGdlQ29sb3IgPSBpbnB1dDxCYWRnZUNvbG9ycz4oJ2JsdWUnKTtcbn1cblxuIiwiPG5nLXRlbXBsYXRlPlxuICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIj5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwicy10aHVtYm5haWxcIj48L25nLWNvbnRlbnQ+XG4gICAgICAgIEBpZiAoIXRodW1ibmFpbENvbXBvbmVudCAmJiAoaW1hZ2VTb3VyY2UgfHwgaWNvbkNsYXNzKSkge1xuICAgICAgICAgICAgPHMtdGh1bWJuYWlsXG4gICAgICAgICAgICAgICAgW2lkXT1cImlkICsgJy10aHVtYm5haWwnXCJcbiAgICAgICAgICAgICAgICBbaW1hZ2VTb3VyY2VdPVwiaW1hZ2VTb3VyY2VcIlxuICAgICAgICAgICAgICAgIFtpbWFnZUFsdF09XCJpbWFnZUFsdCB8fCBsYWJlbFwiXG4gICAgICAgICAgICAgICAgW2ljb25DbGFzc109XCJpY29uQ2xhc3MgPz8gJydcIlxuICAgICAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgICA+PC9zLXRodW1ibmFpbD5cbiAgICAgICAgfVxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgPGRpdiAjbGFiZWxUZW1wbGF0ZT48bmctY29udGVudCBzZWxlY3Q9XCJbbGFiZWxUZW1wbGF0ZV1cIj48L25nLWNvbnRlbnQ+PC9kaXY+XG5cbiAgICAgICAgICAgIEBpZiAoIWxhYmVsVGVtcGxhdGUuY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgW2lkXT1cImlkICsgJy1sYWJlbCdcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgW3NUb29sdGlwXT1cImxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgPnt7IGxhYmVsIH19PC9zcGFuXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICA8ZGl2ICNkZXNjcmlwdGlvblRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIEBpZiAoIWJhZGdlKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2Rlc2NyaXB0aW9uVGVtcGxhdGVdXCI+PC9uZy1jb250ZW50PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgQGlmICghZGVzY3JpcHRpb25UZW1wbGF0ZS5jaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICBbaWRdPVwiaWQgKyAnLWRlc2NyaXB0aW9uJ1wiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICBbc1Rvb2x0aXBdPVwiZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICA+e3sgZGVzY3JpcHRpb24gfX08L3NwYW5cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIEBpZiAoYmFkZ2UoKSkge1xuICAgICAgICAgICAgICAgIDxzLWJhZGdlXG4gICAgICAgICAgICAgICAgICAgIFt0ZXh0XT1cImJhZGdlKClcIlxuICAgICAgICAgICAgICAgICAgICBbY29sb3JdPVwiYmFkZ2VDb2xvcigpXCJcbiAgICAgICAgICAgICAgICAgICAgW2VuYWJsZVRydW5jYXRlVGV4dF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPC9zLWJhZGdlPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChidXR0b25MYWJlbCkge1xuICAgICAgICAgICAgICAgIDxzLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBbaWRdPVwiaWQgKyAnLWJ1dHRvbidcIlxuICAgICAgICAgICAgICAgICAgICBzdHlsZUNsYXNzPVwib2JqZWN0LWNhcmQtYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgcHJpb3JpdHk9XCJsaW5rXCJcbiAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImJ1dHRvbkxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgW21lbnVPcHRpb25zXT1cImJ1dHRvbk1vZGVsXCJcbiAgICAgICAgICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrZWQpPVwiYnV0dG9uQ2xpY2suZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICA+PC9zLWJ1dHRvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG4iXX0=
|
|
@@ -7,18 +7,19 @@ import { ButtonModule } from '@seniorsistemas/angular-components/button';
|
|
|
7
7
|
import { ThumbnailModule } from '@seniorsistemas/angular-components/thumbnail';
|
|
8
8
|
import { TooltipModule } from '@seniorsistemas/angular-components/tooltip';
|
|
9
9
|
import { BorderButtonModule } from '@seniorsistemas/angular-components/shared';
|
|
10
|
+
import { BadgeModule } from '@seniorsistemas/angular-components/badge';
|
|
10
11
|
import * as i0 from "@angular/core";
|
|
11
12
|
export class ObjectCardModule {
|
|
12
13
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ObjectCardModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
13
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: ObjectCardModule, declarations: [ObjectCardComponent, ObjectCardMainComponent, ObjectCardFieldComponent], imports: [CommonModule, TooltipModule, ThumbnailModule, ButtonModule, BorderButtonModule], exports: [ThumbnailModule, ObjectCardComponent, ObjectCardMainComponent, ObjectCardFieldComponent] });
|
|
14
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ObjectCardModule, imports: [CommonModule, TooltipModule, ThumbnailModule, ButtonModule, BorderButtonModule, ThumbnailModule] });
|
|
14
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: ObjectCardModule, declarations: [ObjectCardComponent, ObjectCardMainComponent, ObjectCardFieldComponent], imports: [CommonModule, TooltipModule, ThumbnailModule, ButtonModule, BorderButtonModule, BadgeModule], exports: [ThumbnailModule, ObjectCardComponent, ObjectCardMainComponent, ObjectCardFieldComponent] });
|
|
15
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ObjectCardModule, imports: [CommonModule, TooltipModule, ThumbnailModule, ButtonModule, BorderButtonModule, BadgeModule, ThumbnailModule] });
|
|
15
16
|
}
|
|
16
17
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ObjectCardModule, decorators: [{
|
|
17
18
|
type: NgModule,
|
|
18
19
|
args: [{
|
|
19
|
-
imports: [CommonModule, TooltipModule, ThumbnailModule, ButtonModule, BorderButtonModule],
|
|
20
|
+
imports: [CommonModule, TooltipModule, ThumbnailModule, ButtonModule, BorderButtonModule, BadgeModule],
|
|
20
21
|
declarations: [ObjectCardComponent, ObjectCardMainComponent, ObjectCardFieldComponent],
|
|
21
22
|
exports: [ThumbnailModule, ObjectCardComponent, ObjectCardMainComponent, ObjectCardFieldComponent],
|
|
22
23
|
}]
|
|
23
24
|
}] });
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LWNhcmQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL29iamVjdC1jYXJkL3NyYy9saWIvb2JqZWN0LWNhcmQvb2JqZWN0LWNhcmQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ3hGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDL0UsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7QUFPdkUsTUFBTSxPQUFPLGdCQUFnQjt3R0FBaEIsZ0JBQWdCO3lHQUFoQixnQkFBZ0IsaUJBSFYsbUJBQW1CLEVBQUUsdUJBQXVCLEVBQUUsd0JBQXdCLGFBRDNFLFlBQVksRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxXQUFXLGFBRTNGLGVBQWUsRUFBRSxtQkFBbUIsRUFBRSx1QkFBdUIsRUFBRSx3QkFBd0I7eUdBRXhGLGdCQUFnQixZQUpmLFlBQVksRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxXQUFXLEVBRTNGLGVBQWU7OzRGQUVoQixnQkFBZ0I7a0JBTDVCLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLGtCQUFrQixFQUFFLFdBQVcsQ0FBQztvQkFDdEcsWUFBWSxFQUFFLENBQUMsbUJBQW1CLEVBQUUsdUJBQXVCLEVBQUUsd0JBQXdCLENBQUM7b0JBQ3RGLE9BQU8sRUFBRSxDQUFDLGVBQWUsRUFBRSxtQkFBbUIsRUFBRSx1QkFBdUIsRUFBRSx3QkFBd0IsQ0FBQztpQkFDckciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgT2JqZWN0Q2FyZEZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi9lbGVtZW50cy9maWVsZC9vYmplY3QtY2FyZC1maWVsZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgT2JqZWN0Q2FyZE1haW5Db21wb25lbnQgfSBmcm9tICcuL2VsZW1lbnRzL21haW4vb2JqZWN0LWNhcmQtbWFpbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgT2JqZWN0Q2FyZENvbXBvbmVudCB9IGZyb20gJy4vb2JqZWN0LWNhcmQuY29tcG9uZW50JztcbmltcG9ydCB7IEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvYnV0dG9uJztcbmltcG9ydCB7IFRodW1ibmFpbE1vZHVsZSB9IGZyb20gJ0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvdGh1bWJuYWlsJztcbmltcG9ydCB7IFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzL3Rvb2x0aXAnO1xuaW1wb3J0IHsgQm9yZGVyQnV0dG9uTW9kdWxlIH0gZnJvbSAnQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy9zaGFyZWQnO1xuaW1wb3J0IHsgQmFkZ2VNb2R1bGUgfSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzL2JhZGdlJztcblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBUb29sdGlwTW9kdWxlLCBUaHVtYm5haWxNb2R1bGUsIEJ1dHRvbk1vZHVsZSwgQm9yZGVyQnV0dG9uTW9kdWxlLCBCYWRnZU1vZHVsZV0sXG4gICAgZGVjbGFyYXRpb25zOiBbT2JqZWN0Q2FyZENvbXBvbmVudCwgT2JqZWN0Q2FyZE1haW5Db21wb25lbnQsIE9iamVjdENhcmRGaWVsZENvbXBvbmVudF0sXG4gICAgZXhwb3J0czogW1RodW1ibmFpbE1vZHVsZSwgT2JqZWN0Q2FyZENvbXBvbmVudCwgT2JqZWN0Q2FyZE1haW5Db21wb25lbnQsIE9iamVjdENhcmRGaWVsZENvbXBvbmVudF0sXG59KVxuZXhwb3J0IGNsYXNzIE9iamVjdENhcmRNb2R1bGUge31cblxuIl19
|
|
@@ -278,7 +278,7 @@ export class TableColumnsComponent {
|
|
|
278
278
|
return columns.sort((a, b) => (a.sequence ?? 0) - (b.sequence ?? 0));
|
|
279
279
|
}
|
|
280
280
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TableColumnsComponent, deps: [{ token: i1.LocaleService }, { token: i0.ViewContainerRef }, { token: i2.TranslateService }, { token: i3.NumericService }, { token: HostProjectConfigsInjectionToken }], target: i0.ɵɵFactoryTarget.Component });
|
|
281
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: TableColumnsComponent, selector: "s-table-columns", inputs: { columns: "columns", rowValue: "rowValue", locale: "locale" }, viewQueries: [{ propertyName: "columnsTemplate", first: true, predicate: ["columnsTemplate"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<ng-template #columnsTemplate>\n @for (column of formattedColumns; track $index; let i = $index) {\n <td\n [ngStyle]=\"column.style\"\n (click)=\"column.onColumnClick ? column.onColumnClick(rowValue) : null\"\n >\n @if (column.type !== 'TOKENS' || !isArray(column.columnValue)) {\n <div [ngClass]=\"{ 'compact-column': column.compact }\">\n @if (column.type !== 'LINK') {\n <span\n [sTooltip]=\"column.tooltip\"\n [escape]=\"false\"\n >\n <ng-container *ngTemplateOutlet=\"columnValueTemplate\"></ng-container>\n </span>\n }\n\n @if (column.type === 'LINK') {\n @if (cellsData[i]?.[0]?.isUninformed) {\n <span class=\"sds-empty-value\">{{ cellsData[i]?.[0]?.value }}</span>\n } @else {\n <ng-template #anchorTemplate>\n <a\n [sTooltip]=\"column.tooltip\"\n [escape]=\"false\"\n (click)=\"column.onLinkClick ? column.onLinkClick(rowValue) : null\"\n >\n <ng-container *ngTemplateOutlet=\"columnValueTemplate\"></ng-container>\n </a>\n </ng-template>\n }\n }\n\n <ng-template #columnValueTemplate>\n @for (cellData of cellsData[i]; track $index) {\n @if (cellData.isUninformed) {\n <span class=\"sds-empty-value\">{{ cellData.value }}</span>\n } @else {\n @if (column.badgeConfigs) {\n <s-badge\n [sTooltip]=\"column.tooltip\"\n [color]=\"column.badgeConfigs.color\"\n [text]=\"cellData.value\"\n ></s-badge>\n } @else {\n <span [ngClass]=\"{\n 'column-cell-red': column.color === 'Red',\n 'column-cell-orange': column.color === 'Orange',\n 'column-cell-yellow': column.color === 'Yellow',\n 'column-cell-green': column.color === 'Green',\n 'column-cell-blue': column.color === 'Blue'\n }\"\n >{{ cellData.value }}</span>\n }\n }\n\n @if (cellData.separator) {\n <span>{{ cellData.separator }}</span>\n }\n }\n\n @if (!!column.infoSign) {\n <span *sInfoSign=\"column.infoSign\"></span>\n }\n </ng-template>\n </div>\n } @else {\n <s-token-list\n [tokens]=\"getTokensByColumn(column)\"\n [hidePointerEvents]=\"true\"\n ></s-token-list>\n\n @if (!!column.infoSign) {\n <span *sInfoSign=\"column.infoSign\"></span>\n }\n }\n </td>\n }\n</ng-template>\n", styles: [":host{display:none}.compact-column{overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;word-break:break-word}.column-cell-red{color:#c13018}.column-cell-orange{color:#f8931f}.column-cell-yellow{color:#fcbf10}.column-cell-green{color:#0c9348}.column-cell-blue{color:#428bca}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i5.TooltipDirective, selector: "[sTooltip]", inputs: ["sTooltip", "tooltipPosition", "showDelay", "displayTime", "tooltipEvent", "escape", "visible", "mobileBehavior", "focusedInputRef", "checkTruncatedText"] }, { kind: "component", type: i6.TokenListComponent, selector: "s-token-list", inputs: ["id", "tokens", "removableTokens", "hidePointerEvents"], outputs: ["tokenSelected", "tokenRemoved"] }, { kind: "directive", type: i7.InfoSignDirective, selector: "[sInfoSign]", inputs: ["sInfoSign", "sInfoSignDisplayTime", "sInfoSignFocusedInputRef", "sInfoSignUseFocusedInputRef"] }, { kind: "component", type: i8.BadgeComponent, selector: "s-badge", inputs: ["type", "color", "title", "text", "selectable", "iconClass", "iconPosition", "infoSign"], outputs: ["selected"] }] });
|
|
281
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: TableColumnsComponent, selector: "s-table-columns", inputs: { columns: "columns", rowValue: "rowValue", locale: "locale" }, viewQueries: [{ propertyName: "columnsTemplate", first: true, predicate: ["columnsTemplate"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<ng-template #columnsTemplate>\n @for (column of formattedColumns; track $index; let i = $index) {\n <td\n [ngStyle]=\"column.style\"\n (click)=\"column.onColumnClick ? column.onColumnClick(rowValue) : null\"\n >\n @if (column.type !== 'TOKENS' || !isArray(column.columnValue)) {\n <div [ngClass]=\"{ 'compact-column': column.compact }\">\n @if (column.type !== 'LINK') {\n <span\n [sTooltip]=\"column.tooltip\"\n [escape]=\"false\"\n >\n <ng-container *ngTemplateOutlet=\"columnValueTemplate\"></ng-container>\n </span>\n }\n\n @if (column.type === 'LINK') {\n @if (cellsData[i]?.[0]?.isUninformed) {\n <span class=\"sds-empty-value\">{{ cellsData[i]?.[0]?.value }}</span>\n } @else {\n <ng-template #anchorTemplate>\n <a\n [sTooltip]=\"column.tooltip\"\n [escape]=\"false\"\n (click)=\"column.onLinkClick ? column.onLinkClick(rowValue) : null\"\n >\n <ng-container *ngTemplateOutlet=\"columnValueTemplate\"></ng-container>\n </a>\n </ng-template>\n }\n }\n\n <ng-template #columnValueTemplate>\n @for (cellData of cellsData[i]; track $index) {\n @if (cellData.isUninformed) {\n <span class=\"sds-empty-value\">{{ cellData.value }}</span>\n } @else {\n @if (column.badgeConfigs) {\n <s-badge\n [sTooltip]=\"column.tooltip\"\n [color]=\"column.badgeConfigs.color\"\n [text]=\"cellData.value\"\n ></s-badge>\n } @else {\n <span [ngClass]=\"{\n 'column-cell-red': column.color === 'Red',\n 'column-cell-orange': column.color === 'Orange',\n 'column-cell-yellow': column.color === 'Yellow',\n 'column-cell-green': column.color === 'Green',\n 'column-cell-blue': column.color === 'Blue'\n }\"\n >{{ cellData.value }}</span>\n }\n }\n\n @if (cellData.separator) {\n <span>{{ cellData.separator }}</span>\n }\n }\n\n @if (!!column.infoSign) {\n <span *sInfoSign=\"column.infoSign\"></span>\n }\n </ng-template>\n </div>\n } @else {\n <s-token-list\n [tokens]=\"getTokensByColumn(column)\"\n [hidePointerEvents]=\"true\"\n ></s-token-list>\n\n @if (!!column.infoSign) {\n <span *sInfoSign=\"column.infoSign\"></span>\n }\n }\n </td>\n }\n</ng-template>\n", styles: [":host{display:none}.compact-column{overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;word-break:break-word}.column-cell-red{color:#c13018}.column-cell-orange{color:#f8931f}.column-cell-yellow{color:#fcbf10}.column-cell-green{color:#0c9348}.column-cell-blue{color:#428bca}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i5.TooltipDirective, selector: "[sTooltip]", inputs: ["sTooltip", "tooltipPosition", "showDelay", "displayTime", "tooltipEvent", "escape", "visible", "mobileBehavior", "focusedInputRef", "checkTruncatedText"] }, { kind: "component", type: i6.TokenListComponent, selector: "s-token-list", inputs: ["id", "tokens", "removableTokens", "hidePointerEvents"], outputs: ["tokenSelected", "tokenRemoved"] }, { kind: "directive", type: i7.InfoSignDirective, selector: "[sInfoSign]", inputs: ["sInfoSign", "sInfoSignDisplayTime", "sInfoSignFocusedInputRef", "sInfoSignUseFocusedInputRef"] }, { kind: "component", type: i8.BadgeComponent, selector: "s-badge", inputs: ["type", "color", "title", "text", "selectable", "iconClass", "iconPosition", "infoSign", "enableTruncateText"], outputs: ["selected"] }] });
|
|
282
282
|
}
|
|
283
283
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TableColumnsComponent, decorators: [{
|
|
284
284
|
type: Component,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Directive, HostListener, input, Input } from '@angular/core';
|
|
2
|
-
import { getElementLeftoverContentAvailable, getElementPositionInfo, isNullOrUndefined } from '@seniorsistemas/angular-components/utils';
|
|
1
|
+
import { Directive, HostListener, input, Input, } from '@angular/core';
|
|
2
|
+
import { getElementLeftoverContentAvailable, getElementPositionInfo, isNullOrUndefined, } from '@seniorsistemas/angular-components/utils';
|
|
3
3
|
import { TooltipComponent } from './tooltip.component';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
import * as i1 from "@seniorsistemas/angular-components/common";
|
|
@@ -82,7 +82,9 @@ export class TooltipDirective {
|
|
|
82
82
|
// whenever the component with the tooltip is clicked I destroy the tooltip.
|
|
83
83
|
// whenever a key is pressed on the component with the tooltip I destroy the tooltip.
|
|
84
84
|
onClick() {
|
|
85
|
-
if (this.tooltipEvent === 'hover' &&
|
|
85
|
+
if (this.tooltipEvent === 'hover' &&
|
|
86
|
+
!navigator.userAgent.match(/Android/i) &&
|
|
87
|
+
!navigator.userAgent.match(/iPhone/i)) {
|
|
86
88
|
this.destroy();
|
|
87
89
|
}
|
|
88
90
|
}
|
|
@@ -146,13 +148,13 @@ export class TooltipDirective {
|
|
|
146
148
|
}
|
|
147
149
|
const domElement = this.getDomElement();
|
|
148
150
|
document.body.appendChild(domElement);
|
|
149
|
-
this.tooltipDivElement = domElement.querySelector(
|
|
151
|
+
this.tooltipDivElement = domElement.querySelector('.tooltip');
|
|
150
152
|
this.setTooltipComponentProperties();
|
|
151
153
|
const _showDelay = useShowDelay ? this.showDelay : 0;
|
|
152
154
|
setTimeout(() => {
|
|
153
155
|
this.showTooltip();
|
|
154
156
|
}, _showDelay);
|
|
155
|
-
this.renderer.listen(window,
|
|
157
|
+
this.renderer.listen(window, 'scroll', () => {
|
|
156
158
|
this.setTooltipPositionProperty();
|
|
157
159
|
});
|
|
158
160
|
if (autoDestroy && this.displayTime) {
|
|
@@ -178,7 +180,9 @@ export class TooltipDirective {
|
|
|
178
180
|
const elementTriggerPosition = getElementPositionInfo(this.elementRef.nativeElement);
|
|
179
181
|
const horizontalPositions = ['left', 'right'];
|
|
180
182
|
const isPositionHorizontal = horizontalPositions.includes(this.tooltipPosition);
|
|
181
|
-
const distanceToBorders = isPositionHorizontal
|
|
183
|
+
const distanceToBorders = isPositionHorizontal
|
|
184
|
+
? tooltipElementPosition.elementWidth
|
|
185
|
+
: tooltipElementPosition.elementHorizontalCenter;
|
|
182
186
|
const canSetAtTop = elementLeftover.freeDistanceToTop > tooltipElementPosition.elementHeight;
|
|
183
187
|
const canSetAtLeft = elementLeftover.freeDistanceToLeft > distanceToBorders;
|
|
184
188
|
const canSetAtRight = elementLeftover.freeDistanceToRight > distanceToBorders;
|
|
@@ -199,48 +203,48 @@ export class TooltipDirective {
|
|
|
199
203
|
const setTopPosition = () => {
|
|
200
204
|
return {
|
|
201
205
|
left: left + (right - left) / 2,
|
|
202
|
-
top: elementTriggerPosition.top - anchorSize
|
|
206
|
+
top: elementTriggerPosition.top - anchorSize,
|
|
203
207
|
};
|
|
204
208
|
};
|
|
205
209
|
const setBottomPosition = () => {
|
|
206
210
|
return {
|
|
207
211
|
left: left + (right - left) / 2,
|
|
208
|
-
top: elementTriggerPosition.top + elementTriggerPosition.elementHeight
|
|
212
|
+
top: elementTriggerPosition.top + elementTriggerPosition.elementHeight,
|
|
209
213
|
};
|
|
210
214
|
};
|
|
211
215
|
const setLeftPosition = () => {
|
|
212
216
|
return {
|
|
213
217
|
left: left,
|
|
214
|
-
top: topVertical
|
|
218
|
+
top: topVertical,
|
|
215
219
|
};
|
|
216
220
|
};
|
|
217
221
|
const setRightPosition = () => {
|
|
218
222
|
return {
|
|
219
223
|
left: right,
|
|
220
|
-
top: topVertical
|
|
224
|
+
top: topVertical,
|
|
221
225
|
};
|
|
222
226
|
};
|
|
223
227
|
const positions = [
|
|
224
228
|
{
|
|
225
229
|
pos: 'top',
|
|
226
230
|
check: checkTopPosition,
|
|
227
|
-
set: setTopPosition
|
|
231
|
+
set: setTopPosition,
|
|
228
232
|
},
|
|
229
233
|
{
|
|
230
234
|
pos: 'bottom',
|
|
231
235
|
check: checkBottomPosition,
|
|
232
|
-
set: setBottomPosition
|
|
236
|
+
set: setBottomPosition,
|
|
233
237
|
},
|
|
234
238
|
{
|
|
235
239
|
pos: 'left',
|
|
236
240
|
check: checkLeftPosition,
|
|
237
|
-
set: setLeftPosition
|
|
241
|
+
set: setLeftPosition,
|
|
238
242
|
},
|
|
239
243
|
{
|
|
240
244
|
pos: 'right',
|
|
241
245
|
check: checkRightPosition,
|
|
242
|
-
set: setRightPosition
|
|
243
|
-
}
|
|
246
|
+
set: setRightPosition,
|
|
247
|
+
},
|
|
244
248
|
];
|
|
245
249
|
const positionDefined = positions.find((position) => position.pos === this.tooltipPosition);
|
|
246
250
|
let validPosition = positionDefined;
|
|
@@ -278,7 +282,9 @@ export class TooltipDirective {
|
|
|
278
282
|
}
|
|
279
283
|
get contentIsTruncated() {
|
|
280
284
|
const element = this.elementRef.nativeElement;
|
|
281
|
-
|
|
285
|
+
const truncatedByVertical = element.scrollHeight > element.clientHeight;
|
|
286
|
+
const truncatedByHorizontal = element.scrollWidth > element.clientWidth;
|
|
287
|
+
return truncatedByHorizontal || truncatedByVertical;
|
|
282
288
|
}
|
|
283
289
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TooltipDirective, deps: [{ token: i0.ElementRef }, { token: i0.ApplicationRef }, { token: i1.DebounceUtils }, { token: i0.Renderer2 }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
284
290
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.14", type: TooltipDirective, isStandalone: true, selector: "[sTooltip]", inputs: { tooltip: { classPropertyName: "tooltip", publicName: "sTooltip", isSignal: false, isRequired: false, transformFunction: null }, tooltipPosition: { classPropertyName: "tooltipPosition", publicName: "tooltipPosition", isSignal: false, isRequired: false, transformFunction: null }, showDelay: { classPropertyName: "showDelay", publicName: "showDelay", isSignal: false, isRequired: false, transformFunction: null }, displayTime: { classPropertyName: "displayTime", publicName: "displayTime", isSignal: false, isRequired: false, transformFunction: null }, tooltipEvent: { classPropertyName: "tooltipEvent", publicName: "tooltipEvent", isSignal: false, isRequired: false, transformFunction: null }, escape: { classPropertyName: "escape", publicName: "escape", isSignal: false, isRequired: false, transformFunction: null }, visible: { classPropertyName: "visible", publicName: "visible", isSignal: false, isRequired: false, transformFunction: null }, mobileBehavior: { classPropertyName: "mobileBehavior", publicName: "mobileBehavior", isSignal: false, isRequired: false, transformFunction: null }, focusedInputRef: { classPropertyName: "focusedInputRef", publicName: "focusedInputRef", isSignal: false, isRequired: false, transformFunction: null }, checkTruncatedText: { classPropertyName: "checkTruncatedText", publicName: "checkTruncatedText", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "click": "onClick()", "keydown": "onClick()", "focus": "onFocus()", "blur": "onBlur()", "mouseenter": "onMouseEnter()", "mouseleave": "onMouseLeave()", "wheel": "onMouseLeave()", "touchstart": "onTouchStart()", "touchend": "onTouchEnd()" } }, ngImport: i0 });
|
|
@@ -322,13 +328,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
322
328
|
args: ['blur']
|
|
323
329
|
}], onMouseEnter: [{
|
|
324
330
|
type: HostListener,
|
|
325
|
-
args: [
|
|
331
|
+
args: ['mouseenter']
|
|
326
332
|
}], onMouseLeave: [{
|
|
327
333
|
type: HostListener,
|
|
328
|
-
args: [
|
|
334
|
+
args: ['mouseleave']
|
|
329
335
|
}, {
|
|
330
336
|
type: HostListener,
|
|
331
|
-
args: [
|
|
337
|
+
args: ['wheel']
|
|
332
338
|
}], onTouchStart: [{
|
|
333
339
|
type: HostListener,
|
|
334
340
|
args: ['touchstart']
|
|
@@ -336,4 +342,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
336
342
|
type: HostListener,
|
|
337
343
|
args: ['touchend']
|
|
338
344
|
}] } });
|
|
339
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvdG9vbHRpcC9zcmMvbGliL3Rvb2x0aXAvdG9vbHRpcC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdILFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUNMLEtBQUssRUFLUixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsa0NBQWtDLEVBQUUsc0JBQXNCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUl6SSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7O0FBTXZELE1BQU0sT0FBTyxnQkFBZ0I7SUFzQ0o7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQXhDZCxPQUFPLENBQVU7SUFHakIsZUFBZSxHQUFxQixLQUFLLENBQUM7SUFHMUMsU0FBUyxHQUFHLEdBQUcsQ0FBQztJQUdoQixXQUFXLENBQVU7SUFHckIsWUFBWSxHQUFpQixPQUFPLENBQUM7SUFHckMsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUdmLE9BQU8sR0FBRyxJQUFJLENBQUM7SUFHZixjQUFjLEdBQW1CLFVBQVUsQ0FBQztJQUc1QyxlQUFlLEdBQTRCLElBQUksQ0FBQztJQUV2RCxrQkFBa0IsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFMUIsWUFBWSxHQUEwQyxJQUFJLENBQUM7SUFDM0QsV0FBVyxDQUFVO0lBQ3JCLFlBQVksQ0FBVTtJQUN0QixpQkFBaUIsR0FBdUIsSUFBSSxDQUFDO0lBQ3BDLDZCQUE2QixDQUFhO0lBQ25ELHFCQUFxQixHQUFHLEtBQUssQ0FBQztJQUV0QyxZQUNxQixVQUFzQixFQUN0QixNQUFzQixFQUN0QixhQUE0QixFQUM1QixRQUFtQixFQUNuQixnQkFBa0M7UUFKbEMsZUFBVSxHQUFWLFVBQVUs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LFdBQVc7c0JBRGpCLEtBQUs7Z0JBSUMsWUFBWTtzQkFEbEIsS0FBSztnQkFJQyxNQUFNO3NCQURaLEtBQUs7Z0JBSUMsT0FBTztzQkFEYixLQUFLO2dCQUlDLGNBQWM7c0JBRHBCLEtBQUs7Z0JBSUMsZUFBZTtzQkFEckIsS0FBSztnQkE2RUMsT0FBTztzQkFGYixZQUFZO3VCQUFDLE9BQU87O3NCQUNwQixZQUFZO3VCQUFDLFNBQVM7Z0JBUWhCLE9BQU87c0JBRGIsWUFBWTt1QkFBQyxPQUFPO2dCQVFkLE1BQU07c0JBRFosWUFBWTt1QkFBQyxNQUFNO2dCQVFiLFlBQVk7c0JBRGxCLFlBQVk7dUJBQUMsWUFBWTtnQkFTbkIsWUFBWTtzQkFGbEIsWUFBWTt1QkFBQyxZQUFZOztzQkFDekIsWUFBWTt1QkFBQyxPQUFPO2dCQVFkLFlBQVk7c0JBRGxCLFlBQVk7dUJBQUMsWUFBWTtnQkFZbkIsVUFBVTtzQkFEaEIsWUFBWTt1QkFBQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBcHBsaWNhdGlvblJlZixcbiAgICBDb21wb25lbnRSZWYsXG4gICAgRGlyZWN0aXZlLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIGlucHV0LFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgUmVuZGVyZXIyLFxuICAgIFZpZXdDb250YWluZXJSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEZWJvdW5jZVV0aWxzIH0gZnJvbSAnQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy9jb21tb24nO1xuaW1wb3J0IHsgZ2V0RWxlbWVudExlZnRvdmVyQ29udGVudEF2YWlsYWJsZSwgZ2V0RWxlbWVudFBvc2l0aW9uSW5mbywgaXNOdWxsT3JVbmRlZmluZWQgfSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzL3V0aWxzJztcbmltcG9ydCB7IE1vYmlsZUJlaGF2aW9yIH0gZnJvbSAnLi9tb2RlbHMvbW9iaWxlLWJlaGF2aW9yJztcbmltcG9ydCB7IFRvb2x0aXBFdmVudCB9IGZyb20gJy4vbW9kZWxzL3Rvb2x0aXAtZXZlbnQnO1xuaW1wb3J0IHsgVG9vbHRpcFBvc2l0aW9ucyB9IGZyb20gJy4vbW9kZWxzL3Rvb2x0aXAtcG9zaXRpb24nO1xuaW1wb3J0IHsgVG9vbHRpcENvbXBvbmVudCB9IGZyb20gJy4vdG9vbHRpcC5jb21wb25lbnQnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tzVG9vbHRpcF0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIFRvb2x0aXBEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgQElucHV0KCdzVG9vbHRpcCcpXG4gICAgcHVibGljIHRvb2x0aXA/OiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB0b29sdGlwUG9zaXRpb246IFRvb2x0aXBQb3NpdGlvbnMgPSAndG9wJztcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNob3dEZWxheSA9IDUwMDtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGRpc3BsYXlUaW1lPzogbnVtYmVyO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgdG9vbHRpcEV2ZW50OiBUb29sdGlwRXZlbnQgPSAnaG92ZXInO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZXNjYXBlID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB2aXNpYmxlID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG1vYmlsZUJlaGF2aW9yOiBNb2JpbGVCZWhhdmlvciA9ICdwcmVzc2luZyc7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBmb2N1c2VkSW5wdXRSZWY6IEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICAgIGNoZWNrVHJ1bmNhdGVkVGV4dCA9IGlucHV0KGZhbHNlKTtcblxuICAgIHByaXZhdGUgY29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8VG9vbHRpcENvbXBvbmVudD4gfCBudWxsID0gbnVsbDtcbiAgICBwcml2YXRlIHNob3dUaW1lb3V0PzogbnVtYmVyO1xuICAgIHByaXZhdGUgdG91Y2hUaW1lb3V0PzogbnVtYmVyO1xuICAgIHByaXZhdGUgdG9vbHRpcERpdkVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkZWJvdW5jZUNyZWF0ZVRvb2x0aXBGdW5jdGlvbjogKCkgPT4gdm9pZDtcbiAgICBwcml2YXRlIHRvb2x0aXBDcmVhdGVkQnlGb2N1cyA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBhcHBSZWY6IEFwcGxpY2F0aW9uUmVmLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGRlYm91bmNlVXRpbHM6IERlYm91bmNlVXRpbHMsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgICkge1xuICAgICAgICB0aGlzLmRlYm91bmNlQ3JlYXRlVG9vbHRpcEZ1bmN0aW9uID0gdGhpcy5kZWJvdW5jZVV0aWxzLmRlYm91bmNlTGVhZGluZygoKSA9PiB0aGlzLl9jcmVhdGVUb29sdGlwKHRydWUsIHRydWUpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudmFsaWRhdGVQb3NpdGlvbigpO1xuICAgICAgICB0aGlzLnVwZGF0ZVRvb2x0aXBWaXNpYmlsaXR5V2hlbkZvY3VzT25JbnB1dCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kZXN0cm95KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTWFuaXB1bGEgYSB2aXNpYmlsaWRhZGUgZG8gdG9vbHRpcCBxdWFuZG8gaG91dmVyIHVtYSByZWZlcsOqbmNpYSBkZSBpbnB1dC5cbiAgICAgKi9cbiAgICBwcml2YXRlIHVwZGF0ZVRvb2x0aXBWaXNpYmlsaXR5V2hlbkZvY3VzT25JbnB1dCgpIHtcbiAgICAgICAgaWYgKHRoaXMuZm9jdXNlZElucHV0UmVmKSB7XG4gICAgICAgICAgICBjb25zdCBpbnB1dEZvY3VzID0gdGhpcy5mb2N1c2VkSW5wdXRSZWY7XG4gICAgICAgICAgICBjb25zdCBpY29uID0gdGhpcy5nZXRJY29uRnJvbUZvY3VzZWRJbnB1dCgpO1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5saXN0ZW4oaW5wdXRGb2N1cywgJ2ZvY3VzJywgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChpY29uKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NyZWF0ZVRvb2x0aXAoZmFsc2UsIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvb2x0aXBDcmVhdGVkQnlGb2N1cyA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLmxpc3RlbihpbnB1dEZvY3VzLCAnYmx1cicsICgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoaWNvbikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZVRvb2x0aXAoaWNvbik7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGVzdHJveSgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvb2x0aXBDcmVhdGVkQnlGb2N1cyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT2J0w6ltIG8gZWxlbWVudG8gZG8gw61jb25lIGFzc29jaWFkbyBhbyBsYWJlbCBkbyBpbnB1dCBlbSBmb2N1cy5cbiAgICAgKiBAcmV0dXJucyBPIMOtY29uZSBkbyBpbnB1dCBlbSBmb2N1cy5cbiAgICAgKi9cbiAgICBwcml2YXRlIGdldEljb25Gcm9tRm9jdXNlZElucHV0KCk6IEhUTUxFbGVtZW50IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZSBvIHRvb2x0aXAgYXNzb2NpYWRvIGFvIMOtY29uZSBkbyBpbnB1dCBlbSBmb2N1cy5cbiAgICAgKiBAcGFyYW0gaWNvbiBPIMOtY29uZSBkbyBpbnB1dCBlbSBmb2N1cy5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlbW92ZVRvb2x0aXAoaWNvbjogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdG9vbHRpcCA9IGljb24ucXVlcnlTZWxlY3RvcignLnRvb2x0aXAnKSBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgaWYgKHRvb2x0aXApIHtcbiAgICAgICAgICAgIHRvb2x0aXAucmVtb3ZlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyB3aGVuZXZlciB0aGUgY29tcG9uZW50IHdpdGggdGhlIHRvb2x0aXAgaXMgY2xpY2tlZCBJIGRlc3Ryb3kgdGhlIHRvb2x0aXAuXG4gICAgLy8gd2hlbmV2ZXIgYSBrZXkgaXMgcHJlc3NlZCBvbiB0aGUgY29tcG9uZW50IHdpdGggdGhlIHRvb2x0aXAgSSBkZXN0cm95IHRoZSB0b29sdGlwLlxuICAgIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJylcbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duJylcbiAgICBwdWJsaWMgb25DbGljaygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMudG9vbHRpcEV2ZW50ID09PSAnaG92ZXInICYmICFuYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKC9BbmRyb2lkL2kpICYmICFuYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKC9pUGhvbmUvaSkpIHtcbiAgICAgICAgICAgIHRoaXMuZGVzdHJveSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignZm9jdXMnKVxuICAgIHB1YmxpYyBvbkZvY3VzKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy50b29sdGlwRXZlbnQgPT09ICdmb2N1cycpIHtcbiAgICAgICAgICAgIHRoaXMuX2NyZWF0ZVRvb2x0aXAodHJ1ZSwgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdibHVyJylcbiAgICBwdWJsaWMgb25CbHVyKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy50b29sdGlwRXZlbnQgPT09ICdmb2N1cycpIHtcbiAgICAgICAgICAgIHRoaXMuZGVzdHJveSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcihcIm1vdXNlZW50ZXJcIilcbiAgICBwdWJsaWMgb25Nb3VzZUVudGVyKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy50b29sdGlwRXZlbnQgPT09ICdob3ZlcicgfHwgdGhpcy5mb2N1c2VkSW5wdXRSZWYpIHtcbiAgICAgICAgICAgIHRoaXMuZGVib3VuY2VDcmVhdGVUb29sdGlwRnVuY3Rpb24oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoXCJtb3VzZWxlYXZlXCIpXG4gICAgQEhvc3RMaXN0ZW5lcihcIndoZWVsXCIpXG4gICAgcHVibGljIG9uTW91c2VMZWF2ZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCh0aGlzLnRvb2x0aXBFdmVudCA9PT0gJ2hvdmVyJyB8fCB0aGlzLmZvY3VzZWRJbnB1dFJlZikgJiYgIXRoaXMudG9vbHRpcENyZWF0ZWRCeUZvY3VzKSB7XG4gICAgICAgICAgICB0aGlzLmRlc3Ryb3koKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ3RvdWNoc3RhcnQnKVxuICAgIHB1YmxpYyBvblRvdWNoU3RhcnQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnRvb2x0aXBFdmVudCA9PT0gJ2hvdmVyJykge1xuICAgICAgICAgICAgd2luZG93LmNsZWFyVGltZW91dCh0aGlzLnRvdWNoVGltZW91dCk7XG4gICAgICAgICAgICBjb25zdCBfZGVsYXkgPSB0aGlzLm1vYmlsZUJlaGF2aW9yID09PSAncHJlc3NpbmcnID8gdGhpcy5zaG93RGVsYXkgOiAwXG4gICAgICAgICAgICB0aGlzLnRvdWNoVGltZW91dCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9jcmVhdGVUb29sdGlwKHRydWUsIHRydWUpO1xuICAgICAgICAgICAgfSwgX2RlbGF5KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ3RvdWNoZW5kJylcbiAgICBwdWJsaWMgb25Ub3VjaEVuZCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMudG9vbHRpcEV2ZW50ID09PSAnaG92ZXInKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5tb2JpbGVCZWhhdmlvciA9PT0gJ3ByZXNzaW5nJykge1xuICAgICAgICAgICAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQodGhpcy50b3VjaFRpbWVvdXQpO1xuICAgICAgICAgICAgICAgIHRoaXMuZGVzdHJveSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB2YWxpZGF0ZVBvc2l0aW9uKCkge1xuICAgICAgICBjb25zdCBjb250YWluc1Bvc2l0aW9uID0gWyd0b3AnLCAncmlnaHQnLCAnYm90dG9tJywgJ2xlZnQnXS5pbmNsdWRlcyh0aGlzLnRvb2x0aXBQb3NpdGlvbik7XG5cbiAgICAgICAgaWYgKCFjb250YWluc1Bvc2l0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLnRvb2x0aXBQb3NpdGlvbiA9ICd0b3AnO1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBUb29sdGlwICR7dGhpcy50b29sdGlwUG9zaXRpb259IHBvc2l0aW9uIGlzIHVuZXhwZWN0ZWRgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0RG9tRWxlbWVudCgpOiBIVE1MRWxlbWVudCB7XG4gICAgICAgIHRoaXMuY29tcG9uZW50UmVmID0gdGhpcy52aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudChUb29sdGlwQ29tcG9uZW50KTtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29tcG9uZW50UmVmLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfY3JlYXRlVG9vbHRpcCh1c2VTaG93RGVsYXkgPSBmYWxzZSwgYXV0b0Rlc3Ryb3kgPSB0cnVlKSB7XG4gICAgICAgIGNvbnN0IGhhc1RleHQgPSAodGhpcy50b29sdGlwIHx8ICcnKS5sZW5ndGggPiAwO1xuICAgICAgICBjb25zdCBoYXNDb21wb25lbnRSZWYgPSB0aGlzLmNvbXBvbmVudFJlZiAhPT0gbnVsbDtcbiAgICAgICAgaWYgKCFoYXNUZXh0IHx8IGhhc0NvbXBvbmVudFJlZikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGJsb2NrSWZJc05vdFRydW5jYXRlZENvbnRlbnQgPSB0aGlzLmNoZWNrVHJ1bmNhdGVkVGV4dCgpID8gIXRoaXMuY29udGVudElzVHJ1bmNhdGVkIDogZmFsc2U7XG4gICAgICAgIGlmIChibG9ja0lmSXNOb3RUcnVuY2F0ZWRDb250ZW50KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZG9tRWxlbWVudCA9IHRoaXMuZ2V0RG9tRWxlbWVudCgpO1xuICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRvbUVsZW1lbnQpO1xuICAgICAgICB0aGlzLnRvb2x0aXBEaXZFbGVtZW50ID0gZG9tRWxlbWVudC5xdWVyeVNlbGVjdG9yKFwiLnRvb2x0aXBcIik7XG4gICAgICAgIHRoaXMuc2V0VG9vbHRpcENvbXBvbmVudFByb3BlcnRpZXMoKTtcbiAgICAgICAgY29uc3QgX3Nob3dEZWxheSA9IHVzZVNob3dEZWxheSA/IHRoaXMuc2hvd0RlbGF5IDogMDtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNob3dUb29sdGlwKClcbiAgICAgICAgfSwgX3Nob3dEZWxheSlcblxuXG5cbiAgICAgICAgdGhpcy5yZW5kZXJlci5saXN0ZW4od2luZG93LCBcInNjcm9sbFwiLCAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNldFRvb2x0aXBQb3NpdGlvblByb3BlcnR5KCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChhdXRvRGVzdHJveSAmJiB0aGlzLmRpc3BsYXlUaW1lKSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmRlc3Ryb3koKTtcbiAgICAgICAgICAgIH0sIHRoaXMuZGlzcGxheVRpbWUpXG4gICAgICAgIH1cblxuICAgIH1cblxuICAgIHByaXZhdGUgc2hvd1Rvb2x0aXAoKSB7XG4gICAgICAgIGlmICh0aGlzLmNvbXBvbmVudFJlZikge1xuICAgICAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UudmlzaWJsZSA9IHRoaXMudmlzaWJsZTtcblxuICAgICAgICAgICAgdGhpcy5zZXRUb29sdGlwUG9zaXRpb25Qcm9wZXJ0eSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRUb29sdGlwUG9zaXRpb25Qcm9wZXJ0eSgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmNvbXBvbmVudFJlZikge1xuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYW5jaG9yU2l6ZSA9IDU7XG4gICAgICAgIGNvbnN0IHsgbGVmdCwgcmlnaHQgfSA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgICAgIGNvbnN0IHRvb2x0aXBFbGVtZW50UG9zaXRpb24gPSBnZXRFbGVtZW50UG9zaXRpb25JbmZvKHRoaXMudG9vbHRpcERpdkVsZW1lbnQhKTtcbiAgICAgICAgY29uc3QgZWxlbWVudExlZnRvdmVyID0gZ2V0RWxlbWVudExlZnRvdmVyQ29udGVudEF2YWlsYWJsZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIGNvbnN0IGVsZW1lbnRUcmlnZ2VyUG9zaXRpb24gPSBnZXRFbGVtZW50UG9zaXRpb25JbmZvKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgY29uc3QgaG9yaXpvbnRhbFBvc2l0aW9uczogVG9vbHRpcFBvc2l0aW9uc1tdID0gWydsZWZ0JywgJ3JpZ2h0J107XG4gICAgICAgIGNvbnN0IGlzUG9zaXRpb25Ib3Jpem9udGFsID0gaG9yaXpvbnRhbFBvc2l0aW9ucy5pbmNsdWRlcyh0aGlzLnRvb2x0aXBQb3NpdGlvbik7XG4gICAgICAgIGNvbnN0IGRpc3RhbmNlVG9Cb3JkZXJzID0gaXNQb3NpdGlvbkhvcml6b250YWwgPyB0b29sdGlwRWxlbWVudFBvc2l0aW9uLmVsZW1lbnRXaWR0aCA6IHRvb2x0aXBFbGVtZW50UG9zaXRpb24uZWxlbWVudEhvcml6b250YWxDZW50ZXI7XG4gICAgICAgIGNvbnN0IGNhblNldEF0VG9wID0gZWxlbWVudExlZnRvdmVyLmZyZWVEaXN0YW5jZVRvVG9wID4gdG9vbHRpcEVsZW1lbnRQb3NpdGlvbi5lbGVtZW50SGVpZ2h0O1xuICAgICAgICBjb25zdCBjYW5TZXRBdExlZnQgPSBlbGVtZW50TGVmdG92ZXIuZnJlZURpc3RhbmNlVG9MZWZ0ID4gZGlzdGFuY2VUb0JvcmRlcnM7XG4gICAgICAgIGNvbnN0IGNhblNldEF0UmlnaHQgPSBlbGVtZW50TGVmdG92ZXIuZnJlZURpc3RhbmNlVG9SaWdodCA+IGRpc3RhbmNlVG9Cb3JkZXJzO1xuICAgICAgICBjb25zdCBjYW5TZXRBdEJvdHRvbSA9IGVsZW1lbnRMZWZ0b3Zlci5mcmVlRGlzdGFuY2VUb0JvdHRvbSA+IHRvb2x0aXBFbGVtZW50UG9zaXRpb24uZWxlbWVudEhlaWdodDtcbiAgICAgICAgY29uc3QgdG9wVmVydGljYWwgPSBlbGVtZW50VHJpZ2dlclBvc2l0aW9uLnRvcCArIGVsZW1lbnRUcmlnZ2VyUG9zaXRpb24uZWxlbWVudFZlcnRpY2FsQ2VudGVyO1xuICAgICAgICBjb25zdCBjaGVja1RvcFBvc2l0aW9uID0gKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGNhblNldEF0VG9wICYmIGNhblNldEF0TGVmdCAmJiBjYW5TZXRBdFJpZ2h0O1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNoZWNrQm90dG9tUG9zaXRpb24gPSAoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gY2FuU2V0QXRCb3R0b20gJiYgY2FuU2V0QXRMZWZ0ICYmIGNhblNldEF0UmlnaHQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY2hlY2tMZWZ0UG9zaXRpb24gPSAoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gY2FuU2V0QXRMZWZ0ICYmIGNhblNldEF0VG9wICYmIGNhblNldEF0Qm90dG9tO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY2hlY2tSaWdodFBvc2l0aW9uID0gKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGNhblNldEF0UmlnaHQgJiYgY2FuU2V0QXRUb3AgJiYgY2FuU2V0QXRCb3R0b207XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzZXRUb3BQb3NpdGlvbiA9ICgpOiB7IGxlZnQ6IG51bWJlciwgdG9wOiBudW1iZXIgfSA9PiB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGxlZnQ6IGxlZnQgKyAocmlnaHQgLSBsZWZ0KSAvIDIsXG4gICAgICAgICAgICAgICAgdG9wOiBlbGVtZW50VHJpZ2dlclBvc2l0aW9uLnRvcCAtIGFuY2hvclNpemVcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHNldEJvdHRvbVBvc2l0aW9uID0gKCk6IHsgbGVmdDogbnVtYmVyLCB0b3A6IG51bWJlciB9ID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgbGVmdDogbGVmdCArIChyaWdodCAtIGxlZnQpIC8gMixcbiAgICAgICAgICAgICAgICB0b3A6IGVsZW1lbnRUcmlnZ2VyUG9zaXRpb24udG9wICsgZWxlbWVudFRyaWdnZXJQb3NpdGlvbi5lbGVtZW50SGVpZ2h0XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc2V0TGVmdFBvc2l0aW9uID0gKCk6IHsgbGVmdDogbnVtYmVyLCB0b3A6IG51bWJlciB9ID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgbGVmdDogbGVmdCxcbiAgICAgICAgICAgICAgICB0b3A6IHRvcFZlcnRpY2FsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc2V0UmlnaHRQb3NpdGlvbiA9ICgpOiB7IGxlZnQ6IG51bWJlciwgdG9wOiBudW1iZXIgfSA9PiB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGxlZnQ6IHJpZ2h0LFxuICAgICAgICAgICAgICAgIHRvcDogdG9wVmVydGljYWxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICB0eXBlIFBvc2l0aW9uID0ge1xuICAgICAgICAgICAgcG9zOiBUb29sdGlwUG9zaXRpb25zLFxuICAgICAgICAgICAgY2hlY2s6ICgpID0+IGJvb2xlYW4sXG4gICAgICAgICAgICBzZXQ6ICgpID0+IHsgbGVmdDogbnVtYmVyLCB0b3A6IG51bWJlciB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwb3NpdGlvbnM6IFBvc2l0aW9uW10gPSBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcG9zOiAndG9wJyxcbiAgICAgICAgICAgICAgICBjaGVjazogY2hlY2tUb3BQb3NpdGlvbixcbiAgICAgICAgICAgICAgICBzZXQ6IHNldFRvcFBvc2l0aW9uXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBvczogJ2JvdHRvbScsXG4gICAgICAgICAgICAgICAgY2hlY2s6IGNoZWNrQm90dG9tUG9zaXRpb24sXG4gICAgICAgICAgICAgICAgc2V0OiBzZXRCb3R0b21Qb3NpdGlvblxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwb3M6ICdsZWZ0JyxcbiAgICAgICAgICAgICAgICBjaGVjazogY2hlY2tMZWZ0UG9zaXRpb24sXG4gICAgICAgICAgICAgICAgc2V0OiBzZXRMZWZ0UG9zaXRpb25cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcG9zOiAncmlnaHQnLFxuICAgICAgICAgICAgICAgIGNoZWNrOiBjaGVja1JpZ2h0UG9zaXRpb24sXG4gICAgICAgICAgICAgICAgc2V0OiBzZXRSaWdodFBvc2l0aW9uXG5cbiAgICAgICAgICAgIH1cbiAgICAgICAgXTtcblxuICAgICAgICBjb25zdCBwb3NpdGlvbkRlZmluZWQgPSBwb3NpdGlvbnMuZmluZCgocG9zaXRpb24pID0+IHBvc2l0aW9uLnBvcyA9PT0gdGhpcy50b29sdGlwUG9zaXRpb24pO1xuICAgICAgICBsZXQgdmFsaWRQb3NpdGlvbjogUG9zaXRpb24gfCB1bmRlZmluZWQgPSBwb3NpdGlvbkRlZmluZWQ7XG4gICAgICAgIGNvbnN0IGNhblVzZURlZmluZWRQb3NpdGlvbiA9IHBvc2l0aW9uRGVmaW5lZD8uY2hlY2soKTtcbiAgICAgICAgaWYgKGNhblVzZURlZmluZWRQb3NpdGlvbikge1xuICAgICAgICAgICAgdmFsaWRQb3NpdGlvbiA9IHBvc2l0aW9uRGVmaW5lZDtcbiAgICAgICAgfSBlbHNlIGlmICghY2FuVXNlRGVmaW5lZFBvc2l0aW9uKSB7XG4gICAgICAgICAgICBjb25zdCB2YWxpZEFsdGVybmF0aXZlUG9zaXRpb24gPSBwb3NpdGlvbnMuZmluZCgocG9zaXRpb24pID0+IHBvc2l0aW9uLmNoZWNrKCkpO1xuICAgICAgICAgICAgaWYgKHZhbGlkQWx0ZXJuYXRpdmVQb3NpdGlvbikge1xuICAgICAgICAgICAgICAgIHZhbGlkUG9zaXRpb24gPSB2YWxpZEFsdGVybmF0aXZlUG9zaXRpb247XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgX3Bvc2l0aW9uID0gdmFsaWRQb3NpdGlvbiEuc2V0KCk7XG4gICAgICAgIGNvbnN0IHBvc2l0aW9uTGVmdCA9IF9wb3NpdGlvbi5sZWZ0O1xuICAgICAgICBjb25zdCBwb3NpdGlvblRvcCA9IF9wb3NpdGlvbi50b3A7XG4gICAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLmxlZnQgPSBNYXRoLnJvdW5kKHBvc2l0aW9uTGVmdCk7XG4gICAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLnRvcCA9IE1hdGgucm91bmQocG9zaXRpb25Ub3ApO1xuICAgICAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5wb3NpdGlvbiA9IHZhbGlkUG9zaXRpb24hLnBvcztcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFRvb2x0aXBDb21wb25lbnRQcm9wZXJ0aWVzKCkge1xuICAgICAgICBpZiAoIXRoaXMuY29tcG9uZW50UmVmKSByZXR1cm47XG5cbiAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UudG9vbHRpcCA9IHRoaXMudG9vbHRpcCBhcyBzdHJpbmc7XG4gICAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLmVzY2FwZSA9IHRoaXMuZXNjYXBlO1xuICAgIH1cblxuICAgIHByaXZhdGUgZGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFpc051bGxPclVuZGVmaW5lZCh0aGlzLmNvbXBvbmVudFJlZikpIHtcbiAgICAgICAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQodGhpcy5zaG93VGltZW91dCk7XG4gICAgICAgICAgICB0aGlzLmFwcFJlZi5kZXRhY2hWaWV3KHRoaXMuY29tcG9uZW50UmVmLmhvc3RWaWV3KTtcbiAgICAgICAgICAgIHRoaXMuY29tcG9uZW50UmVmLmRlc3Ryb3koKTtcbiAgICAgICAgICAgIHRoaXMuY29tcG9uZW50UmVmID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMudG9vbHRpcERpdkVsZW1lbnQgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXQgY29udGVudElzVHJ1bmNhdGVkKCkge1xuICAgICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIHJldHVybiBlbGVtZW50LnNjcm9sbFdpZHRoID4gZWxlbWVudC5jbGllbnRXaWR0aDtcbiAgICB9XG59XG4iXX0=
|
|
345
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvdG9vbHRpcC9zcmMvbGliL3Rvb2x0aXAvdG9vbHRpcC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdILFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUNMLEtBQUssR0FLUixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQ0gsa0NBQWtDLEVBQ2xDLHNCQUFzQixFQUN0QixpQkFBaUIsR0FDcEIsTUFBTSwwQ0FBMEMsQ0FBQztBQUlsRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7O0FBTXZELE1BQU0sT0FBTyxnQkFBZ0I7SUFzQ0o7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQXhDZCxPQUFPLENBQVU7SUFHakIsZUFBZSxHQUFxQixLQUFLLENBQUM7SUFHMUMsU0FBUyxHQUFHLEdBQUcsQ0FBQztJQUdoQixXQUFXLENBQVU7SUFHckIsWUFBWSxHQUFpQixPQUFPLENBQUM7SUFHckMsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUdmLE9BQU8sR0FBRyxJQUFJLENBQUM7SUFHZixjQUFjLEdBQW1CLFVBQVUsQ0FBQztJQUc1QyxlQUFlLEdBQTRCLElBQUksQ0FBQztJQUV2RCxrQkFBa0IsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFMUIsWUFBWSxHQUEwQyxJQUFJLENBQUM7SUFDM0QsV0FBVyxDQUFVO0lBQ3JCLFlBQVksQ0FBVTtJQUN0QixpQkFBaUIsR0FBdUIsSUFBSSxDQUFDO0lBQ3BDLDZCQUE2QixDQUFhO0lBQ25ELHFCQUFxQixHQUFHLEtBQUssQ0FBQztJQUV0QyxZQUNxQixVQUFzQixFQUN0QixNQUFzQixFQUN0QixhQUE0QixFQUM1QixRQUFtQixFQUNuQixnQkFBa0M7UUFKbEMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixXQUFNLEdBQU4sTUFBTSxDQUFnQjtRQUN0QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ25CLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFFbkQsSUFBSSxDQUFDLDZCQUE2QixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbkgsQ0FBQztJQUVNLFFBQVE7UUFDWCxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsdUNBQXVDLEVBQUUsQ0FBQztJQUNuRCxDQUFDO0lBRU0sV0FBVztRQUNkLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRUQ7O09BRUc7SUFDSyx1Q0FBdUM7UUFDM0MsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDdkIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztZQUN4QyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztZQUM1QyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRTtnQkFDM0MsSUFBSSxJQUFJLEVBQUUsQ0FBQztvQkFDUCxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztvQkFDbEMsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQztnQkFDdEMsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUU7Z0JBQzFDLElBQUksSUFBSSxFQUFFLENBQUM7b0JBQ1AsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDekIsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO29CQUNmLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxLQUFLLENBQUM7Z0JBQ3ZDLENBQUM7WUFDTCxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUM7SUFDTCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssdUJBQXVCO1FBQzNCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUM7SUFDekMsQ0FBQztJQUVEOzs7T0FHRztJQUNLLGFBQWEsQ0FBQyxJQUFpQjtRQUNuQyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBZ0IsQ0FBQztRQUM5RCxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ1YsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3JCLENBQUM7SUFDTCxDQUFDO0lBRUQsNEVBQTRFO0lBQzVFLHFGQUFxRjtJQUc5RSxPQUFPO1FBQ1YsSUFDSSxJQUFJLENBQUMsWUFBWSxLQUFLLE9BQU87WUFDN0IsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUM7WUFDdEMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsRUFDdkMsQ0FBQztZQUNDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNuQixDQUFDO0lBQ0wsQ0FBQztJQUdNLE9BQU87UUFDVixJQUFJLElBQUksQ0FBQyxZQUFZLEtBQUssT0FBTyxFQUFFLENBQUM7WUFDaEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDcEMsQ0FBQztJQUNMLENBQUM7SUFHTSxNQUFNO1FBQ1QsSUFBSSxJQUFJLENBQUMsWUFBWSxLQUFLLE9BQU8sRUFBRSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNuQixDQUFDO0lBQ0wsQ0FBQztJQUdNLFlBQVk7UUFDZixJQUFJLElBQUksQ0FBQyxZQUFZLEtBQUssT0FBTyxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN4RCxJQUFJLENBQUMsNkJBQTZCLEVBQUUsQ0FBQztRQUN6QyxDQUFDO0lBQ0wsQ0FBQztJQUlNLFlBQVk7UUFDZixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksS0FBSyxPQUFPLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7WUFDekYsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ25CLENBQUM7SUFDTCxDQUFDO0lBR00sWUFBWTtRQUNmLElBQUksSUFBSSxDQUFDLFlBQVksS0FBSyxPQUFPLEVBQUUsQ0FBQztZQUNoQyxNQUFNLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUN2QyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsY0FBYyxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3ZFLElBQUksQ0FBQyxZQUFZLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ3ZDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3BDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNmLENBQUM7SUFDTCxDQUFDO0lBR00sVUFBVTtRQUNiLElBQUksSUFBSSxDQUFDLFlBQVksS0FBSyxPQUFPLEVBQUUsQ0FBQztZQUNoQyxJQUFJLElBQUksQ0FBQyxjQUFjLEtBQUssVUFBVSxFQUFFLENBQUM7Z0JBQ3JDLE1BQU0sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO2dCQUN2QyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDbkIsQ0FBQztRQUNMLENBQUM7SUFDTCxDQUFDO0lBRU8sZ0JBQWdCO1FBQ3BCLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRTNGLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1lBQzdCLE1BQU0sSUFBSSxLQUFLLENBQUMsV0FBVyxJQUFJLENBQUMsZUFBZSx5QkFBeUIsQ0FBQyxDQUFDO1FBQzlFLENBQUM7SUFDTCxDQUFDO0lBRU8sYUFBYTtRQUNqQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUM1RSxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQztJQUNwRCxDQUFDO0lBRU8sY0FBYyxDQUFDLFlBQVksR0FBRyxLQUFLLEVBQUUsV0FBVyxHQUFHLElBQUk7UUFDM0QsTUFBTSxPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDaEQsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLFlBQVksS0FBSyxJQUFJLENBQUM7UUFDbkQsSUFBSSxDQUFDLE9BQU8sSUFBSSxlQUFlLEVBQUUsQ0FBQztZQUM5QixPQUFPO1FBQ1gsQ0FBQztRQUNELE1BQU0sNEJBQTRCLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDbEcsSUFBSSw0QkFBNEIsRUFBRSxDQUFDO1lBQy9CLE9BQU87UUFDWCxDQUFDO1FBQ0QsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3hDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxVQUFVLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzlELElBQUksQ0FBQyw2QkFBNkIsRUFBRSxDQUFDO1FBQ3JDLE1BQU0sVUFBVSxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3JELFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDWixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDdkIsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBRWYsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUU7WUFDeEMsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7UUFDdEMsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLFdBQVcsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDbEMsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDWixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDbkIsQ0FBQyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN6QixDQUFDO0lBQ0wsQ0FBQztJQUVPLFdBQVc7UUFDZixJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUVsRCxJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztRQUN0QyxDQUFDO0lBQ0wsQ0FBQztJQUVPLDBCQUEwQjtRQUM5QixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3JCLE9BQU87UUFDWCxDQUFDO1FBQ0QsTUFBTSxVQUFVLEdBQUcsQ0FBQyxDQUFDO1FBQ3JCLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUU5RSxNQUFNLHNCQUFzQixHQUFHLHNCQUFzQixDQUFDLElBQUksQ0FBQyxpQkFBa0IsQ0FBQyxDQUFDO1FBQy9FLE1BQU0sZUFBZSxHQUFHLGtDQUFrQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDMUYsTUFBTSxzQkFBc0IsR0FBRyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3JGLE1BQU0sbUJBQW1CLEdBQXVCLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ2xFLE1BQU0sb0JBQW9CLEdBQUcsbUJBQW1CLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNoRixNQUFNLGlCQUFpQixHQUFHLG9CQUFvQjtZQUMxQyxDQUFDLENBQUMsc0JBQXNCLENBQUMsWUFBWTtZQUNyQyxDQUFDLENBQUMsc0JBQXNCLENBQUMsdUJBQXVCLENBQUM7UUFDckQsTUFBTSxXQUFXLEdBQUcsZUFBZSxDQUFDLGlCQUFpQixHQUFHLHNCQUFzQixDQUFDLGFBQWEsQ0FBQztRQUM3RixNQUFNLFlBQVksR0FBRyxlQUFlLENBQUMsa0JBQWtCLEdBQUcsaUJBQWlCLENBQUM7UUFDNUUsTUFBTSxhQUFhLEdBQUcsZUFBZSxDQUFDLG1CQUFtQixHQUFHLGlCQUFpQixDQUFDO1FBQzlFLE1BQU0sY0FBYyxHQUFHLGVBQWUsQ0FBQyxvQkFBb0IsR0FBRyxzQkFBc0IsQ0FBQyxhQUFhLENBQUM7UUFDbkcsTUFBTSxXQUFXLEdBQUcsc0JBQXNCLENBQUMsR0FBRyxHQUFHLHNCQUFzQixDQUFDLHFCQUFxQixDQUFDO1FBQzlGLE1BQU0sZ0JBQWdCLEdBQUcsR0FBRyxFQUFFO1lBQzFCLE9BQU8sV0FBVyxJQUFJLFlBQVksSUFBSSxhQUFhLENBQUM7UUFDeEQsQ0FBQyxDQUFDO1FBQ0YsTUFBTSxtQkFBbUIsR0FBRyxHQUFHLEVBQUU7WUFDN0IsT0FBTyxjQUFjLElBQUksWUFBWSxJQUFJLGFBQWEsQ0FBQztRQUMzRCxDQUFDLENBQUM7UUFDRixNQUFNLGlCQUFpQixHQUFHLEdBQUcsRUFBRTtZQUMzQixPQUFPLFlBQVksSUFBSSxXQUFXLElBQUksY0FBYyxDQUFDO1FBQ3pELENBQUMsQ0FBQztRQUVGLE1BQU0sa0JBQWtCLEdBQUcsR0FBRyxFQUFFO1lBQzVCLE9BQU8sYUFBYSxJQUFJLFdBQVcsSUFBSSxjQUFjLENBQUM7UUFDMUQsQ0FBQyxDQUFDO1FBRUYsTUFBTSxjQUFjLEdBQUcsR0FBa0MsRUFBRTtZQUN2RCxPQUFPO2dCQUNILElBQUksRUFBRSxJQUFJLEdBQUcsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztnQkFDL0IsR0FBRyxFQUFFLHNCQUFzQixDQUFDLEdBQUcsR0FBRyxVQUFVO2FBQy9DLENBQUM7UUFDTixDQUFDLENBQUM7UUFFRixNQUFNLGlCQUFpQixHQUFHLEdBQWtDLEVBQUU7WUFDMUQsT0FBTztnQkFDSCxJQUFJLEVBQUUsSUFBSSxHQUFHLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUM7Z0JBQy9CLEdBQUcsRUFBRSxzQkFBc0IsQ0FBQyxHQUFHLEdBQUcsc0JBQXNCLENBQUMsYUFBYTthQUN6RSxDQUFDO1FBQ04sQ0FBQyxDQUFDO1FBRUYsTUFBTSxlQUFlLEdBQUcsR0FBa0MsRUFBRTtZQUN4RCxPQUFPO2dCQUNILElBQUksRUFBRSxJQUFJO2dCQUNWLEdBQUcsRUFBRSxXQUFXO2FBQ25CLENBQUM7UUFDTixDQUFDLENBQUM7UUFFRixNQUFNLGdCQUFnQixHQUFHLEdBQWtDLEVBQUU7WUFDekQsT0FBTztnQkFDSCxJQUFJLEVBQUUsS0FBSztnQkFDWCxHQUFHLEVBQUUsV0FBVzthQUNuQixDQUFDO1FBQ04sQ0FBQyxDQUFDO1FBUUYsTUFBTSxTQUFTLEdBQWU7WUFDMUI7Z0JBQ0ksR0FBRyxFQUFFLEtBQUs7Z0JBQ1YsS0FBSyxFQUFFLGdCQUFnQjtnQkFDdkIsR0FBRyxFQUFFLGNBQWM7YUFDdEI7WUFDRDtnQkFDSSxHQUFHLEVBQUUsUUFBUTtnQkFDYixLQUFLLEVBQUUsbUJBQW1CO2dCQUMxQixHQUFHLEVBQUUsaUJBQWlCO2FBQ3pCO1lBQ0Q7Z0JBQ0ksR0FBRyxFQUFFLE1BQU07Z0JBQ1gsS0FBSyxFQUFFLGlCQUFpQjtnQkFDeEIsR0FBRyxFQUFFLGVBQWU7YUFDdkI7WUFDRDtnQkFDSSxHQUFHLEVBQUUsT0FBTztnQkFDWixLQUFLLEVBQUUsa0JBQWtCO2dCQUN6QixHQUFHLEVBQUUsZ0JBQWdCO2FBQ3hCO1NBQ0osQ0FBQztRQUVGLE1BQU0sZUFBZSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEtBQUssSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzVGLElBQUksYUFBYSxHQUF5QixlQUFlLENBQUM7UUFDMUQsTUFBTSxxQkFBcUIsR0FBRyxlQUFlLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFDdkQsSUFBSSxxQkFBcUIsRUFBRSxDQUFDO1lBQ3hCLGFBQWEsR0FBRyxlQUFlLENBQUM7UUFDcEMsQ0FBQzthQUFNLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1lBQ2hDLE1BQU0sd0JBQXdCLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDaEYsSUFBSSx3QkFBd0IsRUFBRSxDQUFDO2dCQUMzQixhQUFhLEdBQUcsd0JBQXdCLENBQUM7WUFDN0MsQ0FBQztRQUNMLENBQUM7UUFDRCxNQUFNLFNBQVMsR0FBRyxhQUFjLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDdkMsTUFBTSxZQUFZLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQztRQUNwQyxNQUFNLFdBQVcsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzNELElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3pELElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLFFBQVEsR0FBRyxhQUFjLENBQUMsR0FBRyxDQUFDO0lBQzdELENBQUM7SUFFTyw2QkFBNkI7UUFDakMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZO1lBQUUsT0FBTztRQUUvQixJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQWlCLENBQUM7UUFDNUQsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDcEQsQ0FBQztJQUVPLE9BQU87UUFDWCxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7WUFDeEMsTUFBTSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDdEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNuRCxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7UUFDbEMsQ0FBQztJQUNMLENBQUM7SUFFRCxJQUFZLGtCQUFrQjtRQUMxQixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQTRCLENBQUM7UUFDN0QsTUFBTSxtQkFBbUIsR0FBRyxPQUFPLENBQUMsWUFBWSxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUM7UUFDeEUsTUFBTSxxQkFBcUIsR0FBRyxPQUFPLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUM7UUFDeEUsT0FBTyxxQkFBcUIsSUFBSSxtQkFBbUIsQ0FBQztJQUN4RCxDQUFDO3dHQTFWUSxnQkFBZ0I7NEZBQWhCLGdCQUFnQjs7NEZBQWhCLGdCQUFnQjtrQkFKNUIsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsWUFBWTtvQkFDdEIsVUFBVSxFQUFFLElBQUk7aUJBQ25COytMQUdVLE9BQU87c0JBRGIsS0FBSzt1QkFBQyxVQUFVO2dCQUlWLGVBQWU7c0JBRHJCLEtBQUs7Z0JBSUMsU0FBUztzQkFEZixLQUFLO2dCQUlDLFdBQVc7c0JBRGpCLEtBQUs7Z0JBSUMsWUFBWTtzQkFEbEIsS0FBSztnQkFJQyxNQUFNO3NCQURaLEtBQUs7Z0JBSUMsT0FBTztzQkFEYixLQUFLO2dCQUlDLGNBQWM7c0JBRHBCLEtBQUs7Z0JBSUMsZUFBZTtzQkFEckIsS0FBSztnQkE2RUMsT0FBTztzQkFGYixZQUFZO3VCQUFDLE9BQU87O3NCQUNwQixZQUFZO3VCQUFDLFNBQVM7Z0JBWWhCLE9BQU87c0JBRGIsWUFBWTt1QkFBQyxPQUFPO2dCQVFkLE1BQU07c0JBRFosWUFBWTt1QkFBQyxNQUFNO2dCQVFiLFlBQVk7c0JBRGxCLFlBQVk7dUJBQUMsWUFBWTtnQkFTbkIsWUFBWTtzQkFGbEIsWUFBWTt1QkFBQyxZQUFZOztzQkFDekIsWUFBWTt1QkFBQyxPQUFPO2dCQVFkLFlBQVk7c0JBRGxCLFlBQVk7dUJBQUMsWUFBWTtnQkFZbkIsVUFBVTtzQkFEaEIsWUFBWTt1QkFBQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBcHBsaWNhdGlvblJlZixcbiAgICBDb21wb25lbnRSZWYsXG4gICAgRGlyZWN0aXZlLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIGlucHV0LFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgUmVuZGVyZXIyLFxuICAgIFZpZXdDb250YWluZXJSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGVib3VuY2VVdGlscyB9IGZyb20gJ0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvY29tbW9uJztcbmltcG9ydCB7XG4gICAgZ2V0RWxlbWVudExlZnRvdmVyQ29udGVudEF2YWlsYWJsZSxcbiAgICBnZXRFbGVtZW50UG9zaXRpb25JbmZvLFxuICAgIGlzTnVsbE9yVW5kZWZpbmVkLFxufSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzL3V0aWxzJztcbmltcG9ydCB7IE1vYmlsZUJlaGF2aW9yIH0gZnJvbSAnLi9tb2RlbHMvbW9iaWxlLWJlaGF2aW9yJztcbmltcG9ydCB7IFRvb2x0aXBFdmVudCB9IGZyb20gJy4vbW9kZWxzL3Rvb2x0aXAtZXZlbnQnO1xuaW1wb3J0IHsgVG9vbHRpcFBvc2l0aW9ucyB9IGZyb20gJy4vbW9kZWxzL3Rvb2x0aXAtcG9zaXRpb24nO1xuaW1wb3J0IHsgVG9vbHRpcENvbXBvbmVudCB9IGZyb20gJy4vdG9vbHRpcC5jb21wb25lbnQnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tzVG9vbHRpcF0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIFRvb2x0aXBEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgQElucHV0KCdzVG9vbHRpcCcpXG4gICAgcHVibGljIHRvb2x0aXA/OiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB0b29sdGlwUG9zaXRpb246IFRvb2x0aXBQb3NpdGlvbnMgPSAndG9wJztcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNob3dEZWxheSA9IDUwMDtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGRpc3BsYXlUaW1lPzogbnVtYmVyO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgdG9vbHRpcEV2ZW50OiBUb29sdGlwRXZlbnQgPSAnaG92ZXInO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZXNjYXBlID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB2aXNpYmxlID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG1vYmlsZUJlaGF2aW9yOiBNb2JpbGVCZWhhdmlvciA9ICdwcmVzc2luZyc7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBmb2N1c2VkSW5wdXRSZWY6IEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICAgIGNoZWNrVHJ1bmNhdGVkVGV4dCA9IGlucHV0KGZhbHNlKTtcblxuICAgIHByaXZhdGUgY29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8VG9vbHRpcENvbXBvbmVudD4gfCBudWxsID0gbnVsbDtcbiAgICBwcml2YXRlIHNob3dUaW1lb3V0PzogbnVtYmVyO1xuICAgIHByaXZhdGUgdG91Y2hUaW1lb3V0PzogbnVtYmVyO1xuICAgIHByaXZhdGUgdG9vbHRpcERpdkVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkZWJvdW5jZUNyZWF0ZVRvb2x0aXBGdW5jdGlvbjogKCkgPT4gdm9pZDtcbiAgICBwcml2YXRlIHRvb2x0aXBDcmVhdGVkQnlGb2N1cyA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBhcHBSZWY6IEFwcGxpY2F0aW9uUmVmLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGRlYm91bmNlVXRpbHM6IERlYm91bmNlVXRpbHMsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgICkge1xuICAgICAgICB0aGlzLmRlYm91bmNlQ3JlYXRlVG9vbHRpcEZ1bmN0aW9uID0gdGhpcy5kZWJvdW5jZVV0aWxzLmRlYm91bmNlTGVhZGluZygoKSA9PiB0aGlzLl9jcmVhdGVUb29sdGlwKHRydWUsIHRydWUpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudmFsaWRhdGVQb3NpdGlvbigpO1xuICAgICAgICB0aGlzLnVwZGF0ZVRvb2x0aXBWaXNpYmlsaXR5V2hlbkZvY3VzT25JbnB1dCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kZXN0cm95KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTWFuaXB1bGEgYSB2aXNpYmlsaWRhZGUgZG8gdG9vbHRpcCBxdWFuZG8gaG91dmVyIHVtYSByZWZlcsOqbmNpYSBkZSBpbnB1dC5cbiAgICAgKi9cbiAgICBwcml2YXRlIHVwZGF0ZVRvb2x0aXBWaXNpYmlsaXR5V2hlbkZvY3VzT25JbnB1dCgpIHtcbiAgICAgICAgaWYgKHRoaXMuZm9jdXNlZElucHV0UmVmKSB7XG4gICAgICAgICAgICBjb25zdCBpbnB1dEZvY3VzID0gdGhpcy5mb2N1c2VkSW5wdXRSZWY7XG4gICAgICAgICAgICBjb25zdCBpY29uID0gdGhpcy5nZXRJY29uRnJvbUZvY3VzZWRJbnB1dCgpO1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5saXN0ZW4oaW5wdXRGb2N1cywgJ2ZvY3VzJywgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChpY29uKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NyZWF0ZVRvb2x0aXAoZmFsc2UsIGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b29sdGlwQ3JlYXRlZEJ5Rm9jdXMgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5saXN0ZW4oaW5wdXRGb2N1cywgJ2JsdXInLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGljb24pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVUb29sdGlwKGljb24pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRlc3Ryb3koKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b29sdGlwQ3JlYXRlZEJ5Rm9jdXMgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE9idMOpbSBvIGVsZW1lbnRvIGRvIMOtY29uZSBhc3NvY2lhZG8gYW8gbGFiZWwgZG8gaW5wdXQgZW0gZm9jdXMuXG4gICAgICogQHJldHVybnMgTyDDrWNvbmUgZG8gaW5wdXQgZW0gZm9jdXMuXG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXRJY29uRnJvbUZvY3VzZWRJbnB1dCgpOiBIVE1MRWxlbWVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmUgbyB0b29sdGlwIGFzc29jaWFkbyBhbyDDrWNvbmUgZG8gaW5wdXQgZW0gZm9jdXMuXG4gICAgICogQHBhcmFtIGljb24gTyDDrWNvbmUgZG8gaW5wdXQgZW0gZm9jdXMuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZW1vdmVUb29sdGlwKGljb246IEhUTUxFbGVtZW50KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHRvb2x0aXAgPSBpY29uLnF1ZXJ5U2VsZWN0b3IoJy50b29sdGlwJykgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIGlmICh0b29sdGlwKSB7XG4gICAgICAgICAgICB0b29sdGlwLnJlbW92ZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gd2hlbmV2ZXIgdGhlIGNvbXBvbmVudCB3aXRoIHRoZSB0b29sdGlwIGlzIGNsaWNrZWQgSSBkZXN0cm95IHRoZSB0b29sdGlwLlxuICAgIC8vIHdoZW5ldmVyIGEga2V5IGlzIHByZXNzZWQgb24gdGhlIGNvbXBvbmVudCB3aXRoIHRoZSB0b29sdGlwIEkgZGVzdHJveSB0aGUgdG9vbHRpcC5cbiAgICBASG9zdExpc3RlbmVyKCdjbGljaycpXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicpXG4gICAgcHVibGljIG9uQ2xpY2soKTogdm9pZCB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMudG9vbHRpcEV2ZW50ID09PSAnaG92ZXInICYmXG4gICAgICAgICAgICAhbmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvQW5kcm9pZC9pKSAmJlxuICAgICAgICAgICAgIW5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL2lQaG9uZS9pKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuZGVzdHJveSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignZm9jdXMnKVxuICAgIHB1YmxpYyBvbkZvY3VzKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy50b29sdGlwRXZlbnQgPT09ICdmb2N1cycpIHtcbiAgICAgICAgICAgIHRoaXMuX2NyZWF0ZVRvb2x0aXAodHJ1ZSwgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdibHVyJylcbiAgICBwdWJsaWMgb25CbHVyKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy50b29sdGlwRXZlbnQgPT09ICdmb2N1cycpIHtcbiAgICAgICAgICAgIHRoaXMuZGVzdHJveSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignbW91c2VlbnRlcicpXG4gICAgcHVibGljIG9uTW91c2VFbnRlcigpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMudG9vbHRpcEV2ZW50ID09PSAnaG92ZXInIHx8IHRoaXMuZm9jdXNlZElucHV0UmVmKSB7XG4gICAgICAgICAgICB0aGlzLmRlYm91bmNlQ3JlYXRlVG9vbHRpcEZ1bmN0aW9uKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdtb3VzZWxlYXZlJylcbiAgICBASG9zdExpc3RlbmVyKCd3aGVlbCcpXG4gICAgcHVibGljIG9uTW91c2VMZWF2ZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCh0aGlzLnRvb2x0aXBFdmVudCA9PT0gJ2hvdmVyJyB8fCB0aGlzLmZvY3VzZWRJbnB1dFJlZikgJiYgIXRoaXMudG9vbHRpcENyZWF0ZWRCeUZvY3VzKSB7XG4gICAgICAgICAgICB0aGlzLmRlc3Ryb3koKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ3RvdWNoc3RhcnQnKVxuICAgIHB1YmxpYyBvblRvdWNoU3RhcnQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnRvb2x0aXBFdmVudCA9PT0gJ2hvdmVyJykge1xuICAgICAgICAgICAgd2luZG93LmNsZWFyVGltZW91dCh0aGlzLnRvdWNoVGltZW91dCk7XG4gICAgICAgICAgICBjb25zdCBfZGVsYXkgPSB0aGlzLm1vYmlsZUJlaGF2aW9yID09PSAncHJlc3NpbmcnID8gdGhpcy5zaG93RGVsYXkgOiAwO1xuICAgICAgICAgICAgdGhpcy50b3VjaFRpbWVvdXQgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fY3JlYXRlVG9vbHRpcCh0cnVlLCB0cnVlKTtcbiAgICAgICAgICAgIH0sIF9kZWxheSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCd0b3VjaGVuZCcpXG4gICAgcHVibGljIG9uVG91Y2hFbmQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnRvb2x0aXBFdmVudCA9PT0gJ2hvdmVyJykge1xuICAgICAgICAgICAgaWYgKHRoaXMubW9iaWxlQmVoYXZpb3IgPT09ICdwcmVzc2luZycpIHtcbiAgICAgICAgICAgICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KHRoaXMudG91Y2hUaW1lb3V0KTtcbiAgICAgICAgICAgICAgICB0aGlzLmRlc3Ryb3koKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgdmFsaWRhdGVQb3NpdGlvbigpIHtcbiAgICAgICAgY29uc3QgY29udGFpbnNQb3NpdGlvbiA9IFsndG9wJywgJ3JpZ2h0JywgJ2JvdHRvbScsICdsZWZ0J10uaW5jbHVkZXModGhpcy50b29sdGlwUG9zaXRpb24pO1xuXG4gICAgICAgIGlmICghY29udGFpbnNQb3NpdGlvbikge1xuICAgICAgICAgICAgdGhpcy50b29sdGlwUG9zaXRpb24gPSAndG9wJztcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVG9vbHRpcCAke3RoaXMudG9vbHRpcFBvc2l0aW9ufSBwb3NpdGlvbiBpcyB1bmV4cGVjdGVkYCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldERvbUVsZW1lbnQoKTogSFRNTEVsZW1lbnQge1xuICAgICAgICB0aGlzLmNvbXBvbmVudFJlZiA9IHRoaXMudmlld0NvbnRhaW5lclJlZi5jcmVhdGVDb21wb25lbnQoVG9vbHRpcENvbXBvbmVudCk7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbXBvbmVudFJlZi5sb2NhdGlvbi5uYXRpdmVFbGVtZW50O1xuICAgIH1cblxuICAgIHByaXZhdGUgX2NyZWF0ZVRvb2x0aXAodXNlU2hvd0RlbGF5ID0gZmFsc2UsIGF1dG9EZXN0cm95ID0gdHJ1ZSkge1xuICAgICAgICBjb25zdCBoYXNUZXh0ID0gKHRoaXMudG9vbHRpcCB8fCAnJykubGVuZ3RoID4gMDtcbiAgICAgICAgY29uc3QgaGFzQ29tcG9uZW50UmVmID0gdGhpcy5jb21wb25lbnRSZWYgIT09IG51bGw7XG4gICAgICAgIGlmICghaGFzVGV4dCB8fCBoYXNDb21wb25lbnRSZWYpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBibG9ja0lmSXNOb3RUcnVuY2F0ZWRDb250ZW50ID0gdGhpcy5jaGVja1RydW5jYXRlZFRleHQoKSA/ICF0aGlzLmNvbnRlbnRJc1RydW5jYXRlZCA6IGZhbHNlO1xuICAgICAgICBpZiAoYmxvY2tJZklzTm90VHJ1bmNhdGVkQ29udGVudCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGRvbUVsZW1lbnQgPSB0aGlzLmdldERvbUVsZW1lbnQoKTtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkb21FbGVtZW50KTtcbiAgICAgICAgdGhpcy50b29sdGlwRGl2RWxlbWVudCA9IGRvbUVsZW1lbnQucXVlcnlTZWxlY3RvcignLnRvb2x0aXAnKTtcbiAgICAgICAgdGhpcy5zZXRUb29sdGlwQ29tcG9uZW50UHJvcGVydGllcygpO1xuICAgICAgICBjb25zdCBfc2hvd0RlbGF5ID0gdXNlU2hvd0RlbGF5ID8gdGhpcy5zaG93RGVsYXkgOiAwO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2hvd1Rvb2x0aXAoKTtcbiAgICAgICAgfSwgX3Nob3dEZWxheSk7XG5cbiAgICAgICAgdGhpcy5yZW5kZXJlci5saXN0ZW4od2luZG93LCAnc2Nyb2xsJywgKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zZXRUb29sdGlwUG9zaXRpb25Qcm9wZXJ0eSgpO1xuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoYXV0b0Rlc3Ryb3kgJiYgdGhpcy5kaXNwbGF5VGltZSkge1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5kZXN0cm95KCk7XG4gICAgICAgICAgICB9LCB0aGlzLmRpc3BsYXlUaW1lKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc2hvd1Rvb2x0aXAoKSB7XG4gICAgICAgIGlmICh0aGlzLmNvbXBvbmVudFJlZikge1xuICAgICAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UudmlzaWJsZSA9IHRoaXMudmlzaWJsZTtcblxuICAgICAgICAgICAgdGhpcy5zZXRUb29sdGlwUG9zaXRpb25Qcm9wZXJ0eSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRUb29sdGlwUG9zaXRpb25Qcm9wZXJ0eSgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmNvbXBvbmVudFJlZikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFuY2hvclNpemUgPSA1O1xuICAgICAgICBjb25zdCB7IGxlZnQsIHJpZ2h0IH0gPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgICAgICBjb25zdCB0b29sdGlwRWxlbWVudFBvc2l0aW9uID0gZ2V0RWxlbWVudFBvc2l0aW9uSW5mbyh0aGlzLnRvb2x0aXBEaXZFbGVtZW50ISk7XG4gICAgICAgIGNvbnN0IGVsZW1lbnRMZWZ0b3ZlciA9IGdldEVsZW1lbnRMZWZ0b3ZlckNvbnRlbnRBdmFpbGFibGUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICBjb25zdCBlbGVtZW50VHJpZ2dlclBvc2l0aW9uID0gZ2V0RWxlbWVudFBvc2l0aW9uSW5mbyh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIGNvbnN0IGhvcml6b250YWxQb3NpdGlvbnM6IFRvb2x0aXBQb3NpdGlvbnNbXSA9IFsnbGVmdCcsICdyaWdodCddO1xuICAgICAgICBjb25zdCBpc1Bvc2l0aW9uSG9yaXpvbnRhbCA9IGhvcml6b250YWxQb3NpdGlvbnMuaW5jbHVkZXModGhpcy50b29sdGlwUG9zaXRpb24pO1xuICAgICAgICBjb25zdCBkaXN0YW5jZVRvQm9yZGVycyA9IGlzUG9zaXRpb25Ib3Jpem9udGFsXG4gICAgICAgICAgICA/IHRvb2x0aXBFbGVtZW50UG9zaXRpb24uZWxlbWVudFdpZHRoXG4gICAgICAgICAgICA6IHRvb2x0aXBFbGVtZW50UG9zaXRpb24uZWxlbWVudEhvcml6b250YWxDZW50ZXI7XG4gICAgICAgIGNvbnN0IGNhblNldEF0VG9wID0gZWxlbWVudExlZnRvdmVyLmZyZWVEaXN0YW5jZVRvVG9wID4gdG9vbHRpcEVsZW1lbnRQb3NpdGlvbi5lbGVtZW50SGVpZ2h0O1xuICAgICAgICBjb25zdCBjYW5TZXRBdExlZnQgPSBlbGVtZW50TGVmdG92ZXIuZnJlZURpc3RhbmNlVG9MZWZ0ID4gZGlzdGFuY2VUb0JvcmRlcnM7XG4gICAgICAgIGNvbnN0IGNhblNldEF0UmlnaHQgPSBlbGVtZW50TGVmdG92ZXIuZnJlZURpc3RhbmNlVG9SaWdodCA+IGRpc3RhbmNlVG9Cb3JkZXJzO1xuICAgICAgICBjb25zdCBjYW5TZXRBdEJvdHRvbSA9IGVsZW1lbnRMZWZ0b3Zlci5mcmVlRGlzdGFuY2VUb0JvdHRvbSA+IHRvb2x0aXBFbGVtZW50UG9zaXRpb24uZWxlbWVudEhlaWdodDtcbiAgICAgICAgY29uc3QgdG9wVmVydGljYWwgPSBlbGVtZW50VHJpZ2dlclBvc2l0aW9uLnRvcCArIGVsZW1lbnRUcmlnZ2VyUG9zaXRpb24uZWxlbWVudFZlcnRpY2FsQ2VudGVyO1xuICAgICAgICBjb25zdCBjaGVja1RvcFBvc2l0aW9uID0gKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGNhblNldEF0VG9wICYmIGNhblNldEF0TGVmdCAmJiBjYW5TZXRBdFJpZ2h0O1xuICAgICAgICB9O1xuICAgICAgICBjb25zdCBjaGVja0JvdHRvbVBvc2l0aW9uID0gKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGNhblNldEF0Qm90dG9tICYmIGNhblNldEF0TGVmdCAmJiBjYW5TZXRBdFJpZ2h0O1xuICAgICAgICB9O1xuICAgICAgICBjb25zdCBjaGVja0xlZnRQb3NpdGlvbiA9ICgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBjYW5TZXRBdExlZnQgJiYgY2FuU2V0QXRUb3AgJiYgY2FuU2V0QXRCb3R0b207XG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgY2hlY2tSaWdodFBvc2l0aW9uID0gKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGNhblNldEF0UmlnaHQgJiYgY2FuU2V0QXRUb3AgJiYgY2FuU2V0QXRCb3R0b207XG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3Qgc2V0VG9wUG9zaXRpb24gPSAoKTogeyBsZWZ0OiBudW1iZXI7IHRvcDogbnVtYmVyIH0gPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBsZWZ0OiBsZWZ0ICsgKHJpZ2h0IC0gbGVmdCkgLyAyLFxuICAgICAgICAgICAgICAgIHRvcDogZWxlbWVudFRyaWdnZXJQb3NpdGlvbi50b3AgLSBhbmNob3JTaXplLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBzZXRCb3R0b21Qb3NpdGlvbiA9ICgpOiB7IGxlZnQ6IG51bWJlcjsgdG9wOiBudW1iZXIgfSA9PiB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGxlZnQ6IGxlZnQgKyAocmlnaHQgLSBsZWZ0KSAvIDIsXG4gICAgICAgICAgICAgICAgdG9wOiBlbGVtZW50VHJpZ2dlclBvc2l0aW9uLnRvcCArIGVsZW1lbnRUcmlnZ2VyUG9zaXRpb24uZWxlbWVudEhlaWdodCxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3Qgc2V0TGVmdFBvc2l0aW9uID0gKCk6IHsgbGVmdDogbnVtYmVyOyB0b3A6IG51bWJlciB9ID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgbGVmdDogbGVmdCxcbiAgICAgICAgICAgICAgICB0b3A6IHRvcFZlcnRpY2FsLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBzZXRSaWdodFBvc2l0aW9uID0gKCk6IHsgbGVmdDogbnVtYmVyOyB0b3A6IG51bWJlciB9ID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgbGVmdDogcmlnaHQsXG4gICAgICAgICAgICAgICAgdG9wOiB0b3BWZXJ0aWNhbCxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH07XG5cbiAgICAgICAgdHlwZSBQb3NpdGlvbiA9IHtcbiAgICAgICAgICAgIHBvczogVG9vbHRpcFBvc2l0aW9ucztcbiAgICAgICAgICAgIGNoZWNrOiAoKSA9PiBib29sZWFuO1xuICAgICAgICAgICAgc2V0OiAoKSA9PiB7IGxlZnQ6IG51bWJlcjsgdG9wOiBudW1iZXIgfTtcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBwb3NpdGlvbnM6IFBvc2l0aW9uW10gPSBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcG9zOiAndG9wJyxcbiAgICAgICAgICAgICAgICBjaGVjazogY2hlY2tUb3BQb3NpdGlvbixcbiAgICAgICAgICAgICAgICBzZXQ6IHNldFRvcFBvc2l0aW9uLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwb3M6ICdib3R0b20nLFxuICAgICAgICAgICAgICAgIGNoZWNrOiBjaGVja0JvdHRvbVBvc2l0aW9uLFxuICAgICAgICAgICAgICAgIHNldDogc2V0Qm90dG9tUG9zaXRpb24sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBvczogJ2xlZnQnLFxuICAgICAgICAgICAgICAgIGNoZWNrOiBjaGVja0xlZnRQb3NpdGlvbixcbiAgICAgICAgICAgICAgICBzZXQ6IHNldExlZnRQb3NpdGlvbixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcG9zOiAncmlnaHQnLFxuICAgICAgICAgICAgICAgIGNoZWNrOiBjaGVja1JpZ2h0UG9zaXRpb24sXG4gICAgICAgICAgICAgICAgc2V0OiBzZXRSaWdodFBvc2l0aW9uLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXTtcblxuICAgICAgICBjb25zdCBwb3NpdGlvbkRlZmluZWQgPSBwb3NpdGlvbnMuZmluZCgocG9zaXRpb24pID0+IHBvc2l0aW9uLnBvcyA9PT0gdGhpcy50b29sdGlwUG9zaXRpb24pO1xuICAgICAgICBsZXQgdmFsaWRQb3NpdGlvbjogUG9zaXRpb24gfCB1bmRlZmluZWQgPSBwb3NpdGlvbkRlZmluZWQ7XG4gICAgICAgIGNvbnN0IGNhblVzZURlZmluZWRQb3NpdGlvbiA9IHBvc2l0aW9uRGVmaW5lZD8uY2hlY2soKTtcbiAgICAgICAgaWYgKGNhblVzZURlZmluZWRQb3NpdGlvbikge1xuICAgICAgICAgICAgdmFsaWRQb3NpdGlvbiA9IHBvc2l0aW9uRGVmaW5lZDtcbiAgICAgICAgfSBlbHNlIGlmICghY2FuVXNlRGVmaW5lZFBvc2l0aW9uKSB7XG4gICAgICAgICAgICBjb25zdCB2YWxpZEFsdGVybmF0aXZlUG9zaXRpb24gPSBwb3NpdGlvbnMuZmluZCgocG9zaXRpb24pID0+IHBvc2l0aW9uLmNoZWNrKCkpO1xuICAgICAgICAgICAgaWYgKHZhbGlkQWx0ZXJuYXRpdmVQb3NpdGlvbikge1xuICAgICAgICAgICAgICAgIHZhbGlkUG9zaXRpb24gPSB2YWxpZEFsdGVybmF0aXZlUG9zaXRpb247XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgX3Bvc2l0aW9uID0gdmFsaWRQb3NpdGlvbiEuc2V0KCk7XG4gICAgICAgIGNvbnN0IHBvc2l0aW9uTGVmdCA9IF9wb3NpdGlvbi5sZWZ0O1xuICAgICAgICBjb25zdCBwb3NpdGlvblRvcCA9IF9wb3NpdGlvbi50b3A7XG4gICAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLmxlZnQgPSBNYXRoLnJvdW5kKHBvc2l0aW9uTGVmdCk7XG4gICAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLnRvcCA9IE1hdGgucm91bmQocG9zaXRpb25Ub3ApO1xuICAgICAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5wb3NpdGlvbiA9IHZhbGlkUG9zaXRpb24hLnBvcztcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFRvb2x0aXBDb21wb25lbnRQcm9wZXJ0aWVzKCkge1xuICAgICAgICBpZiAoIXRoaXMuY29tcG9uZW50UmVmKSByZXR1cm47XG5cbiAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UudG9vbHRpcCA9IHRoaXMudG9vbHRpcCBhcyBzdHJpbmc7XG4gICAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLmVzY2FwZSA9IHRoaXMuZXNjYXBlO1xuICAgIH1cblxuICAgIHByaXZhdGUgZGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFpc051bGxPclVuZGVmaW5lZCh0aGlzLmNvbXBvbmVudFJlZikpIHtcbiAgICAgICAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQodGhpcy5zaG93VGltZW91dCk7XG4gICAgICAgICAgICB0aGlzLmFwcFJlZi5kZXRhY2hWaWV3KHRoaXMuY29tcG9uZW50UmVmLmhvc3RWaWV3KTtcbiAgICAgICAgICAgIHRoaXMuY29tcG9uZW50UmVmLmRlc3Ryb3koKTtcbiAgICAgICAgICAgIHRoaXMuY29tcG9uZW50UmVmID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMudG9vbHRpcERpdkVsZW1lbnQgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXQgY29udGVudElzVHJ1bmNhdGVkKCkge1xuICAgICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IHRydW5jYXRlZEJ5VmVydGljYWwgPSBlbGVtZW50LnNjcm9sbEhlaWdodCA+IGVsZW1lbnQuY2xpZW50SGVpZ2h0O1xuICAgICAgICBjb25zdCB0cnVuY2F0ZWRCeUhvcml6b250YWwgPSBlbGVtZW50LnNjcm9sbFdpZHRoID4gZWxlbWVudC5jbGllbnRXaWR0aDtcbiAgICAgICAgcmV0dXJuIHRydW5jYXRlZEJ5SG9yaXpvbnRhbCB8fCB0cnVuY2F0ZWRCeVZlcnRpY2FsO1xuICAgIH1cbn1cblxuIl19
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { EventEmitter, Component, Input, Output, HostListener, NgModule } from '@angular/core';
|
|
2
|
+
import { EventEmitter, input, Component, Input, Output, HostListener, NgModule } from '@angular/core';
|
|
3
3
|
import * as i1 from '@angular/common';
|
|
4
4
|
import { CommonModule } from '@angular/common';
|
|
5
5
|
import { RouterModule } from '@angular/router';
|
|
6
6
|
import * as i2 from '@seniorsistemas/angular-components/info-sign';
|
|
7
7
|
import { InfoSignModule } from '@seniorsistemas/angular-components/info-sign';
|
|
8
|
+
import * as i3 from '@seniorsistemas/angular-components/tooltip';
|
|
9
|
+
import { TooltipModule } from '@seniorsistemas/angular-components/tooltip';
|
|
10
|
+
import { TemplateModule } from '@seniorsistemas/angular-components/template';
|
|
8
11
|
|
|
9
12
|
class BadgeComponent {
|
|
10
13
|
type = 'pill';
|
|
@@ -19,12 +22,13 @@ class BadgeComponent {
|
|
|
19
22
|
onClick() {
|
|
20
23
|
this.selected.emit(this.text);
|
|
21
24
|
}
|
|
25
|
+
enableTruncateText = input(false);
|
|
22
26
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BadgeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
23
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: BadgeComponent, selector: "s-badge", inputs: { type: "type", color: "color", title: "title", text: "text", selectable: "selectable", iconClass: "iconClass", iconPosition: "iconPosition", infoSign: "infoSign" }, outputs: { selected: "selected" }, host: { listeners: { "click": "onClick()" } }, ngImport: i0, template: "<span\n class=\"badge\"\n [ngClass]=\"{\n 'badge--pill': type === 'pill',\n 'badge--chip': type === 'chip',\n 'badge--red': color === 'red',\n 'badge--orange': color === 'orange',\n 'badge--yellow': color === 'yellow',\n 'badge--blue': color === 'blue',\n 'badge--green': color === 'green',\n 'badge--gray': color === 'gray',\n 'badge--selectable': selectable,\n }\"\n>\n <div class=\"flex gap-2
|
|
27
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: BadgeComponent, selector: "s-badge", inputs: { type: { classPropertyName: "type", publicName: "type", isSignal: false, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: false, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: false, isRequired: false, transformFunction: null }, text: { classPropertyName: "text", publicName: "text", isSignal: false, isRequired: false, transformFunction: null }, selectable: { classPropertyName: "selectable", publicName: "selectable", isSignal: false, isRequired: false, transformFunction: null }, iconClass: { classPropertyName: "iconClass", publicName: "iconClass", isSignal: false, isRequired: false, transformFunction: null }, iconPosition: { classPropertyName: "iconPosition", publicName: "iconPosition", isSignal: false, isRequired: false, transformFunction: null }, infoSign: { classPropertyName: "infoSign", publicName: "infoSign", isSignal: false, isRequired: false, transformFunction: null }, enableTruncateText: { classPropertyName: "enableTruncateText", publicName: "enableTruncateText", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selected: "selected" }, host: { listeners: { "click": "onClick()" } }, ngImport: i0, template: "<span\n class=\"badge\"\n [ngClass]=\"{\n 'badge--pill': type === 'pill',\n 'badge--chip': type === 'chip',\n 'badge--red': color === 'red',\n 'badge--orange': color === 'orange',\n 'badge--yellow': color === 'yellow',\n 'badge--blue': color === 'blue',\n 'badge--green': color === 'green',\n 'badge--gray': color === 'gray',\n 'badge--selectable': selectable,\n }\"\n>\n <div class=\"flex items-center gap-2\">\n @if (infoSign) {\n <span *sInfoSign=\"infoSign.text; displayTime: infoSign.displayTime ?? 0\"></span>\n }\n @if (iconClass) {\n <span\n [class.pr-2]=\"text\"\n [class]=\"'badge-icon ' + iconClass\"\n [ngClass]=\"{\n 'badge-icon--left': iconPosition === 'left' && text,\n 'badge-icon--right': iconPosition === 'right' && text,\n }\"\n >\n </span>\n }\n </div>\n @if (title) {\n <span class=\"badge-title\">{{ title }}:</span>\n }\n <span\n class=\"badge-text\"\n [class.badge-text-truncated]=\"enableTruncateText()\"\n [sTooltip]=\"text\"\n [visible]=\"enableTruncateText()\"\n [checkTruncatedText]=\"enableTruncateText()\"\n >{{ text }}</span\n >\n</span>\n\n", styles: ["::ng-deep .info-sign .info-sign__icon{padding:0!important}.badge{align-items:center;max-width:100%;display:inline-flex;min-height:1.25rem;justify-content:center;min-width:20px;padding:0 .5rem}.badge--chip{border-radius:4px}.badge--pill{border-radius:12px}.badge .badge-title{color:#212533;font-family:Open Sans,sans-serif;font-size:12px;font-weight:700;line-height:150%;margin-right:.125rem}.badge-text{color:#212533;font-family:Open Sans,sans-serif;font-size:.75rem;font-weight:400;line-height:150%}.badge-text-truncated{text-overflow:ellipsis;overflow:hidden;line-clamp:1;-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box}.badge .badge-icon{color:#212533;font-size:10px}.badge .badge-icon--right{order:2}.badge--red{background-color:#fcd2d2;border:1px solid #c13018}.badge--orange{background-color:#fce3ba;border:1px solid #f8931f}.badge--yellow{background-color:#fef4e3;border:1px solid #fcbf10}.badge--blue{background-color:#d5e8ec;border:1px solid #428bca}.badge--green{background-color:#e6ffb3;border:1px solid #0c9348}.badge--gray{background-color:#e5eaea;border:1px solid #697882}.badge--selectable{cursor:pointer;-webkit-user-select:none;user-select:none}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.InfoSignDirective, selector: "[sInfoSign]", inputs: ["sInfoSign", "sInfoSignDisplayTime", "sInfoSignFocusedInputRef", "sInfoSignUseFocusedInputRef"] }, { kind: "directive", type: i3.TooltipDirective, selector: "[sTooltip]", inputs: ["sTooltip", "tooltipPosition", "showDelay", "displayTime", "tooltipEvent", "escape", "visible", "mobileBehavior", "focusedInputRef", "checkTruncatedText"] }] });
|
|
24
28
|
}
|
|
25
29
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BadgeComponent, decorators: [{
|
|
26
30
|
type: Component,
|
|
27
|
-
args: [{ selector: 's-badge', template: "<span\n class=\"badge\"\n [ngClass]=\"{\n 'badge--pill': type === 'pill',\n 'badge--chip': type === 'chip',\n 'badge--red': color === 'red',\n 'badge--orange': color === 'orange',\n 'badge--yellow': color === 'yellow',\n 'badge--blue': color === 'blue',\n 'badge--green': color === 'green',\n 'badge--gray': color === 'gray',\n 'badge--selectable': selectable,\n }\"\n>\n <div class=\"flex gap-2
|
|
31
|
+
args: [{ selector: 's-badge', template: "<span\n class=\"badge\"\n [ngClass]=\"{\n 'badge--pill': type === 'pill',\n 'badge--chip': type === 'chip',\n 'badge--red': color === 'red',\n 'badge--orange': color === 'orange',\n 'badge--yellow': color === 'yellow',\n 'badge--blue': color === 'blue',\n 'badge--green': color === 'green',\n 'badge--gray': color === 'gray',\n 'badge--selectable': selectable,\n }\"\n>\n <div class=\"flex items-center gap-2\">\n @if (infoSign) {\n <span *sInfoSign=\"infoSign.text; displayTime: infoSign.displayTime ?? 0\"></span>\n }\n @if (iconClass) {\n <span\n [class.pr-2]=\"text\"\n [class]=\"'badge-icon ' + iconClass\"\n [ngClass]=\"{\n 'badge-icon--left': iconPosition === 'left' && text,\n 'badge-icon--right': iconPosition === 'right' && text,\n }\"\n >\n </span>\n }\n </div>\n @if (title) {\n <span class=\"badge-title\">{{ title }}:</span>\n }\n <span\n class=\"badge-text\"\n [class.badge-text-truncated]=\"enableTruncateText()\"\n [sTooltip]=\"text\"\n [visible]=\"enableTruncateText()\"\n [checkTruncatedText]=\"enableTruncateText()\"\n >{{ text }}</span\n >\n</span>\n\n", styles: ["::ng-deep .info-sign .info-sign__icon{padding:0!important}.badge{align-items:center;max-width:100%;display:inline-flex;min-height:1.25rem;justify-content:center;min-width:20px;padding:0 .5rem}.badge--chip{border-radius:4px}.badge--pill{border-radius:12px}.badge .badge-title{color:#212533;font-family:Open Sans,sans-serif;font-size:12px;font-weight:700;line-height:150%;margin-right:.125rem}.badge-text{color:#212533;font-family:Open Sans,sans-serif;font-size:.75rem;font-weight:400;line-height:150%}.badge-text-truncated{text-overflow:ellipsis;overflow:hidden;line-clamp:1;-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box}.badge .badge-icon{color:#212533;font-size:10px}.badge .badge-icon--right{order:2}.badge--red{background-color:#fcd2d2;border:1px solid #c13018}.badge--orange{background-color:#fce3ba;border:1px solid #f8931f}.badge--yellow{background-color:#fef4e3;border:1px solid #fcbf10}.badge--blue{background-color:#d5e8ec;border:1px solid #428bca}.badge--green{background-color:#e6ffb3;border:1px solid #0c9348}.badge--gray{background-color:#e5eaea;border:1px solid #697882}.badge--selectable{cursor:pointer;-webkit-user-select:none;user-select:none}\n"] }]
|
|
28
32
|
}], propDecorators: { type: [{
|
|
29
33
|
type: Input
|
|
30
34
|
}], color: [{
|
|
@@ -50,13 +54,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
50
54
|
|
|
51
55
|
class BadgeModule {
|
|
52
56
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BadgeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
53
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: BadgeModule, declarations: [BadgeComponent], imports: [CommonModule, RouterModule, InfoSignModule], exports: [BadgeComponent, RouterModule] });
|
|
54
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BadgeModule, imports: [CommonModule, RouterModule, InfoSignModule, RouterModule] });
|
|
57
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: BadgeModule, declarations: [BadgeComponent], imports: [CommonModule, RouterModule, InfoSignModule, TooltipModule, TemplateModule], exports: [BadgeComponent, RouterModule] });
|
|
58
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BadgeModule, imports: [CommonModule, RouterModule, InfoSignModule, TooltipModule, TemplateModule, RouterModule] });
|
|
55
59
|
}
|
|
56
60
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BadgeModule, decorators: [{
|
|
57
61
|
type: NgModule,
|
|
58
62
|
args: [{
|
|
59
|
-
imports: [CommonModule, RouterModule, InfoSignModule],
|
|
63
|
+
imports: [CommonModule, RouterModule, InfoSignModule, TooltipModule, TemplateModule],
|
|
60
64
|
declarations: [BadgeComponent],
|
|
61
65
|
exports: [BadgeComponent, RouterModule],
|
|
62
66
|
}]
|