UNPKG

ng-zorro-antd

Version:

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

171 lines 14.3 kB
/** * @fileoverview added by tsickle * Generated from: calendar-footer.component.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * @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, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core'; import { CandyDate } from 'ng-zorro-antd/core/time'; import { isNonEmptyString, isTemplateRef } from 'ng-zorro-antd/core/util'; import { DateHelperService } from 'ng-zorro-antd/i18n'; import { transCompatFormat } from './lib/util'; import { PREFIX_CLASS } from './util'; export class CalendarFooterComponent { /** * @param {?} dateHelper */ constructor(dateHelper) { this.dateHelper = dateHelper; this.showToday = false; this.hasTimePicker = false; this.isRange = false; this.okDisabled = false; this.rangeQuickSelector = null; this.clickOk = new EventEmitter(); this.clickToday = new EventEmitter(); this.prefixCls = PREFIX_CLASS; this.isTemplateRef = isTemplateRef; this.isNonEmptyString = isNonEmptyString; this.isTodayDisabled = false; this.todayTitle = ''; this.now = new CandyDate(); } /** * @param {?} changes * @return {?} */ ngOnChanges(changes) { if (changes.disabledDate) { this.isTodayDisabled = !!(this.disabledDate && this.disabledDate(this.now.nativeDate)); } if (changes.locale) { // NOTE: Compat for DatePipe formatting rules /** @type {?} */ const dateFormat = transCompatFormat(this.locale.dateFormat); this.todayTitle = this.dateHelper.format(this.now.nativeDate, dateFormat); } } /** * @return {?} */ onClickToday() { this.clickToday.emit(this.now.clone()); // To prevent the "now" being modified from outside, we use clone } } CalendarFooterComponent.decorators = [ { type: Component, args: [{ encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, // tslint:disable-next-line:component-selector selector: 'calendar-footer', exportAs: 'calendarFooter', template: ` <div class="{{ prefixCls }}-footer"> <div *ngIf="extraFooter" class="{{ prefixCls }}-footer-extra"> <ng-container [ngSwitch]="true"> <ng-container *ngSwitchCase="isTemplateRef(extraFooter)"> <ng-container *ngTemplateOutlet="$any(extraFooter)"></ng-container> </ng-container> <ng-container *ngSwitchCase="isNonEmptyString(extraFooter)"> <span [innerHTML]="extraFooter"></span> </ng-container> </ng-container> </div> <a *ngIf="showToday && !hasTimePicker" class="{{ prefixCls }}-today-btn {{ isTodayDisabled ? prefixCls + '-today-btn-disabled' : '' }}" role="button" (click)="isTodayDisabled ? null : onClickToday()" title="{{ todayTitle }}" > {{ locale.today }} </a> <ul *ngIf="hasTimePicker || rangeQuickSelector" class="{{ prefixCls }}-ranges"> <ng-container *ngTemplateOutlet="rangeQuickSelector"></ng-container> <li *ngIf="hasTimePicker && !isRange" class="{{ prefixCls }}-now"> <a class="{{ prefixCls }}-now-btn" (click)="isTodayDisabled ? null : onClickToday()"> {{ locale.now }} </a> </li> <li *ngIf="hasTimePicker" class="{{ prefixCls }}-ok"> <button nz-button type="button" nzType="primary" nzSize="small" [disabled]="okDisabled" (click)="okDisabled ? null : clickOk.emit()" > {{ locale.ok }} </button> </li> </ul> </div> ` }] } ]; /** @nocollapse */ CalendarFooterComponent.ctorParameters = () => [ { type: DateHelperService } ]; CalendarFooterComponent.propDecorators = { locale: [{ type: Input }], showToday: [{ type: Input }], hasTimePicker: [{ type: Input }], isRange: [{ type: Input }], okDisabled: [{ type: Input }], disabledDate: [{ type: Input }], extraFooter: [{ type: Input }], rangeQuickSelector: [{ type: Input }], clickOk: [{ type: Output }], clickToday: [{ type: Output }] }; if (false) { /** @type {?} */ CalendarFooterComponent.prototype.locale; /** @type {?} */ CalendarFooterComponent.prototype.showToday; /** @type {?} */ CalendarFooterComponent.prototype.hasTimePicker; /** @type {?} */ CalendarFooterComponent.prototype.isRange; /** @type {?} */ CalendarFooterComponent.prototype.okDisabled; /** @type {?} */ CalendarFooterComponent.prototype.disabledDate; /** @type {?} */ CalendarFooterComponent.prototype.extraFooter; /** @type {?} */ CalendarFooterComponent.prototype.rangeQuickSelector; /** @type {?} */ CalendarFooterComponent.prototype.clickOk; /** @type {?} */ CalendarFooterComponent.prototype.clickToday; /** @type {?} */ CalendarFooterComponent.prototype.prefixCls; /** @type {?} */ CalendarFooterComponent.prototype.isTemplateRef; /** @type {?} */ CalendarFooterComponent.prototype.isNonEmptyString; /** @type {?} */ CalendarFooterComponent.prototype.isTodayDisabled; /** @type {?} */ CalendarFooterComponent.prototype.todayTitle; /** * @type {?} * @private */ CalendarFooterComponent.prototype.now; /** * @type {?} * @private */ CalendarFooterComponent.prototype.dateHelper; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItZm9vdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLXpvcnJvLWFudGQvZGF0ZS1waWNrZXIvIiwic291cmNlcyI6WyJjYWxlbmRhci1mb290ZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQVFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUdOLGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFHcEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGFBQWEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBMkIsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDL0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFFBQVEsQ0FBQztBQW9EdEMsTUFBTSxPQUFPLHVCQUF1Qjs7OztJQXFCbEMsWUFBb0IsVUFBNkI7UUFBN0IsZUFBVSxHQUFWLFVBQVUsQ0FBbUI7UUFuQnhDLGNBQVMsR0FBWSxLQUFLLENBQUM7UUFDM0Isa0JBQWEsR0FBWSxLQUFLLENBQUM7UUFDL0IsWUFBTyxHQUFZLEtBQUssQ0FBQztRQUV6QixlQUFVLEdBQVksS0FBSyxDQUFDO1FBRzVCLHVCQUFrQixHQUFrQyxJQUFJLENBQUM7UUFFL0MsWUFBTyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDbkMsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFhLENBQUM7UUFFOUQsY0FBUyxHQUFXLFlBQVksQ0FBQztRQUNqQyxrQkFBYSxHQUFHLGFBQWEsQ0FBQztRQUM5QixxQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQztRQUNwQyxvQkFBZSxHQUFZLEtBQUssQ0FBQztRQUNqQyxlQUFVLEdBQVcsRUFBRSxDQUFDO1FBQ2hCLFFBQUcsR0FBYyxJQUFJLFNBQVMsRUFBRSxDQUFDO0lBRVcsQ0FBQzs7Ozs7SUFFckQsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksT0FBTyxDQUFDLFlBQVksRUFBRTtZQUN4QixJQUFJLENBQUMsZUFBZSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7U0FDeEY7UUFDRCxJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUU7OztrQkFFWixVQUFVLEdBQVcsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUM7WUFDcEUsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQztTQUMzRTtJQUNILENBQUM7Ozs7SUFFRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsaUVBQWlFO0lBQzNHLENBQUM7OztZQXRGRixTQUFTLFNBQUM7Z0JBQ1QsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7Z0JBQ3JDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNOztnQkFFL0MsUUFBUSxFQUFFLGlCQUFpQjtnQkFDM0IsUUFBUSxFQUFFLGdCQUFnQjtnQkFDMUIsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EwQ1Q7YUFDRjs7OztZQXJEUSxpQkFBaUI7OztxQkF1RHZCLEtBQUs7d0JBQ0wsS0FBSzs0QkFDTCxLQUFLO3NCQUNMLEtBQUs7eUJBRUwsS0FBSzsyQkFDTCxLQUFLOzBCQUNMLEtBQUs7aUNBQ0wsS0FBSztzQkFFTCxNQUFNO3lCQUNOLE1BQU07Ozs7SUFYUCx5Q0FBMEM7O0lBQzFDLDRDQUFvQzs7SUFDcEMsZ0RBQXdDOztJQUN4QywwQ0FBa0M7O0lBRWxDLDZDQUFxQzs7SUFDckMsK0NBQTZDOztJQUM3Qyw4Q0FBa0Q7O0lBQ2xELHFEQUFrRTs7SUFFbEUsMENBQXNEOztJQUN0RCw2Q0FBOEQ7O0lBRTlELDRDQUFpQzs7SUFDakMsZ0RBQThCOztJQUM5QixtREFBb0M7O0lBQ3BDLGtEQUFpQzs7SUFDakMsNkNBQXdCOzs7OztJQUN4QixzQ0FBeUM7Ozs7O0lBRTdCLDZDQUFxQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBbGliYWJhLmNvbSBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9ORy1aT1JSTy9uZy16b3Jyby1hbnRkL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2FuZHlEYXRlIH0gZnJvbSAnbmctem9ycm8tYW50ZC9jb3JlL3RpbWUnO1xuaW1wb3J0IHsgTnpTYWZlQW55IH0gZnJvbSAnbmctem9ycm8tYW50ZC9jb3JlL3R5cGVzJztcblxuaW1wb3J0IHsgaXNOb25FbXB0eVN0cmluZywgaXNUZW1wbGF0ZVJlZiB9IGZyb20gJ25nLXpvcnJvLWFudGQvY29yZS91dGlsJztcbmltcG9ydCB7IERhdGVIZWxwZXJTZXJ2aWNlLCBOekNhbGVuZGFySTE4bkludGVyZmFjZSB9IGZyb20gJ25nLXpvcnJvLWFudGQvaTE4bic7XG5pbXBvcnQgeyB0cmFuc0NvbXBhdEZvcm1hdCB9IGZyb20gJy4vbGliL3V0aWwnO1xuaW1wb3J0IHsgUFJFRklYX0NMQVNTIH0gZnJvbSAnLi91dGlsJztcblxuQENvbXBvbmVudCh7XG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6Y29tcG9uZW50LXNlbGVjdG9yXG4gIHNlbGVjdG9yOiAnY2FsZW5kYXItZm9vdGVyJyxcbiAgZXhwb3J0QXM6ICdjYWxlbmRhckZvb3RlcicsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cInt7IHByZWZpeENscyB9fS1mb290ZXJcIj5cbiAgICAgIDxkaXYgKm5nSWY9XCJleHRyYUZvb3RlclwiIGNsYXNzPVwie3sgcHJlZml4Q2xzIH19LWZvb3Rlci1leHRyYVwiPlxuICAgICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJ0cnVlXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiaXNUZW1wbGF0ZVJlZihleHRyYUZvb3RlcilcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCIkYW55KGV4dHJhRm9vdGVyKVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cImlzTm9uRW1wdHlTdHJpbmcoZXh0cmFGb290ZXIpXCI+XG4gICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cImV4dHJhRm9vdGVyXCI+PC9zcGFuPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGFcbiAgICAgICAgKm5nSWY9XCJzaG93VG9kYXkgJiYgIWhhc1RpbWVQaWNrZXJcIlxuICAgICAgICBjbGFzcz1cInt7IHByZWZpeENscyB9fS10b2RheS1idG4ge3sgaXNUb2RheURpc2FibGVkID8gcHJlZml4Q2xzICsgJy10b2RheS1idG4tZGlzYWJsZWQnIDogJycgfX1cIlxuICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgKGNsaWNrKT1cImlzVG9kYXlEaXNhYmxlZCA/IG51bGwgOiBvbkNsaWNrVG9kYXkoKVwiXG4gICAgICAgIHRpdGxlPVwie3sgdG9kYXlUaXRsZSB9fVwiXG4gICAgICA+XG4gICAgICAgIHt7IGxvY2FsZS50b2RheSB9fVxuICAgICAgPC9hPlxuICAgICAgPHVsICpuZ0lmPVwiaGFzVGltZVBpY2tlciB8fCByYW5nZVF1aWNrU2VsZWN0b3JcIiBjbGFzcz1cInt7IHByZWZpeENscyB9fS1yYW5nZXNcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInJhbmdlUXVpY2tTZWxlY3RvclwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8bGkgKm5nSWY9XCJoYXNUaW1lUGlja2VyICYmICFpc1JhbmdlXCIgY2xhc3M9XCJ7eyBwcmVmaXhDbHMgfX0tbm93XCI+XG4gICAgICAgICAgPGEgY2xhc3M9XCJ7eyBwcmVmaXhDbHMgfX0tbm93LWJ0blwiIChjbGljayk9XCJpc1RvZGF5RGlzYWJsZWQgPyBudWxsIDogb25DbGlja1RvZGF5KClcIj5cbiAgICAgICAgICAgIHt7IGxvY2FsZS5ub3cgfX1cbiAgICAgICAgICA8L2E+XG4gICAgICAgIDwvbGk+XG4gICAgICAgIDxsaSAqbmdJZj1cImhhc1RpbWVQaWNrZXJcIiBjbGFzcz1cInt7IHByZWZpeENscyB9fS1va1wiPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIG56LWJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBuelR5cGU9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgIG56U2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJva0Rpc2FibGVkXCJcbiAgICAgICAgICAgIChjbGljayk9XCJva0Rpc2FibGVkID8gbnVsbCA6IGNsaWNrT2suZW1pdCgpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyBsb2NhbGUub2sgfX1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9saT5cbiAgICAgIDwvdWw+XG4gICAgPC9kaXY+XG4gIGBcbn0pXG5leHBvcnQgY2xhc3MgQ2FsZW5kYXJGb290ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICBASW5wdXQoKSBsb2NhbGUhOiBOekNhbGVuZGFySTE4bkludGVyZmFjZTtcbiAgQElucHV0KCkgc2hvd1RvZGF5OiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGhhc1RpbWVQaWNrZXI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgaXNSYW5nZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIG9rRGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgZGlzYWJsZWREYXRlPzogKGQ6IERhdGUpID0+IGJvb2xlYW47XG4gIEBJbnB1dCgpIGV4dHJhRm9vdGVyPzogVGVtcGxhdGVSZWY8dm9pZD4gfCBzdHJpbmc7XG4gIEBJbnB1dCgpIHJhbmdlUXVpY2tTZWxlY3RvcjogVGVtcGxhdGVSZWY8TnpTYWZlQW55PiB8IG51bGwgPSBudWxsO1xuXG4gIEBPdXRwdXQoKSByZWFkb25seSBjbGlja09rID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgY2xpY2tUb2RheSA9IG5ldyBFdmVudEVtaXR0ZXI8Q2FuZHlEYXRlPigpO1xuXG4gIHByZWZpeENsczogc3RyaW5nID0gUFJFRklYX0NMQVNTO1xuICBpc1RlbXBsYXRlUmVmID0gaXNUZW1wbGF0ZVJlZjtcbiAgaXNOb25FbXB0eVN0cmluZyA9IGlzTm9uRW1wdHlTdHJpbmc7XG4gIGlzVG9kYXlEaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuICB0b2RheVRpdGxlOiBzdHJpbmcgPSAnJztcbiAgcHJpdmF0ZSBub3c6IENhbmR5RGF0ZSA9IG5ldyBDYW5keURhdGUoKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRhdGVIZWxwZXI6IERhdGVIZWxwZXJTZXJ2aWNlKSB7fVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy5kaXNhYmxlZERhdGUpIHtcbiAgICAgIHRoaXMuaXNUb2RheURpc2FibGVkID0gISEodGhpcy5kaXNhYmxlZERhdGUgJiYgdGhpcy5kaXNhYmxlZERhdGUodGhpcy5ub3cubmF0aXZlRGF0ZSkpO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlcy5sb2NhbGUpIHtcbiAgICAgIC8vIE5PVEU6IENvbXBhdCBmb3IgRGF0ZVBpcGUgZm9ybWF0dGluZyBydWxlc1xuICAgICAgY29uc3QgZGF0ZUZvcm1hdDogc3RyaW5nID0gdHJhbnNDb21wYXRGb3JtYXQodGhpcy5sb2NhbGUuZGF0ZUZvcm1hdCk7XG4gICAgICB0aGlzLnRvZGF5VGl0bGUgPSB0aGlzLmRhdGVIZWxwZXIuZm9ybWF0KHRoaXMubm93Lm5hdGl2ZURhdGUsIGRhdGVGb3JtYXQpO1xuICAgIH1cbiAgfVxuXG4gIG9uQ2xpY2tUb2RheSgpOiB2b2lkIHtcbiAgICB0aGlzLmNsaWNrVG9kYXkuZW1pdCh0aGlzLm5vdy5jbG9uZSgpKTsgLy8gVG8gcHJldmVudCB0aGUgXCJub3dcIiBiZWluZyBtb2RpZmllZCBmcm9tIG91dHNpZGUsIHdlIHVzZSBjbG9uZVxuICB9XG59XG4iXX0=