ng-zorro-antd
Version:
An enterprise-class UI components based on Ant Design and Angular
359 lines • 27.2 kB
JavaScript
/**
* @fileoverview added by tsickle
* Generated from: pagination.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, ChangeDetectorRef, Component, EventEmitter, Input, Output, TemplateRef, ViewEncapsulation } from '@angular/core';
import { gridResponsiveMap, NzBreakpointEnum, NzBreakpointService } from 'ng-zorro-antd/core/services';
import { InputBoolean, InputNumber } from 'ng-zorro-antd/core/util';
import { NzI18nService } from 'ng-zorro-antd/i18n';
import { ReplaySubject, Subject } from 'rxjs';
import { takeUntil } from 'rxjs/operators';
export class NzPaginationComponent {
/**
* @param {?} i18n
* @param {?} cdr
* @param {?} breakpointService
*/
constructor(i18n, cdr, breakpointService) {
this.i18n = i18n;
this.cdr = cdr;
this.breakpointService = breakpointService;
this.nzPageSizeChange = new EventEmitter();
this.nzPageIndexChange = new EventEmitter();
this.nzShowTotal = null;
this.nzSize = 'default';
this.nzPageSizeOptions = [10, 20, 30, 40];
this.nzDisabled = false;
this.nzShowSizeChanger = false;
this.nzHideOnSinglePage = false;
this.nzShowQuickJumper = false;
this.nzSimple = false;
this.nzResponsive = false;
this.nzTotal = 0;
this.nzPageIndex = 1;
this.nzPageSize = 10;
this.showPagination = true;
this.locale = {};
this.size = 'default';
this.destroy$ = new Subject();
this.total$ = new ReplaySubject(1);
}
/**
* @param {?} value
* @param {?} lastIndex
* @return {?}
*/
validatePageIndex(value, lastIndex) {
if (value > lastIndex) {
return lastIndex;
}
else if (value < 1) {
return 1;
}
else {
return value;
}
}
/**
* @param {?} index
* @return {?}
*/
onPageIndexChange(index) {
/** @type {?} */
const lastIndex = this.getLastIndex(this.nzTotal, this.nzPageSize);
/** @type {?} */
const validIndex = this.validatePageIndex(index, lastIndex);
if (validIndex !== this.nzPageIndex && !this.nzDisabled) {
this.nzPageIndex = validIndex;
this.nzPageIndexChange.emit(this.nzPageIndex);
}
}
/**
* @param {?} size
* @return {?}
*/
onPageSizeChange(size) {
this.nzPageSize = size;
this.nzPageSizeChange.emit(size);
/** @type {?} */
const lastIndex = this.getLastIndex(this.nzTotal, this.nzPageSize);
if (this.nzPageIndex > lastIndex) {
this.onPageIndexChange(lastIndex);
}
}
/**
* @param {?} total
* @return {?}
*/
onTotalChange(total) {
/** @type {?} */
const lastIndex = this.getLastIndex(total, this.nzPageSize);
if (this.nzPageIndex > lastIndex) {
Promise.resolve().then((/**
* @return {?}
*/
() => this.onPageIndexChange(lastIndex)));
}
}
/**
* @param {?} total
* @param {?} pageSize
* @return {?}
*/
getLastIndex(total, pageSize) {
return Math.ceil(total / pageSize);
}
/**
* @return {?}
*/
ngOnInit() {
this.i18n.localeChange.pipe(takeUntil(this.destroy$)).subscribe((/**
* @return {?}
*/
() => {
this.locale = this.i18n.getLocaleData('Pagination');
this.cdr.markForCheck();
}));
this.total$.pipe(takeUntil(this.destroy$)).subscribe((/**
* @param {?} total
* @return {?}
*/
total => {
this.onTotalChange(total);
}));
this.breakpointService
.subscribe(gridResponsiveMap)
.pipe(takeUntil(this.destroy$))
.subscribe((/**
* @param {?} bp
* @return {?}
*/
bp => {
if (this.nzResponsive) {
this.size = bp === NzBreakpointEnum.xs ? 'small' : 'default';
this.cdr.markForCheck();
}
}));
}
/**
* @return {?}
*/
ngOnDestroy() {
this.destroy$.next();
this.destroy$.complete();
}
/**
* @param {?} changes
* @return {?}
*/
ngOnChanges(changes) {
const { nzHideOnSinglePage, nzTotal, nzPageSize, nzSize } = changes;
if (nzTotal) {
this.total$.next(this.nzTotal);
}
if (nzHideOnSinglePage || nzTotal || nzPageSize) {
this.showPagination = (this.nzHideOnSinglePage && this.nzTotal > this.nzPageSize) || (this.nzTotal > 0 && !this.nzHideOnSinglePage);
}
if (nzSize) {
this.size = nzSize.currentValue;
}
}
}
NzPaginationComponent.decorators = [
{ type: Component, args: [{
selector: 'nz-pagination',
exportAs: 'nzPagination',
preserveWhitespaces: false,
encapsulation: ViewEncapsulation.None,
changeDetection: ChangeDetectionStrategy.OnPush,
template: `
<ng-container *ngIf="showPagination">
<ng-container *ngIf="nzSimple; else defaultPagination.template">
<ng-template [ngTemplateOutlet]="simplePagination.template"></ng-template>
</ng-container>
</ng-container>
<nz-pagination-simple
#simplePagination
[disabled]="nzDisabled"
[itemRender]="nzItemRender"
[locale]="locale"
[pageSize]="nzPageSize"
[total]="nzTotal"
[pageIndex]="nzPageIndex"
(pageIndexChange)="onPageIndexChange($event)"
></nz-pagination-simple>
<nz-pagination-default
#defaultPagination
[nzSize]="size"
[itemRender]="nzItemRender"
[showTotal]="nzShowTotal"
[disabled]="nzDisabled"
[locale]="locale"
[showSizeChanger]="nzShowSizeChanger"
[showQuickJumper]="nzShowQuickJumper"
[total]="nzTotal"
[pageIndex]="nzPageIndex"
[pageSize]="nzPageSize"
[pageSizeOptions]="nzPageSizeOptions"
(pageIndexChange)="onPageIndexChange($event)"
(pageSizeChange)="onPageSizeChange($event)"
></nz-pagination-default>
`,
host: {
'[class.ant-pagination]': 'true',
'[class.ant-pagination-simple]': 'nzSimple',
'[class.ant-pagination-disabled]': 'nzDisabled',
'[class.mini]': `!nzSimple && size === 'small'`
}
}] }
];
/** @nocollapse */
NzPaginationComponent.ctorParameters = () => [
{ type: NzI18nService },
{ type: ChangeDetectorRef },
{ type: NzBreakpointService }
];
NzPaginationComponent.propDecorators = {
nzPageSizeChange: [{ type: Output }],
nzPageIndexChange: [{ type: Output }],
nzShowTotal: [{ type: Input }],
nzSize: [{ type: Input }],
nzPageSizeOptions: [{ type: Input }],
nzItemRender: [{ type: Input }],
nzDisabled: [{ type: Input }],
nzShowSizeChanger: [{ type: Input }],
nzHideOnSinglePage: [{ type: Input }],
nzShowQuickJumper: [{ type: Input }],
nzSimple: [{ type: Input }],
nzResponsive: [{ type: Input }],
nzTotal: [{ type: Input }],
nzPageIndex: [{ type: Input }],
nzPageSize: [{ type: Input }]
};
__decorate([
InputBoolean(),
__metadata("design:type", Object)
], NzPaginationComponent.prototype, "nzDisabled", void 0);
__decorate([
InputBoolean(),
__metadata("design:type", Object)
], NzPaginationComponent.prototype, "nzShowSizeChanger", void 0);
__decorate([
InputBoolean(),
__metadata("design:type", Object)
], NzPaginationComponent.prototype, "nzHideOnSinglePage", void 0);
__decorate([
InputBoolean(),
__metadata("design:type", Object)
], NzPaginationComponent.prototype, "nzShowQuickJumper", void 0);
__decorate([
InputBoolean(),
__metadata("design:type", Object)
], NzPaginationComponent.prototype, "nzSimple", void 0);
__decorate([
InputBoolean(),
__metadata("design:type", Object)
], NzPaginationComponent.prototype, "nzResponsive", void 0);
__decorate([
InputNumber(),
__metadata("design:type", Object)
], NzPaginationComponent.prototype, "nzTotal", void 0);
__decorate([
InputNumber(),
__metadata("design:type", Object)
], NzPaginationComponent.prototype, "nzPageIndex", void 0);
__decorate([
InputNumber(),
__metadata("design:type", Object)
], NzPaginationComponent.prototype, "nzPageSize", void 0);
if (false) {
/** @type {?} */
NzPaginationComponent.ngAcceptInputType_nzDisabled;
/** @type {?} */
NzPaginationComponent.ngAcceptInputType_nzShowSizeChanger;
/** @type {?} */
NzPaginationComponent.ngAcceptInputType_nzHideOnSinglePage;
/** @type {?} */
NzPaginationComponent.ngAcceptInputType_nzShowQuickJumper;
/** @type {?} */
NzPaginationComponent.ngAcceptInputType_nzSimple;
/** @type {?} */
NzPaginationComponent.ngAcceptInputType_nzResponsive;
/** @type {?} */
NzPaginationComponent.ngAcceptInputType_nzTotal;
/** @type {?} */
NzPaginationComponent.ngAcceptInputType_nzPageIndex;
/** @type {?} */
NzPaginationComponent.ngAcceptInputType_nzPageSize;
/** @type {?} */
NzPaginationComponent.prototype.nzPageSizeChange;
/** @type {?} */
NzPaginationComponent.prototype.nzPageIndexChange;
/** @type {?} */
NzPaginationComponent.prototype.nzShowTotal;
/** @type {?} */
NzPaginationComponent.prototype.nzSize;
/** @type {?} */
NzPaginationComponent.prototype.nzPageSizeOptions;
/** @type {?} */
NzPaginationComponent.prototype.nzItemRender;
/** @type {?} */
NzPaginationComponent.prototype.nzDisabled;
/** @type {?} */
NzPaginationComponent.prototype.nzShowSizeChanger;
/** @type {?} */
NzPaginationComponent.prototype.nzHideOnSinglePage;
/** @type {?} */
NzPaginationComponent.prototype.nzShowQuickJumper;
/** @type {?} */
NzPaginationComponent.prototype.nzSimple;
/** @type {?} */
NzPaginationComponent.prototype.nzResponsive;
/** @type {?} */
NzPaginationComponent.prototype.nzTotal;
/** @type {?} */
NzPaginationComponent.prototype.nzPageIndex;
/** @type {?} */
NzPaginationComponent.prototype.nzPageSize;
/** @type {?} */
NzPaginationComponent.prototype.showPagination;
/** @type {?} */
NzPaginationComponent.prototype.locale;
/** @type {?} */
NzPaginationComponent.prototype.size;
/**
* @type {?}
* @private
*/
NzPaginationComponent.prototype.destroy$;
/**
* @type {?}
* @private
*/
NzPaginationComponent.prototype.total$;
/**
* @type {?}
* @private
*/
NzPaginationComponent.prototype.i18n;
/**
* @type {?}
* @private
*/
NzPaginationComponent.prototype.cdr;
/**
* @type {?}
* @private
*/
NzPaginationComponent.prototype.breakpointService;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZy16b3Jyby1hbnRkL3BhZ2luYXRpb24vIiwic291cmNlcyI6WyJwYWdpbmF0aW9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBUUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBSUwsTUFBTSxFQUVOLFdBQVcsRUFDWCxpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFdkcsT0FBTyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDOUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBa0QzQyxNQUFNLE9BQU8scUJBQXFCOzs7Ozs7SUF5RWhDLFlBQW9CLElBQW1CLEVBQVUsR0FBc0IsRUFBVSxpQkFBc0M7UUFBbkcsU0FBSSxHQUFKLElBQUksQ0FBZTtRQUFVLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQVUsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFxQjtRQTlEcEcscUJBQWdCLEdBQXlCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDNUQsc0JBQWlCLEdBQXlCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDdkUsZ0JBQVcsR0FBdUUsSUFBSSxDQUFDO1FBQ3ZGLFdBQU0sR0FBd0IsU0FBUyxDQUFDO1FBQ3hDLHNCQUFpQixHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7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LEVBQUU7O3VEQUFrQjtBQUNqQjtJQUFmLFlBQVksRUFBRTs7MkRBQXNCO0FBQ3RCO0lBQWQsV0FBVyxFQUFFOztzREFBYTtBQUNaO0lBQWQsV0FBVyxFQUFFOzswREFBaUI7QUFDaEI7SUFBZCxXQUFXLEVBQUU7O3lEQUFpQjs7O0lBeEJ4QyxtREFBa0Q7O0lBQ2xELDBEQUF5RDs7SUFDekQsMkRBQTBEOztJQUMxRCwwREFBeUQ7O0lBQ3pELGlEQUFnRDs7SUFDaEQscURBQW9EOztJQUNwRCxnREFBOEM7O0lBQzlDLG9EQUFrRDs7SUFDbEQsbURBQWlEOztJQUVqRCxpREFBK0U7O0lBQy9FLGtEQUFnRjs7SUFDaEYsNENBQWdHOztJQUNoRyx1Q0FBaUQ7O0lBQ2pELGtEQUE4Qzs7SUFDOUMsNkNBQWdFOztJQUNoRSwyQ0FBNEM7O0lBQzVDLGtEQUFtRDs7SUFDbkQsbURBQW9EOztJQUNwRCxrREFBbUQ7O0lBQ25ELHlDQUEwQzs7SUFDMUMsNkNBQThDOztJQUM5Qyx3Q0FBb0M7O0lBQ3BDLDRDQUF3Qzs7SUFDeEMsMkNBQXdDOztJQUV4QywrQ0FBc0I7O0lBQ3RCLHVDQUF1Qjs7SUFDdkIscUNBQXNDOzs7OztJQUV0Qyx5Q0FBdUM7Ozs7O0lBQ3ZDLHVDQUE4Qzs7Ozs7SUF5Q2xDLHFDQUEyQjs7Ozs7SUFBRSxvQ0FBOEI7Ozs7O0lBQUUsa0RBQThDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFsaWJhYmEuY29tIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL05HLVpPUlJPL25nLXpvcnJvLWFudGQvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGdyaWRSZXNwb25zaXZlTWFwLCBOekJyZWFrcG9pbnRFbnVtLCBOekJyZWFrcG9pbnRTZXJ2aWNlIH0gZnJvbSAnbmctem9ycm8tYW50ZC9jb3JlL3NlcnZpY2VzJztcbmltcG9ydCB7IEJvb2xlYW5JbnB1dCwgTnVtYmVySW5wdXQsIE56U2FmZUFueSB9IGZyb20gJ25nLXpvcnJvLWFudGQvY29yZS90eXBlcyc7XG5pbXBvcnQgeyBJbnB1dEJvb2xlYW4sIElucHV0TnVtYmVyIH0gZnJvbSAnbmctem9ycm8tYW50ZC9jb3JlL3V0aWwnO1xuaW1wb3J0IHsgTnpJMThuU2VydmljZSB9IGZyb20gJ25nLXpvcnJvLWFudGQvaTE4bic7XG5pbXBvcnQgeyBSZXBsYXlTdWJqZWN0LCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFBhZ2luYXRpb25JdGVtUmVuZGVyQ29udGV4dCB9IGZyb20gJy4vcGFnaW5hdGlvbi50eXBlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ256LXBhZ2luYXRpb24nLFxuICBleHBvcnRBczogJ256UGFnaW5hdGlvbicsXG4gIHByZXNlcnZlV2hpdGVzcGFjZXM6IGZhbHNlLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6IGBcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd1BhZ2luYXRpb25cIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJuelNpbXBsZTsgZWxzZSBkZWZhdWx0UGFnaW5hdGlvbi50ZW1wbGF0ZVwiPlxuICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwic2ltcGxlUGFnaW5hdGlvbi50ZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bnotcGFnaW5hdGlvbi1zaW1wbGVcbiAgICAgICNzaW1wbGVQYWdpbmF0aW9uXG4gICAgICBbZGlzYWJsZWRdPVwibnpEaXNhYmxlZFwiXG4gICAgICBbaXRlbVJlbmRlcl09XCJuekl0ZW1SZW5kZXJcIlxuICAgICAgW2xvY2FsZV09XCJsb2NhbGVcIlxuICAgICAgW3BhZ2VTaXplXT1cIm56UGFnZVNpemVcIlxuICAgICAgW3RvdGFsXT1cIm56VG90YWxcIlxuICAgICAgW3BhZ2VJbmRleF09XCJuelBhZ2VJbmRleFwiXG4gICAgICAocGFnZUluZGV4Q2hhbmdlKT1cIm9uUGFnZUluZGV4Q2hhbmdlKCRldmVudClcIlxuICAgID48L256LXBhZ2luYXRpb24tc2ltcGxlPlxuICAgIDxuei1wYWdpbmF0aW9uLWRlZmF1bHRcbiAgICAgICNkZWZhdWx0UGFnaW5hdGlvblxuICAgICAgW256U2l6ZV09XCJzaXplXCJcbiAgICAgIFtpdGVtUmVuZGVyXT1cIm56SXRlbVJlbmRlclwiXG4gICAgICBbc2hvd1RvdGFsXT1cIm56U2hvd1RvdGFsXCJcbiAgICAgIFtkaXNhYmxlZF09XCJuekRpc2FibGVkXCJcbiAgICAgIFtsb2NhbGVdPVwibG9jYWxlXCJcbiAgICAgIFtzaG93U2l6ZUNoYW5nZXJdPVwibnpTaG93U2l6ZUNoYW5nZXJcIlxuICAgICAgW3Nob3dRdWlja0p1bXBlcl09XCJuelNob3dRdWlja0p1bXBlclwiXG4gICAgICBbdG90YWxdPVwibnpUb3RhbFwiXG4gICAgICBbcGFnZUluZGV4XT1cIm56UGFnZUluZGV4XCJcbiAgICAgIFtwYWdlU2l6ZV09XCJuelBhZ2VTaXplXCJcbiAgICAgIFtwYWdlU2l6ZU9wdGlvbnNdPVwibnpQYWdlU2l6ZU9wdGlvbnNcIlxuICAgICAgKHBhZ2VJbmRleENoYW5nZSk9XCJvblBhZ2VJbmRleENoYW5nZSgkZXZlbnQpXCJcbiAgICAgIChwYWdlU2l6ZUNoYW5nZSk9XCJvblBhZ2VTaXplQ2hhbmdlKCRldmVudClcIlxuICAgID48L256LXBhZ2luYXRpb24tZGVmYXVsdD5cbiAgYCxcbiAgaG9zdDoge1xuICAgICdbY2xhc3MuYW50LXBhZ2luYXRpb25dJzogJ3RydWUnLFxuICAgICdbY2xhc3MuYW50LXBhZ2luYXRpb24tc2ltcGxlXSc6ICduelNpbXBsZScsXG4gICAgJ1tjbGFzcy5hbnQtcGFnaW5hdGlvbi1kaXNhYmxlZF0nOiAnbnpEaXNhYmxlZCcsXG4gICAgJ1tjbGFzcy5taW5pXSc6IGAhbnpTaW1wbGUgJiYgc2l6ZSA9PT0gJ3NtYWxsJ2BcbiAgfVxufSlcbmV4cG9ydCBjbGFzcyBOelBhZ2luYXRpb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzIHtcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX256RGlzYWJsZWQ6IEJvb2xlYW5JbnB1dDtcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX256U2hvd1NpemVDaGFuZ2VyOiBCb29sZWFuSW5wdXQ7XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9uekhpZGVPblNpbmdsZVBhZ2U6IEJvb2xlYW5JbnB1dDtcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX256U2hvd1F1aWNrSnVtcGVyOiBCb29sZWFuSW5wdXQ7XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9uelNpbXBsZTogQm9vbGVhbklucHV0O1xuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfbnpSZXNwb25zaXZlOiBCb29sZWFuSW5wdXQ7XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9uelRvdGFsOiBOdW1iZXJJbnB1dDtcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX256UGFnZUluZGV4OiBOdW1iZXJJbnB1dDtcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX256UGFnZVNpemU6IE51bWJlcklucHV0O1xuXG4gIEBPdXRwdXQoKSByZWFkb25seSBuelBhZ2VTaXplQ2hhbmdlOiBFdmVudEVtaXR0ZXI8bnVtYmVyPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIHJlYWRvbmx5IG56UGFnZUluZGV4Q2hhbmdlOiBFdmVudEVtaXR0ZXI8bnVtYmVyPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQElucHV0KCkgbnpTaG93VG90YWw6IFRlbXBsYXRlUmVmPHsgJGltcGxpY2l0OiBudW1iZXI7IHJhbmdlOiBbbnVtYmVyLCBudW1iZXJdIH0+IHwgbnVsbCA9IG51bGw7XG4gIEBJbnB1dCgpIG56U2l6ZTogJ2RlZmF1bHQnIHwgJ3NtYWxsJyA9ICdkZWZhdWx0JztcbiAgQElucHV0KCkgbnpQYWdlU2l6ZU9wdGlvbnMgPSBbMTAsIDIwLCAzMCwgNDBdO1xuICBASW5wdXQoKSBuekl0ZW1SZW5kZXI6IFRlbXBsYXRlUmVmPFBhZ2luYXRpb25JdGVtUmVuZGVyQ29udGV4dD47XG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBuekRpc2FibGVkID0gZmFsc2U7XG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBuelNob3dTaXplQ2hhbmdlciA9IGZhbHNlO1xuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgbnpIaWRlT25TaW5nbGVQYWdlID0gZmFsc2U7XG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBuelNob3dRdWlja0p1bXBlciA9IGZhbHNlO1xuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgbnpTaW1wbGUgPSBmYWxzZTtcbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIG56UmVzcG9uc2l2ZSA9IGZhbHNlO1xuICBASW5wdXQoKSBASW5wdXROdW1iZXIoKSBuelRvdGFsID0gMDtcbiAgQElucHV0KCkgQElucHV0TnVtYmVyKCkgbnpQYWdlSW5kZXggPSAxO1xuICBASW5wdXQoKSBASW5wdXROdW1iZXIoKSBuelBhZ2VTaXplID0gMTA7XG5cbiAgc2hvd1BhZ2luYXRpb24gPSB0cnVlO1xuICBsb2NhbGU6IE56U2FmZUFueSA9IHt9O1xuICBzaXplOiAnZGVmYXVsdCcgfCAnc21hbGwnID0gJ2RlZmF1bHQnO1xuXG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwcml2YXRlIHRvdGFsJCA9IG5ldyBSZXBsYXlTdWJqZWN0PG51bWJlcj4oMSk7XG5cbiAgdmFsaWRhdGVQYWdlSW5kZXgodmFsdWU6IG51bWJlciwgbGFzdEluZGV4OiBudW1iZXIpOiBudW1iZXIge1xuICAgIGlmICh2YWx1ZSA+IGxhc3RJbmRleCkge1xuICAgICAgcmV0dXJuIGxhc3RJbmRleDtcbiAgICB9IGVsc2UgaWYgKHZhbHVlIDwgMSkge1xuICAgICAgcmV0dXJuIDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICBvblBhZ2VJbmRleENoYW5nZShpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3QgbGFzdEluZGV4ID0gdGhpcy5nZXRMYXN0SW5kZXgodGhpcy5uelRvdGFsLCB0aGlzLm56UGFnZVNpemUpO1xuICAgIGNvbnN0IHZhbGlkSW5kZXggPSB0aGlzLnZhbGlkYXRlUGFnZUluZGV4KGluZGV4LCBsYXN0SW5kZXgpO1xuICAgIGlmICh2YWxpZEluZGV4ICE9PSB0aGlzLm56UGFnZUluZGV4ICYmICF0aGlzLm56RGlzYWJsZWQpIHtcbiAgICAgIHRoaXMubnpQYWdlSW5kZXggPSB2YWxpZEluZGV4O1xuICAgICAgdGhpcy5uelBhZ2VJbmRleENoYW5nZS5lbWl0KHRoaXMubnpQYWdlSW5kZXgpO1xuICAgIH1cbiAgfVxuXG4gIG9uUGFnZVNpemVDaGFuZ2Uoc2l6ZTogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5uelBhZ2VTaXplID0gc2l6ZTtcbiAgICB0aGlzLm56UGFnZVNpemVDaGFuZ2UuZW1pdChzaXplKTtcbiAgICBjb25zdCBsYXN0SW5kZXggPSB0aGlzLmdldExhc3RJbmRleCh0aGlzLm56VG90YWwsIHRoaXMubnpQYWdlU2l6ZSk7XG4gICAgaWYgKHRoaXMubnpQYWdlSW5kZXggPiBsYXN0SW5kZXgpIHtcbiAgICAgIHRoaXMub25QYWdlSW5kZXhDaGFuZ2UobGFzdEluZGV4KTtcbiAgICB9XG4gIH1cblxuICBvblRvdGFsQ2hhbmdlKHRvdGFsOiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCBsYXN0SW5kZXggPSB0aGlzLmdldExhc3RJbmRleCh0b3RhbCwgdGhpcy5uelBhZ2VTaXplKTtcbiAgICBpZiAodGhpcy5uelBhZ2VJbmRleCA+IGxhc3RJbmRleCkge1xuICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB0aGlzLm9uUGFnZUluZGV4Q2hhbmdlKGxhc3RJbmRleCkpO1xuICAgIH1cbiAgfVxuXG4gIGdldExhc3RJbmRleCh0b3RhbDogbnVtYmVyLCBwYWdlU2l6ZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gTWF0aC5jZWlsKHRvdGFsIC8gcGFnZVNpemUpO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBpMThuOiBOekkxOG5TZXJ2aWNlLCBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHByaXZhdGUgYnJlYWtwb2ludFNlcnZpY2U6IE56QnJlYWtwb2ludFNlcnZpY2UpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pMThuLmxvY2FsZUNoYW5nZS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMubG9jYWxlID0gdGhpcy5pMThuLmdldExvY2FsZURhdGEoJ1BhZ2luYXRpb24nKTtcbiAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH0pO1xuXG4gICAgdGhpcy50b3RhbCQucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh0b3RhbCA9PiB7XG4gICAgICB0aGlzLm9uVG90YWxDaGFuZ2UodG90YWwpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5icmVha3BvaW50U2VydmljZVxuICAgICAgLnN1YnNjcmliZShncmlkUmVzcG9uc2l2ZU1hcClcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgIC5zdWJzY3JpYmUoYnAgPT4ge1xuICAgICAgICBpZiAodGhpcy5uelJlc3BvbnNpdmUpIHtcbiAgICAgICAgICB0aGlzLnNpemUgPSBicCA9PT0gTnpCcmVha3BvaW50RW51bS54cyA/ICdzbWFsbCcgOiAnZGVmYXVsdCc7XG4gICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGNvbnN0IHsgbnpIaWRlT25TaW5nbGVQYWdlLCBuelRvdGFsLCBuelBhZ2VTaXplLCBuelNpemUgfSA9IGNoYW5nZXM7XG4gICAgaWYgKG56VG90YWwpIHtcbiAgICAgIHRoaXMudG90YWwkLm5leHQodGhpcy5uelRvdGFsKTtcbiAgICB9XG4gICAgaWYgKG56SGlkZU9uU2luZ2xlUGFnZSB8fCBuelRvdGFsIHx8IG56UGFnZVNpemUpIHtcbiAgICAgIHRoaXMuc2hvd1BhZ2luYXRpb24gPSAodGhpcy5uekhpZGVPblNpbmdsZVBhZ2UgJiYgdGhpcy5uelRvdGFsID4gdGhpcy5uelBhZ2VTaXplKSB8fCAodGhpcy5uelRvdGFsID4gMCAmJiAhdGhpcy5uekhpZGVPblNpbmdsZVBhZ2UpO1xuICAgIH1cblxuICAgIGlmIChuelNpemUpIHtcbiAgICAgIHRoaXMuc2l6ZSA9IG56U2l6ZS5jdXJyZW50VmFsdWU7XG4gICAgfVxuICB9XG59XG4iXX0=