UNPKG

ng-zorro-antd

Version:

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

133 lines 16.4 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 { NgForOf, NgIf, NgTemplateOutlet } from '@angular/common'; import { ChangeDetectionStrategy, Component, ContentChildren, Input, TemplateRef } from '@angular/core'; import { Subject } from 'rxjs'; import { takeUntil } from 'rxjs/operators'; import { WithConfig } from 'ng-zorro-antd/core/config'; import { InputBoolean } from 'ng-zorro-antd/core/util'; import { NzSpaceItemDirective } from './space-item.directive'; import * as i0 from "@angular/core"; import * as i1 from "ng-zorro-antd/core/config"; const NZ_CONFIG_MODULE_NAME = 'space'; const SPACE_SIZE = { small: 8, middle: 16, large: 24 }; export class NzSpaceComponent { constructor(nzConfigService, cdr) { this.nzConfigService = nzConfigService; this.cdr = cdr; this._nzModuleName = NZ_CONFIG_MODULE_NAME; this.nzDirection = 'horizontal'; this.nzSplit = null; this.nzWrap = false; this.nzSize = 'small'; this.spaceSize = SPACE_SIZE.small; this.destroy$ = new Subject(); } updateSpaceItems() { const numberSize = typeof this.nzSize === 'string' ? SPACE_SIZE[this.nzSize] : this.nzSize; this.spaceSize = numberSize / (this.nzSplit ? 2 : 1); this.cdr.markForCheck(); } ngOnChanges() { this.updateSpaceItems(); this.mergedAlign = this.nzAlign === undefined && this.nzDirection === 'horizontal' ? 'center' : this.nzAlign; } ngOnDestroy() { this.destroy$.next(true); this.destroy$.complete(); } ngAfterContentInit() { this.updateSpaceItems(); this.items.changes.pipe(takeUntil(this.destroy$)).subscribe(() => { this.cdr.markForCheck(); }); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: NzSpaceComponent, deps: [{ token: i1.NzConfigService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); } static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.4", type: NzSpaceComponent, isStandalone: true, selector: "nz-space, [nz-space]", inputs: { nzDirection: "nzDirection", nzAlign: "nzAlign", nzSplit: "nzSplit", nzWrap: "nzWrap", nzSize: "nzSize" }, host: { properties: { "class.ant-space-horizontal": "nzDirection === \"horizontal\"", "class.ant-space-vertical": "nzDirection === \"vertical\"", "class.ant-space-align-start": "mergedAlign === \"start\"", "class.ant-space-align-end": "mergedAlign === \"end\"", "class.ant-space-align-center": "mergedAlign === \"center\"", "class.ant-space-align-baseline": "mergedAlign === \"baseline\"", "style.flex-wrap": "nzWrap ? \"wrap\" : null" }, classAttribute: "ant-space" }, queries: [{ propertyName: "items", predicate: NzSpaceItemDirective, read: TemplateRef }], exportAs: ["NzSpace"], usesOnChanges: true, ngImport: i0, template: ` <ng-content></ng-content> <ng-template ngFor let-item let-last="last" let-index="index" [ngForOf]="items"> <div class="ant-space-item" [style.margin-bottom.px]="nzDirection === 'vertical' ? (last ? null : spaceSize) : null" [style.margin-right.px]="nzDirection === 'horizontal' ? (last ? null : spaceSize) : null" > <ng-container [ngTemplateOutlet]="item"></ng-container> </div> <span *ngIf="nzSplit && !last" class="ant-space-split" [style.margin-bottom.px]="nzDirection === 'vertical' ? (last ? null : spaceSize) : null" [style.margin-right.px]="nzDirection === 'horizontal' ? (last ? null : spaceSize) : null" > <ng-template [ngTemplateOutlet]="nzSplit" [ngTemplateOutletContext]="{ $implicit: index }"></ng-template> </span> </ng-template> `, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); } } __decorate([ InputBoolean() ], NzSpaceComponent.prototype, "nzWrap", void 0); __decorate([ WithConfig() ], NzSpaceComponent.prototype, "nzSize", void 0); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: NzSpaceComponent, decorators: [{ type: Component, args: [{ selector: 'nz-space, [nz-space]', exportAs: 'NzSpace', changeDetection: ChangeDetectionStrategy.OnPush, template: ` <ng-content></ng-content> <ng-template ngFor let-item let-last="last" let-index="index" [ngForOf]="items"> <div class="ant-space-item" [style.margin-bottom.px]="nzDirection === 'vertical' ? (last ? null : spaceSize) : null" [style.margin-right.px]="nzDirection === 'horizontal' ? (last ? null : spaceSize) : null" > <ng-container [ngTemplateOutlet]="item"></ng-container> </div> <span *ngIf="nzSplit && !last" class="ant-space-split" [style.margin-bottom.px]="nzDirection === 'vertical' ? (last ? null : spaceSize) : null" [style.margin-right.px]="nzDirection === 'horizontal' ? (last ? null : spaceSize) : null" > <ng-template [ngTemplateOutlet]="nzSplit" [ngTemplateOutletContext]="{ $implicit: index }"></ng-template> </span> </ng-template> `, host: { class: 'ant-space', '[class.ant-space-horizontal]': 'nzDirection === "horizontal"', '[class.ant-space-vertical]': 'nzDirection === "vertical"', '[class.ant-space-align-start]': 'mergedAlign === "start"', '[class.ant-space-align-end]': 'mergedAlign === "end"', '[class.ant-space-align-center]': 'mergedAlign === "center"', '[class.ant-space-align-baseline]': 'mergedAlign === "baseline"', '[style.flex-wrap]': 'nzWrap ? "wrap" : null' }, imports: [NgTemplateOutlet, NgIf, NgForOf], standalone: true }] }], ctorParameters: () => [{ type: i1.NzConfigService }, { type: i0.ChangeDetectorRef }], propDecorators: { nzDirection: [{ type: Input }], nzAlign: [{ type: Input }], nzSplit: [{ type: Input }], nzWrap: [{ type: Input }], nzSize: [{ type: Input }], items: [{ type: ContentChildren, args: [NzSpaceItemDirective, { read: TemplateRef }] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BhY2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vY29tcG9uZW50cy9zcGFjZS9zcGFjZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7R0FHRztBQUVILE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEUsT0FBTyxFQUVMLHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsZUFBZSxFQUNmLEtBQUssRUFJTCxXQUFXLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsT0FBTyxFQUFnQyxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUVyRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFdkQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7OztBQUc5RCxNQUFNLHFCQUFxQixHQUFnQixPQUFPLENBQUM7QUFDbkQsTUFBTSxVQUFVLEdBRVo7SUFDRixLQUFLLEVBQUUsQ0FBQztJQUNSLE1BQU0sRUFBRSxFQUFFO0lBQ1YsS0FBSyxFQUFFLEVBQUU7Q0FDVixDQUFDO0FBdUNGLE1BQU0sT0FBTyxnQkFBZ0I7SUFpQjNCLFlBQ1MsZUFBZ0MsRUFDL0IsR0FBc0I7UUFEdkIsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQy9CLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBaEJ2QixrQkFBYSxHQUFnQixxQkFBcUIsQ0FBQztRQUVuRCxnQkFBVyxHQUFxQixZQUFZLENBQUM7UUFFN0MsWUFBTyxHQUE4QyxJQUFJLENBQUM7UUFDMUMsV0FBTSxHQUFZLEtBQUssQ0FBQztRQUMxQixXQUFNLEdBQWdCLE9BQU8sQ0FBQztRQUtyRCxjQUFTLEdBQVcsVUFBVSxDQUFDLEtBQUssQ0FBQztRQUM3QixhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQVcsQ0FBQztJQUt2QyxDQUFDO0lBRUksZ0JBQWdCO1FBQ3RCLE1BQU0sVUFBVSxHQUFHLE9BQU8sSUFBSSxDQUFDLE1BQU0sS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDM0YsSUFBSSxDQUFDLFNBQVMsR0FBRyxVQUFVLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3JELElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxPQUFPLEtBQUssU0FBUyxJQUFJLElBQUksQ0FBQyxXQUFXLEtBQUssWUFBWSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDL0csQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQy9ELElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDMUIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzhHQTNDVSxnQkFBZ0I7a0dBQWhCLGdCQUFnQixnckJBV1Ysb0JBQW9CLFFBQVUsV0FBVyx5RUE1Q2hEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUJULDREQVdTLGdCQUFnQixvSkFBRSxJQUFJLDZGQUFFLE9BQU87O0FBV2hCO0lBQWYsWUFBWSxFQUFFO2dEQUF5QjtBQUMxQjtJQUFiLFVBQVUsRUFBRTtnREFBK0I7MkZBVDFDLGdCQUFnQjtrQkFyQzVCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHNCQUFzQjtvQkFDaEMsUUFBUSxFQUFFLFNBQVM7b0JBQ25CLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtQlQ7b0JBQ0QsSUFBSSxFQUFFO3dCQUNKLEtBQUssRUFBRSxXQUFXO3dCQUNsQiw4QkFBOEIsRUFBRSw4QkFBOEI7d0JBQzlELDRCQUE0QixFQUFFLDRCQUE0Qjt3QkFDMUQsK0JBQStCLEVBQUUseUJBQXlCO3dCQUMxRCw2QkFBNkIsRUFBRSx1QkFBdUI7d0JBQ3RELGdDQUFnQyxFQUFFLDBCQUEwQjt3QkFDNUQsa0NBQWtDLEVBQUUsNEJBQTRCO3dCQUNoRSxtQkFBbUIsRUFBRSx3QkFBd0I7cUJBQzlDO29CQUNELE9BQU8sRUFBRSxDQUFDLGdCQUFnQixFQUFFLElBQUksRUFBRSxPQUFPLENBQUM7b0JBQzFDLFVBQVUsRUFBRSxJQUFJO2lCQUNqQjtvSEFNVSxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ21CLE1BQU07c0JBQTlCLEtBQUs7Z0JBQ2lCLE1BQU07c0JBQTVCLEtBQUs7Z0JBRXdELEtBQUs7c0JBQWxFLGVBQWU7dUJBQUMsb0JBQW9CLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vTkctWk9SUk8vbmctem9ycm8tYW50ZC9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuaW1wb3J0IHsgTmdGb3JPZiwgTmdJZiwgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIFF1ZXJ5TGlzdCxcbiAgVGVtcGxhdGVSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IE56Q29uZmlnS2V5LCBOekNvbmZpZ1NlcnZpY2UsIFdpdGhDb25maWcgfSBmcm9tICduZy16b3Jyby1hbnRkL2NvcmUvY29uZmlnJztcbmltcG9ydCB7IEJvb2xlYW5JbnB1dCwgTnpTYWZlQW55IH0gZnJvbSAnbmctem9ycm8tYW50ZC9jb3JlL3R5cGVzJztcbmltcG9ydCB7IElucHV0Qm9vbGVhbiB9IGZyb20gJ25nLXpvcnJvLWFudGQvY29yZS91dGlsJztcblxuaW1wb3J0IHsgTnpTcGFjZUl0ZW1EaXJlY3RpdmUgfSBmcm9tICcuL3NwYWNlLWl0ZW0uZGlyZWN0aXZlJztcbmltcG9ydCB7IE56U3BhY2VBbGlnbiwgTnpTcGFjZURpcmVjdGlvbiwgTnpTcGFjZVNpemUsIE56U3BhY2VUeXBlIH0gZnJvbSAnLi90eXBlcyc7XG5cbmNvbnN0IE5aX0NPTkZJR19NT0RVTEVfTkFNRTogTnpDb25maWdLZXkgPSAnc3BhY2UnO1xuY29uc3QgU1BBQ0VfU0laRToge1xuICBbc2l6ZUtleSBpbiBOelNwYWNlVHlwZV06IG51bWJlcjtcbn0gPSB7XG4gIHNtYWxsOiA4LFxuICBtaWRkbGU6IDE2LFxuICBsYXJnZTogMjRcbn07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ256LXNwYWNlLCBbbnotc3BhY2VdJyxcbiAgZXhwb3J0QXM6ICdOelNwYWNlJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiBgXG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgIDxuZy10ZW1wbGF0ZSBuZ0ZvciBsZXQtaXRlbSBsZXQtbGFzdD1cImxhc3RcIiBsZXQtaW5kZXg9XCJpbmRleFwiIFtuZ0Zvck9mXT1cIml0ZW1zXCI+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiYW50LXNwYWNlLWl0ZW1cIlxuICAgICAgICBbc3R5bGUubWFyZ2luLWJvdHRvbS5weF09XCJuekRpcmVjdGlvbiA9PT0gJ3ZlcnRpY2FsJyA/IChsYXN0ID8gbnVsbCA6IHNwYWNlU2l6ZSkgOiBudWxsXCJcbiAgICAgICAgW3N0eWxlLm1hcmdpbi1yaWdodC5weF09XCJuekRpcmVjdGlvbiA9PT0gJ2hvcml6b250YWwnID8gKGxhc3QgPyBudWxsIDogc3BhY2VTaXplKSA6IG51bGxcIlxuICAgICAgPlxuICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIml0ZW1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgICAgPHNwYW5cbiAgICAgICAgKm5nSWY9XCJuelNwbGl0ICYmICFsYXN0XCJcbiAgICAgICAgY2xhc3M9XCJhbnQtc3BhY2Utc3BsaXRcIlxuICAgICAgICBbc3R5bGUubWFyZ2luLWJvdHRvbS5weF09XCJuekRpcmVjdGlvbiA9PT0gJ3ZlcnRpY2FsJyA/IChsYXN0ID8gbnVsbCA6IHNwYWNlU2l6ZSkgOiBudWxsXCJcbiAgICAgICAgW3N0eWxlLm1hcmdpbi1yaWdodC5weF09XCJuekRpcmVjdGlvbiA9PT0gJ2hvcml6b250YWwnID8gKGxhc3QgPyBudWxsIDogc3BhY2VTaXplKSA6IG51bGxcIlxuICAgICAgPlxuICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwibnpTcGxpdFwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogaW5kZXggfVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICA8L3NwYW4+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgYCxcbiAgaG9zdDoge1xuICAgIGNsYXNzOiAnYW50LXNwYWNlJyxcbiAgICAnW2NsYXNzLmFudC1zcGFjZS1ob3Jpem9udGFsXSc6ICduekRpcmVjdGlvbiA9PT0gXCJob3Jpem9udGFsXCInLFxuICAgICdbY2xhc3MuYW50LXNwYWNlLXZlcnRpY2FsXSc6ICduekRpcmVjdGlvbiA9PT0gXCJ2ZXJ0aWNhbFwiJyxcbiAgICAnW2NsYXNzLmFudC1zcGFjZS1hbGlnbi1zdGFydF0nOiAnbWVyZ2VkQWxpZ24gPT09IFwic3RhcnRcIicsXG4gICAgJ1tjbGFzcy5hbnQtc3BhY2UtYWxpZ24tZW5kXSc6ICdtZXJnZWRBbGlnbiA9PT0gXCJlbmRcIicsXG4gICAgJ1tjbGFzcy5hbnQtc3BhY2UtYWxpZ24tY2VudGVyXSc6ICdtZXJnZWRBbGlnbiA9PT0gXCJjZW50ZXJcIicsXG4gICAgJ1tjbGFzcy5hbnQtc3BhY2UtYWxpZ24tYmFzZWxpbmVdJzogJ21lcmdlZEFsaWduID09PSBcImJhc2VsaW5lXCInLFxuICAgICdbc3R5bGUuZmxleC13cmFwXSc6ICdueldyYXAgPyBcIndyYXBcIiA6IG51bGwnXG4gIH0sXG4gIGltcG9ydHM6IFtOZ1RlbXBsYXRlT3V0bGV0LCBOZ0lmLCBOZ0Zvck9mXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBOelNwYWNlQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIEFmdGVyQ29udGVudEluaXQge1xuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfbnpXcmFwOiBCb29sZWFuSW5wdXQ7XG5cbiAgcmVhZG9ubHkgX256TW9kdWxlTmFtZTogTnpDb25maWdLZXkgPSBOWl9DT05GSUdfTU9EVUxFX05BTUU7XG5cbiAgQElucHV0KCkgbnpEaXJlY3Rpb246IE56U3BhY2VEaXJlY3Rpb24gPSAnaG9yaXpvbnRhbCc7XG4gIEBJbnB1dCgpIG56QWxpZ24/OiBOelNwYWNlQWxpZ247XG4gIEBJbnB1dCgpIG56U3BsaXQ6IFRlbXBsYXRlUmVmPHsgJGltcGxpY2l0OiBudW1iZXIgfT4gfCBudWxsID0gbnVsbDtcbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIG56V3JhcDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBAV2l0aENvbmZpZygpIG56U2l6ZTogTnpTcGFjZVNpemUgPSAnc21hbGwnO1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oTnpTcGFjZUl0ZW1EaXJlY3RpdmUsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSkgaXRlbXMhOiBRdWVyeUxpc3Q8VGVtcGxhdGVSZWY8TnpTYWZlQW55Pj47XG5cbiAgbWVyZ2VkQWxpZ24/OiBOelNwYWNlQWxpZ247XG4gIHNwYWNlU2l6ZTogbnVtYmVyID0gU1BBQ0VfU0laRS5zbWFsbDtcbiAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIG56Q29uZmlnU2VydmljZTogTnpDb25maWdTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZlxuICApIHt9XG5cbiAgcHJpdmF0ZSB1cGRhdGVTcGFjZUl0ZW1zKCk6IHZvaWQge1xuICAgIGNvbnN0IG51bWJlclNpemUgPSB0eXBlb2YgdGhpcy5uelNpemUgPT09ICdzdHJpbmcnID8gU1BBQ0VfU0laRVt0aGlzLm56U2l6ZV0gOiB0aGlzLm56U2l6ZTtcbiAgICB0aGlzLnNwYWNlU2l6ZSA9IG51bWJlclNpemUgLyAodGhpcy5uelNwbGl0ID8gMiA6IDEpO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoKTogdm9pZCB7XG4gICAgdGhpcy51cGRhdGVTcGFjZUl0ZW1zKCk7XG4gICAgdGhpcy5tZXJnZWRBbGlnbiA9IHRoaXMubnpBbGlnbiA9PT0gdW5kZWZpbmVkICYmIHRoaXMubnpEaXJlY3Rpb24gPT09ICdob3Jpem9udGFsJyA/ICdjZW50ZXInIDogdGhpcy5uekFsaWduO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KHRydWUpO1xuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnVwZGF0ZVNwYWNlSXRlbXMoKTtcbiAgICB0aGlzLml0ZW1zLmNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9KTtcbiAgfVxufVxuIl19