ng-zorro-antd
Version:
An enterprise-class UI components based on Ant Design and Angular
130 lines • 16.2 kB
JavaScript
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, booleanAttribute } from '@angular/core';
import { Subject } from 'rxjs';
import { takeUntil } from 'rxjs/operators';
import { WithConfig } from 'ng-zorro-antd/core/config';
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: "18.0.1", ngImport: i0, type: NzSpaceComponent, deps: [{ token: i1.NzConfigService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.0.1", type: NzSpaceComponent, isStandalone: true, selector: "nz-space, [nz-space]", inputs: { nzDirection: "nzDirection", nzAlign: "nzAlign", nzSplit: "nzSplit", nzWrap: ["nzWrap", "nzWrap", booleanAttribute], 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([
WithConfig()
], NzSpaceComponent.prototype, "nzSize", void 0);
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", 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,
args: [{ transform: booleanAttribute }]
}], nzSize: [{
type: Input
}], items: [{
type: ContentChildren,
args: [NzSpaceItemDirective, { read: TemplateRef }]
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BhY2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vY29tcG9uZW50cy9zcGFjZS9zcGFjZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7R0FHRztBQUVILE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEUsT0FBTyxFQUVMLHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsZUFBZSxFQUNmLEtBQUssRUFJTCxXQUFXLEVBQ1gsZ0JBQWdCLEVBQ2pCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBZ0MsVUFBVSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFHckYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7OztBQUc5RCxNQUFNLHFCQUFxQixHQUFnQixPQUFPLENBQUM7QUFDbkQsTUFBTSxVQUFVLEdBRVo7SUFDRixLQUFLLEVBQUUsQ0FBQztJQUNSLE1BQU0sRUFBRSxFQUFFO0lBQ1YsS0FBSyxFQUFFLEVBQUU7Q0FDVixDQUFDO0FBdUNGLE1BQU0sT0FBTyxnQkFBZ0I7SUFlM0IsWUFDUyxlQUFnQyxFQUMvQixHQUFzQjtRQUR2QixvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDL0IsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFoQnZCLGtCQUFhLEdBQWdCLHFCQUFxQixDQUFDO1FBRW5ELGdCQUFXLEdBQXFCLFlBQVksQ0FBQztRQUU3QyxZQUFPLEdBQThDLElBQUksQ0FBQztRQUMzQixXQUFNLEdBQVksS0FBSyxDQUFDO1FBQ3pDLFdBQU0sR0FBZ0IsT0FBTyxDQUFDO1FBS3JELGNBQVMsR0FBVyxVQUFVLENBQUMsS0FBSyxDQUFDO1FBQzdCLGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBVyxDQUFDO0lBS3ZDLENBQUM7SUFFSSxnQkFBZ0I7UUFDdEIsTUFBTSxVQUFVLEdBQUcsT0FBTyxJQUFJLENBQUMsTUFBTSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMzRixJQUFJLENBQUMsU0FBUyxHQUFHLFVBQVUsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDckQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLE9BQU8sS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLFdBQVcsS0FBSyxZQUFZLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUMvRyxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDL0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7OEdBekNVLGdCQUFnQjtrR0FBaEIsZ0JBQWdCLG1LQU1QLGdCQUFnQiwyaEJBR25CLG9CQUFvQixRQUFVLFdBQVcseUVBMUNoRDs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1CVCw0REFXUyxnQkFBZ0Isb0pBQUUsSUFBSSw2RkFBRSxPQUFPOztBQVVsQjtJQUFiLFVBQVUsRUFBRTtnREFBK0I7MkZBUDFDLGdCQUFnQjtrQkFyQzVCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHNCQUFzQjtvQkFDaEMsUUFBUSxFQUFFLFNBQVM7b0JBQ25CLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtQlQ7b0JBQ0QsSUFBSSxFQUFFO3dCQUNKLEtBQUssRUFBRSxXQUFXO3dCQUNsQiw4QkFBOEIsRUFBRSw4QkFBOEI7d0JBQzlELDRCQUE0QixFQUFFLDRCQUE0Qjt3QkFDMUQsK0JBQStCLEVBQUUseUJBQXlCO3dCQUMxRCw2QkFBNkIsRUFBRSx1QkFBdUI7d0JBQ3RELGdDQUFnQyxFQUFFLDBCQUEwQjt3QkFDNUQsa0NBQWtDLEVBQUUsNEJBQTRCO3dCQUNoRSxtQkFBbUIsRUFBRSx3QkFBd0I7cUJBQzlDO29CQUNELE9BQU8sRUFBRSxDQUFDLGdCQUFnQixFQUFFLElBQUksRUFBRSxPQUFPLENBQUM7b0JBQzFDLFVBQVUsRUFBRSxJQUFJO2lCQUNqQjtvSEFJVSxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ2tDLE1BQU07c0JBQTdDLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBQ2YsTUFBTTtzQkFBNUIsS0FBSztnQkFFd0QsS0FBSztzQkFBbEUsZUFBZTt1QkFBQyxvQkFBb0IsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9ORy1aT1JSTy9uZy16b3Jyby1hbnRkL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5pbXBvcnQgeyBOZ0Zvck9mLCBOZ0lmLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgUXVlcnlMaXN0LFxuICBUZW1wbGF0ZVJlZixcbiAgYm9vbGVhbkF0dHJpYnV0ZVxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgTnpDb25maWdLZXksIE56Q29uZmlnU2VydmljZSwgV2l0aENvbmZpZyB9IGZyb20gJ25nLXpvcnJvLWFudGQvY29yZS9jb25maWcnO1xuaW1wb3J0IHsgTnpTYWZlQW55IH0gZnJvbSAnbmctem9ycm8tYW50ZC9jb3JlL3R5cGVzJztcblxuaW1wb3J0IHsgTnpTcGFjZUl0ZW1EaXJlY3RpdmUgfSBmcm9tICcuL3NwYWNlLWl0ZW0uZGlyZWN0aXZlJztcbmltcG9ydCB7IE56U3BhY2VBbGlnbiwgTnpTcGFjZURpcmVjdGlvbiwgTnpTcGFjZVNpemUsIE56U3BhY2VUeXBlIH0gZnJvbSAnLi90eXBlcyc7XG5cbmNvbnN0IE5aX0NPTkZJR19NT0RVTEVfTkFNRTogTnpDb25maWdLZXkgPSAnc3BhY2UnO1xuY29uc3QgU1BBQ0VfU0laRToge1xuICBbc2l6ZUtleSBpbiBOelNwYWNlVHlwZV06IG51bWJlcjtcbn0gPSB7XG4gIHNtYWxsOiA4LFxuICBtaWRkbGU6IDE2LFxuICBsYXJnZTogMjRcbn07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ256LXNwYWNlLCBbbnotc3BhY2VdJyxcbiAgZXhwb3J0QXM6ICdOelNwYWNlJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiBgXG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgIDxuZy10ZW1wbGF0ZSBuZ0ZvciBsZXQtaXRlbSBsZXQtbGFzdD1cImxhc3RcIiBsZXQtaW5kZXg9XCJpbmRleFwiIFtuZ0Zvck9mXT1cIml0ZW1zXCI+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiYW50LXNwYWNlLWl0ZW1cIlxuICAgICAgICBbc3R5bGUubWFyZ2luLWJvdHRvbS5weF09XCJuekRpcmVjdGlvbiA9PT0gJ3ZlcnRpY2FsJyA/IChsYXN0ID8gbnVsbCA6IHNwYWNlU2l6ZSkgOiBudWxsXCJcbiAgICAgICAgW3N0eWxlLm1hcmdpbi1yaWdodC5weF09XCJuekRpcmVjdGlvbiA9PT0gJ2hvcml6b250YWwnID8gKGxhc3QgPyBudWxsIDogc3BhY2VTaXplKSA6IG51bGxcIlxuICAgICAgPlxuICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIml0ZW1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgICAgPHNwYW5cbiAgICAgICAgKm5nSWY9XCJuelNwbGl0ICYmICFsYXN0XCJcbiAgICAgICAgY2xhc3M9XCJhbnQtc3BhY2Utc3BsaXRcIlxuICAgICAgICBbc3R5bGUubWFyZ2luLWJvdHRvbS5weF09XCJuekRpcmVjdGlvbiA9PT0gJ3ZlcnRpY2FsJyA/IChsYXN0ID8gbnVsbCA6IHNwYWNlU2l6ZSkgOiBudWxsXCJcbiAgICAgICAgW3N0eWxlLm1hcmdpbi1yaWdodC5weF09XCJuekRpcmVjdGlvbiA9PT0gJ2hvcml6b250YWwnID8gKGxhc3QgPyBudWxsIDogc3BhY2VTaXplKSA6IG51bGxcIlxuICAgICAgPlxuICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwibnpTcGxpdFwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogaW5kZXggfVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICA8L3NwYW4+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgYCxcbiAgaG9zdDoge1xuICAgIGNsYXNzOiAnYW50LXNwYWNlJyxcbiAgICAnW2NsYXNzLmFudC1zcGFjZS1ob3Jpem9udGFsXSc6ICduekRpcmVjdGlvbiA9PT0gXCJob3Jpem9udGFsXCInLFxuICAgICdbY2xhc3MuYW50LXNwYWNlLXZlcnRpY2FsXSc6ICduekRpcmVjdGlvbiA9PT0gXCJ2ZXJ0aWNhbFwiJyxcbiAgICAnW2NsYXNzLmFudC1zcGFjZS1hbGlnbi1zdGFydF0nOiAnbWVyZ2VkQWxpZ24gPT09IFwic3RhcnRcIicsXG4gICAgJ1tjbGFzcy5hbnQtc3BhY2UtYWxpZ24tZW5kXSc6ICdtZXJnZWRBbGlnbiA9PT0gXCJlbmRcIicsXG4gICAgJ1tjbGFzcy5hbnQtc3BhY2UtYWxpZ24tY2VudGVyXSc6ICdtZXJnZWRBbGlnbiA9PT0gXCJjZW50ZXJcIicsXG4gICAgJ1tjbGFzcy5hbnQtc3BhY2UtYWxpZ24tYmFzZWxpbmVdJzogJ21lcmdlZEFsaWduID09PSBcImJhc2VsaW5lXCInLFxuICAgICdbc3R5bGUuZmxleC13cmFwXSc6ICdueldyYXAgPyBcIndyYXBcIiA6IG51bGwnXG4gIH0sXG4gIGltcG9ydHM6IFtOZ1RlbXBsYXRlT3V0bGV0LCBOZ0lmLCBOZ0Zvck9mXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBOelNwYWNlQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIEFmdGVyQ29udGVudEluaXQge1xuICByZWFkb25seSBfbnpNb2R1bGVOYW1lOiBOekNvbmZpZ0tleSA9IE5aX0NPTkZJR19NT0RVTEVfTkFNRTtcblxuICBASW5wdXQoKSBuekRpcmVjdGlvbjogTnpTcGFjZURpcmVjdGlvbiA9ICdob3Jpem9udGFsJztcbiAgQElucHV0KCkgbnpBbGlnbj86IE56U3BhY2VBbGlnbjtcbiAgQElucHV0KCkgbnpTcGxpdDogVGVtcGxhdGVSZWY8eyAkaW1wbGljaXQ6IG51bWJlciB9PiB8IG51bGwgPSBudWxsO1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgbnpXcmFwOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIEBXaXRoQ29uZmlnKCkgbnpTaXplOiBOelNwYWNlU2l6ZSA9ICdzbWFsbCc7XG5cbiAgQENvbnRlbnRDaGlsZHJlbihOelNwYWNlSXRlbURpcmVjdGl2ZSwgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KSBpdGVtcyE6IFF1ZXJ5TGlzdDxUZW1wbGF0ZVJlZjxOelNhZmVBbnk+PjtcblxuICBtZXJnZWRBbGlnbj86IE56U3BhY2VBbGlnbjtcbiAgc3BhY2VTaXplOiBudW1iZXIgPSBTUEFDRV9TSVpFLnNtYWxsO1xuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgbnpDb25maWdTZXJ2aWNlOiBOekNvbmZpZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmXG4gICkge31cblxuICBwcml2YXRlIHVwZGF0ZVNwYWNlSXRlbXMoKTogdm9pZCB7XG4gICAgY29uc3QgbnVtYmVyU2l6ZSA9IHR5cGVvZiB0aGlzLm56U2l6ZSA9PT0gJ3N0cmluZycgPyBTUEFDRV9TSVpFW3RoaXMubnpTaXplXSA6IHRoaXMubnpTaXplO1xuICAgIHRoaXMuc3BhY2VTaXplID0gbnVtYmVyU2l6ZSAvICh0aGlzLm56U3BsaXQgPyAyIDogMSk7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcbiAgICB0aGlzLnVwZGF0ZVNwYWNlSXRlbXMoKTtcbiAgICB0aGlzLm1lcmdlZEFsaWduID0gdGhpcy5uekFsaWduID09PSB1bmRlZmluZWQgJiYgdGhpcy5uekRpcmVjdGlvbiA9PT0gJ2hvcml6b250YWwnID8gJ2NlbnRlcicgOiB0aGlzLm56QWxpZ247XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlU3BhY2VJdGVtcygpO1xuICAgIHRoaXMuaXRlbXMuY2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH0pO1xuICB9XG59XG4iXX0=