ngx-modialog-7
Version:
Modal / Dialog for Angular
176 lines • 14.6 kB
JavaScript
/**
* @fileoverview added by tsickle
* Generated from: lib/models/overlay-context.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { __extends } from "tslib";
import { FluentAssign } from './../framework/fluent-assign';
import { extend, arrayUnion } from './../framework/utils';
var ɵ0 = /**
* @param {?} keyCode
* @return {?}
*/
function supportsKey(keyCode) {
return ((/** @type {?} */ (this.keyboard))).indexOf(keyCode) > -1;
};
/** @type {?} */
export var DEFAULT_VALUES = {
inElement: false,
isBlocking: true,
keyboard: [27],
supportsKey: (ɵ0)
};
/** @type {?} */
var DEFAULT_SETTERS = [
'inElement',
'isBlocking',
'keyboard'
];
var OverlayContext = /** @class */ (function () {
function OverlayContext() {
}
/**
* @return {?}
*/
OverlayContext.prototype.normalize = /**
* @return {?}
*/
function () {
if (this.isBlocking !== false) {
this.isBlocking = true;
}
if (this.keyboard === null) {
this.keyboard = [];
}
else if (typeof this.keyboard === 'number') {
this.keyboard = [(/** @type {?} */ (this.keyboard))];
}
else if (!Array.isArray((/** @type {?} */ (this.keyboard)))) {
this.keyboard = DEFAULT_VALUES.keyboard;
}
};
return OverlayContext;
}());
export { OverlayContext };
if (false) {
/**
* Describes if the modal is rendered within the container element.
* The container element is the ViewContainerRef supplied.
* Defaults to false.
* @type {?}
*/
OverlayContext.prototype.inElement;
/**
* Describes if the modal is blocking modal.
* A Blocking modal is not closable by clicking outside of the modal window.
* Defaults to false.
* @type {?}
*/
OverlayContext.prototype.isBlocking;
/**
* Keyboard value/s that close the modal.
* Accepts either a single numeric value or an array of numeric values.
* A modal closed by a keyboard stroke will result in a 'reject' notification from the promise.
* Defaults to 27, set `null` implicitly to disable.
* @type {?}
*/
OverlayContext.prototype.keyboard;
}
/**
* A core context builder for a modal window instance, used to define the context upon
* a modal choose it's behaviour.
* @template T
*/
var /**
* A core context builder for a modal window instance, used to define the context upon
* a modal choose it's behaviour.
* @template T
*/
OverlayContextBuilder = /** @class */ (function (_super) {
__extends(OverlayContextBuilder, _super);
function OverlayContextBuilder(defaultValues, initialSetters, baseType) {
return _super.call(this, extend(DEFAULT_VALUES, defaultValues || {}), arrayUnion(DEFAULT_SETTERS, initialSetters || []), baseType || (/** @type {?} */ (OverlayContext)) // https://github.com/Microsoft/TypeScript/issues/7234
) || this;
}
/**
* Returns an new OverlayConfig with a context property representing the data in this builder.
* @param base A base configuration that the result will extend
*/
/**
* Returns an new OverlayConfig with a context property representing the data in this builder.
* @param {?=} base A base configuration that the result will extend
* @return {?}
*/
OverlayContextBuilder.prototype.toOverlayConfig = /**
* Returns an new OverlayConfig with a context property representing the data in this builder.
* @param {?=} base A base configuration that the result will extend
* @return {?}
*/
function (base) {
return extend(base || {}, {
context: this.toJSON()
});
};
return OverlayContextBuilder;
}(FluentAssign));
/**
* A core context builder for a modal window instance, used to define the context upon
* a modal choose it's behaviour.
* @template T
*/
export { OverlayContextBuilder };
if (false) {
/**
* Describes if the modal is rendered within the container element.
* The container element is the ViewContainerRef supplied.
* Defaults to false.
* @type {?}
*/
OverlayContextBuilder.prototype.inElement;
/**
* Describes if the modal is blocking modal.
* A Blocking modal is not closable by clicking outside of the modal window.
* Defaults to false.
* @type {?}
*/
OverlayContextBuilder.prototype.isBlocking;
/**
* Keyboard value/s that close the modal.
* Accepts either a single numeric value or an array of numeric values.
* A modal closed by a keyboard stroke will result in a 'reject' notification from the promise.
* Defaults to 27, set `null` implicitly to disable.
* @type {?}
*/
OverlayContextBuilder.prototype.keyboard;
}
/**
* @record
* @template T
*/
export function ModalControllingContextBuilder() { }
if (false) {
/**
* @param {?=} viewContainer
* @return {?}
*/
ModalControllingContextBuilder.prototype.open = function (viewContainer) { };
}
/**
* A helper to create an `OverlayConfig` on the fly.
* Since `OverlayConfig` requires context it means a builder is needed, this process had some boilerplate.
* When a quick, on the fly overlay config is needed use this helper to avoid that boilerplate.
*
* A builder is used as an API to allow setting the context and providing some operations around the modal.
* When a developers knows the context before hand we can skip this step, this is what this factory is for.
*
* @template T
* @param {?} context The context for the modal
* @param {?=} baseContextType Optional. The type/class of the context. This is the class used to init a new instance of the context
* @param {?=} baseConfig A base configuration that the result will extend
* @return {?}
*/
export function overlayConfigFactory(context, baseContextType, baseConfig) {
return new OverlayContextBuilder((/** @type {?} */ (context)), undefined, baseContextType).toOverlayConfig(baseConfig);
}
export { ɵ0 };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS1jb250ZXh0LmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LW1vZGlhbG9nLTcvIiwic291cmNlcyI6WyJsaWIvbW9kZWxzL292ZXJsYXktY29udGV4dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFzQixNQUFNLDhCQUE4QixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7O0FBUTNDLFNBQVMsV0FBVyxDQUFDLE9BQWU7SUFDL0MsT0FBTyxDQUFDLG1CQUFlLElBQUksQ0FBQyxRQUFRLEVBQUEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUM5RCxDQUFDOztBQU5ILE1BQU0sS0FBTyxjQUFjLEdBQUc7SUFDNUIsU0FBUyxFQUFFLEtBQUs7SUFDaEIsVUFBVSxFQUFFLElBQUk7SUFDaEIsUUFBUSxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ2QsV0FBVyxNQUVWO0NBQ0Y7O0lBRUssZUFBZSxHQUFHO0lBQ3RCLFdBQVc7SUFDWCxZQUFZO0lBQ1osVUFBVTtDQUNYO0FBRUQ7SUFBQTtJQW9DQSxDQUFDOzs7O0lBYkMsa0NBQVM7OztJQUFUO1FBQ0UsSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLEtBQUssRUFBRTtZQUM3QixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztTQUN4QjtRQUVELElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxJQUFJLEVBQUU7WUFDMUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7U0FDcEI7YUFBTSxJQUFJLE9BQU8sSUFBSSxDQUFDLFFBQVEsS0FBSyxRQUFRLEVBQUU7WUFDNUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLG1CQUFRLElBQUksQ0FBQyxRQUFRLEVBQUEsQ0FBQyxDQUFDO1NBQ3pDO2FBQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsbUJBQWUsSUFBSSxDQUFDLFFBQVEsRUFBQSxDQUFDLEVBQUU7WUFDdkQsSUFBSSxDQUFDLFFBQVEsR0FBRyxjQUFjLENBQUMsUUFBUSxDQUFDO1NBQ3pDO0lBQ0gsQ0FBQztJQUNILHFCQUFDO0FBQUQsQ0FBQyxBQXBDRCxJQW9DQzs7Ozs7Ozs7O0lBOUJDLG1DQUFtQjs7Ozs7OztJQU9uQixvQ0FBb0I7Ozs7Ozs7O0lBUXBCLGtDQUFpQzs7Ozs7OztBQXFCbkM7Ozs7OztJQUFxRSx5Q0FBZTtJQXdCbEYsK0JBQVksYUFBdUIsRUFDdkIsY0FBeUIsRUFDekIsUUFBc0I7ZUFDaEMsa0JBQ0UsTUFBTSxDQUFNLGNBQWMsRUFBRSxhQUFhLElBQUksRUFBRSxDQUFDLEVBQ2hELFVBQVUsQ0FBUyxlQUFlLEVBQUUsY0FBYyxJQUFJLEVBQUUsQ0FBQyxFQUN6RCxRQUFRLElBQUksbUJBQUssY0FBYyxFQUFBLENBQUMsc0RBQXNEO1NBQ3ZGO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRzs7Ozs7O0lBQ0gsK0NBQWU7Ozs7O0lBQWYsVUFBZ0IsSUFBb0I7UUFDbEMsT0FBTyxNQUFNLENBQUMsSUFBSSxJQUFJLEVBQUUsRUFBRTtZQUN4QixPQUFPLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRTtTQUN2QixDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0gsNEJBQUM7QUFBRCxDQUFDLEFBM0NELENBQXFFLFlBQVksR0EyQ2hGOzs7Ozs7Ozs7Ozs7OztJQXJDQywwQ0FBNkM7Ozs7Ozs7SUFPN0MsMkNBQThDOzs7Ozs7OztJQVE5Qyx5Q0FBMkQ7Ozs7OztBQXdCN0Qsb0RBRUM7Ozs7OztJQURDLDZFQUE4Qzs7Ozs7Ozs7Ozs7Ozs7OztBQWVoRCxNQUFNLFVBQVUsb0JBQW9CLENBQUksT0FBVSxFQUFFLGVBQXFCLEVBQUUsVUFBMEI7SUFDbkcsT0FBTyxJQUFJLHFCQUFxQixDQUFxQixtQkFBSyxPQUFPLEVBQUEsRUFBRSxTQUFTLEVBQUUsZUFBZSxDQUFDLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQzdILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGbHVlbnRBc3NpZ24sIEZsdWVudEFzc2lnbk1ldGhvZCB9IGZyb20gJy4vLi4vZnJhbWV3b3JrL2ZsdWVudC1hc3NpZ24nO1xuaW1wb3J0IHsgZXh0ZW5kLCBhcnJheVVuaW9uIH0gZnJvbSAnLi8uLi9mcmFtZXdvcmsvdXRpbHMnO1xuaW1wb3J0IHsgRGlhbG9nUmVmIH0gZnJvbSAnLi9kaWFsb2ctcmVmJztcbmltcG9ydCB7IFdpZGVWQ1JlZiwgT3ZlcmxheUNvbmZpZyB9IGZyb20gJy4vdG9rZW5zJztcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfVkFMVUVTID0ge1xuICBpbkVsZW1lbnQ6IGZhbHNlLFxuICBpc0Jsb2NraW5nOiB0cnVlLFxuICBrZXlib2FyZDogWzI3XSxcbiAgc3VwcG9ydHNLZXk6IGZ1bmN0aW9uIHN1cHBvcnRzS2V5KGtleUNvZGU6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoPEFycmF5PG51bWJlcj4+dGhpcy5rZXlib2FyZCkuaW5kZXhPZihrZXlDb2RlKSA+IC0xO1xuICB9XG59O1xuXG5jb25zdCBERUZBVUxUX1NFVFRFUlMgPSBbXG4gICdpbkVsZW1lbnQnLFxuICAnaXNCbG9ja2luZycsXG4gICdrZXlib2FyZCdcbl07XG5cbmV4cG9ydCBjbGFzcyBPdmVybGF5Q29udGV4dCB7XG4gIC8qKlxuICAgKiBEZXNjcmliZXMgaWYgdGhlIG1vZGFsIGlzIHJlbmRlcmVkIHdpdGhpbiB0aGUgY29udGFpbmVyIGVsZW1lbnQuXG4gICAqIFRoZSBjb250YWluZXIgZWxlbWVudCBpcyB0aGUgVmlld0NvbnRhaW5lclJlZiBzdXBwbGllZC5cbiAgICogRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAqL1xuICBpbkVsZW1lbnQ6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIERlc2NyaWJlcyBpZiB0aGUgbW9kYWwgaXMgYmxvY2tpbmcgbW9kYWwuXG4gICAqIEEgQmxvY2tpbmcgbW9kYWwgaXMgbm90IGNsb3NhYmxlIGJ5IGNsaWNraW5nIG91dHNpZGUgb2YgdGhlIG1vZGFsIHdpbmRvdy5cbiAgICogRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAqL1xuICBpc0Jsb2NraW5nOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBLZXlib2FyZCB2YWx1ZS9zIHRoYXQgY2xvc2UgdGhlIG1vZGFsLlxuICAgKiBBY2NlcHRzIGVpdGhlciBhIHNpbmdsZSBudW1lcmljIHZhbHVlIG9yIGFuIGFycmF5IG9mIG51bWVyaWMgdmFsdWVzLlxuICAgKiBBIG1vZGFsIGNsb3NlZCBieSBhIGtleWJvYXJkIHN0cm9rZSB3aWxsIHJlc3VsdCBpbiBhICdyZWplY3QnIG5vdGlmaWNhdGlvbiBmcm9tIHRoZSBwcm9taXNlLlxuICAgKiBEZWZhdWx0cyB0byAyNywgc2V0IGBudWxsYCBpbXBsaWNpdGx5IHRvIGRpc2FibGUuXG4gICAqL1xuICBrZXlib2FyZDogQXJyYXk8bnVtYmVyPiB8IG51bWJlcjtcblxuICBub3JtYWxpemUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNCbG9ja2luZyAhPT0gZmFsc2UpIHtcbiAgICAgIHRoaXMuaXNCbG9ja2luZyA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMua2V5Ym9hcmQgPT09IG51bGwpIHtcbiAgICAgIHRoaXMua2V5Ym9hcmQgPSBbXTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB0aGlzLmtleWJvYXJkID09PSAnbnVtYmVyJykge1xuICAgICAgdGhpcy5rZXlib2FyZCA9IFs8bnVtYmVyPnRoaXMua2V5Ym9hcmRdO1xuICAgIH0gZWxzZSBpZiAoIUFycmF5LmlzQXJyYXkoPEFycmF5PG51bWJlcj4+dGhpcy5rZXlib2FyZCkpIHtcbiAgICAgIHRoaXMua2V5Ym9hcmQgPSBERUZBVUxUX1ZBTFVFUy5rZXlib2FyZDtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBBIGNvcmUgY29udGV4dCBidWlsZGVyIGZvciBhIG1vZGFsIHdpbmRvdyBpbnN0YW5jZSwgdXNlZCB0byBkZWZpbmUgdGhlIGNvbnRleHQgdXBvblxuICogYSBtb2RhbCBjaG9vc2UgaXQncyBiZWhhdmlvdXIuXG4gKi9cbmV4cG9ydCBjbGFzcyBPdmVybGF5Q29udGV4dEJ1aWxkZXI8VCBleHRlbmRzIE92ZXJsYXlDb250ZXh0PiBleHRlbmRzIEZsdWVudEFzc2lnbjxUPiB7XG4gIC8qKlxuICAgKiBEZXNjcmliZXMgaWYgdGhlIG1vZGFsIGlzIHJlbmRlcmVkIHdpdGhpbiB0aGUgY29udGFpbmVyIGVsZW1lbnQuXG4gICAqIFRoZSBjb250YWluZXIgZWxlbWVudCBpcyB0aGUgVmlld0NvbnRhaW5lclJlZiBzdXBwbGllZC5cbiAgICogRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAqL1xuICBpbkVsZW1lbnQ6IEZsdWVudEFzc2lnbk1ldGhvZDxib29sZWFuLCB0aGlzPjtcblxuICAvKipcbiAgICogRGVzY3JpYmVzIGlmIHRoZSBtb2RhbCBpcyBibG9ja2luZyBtb2RhbC5cbiAgICogQSBCbG9ja2luZyBtb2RhbCBpcyBub3QgY2xvc2FibGUgYnkgY2xpY2tpbmcgb3V0c2lkZSBvZiB0aGUgbW9kYWwgd2luZG93LlxuICAgKiBEZWZhdWx0cyB0byBmYWxzZS5cbiAgICovXG4gIGlzQmxvY2tpbmc6IEZsdWVudEFzc2lnbk1ldGhvZDxib29sZWFuLCB0aGlzPjtcblxuICAvKipcbiAgICogS2V5Ym9hcmQgdmFsdWUvcyB0aGF0IGNsb3NlIHRoZSBtb2RhbC5cbiAgICogQWNjZXB0cyBlaXRoZXIgYSBzaW5nbGUgbnVtZXJpYyB2YWx1ZSBvciBhbiBhcnJheSBvZiBudW1lcmljIHZhbHVlcy5cbiAgICogQSBtb2RhbCBjbG9zZWQgYnkgYSBrZXlib2FyZCBzdHJva2Ugd2lsbCByZXN1bHQgaW4gYSAncmVqZWN0JyBub3RpZmljYXRpb24gZnJvbSB0aGUgcHJvbWlzZS5cbiAgICogRGVmYXVsdHMgdG8gMjcsIHNldCBgbnVsbGAgaW1wbGljaXRseSB0byBkaXNhYmxlLlxuICAgKi9cbiAga2V5Ym9hcmQ6IEZsdWVudEFzc2lnbk1ldGhvZDxBcnJheTxudW1iZXI+IHwgbnVtYmVyLCB0aGlzPjtcblxuXG4gIGNvbnN0cnVjdG9yKGRlZmF1bHRWYWx1ZXM/OiBUIHwgVFtdLFxuICAgICAgICAgICAgICBpbml0aWFsU2V0dGVycz86IHN0cmluZ1tdLFxuICAgICAgICAgICAgICBiYXNlVHlwZT86IG5ldyAoKSA9PiBUKSB7XG4gICAgc3VwZXIoXG4gICAgICBleHRlbmQ8YW55PihERUZBVUxUX1ZBTFVFUywgZGVmYXVsdFZhbHVlcyB8fCB7fSksXG4gICAgICBhcnJheVVuaW9uPHN0cmluZz4oREVGQVVMVF9TRVRURVJTLCBpbml0aWFsU2V0dGVycyB8fCBbXSksXG4gICAgICBiYXNlVHlwZSB8fCA8YW55Pk92ZXJsYXlDb250ZXh0IC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvVHlwZVNjcmlwdC9pc3N1ZXMvNzIzNFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhbiBuZXcgT3ZlcmxheUNvbmZpZyB3aXRoIGEgY29udGV4dCBwcm9wZXJ0eSByZXByZXNlbnRpbmcgdGhlIGRhdGEgaW4gdGhpcyBidWlsZGVyLlxuICAgKiBAcGFyYW0gYmFzZSBBIGJhc2UgY29uZmlndXJhdGlvbiB0aGF0IHRoZSByZXN1bHQgd2lsbCBleHRlbmRcbiAgICovXG4gIHRvT3ZlcmxheUNvbmZpZyhiYXNlPzogT3ZlcmxheUNvbmZpZyk6IE92ZXJsYXlDb25maWcge1xuICAgIHJldHVybiBleHRlbmQoYmFzZSB8fCB7fSwge1xuICAgICAgY29udGV4dDogdGhpcy50b0pTT04oKVxuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTW9kYWxDb250cm9sbGluZ0NvbnRleHRCdWlsZGVyPFQ+IHtcbiAgb3Blbih2aWV3Q29udGFpbmVyPzogV2lkZVZDUmVmKTogRGlhbG9nUmVmPFQ+O1xufVxuXG4vKipcbiAqIEEgaGVscGVyIHRvIGNyZWF0ZSBhbiBgT3ZlcmxheUNvbmZpZ2Agb24gdGhlIGZseS5cbiAqIFNpbmNlIGBPdmVybGF5Q29uZmlnYCByZXF1aXJlcyBjb250ZXh0IGl0IG1lYW5zIGEgYnVpbGRlciBpcyBuZWVkZWQsIHRoaXMgcHJvY2VzcyBoYWQgc29tZSBib2lsZXJwbGF0ZS5cbiAqIFdoZW4gYSBxdWljaywgb24gdGhlIGZseSBvdmVybGF5IGNvbmZpZyBpcyBuZWVkZWQgdXNlIHRoaXMgaGVscGVyIHRvIGF2b2lkIHRoYXQgYm9pbGVycGxhdGUuXG4gKlxuICogQSBidWlsZGVyIGlzIHVzZWQgYXMgYW4gQVBJIHRvIGFsbG93IHNldHRpbmcgdGhlIGNvbnRleHQgYW5kIHByb3ZpZGluZyBzb21lIG9wZXJhdGlvbnMgYXJvdW5kIHRoZSBtb2RhbC5cbiAqIFdoZW4gYSBkZXZlbG9wZXJzIGtub3dzIHRoZSBjb250ZXh0IGJlZm9yZSBoYW5kIHdlIGNhbiBza2lwIHRoaXMgc3RlcCwgdGhpcyBpcyB3aGF0IHRoaXMgZmFjdG9yeSBpcyBmb3IuXG4gKlxuICogQHBhcmFtIGNvbnRleHQgVGhlIGNvbnRleHQgZm9yIHRoZSBtb2RhbFxuICogQHBhcmFtIGJhc2VDb250ZXh0VHlwZSBPcHRpb25hbC4gVGhlIHR5cGUvY2xhc3Mgb2YgdGhlIGNvbnRleHQuIFRoaXMgaXMgdGhlIGNsYXNzIHVzZWQgdG8gaW5pdCBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgY29udGV4dFxuICogQHBhcmFtIGJhc2VDb25maWcgQSBiYXNlIGNvbmZpZ3VyYXRpb24gdGhhdCB0aGUgcmVzdWx0IHdpbGwgZXh0ZW5kXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBvdmVybGF5Q29uZmlnRmFjdG9yeTxUPihjb250ZXh0OiBULCBiYXNlQ29udGV4dFR5cGU/OiBhbnksIGJhc2VDb25maWc/OiBPdmVybGF5Q29uZmlnKTogT3ZlcmxheUNvbmZpZyB7XG4gIHJldHVybiBuZXcgT3ZlcmxheUNvbnRleHRCdWlsZGVyPFQgJiBPdmVybGF5Q29udGV4dD4oPGFueT5jb250ZXh0LCB1bmRlZmluZWQsIGJhc2VDb250ZXh0VHlwZSkudG9PdmVybGF5Q29uZmlnKGJhc2VDb25maWcpO1xufVxuIl19