{"version":3,"file":"color-scale-utils-C4KU2jNr.mjs","sources":["../../../node_modules/date-fns/locale/_lib/buildFormatLongFn.js","../../../node_modules/date-fns/locale/_lib/buildLocalizeFn.js","../../../node_modules/date-fns/locale/_lib/buildMatchFn.js","../../../node_modules/date-fns/locale/_lib/buildMatchPatternFn.js","../../../node_modules/date-fns/constants.js","../../../node_modules/date-fns/constructFrom.js","../../../node_modules/date-fns/_lib/normalizeDates.js","../../../node_modules/date-fns/_lib/defaultOptions.js","../../../node_modules/date-fns/toDate.js","../../../node_modules/date-fns/startOfWeek.js","../../../node_modules/date-fns/locale/en-US/_lib/formatDistance.js","../../../node_modules/date-fns/locale/en-US/_lib/formatRelative.js","../../../node_modules/date-fns/locale/en-US/_lib/localize.js","../../../node_modules/date-fns/locale/en-US/_lib/match.js","../../../node_modules/date-fns/locale/en-US/_lib/formatLong.js","../../../node_modules/date-fns/locale/en-US.js","../../../node_modules/lodash-es/_freeGlobal.js","../../../node_modules/lodash-es/_root.js","../../../node_modules/lodash-es/_Symbol.js","../../../node_modules/lodash-es/_getRawTag.js","../../../node_modules/lodash-es/_objectToString.js","../../../node_modules/lodash-es/_baseGetTag.js","../../../node_modules/lodash-es/isObjectLike.js","../../../node_modules/lodash-es/isSymbol.js","../../../node_modules/lodash-es/_arrayMap.js","../../../node_modules/lodash-es/isArray.js","../../../node_modules/lodash-es/_baseToString.js","../../../node_modules/lodash-es/isObject.js","../../../node_modules/lodash-es/identity.js","../../../node_modules/lodash-es/isFunction.js","../../../node_modules/lodash-es/_coreJsData.js","../../../node_modules/lodash-es/_isMasked.js","../../../node_modules/lodash-es/_toSource.js","../../../node_modules/lodash-es/_baseIsNative.js","../../../node_modules/lodash-es/_getValue.js","../../../node_modules/lodash-es/_getNative.js","../../../node_modules/lodash-es/_WeakMap.js","../../../node_modules/lodash-es/_baseCreate.js","../../../node_modules/lodash-es/_apply.js","../../../node_modules/lodash-es/noop.js","../../../node_modules/lodash-es/_copyArray.js","../../../node_modules/lodash-es/_shortOut.js","../../../node_modules/lodash-es/constant.js","../../../node_modules/lodash-es/_defineProperty.js","../../../node_modules/lodash-es/_baseSetToString.js","../../../node_modules/lodash-es/_setToString.js","../../../node_modules/lodash-es/_arrayEach.js","../../../node_modules/lodash-es/_baseFindIndex.js","../../../node_modules/lodash-es/_baseIsNaN.js","../../../node_modules/lodash-es/_strictIndexOf.js","../../../node_modules/lodash-es/_baseIndexOf.js","../../../node_modules/lodash-es/_arrayIncludes.js","../../../node_modules/lodash-es/_isIndex.js","../../../node_modules/lodash-es/_baseAssignValue.js","../../../node_modules/lodash-es/eq.js","../../../node_modules/lodash-es/_assignValue.js","../../../node_modules/lodash-es/_copyObject.js","../../../node_modules/lodash-es/_overRest.js","../../../node_modules/lodash-es/_baseRest.js","../../../node_modules/lodash-es/isLength.js","../../../node_modules/lodash-es/isArrayLike.js","../../../node_modules/lodash-es/_isIterateeCall.js","../../../node_modules/lodash-es/_createAssigner.js","../../../node_modules/lodash-es/_isPrototype.js","../../../node_modules/lodash-es/_baseTimes.js","../../../node_modules/lodash-es/_baseIsArguments.js","../../../node_modules/lodash-es/isArguments.js","../../../node_modules/lodash-es/stubFalse.js","../../../node_modules/lodash-es/isBuffer.js","../../../node_modules/lodash-es/_baseIsTypedArray.js","../../../node_modules/lodash-es/_baseUnary.js","../../../node_modules/lodash-es/_nodeUtil.js","../../../node_modules/lodash-es/isTypedArray.js","../../../node_modules/lodash-es/_arrayLikeKeys.js","../../../node_modules/lodash-es/_overArg.js","../../../node_modules/lodash-es/_nativeKeys.js","../../../node_modules/lodash-es/_baseKeys.js","../../../node_modules/lodash-es/keys.js","../../../node_modules/lodash-es/_nativeKeysIn.js","../../../node_modules/lodash-es/_baseKeysIn.js","../../../node_modules/lodash-es/keysIn.js","../../../node_modules/lodash-es/_isKey.js","../../../node_modules/lodash-es/_nativeCreate.js","../../../node_modules/lodash-es/_hashClear.js","../../../node_modules/lodash-es/_hashDelete.js","../../../node_modules/lodash-es/_hashGet.js","../../../node_modules/lodash-es/_hashHas.js","../../../node_modules/lodash-es/_hashSet.js","../../../node_modules/lodash-es/_Hash.js","../../../node_modules/lodash-es/_listCacheClear.js","../../../node_modules/lodash-es/_assocIndexOf.js","../../../node_modules/lodash-es/_listCacheDelete.js","../../../node_modules/lodash-es/_listCacheGet.js","../../../node_modules/lodash-es/_listCacheHas.js","../../../node_modules/lodash-es/_listCacheSet.js","../../../node_modules/lodash-es/_ListCache.js","../../../node_modules/lodash-es/_Map.js","../../../node_modules/lodash-es/_mapCacheClear.js","../../../node_modules/lodash-es/_isKeyable.js","../../../node_modules/lodash-es/_getMapData.js","../../../node_modules/lodash-es/_mapCacheDelete.js","../../../node_modules/lodash-es/_mapCacheGet.js","../../../node_modules/lodash-es/_mapCacheHas.js","../../../node_modules/lodash-es/_mapCacheSet.js","../../../node_modules/lodash-es/_MapCache.js","../../../node_modules/lodash-es/memoize.js","../../../node_modules/lodash-es/_memoizeCapped.js","../../../node_modules/lodash-es/_stringToPath.js","../../../node_modules/lodash-es/toString.js","../../../node_modules/lodash-es/_castPath.js","../../../node_modules/lodash-es/_toKey.js","../../../node_modules/lodash-es/_baseGet.js","../../../node_modules/lodash-es/get.js","../../../node_modules/lodash-es/_arrayPush.js","../../../node_modules/lodash-es/_isFlattenable.js","../../../node_modules/lodash-es/_baseFlatten.js","../../../node_modules/lodash-es/_getPrototype.js","../../../node_modules/lodash-es/isPlainObject.js","../../../node_modules/lodash-es/_stackClear.js","../../../node_modules/lodash-es/_stackDelete.js","../../../node_modules/lodash-es/_stackGet.js","../../../node_modules/lodash-es/_stackHas.js","../../../node_modules/lodash-es/_stackSet.js","../../../node_modules/lodash-es/_Stack.js","../../../node_modules/lodash-es/_baseAssign.js","../../../node_modules/lodash-es/_baseAssignIn.js","../../../node_modules/lodash-es/_cloneBuffer.js","../../../node_modules/lodash-es/_arrayFilter.js","../../../node_modules/lodash-es/stubArray.js","../../../node_modules/lodash-es/_getSymbols.js","../../../node_modules/lodash-es/_copySymbols.js","../../../node_modules/lodash-es/_getSymbolsIn.js","../../../node_modules/lodash-es/_copySymbolsIn.js","../../../node_modules/lodash-es/_baseGetAllKeys.js","../../../node_modules/lodash-es/_getAllKeys.js","../../../node_modules/lodash-es/_getAllKeysIn.js","../../../node_modules/lodash-es/_DataView.js","../../../node_modules/lodash-es/_Promise.js","../../../node_modules/lodash-es/_Set.js","../../../node_modules/lodash-es/_getTag.js","../../../node_modules/lodash-es/_initCloneArray.js","../../../node_modules/lodash-es/_Uint8Array.js","../../../node_modules/lodash-es/_cloneArrayBuffer.js","../../../node_modules/lodash-es/_cloneDataView.js","../../../node_modules/lodash-es/_cloneRegExp.js","../../../node_modules/lodash-es/_cloneSymbol.js","../../../node_modules/lodash-es/_cloneTypedArray.js","../../../node_modules/lodash-es/_initCloneByTag.js","../../../node_modules/lodash-es/_initCloneObject.js","../../../node_modules/lodash-es/_baseIsMap.js","../../../node_modules/lodash-es/isMap.js","../../../node_modules/lodash-es/_baseIsSet.js","../../../node_modules/lodash-es/isSet.js","../../../node_modules/lodash-es/_baseClone.js","../../../node_modules/lodash-es/cloneDeep.js","../../../node_modules/lodash-es/_setCacheAdd.js","../../../node_modules/lodash-es/_setCacheHas.js","../../../node_modules/lodash-es/_SetCache.js","../../../node_modules/lodash-es/_arraySome.js","../../../node_modules/lodash-es/_cacheHas.js","../../../node_modules/lodash-es/_equalArrays.js","../../../node_modules/lodash-es/_mapToArray.js","../../../node_modules/lodash-es/_setToArray.js","../../../node_modules/lodash-es/_equalByTag.js","../../../node_modules/lodash-es/_equalObjects.js","../../../node_modules/lodash-es/_baseIsEqualDeep.js","../../../node_modules/lodash-es/_baseIsEqual.js","../../../node_modules/lodash-es/_baseIsMatch.js","../../../node_modules/lodash-es/_isStrictComparable.js","../../../node_modules/lodash-es/_getMatchData.js","../../../node_modules/lodash-es/_matchesStrictComparable.js","../../../node_modules/lodash-es/_baseMatches.js","../../../node_modules/lodash-es/_baseHasIn.js","../../../node_modules/lodash-es/_hasPath.js","../../../node_modules/lodash-es/hasIn.js","../../../node_modules/lodash-es/_baseMatchesProperty.js","../../../node_modules/lodash-es/_baseProperty.js","../../../node_modules/lodash-es/_basePropertyDeep.js","../../../node_modules/lodash-es/property.js","../../../node_modules/lodash-es/_baseIteratee.js","../../../node_modules/lodash-es/_createBaseFor.js","../../../node_modules/lodash-es/_baseFor.js","../../../node_modules/lodash-es/_assignMergeValue.js","../../../node_modules/lodash-es/isArrayLikeObject.js","../../../node_modules/lodash-es/_safeGet.js","../../../node_modules/lodash-es/toPlainObject.js","../../../node_modules/lodash-es/_baseMergeDeep.js","../../../node_modules/lodash-es/_baseMerge.js","../../../node_modules/lodash-es/last.js","../../../node_modules/lodash-es/isEmpty.js","../../../node_modules/lodash-es/merge.js","../../../node_modules/lodash-es/_createSet.js","../../../node_modules/lodash-es/_baseUniq.js","../../../node_modules/lodash-es/unionBy.js","../../../node_modules/lodash-es/uniq.js","../../../node_modules/d3-array/src/ascending.js","../../../node_modules/d3-array/src/descending.js","../../../node_modules/d3-array/src/bisector.js","../../../node_modules/d3-array/src/number.js","../../../node_modules/d3-array/src/bisect.js","../../../node_modules/d3-array/src/extent.js","../../../node_modules/d3-array/node_modules/internmap/src/index.js","../../../node_modules/d3-array/src/ticks.js","../../../node_modules/d3-array/src/max.js","../../../node_modules/d3-array/src/min.js","../../../node_modules/d3-dispatch/src/dispatch.js","../../../node_modules/d3-selection/src/namespaces.js","../../../node_modules/d3-selection/src/namespace.js","../../../node_modules/d3-selection/src/creator.js","../../../node_modules/d3-selection/src/selector.js","../../../node_modules/d3-selection/src/selection/select.js","../../../node_modules/d3-selection/src/array.js","../../../node_modules/d3-selection/src/selectorAll.js","../../../node_modules/d3-selection/src/selection/selectAll.js","../../../node_modules/d3-selection/src/matcher.js","../../../node_modules/d3-selection/src/selection/selectChild.js","../../../node_modules/d3-selection/src/selection/selectChildren.js","../../../node_modules/d3-selection/src/selection/filter.js","../../../node_modules/d3-selection/src/selection/sparse.js","../../../node_modules/d3-selection/src/selection/enter.js","../../../node_modules/d3-selection/src/constant.js","../../../node_modules/d3-selection/src/selection/data.js","../../../node_modules/d3-selection/src/selection/exit.js","../../../node_modules/d3-selection/src/selection/join.js","../../../node_modules/d3-selection/src/selection/merge.js","../../../node_modules/d3-selection/src/selection/order.js","../../../node_modules/d3-selection/src/selection/sort.js","../../../node_modules/d3-selection/src/selection/call.js","../../../node_modules/d3-selection/src/selection/nodes.js","../../../node_modules/d3-selection/src/selection/node.js","../../../node_modules/d3-selection/src/selection/size.js","../../../node_modules/d3-selection/src/selection/empty.js","../../../node_modules/d3-selection/src/selection/each.js","../../../node_modules/d3-selection/src/selection/attr.js","../../../node_modules/d3-selection/src/window.js","../../../node_modules/d3-selection/src/selection/style.js","../../../node_modules/d3-selection/src/selection/property.js","../../../node_modules/d3-selection/src/selection/classed.js","../../../node_modules/d3-selection/src/selection/text.js","../../../node_modules/d3-selection/src/selection/html.js","../../../node_modules/d3-selection/src/selection/raise.js","../../../node_modules/d3-selection/src/selection/lower.js","../../../node_modules/d3-selection/src/selection/append.js","../../../node_modules/d3-selection/src/selection/insert.js","../../../node_modules/d3-selection/src/selection/remove.js","../../../node_modules/d3-selection/src/selection/clone.js","../../../node_modules/d3-selection/src/selection/datum.js","../../../node_modules/d3-selection/src/selection/on.js","../../../node_modules/d3-selection/src/selection/dispatch.js","../../../node_modules/d3-selection/src/selection/iterator.js","../../../node_modules/d3-selection/src/selection/index.js","../../../node_modules/d3-selection/src/sourceEvent.js","../../../node_modules/d3-selection/src/pointer.js","../../../node_modules/d3-color/src/define.js","../../../node_modules/d3-color/src/color.js","../../../node_modules/d3-interpolate/src/constant.js","../../../node_modules/d3-interpolate/src/color.js","../../../node_modules/d3-interpolate/src/rgb.js","../../../node_modules/d3-interpolate/src/numberArray.js","../../../node_modules/d3-interpolate/src/array.js","../../../node_modules/d3-interpolate/src/date.js","../../../node_modules/d3-interpolate/src/number.js","../../../node_modules/d3-interpolate/src/object.js","../../../node_modules/d3-interpolate/src/string.js","../../../node_modules/d3-interpolate/src/value.js","../../../node_modules/d3-interpolate/src/round.js","../../../node_modules/d3-interpolate/src/transform/decompose.js","../../../node_modules/d3-interpolate/src/transform/parse.js","../../../node_modules/d3-interpolate/src/transform/index.js","../../../node_modules/d3-timer/src/timer.js","../../../node_modules/d3-timer/src/timeout.js","../../../node_modules/d3-transition/src/transition/schedule.js","../../../node_modules/d3-transition/src/interrupt.js","../../../node_modules/d3-transition/src/selection/interrupt.js","../../../node_modules/d3-transition/src/transition/tween.js","../../../node_modules/d3-transition/src/transition/interpolate.js","../../../node_modules/d3-transition/src/transition/attr.js","../../../node_modules/d3-transition/src/transition/attrTween.js","../../../node_modules/d3-transition/src/transition/delay.js","../../../node_modules/d3-transition/src/transition/duration.js","../../../node_modules/d3-transition/src/transition/ease.js","../../../node_modules/d3-transition/src/transition/easeVarying.js","../../../node_modules/d3-transition/src/transition/filter.js","../../../node_modules/d3-transition/src/transition/merge.js","../../../node_modules/d3-transition/src/transition/on.js","../../../node_modules/d3-transition/src/transition/remove.js","../../../node_modules/d3-transition/src/transition/select.js","../../../node_modules/d3-transition/src/transition/selectAll.js","../../../node_modules/d3-transition/src/transition/selection.js","../../../node_modules/d3-transition/src/transition/style.js","../../../node_modules/d3-transition/src/transition/styleTween.js","../../../node_modules/d3-transition/src/transition/text.js","../../../node_modules/d3-transition/src/transition/textTween.js","../../../node_modules/d3-transition/src/transition/transition.js","../../../node_modules/d3-transition/src/transition/end.js","../../../node_modules/d3-transition/src/transition/index.js","../../../node_modules/d3-ease/src/cubic.js","../../../node_modules/d3-transition/src/selection/transition.js","../../../node_modules/d3-transition/src/selection/index.js","../../../node_modules/d3-format/src/formatDecimal.js","../../../node_modules/d3-format/src/exponent.js","../../../node_modules/d3-format/src/formatGroup.js","../../../node_modules/d3-format/src/formatNumerals.js","../../../node_modules/d3-format/src/formatSpecifier.js","../../../node_modules/d3-format/src/formatTrim.js","../../../node_modules/d3-format/src/formatPrefixAuto.js","../../../node_modules/d3-format/src/formatRounded.js","../../../node_modules/d3-format/src/formatTypes.js","../../../node_modules/d3-format/src/identity.js","../../../node_modules/d3-format/src/locale.js","../../../node_modules/d3-format/src/defaultLocale.js","../../../node_modules/d3-format/src/precisionFixed.js","../../../node_modules/d3-format/src/precisionPrefix.js","../../../node_modules/d3-format/src/precisionRound.js","../../../node_modules/d3-scale/src/init.js","../../../node_modules/d3-scale/src/ordinal.js","../../../node_modules/d3-scale/src/constant.js","../../../node_modules/d3-scale/src/number.js","../../../node_modules/d3-scale/src/continuous.js","../../../node_modules/d3-scale/src/tickFormat.js","../../../node_modules/d3-scale/src/linear.js","../../../node_modules/d3-scale/src/quantize.js","../../../node_modules/d3-zoom/src/transform.js","../src/configuration-non-customizable.ts","../src/configuration.ts","../src/tools.ts","../../../node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.js","../../../node_modules/date-fns/startOfDay.js","../../../node_modules/date-fns/differenceInCalendarDays.js","../../../node_modules/date-fns/startOfYear.js","../../../node_modules/date-fns/getDayOfYear.js","../../../node_modules/date-fns/startOfISOWeek.js","../../../node_modules/date-fns/getISOWeekYear.js","../../../node_modules/date-fns/startOfISOWeekYear.js","../../../node_modules/date-fns/getISOWeek.js","../../../node_modules/date-fns/getWeekYear.js","../../../node_modules/date-fns/startOfWeekYear.js","../../../node_modules/date-fns/getWeek.js","../../../node_modules/date-fns/_lib/addLeadingZeros.js","../../../node_modules/date-fns/_lib/format/lightFormatters.js","../../../node_modules/date-fns/_lib/format/formatters.js","../../../node_modules/date-fns/_lib/format/longFormatters.js","../../../node_modules/date-fns/_lib/protectedTokens.js","../../../node_modules/date-fns/isDate.js","../../../node_modules/date-fns/isValid.js","../../../node_modules/date-fns/format.js","../src/services/time-series.ts","../src/services/color-scale-utils.ts"],"sourcesContent":["export function buildFormatLongFn(args) {\n  return (options = {}) => {\n    // TODO: Remove String()\n    const width = options.width ? String(options.width) : args.defaultWidth;\n    const format = args.formats[width] || args.formats[args.defaultWidth];\n    return format;\n  };\n}\n","/**\n * The localize function argument callback which allows to convert raw value to\n * the actual type.\n *\n * @param value - The value to convert\n *\n * @returns The converted value\n */\n\n/**\n * The map of localized values for each width.\n */\n\n/**\n * The index type of the locale unit value. It types conversion of units of\n * values that don't start at 0 (i.e. quarters).\n */\n\n/**\n * Converts the unit value to the tuple of values.\n */\n\n/**\n * The tuple of localized era values. The first element represents BC,\n * the second element represents AD.\n */\n\n/**\n * The tuple of localized quarter values. The first element represents Q1.\n */\n\n/**\n * The tuple of localized day values. The first element represents Sunday.\n */\n\n/**\n * The tuple of localized month values. The first element represents January.\n */\n\nexport function buildLocalizeFn(args) {\n  return (value, options) => {\n    const context = options?.context ? String(options.context) : \"standalone\";\n\n    let valuesArray;\n    if (context === \"formatting\" && args.formattingValues) {\n      const defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n      const width = options?.width ? String(options.width) : defaultWidth;\n\n      valuesArray =\n        args.formattingValues[width] || args.formattingValues[defaultWidth];\n    } else {\n      const defaultWidth = args.defaultWidth;\n      const width = options?.width ? String(options.width) : args.defaultWidth;\n\n      valuesArray = args.values[width] || args.values[defaultWidth];\n    }\n    const index = args.argumentCallback ? args.argumentCallback(value) : value;\n\n    // @ts-expect-error - For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n    return valuesArray[index];\n  };\n}\n","export function buildMatchFn(args) {\n  return (string, options = {}) => {\n    const width = options.width;\n\n    const matchPattern =\n      (width && args.matchPatterns[width]) ||\n      args.matchPatterns[args.defaultMatchWidth];\n    const matchResult = string.match(matchPattern);\n\n    if (!matchResult) {\n      return null;\n    }\n    const matchedString = matchResult[0];\n\n    const parsePatterns =\n      (width && args.parsePatterns[width]) ||\n      args.parsePatterns[args.defaultParseWidth];\n\n    const key = Array.isArray(parsePatterns)\n      ? findIndex(parsePatterns, (pattern) => pattern.test(matchedString))\n      : // [TODO] -- I challenge you to fix the type\n        findKey(parsePatterns, (pattern) => pattern.test(matchedString));\n\n    let value;\n\n    value = args.valueCallback ? args.valueCallback(key) : key;\n    value = options.valueCallback\n      ? // [TODO] -- I challenge you to fix the type\n        options.valueCallback(value)\n      : value;\n\n    const rest = string.slice(matchedString.length);\n\n    return { value, rest };\n  };\n}\n\nfunction findKey(object, predicate) {\n  for (const key in object) {\n    if (\n      Object.prototype.hasOwnProperty.call(object, key) &&\n      predicate(object[key])\n    ) {\n      return key;\n    }\n  }\n  return undefined;\n}\n\nfunction findIndex(array, predicate) {\n  for (let key = 0; key < array.length; key++) {\n    if (predicate(array[key])) {\n      return key;\n    }\n  }\n  return undefined;\n}\n","export function buildMatchPatternFn(args) {\n  return (string, options = {}) => {\n    const matchResult = string.match(args.matchPattern);\n    if (!matchResult) return null;\n    const matchedString = matchResult[0];\n\n    const parseResult = string.match(args.parsePattern);\n    if (!parseResult) return null;\n    let value = args.valueCallback\n      ? args.valueCallback(parseResult[0])\n      : parseResult[0];\n\n    // [TODO] I challenge you to fix the type\n    value = options.valueCallback ? options.valueCallback(value) : value;\n\n    const rest = string.slice(matchedString.length);\n\n    return { value, rest };\n  };\n}\n","/**\n * @module constants\n * @summary Useful constants\n * @description\n * Collection of useful date constants.\n *\n * The constants could be imported from `date-fns/constants`:\n *\n * ```ts\n * import { maxTime, minTime } from \"./constants/date-fns/constants\";\n *\n * function isAllowedTime(time) {\n *   return time <= maxTime && time >= minTime;\n * }\n * ```\n */\n\n/**\n * @constant\n * @name daysInWeek\n * @summary Days in 1 week.\n */\nexport const daysInWeek = 7;\n\n/**\n * @constant\n * @name daysInYear\n * @summary Days in 1 year.\n *\n * @description\n * How many days in a year.\n *\n * One years equals 365.2425 days according to the formula:\n *\n * > Leap year occurs every 4 years, except for years that are divisible by 100 and not divisible by 400.\n * > 1 mean year = (365+1/4-1/100+1/400) days = 365.2425 days\n */\nexport const daysInYear = 365.2425;\n\n/**\n * @constant\n * @name maxTime\n * @summary Maximum allowed time.\n *\n * @example\n * import { maxTime } from \"./constants/date-fns/constants\";\n *\n * const isValid = 8640000000000001 <= maxTime;\n * //=> false\n *\n * new Date(8640000000000001);\n * //=> Invalid Date\n */\nexport const maxTime = Math.pow(10, 8) * 24 * 60 * 60 * 1000;\n\n/**\n * @constant\n * @name minTime\n * @summary Minimum allowed time.\n *\n * @example\n * import { minTime } from \"./constants/date-fns/constants\";\n *\n * const isValid = -8640000000000001 >= minTime;\n * //=> false\n *\n * new Date(-8640000000000001)\n * //=> Invalid Date\n */\nexport const minTime = -maxTime;\n\n/**\n * @constant\n * @name millisecondsInWeek\n * @summary Milliseconds in 1 week.\n */\nexport const millisecondsInWeek = 604800000;\n\n/**\n * @constant\n * @name millisecondsInDay\n * @summary Milliseconds in 1 day.\n */\nexport const millisecondsInDay = 86400000;\n\n/**\n * @constant\n * @name millisecondsInMinute\n * @summary Milliseconds in 1 minute\n */\nexport const millisecondsInMinute = 60000;\n\n/**\n * @constant\n * @name millisecondsInHour\n * @summary Milliseconds in 1 hour\n */\nexport const millisecondsInHour = 3600000;\n\n/**\n * @constant\n * @name millisecondsInSecond\n * @summary Milliseconds in 1 second\n */\nexport const millisecondsInSecond = 1000;\n\n/**\n * @constant\n * @name minutesInYear\n * @summary Minutes in 1 year.\n */\nexport const minutesInYear = 525600;\n\n/**\n * @constant\n * @name minutesInMonth\n * @summary Minutes in 1 month.\n */\nexport const minutesInMonth = 43200;\n\n/**\n * @constant\n * @name minutesInDay\n * @summary Minutes in 1 day.\n */\nexport const minutesInDay = 1440;\n\n/**\n * @constant\n * @name minutesInHour\n * @summary Minutes in 1 hour.\n */\nexport const minutesInHour = 60;\n\n/**\n * @constant\n * @name monthsInQuarter\n * @summary Months in 1 quarter.\n */\nexport const monthsInQuarter = 3;\n\n/**\n * @constant\n * @name monthsInYear\n * @summary Months in 1 year.\n */\nexport const monthsInYear = 12;\n\n/**\n * @constant\n * @name quartersInYear\n * @summary Quarters in 1 year\n */\nexport const quartersInYear = 4;\n\n/**\n * @constant\n * @name secondsInHour\n * @summary Seconds in 1 hour.\n */\nexport const secondsInHour = 3600;\n\n/**\n * @constant\n * @name secondsInMinute\n * @summary Seconds in 1 minute.\n */\nexport const secondsInMinute = 60;\n\n/**\n * @constant\n * @name secondsInDay\n * @summary Seconds in 1 day.\n */\nexport const secondsInDay = secondsInHour * 24;\n\n/**\n * @constant\n * @name secondsInWeek\n * @summary Seconds in 1 week.\n */\nexport const secondsInWeek = secondsInDay * 7;\n\n/**\n * @constant\n * @name secondsInYear\n * @summary Seconds in 1 year.\n */\nexport const secondsInYear = secondsInDay * daysInYear;\n\n/**\n * @constant\n * @name secondsInMonth\n * @summary Seconds in 1 month\n */\nexport const secondsInMonth = secondsInYear / 12;\n\n/**\n * @constant\n * @name secondsInQuarter\n * @summary Seconds in 1 quarter.\n */\nexport const secondsInQuarter = secondsInMonth * 3;\n\n/**\n * @constant\n * @name constructFromSymbol\n * @summary Symbol enabling Date extensions to inherit properties from the reference date.\n *\n * The symbol is used to enable the `constructFrom` function to construct a date\n * using a reference date and a value. It allows to transfer extra properties\n * from the reference date to the new date. It's useful for extensions like\n * [`TZDate`](https://github.com/date-fns/tz) that accept a time zone as\n * a constructor argument.\n */\nexport const constructFromSymbol = Symbol.for(\"constructDateFrom\");\n","import { constructFromSymbol } from \"./constants.js\";\n\n/**\n * @name constructFrom\n * @category Generic Helpers\n * @summary Constructs a date using the reference date and the value\n *\n * @description\n * The function constructs a new date using the constructor from the reference\n * date and the given value. It helps to build generic functions that accept\n * date extensions.\n *\n * It defaults to `Date` if the passed reference date is a number or a string.\n *\n * Starting from v3.7.0, it allows to construct a date using `[Symbol.for(\"constructDateFrom\")]`\n * enabling to transfer extra properties from the reference date to the new date.\n * It's useful for extensions like [`TZDate`](https://github.com/date-fns/tz)\n * that accept a time zone as a constructor argument.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The reference date to take constructor from\n * @param value - The value to create the date\n *\n * @returns Date initialized using the given date and value\n *\n * @example\n * import { constructFrom } from \"./constructFrom/date-fns\";\n *\n * // A function that clones a date preserving the original type\n * function cloneDate<DateType extends Date>(date: DateType): DateType {\n *   return constructFrom(\n *     date, // Use constructor from the given date\n *     date.getTime() // Use the date value to create a new date\n *   );\n * }\n */\nexport function constructFrom(date, value) {\n  if (typeof date === \"function\") return date(value);\n\n  if (date && typeof date === \"object\" && constructFromSymbol in date)\n    return date[constructFromSymbol](value);\n\n  if (date instanceof Date) return new date.constructor(value);\n\n  return new Date(value);\n}\n\n// Fallback for modularized imports:\nexport default constructFrom;\n","import { constructFrom } from \"../constructFrom.js\";\n\nexport function normalizeDates(context, ...dates) {\n  const normalize = constructFrom.bind(\n    null,\n    context || dates.find((date) => typeof date === \"object\"),\n  );\n  return dates.map(normalize);\n}\n","let defaultOptions = {};\n\nexport function getDefaultOptions() {\n  return defaultOptions;\n}\n\nexport function setDefaultOptions(newOptions) {\n  defaultOptions = newOptions;\n}\n","import { constructFrom } from \"./constructFrom.js\";\n\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * Starting from v3.7.0, it clones a date using `[Symbol.for(\"constructDateFrom\")]`\n * enabling to transfer extra properties from the reference date to the new date.\n * It's useful for extensions like [`TZDate`](https://github.com/date-fns/tz)\n * that accept a time zone as a constructor argument.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param argument - The value to convert\n *\n * @returns The parsed date in the local time zone\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nexport function toDate(argument, context) {\n  // [TODO] Get rid of `toDate` or `constructFrom`?\n  return constructFrom(context || argument, argument);\n}\n\n// Fallback for modularized imports:\nexport default toDate;\n","import { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfWeek} function options.\n */\n\n/**\n * @name startOfWeek\n * @category Week Helpers\n * @summary Return the start of a week for the given date.\n *\n * @description\n * Return the start of a week for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of a week\n *\n * @example\n * // The start of a week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // If the week starts on Monday, the start of the week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function startOfWeek(date, options) {\n  const defaultOptions = getDefaultOptions();\n  const weekStartsOn =\n    options?.weekStartsOn ??\n    options?.locale?.options?.weekStartsOn ??\n    defaultOptions.weekStartsOn ??\n    defaultOptions.locale?.options?.weekStartsOn ??\n    0;\n\n  const _date = toDate(date, options?.in);\n  const day = _date.getDay();\n  const diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n\n  _date.setDate(_date.getDate() - diff);\n  _date.setHours(0, 0, 0, 0);\n  return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfWeek;\n","const formatDistanceLocale = {\n  lessThanXSeconds: {\n    one: \"less than a second\",\n    other: \"less than {{count}} seconds\",\n  },\n\n  xSeconds: {\n    one: \"1 second\",\n    other: \"{{count}} seconds\",\n  },\n\n  halfAMinute: \"half a minute\",\n\n  lessThanXMinutes: {\n    one: \"less than a minute\",\n    other: \"less than {{count}} minutes\",\n  },\n\n  xMinutes: {\n    one: \"1 minute\",\n    other: \"{{count}} minutes\",\n  },\n\n  aboutXHours: {\n    one: \"about 1 hour\",\n    other: \"about {{count}} hours\",\n  },\n\n  xHours: {\n    one: \"1 hour\",\n    other: \"{{count}} hours\",\n  },\n\n  xDays: {\n    one: \"1 day\",\n    other: \"{{count}} days\",\n  },\n\n  aboutXWeeks: {\n    one: \"about 1 week\",\n    other: \"about {{count}} weeks\",\n  },\n\n  xWeeks: {\n    one: \"1 week\",\n    other: \"{{count}} weeks\",\n  },\n\n  aboutXMonths: {\n    one: \"about 1 month\",\n    other: \"about {{count}} months\",\n  },\n\n  xMonths: {\n    one: \"1 month\",\n    other: \"{{count}} months\",\n  },\n\n  aboutXYears: {\n    one: \"about 1 year\",\n    other: \"about {{count}} years\",\n  },\n\n  xYears: {\n    one: \"1 year\",\n    other: \"{{count}} years\",\n  },\n\n  overXYears: {\n    one: \"over 1 year\",\n    other: \"over {{count}} years\",\n  },\n\n  almostXYears: {\n    one: \"almost 1 year\",\n    other: \"almost {{count}} years\",\n  },\n};\n\nexport const formatDistance = (token, count, options) => {\n  let result;\n\n  const tokenValue = formatDistanceLocale[token];\n  if (typeof tokenValue === \"string\") {\n    result = tokenValue;\n  } else if (count === 1) {\n    result = tokenValue.one;\n  } else {\n    result = tokenValue.other.replace(\"{{count}}\", count.toString());\n  }\n\n  if (options?.addSuffix) {\n    if (options.comparison && options.comparison > 0) {\n      return \"in \" + result;\n    } else {\n      return result + \" ago\";\n    }\n  }\n\n  return result;\n};\n","const formatRelativeLocale = {\n  lastWeek: \"'last' eeee 'at' p\",\n  yesterday: \"'yesterday at' p\",\n  today: \"'today at' p\",\n  tomorrow: \"'tomorrow at' p\",\n  nextWeek: \"eeee 'at' p\",\n  other: \"P\",\n};\n\nexport const formatRelative = (token, _date, _baseDate, _options) =>\n  formatRelativeLocale[token];\n","import { buildLocalizeFn } from \"../../_lib/buildLocalizeFn.js\";\n\nconst eraValues = {\n  narrow: [\"B\", \"A\"],\n  abbreviated: [\"BC\", \"AD\"],\n  wide: [\"Before Christ\", \"Anno Domini\"],\n};\n\nconst quarterValues = {\n  narrow: [\"1\", \"2\", \"3\", \"4\"],\n  abbreviated: [\"Q1\", \"Q2\", \"Q3\", \"Q4\"],\n  wide: [\"1st quarter\", \"2nd quarter\", \"3rd quarter\", \"4th quarter\"],\n};\n\n// Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nconst monthValues = {\n  narrow: [\"J\", \"F\", \"M\", \"A\", \"M\", \"J\", \"J\", \"A\", \"S\", \"O\", \"N\", \"D\"],\n  abbreviated: [\n    \"Jan\",\n    \"Feb\",\n    \"Mar\",\n    \"Apr\",\n    \"May\",\n    \"Jun\",\n    \"Jul\",\n    \"Aug\",\n    \"Sep\",\n    \"Oct\",\n    \"Nov\",\n    \"Dec\",\n  ],\n\n  wide: [\n    \"January\",\n    \"February\",\n    \"March\",\n    \"April\",\n    \"May\",\n    \"June\",\n    \"July\",\n    \"August\",\n    \"September\",\n    \"October\",\n    \"November\",\n    \"December\",\n  ],\n};\n\nconst dayValues = {\n  narrow: [\"S\", \"M\", \"T\", \"W\", \"T\", \"F\", \"S\"],\n  short: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"],\n  abbreviated: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n  wide: [\n    \"Sunday\",\n    \"Monday\",\n    \"Tuesday\",\n    \"Wednesday\",\n    \"Thursday\",\n    \"Friday\",\n    \"Saturday\",\n  ],\n};\n\nconst dayPeriodValues = {\n  narrow: {\n    am: \"a\",\n    pm: \"p\",\n    midnight: \"mi\",\n    noon: \"n\",\n    morning: \"morning\",\n    afternoon: \"afternoon\",\n    evening: \"evening\",\n    night: \"night\",\n  },\n  abbreviated: {\n    am: \"AM\",\n    pm: \"PM\",\n    midnight: \"midnight\",\n    noon: \"noon\",\n    morning: \"morning\",\n    afternoon: \"afternoon\",\n    evening: \"evening\",\n    night: \"night\",\n  },\n  wide: {\n    am: \"a.m.\",\n    pm: \"p.m.\",\n    midnight: \"midnight\",\n    noon: \"noon\",\n    morning: \"morning\",\n    afternoon: \"afternoon\",\n    evening: \"evening\",\n    night: \"night\",\n  },\n};\n\nconst formattingDayPeriodValues = {\n  narrow: {\n    am: \"a\",\n    pm: \"p\",\n    midnight: \"mi\",\n    noon: \"n\",\n    morning: \"in the morning\",\n    afternoon: \"in the afternoon\",\n    evening: \"in the evening\",\n    night: \"at night\",\n  },\n  abbreviated: {\n    am: \"AM\",\n    pm: \"PM\",\n    midnight: \"midnight\",\n    noon: \"noon\",\n    morning: \"in the morning\",\n    afternoon: \"in the afternoon\",\n    evening: \"in the evening\",\n    night: \"at night\",\n  },\n  wide: {\n    am: \"a.m.\",\n    pm: \"p.m.\",\n    midnight: \"midnight\",\n    noon: \"noon\",\n    morning: \"in the morning\",\n    afternoon: \"in the afternoon\",\n    evening: \"in the evening\",\n    night: \"at night\",\n  },\n};\n\nconst ordinalNumber = (dirtyNumber, _options) => {\n  const number = Number(dirtyNumber);\n\n  // If ordinal numbers depend on context, for example,\n  // if they are different for different grammatical genders,\n  // use `options.unit`.\n  //\n  // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n  // 'day', 'hour', 'minute', 'second'.\n\n  const rem100 = number % 100;\n  if (rem100 > 20 || rem100 < 10) {\n    switch (rem100 % 10) {\n      case 1:\n        return number + \"st\";\n      case 2:\n        return number + \"nd\";\n      case 3:\n        return number + \"rd\";\n    }\n  }\n  return number + \"th\";\n};\n\nexport const localize = {\n  ordinalNumber,\n\n  era: buildLocalizeFn({\n    values: eraValues,\n    defaultWidth: \"wide\",\n  }),\n\n  quarter: buildLocalizeFn({\n    values: quarterValues,\n    defaultWidth: \"wide\",\n    argumentCallback: (quarter) => quarter - 1,\n  }),\n\n  month: buildLocalizeFn({\n    values: monthValues,\n    defaultWidth: \"wide\",\n  }),\n\n  day: buildLocalizeFn({\n    values: dayValues,\n    defaultWidth: \"wide\",\n  }),\n\n  dayPeriod: buildLocalizeFn({\n    values: dayPeriodValues,\n    defaultWidth: \"wide\",\n    formattingValues: formattingDayPeriodValues,\n    defaultFormattingWidth: \"wide\",\n  }),\n};\n","import { buildMatchFn } from \"../../_lib/buildMatchFn.js\";\nimport { buildMatchPatternFn } from \"../../_lib/buildMatchPatternFn.js\";\n\nconst matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nconst parseOrdinalNumberPattern = /\\d+/i;\n\nconst matchEraPatterns = {\n  narrow: /^(b|a)/i,\n  abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n  wide: /^(before christ|before common era|anno domini|common era)/i,\n};\nconst parseEraPatterns = {\n  any: [/^b/i, /^(a|c)/i],\n};\n\nconst matchQuarterPatterns = {\n  narrow: /^[1234]/i,\n  abbreviated: /^q[1234]/i,\n  wide: /^[1234](th|st|nd|rd)? quarter/i,\n};\nconst parseQuarterPatterns = {\n  any: [/1/i, /2/i, /3/i, /4/i],\n};\n\nconst matchMonthPatterns = {\n  narrow: /^[jfmasond]/i,\n  abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n  wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i,\n};\nconst parseMonthPatterns = {\n  narrow: [\n    /^j/i,\n    /^f/i,\n    /^m/i,\n    /^a/i,\n    /^m/i,\n    /^j/i,\n    /^j/i,\n    /^a/i,\n    /^s/i,\n    /^o/i,\n    /^n/i,\n    /^d/i,\n  ],\n\n  any: [\n    /^ja/i,\n    /^f/i,\n    /^mar/i,\n    /^ap/i,\n    /^may/i,\n    /^jun/i,\n    /^jul/i,\n    /^au/i,\n    /^s/i,\n    /^o/i,\n    /^n/i,\n    /^d/i,\n  ],\n};\n\nconst matchDayPatterns = {\n  narrow: /^[smtwf]/i,\n  short: /^(su|mo|tu|we|th|fr|sa)/i,\n  abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n  wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i,\n};\nconst parseDayPatterns = {\n  narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n  any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i],\n};\n\nconst matchDayPeriodPatterns = {\n  narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n  any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i,\n};\nconst parseDayPeriodPatterns = {\n  any: {\n    am: /^a/i,\n    pm: /^p/i,\n    midnight: /^mi/i,\n    noon: /^no/i,\n    morning: /morning/i,\n    afternoon: /afternoon/i,\n    evening: /evening/i,\n    night: /night/i,\n  },\n};\n\nexport const match = {\n  ordinalNumber: buildMatchPatternFn({\n    matchPattern: matchOrdinalNumberPattern,\n    parsePattern: parseOrdinalNumberPattern,\n    valueCallback: (value) => parseInt(value, 10),\n  }),\n\n  era: buildMatchFn({\n    matchPatterns: matchEraPatterns,\n    defaultMatchWidth: \"wide\",\n    parsePatterns: parseEraPatterns,\n    defaultParseWidth: \"any\",\n  }),\n\n  quarter: buildMatchFn({\n    matchPatterns: matchQuarterPatterns,\n    defaultMatchWidth: \"wide\",\n    parsePatterns: parseQuarterPatterns,\n    defaultParseWidth: \"any\",\n    valueCallback: (index) => index + 1,\n  }),\n\n  month: buildMatchFn({\n    matchPatterns: matchMonthPatterns,\n    defaultMatchWidth: \"wide\",\n    parsePatterns: parseMonthPatterns,\n    defaultParseWidth: \"any\",\n  }),\n\n  day: buildMatchFn({\n    matchPatterns: matchDayPatterns,\n    defaultMatchWidth: \"wide\",\n    parsePatterns: parseDayPatterns,\n    defaultParseWidth: \"any\",\n  }),\n\n  dayPeriod: buildMatchFn({\n    matchPatterns: matchDayPeriodPatterns,\n    defaultMatchWidth: \"any\",\n    parsePatterns: parseDayPeriodPatterns,\n    defaultParseWidth: \"any\",\n  }),\n};\n","import { buildFormatLongFn } from \"../../_lib/buildFormatLongFn.js\";\n\nconst dateFormats = {\n  full: \"EEEE, MMMM do, y\",\n  long: \"MMMM do, y\",\n  medium: \"MMM d, y\",\n  short: \"MM/dd/yyyy\",\n};\n\nconst timeFormats = {\n  full: \"h:mm:ss a zzzz\",\n  long: \"h:mm:ss a z\",\n  medium: \"h:mm:ss a\",\n  short: \"h:mm a\",\n};\n\nconst dateTimeFormats = {\n  full: \"{{date}} 'at' {{time}}\",\n  long: \"{{date}} 'at' {{time}}\",\n  medium: \"{{date}}, {{time}}\",\n  short: \"{{date}}, {{time}}\",\n};\n\nexport const formatLong = {\n  date: buildFormatLongFn({\n    formats: dateFormats,\n    defaultWidth: \"full\",\n  }),\n\n  time: buildFormatLongFn({\n    formats: timeFormats,\n    defaultWidth: \"full\",\n  }),\n\n  dateTime: buildFormatLongFn({\n    formats: dateTimeFormats,\n    defaultWidth: \"full\",\n  }),\n};\n","import { formatDistance } from \"./en-US/_lib/formatDistance.js\";\nimport { formatLong } from \"./en-US/_lib/formatLong.js\";\nimport { formatRelative } from \"./en-US/_lib/formatRelative.js\";\nimport { localize } from \"./en-US/_lib/localize.js\";\nimport { match } from \"./en-US/_lib/match.js\";\n\n/**\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp](https://github.com/kossnocorp)\n * @author Lesha Koss [@leshakoss](https://github.com/leshakoss)\n */\nexport const enUS = {\n  code: \"en-US\",\n  formatDistance: formatDistance,\n  formatLong: formatLong,\n  formatRelative: formatRelative,\n  localize: localize,\n  match: match,\n  options: {\n    weekStartsOn: 0 /* Sunday */,\n    firstWeekContainsDate: 1,\n  },\n};\n\n// Fallback for modularized imports:\nexport default enUS;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n","import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n  var isOwn = hasOwnProperty.call(value, symToStringTag),\n      tag = value[symToStringTag];\n\n  try {\n    value[symToStringTag] = undefined;\n    var unmasked = true;\n  } catch (e) {}\n\n  var result = nativeObjectToString.call(value);\n  if (unmasked) {\n    if (isOwn) {\n      value[symToStringTag] = tag;\n    } else {\n      delete value[symToStringTag];\n    }\n  }\n  return result;\n}\n\nexport default getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n  return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n","import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n    undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n  if (value == null) {\n    return value === undefined ? undefinedTag : nullTag;\n  }\n  return (symToStringTag && symToStringTag in Object(value))\n    ? getRawTag(value)\n    : objectToString(value);\n}\n\nexport default baseGetTag;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nexport default isSymbol;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n  var index = -1,\n      length = array == null ? 0 : array.length,\n      result = Array(length);\n\n  while (++index < length) {\n    result[index] = iteratee(array[index], index, array);\n  }\n  return result;\n}\n\nexport default arrayMap;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nexport default isArray;\n","import Symbol from './_Symbol.js';\nimport arrayMap from './_arrayMap.js';\nimport isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n  // Exit early for strings to avoid a performance hit in some environments.\n  if (typeof value == 'string') {\n    return value;\n  }\n  if (isArray(value)) {\n    // Recursively convert values (susceptible to call stack limits).\n    return arrayMap(value, baseToString) + '';\n  }\n  if (isSymbol(value)) {\n    return symbolToString ? symbolToString.call(value) : '';\n  }\n  var result = (value + '');\n  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default baseToString;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return value != null && (type == 'object' || type == 'function');\n}\n\nexport default isObject;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n  return value;\n}\n\nexport default identity;\n","import baseGetTag from './_baseGetTag.js';\nimport isObject from './isObject.js';\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n  if (!isObject(value)) {\n    return false;\n  }\n  // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in Safari 9 which returns 'object' for typed arrays and other constructors.\n  var tag = baseGetTag(value);\n  return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nexport default isFunction;\n","import root from './_root.js';\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nexport default coreJsData;\n","import coreJsData from './_coreJsData.js';\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n  var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n  return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n  return !!maskSrcKey && (maskSrcKey in func);\n}\n\nexport default isMasked;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n  if (func != null) {\n    try {\n      return funcToString.call(func);\n    } catch (e) {}\n    try {\n      return (func + '');\n    } catch (e) {}\n  }\n  return '';\n}\n\nexport default toSource;\n","import isFunction from './isFunction.js';\nimport isMasked from './_isMasked.js';\nimport isObject from './isObject.js';\nimport toSource from './_toSource.js';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n  funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n  .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n *  else `false`.\n */\nfunction baseIsNative(value) {\n  if (!isObject(value) || isMasked(value)) {\n    return false;\n  }\n  var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n  return pattern.test(toSource(value));\n}\n\nexport default baseIsNative;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n  return object == null ? undefined : object[key];\n}\n\nexport default getValue;\n","import baseIsNative from './_baseIsNative.js';\nimport getValue from './_getValue.js';\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n  var value = getValue(object, key);\n  return baseIsNative(value) ? value : undefined;\n}\n\nexport default getNative;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nexport default WeakMap;\n","import isObject from './isObject.js';\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n  function object() {}\n  return function(proto) {\n    if (!isObject(proto)) {\n      return {};\n    }\n    if (objectCreate) {\n      return objectCreate(proto);\n    }\n    object.prototype = proto;\n    var result = new object;\n    object.prototype = undefined;\n    return result;\n  };\n}());\n\nexport default baseCreate;\n","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n  switch (args.length) {\n    case 0: return func.call(thisArg);\n    case 1: return func.call(thisArg, args[0]);\n    case 2: return func.call(thisArg, args[0], args[1]);\n    case 3: return func.call(thisArg, args[0], args[1], args[2]);\n  }\n  return func.apply(thisArg, args);\n}\n\nexport default apply;\n","/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n  // No operation performed.\n}\n\nexport default noop;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n  var index = -1,\n      length = source.length;\n\n  array || (array = Array(length));\n  while (++index < length) {\n    array[index] = source[index];\n  }\n  return array;\n}\n\nexport default copyArray;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n    HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n  var count = 0,\n      lastCalled = 0;\n\n  return function() {\n    var stamp = nativeNow(),\n        remaining = HOT_SPAN - (stamp - lastCalled);\n\n    lastCalled = stamp;\n    if (remaining > 0) {\n      if (++count >= HOT_COUNT) {\n        return arguments[0];\n      }\n    } else {\n      count = 0;\n    }\n    return func.apply(undefined, arguments);\n  };\n}\n\nexport default shortOut;\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n  return function() {\n    return value;\n  };\n}\n\nexport default constant;\n","import getNative from './_getNative.js';\n\nvar defineProperty = (function() {\n  try {\n    var func = getNative(Object, 'defineProperty');\n    func({}, '', {});\n    return func;\n  } catch (e) {}\n}());\n\nexport default defineProperty;\n","import constant from './constant.js';\nimport defineProperty from './_defineProperty.js';\nimport identity from './identity.js';\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n  return defineProperty(func, 'toString', {\n    'configurable': true,\n    'enumerable': false,\n    'value': constant(string),\n    'writable': true\n  });\n};\n\nexport default baseSetToString;\n","import baseSetToString from './_baseSetToString.js';\nimport shortOut from './_shortOut.js';\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nexport default setToString;\n","/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  while (++index < length) {\n    if (iteratee(array[index], index, array) === false) {\n      break;\n    }\n  }\n  return array;\n}\n\nexport default arrayEach;\n","/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n  var length = array.length,\n      index = fromIndex + (fromRight ? 1 : -1);\n\n  while ((fromRight ? index-- : ++index < length)) {\n    if (predicate(array[index], index, array)) {\n      return index;\n    }\n  }\n  return -1;\n}\n\nexport default baseFindIndex;\n","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n  return value !== value;\n}\n\nexport default baseIsNaN;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n  var index = fromIndex - 1,\n      length = array.length;\n\n  while (++index < length) {\n    if (array[index] === value) {\n      return index;\n    }\n  }\n  return -1;\n}\n\nexport default strictIndexOf;\n","import baseFindIndex from './_baseFindIndex.js';\nimport baseIsNaN from './_baseIsNaN.js';\nimport strictIndexOf from './_strictIndexOf.js';\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n  return value === value\n    ? strictIndexOf(array, value, fromIndex)\n    : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nexport default baseIndexOf;\n","import baseIndexOf from './_baseIndexOf.js';\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n  var length = array == null ? 0 : array.length;\n  return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nexport default arrayIncludes;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n  var type = typeof value;\n  length = length == null ? MAX_SAFE_INTEGER : length;\n\n  return !!length &&\n    (type == 'number' ||\n      (type != 'symbol' && reIsUint.test(value))) &&\n        (value > -1 && value % 1 == 0 && value < length);\n}\n\nexport default isIndex;\n","import defineProperty from './_defineProperty.js';\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n  if (key == '__proto__' && defineProperty) {\n    defineProperty(object, key, {\n      'configurable': true,\n      'enumerable': true,\n      'value': value,\n      'writable': true\n    });\n  } else {\n    object[key] = value;\n  }\n}\n\nexport default baseAssignValue;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n  return value === other || (value !== value && other !== other);\n}\n\nexport default eq;\n","import baseAssignValue from './_baseAssignValue.js';\nimport eq from './eq.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n  var objValue = object[key];\n  if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n      (value === undefined && !(key in object))) {\n    baseAssignValue(object, key, value);\n  }\n}\n\nexport default assignValue;\n","import assignValue from './_assignValue.js';\nimport baseAssignValue from './_baseAssignValue.js';\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n  var isNew = !object;\n  object || (object = {});\n\n  var index = -1,\n      length = props.length;\n\n  while (++index < length) {\n    var key = props[index];\n\n    var newValue = customizer\n      ? customizer(object[key], source[key], key, object, source)\n      : undefined;\n\n    if (newValue === undefined) {\n      newValue = source[key];\n    }\n    if (isNew) {\n      baseAssignValue(object, key, newValue);\n    } else {\n      assignValue(object, key, newValue);\n    }\n  }\n  return object;\n}\n\nexport default copyObject;\n","import apply from './_apply.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n  start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n  return function() {\n    var args = arguments,\n        index = -1,\n        length = nativeMax(args.length - start, 0),\n        array = Array(length);\n\n    while (++index < length) {\n      array[index] = args[start + index];\n    }\n    index = -1;\n    var otherArgs = Array(start + 1);\n    while (++index < start) {\n      otherArgs[index] = args[index];\n    }\n    otherArgs[start] = transform(array);\n    return apply(func, this, otherArgs);\n  };\n}\n\nexport default overRest;\n","import identity from './identity.js';\nimport overRest from './_overRest.js';\nimport setToString from './_setToString.js';\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n  return setToString(overRest(func, start, identity), func + '');\n}\n\nexport default baseRest;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n  return typeof value == 'number' &&\n    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nexport default isLength;\n","import isFunction from './isFunction.js';\nimport isLength from './isLength.js';\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n  return value != null && isLength(value.length) && !isFunction(value);\n}\n\nexport default isArrayLike;\n","import eq from './eq.js';\nimport isArrayLike from './isArrayLike.js';\nimport isIndex from './_isIndex.js';\nimport isObject from './isObject.js';\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n *  else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n  if (!isObject(object)) {\n    return false;\n  }\n  var type = typeof index;\n  if (type == 'number'\n        ? (isArrayLike(object) && isIndex(index, object.length))\n        : (type == 'string' && index in object)\n      ) {\n    return eq(object[index], value);\n  }\n  return false;\n}\n\nexport default isIterateeCall;\n","import baseRest from './_baseRest.js';\nimport isIterateeCall from './_isIterateeCall.js';\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n  return baseRest(function(object, sources) {\n    var index = -1,\n        length = sources.length,\n        customizer = length > 1 ? sources[length - 1] : undefined,\n        guard = length > 2 ? sources[2] : undefined;\n\n    customizer = (assigner.length > 3 && typeof customizer == 'function')\n      ? (length--, customizer)\n      : undefined;\n\n    if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n      customizer = length < 3 ? undefined : customizer;\n      length = 1;\n    }\n    object = Object(object);\n    while (++index < length) {\n      var source = sources[index];\n      if (source) {\n        assigner(object, source, index, customizer);\n      }\n    }\n    return object;\n  });\n}\n\nexport default createAssigner;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n  var Ctor = value && value.constructor,\n      proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n  return value === proto;\n}\n\nexport default isPrototype;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n  var index = -1,\n      result = Array(n);\n\n  while (++index < n) {\n    result[index] = iteratee(index);\n  }\n  return result;\n}\n\nexport default baseTimes;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n  return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nexport default baseIsArguments;\n","import baseIsArguments from './_baseIsArguments.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n *  else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n  return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n    !propertyIsEnumerable.call(value, 'callee');\n};\n\nexport default isArguments;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n  return false;\n}\n\nexport default stubFalse;\n","import root from './_root.js';\nimport stubFalse from './stubFalse.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nexport default isBuffer;\n","import baseGetTag from './_baseGetTag.js';\nimport isLength from './isLength.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    funcTag = '[object Function]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    objectTag = '[object Object]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n  return isObjectLike(value) &&\n    isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nexport default baseIsTypedArray;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n  return function(value) {\n    return func(value);\n  };\n}\n\nexport default baseUnary;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n  try {\n    // Use `util.types` for Node.js 10+.\n    var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n    if (types) {\n      return types;\n    }\n\n    // Legacy `process.binding('util')` for Node.js < 10.\n    return freeProcess && freeProcess.binding && freeProcess.binding('util');\n  } catch (e) {}\n}());\n\nexport default nodeUtil;\n","import baseIsTypedArray from './_baseIsTypedArray.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nexport default isTypedArray;\n","import baseTimes from './_baseTimes.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isIndex from './_isIndex.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n  var isArr = isArray(value),\n      isArg = !isArr && isArguments(value),\n      isBuff = !isArr && !isArg && isBuffer(value),\n      isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n      skipIndexes = isArr || isArg || isBuff || isType,\n      result = skipIndexes ? baseTimes(value.length, String) : [],\n      length = result.length;\n\n  for (var key in value) {\n    if ((inherited || hasOwnProperty.call(value, key)) &&\n        !(skipIndexes && (\n           // Safari 9 has enumerable `arguments.length` in strict mode.\n           key == 'length' ||\n           // Node.js 0.10 has enumerable non-index properties on buffers.\n           (isBuff && (key == 'offset' || key == 'parent')) ||\n           // PhantomJS 2 has enumerable non-index properties on typed arrays.\n           (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n           // Skip index properties.\n           isIndex(key, length)\n        ))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nexport default arrayLikeKeys;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n  return function(arg) {\n    return func(transform(arg));\n  };\n}\n\nexport default overArg;\n","import overArg from './_overArg.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nexport default nativeKeys;\n","import isPrototype from './_isPrototype.js';\nimport nativeKeys from './_nativeKeys.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n  if (!isPrototype(object)) {\n    return nativeKeys(object);\n  }\n  var result = [];\n  for (var key in Object(object)) {\n    if (hasOwnProperty.call(object, key) && key != 'constructor') {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nexport default baseKeys;\n","import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeys from './_baseKeys.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n  return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nexport default keys;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n  var result = [];\n  if (object != null) {\n    for (var key in Object(object)) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nexport default nativeKeysIn;\n","import isObject from './isObject.js';\nimport isPrototype from './_isPrototype.js';\nimport nativeKeysIn from './_nativeKeysIn.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n  if (!isObject(object)) {\n    return nativeKeysIn(object);\n  }\n  var isProto = isPrototype(object),\n      result = [];\n\n  for (var key in object) {\n    if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nexport default baseKeysIn;\n","import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeysIn from './_baseKeysIn.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n  return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nexport default keysIn;\n","import isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n    reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n  if (isArray(value)) {\n    return false;\n  }\n  var type = typeof value;\n  if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n      value == null || isSymbol(value)) {\n    return true;\n  }\n  return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n    (object != null && value in Object(object));\n}\n\nexport default isKey;\n","import getNative from './_getNative.js';\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nexport default nativeCreate;\n","import nativeCreate from './_nativeCreate.js';\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n  this.__data__ = nativeCreate ? nativeCreate(null) : {};\n  this.size = 0;\n}\n\nexport default hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n  var result = this.has(key) && delete this.__data__[key];\n  this.size -= result ? 1 : 0;\n  return result;\n}\n\nexport default hashDelete;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n  var data = this.__data__;\n  if (nativeCreate) {\n    var result = data[key];\n    return result === HASH_UNDEFINED ? undefined : result;\n  }\n  return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nexport default hashGet;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n  var data = this.__data__;\n  return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nexport default hashHas;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n  var data = this.__data__;\n  this.size += this.has(key) ? 0 : 1;\n  data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n  return this;\n}\n\nexport default hashSet;\n","import hashClear from './_hashClear.js';\nimport hashDelete from './_hashDelete.js';\nimport hashGet from './_hashGet.js';\nimport hashHas from './_hashHas.js';\nimport hashSet from './_hashSet.js';\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nexport default Hash;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n  this.__data__ = [];\n  this.size = 0;\n}\n\nexport default listCacheClear;\n","import eq from './eq.js';\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n  var length = array.length;\n  while (length--) {\n    if (eq(array[length][0], key)) {\n      return length;\n    }\n  }\n  return -1;\n}\n\nexport default assocIndexOf;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    return false;\n  }\n  var lastIndex = data.length - 1;\n  if (index == lastIndex) {\n    data.pop();\n  } else {\n    splice.call(data, index, 1);\n  }\n  --this.size;\n  return true;\n}\n\nexport default listCacheDelete;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  return index < 0 ? undefined : data[index][1];\n}\n\nexport default listCacheGet;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n  return assocIndexOf(this.__data__, key) > -1;\n}\n\nexport default listCacheHas;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    ++this.size;\n    data.push([key, value]);\n  } else {\n    data[index][1] = value;\n  }\n  return this;\n}\n\nexport default listCacheSet;\n","import listCacheClear from './_listCacheClear.js';\nimport listCacheDelete from './_listCacheDelete.js';\nimport listCacheGet from './_listCacheGet.js';\nimport listCacheHas from './_listCacheHas.js';\nimport listCacheSet from './_listCacheSet.js';\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nexport default ListCache;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nexport default Map;\n","import Hash from './_Hash.js';\nimport ListCache from './_ListCache.js';\nimport Map from './_Map.js';\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n  this.size = 0;\n  this.__data__ = {\n    'hash': new Hash,\n    'map': new (Map || ListCache),\n    'string': new Hash\n  };\n}\n\nexport default mapCacheClear;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n  var type = typeof value;\n  return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n    ? (value !== '__proto__')\n    : (value === null);\n}\n\nexport default isKeyable;\n","import isKeyable from './_isKeyable.js';\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n  var data = map.__data__;\n  return isKeyable(key)\n    ? data[typeof key == 'string' ? 'string' : 'hash']\n    : data.map;\n}\n\nexport default getMapData;\n","import getMapData from './_getMapData.js';\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n  var result = getMapData(this, key)['delete'](key);\n  this.size -= result ? 1 : 0;\n  return result;\n}\n\nexport default mapCacheDelete;\n","import getMapData from './_getMapData.js';\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n  return getMapData(this, key).get(key);\n}\n\nexport default mapCacheGet;\n","import getMapData from './_getMapData.js';\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n  return getMapData(this, key).has(key);\n}\n\nexport default mapCacheHas;\n","import getMapData from './_getMapData.js';\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n  var data = getMapData(this, key),\n      size = data.size;\n\n  data.set(key, value);\n  this.size += data.size == size ? 0 : 1;\n  return this;\n}\n\nexport default mapCacheSet;\n","import mapCacheClear from './_mapCacheClear.js';\nimport mapCacheDelete from './_mapCacheDelete.js';\nimport mapCacheGet from './_mapCacheGet.js';\nimport mapCacheHas from './_mapCacheHas.js';\nimport mapCacheSet from './_mapCacheSet.js';\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nexport default MapCache;\n","import MapCache from './_MapCache.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n  if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  var memoized = function() {\n    var args = arguments,\n        key = resolver ? resolver.apply(this, args) : args[0],\n        cache = memoized.cache;\n\n    if (cache.has(key)) {\n      return cache.get(key);\n    }\n    var result = func.apply(this, args);\n    memoized.cache = cache.set(key, result) || cache;\n    return result;\n  };\n  memoized.cache = new (memoize.Cache || MapCache);\n  return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nexport default memoize;\n","import memoize from './memoize.js';\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n  var result = memoize(func, function(key) {\n    if (cache.size === MAX_MEMOIZE_SIZE) {\n      cache.clear();\n    }\n    return key;\n  });\n\n  var cache = result.cache;\n  return result;\n}\n\nexport default memoizeCapped;\n","import memoizeCapped from './_memoizeCapped.js';\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n  var result = [];\n  if (string.charCodeAt(0) === 46 /* . */) {\n    result.push('');\n  }\n  string.replace(rePropName, function(match, number, quote, subString) {\n    result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n  });\n  return result;\n});\n\nexport default stringToPath;\n","import baseToString from './_baseToString.js';\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n  return value == null ? '' : baseToString(value);\n}\n\nexport default toString;\n","import isArray from './isArray.js';\nimport isKey from './_isKey.js';\nimport stringToPath from './_stringToPath.js';\nimport toString from './toString.js';\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n  if (isArray(value)) {\n    return value;\n  }\n  return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nexport default castPath;\n","import isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n  if (typeof value == 'string' || isSymbol(value)) {\n    return value;\n  }\n  var result = (value + '');\n  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default toKey;\n","import castPath from './_castPath.js';\nimport toKey from './_toKey.js';\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n  path = castPath(path, object);\n\n  var index = 0,\n      length = path.length;\n\n  while (object != null && index < length) {\n    object = object[toKey(path[index++])];\n  }\n  return (index && index == length) ? object : undefined;\n}\n\nexport default baseGet;\n","import baseGet from './_baseGet.js';\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n  var result = object == null ? undefined : baseGet(object, path);\n  return result === undefined ? defaultValue : result;\n}\n\nexport default get;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n  var index = -1,\n      length = values.length,\n      offset = array.length;\n\n  while (++index < length) {\n    array[offset + index] = values[index];\n  }\n  return array;\n}\n\nexport default arrayPush;\n","import Symbol from './_Symbol.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n  return isArray(value) || isArguments(value) ||\n    !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nexport default isFlattenable;\n","import arrayPush from './_arrayPush.js';\nimport isFlattenable from './_isFlattenable.js';\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n  var index = -1,\n      length = array.length;\n\n  predicate || (predicate = isFlattenable);\n  result || (result = []);\n\n  while (++index < length) {\n    var value = array[index];\n    if (depth > 0 && predicate(value)) {\n      if (depth > 1) {\n        // Recursively flatten arrays (susceptible to call stack limits).\n        baseFlatten(value, depth - 1, predicate, isStrict, result);\n      } else {\n        arrayPush(result, value);\n      }\n    } else if (!isStrict) {\n      result[result.length] = value;\n    }\n  }\n  return result;\n}\n\nexport default baseFlatten;\n","import overArg from './_overArg.js';\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nexport default getPrototype;\n","import baseGetTag from './_baseGetTag.js';\nimport getPrototype from './_getPrototype.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n  if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n    return false;\n  }\n  var proto = getPrototype(value);\n  if (proto === null) {\n    return true;\n  }\n  var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n  return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n    funcToString.call(Ctor) == objectCtorString;\n}\n\nexport default isPlainObject;\n","import ListCache from './_ListCache.js';\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n  this.__data__ = new ListCache;\n  this.size = 0;\n}\n\nexport default stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n  var data = this.__data__,\n      result = data['delete'](key);\n\n  this.size = data.size;\n  return result;\n}\n\nexport default stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n  return this.__data__.get(key);\n}\n\nexport default stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n  return this.__data__.has(key);\n}\n\nexport default stackHas;\n","import ListCache from './_ListCache.js';\nimport Map from './_Map.js';\nimport MapCache from './_MapCache.js';\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n  var data = this.__data__;\n  if (data instanceof ListCache) {\n    var pairs = data.__data__;\n    if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n      pairs.push([key, value]);\n      this.size = ++data.size;\n      return this;\n    }\n    data = this.__data__ = new MapCache(pairs);\n  }\n  data.set(key, value);\n  this.size = data.size;\n  return this;\n}\n\nexport default stackSet;\n","import ListCache from './_ListCache.js';\nimport stackClear from './_stackClear.js';\nimport stackDelete from './_stackDelete.js';\nimport stackGet from './_stackGet.js';\nimport stackHas from './_stackHas.js';\nimport stackSet from './_stackSet.js';\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n  var data = this.__data__ = new ListCache(entries);\n  this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nexport default Stack;\n","import copyObject from './_copyObject.js';\nimport keys from './keys.js';\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n  return object && copyObject(source, keys(source), object);\n}\n\nexport default baseAssign;\n","import copyObject from './_copyObject.js';\nimport keysIn from './keysIn.js';\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n  return object && copyObject(source, keysIn(source), object);\n}\n\nexport default baseAssignIn;\n","import root from './_root.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n    allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of  `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n  if (isDeep) {\n    return buffer.slice();\n  }\n  var length = buffer.length,\n      result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n  buffer.copy(result);\n  return result;\n}\n\nexport default cloneBuffer;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n  var index = -1,\n      length = array == null ? 0 : array.length,\n      resIndex = 0,\n      result = [];\n\n  while (++index < length) {\n    var value = array[index];\n    if (predicate(value, index, array)) {\n      result[resIndex++] = value;\n    }\n  }\n  return result;\n}\n\nexport default arrayFilter;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n  return [];\n}\n\nexport default stubArray;\n","import arrayFilter from './_arrayFilter.js';\nimport stubArray from './stubArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n  if (object == null) {\n    return [];\n  }\n  object = Object(object);\n  return arrayFilter(nativeGetSymbols(object), function(symbol) {\n    return propertyIsEnumerable.call(object, symbol);\n  });\n};\n\nexport default getSymbols;\n","import copyObject from './_copyObject.js';\nimport getSymbols from './_getSymbols.js';\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n  return copyObject(source, getSymbols(source), object);\n}\n\nexport default copySymbols;\n","import arrayPush from './_arrayPush.js';\nimport getPrototype from './_getPrototype.js';\nimport getSymbols from './_getSymbols.js';\nimport stubArray from './stubArray.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n  var result = [];\n  while (object) {\n    arrayPush(result, getSymbols(object));\n    object = getPrototype(object);\n  }\n  return result;\n};\n\nexport default getSymbolsIn;\n","import copyObject from './_copyObject.js';\nimport getSymbolsIn from './_getSymbolsIn.js';\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n  return copyObject(source, getSymbolsIn(source), object);\n}\n\nexport default copySymbolsIn;\n","import arrayPush from './_arrayPush.js';\nimport isArray from './isArray.js';\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n  var result = keysFunc(object);\n  return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nexport default baseGetAllKeys;\n","import baseGetAllKeys from './_baseGetAllKeys.js';\nimport getSymbols from './_getSymbols.js';\nimport keys from './keys.js';\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n  return baseGetAllKeys(object, keys, getSymbols);\n}\n\nexport default getAllKeys;\n","import baseGetAllKeys from './_baseGetAllKeys.js';\nimport getSymbolsIn from './_getSymbolsIn.js';\nimport keysIn from './keysIn.js';\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n  return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nexport default getAllKeysIn;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nexport default DataView;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nexport default Promise;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nexport default Set;\n","import DataView from './_DataView.js';\nimport Map from './_Map.js';\nimport Promise from './_Promise.js';\nimport Set from './_Set.js';\nimport WeakMap from './_WeakMap.js';\nimport baseGetTag from './_baseGetTag.js';\nimport toSource from './_toSource.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n    objectTag = '[object Object]',\n    promiseTag = '[object Promise]',\n    setTag = '[object Set]',\n    weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n    mapCtorString = toSource(Map),\n    promiseCtorString = toSource(Promise),\n    setCtorString = toSource(Set),\n    weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n    (Map && getTag(new Map) != mapTag) ||\n    (Promise && getTag(Promise.resolve()) != promiseTag) ||\n    (Set && getTag(new Set) != setTag) ||\n    (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n  getTag = function(value) {\n    var result = baseGetTag(value),\n        Ctor = result == objectTag ? value.constructor : undefined,\n        ctorString = Ctor ? toSource(Ctor) : '';\n\n    if (ctorString) {\n      switch (ctorString) {\n        case dataViewCtorString: return dataViewTag;\n        case mapCtorString: return mapTag;\n        case promiseCtorString: return promiseTag;\n        case setCtorString: return setTag;\n        case weakMapCtorString: return weakMapTag;\n      }\n    }\n    return result;\n  };\n}\n\nexport default getTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n  var length = array.length,\n      result = new array.constructor(length);\n\n  // Add properties assigned by `RegExp#exec`.\n  if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n    result.index = array.index;\n    result.input = array.input;\n  }\n  return result;\n}\n\nexport default initCloneArray;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nexport default Uint8Array;\n","import Uint8Array from './_Uint8Array.js';\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n  var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n  new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n  return result;\n}\n\nexport default cloneArrayBuffer;\n","import cloneArrayBuffer from './_cloneArrayBuffer.js';\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n  var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n  return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nexport default cloneDataView;\n","/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n  var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n  result.lastIndex = regexp.lastIndex;\n  return result;\n}\n\nexport default cloneRegExp;\n","import Symbol from './_Symbol.js';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n  return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nexport default cloneSymbol;\n","import cloneArrayBuffer from './_cloneArrayBuffer.js';\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n  var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n  return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nexport default cloneTypedArray;\n","import cloneArrayBuffer from './_cloneArrayBuffer.js';\nimport cloneDataView from './_cloneDataView.js';\nimport cloneRegExp from './_cloneRegExp.js';\nimport cloneSymbol from './_cloneSymbol.js';\nimport cloneTypedArray from './_cloneTypedArray.js';\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n  var Ctor = object.constructor;\n  switch (tag) {\n    case arrayBufferTag:\n      return cloneArrayBuffer(object);\n\n    case boolTag:\n    case dateTag:\n      return new Ctor(+object);\n\n    case dataViewTag:\n      return cloneDataView(object, isDeep);\n\n    case float32Tag: case float64Tag:\n    case int8Tag: case int16Tag: case int32Tag:\n    case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n      return cloneTypedArray(object, isDeep);\n\n    case mapTag:\n      return new Ctor;\n\n    case numberTag:\n    case stringTag:\n      return new Ctor(object);\n\n    case regexpTag:\n      return cloneRegExp(object);\n\n    case setTag:\n      return new Ctor;\n\n    case symbolTag:\n      return cloneSymbol(object);\n  }\n}\n\nexport default initCloneByTag;\n","import baseCreate from './_baseCreate.js';\nimport getPrototype from './_getPrototype.js';\nimport isPrototype from './_isPrototype.js';\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n  return (typeof object.constructor == 'function' && !isPrototype(object))\n    ? baseCreate(getPrototype(object))\n    : {};\n}\n\nexport default initCloneObject;\n","import getTag from './_getTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n  return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nexport default baseIsMap;\n","import baseIsMap from './_baseIsMap.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nexport default isMap;\n","import getTag from './_getTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n  return isObjectLike(value) && getTag(value) == setTag;\n}\n\nexport default baseIsSet;\n","import baseIsSet from './_baseIsSet.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\nexport default isSet;\n","import Stack from './_Stack.js';\nimport arrayEach from './_arrayEach.js';\nimport assignValue from './_assignValue.js';\nimport baseAssign from './_baseAssign.js';\nimport baseAssignIn from './_baseAssignIn.js';\nimport cloneBuffer from './_cloneBuffer.js';\nimport copyArray from './_copyArray.js';\nimport copySymbols from './_copySymbols.js';\nimport copySymbolsIn from './_copySymbolsIn.js';\nimport getAllKeys from './_getAllKeys.js';\nimport getAllKeysIn from './_getAllKeysIn.js';\nimport getTag from './_getTag.js';\nimport initCloneArray from './_initCloneArray.js';\nimport initCloneByTag from './_initCloneByTag.js';\nimport initCloneObject from './_initCloneObject.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isMap from './isMap.js';\nimport isObject from './isObject.js';\nimport isSet from './isSet.js';\nimport keys from './keys.js';\nimport keysIn from './keysIn.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n    CLONE_FLAT_FLAG = 2,\n    CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    objectTag = '[object Object]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    symbolTag = '[object Symbol]',\n    weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n *  1 - Deep clone\n *  2 - Flatten inherited properties\n *  4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n  var result,\n      isDeep = bitmask & CLONE_DEEP_FLAG,\n      isFlat = bitmask & CLONE_FLAT_FLAG,\n      isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n  if (customizer) {\n    result = object ? customizer(value, key, object, stack) : customizer(value);\n  }\n  if (result !== undefined) {\n    return result;\n  }\n  if (!isObject(value)) {\n    return value;\n  }\n  var isArr = isArray(value);\n  if (isArr) {\n    result = initCloneArray(value);\n    if (!isDeep) {\n      return copyArray(value, result);\n    }\n  } else {\n    var tag = getTag(value),\n        isFunc = tag == funcTag || tag == genTag;\n\n    if (isBuffer(value)) {\n      return cloneBuffer(value, isDeep);\n    }\n    if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n      result = (isFlat || isFunc) ? {} : initCloneObject(value);\n      if (!isDeep) {\n        return isFlat\n          ? copySymbolsIn(value, baseAssignIn(result, value))\n          : copySymbols(value, baseAssign(result, value));\n      }\n    } else {\n      if (!cloneableTags[tag]) {\n        return object ? value : {};\n      }\n      result = initCloneByTag(value, tag, isDeep);\n    }\n  }\n  // Check for circular references and return its corresponding clone.\n  stack || (stack = new Stack);\n  var stacked = stack.get(value);\n  if (stacked) {\n    return stacked;\n  }\n  stack.set(value, result);\n\n  if (isSet(value)) {\n    value.forEach(function(subValue) {\n      result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n    });\n  } else if (isMap(value)) {\n    value.forEach(function(subValue, key) {\n      result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n    });\n  }\n\n  var keysFunc = isFull\n    ? (isFlat ? getAllKeysIn : getAllKeys)\n    : (isFlat ? keysIn : keys);\n\n  var props = isArr ? undefined : keysFunc(value);\n  arrayEach(props || value, function(subValue, key) {\n    if (props) {\n      key = subValue;\n      subValue = value[key];\n    }\n    // Recursively populate clone (susceptible to call stack limits).\n    assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n  });\n  return result;\n}\n\nexport default baseClone;\n","import baseClone from './_baseClone.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n    CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n  return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n}\n\nexport default cloneDeep;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n  this.__data__.set(value, HASH_UNDEFINED);\n  return this;\n}\n\nexport default setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n  return this.__data__.has(value);\n}\n\nexport default setCacheHas;\n","import MapCache from './_MapCache.js';\nimport setCacheAdd from './_setCacheAdd.js';\nimport setCacheHas from './_setCacheHas.js';\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n  var index = -1,\n      length = values == null ? 0 : values.length;\n\n  this.__data__ = new MapCache;\n  while (++index < length) {\n    this.add(values[index]);\n  }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nexport default SetCache;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n *  else `false`.\n */\nfunction arraySome(array, predicate) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  while (++index < length) {\n    if (predicate(array[index], index, array)) {\n      return true;\n    }\n  }\n  return false;\n}\n\nexport default arraySome;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n  return cache.has(key);\n}\n\nexport default cacheHas;\n","import SetCache from './_SetCache.js';\nimport arraySome from './_arraySome.js';\nimport cacheHas from './_cacheHas.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n  var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n      arrLength = array.length,\n      othLength = other.length;\n\n  if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n    return false;\n  }\n  // Check that cyclic values are equal.\n  var arrStacked = stack.get(array);\n  var othStacked = stack.get(other);\n  if (arrStacked && othStacked) {\n    return arrStacked == other && othStacked == array;\n  }\n  var index = -1,\n      result = true,\n      seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n  stack.set(array, other);\n  stack.set(other, array);\n\n  // Ignore non-index properties.\n  while (++index < arrLength) {\n    var arrValue = array[index],\n        othValue = other[index];\n\n    if (customizer) {\n      var compared = isPartial\n        ? customizer(othValue, arrValue, index, other, array, stack)\n        : customizer(arrValue, othValue, index, array, other, stack);\n    }\n    if (compared !== undefined) {\n      if (compared) {\n        continue;\n      }\n      result = false;\n      break;\n    }\n    // Recursively compare arrays (susceptible to call stack limits).\n    if (seen) {\n      if (!arraySome(other, function(othValue, othIndex) {\n            if (!cacheHas(seen, othIndex) &&\n                (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n              return seen.push(othIndex);\n            }\n          })) {\n        result = false;\n        break;\n      }\n    } else if (!(\n          arrValue === othValue ||\n            equalFunc(arrValue, othValue, bitmask, customizer, stack)\n        )) {\n      result = false;\n      break;\n    }\n  }\n  stack['delete'](array);\n  stack['delete'](other);\n  return result;\n}\n\nexport default equalArrays;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n  var index = -1,\n      result = Array(map.size);\n\n  map.forEach(function(value, key) {\n    result[++index] = [key, value];\n  });\n  return result;\n}\n\nexport default mapToArray;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n  var index = -1,\n      result = Array(set.size);\n\n  set.forEach(function(value) {\n    result[++index] = value;\n  });\n  return result;\n}\n\nexport default setToArray;\n","import Symbol from './_Symbol.js';\nimport Uint8Array from './_Uint8Array.js';\nimport eq from './eq.js';\nimport equalArrays from './_equalArrays.js';\nimport mapToArray from './_mapToArray.js';\nimport setToArray from './_setToArray.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n  switch (tag) {\n    case dataViewTag:\n      if ((object.byteLength != other.byteLength) ||\n          (object.byteOffset != other.byteOffset)) {\n        return false;\n      }\n      object = object.buffer;\n      other = other.buffer;\n\n    case arrayBufferTag:\n      if ((object.byteLength != other.byteLength) ||\n          !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n        return false;\n      }\n      return true;\n\n    case boolTag:\n    case dateTag:\n    case numberTag:\n      // Coerce booleans to `1` or `0` and dates to milliseconds.\n      // Invalid dates are coerced to `NaN`.\n      return eq(+object, +other);\n\n    case errorTag:\n      return object.name == other.name && object.message == other.message;\n\n    case regexpTag:\n    case stringTag:\n      // Coerce regexes to strings and treat strings, primitives and objects,\n      // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n      // for more details.\n      return object == (other + '');\n\n    case mapTag:\n      var convert = mapToArray;\n\n    case setTag:\n      var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n      convert || (convert = setToArray);\n\n      if (object.size != other.size && !isPartial) {\n        return false;\n      }\n      // Assume cyclic values are equal.\n      var stacked = stack.get(object);\n      if (stacked) {\n        return stacked == other;\n      }\n      bitmask |= COMPARE_UNORDERED_FLAG;\n\n      // Recursively compare objects (susceptible to call stack limits).\n      stack.set(object, other);\n      var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n      stack['delete'](object);\n      return result;\n\n    case symbolTag:\n      if (symbolValueOf) {\n        return symbolValueOf.call(object) == symbolValueOf.call(other);\n      }\n  }\n  return false;\n}\n\nexport default equalByTag;\n","import getAllKeys from './_getAllKeys.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n  var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n      objProps = getAllKeys(object),\n      objLength = objProps.length,\n      othProps = getAllKeys(other),\n      othLength = othProps.length;\n\n  if (objLength != othLength && !isPartial) {\n    return false;\n  }\n  var index = objLength;\n  while (index--) {\n    var key = objProps[index];\n    if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n      return false;\n    }\n  }\n  // Check that cyclic values are equal.\n  var objStacked = stack.get(object);\n  var othStacked = stack.get(other);\n  if (objStacked && othStacked) {\n    return objStacked == other && othStacked == object;\n  }\n  var result = true;\n  stack.set(object, other);\n  stack.set(other, object);\n\n  var skipCtor = isPartial;\n  while (++index < objLength) {\n    key = objProps[index];\n    var objValue = object[key],\n        othValue = other[key];\n\n    if (customizer) {\n      var compared = isPartial\n        ? customizer(othValue, objValue, key, other, object, stack)\n        : customizer(objValue, othValue, key, object, other, stack);\n    }\n    // Recursively compare objects (susceptible to call stack limits).\n    if (!(compared === undefined\n          ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n          : compared\n        )) {\n      result = false;\n      break;\n    }\n    skipCtor || (skipCtor = key == 'constructor');\n  }\n  if (result && !skipCtor) {\n    var objCtor = object.constructor,\n        othCtor = other.constructor;\n\n    // Non `Object` object instances with different constructors are not equal.\n    if (objCtor != othCtor &&\n        ('constructor' in object && 'constructor' in other) &&\n        !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n          typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n      result = false;\n    }\n  }\n  stack['delete'](object);\n  stack['delete'](other);\n  return result;\n}\n\nexport default equalObjects;\n","import Stack from './_Stack.js';\nimport equalArrays from './_equalArrays.js';\nimport equalByTag from './_equalByTag.js';\nimport equalObjects from './_equalObjects.js';\nimport getTag from './_getTag.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n  var objIsArr = isArray(object),\n      othIsArr = isArray(other),\n      objTag = objIsArr ? arrayTag : getTag(object),\n      othTag = othIsArr ? arrayTag : getTag(other);\n\n  objTag = objTag == argsTag ? objectTag : objTag;\n  othTag = othTag == argsTag ? objectTag : othTag;\n\n  var objIsObj = objTag == objectTag,\n      othIsObj = othTag == objectTag,\n      isSameTag = objTag == othTag;\n\n  if (isSameTag && isBuffer(object)) {\n    if (!isBuffer(other)) {\n      return false;\n    }\n    objIsArr = true;\n    objIsObj = false;\n  }\n  if (isSameTag && !objIsObj) {\n    stack || (stack = new Stack);\n    return (objIsArr || isTypedArray(object))\n      ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n      : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n  }\n  if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n    var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n        othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n    if (objIsWrapped || othIsWrapped) {\n      var objUnwrapped = objIsWrapped ? object.value() : object,\n          othUnwrapped = othIsWrapped ? other.value() : other;\n\n      stack || (stack = new Stack);\n      return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n    }\n  }\n  if (!isSameTag) {\n    return false;\n  }\n  stack || (stack = new Stack);\n  return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nexport default baseIsEqualDeep;\n","import baseIsEqualDeep from './_baseIsEqualDeep.js';\nimport isObjectLike from './isObjectLike.js';\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n *  1 - Unordered comparison\n *  2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n  if (value === other) {\n    return true;\n  }\n  if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n    return value !== value && other !== other;\n  }\n  return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nexport default baseIsEqual;\n","import Stack from './_Stack.js';\nimport baseIsEqual from './_baseIsEqual.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n  var index = matchData.length,\n      length = index,\n      noCustomizer = !customizer;\n\n  if (object == null) {\n    return !length;\n  }\n  object = Object(object);\n  while (index--) {\n    var data = matchData[index];\n    if ((noCustomizer && data[2])\n          ? data[1] !== object[data[0]]\n          : !(data[0] in object)\n        ) {\n      return false;\n    }\n  }\n  while (++index < length) {\n    data = matchData[index];\n    var key = data[0],\n        objValue = object[key],\n        srcValue = data[1];\n\n    if (noCustomizer && data[2]) {\n      if (objValue === undefined && !(key in object)) {\n        return false;\n      }\n    } else {\n      var stack = new Stack;\n      if (customizer) {\n        var result = customizer(objValue, srcValue, key, object, source, stack);\n      }\n      if (!(result === undefined\n            ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n            : result\n          )) {\n        return false;\n      }\n    }\n  }\n  return true;\n}\n\nexport default baseIsMatch;\n","import isObject from './isObject.js';\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n *  equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n  return value === value && !isObject(value);\n}\n\nexport default isStrictComparable;\n","import isStrictComparable from './_isStrictComparable.js';\nimport keys from './keys.js';\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n  var result = keys(object),\n      length = result.length;\n\n  while (length--) {\n    var key = result[length],\n        value = object[key];\n\n    result[length] = [key, value, isStrictComparable(value)];\n  }\n  return result;\n}\n\nexport default getMatchData;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n  return function(object) {\n    if (object == null) {\n      return false;\n    }\n    return object[key] === srcValue &&\n      (srcValue !== undefined || (key in Object(object)));\n  };\n}\n\nexport default matchesStrictComparable;\n","import baseIsMatch from './_baseIsMatch.js';\nimport getMatchData from './_getMatchData.js';\nimport matchesStrictComparable from './_matchesStrictComparable.js';\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n  var matchData = getMatchData(source);\n  if (matchData.length == 1 && matchData[0][2]) {\n    return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n  }\n  return function(object) {\n    return object === source || baseIsMatch(object, source, matchData);\n  };\n}\n\nexport default baseMatches;\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n  return object != null && key in Object(object);\n}\n\nexport default baseHasIn;\n","import castPath from './_castPath.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isIndex from './_isIndex.js';\nimport isLength from './isLength.js';\nimport toKey from './_toKey.js';\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n  path = castPath(path, object);\n\n  var index = -1,\n      length = path.length,\n      result = false;\n\n  while (++index < length) {\n    var key = toKey(path[index]);\n    if (!(result = object != null && hasFunc(object, key))) {\n      break;\n    }\n    object = object[key];\n  }\n  if (result || ++index != length) {\n    return result;\n  }\n  length = object == null ? 0 : object.length;\n  return !!length && isLength(length) && isIndex(key, length) &&\n    (isArray(object) || isArguments(object));\n}\n\nexport default hasPath;\n","import baseHasIn from './_baseHasIn.js';\nimport hasPath from './_hasPath.js';\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n  return object != null && hasPath(object, path, baseHasIn);\n}\n\nexport default hasIn;\n","import baseIsEqual from './_baseIsEqual.js';\nimport get from './get.js';\nimport hasIn from './hasIn.js';\nimport isKey from './_isKey.js';\nimport isStrictComparable from './_isStrictComparable.js';\nimport matchesStrictComparable from './_matchesStrictComparable.js';\nimport toKey from './_toKey.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n  if (isKey(path) && isStrictComparable(srcValue)) {\n    return matchesStrictComparable(toKey(path), srcValue);\n  }\n  return function(object) {\n    var objValue = get(object, path);\n    return (objValue === undefined && objValue === srcValue)\n      ? hasIn(object, path)\n      : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n  };\n}\n\nexport default baseMatchesProperty;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n  return function(object) {\n    return object == null ? undefined : object[key];\n  };\n}\n\nexport default baseProperty;\n","import baseGet from './_baseGet.js';\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n  return function(object) {\n    return baseGet(object, path);\n  };\n}\n\nexport default basePropertyDeep;\n","import baseProperty from './_baseProperty.js';\nimport basePropertyDeep from './_basePropertyDeep.js';\nimport isKey from './_isKey.js';\nimport toKey from './_toKey.js';\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n *   { 'a': { 'b': 2 } },\n *   { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n  return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nexport default property;\n","import baseMatches from './_baseMatches.js';\nimport baseMatchesProperty from './_baseMatchesProperty.js';\nimport identity from './identity.js';\nimport isArray from './isArray.js';\nimport property from './property.js';\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n  // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n  // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n  if (typeof value == 'function') {\n    return value;\n  }\n  if (value == null) {\n    return identity;\n  }\n  if (typeof value == 'object') {\n    return isArray(value)\n      ? baseMatchesProperty(value[0], value[1])\n      : baseMatches(value);\n  }\n  return property(value);\n}\n\nexport default baseIteratee;\n","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n  return function(object, iteratee, keysFunc) {\n    var index = -1,\n        iterable = Object(object),\n        props = keysFunc(object),\n        length = props.length;\n\n    while (length--) {\n      var key = props[fromRight ? length : ++index];\n      if (iteratee(iterable[key], key, iterable) === false) {\n        break;\n      }\n    }\n    return object;\n  };\n}\n\nexport default createBaseFor;\n","import createBaseFor from './_createBaseFor.js';\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nexport default baseFor;\n","import baseAssignValue from './_baseAssignValue.js';\nimport eq from './eq.js';\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n  if ((value !== undefined && !eq(object[key], value)) ||\n      (value === undefined && !(key in object))) {\n    baseAssignValue(object, key, value);\n  }\n}\n\nexport default assignMergeValue;\n","import isArrayLike from './isArrayLike.js';\nimport isObjectLike from './isObjectLike.js';\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n *  else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n  return isObjectLike(value) && isArrayLike(value);\n}\n\nexport default isArrayLikeObject;\n","/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n  if (key === 'constructor' && typeof object[key] === 'function') {\n    return;\n  }\n\n  if (key == '__proto__') {\n    return;\n  }\n\n  return object[key];\n}\n\nexport default safeGet;\n","import copyObject from './_copyObject.js';\nimport keysIn from './keysIn.js';\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n  return copyObject(value, keysIn(value));\n}\n\nexport default toPlainObject;\n","import assignMergeValue from './_assignMergeValue.js';\nimport cloneBuffer from './_cloneBuffer.js';\nimport cloneTypedArray from './_cloneTypedArray.js';\nimport copyArray from './_copyArray.js';\nimport initCloneObject from './_initCloneObject.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isArrayLikeObject from './isArrayLikeObject.js';\nimport isBuffer from './isBuffer.js';\nimport isFunction from './isFunction.js';\nimport isObject from './isObject.js';\nimport isPlainObject from './isPlainObject.js';\nimport isTypedArray from './isTypedArray.js';\nimport safeGet from './_safeGet.js';\nimport toPlainObject from './toPlainObject.js';\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n *  counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n  var objValue = safeGet(object, key),\n      srcValue = safeGet(source, key),\n      stacked = stack.get(srcValue);\n\n  if (stacked) {\n    assignMergeValue(object, key, stacked);\n    return;\n  }\n  var newValue = customizer\n    ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n    : undefined;\n\n  var isCommon = newValue === undefined;\n\n  if (isCommon) {\n    var isArr = isArray(srcValue),\n        isBuff = !isArr && isBuffer(srcValue),\n        isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n    newValue = srcValue;\n    if (isArr || isBuff || isTyped) {\n      if (isArray(objValue)) {\n        newValue = objValue;\n      }\n      else if (isArrayLikeObject(objValue)) {\n        newValue = copyArray(objValue);\n      }\n      else if (isBuff) {\n        isCommon = false;\n        newValue = cloneBuffer(srcValue, true);\n      }\n      else if (isTyped) {\n        isCommon = false;\n        newValue = cloneTypedArray(srcValue, true);\n      }\n      else {\n        newValue = [];\n      }\n    }\n    else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n      newValue = objValue;\n      if (isArguments(objValue)) {\n        newValue = toPlainObject(objValue);\n      }\n      else if (!isObject(objValue) || isFunction(objValue)) {\n        newValue = initCloneObject(srcValue);\n      }\n    }\n    else {\n      isCommon = false;\n    }\n  }\n  if (isCommon) {\n    // Recursively merge objects and arrays (susceptible to call stack limits).\n    stack.set(srcValue, newValue);\n    mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n    stack['delete'](srcValue);\n  }\n  assignMergeValue(object, key, newValue);\n}\n\nexport default baseMergeDeep;\n","import Stack from './_Stack.js';\nimport assignMergeValue from './_assignMergeValue.js';\nimport baseFor from './_baseFor.js';\nimport baseMergeDeep from './_baseMergeDeep.js';\nimport isObject from './isObject.js';\nimport keysIn from './keysIn.js';\nimport safeGet from './_safeGet.js';\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n *  counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n  if (object === source) {\n    return;\n  }\n  baseFor(source, function(srcValue, key) {\n    stack || (stack = new Stack);\n    if (isObject(srcValue)) {\n      baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n    }\n    else {\n      var newValue = customizer\n        ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n        : undefined;\n\n      if (newValue === undefined) {\n        newValue = srcValue;\n      }\n      assignMergeValue(object, key, newValue);\n    }\n  }, keysIn);\n}\n\nexport default baseMerge;\n","/**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\nfunction last(array) {\n  var length = array == null ? 0 : array.length;\n  return length ? array[length - 1] : undefined;\n}\n\nexport default last;\n","import baseKeys from './_baseKeys.js';\nimport getTag from './_getTag.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isArrayLike from './isArrayLike.js';\nimport isBuffer from './isBuffer.js';\nimport isPrototype from './_isPrototype.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n    setTag = '[object Set]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\nfunction isEmpty(value) {\n  if (value == null) {\n    return true;\n  }\n  if (isArrayLike(value) &&\n      (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n        isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n    return !value.length;\n  }\n  var tag = getTag(value);\n  if (tag == mapTag || tag == setTag) {\n    return !value.size;\n  }\n  if (isPrototype(value)) {\n    return !baseKeys(value).length;\n  }\n  for (var key in value) {\n    if (hasOwnProperty.call(value, key)) {\n      return false;\n    }\n  }\n  return true;\n}\n\nexport default isEmpty;\n","import baseMerge from './_baseMerge.js';\nimport createAssigner from './_createAssigner.js';\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n *   'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n *   'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n  baseMerge(object, source, srcIndex);\n});\n\nexport default merge;\n","import Set from './_Set.js';\nimport noop from './noop.js';\nimport setToArray from './_setToArray.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n  return new Set(values);\n};\n\nexport default createSet;\n","import SetCache from './_SetCache.js';\nimport arrayIncludes from './_arrayIncludes.js';\nimport arrayIncludesWith from './_arrayIncludesWith.js';\nimport cacheHas from './_cacheHas.js';\nimport createSet from './_createSet.js';\nimport setToArray from './_setToArray.js';\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n  var index = -1,\n      includes = arrayIncludes,\n      length = array.length,\n      isCommon = true,\n      result = [],\n      seen = result;\n\n  if (comparator) {\n    isCommon = false;\n    includes = arrayIncludesWith;\n  }\n  else if (length >= LARGE_ARRAY_SIZE) {\n    var set = iteratee ? null : createSet(array);\n    if (set) {\n      return setToArray(set);\n    }\n    isCommon = false;\n    includes = cacheHas;\n    seen = new SetCache;\n  }\n  else {\n    seen = iteratee ? [] : result;\n  }\n  outer:\n  while (++index < length) {\n    var value = array[index],\n        computed = iteratee ? iteratee(value) : value;\n\n    value = (comparator || value !== 0) ? value : 0;\n    if (isCommon && computed === computed) {\n      var seenIndex = seen.length;\n      while (seenIndex--) {\n        if (seen[seenIndex] === computed) {\n          continue outer;\n        }\n      }\n      if (iteratee) {\n        seen.push(computed);\n      }\n      result.push(value);\n    }\n    else if (!includes(seen, computed, comparator)) {\n      if (seen !== result) {\n        seen.push(computed);\n      }\n      result.push(value);\n    }\n  }\n  return result;\n}\n\nexport default baseUniq;\n","import baseFlatten from './_baseFlatten.js';\nimport baseIteratee from './_baseIteratee.js';\nimport baseRest from './_baseRest.js';\nimport baseUniq from './_baseUniq.js';\nimport isArrayLikeObject from './isArrayLikeObject.js';\nimport last from './last.js';\n\n/**\n * This method is like `_.union` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which uniqueness is computed. Result values are chosen from the first\n * array in which the value occurs. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.unionBy([2.1], [1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\nvar unionBy = baseRest(function(arrays) {\n  var iteratee = last(arrays);\n  if (isArrayLikeObject(iteratee)) {\n    iteratee = undefined;\n  }\n  return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), baseIteratee(iteratee, 2));\n});\n\nexport default unionBy;\n","import baseUniq from './_baseUniq.js';\n\n/**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\nfunction uniq(array) {\n  return (array && array.length) ? baseUniq(array) : [];\n}\n\nexport default uniq;\n","export default function ascending(a, b) {\n  return a == null || b == null ? NaN : a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export default function descending(a, b) {\n  return a == null || b == null ? NaN\n    : b < a ? -1\n    : b > a ? 1\n    : b >= a ? 0\n    : NaN;\n}\n","import ascending from \"./ascending.js\";\nimport descending from \"./descending.js\";\n\nexport default function bisector(f) {\n  let compare1, compare2, delta;\n\n  // If an accessor is specified, promote it to a comparator. In this case we\n  // can test whether the search value is (self-) comparable. We can’t do this\n  // for a comparator (except for specific, known comparators) because we can’t\n  // tell if the comparator is symmetric, and an asymmetric comparator can’t be\n  // used to test whether a single value is comparable.\n  if (f.length !== 2) {\n    compare1 = ascending;\n    compare2 = (d, x) => ascending(f(d), x);\n    delta = (d, x) => f(d) - x;\n  } else {\n    compare1 = f === ascending || f === descending ? f : zero;\n    compare2 = f;\n    delta = f;\n  }\n\n  function left(a, x, lo = 0, hi = a.length) {\n    if (lo < hi) {\n      if (compare1(x, x) !== 0) return hi;\n      do {\n        const mid = (lo + hi) >>> 1;\n        if (compare2(a[mid], x) < 0) lo = mid + 1;\n        else hi = mid;\n      } while (lo < hi);\n    }\n    return lo;\n  }\n\n  function right(a, x, lo = 0, hi = a.length) {\n    if (lo < hi) {\n      if (compare1(x, x) !== 0) return hi;\n      do {\n        const mid = (lo + hi) >>> 1;\n        if (compare2(a[mid], x) <= 0) lo = mid + 1;\n        else hi = mid;\n      } while (lo < hi);\n    }\n    return lo;\n  }\n\n  function center(a, x, lo = 0, hi = a.length) {\n    const i = left(a, x, lo, hi - 1);\n    return i > lo && delta(a[i - 1], x) > -delta(a[i], x) ? i - 1 : i;\n  }\n\n  return {left, center, right};\n}\n\nfunction zero() {\n  return 0;\n}\n","export default function number(x) {\n  return x === null ? NaN : +x;\n}\n\nexport function* numbers(values, valueof) {\n  if (valueof === undefined) {\n    for (let value of values) {\n      if (value != null && (value = +value) >= value) {\n        yield value;\n      }\n    }\n  } else {\n    let index = -1;\n    for (let value of values) {\n      if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n        yield value;\n      }\n    }\n  }\n}\n","import ascending from \"./ascending.js\";\nimport bisector from \"./bisector.js\";\nimport number from \"./number.js\";\n\nconst ascendingBisect = bisector(ascending);\nexport const bisectRight = ascendingBisect.right;\nexport const bisectLeft = ascendingBisect.left;\nexport const bisectCenter = bisector(number).center;\nexport default bisectRight;\n","export default function extent(values, valueof) {\n  let min;\n  let max;\n  if (valueof === undefined) {\n    for (const value of values) {\n      if (value != null) {\n        if (min === undefined) {\n          if (value >= value) min = max = value;\n        } else {\n          if (min > value) min = value;\n          if (max < value) max = value;\n        }\n      }\n    }\n  } else {\n    let index = -1;\n    for (let value of values) {\n      if ((value = valueof(value, ++index, values)) != null) {\n        if (min === undefined) {\n          if (value >= value) min = max = value;\n        } else {\n          if (min > value) min = value;\n          if (max < value) max = value;\n        }\n      }\n    }\n  }\n  return [min, max];\n}\n","export class InternMap extends Map {\n  constructor(entries, key = keyof) {\n    super();\n    Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}});\n    if (entries != null) for (const [key, value] of entries) this.set(key, value);\n  }\n  get(key) {\n    return super.get(intern_get(this, key));\n  }\n  has(key) {\n    return super.has(intern_get(this, key));\n  }\n  set(key, value) {\n    return super.set(intern_set(this, key), value);\n  }\n  delete(key) {\n    return super.delete(intern_delete(this, key));\n  }\n}\n\nexport class InternSet extends Set {\n  constructor(values, key = keyof) {\n    super();\n    Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}});\n    if (values != null) for (const value of values) this.add(value);\n  }\n  has(value) {\n    return super.has(intern_get(this, value));\n  }\n  add(value) {\n    return super.add(intern_set(this, value));\n  }\n  delete(value) {\n    return super.delete(intern_delete(this, value));\n  }\n}\n\nfunction intern_get({_intern, _key}, value) {\n  const key = _key(value);\n  return _intern.has(key) ? _intern.get(key) : value;\n}\n\nfunction intern_set({_intern, _key}, value) {\n  const key = _key(value);\n  if (_intern.has(key)) return _intern.get(key);\n  _intern.set(key, value);\n  return value;\n}\n\nfunction intern_delete({_intern, _key}, value) {\n  const key = _key(value);\n  if (_intern.has(key)) {\n    value = _intern.get(key);\n    _intern.delete(key);\n  }\n  return value;\n}\n\nfunction keyof(value) {\n  return value !== null && typeof value === \"object\" ? value.valueOf() : value;\n}\n","const e10 = Math.sqrt(50),\n    e5 = Math.sqrt(10),\n    e2 = Math.sqrt(2);\n\nfunction tickSpec(start, stop, count) {\n  const step = (stop - start) / Math.max(0, count),\n      power = Math.floor(Math.log10(step)),\n      error = step / Math.pow(10, power),\n      factor = error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1;\n  let i1, i2, inc;\n  if (power < 0) {\n    inc = Math.pow(10, -power) / factor;\n    i1 = Math.round(start * inc);\n    i2 = Math.round(stop * inc);\n    if (i1 / inc < start) ++i1;\n    if (i2 / inc > stop) --i2;\n    inc = -inc;\n  } else {\n    inc = Math.pow(10, power) * factor;\n    i1 = Math.round(start / inc);\n    i2 = Math.round(stop / inc);\n    if (i1 * inc < start) ++i1;\n    if (i2 * inc > stop) --i2;\n  }\n  if (i2 < i1 && 0.5 <= count && count < 2) return tickSpec(start, stop, count * 2);\n  return [i1, i2, inc];\n}\n\nexport default function ticks(start, stop, count) {\n  stop = +stop, start = +start, count = +count;\n  if (!(count > 0)) return [];\n  if (start === stop) return [start];\n  const reverse = stop < start, [i1, i2, inc] = reverse ? tickSpec(stop, start, count) : tickSpec(start, stop, count);\n  if (!(i2 >= i1)) return [];\n  const n = i2 - i1 + 1, ticks = new Array(n);\n  if (reverse) {\n    if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) / -inc;\n    else for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) * inc;\n  } else {\n    if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) / -inc;\n    else for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) * inc;\n  }\n  return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n  stop = +stop, start = +start, count = +count;\n  return tickSpec(start, stop, count)[2];\n}\n\nexport function tickStep(start, stop, count) {\n  stop = +stop, start = +start, count = +count;\n  const reverse = stop < start, inc = reverse ? tickIncrement(stop, start, count) : tickIncrement(start, stop, count);\n  return (reverse ? -1 : 1) * (inc < 0 ? 1 / -inc : inc);\n}\n","export default function max(values, valueof) {\n  let max;\n  if (valueof === undefined) {\n    for (const value of values) {\n      if (value != null\n          && (max < value || (max === undefined && value >= value))) {\n        max = value;\n      }\n    }\n  } else {\n    let index = -1;\n    for (let value of values) {\n      if ((value = valueof(value, ++index, values)) != null\n          && (max < value || (max === undefined && value >= value))) {\n        max = value;\n      }\n    }\n  }\n  return max;\n}\n","export default function min(values, valueof) {\n  let min;\n  if (valueof === undefined) {\n    for (const value of values) {\n      if (value != null\n          && (min > value || (min === undefined && value >= value))) {\n        min = value;\n      }\n    }\n  } else {\n    let index = -1;\n    for (let value of values) {\n      if ((value = valueof(value, ++index, values)) != null\n          && (min > value || (min === undefined && value >= value))) {\n        min = value;\n      }\n    }\n  }\n  return min;\n}\n","var noop = {value: () => {}};\n\nfunction dispatch() {\n  for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n    if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n    _[t] = [];\n  }\n  return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n  this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n  return typenames.trim().split(/^|\\s+/).map(function(t) {\n    var name = \"\", i = t.indexOf(\".\");\n    if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n    if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n    return {type: t, name: name};\n  });\n}\n\nDispatch.prototype = dispatch.prototype = {\n  constructor: Dispatch,\n  on: function(typename, callback) {\n    var _ = this._,\n        T = parseTypenames(typename + \"\", _),\n        t,\n        i = -1,\n        n = T.length;\n\n    // If no callback was specified, return the callback of the given type and name.\n    if (arguments.length < 2) {\n      while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n      return;\n    }\n\n    // If a type was specified, set the callback for the given type and name.\n    // Otherwise, if a null callback was specified, remove callbacks of the given name.\n    if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n    while (++i < n) {\n      if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n      else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n    }\n\n    return this;\n  },\n  copy: function() {\n    var copy = {}, _ = this._;\n    for (var t in _) copy[t] = _[t].slice();\n    return new Dispatch(copy);\n  },\n  call: function(type, that) {\n    if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n    if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n    for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n  },\n  apply: function(type, that, args) {\n    if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n    for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n  }\n};\n\nfunction get(type, name) {\n  for (var i = 0, n = type.length, c; i < n; ++i) {\n    if ((c = type[i]).name === name) {\n      return c.value;\n    }\n  }\n}\n\nfunction set(type, name, callback) {\n  for (var i = 0, n = type.length; i < n; ++i) {\n    if (type[i].name === name) {\n      type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n      break;\n    }\n  }\n  if (callback != null) type.push({name: name, value: callback});\n  return type;\n}\n\nexport default dispatch;\n","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n  svg: \"http://www.w3.org/2000/svg\",\n  xhtml: xhtml,\n  xlink: \"http://www.w3.org/1999/xlink\",\n  xml: \"http://www.w3.org/XML/1998/namespace\",\n  xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n","import namespaces from \"./namespaces.js\";\n\nexport default function(name) {\n  var prefix = name += \"\", i = prefix.indexOf(\":\");\n  if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n  return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name; // eslint-disable-line no-prototype-builtins\n}\n","import namespace from \"./namespace.js\";\nimport {xhtml} from \"./namespaces.js\";\n\nfunction creatorInherit(name) {\n  return function() {\n    var document = this.ownerDocument,\n        uri = this.namespaceURI;\n    return uri === xhtml && document.documentElement.namespaceURI === xhtml\n        ? document.createElement(name)\n        : document.createElementNS(uri, name);\n  };\n}\n\nfunction creatorFixed(fullname) {\n  return function() {\n    return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n  };\n}\n\nexport default function(name) {\n  var fullname = namespace(name);\n  return (fullname.local\n      ? creatorFixed\n      : creatorInherit)(fullname);\n}\n","function none() {}\n\nexport default function(selector) {\n  return selector == null ? none : function() {\n    return this.querySelector(selector);\n  };\n}\n","import {Selection} from \"./index.js\";\nimport selector from \"../selector.js\";\n\nexport default function(select) {\n  if (typeof select !== \"function\") select = selector(select);\n\n  for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n      if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n        if (\"__data__\" in node) subnode.__data__ = node.__data__;\n        subgroup[i] = subnode;\n      }\n    }\n  }\n\n  return new Selection(subgroups, this._parents);\n}\n","// Given something array like (or null), returns something that is strictly an\n// array. This is used to ensure that array-like objects passed to d3.selectAll\n// or selection.selectAll are converted into proper arrays when creating a\n// selection; we don’t ever want to create a selection backed by a live\n// HTMLCollection or NodeList. However, note that selection.selectAll will use a\n// static NodeList as a group, since it safely derived from querySelectorAll.\nexport default function array(x) {\n  return x == null ? [] : Array.isArray(x) ? x : Array.from(x);\n}\n","function empty() {\n  return [];\n}\n\nexport default function(selector) {\n  return selector == null ? empty : function() {\n    return this.querySelectorAll(selector);\n  };\n}\n","import {Selection} from \"./index.js\";\nimport array from \"../array.js\";\nimport selectorAll from \"../selectorAll.js\";\n\nfunction arrayAll(select) {\n  return function() {\n    return array(select.apply(this, arguments));\n  };\n}\n\nexport default function(select) {\n  if (typeof select === \"function\") select = arrayAll(select);\n  else select = selectorAll(select);\n\n  for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n      if (node = group[i]) {\n        subgroups.push(select.call(node, node.__data__, i, group));\n        parents.push(node);\n      }\n    }\n  }\n\n  return new Selection(subgroups, parents);\n}\n","export default function(selector) {\n  return function() {\n    return this.matches(selector);\n  };\n}\n\nexport function childMatcher(selector) {\n  return function(node) {\n    return node.matches(selector);\n  };\n}\n\n","import {childMatcher} from \"../matcher.js\";\n\nvar find = Array.prototype.find;\n\nfunction childFind(match) {\n  return function() {\n    return find.call(this.children, match);\n  };\n}\n\nfunction childFirst() {\n  return this.firstElementChild;\n}\n\nexport default function(match) {\n  return this.select(match == null ? childFirst\n      : childFind(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","import {childMatcher} from \"../matcher.js\";\n\nvar filter = Array.prototype.filter;\n\nfunction children() {\n  return Array.from(this.children);\n}\n\nfunction childrenFilter(match) {\n  return function() {\n    return filter.call(this.children, match);\n  };\n}\n\nexport default function(match) {\n  return this.selectAll(match == null ? children\n      : childrenFilter(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","import {Selection} from \"./index.js\";\nimport matcher from \"../matcher.js\";\n\nexport default function(match) {\n  if (typeof match !== \"function\") match = matcher(match);\n\n  for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n      if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n        subgroup.push(node);\n      }\n    }\n  }\n\n  return new Selection(subgroups, this._parents);\n}\n","export default function(update) {\n  return new Array(update.length);\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n  return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n  this.ownerDocument = parent.ownerDocument;\n  this.namespaceURI = parent.namespaceURI;\n  this._next = null;\n  this._parent = parent;\n  this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n  constructor: EnterNode,\n  appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n  insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n  querySelector: function(selector) { return this._parent.querySelector(selector); },\n  querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n","export default function(x) {\n  return function() {\n    return x;\n  };\n}\n","import {Selection} from \"./index.js\";\nimport {EnterNode} from \"./enter.js\";\nimport constant from \"../constant.js\";\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n  var i = 0,\n      node,\n      groupLength = group.length,\n      dataLength = data.length;\n\n  // Put any non-null nodes that fit into update.\n  // Put any null nodes into enter.\n  // Put any remaining data into enter.\n  for (; i < dataLength; ++i) {\n    if (node = group[i]) {\n      node.__data__ = data[i];\n      update[i] = node;\n    } else {\n      enter[i] = new EnterNode(parent, data[i]);\n    }\n  }\n\n  // Put any non-null nodes that don’t fit into exit.\n  for (; i < groupLength; ++i) {\n    if (node = group[i]) {\n      exit[i] = node;\n    }\n  }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n  var i,\n      node,\n      nodeByKeyValue = new Map,\n      groupLength = group.length,\n      dataLength = data.length,\n      keyValues = new Array(groupLength),\n      keyValue;\n\n  // Compute the key for each node.\n  // If multiple nodes have the same key, the duplicates are added to exit.\n  for (i = 0; i < groupLength; ++i) {\n    if (node = group[i]) {\n      keyValues[i] = keyValue = key.call(node, node.__data__, i, group) + \"\";\n      if (nodeByKeyValue.has(keyValue)) {\n        exit[i] = node;\n      } else {\n        nodeByKeyValue.set(keyValue, node);\n      }\n    }\n  }\n\n  // Compute the key for each datum.\n  // If there a node associated with this key, join and add it to update.\n  // If there is not (or the key is a duplicate), add it to enter.\n  for (i = 0; i < dataLength; ++i) {\n    keyValue = key.call(parent, data[i], i, data) + \"\";\n    if (node = nodeByKeyValue.get(keyValue)) {\n      update[i] = node;\n      node.__data__ = data[i];\n      nodeByKeyValue.delete(keyValue);\n    } else {\n      enter[i] = new EnterNode(parent, data[i]);\n    }\n  }\n\n  // Add any remaining nodes that were not bound to data to exit.\n  for (i = 0; i < groupLength; ++i) {\n    if ((node = group[i]) && (nodeByKeyValue.get(keyValues[i]) === node)) {\n      exit[i] = node;\n    }\n  }\n}\n\nfunction datum(node) {\n  return node.__data__;\n}\n\nexport default function(value, key) {\n  if (!arguments.length) return Array.from(this, datum);\n\n  var bind = key ? bindKey : bindIndex,\n      parents = this._parents,\n      groups = this._groups;\n\n  if (typeof value !== \"function\") value = constant(value);\n\n  for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n    var parent = parents[j],\n        group = groups[j],\n        groupLength = group.length,\n        data = arraylike(value.call(parent, parent && parent.__data__, j, parents)),\n        dataLength = data.length,\n        enterGroup = enter[j] = new Array(dataLength),\n        updateGroup = update[j] = new Array(dataLength),\n        exitGroup = exit[j] = new Array(groupLength);\n\n    bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n    // Now connect the enter nodes to their following update node, such that\n    // appendChild can insert the materialized enter node before this node,\n    // rather than at the end of the parent node.\n    for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n      if (previous = enterGroup[i0]) {\n        if (i0 >= i1) i1 = i0 + 1;\n        while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n        previous._next = next || null;\n      }\n    }\n  }\n\n  update = new Selection(update, parents);\n  update._enter = enter;\n  update._exit = exit;\n  return update;\n}\n\n// Given some data, this returns an array-like view of it: an object that\n// exposes a length property and allows numeric indexing. Note that unlike\n// selectAll, this isn’t worried about “live” collections because the resulting\n// array will only be used briefly while data is being bound. (It is possible to\n// cause the data to change while iterating by using a key function, but please\n// don’t; we’d rather avoid a gratuitous copy.)\nfunction arraylike(data) {\n  return typeof data === \"object\" && \"length\" in data\n    ? data // Array, TypedArray, NodeList, array-like\n    : Array.from(data); // Map, Set, iterable, string, or anything else\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n  return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n","export default function(onenter, onupdate, onexit) {\n  var enter = this.enter(), update = this, exit = this.exit();\n  if (typeof onenter === \"function\") {\n    enter = onenter(enter);\n    if (enter) enter = enter.selection();\n  } else {\n    enter = enter.append(onenter + \"\");\n  }\n  if (onupdate != null) {\n    update = onupdate(update);\n    if (update) update = update.selection();\n  }\n  if (onexit == null) exit.remove(); else onexit(exit);\n  return enter && update ? enter.merge(update).order() : update;\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(context) {\n  var selection = context.selection ? context.selection() : context;\n\n  for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n    for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n      if (node = group0[i] || group1[i]) {\n        merge[i] = node;\n      }\n    }\n  }\n\n  for (; j < m0; ++j) {\n    merges[j] = groups0[j];\n  }\n\n  return new Selection(merges, this._parents);\n}\n","export default function() {\n\n  for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n    for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n      if (node = group[i]) {\n        if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n        next = node;\n      }\n    }\n  }\n\n  return this;\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(compare) {\n  if (!compare) compare = ascending;\n\n  function compareNode(a, b) {\n    return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n  }\n\n  for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n      if (node = group[i]) {\n        sortgroup[i] = node;\n      }\n    }\n    sortgroup.sort(compareNode);\n  }\n\n  return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n  return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export default function() {\n  var callback = arguments[0];\n  arguments[0] = this;\n  callback.apply(null, arguments);\n  return this;\n}\n","export default function() {\n  return Array.from(this);\n}\n","export default function() {\n\n  for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n    for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n      var node = group[i];\n      if (node) return node;\n    }\n  }\n\n  return null;\n}\n","export default function() {\n  let size = 0;\n  for (const node of this) ++size; // eslint-disable-line no-unused-vars\n  return size;\n}\n","export default function() {\n  return !this.node();\n}\n","export default function(callback) {\n\n  for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n    for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n      if (node = group[i]) callback.call(node, node.__data__, i, group);\n    }\n  }\n\n  return this;\n}\n","import namespace from \"../namespace.js\";\n\nfunction attrRemove(name) {\n  return function() {\n    this.removeAttribute(name);\n  };\n}\n\nfunction attrRemoveNS(fullname) {\n  return function() {\n    this.removeAttributeNS(fullname.space, fullname.local);\n  };\n}\n\nfunction attrConstant(name, value) {\n  return function() {\n    this.setAttribute(name, value);\n  };\n}\n\nfunction attrConstantNS(fullname, value) {\n  return function() {\n    this.setAttributeNS(fullname.space, fullname.local, value);\n  };\n}\n\nfunction attrFunction(name, value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (v == null) this.removeAttribute(name);\n    else this.setAttribute(name, v);\n  };\n}\n\nfunction attrFunctionNS(fullname, value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n    else this.setAttributeNS(fullname.space, fullname.local, v);\n  };\n}\n\nexport default function(name, value) {\n  var fullname = namespace(name);\n\n  if (arguments.length < 2) {\n    var node = this.node();\n    return fullname.local\n        ? node.getAttributeNS(fullname.space, fullname.local)\n        : node.getAttribute(fullname);\n  }\n\n  return this.each((value == null\n      ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n      ? (fullname.local ? attrFunctionNS : attrFunction)\n      : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n","export default function(node) {\n  return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n      || (node.document && node) // node is a Window\n      || node.defaultView; // node is a Document\n}\n","import defaultView from \"../window.js\";\n\nfunction styleRemove(name) {\n  return function() {\n    this.style.removeProperty(name);\n  };\n}\n\nfunction styleConstant(name, value, priority) {\n  return function() {\n    this.style.setProperty(name, value, priority);\n  };\n}\n\nfunction styleFunction(name, value, priority) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (v == null) this.style.removeProperty(name);\n    else this.style.setProperty(name, v, priority);\n  };\n}\n\nexport default function(name, value, priority) {\n  return arguments.length > 1\n      ? this.each((value == null\n            ? styleRemove : typeof value === \"function\"\n            ? styleFunction\n            : styleConstant)(name, value, priority == null ? \"\" : priority))\n      : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n  return node.style.getPropertyValue(name)\n      || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n","function propertyRemove(name) {\n  return function() {\n    delete this[name];\n  };\n}\n\nfunction propertyConstant(name, value) {\n  return function() {\n    this[name] = value;\n  };\n}\n\nfunction propertyFunction(name, value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (v == null) delete this[name];\n    else this[name] = v;\n  };\n}\n\nexport default function(name, value) {\n  return arguments.length > 1\n      ? this.each((value == null\n          ? propertyRemove : typeof value === \"function\"\n          ? propertyFunction\n          : propertyConstant)(name, value))\n      : this.node()[name];\n}\n","function classArray(string) {\n  return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n  return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n  this._node = node;\n  this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n  add: function(name) {\n    var i = this._names.indexOf(name);\n    if (i < 0) {\n      this._names.push(name);\n      this._node.setAttribute(\"class\", this._names.join(\" \"));\n    }\n  },\n  remove: function(name) {\n    var i = this._names.indexOf(name);\n    if (i >= 0) {\n      this._names.splice(i, 1);\n      this._node.setAttribute(\"class\", this._names.join(\" \"));\n    }\n  },\n  contains: function(name) {\n    return this._names.indexOf(name) >= 0;\n  }\n};\n\nfunction classedAdd(node, names) {\n  var list = classList(node), i = -1, n = names.length;\n  while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n  var list = classList(node), i = -1, n = names.length;\n  while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n  return function() {\n    classedAdd(this, names);\n  };\n}\n\nfunction classedFalse(names) {\n  return function() {\n    classedRemove(this, names);\n  };\n}\n\nfunction classedFunction(names, value) {\n  return function() {\n    (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n  };\n}\n\nexport default function(name, value) {\n  var names = classArray(name + \"\");\n\n  if (arguments.length < 2) {\n    var list = classList(this.node()), i = -1, n = names.length;\n    while (++i < n) if (!list.contains(names[i])) return false;\n    return true;\n  }\n\n  return this.each((typeof value === \"function\"\n      ? classedFunction : value\n      ? classedTrue\n      : classedFalse)(names, value));\n}\n","function textRemove() {\n  this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n  return function() {\n    this.textContent = value;\n  };\n}\n\nfunction textFunction(value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    this.textContent = v == null ? \"\" : v;\n  };\n}\n\nexport default function(value) {\n  return arguments.length\n      ? this.each(value == null\n          ? textRemove : (typeof value === \"function\"\n          ? textFunction\n          : textConstant)(value))\n      : this.node().textContent;\n}\n","function htmlRemove() {\n  this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n  return function() {\n    this.innerHTML = value;\n  };\n}\n\nfunction htmlFunction(value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    this.innerHTML = v == null ? \"\" : v;\n  };\n}\n\nexport default function(value) {\n  return arguments.length\n      ? this.each(value == null\n          ? htmlRemove : (typeof value === \"function\"\n          ? htmlFunction\n          : htmlConstant)(value))\n      : this.node().innerHTML;\n}\n","function raise() {\n  if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n  return this.each(raise);\n}\n","function lower() {\n  if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n  return this.each(lower);\n}\n","import creator from \"../creator.js\";\n\nexport default function(name) {\n  var create = typeof name === \"function\" ? name : creator(name);\n  return this.select(function() {\n    return this.appendChild(create.apply(this, arguments));\n  });\n}\n","import creator from \"../creator.js\";\nimport selector from \"../selector.js\";\n\nfunction constantNull() {\n  return null;\n}\n\nexport default function(name, before) {\n  var create = typeof name === \"function\" ? name : creator(name),\n      select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n  return this.select(function() {\n    return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n  });\n}\n","function remove() {\n  var parent = this.parentNode;\n  if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n  return this.each(remove);\n}\n","function selection_cloneShallow() {\n  var clone = this.cloneNode(false), parent = this.parentNode;\n  return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n  var clone = this.cloneNode(true), parent = this.parentNode;\n  return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nexport default function(deep) {\n  return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","export default function(value) {\n  return arguments.length\n      ? this.property(\"__data__\", value)\n      : this.node().__data__;\n}\n","function contextListener(listener) {\n  return function(event) {\n    listener.call(this, event, this.__data__);\n  };\n}\n\nfunction parseTypenames(typenames) {\n  return typenames.trim().split(/^|\\s+/).map(function(t) {\n    var name = \"\", i = t.indexOf(\".\");\n    if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n    return {type: t, name: name};\n  });\n}\n\nfunction onRemove(typename) {\n  return function() {\n    var on = this.__on;\n    if (!on) return;\n    for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n      if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n        this.removeEventListener(o.type, o.listener, o.options);\n      } else {\n        on[++i] = o;\n      }\n    }\n    if (++i) on.length = i;\n    else delete this.__on;\n  };\n}\n\nfunction onAdd(typename, value, options) {\n  return function() {\n    var on = this.__on, o, listener = contextListener(value);\n    if (on) for (var j = 0, m = on.length; j < m; ++j) {\n      if ((o = on[j]).type === typename.type && o.name === typename.name) {\n        this.removeEventListener(o.type, o.listener, o.options);\n        this.addEventListener(o.type, o.listener = listener, o.options = options);\n        o.value = value;\n        return;\n      }\n    }\n    this.addEventListener(typename.type, listener, options);\n    o = {type: typename.type, name: typename.name, value: value, listener: listener, options: options};\n    if (!on) this.__on = [o];\n    else on.push(o);\n  };\n}\n\nexport default function(typename, value, options) {\n  var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n  if (arguments.length < 2) {\n    var on = this.node().__on;\n    if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n      for (i = 0, o = on[j]; i < n; ++i) {\n        if ((t = typenames[i]).type === o.type && t.name === o.name) {\n          return o.value;\n        }\n      }\n    }\n    return;\n  }\n\n  on = value ? onAdd : onRemove;\n  for (i = 0; i < n; ++i) this.each(on(typenames[i], value, options));\n  return this;\n}\n","import defaultView from \"../window.js\";\n\nfunction dispatchEvent(node, type, params) {\n  var window = defaultView(node),\n      event = window.CustomEvent;\n\n  if (typeof event === \"function\") {\n    event = new event(type, params);\n  } else {\n    event = window.document.createEvent(\"Event\");\n    if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n    else event.initEvent(type, false, false);\n  }\n\n  node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n  return function() {\n    return dispatchEvent(this, type, params);\n  };\n}\n\nfunction dispatchFunction(type, params) {\n  return function() {\n    return dispatchEvent(this, type, params.apply(this, arguments));\n  };\n}\n\nexport default function(type, params) {\n  return this.each((typeof params === \"function\"\n      ? dispatchFunction\n      : dispatchConstant)(type, params));\n}\n","export default function*() {\n  for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n    for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n      if (node = group[i]) yield node;\n    }\n  }\n}\n","import selection_select from \"./select.js\";\nimport selection_selectAll from \"./selectAll.js\";\nimport selection_selectChild from \"./selectChild.js\";\nimport selection_selectChildren from \"./selectChildren.js\";\nimport selection_filter from \"./filter.js\";\nimport selection_data from \"./data.js\";\nimport selection_enter from \"./enter.js\";\nimport selection_exit from \"./exit.js\";\nimport selection_join from \"./join.js\";\nimport selection_merge from \"./merge.js\";\nimport selection_order from \"./order.js\";\nimport selection_sort from \"./sort.js\";\nimport selection_call from \"./call.js\";\nimport selection_nodes from \"./nodes.js\";\nimport selection_node from \"./node.js\";\nimport selection_size from \"./size.js\";\nimport selection_empty from \"./empty.js\";\nimport selection_each from \"./each.js\";\nimport selection_attr from \"./attr.js\";\nimport selection_style from \"./style.js\";\nimport selection_property from \"./property.js\";\nimport selection_classed from \"./classed.js\";\nimport selection_text from \"./text.js\";\nimport selection_html from \"./html.js\";\nimport selection_raise from \"./raise.js\";\nimport selection_lower from \"./lower.js\";\nimport selection_append from \"./append.js\";\nimport selection_insert from \"./insert.js\";\nimport selection_remove from \"./remove.js\";\nimport selection_clone from \"./clone.js\";\nimport selection_datum from \"./datum.js\";\nimport selection_on from \"./on.js\";\nimport selection_dispatch from \"./dispatch.js\";\nimport selection_iterator from \"./iterator.js\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n  this._groups = groups;\n  this._parents = parents;\n}\n\nfunction selection() {\n  return new Selection([[document.documentElement]], root);\n}\n\nfunction selection_selection() {\n  return this;\n}\n\nSelection.prototype = selection.prototype = {\n  constructor: Selection,\n  select: selection_select,\n  selectAll: selection_selectAll,\n  selectChild: selection_selectChild,\n  selectChildren: selection_selectChildren,\n  filter: selection_filter,\n  data: selection_data,\n  enter: selection_enter,\n  exit: selection_exit,\n  join: selection_join,\n  merge: selection_merge,\n  selection: selection_selection,\n  order: selection_order,\n  sort: selection_sort,\n  call: selection_call,\n  nodes: selection_nodes,\n  node: selection_node,\n  size: selection_size,\n  empty: selection_empty,\n  each: selection_each,\n  attr: selection_attr,\n  style: selection_style,\n  property: selection_property,\n  classed: selection_classed,\n  text: selection_text,\n  html: selection_html,\n  raise: selection_raise,\n  lower: selection_lower,\n  append: selection_append,\n  insert: selection_insert,\n  remove: selection_remove,\n  clone: selection_clone,\n  datum: selection_datum,\n  on: selection_on,\n  dispatch: selection_dispatch,\n  [Symbol.iterator]: selection_iterator\n};\n\nexport default selection;\n","export default function(event) {\n  let sourceEvent;\n  while (sourceEvent = event.sourceEvent) event = sourceEvent;\n  return event;\n}\n","import sourceEvent from \"./sourceEvent.js\";\n\nexport default function(event, node) {\n  event = sourceEvent(event);\n  if (node === undefined) node = event.currentTarget;\n  if (node) {\n    var svg = node.ownerSVGElement || node;\n    if (svg.createSVGPoint) {\n      var point = svg.createSVGPoint();\n      point.x = event.clientX, point.y = event.clientY;\n      point = point.matrixTransform(node.getScreenCTM().inverse());\n      return [point.x, point.y];\n    }\n    if (node.getBoundingClientRect) {\n      var rect = node.getBoundingClientRect();\n      return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n    }\n  }\n  return [event.pageX, event.pageY];\n}\n","export default function(constructor, factory, prototype) {\n  constructor.prototype = factory.prototype = prototype;\n  prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n  var prototype = Object.create(parent.prototype);\n  for (var key in definition) prototype[key] = definition[key];\n  return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n    reN = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n    reP = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n    reHex = /^#([0-9a-f]{3,8})$/,\n    reRgbInteger = new RegExp(`^rgb\\\\(${reI},${reI},${reI}\\\\)$`),\n    reRgbPercent = new RegExp(`^rgb\\\\(${reP},${reP},${reP}\\\\)$`),\n    reRgbaInteger = new RegExp(`^rgba\\\\(${reI},${reI},${reI},${reN}\\\\)$`),\n    reRgbaPercent = new RegExp(`^rgba\\\\(${reP},${reP},${reP},${reN}\\\\)$`),\n    reHslPercent = new RegExp(`^hsl\\\\(${reN},${reP},${reP}\\\\)$`),\n    reHslaPercent = new RegExp(`^hsla\\\\(${reN},${reP},${reP},${reN}\\\\)$`);\n\nvar named = {\n  aliceblue: 0xf0f8ff,\n  antiquewhite: 0xfaebd7,\n  aqua: 0x00ffff,\n  aquamarine: 0x7fffd4,\n  azure: 0xf0ffff,\n  beige: 0xf5f5dc,\n  bisque: 0xffe4c4,\n  black: 0x000000,\n  blanchedalmond: 0xffebcd,\n  blue: 0x0000ff,\n  blueviolet: 0x8a2be2,\n  brown: 0xa52a2a,\n  burlywood: 0xdeb887,\n  cadetblue: 0x5f9ea0,\n  chartreuse: 0x7fff00,\n  chocolate: 0xd2691e,\n  coral: 0xff7f50,\n  cornflowerblue: 0x6495ed,\n  cornsilk: 0xfff8dc,\n  crimson: 0xdc143c,\n  cyan: 0x00ffff,\n  darkblue: 0x00008b,\n  darkcyan: 0x008b8b,\n  darkgoldenrod: 0xb8860b,\n  darkgray: 0xa9a9a9,\n  darkgreen: 0x006400,\n  darkgrey: 0xa9a9a9,\n  darkkhaki: 0xbdb76b,\n  darkmagenta: 0x8b008b,\n  darkolivegreen: 0x556b2f,\n  darkorange: 0xff8c00,\n  darkorchid: 0x9932cc,\n  darkred: 0x8b0000,\n  darksalmon: 0xe9967a,\n  darkseagreen: 0x8fbc8f,\n  darkslateblue: 0x483d8b,\n  darkslategray: 0x2f4f4f,\n  darkslategrey: 0x2f4f4f,\n  darkturquoise: 0x00ced1,\n  darkviolet: 0x9400d3,\n  deeppink: 0xff1493,\n  deepskyblue: 0x00bfff,\n  dimgray: 0x696969,\n  dimgrey: 0x696969,\n  dodgerblue: 0x1e90ff,\n  firebrick: 0xb22222,\n  floralwhite: 0xfffaf0,\n  forestgreen: 0x228b22,\n  fuchsia: 0xff00ff,\n  gainsboro: 0xdcdcdc,\n  ghostwhite: 0xf8f8ff,\n  gold: 0xffd700,\n  goldenrod: 0xdaa520,\n  gray: 0x808080,\n  green: 0x008000,\n  greenyellow: 0xadff2f,\n  grey: 0x808080,\n  honeydew: 0xf0fff0,\n  hotpink: 0xff69b4,\n  indianred: 0xcd5c5c,\n  indigo: 0x4b0082,\n  ivory: 0xfffff0,\n  khaki: 0xf0e68c,\n  lavender: 0xe6e6fa,\n  lavenderblush: 0xfff0f5,\n  lawngreen: 0x7cfc00,\n  lemonchiffon: 0xfffacd,\n  lightblue: 0xadd8e6,\n  lightcoral: 0xf08080,\n  lightcyan: 0xe0ffff,\n  lightgoldenrodyellow: 0xfafad2,\n  lightgray: 0xd3d3d3,\n  lightgreen: 0x90ee90,\n  lightgrey: 0xd3d3d3,\n  lightpink: 0xffb6c1,\n  lightsalmon: 0xffa07a,\n  lightseagreen: 0x20b2aa,\n  lightskyblue: 0x87cefa,\n  lightslategray: 0x778899,\n  lightslategrey: 0x778899,\n  lightsteelblue: 0xb0c4de,\n  lightyellow: 0xffffe0,\n  lime: 0x00ff00,\n  limegreen: 0x32cd32,\n  linen: 0xfaf0e6,\n  magenta: 0xff00ff,\n  maroon: 0x800000,\n  mediumaquamarine: 0x66cdaa,\n  mediumblue: 0x0000cd,\n  mediumorchid: 0xba55d3,\n  mediumpurple: 0x9370db,\n  mediumseagreen: 0x3cb371,\n  mediumslateblue: 0x7b68ee,\n  mediumspringgreen: 0x00fa9a,\n  mediumturquoise: 0x48d1cc,\n  mediumvioletred: 0xc71585,\n  midnightblue: 0x191970,\n  mintcream: 0xf5fffa,\n  mistyrose: 0xffe4e1,\n  moccasin: 0xffe4b5,\n  navajowhite: 0xffdead,\n  navy: 0x000080,\n  oldlace: 0xfdf5e6,\n  olive: 0x808000,\n  olivedrab: 0x6b8e23,\n  orange: 0xffa500,\n  orangered: 0xff4500,\n  orchid: 0xda70d6,\n  palegoldenrod: 0xeee8aa,\n  palegreen: 0x98fb98,\n  paleturquoise: 0xafeeee,\n  palevioletred: 0xdb7093,\n  papayawhip: 0xffefd5,\n  peachpuff: 0xffdab9,\n  peru: 0xcd853f,\n  pink: 0xffc0cb,\n  plum: 0xdda0dd,\n  powderblue: 0xb0e0e6,\n  purple: 0x800080,\n  rebeccapurple: 0x663399,\n  red: 0xff0000,\n  rosybrown: 0xbc8f8f,\n  royalblue: 0x4169e1,\n  saddlebrown: 0x8b4513,\n  salmon: 0xfa8072,\n  sandybrown: 0xf4a460,\n  seagreen: 0x2e8b57,\n  seashell: 0xfff5ee,\n  sienna: 0xa0522d,\n  silver: 0xc0c0c0,\n  skyblue: 0x87ceeb,\n  slateblue: 0x6a5acd,\n  slategray: 0x708090,\n  slategrey: 0x708090,\n  snow: 0xfffafa,\n  springgreen: 0x00ff7f,\n  steelblue: 0x4682b4,\n  tan: 0xd2b48c,\n  teal: 0x008080,\n  thistle: 0xd8bfd8,\n  tomato: 0xff6347,\n  turquoise: 0x40e0d0,\n  violet: 0xee82ee,\n  wheat: 0xf5deb3,\n  white: 0xffffff,\n  whitesmoke: 0xf5f5f5,\n  yellow: 0xffff00,\n  yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n  copy(channels) {\n    return Object.assign(new this.constructor, this, channels);\n  },\n  displayable() {\n    return this.rgb().displayable();\n  },\n  hex: color_formatHex, // Deprecated! Use color.formatHex.\n  formatHex: color_formatHex,\n  formatHex8: color_formatHex8,\n  formatHsl: color_formatHsl,\n  formatRgb: color_formatRgb,\n  toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n  return this.rgb().formatHex();\n}\n\nfunction color_formatHex8() {\n  return this.rgb().formatHex8();\n}\n\nfunction color_formatHsl() {\n  return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n  return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n  var m, l;\n  format = (format + \"\").trim().toLowerCase();\n  return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n      : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n      : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n      : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n      : null) // invalid hex\n      : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n      : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n      : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n      : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n      : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n      : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n      : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n      : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n      : null;\n}\n\nfunction rgbn(n) {\n  return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n  if (a <= 0) r = g = b = NaN;\n  return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n  if (!(o instanceof Color)) o = color(o);\n  if (!o) return new Rgb;\n  o = o.rgb();\n  return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n  return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n  this.r = +r;\n  this.g = +g;\n  this.b = +b;\n  this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n  brighter(k) {\n    k = k == null ? brighter : Math.pow(brighter, k);\n    return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n  },\n  darker(k) {\n    k = k == null ? darker : Math.pow(darker, k);\n    return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n  },\n  rgb() {\n    return this;\n  },\n  clamp() {\n    return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity));\n  },\n  displayable() {\n    return (-0.5 <= this.r && this.r < 255.5)\n        && (-0.5 <= this.g && this.g < 255.5)\n        && (-0.5 <= this.b && this.b < 255.5)\n        && (0 <= this.opacity && this.opacity <= 1);\n  },\n  hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n  formatHex: rgb_formatHex,\n  formatHex8: rgb_formatHex8,\n  formatRgb: rgb_formatRgb,\n  toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n  return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}`;\n}\n\nfunction rgb_formatHex8() {\n  return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`;\n}\n\nfunction rgb_formatRgb() {\n  const a = clampa(this.opacity);\n  return `${a === 1 ? \"rgb(\" : \"rgba(\"}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? \")\" : `, ${a})`}`;\n}\n\nfunction clampa(opacity) {\n  return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity));\n}\n\nfunction clampi(value) {\n  return Math.max(0, Math.min(255, Math.round(value) || 0));\n}\n\nfunction hex(value) {\n  value = clampi(value);\n  return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n  if (a <= 0) h = s = l = NaN;\n  else if (l <= 0 || l >= 1) h = s = NaN;\n  else if (s <= 0) h = NaN;\n  return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n  if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n  if (!(o instanceof Color)) o = color(o);\n  if (!o) return new Hsl;\n  if (o instanceof Hsl) return o;\n  o = o.rgb();\n  var r = o.r / 255,\n      g = o.g / 255,\n      b = o.b / 255,\n      min = Math.min(r, g, b),\n      max = Math.max(r, g, b),\n      h = NaN,\n      s = max - min,\n      l = (max + min) / 2;\n  if (s) {\n    if (r === max) h = (g - b) / s + (g < b) * 6;\n    else if (g === max) h = (b - r) / s + 2;\n    else h = (r - g) / s + 4;\n    s /= l < 0.5 ? max + min : 2 - max - min;\n    h *= 60;\n  } else {\n    s = l > 0 && l < 1 ? 0 : h;\n  }\n  return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n  return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n  this.h = +h;\n  this.s = +s;\n  this.l = +l;\n  this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n  brighter(k) {\n    k = k == null ? brighter : Math.pow(brighter, k);\n    return new Hsl(this.h, this.s, this.l * k, this.opacity);\n  },\n  darker(k) {\n    k = k == null ? darker : Math.pow(darker, k);\n    return new Hsl(this.h, this.s, this.l * k, this.opacity);\n  },\n  rgb() {\n    var h = this.h % 360 + (this.h < 0) * 360,\n        s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n        l = this.l,\n        m2 = l + (l < 0.5 ? l : 1 - l) * s,\n        m1 = 2 * l - m2;\n    return new Rgb(\n      hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n      hsl2rgb(h, m1, m2),\n      hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n      this.opacity\n    );\n  },\n  clamp() {\n    return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity));\n  },\n  displayable() {\n    return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n        && (0 <= this.l && this.l <= 1)\n        && (0 <= this.opacity && this.opacity <= 1);\n  },\n  formatHsl() {\n    const a = clampa(this.opacity);\n    return `${a === 1 ? \"hsl(\" : \"hsla(\"}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? \")\" : `, ${a})`}`;\n  }\n}));\n\nfunction clamph(value) {\n  value = (value || 0) % 360;\n  return value < 0 ? value + 360 : value;\n}\n\nfunction clampt(value) {\n  return Math.max(0, Math.min(1, value || 0));\n}\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n  return (h < 60 ? m1 + (m2 - m1) * h / 60\n      : h < 180 ? m2\n      : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n      : m1) * 255;\n}\n","export default x => () => x;\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n  return function(t) {\n    return a + t * d;\n  };\n}\n\nfunction exponential(a, b, y) {\n  return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n    return Math.pow(a + t * b, y);\n  };\n}\n\nexport function hue(a, b) {\n  var d = b - a;\n  return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n  return (y = +y) === 1 ? nogamma : function(a, b) {\n    return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n  };\n}\n\nexport default function nogamma(a, b) {\n  var d = b - a;\n  return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n  var color = gamma(y);\n\n  function rgb(start, end) {\n    var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n        g = color(start.g, end.g),\n        b = color(start.b, end.b),\n        opacity = nogamma(start.opacity, end.opacity);\n    return function(t) {\n      start.r = r(t);\n      start.g = g(t);\n      start.b = b(t);\n      start.opacity = opacity(t);\n      return start + \"\";\n    };\n  }\n\n  rgb.gamma = rgbGamma;\n\n  return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n  return function(colors) {\n    var n = colors.length,\n        r = new Array(n),\n        g = new Array(n),\n        b = new Array(n),\n        i, color;\n    for (i = 0; i < n; ++i) {\n      color = colorRgb(colors[i]);\n      r[i] = color.r || 0;\n      g[i] = color.g || 0;\n      b[i] = color.b || 0;\n    }\n    r = spline(r);\n    g = spline(g);\n    b = spline(b);\n    color.opacity = 1;\n    return function(t) {\n      color.r = r(t);\n      color.g = g(t);\n      color.b = b(t);\n      return color + \"\";\n    };\n  };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","export default function(a, b) {\n  if (!b) b = [];\n  var n = a ? Math.min(b.length, a.length) : 0,\n      c = b.slice(),\n      i;\n  return function(t) {\n    for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;\n    return c;\n  };\n}\n\nexport function isNumberArray(x) {\n  return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n","import value from \"./value.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n  return (isNumberArray(b) ? numberArray : genericArray)(a, b);\n}\n\nexport function genericArray(a, b) {\n  var nb = b ? b.length : 0,\n      na = a ? Math.min(nb, a.length) : 0,\n      x = new Array(na),\n      c = new Array(nb),\n      i;\n\n  for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n  for (; i < nb; ++i) c[i] = b[i];\n\n  return function(t) {\n    for (i = 0; i < na; ++i) c[i] = x[i](t);\n    return c;\n  };\n}\n","export default function(a, b) {\n  var d = new Date;\n  return a = +a, b = +b, function(t) {\n    return d.setTime(a * (1 - t) + b * t), d;\n  };\n}\n","export default function(a, b) {\n  return a = +a, b = +b, function(t) {\n    return a * (1 - t) + b * t;\n  };\n}\n","import value from \"./value.js\";\n\nexport default function(a, b) {\n  var i = {},\n      c = {},\n      k;\n\n  if (a === null || typeof a !== \"object\") a = {};\n  if (b === null || typeof b !== \"object\") b = {};\n\n  for (k in b) {\n    if (k in a) {\n      i[k] = value(a[k], b[k]);\n    } else {\n      c[k] = b[k];\n    }\n  }\n\n  return function(t) {\n    for (k in i) c[k] = i[k](t);\n    return c;\n  };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n    reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n  return function() {\n    return b;\n  };\n}\n\nfunction one(b) {\n  return function(t) {\n    return b(t) + \"\";\n  };\n}\n\nexport default function(a, b) {\n  var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n      am, // current match in a\n      bm, // current match in b\n      bs, // string preceding current number in b, if any\n      i = -1, // index in s\n      s = [], // string constants and placeholders\n      q = []; // number interpolators\n\n  // Coerce inputs to strings.\n  a = a + \"\", b = b + \"\";\n\n  // Interpolate pairs of numbers in a & b.\n  while ((am = reA.exec(a))\n      && (bm = reB.exec(b))) {\n    if ((bs = bm.index) > bi) { // a string precedes the next number in b\n      bs = b.slice(bi, bs);\n      if (s[i]) s[i] += bs; // coalesce with previous string\n      else s[++i] = bs;\n    }\n    if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n      if (s[i]) s[i] += bm; // coalesce with previous string\n      else s[++i] = bm;\n    } else { // interpolate non-matching numbers\n      s[++i] = null;\n      q.push({i: i, x: number(am, bm)});\n    }\n    bi = reB.lastIndex;\n  }\n\n  // Add remains of b.\n  if (bi < b.length) {\n    bs = b.slice(bi);\n    if (s[i]) s[i] += bs; // coalesce with previous string\n    else s[++i] = bs;\n  }\n\n  // Special optimization for only a single match.\n  // Otherwise, interpolate each of the numbers and rejoin the string.\n  return s.length < 2 ? (q[0]\n      ? one(q[0].x)\n      : zero(b))\n      : (b = q.length, function(t) {\n          for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n          return s.join(\"\");\n        });\n}\n","import {color} from \"d3-color\";\nimport rgb from \"./rgb.js\";\nimport {genericArray} from \"./array.js\";\nimport date from \"./date.js\";\nimport number from \"./number.js\";\nimport object from \"./object.js\";\nimport string from \"./string.js\";\nimport constant from \"./constant.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n  var t = typeof b, c;\n  return b == null || t === \"boolean\" ? constant(b)\n      : (t === \"number\" ? number\n      : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n      : b instanceof color ? rgb\n      : b instanceof Date ? date\n      : isNumberArray(b) ? numberArray\n      : Array.isArray(b) ? genericArray\n      : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n      : number)(a, b);\n}\n","export default function(a, b) {\n  return a = +a, b = +b, function(t) {\n    return Math.round(a * (1 - t) + b * t);\n  };\n}\n","var degrees = 180 / Math.PI;\n\nexport var identity = {\n  translateX: 0,\n  translateY: 0,\n  rotate: 0,\n  skewX: 0,\n  scaleX: 1,\n  scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n  var scaleX, scaleY, skewX;\n  if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n  if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n  if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n  if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n  return {\n    translateX: e,\n    translateY: f,\n    rotate: Math.atan2(b, a) * degrees,\n    skewX: Math.atan(skewX) * degrees,\n    scaleX: scaleX,\n    scaleY: scaleY\n  };\n}\n","import decompose, {identity} from \"./decompose.js\";\n\nvar svgNode;\n\n/* eslint-disable no-undef */\nexport function parseCss(value) {\n  const m = new (typeof DOMMatrix === \"function\" ? DOMMatrix : WebKitCSSMatrix)(value + \"\");\n  return m.isIdentity ? identity : decompose(m.a, m.b, m.c, m.d, m.e, m.f);\n}\n\nexport function parseSvg(value) {\n  if (value == null) return identity;\n  if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n  svgNode.setAttribute(\"transform\", value);\n  if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n  value = value.matrix;\n  return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n","import number from \"../number.js\";\nimport {parseCss, parseSvg} from \"./parse.js\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n  function pop(s) {\n    return s.length ? s.pop() + \" \" : \"\";\n  }\n\n  function translate(xa, ya, xb, yb, s, q) {\n    if (xa !== xb || ya !== yb) {\n      var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n      q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n    } else if (xb || yb) {\n      s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n    }\n  }\n\n  function rotate(a, b, s, q) {\n    if (a !== b) {\n      if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n      q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n    } else if (b) {\n      s.push(pop(s) + \"rotate(\" + b + degParen);\n    }\n  }\n\n  function skewX(a, b, s, q) {\n    if (a !== b) {\n      q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n    } else if (b) {\n      s.push(pop(s) + \"skewX(\" + b + degParen);\n    }\n  }\n\n  function scale(xa, ya, xb, yb, s, q) {\n    if (xa !== xb || ya !== yb) {\n      var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n      q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n    } else if (xb !== 1 || yb !== 1) {\n      s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n    }\n  }\n\n  return function(a, b) {\n    var s = [], // string constants and placeholders\n        q = []; // number interpolators\n    a = parse(a), b = parse(b);\n    translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n    rotate(a.rotate, b.rotate, s, q);\n    skewX(a.skewX, b.skewX, s, q);\n    scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n    a = b = null; // gc\n    return function(t) {\n      var i = -1, n = q.length, o;\n      while (++i < n) s[(o = q[i]).i] = o.x(t);\n      return s.join(\"\");\n    };\n  };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n","var frame = 0, // is an animation frame pending?\n    timeout = 0, // is a timeout pending?\n    interval = 0, // are any timers active?\n    pokeDelay = 1000, // how frequently we check for clock skew\n    taskHead,\n    taskTail,\n    clockLast = 0,\n    clockNow = 0,\n    clockSkew = 0,\n    clock = typeof performance === \"object\" && performance.now ? performance : Date,\n    setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n  return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n  clockNow = 0;\n}\n\nexport function Timer() {\n  this._call =\n  this._time =\n  this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n  constructor: Timer,\n  restart: function(callback, delay, time) {\n    if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n    time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n    if (!this._next && taskTail !== this) {\n      if (taskTail) taskTail._next = this;\n      else taskHead = this;\n      taskTail = this;\n    }\n    this._call = callback;\n    this._time = time;\n    sleep();\n  },\n  stop: function() {\n    if (this._call) {\n      this._call = null;\n      this._time = Infinity;\n      sleep();\n    }\n  }\n};\n\nexport function timer(callback, delay, time) {\n  var t = new Timer;\n  t.restart(callback, delay, time);\n  return t;\n}\n\nexport function timerFlush() {\n  now(); // Get the current time, if not already set.\n  ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n  var t = taskHead, e;\n  while (t) {\n    if ((e = clockNow - t._time) >= 0) t._call.call(undefined, e);\n    t = t._next;\n  }\n  --frame;\n}\n\nfunction wake() {\n  clockNow = (clockLast = clock.now()) + clockSkew;\n  frame = timeout = 0;\n  try {\n    timerFlush();\n  } finally {\n    frame = 0;\n    nap();\n    clockNow = 0;\n  }\n}\n\nfunction poke() {\n  var now = clock.now(), delay = now - clockLast;\n  if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n  var t0, t1 = taskHead, t2, time = Infinity;\n  while (t1) {\n    if (t1._call) {\n      if (time > t1._time) time = t1._time;\n      t0 = t1, t1 = t1._next;\n    } else {\n      t2 = t1._next, t1._next = null;\n      t1 = t0 ? t0._next = t2 : taskHead = t2;\n    }\n  }\n  taskTail = t0;\n  sleep(time);\n}\n\nfunction sleep(time) {\n  if (frame) return; // Soonest alarm already set, or will be.\n  if (timeout) timeout = clearTimeout(timeout);\n  var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n  if (delay > 24) {\n    if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n    if (interval) interval = clearInterval(interval);\n  } else {\n    if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n    frame = 1, setFrame(wake);\n  }\n}\n","import {Timer} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n  var t = new Timer;\n  delay = delay == null ? 0 : +delay;\n  t.restart(elapsed => {\n    t.stop();\n    callback(elapsed + delay);\n  }, delay, time);\n  return t;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n  var schedules = node.__transition;\n  if (!schedules) node.__transition = {};\n  else if (id in schedules) return;\n  create(node, id, {\n    name: name,\n    index: index, // For context during callback.\n    group: group, // For context during callback.\n    on: emptyOn,\n    tween: emptyTween,\n    time: timing.time,\n    delay: timing.delay,\n    duration: timing.duration,\n    ease: timing.ease,\n    timer: null,\n    state: CREATED\n  });\n}\n\nexport function init(node, id) {\n  var schedule = get(node, id);\n  if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n  return schedule;\n}\n\nexport function set(node, id) {\n  var schedule = get(node, id);\n  if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n  return schedule;\n}\n\nexport function get(node, id) {\n  var schedule = node.__transition;\n  if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n  return schedule;\n}\n\nfunction create(node, id, self) {\n  var schedules = node.__transition,\n      tween;\n\n  // Initialize the self timer when the transition is created.\n  // Note the actual delay is not known until the first callback!\n  schedules[id] = self;\n  self.timer = timer(schedule, 0, self.time);\n\n  function schedule(elapsed) {\n    self.state = SCHEDULED;\n    self.timer.restart(start, self.delay, self.time);\n\n    // If the elapsed delay is less than our first sleep, start immediately.\n    if (self.delay <= elapsed) start(elapsed - self.delay);\n  }\n\n  function start(elapsed) {\n    var i, j, n, o;\n\n    // If the state is not SCHEDULED, then we previously errored on start.\n    if (self.state !== SCHEDULED) return stop();\n\n    for (i in schedules) {\n      o = schedules[i];\n      if (o.name !== self.name) continue;\n\n      // While this element already has a starting transition during this frame,\n      // defer starting an interrupting transition until that transition has a\n      // chance to tick (and possibly end); see d3/d3-transition#54!\n      if (o.state === STARTED) return timeout(start);\n\n      // Interrupt the active transition, if any.\n      if (o.state === RUNNING) {\n        o.state = ENDED;\n        o.timer.stop();\n        o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n        delete schedules[i];\n      }\n\n      // Cancel any pre-empted transitions.\n      else if (+i < id) {\n        o.state = ENDED;\n        o.timer.stop();\n        o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n        delete schedules[i];\n      }\n    }\n\n    // Defer the first tick to end of the current frame; see d3/d3#1576.\n    // Note the transition may be canceled after start and before the first tick!\n    // Note this must be scheduled before the start event; see d3/d3-transition#16!\n    // Assuming this is successful, subsequent callbacks go straight to tick.\n    timeout(function() {\n      if (self.state === STARTED) {\n        self.state = RUNNING;\n        self.timer.restart(tick, self.delay, self.time);\n        tick(elapsed);\n      }\n    });\n\n    // Dispatch the start event.\n    // Note this must be done before the tween are initialized.\n    self.state = STARTING;\n    self.on.call(\"start\", node, node.__data__, self.index, self.group);\n    if (self.state !== STARTING) return; // interrupted\n    self.state = STARTED;\n\n    // Initialize the tween, deleting null tween.\n    tween = new Array(n = self.tween.length);\n    for (i = 0, j = -1; i < n; ++i) {\n      if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n        tween[++j] = o;\n      }\n    }\n    tween.length = j + 1;\n  }\n\n  function tick(elapsed) {\n    var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n        i = -1,\n        n = tween.length;\n\n    while (++i < n) {\n      tween[i].call(node, t);\n    }\n\n    // Dispatch the end event.\n    if (self.state === ENDING) {\n      self.on.call(\"end\", node, node.__data__, self.index, self.group);\n      stop();\n    }\n  }\n\n  function stop() {\n    self.state = ENDED;\n    self.timer.stop();\n    delete schedules[id];\n    for (var i in schedules) return; // eslint-disable-line no-unused-vars\n    delete node.__transition;\n  }\n}\n","import {STARTING, ENDING, ENDED} from \"./transition/schedule.js\";\n\nexport default function(node, name) {\n  var schedules = node.__transition,\n      schedule,\n      active,\n      empty = true,\n      i;\n\n  if (!schedules) return;\n\n  name = name == null ? null : name + \"\";\n\n  for (i in schedules) {\n    if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n    active = schedule.state > STARTING && schedule.state < ENDING;\n    schedule.state = ENDED;\n    schedule.timer.stop();\n    schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n    delete schedules[i];\n  }\n\n  if (empty) delete node.__transition;\n}\n","import interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n  return this.each(function() {\n    interrupt(this, name);\n  });\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction tweenRemove(id, name) {\n  var tween0, tween1;\n  return function() {\n    var schedule = set(this, id),\n        tween = schedule.tween;\n\n    // If this node shared tween with the previous node,\n    // just assign the updated shared tween and we’re done!\n    // Otherwise, copy-on-write.\n    if (tween !== tween0) {\n      tween1 = tween0 = tween;\n      for (var i = 0, n = tween1.length; i < n; ++i) {\n        if (tween1[i].name === name) {\n          tween1 = tween1.slice();\n          tween1.splice(i, 1);\n          break;\n        }\n      }\n    }\n\n    schedule.tween = tween1;\n  };\n}\n\nfunction tweenFunction(id, name, value) {\n  var tween0, tween1;\n  if (typeof value !== \"function\") throw new Error;\n  return function() {\n    var schedule = set(this, id),\n        tween = schedule.tween;\n\n    // If this node shared tween with the previous node,\n    // just assign the updated shared tween and we’re done!\n    // Otherwise, copy-on-write.\n    if (tween !== tween0) {\n      tween1 = (tween0 = tween).slice();\n      for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n        if (tween1[i].name === name) {\n          tween1[i] = t;\n          break;\n        }\n      }\n      if (i === n) tween1.push(t);\n    }\n\n    schedule.tween = tween1;\n  };\n}\n\nexport default function(name, value) {\n  var id = this._id;\n\n  name += \"\";\n\n  if (arguments.length < 2) {\n    var tween = get(this.node(), id).tween;\n    for (var i = 0, n = tween.length, t; i < n; ++i) {\n      if ((t = tween[i]).name === name) {\n        return t.value;\n      }\n    }\n    return null;\n  }\n\n  return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n  var id = transition._id;\n\n  transition.each(function() {\n    var schedule = set(this, id);\n    (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n  });\n\n  return function(node) {\n    return get(node, id).value[name];\n  };\n}\n","import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n  var c;\n  return (typeof b === \"number\" ? interpolateNumber\n      : b instanceof color ? interpolateRgb\n      : (c = color(b)) ? (b = c, interpolateRgb)\n      : interpolateString)(a, b);\n}\n","import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction attrRemove(name) {\n  return function() {\n    this.removeAttribute(name);\n  };\n}\n\nfunction attrRemoveNS(fullname) {\n  return function() {\n    this.removeAttributeNS(fullname.space, fullname.local);\n  };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n  var string00,\n      string1 = value1 + \"\",\n      interpolate0;\n  return function() {\n    var string0 = this.getAttribute(name);\n    return string0 === string1 ? null\n        : string0 === string00 ? interpolate0\n        : interpolate0 = interpolate(string00 = string0, value1);\n  };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n  var string00,\n      string1 = value1 + \"\",\n      interpolate0;\n  return function() {\n    var string0 = this.getAttributeNS(fullname.space, fullname.local);\n    return string0 === string1 ? null\n        : string0 === string00 ? interpolate0\n        : interpolate0 = interpolate(string00 = string0, value1);\n  };\n}\n\nfunction attrFunction(name, interpolate, value) {\n  var string00,\n      string10,\n      interpolate0;\n  return function() {\n    var string0, value1 = value(this), string1;\n    if (value1 == null) return void this.removeAttribute(name);\n    string0 = this.getAttribute(name);\n    string1 = value1 + \"\";\n    return string0 === string1 ? null\n        : string0 === string00 && string1 === string10 ? interpolate0\n        : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n  };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n  var string00,\n      string10,\n      interpolate0;\n  return function() {\n    var string0, value1 = value(this), string1;\n    if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n    string0 = this.getAttributeNS(fullname.space, fullname.local);\n    string1 = value1 + \"\";\n    return string0 === string1 ? null\n        : string0 === string00 && string1 === string10 ? interpolate0\n        : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n  };\n}\n\nexport default function(name, value) {\n  var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n  return this.attrTween(name, typeof value === \"function\"\n      ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n      : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n      : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n","import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n  return function(t) {\n    this.setAttribute(name, i.call(this, t));\n  };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n  return function(t) {\n    this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n  };\n}\n\nfunction attrTweenNS(fullname, value) {\n  var t0, i0;\n  function tween() {\n    var i = value.apply(this, arguments);\n    if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n    return t0;\n  }\n  tween._value = value;\n  return tween;\n}\n\nfunction attrTween(name, value) {\n  var t0, i0;\n  function tween() {\n    var i = value.apply(this, arguments);\n    if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n    return t0;\n  }\n  tween._value = value;\n  return tween;\n}\n\nexport default function(name, value) {\n  var key = \"attr.\" + name;\n  if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n  if (value == null) return this.tween(key, null);\n  if (typeof value !== \"function\") throw new Error;\n  var fullname = namespace(name);\n  return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n","import {get, init} from \"./schedule.js\";\n\nfunction delayFunction(id, value) {\n  return function() {\n    init(this, id).delay = +value.apply(this, arguments);\n  };\n}\n\nfunction delayConstant(id, value) {\n  return value = +value, function() {\n    init(this, id).delay = value;\n  };\n}\n\nexport default function(value) {\n  var id = this._id;\n\n  return arguments.length\n      ? this.each((typeof value === \"function\"\n          ? delayFunction\n          : delayConstant)(id, value))\n      : get(this.node(), id).delay;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction durationFunction(id, value) {\n  return function() {\n    set(this, id).duration = +value.apply(this, arguments);\n  };\n}\n\nfunction durationConstant(id, value) {\n  return value = +value, function() {\n    set(this, id).duration = value;\n  };\n}\n\nexport default function(value) {\n  var id = this._id;\n\n  return arguments.length\n      ? this.each((typeof value === \"function\"\n          ? durationFunction\n          : durationConstant)(id, value))\n      : get(this.node(), id).duration;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction easeConstant(id, value) {\n  if (typeof value !== \"function\") throw new Error;\n  return function() {\n    set(this, id).ease = value;\n  };\n}\n\nexport default function(value) {\n  var id = this._id;\n\n  return arguments.length\n      ? this.each(easeConstant(id, value))\n      : get(this.node(), id).ease;\n}\n","import {set} from \"./schedule.js\";\n\nfunction easeVarying(id, value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (typeof v !== \"function\") throw new Error;\n    set(this, id).ease = v;\n  };\n}\n\nexport default function(value) {\n  if (typeof value !== \"function\") throw new Error;\n  return this.each(easeVarying(this._id, value));\n}\n","import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\n\nexport default function(match) {\n  if (typeof match !== \"function\") match = matcher(match);\n\n  for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n      if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n        subgroup.push(node);\n      }\n    }\n  }\n\n  return new Transition(subgroups, this._parents, this._name, this._id);\n}\n","import {Transition} from \"./index.js\";\n\nexport default function(transition) {\n  if (transition._id !== this._id) throw new Error;\n\n  for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n    for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n      if (node = group0[i] || group1[i]) {\n        merge[i] = node;\n      }\n    }\n  }\n\n  for (; j < m0; ++j) {\n    merges[j] = groups0[j];\n  }\n\n  return new Transition(merges, this._parents, this._name, this._id);\n}\n","import {get, set, init} from \"./schedule.js\";\n\nfunction start(name) {\n  return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n    var i = t.indexOf(\".\");\n    if (i >= 0) t = t.slice(0, i);\n    return !t || t === \"start\";\n  });\n}\n\nfunction onFunction(id, name, listener) {\n  var on0, on1, sit = start(name) ? init : set;\n  return function() {\n    var schedule = sit(this, id),\n        on = schedule.on;\n\n    // If this node shared a dispatch with the previous node,\n    // just assign the updated shared dispatch and we’re done!\n    // Otherwise, copy-on-write.\n    if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n    schedule.on = on1;\n  };\n}\n\nexport default function(name, listener) {\n  var id = this._id;\n\n  return arguments.length < 2\n      ? get(this.node(), id).on.on(name)\n      : this.each(onFunction(id, name, listener));\n}\n","function removeFunction(id) {\n  return function() {\n    var parent = this.parentNode;\n    for (var i in this.__transition) if (+i !== id) return;\n    if (parent) parent.removeChild(this);\n  };\n}\n\nexport default function() {\n  return this.on(\"end.remove\", removeFunction(this._id));\n}\n","import {selector} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n  var name = this._name,\n      id = this._id;\n\n  if (typeof select !== \"function\") select = selector(select);\n\n  for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n      if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n        if (\"__data__\" in node) subnode.__data__ = node.__data__;\n        subgroup[i] = subnode;\n        schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n      }\n    }\n  }\n\n  return new Transition(subgroups, this._parents, name, id);\n}\n","import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n  var name = this._name,\n      id = this._id;\n\n  if (typeof select !== \"function\") select = selectorAll(select);\n\n  for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n      if (node = group[i]) {\n        for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n          if (child = children[k]) {\n            schedule(child, name, id, k, children, inherit);\n          }\n        }\n        subgroups.push(children);\n        parents.push(node);\n      }\n    }\n  }\n\n  return new Transition(subgroups, parents, name, id);\n}\n","import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n  return new Selection(this._groups, this._parents);\n}\n","import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule.js\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction styleNull(name, interpolate) {\n  var string00,\n      string10,\n      interpolate0;\n  return function() {\n    var string0 = style(this, name),\n        string1 = (this.style.removeProperty(name), style(this, name));\n    return string0 === string1 ? null\n        : string0 === string00 && string1 === string10 ? interpolate0\n        : interpolate0 = interpolate(string00 = string0, string10 = string1);\n  };\n}\n\nfunction styleRemove(name) {\n  return function() {\n    this.style.removeProperty(name);\n  };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n  var string00,\n      string1 = value1 + \"\",\n      interpolate0;\n  return function() {\n    var string0 = style(this, name);\n    return string0 === string1 ? null\n        : string0 === string00 ? interpolate0\n        : interpolate0 = interpolate(string00 = string0, value1);\n  };\n}\n\nfunction styleFunction(name, interpolate, value) {\n  var string00,\n      string10,\n      interpolate0;\n  return function() {\n    var string0 = style(this, name),\n        value1 = value(this),\n        string1 = value1 + \"\";\n    if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n    return string0 === string1 ? null\n        : string0 === string00 && string1 === string10 ? interpolate0\n        : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n  };\n}\n\nfunction styleMaybeRemove(id, name) {\n  var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n  return function() {\n    var schedule = set(this, id),\n        on = schedule.on,\n        listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n    // If this node shared a dispatch with the previous node,\n    // just assign the updated shared dispatch and we’re done!\n    // Otherwise, copy-on-write.\n    if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n    schedule.on = on1;\n  };\n}\n\nexport default function(name, value, priority) {\n  var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n  return value == null ? this\n      .styleTween(name, styleNull(name, i))\n      .on(\"end.style.\" + name, styleRemove(name))\n    : typeof value === \"function\" ? this\n      .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n      .each(styleMaybeRemove(this._id, name))\n    : this\n      .styleTween(name, styleConstant(name, i, value), priority)\n      .on(\"end.style.\" + name, null);\n}\n","function styleInterpolate(name, i, priority) {\n  return function(t) {\n    this.style.setProperty(name, i.call(this, t), priority);\n  };\n}\n\nfunction styleTween(name, value, priority) {\n  var t, i0;\n  function tween() {\n    var i = value.apply(this, arguments);\n    if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n    return t;\n  }\n  tween._value = value;\n  return tween;\n}\n\nexport default function(name, value, priority) {\n  var key = \"style.\" + (name += \"\");\n  if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n  if (value == null) return this.tween(key, null);\n  if (typeof value !== \"function\") throw new Error;\n  return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n","import {tweenValue} from \"./tween.js\";\n\nfunction textConstant(value) {\n  return function() {\n    this.textContent = value;\n  };\n}\n\nfunction textFunction(value) {\n  return function() {\n    var value1 = value(this);\n    this.textContent = value1 == null ? \"\" : value1;\n  };\n}\n\nexport default function(value) {\n  return this.tween(\"text\", typeof value === \"function\"\n      ? textFunction(tweenValue(this, \"text\", value))\n      : textConstant(value == null ? \"\" : value + \"\"));\n}\n","function textInterpolate(i) {\n  return function(t) {\n    this.textContent = i.call(this, t);\n  };\n}\n\nfunction textTween(value) {\n  var t0, i0;\n  function tween() {\n    var i = value.apply(this, arguments);\n    if (i !== i0) t0 = (i0 = i) && textInterpolate(i);\n    return t0;\n  }\n  tween._value = value;\n  return tween;\n}\n\nexport default function(value) {\n  var key = \"text\";\n  if (arguments.length < 1) return (key = this.tween(key)) && key._value;\n  if (value == null) return this.tween(key, null);\n  if (typeof value !== \"function\") throw new Error;\n  return this.tween(key, textTween(value));\n}\n","import {Transition, newId} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function() {\n  var name = this._name,\n      id0 = this._id,\n      id1 = newId();\n\n  for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n      if (node = group[i]) {\n        var inherit = get(node, id0);\n        schedule(node, name, id1, i, group, {\n          time: inherit.time + inherit.delay + inherit.duration,\n          delay: 0,\n          duration: inherit.duration,\n          ease: inherit.ease\n        });\n      }\n    }\n  }\n\n  return new Transition(groups, this._parents, name, id1);\n}\n","import {set} from \"./schedule.js\";\n\nexport default function() {\n  var on0, on1, that = this, id = that._id, size = that.size();\n  return new Promise(function(resolve, reject) {\n    var cancel = {value: reject},\n        end = {value: function() { if (--size === 0) resolve(); }};\n\n    that.each(function() {\n      var schedule = set(this, id),\n          on = schedule.on;\n\n      // If this node shared a dispatch with the previous node,\n      // just assign the updated shared dispatch and we’re done!\n      // Otherwise, copy-on-write.\n      if (on !== on0) {\n        on1 = (on0 = on).copy();\n        on1._.cancel.push(cancel);\n        on1._.interrupt.push(cancel);\n        on1._.end.push(end);\n      }\n\n      schedule.on = on1;\n    });\n\n    // The selection was empty, resolve end immediately\n    if (size === 0) resolve();\n  });\n}\n","import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr.js\";\nimport transition_attrTween from \"./attrTween.js\";\nimport transition_delay from \"./delay.js\";\nimport transition_duration from \"./duration.js\";\nimport transition_ease from \"./ease.js\";\nimport transition_easeVarying from \"./easeVarying.js\";\nimport transition_filter from \"./filter.js\";\nimport transition_merge from \"./merge.js\";\nimport transition_on from \"./on.js\";\nimport transition_remove from \"./remove.js\";\nimport transition_select from \"./select.js\";\nimport transition_selectAll from \"./selectAll.js\";\nimport transition_selection from \"./selection.js\";\nimport transition_style from \"./style.js\";\nimport transition_styleTween from \"./styleTween.js\";\nimport transition_text from \"./text.js\";\nimport transition_textTween from \"./textTween.js\";\nimport transition_transition from \"./transition.js\";\nimport transition_tween from \"./tween.js\";\nimport transition_end from \"./end.js\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n  this._groups = groups;\n  this._parents = parents;\n  this._name = name;\n  this._id = id;\n}\n\nexport default function transition(name) {\n  return selection().transition(name);\n}\n\nexport function newId() {\n  return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n  constructor: Transition,\n  select: transition_select,\n  selectAll: transition_selectAll,\n  selectChild: selection_prototype.selectChild,\n  selectChildren: selection_prototype.selectChildren,\n  filter: transition_filter,\n  merge: transition_merge,\n  selection: transition_selection,\n  transition: transition_transition,\n  call: selection_prototype.call,\n  nodes: selection_prototype.nodes,\n  node: selection_prototype.node,\n  size: selection_prototype.size,\n  empty: selection_prototype.empty,\n  each: selection_prototype.each,\n  on: transition_on,\n  attr: transition_attr,\n  attrTween: transition_attrTween,\n  style: transition_style,\n  styleTween: transition_styleTween,\n  text: transition_text,\n  textTween: transition_textTween,\n  remove: transition_remove,\n  tween: transition_tween,\n  delay: transition_delay,\n  duration: transition_duration,\n  ease: transition_ease,\n  easeVarying: transition_easeVarying,\n  end: transition_end,\n  [Symbol.iterator]: selection_prototype[Symbol.iterator]\n};\n","export function cubicIn(t) {\n  return t * t * t;\n}\n\nexport function cubicOut(t) {\n  return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n  return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","import {Transition, newId} from \"../transition/index.js\";\nimport schedule from \"../transition/schedule.js\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n  time: null, // Set on use.\n  delay: 0,\n  duration: 250,\n  ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n  var timing;\n  while (!(timing = node.__transition) || !(timing = timing[id])) {\n    if (!(node = node.parentNode)) {\n      throw new Error(`transition ${id} not found`);\n    }\n  }\n  return timing;\n}\n\nexport default function(name) {\n  var id,\n      timing;\n\n  if (name instanceof Transition) {\n    id = name._id, name = name._name;\n  } else {\n    id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n  }\n\n  for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n      if (node = group[i]) {\n        schedule(node, name, id, i, group, timing || inherit(node, id));\n      }\n    }\n  }\n\n  return new Transition(groups, this._parents, name, id);\n}\n","import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt.js\";\nimport selection_transition from \"./transition.js\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n","export default function(x) {\n  return Math.abs(x = Math.round(x)) >= 1e21\n      ? x.toLocaleString(\"en\").replace(/,/g, \"\")\n      : x.toString(10);\n}\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nexport function formatDecimalParts(x, p) {\n  if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n  var i, coefficient = x.slice(0, i);\n\n  // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n  // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n  return [\n    coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n    +x.slice(i + 1)\n  ];\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x) {\n  return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\n}\n","export default function(grouping, thousands) {\n  return function(value, width) {\n    var i = value.length,\n        t = [],\n        j = 0,\n        g = grouping[0],\n        length = 0;\n\n    while (i > 0 && g > 0) {\n      if (length + g + 1 > width) g = Math.max(1, width - length);\n      t.push(value.substring(i -= g, i + g));\n      if ((length += g + 1) > width) break;\n      g = grouping[j = (j + 1) % grouping.length];\n    }\n\n    return t.reverse().join(thousands);\n  };\n}\n","export default function(numerals) {\n  return function(value) {\n    return value.replace(/[0-9]/g, function(i) {\n      return numerals[+i];\n    });\n  };\n}\n","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n  if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n  var match;\n  return new FormatSpecifier({\n    fill: match[1],\n    align: match[2],\n    sign: match[3],\n    symbol: match[4],\n    zero: match[5],\n    width: match[6],\n    comma: match[7],\n    precision: match[8] && match[8].slice(1),\n    trim: match[9],\n    type: match[10]\n  });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nexport function FormatSpecifier(specifier) {\n  this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n  this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n  this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n  this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n  this.zero = !!specifier.zero;\n  this.width = specifier.width === undefined ? undefined : +specifier.width;\n  this.comma = !!specifier.comma;\n  this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n  this.trim = !!specifier.trim;\n  this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n  return this.fill\n      + this.align\n      + this.sign\n      + this.symbol\n      + (this.zero ? \"0\" : \"\")\n      + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n      + (this.comma ? \",\" : \"\")\n      + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n      + (this.trim ? \"~\" : \"\")\n      + this.type;\n};\n","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n  out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n    switch (s[i]) {\n      case \".\": i0 = i1 = i; break;\n      case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n      default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n    }\n  }\n  return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n  var d = formatDecimalParts(x, p);\n  if (!d) return x + \"\";\n  var coefficient = d[0],\n      exponent = d[1],\n      i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n      n = coefficient.length;\n  return i === n ? coefficient\n      : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n      : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n      : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x, p) {\n  var d = formatDecimalParts(x, p);\n  if (!d) return x + \"\";\n  var coefficient = d[0],\n      exponent = d[1];\n  return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n      : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n      : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n","import formatDecimal from \"./formatDecimal.js\";\nimport formatPrefixAuto from \"./formatPrefixAuto.js\";\nimport formatRounded from \"./formatRounded.js\";\n\nexport default {\n  \"%\": (x, p) => (x * 100).toFixed(p),\n  \"b\": (x) => Math.round(x).toString(2),\n  \"c\": (x) => x + \"\",\n  \"d\": formatDecimal,\n  \"e\": (x, p) => x.toExponential(p),\n  \"f\": (x, p) => x.toFixed(p),\n  \"g\": (x, p) => x.toPrecision(p),\n  \"o\": (x) => Math.round(x).toString(8),\n  \"p\": (x, p) => formatRounded(x * 100, p),\n  \"r\": formatRounded,\n  \"s\": formatPrefixAuto,\n  \"X\": (x) => Math.round(x).toString(16).toUpperCase(),\n  \"x\": (x) => Math.round(x).toString(16)\n};\n","export default function(x) {\n  return x;\n}\n","import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport {prefixExponent} from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\n\nvar map = Array.prototype.map,\n    prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n  var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n      currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n      currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n      decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n      numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n      percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n      minus = locale.minus === undefined ? \"−\" : locale.minus + \"\",\n      nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n  function newFormat(specifier) {\n    specifier = formatSpecifier(specifier);\n\n    var fill = specifier.fill,\n        align = specifier.align,\n        sign = specifier.sign,\n        symbol = specifier.symbol,\n        zero = specifier.zero,\n        width = specifier.width,\n        comma = specifier.comma,\n        precision = specifier.precision,\n        trim = specifier.trim,\n        type = specifier.type;\n\n    // The \"n\" type is an alias for \",g\".\n    if (type === \"n\") comma = true, type = \"g\";\n\n    // The \"\" type, and any invalid type, is an alias for \".12~g\".\n    else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n    // If zero fill is specified, padding goes after sign and before digits.\n    if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n    // Compute the prefix and suffix.\n    // For SI-prefix, the suffix is lazily computed.\n    var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n        suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n    // What format function should we use?\n    // Is this an integer type?\n    // Can this type generate exponential notation?\n    var formatType = formatTypes[type],\n        maybeSuffix = /[defgprs%]/.test(type);\n\n    // Set the default precision if not specified,\n    // or clamp the specified precision to the supported range.\n    // For significant precision, it must be in [1, 21].\n    // For fixed precision, it must be in [0, 20].\n    precision = precision === undefined ? 6\n        : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n        : Math.max(0, Math.min(20, precision));\n\n    function format(value) {\n      var valuePrefix = prefix,\n          valueSuffix = suffix,\n          i, n, c;\n\n      if (type === \"c\") {\n        valueSuffix = formatType(value) + valueSuffix;\n        value = \"\";\n      } else {\n        value = +value;\n\n        // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n        var valueNegative = value < 0 || 1 / value < 0;\n\n        // Perform the initial formatting.\n        value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n        // Trim insignificant zeros.\n        if (trim) value = formatTrim(value);\n\n        // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n        if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n        // Compute the prefix and suffix.\n        valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n        valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n        // Break the formatted value into the integer “value” part that can be\n        // grouped, and fractional or exponential “suffix” part that is not.\n        if (maybeSuffix) {\n          i = -1, n = value.length;\n          while (++i < n) {\n            if (c = value.charCodeAt(i), 48 > c || c > 57) {\n              valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n              value = value.slice(0, i);\n              break;\n            }\n          }\n        }\n      }\n\n      // If the fill character is not \"0\", grouping is applied before padding.\n      if (comma && !zero) value = group(value, Infinity);\n\n      // Compute the padding.\n      var length = valuePrefix.length + value.length + valueSuffix.length,\n          padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n      // If the fill character is \"0\", grouping is applied after padding.\n      if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n      // Reconstruct the final output based on the desired alignment.\n      switch (align) {\n        case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n        case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n        case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n        default: value = padding + valuePrefix + value + valueSuffix; break;\n      }\n\n      return numerals(value);\n    }\n\n    format.toString = function() {\n      return specifier + \"\";\n    };\n\n    return format;\n  }\n\n  function formatPrefix(specifier, value) {\n    var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n        e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n        k = Math.pow(10, -e),\n        prefix = prefixes[8 + e / 3];\n    return function(value) {\n      return f(k * value) + prefix;\n    };\n  }\n\n  return {\n    format: newFormat,\n    formatPrefix: formatPrefix\n  };\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n  thousands: \",\",\n  grouping: [3],\n  currency: [\"$\", \"\"]\n});\n\nexport default function defaultLocale(definition) {\n  locale = formatLocale(definition);\n  format = locale.format;\n  formatPrefix = locale.formatPrefix;\n  return locale;\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step) {\n  return Math.max(0, -exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, value) {\n  return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, max) {\n  step = Math.abs(step), max = Math.abs(max) - step;\n  return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n","export function initRange(domain, range) {\n  switch (arguments.length) {\n    case 0: break;\n    case 1: this.range(domain); break;\n    default: this.range(range).domain(domain); break;\n  }\n  return this;\n}\n\nexport function initInterpolator(domain, interpolator) {\n  switch (arguments.length) {\n    case 0: break;\n    case 1: {\n      if (typeof domain === \"function\") this.interpolator(domain);\n      else this.range(domain);\n      break;\n    }\n    default: {\n      this.domain(domain);\n      if (typeof interpolator === \"function\") this.interpolator(interpolator);\n      else this.range(interpolator);\n      break;\n    }\n  }\n  return this;\n}\n","import {InternMap} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport const implicit = Symbol(\"implicit\");\n\nexport default function ordinal() {\n  var index = new InternMap(),\n      domain = [],\n      range = [],\n      unknown = implicit;\n\n  function scale(d) {\n    let i = index.get(d);\n    if (i === undefined) {\n      if (unknown !== implicit) return unknown;\n      index.set(d, i = domain.push(d) - 1);\n    }\n    return range[i % range.length];\n  }\n\n  scale.domain = function(_) {\n    if (!arguments.length) return domain.slice();\n    domain = [], index = new InternMap();\n    for (const value of _) {\n      if (index.has(value)) continue;\n      index.set(value, domain.push(value) - 1);\n    }\n    return scale;\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (range = Array.from(_), scale) : range.slice();\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  scale.copy = function() {\n    return ordinal(domain, range).unknown(unknown);\n  };\n\n  initRange.apply(scale, arguments);\n\n  return scale;\n}\n","export default function constants(x) {\n  return function() {\n    return x;\n  };\n}\n","export default function number(x) {\n  return +x;\n}\n","import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport constant from \"./constant.js\";\nimport number from \"./number.js\";\n\nvar unit = [0, 1];\n\nexport function identity(x) {\n  return x;\n}\n\nfunction normalize(a, b) {\n  return (b -= (a = +a))\n      ? function(x) { return (x - a) / b; }\n      : constant(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(a, b) {\n  var t;\n  if (a > b) t = a, a = b, b = t;\n  return function(x) { return Math.max(a, Math.min(b, x)); };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n  var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n  if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n  else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n  return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, interpolate) {\n  var j = Math.min(domain.length, range.length) - 1,\n      d = new Array(j),\n      r = new Array(j),\n      i = -1;\n\n  // Reverse descending domains.\n  if (domain[j] < domain[0]) {\n    domain = domain.slice().reverse();\n    range = range.slice().reverse();\n  }\n\n  while (++i < j) {\n    d[i] = normalize(domain[i], domain[i + 1]);\n    r[i] = interpolate(range[i], range[i + 1]);\n  }\n\n  return function(x) {\n    var i = bisect(domain, x, 1, j) - 1;\n    return r[i](d[i](x));\n  };\n}\n\nexport function copy(source, target) {\n  return target\n      .domain(source.domain())\n      .range(source.range())\n      .interpolate(source.interpolate())\n      .clamp(source.clamp())\n      .unknown(source.unknown());\n}\n\nexport function transformer() {\n  var domain = unit,\n      range = unit,\n      interpolate = interpolateValue,\n      transform,\n      untransform,\n      unknown,\n      clamp = identity,\n      piecewise,\n      output,\n      input;\n\n  function rescale() {\n    var n = Math.min(domain.length, range.length);\n    if (clamp !== identity) clamp = clamper(domain[0], domain[n - 1]);\n    piecewise = n > 2 ? polymap : bimap;\n    output = input = null;\n    return scale;\n  }\n\n  function scale(x) {\n    return x == null || isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n  }\n\n  scale.invert = function(y) {\n    return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));\n  };\n\n  scale.domain = function(_) {\n    return arguments.length ? (domain = Array.from(_, number), rescale()) : domain.slice();\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n  };\n\n  scale.rangeRound = function(_) {\n    return range = Array.from(_), interpolate = interpolateRound, rescale();\n  };\n\n  scale.clamp = function(_) {\n    return arguments.length ? (clamp = _ ? true : identity, rescale()) : clamp !== identity;\n  };\n\n  scale.interpolate = function(_) {\n    return arguments.length ? (interpolate = _, rescale()) : interpolate;\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  return function(t, u) {\n    transform = t, untransform = u;\n    return rescale();\n  };\n}\n\nexport default function continuous() {\n  return transformer()(identity, identity);\n}\n","import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function tickFormat(start, stop, count, specifier) {\n  var step = tickStep(start, stop, count),\n      precision;\n  specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n  switch (specifier.type) {\n    case \"s\": {\n      var value = Math.max(Math.abs(start), Math.abs(stop));\n      if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n      return formatPrefix(specifier, value);\n    }\n    case \"\":\n    case \"e\":\n    case \"g\":\n    case \"p\":\n    case \"r\": {\n      if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n      break;\n    }\n    case \"f\":\n    case \"%\": {\n      if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n      break;\n    }\n  }\n  return format(specifier);\n}\n","import {ticks, tickIncrement} from \"d3-array\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport tickFormat from \"./tickFormat.js\";\n\nexport function linearish(scale) {\n  var domain = scale.domain;\n\n  scale.ticks = function(count) {\n    var d = domain();\n    return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n  };\n\n  scale.tickFormat = function(count, specifier) {\n    var d = domain();\n    return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n  };\n\n  scale.nice = function(count) {\n    if (count == null) count = 10;\n\n    var d = domain();\n    var i0 = 0;\n    var i1 = d.length - 1;\n    var start = d[i0];\n    var stop = d[i1];\n    var prestep;\n    var step;\n    var maxIter = 10;\n\n    if (stop < start) {\n      step = start, start = stop, stop = step;\n      step = i0, i0 = i1, i1 = step;\n    }\n    \n    while (maxIter-- > 0) {\n      step = tickIncrement(start, stop, count);\n      if (step === prestep) {\n        d[i0] = start\n        d[i1] = stop\n        return domain(d);\n      } else if (step > 0) {\n        start = Math.floor(start / step) * step;\n        stop = Math.ceil(stop / step) * step;\n      } else if (step < 0) {\n        start = Math.ceil(start * step) / step;\n        stop = Math.floor(stop * step) / step;\n      } else {\n        break;\n      }\n      prestep = step;\n    }\n\n    return scale;\n  };\n\n  return scale;\n}\n\nexport default function linear() {\n  var scale = continuous();\n\n  scale.copy = function() {\n    return copy(scale, linear());\n  };\n\n  initRange.apply(scale, arguments);\n\n  return linearish(scale);\n}\n","import {bisect} from \"d3-array\";\nimport {linearish} from \"./linear.js\";\nimport {initRange} from \"./init.js\";\n\nexport default function quantize() {\n  var x0 = 0,\n      x1 = 1,\n      n = 1,\n      domain = [0.5],\n      range = [0, 1],\n      unknown;\n\n  function scale(x) {\n    return x != null && x <= x ? range[bisect(domain, x, 0, n)] : unknown;\n  }\n\n  function rescale() {\n    var i = -1;\n    domain = new Array(n);\n    while (++i < n) domain[i] = ((i + 1) * x1 - (i - n) * x0) / (n + 1);\n    return scale;\n  }\n\n  scale.domain = function(_) {\n    return arguments.length ? ([x0, x1] = _, x0 = +x0, x1 = +x1, rescale()) : [x0, x1];\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (n = (range = Array.from(_)).length - 1, rescale()) : range.slice();\n  };\n\n  scale.invertExtent = function(y) {\n    var i = range.indexOf(y);\n    return i < 0 ? [NaN, NaN]\n        : i < 1 ? [x0, domain[0]]\n        : i >= n ? [domain[n - 1], x1]\n        : [domain[i - 1], domain[i]];\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : scale;\n  };\n\n  scale.thresholds = function() {\n    return domain.slice();\n  };\n\n  scale.copy = function() {\n    return quantize()\n        .domain([x0, x1])\n        .range(range)\n        .unknown(unknown);\n  };\n\n  return initRange.apply(linearish(scale), arguments);\n}\n","export function Transform(k, x, y) {\n  this.k = k;\n  this.x = x;\n  this.y = y;\n}\n\nTransform.prototype = {\n  constructor: Transform,\n  scale: function(k) {\n    return k === 1 ? this : new Transform(this.k * k, this.x, this.y);\n  },\n  translate: function(x, y) {\n    return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y);\n  },\n  apply: function(point) {\n    return [point[0] * this.k + this.x, point[1] * this.k + this.y];\n  },\n  applyX: function(x) {\n    return x * this.k + this.x;\n  },\n  applyY: function(y) {\n    return y * this.k + this.y;\n  },\n  invert: function(location) {\n    return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k];\n  },\n  invertX: function(x) {\n    return (x - this.x) / this.k;\n  },\n  invertY: function(y) {\n    return (y - this.y) / this.k;\n  },\n  rescaleX: function(x) {\n    return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x));\n  },\n  rescaleY: function(y) {\n    return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y));\n  },\n  toString: function() {\n    return \"translate(\" + this.x + \",\" + this.y + \") scale(\" + this.k + \")\";\n  }\n};\n\nexport var identity = new Transform(1, 0, 0);\n\ntransform.prototype = Transform.prototype;\n\nexport default function transform(node) {\n  while (!node.__zoom) if (!(node = node.parentNode)) return identity;\n  return node.__zoom;\n}\n","import { easeCubicInOut } from 'd3'\nimport { LegendItemType, ZoomBarTypes } from '@/interfaces/enums'\n\nexport const carbonPrefix = 'cds' as string\n\nexport const area = {\n\topacity: {\n\t\tunselected: 0.05,\n\t\tselected: 0.4\n\t}\n}\n\nexport const axis = {\n\tticks: {\n\t\tnumber: 7,\n\t\trotateIfSmallerThan: 30,\n\t\tverticalSpaceRatio: 2.5,\n\t\thorizontalSpaceRatio: 3.5\n\t},\n\tratio: {\n\t\treference: 'value',\n\t\tcompareTo: 'marker'\n\t},\n\tpaddingRatio: 0.1,\n\thover: {\n\t\trectanglePadding: 4\n\t}\n}\n\nexport const canvasZoomSettings = {\n\tduration: 1000,\n\tease: easeCubicInOut,\n\tzoomLevel: 3\n}\n\nexport const circlePack = {\n\tcircles: {\n\t\tfillOpacity: 0.3,\n\t\thover: {\n\t\t\tstroke: '#FFF'\n\t\t}\n\t},\n\tpadding: {\n\t\tmainGroup: 4,\n\t\tchildren: 2\n\t},\n\tdepth: 2\n}\n\nexport const color = {\n\tpairingOptions: {\n\t\t'1-color': 4,\n\t\t'2-color': 5,\n\t\t'3-color': 5,\n\t\t'4-color': 3,\n\t\t'5-color': 2,\n\t\t'14-color': 1\n\t}\n}\n\nexport const boxplot = {\n\tcircle: {\n\t\tradius: 4,\n\t\topacity: {\n\t\t\thovered: 1,\n\t\t\tdefault: 0.3\n\t\t}\n\t},\n\tbox: {\n\t\topacity: {\n\t\t\thovered: 0.5,\n\t\t\tdefault: 0.3\n\t\t}\n\t},\n\tstrokeWidth: {\n\t\tdefault: 1,\n\t\tthicker: 2\n\t}\n}\n\nexport const histogram = {\n\tdefaultBins: 10\n}\n\nexport const legend = {\n\titems: {\n\t\tstatus: {\n\t\t\tACTIVE: 1,\n\t\t\tDISABLED: 0\n\t\t},\n\t\thorizontalSpace: 12,\n\t\tverticalSpace: 24,\n\t\ttextYOffset: 8,\n\t\tspaceAfter: 4\n\t},\n\tcheckbox: {\n\t\tradius: 6.5\n\t},\n\tradius: {\n\t\ticonData: [\n\t\t\t{ cx: 7, cy: 7, r: 6.5 },\n\t\t\t{ cx: 7, cy: 10, r: 3.5 }\n\t\t],\n\t\tfill: null as any,\n\t\tstroke: '#8c8c8c'\n\t},\n\tline: {\n\t\tyPosition: 6,\n\t\twidth: 24,\n\t\tstrokeWidth: 1.4,\n\t\tfill: null as any,\n\t\tstroke: '#999999'\n\t},\n\tarea: {\n\t\twidth: 24,\n\t\theight: 14,\n\t\tfill: '#6f6f6f',\n\t\tstroke: null as any\n\t},\n\tsize: {\n\t\ticonData: [\n\t\t\t{ width: 23, height: 12 },\n\t\t\t{ width: 13, height: 6 }\n\t\t],\n\t\tfill: null as any,\n\t\tstroke: '#8D8D8D'\n\t},\n\tquartile: {\n\t\ticonData: [\n\t\t\t{ x: 0, y: 0, width: 24, height: 13 },\n\t\t\t{ x: 11, y: 4, width: 1, height: 4 }\n\t\t]\n\t},\n\tzoom: {\n\t\ticonData: [{ x: 0, y: 0, width: 12, height: 12 }],\n\t\tcolor: '#8D8D8D'\n\t},\n\tcolor: {\n\t\tbarWidth: 300,\n\t\tbarHeight: 8,\n\t\taxisYTranslation: 10\n\t}\n}\n\nexport const lines = {\n\topacity: {\n\t\tunselected: 0.3,\n\t\tselected: 1\n\t},\n\tweight: {\n\t\tselected: 2,\n\t\tunselected: 1\n\t}\n}\n\nexport const meter = {\n\tstatusBar: {\n\t\tpaddingRight: 5\n\t},\n\tstatus: {\n\t\tindicatorSize: 16,\n\t\tpaddingLeft: 15\n\t},\n\ttotal: {\n\t\tpaddingLeft: 36,\n\t\tpaddingRight: 24\n\t},\n\theight: {\n\t\tdefault: 8,\n\t\tproportional: 16\n\t},\n\tdividerWidth: 2\n}\n\nexport const pie = {\n\tradiusOffset: -15,\n\tinnerRadius: 2,\n\tpadAngle: 0.007,\n\thoverArc: {\n\t\touterRadiusOffset: 3\n\t},\n\txOffset: 30,\n\tyOffset: 20,\n\tyOffsetCallout: 10,\n\tcallout: {\n\t\tminSliceDegree: 5,\n\t\toffsetX: 15,\n\t\toffsetY: 12,\n\t\thorizontalLineLength: 8,\n\t\ttextMargin: 2\n\t}\n}\n\nexport const radar = {\n\topacity: {\n\t\tunselected: 0.1,\n\t\tselected: 0.3\n\t},\n\txLabelPadding: 10,\n\tyLabelPadding: 8,\n\tyTicksNumber: 4,\n\tminRange: 10,\n\txAxisRectHeight: 50,\n\tdotsRadius: 5\n}\n\nexport const alluvial = {\n\tnodeWidth: 4,\n\tnodeHoveredWidth: 8,\n\tminNodePadding: 24,\n\topacity: {\n\t\tunfocus: 0.3,\n\t\tdefault: 0.8,\n\t\tselected: 1\n\t}\n}\n\nexport const heatmap = {\n\tminCellDividerDimension: 16,\n\t// Ensures axes lines are displayed with or without stroke disabled\n\tchartPadding: 0.5\n}\n\nexport const spacers = {\n\tdefault: {\n\t\tsize: 24\n\t}\n}\n\nexport const tooltips = {\n\tdefaultOffset: 4,\n\thorizontalOffset: 10\n}\n\n/**\n * Base transition configuration\n */\nexport const transitions = {\n\tdefault: {\n\t\tduration: 300\n\t},\n\tpie_slice_mouseover: {\n\t\tduration: 100\n\t},\n\tpie_slice_mouseout: {\n\t\tduration: 100\n\t},\n\tpie_chart_titles: {\n\t\tduration: 375\n\t},\n\tgraph_element_mouseover_fill_update: {\n\t\tduration: 100\n\t},\n\tgraph_element_mouseout_fill_update: {\n\t\tduration: 100\n\t}\n}\n\nexport const toolbar = {\n\tbuttonSize: 32,\n\ticonSize: 20,\n\theight: 32,\n\tspacerHeight: 10,\n\ticonPadding: 6\n}\n\nexport const zoomBar = {\n\theight: {\n\t\t[ZoomBarTypes.GRAPH_VIEW]: 32,\n\t\t[ZoomBarTypes.SLIDER_VIEW]: 10\n\t},\n\tspacerHeight: 8,\n\thandleWidth: 5,\n\thandleBarWidth: 1,\n\thandleBarHeight: 12\n}\n\nexport const defaultLegendAdditionalItems = [\n\t{\n\t\ttype: LegendItemType.RADIUS,\n\t\tname: 'Radius'\n\t},\n\t{\n\t\ttype: LegendItemType.AREA,\n\t\tname: 'Poor area'\n\t},\n\t{\n\t\ttype: LegendItemType.AREA,\n\t\tname: 'Satisfactory area'\n\t},\n\t{\n\t\ttype: LegendItemType.AREA,\n\t\tname: 'Great area'\n\t},\n\t{\n\t\ttype: LegendItemType.QUARTILE,\n\t\tname: 'Quartiles'\n\t}\n]\n","import { enUS as localeObject } from 'date-fns/locale'\nimport { merge } from 'lodash-es'\nimport { circlePack } from './configuration-non-customizable'\n\nimport type {\n\tAlluvialChartOptions,\n\tAreaChartOptions,\n\tAxisChartOptions,\n\tBarChartOptions,\n\tBaseChartOptions,\n\tBoxplotChartOptions,\n\tBubbleChartOptions,\n\tBulletChartOptions,\n\tChoroplethChartOptions,\n\tCirclePackChartOptions,\n\tComboChartOptions,\n\tDonutChartOptions,\n\tGaugeChartOptions,\n\tHeatmapChartOptions,\n\tHistogramChartOptions,\n\tLollipopChartOptions,\n\tLineChartOptions,\n\tMeterChartOptions,\n\tPieChartOptions,\n\tProportionalMeterChartOptions,\n\tRadarChartOptions,\n\tScatterChartOptions,\n\tStackedBarChartOptions,\n\tThematicChartOptions,\n\tTreeChartOptions,\n\tTreemapChartOptions,\n\tWordCloudChartTooltipOptions,\n\tWordCloudChartOptions\n} from '@/interfaces/charts'\nimport {\n\tAlignments,\n\tGaugeTypes,\n\tLegendPositions,\n\tTruncationTypes,\n\tToolbarControlTypes,\n\tZoomBarTypes,\n\tLegendItemType,\n\tTreeTypes,\n\tDividerStatus,\n\tProjection,\n\tChartTheme\n} from '@/interfaces/enums'\nimport type { AxesOptions, AxisOptions, TimeScaleOptions } from '@/interfaces/axis-scales'\nimport type {\n\tGridOptions,\n\tRulerOptions,\n\tTooltipOptions,\n\tLegendOptions,\n\tStackedBarOptions,\n\tToolbarOptions,\n\tZoomBarsOptions,\n\tLocale\n} from '@/interfaces/components'\n\n/*\n *****************************\n * User configurable options *\n *****************************\n */\n\n/**\n * Default truncation configuration\n */\nconst standardTruncationOptions = {\n\ttype: TruncationTypes.END_LINE,\n\tthreshold: 16,\n\tnumCharacter: 14\n}\n\n/**\n * Axis title positioning offset from the axis line\n * Used for bottom axis title positioning to prevent clipping in screenshots\n */\nexport const AXIS_TITLE_POSITIONING_OFFSET = 4\n\n/**\n * Locale options\n */\nconst locale: Locale = {\n\tcode: (typeof navigator !== 'undefined' && navigator?.language) || 'en-US', // read from browser's navigator.language\n\tnumber: (value, language = navigator?.language || 'en-US') => value?.toLocaleString?.(language), // based on code property if specified\n\tdate: (\n\t\tvalue,\n\t\tlanguage = navigator?.language || 'en-US',\n\t\toptions = {},\n\t\tpreformattedLocaleValue = null\n\t) =>\n\t\tpreformattedLocaleValue ? preformattedLocaleValue : value.toLocaleDateString(language, options), // based on code property if specified\n\ttime: (\n\t\tvalue,\n\t\tlanguage = navigator?.language || 'en-US',\n\t\toptions = {},\n\t\tpreformattedLocaleValue = null\n\t) =>\n\t\tpreformattedLocaleValue ? preformattedLocaleValue : value.toLocaleTimeString(language, options), // based on code property if specified\n\toptionsObject: {\n\t\t'15seconds': {\n\t\t\tprimary: {\n\t\t\t\t'MMM d, pp': {\n\t\t\t\t\tmonth: 'short',\n\t\t\t\t\tday: 'numeric',\n\t\t\t\t\thour: 'numeric',\n\t\t\t\t\tminute: '2-digit',\n\t\t\t\t\tsecond: '2-digit',\n\t\t\t\t\thourCycle: 'h12'\n\t\t\t\t},\n\t\t\t\t'MMM d, h:mm:ss.SSS a': {\n\t\t\t\t\tmonth: 'short',\n\t\t\t\t\tday: 'numeric',\n\t\t\t\t\thour: 'numeric',\n\t\t\t\t\tminute: '2-digit',\n\t\t\t\t\tfractionalSecondDigits: 3,\n\t\t\t\t\thourCycle: 'h12'\n\t\t\t\t}\n\t\t\t},\n\t\t\tsecondary: {\n\t\t\t\tpp: {\n\t\t\t\t\thour: 'numeric',\n\t\t\t\t\tminute: '2-digit',\n\t\t\t\t\tsecond: '2-digit',\n\t\t\t\t\thourCycle: 'h12'\n\t\t\t\t},\n\t\t\t\t'h:mm:ss.SSS a': {\n\t\t\t\t\thour: 'numeric',\n\t\t\t\t\tminute: '2-digit',\n\t\t\t\t\tfractionalSecondDigits: 3,\n\t\t\t\t\thourCycle: 'h12'\n\t\t\t\t}\n\t\t\t},\n\t\t\ttype: 'time'\n\t\t},\n\t\tminute: {\n\t\t\tprimary: {\n\t\t\t\t'MMM d, p': {\n\t\t\t\t\tmonth: 'short',\n\t\t\t\t\tday: 'numeric',\n\t\t\t\t\thour: 'numeric',\n\t\t\t\t\tminute: '2-digit',\n\t\t\t\t\thourCycle: 'h12'\n\t\t\t\t}\n\t\t\t},\n\t\t\tsecondary: {\n\t\t\t\tp: {\n\t\t\t\t\thour: 'numeric',\n\t\t\t\t\tminute: '2-digit',\n\t\t\t\t\thourCycle: 'h12'\n\t\t\t\t}\n\t\t\t},\n\t\t\ttype: 'time'\n\t\t},\n\t\t'30minutes': {\n\t\t\tprimary: {\n\t\t\t\t'MMM d, p': {\n\t\t\t\t\tmonth: 'short',\n\t\t\t\t\tday: 'numeric',\n\t\t\t\t\thour: 'numeric',\n\t\t\t\t\tminute: '2-digit',\n\t\t\t\t\thourCycle: 'h12'\n\t\t\t\t}\n\t\t\t},\n\t\t\tsecondary: {\n\t\t\t\tp: {\n\t\t\t\t\thour: 'numeric',\n\t\t\t\t\tminute: '2-digit',\n\t\t\t\t\thourCycle: 'h12'\n\t\t\t\t}\n\t\t\t},\n\t\t\ttype: 'time'\n\t\t},\n\t\thourly: {\n\t\t\tprimary: {\n\t\t\t\t'MMM d, hh a': {\n\t\t\t\t\tmonth: 'short',\n\t\t\t\t\tday: 'numeric',\n\t\t\t\t\thour: '2-digit',\n\t\t\t\t\thourCycle: 'h12'\n\t\t\t\t}\n\t\t\t},\n\t\t\tsecondary: {\n\t\t\t\t'hh a': {\n\t\t\t\t\thour: '2-digit',\n\t\t\t\t\thourCycle: 'h12'\n\t\t\t\t}\n\t\t\t},\n\t\t\ttype: 'time'\n\t\t},\n\t\tdaily: {\n\t\t\tprimary: {\n\t\t\t\t'MMM d': {\n\t\t\t\t\tmonth: 'short',\n\t\t\t\t\tday: 'numeric'\n\t\t\t\t}\n\t\t\t},\n\t\t\tsecondary: {\n\t\t\t\td: {\n\t\t\t\t\tday: 'numeric'\n\t\t\t\t}\n\t\t\t},\n\t\t\ttype: 'date'\n\t\t},\n\t\tweekly: {\n\t\t\tprimary: {\n\t\t\t\t'eee, MMM d': {\n\t\t\t\t\tweekday: 'short',\n\t\t\t\t\tmonth: 'short',\n\t\t\t\t\tday: 'numeric'\n\t\t\t\t}\n\t\t\t},\n\t\t\tsecondary: {\n\t\t\t\teee: {\n\t\t\t\t\tweekday: 'short'\n\t\t\t\t}\n\t\t\t},\n\t\t\ttype: 'date'\n\t\t},\n\t\tmonthly: {\n\t\t\tprimary: {\n\t\t\t\t'MMM yyyy': {\n\t\t\t\t\tmonth: 'short',\n\t\t\t\t\tyear: 'numeric'\n\t\t\t\t}\n\t\t\t},\n\t\t\tsecondary: {\n\t\t\t\tMMM: {\n\t\t\t\t\tmonth: 'short'\n\t\t\t\t}\n\t\t\t},\n\t\t\ttype: 'date'\n\t\t},\n\t\tquarterly: {\n\t\t\tprimary: {},\n\t\t\tsecondary: {},\n\t\t\ttype: 'date'\n\t\t},\n\t\tyearly: {\n\t\t\tprimary: {\n\t\t\t\tyyyy: {\n\t\t\t\t\tyear: 'numeric'\n\t\t\t\t}\n\t\t\t},\n\t\t\tsecondary: {\n\t\t\t\tyyyy: {\n\t\t\t\t\tyear: 'numeric'\n\t\t\t\t}\n\t\t\t},\n\t\t\ttype: 'date'\n\t\t}\n\t},\n\ttranslations: {\n\t\tgroup: 'Group',\n\t\ttotal: 'Total',\n\t\tmeter: {\n\t\t\ttitle: '' //default is emply string as meter title is dataset label\n\t\t},\n\t\ttabularRep: {\n\t\t\ttitle: 'Tabular representation',\n\t\t\tdownloadAsCSV: 'Download as CSV'\n\t\t},\n\t\ttoolbar: {\n\t\t\texportAsCSV: 'Export to CSV',\n\t\t\texportAsJPG: 'Export to JPG',\n\t\t\texportAsPNG: 'Export to PNG',\n\t\t\tzoomIn: 'Zoom in',\n\t\t\tzoomOut: 'Zoom out',\n\t\t\tresetZoom: 'Reset zoom',\n\t\t\tmoreOptions: 'More options',\n\t\t\tmakeFullScreen: 'Make fullscreen',\n\t\t\texitFullScreen: 'Exit fullscreen',\n\t\t\tshowAsTable: 'Show as table'\n\t\t}\n\t}\n}\n\n/**\n * Legend options\n */\nconst legend: LegendOptions = {\n\tenabled: true,\n\tposition: LegendPositions.BOTTOM,\n\tclickable: true,\n\ttruncation: standardTruncationOptions,\n\talignment: Alignments.LEFT,\n\torder: null,\n\tadditionalItems: []\n}\n\n/**\n * Grid options\n */\nexport const grid: GridOptions = {\n\tx: {\n\t\t// set enable to false will not draw grid and stroke of grid backdrop\n\t\tenabled: true,\n\t\tnumberOfTicks: 15,\n\t\talignWithAxisTicks: false\n\t},\n\ty: {\n\t\t// set enable to false will not draw grid and stroke of grid backdrop\n\t\tenabled: true,\n\t\tnumberOfTicks: 5,\n\t\talignWithAxisTicks: false\n\t}\n}\n\n/**\n * Ruler options\n */\nexport const ruler: RulerOptions = {\n\t// enable or disable ruler\n\tenabled: true\n}\n\n/**\n * Tooltip options\n */\nexport const baseTooltip: TooltipOptions = {\n\tenabled: true,\n\tshowTotal: true,\n\ttruncation: standardTruncationOptions,\n\tgroupLabel: 'Group'\n}\n\n// These options will be managed by merge()\n// by removing the ones the user is not providing,\n// and by TwoDimensionalAxes.\nconst axes: AxesOptions<AxisOptions> = {\n\ttop: {\n\t\tvisible: true,\n\t\tincludeZero: true,\n\t\ttruncation: standardTruncationOptions\n\t},\n\tbottom: {\n\t\tvisible: true,\n\t\tincludeZero: true,\n\t\ttruncation: standardTruncationOptions\n\t},\n\tleft: {\n\t\tvisible: true,\n\t\tincludeZero: true,\n\t\ttruncation: standardTruncationOptions\n\t},\n\tright: {\n\t\tvisible: true,\n\t\tincludeZero: true,\n\t\ttruncation: standardTruncationOptions\n\t}\n}\n\nexport const timeScale: TimeScaleOptions = {\n\taddSpaceOnEdges: 1,\n\tshowDayName: false,\n\tlocaleObject,\n\ttimeIntervalFormats: {\n\t\t'15seconds': { primary: 'MMM d, pp', secondary: 'pp' },\n\t\tminute: { primary: 'MMM d, p', secondary: 'p' },\n\t\t'30minutes': { primary: 'MMM d, p', secondary: 'p' },\n\t\thourly: { primary: 'MMM d, hh a', secondary: 'hh a' },\n\t\tdaily: { primary: 'MMM d', secondary: 'd' },\n\t\tweekly: { primary: 'eee, MMM d', secondary: 'eee' },\n\t\tmonthly: { primary: 'MMM yyyy', secondary: 'MMM' },\n\t\tquarterly: { primary: \"QQQ ''yy\", secondary: 'QQQ' },\n\t\tyearly: { primary: 'yyyy', secondary: 'yyyy' }\n\t}\n}\n\nlet isFullScreenEnabled = false\n\ntry {\n\tisFullScreenEnabled =\n\t\ttypeof document !== 'undefined' &&\n\t\t(document['fullscreenEnabled'] ||\n\t\t\tdocument['webkitFullscreenEnabled'] ||\n\t\t\tdocument['mozFullScreenEnabled'] ||\n\t\t\tdocument['msFullscreenEnabled'])\n} catch (e) {\n\t// some environments block access to fullscreenEnabled\n\tconsole.warn('Fullscreen capabilities check failed: ', e.message)\n}\n\n/**\n * Base chart options common to any chart\n */\nconst chart: BaseChartOptions = {\n\twidth: null,\n\theight: null,\n\tresizable: true,\n\ttheme: ChartTheme.WHITE,\n\ttooltip: baseTooltip,\n\tlegend,\n\tlocale,\n\tstyle: {\n\t\tprefix: 'cc'\n\t},\n\tdata: {\n\t\tgroupMapsTo: 'group',\n\t\tloading: false,\n\t\tselectedGroups: []\n\t},\n\tcolor: {\n\t\tscale: null,\n\t\tpairing: {\n\t\t\tnumberOfVariants: null,\n\t\t\toption: 1\n\t\t},\n\t\tgradient: {\n\t\t\tenabled: false\n\t\t}\n\t},\n\ttoolbar: {\n\t\tenabled: true,\n\t\tnumberOfIcons: 3,\n\t\tcontrols: [\n\t\t\t{\n\t\t\t\ttype: ToolbarControlTypes.SHOW_AS_DATATABLE\n\t\t\t},\n\t\t\t...(isFullScreenEnabled\n\t\t\t\t? [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: ToolbarControlTypes.MAKE_FULLSCREEN\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t: []),\n\t\t\t{\n\t\t\t\ttype: ToolbarControlTypes.EXPORT_CSV\n\t\t\t},\n\t\t\t{\n\t\t\t\ttype: ToolbarControlTypes.EXPORT_PNG\n\t\t\t},\n\t\t\t{\n\t\t\t\ttype: ToolbarControlTypes.EXPORT_JPG\n\t\t\t}\n\t\t]\n\t} as ToolbarOptions\n}\n\n/**\n * Options common to any thematic chart\n */\nconst thematicChart: ThematicChartOptions = merge({}, chart, {\n\tthematic: {\n\t\tprojection: Projection.geoNaturalEarth1\n\t}\n})\n\n/**\n * Options common to any chart with an axis\n */\nconst axisChart: AxisChartOptions = merge({}, chart, {\n\taxes,\n\ttimeScale,\n\tgrid,\n\truler,\n\tzoomBar: {\n\t\tzoomRatio: 0.4,\n\t\tminZoomRatio: 0.01,\n\t\ttop: {\n\t\t\tenabled: false,\n\t\t\ttype: ZoomBarTypes.GRAPH_VIEW\n\t\t}\n\t} as ZoomBarsOptions\n} as AxisChartOptions)\n\n/**\n * options specific to simple bar charts\n */\nconst baseBarChart: BarChartOptions = merge({}, axisChart, {\n\tbars: {\n\t\tmaxWidth: 16,\n\t\tspacingFactor: 0.25,\n\t\tpreserveSpaceForMissingBars: true\n\t},\n\ttimeScale: merge(timeScale, {\n\t\taddSpaceOnEdges: 1\n\t} as TimeScaleOptions)\n} as BarChartOptions)\n\n/**\n * options specific to simple bar charts\n */\nconst simpleBarChart: BarChartOptions = merge({}, baseBarChart, {} as BarChartOptions)\n\n/**\n * options specific to simple bar charts\n */\nconst groupedBarChart: BarChartOptions = merge({}, baseBarChart, {} as BarChartOptions)\n\n/**\n * options specific to stacked bar charts\n */\nconst stackedBarChart: StackedBarChartOptions = merge({}, baseBarChart, {\n\tbars: merge({}, baseBarChart.bars, {\n\t\tdividerSize: 1.5\n\t} as StackedBarOptions)\n} as BarChartOptions)\n\n/**\n * options specific to boxplot charts\n */\nconst boxplotChart: BoxplotChartOptions = merge({}, baseBarChart, {} as BarChartOptions)\n\n/**\n * options specific to scatter charts\n */\nconst scatterChart: ScatterChartOptions = merge({}, axisChart, {\n\tpoints: {\n\t\t// default point radius to 4\n\t\tradius: 4,\n\t\tfillOpacity: 0.3,\n\t\tfilled: true,\n\t\tenabled: true\n\t}\n} as ScatterChartOptions)\n\n/**\n * options specific to lollipop charts\n */\nconst lollipopChart: LollipopChartOptions = scatterChart as LollipopChartOptions\n\n/**\n * options specific to line charts\n */\nconst lineChart: LineChartOptions = merge({}, scatterChart, {\n\tpoints: {\n\t\t// default point radius to 3\n\t\tradius: 3,\n\t\tfilled: false,\n\t\tenabled: true\n\t}\n} as LineChartOptions)\n\n/**\n * options specific to area charts\n */\nconst areaChart: AreaChartOptions = merge({}, lineChart, {\n\ttimeScale: merge(timeScale, {\n\t\taddSpaceOnEdges: 0\n\t} as TimeScaleOptions)\n} as LineChartOptions)\n\n/**\n * options specific to stacked area charts\n */\nconst stackedAreaChart = areaChart\n\n/**\n * options specific to bubble charts\n */\nconst bubbleChart: BubbleChartOptions = merge({}, axisChart, {\n\tbubble: {\n\t\tradiusMapsTo: 'radius',\n\t\tradiusLabel: 'Radius',\n\t\tradiusRange: (chartSize: any) => {\n\t\t\tconst smallerChartDimension = Math.min(chartSize.width, chartSize.height)\n\t\t\treturn [(smallerChartDimension * 3) / 400, (smallerChartDimension * 25) / 400]\n\t\t},\n\t\tfillOpacity: 0.2,\n\t\tenabled: true\n\t},\n\tpoints: {\n\t\tfilled: true\n\t},\n\tlegend: {\n\t\tadditionalItems: [\n\t\t\t{\n\t\t\t\ttype: LegendItemType.RADIUS,\n\t\t\t\tname: 'Radius'\n\t\t\t}\n\t\t]\n\t}\n} as BubbleChartOptions)\n\n/**\n * options specific to bullet charts\n */\nconst bulletChart: BulletChartOptions = merge({}, axisChart, {\n\tbullet: {\n\t\tperformanceAreaTitles: ['Poor', 'Satisfactory', 'Great']\n\t},\n\tgrid: {\n\t\tx: {\n\t\t\tenabled: false\n\t\t},\n\t\ty: {\n\t\t\tenabled: false\n\t\t}\n\t},\n\tlegend: {\n\t\tadditionalItems: [\n\t\t\t{\n\t\t\t\ttype: LegendItemType.AREA,\n\t\t\t\tname: 'Poor area'\n\t\t\t},\n\t\t\t{\n\t\t\t\ttype: LegendItemType.AREA,\n\t\t\t\tname: 'Satisfactory area'\n\t\t\t},\n\t\t\t{\n\t\t\t\ttype: LegendItemType.AREA,\n\t\t\t\tname: 'Great area'\n\t\t\t},\n\t\t\t{\n\t\t\t\ttype: LegendItemType.QUARTILE,\n\t\t\t\tname: 'Quartiles'\n\t\t\t}\n\t\t]\n\t}\n} as BulletChartOptions)\n\n/**\n * options specific to stacked bar charts\n */\nconst histogramChart: HistogramChartOptions = merge({}, baseBarChart, {\n\tbars: {\n\t\tdividerSize: 1.5\n\t} as StackedBarOptions,\n\ttimeScale: merge(timeScale, {\n\t\taddSpaceOnEdges: 0\n\t} as TimeScaleOptions)\n} as BarChartOptions)\n\n/*\n * options specific to word cloud charts\n */\nconst wordCloudChart: WordCloudChartOptions = merge({}, chart, {\n\ttooltip: merge({}, baseTooltip, {\n\t\twordLabel: 'Word',\n\t\tvalueLabel: 'Value'\n\t}) as WordCloudChartTooltipOptions,\n\twordCloud: {\n\t\tfontSizeMapsTo: 'value',\n\t\tfontSizeRange: (chartSize: any) => {\n\t\t\tconst smallerChartDimension = Math.min(chartSize.width, chartSize.height)\n\t\t\treturn [(smallerChartDimension * 20) / 400, (smallerChartDimension * 75) / 400]\n\t\t},\n\t\twordMapsTo: 'word'\n\t}\n} as WordCloudChartOptions)\n\n/**\n * options specific to pie charts\n */\nconst pieChart: PieChartOptions = merge({}, chart, {\n\tpie: {\n\t\tlabels: {\n\t\t\tformatter: null,\n\t\t\tenabled: true\n\t\t},\n\t\talignment: Alignments.LEFT,\n\t\tsortFunction: null,\n\t\tvalueMapsTo: 'value'\n\t}\n} as PieChartOptions)\n\n/**\n * options specific to gauge charts\n */\nconst gaugeChart: GaugeChartOptions = merge({}, chart, {\n\tlegend: {\n\t\tenabled: false\n\t},\n\tgauge: {\n\t\ttype: GaugeTypes.SEMI,\n\t\tarcWidth: 16,\n\t\tdeltaArrow: {\n\t\t\tsize: (radius: number) => radius / 8,\n\t\t\tenabled: true\n\t\t},\n\t\tshowPercentageSymbol: true,\n\t\tstatus: null,\n\t\tnumberSpacing: 10,\n\t\tdeltaFontSize: (radius: number) => radius / 8,\n\t\tvalueFontSize: (radius: number) => radius / 2.5,\n\t\talignment: Alignments.LEFT\n\t}\n} as GaugeChartOptions)\n\n/**\n * options specific to donut charts\n */\nconst donutChart: DonutChartOptions = merge({}, pieChart, {\n\tdonut: {\n\t\tcenter: {\n\t\t\tnumberFontSize: radius => `${Math.min((radius / 100) * 24, 24)}px`,\n\t\t\ttitleFontSize: radius => `${Math.min((radius / 100) * 15, 15)}px`,\n\t\t\ttitleYPosition: radius => Math.min((radius / 80) * 20, 20)\n\t\t},\n\t\talignment: Alignments.LEFT\n\t}\n} as DonutChartOptions)\n\nconst meterChart: MeterChartOptions = merge({}, chart, {\n\tlegend: {\n\t\tenabled: false,\n\t\tclickable: false\n\t},\n\tmeter: {\n\t\tshowLabels: true,\n\t\tproportional: null,\n\t\tstatusBar: {\n\t\t\tpercentageIndicator: {\n\t\t\t\tenabled: true\n\t\t\t}\n\t\t}\n\t}\n} as MeterChartOptions)\n\nconst proportionalMeterChart: ProportionalMeterChartOptions = merge({}, meterChart, {\n\tlegend: {\n\t\tenabled: true\n\t}\n} as MeterChartOptions)\n\n/**\n * options specific to radar charts\n */\nconst radarChart: RadarChartOptions = merge({}, chart, {\n\tradar: {\n\t\taxes: {\n\t\t\tangle: 'key',\n\t\t\tvalue: 'value'\n\t\t},\n\t\talignment: Alignments.LEFT\n\t},\n\ttooltip: {\n\t\tgridline: {\n\t\t\tenabled: true\n\t\t}\n\t}\n} as RadarChartOptions)\n\n/**\n * options specific to combo charts\n */\nconst comboChart: ComboChartOptions = merge({}, baseBarChart, {\n\tcomboChartTypes: []\n} as ComboChartOptions)\n\n/*\n * options specific to tree charts\n */\nconst treeChart: TreeChartOptions = merge(\n\t{\n\t\ttree: {\n\t\t\ttype: TreeTypes.TREE\n\t\t}\n\t},\n\tchart,\n\t{} as TreeChartOptions\n)\n\n/*\n * options specific to treemap charts\n */\nconst treemapChart: TreemapChartOptions = merge({}, chart, {\n\tdata: merge(chart.data, {\n\t\tgroupMapsTo: 'name'\n\t})\n} as TreemapChartOptions)\n\n/*\n * options specific to circle pack charts\n */\nconst circlePackChart: CirclePackChartOptions = merge({}, chart, circlePack, {\n\tdata: merge(chart.data, {\n\t\tgroupMapsTo: 'name'\n\t})\n} as CirclePackChartOptions)\n\nconst alluvialChart: AlluvialChartOptions = merge({}, chart, {\n\talluvial: {\n\t\tdata: merge(chart.data, {\n\t\t\tgroupMapsTo: 'source'\n\t\t}),\n\t\tnodeAlignment: Alignments.CENTER,\n\t\tnodePadding: 24,\n\t\tmonochrome: false,\n\t\tnodes: []\n\t}\n} as AlluvialChartOptions)\n\nconst heatmapChart: HeatmapChartOptions = merge({}, chart, {\n\taxes,\n\theatmap: {\n\t\tdivider: {\n\t\t\tstate: DividerStatus.AUTO\n\t\t},\n\t\tcolorLegend: {\n\t\t\ttype: 'linear'\n\t\t}\n\t}\n} as HeatmapChartOptions)\n\nconst choroplethChart: ChoroplethChartOptions = merge({}, thematicChart, {\n\tchoropleth: {\n\t\tcolorLegend: {\n\t\t\ttype: 'linear'\n\t\t}\n\t}\n} as ChoroplethChartOptions)\n\nexport const options = {\n\talluvialChart,\n\tareaChart,\n\taxisChart,\n\tboxplotChart,\n\tbubbleChart,\n\tbulletChart,\n\tchart,\n\tcirclePackChart,\n\tchoroplethChart,\n\tcomboChart,\n\tdonutChart,\n\tgaugeChart,\n\tgroupedBarChart,\n\theatmapChart,\n\thistogramChart,\n\tlineChart,\n\tlollipopChart,\n\tmeterChart,\n\tpieChart,\n\tproportionalMeterChart,\n\tradarChart,\n\tscatterChart,\n\tsimpleBarChart,\n\tstackedAreaChart,\n\tstackedBarChart,\n\tthematicChart,\n\ttreeChart,\n\ttreemapChart,\n\twordCloudChart\n}\n\nexport {\n\talluvial,\n\tarea,\n\taxis,\n\tboxplot,\n\tcanvasZoomSettings,\n\tcarbonPrefix,\n\tcirclePack,\n\tcolor,\n\tdefaultLegendAdditionalItems,\n\theatmap,\n\thistogram,\n\tlegend,\n\tlines,\n\tmeter,\n\tpie,\n\tradar,\n\tspacers,\n\ttooltips,\n\ttransitions,\n\ttoolbar,\n\tzoomBar\n} from './configuration-non-customizable'\n","import { pointer, type Numeric } from 'd3'\nimport { merge, cloneDeep, unionBy } from 'lodash-es'\nimport { CartesianOrientations, ScaleTypes, TruncationTypes } from '@/interfaces/enums'\nimport { defaultLegendAdditionalItems } from './configuration-non-customizable'\n\nexport function debounceWithD3MousePosition(fn: any, delay: number, holder: any) {\n\tlet timer: any = null\n\treturn function (...args: any) {\n\t\tconst context = this\n\n\t\t// Get D3 event here\n\t\tcontext.mousePosition = pointer(args[0], holder)\n\n\t\tclearTimeout(timer)\n\n\t\ttimer = setTimeout(function () {\n\t\t\t// and use reference here\n\t\t\tfn.apply(context, args)\n\t\t}, delay)\n\t}\n}\n\n/**\n * Returns default chart options merged with provided options,\n * with special cases for axes.\n * Axes object will not merge the not provided axes.\n *\n * @export\n * @param {AxisChartOptions} defaultOptions Configuration.options[chartType]\n * @param {AxisChartOptions} providedOptions user provided options\n * @returns merged options\n */\nexport function mergeDefaultChartOptions(defaultOptions: any, providedOptions: any) {\n\tconst clonedDefaultOptions = cloneDeep(defaultOptions)\n\tconst providedAxesNames = Object.keys(providedOptions.axes || {})\n\n\t// Use provide controls list if it exists\n\t// Prevents merging and element overriding of the two lists\n\tif (providedOptions?.toolbar?.controls) {\n\t\tdelete clonedDefaultOptions.toolbar.controls\n\t}\n\n\tif (providedAxesNames.length === 0) {\n\t\tdelete clonedDefaultOptions.axes\n\t}\n\n\t// Update deprecated options to work with the tabular data format\n\t// Similar to the functionality in model.transformToTabularData()\n\tfor (const axisName in clonedDefaultOptions.axes) {\n\t\tif (providedAxesNames.includes(axisName)) {\n\t\t\tconst providedAxisOptions = providedOptions.axes[axisName]\n\n\t\t\tif (providedAxisOptions['primary'] || providedAxisOptions['secondary']) {\n\t\t\t\tconsole.warn(\n\t\t\t\t\t'`primary` & `secondary` are no longer needed for axis configurations. Read more here https://charts.carbondesignsystem.com/'\n\t\t\t\t)\n\t\t\t}\n\n\t\t\tconst identifier = providedAxisOptions['mapsTo']\n\t\t\tif (identifier === undefined || identifier === null) {\n\t\t\t\tconst scaleType = providedAxisOptions['scaleType']\n\n\t\t\t\tif (scaleType === undefined || scaleType === null) {\n\t\t\t\t\tprovidedAxisOptions['mapsTo'] = 'value'\n\t\t\t\t} else if (scaleType === ScaleTypes.TIME) {\n\t\t\t\t\tprovidedAxisOptions['mapsTo'] = 'date'\n\t\t\t\t} else if (scaleType === ScaleTypes.LABELS) {\n\t\t\t\t\tprovidedAxisOptions['mapsTo'] = 'key'\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tdelete clonedDefaultOptions.axes[axisName]\n\t\t}\n\t}\n\n\tupdateLegendAdditionalItems(clonedDefaultOptions, providedOptions)\n\n\treturn merge(clonedDefaultOptions, providedOptions)\n}\n\n/**************************************\n *  DOM-related operations            *\n *************************************/\n\n/**\n * Get width & height of an element\n *\n * @export\n * @param {any} el element to get dimensions from\n * @returns an object containing the width and height of el\n */\nexport function getDimensions(el: any) {\n\treturn {\n\t\twidth: parseFloat(el.style.width.replace('px', '') || el.offsetWidth),\n\t\theight: parseFloat(el.style.height.replace('px', '') || el.offsetHeight)\n\t}\n}\n\n/**\n * Gets elements' x and y translations from transform attribute or returns null\n *\n * @param {HTMLElement} elementRef\n * @returns an object containing the translated x and y values or null\n */\nexport function getTranslationValues(elementRef: HTMLElement) {\n\tif (!elementRef) {\n\t\treturn\n\t}\n\n\t// regex to ONLY get values for translate (instead of all rotate, translate, skew, etc)\n\tconst translateRegex = /translate\\([0-9]+\\.?[0-9]*,[0-9]+\\.?[0-9]*\\)/\n\n\tconst transformStr = elementRef.getAttribute('transform').match(translateRegex)\n\tif (!transformStr) {\n\t\treturn null\n\t}\n\n\t// check for the match\n\tif (transformStr[0]) {\n\t\tconst transforms = transformStr[0]\n\t\t\t.replace(/translate\\(/, '')\n\t\t\t.replace(/\\)/, '')\n\t\t\t.split(',')\n\n\t\treturn {\n\t\t\ttx: transforms[0],\n\t\t\tty: transforms[1]\n\t\t}\n\t}\n\treturn null\n}\n\n/**************************************\n *  Formatting & calculations         *\n *************************************/\n\n/**\n * Gets x and y coordinates from HTML transform attribute\n *\n * @export\n * @param transform string the transform attribute string ie. transform(x,y)\n * @returns Returns an object with x and y offsets of the transform\n */\nexport function getTransformOffsets(transform: string) {\n\tconst regExp = /\\(([^)]+)\\)/\n\tconst match = regExp.exec(transform)\n\n\tif (match && match.length > 1) {\n\t\tconst xyString = match[1].split(',')\n\n\t\tif (xyString.length > 1) {\n\t\t\treturn {\n\t\t\t\tx: parseFloat(xyString[0]),\n\t\t\t\ty: parseFloat(xyString[1])\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { x: 0, y: 0 }\n}\n\n/**\n * Returns string value for height/width using pixels if there isn't a specified unit of measure\n *\n * @param value string or number value to be checked for unit of measure\n */\nexport function formatWidthHeightValues(value: string | number) {\n\tconst stringValue = value.toString()\n\n\t// If the value provided contains any letters\n\t// Return it the same way\n\tif (stringValue.match(/[a-z]/i)) {\n\t\treturn stringValue\n\t}\n\n\treturn stringValue + 'px'\n}\n\n/**\n * Capitalizes first letter of a string\n *\n * @export\n * @param {any} word the input string to perform first letter capitalization with\n * @returns The transformed string after first letter is capitalized\n */\nexport function capitalizeFirstLetter(word: string) {\n\treturn word[0].toUpperCase() + word.slice(1)\n}\n\n/**\n * Get the percentage of a datapoint compared to the entire dataset.\n * @export\n * @param {any} item\n * @param {any} fullData\n * @param {string} key\n * @returns The percentage in the form of a number (1 significant digit if necessary)\n */\nexport function convertValueToPercentage(\n\titem: any,\n\tfullData: any,\n\tkey = 'value',\n\tentireValue = false\n) {\n\tconst percentage =\n\t\t(item / fullData.reduce((accum: number, val: any) => accum + val[key], 0)) * 100\n\t//in need for entire float percentage value\n\tif (entireValue) {\n\t\treturn percentage\n\t} else {\n\t\t// if the value has any significant figures, keep 1\n\t\treturn percentage % 1 !== 0 ? parseFloat(percentage.toFixed(1)) : percentage\n\t}\n}\n\n/**\n * Truncate the labels\n * @export\n * @param {any} fullText\n * @param {any} truncationType\n * @param {any} numCharacter\n * @returns Truncated text\n */\nexport function truncateLabel(fullText: any, truncationType: any, numCharacter: any) {\n\tif (numCharacter > fullText.length) {\n\t\treturn fullText\n\t}\n\tif (truncationType === TruncationTypes.MID_LINE) {\n\t\treturn fullText.substr(0, numCharacter / 2) + '...' + fullText.substr(-numCharacter / 2)\n\t} else if (truncationType === TruncationTypes.FRONT_LINE) {\n\t\treturn '...' + fullText.substr(-numCharacter)\n\t} else if (truncationType === TruncationTypes.END_LINE) {\n\t\treturn fullText.substr(0, numCharacter) + '...'\n\t}\n}\n\n/**\n * Update legend additional items\n * @param {any} defaultOptions\n * @param {any} providedOptions\n */\nexport function updateLegendAdditionalItems(defaultOptions: any, providedOptions: any) {\n\tconst defaultAdditionalItems = getProperty(defaultOptions, 'legend', 'additionalItems')\n\tconst userProvidedAdditionalItems = getProperty(providedOptions, 'legend', 'additionalItems')\n\n\t// Retain default legend additional items\n\tif (defaultAdditionalItems && userProvidedAdditionalItems) {\n\t\tconst providedTypes = userProvidedAdditionalItems.map((item: any) => item.type)\n\n\t\tconst defaultTypes = defaultAdditionalItems.map((item: any) => item.type)\n\n\t\t// Get default items in default options but not in provided options\n\t\tconst updatedDefaultItems = defaultLegendAdditionalItems.filter(\n\t\t\titem => defaultTypes.includes(item.type) && !providedTypes.includes(item.type)\n\t\t)\n\n\t\tdefaultOptions.legend.additionalItems = updatedDefaultItems\n\n\t\tprovidedOptions.legend.additionalItems = unionBy(\n\t\t\tupdatedDefaultItems,\n\t\t\tuserProvidedAdditionalItems,\n\t\t\t'name'\n\t\t)\n\t}\n}\n\n/**************************************\n *  Object/array related checks       *\n *************************************/\n\n/**\n * Compares two arrays to return the difference between two arrays' items.\n *\n * @export\n * @param {any[]} oldArray the array to check for missing items\n * @param {any[]} newArray the array to check for newly added items\n * @returns An object containing items missing (existing in oldArray but not newArray)\n * and items added (existing in newArray but not in oldArray). Object is of the form { missing: [], added: [] }\n */\nexport function arrayDifferences(oldArray: any[], newArray: any[]) {\n\tconst difference = {\n\t\tmissing: [] as any[],\n\t\tadded: [] as any[]\n\t}\n\n\toldArray.forEach((element: any) => {\n\t\tif (newArray.indexOf(element) === -1) {\n\t\t\tdifference.missing.push(element)\n\t\t}\n\t})\n\n\tnewArray.forEach((element: any) => {\n\t\tif (oldArray.indexOf(element) === -1) {\n\t\t\tdifference.added.push(element)\n\t\t}\n\t})\n\n\treturn difference\n}\n\n/**\n * Gets the duplicated keys from an array of data\n *\n * @export\n * @param {*} arr - array of data\n * @returns A list of the duplicated keys in data\n */\nexport function getDuplicateValues(arr: any) {\n\tconst values: any[] = []\n\tconst duplicateValues: any[] = []\n\n\tarr.forEach((value: any) => {\n\t\tif (values.indexOf(value) !== -1 && duplicateValues.indexOf(value) === -1) {\n\t\t\tduplicateValues.push(value)\n\t\t}\n\n\t\tvalues.push(value)\n\t})\n\n\treturn duplicateValues\n}\n\n// ================================================================================\n// D3 Extensions\n// ================================================================================\n\n/**\n * In D3, moves an element to the front of the canvas\n *\n * @export\n * @param {any} element input element to moved in front\n * @returns The function to be used by D3 to push element to the top of the canvas\n */\nexport function moveToFront(element: any) {\n\treturn element.each(function () {\n\t\tthis.parentNode.appendChild(this)\n\t})\n}\n\n// ================================================================================\n// Style Helpers\n// ================================================================================\n\n/**\n * Gets a speicified property from within an object.\n *\n * @param object the object containing the property to retrieve\n * @param propPath nested properties used to extract the final property from within the object\n * (i.e \"style\", \"color\" would retrieve the color property from within an object that has \"color\" nested within \"style\")\n */\nexport const getProperty = (object: any, ...propPath: any) => {\n\tlet position = object\n\tif (position) {\n\t\tfor (const prop of propPath) {\n\t\t\tif (position[prop] !== null && position[prop] !== undefined) {\n\t\t\t\tposition = position[prop]\n\t\t\t} else {\n\t\t\t\treturn null\n\t\t\t}\n\t\t}\n\t\treturn position\n\t}\n\n\treturn null\n}\n\ninterface SVGPathCoordinates {\n\tx0: number\n\tx1: number\n\ty0: number\n\ty1: number\n}\n\nexport const flipSVGCoordinatesBasedOnOrientation = (\n\tverticalCoordinates: SVGPathCoordinates,\n\torientation?: CartesianOrientations\n) => {\n\tif (orientation === CartesianOrientations.HORIZONTAL) {\n\t\treturn {\n\t\t\ty0: verticalCoordinates.x0,\n\t\t\ty1: verticalCoordinates.x1,\n\t\t\tx0: verticalCoordinates.y0,\n\t\t\tx1: verticalCoordinates.y1\n\t\t}\n\t}\n\n\treturn verticalCoordinates\n}\n\nexport const generateSVGPathString = (\n\tverticalCoordinates: SVGPathCoordinates,\n\torientation?: CartesianOrientations\n) => {\n\tconst { x0, x1, y0, y1 } = flipSVGCoordinatesBasedOnOrientation(verticalCoordinates, orientation)\n\n\treturn `M${x0},${y0}L${x0},${y1}L${x1},${y1}L${x1},${y0}L${x0},${y0}`\n}\n\nexport function flipDomainAndRangeBasedOnOrientation<D, R>(\n\tdomain: D,\n\trange: R,\n\torientation?: CartesianOrientations\n): [D, R] | [R, D] {\n\treturn orientation === CartesianOrientations.VERTICAL ? [domain, range] : [range, domain]\n}\n\nexport const compareNumeric = (a: Numeric, b: Numeric) => Number(a) === Number(b)\n","import { toDate } from \"../toDate.js\";\n\n/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport function getTimezoneOffsetInMilliseconds(date) {\n  const _date = toDate(date);\n  const utcDate = new Date(\n    Date.UTC(\n      _date.getFullYear(),\n      _date.getMonth(),\n      _date.getDate(),\n      _date.getHours(),\n      _date.getMinutes(),\n      _date.getSeconds(),\n      _date.getMilliseconds(),\n    ),\n  );\n  utcDate.setUTCFullYear(_date.getFullYear());\n  return +date - +utcDate;\n}\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfDay} function options.\n */\n\n/**\n * @name startOfDay\n * @category Day Helpers\n * @summary Return the start of a day for the given date.\n *\n * @description\n * Return the start of a day for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - The options\n *\n * @returns The start of a day\n *\n * @example\n * // The start of a day for 2 September 2014 11:55:00:\n * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\nexport function startOfDay(date, options) {\n  const _date = toDate(date, options?.in);\n  _date.setHours(0, 0, 0, 0);\n  return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfDay;\n","import { getTimezoneOffsetInMilliseconds } from \"./_lib/getTimezoneOffsetInMilliseconds.js\";\nimport { normalizeDates } from \"./_lib/normalizeDates.js\";\nimport { millisecondsInDay } from \"./constants.js\";\nimport { startOfDay } from \"./startOfDay.js\";\n\n/**\n * The {@link differenceInCalendarDays} function options.\n */\n\n/**\n * @name differenceInCalendarDays\n * @category Day Helpers\n * @summary Get the number of calendar days between the given dates.\n *\n * @description\n * Get the number of calendar days between the given dates. This means that the times are removed\n * from the dates and then the difference in days is calculated.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - The options object\n *\n * @returns The number of calendar days\n *\n * @example\n * // How many calendar days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * const result = differenceInCalendarDays(\n *   new Date(2012, 6, 2, 0, 0),\n *   new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 366\n * // How many calendar days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * const result = differenceInCalendarDays(\n *   new Date(2011, 6, 3, 0, 1),\n *   new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 1\n */\nexport function differenceInCalendarDays(laterDate, earlierDate, options) {\n  const [laterDate_, earlierDate_] = normalizeDates(\n    options?.in,\n    laterDate,\n    earlierDate,\n  );\n\n  const laterStartOfDay = startOfDay(laterDate_);\n  const earlierStartOfDay = startOfDay(earlierDate_);\n\n  const laterTimestamp =\n    +laterStartOfDay - getTimezoneOffsetInMilliseconds(laterStartOfDay);\n  const earlierTimestamp =\n    +earlierStartOfDay - getTimezoneOffsetInMilliseconds(earlierStartOfDay);\n\n  // Round the number of days to the nearest integer because the number of\n  // milliseconds in a day is not constant (e.g. it's different in the week of\n  // the daylight saving time clock shift).\n  return Math.round((laterTimestamp - earlierTimestamp) / millisecondsInDay);\n}\n\n// Fallback for modularized imports:\nexport default differenceInCalendarDays;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfYear} function options.\n */\n\n/**\n * @name startOfYear\n * @category Year Helpers\n * @summary Return the start of a year for the given date.\n *\n * @description\n * Return the start of a year for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - The options\n *\n * @returns The start of a year\n *\n * @example\n * // The start of a year for 2 September 2014 11:55:00:\n * const result = startOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Jan 01 2014 00:00:00\n */\nexport function startOfYear(date, options) {\n  const date_ = toDate(date, options?.in);\n  date_.setFullYear(date_.getFullYear(), 0, 1);\n  date_.setHours(0, 0, 0, 0);\n  return date_;\n}\n\n// Fallback for modularized imports:\nexport default startOfYear;\n","import { differenceInCalendarDays } from \"./differenceInCalendarDays.js\";\nimport { startOfYear } from \"./startOfYear.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getDayOfYear} function options.\n */\n\n/**\n * @name getDayOfYear\n * @category Day Helpers\n * @summary Get the day of the year of the given date.\n *\n * @description\n * Get the day of the year of the given date.\n *\n * @param date - The given date\n * @param options - The options\n *\n * @returns The day of year\n *\n * @example\n * // Which day of the year is 2 July 2014?\n * const result = getDayOfYear(new Date(2014, 6, 2))\n * //=> 183\n */\nexport function getDayOfYear(date, options) {\n  const _date = toDate(date, options?.in);\n  const diff = differenceInCalendarDays(_date, startOfYear(_date));\n  const dayOfYear = diff + 1;\n  return dayOfYear;\n}\n\n// Fallback for modularized imports:\nexport default getDayOfYear;\n","import { startOfWeek } from \"./startOfWeek.js\";\n\n/**\n * The {@link startOfISOWeek} function options.\n */\n\n/**\n * @name startOfISOWeek\n * @category ISO Week Helpers\n * @summary Return the start of an ISO week for the given date.\n *\n * @description\n * Return the start of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of an ISO week\n *\n * @example\n * // The start of an ISO week for 2 September 2014 11:55:00:\n * const result = startOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function startOfISOWeek(date, options) {\n  return startOfWeek(date, { ...options, weekStartsOn: 1 });\n}\n\n// Fallback for modularized imports:\nexport default startOfISOWeek;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { startOfISOWeek } from \"./startOfISOWeek.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getISOWeekYear} function options.\n */\n\n/**\n * @name getISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the ISO week-numbering year of the given date.\n *\n * @description\n * Get the ISO week-numbering year of the given date,\n * which always starts 3 days before the year's first Thursday.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param date - The given date\n *\n * @returns The ISO week-numbering year\n *\n * @example\n * // Which ISO-week numbering year is 2 January 2005?\n * const result = getISOWeekYear(new Date(2005, 0, 2))\n * //=> 2004\n */\nexport function getISOWeekYear(date, options) {\n  const _date = toDate(date, options?.in);\n  const year = _date.getFullYear();\n\n  const fourthOfJanuaryOfNextYear = constructFrom(_date, 0);\n  fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4);\n  fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0);\n  const startOfNextYear = startOfISOWeek(fourthOfJanuaryOfNextYear);\n\n  const fourthOfJanuaryOfThisYear = constructFrom(_date, 0);\n  fourthOfJanuaryOfThisYear.setFullYear(year, 0, 4);\n  fourthOfJanuaryOfThisYear.setHours(0, 0, 0, 0);\n  const startOfThisYear = startOfISOWeek(fourthOfJanuaryOfThisYear);\n\n  if (_date.getTime() >= startOfNextYear.getTime()) {\n    return year + 1;\n  } else if (_date.getTime() >= startOfThisYear.getTime()) {\n    return year;\n  } else {\n    return year - 1;\n  }\n}\n\n// Fallback for modularized imports:\nexport default getISOWeekYear;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { getISOWeekYear } from \"./getISOWeekYear.js\";\nimport { startOfISOWeek } from \"./startOfISOWeek.js\";\n\n/**\n * The {@link startOfISOWeekYear} function options.\n */\n\n/**\n * @name startOfISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the start of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the start of an ISO week-numbering year,\n * which always starts 3 days before the year's first Thursday.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of an ISO week-numbering year\n *\n * @example\n * // The start of an ISO week-numbering year for 2 July 2005:\n * const result = startOfISOWeekYear(new Date(2005, 6, 2))\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport function startOfISOWeekYear(date, options) {\n  const year = getISOWeekYear(date, options);\n  const fourthOfJanuary = constructFrom(options?.in || date, 0);\n  fourthOfJanuary.setFullYear(year, 0, 4);\n  fourthOfJanuary.setHours(0, 0, 0, 0);\n  return startOfISOWeek(fourthOfJanuary);\n}\n\n// Fallback for modularized imports:\nexport default startOfISOWeekYear;\n","import { millisecondsInWeek } from \"./constants.js\";\nimport { startOfISOWeek } from \"./startOfISOWeek.js\";\nimport { startOfISOWeekYear } from \"./startOfISOWeekYear.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getISOWeek} function options.\n */\n\n/**\n * @name getISOWeek\n * @category ISO Week Helpers\n * @summary Get the ISO week of the given date.\n *\n * @description\n * Get the ISO week of the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param date - The given date\n * @param options - The options\n *\n * @returns The ISO week\n *\n * @example\n * // Which week of the ISO-week numbering year is 2 January 2005?\n * const result = getISOWeek(new Date(2005, 0, 2))\n * //=> 53\n */\nexport function getISOWeek(date, options) {\n  const _date = toDate(date, options?.in);\n  const diff = +startOfISOWeek(_date) - +startOfISOWeekYear(_date);\n\n  // Round the number of weeks to the nearest integer because the number of\n  // milliseconds in a week is not constant (e.g. it's different in the week of\n  // the daylight saving time clock shift).\n  return Math.round(diff / millisecondsInWeek) + 1;\n}\n\n// Fallback for modularized imports:\nexport default getISOWeek;\n","import { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { constructFrom } from \"./constructFrom.js\";\nimport { startOfWeek } from \"./startOfWeek.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getWeekYear} function options.\n */\n\n/**\n * @name getWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Get the local week-numbering year of the given date.\n *\n * @description\n * Get the local week-numbering year of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @param date - The given date\n * @param options - An object with options.\n *\n * @returns The local week-numbering year\n *\n * @example\n * // Which week numbering year is 26 December 2004 with the default settings?\n * const result = getWeekYear(new Date(2004, 11, 26))\n * //=> 2005\n *\n * @example\n * // Which week numbering year is 26 December 2004 if week starts on Saturday?\n * const result = getWeekYear(new Date(2004, 11, 26), { weekStartsOn: 6 })\n * //=> 2004\n *\n * @example\n * // Which week numbering year is 26 December 2004 if the first week contains 4 January?\n * const result = getWeekYear(new Date(2004, 11, 26), { firstWeekContainsDate: 4 })\n * //=> 2004\n */\nexport function getWeekYear(date, options) {\n  const _date = toDate(date, options?.in);\n  const year = _date.getFullYear();\n\n  const defaultOptions = getDefaultOptions();\n  const firstWeekContainsDate =\n    options?.firstWeekContainsDate ??\n    options?.locale?.options?.firstWeekContainsDate ??\n    defaultOptions.firstWeekContainsDate ??\n    defaultOptions.locale?.options?.firstWeekContainsDate ??\n    1;\n\n  const firstWeekOfNextYear = constructFrom(options?.in || date, 0);\n  firstWeekOfNextYear.setFullYear(year + 1, 0, firstWeekContainsDate);\n  firstWeekOfNextYear.setHours(0, 0, 0, 0);\n  const startOfNextYear = startOfWeek(firstWeekOfNextYear, options);\n\n  const firstWeekOfThisYear = constructFrom(options?.in || date, 0);\n  firstWeekOfThisYear.setFullYear(year, 0, firstWeekContainsDate);\n  firstWeekOfThisYear.setHours(0, 0, 0, 0);\n  const startOfThisYear = startOfWeek(firstWeekOfThisYear, options);\n\n  if (+_date >= +startOfNextYear) {\n    return year + 1;\n  } else if (+_date >= +startOfThisYear) {\n    return year;\n  } else {\n    return year - 1;\n  }\n}\n\n// Fallback for modularized imports:\nexport default getWeekYear;\n","import { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { constructFrom } from \"./constructFrom.js\";\nimport { getWeekYear } from \"./getWeekYear.js\";\nimport { startOfWeek } from \"./startOfWeek.js\";\n\n/**\n * The {@link startOfWeekYear} function options.\n */\n\n/**\n * @name startOfWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Return the start of a local week-numbering year for the given date.\n *\n * @description\n * Return the start of a local week-numbering year.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of a week-numbering year\n *\n * @example\n * // The start of an a week-numbering year for 2 July 2005 with default settings:\n * const result = startOfWeekYear(new Date(2005, 6, 2))\n * //=> Sun Dec 26 2004 00:00:00\n *\n * @example\n * // The start of a week-numbering year for 2 July 2005\n * // if Monday is the first day of week\n * // and 4 January is always in the first week of the year:\n * const result = startOfWeekYear(new Date(2005, 6, 2), {\n *   weekStartsOn: 1,\n *   firstWeekContainsDate: 4\n * })\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport function startOfWeekYear(date, options) {\n  const defaultOptions = getDefaultOptions();\n  const firstWeekContainsDate =\n    options?.firstWeekContainsDate ??\n    options?.locale?.options?.firstWeekContainsDate ??\n    defaultOptions.firstWeekContainsDate ??\n    defaultOptions.locale?.options?.firstWeekContainsDate ??\n    1;\n\n  const year = getWeekYear(date, options);\n  const firstWeek = constructFrom(options?.in || date, 0);\n  firstWeek.setFullYear(year, 0, firstWeekContainsDate);\n  firstWeek.setHours(0, 0, 0, 0);\n  const _date = startOfWeek(firstWeek, options);\n  return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfWeekYear;\n","import { millisecondsInWeek } from \"./constants.js\";\nimport { startOfWeek } from \"./startOfWeek.js\";\nimport { startOfWeekYear } from \"./startOfWeekYear.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getWeek} function options.\n */\n\n/**\n * @name getWeek\n * @category Week Helpers\n * @summary Get the local week index of the given date.\n *\n * @description\n * Get the local week index of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @param date - The given date\n * @param options - An object with options\n *\n * @returns The week\n *\n * @example\n * // Which week of the local week numbering year is 2 January 2005 with default options?\n * const result = getWeek(new Date(2005, 0, 2))\n * //=> 2\n *\n * @example\n * // Which week of the local week numbering year is 2 January 2005,\n * // if Monday is the first day of the week,\n * // and the first week of the year always contains 4 January?\n * const result = getWeek(new Date(2005, 0, 2), {\n *   weekStartsOn: 1,\n *   firstWeekContainsDate: 4\n * })\n * //=> 53\n */\nexport function getWeek(date, options) {\n  const _date = toDate(date, options?.in);\n  const diff = +startOfWeek(_date, options) - +startOfWeekYear(_date, options);\n\n  // Round the number of weeks to the nearest integer because the number of\n  // milliseconds in a week is not constant (e.g. it's different in the week of\n  // the daylight saving time clock shift).\n  return Math.round(diff / millisecondsInWeek) + 1;\n}\n\n// Fallback for modularized imports:\nexport default getWeek;\n","export function addLeadingZeros(number, targetLength) {\n  const sign = number < 0 ? \"-\" : \"\";\n  const output = Math.abs(number).toString().padStart(targetLength, \"0\");\n  return sign + output;\n}\n","import { addLeadingZeros } from \"../addLeadingZeros.js\";\n\n/*\n * |     | Unit                           |     | Unit                           |\n * |-----|--------------------------------|-----|--------------------------------|\n * |  a  | AM, PM                         |  A* |                                |\n * |  d  | Day of month                   |  D  |                                |\n * |  h  | Hour [1-12]                    |  H  | Hour [0-23]                    |\n * |  m  | Minute                         |  M  | Month                          |\n * |  s  | Second                         |  S  | Fraction of second             |\n * |  y  | Year (abs)                     |  Y  |                                |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\n\nexport const lightFormatters = {\n  // Year\n  y(date, token) {\n    // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n    // | Year     |     y | yy |   yyy |  yyyy | yyyyy |\n    // |----------|-------|----|-------|-------|-------|\n    // | AD 1     |     1 | 01 |   001 |  0001 | 00001 |\n    // | AD 12    |    12 | 12 |   012 |  0012 | 00012 |\n    // | AD 123   |   123 | 23 |   123 |  0123 | 00123 |\n    // | AD 1234  |  1234 | 34 |  1234 |  1234 | 01234 |\n    // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n    const signedYear = date.getFullYear();\n    // Returns 1 for 1 BC (which is year 0 in JavaScript)\n    const year = signedYear > 0 ? signedYear : 1 - signedYear;\n    return addLeadingZeros(token === \"yy\" ? year % 100 : year, token.length);\n  },\n\n  // Month\n  M(date, token) {\n    const month = date.getMonth();\n    return token === \"M\" ? String(month + 1) : addLeadingZeros(month + 1, 2);\n  },\n\n  // Day of the month\n  d(date, token) {\n    return addLeadingZeros(date.getDate(), token.length);\n  },\n\n  // AM or PM\n  a(date, token) {\n    const dayPeriodEnumValue = date.getHours() / 12 >= 1 ? \"pm\" : \"am\";\n\n    switch (token) {\n      case \"a\":\n      case \"aa\":\n        return dayPeriodEnumValue.toUpperCase();\n      case \"aaa\":\n        return dayPeriodEnumValue;\n      case \"aaaaa\":\n        return dayPeriodEnumValue[0];\n      case \"aaaa\":\n      default:\n        return dayPeriodEnumValue === \"am\" ? \"a.m.\" : \"p.m.\";\n    }\n  },\n\n  // Hour [1-12]\n  h(date, token) {\n    return addLeadingZeros(date.getHours() % 12 || 12, token.length);\n  },\n\n  // Hour [0-23]\n  H(date, token) {\n    return addLeadingZeros(date.getHours(), token.length);\n  },\n\n  // Minute\n  m(date, token) {\n    return addLeadingZeros(date.getMinutes(), token.length);\n  },\n\n  // Second\n  s(date, token) {\n    return addLeadingZeros(date.getSeconds(), token.length);\n  },\n\n  // Fraction of second\n  S(date, token) {\n    const numberOfDigits = token.length;\n    const milliseconds = date.getMilliseconds();\n    const fractionalSeconds = Math.trunc(\n      milliseconds * Math.pow(10, numberOfDigits - 3),\n    );\n    return addLeadingZeros(fractionalSeconds, token.length);\n  },\n};\n","import { getDayOfYear } from \"../../getDayOfYear.js\";\nimport { getISOWeek } from \"../../getISOWeek.js\";\nimport { getISOWeekYear } from \"../../getISOWeekYear.js\";\nimport { getWeek } from \"../../getWeek.js\";\nimport { getWeekYear } from \"../../getWeekYear.js\";\n\nimport { addLeadingZeros } from \"../addLeadingZeros.js\";\nimport { lightFormatters } from \"./lightFormatters.js\";\n\nconst dayPeriodEnum = {\n  am: \"am\",\n  pm: \"pm\",\n  midnight: \"midnight\",\n  noon: \"noon\",\n  morning: \"morning\",\n  afternoon: \"afternoon\",\n  evening: \"evening\",\n  night: \"night\",\n};\n\n/*\n * |     | Unit                           |     | Unit                           |\n * |-----|--------------------------------|-----|--------------------------------|\n * |  a  | AM, PM                         |  A* | Milliseconds in day            |\n * |  b  | AM, PM, noon, midnight         |  B  | Flexible day period            |\n * |  c  | Stand-alone local day of week  |  C* | Localized hour w/ day period   |\n * |  d  | Day of month                   |  D  | Day of year                    |\n * |  e  | Local day of week              |  E  | Day of week                    |\n * |  f  |                                |  F* | Day of week in month           |\n * |  g* | Modified Julian day            |  G  | Era                            |\n * |  h  | Hour [1-12]                    |  H  | Hour [0-23]                    |\n * |  i! | ISO day of week                |  I! | ISO week of year               |\n * |  j* | Localized hour w/ day period   |  J* | Localized hour w/o day period  |\n * |  k  | Hour [1-24]                    |  K  | Hour [0-11]                    |\n * |  l* | (deprecated)                   |  L  | Stand-alone month              |\n * |  m  | Minute                         |  M  | Month                          |\n * |  n  |                                |  N  |                                |\n * |  o! | Ordinal number modifier        |  O  | Timezone (GMT)                 |\n * |  p! | Long localized time            |  P! | Long localized date            |\n * |  q  | Stand-alone quarter            |  Q  | Quarter                        |\n * |  r* | Related Gregorian year         |  R! | ISO week-numbering year        |\n * |  s  | Second                         |  S  | Fraction of second             |\n * |  t! | Seconds timestamp              |  T! | Milliseconds timestamp         |\n * |  u  | Extended year                  |  U* | Cyclic year                    |\n * |  v* | Timezone (generic non-locat.)  |  V* | Timezone (location)            |\n * |  w  | Local week of year             |  W* | Week of month                  |\n * |  x  | Timezone (ISO-8601 w/o Z)      |  X  | Timezone (ISO-8601)            |\n * |  y  | Year (abs)                     |  Y  | Local week-numbering year      |\n * |  z  | Timezone (specific non-locat.) |  Z* | Timezone (aliases)             |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n *   i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n *   `R` is supposed to be used in conjunction with `I` and `i`\n *   for universal ISO week-numbering date, whereas\n *   `Y` is supposed to be used in conjunction with `w` and `e`\n *   for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nexport const formatters = {\n  // Era\n  G: function (date, token, localize) {\n    const era = date.getFullYear() > 0 ? 1 : 0;\n    switch (token) {\n      // AD, BC\n      case \"G\":\n      case \"GG\":\n      case \"GGG\":\n        return localize.era(era, { width: \"abbreviated\" });\n      // A, B\n      case \"GGGGG\":\n        return localize.era(era, { width: \"narrow\" });\n      // Anno Domini, Before Christ\n      case \"GGGG\":\n      default:\n        return localize.era(era, { width: \"wide\" });\n    }\n  },\n\n  // Year\n  y: function (date, token, localize) {\n    // Ordinal number\n    if (token === \"yo\") {\n      const signedYear = date.getFullYear();\n      // Returns 1 for 1 BC (which is year 0 in JavaScript)\n      const year = signedYear > 0 ? signedYear : 1 - signedYear;\n      return localize.ordinalNumber(year, { unit: \"year\" });\n    }\n\n    return lightFormatters.y(date, token);\n  },\n\n  // Local week-numbering year\n  Y: function (date, token, localize, options) {\n    const signedWeekYear = getWeekYear(date, options);\n    // Returns 1 for 1 BC (which is year 0 in JavaScript)\n    const weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear;\n\n    // Two digit year\n    if (token === \"YY\") {\n      const twoDigitYear = weekYear % 100;\n      return addLeadingZeros(twoDigitYear, 2);\n    }\n\n    // Ordinal number\n    if (token === \"Yo\") {\n      return localize.ordinalNumber(weekYear, { unit: \"year\" });\n    }\n\n    // Padding\n    return addLeadingZeros(weekYear, token.length);\n  },\n\n  // ISO week-numbering year\n  R: function (date, token) {\n    const isoWeekYear = getISOWeekYear(date);\n\n    // Padding\n    return addLeadingZeros(isoWeekYear, token.length);\n  },\n\n  // Extended year. This is a single number designating the year of this calendar system.\n  // The main difference between `y` and `u` localizers are B.C. years:\n  // | Year | `y` | `u` |\n  // |------|-----|-----|\n  // | AC 1 |   1 |   1 |\n  // | BC 1 |   1 |   0 |\n  // | BC 2 |   2 |  -1 |\n  // Also `yy` always returns the last two digits of a year,\n  // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n  u: function (date, token) {\n    const year = date.getFullYear();\n    return addLeadingZeros(year, token.length);\n  },\n\n  // Quarter\n  Q: function (date, token, localize) {\n    const quarter = Math.ceil((date.getMonth() + 1) / 3);\n    switch (token) {\n      // 1, 2, 3, 4\n      case \"Q\":\n        return String(quarter);\n      // 01, 02, 03, 04\n      case \"QQ\":\n        return addLeadingZeros(quarter, 2);\n      // 1st, 2nd, 3rd, 4th\n      case \"Qo\":\n        return localize.ordinalNumber(quarter, { unit: \"quarter\" });\n      // Q1, Q2, Q3, Q4\n      case \"QQQ\":\n        return localize.quarter(quarter, {\n          width: \"abbreviated\",\n          context: \"formatting\",\n        });\n      // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n      case \"QQQQQ\":\n        return localize.quarter(quarter, {\n          width: \"narrow\",\n          context: \"formatting\",\n        });\n      // 1st quarter, 2nd quarter, ...\n      case \"QQQQ\":\n      default:\n        return localize.quarter(quarter, {\n          width: \"wide\",\n          context: \"formatting\",\n        });\n    }\n  },\n\n  // Stand-alone quarter\n  q: function (date, token, localize) {\n    const quarter = Math.ceil((date.getMonth() + 1) / 3);\n    switch (token) {\n      // 1, 2, 3, 4\n      case \"q\":\n        return String(quarter);\n      // 01, 02, 03, 04\n      case \"qq\":\n        return addLeadingZeros(quarter, 2);\n      // 1st, 2nd, 3rd, 4th\n      case \"qo\":\n        return localize.ordinalNumber(quarter, { unit: \"quarter\" });\n      // Q1, Q2, Q3, Q4\n      case \"qqq\":\n        return localize.quarter(quarter, {\n          width: \"abbreviated\",\n          context: \"standalone\",\n        });\n      // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n      case \"qqqqq\":\n        return localize.quarter(quarter, {\n          width: \"narrow\",\n          context: \"standalone\",\n        });\n      // 1st quarter, 2nd quarter, ...\n      case \"qqqq\":\n      default:\n        return localize.quarter(quarter, {\n          width: \"wide\",\n          context: \"standalone\",\n        });\n    }\n  },\n\n  // Month\n  M: function (date, token, localize) {\n    const month = date.getMonth();\n    switch (token) {\n      case \"M\":\n      case \"MM\":\n        return lightFormatters.M(date, token);\n      // 1st, 2nd, ..., 12th\n      case \"Mo\":\n        return localize.ordinalNumber(month + 1, { unit: \"month\" });\n      // Jan, Feb, ..., Dec\n      case \"MMM\":\n        return localize.month(month, {\n          width: \"abbreviated\",\n          context: \"formatting\",\n        });\n      // J, F, ..., D\n      case \"MMMMM\":\n        return localize.month(month, {\n          width: \"narrow\",\n          context: \"formatting\",\n        });\n      // January, February, ..., December\n      case \"MMMM\":\n      default:\n        return localize.month(month, { width: \"wide\", context: \"formatting\" });\n    }\n  },\n\n  // Stand-alone month\n  L: function (date, token, localize) {\n    const month = date.getMonth();\n    switch (token) {\n      // 1, 2, ..., 12\n      case \"L\":\n        return String(month + 1);\n      // 01, 02, ..., 12\n      case \"LL\":\n        return addLeadingZeros(month + 1, 2);\n      // 1st, 2nd, ..., 12th\n      case \"Lo\":\n        return localize.ordinalNumber(month + 1, { unit: \"month\" });\n      // Jan, Feb, ..., Dec\n      case \"LLL\":\n        return localize.month(month, {\n          width: \"abbreviated\",\n          context: \"standalone\",\n        });\n      // J, F, ..., D\n      case \"LLLLL\":\n        return localize.month(month, {\n          width: \"narrow\",\n          context: \"standalone\",\n        });\n      // January, February, ..., December\n      case \"LLLL\":\n      default:\n        return localize.month(month, { width: \"wide\", context: \"standalone\" });\n    }\n  },\n\n  // Local week of year\n  w: function (date, token, localize, options) {\n    const week = getWeek(date, options);\n\n    if (token === \"wo\") {\n      return localize.ordinalNumber(week, { unit: \"week\" });\n    }\n\n    return addLeadingZeros(week, token.length);\n  },\n\n  // ISO week of year\n  I: function (date, token, localize) {\n    const isoWeek = getISOWeek(date);\n\n    if (token === \"Io\") {\n      return localize.ordinalNumber(isoWeek, { unit: \"week\" });\n    }\n\n    return addLeadingZeros(isoWeek, token.length);\n  },\n\n  // Day of the month\n  d: function (date, token, localize) {\n    if (token === \"do\") {\n      return localize.ordinalNumber(date.getDate(), { unit: \"date\" });\n    }\n\n    return lightFormatters.d(date, token);\n  },\n\n  // Day of year\n  D: function (date, token, localize) {\n    const dayOfYear = getDayOfYear(date);\n\n    if (token === \"Do\") {\n      return localize.ordinalNumber(dayOfYear, { unit: \"dayOfYear\" });\n    }\n\n    return addLeadingZeros(dayOfYear, token.length);\n  },\n\n  // Day of week\n  E: function (date, token, localize) {\n    const dayOfWeek = date.getDay();\n    switch (token) {\n      // Tue\n      case \"E\":\n      case \"EE\":\n      case \"EEE\":\n        return localize.day(dayOfWeek, {\n          width: \"abbreviated\",\n          context: \"formatting\",\n        });\n      // T\n      case \"EEEEE\":\n        return localize.day(dayOfWeek, {\n          width: \"narrow\",\n          context: \"formatting\",\n        });\n      // Tu\n      case \"EEEEEE\":\n        return localize.day(dayOfWeek, {\n          width: \"short\",\n          context: \"formatting\",\n        });\n      // Tuesday\n      case \"EEEE\":\n      default:\n        return localize.day(dayOfWeek, {\n          width: \"wide\",\n          context: \"formatting\",\n        });\n    }\n  },\n\n  // Local day of week\n  e: function (date, token, localize, options) {\n    const dayOfWeek = date.getDay();\n    const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n    switch (token) {\n      // Numerical value (Nth day of week with current locale or weekStartsOn)\n      case \"e\":\n        return String(localDayOfWeek);\n      // Padded numerical value\n      case \"ee\":\n        return addLeadingZeros(localDayOfWeek, 2);\n      // 1st, 2nd, ..., 7th\n      case \"eo\":\n        return localize.ordinalNumber(localDayOfWeek, { unit: \"day\" });\n      case \"eee\":\n        return localize.day(dayOfWeek, {\n          width: \"abbreviated\",\n          context: \"formatting\",\n        });\n      // T\n      case \"eeeee\":\n        return localize.day(dayOfWeek, {\n          width: \"narrow\",\n          context: \"formatting\",\n        });\n      // Tu\n      case \"eeeeee\":\n        return localize.day(dayOfWeek, {\n          width: \"short\",\n          context: \"formatting\",\n        });\n      // Tuesday\n      case \"eeee\":\n      default:\n        return localize.day(dayOfWeek, {\n          width: \"wide\",\n          context: \"formatting\",\n        });\n    }\n  },\n\n  // Stand-alone local day of week\n  c: function (date, token, localize, options) {\n    const dayOfWeek = date.getDay();\n    const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n    switch (token) {\n      // Numerical value (same as in `e`)\n      case \"c\":\n        return String(localDayOfWeek);\n      // Padded numerical value\n      case \"cc\":\n        return addLeadingZeros(localDayOfWeek, token.length);\n      // 1st, 2nd, ..., 7th\n      case \"co\":\n        return localize.ordinalNumber(localDayOfWeek, { unit: \"day\" });\n      case \"ccc\":\n        return localize.day(dayOfWeek, {\n          width: \"abbreviated\",\n          context: \"standalone\",\n        });\n      // T\n      case \"ccccc\":\n        return localize.day(dayOfWeek, {\n          width: \"narrow\",\n          context: \"standalone\",\n        });\n      // Tu\n      case \"cccccc\":\n        return localize.day(dayOfWeek, {\n          width: \"short\",\n          context: \"standalone\",\n        });\n      // Tuesday\n      case \"cccc\":\n      default:\n        return localize.day(dayOfWeek, {\n          width: \"wide\",\n          context: \"standalone\",\n        });\n    }\n  },\n\n  // ISO day of week\n  i: function (date, token, localize) {\n    const dayOfWeek = date.getDay();\n    const isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n    switch (token) {\n      // 2\n      case \"i\":\n        return String(isoDayOfWeek);\n      // 02\n      case \"ii\":\n        return addLeadingZeros(isoDayOfWeek, token.length);\n      // 2nd\n      case \"io\":\n        return localize.ordinalNumber(isoDayOfWeek, { unit: \"day\" });\n      // Tue\n      case \"iii\":\n        return localize.day(dayOfWeek, {\n          width: \"abbreviated\",\n          context: \"formatting\",\n        });\n      // T\n      case \"iiiii\":\n        return localize.day(dayOfWeek, {\n          width: \"narrow\",\n          context: \"formatting\",\n        });\n      // Tu\n      case \"iiiiii\":\n        return localize.day(dayOfWeek, {\n          width: \"short\",\n          context: \"formatting\",\n        });\n      // Tuesday\n      case \"iiii\":\n      default:\n        return localize.day(dayOfWeek, {\n          width: \"wide\",\n          context: \"formatting\",\n        });\n    }\n  },\n\n  // AM or PM\n  a: function (date, token, localize) {\n    const hours = date.getHours();\n    const dayPeriodEnumValue = hours / 12 >= 1 ? \"pm\" : \"am\";\n\n    switch (token) {\n      case \"a\":\n      case \"aa\":\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: \"abbreviated\",\n          context: \"formatting\",\n        });\n      case \"aaa\":\n        return localize\n          .dayPeriod(dayPeriodEnumValue, {\n            width: \"abbreviated\",\n            context: \"formatting\",\n          })\n          .toLowerCase();\n      case \"aaaaa\":\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: \"narrow\",\n          context: \"formatting\",\n        });\n      case \"aaaa\":\n      default:\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: \"wide\",\n          context: \"formatting\",\n        });\n    }\n  },\n\n  // AM, PM, midnight, noon\n  b: function (date, token, localize) {\n    const hours = date.getHours();\n    let dayPeriodEnumValue;\n    if (hours === 12) {\n      dayPeriodEnumValue = dayPeriodEnum.noon;\n    } else if (hours === 0) {\n      dayPeriodEnumValue = dayPeriodEnum.midnight;\n    } else {\n      dayPeriodEnumValue = hours / 12 >= 1 ? \"pm\" : \"am\";\n    }\n\n    switch (token) {\n      case \"b\":\n      case \"bb\":\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: \"abbreviated\",\n          context: \"formatting\",\n        });\n      case \"bbb\":\n        return localize\n          .dayPeriod(dayPeriodEnumValue, {\n            width: \"abbreviated\",\n            context: \"formatting\",\n          })\n          .toLowerCase();\n      case \"bbbbb\":\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: \"narrow\",\n          context: \"formatting\",\n        });\n      case \"bbbb\":\n      default:\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: \"wide\",\n          context: \"formatting\",\n        });\n    }\n  },\n\n  // in the morning, in the afternoon, in the evening, at night\n  B: function (date, token, localize) {\n    const hours = date.getHours();\n    let dayPeriodEnumValue;\n    if (hours >= 17) {\n      dayPeriodEnumValue = dayPeriodEnum.evening;\n    } else if (hours >= 12) {\n      dayPeriodEnumValue = dayPeriodEnum.afternoon;\n    } else if (hours >= 4) {\n      dayPeriodEnumValue = dayPeriodEnum.morning;\n    } else {\n      dayPeriodEnumValue = dayPeriodEnum.night;\n    }\n\n    switch (token) {\n      case \"B\":\n      case \"BB\":\n      case \"BBB\":\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: \"abbreviated\",\n          context: \"formatting\",\n        });\n      case \"BBBBB\":\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: \"narrow\",\n          context: \"formatting\",\n        });\n      case \"BBBB\":\n      default:\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: \"wide\",\n          context: \"formatting\",\n        });\n    }\n  },\n\n  // Hour [1-12]\n  h: function (date, token, localize) {\n    if (token === \"ho\") {\n      let hours = date.getHours() % 12;\n      if (hours === 0) hours = 12;\n      return localize.ordinalNumber(hours, { unit: \"hour\" });\n    }\n\n    return lightFormatters.h(date, token);\n  },\n\n  // Hour [0-23]\n  H: function (date, token, localize) {\n    if (token === \"Ho\") {\n      return localize.ordinalNumber(date.getHours(), { unit: \"hour\" });\n    }\n\n    return lightFormatters.H(date, token);\n  },\n\n  // Hour [0-11]\n  K: function (date, token, localize) {\n    const hours = date.getHours() % 12;\n\n    if (token === \"Ko\") {\n      return localize.ordinalNumber(hours, { unit: \"hour\" });\n    }\n\n    return addLeadingZeros(hours, token.length);\n  },\n\n  // Hour [1-24]\n  k: function (date, token, localize) {\n    let hours = date.getHours();\n    if (hours === 0) hours = 24;\n\n    if (token === \"ko\") {\n      return localize.ordinalNumber(hours, { unit: \"hour\" });\n    }\n\n    return addLeadingZeros(hours, token.length);\n  },\n\n  // Minute\n  m: function (date, token, localize) {\n    if (token === \"mo\") {\n      return localize.ordinalNumber(date.getMinutes(), { unit: \"minute\" });\n    }\n\n    return lightFormatters.m(date, token);\n  },\n\n  // Second\n  s: function (date, token, localize) {\n    if (token === \"so\") {\n      return localize.ordinalNumber(date.getSeconds(), { unit: \"second\" });\n    }\n\n    return lightFormatters.s(date, token);\n  },\n\n  // Fraction of second\n  S: function (date, token) {\n    return lightFormatters.S(date, token);\n  },\n\n  // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n  X: function (date, token, _localize) {\n    const timezoneOffset = date.getTimezoneOffset();\n\n    if (timezoneOffset === 0) {\n      return \"Z\";\n    }\n\n    switch (token) {\n      // Hours and optional minutes\n      case \"X\":\n        return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n      // Hours, minutes and optional seconds without `:` delimiter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `XX`\n      case \"XXXX\":\n      case \"XX\": // Hours and minutes without `:` delimiter\n        return formatTimezone(timezoneOffset);\n\n      // Hours, minutes and optional seconds with `:` delimiter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `XXX`\n      case \"XXXXX\":\n      case \"XXX\": // Hours and minutes with `:` delimiter\n      default:\n        return formatTimezone(timezoneOffset, \":\");\n    }\n  },\n\n  // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n  x: function (date, token, _localize) {\n    const timezoneOffset = date.getTimezoneOffset();\n\n    switch (token) {\n      // Hours and optional minutes\n      case \"x\":\n        return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n      // Hours, minutes and optional seconds without `:` delimiter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `xx`\n      case \"xxxx\":\n      case \"xx\": // Hours and minutes without `:` delimiter\n        return formatTimezone(timezoneOffset);\n\n      // Hours, minutes and optional seconds with `:` delimiter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `xxx`\n      case \"xxxxx\":\n      case \"xxx\": // Hours and minutes with `:` delimiter\n      default:\n        return formatTimezone(timezoneOffset, \":\");\n    }\n  },\n\n  // Timezone (GMT)\n  O: function (date, token, _localize) {\n    const timezoneOffset = date.getTimezoneOffset();\n\n    switch (token) {\n      // Short\n      case \"O\":\n      case \"OO\":\n      case \"OOO\":\n        return \"GMT\" + formatTimezoneShort(timezoneOffset, \":\");\n      // Long\n      case \"OOOO\":\n      default:\n        return \"GMT\" + formatTimezone(timezoneOffset, \":\");\n    }\n  },\n\n  // Timezone (specific non-location)\n  z: function (date, token, _localize) {\n    const timezoneOffset = date.getTimezoneOffset();\n\n    switch (token) {\n      // Short\n      case \"z\":\n      case \"zz\":\n      case \"zzz\":\n        return \"GMT\" + formatTimezoneShort(timezoneOffset, \":\");\n      // Long\n      case \"zzzz\":\n      default:\n        return \"GMT\" + formatTimezone(timezoneOffset, \":\");\n    }\n  },\n\n  // Seconds timestamp\n  t: function (date, token, _localize) {\n    const timestamp = Math.trunc(+date / 1000);\n    return addLeadingZeros(timestamp, token.length);\n  },\n\n  // Milliseconds timestamp\n  T: function (date, token, _localize) {\n    return addLeadingZeros(+date, token.length);\n  },\n};\n\nfunction formatTimezoneShort(offset, delimiter = \"\") {\n  const sign = offset > 0 ? \"-\" : \"+\";\n  const absOffset = Math.abs(offset);\n  const hours = Math.trunc(absOffset / 60);\n  const minutes = absOffset % 60;\n  if (minutes === 0) {\n    return sign + String(hours);\n  }\n  return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\n\nfunction formatTimezoneWithOptionalMinutes(offset, delimiter) {\n  if (offset % 60 === 0) {\n    const sign = offset > 0 ? \"-\" : \"+\";\n    return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n  }\n  return formatTimezone(offset, delimiter);\n}\n\nfunction formatTimezone(offset, delimiter = \"\") {\n  const sign = offset > 0 ? \"-\" : \"+\";\n  const absOffset = Math.abs(offset);\n  const hours = addLeadingZeros(Math.trunc(absOffset / 60), 2);\n  const minutes = addLeadingZeros(absOffset % 60, 2);\n  return sign + hours + delimiter + minutes;\n}\n","const dateLongFormatter = (pattern, formatLong) => {\n  switch (pattern) {\n    case \"P\":\n      return formatLong.date({ width: \"short\" });\n    case \"PP\":\n      return formatLong.date({ width: \"medium\" });\n    case \"PPP\":\n      return formatLong.date({ width: \"long\" });\n    case \"PPPP\":\n    default:\n      return formatLong.date({ width: \"full\" });\n  }\n};\n\nconst timeLongFormatter = (pattern, formatLong) => {\n  switch (pattern) {\n    case \"p\":\n      return formatLong.time({ width: \"short\" });\n    case \"pp\":\n      return formatLong.time({ width: \"medium\" });\n    case \"ppp\":\n      return formatLong.time({ width: \"long\" });\n    case \"pppp\":\n    default:\n      return formatLong.time({ width: \"full\" });\n  }\n};\n\nconst dateTimeLongFormatter = (pattern, formatLong) => {\n  const matchResult = pattern.match(/(P+)(p+)?/) || [];\n  const datePattern = matchResult[1];\n  const timePattern = matchResult[2];\n\n  if (!timePattern) {\n    return dateLongFormatter(pattern, formatLong);\n  }\n\n  let dateTimeFormat;\n\n  switch (datePattern) {\n    case \"P\":\n      dateTimeFormat = formatLong.dateTime({ width: \"short\" });\n      break;\n    case \"PP\":\n      dateTimeFormat = formatLong.dateTime({ width: \"medium\" });\n      break;\n    case \"PPP\":\n      dateTimeFormat = formatLong.dateTime({ width: \"long\" });\n      break;\n    case \"PPPP\":\n    default:\n      dateTimeFormat = formatLong.dateTime({ width: \"full\" });\n      break;\n  }\n\n  return dateTimeFormat\n    .replace(\"{{date}}\", dateLongFormatter(datePattern, formatLong))\n    .replace(\"{{time}}\", timeLongFormatter(timePattern, formatLong));\n};\n\nexport const longFormatters = {\n  p: timeLongFormatter,\n  P: dateTimeLongFormatter,\n};\n","const dayOfYearTokenRE = /^D+$/;\nconst weekYearTokenRE = /^Y+$/;\n\nconst throwTokens = [\"D\", \"DD\", \"YY\", \"YYYY\"];\n\nexport function isProtectedDayOfYearToken(token) {\n  return dayOfYearTokenRE.test(token);\n}\n\nexport function isProtectedWeekYearToken(token) {\n  return weekYearTokenRE.test(token);\n}\n\nexport function warnOrThrowProtectedError(token, format, input) {\n  const _message = message(token, format, input);\n  console.warn(_message);\n  if (throwTokens.includes(token)) throw new RangeError(_message);\n}\n\nfunction message(token, format, input) {\n  const subject = token[0] === \"Y\" ? \"years\" : \"days of the month\";\n  return `Use \\`${token.toLowerCase()}\\` instead of \\`${token}\\` (in \\`${format}\\`) for formatting ${subject} to the input \\`${input}\\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`;\n}\n","/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * @param value - The value to check\n *\n * @returns True if the given value is a date\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\nexport function isDate(value) {\n  return (\n    value instanceof Date ||\n    (typeof value === \"object\" &&\n      Object.prototype.toString.call(value) === \"[object Date]\")\n  );\n}\n\n// Fallback for modularized imports:\nexport default isDate;\n","import { isDate } from \"./isDate.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate](https://date-fns.org/docs/toDate)\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param date - The date to check\n *\n * @returns The date is valid\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertible into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\nexport function isValid(date) {\n  return !((!isDate(date) && typeof date !== \"number\") || isNaN(+toDate(date)));\n}\n\n// Fallback for modularized imports:\nexport default isValid;\n","import { defaultLocale } from \"./_lib/defaultLocale.js\";\nimport { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { formatters } from \"./_lib/format/formatters.js\";\nimport { longFormatters } from \"./_lib/format/longFormatters.js\";\nimport {\n  isProtectedDayOfYearToken,\n  isProtectedWeekYearToken,\n  warnOrThrowProtectedError,\n} from \"./_lib/protectedTokens.js\";\nimport { isValid } from \"./isValid.js\";\nimport { toDate } from \"./toDate.js\";\n\n// Rexports of internal for libraries to use.\n// See: https://github.com/date-fns/date-fns/issues/3638#issuecomment-1877082874\nexport { formatters, longFormatters };\n\n// This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n//   (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n//   except a single quote symbol, which ends the sequence.\n//   Two quote characters do not end the sequence.\n//   If there is no matching single quote\n//   then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nconst formattingTokensRegExp =\n  /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nconst longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\n\nconst escapedStringRegExp = /^'([^]*?)'?$/;\nconst doubleQuoteRegExp = /''/g;\nconst unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\nexport { format as formatDate };\n\n/**\n * The {@link format} function options.\n */\n\n/**\n * @name format\n * @alias formatDate\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit                            | Pattern | Result examples                   | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era                             | G..GGG  | AD, BC                            |       |\n * |                                 | GGGG    | Anno Domini, Before Christ        | 2     |\n * |                                 | GGGGG   | A, B                              |       |\n * | Calendar year                   | y       | 44, 1, 1900, 2017                 | 5     |\n * |                                 | yo      | 44th, 1st, 0th, 17th              | 5,7   |\n * |                                 | yy      | 44, 01, 00, 17                    | 5     |\n * |                                 | yyy     | 044, 001, 1900, 2017              | 5     |\n * |                                 | yyyy    | 0044, 0001, 1900, 2017            | 5     |\n * |                                 | yyyyy   | ...                               | 3,5   |\n * | Local week-numbering year       | Y       | 44, 1, 1900, 2017                 | 5     |\n * |                                 | Yo      | 44th, 1st, 1900th, 2017th         | 5,7   |\n * |                                 | YY      | 44, 01, 00, 17                    | 5,8   |\n * |                                 | YYY     | 044, 001, 1900, 2017              | 5     |\n * |                                 | YYYY    | 0044, 0001, 1900, 2017            | 5,8   |\n * |                                 | YYYYY   | ...                               | 3,5   |\n * | ISO week-numbering year         | R       | -43, 0, 1, 1900, 2017             | 5,7   |\n * |                                 | RR      | -43, 00, 01, 1900, 2017           | 5,7   |\n * |                                 | RRR     | -043, 000, 001, 1900, 2017        | 5,7   |\n * |                                 | RRRR    | -0043, 0000, 0001, 1900, 2017     | 5,7   |\n * |                                 | RRRRR   | ...                               | 3,5,7 |\n * | Extended year                   | u       | -43, 0, 1, 1900, 2017             | 5     |\n * |                                 | uu      | -43, 01, 1900, 2017               | 5     |\n * |                                 | uuu     | -043, 001, 1900, 2017             | 5     |\n * |                                 | uuuu    | -0043, 0001, 1900, 2017           | 5     |\n * |                                 | uuuuu   | ...                               | 3,5   |\n * | Quarter (formatting)            | Q       | 1, 2, 3, 4                        |       |\n * |                                 | Qo      | 1st, 2nd, 3rd, 4th                | 7     |\n * |                                 | QQ      | 01, 02, 03, 04                    |       |\n * |                                 | QQQ     | Q1, Q2, Q3, Q4                    |       |\n * |                                 | QQQQ    | 1st quarter, 2nd quarter, ...     | 2     |\n * |                                 | QQQQQ   | 1, 2, 3, 4                        | 4     |\n * | Quarter (stand-alone)           | q       | 1, 2, 3, 4                        |       |\n * |                                 | qo      | 1st, 2nd, 3rd, 4th                | 7     |\n * |                                 | qq      | 01, 02, 03, 04                    |       |\n * |                                 | qqq     | Q1, Q2, Q3, Q4                    |       |\n * |                                 | qqqq    | 1st quarter, 2nd quarter, ...     | 2     |\n * |                                 | qqqqq   | 1, 2, 3, 4                        | 4     |\n * | Month (formatting)              | M       | 1, 2, ..., 12                     |       |\n * |                                 | Mo      | 1st, 2nd, ..., 12th               | 7     |\n * |                                 | MM      | 01, 02, ..., 12                   |       |\n * |                                 | MMM     | Jan, Feb, ..., Dec                |       |\n * |                                 | MMMM    | January, February, ..., December  | 2     |\n * |                                 | MMMMM   | J, F, ..., D                      |       |\n * | Month (stand-alone)             | L       | 1, 2, ..., 12                     |       |\n * |                                 | Lo      | 1st, 2nd, ..., 12th               | 7     |\n * |                                 | LL      | 01, 02, ..., 12                   |       |\n * |                                 | LLL     | Jan, Feb, ..., Dec                |       |\n * |                                 | LLLL    | January, February, ..., December  | 2     |\n * |                                 | LLLLL   | J, F, ..., D                      |       |\n * | Local week of year              | w       | 1, 2, ..., 53                     |       |\n * |                                 | wo      | 1st, 2nd, ..., 53th               | 7     |\n * |                                 | ww      | 01, 02, ..., 53                   |       |\n * | ISO week of year                | I       | 1, 2, ..., 53                     | 7     |\n * |                                 | Io      | 1st, 2nd, ..., 53th               | 7     |\n * |                                 | II      | 01, 02, ..., 53                   | 7     |\n * | Day of month                    | d       | 1, 2, ..., 31                     |       |\n * |                                 | do      | 1st, 2nd, ..., 31st               | 7     |\n * |                                 | dd      | 01, 02, ..., 31                   |       |\n * | Day of year                     | D       | 1, 2, ..., 365, 366               | 9     |\n * |                                 | Do      | 1st, 2nd, ..., 365th, 366th       | 7     |\n * |                                 | DD      | 01, 02, ..., 365, 366             | 9     |\n * |                                 | DDD     | 001, 002, ..., 365, 366           |       |\n * |                                 | DDDD    | ...                               | 3     |\n * | Day of week (formatting)        | E..EEE  | Mon, Tue, Wed, ..., Sun           |       |\n * |                                 | EEEE    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 | EEEEE   | M, T, W, T, F, S, S               |       |\n * |                                 | EEEEEE  | Mo, Tu, We, Th, Fr, Sa, Su        |       |\n * | ISO day of week (formatting)    | i       | 1, 2, 3, ..., 7                   | 7     |\n * |                                 | io      | 1st, 2nd, ..., 7th                | 7     |\n * |                                 | ii      | 01, 02, ..., 07                   | 7     |\n * |                                 | iii     | Mon, Tue, Wed, ..., Sun           | 7     |\n * |                                 | iiii    | Monday, Tuesday, ..., Sunday      | 2,7   |\n * |                                 | iiiii   | M, T, W, T, F, S, S               | 7     |\n * |                                 | iiiiii  | Mo, Tu, We, Th, Fr, Sa, Su        | 7     |\n * | Local day of week (formatting)  | e       | 2, 3, 4, ..., 1                   |       |\n * |                                 | eo      | 2nd, 3rd, ..., 1st                | 7     |\n * |                                 | ee      | 02, 03, ..., 01                   |       |\n * |                                 | eee     | Mon, Tue, Wed, ..., Sun           |       |\n * |                                 | eeee    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 | eeeee   | M, T, W, T, F, S, S               |       |\n * |                                 | eeeeee  | Mo, Tu, We, Th, Fr, Sa, Su        |       |\n * | Local day of week (stand-alone) | c       | 2, 3, 4, ..., 1                   |       |\n * |                                 | co      | 2nd, 3rd, ..., 1st                | 7     |\n * |                                 | cc      | 02, 03, ..., 01                   |       |\n * |                                 | ccc     | Mon, Tue, Wed, ..., Sun           |       |\n * |                                 | cccc    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 | ccccc   | M, T, W, T, F, S, S               |       |\n * |                                 | cccccc  | Mo, Tu, We, Th, Fr, Sa, Su        |       |\n * | AM, PM                          | a..aa   | AM, PM                            |       |\n * |                                 | aaa     | am, pm                            |       |\n * |                                 | aaaa    | a.m., p.m.                        | 2     |\n * |                                 | aaaaa   | a, p                              |       |\n * | AM, PM, noon, midnight          | b..bb   | AM, PM, noon, midnight            |       |\n * |                                 | bbb     | am, pm, noon, midnight            |       |\n * |                                 | bbbb    | a.m., p.m., noon, midnight        | 2     |\n * |                                 | bbbbb   | a, p, n, mi                       |       |\n * | Flexible day period             | B..BBB  | at night, in the morning, ...     |       |\n * |                                 | BBBB    | at night, in the morning, ...     | 2     |\n * |                                 | BBBBB   | at night, in the morning, ...     |       |\n * | Hour [1-12]                     | h       | 1, 2, ..., 11, 12                 |       |\n * |                                 | ho      | 1st, 2nd, ..., 11th, 12th         | 7     |\n * |                                 | hh      | 01, 02, ..., 11, 12               |       |\n * | Hour [0-23]                     | H       | 0, 1, 2, ..., 23                  |       |\n * |                                 | Ho      | 0th, 1st, 2nd, ..., 23rd          | 7     |\n * |                                 | HH      | 00, 01, 02, ..., 23               |       |\n * | Hour [0-11]                     | K       | 1, 2, ..., 11, 0                  |       |\n * |                                 | Ko      | 1st, 2nd, ..., 11th, 0th          | 7     |\n * |                                 | KK      | 01, 02, ..., 11, 00               |       |\n * | Hour [1-24]                     | k       | 24, 1, 2, ..., 23                 |       |\n * |                                 | ko      | 24th, 1st, 2nd, ..., 23rd         | 7     |\n * |                                 | kk      | 24, 01, 02, ..., 23               |       |\n * | Minute                          | m       | 0, 1, ..., 59                     |       |\n * |                                 | mo      | 0th, 1st, ..., 59th               | 7     |\n * |                                 | mm      | 00, 01, ..., 59                   |       |\n * | Second                          | s       | 0, 1, ..., 59                     |       |\n * |                                 | so      | 0th, 1st, ..., 59th               | 7     |\n * |                                 | ss      | 00, 01, ..., 59                   |       |\n * | Fraction of second              | S       | 0, 1, ..., 9                      |       |\n * |                                 | SS      | 00, 01, ..., 99                   |       |\n * |                                 | SSS     | 000, 001, ..., 999                |       |\n * |                                 | SSSS    | ...                               | 3     |\n * | Timezone (ISO-8601 w/ Z)        | X       | -08, +0530, Z                     |       |\n * |                                 | XX      | -0800, +0530, Z                   |       |\n * |                                 | XXX     | -08:00, +05:30, Z                 |       |\n * |                                 | XXXX    | -0800, +0530, Z, +123456          | 2     |\n * |                                 | XXXXX   | -08:00, +05:30, Z, +12:34:56      |       |\n * | Timezone (ISO-8601 w/o Z)       | x       | -08, +0530, +00                   |       |\n * |                                 | xx      | -0800, +0530, +0000               |       |\n * |                                 | xxx     | -08:00, +05:30, +00:00            | 2     |\n * |                                 | xxxx    | -0800, +0530, +0000, +123456      |       |\n * |                                 | xxxxx   | -08:00, +05:30, +00:00, +12:34:56 |       |\n * | Timezone (GMT)                  | O...OOO | GMT-8, GMT+5:30, GMT+0            |       |\n * |                                 | OOOO    | GMT-08:00, GMT+05:30, GMT+00:00   | 2     |\n * | Timezone (specific non-locat.)  | z...zzz | GMT-8, GMT+5:30, GMT+0            | 6     |\n * |                                 | zzzz    | GMT-08:00, GMT+05:30, GMT+00:00   | 2,6   |\n * | Seconds timestamp               | t       | 512969520                         | 7     |\n * |                                 | tt      | ...                               | 3,7   |\n * | Milliseconds timestamp          | T       | 512969520900                      | 7     |\n * |                                 | TT      | ...                               | 3,7   |\n * | Long localized date             | P       | 04/29/1453                        | 7     |\n * |                                 | PP      | Apr 29, 1453                      | 7     |\n * |                                 | PPP     | April 29th, 1453                  | 7     |\n * |                                 | PPPP    | Friday, April 29th, 1453          | 2,7   |\n * | Long localized time             | p       | 12:00 AM                          | 7     |\n * |                                 | pp      | 12:00:00 AM                       | 7     |\n * |                                 | ppp     | 12:00:00 AM GMT+2                 | 7     |\n * |                                 | pppp    | 12:00:00 AM GMT+02:00             | 2,7   |\n * | Combination of date and time    | Pp      | 04/29/1453, 12:00 AM              | 7     |\n * |                                 | PPpp    | Apr 29, 1453, 12:00:00 AM         | 7     |\n * |                                 | PPPppp  | April 29th, 1453 at ...           | 7     |\n * |                                 | PPPPpppp| Friday, April 29th, 1453 at ...   | 2,7   |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n *    are the same as \"stand-alone\" units, but are different in some languages.\n *    \"Formatting\" units are declined according to the rules of the language\n *    in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n *    `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n *    `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n *    the single quote characters (see below).\n *    If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n *    the output will be the same as default pattern for this unit, usually\n *    the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n *    are marked with \"2\" in the last column of the table.\n *\n *    `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n *    The output will be padded with zeros to match the length of the pattern.\n *\n *    `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n *    These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n *    | Year | `y` | `u` |\n *    |------|-----|-----|\n *    | AC 1 |   1 |   1 |\n *    | BC 1 |   1 |   0 |\n *    | BC 2 |   2 |  -1 |\n *\n *    Also `yy` always returns the last two digits of a year,\n *    while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n *    | Year | `yy` | `uu` |\n *    |------|------|------|\n *    | 1    |   01 |   01 |\n *    | 14   |   14 |   14 |\n *    | 376  |   76 |  376 |\n *    | 1453 |   53 | 1453 |\n *\n *    The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n *    except local week-numbering years are dependent on `options.weekStartsOn`\n *    and `options.firstWeekContainsDate` (compare [getISOWeekYear](https://date-fns.org/docs/getISOWeekYear)\n *    and [getWeekYear](https://date-fns.org/docs/getWeekYear)).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n *    so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n *    - `i`: ISO day of week\n *    - `I`: ISO week of year\n *    - `R`: ISO week-numbering year\n *    - `t`: seconds timestamp\n *    - `T`: milliseconds timestamp\n *    - `o`: ordinal number modifier\n *    - `P`: long localized date\n *    - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n *    You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n *    You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * @param date - The original date\n * @param format - The string of tokens\n * @param options - An object with options\n *\n * @returns The formatted date string\n *\n * @throws `date` must not be Invalid Date\n * @throws `options.locale` must contain `localize` property\n * @throws `options.locale` must contain `formatLong` property\n * @throws use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * const result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n *   locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * const result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\nexport function format(date, formatStr, options) {\n  const defaultOptions = getDefaultOptions();\n  const locale = options?.locale ?? defaultOptions.locale ?? defaultLocale;\n\n  const firstWeekContainsDate =\n    options?.firstWeekContainsDate ??\n    options?.locale?.options?.firstWeekContainsDate ??\n    defaultOptions.firstWeekContainsDate ??\n    defaultOptions.locale?.options?.firstWeekContainsDate ??\n    1;\n\n  const weekStartsOn =\n    options?.weekStartsOn ??\n    options?.locale?.options?.weekStartsOn ??\n    defaultOptions.weekStartsOn ??\n    defaultOptions.locale?.options?.weekStartsOn ??\n    0;\n\n  const originalDate = toDate(date, options?.in);\n\n  if (!isValid(originalDate)) {\n    throw new RangeError(\"Invalid time value\");\n  }\n\n  let parts = formatStr\n    .match(longFormattingTokensRegExp)\n    .map((substring) => {\n      const firstCharacter = substring[0];\n      if (firstCharacter === \"p\" || firstCharacter === \"P\") {\n        const longFormatter = longFormatters[firstCharacter];\n        return longFormatter(substring, locale.formatLong);\n      }\n      return substring;\n    })\n    .join(\"\")\n    .match(formattingTokensRegExp)\n    .map((substring) => {\n      // Replace two single quote characters with one single quote character\n      if (substring === \"''\") {\n        return { isToken: false, value: \"'\" };\n      }\n\n      const firstCharacter = substring[0];\n      if (firstCharacter === \"'\") {\n        return { isToken: false, value: cleanEscapedString(substring) };\n      }\n\n      if (formatters[firstCharacter]) {\n        return { isToken: true, value: substring };\n      }\n\n      if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n        throw new RangeError(\n          \"Format string contains an unescaped latin alphabet character `\" +\n            firstCharacter +\n            \"`\",\n        );\n      }\n\n      return { isToken: false, value: substring };\n    });\n\n  // invoke localize preprocessor (only for french locales at the moment)\n  if (locale.localize.preprocessor) {\n    parts = locale.localize.preprocessor(originalDate, parts);\n  }\n\n  const formatterOptions = {\n    firstWeekContainsDate,\n    weekStartsOn,\n    locale,\n  };\n\n  return parts\n    .map((part) => {\n      if (!part.isToken) return part.value;\n\n      const token = part.value;\n\n      if (\n        (!options?.useAdditionalWeekYearTokens &&\n          isProtectedWeekYearToken(token)) ||\n        (!options?.useAdditionalDayOfYearTokens &&\n          isProtectedDayOfYearToken(token))\n      ) {\n        warnOrThrowProtectedError(token, formatStr, String(date));\n      }\n\n      const formatter = formatters[token[0]];\n      return formatter(originalDate, token, locale.localize, formatterOptions);\n    })\n    .join(\"\");\n}\n\nfunction cleanEscapedString(input) {\n  const matched = input.match(escapedStringRegExp);\n\n  if (!matched) {\n    return input;\n  }\n\n  return matched[1].replace(doubleQuoteRegExp, \"'\");\n}\n\n// Fallback for modularized imports:\nexport default format;\n","import { min } from 'd3'\nimport { format } from 'date-fns/format'\nimport { Locale } from '../interfaces/components'\nimport { getProperty } from '@/tools'\nimport { TimeIntervalFormats, TimeIntervalNames, TimeScaleOptions } from '@/interfaces/axis-scales'\n\nexport const TIME_INTERVALS = [\n\t['15seconds', 15 * 1000],\n\t['minute', 60 * 1000],\n\t['30minutes', 30 * 60 * 1000],\n\t['hourly', 60 * 60 * 1000],\n\t['daily', 24 * 60 * 60 * 1000],\n\t['monthly', 30 * 24 * 60 * 60 * 1000],\n\t['quarterly', 3 * 30 * 24 * 60 * 60 * 1000],\n\t['yearly', 12 * 30 * 24 * 60 * 60 * 1000]\n]\n\n// Return true if the tick is a primary tick, false otherwise\nexport function isTickPrimary(\n\ttick: number,\n\ti: number,\n\tallTicks: Array<number>,\n\tinterval: string,\n\tshowDayName: boolean\n): boolean {\n\tconst isFirstTick = i === 0\n\tconst hasANewWeekStarted = Number(format(new Date(tick), 'c')) === 2\n\tconst isFirstQuarter = Number(format(new Date(tick), 'q')) === 1\n\tconst previousTick = i !== 0 ? allTicks[i - 1] : null\n\n\tswitch (interval) {\n\t\tcase '15seconds':\n\t\t\treturn (\n\t\t\t\tisFirstTick ||\n\t\t\t\tisDayOfMonthChanged(tick) ||\n\t\t\t\tisMonthChanged(tick, previousTick) ||\n\t\t\t\tisYearChanged(tick)\n\t\t\t)\n\t\tcase 'minute':\n\t\t\treturn (\n\t\t\t\tisFirstTick ||\n\t\t\t\tisDayOfMonthChanged(tick) ||\n\t\t\t\tisMonthChanged(tick, previousTick) ||\n\t\t\t\tisYearChanged(tick)\n\t\t\t)\n\t\tcase '30minutes':\n\t\t\treturn (\n\t\t\t\tisFirstTick ||\n\t\t\t\tisDayOfMonthChanged(tick) ||\n\t\t\t\tisMonthChanged(tick, previousTick) ||\n\t\t\t\tisYearChanged(tick)\n\t\t\t)\n\t\tcase 'hourly':\n\t\t\treturn (\n\t\t\t\tisFirstTick ||\n\t\t\t\tisDayOfMonthChanged(tick) ||\n\t\t\t\tisMonthChanged(tick, previousTick) ||\n\t\t\t\tisYearChanged(tick)\n\t\t\t)\n\t\tcase 'daily':\n\t\t\tif (!showDayName) {\n\t\t\t\t// daily\n\t\t\t\treturn isFirstTick || isMonthChanged(tick, previousTick) || isYearChanged(tick)\n\t\t\t} else {\n\t\t\t\t// weekly\n\t\t\t\treturn isFirstTick || hasANewWeekStarted || isYearChanged(tick)\n\t\t\t}\n\t\tcase 'weekly':\n\t\t\treturn isFirstTick || hasANewWeekStarted || isYearChanged(tick)\n\t\tcase 'monthly':\n\t\t\treturn isFirstTick || isYearChanged(tick)\n\t\tcase 'quarterly':\n\t\t\treturn isFirstTick || isFirstQuarter\n\t\tcase 'yearly':\n\t\t\treturn false\n\t\tdefault:\n\t\t\tthrow new Error(`${interval} is not a valid time interval.`)\n\t}\n}\n\n// Return the formatted current tick\nexport function formatTick(\n\ttick: number,\n\ti: number,\n\tallTicks: Array<number>,\n\tinterval: string,\n\ttimeScaleOptions: TimeScaleOptions,\n\tlocaleOptions?: Locale\n): string {\n\tconst showDayName = timeScaleOptions.showDayName\n\tconst intervalConsideringAlsoShowDayNameOption =\n\t\tinterval === 'daily' && showDayName ? 'weekly' : interval\n\tconst date = new Date(tick)\n\tconst formats = getProperty(timeScaleOptions, 'timeIntervalFormats')[\n\t\tintervalConsideringAlsoShowDayNameOption\n\t]\n\tconst primary = getProperty(formats, 'primary')\n\tconst secondary = getProperty(formats, 'secondary')\n\tconst primaryTickFlag = isTickPrimary(tick, i, allTicks, interval, showDayName)\n\tlet formatString = primaryTickFlag ? primary : secondary\n\n\t// if the interval, and the timestamp includes milliseconds value\n\tif (interval === '15seconds' && date.getMilliseconds() !== 0) {\n\t\t// show milliseconds in tick\n\t\tformatString = formatString.replace('pp', 'h:mm:ss.SSS a')\n\t}\n\n\tconst locale = timeScaleOptions.localeObject\n\tconst { code: localeCode, optionsObject } = localeOptions\n\tconst formatterType = optionsObject[interval]['type']\n\tconst formatterOptions =\n\t\toptionsObject[interval][primaryTickFlag ? 'primary' : 'secondary'][formatString]\n\n\tif (interval === 'quarterly' || !formatterOptions) {\n\t\tconst formattedDate = format(date, formatString, { locale })\n\t\tconst formatArr = formattedDate.split('').map(val => {\n\t\t\tconst num = Number(val)\n\t\t\tif (val !== ' ' && !Number.isNaN(num)) {\n\t\t\t\treturn num?.toLocaleString?.(localeCode)\n\t\t\t} else {\n\t\t\t\treturn val\n\t\t\t}\n\t\t})\n\t\treturn localeOptions[formatterType](date, localeCode, {}, formatArr.join(''))\n\t} else {\n\t\treturn localeOptions[formatterType](date, localeCode, formatterOptions)\n\t}\n}\n\n// Given a timestamp, return an object of useful time formats\n// Use Unicode date field symbol (https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table)\nexport function getTimeformats(timestamp: number) {\n\tconst date = new Date(timestamp)\n\treturn {\n\t\tM: date.getMonth() + 1, // month: 1-12\n\t\td: date.getDate(), // day of the month: 1-31\n\t\tH: date.getHours(), // 24-hour clock: 0-23\n\t\tm: date.getMinutes(), // minute: 0-59\n\t\ts: date.getSeconds() // seconds: 0-59\n\t}\n}\n\n// Find the differences between consecutive numbers in an array\nfunction getConsecutiveDifferences(elements: number[]): number[] {\n\tif (!elements) {\n\t\treturn\n\t}\n\treturn elements.slice(1).map((elem, i) => elem - elements[i])\n}\n\n// Given a duration in ms, return the closest TIME_INTERVAL name\nfunction closestTimeIntervalName(duration: number): string {\n\tconst index = TIME_INTERVALS.reduce((nearestIndex, [, delta]: [string, number], i) => {\n\t\tconst deltaNearest = TIME_INTERVALS[nearestIndex][1] as number\n\t\tconst oldNearestSpan = Math.abs(deltaNearest - duration)\n\t\tconst currentSpan = Math.abs(delta - duration)\n\t\treturn oldNearestSpan < currentSpan ? nearestIndex : i\n\t}, 0)\n\treturn TIME_INTERVALS[index][0] as string\n}\n\n// Given an array of timestamps, return the interval name\n// between 15seconds, minute, 30minutes, hourly, daily, weekly, monthly, quarterly, yearly\nexport function computeTimeIntervalName(\n\tticks: number[],\n\tintervalOverride?: keyof TimeIntervalFormats\n): string {\n\tif (TimeIntervalNames[intervalOverride]) {\n\t\treturn intervalOverride\n\t}\n\n\t// special case: if the dataset has only one datum, we show the tick in the most detailed way possible\n\tif (ticks.length === 1) {\n\t\treturn '15seconds'\n\t}\n\tconst differences = getConsecutiveDifferences(ticks)\n\tconst minDifference = min(differences)\n\treturn closestTimeIntervalName(minDifference)\n}\n\n// Return true if the day of the month (D = 1-31) is changed, false otherwise\nfunction isDayOfMonthChanged(timestamp: number): boolean {\n\tconst { s, m, H } = getTimeformats(timestamp)\n\treturn H === 0 && m === 0 && s === 0\n}\n\n// Return true if the month (M = 1-12) is changed from previous tick's timestamp, false otherwise\nfunction isMonthChanged(timestamp: number, previousTimestamp?: number): boolean {\n\tconst currentMonth = getTimeformats(timestamp).M\n\tconst previousMonth = getTimeformats(previousTimestamp).M\n\treturn currentMonth !== previousMonth\n}\n\n// Return true if the year (YYYY) is changed, false otherwise\nfunction isYearChanged(timestamp: number): boolean {\n\tconst { M, d, s, m, H } = getTimeformats(timestamp)\n\treturn M === 1 && d === 1 && H === 0 && m === 0 && s === 0\n}\n\n// Return string value of Date with milliseconds\nexport function formatDateTillMilliSeconds(date: Date) {\n\tif (date === undefined) {\n\t\treturn ''\n\t}\n\n\t// The only valid format with millisecond is ISO 8601\n\treturn date.toISOString()\n}\n","import { extent, scaleLinear, scaleQuantize } from 'd3'\nimport { isEmpty } from 'lodash-es'\nimport { getProperty } from '@/tools'\n\nexport function getDomain(data: any) {\n\tconst limits = extent(data, (d: any) => d.value)\n\tconst domain = scaleLinear()\n\t\t.domain(limits as [number, number])\n\t\t.nice()\n\t\t.domain()\n\n\t// Ensuring limits start at 0 to make scale look more `nicer`\n\tif (domain[0] > 0) {\n\t\tdomain[0] = 0\n\t} else if (domain[0] === 0 && domain[1] === 0) {\n\t\t// Range cannot be between 0 and 0 (itself)\n\t\treturn [0, 1]\n\t}\n\n\t// Ensure the median of the range is 0 if domain extends into both negative & positive\n\tif (domain[0] < 0 && domain[1] > 0) {\n\t\tif (Math.abs(domain[0]) > domain[1]) {\n\t\t\tdomain[1] = Math.abs(domain[0])\n\t\t} else {\n\t\t\tdomain[0] = -domain[1]\n\t\t}\n\t}\n\n\treturn domain\n}\n\nexport function getColorScale(displayData: any, colorOptions: any) {\n\tconst customColors = getProperty(colorOptions, 'gradient', 'colors')\n\tconst customColorsEnabled = !isEmpty(customColors)\n\n\tlet colorPairingOption = getProperty(colorOptions, 'pairing', 'option')\n\n\t// If domain consists of negative and positive values, use diverging palettes\n\tconst domain = getDomain(displayData)\n\tconst colorScheme = domain[0] < 0 && domain[1] > 0 ? 'diverge' : 'mono'\n\n\t// Use default color pairing options if not in defined range\n\tif (colorPairingOption < 1 && colorPairingOption > 4 && colorScheme === 'mono') {\n\t\tcolorPairingOption = 1\n\t} else if (colorPairingOption < 1 && colorPairingOption > 2 && colorScheme === 'diverge') {\n\t\tcolorPairingOption = 1\n\t}\n\n\t// Uses CSS classes for fill\n\tconst colorPairing = customColorsEnabled ? customColors : []\n\n\tif (!customColorsEnabled) {\n\t\t// Add class names to list and the amount based on the color scheme\n\t\t// Carbon charts has 11 colors for a single monochromatic palette & 17 for a divergent palette\n\t\tconst colorGroupingLength = colorScheme === 'diverge' ? 17 : 11\n\t\tfor (let i = 1; i < colorGroupingLength + 1; i++) {\n\t\t\tcolorPairing.push(`fill-${colorScheme}-${colorPairingOption}-${i}`)\n\t\t}\n\t}\n\n\t// Return generated color scale\n\treturn scaleQuantize()\n\t\t.domain(domain as [number, number])\n\t\t.range(colorPairing)\n}\n"],"names":["buildFormatLongFn","args","options","width","buildLocalizeFn","value","context","valuesArray","defaultWidth","index","buildMatchFn","string","matchPattern","matchResult","matchedString","parsePatterns","key","findIndex","pattern","findKey","rest","object","predicate","array","buildMatchPatternFn","parseResult","millisecondsInWeek","millisecondsInDay","millisecondsInMinute","millisecondsInHour","constructFromSymbol","constructFrom","date","normalizeDates","dates","normalize","defaultOptions","getDefaultOptions","toDate","argument","startOfWeek","weekStartsOn","_date","day","diff","formatDistanceLocale","formatDistance","token","count","result","tokenValue","formatRelativeLocale","formatRelative","_baseDate","_options","eraValues","quarterValues","monthValues","dayValues","dayPeriodValues","formattingDayPeriodValues","ordinalNumber","dirtyNumber","number","rem100","localize","quarter","matchOrdinalNumberPattern","parseOrdinalNumberPattern","matchEraPatterns","parseEraPatterns","matchQuarterPatterns","parseQuarterPatterns","matchMonthPatterns","parseMonthPatterns","matchDayPatterns","parseDayPatterns","matchDayPeriodPatterns","parseDayPeriodPatterns","match","dateFormats","timeFormats","dateTimeFormats","formatLong","enUS","freeGlobal","freeSelf","root","Symbol","objectProto","hasOwnProperty","nativeObjectToString","symToStringTag","getRawTag","isOwn","tag","unmasked","objectToString","nullTag","undefinedTag","baseGetTag","isObjectLike","symbolTag","isSymbol","arrayMap","iteratee","length","isArray","symbolProto","symbolToString","baseToString","isObject","type","identity","asyncTag","funcTag","genTag","proxyTag","isFunction","coreJsData","maskSrcKey","uid","isMasked","func","funcProto","funcToString","toSource","reRegExpChar","reIsHostCtor","reIsNative","baseIsNative","getValue","getNative","WeakMap","objectCreate","baseCreate","proto","apply","thisArg","noop","copyArray","source","HOT_COUNT","HOT_SPAN","nativeNow","shortOut","lastCalled","stamp","remaining","constant","defineProperty","baseSetToString","setToString","arrayEach","baseFindIndex","fromIndex","fromRight","baseIsNaN","strictIndexOf","baseIndexOf","arrayIncludes","MAX_SAFE_INTEGER","reIsUint","isIndex","baseAssignValue","eq","other","assignValue","objValue","copyObject","props","customizer","isNew","newValue","nativeMax","overRest","start","transform","otherArgs","baseRest","isLength","isArrayLike","isIterateeCall","createAssigner","assigner","sources","guard","isPrototype","Ctor","baseTimes","n","argsTag","baseIsArguments","propertyIsEnumerable","isArguments","stubFalse","freeExports","freeModule","moduleExports","Buffer","nativeIsBuffer","isBuffer","arrayTag","boolTag","dateTag","errorTag","mapTag","numberTag","objectTag","regexpTag","setTag","stringTag","weakMapTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","typedArrayTags","baseIsTypedArray","baseUnary","freeProcess","nodeUtil","types","nodeIsTypedArray","isTypedArray","arrayLikeKeys","inherited","isArr","isArg","isBuff","isType","skipIndexes","overArg","arg","nativeKeys","baseKeys","keys","nativeKeysIn","baseKeysIn","isProto","keysIn","reIsDeepProp","reIsPlainProp","isKey","nativeCreate","hashClear","hashDelete","HASH_UNDEFINED","hashGet","data","hashHas","hashSet","Hash","entries","entry","listCacheClear","assocIndexOf","arrayProto","splice","listCacheDelete","lastIndex","listCacheGet","listCacheHas","listCacheSet","ListCache","Map","mapCacheClear","isKeyable","getMapData","map","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","size","MapCache","FUNC_ERROR_TEXT","memoize","resolver","memoized","cache","MAX_MEMOIZE_SIZE","memoizeCapped","rePropName","reEscapeChar","stringToPath","quote","subString","toString","castPath","toKey","baseGet","path","get","defaultValue","arrayPush","values","offset","spreadableSymbol","isFlattenable","baseFlatten","depth","isStrict","getPrototype","objectCtorString","isPlainObject","stackClear","stackDelete","stackGet","stackHas","LARGE_ARRAY_SIZE","stackSet","pairs","Stack","baseAssign","baseAssignIn","allocUnsafe","cloneBuffer","buffer","isDeep","arrayFilter","resIndex","stubArray","nativeGetSymbols","getSymbols","symbol","copySymbols","getSymbolsIn","copySymbolsIn","baseGetAllKeys","keysFunc","symbolsFunc","getAllKeys","getAllKeysIn","DataView","Promise","Set","promiseTag","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","getTag","ctorString","initCloneArray","Uint8Array","cloneArrayBuffer","arrayBuffer","cloneDataView","dataView","reFlags","cloneRegExp","regexp","symbolValueOf","cloneSymbol","cloneTypedArray","typedArray","initCloneByTag","initCloneObject","baseIsMap","nodeIsMap","isMap","baseIsSet","nodeIsSet","isSet","CLONE_DEEP_FLAG","CLONE_FLAT_FLAG","CLONE_SYMBOLS_FLAG","cloneableTags","baseClone","bitmask","stack","isFlat","isFull","isFunc","stacked","subValue","cloneDeep","setCacheAdd","setCacheHas","SetCache","arraySome","cacheHas","COMPARE_PARTIAL_FLAG","COMPARE_UNORDERED_FLAG","equalArrays","equalFunc","isPartial","arrLength","othLength","arrStacked","othStacked","seen","arrValue","othValue","compared","othIndex","mapToArray","setToArray","set","equalByTag","convert","equalObjects","objProps","objLength","othProps","objStacked","skipCtor","objCtor","othCtor","baseIsEqualDeep","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","baseIsEqual","baseIsMatch","matchData","srcValue","isStrictComparable","getMatchData","matchesStrictComparable","baseMatches","baseHasIn","hasPath","hasFunc","hasIn","baseMatchesProperty","baseProperty","basePropertyDeep","property","baseIteratee","createBaseFor","iterable","baseFor","assignMergeValue","isArrayLikeObject","safeGet","toPlainObject","baseMergeDeep","srcIndex","mergeFunc","isCommon","isTyped","baseMerge","last","isEmpty","merge","INFINITY","createSet","baseUniq","comparator","includes","outer","computed","seenIndex","unionBy","arrays","uniq","ascending","a","b","descending","bisector","f","compare1","compare2","delta","d","x","zero","left","lo","hi","mid","right","center","i","numbers","valueof","ascendingBisect","bisectRight","extent","min","max","InternMap","keyof","intern_get","intern_set","intern_delete","_intern","_key","e10","e5","e2","tickSpec","stop","step","power","error","factor","i1","i2","inc","ticks","reverse","tickIncrement","tickStep","dispatch","_","t","Dispatch","parseTypenames","typenames","name","typename","callback","T","copy","that","c","xhtml","namespaces","namespace","prefix","creatorInherit","document","uri","creatorFixed","fullname","creator","none","selector","selection_select","select","groups","m","subgroups","j","group","subgroup","node","subnode","Selection","empty","selectorAll","arrayAll","selection_selectAll","parents","matcher","childMatcher","find","childFind","childFirst","selection_selectChild","filter","children","childrenFilter","selection_selectChildren","selection_filter","sparse","update","selection_enter","EnterNode","parent","datum","child","next","constant$1","bindIndex","enter","exit","groupLength","dataLength","bindKey","nodeByKeyValue","keyValues","keyValue","selection_data","bind","arraylike","enterGroup","updateGroup","exitGroup","i0","previous","selection_exit","selection_join","onenter","onupdate","onexit","selection_merge","selection","groups0","groups1","m0","m1","merges","group0","group1","selection_order","selection_sort","compare","compareNode","sortgroups","sortgroup","selection_call","selection_nodes","selection_node","selection_size","selection_empty","selection_each","attrRemove","attrRemoveNS","attrConstant","attrConstantNS","attrFunction","v","attrFunctionNS","selection_attr","defaultView","styleRemove","styleConstant","priority","styleFunction","selection_style","styleValue","propertyRemove","propertyConstant","propertyFunction","selection_property","classArray","classList","ClassList","classedAdd","names","list","classedRemove","classedTrue","classedFalse","classedFunction","selection_classed","textRemove","textConstant","textFunction","selection_text","htmlRemove","htmlConstant","htmlFunction","selection_html","raise","selection_raise","lower","selection_lower","selection_append","create","constantNull","selection_insert","before","remove","selection_remove","selection_cloneShallow","clone","selection_cloneDeep","selection_clone","deep","selection_datum","contextListener","listener","event","onRemove","on","o","onAdd","selection_on","dispatchEvent","params","window","dispatchConstant","dispatchFunction","selection_dispatch","selection_iterator","selection_selection","sourceEvent","pointer","svg","point","rect","define","constructor","factory","prototype","extend","definition","Color","darker","brighter","reI","reN","reP","reHex","reRgbInteger","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","color","channels","color_formatHex","color_formatHex8","color_formatHsl","color_formatRgb","hslConvert","format","l","rgbn","Rgb","rgba","hsla","r","g","rgbConvert","rgb","opacity","k","clampi","clampa","rgb_formatHex","rgb_formatHex8","rgb_formatRgb","hex","h","s","Hsl","hsl","m2","hsl2rgb","clamph","clampt","linear","exponential","y","gamma","nogamma","interpolateRgb","rgbGamma","end","colorRgb","numberArray","isNumberArray","genericArray","nb","na","interpolateNumber","reA","reB","one","interpolateString","bi","am","bm","bs","q","interpolate$1","interpolateRound","degrees","decompose","e","scaleX","scaleY","skewX","svgNode","parseCss","parseSvg","interpolateTransform","parse","pxComma","pxParen","degParen","pop","translate","xa","ya","xb","yb","rotate","scale","interpolateTransformCss","interpolateTransformSvg","frame","timeout","interval","pokeDelay","taskHead","taskTail","clockLast","clockNow","clockSkew","clock","setFrame","now","clearNow","Timer","timer","delay","time","sleep","timerFlush","wake","nap","poke","t0","t1","t2","elapsed","emptyOn","emptyTween","CREATED","SCHEDULED","STARTING","STARTED","RUNNING","ENDING","ENDED","schedule","id","timing","schedules","init","self","tween","tick","interrupt","active","selection_interrupt","tweenRemove","tween0","tween1","tweenFunction","transition_tween","tweenValue","transition","interpolate","value1","string00","string1","interpolate0","string0","string10","transition_attr","attrInterpolate","attrInterpolateNS","attrTweenNS","attrTween","transition_attrTween","delayFunction","delayConstant","transition_delay","durationFunction","durationConstant","transition_duration","easeConstant","transition_ease","easeVarying","transition_easeVarying","transition_filter","Transition","transition_merge","onFunction","on0","on1","sit","transition_on","removeFunction","transition_remove","transition_select","transition_selectAll","inherit","transition_selection","styleNull","style","styleMaybeRemove","listener0","transition_style","styleInterpolate","styleTween","transition_styleTween","transition_text","textInterpolate","textTween","transition_textTween","transition_transition","id0","id1","newId","transition_end","resolve","reject","cancel","selection_prototype","cubicInOut","defaultTiming","easeCubicInOut","selection_transition","formatDecimal","formatDecimalParts","p","coefficient","exponent","formatGroup","grouping","thousands","formatNumerals","numerals","re","formatSpecifier","specifier","FormatSpecifier","formatTrim","out","prefixExponent","formatPrefixAuto","formatRounded","formatTypes","identity$1","prefixes","formatLocale","locale","currencyPrefix","currencySuffix","decimal","percent","minus","nan","newFormat","fill","align","sign","comma","precision","trim","suffix","formatType","maybeSuffix","valuePrefix","valueSuffix","valueNegative","padding","formatPrefix","defaultLocale","precisionFixed","precisionPrefix","precisionRound","initRange","domain","range","implicit","ordinal","unknown","constants","unit","clamper","bimap","d0","d1","r0","r1","polymap","bisect","target","transformer","interpolateValue","untransform","clamp","piecewise","output","input","rescale","u","continuous","tickFormat","linearish","prestep","maxIter","quantize","x0","x1","Transform","location","carbonPrefix","area","axis","canvasZoomSettings","circlePack","boxplot","histogram","legend","lines","meter","pie","radar","alluvial","heatmap","spacers","tooltips","transitions","toolbar","zoomBar","ZoomBarTypes","defaultLegendAdditionalItems","LegendItemType","standardTruncationOptions","TruncationTypes","AXIS_TITLE_POSITIONING_OFFSET","language","preformattedLocaleValue","LegendPositions","Alignments","grid","ruler","baseTooltip","axes","timeScale","localeObject","isFullScreenEnabled","chart","ChartTheme","ToolbarControlTypes","thematicChart","Projection","axisChart","baseBarChart","simpleBarChart","groupedBarChart","stackedBarChart","boxplotChart","scatterChart","lollipopChart","lineChart","areaChart","stackedAreaChart","bubbleChart","chartSize","smallerChartDimension","bulletChart","histogramChart","wordCloudChart","pieChart","gaugeChart","GaugeTypes","radius","donutChart","meterChart","proportionalMeterChart","radarChart","comboChart","treeChart","TreeTypes","treemapChart","circlePackChart","alluvialChart","heatmapChart","DividerStatus","choroplethChart","debounceWithD3MousePosition","fn","holder","mergeDefaultChartOptions","providedOptions","clonedDefaultOptions","providedAxesNames","axisName","providedAxisOptions","identifier","scaleType","ScaleTypes","updateLegendAdditionalItems","getDimensions","el","getTranslationValues","elementRef","translateRegex","transformStr","transforms","getTransformOffsets","xyString","formatWidthHeightValues","stringValue","capitalizeFirstLetter","word","convertValueToPercentage","item","fullData","entireValue","percentage","accum","val","truncateLabel","fullText","truncationType","numCharacter","defaultAdditionalItems","getProperty","userProvidedAdditionalItems","providedTypes","defaultTypes","updatedDefaultItems","arrayDifferences","oldArray","newArray","difference","element","getDuplicateValues","arr","duplicateValues","moveToFront","propPath","position","prop","flipSVGCoordinatesBasedOnOrientation","verticalCoordinates","orientation","CartesianOrientations","generateSVGPathString","y0","y1","flipDomainAndRangeBasedOnOrientation","compareNumeric","getTimezoneOffsetInMilliseconds","utcDate","startOfDay","differenceInCalendarDays","laterDate","earlierDate","laterDate_","earlierDate_","laterStartOfDay","earlierStartOfDay","laterTimestamp","earlierTimestamp","startOfYear","date_","getDayOfYear","startOfISOWeek","getISOWeekYear","year","fourthOfJanuaryOfNextYear","startOfNextYear","fourthOfJanuaryOfThisYear","startOfThisYear","startOfISOWeekYear","fourthOfJanuary","getISOWeek","getWeekYear","firstWeekContainsDate","firstWeekOfNextYear","firstWeekOfThisYear","startOfWeekYear","firstWeek","getWeek","addLeadingZeros","targetLength","lightFormatters","signedYear","month","dayPeriodEnumValue","numberOfDigits","milliseconds","fractionalSeconds","dayPeriodEnum","formatters","era","signedWeekYear","weekYear","twoDigitYear","isoWeekYear","week","isoWeek","dayOfYear","dayOfWeek","localDayOfWeek","isoDayOfWeek","hours","_localize","timezoneOffset","formatTimezoneWithOptionalMinutes","formatTimezone","formatTimezoneShort","timestamp","delimiter","absOffset","minutes","dateLongFormatter","timeLongFormatter","dateTimeLongFormatter","datePattern","timePattern","dateTimeFormat","longFormatters","dayOfYearTokenRE","weekYearTokenRE","throwTokens","isProtectedDayOfYearToken","isProtectedWeekYearToken","warnOrThrowProtectedError","_message","message","subject","isDate","isValid","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","unescapedLatinCharacterRegExp","formatStr","originalDate","parts","substring","firstCharacter","longFormatter","cleanEscapedString","formatterOptions","part","formatter","matched","TIME_INTERVALS","isTickPrimary","allTicks","showDayName","isFirstTick","hasANewWeekStarted","isFirstQuarter","previousTick","isDayOfMonthChanged","isMonthChanged","isYearChanged","formatTick","timeScaleOptions","localeOptions","intervalConsideringAlsoShowDayNameOption","formats","primary","secondary","primaryTickFlag","formatString","localeCode","optionsObject","formatterType","formatArr","num","getTimeformats","getConsecutiveDifferences","elements","elem","closestTimeIntervalName","duration","nearestIndex","deltaNearest","oldNearestSpan","currentSpan","computeTimeIntervalName","intervalOverride","TimeIntervalNames","differences","minDifference","H","previousTimestamp","currentMonth","previousMonth","M","formatDateTillMilliSeconds","getDomain","limits","scaleLinear","getColorScale","displayData","colorOptions","customColors","customColorsEnabled","colorPairingOption","colorScheme","colorPairing","colorGroupingLength","scaleQuantize"],"mappings":"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","x_google_ignoreList":[0,1,2,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,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345]}