UNPKG

ng-zorro-antd

Version:

An enterprise-class UI components based on Ant Design and Angular

139 lines 19.2 kB
import { __decorate } from "tslib"; /** * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE */ import { ChangeDetectionStrategy, Component, Input, Optional, SkipSelf, ViewEncapsulation } from '@angular/core'; import { Subject } from 'rxjs'; import { filter, takeUntil } from 'rxjs/operators'; import { InputBoolean, toBoolean } from 'ng-zorro-antd/core/util'; import { DefaultTooltipIcon } from './form.directive'; import * as i0 from "@angular/core"; import * as i1 from "./form.directive"; import * as i2 from "@angular/common"; import * as i3 from "ng-zorro-antd/icon"; import * as i4 from "ng-zorro-antd/tooltip"; import * as i5 from "ng-zorro-antd/core/outlet"; function toTooltipIcon(value) { const icon = typeof value === 'string' ? { type: value } : value; return { ...DefaultTooltipIcon, ...icon }; } export class NzFormLabelComponent { set nzNoColon(value) { this.noColon = toBoolean(value); } get nzNoColon() { return this.noColon !== 'default' ? this.noColon : this.nzFormDirective?.nzNoColon; } set nzTooltipIcon(value) { this._tooltipIcon = toTooltipIcon(value); } // due to 'get' and 'set' accessor must have the same type, so it was renamed to `tooltipIcon` get tooltipIcon() { return this._tooltipIcon !== 'default' ? this._tooltipIcon : toTooltipIcon(this.nzFormDirective?.nzTooltipIcon || DefaultTooltipIcon); } set nzLabelAlign(value) { this.labelAlign = value; } get nzLabelAlign() { return this.labelAlign !== 'default' ? this.labelAlign : this.nzFormDirective?.nzLabelAlign || 'right'; } set nzLabelWrap(value) { this.labelWrap = toBoolean(value); } get nzLabelWrap() { return this.labelWrap !== 'default' ? this.labelWrap : this.nzFormDirective?.nzLabelWrap; } constructor(cdr, nzFormDirective) { this.cdr = cdr; this.nzFormDirective = nzFormDirective; this.nzRequired = false; this.noColon = 'default'; this._tooltipIcon = 'default'; this.labelAlign = 'default'; this.labelWrap = 'default'; this.destroy$ = new Subject(); if (this.nzFormDirective) { this.nzFormDirective .getInputObservable('nzNoColon') .pipe(filter(() => this.noColon === 'default'), takeUntil(this.destroy$)) .subscribe(() => this.cdr.markForCheck()); this.nzFormDirective .getInputObservable('nzTooltipIcon') .pipe(filter(() => this._tooltipIcon === 'default'), takeUntil(this.destroy$)) .subscribe(() => this.cdr.markForCheck()); this.nzFormDirective .getInputObservable('nzLabelAlign') .pipe(filter(() => this.labelAlign === 'default'), takeUntil(this.destroy$)) .subscribe(() => this.cdr.markForCheck()); this.nzFormDirective .getInputObservable('nzLabelWrap') .pipe(filter(() => this.labelWrap === 'default'), takeUntil(this.destroy$)) .subscribe(() => this.cdr.markForCheck()); } } ngOnDestroy() { this.destroy$.next(true); this.destroy$.complete(); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: NzFormLabelComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.NzFormDirective, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.Component }); } static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.3", type: NzFormLabelComponent, selector: "nz-form-label", inputs: { nzFor: "nzFor", nzRequired: "nzRequired", nzNoColon: "nzNoColon", nzTooltipTitle: "nzTooltipTitle", nzTooltipIcon: "nzTooltipIcon", nzLabelAlign: "nzLabelAlign", nzLabelWrap: "nzLabelWrap" }, host: { properties: { "class.ant-form-item-label-left": "nzLabelAlign === 'left'", "class.ant-form-item-label-wrap": "nzLabelWrap" }, classAttribute: "ant-form-item-label" }, exportAs: ["nzFormLabel"], ngImport: i0, template: ` <label [attr.for]="nzFor" [class.ant-form-item-no-colon]="nzNoColon" [class.ant-form-item-required]="nzRequired"> <ng-content></ng-content> <span *ngIf="nzTooltipTitle" class="ant-form-item-tooltip" nz-tooltip [nzTooltipTitle]="nzTooltipTitle"> <ng-container *nzStringTemplateOutlet="tooltipIcon.type; let tooltipIconType"> <span nz-icon [nzType]="tooltipIconType" [nzTheme]="tooltipIcon.theme"></span> </ng-container> </span> </label> `, isInline: true, dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NzIconDirective, selector: "[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "directive", type: i4.NzTooltipDirective, selector: "[nz-tooltip]", inputs: ["nzTooltipTitle", "nzTooltipTitleContext", "nz-tooltip", "nzTooltipTrigger", "nzTooltipPlacement", "nzTooltipOrigin", "nzTooltipVisible", "nzTooltipMouseEnterDelay", "nzTooltipMouseLeaveDelay", "nzTooltipOverlayClassName", "nzTooltipOverlayStyle", "nzTooltipArrowPointAtCenter", "cdkConnectedOverlayPush", "nzTooltipColor"], outputs: ["nzTooltipVisibleChange"], exportAs: ["nzTooltip"] }, { kind: "directive", type: i5.NzStringTemplateOutletDirective, selector: "[nzStringTemplateOutlet]", inputs: ["nzStringTemplateOutletContext", "nzStringTemplateOutlet"], exportAs: ["nzStringTemplateOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); } } __decorate([ InputBoolean() ], NzFormLabelComponent.prototype, "nzRequired", void 0); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: NzFormLabelComponent, decorators: [{ type: Component, args: [{ selector: 'nz-form-label', exportAs: 'nzFormLabel', preserveWhitespaces: false, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: ` <label [attr.for]="nzFor" [class.ant-form-item-no-colon]="nzNoColon" [class.ant-form-item-required]="nzRequired"> <ng-content></ng-content> <span *ngIf="nzTooltipTitle" class="ant-form-item-tooltip" nz-tooltip [nzTooltipTitle]="nzTooltipTitle"> <ng-container *nzStringTemplateOutlet="tooltipIcon.type; let tooltipIconType"> <span nz-icon [nzType]="tooltipIconType" [nzTheme]="tooltipIcon.theme"></span> </ng-container> </span> </label> `, host: { class: 'ant-form-item-label', '[class.ant-form-item-label-left]': `nzLabelAlign === 'left'`, '[class.ant-form-item-label-wrap]': `nzLabelWrap` } }] }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.NzFormDirective, decorators: [{ type: Optional }, { type: SkipSelf }] }], propDecorators: { nzFor: [{ type: Input }], nzRequired: [{ type: Input }], nzNoColon: [{ type: Input }], nzTooltipTitle: [{ type: Input }], nzTooltipIcon: [{ type: Input }], nzLabelAlign: [{ type: Input }], nzLabelWrap: [{ type: Input }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1sYWJlbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9jb21wb25lbnRzL2Zvcm0vZm9ybS1sYWJlbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7R0FHRztBQUVILE9BQU8sRUFDTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULEtBQUssRUFFTCxRQUFRLEVBQ1IsUUFBUSxFQUNSLGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFLbkQsT0FBTyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVsRSxPQUFPLEVBQUUsa0JBQWtCLEVBQXFDLE1BQU0sa0JBQWtCLENBQUM7Ozs7Ozs7QUFPekYsU0FBUyxhQUFhLENBQUMsS0FBaUM7SUFDdEQsTUFBTSxJQUFJLEdBQUcsT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ2pFLE9BQU8sRUFBRSxHQUFHLGtCQUFrQixFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUM7QUFDNUMsQ0FBQztBQXdCRCxNQUFNLE9BQU8sb0JBQW9CO0lBTy9CLElBQ0ksU0FBUyxDQUFDLEtBQWM7UUFDMUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUNELElBQUksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLE9BQU8sS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsU0FBUyxDQUFDO0lBQ3JGLENBQUM7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QyxTQUFTLEtBQUssU0FBUyxDQUFDLEVBQzFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQ3pCO2lCQUNBLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7U0FDN0M7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDM0IsQ0FBQzs4R0E3RlUsb0JBQW9CO2tHQUFwQixvQkFBb0IseWNBaEJyQjs7Ozs7Ozs7O0dBU1Q7O0FBYXdCO0lBQWYsWUFBWSxFQUFFO3dEQUFvQjsyRkFOakMsb0JBQW9CO2tCQXRCaEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsZUFBZTtvQkFDekIsUUFBUSxFQUFFLGFBQWE7b0JBQ3ZCLG1CQUFtQixFQUFFLEtBQUs7b0JBQzFCLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO29CQUNyQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsUUFBUSxFQUFFOzs7Ozs7Ozs7R0FTVDtvQkFDRCxJQUFJLEVBQUU7d0JBQ0osS0FBSyxFQUFFLHFCQUFxQjt3QkFDNUIsa0NBQWtDLEVBQUUseUJBQXlCO3dCQUM3RCxrQ0FBa0MsRUFBRSxhQUFhO3FCQUNsRDtpQkFDRjs7MEJBdUQ4QyxRQUFROzswQkFBSSxRQUFRO3lDQWpEeEQsS0FBSztzQkFBYixLQUFLO2dCQUNtQixVQUFVO3NCQUFsQyxLQUFLO2dCQUVGLFNBQVM7c0JBRFosS0FBSztnQkFVRyxjQUFjO3NCQUF0QixLQUFLO2dCQUVGLGFBQWE7c0JBRGhCLEtBQUs7Z0JBYUYsWUFBWTtzQkFEZixLQUFLO2dCQVlGLFdBQVc7c0JBRGQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL05HLVpPUlJPL25nLXpvcnJvLWFudGQvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPcHRpb25hbCxcbiAgU2tpcFNlbGYsXG4gIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFRoZW1lVHlwZSB9IGZyb20gJ0BhbnQtZGVzaWduL2ljb25zLWFuZ3VsYXInO1xuXG5pbXBvcnQgeyBCb29sZWFuSW5wdXQsIE56VFNUeXBlIH0gZnJvbSAnbmctem9ycm8tYW50ZC9jb3JlL3R5cGVzJztcbmltcG9ydCB7IElucHV0Qm9vbGVhbiwgdG9Cb29sZWFuIH0gZnJvbSAnbmctem9ycm8tYW50ZC9jb3JlL3V0aWwnO1xuXG5pbXBvcnQgeyBEZWZhdWx0VG9vbHRpcEljb24sIE56Rm9ybURpcmVjdGl2ZSwgTnpMYWJlbEFsaWduVHlwZSB9IGZyb20gJy4vZm9ybS5kaXJlY3RpdmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE56Rm9ybVRvb2x0aXBJY29uIHtcbiAgdHlwZTogTnpUU1R5cGU7XG4gIHRoZW1lOiBUaGVtZVR5cGU7XG59XG5cbmZ1bmN0aW9uIHRvVG9vbHRpcEljb24odmFsdWU6IHN0cmluZyB8IE56Rm9ybVRvb2x0aXBJY29uKTogUmVxdWlyZWQ8TnpGb3JtVG9vbHRpcEljb24+IHtcbiAgY29uc3QgaWNvbiA9IHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgPyB7IHR5cGU6IHZhbHVlIH0gOiB2YWx1ZTtcbiAgcmV0dXJuIHsgLi4uRGVmYXVsdFRvb2x0aXBJY29uLCAuLi5pY29uIH07XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ256LWZvcm0tbGFiZWwnLFxuICBleHBvcnRBczogJ256Rm9ybUxhYmVsJyxcbiAgcHJlc2VydmVXaGl0ZXNwYWNlczogZmFsc2UsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxsYWJlbCBbYXR0ci5mb3JdPVwibnpGb3JcIiBbY2xhc3MuYW50LWZvcm0taXRlbS1uby1jb2xvbl09XCJuek5vQ29sb25cIiBbY2xhc3MuYW50LWZvcm0taXRlbS1yZXF1aXJlZF09XCJuelJlcXVpcmVkXCI+XG4gICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgICA8c3BhbiAqbmdJZj1cIm56VG9vbHRpcFRpdGxlXCIgY2xhc3M9XCJhbnQtZm9ybS1pdGVtLXRvb2x0aXBcIiBuei10b29sdGlwIFtuelRvb2x0aXBUaXRsZV09XCJuelRvb2x0aXBUaXRsZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuelN0cmluZ1RlbXBsYXRlT3V0bGV0PVwidG9vbHRpcEljb24udHlwZTsgbGV0IHRvb2x0aXBJY29uVHlwZVwiPlxuICAgICAgICAgIDxzcGFuIG56LWljb24gW256VHlwZV09XCJ0b29sdGlwSWNvblR5cGVcIiBbbnpUaGVtZV09XCJ0b29sdGlwSWNvbi50aGVtZVwiPjwvc3Bhbj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L3NwYW4+XG4gICAgPC9sYWJlbD5cbiAgYCxcbiAgaG9zdDoge1xuICAgIGNsYXNzOiAnYW50LWZvcm0taXRlbS1sYWJlbCcsXG4gICAgJ1tjbGFzcy5hbnQtZm9ybS1pdGVtLWxhYmVsLWxlZnRdJzogYG56TGFiZWxBbGlnbiA9PT0gJ2xlZnQnYCxcbiAgICAnW2NsYXNzLmFudC1mb3JtLWl0ZW0tbGFiZWwtd3JhcF0nOiBgbnpMYWJlbFdyYXBgXG4gIH1cbn0pXG5leHBvcnQgY2xhc3MgTnpGb3JtTGFiZWxDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfbnpSZXF1aXJlZDogQm9vbGVhbklucHV0O1xuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfbnpOb0NvbG9uOiBCb29sZWFuSW5wdXQ7XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9uekxhYmVsV3JhcDogQm9vbGVhbklucHV0O1xuXG4gIEBJbnB1dCgpIG56Rm9yPzogc3RyaW5nO1xuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgbnpSZXF1aXJlZCA9IGZhbHNlO1xuICBASW5wdXQoKVxuICBzZXQgbnpOb0NvbG9uKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5ub0NvbG9uID0gdG9Cb29sZWFuKHZhbHVlKTtcbiAgfVxuICBnZXQgbnpOb0NvbG9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm5vQ29sb24gIT09ICdkZWZhdWx0JyA/IHRoaXMubm9Db2xvbiA6IHRoaXMubnpGb3JtRGlyZWN0aXZlPy5uek5vQ29sb247XG4gIH1cblxuICBwcml2YXRlIG5vQ29sb246IGJvb2xlYW4gfCAnZGVmYXVsdCcgPSAnZGVmYXVsdCc7XG5cbiAgQElucHV0KCkgbnpUb29sdGlwVGl0bGU/OiBOelRTVHlwZTtcbiAgQElucHV0KClcbiAgc2V0IG56VG9vbHRpcEljb24odmFsdWU6IHN0cmluZyB8IE56Rm9ybVRvb2x0aXBJY29uKSB7XG4gICAgdGhpcy5fdG9vbHRpcEljb24gPSB0b1Rvb2x0aXBJY29uKHZhbHVlKTtcbiAgfVxuICAvLyBkdWUgdG8gJ2dldCcgYW5kICdzZXQnIGFjY2Vzc29yIG11c3QgaGF2ZSB0aGUgc2FtZSB0eXBlLCBzbyBpdCB3YXMgcmVuYW1lZCB0byBgdG9vbHRpcEljb25gXG4gIGdldCB0b29sdGlwSWNvbigpOiBOekZvcm1Ub29sdGlwSWNvbiB7XG4gICAgcmV0dXJuIHRoaXMuX3Rvb2x0aXBJY29uICE9PSAnZGVmYXVsdCdcbiAgICAgID8gdGhpcy5fdG9vbHRpcEljb25cbiAgICAgIDogdG9Ub29sdGlwSWNvbih0aGlzLm56Rm9ybURpcmVjdGl2ZT8ubnpUb29sdGlwSWNvbiB8fCBEZWZhdWx0VG9vbHRpcEljb24pO1xuICB9XG4gIHByaXZhdGUgX3Rvb2x0aXBJY29uOiBOekZvcm1Ub29sdGlwSWNvbiB8ICdkZWZhdWx0JyA9ICdkZWZhdWx0JztcblxuICBASW5wdXQoKVxuICBzZXQgbnpMYWJlbEFsaWduKHZhbHVlOiBOekxhYmVsQWxpZ25UeXBlKSB7XG4gICAgdGhpcy5sYWJlbEFsaWduID0gdmFsdWU7XG4gIH1cblxuICBnZXQgbnpMYWJlbEFsaWduKCk6IE56TGFiZWxBbGlnblR5cGUge1xuICAgIHJldHVybiB0aGlzLmxhYmVsQWxpZ24gIT09ICdkZWZhdWx0JyA/IHRoaXMubGFiZWxBbGlnbiA6IHRoaXMubnpGb3JtRGlyZWN0aXZlPy5uekxhYmVsQWxpZ24gfHwgJ3JpZ2h0JztcbiAgfVxuXG4gIHByaXZhdGUgbGFiZWxBbGlnbjogTnpMYWJlbEFsaWduVHlwZSB8ICdkZWZhdWx0JyA9ICdkZWZhdWx0JztcblxuICBASW5wdXQoKVxuICBzZXQgbnpMYWJlbFdyYXAodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmxhYmVsV3JhcCA9IHRvQm9vbGVhbih2YWx1ZSk7XG4gIH1cblxuICBnZXQgbnpMYWJlbFdyYXAoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubGFiZWxXcmFwICE9PSAnZGVmYXVsdCcgPyB0aGlzLmxhYmVsV3JhcCA6IHRoaXMubnpGb3JtRGlyZWN0aXZlPy5uekxhYmVsV3JhcDtcbiAgfVxuXG4gIHByaXZhdGUgbGFiZWxXcmFwOiBib29sZWFuIHwgJ2RlZmF1bHQnID0gJ2RlZmF1bHQnO1xuXG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZiwgQE9wdGlvbmFsKCkgQFNraXBTZWxmKCkgcHJpdmF0ZSBuekZvcm1EaXJlY3RpdmU6IE56Rm9ybURpcmVjdGl2ZSkge1xuICAgIGlmICh0aGlzLm56Rm9ybURpcmVjdGl2ZSkge1xuICAgICAgdGhpcy5uekZvcm1EaXJlY3RpdmVcbiAgICAgICAgLmdldElucHV0T2JzZXJ2YWJsZSgnbnpOb0NvbG9uJylcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgZmlsdGVyKCgpID0+IHRoaXMubm9Db2xvbiA9PT0gJ2RlZmF1bHQnKSxcbiAgICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JClcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpKTtcblxuICAgICAgdGhpcy5uekZvcm1EaXJlY3RpdmVcbiAgICAgICAgLmdldElucHV0T2JzZXJ2YWJsZSgnbnpUb29sdGlwSWNvbicpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIGZpbHRlcigoKSA9PiB0aGlzLl90b29sdGlwSWNvbiA9PT0gJ2RlZmF1bHQnKSxcbiAgICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JClcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpKTtcblxuICAgICAgdGhpcy5uekZvcm1EaXJlY3RpdmVcbiAgICAgICAgLmdldElucHV0T2JzZXJ2YWJsZSgnbnpMYWJlbEFsaWduJylcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgZmlsdGVyKCgpID0+IHRoaXMubGFiZWxBbGlnbiA9PT0gJ2RlZmF1bHQnKSxcbiAgICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JClcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpKTtcblxuICAgICAgdGhpcy5uekZvcm1EaXJlY3RpdmVcbiAgICAgICAgLmdldElucHV0T2JzZXJ2YWJsZSgnbnpMYWJlbFdyYXAnKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBmaWx0ZXIoKCkgPT4gdGhpcy5sYWJlbFdyYXAgPT09ICdkZWZhdWx0JyksXG4gICAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKSk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KHRydWUpO1xuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxufVxuIl19