{"version":3,"file":"application.js","sources":["../../javascript/hpt_exam.js","../../javascript/hpt_replay.js","../../javascript/libraries.js","../../javascript/quiz.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/select.js","../../../node_modules/d3-shape/src/constant.js","../../../node_modules/d3-shape/src/math.js","../../../node_modules/d3-path/src/path.js","../../../node_modules/d3-shape/src/path.js","../../../node_modules/d3-shape/src/arc.js","../../../node_modules/d3-shape/src/array.js","../../../node_modules/d3-shape/src/curve/linear.js","../../../node_modules/d3-shape/src/point.js","../../../node_modules/d3-shape/src/line.js","../../../node_modules/d3-shape/src/curve/cardinal.js","../../../node_modules/d3-time/src/interval.js","../../../node_modules/d3-time/src/duration.js","../../../node_modules/d3-time/src/day.js","../../../node_modules/d3-time/src/week.js","../../../node_modules/d3-time/src/year.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/internmap/src/index.js","../../../node_modules/d3-array/src/identity.js","../../../node_modules/d3-array/src/group.js","../../../node_modules/d3-array/src/ticks.js","../../../node_modules/d3-array/src/max.js","../../../node_modules/d3-array/src/mean.js","../../../node_modules/d3-array/src/range.js","../../../node_modules/d3-array/src/sum.js","../../../node_modules/d3-time-format/src/locale.js","../../../node_modules/d3-time-format/src/defaultLocale.js","../../../node_modules/d3-scale/src/init.js","../../../node_modules/d3-scale/src/ordinal.js","../../../node_modules/d3-scale/src/band.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-scale/src/constant.js","../../../node_modules/d3-scale/src/number.js","../../../node_modules/d3-scale/src/continuous.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/tickFormat.js","../../../node_modules/d3-scale/src/linear.js","../../../node_modules/d3-axis/src/identity.js","../../../node_modules/d3-axis/src/axis.js","../../javascript/student.js","../../javascript/students_list.js","../../javascript/translations.js","../../javascript/timer.js","../../javascript/combobox.js","../../javascript/availability_picker.js","../../javascript/application.js"],"sourcesContent":["function hptPlayerClick(videoEl, formEl) {\n if (window.submitted) return;\n\n const taps = [];\n const tapEls = formEl.querySelectorAll(\"input[name='taps[]']\");\n for (let idx = 0; idx < tapEls.length; idx++) {\n taps.push(parseFloat(tapEls[idx].value));\n }\n\n const ts = videoEl.currentTime;\n const tap = document.createElement(\"input\");\n tap.type = \"hidden\";\n tap.name = \"taps[]\";\n tap.value = ts;\n formEl.appendChild(tap);\n if (isValidAttempt([...taps, ts])) {\n addFlag();\n } else {\n formEl.submit();\n window.submitted = true;\n }\n}\n\nfunction addFlag() {\n const flagsEl = document.getElementById(\"hpt-flags-container\");\n const flag = document.createElement(\"img\");\n flag.src = flagsEl.dataset.flag;\n flag.classList.add(\"mr-1\");\n flag.classList.add(\"select-none\");\n flagsEl.appendChild(flag);\n}\n\nfunction isValidAttempt(taps, window = 7, maxTaps = 7) {\n if (taps.length < maxTaps) {\n return true;\n }\n\n for (let idx = 0; idx < taps.length; idx++) {\n const rest = taps.slice(idx);\n if (rest.length < maxTaps) continue;\n\n const ts = taps[idx];\n if (rest.filter((other) => other <= ts + window).length >= maxTaps) return false;\n }\n\n return true;\n}\n\nexport function hptToggleFullscreen() {\n const container = document.getElementById(\"hpt-container\");\n const expand = document.getElementById(\"hpt-video-expand\");\n const compress = document.getElementById(\"hpt-video-compress\");\n\n if (expand.classList.contains(\"hidden\")) {\n // compress\n expand.classList.remove(\"hidden\");\n compress.classList.add(\"hidden\");\n container.classList.remove(\"fullscreen-player\");\n container.classList.add(\"relative\");\n } else {\n // expand\n expand.classList.add(\"hidden\");\n compress.classList.remove(\"hidden\");\n container.classList.add(\"fullscreen-player\");\n container.classList.remove(\"relative\");\n }\n}\n\nfunction showAnswerArea(e) {\n if (e.target.currentTime > 0) {\n document.getElementById(\"hpt-answer-area\")?.classList?.remove(\"hidden\");\n document.getElementById(\"hpt-video\").removeEventListener(\"timeupdate\", showAnswerArea);\n }\n}\n\nwindow.addEventListener(\"load\", () => {\n const video = document.getElementById(\"hpt-video\");\n if (!video) {\n return;\n }\n\n video.addEventListener(\"timeupdate\", showAnswerArea);\n video.addEventListener(\"ended\", () => {\n document.getElementById(\"hpt-attempt-form\")?.submit();\n window.submitted = true;\n });\n\n document.getElementById(\"hpt-answer-area\").addEventListener(\"click\", () => {\n hptPlayerClick(video, document.getElementById(\"hpt-attempt-form\"));\n });\n\n document.getElementById(\"hpt-video-fs\").addEventListener(\"click\", () => {\n hptToggleFullscreen();\n });\n});\n","import { hptToggleFullscreen } from \"./hpt_exam\";\n\nconst BORDER_COLORS = [\"#eb5757\", \"#eb5757\", \"#f2994a\", \"#f2994a\", \"#40b04e\", \"#40b04e\"];\n\nwindow.addEventListener(\"load\", () => {\n const replayVideo = document.getElementById(\"hpt-replay-video\");\n if (!replayVideo) {\n return;\n }\n\n replayVideo.addEventListener(\"click\", () => {\n replayVideo.paused ? replayVideo.play() : replayVideo.pause();\n });\n document.getElementById(\"hpt-video-fs\").addEventListener(\"click\", () => {\n hptToggleFullscreen();\n });\n\n const slider = document.getElementById(\"hpt-replay-slider\");\n if (replayVideo.duration) {\n setupViews(slider, replayVideo.duration);\n }\n replayVideo.addEventListener(\"durationchange\", (e) => setupViews(slider, e.target.duration));\n\n let dragging = false;\n const replayData = document.getElementById(\"hpt-replay-data\");\n const description = document.getElementById(\"hpt-replay-description\");\n const score = document.getElementById(\"hpt-replay-score\");\n replayVideo.addEventListener(\"timeupdate\", (e) => {\n const ts = e.target.currentTime;\n if (!dragging) slider.value = ts;\n\n const trap = findTrap(ts);\n if (!trap) {\n replayData.classList.add(\"invisible\");\n return;\n }\n\n description.innerHTML = trap.description;\n score.innerHTML = trap.score;\n score.style.borderColor = BORDER_COLORS[trap.score];\n replayData.classList.remove(\"invisible\");\n });\n\n slider.addEventListener(\"change\", (e) => (replayVideo.currentTime = e.target.value));\n slider.addEventListener(\"mousedown\", () => (dragging = true));\n slider.addEventListener(\"mouseup\", () => (dragging = false));\n});\n\nfunction setupViews(slider, duration) {\n slider.max = duration;\n\n const flags = document.querySelectorAll(\".replay-flag\");\n for (let idx = 0; idx < flags.length; idx++) {\n const flag = flags[idx];\n flag.style.left = `${(parseFloat(flag.dataset.ts) / duration) * 100}%`;\n flag.classList.remove(\"hidden\");\n }\n\n const traps = document.querySelectorAll(\".replay-trap\");\n for (let idx = 0; idx < traps.length; idx++) {\n const trap = traps[idx];\n trap.style.left = `${(parseFloat(trap.dataset.start) / duration) * 100}%`;\n trap.style.width = `${((trap.dataset.end - trap.dataset.start) / duration) * 100}%`;\n trap.classList.remove(\"hidden\");\n }\n}\n\nfunction findTrap(ts) {\n const traps = document.querySelectorAll(\".replay-trap\");\n for (let idx = 0; idx < traps.length; idx++) {\n const trap = traps[idx];\n const start = parseFloat(trap.dataset.start);\n const end = parseFloat(trap.dataset.end);\n if (ts >= start - 1 && ts <= end) {\n const step = (end - start) / 5;\n const score = ts < start ? \"!\" : `${Math.ceil(5 - (ts - start) / step)}`;\n return { description: trap.dataset.description, score };\n }\n }\n\n return null;\n}\n","window.addEventListener(\"load\", () => {\n const filterInput = document.getElementById(\"library-filter\");\n if (!filterInput) return;\n\n filterInput.addEventListener(\"keyup\", function () {\n const filter = this.value;\n\n for (const item of document.querySelectorAll(\"#libraries-list a\")) {\n if (caseNonsensitiveIncludes(item.textContent, filter)) {\n item.classList.remove(\"hidden\");\n } else {\n item.classList.add(\"hidden\");\n }\n }\n });\n});\n\nfunction caseNonsensitiveIncludes(string1, string2) {\n return string1.toUpperCase().includes(string2.toUpperCase());\n}\n","window.addEventListener(\"load\", () => {\n const toggle = document.getElementById(\"translation-toggle\");\n if (!toggle) return;\n\n const block = document.getElementById(\"translation-block\");\n if (toggle.checked) {\n block.classList.remove(\"hidden\");\n } else {\n block.classList.add(\"hidden\");\n }\n\n toggle.onchange = () => {\n if (toggle.checked) {\n block.classList.remove(\"hidden\");\n } else {\n block.classList.add(\"hidden\");\n }\n };\n});\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","import {Selection, root} from \"./selection/index.js\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n : new Selection([[selector]], root);\n}\n","export default function(x) {\n return function constant() {\n return x;\n };\n}\n","export const abs = Math.abs;\nexport const atan2 = Math.atan2;\nexport const cos = Math.cos;\nexport const max = Math.max;\nexport const min = Math.min;\nexport const sin = Math.sin;\nexport const sqrt = Math.sqrt;\n\nexport const epsilon = 1e-12;\nexport const pi = Math.PI;\nexport const halfPi = pi / 2;\nexport const tau = 2 * pi;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n","const pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction append(strings) {\n this._ += strings[0];\n for (let i = 1, n = strings.length; i < n; ++i) {\n this._ += arguments[i] + strings[i];\n }\n}\n\nfunction appendRound(digits) {\n let d = Math.floor(digits);\n if (!(d >= 0)) throw new Error(`invalid digits: ${digits}`);\n if (d > 15) return append;\n const k = 10 ** d;\n return function(strings) {\n this._ += strings[0];\n for (let i = 1, n = strings.length; i < n; ++i) {\n this._ += Math.round(arguments[i] * k) / k + strings[i];\n }\n };\n}\n\nexport class Path {\n constructor(digits) {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n this._append = digits == null ? append : appendRound(digits);\n }\n moveTo(x, y) {\n this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}`;\n }\n closePath() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._append`Z`;\n }\n }\n lineTo(x, y) {\n this._append`L${this._x1 = +x},${this._y1 = +y}`;\n }\n quadraticCurveTo(x1, y1, x, y) {\n this._append`Q${+x1},${+y1},${this._x1 = +x},${this._y1 = +y}`;\n }\n bezierCurveTo(x1, y1, x2, y2, x, y) {\n this._append`C${+x1},${+y1},${+x2},${+y2},${this._x1 = +x},${this._y1 = +y}`;\n }\n arcTo(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(`negative radius: ${r}`);\n\n let x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._append`M${this._x1 = x1},${this._y1 = y1}`;\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon));\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._append`L${this._x1 = x1},${this._y1 = y1}`;\n }\n\n // Otherwise, draw an arc!\n else {\n let x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._append`L${x1 + t01 * x01},${y1 + t01 * y01}`;\n }\n\n this._append`A${r},${r},0,0,${+(y01 * x20 > x01 * y20)},${this._x1 = x1 + t21 * x21},${this._y1 = y1 + t21 * y21}`;\n }\n }\n arc(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r, ccw = !!ccw;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(`negative radius: ${r}`);\n\n let dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._append`M${x0},${y0}`;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._append`L${x0},${y0}`;\n }\n\n // Is this arc empty? We’re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._append`A${r},${r},0,1,${cw},${x - dx},${y - dy}A${r},${r},0,1,${cw},${this._x1 = x0},${this._y1 = y0}`;\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._append`A${r},${r},0,${+(da >= pi)},${cw},${this._x1 = x + r * Math.cos(a1)},${this._y1 = y + r * Math.sin(a1)}`;\n }\n }\n rect(x, y, w, h) {\n this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}h${w = +w}v${+h}h${-w}Z`;\n }\n toString() {\n return this._;\n }\n}\n\nexport function path() {\n return new Path;\n}\n\n// Allow instanceof d3.path\npath.prototype = Path.prototype;\n\nexport function pathRound(digits = 3) {\n return new Path(+digits);\n}\n","import {Path} from \"d3-path\";\n\nexport function withPath(shape) {\n let digits = 3;\n\n shape.digits = function(_) {\n if (!arguments.length) return digits;\n if (_ == null) {\n digits = null;\n } else {\n const d = Math.floor(_);\n if (!(d >= 0)) throw new RangeError(`invalid digits: ${_}`);\n digits = d;\n }\n return shape;\n };\n\n return () => new Path(digits);\n}\n","import constant from \"./constant.js\";\nimport {abs, acos, asin, atan2, cos, epsilon, halfPi, max, min, pi, sin, sqrt, tau} from \"./math.js\";\nimport {withPath} from \"./path.js\";\n\nfunction arcInnerRadius(d) {\n return d.innerRadius;\n}\n\nfunction arcOuterRadius(d) {\n return d.outerRadius;\n}\n\nfunction arcStartAngle(d) {\n return d.startAngle;\n}\n\nfunction arcEndAngle(d) {\n return d.endAngle;\n}\n\nfunction arcPadAngle(d) {\n return d && d.padAngle; // Note: optional!\n}\n\nfunction intersect(x0, y0, x1, y1, x2, y2, x3, y3) {\n var x10 = x1 - x0, y10 = y1 - y0,\n x32 = x3 - x2, y32 = y3 - y2,\n t = y32 * x10 - x32 * y10;\n if (t * t < epsilon) return;\n t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t;\n return [x0 + t * x10, y0 + t * y10];\n}\n\n// Compute perpendicular offset line of length rc.\n// http://mathworld.wolfram.com/Circle-LineIntersection.html\nfunction cornerTangents(x0, y0, x1, y1, r1, rc, cw) {\n var x01 = x0 - x1,\n y01 = y0 - y1,\n lo = (cw ? rc : -rc) / sqrt(x01 * x01 + y01 * y01),\n ox = lo * y01,\n oy = -lo * x01,\n x11 = x0 + ox,\n y11 = y0 + oy,\n x10 = x1 + ox,\n y10 = y1 + oy,\n x00 = (x11 + x10) / 2,\n y00 = (y11 + y10) / 2,\n dx = x10 - x11,\n dy = y10 - y11,\n d2 = dx * dx + dy * dy,\n r = r1 - rc,\n D = x11 * y10 - x10 * y11,\n d = (dy < 0 ? -1 : 1) * sqrt(max(0, r * r * d2 - D * D)),\n cx0 = (D * dy - dx * d) / d2,\n cy0 = (-D * dx - dy * d) / d2,\n cx1 = (D * dy + dx * d) / d2,\n cy1 = (-D * dx + dy * d) / d2,\n dx0 = cx0 - x00,\n dy0 = cy0 - y00,\n dx1 = cx1 - x00,\n dy1 = cy1 - y00;\n\n // Pick the closer of the two intersection points.\n // TODO Is there a faster way to determine which intersection to use?\n if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n\n return {\n cx: cx0,\n cy: cy0,\n x01: -ox,\n y01: -oy,\n x11: cx0 * (r1 / r - 1),\n y11: cy0 * (r1 / r - 1)\n };\n}\n\nexport default function() {\n var innerRadius = arcInnerRadius,\n outerRadius = arcOuterRadius,\n cornerRadius = constant(0),\n padRadius = null,\n startAngle = arcStartAngle,\n endAngle = arcEndAngle,\n padAngle = arcPadAngle,\n context = null,\n path = withPath(arc);\n\n function arc() {\n var buffer,\n r,\n r0 = +innerRadius.apply(this, arguments),\n r1 = +outerRadius.apply(this, arguments),\n a0 = startAngle.apply(this, arguments) - halfPi,\n a1 = endAngle.apply(this, arguments) - halfPi,\n da = abs(a1 - a0),\n cw = a1 > a0;\n\n if (!context) context = buffer = path();\n\n // Ensure that the outer radius is always larger than the inner radius.\n if (r1 < r0) r = r1, r1 = r0, r0 = r;\n\n // Is it a point?\n if (!(r1 > epsilon)) context.moveTo(0, 0);\n\n // Or is it a circle or annulus?\n else if (da > tau - epsilon) {\n context.moveTo(r1 * cos(a0), r1 * sin(a0));\n context.arc(0, 0, r1, a0, a1, !cw);\n if (r0 > epsilon) {\n context.moveTo(r0 * cos(a1), r0 * sin(a1));\n context.arc(0, 0, r0, a1, a0, cw);\n }\n }\n\n // Or is it a circular or annular sector?\n else {\n var a01 = a0,\n a11 = a1,\n a00 = a0,\n a10 = a1,\n da0 = da,\n da1 = da,\n ap = padAngle.apply(this, arguments) / 2,\n rp = (ap > epsilon) && (padRadius ? +padRadius.apply(this, arguments) : sqrt(r0 * r0 + r1 * r1)),\n rc = min(abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments)),\n rc0 = rc,\n rc1 = rc,\n t0,\n t1;\n\n // Apply padding? Note that since r1 ≥ r0, da1 ≥ da0.\n if (rp > epsilon) {\n var p0 = asin(rp / r0 * sin(ap)),\n p1 = asin(rp / r1 * sin(ap));\n if ((da0 -= p0 * 2) > epsilon) p0 *= (cw ? 1 : -1), a00 += p0, a10 -= p0;\n else da0 = 0, a00 = a10 = (a0 + a1) / 2;\n if ((da1 -= p1 * 2) > epsilon) p1 *= (cw ? 1 : -1), a01 += p1, a11 -= p1;\n else da1 = 0, a01 = a11 = (a0 + a1) / 2;\n }\n\n var x01 = r1 * cos(a01),\n y01 = r1 * sin(a01),\n x10 = r0 * cos(a10),\n y10 = r0 * sin(a10);\n\n // Apply rounded corners?\n if (rc > epsilon) {\n var x11 = r1 * cos(a11),\n y11 = r1 * sin(a11),\n x00 = r0 * cos(a00),\n y00 = r0 * sin(a00),\n oc;\n\n // Restrict the corner radius according to the sector angle. If this\n // intersection fails, it’s probably because the arc is too small, so\n // disable the corner radius entirely.\n if (da < pi) {\n if (oc = intersect(x01, y01, x00, y00, x11, y11, x10, y10)) {\n var ax = x01 - oc[0],\n ay = y01 - oc[1],\n bx = x11 - oc[0],\n by = y11 - oc[1],\n kc = 1 / sin(acos((ax * bx + ay * by) / (sqrt(ax * ax + ay * ay) * sqrt(bx * bx + by * by))) / 2),\n lc = sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n rc0 = min(rc, (r0 - lc) / (kc - 1));\n rc1 = min(rc, (r1 - lc) / (kc + 1));\n } else {\n rc0 = rc1 = 0;\n }\n }\n }\n\n // Is the sector collapsed to a line?\n if (!(da1 > epsilon)) context.moveTo(x01, y01);\n\n // Does the sector’s outer ring have rounded corners?\n else if (rc1 > epsilon) {\n t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw);\n t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw);\n\n context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r1, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), !cw);\n context.arc(t1.cx, t1.cy, rc1, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the outer ring just a circular arc?\n else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw);\n\n // Is there no inner ring, and it’s a circular sector?\n // Or perhaps it’s an annular sector collapsed due to padding?\n if (!(r0 > epsilon) || !(da0 > epsilon)) context.lineTo(x10, y10);\n\n // Does the sector’s inner ring (or point) have rounded corners?\n else if (rc0 > epsilon) {\n t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw);\n t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw);\n\n context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r0, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), cw);\n context.arc(t1.cx, t1.cy, rc0, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the inner ring just a circular arc?\n else context.arc(0, 0, r0, a10, a00, cw);\n }\n\n context.closePath();\n\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n arc.centroid = function() {\n var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2,\n a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - pi / 2;\n return [cos(a) * r, sin(a) * r];\n };\n\n arc.innerRadius = function(_) {\n return arguments.length ? (innerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : innerRadius;\n };\n\n arc.outerRadius = function(_) {\n return arguments.length ? (outerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : outerRadius;\n };\n\n arc.cornerRadius = function(_) {\n return arguments.length ? (cornerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : cornerRadius;\n };\n\n arc.padRadius = function(_) {\n return arguments.length ? (padRadius = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), arc) : padRadius;\n };\n\n arc.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : startAngle;\n };\n\n arc.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : endAngle;\n };\n\n arc.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : padAngle;\n };\n\n arc.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), arc) : context;\n };\n\n return arc;\n}\n","export var slice = Array.prototype.slice;\n\nexport default function(x) {\n return typeof x === \"object\" && \"length\" in x\n ? x // Array, TypedArray, NodeList, array-like\n : Array.from(x); // Map, Set, iterable, string, or anything else\n}\n","function Linear(context) {\n this._context = context;\n}\n\nLinear.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // falls through\n default: this._context.lineTo(x, y); break;\n }\n }\n};\n\nexport default function(context) {\n return new Linear(context);\n}\n","export function x(p) {\n return p[0];\n}\n\nexport function y(p) {\n return p[1];\n}\n","import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport {withPath} from \"./path.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function(x, y) {\n var defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null,\n path = withPath(line);\n\n x = typeof x === \"function\" ? x : (x === undefined) ? pointX : constant(x);\n y = typeof y === \"function\" ? y : (y === undefined) ? pointY : constant(y);\n\n function line(data) {\n var i,\n n = (data = array(data)).length,\n d,\n defined0 = false,\n buffer;\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) output.lineStart();\n else output.lineEnd();\n }\n if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n line.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), line) : x;\n };\n\n line.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), line) : y;\n };\n\n line.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), line) : defined;\n };\n\n line.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n };\n\n line.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n };\n\n return line;\n}\n","export function point(that, x, y) {\n that._context.bezierCurveTo(\n that._x1 + that._k * (that._x2 - that._x0),\n that._y1 + that._k * (that._y2 - that._y0),\n that._x2 + that._k * (that._x1 - x),\n that._y2 + that._k * (that._y1 - y),\n that._x2,\n that._y2\n );\n}\n\nexport function Cardinal(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinal.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x2, this._y2); break;\n case 3: point(this, this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; this._x1 = x, this._y1 = y; break;\n case 2: this._point = 3; // falls through\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new Cardinal(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","const t0 = new Date, t1 = new Date;\n\nexport function timeInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n }\n\n interval.floor = (date) => {\n return floori(date = new Date(+date)), date;\n };\n\n interval.ceil = (date) => {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = (date) => {\n const d0 = interval(date), d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = (date, step) => {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = (start, stop, step) => {\n const range = [];\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n let previous;\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = (test) => {\n return timeInterval((date) => {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, (date, step) => {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = (start, end) => {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = (step) => {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? (d) => field(d) % step === 0\n : (d) => interval.count(0, d) % step === 0);\n };\n }\n\n return interval;\n}\n","export const durationSecond = 1000;\nexport const durationMinute = durationSecond * 60;\nexport const durationHour = durationMinute * 60;\nexport const durationDay = durationHour * 24;\nexport const durationWeek = durationDay * 7;\nexport const durationMonth = durationDay * 30;\nexport const durationYear = durationDay * 365;\n","import {timeInterval} from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nexport const timeDay = timeInterval(\n date => date.setHours(0, 0, 0, 0),\n (date, step) => date.setDate(date.getDate() + step),\n (start, end) => (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay,\n date => date.getDate() - 1\n);\n\nexport const timeDays = timeDay.range;\n\nexport const utcDay = timeInterval((date) => {\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCDate(date.getUTCDate() + step);\n}, (start, end) => {\n return (end - start) / durationDay;\n}, (date) => {\n return date.getUTCDate() - 1;\n});\n\nexport const utcDays = utcDay.range;\n\nexport const unixDay = timeInterval((date) => {\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCDate(date.getUTCDate() + step);\n}, (start, end) => {\n return (end - start) / durationDay;\n}, (date) => {\n return Math.floor(date / durationDay);\n});\n\nexport const unixDays = unixDay.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction timeWeekday(i) {\n return timeInterval((date) => {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setDate(date.getDate() + step * 7);\n }, (start, end) => {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport const timeSunday = timeWeekday(0);\nexport const timeMonday = timeWeekday(1);\nexport const timeTuesday = timeWeekday(2);\nexport const timeWednesday = timeWeekday(3);\nexport const timeThursday = timeWeekday(4);\nexport const timeFriday = timeWeekday(5);\nexport const timeSaturday = timeWeekday(6);\n\nexport const timeSundays = timeSunday.range;\nexport const timeMondays = timeMonday.range;\nexport const timeTuesdays = timeTuesday.range;\nexport const timeWednesdays = timeWednesday.range;\nexport const timeThursdays = timeThursday.range;\nexport const timeFridays = timeFriday.range;\nexport const timeSaturdays = timeSaturday.range;\n\nfunction utcWeekday(i) {\n return timeInterval((date) => {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, (start, end) => {\n return (end - start) / durationWeek;\n });\n}\n\nexport const utcSunday = utcWeekday(0);\nexport const utcMonday = utcWeekday(1);\nexport const utcTuesday = utcWeekday(2);\nexport const utcWednesday = utcWeekday(3);\nexport const utcThursday = utcWeekday(4);\nexport const utcFriday = utcWeekday(5);\nexport const utcSaturday = utcWeekday(6);\n\nexport const utcSundays = utcSunday.range;\nexport const utcMondays = utcMonday.range;\nexport const utcTuesdays = utcTuesday.range;\nexport const utcWednesdays = utcWednesday.range;\nexport const utcThursdays = utcThursday.range;\nexport const utcFridays = utcFriday.range;\nexport const utcSaturdays = utcSaturday.range;\n","import {timeInterval} from \"./interval.js\";\n\nexport const timeYear = timeInterval((date) => {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setFullYear(date.getFullYear() + step);\n}, (start, end) => {\n return end.getFullYear() - start.getFullYear();\n}, (date) => {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\ntimeYear.every = (k) => {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : timeInterval((date) => {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport const timeYears = timeYear.range;\n\nexport const utcYear = timeInterval((date) => {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, (start, end) => {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, (date) => {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = (k) => {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : timeInterval((date) => {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport const utcYears = utcYear.range;\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 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","export default function identity(x) {\n return x;\n}\n","import {InternMap} from \"internmap\";\nimport identity from \"./identity.js\";\n\nexport default function group(values, ...keys) {\n return nest(values, identity, identity, keys);\n}\n\nexport function groups(values, ...keys) {\n return nest(values, Array.from, identity, keys);\n}\n\nfunction flatten(groups, keys) {\n for (let i = 1, n = keys.length; i < n; ++i) {\n groups = groups.flatMap(g => g.pop().map(([key, value]) => [...g, key, value]));\n }\n return groups;\n}\n\nexport function flatGroup(values, ...keys) {\n return flatten(groups(values, ...keys), keys);\n}\n\nexport function flatRollup(values, reduce, ...keys) {\n return flatten(rollups(values, reduce, ...keys), keys);\n}\n\nexport function rollup(values, reduce, ...keys) {\n return nest(values, identity, reduce, keys);\n}\n\nexport function rollups(values, reduce, ...keys) {\n return nest(values, Array.from, reduce, keys);\n}\n\nexport function index(values, ...keys) {\n return nest(values, identity, unique, keys);\n}\n\nexport function indexes(values, ...keys) {\n return nest(values, Array.from, unique, keys);\n}\n\nfunction unique(values) {\n if (values.length !== 1) throw new Error(\"duplicate key\");\n return values[0];\n}\n\nfunction nest(values, map, reduce, keys) {\n return (function regroup(values, i) {\n if (i >= keys.length) return reduce(values);\n const groups = new InternMap();\n const keyof = keys[i++];\n let index = -1;\n for (const value of values) {\n const key = keyof(value, ++index, values);\n const group = groups.get(key);\n if (group) group.push(value);\n else groups.set(key, [value]);\n }\n for (const [key, values] of groups) {\n groups.set(key, regroup(values, i));\n }\n return map(groups);\n })(values, 0);\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 mean(values, valueof) {\n let count = 0;\n let sum = 0;\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n ++count, sum += 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 ++count, sum += value;\n }\n }\n }\n if (count) return sum / count;\n}\n","export default function range(start, stop, step) {\n start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n var i = -1,\n n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n range = new Array(n);\n\n while (++i < n) {\n range[i] = start + i * step;\n }\n\n return range;\n}\n","export default function sum(values, valueof) {\n let sum = 0;\n if (valueof === undefined) {\n for (let value of values) {\n if (value = +value) {\n sum += value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if (value = +valueof(value, ++index, values)) {\n sum += value;\n }\n }\n }\n return sum;\n}\n","import {\n timeDay,\n timeSunday,\n timeMonday,\n timeThursday,\n timeYear,\n utcDay,\n utcSunday,\n utcMonday,\n utcThursday,\n utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newDate(y, m, d) {\n return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"f\": formatMicroseconds,\n \"g\": formatYearISO,\n \"G\": formatFullYearISO,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"q\": formatQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatSeconds,\n \"u\": formatWeekdayNumberMonday,\n \"U\": formatWeekNumberSunday,\n \"V\": formatWeekNumberISO,\n \"w\": formatWeekdayNumberSunday,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"f\": formatUTCMicroseconds,\n \"g\": formatUTCYearISO,\n \"G\": formatUTCFullYearISO,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"q\": formatUTCQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatUTCSeconds,\n \"u\": formatUTCWeekdayNumberMonday,\n \"U\": formatUTCWeekNumberSunday,\n \"V\": formatUTCWeekNumberISO,\n \"w\": formatUTCWeekdayNumberSunday,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"f\": parseMicroseconds,\n \"g\": parseYear,\n \"G\": parseFullYear,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"q\": parseQuarter,\n \"Q\": parseUnixTimestamp,\n \"s\": parseUnixTimestampSeconds,\n \"S\": parseSeconds,\n \"u\": parseWeekdayNumberMonday,\n \"U\": parseWeekNumberSunday,\n \"V\": parseWeekNumberISO,\n \"w\": parseWeekdayNumberSunday,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, Z) {\n return function(string) {\n var d = newDate(1900, undefined, 1),\n i = parseSpecifier(d, specifier, string += \"\", 0),\n week, day;\n if (i != string.length) return null;\n\n // If a UNIX timestamp is specified, return it.\n if (\"Q\" in d) return new Date(d.Q);\n if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0));\n\n // If this is utcParse, never use the local timezone.\n if (Z && !(\"Z\" in d)) d.Z = 0;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // If the month was not specified, inherit from the quarter.\n if (d.m === undefined) d.m = \"q\" in d ? d.q : 0;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"V\" in d) {\n if (d.V < 1 || d.V > 53) return null;\n if (!(\"w\" in d)) d.w = 1;\n if (\"Z\" in d) {\n week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();\n week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n week = utcDay.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n } else {\n week = localDate(newDate(d.y, 0, 1)), day = week.getDay();\n week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n week = timeDay.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n } else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n day = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return localDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatQuarter(d) {\n return 1 + ~~(d.getMonth() / 3);\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n function formatUTCQuarter(d) {\n return 1 + ~~(d.getUTCMonth() / 3);\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", false);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier += \"\", true);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n return new Map(names.map((name, i) => [name.toLowerCase(), i]));\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseQuarter(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.s = +n[0], i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n var day = d.getDay();\n return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction dISO(d) {\n var day = d.getDay();\n return (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n}\n\nfunction formatWeekNumberISO(d, p) {\n d = dISO(d);\n return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatYearISO(d, p) {\n d = dISO(d);\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatFullYearISO(d, p) {\n var day = d.getDay();\n d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n var dow = d.getUTCDay();\n return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction UTCdISO(d) {\n var day = d.getUTCDay();\n return (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n d = UTCdISO(d);\n return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCYearISO(d, p) {\n d = UTCdISO(d);\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCFullYearISO(d, p) {\n var day = d.getUTCDay();\n d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n return Math.floor(+d / 1000);\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\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","import {range as sequence} from \"d3-array\";\nimport {initRange} from \"./init.js\";\nimport ordinal from \"./ordinal.js\";\n\nexport default function band() {\n var scale = ordinal().unknown(undefined),\n domain = scale.domain,\n ordinalRange = scale.range,\n r0 = 0,\n r1 = 1,\n step,\n bandwidth,\n round = false,\n paddingInner = 0,\n paddingOuter = 0,\n align = 0.5;\n\n delete scale.unknown;\n\n function rescale() {\n var n = domain().length,\n reverse = r1 < r0,\n start = reverse ? r1 : r0,\n stop = reverse ? r0 : r1;\n step = (stop - start) / Math.max(1, n - paddingInner + paddingOuter * 2);\n if (round) step = Math.floor(step);\n start += (stop - start - step * (n - paddingInner)) * align;\n bandwidth = step * (1 - paddingInner);\n if (round) start = Math.round(start), bandwidth = Math.round(bandwidth);\n var values = sequence(n).map(function(i) { return start + step * i; });\n return ordinalRange(reverse ? values.reverse() : values);\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.range = function(_) {\n return arguments.length ? ([r0, r1] = _, r0 = +r0, r1 = +r1, rescale()) : [r0, r1];\n };\n\n scale.rangeRound = function(_) {\n return [r0, r1] = _, r0 = +r0, r1 = +r1, round = true, rescale();\n };\n\n scale.bandwidth = function() {\n return bandwidth;\n };\n\n scale.step = function() {\n return step;\n };\n\n scale.round = function(_) {\n return arguments.length ? (round = !!_, rescale()) : round;\n };\n\n scale.padding = function(_) {\n return arguments.length ? (paddingInner = Math.min(1, paddingOuter = +_), rescale()) : paddingInner;\n };\n\n scale.paddingInner = function(_) {\n return arguments.length ? (paddingInner = Math.min(1, _), rescale()) : paddingInner;\n };\n\n scale.paddingOuter = function(_) {\n return arguments.length ? (paddingOuter = +_, rescale()) : paddingOuter;\n };\n\n scale.align = function(_) {\n return arguments.length ? (align = Math.max(0, Math.min(1, _)), rescale()) : align;\n };\n\n scale.copy = function() {\n return band(domain(), [r0, r1])\n .round(round)\n .paddingInner(paddingInner)\n .paddingOuter(paddingOuter)\n .align(align);\n };\n\n return initRange.apply(rescale(), arguments);\n}\n\nfunction pointish(scale) {\n var copy = scale.copy;\n\n scale.padding = scale.paddingOuter;\n delete scale.paddingInner;\n delete scale.paddingOuter;\n\n scale.copy = function() {\n return pointish(copy());\n };\n\n return scale;\n}\n\nexport function point() {\n return pointish(band.apply(null, arguments).paddingInner(1));\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","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","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","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","export default function(x) {\n return x;\n}\n","import identity from \"./identity.js\";\n\nvar top = 1,\n right = 2,\n bottom = 3,\n left = 4,\n epsilon = 1e-6;\n\nfunction translateX(x) {\n return \"translate(\" + x + \",0)\";\n}\n\nfunction translateY(y) {\n return \"translate(0,\" + y + \")\";\n}\n\nfunction number(scale) {\n return d => +scale(d);\n}\n\nfunction center(scale, offset) {\n offset = Math.max(0, scale.bandwidth() - offset * 2) / 2;\n if (scale.round()) offset = Math.round(offset);\n return d => +scale(d) + offset;\n}\n\nfunction entering() {\n return !this.__axis;\n}\n\nfunction axis(orient, scale) {\n var tickArguments = [],\n tickValues = null,\n tickFormat = null,\n tickSizeInner = 6,\n tickSizeOuter = 6,\n tickPadding = 3,\n offset = typeof window !== \"undefined\" && window.devicePixelRatio > 1 ? 0 : 0.5,\n k = orient === top || orient === left ? -1 : 1,\n x = orient === left || orient === right ? \"x\" : \"y\",\n transform = orient === top || orient === bottom ? translateX : translateY;\n\n function axis(context) {\n var values = tickValues == null ? (scale.ticks ? scale.ticks.apply(scale, tickArguments) : scale.domain()) : tickValues,\n format = tickFormat == null ? (scale.tickFormat ? scale.tickFormat.apply(scale, tickArguments) : identity) : tickFormat,\n spacing = Math.max(tickSizeInner, 0) + tickPadding,\n range = scale.range(),\n range0 = +range[0] + offset,\n range1 = +range[range.length - 1] + offset,\n position = (scale.bandwidth ? center : number)(scale.copy(), offset),\n selection = context.selection ? context.selection() : context,\n path = selection.selectAll(\".domain\").data([null]),\n tick = selection.selectAll(\".tick\").data(values, scale).order(),\n tickExit = tick.exit(),\n tickEnter = tick.enter().append(\"g\").attr(\"class\", \"tick\"),\n line = tick.select(\"line\"),\n text = tick.select(\"text\");\n\n path = path.merge(path.enter().insert(\"path\", \".tick\")\n .attr(\"class\", \"domain\")\n .attr(\"stroke\", \"currentColor\"));\n\n tick = tick.merge(tickEnter);\n\n line = line.merge(tickEnter.append(\"line\")\n .attr(\"stroke\", \"currentColor\")\n .attr(x + \"2\", k * tickSizeInner));\n\n text = text.merge(tickEnter.append(\"text\")\n .attr(\"fill\", \"currentColor\")\n .attr(x, k * spacing)\n .attr(\"dy\", orient === top ? \"0em\" : orient === bottom ? \"0.71em\" : \"0.32em\"));\n\n if (context !== selection) {\n path = path.transition(context);\n tick = tick.transition(context);\n line = line.transition(context);\n text = text.transition(context);\n\n tickExit = tickExit.transition(context)\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { return isFinite(d = position(d)) ? transform(d + offset) : this.getAttribute(\"transform\"); });\n\n tickEnter\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { var p = this.parentNode.__axis; return transform((p && isFinite(p = p(d)) ? p : position(d)) + offset); });\n }\n\n tickExit.remove();\n\n path\n .attr(\"d\", orient === left || orient === right\n ? (tickSizeOuter ? \"M\" + k * tickSizeOuter + \",\" + range0 + \"H\" + offset + \"V\" + range1 + \"H\" + k * tickSizeOuter : \"M\" + offset + \",\" + range0 + \"V\" + range1)\n : (tickSizeOuter ? \"M\" + range0 + \",\" + k * tickSizeOuter + \"V\" + offset + \"H\" + range1 + \"V\" + k * tickSizeOuter : \"M\" + range0 + \",\" + offset + \"H\" + range1));\n\n tick\n .attr(\"opacity\", 1)\n .attr(\"transform\", function(d) { return transform(position(d) + offset); });\n\n line\n .attr(x + \"2\", k * tickSizeInner);\n\n text\n .attr(x, k * spacing)\n .text(format);\n\n selection.filter(entering)\n .attr(\"fill\", \"none\")\n .attr(\"font-size\", 10)\n .attr(\"font-family\", \"sans-serif\")\n .attr(\"text-anchor\", orient === right ? \"start\" : orient === left ? \"end\" : \"middle\");\n\n selection\n .each(function() { this.__axis = position; });\n }\n\n axis.scale = function(_) {\n return arguments.length ? (scale = _, axis) : scale;\n };\n\n axis.ticks = function() {\n return tickArguments = Array.from(arguments), axis;\n };\n\n axis.tickArguments = function(_) {\n return arguments.length ? (tickArguments = _ == null ? [] : Array.from(_), axis) : tickArguments.slice();\n };\n\n axis.tickValues = function(_) {\n return arguments.length ? (tickValues = _ == null ? null : Array.from(_), axis) : tickValues && tickValues.slice();\n };\n\n axis.tickFormat = function(_) {\n return arguments.length ? (tickFormat = _, axis) : tickFormat;\n };\n\n axis.tickSize = function(_) {\n return arguments.length ? (tickSizeInner = tickSizeOuter = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeInner = function(_) {\n return arguments.length ? (tickSizeInner = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeOuter = function(_) {\n return arguments.length ? (tickSizeOuter = +_, axis) : tickSizeOuter;\n };\n\n axis.tickPadding = function(_) {\n return arguments.length ? (tickPadding = +_, axis) : tickPadding;\n };\n\n axis.offset = function(_) {\n return arguments.length ? (offset = +_, axis) : offset;\n };\n\n return axis;\n}\n\nexport function axisTop(scale) {\n return axis(top, scale);\n}\n\nexport function axisRight(scale) {\n return axis(right, scale);\n}\n\nexport function axisBottom(scale) {\n return axis(bottom, scale);\n}\n\nexport function axisLeft(scale) {\n return axis(left, scale);\n}\n","import { select } from \"d3-selection\";\nimport { arc, line, curveCardinal } from \"d3-shape\";\nimport { timeDay, timeWeek } from \"d3-time\";\nimport { utcParse, timeFormat } from \"d3-time-format\";\nimport { rollup, sum, max, mean } from \"d3-array\";\nimport { scaleBand, scaleLinear } from \"d3-scale\";\nimport { axisBottom, axisLeft } from \"d3-axis\";\n\nwindow.addEventListener(\"load\", () => {\n const el = document.getElementById(\"tab-bar\");\n if (!el) return;\n\n el.querySelectorAll(\"button\").forEach((button) =>\n button.addEventListener(\"click\", ({ target }) => {\n el.querySelectorAll(\"button\").forEach((other) => {\n other.classList.add(\"text-gray\");\n other.querySelector(\"span\").classList.add(\"invisible\");\n document.getElementById(other.dataset.tab).classList.add(\"hidden\");\n });\n\n target.classList.remove(\"text-gray\");\n target.querySelector(\"span\").classList.remove(\"invisible\");\n const targetEl = document.getElementById(target.dataset.tab);\n targetEl.classList.remove(\"hidden\");\n\n if (document.getElementById(\"bar-chart-interval\")) {\n addBarChart(\n document.getElementById(\"bar-chart\"),\n parseInt(document.getElementById(\"bar-chart-interval\").value, 10)\n );\n }\n if (document.getElementById(\"line-graph-interval\")) {\n addLineGraph(\n document.getElementById(\"line-graph\"),\n parseInt(document.getElementById(\"line-graph-interval\").value, 10)\n );\n }\n })\n );\n});\n\nwindow.addEventListener(\"load\", () => {\n const el = document.getElementById(\"activity-load-more\");\n if (!el) return;\n\n let offset = 10;\n el.addEventListener(\"click\", (e) => {\n e.preventDefault();\n el.classList.add(\"pointer-events-none\");\n el.classList.remove(\"text-blue\");\n el.classList.add(\"text-gray\");\n\n fetch(`${el.dataset.url}.js?offset=${offset}`, {\n headers: {\n \"Content-Type\": \"text/javascript\",\n \"X-Requested-With\": \"XMLHttpRequest\",\n },\n }).then(async (res) => {\n if (!res.ok) return;\n\n const items = await res.text();\n if (items.length > 0) {\n document.getElementById(\"activity-list\").insertAdjacentHTML(\"beforeend\", items);\n initCollapse();\n el.classList.remove(\"pointer-events-none\");\n el.classList.add(\"text-blue\");\n el.classList.remove(\"text-gray\");\n offset += 10;\n } else {\n el.remove();\n }\n });\n });\n});\n\nfunction initCollapse() {\n document.querySelectorAll(\"[data-collapse]\").forEach((button) => {\n button.onclick = () => {\n button.querySelector(\"svg\")?.classList?.toggle(\"rotate-180\");\n document.getElementById(button.dataset.collapse).classList.toggle(\"hidden\");\n };\n });\n}\nwindow.addEventListener(\"load\", () => {\n initCollapse();\n});\n\nwindow.addEventListener(\"load\", () => {\n const interval = document.getElementById(\"bar-chart-interval\");\n if (!interval) {\n return;\n }\n\n interval.addEventListener(\"change\", () => {\n addBarChart(document.getElementById(\"bar-chart\"), parseInt(interval.value, 10));\n });\n const el = document.getElementById(\"bar-chart\");\n addBarChart(el, parseInt(interval.value, 10));\n});\n\nwindow.addEventListener(\"load\", () => {\n const interval = document.getElementById(\"line-graph-interval\");\n if (!interval) {\n return;\n }\n\n interval.addEventListener(\"change\", () => {\n addLineGraph(document.getElementById(\"line-graph\"), parseInt(interval.value, 10));\n });\n const el = document.getElementById(\"line-graph\");\n addLineGraph(el, parseInt(interval.value, 10));\n});\n\nwindow.addEventListener(\"load\", () => {\n document.querySelectorAll(\"[data-circular-progress]\").forEach((el) => {\n const value = el.dataset.circularProgress,\n radius = el.dataset.radius || 24,\n lineWidth = el.dataset.lineWidth || 8,\n forceColor = el.dataset.forceColor;\n\n let backColor, frontColor;\n if (forceColor) {\n backColor = el.dataset.backColor;\n frontColor = el.dataset.frontColor;\n } else if (value >= 75) {\n backColor = \"rgba(64, 176, 78, 0.2)\";\n frontColor = \"#40b04e\";\n } else if (value >= 40) {\n backColor = \"rgba(41, 81, 153, 0.4)\";\n frontColor = \"#295199\";\n } else {\n backColor = \"rgba(225, 54, 61, 0.4)\";\n frontColor = \"#e1363d\";\n }\n\n const svg = select(el)\n .append(\"svg\")\n .attr(\"viewBox\", [0, 0, 2 * radius, 2 * radius])\n .append(\"g\");\n svg.attr(\"transform\", `translate(${radius},${radius})`);\n\n const backArc = arc()\n .innerRadius(radius - 0.5 * lineWidth)\n .outerRadius(radius - 0.5 * lineWidth)\n .startAngle(0)\n .endAngle(2 * Math.PI);\n svg\n .append(\"path\")\n .attr(\"d\", backArc())\n .attr(\"fill\", \"none\")\n .attr(\"stroke\", backColor)\n .attr(\"stroke-width\", lineWidth)\n .attr(\"stroke-linejoin\", \"round\")\n .attr(\"stroke-linecap\", \"round\");\n\n const frontArc = arc()\n .innerRadius(radius - 0.5 * lineWidth)\n .outerRadius(radius - 0.5 * lineWidth)\n .startAngle(0)\n .endAngle(2 * Math.PI * (value / 100));\n svg\n .append(\"path\")\n .attr(\"d\", frontArc())\n .attr(\"fill\", \"none\")\n .attr(\"stroke\", frontColor)\n .attr(\"stroke-width\", lineWidth)\n .attr(\"stroke-linejoin\", \"round\")\n .attr(\"stroke-linecap\", \"round\");\n });\n});\n\nfunction addBarChart(el, interval) {\n const timeFunc = interval === 7 ? timeDay : timeWeek,\n from = timeDay.ceil(timeDay.offset(new Date(), -1 * interval)),\n to = timeFunc.ceil(new Date()),\n dataset = JSON.parse(el.dataset.barChart),\n parseTime = utcParse(\"%Y-%m-%d\"),\n data = Array.from(\n rollup(\n Object.keys(dataset)\n .map((key) => ({ date: timeFunc.round(parseTime(key)), value: dataset[key] }))\n .filter(({ date }) => date >= from && date <= to),\n (v) => sum(v, ({ value }) => value),\n ({ date }) => date\n ),\n ([date, value]) => ({ date, value: value / 3600 })\n ),\n margin = { top: 10, right: 0, bottom: 20, left: 30 },\n width = el.clientWidth,\n height = el.clientHeight;\n\n select(el).select(\"svg\").remove();\n const svg = select(el)\n .append(\"svg\")\n .attr(\"class\", \"text-blue\")\n .attr(\"viewBox\", [0, 0, width, height]);\n\n const domain = timeFunc.range(from, timeFunc.offset(to, 1));\n const x = scaleBand()\n .domain(domain)\n .rangeRound([margin.left, width - margin.right]);\n\n const xAxis = (g) =>\n g.attr(\"transform\", `translate(0,${height - margin.bottom})`).call(\n axisBottom(x)\n .tickSize(0)\n .tickFormat(timeFormat(interval === 7 ? \"%a\" : \"%d/%m\"))\n );\n const xAxisG = svg.append(\"g\");\n xAxisG.call(xAxis);\n xAxisG.select(\".domain\").remove();\n xAxisG.attr(\"class\", \"font-sans font-bold text-xs\");\n\n const yMax = Math.ceil(\n Math.max(\n 1,\n max(data, (d) => d.value)\n )\n );\n const y = scaleLinear()\n .domain([0, yMax])\n .nice()\n .rangeRound([height - margin.bottom - 14, margin.top]);\n\n const yAxis = (g) =>\n g.attr(\"transform\", `translate(${margin.left},0)`).call(\n axisLeft(y)\n .tickSize(0)\n .ticks(yMax, \"s\")\n .tickFormat((v) => (v === 0 ? v : `${v}h`))\n );\n const yAxisG = svg.append(\"g\");\n yAxisG.call(yAxis);\n yAxisG.select(\".domain\").remove();\n yAxisG.attr(\"class\", \"font-sans font-bold text-xs\");\n\n svg\n .append(\"g\")\n .attr(\"transform\", \"translate(20,0)\")\n .selectAll(\"line\")\n .data(y.ticks(yMax))\n .enter()\n .append(\"line\")\n .attr(\"x1\", () => x(domain[0]))\n .attr(\"y1\", (d) => y(d))\n .attr(\"x2\", () => x(domain[domain.length - 1]))\n .attr(\"y2\", (d) => y(d))\n .attr(\"stroke\", \"#c5c9cf\")\n .attr(\"stroke-width\", 1)\n .attr(\"stroke-dasharray\", \"6,6\");\n\n const barsG = svg.append(\"g\");\n barsG\n .selectAll(\"rect\")\n .data(data)\n .enter()\n .append(\"rect\")\n .attr(\"x\", (d) => x(d.date) + 0.5 * x.bandwidth() - 13)\n .attr(\"y\", (d) => y(d.value))\n .attr(\"width\", 26)\n .attr(\"height\", (d) => height - y(d.value) - margin.bottom - 13)\n .attr(\"rx\", 4)\n .attr(\"fill\", \"#cfd7e2\");\n}\n\nfunction addLineGraph(el, interval) {\n const timeFunc = interval === 7 ? timeDay : timeWeek,\n from = timeDay.ceil(timeDay.offset(new Date(), -1 * interval)),\n to = timeFunc.ceil(new Date()),\n dataset = JSON.parse(el.dataset.lineGraph),\n parseTime = utcParse(\"%Y-%m-%d\"),\n data = Array.from(\n rollup(\n Object.keys(dataset)\n .map((key) => ({ date: timeFunc.round(parseTime(key)), value: dataset[key] }))\n .filter(({ date }) => date >= from && date <= to),\n (v) => mean(v, ({ value }) => value),\n ({ date }) => date\n ),\n ([date, value]) => ({ date, value })\n ),\n margin = { top: 10, right: 0, bottom: 20, left: 35 },\n width = el.clientWidth,\n height = el.clientHeight;\n\n select(el).select(\"svg\").remove();\n const svg = select(el)\n .append(\"svg\")\n .attr(\"class\", \"text-blue\")\n .attr(\"viewBox\", [0, 0, width, height]);\n\n const domain = timeFunc.range(from, timeFunc.offset(to, 1));\n const x = scaleBand()\n .domain(domain)\n .rangeRound([margin.left, width - margin.right]);\n\n const xAxis = (g) =>\n g.attr(\"transform\", `translate(0,${height - margin.bottom})`).call(\n axisBottom(x)\n .tickSize(0)\n .tickFormat(timeFormat(interval === 7 ? \"%a\" : \"%d/%m\"))\n );\n const axisG = svg.append(\"g\");\n axisG.call(xAxis);\n axisG.select(\".domain\").remove();\n axisG.attr(\"class\", \"font-sans font-bold text-xs\");\n\n const yMax = Math.ceil(\n Math.max(\n 1,\n max(data, (d) => d.value)\n )\n );\n const y = scaleLinear()\n .domain([0, yMax])\n .nice()\n .range([height - margin.bottom - 14, margin.top]);\n\n const yAxis = (g) =>\n g.attr(\"transform\", `translate(${margin.left},0)`).call(\n axisLeft(y)\n .tickSize(0)\n .tickFormat((v) => (v === 0 ? v : `${v}%`))\n );\n const yAxisG = svg.append(\"g\");\n yAxisG.call(yAxis);\n yAxisG.select(\".domain\").remove();\n yAxisG.attr(\"class\", \"font-sans font-bold text-xs\");\n\n svg\n .append(\"g\")\n .attr(\"transform\", \"translate(20,0)\")\n .selectAll(\"line\")\n .data(y.ticks())\n .enter()\n .append(\"line\")\n .attr(\"x1\", () => x(domain[0]))\n .attr(\"y1\", (d) => y(d))\n .attr(\"x2\", () => x(domain[domain.length - 1]))\n .attr(\"y2\", (d) => y(d))\n .attr(\"stroke\", \"#c5c9cf\")\n .attr(\"stroke-width\", 1)\n .attr(\"stroke-dasharray\", \"6,6\");\n\n const graph = line()\n .curve(curveCardinal)\n .x((d) => x(d.date) + 0.5 * x.bandwidth())\n .y((d) => y(d.value));\n svg\n .append(\"path\")\n .datum(data)\n .attr(\"fill\", \"none\")\n .attr(\"stroke\", \"#cfd7e2\")\n .attr(\"stroke-width\", 2)\n .attr(\"stroke-linejoin\", \"round\")\n .attr(\"stroke-linecap\", \"round\")\n .attr(\"d\", graph);\n\n svg\n .append(\"g\")\n .selectAll(\"circle\")\n .data(data)\n .enter()\n .append(\"circle\")\n .attr(\"cx\", (d) => x(d.date) + 0.5 * x.bandwidth())\n .attr(\"cy\", (d) => y(d.value))\n .attr(\"r\", 4)\n .attr(\"fill\", \"#355698\");\n}\n","window.addEventListener(\"load\", () => {\n const el = document.getElementById(\"students_all\");\n if (!el) return;\n\n const updateValue = () => {\n const values = [];\n document.querySelectorAll(\"input[type='checkbox']\").forEach((checkbox) => {\n if (!checkbox.id.startsWith(\"student\") || checkbox.id === \"students_all\") {\n return;\n }\n\n if (checkbox.checked) {\n values.push(checkbox.value);\n }\n });\n\n document.getElementById(\"student_ids\").value = values;\n if (values.length > 0) {\n document.getElementById(\"bulk-actions\").classList.remove(\"hidden\");\n } else {\n document.getElementById(\"bulk-actions\").classList.add(\"hidden\");\n }\n };\n\n el.addEventListener(\"change\", ({ target }) => {\n document.querySelectorAll(\"input[type='checkbox']\").forEach((checkbox) => {\n if (!checkbox.id.startsWith(\"student\") || checkbox.id === \"students_all\") {\n return;\n }\n\n checkbox.checked = target.checked;\n });\n\n updateValue();\n });\n\n document.querySelectorAll(\"input[type='checkbox']\").forEach((checkbox) => {\n if (!checkbox.id.startsWith(\"student\") || checkbox.id === \"students_all\") {\n return;\n }\n\n checkbox.addEventListener(\"change\", () => {\n el.checked = false;\n updateValue();\n });\n });\n});\n\nwindow.addEventListener(\"load\", () => {\n const el = document.getElementById(\"filters-toggle\");\n if (!el) return;\n\n el.addEventListener(\"click\", () => {\n document.getElementById(\"filters\").classList.toggle(\"hidden\");\n });\n});\n\nwindow.addEventListener(\"load\", () => {\n const el = document.getElementById(\"students-tab-bar\");\n if (!el) return;\n\n el.querySelectorAll(\"button\").forEach((button) =>\n button.addEventListener(\"click\", ({ target }) => {\n el.querySelectorAll(\"button\").forEach((other) => {\n other.classList.remove(\n \"text-deep-blue-500\",\n \"border-b-4\",\n \"border-deep-blue-500\",\n \"font-semibold\"\n );\n other.classList.add(\"text-gray-500\", \"border-b-2\", \"border-gray-400\");\n document.getElementById(other.dataset.tab).classList.add(\"hidden\");\n });\n\n target.classList.remove(\"text-gray-500\", \"border-b-2\", \"border-gray-400\");\n target.classList.add(\n \"text-deep-blue-500\",\n \"border-b-4\",\n \"border-deep-blue-500\",\n \"font-semibold\"\n );\n const targetEl = document.getElementById(target.dataset.tab);\n targetEl.classList.remove(\"hidden\");\n })\n );\n});\n","window.addEventListener(\"load\", () => {\n const enabled = document.getElementById(\"translation_enabled\");\n if (!enabled || enabled.value !== \"true\") return;\n\n const nodes = {},\n strings = [];\n for (const item of document.querySelectorAll(\"[data-translate='']\")) {\n const node = item.cloneNode(true);\n delete node.dataset.translate;\n node.innerHTML = \" \";\n item.insertAdjacentElement(\"afterend\", node);\n\n nodes[item.innerText] = node;\n strings.push(item.innerText);\n }\n\n if (strings.length === 0) return;\n\n fetch(\"/translate.json\", {\n method: \"POST\",\n body: JSON.stringify({ strings }),\n headers: {\n \"X-CSRF-Token\": document.querySelector(\"meta[name=csrf-token]\")?.content,\n \"Content-Type\": \"application/json\",\n },\n })\n .then((res) => {\n if (!res.ok) throw new Error(`HTTP error, status = ${res.status}`);\n return res.json();\n })\n .then((translations) => {\n Object.keys(translations).forEach((item) => {\n const node = nodes[item];\n node.innerText = new DOMParser()\n .parseFromString(translations[item], \"text/html\")\n .querySelector(\"html\").textContent;\n delete node[item];\n });\n });\n});\n","window.addEventListener(\"load\", () => {\n const timer = document.getElementById(\"timer\");\n if (!timer) return;\n\n let total = parseInt(timer.dataset.total, 10);\n if (total <= 0) {\n timer.innerText = \"Time's Up! Test Complete.\";\n return;\n }\n\n const update = () => {\n total--;\n if (total <= 0) {\n setTimeout(() => window.location.reload(false), 2000);\n window.clearInterval(executor);\n timer.innerText = \"Time's Up! Test Complete.\";\n return;\n }\n\n timer.innerText = formatDuration(total);\n };\n\n update();\n const executor = setInterval(update, 1000);\n});\n\nfunction formatDuration(seconds) {\n const hours = parseInt(seconds / (60 * 60));\n seconds = seconds % (60 * 60);\n\n const minutes = parseInt(seconds / 60);\n seconds = seconds % 60;\n\n const sign = seconds < 0 ? \"-\" : \"\";\n\n const pad = (number) => (Math.abs(number) < 10 ? `0${number}` : number);\n return hours > 0\n ? `${sign}${hours}:${pad(minutes)}:${pad(seconds)}`\n : `${sign}${minutes}:${pad(seconds)}`;\n}\n","window.addEventListener(\"load\", () => {\n document.querySelectorAll(\"[role='combobox']\").forEach((el) => {\n const optionsEl = document.getElementById(`${el.id}-options`);\n const valueEl = document.getElementById(`${el.id}-value`);\n\n const options = {};\n for (const child of optionsEl.children) {\n options[child.id] = child;\n if (child.dataset.value === valueEl.value) {\n child.classList.add(\"font-medium\");\n }\n child.addEventListener(\"click\", () => {\n document\n .getElementById(`${el.id}-option-${valueEl.value}`)\n ?.classList?.remove(\"font-medium\");\n child.classList.add(\"font-medium\");\n el.value = child.dataset.displayValue;\n optionsEl.classList.add(\"hidden\");\n\n if (valueEl.value !== child.dataset.value) {\n valueEl.value = child.dataset.value;\n valueEl.form.submit();\n }\n });\n }\n\n const items = JSON.parse(el.dataset.items);\n const filterItems = () => {\n optionsEl.classList.remove(\"hidden\");\n\n const val = el.value.toLowerCase();\n items.forEach(([[name], id]) => {\n const option = options[`${el.id}-option-${id}`];\n if (name.toLowerCase().includes(val)) {\n option.classList.remove(\"hidden\");\n } else {\n option.classList.add(\"hidden\");\n }\n });\n };\n el.addEventListener(\"input\", () => filterItems());\n document\n .getElementById(`${el.id}-button`)\n .addEventListener(\"click\", () => optionsEl.classList.toggle(\"hidden\"));\n });\n});\n","window.toggleDailySlots = (dayIdx) => {\n const offset = 15 * dayIdx;\n let els = [];\n for (let idx = 0; idx < 15; idx++) {\n const el = document.getElementById(`slots_${offset + idx}`);\n if (el) els.push(el);\n }\n\n const newState = els.every((el) => !el.checked);\n els.forEach((el) => (el.checked = newState));\n};\n\nwindow.toggleHourlySlots = (hourIdx) => {\n let els = [];\n for (let idx = 0; idx < 7; idx++) {\n const el = document.getElementById(`slots_${15 * idx + hourIdx}`);\n if (el) els.push(el);\n }\n\n const newState = els.every((el) => !el.checked);\n els.forEach((el) => (el.checked = newState));\n};\n","import \"./hpt_exam\";\nimport \"./hpt_replay\";\nimport \"./libraries\";\nimport \"./quiz\";\nimport \"./student\";\nimport \"./students_list\";\nimport \"./translations\";\nimport \"./timer\";\nimport \"./combobox\";\nimport \"./availability_picker\";\n\nwindow.addEventListener(\"load\", () => {\n const form = document.getElementById(\"quiz-form\");\n if (!form) return;\n\n const container = document.getElementById(\"quiz-footer\");\n form.addEventListener(\"submit\", () => {\n container.querySelectorAll(\"button\").forEach((btn) => {\n btn.disabled = true;\n });\n });\n});\n\nwindow.addEventListener(\"load\", () => {\n document.querySelectorAll(\"[data-disable-with]\").forEach((btn) => {\n btn.form?.addEventListener(\"submit\", () => (btn.disabled = true));\n });\n});\n"],"names":["hptPlayerClick","videoEl","formEl","window","submitted","taps","tapEls","querySelectorAll","idx","length","push","parseFloat","value","ts","currentTime","tap","document","createElement","type","name","appendChild","isValidAttempt","addFlag","submit","flagsEl","getElementById","flag","src","dataset","classList","add","arguments","undefined","maxTaps","_loop","rest","slice","filter","other","_ret","v","hptToggleFullscreen","container","expand","compress","contains","remove","showAnswerArea","e","_document$getElementB","target","removeEventListener","addEventListener","video","_document$getElementB2","BORDER_COLORS","replayVideo","paused","play","pause","slider","duration","setupViews","dragging","replayData","description","score","trap","findTrap","innerHTML","style","borderColor","max","flags","left","concat","traps","start","width","end","step","Math","ceil","filterInput","item","caseNonsensitiveIncludes","textContent","string1","string2","toUpperCase","includes","toggle","block","checked","onchange","xhtml","namespaces","svg","xlink","xml","xmlns","namespace","prefix","i","indexOf","hasOwnProperty","space","local","creatorInherit","ownerDocument","uri","namespaceURI","documentElement","createElementNS","creatorFixed","fullname","creator","none","selector","querySelector","selection_select","select","groups","_groups","m","subgroups","Array","j","group","n","subgroup","node","subnode","call","__data__","Selection","_parents","array","x","isArray","from","empty","selectorAll","arrayAll","apply","selection_selectAll","parents","matcher","matches","childMatcher","find","prototype","childFind","match","children","childFirst","firstElementChild","selection_selectChild","childrenFilter","selection_selectChildren","selectAll","selection_filter","sparse","update","selection_enter","_enter","map","EnterNode","parent","datum","_next","_parent","constructor","child","insertBefore","next","constant$2","bindIndex","enter","exit","data","groupLength","dataLength","bindKey","key","nodeByKeyValue","Map","keyValues","keyValue","has","set","get","delete","selection_data","bind","constant","arraylike","enterGroup","updateGroup","exitGroup","i0","i1","previous","_exit","selection_exit","selection_join","onenter","onupdate","onexit","selection","append","merge","order","selection_merge","context","groups0","groups1","m0","m1","min","merges","group0","group1","selection_order","compareDocumentPosition","parentNode","selection_sort","compare","ascending","compareNode","a","b","sortgroups","sortgroup","sort","NaN","selection_call","callback","selection_nodes","selection_node","selection_size","size","selection_empty","selection_each","attrRemove","removeAttribute","attrRemoveNS","removeAttributeNS","attrConstant","setAttribute","attrConstantNS","setAttributeNS","attrFunction","attrFunctionNS","selection_attr","getAttributeNS","getAttribute","each","defaultView","styleRemove","removeProperty","styleConstant","priority","setProperty","styleFunction","selection_style","styleValue","getPropertyValue","getComputedStyle","propertyRemove","propertyConstant","propertyFunction","selection_property","classArray","string","trim","split","ClassList","_node","_names","join","splice","classedAdd","names","list","classedRemove","classedTrue","classedFalse","classedFunction","selection_classed","textRemove","textConstant","textFunction","selection_text","htmlRemove","htmlConstant","htmlFunction","selection_html","raise","nextSibling","selection_raise","lower","previousSibling","firstChild","selection_lower","selection_append","create","constantNull","selection_insert","before","removeChild","selection_remove","selection_cloneShallow","clone","cloneNode","selection_cloneDeep","selection_clone","deep","selection_datum","property","contextListener","listener","event","parseTypenames","typenames","t","onRemove","typename","on","__on","o","options","onAdd","selection_on","dispatchEvent","params","CustomEvent","createEvent","initEvent","bubbles","cancelable","detail","dispatchConstant","dispatchFunction","selection_dispatch","selection_iterator","root","selection_selection","selectChild","selectChildren","nodes","attr","classed","text","html","insert","dispatch","Symbol","iterator","k","constant$1","abs","atan2","cos","sin","sqrt","epsilon","pi","PI","halfPi","tau","acos","asin","tauEpsilon","strings","_","appendRound","digits","d","floor","Error","pow","round","Path","_x0","_y0","_x1","_y1","_append","moveTo","y","_templateObject","_taggedTemplateLiteral","closePath","_templateObject2","lineTo","_templateObject3","quadraticCurveTo","x1","y1","_templateObject4","bezierCurveTo","x2","y2","_templateObject5","arcTo","r","x0","y0","x21","y21","x01","y01","l01_2","_templateObject6","_templateObject7","x20","y20","l21_2","l20_2","l21","l01","l","tan","t01","t21","_templateObject8","_templateObject9","arc","a0","a1","ccw","dx","dy","cw","da","_templateObject10","_templateObject11","_templateObject12","_templateObject13","rect","w","h","_templateObject14","toString","withPath","shape","RangeError","arcInnerRadius","innerRadius","arcOuterRadius","outerRadius","arcStartAngle","startAngle","arcEndAngle","endAngle","arcPadAngle","padAngle","intersect","x3","y3","x10","y10","x32","y32","cornerTangents","r1","rc","lo","ox","oy","x11","y11","x00","y00","d2","D","cx0","cy0","cx1","cy1","dx0","dy0","dx1","dy1","cx","cy","B","cornerRadius","padRadius","path","buffer","r0","a01","a11","a00","a10","da0","da1","ap","rp","rc0","rc1","t0","t1","p0","p1","oc","ax","ay","bx","by","kc","lc","centroid","Linear","_context","areaStart","_line","areaEnd","lineStart","_point","lineEnd","point","curveLinear","p","W","defined","curve","output","line","pointX","pointY","defined0","that","_k","_x2","_y2","Cardinal","tension","z","custom","cardinal","Date","timeInterval","floori","offseti","count","field","interval","date","d0","d1","offset","range","stop","test","setTime","every","isFinite","durationSecond","durationMinute","durationHour","durationDay","durationWeek","timeDay","setHours","setDate","getDate","getTimezoneOffset","utcDay","setUTCHours","setUTCDate","getUTCDate","unixDay","timeWeekday","getDay","timeSunday","timeMonday","timeTuesday","timeWednesday","timeThursday","timeFriday","timeSaturday","utcWeekday","getUTCDay","utcSunday","utcMonday","utcTuesday","utcWednesday","utcThursday","utcFriday","utcSaturday","timeYear","setMonth","setFullYear","getFullYear","utcYear","setUTCMonth","setUTCFullYear","getUTCFullYear","descending","bisector","f","compare1","compare2","delta","zero","hi","mid","right","center","number","ascendingBisect","bisectRight","InternMap","entries","keyof","Object","defineProperties","_intern","_key","intern_get","intern_set","intern_delete","_ref","_ref2","_ref3","valueOf","identity","rollup","values","reduce","_len","keys","_key3","nest","regroup","index","e10","e5","e2","tickSpec","power","log10","error","factor","i2","inc","ticks","reverse","tickIncrement","tickStep","valueof","mean","sum","localDate","H","M","S","L","utcDate","UTC","newDate","formatLocale","locale","locale_dateTime","dateTime","locale_date","locale_time","time","locale_periods","periods","locale_weekdays","days","locale_shortWeekdays","shortDays","locale_months","months","locale_shortMonths","shortMonths","periodRe","formatRe","periodLookup","formatLookup","weekdayRe","weekdayLookup","shortWeekdayRe","shortWeekdayLookup","monthRe","monthLookup","shortMonthRe","shortMonthLookup","formats","formatShortWeekday","formatWeekday","formatShortMonth","formatMonth","formatDayOfMonth","formatMicroseconds","formatYearISO","formatFullYearISO","formatHour24","formatHour12","formatDayOfYear","formatMilliseconds","formatMonthNumber","formatMinutes","formatPeriod","formatQuarter","formatUnixTimestamp","formatUnixTimestampSeconds","formatSeconds","formatWeekdayNumberMonday","formatWeekNumberSunday","formatWeekNumberISO","formatWeekdayNumberSunday","formatWeekNumberMonday","formatYear","formatFullYear","formatZone","formatLiteralPercent","utcFormats","formatUTCShortWeekday","formatUTCWeekday","formatUTCShortMonth","formatUTCMonth","formatUTCDayOfMonth","formatUTCMicroseconds","formatUTCYearISO","formatUTCFullYearISO","formatUTCHour24","formatUTCHour12","formatUTCDayOfYear","formatUTCMilliseconds","formatUTCMonthNumber","formatUTCMinutes","formatUTCPeriod","formatUTCQuarter","formatUTCSeconds","formatUTCWeekdayNumberMonday","formatUTCWeekNumberSunday","formatUTCWeekNumberISO","formatUTCWeekdayNumberSunday","formatUTCWeekNumberMonday","formatUTCYear","formatUTCFullYear","formatUTCZone","parses","parseShortWeekday","parseWeekday","parseShortMonth","parseMonth","parseLocaleDateTime","parseDayOfMonth","parseMicroseconds","parseYear","parseFullYear","parseHour24","parseDayOfYear","parseMilliseconds","parseMonthNumber","parseMinutes","parsePeriod","parseQuarter","parseUnixTimestamp","parseUnixTimestampSeconds","parseSeconds","parseWeekdayNumberMonday","parseWeekNumberSunday","parseWeekNumberISO","parseWeekdayNumberSunday","parseWeekNumberMonday","parseLocaleDate","parseLocaleTime","parseZone","parseLiteralPercent","newFormat","X","c","specifier","pad","format","charCodeAt","pads","charAt","newParse","Z","parseSpecifier","week","day","Q","s","q","V","getUTCMonth","getMonth","u","U","parse","exec","toLowerCase","getHours","getUTCHours","utcFormat","utcParse","numberRe","percentRe","requoteRe","fill","sign","requote","replace","RegExp","getMilliseconds","getMinutes","getSeconds","dISO","getUTCMilliseconds","getUTCMinutes","getUTCSeconds","dow","UTCdISO","timeFormat","defaultLocale","definition","initRange","domain","implicit","ordinal","unknown","scale","copy","band","ordinalRange","bandwidth","paddingInner","paddingOuter","align","rescale","sequence","rangeRound","padding","define","factory","extend","Color","darker","brighter","reI","reN","reP","reHex","reRgbInteger","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","color","channels","assign","displayable","rgb","hex","color_formatHex","formatHex","formatHex8","color_formatHex8","formatHsl","color_formatHsl","formatRgb","color_formatRgb","hslConvert","parseInt","rgbn","Rgb","rgba","hsla","g","rgbConvert","opacity","clamp","clampi","clampa","rgb_formatHex","rgb_formatHex8","rgb_formatRgb","isNaN","Hsl","hsl","m2","hsl2rgb","clamph","clampt","linear","exponential","gamma","nogamma","rgbGamma","colorRgb","numberArray","isNumberArray","ArrayBuffer","isView","DataView","genericArray","nb","na","interpolateNumber","object","reA","reB","source","one","bi","lastIndex","am","bm","bs","interpolate","interpolateRound","constants","unit","normalize","clamper","bimap","polymap","bisect","transformer","interpolateValue","transform","untransform","piecewise","input","invert","continuous","formatDecimal","toLocaleString","formatDecimalParts","toExponential","coefficient","exponent","formatGroup","grouping","thousands","substring","formatNumerals","numerals","re","formatSpecifier","FormatSpecifier","symbol","comma","precision","formatTrim","out","prefixExponent","formatPrefixAuto","formatRounded","formatTypes","%","toFixed","toPrecision","identity$1","prefixes","Number","currencyPrefix","currency","currencySuffix","decimal","String","percent","minus","nan","suffix","formatType","maybeSuffix","valuePrefix","valueSuffix","valueNegative","Infinity","formatPrefix","precisionFixed","precisionPrefix","precisionRound","tickFormat","linearish","nice","prestep","maxIter","top","bottom","translateX","translateY","entering","__axis","axis","orient","tickArguments","tickValues","tickSizeInner","tickSizeOuter","tickPadding","devicePixelRatio","spacing","range0","range1","position","tick","tickExit","tickEnter","transition","tickSize","axisBottom","axisLeft","el","forEach","button","_ref4","tab","addBarChart","addLineGraph","preventDefault","fetch","url","headers","then","_ref5","_asyncToGenerator","res","ok","items","insertAdjacentHTML","initCollapse","_x","onclick","_e$querySelector","collapse","circularProgress","radius","lineWidth","forceColor","backColor","frontColor","backArc","frontArc","timeFunc","timeWeek","to","JSON","barChart","parseTime","_ref6","_ref7","_ref8","_ref9","margin","clientWidth","height","clientHeight","scaleBand","xAxis","xAxisG","yMax","scaleLinear","yAxis","yAxisG","lineGraph","_ref10","_ref11","_ref12","_ref13","axisG","graph","curveCardinal","updateValue","checkbox","id","startsWith","_ref14","_ref15","_document$querySelect","enabled","translate","insertAdjacentElement","innerText","method","body","stringify","content","status","json","translations","DOMParser","parseFromString","timer","total","setTimeout","location","reload","clearInterval","executor","formatDuration","setInterval","seconds","hours","minutes","optionsEl","valueEl","_loop2","_document$getElementB3","displayValue","form","filterItems","val","_ref16","option","toggleDailySlots","dayIdx","els","newState","toggleHourlySlots","hourIdx","btn","disabled","_t$form"],"mappings":"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","x_google_ignoreList":[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]}