ng-zorro-antd
Version:
An enterprise-class UI components based on Ant Design and Angular
197 lines • 17.1 kB
JavaScript
/**
* @fileoverview added by tsickle
* Generated from: timeline.component.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/**
* 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, ContentChildren, Input, QueryList, ViewEncapsulation } from '@angular/core';
import { Subject } from 'rxjs';
import { takeUntil } from 'rxjs/operators';
import { NzTimelineItemComponent } from './timeline-item.component';
import { TimelineService } from './timeline.service';
/** @type {?} */
const TimelineModes = (/** @type {?} */ (['left', 'alternate', 'right']));
export class NzTimelineComponent {
/**
* @param {?} cdr
* @param {?} timelineService
*/
constructor(cdr, timelineService) {
this.cdr = cdr;
this.timelineService = timelineService;
this.nzReverse = false;
this.isPendingBoolean = false;
this.timelineItems = [];
this.destroy$ = new Subject();
}
/**
* @param {?} changes
* @return {?}
*/
ngOnChanges(changes) {
const { nzMode, nzReverse, nzPending } = changes;
if (simpleChangeActivated(nzMode) || simpleChangeActivated(nzReverse)) {
this.updateChildren();
}
if (nzPending) {
this.isPendingBoolean = nzPending.currentValue === true;
}
}
/**
* @return {?}
*/
ngOnInit() {
this.timelineService.check$.pipe(takeUntil(this.destroy$)).subscribe((/**
* @return {?}
*/
() => {
this.cdr.markForCheck();
}));
}
/**
* @return {?}
*/
ngAfterContentInit() {
this.updateChildren();
this.listOfItems.changes.pipe(takeUntil(this.destroy$)).subscribe((/**
* @return {?}
*/
() => {
this.updateChildren();
}));
}
/**
* @return {?}
*/
ngOnDestroy() {
this.destroy$.next();
this.destroy$.complete();
}
/**
* @private
* @return {?}
*/
updateChildren() {
if (this.listOfItems && this.listOfItems.length) {
/** @type {?} */
const length = this.listOfItems.length;
this.listOfItems.forEach((/**
* @param {?} item
* @param {?} index
* @return {?}
*/
(item, index) => {
item.isLast = !this.nzReverse ? index === length - 1 : index === 0;
item.position =
this.nzMode === 'left' || !this.nzMode
? undefined
: this.nzMode === 'right'
? 'right'
: this.nzMode === 'alternate' && index % 2 === 0
? 'left'
: 'right';
item.detectChanges();
}));
this.timelineItems = this.nzReverse ? this.listOfItems.toArray().reverse() : this.listOfItems.toArray();
}
this.cdr.markForCheck();
}
}
NzTimelineComponent.decorators = [
{ type: Component, args: [{
changeDetection: ChangeDetectionStrategy.OnPush,
encapsulation: ViewEncapsulation.None,
preserveWhitespaces: false,
selector: 'nz-timeline',
providers: [TimelineService],
exportAs: 'nzTimeline',
template: `
<ul
class="ant-timeline"
[class.ant-timeline-right]="nzMode === 'right'"
[class.ant-timeline-alternate]="nzMode === 'alternate'"
[class.ant-timeline-pending]="!!nzPending"
[class.ant-timeline-reverse]="nzReverse"
>
<!-- User inserted timeline dots. -->
<ng-container *ngIf="nzReverse" [ngTemplateOutlet]="pendingTemplate"></ng-container>
<ng-container *ngFor="let item of timelineItems">
<ng-template [ngTemplateOutlet]="item.template"></ng-template>
</ng-container>
<ng-container *ngIf="!nzReverse" [ngTemplateOutlet]="pendingTemplate"></ng-container>
<!-- Pending dot. -->
</ul>
<ng-template #pendingTemplate>
<li *ngIf="nzPending" class="ant-timeline-item ant-timeline-item-pending">
<div class="ant-timeline-item-tail"></div>
<div class="ant-timeline-item-head ant-timeline-item-head-custom ant-timeline-item-head-blue">
<ng-container *nzStringTemplateOutlet="nzPendingDot">
{{ nzPendingDot }}<i *ngIf="!nzPendingDot" nz-icon nzType="loading"></i>
</ng-container>
</div>
<div class="ant-timeline-item-content">
<ng-container *nzStringTemplateOutlet="nzPending">
{{ isPendingBoolean ? '' : nzPending }}
</ng-container>
</div>
</li>
</ng-template>
<!-- Grasp items -->
<ng-content></ng-content>
`
}] }
];
/** @nocollapse */
NzTimelineComponent.ctorParameters = () => [
{ type: ChangeDetectorRef },
{ type: TimelineService }
];
NzTimelineComponent.propDecorators = {
listOfItems: [{ type: ContentChildren, args: [NzTimelineItemComponent,] }],
nzMode: [{ type: Input }],
nzPending: [{ type: Input }],
nzPendingDot: [{ type: Input }],
nzReverse: [{ type: Input }]
};
if (false) {
/** @type {?} */
NzTimelineComponent.prototype.listOfItems;
/** @type {?} */
NzTimelineComponent.prototype.nzMode;
/** @type {?} */
NzTimelineComponent.prototype.nzPending;
/** @type {?} */
NzTimelineComponent.prototype.nzPendingDot;
/** @type {?} */
NzTimelineComponent.prototype.nzReverse;
/** @type {?} */
NzTimelineComponent.prototype.isPendingBoolean;
/** @type {?} */
NzTimelineComponent.prototype.timelineItems;
/**
* @type {?}
* @private
*/
NzTimelineComponent.prototype.destroy$;
/**
* @type {?}
* @private
*/
NzTimelineComponent.prototype.cdr;
/**
* @type {?}
* @private
*/
NzTimelineComponent.prototype.timelineService;
}
/**
* @param {?=} simpleChange
* @return {?}
*/
function simpleChangeActivated(simpleChange) {
return !!(simpleChange && (simpleChange.previousValue !== simpleChange.currentValue || simpleChange.isFirstChange()));
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZWxpbmUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmctem9ycm8tYW50ZC90aW1lbGluZS8iLCJzb3VyY2VzIjpbInRpbWVsaW5lLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFLQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsZUFBZSxFQUNmLEtBQUssRUFJTCxTQUFTLEVBSVQsaUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7TUFFL0MsYUFBYSxHQUFHLG1CQUFBLENBQUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxPQUFPLENBQUMsRUFBUztBQTZDN0QsTUFBTSxPQUFPLG1CQUFtQjs7Ozs7SUFhOUIsWUFBb0IsR0FBc0IsRUFBVSxlQUFnQztRQUFoRSxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUFVLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQVAzRSxjQUFTLEdBQVksS0FBSyxDQUFDO1FBRXBDLHFCQUFnQixHQUFZLEtBQUssQ0FBQztRQUNsQyxrQkFBYSxHQUE4QixFQUFFLENBQUM7UUFFdEMsYUFBUSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFFZ0QsQ0FBQzs7Ozs7SUFFeEYsV0FBVyxDQUFDLE9BQXNCO2NBQzFCLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxPQUFPO1FBRWhELElBQUkscUJBQXFCLENBQUMsTUFBTSxDQUFDLElBQUkscUJBQXFCLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDckUsSUFBSSxDQUFDLGNB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QUNMLEtBQUs7d0JBQ0wsS0FBSzs7OztJQUxOLDBDQUEyRjs7SUFFM0YscUNBQWlDOztJQUNqQyx3Q0FBMEQ7O0lBQzFELDJDQUFtRDs7SUFDbkQsd0NBQW9DOztJQUVwQywrQ0FBa0M7O0lBQ2xDLDRDQUE4Qzs7Ozs7SUFFOUMsdUNBQXVDOzs7OztJQUUzQixrQ0FBOEI7Ozs7O0lBQUUsOENBQXdDOzs7Ozs7QUFxRHRGLFNBQVMscUJBQXFCLENBQUMsWUFBMkI7SUFDeEQsT0FBTyxDQUFDLENBQUMsQ0FBQyxZQUFZLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxLQUFLLFlBQVksQ0FBQyxZQUFZLElBQUksWUFBWSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN4SCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vTkctWk9SUk8vbmctem9ycm8tYW50ZC9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFF1ZXJ5TGlzdCxcbiAgU2ltcGxlQ2hhbmdlLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IE56VGltZWxpbmVJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi90aW1lbGluZS1pdGVtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUaW1lbGluZVNlcnZpY2UgfSBmcm9tICcuL3RpbWVsaW5lLnNlcnZpY2UnO1xuXG5jb25zdCBUaW1lbGluZU1vZGVzID0gWydsZWZ0JywgJ2FsdGVybmF0ZScsICdyaWdodCddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgTnpUaW1lbGluZU1vZGUgPSB0eXBlb2YgVGltZWxpbmVNb2Rlc1tudW1iZXJdO1xuXG5AQ29tcG9uZW50KHtcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHByZXNlcnZlV2hpdGVzcGFjZXM6IGZhbHNlLFxuICBzZWxlY3RvcjogJ256LXRpbWVsaW5lJyxcbiAgcHJvdmlkZXJzOiBbVGltZWxpbmVTZXJ2aWNlXSxcbiAgZXhwb3J0QXM6ICduelRpbWVsaW5lJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8dWxcbiAgICAgIGNsYXNzPVwiYW50LXRpbWVsaW5lXCJcbiAgICAgIFtjbGFzcy5hbnQtdGltZWxpbmUtcmlnaHRdPVwibnpNb2RlID09PSAncmlnaHQnXCJcbiAgICAgIFtjbGFzcy5hbnQtdGltZWxpbmUtYWx0ZXJuYXRlXT1cIm56TW9kZSA9PT0gJ2FsdGVybmF0ZSdcIlxuICAgICAgW2NsYXNzLmFudC10aW1lbGluZS1wZW5kaW5nXT1cIiEhbnpQZW5kaW5nXCJcbiAgICAgIFtjbGFzcy5hbnQtdGltZWxpbmUtcmV2ZXJzZV09XCJuelJldmVyc2VcIlxuICAgID5cbiAgICAgIDwhLS0gVXNlciBpbnNlcnRlZCB0aW1lbGluZSBkb3RzLiAtLT5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJuelJldmVyc2VcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJwZW5kaW5nVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgdGltZWxpbmVJdGVtc1wiPlxuICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiaXRlbS50ZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhbnpSZXZlcnNlXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwicGVuZGluZ1RlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8IS0tIFBlbmRpbmcgZG90LiAtLT5cbiAgICA8L3VsPlxuICAgIDxuZy10ZW1wbGF0ZSAjcGVuZGluZ1RlbXBsYXRlPlxuICAgICAgPGxpICpuZ0lmPVwibnpQZW5kaW5nXCIgY2xhc3M9XCJhbnQtdGltZWxpbmUtaXRlbSBhbnQtdGltZWxpbmUtaXRlbS1wZW5kaW5nXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhbnQtdGltZWxpbmUtaXRlbS10YWlsXCI+PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhbnQtdGltZWxpbmUtaXRlbS1oZWFkIGFudC10aW1lbGluZS1pdGVtLWhlYWQtY3VzdG9tIGFudC10aW1lbGluZS1pdGVtLWhlYWQtYmx1ZVwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm56U3RyaW5nVGVtcGxhdGVPdXRsZXQ9XCJuelBlbmRpbmdEb3RcIj5cbiAgICAgICAgICAgIHt7IG56UGVuZGluZ0RvdCB9fTxpICpuZ0lmPVwiIW56UGVuZGluZ0RvdFwiIG56LWljb24gbnpUeXBlPVwibG9hZGluZ1wiPjwvaT5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhbnQtdGltZWxpbmUtaXRlbS1jb250ZW50XCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbnpTdHJpbmdUZW1wbGF0ZU91dGxldD1cIm56UGVuZGluZ1wiPlxuICAgICAgICAgICAge3sgaXNQZW5kaW5nQm9vbGVhbiA/ICcnIDogbnpQZW5kaW5nIH19XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9saT5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwhLS0gR3Jhc3AgaXRlbXMgLS0+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICBgXG59KVxuZXhwb3J0IGNsYXNzIE56VGltZWxpbmVDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgT25Jbml0IHtcbiAgQENvbnRlbnRDaGlsZHJlbihOelRpbWVsaW5lSXRlbUNvbXBvbmVudCkgbGlzdE9mSXRlbXMhOiBRdWVyeUxpc3Q8TnpUaW1lbGluZUl0ZW1Db21wb25lbnQ+O1xuXG4gIEBJbnB1dCgpIG56TW9kZT86IE56VGltZWxpbmVNb2RlO1xuICBASW5wdXQoKSBuelBlbmRpbmc/OiBzdHJpbmcgfCBib29sZWFuIHwgVGVtcGxhdGVSZWY8dm9pZD47XG4gIEBJbnB1dCgpIG56UGVuZGluZ0RvdD86IHN0cmluZyB8IFRlbXBsYXRlUmVmPHZvaWQ+O1xuICBASW5wdXQoKSBuelJldmVyc2U6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBpc1BlbmRpbmdCb29sZWFuOiBib29sZWFuID0gZmFsc2U7XG4gIHRpbWVsaW5lSXRlbXM6IE56VGltZWxpbmVJdGVtQ29tcG9uZW50W10gPSBbXTtcblxuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHByaXZhdGUgdGltZWxpbmVTZXJ2aWNlOiBUaW1lbGluZVNlcnZpY2UpIHt9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGNvbnN0IHsgbnpNb2RlLCBuelJldmVyc2UsIG56UGVuZGluZyB9ID0gY2hhbmdlcztcblxuICAgIGlmIChzaW1wbGVDaGFuZ2VBY3RpdmF0ZWQobnpNb2RlKSB8fCBzaW1wbGVDaGFuZ2VBY3RpdmF0ZWQobnpSZXZlcnNlKSkge1xuICAgICAgdGhpcy51cGRhdGVDaGlsZHJlbigpO1xuICAgIH1cblxuICAgIGlmIChuelBlbmRpbmcpIHtcbiAgICAgIHRoaXMuaXNQZW5kaW5nQm9vbGVhbiA9IG56UGVuZGluZy5jdXJyZW50VmFsdWUgPT09IHRydWU7XG4gICAgfVxuICB9XG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMudGltZWxpbmVTZXJ2aWNlLmNoZWNrJC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH0pO1xuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlQ2hpbGRyZW4oKTtcblxuICAgIHRoaXMubGlzdE9mSXRlbXMuY2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMudXBkYXRlQ2hpbGRyZW4oKTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlQ2hpbGRyZW4oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubGlzdE9mSXRlbXMgJiYgdGhpcy5saXN0T2ZJdGVtcy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IGxlbmd0aCA9IHRoaXMubGlzdE9mSXRlbXMubGVuZ3RoO1xuICAgICAgdGhpcy5saXN0T2ZJdGVtcy5mb3JFYWNoKChpdGVtLCBpbmRleCkgPT4ge1xuICAgICAgICBpdGVtLmlzTGFzdCA9ICF0aGlzLm56UmV2ZXJzZSA/IGluZGV4ID09PSBsZW5ndGggLSAxIDogaW5kZXggPT09IDA7XG4gICAgICAgIGl0ZW0ucG9zaXRpb24gPVxuICAgICAgICAgIHRoaXMubnpNb2RlID09PSAnbGVmdCcgfHwgIXRoaXMubnpNb2RlXG4gICAgICAgICAgICA/IHVuZGVmaW5lZFxuICAgICAgICAgICAgOiB0aGlzLm56TW9kZSA9PT0gJ3JpZ2h0J1xuICAgICAgICAgICAgPyAncmlnaHQnXG4gICAgICAgICAgICA6IHRoaXMubnpNb2RlID09PSAnYWx0ZXJuYXRlJyAmJiBpbmRleCAlIDIgPT09IDBcbiAgICAgICAgICAgID8gJ2xlZnQnXG4gICAgICAgICAgICA6ICdyaWdodCc7XG4gICAgICAgIGl0ZW0uZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfSk7XG4gICAgICB0aGlzLnRpbWVsaW5lSXRlbXMgPSB0aGlzLm56UmV2ZXJzZSA/IHRoaXMubGlzdE9mSXRlbXMudG9BcnJheSgpLnJldmVyc2UoKSA6IHRoaXMubGlzdE9mSXRlbXMudG9BcnJheSgpO1xuICAgIH1cbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBzaW1wbGVDaGFuZ2VBY3RpdmF0ZWQoc2ltcGxlQ2hhbmdlPzogU2ltcGxlQ2hhbmdlKTogYm9vbGVhbiB7XG4gIHJldHVybiAhIShzaW1wbGVDaGFuZ2UgJiYgKHNpbXBsZUNoYW5nZS5wcmV2aW91c1ZhbHVlICE9PSBzaW1wbGVDaGFuZ2UuY3VycmVudFZhbHVlIHx8IHNpbXBsZUNoYW5nZS5pc0ZpcnN0Q2hhbmdlKCkpKTtcbn1cbiJdfQ==