{"version":3,"file":"skyux-i18n.mjs","sources":["../tmp-esm2022/lib/modules/i18n/currency/currency-format.service.js","../tmp-esm2022/lib/modules/i18n/get-lib-string-for-locale.js","../tmp-esm2022/lib/modules/i18n/get-string-for-locale.js","../tmp-esm2022/lib/utils/format.js","../tmp-esm2022/lib/modules/i18n/lib-resources-providers-token.js","../tmp-esm2022/lib/modules/i18n/locale-provider.js","../tmp-esm2022/lib/modules/i18n/resource-name-provider.js","../tmp-esm2022/lib/modules/i18n/lib-resources.service.js","../tmp-esm2022/lib/modules/i18n/lib-resources.pipe.js","../tmp-esm2022/lib/modules/i18n/resources.service.js","../tmp-esm2022/lib/modules/i18n/resources.pipe.js","../tmp-esm2022/lib/modules/i18n/i18n.module.js","../tmp-esm2022/lib/modules/i18n/intl-date-formatter-utils.js","../tmp-esm2022/lib/modules/i18n/intl-date-formatter.js","../tmp-esm2022/lib/modules/i18n/intl-number-format-style.js","../tmp-esm2022/lib/modules/i18n/intl-number-formatter.js","../tmp-esm2022/lib/modules/i18n/lib-resources-provider.js","../tmp-esm2022/skyux-i18n.js"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nconst DEFAULT_LOCALE = 'en-US';\nconst DEFAULT_CURRENCY_CODE = 'USD';\nconst DEFAULT_GROUP_CHARACTER = ',';\nconst DEFAULT_DECIMAL_CHARACTER = '.';\n/**\n * Used to format a currency within a given locale.\n */\nexport class SkyI18nCurrencyFormatService {\n    /**\n     * Gets a currency's format.\n     * @param isoCurrencyCode the ISO 4217 Currency Code. Defaults to 'USD'.\n     * @param locale the locale. Defaults to 'en-US'. Examples: 'en-US', 'en-GB', 'fr-FR'.\n     */\n    getCurrencyFormat(isoCurrencyCode = DEFAULT_CURRENCY_CODE, locale = DEFAULT_LOCALE) {\n        const formatter = new Intl.NumberFormat(locale, {\n            style: 'currency',\n            currency: isoCurrencyCode,\n        });\n        const resolvedOptions = formatter.resolvedOptions();\n        // We know this will be there as we give the currency options to the number format call above\n        // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n        const currencyCode = resolvedOptions.currency;\n        const parts = this.#formatToParts(formatter);\n        /* istanbul ignore next */\n        const precision = resolvedOptions.maximumFractionDigits ?? 0;\n        return {\n            decimalCharacter: parts.decimalCharacter,\n            groupCharacter: parts.groupCharacter,\n            isoCurrencyCode: currencyCode,\n            locale,\n            precision,\n            symbol: parts.symbol,\n            symbolLocation: parts.symbolLocation,\n        };\n    }\n    #formatToParts(formatter) {\n        const BIG_VALUE_TO_GET_PART_INFO = 100_000_000;\n        const parts = formatter.formatToParts(BIG_VALUE_TO_GET_PART_INFO);\n        const findOrDefault = (intlType, defaultValue) => parts.find((p) => p.type === intlType)?.value ?? defaultValue;\n        return {\n            symbol: findOrDefault('currency', ''),\n            symbolLocation: parts.findIndex((p) => p.type === 'currency') === 0\n                ? 'prefix'\n                : 'suffix',\n            decimalCharacter: findOrDefault('decimal', DEFAULT_DECIMAL_CHARACTER),\n            groupCharacter: findOrDefault('group', DEFAULT_GROUP_CHARACTER),\n        };\n    }\n    static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: SkyI18nCurrencyFormatService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n    static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: SkyI18nCurrencyFormatService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: SkyI18nCurrencyFormatService, decorators: [{\n            type: Injectable,\n            args: [{\n                    providedIn: 'root',\n                }]\n        }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VycmVuY3ktZm9ybWF0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvaTE4bi9zcmMvbGliL21vZHVsZXMvaTE4bi9jdXJyZW5jeS9jdXJyZW5jeS1mb3JtYXQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUszQyxNQUFNLGNBQWMsR0FBRyxPQUFPLENBQUM7QUFDL0IsTUFBTSxxQkFBcUIsR0FBRyxLQUFLLENBQUM7QUFDcEMsTUFBTSx1QkFBdUIsR0FBRyxHQUFHLENBQUM7QUFDcEMsTUFBTSx5QkFBeUIsR0FBRyxHQUFHLENBQUM7QUFTdEM7O0dBRUc7QUFJSCxNQUFNLE9BQU8sNEJBQTRCO0lBQ3ZDOzs7O09BSUc7SUFDSSxpQkFBaUIsQ0FDdEIsa0JBQTBCLHFCQUFxQixFQUMvQyxTQUFpQixjQUFjO1FBRS9CLE1BQU0sU0FBUyxHQUFHLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUU7WUFDOUMsS0FBSyxFQUFFLFVBQVU7WUFDakIsUUFBUSxFQUFFLGVBQWU7U0FDMUIsQ0FBQyxDQUFDO1FBRUgsTUFBTSxlQUFlLEdBQ25CLFNBQVMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUM5Qiw2RkFBNkY7UUFDN0Ysb0VBQW9FO1FBQ3BFLE1BQU0sWUFBWSxHQUFHLGVBQWUsQ0FBQyxRQUFTLENBQUM7UUFDL0MsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUU3QywwQkFBMEI7UUFDMUIsTUFBTSxTQUFTLEdBQUcsZUFBZSxDQUFDLHFCQUFxQixJQUFJLENBQUMsQ0FBQztRQUU3RCxPQUFPO1lBQ0wsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLGdCQUFnQjtZQUN4QyxjQUFjLEVBQUUsS0FBSyxDQUFDLGNBQWM7WUFDcEMsZUFBZSxFQUFFLFlBQVk7WUFDN0IsTUFBTTtZQUNOLFNBQVM7WUFDVCxNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU07WUFDcEIsY0FBYyxFQUFFLEtBQUssQ0FBQyxjQUFjO1NBQ3JDLENBQUM7SUFDSixDQUFDO0lBRUQsY0FBYyxDQUFDLFNBQTRCO1FBQ3pDLE1BQU0sMEJBQTBCLEdBQUcsV0FBVyxDQUFDO1FBRS9DLE1BQU0sS0FBSyxHQUFHLFNBQVMsQ0FBQyxhQUFhLENBQUMsMEJBQTBCLENBQUMsQ0FBQztRQU1sRSxNQUFNLGFBQWEsR0FBZSxDQUFDLFFBQVEsRUFBRSxZQUFZLEVBQUUsRUFBRSxDQUMzRCxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQyxFQUFFLEtBQUssSUFBSSxZQUFZLENBQUM7UUFFaEUsT0FBTztZQUNMLE1BQU0sRUFBRSxhQUFhLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQztZQUNyQyxjQUFjLEVBQ1osS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxVQUFVLENBQUMsS0FBSyxDQUFDO2dCQUNqRCxDQUFDLENBQUMsUUFBUTtnQkFDVixDQUFDLENBQUMsUUFBUTtZQUNkLGdCQUFnQixFQUFFLGFBQWEsQ0FBQyxTQUFTLEVBQUUseUJBQXlCLENBQUM7WUFDckUsY0FBYyxFQUFFLGFBQWEsQ0FBQyxPQUFPLEVBQUUsdUJBQXVCLENBQUM7U0FDaEUsQ0FBQztJQUNKLENBQUM7OEdBekRVLDRCQUE0QjtrSEFBNUIsNEJBQTRCLGNBRjNCLE1BQU07OzJGQUVQLDRCQUE0QjtrQkFIeEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFNreUkxOG5DdXJyZW5jeUZvcm1hdCB9IGZyb20gJy4vY3VycmVuY3ktZm9ybWF0JztcbmltcG9ydCB7IFNreUkxOG5DdXJyZW5jeVN5bWJvbExvY2F0aW9uIH0gZnJvbSAnLi9jdXJyZW5jeS1zeW1ib2wtbG9jYXRpb24nO1xuXG5jb25zdCBERUZBVUxUX0xPQ0FMRSA9ICdlbi1VUyc7XG5jb25zdCBERUZBVUxUX0NVUlJFTkNZX0NPREUgPSAnVVNEJztcbmNvbnN0IERFRkFVTFRfR1JPVVBfQ0hBUkFDVEVSID0gJywnO1xuY29uc3QgREVGQVVMVF9ERUNJTUFMX0NIQVJBQ1RFUiA9ICcuJztcblxuaW50ZXJmYWNlIEN1cnJlbmN5Rm9ybWF0UGFydHMge1xuICBzeW1ib2w6IHN0cmluZztcbiAgc3ltYm9sTG9jYXRpb246IFNreUkxOG5DdXJyZW5jeVN5bWJvbExvY2F0aW9uO1xuICBkZWNpbWFsQ2hhcmFjdGVyOiBzdHJpbmc7XG4gIGdyb3VwQ2hhcmFjdGVyOiBzdHJpbmc7XG59XG5cbi8qKlxuICogVXNlZCB0byBmb3JtYXQgYSBjdXJyZW5jeSB3aXRoaW4gYSBnaXZlbiBsb2NhbGUuXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lJMThuQ3VycmVuY3lGb3JtYXRTZXJ2aWNlIHtcbiAgLyoqXG4gICAqIEdldHMgYSBjdXJyZW5jeSdzIGZvcm1hdC5cbiAgICogQHBhcmFtIGlzb0N1cnJlbmN5Q29kZSB0aGUgSVNPIDQyMTcgQ3VycmVuY3kgQ29kZS4gRGVmYXVsdHMgdG8gJ1VTRCcuXG4gICAqIEBwYXJhbSBsb2NhbGUgdGhlIGxvY2FsZS4gRGVmYXVsdHMgdG8gJ2VuLVVTJy4gRXhhbXBsZXM6ICdlbi1VUycsICdlbi1HQicsICdmci1GUicuXG4gICAqL1xuICBwdWJsaWMgZ2V0Q3VycmVuY3lGb3JtYXQoXG4gICAgaXNvQ3VycmVuY3lDb2RlOiBzdHJpbmcgPSBERUZBVUxUX0NVUlJFTkNZX0NPREUsXG4gICAgbG9jYWxlOiBzdHJpbmcgPSBERUZBVUxUX0xPQ0FMRSxcbiAgKTogU2t5STE4bkN1cnJlbmN5Rm9ybWF0IHtcbiAgICBjb25zdCBmb3JtYXR0ZXIgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQobG9jYWxlLCB7XG4gICAgICBzdHlsZTogJ2N1cnJlbmN5JyxcbiAgICAgIGN1cnJlbmN5OiBpc29DdXJyZW5jeUNvZGUsXG4gICAgfSk7XG5cbiAgICBjb25zdCByZXNvbHZlZE9wdGlvbnM6IEludGwuUmVzb2x2ZWROdW1iZXJGb3JtYXRPcHRpb25zID1cbiAgICAgIGZvcm1hdHRlci5yZXNvbHZlZE9wdGlvbnMoKTtcbiAgICAvLyBXZSBrbm93IHRoaXMgd2lsbCBiZSB0aGVyZSBhcyB3ZSBnaXZlIHRoZSBjdXJyZW5jeSBvcHRpb25zIHRvIHRoZSBudW1iZXIgZm9ybWF0IGNhbGwgYWJvdmVcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGlvblxuICAgIGNvbnN0IGN1cnJlbmN5Q29kZSA9IHJlc29sdmVkT3B0aW9ucy5jdXJyZW5jeSE7XG4gICAgY29uc3QgcGFydHMgPSB0aGlzLiNmb3JtYXRUb1BhcnRzKGZvcm1hdHRlcik7XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIGNvbnN0IHByZWNpc2lvbiA9IHJlc29sdmVkT3B0aW9ucy5tYXhpbXVtRnJhY3Rpb25EaWdpdHMgPz8gMDtcblxuICAgIHJldHVybiB7XG4gICAgICBkZWNpbWFsQ2hhcmFjdGVyOiBwYXJ0cy5kZWNpbWFsQ2hhcmFjdGVyLFxuICAgICAgZ3JvdXBDaGFyYWN0ZXI6IHBhcnRzLmdyb3VwQ2hhcmFjdGVyLFxuICAgICAgaXNvQ3VycmVuY3lDb2RlOiBjdXJyZW5jeUNvZGUsXG4gICAgICBsb2NhbGUsXG4gICAgICBwcmVjaXNpb24sXG4gICAgICBzeW1ib2w6IHBhcnRzLnN5bWJvbCxcbiAgICAgIHN5bWJvbExvY2F0aW9uOiBwYXJ0cy5zeW1ib2xMb2NhdGlvbixcbiAgICB9O1xuICB9XG5cbiAgI2Zvcm1hdFRvUGFydHMoZm9ybWF0dGVyOiBJbnRsLk51bWJlckZvcm1hdCk6IEN1cnJlbmN5Rm9ybWF0UGFydHMge1xuICAgIGNvbnN0IEJJR19WQUxVRV9UT19HRVRfUEFSVF9JTkZPID0gMTAwXzAwMF8wMDA7XG5cbiAgICBjb25zdCBwYXJ0cyA9IGZvcm1hdHRlci5mb3JtYXRUb1BhcnRzKEJJR19WQUxVRV9UT19HRVRfUEFSVF9JTkZPKTtcblxuICAgIHR5cGUgSW50bEZpbmRGbiA9IChcbiAgICAgIGludGxUeXBlOiBJbnRsLk51bWJlckZvcm1hdFBhcnRUeXBlcyxcbiAgICAgIGRlZmF1bHRWYWx1ZTogc3RyaW5nLFxuICAgICkgPT4gc3RyaW5nO1xuICAgIGNvbnN0IGZpbmRPckRlZmF1bHQ6IEludGxGaW5kRm4gPSAoaW50bFR5cGUsIGRlZmF1bHRWYWx1ZSkgPT5cbiAgICAgIHBhcnRzLmZpbmQoKHApID0+IHAudHlwZSA9PT0gaW50bFR5cGUpPy52YWx1ZSA/PyBkZWZhdWx0VmFsdWU7XG5cbiAgICByZXR1cm4ge1xuICAgICAgc3ltYm9sOiBmaW5kT3JEZWZhdWx0KCdjdXJyZW5jeScsICcnKSxcbiAgICAgIHN5bWJvbExvY2F0aW9uOlxuICAgICAgICBwYXJ0cy5maW5kSW5kZXgoKHApID0+IHAudHlwZSA9PT0gJ2N1cnJlbmN5JykgPT09IDBcbiAgICAgICAgICA/ICdwcmVmaXgnXG4gICAgICAgICAgOiAnc3VmZml4JyxcbiAgICAgIGRlY2ltYWxDaGFyYWN0ZXI6IGZpbmRPckRlZmF1bHQoJ2RlY2ltYWwnLCBERUZBVUxUX0RFQ0lNQUxfQ0hBUkFDVEVSKSxcbiAgICAgIGdyb3VwQ2hhcmFjdGVyOiBmaW5kT3JEZWZhdWx0KCdncm91cCcsIERFRkFVTFRfR1JPVVBfQ0hBUkFDVEVSKSxcbiAgICB9O1xuICB9XG59XG4iXX0=","/**\n * @internal\n */\nexport function getLibStringForLocale(resources, preferredLocale, name) {\n    const defaultLocale = 'en-US';\n    function getResourcesForLocale(locale) {\n        const parsedLocale = locale.toLocaleUpperCase().replace('_', '-');\n        return resources[parsedLocale];\n    }\n    let values = getResourcesForLocale(preferredLocale);\n    if (values && values[name]) {\n        return values[name].message;\n    }\n    // Attempt to locate default resources.\n    values = getResourcesForLocale(defaultLocale);\n    if (values && values[name]) {\n        return values[name].message;\n    }\n    return undefined;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWxpYi1zdHJpbmctZm9yLWxvY2FsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9pMThuL3NyYy9saWIvbW9kdWxlcy9pMThuL2dldC1saWItc3RyaW5nLWZvci1sb2NhbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7O0dBRUc7QUFDSCxNQUFNLFVBQVUscUJBQXFCLENBQ25DLFNBQTBDLEVBQzFDLGVBQXVCLEVBQ3ZCLElBQVk7SUFFWixNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUM7SUFFOUIsU0FBUyxxQkFBcUIsQ0FBQyxNQUFjO1FBQzNDLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDbEUsT0FBTyxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVELElBQUksTUFBTSxHQUFvQixxQkFBcUIsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUVyRSxJQUFJLE1BQU0sSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUMzQixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUM7SUFDOUIsQ0FBQztJQUVELHVDQUF1QztJQUN2QyxNQUFNLEdBQUcscUJBQXFCLENBQUMsYUFBYSxDQUFDLENBQUM7SUFFOUMsSUFBSSxNQUFNLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDM0IsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDO0lBQzlCLENBQUM7SUFDRCxPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2t5TGliUmVzb3VyY2VzIH0gZnJvbSAnLi9saWItcmVzb3VyY2VzJztcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldExpYlN0cmluZ0ZvckxvY2FsZShcbiAgcmVzb3VyY2VzOiBSZWNvcmQ8c3RyaW5nLCBTa3lMaWJSZXNvdXJjZXM+LFxuICBwcmVmZXJyZWRMb2NhbGU6IHN0cmluZyxcbiAgbmFtZTogc3RyaW5nLFxuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgZGVmYXVsdExvY2FsZSA9ICdlbi1VUyc7XG5cbiAgZnVuY3Rpb24gZ2V0UmVzb3VyY2VzRm9yTG9jYWxlKGxvY2FsZTogc3RyaW5nKTogU2t5TGliUmVzb3VyY2VzIHtcbiAgICBjb25zdCBwYXJzZWRMb2NhbGUgPSBsb2NhbGUudG9Mb2NhbGVVcHBlckNhc2UoKS5yZXBsYWNlKCdfJywgJy0nKTtcbiAgICByZXR1cm4gcmVzb3VyY2VzW3BhcnNlZExvY2FsZV07XG4gIH1cblxuICBsZXQgdmFsdWVzOiBTa3lMaWJSZXNvdXJjZXMgPSBnZXRSZXNvdXJjZXNGb3JMb2NhbGUocHJlZmVycmVkTG9jYWxlKTtcblxuICBpZiAodmFsdWVzICYmIHZhbHVlc1tuYW1lXSkge1xuICAgIHJldHVybiB2YWx1ZXNbbmFtZV0ubWVzc2FnZTtcbiAgfVxuXG4gIC8vIEF0dGVtcHQgdG8gbG9jYXRlIGRlZmF1bHQgcmVzb3VyY2VzLlxuICB2YWx1ZXMgPSBnZXRSZXNvdXJjZXNGb3JMb2NhbGUoZGVmYXVsdExvY2FsZSk7XG5cbiAgaWYgKHZhbHVlcyAmJiB2YWx1ZXNbbmFtZV0pIHtcbiAgICByZXR1cm4gdmFsdWVzW25hbWVdLm1lc3NhZ2U7XG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cbiJdfQ==","/**\n * @internal\n * @deprecated Use `getLibStringForLocale` instead.\n */\nexport function getStringForLocale(resources, preferredLocale, name) {\n    const defaultLocale = 'en-US';\n    function getResourcesForLocale(locale) {\n        const parsedLocale = locale.toUpperCase().replace('_', '-');\n        return resources[parsedLocale];\n    }\n    let values = getResourcesForLocale(preferredLocale);\n    if (values && values[name]) {\n        return values[name];\n    }\n    // Attempt to locate default resources.\n    values = getResourcesForLocale(defaultLocale);\n    if (values && values[name]) {\n        return values[name];\n    }\n    return undefined;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LXN0cmluZy1mb3ItbG9jYWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2kxOG4vc3JjL2xpYi9tb2R1bGVzL2kxOG4vZ2V0LXN0cmluZy1mb3ItbG9jYWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUNILE1BQU0sVUFBVSxrQkFBa0IsQ0FDaEMsU0FBaUQsRUFDakQsZUFBdUIsRUFDdkIsSUFBWTtJQUVaLE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQztJQUU5QixTQUFTLHFCQUFxQixDQUFDLE1BQWM7UUFDM0MsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDNUQsT0FBTyxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVELElBQUksTUFBTSxHQUEyQixxQkFBcUIsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUU1RSxJQUFJLE1BQU0sSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUMzQixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0QixDQUFDO0lBRUQsdUNBQXVDO0lBQ3ZDLE1BQU0sR0FBRyxxQkFBcUIsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUU5QyxJQUFJLE1BQU0sSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUMzQixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0QixDQUFDO0lBQ0QsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGludGVybmFsXG4gKiBAZGVwcmVjYXRlZCBVc2UgYGdldExpYlN0cmluZ0ZvckxvY2FsZWAgaW5zdGVhZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFN0cmluZ0ZvckxvY2FsZShcbiAgcmVzb3VyY2VzOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PixcbiAgcHJlZmVycmVkTG9jYWxlOiBzdHJpbmcsXG4gIG5hbWU6IHN0cmluZyxcbik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IGRlZmF1bHRMb2NhbGUgPSAnZW4tVVMnO1xuXG4gIGZ1bmN0aW9uIGdldFJlc291cmNlc0ZvckxvY2FsZShsb2NhbGU6IHN0cmluZyk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4ge1xuICAgIGNvbnN0IHBhcnNlZExvY2FsZSA9IGxvY2FsZS50b1VwcGVyQ2FzZSgpLnJlcGxhY2UoJ18nLCAnLScpO1xuICAgIHJldHVybiByZXNvdXJjZXNbcGFyc2VkTG9jYWxlXTtcbiAgfVxuXG4gIGxldCB2YWx1ZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSBnZXRSZXNvdXJjZXNGb3JMb2NhbGUocHJlZmVycmVkTG9jYWxlKTtcblxuICBpZiAodmFsdWVzICYmIHZhbHVlc1tuYW1lXSkge1xuICAgIHJldHVybiB2YWx1ZXNbbmFtZV07XG4gIH1cblxuICAvLyBBdHRlbXB0IHRvIGxvY2F0ZSBkZWZhdWx0IHJlc291cmNlcy5cbiAgdmFsdWVzID0gZ2V0UmVzb3VyY2VzRm9yTG9jYWxlKGRlZmF1bHRMb2NhbGUpO1xuXG4gIGlmICh2YWx1ZXMgJiYgdmFsdWVzW25hbWVdKSB7XG4gICAgcmV0dXJuIHZhbHVlc1tuYW1lXTtcbiAgfVxuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuIl19","// Using this class instead of the one found in `@skyux/core`\n// to avoid a circular dependency.\nexport class Format {\n    static formatText(format, ...args) {\n        return String(format).replace(/\\{(\\d+)\\}/g, function (match, capture) {\n            const argsIndex = parseInt(capture, 10);\n            return args[argsIndex] === undefined ? match : args[argsIndex];\n        });\n    }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2kxOG4vc3JjL2xpYi91dGlscy9mb3JtYXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsNkRBQTZEO0FBQzdELGtDQUFrQztBQUVsQyxNQUFNLE9BQU8sTUFBTTtJQUNWLE1BQU0sQ0FBQyxVQUFVLENBQUMsTUFBYyxFQUFFLEdBQUcsSUFBVztRQUNyRCxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQzNCLFlBQVksRUFDWixVQUFVLEtBQUssRUFBRSxPQUFPO1lBQ3RCLE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDeEMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNqRSxDQUFDLENBQ0YsQ0FBQztJQUNKLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8vIFVzaW5nIHRoaXMgY2xhc3MgaW5zdGVhZCBvZiB0aGUgb25lIGZvdW5kIGluIGBAc2t5dXgvY29yZWBcbi8vIHRvIGF2b2lkIGEgY2lyY3VsYXIgZGVwZW5kZW5jeS5cblxuZXhwb3J0IGNsYXNzIEZvcm1hdCB7XG4gIHB1YmxpYyBzdGF0aWMgZm9ybWF0VGV4dChmb3JtYXQ6IHN0cmluZywgLi4uYXJnczogYW55W10pOiBzdHJpbmcge1xuICAgIHJldHVybiBTdHJpbmcoZm9ybWF0KS5yZXBsYWNlKFxuICAgICAgL1xceyhcXGQrKVxcfS9nLFxuICAgICAgZnVuY3Rpb24gKG1hdGNoLCBjYXB0dXJlKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgYXJnc0luZGV4ID0gcGFyc2VJbnQoY2FwdHVyZSwgMTApO1xuICAgICAgICByZXR1cm4gYXJnc1thcmdzSW5kZXhdID09PSB1bmRlZmluZWQgPyBtYXRjaCA6IGFyZ3NbYXJnc0luZGV4XTtcbiAgICAgIH0sXG4gICAgKTtcbiAgfVxufVxuIl19","// #region imports\nimport { InjectionToken } from '@angular/core';\n// #endregion\n/**\n * @deprecated `SKY_LIB_RESOURCES_PROVIDERS` is no longer needed and will be removed in a future major version of SKY UX.\n * @internal\n */\nexport const SKY_LIB_RESOURCES_PROVIDERS = new InjectionToken('SKY_LIB_RESOURCES_PROVIDERS');\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliLXJlc291cmNlcy1wcm92aWRlcnMtdG9rZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvaTE4bi9zcmMvbGliL21vZHVsZXMvaTE4bi9saWItcmVzb3VyY2VzLXByb3ZpZGVycy10b2tlbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxrQkFBa0I7QUFDbEIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUkvQyxhQUFhO0FBRWI7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUcsSUFBSSxjQUFjLENBRTNELDZCQUE2QixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyAjcmVnaW9uIGltcG9ydHNcbmltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFNreUxpYlJlc291cmNlc1Byb3ZpZGVyIH0gZnJvbSAnLi9saWItcmVzb3VyY2VzLXByb3ZpZGVyJztcblxuLy8gI2VuZHJlZ2lvblxuXG4vKipcbiAqIEBkZXByZWNhdGVkIGBTS1lfTElCX1JFU09VUkNFU19QUk9WSURFUlNgIGlzIG5vIGxvbmdlciBuZWVkZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSBtYWpvciB2ZXJzaW9uIG9mIFNLWSBVWC5cbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgY29uc3QgU0tZX0xJQl9SRVNPVVJDRVNfUFJPVklERVJTID0gbmV3IEluamVjdGlvblRva2VuPFxuICBTa3lMaWJSZXNvdXJjZXNQcm92aWRlcltdXG4+KCdTS1lfTElCX1JFU09VUkNFU19QUk9WSURFUlMnKTtcbiJdfQ==","import { Injectable } from '@angular/core';\nimport { of as observableOf } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nconst SKY_APP_LOCALE_PROVIDER_DEFAULT_LOCALE = 'en-US';\nexport class SkyAppLocaleProvider {\n    get defaultLocale() {\n        return SKY_APP_LOCALE_PROVIDER_DEFAULT_LOCALE;\n    }\n    getLocaleInfo() {\n        return observableOf({\n            locale: this.defaultLocale,\n        });\n    }\n    static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: SkyAppLocaleProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n    static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: SkyAppLocaleProvider, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: SkyAppLocaleProvider, decorators: [{\n            type: Injectable,\n            args: [{\n                    providedIn: 'root',\n                }]\n        }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxlLXByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2kxOG4vc3JjL2xpYi9tb2R1bGVzL2kxOG4vbG9jYWxlLXByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFjLEVBQUUsSUFBSSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBSXRELE1BQU0sc0NBQXNDLEdBQUcsT0FBTyxDQUFDO0FBS3ZELE1BQU0sT0FBTyxvQkFBb0I7SUFDL0IsSUFBVyxhQUFhO1FBQ3RCLE9BQU8sc0NBQXNDLENBQUM7SUFDaEQsQ0FBQztJQUVNLGFBQWE7UUFDbEIsT0FBTyxZQUFZLENBQUM7WUFDbEIsTUFBTSxFQUFFLElBQUksQ0FBQyxhQUFhO1NBQzNCLENBQUMsQ0FBQztJQUNMLENBQUM7OEdBVFUsb0JBQW9CO2tIQUFwQixvQkFBb0IsY0FGbkIsTUFBTTs7MkZBRVAsb0JBQW9CO2tCQUhoQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgYXMgb2JzZXJ2YWJsZU9mIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFNreUFwcExvY2FsZUluZm8gfSBmcm9tICcuL2xvY2FsZS1pbmZvJztcblxuY29uc3QgU0tZX0FQUF9MT0NBTEVfUFJPVklERVJfREVGQVVMVF9MT0NBTEUgPSAnZW4tVVMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgU2t5QXBwTG9jYWxlUHJvdmlkZXIge1xuICBwdWJsaWMgZ2V0IGRlZmF1bHRMb2NhbGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gU0tZX0FQUF9MT0NBTEVfUFJPVklERVJfREVGQVVMVF9MT0NBTEU7XG4gIH1cblxuICBwdWJsaWMgZ2V0TG9jYWxlSW5mbygpOiBPYnNlcnZhYmxlPFNreUFwcExvY2FsZUluZm8+IHtcbiAgICByZXR1cm4gb2JzZXJ2YWJsZU9mKHtcbiAgICAgIGxvY2FsZTogdGhpcy5kZWZhdWx0TG9jYWxlLFxuICAgIH0pO1xuICB9XG59XG4iXX0=","import { Injectable } from '@angular/core';\nimport { of as observableOf } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nexport class SkyAppResourceNameProvider {\n    getResourceName(name) {\n        return observableOf(name);\n    }\n    static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: SkyAppResourceNameProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n    static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: SkyAppResourceNameProvider }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: SkyAppResourceNameProvider, decorators: [{\n            type: Injectable\n        }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2UtbmFtZS1wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9pMThuL3NyYy9saWIvbW9kdWxlcy9pMThuL3Jlc291cmNlLW5hbWUtcHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQWMsRUFBRSxJQUFJLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFHdEQsTUFBTSxPQUFPLDBCQUEwQjtJQUM5QixlQUFlLENBQUMsSUFBWTtRQUNqQyxPQUFPLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1QixDQUFDOzhHQUhVLDBCQUEwQjtrSEFBMUIsMEJBQTBCOzsyRkFBMUIsMEJBQTBCO2tCQUR0QyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiBhcyBvYnNlcnZhYmxlT2YgfSBmcm9tICdyeGpzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFNreUFwcFJlc291cmNlTmFtZVByb3ZpZGVyIHtcbiAgcHVibGljIGdldFJlc291cmNlTmFtZShuYW1lOiBzdHJpbmcpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIHJldHVybiBvYnNlcnZhYmxlT2YobmFtZSk7XG4gIH1cbn1cbiJdfQ==","// #region imports\nimport { Inject, Injectable, Optional } from '@angular/core';\nimport { forkJoin, of as observableOf } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { Format } from '../../utils/format';\nimport { getLibStringForLocale } from './get-lib-string-for-locale';\nimport { SKY_LIB_RESOURCES_PROVIDERS } from './lib-resources-providers-token';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"./locale-provider\";\nimport * as i2 from \"./resource-name-provider\";\nexport class SkyLibResourcesService {\n    static { this.resources = {}; }\n    #localeProvider;\n    #providers;\n    #resourceNameProvider;\n    constructor(localeProvider, providers, resourceNameProvider) {\n        this.#localeProvider = localeProvider;\n        this.#providers = providers;\n        this.#resourceNameProvider = resourceNameProvider;\n    }\n    /**\n     * Adds locale resources to be used by library components.\n     */\n    static addResources(localeResources) {\n        for (const [locale, resources] of Object.entries(localeResources)) {\n            SkyLibResourcesService.resources[locale] ||= {};\n            SkyLibResourcesService.resources[locale] = {\n                ...SkyLibResourcesService.resources[locale],\n                ...resources,\n            };\n        }\n    }\n    /**\n     * Gets a resource string based on its name.\n     * @param name The name of the resource string.\n     * @param args Any templated args.\n     */\n    getString(name, ...args) {\n        const mappedNameObs = this.#resourceNameProvider\n            ? this.#resourceNameProvider.getResourceName(name)\n            : observableOf(name);\n        const localeInfoObs = this.#localeProvider.getLocaleInfo();\n        return forkJoin([mappedNameObs, localeInfoObs]).pipe(map(([mappedName, localeInfo]) => this.getStringForLocale(localeInfo, mappedName, ...args)));\n    }\n    /**\n     * Gets a Resource String Dictionary.\n     *\n     * This is similar to forkJoin's dictionary syntax.\n     *\n     * @param dictionary a Record of **SomeObjectKey** to a Value that is either\n     *   - (1) **ResourceKey**\n     *   - (2) or an **Array** where the first item is the **ResourceKey** and the other items are template args.\n     * @return an `Observable` of a resource string dictionary in the same shape as the passed dictionary.\n     *\n     * @example\n     * ```typescript\n     * service.getStrings({\n     *    simpleKey: 'hello',\n     *    arraySyntax: ['hi'],\n     *    arraySyntaxWithTemplateArgs: ['template', 'a', 'b'],\n     * }\n     * ```\n     */\n    getStrings(dictionary) {\n        const resources$ = {};\n        for (const objKey of Object.keys(dictionary)) {\n            const resource = dictionary[objKey];\n            if (typeof resource === 'string') {\n                resources$[objKey] = this.getString(resource);\n            }\n            else {\n                const [key, ...templateItems] = resource;\n                resources$[objKey] = this.getString(key, ...templateItems);\n            }\n        }\n        return forkJoin(resources$);\n    }\n    getStringForLocale(info, name, ...args) {\n        let value;\n        // First, look in the static 'resources' property.\n        value = getLibStringForLocale(SkyLibResourcesService.resources, info.locale, name);\n        // If it's not found there, look in the providers.\n        if (value === undefined && this.#providers) {\n            for (const provider of this.#providers) {\n                const s = provider.getString(info, name);\n                if (s !== undefined) {\n                    value = s;\n                    break;\n                }\n            }\n        }\n        if (value !== undefined) {\n            return Format.formatText(value, ...args);\n        }\n        return name;\n    }\n    static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: SkyLibResourcesService, deps: [{ token: i1.SkyAppLocaleProvider }, { token: SKY_LIB_RESOURCES_PROVIDERS, optional: true }, { token: i2.SkyAppResourceNameProvider, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }\n    static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: SkyLibResourcesService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: SkyLibResourcesService, decorators: [{\n            type: Injectable,\n            args: [{\n                    providedIn: 'root',\n                }]\n        }], ctorParameters: () => [{ type: i1.SkyAppLocaleProvider }, { type: undefined, decorators: [{\n                    type: Optional\n                }, {\n                    type: Inject,\n                    args: [SKY_LIB_RESOURCES_PROVIDERS]\n                }] }, { type: i2.SkyAppResourceNameProvider, decorators: [{\n                    type: Optional\n                }] }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliLXJlc291cmNlcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2kxOG4vc3JjL2xpYi9tb2R1bGVzL2kxOG4vbGliLXJlc291cmNlcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGtCQUFrQjtBQUNsQixPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFN0QsT0FBTyxFQUFjLFFBQVEsRUFBRSxFQUFFLElBQUksWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFNUMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFHcEUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0saUNBQWlDLENBQUM7Ozs7QUFjOUUsTUFBTSxPQUFPLHNCQUFzQjthQUNsQixjQUFTLEdBQW9DLEVBQUUsQUFBdEMsQ0FBdUM7SUFFL0QsZUFBZSxDQUF1QjtJQUN0QyxVQUFVLENBQXdDO0lBQ2xELHFCQUFxQixDQUF5QztJQUU5RCxZQUNFLGNBQW9DLEVBR3BDLFNBQXFDLEVBQ3pCLG9CQUFpRDtRQUU3RCxJQUFJLENBQUMsZUFBZSxHQUFHLGNBQWMsQ0FBQztRQUN0QyxJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQztRQUM1QixJQUFJLENBQUMscUJBQXFCLEdBQUcsb0JBQW9CLENBQUM7SUFDcEQsQ0FBQztJQUVEOztPQUVHO0lBQ0ksTUFBTSxDQUFDLFlBQVksQ0FDeEIsZUFBZ0Q7UUFFaEQsS0FBSyxNQUFNLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLEVB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QVYxQixzQkFBc0IsY0FGckIsTUFBTTs7MkZBRVAsc0JBQXNCO2tCQUhsQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBVUksUUFBUTs7MEJBQ1IsTUFBTTsyQkFBQywyQkFBMkI7OzBCQUVsQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiLy8gI3JlZ2lvbiBpbXBvcnRzXG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE9ic2VydmFibGUsIGZvcmtKb2luLCBvZiBhcyBvYnNlcnZhYmxlT2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgRm9ybWF0IH0gZnJvbSAnLi4vLi4vdXRpbHMvZm9ybWF0JztcblxuaW1wb3J0IHsgZ2V0TGliU3RyaW5nRm9yTG9jYWxlIH0gZnJvbSAnLi9nZXQtbGliLXN0cmluZy1mb3ItbG9jYWxlJztcbmltcG9ydCB7IFNreUxpYlJlc291cmNlcyB9IGZyb20gJy4vbGliLXJlc291cmNlcyc7XG5pbXBvcnQgeyBTa3lMaWJSZXNvdXJjZXNQcm92aWRlciB9IGZyb20gJy4vbGliLXJlc291cmNlcy1wcm92aWRlcic7XG5pbXBvcnQgeyBTS1lfTElCX1JFU09VUkNFU19QUk9WSURFUlMgfSBmcm9tICcuL2xpYi1yZXNvdXJjZXMtcHJvdmlkZXJzLXRva2VuJztcbmltcG9ydCB7IFNreUFwcExvY2FsZUluZm8gfSBmcm9tICcuL2xvY2FsZS1pbmZvJztcbmltcG9ydCB7IFNreUFwcExvY2FsZVByb3ZpZGVyIH0gZnJvbSAnLi9sb2NhbGUtcHJvdmlkZXInO1xuaW1wb3J0IHsgU2t5QXBwUmVzb3VyY2VOYW1lUHJvdmlkZXIgfSBmcm9tICcuL3Jlc291cmNlLW5hbWUtcHJvdmlkZXInO1xuXG4vLyAjZW5kcmVnaW9uXG5cbnR5cGUgUmVzb3VyY2VLZXkgPSBzdHJpbmc7XG50eXBlIFRlbXBsYXRlZFJlc291cmNlID0gW1Jlc291cmNlS2V5LCAuLi5hbnlbXV07XG50eXBlIFJlc291cmNlRGljdGlvbmFyeSA9IFJlY29yZDxzdHJpbmcsIFJlc291cmNlS2V5IHwgVGVtcGxhdGVkUmVzb3VyY2U+O1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgU2t5TGliUmVzb3VyY2VzU2VydmljZSB7XG4gIHByaXZhdGUgc3RhdGljIHJlc291cmNlczogUmVjb3JkPHN0cmluZywgU2t5TGliUmVzb3VyY2VzPiA9IHt9O1xuXG4gICNsb2NhbGVQcm92aWRlcjogU2t5QXBwTG9jYWxlUHJvdmlkZXI7XG4gICNwcm92aWRlcnM6IFNreUxpYlJlc291cmNlc1Byb3ZpZGVyW10gfCB1bmRlZmluZWQ7XG4gICNyZXNvdXJjZU5hbWVQcm92aWRlcjogU2t5QXBwUmVzb3VyY2VOYW1lUHJvdmlkZXIgfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgbG9jYWxlUHJvdmlkZXI6IFNreUFwcExvY2FsZVByb3ZpZGVyLFxuICAgIEBPcHRpb25hbCgpXG4gICAgQEluamVjdChTS1lfTElCX1JFU09VUkNFU19QUk9WSURFUlMpXG4gICAgcHJvdmlkZXJzPzogU2t5TGliUmVzb3VyY2VzUHJvdmlkZXJbXSxcbiAgICBAT3B0aW9uYWwoKSByZXNvdXJjZU5hbWVQcm92aWRlcj86IFNreUFwcFJlc291cmNlTmFtZVByb3ZpZGVyLFxuICApIHtcbiAgICB0aGlzLiNsb2NhbGVQcm92aWRlciA9IGxvY2FsZVByb3ZpZGVyO1xuICAgIHRoaXMuI3Byb3ZpZGVycyA9IHByb3ZpZGVycztcbiAgICB0aGlzLiNyZXNvdXJjZU5hbWVQcm92aWRlciA9IHJlc291cmNlTmFtZVByb3ZpZGVyO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgbG9jYWxlIHJlc291cmNlcyB0byBiZSB1c2VkIGJ5IGxpYnJhcnkgY29tcG9uZW50cy5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgYWRkUmVzb3VyY2VzKFxuICAgIGxvY2FsZVJlc291cmNlczogUmVjb3JkPHN0cmluZywgU2t5TGliUmVzb3VyY2VzPixcbiAgKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBbbG9jYWxlLCByZXNvdXJjZXNdIG9mIE9iamVjdC5lbnRyaWVzKGxvY2FsZVJlc291cmNlcykpIHtcbiAgICAgIFNreUxpYlJlc291cmNlc1NlcnZpY2UucmVzb3VyY2VzW2xvY2FsZV0gfHw9IHt9O1xuICAgICAgU2t5TGliUmVzb3VyY2VzU2VydmljZS5yZXNvdXJjZXNbbG9jYWxlXSA9IHtcbiAgICAgICAgLi4uU2t5TGliUmVzb3VyY2VzU2VydmljZS5yZXNvdXJjZXNbbG9jYWxlXSxcbiAgICAgICAgLi4ucmVzb3VyY2VzLFxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0cyBhIHJlc291cmNlIHN0cmluZyBiYXNlZCBvbiBpdHMgbmFtZS5cbiAgICogQHBhcmFtIG5hbWUgVGhlIG5hbWUgb2YgdGhlIHJlc291cmNlIHN0cmluZy5cbiAgICogQHBhcmFtIGFyZ3MgQW55IHRlbXBsYXRlZCBhcmdzLlxuICAgKi9cbiAgcHVibGljIGdldFN0cmluZyhuYW1lOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICBjb25zdCBtYXBwZWROYW1lT2JzID0gdGhpcy4jcmVzb3VyY2VOYW1lUHJvdmlkZXJcbiAgICAgID8gdGhpcy4jcmVzb3VyY2VOYW1lUHJvdmlkZXIuZ2V0UmVzb3VyY2VOYW1lKG5hbWUpXG4gICAgICA6IG9ic2VydmFibGVPZihuYW1lKTtcblxuICAgIGNvbnN0IGxvY2FsZUluZm9PYnMgPSB0aGlzLiNsb2NhbGVQcm92aWRlci5nZXRMb2NhbGVJbmZvKCk7XG5cbiAgICByZXR1cm4gZm9ya0pvaW4oW21hcHBlZE5hbWVPYnMsIGxvY2FsZUluZm9PYnNdKS5waXBlKFxuICAgICAgbWFwKChbbWFwcGVkTmFtZSwgbG9jYWxlSW5mb10pID0+XG4gICAgICAgIHRoaXMuZ2V0U3RyaW5nRm9yTG9jYWxlKGxvY2FsZUluZm8sIG1hcHBlZE5hbWUsIC4uLmFyZ3MpLFxuICAgICAgKSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgYSBSZXNvdXJjZSBTdHJpbmcgRGljdGlvbmFyeS5cbiAgICpcbiAgICogVGhpcyBpcyBzaW1pbGFyIHRvIGZvcmtKb2luJ3MgZGljdGlvbmFyeSBzeW50YXguXG4gICAqXG4gICAqIEBwYXJhbSBkaWN0aW9uYXJ5IGEgUmVjb3JkIG9mICoqU29tZU9iamVjdEtleSoqIHRvIGEgVmFsdWUgdGhhdCBpcyBlaXRoZXJcbiAgICogICAtICgxKSAqKlJlc291cmNlS2V5KipcbiAgICogICAtICgyKSBvciBhbiAqKkFycmF5Kiogd2hlcmUgdGhlIGZpcnN0IGl0ZW0gaXMgdGhlICoqUmVzb3VyY2VLZXkqKiBhbmQgdGhlIG90aGVyIGl0ZW1zIGFyZSB0ZW1wbGF0ZSBhcmdzLlxuICAgKiBAcmV0dXJuIGFuIGBPYnNlcnZhYmxlYCBvZiBhIHJlc291cmNlIHN0cmluZyBkaWN0aW9uYXJ5IGluIHRoZSBzYW1lIHNoYXBlIGFzIHRoZSBwYXNzZWQgZGljdGlvbmFyeS5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBzZXJ2aWNlLmdldFN0cmluZ3Moe1xuICAgKiAgICBzaW1wbGVLZXk6ICdoZWxsbycsXG4gICAqICAgIGFycmF5U3ludGF4OiBbJ2hpJ10sXG4gICAqICAgIGFycmF5U3ludGF4V2l0aFRlbXBsYXRlQXJnczogWyd0ZW1wbGF0ZScsICdhJywgJ2InXSxcbiAgICogfVxuICAgKiBgYGBcbiAgICovXG4gIHB1YmxpYyBnZXRTdHJpbmdzPFQgZXh0ZW5kcyBSZXNvdXJjZURpY3Rpb25hcnk+KFxuICAgIGRpY3Rpb25hcnk6IFQsXG4gICk6IE9ic2VydmFibGU8eyBbSyBpbiBrZXlvZiBUXTogc3RyaW5nIH0+IHtcbiAgICBjb25zdCByZXNvdXJjZXMkOiBSZWNvcmQ8c3RyaW5nLCBPYnNlcnZhYmxlPHN0cmluZz4+ID0ge307XG5cbiAgICBmb3IgKGNvbnN0IG9iaktleSBvZiBPYmplY3Qua2V5cyhkaWN0aW9uYXJ5KSkge1xuICAgICAgY29uc3QgcmVzb3VyY2U6IHN0cmluZyB8IFtzdHJpbmcsIC4uLmFueVtdXSA9IGRpY3Rpb25hcnlbb2JqS2V5XTtcblxuICAgICAgaWYgKHR5cGVvZiByZXNvdXJjZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmVzb3VyY2VzJFtvYmpLZXldID0gdGhpcy5nZXRTdHJpbmcocmVzb3VyY2UpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgW2tleSwgLi4udGVtcGxhdGVJdGVtc10gPSByZXNvdXJjZTtcbiAgICAgICAgcmVzb3VyY2VzJFtvYmpLZXldID0gdGhpcy5nZXRTdHJpbmcoa2V5LCAuLi50ZW1wbGF0ZUl0ZW1zKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZm9ya0pvaW4ocmVzb3VyY2VzJCkgYXMgT2JzZXJ2YWJsZTx7IFtLIGluIGtleW9mIFRdOiBzdHJpbmcgfT47XG4gIH1cblxuICBwdWJsaWMgZ2V0U3RyaW5nRm9yTG9jYWxlKFxuICAgIGluZm86IFNreUFwcExvY2FsZUluZm8sXG4gICAgbmFtZTogc3RyaW5nLFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IHN0cmluZyB7XG4gICAgbGV0IHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgICAvLyBGaXJzdCwgbG9vayBpbiB0aGUgc3RhdGljICdyZXNvdXJjZXMnIHByb3BlcnR5LlxuICAgIHZhbHVlID0gZ2V0TGliU3RyaW5nRm9yTG9jYWxlKFxuICAgICAgU2t5TGliUmVzb3VyY2VzU2VydmljZS5yZXNvdXJjZXMsXG4gICAgICBpbmZvLmxvY2FsZSxcbiAgICAgIG5hbWUsXG4gICAgKTtcblxuICAgIC8vIElmIGl0J3Mgbm90IGZvdW5kIHRoZXJlLCBsb29rIGluIHRoZSBwcm92aWRlcnMuXG4gICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQgJiYgdGhpcy4jcHJvdmlkZXJzKSB7XG4gICAgICBmb3IgKGNvbnN0IHByb3ZpZGVyIG9mIHRoaXMuI3Byb3ZpZGVycykge1xuICAgICAgICBjb25zdCBzID0gcHJvdmlkZXIuZ2V0U3RyaW5nKGluZm8sIG5hbWUpO1xuICAgICAgICBpZiAocyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdmFsdWUgPSBzO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBGb3JtYXQuZm9ybWF0VGV4dCh2YWx1ZSwgLi4uYXJncyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5hbWU7XG4gIH1cbn1cbiJdfQ==","// #region imports\nimport { Pipe, } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"./lib-resources.service\";\n// #endregion\nexport class SkyLibResourcesPipe {\n    #ngUnsubscribe = new Subject();\n    #resourceCache = {};\n    #changeDetector;\n    #resourcesService;\n    constructor(changeDetector, resourcesService) {\n        this.#changeDetector = changeDetector;\n        this.#resourcesService = resourcesService;\n    }\n    transform(name, ...args) {\n        const cacheKey = name + JSON.stringify(args);\n        if (!(cacheKey in this.#resourceCache)) {\n            this.#resourcesService\n                .getString(name, ...args)\n                .pipe(takeUntil(this.#ngUnsubscribe))\n                .subscribe((value) => {\n                this.#resourceCache[cacheKey] = value;\n                this.#changeDetector.markForCheck();\n            });\n        }\n        return this.#resourceCache[cacheKey];\n    }\n    ngOnDestroy() {\n        this.#ngUnsubscribe.next();\n        this.#ngUnsubscribe.complete();\n    }\n    static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: SkyLibResourcesPipe, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.SkyLibResourcesService }], target: i0.ɵɵFactoryTarget.Pipe }); }\n    static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.3.0\", ngImport: i0, type: SkyLibResourcesPipe, isStandalone: true, name: \"skyLibResources\", pure: false }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: SkyLibResourcesPipe, decorators: [{\n            type: Pipe,\n            args: [{\n                    name: 'skyLibResources',\n                    pure: false,\n                }]\n        }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.SkyLibResourcesService }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliLXJlc291cmNlcy5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2kxOG4vc3JjL2xpYi9tb2R1bGVzL2kxOG4vbGliLXJlc291cmNlcy5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGtCQUFrQjtBQUNsQixPQUFPLEVBR0wsSUFBSSxHQUVMLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFJM0MsYUFBYTtBQU1iLE1BQU0sT0FBTyxtQkFBbUI7SUFDOUIsY0FBYyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFFckMsY0FBYyxHQUF3QixFQUFFLENBQUM7SUFFekMsZUFBZSxDQUFvQjtJQUNuQyxpQkFBaUIsQ0FBeUI7SUFFMUMsWUFDRSxjQUFpQyxFQUNqQyxnQkFBd0M7UUFFeEMsSUFBSSxDQUFDLGVBQWUsR0FBRyxjQUFjLENBQUM7UUFDdEMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLGdCQUFnQixDQUFDO0lBQzVDLENBQUM7SUFFTSxTQUFTLENBQUMsSUFBWSxFQUFFLEdBQUcsSUFBVztRQUMzQyxNQUFNLFFBQVEsR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUU3QyxJQUFJLENBQUMsQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7WUFDdkMsSUFBSSxDQUFDLGlCQUFpQjtpQkFDbkIsU0FBUyxDQUFDLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQztpQkFDeEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7aUJBQ3BDLFNBQVMsQ0FBQyxDQUFDLEtBQWEsRUFBRSxFQUFFO2dCQUMzQixJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEtBQUssQ0FBQztnQkFDdEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN0QyxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2pDLENBQUM7OEdBbkNVLG1CQUFtQjs0R0FBbkIsbUJBQW1COzsyRkFBbkIsbUJBQW1CO2tCQUovQixJQUFJO21CQUFDO29CQUNKLElBQUksRUFBRSxpQkFBaUI7b0JBQ3ZCLElBQUksRUFBRSxLQUFLO2lCQUNaIiwic291cmNlc0NvbnRlbnQiOlsiLy8gI3JlZ2lvbiBpbXBvcnRzXG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgT25EZXN0cm95LFxuICBQaXBlLFxuICBQaXBlVHJhbnNmb3JtLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBTa3lMaWJSZXNvdXJjZXNTZXJ2aWNlIH0gZnJvbSAnLi9saWItcmVzb3VyY2VzLnNlcnZpY2UnO1xuXG4vLyAjZW5kcmVnaW9uXG5cbkBQaXBlKHtcbiAgbmFtZTogJ3NreUxpYlJlc291cmNlcycsXG4gIHB1cmU6IGZhbHNlLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lMaWJSZXNvdXJjZXNQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSwgT25EZXN0cm95IHtcbiAgI25nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICNyZXNvdXJjZUNhY2hlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG5cbiAgI2NoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZjtcbiAgI3Jlc291cmNlc1NlcnZpY2U6IFNreUxpYlJlc291cmNlc1NlcnZpY2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHJlc291cmNlc1NlcnZpY2U6IFNreUxpYlJlc291cmNlc1NlcnZpY2UsXG4gICkge1xuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yID0gY2hhbmdlRGV0ZWN0b3I7XG4gICAgdGhpcy4jcmVzb3VyY2VzU2VydmljZSA9IHJlc291cmNlc1NlcnZpY2U7XG4gIH1cblxuICBwdWJsaWMgdHJhbnNmb3JtKG5hbWU6IHN0cmluZywgLi4uYXJnczogYW55W10pOiBzdHJpbmcge1xuICAgIGNvbnN0IGNhY2hlS2V5ID0gbmFtZSArIEpTT04uc3RyaW5naWZ5KGFyZ3MpO1xuXG4gICAgaWYgKCEoY2FjaGVLZXkgaW4gdGhpcy4jcmVzb3VyY2VDYWNoZSkpIHtcbiAgICAgIHRoaXMuI3Jlc291cmNlc1NlcnZpY2VcbiAgICAgICAgLmdldFN0cmluZyhuYW1lLCAuLi5hcmdzKVxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAgIC5zdWJzY3JpYmUoKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICB0aGlzLiNyZXNvdXJjZUNhY2hlW2NhY2hlS2V5XSA9IHZhbHVlO1xuICAgICAgICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy4jcmVzb3VyY2VDYWNoZVtjYWNoZUtleV07XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICB9XG59XG4iXX0=","import { Inject, Injectable, Optional, forwardRef } from '@angular/core';\nimport { SkyAppAssetsService } from '@skyux/assets';\nimport { ReplaySubject, forkJoin, of as observableOf, share, } from 'rxjs';\nimport { catchError, map, switchMap } from 'rxjs/operators';\nimport { Format } from '../../utils/format';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common/http\";\nimport * as i2 from \"./locale-provider\";\nimport * as i3 from \"./resource-name-provider\";\nimport * as i4 from \"@skyux/assets\";\nconst defaultResources = {};\nfunction getDefaultObs() {\n    return observableOf(defaultResources);\n}\n/**\n * An Angular service for interacting with resource strings.\n */\nexport class SkyAppResourcesService {\n    #resourcesObsCache = {};\n    #httpObsCache = {};\n    #http;\n    #assets;\n    #localeProvider;\n    #resourceNameProvider;\n    constructor(http, assets, localeProvider, resourceNameProvider) {\n        this.#http = http;\n        this.#assets = assets;\n        // Locale provider is provided at `root`. The `Optional` here is for unit test compatibility.\n        // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n        this.#localeProvider = localeProvider;\n        this.#resourceNameProvider = resourceNameProvider;\n    }\n    /**\n     * Gets a resource string based on its name.\n     * @param name The name of the resource string.\n     * @param args Any templated args.\n     */\n    getString(name, ...args) {\n        const localeObs = this.#localeProvider.getLocaleInfo();\n        return this.#getStringForLocaleInfoObservable(localeObs, name, ...args);\n    }\n    /**\n     * Gets a Resource String Dictionary.\n     *\n     * This is similar to forkJoin's dictionary syntax.\n     *\n     * @param dictionary a Record of **SomeObjectKey** to a Value that is either\n     *   - (1) **ResourceKey**\n     *   - (2) or an **Array** where the first item is the **ResourceKey** and the other items are template args.\n     * @return an `Observable` of a resource string dictionary in the same shape as the passed dictionary.\n     *\n     * @example\n     * ```typescript\n     * service.getStrings({\n     *    simpleKey: 'hello',\n     *    arraySyntax: ['hi'],\n     *    arraySyntaxWithTemplateArgs: ['template', 'a', 'b'],\n     * }\n     * ```\n     */\n    getStrings(dictionary) {\n        const resources$ = {};\n        for (const objKey of Object.keys(dictionary)) {\n            const resource = dictionary[objKey];\n            if (typeof resource === 'string') {\n                resources$[objKey] = this.getString(resource);\n            }\n            else {\n                const [key, ...templateItems] = resource;\n                resources$[objKey] = this.getString(key, ...templateItems);\n            }\n        }\n        return forkJoin(resources$);\n    }\n    /**\n     * Gets a resource string for a specific locale based on its name.\n     * @param localeInfo The locale to use.\n     * @param name The name of the resource string.\n     * @param args Any templated args.\n     */\n    getStringForLocale(localeInfo, name, ...args) {\n        return this.#getStringForLocaleInfoObservable(observableOf(localeInfo), name, ...args);\n    }\n    #getStringForLocaleInfoObservable(localeInfoObs, name, ...args) {\n        const resourcesObs = localeInfoObs.pipe(switchMap((localeInfo) => {\n            let obs;\n            // Use default locale if one not provided\n            const locale = localeInfo.locale || this.#localeProvider.defaultLocale;\n            if (this.#resourcesObsCache[locale]) {\n                return this.#resourcesObsCache[locale];\n            }\n            const resourcesUrl = this.#getUrlForLocale(locale) ||\n                // Try falling back to the non-region-specific language.\n                this.#getUrlForLocale(locale.substring(0, 2)) ||\n                // Finally fall back to the default locale.\n                this.#getUrlForLocale(this.#localeProvider.defaultLocale);\n            if (resourcesUrl) {\n                if (!this.#httpObsCache[resourcesUrl]) {\n                    this.#httpObsCache[resourcesUrl] = this.#http\n                        .get(resourcesUrl)\n                        .pipe(share({\n                        connector: () => new ReplaySubject(1),\n                        resetOnError: false,\n                        resetOnComplete: false,\n                        resetOnRefCountZero: false,\n                    }), catchError(() => {\n                        // The resource file for the specified locale failed to load;\n                        // fall back to the default locale if it differs from the specified\n                        // locale.\n                        const defaultResourcesUrl = this.#getUrlForLocale(this.#localeProvider.defaultLocale);\n                        if (defaultResourcesUrl &&\n                            defaultResourcesUrl !== resourcesUrl) {\n                            return this.#http.get(defaultResourcesUrl);\n                        }\n                        return getDefaultObs();\n                    }));\n                }\n                obs = this.#httpObsCache[resourcesUrl];\n            }\n            else {\n                obs = getDefaultObs();\n            }\n            this.#resourcesObsCache[locale] = obs;\n            return obs;\n        }), \n        // Don't keep trying after a failed attempt to load resources, or else\n        // impure pipes like resources pipe that call this service will keep\n        // firing requests indefinitely every few milliseconds.\n        catchError(() => getDefaultObs()));\n        const mappedNameObs = this.#resourceNameProvider\n            ? this.#resourceNameProvider.getResourceName(name)\n            : observableOf(name);\n        return forkJoin([mappedNameObs, resourcesObs]).pipe(map(([mappedName, resources]) => {\n            let resource = undefined;\n            if (mappedName in resources) {\n                resource = resources[mappedName];\n            }\n            else if (name in resources) {\n                resource = resources[name];\n            }\n            if (resource) {\n                return Format.formatText(resource.message, ...args);\n            }\n            return name;\n        }));\n    }\n    #getUrlForLocale(locale) {\n        return this.#assets?.getUrl(`locales/resources_${locale.replace('-', '_')}.json`);\n    }\n    static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: SkyAppResourcesService, deps: [{ token: i1.HttpClient }, { token: forwardRef(() => SkyAppAssetsService), optional: true }, { token: i2.SkyAppLocaleProvider, optional: true }, { token: i3.SkyAppResourceNameProvider, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }\n    static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: SkyAppResourcesService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: SkyAppResourcesService, decorators: [{\n            type: Injectable,\n            args: [{\n                    providedIn: 'root',\n                }]\n        }], ctorParameters: () => [{ type: i1.HttpClient }, { type: i4.SkyAppAssetsService, decorators: [{\n                    type: Optional\n                }, {\n                    type: Inject,\n                    args: [forwardRef(() => SkyAppAssetsService)]\n                }] }, { type: i2.SkyAppLocaleProvider, decorators: [{\n                    type: Optional\n                }] }, { type: i3.SkyAppResourceNameProvider, decorators: [{\n                    type: Optional\n                }] }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2VzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvaTE4bi9zcmMvbGliL21vZHVsZXMvaTE4bi9yZXNvdXJjZXMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVwRCxPQUFPLEVBRUwsYUFBYSxFQUNiLFFBQVEsRUFDUixFQUFFLElBQUksWUFBWSxFQUNsQixLQUFLLEdBQ04sTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU1RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7Ozs7OztBQVc1QyxNQUFNLGdCQUFnQixHQUFvQixFQUFFLENBQUM7QUFFN0MsU0FBUyxhQUFhO0lBQ3BCLE9BQU8sWUFBWSxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFDeEMsQ0FBQztBQUVEOztHQUVHO0FBSUgsTUFBTSxPQUFPLHNCQUFzQjtJQUNqQyxrQkFBa0IsR0FBZ0QsRUFBRSxDQUFDO0lBQ3JFLGFBQWEsR0FBZ0QsRUFBRSxDQUFDO0lBRWhFLEtBQUssQ0FBYTtJQUNsQixPQUFPLENBQWtDO0lBQ3pDLGVBQWUsQ0FBdUI7SUFDdEMscUJBQXFCLENBQXlDO0lBRTlELFlBQ0UsSUFBZ0IsRUFHaEIsTUFBMkIsRUFDZixjQUFvQyxFQUNwQyxvQkFBZ0Q7UUFFNUQsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDbEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDdEIsNkZBQTZGO1FBQzdGLG9FQUFvRTtRQUNw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QUMsQ0FBQyxVQUFVLEVBQUUsU0FBUyxDQUFDLEVBQVUsRUFBRTtZQUN0QyxJQUFJLFFBQVEsR0FBb0MsU0FBUyxDQUFDO1lBRTFELElBQUksVUFBVSxJQUFJLFNBQVMsRUFBRSxDQUFDO2dCQUM1QixRQUFRLEdBQUcsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ25DLENBQUM7aUJBQU0sSUFBSSxJQUFJLElBQUksU0FBUyxFQUFFLENBQUM7Z0JBQzdCLFFBQVEsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDN0IsQ0FBQztZQUVELElBQUksUUFBUSxFQUFFLENBQUM7Z0JBQ2IsT0FBTyxNQUFNLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztZQUN0RCxDQUFDO1lBRUQsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVELGdCQUFnQixDQUFDLE1BQWM7UUFDN0IsT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FDekIscUJBQXFCLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxPQUFPLENBQ3JELENBQUM7SUFDSixDQUFDOzhHQTFMVSxzQkFBc0IsNENBWXZCLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQztrSEFacEMsc0JBQXNCLGNBRnJCLE1BQU07OzJGQUVQLHNCQUFzQjtrQkFIbEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQVlJLFFBQVE7OzBCQUNSLE1BQU07MkJBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLG1CQUFtQixDQUFDOzswQkFFNUMsUUFBUTs7MEJBQ1IsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIE9wdGlvbmFsLCBmb3J3YXJkUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTa3lBcHBBc3NldHNTZXJ2aWNlIH0gZnJvbSAnQHNreXV4L2Fzc2V0cyc7XG5cbmltcG9ydCB7XG4gIE9ic2VydmFibGUsXG4gIFJlcGxheVN1YmplY3QsXG4gIGZvcmtKb2luLFxuICBvZiBhcyBvYnNlcnZhYmxlT2YsXG4gIHNoYXJlLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBGb3JtYXQgfSBmcm9tICcuLi8uLi91dGlscy9mb3JtYXQnO1xuXG5pbXBvcnQgeyBTa3lBcHBMb2NhbGVJbmZvIH0gZnJvbSAnLi9sb2NhbGUtaW5mbyc7XG5pbXBvcnQgeyBTa3lBcHBMb2NhbGVQcm92aWRlciB9IGZyb20gJy4vbG9jYWxlLXByb3ZpZGVyJztcbmltcG9ydCB7IFNreUFwcFJlc291cmNlTmFtZVByb3ZpZGVyIH0gZnJvbSAnLi9yZXNvdXJjZS1uYW1lLXByb3ZpZGVyJztcblxudHlwZSBTa3lSZXNvdXJjZVR5cGUgPSBSZWNvcmQ8c3RyaW5nLCB7IG1lc3NhZ2U6IHN0cmluZyB9PjtcbnR5cGUgUmVzb3VyY2VLZXkgPSBzdHJpbmc7XG50eXBlIFRlbXBsYXRlZFJlc291cmNlID0gW1Jlc291cmNlS2V5LCAuLi5hbnlbXV07XG50eXBlIFJlc291cmNlRGljdGlvbmFyeSA9IFJlY29yZDxzdHJpbmcsIFJlc291cmNlS2V5IHwgVGVtcGxhdGVkUmVzb3VyY2U+O1xuXG5jb25zdCBkZWZhdWx0UmVzb3VyY2VzOiBTa3lSZXNvdXJjZVR5cGUgPSB7fTtcblxuZnVuY3Rpb24gZ2V0RGVmYXVsdE9icygpOiBPYnNlcnZhYmxlPFNreVJlc291cmNlVHlwZT4ge1xuICByZXR1cm4gb2JzZXJ2YWJsZU9mKGRlZmF1bHRSZXNvdXJjZXMpO1xufVxuXG4vKipcbiAqIEFuIEFuZ3VsYXIgc2VydmljZSBmb3IgaW50ZXJhY3Rpbmcgd2l0aCByZXNvdXJjZSBzdHJpbmdzLlxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgU2t5QXBwUmVzb3VyY2VzU2VydmljZSB7XG4gICNyZXNvdXJjZXNPYnNDYWNoZTogUmVjb3JkPHN0cmluZywgT2JzZXJ2YWJsZTxTa3lSZXNvdXJjZVR5cGU+PiA9IHt9O1xuICAjaHR0cE9ic0NhY2hlOiBSZWNvcmQ8c3RyaW5nLCBPYnNlcnZhYmxlPFNreVJlc291cmNlVHlwZT4+ID0ge307XG5cbiAgI2h0dHA6IEh0dHBDbGllbnQ7XG4gICNhc3NldHM6IFNreUFwcEFzc2V0c1NlcnZpY2UgfCB1bmRlZmluZWQ7XG4gICNsb2NhbGVQcm92aWRlcjogU2t5QXBwTG9jYWxlUHJvdmlkZXI7XG4gICNyZXNvdXJjZU5hbWVQcm92aWRlcjogU2t5QXBwUmVzb3VyY2VOYW1lUHJvdmlkZXIgfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgaHR0cDogSHR0cENsaWVudCxcbiAgICBAT3B0aW9uYWwoKVxuICAgIEBJbmplY3QoZm9yd2FyZFJlZigoKSA9PiBTa3lBcHBBc3NldHNTZXJ2aWNlKSlcbiAgICBhc3NldHM6IFNreUFwcEFzc2V0c1NlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgbG9jYWxlUHJvdmlkZXI6IFNreUFwcExvY2FsZVByb3ZpZGVyLFxuICAgIEBPcHRpb25hbCgpIHJlc291cmNlTmFtZVByb3ZpZGVyOiBTa3lBcHBSZXNvdXJjZU5hbWVQcm92aWRlcixcbiAgKSB7XG4gICAgdGhpcy4jaHR0cCA9IGh0dHA7XG4gICAgdGhpcy4jYXNzZXRzID0gYXNzZXRzO1xuICAgIC8vIExvY2FsZSBwcm92aWRlciBpcyBwcm92aWRlZCBhdCBgcm9vdGAuIFRoZSBgT3B0aW9uYWxgIGhlcmUgaXMgZm9yIHVuaXQgdGVzdCBjb21wYXRpYmlsaXR5LlxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbm9uLW51bGwtYXNzZXJ0aW9uXG4gICAgdGhpcy4jbG9jYWxlUHJvdmlkZXIgPSBsb2NhbGVQcm92aWRlciE7XG4gICAgdGhpcy4jcmVzb3VyY2VOYW1lUHJvdmlkZXIgPSByZXNvdXJjZU5hbWVQcm92aWRlcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIGEgcmVzb3VyY2Ugc3RyaW5nIGJhc2VkIG9uIGl0cyBuYW1lLlxuICAgKiBAcGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0aGUgcmVzb3VyY2Ugc3RyaW5nLlxuICAgKiBAcGFyYW0gYXJncyBBbnkgdGVtcGxhdGVkIGFyZ3MuXG4gICAqL1xuICBwdWJsaWMgZ2V0U3RyaW5nKG5hbWU6IHN0cmluZywgLi4uYXJnczogYW55W10pOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIGNvbnN0IGxvY2FsZU9iczogT2JzZXJ2YWJsZTxTa3lBcHBMb2NhbGVJbmZvPiA9XG4gICAgICB0aGlzLiNsb2NhbGVQcm92aWRlci5nZXRMb2NhbGVJbmZvKCk7XG4gICAgcmV0dXJuIHRoaXMuI2dldFN0cmluZ0ZvckxvY2FsZUluZm9PYnNlcnZhYmxlKGxvY2FsZU9icywgbmFtZSwgLi4uYXJncyk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyBhIFJlc291cmNlIFN0cmluZyBEaWN0aW9uYXJ5LlxuICAgKlxuICAgKiBUaGlzIGlzIHNpbWlsYXIgdG8gZm9ya0pvaW4ncyBkaWN0aW9uYXJ5IHN5bnRheC5cbiAgICpcbiAgICogQHBhcmFtIGRpY3Rpb25hcnkgYSBSZWNvcmQgb2YgKipTb21lT2JqZWN0S2V5KiogdG8gYSBWYWx1ZSB0aGF0IGlzIGVpdGhlclxuICAgKiAgIC0gKDEpICoqUmVzb3VyY2VLZXkqKlxuICAgKiAgIC0gKDIpIG9yIGFuICoqQXJyYXkqKiB3aGVyZSB0aGUgZmlyc3QgaXRlbSBpcyB0aGUgKipSZXNvdXJjZUtleSoqIGFuZCB0aGUgb3RoZXIgaXRlbXMgYXJlIHRlbXBsYXRlIGFyZ3MuXG4gICAqIEByZXR1cm4gYW4gYE9ic2VydmFibGVgIG9mIGEgcmVzb3VyY2Ugc3RyaW5nIGRpY3Rpb25hcnkgaW4gdGhlIHNhbWUgc2hhcGUgYXMgdGhlIHBhc3NlZCBkaWN0aW9uYXJ5LlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIHNlcnZpY2UuZ2V0U3RyaW5ncyh7XG4gICAqICAgIHNpbXBsZUtleTogJ2hlbGxvJyxcbiAgICogICAgYXJyYXlTeW50YXg6IFsnaGknXSxcbiAgICogICAgYXJyYXlTeW50YXhXaXRoVGVtcGxhdGVBcmdzOiBbJ3RlbXBsYXRlJywgJ2EnLCAnYiddLFxuICAgKiB9XG4gICAqIGBgYFxuICAgKi9cbiAgcHVibGljIGdldFN0cmluZ3M8VCBleHRlbmRzIFJlc291cmNlRGljdGlvbmFyeT4oXG4gICAgZGljdGlvbmFyeTogVCxcbiAgKTogT2JzZXJ2YWJsZTx7IFtLIGluIGtleW9mIFRdOiBzdHJpbmcgfT4ge1xuICAgIGNvbnN0IHJlc291cmNlcyQ6IFJlY29yZDxzdHJpbmcsIE9ic2VydmFibGU8c3RyaW5nPj4gPSB7fTtcblxuICAgIGZvciAoY29uc3Qgb2JqS2V5IG9mIE9iamVjdC5rZXlzKGRpY3Rpb25hcnkpKSB7XG4gICAgICBjb25zdCByZXNvdXJjZTogc3RyaW5nIHwgW3N0cmluZywgLi4uYW55W11dID0gZGljdGlvbmFyeVtvYmpLZXldO1xuXG4gICAgICBpZiAodHlwZW9mIHJlc291cmNlID09PSAnc3RyaW5nJykge1xuICAgICAgICByZXNvdXJjZXMkW29iaktleV0gPSB0aGlzLmdldFN0cmluZyhyZXNvdXJjZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBba2V5LCAuLi50ZW1wbGF0ZUl0ZW1zXSA9IHJlc291cmNlO1xuICAgICAgICByZXNvdXJjZXMkW29iaktleV0gPSB0aGlzLmdldFN0cmluZyhrZXksIC4uLnRlbXBsYXRlSXRlbXMpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmb3JrSm9pbihyZXNvdXJjZXMkKSBhcyBPYnNlcnZhYmxlPHsgW0sgaW4ga2V5b2YgVF06IHN0cmluZyB9PjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIGEgcmVzb3VyY2Ugc3RyaW5nIGZvciBhIHNwZWNpZmljIGxvY2FsZSBiYXNlZCBvbiBpdHMgbmFtZS5cbiAgICogQHBhcmFtIGxvY2FsZUluZm8gVGhlIGxvY2FsZSB0byB1c2UuXG4gICAqIEBwYXJhbSBuYW1lIFRoZSBuYW1lIG9mIHRoZSByZXNvdXJjZSBzdHJpbmcuXG4gICAqIEBwYXJhbSBhcmdzIEFueSB0ZW1wbGF0ZWQgYXJncy5cbiAgICovXG4gIHB1YmxpYyBnZXRTdHJpbmdGb3JMb2NhbGUoXG4gICAgbG9jYWxlSW5mbzogU2t5QXBwTG9jYWxlSW5mbyxcbiAgICBuYW1lOiBzdHJpbmcsXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy4jZ2V0U3RyaW5nRm9yTG9jYWxlSW5mb09ic2VydmFibGUoXG4gICAgICBvYnNlcnZhYmxlT2YobG9jYWxlSW5mbyksXG4gICAgICBuYW1lLFxuICAgICAgLi4uYXJncyxcbiAgICApO1xuICB9XG5cbiAgI2dldFN0cmluZ0ZvckxvY2FsZUluZm9PYnNlcnZhYmxlKFxuICAgIGxvY2FsZUluZm9PYnM6IE9ic2VydmFibGU8U2t5QXBwTG9jYWxlSW5mbz4sXG4gICAgbmFtZTogc3RyaW5nLFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgY29uc3QgcmVzb3VyY2VzT2JzOiBPYnNlcnZhYmxlPGFueT4gPSBsb2NhbGVJbmZvT2JzLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKGxvY2FsZUluZm8pID0+IHtcbiAgICAgICAgbGV0IG9iczogT2JzZXJ2YWJsZTxhbnk+O1xuXG4gICAgICAgIC8vIFVzZSBkZWZhdWx0IGxvY2FsZSBpZiBvbmUgbm90IHByb3ZpZGVkXG4gICAgICAgIGNvbnN0IGxvY2FsZSA9IGxvY2FsZUluZm8ubG9jYWxlIHx8IHRoaXMuI2xvY2FsZVByb3ZpZGVyLmRlZmF1bHRMb2NhbGU7XG5cbiAgICAgICAgaWYgKHRoaXMuI3Jlc291cmNlc09ic0NhY2hlW2xvY2FsZV0pIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy4jcmVzb3VyY2VzT2JzQ2FjaGVbbG9jYWxlXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlc291cmNlc1VybCA9XG4gICAgICAgICAgdGhpcy4jZ2V0VXJsRm9yTG9jYWxlKGxvY2FsZSkgfHxcbiAgICAgICAgICAvLyBUcnkgZmFsbGluZyBiYWNrIHRvIHRoZSBub24tcmVnaW9uLXNwZWNpZmljIGxhbmd1YWdlLlxuICAgICAgICAgIHRoaXMuI2dldFVybEZvckxvY2FsZShsb2NhbGUuc3Vic3RyaW5nKDAsIDIpKSB8fFxuICAgICAgICAgIC8vIEZpbmFsbHkgZmFsbCBiYWNrIHRvIHRoZSBkZWZhdWx0IGxvY2FsZS5cbiAgICAgICAgICB0aGlzLiNnZXRVcmxGb3JMb2NhbGUodGhpcy4jbG9jYWxlUHJvdmlkZXIuZGVmYXVsdExvY2FsZSk7XG5cbiAgICAgICAgaWYgKHJlc291cmNlc1VybCkge1xuICAgICAgICAgIGlmICghdGhpcy4jaHR0cE9ic0NhY2hlW3Jlc291cmNlc1VybF0pIHtcbiAgICAgICAgICAgIHRoaXMuI2h0dHBPYnNDYWNoZVtyZXNvdXJjZXNVcmxdID0gdGhpcy4jaHR0cFxuICAgICAgICAgICAgICAuZ2V0PFNreVJlc291cmNlVHlwZT4ocmVzb3VyY2VzVXJsKVxuICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBzaGFyZSh7XG4gICAgICAgICAgICAgICAgICBjb25uZWN0b3I6ICgpID0+IG5ldyBSZXBsYXlTdWJqZWN0KDEpLFxuICAgICAgICAgICAgICAgICAgcmVzZXRPbkVycm9yOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgIHJlc2V0T25Db21wbGV0ZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICByZXNldE9uUmVmQ291bnRaZXJvOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgIC8vIFRoZSByZXNvdXJjZSBmaWxlIGZvciB0aGUgc3BlY2lmaWVkIGxvY2FsZSBmYWlsZWQgdG8gbG9hZDtcbiAgICAgICAgICAgICAgICAgIC8vIGZhbGwgYmFjayB0byB0aGUgZGVmYXVsdCBsb2NhbGUgaWYgaXQgZGlmZmVycyBmcm9tIHRoZSBzcGVjaWZpZWRcbiAgICAgICAgICAgICAgICAgIC8vIGxvY2FsZS5cbiAgICAgICAgICAgICAgICAgIGNvbnN0IGRlZmF1bHRSZXNvdXJjZXNVcmwgPSB0aGlzLiNnZXRVcmxGb3JMb2NhbGUoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuI2xvY2FsZVByb3ZpZGVyLmRlZmF1bHRMb2NhbGUsXG4gICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRSZXNvdXJjZXNVcmwgJiZcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdFJlc291cmNlc1VybCAhPT0gcmVzb3VyY2VzVXJsXG4gICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuI2h0dHAuZ2V0PFNreVJlc291cmNlVHlwZT4oZGVmYXVsdFJlc291cmNlc1VybCk7XG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIHJldHVybiBnZXREZWZhdWx0T2JzKCk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIG9icyA9IHRoaXMuI2h0dHBPYnNDYWNoZVtyZXNvdXJjZXNVcmxdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG9icyA9IGdldERlZmF1bHRPYnMoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLiNyZXNvdXJjZXNPYnNDYWNoZVtsb2NhbGVdID0gb2JzO1xuXG4gICAgICAgIHJldHVybiBvYnM7XG4gICAgICB9KSxcbiAgICAgIC8vIERvbid0IGtlZXAgdHJ5aW5nIGFmdGVyIGEgZmFpbGVkIGF0dGVtcHQgdG8gbG9hZCByZXNvdXJjZXMsIG9yIGVsc2VcbiAgICAgIC8vIGltcHVyZSBwaXBlcyBsaWtlIHJlc291cmNlcyBwaXBlIHRoYXQgY2FsbCB0aGlzIHNlcnZpY2Ugd2lsbCBrZWVwXG4gICAgICAvLyBmaXJpbmcgcmVxdWVzdHMgaW5kZWZpbml0ZWx5IGV2ZXJ5IGZldyBtaWxsaXNlY29uZHMuXG4gICAgICBjYXRjaEVycm9yKCgpID0+IGdldERlZmF1bHRPYnMoKSksXG4gICAgKTtcblxuICAgIGNvbnN0IG1hcHBlZE5hbWVPYnMgPSB0aGlzLiNyZXNvdXJjZU5hbWVQcm92aWRlclxuICAgICAgPyB0aGlzLiNyZXNvdXJjZU5hbWVQcm92aWRlci5nZXRSZXNvdXJjZU5hbWUobmFtZSlcbiAgICAgIDogb2JzZXJ2YWJsZU9mKG5hbWUpO1xuXG4gICAgcmV0dXJuIGZvcmtKb2luKFttYXBwZWROYW1lT2JzLCByZXNvdXJjZXNPYnNdKS5waXBlKFxuICAgICAgbWFwKChbbWFwcGVkTmFtZSwgcmVzb3VyY2VzXSk6IHN0cmluZyA9PiB7XG4gICAgICAgIGxldCByZXNvdXJjZTogeyBtZXNzYWdlOiBzdHJpbmcgfSB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuICAgICAgICBpZiAobWFwcGVkTmFtZSBpbiByZXNvdXJjZXMpIHtcbiAgICAgICAgICByZXNvdXJjZSA9IHJlc291cmNlc1ttYXBwZWROYW1lXTtcbiAgICAgICAgfSBlbHNlIGlmIChuYW1lIGluIHJlc291cmNlcykge1xuICAgICAgICAgIHJlc291cmNlID0gcmVzb3VyY2VzW25hbWVdO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJlc291cmNlKSB7XG4gICAgICAgICAgcmV0dXJuIEZvcm1hdC5mb3JtYXRUZXh0KHJlc291cmNlLm1lc3NhZ2UsIC4uLmFyZ3MpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5hbWU7XG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgI2dldFVybEZvckxvY2FsZShsb2NhbGU6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuI2Fzc2V0cz8uZ2V0VXJsKFxuICAgICAgYGxvY2FsZXMvcmVzb3VyY2VzXyR7bG9jYWxlLnJlcGxhY2UoJy0nLCAnXycpfS5qc29uYCxcbiAgICApO1xuICB9XG59XG4iXX0=","import { Pipe, } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"./resources.service\";\n/**\n * An Angular pipe for displaying a resource string.\n */\nexport class SkyAppResourcesPipe {\n    #ngUnsubscribe = new Subject();\n    #resourceCache = {};\n    #changeDetector;\n    #resourcesSvc;\n    constructor(changeDetector, resourcesSvc) {\n        this.#changeDetector = changeDetector;\n        this.#resourcesSvc = resourcesSvc;\n    }\n    /**\n     * Transforms a named resource string into its value.\n     * @param name The name of the resource string.\n     */\n    transform(name, ...args) {\n        const cacheKey = name + JSON.stringify(args);\n        if (!(cacheKey in this.#resourceCache)) {\n            this.#resourcesSvc\n                .getString(name, ...args)\n                .pipe(takeUntil(this.#ngUnsubscribe))\n                .subscribe((result) => {\n                this.#resourceCache[cacheKey] = result;\n                this.#changeDetector.markForCheck();\n            });\n        }\n        return this.#resourceCache[cacheKey];\n    }\n    ngOnDestroy() {\n        this.#ngUnsubscribe.next();\n        this.#ngUnsubscribe.complete();\n    }\n    static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: SkyAppResourcesPipe, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.SkyAppResourcesService }], target: i0.ɵɵFactoryTarget.Pipe }); }\n    static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.3.0\", ngImport: i0, type: SkyAppResourcesPipe, isStandalone: true, name: \"skyAppResources\", pure: false }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: SkyAppResourcesPipe, decorators: [{\n            type: Pipe,\n            args: [{\n                    name: 'skyAppResources',\n                    pure: false,\n                }]\n        }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.SkyAppResourcesService }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2VzLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvaTE4bi9zcmMvbGliL21vZHVsZXMvaTE4bi9yZXNvdXJjZXMucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0wsSUFBSSxHQUVMLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFJM0M7O0dBRUc7QUFLSCxNQUFNLE9BQU8sbUJBQW1CO0lBQzlCLGNBQWMsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBRXJDLGNBQWMsR0FBd0IsRUFBRSxDQUFDO0lBRXpDLGVBQWUsQ0FBb0I7SUFDbkMsYUFBYSxDQUF5QjtJQUV0QyxZQUNFLGNBQWlDLEVBQ2pDLFlBQW9DO1FBRXBDLElBQUksQ0FBQyxlQUFlLEdBQUcsY0FBYyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxhQUFhLEdBQUcsWUFBWSxDQUFDO0lBQ3BDLENBQUM7SUFFRDs7O09BR0c7SUFDSSxTQUFTLENBQUMsSUFBWSxFQUFFLEdBQUcsSUFBVztRQUMzQyxNQUFNLFFBQVEsR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUU3QyxJQUFJLENBQUMsQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7WUFDdkMsSUFBSSxDQUFDLGFBQWE7aUJBQ2YsU0FBUyxDQUFDLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQztpQkFDeEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7aUJBQ3BDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO2dCQUNwQixJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxHQUFHLE1BQU0sQ0FBQztnQkFDdkMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN0QyxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2pDLENBQUM7OEdBdkNVLG1CQUFtQjs0R0FBbkIsbUJBQW1COzsyRkFBbkIsbUJBQW1CO2tCQUovQixJQUFJO21CQUFDO29CQUNKLElBQUksRUFBRSxpQkFBaUI7b0JBQ3ZCLElBQUksRUFBRSxLQUFLO2lCQUNaIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIE9uRGVzdHJveSxcbiAgUGlwZSxcbiAgUGlwZVRyYW5zZm9ybSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgU2t5QXBwUmVzb3VyY2VzU2VydmljZSB9IGZyb20gJy4vcmVzb3VyY2VzLnNlcnZpY2UnO1xuXG4vKipcbiAqIEFuIEFuZ3VsYXIgcGlwZSBmb3IgZGlzcGxheWluZyBhIHJlc291cmNlIHN0cmluZy5cbiAqL1xuQFBpcGUoe1xuICBuYW1lOiAnc2t5QXBwUmVzb3VyY2VzJyxcbiAgcHVyZTogZmFsc2UsXG59KVxuZXhwb3J0IGNsYXNzIFNreUFwcFJlc291cmNlc1BpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtLCBPbkRlc3Ryb3kge1xuICAjbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgI3Jlc291cmNlQ2FjaGU6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcblxuICAjY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmO1xuICAjcmVzb3VyY2VzU3ZjOiBTa3lBcHBSZXNvdXJjZXNTZXJ2aWNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICByZXNvdXJjZXNTdmM6IFNreUFwcFJlc291cmNlc1NlcnZpY2UsXG4gICkge1xuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yID0gY2hhbmdlRGV0ZWN0b3I7XG4gICAgdGhpcy4jcmVzb3VyY2VzU3ZjID0gcmVzb3VyY2VzU3ZjO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyYW5zZm9ybXMgYSBuYW1lZCByZXNvdXJjZSBzdHJpbmcgaW50byBpdHMgdmFsdWUuXG4gICAqIEBwYXJhbSBuYW1lIFRoZSBuYW1lIG9mIHRoZSByZXNvdXJjZSBzdHJpbmcuXG4gICAqL1xuICBwdWJsaWMgdHJhbnNmb3JtKG5hbWU6IHN0cmluZywgLi4uYXJnczogYW55W10pOiBzdHJpbmcge1xuICAgIGNvbnN0IGNhY2hlS2V5ID0gbmFtZSArIEpTT04uc3RyaW5naWZ5KGFyZ3MpO1xuXG4gICAgaWYgKCEoY2FjaGVLZXkgaW4gdGhpcy4jcmVzb3VyY2VDYWNoZSkpIHtcbiAgICAgIHRoaXMuI3Jlc291cmNlc1N2Y1xuICAgICAgICAuZ2V0U3RyaW5nKG5hbWUsIC4uLmFyZ3MpXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XG4gICAgICAgICAgdGhpcy4jcmVzb3VyY2VDYWNoZVtjYWNoZUtleV0gPSByZXN1bHQ7XG4gICAgICAgICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLiNyZXNvdXJjZUNhY2hlW2NhY2hlS2V5XTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gIH1cbn1cbiJdfQ==","import { NgModule } from '@angular/core';\nimport { SkyLibResourcesPipe } from './lib-resources.pipe';\nimport { SkyAppResourcesPipe } from './resources.pipe';\nimport * as i0 from \"@angular/core\";\nexport class SkyI18nModule {\n    static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: SkyI18nModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n    static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.0\", ngImport: i0, type: SkyI18nModule, imports: [SkyAppResourcesPipe, SkyLibResourcesPipe], exports: [SkyAppResourcesPipe, SkyLibResourcesPipe] }); }\n    static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: SkyI18nModule }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: SkyI18nModule, decorators: [{\n            type: NgModule,\n            args: [{\n                    imports: [SkyAppResourcesPipe, SkyLibResourcesPipe],\n                    exports: [SkyAppResourcesPipe, SkyLibResourcesPipe],\n                }]\n        }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaTE4bi5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvaTE4bi9zcmMvbGliL21vZHVsZXMvaTE4bi9pMThuLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzNELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDOztBQU12RCxNQUFNLE9BQU8sYUFBYTs4R0FBYixhQUFhOytHQUFiLGFBQWEsWUFIZCxtQkFBbUIsRUFBRSxtQkFBbUIsYUFDeEMsbUJBQW1CLEVBQUUsbUJBQW1COytHQUV2QyxhQUFhOzsyRkFBYixhQUFhO2tCQUp6QixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLG1CQUFtQixFQUFFLG1CQUFtQixDQUFDO29CQUNuRCxPQUFPLEVBQUUsQ0FBQyxtQkFBbUIsRUFBRSxtQkFBbUIsQ0FBQztpQkFDcEQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBTa3lMaWJSZXNvdXJjZXNQaXBlIH0gZnJvbSAnLi9saWItcmVzb3VyY2VzLnBpcGUnO1xuaW1wb3J0IHsgU2t5QXBwUmVzb3VyY2VzUGlwZSB9IGZyb20gJy4vcmVzb3VyY2VzLnBpcGUnO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbU2t5QXBwUmVzb3VyY2VzUGlwZSwgU2t5TGliUmVzb3VyY2VzUGlwZV0sXG4gIGV4cG9ydHM6IFtTa3lBcHBSZXNvdXJjZXNQaXBlLCBTa3lMaWJSZXNvdXJjZXNQaXBlXSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5STE4bk1vZHVsZSB7fVxuIl19","// The contents of this file are mostly ported from the Angular 4.x intl.ts in order to maintain the\n// old behavior of using the `Intl` API for formatting dates rather than having to register every\n// supported locale.\n// https://github.com/angular/angular/blob/4.4.x/packages/common/src/pipes/intl.ts\n/* spell-checker:disable */\nconst DATE_FORMATS_SPLIT = /((?:[^yMLdHhmsazZEwGjJ']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|L+|d+|H+|h+|J+|j+|m+|s+|a|z|Z|G+|w+))(.*)/;\nconst PATTERN_ALIASES = {\n    // Keys are quoted so they do not get renamed during closure compilation.\n    yMMMdjms: datePartGetterFactory(combine([\n        digitCondition('year', 1),\n        nameCondition('month', 3),\n        digitCondition('day', 1),\n        digitCondition('hour', 1),\n        digitCondition('minute', 1),\n        digitCondition('second', 1),\n    ])),\n    yMdjm: datePartGetterFactory(combine([\n        digitCondition('year', 1),\n        digitCondition('month', 1),\n        digitCondition('day', 1),\n        digitCondition('hour', 1),\n        digitCondition('minute', 1),\n    ])),\n    yMMMMEEEEd: datePartGetterFactory(combine([\n        digitCondition('year', 1),\n        nameCondition('month', 4),\n        nameCondition('weekday', 4),\n        digitCondition('day', 1),\n    ])),\n    yMMMMd: datePartGetterFactory(combine([\n        digitCondition('year', 1),\n        nameCondition('month', 4),\n        digitCondition('day', 1),\n    ])),\n    yMMMd: datePartGetterFactory(combine([\n        digitCondition('year', 1),\n        nameCondition('month', 3),\n        digitCondition('day', 1),\n    ])),\n    yMd: datePartGetterFactory(combine([\n        digitCondition('year', 1),\n        digitCondition('month', 1),\n        digitCondition('day', 1),\n    ])),\n    jms: datePartGetterFactory(combine([\n        digitCondition('hour', 1),\n        digitCondition('second', 1),\n        digitCondition('minute', 1),\n    ])),\n    jm: datePartGetterFactory(combine([digitCondition('hour', 1), digitCondition('minute', 1)])),\n};\n/* spell-checker:enable */\nconst DATE_FORMATS = {\n    // Keys are quoted so they do not get renamed.\n    yyyy: datePartGetterFactory(digitCondition('year', 4)),\n    yy: datePartGetterFactory(digitCondition('year', 2)),\n    y: datePartGetterFactory(digitCondition('year', 1)),\n    MMMM: datePartGetterFactory(nameCondition('month', 4)),\n    MMM: datePartGetterFactory(nameCondition('month', 3)),\n    MM: datePartGetterFactory(digitCondition('month', 2)),\n    M: datePartGetterFactory(digitCondition('month', 1)),\n    LLLL: datePartGetterFactory(nameCondition('month', 4)),\n    L: datePartGetterFactory(nameCondition('month', 1)),\n    dd: datePartGetterFactory(digitCondition('day', 2)),\n    d: datePartGetterFactory(digitCondition('day', 1)),\n    HH: digitModifier(hourExtractor(datePartGetterFactory(hour12Modify(digitCondition('hour', 2), false)))),\n    H: hourExtractor(datePartGetterFactory(hour12Modify(digitCondition('hour', 1), false))),\n    hh: digitModifier(hourExtractor(datePartGetterFactory(hour12Modify(digitCondition('hour', 2), true)))),\n    h: hourExtractor(datePartGetterFactory(hour12Modify(digitCondition('hour', 1), true))),\n    jj: datePartGetterFactory(digitCondition('hour', 2)),\n    j: datePartGetterFactory(digitCondition('hour', 1)),\n    mm: digitModifier(datePartGetterFactory(digitCondition('minute', 2))),\n    m: datePartGetterFactory(digitCondition('minute', 1)),\n    ss: digitModifier(datePartGetterFactory(digitCondition('second', 2))),\n    s: datePartGetterFactory(digitCondition('second', 1)),\n    // while ISO 8601 requires fractions to be prefixed with `.` or `,`\n    // we can be just safely rely on using `sss` since we currently don't support single or two digit\n    // fractions\n    sss: datePartGetterFactory(digitCondition('second', 3)),\n    EEEE: datePartGetterFactory(nameCondition('weekday', 4)),\n    EEE: datePartGetterFactory(nameCondition('weekday', 3)),\n    EE: datePartGetterFactory(nameCondition('weekday', 2)),\n    E: datePartGetterFactory(nameCondition('weekday', 1)),\n    a: hourClockExtractor(datePartGetterFactory(hour12Modify(digitCondition('hour', 1), true))),\n    Z: timeZoneGetter('short'),\n    z: timeZoneGetter('long'),\n    ww: datePartGetterFactory({}), // Week of year, padded (00-53). Week 01 is the week with the\n    // first Thursday of the year. not support ?\n    w: datePartGetterFactory({}), // Week of year (0-53). Week 1 is the week with the first Thursday\n    // of the year not support ?\n    G: datePartGetterFactory(nameCondition('era', 1)),\n    GG: datePartGetterFactory(nameCondition('era', 2)),\n    GGG: datePartGetterFactory(nameCondition('era', 3)),\n    GGGG: datePartGetterFactory(nameCondition('era', 4)),\n};\nfunction digitModifier(inner) {\n    return function (date, locale) {\n        const result = inner(date, locale);\n        /* istanbul ignore next */\n        return result.length === 1 ? '0' + result : result;\n    };\n}\nfunction hourClockExtractor(inner) {\n    return function (date, locale) {\n        return inner(date, locale).split(' ')[1];\n    };\n}\nfunction hourExtractor(inner) {\n    return function (date, locale) {\n        return inner(date, locale).split(' ')[0];\n    };\n}\nfunction intlDateFormat(date, locale, options) {\n    return new Intl.DateTimeFormat(locale, options)\n        .format(date)\n        .replace(/[\\u200e\\u200f]/g, '');\n}\nfunction timeZoneGetter(timezone) {\n    // To workaround `Intl` API restriction for single timezone let format with 24 hours\n    const options = {\n        hour: '2-digit',\n        hour12: false,\n        timeZoneName: timezone,\n    };\n    return function (date, locale) {\n        const result = intlDateFormat(date, locale, options);\n        // Then extract first 3 letters that related to hours\n        /* istanbul ignore else */\n        if (result) {\n            return result.substring(3);\n        }\n        /* istanbul ignore next */\n        return '';\n    };\n}\nfunction hour12Modify(options, value) {\n    options.hour12 = value;\n    return options;\n}\nfunction digitCondition(prop, len) {\n    const result = {};\n    result[prop] = len === 2 ? '2-digit' : 'numeric';\n    return result;\n}\nfunction nameCondition(prop, len) {\n    const result = {};\n    if (len < 4) {\n        result[prop] = len > 1 ? 'short' : 'narrow';\n    }\n    else {\n        result[prop] = 'long';\n    }\n    return result;\n}\nfunction combine(options) {\n    return options.reduce((merged, opt) => ({ ...merged, ...opt }), {});\n}\nfunction datePartGetterFactory(ret) {\n    return (date, locale) => intlDateFormat(date, locale, ret);\n}\nconst DATE_FORMATTER_CACHE = new Map();\nfunction partToTime(part) {\n    return part === \"''\" ? \"'\" : part.replace(/(^'|'$)/g, '').replace(/''/g, \"'\");\n}\nexport function dateFormatter(format, date, locale) {\n    const fn = PATTERN_ALIASES[format];\n    if (fn) {\n        return fn(date, locale);\n    }\n    const cacheKey = format;\n    let parts = DATE_FORMATTER_CACHE.get(cacheKey);\n    /* istanbul ignore else */\n    if (!parts) {\n        parts = [];\n        let match;\n        DATE_FORMATS_SPLIT.exec(format);\n        let _format = format;\n        while (_format) {\n            match = DATE_FORMATS_SPLIT.exec(_format);\n            /*istanbul ignore else */\n            if (match) {\n                parts = parts.concat(match.slice(1));\n                // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n                _format = parts.pop();\n            }\n            else {\n                parts.push(_format);\n                _format = null;\n            }\n        }\n        DATE_FORMATTER_CACHE.set(cacheKey, parts);\n    }\n    return parts.reduce((text, part) => {\n        const dateFormatFn = DATE_FORMATS[part];\n        return (text + (dateFormatFn ? dateFormatFn(date, locale) : partToTime(part)));\n    }, '');\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50bC1kYXRlLWZvcm1hdHRlci11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9pMThuL3NyYy9saWIvbW9kdWxlcy9pMThuL2ludGwtZGF0ZS1mb3JtYXR0ZXItdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsb0dBQW9HO0FBQ3BHLGlHQUFpRztBQUNqRyxvQkFBb0I7QUFDcEIsa0ZBQWtGO0FBSWxGLDJCQUEyQjtBQUMzQixNQUFNLGtCQUFrQixHQUN0QixxR0FBcUcsQ0FBQztBQUV4RyxNQUFNLGVBQWUsR0FBb0M7SUFDdkQseUVBQXlFO0lBQ3pFLFFBQVEsRUFBRSxxQkFBcUIsQ0FDN0IsT0FBTyxDQUFDO1FBQ04sY0FBYyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDekIsYUFBYSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDekIsY0FBYyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDeEIsY0FBYyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDekIsY0FBYyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDM0IsY0FBYyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7S0FDNUIsQ0FBQyxDQUNIO0lBQ0QsS0FBSyxFQUFFLHFCQUFxQixDQUMxQixPQUFPLENBQUM7UUFDTixjQUFjLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUN6QixjQUFjLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUMxQixjQUFjLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUN4QixjQUFjLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUN6QixjQUFjLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztLQUM1QixDQUFDLENBQ0g7SUFDRCxVQUFVLEVBQUUscUJBQXFCLENBQy9CLE9BQU8sQ0FBQztRQUNOLGNBQWMsQ0FBQyxNQUFNLEVBQUUs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LENBQUMsQ0FBQyxDQUFDO2dCQUNyQyxvRUFBb0U7Z0JBQ3BFLE9BQU8sR0FBRyxLQUFLLENBQUMsR0FBRyxFQUFHLENBQUM7WUFDekIsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ3BCLE9BQU8sR0FBRyxJQUFJLENBQUM7WUFDakIsQ0FBQztRQUNILENBQUM7UUFFRCxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRCxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUU7UUFDakMsTUFBTSxZQUFZLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hDLE9BQU8sQ0FDTCxJQUFJLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUN0RSxDQUFDO0lBQ0osQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ1QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIFRoZSBjb250ZW50cyBvZiB0aGlzIGZpbGUgYXJlIG1vc3RseSBwb3J0ZWQgZnJvbSB0aGUgQW5ndWxhciA0LnggaW50bC50cyBpbiBvcmRlciB0byBtYWludGFpbiB0aGVcbi8vIG9sZCBiZWhhdmlvciBvZiB1c2luZyB0aGUgYEludGxgIEFQSSBmb3IgZm9ybWF0dGluZyBkYXRlcyByYXRoZXIgdGhhbiBoYXZpbmcgdG8gcmVnaXN0ZXIgZXZlcnlcbi8vIHN1cHBvcnRlZCBsb2NhbGUuXG4vLyBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2Jsb2IvNC40LngvcGFja2FnZXMvY29tbW9uL3NyYy9waXBlcy9pbnRsLnRzXG5cbnR5cGUgRGF0ZUZvcm1hdHRlckZuID0gKGRhdGU6IERhdGUsIGxvY2FsZTogc3RyaW5nKSA9PiBzdHJpbmc7XG5cbi8qIHNwZWxsLWNoZWNrZXI6ZGlzYWJsZSAqL1xuY29uc3QgREFURV9GT1JNQVRTX1NQTElUID1cbiAgLygoPzpbXnlNTGRIaG1zYXpaRXdHakonXSspfCg/OicoPzpbXiddfCcnKSonKXwoPzpFK3x5K3xNK3xMK3xkK3xIK3xoK3xKK3xqK3xtK3xzK3xhfHp8WnxHK3x3KykpKC4qKS87XG5cbmNvbnN0IFBBVFRFUk5fQUxJQVNFUzogUmVjb3JkPHN0cmluZywgRGF0ZUZvcm1hdHRlckZuPiA9IHtcbiAgLy8gS2V5cyBhcmUgcXVvdGVkIHNvIHRoZXkgZG8gbm90IGdldCByZW5hbWVkIGR1cmluZyBjbG9zdXJlIGNvbXBpbGF0aW9uLlxuICB5TU1NZGptczogZGF0ZVBhcnRHZXR0ZXJGYWN0b3J5KFxuICAgIGNvbWJpbmUoW1xuICAgICAgZGlnaXRDb25kaXRpb24oJ3llYXInLCAxKSxcbiAgICAgIG5hbWVDb25kaXRpb24oJ21vbnRoJywgMyksXG4gICAgICBkaWdpdENvbmRpdGlvbignZGF5JywgMSksXG4gICAgICBkaWdpdENvbmRpdGlvbignaG91cicsIDEpLFxuICAgICAgZGlnaXRDb25kaXRpb24oJ21pbnV0ZScsIDEpLFxuICAgICAgZGlnaXRDb25kaXRpb24oJ3NlY29uZCcsIDEpLFxuICAgIF0pLFxuICApLFxuICB5TWRqbTogZGF0ZVBhcnRHZXR0ZXJGYWN0b3J5KFxuICAgIGNvbWJpbmUoW1xuICAgICAgZGlnaXRDb25kaXRpb24oJ3llYXInLCAxKSxcbiAgICAgIGRpZ2l0Q29uZGl0aW9uKCdtb250aCcsIDEpLFxuICAgICAgZGlnaXRDb25kaXRpb24oJ2RheScsIDEpLFxuICAgICAgZGlnaXRDb25kaXRpb24oJ2hvdXInLCAxKSxcbiAgICAgIGRpZ2l0Q29uZGl0aW9uKCdtaW51dGUnLCAxKSxcbiAgICBdKSxcbiAgKSxcbiAgeU1NTU1FRUVFZDogZGF0ZVBhcnRHZXR0ZXJGYWN0b3J5KFxuICAgIGNvbWJpbmUoW1xuICAgICAgZGlnaXRDb25kaXRpb24oJ3llYXInLCAxKSxcbiAgICAgIG5hbWVDb25kaXRpb24oJ21vbnRoJywgNCksXG4gICAgICBuYW1lQ29uZGl0aW9uKCd3ZWVrZGF5JywgNCksXG4gICAgICBkaWdpdENvbmRpdGlvbignZGF5JywgMSksXG4gICAgXSksXG4gICksXG4gIHlNTU1NZDogZGF0ZVBhcnRHZXR0ZXJGYWN0b3J5KFxuICAgIGNvbWJpbmUoW1xuICAgICAgZGlnaXRDb25kaXRpb24oJ3llYXInLCAxKSxcbiAgICAgIG5hbWVDb25kaXRpb24oJ21vbnRoJywgNCksXG4gICAgICBkaWdpdENvbmRpdGlvbignZGF5JywgMSksXG4gICAgXSksXG4gICksXG4gIHlNTU1kOiBkYXRlUGFydEdldHRlckZhY3RvcnkoXG4gICAgY29tYmluZShbXG4gICAgICBkaWdpdENvbmRpdGlvbigneWVhcicsIDEpLFxuICAgICAgbmFtZUNvbmRpdGlvbignbW9udGgnLCAzKSxcbiAgICAgIGRpZ2l0Q29uZGl0aW9uKCdkYXknLCAxKSxcbiAgICBdKSxcbiAgKSxcbiAgeU1kOiBkYXRlUGFydEdldHRlckZhY3RvcnkoXG4gICAgY29tYmluZShbXG4gICAgICBkaWdpdENvbmRpdGlvbigneWVhcicsIDEpLFxuICAgICAgZGlnaXRDb25kaXRpb24oJ21vbnRoJywgMSksXG4gICAgICBkaWdpdENvbmRpdGlvbignZGF5JywgMSksXG4gICAgXSksXG4gICksXG4gIGptczogZGF0ZVBhcnRHZXR0ZXJGYWN0b3J5KFxuICAgIGNvbWJpbmUoW1xuICAgICAgZGlnaXRDb25kaXRpb24oJ2hvdXInLCAxKSxcbiAgICAgIGRpZ2l0Q29uZGl0aW9uKCdzZWNvbmQnLCAxKSxcbiAgICAgIGRpZ2l0Q29uZGl0aW9uKCdtaW51dGUnLCAxKSxcbiAgICBdKSxcbiAgKSxcbiAgam06IGRhdGVQYXJ0R2V0dGVyRmFjdG9yeShcbiAgICBjb21iaW5lKFtkaWdpdENvbmRpdGlvbignaG91cicsIDEpLCBkaWdpdENvbmRpdGlvbignbWludXRlJywgMSldKSxcbiAgKSxcbn07XG4vKiBzcGVsbC1jaGVja2VyOmVuYWJsZSAqL1xuXG5jb25zdCBEQVRFX0ZPUk1BVFM6IFJlY29yZDxzdHJpbmcsIERhdGVGb3JtYXR0ZXJGbj4gPSB7XG4gIC8vIEtleXMgYXJlIHF1b3RlZCBzbyB0aGV5IGRvIG5vdCBnZXQgcmVuYW1lZC5cbiAgeXl5eTogZGF0ZVBhcnRHZXR0ZXJGYWN0b3J5KGRpZ2l0Q29uZGl0aW9uKCd5ZWFyJywgNCkpLFxuICB5eTogZGF0ZVBhcnRHZXR0ZXJGYWN0b3J5KGRpZ2l0Q29uZGl0aW9uKCd5ZWFyJywgMikpLFxuICB5OiBkYXRlUGFydEdldHRlckZhY3RvcnkoZGlnaXRDb25kaXRpb24oJ3llYXInLCAxKSksXG4gIE1NTU06IGRhdGVQYXJ0R2V0dGVyRmFjdG9yeShuYW1lQ29uZGl0aW9uKCdtb250aCcsIDQpKSxcbiAgTU1NOiBkYXRlUGFydEdldHRlckZhY3RvcnkobmFtZUNvbmRpdGlvbignbW9udGgnLCAzKSksXG4gIE1NOiBkYXRlUGFydEdldHRlckZhY3RvcnkoZGlnaXRDb25kaXRpb24oJ21vbnRoJywgMikpLFxuICBNOiBkYXRlUGFydEdldHRlckZhY3RvcnkoZGlnaXRDb25kaXRpb24oJ21vbnRoJywgMSkpLFxuICBMTExMOiBkYXRlUGFydEdldHRlckZhY3RvcnkobmFtZUNvbmRpdGlvbignbW9udGgnLCA0KSksXG4gIEw6IGRhdGVQYXJ0R2V0dGVyRmFjdG9yeShuYW1lQ29uZGl0aW9uKCdtb250aCcsIDEpKSxcbiAgZGQ6IGRhdGVQYXJ0R2V0dGVyRmFjdG9yeShkaWdpdENvbmRpdGlvbignZGF5JywgMikpLFxuICBkOiBkYXRlUGFydEdldHRlckZhY3RvcnkoZGlnaXRDb25kaXRpb24oJ2RheScsIDEpKSxcbiAgSEg6IGRpZ2l0TW9kaWZpZXIoXG4gICAgaG91ckV4dHJhY3RvcihcbiAgICAgIGRhdGVQYXJ0R2V0dGVyRmFjdG9yeShob3VyMTJNb2RpZnkoZGlnaXRDb25kaXRpb24oJ2hvdXInLCAyKSwgZmFsc2UpKSxcbiAgICApLFxuICApLFxuICBIOiBob3VyRXh0cmFjdG9yKFxuICAgIGRhdGVQYXJ0R2V0dGVyRmFjdG9yeShob3VyMTJNb2RpZnkoZGlnaXRDb25kaXRpb24oJ2hvdXInLCAxKSwgZmFsc2UpKSxcbiAgKSxcbiAgaGg6IGRpZ2l0TW9kaWZpZXIoXG4gICAgaG91ckV4dHJhY3RvcihcbiAgICAgIGRhdGVQYXJ0R2V0dGVyRmFjdG9yeShob3VyMTJNb2RpZnkoZGlnaXRDb25kaXRpb24oJ2hvdXInLCAyKSwgdHJ1ZSkpLFxuICAgICksXG4gICksXG4gIGg6IGhvdXJFeHRyYWN0b3IoXG4gICAgZGF0ZVBhcnRHZXR0ZXJGYWN0b3J5KGhvdXIxMk1vZGlmeShkaWdpdENvbmRpdGlvbignaG91cicsIDEpLCB0cnVlKSksXG4gICksXG4gIGpqOiBkYXRlUGFydEdldHRlckZhY3RvcnkoZGlnaXRDb25kaXRpb24oJ2hvdXInLCAyKSksXG4gIGo6IGRhdGVQYXJ0R2V0dGVyRmFjdG9yeShkaWdpdENvbmRpdGlvbignaG91cicsIDEpKSxcbiAgbW06IGRpZ2l0TW9kaWZpZXIoZGF0ZVBhcnRHZXR0ZXJGYWN0b3J5KGRpZ2l0Q29uZGl0aW9uKCdtaW51dGUnLCAyKSkpLFxuICBtOiBkYXRlUGFydEdldHRlckZhY3RvcnkoZGlnaXRDb25kaXRpb24oJ21pbnV0ZScsIDEpKSxcbiAgc3M6IGRpZ2l0TW9kaWZpZXIoZGF0ZVBhcnRHZXR0ZXJGYWN0b3J5KGRpZ2l0Q29uZGl0aW9uKCdzZWNvbmQnLCAyKSkpLFxuICBzOiBkYXRlUGFydEdldHRlckZhY3RvcnkoZGlnaXRDb25kaXRpb24oJ3NlY29uZCcsIDEpKSxcbiAgLy8gd2hpbGUgSVNPIDg2MDEgcmVxdWlyZXMgZnJhY3Rpb25zIHRvIGJlIHByZWZpeGVkIHdpdGggYC5gIG9yIGAsYFxuICAvLyB3ZSBjYW4gYmUganVzdCBzYWZlbHkgcmVseSBvbiB1c2luZyBgc3NzYCBzaW5jZSB3ZSBjdXJyZW50bHkgZG9uJ3Qgc3VwcG9ydCBzaW5nbGUgb3IgdHdvIGRpZ2l0XG4gIC8vIGZyYWN0aW9uc1xuICBzc3M6IGRhdGVQYXJ0R2V0dGVyRmFjdG9yeShkaWdpdENvbmRpdGlvbignc2Vjb25kJywgMykpLFxuICBFRUVFOiBkYXRlUGFydEdldHRlckZhY3RvcnkobmFtZUNvbmRpdGlvbignd2Vla2RheScsIDQpKSxcbiAgRUVFOiBkYXRlUGFydEdldHRlckZhY3RvcnkobmFtZUNvbmRpdGlvbignd2Vla2RheScsIDMpKSxcbiAgRUU6IGRhdGVQYXJ0R2V0dGVyRmFjdG9yeShuYW1lQ29uZGl0aW9uKCd3ZWVrZGF5JywgMikpLFxuICBFOiBkYXRlUGFydEdldHRlckZhY3RvcnkobmFtZUNvbmRpdGlvbignd2Vla2RheScsIDEpKSxcbiAgYTogaG91ckNsb2NrRXh0cmFjdG9yKFxuICAgIGRhdGVQYXJ0R2V0dGVyRmFjdG9yeShob3VyMTJNb2RpZnkoZGlnaXRDb25kaXRpb24oJ2hvdXInLCAxKSwgdHJ1ZSkpLFxuICApLFxuICBaOiB0aW1lWm9uZUdldHRlcignc2hvcnQnKSxcbiAgejogdGltZVpvbmVHZXR0ZXIoJ2xvbmcnKSxcbiAgd3c6IGRhdGVQYXJ0R2V0dGVyRmFjdG9yeSh7fSksIC8vIFdlZWsgb2YgeWVhciwgcGFkZGVkICgwMC01MykuIFdlZWsgMDEgaXMgdGhlIHdlZWsgd2l0aCB0aGVcbiAgLy8gZmlyc3QgVGh1cnNkYXkgb2YgdGhlIHllYXIuIG5vdCBzdXBwb3J0ID9cbiAgdzogZGF0ZVBhcnRHZXR0ZXJGYWN0b3J5KHt9KSwgLy8gV2VlayBvZiB5ZWFyICgwLTUzKS4gV2VlayAxIGlzIHRoZSB3ZWVrIHdpdGggdGhlIGZpcnN0IFRodXJzZGF5XG4gIC8vIG9mIHRoZSB5ZWFyIG5vdCBzdXBwb3J0ID9cbiAgRzogZGF0ZVBhcnRHZXR0ZXJGYWN0b3J5KG5hbWVDb25kaXRpb24oJ2VyYScsIDEpKSxcbiAgR0c6IGRhdGVQYXJ0R2V0dGVyRmFjdG9yeShuYW1lQ29uZGl0aW9uKCdlcmEnLCAyKSksXG4gIEdHRzogZGF0ZVBhcnRHZXR0ZXJGYWN0b3J5KG5hbWVDb25kaXRpb24oJ2VyYScsIDMpKSxcbiAgR0dHRzogZGF0ZVBhcnRHZXR0ZXJGYWN0b3J5KG5hbWVDb25kaXRpb24oJ2VyYScsIDQpKSxcbn07XG5cbmZ1bmN0aW9uIGRpZ2l0TW9kaWZpZXIoaW5uZXI6IERhdGVGb3JtYXR0ZXJGbik6IERhdGVGb3JtYXR0ZXJGbiB7XG4gIHJldHVybiBmdW5jdGlvbiAoZGF0ZTogRGF0ZSwgbG9jYWxlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IHJlc3VsdCA9IGlubmVyKGRhdGUsIGxvY2FsZSk7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICByZXR1cm4gcmVzdWx0Lmxlbmd0aCA9PT0gMSA/ICcwJyArIHJlc3VsdCA6IHJlc3VsdDtcbiAgfTtcbn1cblxuZnVuY3Rpb24gaG91ckNsb2NrRXh0cmFjdG9yKGlubmVyOiBEYXRlRm9ybWF0dGVyRm4pOiBEYXRlRm9ybWF0dGVyRm4ge1xuICByZXR1cm4gZnVuY3Rpb24gKGRhdGU6IERhdGUsIGxvY2FsZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gaW5uZXIoZGF0ZSwgbG9jYWxlKS5zcGxpdCgnICcpWzFdO1xuICB9O1xufVxuXG5mdW5jdGlvbiBob3VyRXh0cmFjdG9yKGlubmVyOiBEYXRlRm9ybWF0dGVyRm4pOiBEYXRlRm9ybWF0dGVyRm4ge1xuICByZXR1cm4gZnVuY3Rpb24gKGRhdGU6IERhdGUsIGxvY2FsZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gaW5uZXIoZGF0ZSwgbG9jYWxlKS5zcGxpdCgnICcpWzBdO1xuICB9O1xufVxuXG5mdW5jdGlvbiBpbnRsRGF0ZUZvcm1hdChcbiAgZGF0ZTogRGF0ZSxcbiAgbG9jYWxlOiBzdHJpbmcsXG4gIG9wdGlvbnM6IEludGwuRGF0ZVRpbWVGb3JtYXRPcHRpb25zLFxuKTogc3RyaW5nIHtcbiAgcmV0dXJuIG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxvY2FsZSwgb3B0aW9ucylcbiAgICAuZm9ybWF0KGRhdGUpXG4gICAgLnJlcGxhY2UoL1tcXHUyMDBlXFx1MjAwZl0vZywgJycpO1xufVxuXG5mdW5jdGlvbiB0aW1lWm9uZUdldHRlcih0aW1lem9uZTogJ2xvbmcnIHwgJ3Nob3J0Jyk6IERhdGVGb3JtYXR0ZXJGbiB7XG4gIC8vIFRvIHdvcmthcm91bmQgYEludGxgIEFQSSByZXN0cmljdGlvbiBmb3Igc2luZ2xlIHRpbWV6b25lIGxldCBmb3JtYXQgd2l0aCAyNCBob3Vyc1xuICBjb25zdCBvcHRpb25zOiBJbnRsLkRhdGVUaW1lRm9ybWF0T3B0aW9ucyA9IHtcbiAgICBob3VyOiAnMi1kaWdpdCcsXG4gICAgaG91cjEyOiBmYWxzZSxcbiAgICB0aW1lWm9uZU5hbWU6IHRpbWV6b25lLFxuICB9O1xuICByZXR1cm4gZnVuY3Rpb24gKGRhdGU6IERhdGUsIGxvY2FsZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCByZXN1bHQgPSBpbnRsRGF0ZUZvcm1hdChkYXRlLCBsb2NhbGUsIG9wdGlvbnMpO1xuICAgIC8vIFRoZW4gZXh0cmFjdCBmaXJzdCAzIGxldHRlcnMgdGhhdCByZWxhdGVkIHRvIGhvdXJzXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAocmVzdWx0KSB7XG4gICAgICByZXR1cm4gcmVzdWx0LnN1YnN0cmluZygzKTtcbiAgICB9XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIHJldHVybiAnJztcbiAgfTtcbn1cblxuZnVuY3Rpb24gaG91cjEyTW9kaWZ5KFxuICBvcHRpb25zOiBJbnRsLkRhdGVUaW1lRm9ybWF0T3B0aW9ucyxcbiAgdmFsdWU6IGJvb2xlYW4sXG4pOiBJbnRsLkRhdGVUaW1lRm9ybWF0T3B0aW9ucyB7XG4gIG9wdGlvbnMuaG91cjEyID0gdmFsdWU7XG4gIHJldHVybiBvcHRpb25zO1xufVxuXG5mdW5jdGlvbiBkaWdpdENvbmRpdGlvbihwcm9wOiBzdHJpbmcsIGxlbjogbnVtYmVyKTogSW50bC5EYXRlVGltZUZvcm1hdE9wdGlvbnMge1xuICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcblxuICByZXN1bHRbcHJvcF0gPSBsZW4gPT09IDIgPyAnMi1kaWdpdCcgOiAnbnVtZXJpYyc7XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gbmFtZUNvbmRpdGlvbihwcm9wOiBzdHJpbmcsIGxlbjogbnVtYmVyKTogSW50bC5EYXRlVGltZUZvcm1hdE9wdGlvbnMge1xuICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcbiAgaWYgKGxlbiA8IDQpIHtcbiAgICByZXN1bHRbcHJvcF0gPSBsZW4gPiAxID8gJ3Nob3J0JyA6ICduYXJyb3cnO1xuICB9IGVsc2Uge1xuICAgIHJlc3VsdFtwcm9wXSA9ICdsb25nJztcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIGNvbWJpbmUoXG4gIG9wdGlvbnM6IEludGwuRGF0ZVRpbWVGb3JtYXRPcHRpb25zW10sXG4pOiBJbnRsLkRhdGVUaW1lRm9ybWF0T3B0aW9ucyB7XG4gIHJldHVybiBvcHRpb25zLnJlZHVjZSgobWVyZ2VkLCBvcHQpID0+ICh7IC4uLm1lcmdlZCwgLi4ub3B0IH0pLCB7fSk7XG59XG5cbmZ1bmN0aW9uIGRhdGVQYXJ0R2V0dGVyRmFjdG9yeShcbiAgcmV0OiBJbnRsLkRhdGVUaW1lRm9ybWF0T3B0aW9ucyxcbik6IERhdGVGb3JtYXR0ZXJGbiB7XG4gIHJldHVybiAoZGF0ZTogRGF0ZSwgbG9jYWxlOiBzdHJpbmcpOiBzdHJpbmcgPT5cbiAgICBpbnRsRGF0ZUZvcm1hdChkYXRlLCBsb2NhbGUsIHJldCk7XG59XG5cbmNvbnN0IERBVEVfRk9STUFUVEVSX0NBQ0hFID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZ1tdPigpO1xuXG5mdW5jdGlvbiBwYXJ0VG9UaW1lKHBhcnQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBwYXJ0ID09PSBcIicnXCIgPyBcIidcIiA6IHBhcnQucmVwbGFjZSgvKF4nfCckKS9nLCAnJykucmVwbGFjZSgvJycvZywgXCInXCIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGF0ZUZvcm1hdHRlcihcbiAgZm9ybWF0OiBzdHJpbmcsXG4gIGRhdGU6IERhdGUsXG4gIGxvY2FsZTogc3RyaW5nLFxuKTogc3RyaW5nIHtcbiAgY29uc3QgZm4gPSBQQVRURVJOX0FMSUFTRVNbZm9ybWF0XTtcblxuICBpZiAoZm4pIHtcbiAgICByZXR1cm4gZm4oZGF0ZSwgbG9jYWxlKTtcbiAgfVxuXG4gIGNvbnN0IGNhY2hlS2V5ID0gZm9ybWF0O1xuICBsZXQgcGFydHMgPSBEQVRFX0ZPUk1BVFRFUl9DQUNIRS5nZXQoY2FjaGVLZXkpO1xuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gIGlmICghcGFydHMpIHtcbiAgICBwYXJ0cyA9IFtdO1xuICAgIGxldCBtYXRjaDogUmVnRXhwRXhlY0FycmF5IHwgbnVsbDtcbiAgICBEQVRFX0ZPUk1BVFNfU1BMSVQuZXhlYyhmb3JtYXQpO1xuXG4gICAgbGV0IF9mb3JtYXQ6IHN0cmluZyB8IG51bGwgPSBmb3JtYXQ7XG4gICAgd2hpbGUgKF9mb3JtYXQpIHtcbiAgICAgIG1hdGNoID0gREFURV9GT1JNQVRTX1NQTElULmV4ZWMoX2Zvcm1hdCk7XG4gICAgICAvKmlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgcGFydHMgPSBwYXJ0cy5jb25jYXQobWF0Y2guc2xpY2UoMSkpO1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGlvblxuICAgICAgICBfZm9ybWF0ID0gcGFydHMucG9wKCkhO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGFydHMucHVzaChfZm9ybWF0KTtcbiAgICAgICAgX2Zvcm1hdCA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuXG4gICAgREFURV9GT1JNQVRURVJfQ0FDSEUuc2V0KGNhY2hlS2V5LCBwYXJ0cyk7XG4gIH1cblxuICByZXR1cm4gcGFydHMucmVkdWNlKCh0ZXh0LCBwYXJ0KSA9PiB7XG4gICAgY29uc3QgZGF0ZUZvcm1hdEZuID0gREFURV9GT1JNQVRTW3BhcnRdO1xuICAgIHJldHVybiAoXG4gICAgICB0ZXh0ICsgKGRhdGVGb3JtYXRGbiA/IGRhdGVGb3JtYXRGbihkYXRlLCBsb2NhbGUpIDogcGFydFRvVGltZShwYXJ0KSlcbiAgICApO1xuICB9LCAnJyk7XG59XG4iXX0=","import { dateFormatter } from './intl-date-formatter-utils';\nexport class SkyIntlDateFormatter {\n    static format(date, locale, pattern) {\n        return dateFormatter(pattern, date, locale);\n    }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50bC1kYXRlLWZvcm1hdHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9pMThuL3NyYy9saWIvbW9kdWxlcy9pMThuL2ludGwtZGF0ZS1mb3JtYXR0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRTVELE1BQU0sT0FBTyxvQkFBb0I7SUFDeEIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFVLEVBQUUsTUFBYyxFQUFFLE9BQWU7UUFDOUQsT0FBTyxhQUFhLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztJQUM5QyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkYXRlRm9ybWF0dGVyIH0gZnJvbSAnLi9pbnRsLWRhdGUtZm9ybWF0dGVyLXV0aWxzJztcblxuZXhwb3J0IGNsYXNzIFNreUludGxEYXRlRm9ybWF0dGVyIHtcbiAgcHVibGljIHN0YXRpYyBmb3JtYXQoZGF0ZTogRGF0ZSwgbG9jYWxlOiBzdHJpbmcsIHBhdHRlcm46IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGRhdGVGb3JtYXR0ZXIocGF0dGVybiwgZGF0ZSwgbG9jYWxlKTtcbiAgfVxufVxuIl19","export var SkyIntlNumberFormatStyle;\n(function (SkyIntlNumberFormatStyle) {\n    SkyIntlNumberFormatStyle[SkyIntlNumberFormatStyle[\"Decimal\"] = 0] = \"Decimal\";\n    SkyIntlNumberFormatStyle[SkyIntlNumberFormatStyle[\"Percent\"] = 1] = \"Percent\";\n    SkyIntlNumberFormatStyle[SkyIntlNumberFormatStyle[\"Currency\"] = 2] = \"Currency\";\n})(SkyIntlNumberFormatStyle || (SkyIntlNumberFormatStyle = {}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50bC1udW1iZXItZm9ybWF0LXN0eWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2kxOG4vc3JjL2xpYi9tb2R1bGVzL2kxOG4vaW50bC1udW1iZXItZm9ybWF0LXN0eWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBTixJQUFZLHdCQUlYO0FBSkQsV0FBWSx3QkFBd0I7SUFDbEMsNkVBQU8sQ0FBQTtJQUNQLDZFQUFPLENBQUE7SUFDUCwrRUFBUSxDQUFBO0FBQ1YsQ0FBQyxFQUpXLHdCQUF3QixLQUF4Qix3QkFBd0IsUUFJbkMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZW51bSBTa3lJbnRsTnVtYmVyRm9ybWF0U3R5bGUge1xuICBEZWNpbWFsLFxuICBQZXJjZW50LFxuICBDdXJyZW5jeSxcbn1cbiJdfQ==","import { SkyIntlNumberFormatStyle } from './intl-number-format-style';\nexport class SkyIntlNumberFormatter {\n    static format(num, locale, style, opts = {}) {\n        const { minimumIntegerDigits, minimumFractionDigits, maximumFractionDigits, currency, currencySign = 'standard', currencyDisplay = 'code', } = opts;\n        const options = {\n            minimumIntegerDigits,\n            minimumFractionDigits,\n            maximumFractionDigits,\n            style: SkyIntlNumberFormatStyle[style].toLowerCase(),\n            currencySign,\n        };\n        if (style === SkyIntlNumberFormatStyle.Currency) {\n            options.currency = typeof currency === 'string' ? currency : undefined;\n            options.currencyDisplay = currencyDisplay;\n        }\n        return new Intl.NumberFormat(locale, options).format(num);\n    }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50bC1udW1iZXItZm9ybWF0dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2kxOG4vc3JjL2xpYi9tb2R1bGVzL2kxOG4vaW50bC1udW1iZXItZm9ybWF0dGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBR3RFLE1BQU0sT0FBZ0Isc0JBQXNCO0lBQ25DLE1BQU0sQ0FBQyxNQUFNLENBQ2xCLEdBQVcsRUFDWCxNQUFjLEVBQ2QsS0FBK0IsRUFDL0IsT0FBc0MsRUFBRTtRQUV4QyxNQUFNLEVBQ0osb0JBQW9CLEVBQ3BCLHFCQUFxQixFQUNyQixxQkFBcUIsRUFDckIsUUFBUSxFQUNSLFlBQVksR0FBRyxVQUFVLEVBQ3pCLGVBQWUsR0FBRyxNQUFNLEdBQ3pCLEdBQUcsSUFBSSxDQUFDO1FBRVQsTUFBTSxPQUFPLEdBQXdEO1lBQ25FLG9CQUFvQjtZQUNwQixxQkFBcUI7WUFDckIscUJBQXFCO1lBQ3JCLEtBQUssRUFBRSx3QkFBd0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxXQUFXLEVBR3BDO1lBQ2QsWUFBWTtTQUNiLENBQUM7UUFFRixJQUFJLEtBQUssS0FBSyx3QkFBd0IsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNoRCxPQUFPLENBQUMsUUFBUSxHQUFHLE9BQU8sUUFBUSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDdkUsT0FBTyxDQUFDLGVBQWUsR0FBRyxlQUFlLENBQUM7UUFDNUMsQ0FBQztRQUVELE9BQU8sSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDNUQsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2t5SW50bE51bWJlckZvcm1hdFN0eWxlIH0gZnJvbSAnLi9pbnRsLW51bWJlci1mb3JtYXQtc3R5bGUnO1xuaW1wb3J0IHsgU2t5SW50bE51bWJlckZvcm1hdHRlck9wdGlvbnMgfSBmcm9tICcuL2ludGwtbnVtYmVyLWZvcm1hdHRlci1vcHRpb25zJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFNreUludGxOdW1iZXJGb3JtYXR0ZXIge1xuICBwdWJsaWMgc3RhdGljIGZvcm1hdChcbiAgICBudW06IG51bWJlcixcbiAgICBsb2NhbGU6IHN0cmluZyxcbiAgICBzdHlsZTogU2t5SW50bE51bWJlckZvcm1hdFN0eWxlLFxuICAgIG9wdHM6IFNreUludGxOdW1iZXJGb3JtYXR0ZXJPcHRpb25zID0ge30sXG4gICk6IHN0cmluZyB7XG4gICAgY29uc3Qge1xuICAgICAgbWluaW11bUludGVnZXJEaWdpdHMsXG4gICAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHMsXG4gICAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHMsXG4gICAgICBjdXJyZW5jeSxcbiAgICAgIGN1cnJlbmN5U2lnbiA9ICdzdGFuZGFyZCcsXG4gICAgICBjdXJyZW5jeURpc3BsYXkgPSAnY29kZScsXG4gICAgfSA9IG9wdHM7XG5cbiAgICBjb25zdCBvcHRpb25zOiBJbnRsLk51bWJlckZvcm1hdE9wdGlvbnMgJiB7IGN1cnJlbmN5U2lnbjogc3RyaW5nIH0gPSB7XG4gICAgICBtaW5pbXVtSW50ZWdlckRpZ2l0cyxcbiAgICAgIG1pbmltdW1GcmFjdGlvbkRpZ2l0cyxcbiAgICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0cyxcbiAgICAgIHN0eWxlOiBTa3lJbnRsTnVtYmVyRm9ybWF0U3R5bGVbc3R5bGVdLnRvTG93ZXJDYXNlKCkgYXNcbiAgICAgICAgfCAnZGVjaW1hbCdcbiAgICAgICAgfCAncGVyY2VudCdcbiAgICAgICAgfCAnY3VycmVuY3knLFxuICAgICAgY3VycmVuY3lTaWduLFxuICAgIH07XG5cbiAgICBpZiAoc3R5bGUgPT09IFNreUludGxOdW1iZXJGb3JtYXRTdHlsZS5DdXJyZW5jeSkge1xuICAgICAgb3B0aW9ucy5jdXJyZW5jeSA9IHR5cGVvZiBjdXJyZW5jeSA9PT0gJ3N0cmluZycgPyBjdXJyZW5jeSA6IHVuZGVmaW5lZDtcbiAgICAgIG9wdGlvbnMuY3VycmVuY3lEaXNwbGF5ID0gY3VycmVuY3lEaXNwbGF5O1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgSW50bC5OdW1iZXJGb3JtYXQobG9jYWxlLCBvcHRpb25zKS5mb3JtYXQobnVtKTtcbiAgfVxufVxuIl19","// #endregion\n/**\n * @deprecated `SkyLibResourcesProvider` is no longer needed and will be removed in a future major version of SKY UX.\n * @internal\n */\nexport class SkyLibResourcesProvider {\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliLXJlc291cmNlcy1wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9pMThuL3NyYy9saWIvbW9kdWxlcy9pMThuL2xpYi1yZXNvdXJjZXMtcHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsYUFBYTtBQUViOzs7R0FHRztBQUNILE1BQU0sT0FBZ0IsdUJBQXVCO0NBSzVDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gI3JlZ2lvbiBpbXBvcnRzXG5pbXBvcnQgeyBTa3lBcHBMb2NhbGVJbmZvIH0gZnJvbSAnLi9sb2NhbGUtaW5mbyc7XG5cbi8vICNlbmRyZWdpb25cblxuLyoqXG4gKiBAZGVwcmVjYXRlZCBgU2t5TGliUmVzb3VyY2VzUHJvdmlkZXJgIGlzIG5vIGxvbmdlciBuZWVkZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSBtYWpvciB2ZXJzaW9uIG9mIFNLWSBVWC5cbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgU2t5TGliUmVzb3VyY2VzUHJvdmlkZXIge1xuICBwdWJsaWMgYWJzdHJhY3QgZ2V0U3RyaW5nOiAoXG4gICAgbG9jYWxlSW5mbzogU2t5QXBwTG9jYWxlSW5mbyxcbiAgICBuYW1lOiBzdHJpbmcsXG4gICkgPT4gc3RyaW5nIHwgdW5kZWZpbmVkO1xufVxuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2t5dXgtaTE4bi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9pMThuL3NyYy9za3l1eC1pMThuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":["observableOf","i1.SkyAppLocaleProvider","i2.SkyAppResourceNameProvider","i1.SkyLibResourcesService","i2.SkyAppLocaleProvider","i3.SkyAppResourceNameProvider","i1.SkyAppResourcesService"],"mappings":"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"}