cps-ui-kit 17.27.0 → 17.29.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/cps-autocomplete/cps-autocomplete.component.mjs +10 -6
- package/esm2022/lib/components/cps-button/cps-button.component.mjs +15 -8
- package/esm2022/lib/components/cps-button-toggle/cps-button-toggle.component.mjs +11 -7
- package/esm2022/lib/components/cps-checkbox/cps-checkbox.component.mjs +10 -6
- package/esm2022/lib/components/cps-divider/cps-divider.component.mjs +12 -6
- package/esm2022/lib/components/cps-expansion-panel/cps-expansion-panel.component.mjs +12 -8
- package/esm2022/lib/components/cps-icon/cps-icon.component.mjs +12 -7
- package/esm2022/lib/components/cps-input/cps-input.component.mjs +3 -3
- package/esm2022/lib/components/cps-loader/cps-loader.component.mjs +12 -7
- package/esm2022/lib/components/cps-menu/cps-menu.component.mjs +9 -9
- package/esm2022/lib/components/cps-paginator/cps-paginator.component.mjs +12 -7
- package/esm2022/lib/components/cps-progress-circular/cps-progress-circular.component.mjs +12 -7
- package/esm2022/lib/components/cps-progress-linear/cps-progress-linear.component.mjs +13 -8
- package/esm2022/lib/components/cps-tab-group/cps-tab-group.component.mjs +12 -8
- package/esm2022/lib/components/cps-table/cps-table.component.mjs +55 -11
- package/esm2022/lib/components/cps-table/pipes/cps-detect-filter-type.pipe.mjs +29 -0
- package/esm2022/lib/components/cps-tag/cps-tag.component.mjs +10 -6
- package/esm2022/lib/components/cps-tree-autocomplete/cps-tree-autocomplete.component.mjs +10 -6
- package/esm2022/lib/components/cps-tree-table/cps-tree-table.component.mjs +17 -12
- package/esm2022/lib/components/cps-tree-table/directives/cps-tree-table-row-toggler.directive.mjs +11 -6
- package/esm2022/lib/directives/cps-tooltip/cps-tooltip.directive.mjs +28 -23
- package/esm2022/lib/utils/colors-utils.mjs +10 -8
- package/esm2022/public-api.mjs +2 -1
- package/fesm2022/cps-ui-kit.mjs +1378 -1229
- package/fesm2022/cps-ui-kit.mjs.map +1 -1
- package/lib/components/cps-autocomplete/cps-autocomplete.component.d.ts +3 -2
- package/lib/components/cps-button/cps-button.component.d.ts +2 -0
- package/lib/components/cps-button-toggle/cps-button-toggle.component.d.ts +3 -2
- package/lib/components/cps-checkbox/cps-checkbox.component.d.ts +3 -2
- package/lib/components/cps-divider/cps-divider.component.d.ts +2 -0
- package/lib/components/cps-expansion-panel/cps-expansion-panel.component.d.ts +2 -1
- package/lib/components/cps-icon/cps-icon.component.d.ts +2 -0
- package/lib/components/cps-loader/cps-loader.component.d.ts +2 -0
- package/lib/components/cps-menu/cps-menu.component.d.ts +1 -0
- package/lib/components/cps-paginator/cps-paginator.component.d.ts +2 -0
- package/lib/components/cps-progress-circular/cps-progress-circular.component.d.ts +2 -0
- package/lib/components/cps-progress-linear/cps-progress-linear.component.d.ts +2 -0
- package/lib/components/cps-tab-group/cps-tab-group.component.d.ts +2 -1
- package/lib/components/cps-table/cps-table.component.d.ts +29 -2
- package/lib/components/cps-table/pipes/cps-detect-filter-type.pipe.d.ts +10 -0
- package/lib/components/cps-tag/cps-tag.component.d.ts +3 -2
- package/lib/components/cps-tree-autocomplete/cps-tree-autocomplete.component.d.ts +3 -2
- package/lib/components/cps-tree-table/cps-tree-table.component.d.ts +4 -2
- package/lib/components/cps-tree-table/directives/cps-tree-table-row-toggler.directive.d.ts +2 -1
- package/lib/directives/cps-tooltip/cps-tooltip.directive.d.ts +3 -1
- package/lib/utils/colors-utils.d.ts +2 -2
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
|
@@ -118,6 +118,7 @@ export class CpsMenuComponent {
|
|
|
118
118
|
this.selfClick = false;
|
|
119
119
|
this.position = 'default';
|
|
120
120
|
this.itemsClasses = [];
|
|
121
|
+
this.window = this.document.defaultView;
|
|
121
122
|
this.resizeObserver = new ResizeObserver((entries) => {
|
|
122
123
|
if (this.target) {
|
|
123
124
|
entries.forEach((entry) => {
|
|
@@ -235,11 +236,10 @@ export class CpsMenuComponent {
|
|
|
235
236
|
if (isPlatformBrowser(this.platformId)) {
|
|
236
237
|
if (!this.documentClickListener && this.dismissable) {
|
|
237
238
|
this.zone.runOutsideAngular(() => {
|
|
238
|
-
const documentEvent = DomHandler.isIOS() ? 'touchstart' : 'mousedown';
|
|
239
239
|
const documentTarget = this.el
|
|
240
240
|
? this.el.nativeElement.ownerDocument
|
|
241
241
|
: this.document;
|
|
242
|
-
this.documentClickListener = this.renderer.listen(documentTarget,
|
|
242
|
+
this.documentClickListener = this.renderer.listen(documentTarget, 'mousedown', (event) => {
|
|
243
243
|
if (!this.persistent &&
|
|
244
244
|
!this.container?.contains(event.target) &&
|
|
245
245
|
this.target !== event.target &&
|
|
@@ -300,17 +300,17 @@ export class CpsMenuComponent {
|
|
|
300
300
|
case 'br':
|
|
301
301
|
return {
|
|
302
302
|
top: Math.max(targetOffset.top + target.offsetHeight - element.offsetHeight, 0),
|
|
303
|
-
left: Math.min(targetOffset.left + target.offsetWidth, window.innerWidth - element.offsetWidth)
|
|
303
|
+
left: Math.min(targetOffset.left + target.offsetWidth, this.window.innerWidth - element.offsetWidth)
|
|
304
304
|
};
|
|
305
305
|
case 'tl':
|
|
306
306
|
return {
|
|
307
|
-
top: Math.min(targetOffset.top, window.innerHeight - element.offsetHeight),
|
|
307
|
+
top: Math.min(targetOffset.top, this.window.innerHeight - element.offsetHeight),
|
|
308
308
|
left: Math.max(0, targetOffset.left - element.offsetWidth)
|
|
309
309
|
};
|
|
310
310
|
case 'tr':
|
|
311
311
|
return {
|
|
312
|
-
top: Math.min(targetOffset.top, window.innerHeight - element.offsetHeight),
|
|
313
|
-
left: Math.min(targetOffset.left + target.offsetWidth, window.innerWidth - element.offsetWidth)
|
|
312
|
+
top: Math.min(targetOffset.top, this.window.innerHeight - element.offsetHeight),
|
|
313
|
+
left: Math.min(targetOffset.left + target.offsetWidth, this.window.innerWidth - element.offsetWidth)
|
|
314
314
|
};
|
|
315
315
|
case 'default':
|
|
316
316
|
default:
|
|
@@ -491,7 +491,7 @@ export class CpsMenuComponent {
|
|
|
491
491
|
this._destroy();
|
|
492
492
|
}
|
|
493
493
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: CpsMenuComponent, deps: [{ token: DOCUMENT }, { token: PLATFORM_ID }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: i1.PrimeNGConfig }, { token: i1.OverlayService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
494
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.0", type: CpsMenuComponent, isStandalone: true, selector: "cps-menu", inputs: { header: "header", items: "items", withArrow: "withArrow", compressed: "compressed", focusOnShow: "focusOnShow", persistent: "persistent", containerClass: "containerClass", showTransitionOptions: "showTransitionOptions", hideTransitionOptions: "hideTransitionOptions" }, outputs: { menuShown: "menuShown", menuHidden: "menuHidden", beforeMenuHidden: "beforeMenuHidden", contentClicked: "contentClicked" }, usesOnChanges: true, ngImport: i0, template: "<div\n *ngIf=\"render\"\n class=\"cps-menu-container\"\n [ngClass]=\"{ 'cps-menu-no-arrow': !withArrow }\"\n [class]=\"containerClass\"\n (mousedown)=\"onOverlayClick($event)\"\n [@animation]=\"{\n value: overlayVisible ? 'open' : 'close',\n params: {\n showTransitionParams: showTransitionOptions,\n hideTransitionParams: hideTransitionOptions\n }\n }\"\n (@animation.start)=\"onAnimationStart($event)\"\n (@animation.done)=\"onAnimationEnd($event)\">\n <div (mousedown)=\"onContentClick()\" (touchstart)=\"onContentClick()\">\n <ng-container *ngIf=\"items.length < 1\">\n <ng-content></ng-content>\n </ng-container>\n <div\n *ngIf=\"items.length > 0\"\n class=\"cps-menu-content\"\n [ngClass]=\"{ 'cps-menu-content-compressed': compressed }\">\n <div *ngIf=\"header && !compressed\" class=\"cps-menu-header\">\n {{ header }}\n </div>\n\n <ng-container *ngFor=\"let item of items; let i = index\">\n <a\n *ngIf=\"!item.url\"\n (click)=\"onItemClick($event, item)\"\n [ngClass]=\"itemsClasses[i]\">\n <ng-container\n *ngTemplateOutlet=\"\n itemTemplate;\n context: {\n item: item\n }\n \"></ng-container>\n </a>\n <a\n *ngIf=\"item.url && item.url.startsWith('/')\"\n (click)=\"onItemClick($event, item)\"\n [routerLink]=\"item.url\"\n [target]=\"item.target\"\n [ngClass]=\"itemsClasses[i]\">\n <ng-container\n *ngTemplateOutlet=\"\n itemTemplate;\n context: {\n item: item\n }\n \"></ng-container>\n </a>\n <a\n *ngIf=\"item.url && !item.url.startsWith('/')\"\n (click)=\"onItemClick($event, item)\"\n [href]=\"item.url\"\n [attr.target]=\"item.target\"\n [ngClass]=\"itemsClasses[i]\">\n <ng-container\n *ngTemplateOutlet=\"\n itemTemplate;\n context: {\n item: item\n }\n \"></ng-container>\n </a>\n </ng-container>\n </div>\n </div>\n</div>\n\n<ng-template #itemTemplate let-item=\"item\">\n <ng-container *ngIf=\"!item.loading; else spinnerMenuItem\">\n <div class=\"cps-menu-item-icon\" *ngIf=\"withIcons\">\n <cps-icon\n *ngIf=\"item.icon\"\n [icon]=\"item.icon\"\n [color]=\"item.disabled ? 'text-light' : 'text-dark'\"\n [size]=\"compressed ? 'small' : 'normal'\"></cps-icon>\n </div>\n <div class=\"cps-menu-item-content\">\n <span class=\"cps-menu-item-content-title\">{{ item.title }}</span>\n <span\n *ngIf=\"item.desc && !compressed\"\n class=\"cps-menu-item-content-desc\"\n >{{ item.desc }}</span\n >\n </div>\n </ng-container>\n</ng-template>\n\n<ng-template #spinnerMenuItem>\n <span class=\"cps-menu-item-spinner\">\n <cps-progress-circular\n [strokeWidth]=\"2\"\n [color]=\"compressed ? 'prepared' : 'calm'\"\n [diameter]=\"16\">\n </cps-progress-circular>\n </span>\n</ng-template>\n", styles: [".cps-menu-container{background:#fff;border:0 none;box-shadow:0 1px 3px #0000004d;position:absolute;margin-top:14px;top:0;left:0;font-family:Source Sans Pro,sans-serif}.cps-menu-container:not(.cps-menu-no-arrow):before{border-width:14px;margin-left:-14px;border:solid transparent;border-color:#fff0;border-bottom-color:var(--cps-color-line-light)}.cps-menu-container:not(.cps-menu-no-arrow):after,.cps-menu-container:not(.cps-menu-no-arrow):before{bottom:100%;left:var(--overlayArrowLeft, 12);content:\" \";height:0;width:0;position:absolute;pointer-events:none}.cps-menu-container .cps-menu-content{padding:.75rem}.cps-menu-container .cps-menu-content{font-family:Source Sans Pro,sans-serif;display:flex;flex-direction:column;-webkit-user-select:none;-ms-user-select:none;user-select:none}.cps-menu-container .cps-menu-content .cps-menu-header{display:flex;align-items:center;min-height:50px;padding-bottom:8px;font-weight:600;color:var(--cps-color-text-dark);cursor:default}.cps-menu-container .cps-menu-content .cps-menu-item{text-decoration:unset;display:flex;align-items:center;padding:8px 48px 8px 0;border-top:1px solid rgba(0,0,0,.1215686275);cursor:pointer;min-height:58px}.cps-menu-container .cps-menu-content .cps-menu-item .cps-menu-item-icon{width:48px;align-items:center;display:flex}.cps-menu-container .cps-menu-content .cps-menu-item .cps-menu-item-icon cps-icon{margin-left:8px}.cps-menu-container .cps-menu-content .cps-menu-item .cps-menu-item-content{display:flex;flex-direction:column}.cps-menu-container .cps-menu-content .cps-menu-item .cps-menu-item-content .cps-menu-item-content-title{font-weight:600;font-size:15px;line-height:150%;color:var(--cps-color-text-dark)}.cps-menu-container .cps-menu-content .cps-menu-item .cps-menu-item-content .cps-menu-item-content-desc{font-size:12px;line-height:150%;color:var(--cps-color-text-light)}.cps-menu-container .cps-menu-content .cps-menu-item .cps-menu-item-spinner{width:100%;display:flex;align-items:center;justify-content:center}.cps-menu-container .cps-menu-content .cps-menu-item.cps-menu-item-disabled{pointer-events:none}.cps-menu-container .cps-menu-content .cps-menu-item.cps-menu-item-disabled .cps-menu-item-content .cps-menu-item-content-title{color:var(--cps-color-text-light)}.cps-menu-container .cps-menu-content .cps-menu-item.cps-menu-item-disabled .cps-menu-item-content .cps-menu-item-content-desc{color:var(--cps-color-text-lightest)}.cps-menu-container .cps-menu-content .cps-menu-item:not(.cps-menu-item-disabled):hover{background:var(--cps-color-highlight-hover)}.cps-menu-container .cps-menu-content .cps-menu-item:not(.cps-menu-item-disabled):hover .cps-menu-item-content .cps-menu-item-content-title{color:var(--cps-color-calm)}.cps-menu-container .cps-menu-content .cps-menu-item:not(.cps-menu-item-disabled):hover .cps-menu-item-content .cps-menu-item-content-desc{color:var(--cps-color-text-mild)}.cps-menu-container .cps-menu-content .cps-menu-item:not(.cps-menu-item-disabled):not(.cps-menu-item-compressed):hover .cps-menu-item-icon cps-icon i{color:var(--cps-color-calm)!important}.cps-menu-container .cps-menu-content .cps-menu-item:not(.cps-menu-item-disabled):active{background:var(--cps-color-highlight-active)}.cps-menu-container .cps-menu-content .cps-menu-item.cps-menu-item-first{border-top:none}.cps-menu-container .cps-menu-content.cps-menu-content-compressed{padding:0}.cps-menu-container .cps-menu-content.cps-menu-content-compressed .cps-menu-item{padding:0 16px;min-height:40px}.cps-menu-container .cps-menu-content.cps-menu-content-compressed .cps-menu-item .cps-menu-item-icon{width:36px}.cps-menu-container .cps-menu-content.cps-menu-content-compressed .cps-menu-item .cps-menu-item-content .cps-menu-item-content-title{font-weight:500}.cps-menu-container .cps-menu-content.cps-menu-content-compressed .cps-menu-item.cps-menu-item-compressed.cps-menu-item-compressed-with-icons{padding:0 26px 0 16px}.cps-menu-container .cps-menu-content.cps-menu-content-compressed .cps-menu-item:not(.cps-menu-item-disabled) .cps-menu-item-icon cps-icon i{color:var(--cps-color-prepared)!important}.cps-menu-container .cps-menu-content.cps-menu-content-compressed .cps-menu-item:not(.cps-menu-item-disabled) .cps-menu-item-content .cps-menu-item-content-title{color:var(--cps-color-prepared)}.cps-menu-container:not(.cps-menu-no-arrow):after{border-width:12px;margin-left:-12px;border:solid transparent;border-color:#fff0;border-bottom-color:#fff}.cps-menu-container-flipped{margin-top:0;margin-bottom:10px}.cps-menu-container:not(.cps-menu-no-arrow):after{border-width:12px;margin-left:-12px}.cps-menu-container:not(.cps-menu-no-arrow):before{border-width:14px;margin-left:-14px}.cps-menu-container-flipped:not(.cps-menu-no-arrow):after,.cps-menu-container-flipped:not(.cps-menu-no-arrow):before{bottom:auto;top:100%}.cps-menu-container.cps-menu-container-flipped:not(.cps-menu-no-arrow):after{border-bottom-color:transparent}.cps-menu-container.cps-menu-container-flipped:not(.cps-menu-no-arrow):before{border-bottom-color:transparent}.cps-menu-no-arrow{margin-top:0;margin-bottom:0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: SharedModule }, { kind: "component", type: CpsIconComponent, selector: "cps-icon", inputs: ["icon", "size", "color"] }, { kind: "component", type: CpsProgressCircularComponent, selector: "cps-progress-circular", inputs: ["diameter", "strokeWidth", "color"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }], animations: [
|
|
494
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.0", type: CpsMenuComponent, isStandalone: true, selector: "cps-menu", inputs: { header: "header", items: "items", withArrow: "withArrow", compressed: "compressed", focusOnShow: "focusOnShow", persistent: "persistent", containerClass: "containerClass", showTransitionOptions: "showTransitionOptions", hideTransitionOptions: "hideTransitionOptions" }, outputs: { menuShown: "menuShown", menuHidden: "menuHidden", beforeMenuHidden: "beforeMenuHidden", contentClicked: "contentClicked" }, usesOnChanges: true, ngImport: i0, template: "<div\n *ngIf=\"render\"\n class=\"cps-menu-container\"\n [ngClass]=\"{ 'cps-menu-no-arrow': !withArrow }\"\n [class]=\"containerClass\"\n (mousedown)=\"onOverlayClick($event)\"\n [@animation]=\"{\n value: overlayVisible ? 'open' : 'close',\n params: {\n showTransitionParams: showTransitionOptions,\n hideTransitionParams: hideTransitionOptions\n }\n }\"\n (@animation.start)=\"onAnimationStart($event)\"\n (@animation.done)=\"onAnimationEnd($event)\">\n <div (mousedown)=\"onContentClick()\">\n <ng-container *ngIf=\"items.length < 1\">\n <ng-content></ng-content>\n </ng-container>\n <div\n *ngIf=\"items.length > 0\"\n class=\"cps-menu-content\"\n [ngClass]=\"{ 'cps-menu-content-compressed': compressed }\">\n <div *ngIf=\"header && !compressed\" class=\"cps-menu-header\">\n {{ header }}\n </div>\n\n <ng-container *ngFor=\"let item of items; let i = index\">\n <a\n *ngIf=\"!item.url\"\n (click)=\"onItemClick($event, item)\"\n [ngClass]=\"itemsClasses[i]\">\n <ng-container\n *ngTemplateOutlet=\"\n itemTemplate;\n context: {\n item: item\n }\n \"></ng-container>\n </a>\n <a\n *ngIf=\"item.url && item.url.startsWith('/')\"\n (click)=\"onItemClick($event, item)\"\n [routerLink]=\"item.url\"\n [target]=\"item.target\"\n [ngClass]=\"itemsClasses[i]\">\n <ng-container\n *ngTemplateOutlet=\"\n itemTemplate;\n context: {\n item: item\n }\n \"></ng-container>\n </a>\n <a\n *ngIf=\"item.url && !item.url.startsWith('/')\"\n (click)=\"onItemClick($event, item)\"\n [href]=\"item.url\"\n [attr.target]=\"item.target\"\n [ngClass]=\"itemsClasses[i]\">\n <ng-container\n *ngTemplateOutlet=\"\n itemTemplate;\n context: {\n item: item\n }\n \"></ng-container>\n </a>\n </ng-container>\n </div>\n </div>\n</div>\n\n<ng-template #itemTemplate let-item=\"item\">\n <ng-container *ngIf=\"!item.loading; else spinnerMenuItem\">\n <div class=\"cps-menu-item-icon\" *ngIf=\"withIcons\">\n <cps-icon\n *ngIf=\"item.icon\"\n [icon]=\"item.icon\"\n [color]=\"item.disabled ? 'text-light' : 'text-dark'\"\n [size]=\"compressed ? 'small' : 'normal'\"></cps-icon>\n </div>\n <div class=\"cps-menu-item-content\">\n <span class=\"cps-menu-item-content-title\">{{ item.title }}</span>\n <span\n *ngIf=\"item.desc && !compressed\"\n class=\"cps-menu-item-content-desc\"\n >{{ item.desc }}</span\n >\n </div>\n </ng-container>\n</ng-template>\n\n<ng-template #spinnerMenuItem>\n <span class=\"cps-menu-item-spinner\">\n <cps-progress-circular\n [strokeWidth]=\"2\"\n [color]=\"compressed ? 'prepared' : 'calm'\"\n [diameter]=\"16\">\n </cps-progress-circular>\n </span>\n</ng-template>\n", styles: [".cps-menu-container{background:#fff;border:0 none;box-shadow:0 1px 3px #0000004d;position:absolute;margin-top:14px;top:0;left:0;font-family:Source Sans Pro,sans-serif}.cps-menu-container:not(.cps-menu-no-arrow):before{border-width:14px;margin-left:-14px;border:solid transparent;border-color:#fff0;border-bottom-color:var(--cps-color-line-light)}.cps-menu-container:not(.cps-menu-no-arrow):after,.cps-menu-container:not(.cps-menu-no-arrow):before{bottom:100%;left:var(--overlayArrowLeft, 12);content:\" \";height:0;width:0;position:absolute;pointer-events:none}.cps-menu-container .cps-menu-content{padding:.75rem}.cps-menu-container .cps-menu-content{font-family:Source Sans Pro,sans-serif;display:flex;flex-direction:column;-webkit-user-select:none;-ms-user-select:none;user-select:none}.cps-menu-container .cps-menu-content .cps-menu-header{display:flex;align-items:center;min-height:50px;padding-bottom:8px;font-weight:600;color:var(--cps-color-text-dark);cursor:default}.cps-menu-container .cps-menu-content .cps-menu-item{text-decoration:unset;display:flex;align-items:center;padding:8px 48px 8px 0;border-top:1px solid rgba(0,0,0,.1215686275);cursor:pointer;min-height:58px}.cps-menu-container .cps-menu-content .cps-menu-item .cps-menu-item-icon{width:48px;align-items:center;display:flex}.cps-menu-container .cps-menu-content .cps-menu-item .cps-menu-item-icon cps-icon{margin-left:8px}.cps-menu-container .cps-menu-content .cps-menu-item .cps-menu-item-content{display:flex;flex-direction:column}.cps-menu-container .cps-menu-content .cps-menu-item .cps-menu-item-content .cps-menu-item-content-title{font-weight:600;font-size:15px;line-height:150%;color:var(--cps-color-text-dark)}.cps-menu-container .cps-menu-content .cps-menu-item .cps-menu-item-content .cps-menu-item-content-desc{font-size:12px;line-height:150%;color:var(--cps-color-text-light)}.cps-menu-container .cps-menu-content .cps-menu-item .cps-menu-item-spinner{width:100%;display:flex;align-items:center;justify-content:center}.cps-menu-container .cps-menu-content .cps-menu-item.cps-menu-item-disabled{pointer-events:none}.cps-menu-container .cps-menu-content .cps-menu-item.cps-menu-item-disabled .cps-menu-item-content .cps-menu-item-content-title{color:var(--cps-color-text-light)}.cps-menu-container .cps-menu-content .cps-menu-item.cps-menu-item-disabled .cps-menu-item-content .cps-menu-item-content-desc{color:var(--cps-color-text-lightest)}.cps-menu-container .cps-menu-content .cps-menu-item:not(.cps-menu-item-disabled):hover{background:var(--cps-color-highlight-hover)}.cps-menu-container .cps-menu-content .cps-menu-item:not(.cps-menu-item-disabled):hover .cps-menu-item-content .cps-menu-item-content-title{color:var(--cps-color-calm)}.cps-menu-container .cps-menu-content .cps-menu-item:not(.cps-menu-item-disabled):hover .cps-menu-item-content .cps-menu-item-content-desc{color:var(--cps-color-text-mild)}.cps-menu-container .cps-menu-content .cps-menu-item:not(.cps-menu-item-disabled):not(.cps-menu-item-compressed):hover .cps-menu-item-icon cps-icon i{color:var(--cps-color-calm)!important}.cps-menu-container .cps-menu-content .cps-menu-item:not(.cps-menu-item-disabled):active{background:var(--cps-color-highlight-active)}.cps-menu-container .cps-menu-content .cps-menu-item.cps-menu-item-first{border-top:none}.cps-menu-container .cps-menu-content.cps-menu-content-compressed{padding:0}.cps-menu-container .cps-menu-content.cps-menu-content-compressed .cps-menu-item{padding:0 16px;min-height:40px}.cps-menu-container .cps-menu-content.cps-menu-content-compressed .cps-menu-item .cps-menu-item-icon{width:36px}.cps-menu-container .cps-menu-content.cps-menu-content-compressed .cps-menu-item .cps-menu-item-content .cps-menu-item-content-title{font-weight:500}.cps-menu-container .cps-menu-content.cps-menu-content-compressed .cps-menu-item.cps-menu-item-compressed.cps-menu-item-compressed-with-icons{padding:0 26px 0 16px}.cps-menu-container .cps-menu-content.cps-menu-content-compressed .cps-menu-item:not(.cps-menu-item-disabled) .cps-menu-item-icon cps-icon i{color:var(--cps-color-prepared)!important}.cps-menu-container .cps-menu-content.cps-menu-content-compressed .cps-menu-item:not(.cps-menu-item-disabled) .cps-menu-item-content .cps-menu-item-content-title{color:var(--cps-color-prepared)}.cps-menu-container:not(.cps-menu-no-arrow):after{border-width:12px;margin-left:-12px;border:solid transparent;border-color:#fff0;border-bottom-color:#fff}.cps-menu-container-flipped{margin-top:0;margin-bottom:10px}.cps-menu-container:not(.cps-menu-no-arrow):after{border-width:12px;margin-left:-12px}.cps-menu-container:not(.cps-menu-no-arrow):before{border-width:14px;margin-left:-14px}.cps-menu-container-flipped:not(.cps-menu-no-arrow):after,.cps-menu-container-flipped:not(.cps-menu-no-arrow):before{bottom:auto;top:100%}.cps-menu-container.cps-menu-container-flipped:not(.cps-menu-no-arrow):after{border-bottom-color:transparent}.cps-menu-container.cps-menu-container-flipped:not(.cps-menu-no-arrow):before{border-bottom-color:transparent}.cps-menu-no-arrow{margin-top:0;margin-bottom:0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: SharedModule }, { kind: "component", type: CpsIconComponent, selector: "cps-icon", inputs: ["icon", "size", "color"] }, { kind: "component", type: CpsProgressCircularComponent, selector: "cps-progress-circular", inputs: ["diameter", "strokeWidth", "color"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }], animations: [
|
|
495
495
|
trigger('animation', [
|
|
496
496
|
state('void', style({
|
|
497
497
|
transform: 'scaleY(0.8)',
|
|
@@ -535,7 +535,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImpor
|
|
|
535
535
|
transition('void => open', animate('{{showTransitionParams}}')),
|
|
536
536
|
transition('open => close', animate('{{hideTransitionParams}}'))
|
|
537
537
|
])
|
|
538
|
-
], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div\n *ngIf=\"render\"\n class=\"cps-menu-container\"\n [ngClass]=\"{ 'cps-menu-no-arrow': !withArrow }\"\n [class]=\"containerClass\"\n (mousedown)=\"onOverlayClick($event)\"\n [@animation]=\"{\n value: overlayVisible ? 'open' : 'close',\n params: {\n showTransitionParams: showTransitionOptions,\n hideTransitionParams: hideTransitionOptions\n }\n }\"\n (@animation.start)=\"onAnimationStart($event)\"\n (@animation.done)=\"onAnimationEnd($event)\">\n <div (mousedown)=\"onContentClick()\"
|
|
538
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div\n *ngIf=\"render\"\n class=\"cps-menu-container\"\n [ngClass]=\"{ 'cps-menu-no-arrow': !withArrow }\"\n [class]=\"containerClass\"\n (mousedown)=\"onOverlayClick($event)\"\n [@animation]=\"{\n value: overlayVisible ? 'open' : 'close',\n params: {\n showTransitionParams: showTransitionOptions,\n hideTransitionParams: hideTransitionOptions\n }\n }\"\n (@animation.start)=\"onAnimationStart($event)\"\n (@animation.done)=\"onAnimationEnd($event)\">\n <div (mousedown)=\"onContentClick()\">\n <ng-container *ngIf=\"items.length < 1\">\n <ng-content></ng-content>\n </ng-container>\n <div\n *ngIf=\"items.length > 0\"\n class=\"cps-menu-content\"\n [ngClass]=\"{ 'cps-menu-content-compressed': compressed }\">\n <div *ngIf=\"header && !compressed\" class=\"cps-menu-header\">\n {{ header }}\n </div>\n\n <ng-container *ngFor=\"let item of items; let i = index\">\n <a\n *ngIf=\"!item.url\"\n (click)=\"onItemClick($event, item)\"\n [ngClass]=\"itemsClasses[i]\">\n <ng-container\n *ngTemplateOutlet=\"\n itemTemplate;\n context: {\n item: item\n }\n \"></ng-container>\n </a>\n <a\n *ngIf=\"item.url && item.url.startsWith('/')\"\n (click)=\"onItemClick($event, item)\"\n [routerLink]=\"item.url\"\n [target]=\"item.target\"\n [ngClass]=\"itemsClasses[i]\">\n <ng-container\n *ngTemplateOutlet=\"\n itemTemplate;\n context: {\n item: item\n }\n \"></ng-container>\n </a>\n <a\n *ngIf=\"item.url && !item.url.startsWith('/')\"\n (click)=\"onItemClick($event, item)\"\n [href]=\"item.url\"\n [attr.target]=\"item.target\"\n [ngClass]=\"itemsClasses[i]\">\n <ng-container\n *ngTemplateOutlet=\"\n itemTemplate;\n context: {\n item: item\n }\n \"></ng-container>\n </a>\n </ng-container>\n </div>\n </div>\n</div>\n\n<ng-template #itemTemplate let-item=\"item\">\n <ng-container *ngIf=\"!item.loading; else spinnerMenuItem\">\n <div class=\"cps-menu-item-icon\" *ngIf=\"withIcons\">\n <cps-icon\n *ngIf=\"item.icon\"\n [icon]=\"item.icon\"\n [color]=\"item.disabled ? 'text-light' : 'text-dark'\"\n [size]=\"compressed ? 'small' : 'normal'\"></cps-icon>\n </div>\n <div class=\"cps-menu-item-content\">\n <span class=\"cps-menu-item-content-title\">{{ item.title }}</span>\n <span\n *ngIf=\"item.desc && !compressed\"\n class=\"cps-menu-item-content-desc\"\n >{{ item.desc }}</span\n >\n </div>\n </ng-container>\n</ng-template>\n\n<ng-template #spinnerMenuItem>\n <span class=\"cps-menu-item-spinner\">\n <cps-progress-circular\n [strokeWidth]=\"2\"\n [color]=\"compressed ? 'prepared' : 'calm'\"\n [diameter]=\"16\">\n </cps-progress-circular>\n </span>\n</ng-template>\n", styles: [".cps-menu-container{background:#fff;border:0 none;box-shadow:0 1px 3px #0000004d;position:absolute;margin-top:14px;top:0;left:0;font-family:Source Sans Pro,sans-serif}.cps-menu-container:not(.cps-menu-no-arrow):before{border-width:14px;margin-left:-14px;border:solid transparent;border-color:#fff0;border-bottom-color:var(--cps-color-line-light)}.cps-menu-container:not(.cps-menu-no-arrow):after,.cps-menu-container:not(.cps-menu-no-arrow):before{bottom:100%;left:var(--overlayArrowLeft, 12);content:\" \";height:0;width:0;position:absolute;pointer-events:none}.cps-menu-container .cps-menu-content{padding:.75rem}.cps-menu-container .cps-menu-content{font-family:Source Sans Pro,sans-serif;display:flex;flex-direction:column;-webkit-user-select:none;-ms-user-select:none;user-select:none}.cps-menu-container .cps-menu-content .cps-menu-header{display:flex;align-items:center;min-height:50px;padding-bottom:8px;font-weight:600;color:var(--cps-color-text-dark);cursor:default}.cps-menu-container .cps-menu-content .cps-menu-item{text-decoration:unset;display:flex;align-items:center;padding:8px 48px 8px 0;border-top:1px solid rgba(0,0,0,.1215686275);cursor:pointer;min-height:58px}.cps-menu-container .cps-menu-content .cps-menu-item .cps-menu-item-icon{width:48px;align-items:center;display:flex}.cps-menu-container .cps-menu-content .cps-menu-item .cps-menu-item-icon cps-icon{margin-left:8px}.cps-menu-container .cps-menu-content .cps-menu-item .cps-menu-item-content{display:flex;flex-direction:column}.cps-menu-container .cps-menu-content .cps-menu-item .cps-menu-item-content .cps-menu-item-content-title{font-weight:600;font-size:15px;line-height:150%;color:var(--cps-color-text-dark)}.cps-menu-container .cps-menu-content .cps-menu-item .cps-menu-item-content .cps-menu-item-content-desc{font-size:12px;line-height:150%;color:var(--cps-color-text-light)}.cps-menu-container .cps-menu-content .cps-menu-item .cps-menu-item-spinner{width:100%;display:flex;align-items:center;justify-content:center}.cps-menu-container .cps-menu-content .cps-menu-item.cps-menu-item-disabled{pointer-events:none}.cps-menu-container .cps-menu-content .cps-menu-item.cps-menu-item-disabled .cps-menu-item-content .cps-menu-item-content-title{color:var(--cps-color-text-light)}.cps-menu-container .cps-menu-content .cps-menu-item.cps-menu-item-disabled .cps-menu-item-content .cps-menu-item-content-desc{color:var(--cps-color-text-lightest)}.cps-menu-container .cps-menu-content .cps-menu-item:not(.cps-menu-item-disabled):hover{background:var(--cps-color-highlight-hover)}.cps-menu-container .cps-menu-content .cps-menu-item:not(.cps-menu-item-disabled):hover .cps-menu-item-content .cps-menu-item-content-title{color:var(--cps-color-calm)}.cps-menu-container .cps-menu-content .cps-menu-item:not(.cps-menu-item-disabled):hover .cps-menu-item-content .cps-menu-item-content-desc{color:var(--cps-color-text-mild)}.cps-menu-container .cps-menu-content .cps-menu-item:not(.cps-menu-item-disabled):not(.cps-menu-item-compressed):hover .cps-menu-item-icon cps-icon i{color:var(--cps-color-calm)!important}.cps-menu-container .cps-menu-content .cps-menu-item:not(.cps-menu-item-disabled):active{background:var(--cps-color-highlight-active)}.cps-menu-container .cps-menu-content .cps-menu-item.cps-menu-item-first{border-top:none}.cps-menu-container .cps-menu-content.cps-menu-content-compressed{padding:0}.cps-menu-container .cps-menu-content.cps-menu-content-compressed .cps-menu-item{padding:0 16px;min-height:40px}.cps-menu-container .cps-menu-content.cps-menu-content-compressed .cps-menu-item .cps-menu-item-icon{width:36px}.cps-menu-container .cps-menu-content.cps-menu-content-compressed .cps-menu-item .cps-menu-item-content .cps-menu-item-content-title{font-weight:500}.cps-menu-container .cps-menu-content.cps-menu-content-compressed .cps-menu-item.cps-menu-item-compressed.cps-menu-item-compressed-with-icons{padding:0 26px 0 16px}.cps-menu-container .cps-menu-content.cps-menu-content-compressed .cps-menu-item:not(.cps-menu-item-disabled) .cps-menu-item-icon cps-icon i{color:var(--cps-color-prepared)!important}.cps-menu-container .cps-menu-content.cps-menu-content-compressed .cps-menu-item:not(.cps-menu-item-disabled) .cps-menu-item-content .cps-menu-item-content-title{color:var(--cps-color-prepared)}.cps-menu-container:not(.cps-menu-no-arrow):after{border-width:12px;margin-left:-12px;border:solid transparent;border-color:#fff0;border-bottom-color:#fff}.cps-menu-container-flipped{margin-top:0;margin-bottom:10px}.cps-menu-container:not(.cps-menu-no-arrow):after{border-width:12px;margin-left:-12px}.cps-menu-container:not(.cps-menu-no-arrow):before{border-width:14px;margin-left:-14px}.cps-menu-container-flipped:not(.cps-menu-no-arrow):after,.cps-menu-container-flipped:not(.cps-menu-no-arrow):before{bottom:auto;top:100%}.cps-menu-container.cps-menu-container-flipped:not(.cps-menu-no-arrow):after{border-bottom-color:transparent}.cps-menu-container.cps-menu-container-flipped:not(.cps-menu-no-arrow):before{border-bottom-color:transparent}.cps-menu-no-arrow{margin-top:0;margin-bottom:0}\n"] }]
|
|
539
539
|
}], ctorParameters: () => [{ type: Document, decorators: [{
|
|
540
540
|
type: Inject,
|
|
541
541
|
args: [DOCUMENT]
|
|
@@ -569,4 +569,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImpor
|
|
|
569
569
|
}], contentClicked: [{
|
|
570
570
|
type: Output
|
|
571
571
|
}] } });
|
|
572
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3BzLW1lbnUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3BzLXVpLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvY3BzLW1lbnUvY3BzLW1lbnUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3BzLXVpLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvY3BzLW1lbnUvY3BzLW1lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLE9BQU8sRUFFUCxLQUFLLEVBQ0wsS0FBSyxFQUNMLFVBQVUsRUFDVixPQUFPLEVBQ1IsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBRUwsdUJBQXVCLEVBRXZCLFNBQVMsRUFFVCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFJTCxNQUFNLEVBQ04sV0FBVyxFQUdYLGlCQUFpQixFQUVsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQWlDLFlBQVksRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMxRSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFNUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbEUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sMERBQTBELENBQUM7Ozs7O0FBb0J4Rzs7O0dBR0c7QUFDSCxNQUFNLENBQU4sSUFBWSxpQkFTWDtBQVRELFdBQVksaUJBQWlCO0lBQzNCLHNDQUFpQixDQUFBO0lBQ2pCLHNDQUFp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c0JBQTdCLEtBQUs7Z0JBTUcscUJBQXFCO3NCQUE3QixLQUFLO2dCQU1JLFNBQVM7c0JBQWxCLE1BQU07Z0JBT0csVUFBVTtzQkFBbkIsTUFBTTtnQkFPRyxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBTUcsY0FBYztzQkFBdkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGFuaW1hdGUsXG4gIEFuaW1hdGlvbkV2ZW50LFxuICBzdGF0ZSxcbiAgc3R5bGUsXG4gIHRyYW5zaXRpb24sXG4gIHRyaWdnZXJcbn0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUsIERPQ1VNRU5ULCBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgTmdab25lLFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBQTEFURk9STV9JRCxcbiAgUmVuZGVyZXIyLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgVmlld1JlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE92ZXJsYXlTZXJ2aWNlLCBQcmltZU5HQ29uZmlnLCBTaGFyZWRNb2R1bGUgfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQgeyBDb25uZWN0ZWRPdmVybGF5U2Nyb2xsSGFuZGxlciwgRG9tSGFuZGxlciB9IGZyb20gJ3ByaW1lbmcvZG9tJztcbmltcG9ydCB7IFpJbmRleFV0aWxzIH0gZnJvbSAncHJpbWVuZy91dGlscyc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENwc0ljb25Db21wb25lbnQgfSBmcm9tICcuLi9jcHMtaWNvbi9jcHMtaWNvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ3BzUHJvZ3Jlc3NDaXJjdWxhckNvbXBvbmVudCB9IGZyb20gJy4uL2Nwcy1wcm9ncmVzcy1jaXJjdWxhci9jcHMtcHJvZ3Jlc3MtY2lyY3VsYXIuY29tcG9uZW50JztcblxudHlwZSBOdWxsYWJsZTxUID0gdm9pZD4gPSBUIHwgbnVsbCB8IHVuZGVmaW5lZDtcbnR5cGUgVm9pZExpc3RlbmVyID0gKCkgPT4gdm9pZCB8IG51bGwgfCB1bmRlZmluZWQ7XG5cbi8qKlxuICogQ3BzTWVudUl0ZW0gaXMgdXNlZCB0byBkZWZpbmUgdGhlIGl0ZW1zIG9mIHRoZSBDcHNNZW51Q29tcG9uZW50LlxuICogQGdyb3VwIFR5cGVzXG4gKi9cbmV4cG9ydCB0eXBlIENwc01lbnVJdGVtID0ge1xuICB0aXRsZT86IHN0cmluZztcbiAgYWN0aW9uPzogKGV2ZW50PzogYW55KSA9PiB2b2lkO1xuICBpY29uPzogc3RyaW5nO1xuICBkZXNjPzogc3RyaW5nO1xuICB1cmw/OiBzdHJpbmc7XG4gIHRhcmdldD86IHN0cmluZztcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICBsb2FkaW5nPzogYm9vbGVhbjtcbn07XG5cbi8qKlxuICogQW4gZW51bWVyYXRpb24gb2YgdGhlIGRpZmZlcmVudCByZWFzb25zIGZvciBoaWRpbmcgdGhlIG1lbnUuXG4gKiBAZ3JvdXAgRW51bXNcbiAqL1xuZXhwb3J0IGVudW0gQ3BzTWVudUhpZGVSZWFzb24ge1xuICBGT1JDRUQgPSAnZm9yY2VkJyxcbiAgVE9HR0xFID0gJ3RvZ2dsZScsXG4gIENMSUNLX0lURU0gPSAnY2xpY2staXRlbScsXG4gIENMSUNLX09VVFNJREUgPSAnY2xpY2stb3V0c2lkZScsXG4gIEtFWURPV05fRVNDQVBFID0gJ2tleWRvd24tZXNjYXBlJyxcbiAgU0NST0xMID0gJ3Njcm9sbCcsXG4gIFJFU0laRSA9ICdyZXNpemUnLFxuICBUQVJHRVRfTk9UX0NPTk5FQ1RFRCA9ICd0YXJnZXQtbm90LWNvbm5lY3RlZCdcbn1cblxuLyoqXG4gKiBDcHNNZW51QXR0YWNoUG9zaXRpb24gaXMgdXNlZCB0byBkZWZpbmUgYXR0YWNobWVudCBwb3NpdGlvbiBvZiB0aGUgQ3BzTWVudUNvbXBvbmVudC5cbiAqIEBncm91cCBUeXBlc1xuICovXG5leHBvcnQgdHlwZSBDcHNNZW51QXR0YWNoUG9zaXRpb24gPSAndHInIHwgJ2JyJyB8ICd0bCcgfCAnYmwnIHwgJ2RlZmF1bHQnO1xuXG4vKipcbiAqIENwc01lbnVDb21wb25lbnQgaXMgYSBwb3B1cCBlbGVtZW50LCB0aGF0IGNvbnRhaW5zIG1lbnUgaXRlbXMgb3IgYXJiaXRyYXJ5IGNvbnRlbnQuXG4gKiBAZ3JvdXAgQ29tcG9uZW50c1xuICovXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBTaGFyZWRNb2R1bGUsXG4gICAgQ3BzSWNvbkNvbXBvbmVudCxcbiAgICBDcHNQcm9ncmVzc0NpcmN1bGFyQ29tcG9uZW50LFxuICAgIFJvdXRlck1vZHVsZVxuICBdLFxuICBzZWxlY3RvcjogJ2Nwcy1tZW51JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Nwcy1tZW51LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY3BzLW1lbnUuY29tcG9uZW50LnNjc3MnXSxcbiAgYW5pbWF0aW9uczogW1xuICAgIHRyaWdnZXIoJ2FuaW1hdGlvbicsIFtcbiAgICAgIHN0YXRlKFxuICAgICAgICAndm9pZCcsXG4gICAgICAgIHN0eWxlKHtcbiAgICAgICAgICB0cmFuc2Zvcm06ICdzY2FsZVkoMC44KScsXG4gICAgICAgICAgb3BhY2l0eTogMFxuICAgICAgICB9KVxuICAgICAgKSxcbiAgICAgIHN0YXRlKFxuICAgICAgICAnY2xvc2UnLFxuICAgICAgICBzdHlsZSh7XG4gICAgICAgICAgdHJhbnNmb3JtOiAnc2NhbGVZKDAuOCknLFxuICAgICAgICAgIG9wYWNpdHk6IDBcbiAgICAgICAgfSlcbiAgICAgICksXG4gICAgICBzdGF0ZShcbiAgICAgICAgJ29wZW4nLFxuICAgICAgICBzdHlsZSh7XG4gICAgICAgICAgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgwKScsXG4gICAgICAgICAgb3BhY2l0eTogMVxuICAgICAgICB9KVxuICAgICAgKSxcbiAgICAgIHRyYW5zaXRpb24oJ3ZvaWQgPT4gb3BlbicsIGFuaW1hdGUoJ3t7c2hvd1RyYW5zaXRpb25QYXJhbXN9fScpKSxcbiAgICAgIHRyYW5zaXRpb24oJ29wZW4gPT4gY2xvc2UnLCBhbmltYXRlKCd7e2hpZGVUcmFuc2l0aW9uUGFyYW1zfX0nKSlcbiAgICBdKVxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBDcHNNZW51Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMge1xuICAvKipcbiAgICogSGVhZGVyIHRpdGxlIG9mIHRoZSBtZW51LlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIGhlYWRlciA9ICcnO1xuXG4gIC8qKlxuICAgKiBBbiBhcnJheSBvZiBtZW51IGl0ZW1zLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIGl0ZW1zOiBDcHNNZW51SXRlbVtdID0gW107XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgd2hldGhlciB0byBpbmNsdWRlIHRvcCBwb2ludGluZyBhcnJvdyBvbiB0aGUgbWVudS5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSB3aXRoQXJyb3cgPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBNZW51IHdpdGggcHJlcGFyZWQtY29sb3JlZCBpdGVtcywgd2l0aG91dCBoZWFkZXIgYW5kIGl0ZW1zIGRlc2NyaXB0aW9uLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIGNvbXByZXNzZWQgPSBmYWxzZTtcblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBtZW51IHNob3VsZCBzaG93IG9uIHRhcmdldCBlbGVtZW50IGZvY3VzLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIGZvY3VzT25TaG93ID0gdHJ1ZTtcblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBtZW51IHNob3VsZCBiZSBwZXJzaXN0ZW50LlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIHBlcnNpc3RlbnQgPSBmYWxzZTtcblxuICAvKipcbiAgICogU3R5bGluZyBjbGFzcyBvZiB0aGUgbWVudSBjb250YWluZXIuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgY29udGFpbmVyQ2xhc3MgPSAnJztcblxuICAvKipcbiAgICogVHJhbnNpdGlvbiBvcHRpb25zIG9mIHRoZSBzaG93IGFuaW1hdGlvbi5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBzaG93VHJhbnNpdGlvbk9wdGlvbnMgPSAnLjEycyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKSc7XG5cbiAgLyoqXG4gICAqIFRyYW5zaXRpb24gb3B0aW9ucyBvZiB0aGUgaGlkZSBhbmltYXRpb24uXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgaGlkZVRyYW5zaXRpb25PcHRpb25zID0gJy4xMnMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSknO1xuXG4gIC8qKlxuICAgKiBDYWxsYmFjayB0byBpbnZva2Ugd2hlbiBtZW51IGlzIHNob3duLlxuICAgKiBAZ3JvdXAgRW1pdHNcbiAgICovXG4gIEBPdXRwdXQoKSBtZW51U2hvd24gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgLyoqXG4gICAqIENhbGxiYWNrIHRvIGludm9rZSB3aGVuIG1lbnUgaXMgaGlkZGVuLlxuICAgKiBAcGFyYW0ge0Nwc01lbnVIaWRlUmVhc29ufSBDcHNNZW51SGlkZVJlYXNvbiAtIHJlYXNvbiBmb3IgaGlkaW5nIHRoZSBtZW51LlxuICAgKiBAZ3JvdXAgRW1pdHNcbiAgICovXG4gIEBPdXRwdXQoKSBtZW51SGlkZGVuID0gbmV3IEV2ZW50RW1pdHRlcjxDcHNNZW51SGlkZVJlYXNvbj4oKTtcblxuICAvKipcbiAgICogQ2FsbGJhY2sgdG8gaW52b2tlIGJlZm9yZSBtZW51IGlzIGhpZGRlbi5cbiAgICogQHBhcmFtIHtDcHNNZW51SGlkZVJlYXNvbn0gQ3BzTWVudUhpZGVSZWFzb24gLSByZWFzb24gZm9yIGhpZGluZyB0aGUgbWVudS5cbiAgICogQGdyb3VwIEVtaXRzXG4gICAqL1xuICBAT3V0cHV0KCkgYmVmb3JlTWVudUhpZGRlbiA9IG5ldyBFdmVudEVtaXR0ZXI8Q3BzTWVudUhpZGVSZWFzb24+KCk7XG5cbiAgLyoqXG4gICAqIENhbGxiYWNrIHRvIGludm9rZSB3aGVuIGNvbnRlbnQgaXMgY2xpY2tlZC5cbiAgICogQGdyb3VwIEVtaXRzXG4gICAqL1xuICBAT3V0cHV0KCkgY29udGVudENsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgd2l0aEljb25zID0gdHJ1ZTtcbiAgYXV0b1pJbmRleCA9IHRydWU7XG4gIGJhc2VaSW5kZXggPSAwO1xuICBkaXNtaXNzYWJsZSA9IHRydWU7XG4gIGNvbnRhaW5lcjogTnVsbGFibGU8SFRNTERpdkVsZW1lbnQ+O1xuICBvdmVybGF5VmlzaWJsZSA9IGZhbHNlO1xuICByZW5kZXIgPSBmYWxzZTtcbiAgaXNPdmVybGF5QW5pbWF0aW9uSW5Qcm9ncmVzcyA9IGZhbHNlO1xuICBzZWxmQ2xpY2sgPSBmYWxzZTtcbiAgdGFyZ2V0OiBhbnk7XG4gIHNjcm9sbEhhbmRsZXI6IE51bGxhYmxlPENvbm5lY3RlZE92ZXJsYXlTY3JvbGxIYW5kbGVyPjtcbiAgcG9zaXRpb246IENwc01lbnVBdHRhY2hQb3NpdGlvbiA9ICdkZWZhdWx0JztcblxuICBkb2N1bWVudFJlc2l6ZUxpc3RlbmVyITogVm9pZExpc3RlbmVyIHwgbnVsbDtcbiAgb3ZlcmxheUV2ZW50TGlzdGVuZXI6IE51bGxhYmxlPChldmVudD86IGFueSkgPT4gdm9pZD47XG4gIGRvY3VtZW50Q2xpY2tMaXN0ZW5lciE6IFZvaWRMaXN0ZW5lciB8IG51bGw7XG4gIGRvY3VtZW50S2V5ZG93bkxpc3RlbmVyITogVm9pZExpc3RlbmVyIHwgbnVsbDtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10eXBlc1xuICBkZXN0cm95Q2FsbGJhY2s6IE51bGxhYmxlPEZ1bmN0aW9uPjtcbiAgb3ZlcmxheVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgdW5kZWZpbmVkO1xuXG4gIHJlc2l6ZU9ic2VydmVyOiBSZXNpemVPYnNlcnZlcjtcblxuICBpdGVtc0NsYXNzZXM6IHN0cmluZ1tdID0gW107XG5cbiAgaGlkZVJlYXNvbjogQ3BzTWVudUhpZGVSZWFzb24gfCB1bmRlZmluZWQ7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVzZWxlc3MtY29uc3RydWN0b3JcbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBkb2N1bWVudDogRG9jdW1lbnQsXG4gICAgQEluamVjdChQTEFURk9STV9JRCkgcHJpdmF0ZSBwbGF0Zm9ybUlkOiBhbnksXG4gICAgcHVibGljIGVsOiBFbGVtZW50UmVmLFxuICAgIHB1YmxpYyByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHB1YmxpYyBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSB6b25lOiBOZ1pvbmUsXG4gICAgcHVibGljIGNvbmZpZzogUHJpbWVOR0NvbmZpZyxcbiAgICBwdWJsaWMgb3ZlcmxheVNlcnZpY2U6IE92ZXJsYXlTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMucmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoKGVudHJpZXMpID0+IHtcbiAgICAgIGlmICh0aGlzLnRhcmdldCkge1xuICAgICAgICBlbnRyaWVzLmZvckVhY2goKGVudHJ5KSA9PiB7XG4gICAgICAgICAgaWYgKGVudHJ5KSB0aGlzLmFsaWduKCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzLml0ZW1zIHx8IGNoYW5nZXMuY29tcHJlc3NlZCkge1xuICAgICAgaWYgKHRoaXMuY29tcHJlc3NlZCkgdGhpcy53aXRoSWNvbnMgPSB0aGlzLml0ZW1zLnNvbWUoKGl0bSkgPT4gaXRtLmljb24pO1xuICAgICAgdGhpcy5fc2V0SXRlbXNDbGFzc2VzKCk7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5lbC5uYXRpdmVFbGVtZW50LCAnZGlzcGxheScsICdub25lJyk7XG4gIH1cblxuICBwcml2YXRlIF9zZXRJdGVtc0NsYXNzZXMoKSB7XG4gICAgaWYgKHRoaXMuaXRlbXMubGVuZ3RoIDwgMSkgcmV0dXJuO1xuXG4gICAgdGhpcy5pdGVtc0NsYXNzZXMgPSB0aGlzLml0ZW1zLm1hcCgoaXRlbSwgaW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IHJlcyA9IFsnY3BzLW1lbnUtaXRlbSddO1xuICAgICAgaWYgKGl0ZW0uZGlzYWJsZWQgfHwgaXRlbS5sb2FkaW5nKSByZXMucHVzaCgnY3BzLW1lbnUtaXRlbS1kaXNhYmxlZCcpO1xuICAgICAgaWYgKGluZGV4ID09PSAwKSByZXMucHVzaCgnY3BzLW1lbnUtaXRlbS1maXJzdCcpO1xuICAgICAgaWYgKHRoaXMuY29tcHJlc3NlZCkgcmVzLnB1c2goJ2Nwcy1tZW51LWl0ZW0tY29tcHJlc3NlZCcpO1xuICAgICAgaWYgKHRoaXMuY29tcHJlc3NlZCAmJiB0aGlzLndpdGhJY29ucylcbiAgICAgICAgcmVzLnB1c2goJ2Nwcy1tZW51LWl0ZW0tY29tcHJlc3NlZC13aXRoLWljb25zJyk7XG5cbiAgICAgIHJldHVybiByZXMuam9pbignICcpO1xuICAgIH0pO1xuICB9XG5cbiAgdG9nZ2xlKGV2ZW50PzogYW55LCB0YXJnZXQ/OiBhbnksIHBvcz86IENwc01lbnVBdHRhY2hQb3NpdGlvbikge1xuICAgIGlmICh0aGlzLmlzT3ZlcmxheUFuaW1hdGlvbkluUHJvZ3Jlc3MpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vdmVybGF5VmlzaWJsZSkge1xuICAgICAgaWYgKHRoaXMuaGFzVGFyZ2V0Q2hhbmdlZChldmVudCwgdGFyZ2V0KSkge1xuICAgICAgICB0aGlzLmRlc3Ryb3lDYWxsYmFjayA9ICgpID0+IHtcbiAgICAgICAgICB0aGlzLnNob3cobnVsbCwgdGFyZ2V0IHx8IGV2ZW50Py5jdXJyZW50VGFyZ2V0IHx8IGV2ZW50Py50YXJnZXQsIHBvcyk7XG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIHRoaXMuaGlkZShDcHNNZW51SGlkZVJlYXNvbi5UT0dHTEUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNob3coZXZlbnQsIHRhcmdldCwgcG9zKTtcbiAgICB9XG4gIH1cblxuICBzaG93KGV2ZW50PzogYW55LCB0YXJnZXQ/OiBhbnksIHBvcz86IENwc01lbnVBdHRhY2hQb3NpdGlvbikge1xuICAgIHRhcmdldCAmJiBldmVudCAmJiBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBpZiAodGhpcy5pc092ZXJsYXlBbmltYXRpb25JblByb2dyZXNzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy50YXJnZXQgPSB0YXJnZXQgfHwgZXZlbnQ/LmN1cnJlbnRUYXJnZXQgfHwgZXZlbnQ/LnRhcmdldDtcbiAgICBpZiAodGhpcy50YXJnZXQpIHRoaXMucmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLnRhcmdldCk7XG4gICAgdGhpcy5vdmVybGF5VmlzaWJsZSA9IHRydWU7XG4gICAgdGhpcy5yZW5kZXIgPSB0cnVlO1xuICAgIHRoaXMucG9zaXRpb24gPSBwb3MgfHwgJ2RlZmF1bHQnO1xuICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBoaWRlKHJlYXNvbj86IENwc01lbnVIaWRlUmVhc29uKSB7XG4gICAgaWYgKCF0aGlzLm92ZXJsYXlWaXNpYmxlKSByZXR1cm47XG4gICAgdGhpcy5oaWRlUmVhc29uID0gcmVhc29uID8/IENwc01lbnVIaWRlUmVhc29uLkZPUkNFRDtcbiAgICB0aGlzLm92ZXJsYXlWaXNpYmxlID0gZmFsc2U7XG4gICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIGlzVmlzaWJsZSgpIHtcbiAgICByZXR1cm4gdGhpcy5vdmVybGF5VmlzaWJsZTtcbiAgfVxuXG4gIG9uSXRlbUNsaWNrKGV2ZW50OiBhbnksIGl0ZW06IENwc01lbnVJdGVtKSB7XG4gICAgaWYgKGl0ZW0uZGlzYWJsZWQpIHJldHVybjtcbiAgICBpZiAoaXRlbS5hY3Rpb24pIHtcbiAgICAgIGl0ZW0uYWN0aW9uKHtcbiAgICAgICAgb3JpZ2luYWxFdmVudDogZXZlbnQsXG4gICAgICAgIGl0ZW1cbiAgICAgIH0pO1xuICAgIH1cbiAgICB0aGlzLmhpZGUoQ3BzTWVudUhpZGVSZWFzb24uQ0xJQ0tfSVRFTSk7XG4gIH1cblxuICBiaW5kRG9jdW1lbnRLZXlkb3duTGlzdGVuZXIoKSB7XG4gICAgaWYgKERvbUhhbmRsZXIuaXNUb3VjaERldmljZSgpKSByZXR1cm47XG4gICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgIGlmICghdGhpcy5kb2N1bWVudEtleWRvd25MaXN0ZW5lciAmJiB0aGlzLmRpc21pc3NhYmxlKSB7XG4gICAgICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgY29uc3QgZG9jdW1lbnRUYXJnZXQ6IGFueSA9IHRoaXMuZWxcbiAgICAgICAgICAgID8gdGhpcy5lbC5uYXRpdmVFbGVtZW50Lm93bmVyRG9jdW1lbnRcbiAgICAgICAgICAgIDogdGhpcy5kb2N1bWVudDtcblxuICAgICAgICAgIHRoaXMuZG9jdW1lbnRLZXlkb3duTGlzdGVuZXIgPSB0aGlzLnJlbmRlcmVyLmxpc3RlbihcbiAgICAgICAgICAgIGRvY3VtZW50VGFyZ2V0LFxuICAgICAgICAgICAgJ2tleWRvd24nLFxuICAgICAgICAgICAgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgIC8vIGVzY2FwZVxuICAgICAgICAgICAgICBpZiAoZXZlbnQua2V5Q29kZSA9PT0gMjcpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnpvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm92ZXJsYXlWaXNpYmxlKVxuICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGUoQ3BzTWVudUhpZGVSZWFzb24uS0VZRE9XTl9FU0NBUEUpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdW5iaW5kRG9jdW1lbnRLZXlkb3duTGlzdGVuZXIoKSB7XG4gICAgaWYgKHRoaXMuZG9jdW1lbnRLZXlkb3duTGlzdGVuZXIpIHtcbiAgICAgIHRoaXMuZG9jdW1lbnRLZXlkb3duTGlzdGVuZXIoKTtcbiAgICAgIHRoaXMuZG9jdW1lbnRLZXlkb3duTGlzdGVuZXIgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIGJpbmREb2N1bWVudENsaWNrTGlzdGVuZXIoKSB7XG4gICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgIGlmICghdGhpcy5kb2N1bWVudENsaWNrTGlzdGVuZXIgJiYgdGhpcy5kaXNtaXNzYWJsZSkge1xuICAgICAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGRvY3VtZW50RXZlbnQgPSBEb21IYW5kbGVyLmlzSU9TKCkgPyAndG91Y2hzdGFydCcgOiAnbW91c2Vkb3duJztcbiAgICAgICAgICBjb25zdCBkb2N1bWVudFRhcmdldDogYW55ID0gdGhpcy5lbFxuICAgICAgICAgICAgPyB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQub3duZXJEb2N1bWVudFxuICAgICAgICAgICAgOiB0aGlzLmRvY3VtZW50O1xuXG4gICAgICAgICAgdGhpcy5kb2N1bWVudENsaWNrTGlzdGVuZXIgPSB0aGlzLnJlbmRlcmVyLmxpc3RlbihcbiAgICAgICAgICAgIGRvY3VtZW50VGFyZ2V0LFxuICAgICAgICAgICAgZG9jdW1lbnRFdmVudCxcbiAgICAgICAgICAgIChldmVudCkgPT4ge1xuICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgIXRoaXMucGVyc2lzdGVudCAmJlxuICAgICAgICAgICAgICAgICF0aGlzLmNvbnRhaW5lcj8uY29udGFpbnMoZXZlbnQudGFyZ2V0KSAmJlxuICAgICAgICAgICAgICAgIHRoaXMudGFyZ2V0ICE9PSBldmVudC50YXJnZXQgJiZcbiAgICAgICAgICAgICAgICAhdGhpcy50YXJnZXQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSAmJlxuICAgICAgICAgICAgICAgICF0aGlzLnNlbGZDbGlja1xuICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICB0aGlzLnpvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuaGlkZShDcHNNZW51SGlkZVJlYXNvbi5DTElDS19PVVRTSURFKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHRoaXMuc2VsZkNsaWNrID0gZmFsc2U7XG4gICAgICAgICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdW5iaW5kRG9jdW1lbnRDbGlja0xpc3RlbmVyKCkge1xuICAgIGlmICh0aGlzLmRvY3VtZW50Q2xpY2tMaXN0ZW5lcikge1xuICAgICAgdGhpcy5kb2N1bWVudENsaWNrTGlzdGVuZXIoKTtcbiAgICAgIHRoaXMuZG9jdW1lbnRDbGlja0xpc3RlbmVyID0gbnVsbDtcbiAgICAgIHRoaXMuc2VsZkNsaWNrID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgb25PdmVybGF5Q2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICB0aGlzLm92ZXJsYXlTZXJ2aWNlLmFkZCh7XG4gICAgICBvcmlnaW5hbEV2ZW50OiBldmVudCxcbiAgICAgIHRhcmdldDogdGhpcy5lbC5uYXRpdmVFbGVtZW50XG4gICAgfSk7XG5cbiAgICB0aGlzLnNlbGZDbGljayA9IHRydWU7XG4gIH1cblxuICBvbkNvbnRlbnRDbGljaygpIHtcbiAgICB0aGlzLnNlbGZDbGljayA9IHRydWU7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmNvbnRlbnRDbGlja2VkLmVtaXQoKTtcbiAgICB9LCAxMDApO1xuICB9XG5cbiAgaGFzVGFyZ2V0Q2hhbmdlZChldmVudD86IGFueSwgdGFyZ2V0PzogYW55KSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMudGFyZ2V0ICYmXG4gICAgICB0aGlzLnRhcmdldCAhPT0gKHRhcmdldCB8fCBldmVudD8uY3VycmVudFRhcmdldCB8fCBldmVudD8udGFyZ2V0KVxuICAgICk7XG4gIH1cblxuICBhcHBlbmRDb250YWluZXIoKSB7XG4gICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZCh0aGlzLmRvY3VtZW50LmJvZHksIHRoaXMuY29udGFpbmVyKTtcbiAgfVxuXG4gIHJlc3RvcmVBcHBlbmQoKSB7XG4gICAgaWYgKHRoaXMuY29udGFpbmVyKSB7XG4gICAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgdGhpcy5jb250YWluZXIpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3NldFBvc2l0aW9uKGVsZW1lbnQ6IGFueSwgdGFyZ2V0OiBhbnkpIHtcbiAgICBjb25zdCBnZXRQb3MgPSAoKSA9PiB7XG4gICAgICBjb25zdCB0YXJnZXRPZmZzZXQgPSBEb21IYW5kbGVyLmdldE9mZnNldCh0YXJnZXQpO1xuICAgICAgc3dpdGNoICh0aGlzLnBvc2l0aW9uKSB7XG4gICAgICAgIGNhc2UgJ2JsJzpcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdG9wOiBNYXRoLm1heChcbiAgICAgICAgICAgICAgdGFyZ2V0T2Zmc2V0LnRvcCArIHRhcmdldC5vZmZzZXRIZWlnaHQgLSBlbGVtZW50Lm9mZnNldEhlaWdodCxcbiAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGxlZnQ6IE1hdGgubWF4KDAsIHRhcmdldE9mZnNldC5sZWZ0IC0gZWxlbWVudC5vZmZzZXRXaWR0aClcbiAgICAgICAgICB9O1xuICAgICAgICBjYXNlICdicic6XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRvcDogTWF0aC5tYXgoXG4gICAgICAgICAgICAgIHRhcmdldE9mZnNldC50b3AgKyB0YXJnZXQub2Zmc2V0SGVpZ2h0IC0gZWxlbWVudC5vZmZzZXRIZWlnaHQsXG4gICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBsZWZ0OiBNYXRoLm1pbihcbiAgICAgICAgICAgICAgdGFyZ2V0T2Zmc2V0LmxlZnQgKyB0YXJnZXQub2Zmc2V0V2lkdGgsXG4gICAgICAgICAgICAgIHdpbmRvdy5pbm5lcldpZHRoIC0gZWxlbWVudC5vZmZzZXRXaWR0aFxuICAgICAgICAgICAgKVxuICAgICAgICAgIH07XG4gICAgICAgIGNhc2UgJ3RsJzpcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdG9wOiBNYXRoLm1pbihcbiAgICAgICAgICAgICAgdGFyZ2V0T2Zmc2V0LnRvcCxcbiAgICAgICAgICAgICAgd2luZG93LmlubmVySGVpZ2h0IC0gZWxlbWVudC5vZmZzZXRIZWlnaHRcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBsZWZ0OiBNYXRoLm1heCgwLCB0YXJnZXRPZmZzZXQubGVmdCAtIGVsZW1lbnQub2Zmc2V0V2lkdGgpXG4gICAgICAgICAgfTtcbiAgICAgICAgY2FzZSAndHInOlxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0b3A6IE1hdGgubWluKFxuICAgICAgICAgICAgICB0YXJnZXRPZmZzZXQudG9wLFxuICAgICAgICAgICAgICB3aW5kb3cuaW5uZXJIZWlnaHQgLSBlbGVtZW50Lm9mZnNldEhlaWdodFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGxlZnQ6IE1hdGgubWluKFxuICAgICAgICAgICAgICB0YXJnZXRPZmZzZXQubGVmdCArIHRhcmdldC5vZmZzZXRXaWR0aCxcbiAgICAgICAgICAgICAgd2luZG93LmlubmVyV2lkdGggLSBlbGVtZW50Lm9mZnNldFdpZHRoXG4gICAgICAgICAgICApXG4gICAgICAgICAgfTtcbiAgICAgICAgY2FzZSAnZGVmYXVsdCc6XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgRG9tSGFuZGxlci5hYnNvbHV0ZVBvc2l0aW9uKGVsZW1lbnQsIHRhcmdldCk7XG4gICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgaWYgKCFlbGVtZW50IHx8ICF0YXJnZXQpIHJldHVybjtcbiAgICBjb25zdCBwb3MgPSBnZXRQb3MoKTtcbiAgICBpZiAocG9zKSB7XG4gICAgICBlbGVtZW50LnN0eWxlLnRvcCA9IChwb3MudG9wIHx8IDApICsgJ3B4JztcbiAgICAgIGVsZW1lbnQuc3R5bGUubGVmdCA9IChwb3MubGVmdCB8fCAwKSArICdweCc7XG4gICAgfVxuICB9XG5cbiAgYWxpZ24oKSB7XG4gICAgaWYgKCF0aGlzLnRhcmdldC5pc0Nvbm5lY3RlZCkge1xuICAgICAgdGhpcy5oaWRlKENwc01lbnVIaWRlUmVhc29uLlRBUkdFVF9OT1RfQ09OTkVDVEVEKTtcbiAgICAgIHRoaXMuX2Rlc3Ryb3koKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5hdXRvWkluZGV4KSB7XG4gICAgICBaSW5kZXhVdGlscy5zZXQoXG4gICAgICAgICdvdmVybGF5JyxcbiAgICAgICAgdGhpcy5jb250YWluZXIsXG4gICAgICAgIHRoaXMuYmFzZVpJbmRleCArIHRoaXMuY29uZmlnLnpJbmRleC5vdmVybGF5XG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMuX3NldFBvc2l0aW9uKHRoaXMuY29udGFpbmVyLCB0aGlzLnRhcmdldCk7XG5cbiAgICBjb25zdCBjb250YWluZXJPZmZzZXQgPSBEb21IYW5kbGVyLmdldE9mZnNldCh0aGlzLmNvbnRhaW5lcik7XG4gICAgY29uc3QgdGFyZ2V0T2Zmc2V0ID0gRG9tSGFuZGxlci5nZXRPZmZzZXQodGhpcy50YXJnZXQpO1xuXG4gICAgaWYgKHRoaXMud2l0aEFycm93KSB7XG4gICAgICBjb25zdCBib3JkZXJSYWRpdXMgPVxuICAgICAgICB0aGlzLmRvY3VtZW50LmRlZmF1bHRWaWV3XG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1ub24tbnVsbC1hc3NlcnRpb25cbiAgICAgICAgICA/LmdldENvbXB1dGVkU3R5bGUodGhpcy5jb250YWluZXIhKVxuICAgICAgICAgID8uZ2V0UHJvcGVydHlWYWx1ZSgnYm9yZGVyLXJhZGl1cycpIHx8ICcwJztcblxuICAgICAgbGV0IGFycm93TGVmdCA9IDA7XG5cbiAgICAgIGNvbnN0IGNvbnRhaW5lcldpZHRoID0gdGhpcy5jb250YWluZXI/Lm9mZnNldFdpZHRoIHx8IDA7XG5cbiAgICAgIGlmIChjb250YWluZXJPZmZzZXQubGVmdCA8IHRhcmdldE9mZnNldC5sZWZ0KSB7XG4gICAgICAgIGFycm93TGVmdCA9XG4gICAgICAgICAgMjAgK1xuICAgICAgICAgIHRhcmdldE9mZnNldC5sZWZ0IC1cbiAgICAgICAgICBjb250YWluZXJPZmZzZXQubGVmdCAtXG4gICAgICAgICAgcGFyc2VGbG9hdChib3JkZXJSYWRpdXMpICogMjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHRhcmdldFdpZHRoID0gdGhpcy50YXJnZXQ/Lm9mZnNldFdpZHRoIHx8IDA7XG4gICAgICAgIGFycm93TGVmdCA9IE1hdGgubWluKHRhcmdldFdpZHRoIC8gMiwgY29udGFpbmVyV2lkdGggLyAyKTtcbiAgICAgIH1cbiAgICAgIGFycm93TGVmdCA9IE1hdGgubWluKE1hdGgubWF4KGFycm93TGVmdCwgMTIpLCBjb250YWluZXJXaWR0aCAtIDEyKTtcbiAgICAgIHRoaXMuY29udGFpbmVyPy5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1vdmVybGF5QXJyb3dMZWZ0JywgYCR7YXJyb3dMZWZ0fXB4YCk7XG4gICAgfVxuXG4gICAgaWYgKGNvbnRhaW5lck9mZnNldC50b3AgPCB0YXJnZXRPZmZzZXQudG9wKSB7XG4gICAgICBEb21IYW5kbGVyLmFkZENsYXNzKHRoaXMuY29udGFpbmVyLCAnY3BzLW1lbnUtY29udGFpbmVyLWZsaXBwZWQnKTtcbiAgICB9XG4gIH1cblxuICBvbkFuaW1hdGlvblN0YXJ0KGV2ZW50OiBBbmltYXRpb25FdmVudCkge1xuICAgIGlmIChldmVudC50b1N0YXRlID09PSAnY2xvc2UnKSB7XG4gICAgICB0aGlzLmJlZm9yZU1lbnVIaWRkZW4uZW1pdCh0aGlzLmhpZGVSZWFzb24pO1xuICAgIH0gZWxzZSBpZiAoZXZlbnQudG9TdGF0ZSA9PT0gJ29wZW4nKSB7XG4gICAgICB0aGlzLmNvbnRhaW5lciA9IGV2ZW50LmVsZW1lbnQ7XG4gICAgICBpZiAodGhpcy5jb250YWluZXIpIHRoaXMucmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLmNvbnRhaW5lcik7XG4gICAgICB0aGlzLmFwcGVuZENvbnRhaW5lcigpO1xuICAgICAgdGhpcy5hbGlnbigpO1xuICAgICAgdGhpcy5iaW5kRG9jdW1lbnRDbGlja0xpc3RlbmVyKCk7XG4gICAgICB0aGlzLmJpbmREb2N1bWVudEtleWRvd25MaXN0ZW5lcigpO1xuICAgICAgdGhpcy5iaW5kRG9jdW1lbnRSZXNpemVMaXN0ZW5lcigpO1xuICAgICAgdGhpcy5iaW5kU2Nyb2xsTGlzdGVuZXIoKTtcblxuICAgICAgaWYgKHRoaXMuZm9jdXNPblNob3cpIHtcbiAgICAgICAgdGhpcy5mb2N1cygpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLm92ZXJsYXlFdmVudExpc3RlbmVyID0gKGUpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuY29udGFpbmVyICYmIHRoaXMuY29udGFpbmVyLmNvbnRhaW5zKGUudGFyZ2V0KSkge1xuICAgICAgICAgIHRoaXMuc2VsZkNsaWNrID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgdGhpcy5vdmVybGF5U3Vic2NyaXB0aW9uID0gdGhpcy5vdmVybGF5U2VydmljZS5jbGlja09ic2VydmFibGUuc3Vic2NyaWJlKFxuICAgICAgICB0aGlzLm92ZXJsYXlFdmVudExpc3RlbmVyXG4gICAgICApO1xuICAgICAgdGhpcy5tZW51U2hvd24uZW1pdChudWxsKTtcbiAgICB9XG5cbiAgICB0aGlzLmlzT3ZlcmxheUFuaW1hdGlvbkluUHJvZ3Jlc3MgPSB0cnVlO1xuICB9XG5cbiAgb25BbmltYXRpb25FbmQoZXZlbnQ6IEFuaW1hdGlvbkV2ZW50KSB7XG4gICAgc3dpdGNoIChldmVudC50b1N0YXRlKSB7XG4gICAgICBjYXNlICd2b2lkJzpcbiAgICAgICAgaWYgKHRoaXMuZGVzdHJveUNhbGxiYWNrKSB7XG4gICAgICAgICAgdGhpcy5kZXN0cm95Q2FsbGJhY2soKTtcbiAgICAgICAgICB0aGlzLmRlc3Ryb3lDYWxsYmFjayA9IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5vdmVybGF5U3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgdGhpcy5vdmVybGF5U3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ2Nsb3NlJzpcbiAgICAgICAgaWYgKHRoaXMuYXV0b1pJbmRleCkge1xuICAgICAgICAgIFpJbmRleFV0aWxzLmNsZWFyKHRoaXMuY29udGFpbmVyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLm92ZXJsYXlTdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICB0aGlzLm92ZXJsYXlTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMub25Db250YWluZXJEZXN0cm95KCk7XG4gICAgICAgIHRoaXMubWVudUhpZGRlbi5lbWl0KHRoaXMuaGlkZVJlYXNvbik7XG4gICAgICAgIHRoaXMucmVuZGVyID0gZmFsc2U7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHRoaXMuaXNPdmVybGF5QW5pbWF0aW9uSW5Qcm9ncmVzcyA9IGZhbHNlO1xuICB9XG5cbiAgZm9jdXMoKSB7XG4gICAgY29uc3QgZm9jdXNhYmxlID0gRG9tSGFuZGxlci5maW5kU2luZ2xlKHRoaXMuY29udGFpbmVyLCAnW2F1dG9mb2N1c10nKTtcbiAgICBpZiAoZm9jdXNhYmxlKSB7XG4gICAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IGZvY3VzYWJsZS5mb2N1cygpLCA1KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIG9uV2luZG93UmVzaXplKCkge1xuICAgIGlmICh0aGlzLm92ZXJsYXlWaXNpYmxlICYmICFEb21IYW5kbGVyLmlzVG91Y2hEZXZpY2UoKSkge1xuICAgICAgdGhpcy5oaWRlKENwc01lbnVIaWRlUmVhc29uLlJFU0laRSk7XG4gICAgfVxuICB9XG5cbiAgYmluZERvY3VtZW50UmVzaXplTGlzdGVuZXIoKSB7XG4gICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgIGlmICghdGhpcy5kb2N1bWVudFJlc2l6ZUxpc3RlbmVyKSB7XG4gICAgICAgIGNvbnN0IHdpbmRvdyA9IHRoaXMuZG9jdW1lbnQuZGVmYXVsdFZpZXcgYXMgV2luZG93O1xuICAgICAgICB0aGlzLmRvY3VtZW50UmVzaXplTGlzdGVuZXIgPSB0aGlzLnJlbmRlcmVyLmxpc3RlbihcbiAgICAgICAgICB3aW5kb3csXG4gICAgICAgICAgJ3Jlc2l6ZScsXG4gICAgICAgICAgdGhpcy5vbldpbmRvd1Jlc2l6ZS5iaW5kKHRoaXMpXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdW5iaW5kRG9jdW1lbnRSZXNpemVMaXN0ZW5lcigpIHtcbiAgICBpZiAodGhpcy5kb2N1bWVudFJlc2l6ZUxpc3RlbmVyKSB7XG4gICAgICB0aGlzLmRvY3VtZW50UmVzaXplTGlzdGVuZXIoKTtcbiAgICAgIHRoaXMuZG9jdW1lbnRSZXNpemVMaXN0ZW5lciA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgYmluZFNjcm9sbExpc3RlbmVyKCkge1xuICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICBpZiAoIXRoaXMuc2Nyb2xsSGFuZGxlcikge1xuICAgICAgICB0aGlzLnNjcm9sbEhhbmRsZXIgPSBuZXcgQ29ubmVjdGVkT3ZlcmxheVNjcm9sbEhhbmRsZXIoXG4gICAgICAgICAgdGhpcy50YXJnZXQsXG4gICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMub3ZlcmxheVZpc2libGUpIHtcbiAgICAgICAgICAgICAgdGhpcy5oaWRlKENwc01lbnVIaWRlUmVhc29uLlNDUk9MTCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnNjcm9sbEhhbmRsZXIuYmluZFNjcm9sbExpc3RlbmVyKCk7XG4gICAgfVxuICB9XG5cbiAgdW5iaW5kU2Nyb2xsTGlzdGVuZXIoKSB7XG4gICAgaWYgKHRoaXMuc2Nyb2xsSGFuZGxlcikge1xuICAgICAgdGhpcy5zY3JvbGxIYW5kbGVyLnVuYmluZFNjcm9sbExpc3RlbmVyKCk7XG4gICAgfVxuICB9XG5cbiAgb25Db250YWluZXJEZXN0cm95KCkge1xuICAgIGlmICghKHRoaXMuY2QgYXMgVmlld1JlZikuZGVzdHJveWVkKSB7XG4gICAgICB0aGlzLnRhcmdldCA9IG51bGw7XG4gICAgfVxuXG4gICAgdGhpcy51bmJpbmREb2N1bWVudENsaWNrTGlzdGVuZXIoKTtcbiAgICB0aGlzLnVuYmluZERvY3VtZW50S2V5ZG93bkxpc3RlbmVyKCk7XG4gICAgdGhpcy51bmJpbmREb2N1bWVudFJlc2l6ZUxpc3RlbmVyKCk7XG4gICAgdGhpcy51bmJpbmRTY3JvbGxMaXN0ZW5lcigpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5zY3JvbGxIYW5kbGVyKSB7XG4gICAgICB0aGlzLnNjcm9sbEhhbmRsZXIuZGVzdHJveSgpO1xuICAgICAgdGhpcy5zY3JvbGxIYW5kbGVyID0gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb250YWluZXIgJiYgdGhpcy5hdXRvWkluZGV4KSB7XG4gICAgICBaSW5kZXhVdGlscy5jbGVhcih0aGlzLmNvbnRhaW5lcik7XG4gICAgfVxuXG4gICAgaWYgKCEodGhpcy5jZCBhcyBWaWV3UmVmKS5kZXN0cm95ZWQpIHtcbiAgICAgIHRoaXMudGFyZ2V0ID0gbnVsbDtcbiAgICB9XG5cbiAgICB0aGlzLmRlc3Ryb3lDYWxsYmFjayA9IG51bGw7XG4gICAgaWYgKHRoaXMuY29udGFpbmVyKSB7XG4gICAgICB0aGlzLnJlc3RvcmVBcHBlbmQoKTtcbiAgICAgIHRoaXMub25Db250YWluZXJEZXN0cm95KCk7XG4gICAgfVxuXG4gICAgdGhpcy5vdmVybGF5U3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuXG4gICAgdGhpcy5yZXNpemVPYnNlcnZlcj8uZGlzY29ubmVjdCgpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fZGVzdHJveSgpO1xuICB9XG59XG4iLCI8ZGl2XG4gICpuZ0lmPVwicmVuZGVyXCJcbiAgY2xhc3M9XCJjcHMtbWVudS1jb250YWluZXJcIlxuICBbbmdDbGFzc109XCJ7ICdjcHMtbWVudS1uby1hcnJvdyc6ICF3aXRoQXJyb3cgfVwiXG4gIFtjbGFzc109XCJjb250YWluZXJDbGFzc1wiXG4gIChtb3VzZWRvd24pPVwib25PdmVybGF5Q2xpY2soJGV2ZW50KVwiXG4gIFtAYW5pbWF0aW9uXT1cIntcbiAgICB2YWx1ZTogb3ZlcmxheVZpc2libGUgPyAnb3BlbicgOiAnY2xvc2UnLFxuICAgIHBhcmFtczoge1xuICAgICAgc2hvd1RyYW5zaXRpb25QYXJhbXM6IHNob3dUcmFuc2l0aW9uT3B0aW9ucyxcbiAgICAgIGhpZGVUcmFuc2l0aW9uUGFyYW1zOiBoaWRlVHJhbnNpdGlvbk9wdGlvbnNcbiAgICB9XG4gIH1cIlxuICAoQGFuaW1hdGlvbi5zdGFydCk9XCJvbkFuaW1hdGlvblN0YXJ0KCRldmVudClcIlxuICAoQGFuaW1hdGlvbi5kb25lKT1cIm9uQW5pbWF0aW9uRW5kKCRldmVudClcIj5cbiAgPGRpdiAobW91c2Vkb3duKT1cIm9uQ29udGVudENsaWNrKClcIiAodG91Y2hzdGFydCk9XCJvbkNvbnRlbnRDbGljaygpXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW1zLmxlbmd0aCA8IDFcIj5cbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8ZGl2XG4gICAgICAqbmdJZj1cIml0ZW1zLmxlbmd0aCA+IDBcIlxuICAgICAgY2xhc3M9XCJjcHMtbWVudS1jb250ZW50XCJcbiAgICAgIFtuZ0NsYXNzXT1cInsgJ2Nwcy1tZW51LWNvbnRlbnQtY29tcHJlc3NlZCc6IGNvbXByZXNzZWQgfVwiPlxuICAgICAgPGRpdiAqbmdJZj1cImhlYWRlciAmJiAhY29tcHJlc3NlZFwiIGNsYXNzPVwiY3BzLW1lbnUtaGVhZGVyXCI+XG4gICAgICAgIHt7IGhlYWRlciB9fVxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgaXRlbXM7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgICAgPGFcbiAgICAgICAgICAqbmdJZj1cIiFpdGVtLnVybFwiXG4gICAgICAgICAgKGNsaWNrKT1cIm9uSXRlbUNsaWNrKCRldmVudCwgaXRlbSlcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cIml0ZW1zQ2xhc3Nlc1tpXVwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgIGl0ZW1UZW1wbGF0ZTtcbiAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgIGl0ZW06IGl0ZW1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvYT5cbiAgICAgICAgPGFcbiAgICAgICAgICAqbmdJZj1cIml0ZW0udXJsICYmIGl0ZW0udXJsLnN0YXJ0c1dpdGgoJy8nKVwiXG4gICAgICAgICAgKGNsaWNrKT1cIm9uSXRlbUNsaWNrKCRldmVudCwgaXRlbSlcIlxuICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cIml0ZW0udXJsXCJcbiAgICAgICAgICBbdGFyZ2V0XT1cIml0ZW0udGFyZ2V0XCJcbiAgICAgICAgICBbbmdDbGFzc109XCJpdGVtc0NsYXNzZXNbaV1cIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICBpdGVtVGVtcGxhdGU7XG4gICAgICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgICBpdGVtOiBpdGVtXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2E+XG4gICAgICAgIDxhXG4gICAgICAgICAgKm5nSWY9XCJpdGVtLnVybCAmJiAhaXRlbS51cmwuc3RhcnRzV2l0aCgnLycpXCJcbiAgICAgICAgICAoY2xpY2spPVwib25JdGVtQ2xpY2soJGV2ZW50LCBpdGVtKVwiXG4gICAgICAgICAgW2hyZWZdPVwiaXRlbS51cmxcIlxuICAgICAgICAgIFthdHRyLnRhcmdldF09XCJpdGVtLnRhcmdldFwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwiaXRlbXNDbGFzc2VzW2ldXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgaXRlbVRlbXBsYXRlO1xuICAgICAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAgICAgaXRlbTogaXRlbVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9hPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjaXRlbVRlbXBsYXRlIGxldC1pdGVtPVwiaXRlbVwiPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWl0ZW0ubG9hZGluZzsgZWxzZSBzcGlubmVyTWVudUl0ZW1cIj5cbiAgICA8ZGl2IGNsYXNzPVwiY3BzLW1lbnUtaXRlbS1pY29uXCIgKm5nSWY9XCJ3aXRoSWNvbnNcIj5cbiAgICAgIDxjcHMtaWNvblxuICAgICAgICAqbmdJZj1cIml0ZW0uaWNvblwiXG4gICAgICAgIFtpY29uXT1cIml0ZW0uaWNvblwiXG4gICAgICAgIFtjb2xvcl09XCJpdGVtLmRpc2FibGVkID8gJ3RleHQtbGlnaHQnIDogJ3RleHQtZGFyaydcIlxuICAgICAgICBbc2l6ZV09XCJjb21wcmVzc2VkID8gJ3NtYWxsJyA6ICdub3JtYWwnXCI+PC9jcHMtaWNvbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiY3BzLW1lbnUtaXRlbS1jb250ZW50XCI+XG4gICAgICA8c3BhbiBjbGFzcz1cImNwcy1tZW51LWl0ZW0tY29udGVudC10aXRsZVwiPnt7IGl0ZW0udGl0bGUgfX08L3NwYW4+XG4gICAgICA8c3BhblxuICAgICAgICAqbmdJZj1cIml0ZW0uZGVzYyAmJiAhY29tcHJlc3NlZFwiXG4gICAgICAgIGNsYXNzPVwiY3BzLW1lbnUtaXRlbS1jb250ZW50LWRlc2NcIlxuICAgICAgICA+e3sgaXRlbS5kZXNjIH19PC9zcGFuXG4gICAgICA+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNzcGlubmVyTWVudUl0ZW0+XG4gIDxzcGFuIGNsYXNzPVwiY3BzLW1lbnUtaXRlbS1zcGlubmVyXCI+XG4gICAgPGNwcy1wcm9ncmVzcy1jaXJjdWxhclxuICAgICAgW3N0cm9rZVdpZHRoXT1cIjJcIlxuICAgICAgW2NvbG9yXT1cImNvbXByZXNzZWQgPyAncHJlcGFyZWQnIDogJ2NhbG0nXCJcbiAgICAgIFtkaWFtZXRlcl09XCIxNlwiPlxuICAgIDwvY3BzLXByb2dyZXNzLWNpcmN1bGFyPlxuICA8L3NwYW4+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
572
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3BzLW1lbnUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3BzLXVpLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvY3BzLW1lbnUvY3BzLW1lbnUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3BzLXVpLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvY3BzLW1lbnUvY3BzLW1lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLE9BQU8sRUFFUCxLQUFLLEVBQ0wsS0FBSyxFQUNMLFVBQVUsRUFDVixPQUFPLEVBQ1IsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBRUwsdUJBQXVCLEVBRXZCLFNBQVMsRUFFVCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFJTCxNQUFNLEVBQ04sV0FBVyxFQUdYLGlCQUFpQixFQUVsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQWlDLFlBQVksRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMxRSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFNUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbEUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sMERBQTBELENBQUM7Ozs7O0FBb0J4Rzs7O0dBR0c7QUFDSCxNQUFNLENBQU4sSUFBWSxpQkFTWDtBQVRELFdBQVksaUJBQWlCO0lBQzNCLHNDQUFpQixDQUFBO0lBQ2pCLHNDQUFp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QU1HLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFNRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBTUksU0FBUztzQkFBbEIsTUFBTTtnQkFPRyxVQUFVO3NCQUFuQixNQUFNO2dCQU9HLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFNRyxjQUFjO3NCQUF2QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgYW5pbWF0ZSxcbiAgQW5pbWF0aW9uRXZlbnQsXG4gIHN0YXRlLFxuICBzdHlsZSxcbiAgdHJhbnNpdGlvbixcbiAgdHJpZ2dlclxufSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSwgRE9DVU1FTlQsIGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBOZ1pvbmUsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFBMQVRGT1JNX0lELFxuICBSZW5kZXJlcjIsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBWaWV3UmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT3ZlcmxheVNlcnZpY2UsIFByaW1lTkdDb25maWcsIFNoYXJlZE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcbmltcG9ydCB7IENvbm5lY3RlZE92ZXJsYXlTY3JvbGxIYW5kbGVyLCBEb21IYW5kbGVyIH0gZnJvbSAncHJpbWVuZy9kb20nO1xuaW1wb3J0IHsgWkluZGV4VXRpbHMgfSBmcm9tICdwcmltZW5nL3V0aWxzJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ3BzSWNvbkNvbXBvbmVudCB9IGZyb20gJy4uL2Nwcy1pY29uL2Nwcy1pY29uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDcHNQcm9ncmVzc0NpcmN1bGFyQ29tcG9uZW50IH0gZnJvbSAnLi4vY3BzLXByb2dyZXNzLWNpcmN1bGFyL2Nwcy1wcm9ncmVzcy1jaXJjdWxhci5jb21wb25lbnQnO1xuXG50eXBlIE51bGxhYmxlPFQgPSB2b2lkPiA9IFQgfCBudWxsIHwgdW5kZWZpbmVkO1xudHlwZSBWb2lkTGlzdGVuZXIgPSAoKSA9PiB2b2lkIHwgbnVsbCB8IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBDcHNNZW51SXRlbSBpcyB1c2VkIHRvIGRlZmluZSB0aGUgaXRlbXMgb2YgdGhlIENwc01lbnVDb21wb25lbnQuXG4gKiBAZ3JvdXAgVHlwZXNcbiAqL1xuZXhwb3J0IHR5cGUgQ3BzTWVudUl0ZW0gPSB7XG4gIHRpdGxlPzogc3RyaW5nO1xuICBhY3Rpb24/OiAoZXZlbnQ/OiBhbnkpID0+IHZvaWQ7XG4gIGljb24/OiBzdHJpbmc7XG4gIGRlc2M/OiBzdHJpbmc7XG4gIHVybD86IHN0cmluZztcbiAgdGFyZ2V0Pzogc3RyaW5nO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIGxvYWRpbmc/OiBib29sZWFuO1xufTtcblxuLyoqXG4gKiBBbiBlbnVtZXJhdGlvbiBvZiB0aGUgZGlmZmVyZW50IHJlYXNvbnMgZm9yIGhpZGluZyB0aGUgbWVudS5cbiAqIEBncm91cCBFbnVtc1xuICovXG5leHBvcnQgZW51bSBDcHNNZW51SGlkZVJlYXNvbiB7XG4gIEZPUkNFRCA9ICdmb3JjZWQnLFxuICBUT0dHTEUgPSAndG9nZ2xlJyxcbiAgQ0xJQ0tfSVRFTSA9ICdjbGljay1pdGVtJyxcbiAgQ0xJQ0tfT1VUU0lERSA9ICdjbGljay1vdXRzaWRlJyxcbiAgS0VZRE9XTl9FU0NBUEUgPSAna2V5ZG93bi1lc2NhcGUnLFxuICBTQ1JPTEwgPSAnc2Nyb2xsJyxcbiAgUkVTSVpFID0gJ3Jlc2l6ZScsXG4gIFRBUkdFVF9OT1RfQ09OTkVDVEVEID0gJ3RhcmdldC1ub3QtY29ubmVjdGVkJ1xufVxuXG4vKipcbiAqIENwc01lbnVBdHRhY2hQb3NpdGlvbiBpcyB1c2VkIHRvIGRlZmluZSBhdHRhY2htZW50IHBvc2l0aW9uIG9mIHRoZSBDcHNNZW51Q29tcG9uZW50LlxuICogQGdyb3VwIFR5cGVzXG4gKi9cbmV4cG9ydCB0eXBlIENwc01lbnVBdHRhY2hQb3NpdGlvbiA9ICd0cicgfCAnYnInIHwgJ3RsJyB8ICdibCcgfCAnZGVmYXVsdCc7XG5cbi8qKlxuICogQ3BzTWVudUNvbXBvbmVudCBpcyBhIHBvcHVwIGVsZW1lbnQsIHRoYXQgY29udGFpbnMgbWVudSBpdGVtcyBvciBhcmJpdHJhcnkgY29udGVudC5cbiAqIEBncm91cCBDb21wb25lbnRzXG4gKi9cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFNoYXJlZE1vZHVsZSxcbiAgICBDcHNJY29uQ29tcG9uZW50LFxuICAgIENwc1Byb2dyZXNzQ2lyY3VsYXJDb21wb25lbnQsXG4gICAgUm91dGVyTW9kdWxlXG4gIF0sXG4gIHNlbGVjdG9yOiAnY3BzLW1lbnUnLFxuICB0ZW1wbGF0ZVVybDogJy4vY3BzLW1lbnUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jcHMtbWVudS5jb21wb25lbnQuc2NzcyddLFxuICBhbmltYXRpb25zOiBbXG4gICAgdHJpZ2dlcignYW5pbWF0aW9uJywgW1xuICAgICAgc3RhdGUoXG4gICAgICAgICd2b2lkJyxcbiAgICAgICAgc3R5bGUoe1xuICAgICAgICAgIHRyYW5zZm9ybTogJ3NjYWxlWSgwLjgpJyxcbiAgICAgICAgICBvcGFjaXR5OiAwXG4gICAgICAgIH0pXG4gICAgICApLFxuICAgICAgc3RhdGUoXG4gICAgICAgICdjbG9zZScsXG4gICAgICAgIHN0eWxlKHtcbiAgICAgICAgICB0cmFuc2Zvcm06ICdzY2FsZVkoMC44KScsXG4gICAgICAgICAgb3BhY2l0eTogMFxuICAgICAgICB9KVxuICAgICAgKSxcbiAgICAgIHN0YXRlKFxuICAgICAgICAnb3BlbicsXG4gICAgICAgIHN0eWxlKHtcbiAgICAgICAgICB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKDApJyxcbiAgICAgICAgICBvcGFjaXR5OiAxXG4gICAgICAgIH0pXG4gICAgICApLFxuICAgICAgdHJhbnNpdGlvbigndm9pZCA9PiBvcGVuJywgYW5pbWF0ZSgne3tzaG93VHJhbnNpdGlvblBhcmFtc319JykpLFxuICAgICAgdHJhbnNpdGlvbignb3BlbiA9PiBjbG9zZScsIGFuaW1hdGUoJ3t7aGlkZVRyYW5zaXRpb25QYXJhbXN9fScpKVxuICAgIF0pXG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIENwc01lbnVDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB7XG4gIC8qKlxuICAgKiBIZWFkZXIgdGl0bGUgb2YgdGhlIG1lbnUuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgaGVhZGVyID0gJyc7XG5cbiAgLyoqXG4gICAqIEFuIGFycmF5IG9mIG1lbnUgaXRlbXMuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgaXRlbXM6IENwc01lbnVJdGVtW10gPSBbXTtcblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRvIGluY2x1ZGUgdG9wIHBvaW50aW5nIGFycm93IG9uIHRoZSBtZW51LlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIHdpdGhBcnJvdyA9IHRydWU7XG5cbiAgLyoqXG4gICAqIE1lbnUgd2l0aCBwcmVwYXJlZC1jb2xvcmVkIGl0ZW1zLCB3aXRob3V0IGhlYWRlciBhbmQgaXRlbXMgZGVzY3JpcHRpb24uXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgY29tcHJlc3NlZCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIG1lbnUgc2hvdWxkIHNob3cgb24gdGFyZ2V0IGVsZW1lbnQgZm9jdXMuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgZm9jdXNPblNob3cgPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIG1lbnUgc2hvdWxkIGJlIHBlcnNpc3RlbnQuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgcGVyc2lzdGVudCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBTdHlsaW5nIGNsYXNzIG9mIHRoZSBtZW51IGNvbnRhaW5lci5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBjb250YWluZXJDbGFzcyA9ICcnO1xuXG4gIC8qKlxuICAgKiBUcmFuc2l0aW9uIG9wdGlvbnMgb2YgdGhlIHNob3cgYW5pbWF0aW9uLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIHNob3dUcmFuc2l0aW9uT3B0aW9ucyA9ICcuMTJzIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpJztcblxuICAvKipcbiAgICogVHJhbnNpdGlvbiBvcHRpb25zIG9mIHRoZSBoaWRlIGFuaW1hdGlvbi5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBoaWRlVHJhbnNpdGlvbk9wdGlvbnMgPSAnLjEycyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKSc7XG5cbiAgLyoqXG4gICAqIENhbGxiYWNrIHRvIGludm9rZSB3aGVuIG1lbnUgaXMgc2hvd24uXG4gICAqIEBncm91cCBFbWl0c1xuICAgKi9cbiAgQE91dHB1dCgpIG1lbnVTaG93biA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAvKipcbiAgICogQ2FsbGJhY2sgdG8gaW52b2tlIHdoZW4gbWVudSBpcyBoaWRkZW4uXG4gICAqIEBwYXJhbSB7Q3BzTWVudUhpZGVSZWFzb259IENwc01lbnVIaWRlUmVhc29uIC0gcmVhc29uIGZvciBoaWRpbmcgdGhlIG1lbnUuXG4gICAqIEBncm91cCBFbWl0c1xuICAgKi9cbiAgQE91dHB1dCgpIG1lbnVIaWRkZW4gPSBuZXcgRXZlbnRFbWl0dGVyPENwc01lbnVIaWRlUmVhc29uPigpO1xuXG4gIC8qKlxuICAgKiBDYWxsYmFjayB0byBpbnZva2UgYmVmb3JlIG1lbnUgaXMgaGlkZGVuLlxuICAgKiBAcGFyYW0ge0Nwc01lbnVIaWRlUmVhc29ufSBDcHNNZW51SGlkZVJlYXNvbiAtIHJlYXNvbiBmb3IgaGlkaW5nIHRoZSBtZW51LlxuICAgKiBAZ3JvdXAgRW1pdHNcbiAgICovXG4gIEBPdXRwdXQoKSBiZWZvcmVNZW51SGlkZGVuID0gbmV3IEV2ZW50RW1pdHRlcjxDcHNNZW51SGlkZVJlYXNvbj4oKTtcblxuICAvKipcbiAgICogQ2FsbGJhY2sgdG8gaW52b2tlIHdoZW4gY29udGVudCBpcyBjbGlja2VkLlxuICAgKiBAZ3JvdXAgRW1pdHNcbiAgICovXG4gIEBPdXRwdXQoKSBjb250ZW50Q2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICB3aXRoSWNvbnMgPSB0cnVlO1xuICBhdXRvWkluZGV4ID0gdHJ1ZTtcbiAgYmFzZVpJbmRleCA9IDA7XG4gIGRpc21pc3NhYmxlID0gdHJ1ZTtcbiAgY29udGFpbmVyOiBOdWxsYWJsZTxIVE1MRGl2RWxlbWVudD47XG4gIG92ZXJsYXlWaXNpYmxlID0gZmFsc2U7XG4gIHJlbmRlciA9IGZhbHNlO1xuICBpc092ZXJsYXlBbmltYXRpb25JblByb2dyZXNzID0gZmFsc2U7XG4gIHNlbGZDbGljayA9IGZhbHNlO1xuICB0YXJnZXQ6IGFueTtcbiAgc2Nyb2xsSGFuZGxlcjogTnVsbGFibGU8Q29ubmVjdGVkT3ZlcmxheVNjcm9sbEhhbmRsZXI+O1xuICBwb3NpdGlvbjogQ3BzTWVudUF0dGFjaFBvc2l0aW9uID0gJ2RlZmF1bHQnO1xuXG4gIGRvY3VtZW50UmVzaXplTGlzdGVuZXIhOiBWb2lkTGlzdGVuZXIgfCBudWxsO1xuICBvdmVybGF5RXZlbnRMaXN0ZW5lcjogTnVsbGFibGU8KGV2ZW50PzogYW55KSA9PiB2b2lkPjtcbiAgZG9jdW1lbnRDbGlja0xpc3RlbmVyITogVm9pZExpc3RlbmVyIHwgbnVsbDtcbiAgZG9jdW1lbnRLZXlkb3duTGlzdGVuZXIhOiBWb2lkTGlzdGVuZXIgfCBudWxsO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXR5cGVzXG4gIGRlc3Ryb3lDYWxsYmFjazogTnVsbGFibGU8RnVuY3Rpb24+O1xuICBvdmVybGF5U3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCB1bmRlZmluZWQ7XG5cbiAgcmVzaXplT2JzZXJ2ZXI6IFJlc2l6ZU9ic2VydmVyO1xuXG4gIGl0ZW1zQ2xhc3Nlczogc3RyaW5nW10gPSBbXTtcblxuICBoaWRlUmVhc29uOiBDcHNNZW51SGlkZVJlYXNvbiB8IHVuZGVmaW5lZDtcblxuICBwcml2YXRlIHdpbmRvdzogV2luZG93O1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2VsZXNzLWNvbnN0cnVjdG9yXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgZG9jdW1lbnQ6IERvY3VtZW50LFxuICAgIEBJbmplY3QoUExBVEZPUk1fSUQpIHByaXZhdGUgcGxhdGZvcm1JZDogYW55LFxuICAgIHB1YmxpYyBlbDogRWxlbWVudFJlZixcbiAgICBwdWJsaWMgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwdWJsaWMgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgem9uZTogTmdab25lLFxuICAgIHB1YmxpYyBjb25maWc6IFByaW1lTkdDb25maWcsXG4gICAgcHVibGljIG92ZXJsYXlTZXJ2aWNlOiBPdmVybGF5U2VydmljZVxuICApIHtcbiAgICB0aGlzLndpbmRvdyA9IHRoaXMuZG9jdW1lbnQuZGVmYXVsdFZpZXcgYXMgV2luZG93O1xuICAgIHRoaXMucmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoKGVudHJpZXMpID0+IHtcbiAgICAgIGlmICh0aGlzLnRhcmdldCkge1xuICAgICAgICBlbnRyaWVzLmZvckVhY2goKGVudHJ5KSA9PiB7XG4gICAgICAgICAgaWYgKGVudHJ5KSB0aGlzLmFsaWduKCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzLml0ZW1zIHx8IGNoYW5nZXMuY29tcHJlc3NlZCkge1xuICAgICAgaWYgKHRoaXMuY29tcHJlc3NlZCkgdGhpcy53aXRoSWNvbnMgPSB0aGlzLml0ZW1zLnNvbWUoKGl0bSkgPT4gaXRtLmljb24pO1xuICAgICAgdGhpcy5fc2V0SXRlbXNDbGFzc2VzKCk7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5lbC5uYXRpdmVFbGVtZW50LCAnZGlzcGxheScsICdub25lJyk7XG4gIH1cblxuICBwcml2YXRlIF9zZXRJdGVtc0NsYXNzZXMoKSB7XG4gICAgaWYgKHRoaXMuaXRlbXMubGVuZ3RoIDwgMSkgcmV0dXJuO1xuXG4gICAgdGhpcy5pdGVtc0NsYXNzZXMgPSB0aGlzLml0ZW1zLm1hcCgoaXRlbSwgaW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IHJlcyA9IFsnY3BzLW1lbnUtaXRlbSddO1xuICAgICAgaWYgKGl0ZW0uZGlzYWJsZWQgfHwgaXRlbS5sb2FkaW5nKSByZXMucHVzaCgnY3BzLW1lbnUtaXRlbS1kaXNhYmxlZCcpO1xuICAgICAgaWYgKGluZGV4ID09PSAwKSByZXMucHVzaCgnY3BzLW1lbnUtaXRlbS1maXJzdCcpO1xuICAgICAgaWYgKHRoaXMuY29tcHJlc3NlZCkgcmVzLnB1c2goJ2Nwcy1tZW51LWl0ZW0tY29tcHJlc3NlZCcpO1xuICAgICAgaWYgKHRoaXMuY29tcHJlc3NlZCAmJiB0aGlzLndpdGhJY29ucylcbiAgICAgICAgcmVzLnB1c2goJ2Nwcy1tZW51LWl0ZW0tY29tcHJlc3NlZC13aXRoLWljb25zJyk7XG5cbiAgICAgIHJldHVybiByZXMuam9pbignICcpO1xuICAgIH0pO1xuICB9XG5cbiAgdG9nZ2xlKGV2ZW50PzogYW55LCB0YXJnZXQ/OiBhbnksIHBvcz86IENwc01lbnVBdHRhY2hQb3NpdGlvbikge1xuICAgIGlmICh0aGlzLmlzT3ZlcmxheUFuaW1hdGlvbkluUHJvZ3Jlc3MpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vdmVybGF5VmlzaWJsZSkge1xuICAgICAgaWYgKHRoaXMuaGFzVGFyZ2V0Q2hhbmdlZChldmVudCwgdGFyZ2V0KSkge1xuICAgICAgICB0aGlzLmRlc3Ryb3lDYWxsYmFjayA9ICgpID0+IHtcbiAgICAgICAgICB0aGlzLnNob3cobnVsbCwgdGFyZ2V0IHx8IGV2ZW50Py5jdXJyZW50VGFyZ2V0IHx8IGV2ZW50Py50YXJnZXQsIHBvcyk7XG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIHRoaXMuaGlkZShDcHNNZW51SGlkZVJlYXNvbi5UT0dHTEUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNob3coZXZlbnQsIHRhcmdldCwgcG9zKTtcbiAgICB9XG4gIH1cblxuICBzaG93KGV2ZW50PzogYW55LCB0YXJnZXQ/OiBhbnksIHBvcz86IENwc01lbnVBdHRhY2hQb3NpdGlvbikge1xuICAgIHRhcmdldCAmJiBldmVudCAmJiBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBpZiAodGhpcy5pc092ZXJsYXlBbmltYXRpb25JblByb2dyZXNzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy50YXJnZXQgPSB0YXJnZXQgfHwgZXZlbnQ/LmN1cnJlbnRUYXJnZXQgfHwgZXZlbnQ/LnRhcmdldDtcbiAgICBpZiAodGhpcy50YXJnZXQpIHRoaXMucmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLnRhcmdldCk7XG4gICAgdGhpcy5vdmVybGF5VmlzaWJsZSA9IHRydWU7XG4gICAgdGhpcy5yZW5kZXIgPSB0cnVlO1xuICAgIHRoaXMucG9zaXRpb24gPSBwb3MgfHwgJ2RlZmF1bHQnO1xuICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBoaWRlKHJlYXNvbj86IENwc01lbnVIaWRlUmVhc29uKSB7XG4gICAgaWYgKCF0aGlzLm92ZXJsYXlWaXNpYmxlKSByZXR1cm47XG4gICAgdGhpcy5oaWRlUmVhc29uID0gcmVhc29uID8/IENwc01lbnVIaWRlUmVhc29uLkZPUkNFRDtcbiAgICB0aGlzLm92ZXJsYXlWaXNpYmxlID0gZmFsc2U7XG4gICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIGlzVmlzaWJsZSgpIHtcbiAgICByZXR1cm4gdGhpcy5vdmVybGF5VmlzaWJsZTtcbiAgfVxuXG4gIG9uSXRlbUNsaWNrKGV2ZW50OiBhbnksIGl0ZW06IENwc01lbnVJdGVtKSB7XG4gICAgaWYgKGl0ZW0uZGlzYWJsZWQpIHJldHVybjtcbiAgICBpZiAoaXRlbS5hY3Rpb24pIHtcbiAgICAgIGl0ZW0uYWN0aW9uKHtcbiAgICAgICAgb3JpZ2luYWxFdmVudDogZXZlbnQsXG4gICAgICAgIGl0ZW1cbiAgICAgIH0pO1xuICAgIH1cbiAgICB0aGlzLmhpZGUoQ3BzTWVudUhpZGVSZWFzb24uQ0xJQ0tfSVRFTSk7XG4gIH1cblxuICBiaW5kRG9jdW1lbnRLZXlkb3duTGlzdGVuZXIoKSB7XG4gICAgaWYgKERvbUhhbmRsZXIuaXNUb3VjaERldmljZSgpKSByZXR1cm47XG4gICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgIGlmICghdGhpcy5kb2N1bWVudEtleWRvd25MaXN0ZW5lciAmJiB0aGlzLmRpc21pc3NhYmxlKSB7XG4gICAgICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgY29uc3QgZG9jdW1lbnRUYXJnZXQ6IGFueSA9IHRoaXMuZWxcbiAgICAgICAgICAgID8gdGhpcy5lbC5uYXRpdmVFbGVtZW50Lm93bmVyRG9jdW1lbnRcbiAgICAgICAgICAgIDogdGhpcy5kb2N1bWVudDtcblxuICAgICAgICAgIHRoaXMuZG9jdW1lbnRLZXlkb3duTGlzdGVuZXIgPSB0aGlzLnJlbmRlcmVyLmxpc3RlbihcbiAgICAgICAgICAgIGRvY3VtZW50VGFyZ2V0LFxuICAgICAgICAgICAgJ2tleWRvd24nLFxuICAgICAgICAgICAgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgIC8vIGVzY2FwZVxuICAgICAgICAgICAgICBpZiAoZXZlbnQua2V5Q29kZSA9PT0gMjcpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnpvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm92ZXJsYXlWaXNpYmxlKVxuICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGUoQ3BzTWVudUhpZGVSZWFzb24uS0VZRE9XTl9FU0NBUEUpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdW5iaW5kRG9jdW1lbnRLZXlkb3duTGlzdGVuZXIoKSB7XG4gICAgaWYgKHRoaXMuZG9jdW1lbnRLZXlkb3duTGlzdGVuZXIpIHtcbiAgICAgIHRoaXMuZG9jdW1lbnRLZXlkb3duTGlzdGVuZXIoKTtcbiAgICAgIHRoaXMuZG9jdW1lbnRLZXlkb3duTGlzdGVuZXIgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIGJpbmREb2N1bWVudENsaWNrTGlzdGVuZXIoKSB7XG4gICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgIGlmICghdGhpcy5kb2N1bWVudENsaWNrTGlzdGVuZXIgJiYgdGhpcy5kaXNtaXNzYWJsZSkge1xuICAgICAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGRvY3VtZW50VGFyZ2V0OiBhbnkgPSB0aGlzLmVsXG4gICAgICAgICAgICA/IHRoaXMuZWwubmF0aXZlRWxlbWVudC5vd25lckRvY3VtZW50XG4gICAgICAgICAgICA6IHRoaXMuZG9jdW1lbnQ7XG5cbiAgICAgICAgICB0aGlzLmRvY3VtZW50Q2xpY2tMaXN0ZW5lciA9IHRoaXMucmVuZGVyZXIubGlzdGVuKFxuICAgICAgICAgICAgZG9jdW1lbnRUYXJnZXQsXG4gICAgICAgICAgICAnbW91c2Vkb3duJyxcbiAgICAgICAgICAgIChldmVudCkgPT4ge1xuICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgIXRoaXMucGVyc2lzdGVudCAmJlxuICAgICAgICAgICAgICAgICF0aGlzLmNvbnRhaW5lcj8uY29udGFpbnMoZXZlbnQudGFyZ2V0KSAmJlxuICAgICAgICAgICAgICAgIHRoaXMudGFyZ2V0ICE9PSBldmVudC50YXJnZXQgJiZcbiAgICAgICAgICAgICAgICAhdGhpcy50YXJnZXQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSAmJlxuICAgICAgICAgICAgICAgICF0aGlzLnNlbGZDbGlja1xuICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICB0aGlzLnpvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuaGlkZShDcHNNZW51SGlkZVJlYXNvbi5DTElDS19PVVRTSURFKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHRoaXMuc2VsZkNsaWNrID0gZmFsc2U7XG4gICAgICAgICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdW5iaW5kRG9jdW1lbnRDbGlja0xpc3RlbmVyKCkge1xuICAgIGlmICh0aGlzLmRvY3VtZW50Q2xpY2tMaXN0ZW5lcikge1xuICAgICAgdGhpcy5kb2N1bWVudENsaWNrTGlzdGVuZXIoKTtcbiAgICAgIHRoaXMuZG9jdW1lbnRDbGlja0xpc3RlbmVyID0gbnVsbDtcbiAgICAgIHRoaXMuc2VsZkNsaWNrID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgb25PdmVybGF5Q2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICB0aGlzLm92ZXJsYXlTZXJ2aWNlLmFkZCh7XG4gICAgICBvcmlnaW5hbEV2ZW50OiBldmVudCxcbiAgICAgIHRhcmdldDogdGhpcy5lbC5uYXRpdmVFbGVtZW50XG4gICAgfSk7XG5cbiAgICB0aGlzLnNlbGZDbGljayA9IHRydWU7XG4gIH1cblxuICBvbkNvbnRlbnRDbGljaygpIHtcbiAgICB0aGlzLnNlbGZDbGljayA9IHRydWU7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmNvbnRlbnRDbGlja2VkLmVtaXQoKTtcbiAgICB9LCAxMDApO1xuICB9XG5cbiAgaGFzVGFyZ2V0Q2hhbmdlZChldmVudD86IGFueSwgdGFyZ2V0PzogYW55KSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMudGFyZ2V0ICYmXG4gICAgICB0aGlzLnRhcmdldCAhPT0gKHRhcmdldCB8fCBldmVudD8uY3VycmVudFRhcmdldCB8fCBldmVudD8udGFyZ2V0KVxuICAgICk7XG4gIH1cblxuICBhcHBlbmRDb250YWluZXIoKSB7XG4gICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZCh0aGlzLmRvY3VtZW50LmJvZHksIHRoaXMuY29udGFpbmVyKTtcbiAgfVxuXG4gIHJlc3RvcmVBcHBlbmQoKSB7XG4gICAgaWYgKHRoaXMuY29udGFpbmVyKSB7XG4gICAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgdGhpcy5jb250YWluZXIpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3NldFBvc2l0aW9uKGVsZW1lbnQ6IGFueSwgdGFyZ2V0OiBhbnkpIHtcbiAgICBjb25zdCBnZXRQb3MgPSAoKSA9PiB7XG4gICAgICBjb25zdCB0YXJnZXRPZmZzZXQgPSBEb21IYW5kbGVyLmdldE9mZnNldCh0YXJnZXQpO1xuICAgICAgc3dpdGNoICh0aGlzLnBvc2l0aW9uKSB7XG4gICAgICAgIGNhc2UgJ2JsJzpcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdG9wOiBNYXRoLm1heChcbiAgICAgICAgICAgICAgdGFyZ2V0T2Zmc2V0LnRvcCArIHRhcmdldC5vZmZzZXRIZWlnaHQgLSBlbGVtZW50Lm9mZnNldEhlaWdodCxcbiAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGxlZnQ6IE1hdGgubWF4KDAsIHRhcmdldE9mZnNldC5sZWZ0IC0gZWxlbWVudC5vZmZzZXRXaWR0aClcbiAgICAgICAgICB9O1xuICAgICAgICBjYXNlICdicic6XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRvcDogTWF0aC5tYXgoXG4gICAgICAgICAgICAgIHRhcmdldE9mZnNldC50b3AgKyB0YXJnZXQub2Zmc2V0SGVpZ2h0IC0gZWxlbWVudC5vZmZzZXRIZWlnaHQsXG4gICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBsZWZ0OiBNYXRoLm1pbihcbiAgICAgICAgICAgICAgdGFyZ2V0T2Zmc2V0LmxlZnQgKyB0YXJnZXQub2Zmc2V0V2lkdGgsXG4gICAgICAgICAgICAgIHRoaXMud2luZG93LmlubmVyV2lkdGggLSBlbGVtZW50Lm9mZnNldFdpZHRoXG4gICAgICAgICAgICApXG4gICAgICAgICAgfTtcbiAgICAgICAgY2FzZSAndGwnOlxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0b3A6IE1hdGgubWluKFxuICAgICAgICAgICAgICB0YXJnZXRPZmZzZXQudG9wLFxuICAgICAgICAgICAgICB0aGlzLndpbmRvdy5pbm5lckhlaWdodCAtIGVsZW1lbnQub2Zmc2V0SGVpZ2h0XG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgbGVmdDogTWF0aC5tYXgoMCwgdGFyZ2V0T2Zmc2V0LmxlZnQgLSBlbGVtZW50Lm9mZnNldFdpZHRoKVxuICAgICAgICAgIH07XG4gICAgICAgIGNhc2UgJ3RyJzpcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdG9wOiBNYXRoLm1pbihcbiAgICAgICAgICAgICAgdGFyZ2V0T2Zmc2V0LnRvcCxcbiAgICAgICAgICAgICAgdGhpcy53aW5kb3cuaW5uZXJIZWlnaHQgLSBlbGVtZW50Lm9mZnNldEhlaWdodFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGxlZnQ6IE1hdGgubWluKFxuICAgICAgICAgICAgICB0YXJnZXRPZmZzZXQubGVmdCArIHRhcmdldC5vZmZzZXRXaWR0aCxcbiAgICAgICAgICAgICAgdGhpcy53aW5kb3cuaW5uZXJXaWR0aCAtIGVsZW1lbnQub2Zmc2V0V2lkdGhcbiAgICAgICAgICAgIClcbiAgICAgICAgICB9O1xuICAgICAgICBjYXNlICdkZWZhdWx0JzpcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBEb21IYW5kbGVyLmFic29sdXRlUG9zaXRpb24oZWxlbWVudCwgdGFyZ2V0KTtcbiAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBpZiAoIWVsZW1lbnQgfHwgIXRhcmdldCkgcmV0dXJuO1xuICAgIGNvbnN0IHBvcyA9IGdldFBvcygpO1xuICAgIGlmIChwb3MpIHtcbiAgICAgIGVsZW1lbnQuc3R5bGUudG9wID0gKHBvcy50b3AgfHwgMCkgKyAncHgnO1xuICAgICAgZWxlbWVudC5zdHlsZS5sZWZ0ID0gKHBvcy5sZWZ0IHx8IDApICsgJ3B4JztcbiAgICB9XG4gIH1cblxuICBhbGlnbigpIHtcbiAgICBpZiAoIXRoaXMudGFyZ2V0LmlzQ29ubmVjdGVkKSB7XG4gICAgICB0aGlzLmhpZGUoQ3BzTWVudUhpZGVSZWFzb24uVEFSR0VUX05PVF9DT05ORUNURUQpO1xuICAgICAgdGhpcy5fZGVzdHJveSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmF1dG9aSW5kZXgpIHtcbiAgICAgIFpJbmRleFV0aWxzLnNldChcbiAgICAgICAgJ292ZXJsYXknLFxuICAgICAgICB0aGlzLmNvbnRhaW5lcixcbiAgICAgICAgdGhpcy5iYXNlWkluZGV4ICsgdGhpcy5jb25maWcuekluZGV4Lm92ZXJsYXlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy5fc2V0UG9zaXRpb24odGhpcy5jb250YWluZXIsIHRoaXMudGFyZ2V0KTtcblxuICAgIGNvbnN0IGNvbnRhaW5lck9mZnNldCA9IERvbUhhbmRsZXIuZ2V0T2Zmc2V0KHRoaXMuY29udGFpbmVyKTtcbiAgICBjb25zdCB0YXJnZXRPZmZzZXQgPSBEb21IYW5kbGVyLmdldE9mZnNldCh0aGlzLnRhcmdldCk7XG5cbiAgICBpZiAodGhpcy53aXRoQXJyb3cpIHtcbiAgICAgIGNvbnN0IGJvcmRlclJhZGl1cyA9XG4gICAgICAgIHRoaXMuZG9jdW1lbnQuZGVmYXVsdFZpZXdcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGlvblxuICAgICAgICAgID8uZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLmNvbnRhaW5lciEpXG4gICAgICAgICAgPy5nZXRQcm9wZXJ0eVZhbHVlKCdib3JkZXItcmFkaXVzJykgfHwgJzAnO1xuXG4gICAgICBsZXQgYXJyb3dMZWZ0ID0gMDtcblxuICAgICAgY29uc3QgY29udGFpbmVyV2lkdGggPSB0aGlzLmNvbnRhaW5lcj8ub2Zmc2V0V2lkdGggfHwgMDtcblxuICAgICAgaWYgKGNvbnRhaW5lck9mZnNldC5sZWZ0IDwgdGFyZ2V0T2Zmc2V0LmxlZnQpIHtcbiAgICAgICAgYXJyb3dMZWZ0ID1cbiAgICAgICAgICAyMCArXG4gICAgICAgICAgdGFyZ2V0T2Zmc2V0LmxlZnQgLVxuICAgICAgICAgIGNvbnRhaW5lck9mZnNldC5sZWZ0IC1cbiAgICAgICAgICBwYXJzZUZsb2F0KGJvcmRlclJhZGl1cykgKiAyO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgdGFyZ2V0V2lkdGggPSB0aGlzLnRhcmdldD8ub2Zmc2V0V2lkdGggfHwgMDtcbiAgICAgICAgYXJyb3dMZWZ0ID0gTWF0aC5taW4odGFyZ2V0V2lkdGggLyAyLCBjb250YWluZXJXaWR0aCAvIDIpO1xuICAgICAgfVxuICAgICAgYXJyb3dMZWZ0ID0gTWF0aC5taW4oTWF0aC5tYXgoYXJyb3dMZWZ0LCAxMiksIGNvbnRhaW5lcldpZHRoIC0gMTIpO1xuICAgICAgdGhpcy5jb250YWluZXI/LnN0eWxlLnNldFByb3BlcnR5KCctLW92ZXJsYXlBcnJvd0xlZnQnLCBgJHthcnJvd0xlZnR9cHhgKTtcbiAgICB9XG5cbiAgICBpZiAoY29udGFpbmVyT2Zmc2V0LnRvcCA8IHRhcmdldE9mZnNldC50b3ApIHtcbiAgICAgIERvbUhhbmRsZXIuYWRkQ2xhc3ModGhpcy5jb250YWluZXIsICdjcHMtbWVudS1jb250YWluZXItZmxpcHBlZCcpO1xuICAgIH1cbiAgfVxuXG4gIG9uQW5pbWF0aW9uU3RhcnQoZXZlbnQ6IEFuaW1hdGlvbkV2ZW50KSB7XG4gICAgaWYgKGV2ZW50LnRvU3RhdGUgPT09ICdjbG9zZScpIHtcbiAgICAgIHRoaXMuYmVmb3JlTWVudUhpZGRlbi5lbWl0KHRoaXMuaGlkZVJlYXNvbik7XG4gICAgfSBlbHNlIGlmIChldmVudC50b1N0YXRlID09PSAnb3BlbicpIHtcbiAgICAgIHRoaXMuY29udGFpbmVyID0gZXZlbnQuZWxlbWVudDtcbiAgICAgIGlmICh0aGlzLmNvbnRhaW5lcikgdGhpcy5yZXNpemVPYnNlcnZlci5vYnNlcnZlKHRoaXMuY29udGFpbmVyKTtcbiAgICAgIHRoaXMuYXBwZW5kQ29udGFpbmVyKCk7XG4gICAgICB0aGlzLmFsaWduKCk7XG4gICAgICB0aGlzLmJpbmREb2N1bWVudENsaWNrTGlzdGVuZXIoKTtcbiAgICAgIHRoaXMuYmluZERvY3VtZW50S2V5ZG93bkxpc3RlbmVyKCk7XG4gICAgICB0aGlzLmJpbmREb2N1bWVudFJlc2l6ZUxpc3RlbmVyKCk7XG4gICAgICB0aGlzLmJpbmRTY3JvbGxMaXN0ZW5lcigpO1xuXG4gICAgICBpZiAodGhpcy5mb2N1c09uU2hvdykge1xuICAgICAgICB0aGlzLmZvY3VzKCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMub3ZlcmxheUV2ZW50TGlzdGVuZXIgPSAoZSkgPT4ge1xuICAgICAgICBpZiAodGhpcy5jb250YWluZXIgJiYgdGhpcy5jb250YWluZXIuY29udGFpbnMoZS50YXJnZXQpKSB7XG4gICAgICAgICAgdGhpcy5zZWxmQ2xpY2sgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICB0aGlzLm92ZXJsYXlTdWJzY3JpcHRpb24gPSB0aGlzLm92ZXJsYXlTZXJ2aWNlLmNsaWNrT2JzZXJ2YWJsZS5zdWJzY3JpYmUoXG4gICAgICAgIHRoaXMub3ZlcmxheUV2ZW50TGlzdGVuZXJcbiAgICAgICk7XG4gICAgICB0aGlzLm1lbnVTaG93bi5lbWl0KG51bGwpO1xuICAgIH1cblxuICAgIHRoaXMuaXNPdmVybGF5QW5pbWF0aW9uSW5Qcm9ncmVzcyA9IHRydWU7XG4gIH1cblxuICBvbkFuaW1hdGlvbkVuZChldmVudDogQW5pbWF0aW9uRXZlbnQpIHtcbiAgICBzd2l0Y2ggKGV2ZW50LnRvU3RhdGUpIHtcbiAgICAgIGNhc2UgJ3ZvaWQnOlxuICAgICAgICBpZiAodGhpcy5kZXN0cm95Q2FsbGJhY2spIHtcbiAgICAgICAgICB0aGlzLmRlc3Ryb3lDYWxsYmFjaygpO1xuICAgICAgICAgIHRoaXMuZGVzdHJveUNhbGxiYWNrID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLm92ZXJsYXlTdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICB0aGlzLm92ZXJsYXlTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnY2xvc2UnOlxuICAgICAgICBpZiAodGhpcy5hdXRvWkluZGV4KSB7XG4gICAgICAgICAgWkluZGV4VXRpbHMuY2xlYXIodGhpcy5jb250YWluZXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMub3ZlcmxheVN1YnNjcmlwdGlvbikge1xuICAgICAgICAgIHRoaXMub3ZlcmxheVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5vbkNvbnRhaW5lckRlc3Ryb3koKTtcbiAgICAgICAgdGhpcy5tZW51SGlkZGVuLmVtaXQodGhpcy5oaWRlUmVhc29uKTtcbiAgICAgICAgdGhpcy5yZW5kZXIgPSBmYWxzZTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgdGhpcy5pc092ZXJsYXlBbmltYXRpb25JblByb2dyZXNzID0gZmFsc2U7XG4gIH1cblxuICBmb2N1cygpIHtcbiAgICBjb25zdCBmb2N1c2FibGUgPSBEb21IYW5kbGVyLmZpbmRTaW5nbGUodGhpcy5jb250YWluZXIsICdbYXV0b2ZvY3VzXScpO1xuICAgIGlmIChmb2N1c2FibGUpIHtcbiAgICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gZm9jdXNhYmxlLmZvY3VzKCksIDUpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgb25XaW5kb3dSZXNpemUoKSB7XG4gICAgaWYgKHRoaXMub3ZlcmxheVZpc2libGUgJiYgIURvbUhhbmRsZXIuaXNUb3VjaERldmljZSgpKSB7XG4gICAgICB0aGlzLmhpZGUoQ3BzTWVudUhpZGVSZWFzb24uUkVTSVpFKTtcbiAgICB9XG4gIH1cblxuICBiaW5kRG9jdW1lbnRSZXNpemVMaXN0ZW5lcigpIHtcbiAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgaWYgKCF0aGlzLmRvY3VtZW50UmVzaXplTGlzdGVuZXIpIHtcbiAgICAgICAgY29uc3Qgd2luZG93ID0gdGhpcy5kb2N1bWVudC5kZWZhdWx0VmlldyBhcyBXaW5kb3c7XG4gICAgICAgIHRoaXMuZG9jdW1lbnRSZXNpemVMaXN0ZW5lciA9IHRoaXMucmVuZGVyZXIubGlzdGVuKFxuICAgICAgICAgIHdpbmRvdyxcbiAgICAgICAgICAncmVzaXplJyxcbiAgICAgICAgICB0aGlzLm9uV2luZG93UmVzaXplLmJpbmQodGhpcylcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB1bmJpbmREb2N1bWVudFJlc2l6ZUxpc3RlbmVyKCkge1xuICAgIGlmICh0aGlzLmRvY3VtZW50UmVzaXplTGlzdGVuZXIpIHtcbiAgICAgIHRoaXMuZG9jdW1lbnRSZXNpemVMaXN0ZW5lcigpO1xuICAgICAgdGhpcy5kb2N1bWVudFJlc2l6ZUxpc3RlbmVyID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBiaW5kU2Nyb2xsTGlzdGVuZXIoKSB7XG4gICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgIGlmICghdGhpcy5zY3JvbGxIYW5kbGVyKSB7XG4gICAgICAgIHRoaXMuc2Nyb2xsSGFuZGxlciA9IG5ldyBDb25uZWN0ZWRPdmVybGF5U2Nyb2xsSGFuZGxlcihcbiAgICAgICAgICB0aGlzLnRhcmdldCxcbiAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5vdmVybGF5VmlzaWJsZSkge1xuICAgICAgICAgICAgICB0aGlzLmhpZGUoQ3BzTWVudUhpZGVSZWFzb24uU0NST0xMKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuc2Nyb2xsSGFuZGxlci5iaW5kU2Nyb2xsTGlzdGVuZXIoKTtcbiAgICB9XG4gIH1cblxuICB1bmJpbmRTY3JvbGxMaXN0ZW5lcigpIHtcbiAgICBpZiAodGhpcy5zY3JvbGxIYW5kbGVyKSB7XG4gICAgICB0aGlzLnNjcm9sbEhhbmRsZXIudW5iaW5kU2Nyb2xsTGlzdGVuZXIoKTtcbiAgICB9XG4gIH1cblxuICBvbkNvbnRhaW5lckRlc3Ryb3koKSB7XG4gICAgaWYgKCEodGhpcy5jZCBhcyBWaWV3UmVmKS5kZXN0cm95ZWQpIHtcbiAgICAgIHRoaXMudGFyZ2V0ID0gbnVsbDtcbiAgICB9XG5cbiAgICB0aGlzLnVuYmluZERvY3VtZW50Q2xpY2tMaXN0ZW5lcigpO1xuICAgIHRoaXMudW5iaW5kRG9jdW1lbnRLZXlkb3duTGlzdGVuZXIoKTtcbiAgICB0aGlzLnVuYmluZERvY3VtZW50UmVzaXplTGlzdGVuZXIoKTtcbiAgICB0aGlzLnVuYmluZFNjcm9sbExpc3RlbmVyKCk7XG4gIH1cblxuICBwcml2YXRlIF9kZXN0cm95KCkge1xuICAgIGlmICh0aGlzLnNjcm9sbEhhbmRsZXIpIHtcbiAgICAgIHRoaXMuc2Nyb2xsSGFuZGxlci5kZXN0cm95KCk7XG4gICAgICB0aGlzLnNjcm9sbEhhbmRsZXIgPSBudWxsO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNvbnRhaW5lciAmJiB0aGlzLmF1dG9aSW5kZXgpIHtcbiAgICAgIFpJbmRleFV0aWxzLmNsZWFyKHRoaXMuY29udGFpbmVyKTtcbiAgICB9XG5cbiAgICBpZiAoISh0aGlzLmNkIGFzIFZpZXdSZWYpLmRlc3Ryb3llZCkge1xuICAgICAgdGhpcy50YXJnZXQgPSBudWxsO1xuICAgIH1cblxuICAgIHRoaXMuZGVzdHJveUNhbGxiYWNrID0gbnVsbDtcbiAgICBpZiAodGhpcy5jb250YWluZXIpIHtcbiAgICAgIHRoaXMucmVzdG9yZUFwcGVuZCgpO1xuICAgICAgdGhpcy5vbkNvbnRhaW5lckRlc3Ryb3koKTtcbiAgICB9XG5cbiAgICB0aGlzLm92ZXJsYXlTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG5cbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyPy5kaXNjb25uZWN0KCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9kZXN0cm95KCk7XG4gIH1cbn1cbiIsIjxkaXZcbiAgKm5nSWY9XCJyZW5kZXJcIlxuICBjbGFzcz1cImNwcy1tZW51LWNvbnRhaW5lclwiXG4gIFtuZ0NsYXNzXT1cInsgJ2Nwcy1tZW51LW5vLWFycm93JzogIXdpdGhBcnJvdyB9XCJcbiAgW2NsYXNzXT1cImNvbnRhaW5lckNsYXNzXCJcbiAgKG1vdXNlZG93bik9XCJvbk92ZXJsYXlDbGljaygkZXZlbnQpXCJcbiAgW0BhbmltYXRpb25dPVwie1xuICAgIHZhbHVlOiBvdmVybGF5VmlzaWJsZSA/ICdvcGVuJyA6ICdjbG9zZScsXG4gICAgcGFyYW1zOiB7XG4gICAgICBzaG93VHJhbnNpdGlvblBhcmFtczogc2hvd1RyYW5zaXRpb25PcHRpb25zLFxuICAgICAgaGlkZVRyYW5zaXRpb25QYXJhbXM6IGhpZGVUcmFuc2l0aW9uT3B0aW9uc1xuICAgIH1cbiAgfVwiXG4gIChAYW5pbWF0aW9uLnN0YXJ0KT1cIm9uQW5pbWF0aW9uU3RhcnQoJGV2ZW50KVwiXG4gIChAYW5pbWF0aW9uLmRvbmUpPVwib25BbmltYXRpb25FbmQoJGV2ZW50KVwiPlxuICA8ZGl2IChtb3VzZWRvd24pPVwib25Db250ZW50Q2xpY2soKVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtcy5sZW5ndGggPCAxXCI+XG4gICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPGRpdlxuICAgICAgKm5nSWY9XCJpdGVtcy5sZW5ndGggPiAwXCJcbiAgICAgIGNsYXNzPVwiY3BzLW1lbnUtY29udGVudFwiXG4gICAgICBbbmdDbGFzc109XCJ7ICdjcHMtbWVudS1jb250ZW50LWNvbXByZXNzZWQnOiBjb21wcmVzc2VkIH1cIj5cbiAgICAgIDxkaXYgKm5nSWY9XCJoZWFkZXIgJiYgIWNvbXByZXNzZWRcIiBjbGFzcz1cImNwcy1tZW51LWhlYWRlclwiPlxuICAgICAgICB7eyBoZWFkZXIgfX1cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGl0ZW1zOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgIDxhXG4gICAgICAgICAgKm5nSWY9XCIhaXRlbS51cmxcIlxuICAgICAgICAgIChjbGljayk9XCJvbkl0ZW1DbGljaygkZXZlbnQsIGl0ZW0pXCJcbiAgICAgICAgICBbbmdDbGFzc109XCJpdGVtc0NsYXNzZXNbaV1cIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICBpdGVtVGVtcGxhdGU7XG4gICAgICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgICBpdGVtOiBpdGVtXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2E+XG4gICAgICAgIDxhXG4gICAgICAgICAgKm5nSWY9XCJpdGVtLnVybCAmJiBpdGVtLnVybC5zdGFydHNXaXRoKCcvJylcIlxuICAgICAgICAgIChjbGljayk9XCJvbkl0ZW1DbGljaygkZXZlbnQsIGl0ZW0pXCJcbiAgICAgICAgICBbcm91dGVyTGlua109XCJpdGVtLnVybFwiXG4gICAgICAgICAgW3RhcmdldF09XCJpdGVtLnRhcmdldFwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwiaXRlbXNDbGFzc2VzW2ldXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgaXRlbVRlbXBsYXRlO1xuICAgICAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAgICAgaXRlbTogaXRlbVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9hPlxuICAgICAgICA8YVxuICAgICAgICAgICpuZ0lmPVwiaXRlbS51cmwgJiYgIWl0ZW0udXJsLnN0YXJ0c1dpdGgoJy8nKVwiXG4gICAgICAgICAgKGNsaWNrKT1cIm9uSXRlbUNsaWNrKCRldmVudCwgaXRlbSlcIlxuICAgICAgICAgIFtocmVmXT1cIml0ZW0udXJsXCJcbiAgICAgICAgICBbYXR0ci50YXJnZXRdPVwiaXRlbS50YXJnZXRcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cIml0ZW1zQ2xhc3Nlc1tpXVwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgIGl0ZW1UZW1wbGF0ZTtcbiAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgIGl0ZW06IGl0ZW1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvYT5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2l0ZW1UZW1wbGF0ZSBsZXQtaXRlbT1cIml0ZW1cIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpdGVtLmxvYWRpbmc7IGVsc2Ugc3Bpbm5lck1lbnVJdGVtXCI+XG4gICAgPGRpdiBjbGFzcz1cImNwcy1tZW51LWl0ZW0taWNvblwiICpuZ0lmPVwid2l0aEljb25zXCI+XG4gICAgICA8Y3BzLWljb25cbiAgICAgICAgKm5nSWY9XCJpdGVtLmljb25cIlxuICAgICAgICBbaWNvbl09XCJpdGVtLmljb25cIlxuICAgICAgICBbY29sb3JdPVwiaXRlbS5kaXNhYmxlZCA/ICd0ZXh0LWxpZ2h0JyA6ICd0ZXh0LWRhcmsnXCJcbiAgICAgICAgW3NpemVdPVwiY29tcHJlc3NlZCA/ICdzbWFsbCcgOiAnbm9ybWFsJ1wiPjwvY3BzLWljb24+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNwcy1tZW51LWl0ZW0tY29udGVudFwiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJjcHMtbWVudS1pdGVtLWNvbnRlbnQtdGl0bGVcIj57eyBpdGVtLnRpdGxlIH19PC9zcGFuPlxuICAgICAgPHNwYW5cbiAgICAgICAgKm5nSWY9XCJpdGVtLmRlc2MgJiYgIWNvbXByZXNzZWRcIlxuICAgICAgICBjbGFzcz1cImNwcy1tZW51LWl0ZW0tY29udGVudC1kZXNjXCJcbiAgICAgICAgPnt7IGl0ZW0uZGVzYyB9fTwvc3BhblxuICAgICAgPlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjc3Bpbm5lck1lbnVJdGVtPlxuICA8c3BhbiBjbGFzcz1cImNwcy1tZW51LWl0ZW0tc3Bpbm5lclwiPlxuICAgIDxjcHMtcHJvZ3Jlc3MtY2lyY3VsYXJcbiAgICAgIFtzdHJva2VXaWR0aF09XCIyXCJcbiAgICAgIFtjb2xvcl09XCJjb21wcmVzc2VkID8gJ3ByZXBhcmVkJyA6ICdjYWxtJ1wiXG4gICAgICBbZGlhbWV0ZXJdPVwiMTZcIj5cbiAgICA8L2Nwcy1wcm9ncmVzcy1jaXJjdWxhcj5cbiAgPC9zcGFuPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
|
|
2
|
-
import { CommonModule } from '@angular/common';
|
|
1
|
+
import { Component, EventEmitter, Inject, Input, Output, ViewChild } from '@angular/core';
|
|
2
|
+
import { CommonModule, DOCUMENT } from '@angular/common';
|
|
3
3
|
import { PaginatorModule } from 'primeng/paginator';
|
|
4
4
|
import { CpsSelectComponent } from '../cps-select/cps-select.component';
|
|
5
5
|
import { getCSSColor } from '../../utils/colors-utils';
|
|
@@ -11,7 +11,9 @@ import * as i2 from "@angular/forms";
|
|
|
11
11
|
* @group Components
|
|
12
12
|
*/
|
|
13
13
|
export class CpsPaginatorComponent {
|
|
14
|
-
constructor
|
|
14
|
+
// eslint-disable-next-line no-useless-constructor
|
|
15
|
+
constructor(document) {
|
|
16
|
+
this.document = document;
|
|
15
17
|
/**
|
|
16
18
|
* Zero-relative number of the first row to be displayed.
|
|
17
19
|
* @group Props
|
|
@@ -56,7 +58,7 @@ export class CpsPaginatorComponent {
|
|
|
56
58
|
this.rowOptions = [];
|
|
57
59
|
}
|
|
58
60
|
ngOnInit() {
|
|
59
|
-
this.backgroundColor = getCSSColor(this.backgroundColor);
|
|
61
|
+
this.backgroundColor = getCSSColor(this.backgroundColor, this.document);
|
|
60
62
|
if (this.rowsPerPageOptions.length < 1)
|
|
61
63
|
this.rowsPerPageOptions = [5, 10, 25, 50];
|
|
62
64
|
if (!this.rows)
|
|
@@ -84,13 +86,16 @@ export class CpsPaginatorComponent {
|
|
|
84
86
|
this.paginator.rows = rows;
|
|
85
87
|
this.paginator.changePage(this.paginator.getPage());
|
|
86
88
|
}
|
|
87
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: CpsPaginatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
89
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: CpsPaginatorComponent, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
88
90
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.0", type: CpsPaginatorComponent, isStandalone: true, selector: "cps-paginator", inputs: { first: "first", rows: "rows", totalRecords: "totalRecords", rowsPerPageOptions: "rowsPerPageOptions", alwaysShow: "alwaysShow", backgroundColor: "backgroundColor", resetPageOnRowsChange: "resetPageOnRowsChange" }, outputs: { pageChanged: "pageChanged" }, viewQueries: [{ propertyName: "paginator", first: true, predicate: ["paginator"], descendants: true }], ngImport: i0, template: "<p-paginator\n #paginator\n (onPageChange)=\"onPageChange($event)\"\n [first]=\"first\"\n [rows]=\"rows\"\n [style]=\"{ background: backgroundColor }\"\n [totalRecords]=\"totalRecords\"\n [showFirstLastIcon]=\"true\"\n [showCurrentPageReport]=\"true\"\n [alwaysShow]=\"alwaysShow\"\n [templateLeft]=\"itemsPerPageTemplate\"\n currentPageReportTemplate=\"{first} - {last} of {totalRecords}\">\n</p-paginator>\n\n<ng-template #itemsPerPageTemplate>\n <div class=\"cps-paginator-itms-per-page\">\n <span class=\"cps-paginator-items-per-page-title\">Items per page: </span>\n <cps-select\n [options]=\"rowOptions\"\n [hideDetails]=\"true\"\n [(ngModel)]=\"rows\"\n (valueChanged)=\"onRowsPerPageChange($event)\"\n [returnObject]=\"false\"\n optionsClass=\"cps-paginator-page-options\"></cps-select>\n </div>\n</ng-template>\n", styles: [":host ::ng-deep .p-paginator{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;color:var(--cps-color-text-dark);padding:.5rem 1rem}:host ::ng-deep .p-paginator-left-content{margin-right:auto}:host ::ng-deep .p-paginator-left-content .cps-paginator-itms-per-page{display:inline-flex;align-items:center}:host ::ng-deep .p-paginator-left-content .cps-paginator-itms-per-page .cps-paginator-items-per-page-title{font-family:Source Sans Pro,sans-serif;font-size:14px;margin-right:12px;cursor:default}:host ::ng-deep .p-paginator-left-content .cps-paginator-itms-per-page .cps-select-box{min-height:32px!important;background:transparent!important}:host ::ng-deep .p-paginator-left-content .cps-paginator-itms-per-page .cps-select-box .cps-select-box-items{font-size:14px!important}:host ::ng-deep .p-paginator-left-content .cps-paginator-itms-per-page .cps-select-box .cps-select-box-chevron .cps-icon{width:14px;height:14px}:host ::ng-deep .p-paginator .p-paginator-current{background-color:transparent;border:0 none;color:var(--cps-color-text-dark);min-width:3rem;margin:.143rem;padding:0 .5rem;font-family:Source Sans Pro,sans-serif;font-size:14px;height:unset}:host ::ng-deep .p-paginator-page,:host ::ng-deep .p-paginator-next,:host ::ng-deep .p-paginator-last,:host ::ng-deep .p-paginator-first,:host ::ng-deep .p-paginator-prev,:host ::ng-deep .p-paginator-current{cursor:pointer;display:inline-flex;align-items:center;justify-content:center;line-height:1;-webkit-user-select:none;user-select:none;overflow:hidden;position:relative}:host ::ng-deep .p-paginator-current{cursor:default}:host ::ng-deep .p-paginator .p-paginator-first:not(.p-disabled):not(.p-highlight):hover,:host ::ng-deep .p-paginator .p-paginator-prev:not(.p-disabled):not(.p-highlight):hover,:host ::ng-deep .p-paginator .p-paginator-next:not(.p-disabled):not(.p-highlight):hover,:host ::ng-deep .p-paginator .p-paginator-last:not(.p-disabled):not(.p-highlight):hover{background:var(--cps-color-highlight-hover);border-color:unset}:host ::ng-deep .p-paginator .p-paginator-first:not(.p-disabled):not(.p-highlight):active,:host ::ng-deep .p-paginator .p-paginator-prev:not(.p-disabled):not(.p-highlight):active,:host ::ng-deep .p-paginator .p-paginator-next:not(.p-disabled):not(.p-highlight):active,:host ::ng-deep .p-paginator .p-paginator-last:not(.p-disabled):not(.p-highlight):active{background:var(--cps-color-highlight-active)}:host ::ng-deep .p-paginator .p-paginator-first,:host ::ng-deep .p-paginator .p-paginator-prev,:host ::ng-deep .p-paginator .p-paginator-next,:host ::ng-deep .p-paginator .p-paginator-last{background-color:transparent;border:1px solid var(--cps-color-text-dark);border-radius:4px;color:var(--cps-color-text-dark);min-width:32px;height:32px;margin:.143rem;transition:box-shadow .2s}:host ::ng-deep .p-icon-wrapper{display:inline-flex}:host ::ng-deep .p-disabled,:host ::ng-deep .p-disabled *{cursor:default!important;pointer-events:none}:host ::ng-deep .p-paginator .p-paginator-pages .p-paginator-page.p-highlight{background:var(--cps-color-calm);border-color:var(--cps-color-calm);color:#fff}:host ::ng-deep .p-paginator .p-paginator-pages .p-paginator-page:not(.p-highlight):hover{background:var(--cps-color-highlight-hover);border-color:unset}:host ::ng-deep .p-paginator .p-paginator-pages .p-paginator-page:not(.p-highlight):active{background:var(--cps-color-highlight-active)}:host ::ng-deep .p-paginator .p-paginator-pages .p-paginator-page{background-color:transparent;border:1px solid var(--cps-color-text-dark);border-radius:4px;color:var(--cps-color-text-dark);min-width:32px;height:32px;margin:.143rem;transition:box-shadow .2s}:host ::ng-deep .p-paginator-element:focus{z-index:1;position:relative}:host ::ng-deep .p-link:focus{outline:0 none;outline-offset:0;box-shadow:unset}:host ::ng-deep .p-link{text-align:left;background-color:transparent;margin:0;padding:0;border:none;cursor:pointer;-webkit-user-select:none;user-select:none;font-size:14px;font-family:Source Sans Pro,sans-serif}:host ::ng-deep .p-disabled,:host ::ng-deep .p-component:disabled{opacity:.4}::ng-deep .cps-select-options-menu.cps-paginator-page-options .cps-select-options-option{font-size:14px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: PaginatorModule }, { kind: "component", type: i1.Paginator, selector: "p-paginator", inputs: ["pageLinkSize", "style", "styleClass", "alwaysShow", "dropdownAppendTo", "templateLeft", "templateRight", "appendTo", "dropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showFirstLastIcon", "totalRecords", "rows", "rowsPerPageOptions", "showJumpToPageDropdown", "showJumpToPageInput", "showPageLinks", "locale", "dropdownItemTemplate", "first"], outputs: ["onPageChange"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: CpsSelectComponent, selector: "cps-select", inputs: ["label", "placeholder", "hint", "returnObject", "multiple", "disabled", "width", "selectAll", "chips", "closableChips", "clearable", "openOnClear", "options", "keepInitialOrder", "optionLabel", "optionValue", "optionInfo", "hideDetails", "persistentClear", "prefixIcon", "prefixIconSize", "loading", "virtualScroll", "numToleratedItems", "infoTooltip", "infoTooltipClass", "infoTooltipMaxWidth", "infoTooltipPersistent", "infoTooltipPosition", "optionsClass", "appearance", "showChevron", "value"], outputs: ["valueChanged", "focused", "blurred"] }] }); }
|
|
89
91
|
}
|
|
90
92
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: CpsPaginatorComponent, decorators: [{
|
|
91
93
|
type: Component,
|
|
92
94
|
args: [{ selector: 'cps-paginator', standalone: true, imports: [CommonModule, PaginatorModule, CpsSelectComponent], template: "<p-paginator\n #paginator\n (onPageChange)=\"onPageChange($event)\"\n [first]=\"first\"\n [rows]=\"rows\"\n [style]=\"{ background: backgroundColor }\"\n [totalRecords]=\"totalRecords\"\n [showFirstLastIcon]=\"true\"\n [showCurrentPageReport]=\"true\"\n [alwaysShow]=\"alwaysShow\"\n [templateLeft]=\"itemsPerPageTemplate\"\n currentPageReportTemplate=\"{first} - {last} of {totalRecords}\">\n</p-paginator>\n\n<ng-template #itemsPerPageTemplate>\n <div class=\"cps-paginator-itms-per-page\">\n <span class=\"cps-paginator-items-per-page-title\">Items per page: </span>\n <cps-select\n [options]=\"rowOptions\"\n [hideDetails]=\"true\"\n [(ngModel)]=\"rows\"\n (valueChanged)=\"onRowsPerPageChange($event)\"\n [returnObject]=\"false\"\n optionsClass=\"cps-paginator-page-options\"></cps-select>\n </div>\n</ng-template>\n", styles: [":host ::ng-deep .p-paginator{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;color:var(--cps-color-text-dark);padding:.5rem 1rem}:host ::ng-deep .p-paginator-left-content{margin-right:auto}:host ::ng-deep .p-paginator-left-content .cps-paginator-itms-per-page{display:inline-flex;align-items:center}:host ::ng-deep .p-paginator-left-content .cps-paginator-itms-per-page .cps-paginator-items-per-page-title{font-family:Source Sans Pro,sans-serif;font-size:14px;margin-right:12px;cursor:default}:host ::ng-deep .p-paginator-left-content .cps-paginator-itms-per-page .cps-select-box{min-height:32px!important;background:transparent!important}:host ::ng-deep .p-paginator-left-content .cps-paginator-itms-per-page .cps-select-box .cps-select-box-items{font-size:14px!important}:host ::ng-deep .p-paginator-left-content .cps-paginator-itms-per-page .cps-select-box .cps-select-box-chevron .cps-icon{width:14px;height:14px}:host ::ng-deep .p-paginator .p-paginator-current{background-color:transparent;border:0 none;color:var(--cps-color-text-dark);min-width:3rem;margin:.143rem;padding:0 .5rem;font-family:Source Sans Pro,sans-serif;font-size:14px;height:unset}:host ::ng-deep .p-paginator-page,:host ::ng-deep .p-paginator-next,:host ::ng-deep .p-paginator-last,:host ::ng-deep .p-paginator-first,:host ::ng-deep .p-paginator-prev,:host ::ng-deep .p-paginator-current{cursor:pointer;display:inline-flex;align-items:center;justify-content:center;line-height:1;-webkit-user-select:none;user-select:none;overflow:hidden;position:relative}:host ::ng-deep .p-paginator-current{cursor:default}:host ::ng-deep .p-paginator .p-paginator-first:not(.p-disabled):not(.p-highlight):hover,:host ::ng-deep .p-paginator .p-paginator-prev:not(.p-disabled):not(.p-highlight):hover,:host ::ng-deep .p-paginator .p-paginator-next:not(.p-disabled):not(.p-highlight):hover,:host ::ng-deep .p-paginator .p-paginator-last:not(.p-disabled):not(.p-highlight):hover{background:var(--cps-color-highlight-hover);border-color:unset}:host ::ng-deep .p-paginator .p-paginator-first:not(.p-disabled):not(.p-highlight):active,:host ::ng-deep .p-paginator .p-paginator-prev:not(.p-disabled):not(.p-highlight):active,:host ::ng-deep .p-paginator .p-paginator-next:not(.p-disabled):not(.p-highlight):active,:host ::ng-deep .p-paginator .p-paginator-last:not(.p-disabled):not(.p-highlight):active{background:var(--cps-color-highlight-active)}:host ::ng-deep .p-paginator .p-paginator-first,:host ::ng-deep .p-paginator .p-paginator-prev,:host ::ng-deep .p-paginator .p-paginator-next,:host ::ng-deep .p-paginator .p-paginator-last{background-color:transparent;border:1px solid var(--cps-color-text-dark);border-radius:4px;color:var(--cps-color-text-dark);min-width:32px;height:32px;margin:.143rem;transition:box-shadow .2s}:host ::ng-deep .p-icon-wrapper{display:inline-flex}:host ::ng-deep .p-disabled,:host ::ng-deep .p-disabled *{cursor:default!important;pointer-events:none}:host ::ng-deep .p-paginator .p-paginator-pages .p-paginator-page.p-highlight{background:var(--cps-color-calm);border-color:var(--cps-color-calm);color:#fff}:host ::ng-deep .p-paginator .p-paginator-pages .p-paginator-page:not(.p-highlight):hover{background:var(--cps-color-highlight-hover);border-color:unset}:host ::ng-deep .p-paginator .p-paginator-pages .p-paginator-page:not(.p-highlight):active{background:var(--cps-color-highlight-active)}:host ::ng-deep .p-paginator .p-paginator-pages .p-paginator-page{background-color:transparent;border:1px solid var(--cps-color-text-dark);border-radius:4px;color:var(--cps-color-text-dark);min-width:32px;height:32px;margin:.143rem;transition:box-shadow .2s}:host ::ng-deep .p-paginator-element:focus{z-index:1;position:relative}:host ::ng-deep .p-link:focus{outline:0 none;outline-offset:0;box-shadow:unset}:host ::ng-deep .p-link{text-align:left;background-color:transparent;margin:0;padding:0;border:none;cursor:pointer;-webkit-user-select:none;user-select:none;font-size:14px;font-family:Source Sans Pro,sans-serif}:host ::ng-deep .p-disabled,:host ::ng-deep .p-component:disabled{opacity:.4}::ng-deep .cps-select-options-menu.cps-paginator-page-options .cps-select-options-option{font-size:14px}\n"] }]
|
|
93
|
-
}],
|
|
95
|
+
}], ctorParameters: () => [{ type: Document, decorators: [{
|
|
96
|
+
type: Inject,
|
|
97
|
+
args: [DOCUMENT]
|
|
98
|
+
}] }], propDecorators: { first: [{
|
|
94
99
|
type: Input
|
|
95
100
|
}], rows: [{
|
|
96
101
|
type: Input
|
|
@@ -110,4 +115,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImpor
|
|
|
110
115
|
type: ViewChild,
|
|
111
116
|
args: ['paginator']
|
|
112
117
|
}] } });
|
|
113
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
118
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3BzLXBhZ2luYXRvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jcHMtdWkta2l0L3NyYy9saWIvY29tcG9uZW50cy9jcHMtcGFnaW5hdG9yL2Nwcy1wYWdpbmF0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3BzLXVpLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvY3BzLXBhZ2luYXRvci9jcHMtcGFnaW5hdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBYSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7QUFFdkQ7OztHQUdHO0FBUUgsTUFBTSxPQUFPLHFCQUFxQjtJQXVEaEMsa0RBQWtEO0lBQ2xELFlBQXNDLFFBQWtCO1FBQWxCLGFBQVEsR0FBUixRQUFRLENBQVU7UUF2RHhEOzs7V0FHRztRQUNNLFVBQUssR0FBRyxDQUFDLENBQUM7UUFFbkI7OztXQUdHO1FBQ00sU0FBSSxHQUFHLENBQUMsQ0FBQztRQUVsQjs7O1dBR0c7UUFDTSxpQkFBWSxHQUFHLENBQUMsQ0FBQztRQUUxQjs7O1dBR0c7UUFDTSx1QkFBa0IsR0FBYSxFQUFFLENBQUM7UUFFM0M7OztXQUdHO1FBQ00sZUFBVSxHQUFHLElBQUksQ0FBQztRQUUzQjs7O1dBR0c7UUFDTSxvQkFBZSxHQUFHLGFBQWEsQ0FBQztRQUV6Qzs7O1dBR0c7UUFDTSwwQkFBcUIsR0FBRyxLQUFLLENBQUM7UUFFdkM7Ozs7V0FJRztRQUNPLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUtoRCxlQUFVLEdBQXVDLEVBQUUsQ0FBQztJQUdPLENBQUM7SUFFNUQsUUFBUTtRQUNOLElBQUksQ0FBQyxlQUFlLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3hFLElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sR0FBRyxDQUFDO1lBQ3BDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRTVDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSTtZQUFFLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ2xELENBQUM7WUFDSixJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDakQsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO1lBQzFELENBQUM7UUFDSCxDQUFDO1FBRUQsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3BELEtBQUssRUFBRSxFQUFFLEdBQUcsQ0FBQztZQUNiLEtBQUssRUFBRSxDQUFDO1NBQ1QsQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQVU7UUFDckIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQztRQUN2QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQsbUJBQW1CLENBQUMsSUFBWTtRQUM5QixJQUFJLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1lBQy9CLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1lBQ2YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQzNCLENBQUM7UUFDRCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDM0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ3RELENBQUM7OEdBekZVLHFCQUFxQixrQkF3RFosUUFBUTtrR0F4RGpCLHFCQUFxQiwwYkN6QmxDLHcyQkEwQkEsd3FJRExZLFlBQVksOEJBQUUsZUFBZSw0ekJBQUUsa0JBQWtCOzsyRkFJaEQscUJBQXFCO2tCQVBqQyxTQUFTOytCQUNFLGVBQWUsY0FDYixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsZUFBZSxFQUFFLGtCQUFrQixDQUFDOzswQkE0RC9DLE1BQU07MkJBQUMsUUFBUTt5Q0FuRG5CLEtBQUs7c0JBQWIsS0FBSztnQkFNRyxJQUFJO3NCQUFaLEtBQUs7Z0JBTUcsWUFBWTtzQkFBcEIsS0FBSztnQkFNRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBTUcsVUFBVTtzQkFBbEIsS0FBSztnQkFNRyxlQUFlO3NCQUF2QixLQUFLO2dCQU1HLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFPSSxXQUFXO3NCQUFwQixNQUFNO2dCQUdQLFNBQVM7c0JBRFIsU0FBUzt1QkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUsIERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFBhZ2luYXRvciwgUGFnaW5hdG9yTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9wYWdpbmF0b3InO1xuaW1wb3J0IHsgQ3BzU2VsZWN0Q29tcG9uZW50IH0gZnJvbSAnLi4vY3BzLXNlbGVjdC9jcHMtc2VsZWN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBnZXRDU1NDb2xvciB9IGZyb20gJy4uLy4uL3V0aWxzL2NvbG9ycy11dGlscyc7XG5cbi8qKlxuICogQ3BzUGFnaW5hdG9yQ29tcG9uZW50IGlzIGEgZ2VuZXJpYyBjb21wb25lbnQgdG8gZGlzcGxheSBjb250ZW50IGluIHBhZ2VkIGZvcm1hdC5cbiAqIEBncm91cCBDb21wb25lbnRzXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Nwcy1wYWdpbmF0b3InLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBQYWdpbmF0b3JNb2R1bGUsIENwc1NlbGVjdENvbXBvbmVudF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9jcHMtcGFnaW5hdG9yLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY3BzLXBhZ2luYXRvci5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIENwc1BhZ2luYXRvckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIC8qKlxuICAgKiBaZXJvLXJlbGF0aXZlIG51bWJlciBvZiB0aGUgZmlyc3Qgcm93IHRvIGJlIGRpc3BsYXllZC5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBmaXJzdCA9IDA7XG5cbiAgLyoqXG4gICAqIFJvd3MgY291bnQgdG8gZGlzcGxheSBwZXIgcGFnZS5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSByb3dzID0gMDtcblxuICAvKipcbiAgICogTnVtYmVyIG9mIHRvdGFsIHJlY29yZHMuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgdG90YWxSZWNvcmRzID0gMDtcblxuICAvKipcbiAgICogQXJyYXkgb2YgaW50ZWdlciB2YWx1ZXMgdG8gZGlzcGxheSBpbnNpZGUgcm93cyBwZXIgcGFnZSBkcm9wZG93bi5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSByb3dzUGVyUGFnZU9wdGlvbnM6IG51bWJlcltdID0gW107XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgd2hldGhlciB0byBzaG93IGl0IGV2ZW4gdGhlcmUgaXMgb25seSBvbmUgcGFnZS5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBhbHdheXNTaG93ID0gdHJ1ZTtcblxuICAvKipcbiAgICogQ29sb3Igb2YgcGFnaW5hdG9yIGJhY2tncm91bmQuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgYmFja2dyb3VuZENvbG9yID0gJ3RyYW5zcGFyZW50JztcblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRvIHJlc2V0IHBhZ2UgaW5kZXggd2hlbiB0aGUgbnVtYmVyIG9mIHJvd3MgcGVyIHBhZ2UgY2hhbmdlcy5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSByZXNldFBhZ2VPblJvd3NDaGFuZ2UgPSBmYWxzZTtcblxuICAvKipcbiAgICogQ2FsbGJhY2sgdG8gaW52b2tlIHdoZW4gcGFnZSBjaGFuZ2VzLCB0aGUgZXZlbnQgb2JqZWN0IGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IHRoZSBuZXcgc3RhdGUuXG4gICAqIEBwYXJhbSB7YW55fSBhbnkgLSBwYWdlIGNoYW5nZWQuXG4gICAqIEBncm91cCBFbWl0c1xuICAgKi9cbiAgQE91dHB1dCgpIHBhZ2VDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgQFZpZXdDaGlsZCgncGFnaW5hdG9yJylcbiAgcGFnaW5hdG9yITogUGFnaW5hdG9yO1xuXG4gIHJvd09wdGlvbnM6IHsgbGFiZWw6IHN0cmluZzsgdmFsdWU6IG51bWJlciB9W10gPSBbXTtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlbGVzcy1jb25zdHJ1Y3RvclxuICBjb25zdHJ1Y3RvcihASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIGRvY3VtZW50OiBEb2N1bWVudCkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmJhY2tncm91bmRDb2xvciA9IGdldENTU0NvbG9yKHRoaXMuYmFja2dyb3VuZENvbG9yLCB0aGlzLmRvY3VtZW50KTtcbiAgICBpZiAodGhpcy5yb3dzUGVyUGFnZU9wdGlvbnMubGVuZ3RoIDwgMSlcbiAgICAgIHRoaXMucm93c1BlclBhZ2VPcHRpb25zID0gWzUsIDEwLCAyNSwgNTBdO1xuXG4gICAgaWYgKCF0aGlzLnJvd3MpIHRoaXMucm93cyA9IHRoaXMucm93c1BlclBhZ2VPcHRpb25zWzBdO1xuICAgIGVsc2Uge1xuICAgICAgaWYgKCF0aGlzLnJvd3NQZXJQYWdlT3B0aW9ucy5pbmNsdWRlcyh0aGlzLnJvd3MpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcigncm93c1BlclBhZ2VPcHRpb25zIG11c3QgaW5jbHVkZSByb3dzJyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5yb3dPcHRpb25zID0gdGhpcy5yb3dzUGVyUGFnZU9wdGlvbnMubWFwKCh2KSA9PiAoe1xuICAgICAgbGFiZWw6ICcnICsgdixcbiAgICAgIHZhbHVlOiB2XG4gICAgfSkpO1xuICB9XG5cbiAgb25QYWdlQ2hhbmdlKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLmZpcnN0ID0gZXZlbnQuZmlyc3Q7XG4gICAgdGhpcy5yb3dzID0gZXZlbnQucm93cztcbiAgICB0aGlzLnBhZ2VDaGFuZ2VkLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgb25Sb3dzUGVyUGFnZUNoYW5nZShyb3dzOiBudW1iZXIpIHtcbiAgICBpZiAodGhpcy5yZXNldFBhZ2VPblJvd3NDaGFuZ2UpIHtcbiAgICAgIHRoaXMuZmlyc3QgPSAwO1xuICAgICAgdGhpcy5wYWdpbmF0b3IuZmlyc3QgPSAwO1xuICAgIH1cbiAgICB0aGlzLnBhZ2luYXRvci5yb3dzID0gcm93cztcbiAgICB0aGlzLnBhZ2luYXRvci5jaGFuZ2VQYWdlKHRoaXMucGFnaW5hdG9yLmdldFBhZ2UoKSk7XG4gIH1cbn1cbiIsIjxwLXBhZ2luYXRvclxuICAjcGFnaW5hdG9yXG4gIChvblBhZ2VDaGFuZ2UpPVwib25QYWdlQ2hhbmdlKCRldmVudClcIlxuICBbZmlyc3RdPVwiZmlyc3RcIlxuICBbcm93c109XCJyb3dzXCJcbiAgW3N0eWxlXT1cInsgYmFja2dyb3VuZDogYmFja2dyb3VuZENvbG9yIH1cIlxuICBbdG90YWxSZWNvcmRzXT1cInRvdGFsUmVjb3Jkc1wiXG4gIFtzaG93Rmlyc3RMYXN0SWNvbl09XCJ0cnVlXCJcbiAgW3Nob3dDdXJyZW50UGFnZVJlcG9ydF09XCJ0cnVlXCJcbiAgW2Fsd2F5c1Nob3ddPVwiYWx3YXlzU2hvd1wiXG4gIFt0ZW1wbGF0ZUxlZnRdPVwiaXRlbXNQZXJQYWdlVGVtcGxhdGVcIlxuICBjdXJyZW50UGFnZVJlcG9ydFRlbXBsYXRlPVwie2ZpcnN0fSAtIHtsYXN0fSBvZiB7dG90YWxSZWNvcmRzfVwiPlxuPC9wLXBhZ2luYXRvcj5cblxuPG5nLXRlbXBsYXRlICNpdGVtc1BlclBhZ2VUZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cImNwcy1wYWdpbmF0b3ItaXRtcy1wZXItcGFnZVwiPlxuICAgIDxzcGFuIGNsYXNzPVwiY3BzLXBhZ2luYXRvci1pdGVtcy1wZXItcGFnZS10aXRsZVwiPkl0ZW1zIHBlciBwYWdlOiA8L3NwYW4+XG4gICAgPGNwcy1zZWxlY3RcbiAgICAgIFtvcHRpb25zXT1cInJvd09wdGlvbnNcIlxuICAgICAgW2hpZGVEZXRhaWxzXT1cInRydWVcIlxuICAgICAgWyhuZ01vZGVsKV09XCJyb3dzXCJcbiAgICAgICh2YWx1ZUNoYW5nZWQpPVwib25Sb3dzUGVyUGFnZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgIFtyZXR1cm5PYmplY3RdPVwiZmFsc2VcIlxuICAgICAgb3B0aW9uc0NsYXNzPVwiY3BzLXBhZ2luYXRvci1wYWdlLW9wdGlvbnNcIj48L2Nwcy1zZWxlY3Q+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { CommonModule } from '@angular/common';
|
|
2
|
-
import { Component, Input } from '@angular/core';
|
|
1
|
+
import { CommonModule, DOCUMENT } from '@angular/common';
|
|
2
|
+
import { Component, Inject, Input } from '@angular/core';
|
|
3
3
|
import { convertSize } from '../../utils/internal/size-utils';
|
|
4
4
|
import { getCSSColor } from '../../utils/colors-utils';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
@@ -8,7 +8,9 @@ import * as i0 from "@angular/core";
|
|
|
8
8
|
* @group Components
|
|
9
9
|
*/
|
|
10
10
|
export class CpsProgressCircularComponent {
|
|
11
|
-
constructor
|
|
11
|
+
// eslint-disable-next-line no-useless-constructor
|
|
12
|
+
constructor(document) {
|
|
13
|
+
this.document = document;
|
|
12
14
|
/**
|
|
13
15
|
* Diameter of the progress bar, of type number denoting pixels or string.
|
|
14
16
|
* @group Props
|
|
@@ -28,19 +30,22 @@ export class CpsProgressCircularComponent {
|
|
|
28
30
|
ngOnInit() {
|
|
29
31
|
this.diameter = convertSize(this.diameter);
|
|
30
32
|
this.strokeWidth = convertSize(this.strokeWidth);
|
|
31
|
-
this.color = getCSSColor(this.color);
|
|
33
|
+
this.color = getCSSColor(this.color, this.document);
|
|
32
34
|
}
|
|
33
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: CpsProgressCircularComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
35
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: CpsProgressCircularComponent, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
34
36
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.0", type: CpsProgressCircularComponent, isStandalone: true, selector: "cps-progress-circular", inputs: { diameter: "diameter", strokeWidth: "strokeWidth", color: "color" }, ngImport: i0, template: "<div\n class=\"cps-progress-circular\"\n [style.width]=\"diameter\"\n [style.border]=\"strokeWidth + ' solid ' + color\"></div>\n", styles: [":host{display:inline-block}:host .cps-progress-circular{box-sizing:border-box;aspect-ratio:1;border-radius:50%;border-right-color:transparent!important;border-bottom:unset!important;border-bottom-right-radius:unset;animation:cps-progress-circular-animation .8s linear infinite}@keyframes cps-progress-circular-animation{to{transform:rotate(360deg)}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }] }); }
|
|
35
37
|
}
|
|
36
38
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: CpsProgressCircularComponent, decorators: [{
|
|
37
39
|
type: Component,
|
|
38
40
|
args: [{ standalone: true, imports: [CommonModule], selector: 'cps-progress-circular', template: "<div\n class=\"cps-progress-circular\"\n [style.width]=\"diameter\"\n [style.border]=\"strokeWidth + ' solid ' + color\"></div>\n", styles: [":host{display:inline-block}:host .cps-progress-circular{box-sizing:border-box;aspect-ratio:1;border-radius:50%;border-right-color:transparent!important;border-bottom:unset!important;border-bottom-right-radius:unset;animation:cps-progress-circular-animation .8s linear infinite}@keyframes cps-progress-circular-animation{to{transform:rotate(360deg)}}\n"] }]
|
|
39
|
-
}],
|
|
41
|
+
}], ctorParameters: () => [{ type: Document, decorators: [{
|
|
42
|
+
type: Inject,
|
|
43
|
+
args: [DOCUMENT]
|
|
44
|
+
}] }], propDecorators: { diameter: [{
|
|
40
45
|
type: Input
|
|
41
46
|
}], strokeWidth: [{
|
|
42
47
|
type: Input
|
|
43
48
|
}], color: [{
|
|
44
49
|
type: Input
|
|
45
50
|
}] } });
|
|
46
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3BzLXByb2dyZXNzLWNpcmN1bGFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nwcy11aS1raXQvc3JjL2xpYi9jb21wb25lbnRzL2Nwcy1wcm9ncmVzcy1jaXJjdWxhci9jcHMtcHJvZ3Jlc3MtY2lyY3VsYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3BzLXVpLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvY3BzLXByb2dyZXNzLWNpcmN1bGFyL2Nwcy1wcm9ncmVzcy1jaXJjdWxhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNqRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDOUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDOztBQUV2RDs7O0dBR0c7QUFRSCxNQUFNLE9BQU8sNEJBQTRCO0lBbUJ2QyxrREFBa0Q7SUFDbEQsWUFBc0MsUUFBa0I7UUFBbEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQW5CeEQ7OztXQUdHO1FBQ00sYUFBUSxHQUFvQixFQUFFLENBQUM7UUFFeEM7OztXQUdHO1FBQ00sZ0JBQVcsR0FBb0IsQ0FBQyxDQUFDO1FBRTFDOzs7V0FHRztRQUNNLFVBQUssR0FBRyxNQUFNLENBQUM7SUFHbUMsQ0FBQztJQUU1RCxRQUFRO1FBQ04sSUFBSSxDQUFDLFFBQVEsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUVqRCxJQUFJLENBQUMsS0FBSyxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN0RCxDQUFDOzhHQTNCVSw0QkFBNEIsa0JBb0JuQixRQUFRO2tHQXBCakIsNEJBQTRCLCtKQ2hCekMsc0lBSUEsd1pET1ksWUFBWTs7MkZBS1gsNEJBQTRCO2tCQVB4QyxTQUFTO2lDQUNJLElBQUksV0FDUCxDQUFDLFlBQVksQ0FBQyxZQUNiLHVCQUF1Qjs7MEJBd0JwQixNQUFNOzJCQUFDLFFBQVE7eUNBZm5CLFFBQVE7c0JBQWhCLEtBQUs7Z0JBTUcsV0FBVztzQkFBbkIsS0FBSztnQkFNRyxLQUFLO3NCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUsIERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjb252ZXJ0U2l6ZSB9IGZyb20gJy4uLy4uL3V0aWxzL2ludGVybmFsL3NpemUtdXRpbHMnO1xuaW1wb3J0IHsgZ2V0Q1NTQ29sb3IgfSBmcm9tICcuLi8uLi91dGlscy9jb2xvcnMtdXRpbHMnO1xuXG4vKipcbiAqIENwc1Byb2dyZXNzQ2lyY3VsYXJDb21wb25lbnQgaXMgYSBwcm9jZXNzIHN0YXR1cyBpbmRpY2F0b3IgaW4gYSBmb3JtIG9mIGEgc3Bpbm5lci5cbiAqIEBncm91cCBDb21wb25lbnRzXG4gKi9cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgc2VsZWN0b3I6ICdjcHMtcHJvZ3Jlc3MtY2lyY3VsYXInLFxuICB0ZW1wbGF0ZVVybDogJy4vY3BzLXByb2dyZXNzLWNpcmN1bGFyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY3BzLXByb2dyZXNzLWNpcmN1bGFyLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQ3BzUHJvZ3Jlc3NDaXJjdWxhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIC8qKlxuICAgKiBEaWFtZXRlciBvZiB0aGUgcHJvZ3Jlc3MgYmFyLCBvZiB0eXBlIG51bWJlciBkZW5vdGluZyBwaXhlbHMgb3Igc3RyaW5nLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIGRpYW1ldGVyOiBudW1iZXIgfCBzdHJpbmcgPSA0MDtcblxuICAvKipcbiAgICogVGhpY2tuZXNzIG9mIHRoZSBwcm9ncmVzcyBiYXIsIG9mIHR5cGUgbnVtYmVyIGRlbm90aW5nIHBpeGVscyBvciBzdHJpbmcuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgc3Ryb2tlV2lkdGg6IG51bWJlciB8IHN0cmluZyA9IDQ7XG5cbiAgLyoqXG4gICAqIENvbG9yIG9mIHRoZSBwcm9ncmVzcyBiYXIuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgY29sb3IgPSAnY2FsbSc7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVzZWxlc3MtY29uc3RydWN0b3JcbiAgY29uc3RydWN0b3IoQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBkb2N1bWVudDogRG9jdW1lbnQpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5kaWFtZXRlciA9IGNvbnZlcnRTaXplKHRoaXMuZGlhbWV0ZXIpO1xuICAgIHRoaXMuc3Ryb2tlV2lkdGggPSBjb252ZXJ0U2l6ZSh0aGlzLnN0cm9rZVdpZHRoKTtcblxuICAgIHRoaXMuY29sb3IgPSBnZXRDU1NDb2xvcih0aGlzLmNvbG9yLCB0aGlzLmRvY3VtZW50KTtcbiAgfVxufVxuIiwiPGRpdlxuICBjbGFzcz1cImNwcy1wcm9ncmVzcy1jaXJjdWxhclwiXG4gIFtzdHlsZS53aWR0aF09XCJkaWFtZXRlclwiXG4gIFtzdHlsZS5ib3JkZXJdPVwic3Ryb2tlV2lkdGggKyAnIHNvbGlkICcgKyBjb2xvclwiPjwvZGl2PlxuIl19
|