{"version":3,"file":"adp-client-v2.js","sources":["../../../node_modules/.pnpm/moment@2.30.1/node_modules/moment/dist/moment.js","../../../node_modules/.pnpm/js-cookie@3.0.5/node_modules/js-cookie/dist/js.cookie.mjs","../../../packages/lib-web/src/utils/currencyUtils.ts","../../../node_modules/.pnpm/axios@1.6.5/node_modules/axios/lib/helpers/bind.js","../../../node_modules/.pnpm/axios@1.6.5/node_modules/axios/lib/utils.js","../../../node_modules/.pnpm/axios@1.6.5/node_modules/axios/lib/core/AxiosError.js","../../../node_modules/.pnpm/axios@1.6.5/node_modules/axios/lib/helpers/null.js","../../../node_modules/.pnpm/axios@1.6.5/node_modules/axios/lib/helpers/toFormData.js","../../../node_modules/.pnpm/axios@1.6.5/node_modules/axios/lib/helpers/AxiosURLSearchParams.js","../../../node_modules/.pnpm/axios@1.6.5/node_modules/axios/lib/helpers/buildURL.js","../../../node_modules/.pnpm/axios@1.6.5/node_modules/axios/lib/core/InterceptorManager.js","../../../node_modules/.pnpm/axios@1.6.5/node_modules/axios/lib/defaults/transitional.js","../../../node_modules/.pnpm/axios@1.6.5/node_modules/axios/lib/platform/browser/classes/URLSearchParams.js","../../../node_modules/.pnpm/axios@1.6.5/node_modules/axios/lib/platform/browser/classes/FormData.js","../../../node_modules/.pnpm/axios@1.6.5/node_modules/axios/lib/platform/browser/classes/Blob.js","../../../node_modules/.pnpm/axios@1.6.5/node_modules/axios/lib/platform/browser/index.js","../../../node_modules/.pnpm/axios@1.6.5/node_modules/axios/lib/platform/common/utils.js","../../../node_modules/.pnpm/axios@1.6.5/node_modules/axios/lib/platform/index.js","../../../node_modules/.pnpm/axios@1.6.5/node_modules/axios/lib/helpers/toURLEncodedForm.js","../../../node_modules/.pnpm/axios@1.6.5/node_modules/axios/lib/helpers/formDataToJSON.js","../../../node_modules/.pnpm/axios@1.6.5/node_modules/axios/lib/defaults/index.js","../../../node_modules/.pnpm/axios@1.6.5/node_modules/axios/lib/helpers/parseHeaders.js","../../../node_modules/.pnpm/axios@1.6.5/node_modules/axios/lib/core/AxiosHeaders.js","../../../node_modules/.pnpm/axios@1.6.5/node_modules/axios/lib/core/transformData.js","../../../node_modules/.pnpm/axios@1.6.5/node_modules/axios/lib/cancel/isCancel.js","../../../node_modules/.pnpm/axios@1.6.5/node_modules/axios/lib/cancel/CanceledError.js","../../../node_modules/.pnpm/axios@1.6.5/node_modules/axios/lib/core/settle.js","../../../node_modules/.pnpm/axios@1.6.5/node_modules/axios/lib/helpers/cookies.js","../../../node_modules/.pnpm/axios@1.6.5/node_modules/axios/lib/helpers/isAbsoluteURL.js","../../../node_modules/.pnpm/axios@1.6.5/node_modules/axios/lib/helpers/combineURLs.js","../../../node_modules/.pnpm/axios@1.6.5/node_modules/axios/lib/core/buildFullPath.js","../../../node_modules/.pnpm/axios@1.6.5/node_modules/axios/lib/helpers/isURLSameOrigin.js","../../../node_modules/.pnpm/axios@1.6.5/node_modules/axios/lib/helpers/parseProtocol.js","../../../node_modules/.pnpm/axios@1.6.5/node_modules/axios/lib/helpers/speedometer.js","../../../node_modules/.pnpm/axios@1.6.5/node_modules/axios/lib/adapters/xhr.js","../../../node_modules/.pnpm/axios@1.6.5/node_modules/axios/lib/adapters/adapters.js","../../../node_modules/.pnpm/axios@1.6.5/node_modules/axios/lib/core/dispatchRequest.js","../../../node_modules/.pnpm/axios@1.6.5/node_modules/axios/lib/core/mergeConfig.js","../../../node_modules/.pnpm/axios@1.6.5/node_modules/axios/lib/env/data.js","../../../node_modules/.pnpm/axios@1.6.5/node_modules/axios/lib/helpers/validator.js","../../../node_modules/.pnpm/axios@1.6.5/node_modules/axios/lib/core/Axios.js","../../../node_modules/.pnpm/axios@1.6.5/node_modules/axios/lib/cancel/CancelToken.js","../../../node_modules/.pnpm/axios@1.6.5/node_modules/axios/lib/helpers/spread.js","../../../node_modules/.pnpm/axios@1.6.5/node_modules/axios/lib/helpers/isAxiosError.js","../../../node_modules/.pnpm/axios@1.6.5/node_modules/axios/lib/helpers/HttpStatusCode.js","../../../node_modules/.pnpm/axios@1.6.5/node_modules/axios/lib/axios.js","../../../node_modules/.pnpm/ua-parser-js@1.0.37/node_modules/ua-parser-js/src/ua-parser.js","../../../node_modules/.pnpm/uuid@9.0.1/node_modules/uuid/dist/esm-browser/rng.js","../../../node_modules/.pnpm/uuid@9.0.1/node_modules/uuid/dist/esm-browser/stringify.js","../../../node_modules/.pnpm/uuid@9.0.1/node_modules/uuid/dist/esm-browser/native.js","../../../node_modules/.pnpm/uuid@9.0.1/node_modules/uuid/dist/esm-browser/v4.js","../../../packages/lib-common/src/utils/objectUtils.ts","../../../packages/lib-common/src/utils/deviceUtils.ts","../../../packages/lib-common/src/utils/logUtils.ts","../../../packages/lib-common/src/utils/numUtils.ts","../../../packages/lib-common/src/utils/typeUtils.ts","../../../packages/lib-common/src/utils/urlUtils.ts","../../../packages/lib-common/src/utils/dateTimeUtils.ts","../../../packages/lib-common/src/utils/pageUtils.ts","../../../packages/lib-common/src/utils/cookieUtils.ts","../../../packages/lib-web/src/utils/httpUtils.ts","../../../packages/lib-web/src/utils/momentUtils.ts","../../../node_modules/.pnpm/js-sha1@0.6.0/node_modules/js-sha1/src/sha1.js","../../../packages/lib-web/src/utils/hashUtils.ts","../lib/affiliate/types/createAffiliateUrlRequest.ts","../lib/affiliate/types/createAffiliateUrlResponse.ts","../lib/affiliate/types/createUserInfoPageUrlRequest.ts","../lib/affiliate/affUtils.ts","../lib/affiliate/adpAffiliateClientV2.ts","../../../packages/lib-browser-data-store/components/localStorageDataManager.ts","../../../packages/lib-browser-data-store/components/cookieDataManager.ts","../../../packages/lib-browser-data-store/utils/dataManagerProxy.ts","../lib/ecomm/types/affiliateParams.ts","../lib/ecomm/types/clientConfig.ts","../lib/ecomm/types/purchaseOrderTransaction.ts","../lib/ecomm/types/purchaseOrder.ts","../lib/ecomm/types/purchaseOrderSimple.ts","../lib/ecomm/adpEcommClientV2.ts","../lib/main.ts"],"sourcesContent":["//! moment.js\n//! version : 2.30.1\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\nvar hookCallback;\n\nfunction hooks() {\n return hookCallback.apply(null, arguments);\n}\n\n// This is done to register the method called with moment()\n// without creating circular dependencies.\nfunction setHookCallback(callback) {\n hookCallback = callback;\n}\n\nfunction isArray(input) {\n return (\n input instanceof Array ||\n Object.prototype.toString.call(input) === '[object Array]'\n );\n}\n\nfunction isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return (\n input != null &&\n Object.prototype.toString.call(input) === '[object Object]'\n );\n}\n\nfunction hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n}\n\nfunction isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return Object.getOwnPropertyNames(obj).length === 0;\n } else {\n var k;\n for (k in obj) {\n if (hasOwnProp(obj, k)) {\n return false;\n }\n }\n return true;\n }\n}\n\nfunction isUndefined(input) {\n return input === void 0;\n}\n\nfunction isNumber(input) {\n return (\n typeof input === 'number' ||\n Object.prototype.toString.call(input) === '[object Number]'\n );\n}\n\nfunction isDate(input) {\n return (\n input instanceof Date ||\n Object.prototype.toString.call(input) === '[object Date]'\n );\n}\n\nfunction map(arr, fn) {\n var res = [],\n i,\n arrLen = arr.length;\n for (i = 0; i < arrLen; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n}\n\nfunction extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n}\n\nfunction createUTC(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n}\n\nfunction defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty: false,\n unusedTokens: [],\n unusedInput: [],\n overflow: -2,\n charsLeftOver: 0,\n nullInput: false,\n invalidEra: null,\n invalidMonth: null,\n invalidFormat: false,\n userInvalidated: false,\n iso: false,\n parsedDateParts: [],\n era: null,\n meridiem: null,\n rfc2822: false,\n weekdayMismatch: false,\n };\n}\n\nfunction getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n}\n\nvar some;\nif (Array.prototype.some) {\n some = Array.prototype.some;\n} else {\n some = function (fun) {\n var t = Object(this),\n len = t.length >>> 0,\n i;\n\n for (i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n}\n\nfunction isValid(m) {\n var flags = null,\n parsedParts = false,\n isNowValid = m._d && !isNaN(m._d.getTime());\n if (isNowValid) {\n flags = getParsingFlags(m);\n parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n });\n isNowValid =\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidEra &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n if (m._strict) {\n isNowValid =\n isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n }\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n } else {\n return isNowValid;\n }\n return m._isValid;\n}\n\nfunction createInvalid(flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n } else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n}\n\n// Plugins that add properties should also add the key here (null value),\n// so we can properly clone ourselves.\nvar momentProperties = (hooks.momentProperties = []),\n updateInProgress = false;\n\nfunction copyConfig(to, from) {\n var i,\n prop,\n val,\n momentPropertiesLen = momentProperties.length;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentPropertiesLen > 0) {\n for (i = 0; i < momentPropertiesLen; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n}\n\n// Moment prototype object\nfunction Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n}\n\nfunction isMoment(obj) {\n return (\n obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n );\n}\n\nfunction warn(msg) {\n if (\n hooks.suppressDeprecationWarnings === false &&\n typeof console !== 'undefined' &&\n console.warn\n ) {\n console.warn('Deprecation warning: ' + msg);\n }\n}\n\nfunction deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [],\n arg,\n i,\n key,\n argLen = arguments.length;\n for (i = 0; i < argLen; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (key in arguments[0]) {\n if (hasOwnProp(arguments[0], key)) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(\n msg +\n '\\nArguments: ' +\n Array.prototype.slice.call(args).join('') +\n '\\n' +\n new Error().stack\n );\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n}\n\nvar deprecations = {};\n\nfunction deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n}\n\nhooks.suppressDeprecationWarnings = false;\nhooks.deprecationHandler = null;\n\nfunction isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n}\n\nfunction set(config) {\n var prop, i;\n for (i in config) {\n if (hasOwnProp(config, i)) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' +\n /\\d{1,2}/.source\n );\n}\n\nfunction mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig),\n prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (\n hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])\n ) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n}\n\nfunction Locale(config) {\n if (config != null) {\n this.set(config);\n }\n}\n\nvar keys;\n\nif (Object.keys) {\n keys = Object.keys;\n} else {\n keys = function (obj) {\n var i,\n res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n}\n\nvar defaultCalendar = {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n};\n\nfunction calendar(key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n}\n\nfunction zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (\n (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n absNumber\n );\n}\n\nvar formattingTokens =\n /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n formatFunctions = {},\n formatTokenFunctions = {};\n\n// token: 'M'\n// padded: ['MM', 2]\n// ordinal: 'Mo'\n// callback: function () { this.month() + 1 }\nfunction addFormatToken(token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(\n func.apply(this, arguments),\n token\n );\n };\n }\n}\n\nfunction removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n}\n\nfunction makeFormatFunction(format) {\n var array = format.match(formattingTokens),\n i,\n length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '',\n i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i])\n ? array[i].call(mom, format)\n : array[i];\n }\n return output;\n };\n}\n\n// format date using native date object\nfunction formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] =\n formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n}\n\nfunction expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(\n localFormattingTokens,\n replaceLongDateFormatTokens\n );\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n}\n\nvar defaultLongDateFormat = {\n LTS: 'h:mm:ss A',\n LT: 'h:mm A',\n L: 'MM/DD/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n};\n\nfunction longDateFormat(key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper\n .match(formattingTokens)\n .map(function (tok) {\n if (\n tok === 'MMMM' ||\n tok === 'MM' ||\n tok === 'DD' ||\n tok === 'dddd'\n ) {\n return tok.slice(1);\n }\n return tok;\n })\n .join('');\n\n return this._longDateFormat[key];\n}\n\nvar defaultInvalidDate = 'Invalid date';\n\nfunction invalidDate() {\n return this._invalidDate;\n}\n\nvar defaultOrdinal = '%d',\n defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\nfunction ordinal(number) {\n return this._ordinal.replace('%d', number);\n}\n\nvar defaultRelativeTime = {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n w: 'a week',\n ww: '%d weeks',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n};\n\nfunction relativeTime(number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return isFunction(output)\n ? output(number, withoutSuffix, string, isFuture)\n : output.replace(/%d/i, number);\n}\n\nfunction pastFuture(diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n}\n\nvar aliases = {\n D: 'date',\n dates: 'date',\n date: 'date',\n d: 'day',\n days: 'day',\n day: 'day',\n e: 'weekday',\n weekdays: 'weekday',\n weekday: 'weekday',\n E: 'isoWeekday',\n isoweekdays: 'isoWeekday',\n isoweekday: 'isoWeekday',\n DDD: 'dayOfYear',\n dayofyears: 'dayOfYear',\n dayofyear: 'dayOfYear',\n h: 'hour',\n hours: 'hour',\n hour: 'hour',\n ms: 'millisecond',\n milliseconds: 'millisecond',\n millisecond: 'millisecond',\n m: 'minute',\n minutes: 'minute',\n minute: 'minute',\n M: 'month',\n months: 'month',\n month: 'month',\n Q: 'quarter',\n quarters: 'quarter',\n quarter: 'quarter',\n s: 'second',\n seconds: 'second',\n second: 'second',\n gg: 'weekYear',\n weekyears: 'weekYear',\n weekyear: 'weekYear',\n GG: 'isoWeekYear',\n isoweekyears: 'isoWeekYear',\n isoweekyear: 'isoWeekYear',\n w: 'week',\n weeks: 'week',\n week: 'week',\n W: 'isoWeek',\n isoweeks: 'isoWeek',\n isoweek: 'isoWeek',\n y: 'year',\n years: 'year',\n year: 'year',\n};\n\nfunction normalizeUnits(units) {\n return typeof units === 'string'\n ? aliases[units] || aliases[units.toLowerCase()]\n : undefined;\n}\n\nfunction normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n}\n\nvar priorities = {\n date: 9,\n day: 11,\n weekday: 11,\n isoWeekday: 11,\n dayOfYear: 4,\n hour: 13,\n millisecond: 16,\n minute: 14,\n month: 8,\n quarter: 7,\n second: 15,\n weekYear: 1,\n isoWeekYear: 1,\n week: 5,\n isoWeek: 5,\n year: 1,\n};\n\nfunction getPrioritizedUnits(unitsObj) {\n var units = [],\n u;\n for (u in unitsObj) {\n if (hasOwnProp(unitsObj, u)) {\n units.push({ unit: u, priority: priorities[u] });\n }\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n}\n\nvar match1 = /\\d/, // 0 - 9\n match2 = /\\d\\d/, // 00 - 99\n match3 = /\\d{3}/, // 000 - 999\n match4 = /\\d{4}/, // 0000 - 9999\n match6 = /[+-]?\\d{6}/, // -999999 - 999999\n match1to2 = /\\d\\d?/, // 0 - 99\n match3to4 = /\\d\\d\\d\\d?/, // 999 - 9999\n match5to6 = /\\d\\d\\d\\d\\d\\d?/, // 99999 - 999999\n match1to3 = /\\d{1,3}/, // 0 - 999\n match1to4 = /\\d{1,4}/, // 0 - 9999\n match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n matchUnsigned = /\\d+/, // 0 - inf\n matchSigned = /[+-]?\\d+/, // -inf - inf\n matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n matchWord =\n /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n match1to2NoLeadingZero = /^[1-9]\\d?/, // 1-99\n match1to2HasZero = /^([1-9]\\d|\\d)/, // 0-99\n regexes;\n\nregexes = {};\n\nfunction addRegexToken(token, regex, strictRegex) {\n regexes[token] = isFunction(regex)\n ? regex\n : function (isStrict, localeData) {\n return isStrict && strictRegex ? strictRegex : regex;\n };\n}\n\nfunction getParseRegexForToken(token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n}\n\n// Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\nfunction unescapeFormat(s) {\n return regexEscape(\n s\n .replace('\\\\', '')\n .replace(\n /\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g,\n function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }\n )\n );\n}\n\nfunction regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n}\n\nfunction absFloor(number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n}\n\nfunction toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n}\n\nvar tokens = {};\n\nfunction addParseToken(token, callback) {\n var i,\n func = callback,\n tokenLen;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n tokenLen = token.length;\n for (i = 0; i < tokenLen; i++) {\n tokens[token[i]] = func;\n }\n}\n\nfunction addWeekParseToken(token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n}\n\nfunction addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n}\n\nfunction isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n}\n\nvar YEAR = 0,\n MONTH = 1,\n DATE = 2,\n HOUR = 3,\n MINUTE = 4,\n SECOND = 5,\n MILLISECOND = 6,\n WEEK = 7,\n WEEKDAY = 8;\n\n// FORMATTING\n\naddFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n});\n\naddFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n});\n\naddFormatToken(0, ['YYYY', 4], 0, 'year');\naddFormatToken(0, ['YYYYY', 5], 0, 'year');\naddFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n// PARSING\n\naddRegexToken('Y', matchSigned);\naddRegexToken('YY', match1to2, match2);\naddRegexToken('YYYY', match1to4, match4);\naddRegexToken('YYYYY', match1to6, match6);\naddRegexToken('YYYYYY', match1to6, match6);\n\naddParseToken(['YYYYY', 'YYYYYY'], YEAR);\naddParseToken('YYYY', function (input, array) {\n array[YEAR] =\n input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n});\naddParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n});\naddParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n});\n\n// HELPERS\n\nfunction daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n}\n\n// HOOKS\n\nhooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n};\n\n// MOMENTS\n\nvar getSetYear = makeGetSet('FullYear', true);\n\nfunction getIsLeapYear() {\n return isLeapYear(this.year());\n}\n\nfunction makeGetSet(unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n}\n\nfunction get(mom, unit) {\n if (!mom.isValid()) {\n return NaN;\n }\n\n var d = mom._d,\n isUTC = mom._isUTC;\n\n switch (unit) {\n case 'Milliseconds':\n return isUTC ? d.getUTCMilliseconds() : d.getMilliseconds();\n case 'Seconds':\n return isUTC ? d.getUTCSeconds() : d.getSeconds();\n case 'Minutes':\n return isUTC ? d.getUTCMinutes() : d.getMinutes();\n case 'Hours':\n return isUTC ? d.getUTCHours() : d.getHours();\n case 'Date':\n return isUTC ? d.getUTCDate() : d.getDate();\n case 'Day':\n return isUTC ? d.getUTCDay() : d.getDay();\n case 'Month':\n return isUTC ? d.getUTCMonth() : d.getMonth();\n case 'FullYear':\n return isUTC ? d.getUTCFullYear() : d.getFullYear();\n default:\n return NaN; // Just in case\n }\n}\n\nfunction set$1(mom, unit, value) {\n var d, isUTC, year, month, date;\n\n if (!mom.isValid() || isNaN(value)) {\n return;\n }\n\n d = mom._d;\n isUTC = mom._isUTC;\n\n switch (unit) {\n case 'Milliseconds':\n return void (isUTC\n ? d.setUTCMilliseconds(value)\n : d.setMilliseconds(value));\n case 'Seconds':\n return void (isUTC ? d.setUTCSeconds(value) : d.setSeconds(value));\n case 'Minutes':\n return void (isUTC ? d.setUTCMinutes(value) : d.setMinutes(value));\n case 'Hours':\n return void (isUTC ? d.setUTCHours(value) : d.setHours(value));\n case 'Date':\n return void (isUTC ? d.setUTCDate(value) : d.setDate(value));\n // case 'Day': // Not real\n // return void (isUTC ? d.setUTCDay(value) : d.setDay(value));\n // case 'Month': // Not used because we need to pass two variables\n // return void (isUTC ? d.setUTCMonth(value) : d.setMonth(value));\n case 'FullYear':\n break; // See below ...\n default:\n return; // Just in case\n }\n\n year = value;\n month = mom.month();\n date = mom.date();\n date = date === 29 && month === 1 && !isLeapYear(year) ? 28 : date;\n void (isUTC\n ? d.setUTCFullYear(year, month, date)\n : d.setFullYear(year, month, date));\n}\n\n// MOMENTS\n\nfunction stringGet(units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n}\n\nfunction stringSet(units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units),\n i,\n prioritizedLen = prioritized.length;\n for (i = 0; i < prioritizedLen; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n}\n\nfunction mod(n, x) {\n return ((n % x) + x) % x;\n}\n\nvar indexOf;\n\nif (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n} else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n}\n\nfunction daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1\n ? isLeapYear(year)\n ? 29\n : 28\n : 31 - ((modMonth % 7) % 2);\n}\n\n// FORMATTING\n\naddFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n});\n\naddFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n});\n\naddFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n});\n\n// PARSING\n\naddRegexToken('M', match1to2, match1to2NoLeadingZero);\naddRegexToken('MM', match1to2, match2);\naddRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n});\naddRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n});\n\naddParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n});\n\naddParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n});\n\n// LOCALES\n\nvar defaultLocaleMonths =\n 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n defaultLocaleMonthsShort =\n 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n defaultMonthsShortRegex = matchWord,\n defaultMonthsRegex = matchWord;\n\nfunction localeMonths(m, format) {\n if (!m) {\n return isArray(this._months)\n ? this._months\n : this._months['standalone'];\n }\n return isArray(this._months)\n ? this._months[m.month()]\n : this._months[\n (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n ? 'format'\n : 'standalone'\n ][m.month()];\n}\n\nfunction localeMonthsShort(m, format) {\n if (!m) {\n return isArray(this._monthsShort)\n ? this._monthsShort\n : this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort)\n ? this._monthsShort[m.month()]\n : this._monthsShort[\n MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n ][m.month()];\n}\n\nfunction handleStrictParse(monthName, format, strict) {\n var i,\n ii,\n mom,\n llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n}\n\nfunction localeMonthsParse(monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp(\n '^' + this.months(mom, '').replace('.', '') + '$',\n 'i'\n );\n this._shortMonthsParse[i] = new RegExp(\n '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n 'i'\n );\n }\n if (!strict && !this._monthsParse[i]) {\n regex =\n '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'MMMM' &&\n this._longMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'MMM' &&\n this._shortMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n}\n\n// MOMENTS\n\nfunction setMonth(mom, value) {\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n var month = value,\n date = mom.date();\n\n date = date < 29 ? date : Math.min(date, daysInMonth(mom.year(), month));\n void (mom._isUTC\n ? mom._d.setUTCMonth(month, date)\n : mom._d.setMonth(month, date));\n return mom;\n}\n\nfunction getSetMonth(value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n}\n\nfunction getDaysInMonth() {\n return daysInMonth(this.year(), this.month());\n}\n\nfunction monthsShortRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict\n ? this._monthsShortStrictRegex\n : this._monthsShortRegex;\n }\n}\n\nfunction monthsRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict\n ? this._monthsStrictRegex\n : this._monthsRegex;\n }\n}\n\nfunction computeMonthsParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n shortP,\n longP;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortP = regexEscape(this.monthsShort(mom, ''));\n longP = regexEscape(this.months(mom, ''));\n shortPieces.push(shortP);\n longPieces.push(longP);\n mixedPieces.push(longP);\n mixedPieces.push(shortP);\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._monthsShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n}\n\nfunction createDate(y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date;\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n date = new Date(y + 400, m, d, h, M, s, ms);\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n\n return date;\n}\n\nfunction createUTCDate(y) {\n var date, args;\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n args = Array.prototype.slice.call(arguments);\n // preserve leap years using a full 400 year cycle, then reset\n args[0] = y + 400;\n date = new Date(Date.UTC.apply(null, args));\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(null, arguments));\n }\n\n return date;\n}\n\n// start-of-first-week - start-of-year\nfunction firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n}\n\n// https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\nfunction dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear,\n resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear,\n };\n}\n\nfunction weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek,\n resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear,\n };\n}\n\nfunction weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n}\n\n// FORMATTING\n\naddFormatToken('w', ['ww', 2], 'wo', 'week');\naddFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n// PARSING\n\naddRegexToken('w', match1to2, match1to2NoLeadingZero);\naddRegexToken('ww', match1to2, match2);\naddRegexToken('W', match1to2, match1to2NoLeadingZero);\naddRegexToken('WW', match1to2, match2);\n\naddWeekParseToken(\n ['w', 'ww', 'W', 'WW'],\n function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n }\n);\n\n// HELPERS\n\n// LOCALES\n\nfunction localeWeek(mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n}\n\nvar defaultLocaleWeek = {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n};\n\nfunction localeFirstDayOfWeek() {\n return this._week.dow;\n}\n\nfunction localeFirstDayOfYear() {\n return this._week.doy;\n}\n\n// MOMENTS\n\nfunction getSetWeek(input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n}\n\nfunction getSetISOWeek(input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n}\n\n// FORMATTING\n\naddFormatToken('d', 0, 'do', 'day');\n\naddFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n});\n\naddFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n});\n\naddFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n});\n\naddFormatToken('e', 0, 0, 'weekday');\naddFormatToken('E', 0, 0, 'isoWeekday');\n\n// PARSING\n\naddRegexToken('d', match1to2);\naddRegexToken('e', match1to2);\naddRegexToken('E', match1to2);\naddRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n});\naddRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n});\naddRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n});\n\naddWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n});\n\naddWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n});\n\n// HELPERS\n\nfunction parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n}\n\nfunction parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n}\n\n// LOCALES\nfunction shiftWeekdays(ws, n) {\n return ws.slice(n, 7).concat(ws.slice(0, n));\n}\n\nvar defaultLocaleWeekdays =\n 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n defaultWeekdaysRegex = matchWord,\n defaultWeekdaysShortRegex = matchWord,\n defaultWeekdaysMinRegex = matchWord;\n\nfunction localeWeekdays(m, format) {\n var weekdays = isArray(this._weekdays)\n ? this._weekdays\n : this._weekdays[\n m && m !== true && this._weekdays.isFormat.test(format)\n ? 'format'\n : 'standalone'\n ];\n return m === true\n ? shiftWeekdays(weekdays, this._week.dow)\n : m\n ? weekdays[m.day()]\n : weekdays;\n}\n\nfunction localeWeekdaysShort(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n : m\n ? this._weekdaysShort[m.day()]\n : this._weekdaysShort;\n}\n\nfunction localeWeekdaysMin(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n : m\n ? this._weekdaysMin[m.day()]\n : this._weekdaysMin;\n}\n\nfunction handleStrictParse$1(weekdayName, format, strict) {\n var i,\n ii,\n mom,\n llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(\n mom,\n ''\n ).toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n}\n\nfunction localeWeekdaysParse(weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp(\n '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._shortWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._minWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n }\n if (!this._weekdaysParse[i]) {\n regex =\n '^' +\n this.weekdays(mom, '') +\n '|^' +\n this.weekdaysShort(mom, '') +\n '|^' +\n this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'dddd' &&\n this._fullWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'ddd' &&\n this._shortWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'dd' &&\n this._minWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n}\n\n// MOMENTS\n\nfunction getSetDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n var day = get(this, 'Day');\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n}\n\nfunction getSetLocaleDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n}\n\nfunction getSetISODayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n}\n\nfunction weekdaysRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict\n ? this._weekdaysStrictRegex\n : this._weekdaysRegex;\n }\n}\n\nfunction weekdaysShortRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict\n ? this._weekdaysShortStrictRegex\n : this._weekdaysShortRegex;\n }\n}\n\nfunction weekdaysMinRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict\n ? this._weekdaysMinStrictRegex\n : this._weekdaysMinRegex;\n }\n}\n\nfunction computeWeekdaysParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [],\n shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n minp,\n shortp,\n longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = regexEscape(this.weekdaysMin(mom, ''));\n shortp = regexEscape(this.weekdaysShort(mom, ''));\n longp = regexEscape(this.weekdays(mom, ''));\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysMinStrictRegex = new RegExp(\n '^(' + minPieces.join('|') + ')',\n 'i'\n );\n}\n\n// FORMATTING\n\nfunction hFormat() {\n return this.hours() % 12 || 12;\n}\n\nfunction kFormat() {\n return this.hours() || 24;\n}\n\naddFormatToken('H', ['HH', 2], 0, 'hour');\naddFormatToken('h', ['hh', 2], 0, hFormat);\naddFormatToken('k', ['kk', 2], 0, kFormat);\n\naddFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n});\n\naddFormatToken('hmmss', 0, 0, function () {\n return (\n '' +\n hFormat.apply(this) +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n});\n\naddFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n});\n\naddFormatToken('Hmmss', 0, 0, function () {\n return (\n '' +\n this.hours() +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n});\n\nfunction meridiem(token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(\n this.hours(),\n this.minutes(),\n lowercase\n );\n });\n}\n\nmeridiem('a', true);\nmeridiem('A', false);\n\n// PARSING\n\nfunction matchMeridiem(isStrict, locale) {\n return locale._meridiemParse;\n}\n\naddRegexToken('a', matchMeridiem);\naddRegexToken('A', matchMeridiem);\naddRegexToken('H', match1to2, match1to2HasZero);\naddRegexToken('h', match1to2, match1to2NoLeadingZero);\naddRegexToken('k', match1to2, match1to2NoLeadingZero);\naddRegexToken('HH', match1to2, match2);\naddRegexToken('hh', match1to2, match2);\naddRegexToken('kk', match1to2, match2);\n\naddRegexToken('hmm', match3to4);\naddRegexToken('hmmss', match5to6);\naddRegexToken('Hmm', match3to4);\naddRegexToken('Hmmss', match5to6);\n\naddParseToken(['H', 'HH'], HOUR);\naddParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n});\naddParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n});\naddParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n});\naddParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n});\naddParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n});\naddParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n});\naddParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n});\n\n// LOCALES\n\nfunction localeIsPM(input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return (input + '').toLowerCase().charAt(0) === 'p';\n}\n\nvar defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n getSetHour = makeGetSet('Hours', true);\n\nfunction localeMeridiem(hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n}\n\nvar baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse,\n};\n\n// internal storage for locale config files\nvar locales = {},\n localeFamilies = {},\n globalLocale;\n\nfunction commonPrefix(arr1, arr2) {\n var i,\n minl = Math.min(arr1.length, arr2.length);\n for (i = 0; i < minl; i += 1) {\n if (arr1[i] !== arr2[i]) {\n return i;\n }\n }\n return minl;\n}\n\nfunction normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n}\n\n// pick the locale from the array\n// try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n// substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\nfunction chooseLocale(names) {\n var i = 0,\n j,\n next,\n locale,\n split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (\n next &&\n next.length >= j &&\n commonPrefix(split, next) >= j - 1\n ) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n}\n\nfunction isLocaleNameSane(name) {\n // Prevent names that look like filesystem paths, i.e contain '/' or '\\'\n // Ensure name is available and function returns boolean\n return !!(name && name.match('^[^/\\\\\\\\]*$'));\n}\n\nfunction loadLocale(name) {\n var oldLocale = null,\n aliasedRequire;\n // TODO: Find a better way to register and load all the locales in Node\n if (\n locales[name] === undefined &&\n typeof module !== 'undefined' &&\n module &&\n module.exports &&\n isLocaleNameSane(name)\n ) {\n try {\n oldLocale = globalLocale._abbr;\n aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {\n // mark as not found to avoid repeating expensive file require call causing high CPU\n // when trying to find en-US, en_US, en-us for every format call\n locales[name] = null; // null means not found\n }\n }\n return locales[name];\n}\n\n// This function will load locale and then set the global locale. If\n// no arguments are passed in, it will simply return the current global\n// locale key.\nfunction getSetGlobalLocale(key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n } else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n } else {\n if (typeof console !== 'undefined' && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn(\n 'Locale ' + key + ' not found. Did you forget to load it?'\n );\n }\n }\n }\n\n return globalLocale._abbr;\n}\n\nfunction defineLocale(name, config) {\n if (config !== null) {\n var locale,\n parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple(\n 'defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n );\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config,\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n}\n\nfunction updateLocale(name, config) {\n if (config != null) {\n var locale,\n tmpLocale,\n parentConfig = baseConfig;\n\n if (locales[name] != null && locales[name].parentLocale != null) {\n // Update existing child locale in-place to avoid memory-leaks\n locales[name].set(mergeConfigs(locales[name]._config, config));\n } else {\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n if (tmpLocale == null) {\n // updateLocale is called for creating a new locale\n // Set abbr so it will have a name (getters return\n // undefined otherwise).\n config.abbr = name;\n }\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n }\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n if (name === getSetGlobalLocale()) {\n getSetGlobalLocale(name);\n }\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n}\n\n// returns locale data\nfunction getLocale(key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n}\n\nfunction listLocales() {\n return keys(locales);\n}\n\nfunction checkOverflow(m) {\n var overflow,\n a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11\n ? MONTH\n : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n ? DATE\n : a[HOUR] < 0 ||\n a[HOUR] > 24 ||\n (a[HOUR] === 24 &&\n (a[MINUTE] !== 0 ||\n a[SECOND] !== 0 ||\n a[MILLISECOND] !== 0))\n ? HOUR\n : a[MINUTE] < 0 || a[MINUTE] > 59\n ? MINUTE\n : a[SECOND] < 0 || a[SECOND] > 59\n ? SECOND\n : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n ? MILLISECOND\n : -1;\n\n if (\n getParsingFlags(m)._overflowDayOfYear &&\n (overflow < YEAR || overflow > DATE)\n ) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n}\n\n// iso 8601 regex\n// 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\nvar extendedIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n basicIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/],\n ['YYYYMM', /\\d{6}/, false],\n ['YYYY', /\\d{4}/, false],\n ],\n // iso time formats and regexes\n isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/],\n ],\n aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n rfc2822 =\n /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60,\n };\n\n// date from iso format\nfunction configFromISO(config) {\n var i,\n l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime,\n dateFormat,\n timeFormat,\n tzFormat,\n isoDatesLen = isoDates.length,\n isoTimesLen = isoTimes.length;\n\n if (match) {\n getParsingFlags(config).iso = true;\n for (i = 0, l = isoDatesLen; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimesLen; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n}\n\nfunction extractFromRFC2822Strings(\n yearStr,\n monthStr,\n dayStr,\n hourStr,\n minuteStr,\n secondStr\n) {\n var result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10),\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n}\n\nfunction untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n}\n\nfunction preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s\n .replace(/\\([^()]*\\)|[\\n\\t]/g, ' ')\n .replace(/(\\s\\s+)/g, ' ')\n .replace(/^\\s\\s*/, '')\n .replace(/\\s\\s*$/, '');\n}\n\nfunction checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(\n parsedInput[0],\n parsedInput[1],\n parsedInput[2]\n ).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n}\n\nfunction calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10),\n m = hm % 100,\n h = (hm - m) / 100;\n return h * 60 + m;\n }\n}\n\n// date and time from ref 2822 format\nfunction configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i)),\n parsedArray;\n if (match) {\n parsedArray = extractFromRFC2822Strings(\n match[4],\n match[3],\n match[2],\n match[5],\n match[6],\n match[7]\n );\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n}\n\n// date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\nfunction configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n if (config._strict) {\n config._isValid = false;\n } else {\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n}\n\nhooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n);\n\n// Pick the first defined of two or three arguments.\nfunction defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n}\n\nfunction currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [\n nowValue.getUTCFullYear(),\n nowValue.getUTCMonth(),\n nowValue.getUTCDate(),\n ];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n}\n\n// convert an array to a date.\n// the array should mirror the parameters below\n// note: all values past the year are optional and will default to the lowest possible value.\n// [year, month, day , hour, minute, second, millisecond]\nfunction configFromArray(config) {\n var i,\n date,\n input = [],\n currentDate,\n expectedWeekday,\n yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (\n config._dayOfYear > daysInYear(yearToUse) ||\n config._dayOfYear === 0\n ) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] =\n config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (\n config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0\n ) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(\n null,\n input\n );\n expectedWeekday = config._useUTC\n ? config._d.getUTCDay()\n : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (\n config._w &&\n typeof config._w.d !== 'undefined' &&\n config._w.d !== expectedWeekday\n ) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n}\n\nfunction dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(\n w.GG,\n config._a[YEAR],\n weekOfYear(createLocal(), 1, 4).year\n );\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n}\n\n// constant that refers to the ISO standard\nhooks.ISO_8601 = function () {};\n\n// constant that refers to the RFC 2822 form\nhooks.RFC_2822 = function () {};\n\n// date from string and format string\nfunction configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i,\n parsedInput,\n tokens,\n token,\n skipped,\n stringLength = string.length,\n totalParsedInputLength = 0,\n era,\n tokenLen;\n\n tokens =\n expandFormat(config._f, config._locale).match(formattingTokens) || [];\n tokenLen = tokens.length;\n for (i = 0; i < tokenLen; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n [])[0];\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(\n string.indexOf(parsedInput) + parsedInput.length\n );\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n } else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n } else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver =\n stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (\n config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0\n ) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(\n config._locale,\n config._a[HOUR],\n config._meridiem\n );\n\n // handle era\n era = getParsingFlags(config).era;\n if (era !== null) {\n config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n }\n\n configFromArray(config);\n checkOverflow(config);\n}\n\nfunction meridiemFixWrap(locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n}\n\n// date from string and array of format strings\nfunction configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n scoreToBeat,\n i,\n currentScore,\n validFormatFound,\n bestFormatIsValid = false,\n configfLen = config._f.length;\n\n if (configfLen === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < configfLen; i++) {\n currentScore = 0;\n validFormatFound = false;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (isValid(tempConfig)) {\n validFormatFound = true;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (!bestFormatIsValid) {\n if (\n scoreToBeat == null ||\n currentScore < scoreToBeat ||\n validFormatFound\n ) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n if (validFormatFound) {\n bestFormatIsValid = true;\n }\n }\n } else {\n if (currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n }\n\n extend(config, bestMoment || tempConfig);\n}\n\nfunction configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i),\n dayOrDate = i.day === undefined ? i.date : i.day;\n config._a = map(\n [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n function (obj) {\n return obj && parseInt(obj, 10);\n }\n );\n\n configFromArray(config);\n}\n\nfunction createFromConfig(config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n}\n\nfunction prepareConfig(config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({ nullInput: true });\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n}\n\nfunction configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n}\n\nfunction createLocalOrUTC(input, format, locale, strict, isUTC) {\n var c = {};\n\n if (format === true || format === false) {\n strict = format;\n format = undefined;\n }\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if (\n (isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)\n ) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n}\n\nfunction createLocal(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n}\n\nvar prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n ),\n prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n// Pick a moment m from moments so that m[fn](other) is true for all\n// other. This relies on the function fn to be transitive.\n//\n// moments should either be an array of moment objects or an array, whose\n// first element is an array of moment objects.\nfunction pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n}\n\n// TODO: Use [].sort instead?\nfunction min() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n}\n\nfunction max() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n}\n\nvar now = function () {\n return Date.now ? Date.now() : +new Date();\n};\n\nvar ordering = [\n 'year',\n 'quarter',\n 'month',\n 'week',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'millisecond',\n];\n\nfunction isDurationValid(m) {\n var key,\n unitHasDecimal = false,\n i,\n orderLen = ordering.length;\n for (key in m) {\n if (\n hasOwnProp(m, key) &&\n !(\n indexOf.call(ordering, key) !== -1 &&\n (m[key] == null || !isNaN(m[key]))\n )\n ) {\n return false;\n }\n }\n\n for (i = 0; i < orderLen; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n}\n\nfunction isValid$1() {\n return this._isValid;\n}\n\nfunction createInvalid$1() {\n return createDuration(NaN);\n}\n\nfunction Duration(duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds =\n +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days + weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months + quarters * 3 + years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n}\n\nfunction isDuration(obj) {\n return obj instanceof Duration;\n}\n\nfunction absRound(number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n}\n\n// compare two arrays, return the number of differences\nfunction compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if (\n (dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n ) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n}\n\n// FORMATTING\n\nfunction offset(token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset(),\n sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return (\n sign +\n zeroFill(~~(offset / 60), 2) +\n separator +\n zeroFill(~~offset % 60, 2)\n );\n });\n}\n\noffset('Z', ':');\noffset('ZZ', '');\n\n// PARSING\n\naddRegexToken('Z', matchShortOffset);\naddRegexToken('ZZ', matchShortOffset);\naddParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n});\n\n// HELPERS\n\n// timezone chunker\n// '+10:00' > ['10', '00']\n// '-1530' > ['-15', '30']\nvar chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\nfunction offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher),\n chunk,\n parts,\n minutes;\n\n if (matches === null) {\n return null;\n }\n\n chunk = matches[matches.length - 1] || [];\n parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n}\n\n// Return a moment from input, that is local/utc/zone equivalent to model.\nfunction cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff =\n (isMoment(input) || isDate(input)\n ? input.valueOf()\n : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n}\n\nfunction getDateOffset(m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset());\n}\n\n// HOOKS\n\n// This function will be called whenever a moment is mutated.\n// It is intended to keep the offset in sync with the timezone.\nhooks.updateOffset = function () {};\n\n// MOMENTS\n\n// keepLocalTime = true means only change the timezone, without\n// affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n// 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n// +0200, so we adjust the time as needed, to be valid.\n//\n// Keeping the time actually adds/subtracts (one hour)\n// from the actual represented time. That is why we call updateOffset\n// a second time. In case it wants us to change the offset again\n// _changeInProgress == true case, then we have to adjust, because\n// there is no such time in the given timezone.\nfunction getSetOffset(input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(\n this,\n createDuration(input - offset, 'm'),\n 1,\n false\n );\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n}\n\nfunction getSetZone(input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n}\n\nfunction setOffsetToUTC(keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n}\n\nfunction setOffsetToLocal(keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n}\n\nfunction setOffsetToParsedOffset() {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n } else {\n this.utcOffset(0, true);\n }\n }\n return this;\n}\n\nfunction hasAlignedHourOffset(input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n}\n\nfunction isDaylightSavingTime() {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n}\n\nfunction isDaylightSavingTimeShifted() {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {},\n other;\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted =\n this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n}\n\nfunction isLocal() {\n return this.isValid() ? !this._isUTC : false;\n}\n\nfunction isUtcOffset() {\n return this.isValid() ? this._isUTC : false;\n}\n\nfunction isUtc() {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n}\n\n// ASP.NET json date format regex\nvar aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n isoRegex =\n /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\nfunction createDuration(input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms: input._milliseconds,\n d: input._days,\n M: input._months,\n };\n } else if (isNumber(input) || !isNaN(+input)) {\n duration = {};\n if (key) {\n duration[key] = +input;\n } else {\n duration.milliseconds = +input;\n }\n } else if ((match = aspNetRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: 0,\n d: toInt(match[DATE]) * sign,\n h: toInt(match[HOUR]) * sign,\n m: toInt(match[MINUTE]) * sign,\n s: toInt(match[SECOND]) * sign,\n ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n };\n } else if ((match = isoRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: parseIso(match[2], sign),\n M: parseIso(match[3], sign),\n w: parseIso(match[4], sign),\n d: parseIso(match[5], sign),\n h: parseIso(match[6], sign),\n m: parseIso(match[7], sign),\n s: parseIso(match[8], sign),\n };\n } else if (duration == null) {\n // checks for null or undefined\n duration = {};\n } else if (\n typeof duration === 'object' &&\n ('from' in duration || 'to' in duration)\n ) {\n diffRes = momentsDifference(\n createLocal(duration.from),\n createLocal(duration.to)\n );\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n ret._isValid = input._isValid;\n }\n\n return ret;\n}\n\ncreateDuration.fn = Duration.prototype;\ncreateDuration.invalid = createInvalid$1;\n\nfunction parseIso(inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n}\n\nfunction positiveMomentsDifference(base, other) {\n var res = {};\n\n res.months =\n other.month() - base.month() + (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n return res;\n}\n\nfunction momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return { milliseconds: 0, months: 0 };\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n}\n\n// TODO: remove 'name' arg after deprecation is removed\nfunction createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(\n name,\n 'moment().' +\n name +\n '(period, number) is deprecated. Please use moment().' +\n name +\n '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n );\n tmp = val;\n val = period;\n period = tmp;\n }\n\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n}\n\nfunction addSubtract(mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n}\n\nvar add = createAdder(1, 'add'),\n subtract = createAdder(-1, 'subtract');\n\nfunction isString(input) {\n return typeof input === 'string' || input instanceof String;\n}\n\n// type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\nfunction isMomentInput(input) {\n return (\n isMoment(input) ||\n isDate(input) ||\n isString(input) ||\n isNumber(input) ||\n isNumberOrStringArray(input) ||\n isMomentInputObject(input) ||\n input === null ||\n input === undefined\n );\n}\n\nfunction isMomentInputObject(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'years',\n 'year',\n 'y',\n 'months',\n 'month',\n 'M',\n 'days',\n 'day',\n 'd',\n 'dates',\n 'date',\n 'D',\n 'hours',\n 'hour',\n 'h',\n 'minutes',\n 'minute',\n 'm',\n 'seconds',\n 'second',\n 's',\n 'milliseconds',\n 'millisecond',\n 'ms',\n ],\n i,\n property,\n propertyLen = properties.length;\n\n for (i = 0; i < propertyLen; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n}\n\nfunction isNumberOrStringArray(input) {\n var arrayTest = isArray(input),\n dataTypeTest = false;\n if (arrayTest) {\n dataTypeTest =\n input.filter(function (item) {\n return !isNumber(item) && isString(input);\n }).length === 0;\n }\n return arrayTest && dataTypeTest;\n}\n\nfunction isCalendarSpec(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'sameDay',\n 'nextDay',\n 'lastDay',\n 'nextWeek',\n 'lastWeek',\n 'sameElse',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n}\n\nfunction getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6\n ? 'sameElse'\n : diff < -1\n ? 'lastWeek'\n : diff < 0\n ? 'lastDay'\n : diff < 1\n ? 'sameDay'\n : diff < 2\n ? 'nextDay'\n : diff < 7\n ? 'nextWeek'\n : 'sameElse';\n}\n\nfunction calendar$1(time, formats) {\n // Support for single parameter, formats only overload to the calendar function\n if (arguments.length === 1) {\n if (!arguments[0]) {\n time = undefined;\n formats = undefined;\n } else if (isMomentInput(arguments[0])) {\n time = arguments[0];\n formats = undefined;\n } else if (isCalendarSpec(arguments[0])) {\n formats = arguments[0];\n time = undefined;\n }\n }\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse',\n output =\n formats &&\n (isFunction(formats[format])\n ? formats[format].call(this, now)\n : formats[format]);\n\n return this.format(\n output || this.localeData().calendar(format, this, createLocal(now))\n );\n}\n\nfunction clone() {\n return new Moment(this);\n}\n\nfunction isAfter(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n}\n\nfunction isBefore(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n}\n\nfunction isBetween(from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (\n (inclusivity[0] === '('\n ? this.isAfter(localFrom, units)\n : !this.isBefore(localFrom, units)) &&\n (inclusivity[1] === ')'\n ? this.isBefore(localTo, units)\n : !this.isAfter(localTo, units))\n );\n}\n\nfunction isSame(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return (\n this.clone().startOf(units).valueOf() <= inputMs &&\n inputMs <= this.clone().endOf(units).valueOf()\n );\n }\n}\n\nfunction isSameOrAfter(input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n}\n\nfunction isSameOrBefore(input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n}\n\nfunction diff(input, units, asFloat) {\n var that, zoneDelta, output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year':\n output = monthDiff(this, that) / 12;\n break;\n case 'month':\n output = monthDiff(this, that);\n break;\n case 'quarter':\n output = monthDiff(this, that) / 3;\n break;\n case 'second':\n output = (this - that) / 1e3;\n break; // 1000\n case 'minute':\n output = (this - that) / 6e4;\n break; // 1000 * 60\n case 'hour':\n output = (this - that) / 36e5;\n break; // 1000 * 60 * 60\n case 'day':\n output = (this - that - zoneDelta) / 864e5;\n break; // 1000 * 60 * 60 * 24, negate dst\n case 'week':\n output = (this - that - zoneDelta) / 6048e5;\n break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default:\n output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n}\n\nfunction monthDiff(a, b) {\n if (a.date() < b.date()) {\n // end-of-month calculations work correct when the start month has more\n // days than the end month.\n return -monthDiff(b, a);\n }\n // difference in months\n var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2,\n adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n}\n\nhooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\nhooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\nfunction toString() {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n}\n\nfunction toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true,\n m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(\n m,\n utc\n ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n .toISOString()\n .replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(\n m,\n utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n}\n\n/**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\nfunction inspect() {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment',\n zone = '',\n prefix,\n year,\n datetime,\n suffix;\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n prefix = '[' + func + '(\"]';\n year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n datetime = '-MM-DD[T]HH:mm:ss.SSS';\n suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n}\n\nfunction format(inputString) {\n if (!inputString) {\n inputString = this.isUtc()\n ? hooks.defaultFormatUtc\n : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n}\n\nfunction from(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ to: this, from: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n}\n\nfunction fromNow(withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n}\n\nfunction to(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ from: this, to: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n}\n\nfunction toNow(withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n}\n\n// If passed a locale key, it will set the locale for this\n// instance. Otherwise, it will return the locale configuration\n// variables for this instance.\nfunction locale(key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n}\n\nvar lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n);\n\nfunction localeData() {\n return this._locale;\n}\n\nvar MS_PER_SECOND = 1000,\n MS_PER_MINUTE = 60 * MS_PER_SECOND,\n MS_PER_HOUR = 60 * MS_PER_MINUTE,\n MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n// actual modulo - handles negative numbers (for dates before 1970):\nfunction mod$1(dividend, divisor) {\n return ((dividend % divisor) + divisor) % divisor;\n}\n\nfunction localStartOfDate(y, m, d) {\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return new Date(y, m, d).valueOf();\n }\n}\n\nfunction utcStartOfDate(y, m, d) {\n // Date.UTC remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return Date.UTC(y, m, d);\n }\n}\n\nfunction startOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year(), 0, 1);\n break;\n case 'quarter':\n time = startOfDate(\n this.year(),\n this.month() - (this.month() % 3),\n 1\n );\n break;\n case 'month':\n time = startOfDate(this.year(), this.month(), 1);\n break;\n case 'week':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday()\n );\n break;\n case 'isoWeek':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1)\n );\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date());\n break;\n case 'hour':\n time = this._d.valueOf();\n time -= mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n );\n break;\n case 'minute':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_MINUTE);\n break;\n case 'second':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_SECOND);\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n}\n\nfunction endOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year() + 1, 0, 1) - 1;\n break;\n case 'quarter':\n time =\n startOfDate(\n this.year(),\n this.month() - (this.month() % 3) + 3,\n 1\n ) - 1;\n break;\n case 'month':\n time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n break;\n case 'week':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday() + 7\n ) - 1;\n break;\n case 'isoWeek':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1) + 7\n ) - 1;\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n break;\n case 'hour':\n time = this._d.valueOf();\n time +=\n MS_PER_HOUR -\n mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n ) -\n 1;\n break;\n case 'minute':\n time = this._d.valueOf();\n time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n break;\n case 'second':\n time = this._d.valueOf();\n time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n}\n\nfunction valueOf() {\n return this._d.valueOf() - (this._offset || 0) * 60000;\n}\n\nfunction unix() {\n return Math.floor(this.valueOf() / 1000);\n}\n\nfunction toDate() {\n return new Date(this.valueOf());\n}\n\nfunction toArray() {\n var m = this;\n return [\n m.year(),\n m.month(),\n m.date(),\n m.hour(),\n m.minute(),\n m.second(),\n m.millisecond(),\n ];\n}\n\nfunction toObject() {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds(),\n };\n}\n\nfunction toJSON() {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n}\n\nfunction isValid$2() {\n return isValid(this);\n}\n\nfunction parsingFlags() {\n return extend({}, getParsingFlags(this));\n}\n\nfunction invalidAt() {\n return getParsingFlags(this).overflow;\n}\n\nfunction creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict,\n };\n}\n\naddFormatToken('N', 0, 0, 'eraAbbr');\naddFormatToken('NN', 0, 0, 'eraAbbr');\naddFormatToken('NNN', 0, 0, 'eraAbbr');\naddFormatToken('NNNN', 0, 0, 'eraName');\naddFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\naddFormatToken('y', ['y', 1], 'yo', 'eraYear');\naddFormatToken('y', ['yy', 2], 0, 'eraYear');\naddFormatToken('y', ['yyy', 3], 0, 'eraYear');\naddFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\naddRegexToken('N', matchEraAbbr);\naddRegexToken('NN', matchEraAbbr);\naddRegexToken('NNN', matchEraAbbr);\naddRegexToken('NNNN', matchEraName);\naddRegexToken('NNNNN', matchEraNarrow);\n\naddParseToken(\n ['N', 'NN', 'NNN', 'NNNN', 'NNNNN'],\n function (input, array, config, token) {\n var era = config._locale.erasParse(input, token, config._strict);\n if (era) {\n getParsingFlags(config).era = era;\n } else {\n getParsingFlags(config).invalidEra = input;\n }\n }\n);\n\naddRegexToken('y', matchUnsigned);\naddRegexToken('yy', matchUnsigned);\naddRegexToken('yyy', matchUnsigned);\naddRegexToken('yyyy', matchUnsigned);\naddRegexToken('yo', matchEraYearOrdinal);\n\naddParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\naddParseToken(['yo'], function (input, array, config, token) {\n var match;\n if (config._locale._eraYearOrdinalRegex) {\n match = input.match(config._locale._eraYearOrdinalRegex);\n }\n\n if (config._locale.eraYearOrdinalParse) {\n array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n } else {\n array[YEAR] = parseInt(input, 10);\n }\n});\n\nfunction localeEras(m, format) {\n var i,\n l,\n date,\n eras = this._eras || getLocale('en')._eras;\n for (i = 0, l = eras.length; i < l; ++i) {\n switch (typeof eras[i].since) {\n case 'string':\n // truncate time\n date = hooks(eras[i].since).startOf('day');\n eras[i].since = date.valueOf();\n break;\n }\n\n switch (typeof eras[i].until) {\n case 'undefined':\n eras[i].until = +Infinity;\n break;\n case 'string':\n // truncate time\n date = hooks(eras[i].until).startOf('day').valueOf();\n eras[i].until = date.valueOf();\n break;\n }\n }\n return eras;\n}\n\nfunction localeErasParse(eraName, format, strict) {\n var i,\n l,\n eras = this.eras(),\n name,\n abbr,\n narrow;\n eraName = eraName.toUpperCase();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n name = eras[i].name.toUpperCase();\n abbr = eras[i].abbr.toUpperCase();\n narrow = eras[i].narrow.toUpperCase();\n\n if (strict) {\n switch (format) {\n case 'N':\n case 'NN':\n case 'NNN':\n if (abbr === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNN':\n if (name === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNNN':\n if (narrow === eraName) {\n return eras[i];\n }\n break;\n }\n } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n return eras[i];\n }\n }\n}\n\nfunction localeErasConvertYear(era, year) {\n var dir = era.since <= era.until ? +1 : -1;\n if (year === undefined) {\n return hooks(era.since).year();\n } else {\n return hooks(era.since).year() + (year - era.offset) * dir;\n }\n}\n\nfunction getEraName() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].name;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].name;\n }\n }\n\n return '';\n}\n\nfunction getEraNarrow() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].narrow;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].narrow;\n }\n }\n\n return '';\n}\n\nfunction getEraAbbr() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].abbr;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].abbr;\n }\n }\n\n return '';\n}\n\nfunction getEraYear() {\n var i,\n l,\n dir,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (\n (eras[i].since <= val && val <= eras[i].until) ||\n (eras[i].until <= val && val <= eras[i].since)\n ) {\n return (\n (this.year() - hooks(eras[i].since).year()) * dir +\n eras[i].offset\n );\n }\n }\n\n return this.year();\n}\n\nfunction erasNameRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNameRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNameRegex : this._erasRegex;\n}\n\nfunction erasAbbrRegex(isStrict) {\n if (!hasOwnProp(this, '_erasAbbrRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasAbbrRegex : this._erasRegex;\n}\n\nfunction erasNarrowRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNarrowRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNarrowRegex : this._erasRegex;\n}\n\nfunction matchEraAbbr(isStrict, locale) {\n return locale.erasAbbrRegex(isStrict);\n}\n\nfunction matchEraName(isStrict, locale) {\n return locale.erasNameRegex(isStrict);\n}\n\nfunction matchEraNarrow(isStrict, locale) {\n return locale.erasNarrowRegex(isStrict);\n}\n\nfunction matchEraYearOrdinal(isStrict, locale) {\n return locale._eraYearOrdinalRegex || matchUnsigned;\n}\n\nfunction computeErasParse() {\n var abbrPieces = [],\n namePieces = [],\n narrowPieces = [],\n mixedPieces = [],\n i,\n l,\n erasName,\n erasAbbr,\n erasNarrow,\n eras = this.eras();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n erasName = regexEscape(eras[i].name);\n erasAbbr = regexEscape(eras[i].abbr);\n erasNarrow = regexEscape(eras[i].narrow);\n\n namePieces.push(erasName);\n abbrPieces.push(erasAbbr);\n narrowPieces.push(erasNarrow);\n mixedPieces.push(erasName);\n mixedPieces.push(erasAbbr);\n mixedPieces.push(erasNarrow);\n }\n\n this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n this._erasNarrowRegex = new RegExp(\n '^(' + narrowPieces.join('|') + ')',\n 'i'\n );\n}\n\n// FORMATTING\n\naddFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n});\n\naddFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n});\n\nfunction addWeekYearFormatToken(token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n}\n\naddWeekYearFormatToken('gggg', 'weekYear');\naddWeekYearFormatToken('ggggg', 'weekYear');\naddWeekYearFormatToken('GGGG', 'isoWeekYear');\naddWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n// ALIASES\n\n// PARSING\n\naddRegexToken('G', matchSigned);\naddRegexToken('g', matchSigned);\naddRegexToken('GG', match1to2, match2);\naddRegexToken('gg', match1to2, match2);\naddRegexToken('GGGG', match1to4, match4);\naddRegexToken('gggg', match1to4, match4);\naddRegexToken('GGGGG', match1to6, match6);\naddRegexToken('ggggg', match1to6, match6);\n\naddWeekParseToken(\n ['gggg', 'ggggg', 'GGGG', 'GGGGG'],\n function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n }\n);\n\naddWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n});\n\n// MOMENTS\n\nfunction getSetWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.week(),\n this.weekday() + this.localeData()._week.dow,\n this.localeData()._week.dow,\n this.localeData()._week.doy\n );\n}\n\nfunction getSetISOWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.isoWeek(),\n this.isoWeekday(),\n 1,\n 4\n );\n}\n\nfunction getISOWeeksInYear() {\n return weeksInYear(this.year(), 1, 4);\n}\n\nfunction getISOWeeksInISOWeekYear() {\n return weeksInYear(this.isoWeekYear(), 1, 4);\n}\n\nfunction getWeeksInYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n}\n\nfunction getWeeksInWeekYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n}\n\nfunction getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n}\n\nfunction setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n}\n\n// FORMATTING\n\naddFormatToken('Q', 0, 'Qo', 'quarter');\n\n// PARSING\n\naddRegexToken('Q', match1);\naddParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n});\n\n// MOMENTS\n\nfunction getSetQuarter(input) {\n return input == null\n ? Math.ceil((this.month() + 1) / 3)\n : this.month((input - 1) * 3 + (this.month() % 3));\n}\n\n// FORMATTING\n\naddFormatToken('D', ['DD', 2], 'Do', 'date');\n\n// PARSING\n\naddRegexToken('D', match1to2, match1to2NoLeadingZero);\naddRegexToken('DD', match1to2, match2);\naddRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict\n ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n : locale._dayOfMonthOrdinalParseLenient;\n});\n\naddParseToken(['D', 'DD'], DATE);\naddParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n});\n\n// MOMENTS\n\nvar getSetDayOfMonth = makeGetSet('Date', true);\n\n// FORMATTING\n\naddFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n// PARSING\n\naddRegexToken('DDD', match1to3);\naddRegexToken('DDDD', match3);\naddParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n});\n\n// HELPERS\n\n// MOMENTS\n\nfunction getSetDayOfYear(input) {\n var dayOfYear =\n Math.round(\n (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n ) + 1;\n return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n}\n\n// FORMATTING\n\naddFormatToken('m', ['mm', 2], 0, 'minute');\n\n// PARSING\n\naddRegexToken('m', match1to2, match1to2HasZero);\naddRegexToken('mm', match1to2, match2);\naddParseToken(['m', 'mm'], MINUTE);\n\n// MOMENTS\n\nvar getSetMinute = makeGetSet('Minutes', false);\n\n// FORMATTING\n\naddFormatToken('s', ['ss', 2], 0, 'second');\n\n// PARSING\n\naddRegexToken('s', match1to2, match1to2HasZero);\naddRegexToken('ss', match1to2, match2);\naddParseToken(['s', 'ss'], SECOND);\n\n// MOMENTS\n\nvar getSetSecond = makeGetSet('Seconds', false);\n\n// FORMATTING\n\naddFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n});\n\naddFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n});\n\naddFormatToken(0, ['SSS', 3], 0, 'millisecond');\naddFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n});\naddFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n});\naddFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n});\naddFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n});\naddFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n});\naddFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n});\n\n// PARSING\n\naddRegexToken('S', match1to3, match1);\naddRegexToken('SS', match1to3, match2);\naddRegexToken('SSS', match1to3, match3);\n\nvar token, getSetMillisecond;\nfor (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n}\n\nfunction parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n}\n\nfor (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n}\n\ngetSetMillisecond = makeGetSet('Milliseconds', false);\n\n// FORMATTING\n\naddFormatToken('z', 0, 0, 'zoneAbbr');\naddFormatToken('zz', 0, 0, 'zoneName');\n\n// MOMENTS\n\nfunction getZoneAbbr() {\n return this._isUTC ? 'UTC' : '';\n}\n\nfunction getZoneName() {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n}\n\nvar proto = Moment.prototype;\n\nproto.add = add;\nproto.calendar = calendar$1;\nproto.clone = clone;\nproto.diff = diff;\nproto.endOf = endOf;\nproto.format = format;\nproto.from = from;\nproto.fromNow = fromNow;\nproto.to = to;\nproto.toNow = toNow;\nproto.get = stringGet;\nproto.invalidAt = invalidAt;\nproto.isAfter = isAfter;\nproto.isBefore = isBefore;\nproto.isBetween = isBetween;\nproto.isSame = isSame;\nproto.isSameOrAfter = isSameOrAfter;\nproto.isSameOrBefore = isSameOrBefore;\nproto.isValid = isValid$2;\nproto.lang = lang;\nproto.locale = locale;\nproto.localeData = localeData;\nproto.max = prototypeMax;\nproto.min = prototypeMin;\nproto.parsingFlags = parsingFlags;\nproto.set = stringSet;\nproto.startOf = startOf;\nproto.subtract = subtract;\nproto.toArray = toArray;\nproto.toObject = toObject;\nproto.toDate = toDate;\nproto.toISOString = toISOString;\nproto.inspect = inspect;\nif (typeof Symbol !== 'undefined' && Symbol.for != null) {\n proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n return 'Moment<' + this.format() + '>';\n };\n}\nproto.toJSON = toJSON;\nproto.toString = toString;\nproto.unix = unix;\nproto.valueOf = valueOf;\nproto.creationData = creationData;\nproto.eraName = getEraName;\nproto.eraNarrow = getEraNarrow;\nproto.eraAbbr = getEraAbbr;\nproto.eraYear = getEraYear;\nproto.year = getSetYear;\nproto.isLeapYear = getIsLeapYear;\nproto.weekYear = getSetWeekYear;\nproto.isoWeekYear = getSetISOWeekYear;\nproto.quarter = proto.quarters = getSetQuarter;\nproto.month = getSetMonth;\nproto.daysInMonth = getDaysInMonth;\nproto.week = proto.weeks = getSetWeek;\nproto.isoWeek = proto.isoWeeks = getSetISOWeek;\nproto.weeksInYear = getWeeksInYear;\nproto.weeksInWeekYear = getWeeksInWeekYear;\nproto.isoWeeksInYear = getISOWeeksInYear;\nproto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\nproto.date = getSetDayOfMonth;\nproto.day = proto.days = getSetDayOfWeek;\nproto.weekday = getSetLocaleDayOfWeek;\nproto.isoWeekday = getSetISODayOfWeek;\nproto.dayOfYear = getSetDayOfYear;\nproto.hour = proto.hours = getSetHour;\nproto.minute = proto.minutes = getSetMinute;\nproto.second = proto.seconds = getSetSecond;\nproto.millisecond = proto.milliseconds = getSetMillisecond;\nproto.utcOffset = getSetOffset;\nproto.utc = setOffsetToUTC;\nproto.local = setOffsetToLocal;\nproto.parseZone = setOffsetToParsedOffset;\nproto.hasAlignedHourOffset = hasAlignedHourOffset;\nproto.isDST = isDaylightSavingTime;\nproto.isLocal = isLocal;\nproto.isUtcOffset = isUtcOffset;\nproto.isUtc = isUtc;\nproto.isUTC = isUtc;\nproto.zoneAbbr = getZoneAbbr;\nproto.zoneName = getZoneName;\nproto.dates = deprecate(\n 'dates accessor is deprecated. Use date instead.',\n getSetDayOfMonth\n);\nproto.months = deprecate(\n 'months accessor is deprecated. Use month instead',\n getSetMonth\n);\nproto.years = deprecate(\n 'years accessor is deprecated. Use year instead',\n getSetYear\n);\nproto.zone = deprecate(\n 'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n getSetZone\n);\nproto.isDSTShifted = deprecate(\n 'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n isDaylightSavingTimeShifted\n);\n\nfunction createUnix(input) {\n return createLocal(input * 1000);\n}\n\nfunction createInZone() {\n return createLocal.apply(null, arguments).parseZone();\n}\n\nfunction preParsePostFormat(string) {\n return string;\n}\n\nvar proto$1 = Locale.prototype;\n\nproto$1.calendar = calendar;\nproto$1.longDateFormat = longDateFormat;\nproto$1.invalidDate = invalidDate;\nproto$1.ordinal = ordinal;\nproto$1.preparse = preParsePostFormat;\nproto$1.postformat = preParsePostFormat;\nproto$1.relativeTime = relativeTime;\nproto$1.pastFuture = pastFuture;\nproto$1.set = set;\nproto$1.eras = localeEras;\nproto$1.erasParse = localeErasParse;\nproto$1.erasConvertYear = localeErasConvertYear;\nproto$1.erasAbbrRegex = erasAbbrRegex;\nproto$1.erasNameRegex = erasNameRegex;\nproto$1.erasNarrowRegex = erasNarrowRegex;\n\nproto$1.months = localeMonths;\nproto$1.monthsShort = localeMonthsShort;\nproto$1.monthsParse = localeMonthsParse;\nproto$1.monthsRegex = monthsRegex;\nproto$1.monthsShortRegex = monthsShortRegex;\nproto$1.week = localeWeek;\nproto$1.firstDayOfYear = localeFirstDayOfYear;\nproto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\nproto$1.weekdays = localeWeekdays;\nproto$1.weekdaysMin = localeWeekdaysMin;\nproto$1.weekdaysShort = localeWeekdaysShort;\nproto$1.weekdaysParse = localeWeekdaysParse;\n\nproto$1.weekdaysRegex = weekdaysRegex;\nproto$1.weekdaysShortRegex = weekdaysShortRegex;\nproto$1.weekdaysMinRegex = weekdaysMinRegex;\n\nproto$1.isPM = localeIsPM;\nproto$1.meridiem = localeMeridiem;\n\nfunction get$1(format, index, field, setter) {\n var locale = getLocale(),\n utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n}\n\nfunction listMonthsImpl(format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i,\n out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n}\n\n// ()\n// (5)\n// (fmt, 5)\n// (fmt)\n// (true)\n// (true, 5)\n// (true, fmt, 5)\n// (true, fmt)\nfunction listWeekdaysImpl(localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0,\n i,\n out = [];\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n}\n\nfunction listMonths(format, index) {\n return listMonthsImpl(format, index, 'months');\n}\n\nfunction listMonthsShort(format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n}\n\nfunction listWeekdays(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n}\n\nfunction listWeekdaysShort(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n}\n\nfunction listWeekdaysMin(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n}\n\ngetSetGlobalLocale('en', {\n eras: [\n {\n since: '0001-01-01',\n until: +Infinity,\n offset: 1,\n name: 'Anno Domini',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: 'Before Christ',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n toInt((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n});\n\n// Side effect imports\n\nhooks.lang = deprecate(\n 'moment.lang is deprecated. Use moment.locale instead.',\n getSetGlobalLocale\n);\nhooks.langData = deprecate(\n 'moment.langData is deprecated. Use moment.localeData instead.',\n getLocale\n);\n\nvar mathAbs = Math.abs;\n\nfunction abs() {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n}\n\nfunction addSubtract$1(duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n}\n\n// supports only 2.0-style add(1, 's') or add(duration)\nfunction add$1(input, value) {\n return addSubtract$1(this, input, value, 1);\n}\n\n// supports only 2.0-style subtract(1, 's') or subtract(duration)\nfunction subtract$1(input, value) {\n return addSubtract$1(this, input, value, -1);\n}\n\nfunction absCeil(number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n}\n\nfunction bubble() {\n var milliseconds = this._milliseconds,\n days = this._days,\n months = this._months,\n data = this._data,\n seconds,\n minutes,\n hours,\n years,\n monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (\n !(\n (milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0)\n )\n ) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n}\n\nfunction daysToMonths(days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return (days * 4800) / 146097;\n}\n\nfunction monthsToDays(months) {\n // the reverse of daysToMonths\n return (months * 146097) / 4800;\n}\n\nfunction as(units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days,\n months,\n milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'quarter' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n switch (units) {\n case 'month':\n return months;\n case 'quarter':\n return months / 3;\n case 'year':\n return months / 12;\n }\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week':\n return days / 7 + milliseconds / 6048e5;\n case 'day':\n return days + milliseconds / 864e5;\n case 'hour':\n return days * 24 + milliseconds / 36e5;\n case 'minute':\n return days * 1440 + milliseconds / 6e4;\n case 'second':\n return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond':\n return Math.floor(days * 864e5) + milliseconds;\n default:\n throw new Error('Unknown unit ' + units);\n }\n }\n}\n\nfunction makeAs(alias) {\n return function () {\n return this.as(alias);\n };\n}\n\nvar asMilliseconds = makeAs('ms'),\n asSeconds = makeAs('s'),\n asMinutes = makeAs('m'),\n asHours = makeAs('h'),\n asDays = makeAs('d'),\n asWeeks = makeAs('w'),\n asMonths = makeAs('M'),\n asQuarters = makeAs('Q'),\n asYears = makeAs('y'),\n valueOf$1 = asMilliseconds;\n\nfunction clone$1() {\n return createDuration(this);\n}\n\nfunction get$2(units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n}\n\nfunction makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n}\n\nvar milliseconds = makeGetter('milliseconds'),\n seconds = makeGetter('seconds'),\n minutes = makeGetter('minutes'),\n hours = makeGetter('hours'),\n days = makeGetter('days'),\n months = makeGetter('months'),\n years = makeGetter('years');\n\nfunction weeks() {\n return absFloor(this.days() / 7);\n}\n\nvar round = Math.round,\n thresholds = {\n ss: 44, // a few seconds to seconds\n s: 45, // seconds to minute\n m: 45, // minutes to hour\n h: 22, // hours to day\n d: 26, // days to month/week\n w: null, // weeks to month\n M: 11, // months to year\n };\n\n// helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\nfunction substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n}\n\nfunction relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n var duration = createDuration(posNegDuration).abs(),\n seconds = round(duration.as('s')),\n minutes = round(duration.as('m')),\n hours = round(duration.as('h')),\n days = round(duration.as('d')),\n months = round(duration.as('M')),\n weeks = round(duration.as('w')),\n years = round(duration.as('y')),\n a =\n (seconds <= thresholds.ss && ['s', seconds]) ||\n (seconds < thresholds.s && ['ss', seconds]) ||\n (minutes <= 1 && ['m']) ||\n (minutes < thresholds.m && ['mm', minutes]) ||\n (hours <= 1 && ['h']) ||\n (hours < thresholds.h && ['hh', hours]) ||\n (days <= 1 && ['d']) ||\n (days < thresholds.d && ['dd', days]);\n\n if (thresholds.w != null) {\n a =\n a ||\n (weeks <= 1 && ['w']) ||\n (weeks < thresholds.w && ['ww', weeks]);\n }\n a = a ||\n (months <= 1 && ['M']) ||\n (months < thresholds.M && ['MM', months]) ||\n (years <= 1 && ['y']) || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n}\n\n// This function allows you to set the rounding function for relative time strings\nfunction getSetRelativeTimeRounding(roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof roundingFunction === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n}\n\n// This function allows you to set a threshold for relative time strings\nfunction getSetRelativeTimeThreshold(threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n}\n\nfunction humanize(argWithSuffix, argThresholds) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var withSuffix = false,\n th = thresholds,\n locale,\n output;\n\n if (typeof argWithSuffix === 'object') {\n argThresholds = argWithSuffix;\n argWithSuffix = false;\n }\n if (typeof argWithSuffix === 'boolean') {\n withSuffix = argWithSuffix;\n }\n if (typeof argThresholds === 'object') {\n th = Object.assign({}, thresholds, argThresholds);\n if (argThresholds.s != null && argThresholds.ss == null) {\n th.ss = argThresholds.s - 1;\n }\n }\n\n locale = this.localeData();\n output = relativeTime$1(this, !withSuffix, th, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n}\n\nvar abs$1 = Math.abs;\n\nfunction sign(x) {\n return (x > 0) - (x < 0) || +x;\n}\n\nfunction toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000,\n days = abs$1(this._days),\n months = abs$1(this._months),\n minutes,\n hours,\n years,\n s,\n total = this.asSeconds(),\n totalSign,\n ymSign,\n daysSign,\n hmsSign;\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n totalSign = total < 0 ? '-' : '';\n ymSign = sign(this._months) !== sign(total) ? '-' : '';\n daysSign = sign(this._days) !== sign(total) ? '-' : '';\n hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n return (\n totalSign +\n 'P' +\n (years ? ymSign + years + 'Y' : '') +\n (months ? ymSign + months + 'M' : '') +\n (days ? daysSign + days + 'D' : '') +\n (hours || minutes || seconds ? 'T' : '') +\n (hours ? hmsSign + hours + 'H' : '') +\n (minutes ? hmsSign + minutes + 'M' : '') +\n (seconds ? hmsSign + s + 'S' : '')\n );\n}\n\nvar proto$2 = Duration.prototype;\n\nproto$2.isValid = isValid$1;\nproto$2.abs = abs;\nproto$2.add = add$1;\nproto$2.subtract = subtract$1;\nproto$2.as = as;\nproto$2.asMilliseconds = asMilliseconds;\nproto$2.asSeconds = asSeconds;\nproto$2.asMinutes = asMinutes;\nproto$2.asHours = asHours;\nproto$2.asDays = asDays;\nproto$2.asWeeks = asWeeks;\nproto$2.asMonths = asMonths;\nproto$2.asQuarters = asQuarters;\nproto$2.asYears = asYears;\nproto$2.valueOf = valueOf$1;\nproto$2._bubble = bubble;\nproto$2.clone = clone$1;\nproto$2.get = get$2;\nproto$2.milliseconds = milliseconds;\nproto$2.seconds = seconds;\nproto$2.minutes = minutes;\nproto$2.hours = hours;\nproto$2.days = days;\nproto$2.weeks = weeks;\nproto$2.months = months;\nproto$2.years = years;\nproto$2.humanize = humanize;\nproto$2.toISOString = toISOString$1;\nproto$2.toString = toISOString$1;\nproto$2.toJSON = toISOString$1;\nproto$2.locale = locale;\nproto$2.localeData = localeData;\n\nproto$2.toIsoString = deprecate(\n 'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n toISOString$1\n);\nproto$2.lang = lang;\n\n// FORMATTING\n\naddFormatToken('X', 0, 0, 'unix');\naddFormatToken('x', 0, 0, 'valueOf');\n\n// PARSING\n\naddRegexToken('x', matchSigned);\naddRegexToken('X', matchTimestamp);\naddParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input) * 1000);\n});\naddParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n});\n\n//! moment.js\n\nhooks.version = '2.30.1';\n\nsetHookCallback(createLocal);\n\nhooks.fn = proto;\nhooks.min = min;\nhooks.max = max;\nhooks.now = now;\nhooks.utc = createUTC;\nhooks.unix = createUnix;\nhooks.months = listMonths;\nhooks.isDate = isDate;\nhooks.locale = getSetGlobalLocale;\nhooks.invalid = createInvalid;\nhooks.duration = createDuration;\nhooks.isMoment = isMoment;\nhooks.weekdays = listWeekdays;\nhooks.parseZone = createInZone;\nhooks.localeData = getLocale;\nhooks.isDuration = isDuration;\nhooks.monthsShort = listMonthsShort;\nhooks.weekdaysMin = listWeekdaysMin;\nhooks.defineLocale = defineLocale;\nhooks.updateLocale = updateLocale;\nhooks.locales = listLocales;\nhooks.weekdaysShort = listWeekdaysShort;\nhooks.normalizeUnits = normalizeUnits;\nhooks.relativeTimeRounding = getSetRelativeTimeRounding;\nhooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\nhooks.calendarFormat = getCalendarFormat;\nhooks.prototype = proto;\n\n// currently HTML5 input type only supports 24-hour formats\nhooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // \n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // \n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // \n DATE: 'YYYY-MM-DD', // \n TIME: 'HH:mm', // \n TIME_SECONDS: 'HH:mm:ss', // \n TIME_MS: 'HH:mm:ss.SSS', // \n WEEK: 'GGGG-[W]WW', // \n MONTH: 'YYYY-MM', // \n};\n\nexport default hooks;\n","/*! js-cookie v3.0.5 | MIT */\n/* eslint-disable no-var */\nfunction assign (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n target[key] = source[key];\n }\n }\n return target\n}\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\nvar defaultConverter = {\n read: function (value) {\n if (value[0] === '\"') {\n value = value.slice(1, -1);\n }\n return value.replace(/(%[\\dA-F]{2})+/gi, decodeURIComponent)\n },\n write: function (value) {\n return encodeURIComponent(value).replace(\n /%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,\n decodeURIComponent\n )\n }\n};\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\n\nfunction init (converter, defaultAttributes) {\n function set (name, value, attributes) {\n if (typeof document === 'undefined') {\n return\n }\n\n attributes = assign({}, defaultAttributes, attributes);\n\n if (typeof attributes.expires === 'number') {\n attributes.expires = new Date(Date.now() + attributes.expires * 864e5);\n }\n if (attributes.expires) {\n attributes.expires = attributes.expires.toUTCString();\n }\n\n name = encodeURIComponent(name)\n .replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent)\n .replace(/[()]/g, escape);\n\n var stringifiedAttributes = '';\n for (var attributeName in attributes) {\n if (!attributes[attributeName]) {\n continue\n }\n\n stringifiedAttributes += '; ' + attributeName;\n\n if (attributes[attributeName] === true) {\n continue\n }\n\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 stringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n }\n\n return (document.cookie =\n name + '=' + converter.write(value, name) + stringifiedAttributes)\n }\n\n function get (name) {\n if (typeof document === 'undefined' || (arguments.length && !name)) {\n return\n }\n\n // To prevent the for loop in the first place assign an empty array\n // in case there are no cookies at all.\n var cookies = document.cookie ? document.cookie.split('; ') : [];\n var jar = {};\n for (var i = 0; i < cookies.length; i++) {\n var parts = cookies[i].split('=');\n var value = parts.slice(1).join('=');\n\n try {\n var found = decodeURIComponent(parts[0]);\n jar[found] = converter.read(value, found);\n\n if (name === found) {\n break\n }\n } catch (e) {}\n }\n\n return name ? jar[name] : jar\n }\n\n return Object.create(\n {\n set,\n get,\n remove: function (name, attributes) {\n set(\n name,\n '',\n assign({}, attributes, {\n expires: -1\n })\n );\n },\n withAttributes: function (attributes) {\n return init(this.converter, assign({}, this.attributes, attributes))\n },\n withConverter: function (converter) {\n return init(assign({}, this.converter, converter), this.attributes)\n }\n },\n {\n attributes: { value: Object.freeze(defaultAttributes) },\n converter: { value: Object.freeze(converter) }\n }\n )\n}\n\nvar api = init(defaultConverter, { path: '/' });\n/* eslint-enable no-var */\n\nexport { api as default };\n","\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport namespace currencyUtil{\n\n export class CurrencyCode {\n constructor(code: string, name: string, num: number) {\n this.Code = code;\n this.Num = num;\n this.Name = name;\n }\n\n public readonly Code: string;\n public readonly Num: number;\n public readonly Name: string;\n }\n\n export class Currency {\n static readonly AED = new CurrencyCode(\"AED\", \"United Arab Emirates Dirham\", 784);\n static readonly AFN = new CurrencyCode(\"AFN\", \"Afghan Afghani\", 971);\n static readonly ALL = new CurrencyCode(\"ALL\", \"Albanian Lek\", 8);\n static readonly AMD = new CurrencyCode(\"AMD\", \"Armenian Dram\", 51);\n static readonly ANG = new CurrencyCode(\"ANG\", \"Netherlands Antillean Guilder\", 532);\n static readonly AOA = new CurrencyCode(\"AOA\", \"Angolan Kwanza\", 973);\n static readonly ARS = new CurrencyCode(\"ARS\", \"Argentine Peso\", 32);\n static readonly AUD = new CurrencyCode(\"AUD\", \"Australian Dollar\", 36);\n static readonly AWG = new CurrencyCode(\"AWG\", \"Aruban Florin\", 533);\n static readonly AZN = new CurrencyCode(\"AZN\", \"Azerbaijani Manat\", 944);\n static readonly BAM = new CurrencyCode(\n \"BAM\",\n \"Bosnia And Herzegovina Convertible Mark\",\n 977\n );\n static readonly BBD = new CurrencyCode(\"BBD\", \"Barbados Dollar\", 52);\n static readonly BDT = new CurrencyCode(\"BDT\", \"Bangladeshi Taka\", 50);\n static readonly BGN = new CurrencyCode(\"BGN\", \"Bulgarian Lev\", 975);\n static readonly BHD = new CurrencyCode(\"BHD\", \"Bahraini Dinar\", 48);\n static readonly BIF = new CurrencyCode(\"BIF\", \"Burundian Franc\", 108);\n static readonly BMD = new CurrencyCode(\"BMD\", \"Bermudian Dollar\", 60);\n static readonly BND = new CurrencyCode(\"BND\", \"Brunei Dollar\", 96);\n static readonly BOB = new CurrencyCode(\"BOB\", \"Boliviano\", 68);\n static readonly BOV = new CurrencyCode(\"BOV\", \"Bolivian Mvdol (Funds Code)\", 984);\n static readonly BRL = new CurrencyCode(\"BRL\", \"Brazilian Real\", 986);\n static readonly BSD = new CurrencyCode(\"BSD\", \"Bahamian Dollar\", 44);\n static readonly BTN = new CurrencyCode(\"BTN\", \"Bhutanese Ngultrum\", 64);\n static readonly BWP = new CurrencyCode(\"BWP\", \"Botswana Pula\", 72);\n static readonly BYN = new CurrencyCode(\"BYN\", \"Belarusian Ruble\", 933);\n static readonly BZD = new CurrencyCode(\"BZD\", \"Belize Dollar\", 84);\n static readonly CAD = new CurrencyCode(\"CAD\", \"Canadian Dollar\", 124);\n static readonly CDF = new CurrencyCode(\"CDF\", \"Congolese Franc\", 976);\n static readonly CHE = new CurrencyCode(\n \"CHE\",\n \"Wir Euro (Complementary Currency)\",\n 947\n );\n static readonly CHF = new CurrencyCode(\"CHF\", \"Swiss Franc\", 756);\n static readonly CHW = new CurrencyCode(\n \"CHW\",\n \"Wir Franc (Complementary Currency)\",\n 948\n );\n static readonly CLF = new CurrencyCode(\"CLF\", \"Unidad De Fomento (Funds Code)\", 990);\n static readonly CLP = new CurrencyCode(\"CLP\", \"Chilean Peso\", 152);\n static readonly CNY = new CurrencyCode(\"CNY\", \"Renminbi\", 156);\n static readonly COP = new CurrencyCode(\"COP\", \"Colombian Peso\", 170);\n static readonly COU = new CurrencyCode(\n \"COU\",\n \"Unidad De Valor Real (Uvr) (Funds Code)\",\n 970\n );\n static readonly CRC = new CurrencyCode(\"CRC\", \"Costa Rican Colon\", 188);\n static readonly CUP = new CurrencyCode(\"CUP\", \"Cuban Peso\", 192);\n static readonly CVE = new CurrencyCode(\"CVE\", \"Cape Verdean Escudo\", 132);\n static readonly CZK = new CurrencyCode(\"CZK\", \"Czech Koruna\", 203);\n static readonly DJF = new CurrencyCode(\"DJF\", \"Djiboutian Franc\", 262);\n static readonly DKK = new CurrencyCode(\"DKK\", \"Danish Krone\", 208);\n static readonly DOP = new CurrencyCode(\"DOP\", \"Dominican Peso\", 214);\n static readonly DZD = new CurrencyCode(\"DZD\", \"Algerian Dinar\", 12);\n static readonly EGP = new CurrencyCode(\"EGP\", \"Egyptian Pound\", 818);\n static readonly ERN = new CurrencyCode(\"ERN\", \"Eritrean Nakfa\", 232);\n static readonly ETB = new CurrencyCode(\"ETB\", \"Ethiopian Birr\", 230);\n static readonly EUR = new CurrencyCode(\"EUR\", \"Euro\", 978);\n static readonly FJD = new CurrencyCode(\"FJD\", \"Fiji Dollar\", 242);\n static readonly FKP = new CurrencyCode(\"FKP\", \"Falkland Islands Pound\", 238);\n static readonly GBP = new CurrencyCode(\"GBP\", \"Pound Sterling\", 826);\n static readonly GEL = new CurrencyCode(\"GEL\", \"Georgian Lari\", 981);\n static readonly GHS = new CurrencyCode(\"GHS\", \"Ghanaian Cedi\", 936);\n static readonly GIP = new CurrencyCode(\"GIP\", \"Gibraltar Pound\", 292);\n static readonly GMD = new CurrencyCode(\"GMD\", \"Gambian Dalasi\", 270);\n static readonly GNF = new CurrencyCode(\"GNF\", \"Guinean Franc\", 324);\n static readonly GTQ = new CurrencyCode(\"GTQ\", \"Guatemalan Quetzal\", 320);\n static readonly GYD = new CurrencyCode(\"GYD\", \"Guyanese Dollar\", 328);\n static readonly HKD = new CurrencyCode(\"HKD\", \"Hong Kong Dollar\", 344);\n static readonly HNL = new CurrencyCode(\"HNL\", \"Honduran Lempira\", 340);\n static readonly HTG = new CurrencyCode(\"HTG\", \"Haitian Gourde\", 332);\n static readonly HUF = new CurrencyCode(\"HUF\", \"Hungarian Forint\", 348);\n static readonly IDR = new CurrencyCode(\"IDR\", \"Indonesian Rupiah\", 360);\n static readonly ILS = new CurrencyCode(\"ILS\", \"Israeli New Shekel\", 376);\n static readonly INR = new CurrencyCode(\"INR\", \"Indian Rupee\", 356);\n static readonly IQD = new CurrencyCode(\"IQD\", \"Iraqi Dinar\", 368);\n static readonly IRR = new CurrencyCode(\"IRR\", \"Iranian Rial\", 364);\n static readonly ISK = new CurrencyCode(\n \"ISK\",\n \"Icelandic Króna (Plural: Krónur)\",\n 352\n );\n static readonly JMD = new CurrencyCode(\"JMD\", \"Jamaican Dollar\", 388);\n static readonly JOD = new CurrencyCode(\"JOD\", \"Jordanian Dinar\", 400);\n static readonly JPY = new CurrencyCode(\"JPY\", \"Japanese Yen\", 392);\n static readonly KES = new CurrencyCode(\"KES\", \"Kenyan Shilling\", 404);\n static readonly KGS = new CurrencyCode(\"KGS\", \"Kyrgyzstani Som\", 417);\n static readonly KHR = new CurrencyCode(\"KHR\", \"Cambodian Riel\", 116);\n static readonly KMF = new CurrencyCode(\"KMF\", \"Comoro Franc\", 174);\n static readonly KPW = new CurrencyCode(\"KPW\", \"North Korean Won\", 408);\n static readonly KRW = new CurrencyCode(\"KRW\", \"South Korean Won\", 410);\n static readonly KWD = new CurrencyCode(\"KWD\", \"Kuwaiti Dinar\", 414);\n static readonly KYD = new CurrencyCode(\"KYD\", \"Cayman Islands Dollar\", 136);\n static readonly KZT = new CurrencyCode(\"KZT\", \"Kazakhstani Tenge\", 398);\n static readonly LAK = new CurrencyCode(\"LAK\", \"Lao Kip\", 418);\n static readonly LBP = new CurrencyCode(\"LBP\", \"Lebanese Pound\", 422);\n static readonly LKR = new CurrencyCode(\"LKR\", \"Sri Lankan Rupee\", 144);\n static readonly LRD = new CurrencyCode(\"LRD\", \"Liberian Dollar\", 430);\n static readonly LSL = new CurrencyCode(\"LSL\", \"Lesotho Loti\", 426);\n static readonly LYD = new CurrencyCode(\"LYD\", \"Libyan Dinar\", 434);\n static readonly MAD = new CurrencyCode(\"MAD\", \"Moroccan Dirham\", 504);\n static readonly MDL = new CurrencyCode(\"MDL\", \"Moldovan Leu\", 498);\n static readonly MGA = new CurrencyCode(\"MGA\", \"Malagasy Ariary\", 969);\n static readonly MKD = new CurrencyCode(\"MKD\", \"Macedonian Denar\", 807);\n static readonly MMK = new CurrencyCode(\"MMK\", \"Myanmar Kyat\", 104);\n static readonly MNT = new CurrencyCode(\"MNT\", \"Mongolian Tögrög\", 496);\n static readonly MOP = new CurrencyCode(\"MOP\", \"Macanese Pataca\", 446);\n static readonly MRU = new CurrencyCode(\"MRU\", \"Mauritanian Ouguiya\", 929);\n static readonly MUR = new CurrencyCode(\"MUR\", \"Mauritian Rupee\", 480);\n static readonly MVR = new CurrencyCode(\"MVR\", \"Maldivian Rufiyaa\", 462);\n static readonly MWK = new CurrencyCode(\"MWK\", \"Malawian Kwacha\", 454);\n static readonly MXN = new CurrencyCode(\"MXN\", \"Mexican Peso\", 484);\n static readonly MXV = new CurrencyCode(\n \"MXV\",\n \"Mexican Unidad De Inversion (Udi) (Funds Code)\",\n 979\n );\n static readonly MYR = new CurrencyCode(\"MYR\", \"Malaysian Ringgit\", 458);\n static readonly MZN = new CurrencyCode(\"MZN\", \"Mozambican Metical\", 943);\n static readonly NAD = new CurrencyCode(\"NAD\", \"Namibian Dollar\", 516);\n static readonly NGN = new CurrencyCode(\"NGN\", \"Nigerian Naira\", 566);\n static readonly NIO = new CurrencyCode(\"NIO\", \"Nicaraguan Córdoba\", 558);\n static readonly NOK = new CurrencyCode(\"NOK\", \"Norwegian Krone\", 578);\n static readonly NPR = new CurrencyCode(\"NPR\", \"Nepalese Rupee\", 524);\n static readonly NZD = new CurrencyCode(\"NZD\", \"New Zealand Dollar\", 554);\n static readonly OMR = new CurrencyCode(\"OMR\", \"Omani Rial\", 512);\n static readonly PAB = new CurrencyCode(\"PAB\", \"Panamanian Balboa\", 590);\n static readonly PEN = new CurrencyCode(\"PEN\", \"Peruvian Sol\", 604);\n static readonly PGK = new CurrencyCode(\"PGK\", \"Papua New Guinean Kina\", 598);\n static readonly PHP = new CurrencyCode(\"PHP\", \"Philippine Peso\", 608);\n static readonly PKR = new CurrencyCode(\"PKR\", \"Pakistani Rupee\", 586);\n static readonly PLN = new CurrencyCode(\"PLN\", \"Polish Złoty\", 985);\n static readonly PYG = new CurrencyCode(\"PYG\", \"Paraguayan Guaraní\", 600);\n static readonly QAR = new CurrencyCode(\"QAR\", \"Qatari Riyal\", 634);\n static readonly RON = new CurrencyCode(\"RON\", \"Romanian Leu\", 946);\n static readonly RSD = new CurrencyCode(\"RSD\", \"Serbian Dinar\", 941);\n static readonly RUB = new CurrencyCode(\"RUB\", \"Russian Ruble\", 643);\n static readonly RWF = new CurrencyCode(\"RWF\", \"Rwandan Franc\", 646);\n static readonly SAR = new CurrencyCode(\"SAR\", \"Saudi Riyal\", 682);\n static readonly SBD = new CurrencyCode(\"SBD\", \"Solomon Islands Dollar\", 90);\n static readonly SCR = new CurrencyCode(\"SCR\", \"Seychelles Rupee\", 690);\n static readonly SDG = new CurrencyCode(\"SDG\", \"Sudanese Pound\", 938);\n static readonly SEK = new CurrencyCode(\"SEK\", \"Swedish Krona (Plural: Kronor)\", 752);\n static readonly SGD = new CurrencyCode(\"SGD\", \"Singapore Dollar\", 702);\n static readonly SHP = new CurrencyCode(\"SHP\", \"Saint Helena Pound\", 654);\n static readonly SLE = new CurrencyCode(\n \"SLE\",\n \"Sierra Leonean Leone (New Leone)\",\n 925\n );\n static readonly SLL = new CurrencyCode(\n \"SLL\",\n \"Sierra Leonean Leone (Old Leone)\",\n 694\n );\n static readonly SOS = new CurrencyCode(\"SOS\", \"Somalian Shilling\", 706);\n static readonly SRD = new CurrencyCode(\"SRD\", \"Surinamese Dollar\", 968);\n static readonly SSP = new CurrencyCode(\"SSP\", \"South Sudanese Pound\", 728);\n static readonly STN = new CurrencyCode(\"STN\", \"São Tomé And Príncipe Dobra\", 930);\n static readonly SVC = new CurrencyCode(\"SVC\", \"Salvadoran Colón\", 222);\n static readonly SYP = new CurrencyCode(\"SYP\", \"Syrian Pound\", 760);\n static readonly SZL = new CurrencyCode(\"SZL\", \"Swazi Lilangeni\", 748);\n static readonly THB = new CurrencyCode(\"THB\", \"Thai Baht\", 764);\n static readonly TJS = new CurrencyCode(\"TJS\", \"Tajikistani Somoni\", 972);\n static readonly TMT = new CurrencyCode(\"TMT\", \"Turkmenistan Manat\", 934);\n static readonly TND = new CurrencyCode(\"TND\", \"Tunisian Dinar\", 788);\n static readonly TOP = new CurrencyCode(\"TOP\", \"Tongan PaʻAnga\", 776);\n static readonly TRY = new CurrencyCode(\"TRY\", \"Turkish Lira\", 949);\n static readonly TTD = new CurrencyCode(\"TTD\", \"Trinidad And Tobago Dollar\", 780);\n static readonly TWD = new CurrencyCode(\"TWD\", \"New Taiwan Dollar\", 901);\n static readonly TZS = new CurrencyCode(\"TZS\", \"Tanzanian Shilling\", 834);\n static readonly UAH = new CurrencyCode(\"UAH\", \"Ukrainian Hryvnia\", 980);\n static readonly UGX = new CurrencyCode(\"UGX\", \"Ugandan Shilling\", 800);\n static readonly USD = new CurrencyCode(\"USD\", \"United States Dollar\", 840);\n static readonly USN = new CurrencyCode(\n \"USN\",\n \"United States Dollar (Next Day) (Funds Code)\",\n 997\n );\n static readonly UYI = new CurrencyCode(\n \"UYI\",\n \"Uruguay Peso En Unidades Indexadas (Uruiurui) (Funds Code)\",\n 940\n );\n static readonly UYU = new CurrencyCode(\"UYU\", \"Uruguayan Peso\", 858);\n static readonly UYW = new CurrencyCode(\"UYW\", \"Unidad Previsional\", 927);\n static readonly UZS = new CurrencyCode(\"UZS\", \"Uzbekistani Sum\", 860);\n static readonly VED = new CurrencyCode(\"VED\", \"Venezuelan Digital Bolívar\", 926);\n static readonly VES = new CurrencyCode(\"VES\", \"Venezuelan Sovereign Bolívar\", 928);\n static readonly VND = new CurrencyCode(\"VND\", \"Vietnamese ĐồNg\", 704);\n static readonly VUV = new CurrencyCode(\"VUV\", \"Vanuatu Vatu\", 548);\n static readonly WST = new CurrencyCode(\"WST\", \"Samoan Tala\", 882);\n static readonly XAF = new CurrencyCode(\"XAF\", \"Cfa Franc Beac\", 950);\n static readonly XAG = new CurrencyCode(\"XAG\", \"Silver (One Troy Ounce)\", 961);\n static readonly XAU = new CurrencyCode(\"XAU\", \"Gold (One Troy Ounce)\", 959);\n static readonly XBA = new CurrencyCode(\n \"XBA\",\n \"European Composite Unit (Eurco) (Bond Market Unit)\",\n 955\n );\n static readonly XBB = new CurrencyCode(\n \"XBB\",\n \"European Monetary Unit (E.M.U.-6) (Bond Market Unit)\",\n 956\n );\n static readonly XBC = new CurrencyCode(\n \"XBC\",\n \"European Unit Of Account 9 (E.U.A.-9) (Bond Market Unit)\",\n 957\n );\n static readonly XBD = new CurrencyCode(\n \"XBD\",\n \"European Unit Of Account 17 (E.U.A.-17) (Bond Market Unit)\",\n 958\n );\n static readonly XCD = new CurrencyCode(\"XCD\", \"East Caribbean Dollar\", 951);\n static readonly XDR = new CurrencyCode(\"XDR\", \"Special Drawing Rights\", 960);\n static readonly XOF = new CurrencyCode(\"XOF\", \"Cfa Franc Bceao\", 952);\n static readonly XPD = new CurrencyCode(\"XPD\", \"Palladium (One Troy Ounce)\", 964);\n static readonly XPF = new CurrencyCode(\"XPF\", \"Cfp Franc (Franc Pacifique)\", 953);\n static readonly XPT = new CurrencyCode(\"XPT\", \"Platinum (One Troy Ounce)\", 962);\n static readonly XSU = new CurrencyCode(\"XSU\", \"Sucre\", 994);\n static readonly XTS = new CurrencyCode(\"XTS\", \"Code Reserved For Testing\", 963);\n static readonly XUA = new CurrencyCode(\"XUA\", \"Adb Unit Of Account\", 965);\n static readonly XXX = new CurrencyCode(\"XXX\", \"No Currency\", 999);\n static readonly YER = new CurrencyCode(\"YER\", \"Yemeni Rial\", 886);\n static readonly ZAR = new CurrencyCode(\"ZAR\", \"South African Rand\", 710);\n static readonly ZMW = new CurrencyCode(\"ZMW\", \"Zambian Kwacha\", 967);\n static readonly ZWL = new CurrencyCode(\"ZWL\", \"Zimbabwean Dollar (Fifth)\", 932);\n }\n\n }\n\n","'use strict';\n\nexport default function bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n","'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\n\nconst kindOf = (cache => thing => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type\n}\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val);\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n let kind;\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) || (\n isFunction(thing.append) && (\n (kind = kindOf(thing)) === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n )\n )\n )\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\nfunction findKey(obj, key) {\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== \"undefined\") return globalThis;\n return typeof self !== \"undefined\" ? self : (typeof window !== 'undefined' ? window : global)\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const {caseless} = isContextDefined(this) && this || {};\n const result = {};\n const assignValue = (val, key) => {\n const targetKey = caseless && findKey(result, key) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else {\n result[targetKey] = val;\n }\n }\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n forEach(b, (val, key) => {\n if (thisArg && isFunction(val)) {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n }, {allOwnKeys});\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype\n });\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n // eslint-disable-next-line func-names\n return thing => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[Symbol.iterator];\n\n const iterator = generator.call(obj);\n\n let result;\n\n while ((result = iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n}\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n}\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,\n function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n }\n );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n let ret;\n if ((ret = reducer(descriptor, name, obj)) !== false) {\n reducedDescriptors[name] = ret || descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n}\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error('Can not rewrite read-only method \\'' + name + '\\'');\n };\n }\n });\n}\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach(value => {\n obj[value] = true;\n });\n }\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n}\n\nconst noop = () => {}\n\nconst toFiniteNumber = (value, defaultValue) => {\n value = +value;\n return Number.isFinite(value) ? value : defaultValue;\n}\n\nconst ALPHA = 'abcdefghijklmnopqrstuvwxyz'\n\nconst DIGIT = '0123456789';\n\nconst ALPHABET = {\n DIGIT,\n ALPHA,\n ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT\n}\n\nconst generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => {\n let str = '';\n const {length} = alphabet;\n while (size--) {\n str += alphabet[Math.random() * length|0]\n }\n\n return str;\n}\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]);\n}\n\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n if(!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n }\n\n return visit(obj, 0);\n}\n\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\nconst isThenable = (thing) =>\n thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isUndefined,\n isDate,\n isFile,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n ALPHABET,\n generateString,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = (new Error()).stack;\n }\n\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n response && (this.response = response);\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: utils.toJSONObject(this.config),\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n }\n});\n\nconst prototype = AxiosError.prototype;\nconst descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED',\n 'ERR_NOT_SUPPORT',\n 'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(code => {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = (error, code, config, request, response, customProps) => {\n const axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n }, prop => {\n return prop !== 'isAxiosError';\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.cause = error;\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nexport default AxiosError;\n","// eslint-disable-next-line strict\nexport default null;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\nimport PlatformFormData from '../platform/node/classes/FormData.js';\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path.concat(key).map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n }).join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n if (!utils.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (PlatformFormData || FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils.toFlatObject(options, {\n metaTokens: true,\n dots: false,\n indexes: false\n }, false, function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n });\n\n const metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n const visitor = options.visitor || defaultVisitor;\n const dots = options.dots;\n const indexes = options.indexes;\n const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array} path\n * @this {FormData}\n *\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n let arr = value;\n\n if (value && !path && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (utils.isArray(value) && isFlatArray(value)) ||\n ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value))\n )) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !(utils.isUndefined(el) || el === null) && formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable\n });\n\n function build(value, path) {\n if (utils.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils.forEach(value, function each(el, key) {\n const result = !(utils.isUndefined(el) || el === null) && visitor.call(\n formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers\n );\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\nexport default toFormData;\n","'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object} params - The parameters to be converted to a FormData object.\n * @param {Object} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder ? function(value) {\n return encoder.call(this, value, encode);\n } : encode;\n\n return this._pairs.map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '').join('&');\n};\n\nexport default AxiosURLSearchParams;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?object} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n \n const _encode = options && options.encode || encode;\n\n const serializeFn = options && options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, options);\n } else {\n serializedParams = utils.isURLSearchParams(params) ?\n params.toString() :\n new AxiosURLSearchParams(params, options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf(\"#\");\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nexport default InterceptorManager;\n","'use strict';\n\nexport default {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","'use strict';\n\nimport AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js';\nexport default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n","'use strict';\n\nexport default typeof FormData !== 'undefined' ? FormData : null;\n","'use strict'\n\nexport default typeof Blob !== 'undefined' ? Blob : null\n","import URLSearchParams from './classes/URLSearchParams.js'\nimport FormData from './classes/FormData.js'\nimport Blob from './classes/Blob.js'\n\nexport default {\n isBrowser: true,\n classes: {\n URLSearchParams,\n FormData,\n Blob\n },\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data']\n};\n","const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv = (\n (product) => {\n return hasBrowserEnv && ['ReactNative', 'NativeScript', 'NS'].indexOf(product) < 0\n })(typeof navigator !== 'undefined' && navigator.product);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\nexport {\n hasBrowserEnv,\n hasStandardBrowserWebWorkerEnv,\n hasStandardBrowserEnv\n}\n","import platform from './node/index.js';\nimport * as utils from './common/utils.js';\n\nexport default {\n ...utils,\n ...platform\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({\n visitor: function(value, key, path, helpers) {\n if (platform.isNode && utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n }\n }, options));\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n\n if (name === '__proto__') return true;\n\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n const obj = {};\n\n utils.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\nexport default formDataToJSON;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http'],\n\n transformRequest: [function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils.isObject(data);\n\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils.isFormData(data);\n\n if (isFormData) {\n if (!hasJSONContentType) {\n return data;\n }\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? {'files[]': data} : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType ) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*',\n 'Content-Type': undefined\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n defaults.headers[method] = {};\n});\n\nexport default defaults;\n","'use strict';\n\nimport utils from './../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default rawHeaders => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!utils.isString(value)) return;\n\n if (utils.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header.trim()\n .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach(methodName => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function(arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = utils.findKey(self, lHeader);\n\n if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (utils.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite)\n } else if(utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils.forEach(this, (value, header) => {\n const key = utils.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils.forEach(this, (value, header) => {\n value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals = this[$internals] = (this[$internals] = {\n accessors: {}\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {\n let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n return {\n get: () => value,\n set(headerValue) {\n this[mapped] = headerValue;\n }\n }\n});\n\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n","'use strict';\n\nimport utils from './../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n const config = this || defaults;\n const context = response || config;\n const headers = AxiosHeaders.from(context.headers);\n let data = context.data;\n\n utils.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n","'use strict';\n\nexport default function isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\nfunction CanceledError(message, config, request) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nexport default CanceledError;\n","'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n}\n","import utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n // Standard browser envs support document.cookie\n {\n write(name, value, expires, path, domain, secure) {\n const cookie = [name + '=' + encodeURIComponent(value)];\n\n utils.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString());\n\n utils.isString(path) && cookie.push('path=' + path);\n\n utils.isString(domain) && cookie.push('domain=' + domain);\n\n secure === true && cookie.push('secure');\n\n document.cookie = cookie.join('; ');\n },\n\n read(name) {\n const match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n }\n\n :\n\n // Non-standard browser env (web workers, react-native) lack needed support.\n {\n write() {},\n read() {\n return null;\n },\n remove() {}\n };\n\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n","'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n","'use strict';\n\nimport utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n// Standard browser envs have full support of the APIs needed to test\n// whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n const msie = /(msie|trident)/i.test(navigator.userAgent);\n const urlParsingNode = document.createElement('a');\n let originURL;\n\n /**\n * Parse a URL to discover its components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n let href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n const parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })();\n","'use strict';\n\nexport default function parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n}\n","'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n };\n}\n\nexport default speedometer;\n","'use strict';\n\nimport utils from './../utils.js';\nimport settle from './../core/settle.js';\nimport cookies from './../helpers/cookies.js';\nimport buildURL from './../helpers/buildURL.js';\nimport buildFullPath from '../core/buildFullPath.js';\nimport isURLSameOrigin from './../helpers/isURLSameOrigin.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport speedometer from '../helpers/speedometer.js';\n\nfunction progressEventReducer(listener, isDownloadStream) {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return e => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? (loaded / total) : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e\n };\n\n data[isDownloadStream ? 'download' : 'upload'] = true;\n\n listener(data);\n };\n}\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported && function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n let requestData = config.data;\n const requestHeaders = AxiosHeaders.from(config.headers).normalize();\n let {responseType, withXSRFToken} = config;\n let onCanceled;\n function done() {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (config.signal) {\n config.signal.removeEventListener('abort', onCanceled);\n }\n }\n\n let contentType;\n\n if (utils.isFormData(requestData)) {\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n requestHeaders.setContentType(false); // Let the browser set it\n } else if ((contentType = requestHeaders.getContentType()) !== false) {\n // fix semicolon duplication issue for ReactNative FormData implementation\n const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : [];\n requestHeaders.setContentType([type || 'multipart/form-data', ...tokens].join('; '));\n }\n }\n\n let request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n const username = config.auth.username || '';\n const password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.set('Authorization', 'Basic ' + btoa(username + ':' + password));\n }\n\n const fullPath = buildFullPath(config.baseURL, config.url);\n\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = AxiosHeaders.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = config.transitional || transitionalDefaults;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if(platform.hasStandardBrowserEnv) {\n withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(config));\n\n if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(fullPath))) {\n // Add xsrf header\n const xsrfValue = config.xsrfHeaderName && config.xsrfCookieName && cookies.read(config.xsrfCookieName);\n\n if (xsrfValue) {\n requestHeaders.set(config.xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', progressEventReducer(config.onDownloadProgress, true));\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', progressEventReducer(config.onUploadProgress));\n }\n\n if (config.cancelToken || config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = cancel => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n config.cancelToken && config.cancelToken.subscribe(onCanceled);\n if (config.signal) {\n config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(fullPath);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData || null);\n });\n}\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport AxiosError from \"../core/AxiosError.js\";\n\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter\n}\n\nutils.forEach(knownAdapters, (fn, value) => {\n if (fn) {\n try {\n Object.defineProperty(fn, 'name', {value});\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', {value});\n }\n});\n\nconst renderReason = (reason) => `- ${reason}`;\n\nconst isResolvedHandle = (adapter) => utils.isFunction(adapter) || adapter === null || adapter === false;\n\nexport default {\n getAdapter: (adapters) => {\n adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n const {length} = adapters;\n let nameOrAdapter;\n let adapter;\n\n const rejectedReasons = {};\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n let id;\n\n adapter = nameOrAdapter;\n\n if (!isResolvedHandle(nameOrAdapter)) {\n adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n if (adapter === undefined) {\n throw new AxiosError(`Unknown adapter '${id}'`);\n }\n }\n\n if (adapter) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n\n const reasons = Object.entries(rejectedReasons)\n .map(([id, state]) => `adapter ${id} ` +\n (state === false ? 'is not supported by the environment' : 'is not available in the build')\n );\n\n let s = length ?\n (reasons.length > 1 ? 'since :\\n' + reasons.map(renderReason).join('\\n') : ' ' + renderReason(reasons[0])) :\n 'as no adapter specified';\n\n throw new AxiosError(\n `There is no suitable adapter to dispatch the request ` + s,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n return adapter;\n },\n adapters: knownAdapters\n}\n","'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from \"../adapters/adapters.js\";\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.transformRequest\n );\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(config.adapter || defaults.adapter);\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n config.transformResponse,\n response\n );\n\n response.headers = AxiosHeaders.from(response.headers);\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n });\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from \"./AxiosHeaders.js\";\n\nconst headersToObject = (thing) => thing instanceof AxiosHeaders ? thing.toJSON() : thing;\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, caseless) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge.call({caseless}, target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(a, b, caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n withXSRFToken: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b) => mergeDeepProperties(headersToObject(a), headersToObject(b), true)\n };\n\n utils.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {\n const merge = mergeMap[prop] || mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n","export const VERSION = \"1.6.5\";","'use strict';\n\nimport {VERSION} from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nexport default {\n assertOptions,\n validators\n};\n","'use strict';\n\nimport utils from './../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const {transitional, paramsSerializer, headers} = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n if (paramsSerializer != null) {\n if (utils.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer\n }\n } else {\n validator.assertOptions(paramsSerializer, {\n encode: validators.function,\n serialize: validators.function\n }, true);\n }\n }\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n // Flatten headers\n let contextHeaders = headers && utils.merge(\n headers.common,\n headers[config.method]\n );\n\n headers && utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n (method) => {\n delete headers[method];\n }\n );\n\n config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift.apply(chain, requestInterceptorChain);\n chain.push.apply(chain, responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n i = 0;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url,\n data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n","'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(cancel => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = onfulfilled => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise(resolve => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel\n };\n }\n}\n\nexport default CancelToken;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n}\n","const HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n","'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport {VERSION} from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from \"./core/AxiosHeaders.js\";\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios(defaultConfig);\n const instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context, {allOwnKeys: true});\n\n // Copy context to instance\n utils.extend(instance, context, null, {allOwnKeys: true});\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios\n","/////////////////////////////////////////////////////////////////////////////////\n/* UAParser.js v1.0.37\n Copyright © 2012-2021 Faisal Salman \n MIT License *//*\n Detect Browser, Engine, OS, CPU, and Device type/model from User-Agent data.\n Supports browser & node.js environment. \n Demo : https://faisalman.github.io/ua-parser-js\n Source : https://github.com/faisalman/ua-parser-js */\n/////////////////////////////////////////////////////////////////////////////////\n\n(function (window, undefined) {\n\n 'use strict';\n\n //////////////\n // Constants\n /////////////\n\n\n var LIBVERSION = '1.0.37',\n EMPTY = '',\n UNKNOWN = '?',\n FUNC_TYPE = 'function',\n UNDEF_TYPE = 'undefined',\n OBJ_TYPE = 'object',\n STR_TYPE = 'string',\n MAJOR = 'major',\n MODEL = 'model',\n NAME = 'name',\n TYPE = 'type',\n VENDOR = 'vendor',\n VERSION = 'version',\n ARCHITECTURE= 'architecture',\n CONSOLE = 'console',\n MOBILE = 'mobile',\n TABLET = 'tablet',\n SMARTTV = 'smarttv',\n WEARABLE = 'wearable',\n EMBEDDED = 'embedded',\n UA_MAX_LENGTH = 500;\n\n var AMAZON = 'Amazon',\n APPLE = 'Apple',\n ASUS = 'ASUS',\n BLACKBERRY = 'BlackBerry',\n BROWSER = 'Browser',\n CHROME = 'Chrome',\n EDGE = 'Edge',\n FIREFOX = 'Firefox',\n GOOGLE = 'Google',\n HUAWEI = 'Huawei',\n LG = 'LG',\n MICROSOFT = 'Microsoft',\n MOTOROLA = 'Motorola',\n OPERA = 'Opera',\n SAMSUNG = 'Samsung',\n SHARP = 'Sharp',\n SONY = 'Sony',\n XIAOMI = 'Xiaomi',\n ZEBRA = 'Zebra',\n FACEBOOK = 'Facebook',\n CHROMIUM_OS = 'Chromium OS',\n MAC_OS = 'Mac OS';\n\n ///////////\n // Helper\n //////////\n\n var extend = function (regexes, extensions) {\n var mergedRegexes = {};\n for (var i in regexes) {\n if (extensions[i] && extensions[i].length % 2 === 0) {\n mergedRegexes[i] = extensions[i].concat(regexes[i]);\n } else {\n mergedRegexes[i] = regexes[i];\n }\n }\n return mergedRegexes;\n },\n enumerize = function (arr) {\n var enums = {};\n for (var i=0; i 0) {\n if (q.length === 2) {\n if (typeof q[1] == FUNC_TYPE) {\n // assign modified match\n this[q[0]] = q[1].call(this, match);\n } else {\n // assign given value, ignore regex match\n this[q[0]] = q[1];\n }\n } else if (q.length === 3) {\n // check whether function or regex\n if (typeof q[1] === FUNC_TYPE && !(q[1].exec && q[1].test)) {\n // call function (usually string mapper)\n this[q[0]] = match ? q[1].call(this, match, q[2]) : undefined;\n } else {\n // sanitize match using given regex\n this[q[0]] = match ? match.replace(q[1], q[2]) : undefined;\n }\n } else if (q.length === 4) {\n this[q[0]] = match ? q[3].call(this, match.replace(q[1], q[2])) : undefined;\n }\n } else {\n this[q] = match ? match : undefined;\n }\n }\n }\n }\n i += 2;\n }\n },\n\n strMapper = function (str, map) {\n\n for (var i in map) {\n // check if current value is array\n if (typeof map[i] === OBJ_TYPE && map[i].length > 0) {\n for (var j = 0; j < map[i].length; j++) {\n if (has(map[i][j], str)) {\n return (i === UNKNOWN) ? undefined : i;\n }\n }\n } else if (has(map[i], str)) {\n return (i === UNKNOWN) ? undefined : i;\n }\n }\n return str;\n };\n\n ///////////////\n // String map\n //////////////\n\n // Safari < 3.0\n var oldSafariMap = {\n '1.0' : '/8',\n '1.2' : '/1',\n '1.3' : '/3',\n '2.0' : '/412',\n '2.0.2' : '/416',\n '2.0.3' : '/417',\n '2.0.4' : '/419',\n '?' : '/'\n },\n windowsVersionMap = {\n 'ME' : '4.90',\n 'NT 3.11' : 'NT3.51',\n 'NT 4.0' : 'NT4.0',\n '2000' : 'NT 5.0',\n 'XP' : ['NT 5.1', 'NT 5.2'],\n 'Vista' : 'NT 6.0',\n '7' : 'NT 6.1',\n '8' : 'NT 6.2',\n '8.1' : 'NT 6.3',\n '10' : ['NT 6.4', 'NT 10.0'],\n 'RT' : 'ARM'\n };\n\n //////////////\n // Regex map\n /////////////\n\n var regexes = {\n\n browser : [[\n\n /\\b(?:crmo|crios)\\/([\\w\\.]+)/i // Chrome for Android/iOS\n ], [VERSION, [NAME, 'Chrome']], [\n /edg(?:e|ios|a)?\\/([\\w\\.]+)/i // Microsoft Edge\n ], [VERSION, [NAME, 'Edge']], [\n\n // Presto based\n /(opera mini)\\/([-\\w\\.]+)/i, // Opera Mini\n /(opera [mobiletab]{3,6})\\b.+version\\/([-\\w\\.]+)/i, // Opera Mobi/Tablet\n /(opera)(?:.+version\\/|[\\/ ]+)([\\w\\.]+)/i // Opera\n ], [NAME, VERSION], [\n /opios[\\/ ]+([\\w\\.]+)/i // Opera mini on iphone >= 8.0\n ], [VERSION, [NAME, OPERA+' Mini']], [\n /\\bopr\\/([\\w\\.]+)/i // Opera Webkit\n ], [VERSION, [NAME, OPERA]], [\n\n // Mixed\n /\\bb[ai]*d(?:uhd|[ub]*[aekoprswx]{5,6})[\\/ ]?([\\w\\.]+)/i // Baidu\n ], [VERSION, [NAME, 'Baidu']], [\n /(kindle)\\/([\\w\\.]+)/i, // Kindle\n /(lunascape|maxthon|netfront|jasmine|blazer)[\\/ ]?([\\w\\.]*)/i, // Lunascape/Maxthon/Netfront/Jasmine/Blazer\n // Trident based\n /(avant|iemobile|slim)\\s?(?:browser)?[\\/ ]?([\\w\\.]*)/i, // Avant/IEMobile/SlimBrowser\n /(?:ms|\\()(ie) ([\\w\\.]+)/i, // Internet Explorer\n\n // Webkit/KHTML based // Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser/QupZilla/Falkon\n /(flock|rockmelt|midori|epiphany|silk|skyfire|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|qq|duckduckgo)\\/([-\\w\\.]+)/i,\n // Rekonq/Puffin/Brave/Whale/QQBrowserLite/QQ, aka ShouQ\n /(heytap|ovi)browser\\/([\\d\\.]+)/i, // Heytap/Ovi\n /(weibo)__([\\d\\.]+)/i // Weibo\n ], [NAME, VERSION], [\n /(?:\\buc? ?browser|(?:juc.+)ucweb)[\\/ ]?([\\w\\.]+)/i // UCBrowser\n ], [VERSION, [NAME, 'UC'+BROWSER]], [\n /microm.+\\bqbcore\\/([\\w\\.]+)/i, // WeChat Desktop for Windows Built-in Browser\n /\\bqbcore\\/([\\w\\.]+).+microm/i,\n /micromessenger\\/([\\w\\.]+)/i // WeChat\n ], [VERSION, [NAME, 'WeChat']], [\n /konqueror\\/([\\w\\.]+)/i // Konqueror\n ], [VERSION, [NAME, 'Konqueror']], [\n /trident.+rv[: ]([\\w\\.]{1,9})\\b.+like gecko/i // IE11\n ], [VERSION, [NAME, 'IE']], [\n /ya(?:search)?browser\\/([\\w\\.]+)/i // Yandex\n ], [VERSION, [NAME, 'Yandex']], [\n /slbrowser\\/([\\w\\.]+)/i // Smart Lenovo Browser\n ], [VERSION, [NAME, 'Smart Lenovo '+BROWSER]], [\n /(avast|avg)\\/([\\w\\.]+)/i // Avast/AVG Secure Browser\n ], [[NAME, /(.+)/, '$1 Secure '+BROWSER], VERSION], [\n /\\bfocus\\/([\\w\\.]+)/i // Firefox Focus\n ], [VERSION, [NAME, FIREFOX+' Focus']], [\n /\\bopt\\/([\\w\\.]+)/i // Opera Touch\n ], [VERSION, [NAME, OPERA+' Touch']], [\n /coc_coc\\w+\\/([\\w\\.]+)/i // Coc Coc Browser\n ], [VERSION, [NAME, 'Coc Coc']], [\n /dolfin\\/([\\w\\.]+)/i // Dolphin\n ], [VERSION, [NAME, 'Dolphin']], [\n /coast\\/([\\w\\.]+)/i // Opera Coast\n ], [VERSION, [NAME, OPERA+' Coast']], [\n /miuibrowser\\/([\\w\\.]+)/i // MIUI Browser\n ], [VERSION, [NAME, 'MIUI '+BROWSER]], [\n /fxios\\/([-\\w\\.]+)/i // Firefox for iOS\n ], [VERSION, [NAME, FIREFOX]], [\n /\\bqihu|(qi?ho?o?|360)browser/i // 360\n ], [[NAME, '360 ' + BROWSER]], [\n /(oculus|sailfish|huawei|vivo)browser\\/([\\w\\.]+)/i\n ], [[NAME, /(.+)/, '$1 ' + BROWSER], VERSION], [ // Oculus/Sailfish/HuaweiBrowser/VivoBrowser\n /samsungbrowser\\/([\\w\\.]+)/i // Samsung Internet\n ], [VERSION, [NAME, SAMSUNG + ' Internet']], [\n /(comodo_dragon)\\/([\\w\\.]+)/i // Comodo Dragon\n ], [[NAME, /_/g, ' '], VERSION], [\n /metasr[\\/ ]?([\\d\\.]+)/i // Sogou Explorer\n ], [VERSION, [NAME, 'Sogou Explorer']], [\n /(sogou)mo\\w+\\/([\\d\\.]+)/i // Sogou Mobile\n ], [[NAME, 'Sogou Mobile'], VERSION], [\n /(electron)\\/([\\w\\.]+) safari/i, // Electron-based App\n /(tesla)(?: qtcarbrowser|\\/(20\\d\\d\\.[-\\w\\.]+))/i, // Tesla\n /m?(qqbrowser|2345Explorer)[\\/ ]?([\\w\\.]+)/i // QQBrowser/2345 Browser\n ], [NAME, VERSION], [\n /(lbbrowser)/i, // LieBao Browser\n /\\[(linkedin)app\\]/i // LinkedIn App for iOS & Android\n ], [NAME], [\n\n // WebView\n /((?:fban\\/fbios|fb_iab\\/fb4a)(?!.+fbav)|;fbav\\/([\\w\\.]+);)/i // Facebook App for iOS & Android\n ], [[NAME, FACEBOOK], VERSION], [\n /(Klarna)\\/([\\w\\.]+)/i, // Klarna Shopping Browser for iOS & Android\n /(kakao(?:talk|story))[\\/ ]([\\w\\.]+)/i, // Kakao App\n /(naver)\\(.*?(\\d+\\.[\\w\\.]+).*\\)/i, // Naver InApp\n /safari (line)\\/([\\w\\.]+)/i, // Line App for iOS\n /\\b(line)\\/([\\w\\.]+)\\/iab/i, // Line App for Android\n /(alipay)client\\/([\\w\\.]+)/i, // Alipay\n /(chromium|instagram|snapchat)[\\/ ]([-\\w\\.]+)/i // Chromium/Instagram/Snapchat\n ], [NAME, VERSION], [\n /\\bgsa\\/([\\w\\.]+) .*safari\\//i // Google Search Appliance on iOS\n ], [VERSION, [NAME, 'GSA']], [\n /musical_ly(?:.+app_?version\\/|_)([\\w\\.]+)/i // TikTok\n ], [VERSION, [NAME, 'TikTok']], [\n\n /headlesschrome(?:\\/([\\w\\.]+)| )/i // Chrome Headless\n ], [VERSION, [NAME, CHROME+' Headless']], [\n\n / wv\\).+(chrome)\\/([\\w\\.]+)/i // Chrome WebView\n ], [[NAME, CHROME+' WebView'], VERSION], [\n\n /droid.+ version\\/([\\w\\.]+)\\b.+(?:mobile safari|safari)/i // Android Browser\n ], [VERSION, [NAME, 'Android '+BROWSER]], [\n\n /(chrome|omniweb|arora|[tizenoka]{5} ?browser)\\/v?([\\w\\.]+)/i // Chrome/OmniWeb/Arora/Tizen/Nokia\n ], [NAME, VERSION], [\n\n /version\\/([\\w\\.\\,]+) .*mobile\\/\\w+ (safari)/i // Mobile Safari\n ], [VERSION, [NAME, 'Mobile Safari']], [\n /version\\/([\\w(\\.|\\,)]+) .*(mobile ?safari|safari)/i // Safari & Safari Mobile\n ], [VERSION, NAME], [\n /webkit.+?(mobile ?safari|safari)(\\/[\\w\\.]+)/i // Safari < 3.0\n ], [NAME, [VERSION, strMapper, oldSafariMap]], [\n\n /(webkit|khtml)\\/([\\w\\.]+)/i\n ], [NAME, VERSION], [\n\n // Gecko based\n /(navigator|netscape\\d?)\\/([-\\w\\.]+)/i // Netscape\n ], [[NAME, 'Netscape'], VERSION], [\n /mobile vr; rv:([\\w\\.]+)\\).+firefox/i // Firefox Reality\n ], [VERSION, [NAME, FIREFOX+' Reality']], [\n /ekiohf.+(flow)\\/([\\w\\.]+)/i, // Flow\n /(swiftfox)/i, // Swiftfox\n /(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror|klar)[\\/ ]?([\\w\\.\\+]+)/i,\n // IceDragon/Iceweasel/Camino/Chimera/Fennec/Maemo/Minimo/Conkeror/Klar\n /(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\\/([-\\w\\.]+)$/i,\n // Firefox/SeaMonkey/K-Meleon/IceCat/IceApe/Firebird/Phoenix\n /(firefox)\\/([\\w\\.]+)/i, // Other Firefox-based\n /(mozilla)\\/([\\w\\.]+) .+rv\\:.+gecko\\/\\d+/i, // Mozilla\n\n // Other\n /(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir|obigo|mosaic|(?:go|ice|up)[\\. ]?browser)[-\\/ ]?v?([\\w\\.]+)/i,\n // Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf/Sleipnir/Obigo/Mosaic/Go/ICE/UP.Browser\n /(links) \\(([\\w\\.]+)/i, // Links\n /panasonic;(viera)/i // Panasonic Viera\n ], [NAME, VERSION], [\n \n /(cobalt)\\/([\\w\\.]+)/i // Cobalt\n ], [NAME, [VERSION, /master.|lts./, \"\"]]\n ],\n\n cpu : [[\n\n /(?:(amd|x(?:(?:86|64)[-_])?|wow|win)64)[;\\)]/i // AMD64 (x64)\n ], [[ARCHITECTURE, 'amd64']], [\n\n /(ia32(?=;))/i // IA32 (quicktime)\n ], [[ARCHITECTURE, lowerize]], [\n\n /((?:i[346]|x)86)[;\\)]/i // IA32 (x86)\n ], [[ARCHITECTURE, 'ia32']], [\n\n /\\b(aarch64|arm(v?8e?l?|_?64))\\b/i // ARM64\n ], [[ARCHITECTURE, 'arm64']], [\n\n /\\b(arm(?:v[67])?ht?n?[fl]p?)\\b/i // ARMHF\n ], [[ARCHITECTURE, 'armhf']], [\n\n // PocketPC mistakenly identified as PowerPC\n /windows (ce|mobile); ppc;/i\n ], [[ARCHITECTURE, 'arm']], [\n\n /((?:ppc|powerpc)(?:64)?)(?: mac|;|\\))/i // PowerPC\n ], [[ARCHITECTURE, /ower/, EMPTY, lowerize]], [\n\n /(sun4\\w)[;\\)]/i // SPARC\n ], [[ARCHITECTURE, 'sparc']], [\n\n /((?:avr32|ia64(?=;))|68k(?=\\))|\\barm(?=v(?:[1-7]|[5-7]1)l?|;|eabi)|(?=atmel )avr|(?:irix|mips|sparc)(?:64)?\\b|pa-risc)/i\n // IA64, 68K, ARM/64, AVR/32, IRIX/64, MIPS/64, SPARC/64, PA-RISC\n ], [[ARCHITECTURE, lowerize]]\n ],\n\n device : [[\n\n //////////////////////////\n // MOBILES & TABLETS\n /////////////////////////\n\n // Samsung\n /\\b(sch-i[89]0\\d|shw-m380s|sm-[ptx]\\w{2,4}|gt-[pn]\\d{2,4}|sgh-t8[56]9|nexus 10)/i\n ], [MODEL, [VENDOR, SAMSUNG], [TYPE, TABLET]], [\n /\\b((?:s[cgp]h|gt|sm)-\\w+|sc[g-]?[\\d]+a?|galaxy nexus)/i,\n /samsung[- ]([-\\w]+)/i,\n /sec-(sgh\\w+)/i\n ], [MODEL, [VENDOR, SAMSUNG], [TYPE, MOBILE]], [\n\n // Apple\n /(?:\\/|\\()(ip(?:hone|od)[\\w, ]*)(?:\\/|;)/i // iPod/iPhone\n ], [MODEL, [VENDOR, APPLE], [TYPE, MOBILE]], [\n /\\((ipad);[-\\w\\),; ]+apple/i, // iPad\n /applecoremedia\\/[\\w\\.]+ \\((ipad)/i,\n /\\b(ipad)\\d\\d?,\\d\\d?[;\\]].+ios/i\n ], [MODEL, [VENDOR, APPLE], [TYPE, TABLET]], [\n /(macintosh);/i\n ], [MODEL, [VENDOR, APPLE]], [\n\n // Sharp\n /\\b(sh-?[altvz]?\\d\\d[a-ekm]?)/i\n ], [MODEL, [VENDOR, SHARP], [TYPE, MOBILE]], [\n\n // Huawei\n /\\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\\d{2})\\b(?!.+d\\/s)/i\n ], [MODEL, [VENDOR, HUAWEI], [TYPE, TABLET]], [\n /(?:huawei|honor)([-\\w ]+)[;\\)]/i,\n /\\b(nexus 6p|\\w{2,4}e?-[atu]?[ln][\\dx][012359c][adn]?)\\b(?!.+d\\/s)/i\n ], [MODEL, [VENDOR, HUAWEI], [TYPE, MOBILE]], [\n\n // Xiaomi\n /\\b(poco[\\w ]+|m2\\d{3}j\\d\\d[a-z]{2})(?: bui|\\))/i, // Xiaomi POCO\n /\\b; (\\w+) build\\/hm\\1/i, // Xiaomi Hongmi 'numeric' models\n /\\b(hm[-_ ]?note?[_ ]?(?:\\d\\w)?) bui/i, // Xiaomi Hongmi\n /\\b(redmi[\\-_ ]?(?:note|k)?[\\w_ ]+)(?: bui|\\))/i, // Xiaomi Redmi\n /oid[^\\)]+; (m?[12][0-389][01]\\w{3,6}[c-y])( bui|; wv|\\))/i, // Xiaomi Redmi 'numeric' models\n /\\b(mi[-_ ]?(?:a\\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\\d?\\w?)[_ ]?(?:plus|se|lite)?)(?: bui|\\))/i // Xiaomi Mi\n ], [[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, MOBILE]], [\n /oid[^\\)]+; (2\\d{4}(283|rpbf)[cgl])( bui|\\))/i, // Redmi Pad\n /\\b(mi[-_ ]?(?:pad)(?:[\\w_ ]+))(?: bui|\\))/i // Mi Pad tablets\n ],[[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, TABLET]], [\n\n // OPPO\n /; (\\w+) bui.+ oppo/i,\n /\\b(cph[12]\\d{3}|p(?:af|c[al]|d\\w|e[ar])[mt]\\d0|x9007|a101op)\\b/i\n ], [MODEL, [VENDOR, 'OPPO'], [TYPE, MOBILE]], [\n\n // Vivo\n /vivo (\\w+)(?: bui|\\))/i,\n /\\b(v[12]\\d{3}\\w?[at])(?: bui|;)/i\n ], [MODEL, [VENDOR, 'Vivo'], [TYPE, MOBILE]], [\n\n // Realme\n /\\b(rmx[1-3]\\d{3})(?: bui|;|\\))/i\n ], [MODEL, [VENDOR, 'Realme'], [TYPE, MOBILE]], [\n\n // Motorola\n /\\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\\b[\\w ]+build\\//i,\n /\\bmot(?:orola)?[- ](\\w*)/i,\n /((?:moto[\\w\\(\\) ]+|xt\\d{3,4}|nexus 6)(?= bui|\\)))/i\n ], [MODEL, [VENDOR, MOTOROLA], [TYPE, MOBILE]], [\n /\\b(mz60\\d|xoom[2 ]{0,2}) build\\//i\n ], [MODEL, [VENDOR, MOTOROLA], [TYPE, TABLET]], [\n\n // LG\n /((?=lg)?[vl]k\\-?\\d{3}) bui| 3\\.[-\\w; ]{10}lg?-([06cv9]{3,4})/i\n ], [MODEL, [VENDOR, LG], [TYPE, TABLET]], [\n /(lm(?:-?f100[nv]?|-[\\w\\.]+)(?= bui|\\))|nexus [45])/i,\n /\\blg[-e;\\/ ]+((?!browser|netcast|android tv)\\w+)/i,\n /\\blg-?([\\d\\w]+) bui/i\n ], [MODEL, [VENDOR, LG], [TYPE, MOBILE]], [\n\n // Lenovo\n /(ideatab[-\\w ]+)/i,\n /lenovo ?(s[56]000[-\\w]+|tab(?:[\\w ]+)|yt[-\\d\\w]{6}|tb[-\\d\\w]{6})/i\n ], [MODEL, [VENDOR, 'Lenovo'], [TYPE, TABLET]], [\n\n // Nokia\n /(?:maemo|nokia).*(n900|lumia \\d+)/i,\n /nokia[-_ ]?([-\\w\\.]*)/i\n ], [[MODEL, /_/g, ' '], [VENDOR, 'Nokia'], [TYPE, MOBILE]], [\n\n // Google\n /(pixel c)\\b/i // Google Pixel C\n ], [MODEL, [VENDOR, GOOGLE], [TYPE, TABLET]], [\n /droid.+; (pixel[\\daxl ]{0,6})(?: bui|\\))/i // Google Pixel\n ], [MODEL, [VENDOR, GOOGLE], [TYPE, MOBILE]], [\n\n // Sony\n /droid.+ (a?\\d[0-2]{2}so|[c-g]\\d{4}|so[-gl]\\w+|xq-a\\w[4-7][12])(?= bui|\\).+chrome\\/(?![1-6]{0,1}\\d\\.))/i\n ], [MODEL, [VENDOR, SONY], [TYPE, MOBILE]], [\n /sony tablet [ps]/i,\n /\\b(?:sony)?sgp\\w+(?: bui|\\))/i\n ], [[MODEL, 'Xperia Tablet'], [VENDOR, SONY], [TYPE, TABLET]], [\n\n // OnePlus\n / (kb2005|in20[12]5|be20[12][59])\\b/i,\n /(?:one)?(?:plus)? (a\\d0\\d\\d)(?: b|\\))/i\n ], [MODEL, [VENDOR, 'OnePlus'], [TYPE, MOBILE]], [\n\n // Amazon\n /(alexa)webm/i,\n /(kf[a-z]{2}wi|aeo[c-r]{2})( bui|\\))/i, // Kindle Fire without Silk / Echo Show\n /(kf[a-z]+)( bui|\\)).+silk\\//i // Kindle Fire HD\n ], [MODEL, [VENDOR, AMAZON], [TYPE, TABLET]], [\n /((?:sd|kf)[0349hijorstuw]+)( bui|\\)).+silk\\//i // Fire Phone\n ], [[MODEL, /(.+)/g, 'Fire Phone $1'], [VENDOR, AMAZON], [TYPE, MOBILE]], [\n\n // BlackBerry\n /(playbook);[-\\w\\),; ]+(rim)/i // BlackBerry PlayBook\n ], [MODEL, VENDOR, [TYPE, TABLET]], [\n /\\b((?:bb[a-f]|st[hv])100-\\d)/i,\n /\\(bb10; (\\w+)/i // BlackBerry 10\n ], [MODEL, [VENDOR, BLACKBERRY], [TYPE, MOBILE]], [\n\n // Asus\n /(?:\\b|asus_)(transfo[prime ]{4,10} \\w+|eeepc|slider \\w+|nexus 7|padfone|p00[cj])/i\n ], [MODEL, [VENDOR, ASUS], [TYPE, TABLET]], [\n / (z[bes]6[027][012][km][ls]|zenfone \\d\\w?)\\b/i\n ], [MODEL, [VENDOR, ASUS], [TYPE, MOBILE]], [\n\n // HTC\n /(nexus 9)/i // HTC Nexus 9\n ], [MODEL, [VENDOR, 'HTC'], [TYPE, TABLET]], [\n /(htc)[-;_ ]{1,2}([\\w ]+(?=\\)| bui)|\\w+)/i, // HTC\n\n // ZTE\n /(zte)[- ]([\\w ]+?)(?: bui|\\/|\\))/i,\n /(alcatel|geeksphone|nexian|panasonic(?!(?:;|\\.))|sony(?!-bra))[-_ ]?([-\\w]*)/i // Alcatel/GeeksPhone/Nexian/Panasonic/Sony\n ], [VENDOR, [MODEL, /_/g, ' '], [TYPE, MOBILE]], [\n\n // Acer\n /droid.+; ([ab][1-7]-?[0178a]\\d\\d?)/i\n ], [MODEL, [VENDOR, 'Acer'], [TYPE, TABLET]], [\n\n // Meizu\n /droid.+; (m[1-5] note) bui/i,\n /\\bmz-([-\\w]{2,})/i\n ], [MODEL, [VENDOR, 'Meizu'], [TYPE, MOBILE]], [\n \n // Ulefone\n /; ((?:power )?armor(?:[\\w ]{0,8}))(?: bui|\\))/i\n ], [MODEL, [VENDOR, 'Ulefone'], [TYPE, MOBILE]], [\n\n // MIXED\n /(blackberry|benq|palm(?=\\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron|infinix|tecno)[-_ ]?([-\\w]*)/i,\n // BlackBerry/BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron\n /(hp) ([\\w ]+\\w)/i, // HP iPAQ\n /(asus)-?(\\w+)/i, // Asus\n /(microsoft); (lumia[\\w ]+)/i, // Microsoft Lumia\n /(lenovo)[-_ ]?([-\\w]+)/i, // Lenovo\n /(jolla)/i, // Jolla\n /(oppo) ?([\\w ]+) bui/i // OPPO\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n\n /(kobo)\\s(ereader|touch)/i, // Kobo\n /(archos) (gamepad2?)/i, // Archos\n /(hp).+(touchpad(?!.+tablet)|tablet)/i, // HP TouchPad\n /(kindle)\\/([\\w\\.]+)/i, // Kindle\n /(nook)[\\w ]+build\\/(\\w+)/i, // Nook\n /(dell) (strea[kpr\\d ]*[\\dko])/i, // Dell Streak\n /(le[- ]+pan)[- ]+(\\w{1,9}) bui/i, // Le Pan Tablets\n /(trinity)[- ]*(t\\d{3}) bui/i, // Trinity Tablets\n /(gigaset)[- ]+(q\\w{1,9}) bui/i, // Gigaset Tablets\n /(vodafone) ([\\w ]+)(?:\\)| bui)/i // Vodafone\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n /(surface duo)/i // Surface Duo\n ], [MODEL, [VENDOR, MICROSOFT], [TYPE, TABLET]], [\n /droid [\\d\\.]+; (fp\\du?)(?: b|\\))/i // Fairphone\n ], [MODEL, [VENDOR, 'Fairphone'], [TYPE, MOBILE]], [\n /(u304aa)/i // AT&T\n ], [MODEL, [VENDOR, 'AT&T'], [TYPE, MOBILE]], [\n /\\bsie-(\\w*)/i // Siemens\n ], [MODEL, [VENDOR, 'Siemens'], [TYPE, MOBILE]], [\n /\\b(rct\\w+) b/i // RCA Tablets\n ], [MODEL, [VENDOR, 'RCA'], [TYPE, TABLET]], [\n /\\b(venue[\\d ]{2,7}) b/i // Dell Venue Tablets\n ], [MODEL, [VENDOR, 'Dell'], [TYPE, TABLET]], [\n /\\b(q(?:mv|ta)\\w+) b/i // Verizon Tablet\n ], [MODEL, [VENDOR, 'Verizon'], [TYPE, TABLET]], [\n /\\b(?:barnes[& ]+noble |bn[rt])([\\w\\+ ]*) b/i // Barnes & Noble Tablet\n ], [MODEL, [VENDOR, 'Barnes & Noble'], [TYPE, TABLET]], [\n /\\b(tm\\d{3}\\w+) b/i\n ], [MODEL, [VENDOR, 'NuVision'], [TYPE, TABLET]], [\n /\\b(k88) b/i // ZTE K Series Tablet\n ], [MODEL, [VENDOR, 'ZTE'], [TYPE, TABLET]], [\n /\\b(nx\\d{3}j) b/i // ZTE Nubia\n ], [MODEL, [VENDOR, 'ZTE'], [TYPE, MOBILE]], [\n /\\b(gen\\d{3}) b.+49h/i // Swiss GEN Mobile\n ], [MODEL, [VENDOR, 'Swiss'], [TYPE, MOBILE]], [\n /\\b(zur\\d{3}) b/i // Swiss ZUR Tablet\n ], [MODEL, [VENDOR, 'Swiss'], [TYPE, TABLET]], [\n /\\b((zeki)?tb.*\\b) b/i // Zeki Tablets\n ], [MODEL, [VENDOR, 'Zeki'], [TYPE, TABLET]], [\n /\\b([yr]\\d{2}) b/i,\n /\\b(dragon[- ]+touch |dt)(\\w{5}) b/i // Dragon Touch Tablet\n ], [[VENDOR, 'Dragon Touch'], MODEL, [TYPE, TABLET]], [\n /\\b(ns-?\\w{0,9}) b/i // Insignia Tablets\n ], [MODEL, [VENDOR, 'Insignia'], [TYPE, TABLET]], [\n /\\b((nxa|next)-?\\w{0,9}) b/i // NextBook Tablets\n ], [MODEL, [VENDOR, 'NextBook'], [TYPE, TABLET]], [\n /\\b(xtreme\\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i // Voice Xtreme Phones\n ], [[VENDOR, 'Voice'], MODEL, [TYPE, MOBILE]], [\n /\\b(lvtel\\-)?(v1[12]) b/i // LvTel Phones\n ], [[VENDOR, 'LvTel'], MODEL, [TYPE, MOBILE]], [\n /\\b(ph-1) /i // Essential PH-1\n ], [MODEL, [VENDOR, 'Essential'], [TYPE, MOBILE]], [\n /\\b(v(100md|700na|7011|917g).*\\b) b/i // Envizen Tablets\n ], [MODEL, [VENDOR, 'Envizen'], [TYPE, TABLET]], [\n /\\b(trio[-\\w\\. ]+) b/i // MachSpeed Tablets\n ], [MODEL, [VENDOR, 'MachSpeed'], [TYPE, TABLET]], [\n /\\btu_(1491) b/i // Rotor Tablets\n ], [MODEL, [VENDOR, 'Rotor'], [TYPE, TABLET]], [\n /(shield[\\w ]+) b/i // Nvidia Shield Tablets\n ], [MODEL, [VENDOR, 'Nvidia'], [TYPE, TABLET]], [\n /(sprint) (\\w+)/i // Sprint Phones\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n /(kin\\.[onetw]{3})/i // Microsoft Kin\n ], [[MODEL, /\\./g, ' '], [VENDOR, MICROSOFT], [TYPE, MOBILE]], [\n /droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\\)/i // Zebra\n ], [MODEL, [VENDOR, ZEBRA], [TYPE, TABLET]], [\n /droid.+; (ec30|ps20|tc[2-8]\\d[kx])\\)/i\n ], [MODEL, [VENDOR, ZEBRA], [TYPE, MOBILE]], [\n\n ///////////////////\n // SMARTTVS\n ///////////////////\n\n /smart-tv.+(samsung)/i // Samsung\n ], [VENDOR, [TYPE, SMARTTV]], [\n /hbbtv.+maple;(\\d+)/i\n ], [[MODEL, /^/, 'SmartTV'], [VENDOR, SAMSUNG], [TYPE, SMARTTV]], [\n /(nux; netcast.+smarttv|lg (netcast\\.tv-201\\d|android tv))/i // LG SmartTV\n ], [[VENDOR, LG], [TYPE, SMARTTV]], [\n /(apple) ?tv/i // Apple TV\n ], [VENDOR, [MODEL, APPLE+' TV'], [TYPE, SMARTTV]], [\n /crkey/i // Google Chromecast\n ], [[MODEL, CHROME+'cast'], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [\n /droid.+aft(\\w+)( bui|\\))/i // Fire TV\n ], [MODEL, [VENDOR, AMAZON], [TYPE, SMARTTV]], [\n /\\(dtv[\\);].+(aquos)/i,\n /(aquos-tv[\\w ]+)\\)/i // Sharp\n ], [MODEL, [VENDOR, SHARP], [TYPE, SMARTTV]],[\n /(bravia[\\w ]+)( bui|\\))/i // Sony\n ], [MODEL, [VENDOR, SONY], [TYPE, SMARTTV]], [\n /(mitv-\\w{5}) bui/i // Xiaomi\n ], [MODEL, [VENDOR, XIAOMI], [TYPE, SMARTTV]], [\n /Hbbtv.*(technisat) (.*);/i // TechniSAT\n ], [VENDOR, MODEL, [TYPE, SMARTTV]], [\n /\\b(roku)[\\dx]*[\\)\\/]((?:dvp-)?[\\d\\.]*)/i, // Roku\n /hbbtv\\/\\d+\\.\\d+\\.\\d+ +\\([\\w\\+ ]*; *([\\w\\d][^;]*);([^;]*)/i // HbbTV devices\n ], [[VENDOR, trim], [MODEL, trim], [TYPE, SMARTTV]], [\n /\\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\\b/i // SmartTV from Unidentified Vendors\n ], [[TYPE, SMARTTV]], [\n\n ///////////////////\n // CONSOLES\n ///////////////////\n\n /(ouya)/i, // Ouya\n /(nintendo) ([wids3utch]+)/i // Nintendo\n ], [VENDOR, MODEL, [TYPE, CONSOLE]], [\n /droid.+; (shield) bui/i // Nvidia\n ], [MODEL, [VENDOR, 'Nvidia'], [TYPE, CONSOLE]], [\n /(playstation [345portablevi]+)/i // Playstation\n ], [MODEL, [VENDOR, SONY], [TYPE, CONSOLE]], [\n /\\b(xbox(?: one)?(?!; xbox))[\\); ]/i // Microsoft Xbox\n ], [MODEL, [VENDOR, MICROSOFT], [TYPE, CONSOLE]], [\n\n ///////////////////\n // WEARABLES\n ///////////////////\n\n /((pebble))app/i // Pebble\n ], [VENDOR, MODEL, [TYPE, WEARABLE]], [\n /(watch)(?: ?os[,\\/]|\\d,\\d\\/)[\\d\\.]+/i // Apple Watch\n ], [MODEL, [VENDOR, APPLE], [TYPE, WEARABLE]], [\n /droid.+; (glass) \\d/i // Google Glass\n ], [MODEL, [VENDOR, GOOGLE], [TYPE, WEARABLE]], [\n /droid.+; (wt63?0{2,3})\\)/i\n ], [MODEL, [VENDOR, ZEBRA], [TYPE, WEARABLE]], [\n /(quest( 2| pro)?)/i // Oculus Quest\n ], [MODEL, [VENDOR, FACEBOOK], [TYPE, WEARABLE]], [\n\n ///////////////////\n // EMBEDDED\n ///////////////////\n\n /(tesla)(?: qtcarbrowser|\\/[-\\w\\.]+)/i // Tesla\n ], [VENDOR, [TYPE, EMBEDDED]], [\n /(aeobc)\\b/i // Echo Dot\n ], [MODEL, [VENDOR, AMAZON], [TYPE, EMBEDDED]], [\n\n ////////////////////\n // MIXED (GENERIC)\n ///////////////////\n\n /droid .+?; ([^;]+?)(?: bui|; wv\\)|\\) applew).+? mobile safari/i // Android Phones from Unidentified Vendors\n ], [MODEL, [TYPE, MOBILE]], [\n /droid .+?; ([^;]+?)(?: bui|\\) applew).+?(?! mobile) safari/i // Android Tablets from Unidentified Vendors\n ], [MODEL, [TYPE, TABLET]], [\n /\\b((tablet|tab)[;\\/]|focus\\/\\d(?!.+mobile))/i // Unidentifiable Tablet\n ], [[TYPE, TABLET]], [\n /(phone|mobile(?:[;\\/]| [ \\w\\/\\.]*safari)|pda(?=.+windows ce))/i // Unidentifiable Mobile\n ], [[TYPE, MOBILE]], [\n /(android[-\\w\\. ]{0,9});.+buil/i // Generic Android Device\n ], [MODEL, [VENDOR, 'Generic']]\n ],\n\n engine : [[\n\n /windows.+ edge\\/([\\w\\.]+)/i // EdgeHTML\n ], [VERSION, [NAME, EDGE+'HTML']], [\n\n /webkit\\/537\\.36.+chrome\\/(?!27)([\\w\\.]+)/i // Blink\n ], [VERSION, [NAME, 'Blink']], [\n\n /(presto)\\/([\\w\\.]+)/i, // Presto\n /(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\\/([\\w\\.]+)/i, // WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m/Goanna\n /ekioh(flow)\\/([\\w\\.]+)/i, // Flow\n /(khtml|tasman|links)[\\/ ]\\(?([\\w\\.]+)/i, // KHTML/Tasman/Links\n /(icab)[\\/ ]([23]\\.[\\d\\.]+)/i, // iCab\n /\\b(libweb)/i\n ], [NAME, VERSION], [\n\n /rv\\:([\\w\\.]{1,9})\\b.+(gecko)/i // Gecko\n ], [VERSION, NAME]\n ],\n\n os : [[\n\n // Windows\n /microsoft (windows) (vista|xp)/i // Windows (iTunes)\n ], [NAME, VERSION], [\n /(windows (?:phone(?: os)?|mobile))[\\/ ]?([\\d\\.\\w ]*)/i // Windows Phone\n ], [NAME, [VERSION, strMapper, windowsVersionMap]], [\n /windows nt 6\\.2; (arm)/i, // Windows RT\n /windows[\\/ ]?([ntce\\d\\. ]+\\w)(?!.+xbox)/i,\n /(?:win(?=3|9|n)|win 9x )([nt\\d\\.]+)/i\n ], [[VERSION, strMapper, windowsVersionMap], [NAME, 'Windows']], [\n\n // iOS/macOS\n /ip[honead]{2,4}\\b(?:.*os ([\\w]+) like mac|; opera)/i, // iOS\n /(?:ios;fbsv\\/|iphone.+ios[\\/ ])([\\d\\.]+)/i,\n /cfnetwork\\/.+darwin/i\n ], [[VERSION, /_/g, '.'], [NAME, 'iOS']], [\n /(mac os x) ?([\\w\\. ]*)/i,\n /(macintosh|mac_powerpc\\b)(?!.+haiku)/i // Mac OS\n ], [[NAME, MAC_OS], [VERSION, /_/g, '.']], [\n\n // Mobile OSes\n /droid ([\\w\\.]+)\\b.+(android[- ]x86|harmonyos)/i // Android-x86/HarmonyOS\n ], [VERSION, NAME], [ // Android/WebOS/QNX/Bada/RIM/Maemo/MeeGo/Sailfish OS\n /(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish)[-\\/ ]?([\\w\\.]*)/i,\n /(blackberry)\\w*\\/([\\w\\.]*)/i, // Blackberry\n /(tizen|kaios)[\\/ ]([\\w\\.]+)/i, // Tizen/KaiOS\n /\\((series40);/i // Series 40\n ], [NAME, VERSION], [\n /\\(bb(10);/i // BlackBerry 10\n ], [VERSION, [NAME, BLACKBERRY]], [\n /(?:symbian ?os|symbos|s60(?=;)|series60)[-\\/ ]?([\\w\\.]*)/i // Symbian\n ], [VERSION, [NAME, 'Symbian']], [\n /mozilla\\/[\\d\\.]+ \\((?:mobile|tablet|tv|mobile; [\\w ]+); rv:.+ gecko\\/([\\w\\.]+)/i // Firefox OS\n ], [VERSION, [NAME, FIREFOX+' OS']], [\n /web0s;.+rt(tv)/i,\n /\\b(?:hp)?wos(?:browser)?\\/([\\w\\.]+)/i // WebOS\n ], [VERSION, [NAME, 'webOS']], [\n /watch(?: ?os[,\\/]|\\d,\\d\\/)([\\d\\.]+)/i // watchOS\n ], [VERSION, [NAME, 'watchOS']], [\n\n // Google Chromecast\n /crkey\\/([\\d\\.]+)/i // Google Chromecast\n ], [VERSION, [NAME, CHROME+'cast']], [\n /(cros) [\\w]+(?:\\)| ([\\w\\.]+)\\b)/i // Chromium OS\n ], [[NAME, CHROMIUM_OS], VERSION],[\n\n // Smart TVs\n /panasonic;(viera)/i, // Panasonic Viera\n /(netrange)mmh/i, // Netrange\n /(nettv)\\/(\\d+\\.[\\w\\.]+)/i, // NetTV\n\n // Console\n /(nintendo|playstation) ([wids345portablevuch]+)/i, // Nintendo/Playstation\n /(xbox); +xbox ([^\\);]+)/i, // Microsoft Xbox (360, One, X, S, Series X, Series S)\n\n // Other\n /\\b(joli|palm)\\b ?(?:os)?\\/?([\\w\\.]*)/i, // Joli/Palm\n /(mint)[\\/\\(\\) ]?(\\w*)/i, // Mint\n /(mageia|vectorlinux)[; ]/i, // Mageia/VectorLinux\n /([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\\/ ]?(?!chrom|package)([-\\w\\.]*)/i,\n // Ubuntu/Debian/SUSE/Gentoo/Arch/Slackware/Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Linpus/Raspbian/Plan9/Minix/RISCOS/Contiki/Deepin/Manjaro/elementary/Sabayon/Linspire\n /(hurd|linux) ?([\\w\\.]*)/i, // Hurd/Linux\n /(gnu) ?([\\w\\.]*)/i, // GNU\n /\\b([-frentopcghs]{0,5}bsd|dragonfly)[\\/ ]?(?!amd|[ix346]{1,2}86)([\\w\\.]*)/i, // FreeBSD/NetBSD/OpenBSD/PC-BSD/GhostBSD/DragonFly\n /(haiku) (\\w+)/i // Haiku\n ], [NAME, VERSION], [\n /(sunos) ?([\\w\\.\\d]*)/i // Solaris\n ], [[NAME, 'Solaris'], VERSION], [\n /((?:open)?solaris)[-\\/ ]?([\\w\\.]*)/i, // Solaris\n /(aix) ((\\d)(?=\\.|\\)| )[\\w\\.])*/i, // AIX\n /\\b(beos|os\\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i, // BeOS/OS2/AmigaOS/MorphOS/OpenVMS/Fuchsia/HP-UX/SerenityOS\n /(unix) ?([\\w\\.]*)/i // UNIX\n ], [NAME, VERSION]\n ]\n };\n\n /////////////////\n // Constructor\n ////////////////\n\n var UAParser = function (ua, extensions) {\n\n if (typeof ua === OBJ_TYPE) {\n extensions = ua;\n ua = undefined;\n }\n\n if (!(this instanceof UAParser)) {\n return new UAParser(ua, extensions).getResult();\n }\n\n var _navigator = (typeof window !== UNDEF_TYPE && window.navigator) ? window.navigator : undefined;\n var _ua = ua || ((_navigator && _navigator.userAgent) ? _navigator.userAgent : EMPTY);\n var _uach = (_navigator && _navigator.userAgentData) ? _navigator.userAgentData : undefined;\n var _rgxmap = extensions ? extend(regexes, extensions) : regexes;\n var _isSelfNav = _navigator && _navigator.userAgent == _ua;\n\n this.getBrowser = function () {\n var _browser = {};\n _browser[NAME] = undefined;\n _browser[VERSION] = undefined;\n rgxMapper.call(_browser, _ua, _rgxmap.browser);\n _browser[MAJOR] = majorize(_browser[VERSION]);\n // Brave-specific detection\n if (_isSelfNav && _navigator && _navigator.brave && typeof _navigator.brave.isBrave == FUNC_TYPE) {\n _browser[NAME] = 'Brave';\n }\n return _browser;\n };\n this.getCPU = function () {\n var _cpu = {};\n _cpu[ARCHITECTURE] = undefined;\n rgxMapper.call(_cpu, _ua, _rgxmap.cpu);\n return _cpu;\n };\n this.getDevice = function () {\n var _device = {};\n _device[VENDOR] = undefined;\n _device[MODEL] = undefined;\n _device[TYPE] = undefined;\n rgxMapper.call(_device, _ua, _rgxmap.device);\n if (_isSelfNav && !_device[TYPE] && _uach && _uach.mobile) {\n _device[TYPE] = MOBILE;\n }\n // iPadOS-specific detection: identified as Mac, but has some iOS-only properties\n if (_isSelfNav && _device[MODEL] == 'Macintosh' && _navigator && typeof _navigator.standalone !== UNDEF_TYPE && _navigator.maxTouchPoints && _navigator.maxTouchPoints > 2) {\n _device[MODEL] = 'iPad';\n _device[TYPE] = TABLET;\n }\n return _device;\n };\n this.getEngine = function () {\n var _engine = {};\n _engine[NAME] = undefined;\n _engine[VERSION] = undefined;\n rgxMapper.call(_engine, _ua, _rgxmap.engine);\n return _engine;\n };\n this.getOS = function () {\n var _os = {};\n _os[NAME] = undefined;\n _os[VERSION] = undefined;\n rgxMapper.call(_os, _ua, _rgxmap.os);\n if (_isSelfNav && !_os[NAME] && _uach && _uach.platform != 'Unknown') {\n _os[NAME] = _uach.platform \n .replace(/chrome os/i, CHROMIUM_OS)\n .replace(/macos/i, MAC_OS); // backward compatibility\n }\n return _os;\n };\n this.getResult = function () {\n return {\n ua : this.getUA(),\n browser : this.getBrowser(),\n engine : this.getEngine(),\n os : this.getOS(),\n device : this.getDevice(),\n cpu : this.getCPU()\n };\n };\n this.getUA = function () {\n return _ua;\n };\n this.setUA = function (ua) {\n _ua = (typeof ua === STR_TYPE && ua.length > UA_MAX_LENGTH) ? trim(ua, UA_MAX_LENGTH) : ua;\n return this;\n };\n this.setUA(_ua);\n return this;\n };\n\n UAParser.VERSION = LIBVERSION;\n UAParser.BROWSER = enumerize([NAME, VERSION, MAJOR]);\n UAParser.CPU = enumerize([ARCHITECTURE]);\n UAParser.DEVICE = enumerize([MODEL, VENDOR, TYPE, CONSOLE, MOBILE, SMARTTV, TABLET, WEARABLE, EMBEDDED]);\n UAParser.ENGINE = UAParser.OS = enumerize([NAME, VERSION]);\n\n ///////////\n // Export\n //////////\n\n // check js environment\n if (typeof(exports) !== UNDEF_TYPE) {\n // nodejs env\n if (typeof module !== UNDEF_TYPE && module.exports) {\n exports = module.exports = UAParser;\n }\n exports.UAParser = UAParser;\n } else {\n // requirejs env (optional)\n if (typeof(define) === FUNC_TYPE && define.amd) {\n define(function () {\n return UAParser;\n });\n } else if (typeof window !== UNDEF_TYPE) {\n // browser env\n window.UAParser = UAParser;\n }\n }\n\n // jQuery/Zepto specific (optional)\n // Note:\n // In AMD env the global scope should be kept clean, but jQuery is an exception.\n // jQuery always exports to global scope, unless jQuery.noConflict(true) is used,\n // and we should catch that.\n var $ = typeof window !== UNDEF_TYPE && (window.jQuery || window.Zepto);\n if ($ && !$.ua) {\n var parser = new UAParser();\n $.ua = parser.getResult();\n $.ua.get = function () {\n return parser.getUA();\n };\n $.ua.set = function (ua) {\n parser.setUA(ua);\n var result = parser.getResult();\n for (var prop in result) {\n $.ua[prop] = result[prop];\n }\n };\n }\n\n})(typeof window === 'object' ? window : this);\n","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nlet getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nexport function unsafeStringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]];\n}\n\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default {\n randomUUID\n};","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\n\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n\n options = options || {};\n const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return unsafeStringify(rnds);\n}\n\nexport default v4;","\nimport { v4 as uuidv4 } from \"uuid\";\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport namespace objUtil {\n export const isStrNullOrUndefined = (data?: string | null | undefined) => {\n return data === null || data === undefined || data?.trim()?.length === 0 || data?.trim() === '';\n }\n\n export const isNullOrEmpty = isStrNullOrUndefined;\n\n export const isObjNullOrUndefined = (data?: object | null | undefined): boolean => {\n return data === null || data === undefined;\n }\n export const isNumNullOrUndefined = (data?: number | null | undefined): boolean => {\n return data === null || data === undefined;\n }\n\n export const uuidStr = (): string => {\n return uuidv4();\n }\n\n}\n\n\n","import {UAParser} from \"ua-parser-js\";\nimport {typeUtil} from \"./typeUtils\";\nimport {objUtil} from \"./objectUtils\";\ntype StringOrUndefined=typeUtil.StringOrUndefined;\nconst isStrNullOrUndefined=objUtil.isStrNullOrUndefined;\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport namespace deviceUtil {\n\n\n export const isMobileExt = (userAgent?: string | null | undefined): boolean => {\n return /Mobile|Mobi|iP(hone|od)|Android|BlackBerry|IEMobile|Kindle|NetFront|Silk-Accelerated|(hpw|web)OS|Fennec|Minimo|Opera M(obi|ini)|Blazer|Dolfin|Dolphin|Skyfire|Zune/i.test(userAgent ?? navigator.userAgent);\n };\n\n export enum DeviceTypeEnum {\n desktop = 'desktop',\n mobile = 'mobile',\n tablet = 'tablet',\n phone = 'phone',\n smarttv = 'smarttv'\n }\n\n export type DeviceTypeArray = Array\n\n export class DeviceTypeInfo {\n\n\n constructor() {\n const uaParser = new UAParser(window?.navigator?.userAgent);\n const ua = uaParser.getResult();\n this.model = ua.device?.model;\n this.vendor = ua.device?.vendor;\n this.osName = ua.os?.name;\n this.osVersion = ua.os?.version;\n this.type = ua.device?.type;\n if (isStrNullOrUndefined(this.type)) {\n if (isMobileExt()) {\n this.type = DeviceTypeEnum.mobile;\n } else {\n this.type = DeviceTypeEnum.desktop;\n }\n }\n\n }\n type: StringOrUndefined | DeviceTypeEnum;\n model: StringOrUndefined;\n vendor: StringOrUndefined;\n osName: StringOrUndefined;\n osVersion: StringOrUndefined;\n\n isDesktop():boolean{\n const type=this.type ?? DeviceTypeEnum.mobile;\n const result=DeviceTypeInfo.desktopDevices.some(q=>q === type)\n return result;\n }\n isMobile():boolean{\n const type=this.type ?? DeviceTypeEnum.mobile;\n const result=DeviceTypeInfo.mobileDevices.some(q=>q === type)\n return result;\n }\n\n\n public static readonly desktopDevices = [DeviceTypeEnum.desktop, DeviceTypeEnum.tablet, DeviceTypeEnum.smarttv];\n public static readonly mobileDevices = [DeviceTypeEnum.mobile, DeviceTypeEnum.phone];\n public static readonly allDevices = [\n DeviceTypeEnum.mobile,DeviceTypeEnum.phone,\n DeviceTypeEnum.desktop, DeviceTypeEnum.tablet,DeviceTypeEnum.smarttv\n ];\n\n\n }\n\n //export const deviceTypeInfo = new DeviceTypeInfo();\n\n}\n\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport namespace logUtil {\n let isLoggerActive: boolean | undefined;\n const consoleBold = \"font-weight: bold\";\n const consoleNormal = \"font-weight: normal\";\n\n\n let _logPrefix = \"domain-client\";\n export const isDebug = (): boolean => {\n if (isLoggerActive != null) return isLoggerActive;\n isLoggerActive = window.location?.search?.indexOf(\"debug=true\") > 0;\n return isLoggerActive;\n }\n export const setLogPrefix = (prefix: string) => {\n _logPrefix = prefix;\n isDebug();\n }\n setLogPrefix(_logPrefix);\n\n \n\n // export const consoleLog = (message: any, ...data: any[]) => {\n // if (logger) {\n // console?.log(`%c${_logPrefix}%c`, consoleBold, consoleNormal, message, data);\n // }\n // }\n export const consoleLog = (...data:any) => {\n if (isLoggerActive) {\n console?.log(`%c${_logPrefix}%c`, consoleBold, consoleNormal,...data);\n } \n }\n\n export const consoleWarn = (...data: any) => {\n console?.warn(`%c${_logPrefix}%c`, consoleBold, consoleNormal, ...data)\n }\n\n export const consoleError = (...data: any) => {\n console?.error(`%c${_logPrefix}%c`, consoleBold, consoleNormal, ...data)\n }\n\n export const throwError = (message: string) => {\n throw new Error(message);\n\n }\n export const throwEvalError = (message: string) => {\n throw new EvalError(message);\n\n }\n\n}\n\n\n\n","// eslint-disable-next-line @typescript-eslint/no-namespace\nexport namespace numUtil {\n export const getRandomInt = (): number => {\n return new Date().getTime() | 0;\n };\n}\n\n\n\n\n\n","// eslint-disable-next-line @typescript-eslint/no-namespace\nexport namespace typeUtil {\n export type CallbackFunction = () => void;\n export type InitFunction = () => void;\n export type StringOrUndefined = string | undefined;\n export type NumberOrUndefined = number | undefined;\n\n export interface IObjectIndexer {\n [key: string]: T;\n }\n\n export class ObjectIndexer implements IObjectIndexer {\n [key: string]: T;\n }\n}\n\n\n\n\n\n\n","import {objUtil} from \"./objectUtils\"\nimport { typeUtil } from \"./typeUtils\";\ntype StringOrUndefined= typeUtil.StringOrUndefined;\nconst isNullOrEmpty=objUtil.isNullOrEmpty;\n\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport namespace urlUtil {\n export const getUrlQueryStringValue = (name: string): StringOrUndefined => {\n const urlParams = new URLSearchParams(window.location.search)\n const data = urlParams.get(name);\n return data ? data : undefined;\n\n }\n export const getWindowUrlString = (): StringOrUndefined => {\n\n return window?.location?.toString();\n }\n\n export const getDocumentReferrer = (): StringOrUndefined => {\n const data = document?.referrer;\n return isNullOrEmpty(data) ? undefined : data;\n }\n\n export const getHostNameFromUrl = (): StringOrUndefined => {\n return window?.location?.host\n }\n\n export const getUrlQueryStringValues = (names: Array): Map => {\n const urlParams = new URLSearchParams(window.location.search)\n const result = new Map();\n names.map(q => {\n const data = urlParams.get(q);\n result.set(q, data ? data : undefined);\n })\n return result;\n }\n export const getUrlQueryStringAllParams = (): Map => {\n const result = new Map();\n const urlParams = new URLSearchParams(window.location.search)\n for (const [key, value] of urlParams) {\n result.set(key, value);\n }\n return result;\n }\n}","\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport namespace dateUtil{\n\nexport class DateTimeHelper {\n public getTimeStamp(){\n return new Date().getTime();\n }\n\n}\n\nexport const dateTime=new DateTimeHelper();\n}","// eslint-disable-next-line @typescript-eslint/no-namespace\nexport namespace pageUtil {\n export enum PageTypeEnum {\n noPageType = \"no-page-type\",\n index = 'index',\n allPosts = 'all-posts',\n postDetail = 'post',\n loadMorePost = 'load-more-post',\n authorPost = 'author-post',\n tag = 'tag',\n astrologyIndex = 'astrology-index',\n astrologyAstrologyHoroscopeReview = 'astrology-horoscope-review',\n breakingNews = 'breaking-news',\n category = 'category',\n authors = 'authors',\n authorArchive = 'author-archive',\n page = 'page',\n election = 'election',\n contract = 'contract',\n financeIndex = 'finance-index',\n financeForex = 'finance-forex',\n financeSubPage = 'finance-subpages',\n sportIndexPage = 'sport-index',\n sportSubPage = 'sport-subpages',\n dynamicPage = 'dynamic-page',\n eNewsPaper = 'enewspaper-page',\n epg = 'epg-page',//electronic program guide page\n program = 'program',\n liveStream = 'live-stream'\n\n }\n\n export type PageTypeArray = Array;\n}","// eslint-disable-next-line @typescript-eslint/no-namespace\nexport namespace cookieUtil {\n export class CookieHelper {\n public doesCookieExists(cookieName: string) {\n const cookies = document.cookie.split(';');\n for (let i = 0; i < cookies.length; i++) {\n const cookie = cookies[i].trim();\n if (cookie.startsWith(cookieName + '=')) {\n return true;\n }\n }\n return false;\n }\n\n }\n\n export const cookieHelper = new CookieHelper();\n}\n\n\n\n","import axios from \"axios\";\nimport { logUtil as logger } from \"@repo/lib-common\";\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport namespace httpUtil {\n export type HttpResponseCallbackFunction = (response: object) => void;\n export type HttpErrorCallbackFunction = (error: object) => void;\n\n export enum ContentTypeEnum {\n json = \"application/json\",\n formUrlEncoded = \"application/x-www-form-urlencoded\"\n }\n\n export function httpPost({ url, data, contentType = ContentTypeEnum.json, responseCallBack, errorCallBack }: {\n url: string,\n data: object,\n contentType?: ContentTypeEnum,\n responseCallBack?: HttpResponseCallbackFunction,\n errorCallBack?: HttpErrorCallbackFunction\n }) {\n logger.consoleLog(\"http request started\", url, contentType, data)\n axios.post(url, data,\n { headers: { 'content-type': contentType } }\n ).then((response) => {\n logger.consoleLog(data, \"=> response =>\", response);\n if (responseCallBack) {\n responseCallBack(response);\n }\n }).catch(error => {\n logger.consoleLog(error);\n if (errorCallBack) {\n errorCallBack(error);\n }\n });\n\n }\n\n export function httpPostPromise({ url, data, contentType = ContentTypeEnum.json }: {\n url: string,\n data: object,\n contentType?: ContentTypeEnum\n }) {\n logger.consoleLog(\"http request started\", url, contentType, data)\n return axios.post(url, data,\n { headers: { 'content-type': contentType } }\n );\n }\n\n export function httpGet({ url, data, contentType = ContentTypeEnum.json, responseCallBack, errorCallBack }: {\n url: string,\n data: object,\n contentType?: ContentTypeEnum,\n responseCallBack?: HttpResponseCallbackFunction,\n errorCallBack?: HttpResponseCallbackFunction\n }) {\n logger.consoleLog(\"http request started\", url, contentType, data)\n axios.get(url,\n { headers: { 'content-type': contentType } }\n ).then((response) => {\n logger.consoleLog(data, \"=> response =>\", response);\n if (responseCallBack) {\n responseCallBack(response);\n }\n }).catch(error => {\n logger.consoleLog(error);\n if (errorCallBack) {\n errorCallBack(error);\n }\n });\n }\n\n}","import moment from \"moment\";\n\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport namespace momentUtil{\n\nexport class DateTimeHelper {\n currentTime: moment.Moment;\n\n constructor() {\n this.currentTime = moment();\n }\n\n public getTimeStamp(){\n return new Date().getTime();\n }\n\n\n\n public now() {\n this.currentTime = moment();\n return this;\n\n }\n public toIsoString(keepOffset:boolean=true){\n return this.currentTime.toISOString(keepOffset);\n }\n\n public addMinutes(minutes:number){\n this.currentTime.add(minutes, \"minutes\");\n return this;\n }\n public addHours(hours:number){\n this.currentTime.add(hours,\"hours\");\n return this;\n }\n public addDays(days:number){\n this.currentTime.add(days,\"days\");\n return this;\n }\n}\n\nexport const dateTime=new DateTimeHelper();\n}","/*\n * [js-sha1]{@link https://github.com/emn178/js-sha1}\n *\n * @version 0.6.0\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2014-2017\n * @license MIT\n */\n/*jslint bitwise: true */\n(function() {\n 'use strict';\n\n var root = typeof window === 'object' ? window : {};\n var NODE_JS = !root.JS_SHA1_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\n if (NODE_JS) {\n root = global;\n }\n var COMMON_JS = !root.JS_SHA1_NO_COMMON_JS && typeof module === 'object' && module.exports;\n var AMD = typeof define === 'function' && define.amd;\n var HEX_CHARS = '0123456789abcdef'.split('');\n var EXTRA = [-2147483648, 8388608, 32768, 128];\n var SHIFT = [24, 16, 8, 0];\n var OUTPUT_TYPES = ['hex', 'array', 'digest', 'arrayBuffer'];\n\n var blocks = [];\n\n var createOutputMethod = function (outputType) {\n return function (message) {\n return new Sha1(true).update(message)[outputType]();\n };\n };\n\n var createMethod = function () {\n var method = createOutputMethod('hex');\n if (NODE_JS) {\n method = nodeWrap(method);\n }\n method.create = function () {\n return new Sha1();\n };\n method.update = function (message) {\n return method.create().update(message);\n };\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createOutputMethod(type);\n }\n return method;\n };\n\n var nodeWrap = function (method) {\n var crypto = eval(\"require('crypto')\");\n var Buffer = eval(\"require('buffer').Buffer\");\n var nodeMethod = function (message) {\n if (typeof message === 'string') {\n return crypto.createHash('sha1').update(message, 'utf8').digest('hex');\n } else if (message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n } else if (message.length === undefined) {\n return method(message);\n }\n return crypto.createHash('sha1').update(new Buffer(message)).digest('hex');\n };\n return nodeMethod;\n };\n\n function Sha1(sharedMemory) {\n if (sharedMemory) {\n blocks[0] = blocks[16] = blocks[1] = blocks[2] = blocks[3] =\n blocks[4] = blocks[5] = blocks[6] = blocks[7] =\n blocks[8] = blocks[9] = blocks[10] = blocks[11] =\n blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n this.blocks = blocks;\n } else {\n this.blocks = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n }\n\n this.h0 = 0x67452301;\n this.h1 = 0xEFCDAB89;\n this.h2 = 0x98BADCFE;\n this.h3 = 0x10325476;\n this.h4 = 0xC3D2E1F0;\n\n this.block = this.start = this.bytes = this.hBytes = 0;\n this.finalized = this.hashed = false;\n this.first = true;\n }\n\n Sha1.prototype.update = function (message) {\n if (this.finalized) {\n return;\n }\n var notString = typeof(message) !== 'string';\n if (notString && message.constructor === root.ArrayBuffer) {\n message = new Uint8Array(message);\n }\n var code, index = 0, i, length = message.length || 0, blocks = this.blocks;\n\n while (index < length) {\n if (this.hashed) {\n this.hashed = false;\n blocks[0] = this.block;\n blocks[16] = blocks[1] = blocks[2] = blocks[3] =\n blocks[4] = blocks[5] = blocks[6] = blocks[7] =\n blocks[8] = blocks[9] = blocks[10] = blocks[11] =\n blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n }\n\n if(notString) {\n for (i = this.start; index < length && i < 64; ++index) {\n blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\n }\n } else {\n for (i = this.start; index < length && i < 64; ++index) {\n code = message.charCodeAt(index);\n if (code < 0x80) {\n blocks[i >> 2] |= code << SHIFT[i++ & 3];\n } else if (code < 0x800) {\n blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else if (code < 0xd800 || code >= 0xe000) {\n blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\n blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n }\n }\n }\n\n this.lastByteIndex = i;\n this.bytes += i - this.start;\n if (i >= 64) {\n this.block = blocks[16];\n this.start = i - 64;\n this.hash();\n this.hashed = true;\n } else {\n this.start = i;\n }\n }\n if (this.bytes > 4294967295) {\n this.hBytes += this.bytes / 4294967296 << 0;\n this.bytes = this.bytes % 4294967296;\n }\n return this;\n };\n\n Sha1.prototype.finalize = function () {\n if (this.finalized) {\n return;\n }\n this.finalized = true;\n var blocks = this.blocks, i = this.lastByteIndex;\n blocks[16] = this.block;\n blocks[i >> 2] |= EXTRA[i & 3];\n this.block = blocks[16];\n if (i >= 56) {\n if (!this.hashed) {\n this.hash();\n }\n blocks[0] = this.block;\n blocks[16] = blocks[1] = blocks[2] = blocks[3] =\n blocks[4] = blocks[5] = blocks[6] = blocks[7] =\n blocks[8] = blocks[9] = blocks[10] = blocks[11] =\n blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n }\n blocks[14] = this.hBytes << 3 | this.bytes >>> 29;\n blocks[15] = this.bytes << 3;\n this.hash();\n };\n\n Sha1.prototype.hash = function () {\n var a = this.h0, b = this.h1, c = this.h2, d = this.h3, e = this.h4;\n var f, j, t, blocks = this.blocks;\n\n for(j = 16; j < 80; ++j) {\n t = blocks[j - 3] ^ blocks[j - 8] ^ blocks[j - 14] ^ blocks[j - 16];\n blocks[j] = (t << 1) | (t >>> 31);\n }\n\n for(j = 0; j < 20; j += 5) {\n f = (b & c) | ((~b) & d);\n t = (a << 5) | (a >>> 27);\n e = t + f + e + 1518500249 + blocks[j] << 0;\n b = (b << 30) | (b >>> 2);\n\n f = (a & b) | ((~a) & c);\n t = (e << 5) | (e >>> 27);\n d = t + f + d + 1518500249 + blocks[j + 1] << 0;\n a = (a << 30) | (a >>> 2);\n\n f = (e & a) | ((~e) & b);\n t = (d << 5) | (d >>> 27);\n c = t + f + c + 1518500249 + blocks[j + 2] << 0;\n e = (e << 30) | (e >>> 2);\n\n f = (d & e) | ((~d) & a);\n t = (c << 5) | (c >>> 27);\n b = t + f + b + 1518500249 + blocks[j + 3] << 0;\n d = (d << 30) | (d >>> 2);\n\n f = (c & d) | ((~c) & e);\n t = (b << 5) | (b >>> 27);\n a = t + f + a + 1518500249 + blocks[j + 4] << 0;\n c = (c << 30) | (c >>> 2);\n }\n\n for(; j < 40; j += 5) {\n f = b ^ c ^ d;\n t = (a << 5) | (a >>> 27);\n e = t + f + e + 1859775393 + blocks[j] << 0;\n b = (b << 30) | (b >>> 2);\n\n f = a ^ b ^ c;\n t = (e << 5) | (e >>> 27);\n d = t + f + d + 1859775393 + blocks[j + 1] << 0;\n a = (a << 30) | (a >>> 2);\n\n f = e ^ a ^ b;\n t = (d << 5) | (d >>> 27);\n c = t + f + c + 1859775393 + blocks[j + 2] << 0;\n e = (e << 30) | (e >>> 2);\n\n f = d ^ e ^ a;\n t = (c << 5) | (c >>> 27);\n b = t + f + b + 1859775393 + blocks[j + 3] << 0;\n d = (d << 30) | (d >>> 2);\n\n f = c ^ d ^ e;\n t = (b << 5) | (b >>> 27);\n a = t + f + a + 1859775393 + blocks[j + 4] << 0;\n c = (c << 30) | (c >>> 2);\n }\n\n for(; j < 60; j += 5) {\n f = (b & c) | (b & d) | (c & d);\n t = (a << 5) | (a >>> 27);\n e = t + f + e - 1894007588 + blocks[j] << 0;\n b = (b << 30) | (b >>> 2);\n\n f = (a & b) | (a & c) | (b & c);\n t = (e << 5) | (e >>> 27);\n d = t + f + d - 1894007588 + blocks[j + 1] << 0;\n a = (a << 30) | (a >>> 2);\n\n f = (e & a) | (e & b) | (a & b);\n t = (d << 5) | (d >>> 27);\n c = t + f + c - 1894007588 + blocks[j + 2] << 0;\n e = (e << 30) | (e >>> 2);\n\n f = (d & e) | (d & a) | (e & a);\n t = (c << 5) | (c >>> 27);\n b = t + f + b - 1894007588 + blocks[j + 3] << 0;\n d = (d << 30) | (d >>> 2);\n\n f = (c & d) | (c & e) | (d & e);\n t = (b << 5) | (b >>> 27);\n a = t + f + a - 1894007588 + blocks[j + 4] << 0;\n c = (c << 30) | (c >>> 2);\n }\n\n for(; j < 80; j += 5) {\n f = b ^ c ^ d;\n t = (a << 5) | (a >>> 27);\n e = t + f + e - 899497514 + blocks[j] << 0;\n b = (b << 30) | (b >>> 2);\n\n f = a ^ b ^ c;\n t = (e << 5) | (e >>> 27);\n d = t + f + d - 899497514 + blocks[j + 1] << 0;\n a = (a << 30) | (a >>> 2);\n\n f = e ^ a ^ b;\n t = (d << 5) | (d >>> 27);\n c = t + f + c - 899497514 + blocks[j + 2] << 0;\n e = (e << 30) | (e >>> 2);\n\n f = d ^ e ^ a;\n t = (c << 5) | (c >>> 27);\n b = t + f + b - 899497514 + blocks[j + 3] << 0;\n d = (d << 30) | (d >>> 2);\n\n f = c ^ d ^ e;\n t = (b << 5) | (b >>> 27);\n a = t + f + a - 899497514 + blocks[j + 4] << 0;\n c = (c << 30) | (c >>> 2);\n }\n\n this.h0 = this.h0 + a << 0;\n this.h1 = this.h1 + b << 0;\n this.h2 = this.h2 + c << 0;\n this.h3 = this.h3 + d << 0;\n this.h4 = this.h4 + e << 0;\n };\n\n Sha1.prototype.hex = function () {\n this.finalize();\n\n var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3, h4 = this.h4;\n\n return HEX_CHARS[(h0 >> 28) & 0x0F] + HEX_CHARS[(h0 >> 24) & 0x0F] +\n HEX_CHARS[(h0 >> 20) & 0x0F] + HEX_CHARS[(h0 >> 16) & 0x0F] +\n HEX_CHARS[(h0 >> 12) & 0x0F] + HEX_CHARS[(h0 >> 8) & 0x0F] +\n HEX_CHARS[(h0 >> 4) & 0x0F] + HEX_CHARS[h0 & 0x0F] +\n HEX_CHARS[(h1 >> 28) & 0x0F] + HEX_CHARS[(h1 >> 24) & 0x0F] +\n HEX_CHARS[(h1 >> 20) & 0x0F] + HEX_CHARS[(h1 >> 16) & 0x0F] +\n HEX_CHARS[(h1 >> 12) & 0x0F] + HEX_CHARS[(h1 >> 8) & 0x0F] +\n HEX_CHARS[(h1 >> 4) & 0x0F] + HEX_CHARS[h1 & 0x0F] +\n HEX_CHARS[(h2 >> 28) & 0x0F] + HEX_CHARS[(h2 >> 24) & 0x0F] +\n HEX_CHARS[(h2 >> 20) & 0x0F] + HEX_CHARS[(h2 >> 16) & 0x0F] +\n HEX_CHARS[(h2 >> 12) & 0x0F] + HEX_CHARS[(h2 >> 8) & 0x0F] +\n HEX_CHARS[(h2 >> 4) & 0x0F] + HEX_CHARS[h2 & 0x0F] +\n HEX_CHARS[(h3 >> 28) & 0x0F] + HEX_CHARS[(h3 >> 24) & 0x0F] +\n HEX_CHARS[(h3 >> 20) & 0x0F] + HEX_CHARS[(h3 >> 16) & 0x0F] +\n HEX_CHARS[(h3 >> 12) & 0x0F] + HEX_CHARS[(h3 >> 8) & 0x0F] +\n HEX_CHARS[(h3 >> 4) & 0x0F] + HEX_CHARS[h3 & 0x0F] +\n HEX_CHARS[(h4 >> 28) & 0x0F] + HEX_CHARS[(h4 >> 24) & 0x0F] +\n HEX_CHARS[(h4 >> 20) & 0x0F] + HEX_CHARS[(h4 >> 16) & 0x0F] +\n HEX_CHARS[(h4 >> 12) & 0x0F] + HEX_CHARS[(h4 >> 8) & 0x0F] +\n HEX_CHARS[(h4 >> 4) & 0x0F] + HEX_CHARS[h4 & 0x0F];\n };\n\n Sha1.prototype.toString = Sha1.prototype.hex;\n\n Sha1.prototype.digest = function () {\n this.finalize();\n\n var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3, h4 = this.h4;\n\n return [\n (h0 >> 24) & 0xFF, (h0 >> 16) & 0xFF, (h0 >> 8) & 0xFF, h0 & 0xFF,\n (h1 >> 24) & 0xFF, (h1 >> 16) & 0xFF, (h1 >> 8) & 0xFF, h1 & 0xFF,\n (h2 >> 24) & 0xFF, (h2 >> 16) & 0xFF, (h2 >> 8) & 0xFF, h2 & 0xFF,\n (h3 >> 24) & 0xFF, (h3 >> 16) & 0xFF, (h3 >> 8) & 0xFF, h3 & 0xFF,\n (h4 >> 24) & 0xFF, (h4 >> 16) & 0xFF, (h4 >> 8) & 0xFF, h4 & 0xFF\n ];\n };\n\n Sha1.prototype.array = Sha1.prototype.digest;\n\n Sha1.prototype.arrayBuffer = function () {\n this.finalize();\n\n var buffer = new ArrayBuffer(20);\n var dataView = new DataView(buffer);\n dataView.setUint32(0, this.h0);\n dataView.setUint32(4, this.h1);\n dataView.setUint32(8, this.h2);\n dataView.setUint32(12, this.h3);\n dataView.setUint32(16, this.h4);\n return buffer;\n };\n\n var exports = createMethod();\n\n if (COMMON_JS) {\n module.exports = exports;\n } else {\n root.sha1 = exports;\n if (AMD) {\n define(function () {\n return exports;\n });\n }\n }\n})();\n","import sha1 from \"js-sha1\";\nimport {typeUtil} from \"@repo/lib-common\";\nimport {objUtil} from \"@repo/lib-common\";\ntype StringOrUndefined=typeUtil.StringOrUndefined;\nconst isNullOrEmpty=objUtil.isNullOrEmpty;\n\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport namespace hashUtil {\n export function hashSha1(sourceStr: string): StringOrUndefined {\n let hash: StringOrUndefined = undefined;\n if (isNullOrEmpty(sourceStr)) return hash;\n hash = sha1(sourceStr);\n return hash;\n }\n}\n","import moment from \"moment\";\nimport { CreateAffiliateUrlParams } from \"./createAffiliateUrlParams\";\n\nexport class CreateAffiliateUrlRequest implements CreateAffiliateUrlParams {\n public constructor(init?: Partial) {\n Object.assign(this, init);\n this.timeStamp = moment().toISOString(false);\n }\n apiKey?: string;\n apiSecret?: string;\n applicationId?: string;\n timeStamp?: string;\n appToken?: string;\n originUrl?: string;\n deepLink?: string;\n userId?: string;\n userEmail?: string;\n userPhone?: string;\n prefix: string = \"\";\n r?: number;\n hostName?: string;\n}\n","export class CreateAffiliateUrlResponse {\n message?: string;\n isSuccess: boolean = false;\n shortenUrl?: string;\n httpStatusCode?: number;\n}\n","import moment from \"moment\";\nimport { CreateUserInfoPageUrlParams } from \"./createUserInfoPageUrlParams\";\n\nexport class CreateUserInfoPageUrlRequest implements CreateUserInfoPageUrlParams {\n public constructor(init?: Partial) {\n Object.assign(this, init);\n this.timeStamp = moment().toISOString(false);\n }\n apiKey?: string;\n apiSecret?: string;\n applicationId?: string;\n timeStamp?: string;\n appToken?: string;\n userId?: string;\n r?: number;\n brandSlug?: string;\n}\n","//import { dateUtil } from \"@repo/lib-common\";\nconst cdnRootUrl = \"https://cdn.adpartners.io/adp-client/dist\";\nexport function prepareOffCanvas(str: string, onCloseCallback?: VoidFunction) {\n const offCanvas = document.createElement('div');\n offCanvas.className = '_mdco-offcanvas _mdco-offcanvas-end';\n\n // Offcanvas header\n const header = document.createElement('div');\n header.classList.add('_mdco-offcanvas-header');\n const closeButton = document.createElement('button');\n closeButton.type = 'button';\n closeButton.classList.add('_mdco-offcanvas-close');\n closeButton.setAttribute('data-bs-dismiss', 'offcanvas');\n closeButton.setAttribute('aria-label', 'Close');\n\n closeButton.addEventListener('click', () => {\n closeOffCanvas(offCanvas);\n if (onCloseCallback) {\n onCloseCallback();\n }\n });\n\n\n header.appendChild(closeButton);\n offCanvas.appendChild(header);\n\n // Offcanvas body\n const body = document.createElement('div');\n body.classList.add('_mdco-offcanvas-body');\n\n // Body content\n const contentWrapper = document.createElement('div');\n contentWrapper.className = '_mdco-df _mdco-aic _mdco-mb-4';\n const imgSpan = document.createElement('span');\n imgSpan.classList.add('_mco-me-1');\n const img = document.createElement('img');\n img.src = cdnRootUrl + '/img/gift.svg';\n img.alt = '';\n imgSpan.appendChild(img);\n const heading = document.createElement('h3');\n heading.className = 'fs-1 fw-normal text-color _mdco-m-0';\n heading.textContent = 'PAYLAŞ KAZAN';\n contentWrapper.appendChild(imgSpan);\n contentWrapper.appendChild(heading);\n\n const linkReady = document.createElement('div');\n linkReady.classList.add('fs-2');\n linkReady.textContent = 'Link Paylaşıma Hazır';\n\n const description = document.createElement('p');\n description.classList.add('fs-6');\n description.textContent = 'Bu ürünün linkini istediğiniz kişilerle Whatsapp veya sosyal medya hesaplarınızdan paylaşın, linkinizden satın alım yapıldıkça kazanın!';\n\n const resultContent = document.createElement('div');\n resultContent.id = '_mdco-result-content';\n\n // Copy link button\n const copyLinkDiv = document.createElement('div');\n copyLinkDiv.className = '_mdco-df _mdco-aic _mdco-jcb';\n const copyLinkButton = document.createElement('button');\n copyLinkButton.classList.add('_mdco-copy-link-button');\n copyLinkButton.id = '_mdco-copy-link-button';\n copyLinkButton.addEventListener('click', () => {\n copyTextFromSpan();\n });\n const copyLinkImg = document.createElement('img');\n copyLinkImg.src = cdnRootUrl + '/img/copy.svg';\n copyLinkImg.height = 28;\n const copyLinkSpan = document.createElement('span');\n copyLinkSpan.appendChild(copyLinkImg);\n copyLinkButton.appendChild(copyLinkSpan);\n const span = Object.assign(document.createElement('span'), { textContent: 'Kopyala' });\n copyLinkButton.appendChild(span);\n copyLinkDiv.appendChild(copyLinkButton);\n resultContent.appendChild(copyLinkDiv);\n\n // Footer content\n const footer = document.createElement('div');\n footer.className = '_mdco-text-end';\n //footer.textContent = 'hebele';\n const footerLink = document.createElement('span');\n footerLink.className = '_mdco-page-bottom-link';\n footer.appendChild(footerLink);\n const footerText = document.createElement('span');\n footerText.className = '_mdco-direct-link';\n footerText.textContent = str;\n footerLink.appendChild(footerText);\n\n body.appendChild(contentWrapper);\n body.appendChild(linkReady);\n body.appendChild(description);\n body.appendChild(resultContent);\n copyLinkDiv.appendChild(footer);\n\n const share = document.createElement('div');\n share.className = '_mdco-share';\n const shareButtons = `
Bu ürünü sevdiklerinizle paylaşabilirsiniz.
\n
\n
\n \n
\n
\n \n
\n
\n \n
\n \n \n
`;\n share.innerHTML = shareButtons;\n body.appendChild(share);\n\n offCanvas.appendChild(body);\n\n document.body.appendChild(offCanvas);\n\n setTimeout(() => {\n offCanvas.setAttribute('aria-modal', 'true');\n offCanvas.classList.add('showing');\n offCanvas.classList.add('show');\n createOffcanvasBackdrop(offCanvas);\n setTimeout(() => {\n offCanvas.classList.remove('showing');\n }, 300);\n }, 10);\n\n document.addEventListener('click', (e: MouseEvent) => {\n const el = e.target as HTMLButtonElement;\n console.log(el);\n\n if (el.matches('._mdco-share-button')) {\n if (el.id === 'shareOnFacebook') {\n const dataurl = str;\n return window.open(\n \"https://www.facebook.com/sharer/sharer.php?u=\" + encodeURIComponent(dataurl),\n \"facebooksharedialog\",\n \"toolbar=0,status=0,width=626,height=436\"\n )\n }\n\n if (el.id === 'shareOnX') {\n const e = el.getAttribute('data-url') as string;\n const o = el.getAttribute('data-company') as string;\n const n = el.getAttribute('data-title') as string;\n return window.open(\n \"https://twitter.com/intent/tweet?hashtags=\" + o + \"&original_referer=\" + encodeURIComponent(e) + \"&related=\" + o + \"&text=\" + encodeURIComponent(n) + \"&url=\" + encodeURIComponent(e) + \"&via=\" + o,\n \"shareit\",\n \"toolbar=0,status=0,width=626,height=436\"\n )\n }\n\n if (el.id === 'shareOnLinkedin') {\n return window.open(\n \"https://www.linkedin.com/sharing/share-offsite/?url=\" + encodeURIComponent(str),\n \"linkedinsharedialog\",\n \"toolbar=0,status=0,width=626,height=436\"\n );\n }\n }\n });\n}\n\nexport function createOffcanvasBackdrop(offCanvas: HTMLElement) {\n const backdrop = document.createElement('div');\n backdrop.className = '_mdco-offcanvas-backdrop fade show';\n backdrop.addEventListener('click', () => {\n closeOffCanvas(offCanvas);\n });\n const body = document.querySelector('body') as HTMLElement;\n body.appendChild(backdrop);\n}\n\nexport function closeOffCanvas(offCanvas: HTMLElement) {\n offCanvas.classList.remove('show');\n offCanvas.setAttribute('aria-modal', 'false');\n const backdrop = document.querySelector('._mdco-offcanvas-backdrop') as HTMLElement;\n if (backdrop) {\n backdrop.classList.remove('show');\n setTimeout(() => {\n offCanvas.remove();\n backdrop.remove();\n }, 300);\n }\n}\n\nexport async function copyTextFromSpan() {\n const spanElement = document.querySelector('._mdco-direct-link') as HTMLElement;\n\n const checkAnimation = `\n \n \n `;\n\n if (spanElement) {\n const textToCopy = spanElement.innerText;\n\n try {\n await navigator.clipboard.writeText(textToCopy);\n const button = document.querySelector('._mdco-copy-link-button span');\n if (button) {\n button.innerHTML = checkAnimation;\n }\n } catch (err) {\n console.error('Metin kopyalanamadı: ', err);\n }\n } else {\n alert('Span elementi bulunamadı!');\n }\n}\n\n\n\n\n\n\nexport function applyCssFile(brandSlug: string) {\n const cssId = `${brandSlug}-${new Date().getTime()}`; // you could encode the css path itself to generate id..\n if (!document.getElementById(cssId)) {\n var head = document.getElementsByTagName('head')[0];\n var link = document.createElement('link');\n link.id = cssId;\n link.rel = 'stylesheet';\n link.type = 'text/css';\n link.href = `https://cdn.adpartners.io/adp-client/dist/${brandSlug}.css`;\n link.media = 'all';\n head.appendChild(link);\n }\n}\n\n//#endregion","import { httpUtil } from \"@repo/lib-web\";\nimport sha1 from \"js-sha1\";\nimport { CreateAffiliateUrlRequest } from \"./types/createAffiliateUrlRequest\";\nimport { CreateAffiliateUrlParams } from \"./types/createAffiliateUrlParams\";\nimport { CreateAffiliateUrlResponse } from \"./types/createAffiliateUrlResponse\";\nimport { CreateUserInfoPageUrlParams } from \"./types/createUserInfoPageUrlParams\";\nimport { CreateUserInfoPageUrlRequest } from \"./types/createUserInfoPageUrlRequest\";\nimport { applyCssFile, prepareOffCanvas } from \"./affUtils\";\nimport { logUtil } from \"@repo/lib-common\";\nconst createAffialiateUrl = \"https://shorten.btrck.com/api/affiliateurl/createurlv2\";\nconst createUserInfoPageUrlTmp = \"https://paylaskazan.winfluenced.com\"\n//const createUserInfoPageUrlTmp = \"http://localhost:5266\"\n\nexport class AdpAffiliateClientV2 {\n\n utils = { applyCssFile, prepareOffCanvas };\n\n private getRandomInt(): number {\n return (new Date()).getTime() | 0;\n }\n\n private hashSha1(sourceStr: string | undefined | null): string {\n let hash = \"\";\n if (sourceStr === null || sourceStr === undefined || 0 === sourceStr.length) return hash;\n hash = sha1(sourceStr);\n return hash;\n }\n\n public async createAffialiateUrl(params: CreateAffiliateUrlParams): Promise {\n const resp = new CreateAffiliateUrlResponse();\n const req = new CreateAffiliateUrlRequest(params);\n req.hostName = window.location.hostname;\n req.r = this.getRandomInt();\n req.appToken = this.hashSha1(`${req.applicationId}-${req.apiKey}-${req.apiSecret}-${req.timeStamp}-${req.userId}-${req.r}`);\n return new Promise((resolve, reject) => {\n if (!params.apiKey || !params.apiSecret || !params.applicationId || !params.originUrl || !params.userId) {\n resp.isSuccess = false;\n resp.message = 'aff url required params are missing';\n reject(resp);\n }\n try {\n return httpUtil.httpPostPromise({ url: createAffialiateUrl, data: req, contentType: httpUtil.ContentTypeEnum.json })\n .then((httpRes) => {\n resp.isSuccess = true;\n resp.shortenUrl = httpRes.data.shortenUrl;\n resp.httpStatusCode = httpRes.status;\n resolve(httpRes.data);\n }).catch((e) => {\n resp.isSuccess = false;\n resp.message = e.message;\n reject(resp);\n });\n\n } catch (error: any) {\n resp.isSuccess = false;\n resp.message = error.message;\n reject(resp);\n }\n });\n }\n\n\n private readonly brandsWithCss = [\"madamecoco\"];\n isCreateAffiliateUrlAndShowInSidePanel_Enabled = true;\n public setCreateAffiliateUrlAndShowInSidePanel_Enabled(isEnabled: boolean) {\n this.isCreateAffiliateUrlAndShowInSidePanel_Enabled = isEnabled;\n }\n public async createAffiliateUrlAndShowInSidePanel(params: CreateAffiliateUrlParams) {\n if (params.brandSlug && this.brandsWithCss.includes(params.brandSlug)) {\n applyCssFile(params.brandSlug);\n }\n if (!this.isCreateAffiliateUrlAndShowInSidePanel_Enabled) return;\n this.setCreateAffiliateUrlAndShowInSidePanel_Enabled(false);\n logUtil.consoleLog(\"createAffialiateUrl request:\", params);\n this.createAffialiateUrl(params).then((data) => {\n prepareOffCanvas(data.shortenUrl!, () => { this.setCreateAffiliateUrlAndShowInSidePanel_Enabled(true); });\n }).catch(err => {\n console?.log(\"aff url error\", err)\n });\n }\n\n\n\n\n\n public createUserInfoPageUrl(params: CreateUserInfoPageUrlParams): string {\n const req = new CreateUserInfoPageUrlRequest(params);\n req.r = this.getRandomInt();\n req.appToken = this.hashSha1(`${req.applicationId}-${req.apiKey}-${req.apiSecret}-${req.timeStamp}-${req.userId}-${req.r}`);\n const url = `${createUserInfoPageUrlTmp}/${req.brandSlug}/?t=${req.appToken}&b=${req.userId}&ts=${req.timeStamp}&ak=${req.apiKey}&as=${req.apiSecret}&ai=${req.applicationId}&r=${req.r}`;\n return url;\n }\n\n}\n\nexport { AdpAffiliateClientV2 as AdpAffClient };","import moment from \"moment\";\nimport {StoreObjWithTtl} from \"./types\";\nexport class LocalStorageManager {\n public static testIsStoreUsable():boolean{\n\n const mod = 'local-storage-test';\n try {\n localStorage.setItem(mod, mod);\n localStorage.removeItem(mod);\n return true;\n } catch (e) {\n return false;\n }\n }\n\n public static save(key: string, dataT?:T,ttlInMinutes:number=30) {\n const expiryObj = {expiry: moment().add(ttlInMinutes, \"minutes\"),data:dataT} as StoreObjWithTtl;\n const dataString = JSON.stringify(expiryObj);\n localStorage.setItem(key, dataString);\n }\n\n public static load(key: string): T | undefined {\n if(key===null || key===undefined) return undefined;\n const dataString = localStorage.getItem(key);\n if (dataString) {\n const dataObj: StoreObjWithTtl = JSON.parse(dataString);\n\n\n if (dataObj && dataObj.data && dataObj.expiry && moment(dataObj.expiry).isAfter(moment())) {\n return dataObj.data!;\n }\n }\n return undefined;\n }\n}\n\n","\nimport Cookies from \"js-cookie\";\nexport class CookieDataManager {\n public static testIsStoreUsable(): boolean {\n\n const mod = 'local-storage-test';\n try {\n Cookies.set(mod, mod, {expires: 1});\n Cookies.remove(mod);\n return true;\n } catch (e) {\n return false;\n }\n }\n\n public static save(key: string, dataT?: T, ttlInMinutes: number = 30) {\n const dataString = JSON.stringify(dataT);\n const ttlObjc = new Date(new Date().getTime() + ttlInMinutes * 60 * 1000);\n Cookies.set(key, dataString, {expires: ttlObjc});\n }\n\n public static load(key: string): T | undefined {\n if (key === null || key === undefined) return undefined;\n const dataString = Cookies.get(key);\n if (dataString) {\n const dataObj: T = JSON.parse(dataString);\n return dataObj;\n }\n return undefined;\n }\n}\n\n","import { LocalStorageManager } from \"../components/localStorageDataManager\";\nimport { CookieDataManager } from \"../components/cookieDataManager\";\n\n\nexport class StorageManager {\n public static isLocalStorageEnabled: boolean =\n LocalStorageManager.testIsStoreUsable();\n public static isCookieStorageEnabled: boolean =\n StorageManager.isLocalStorageEnabled == false\n ? CookieDataManager.testIsStoreUsable()\n : false;\n\n public static save(key: string, dataT?: T, ttlInMinutes: number = 30) {\n if (this.isLocalStorageEnabled) {\n LocalStorageManager.save(key, dataT, ttlInMinutes);\n } else {\n CookieDataManager.save(key, dataT, ttlInMinutes);\n }\n }\n\n public static load(key: string): T | undefined {\n if (StorageManager.isLocalStorageEnabled) {\n return LocalStorageManager.load(key);\n } else {\n return CookieDataManager.load(key);\n }\n }\n\n \n}\n","\nimport { logUtil,typeUtil,objUtil } from \"@repo/lib-common\";\n\n\n\n\nexport class AffiliateParams {\n\n\n offerId: typeUtil.StringOrUndefined;\n transactionId: typeUtil.StringOrUndefined;\n eventId:typeUtil.StringOrUndefined;\n referrer: typeUtil.StringOrUndefined;\n utmCampaign: typeUtil.StringOrUndefined;\n utmMedium: typeUtil.StringOrUndefined;\n utmSource: typeUtil.StringOrUndefined;\n utmContent: typeUtil.StringOrUndefined;\n utmTerm: typeUtil.StringOrUndefined;\n\n}\n\nexport function validateAffliateParams(data:AffiliateParams|undefined):boolean{\n if(objUtil.isObjNullOrUndefined(data)) {\n logUtil.consoleError(\"affiliate params are undefined\");\n return false;\n }\n if(objUtil.isNullOrEmpty(data!.transactionId)) {\n logUtil.consoleError(\"affiliate params transactionId is undefined\");\n return false;\n }\n if(objUtil.isNullOrEmpty(data!.offerId)) {\n logUtil.consoleError(\"affiliate params offerId is undefined\");\n return false;\n }\n return true;\n}\n\n\n","import { logUtil,typeUtil,urlUtil,objUtil } from \"@repo/lib-common\";\n\nexport class ClientConfig{\n measurementId: typeUtil.StringOrUndefined;\n advertiserId:typeUtil.StringOrUndefined;\n clientDomain:typeUtil.StringOrUndefined;\n\n readonly isProd:boolean;\n public constructor(init?: Partial) {\n Object.assign(this, init);\n this.clientDomain=init?.clientDomain ?? urlUtil.getHostNameFromUrl();\n this.isProd =init?.isProd ?? import.meta.env.PROD ;\n\n }\n\n\n\n}\n\nexport function validateClientConfig(data:ClientConfig|Partial|undefined):boolean{\n if(objUtil.isObjNullOrUndefined(data)) {\n logUtil.consoleError(\"client config are undefined\");\n return false;\n }\n if(objUtil.isNullOrEmpty(data!.advertiserId)) {\n logUtil.consoleError(\"client config advertiserId is undefined\");\n return false;\n }\n if(objUtil.isNullOrEmpty(data!.measurementId)) {\n logUtil.consoleError(\"client config measurementId is undefined\");\n return false;\n }\n return true;\n\n}\n\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport { AffiliateParams } from \"./affiliateParams\";\nimport { PurchaseOrder } from \"./purchaseOrder\";\nimport { ClientConfig } from \"./clientConfig\";\nimport { numUtil, typeUtil, urlUtil } from \"@repo/lib-common\";\nimport { hashUtil, momentUtil } from \"@repo/lib-web\";\n\n\nexport class PurchaseOrderTransaction {\n clientConfig: ClientConfig;\n purchaseOrder: PurchaseOrder;\n affiliateParams: AffiliateParams;\n\n constructor(params: {\n clientConfig: ClientConfig;\n affiliateParams: AffiliateParams;\n purchaseOrder: PurchaseOrder;\n }) {\n this.clientConfig = params.clientConfig!;\n this.affiliateParams = params.affiliateParams!;\n this.purchaseOrder = params.purchaseOrder!;\n\n\n this.measurementDateTime = momentUtil.dateTime.now().toIsoString(true);\n this.uri = urlUtil.getWindowUrlString();\n }\n\n\n\n hm: typeUtil.StringOrUndefined;\n r: typeUtil.NumberOrUndefined;\n uri: typeUtil.StringOrUndefined;\n measurementDateTime: string;\n\n\n public toApiObject(): any {\n this.r = numUtil.getRandomInt()\n this.hm = hashUtil.hashSha1(\n `${this.clientConfig.measurementId}-${this.affiliateParams.offerId}-${this.affiliateParams.transactionId}-${this.affiliateParams.eventId}-${this.r}`\n );\n\n\n const eventData01 = {\n hm: this.hm,\n r: `${this.r}`,\n measurementDateTime: this.measurementDateTime,\n\n measurementId: this.clientConfig.measurementId,\n advertiserId: this.clientConfig.advertiserId,\n clientDomain: this.clientConfig.clientDomain,\n eventId: this.affiliateParams.eventId,\n transactionId: this.affiliateParams.transactionId,\n offerId: this.affiliateParams.offerId,\n orderNumber: this.purchaseOrder.orderNumber,\n customerId: this.purchaseOrder.customerId,\n salesChannel: this.purchaseOrder.salesChannel,//for backward and forward compat, do not change\n goalName: this.purchaseOrder.goalName,//for backward and forward compat, do not change\n totalAmount: this.purchaseOrder.totalAmount, //for backward and forward compat, do not change\n currencyCode: this.purchaseOrder.currencyCode,\n items: this.purchaseOrder.items?.map(item => item.toApiObject()),\n\n };\n return eventData01;\n }\n}\n","import { objUtil, typeUtil, logUtil } from \"@repo/lib-common\";\nimport { currencyUtil } from \"@repo/lib-web\";\n\n\n\n\nconst decimalZero = 0.0;\n\nexport const enum CustomerType {\n new = \"new\",\n returned = \"returned\"\n}\n\nexport const enum OfferDimension {\n categoryName = 0,\n categoryId = 1,\n categoryList = 2,\n brandName = 3,\n sellerId = 4,\n}\n\n\nexport class PurchaseOrderLineItem {\n /** (optional) uniq id of the purchase order linte item */\n offerDimension: OfferDimension = OfferDimension.categoryName;\n\n /** (optional) uniq id of the purchase order linte item */\n id: typeUtil.StringOrUndefined = objUtil.uuidStr();\n\n /** (required) uniq id of the product */\n sku: typeUtil.StringOrUndefined;\n\n /** (optional) product code or barcode */\n productCode: typeUtil.StringOrUndefined;\n\n /** (required) product name */\n productName: typeUtil.StringOrUndefined;\n\n /** (optional) uniq id of seller */\n sellerId: typeUtil.StringOrUndefined;\n\n /** (optional) product type name */\n productTypeName: typeUtil.StringOrUndefined;\n\n /** (optional) category name of the product */\n categoryName: typeUtil.StringOrUndefined;\n\n /** (optional) category id of the product */\n categoryId: typeUtil.StringOrUndefined;\n\n /** (optional) category ids or names list of the product */\n categoryList? = new Array();\n\n /** (optional) brand name of the product */\n brandName: typeUtil.StringOrUndefined;\n\n /** (optional) brand id of the product */\n brandId: typeUtil.StringOrUndefined;\n\n /** (optional) unit sale price after discount and after tax (after discounts and tax applied) */\n unitSalePrice: typeUtil.NumberOrUndefined = decimalZero;\n\n /** (optional) quantity */\n quantity: number = 0;\n\n /** (required) sub total amount of the product after all discounts and taxes (what customer payed for this line) = unitSalePrice * quantity */\n lineAmount: typeUtil.NumberOrUndefined = decimalZero;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public toApiObject(): any {\n\n const eventData01 = {\n offerDimension: this.offerDimension,\n id: this.id,\n sku: this.sku,\n productCode: this.productCode,\n productName: this.productName,\n productTypeName: this.productTypeName,\n sellerId: this.sellerId,\n categoryName: this.categoryName,\n categoryId: this.categoryId,\n brandName: this.brandName,\n brandId: this.brandId,\n unitSalePrice: this.unitSalePrice,\n quantity: this.quantity,\n lineAmount: this.lineAmount\n\n\n\n };\n return eventData01;\n }\n\n}\n\nexport function validatePurchaseOrderLineItem(\n data: PurchaseOrderLineItem\n): boolean {\n if (objUtil.isObjNullOrUndefined(data)) {\n logUtil.consoleError(\"order line is undefined\");\n return false;\n }\n if (objUtil.isNullOrEmpty(data!.productName)) {\n logUtil.consoleError(\"productName is undefined\");\n return false;\n }\n if (objUtil.isNumNullOrUndefined(data!.lineAmount)) {\n logUtil.consoleError(\"lineAmount is undefined\");\n return false;\n }\n // if(isNumNullOrUndefined(data!.unitSalePrice) || data!.unitSalePrice==decimalZero) {\n // consoleError(\"unitSalePrice is undefined\");\n // return false;\n // }\n\n return true;\n}\n\nexport class PurchaseOrder {\n constructor(init?: Partial) {\n Object.assign(this, init);\n }\n /** (required) uniq id of the customer / buyer */\n customerId: typeUtil.StringOrUndefined;\n\n /** (optional) uniq id of purchase order */\n orderId: typeUtil.StringOrUndefined;\n\n /** (required) order number */\n orderNumber: typeUtil.StringOrUndefined;\n\n /** (optional) sales channel (default:web) */\n salesChannel: typeUtil.StringOrUndefined = \"web\";\n\n /** (required) purchased line items */\n items: Array = new Array();\n\n totalAmount: typeUtil.NumberOrUndefined = decimalZero;\n\n /** (default TRY) 3 digit currecy code https://en.wikipedia.org/wiki/ISO_4217 */\n currencyCode: string = currencyUtil.Currency.TRY.Code\n\n goalName: typeUtil.StringOrUndefined;\n}\n\nexport function validatePurchaseOrder(\n data: PurchaseOrder | undefined\n): boolean {\n if (objUtil.isObjNullOrUndefined(data)) {\n logUtil.consoleError(\"order is undefined\");\n return false;\n }\n if (objUtil.isNullOrEmpty(data!.orderNumber)) {\n logUtil.consoleError(\"orderNumber is undefined\");\n return false;\n }\n if (objUtil.isNullOrEmpty(data!.customerId)) {\n logUtil.consoleError(\"customerId is undefined\");\n return false;\n }\n\n if (objUtil.isNumNullOrUndefined(data!.totalAmount) || data?.totalAmount === decimalZero) {\n logUtil.consoleError(\"totalAmount is undefined\");\n return false;\n }\n\n if (objUtil.isObjNullOrUndefined(data!.items) || data!.items.length == 0) {\n logUtil.consoleError(\"items are undefined\");\n return false;\n }\n\n //validate items\n for (let itemIndex = 0; itemIndex < data!.items!.length; itemIndex++) {\n const item = data!.items[itemIndex];\n if (!validatePurchaseOrderLineItem(item)) {\n return false;\n }\n }\n\n\n\n // if(isNullOrEmpty(data!.orderId)) {\n // consoleError(\"orderId is undefined\");\n // return false;\n // }\n return true;\n\n}\n\n\n","import { typeUtil } from \"@repo/lib-common\";\n\n\nexport class StoreData {\n \n orders:Array= new Array();\n\n}","import { typeUtil, urlUtil, logUtil, objUtil } from \"@repo/lib-common\";\n\n\nimport { StorageManager } from \"@repo/lib-browser-data-store\";\nimport { AffiliateParams, validateAffliateParams } from \"./types/affiliateParams\";\nimport { ClientConfig, validateClientConfig } from \"./types/clientConfig\";\nimport { PurchaseOrderTransaction } from \"./types/purchaseOrderTransaction\";\nimport { PurchaseOrder, validatePurchaseOrder } from \"./types/purchaseOrder\";\nimport { StoreData } from \"./types/purchaseOrderSimple\";\nimport { httpUtil } from \"@repo/lib-web\";\n\nlogUtil.setLogPrefix(\"AdPartners\");\n\nconst prodApiUrl = \"https://winfluenced-pixel-bs56cx2ajq-ey.a.run.app\";\nconst testApiUrl = \"https://winfluenced-pixel-rvlaoxgvjq-ey.a.run.app\";\n//const localApiUrl = \"http://localhost:8080\";\nconst apiUrl = `${import.meta.env.PROD ? prodApiUrl : testApiUrl\n }/api/v2-pixel/ecomm`;\n\nclass AdpEcommClientV2 {\n private readonly v = \"2.0\";\n private readonly storageAdpKey = \"_adp_v2\";\n private readonly storageMixModelAdpKey = \"_adp_v2_orders\";\n\n private readonly offerIdQueryStringKey = \"adp_oid\";\n private readonly transactionClickIdQueryStringKey = \"adp_cid\";\n private readonly utmCampaignQueryStringKey = \"utm_campaign\";\n private readonly utmMediumQueryStringKey = \"utm_medium\";\n private readonly utmSourceQueryStringKey = \"utm_source\";\n private readonly utmContentQueryStringKey = \"utm_content\";\n private readonly utmTermQueryStringKey = \"utm_term\";\n\n private readonly queryStringParams = [\n this.offerIdQueryStringKey,\n this.transactionClickIdQueryStringKey,\n this.utmCampaignQueryStringKey,\n this.utmMediumQueryStringKey,\n this.utmSourceQueryStringKey,\n this.utmContentQueryStringKey,\n this.utmTermQueryStringKey,\n ];\n\n private attributionWindowInDays = 14;\n\n public setAttributionWindow(days: number) {\n if (days > 180) {\n logUtil.consoleError(\"attribution window must be less than 180 days\");\n }\n this.attributionWindowInDays = days;\n }\n\n public get storageAdpKeyTTLinMinutes() {\n return this.attributionWindowInDays * 24 * 60;\n }\n\n private config: ClientConfig | undefined;\n private affiliateParams: AffiliateParams | undefined;\n private eventApiUrl: string = apiUrl;\n private purchaseOrders = new Array();\n private purchaseOrderTransactions = new Array();\n\n private state_IsInitForTransactionCompleted = false;\n private state_IsInitForTrackingCompleted = false;\n private state_IsEnsureAppDataCompleted = false;\n private state_IsAffiliateQueryStringParamsExemined = false;\n private state_IsAffiliateParamsSaved = false;\n private state_IsAffiliateParamsLoaded = false;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public states(): any {\n\n const _states = {\n state_IsInitForTrackingCompleted: this.state_IsInitForTrackingCompleted,\n state_IsInitForTransactionCompleted: this.state_IsInitForTransactionCompleted,\n\n state_IsEnsureAppDataCompleted: this.state_IsEnsureAppDataCompleted,\n state_IsAffiliateQueryStringParamsExemined:\n this.state_IsAffiliateQueryStringParamsExemined,\n state_IsAffiliateParamsSaved: this.state_IsAffiliateParamsSaved,\n state_IsAffiliateParamsLoaded: this.state_IsAffiliateParamsLoaded,\n };\n logUtil.consoleLog(`version${this.v} client states`, _states)\n return _states;\n }\n\n public initForTracking() {\n this.registerReadyStateChange();\n this.state_IsInitForTrackingCompleted = true;\n }\n\n public initForTransaction(config?: Partial) {\n if (objUtil.isObjNullOrUndefined(config) === true || (validateClientConfig(config) !== true)) {\n logUtil.consoleWarn(\n \"config or config properties can not be null or empty \"\n );\n return;\n }\n this.config = new ClientConfig(config);\n this.registerReadyStateChange();\n logUtil.consoleLog(\"client config:\", this.config);\n this.state_IsInitForTransactionCompleted = true;\n this.loadAffiliateParamsFromStorage();\n }\n\n public ensureAdpData() {\n if (this.state_IsAffiliateQueryStringParamsExemined) return;\n this.state_IsAffiliateQueryStringParamsExemined = true;\n const adpUrlParams = urlUtil.getUrlQueryStringValues(this.queryStringParams);\n logUtil.consoleLog(\"adpUrlParams found\", adpUrlParams);\n const adpTransactionClickIdUrlDataValue = adpUrlParams.get(\n this.transactionClickIdQueryStringKey\n );\n const adpOfferIdDataValue = adpUrlParams.get(this.offerIdQueryStringKey);\n const isMissing_adpTransactionClickIdUrlDataValue = objUtil.isNullOrEmpty(\n adpTransactionClickIdUrlDataValue\n );\n const isMissing_adpOfferIdDataValue = objUtil.isNullOrEmpty(adpOfferIdDataValue);\n\n if (isMissing_adpTransactionClickIdUrlDataValue) {\n logUtil.consoleLog(\"query string apd_cid is missing\");\n return;\n }\n if (isMissing_adpOfferIdDataValue) {\n logUtil.consoleLog(\"query string apd_cid is missing\");\n return;\n }\n\n this.affiliateParams = new AffiliateParams();\n this.affiliateParams.referrer = urlUtil.getDocumentReferrer();\n this.affiliateParams.eventId = objUtil.uuidStr();\n this.affiliateParams.offerId = adpOfferIdDataValue;\n this.affiliateParams.transactionId = adpTransactionClickIdUrlDataValue;\n this.affiliateParams.utmCampaign = adpUrlParams.get(\n this.utmCampaignQueryStringKey\n );\n this.affiliateParams.utmSource = adpUrlParams.get(\n this.utmSourceQueryStringKey\n );\n this.affiliateParams.utmMedium = adpUrlParams.get(\n this.utmMediumQueryStringKey\n );\n this.affiliateParams.utmContent = adpUrlParams.get(\n this.utmContentQueryStringKey\n );\n this.affiliateParams.utmTerm = adpUrlParams.get(this.utmTermQueryStringKey);\n this.saveAffiliateParamsToStorage();\n\n this.state_IsEnsureAppDataCompleted = true;\n }\n\n private registerReadyStateChange(\n completeReadyStateCallBack?: typeUtil.CallbackFunction,\n interactiveStateCallBack?: typeUtil.CallbackFunction\n ) {\n //check if readyState is already complete -->\n\n if (document.readyState === \"complete\") {\n this.ensureAdpData();\n if (interactiveStateCallBack) {\n interactiveStateCallBack();\n logUtil.consoleLog(\n `${interactiveStateCallBack.name} callback is triggered`\n );\n }\n if (completeReadyStateCallBack) {\n completeReadyStateCallBack();\n logUtil.consoleLog(\n `${completeReadyStateCallBack.name} callback is triggered`\n );\n }\n return;\n }\n //check if readyState is already complete -->\n\n document.addEventListener(\"readystatechange\", (_event) => {\n logUtil.consoleLog(`document.readyState became ${document.readyState}`);\n if (document.readyState === \"interactive\") {\n this.ensureAdpData();\n if (interactiveStateCallBack) {\n interactiveStateCallBack();\n logUtil.consoleLog(\n `${interactiveStateCallBack.name} callback is triggered`,\n _event\n );\n }\n } else if (document.readyState === \"complete\") {\n this.ensureAdpData();\n if (completeReadyStateCallBack) {\n completeReadyStateCallBack();\n logUtil.consoleLog(\n `${completeReadyStateCallBack.name} callback is triggered`,\n _event\n );\n }\n }\n });\n }\n\n private saveAffiliateParamsToStorage(): void {\n const data = this.affiliateParams;\n if (data) {\n StorageManager.save(\n this.storageAdpKey,\n data,\n this.storageAdpKeyTTLinMinutes\n );\n this.state_IsAffiliateParamsSaved = true;\n logUtil.consoleLog(\"affiliate params saved\", data);\n } else {\n logUtil.consoleLog(\"affiliate params are undefined and not saved \");\n }\n }\n\n private loadAffiliateParamsFromStorage(): boolean {\n const data = StorageManager.load(this.storageAdpKey);\n this.affiliateParams = data;\n if (data) {\n this.state_IsAffiliateParamsLoaded = true;\n logUtil.consoleLog(\"affiliate params loaded\", data);\n return true;\n } else {\n logUtil.consoleLog(\"affiliate params not found\");\n return false;\n }\n }\n\n public isAffiliateAvailable(): boolean {\n const isDataFound = this.loadAffiliateParamsFromStorage();\n if (isDataFound !== true) {\n return false;\n }\n if (objUtil.isObjNullOrUndefined(this.affiliateParams)) {\n return false;\n }\n if (objUtil.isNullOrEmpty(this.affiliateParams?.offerId)) {\n return false;\n }\n if (objUtil.isStrNullOrUndefined(this.affiliateParams?.transactionId)) {\n return false;\n }\n return true;\n\n }\n\n private _send(purchaseOrderData: PurchaseOrder) {\n //data validations -->\n const isDataFound = this.loadAffiliateParamsFromStorage();\n if (!isDataFound) {\n logUtil.consoleWarn(\n \"affiliate params not found, transaction canceled\"\n );\n return null;\n }\n const orderNumber = purchaseOrderData.orderNumber || \"N/A\";\n const dataWrapper = StorageManager.load(this.storageMixModelAdpKey);\n if (dataWrapper && dataWrapper?.orders) {\n const x = dataWrapper.orders.some(q => q === orderNumber);\n if (x) {\n logUtil.consoleError(\"order is already placed and conversion/transaction saved\");\n return null;\n }\n }\n\n if (validateClientConfig(this.config) !== true) {\n logUtil.consoleError(\"client config is not valid, please check data\");\n return;\n }\n logUtil.consoleLog(\"affParams\", this.affiliateParams);\n if (validateAffliateParams(this.affiliateParams) !== true) {\n logUtil.consoleError(\"affiliate params are not valid, please check data\");\n return;\n }\n if (validatePurchaseOrder(purchaseOrderData) !== true) {\n logUtil.consoleError(\"purchase order is not valid, please check data\");\n return;\n }\n //data validations <--\n\n const transaction = new PurchaseOrderTransaction({\n purchaseOrder: purchaseOrderData,\n affiliateParams: this.affiliateParams!,\n clientConfig: this.config!,\n });\n\n this.purchaseOrders.push(purchaseOrderData);\n this.purchaseOrderTransactions.push(transaction);\n logUtil.consoleLog(\"transaction process starts\");\n logUtil.consoleLog(\"transaction request\", transaction);\n\n\n\n\n\n\n const postObjData = transaction.toApiObject();\n logUtil.consoleLog(\"transactipn api object data\", postObjData);\n httpUtil.httpPost({\n url: this.eventApiUrl, data: postObjData,\n contentType: httpUtil.ContentTypeEnum.json,\n responseCallBack: (response) => {\n let dataWrapper = StorageManager.load(this.storageMixModelAdpKey);\n dataWrapper = dataWrapper || new StoreData();\n dataWrapper.orders.push(orderNumber);\n StorageManager.save(this.storageMixModelAdpKey, dataWrapper, this.storageAdpKeyTTLinMinutes)\n logUtil.consoleLog(\"transaction response\", response);\n }\n })\n\n }\n\n public send(data: PurchaseOrder) {\n this._send(data);\n }\n\n public sendPurchaseOrder(data: PurchaseOrder) {\n if (data) {\n this?.send(data);\n return;\n }\n logUtil.consoleError(\"order is undefined\");\n }\n}\n\nexport { AdpEcommClientV2 as AdpEcommClient };\n","import { AdpAffClient } from \"./affiliate/adpAffiliateClientV2\";\nimport { AdpEcommClient } from \"./ecomm/adpEcommClientV2\";\nimport { AffiliateParams } from \"./ecomm/types/affiliateParams\";\nimport { ClientConfig } from \"./ecomm/types/clientConfig\";\nimport { OfferDimension, PurchaseOrder, PurchaseOrderLineItem } from \"./ecomm/types/purchaseOrder\";\nimport { currencyUtil } from \"@repo/lib-web\";\nimport { PurchaseOrderTransaction } from \"./ecomm/types/purchaseOrderTransaction\";\nimport { CreateAffiliateUrlParams } from \"./affiliate/types/createAffiliateUrlParams\";\nimport { CreateUserInfoPageUrlParams } from \"./affiliate/types/createUserInfoPageUrlParams\";\nimport { CreateAffiliateUrlResponse } from \"./affiliate/types/createAffiliateUrlResponse\";\nimport { CreateAffiliateUrlRequest } from \"./affiliate/types/createAffiliateUrlRequest\";\nimport { CreateUserInfoPageUrlRequest } from \"./affiliate/types/createUserInfoPageUrlRequest\";\nconst Currency = currencyUtil.Currency\n\n\n\nexport { };\ndeclare global {\n interface Window {\n _adpClient: AdpEcommClient | undefined;\n _adpAffClient: AdpAffClient | undefined;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n\n }\n}\n\nexport {\n Currency, PurchaseOrder,\n PurchaseOrderLineItem,\n AffiliateParams,\n ClientConfig,\n PurchaseOrderTransaction,\n AdpEcommClient,\n OfferDimension,\n\n type CreateAffiliateUrlParams,\n CreateAffiliateUrlRequest,\n CreateAffiliateUrlResponse,\n type CreateUserInfoPageUrlParams,\n CreateUserInfoPageUrlRequest,\n AdpAffClient\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nlet _clientInstance: AdpEcommClient | undefined = undefined;\n\nexport function getEcommClientInstance() {\n return window?._adpClient;\n}\n\nexport function initEcommClient(conf?: ClientConfig | undefined): AdpEcommClient {\n\n window._adpClient = window?._adpClient || new AdpEcommClient();\n _clientInstance = window._adpClient;\n if (conf) {\n _clientInstance.initForTransaction(conf);\n } else {\n _clientInstance.initForTracking();\n }\n\n return _clientInstance;\n}\n\nexport function initPurchaseOrder(conf?: ClientConfig | undefined): PurchaseOrder {\n if (!_clientInstance) {\n _clientInstance = initEcommClient(conf);\n }\n if (conf && conf.advertiserId && conf.measurementId) {\n _clientInstance.initForTransaction(conf);\n }\n return new PurchaseOrder();\n}\n\nexport function sendPurchaseOrder(data: PurchaseOrder) {\n _clientInstance?.send(data);\n}\n\ninitEcommClient();\n\nexport function initAffClient() {\n window._adpAffClient = window?._adpAffClient || new AdpAffClient();\n return window._adpAffClient;\n\n}\n\ninitAffClient();\n\n\n\n\n\n\n\n\n"],"names":["callback","isArray","input","isObject","a","b","obj","k","isUndefined","isNumber","isDate","arr","fn","res","i","arrLen","extend","format","locale","strict","m","fun","len","flags","parsedParts","isNowValid","to","from","prop","val","momentPropertiesLen","config","msg","firstTime","args","arg","key","argLen","name","isFunction","parentConfig","childConfig","mom","now","output","number","targetLength","forceSign","absNumber","zerosToFill","sign","token","padded","ordinal","func","array","length","replaceLongDateFormatTokens","formatUpper","tok","withoutSuffix","string","isFuture","diff","units","inputObject","normalizedInput","normalizedProp","unitsObj","u","regex","strictRegex","isStrict","localeData","s","matched","p1","p2","p3","p4","argumentForCoercion","coercedNumber","value","tokenLen","year","y","unit","keepTime","d","isUTC","month","date","prioritized","prioritizedLen","n","x","o","modMonth","monthName","ii","llc","cmpLenRev","shortPieces","longPieces","mixedPieces","shortP","longP","h","M","ms","dow","doy","fwd","fwdlw","week","weekday","localWeekday","weekOffset","dayOfYear","resYear","resDayOfYear","resWeek","weekOffsetNext","ws","weekdays","weekdayName","day","minPieces","minp","shortp","longp","lowercase","kInput","pos","pos1","pos2","hours","minutes","isLower","arr1","arr2","minl","names","j","next","split","oldLocale","aliasedRequire","values","data","tmpLocale","overflow","l","match","allowTime","dateFormat","timeFormat","tzFormat","isoDatesLen","isoTimesLen","yearStr","monthStr","dayStr","hourStr","minuteStr","secondStr","result","weekdayStr","parsedInput","weekdayProvided","weekdayActual","obsOffset","militaryOffset","numOffset","hm","parsedArray","defaults","c","nowValue","currentDate","expectedWeekday","yearToUse","w","weekYear","temp","weekdayOverflow","curWeek","tokens","skipped","stringLength","totalParsedInputLength","era","hour","meridiem","isPm","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","configfLen","dayOrDate","other","moments","unitHasDecimal","orderLen","duration","years","quarters","months","weeks","days","seconds","milliseconds","array1","array2","dontConvert","lengthDiff","diffs","separator","offset","matcher","matches","chunk","parts","model","keepLocalTime","keepMinutes","localAdjust","tZone","ret","diffRes","inp","base","direction","period","dur","tmp","isAdding","updateOffset","isString","objectTest","propertyTest","properties","property","propertyLen","arrayTest","dataTypeTest","item","myMoment","time","formats","sod","localInput","inclusivity","localFrom","localTo","inputMs","asFloat","that","zoneDelta","wholeMonthDiff","anchor","anchor2","adjust","toString","keepOffset","utc","zone","prefix","datetime","suffix","inputString","newLocaleData","dividend","divisor","startOfDate","toArray","eras","eraName","abbr","narrow","dir","abbrPieces","namePieces","narrowPieces","erasName","erasAbbr","erasNarrow","getter","weekInfo","weeksTarget","dayOfYearData","index","field","setter","out","localeSorted","shift","monthsFromDays","alias","posNegDuration","thresholds","roundingFunction","threshold","limit","argWithSuffix","argThresholds","withSuffix","th","total","totalSign","ymSign","daysSign","hmsSign","target","source","converter","defaultAttributes","set","attributes","stringifiedAttributes","attributeName","get","cookies","jar","found","currencyUtil","CurrencyCode","code","num","_Currency","Currency","thisArg","cache","thing","str","type","prototype","kind","allOwnKeys","keys","_key","context","caseless","assignValue","targetKey","content","constructor","superConstructor","props","descriptors","sourceObj","destObj","filter","propFilter","merged","searchString","position","lastIndex","TypedArray","iterator","pair","regExp","hasOwnProperty","reducer","reducedDescriptors","descriptor","arrayOrString","delimiter","define","defaultValue","size","alphabet","stack","visit","reducedValue","message","request","response","utils","error","customProps","axiosError","path","dots","formData","options","option","metaTokens","visitor","defaultVisitor","indexes","useBlob","convertValue","el","exposedHelpers","build","encode","charMap","params","encoder","_encode","url","serializeFn","serializedParams","hashmarkIndex","fulfilled","rejected","id","URLSearchParams","FormData","Blob","product","platform","helpers","buildPath","isNumericKey","isLast","rawValue","parser","e","headers","contentType","hasJSONContentType","isObjectPayload","isFileList","_FormData","transitional","forcedJSONParsing","JSONRequested","strictJSONParsing","status","method","rawHeaders","parsed","line","header","tokensRE","isHeaderNameFilter","char","accessorName","methodName","arg1","arg2","arg3","valueOrRewrite","rewrite","self","setHeader","_value","_header","_rewrite","lHeader","setHeaders","deleted","deleteHeader","normalized","targets","asStrings","first","computed","accessors","defineAccessor","mapped","headerValue","fns","resolve","reject","validateStatus","expires","domain","secure","cookie","baseURL","relativeURL","requestedURL","msie","urlParsingNode","originURL","resolveURL","href","requestURL","samplesCount","min","bytes","timestamps","head","tail","firstSampleTS","chunkLength","startedAt","bytesCount","passed","listener","isDownloadStream","bytesNotified","_speedometer","loaded","progressBytes","rate","inRange","requestData","requestHeaders","responseType","withXSRFToken","onCanceled","done","username","password","fullPath","onloadend","responseHeaders","err","timeoutErrorMessage","xsrfValue","cancel","protocol","reason","adapter","adapters","nameOrAdapter","rejectedReasons","reasons","state","config1","config2","getMergedValue","mergeDeepProperties","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","merge","configValue","validators","validator","version","formatMessage","opt","desc","opts","schema","allowUnknown","instanceConfig","configOrUrl","paramsSerializer","contextHeaders","requestInterceptorChain","synchronousRequestInterceptors","interceptor","responseInterceptorChain","promise","chain","newConfig","onFulfilled","onRejected","generateHTTPMethod","isForm","executor","resolvePromise","onfulfilled","_resolve","payload","defaultConfig","instance","promises","window","undefined","LIBVERSION","EMPTY","UNKNOWN","FUNC_TYPE","UNDEF_TYPE","OBJ_TYPE","STR_TYPE","MAJOR","MODEL","NAME","TYPE","VENDOR","VERSION","ARCHITECTURE","CONSOLE","MOBILE","TABLET","SMARTTV","WEARABLE","EMBEDDED","UA_MAX_LENGTH","AMAZON","APPLE","ASUS","BLACKBERRY","BROWSER","CHROME","EDGE","FIREFOX","GOOGLE","HUAWEI","LG","MICROSOFT","MOTOROLA","OPERA","SAMSUNG","SHARP","SONY","XIAOMI","ZEBRA","FACEBOOK","CHROMIUM_OS","MAC_OS","regexes","extensions","mergedRegexes","enumerize","enums","has","str1","str2","lowerize","majorize","trim","rgxMapper","ua","arrays","p","q","strMapper","map","oldSafariMap","windowsVersionMap","UAParser","_navigator","_ua","_uach","_rgxmap","_isSelfNav","_browser","_cpu","_device","_engine","_os","module","exports","$","this","buf","rnds","objUtil","_a","uuidv4","deviceUtil","userAgent","DeviceTypeEnum","_DeviceTypeInfo","_b","_c","_d","_e","_f","DeviceTypeInfo","logUtil","isLoggerActive","consoleBold","consoleNormal","_logPrefix","numUtil","typeUtil","ObjectIndexer","isNullOrEmpty","urlUtil","urlParams","dateUtil","DateTimeHelper","pageUtil","PageTypeEnum","cookieUtil","CookieHelper","cookieName","httpUtil","ContentTypeEnum","httpPost","responseCallBack","errorCallBack","logger","httpPostPromise","httpGet","momentUtil","moment","global","outputType","sharedMemory","notString","blocks","f","t","h0","h1","h2","h3","h4","buffer","dataView","hashUtil","hashSha1","sourceStr","hash","init","__publicField","onCloseCallback","offCanvas","closeButton","body","contentWrapper","imgSpan","img","heading","linkReady","description","resultContent","copyLinkDiv","copyLinkButton","copyLinkImg","copyLinkSpan","span","footer","footerLink","footerText","share","shareButtons","dataurl","backdrop","spanElement","checkAnimation","textToCopy","button","brandSlug","cssId","link","resp","req","httpRes","isEnabled","mod","dataT","ttlInMinutes","expiryObj","dataString","dataObj","Cookies","ttlObjc","_StorageManager","OfferDimension","itemIndex","_states","adpUrlParams","adpTransactionClickIdUrlDataValue","adpOfferIdDataValue","isMissing_adpTransactionClickIdUrlDataValue","isMissing_adpOfferIdDataValue","completeReadyStateCallBack","interactiveStateCallBack","_event","purchaseOrderData","orderNumber","dataWrapper","transaction","postObjData","dataWrapper2","conf","AdpEcommClient","AdpAffClient"],"mappings":"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","x_google_ignoreList":[0,1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,62]}