UNPKG

@cause-911/core

Version:

Run `npm install @cause-911/core --save` to add this library to your project

240 lines 18.6 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ export class Configuration { /** * @param {?} options */ constructor(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; } /** * @return {?} */ get locale() { return this.useLocale; } /** * @param {?} value * @return {?} */ set locale(value) { this.useLocale = value; } /** * @return {?} */ get languages() { return this.useLanguages; } /** * @param {?} value * @return {?} */ set languages(value) { this.useLanguages = value; this.setDefaultLocale(); } /** * @return {?} */ get charset() { return this.useCharset; } /** * @param {?} value * @return {?} */ set charset(value) { this.useCharset = value; } /** * @return {?} */ get authorizationType() { return this.useAuthorizationType; } /** * @param {?} value * @return {?} */ set authorizationType(value) { this.useAuthorizationType = value; } /** * @return {?} */ get refreshToken() { if (this.contentSecurityPolicyActivated && !this.useRefreshToken) { this.useRefreshToken = localStorage.getItem('refreshToken'); } else if (!this.useRefreshToken) { this.useRefreshToken = sessionStorage.getItem('refreshToken'); } return this.useRefreshToken; } /** * @param {?} value * @return {?} */ set refreshToken(value) { if (this.contentSecurityPolicyActivated) { localStorage.setItem('refreshToken', value); } else { sessionStorage.setItem('refreshToken', value); } this.useRefreshToken = value; } /** * @return {?} */ get accessToken() { if (this.contentSecurityPolicyActivated && !this.useAccessToken) { this.useAccessToken = localStorage.getItem('accessToken'); } else if (!this.useAccessToken) { this.useAccessToken = sessionStorage.getItem('accessToken'); } return this.useAccessToken; } /** * @param {?} value * @return {?} */ set accessToken(value) { if (this.contentSecurityPolicyActivated) { localStorage.setItem('accessToken', value); } else { sessionStorage.setItem('accessToken', value); } this.useAccessToken = value; } /** * @return {?} */ get CSRFToken() { if (this.contentSecurityPolicyActivated && !this.useAccessToken) { this.useCSRFToken = localStorage.getItem('CSRFToken'); } else if (!this.useCSRFToken) { this.useCSRFToken = sessionStorage.getItem('CSRFToken'); } return this.useCSRFToken; } /** * @param {?} value * @return {?} */ set CSRFToken(value) { if (this.contentSecurityPolicyActivated) { localStorage.setItem('CSRFToken', value); } else { sessionStorage.setItem('CSRFToken', value); } this.useCSRFToken = value; } /** * @private * @return {?} */ setDefaultLocale() { if (this.useLocale) { return; } if (navigator && navigator.language.indexOf('-') > -1) { if (this.languages.indexOf(navigator.language) > -1) { this.locale = navigator.language; return; } const [langue, country] = navigator.language.split('-'); if (this.languages.indexOf(langue) > -1) { this.locale = langue; return; } } else if (navigator && navigator.languages.length > 0) { for (const i in navigator.languages) { if (this.languages.indexOf(navigator.languages[i]) > -1) { this.locale = navigator.languages[i]; return; } } } } } 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BjYXVzZS05MTEvY29yZS8iLCJzb3VyY2VzIjpbImxpYi9zaGFyZWQvY2xhc3Nlcy9jb25maWd1cmF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFFQSxNQUFNLE9BQU8sYUFBYTs7OztJQWdCdEIsWUFBWSxPQUEwQjtRQVIvQixjQUFTLEdBQWEsRUFBRSxDQUFDO1FBQ3pCLGFBQVEsR0FBVyxFQUFFLENBQUM7UUFDdEIsb0JBQWUsR0FBVyxFQUFFLENBQUM7UUFDN0Isc0JBQWlCLEdBQVksSUFBSSxDQUFDO1FBQ2xDLFdBQU0sR0FBVyxFQUFFLENBQUM7UUFDcEIsMEJBQXFCLEdBQVcsQ0FBQyxDQUFDO1FBQ2xDLG1DQUE4QixHQUFZLEtBQUssQ0FBQztRQUduRCxJQUFJLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQztRQUMxQixJQUFJLENBQUMsb0JBQW9CLEdBQUcsUUFBUSxDQUFDO1FBQ3JDLElBQUksQ0FBQyxjQUFjLEdBQUcsRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxlQUFlLEdBQUcsRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUM7UUFDeEMsSUFBSSxDQUFDLFlBQVksR0FBRyxPQUFPLENBQUMsU0FBUyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEQsSUFBSSxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQztRQUN6QyxJQUFJLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLElBQUksT0FBTyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxPQUFPLENBQUMsaUJBQWlCLElBQUksSUFBSSxDQUFDO1FBQzNELElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEs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QyxTQUFTLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO2dCQUNyQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztnQkFDckIsT0FBTzthQUNWO1NBQ0o7YUFBTSxJQUFJLFNBQVMsSUFBSSxTQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDcEQsS0FBSyxNQUFNLENBQUMsSUFBSSxTQUFTLENBQUMsU0FBUyxFQUFFO2dCQUNqQyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRTtvQkFDckQsSUFBSSxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUNyQyxPQUFPO2lCQUNWO2FBQ0o7U0FDSjtJQUNMLENBQUM7Q0FDSjs7Ozs7O0lBaEpHLG1DQUFtQjs7Ozs7SUFDbkIsNkNBQTZCOzs7OztJQUM3Qix1Q0FBdUI7Ozs7O0lBQ3ZCLHdDQUF3Qjs7Ozs7SUFDeEIscUNBQXFCOzs7OztJQUNyQixrQ0FBMEI7Ozs7O0lBQzFCLHFDQUErQjs7SUFDL0Isa0NBQWdDOztJQUNoQyxpQ0FBNkI7O0lBQzdCLHdDQUFvQzs7SUFDcEMsMENBQXlDOztJQUN6QywrQkFBMkI7O0lBQzNCLDhDQUF5Qzs7SUFDekMsdURBQXVEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29yZU1vZHVsZU9wdGlvbnMgfSBmcm9tICcuLi9tb2RlbHMvY29yZS1tb2R1bGUtb3B0aW9ucyc7XG5cbmV4cG9ydCBjbGFzcyBDb25maWd1cmF0aW9uIHtcbiAgICBwcml2YXRlIHVzZUNoYXJzZXQ7XG4gICAgcHJpdmF0ZSB1c2VBdXRob3JpemF0aW9uVHlwZTtcbiAgICBwcml2YXRlIHVzZUFjY2Vzc1Rva2VuO1xuICAgIHByaXZhdGUgdXNlUmVmcmVzaFRva2VuO1xuICAgIHByaXZhdGUgdXNlQ1NSRlRva2VuO1xuICAgIHByaXZhdGUgdXNlTG9jYWxlOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSB1c2VMYW5ndWFnZXM6IHN0cmluZ1tdO1xuICAgIHB1YmxpYyBsaWJyYXJpZXM6IHN0cmluZ1tdID0gW107XG4gICAgcHVibGljIGxvZ2luVVJMOiBzdHJpbmcgPSAnJztcbiAgICBwdWJsaWMgcmVmcmVzaExvZ2luVVJMOiBzdHJpbmcgPSAnJztcbiAgICBwdWJsaWMgYWxsb3dSZWZyZXNoVG9rZW46IGJvb2xlYW4gPSB0cnVlO1xuICAgIHB1YmxpYyBhcGlVcmw6IHN0cmluZyA9ICcnO1xuICAgIHB1YmxpYyBuYlJldHJ5T25OZXR3b3JrRXJyb3I6IG51bWJlciA9IDA7XG4gICAgcHVibGljIGNvbnRlbnRTZWN1cml0eVBvbGljeUFjdGl2YXRlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3Iob3B0aW9uczogQ29yZU1vZHVsZU9wdGlvbnMpIHtcbiAgICAgICAgdGhpcy51c2VDaGFyc2V0ID0gJ1VURi04JztcbiAgICAgICAgdGhpcy51c2VBdXRob3JpemF0aW9uVHlwZSA9ICdCZWFyZXInO1xuICAgICAgICB0aGlzLnVzZUFjY2Vzc1Rva2VuID0gJyc7XG4gICAgICAgIHRoaXMudXNlUmVmcmVzaFRva2VuID0gJyc7XG4gICAgICAgIHRoaXMudXNlQ1NSRlRva2VuID0gJyc7XG4gICAgICAgIHRoaXMudXNlTG9jYWxlID0gb3B0aW9ucy5sb2NhbGUgfHwgJ2ZyJztcbiAgICAgICAgdGhpcy51c2VMYW5ndWFnZXMgPSBvcHRpb25zLmxhbmd1YWdlcyB8fCBbJ2ZyJ107XG4gICAgICAgIHRoaXMubGlicmFyaWVzID0gb3B0aW9ucy5saWJyYXJpZXMgfHwgW107XG4gICAgICAgIHRoaXMuYXBpVXJsID0gb3B0aW9ucy5hcGlVcmwgfHwgJy9hcGkvJztcbiAgICAgICAgdGhpcy5hbGxvd1JlZnJlc2hUb2tlbiA9IG9wdGlvbnMuYWxsb3dSZWZyZXNoVG9rZW4gfHwgdHJ1ZTtcbiAgICAgICAgdGhpcy5sb2dpblVSTCA9IG9wdGlvbnMubG9naW5VUkwgfHwgJy9sb2dpbi8nO1xuICAgICAgICB0aGlzLnJlZnJlc2hMb2dpblVSTCA9IG9wdGlvbnMucmVmcmVzaExvZ2luVVJMIHx8ICcnO1xuICAgICAgICB0aGlzLm5iUmV0cnlPbk5ldHdvcmtFcnJvciA9IG9wdGlvbnMubmJSZXRyeU9uTmV0d29ya0Vycm9yIHx8IDA7XG4gICAgICAgIHRoaXMuY29udGVudFNlY3VyaXR5UG9saWN5QWN0aXZhdGVkID0gb3B0aW9ucy5jb250ZW50U2VjdXJpdHlQb2xpY3lBY3RpdmF0ZWQgfHwgZmFsc2U7XG4gICAgfVxuXG4gICAgZ2V0IGxvY2FsZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy51c2VMb2NhbGU7XG4gICAgfVxuICAgIHNldCBsb2NhbGUodmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLnVzZUxvY2FsZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIGdldCBsYW5ndWFnZXMoKTogc3RyaW5nW10ge1xuICAgICAgICByZXR1cm4gdGhpcy51c2VMYW5ndWFnZXM7XG4gICAgfVxuICAgIHNldCBsYW5ndWFnZXModmFsdWU6IHN0cmluZ1tdKSB7XG4gICAgICAgIHRoaXMudXNlTGFuZ3VhZ2VzID0gdmFsdWU7XG4gICAgICAgIHRoaXMuc2V0RGVmYXVsdExvY2FsZSgpO1xuICAgIH1cblxuICAgIGdldCBjaGFyc2V0KCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnVzZUNoYXJzZXQ7XG4gICAgfVxuICAgIHNldCBjaGFyc2V0KHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy51c2VDaGFyc2V0ID0gdmFsdWU7XG4gICAgfVxuXG4gICAgZ2V0IGF1dGhvcml6YXRpb25UeXBlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnVzZUF1dGhvcml6YXRpb25UeXBlO1xuICAgIH1cbiAgICBzZXQgYXV0aG9yaXphdGlvblR5cGUodmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLnVzZUF1dGhvcml6YXRpb25UeXBlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgZ2V0IHJlZnJlc2hUb2tlbigpOiBzdHJpbmcge1xuICAgICAgICBpZiAodGhpcy5jb250ZW50U2VjdXJpdHlQb2xpY3lBY3RpdmF0ZWQgJiYgIXRoaXMudXNlUmVmcmVzaFRva2VuKSB7XG4gICAgICAgICAgICB0aGlzLnVzZVJlZnJlc2hUb2tlbiA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdyZWZyZXNoVG9rZW4nKTtcbiAgICAgICAgfSBlbHNlIGlmICghdGhpcy51c2VSZWZyZXNoVG9rZW4pIHtcbiAgICAgICAgICAgIHRoaXMudXNlUmVmcmVzaFRva2VuID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgncmVmcmVzaFRva2VuJyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy51c2VSZWZyZXNoVG9rZW47XG4gICAgfVxuICAgIHNldCByZWZyZXNoVG9rZW4odmFsdWU6IHN0cmluZykge1xuICAgICAgICBpZiAodGhpcy5jb250ZW50U2VjdXJpdHlQb2xpY3lBY3RpdmF0ZWQpIHtcbiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdyZWZyZXNoVG9rZW4nLCB2YWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdyZWZyZXNoVG9rZW4nLCB2YWx1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnVzZVJlZnJlc2hUb2tlbiA9IHZhbHVlO1xuICAgIH1cblxuICAgIGdldCBhY2Nlc3NUb2tlbigpOiBzdHJpbmcge1xuICAgICAgICBpZiAodGhpcy5jb250ZW50U2VjdXJpdHlQb2xpY3lBY3RpdmF0ZWQgJiYgIXRoaXMudXNlQWNjZXNzVG9rZW4pIHtcbiAgICAgICAgICAgIHRoaXMudXNlQWNjZXNzVG9rZW4gPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnYWNjZXNzVG9rZW4nKTtcbiAgICAgICAgfSBlbHNlIGlmICghdGhpcy51c2VBY2Nlc3NUb2tlbikge1xuICAgICAgICAgICAgdGhpcy51c2VBY2Nlc3NUb2tlbiA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2FjY2Vzc1Rva2VuJyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy51c2VBY2Nlc3NUb2tlbjtcbiAgICB9XG4gICAgc2V0IGFjY2Vzc1Rva2VuKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKHRoaXMuY29udGVudFNlY3VyaXR5UG9saWN5QWN0aXZhdGVkKSB7XG4gICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnYWNjZXNzVG9rZW4nLCB2YWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdhY2Nlc3NUb2tlbicsIHZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudXNlQWNjZXNzVG9rZW4gPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBnZXQgQ1NSRlRva2VuKCk6IHN0cmluZyB7XG4gICAgICAgIGlmICh0aGlzLmNvbnRlbnRTZWN1cml0eVBvbGljeUFjdGl2YXRlZCAmJiAhdGhpcy51c2VBY2Nlc3NUb2tlbikge1xuICAgICAgICAgICAgdGhpcy51c2VDU1JGVG9rZW4gPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnQ1NSRlRva2VuJyk7XG4gICAgICAgIH0gZWxzZSBpZiAoIXRoaXMudXNlQ1NSRlRva2VuKSB7XG4gICAgICAgICAgICB0aGlzLnVzZUNTUkZUb2tlbiA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ0NTUkZUb2tlbicpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMudXNlQ1NSRlRva2VuO1xuICAgIH1cbiAgICBzZXQgQ1NSRlRva2VuKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKHRoaXMuY29udGVudFNlY3VyaXR5UG9saWN5QWN0aXZhdGVkKSB7XG4gICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnQ1NSRlRva2VuJywgdmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgnQ1NSRlRva2VuJywgdmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy51c2VDU1JGVG9rZW4gPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldERlZmF1bHRMb2NhbGUoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnVzZUxvY2FsZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG5hdmlnYXRvciAmJiBuYXZpZ2F0b3IubGFuZ3VhZ2UuaW5kZXhPZignLScpID4gLTEpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmxhbmd1YWdlcy5pbmRleE9mKG5hdmlnYXRvci5sYW5ndWFnZSkgPiAtMSkge1xuICAgICAgICAgICAgICAgIHRoaXMubG9jYWxlID0gbmF2aWdhdG9yLmxhbmd1YWdlO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgW2xhbmd1ZSwgY291bnRyeV0gPSBuYXZpZ2F0b3IubGFuZ3VhZ2Uuc3BsaXQoJy0nKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMubGFuZ3VhZ2VzLmluZGV4T2YobGFuZ3VlKSA+IC0xKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2NhbGUgPSBsYW5ndWU7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKG5hdmlnYXRvciAmJiBuYXZpZ2F0b3IubGFuZ3VhZ2VzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgaSBpbiBuYXZpZ2F0b3IubGFuZ3VhZ2VzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubGFuZ3VhZ2VzLmluZGV4T2YobmF2aWdhdG9yLmxhbmd1YWdlc1tpXSkgPiAtMSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvY2FsZSA9IG5hdmlnYXRvci5sYW5ndWFnZXNbaV07XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=