@versatiledatakit/shared
Version:
Versatile Data Kit Shared library enables reusability of shared features like: NgRx Redux, Error Handlers, Utils, Generic Components, etc.
68 lines • 16.8 kB
JavaScript
/*
* Copyright 2023-2025 Broadcom
* SPDX-License-Identifier: Apache-2.0
*/
import { CollectionsUtil } from '../../../utils';
export const ERROR_CODE_CONFIRMATION_FORCEFULLY_DESTROYED_COMPONENT = 'EC_CONFIRMATION_1000';
/**
* ** Confirmation Model implementation that leverage input model and model extension.
*/
export class ConfirmationModelImpl {
/**
* ** Constructor.
*/
constructor(model) {
// assign provided model to model class fields
Object.assign(this, model ?? {});
// assign UUID
this.uuid = CollectionsUtil.generateUUID();
// initialize handler ref
if (CollectionsUtil.isNil(this.handler)) {
this.handler = {
confirm: null,
dismiss: null
};
}
// check if value exist, otherwise set to default FALSE
if (CollectionsUtil.isNil(this.closable)) {
this.closable = false;
}
// check if value exist, otherwise set to default FALSE
if (CollectionsUtil.isNil(this.optionDoNotShowFutureConfirmation)) {
this.optionDoNotShowFutureConfirmation = false;
}
// confirm button model
this._assignButtonModelDefaults('confirmBtnModel', 'Confirm');
// cancel button model
if (CollectionsUtil.isObjectNotNull(this.cancelBtnModel)) {
this._assignButtonModelDefaults('cancelBtnModel', 'Cancel');
}
else {
this.cancelBtnModel = null;
}
}
_assignButtonModelDefaults(modelKey, defaultText) {
// when there is no model set default text only, and return flow to invoker
if (CollectionsUtil.isNil(this[modelKey])) {
this[modelKey] = {
text: defaultText
};
return;
}
// if model exist but there is no text, set default one, and continue further
if (!CollectionsUtil.isStringWithContent(this[modelKey].text)) {
this[modelKey].text = defaultText;
}
// if model exist check if there is no icon shape, and return flow to invoker
if (!this[modelKey].iconShape) {
this[modelKey].iconShape = null;
this[modelKey].iconPosition = null;
return;
}
// if model exist check if there is no position set or position is something unsupported and set default one to 'left'
if (!this[modelKey].iconPosition || (this[modelKey].iconPosition !== 'left' && this[modelKey].iconPosition !== 'right')) {
this[modelKey].iconPosition = 'left';
}
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlybWF0aW9uLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2hhcmVkL3NyYy9saWIvZmVhdHVyZXMvY29uZmlybWF0aW9uL21vZGVsL2NvbmZpcm1hdGlvbi5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFJSCxPQUFPLEVBQUUsZUFBZSxFQUFXLE1BQU0sZ0JBQWdCLENBQUM7QUFFMUQsTUFBTSxDQUFDLE1BQU0sc0RBQXNELEdBQUcsc0JBQXNCLENBQUM7QUFpSTdGOztHQUVHO0FBQ0gsTUFBTSxPQUFPLHFCQUFxQjtJQTJEOUI7O09BRUc7SUFDSCxZQUFZLEtBQTZCO1FBQ3JDLDhDQUE4QztRQUM5QyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxLQUFLLElBQUksRUFBRSxDQUFDLENBQUM7UUFFakMsY0FBYztRQUNkLElBQUksQ0FBQyxJQUFJLEdBQUcsZUFBZSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRTNDLHlCQUF5QjtRQUN6QixJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ3JDLElBQUksQ0FBQyxPQUFPLEdBQUc7Z0JBQ1gsT0FBTyxFQUFFLElBQUk7Z0JBQ2IsT0FBTyxFQUFFLElBQUk7YUFDaEIsQ0FBQztTQUNMO1FBRUQsdURBQXVEO1FBQ3ZELElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDdEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7U0FDekI7UUFFRCx1REFBdUQ7UUFDdkQsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxpQ0FBaUMsQ0FBQyxFQUFFO1lBQy9ELElBQUksQ0FBQyxpQ0FBaUMsR0FBRyxLQUFLLENBQUM7U0FDbEQ7UUFFRCx1QkFBdUI7UUFDdkIsSUFBSSxDQUFDLDBCQUEwQixDQUFDLGlCQUFpQixFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBRTlELHNCQUFzQjtRQUN0QixJQUFJLGVBQWUsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFO1lBQ3RELElBQUksQ0FBQywwQkFBMEIsQ0FBQyxnQkFBZ0IsRUFBRSxRQUFRLENBQUMsQ0FBQztTQUMvRDthQUFNO1lBQ0gsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7U0FDOUI7SUFDTCxDQUFDO0lBRU8sMEJBQTBCLENBQUMsUUFBcUMsRUFBRSxXQUFtQjtRQUN6RiwyRUFBMkU7UUFDM0UsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFO1lBQ3RDLElBQUksQ0FBQyxRQUFRLENBQTBCLEdBQUc7Z0JBQ3ZDLElBQUksRUFBRSxXQUFXO2FBQ3BCLENBQUM7WUFFRixPQUFPO1NBQ1Y7UUFFRCw2RUFBNkU7UUFDN0UsSUFBSSxDQUFDLGVBQWUsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDMUQsSUFBSSxDQUFDLFFBQVEsQ0FBMEIsQ0FBQyxJQUFJLEdBQUcsV0FBVyxDQUFDO1NBQy9EO1FBRUQsNkVBQTZFO1FBQzdFLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsU0FBUyxFQUFFO1lBQzFCLElBQUksQ0FBQyxRQUFRLENBQTBCLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztZQUN6RCxJQUFJLENBQUMsUUFBUSxDQUEwQixDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7WUFFN0QsT0FBTztTQUNWO1FBRUQsc0hBQXNIO1FBQ3RILElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFlBQVksS0FBSyxNQUFNLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFlBQVksS0FBSyxPQUFPLENBQUMsRUFBRTtZQUNwSCxJQUFJLENBQUMsUUFBUSxDQUEwQixDQUFDLFlBQVksR0FBRyxNQUFNLENBQUM7U0FDbEU7SUFDTCxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMjMtMjAyNSBCcm9hZGNvbVxuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcbiAqL1xuXG5pbXBvcnQgeyBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IENvbGxlY3Rpb25zVXRpbCwgTXV0YWJsZSB9IGZyb20gJy4uLy4uLy4uL3V0aWxzJztcblxuZXhwb3J0IGNvbnN0IEVSUk9SX0NPREVfQ09ORklSTUFUSU9OX0ZPUkNFRlVMTFlfREVTVFJPWUVEX0NPTVBPTkVOVCA9ICdFQ19DT05GSVJNQVRJT05fMTAwMCc7XG5cbi8qKlxuICogKiogQ29uZmlybWF0aW9uIElucHV0IE1vZGVsLlxuICpcbiAqICAgICAgLSBNb2RlbCBpbnN0YW5jZSBwcm92aWRlZCBhcyBpbnB1dCBpbnN0cnVjdGlvbnMgZm9yIENvbmZpcm1hdGlvbiBTZXJ2aWNlLCBvciB0byBtb3JlIHNwZWNpZmljIHRvIG1ldGhvZCB7QGxpbmsgQ29uZmlybWF0aW9uU2VydmljZS5jb25maXJtfVxuICogICAgICAtIE1vc3Qgb2YgdGhlIGZpZWxkcyBhcmUgb3B0aW9uYWwgYW5kIE1vZGVsIEltcGwgcHJvdmlkZXMgaXRzIG93biBkZWZhdWx0cy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb25maXJtYXRpb25JbnB1dE1vZGVsIGV4dGVuZHMgU3VwcG9ydGVkQnV0dG9uc01vZGVsLCBTdXBwb3J0ZWRNZXNzYWdlTW9kZWwge1xuICAgIC8qKlxuICAgICAqICoqIENvbmZpcm1hdGlvbiB0aXRsZS5cbiAgICAgKlxuICAgICAqICAgICAgLSBTZXJ2aWNlIHJlbmRlciBwcm92aWRlZCBjb250ZW50IGFzIGlubmVySFRNTC5cbiAgICAgKiAgICAgIC0gSFRNTCB0YWdzIGNvdWxkIGJlIHByb3ZpZGVkIGluIHN0cmluZyB0ZW1wbGF0ZS5cbiAgICAgKi9cbiAgICB0aXRsZT86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiAqKiBXaGV0aGVyIGNvbmZpcm1hdGlvbiB2aWV3IHRvIHJlbmRlciBjbG9zZSBYIGJ1dHRvbiBpbiB0b3AgcmlnaHQgY29ybmVyLlxuICAgICAqL1xuICAgIGNsb3NhYmxlPzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiAqKiBXaGV0aGVyIGNvbmZpcm1hdGlvbiB2aWV3IHRvIHJlbmRlciBvcHRpb24gZm9yIFVzZXIgdG8gb3B0LW91dCBvZiBzaG93aW5nIGNvbmZpcm1hdGlvbnMgd2l0aCBzYW1lIGNvbnRleHQgaW4gdGhlIGZ1dHVyZS5cbiAgICAgKi9cbiAgICBvcHRpb25Eb05vdFNob3dGdXR1cmVDb25maXJtYXRpb24/OiBib29sZWFuO1xufVxuXG4vKipcbiAqICoqIENvbmZpcm1hdGlvbiBJbnB1dCBNb2RlbCBleHRlbnNpb24gZm9yIHRoZSBuZWVkcyBvZiB7QGxpbmsgQ29uZmlybWF0aW9uU2VydmljZX0uXG4gKlxuICogICAgICAtIHByaXZhdGUgbW9kZWwgdXNlZCBvbmx5IGluIHRoZSBzZXJ2aWNlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbmZpcm1hdGlvbk1vZGVsRXh0ZW5zaW9uIHtcbiAgICAvKipcbiAgICAgKiAqKiBNb2RlbCBVVUlELlxuICAgICAqL1xuICAgIHV1aWQ6IHN0cmluZztcbiAgICAvKipcbiAgICAgKiAqKiBDb25maXJtYXRpb24gSGFuZGxlci5cbiAgICAgKi9cbiAgICBoYW5kbGVyOiBDb25maXJtYXRpb25IYW5kbGVyO1xufVxuXG4vKipcbiAqICoqIFN1cHBvcnRlZCBDb25maXJtYXRpb24gdmlldyBNZXNzYWdlcywgcHJvdmlkaW5nIG9uZSBvZiB0aGUgYmVsbG93IG9wdGlvbnMuXG4gKlxuICogICAgICAtIGl0IGNvdWxkIGJlIHRleHQgcHJvdmlkZWQgd2l0aCBodG1sIHRhZ3MgaW5zaWRlXG4gKiAgICAgIC0gaXQgY291bGQgYmUgQ29tcG9uZW50IGNsYXNzIHJlZiB3aXRoIG9wdGlvbmFsIG1lc3NhZ2VDb2RlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3VwcG9ydGVkTWVzc2FnZU1vZGVsIHtcbiAgICAvKipcbiAgICAgKiAqKiBDb25maXJtYXRpb24gbWVzc2FnZS5cbiAgICAgKlxuICAgICAqICAgICAgLSBTZXJ2aWNlIHJlbmRlciBwcm92aWRlZCBjb250ZW50IGFzIGlubmVySFRNTC5cbiAgICAgKiAgICAgIC0gSFRNTCB0YWdzIGNvdWxkIGJlIHByb3ZpZGVkIGluIHN0cmluZyB0ZW1wbGF0ZS5cbiAgICAgKi9cbiAgICBtZXNzYWdlPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqICoqIENvbmZpcm1hdGlvbiBtZXNzYWdlIGNvbXBvbmVudC5cbiAgICAgKlxuICAgICAqICAgICAgLSBTZXJ2aWNlIHJlbmRlciBwcm92aWRlZCBjb21wb25lbnQgaW4gdGhlIHNhbWUgcGxhY2Ugd2hlcmUgbWVzc2FnZSB0ZXh0IGlzIHJlbmRlcmVkLlxuICAgICAqICAgICAgLSBNZXNzYWdlIENvbXBvbmVudCB0YWtlcyBwcmVjZWRlbmNlIGJlZm9yZSBtZXNzYWdlIHRleHQuIGUuZy4gaWYgYm90aCBmaWVsZHMgYXJlIHByb3ZpZGVkLCBTZXJ2aWNlIHdpbGwgcmVuZGVyIHRoZSBDb21wb25lbnQuXG4gICAgICovXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBtZXNzYWdlQ29tcG9uZW50PzogVHlwZTxhbnk+O1xuICAgIC8qKlxuICAgICAqICoqIENvbmZpcm1hdGlvbiBtZXNzYWdlIGNvZGUsIHRoYXQgd291bGQgYmUgaW5qZWN0ZWQgdG8gTWVzc2FnZSBjb21wb25lbnQgaW4gaW5pdGlhbGl6YXRpb24gdGltZVxuICAgICAqICAgICAgYmVmb3JlIGZpcnN0IGNoYW5nZURldGVjdGlvbiBpbiBvcmRlciB0byByZS11c2Ugc2FtZSBjb21wb25lbnQgZm9yIGRpZmZlcmVudCBtZXNzYWdlcy5cbiAgICAgKi9cbiAgICBtZXNzYWdlQ29kZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiAqKiBTdXBwb3J0ZWQgQ29uZmlybWF0aW9uIFZpZXcgQnV0dG9ucy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdXBwb3J0ZWRCdXR0b25zTW9kZWwge1xuICAgIC8qKlxuICAgICAqICoqIE1vZGVsIGZvciBDb25maXJtYXRpb24gQ2FuY2VsIEJ1dHRvbi5cbiAgICAgKlxuICAgICAqICAgICAgLSBQcm92aWRpbmcgQ2FuY2VsIGJ1dHRvbiBtb2RlbCwgbWVhbnMgdGhpcyBidXR0b24gc2hvdWxkIGJlIHJlbmRlcmVkLlxuICAgICAqL1xuICAgIGNhbmNlbEJ0bk1vZGVsPzogUGFydGlhbDxCdXR0b25Nb2RlbD47XG4gICAgLyoqXG4gICAgICogKiogTW9kZWwgZm9yIENvbmZpcm1hdGlvbiBDb25maXJtIEJ1dHRvbi5cbiAgICAgKi9cbiAgICBjb25maXJtQnRuTW9kZWw/OiBCdXR0b25Nb2RlbDtcbn1cblxuLyoqXG4gKiAqKiBHZW5lcmljIEJ1dHRvbiBNb2RlbCBpbiBDb25maXJtYXRpb24gdmlldy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCdXR0b25Nb2RlbCB7XG4gICAgLyoqXG4gICAgICogKiogQnV0dG9uIHRleHQuXG4gICAgICovXG4gICAgdGV4dDogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqICoqIEJ1dHRvbiBpY29uIHNoYXBlLlxuICAgICAqL1xuICAgIGljb25TaGFwZT86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiAqKiBCdXR0b24gaWNvbiBwb3NpdGlvbi5cbiAgICAgKi9cbiAgICBpY29uUG9zaXRpb24/OiAnbGVmdCcgfCAncmlnaHQnO1xuICAgIC8qKlxuICAgICAqICoqIEJ1dHRvbiBpY29uIGRpcmVjdGlvbi5cbiAgICAgKi9cbiAgICBpY29uRGlyZWN0aW9uPzogJ3VwJyB8ICdkb3duJyB8ICdsZWZ0JyB8ICdyaWdodCc7XG4gICAgLyoqXG4gICAgICogKiogQnV0dG9uIGljb24gc2l6ZS5cbiAgICAgKi9cbiAgICBpY29uU2l6ZT86IHN0cmluZyB8ICd4cycgfCAnc20nIHwgJ21kJyB8ICdsZycgfCAneGwnIHwgJ3h4bCc7XG4gICAgLyoqXG4gICAgICogKiogQnV0dG9uIGljb24gc29saWQuXG4gICAgICovXG4gICAgaWNvblNvbGlkPzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiAqKiBCdXR0b24gaWNvbiBpbnZlcnNlLlxuICAgICAqL1xuICAgIGljb25JbnZlcnNlPzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiAqKiBCdXR0b24gaWNvbiBzdGF0dXMuXG4gICAgICovXG4gICAgaWNvblN0YXR1cz86ICdpbmZvJyB8ICdzdWNjZXNzJyB8ICd3YXJuaW5nJyB8ICdkYW5nZXInO1xuICAgIC8qKlxuICAgICAqICoqIEJ1dHRvbiBpY29uIGJhZGdlLlxuICAgICAqL1xuICAgIGljb25CYWRnZT86ICdpbmZvJyB8ICdzdWNjZXNzJyB8ICd3YXJuaW5nJyB8ICdkYW5nZXInO1xufVxuXG4vKipcbiAqICoqIENvbmZpcm1hdGlvbiBNb2RlbCBpbXBsZW1lbnRhdGlvbiB0aGF0IGxldmVyYWdlIGlucHV0IG1vZGVsIGFuZCBtb2RlbCBleHRlbnNpb24uXG4gKi9cbmV4cG9ydCBjbGFzcyBDb25maXJtYXRpb25Nb2RlbEltcGwgaW1wbGVtZW50cyBDb25maXJtYXRpb25JbnB1dE1vZGVsLCBDb25maXJtYXRpb25Nb2RlbEV4dGVuc2lvbiB7XG4gICAgLyoqXG4gICAgICogQGluaGVyaXREb2NcbiAgICAgKi9cbiAgICByZWFkb25seSB1dWlkOiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogQGluaGVyaXREb2NcbiAgICAgKlxuICAgICAqICAgICAgLSBCeSBkZWZhdWx0IGl0J3MgZW1wdHkuXG4gICAgICovXG4gICAgcmVhZG9ubHkgdGl0bGU/OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogQGluaGVyaXREb2NcbiAgICAgKlxuICAgICAqICAgICAgLSBCeSBkZWZhdWx0IGl0J3MgZW1wdHkuXG4gICAgICovXG4gICAgcmVhZG9ubHkgbWVzc2FnZT86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBAaW5oZXJpdERvY1xuICAgICAqXG4gICAgICogICAgICAtIEJ5IGRlZmF1bHQgaXMgdW5kZWZpbmVkLlxuICAgICAqL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgcmVhZG9ubHkgbWVzc2FnZUNvbXBvbmVudD86IFR5cGU8YW55PjtcbiAgICAvKipcbiAgICAgKiBAaW5oZXJpdERvY1xuICAgICAqXG4gICAgICogICAgICAtIEJ5IGRlZmF1bHQgaXQncyBlbXB0eS5cbiAgICAgKi9cbiAgICBtZXNzYWdlQ29kZT86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBAaW5oZXJpdERvY1xuICAgICAqXG4gICAgICogICAgICAtIEJ5IGRlZmF1bHQgaXRzIEZBTFNFLlxuICAgICAqL1xuICAgIHJlYWRvbmx5IGNsb3NhYmxlPzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBAaW5oZXJpdERvY1xuICAgICAqXG4gICAgICogICAgICAtIEJ5IGRlZmF1bHQgaXRzIEZBTFNFLlxuICAgICAqL1xuICAgIHJlYWRvbmx5IG9wdGlvbkRvTm90U2hvd0Z1dHVyZUNvbmZpcm1hdGlvbj86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogQGluaGVyaXREb2NcbiAgICAgKlxuICAgICAqICAgICAgLSBCeSBkZWZhdWx0IGl0cyB0ZXh0IGlzIENhbmNlbC5cbiAgICAgKi9cbiAgICByZWFkb25seSBjYW5jZWxCdG5Nb2RlbD86IFJlYWRvbmx5PEJ1dHRvbk1vZGVsPjtcbiAgICAvKipcbiAgICAgKiBAaW5oZXJpdERvY1xuICAgICAqXG4gICAgICogICAgICAtIEJ5IGRlZmF1bHQgaXRzIHRleHQgaXMgQ29uZmlybS5cbiAgICAgKi9cbiAgICByZWFkb25seSBjb25maXJtQnRuTW9kZWw/OiBSZWFkb25seTxCdXR0b25Nb2RlbD47XG4gICAgLyoqXG4gICAgICogQGluaGVyaXREb2NcbiAgICAgKi9cbiAgICByZWFkb25seSBoYW5kbGVyOiBDb25maXJtYXRpb25IYW5kbGVyO1xuXG4gICAgLyoqXG4gICAgICogKiogQ29uc3RydWN0b3IuXG4gICAgICovXG4gICAgY29uc3RydWN0b3IobW9kZWw6IENvbmZpcm1hdGlvbklucHV0TW9kZWwpIHtcbiAgICAgICAgLy8gYXNzaWduIHByb3ZpZGVkIG1vZGVsIHRvIG1vZGVsIGNsYXNzIGZpZWxkc1xuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIG1vZGVsID8/IHt9KTtcblxuICAgICAgICAvLyBhc3NpZ24gVVVJRFxuICAgICAgICB0aGlzLnV1aWQgPSBDb2xsZWN0aW9uc1V0aWwuZ2VuZXJhdGVVVUlEKCk7XG5cbiAgICAgICAgLy8gaW5pdGlhbGl6ZSBoYW5kbGVyIHJlZlxuICAgICAgICBpZiAoQ29sbGVjdGlvbnNVdGlsLmlzTmlsKHRoaXMuaGFuZGxlcikpIHtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlciA9IHtcbiAgICAgICAgICAgICAgICBjb25maXJtOiBudWxsLFxuICAgICAgICAgICAgICAgIGRpc21pc3M6IG51bGxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICAvLyBjaGVjayBpZiB2YWx1ZSBleGlzdCwgb3RoZXJ3aXNlIHNldCB0byBkZWZhdWx0IEZBTFNFXG4gICAgICAgIGlmIChDb2xsZWN0aW9uc1V0aWwuaXNOaWwodGhpcy5jbG9zYWJsZSkpIHtcbiAgICAgICAgICAgIHRoaXMuY2xvc2FibGUgPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGNoZWNrIGlmIHZhbHVlIGV4aXN0LCBvdGhlcndpc2Ugc2V0IHRvIGRlZmF1bHQgRkFMU0VcbiAgICAgICAgaWYgKENvbGxlY3Rpb25zVXRpbC5pc05pbCh0aGlzLm9wdGlvbkRvTm90U2hvd0Z1dHVyZUNvbmZpcm1hdGlvbikpIHtcbiAgICAgICAgICAgIHRoaXMub3B0aW9uRG9Ob3RTaG93RnV0dXJlQ29uZmlybWF0aW9uID0gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBjb25maXJtIGJ1dHRvbiBtb2RlbFxuICAgICAgICB0aGlzLl9hc3NpZ25CdXR0b25Nb2RlbERlZmF1bHRzKCdjb25maXJtQnRuTW9kZWwnLCAnQ29uZmlybScpO1xuXG4gICAgICAgIC8vIGNhbmNlbCBidXR0b24gbW9kZWxcbiAgICAgICAgaWYgKENvbGxlY3Rpb25zVXRpbC5pc09iamVjdE5vdE51bGwodGhpcy5jYW5jZWxCdG5Nb2RlbCkpIHtcbiAgICAgICAgICAgIHRoaXMuX2Fzc2lnbkJ1dHRvbk1vZGVsRGVmYXVsdHMoJ2NhbmNlbEJ0bk1vZGVsJywgJ0NhbmNlbCcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jYW5jZWxCdG5Nb2RlbCA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9hc3NpZ25CdXR0b25Nb2RlbERlZmF1bHRzKG1vZGVsS2V5OiBrZXlvZiBTdXBwb3J0ZWRCdXR0b25zTW9kZWwsIGRlZmF1bHRUZXh0OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgLy8gd2hlbiB0aGVyZSBpcyBubyBtb2RlbCBzZXQgZGVmYXVsdCB0ZXh0IG9ubHksIGFuZCByZXR1cm4gZmxvdyB0byBpbnZva2VyXG4gICAgICAgIGlmIChDb2xsZWN0aW9uc1V0aWwuaXNOaWwodGhpc1ttb2RlbEtleV0pKSB7XG4gICAgICAgICAgICAodGhpc1ttb2RlbEtleV0gYXMgTXV0YWJsZTxCdXR0b25Nb2RlbD4pID0ge1xuICAgICAgICAgICAgICAgIHRleHQ6IGRlZmF1bHRUZXh0XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBpZiBtb2RlbCBleGlzdCBidXQgdGhlcmUgaXMgbm8gdGV4dCwgc2V0IGRlZmF1bHQgb25lLCBhbmQgY29udGludWUgZnVydGhlclxuICAgICAgICBpZiAoIUNvbGxlY3Rpb25zVXRpbC5pc1N0cmluZ1dpdGhDb250ZW50KHRoaXNbbW9kZWxLZXldLnRleHQpKSB7XG4gICAgICAgICAgICAodGhpc1ttb2RlbEtleV0gYXMgTXV0YWJsZTxCdXR0b25Nb2RlbD4pLnRleHQgPSBkZWZhdWx0VGV4dDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGlmIG1vZGVsIGV4aXN0IGNoZWNrIGlmIHRoZXJlIGlzIG5vIGljb24gc2hhcGUsIGFuZCByZXR1cm4gZmxvdyB0byBpbnZva2VyXG4gICAgICAgIGlmICghdGhpc1ttb2RlbEtleV0uaWNvblNoYXBlKSB7XG4gICAgICAgICAgICAodGhpc1ttb2RlbEtleV0gYXMgTXV0YWJsZTxCdXR0b25Nb2RlbD4pLmljb25TaGFwZSA9IG51bGw7XG4gICAgICAgICAgICAodGhpc1ttb2RlbEtleV0gYXMgTXV0YWJsZTxCdXR0b25Nb2RlbD4pLmljb25Qb3NpdGlvbiA9IG51bGw7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGlmIG1vZGVsIGV4aXN0IGNoZWNrIGlmIHRoZXJlIGlzIG5vIHBvc2l0aW9uIHNldCBvciBwb3NpdGlvbiBpcyBzb21ldGhpbmcgdW5zdXBwb3J0ZWQgYW5kIHNldCBkZWZhdWx0IG9uZSB0byAnbGVmdCdcbiAgICAgICAgaWYgKCF0aGlzW21vZGVsS2V5XS5pY29uUG9zaXRpb24gfHwgKHRoaXNbbW9kZWxLZXldLmljb25Qb3NpdGlvbiAhPT0gJ2xlZnQnICYmIHRoaXNbbW9kZWxLZXldLmljb25Qb3NpdGlvbiAhPT0gJ3JpZ2h0JykpIHtcbiAgICAgICAgICAgICh0aGlzW21vZGVsS2V5XSBhcyBNdXRhYmxlPEJ1dHRvbk1vZGVsPikuaWNvblBvc2l0aW9uID0gJ2xlZnQnO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vKipcbiAqICoqIENvbmZpcm1hdGlvbiBPdXRwdXQgTW9kZWwuXG4gKlxuICogICAgICAtIFJldHVybmVkIHRvIGludm9rZXIgYWZ0ZXIgVXNlciBjb25maXJtYXRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29uZmlybWF0aW9uT3V0cHV0TW9kZWwge1xuICAgIC8qKlxuICAgICAqICoqIEZpZWxkIHZhbHVlIG9mIHRydWUsIG1lYW5zIFVzZXIgb3B0LW91dCBvZiBzaG93aW5nIGNvbmZpcm1hdGlvbnMgd2l0aCBzYW1lIGNvbnRleHQgaW4gdGhlIGZ1dHVyZS5cbiAgICAgKi9cbiAgICBkb05vdFNob3dGdXR1cmVDb25maXJtYXRpb246IGJvb2xlYW47XG59XG5cbi8qKlxuICogKiogQ29uZmlybWF0aW9uIGhhbmRsZXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29uZmlybWF0aW9uSGFuZGxlciB7XG4gICAgLyoqXG4gICAgICogKiogQ29uZmlybSBtZXRob2QsIHdoaWNoIG1lYW5zIFVzZXIgZ2l2ZSBjb25maXJtYXRpb24uXG4gICAgICovXG4gICAgY29uZmlybTogKHZhbHVlOiBDb25maXJtYXRpb25PdXRwdXRNb2RlbCkgPT4gdm9pZDtcbiAgICAvKipcbiAgICAgKiAqKiBEaXNtaXNzIChyZWplY3QpIG1ldGhvZCwgd2hpY2ggbWVhbnMgVXNlciBkb24ndCBnaXZlIGNvbmZpcm1hdGlvbi5cbiAgICAgKi9cbiAgICBkaXNtaXNzOiAocmVhc29uPzogc3RyaW5nIHwgRXJyb3IpID0+IHZvaWQ7XG59XG4iXX0=