@cause-911/core
Version:
Run `npm install @cause-911/core --save` to add this library to your project
272 lines • 20.3 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import * as tslib_1 from "tslib";
var Configuration = /** @class */ (function () {
function Configuration(options) {
this.libraries = [];
this.loginURL = '';
this.refreshLoginURL = '';
this.allowRefreshToken = true;
this.apiUrl = '';
this.nbRetryOnNetworkError = 0;
this.contentSecurityPolicyActivated = false;
this.useCharset = 'UTF-8';
this.useAuthorizationType = 'Bearer';
this.useAccessToken = '';
this.useRefreshToken = '';
this.useCSRFToken = '';
this.useLocale = options.locale || 'fr';
this.useLanguages = options.languages || ['fr'];
this.libraries = options.libraries || [];
this.apiUrl = options.apiUrl || '/api/';
this.allowRefreshToken = options.allowRefreshToken || true;
this.loginURL = options.loginURL || '/login/';
this.refreshLoginURL = options.refreshLoginURL || '';
this.nbRetryOnNetworkError = options.nbRetryOnNetworkError || 0;
this.contentSecurityPolicyActivated = options.contentSecurityPolicyActivated || false;
}
Object.defineProperty(Configuration.prototype, "locale", {
get: /**
* @return {?}
*/
function () {
return this.useLocale;
},
set: /**
* @param {?} value
* @return {?}
*/
function (value) {
this.useLocale = value;
},
enumerable: true,
configurable: true
});
Object.defineProperty(Configuration.prototype, "languages", {
get: /**
* @return {?}
*/
function () {
return this.useLanguages;
},
set: /**
* @param {?} value
* @return {?}
*/
function (value) {
this.useLanguages = value;
this.setDefaultLocale();
},
enumerable: true,
configurable: true
});
Object.defineProperty(Configuration.prototype, "charset", {
get: /**
* @return {?}
*/
function () {
return this.useCharset;
},
set: /**
* @param {?} value
* @return {?}
*/
function (value) {
this.useCharset = value;
},
enumerable: true,
configurable: true
});
Object.defineProperty(Configuration.prototype, "authorizationType", {
get: /**
* @return {?}
*/
function () {
return this.useAuthorizationType;
},
set: /**
* @param {?} value
* @return {?}
*/
function (value) {
this.useAuthorizationType = value;
},
enumerable: true,
configurable: true
});
Object.defineProperty(Configuration.prototype, "refreshToken", {
get: /**
* @return {?}
*/
function () {
if (this.contentSecurityPolicyActivated && !this.useRefreshToken) {
this.useRefreshToken = localStorage.getItem('refreshToken');
}
else if (!this.useRefreshToken) {
this.useRefreshToken = sessionStorage.getItem('refreshToken');
}
return this.useRefreshToken;
},
set: /**
* @param {?} value
* @return {?}
*/
function (value) {
if (this.contentSecurityPolicyActivated) {
localStorage.setItem('refreshToken', value);
}
else {
sessionStorage.setItem('refreshToken', value);
}
this.useRefreshToken = value;
},
enumerable: true,
configurable: true
});
Object.defineProperty(Configuration.prototype, "accessToken", {
get: /**
* @return {?}
*/
function () {
if (this.contentSecurityPolicyActivated && !this.useAccessToken) {
this.useAccessToken = localStorage.getItem('accessToken');
}
else if (!this.useAccessToken) {
this.useAccessToken = sessionStorage.getItem('accessToken');
}
return this.useAccessToken;
},
set: /**
* @param {?} value
* @return {?}
*/
function (value) {
if (this.contentSecurityPolicyActivated) {
localStorage.setItem('accessToken', value);
}
else {
sessionStorage.setItem('accessToken', value);
}
this.useAccessToken = value;
},
enumerable: true,
configurable: true
});
Object.defineProperty(Configuration.prototype, "CSRFToken", {
get: /**
* @return {?}
*/
function () {
if (this.contentSecurityPolicyActivated && !this.useAccessToken) {
this.useCSRFToken = localStorage.getItem('CSRFToken');
}
else if (!this.useCSRFToken) {
this.useCSRFToken = sessionStorage.getItem('CSRFToken');
}
return this.useCSRFToken;
},
set: /**
* @param {?} value
* @return {?}
*/
function (value) {
if (this.contentSecurityPolicyActivated) {
localStorage.setItem('CSRFToken', value);
}
else {
sessionStorage.setItem('CSRFToken', value);
}
this.useCSRFToken = value;
},
enumerable: true,
configurable: true
});
/**
* @private
* @return {?}
*/
Configuration.prototype.setDefaultLocale = /**
* @private
* @return {?}
*/
function () {
if (this.useLocale) {
return;
}
if (navigator && navigator.language.indexOf('-') > -1) {
if (this.languages.indexOf(navigator.language) > -1) {
this.locale = navigator.language;
return;
}
var _a = tslib_1.__read(navigator.language.split('-'), 2), langue = _a[0], country = _a[1];
if (this.languages.indexOf(langue) > -1) {
this.locale = langue;
return;
}
}
else if (navigator && navigator.languages.length > 0) {
for (var i in navigator.languages) {
if (this.languages.indexOf(navigator.languages[i]) > -1) {
this.locale = navigator.languages[i];
return;
}
}
}
};
return Configuration;
}());
export { Configuration };
if (false) {
/**
* @type {?}
* @private
*/
Configuration.prototype.useCharset;
/**
* @type {?}
* @private
*/
Configuration.prototype.useAuthorizationType;
/**
* @type {?}
* @private
*/
Configuration.prototype.useAccessToken;
/**
* @type {?}
* @private
*/
Configuration.prototype.useRefreshToken;
/**
* @type {?}
* @private
*/
Configuration.prototype.useCSRFToken;
/**
* @type {?}
* @private
*/
Configuration.prototype.useLocale;
/**
* @type {?}
* @private
*/
Configuration.prototype.useLanguages;
/** @type {?} */
Configuration.prototype.libraries;
/** @type {?} */
Configuration.prototype.loginURL;
/** @type {?} */
Configuration.prototype.refreshLoginURL;
/** @type {?} */
Configuration.prototype.allowRefreshToken;
/** @type {?} */
Configuration.prototype.apiUrl;
/** @type {?} */
Configuration.prototype.nbRetryOnNetworkError;
/** @type {?} */
Configuration.prototype.contentSecurityPolicyActivated;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BjYXVzZS05MTEvY29yZS8iLCJzb3VyY2VzIjpbImxpYi9zaGFyZWQvY2xhc3Nlcy9jb25maWd1cmF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBRUE7SUFnQkksdUJBQVksT0FBMEI7UUFSL0IsY0FBUyxHQUFhLEVBQUUsQ0FBQztRQUN6QixhQUFRLEdBQVcsRUFBRSxDQUFDO1FBQ3RCLG9CQUFlLEdBQVcsRUFBRSxDQUFDO1FBQzdCLHNCQUFpQixHQUFZLElBQUksQ0FBQztRQUNsQyxXQUFNLEdBQVcsRUFBRSxDQUFDO1FBQ3BCLDBCQUFxQixHQUFXLENBQUMsQ0FBQztRQUNsQyxtQ0FBOEIsR0FBWSxLQUFLLENBQUM7UUFHbkQsSUFBSSxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUM7UUFDMUIsSUFBSSxDQUFDLG9CQUFvQixHQUFHLFFBQVEsQ0FBQztRQUNyQyxJQUFJLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsZUFBZSxHQUFHLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxZQUFZLEdBQUcsT0FBTyxDQUFDLFNBQVMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hELElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUM7UUFDekMsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxJQUFJLE9BQU8sQ0FBQztRQUN4QyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsT0FBTyxDQUFDLGlCQUFpQixJQUFJLElBQUksQ0FBQztRQUMzRCxJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLElBQUksU0FBUyxDQUFDO1FB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QUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRTtnQkFDckMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7Z0JBQ3JCLE9BQU87YUFDVjtTQUNKO2FBQU0sSUFBSSxTQUFTLElBQUksU0FBUyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3BELEtBQUssSUFBTSxDQUFDLElBQUksU0FBUyxDQUFDLFNBQVMsRUFBRTtnQkFDakMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7b0JBQ3JELElBQUksQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDckMsT0FBTztpQkFDVjthQUNKO1NBQ0o7SUFDTCxDQUFDO0lBQ0wsb0JBQUM7QUFBRCxDQUFDLEFBakpELElBaUpDOzs7Ozs7O0lBaEpHLG1DQUFtQjs7Ozs7SUFDbkIsNkNBQTZCOzs7OztJQUM3Qix1Q0FBdUI7Ozs7O0lBQ3ZCLHdDQUF3Qjs7Ozs7SUFDeEIscUNBQXFCOzs7OztJQUNyQixrQ0FBMEI7Ozs7O0lBQzFCLHFDQUErQjs7SUFDL0Isa0NBQWdDOztJQUNoQyxpQ0FBNkI7O0lBQzdCLHdDQUFvQzs7SUFDcEMsMENBQXlDOztJQUN6QywrQkFBMkI7O0lBQzNCLDhDQUF5Qzs7SUFDekMsdURBQXVEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29yZU1vZHVsZU9wdGlvbnMgfSBmcm9tICcuLi9tb2RlbHMvY29yZS1tb2R1bGUtb3B0aW9ucyc7XG5cbmV4cG9ydCBjbGFzcyBDb25maWd1cmF0aW9uIHtcbiAgICBwcml2YXRlIHVzZUNoYXJzZXQ7XG4gICAgcHJpdmF0ZSB1c2VBdXRob3JpemF0aW9uVHlwZTtcbiAgICBwcml2YXRlIHVzZUFjY2Vzc1Rva2VuO1xuICAgIHByaXZhdGUgdXNlUmVmcmVzaFRva2VuO1xuICAgIHByaXZhdGUgdXNlQ1NSRlRva2VuO1xuICAgIHByaXZhdGUgdXNlTG9jYWxlOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSB1c2VMYW5ndWFnZXM6IHN0cmluZ1tdO1xuICAgIHB1YmxpYyBsaWJyYXJpZXM6IHN0cmluZ1tdID0gW107XG4gICAgcHVibGljIGxvZ2luVVJMOiBzdHJpbmcgPSAnJztcbiAgICBwdWJsaWMgcmVmcmVzaExvZ2luVVJMOiBzdHJpbmcgPSAnJztcbiAgICBwdWJsaWMgYWxsb3dSZWZyZXNoVG9rZW46IGJvb2xlYW4gPSB0cnVlO1xuICAgIHB1YmxpYyBhcGlVcmw6IHN0cmluZyA9ICcnO1xuICAgIHB1YmxpYyBuYlJldHJ5T25OZXR3b3JrRXJyb3I6IG51bWJlciA9IDA7XG4gICAgcHVibGljIGNvbnRlbnRTZWN1cml0eVBvbGljeUFjdGl2YXRlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3Iob3B0aW9uczogQ29yZU1vZHVsZU9wdGlvbnMpIHtcbiAgICAgICAgdGhpcy51c2VDaGFyc2V0ID0gJ1VURi04JztcbiAgICAgICAgdGhpcy51c2VBdXRob3JpemF0aW9uVHlwZSA9ICdCZWFyZXInO1xuICAgICAgICB0aGlzLnVzZUFjY2Vzc1Rva2VuID0gJyc7XG4gICAgICAgIHRoaXMudXNlUmVmcmVzaFRva2VuID0gJyc7XG4gICAgICAgIHRoaXMudXNlQ1NSRlRva2VuID0gJyc7XG4gICAgICAgIHRoaXMudXNlTG9jYWxlID0gb3B0aW9ucy5sb2NhbGUgfHwgJ2ZyJztcbiAgICAgICAgdGhpcy51c2VMYW5ndWFnZXMgPSBvcHRpb25zLmxhbmd1YWdlcyB8fCBbJ2ZyJ107XG4gICAgICAgIHRoaXMubGlicmFyaWVzID0gb3B0aW9ucy5saWJyYXJpZXMgfHwgW107XG4gICAgICAgIHRoaXMuYXBpVXJsID0gb3B0aW9ucy5hcGlVcmwgfHwgJy9hcGkvJztcbiAgICAgICAgdGhpcy5hbGxvd1JlZnJlc2hUb2tlbiA9IG9wdGlvbnMuYWxsb3dSZWZyZXNoVG9rZW4gfHwgdHJ1ZTtcbiAgICAgICAgdGhpcy5sb2dpblVSTCA9IG9wdGlvbnMubG9naW5VUkwgfHwgJy9sb2dpbi8nO1xuICAgICAgICB0aGlzLnJlZnJlc2hMb2dpblVSTCA9IG9wdGlvbnMucmVmcmVzaExvZ2luVVJMIHx8ICcnO1xuICAgICAgICB0aGlzLm5iUmV0cnlPbk5ldHdvcmtFcnJvciA9IG9wdGlvbnMubmJSZXRyeU9uTmV0d29ya0Vycm9yIHx8IDA7XG4gICAgICAgIHRoaXMuY29udGVudFNlY3VyaXR5UG9saWN5QWN0aXZhdGVkID0gb3B0aW9ucy5jb250ZW50U2VjdXJpdHlQb2xpY3lBY3RpdmF0ZWQgfHwgZmFsc2U7XG4gICAgfVxuXG4gICAgZ2V0IGxvY2FsZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy51c2VMb2NhbGU7XG4gICAgfVxuICAgIHNldCBsb2NhbGUodmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLnVzZUxvY2FsZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIGdldCBsYW5ndWFnZXMoKTogc3RyaW5nW10ge1xuICAgICAgICByZXR1cm4gdGhpcy51c2VMYW5ndWFnZXM7XG4gICAgfVxuICAgIHNldCBsYW5ndWFnZXModmFsdWU6IHN0cmluZ1tdKSB7XG4gICAgICAgIHRoaXMudXNlTGFuZ3VhZ2VzID0gdmFsdWU7XG4gICAgICAgIHRoaXMuc2V0RGVmYXVsdExvY2FsZSgpO1xuICAgIH1cblxuICAgIGdldCBjaGFyc2V0KCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnVzZUNoYXJzZXQ7XG4gICAgfVxuICAgIHNldCBjaGFyc2V0KHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy51c2VDaGFyc2V0ID0gdmFsdWU7XG4gICAgfVxuXG4gICAgZ2V0IGF1dGhvcml6YXRpb25UeXBlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnVzZUF1dGhvcml6YXRpb25UeXBlO1xuICAgIH1cbiAgICBzZXQgYXV0aG9yaXphdGlvblR5cGUodmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLnVzZUF1dGhvcml6YXRpb25UeXBlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgZ2V0IHJlZnJlc2hUb2tlbigpOiBzdHJpbmcge1xuICAgICAgICBpZiAodGhpcy5jb250ZW50U2VjdXJpdHlQb2xpY3lBY3RpdmF0ZWQgJiYgIXRoaXMudXNlUmVmcmVzaFRva2VuKSB7XG4gICAgICAgICAgICB0aGlzLnVzZVJlZnJlc2hUb2tlbiA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdyZWZyZXNoVG9rZW4nKTtcbiAgICAgICAgfSBlbHNlIGlmICghdGhpcy51c2VSZWZyZXNoVG9rZW4pIHtcbiAgICAgICAgICAgIHRoaXMudXNlUmVmcmVzaFRva2VuID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgncmVmcmVzaFRva2VuJyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy51c2VSZWZyZXNoVG9rZW47XG4gICAgfVxuICAgIHNldCByZWZyZXNoVG9rZW4odmFsdWU6IHN0cmluZykge1xuICAgICAgICBpZiAodGhpcy5jb250ZW50U2VjdXJpdHlQb2xpY3lBY3RpdmF0ZWQpIHtcbiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdyZWZyZXNoVG9rZW4nLCB2YWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdyZWZyZXNoVG9rZW4nLCB2YWx1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnVzZVJlZnJlc2hUb2tlbiA9IHZhbHVlO1xuICAgIH1cblxuICAgIGdldCBhY2Nlc3NUb2tlbigpOiBzdHJpbmcge1xuICAgICAgICBpZiAodGhpcy5jb250ZW50U2VjdXJpdHlQb2xpY3lBY3RpdmF0ZWQgJiYgIXRoaXMudXNlQWNjZXNzVG9rZW4pIHtcbiAgICAgICAgICAgIHRoaXMudXNlQWNjZXNzVG9rZW4gPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnYWNjZXNzVG9rZW4nKTtcbiAgICAgICAgfSBlbHNlIGlmICghdGhpcy51c2VBY2Nlc3NUb2tlbikge1xuICAgICAgICAgICAgdGhpcy51c2VBY2Nlc3NUb2tlbiA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2FjY2Vzc1Rva2VuJyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy51c2VBY2Nlc3NUb2tlbjtcbiAgICB9XG4gICAgc2V0IGFjY2Vzc1Rva2VuKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKHRoaXMuY29udGVudFNlY3VyaXR5UG9saWN5QWN0aXZhdGVkKSB7XG4gICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnYWNjZXNzVG9rZW4nLCB2YWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdhY2Nlc3NUb2tlbicsIHZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudXNlQWNjZXNzVG9rZW4gPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBnZXQgQ1NSRlRva2VuKCk6IHN0cmluZyB7XG4gICAgICAgIGlmICh0aGlzLmNvbnRlbnRTZWN1cml0eVBvbGljeUFjdGl2YXRlZCAmJiAhdGhpcy51c2VBY2Nlc3NUb2tlbikge1xuICAgICAgICAgICAgdGhpcy51c2VDU1JGVG9rZW4gPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnQ1NSRlRva2VuJyk7XG4gICAgICAgIH0gZWxzZSBpZiAoIXRoaXMudXNlQ1NSRlRva2VuKSB7XG4gICAgICAgICAgICB0aGlzLnVzZUNTUkZUb2tlbiA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ0NTUkZUb2tlbicpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMudXNlQ1NSRlRva2VuO1xuICAgIH1cbiAgICBzZXQgQ1NSRlRva2VuKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKHRoaXMuY29udGVudFNlY3VyaXR5UG9saWN5QWN0aXZhdGVkKSB7XG4gICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnQ1NSRlRva2VuJywgdmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgnQ1NSRlRva2VuJywgdmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy51c2VDU1JGVG9rZW4gPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldERlZmF1bHRMb2NhbGUoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnVzZUxvY2FsZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG5hdmlnYXRvciAmJiBuYXZpZ2F0b3IubGFuZ3VhZ2UuaW5kZXhPZignLScpID4gLTEpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmxhbmd1YWdlcy5pbmRleE9mKG5hdmlnYXRvci5sYW5ndWFnZSkgPiAtMSkge1xuICAgICAgICAgICAgICAgIHRoaXMubG9jYWxlID0gbmF2aWdhdG9yLmxhbmd1YWdlO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgW2xhbmd1ZSwgY291bnRyeV0gPSBuYXZpZ2F0b3IubGFuZ3VhZ2Uuc3BsaXQoJy0nKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMubGFuZ3VhZ2VzLmluZGV4T2YobGFuZ3VlKSA+IC0xKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2NhbGUgPSBsYW5ndWU7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKG5hdmlnYXRvciAmJiBuYXZpZ2F0b3IubGFuZ3VhZ2VzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgaSBpbiBuYXZpZ2F0b3IubGFuZ3VhZ2VzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubGFuZ3VhZ2VzLmluZGV4T2YobmF2aWdhdG9yLmxhbmd1YWdlc1tpXSkgPiAtMSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvY2FsZSA9IG5hdmlnYXRvci5sYW5ndWFnZXNbaV07XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=