ng-zorro-antd
Version:
An enterprise-class UI components based on Ant Design and Angular
218 lines (213 loc) • 18.9 kB
JavaScript
/**
* @fileoverview added by tsickle
* Generated from: list.component.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { __decorate, __metadata } from "tslib";
/**
* @license
* Copyright Alibaba.com All Rights Reserved.
*
* 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, ContentChild, Input, TemplateRef, ViewEncapsulation } from '@angular/core';
import { InputBoolean } from 'ng-zorro-antd/core/util';
import { BehaviorSubject } from 'rxjs';
import { NzListFooterComponent, NzListLoadMoreDirective, NzListPaginationComponent } from './list-cell';
export class NzListComponent {
constructor() {
this.nzBordered = false;
this.nzItemLayout = 'horizontal';
this.nzRenderItem = null;
this.nzLoading = false;
this.nzLoadMore = null;
this.nzSize = 'default';
this.nzSplit = true;
this.hasSomethingAfterLastItem = false;
this.itemLayoutNotifySource = new BehaviorSubject(this.nzItemLayout);
}
/**
* @return {?}
*/
get itemLayoutNotify$() {
return this.itemLayoutNotifySource.asObservable();
}
/**
* @return {?}
*/
getSomethingAfterLastItem() {
return !!(this.nzLoadMore ||
this.nzPagination ||
this.nzFooter ||
this.nzListFooterComponent ||
this.nzListPaginationComponent ||
this.nzListLoadMoreDirective);
}
/**
* @param {?} changes
* @return {?}
*/
ngOnChanges(changes) {
if (changes.nzItemLayout) {
this.itemLayoutNotifySource.next(this.nzItemLayout);
}
}
/**
* @return {?}
*/
ngOnDestroy() {
this.itemLayoutNotifySource.unsubscribe();
}
/**
* @return {?}
*/
ngAfterContentInit() {
this.hasSomethingAfterLastItem = this.getSomethingAfterLastItem();
}
}
NzListComponent.decorators = [
{ type: Component, args: [{
selector: 'nz-list, [nz-list]',
exportAs: 'nzList',
template: `
<ng-template #itemsTpl>
<div class="ant-list-items">
<ng-container *ngFor="let item of nzDataSource; let index = index">
<ng-template [ngTemplateOutlet]="nzRenderItem" [ngTemplateOutletContext]="{ $implicit: item, index: index }"></ng-template>
</ng-container>
<ng-content select="nz-list-item, [nz-list-item]"></ng-content>
</div>
</ng-template>
<nz-list-header *ngIf="nzHeader">
<ng-container *nzStringTemplateOutlet="nzHeader">{{ nzHeader }}</ng-container>
</nz-list-header>
<ng-content select="nz-list-header"></ng-content>
<nz-spin [nzSpinning]="nzLoading">
<ng-container>
<div *ngIf="nzLoading && nzDataSource && nzDataSource.length === 0" [style.min-height.px]="53"></div>
<div *ngIf="nzGrid && nzDataSource; else itemsTpl" nz-row [nzGutter]="nzGrid.gutter || null">
<div
nz-col
[nzSpan]="nzGrid.span || null"
[nzXs]="nzGrid.xs || null"
[nzSm]="nzGrid.sm || null"
[nzMd]="nzGrid.md || null"
[nzLg]="nzGrid.lg || null"
[nzXl]="nzGrid.xl || null"
[nzXXl]="nzGrid.xxl || null"
*ngFor="let item of nzDataSource; let index = index"
>
<ng-template [ngTemplateOutlet]="nzRenderItem" [ngTemplateOutletContext]="{ $implicit: item, index: index }"></ng-template>
</div>
</div>
<nz-list-empty *ngIf="!nzLoading && nzDataSource && nzDataSource.length === 0" [nzNoResult]="nzNoResult"></nz-list-empty>
</ng-container>
<ng-content></ng-content>
</nz-spin>
<nz-list-footer *ngIf="nzFooter">
<ng-container *nzStringTemplateOutlet="nzFooter">{{ nzFooter }}</ng-container>
</nz-list-footer>
<ng-content select="nz-list-footer, [nz-list-footer]"></ng-content>
<ng-template [ngTemplateOutlet]="nzLoadMore"></ng-template>
<ng-content select="nz-list-load-more, [nz-list-load-more]"></ng-content>
<nz-list-pagination *ngIf="nzPagination">
<ng-template [ngTemplateOutlet]="nzPagination"></ng-template>
</nz-list-pagination>
<ng-content select="nz-list-pagination, [nz-list-pagination]"></ng-content>
`,
preserveWhitespaces: false,
encapsulation: ViewEncapsulation.None,
changeDetection: ChangeDetectionStrategy.OnPush,
host: {
'[class.ant-list]': 'true',
'[class.ant-list-vertical]': 'nzItemLayout === "vertical"',
'[class.ant-list-lg]': 'nzSize === "large"',
'[class.ant-list-sm]': 'nzSize === "small"',
'[class.ant-list-split]': 'nzSplit',
'[class.ant-list-bordered]': 'nzBordered',
'[class.ant-list-loading]': 'nzLoading',
'[class.ant-list-something-after-last-item]': 'hasSomethingAfterLastItem'
}
}] }
];
/** @nocollapse */
NzListComponent.ctorParameters = () => [];
NzListComponent.propDecorators = {
nzDataSource: [{ type: Input }],
nzBordered: [{ type: Input }],
nzGrid: [{ type: Input }],
nzHeader: [{ type: Input }],
nzFooter: [{ type: Input }],
nzItemLayout: [{ type: Input }],
nzRenderItem: [{ type: Input }],
nzLoading: [{ type: Input }],
nzLoadMore: [{ type: Input }],
nzPagination: [{ type: Input }],
nzSize: [{ type: Input }],
nzSplit: [{ type: Input }],
nzNoResult: [{ type: Input }],
nzListFooterComponent: [{ type: ContentChild, args: [NzListFooterComponent,] }],
nzListPaginationComponent: [{ type: ContentChild, args: [NzListPaginationComponent,] }],
nzListLoadMoreDirective: [{ type: ContentChild, args: [NzListLoadMoreDirective,] }]
};
__decorate([
InputBoolean(),
__metadata("design:type", Object)
], NzListComponent.prototype, "nzBordered", void 0);
__decorate([
InputBoolean(),
__metadata("design:type", Object)
], NzListComponent.prototype, "nzLoading", void 0);
__decorate([
InputBoolean(),
__metadata("design:type", Object)
], NzListComponent.prototype, "nzSplit", void 0);
if (false) {
/** @type {?} */
NzListComponent.ngAcceptInputType_nzBordered;
/** @type {?} */
NzListComponent.ngAcceptInputType_nzLoading;
/** @type {?} */
NzListComponent.ngAcceptInputType_nzSplit;
/** @type {?} */
NzListComponent.prototype.nzDataSource;
/** @type {?} */
NzListComponent.prototype.nzBordered;
/** @type {?} */
NzListComponent.prototype.nzGrid;
/** @type {?} */
NzListComponent.prototype.nzHeader;
/** @type {?} */
NzListComponent.prototype.nzFooter;
/** @type {?} */
NzListComponent.prototype.nzItemLayout;
/** @type {?} */
NzListComponent.prototype.nzRenderItem;
/** @type {?} */
NzListComponent.prototype.nzLoading;
/** @type {?} */
NzListComponent.prototype.nzLoadMore;
/** @type {?} */
NzListComponent.prototype.nzPagination;
/** @type {?} */
NzListComponent.prototype.nzSize;
/** @type {?} */
NzListComponent.prototype.nzSplit;
/** @type {?} */
NzListComponent.prototype.nzNoResult;
/** @type {?} */
NzListComponent.prototype.nzListFooterComponent;
/** @type {?} */
NzListComponent.prototype.nzListPaginationComponent;
/** @type {?} */
NzListComponent.prototype.nzListLoadMoreDirective;
/** @type {?} */
NzListComponent.prototype.hasSomethingAfterLastItem;
/**
* @type {?}
* @private
*/
NzListComponent.prototype.itemLayoutNotifySource;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZy16b3Jyby1hbnRkL2xpc3QvIiwic291cmNlcyI6WyJsaXN0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBUUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFJTCxXQUFXLEVBQ1gsaUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBRW5ELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSx1QkFBdUIsRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQXNFeEcsTUFBTSxPQUFPLGVBQWU7SUErQjFCO1FBekJ5QixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBSW5DLGlCQUFZLEdBQXNCLFlBQVksQ0FBQztRQUMvQyxpQkFBWSxHQUE2QixJQUFJLENBQUM7UUFDOUIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUNsQyxlQUFVLEdBQTZCLElBQUksQ0FBQztRQUU1QyxXQUFNLEdBQWtCLFNBQVMsQ0FBQztRQUNsQixZQUFPLEdBQUcsSUFBSSxDQUFDO1FBT3hDLDhCQUF5QixHQUFHLEtBQUssQ0FBQztRQUUxQiwyQkFBc0IsR0FBRyxJQUFJLGVBQWUsQ0FBb0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBTTVFLENBQUM7Ozs7SUFKaEIsSUFBSSxpQkFBaUI7UUFDbkIsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDcEQsQ0FBQzs7OztJQUlELHlCQUF5QjtRQUN2QixPQUFPLENBQUMsQ0FBQyxDQUNQLElBQUksQ0FBQyxVQUFVO1lBQ2YsSUFBSSxDQUFDLFlBQVk7WUFDakIsSUFBSSxDQUFDLFFBQVE7WUFDYixJQUFJLENBQUMscUJBQXFCO1lBQzFCLElBQUksQ0FBQyx5QkFBeUI7WUFDOUIsSUFBSSxDQUFDLHVCQUF1QixDQUM3QixDQUFDO0lBQ0osQ0FBQzs7Ozs7SUFDRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsWUFBWSxFQUFFO1lBQ3hCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQ3JEO0lBQ0gsQ0FBQzs7OztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsc0JBQXNCLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDNUMsQ0FBQzs7OztJQUVELGtCQUFrQjtRQUNoQixJQUFJLENBQUMseUJBQXlCLEdBQUcsSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7SUFDcEUsQ0FBQzs7O1lBM0hGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsb0JBQW9CO2dCQUM5QixRQUFRLEVBQUUsUUFBUTtnQkFDbEIsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtEVDtnQkFDRCxtQkFBbUIsRUFBRSxLQUFLO2dCQUMxQixhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtnQkFDckMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07Z0JBQy9DLElBQUksRUFBRTtvQkFDSixrQkFBa0IsRUFBRSxNQUFNO29CQUMxQiwyQkFBMkIsRUFBRSw2QkFBNkI7b0JBQzFELHFCQUFxQixFQUFFLG9CQUFvQjtvQkFDM0MscUJBQXFCLEVBQUUsb0JBQW9CO29CQUMzQyx3QkFBd0IsRUFBRSxTQUFTO29CQUNuQywyQkFBMkIsRUFBRSxZQUFZO29CQUN6QywwQkFBMEIsRUFBRSxXQUFXO29CQUN2Qyw0Q0FBNEMsRUFBRSwyQkFBMkI7aUJBQzFFO2FBQ0Y7Ozs7OzJCQU1FLEtBQUs7eUJBQ0wsS0FBSztxQkFDTCxLQUFLO3VCQUNMLEtBQUs7dUJBQ0wsS0FBSzsyQkFDTCxLQUFLOzJCQUNMLEtBQUs7d0JBQ0wsS0FBSzt5QkFDTCxLQUFLOzJCQUNMLEtBQUs7cUJBQ0wsS0FBSztzQkFDTCxLQUFLO3lCQUNMLEtBQUs7b0NBRUwsWUFBWSxTQUFDLHFCQUFxQjt3Q0FDbEMsWUFBWSxTQUFDLHlCQUF5QjtzQ0FDdEMsWUFBWSxTQUFDLHVCQUF1Qjs7QUFmWjtJQUFmLFlBQVksRUFBRTs7bURBQW9CO0FBTW5CO0lBQWYsWUFBWSxFQUFFOztrREFBbUI7QUFJbEI7SUFBZixZQUFZLEVBQUU7O2dEQUFnQjs7O0lBZnhDLDZDQUFrRDs7SUFDbEQsNENBQWlEOztJQUNqRCwwQ0FBK0M7O0lBRS9DLHVDQUFvQzs7SUFDcEMscUNBQTRDOztJQUM1QyxpQ0FBNkI7O0lBQzdCLG1DQUErQzs7SUFDL0MsbUNBQStDOztJQUMvQyx1Q0FBd0Q7O0lBQ3hELHVDQUF1RDs7SUFDdkQsb0NBQTJDOztJQUMzQyxxQ0FBcUQ7O0lBQ3JELHVDQUEwQzs7SUFDMUMsaUNBQTJDOztJQUMzQyxrQ0FBd0M7O0lBQ3hDLHFDQUFpRDs7SUFFakQsZ0RBQW1GOztJQUNuRixvREFBK0Y7O0lBQy9GLGtEQUF5Rjs7SUFFekYsb0RBQWtDOzs7OztJQUVsQyxpREFBMkYiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWxpYmFiYS5jb20gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vTkctWk9SUk8vbmctem9ycm8tYW50ZC9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJvb2xlYW5JbnB1dCwgTnpEaXJlY3Rpb25WSFR5cGUsIE56U2FmZUFueSwgTnpTaXplTERTVHlwZSB9IGZyb20gJ25nLXpvcnJvLWFudGQvY29yZS90eXBlcyc7XG5pbXBvcnQgeyBJbnB1dEJvb2xlYW4gfSBmcm9tICduZy16b3Jyby1hbnRkL2NvcmUvdXRpbCc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE56TGlzdEdyaWQgfSBmcm9tICcuL2ludGVyZmFjZSc7XG5pbXBvcnQgeyBOekxpc3RGb290ZXJDb21wb25lbnQsIE56TGlzdExvYWRNb3JlRGlyZWN0aXZlLCBOekxpc3RQYWdpbmF0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9saXN0LWNlbGwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduei1saXN0LCBbbnotbGlzdF0nLFxuICBleHBvcnRBczogJ256TGlzdCcsXG4gIHRlbXBsYXRlOiBgXG4gICAgPG5nLXRlbXBsYXRlICNpdGVtc1RwbD5cbiAgICAgIDxkaXYgY2xhc3M9XCJhbnQtbGlzdC1pdGVtc1wiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIG56RGF0YVNvdXJjZTsgbGV0IGluZGV4ID0gaW5kZXhcIj5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwibnpSZW5kZXJJdGVtXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBpdGVtLCBpbmRleDogaW5kZXggfVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJuei1saXN0LWl0ZW0sIFtuei1saXN0LWl0ZW1dXCI+PC9uZy1jb250ZW50PlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgIDxuei1saXN0LWhlYWRlciAqbmdJZj1cIm56SGVhZGVyXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuelN0cmluZ1RlbXBsYXRlT3V0bGV0PVwibnpIZWFkZXJcIj57eyBuekhlYWRlciB9fTwvbmctY29udGFpbmVyPlxuICAgIDwvbnotbGlzdC1oZWFkZXI+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwibnotbGlzdC1oZWFkZXJcIj48L25nLWNvbnRlbnQ+XG5cbiAgICA8bnotc3BpbiBbbnpTcGlubmluZ109XCJuekxvYWRpbmdcIj5cbiAgICAgIDxuZy1jb250YWluZXI+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJuekxvYWRpbmcgJiYgbnpEYXRhU291cmNlICYmIG56RGF0YVNvdXJjZS5sZW5ndGggPT09IDBcIiBbc3R5bGUubWluLWhlaWdodC5weF09XCI1M1wiPjwvZGl2PlxuICAgICAgICA8ZGl2ICpuZ0lmPVwibnpHcmlkICYmIG56RGF0YVNvdXJjZTsgZWxzZSBpdGVtc1RwbFwiIG56LXJvdyBbbnpHdXR0ZXJdPVwibnpHcmlkLmd1dHRlciB8fCBudWxsXCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgbnotY29sXG4gICAgICAgICAgICBbbnpTcGFuXT1cIm56R3JpZC5zcGFuIHx8IG51bGxcIlxuICAgICAgICAgICAgW256WHNdPVwibnpHcmlkLnhzIHx8IG51bGxcIlxuICAgICAgICAgICAgW256U21dPVwibnpHcmlkLnNtIHx8IG51bGxcIlxuICAgICAgICAgICAgW256TWRdPVwibnpHcmlkLm1kIHx8IG51bGxcIlxuICAgICAgICAgICAgW256TGddPVwibnpHcmlkLmxnIHx8IG51bGxcIlxuICAgICAgICAgICAgW256WGxdPVwibnpHcmlkLnhsIHx8IG51bGxcIlxuICAgICAgICAgICAgW256WFhsXT1cIm56R3JpZC54eGwgfHwgbnVsbFwiXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBuekRhdGFTb3VyY2U7IGxldCBpbmRleCA9IGluZGV4XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwibnpSZW5kZXJJdGVtXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBpdGVtLCBpbmRleDogaW5kZXggfVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bnotbGlzdC1lbXB0eSAqbmdJZj1cIiFuekxvYWRpbmcgJiYgbnpEYXRhU291cmNlICYmIG56RGF0YVNvdXJjZS5sZW5ndGggPT09IDBcIiBbbnpOb1Jlc3VsdF09XCJuek5vUmVzdWx0XCI+PC9uei1saXN0LWVtcHR5PlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgPC9uei1zcGluPlxuXG4gICAgPG56LWxpc3QtZm9vdGVyICpuZ0lmPVwibnpGb290ZXJcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm56U3RyaW5nVGVtcGxhdGVPdXRsZXQ9XCJuekZvb3RlclwiPnt7IG56Rm9vdGVyIH19PC9uZy1jb250YWluZXI+XG4gICAgPC9uei1saXN0LWZvb3Rlcj5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJuei1saXN0LWZvb3RlciwgW256LWxpc3QtZm9vdGVyXVwiPjwvbmctY29udGVudD5cblxuICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJuekxvYWRNb3JlXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJuei1saXN0LWxvYWQtbW9yZSwgW256LWxpc3QtbG9hZC1tb3JlXVwiPjwvbmctY29udGVudD5cblxuICAgIDxuei1saXN0LXBhZ2luYXRpb24gKm5nSWY9XCJuelBhZ2luYXRpb25cIj5cbiAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJuelBhZ2luYXRpb25cIj48L25nLXRlbXBsYXRlPlxuICAgIDwvbnotbGlzdC1wYWdpbmF0aW9uPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIm56LWxpc3QtcGFnaW5hdGlvbiwgW256LWxpc3QtcGFnaW5hdGlvbl1cIj48L25nLWNvbnRlbnQ+XG4gIGAsXG4gIHByZXNlcnZlV2hpdGVzcGFjZXM6IGZhbHNlLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaG9zdDoge1xuICAgICdbY2xhc3MuYW50LWxpc3RdJzogJ3RydWUnLFxuICAgICdbY2xhc3MuYW50LWxpc3QtdmVydGljYWxdJzogJ256SXRlbUxheW91dCA9PT0gXCJ2ZXJ0aWNhbFwiJyxcbiAgICAnW2NsYXNzLmFudC1saXN0LWxnXSc6ICduelNpemUgPT09IFwibGFyZ2VcIicsXG4gICAgJ1tjbGFzcy5hbnQtbGlzdC1zbV0nOiAnbnpTaXplID09PSBcInNtYWxsXCInLFxuICAgICdbY2xhc3MuYW50LWxpc3Qtc3BsaXRdJzogJ256U3BsaXQnLFxuICAgICdbY2xhc3MuYW50LWxpc3QtYm9yZGVyZWRdJzogJ256Qm9yZGVyZWQnLFxuICAgICdbY2xhc3MuYW50LWxpc3QtbG9hZGluZ10nOiAnbnpMb2FkaW5nJyxcbiAgICAnW2NsYXNzLmFudC1saXN0LXNvbWV0aGluZy1hZnRlci1sYXN0LWl0ZW1dJzogJ2hhc1NvbWV0aGluZ0FmdGVyTGFzdEl0ZW0nXG4gIH1cbn0pXG5leHBvcnQgY2xhc3MgTnpMaXN0Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfbnpCb3JkZXJlZDogQm9vbGVhbklucHV0O1xuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfbnpMb2FkaW5nOiBCb29sZWFuSW5wdXQ7XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9uelNwbGl0OiBCb29sZWFuSW5wdXQ7XG5cbiAgQElucHV0KCkgbnpEYXRhU291cmNlPzogTnpTYWZlQW55W107XG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBuekJvcmRlcmVkID0gZmFsc2U7XG4gIEBJbnB1dCgpIG56R3JpZD86IE56TGlzdEdyaWQ7XG4gIEBJbnB1dCgpIG56SGVhZGVyPzogc3RyaW5nIHwgVGVtcGxhdGVSZWY8dm9pZD47XG4gIEBJbnB1dCgpIG56Rm9vdGVyPzogc3RyaW5nIHwgVGVtcGxhdGVSZWY8dm9pZD47XG4gIEBJbnB1dCgpIG56SXRlbUxheW91dDogTnpEaXJlY3Rpb25WSFR5cGUgPSAnaG9yaXpvbnRhbCc7XG4gIEBJbnB1dCgpIG56UmVuZGVySXRlbTogVGVtcGxhdGVSZWY8dm9pZD4gfCBudWxsID0gbnVsbDtcbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIG56TG9hZGluZyA9IGZhbHNlO1xuICBASW5wdXQoKSBuekxvYWRNb3JlOiBUZW1wbGF0ZVJlZjx2b2lkPiB8IG51bGwgPSBudWxsO1xuICBASW5wdXQoKSBuelBhZ2luYXRpb24/OiBUZW1wbGF0ZVJlZjx2b2lkPjtcbiAgQElucHV0KCkgbnpTaXplOiBOelNpemVMRFNUeXBlID0gJ2RlZmF1bHQnO1xuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgbnpTcGxpdCA9IHRydWU7XG4gIEBJbnB1dCgpIG56Tm9SZXN1bHQ/OiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjx2b2lkPjtcblxuICBAQ29udGVudENoaWxkKE56TGlzdEZvb3RlckNvbXBvbmVudCkgbnpMaXN0Rm9vdGVyQ29tcG9uZW50ITogTnpMaXN0Rm9vdGVyQ29tcG9uZW50O1xuICBAQ29udGVudENoaWxkKE56TGlzdFBhZ2luYXRpb25Db21wb25lbnQpIG56TGlzdFBhZ2luYXRpb25Db21wb25lbnQhOiBOekxpc3RQYWdpbmF0aW9uQ29tcG9uZW50O1xuICBAQ29udGVudENoaWxkKE56TGlzdExvYWRNb3JlRGlyZWN0aXZlKSBuekxpc3RMb2FkTW9yZURpcmVjdGl2ZSE6IE56TGlzdExvYWRNb3JlRGlyZWN0aXZlO1xuXG4gIGhhc1NvbWV0aGluZ0FmdGVyTGFzdEl0ZW0gPSBmYWxzZTtcblxuICBwcml2YXRlIGl0ZW1MYXlvdXROb3RpZnlTb3VyY2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE56RGlyZWN0aW9uVkhUeXBlPih0aGlzLm56SXRlbUxheW91dCk7XG5cbiAgZ2V0IGl0ZW1MYXlvdXROb3RpZnkkKCk6IE9ic2VydmFibGU8TnpEaXJlY3Rpb25WSFR5cGU+IHtcbiAgICByZXR1cm4gdGhpcy5pdGVtTGF5b3V0Tm90aWZ5U291cmNlLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIGdldFNvbWV0aGluZ0FmdGVyTGFzdEl0ZW0oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhKFxuICAgICAgdGhpcy5uekxvYWRNb3JlIHx8XG4gICAgICB0aGlzLm56UGFnaW5hdGlvbiB8fFxuICAgICAgdGhpcy5uekZvb3RlciB8fFxuICAgICAgdGhpcy5uekxpc3RGb290ZXJDb21wb25lbnQgfHxcbiAgICAgIHRoaXMubnpMaXN0UGFnaW5hdGlvbkNvbXBvbmVudCB8fFxuICAgICAgdGhpcy5uekxpc3RMb2FkTW9yZURpcmVjdGl2ZVxuICAgICk7XG4gIH1cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzLm56SXRlbUxheW91dCkge1xuICAgICAgdGhpcy5pdGVtTGF5b3V0Tm90aWZ5U291cmNlLm5leHQodGhpcy5uekl0ZW1MYXlvdXQpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuaXRlbUxheW91dE5vdGlmeVNvdXJjZS51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaGFzU29tZXRoaW5nQWZ0ZXJMYXN0SXRlbSA9IHRoaXMuZ2V0U29tZXRoaW5nQWZ0ZXJMYXN0SXRlbSgpO1xuICB9XG59XG4iXX0=