UNPKG

ng-zorro-antd-mobile

Version:

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

305 lines (304 loc) 19.9 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc */ import { Injectable, ApplicationRef, Compiler, NgZone, ComponentFactoryResolver, } from '@angular/core'; import { ToastComponent } from './toast.component'; import { ToastOptions } from './toast-options.provider'; /** * @record */ export function ConfigInterface() { } /** @type {?|undefined} */ ConfigInterface.prototype.content; /** @type {?|undefined} */ ConfigInterface.prototype.iconType; /** @type {?|undefined} */ ConfigInterface.prototype.mask; var Toast = /** @class */ (function () { function Toast(_appRef, _compiler, _cfr, _zone) { this._appRef = _appRef; this._compiler = _compiler; this._cfr = _cfr; this._zone = _zone; Toast._zone = this._zone; Toast._appRef = this._appRef; Toast._toastCompFactory = this._cfr.resolveComponentFactory(ToastComponent); } /** * @param {?} config * @param {?} options * @return {?} */ Toast._initConfig = /** * @param {?} config * @param {?} options * @return {?} */ function (config, options) { /** @type {?} */ var props = {}; /** @type {?} */ var optionalParams = ['content', 'iconType', 'mask']; config = Object.assign(options, config); optionalParams.forEach(function (key) { if (config[key] !== undefined) { props[key] = config[key]; } }); /** @type {?} */ var iconType = { info: '', success: 'success', fail: 'fail', offline: 'dislike', loading: 'loading' }[options.iconType]; props['iconType'] = iconType; props['mask'] = options.mask; return props; }; /** * @param {?} config * @param {?} type * @param {?=} timeInterval * @param {?=} onClose * @param {?=} mask * @return {?} */ Toast.notice = /** * @param {?} config * @param {?} type * @param {?=} timeInterval * @param {?=} onClose * @param {?=} mask * @return {?} */ function (config, type, timeInterval, onClose, mask) { if (timeInterval === void 0) { timeInterval = 2000; } if (mask === void 0) { mask = true; } // 如果已经存在,在没有遮罩层的情况下,会响应别的toast,需要清除原来的 if (Toast.compRef) { Toast.hide(); } /** @type {?} */ var options = new ToastOptions(); options.iconType = type; options.mask = mask; /** @type {?} */ var props = Toast._initConfig(config, options); document.body.insertBefore(document.createElement(Toast._toastCompFactory.selector), document.body.firstChild); /** @type {?} */ var instance; /** @type {?} */ var subject; Toast.compRef = Toast._appRef.bootstrap(Toast._toastCompFactory); instance = Toast.compRef.instance; subject = instance.subject; if (timeInterval) { Toast.timeout = setTimeout(function () { if (onClose) { onClose(); } Toast.hide(); }, timeInterval); } Object.assign(instance, props); return subject; }; /** * Open info dialog */ /** * Open info dialog * @param {?=} content * @param {?=} timeInterval * @param {?=} onClose * @param {?=} mask * @return {?} */ Toast.info = /** * Open info dialog * @param {?=} content * @param {?=} timeInterval * @param {?=} onClose * @param {?=} mask * @return {?} */ function (content, timeInterval, onClose, mask) { /** @type {?} */ var config = Object.assign({ iconType: 'info', content: content }); return Toast.notice(config, 'info', timeInterval, onClose, mask); }; /** * Open success dialog */ /** * Open success dialog * @param {?=} content * @param {?=} timeInterval * @param {?=} onClose * @param {?=} mask * @return {?} */ Toast.success = /** * Open success dialog * @param {?=} content * @param {?=} timeInterval * @param {?=} onClose * @param {?=} mask * @return {?} */ function (content, timeInterval, onClose, mask) { /** @type {?} */ var config = Object.assign({ iconType: 'success', content: content }); return Toast.notice(config, 'success', timeInterval, onClose, mask); }; /** * @param {?=} content * @param {?=} timeInterval * @param {?=} mask * @return {?} */ Toast.show = /** * @param {?=} content * @param {?=} timeInterval * @param {?=} mask * @return {?} */ function (content, timeInterval, mask) { /** @type {?} */ var config = Object.assign({ iconType: 'info', content: content }); return Toast.notice(config, 'info', timeInterval, function () { }, mask); }; /** * @param {?=} content * @param {?=} timeInterval * @param {?=} onClose * @param {?=} mask * @return {?} */ Toast.fail = /** * @param {?=} content * @param {?=} timeInterval * @param {?=} onClose * @param {?=} mask * @return {?} */ function (content, timeInterval, onClose, mask) { /** @type {?} */ var config = Object.assign({ iconType: 'fail', content: content }); return Toast.notice(config, 'fail', timeInterval, onClose, mask); }; /** * @param {?=} content * @param {?=} timeInterval * @param {?=} onClose * @param {?=} mask * @return {?} */ Toast.offline = /** * @param {?=} content * @param {?=} timeInterval * @param {?=} onClose * @param {?=} mask * @return {?} */ function (content, timeInterval, onClose, mask) { /** @type {?} */ var config = Object.assign({ iconType: 'offline', content: content }); return Toast.notice(config, 'offline', timeInterval, onClose, mask); }; /** * @param {?=} content * @param {?=} timeInterval * @param {?=} onClose * @param {?=} mask * @return {?} */ Toast.loading = /** * @param {?=} content * @param {?=} timeInterval * @param {?=} onClose * @param {?=} mask * @return {?} */ function (content, timeInterval, onClose, mask) { /** @type {?} */ var config = Object.assign({ iconType: 'loading', content: content }); return Toast.notice(config, 'loading', timeInterval, onClose, mask); }; /** * @return {?} */ Toast.hide = /** * @return {?} */ function () { if (Toast.timeout) { clearTimeout(Toast.timeout); } if (Toast.compRef) { Toast._zone.run(function () { Toast.compRef.destroy(); }); Toast.compRef = null; } }; Toast.timeout = null; Toast._zone = null; Toast.compRef = null; Toast._toastCompFactory = null; Toast._appRef = null; Toast.decorators = [ { type: Injectable } ]; /** @nocollapse */ Toast.ctorParameters = function () { return [ { type: ApplicationRef }, { type: Compiler }, { type: ComponentFactoryResolver }, { type: NgZone } ]; }; return Toast; }()); export { Toast }; if (false) { /** @type {?} */ Toast.timeout; /** @type {?} */ Toast._zone; /** @type {?} */ Toast.compRef; /** @type {?} */ Toast._toastCompFactory; /** @type {?} */ Toast._appRef; /** @type {?} */ Toast.prototype._appRef; /** @type {?} */ Toast.prototype._compiler; /** @type {?} */ Toast.prototype._cfr; /** @type {?} */ Toast.prototype._zone; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9hc3Quc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLXpvcnJvLWFudGQtbW9iaWxlLyIsInNvdXJjZXMiOlsidG9hc3QvdG9hc3Quc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUNMLFVBQVUsRUFHVixjQUFjLEVBQ2QsUUFBUSxFQUNSLE1BQU0sRUFDTix3QkFBd0IsR0FDekIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7Ozs7Ozs7O0lBZ0J0RCxlQUFvQixPQUF1QixFQUFVLFNBQW1CLEVBQVUsSUFBOEIsRUFBVSxLQUFhO1FBQW5ILFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBQVUsY0FBUyxHQUFULFNBQVMsQ0FBVTtRQUFVLFNBQUksR0FBSixJQUFJLENBQTBCO1FBQVUsVUFBSyxHQUFMLEtBQUssQ0FBUTtRQUNySSxLQUFLLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDekIsS0FBSyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQzdCLEtBQUssQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLGNBQWMsQ0FBQyxDQUFDO0tBQzdFOzs7Ozs7SUFFTSxpQkFBVzs7Ozs7SUFBbEIsVUFBbUIsTUFBYyxFQUFFLE9BQXFCOztRQUN0RCxJQUFNLEtBQUssR0FBRyxFQUFFLENBQUM7O1FBQ2pCLElBQU0sY0FBYyxHQUFhLENBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUVqRSxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDeEMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxVQUFBLEdBQUc7WUFDeEIsSUFB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LFVBQWUsT0FBZ0IsRUFBRSxZQUFxQixFQUFFLE9BQW9CLEVBQUUsSUFBYzs7UUFDMUYsSUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztZQUMzQixRQUFRLEVBQUUsU0FBUztZQUNuQixPQUFPLEVBQUUsT0FBTztTQUNqQixDQUFDLENBQUM7UUFDSCxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO0tBQ3JFOzs7O0lBRU0sVUFBSTs7O0lBQVg7UUFDRSxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUU7WUFDakIsWUFBWSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUM3QjtRQUNELElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRTtZQUNqQixLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQztnQkFDZCxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO2FBQ3pCLENBQUMsQ0FBQztZQUNILEtBQUssQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1NBQ3RCO0tBQ0Y7b0JBbklnQixJQUFJO2tCQUNFLElBQUk7b0JBQ1MsSUFBSTs4QkFDcUIsSUFBSTtvQkFDaEMsSUFBSTs7Z0JBTnRDLFVBQVU7Ozs7Z0JBZFQsY0FBYztnQkFDZCxRQUFRO2dCQUVSLHdCQUF3QjtnQkFEeEIsTUFBTTs7Z0JBTlI7O1NBbUJhLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBJbmplY3RhYmxlLFxuICBDb21wb25lbnRSZWYsXG4gIENvbXBvbmVudEZhY3RvcnksXG4gIEFwcGxpY2F0aW9uUmVmLFxuICBDb21waWxlcixcbiAgTmdab25lLFxuICBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVG9hc3RDb21wb25lbnQgfSBmcm9tICcuL3RvYXN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUb2FzdE9wdGlvbnMgfSBmcm9tICcuL3RvYXN0LW9wdGlvbnMucHJvdmlkZXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbmZpZ0ludGVyZmFjZSB7XG4gIGNvbnRlbnQ/OiBhbnk7XG4gIGljb25UeXBlPzogc3RyaW5nO1xuICBtYXNrPzogYm9vbGVhbjtcbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFRvYXN0IHtcbiAgc3RhdGljIHRpbWVvdXQgPSBudWxsO1xuICBzdGF0aWMgX3pvbmU6IE5nWm9uZSA9IG51bGw7XG4gIHN0YXRpYyBjb21wUmVmOiBDb21wb25lbnRSZWY8YW55PiA9IG51bGw7XG4gIHN0YXRpYyBfdG9hc3RDb21wRmFjdG9yeTogQ29tcG9uZW50RmFjdG9yeTxUb2FzdENvbXBvbmVudD4gPSBudWxsO1xuICBzdGF0aWMgX2FwcFJlZjogQXBwbGljYXRpb25SZWYgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2FwcFJlZjogQXBwbGljYXRpb25SZWYsIHByaXZhdGUgX2NvbXBpbGVyOiBDb21waWxlciwgcHJpdmF0ZSBfY2ZyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsIHByaXZhdGUgX3pvbmU6IE5nWm9uZSkge1xuICAgIFRvYXN0Ll96b25lID0gdGhpcy5fem9uZTtcbiAgICBUb2FzdC5fYXBwUmVmID0gdGhpcy5fYXBwUmVmO1xuICAgIFRvYXN0Ll90b2FzdENvbXBGYWN0b3J5ID0gdGhpcy5fY2ZyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KFRvYXN0Q29tcG9uZW50KTtcbiAgfVxuXG4gIHN0YXRpYyBfaW5pdENvbmZpZyhjb25maWc6IE9iamVjdCwgb3B0aW9uczogVG9hc3RPcHRpb25zKTogT2JqZWN0IHtcbiAgICBjb25zdCBwcm9wcyA9IHt9O1xuICAgIGNvbnN0IG9wdGlvbmFsUGFyYW1zOiBzdHJpbmdbXSA9IFsnY29udGVudCcsICdpY29uVHlwZScsICdtYXNrJ107XG5cbiAgICBjb25maWcgPSBPYmplY3QuYXNzaWduKG9wdGlvbnMsIGNvbmZpZyk7XG4gICAgb3B0aW9uYWxQYXJhbXMuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgaWYgKGNvbmZpZ1trZXldICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcHJvcHNba2V5XSA9IGNvbmZpZ1trZXldO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgaWNvblR5cGUgPSB7XG4gICAgICBpbmZvOiAnJyxcbiAgICAgIHN1Y2Nlc3M6ICdzdWNjZXNzJyxcbiAgICAgIGZhaWw6ICdmYWlsJyxcbiAgICAgIG9mZmxpbmU6ICdkaXNsaWtlJyxcbiAgICAgIGxvYWRpbmc6ICdsb2FkaW5nJ1xuICAgIH1bb3B0aW9ucy5pY29uVHlwZV07XG5cbiAgICBwcm9wc1snaWNvblR5cGUnXSA9IGljb25UeXBlO1xuICAgIHByb3BzWydtYXNrJ10gPSBvcHRpb25zLm1hc2s7XG4gICAgcmV0dXJuIHByb3BzO1xuICB9XG5cbiAgc3RhdGljIG5vdGljZShjb25maWc6IENvbmZpZ0ludGVyZmFjZSwgdHlwZSwgdGltZUludGVydmFsID0gMjAwMCwgb25DbG9zZSwgbWFzayA9IHRydWUpIHtcbiAgICAvLyDlpoLmnpzlt7Lnu4/lrZjlnKjvvIzlnKjmsqHmnInpga7nvanlsYLnmoTmg4XlhrXkuIvvvIzkvJrlk43lupTliKvnmoR0b2FzdO+8jOmcgOimgea4hemZpOWOn+adpeeahFxuICAgIGlmIChUb2FzdC5jb21wUmVmKSB7XG4gICAgICBUb2FzdC5oaWRlKCk7XG4gICAgfVxuICAgIGNvbnN0IG9wdGlvbnM6IFRvYXN0T3B0aW9ucyA9IG5ldyBUb2FzdE9wdGlvbnMoKTtcbiAgICBvcHRpb25zLmljb25UeXBlID0gdHlwZTtcbiAgICBvcHRpb25zLm1hc2sgPSBtYXNrO1xuICAgIGNvbnN0IHByb3BzID0gVG9hc3QuX2luaXRDb25maWcoY29uZmlnLCBvcHRpb25zKTtcblxuICAgIGRvY3VtZW50LmJvZHkuaW5zZXJ0QmVmb3JlKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoVG9hc3QuX3RvYXN0Q29tcEZhY3Rvcnkuc2VsZWN0b3IpLCBkb2N1bWVudC5ib2R5LmZpcnN0Q2hpbGQpO1xuICAgIGxldCBpbnN0YW5jZTogYW55O1xuICAgIGxldCBzdWJqZWN0OiBhbnk7XG5cbiAgICBUb2FzdC5jb21wUmVmID0gVG9hc3QuX2FwcFJlZi5ib290c3RyYXAoVG9hc3QuX3RvYXN0Q29tcEZhY3RvcnkpO1xuICAgIGluc3RhbmNlID0gVG9hc3QuY29tcFJlZi5pbnN0YW5jZTtcbiAgICBzdWJqZWN0ID0gaW5zdGFuY2Uuc3ViamVjdDtcblxuICAgIGlmICh0aW1lSW50ZXJ2YWwpIHtcbiAgICAgIFRvYXN0LnRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaWYgKG9uQ2xvc2UpIHtcbiAgICAgICAgICBvbkNsb3NlKCk7XG4gICAgICAgIH1cbiAgICAgICAgVG9hc3QuaGlkZSgpO1xuICAgICAgfSwgdGltZUludGVydmFsKTtcbiAgICB9XG5cbiAgICBPYmplY3QuYXNzaWduKGluc3RhbmNlLCBwcm9wcyk7XG4gICAgcmV0dXJuIHN1YmplY3Q7XG4gIH1cblxuICAvKipcbiAgICogT3BlbiBpbmZvIGRpYWxvZ1xuICAgKi9cbiAgc3RhdGljIGluZm8oY29udGVudD86IHN0cmluZywgdGltZUludGVydmFsPzogbnVtYmVyLCBvbkNsb3NlPzogKCkgPT4gdm9pZCwgbWFzaz86IGJvb2xlYW4pIHtcbiAgICBjb25zdCBjb25maWcgPSBPYmplY3QuYXNzaWduKHtcbiAgICAgIGljb25UeXBlOiAnaW5mbycsXG4gICAgICBjb250ZW50OiBjb250ZW50XG4gICAgfSk7XG4gICAgcmV0dXJuIFRvYXN0Lm5vdGljZShjb25maWcsICdpbmZvJywgdGltZUludGVydmFsLCBvbkNsb3NlLCBtYXNrKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPcGVuIHN1Y2Nlc3MgZGlhbG9nXG4gICAqL1xuICBzdGF0aWMgc3VjY2Vzcyhjb250ZW50Pzogc3RyaW5nLCB0aW1lSW50ZXJ2YWw/OiBudW1iZXIsIG9uQ2xvc2U/OiAoKSA9PiB2b2lkLCBtYXNrPzogYm9vbGVhbikge1xuICAgIGNvbnN0IGNvbmZpZyA9IE9iamVjdC5hc3NpZ24oe1xuICAgICAgaWNvblR5cGU6ICdzdWNjZXNzJyxcbiAgICAgIGNvbnRlbnQ6IGNvbnRlbnRcbiAgICB9KTtcbiAgICByZXR1cm4gVG9hc3Qubm90aWNlKGNvbmZpZywgJ3N1Y2Nlc3MnLCB0aW1lSW50ZXJ2YWwsIG9uQ2xvc2UsIG1hc2spO1xuICB9XG5cbiAgc3RhdGljIHNob3coY29udGVudD86IHN0cmluZywgdGltZUludGVydmFsPzogbnVtYmVyLCBtYXNrPzogYm9vbGVhbikge1xuICAgIGNvbnN0IGNvbmZpZyA9IE9iamVjdC5hc3NpZ24oe1xuICAgICAgaWNvblR5cGU6ICdpbmZvJyxcbiAgICAgIGNvbnRlbnQ6IGNvbnRlbnRcbiAgICB9KTtcbiAgICByZXR1cm4gVG9hc3Qubm90aWNlKGNvbmZpZywgJ2luZm8nLCB0aW1lSW50ZXJ2YWwsICgpID0+IHt9LCBtYXNrKTtcbiAgfVxuXG4gIHN0YXRpYyBmYWlsKGNvbnRlbnQ/OiBzdHJpbmcsIHRpbWVJbnRlcnZhbD86IG51bWJlciwgb25DbG9zZT86ICgpID0+IHZvaWQsIG1hc2s/OiBib29sZWFuKSB7XG4gICAgY29uc3QgY29uZmlnID0gT2JqZWN0LmFzc2lnbih7XG4gICAgICBpY29uVHlwZTogJ2ZhaWwnLFxuICAgICAgY29udGVudDogY29udGVudFxuICAgIH0pO1xuICAgIHJldHVybiBUb2FzdC5ub3RpY2UoY29uZmlnLCAnZmFpbCcsIHRpbWVJbnRlcnZhbCwgb25DbG9zZSwgbWFzayk7XG4gIH1cblxuICBzdGF0aWMgb2ZmbGluZShjb250ZW50Pzogc3RyaW5nLCB0aW1lSW50ZXJ2YWw/OiBudW1iZXIsIG9uQ2xvc2U/OiAoKSA9PiB2b2lkLCBtYXNrPzogYm9vbGVhbikge1xuICAgIGNvbnN0IGNvbmZpZyA9IE9iamVjdC5hc3NpZ24oe1xuICAgICAgaWNvblR5cGU6ICdvZmZsaW5lJyxcbiAgICAgIGNvbnRlbnQ6IGNvbnRlbnRcbiAgICB9KTtcbiAgICByZXR1cm4gVG9hc3Qubm90aWNlKGNvbmZpZywgJ29mZmxpbmUnLCB0aW1lSW50ZXJ2YWwsIG9uQ2xvc2UsIG1hc2spO1xuICB9XG5cbiAgc3RhdGljIGxvYWRpbmcoY29udGVudD86IHN0cmluZywgdGltZUludGVydmFsPzogbnVtYmVyLCBvbkNsb3NlPzogKCkgPT4gdm9pZCwgbWFzaz86IGJvb2xlYW4pIHtcbiAgICBjb25zdCBjb25maWcgPSBPYmplY3QuYXNzaWduKHtcbiAgICAgIGljb25UeXBlOiAnbG9hZGluZycsXG4gICAgICBjb250ZW50OiBjb250ZW50XG4gICAgfSk7XG4gICAgcmV0dXJuIFRvYXN0Lm5vdGljZShjb25maWcsICdsb2FkaW5nJywgdGltZUludGVydmFsLCBvbkNsb3NlLCBtYXNrKTtcbiAgfVxuXG4gIHN0YXRpYyBoaWRlKCkge1xuICAgIGlmIChUb2FzdC50aW1lb3V0KSB7XG4gICAgICBjbGVhclRpbWVvdXQoVG9hc3QudGltZW91dCk7XG4gICAgfVxuICAgIGlmIChUb2FzdC5jb21wUmVmKSB7XG4gICAgICBUb2FzdC5fem9uZS5ydW4oKCkgPT4ge1xuICAgICAgICBUb2FzdC5jb21wUmVmLmRlc3Ryb3koKTtcbiAgICAgIH0pO1xuICAgICAgVG9hc3QuY29tcFJlZiA9IG51bGw7XG4gICAgfVxuICB9XG59XG4iXX0=