{"version":3,"file":"gtmDataSyncLib.generic.prod.js","mappings":"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","sources":["webpack://gtm-datasync-library/./node_modules/lodash/_DataView.js","webpack://gtm-datasync-library/./node_modules/lodash/_Hash.js","webpack://gtm-datasync-library/./node_modules/lodash/_ListCache.js","webpack://gtm-datasync-library/./node_modules/lodash/_Map.js","webpack://gtm-datasync-library/./node_modules/lodash/_MapCache.js","webpack://gtm-datasync-library/./node_modules/lodash/_Promise.js","webpack://gtm-datasync-library/./node_modules/lodash/_Set.js","webpack://gtm-datasync-library/./node_modules/lodash/_SetCache.js","webpack://gtm-datasync-library/./node_modules/lodash/_Stack.js","webpack://gtm-datasync-library/./node_modules/lodash/_Symbol.js","webpack://gtm-datasync-library/./node_modules/lodash/_Uint8Array.js","webpack://gtm-datasync-library/./node_modules/lodash/_WeakMap.js","webpack://gtm-datasync-library/./node_modules/lodash/_arrayFilter.js","webpack://gtm-datasync-library/./node_modules/lodash/_arrayLikeKeys.js","webpack://gtm-datasync-library/./node_modules/lodash/_arrayPush.js","webpack://gtm-datasync-library/./node_modules/lodash/_arraySome.js","webpack://gtm-datasync-library/./node_modules/lodash/_assocIndexOf.js","webpack://gtm-datasync-library/./node_modules/lodash/_baseGetAllKeys.js","webpack://gtm-datasync-library/./node_modules/lodash/_baseGetTag.js","webpack://gtm-datasync-library/./node_modules/lodash/_baseIsArguments.js","webpack://gtm-datasync-library/./node_modules/lodash/_baseIsEqual.js","webpack://gtm-datasync-library/./node_modules/lodash/_baseIsEqualDeep.js","webpack://gtm-datasync-library/./node_modules/lodash/_baseIsNative.js","webpack://gtm-datasync-library/./node_modules/lodash/_baseIsTypedArray.js","webpack://gtm-datasync-library/./node_modules/lodash/_baseKeys.js","webpack://gtm-datasync-library/./node_modules/lodash/_baseTimes.js","webpack://gtm-datasync-library/./node_modules/lodash/_baseUnary.js","webpack://gtm-datasync-library/./node_modules/lodash/_cacheHas.js","webpack://gtm-datasync-library/./node_modules/lodash/_coreJsData.js","webpack://gtm-datasync-library/./node_modules/lodash/_equalArrays.js","webpack://gtm-datasync-library/./node_modules/lodash/_equalByTag.js","webpack://gtm-datasync-library/./node_modules/lodash/_equalObjects.js","webpack://gtm-datasync-library/./node_modules/lodash/_freeGlobal.js","webpack://gtm-datasync-library/./node_modules/lodash/_getAllKeys.js","webpack://gtm-datasync-library/./node_modules/lodash/_getMapData.js","webpack://gtm-datasync-library/./node_modules/lodash/_getNative.js","webpack://gtm-datasync-library/./node_modules/lodash/_getRawTag.js","webpack://gtm-datasync-library/./node_modules/lodash/_getSymbols.js","webpack://gtm-datasync-library/./node_modules/lodash/_getTag.js","webpack://gtm-datasync-library/./node_modules/lodash/_getValue.js","webpack://gtm-datasync-library/./node_modules/lodash/_hashClear.js","webpack://gtm-datasync-library/./node_modules/lodash/_hashDelete.js","webpack://gtm-datasync-library/./node_modules/lodash/_hashGet.js","webpack://gtm-datasync-library/./node_modules/lodash/_hashHas.js","webpack://gtm-datasync-library/./node_modules/lodash/_hashSet.js","webpack://gtm-datasync-library/./node_modules/lodash/_isIndex.js","webpack://gtm-datasync-library/./node_modules/lodash/_isKeyable.js","webpack://gtm-datasync-library/./node_modules/lodash/_isMasked.js","webpack://gtm-datasync-library/./node_modules/lodash/_isPrototype.js","webpack://gtm-datasync-library/./node_modules/lodash/_listCacheClear.js","webpack://gtm-datasync-library/./node_modules/lodash/_listCacheDelete.js","webpack://gtm-datasync-library/./node_modules/lodash/_listCacheGet.js","webpack://gtm-datasync-library/./node_modules/lodash/_listCacheHas.js","webpack://gtm-datasync-library/./node_modules/lodash/_listCacheSet.js","webpack://gtm-datasync-library/./node_modules/lodash/_mapCacheClear.js","webpack://gtm-datasync-library/./node_modules/lodash/_mapCacheDelete.js","webpack://gtm-datasync-library/./node_modules/lodash/_mapCacheGet.js","webpack://gtm-datasync-library/./node_modules/lodash/_mapCacheHas.js","webpack://gtm-datasync-library/./node_modules/lodash/_mapCacheSet.js","webpack://gtm-datasync-library/./node_modules/lodash/_mapToArray.js","webpack://gtm-datasync-library/./node_modules/lodash/_nativeCreate.js","webpack://gtm-datasync-library/./node_modules/lodash/_nativeKeys.js","webpack://gtm-datasync-library/./node_modules/lodash/_nodeUtil.js","webpack://gtm-datasync-library/./node_modules/lodash/_objectToString.js","webpack://gtm-datasync-library/./node_modules/lodash/_overArg.js","webpack://gtm-datasync-library/./node_modules/lodash/_root.js","webpack://gtm-datasync-library/./node_modules/lodash/_setCacheAdd.js","webpack://gtm-datasync-library/./node_modules/lodash/_setCacheHas.js","webpack://gtm-datasync-library/./node_modules/lodash/_setToArray.js","webpack://gtm-datasync-library/./node_modules/lodash/_stackClear.js","webpack://gtm-datasync-library/./node_modules/lodash/_stackDelete.js","webpack://gtm-datasync-library/./node_modules/lodash/_stackGet.js","webpack://gtm-datasync-library/./node_modules/lodash/_stackHas.js","webpack://gtm-datasync-library/./node_modules/lodash/_stackSet.js","webpack://gtm-datasync-library/./node_modules/lodash/_toSource.js","webpack://gtm-datasync-library/./node_modules/lodash/eq.js","webpack://gtm-datasync-library/./node_modules/lodash/isArguments.js","webpack://gtm-datasync-library/./node_modules/lodash/isArray.js","webpack://gtm-datasync-library/./node_modules/lodash/isArrayLike.js","webpack://gtm-datasync-library/./node_modules/lodash/isBuffer.js","webpack://gtm-datasync-library/./node_modules/lodash/isEqual.js","webpack://gtm-datasync-library/./node_modules/lodash/isFunction.js","webpack://gtm-datasync-library/./node_modules/lodash/isLength.js","webpack://gtm-datasync-library/./node_modules/lodash/isObject.js","webpack://gtm-datasync-library/./node_modules/lodash/isObjectLike.js","webpack://gtm-datasync-library/./node_modules/lodash/isTypedArray.js","webpack://gtm-datasync-library/./node_modules/lodash/keys.js","webpack://gtm-datasync-library/./node_modules/lodash/stubArray.js","webpack://gtm-datasync-library/./node_modules/lodash/stubFalse.js","webpack://gtm-datasync-library/./node_modules/reflect-metadata/Reflect.js","webpack://gtm-datasync-library/webpack/bootstrap","webpack://gtm-datasync-library/webpack/runtime/compat get default export","webpack://gtm-datasync-library/webpack/runtime/define property getters","webpack://gtm-datasync-library/webpack/runtime/global","webpack://gtm-datasync-library/webpack/runtime/hasOwnProperty shorthand","webpack://gtm-datasync-library/webpack/runtime/node module decorator","webpack://gtm-datasync-library/./node_modules/tsyringe/dist/esm5/types/lifecycle.js","webpack://gtm-datasync-library/./src/shared/ServiceTokens.ts","webpack://gtm-datasync-library/./src/utils/HttpMethods.ts","webpack://gtm-datasync-library/./src/utils/LogLevels.ts","webpack://gtm-datasync-library/./src/gtm/Cookies.ts","webpack://gtm-datasync-library/./src/cdp/BlueConicProfileProperties.ts","webpack://gtm-datasync-library/./src/shared/DataSyncLibEventNames.ts","webpack://gtm-datasync-library/./src/shared/StreamMediaType.ts","webpack://gtm-datasync-library/./src/cdp/TimelineEventsId.ts","webpack://gtm-datasync-library/./src/gtm/GtmEventNames.ts","webpack://gtm-datasync-library/./node_modules/tsyringe/node_modules/tslib/tslib.es6.js","webpack://gtm-datasync-library/./node_modules/tsyringe/dist/esm5/providers/class-provider.js","webpack://gtm-datasync-library/./node_modules/tsyringe/dist/esm5/providers/factory-provider.js","webpack://gtm-datasync-library/./node_modules/tsyringe/dist/esm5/lazy-helpers.js","webpack://gtm-datasync-library/./node_modules/tsyringe/dist/esm5/providers/injection-token.js","webpack://gtm-datasync-library/./node_modules/tsyringe/dist/esm5/providers/token-provider.js","webpack://gtm-datasync-library/./node_modules/tsyringe/dist/esm5/providers/value-provider.js","webpack://gtm-datasync-library/./node_modules/tsyringe/dist/esm5/providers/provider.js","webpack://gtm-datasync-library/./node_modules/tsyringe/dist/esm5/registry-base.js","webpack://gtm-datasync-library/./node_modules/tsyringe/dist/esm5/registry.js","webpack://gtm-datasync-library/./node_modules/tsyringe/dist/esm5/resolution-context.js","webpack://gtm-datasync-library/./node_modules/tsyringe/dist/esm5/error-helpers.js","webpack://gtm-datasync-library/./node_modules/tsyringe/dist/esm5/types/disposable.js","webpack://gtm-datasync-library/./node_modules/tsyringe/dist/esm5/interceptors.js","webpack://gtm-datasync-library/./node_modules/tsyringe/dist/esm5/dependency-container.js","webpack://gtm-datasync-library/./node_modules/tsyringe/dist/esm5/reflection-helpers.js","webpack://gtm-datasync-library/./node_modules/tsyringe/dist/esm5/decorators/inject.js","webpack://gtm-datasync-library/./node_modules/tsyringe/dist/esm5/decorators/injectable.js","webpack://gtm-datasync-library/./node_modules/tsyringe/dist/esm5/decorators/singleton.js","webpack://gtm-datasync-library/./node_modules/tsyringe/dist/esm5/index.js","webpack://gtm-datasync-library/./src/gtm/GtmUtils.ts","webpack://gtm-datasync-library/./src/utils/JsonRequests.ts","webpack://gtm-datasync-library/./node_modules/typescript-cookie/dist/typescript-cookie.mjs","webpack://gtm-datasync-library/./src/utils/Logger.ts","webpack://gtm-datasync-library/./src/utils/Cookies.ts","webpack://gtm-datasync-library/./src/utils/LocalStorage.ts","webpack://gtm-datasync-library/./src/shared/GtmDataSyncLib.ts","webpack://gtm-datasync-library/./src/shared/ArrayUtils.ts","webpack://gtm-datasync-library/./src/googleTagPublisher/gtpUtils.ts","webpack://gtm-datasync-library/./src/cdp/ManageSegments.ts","webpack://gtm-datasync-library/./src/shared/SiteRules.ts","webpack://gtm-datasync-library/./src/cbcUie/UieClient.ts","webpack://gtm-datasync-library/./src/cdp/SetupProfile.ts","webpack://gtm-datasync-library/./src/cdp/BlueConicUtils.ts","webpack://gtm-datasync-library/./src/cdp/CdpClient.ts","webpack://gtm-datasync-library/./src/shared/UserDataLayerAdapterFactory.ts","webpack://gtm-datasync-library/./src/caspian/userIdentifiers/CaspianUserIdentifiersApiClient.ts","webpack://gtm-datasync-library/./src/shared/UserIdExchange.ts","webpack://gtm-datasync-library/./src/shared/UserManager.ts","webpack://gtm-datasync-library/./src/caspian/readJs/ReadJsApiClient.ts","webpack://gtm-datasync-library/./src/utils/PostalCode.ts","webpack://gtm-datasync-library/./src/shared/geoLocation/GeoIpService.ts","webpack://gtm-datasync-library/./src/generic/GenericLib.ts","webpack://gtm-datasync-library/./src/generic/GenericUtils.ts","webpack://gtm-datasync-library/./src/shared/DataLayerHelper.ts","webpack://gtm-datasync-library/./src/generic/GenericPageAttributesExtractor.ts","webpack://gtm-datasync-library/./src/generic/explora/ExploraSiteSettings.ts","webpack://gtm-datasync-library/./src/generic/artv/ArtvSiteSettings.ts","webpack://gtm-datasync-library/./src/dotCa/DotCaSiteSettings.ts","webpack://gtm-datasync-library/./src/shared/UserDataLayerAdapter.ts","webpack://gtm-datasync-library/./src/generic/GenericUserDataLayerAdapter.ts","webpack://gtm-datasync-library/./src/generic/GenericUserDataLayerAdapterFactory.ts","webpack://gtm-datasync-library/./src/shared/geoLocation/GeoCoordinatesService.ts","webpack://gtm-datasync-library/./src/shared/geoLocation/GeoIpCoordinatesService.ts","webpack://gtm-datasync-library/./src/generic/ServicesRegistration.ts","webpack://gtm-datasync-library/./src/cdp/AddBlueConicScript.ts","webpack://gtm-datasync-library/./src/entries/GenericEntry.ts"],"sourcesContent":["var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","var MapCache = require('./_MapCache'),\n setCacheAdd = require('./_setCacheAdd'),\n setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","var ListCache = require('./_ListCache'),\n stackClear = require('./_stackClear'),\n stackDelete = require('./_stackDelete'),\n stackGet = require('./_stackGet'),\n stackHas = require('./_stackHas'),\n stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nmodule.exports = arrayFilter;\n","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arraySome;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","var arrayPush = require('./_arrayPush'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n","var Stack = require('./_Stack'),\n equalArrays = require('./_equalArrays'),\n equalByTag = require('./_equalByTag'),\n equalObjects = require('./_equalObjects'),\n getTag = require('./_getTag'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","var isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","var SetCache = require('./_SetCache'),\n arraySome = require('./_arraySome'),\n cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalArrays;\n","var Symbol = require('./_Symbol'),\n Uint8Array = require('./_Uint8Array'),\n eq = require('./eq'),\n equalArrays = require('./_equalArrays'),\n mapToArray = require('./_mapToArray'),\n setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nmodule.exports = equalByTag;\n","var getAllKeys = require('./_getAllKeys');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalObjects;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbols = require('./_getSymbols'),\n keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","var arrayFilter = require('./_arrayFilter'),\n stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nmodule.exports = getSymbols;\n","var DataView = require('./_DataView'),\n Map = require('./_Map'),\n Promise = require('./_Promise'),\n Set = require('./_Set'),\n WeakMap = require('./_WeakMap'),\n baseGetTag = require('./_baseGetTag'),\n toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nmodule.exports = mapToArray;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nmodule.exports = stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","var ListCache = require('./_ListCache'),\n Map = require('./_Map'),\n MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nmodule.exports = stackSet;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","var baseIsEqual = require('./_baseIsEqual');\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\nmodule.exports = isEqual;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nmodule.exports = stubArray;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","/*! *****************************************************************************\nCopyright (C) Microsoft. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\nvar Reflect;\n(function (Reflect) {\n // Metadata Proposal\n // https://rbuckton.github.io/reflect-metadata/\n (function (factory) {\n var root = typeof global === \"object\" ? global :\n typeof self === \"object\" ? self :\n typeof this === \"object\" ? this :\n Function(\"return this;\")();\n var exporter = makeExporter(Reflect);\n if (typeof root.Reflect === \"undefined\") {\n root.Reflect = Reflect;\n }\n else {\n exporter = makeExporter(root.Reflect, exporter);\n }\n factory(exporter);\n function makeExporter(target, previous) {\n return function (key, value) {\n if (typeof target[key] !== \"function\") {\n Object.defineProperty(target, key, { configurable: true, writable: true, value: value });\n }\n if (previous)\n previous(key, value);\n };\n }\n })(function (exporter) {\n var hasOwn = Object.prototype.hasOwnProperty;\n // feature test for Symbol support\n var supportsSymbol = typeof Symbol === \"function\";\n var toPrimitiveSymbol = supportsSymbol && typeof Symbol.toPrimitive !== \"undefined\" ? Symbol.toPrimitive : \"@@toPrimitive\";\n var iteratorSymbol = supportsSymbol && typeof Symbol.iterator !== \"undefined\" ? Symbol.iterator : \"@@iterator\";\n var supportsCreate = typeof Object.create === \"function\"; // feature test for Object.create support\n var supportsProto = { __proto__: [] } instanceof Array; // feature test for __proto__ support\n var downLevel = !supportsCreate && !supportsProto;\n var HashMap = {\n // create an object in dictionary mode (a.k.a. \"slow\" mode in v8)\n create: supportsCreate\n ? function () { return MakeDictionary(Object.create(null)); }\n : supportsProto\n ? function () { return MakeDictionary({ __proto__: null }); }\n : function () { return MakeDictionary({}); },\n has: downLevel\n ? function (map, key) { return hasOwn.call(map, key); }\n : function (map, key) { return key in map; },\n get: downLevel\n ? function (map, key) { return hasOwn.call(map, key) ? map[key] : undefined; }\n : function (map, key) { return map[key]; },\n };\n // Load global or shim versions of Map, Set, and WeakMap\n var functionPrototype = Object.getPrototypeOf(Function);\n var usePolyfill = typeof process === \"object\" && process.env && process.env[\"REFLECT_METADATA_USE_MAP_POLYFILL\"] === \"true\";\n var _Map = !usePolyfill && typeof Map === \"function\" && typeof Map.prototype.entries === \"function\" ? Map : CreateMapPolyfill();\n var _Set = !usePolyfill && typeof Set === \"function\" && typeof Set.prototype.entries === \"function\" ? Set : CreateSetPolyfill();\n var _WeakMap = !usePolyfill && typeof WeakMap === \"function\" ? WeakMap : CreateWeakMapPolyfill();\n // [[Metadata]] internal slot\n // https://rbuckton.github.io/reflect-metadata/#ordinary-object-internal-methods-and-internal-slots\n var Metadata = new _WeakMap();\n /**\n * Applies a set of decorators to a property of a target object.\n * @param decorators An array of decorators.\n * @param target The target object.\n * @param propertyKey (Optional) The property key to decorate.\n * @param attributes (Optional) The property descriptor for the target key.\n * @remarks Decorators are applied in reverse order.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * Example = Reflect.decorate(decoratorsArray, Example);\n *\n * // property (on constructor)\n * Reflect.decorate(decoratorsArray, Example, \"staticProperty\");\n *\n * // property (on prototype)\n * Reflect.decorate(decoratorsArray, Example.prototype, \"property\");\n *\n * // method (on constructor)\n * Object.defineProperty(Example, \"staticMethod\",\n * Reflect.decorate(decoratorsArray, Example, \"staticMethod\",\n * Object.getOwnPropertyDescriptor(Example, \"staticMethod\")));\n *\n * // method (on prototype)\n * Object.defineProperty(Example.prototype, \"method\",\n * Reflect.decorate(decoratorsArray, Example.prototype, \"method\",\n * Object.getOwnPropertyDescriptor(Example.prototype, \"method\")));\n *\n */\n function decorate(decorators, target, propertyKey, attributes) {\n if (!IsUndefined(propertyKey)) {\n if (!IsArray(decorators))\n throw new TypeError();\n if (!IsObject(target))\n throw new TypeError();\n if (!IsObject(attributes) && !IsUndefined(attributes) && !IsNull(attributes))\n throw new TypeError();\n if (IsNull(attributes))\n attributes = undefined;\n propertyKey = ToPropertyKey(propertyKey);\n return DecorateProperty(decorators, target, propertyKey, attributes);\n }\n else {\n if (!IsArray(decorators))\n throw new TypeError();\n if (!IsConstructor(target))\n throw new TypeError();\n return DecorateConstructor(decorators, target);\n }\n }\n exporter(\"decorate\", decorate);\n // 4.1.2 Reflect.metadata(metadataKey, metadataValue)\n // https://rbuckton.github.io/reflect-metadata/#reflect.metadata\n /**\n * A default metadata decorator factory that can be used on a class, class member, or parameter.\n * @param metadataKey The key for the metadata entry.\n * @param metadataValue The value for the metadata entry.\n * @returns A decorator function.\n * @remarks\n * If `metadataKey` is already defined for the target and target key, the\n * metadataValue for that key will be overwritten.\n * @example\n *\n * // constructor\n * @Reflect.metadata(key, value)\n * class Example {\n * }\n *\n * // property (on constructor, TypeScript only)\n * class Example {\n * @Reflect.metadata(key, value)\n * static staticProperty;\n * }\n *\n * // property (on prototype, TypeScript only)\n * class Example {\n * @Reflect.metadata(key, value)\n * property;\n * }\n *\n * // method (on constructor)\n * class Example {\n * @Reflect.metadata(key, value)\n * static staticMethod() { }\n * }\n *\n * // method (on prototype)\n * class Example {\n * @Reflect.metadata(key, value)\n * method() { }\n * }\n *\n */\n function metadata(metadataKey, metadataValue) {\n function decorator(target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey) && !IsPropertyKey(propertyKey))\n throw new TypeError();\n OrdinaryDefineOwnMetadata(metadataKey, metadataValue, target, propertyKey);\n }\n return decorator;\n }\n exporter(\"metadata\", metadata);\n /**\n * Define a unique metadata entry on the target.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param metadataValue A value that contains attached metadata.\n * @param target The target object on which to define metadata.\n * @param propertyKey (Optional) The property key for the target.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * Reflect.defineMetadata(\"custom:annotation\", options, Example);\n *\n * // property (on constructor)\n * Reflect.defineMetadata(\"custom:annotation\", options, Example, \"staticProperty\");\n *\n * // property (on prototype)\n * Reflect.defineMetadata(\"custom:annotation\", options, Example.prototype, \"property\");\n *\n * // method (on constructor)\n * Reflect.defineMetadata(\"custom:annotation\", options, Example, \"staticMethod\");\n *\n * // method (on prototype)\n * Reflect.defineMetadata(\"custom:annotation\", options, Example.prototype, \"method\");\n *\n * // decorator factory as metadata-producing annotation.\n * function MyAnnotation(options): Decorator {\n * return (target, key?) => Reflect.defineMetadata(\"custom:annotation\", options, target, key);\n * }\n *\n */\n function defineMetadata(metadataKey, metadataValue, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryDefineOwnMetadata(metadataKey, metadataValue, target, propertyKey);\n }\n exporter(\"defineMetadata\", defineMetadata);\n /**\n * Gets a value indicating whether the target object or its prototype chain has the provided metadata key defined.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns `true` if the metadata key was defined on the target object or its prototype chain; otherwise, `false`.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.hasMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.hasMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.hasMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.hasMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.hasMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function hasMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryHasMetadata(metadataKey, target, propertyKey);\n }\n exporter(\"hasMetadata\", hasMetadata);\n /**\n * Gets a value indicating whether the target object has the provided metadata key defined.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns `true` if the metadata key was defined on the target object; otherwise, `false`.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function hasOwnMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryHasOwnMetadata(metadataKey, target, propertyKey);\n }\n exporter(\"hasOwnMetadata\", hasOwnMetadata);\n /**\n * Gets the metadata value for the provided metadata key on the target object or its prototype chain.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns The metadata value for the metadata key if found; otherwise, `undefined`.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.getMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.getMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.getMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.getMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.getMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function getMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryGetMetadata(metadataKey, target, propertyKey);\n }\n exporter(\"getMetadata\", getMetadata);\n /**\n * Gets the metadata value for the provided metadata key on the target object.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns The metadata value for the metadata key if found; otherwise, `undefined`.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function getOwnMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryGetOwnMetadata(metadataKey, target, propertyKey);\n }\n exporter(\"getOwnMetadata\", getOwnMetadata);\n /**\n * Gets the metadata keys defined on the target object or its prototype chain.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns An array of unique metadata keys.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.getMetadataKeys(Example);\n *\n * // property (on constructor)\n * result = Reflect.getMetadataKeys(Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.getMetadataKeys(Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.getMetadataKeys(Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.getMetadataKeys(Example.prototype, \"method\");\n *\n */\n function getMetadataKeys(target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryMetadataKeys(target, propertyKey);\n }\n exporter(\"getMetadataKeys\", getMetadataKeys);\n /**\n * Gets the unique metadata keys defined on the target object.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns An array of unique metadata keys.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.getOwnMetadataKeys(Example);\n *\n * // property (on constructor)\n * result = Reflect.getOwnMetadataKeys(Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.getOwnMetadataKeys(Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.getOwnMetadataKeys(Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.getOwnMetadataKeys(Example.prototype, \"method\");\n *\n */\n function getOwnMetadataKeys(target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryOwnMetadataKeys(target, propertyKey);\n }\n exporter(\"getOwnMetadataKeys\", getOwnMetadataKeys);\n /**\n * Deletes the metadata entry from the target object with the provided key.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns `true` if the metadata entry was found and deleted; otherwise, false.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function deleteMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n var metadataMap = GetOrCreateMetadataMap(target, propertyKey, /*Create*/ false);\n if (IsUndefined(metadataMap))\n return false;\n if (!metadataMap.delete(metadataKey))\n return false;\n if (metadataMap.size > 0)\n return true;\n var targetMetadata = Metadata.get(target);\n targetMetadata.delete(propertyKey);\n if (targetMetadata.size > 0)\n return true;\n Metadata.delete(target);\n return true;\n }\n exporter(\"deleteMetadata\", deleteMetadata);\n function DecorateConstructor(decorators, target) {\n for (var i = decorators.length - 1; i >= 0; --i) {\n var decorator = decorators[i];\n var decorated = decorator(target);\n if (!IsUndefined(decorated) && !IsNull(decorated)) {\n if (!IsConstructor(decorated))\n throw new TypeError();\n target = decorated;\n }\n }\n return target;\n }\n function DecorateProperty(decorators, target, propertyKey, descriptor) {\n for (var i = decorators.length - 1; i >= 0; --i) {\n var decorator = decorators[i];\n var decorated = decorator(target, propertyKey, descriptor);\n if (!IsUndefined(decorated) && !IsNull(decorated)) {\n if (!IsObject(decorated))\n throw new TypeError();\n descriptor = decorated;\n }\n }\n return descriptor;\n }\n function GetOrCreateMetadataMap(O, P, Create) {\n var targetMetadata = Metadata.get(O);\n if (IsUndefined(targetMetadata)) {\n if (!Create)\n return undefined;\n targetMetadata = new _Map();\n Metadata.set(O, targetMetadata);\n }\n var metadataMap = targetMetadata.get(P);\n if (IsUndefined(metadataMap)) {\n if (!Create)\n return undefined;\n metadataMap = new _Map();\n targetMetadata.set(P, metadataMap);\n }\n return metadataMap;\n }\n // 3.1.1.1 OrdinaryHasMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinaryhasmetadata\n function OrdinaryHasMetadata(MetadataKey, O, P) {\n var hasOwn = OrdinaryHasOwnMetadata(MetadataKey, O, P);\n if (hasOwn)\n return true;\n var parent = OrdinaryGetPrototypeOf(O);\n if (!IsNull(parent))\n return OrdinaryHasMetadata(MetadataKey, parent, P);\n return false;\n }\n // 3.1.2.1 OrdinaryHasOwnMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinaryhasownmetadata\n function OrdinaryHasOwnMetadata(MetadataKey, O, P) {\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ false);\n if (IsUndefined(metadataMap))\n return false;\n return ToBoolean(metadataMap.has(MetadataKey));\n }\n // 3.1.3.1 OrdinaryGetMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarygetmetadata\n function OrdinaryGetMetadata(MetadataKey, O, P) {\n var hasOwn = OrdinaryHasOwnMetadata(MetadataKey, O, P);\n if (hasOwn)\n return OrdinaryGetOwnMetadata(MetadataKey, O, P);\n var parent = OrdinaryGetPrototypeOf(O);\n if (!IsNull(parent))\n return OrdinaryGetMetadata(MetadataKey, parent, P);\n return undefined;\n }\n // 3.1.4.1 OrdinaryGetOwnMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarygetownmetadata\n function OrdinaryGetOwnMetadata(MetadataKey, O, P) {\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ false);\n if (IsUndefined(metadataMap))\n return undefined;\n return metadataMap.get(MetadataKey);\n }\n // 3.1.5.1 OrdinaryDefineOwnMetadata(MetadataKey, MetadataValue, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarydefineownmetadata\n function OrdinaryDefineOwnMetadata(MetadataKey, MetadataValue, O, P) {\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ true);\n metadataMap.set(MetadataKey, MetadataValue);\n }\n // 3.1.6.1 OrdinaryMetadataKeys(O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarymetadatakeys\n function OrdinaryMetadataKeys(O, P) {\n var ownKeys = OrdinaryOwnMetadataKeys(O, P);\n var parent = OrdinaryGetPrototypeOf(O);\n if (parent === null)\n return ownKeys;\n var parentKeys = OrdinaryMetadataKeys(parent, P);\n if (parentKeys.length <= 0)\n return ownKeys;\n if (ownKeys.length <= 0)\n return parentKeys;\n var set = new _Set();\n var keys = [];\n for (var _i = 0, ownKeys_1 = ownKeys; _i < ownKeys_1.length; _i++) {\n var key = ownKeys_1[_i];\n var hasKey = set.has(key);\n if (!hasKey) {\n set.add(key);\n keys.push(key);\n }\n }\n for (var _a = 0, parentKeys_1 = parentKeys; _a < parentKeys_1.length; _a++) {\n var key = parentKeys_1[_a];\n var hasKey = set.has(key);\n if (!hasKey) {\n set.add(key);\n keys.push(key);\n }\n }\n return keys;\n }\n // 3.1.7.1 OrdinaryOwnMetadataKeys(O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinaryownmetadatakeys\n function OrdinaryOwnMetadataKeys(O, P) {\n var keys = [];\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ false);\n if (IsUndefined(metadataMap))\n return keys;\n var keysObj = metadataMap.keys();\n var iterator = GetIterator(keysObj);\n var k = 0;\n while (true) {\n var next = IteratorStep(iterator);\n if (!next) {\n keys.length = k;\n return keys;\n }\n var nextValue = IteratorValue(next);\n try {\n keys[k] = nextValue;\n }\n catch (e) {\n try {\n IteratorClose(iterator);\n }\n finally {\n throw e;\n }\n }\n k++;\n }\n }\n // 6 ECMAScript Data Typ0es and Values\n // https://tc39.github.io/ecma262/#sec-ecmascript-data-types-and-values\n function Type(x) {\n if (x === null)\n return 1 /* Null */;\n switch (typeof x) {\n case \"undefined\": return 0 /* Undefined */;\n case \"boolean\": return 2 /* Boolean */;\n case \"string\": return 3 /* String */;\n case \"symbol\": return 4 /* Symbol */;\n case \"number\": return 5 /* Number */;\n case \"object\": return x === null ? 1 /* Null */ : 6 /* Object */;\n default: return 6 /* Object */;\n }\n }\n // 6.1.1 The Undefined Type\n // https://tc39.github.io/ecma262/#sec-ecmascript-language-types-undefined-type\n function IsUndefined(x) {\n return x === undefined;\n }\n // 6.1.2 The Null Type\n // https://tc39.github.io/ecma262/#sec-ecmascript-language-types-null-type\n function IsNull(x) {\n return x === null;\n }\n // 6.1.5 The Symbol Type\n // https://tc39.github.io/ecma262/#sec-ecmascript-language-types-symbol-type\n function IsSymbol(x) {\n return typeof x === \"symbol\";\n }\n // 6.1.7 The Object Type\n // https://tc39.github.io/ecma262/#sec-object-type\n function IsObject(x) {\n return typeof x === \"object\" ? x !== null : typeof x === \"function\";\n }\n // 7.1 Type Conversion\n // https://tc39.github.io/ecma262/#sec-type-conversion\n // 7.1.1 ToPrimitive(input [, PreferredType])\n // https://tc39.github.io/ecma262/#sec-toprimitive\n function ToPrimitive(input, PreferredType) {\n switch (Type(input)) {\n case 0 /* Undefined */: return input;\n case 1 /* Null */: return input;\n case 2 /* Boolean */: return input;\n case 3 /* String */: return input;\n case 4 /* Symbol */: return input;\n case 5 /* Number */: return input;\n }\n var hint = PreferredType === 3 /* String */ ? \"string\" : PreferredType === 5 /* Number */ ? \"number\" : \"default\";\n var exoticToPrim = GetMethod(input, toPrimitiveSymbol);\n if (exoticToPrim !== undefined) {\n var result = exoticToPrim.call(input, hint);\n if (IsObject(result))\n throw new TypeError();\n return result;\n }\n return OrdinaryToPrimitive(input, hint === \"default\" ? \"number\" : hint);\n }\n // 7.1.1.1 OrdinaryToPrimitive(O, hint)\n // https://tc39.github.io/ecma262/#sec-ordinarytoprimitive\n function OrdinaryToPrimitive(O, hint) {\n if (hint === \"string\") {\n var toString_1 = O.toString;\n if (IsCallable(toString_1)) {\n var result = toString_1.call(O);\n if (!IsObject(result))\n return result;\n }\n var valueOf = O.valueOf;\n if (IsCallable(valueOf)) {\n var result = valueOf.call(O);\n if (!IsObject(result))\n return result;\n }\n }\n else {\n var valueOf = O.valueOf;\n if (IsCallable(valueOf)) {\n var result = valueOf.call(O);\n if (!IsObject(result))\n return result;\n }\n var toString_2 = O.toString;\n if (IsCallable(toString_2)) {\n var result = toString_2.call(O);\n if (!IsObject(result))\n return result;\n }\n }\n throw new TypeError();\n }\n // 7.1.2 ToBoolean(argument)\n // https://tc39.github.io/ecma262/2016/#sec-toboolean\n function ToBoolean(argument) {\n return !!argument;\n }\n // 7.1.12 ToString(argument)\n // https://tc39.github.io/ecma262/#sec-tostring\n function ToString(argument) {\n return \"\" + argument;\n }\n // 7.1.14 ToPropertyKey(argument)\n // https://tc39.github.io/ecma262/#sec-topropertykey\n function ToPropertyKey(argument) {\n var key = ToPrimitive(argument, 3 /* String */);\n if (IsSymbol(key))\n return key;\n return ToString(key);\n }\n // 7.2 Testing and Comparison Operations\n // https://tc39.github.io/ecma262/#sec-testing-and-comparison-operations\n // 7.2.2 IsArray(argument)\n // https://tc39.github.io/ecma262/#sec-isarray\n function IsArray(argument) {\n return Array.isArray\n ? Array.isArray(argument)\n : argument instanceof Object\n ? argument instanceof Array\n : Object.prototype.toString.call(argument) === \"[object Array]\";\n }\n // 7.2.3 IsCallable(argument)\n // https://tc39.github.io/ecma262/#sec-iscallable\n function IsCallable(argument) {\n // NOTE: This is an approximation as we cannot check for [[Call]] internal method.\n return typeof argument === \"function\";\n }\n // 7.2.4 IsConstructor(argument)\n // https://tc39.github.io/ecma262/#sec-isconstructor\n function IsConstructor(argument) {\n // NOTE: This is an approximation as we cannot check for [[Construct]] internal method.\n return typeof argument === \"function\";\n }\n // 7.2.7 IsPropertyKey(argument)\n // https://tc39.github.io/ecma262/#sec-ispropertykey\n function IsPropertyKey(argument) {\n switch (Type(argument)) {\n case 3 /* String */: return true;\n case 4 /* Symbol */: return true;\n default: return false;\n }\n }\n // 7.3 Operations on Objects\n // https://tc39.github.io/ecma262/#sec-operations-on-objects\n // 7.3.9 GetMethod(V, P)\n // https://tc39.github.io/ecma262/#sec-getmethod\n function GetMethod(V, P) {\n var func = V[P];\n if (func === undefined || func === null)\n return undefined;\n if (!IsCallable(func))\n throw new TypeError();\n return func;\n }\n // 7.4 Operations on Iterator Objects\n // https://tc39.github.io/ecma262/#sec-operations-on-iterator-objects\n function GetIterator(obj) {\n var method = GetMethod(obj, iteratorSymbol);\n if (!IsCallable(method))\n throw new TypeError(); // from Call\n var iterator = method.call(obj);\n if (!IsObject(iterator))\n throw new TypeError();\n return iterator;\n }\n // 7.4.4 IteratorValue(iterResult)\n // https://tc39.github.io/ecma262/2016/#sec-iteratorvalue\n function IteratorValue(iterResult) {\n return iterResult.value;\n }\n // 7.4.5 IteratorStep(iterator)\n // https://tc39.github.io/ecma262/#sec-iteratorstep\n function IteratorStep(iterator) {\n var result = iterator.next();\n return result.done ? false : result;\n }\n // 7.4.6 IteratorClose(iterator, completion)\n // https://tc39.github.io/ecma262/#sec-iteratorclose\n function IteratorClose(iterator) {\n var f = iterator[\"return\"];\n if (f)\n f.call(iterator);\n }\n // 9.1 Ordinary Object Internal Methods and Internal Slots\n // https://tc39.github.io/ecma262/#sec-ordinary-object-internal-methods-and-internal-slots\n // 9.1.1.1 OrdinaryGetPrototypeOf(O)\n // https://tc39.github.io/ecma262/#sec-ordinarygetprototypeof\n function OrdinaryGetPrototypeOf(O) {\n var proto = Object.getPrototypeOf(O);\n if (typeof O !== \"function\" || O === functionPrototype)\n return proto;\n // TypeScript doesn't set __proto__ in ES5, as it's non-standard.\n // Try to determine the superclass constructor. Compatible implementations\n // must either set __proto__ on a subclass constructor to the superclass constructor,\n // or ensure each class has a valid `constructor` property on its prototype that\n // points back to the constructor.\n // If this is not the same as Function.[[Prototype]], then this is definately inherited.\n // This is the case when in ES6 or when using __proto__ in a compatible browser.\n if (proto !== functionPrototype)\n return proto;\n // If the super prototype is Object.prototype, null, or undefined, then we cannot determine the heritage.\n var prototype = O.prototype;\n var prototypeProto = prototype && Object.getPrototypeOf(prototype);\n if (prototypeProto == null || prototypeProto === Object.prototype)\n return proto;\n // If the constructor was not a function, then we cannot determine the heritage.\n var constructor = prototypeProto.constructor;\n if (typeof constructor !== \"function\")\n return proto;\n // If we have some kind of self-reference, then we cannot determine the heritage.\n if (constructor === O)\n return proto;\n // we have a pretty good guess at the heritage.\n return constructor;\n }\n // naive Map shim\n function CreateMapPolyfill() {\n var cacheSentinel = {};\n var arraySentinel = [];\n var MapIterator = /** @class */ (function () {\n function MapIterator(keys, values, selector) {\n this._index = 0;\n this._keys = keys;\n this._values = values;\n this._selector = selector;\n }\n MapIterator.prototype[\"@@iterator\"] = function () { return this; };\n MapIterator.prototype[iteratorSymbol] = function () { return this; };\n MapIterator.prototype.next = function () {\n var index = this._index;\n if (index >= 0 && index < this._keys.length) {\n var result = this._selector(this._keys[index], this._values[index]);\n if (index + 1 >= this._keys.length) {\n this._index = -1;\n this._keys = arraySentinel;\n this._values = arraySentinel;\n }\n else {\n this._index++;\n }\n return { value: result, done: false };\n }\n return { value: undefined, done: true };\n };\n MapIterator.prototype.throw = function (error) {\n if (this._index >= 0) {\n this._index = -1;\n this._keys = arraySentinel;\n this._values = arraySentinel;\n }\n throw error;\n };\n MapIterator.prototype.return = function (value) {\n if (this._index >= 0) {\n this._index = -1;\n this._keys = arraySentinel;\n this._values = arraySentinel;\n }\n return { value: value, done: true };\n };\n return MapIterator;\n }());\n return /** @class */ (function () {\n function Map() {\n this._keys = [];\n this._values = [];\n this._cacheKey = cacheSentinel;\n this._cacheIndex = -2;\n }\n Object.defineProperty(Map.prototype, \"size\", {\n get: function () { return this._keys.length; },\n enumerable: true,\n configurable: true\n });\n Map.prototype.has = function (key) { return this._find(key, /*insert*/ false) >= 0; };\n Map.prototype.get = function (key) {\n var index = this._find(key, /*insert*/ false);\n return index >= 0 ? this._values[index] : undefined;\n };\n Map.prototype.set = function (key, value) {\n var index = this._find(key, /*insert*/ true);\n this._values[index] = value;\n return this;\n };\n Map.prototype.delete = function (key) {\n var index = this._find(key, /*insert*/ false);\n if (index >= 0) {\n var size = this._keys.length;\n for (var i = index + 1; i < size; i++) {\n this._keys[i - 1] = this._keys[i];\n this._values[i - 1] = this._values[i];\n }\n this._keys.length--;\n this._values.length--;\n if (key === this._cacheKey) {\n this._cacheKey = cacheSentinel;\n this._cacheIndex = -2;\n }\n return true;\n }\n return false;\n };\n Map.prototype.clear = function () {\n this._keys.length = 0;\n this._values.length = 0;\n this._cacheKey = cacheSentinel;\n this._cacheIndex = -2;\n };\n Map.prototype.keys = function () { return new MapIterator(this._keys, this._values, getKey); };\n Map.prototype.values = function () { return new MapIterator(this._keys, this._values, getValue); };\n Map.prototype.entries = function () { return new MapIterator(this._keys, this._values, getEntry); };\n Map.prototype[\"@@iterator\"] = function () { return this.entries(); };\n Map.prototype[iteratorSymbol] = function () { return this.entries(); };\n Map.prototype._find = function (key, insert) {\n if (this._cacheKey !== key) {\n this._cacheIndex = this._keys.indexOf(this._cacheKey = key);\n }\n if (this._cacheIndex < 0 && insert) {\n this._cacheIndex = this._keys.length;\n this._keys.push(key);\n this._values.push(undefined);\n }\n return this._cacheIndex;\n };\n return Map;\n }());\n function getKey(key, _) {\n return key;\n }\n function getValue(_, value) {\n return value;\n }\n function getEntry(key, value) {\n return [key, value];\n }\n }\n // naive Set shim\n function CreateSetPolyfill() {\n return /** @class */ (function () {\n function Set() {\n this._map = new _Map();\n }\n Object.defineProperty(Set.prototype, \"size\", {\n get: function () { return this._map.size; },\n enumerable: true,\n configurable: true\n });\n Set.prototype.has = function (value) { return this._map.has(value); };\n Set.prototype.add = function (value) { return this._map.set(value, value), this; };\n Set.prototype.delete = function (value) { return this._map.delete(value); };\n Set.prototype.clear = function () { this._map.clear(); };\n Set.prototype.keys = function () { return this._map.keys(); };\n Set.prototype.values = function () { return this._map.values(); };\n Set.prototype.entries = function () { return this._map.entries(); };\n Set.prototype[\"@@iterator\"] = function () { return this.keys(); };\n Set.prototype[iteratorSymbol] = function () { return this.keys(); };\n return Set;\n }());\n }\n // naive WeakMap shim\n function CreateWeakMapPolyfill() {\n var UUID_SIZE = 16;\n var keys = HashMap.create();\n var rootKey = CreateUniqueKey();\n return /** @class */ (function () {\n function WeakMap() {\n this._key = CreateUniqueKey();\n }\n WeakMap.prototype.has = function (target) {\n var table = GetOrCreateWeakMapTable(target, /*create*/ false);\n return table !== undefined ? HashMap.has(table, this._key) : false;\n };\n WeakMap.prototype.get = function (target) {\n var table = GetOrCreateWeakMapTable(target, /*create*/ false);\n return table !== undefined ? HashMap.get(table, this._key) : undefined;\n };\n WeakMap.prototype.set = function (target, value) {\n var table = GetOrCreateWeakMapTable(target, /*create*/ true);\n table[this._key] = value;\n return this;\n };\n WeakMap.prototype.delete = function (target) {\n var table = GetOrCreateWeakMapTable(target, /*create*/ false);\n return table !== undefined ? delete table[this._key] : false;\n };\n WeakMap.prototype.clear = function () {\n // NOTE: not a real clear, just makes the previous data unreachable\n this._key = CreateUniqueKey();\n };\n return WeakMap;\n }());\n function CreateUniqueKey() {\n var key;\n do\n key = \"@@WeakMap@@\" + CreateUUID();\n while (HashMap.has(keys, key));\n keys[key] = true;\n return key;\n }\n function GetOrCreateWeakMapTable(target, create) {\n if (!hasOwn.call(target, rootKey)) {\n if (!create)\n return undefined;\n Object.defineProperty(target, rootKey, { value: HashMap.create() });\n }\n return target[rootKey];\n }\n function FillRandomBytes(buffer, size) {\n for (var i = 0; i < size; ++i)\n buffer[i] = Math.random() * 0xff | 0;\n return buffer;\n }\n function GenRandomBytes(size) {\n if (typeof Uint8Array === \"function\") {\n if (typeof crypto !== \"undefined\")\n return crypto.getRandomValues(new Uint8Array(size));\n if (typeof msCrypto !== \"undefined\")\n return msCrypto.getRandomValues(new Uint8Array(size));\n return FillRandomBytes(new Uint8Array(size), size);\n }\n return FillRandomBytes(new Array(size), size);\n }\n function CreateUUID() {\n var data = GenRandomBytes(UUID_SIZE);\n // mark as random - RFC 4122 § 4.4\n data[6] = data[6] & 0x4f | 0x40;\n data[8] = data[8] & 0xbf | 0x80;\n var result = \"\";\n for (var offset = 0; offset < UUID_SIZE; ++offset) {\n var byte = data[offset];\n if (offset === 4 || offset === 6 || offset === 8)\n result += \"-\";\n if (byte < 16)\n result += \"0\";\n result += byte.toString(16).toLowerCase();\n }\n return result;\n }\n }\n // uses a heuristic used by v8 and chakra to force an object into dictionary mode.\n function MakeDictionary(obj) {\n obj.__ = undefined;\n delete obj.__;\n return obj;\n }\n });\n})(Reflect || (Reflect = {}));\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","var Lifecycle;\n(function (Lifecycle) {\n Lifecycle[Lifecycle[\"Transient\"] = 0] = \"Transient\";\n Lifecycle[Lifecycle[\"Singleton\"] = 1] = \"Singleton\";\n Lifecycle[Lifecycle[\"ResolutionScoped\"] = 2] = \"ResolutionScoped\";\n Lifecycle[Lifecycle[\"ContainerScoped\"] = 3] = \"ContainerScoped\";\n})(Lifecycle || (Lifecycle = {}));\nexport default Lifecycle;\n","/**\n * For services that are registered through an interface, a token is required.\n * @see {@link https://github.com/microsoft/tsyringe#example-with-interfaces }\n */\nexport enum ServiceTokens {\n GeoCoordinatesService = \"GeoCoordinatesService\",\n PageAttributesExtractor = \"PageAttributesExtractor\",\n SiteSettings = \"SiteSettings\",\n UserDataLayerAdapterFactory = \"UserDataLayerAdapterFactory\",\n}\n","export enum HttpMethods {\n GET = \"GET\",\n POST = \"POST\",\n PUT = \"PUT\",\n}\n","export enum LogLevels {\n Trace = 0,\n Debug = 1,\n Information = 2,\n Warning = 3,\n Error = 4,\n Critical = 5,\n None = 6,\n}\n","/**\n * The list of the name of the cookies this library is using.\n */\nexport enum CookiesNames {\n rcPlus = \"rc_plus\",\n rcPPId = \"rc_ppid\",\n rcVisitor = \"rc_visitor\",\n rcVisitorBackup = \"rc_visitor_bck\",\n lotame = \"_cc_id\",\n blueConic = \"BCSessionID\",\n}\n","/**\n * Enum of the IDs of the profile properties that we access in a BlueConic profile.\n */\nexport enum BlueConicProfileProperties {\n /**\n * Unique identifier for CBC authenticated users.\n */\n cbcPlusId = \"cbc_plus_id\",\n /**\n * Unique identifier for CBC anonymous users.\n */\n cbcVisitorId = \"cbc_visitor_id\",\n\n /**\n * FSA group ID used to link with Environics data.\n * Based (in order of priority) on the postal code declared by the user, the postal code most frequently detected,\n * or the postal code most recently detected.\n */\n fsaGroupId = \"fsa_groupid_\",\n /**\n * Postal code declared by the user when they registered or updated their account.\n */\n postalCodeDeclared = \"postal_code\",\n\n /**\n * FSA chosen when a user confirm their region in the Radio-Canada information website\n */\n fsaCodeRegion = \"fsa_region\",\n\n /**\n * Postal code most recently detected with the user's IP address.\n */\n postalCodeMostRecent = \"postal_code_most_recent\",\n\n /**\n * Postal code most frequently detected with the user's IP address.\n * Computed from the Start Web Session timeline events in BlueConic.\n */\n postalCodeMostFrequent = \"postal_code_most_frequent\",\n\n /**\n * Postal code chosen when a user confirm their region in the Radio-Canada information website\n */\n postalCodeRegion = \"postal_code_region\",\n\n /**\n * Postal code used to link with Environics data.\n * Based (in order of priority) on the postal code declared by the user, the postal code most frequently detected,\n * or the postal code most recently detected.\n */\n postalCodeGroupId = \"postal_code_group_id\",\n\n /**\n * Unique identifier for Radio-Canada or CBC GEM authenticated users.\n */\n rcId = \"rc_id\",\n\n /**\n * Unique identifier for Radio-Canada anonymous users.\n */\n rcVisitorId = \"rc_visitor_id\",\n\n /**\n * The last time a RC_Loaded event was added to the profile's timeline events\n */\n rcLastLoadedEventDate = \"rc_last_loaded_event_date\",\n\n /**\n * The last time a RC_Read event was added to the profile's timeline events\n */\n rcLastReadEventDate = \"rc_last_read_event_date\",\n\n /**\n * The last time a RC_Start_Web_Session event was added to the profile's timeline events\n */\n rcLastStartWebSessionEventDate = \"rc_last_start_web_session_event_date\",\n\n /**\n * The last time a RC_Streamed_Audio event was added to the profile's timeline events\n */\n rcLastStartStreamedAudioEventDate = \"rc_last_start_streamed_audio_event_date\",\n\n /**\n * The last time a RC_Streamed_Video event was added to the profile's timeline events\n */\n rcLastStartStreamedVideoEventDate = \"rc_last_start_streamed_video_event_date\",\n\n /**\n * Number of page views registered on the current profile\n */\n totalPageViews = \"clickcount\",\n}\n","/**\n * Name of the events that the library will trigger on the document object during its lifetime.\n * @remarks\n * Warning : These strings are used in Google Tag Manager!\n */\nexport enum DataSyncLibEventNames {\n /**\n * This event is triggered once the library is loaded but hasn't been initialized yet.\n */\n LibraryLoaded = \"gtmDataSyncLib_loaded\",\n\n /**\n * This event is triggered once the user has been initialized from the UIE.\n */\n UserInitialized = \"gtmDataSyncLib_userInitialized\",\n\n /**\n * This event is triggered once the library is loaded, the UIE has been called and the CDP profile\n * is correctly setup.\n */\n CdpProfileSetup = \"gtmDataSyncLib_cdpProfileSetup\",\n\n /**\n * This event is triggered once the library is loaded and a profile is loaded.\n * This event should occur only once per page load (and not on each page view).\n */\n LotameServiceInitialized = \"gtmDataSyncLib_lotameServiceInitialized\",\n\n /**\n * This event is triggered each time Lotame's profile is loaded or updated.\n * Should occur once on page load and each subsequent page view.\n */\n LotameProfileUpdated = \"gtmDataSyncLib_lotameProfileUpdated\",\n\n /**\n * This event is triggered when the geolocation data as been resolved, successfully or not.\n */\n GeolocationDataLoaded = \"gtmDataSyncLib_geolocationDataLoaded\",\n}\n","import { Logger } from \"../utils/Logger\";\n\nexport enum StreamMediaType {\n Audio = \"audio\",\n Video = \"video\",\n}\n\nexport function validateStreamMediaType(mediaType: StreamMediaType): boolean {\n if (!Object.values(StreamMediaType).includes(mediaType)) {\n Logger.warn(`Received an unsupported StreamMediaType: ${mediaType}`);\n return false;\n }\n return true;\n}\n","/**\n * Identifier of a timeline event inside a BlueConic profile\n */\nexport enum TimelineEventIds {\n RcActionPSI = \"RC_Action_PSI\",\n RcLoaded = \"RC_Loaded\",\n RcMorduBookmark = \"RC_Mordu_Bookmark\",\n RcMorduComment = \"RC_Mordu_Comment\",\n RcMorduScore = \"RC_Mordu_Score\",\n RcRead = \"RC_Read\",\n RcStartWebSession = \"RC_Start_Web_Session\",\n RcStreamedAudio = \"RC_Streamed_Audio\",\n RcStreamedVideo = \"RC_Streamed_Video\",\n}\n","/**\n * GTM events triggered on the Data Layer by this library.\n * */\nexport enum GtmEventNames {\n // Used by the library to indicate that the library is loaded and the user setup is complete\n GTMDataSyncLibSetupDone = \"gtmDataSyncLib_setup_done\",\n // This event is triggered when the user has seen a certain amount pages on IciTele section.\n IciTeleEngagementPageView = \"gtmDataSyncLib_iciTeleEngagementPageView\",\n // This event is triggered when the user has spent a certain amount of time on IciTele section.\n IciTeleEngagementTimeSpent = \"gtmDataSyncLib_iciTeleEngagementTimeSpent\",\n // This event is triggered when the user has seen a certain amount pages on Ohdio section.\n OhdioEngagementPageView = \"gtmDataSyncLib_ohdioEngagementPageView\",\n // This event is triggered when the user has spent a certain amount of time on Ohdio section.\n OhdioEngagementTimeSpent = \"gtmDataSyncLib_ohdioEngagementTimeSpent\",\n // Used by lotame tags.\n SetUserInfoDone = \"set_userInfo_done\",\n // Used to trigger readjs_cbc_module (it needs the RC_Visitor_Id)\n UserIdExchangeDone = \"user_id_exchange_done\",\n}\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","export function isClassProvider(provider) {\n return !!provider.useClass;\n}\n","export function isFactoryProvider(provider) {\n return !!provider.useFactory;\n}\n","import { __read, __spread } from \"tslib\";\nvar DelayedConstructor = (function () {\n function DelayedConstructor(wrap) {\n this.wrap = wrap;\n this.reflectMethods = [\n \"get\",\n \"getPrototypeOf\",\n \"setPrototypeOf\",\n \"getOwnPropertyDescriptor\",\n \"defineProperty\",\n \"has\",\n \"set\",\n \"deleteProperty\",\n \"apply\",\n \"construct\",\n \"ownKeys\"\n ];\n }\n DelayedConstructor.prototype.createProxy = function (createObject) {\n var _this = this;\n var target = {};\n var init = false;\n var value;\n var delayedObject = function () {\n if (!init) {\n value = createObject(_this.wrap());\n init = true;\n }\n return value;\n };\n return new Proxy(target, this.createHandler(delayedObject));\n };\n DelayedConstructor.prototype.createHandler = function (delayedObject) {\n var handler = {};\n var install = function (name) {\n handler[name] = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n args[0] = delayedObject();\n var method = Reflect[name];\n return method.apply(void 0, __spread(args));\n };\n };\n this.reflectMethods.forEach(install);\n return handler;\n };\n return DelayedConstructor;\n}());\nexport { DelayedConstructor };\nexport function delay(wrappedConstructor) {\n if (typeof wrappedConstructor === \"undefined\") {\n throw new Error(\"Attempt to `delay` undefined. Constructor must be wrapped in a callback\");\n }\n return new DelayedConstructor(wrappedConstructor);\n}\n","import { DelayedConstructor } from \"../lazy-helpers\";\nexport function isNormalToken(token) {\n return typeof token === \"string\" || typeof token === \"symbol\";\n}\nexport function isTokenDescriptor(descriptor) {\n return (typeof descriptor === \"object\" &&\n \"token\" in descriptor &&\n \"multiple\" in descriptor);\n}\nexport function isTransformDescriptor(descriptor) {\n return (typeof descriptor === \"object\" &&\n \"token\" in descriptor &&\n \"transform\" in descriptor);\n}\nexport function isConstructorToken(token) {\n return typeof token === \"function\" || token instanceof DelayedConstructor;\n}\n","export function isTokenProvider(provider) {\n return !!provider.useToken;\n}\n","export function isValueProvider(provider) {\n return provider.useValue != undefined;\n}\n","import { isClassProvider } from \"./class-provider\";\nimport { isValueProvider } from \"./value-provider\";\nimport { isTokenProvider } from \"./token-provider\";\nimport { isFactoryProvider } from \"./factory-provider\";\nexport function isProvider(provider) {\n return (isClassProvider(provider) ||\n isValueProvider(provider) ||\n isTokenProvider(provider) ||\n isFactoryProvider(provider));\n}\n","var RegistryBase = (function () {\n function RegistryBase() {\n this._registryMap = new Map();\n }\n RegistryBase.prototype.entries = function () {\n return this._registryMap.entries();\n };\n RegistryBase.prototype.getAll = function (key) {\n this.ensure(key);\n return this._registryMap.get(key);\n };\n RegistryBase.prototype.get = function (key) {\n this.ensure(key);\n var value = this._registryMap.get(key);\n return value[value.length - 1] || null;\n };\n RegistryBase.prototype.set = function (key, value) {\n this.ensure(key);\n this._registryMap.get(key).push(value);\n };\n RegistryBase.prototype.setAll = function (key, value) {\n this._registryMap.set(key, value);\n };\n RegistryBase.prototype.has = function (key) {\n this.ensure(key);\n return this._registryMap.get(key).length > 0;\n };\n RegistryBase.prototype.clear = function () {\n this._registryMap.clear();\n };\n RegistryBase.prototype.ensure = function (key) {\n if (!this._registryMap.has(key)) {\n this._registryMap.set(key, []);\n }\n };\n return RegistryBase;\n}());\nexport default RegistryBase;\n","import { __extends } from \"tslib\";\nimport RegistryBase from \"./registry-base\";\nvar Registry = (function (_super) {\n __extends(Registry, _super);\n function Registry() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return Registry;\n}(RegistryBase));\nexport default Registry;\n","var ResolutionContext = (function () {\n function ResolutionContext() {\n this.scopedResolutions = new Map();\n }\n return ResolutionContext;\n}());\nexport default ResolutionContext;\n","import { __read, __spread } from \"tslib\";\nfunction formatDependency(params, idx) {\n if (params === null) {\n return \"at position #\" + idx;\n }\n var argName = params.split(\",\")[idx].trim();\n return \"\\\"\" + argName + \"\\\" at position #\" + idx;\n}\nfunction composeErrorMessage(msg, e, indent) {\n if (indent === void 0) { indent = \" \"; }\n return __spread([msg], e.message.split(\"\\n\").map(function (l) { return indent + l; })).join(\"\\n\");\n}\nexport function formatErrorCtor(ctor, paramIdx, error) {\n var _a = __read(ctor.toString().match(/constructor\\(([\\w, ]+)\\)/) || [], 2), _b = _a[1], params = _b === void 0 ? null : _b;\n var dep = formatDependency(params, paramIdx);\n return composeErrorMessage(\"Cannot inject the dependency \" + dep + \" of \\\"\" + ctor.name + \"\\\" constructor. Reason:\", error);\n}\n","export function isDisposable(value) {\n if (typeof value.dispose !== \"function\")\n return false;\n var disposeFun = value.dispose;\n if (disposeFun.length > 0) {\n return false;\n }\n return true;\n}\n","import { __extends } from \"tslib\";\nimport RegistryBase from \"./registry-base\";\nvar PreResolutionInterceptors = (function (_super) {\n __extends(PreResolutionInterceptors, _super);\n function PreResolutionInterceptors() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return PreResolutionInterceptors;\n}(RegistryBase));\nexport { PreResolutionInterceptors };\nvar PostResolutionInterceptors = (function (_super) {\n __extends(PostResolutionInterceptors, _super);\n function PostResolutionInterceptors() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return PostResolutionInterceptors;\n}(RegistryBase));\nexport { PostResolutionInterceptors };\nvar Interceptors = (function () {\n function Interceptors() {\n this.preResolution = new PreResolutionInterceptors();\n this.postResolution = new PostResolutionInterceptors();\n }\n return Interceptors;\n}());\nexport default Interceptors;\n","import { __awaiter, __generator, __read, __spread, __values } from \"tslib\";\nimport { isClassProvider, isFactoryProvider, isNormalToken, isTokenProvider, isValueProvider } from \"./providers\";\nimport { isProvider } from \"./providers/provider\";\nimport { isConstructorToken, isTokenDescriptor, isTransformDescriptor } from \"./providers/injection-token\";\nimport Registry from \"./registry\";\nimport Lifecycle from \"./types/lifecycle\";\nimport ResolutionContext from \"./resolution-context\";\nimport { formatErrorCtor } from \"./error-helpers\";\nimport { DelayedConstructor } from \"./lazy-helpers\";\nimport { isDisposable } from \"./types/disposable\";\nimport Interceptors from \"./interceptors\";\nexport var typeInfo = new Map();\nvar InternalDependencyContainer = (function () {\n function InternalDependencyContainer(parent) {\n this.parent = parent;\n this._registry = new Registry();\n this.interceptors = new Interceptors();\n this.disposed = false;\n this.disposables = new Set();\n }\n InternalDependencyContainer.prototype.register = function (token, providerOrConstructor, options) {\n if (options === void 0) { options = { lifecycle: Lifecycle.Transient }; }\n this.ensureNotDisposed();\n var provider;\n if (!isProvider(providerOrConstructor)) {\n provider = { useClass: providerOrConstructor };\n }\n else {\n provider = providerOrConstructor;\n }\n if (isTokenProvider(provider)) {\n var path = [token];\n var tokenProvider = provider;\n while (tokenProvider != null) {\n var currentToken = tokenProvider.useToken;\n if (path.includes(currentToken)) {\n throw new Error(\"Token registration cycle detected! \" + __spread(path, [currentToken]).join(\" -> \"));\n }\n path.push(currentToken);\n var registration = this._registry.get(currentToken);\n if (registration && isTokenProvider(registration.provider)) {\n tokenProvider = registration.provider;\n }\n else {\n tokenProvider = null;\n }\n }\n }\n if (options.lifecycle === Lifecycle.Singleton ||\n options.lifecycle == Lifecycle.ContainerScoped ||\n options.lifecycle == Lifecycle.ResolutionScoped) {\n if (isValueProvider(provider) || isFactoryProvider(provider)) {\n throw new Error(\"Cannot use lifecycle \\\"\" + Lifecycle[options.lifecycle] + \"\\\" with ValueProviders or FactoryProviders\");\n }\n }\n this._registry.set(token, { provider: provider, options: options });\n return this;\n };\n InternalDependencyContainer.prototype.registerType = function (from, to) {\n this.ensureNotDisposed();\n if (isNormalToken(to)) {\n return this.register(from, {\n useToken: to\n });\n }\n return this.register(from, {\n useClass: to\n });\n };\n InternalDependencyContainer.prototype.registerInstance = function (token, instance) {\n this.ensureNotDisposed();\n return this.register(token, {\n useValue: instance\n });\n };\n InternalDependencyContainer.prototype.registerSingleton = function (from, to) {\n this.ensureNotDisposed();\n if (isNormalToken(from)) {\n if (isNormalToken(to)) {\n return this.register(from, {\n useToken: to\n }, { lifecycle: Lifecycle.Singleton });\n }\n else if (to) {\n return this.register(from, {\n useClass: to\n }, { lifecycle: Lifecycle.Singleton });\n }\n throw new Error('Cannot register a type name as a singleton without a \"to\" token');\n }\n var useClass = from;\n if (to && !isNormalToken(to)) {\n useClass = to;\n }\n return this.register(from, {\n useClass: useClass\n }, { lifecycle: Lifecycle.Singleton });\n };\n InternalDependencyContainer.prototype.resolve = function (token, context) {\n if (context === void 0) { context = new ResolutionContext(); }\n this.ensureNotDisposed();\n var registration = this.getRegistration(token);\n if (!registration && isNormalToken(token)) {\n throw new Error(\"Attempted to resolve unregistered dependency token: \\\"\" + token.toString() + \"\\\"\");\n }\n this.executePreResolutionInterceptor(token, \"Single\");\n if (registration) {\n var result = this.resolveRegistration(registration, context);\n this.executePostResolutionInterceptor(token, result, \"Single\");\n return result;\n }\n if (isConstructorToken(token)) {\n var result = this.construct(token, context);\n this.executePostResolutionInterceptor(token, result, \"Single\");\n return result;\n }\n throw new Error(\"Attempted to construct an undefined constructor. Could mean a circular dependency problem. Try using `delay` function.\");\n };\n InternalDependencyContainer.prototype.executePreResolutionInterceptor = function (token, resolutionType) {\n var e_1, _a;\n if (this.interceptors.preResolution.has(token)) {\n var remainingInterceptors = [];\n try {\n for (var _b = __values(this.interceptors.preResolution.getAll(token)), _c = _b.next(); !_c.done; _c = _b.next()) {\n var interceptor = _c.value;\n if (interceptor.options.frequency != \"Once\") {\n remainingInterceptors.push(interceptor);\n }\n interceptor.callback(token, resolutionType);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n this.interceptors.preResolution.setAll(token, remainingInterceptors);\n }\n };\n InternalDependencyContainer.prototype.executePostResolutionInterceptor = function (token, result, resolutionType) {\n var e_2, _a;\n if (this.interceptors.postResolution.has(token)) {\n var remainingInterceptors = [];\n try {\n for (var _b = __values(this.interceptors.postResolution.getAll(token)), _c = _b.next(); !_c.done; _c = _b.next()) {\n var interceptor = _c.value;\n if (interceptor.options.frequency != \"Once\") {\n remainingInterceptors.push(interceptor);\n }\n interceptor.callback(token, result, resolutionType);\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_2) throw e_2.error; }\n }\n this.interceptors.postResolution.setAll(token, remainingInterceptors);\n }\n };\n InternalDependencyContainer.prototype.resolveRegistration = function (registration, context) {\n this.ensureNotDisposed();\n if (registration.options.lifecycle === Lifecycle.ResolutionScoped &&\n context.scopedResolutions.has(registration)) {\n return context.scopedResolutions.get(registration);\n }\n var isSingleton = registration.options.lifecycle === Lifecycle.Singleton;\n var isContainerScoped = registration.options.lifecycle === Lifecycle.ContainerScoped;\n var returnInstance = isSingleton || isContainerScoped;\n var resolved;\n if (isValueProvider(registration.provider)) {\n resolved = registration.provider.useValue;\n }\n else if (isTokenProvider(registration.provider)) {\n resolved = returnInstance\n ? registration.instance ||\n (registration.instance = this.resolve(registration.provider.useToken, context))\n : this.resolve(registration.provider.useToken, context);\n }\n else if (isClassProvider(registration.provider)) {\n resolved = returnInstance\n ? registration.instance ||\n (registration.instance = this.construct(registration.provider.useClass, context))\n : this.construct(registration.provider.useClass, context);\n }\n else if (isFactoryProvider(registration.provider)) {\n resolved = registration.provider.useFactory(this);\n }\n else {\n resolved = this.construct(registration.provider, context);\n }\n if (registration.options.lifecycle === Lifecycle.ResolutionScoped) {\n context.scopedResolutions.set(registration, resolved);\n }\n return resolved;\n };\n InternalDependencyContainer.prototype.resolveAll = function (token, context) {\n var _this = this;\n if (context === void 0) { context = new ResolutionContext(); }\n this.ensureNotDisposed();\n var registrations = this.getAllRegistrations(token);\n if (!registrations && isNormalToken(token)) {\n throw new Error(\"Attempted to resolve unregistered dependency token: \\\"\" + token.toString() + \"\\\"\");\n }\n this.executePreResolutionInterceptor(token, \"All\");\n if (registrations) {\n var result_1 = registrations.map(function (item) {\n return _this.resolveRegistration(item, context);\n });\n this.executePostResolutionInterceptor(token, result_1, \"All\");\n return result_1;\n }\n var result = [this.construct(token, context)];\n this.executePostResolutionInterceptor(token, result, \"All\");\n return result;\n };\n InternalDependencyContainer.prototype.isRegistered = function (token, recursive) {\n if (recursive === void 0) { recursive = false; }\n this.ensureNotDisposed();\n return (this._registry.has(token) ||\n (recursive &&\n (this.parent || false) &&\n this.parent.isRegistered(token, true)));\n };\n InternalDependencyContainer.prototype.reset = function () {\n this.ensureNotDisposed();\n this._registry.clear();\n this.interceptors.preResolution.clear();\n this.interceptors.postResolution.clear();\n };\n InternalDependencyContainer.prototype.clearInstances = function () {\n var e_3, _a;\n this.ensureNotDisposed();\n try {\n for (var _b = __values(this._registry.entries()), _c = _b.next(); !_c.done; _c = _b.next()) {\n var _d = __read(_c.value, 2), token = _d[0], registrations = _d[1];\n this._registry.setAll(token, registrations\n .filter(function (registration) { return !isValueProvider(registration.provider); })\n .map(function (registration) {\n registration.instance = undefined;\n return registration;\n }));\n }\n }\n catch (e_3_1) { e_3 = { error: e_3_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_3) throw e_3.error; }\n }\n };\n InternalDependencyContainer.prototype.createChildContainer = function () {\n var e_4, _a;\n this.ensureNotDisposed();\n var childContainer = new InternalDependencyContainer(this);\n try {\n for (var _b = __values(this._registry.entries()), _c = _b.next(); !_c.done; _c = _b.next()) {\n var _d = __read(_c.value, 2), token = _d[0], registrations = _d[1];\n if (registrations.some(function (_a) {\n var options = _a.options;\n return options.lifecycle === Lifecycle.ContainerScoped;\n })) {\n childContainer._registry.setAll(token, registrations.map(function (registration) {\n if (registration.options.lifecycle === Lifecycle.ContainerScoped) {\n return {\n provider: registration.provider,\n options: registration.options\n };\n }\n return registration;\n }));\n }\n }\n }\n catch (e_4_1) { e_4 = { error: e_4_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_4) throw e_4.error; }\n }\n return childContainer;\n };\n InternalDependencyContainer.prototype.beforeResolution = function (token, callback, options) {\n if (options === void 0) { options = { frequency: \"Always\" }; }\n this.interceptors.preResolution.set(token, {\n callback: callback,\n options: options\n });\n };\n InternalDependencyContainer.prototype.afterResolution = function (token, callback, options) {\n if (options === void 0) { options = { frequency: \"Always\" }; }\n this.interceptors.postResolution.set(token, {\n callback: callback,\n options: options\n });\n };\n InternalDependencyContainer.prototype.dispose = function () {\n return __awaiter(this, void 0, void 0, function () {\n var promises;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n this.disposed = true;\n promises = [];\n this.disposables.forEach(function (disposable) {\n var maybePromise = disposable.dispose();\n if (maybePromise) {\n promises.push(maybePromise);\n }\n });\n return [4, Promise.all(promises)];\n case 1:\n _a.sent();\n return [2];\n }\n });\n });\n };\n InternalDependencyContainer.prototype.getRegistration = function (token) {\n if (this.isRegistered(token)) {\n return this._registry.get(token);\n }\n if (this.parent) {\n return this.parent.getRegistration(token);\n }\n return null;\n };\n InternalDependencyContainer.prototype.getAllRegistrations = function (token) {\n if (this.isRegistered(token)) {\n return this._registry.getAll(token);\n }\n if (this.parent) {\n return this.parent.getAllRegistrations(token);\n }\n return null;\n };\n InternalDependencyContainer.prototype.construct = function (ctor, context) {\n var _this = this;\n if (ctor instanceof DelayedConstructor) {\n return ctor.createProxy(function (target) {\n return _this.resolve(target, context);\n });\n }\n var instance = (function () {\n var paramInfo = typeInfo.get(ctor);\n if (!paramInfo || paramInfo.length === 0) {\n if (ctor.length === 0) {\n return new ctor();\n }\n else {\n throw new Error(\"TypeInfo not known for \\\"\" + ctor.name + \"\\\"\");\n }\n }\n var params = paramInfo.map(_this.resolveParams(context, ctor));\n return new (ctor.bind.apply(ctor, __spread([void 0], params)))();\n })();\n if (isDisposable(instance)) {\n this.disposables.add(instance);\n }\n return instance;\n };\n InternalDependencyContainer.prototype.resolveParams = function (context, ctor) {\n var _this = this;\n return function (param, idx) {\n var _a, _b, _c;\n try {\n if (isTokenDescriptor(param)) {\n if (isTransformDescriptor(param)) {\n return param.multiple\n ? (_a = _this.resolve(param.transform)).transform.apply(_a, __spread([_this.resolveAll(param.token)], param.transformArgs)) : (_b = _this.resolve(param.transform)).transform.apply(_b, __spread([_this.resolve(param.token, context)], param.transformArgs));\n }\n else {\n return param.multiple\n ? _this.resolveAll(param.token)\n : _this.resolve(param.token, context);\n }\n }\n else if (isTransformDescriptor(param)) {\n return (_c = _this.resolve(param.transform, context)).transform.apply(_c, __spread([_this.resolve(param.token, context)], param.transformArgs));\n }\n return _this.resolve(param, context);\n }\n catch (e) {\n throw new Error(formatErrorCtor(ctor, idx, e));\n }\n };\n };\n InternalDependencyContainer.prototype.ensureNotDisposed = function () {\n if (this.disposed) {\n throw new Error(\"This container has been disposed, you cannot interact with a disposed container\");\n }\n };\n return InternalDependencyContainer;\n}());\nexport var instance = new InternalDependencyContainer();\nexport default instance;\n","export var INJECTION_TOKEN_METADATA_KEY = \"injectionTokens\";\nexport function getParamInfo(target) {\n var params = Reflect.getMetadata(\"design:paramtypes\", target) || [];\n var injectionTokens = Reflect.getOwnMetadata(INJECTION_TOKEN_METADATA_KEY, target) || {};\n Object.keys(injectionTokens).forEach(function (key) {\n params[+key] = injectionTokens[key];\n });\n return params;\n}\nexport function defineInjectionTokenMetadata(data, transform) {\n return function (target, _propertyKey, parameterIndex) {\n var descriptors = Reflect.getOwnMetadata(INJECTION_TOKEN_METADATA_KEY, target) || {};\n descriptors[parameterIndex] = transform\n ? {\n token: data,\n transform: transform.transformToken,\n transformArgs: transform.args || []\n }\n : data;\n Reflect.defineMetadata(INJECTION_TOKEN_METADATA_KEY, descriptors, target);\n };\n}\n","import { defineInjectionTokenMetadata } from \"../reflection-helpers\";\nfunction inject(token) {\n return defineInjectionTokenMetadata(token);\n}\nexport default inject;\n","import { getParamInfo } from \"../reflection-helpers\";\nimport { typeInfo } from \"../dependency-container\";\nfunction injectable() {\n return function (target) {\n typeInfo.set(target, getParamInfo(target));\n };\n}\nexport default injectable;\n","import injectable from \"./injectable\";\nimport { instance as globalContainer } from \"../dependency-container\";\nfunction singleton() {\n return function (target) {\n injectable()(target);\n globalContainer.registerSingleton(target);\n };\n}\nexport default singleton;\n","if (typeof Reflect === \"undefined\" || !Reflect.getMetadata) {\n throw new Error(\"tsyringe requires a reflect polyfill. Please add 'import \\\"reflect-metadata\\\"' to the top of your entry point.\");\n}\nexport { Lifecycle } from \"./types\";\nexport * from \"./decorators\";\nexport * from \"./factories\";\nexport * from \"./providers\";\nexport { delay } from \"./lazy-helpers\";\nexport { instance as container } from \"./dependency-container\";\n","import { User } from \"./User\";\nimport \"../global\";\nimport { container } from \"tsyringe\";\nimport { ServiceTokens } from \"../shared/ServiceTokens\";\nimport { UserDataLayerAdapter } from \"../shared/UserDataLayerAdapter\";\nimport { UserDataLayerAdapterFactory } from \"../shared/UserDataLayerAdapterFactory\";\nimport { GtmEventNames } from \"./GtmEventNames\";\n\n/**\n * Check if GTM is running in live mode, depending on the location of the page\n * and GTM variables.\n * */\nexport function appIsLive(productionHostName: string | undefined): boolean {\n let isLive = false;\n if (window.location.hostname.toLowerCase() === productionHostName) {\n const scriptSource = localStorage.getItem(\"DS_SCRIPT_SRC\");\n if (scriptSource && scriptSource.toLowerCase() !== \"prod\") {\n return false;\n }\n\n const gtmEnvironment = dataLayerHelper.get(\"gtmEnvironment\");\n\n // If GTM's script is loaded without specifying an environment (without the gtm_auth and gtm_preview parameters),\n // the GTM variable \"Environment Name\" will return an empty string (\"\").\n // It's safer to assume that this \"environment\" is the production.\n // It's also Google's instruction to NOT use an environment-specific configuration in production.\n // See Install container snippets: https://support.google.com/tagmanager/answer/6311518?hl=en\n isLive = !gtmEnvironment || gtmEnvironment.toLowerCase() === \"live\";\n }\n return isLive;\n}\n\n/**\n * B2C pages doesn't host all the code that we need to implement all our requirements\n * and tracking it doesn't add any value.\n */\nexport function isPageB2C(): boolean {\n const hostName = window.location.hostname.toLowerCase();\n return hostName.indexOf(\"b2clogin.com\") !== -1 || hostName.indexOf(\"login.cbc.radio-canada.ca\") !== -1;\n}\n\n/**\n * Check if the user is in MyAccount or Login page\n */\nexport function isMyAccountOrLoginPage(): boolean {\n return window.location.hostname.startsWith(\"mon-compte.\") || window.location.hostname.startsWith(\"login.cbc.\");\n}\n\nexport function getUserFromDataLayer(): User | undefined {\n return dataLayerHelper.get(\"user\");\n}\n\n/**\n * Push an event without payload to the data layer.\n * @param eventName The name of the event.\n */\nexport function pushEventToDataLayer(eventName: GtmEventNames): void {\n dataLayerQueue.push({\n event: eventName,\n });\n}\n\nexport function getUserAdapter(): UserDataLayerAdapter | undefined {\n const adapterFactory = container.resolve(ServiceTokens.UserDataLayerAdapterFactory);\n const user = getUserFromDataLayer();\n if (user) {\n return adapterFactory.getUserDataAdapter(user);\n }\n return undefined;\n}\n\n/**\n * Return an instance of UserDataLayerAdapter wrapped around the current user\n * defined in the DataLayer or create a new adapter (with a new user) if the user isn't set.\n * @remarks\n * If a new user is created, it won't be pushed in the dataLayer.\n */\nexport function getOrCreateUserAdapter(): UserDataLayerAdapter {\n const userAdapter = getUserAdapter();\n if (userAdapter) {\n return userAdapter;\n }\n const adapterFactory = container.resolve(ServiceTokens.UserDataLayerAdapterFactory);\n return adapterFactory.getUserDataAdapter({});\n}\n","import { HttpMethods } from \"./HttpMethods\";\nimport { Logger } from \"./Logger\";\n\nexport async function makeJsonRequest(\n url: string,\n method: HttpMethods,\n credentials: RequestCredentials,\n requestBody?: object,\n): Promise {\n const headers = new Headers();\n headers.append(\"Content-Type\", \"application/json\");\n const requestInit: RequestInit = {\n method: method,\n headers: headers,\n body: JSON.stringify(requestBody),\n credentials: credentials,\n };\n let response: Response | undefined = undefined;\n let requestNumber = 1;\n while (!response) {\n try {\n response = await fetch(url, requestInit);\n if (requestNumber > 1) {\n Logger.debugLog(\n `Request to (${method})${url} succeeded on request #${requestNumber}. Status code: ${response.status}`,\n );\n }\n } catch (e) {\n if (url.endsWith(\"/marea/logs\")) {\n // Don't retry to send Marea's logs, it creates an infinite loop.\n throw e;\n }\n if (requestNumber >= 3) {\n Logger.error(`Request failed (request #${requestNumber})`, {\n \"fetch.request\": formatRequestInit(url, requestInit),\n exception: e,\n });\n throw e;\n } else {\n Logger.warn(`Request to (${method}) ${url} failed, retrying. Request #${requestNumber}`);\n }\n requestNumber++;\n }\n }\n return response;\n}\n\nfunction formatRequestInit(url: string, requestInit: RequestInit): string {\n const lines = [] as string[];\n lines.push(`URI: ${url}`);\n lines.push(`Method: ${requestInit.method}`);\n lines.push(`Body: ${requestInit.body}`);\n lines.push(`Credentials: ${requestInit.credentials}`);\n lines.push(`Headers: ${JSON.stringify(requestInit.headers)}`);\n return lines.join(\"\\n\");\n}\n","/*! typescript-cookie v1.0.6 | MIT */\nvar index = /*#__PURE__*/Object.freeze({\n __proto__: null\n});\n\nconst encodeName = (name) => encodeURIComponent(name)\n .replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent)\n .replace(/[()]/g, escape);\nconst encodeValue = (value) => {\n return encodeURIComponent(value).replace(/%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g, decodeURIComponent);\n};\nconst decodeName = decodeURIComponent;\nconst decodeValue = (value) => {\n if (value[0] === '\"') {\n value = value.slice(1, -1);\n }\n return value.replace(/(%[\\dA-F]{2})+/gi, decodeURIComponent);\n};\n\nfunction stringifyAttributes(attributes) {\n // Copy incoming attributes as to not alter the original object..\n attributes = Object.assign({}, attributes);\n if (typeof attributes.expires === 'number') {\n attributes.expires = new Date(Date.now() + attributes.expires * 864e5);\n }\n if (attributes.expires != null) {\n attributes.expires = attributes.expires.toUTCString();\n }\n return (Object.entries(attributes)\n .filter(([key, value]) => value != null && value !== false)\n // Considers RFC 6265 section 5.2:\n // ...\n // 3. If the remaining unparsed-attributes contains a %x3B (\";\")\n // character:\n // Consume the characters of the unparsed-attributes up to,\n // not including, the first %x3B (\";\") character.\n // ...\n .map(([key, value]) => value === true ? `; ${key}` : `; ${key}=${value.split(';')[0]}`)\n .join(''));\n}\nfunction get(name, decodeValue, decodeName) {\n const scan = /(?:^|; )([^=]*)=([^;]*)/g;\n const jar = {};\n let match;\n while ((match = scan.exec(document.cookie)) != null) {\n try {\n const found = decodeName(match[1]);\n jar[found] = decodeValue(match[2], found);\n if (name === found) {\n break;\n }\n }\n catch (e) { }\n }\n return name != null ? jar[name] : jar;\n}\nconst DEFAULT_CODEC = Object.freeze({\n decodeName: decodeName,\n decodeValue: decodeValue,\n encodeName: encodeName,\n encodeValue: encodeValue\n});\nconst DEFAULT_ATTRIBUTES = Object.freeze({\n path: '/'\n});\nfunction setCookie(name, value, attributes = DEFAULT_ATTRIBUTES, { encodeValue: encodeValue$1 = encodeValue, encodeName: encodeName$1 = encodeName } = {}) {\n return (document.cookie = `${encodeName$1(name)}=${encodeValue$1(value, name)}${stringifyAttributes(attributes)}`);\n}\nfunction getCookie(name, { decodeValue: decodeValue$1 = decodeValue, decodeName: decodeName$1 = decodeName } = {}) {\n return get(name, decodeValue$1, decodeName$1);\n}\nfunction getCookies({ decodeValue: decodeValue$1 = decodeValue, decodeName: decodeName$1 = decodeName } = {}) {\n return get(undefined, decodeValue$1, decodeName$1);\n}\nfunction removeCookie(name, attributes = DEFAULT_ATTRIBUTES) {\n setCookie(name, '', Object.assign({}, attributes, {\n expires: -1\n }));\n}\n\nfunction init(converter, defaultAttributes) {\n const api = {\n set: function (name, value, attributes) {\n return setCookie(name, value, Object.assign({}, this.attributes, attributes), {\n encodeValue: this.converter.write\n });\n },\n get: function (name) {\n if (arguments.length === 0) {\n return getCookies(this.converter.read);\n }\n if (name == null) {\n return;\n }\n return getCookie(name, this.converter.read);\n },\n remove: function (name, attributes) {\n removeCookie(name, Object.assign({}, this.attributes, attributes));\n },\n withAttributes: function (attributes) {\n return init(this.converter, Object.assign({}, this.attributes, attributes));\n },\n withConverter: function (converter) {\n return init(Object.assign({}, this.converter, converter), this.attributes);\n }\n };\n const config = {\n attributes: { value: Object.freeze(defaultAttributes) },\n converter: { value: Object.freeze(converter) }\n };\n return Object.create(api, config);\n}\nvar compat = init({ read: DEFAULT_CODEC.decodeValue, write: DEFAULT_CODEC.encodeValue }, DEFAULT_ATTRIBUTES);\n\nexport { compat as Cookies, DEFAULT_ATTRIBUTES, DEFAULT_CODEC, index as Types, getCookie, getCookies, removeCookie, setCookie };\n","import { appIsLive, getUserAdapter, isMyAccountOrLoginPage } from \"../gtm/GtmUtils\";\nimport { makeJsonRequest } from \"./JsonRequests\";\nimport { HttpMethods } from \"./HttpMethods\";\nimport { LogLevels } from \"./LogLevels\";\nimport { CookiesNames } from \"../gtm/Cookies\";\nimport { getCookie } from \"typescript-cookie\";\nimport { container } from \"tsyringe\";\nimport { ServiceTokens } from \"../shared/ServiceTokens\";\nimport { PageAttributesExtractor } from \"../shared/PageAttributesExtractor\";\nimport { PageDebugInfo } from \"../shared/PageDebugInfo\";\nimport { SiteSettings } from \"../shared/SiteSettings\";\n\n/**\n * Indicate the URL used to send logs.\n * Initialized at compile time via WebPack.\n */\ndeclare const LogsUrl: string;\n\n/**\n * Logger that will log messages in the console ony when the app is not live or the GTM_DEBUG switch is enabled.\n */\nexport class Logger {\n private static instance: Logger;\n private readonly enabled: boolean = false;\n private allMessages = [] as string[];\n private truncatedText = \"[Log truncated...]\";\n private truncatedLogsCount = 0;\n private maxPropertyLength = 10000;\n private maxPropertiesCount = 30;\n private hasSentPreviousLog = false;\n\n /**\n * Unique identifier generated once per browser to correlate logs.\n * @private\n */\n private browserId = \"\";\n\n /**\n * Unique identifier generated once per library load to correlate logs.\n * Should generate on every page reload and be different for each tab navigation\n * @private\n */\n private readonly gtmLibSessionId: string;\n private readonly siteName: string;\n\n private constructor() {\n const siteSettings = container.resolve(ServiceTokens.SiteSettings);\n this.enabled =\n (!appIsLive(siteSettings.ProductionHostName) && !isMyAccountOrLoginPage()) ||\n localStorage.getItem(\"GTM_DEBUG\") === \"true\";\n this.gtmLibSessionId = crypto.randomUUID();\n this.siteName = (container.resolve(ServiceTokens.SiteSettings) as SiteSettings).SiteName;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public log(...args: any): void {\n if (this.enabled) {\n console.log(\"[DSL]\", ...args);\n }\n let logMessage: string;\n\n if (typeof args === \"string\") {\n logMessage = args;\n } else if (Array.isArray(args)) {\n const lineParts: string[] = args.map((element) => {\n return typeof element === \"string\" ? element : JSON.stringify(element);\n });\n logMessage = lineParts.join(\" \");\n } else {\n logMessage = JSON.stringify(args);\n }\n this.allMessages.push(logMessage);\n this.validateAllMessages();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public verbose(...args: any): void {\n if (this.enabled) {\n console.log(\"[DSL]\", ...args);\n }\n }\n\n public debugLog(message: string): void {\n if (this.enabled) {\n console.log(\"[DSL]\", message);\n }\n const body = {\n level: LogLevels.Debug,\n message: message,\n uri: window.location.href,\n properties: this.getAdditionalLogProperties(),\n };\n this.sendLogMessage(body, true);\n }\n\n public error(message: string, properties: object | undefined): void {\n console.error(\"[DSL]\", message, properties);\n const body = {\n level: LogLevels.Error,\n message: message,\n uri: window.location.href,\n properties: this.getAdditionalLogProperties(properties),\n };\n\n this.sendLogMessage(body);\n }\n\n public warn(message: string): void {\n console.warn(\"[DSL]\", message);\n const body = {\n level: LogLevels.Warning,\n message: message,\n uri: window.location.href,\n properties: this.getAdditionalLogProperties(),\n };\n this.sendLogMessage(body);\n }\n\n /**\n * Log the error to the console and send it to Kibana\n * @param message The message to send\n * @param properties Additional log message properties\n */\n public static error(message: string, properties: object | undefined = undefined): void {\n Logger.getInstance().error(message, properties);\n }\n\n /**\n * Log an error and sent it to Kibana, including details about the failed request.\n * @param message The message to send\n * @param response The response to a failed request\n * @param properties Additional properties to log\n */\n public static async requestError(\n message: string,\n response: Response,\n properties: object | undefined = undefined,\n ): Promise {\n const body = await response.text();\n const responseProperties = {\n \"fetch.responseBody\": body,\n \"fetch.responseType\": response.type,\n \"fetch.statusCode\": response.status,\n \"fetch.url\": response.url,\n };\n const allProperties = {\n ...responseProperties,\n ...properties,\n };\n Logger.error(message, allProperties);\n }\n\n /**\n * Log the message to the console. No data is sent to Kibana\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public static log(...args: any): void {\n Logger.getInstance().log(...args);\n }\n\n /**\n * Log the message to the console and send it to Kibana as debug\n * @param message The message to send\n */\n public static debugLog(message: string): void {\n Logger.getInstance().debugLog(message);\n }\n\n /**\n * Log the warning the console and send it to Kibana\n * @param message The message to send\n */\n public static warn(message: string): void {\n Logger.getInstance().warn(message);\n }\n\n /**\n * Log the message to the console. No data is sent to Kibana and the message will not be saved to be sent to Marea when an error occurs\n * @param args Arguments to be logged\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public static verbose(...args: any): void {\n Logger.getInstance().verbose(...args);\n }\n\n /**\n * Checks if the app is running in live mode by comparing the production host name.\n * Logs a message indicating whether the app is in live or development mode.\n */\n public static LogEnvironmentMode(): void {\n const siteSettings = container.resolve(ServiceTokens.SiteSettings);\n if (appIsLive(siteSettings.ProductionHostName)) {\n Logger.verbose(\"Running in **live** mode!\");\n } else {\n Logger.verbose(\"Running in dev mode!\");\n }\n }\n\n /** Follows the singleton pattern */\n public static getInstance(): Logger {\n if (!Logger.instance) {\n Logger.instance = new Logger();\n }\n return Logger.instance;\n }\n\n /**\n * Send log message to Kibana\n * @param body\n * @param includePreviousLogs If the previous messages should be kept or not. Used in debug to help navigation in Kibana\n */\n private sendLogMessage(body: logMessage, includePreviousLogs = false): void {\n // Truncate the properties to keep the payload size under the limit\n body.properties.forEach((kvp) => {\n if (typeof kvp.value === \"string\" && kvp.value.length > this.maxPropertyLength) {\n kvp.value = kvp.value.substring(0, this.maxPropertyLength - this.truncatedText.length) + this.truncatedText;\n }\n });\n\n // Limit the number of properties count\n body.properties = body.properties.filter((kvp) => kvp.key && kvp.value).slice(0, this.maxPropertiesCount);\n const logMessagesSent = this.allMessages.length;\n makeJsonRequest(LogsUrl, HttpMethods.POST, \"omit\", body)\n .then((response) => {\n // Remove messages successfully sent to Marea to save on payload size.\n if (response.ok && !includePreviousLogs) {\n this.allMessages.splice(0, logMessagesSent);\n this.hasSentPreviousLog = true;\n }\n })\n .catch((reason) => {\n console.error(\"Failed to send log. Reason:\", reason);\n });\n }\n\n /**\n * Validate the length of the messages and properties to keep the payload size under the limit\n * @private\n */\n private validateAllMessages(): void {\n // Remove the oldest messages to keep the property length under the limit\n let totalLength = this.allMessages.reduce((sum, message) => sum + message.length, 0);\n while (totalLength > this.maxPropertyLength) {\n const removedMessage = this.allMessages.shift();\n this.truncatedLogsCount++;\n if (removedMessage) {\n totalLength -= removedMessage.length;\n }\n }\n }\n\n /**\n * Get the additional properties to log\n * @param properties Additional properties to log\n * @private\n */\n private getAdditionalLogProperties(properties: object | undefined = undefined): KeyValuePair[] {\n const logProperties = [] as KeyValuePair[];\n if (properties) {\n this.addObjectProperties(logProperties, properties);\n }\n\n logProperties.push({ key: \"jsBuildNumber\", value: BuildNumber });\n logProperties.push({ key: \"browserId\", value: this.getBrowserId() });\n logProperties.push({ key: \"gtmLibSessionId\", value: this.gtmLibSessionId });\n logProperties.push({ key: \"gtmContext\", value: this.getContext() });\n logProperties.push({ key: \"cookiesEnabled\", value: navigator.cookieEnabled });\n logProperties.push({ key: \"cookieSize\", value: document.cookie?.length ?? 0 });\n logProperties.push({ key: \"siteName\", value: this.siteName });\n if (this.hasSentPreviousLog) {\n this.allMessages.unshift(\"**Logs where sent in a previous message**\");\n }\n if (this.truncatedLogsCount > 0) {\n this.allMessages.unshift(`**${this.truncatedLogsCount} logs were truncated**`);\n this.truncatedLogsCount = 0;\n }\n logProperties.push({ key: \"allLogs\", value: this.allMessages.join(\"\\n\") });\n const user = getUserAdapter();\n if (user?.rcId) {\n logProperties.push({ key: \"RcId\", value: user.rcId });\n }\n if (user?.rc_visitor_id) {\n logProperties.push({ key: \"RcVisitorId\", value: user.rc_visitor_id });\n }\n this.addCookies(logProperties);\n\n this.addObjectProperties(logProperties, this.getPageProperties());\n return logProperties;\n }\n\n /**\n * Get the unique identifier for the browser\n * @private\n */\n private getBrowserId(): string {\n const storageKey = \"DS_LogId\";\n if (this.browserId) {\n return this.browserId;\n }\n const storageValue = localStorage.getItem(storageKey);\n if (storageValue) {\n this.browserId = storageValue;\n return this.browserId;\n }\n this.browserId = crypto.randomUUID();\n localStorage.setItem(storageKey, this.browserId);\n return this.browserId;\n }\n\n /**\n * Get the GTM context to log\n * @private\n */\n private getContext(): string {\n const contextData = [] as string[];\n\n // Limit the number of messages to the last 50\n const maxMessages = 50;\n const queueLength = (dataLayerQueue as []).length;\n const startIndex = Math.max(queueLength - maxMessages, 0);\n const lastMessages = (dataLayerQueue as object[]).slice(startIndex, queueLength);\n\n const user = getUserAdapter();\n if (!user) {\n contextData.push(\"User not available in DataLayer\");\n }\n if (typeof blueConicClient !== \"undefined\" && typeof blueConicClient.profile !== \"undefined\") {\n contextData.push(`BlueConic Profile Id: ${blueConicClient.profile?.getProfile()?.getId()}`);\n }\n\n contextData.push(\"\\nDataLayerQueue changes history: \");\n if (startIndex !== 0) {\n contextData.push(`\\n... ${startIndex} previous messages in the DataLayerQueue truncated`);\n }\n\n const availableLength = this.maxPropertyLength - contextData.reduce((sum, line) => sum + line.length, 0);\n\n const dataLayerLines = [] as string[];\n lastMessages.forEach((element: object, index) => {\n let stringValue = undefined;\n if (\"event\" in element && \"user\" in element) {\n try {\n stringValue = JSON.stringify({ event: element.event, user: element.user });\n } catch (error) {\n stringValue = `\\nCouldn't stringify the user. Event: ${element.event} Error: ${error}`;\n }\n } else if (\"user\" in element) {\n try {\n dataLayerLines.push(JSON.stringify({ event: \"without-event\", user: element.user }));\n } catch (error) {\n stringValue = `\\nCouldn't stringify the user. Event: without-event. Error : ${error}`;\n }\n } else if (\"event\" in element) {\n try {\n stringValue = JSON.stringify({ event: element.event });\n } catch (error) {\n stringValue = `\\nCouldn't stringify the event name. Event without user changes. Error : ${error}`;\n }\n }\n if (!stringValue) {\n return;\n }\n // If the message is the same as the last one, don't add it to the list\n if (index > 0 && dataLayerLines.length > 0 && dataLayerLines[dataLayerLines.length] === stringValue) {\n return;\n }\n dataLayerLines.push(stringValue);\n });\n\n // Remove the oldest DataLayerQueue event to keep the message count under the limit\n let eventsLength = dataLayerLines.reduce((sum, line) => sum + line.length, 0);\n while (eventsLength > availableLength) {\n const removedMessage = dataLayerLines.shift();\n this.truncatedLogsCount++;\n if (removedMessage) {\n eventsLength -= removedMessage.length;\n }\n }\n\n return [...contextData, ...dataLayerLines].join(\"\\n\");\n }\n\n private addObjectProperties(logProperties: KeyValuePair[], obj: object): void {\n for (const [key, value] of Object.entries(obj)) {\n logProperties.push({ key: key, value: value });\n }\n }\n\n private getPageProperties(): PageDebugInfo {\n const pageAttributesExtractor = container.resolve(ServiceTokens.PageAttributesExtractor);\n return pageAttributesExtractor.extractDebugInfo();\n }\n\n private addCookies(logProperties: KeyValuePair[]): void {\n const cookieNames = Object.values(CookiesNames);\n cookieNames.forEach((cookieName) => {\n const cookieValue = getCookie(cookieName);\n if (cookieValue) {\n logProperties.push({ key: `cookie.${cookieName}`, value: cookieValue });\n }\n });\n }\n}\n\ninterface logMessage {\n level: LogLevels;\n message: string;\n uri: string;\n properties: KeyValuePair[];\n}\n\ninterface KeyValuePair {\n key: string;\n value: unknown;\n}\n","import { getCookie, removeCookie, setCookie } from \"typescript-cookie\";\nimport \"../global\";\nimport { container } from \"tsyringe\";\nimport { SiteSettings } from \"../shared/SiteSettings\";\nimport { ServiceTokens } from \"../shared/ServiceTokens\";\nimport { CookiesNames } from \"../gtm/Cookies\";\nimport { Logger } from \"./Logger\";\n\nconst cookiesDomain = (): string => container.resolve(ServiceTokens.SiteSettings).CookiesDomain;\n\n/**\n * Create or update a cookie that will expire in 1 year.\n * @remarks\n * The created cookie will also specify the domain indicated by the site specific settings.\n * @see SiteSettings\n * */\nexport function setOneYearCookie(name: string, value: string, path?: string): void {\n const duration = 365; // Days\n if (!path) {\n path = \"/\";\n }\n setCookie(name, value, { expires: duration, domain: cookiesDomain(), path: path });\n}\n\n/**\n * Delete a cookie based on the given name and the cookies domain specified by the site specific settings.\n * @see SiteSettings\n */\nexport function deleteCookieForDomain(name: string, path?: string): void {\n if (!path) {\n path = \"/\";\n }\n removeCookie(name, {\n domain: cookiesDomain(),\n path,\n });\n}\n\n/**\n * Check and validate the browser can write and read cookies\n */\nexport function validateWritingCookie(): boolean {\n let canWriteCookie = true;\n const key = \"isd-writing-test\";\n const value = \"test\";\n\n try {\n setCookie(key, value, { expires: 365, domain: cookiesDomain(), path: \"/\" });\n const cookieValue = getCookie(key);\n if (cookieValue !== value) {\n canWriteCookie = false;\n Logger.error(`Unable to write/read cookie for domain \"${cookiesDomain()}\"`);\n }\n deleteCookieForDomain(key);\n } catch (e) {\n canWriteCookie = false;\n Logger.error(`Unable to write/read cookie. Error: ${e}.`);\n }\n\n return canWriteCookie;\n}\n\n/**\n * Confirm that the BlueConic third-party cookie has been successfully stored and can be read by the browser.\n */\nexport function validateBlueConicCookie(): void {\n const cookieValue = getCookie(CookiesNames.blueConic);\n if (!cookieValue) {\n Logger.error(`Unable to get BlueConic \"${CookiesNames.blueConic}\" cookie after profile initialization`);\n } else {\n Logger.verbose(`Can access BlueConic cookie after profile initialization`);\n }\n}\n\n/**\n * Confirm that the Lotame third-party cookie has been successfully stored and can be read by the browser.\n */\nexport function validateLotameCookie(): void {\n const cookieValue = getCookie(CookiesNames.lotame);\n if (!cookieValue) {\n Logger.error(`Unable to get Lotame \"${CookiesNames.lotame}\" cookie after profile initialization`);\n }\n}\n","import { Logger } from \"./Logger\";\n\n/**\n * Check and validate the browser can write and read in the localStorage\n */\nexport function validateWritingLocalStorage(): boolean {\n let canWriteLocalStorage = true;\n const key = \"isd-writing-test\";\n const value = \"test\";\n\n try {\n localStorage.setItem(key, value);\n const storedValue = localStorage.getItem(key);\n if (storedValue !== value) {\n canWriteLocalStorage = false;\n Logger.error(`Unable to write/read in local storage.`);\n }\n localStorage.removeItem(key);\n } catch (e) {\n Logger.error(`Unable to write/read in local storage. Error: ${e}.`);\n canWriteLocalStorage = false;\n }\n\n return canWriteLocalStorage;\n}\n","import { Logger } from \"../utils/Logger\";\nimport { StreamMediaType } from \"./StreamMediaType\";\nimport { validateWritingCookie } from \"../utils/Cookies\";\nimport { validateWritingLocalStorage } from \"../utils/LocalStorage\";\n\n/**\n * Interface used to specify the contract that each implementation of the library must fulfill.\n */\nexport abstract class GtmDataSyncLib {\n /**\n * Set up / augment the user in the GTM DataLayer based on:\n * - Data from the UIE system\n * - Data from Lotame\n * - Data from Adobe's ID Service API\n * - Data from the CDP (BlueConic)\n * The data sources depends on the site.\n */\n abstract setupCurrentUser(): Promise;\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Set the lotame-specific identifier of the current user in the UIE system.\n * @remarks\n * This method is currently called by the lotame_logic_audience GTM tag.\n * Lotame's tags may load before this library load. Therefore, the call to UIE may be delayed until\n * the library is loaded in the identity of the current user is loaded from the UIE.\n * @param lotameId\n * The identifier of the current user in Lotame.\n */\n abstract setLotameIdInUie(lotameId: string): Promise;\n\n /**\n * In Single Page Applications (like ici.radio-canada.ca), call this method to run whatever code should be run\n * when a page view is triggered (but this library is already loaded!)\n */\n abstract handlePageView(): Promise;\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Invoke this method from GTM when a \"read\" event is triggered.\n */\n abstract handleReadEvent(): Promise;\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Invoke this method from GTM when a \"trackContentStart\" event is triggered.\n * @param mediaType The type of media, either audio or video.\n */\n abstract handleContentStart(mediaType: StreamMediaType): Promise;\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Send an error message. Called from a GTM tag\n * Will send the logs to kibana\n */\n public sendErrorLog(message: string): void {\n Logger.error(message);\n return;\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Send a warning message. Called from a GTM tag\n * Will send the logs to kibana\n */\n public sendWarningLog(message: string): void {\n Logger.warn(message);\n return;\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Send a verbose message. Called from a GTM tag\n * Will not send the logs to kibana\n */\n public verboseLog(message: string): void {\n Logger.verbose(message);\n return;\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Return the build number for this library.\n */\n public buildNumber(): string {\n return BuildNumber;\n }\n\n /**\n * Validate that the browser can write and read from the browser's storage (cookies & localStorage)\n * For logging purpose, but with the goal of adding a kill-switch.\n */\n public validateStorageAccess(): boolean {\n let isValid = true;\n if (!validateWritingCookie() || !validateWritingLocalStorage()) {\n isValid = false;\n }\n\n return isValid;\n }\n}\n","/**\n * Check if two arrays have the same number of items and that both array contains the same string items.\n * The ordering of the items is not important.\n * @param array1 The first array to compare\n * @param array2 The second array to compare\n * @returns True if the arrays are equivalents\n */\nexport function ArraysAreEquivalents(array1: string[], array2: string[]): boolean {\n if (array1 === array2) {\n return true;\n }\n\n if (array1.length !== array2.length) {\n return false;\n }\n for (let i = 0; i < array1.length; i++) {\n if (!array2.includes(array1[i])) {\n return false;\n }\n }\n return true;\n}\n","/**\n * Set targeting for a given key in Google Publisher Tag\n * @see {@link https://developers.google.com/publisher-tag/reference#googletag.PubAdsService_setTargeting}\n * @param key\n * @param values\n */\nexport function setGPTTargeting(key: string, values: string[]): void {\n if (typeof googletag === \"undefined\") {\n // See https://developers.google.com/publisher-tag/guides/get-started\n window.googletag = window.googletag || { cmd: [] };\n }\n\n googletag.cmd.push((): void => {\n googletag.pubads().setTargeting(key, values);\n });\n}\n","import { Logger } from \"../utils/Logger\";\nimport { ArraysAreEquivalents } from \"../shared/ArrayUtils\";\nimport { setGPTTargeting } from \"../googleTagPublisher/gtpUtils\";\n\n/**\n * Fetch the segments from the current profile and send them to Google Ads Manager if they changed since\n * the last time they were sent.\n * @remarks\n * This function assume that BlueConic is loaded and the profile is set up!\n * See also the Send_segments_GAM tag in GTM.\n */\nexport default function manageSegments(): void {\n /**\n * Key for the local storage slot where we are storing the segments retrieved from the CDP.\n * @remarks\n * This key is also used in the Send_segments_GAM GTM Tag to send the available segments as soon as GTM\n * is loaded.\n * @private\n */\n const segmentsStorageKey = \"CDP_segments\";\n\n if (typeof googletag === \"undefined\") {\n Logger.verbose(\"googletag is not loaded\");\n return;\n }\n const segments = blueConicClient.getSegments();\n if (segments.length === 0) {\n Logger.verbose(\"CDP: No segments loaded\");\n localStorage.removeItem(segmentsStorageKey);\n return;\n }\n const segmentIds = segments.map((segment) => segment.id);\n const storageContent = localStorage.getItem(segmentsStorageKey);\n if (storageContent) {\n const storageIds = storageContent.split(\",\");\n if (!ArraysAreEquivalents(segmentIds, storageIds)) {\n Logger.verbose(\"CDP: Sending updated segments.\");\n sendSegmentsToGAM(segmentIds);\n } else {\n Logger.verbose(\"CDP: Segments didn't change\");\n }\n } else {\n Logger.verbose(\"CDP: No segments in storage.\");\n sendSegmentsToGAM(segmentIds);\n }\n\n function sendSegmentsToGAM(segmentIds: string[]): void {\n Logger.verbose(`Sending ${segmentIds.length} segments.`);\n setGPTTargeting(\"cdp\", segmentIds);\n localStorage.setItem(segmentsStorageKey, segmentIds.join());\n }\n}\n","import { getUserAdapter, isPageB2C } from \"../gtm/GtmUtils\";\n\n/**\n * Rules that change from one implementation to another.\n */\nexport class SiteRules {\n /**\n * Checks if the current page/section/domain forbids user tracking\n * for legal, functional, or logistical reasons, disabling the library completely.\n * @constructor\n */\n get isGTMLibraryEnabled(): boolean {\n return !isPageB2C();\n }\n\n /**\n * Check if user is anonymous.\n */\n get isAnonymousUser(): boolean {\n const user = getUserAdapter();\n return !user?.rcId;\n }\n\n /**\n * Checks if user tracking is enabled for the current page/section/domain,\n * allowing specific calls to providers.\n * @constructor\n */\n get isTrackingEnabled(): boolean {\n return true;\n }\n}\n","import { User } from \"../gtm/User\";\nimport { makeJsonRequest } from \"../utils/JsonRequests\";\nimport { HttpMethods } from \"../utils/HttpMethods\";\nimport { UieCurrentUserResponse } from \"./dtos/UieCurrentUserResponse\";\nimport \"../global\";\nimport { inject, injectable, singleton } from \"tsyringe\";\nimport { ServiceTokens } from \"../shared/ServiceTokens\";\nimport { SiteSettings } from \"../shared/SiteSettings\";\nimport { Logger } from \"../utils/Logger\";\nimport { getCookie } from \"typescript-cookie\";\nimport { CookiesNames } from \"../gtm/Cookies\";\nimport { setOneYearCookie } from \"../utils/Cookies\";\nimport { UieLoginRequest } from \"./dtos/UieLoginRequest\";\nimport { UieLoginResponse } from \"./dtos/UieLoginResponse\";\n\n/**\n * This class is used to simplify interactions with CBC's UIE system.\n * */\n@injectable()\n@singleton()\nexport class UieClient {\n constructor(@inject(ServiceTokens.SiteSettings) private siteSettings: SiteSettings) {}\n\n private get baseUrl(): string {\n return this.siteSettings.UieBaseAddress;\n }\n\n private get currentUserUrl(): string {\n return `${this.baseUrl}/v0/current_user`;\n }\n\n private get logoutUrl(): string {\n return `${this.baseUrl}/v0/logout`;\n }\n\n private get loginUrl(): string {\n return `${this.baseUrl}/v0/login`;\n }\n\n /**\n * Fetch a RC_Plus ID from the UIE based on either the identityProviderUserId or\n * the viafouraId of the user.\n * */\n public async fetchRcPlusId(user: User): Promise {\n const identityProviderUserId = user.identityProviderUserId;\n const viafouraId = user.viafouraId ? user.viafouraId : user.identityProviderUserId;\n\n if (identityProviderUserId) {\n const uieLoginRequest: UieLoginRequest = {\n \"@context\": {\n cbc: \"http://vocab.data.cbc.ca/\",\n },\n \"cbc:loginradius_id\": [\"\" + identityProviderUserId + \"\"],\n \"cbc:viafoura_id\": [\"\" + viafouraId + \"\"],\n };\n\n const response = await makeJsonRequest(this.loginUrl, HttpMethods.POST, \"include\", uieLoginRequest);\n if (!response.ok) {\n await Logger.requestError(\"Could not fetch RC_Plus_ID from UIE login endpoint.\", response);\n return;\n }\n const loginResponse = (await response.json()) as UieLoginResponse;\n if (loginResponse[\"cbc:rc_plus_id\"] && loginResponse[\"cbc:rc_plus_id\"].length > 0) {\n return loginResponse[\"cbc:rc_plus_id\"][0];\n } else {\n await Logger.requestError(\"UIE response didn't include a rc_plus_id\", response);\n }\n } else {\n const errorMsg = \"Cannot call UIE login because the identityProviderUserId is undefined\";\n Logger.error(errorMsg);\n }\n return;\n }\n\n /**\n * Retrieves the RCVisitorId while handling the associated cookies.\n * If the user is still logged in, it logs them out.\n * Utilizes the rcVisitorBackup cookie if available and updates the cookie values accordingly.\n */\n public async handleRcVisitorId(): Promise {\n // An anonymous user should have a rc_visitor identifier, not a rc_plus identifier.\n let rcPlus = getCookie(CookiesNames.rcPlus);\n if (rcPlus) {\n Logger.log(\"Logging out user from UIE. rc_plus:\", rcPlus);\n await this.logoutUser();\n rcPlus = getCookie(CookiesNames.rcPlus);\n if (rcPlus) {\n Logger.warn(\"Logging out from UIE didn't delete the rcPlus cookie.\");\n }\n }\n\n let rcVisitorId = getCookie(CookiesNames.rcVisitorBackup);\n if (rcVisitorId) {\n setOneYearCookie(CookiesNames.rcVisitor, rcVisitorId);\n setOneYearCookie(CookiesNames.rcVisitorBackup, rcVisitorId);\n } else {\n rcVisitorId = getCookie(CookiesNames.rcVisitor);\n }\n if (!rcVisitorId) {\n Logger.verbose(\"Fetching rc_visitor\");\n rcVisitorId = await this.fetchRcVisitorId();\n if (!rcVisitorId) {\n Logger.error(\"Failed to get a RCVisitorId from UIE\");\n return;\n } else {\n setOneYearCookie(CookiesNames.rcVisitorBackup, rcVisitorId);\n setOneYearCookie(CookiesNames.rcVisitor, rcVisitorId);\n }\n }\n return rcVisitorId;\n }\n\n private async fetchRcVisitorId(): Promise {\n const response = await makeJsonRequest(this.currentUserUrl, HttpMethods.GET, \"include\");\n if (!response.ok) {\n await Logger.requestError(\"Could not fetch rc_visitor_id from UIE current user endpoint.\", response);\n return;\n }\n const currentUserResponse = (await response.json()) as UieCurrentUserResponse;\n if (currentUserResponse[\"cbc:rc_visitor_id\"] && currentUserResponse[\"cbc:rc_visitor_id\"].length > 0) {\n return currentUserResponse[\"cbc:rc_visitor_id\"][0];\n } else {\n await Logger.requestError(\"UIE response didn't include a rc_visitor_id\", response);\n }\n }\n\n public async logoutUser(): Promise {\n try {\n return await makeJsonRequest(this.logoutUrl, HttpMethods.POST, \"include\");\n } catch (e) {\n Logger.error(\"Failed to logout user.\");\n throw e;\n }\n }\n}\n","import \"../global\";\nimport { BlueConicProfileProperties } from \"./BlueConicProfileProperties\";\nimport { User } from \"../gtm/User\";\nimport { Logger } from \"../utils/Logger\";\nimport { BlueConicProfile } from \"./blueConicJsApi/BlueConicProfile\";\nimport { getOrCreateUserAdapter } from \"../gtm/GtmUtils\";\nimport { getCookie } from \"typescript-cookie\";\nimport { container } from \"tsyringe\";\nimport { SiteRules } from \"../shared/SiteRules\";\nimport { CookiesNames } from \"../gtm/Cookies\";\nimport { UieClient } from \"../cbcUie/UieClient\";\nimport { setOneYearCookie, validateBlueConicCookie } from \"../utils/Cookies\";\nimport { RcUserIdentifier } from \"../shared/RcUserIdentifier\";\n\n/** Set up the BlueConic profile based on the state of the current user stored in the dataLayer.\n * @remarks\n * Warning: the profile is NOT ready until the callback is invoked!\n * @param caller Specifies the scope of the callback function.\n * @param callback - A function to call once the profile is loaded and the relevant identifier is set.\n * */\nexport default function setupProfile(caller: object, callback: () => void): void {\n const user = getOrCreateUserAdapter();\n if (user.cdpProfileId) {\n Logger.warn(\"Profile already setup\");\n callback();\n return;\n }\n\n Logger.verbose(\"Started profile setup\");\n Logger.log(\"Initial CDP profile Id:\", blueConicClient.profile.getProfile().getId());\n blueConicClient.profile\n .getProfile()\n .loadValues(Object.values(BlueConicProfileProperties), caller, () => onPropertiesLoaded(caller, callback));\n}\n\nasync function onPropertiesLoaded(caller: object, callback: () => void): Promise {\n const profile = blueConicClient.profile.getProfile();\n const profileId = profile.getId();\n const profileRcId = profile.getValue(BlueConicProfileProperties.rcId);\n const profileRcVisitorId = profile.getValue(BlueConicProfileProperties.rcVisitorId);\n const isAnonymous = container.resolve(SiteRules).isAnonymousUser;\n const dataLayerUser = getOrCreateUserAdapter();\n\n const userIdentifier = {\n rcId: dataLayerUser.rcId,\n rc_visitor_id: dataLayerUser.rc_visitor_id,\n } as RcUserIdentifier;\n if (profileRcId && profileRcVisitorId) {\n Logger.error(\n `[DSL] Profile ${profile.getId()} has both an RCID (${profileRcId}) and a RC_VisitorId (${profileRcVisitorId})!`,\n );\n }\n\n if (isCbcProfile(profile)) {\n Logger.log(\"CBC Profile. Creating a new profile.\");\n if (isAnonymous) {\n userIdentifier.rc_visitor_id = await getRcVisitorId();\n }\n handleCreateProfile(caller, userIdentifier, callback, profileId);\n return;\n }\n\n if (!profileRcId && !profileRcVisitorId) {\n if (isAnonymous) {\n userIdentifier.rc_visitor_id = await getRcVisitorId();\n }\n const pageView = profile.getValue(BlueConicProfileProperties.totalPageViews);\n if (!pageView || parseInt(pageView) <= 1) {\n // Warning : this message is used in tests.\n Logger.verbose(\"New profile with zero or one page view. Using as is.\");\n\n setRcIdOrVisitorId(caller, userIdentifier, callback);\n return;\n } else {\n Logger.verbose(\n `Used profile without IDs. Deleting and creating a new one. Old profile had ${pageView} page views`,\n );\n blueConicClient.profile.deleteProfile(caller, () => {\n handleCreateProfile(caller, userIdentifier, callback, profileId);\n });\n return;\n }\n }\n\n if (isAnonymous && profileRcVisitorId) {\n Logger.log(\"Anonymous user with Profile RCVisitorId. Using RCVisitorID from CDP :\", profileRcVisitorId);\n updateRcVisitorBackup(profileRcVisitorId);\n userIdentifier.rc_visitor_id = profileRcVisitorId;\n profileSetupCompleted(caller, userIdentifier, false, callback);\n return;\n }\n\n if (isAnonymous && profileRcId) {\n Logger.log(\"Anonymous user with Profile RCId. Creating new profile\");\n userIdentifier.rc_visitor_id = await getRcVisitorId();\n handleCreateProfile(caller, userIdentifier, callback, profileId);\n return;\n }\n\n if (userIdentifier.rcId && profileRcVisitorId) {\n Logger.log(\"User with RCID with Profile RCVisitorId. Creating new profile\");\n updateRcVisitorBackup(profileRcVisitorId);\n handleCreateProfile(caller, userIdentifier, callback, profileId);\n return;\n }\n\n if (profileMatchCurrentUser(userIdentifier, profileRcId)) {\n Logger.log(\"Profile match the current user.\");\n profileSetupCompleted(caller, userIdentifier, false, callback);\n return;\n } else {\n Logger.log(\"User and Profile RCID don't match, creating another profile\");\n handleCreateProfile(caller, userIdentifier, callback, profileId);\n }\n}\n\n/**\n * Saving the rcVisitorId for future uses, since the rcVisitor cookie is deleted if a user is connected\n */\nfunction updateRcVisitorBackup(rcVisitorId: string): void {\n setOneYearCookie(CookiesNames.rcVisitorBackup, rcVisitorId);\n}\n\nasync function getRcVisitorId(): Promise {\n let rcVisitorId = getCookie(CookiesNames.rcVisitorBackup);\n if (rcVisitorId) {\n // Refresh cookie\n updateRcVisitorBackup(rcVisitorId);\n Logger.log(`Using RcVisitorId from ${CookiesNames.rcVisitorBackup}: `, rcVisitorId);\n } else {\n Logger.verbose(\"RCVisitorId not found in visitor backup cookie\");\n const uieClient = container.resolve(UieClient);\n rcVisitorId = await uieClient.handleRcVisitorId();\n if (!rcVisitorId) {\n Logger.error(\"handleRcVisitorId didn't return a RCVisitorId!\");\n }\n }\n\n return rcVisitorId;\n}\n\nfunction isCbcProfile(profile: BlueConicProfile): boolean {\n return (\n !!profile.getValue(BlueConicProfileProperties.cbcPlusId) ||\n !!profile.getValue(BlueConicProfileProperties.cbcVisitorId)\n );\n}\n\nfunction profileMatchCurrentUser(user: RcUserIdentifier, profileRcId?: string): boolean {\n return !!(user.rcId && user.rcId === profileRcId);\n}\n\nfunction handleCreateProfile(\n caller: object,\n userIdentifier: RcUserIdentifier,\n callback: () => void,\n oldProfileId: string,\n): void {\n if (!userIdentifier.rcId && !userIdentifier.rc_visitor_id) {\n Logger.error(\"No user identifier available to create a new profile.\");\n return;\n }\n blueConicClient.profile.createProfile(caller, () => {\n const newProfileId = blueConicClient.profile.getProfile().getId();\n if (newProfileId === oldProfileId) {\n Logger.error(`Post Create Profile, ProfileId is unchanged: ${newProfileId}`);\n } else Logger.log(\"Post Create Profile ProfileId:\", newProfileId);\n // Call suggested by BlueConic: triggers a page view event to increase the chance of switching to the new profile.\n // Also needed if we previously deleted the profile loaded by the page.\n // noinspection SpellCheckingInspection\n blueConicClient.createEvent(\"PAGEVIEW\", null, caller, function () {\n const profile = blueConicClient.profile.getProfile();\n Logger.log(\"PageView ProfileId:\", profile.getId());\n setRcIdOrVisitorId(caller, userIdentifier, callback);\n });\n });\n}\n\nfunction setRcIdOrVisitorId(caller: object, user: RcUserIdentifier, callback: () => void): void {\n if (user.rcId) {\n setRcIdInProfile(caller, user.rcId, callback);\n } else if (user.rc_visitor_id) {\n setRcVisitorIdInProfile(caller, user.rc_visitor_id, callback);\n } else {\n Logger.error(\"No user identifier available!\");\n }\n}\n\nfunction setRcIdInProfile(caller: object, rcId: string, callback: () => void): void {\n Logger.debugLog(`Setting RCID ${rcId} on profile ${blueConicClient.profile.getProfile().getId()}`);\n blueConicClient.profile.getProfile().setValue(BlueConicProfileProperties.rcId, rcId);\n blueConicClient.profile.updateProfile(caller, () => {\n const profile = blueConicClient.profile.getProfile();\n Logger.debugLog(`Post Update : RCID ${rcId} set on profile ${profile.getId()}`);\n profileSetupCompleted(caller, { rcId: rcId, rc_visitor_id: undefined }, true, callback);\n });\n}\n\nfunction setRcVisitorIdInProfile(caller: object, rcVisitorId: string, callback: () => void): void {\n Logger.debugLog(`Setting rc_visitor_id ${rcVisitorId} on profile ${blueConicClient.profile.getProfile().getId()}`);\n blueConicClient.profile.getProfile().setValue(BlueConicProfileProperties.rcVisitorId, rcVisitorId);\n blueConicClient.profile.updateProfile(caller, () => {\n const profile = blueConicClient.profile.getProfile();\n Logger.debugLog(`Post Update rc_visitor_id ${rcVisitorId} ProfileId ${profile.getId()}`);\n profileSetupCompleted(caller, { rcId: undefined, rc_visitor_id: rcVisitorId }, true, callback);\n });\n}\n\nfunction profileSetupCompleted(\n caller: object,\n userIdentifiers: RcUserIdentifier,\n needReload: boolean,\n callback: () => void,\n): void {\n if (needReload) {\n // This reload of the profile's properties is required to set the postal code / FSA group IDs because\n // the frequent postal code property or declared postal code could have been merged from another profile\n // after the user's identifier is set.\n Logger.verbose(\"Reloading profile after setting RCID or RCVisitorId\");\n\n blueConicClient.profile\n .getProfile()\n .loadValues(Object.values(BlueConicProfileProperties), caller, () =>\n profileSetupCompleted({}, userIdentifiers, false, callback),\n );\n return;\n }\n const profile = blueConicClient.profile.getProfile();\n const user: User = {\n cdpProfileId: profile.getId(),\n rc_visitor_id: userIdentifiers.rc_visitor_id,\n };\n dataLayerQueue.push({\n event: `gtmLib.profileSetupCompleted`,\n user: user,\n });\n\n const profileRcId = profile.getValue(BlueConicProfileProperties.rcId);\n const profileRcVisitorId = profile.getValue(BlueConicProfileProperties.rcVisitorId);\n Logger.log(\n `profileSetupCompleted: ProfileID: ${profile.getId()} Profile RCID: ${profileRcId} Profile rcVisitorId: ${profileRcVisitorId}`,\n );\n\n if (profileRcId && profileRcVisitorId) {\n Logger.error(\n `[ERROR] Profile ${profile.getId()} has both an RCID (${profileRcId}) and a RC_VisitorId (${profileRcVisitorId})!`,\n );\n }\n if (!profileRcId && !profileRcVisitorId) {\n Logger.error(`Profile ${profile.getId()} doesn't have any ID assigned!`);\n }\n validateBlueConicCookie();\n callback();\n}\n","import { getUserAdapter } from \"../gtm/GtmUtils\";\nimport { DataSyncLibEventNames } from \"../shared/DataSyncLibEventNames\";\nimport { Logger } from \"../utils/Logger\";\nimport { PropertyValuePair } from \"./PropertyValuePair\";\n\n/**\n * Register a function to invoke once the CDP's profile has been loaded and setup.\n * @param callback The function to invoke\n */\nexport function invokeWhenProfileSetup(callback: () => void): void {\n if (cdpProfileIsSetup()) {\n callback();\n } else {\n window.addEventListener(DataSyncLibEventNames.CdpProfileSetup, callback);\n }\n}\n\n/**\n * Register a function to invoke once the CDP's profile has been loaded.\n * @remarks\n * Warning: function will be invoked BEFORE the profile is set up. Unless your callback doesn't involve using the profile\n * of the current user, you probably want to use invokeWhenProfileSetup instead.\n * @param callback The function to invoke\n * @see invokeWhenProfileSetup\n */\nexport function invokeWhenProfileLoaded(callback: () => void): void {\n // This condition comes directly from BlueConic's documentation.\n // See https://support.blueconic.com/hc/en-us/articles/202605221-JavaScript-front-end-API\n // Is BlueConic loaded?\n if (\n typeof blueConicClient !== \"undefined\" &&\n typeof blueConicClient.event !== \"undefined\" &&\n typeof blueConicClient.event.subscribe !== \"undefined\"\n ) {\n // BlueConic is loaded, now we can do API things.\n // Is the profile loaded and set up?\n if (cdpProfileIsSetup()) {\n callback();\n } else {\n runWhenProfileReady(callback);\n }\n } else {\n window.addEventListener(\n \"onBlueConicLoaded\",\n () => {\n runWhenProfileReady(callback);\n },\n false,\n );\n }\n\n function runWhenProfileReady(toInvoke: () => void): void {\n // We are using onEventReady here instead of onReady because it sometimes creates\n // profile conflicts with the listeners when we need to create a new profile on page load.\n blueConicClient.event.subscribe(blueConicClient.event.onEventReady, {}, (_, context) => {\n // We want to run this code only once.\n if (context.isFirstLoad) {\n toInvoke();\n }\n });\n }\n}\n\n/**\n * Check if the CDP profile has been loaded and set up based on the current user\n * in the Data Layer.\n */\nfunction cdpProfileIsSetup(): boolean {\n const user = getUserAdapter();\n return !!user && !!user.cdpProfileId;\n}\n\n/**\n * Check the local storage to validate and compare it to the session length to check if a new web session should start\n * @param sessionLengthInMinutes The session length in minutes\n * @return Returns true if the session is expired and the browser can read/write in the localStorage\n */\nexport function shouldStartNewWebSession(sessionLengthInMinutes: number): boolean {\n const startWebSessionKey = \"gtm_startWebSessionKey\";\n\n const storedStartWebSessionValue = localStorage.getItem(startWebSessionKey);\n const now = new Date();\n if (!storedStartWebSessionValue) {\n Logger.verbose(\"No stored web session. Creating a new session\");\n localStorage.setItem(startWebSessionKey, now.toISOString());\n return !!localStorage.getItem(startWebSessionKey);\n }\n\n const parsedStartWebSessionValue = Date.parse(storedStartWebSessionValue);\n if (isNaN(parsedStartWebSessionValue)) {\n Logger.verbose(\"Stored web session expiration is not a valid date. Creating a new session\");\n localStorage.setItem(startWebSessionKey, now.toISOString());\n return !!localStorage.getItem(startWebSessionKey);\n }\n\n const expirationDate = new Date(parsedStartWebSessionValue).getTime() + sessionLengthInMinutes * 60000; // 60000 = a minute in milliseconds\n if (now.getTime() > expirationDate) {\n Logger.verbose(\"Stored web session has expired. Creating a new session\");\n localStorage.setItem(startWebSessionKey, now.toISOString());\n return !!localStorage.getItem(startWebSessionKey);\n }\n\n Logger.verbose(\"Stored web session isn't expired\"); // Used in tests!\n return false;\n}\n\n/**\n * Set the value of a list of properties and log a verbose message for each\n * after the update is complete.\n * @param pairs A list of property-value pairs to update\n */\nexport function updateProfileProperties(pairs: PropertyValuePair[]): void {\n const profile = blueConicClient.profile.getProfile();\n for (const pair of pairs) {\n profile.setValue(pair.propertyId, pair.value);\n }\n blueConicClient.profile.updateProfile(undefined, () => {\n for (const pair of pairs) {\n Logger.verbose(`CDP: Profile property \"${pair.propertyId}\" updated to ${pair.value}`);\n }\n });\n}\n","import manageSegments from \"./ManageSegments\";\nimport setupProfile from \"../cdp/SetupProfile\";\nimport { DataSyncLibEventNames } from \"../shared/DataSyncLibEventNames\";\nimport { Logger } from \"../utils/Logger\";\nimport { PageAttributesExtractor } from \"../shared/PageAttributesExtractor\";\nimport {\n invokeWhenProfileLoaded,\n invokeWhenProfileSetup,\n shouldStartNewWebSession,\n updateProfileProperties,\n} from \"./BlueConicUtils\";\nimport { inject, singleton } from \"tsyringe\";\nimport { ServiceTokens } from \"../shared/ServiceTokens\";\nimport { SiteRules } from \"../shared/SiteRules\";\nimport { PageAttributes } from \"../shared/PageAttributes\";\nimport { StreamMediaType } from \"../shared/StreamMediaType\";\nimport { TimelineEventIds } from \"./TimelineEventsId\";\nimport isEqual from \"lodash/isEqual\";\nimport { SiteSettings } from \"../shared/SiteSettings\";\nimport { getOrCreateUserAdapter } from \"../gtm/GtmUtils\";\nimport { BlueConicProfileProperties } from \"./BlueConicProfileProperties\";\nimport { BlueConicProfile } from \"./blueConicJsApi/BlueConicProfile\";\nimport { PropertyValuePair } from \"./PropertyValuePair\";\n\n/**\n * Base CDP client implementation\n */\n@singleton()\nexport class CdpClient {\n constructor(\n @inject(ServiceTokens.PageAttributesExtractor) protected pageAttributesExtractor: PageAttributesExtractor,\n @inject(SiteRules) protected siteRules: SiteRules,\n @inject(ServiceTokens.SiteSettings) protected siteSettings: SiteSettings,\n ) {}\n\n private lastReadJsPageAttributes?: PageAttributes;\n private lastRcLoadedPageAttributes?: PageAttributes;\n private lastRcStreamingPageAttributes?: PageAttributes;\n\n /**\n * Using the current state of the user in the DataLayer, load and set up the CDP profile.\n * */\n public async initialize(): Promise {\n if (!this.siteRules.isGTMLibraryEnabled) {\n Logger.verbose(\"CDP : excluded page or host. BlueConic script will not be loaded.\");\n return;\n }\n invokeWhenProfileLoaded(() => {\n setupProfile(this, () => {\n window.dispatchEvent(new Event(DataSyncLibEventNames.CdpProfileSetup));\n });\n });\n }\n\n /**\n * Invoke this method when a new page view is registered on a SPA.\n * @returns Returns true if the Page View event was handled. False otherwise.\n */\n public async handlePageView(): Promise {\n if (!this.siteRules.isGTMLibraryEnabled) {\n return false;\n }\n await this.sendRcStartWebSession();\n this.sendRcLoaded();\n invokeWhenProfileSetup(manageSegments);\n // BlueConic Library generate their own page view event via their own listener\n return true;\n }\n\n /**\n * Send the RC_Read timeline event to the CDP.\n */\n public sendRcRead = (): void => {\n if (!this.siteRules.isGTMLibraryEnabled) {\n return;\n }\n // Immediately capture the page attributes in case of page change.\n const pageAttributes = this.pageAttributesExtractor.extractReadAttributes();\n if (!this.lastReadJsPageAttributes || !isEqual(this.lastReadJsPageAttributes, pageAttributes)) {\n this.lastReadJsPageAttributes = pageAttributes;\n const now = new Date();\n invokeWhenProfileSetup(() => {\n Logger.verbose(`Sending ${TimelineEventIds.RcRead}`, pageAttributes);\n const profile = blueConicClient.profile.getProfile();\n profile.timeline.createEvent(TimelineEventIds.RcRead, now, pageAttributes, this);\n updateProfileProperties([\n {\n propertyId: BlueConicProfileProperties.rcLastReadEventDate,\n value: now.valueOf().toString(),\n },\n ]);\n });\n }\n };\n\n /**\n * Send either the Rc_Streamed_Audio or Rc_Stream_Video\n * @param mediaType Content type, either video or audio.\n */\n public async sendRcStream(mediaType: StreamMediaType): Promise {\n if (!this.siteRules.isGTMLibraryEnabled) {\n return;\n }\n const now = new Date();\n await this.sendRcStartWebSession();\n const eventTypeName =\n mediaType === StreamMediaType.Audio ? TimelineEventIds.RcStreamedAudio : TimelineEventIds.RcStreamedVideo;\n // Immediately capture the page attributes in case of page change.\n const pageAttributes = this.pageAttributesExtractor.extractStreamAttributes(mediaType);\n if (!this.lastRcStreamingPageAttributes || !isEqual(this.lastRcStreamingPageAttributes, pageAttributes)) {\n this.lastRcStreamingPageAttributes = pageAttributes;\n invokeWhenProfileSetup(() => {\n Logger.verbose(`Sending ${eventTypeName}`, pageAttributes);\n blueConicClient.profile.getProfile().timeline.createEvent(eventTypeName, now, pageAttributes, undefined);\n switch (eventTypeName) {\n case TimelineEventIds.RcStreamedAudio:\n updateProfileProperties([\n {\n propertyId: BlueConicProfileProperties.rcLastStartStreamedAudioEventDate,\n value: now.valueOf().toString(),\n },\n ]);\n break;\n case TimelineEventIds.RcStreamedVideo:\n updateProfileProperties([\n {\n propertyId: BlueConicProfileProperties.rcLastStartStreamedVideoEventDate,\n value: now.valueOf().toString(),\n },\n ]);\n break;\n default:\n Logger.error(\"Unhandled event type\", eventTypeName);\n break;\n }\n });\n }\n }\n\n /**\n * Send the RC_Loaded timeline event to the CDP.\n */\n private sendRcLoaded = (): void => {\n if (!this.siteRules.isGTMLibraryEnabled) {\n return;\n }\n // Immediately capture the page attributes in case of page change.\n const pageAttributes = this.pageAttributesExtractor.extractPageLoadedAttributes();\n if (!this.lastRcLoadedPageAttributes || !isEqual(this.lastRcLoadedPageAttributes, pageAttributes)) {\n this.lastRcLoadedPageAttributes = pageAttributes;\n const now = new Date();\n invokeWhenProfileSetup(() => {\n Logger.verbose(`Sending ${TimelineEventIds.RcLoaded}`, pageAttributes);\n const profile = blueConicClient.profile.getProfile();\n profile.timeline.createEvent(TimelineEventIds.RcLoaded, now, pageAttributes, undefined);\n updateProfileProperties([\n {\n propertyId: BlueConicProfileProperties.rcLastLoadedEventDate,\n value: now.valueOf().toString(),\n },\n ]);\n });\n }\n };\n\n /**\n * Send the RcStartWebSession event to the CDP if a new session has started or the previous session has expired\n * @private\n */\n private async sendRcStartWebSession(): Promise {\n if (!this.siteRules.isGTMLibraryEnabled) {\n return;\n }\n\n // Collect the page attributes for the start session event as early as possible in case of page change.\n const pageAttributes = await this.pageAttributesExtractor.extractStartSessionAttributes();\n const now = new Date();\n invokeWhenProfileSetup(async (): Promise => {\n if (navigator.locks !== undefined) {\n await navigator.locks.request(\"bc_startWebSession\", async () => {\n this.createWebSessionIfRequired(pageAttributes, now);\n });\n } else {\n Logger.warn(\n \"Locks API not supported. Starting web session without lock. This may cause multiple sessions to be created.\",\n );\n this.createWebSessionIfRequired(pageAttributes, now);\n }\n });\n }\n\n private createWebSessionIfRequired(pageAttributes: PageAttributes, now: Date): void {\n if (!shouldStartNewWebSession(this.siteSettings.WebSessionLengthInMinutes)) {\n return;\n }\n this.logSendRcStartWebSession();\n Logger.verbose(`Sending ${TimelineEventIds.RcStartWebSession}`, pageAttributes); // Used in tests!\n const profile = blueConicClient.profile.getProfile();\n profile.timeline.createEvent(TimelineEventIds.RcStartWebSession, now, pageAttributes, undefined);\n let propertyValuePairs: PropertyValuePair[] = [\n {\n propertyId: BlueConicProfileProperties.rcLastStartWebSessionEventDate,\n value: now.valueOf().toString(),\n },\n ];\n if (pageAttributes.postalCode) {\n const postalCodeGroupId = this.getPostalCodeGroupId(pageAttributes.postalCode, profile);\n const fsa = postalCodeGroupId.slice(0, 3);\n propertyValuePairs = propertyValuePairs.concat([\n {\n propertyId: BlueConicProfileProperties.postalCodeMostRecent,\n value: pageAttributes.postalCode,\n },\n {\n propertyId: BlueConicProfileProperties.postalCodeGroupId,\n value: postalCodeGroupId,\n },\n {\n propertyId: BlueConicProfileProperties.fsaGroupId,\n value: fsa,\n },\n ]);\n } else {\n Logger.verbose(`CDP: No postal code detected in the page attributes. Skipping postal code update.`);\n }\n\n updateProfileProperties(propertyValuePairs);\n }\n\n private getPostalCodeGroupId(mostRecentPostalCode: string, profile: BlueConicProfile): string {\n const postalCodeDeclared = profile.getValue(BlueConicProfileProperties.postalCodeDeclared);\n Logger.verbose(`CDP: Postal code declared: ${postalCodeDeclared}`);\n if (postalCodeDeclared) {\n return postalCodeDeclared;\n }\n const postalCodeRegion = profile.getValue(BlueConicProfileProperties.postalCodeRegion);\n Logger.verbose(`CDP: Postal code region: ${postalCodeRegion}`);\n if (postalCodeRegion) {\n return postalCodeRegion;\n }\n const postalCodeMostFrequent = profile.getValue(BlueConicProfileProperties.postalCodeMostFrequent);\n Logger.verbose(`CDP: Postal code most frequent: ${postalCodeMostFrequent}`);\n if (postalCodeMostFrequent) {\n return postalCodeMostFrequent;\n }\n Logger.verbose(`CDP: Postal code most recent: ${mostRecentPostalCode}`);\n return mostRecentPostalCode;\n }\n\n private logSendRcStartWebSession(): void {\n const dataLayerUser = getOrCreateUserAdapter();\n if (dataLayerUser.rcId) {\n Logger.verbose(`${TimelineEventIds.RcStartWebSession} event with RcId: ${dataLayerUser.rcId}`);\n } else if (dataLayerUser.rc_visitor_id) {\n Logger.verbose(`${TimelineEventIds.RcStartWebSession} event with RcVisitorId: ${dataLayerUser.rc_visitor_id}`);\n }\n }\n}\n","import { UserDataLayerAdapter } from \"./UserDataLayerAdapter\";\nimport { User } from \"../gtm/User\";\n\n/**\n * This abstract class is used to specify which class should be used\n * as an adapter between this library and the DataLayer for user data.\n */\nexport abstract class UserDataLayerAdapterFactory {\n abstract getUserDataAdapter(user: User): UserDataLayerAdapter;\n}\n","import { singleton } from \"tsyringe\";\nimport { UserDataLayerAdapter } from \"../../shared/UserDataLayerAdapter\";\nimport { UserIdentifiersDto, UserIdentifiersStorage } from \"./UserIdentifiersDto\";\nimport { makeJsonRequest } from \"../../utils/JsonRequests\";\nimport { Logger } from \"../../utils/Logger\";\nimport { HttpMethods } from \"../../utils/HttpMethods\";\nimport { getCookie } from \"typescript-cookie\";\nimport { CookiesNames } from \"../../gtm/Cookies\";\n\ndeclare const UIdsUrl: string;\n\n/**\n * Client used to interact with Caspian's endpoint used to collect user identifier pairs.\n */\n@singleton()\nexport default class CaspianUserIdentifiersApiClient {\n // For some clients, a new lotameId is generated on each page view.\n // This constraint is used to limit the number of lotame IDs pairs that are sent to Caspian.\n // Anyway, we can't do any meaningful targeting on users that doesn't have a stable LotameId.\n maxLotameIds = 2;\n private sentLotameIds: string[] = [];\n private rcUieLocalStorageKey = \"uie-src-ids\";\n\n public async sendUserIdentifiers(userAdapter: UserDataLayerAdapter, lotameId: string | undefined): Promise {\n const adobeMarketingCloudOrgId = \"55E654E45894AF350A495CFE@AdobeOrg\";\n\n let adobeMarketingCloudVisitorId: string | undefined;\n\n try {\n const visitor = Visitor.getInstance(adobeMarketingCloudOrgId);\n adobeMarketingCloudVisitorId = visitor.getMarketingCloudVisitorID();\n } catch (e) {\n Logger.error(`Call to Adobe failed. ${e}`);\n }\n\n await this.sanitizeAndSendIdentifiers(adobeMarketingCloudVisitorId, lotameId, userAdapter);\n }\n\n private async sanitizeAndSendIdentifiers(\n adobeMarketingCloudVisitorId: string | undefined,\n lotameId: string | undefined,\n userAdapter: UserDataLayerAdapter,\n ): Promise {\n const userIdentifiers: UserIdentifiersDto = {\n adobeMarketingCloudVisitorId: sanitize(adobeMarketingCloudVisitorId),\n lotameId: sanitize(lotameId),\n ppid: getCookie(CookiesNames.rcPPId),\n rcId: undefined,\n rcVisitor: undefined,\n };\n\n if (!userIdentifiers.adobeMarketingCloudVisitorId) {\n Logger.warn(\"visitor.getMarketingCloudVisitorID() returned an empty value\");\n return;\n }\n\n const sanitizedRcId = sanitize(userAdapter.rcId);\n const sanitizedVisitorId = sanitize(userAdapter.rc_visitor_id);\n\n if (sanitizedRcId) {\n userIdentifiers.rcId = sanitizedRcId;\n } else if (sanitizedVisitorId) {\n userIdentifiers.rcVisitor = sanitizedVisitorId;\n } else {\n Logger.warn(\"Can not send user identifiers: no rcId or rc_visitor_id available.\");\n return;\n }\n\n if (!this.hasUserIdentifiersChanged(userIdentifiers)) {\n Logger.verbose(\"User identifiers unchanged.\"); // Warning: this message is used in tests.\n return;\n }\n if (userIdentifiers.lotameId && !this.sentLotameIds.includes(userIdentifiers.lotameId)) {\n this.sentLotameIds.push(userIdentifiers.lotameId);\n }\n if (this.sentLotameIds.length <= this.maxLotameIds) {\n Logger.verbose(\"Sending user identifiers to Caspian API.\", userIdentifiers);\n let response: Response;\n try {\n response = await makeJsonRequest(UIdsUrl, HttpMethods.POST, \"omit\", userIdentifiers);\n } catch (e) {\n Logger.error(`Failed to make a Json Request to send user identifiers. Error: ${e}`);\n return;\n }\n if (!response.ok) {\n await Logger.requestError(\"Failed to send User identifiers\", response);\n return;\n }\n } else {\n Logger.error(\n `Maximum number of lotame Ids for the session reached. Current count: ${this.sentLotameIds.length}`,\n {\n lotameIdCount: this.sentLotameIds.length,\n },\n );\n }\n const storage = userIdentifiers as UserIdentifiersStorage;\n storage.expireOn = Date.now() + 1000 * 60 * 60 * 24; // 1 Day in milliseconds\n const userIdentifiersString = JSON.stringify(userIdentifiers);\n localStorage.setItem(this.rcUieLocalStorageKey, userIdentifiersString);\n Logger.verbose(\"User identifiers set in storage.\"); // Used in tests!\n }\n\n private hasUserIdentifiersChanged(newUserIdentifiers: UserIdentifiersDto): boolean {\n const localStorageData = localStorage.getItem(this.rcUieLocalStorageKey);\n if (!localStorageData) {\n return true;\n }\n let serializedIdentifiers: UserIdentifiersStorage | undefined;\n try {\n serializedIdentifiers = JSON.parse(localStorageData) as UserIdentifiersStorage;\n } catch (ex) {\n Logger.error(`Could not deserialize user identifiers. Error: ${ex}`);\n return true;\n }\n\n if (!serializedIdentifiers) {\n return true;\n }\n\n if (!serializedIdentifiers.expireOn || serializedIdentifiers.expireOn < Date.now()) {\n return true;\n }\n\n return (\n newUserIdentifiers.adobeMarketingCloudVisitorId !== serializedIdentifiers.adobeMarketingCloudVisitorId ||\n newUserIdentifiers.lotameId !== serializedIdentifiers.lotameId ||\n newUserIdentifiers.ppid !== serializedIdentifiers.ppid ||\n newUserIdentifiers.rcId !== serializedIdentifiers.rcId ||\n newUserIdentifiers.rcVisitor !== serializedIdentifiers.rcVisitor\n );\n }\n}\n\nfunction sanitize(identifier: string | undefined): string | undefined {\n if (!identifier) {\n return undefined;\n }\n if (identifier.toLowerCase() === \"null\" || identifier.toLowerCase() === \"undefined\") {\n return undefined;\n }\n if (identifier === \"00000000-0000-0000-0000-000000000000\" || identifier === \"00000000000000000000000000000000\") {\n return undefined;\n }\n return identifier;\n}\n","import \"../global\";\nimport { Logger } from \"../utils/Logger\";\nimport { CookiesNames } from \"../gtm/Cookies\";\nimport { getCookie } from \"typescript-cookie\";\nimport { deleteCookieForDomain, setOneYearCookie } from \"../utils/Cookies\";\nimport { inject, injectable, singleton } from \"tsyringe\";\nimport { UserDataLayerAdapter } from \"./UserDataLayerAdapter\";\nimport { ServiceTokens } from \"./ServiceTokens\";\nimport { UserDataLayerAdapterFactory } from \"./UserDataLayerAdapterFactory\";\nimport { getUserAdapter } from \"../gtm/GtmUtils\";\nimport { UieClient } from \"../cbcUie/UieClient\";\nimport CaspianUserIdentifiersApiClient from \"../caspian/userIdentifiers/CaspianUserIdentifiersApiClient\";\n\n/**\n * This class is used to coordinate the collection of user identifiers and send them to CBC's UIE and\n * Radio-Canada's Caspian API.\n */\n@singleton()\n@injectable()\nexport class UserIdExchange {\n constructor(\n @inject(CaspianUserIdentifiersApiClient) private caspianUIDsApiClient: CaspianUserIdentifiersApiClient,\n @inject(UieClient) private uieClient: UieClient,\n @inject(ServiceTokens.UserDataLayerAdapterFactory) private adapterFactory: UserDataLayerAdapterFactory,\n ) {}\n\n /**\n * LotameId of the current user as reported by Lotame's script\n @private\n * */\n private activeLotameId: string | undefined;\n\n /**\n * Set the rc_plus or rc_visitor identifier on the current user in the dataLayer\n * by calling the UIE system.\n * @param userAdapter The current user if already initialized. Undefined otherwise.\n */\n public async initUserFromUIE(userAdapter?: UserDataLayerAdapter): Promise {\n if (userAdapter?.rcId) {\n await this.handleUserLoggedIn(userAdapter);\n } else {\n userAdapter = userAdapter ?? this.adapterFactory.getUserDataAdapter({});\n await this.handleUserAnonymous(userAdapter);\n }\n dataLayerQueue.push({\n event: `gtmLib.initUserFromUIE`,\n user: userAdapter.dataLayerUser,\n });\n if (userAdapter?.rcId) {\n Logger.log(\"User logged in. RCID:\", userAdapter.rcId);\n }\n await this.sendCollectedIds();\n }\n\n /**\n * Send Lotame's unique identifier for the current user to Caspian.\n * @remarks\n * If the current user is not ready, keeps the value aside until it's loaded.\n * @param lotameId Lotame's unique user identifier\n */\n public async setLotameIdInUie(lotameId: string): Promise {\n if (!lotameId) {\n return;\n }\n // It can happen that the string \"undefined\" is passed to this method.\n if (lotameId === \"undefined\") {\n Logger.warn(\"Invoked setLotameIdInUie with the undefined string value.\");\n return;\n }\n\n this.activeLotameId = lotameId;\n\n // Do not modify. Will break tests otherwise\n Logger.verbose(\"User LotameID:\", lotameId);\n await this.sendCollectedIds();\n }\n\n /**\n * Handle user initialization when the user is authenticated.\n * @param userAdapter The current user in the DataLayer\n * @private\n */\n private async handleUserLoggedIn(userAdapter: UserDataLayerAdapter): Promise {\n let rcPlusId = getCookie(CookiesNames.rcPlus);\n\n // This ID is associated with a few MB of lotameIds because it is associated with the \"undefined\" loginradius_id\n // and should therefore be ignored!\n if (rcPlusId === \"db9c3135-cb3d-4c24-9091-a5794949ea4a\") {\n deleteCookieForDomain(CookiesNames.rcPlus);\n rcPlusId = undefined;\n }\n if (!rcPlusId) {\n rcPlusId = await this.uieClient.fetchRcPlusId(userAdapter);\n if (!rcPlusId) {\n return;\n } else {\n userAdapter.rc_plus_id = rcPlusId;\n }\n } else {\n userAdapter.rc_plus_id = rcPlusId;\n }\n this.setPPIDCookieIfNotSet(userAdapter);\n }\n\n /**\n * Handle user initialization when the user is anonymous.\n * @param userAdapter The current user in the DataLayer\n * @private\n */\n private async handleUserAnonymous(userAdapter: UserDataLayerAdapter): Promise {\n await this.uieClient.handleRcVisitorId();\n this.setPPIDCookieIfNotSet(userAdapter);\n }\n\n private async sendCollectedIds(): Promise {\n // Wait until lotame's script has loaded and a user identifier has been resolved.\n if (!this.activeLotameId) {\n return;\n }\n\n const userAdapter = getUserAdapter();\n if (userAdapter && (userAdapter.rcId || userAdapter.rc_visitor_id)) {\n await this.caspianUIDsApiClient.sendUserIdentifiers(userAdapter, this.activeLotameId);\n }\n }\n\n /**\n * Set the PPID cookie if it doesn't exist or refresh it otherwise.\n * @remarks\n * If the PPID cookie is already set, it won't be changed.\n * @param userAdapter The initialized user.\n * @return\n * Returns the PPID has defined in the cookie.\n * @see {@link https://cbcradiocanada.atlassian.net/wiki/spaces/MNISD/pages/2328166974/PPID+publisher+provided+identifiers}\n * */\n private setPPIDCookieIfNotSet(userAdapter: UserDataLayerAdapter): string | undefined {\n const currentValue = getCookie(CookiesNames.rcPPId);\n if (currentValue) {\n // The PPID value should not change, even if a user log in or out.\n // It's set only once per device / browser.\n // Refresh the cookie expiration.\n setOneYearCookie(CookiesNames.rcPPId, currentValue);\n userAdapter.ppid = currentValue;\n return currentValue;\n }\n let ppId;\n if (userAdapter.rc_plus_id) {\n ppId = userAdapter.rc_plus_id;\n } else if (userAdapter.rc_visitor_id) {\n ppId = userAdapter.rc_visitor_id;\n }\n\n if (ppId) {\n setOneYearCookie(CookiesNames.rcPPId, ppId);\n } else {\n Logger.warn(\"Could not determine a PPID\");\n }\n userAdapter.ppid = ppId;\n return ppId;\n }\n}\n","import { User } from \"../gtm/User\";\nimport \"../global\";\nimport { UserIdExchange } from \"./UserIdExchange\";\nimport { getUserAdapter } from \"../gtm/GtmUtils\";\nimport { inject, injectable, singleton } from \"tsyringe\";\nimport { UserDataLayerAdapter } from \"./UserDataLayerAdapter\";\nimport { UserDataLayerAdapterFactory } from \"./UserDataLayerAdapterFactory\";\nimport { ServiceTokens } from \"./ServiceTokens\";\nimport { Logger } from \"../utils/Logger\";\n\n@singleton()\n@injectable()\nexport class UserManager {\n constructor(\n @inject(UserIdExchange) private userIdExchange: UserIdExchange,\n @inject(ServiceTokens.UserDataLayerAdapterFactory) private userDataLayerAdapterFactory: UserDataLayerAdapterFactory,\n ) {}\n\n /**\n * Initialize the user and update the dataLayer && Update and send data to the UIE.\n */\n public async initDataLayerUserAndUIE(): Promise {\n await this.initDataLayerUser();\n await this.initUserFromUIE();\n }\n\n /**\n * Initialize the user and update the dataLayer\n */\n public async initDataLayerUser(): Promise {\n let userAdapter = getUserAdapter();\n if (!userAdapter) {\n userAdapter = this.userDataLayerAdapterFactory.getUserDataAdapter({});\n this.pushUserToDataLayer(userAdapter, \"initDataLayerUser\");\n }\n return userAdapter;\n }\n\n /**\n * Update and send data to the UIE.\n */\n public async initUserFromUIE(): Promise {\n const userAdapter = getUserAdapter();\n if (userAdapter) {\n await this.userIdExchange.initUserFromUIE(userAdapter);\n }\n this.validateIdentifiers();\n }\n\n /**\n * Update the user in the datalayer\n * @param userDataLayerAdapter User adapter\n * @param eventName The name of the event\n */\n private pushUserToDataLayer(userDataLayerAdapter: UserDataLayerAdapter, eventName: string): void {\n dataLayerQueue.push({\n event: `gtmLib.${eventName}`,\n user: userDataLayerAdapter.dataLayerUser,\n });\n }\n\n private validateIdentifiers(): void {\n const userAdapter = getUserAdapter();\n if (!userAdapter) {\n Logger.error(\"No user found after initialization!\");\n return;\n }\n if (userAdapter.rcId && userAdapter.rc_visitor_id) {\n Logger.error(\n `The dataLayer user has both an RCID (${userAdapter.rcId}) and a VisitorID (${userAdapter.rc_visitor_id})!`,\n );\n }\n if (userAdapter.rcId && !userAdapter.rc_plus_id) {\n const errorMsg = `The dataLayer user has a RCID (${userAdapter.rcId}) but no RCPlus!`;\n Logger.error(errorMsg);\n }\n if (!userAdapter.rcId && !userAdapter.rc_visitor_id) {\n Logger.error(`The dataLayer user has neither RCID nor VisitorID!`);\n }\n }\n}\n","import { makeJsonRequest } from \"../../utils/JsonRequests\";\nimport { HttpMethods } from \"../../utils/HttpMethods\";\nimport { Logger } from \"../../utils/Logger\";\nimport { getUserAdapter } from \"../../gtm/GtmUtils\";\nimport { singleton } from \"tsyringe\";\nimport { ReadEventDto } from \"./ReadEventDto\";\nimport { getCookie } from \"typescript-cookie\";\nimport { GeoLocationCookie } from \"../../shared/geoLocation/GeoLocationCookie\";\n\n/**\n * Indicate the URL used to send ReadJs events to the API.\n * Initialized at compile time via WebPack.\n */\ndeclare const ReadJsUrl: string;\n\n@singleton()\nexport class ReadJsApiClient {\n public async sendReadJsEvent(articleId: string | undefined): Promise {\n const user = getUserAdapter();\n if (!articleId) {\n Logger.log(\"ReadJsApi: Article ID is missing.\");\n return;\n }\n if (!user) {\n Logger.error(\"ReadJsApi: User not available!\");\n return;\n }\n\n const body = {\n articleId: articleId,\n } as ReadEventDto;\n if (user.rcId) {\n body.rcId = user.rcId;\n body.rcPlus = user.rc_plus_id;\n } else if (user.rc_visitor_id) {\n body.rcVisitor = user.rc_visitor_id;\n } else {\n Logger.error(\"Neither RCID nor RCVisitorId are available!\");\n return;\n }\n body.fsa = this.getFsa();\n if (body.fsa) {\n if (body.fsa === \"hors canada\") {\n Logger.log(\"Invalid FSA:\", body.fsa);\n body.fsa = undefined;\n } else if (body.fsa.length > 3) {\n Logger.warn(`Could not log FSA. Length is greater than 3. Value: ${body.fsa}`);\n body.fsa = undefined;\n }\n // FSA should be valid.\n }\n Logger.verbose(\"Sending ReadJs Event\", body);\n let response: Response | undefined;\n try {\n response = await makeJsonRequest(ReadJsUrl, HttpMethods.POST, \"omit\", body);\n } catch (e) {\n Logger.error(`Failed to send ReadJs event. Error:${e}`);\n }\n if (!!response && !response.ok) {\n await Logger.requestError(\"Failed to send ReadJs event.\", response);\n }\n }\n\n private getFsa(): string | undefined {\n const json = getCookie(\"RC_CFA_GEO_INFO\");\n if (!json) {\n return undefined;\n }\n const geoLocation = JSON.parse(json) as GeoLocationCookie;\n return geoLocation?.user?.fsa;\n }\n}\n","/**\n * Validates that a string is a valid postal code.\n */\nexport const isValidPostalCode = (postalCode: string): boolean => {\n const postalCodeRegex = new RegExp(\n \"^[ABCEGHJKLMNPRSTVXY][0-9][ABCEGHJKLMNPRSTVWXYZ] ?[0-9][ABCEGHJKLMNPRSTVWXYZ][0-9]$\",\n \"i\",\n );\n return postalCodeRegex.test(postalCode);\n};\n\nexport const normalizePostalCode = (postalCode: string): string => {\n return postalCode.trim().replace(\" \", \"\").toUpperCase();\n};\n","import { Logger } from \"../../utils/Logger\";\nimport { DataSyncLibEventNames } from \"../DataSyncLibEventNames\";\nimport { inject, injectable, singleton } from \"tsyringe\";\nimport { ServiceTokens } from \"../ServiceTokens\";\nimport { Coordinates, GeoCoordinatesService } from \"./GeoCoordinatesService\";\nimport { isValidPostalCode, normalizePostalCode } from \"../../utils/PostalCode\";\n\ndeclare const GeoIpUrl: string; // Set in the webpack config file\n\n@injectable()\n@singleton()\nexport class GeoIpService {\n private requestStarted = false;\n private cacheKey = \"geoCache\";\n private readonly dataLayerKey = \"user.detectedPostalCode\";\n private readonly notAvailable = \"NA\";\n\n constructor(@inject(ServiceTokens.GeoCoordinatesService) private geoCoordinatesService: GeoCoordinatesService) {}\n\n /**\n * Fetches the postal code of the user based on the geolocation data.\n * @returns The postal code of the user if it was successfully fetched, otherwise undefined.\n * @remarks To prevent multiple calls to the GeoIp service, the result is stored in the dataLayer.\n * If the postal code is already stored in the dataLayer, it will be returned.\n * If the result of the GeoIp service is not a valid postal code, the result will be \"NA\".\n */\n public async fetchAndStoreUserPostalCode(): Promise {\n if (navigator.locks === undefined) {\n Logger.warn(\"Locks API not supported. Fetching postal code without locking.\");\n return this.doFetchAndStoreUserPostalCode();\n }\n let postalCode;\n await navigator.locks.request(\"geoIpRequest\", async () => {\n postalCode = await this.doFetchAndStoreUserPostalCode();\n });\n return postalCode;\n }\n\n private async doFetchAndStoreUserPostalCode(): Promise {\n let result = undefined;\n const storedPostalCode = dataLayerHelper.get(this.dataLayerKey); // Used in GTM for Lotame!\n if (storedPostalCode === this.notAvailable) {\n return undefined;\n }\n if (storedPostalCode) {\n Logger.verbose(\"Got postal code from dataLayer\", storedPostalCode);\n return storedPostalCode;\n }\n\n const coordinates = this.geoCoordinatesService.getCoordinates();\n if (!coordinates) {\n Logger.verbose(\"Coordinates are not available\");\n return undefined;\n }\n\n if (!this.isWithinCanadaBoundaries(coordinates)) {\n Logger.verbose(\"Coordinates are not inside Canada extreme boundaries\");\n return undefined;\n }\n\n const cache = this.tryGetCoordinatesFromCache();\n if (cache && cache.lat === coordinates.latitude && cache.long === coordinates.longitude) {\n if (cache.postalCode === this.notAvailable) {\n return undefined;\n }\n Logger.verbose(\"Got postal code from cache\", cache.postalCode); // Used in tests!\n if (isValidPostalCode(cache.postalCode)) {\n this.sendGeoLocationCompleted(cache.postalCode);\n return cache.postalCode;\n }\n }\n\n // Should not be required if navigator.locks is available.\n if (this.requestStarted) {\n Logger.verbose(\"GeoIp request already started\");\n return this.createResolutionPromise();\n }\n\n this.requestStarted = true;\n Logger.verbose(\"Fetching geoip data\", coordinates);\n\n const serviceUri = `${GeoIpUrl}?lat=${coordinates.latitude}&lon=${coordinates.longitude}`;\n try {\n const response = await fetch(serviceUri);\n if (!response.ok) {\n Logger.log(`Http error while fetching Geoip data. Status: ${response.status}`);\n } else {\n const data = await response.json();\n if (typeof data === \"string\" && isValidPostalCode(data.trim())) {\n Logger.verbose(\"Fetch complete. Got\", data);\n result = normalizePostalCode(data);\n this.updateCache(coordinates.latitude, coordinates.longitude, result);\n } else {\n this.updateCache(coordinates.latitude, coordinates.longitude, this.notAvailable);\n const dataString = typeof data === \"object\" ? JSON.stringify(data) : String(data);\n Logger.warn(`Received data is not a valid postal code. Received data: ${dataString}`);\n }\n }\n } catch (error) {\n Logger.error(`Failed to fetch geoip data. Error: ${error}, Uri: ${serviceUri}`);\n }\n\n this.sendGeoLocationCompleted(result ?? this.notAvailable);\n Logger.verbose(\"GeoIp request completed\", result); // Used in tests!\n return result;\n }\n\n private sendGeoLocationCompleted(result: string): void {\n dataLayerQueue.push({ user: { detectedPostalCode: result } });\n window.dispatchEvent(new Event(DataSyncLibEventNames.GeolocationDataLoaded));\n }\n\n /**\n * Returns a promise that will resolve once the postal code resolution has completed.\n * @private\n */\n private createResolutionPromise(): Promise {\n return new Promise((resolve) => {\n window.addEventListener(DataSyncLibEventNames.GeolocationDataLoaded, () => {\n const dataLayerPostalCode = dataLayerHelper.get(this.dataLayerKey);\n if (dataLayerPostalCode !== this.notAvailable) {\n resolve(dataLayerPostalCode);\n } else {\n resolve(undefined);\n }\n });\n });\n }\n\n /**\n * Checks if the given coordinates are within the bounds of Canada.\n * @remarks This function is not precise. And could inclue some areas outside of Canada. (France (Saint-Pierre de Miquelon), Greenland and United States of America)\n * @param coordinates\n * @private\n */\n private isWithinCanadaBoundaries(coordinates: Coordinates): boolean {\n const CANADA_EXTREME_POINTS = {\n MIN_LATITUDE: 41.41824, // Middle Island, Ontario\n MAX_LATITUDE: 83.082613, // Cap Columbia, Nunavut\n MIN_LONGITUDE: -141.0, // Yukon / Alaska border\n MAX_LONGITUDE: -52.620079, // Cap Spear, Newfoundland and Labrador\n } as const;\n\n const latitude = Number(coordinates.latitude);\n const longitude = Number(coordinates.longitude);\n if (Number.isNaN(latitude) || Number.isNaN(longitude)) {\n Logger.warn(`Invalid latitude or longitude values, not a number: latitude=${latitude}, longitude=${longitude}`);\n return false;\n }\n\n return (\n latitude >= CANADA_EXTREME_POINTS.MIN_LATITUDE &&\n latitude <= CANADA_EXTREME_POINTS.MAX_LATITUDE &&\n longitude >= CANADA_EXTREME_POINTS.MIN_LONGITUDE &&\n longitude <= CANADA_EXTREME_POINTS.MAX_LONGITUDE\n );\n }\n\n private tryGetCoordinatesFromCache(): CoordinatesCache | undefined {\n const cache = localStorage.getItem(\"geoCache\");\n let coordinatesCache: CoordinatesCache;\n if (cache) {\n try {\n coordinatesCache = JSON.parse(cache) as CoordinatesCache;\n } catch (error) {\n Logger.error(`Failed to parse cache. Error: ${error}`);\n return undefined;\n }\n\n if (!coordinatesCache.lat || !coordinatesCache.long || !coordinatesCache.postalCode) {\n Logger.warn(`Invalid cache. Cache: ${cache}`);\n return undefined;\n }\n return coordinatesCache;\n }\n }\n\n private updateCache(latitude: string, longitude: string, result: string): void {\n const cache: CoordinatesCache = {\n lat: latitude,\n long: longitude,\n postalCode: result,\n };\n localStorage.setItem(this.cacheKey, JSON.stringify(cache));\n Logger.verbose(\"GeoIp cache updated\", cache); // Used in tests!\n }\n}\n\ninterface CoordinatesCache {\n lat: string;\n long: string;\n postalCode: string;\n}\n","import { GtmDataSyncLib } from \"../shared/GtmDataSyncLib\";\nimport { inject, injectable, singleton } from \"tsyringe\";\nimport { CdpClient } from \"../cdp/CdpClient\";\nimport { Logger } from \"../utils/Logger\";\nimport { SiteRules } from \"../shared/SiteRules\";\nimport { UserIdExchange } from \"../shared/UserIdExchange\";\nimport { UserManager } from \"../shared/UserManager\";\nimport { ReadJsApiClient } from \"../caspian/readJs/ReadJsApiClient\";\nimport { invokeWhenProfileSetup } from \"../cdp/BlueConicUtils\";\nimport { DataSyncLibEventNames } from \"../shared/DataSyncLibEventNames\";\nimport { StreamMediaType, validateStreamMediaType } from \"../shared/StreamMediaType\";\nimport { GeoIpService } from \"../shared/geoLocation/GeoIpService\";\nimport { pushEventToDataLayer } from \"../gtm/GtmUtils\";\nimport { GtmEventNames } from \"../gtm/GtmEventNames\";\n\n@singleton()\n@injectable()\nexport class GenericLib extends GtmDataSyncLib {\n constructor(\n @inject(CdpClient) private cdpClient: CdpClient,\n @inject(SiteRules) private siteRules: SiteRules,\n @inject(UserManager) private userManager: UserManager,\n @inject(UserIdExchange) private userIdExchange: UserIdExchange,\n @inject(ReadJsApiClient) protected readJsApiClient: ReadJsApiClient,\n @inject(GeoIpService) private geoIpService: GeoIpService,\n ) {\n super();\n }\n\n /** Since the user initialization process is asynchronous, this flag is used\n * to prevent the process from running more than once.\n */\n private _userInitializationStarted = false;\n\n // Invoked by the GTM tag lotame_logic_audience\n public async setLotameIdInUie(lotameId: string): Promise {\n await this.userIdExchange.setLotameIdInUie(lotameId);\n }\n\n public async setupCurrentUser(): Promise {\n if (!this._userInitializationStarted) {\n this._userInitializationStarted = true;\n Logger.verbose(\"setupCurrentUser\");\n this.validateStorageAccess();\n if (!this.siteRules.isGTMLibraryEnabled) {\n Logger.verbose(\"Tracking disabled. Aborting.\");\n return;\n }\n\n // Need to initialize the DataLayer manually here.\n // Panel-RC website doesn't have the user-geolocation information added to the Datalayer before the library is loaded\n await this.userManager.initDataLayerUser();\n\n await this.cdpClient.initialize();\n invokeWhenProfileSetup(async () => {\n await this.userManager.initUserFromUIE();\n window.dispatchEvent(new Event(DataSyncLibEventNames.UserInitialized));\n await this.geoIpService.fetchAndStoreUserPostalCode();\n // Event to notify the GTM container that the user is initialized, used to start the lotame_logic_audience tag.\n pushEventToDataLayer(GtmEventNames.GTMDataSyncLibSetupDone);\n Logger.verbose(\"User initialized\");\n });\n }\n }\n\n public async handlePageView(): Promise {\n Logger.verbose(\"handlePageView\");\n if (!this.siteRules.isGTMLibraryEnabled) {\n Logger.verbose(\"Tracking disabled. Aborting.\");\n return;\n }\n await this.cdpClient.handlePageView();\n }\n\n public async handleReadEvent(): Promise {\n Logger.verbose(\"handleReadEvent\");\n if (!this.siteRules.isGTMLibraryEnabled) {\n Logger.verbose(\"Tracking disabled. Aborting.\");\n return;\n }\n // Note: since an ArticleId is not available in this container, the Caspian ReadJs Api is not called.\n this.cdpClient.sendRcRead();\n }\n\n public async handleContentStart(mediaType: StreamMediaType): Promise {\n Logger.verbose(\"handleContentStart\");\n if (validateStreamMediaType(mediaType)) {\n await this.cdpClient.sendRcStream(mediaType);\n }\n }\n}\n","export function isArtv(url: string): boolean {\n return url.toLowerCase().includes(\"ici.artv.ca\");\n}\nexport function isExplora(url: string): boolean {\n return url.toLowerCase().includes(\"ici.exploratv.ca\");\n}\nexport function isRadioCanada(url: string): boolean {\n return url.toLowerCase().includes(\"ici.radio-canada.ca\");\n}\nexport function isExperiences(url: string): boolean {\n return url.toLowerCase().includes(\"experiences\");\n}\nexport function isPanelRc(url: string): boolean {\n return url.toLowerCase().includes(\"panel-radio-canada\");\n}\n","/**\n * Return a value from the Datalayer. If the value is the string \"null\" or \"undefined\", returns undefined instead.\n */\nexport function getSanitizedDataLayerValue(name: string): string | undefined {\n const dlValue = dataLayerHelper.get(name);\n if (dlValue && dlValue !== \"null\" && dlValue !== \"undefined\") {\n return dlValue;\n }\n return undefined;\n}\n","import { PageAttributesExtractor } from \"../shared/PageAttributesExtractor\";\nimport { PageDebugInfo } from \"../shared/PageDebugInfo\";\nimport { isArtv, isExperiences, isExplora, isPanelRc } from \"./GenericUtils\";\nimport { GenericPageAttributes } from \"./models/GenericPageAttributes\";\nimport { getSanitizedDataLayerValue } from \"../shared/DataLayerHelper\";\nimport { PageAttributes } from \"../shared/PageAttributes\";\nimport { GeoIpService } from \"../shared/geoLocation/GeoIpService\";\nimport { inject, injectable, singleton } from \"tsyringe\";\n\n@singleton()\n@injectable()\nexport class GenericPageAttributesExtractor implements PageAttributesExtractor {\n constructor(@inject(GeoIpService) private geoIpService: GeoIpService) {}\n\n public extractAttributes(): GenericPageAttributes {\n return {\n application: this.getApplicationName(),\n codeEmission: getSanitizedDataLayerValue(\"page.codeEmission\"),\n dossier: getSanitizedDataLayerValue(\"page.dossier\"),\n emission: getSanitizedDataLayerValue(\"page.emission\"),\n format: getSanitizedDataLayerValue(\"page.format\"),\n groupeSection: getSanitizedDataLayerValue(\"page.groupeSection\"),\n pageSegment: getSanitizedDataLayerValue(\"page.pageSegment\"),\n section: getSanitizedDataLayerValue(\"page.section\"),\n segment: getSanitizedDataLayerValue(\"page.segment\"),\n sousThemes: this.getSousThemes(),\n theme: getSanitizedDataLayerValue(\"page.theme\"),\n typeContenu: getSanitizedDataLayerValue(\"page.typeContenu\"),\n };\n }\n\n extractPageLoadedAttributes(): GenericPageAttributes {\n return this.extractAttributes();\n }\n\n extractReadAttributes(): GenericPageAttributes {\n return this.extractAttributes();\n }\n\n extractDebugInfo(): PageDebugInfo {\n return {\n pageAppId: this.getApplicationName(),\n pageVersion: \"N/A\",\n };\n }\n\n extractStreamAttributes(): GenericPageAttributes {\n return this.extractAttributes();\n }\n\n async extractStartSessionAttributes(): Promise {\n const attributes = this.extractAttributes();\n attributes.fsa = getSanitizedDataLayerValue(\"user.fsa\");\n const postalCode = await this.geoIpService.fetchAndStoreUserPostalCode();\n if (postalCode) {\n attributes.postalCode = postalCode;\n }\n\n return attributes;\n }\n\n private getApplicationName(): string | undefined {\n const url = window.location.href;\n if (isExplora(url)) {\n return \"explora_siteweb\";\n } else if (isArtv(url)) {\n return \"artv_siteweb\";\n } else if (isExperiences(url)) {\n return \"experiences_siteweb\";\n } else if (isPanelRc(url)) {\n return \"panel_siteweb\";\n }\n\n return undefined;\n }\n\n private getSousThemes(): string[] | undefined {\n const dlValue = dataLayerHelper.get(\"page.SousThemes\");\n if (!dlValue) {\n return undefined;\n }\n return dlValue.split(\",\");\n }\n}\n","import { singleton } from \"tsyringe\";\nimport { SiteSettings } from \"../../shared/SiteSettings\";\n\n@singleton()\nexport class ExploraSiteSettings implements SiteSettings {\n get BlueConicProductionHostName(): string {\n return \"cdp.exploratv.ca\";\n }\n\n get CookiesDomain(): string {\n return \"exploratv.ca\";\n }\n\n get ProductionHostName(): string {\n return \"ici.exploratv.ca\";\n }\n\n get UieBaseAddress(): string {\n return \"https://uie.exploratv.ca\";\n }\n\n get WebSessionLengthInMinutes(): number {\n return 60; // 1 hour\n }\n\n get SiteName(): string {\n return \"explora\";\n }\n}\n","import { singleton } from \"tsyringe\";\nimport { SiteSettings } from \"../../shared/SiteSettings\";\n\n@singleton()\nexport class ArtvSiteSettings implements SiteSettings {\n get BlueConicProductionHostName(): string {\n return \"cdp.artv.ca\";\n }\n\n get CookiesDomain(): string {\n return \"artv.ca\";\n }\n\n get ProductionHostName(): string {\n return \"ici.artv.ca\";\n }\n\n get UieBaseAddress(): string {\n return \"https://uie.artv.ca\";\n }\n\n get WebSessionLengthInMinutes(): number {\n return 60; // 1 hour\n }\n\n get SiteName(): string {\n return \"artv\";\n }\n}\n","import { SiteSettings } from \"../shared/SiteSettings\";\nimport { singleton } from \"tsyringe\";\n\n@singleton()\nexport class DotCaSiteSettings implements SiteSettings {\n get BlueConicProductionHostName(): string {\n return \"cdp.radio-canada.ca\";\n }\n\n get CookiesDomain(): string {\n return \".radio-canada.ca\";\n }\n\n get ProductionHostName(): string {\n return \"ici.radio-canada.ca\";\n }\n\n get UieBaseAddress(): string {\n return \"https://uie.radio-canada.ca\";\n }\n\n get WebSessionLengthInMinutes(): number {\n return 60; // 1 hour\n }\n\n get SiteName(): string {\n return \"dotca\";\n }\n}\n","import { User } from \"../gtm/User\";\n\n/**\n * This abstract class and its implementations is used to manage the different\n * ways that properties are accessed and set in the DataLayer in Radio-Canada's websites.\n * For example, DotCa has the rcId property but tou.tv use rcid (all in lowercase).\n */\nexport abstract class UserDataLayerAdapter {\n protected constructor(protected user: User) {}\n\n get cdpProfileId(): string | undefined {\n return this.user.cdpProfileId;\n }\n\n get rcId(): string | undefined {\n let rcId = this.user.rcId;\n if (!rcId) {\n rcId = this.user.rcid;\n }\n return rcId;\n }\n\n get identityProviderUserId(): string | undefined {\n return this.user.identityProviderUserId;\n }\n\n get planIds(): string | undefined {\n return this.user.planIds;\n }\n\n get ppid(): string | undefined {\n return this.user.ppid;\n }\n\n set ppid(value) {\n this.user.ppid = value;\n }\n\n get rc_plus_id(): string | undefined {\n return this.user.rc_plus_id;\n }\n\n set rc_plus_id(value) {\n this.user.rc_plus_id = value;\n }\n\n get rc_visitor_id(): string | undefined {\n return this.user.rc_visitor_id;\n }\n\n set rc_visitor_id(value) {\n this.user.rc_visitor_id = value;\n }\n\n get viafouraId(): string | undefined {\n return this.user.viafouraId;\n }\n\n get dataLayerUser(): User {\n return this.user;\n }\n}\n","import { UserDataLayerAdapter } from \"../shared/UserDataLayerAdapter\";\nimport { User } from \"../gtm/User\";\nimport { singleton } from \"tsyringe\";\n\n@singleton()\nexport class GenericUserDataLayerAdapter extends UserDataLayerAdapter {\n constructor(user: User) {\n super(user);\n }\n}\n","import { UserDataLayerAdapterFactory } from \"../shared/UserDataLayerAdapterFactory\";\nimport { User } from \"../gtm/User\";\nimport { UserDataLayerAdapter } from \"../shared/UserDataLayerAdapter\";\nimport { GenericUserDataLayerAdapter } from \"./GenericUserDataLayerAdapter\";\n\nexport class GenericUserDataLayerAdapterFactory extends UserDataLayerAdapterFactory {\n override getUserDataAdapter(user: User): UserDataLayerAdapter {\n return new GenericUserDataLayerAdapter(user);\n }\n}\n","export class Coordinates {\n latitude: string;\n longitude: string;\n\n constructor(latitude: string, longitude: string) {\n this.latitude = latitude;\n this.longitude = longitude;\n }\n}\n\nexport interface GeoCoordinatesService {\n /**\n * Get the current user's coordinates based on data available in the browser.\n * @returns The user's coordinates if available, otherwise undefined.\n */\n getCoordinates(): Coordinates | undefined;\n}\n","import { injectable } from \"tsyringe\";\nimport { Logger } from \"../../utils/Logger\";\nimport { Coordinates, GeoCoordinatesService } from \"./GeoCoordinatesService\";\n\n/**\n * This implementation of the GeoCoordinatesService uses the GeoIp functions provided by the front end of the website.\n */\n@injectable()\nexport class GeoIpCoordinatesService implements GeoCoordinatesService {\n public getCoordinates(): Coordinates | undefined {\n const latFunc = window.geoip_latitude;\n const lonFunc = window.geoip_longitude;\n\n if (!latFunc || !lonFunc) {\n Logger.warn(\"GeoIp functions are not available\");\n return undefined;\n }\n\n const latitude = latFunc();\n const longitude = lonFunc();\n if (!latitude || !longitude) {\n Logger.warn(\"Latitude and / or longitude are not available\");\n return undefined;\n }\n return new Coordinates(latitude, longitude);\n }\n}\n","import { container } from \"tsyringe\";\nimport { ServiceTokens } from \"../shared/ServiceTokens\";\nimport { SiteSettings } from \"../shared/SiteSettings\";\nimport { PageAttributesExtractor } from \"../shared/PageAttributesExtractor\";\nimport { GenericPageAttributesExtractor } from \"./GenericPageAttributesExtractor\";\nimport { ExploraSiteSettings } from \"./explora/ExploraSiteSettings\";\nimport { SiteRules } from \"../shared/SiteRules\";\nimport { isArtv, isRadioCanada, isExplora } from \"./GenericUtils\";\nimport { Logger } from \"../utils/Logger\";\nimport { ArtvSiteSettings } from \"./artv/ArtvSiteSettings\";\nimport { DotCaSiteSettings } from \"../dotCa/DotCaSiteSettings\";\nimport { UserDataLayerAdapterFactory } from \"../shared/UserDataLayerAdapterFactory\";\nimport { GenericUserDataLayerAdapterFactory } from \"./GenericUserDataLayerAdapterFactory\";\nimport { GeoCoordinatesService } from \"../shared/geoLocation/GeoCoordinatesService\";\nimport { GeoIpCoordinatesService } from \"../shared/geoLocation/GeoIpCoordinatesService\";\n\n/**\n * This function is used to register Generic-specific implementations to\n * TSyringe's container.\n * GTM has a container named 'Generic' which contains sites like : https://ici.artv.ca/ and https://ici.exploratv.ca/\n */\nexport function registerGenericServices(): void {\n const url = window.location.hostname;\n\n container.register(ServiceTokens.GeoCoordinatesService, {\n useClass: GeoIpCoordinatesService,\n });\n\n container.register(ServiceTokens.PageAttributesExtractor, {\n useClass: GenericPageAttributesExtractor,\n });\n container.register(ServiceTokens.UserDataLayerAdapterFactory, {\n useClass: GenericUserDataLayerAdapterFactory,\n });\n container.register(SiteRules, {\n useValue: new SiteRules(),\n });\n if (isExplora(url)) {\n container.register(ServiceTokens.SiteSettings, {\n useClass: ExploraSiteSettings,\n });\n Logger.verbose(\"Registering Explora\");\n } else if (isArtv(url)) {\n container.register(ServiceTokens.SiteSettings, {\n useClass: ArtvSiteSettings,\n });\n Logger.verbose(\"Registering ArtTV\");\n } else if (isRadioCanada(url)) {\n container.register(ServiceTokens.SiteSettings, {\n useClass: DotCaSiteSettings,\n });\n Logger.verbose(\"Registering Radio-Canada\");\n } else {\n throw new Error(\"[DSL] Page URL not recognized - cannot initialize DataSync Library\");\n }\n}\n","import { appIsLive, isPageB2C } from \"../gtm/GtmUtils\";\nimport { DataSyncLibEventNames } from \"../shared/DataSyncLibEventNames\";\nimport { Logger } from \"../utils/Logger\";\n\nexport default function addBlueConicScript(blueConicProductionHostName: string, productionHostName: string): void {\n const lockName = \"blueConicLoad\";\n if (typeof blueConicClient !== \"undefined\") {\n Logger.warn(\"BlueConicClient already loaded\");\n return;\n }\n if (isPageB2C()) {\n Logger.verbose(\"B2C page detected. Skipping BlueConic script load.\");\n return;\n }\n let bcHostname = \"cbcrc.sb.blueconic.net\"; // Sandbox address\n if (appIsLive(productionHostName)) {\n bcHostname = blueConicProductionHostName;\n }\n\n if (navigator.locks === undefined) {\n Logger.warn(\"Locks API not supported. Adding script to the page. This may cause issues.\");\n void addScriptAndWaitForLoad(bcHostname);\n return;\n }\n\n navigator.locks\n .request(lockName, async () => {\n await addScriptAndWaitForLoad(bcHostname);\n })\n .then(() => {\n Logger.verbose(\"BlueConic script loaded and profile initialized.\");\n })\n .catch((error) => {\n Logger.error(`Failed to load BlueConic script. Error: ${error}`);\n });\n}\n\nfunction addScriptAndWaitForLoad(bcHostName: string): Promise {\n Logger.verbose(\"Adding script to the page.\");\n const bcScript = document.createElement(\"script\");\n bcScript.defer = true;\n bcScript.src = `https://${bcHostName}/script.js`;\n (document.getElementsByTagName(\"head\")[0] || document.getElementsByTagName(\"body\")[0]).appendChild(bcScript);\n return new Promise((resolve) => {\n window.addEventListener(DataSyncLibEventNames.CdpProfileSetup, () => {\n resolve();\n });\n });\n}\n","/** Entry point for the sites sharing the Generic - Web GTM Container.\n * At this time, the container is used on the following sites :\n * - ICI Explora\n * - ICI Artv\n * - https://ici.radio-canada.ca/panel-radio-canada/\n * - https://ici.radio-canada.ca/experiences/\n */\nimport \"reflect-metadata\"; // Must be first for tsyringe to work correctly!\nimport \"../global\";\nimport { GenericLib } from \"../generic/GenericLib\";\nimport { DataSyncLibEventNames } from \"../shared/DataSyncLibEventNames\";\nimport { registerGenericServices } from \"../generic/ServicesRegistration\";\nimport { container } from \"tsyringe\";\nimport { Logger } from \"../utils/Logger\";\nimport { isArtv, isExplora, isRadioCanada } from \"../generic/GenericUtils\";\nimport { ExploraSiteSettings } from \"../generic/explora/ExploraSiteSettings\";\nimport { ArtvSiteSettings } from \"../generic/artv/ArtvSiteSettings\";\nimport { DotCaSiteSettings } from \"../dotCa/DotCaSiteSettings\";\nimport addBlueConicScript from \"../cdp/AddBlueConicScript\";\n\nif (typeof window.gtmDataSyncLib === \"undefined\") {\n registerGenericServices();\n loadBlueConicScript();\n Logger.LogEnvironmentMode();\n window.gtmDataSyncLib = container.resolve(GenericLib);\n window.dispatchEvent(new Event(DataSyncLibEventNames.LibraryLoaded));\n // There is no distinct event in Generic to set up the user.\n window.gtmDataSyncLib\n .setupCurrentUser()\n .catch((reason) => Logger.error(`Failed to set up current user. Reason: ${reason}`));\n} else {\n Logger.warn(\"Warning: attempted double load of the library.\");\n}\n\nfunction loadBlueConicScript(): void {\n const url = window.location.hostname;\n let settings;\n if (isExplora(url)) {\n settings = new ExploraSiteSettings();\n } else if (isArtv(url)) {\n settings = new ArtvSiteSettings();\n } else if (isRadioCanada(url)) {\n settings = new DotCaSiteSettings();\n } else {\n throw new Error(\"[DSL] Page URL not recognized - cannot initialize DataSync Library\");\n }\n addBlueConicScript(settings.BlueConicProductionHostName, settings.ProductionHostName);\n}\n"],"names":["DataView","getNative","module","exports","hashClear","hashDelete","hashGet","hashHas","hashSet","Hash","entries","index","length","clear","entry","set","prototype","get","has","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","ListCache","Map","mapCacheClear","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","MapCache","Promise","Set","setCacheAdd","setCacheHas","SetCache","values","__data__","add","push","stackClear","stackDelete","stackGet","stackHas","stackSet","Stack","data","size","Symbol","root","Uint8Array","WeakMap","arrayFilter","array","predicate","resIndex","result","value","baseTimes","isArguments","isArray","isBuffer","isIndex","isTypedArray","hasOwnProperty","objectProto","arrayLikeKeys","inherited","isArr","isArg","isBuff","isType","skipIndexes","String","key","call","arrayPush","offset","arraySome","eq","assocIndexOf","baseGetAllKeys","object","keysFunc","symbolsFunc","getRawTag","objectToString","nullTag","undefinedTag","symToStringTag","toStringTag","undefined","baseGetTag","Object","isObjectLike","argsTag","baseIsArguments","baseIsEqualDeep","baseIsEqual","other","bitmask","customizer","stack","equalArrays","equalByTag","equalObjects","getTag","COMPARE_PARTIAL_FLAG","arrayTag","objectTag","equalFunc","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","isFunction","isMasked","isObject","toSource","reRegExpChar","reIsHostCtor","funcToString","funcProto","toString","reIsNative","RegExp","replace","baseIsNative","pattern","test","isLength","boolTag","dateTag","errorTag","funcTag","mapTag","numberTag","regexpTag","setTag","stringTag","weakMapTag","arrayBufferTag","dataViewTag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","typedArrayTags","baseIsTypedArray","isPrototype","nativeKeys","baseKeys","n","iteratee","Array","baseUnary","func","cacheHas","cache","coreJsData","COMPARE_UNORDERED_FLAG","isPartial","arrLength","othLength","arrStacked","othStacked","seen","arrValue","othValue","compared","othIndex","mapToArray","setToArray","symbolTag","symbolProto","symbolValueOf","valueOf","tag","byteLength","byteOffset","buffer","name","message","convert","stacked","getAllKeys","objProps","objLength","othProps","objStacked","skipCtor","objValue","objCtor","constructor","othCtor","freeGlobal","g","getSymbols","keys","isKeyable","getMapData","map","getValue","nativeObjectToString","isOwn","unmasked","e","stubArray","propertyIsEnumerable","nativeGetSymbols","getOwnPropertySymbols","symbol","promiseTag","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","ArrayBuffer","resolve","Ctor","ctorString","nativeCreate","HASH_UNDEFINED","MAX_SAFE_INTEGER","reIsUint","type","maskSrcKey","uid","exec","IE_PROTO","proto","splice","arrayProto","pop","forEach","overArg","freeExports","nodeType","freeModule","freeProcess","moduleExports","process","nodeUtil","types","require","binding","transform","arg","freeSelf","self","Function","LARGE_ARRAY_SIZE","pairs","arguments","isArrayLike","stubFalse","Buffer","nativeIsBuffer","isEqual","asyncTag","genTag","proxyTag","nodeIsTypedArray","Reflect","factory","exporter","makeExporter","target","previous","defineProperty","configurable","writable","hasOwn","supportsSymbol","toPrimitiveSymbol","toPrimitive","iteratorSymbol","iterator","supportsCreate","create","supportsProto","__proto__","downLevel","HashMap","MakeDictionary","functionPrototype","getPrototypeOf","usePolyfill","env","_Map","CreateMapPolyfill","cacheSentinel","arraySentinel","MapIterator","selector","_index","_keys","_values","_selector","next","done","throw","error","return","_cacheKey","_cacheIndex","enumerable","_find","delete","i","getKey","getEntry","insert","indexOf","_","_Set","_map","Metadata","CreateWeakMapPolyfill","rootKey","CreateUniqueKey","_key","table","GetOrCreateWeakMapTable","CreateUUID","crypto","getRandomValues","msCrypto","FillRandomBytes","byte","toLowerCase","Math","random","GetOrCreateMetadataMap","O","P","Create","targetMetadata","IsUndefined","metadataMap","OrdinaryHasOwnMetadata","MetadataKey","OrdinaryGetOwnMetadata","OrdinaryDefineOwnMetadata","MetadataValue","OrdinaryOwnMetadataKeys","GetIterator","obj","method","GetMethod","IsCallable","IsObject","k","IteratorStep","nextValue","iterResult","IteratorClose","f","Type","x","IsNull","ToPropertyKey","argument","ToPrimitive","input","PreferredType","hint","exoticToPrim","OrdinaryToPrimitive","toString_1","toString_2","IsArray","IsConstructor","V","OrdinaryGetPrototypeOf","prototypeProto","__","decorators","propertyKey","attributes","DecorateConstructor","decorated","decorator","DecorateProperty","descriptor","metadataKey","metadataValue","IsPropertyKey","OrdinaryHasMetadata","parent","OrdinaryGetMetadata","OrdinaryMetadataKeys","ownKeys","parentKeys","_i","ownKeys_1","hasKey","_a","parentKeys_1","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","id","loaded","__webpack_modules__","getter","__esModule","d","a","definition","o","globalThis","window","prop","nmd","paths","children","Lifecycle","ServiceTokens","HttpMethods","LogLevels","BlueConicProfileProperties","DataSyncLibEventNames","StreamMediaType","TimelineEventIds","GtmEventNames","extendStatics","b","setPrototypeOf","p","__assign","assign","t","s","apply","__awaiter","thisArg","_arguments","generator","reject","fulfilled","step","rejected","adopt","then","__generator","body","y","label","sent","trys","ops","verb","v","op","__values","m","__read","r","ar","concat","isClassProvider","provider","useClass","isFactoryProvider","useFactory","DelayedConstructor","wrap","reflectMethods","createProxy","createObject","_this","init","Proxy","createHandler","delayedObject","handler","args","isNormalToken","token","isConstructorToken","isTokenProvider","useToken","isValueProvider","useValue","isProvider","RegistryBase","_registryMap","getAll","ensure","setAll","Registry","_super","ResolutionContext","scopedResolutions","formatDependency","params","idx","split","trim","composeErrorMessage","msg","indent","l","join","ctor","paramIdx","_b","match","isDisposable","dispose","disposeFun","PreResolutionInterceptors","PostResolutionInterceptors","Interceptors","preResolution","postResolution","typeInfo","instance","InternalDependencyContainer","_registry","interceptors","disposed","disposables","register","providerOrConstructor","options","lifecycle","ensureNotDisposed","path","tokenProvider","currentToken","includes","registration","registerType","from","to","registerInstance","registerSingleton","context","getRegistration","executePreResolutionInterceptor","resolveRegistration","executePostResolutionInterceptor","construct","resolutionType","e_1","remainingInterceptors","_c","interceptor","frequency","callback","e_1_1","e_2","e_2_1","resolved","isSingleton","isContainerScoped","returnInstance","resolveAll","registrations","getAllRegistrations","result_1","item","isRegistered","recursive","reset","clearInstances","e_3","_d","filter","e_3_1","createChildContainer","e_4","childContainer","some","e_4_1","beforeResolution","afterResolution","promises","disposable","maybePromise","all","paramInfo","resolveParams","bind","param","multiple","transformArgs","INJECTION_TOKEN_METADATA_KEY","getMetadata","injectionTokens","getOwnMetadata","defineInjectionTokenMetadata","_propertyKey","parameterIndex","descriptors","transformToken","defineMetadata","inject","singleton","appIsLive","productionHostName","isLive","location","hostname","scriptSource","localStorage","getItem","gtmEnvironment","dataLayerHelper","isPageB2C","hostName","isMyAccountOrLoginPage","startsWith","getUserFromDataLayer","pushEventToDataLayer","eventName","dataLayerQueue","event","getUserAdapter","adapterFactory","UserDataLayerAdapterFactory","user","getUserDataAdapter","getOrCreateUserAdapter","userAdapter","makeJsonRequest","url","credentials","requestBody","response","headers","Headers","append","requestInit","JSON","stringify","requestNumber","fetch","status","endsWith","formatRequestInit","exception","lines","CookiesNames","freeze","encodeName","encodeURIComponent","decodeURIComponent","escape","encodeValue","decodeName","decodeValue","slice","stringifyAttributes","expires","Date","now","toUTCString","scan","jar","document","cookie","found","DEFAULT_CODEC","DEFAULT_ATTRIBUTES","setCookie","encodeValue$1","encodeName$1","decodeValue$1","decodeName$1","getCookies","removeCookie","converter","defaultAttributes","config","write","read","remove","withAttributes","withConverter","compat","enabled","allMessages","truncatedText","truncatedLogsCount","maxPropertyLength","maxPropertiesCount","hasSentPreviousLog","browserId","siteSettings","SiteSettings","ProductionHostName","gtmLibSessionId","randomUUID","siteName","SiteName","log","logMessage","console","lineParts","element","validateAllMessages","verbose","debugLog","level","Debug","uri","href","properties","getAdditionalLogProperties","sendLogMessage","Error","warn","Warning","getInstance","requestError","text","responseProperties","allProperties","LogEnvironmentMode","includePreviousLogs","kvp","substring","logMessagesSent","POST","ok","catch","reason","totalLength","reduce","sum","removedMessage","shift","logProperties","addObjectProperties","getBrowserId","getContext","navigator","cookieEnabled","unshift","rcId","rc_visitor_id","addCookies","getPageProperties","storageKey","storageValue","setItem","contextData","queueLength","startIndex","max","lastMessages","blueConicClient","profile","getProfile","getId","availableLength","line","dataLayerLines","stringValue","eventsLength","pageAttributesExtractor","PageAttributesExtractor","extractDebugInfo","cookieNames","cookieValue","cookieName","cookiesDomain","CookiesDomain","setOneYearCookie","domain","deleteCookieForDomain","validateWritingCookie","canWriteCookie","validateBlueConicCookie","validateWritingLocalStorage","canWriteLocalStorage","storedValue","removeItem","GtmDataSyncLib","sendErrorLog","sendWarningLog","verboseLog","buildNumber","validateStorageAccess","isValid","ArraysAreEquivalents","array1","array2","setGPTTargeting","googletag","cmd","pubads","setTargeting","manageSegments","segmentsStorageKey","segments","getSegments","segmentIds","segment","storageContent","storageIds","sendSegmentsToGAM","SiteRules","isGTMLibraryEnabled","isAnonymousUser","isTrackingEnabled","UieClient","baseUrl","UieBaseAddress","currentUserUrl","logoutUrl","loginUrl","fetchRcPlusId","identityProviderUserId","viafouraId","cbc","loginResponse","json","handleRcVisitorId","rcPlus","logoutUser","rcVisitorId","fetchRcVisitorId","GET","currentUserResponse","setupProfile","caller","cdpProfileId","loadValues","onPropertiesLoaded","profileId","profileRcId","profileRcVisitorId","isAnonymous","dataLayerUser","userIdentifier","isCbcProfile","getRcVisitorId","handleCreateProfile","pageView","totalPageViews","parseInt","setRcIdOrVisitorId","deleteProfile","updateRcVisitorBackup","profileSetupCompleted","profileMatchCurrentUser","uieClient","cbcPlusId","cbcVisitorId","oldProfileId","createProfile","newProfileId","createEvent","setRcIdInProfile","setRcVisitorIdInProfile","setValue","updateProfile","userIdentifiers","needReload","invokeWhenProfileSetup","cdpProfileIsSetup","addEventListener","CdpProfileSetup","invokeWhenProfileLoaded","subscribe","runWhenProfileReady","toInvoke","onEventReady","isFirstLoad","shouldStartNewWebSession","sessionLengthInMinutes","startWebSessionKey","storedStartWebSessionValue","toISOString","parsedStartWebSessionValue","parse","isNaN","expirationDate","getTime","updateProfileProperties","pair","propertyId","validateStreamMediaType","mediaType","CdpClient","siteRules","sendRcRead","pageAttributes","extractReadAttributes","lastReadJsPageAttributes","RcRead","timeline","rcLastReadEventDate","sendRcLoaded","extractPageLoadedAttributes","lastRcLoadedPageAttributes","RcLoaded","rcLastLoadedEventDate","initialize","dispatchEvent","Event","handlePageView","sendRcStartWebSession","sendRcStream","eventTypeName","Audio","RcStreamedAudio","RcStreamedVideo","extractStreamAttributes","lastRcStreamingPageAttributes","rcLastStartStreamedAudioEventDate","rcLastStartStreamedVideoEventDate","extractStartSessionAttributes","locks","request","createWebSessionIfRequired","WebSessionLengthInMinutes","logSendRcStartWebSession","RcStartWebSession","propertyValuePairs","rcLastStartWebSessionEventDate","postalCode","postalCodeGroupId","getPostalCodeGroupId","fsa","postalCodeMostRecent","fsaGroupId","mostRecentPostalCode","postalCodeDeclared","postalCodeRegion","postalCodeMostFrequent","CaspianUserIdentifiersApiClient","maxLotameIds","sentLotameIds","rcUieLocalStorageKey","sendUserIdentifiers","lotameId","adobeMarketingCloudVisitorId","visitor","Visitor","getMarketingCloudVisitorID","sanitizeAndSendIdentifiers","sanitize","ppid","rcVisitor","sanitizedRcId","sanitizedVisitorId","hasUserIdentifiersChanged","lotameIdCount","storage","expireOn","userIdentifiersString","newUserIdentifiers","serializedIdentifiers","localStorageData","ex","identifier","UserIdExchange","caspianUIDsApiClient","initUserFromUIE","handleUserLoggedIn","handleUserAnonymous","sendCollectedIds","setLotameIdInUie","activeLotameId","rcPlusId","rc_plus_id","setPPIDCookieIfNotSet","ppId","currentValue","UserManager","userIdExchange","userDataLayerAdapterFactory","initDataLayerUserAndUIE","initDataLayerUser","pushUserToDataLayer","validateIdentifiers","userDataLayerAdapter","errorMsg","ReadJsApiClient","sendReadJsEvent","articleId","getFsa","geoLocation","isValidPostalCode","postalCodeRegex","normalizePostalCode","toUpperCase","GeoIpService","geoCoordinatesService","requestStarted","cacheKey","dataLayerKey","notAvailable","fetchAndStoreUserPostalCode","doFetchAndStoreUserPostalCode","storedPostalCode","coordinates","getCoordinates","isWithinCanadaBoundaries","tryGetCoordinatesFromCache","lat","latitude","long","longitude","sendGeoLocationCompleted","createResolutionPromise","serviceUri","updateCache","dataString","detectedPostalCode","GeolocationDataLoaded","dataLayerPostalCode","CANADA_EXTREME_POINTS","MIN_LATITUDE","MAX_LATITUDE","MIN_LONGITUDE","MAX_LONGITUDE","Number","coordinatesCache","GeoCoordinatesService","GenericLib","cdpClient","userManager","readJsApiClient","geoIpService","_userInitializationStarted","setupCurrentUser","UserInitialized","GTMDataSyncLibSetupDone","handleReadEvent","handleContentStart","isArtv","isExplora","isRadioCanada","isExperiences","isPanelRc","getSanitizedDataLayerValue","dlValue","GenericPageAttributesExtractor","extractAttributes","application","getApplicationName","codeEmission","dossier","emission","format","groupeSection","pageSegment","section","sousThemes","getSousThemes","theme","typeContenu","pageAppId","pageVersion","ExploraSiteSettings","BlueConicProductionHostName","ArtvSiteSettings","DotCaSiteSettings","UserDataLayerAdapter","rcid","planIds","GenericUserDataLayerAdapter","GenericUserDataLayerAdapterFactory","Coordinates","GeoIpCoordinatesService","latFunc","geoip_latitude","lonFunc","geoip_longitude","registerGenericServices","addBlueConicScript","blueConicProductionHostName","bcHostname","addScriptAndWaitForLoad","bcHostName","bcScript","createElement","defer","src","getElementsByTagName","appendChild","loadBlueConicScript","settings","gtmDataSyncLib","LibraryLoaded"],"sourceRoot":""}