var __defProp = Object.defineProperty; var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; var __publicField = (obj, key, value) => { __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); return value; }; var commonjsGlobal = typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : {}; function commonjsRequire(path2) { throw new Error('Could not dynamically require "' + path2 + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.'); } var moment_min = { exports: {} }; (function(module2, exports2) { !function(e, t) { module2.exports = t(); }(commonjsGlobal, function() { var H; function f() { return H.apply(null, arguments); } function a(e3) { return e3 instanceof Array || "[object Array]" === Object.prototype.toString.call(e3); } function F(e3) { return null != e3 && "[object Object]" === Object.prototype.toString.call(e3); } function c2(e3, t4) { return Object.prototype.hasOwnProperty.call(e3, t4); } function L(e3) { if (Object.getOwnPropertyNames) return 0 === Object.getOwnPropertyNames(e3).length; for (var t4 in e3) if (c2(e3, t4)) return; return 1; } function o(e3) { return void 0 === e3; } function u(e3) { return "number" == typeof e3 || "[object Number]" === Object.prototype.toString.call(e3); } function V(e3) { return e3 instanceof Date || "[object Date]" === Object.prototype.toString.call(e3); } function G(e3, t4) { for (var n2 = [], s2 = e3.length, i2 = 0; i2 < s2; ++i2) n2.push(t4(e3[i2], i2)); return n2; } function E(e3, t4) { for (var n2 in t4) c2(t4, n2) && (e3[n2] = t4[n2]); return c2(t4, "toString") && (e3.toString = t4.toString), c2(t4, "valueOf") && (e3.valueOf = t4.valueOf), e3; } function l(e3, t4, n2, s2) { return Pt(e3, t4, n2, s2, true).utc(); } function m(e3) { return null == e3._pf && (e3._pf = { empty: false, unusedTokens: [], unusedInput: [], overflow: -2, charsLeftOver: 0, nullInput: false, invalidEra: null, invalidMonth: null, invalidFormat: false, userInvalidated: false, iso: false, parsedDateParts: [], era: null, meridiem: null, rfc2822: false, weekdayMismatch: false }), e3._pf; } function A(e3) { if (null == e3._isValid) { var t4 = m(e3), n2 = j.call(t4.parsedDateParts, function(e4) { return null != e4; }), n2 = !isNaN(e3._d.getTime()) && t4.overflow < 0 && !t4.empty && !t4.invalidEra && !t4.invalidMonth && !t4.invalidWeekday && !t4.weekdayMismatch && !t4.nullInput && !t4.invalidFormat && !t4.userInvalidated && (!t4.meridiem || t4.meridiem && n2); if (e3._strict && (n2 = n2 && 0 === t4.charsLeftOver && 0 === t4.unusedTokens.length && void 0 === t4.bigHour), null != Object.isFrozen && Object.isFrozen(e3)) return n2; e3._isValid = n2; } return e3._isValid; } function I(e3) { var t4 = l(NaN); return null != e3 ? E(m(t4), e3) : m(t4).userInvalidated = true, t4; } var j = Array.prototype.some || function(e3) { for (var t4 = Object(this), n2 = t4.length >>> 0, s2 = 0; s2 < n2; s2++) if (s2 in t4 && e3.call(this, t4[s2], s2, t4)) return true; return false; }, Z = f.momentProperties = [], z = false; function $(e3, t4) { var n2, s2, i2, r2 = Z.length; if (o(t4._isAMomentObject) || (e3._isAMomentObject = t4._isAMomentObject), o(t4._i) || (e3._i = t4._i), o(t4._f) || (e3._f = t4._f), o(t4._l) || (e3._l = t4._l), o(t4._strict) || (e3._strict = t4._strict), o(t4._tzm) || (e3._tzm = t4._tzm), o(t4._isUTC) || (e3._isUTC = t4._isUTC), o(t4._offset) || (e3._offset = t4._offset), o(t4._pf) || (e3._pf = m(t4)), o(t4._locale) || (e3._locale = t4._locale), 0 < r2) for (n2 = 0; n2 < r2; n2++) o(i2 = t4[s2 = Z[n2]]) || (e3[s2] = i2); return e3; } function q(e3) { $(this, e3), this._d = new Date(null != e3._d ? e3._d.getTime() : NaN), this.isValid() || (this._d = new Date(NaN)), false === z && (z = true, f.updateOffset(this), z = false); } function h(e3) { return e3 instanceof q || null != e3 && null != e3._isAMomentObject; } function B(e3) { false === f.suppressDeprecationWarnings && "undefined" != typeof console && console.warn && console.warn("Deprecation warning: " + e3); } function e(r2, a2) { var o2 = true; return E(function() { if (null != f.deprecationHandler && f.deprecationHandler(null, r2), o2) { for (var e3, t4, n2 = [], s2 = arguments.length, i2 = 0; i2 < s2; i2++) { if (e3 = "", "object" == typeof arguments[i2]) { for (t4 in e3 += "\n[" + i2 + "] ", arguments[0]) c2(arguments[0], t4) && (e3 += t4 + ": " + arguments[0][t4] + ", "); e3 = e3.slice(0, -2); } else e3 = arguments[i2]; n2.push(e3); } B(r2 + "\nArguments: " + Array.prototype.slice.call(n2).join("") + "\n" + new Error().stack), o2 = false; } return a2.apply(this, arguments); }, a2); } var J = {}; function Q(e3, t4) { null != f.deprecationHandler && f.deprecationHandler(e3, t4), J[e3] || (B(t4), J[e3] = true); } function d(e3) { return "undefined" != typeof Function && e3 instanceof Function || "[object Function]" === Object.prototype.toString.call(e3); } function X(e3, t4) { var n2, s2 = E({}, e3); for (n2 in t4) c2(t4, n2) && (F(e3[n2]) && F(t4[n2]) ? (s2[n2] = {}, E(s2[n2], e3[n2]), E(s2[n2], t4[n2])) : null != t4[n2] ? s2[n2] = t4[n2] : delete s2[n2]); for (n2 in e3) c2(e3, n2) && !c2(t4, n2) && F(e3[n2]) && (s2[n2] = E({}, s2[n2])); return s2; } function K2(e3) { null != e3 && this.set(e3); } f.suppressDeprecationWarnings = false, f.deprecationHandler = null; var ee = Object.keys || function(e3) { var t4, n2 = []; for (t4 in e3) c2(e3, t4) && n2.push(t4); return n2; }; function r(e3, t4, n2) { var s2 = "" + Math.abs(e3); return (0 <= e3 ? n2 ? "+" : "" : "-") + Math.pow(10, Math.max(0, t4 - s2.length)).toString().substr(1) + s2; } var te = /(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g, ne = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g, se = {}, ie = {}; function s(e3, t4, n2, s2) { var i2 = "string" == typeof s2 ? function() { return this[s2](); } : s2; e3 && (ie[e3] = i2), t4 && (ie[t4[0]] = function() { return r(i2.apply(this, arguments), t4[1], t4[2]); }), n2 && (ie[n2] = function() { return this.localeData().ordinal(i2.apply(this, arguments), e3); }); } function re2(e3, t4) { return e3.isValid() ? (t4 = ae(t4, e3.localeData()), se[t4] = se[t4] || function(s2) { for (var e4, i2 = s2.match(te), t5 = 0, r2 = i2.length; t5 < r2; t5++) ie[i2[t5]] ? i2[t5] = ie[i2[t5]] : i2[t5] = (e4 = i2[t5]).match(/\[[\s\S]/) ? e4.replace(/^\[|\]$/g, "") : e4.replace(/\\/g, ""); return function(e6) { for (var t6 = "", n2 = 0; n2 < r2; n2++) t6 += d(i2[n2]) ? i2[n2].call(e6, s2) : i2[n2]; return t6; }; }(t4), se[t4](e3)) : e3.localeData().invalidDate(); } function ae(e3, t4) { var n2 = 5; function s2(e4) { return t4.longDateFormat(e4) || e4; } for (ne.lastIndex = 0; 0 <= n2 && ne.test(e3); ) e3 = e3.replace(ne, s2), ne.lastIndex = 0, --n2; return e3; } var oe = {}; function t(e3, t4) { var n2 = e3.toLowerCase(); oe[n2] = oe[n2 + "s"] = oe[t4] = e3; } function _2(e3) { return "string" == typeof e3 ? oe[e3] || oe[e3.toLowerCase()] : void 0; } function ue(e3) { var t4, n2, s2 = {}; for (n2 in e3) c2(e3, n2) && (t4 = _2(n2)) && (s2[t4] = e3[n2]); return s2; } var le = {}; function n(e3, t4) { le[e3] = t4; } function he(e3) { return e3 % 4 == 0 && e3 % 100 != 0 || e3 % 400 == 0; } function y2(e3) { return e3 < 0 ? Math.ceil(e3) || 0 : Math.floor(e3); } function g(e3) { var e3 = +e3, t4 = 0; return t4 = 0 != e3 && isFinite(e3) ? y2(e3) : t4; } function de(t4, n2) { return function(e3) { return null != e3 ? (fe(this, t4, e3), f.updateOffset(this, n2), this) : ce(this, t4); }; } function ce(e3, t4) { return e3.isValid() ? e3._d["get" + (e3._isUTC ? "UTC" : "") + t4]() : NaN; } function fe(e3, t4, n2) { e3.isValid() && !isNaN(n2) && ("FullYear" === t4 && he(e3.year()) && 1 === e3.month() && 29 === e3.date() ? (n2 = g(n2), e3._d["set" + (e3._isUTC ? "UTC" : "") + t4](n2, e3.month(), We(n2, e3.month()))) : e3._d["set" + (e3._isUTC ? "UTC" : "") + t4](n2)); } var i = /\d/, w2 = /\d\d/, me = /\d{3}/, _e = /\d{4}/, ye = /[+-]?\d{6}/, p = /\d\d?/, ge = /\d\d\d\d?/, we = /\d\d\d\d\d\d?/, pe = /\d{1,3}/, ke = /\d{1,4}/, ve = /[+-]?\d{1,6}/, Me = /\d+/, De = /[+-]?\d+/, Se = /Z|[+-]\d\d:?\d\d/gi, Ye = /Z|[+-]\d\d(?::?\d\d)?/gi, k = /[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i; function v(e3, n2, s2) { be[e3] = d(n2) ? n2 : function(e4, t4) { return e4 && s2 ? s2 : n2; }; } function Oe(e3, t4) { return c2(be, e3) ? be[e3](t4._strict, t4._locale) : new RegExp(M(e3.replace("\\", "").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function(e4, t5, n2, s2, i2) { return t5 || n2 || s2 || i2; }))); } function M(e3) { return e3.replace(/[-\/\\^$*+?.()|[\]{}]/g, "\\$&"); } var be = {}, xe = {}; function D(e3, n2) { var t4, s2, i2 = n2; for ("string" == typeof e3 && (e3 = [e3]), u(n2) && (i2 = function(e4, t5) { t5[n2] = g(e4); }), s2 = e3.length, t4 = 0; t4 < s2; t4++) xe[e3[t4]] = i2; } function Te(e3, i2) { D(e3, function(e4, t4, n2, s2) { n2._w = n2._w || {}, i2(e4, n2._w, n2, s2); }); } var S, Y = 0, O = 1, b = 2, x2 = 3, T = 4, N = 5, Ne = 6, Pe = 7, Re = 8; function We(e3, t4) { if (isNaN(e3) || isNaN(t4)) return NaN; var n2 = (t4 % (n2 = 12) + n2) % n2; return e3 += (t4 - n2) / 12, 1 == n2 ? he(e3) ? 29 : 28 : 31 - n2 % 7 % 2; } S = Array.prototype.indexOf || function(e3) { for (var t4 = 0; t4 < this.length; ++t4) if (this[t4] === e3) return t4; return -1; }, s("M", ["MM", 2], "Mo", function() { return this.month() + 1; }), s("MMM", 0, 0, function(e3) { return this.localeData().monthsShort(this, e3); }), s("MMMM", 0, 0, function(e3) { return this.localeData().months(this, e3); }), t("month", "M"), n("month", 8), v("M", p), v("MM", p, w2), v("MMM", function(e3, t4) { return t4.monthsShortRegex(e3); }), v("MMMM", function(e3, t4) { return t4.monthsRegex(e3); }), D(["M", "MM"], function(e3, t4) { t4[O] = g(e3) - 1; }), D(["MMM", "MMMM"], function(e3, t4, n2, s2) { s2 = n2._locale.monthsParse(e3, s2, n2._strict); null != s2 ? t4[O] = s2 : m(n2).invalidMonth = e3; }); var Ce = "January_February_March_April_May_June_July_August_September_October_November_December".split("_"), Ue = "Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"), He = /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/, Fe = k, Le = k; function Ve(e3, t4) { var n2; if (e3.isValid()) { if ("string" == typeof t4) { if (/^\d+$/.test(t4)) t4 = g(t4); else if (!u(t4 = e3.localeData().monthsParse(t4))) return; } n2 = Math.min(e3.date(), We(e3.year(), t4)), e3._d["set" + (e3._isUTC ? "UTC" : "") + "Month"](t4, n2); } } function Ge(e3) { return null != e3 ? (Ve(this, e3), f.updateOffset(this, true), this) : ce(this, "Month"); } function Ee() { function e3(e4, t5) { return t5.length - e4.length; } for (var t4, n2 = [], s2 = [], i2 = [], r2 = 0; r2 < 12; r2++) t4 = l([2e3, r2]), n2.push(this.monthsShort(t4, "")), s2.push(this.months(t4, "")), i2.push(this.months(t4, "")), i2.push(this.monthsShort(t4, "")); for (n2.sort(e3), s2.sort(e3), i2.sort(e3), r2 = 0; r2 < 12; r2++) n2[r2] = M(n2[r2]), s2[r2] = M(s2[r2]); for (r2 = 0; r2 < 24; r2++) i2[r2] = M(i2[r2]); this._monthsRegex = new RegExp("^(" + i2.join("|") + ")", "i"), this._monthsShortRegex = this._monthsRegex, this._monthsStrictRegex = new RegExp("^(" + s2.join("|") + ")", "i"), this._monthsShortStrictRegex = new RegExp("^(" + n2.join("|") + ")", "i"); } function Ae(e3) { return he(e3) ? 366 : 365; } s("Y", 0, 0, function() { var e3 = this.year(); return e3 <= 9999 ? r(e3, 4) : "+" + e3; }), s(0, ["YY", 2], 0, function() { return this.year() % 100; }), s(0, ["YYYY", 4], 0, "year"), s(0, ["YYYYY", 5], 0, "year"), s(0, ["YYYYYY", 6, true], 0, "year"), t("year", "y"), n("year", 1), v("Y", De), v("YY", p, w2), v("YYYY", ke, _e), v("YYYYY", ve, ye), v("YYYYYY", ve, ye), D(["YYYYY", "YYYYYY"], Y), D("YYYY", function(e3, t4) { t4[Y] = 2 === e3.length ? f.parseTwoDigitYear(e3) : g(e3); }), D("YY", function(e3, t4) { t4[Y] = f.parseTwoDigitYear(e3); }), D("Y", function(e3, t4) { t4[Y] = parseInt(e3, 10); }), f.parseTwoDigitYear = function(e3) { return g(e3) + (68 < g(e3) ? 1900 : 2e3); }; var Ie = de("FullYear", true); function je(e3, t4, n2, s2, i2, r2, a2) { var o2; return e3 < 100 && 0 <= e3 ? (o2 = new Date(e3 + 400, t4, n2, s2, i2, r2, a2), isFinite(o2.getFullYear()) && o2.setFullYear(e3)) : o2 = new Date(e3, t4, n2, s2, i2, r2, a2), o2; } function Ze(e3) { var t4; return e3 < 100 && 0 <= e3 ? ((t4 = Array.prototype.slice.call(arguments))[0] = e3 + 400, t4 = new Date(Date.UTC.apply(null, t4)), isFinite(t4.getUTCFullYear()) && t4.setUTCFullYear(e3)) : t4 = new Date(Date.UTC.apply(null, arguments)), t4; } function ze(e3, t4, n2) { n2 = 7 + t4 - n2; return n2 - (7 + Ze(e3, 0, n2).getUTCDay() - t4) % 7 - 1; } function $e(e3, t4, n2, s2, i2) { var r2, t4 = 1 + 7 * (t4 - 1) + (7 + n2 - s2) % 7 + ze(e3, s2, i2), n2 = t4 <= 0 ? Ae(r2 = e3 - 1) + t4 : t4 > Ae(e3) ? (r2 = e3 + 1, t4 - Ae(e3)) : (r2 = e3, t4); return { year: r2, dayOfYear: n2 }; } function qe(e3, t4, n2) { var s2, i2, r2 = ze(e3.year(), t4, n2), r2 = Math.floor((e3.dayOfYear() - r2 - 1) / 7) + 1; return r2 < 1 ? s2 = r2 + P(i2 = e3.year() - 1, t4, n2) : r2 > P(e3.year(), t4, n2) ? (s2 = r2 - P(e3.year(), t4, n2), i2 = e3.year() + 1) : (i2 = e3.year(), s2 = r2), { week: s2, year: i2 }; } function P(e3, t4, n2) { var s2 = ze(e3, t4, n2), t4 = ze(e3 + 1, t4, n2); return (Ae(e3) - s2 + t4) / 7; } s("w", ["ww", 2], "wo", "week"), s("W", ["WW", 2], "Wo", "isoWeek"), t("week", "w"), t("isoWeek", "W"), n("week", 5), n("isoWeek", 5), v("w", p), v("ww", p, w2), v("W", p), v("WW", p, w2), Te(["w", "ww", "W", "WW"], function(e3, t4, n2, s2) { t4[s2.substr(0, 1)] = g(e3); }); function Be(e3, t4) { return e3.slice(t4, 7).concat(e3.slice(0, t4)); } s("d", 0, "do", "day"), s("dd", 0, 0, function(e3) { return this.localeData().weekdaysMin(this, e3); }), s("ddd", 0, 0, function(e3) { return this.localeData().weekdaysShort(this, e3); }), s("dddd", 0, 0, function(e3) { return this.localeData().weekdays(this, e3); }), s("e", 0, 0, "weekday"), s("E", 0, 0, "isoWeekday"), t("day", "d"), t("weekday", "e"), t("isoWeekday", "E"), n("day", 11), n("weekday", 11), n("isoWeekday", 11), v("d", p), v("e", p), v("E", p), v("dd", function(e3, t4) { return t4.weekdaysMinRegex(e3); }), v("ddd", function(e3, t4) { return t4.weekdaysShortRegex(e3); }), v("dddd", function(e3, t4) { return t4.weekdaysRegex(e3); }), Te(["dd", "ddd", "dddd"], function(e3, t4, n2, s2) { s2 = n2._locale.weekdaysParse(e3, s2, n2._strict); null != s2 ? t4.d = s2 : m(n2).invalidWeekday = e3; }), Te(["d", "e", "E"], function(e3, t4, n2, s2) { t4[s2] = g(e3); }); var Je = "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"), Qe = "Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"), Xe = "Su_Mo_Tu_We_Th_Fr_Sa".split("_"), Ke = k, et = k, tt = k; function nt() { function e3(e4, t5) { return t5.length - e4.length; } for (var t4, n2, s2, i2 = [], r2 = [], a2 = [], o2 = [], u2 = 0; u2 < 7; u2++) s2 = l([2e3, 1]).day(u2), t4 = M(this.weekdaysMin(s2, "")), n2 = M(this.weekdaysShort(s2, "")), s2 = M(this.weekdays(s2, "")), i2.push(t4), r2.push(n2), a2.push(s2), o2.push(t4), o2.push(n2), o2.push(s2); i2.sort(e3), r2.sort(e3), a2.sort(e3), o2.sort(e3), this._weekdaysRegex = new RegExp("^(" + o2.join("|") + ")", "i"), this._weekdaysShortRegex = this._weekdaysRegex, this._weekdaysMinRegex = this._weekdaysRegex, this._weekdaysStrictRegex = new RegExp("^(" + a2.join("|") + ")", "i"), this._weekdaysShortStrictRegex = new RegExp("^(" + r2.join("|") + ")", "i"), this._weekdaysMinStrictRegex = new RegExp("^(" + i2.join("|") + ")", "i"); } function st() { return this.hours() % 12 || 12; } function it(e3, t4) { s(e3, 0, 0, function() { return this.localeData().meridiem(this.hours(), this.minutes(), t4); }); } function rt(e3, t4) { return t4._meridiemParse; } s("H", ["HH", 2], 0, "hour"), s("h", ["hh", 2], 0, st), s("k", ["kk", 2], 0, function() { return this.hours() || 24; }), s("hmm", 0, 0, function() { return "" + st.apply(this) + r(this.minutes(), 2); }), s("hmmss", 0, 0, function() { return "" + st.apply(this) + r(this.minutes(), 2) + r(this.seconds(), 2); }), s("Hmm", 0, 0, function() { return "" + this.hours() + r(this.minutes(), 2); }), s("Hmmss", 0, 0, function() { return "" + this.hours() + r(this.minutes(), 2) + r(this.seconds(), 2); }), it("a", true), it("A", false), t("hour", "h"), n("hour", 13), v("a", rt), v("A", rt), v("H", p), v("h", p), v("k", p), v("HH", p, w2), v("hh", p, w2), v("kk", p, w2), v("hmm", ge), v("hmmss", we), v("Hmm", ge), v("Hmmss", we), D(["H", "HH"], x2), D(["k", "kk"], function(e3, t4, n2) { e3 = g(e3); t4[x2] = 24 === e3 ? 0 : e3; }), D(["a", "A"], function(e3, t4, n2) { n2._isPm = n2._locale.isPM(e3), n2._meridiem = e3; }), D(["h", "hh"], function(e3, t4, n2) { t4[x2] = g(e3), m(n2).bigHour = true; }), D("hmm", function(e3, t4, n2) { var s2 = e3.length - 2; t4[x2] = g(e3.substr(0, s2)), t4[T] = g(e3.substr(s2)), m(n2).bigHour = true; }), D("hmmss", function(e3, t4, n2) { var s2 = e3.length - 4, i2 = e3.length - 2; t4[x2] = g(e3.substr(0, s2)), t4[T] = g(e3.substr(s2, 2)), t4[N] = g(e3.substr(i2)), m(n2).bigHour = true; }), D("Hmm", function(e3, t4, n2) { var s2 = e3.length - 2; t4[x2] = g(e3.substr(0, s2)), t4[T] = g(e3.substr(s2)); }), D("Hmmss", function(e3, t4, n2) { var s2 = e3.length - 4, i2 = e3.length - 2; t4[x2] = g(e3.substr(0, s2)), t4[T] = g(e3.substr(s2, 2)), t4[N] = g(e3.substr(i2)); }); k = de("Hours", true); var at, ot = { calendar: { sameDay: "[Today at] LT", nextDay: "[Tomorrow at] LT", nextWeek: "dddd [at] LT", lastDay: "[Yesterday at] LT", lastWeek: "[Last] dddd [at] LT", sameElse: "L" }, longDateFormat: { LTS: "h:mm:ss A", LT: "h:mm A", L: "MM/DD/YYYY", LL: "MMMM D, YYYY", LLL: "MMMM D, YYYY h:mm A", LLLL: "dddd, MMMM D, YYYY h:mm A" }, invalidDate: "Invalid date", ordinal: "%d", dayOfMonthOrdinalParse: /\d{1,2}/, relativeTime: { future: "in %s", past: "%s ago", s: "a few seconds", ss: "%d seconds", m: "a minute", mm: "%d minutes", h: "an hour", hh: "%d hours", d: "a day", dd: "%d days", w: "a week", ww: "%d weeks", M: "a month", MM: "%d months", y: "a year", yy: "%d years" }, months: Ce, monthsShort: Ue, week: { dow: 0, doy: 6 }, weekdays: Je, weekdaysMin: Xe, weekdaysShort: Qe, meridiemParse: /[ap]\.?m?\.?/i }, R = {}, ut = {}; function lt(e3) { return e3 && e3.toLowerCase().replace("_", "-"); } function ht(e3) { for (var t4, n2, s2, i2, r2 = 0; r2 < e3.length; ) { for (t4 = (i2 = lt(e3[r2]).split("-")).length, n2 = (n2 = lt(e3[r2 + 1])) ? n2.split("-") : null; 0 < t4; ) { if (s2 = dt(i2.slice(0, t4).join("-"))) return s2; if (n2 && n2.length >= t4 && function(e4, t5) { for (var n3 = Math.min(e4.length, t5.length), s3 = 0; s3 < n3; s3 += 1) if (e4[s3] !== t5[s3]) return s3; return n3; }(i2, n2) >= t4 - 1) break; t4--; } r2++; } return at; } function dt(t4) { var e3; if (void 0 === R[t4] && true && module2 && module2.exports && null != t4.match("^[^/\\\\]*$")) try { e3 = at._abbr, commonjsRequire("./locale/" + t4), ct(e3); } catch (e4) { R[t4] = null; } return R[t4]; } function ct(e3, t4) { return e3 && ((t4 = o(t4) ? mt(e3) : ft(e3, t4)) ? at = t4 : "undefined" != typeof console && console.warn && console.warn("Locale " + e3 + " not found. Did you forget to load it?")), at._abbr; } function ft(e3, t4) { if (null === t4) return delete R[e3], null; var n2, s2 = ot; if (t4.abbr = e3, null != R[e3]) Q("defineLocaleOverride", "use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."), s2 = R[e3]._config; else if (null != t4.parentLocale) if (null != R[t4.parentLocale]) s2 = R[t4.parentLocale]._config; else { if (null == (n2 = dt(t4.parentLocale))) return ut[t4.parentLocale] || (ut[t4.parentLocale] = []), ut[t4.parentLocale].push({ name: e3, config: t4 }), null; s2 = n2._config; } return R[e3] = new K2(X(s2, t4)), ut[e3] && ut[e3].forEach(function(e4) { ft(e4.name, e4.config); }), ct(e3), R[e3]; } function mt(e3) { var t4; if (!(e3 = e3 && e3._locale && e3._locale._abbr ? e3._locale._abbr : e3)) return at; if (!a(e3)) { if (t4 = dt(e3)) return t4; e3 = [e3]; } return ht(e3); } function _t(e3) { var t4 = e3._a; return t4 && -2 === m(e3).overflow && (t4 = t4[O] < 0 || 11 < t4[O] ? O : t4[b] < 1 || t4[b] > We(t4[Y], t4[O]) ? b : t4[x2] < 0 || 24 < t4[x2] || 24 === t4[x2] && (0 !== t4[T] || 0 !== t4[N] || 0 !== t4[Ne]) ? x2 : t4[T] < 0 || 59 < t4[T] ? T : t4[N] < 0 || 59 < t4[N] ? N : t4[Ne] < 0 || 999 < t4[Ne] ? Ne : -1, m(e3)._overflowDayOfYear && (t4 < Y || b < t4) && (t4 = b), m(e3)._overflowWeeks && -1 === t4 && (t4 = Pe), m(e3)._overflowWeekday && -1 === t4 && (t4 = Re), m(e3).overflow = t4), e3; } var yt = /^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/, gt = /^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/, wt = /Z|[+-]\d\d(?::?\d\d)?/, pt = [["YYYYYY-MM-DD", /[+-]\d{6}-\d\d-\d\d/], ["YYYY-MM-DD", /\d{4}-\d\d-\d\d/], ["GGGG-[W]WW-E", /\d{4}-W\d\d-\d/], ["GGGG-[W]WW", /\d{4}-W\d\d/, false], ["YYYY-DDD", /\d{4}-\d{3}/], ["YYYY-MM", /\d{4}-\d\d/, false], ["YYYYYYMMDD", /[+-]\d{10}/], ["YYYYMMDD", /\d{8}/], ["GGGG[W]WWE", /\d{4}W\d{3}/], ["GGGG[W]WW", /\d{4}W\d{2}/, false], ["YYYYDDD", /\d{7}/], ["YYYYMM", /\d{6}/, false], ["YYYY", /\d{4}/, false]], kt = [["HH:mm:ss.SSSS", /\d\d:\d\d:\d\d\.\d+/], ["HH:mm:ss,SSSS", /\d\d:\d\d:\d\d,\d+/], ["HH:mm:ss", /\d\d:\d\d:\d\d/], ["HH:mm", /\d\d:\d\d/], ["HHmmss.SSSS", /\d\d\d\d\d\d\.\d+/], ["HHmmss,SSSS", /\d\d\d\d\d\d,\d+/], ["HHmmss", /\d\d\d\d\d\d/], ["HHmm", /\d\d\d\d/], ["HH", /\d\d/]], vt = /^\/?Date\((-?\d+)/i, Mt = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/, Dt = { UT: 0, GMT: 0, EDT: -240, EST: -300, CDT: -300, CST: -360, MDT: -360, MST: -420, PDT: -420, PST: -480 }; function St(e3) { var t4, n2, s2, i2, r2, a2, o2 = e3._i, u2 = yt.exec(o2) || gt.exec(o2), o2 = pt.length, l2 = kt.length; if (u2) { for (m(e3).iso = true, t4 = 0, n2 = o2; t4 < n2; t4++) if (pt[t4][1].exec(u2[1])) { i2 = pt[t4][0], s2 = false !== pt[t4][2]; break; } if (null == i2) e3._isValid = false; else { if (u2[3]) { for (t4 = 0, n2 = l2; t4 < n2; t4++) if (kt[t4][1].exec(u2[3])) { r2 = (u2[2] || " ") + kt[t4][0]; break; } if (null == r2) return void (e3._isValid = false); } if (s2 || null == r2) { if (u2[4]) { if (!wt.exec(u2[4])) return void (e3._isValid = false); a2 = "Z"; } e3._f = i2 + (r2 || "") + (a2 || ""), Tt(e3); } else e3._isValid = false; } } else e3._isValid = false; } function Yt(e3, t4, n2, s2, i2, r2) { e3 = [function(e4) { e4 = parseInt(e4, 10); { if (e4 <= 49) return 2e3 + e4; if (e4 <= 999) return 1900 + e4; } return e4; }(e3), Ue.indexOf(t4), parseInt(n2, 10), parseInt(s2, 10), parseInt(i2, 10)]; return r2 && e3.push(parseInt(r2, 10)), e3; } function Ot(e3) { var t4, n2, s2, i2, r2 = Mt.exec(e3._i.replace(/\([^()]*\)|[\n\t]/g, " ").replace(/(\s\s+)/g, " ").replace(/^\s\s*/, "").replace(/\s\s*$/, "")); r2 ? (t4 = Yt(r2[4], r2[3], r2[2], r2[5], r2[6], r2[7]), n2 = r2[1], s2 = t4, i2 = e3, n2 && Qe.indexOf(n2) !== new Date(s2[0], s2[1], s2[2]).getDay() ? (m(i2).weekdayMismatch = true, i2._isValid = false) : (e3._a = t4, e3._tzm = (n2 = r2[8], s2 = r2[9], i2 = r2[10], n2 ? Dt[n2] : s2 ? 0 : 60 * (((n2 = parseInt(i2, 10)) - (s2 = n2 % 100)) / 100) + s2), e3._d = Ze.apply(null, e3._a), e3._d.setUTCMinutes(e3._d.getUTCMinutes() - e3._tzm), m(e3).rfc2822 = true)) : e3._isValid = false; } function bt(e3, t4, n2) { return null != e3 ? e3 : null != t4 ? t4 : n2; } function xt(e3) { var t4, n2, s2, i2, r2, a2, o2, u2, l2, h2, d2, c3 = []; if (!e3._d) { for (s2 = e3, i2 = new Date(f.now()), n2 = s2._useUTC ? [i2.getUTCFullYear(), i2.getUTCMonth(), i2.getUTCDate()] : [i2.getFullYear(), i2.getMonth(), i2.getDate()], e3._w && null == e3._a[b] && null == e3._a[O] && (null != (i2 = (s2 = e3)._w).GG || null != i2.W || null != i2.E ? (u2 = 1, l2 = 4, r2 = bt(i2.GG, s2._a[Y], qe(W(), 1, 4).year), a2 = bt(i2.W, 1), ((o2 = bt(i2.E, 1)) < 1 || 7 < o2) && (h2 = true)) : (u2 = s2._locale._week.dow, l2 = s2._locale._week.doy, d2 = qe(W(), u2, l2), r2 = bt(i2.gg, s2._a[Y], d2.year), a2 = bt(i2.w, d2.week), null != i2.d ? ((o2 = i2.d) < 0 || 6 < o2) && (h2 = true) : null != i2.e ? (o2 = i2.e + u2, (i2.e < 0 || 6 < i2.e) && (h2 = true)) : o2 = u2), a2 < 1 || a2 > P(r2, u2, l2) ? m(s2)._overflowWeeks = true : null != h2 ? m(s2)._overflowWeekday = true : (d2 = $e(r2, a2, o2, u2, l2), s2._a[Y] = d2.year, s2._dayOfYear = d2.dayOfYear)), null != e3._dayOfYear && (i2 = bt(e3._a[Y], n2[Y]), (e3._dayOfYear > Ae(i2) || 0 === e3._dayOfYear) && (m(e3)._overflowDayOfYear = true), h2 = Ze(i2, 0, e3._dayOfYear), e3._a[O] = h2.getUTCMonth(), e3._a[b] = h2.getUTCDate()), t4 = 0; t4 < 3 && null == e3._a[t4]; ++t4) e3._a[t4] = c3[t4] = n2[t4]; for (; t4 < 7; t4++) e3._a[t4] = c3[t4] = null == e3._a[t4] ? 2 === t4 ? 1 : 0 : e3._a[t4]; 24 === e3._a[x2] && 0 === e3._a[T] && 0 === e3._a[N] && 0 === e3._a[Ne] && (e3._nextDay = true, e3._a[x2] = 0), e3._d = (e3._useUTC ? Ze : je).apply(null, c3), r2 = e3._useUTC ? e3._d.getUTCDay() : e3._d.getDay(), null != e3._tzm && e3._d.setUTCMinutes(e3._d.getUTCMinutes() - e3._tzm), e3._nextDay && (e3._a[x2] = 24), e3._w && void 0 !== e3._w.d && e3._w.d !== r2 && (m(e3).weekdayMismatch = true); } } function Tt(e3) { if (e3._f === f.ISO_8601) St(e3); else if (e3._f === f.RFC_2822) Ot(e3); else { e3._a = [], m(e3).empty = true; for (var t4, n2, s2, i2, r2, a2 = "" + e3._i, o2 = a2.length, u2 = 0, l2 = ae(e3._f, e3._locale).match(te) || [], h2 = l2.length, d2 = 0; d2 < h2; d2++) n2 = l2[d2], (t4 = (a2.match(Oe(n2, e3)) || [])[0]) && (0 < (s2 = a2.substr(0, a2.indexOf(t4))).length && m(e3).unusedInput.push(s2), a2 = a2.slice(a2.indexOf(t4) + t4.length), u2 += t4.length), ie[n2] ? (t4 ? m(e3).empty = false : m(e3).unusedTokens.push(n2), s2 = n2, r2 = e3, null != (i2 = t4) && c2(xe, s2) && xe[s2](i2, r2._a, r2, s2)) : e3._strict && !t4 && m(e3).unusedTokens.push(n2); m(e3).charsLeftOver = o2 - u2, 0 < a2.length && m(e3).unusedInput.push(a2), e3._a[x2] <= 12 && true === m(e3).bigHour && 0 < e3._a[x2] && (m(e3).bigHour = void 0), m(e3).parsedDateParts = e3._a.slice(0), m(e3).meridiem = e3._meridiem, e3._a[x2] = function(e4, t5, n3) { if (null == n3) return t5; return null != e4.meridiemHour ? e4.meridiemHour(t5, n3) : null != e4.isPM ? ((e4 = e4.isPM(n3)) && t5 < 12 && (t5 += 12), t5 = e4 || 12 !== t5 ? t5 : 0) : t5; }(e3._locale, e3._a[x2], e3._meridiem), null !== (o2 = m(e3).era) && (e3._a[Y] = e3._locale.erasConvertYear(o2, e3._a[Y])), xt(e3), _t(e3); } } function Nt(e3) { var t4, n2, s2, i2 = e3._i, r2 = e3._f; if (e3._locale = e3._locale || mt(e3._l), null === i2 || void 0 === r2 && "" === i2) return I({ nullInput: true }); if ("string" == typeof i2 && (e3._i = i2 = e3._locale.preparse(i2)), h(i2)) return new q(_t(i2)); if (V(i2)) e3._d = i2; else if (a(r2)) !function(e4) { var t5, n3, s3, i3, r3, a2, o2 = false, u2 = e4._f.length; if (0 === u2) return m(e4).invalidFormat = true, e4._d = new Date(NaN); for (i3 = 0; i3 < u2; i3++) r3 = 0, a2 = false, t5 = $({}, e4), null != e4._useUTC && (t5._useUTC = e4._useUTC), t5._f = e4._f[i3], Tt(t5), A(t5) && (a2 = true), r3 = (r3 += m(t5).charsLeftOver) + 10 * m(t5).unusedTokens.length, m(t5).score = r3, o2 ? r3 < s3 && (s3 = r3, n3 = t5) : (null == s3 || r3 < s3 || a2) && (s3 = r3, n3 = t5, a2 && (o2 = true)); E(e4, n3 || t5); }(e3); else if (r2) Tt(e3); else if (o(r2 = (i2 = e3)._i)) i2._d = new Date(f.now()); else V(r2) ? i2._d = new Date(r2.valueOf()) : "string" == typeof r2 ? (n2 = i2, null !== (t4 = vt.exec(n2._i)) ? n2._d = new Date(+t4[1]) : (St(n2), false === n2._isValid && (delete n2._isValid, Ot(n2), false === n2._isValid && (delete n2._isValid, n2._strict ? n2._isValid = false : f.createFromInputFallback(n2))))) : a(r2) ? (i2._a = G(r2.slice(0), function(e4) { return parseInt(e4, 10); }), xt(i2)) : F(r2) ? (t4 = i2)._d || (s2 = void 0 === (n2 = ue(t4._i)).day ? n2.date : n2.day, t4._a = G([n2.year, n2.month, s2, n2.hour, n2.minute, n2.second, n2.millisecond], function(e4) { return e4 && parseInt(e4, 10); }), xt(t4)) : u(r2) ? i2._d = new Date(r2) : f.createFromInputFallback(i2); return A(e3) || (e3._d = null), e3; } function Pt(e3, t4, n2, s2, i2) { var r2 = {}; return true !== t4 && false !== t4 || (s2 = t4, t4 = void 0), true !== n2 && false !== n2 || (s2 = n2, n2 = void 0), (F(e3) && L(e3) || a(e3) && 0 === e3.length) && (e3 = void 0), r2._isAMomentObject = true, r2._useUTC = r2._isUTC = i2, r2._l = n2, r2._i = e3, r2._f = t4, r2._strict = s2, (i2 = new q(_t(Nt(i2 = r2))))._nextDay && (i2.add(1, "d"), i2._nextDay = void 0), i2; } function W(e3, t4, n2, s2) { return Pt(e3, t4, n2, s2, false); } f.createFromInputFallback = e("value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.", function(e3) { e3._d = new Date(e3._i + (e3._useUTC ? " UTC" : "")); }), f.ISO_8601 = function() { }, f.RFC_2822 = function() { }; ge = e("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/", function() { var e3 = W.apply(null, arguments); return this.isValid() && e3.isValid() ? e3 < this ? this : e3 : I(); }), we = e("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/", function() { var e3 = W.apply(null, arguments); return this.isValid() && e3.isValid() ? this < e3 ? this : e3 : I(); }); function Rt(e3, t4) { var n2, s2; if (!(t4 = 1 === t4.length && a(t4[0]) ? t4[0] : t4).length) return W(); for (n2 = t4[0], s2 = 1; s2 < t4.length; ++s2) t4[s2].isValid() && !t4[s2][e3](n2) || (n2 = t4[s2]); return n2; } var Wt = ["year", "quarter", "month", "week", "day", "hour", "minute", "second", "millisecond"]; function Ct(e3) { var e3 = ue(e3), t4 = e3.year || 0, n2 = e3.quarter || 0, s2 = e3.month || 0, i2 = e3.week || e3.isoWeek || 0, r2 = e3.day || 0, a2 = e3.hour || 0, o2 = e3.minute || 0, u2 = e3.second || 0, l2 = e3.millisecond || 0; this._isValid = function(e4) { var t5, n3, s3 = false, i3 = Wt.length; for (t5 in e4) if (c2(e4, t5) && (-1 === S.call(Wt, t5) || null != e4[t5] && isNaN(e4[t5]))) return false; for (n3 = 0; n3 < i3; ++n3) if (e4[Wt[n3]]) { if (s3) return false; parseFloat(e4[Wt[n3]]) !== g(e4[Wt[n3]]) && (s3 = true); } return true; }(e3), this._milliseconds = +l2 + 1e3 * u2 + 6e4 * o2 + 1e3 * a2 * 60 * 60, this._days = +r2 + 7 * i2, this._months = +s2 + 3 * n2 + 12 * t4, this._data = {}, this._locale = mt(), this._bubble(); } function Ut(e3) { return e3 instanceof Ct; } function Ht(e3) { return e3 < 0 ? -1 * Math.round(-1 * e3) : Math.round(e3); } function Ft(e3, n2) { s(e3, 0, 0, function() { var e4 = this.utcOffset(), t4 = "+"; return e4 < 0 && (e4 = -e4, t4 = "-"), t4 + r(~~(e4 / 60), 2) + n2 + r(~~e4 % 60, 2); }); } Ft("Z", ":"), Ft("ZZ", ""), v("Z", Ye), v("ZZ", Ye), D(["Z", "ZZ"], function(e3, t4, n2) { n2._useUTC = true, n2._tzm = Vt(Ye, e3); }); var Lt = /([\+\-]|\d\d)/gi; function Vt(e3, t4) { var t4 = (t4 || "").match(e3); return null === t4 ? null : 0 === (t4 = 60 * (e3 = ((t4[t4.length - 1] || []) + "").match(Lt) || ["-", 0, 0])[1] + g(e3[2])) ? 0 : "+" === e3[0] ? t4 : -t4; } function Gt(e3, t4) { var n2; return t4._isUTC ? (t4 = t4.clone(), n2 = (h(e3) || V(e3) ? e3 : W(e3)).valueOf() - t4.valueOf(), t4._d.setTime(t4._d.valueOf() + n2), f.updateOffset(t4, false), t4) : W(e3).local(); } function Et(e3) { return -Math.round(e3._d.getTimezoneOffset()); } function At() { return !!this.isValid() && (this._isUTC && 0 === this._offset); } f.updateOffset = function() { }; var It = /^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/, jt = /^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/; function C(e3, t4) { var n2, s2 = e3, i2 = null; return Ut(e3) ? s2 = { ms: e3._milliseconds, d: e3._days, M: e3._months } : u(e3) || !isNaN(+e3) ? (s2 = {}, t4 ? s2[t4] = +e3 : s2.milliseconds = +e3) : (i2 = It.exec(e3)) ? (n2 = "-" === i2[1] ? -1 : 1, s2 = { y: 0, d: g(i2[b]) * n2, h: g(i2[x2]) * n2, m: g(i2[T]) * n2, s: g(i2[N]) * n2, ms: g(Ht(1e3 * i2[Ne])) * n2 }) : (i2 = jt.exec(e3)) ? (n2 = "-" === i2[1] ? -1 : 1, s2 = { y: Zt(i2[2], n2), M: Zt(i2[3], n2), w: Zt(i2[4], n2), d: Zt(i2[5], n2), h: Zt(i2[6], n2), m: Zt(i2[7], n2), s: Zt(i2[8], n2) }) : null == s2 ? s2 = {} : "object" == typeof s2 && ("from" in s2 || "to" in s2) && (t4 = function(e4, t5) { var n3; if (!e4.isValid() || !t5.isValid()) return { milliseconds: 0, months: 0 }; t5 = Gt(t5, e4), e4.isBefore(t5) ? n3 = zt(e4, t5) : ((n3 = zt(t5, e4)).milliseconds = -n3.milliseconds, n3.months = -n3.months); return n3; }(W(s2.from), W(s2.to)), (s2 = {}).ms = t4.milliseconds, s2.M = t4.months), i2 = new Ct(s2), Ut(e3) && c2(e3, "_locale") && (i2._locale = e3._locale), Ut(e3) && c2(e3, "_isValid") && (i2._isValid = e3._isValid), i2; } function Zt(e3, t4) { e3 = e3 && parseFloat(e3.replace(",", ".")); return (isNaN(e3) ? 0 : e3) * t4; } function zt(e3, t4) { var n2 = {}; return n2.months = t4.month() - e3.month() + 12 * (t4.year() - e3.year()), e3.clone().add(n2.months, "M").isAfter(t4) && --n2.months, n2.milliseconds = +t4 - +e3.clone().add(n2.months, "M"), n2; } function $t(s2, i2) { return function(e3, t4) { var n2; return null === t4 || isNaN(+t4) || (Q(i2, "moment()." + i2 + "(period, number) is deprecated. Please use moment()." + i2 + "(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."), n2 = e3, e3 = t4, t4 = n2), qt(this, C(e3, t4), s2), this; }; } function qt(e3, t4, n2, s2) { var i2 = t4._milliseconds, r2 = Ht(t4._days), t4 = Ht(t4._months); e3.isValid() && (s2 = null == s2 || s2, t4 && Ve(e3, ce(e3, "Month") + t4 * n2), r2 && fe(e3, "Date", ce(e3, "Date") + r2 * n2), i2 && e3._d.setTime(e3._d.valueOf() + i2 * n2), s2 && f.updateOffset(e3, r2 || t4)); } C.fn = Ct.prototype, C.invalid = function() { return C(NaN); }; Ce = $t(1, "add"), Je = $t(-1, "subtract"); function Bt(e3) { return "string" == typeof e3 || e3 instanceof String; } function Jt(e3) { return h(e3) || V(e3) || Bt(e3) || u(e3) || function(t4) { var e4 = a(t4), n2 = false; e4 && (n2 = 0 === t4.filter(function(e6) { return !u(e6) && Bt(t4); }).length); return e4 && n2; }(e3) || function(e4) { var t4, n2, s2 = F(e4) && !L(e4), i2 = false, r2 = ["years", "year", "y", "months", "month", "M", "days", "day", "d", "dates", "date", "D", "hours", "hour", "h", "minutes", "minute", "m", "seconds", "second", "s", "milliseconds", "millisecond", "ms"], a2 = r2.length; for (t4 = 0; t4 < a2; t4 += 1) n2 = r2[t4], i2 = i2 || c2(e4, n2); return s2 && i2; }(e3) || null == e3; } function Qt(e3, t4) { if (e3.date() < t4.date()) return -Qt(t4, e3); var n2 = 12 * (t4.year() - e3.year()) + (t4.month() - e3.month()), s2 = e3.clone().add(n2, "months"), t4 = t4 - s2 < 0 ? (t4 - s2) / (s2 - e3.clone().add(n2 - 1, "months")) : (t4 - s2) / (e3.clone().add(1 + n2, "months") - s2); return -(n2 + t4) || 0; } function Xt(e3) { return void 0 === e3 ? this._locale._abbr : (null != (e3 = mt(e3)) && (this._locale = e3), this); } f.defaultFormat = "YYYY-MM-DDTHH:mm:ssZ", f.defaultFormatUtc = "YYYY-MM-DDTHH:mm:ss[Z]"; Xe = e("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.", function(e3) { return void 0 === e3 ? this.localeData() : this.locale(e3); }); function Kt() { return this._locale; } var en = 126227808e5; function tn(e3, t4) { return (e3 % t4 + t4) % t4; } function nn(e3, t4, n2) { return e3 < 100 && 0 <= e3 ? new Date(e3 + 400, t4, n2) - en : new Date(e3, t4, n2).valueOf(); } function sn(e3, t4, n2) { return e3 < 100 && 0 <= e3 ? Date.UTC(e3 + 400, t4, n2) - en : Date.UTC(e3, t4, n2); } function rn(e3, t4) { return t4.erasAbbrRegex(e3); } function an() { for (var e3 = [], t4 = [], n2 = [], s2 = [], i2 = this.eras(), r2 = 0, a2 = i2.length; r2 < a2; ++r2) t4.push(M(i2[r2].name)), e3.push(M(i2[r2].abbr)), n2.push(M(i2[r2].narrow)), s2.push(M(i2[r2].name)), s2.push(M(i2[r2].abbr)), s2.push(M(i2[r2].narrow)); this._erasRegex = new RegExp("^(" + s2.join("|") + ")", "i"), this._erasNameRegex = new RegExp("^(" + t4.join("|") + ")", "i"), this._erasAbbrRegex = new RegExp("^(" + e3.join("|") + ")", "i"), this._erasNarrowRegex = new RegExp("^(" + n2.join("|") + ")", "i"); } function on(e3, t4) { s(0, [e3, e3.length], 0, t4); } function un(e3, t4, n2, s2, i2) { var r2; return null == e3 ? qe(this, s2, i2).year : (r2 = P(e3, s2, i2), function(e4, t5, n3, s3, i3) { e4 = $e(e4, t5, n3, s3, i3), t5 = Ze(e4.year, 0, e4.dayOfYear); return this.year(t5.getUTCFullYear()), this.month(t5.getUTCMonth()), this.date(t5.getUTCDate()), this; }.call(this, e3, t4 = r2 < t4 ? r2 : t4, n2, s2, i2)); } s("N", 0, 0, "eraAbbr"), s("NN", 0, 0, "eraAbbr"), s("NNN", 0, 0, "eraAbbr"), s("NNNN", 0, 0, "eraName"), s("NNNNN", 0, 0, "eraNarrow"), s("y", ["y", 1], "yo", "eraYear"), s("y", ["yy", 2], 0, "eraYear"), s("y", ["yyy", 3], 0, "eraYear"), s("y", ["yyyy", 4], 0, "eraYear"), v("N", rn), v("NN", rn), v("NNN", rn), v("NNNN", function(e3, t4) { return t4.erasNameRegex(e3); }), v("NNNNN", function(e3, t4) { return t4.erasNarrowRegex(e3); }), D(["N", "NN", "NNN", "NNNN", "NNNNN"], function(e3, t4, n2, s2) { s2 = n2._locale.erasParse(e3, s2, n2._strict); s2 ? m(n2).era = s2 : m(n2).invalidEra = e3; }), v("y", Me), v("yy", Me), v("yyy", Me), v("yyyy", Me), v("yo", function(e3, t4) { return t4._eraYearOrdinalRegex || Me; }), D(["y", "yy", "yyy", "yyyy"], Y), D(["yo"], function(e3, t4, n2, s2) { var i2; n2._locale._eraYearOrdinalRegex && (i2 = e3.match(n2._locale._eraYearOrdinalRegex)), n2._locale.eraYearOrdinalParse ? t4[Y] = n2._locale.eraYearOrdinalParse(e3, i2) : t4[Y] = parseInt(e3, 10); }), s(0, ["gg", 2], 0, function() { return this.weekYear() % 100; }), s(0, ["GG", 2], 0, function() { return this.isoWeekYear() % 100; }), on("gggg", "weekYear"), on("ggggg", "weekYear"), on("GGGG", "isoWeekYear"), on("GGGGG", "isoWeekYear"), t("weekYear", "gg"), t("isoWeekYear", "GG"), n("weekYear", 1), n("isoWeekYear", 1), v("G", De), v("g", De), v("GG", p, w2), v("gg", p, w2), v("GGGG", ke, _e), v("gggg", ke, _e), v("GGGGG", ve, ye), v("ggggg", ve, ye), Te(["gggg", "ggggg", "GGGG", "GGGGG"], function(e3, t4, n2, s2) { t4[s2.substr(0, 2)] = g(e3); }), Te(["gg", "GG"], function(e3, t4, n2, s2) { t4[s2] = f.parseTwoDigitYear(e3); }), s("Q", 0, "Qo", "quarter"), t("quarter", "Q"), n("quarter", 7), v("Q", i), D("Q", function(e3, t4) { t4[O] = 3 * (g(e3) - 1); }), s("D", ["DD", 2], "Do", "date"), t("date", "D"), n("date", 9), v("D", p), v("DD", p, w2), v("Do", function(e3, t4) { return e3 ? t4._dayOfMonthOrdinalParse || t4._ordinalParse : t4._dayOfMonthOrdinalParseLenient; }), D(["D", "DD"], b), D("Do", function(e3, t4) { t4[b] = g(e3.match(p)[0]); }); ke = de("Date", true); s("DDD", ["DDDD", 3], "DDDo", "dayOfYear"), t("dayOfYear", "DDD"), n("dayOfYear", 4), v("DDD", pe), v("DDDD", me), D(["DDD", "DDDD"], function(e3, t4, n2) { n2._dayOfYear = g(e3); }), s("m", ["mm", 2], 0, "minute"), t("minute", "m"), n("minute", 14), v("m", p), v("mm", p, w2), D(["m", "mm"], T); var ln, _e = de("Minutes", false), ve = (s("s", ["ss", 2], 0, "second"), t("second", "s"), n("second", 15), v("s", p), v("ss", p, w2), D(["s", "ss"], N), de("Seconds", false)); for (s("S", 0, 0, function() { return ~~(this.millisecond() / 100); }), s(0, ["SS", 2], 0, function() { return ~~(this.millisecond() / 10); }), s(0, ["SSS", 3], 0, "millisecond"), s(0, ["SSSS", 4], 0, function() { return 10 * this.millisecond(); }), s(0, ["SSSSS", 5], 0, function() { return 100 * this.millisecond(); }), s(0, ["SSSSSS", 6], 0, function() { return 1e3 * this.millisecond(); }), s(0, ["SSSSSSS", 7], 0, function() { return 1e4 * this.millisecond(); }), s(0, ["SSSSSSSS", 8], 0, function() { return 1e5 * this.millisecond(); }), s(0, ["SSSSSSSSS", 9], 0, function() { return 1e6 * this.millisecond(); }), t("millisecond", "ms"), n("millisecond", 16), v("S", pe, i), v("SS", pe, w2), v("SSS", pe, me), ln = "SSSS"; ln.length <= 9; ln += "S") v(ln, Me); function hn(e3, t4) { t4[Ne] = g(1e3 * ("0." + e3)); } for (ln = "S"; ln.length <= 9; ln += "S") D(ln, hn); ye = de("Milliseconds", false), s("z", 0, 0, "zoneAbbr"), s("zz", 0, 0, "zoneName"); i = q.prototype; function dn(e3) { return e3; } i.add = Ce, i.calendar = function(e3, t4) { 1 === arguments.length && (arguments[0] ? Jt(arguments[0]) ? (e3 = arguments[0], t4 = void 0) : function(e4) { for (var t5 = F(e4) && !L(e4), n3 = false, s2 = ["sameDay", "nextDay", "lastDay", "nextWeek", "lastWeek", "sameElse"], i2 = 0; i2 < s2.length; i2 += 1) n3 = n3 || c2(e4, s2[i2]); return t5 && n3; }(arguments[0]) && (t4 = arguments[0], e3 = void 0) : t4 = e3 = void 0); var e3 = e3 || W(), n2 = Gt(e3, this).startOf("day"), n2 = f.calendarFormat(this, n2) || "sameElse", t4 = t4 && (d(t4[n2]) ? t4[n2].call(this, e3) : t4[n2]); return this.format(t4 || this.localeData().calendar(n2, this, W(e3))); }, i.clone = function() { return new q(this); }, i.diff = function(e3, t4, n2) { var s2, i2, r2; if (!this.isValid()) return NaN; if (!(s2 = Gt(e3, this)).isValid()) return NaN; switch (i2 = 6e4 * (s2.utcOffset() - this.utcOffset()), t4 = _2(t4)) { case "year": r2 = Qt(this, s2) / 12; break; case "month": r2 = Qt(this, s2); break; case "quarter": r2 = Qt(this, s2) / 3; break; case "second": r2 = (this - s2) / 1e3; break; case "minute": r2 = (this - s2) / 6e4; break; case "hour": r2 = (this - s2) / 36e5; break; case "day": r2 = (this - s2 - i2) / 864e5; break; case "week": r2 = (this - s2 - i2) / 6048e5; break; default: r2 = this - s2; } return n2 ? r2 : y2(r2); }, i.endOf = function(e3) { var t4, n2; if (void 0 === (e3 = _2(e3)) || "millisecond" === e3 || !this.isValid()) return this; switch (n2 = this._isUTC ? sn : nn, e3) { case "year": t4 = n2(this.year() + 1, 0, 1) - 1; break; case "quarter": t4 = n2(this.year(), this.month() - this.month() % 3 + 3, 1) - 1; break; case "month": t4 = n2(this.year(), this.month() + 1, 1) - 1; break; case "week": t4 = n2(this.year(), this.month(), this.date() - this.weekday() + 7) - 1; break; case "isoWeek": t4 = n2(this.year(), this.month(), this.date() - (this.isoWeekday() - 1) + 7) - 1; break; case "day": case "date": t4 = n2(this.year(), this.month(), this.date() + 1) - 1; break; case "hour": t4 = this._d.valueOf(), t4 += 36e5 - tn(t4 + (this._isUTC ? 0 : 6e4 * this.utcOffset()), 36e5) - 1; break; case "minute": t4 = this._d.valueOf(), t4 += 6e4 - tn(t4, 6e4) - 1; break; case "second": t4 = this._d.valueOf(), t4 += 1e3 - tn(t4, 1e3) - 1; break; } return this._d.setTime(t4), f.updateOffset(this, true), this; }, i.format = function(e3) { return e3 = e3 || (this.isUtc() ? f.defaultFormatUtc : f.defaultFormat), e3 = re2(this, e3), this.localeData().postformat(e3); }, i.from = function(e3, t4) { return this.isValid() && (h(e3) && e3.isValid() || W(e3).isValid()) ? C({ to: this, from: e3 }).locale(this.locale()).humanize(!t4) : this.localeData().invalidDate(); }, i.fromNow = function(e3) { return this.from(W(), e3); }, i.to = function(e3, t4) { return this.isValid() && (h(e3) && e3.isValid() || W(e3).isValid()) ? C({ from: this, to: e3 }).locale(this.locale()).humanize(!t4) : this.localeData().invalidDate(); }, i.toNow = function(e3) { return this.to(W(), e3); }, i.get = function(e3) { return d(this[e3 = _2(e3)]) ? this[e3]() : this; }, i.invalidAt = function() { return m(this).overflow; }, i.isAfter = function(e3, t4) { return e3 = h(e3) ? e3 : W(e3), !(!this.isValid() || !e3.isValid()) && ("millisecond" === (t4 = _2(t4) || "millisecond") ? this.valueOf() > e3.valueOf() : e3.valueOf() < this.clone().startOf(t4).valueOf()); }, i.isBefore = function(e3, t4) { return e3 = h(e3) ? e3 : W(e3), !(!this.isValid() || !e3.isValid()) && ("millisecond" === (t4 = _2(t4) || "millisecond") ? this.valueOf() < e3.valueOf() : this.clone().endOf(t4).valueOf() < e3.valueOf()); }, i.isBetween = function(e3, t4, n2, s2) { return e3 = h(e3) ? e3 : W(e3), t4 = h(t4) ? t4 : W(t4), !!(this.isValid() && e3.isValid() && t4.isValid()) && (("(" === (s2 = s2 || "()")[0] ? this.isAfter(e3, n2) : !this.isBefore(e3, n2)) && (")" === s2[1] ? this.isBefore(t4, n2) : !this.isAfter(t4, n2))); }, i.isSame = function(e3, t4) { var e3 = h(e3) ? e3 : W(e3); return !(!this.isValid() || !e3.isValid()) && ("millisecond" === (t4 = _2(t4) || "millisecond") ? this.valueOf() === e3.valueOf() : (e3 = e3.valueOf(), this.clone().startOf(t4).valueOf() <= e3 && e3 <= this.clone().endOf(t4).valueOf())); }, i.isSameOrAfter = function(e3, t4) { return this.isSame(e3, t4) || this.isAfter(e3, t4); }, i.isSameOrBefore = function(e3, t4) { return this.isSame(e3, t4) || this.isBefore(e3, t4); }, i.isValid = function() { return A(this); }, i.lang = Xe, i.locale = Xt, i.localeData = Kt, i.max = we, i.min = ge, i.parsingFlags = function() { return E({}, m(this)); }, i.set = function(e3, t4) { if ("object" == typeof e3) for (var n2 = function(e4) { var t5, n3 = []; for (t5 in e4) c2(e4, t5) && n3.push({ unit: t5, priority: le[t5] }); return n3.sort(function(e6, t6) { return e6.priority - t6.priority; }), n3; }(e3 = ue(e3)), s2 = n2.length, i2 = 0; i2 < s2; i2++) this[n2[i2].unit](e3[n2[i2].unit]); else if (d(this[e3 = _2(e3)])) return this[e3](t4); return this; }, i.startOf = function(e3) { var t4, n2; if (void 0 === (e3 = _2(e3)) || "millisecond" === e3 || !this.isValid()) return this; switch (n2 = this._isUTC ? sn : nn, e3) { case "year": t4 = n2(this.year(), 0, 1); break; case "quarter": t4 = n2(this.year(), this.month() - this.month() % 3, 1); break; case "month": t4 = n2(this.year(), this.month(), 1); break; case "week": t4 = n2(this.year(), this.month(), this.date() - this.weekday()); break; case "isoWeek": t4 = n2(this.year(), this.month(), this.date() - (this.isoWeekday() - 1)); break; case "day": case "date": t4 = n2(this.year(), this.month(), this.date()); break; case "hour": t4 = this._d.valueOf(), t4 -= tn(t4 + (this._isUTC ? 0 : 6e4 * this.utcOffset()), 36e5); break; case "minute": t4 = this._d.valueOf(), t4 -= tn(t4, 6e4); break; case "second": t4 = this._d.valueOf(), t4 -= tn(t4, 1e3); break; } return this._d.setTime(t4), f.updateOffset(this, true), this; }, i.subtract = Je, i.toArray = function() { var e3 = this; return [e3.year(), e3.month(), e3.date(), e3.hour(), e3.minute(), e3.second(), e3.millisecond()]; }, i.toObject = function() { var e3 = this; return { years: e3.year(), months: e3.month(), date: e3.date(), hours: e3.hours(), minutes: e3.minutes(), seconds: e3.seconds(), milliseconds: e3.milliseconds() }; }, i.toDate = function() { return new Date(this.valueOf()); }, i.toISOString = function(e3) { if (!this.isValid()) return null; var t4 = (e3 = true !== e3) ? this.clone().utc() : this; return t4.year() < 0 || 9999 < t4.year() ? re2(t4, e3 ? "YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]" : "YYYYYY-MM-DD[T]HH:mm:ss.SSSZ") : d(Date.prototype.toISOString) ? e3 ? this.toDate().toISOString() : new Date(this.valueOf() + 60 * this.utcOffset() * 1e3).toISOString().replace("Z", re2(t4, "Z")) : re2(t4, e3 ? "YYYY-MM-DD[T]HH:mm:ss.SSS[Z]" : "YYYY-MM-DD[T]HH:mm:ss.SSSZ"); }, i.inspect = function() { if (!this.isValid()) return "moment.invalid(/* " + this._i + " */)"; var e3, t4 = "moment", n2 = ""; return this.isLocal() || (t4 = 0 === this.utcOffset() ? "moment.utc" : "moment.parseZone", n2 = "Z"), t4 = "[" + t4 + '("]', e3 = 0 <= this.year() && this.year() <= 9999 ? "YYYY" : "YYYYYY", this.format(t4 + e3 + "-MM-DD[T]HH:mm:ss.SSS" + (n2 + '[")]')); }, "undefined" != typeof Symbol && null != Symbol.for && (i[Symbol.for("nodejs.util.inspect.custom")] = function() { return "Moment<" + this.format() + ">"; }), i.toJSON = function() { return this.isValid() ? this.toISOString() : null; }, i.toString = function() { return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ"); }, i.unix = function() { return Math.floor(this.valueOf() / 1e3); }, i.valueOf = function() { return this._d.valueOf() - 6e4 * (this._offset || 0); }, i.creationData = function() { return { input: this._i, format: this._f, locale: this._locale, isUTC: this._isUTC, strict: this._strict }; }, i.eraName = function() { for (var e3, t4 = this.localeData().eras(), n2 = 0, s2 = t4.length; n2 < s2; ++n2) { if (e3 = this.clone().startOf("day").valueOf(), t4[n2].since <= e3 && e3 <= t4[n2].until) return t4[n2].name; if (t4[n2].until <= e3 && e3 <= t4[n2].since) return t4[n2].name; } return ""; }, i.eraNarrow = function() { for (var e3, t4 = this.localeData().eras(), n2 = 0, s2 = t4.length; n2 < s2; ++n2) { if (e3 = this.clone().startOf("day").valueOf(), t4[n2].since <= e3 && e3 <= t4[n2].until) return t4[n2].narrow; if (t4[n2].until <= e3 && e3 <= t4[n2].since) return t4[n2].narrow; } return ""; }, i.eraAbbr = function() { for (var e3, t4 = this.localeData().eras(), n2 = 0, s2 = t4.length; n2 < s2; ++n2) { if (e3 = this.clone().startOf("day").valueOf(), t4[n2].since <= e3 && e3 <= t4[n2].until) return t4[n2].abbr; if (t4[n2].until <= e3 && e3 <= t4[n2].since) return t4[n2].abbr; } return ""; }, i.eraYear = function() { for (var e3, t4, n2 = this.localeData().eras(), s2 = 0, i2 = n2.length; s2 < i2; ++s2) if (e3 = n2[s2].since <= n2[s2].until ? 1 : -1, t4 = this.clone().startOf("day").valueOf(), n2[s2].since <= t4 && t4 <= n2[s2].until || n2[s2].until <= t4 && t4 <= n2[s2].since) return (this.year() - f(n2[s2].since).year()) * e3 + n2[s2].offset; return this.year(); }, i.year = Ie, i.isLeapYear = function() { return he(this.year()); }, i.weekYear = function(e3) { return un.call(this, e3, this.week(), this.weekday(), this.localeData()._week.dow, this.localeData()._week.doy); }, i.isoWeekYear = function(e3) { return un.call(this, e3, this.isoWeek(), this.isoWeekday(), 1, 4); }, i.quarter = i.quarters = function(e3) { return null == e3 ? Math.ceil((this.month() + 1) / 3) : this.month(3 * (e3 - 1) + this.month() % 3); }, i.month = Ge, i.daysInMonth = function() { return We(this.year(), this.month()); }, i.week = i.weeks = function(e3) { var t4 = this.localeData().week(this); return null == e3 ? t4 : this.add(7 * (e3 - t4), "d"); }, i.isoWeek = i.isoWeeks = function(e3) { var t4 = qe(this, 1, 4).week; return null == e3 ? t4 : this.add(7 * (e3 - t4), "d"); }, i.weeksInYear = function() { var e3 = this.localeData()._week; return P(this.year(), e3.dow, e3.doy); }, i.weeksInWeekYear = function() { var e3 = this.localeData()._week; return P(this.weekYear(), e3.dow, e3.doy); }, i.isoWeeksInYear = function() { return P(this.year(), 1, 4); }, i.isoWeeksInISOWeekYear = function() { return P(this.isoWeekYear(), 1, 4); }, i.date = ke, i.day = i.days = function(e3) { if (!this.isValid()) return null != e3 ? this : NaN; var t4, n2, s2 = this._isUTC ? this._d.getUTCDay() : this._d.getDay(); return null != e3 ? (t4 = e3, n2 = this.localeData(), e3 = "string" != typeof t4 ? t4 : isNaN(t4) ? "number" == typeof (t4 = n2.weekdaysParse(t4)) ? t4 : null : parseInt(t4, 10), this.add(e3 - s2, "d")) : s2; }, i.weekday = function(e3) { if (!this.isValid()) return null != e3 ? this : NaN; var t4 = (this.day() + 7 - this.localeData()._week.dow) % 7; return null == e3 ? t4 : this.add(e3 - t4, "d"); }, i.isoWeekday = function(e3) { return this.isValid() ? null != e3 ? (t4 = e3, n2 = this.localeData(), n2 = "string" == typeof t4 ? n2.weekdaysParse(t4) % 7 || 7 : isNaN(t4) ? null : t4, this.day(this.day() % 7 ? n2 : n2 - 7)) : this.day() || 7 : null != e3 ? this : NaN; var t4, n2; }, i.dayOfYear = function(e3) { var t4 = Math.round((this.clone().startOf("day") - this.clone().startOf("year")) / 864e5) + 1; return null == e3 ? t4 : this.add(e3 - t4, "d"); }, i.hour = i.hours = k, i.minute = i.minutes = _e, i.second = i.seconds = ve, i.millisecond = i.milliseconds = ye, i.utcOffset = function(e3, t4, n2) { var s2, i2 = this._offset || 0; if (!this.isValid()) return null != e3 ? this : NaN; if (null == e3) return this._isUTC ? i2 : Et(this); if ("string" == typeof e3) { if (null === (e3 = Vt(Ye, e3))) return this; } else Math.abs(e3) < 16 && !n2 && (e3 *= 60); return !this._isUTC && t4 && (s2 = Et(this)), this._offset = e3, this._isUTC = true, null != s2 && this.add(s2, "m"), i2 !== e3 && (!t4 || this._changeInProgress ? qt(this, C(e3 - i2, "m"), 1, false) : this._changeInProgress || (this._changeInProgress = true, f.updateOffset(this, true), this._changeInProgress = null)), this; }, i.utc = function(e3) { return this.utcOffset(0, e3); }, i.local = function(e3) { return this._isUTC && (this.utcOffset(0, e3), this._isUTC = false, e3 && this.subtract(Et(this), "m")), this; }, i.parseZone = function() { var e3; return null != this._tzm ? this.utcOffset(this._tzm, false, true) : "string" == typeof this._i && (null != (e3 = Vt(Se, this._i)) ? this.utcOffset(e3) : this.utcOffset(0, true)), this; }, i.hasAlignedHourOffset = function(e3) { return !!this.isValid() && (e3 = e3 ? W(e3).utcOffset() : 0, (this.utcOffset() - e3) % 60 == 0); }, i.isDST = function() { return this.utcOffset() > this.clone().month(0).utcOffset() || this.utcOffset() > this.clone().month(5).utcOffset(); }, i.isLocal = function() { return !!this.isValid() && !this._isUTC; }, i.isUtcOffset = function() { return !!this.isValid() && this._isUTC; }, i.isUtc = At, i.isUTC = At, i.zoneAbbr = function() { return this._isUTC ? "UTC" : ""; }, i.zoneName = function() { return this._isUTC ? "Coordinated Universal Time" : ""; }, i.dates = e("dates accessor is deprecated. Use date instead.", ke), i.months = e("months accessor is deprecated. Use month instead", Ge), i.years = e("years accessor is deprecated. Use year instead", Ie), i.zone = e("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/", function(e3, t4) { return null != e3 ? (this.utcOffset(e3 = "string" != typeof e3 ? -e3 : e3, t4), this) : -this.utcOffset(); }), i.isDSTShifted = e("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information", function() { if (!o(this._isDSTShifted)) return this._isDSTShifted; var e3, t4 = {}; return $(t4, this), (t4 = Nt(t4))._a ? (e3 = (t4._isUTC ? l : W)(t4._a), this._isDSTShifted = this.isValid() && 0 < function(e4, t5, n2) { for (var s2 = Math.min(e4.length, t5.length), i2 = Math.abs(e4.length - t5.length), r2 = 0, a2 = 0; a2 < s2; a2++) (n2 && e4[a2] !== t5[a2] || !n2 && g(e4[a2]) !== g(t5[a2])) && r2++; return r2 + i2; }(t4._a, e3.toArray())) : this._isDSTShifted = false, this._isDSTShifted; }); w2 = K2.prototype; function cn(e3, t4, n2, s2) { var i2 = mt(), s2 = l().set(s2, t4); return i2[n2](s2, e3); } function fn(e3, t4, n2) { if (u(e3) && (t4 = e3, e3 = void 0), e3 = e3 || "", null != t4) return cn(e3, t4, n2, "month"); for (var s2 = [], i2 = 0; i2 < 12; i2++) s2[i2] = cn(e3, i2, n2, "month"); return s2; } function mn(e3, t4, n2, s2) { t4 = ("boolean" == typeof e3 ? u(t4) && (n2 = t4, t4 = void 0) : (t4 = e3, e3 = false, u(n2 = t4) && (n2 = t4, t4 = void 0)), t4 || ""); var i2, r2 = mt(), a2 = e3 ? r2._week.dow : 0, o2 = []; if (null != n2) return cn(t4, (n2 + a2) % 7, s2, "day"); for (i2 = 0; i2 < 7; i2++) o2[i2] = cn(t4, (i2 + a2) % 7, s2, "day"); return o2; } w2.calendar = function(e3, t4, n2) { return d(e3 = this._calendar[e3] || this._calendar.sameElse) ? e3.call(t4, n2) : e3; }, w2.longDateFormat = function(e3) { var t4 = this._longDateFormat[e3], n2 = this._longDateFormat[e3.toUpperCase()]; return t4 || !n2 ? t4 : (this._longDateFormat[e3] = n2.match(te).map(function(e4) { return "MMMM" === e4 || "MM" === e4 || "DD" === e4 || "dddd" === e4 ? e4.slice(1) : e4; }).join(""), this._longDateFormat[e3]); }, w2.invalidDate = function() { return this._invalidDate; }, w2.ordinal = function(e3) { return this._ordinal.replace("%d", e3); }, w2.preparse = dn, w2.postformat = dn, w2.relativeTime = function(e3, t4, n2, s2) { var i2 = this._relativeTime[n2]; return d(i2) ? i2(e3, t4, n2, s2) : i2.replace(/%d/i, e3); }, w2.pastFuture = function(e3, t4) { return d(e3 = this._relativeTime[0 < e3 ? "future" : "past"]) ? e3(t4) : e3.replace(/%s/i, t4); }, w2.set = function(e3) { var t4, n2; for (n2 in e3) c2(e3, n2) && (d(t4 = e3[n2]) ? this[n2] = t4 : this["_" + n2] = t4); this._config = e3, this._dayOfMonthOrdinalParseLenient = new RegExp((this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) + "|" + /\d{1,2}/.source); }, w2.eras = function(e3, t4) { for (var n2, s2 = this._eras || mt("en")._eras, i2 = 0, r2 = s2.length; i2 < r2; ++i2) { switch (typeof s2[i2].since) { case "string": n2 = f(s2[i2].since).startOf("day"), s2[i2].since = n2.valueOf(); break; } switch (typeof s2[i2].until) { case "undefined": s2[i2].until = 1 / 0; break; case "string": n2 = f(s2[i2].until).startOf("day").valueOf(), s2[i2].until = n2.valueOf(); break; } } return s2; }, w2.erasParse = function(e3, t4, n2) { var s2, i2, r2, a2, o2, u2 = this.eras(); for (e3 = e3.toUpperCase(), s2 = 0, i2 = u2.length; s2 < i2; ++s2) if (r2 = u2[s2].name.toUpperCase(), a2 = u2[s2].abbr.toUpperCase(), o2 = u2[s2].narrow.toUpperCase(), n2) switch (t4) { case "N": case "NN": case "NNN": if (a2 === e3) return u2[s2]; break; case "NNNN": if (r2 === e3) return u2[s2]; break; case "NNNNN": if (o2 === e3) return u2[s2]; break; } else if (0 <= [r2, a2, o2].indexOf(e3)) return u2[s2]; }, w2.erasConvertYear = function(e3, t4) { var n2 = e3.since <= e3.until ? 1 : -1; return void 0 === t4 ? f(e3.since).year() : f(e3.since).year() + (t4 - e3.offset) * n2; }, w2.erasAbbrRegex = function(e3) { return c2(this, "_erasAbbrRegex") || an.call(this), e3 ? this._erasAbbrRegex : this._erasRegex; }, w2.erasNameRegex = function(e3) { return c2(this, "_erasNameRegex") || an.call(this), e3 ? this._erasNameRegex : this._erasRegex; }, w2.erasNarrowRegex = function(e3) { return c2(this, "_erasNarrowRegex") || an.call(this), e3 ? this._erasNarrowRegex : this._erasRegex; }, w2.months = function(e3, t4) { return e3 ? (a(this._months) ? this._months : this._months[(this._months.isFormat || He).test(t4) ? "format" : "standalone"])[e3.month()] : a(this._months) ? this._months : this._months.standalone; }, w2.monthsShort = function(e3, t4) { return e3 ? (a(this._monthsShort) ? this._monthsShort : this._monthsShort[He.test(t4) ? "format" : "standalone"])[e3.month()] : a(this._monthsShort) ? this._monthsShort : this._monthsShort.standalone; }, w2.monthsParse = function(e3, t4, n2) { var s2, i2; if (this._monthsParseExact) return function(e4, t5, n3) { var s3, i3, r2, e4 = e4.toLocaleLowerCase(); if (!this._monthsParse) for (this._monthsParse = [], this._longMonthsParse = [], this._shortMonthsParse = [], s3 = 0; s3 < 12; ++s3) r2 = l([2e3, s3]), this._shortMonthsParse[s3] = this.monthsShort(r2, "").toLocaleLowerCase(), this._longMonthsParse[s3] = this.months(r2, "").toLocaleLowerCase(); return n3 ? "MMM" === t5 ? -1 !== (i3 = S.call(this._shortMonthsParse, e4)) ? i3 : null : -1 !== (i3 = S.call(this._longMonthsParse, e4)) ? i3 : null : "MMM" === t5 ? -1 !== (i3 = S.call(this._shortMonthsParse, e4)) || -1 !== (i3 = S.call(this._longMonthsParse, e4)) ? i3 : null : -1 !== (i3 = S.call(this._longMonthsParse, e4)) || -1 !== (i3 = S.call(this._shortMonthsParse, e4)) ? i3 : null; }.call(this, e3, t4, n2); for (this._monthsParse || (this._monthsParse = [], this._longMonthsParse = [], this._shortMonthsParse = []), s2 = 0; s2 < 12; s2++) { if (i2 = l([2e3, s2]), n2 && !this._longMonthsParse[s2] && (this._longMonthsParse[s2] = new RegExp("^" + this.months(i2, "").replace(".", "") + "$", "i"), this._shortMonthsParse[s2] = new RegExp("^" + this.monthsShort(i2, "").replace(".", "") + "$", "i")), n2 || this._monthsParse[s2] || (i2 = "^" + this.months(i2, "") + "|^" + this.monthsShort(i2, ""), this._monthsParse[s2] = new RegExp(i2.replace(".", ""), "i")), n2 && "MMMM" === t4 && this._longMonthsParse[s2].test(e3)) return s2; if (n2 && "MMM" === t4 && this._shortMonthsParse[s2].test(e3)) return s2; if (!n2 && this._monthsParse[s2].test(e3)) return s2; } }, w2.monthsRegex = function(e3) { return this._monthsParseExact ? (c2(this, "_monthsRegex") || Ee.call(this), e3 ? this._monthsStrictRegex : this._monthsRegex) : (c2(this, "_monthsRegex") || (this._monthsRegex = Le), this._monthsStrictRegex && e3 ? this._monthsStrictRegex : this._monthsRegex); }, w2.monthsShortRegex = function(e3) { return this._monthsParseExact ? (c2(this, "_monthsRegex") || Ee.call(this), e3 ? this._monthsShortStrictRegex : this._monthsShortRegex) : (c2(this, "_monthsShortRegex") || (this._monthsShortRegex = Fe), this._monthsShortStrictRegex && e3 ? this._monthsShortStrictRegex : this._monthsShortRegex); }, w2.week = function(e3) { return qe(e3, this._week.dow, this._week.doy).week; }, w2.firstDayOfYear = function() { return this._week.doy; }, w2.firstDayOfWeek = function() { return this._week.dow; }, w2.weekdays = function(e3, t4) { return t4 = a(this._weekdays) ? this._weekdays : this._weekdays[e3 && true !== e3 && this._weekdays.isFormat.test(t4) ? "format" : "standalone"], true === e3 ? Be(t4, this._week.dow) : e3 ? t4[e3.day()] : t4; }, w2.weekdaysMin = function(e3) { return true === e3 ? Be(this._weekdaysMin, this._week.dow) : e3 ? this._weekdaysMin[e3.day()] : this._weekdaysMin; }, w2.weekdaysShort = function(e3) { return true === e3 ? Be(this._weekdaysShort, this._week.dow) : e3 ? this._weekdaysShort[e3.day()] : this._weekdaysShort; }, w2.weekdaysParse = function(e3, t4, n2) { var s2, i2; if (this._weekdaysParseExact) return function(e4, t5, n3) { var s3, i3, r2, e4 = e4.toLocaleLowerCase(); if (!this._weekdaysParse) for (this._weekdaysParse = [], this._shortWeekdaysParse = [], this._minWeekdaysParse = [], s3 = 0; s3 < 7; ++s3) r2 = l([2e3, 1]).day(s3), this._minWeekdaysParse[s3] = this.weekdaysMin(r2, "").toLocaleLowerCase(), this._shortWeekdaysParse[s3] = this.weekdaysShort(r2, "").toLocaleLowerCase(), this._weekdaysParse[s3] = this.weekdays(r2, "").toLocaleLowerCase(); return n3 ? "dddd" === t5 ? -1 !== (i3 = S.call(this._weekdaysParse, e4)) ? i3 : null : "ddd" === t5 ? -1 !== (i3 = S.call(this._shortWeekdaysParse, e4)) ? i3 : null : -1 !== (i3 = S.call(this._minWeekdaysParse, e4)) ? i3 : null : "dddd" === t5 ? -1 !== (i3 = S.call(this._weekdaysParse, e4)) || -1 !== (i3 = S.call(this._shortWeekdaysParse, e4)) || -1 !== (i3 = S.call(this._minWeekdaysParse, e4)) ? i3 : null : "ddd" === t5 ? -1 !== (i3 = S.call(this._shortWeekdaysParse, e4)) || -1 !== (i3 = S.call(this._weekdaysParse, e4)) || -1 !== (i3 = S.call(this._minWeekdaysParse, e4)) ? i3 : null : -1 !== (i3 = S.call(this._minWeekdaysParse, e4)) || -1 !== (i3 = S.call(this._weekdaysParse, e4)) || -1 !== (i3 = S.call(this._shortWeekdaysParse, e4)) ? i3 : null; }.call(this, e3, t4, n2); for (this._weekdaysParse || (this._weekdaysParse = [], this._minWeekdaysParse = [], this._shortWeekdaysParse = [], this._fullWeekdaysParse = []), s2 = 0; s2 < 7; s2++) { if (i2 = l([2e3, 1]).day(s2), n2 && !this._fullWeekdaysParse[s2] && (this._fullWeekdaysParse[s2] = new RegExp("^" + this.weekdays(i2, "").replace(".", "\\.?") + "$", "i"), this._shortWeekdaysParse[s2] = new RegExp("^" + this.weekdaysShort(i2, "").replace(".", "\\.?") + "$", "i"), this._minWeekdaysParse[s2] = new RegExp("^" + this.weekdaysMin(i2, "").replace(".", "\\.?") + "$", "i")), this._weekdaysParse[s2] || (i2 = "^" + this.weekdays(i2, "") + "|^" + this.weekdaysShort(i2, "") + "|^" + this.weekdaysMin(i2, ""), this._weekdaysParse[s2] = new RegExp(i2.replace(".", ""), "i")), n2 && "dddd" === t4 && this._fullWeekdaysParse[s2].test(e3)) return s2; if (n2 && "ddd" === t4 && this._shortWeekdaysParse[s2].test(e3)) return s2; if (n2 && "dd" === t4 && this._minWeekdaysParse[s2].test(e3)) return s2; if (!n2 && this._weekdaysParse[s2].test(e3)) return s2; } }, w2.weekdaysRegex = function(e3) { return this._weekdaysParseExact ? (c2(this, "_weekdaysRegex") || nt.call(this), e3 ? this._weekdaysStrictRegex : this._weekdaysRegex) : (c2(this, "_weekdaysRegex") || (this._weekdaysRegex = Ke), this._weekdaysStrictRegex && e3 ? this._weekdaysStrictRegex : this._weekdaysRegex); }, w2.weekdaysShortRegex = function(e3) { return this._weekdaysParseExact ? (c2(this, "_weekdaysRegex") || nt.call(this), e3 ? this._weekdaysShortStrictRegex : this._weekdaysShortRegex) : (c2(this, "_weekdaysShortRegex") || (this._weekdaysShortRegex = et), this._weekdaysShortStrictRegex && e3 ? this._weekdaysShortStrictRegex : this._weekdaysShortRegex); }, w2.weekdaysMinRegex = function(e3) { return this._weekdaysParseExact ? (c2(this, "_weekdaysRegex") || nt.call(this), e3 ? this._weekdaysMinStrictRegex : this._weekdaysMinRegex) : (c2(this, "_weekdaysMinRegex") || (this._weekdaysMinRegex = tt), this._weekdaysMinStrictRegex && e3 ? this._weekdaysMinStrictRegex : this._weekdaysMinRegex); }, w2.isPM = function(e3) { return "p" === (e3 + "").toLowerCase().charAt(0); }, w2.meridiem = function(e3, t4, n2) { return 11 < e3 ? n2 ? "pm" : "PM" : n2 ? "am" : "AM"; }, ct("en", { eras: [{ since: "0001-01-01", until: 1 / 0, offset: 1, name: "Anno Domini", narrow: "AD", abbr: "AD" }, { since: "0000-12-31", until: -1 / 0, offset: 1, name: "Before Christ", narrow: "BC", abbr: "BC" }], dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/, ordinal: function(e3) { var t4 = e3 % 10; return e3 + (1 === g(e3 % 100 / 10) ? "th" : 1 == t4 ? "st" : 2 == t4 ? "nd" : 3 == t4 ? "rd" : "th"); } }), f.lang = e("moment.lang is deprecated. Use moment.locale instead.", ct), f.langData = e("moment.langData is deprecated. Use moment.localeData instead.", mt); var _n = Math.abs; function yn(e3, t4, n2, s2) { t4 = C(t4, n2); return e3._milliseconds += s2 * t4._milliseconds, e3._days += s2 * t4._days, e3._months += s2 * t4._months, e3._bubble(); } function gn(e3) { return e3 < 0 ? Math.floor(e3) : Math.ceil(e3); } function wn(e3) { return 4800 * e3 / 146097; } function pn(e3) { return 146097 * e3 / 4800; } function kn(e3) { return function() { return this.as(e3); }; } pe = kn("ms"), me = kn("s"), Ce = kn("m"), we = kn("h"), ge = kn("d"), Je = kn("w"), k = kn("M"), _e = kn("Q"), ve = kn("y"); function vn(e3) { return function() { return this.isValid() ? this._data[e3] : NaN; }; } var ye = vn("milliseconds"), ke = vn("seconds"), Ie = vn("minutes"), w2 = vn("hours"), Mn = vn("days"), Dn = vn("months"), Sn = vn("years"); var Yn2 = Math.round, On = { ss: 44, s: 45, m: 45, h: 22, d: 26, w: null, M: 11 }; function bn(e3, t4, n2, s2) { var i2 = C(e3).abs(), r2 = Yn2(i2.as("s")), a2 = Yn2(i2.as("m")), o2 = Yn2(i2.as("h")), u2 = Yn2(i2.as("d")), l2 = Yn2(i2.as("M")), h2 = Yn2(i2.as("w")), i2 = Yn2(i2.as("y")), r2 = (r2 <= n2.ss ? ["s", r2] : r2 < n2.s && ["ss", r2]) || a2 <= 1 && ["m"] || a2 < n2.m && ["mm", a2] || o2 <= 1 && ["h"] || o2 < n2.h && ["hh", o2] || u2 <= 1 && ["d"] || u2 < n2.d && ["dd", u2]; return (r2 = (r2 = null != n2.w ? r2 || h2 <= 1 && ["w"] || h2 < n2.w && ["ww", h2] : r2) || l2 <= 1 && ["M"] || l2 < n2.M && ["MM", l2] || i2 <= 1 && ["y"] || ["yy", i2])[2] = t4, r2[3] = 0 < +e3, r2[4] = s2, function(e4, t5, n3, s3, i3) { return i3.relativeTime(t5 || 1, !!n3, e4, s3); }.apply(null, r2); } var xn = Math.abs; function Tn(e3) { return (0 < e3) - (e3 < 0) || +e3; } function Nn() { if (!this.isValid()) return this.localeData().invalidDate(); var e3, t4, n2, s2, i2, r2, a2, o2 = xn(this._milliseconds) / 1e3, u2 = xn(this._days), l2 = xn(this._months), h2 = this.asSeconds(); return h2 ? (e3 = y2(o2 / 60), t4 = y2(e3 / 60), o2 %= 60, e3 %= 60, n2 = y2(l2 / 12), l2 %= 12, s2 = o2 ? o2.toFixed(3).replace(/\.?0+$/, "") : "", i2 = Tn(this._months) !== Tn(h2) ? "-" : "", r2 = Tn(this._days) !== Tn(h2) ? "-" : "", a2 = Tn(this._milliseconds) !== Tn(h2) ? "-" : "", (h2 < 0 ? "-" : "") + "P" + (n2 ? i2 + n2 + "Y" : "") + (l2 ? i2 + l2 + "M" : "") + (u2 ? r2 + u2 + "D" : "") + (t4 || e3 || o2 ? "T" : "") + (t4 ? a2 + t4 + "H" : "") + (e3 ? a2 + e3 + "M" : "") + (o2 ? a2 + s2 + "S" : "")) : "P0D"; } var U = Ct.prototype; return U.isValid = function() { return this._isValid; }, U.abs = function() { var e3 = this._data; return this._milliseconds = _n(this._milliseconds), this._days = _n(this._days), this._months = _n(this._months), e3.milliseconds = _n(e3.milliseconds), e3.seconds = _n(e3.seconds), e3.minutes = _n(e3.minutes), e3.hours = _n(e3.hours), e3.months = _n(e3.months), e3.years = _n(e3.years), this; }, U.add = function(e3, t4) { return yn(this, e3, t4, 1); }, U.subtract = function(e3, t4) { return yn(this, e3, t4, -1); }, U.as = function(e3) { if (!this.isValid()) return NaN; var t4, n2, s2 = this._milliseconds; if ("month" === (e3 = _2(e3)) || "quarter" === e3 || "year" === e3) switch (t4 = this._days + s2 / 864e5, n2 = this._months + wn(t4), e3) { case "month": return n2; case "quarter": return n2 / 3; case "year": return n2 / 12; } else switch (t4 = this._days + Math.round(pn(this._months)), e3) { case "week": return t4 / 7 + s2 / 6048e5; case "day": return t4 + s2 / 864e5; case "hour": return 24 * t4 + s2 / 36e5; case "minute": return 1440 * t4 + s2 / 6e4; case "second": return 86400 * t4 + s2 / 1e3; case "millisecond": return Math.floor(864e5 * t4) + s2; default: throw new Error("Unknown unit " + e3); } }, U.asMilliseconds = pe, U.asSeconds = me, U.asMinutes = Ce, U.asHours = we, U.asDays = ge, U.asWeeks = Je, U.asMonths = k, U.asQuarters = _e, U.asYears = ve, U.valueOf = function() { return this.isValid() ? this._milliseconds + 864e5 * this._days + this._months % 12 * 2592e6 + 31536e6 * g(this._months / 12) : NaN; }, U._bubble = function() { var e3 = this._milliseconds, t4 = this._days, n2 = this._months, s2 = this._data; return 0 <= e3 && 0 <= t4 && 0 <= n2 || e3 <= 0 && t4 <= 0 && n2 <= 0 || (e3 += 864e5 * gn(pn(n2) + t4), n2 = t4 = 0), s2.milliseconds = e3 % 1e3, e3 = y2(e3 / 1e3), s2.seconds = e3 % 60, e3 = y2(e3 / 60), s2.minutes = e3 % 60, e3 = y2(e3 / 60), s2.hours = e3 % 24, t4 += y2(e3 / 24), n2 += e3 = y2(wn(t4)), t4 -= gn(pn(e3)), e3 = y2(n2 / 12), n2 %= 12, s2.days = t4, s2.months = n2, s2.years = e3, this; }, U.clone = function() { return C(this); }, U.get = function(e3) { return e3 = _2(e3), this.isValid() ? this[e3 + "s"]() : NaN; }, U.milliseconds = ye, U.seconds = ke, U.minutes = Ie, U.hours = w2, U.days = Mn, U.weeks = function() { return y2(this.days() / 7); }, U.months = Dn, U.years = Sn, U.humanize = function(e3, t4) { if (!this.isValid()) return this.localeData().invalidDate(); var n2 = false, s2 = On; return "object" == typeof e3 && (t4 = e3, e3 = false), "boolean" == typeof e3 && (n2 = e3), "object" == typeof t4 && (s2 = Object.assign({}, On, t4), null != t4.s && null == t4.ss && (s2.ss = t4.s - 1)), e3 = this.localeData(), t4 = bn(this, !n2, s2, e3), n2 && (t4 = e3.pastFuture(+this, t4)), e3.postformat(t4); }, U.toISOString = Nn, U.toString = Nn, U.toJSON = Nn, U.locale = Xt, U.localeData = Kt, U.toIsoString = e("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)", Nn), U.lang = Xe, s("X", 0, 0, "unix"), s("x", 0, 0, "valueOf"), v("x", De), v("X", /[+-]?\d+(\.\d{1,3})?/), D("X", function(e3, t4, n2) { n2._d = new Date(1e3 * parseFloat(e3)); }), D("x", function(e3, t4, n2) { n2._d = new Date(g(e3)); }), f.version = "2.29.4", H = W, f.fn = i, f.min = function() { return Rt("isBefore", [].slice.call(arguments, 0)); }, f.max = function() { return Rt("isAfter", [].slice.call(arguments, 0)); }, f.now = function() { return Date.now ? Date.now() : +new Date(); }, f.utc = l, f.unix = function(e3) { return W(1e3 * e3); }, f.months = function(e3, t4) { return fn(e3, t4, "months"); }, f.isDate = V, f.locale = ct, f.invalid = I, f.duration = C, f.isMoment = h, f.weekdays = function(e3, t4, n2) { return mn(e3, t4, n2, "weekdays"); }, f.parseZone = function() { return W.apply(null, arguments).parseZone(); }, f.localeData = mt, f.isDuration = Ut, f.monthsShort = function(e3, t4) { return fn(e3, t4, "monthsShort"); }, f.weekdaysMin = function(e3, t4, n2) { return mn(e3, t4, n2, "weekdaysMin"); }, f.defineLocale = ft, f.updateLocale = function(e3, t4) { var n2, s2; return null != t4 ? (s2 = ot, null != R[e3] && null != R[e3].parentLocale ? R[e3].set(X(R[e3]._config, t4)) : (t4 = X(s2 = null != (n2 = dt(e3)) ? n2._config : s2, t4), null == n2 && (t4.abbr = e3), (s2 = new K2(t4)).parentLocale = R[e3], R[e3] = s2), ct(e3)) : null != R[e3] && (null != R[e3].parentLocale ? (R[e3] = R[e3].parentLocale, e3 === ct() && ct(e3)) : null != R[e3] && delete R[e3]), R[e3]; }, f.locales = function() { return ee(R); }, f.weekdaysShort = function(e3, t4, n2) { return mn(e3, t4, n2, "weekdaysShort"); }, f.normalizeUnits = _2, f.relativeTimeRounding = function(e3) { return void 0 === e3 ? Yn2 : "function" == typeof e3 && (Yn2 = e3, true); }, f.relativeTimeThreshold = function(e3, t4) { return void 0 !== On[e3] && (void 0 === t4 ? On[e3] : (On[e3] = t4, "s" === e3 && (On.ss = t4 - 1), true)); }, f.calendarFormat = function(e3, t4) { return (e3 = e3.diff(t4, "days", true)) < -6 ? "sameElse" : e3 < -1 ? "lastWeek" : e3 < 0 ? "lastDay" : e3 < 1 ? "sameDay" : e3 < 2 ? "nextDay" : e3 < 7 ? "nextWeek" : "sameElse"; }, f.prototype = i, f.HTML5_FMT = { DATETIME_LOCAL: "YYYY-MM-DDTHH:mm", DATETIME_LOCAL_SECONDS: "YYYY-MM-DDTHH:mm:ss", DATETIME_LOCAL_MS: "YYYY-MM-DDTHH:mm:ss.SSS", DATE: "YYYY-MM-DD", TIME: "HH:mm", TIME_SECONDS: "HH:mm:ss", TIME_MS: "HH:mm:ss.SSS", WEEK: "GGGG-[W]WW", MONTH: "YYYY-MM" }, f; }); })(moment_min); const moment = moment_min.exports; const LEVELS = { trace: 0, debug: 1, info: 2, warn: 3, error: 4, fatal: 5 }; const log$1 = { trace: (..._args) => { }, debug: (..._args) => { }, info: (..._args) => { }, warn: (..._args) => { }, error: (..._args) => { }, fatal: (..._args) => { } }; const setLogLevel$1 = function(level = "fatal") { let numericLevel = LEVELS.fatal; if (typeof level === "string") { level = level.toLowerCase(); if (level in LEVELS) { numericLevel = LEVELS[level]; } } else if (typeof level === "number") { numericLevel = level; } log$1.trace = () => { }; log$1.debug = () => { }; log$1.info = () => { }; log$1.warn = () => { }; log$1.error = () => { }; log$1.fatal = () => { }; if (numericLevel <= LEVELS.fatal) { log$1.fatal = console.error ? console.error.bind(console, format$1("FATAL"), "color: orange") : console.log.bind(console, "\x1B[35m", format$1("FATAL")); } if (numericLevel <= LEVELS.error) { log$1.error = console.error ? console.error.bind(console, format$1("ERROR"), "color: orange") : console.log.bind(console, "\x1B[31m", format$1("ERROR")); } if (numericLevel <= LEVELS.warn) { log$1.warn = console.warn ? console.warn.bind(console, format$1("WARN"), "color: orange") : console.log.bind(console, `\x1B[33m`, format$1("WARN")); } if (numericLevel <= LEVELS.info) { log$1.info = console.info ? console.info.bind(console, format$1("INFO"), "color: lightblue") : console.log.bind(console, "\x1B[34m", format$1("INFO")); } if (numericLevel <= LEVELS.debug) { log$1.debug = console.debug ? console.debug.bind(console, format$1("DEBUG"), "color: lightgreen") : console.log.bind(console, "\x1B[32m", format$1("DEBUG")); } if (numericLevel <= LEVELS.trace) { log$1.trace = console.debug ? console.debug.bind(console, format$1("TRACE"), "color: lightgreen") : console.log.bind(console, "\x1B[32m", format$1("TRACE")); } }; const format$1 = (level) => { const time2 = moment().format("ss.SSS"); return `%c${time2} : ${level} : `; }; var dist = {}; Object.defineProperty(dist, "__esModule", { value: true }); var sanitizeUrl_1 = dist.sanitizeUrl = void 0; var invalidProtocolRegex = /^([^\w]*)(javascript|data|vbscript)/im; var htmlEntitiesRegex = /&#(\w+)(^\w|;)?/g; var ctrlCharactersRegex = /[\u0000-\u001F\u007F-\u009F\u2000-\u200D\uFEFF]/gim; var urlSchemeRegex = /^([^:]+):/gm; var relativeFirstCharacters = [".", "/"]; function isRelativeUrlWithoutProtocol(url) { return relativeFirstCharacters.indexOf(url[0]) > -1; } function decodeHtmlCharacters(str2) { return str2.replace(htmlEntitiesRegex, function(match, dec) { return String.fromCharCode(dec); }); } function sanitizeUrl(url) { var sanitizedUrl = decodeHtmlCharacters(url || "").replace(ctrlCharactersRegex, "").trim(); if (!sanitizedUrl) { return "about:blank"; } if (isRelativeUrlWithoutProtocol(sanitizedUrl)) { return sanitizedUrl; } var urlSchemeParseResults = sanitizedUrl.match(urlSchemeRegex); if (!urlSchemeParseResults) { return sanitizedUrl; } var urlScheme = urlSchemeParseResults[0]; if (invalidProtocolRegex.test(urlScheme)) { return "about:blank"; } return sanitizedUrl; } sanitizeUrl_1 = dist.sanitizeUrl = sanitizeUrl; function ascending$1(a, b) { return a == null || b == null ? NaN : a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN; } function descending$1(a, b) { return a == null || b == null ? NaN : b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN; } function bisector(f) { let compare1, compare2, delta; if (f.length !== 2) { compare1 = ascending$1; compare2 = (d, x2) => ascending$1(f(d), x2); delta = (d, x2) => f(d) - x2; } else { compare1 = f === ascending$1 || f === descending$1 ? f : zero$1; compare2 = f; delta = f; } function left2(a, x2, lo = 0, hi = a.length) { if (lo < hi) { if (compare1(x2, x2) !== 0) return hi; do { const mid = lo + hi >>> 1; if (compare2(a[mid], x2) < 0) lo = mid + 1; else hi = mid; } while (lo < hi); } return lo; } function right2(a, x2, lo = 0, hi = a.length) { if (lo < hi) { if (compare1(x2, x2) !== 0) return hi; do { const mid = lo + hi >>> 1; if (compare2(a[mid], x2) <= 0) lo = mid + 1; else hi = mid; } while (lo < hi); } return lo; } function center2(a, x2, lo = 0, hi = a.length) { const i = left2(a, x2, lo, hi - 1); return i > lo && delta(a[i - 1], x2) > -delta(a[i], x2) ? i - 1 : i; } return { left: left2, center: center2, right: right2 }; } function zero$1() { return 0; } function number$3(x2) { return x2 === null ? NaN : +x2; } const ascendingBisect = bisector(ascending$1); const bisectRight = ascendingBisect.right; bisector(number$3).center; const bisect = bisectRight; class InternMap extends Map { constructor(entries, key = keyof) { super(); Object.defineProperties(this, { _intern: { value: /* @__PURE__ */ new Map() }, _key: { value: key } }); if (entries != null) for (const [key2, value] of entries) this.set(key2, value); } get(key) { return super.get(intern_get(this, key)); } has(key) { return super.has(intern_get(this, key)); } set(key, value) { return super.set(intern_set(this, key), value); } delete(key) { return super.delete(intern_delete(this, key)); } } function intern_get({ _intern, _key }, value) { const key = _key(value); return _intern.has(key) ? _intern.get(key) : value; } function intern_set({ _intern, _key }, value) { const key = _key(value); if (_intern.has(key)) return _intern.get(key); _intern.set(key, value); return value; } function intern_delete({ _intern, _key }, value) { const key = _key(value); if (_intern.has(key)) { value = _intern.get(key); _intern.delete(key); } return value; } function keyof(value) { return value !== null && typeof value === "object" ? value.valueOf() : value; } var e10 = Math.sqrt(50), e5 = Math.sqrt(10), e2 = Math.sqrt(2); function ticks(start2, stop, count) { var reverse, i = -1, n, ticks2, step; stop = +stop, start2 = +start2, count = +count; if (start2 === stop && count > 0) return [start2]; if (reverse = stop < start2) n = start2, start2 = stop, stop = n; if ((step = tickIncrement(start2, stop, count)) === 0 || !isFinite(step)) return []; if (step > 0) { let r0 = Math.round(start2 / step), r1 = Math.round(stop / step); if (r0 * step < start2) ++r0; if (r1 * step > stop) --r1; ticks2 = new Array(n = r1 - r0 + 1); while (++i < n) ticks2[i] = (r0 + i) * step; } else { step = -step; let r0 = Math.round(start2 * step), r1 = Math.round(stop * step); if (r0 / step < start2) ++r0; if (r1 / step > stop) --r1; ticks2 = new Array(n = r1 - r0 + 1); while (++i < n) ticks2[i] = (r0 + i) / step; } if (reverse) ticks2.reverse(); return ticks2; } function tickIncrement(start2, stop, count) { var step = (stop - start2) / Math.max(0, count), power = Math.floor(Math.log(step) / Math.LN10), error = step / Math.pow(10, power); return power >= 0 ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power) : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1); } function tickStep(start2, stop, count) { var step0 = Math.abs(stop - start2) / Math.max(0, count), step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)), error = step0 / step1; if (error >= e10) step1 *= 10; else if (error >= e5) step1 *= 5; else if (error >= e2) step1 *= 2; return stop < start2 ? -step1 : step1; } function max$2(values2, valueof) { let max2; if (valueof === void 0) { for (const value of values2) { if (value != null && (max2 < value || max2 === void 0 && value >= value)) { max2 = value; } } } else { let index = -1; for (let value of values2) { if ((value = valueof(value, ++index, values2)) != null && (max2 < value || max2 === void 0 && value >= value)) { max2 = value; } } } return max2; } function min$2(values2, valueof) { let min2; if (valueof === void 0) { for (const value of values2) { if (value != null && (min2 > value || min2 === void 0 && value >= value)) { min2 = value; } } } else { let index = -1; for (let value of values2) { if ((value = valueof(value, ++index, values2)) != null && (min2 > value || min2 === void 0 && value >= value)) { min2 = value; } } } return min2; } function identity$5(x2) { return x2; } var top = 1, right = 2, bottom = 3, left = 4, epsilon$2 = 1e-6; function translateX(x2) { return "translate(" + x2 + ",0)"; } function translateY(y2) { return "translate(0," + y2 + ")"; } function number$2(scale) { return (d) => +scale(d); } function center(scale, offset) { offset = Math.max(0, scale.bandwidth() - offset * 2) / 2; if (scale.round()) offset = Math.round(offset); return (d) => +scale(d) + offset; } function entering() { return !this.__axis; } function axis(orient, scale) { var tickArguments = [], tickValues = null, tickFormat2 = null, tickSizeInner = 6, tickSizeOuter = 6, tickPadding = 3, offset = typeof window !== "undefined" && window.devicePixelRatio > 1 ? 0 : 0.5, k = orient === top || orient === left ? -1 : 1, x2 = orient === left || orient === right ? "x" : "y", transform = orient === top || orient === bottom ? translateX : translateY; function axis2(context) { var values2 = tickValues == null ? scale.ticks ? scale.ticks.apply(scale, tickArguments) : scale.domain() : tickValues, format2 = tickFormat2 == null ? scale.tickFormat ? scale.tickFormat.apply(scale, tickArguments) : identity$5 : tickFormat2, spacing = Math.max(tickSizeInner, 0) + tickPadding, range2 = scale.range(), range0 = +range2[0] + offset, range1 = +range2[range2.length - 1] + offset, position2 = (scale.bandwidth ? center : number$2)(scale.copy(), offset), selection2 = context.selection ? context.selection() : context, path2 = selection2.selectAll(".domain").data([null]), tick = selection2.selectAll(".tick").data(values2, scale).order(), tickExit = tick.exit(), tickEnter = tick.enter().append("g").attr("class", "tick"), line2 = tick.select("line"), text2 = tick.select("text"); path2 = path2.merge(path2.enter().insert("path", ".tick").attr("class", "domain").attr("stroke", "currentColor")); tick = tick.merge(tickEnter); line2 = line2.merge(tickEnter.append("line").attr("stroke", "currentColor").attr(x2 + "2", k * tickSizeInner)); text2 = text2.merge(tickEnter.append("text").attr("fill", "currentColor").attr(x2, k * spacing).attr("dy", orient === top ? "0em" : orient === bottom ? "0.71em" : "0.32em")); if (context !== selection2) { path2 = path2.transition(context); tick = tick.transition(context); line2 = line2.transition(context); text2 = text2.transition(context); tickExit = tickExit.transition(context).attr("opacity", epsilon$2).attr("transform", function(d) { return isFinite(d = position2(d)) ? transform(d + offset) : this.getAttribute("transform"); }); tickEnter.attr("opacity", epsilon$2).attr("transform", function(d) { var p = this.parentNode.__axis; return transform((p && isFinite(p = p(d)) ? p : position2(d)) + offset); }); } tickExit.remove(); path2.attr("d", orient === left || orient === right ? tickSizeOuter ? "M" + k * tickSizeOuter + "," + range0 + "H" + offset + "V" + range1 + "H" + k * tickSizeOuter : "M" + offset + "," + range0 + "V" + range1 : tickSizeOuter ? "M" + range0 + "," + k * tickSizeOuter + "V" + offset + "H" + range1 + "V" + k * tickSizeOuter : "M" + range0 + "," + offset + "H" + range1); tick.attr("opacity", 1).attr("transform", function(d) { return transform(position2(d) + offset); }); line2.attr(x2 + "2", k * tickSizeInner); text2.attr(x2, k * spacing).text(format2); selection2.filter(entering).attr("fill", "none").attr("font-size", 10).attr("font-family", "sans-serif").attr("text-anchor", orient === right ? "start" : orient === left ? "end" : "middle"); selection2.each(function() { this.__axis = position2; }); } axis2.scale = function(_2) { return arguments.length ? (scale = _2, axis2) : scale; }; axis2.ticks = function() { return tickArguments = Array.from(arguments), axis2; }; axis2.tickArguments = function(_2) { return arguments.length ? (tickArguments = _2 == null ? [] : Array.from(_2), axis2) : tickArguments.slice(); }; axis2.tickValues = function(_2) { return arguments.length ? (tickValues = _2 == null ? null : Array.from(_2), axis2) : tickValues && tickValues.slice(); }; axis2.tickFormat = function(_2) { return arguments.length ? (tickFormat2 = _2, axis2) : tickFormat2; }; axis2.tickSize = function(_2) { return arguments.length ? (tickSizeInner = tickSizeOuter = +_2, axis2) : tickSizeInner; }; axis2.tickSizeInner = function(_2) { return arguments.length ? (tickSizeInner = +_2, axis2) : tickSizeInner; }; axis2.tickSizeOuter = function(_2) { return arguments.length ? (tickSizeOuter = +_2, axis2) : tickSizeOuter; }; axis2.tickPadding = function(_2) { return arguments.length ? (tickPadding = +_2, axis2) : tickPadding; }; axis2.offset = function(_2) { return arguments.length ? (offset = +_2, axis2) : offset; }; return axis2; } function axisTop(scale) { return axis(top, scale); } function axisBottom(scale) { return axis(bottom, scale); } var noop$2 = { value: () => { } }; function dispatch() { for (var i = 0, n = arguments.length, _2 = {}, t; i < n; ++i) { if (!(t = arguments[i] + "") || t in _2 || /[\s.]/.test(t)) throw new Error("illegal type: " + t); _2[t] = []; } return new Dispatch(_2); } function Dispatch(_2) { this._ = _2; } function parseTypenames$1(typenames, types2) { return typenames.trim().split(/^|\s+/).map(function(t) { var name2 = "", i = t.indexOf("."); if (i >= 0) name2 = t.slice(i + 1), t = t.slice(0, i); if (t && !types2.hasOwnProperty(t)) throw new Error("unknown type: " + t); return { type: t, name: name2 }; }); } Dispatch.prototype = dispatch.prototype = { constructor: Dispatch, on: function(typename, callback) { var _2 = this._, T = parseTypenames$1(typename + "", _2), t, i = -1, n = T.length; if (arguments.length < 2) { while (++i < n) if ((t = (typename = T[i]).type) && (t = get$3(_2[t], typename.name))) return t; return; } if (callback != null && typeof callback !== "function") throw new Error("invalid callback: " + callback); while (++i < n) { if (t = (typename = T[i]).type) _2[t] = set$3(_2[t], typename.name, callback); else if (callback == null) for (t in _2) _2[t] = set$3(_2[t], typename.name, null); } return this; }, copy: function() { var copy2 = {}, _2 = this._; for (var t in _2) copy2[t] = _2[t].slice(); return new Dispatch(copy2); }, call: function(type2, that) { if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2]; if (!this._.hasOwnProperty(type2)) throw new Error("unknown type: " + type2); for (t = this._[type2], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args); }, apply: function(type2, that, args) { if (!this._.hasOwnProperty(type2)) throw new Error("unknown type: " + type2); for (var t = this._[type2], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args); } }; function get$3(type2, name2) { for (var i = 0, n = type2.length, c2; i < n; ++i) { if ((c2 = type2[i]).name === name2) { return c2.value; } } } function set$3(type2, name2, callback) { for (var i = 0, n = type2.length; i < n; ++i) { if (type2[i].name === name2) { type2[i] = noop$2, type2 = type2.slice(0, i).concat(type2.slice(i + 1)); break; } } if (callback != null) type2.push({ name: name2, value: callback }); return type2; } var xhtml = "http://www.w3.org/1999/xhtml"; const namespaces = { svg: "http://www.w3.org/2000/svg", xhtml, xlink: "http://www.w3.org/1999/xlink", xml: "http://www.w3.org/XML/1998/namespace", xmlns: "http://www.w3.org/2000/xmlns/" }; function namespace(name2) { var prefix = name2 += "", i = prefix.indexOf(":"); if (i >= 0 && (prefix = name2.slice(0, i)) !== "xmlns") name2 = name2.slice(i + 1); return namespaces.hasOwnProperty(prefix) ? { space: namespaces[prefix], local: name2 } : name2; } function creatorInherit(name2) { return function() { var document2 = this.ownerDocument, uri = this.namespaceURI; return uri === xhtml && document2.documentElement.namespaceURI === xhtml ? document2.createElement(name2) : document2.createElementNS(uri, name2); }; } function creatorFixed(fullname) { return function() { return this.ownerDocument.createElementNS(fullname.space, fullname.local); }; } function creator(name2) { var fullname = namespace(name2); return (fullname.local ? creatorFixed : creatorInherit)(fullname); } function none() { } function selector(selector2) { return selector2 == null ? none : function() { return this.querySelector(selector2); }; } function selection_select(select2) { if (typeof select2 !== "function") select2 = selector(select2); for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) { for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node2, subnode, i = 0; i < n; ++i) { if ((node2 = group[i]) && (subnode = select2.call(node2, node2.__data__, i, group))) { if ("__data__" in node2) subnode.__data__ = node2.__data__; subgroup[i] = subnode; } } } return new Selection$1(subgroups, this._parents); } function array$1(x2) { return x2 == null ? [] : Array.isArray(x2) ? x2 : Array.from(x2); } function empty() { return []; } function selectorAll(selector2) { return selector2 == null ? empty : function() { return this.querySelectorAll(selector2); }; } function arrayAll(select2) { return function() { return array$1(select2.apply(this, arguments)); }; } function selection_selectAll(select2) { if (typeof select2 === "function") select2 = arrayAll(select2); else select2 = selectorAll(select2); for (var groups = this._groups, m = groups.length, subgroups = [], parents2 = [], j = 0; j < m; ++j) { for (var group = groups[j], n = group.length, node2, i = 0; i < n; ++i) { if (node2 = group[i]) { subgroups.push(select2.call(node2, node2.__data__, i, group)); parents2.push(node2); } } } return new Selection$1(subgroups, parents2); } function matcher(selector2) { return function() { return this.matches(selector2); }; } function childMatcher(selector2) { return function(node2) { return node2.matches(selector2); }; } var find$2 = Array.prototype.find; function childFind(match) { return function() { return find$2.call(this.children, match); }; } function childFirst() { return this.firstElementChild; } function selection_selectChild(match) { return this.select(match == null ? childFirst : childFind(typeof match === "function" ? match : childMatcher(match))); } var filter$1 = Array.prototype.filter; function children() { return Array.from(this.children); } function childrenFilter(match) { return function() { return filter$1.call(this.children, match); }; } function selection_selectChildren(match) { return this.selectAll(match == null ? children : childrenFilter(typeof match === "function" ? match : childMatcher(match))); } function selection_filter(match) { if (typeof match !== "function") match = matcher(match); for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) { for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node2, i = 0; i < n; ++i) { if ((node2 = group[i]) && match.call(node2, node2.__data__, i, group)) { subgroup.push(node2); } } } return new Selection$1(subgroups, this._parents); } function sparse(update) { return new Array(update.length); } function selection_enter() { return new Selection$1(this._enter || this._groups.map(sparse), this._parents); } function EnterNode(parent, datum2) { this.ownerDocument = parent.ownerDocument; this.namespaceURI = parent.namespaceURI; this._next = null; this._parent = parent; this.__data__ = datum2; } EnterNode.prototype = { constructor: EnterNode, appendChild: function(child) { return this._parent.insertBefore(child, this._next); }, insertBefore: function(child, next2) { return this._parent.insertBefore(child, next2); }, querySelector: function(selector2) { return this._parent.querySelector(selector2); }, querySelectorAll: function(selector2) { return this._parent.querySelectorAll(selector2); } }; function constant$3(x2) { return function() { return x2; }; } function bindIndex(parent, group, enter2, update, exit2, data) { var i = 0, node2, groupLength = group.length, dataLength = data.length; for (; i < dataLength; ++i) { if (node2 = group[i]) { node2.__data__ = data[i]; update[i] = node2; } else { enter2[i] = new EnterNode(parent, data[i]); } } for (; i < groupLength; ++i) { if (node2 = group[i]) { exit2[i] = node2; } } } function bindKey(parent, group, enter2, update, exit2, data, key) { var i, node2, nodeByKeyValue = /* @__PURE__ */ new Map(), groupLength = group.length, dataLength = data.length, keyValues = new Array(groupLength), keyValue; for (i = 0; i < groupLength; ++i) { if (node2 = group[i]) { keyValues[i] = keyValue = key.call(node2, node2.__data__, i, group) + ""; if (nodeByKeyValue.has(keyValue)) { exit2[i] = node2; } else { nodeByKeyValue.set(keyValue, node2); } } } for (i = 0; i < dataLength; ++i) { keyValue = key.call(parent, data[i], i, data) + ""; if (node2 = nodeByKeyValue.get(keyValue)) { update[i] = node2; node2.__data__ = data[i]; nodeByKeyValue.delete(keyValue); } else { enter2[i] = new EnterNode(parent, data[i]); } } for (i = 0; i < groupLength; ++i) { if ((node2 = group[i]) && nodeByKeyValue.get(keyValues[i]) === node2) { exit2[i] = node2; } } } function datum(node2) { return node2.__data__; } function selection_data(value, key) { if (!arguments.length) return Array.from(this, datum); var bind = key ? bindKey : bindIndex, parents2 = this._parents, groups = this._groups; if (typeof value !== "function") value = constant$3(value); for (var m = groups.length, update = new Array(m), enter2 = new Array(m), exit2 = new Array(m), j = 0; j < m; ++j) { var parent = parents2[j], group = groups[j], groupLength = group.length, data = arraylike(value.call(parent, parent && parent.__data__, j, parents2)), dataLength = data.length, enterGroup = enter2[j] = new Array(dataLength), updateGroup = update[j] = new Array(dataLength), exitGroup = exit2[j] = new Array(groupLength); bind(parent, group, enterGroup, updateGroup, exitGroup, data, key); for (var i0 = 0, i1 = 0, previous, next2; i0 < dataLength; ++i0) { if (previous = enterGroup[i0]) { if (i0 >= i1) i1 = i0 + 1; while (!(next2 = updateGroup[i1]) && ++i1 < dataLength) ; previous._next = next2 || null; } } } update = new Selection$1(update, parents2); update._enter = enter2; update._exit = exit2; return update; } function arraylike(data) { return typeof data === "object" && "length" in data ? data : Array.from(data); } function selection_exit() { return new Selection$1(this._exit || this._groups.map(sparse), this._parents); } function selection_join(onenter, onupdate, onexit) { var enter2 = this.enter(), update = this, exit2 = this.exit(); if (typeof onenter === "function") { enter2 = onenter(enter2); if (enter2) enter2 = enter2.selection(); } else { enter2 = enter2.append(onenter + ""); } if (onupdate != null) { update = onupdate(update); if (update) update = update.selection(); } if (onexit == null) exit2.remove(); else onexit(exit2); return enter2 && update ? enter2.merge(update).order() : update; } function selection_merge(context) { var selection2 = context.selection ? context.selection() : context; for (var groups0 = this._groups, groups1 = selection2._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) { for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge2 = merges[j] = new Array(n), node2, i = 0; i < n; ++i) { if (node2 = group0[i] || group1[i]) { merge2[i] = node2; } } } for (; j < m0; ++j) { merges[j] = groups0[j]; } return new Selection$1(merges, this._parents); } function selection_order() { for (var groups = this._groups, j = -1, m = groups.length; ++j < m; ) { for (var group = groups[j], i = group.length - 1, next2 = group[i], node2; --i >= 0; ) { if (node2 = group[i]) { if (next2 && node2.compareDocumentPosition(next2) ^ 4) next2.parentNode.insertBefore(node2, next2); next2 = node2; } } } return this; } function selection_sort(compare) { if (!compare) compare = ascending; function compareNode(a, b) { return a && b ? compare(a.__data__, b.__data__) : !a - !b; } for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) { for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node2, i = 0; i < n; ++i) { if (node2 = group[i]) { sortgroup[i] = node2; } } sortgroup.sort(compareNode); } return new Selection$1(sortgroups, this._parents).order(); } function ascending(a, b) { return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN; } function selection_call() { var callback = arguments[0]; arguments[0] = this; callback.apply(null, arguments); return this; } function selection_nodes() { return Array.from(this); } function selection_node() { for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) { for (var group = groups[j], i = 0, n = group.length; i < n; ++i) { var node2 = group[i]; if (node2) return node2; } } return null; } function selection_size() { let size2 = 0; for (const node2 of this) ++size2; return size2; } function selection_empty() { return !this.node(); } function selection_each(callback) { for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) { for (var group = groups[j], i = 0, n = group.length, node2; i < n; ++i) { if (node2 = group[i]) callback.call(node2, node2.__data__, i, group); } } return this; } function attrRemove$1(name2) { return function() { this.removeAttribute(name2); }; } function attrRemoveNS$1(fullname) { return function() { this.removeAttributeNS(fullname.space, fullname.local); }; } function attrConstant$1(name2, value) { return function() { this.setAttribute(name2, value); }; } function attrConstantNS$1(fullname, value) { return function() { this.setAttributeNS(fullname.space, fullname.local, value); }; } function attrFunction$1(name2, value) { return function() { var v = value.apply(this, arguments); if (v == null) this.removeAttribute(name2); else this.setAttribute(name2, v); }; } function attrFunctionNS$1(fullname, value) { return function() { var v = value.apply(this, arguments); if (v == null) this.removeAttributeNS(fullname.space, fullname.local); else this.setAttributeNS(fullname.space, fullname.local, v); }; } function selection_attr(name2, value) { var fullname = namespace(name2); if (arguments.length < 2) { var node2 = this.node(); return fullname.local ? node2.getAttributeNS(fullname.space, fullname.local) : node2.getAttribute(fullname); } return this.each((value == null ? fullname.local ? attrRemoveNS$1 : attrRemove$1 : typeof value === "function" ? fullname.local ? attrFunctionNS$1 : attrFunction$1 : fullname.local ? attrConstantNS$1 : attrConstant$1)(fullname, value)); } function defaultView(node2) { return node2.ownerDocument && node2.ownerDocument.defaultView || node2.document && node2 || node2.defaultView; } function styleRemove$1(name2) { return function() { this.style.removeProperty(name2); }; } function styleConstant$1(name2, value, priority) { return function() { this.style.setProperty(name2, value, priority); }; } function styleFunction$1(name2, value, priority) { return function() { var v = value.apply(this, arguments); if (v == null) this.style.removeProperty(name2); else this.style.setProperty(name2, v, priority); }; } function selection_style(name2, value, priority) { return arguments.length > 1 ? this.each((value == null ? styleRemove$1 : typeof value === "function" ? styleFunction$1 : styleConstant$1)(name2, value, priority == null ? "" : priority)) : styleValue(this.node(), name2); } function styleValue(node2, name2) { return node2.style.getPropertyValue(name2) || defaultView(node2).getComputedStyle(node2, null).getPropertyValue(name2); } function propertyRemove(name2) { return function() { delete this[name2]; }; } function propertyConstant(name2, value) { return function() { this[name2] = value; }; } function propertyFunction(name2, value) { return function() { var v = value.apply(this, arguments); if (v == null) delete this[name2]; else this[name2] = v; }; } function selection_property(name2, value) { return arguments.length > 1 ? this.each((value == null ? propertyRemove : typeof value === "function" ? propertyFunction : propertyConstant)(name2, value)) : this.node()[name2]; } function classArray(string) { return string.trim().split(/^|\s+/); } function classList(node2) { return node2.classList || new ClassList(node2); } function ClassList(node2) { this._node = node2; this._names = classArray(node2.getAttribute("class") || ""); } ClassList.prototype = { add: function(name2) { var i = this._names.indexOf(name2); if (i < 0) { this._names.push(name2); this._node.setAttribute("class", this._names.join(" ")); } }, remove: function(name2) { var i = this._names.indexOf(name2); if (i >= 0) { this._names.splice(i, 1); this._node.setAttribute("class", this._names.join(" ")); } }, contains: function(name2) { return this._names.indexOf(name2) >= 0; } }; function classedAdd(node2, names) { var list = classList(node2), i = -1, n = names.length; while (++i < n) list.add(names[i]); } function classedRemove(node2, names) { var list = classList(node2), i = -1, n = names.length; while (++i < n) list.remove(names[i]); } function classedTrue(names) { return function() { classedAdd(this, names); }; } function classedFalse(names) { return function() { classedRemove(this, names); }; } function classedFunction(names, value) { return function() { (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names); }; } function selection_classed(name2, value) { var names = classArray(name2 + ""); if (arguments.length < 2) { var list = classList(this.node()), i = -1, n = names.length; while (++i < n) if (!list.contains(names[i])) return false; return true; } return this.each((typeof value === "function" ? classedFunction : value ? classedTrue : classedFalse)(names, value)); } function textRemove() { this.textContent = ""; } function textConstant$1(value) { return function() { this.textContent = value; }; } function textFunction$1(value) { return function() { var v = value.apply(this, arguments); this.textContent = v == null ? "" : v; }; } function selection_text(value) { return arguments.length ? this.each(value == null ? textRemove : (typeof value === "function" ? textFunction$1 : textConstant$1)(value)) : this.node().textContent; } function htmlRemove() { this.innerHTML = ""; } function htmlConstant(value) { return function() { this.innerHTML = value; }; } function htmlFunction(value) { return function() { var v = value.apply(this, arguments); this.innerHTML = v == null ? "" : v; }; } function selection_html(value) { return arguments.length ? this.each(value == null ? htmlRemove : (typeof value === "function" ? htmlFunction : htmlConstant)(value)) : this.node().innerHTML; } function raise() { if (this.nextSibling) this.parentNode.appendChild(this); } function selection_raise() { return this.each(raise); } function lower() { if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild); } function selection_lower() { return this.each(lower); } function selection_append(name2) { var create2 = typeof name2 === "function" ? name2 : creator(name2); return this.select(function() { return this.appendChild(create2.apply(this, arguments)); }); } function constantNull() { return null; } function selection_insert(name2, before) { var create2 = typeof name2 === "function" ? name2 : creator(name2), select2 = before == null ? constantNull : typeof before === "function" ? before : selector(before); return this.select(function() { return this.insertBefore(create2.apply(this, arguments), select2.apply(this, arguments) || null); }); } function remove() { var parent = this.parentNode; if (parent) parent.removeChild(this); } function selection_remove() { return this.each(remove); } function selection_cloneShallow() { var clone2 = this.cloneNode(false), parent = this.parentNode; return parent ? parent.insertBefore(clone2, this.nextSibling) : clone2; } function selection_cloneDeep() { var clone2 = this.cloneNode(true), parent = this.parentNode; return parent ? parent.insertBefore(clone2, this.nextSibling) : clone2; } function selection_clone(deep) { return this.select(deep ? selection_cloneDeep : selection_cloneShallow); } function selection_datum(value) { return arguments.length ? this.property("__data__", value) : this.node().__data__; } function contextListener(listener) { return function(event) { listener.call(this, event, this.__data__); }; } function parseTypenames(typenames) { return typenames.trim().split(/^|\s+/).map(function(t) { var name2 = "", i = t.indexOf("."); if (i >= 0) name2 = t.slice(i + 1), t = t.slice(0, i); return { type: t, name: name2 }; }); } function onRemove(typename) { return function() { var on = this.__on; if (!on) return; for (var j = 0, i = -1, m = on.length, o; j < m; ++j) { if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) { this.removeEventListener(o.type, o.listener, o.options); } else { on[++i] = o; } } if (++i) on.length = i; else delete this.__on; }; } function onAdd(typename, value, options2) { return function() { var on = this.__on, o, listener = contextListener(value); if (on) for (var j = 0, m = on.length; j < m; ++j) { if ((o = on[j]).type === typename.type && o.name === typename.name) { this.removeEventListener(o.type, o.listener, o.options); this.addEventListener(o.type, o.listener = listener, o.options = options2); o.value = value; return; } } this.addEventListener(typename.type, listener, options2); o = { type: typename.type, name: typename.name, value, listener, options: options2 }; if (!on) this.__on = [o]; else on.push(o); }; } function selection_on(typename, value, options2) { var typenames = parseTypenames(typename + ""), i, n = typenames.length, t; if (arguments.length < 2) { var on = this.node().__on; if (on) for (var j = 0, m = on.length, o; j < m; ++j) { for (i = 0, o = on[j]; i < n; ++i) { if ((t = typenames[i]).type === o.type && t.name === o.name) { return o.value; } } } return; } on = value ? onAdd : onRemove; for (i = 0; i < n; ++i) this.each(on(typenames[i], value, options2)); return this; } function dispatchEvent(node2, type2, params) { var window2 = defaultView(node2), event = window2.CustomEvent; if (typeof event === "function") { event = new event(type2, params); } else { event = window2.document.createEvent("Event"); if (params) event.initEvent(type2, params.bubbles, params.cancelable), event.detail = params.detail; else event.initEvent(type2, false, false); } node2.dispatchEvent(event); } function dispatchConstant(type2, params) { return function() { return dispatchEvent(this, type2, params); }; } function dispatchFunction(type2, params) { return function() { return dispatchEvent(this, type2, params.apply(this, arguments)); }; } function selection_dispatch(type2, params) { return this.each((typeof params === "function" ? dispatchFunction : dispatchConstant)(type2, params)); } function* selection_iterator() { for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) { for (var group = groups[j], i = 0, n = group.length, node2; i < n; ++i) { if (node2 = group[i]) yield node2; } } } var root$2 = [null]; function Selection$1(groups, parents2) { this._groups = groups; this._parents = parents2; } function selection() { return new Selection$1([[document.documentElement]], root$2); } function selection_selection() { return this; } Selection$1.prototype = selection.prototype = { constructor: Selection$1, select: selection_select, selectAll: selection_selectAll, selectChild: selection_selectChild, selectChildren: selection_selectChildren, filter: selection_filter, data: selection_data, enter: selection_enter, exit: selection_exit, join: selection_join, merge: selection_merge, selection: selection_selection, order: selection_order, sort: selection_sort, call: selection_call, nodes: selection_nodes, node: selection_node, size: selection_size, empty: selection_empty, each: selection_each, attr: selection_attr, style: selection_style, property: selection_property, classed: selection_classed, text: selection_text, html: selection_html, raise: selection_raise, lower: selection_lower, append: selection_append, insert: selection_insert, remove: selection_remove, clone: selection_clone, datum: selection_datum, on: selection_on, dispatch: selection_dispatch, [Symbol.iterator]: selection_iterator }; function select(selector2) { return typeof selector2 === "string" ? new Selection$1([[document.querySelector(selector2)]], [document.documentElement]) : new Selection$1([[selector2]], root$2); } function selectAll(selector2) { return typeof selector2 === "string" ? new Selection$1([document.querySelectorAll(selector2)], [document.documentElement]) : new Selection$1([array$1(selector2)], root$2); } function define(constructor, factory, prototype) { constructor.prototype = factory.prototype = prototype; prototype.constructor = constructor; } function extend$1(parent, definition) { var prototype = Object.create(parent.prototype); for (var key in definition) prototype[key] = definition[key]; return prototype; } function Color$2() { } var darker = 0.7; var brighter = 1 / darker; var reI = "\\s*([+-]?\\d+)\\s*", reN = "\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*", reP = "\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*", reHex = /^#([0-9a-f]{3,8})$/, reRgbInteger = new RegExp(`^rgb\\(${reI},${reI},${reI}\\)$`), reRgbPercent = new RegExp(`^rgb\\(${reP},${reP},${reP}\\)$`), reRgbaInteger = new RegExp(`^rgba\\(${reI},${reI},${reI},${reN}\\)$`), reRgbaPercent = new RegExp(`^rgba\\(${reP},${reP},${reP},${reN}\\)$`), reHslPercent = new RegExp(`^hsl\\(${reN},${reP},${reP}\\)$`), reHslaPercent = new RegExp(`^hsla\\(${reN},${reP},${reP},${reN}\\)$`); var named = { aliceblue: 15792383, antiquewhite: 16444375, aqua: 65535, aquamarine: 8388564, azure: 15794175, beige: 16119260, bisque: 16770244, black: 0, blanchedalmond: 16772045, blue: 255, blueviolet: 9055202, brown: 10824234, burlywood: 14596231, cadetblue: 6266528, chartreuse: 8388352, chocolate: 13789470, coral: 16744272, cornflowerblue: 6591981, cornsilk: 16775388, crimson: 14423100, cyan: 65535, darkblue: 139, darkcyan: 35723, darkgoldenrod: 12092939, darkgray: 11119017, darkgreen: 25600, darkgrey: 11119017, darkkhaki: 12433259, darkmagenta: 9109643, darkolivegreen: 5597999, darkorange: 16747520, darkorchid: 10040012, darkred: 9109504, darksalmon: 15308410, darkseagreen: 9419919, darkslateblue: 4734347, darkslategray: 3100495, darkslategrey: 3100495, darkturquoise: 52945, darkviolet: 9699539, deeppink: 16716947, deepskyblue: 49151, dimgray: 6908265, dimgrey: 6908265, dodgerblue: 2003199, firebrick: 11674146, floralwhite: 16775920, forestgreen: 2263842, fuchsia: 16711935, gainsboro: 14474460, ghostwhite: 16316671, gold: 16766720, goldenrod: 14329120, gray: 8421504, green: 32768, greenyellow: 11403055, grey: 8421504, honeydew: 15794160, hotpink: 16738740, indianred: 13458524, indigo: 4915330, ivory: 16777200, khaki: 15787660, lavender: 15132410, lavenderblush: 16773365, lawngreen: 8190976, lemonchiffon: 16775885, lightblue: 11393254, lightcoral: 15761536, lightcyan: 14745599, lightgoldenrodyellow: 16448210, lightgray: 13882323, lightgreen: 9498256, lightgrey: 13882323, lightpink: 16758465, lightsalmon: 16752762, lightseagreen: 2142890, lightskyblue: 8900346, lightslategray: 7833753, lightslategrey: 7833753, lightsteelblue: 11584734, lightyellow: 16777184, lime: 65280, limegreen: 3329330, linen: 16445670, magenta: 16711935, maroon: 8388608, mediumaquamarine: 6737322, mediumblue: 205, mediumorchid: 12211667, mediumpurple: 9662683, mediumseagreen: 3978097, mediumslateblue: 8087790, mediumspringgreen: 64154, mediumturquoise: 4772300, mediumvioletred: 13047173, midnightblue: 1644912, mintcream: 16121850, mistyrose: 16770273, moccasin: 16770229, navajowhite: 16768685, navy: 128, oldlace: 16643558, olive: 8421376, olivedrab: 7048739, orange: 16753920, orangered: 16729344, orchid: 14315734, palegoldenrod: 15657130, palegreen: 10025880, paleturquoise: 11529966, palevioletred: 14381203, papayawhip: 16773077, peachpuff: 16767673, peru: 13468991, pink: 16761035, plum: 14524637, powderblue: 11591910, purple: 8388736, rebeccapurple: 6697881, red: 16711680, rosybrown: 12357519, royalblue: 4286945, saddlebrown: 9127187, salmon: 16416882, sandybrown: 16032864, seagreen: 3050327, seashell: 16774638, sienna: 10506797, silver: 12632256, skyblue: 8900331, slateblue: 6970061, slategray: 7372944, slategrey: 7372944, snow: 16775930, springgreen: 65407, steelblue: 4620980, tan: 13808780, teal: 32896, thistle: 14204888, tomato: 16737095, turquoise: 4251856, violet: 15631086, wheat: 16113331, white: 16777215, whitesmoke: 16119285, yellow: 16776960, yellowgreen: 10145074 }; define(Color$2, color, { copy(channels2) { return Object.assign(new this.constructor(), this, channels2); }, displayable() { return this.rgb().displayable(); }, hex: color_formatHex, formatHex: color_formatHex, formatHex8: color_formatHex8, formatHsl: color_formatHsl, formatRgb: color_formatRgb, toString: color_formatRgb }); function color_formatHex() { return this.rgb().formatHex(); } function color_formatHex8() { return this.rgb().formatHex8(); } function color_formatHsl() { return hslConvert(this).formatHsl(); } function color_formatRgb() { return this.rgb().formatRgb(); } function color(format2) { var m, l; format2 = (format2 + "").trim().toLowerCase(); return (m = reHex.exec(format2)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) : l === 3 ? new Rgb(m >> 8 & 15 | m >> 4 & 240, m >> 4 & 15 | m & 240, (m & 15) << 4 | m & 15, 1) : l === 8 ? rgba$2(m >> 24 & 255, m >> 16 & 255, m >> 8 & 255, (m & 255) / 255) : l === 4 ? rgba$2(m >> 12 & 15 | m >> 8 & 240, m >> 8 & 15 | m >> 4 & 240, m >> 4 & 15 | m & 240, ((m & 15) << 4 | m & 15) / 255) : null) : (m = reRgbInteger.exec(format2)) ? new Rgb(m[1], m[2], m[3], 1) : (m = reRgbPercent.exec(format2)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) : (m = reRgbaInteger.exec(format2)) ? rgba$2(m[1], m[2], m[3], m[4]) : (m = reRgbaPercent.exec(format2)) ? rgba$2(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) : (m = reHslPercent.exec(format2)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) : (m = reHslaPercent.exec(format2)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) : named.hasOwnProperty(format2) ? rgbn(named[format2]) : format2 === "transparent" ? new Rgb(NaN, NaN, NaN, 0) : null; } function rgbn(n) { return new Rgb(n >> 16 & 255, n >> 8 & 255, n & 255, 1); } function rgba$2(r, g, b, a) { if (a <= 0) r = g = b = NaN; return new Rgb(r, g, b, a); } function rgbConvert(o) { if (!(o instanceof Color$2)) o = color(o); if (!o) return new Rgb(); o = o.rgb(); return new Rgb(o.r, o.g, o.b, o.opacity); } function rgb(r, g, b, opacity) { return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity); } function Rgb(r, g, b, opacity) { this.r = +r; this.g = +g; this.b = +b; this.opacity = +opacity; } define(Rgb, rgb, extend$1(Color$2, { brighter(k) { k = k == null ? brighter : Math.pow(brighter, k); return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity); }, darker(k) { k = k == null ? darker : Math.pow(darker, k); return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity); }, rgb() { return this; }, clamp() { return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity)); }, displayable() { return -0.5 <= this.r && this.r < 255.5 && (-0.5 <= this.g && this.g < 255.5) && (-0.5 <= this.b && this.b < 255.5) && (0 <= this.opacity && this.opacity <= 1); }, hex: rgb_formatHex, formatHex: rgb_formatHex, formatHex8: rgb_formatHex8, formatRgb: rgb_formatRgb, toString: rgb_formatRgb })); function rgb_formatHex() { return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}`; } function rgb_formatHex8() { return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`; } function rgb_formatRgb() { const a = clampa(this.opacity); return `${a === 1 ? "rgb(" : "rgba("}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? ")" : `, ${a})`}`; } function clampa(opacity) { return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity)); } function clampi(value) { return Math.max(0, Math.min(255, Math.round(value) || 0)); } function hex(value) { value = clampi(value); return (value < 16 ? "0" : "") + value.toString(16); } function hsla(h, s, l, a) { if (a <= 0) h = s = l = NaN; else if (l <= 0 || l >= 1) h = s = NaN; else if (s <= 0) h = NaN; return new Hsl(h, s, l, a); } function hslConvert(o) { if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity); if (!(o instanceof Color$2)) o = color(o); if (!o) return new Hsl(); if (o instanceof Hsl) return o; o = o.rgb(); var r = o.r / 255, g = o.g / 255, b = o.b / 255, min2 = Math.min(r, g, b), max2 = Math.max(r, g, b), h = NaN, s = max2 - min2, l = (max2 + min2) / 2; if (s) { if (r === max2) h = (g - b) / s + (g < b) * 6; else if (g === max2) h = (b - r) / s + 2; else h = (r - g) / s + 4; s /= l < 0.5 ? max2 + min2 : 2 - max2 - min2; h *= 60; } else { s = l > 0 && l < 1 ? 0 : h; } return new Hsl(h, s, l, o.opacity); } function hsl(h, s, l, opacity) { return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity); } function Hsl(h, s, l, opacity) { this.h = +h; this.s = +s; this.l = +l; this.opacity = +opacity; } define(Hsl, hsl, extend$1(Color$2, { brighter(k) { k = k == null ? brighter : Math.pow(brighter, k); return new Hsl(this.h, this.s, this.l * k, this.opacity); }, darker(k) { k = k == null ? darker : Math.pow(darker, k); return new Hsl(this.h, this.s, this.l * k, this.opacity); }, rgb() { var h = this.h % 360 + (this.h < 0) * 360, s = isNaN(h) || isNaN(this.s) ? 0 : this.s, l = this.l, m2 = l + (l < 0.5 ? l : 1 - l) * s, m1 = 2 * l - m2; return new Rgb( hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2), hsl2rgb(h, m1, m2), hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2), this.opacity ); }, clamp() { return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity)); }, displayable() { return (0 <= this.s && this.s <= 1 || isNaN(this.s)) && (0 <= this.l && this.l <= 1) && (0 <= this.opacity && this.opacity <= 1); }, formatHsl() { const a = clampa(this.opacity); return `${a === 1 ? "hsl(" : "hsla("}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? ")" : `, ${a})`}`; } })); function clamph(value) { value = (value || 0) % 360; return value < 0 ? value + 360 : value; } function clampt(value) { return Math.max(0, Math.min(1, value || 0)); } function hsl2rgb(h, m1, m2) { return (h < 60 ? m1 + (m2 - m1) * h / 60 : h < 180 ? m2 : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60 : m1) * 255; } const radians = Math.PI / 180; const degrees$1 = 180 / Math.PI; const K = 18, Xn = 0.96422, Yn = 1, Zn = 0.82521, t0$1 = 4 / 29, t1$1 = 6 / 29, t2 = 3 * t1$1 * t1$1, t3 = t1$1 * t1$1 * t1$1; function labConvert(o) { if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity); if (o instanceof Hcl) return hcl2lab(o); if (!(o instanceof Rgb)) o = rgbConvert(o); var r = rgb2lrgb(o.r), g = rgb2lrgb(o.g), b = rgb2lrgb(o.b), y2 = xyz2lab((0.2225045 * r + 0.7168786 * g + 0.0606169 * b) / Yn), x2, z; if (r === g && g === b) x2 = z = y2; else { x2 = xyz2lab((0.4360747 * r + 0.3850649 * g + 0.1430804 * b) / Xn); z = xyz2lab((0.0139322 * r + 0.0971045 * g + 0.7141733 * b) / Zn); } return new Lab(116 * y2 - 16, 500 * (x2 - y2), 200 * (y2 - z), o.opacity); } function lab(l, a, b, opacity) { return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity); } function Lab(l, a, b, opacity) { this.l = +l; this.a = +a; this.b = +b; this.opacity = +opacity; } define(Lab, lab, extend$1(Color$2, { brighter(k) { return new Lab(this.l + K * (k == null ? 1 : k), this.a, this.b, this.opacity); }, darker(k) { return new Lab(this.l - K * (k == null ? 1 : k), this.a, this.b, this.opacity); }, rgb() { var y2 = (this.l + 16) / 116, x2 = isNaN(this.a) ? y2 : y2 + this.a / 500, z = isNaN(this.b) ? y2 : y2 - this.b / 200; x2 = Xn * lab2xyz(x2); y2 = Yn * lab2xyz(y2); z = Zn * lab2xyz(z); return new Rgb( lrgb2rgb(3.1338561 * x2 - 1.6168667 * y2 - 0.4906146 * z), lrgb2rgb(-0.9787684 * x2 + 1.9161415 * y2 + 0.033454 * z), lrgb2rgb(0.0719453 * x2 - 0.2289914 * y2 + 1.4052427 * z), this.opacity ); } })); function xyz2lab(t) { return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0$1; } function lab2xyz(t) { return t > t1$1 ? t * t * t : t2 * (t - t0$1); } function lrgb2rgb(x2) { return 255 * (x2 <= 31308e-7 ? 12.92 * x2 : 1.055 * Math.pow(x2, 1 / 2.4) - 0.055); } function rgb2lrgb(x2) { return (x2 /= 255) <= 0.04045 ? x2 / 12.92 : Math.pow((x2 + 0.055) / 1.055, 2.4); } function hclConvert(o) { if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity); if (!(o instanceof Lab)) o = labConvert(o); if (o.a === 0 && o.b === 0) return new Hcl(NaN, 0 < o.l && o.l < 100 ? 0 : NaN, o.l, o.opacity); var h = Math.atan2(o.b, o.a) * degrees$1; return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity); } function hcl$1(h, c2, l, opacity) { return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c2, l, opacity == null ? 1 : opacity); } function Hcl(h, c2, l, opacity) { this.h = +h; this.c = +c2; this.l = +l; this.opacity = +opacity; } function hcl2lab(o) { if (isNaN(o.h)) return new Lab(o.l, 0, 0, o.opacity); var h = o.h * radians; return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity); } define(Hcl, hcl$1, extend$1(Color$2, { brighter(k) { return new Hcl(this.h, this.c, this.l + K * (k == null ? 1 : k), this.opacity); }, darker(k) { return new Hcl(this.h, this.c, this.l - K * (k == null ? 1 : k), this.opacity); }, rgb() { return hcl2lab(this).rgb(); } })); const constant$2 = (x2) => () => x2; function linear$1(a, d) { return function(t) { return a + t * d; }; } function exponential(a, b, y2) { return a = Math.pow(a, y2), b = Math.pow(b, y2) - a, y2 = 1 / y2, function(t) { return Math.pow(a + t * b, y2); }; } function hue(a, b) { var d = b - a; return d ? linear$1(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant$2(isNaN(a) ? b : a); } function gamma(y2) { return (y2 = +y2) === 1 ? nogamma : function(a, b) { return b - a ? exponential(a, b, y2) : constant$2(isNaN(a) ? b : a); }; } function nogamma(a, b) { var d = b - a; return d ? linear$1(a, d) : constant$2(isNaN(a) ? b : a); } const interpolateRgb = function rgbGamma(y2) { var color2 = gamma(y2); function rgb$1(start2, end2) { var r = color2((start2 = rgb(start2)).r, (end2 = rgb(end2)).r), g = color2(start2.g, end2.g), b = color2(start2.b, end2.b), opacity = nogamma(start2.opacity, end2.opacity); return function(t) { start2.r = r(t); start2.g = g(t); start2.b = b(t); start2.opacity = opacity(t); return start2 + ""; }; } rgb$1.gamma = rgbGamma; return rgb$1; }(1); function numberArray(a, b) { if (!b) b = []; var n = a ? Math.min(b.length, a.length) : 0, c2 = b.slice(), i; return function(t) { for (i = 0; i < n; ++i) c2[i] = a[i] * (1 - t) + b[i] * t; return c2; }; } function isNumberArray(x2) { return ArrayBuffer.isView(x2) && !(x2 instanceof DataView); } function genericArray(a, b) { var nb = b ? b.length : 0, na = a ? Math.min(nb, a.length) : 0, x2 = new Array(na), c2 = new Array(nb), i; for (i = 0; i < na; ++i) x2[i] = interpolate$1(a[i], b[i]); for (; i < nb; ++i) c2[i] = b[i]; return function(t) { for (i = 0; i < na; ++i) c2[i] = x2[i](t); return c2; }; } function date$1(a, b) { var d = new Date(); return a = +a, b = +b, function(t) { return d.setTime(a * (1 - t) + b * t), d; }; } function interpolateNumber(a, b) { return a = +a, b = +b, function(t) { return a * (1 - t) + b * t; }; } function object(a, b) { var i = {}, c2 = {}, k; if (a === null || typeof a !== "object") a = {}; if (b === null || typeof b !== "object") b = {}; for (k in b) { if (k in a) { i[k] = interpolate$1(a[k], b[k]); } else { c2[k] = b[k]; } } return function(t) { for (k in i) c2[k] = i[k](t); return c2; }; } var reA = /[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g, reB = new RegExp(reA.source, "g"); function zero(b) { return function() { return b; }; } function one(b) { return function(t) { return b(t) + ""; }; } function interpolateString(a, b) { var bi = reA.lastIndex = reB.lastIndex = 0, am, bm, bs, i = -1, s = [], q = []; a = a + "", b = b + ""; while ((am = reA.exec(a)) && (bm = reB.exec(b))) { if ((bs = bm.index) > bi) { bs = b.slice(bi, bs); if (s[i]) s[i] += bs; else s[++i] = bs; } if ((am = am[0]) === (bm = bm[0])) { if (s[i]) s[i] += bm; else s[++i] = bm; } else { s[++i] = null; q.push({ i, x: interpolateNumber(am, bm) }); } bi = reB.lastIndex; } if (bi < b.length) { bs = b.slice(bi); if (s[i]) s[i] += bs; else s[++i] = bs; } return s.length < 2 ? q[0] ? one(q[0].x) : zero(b) : (b = q.length, function(t) { for (var i2 = 0, o; i2 < b; ++i2) s[(o = q[i2]).i] = o.x(t); return s.join(""); }); } function interpolate$1(a, b) { var t = typeof b, c2; return b == null || t === "boolean" ? constant$2(b) : (t === "number" ? interpolateNumber : t === "string" ? (c2 = color(b)) ? (b = c2, interpolateRgb) : interpolateString : b instanceof color ? interpolateRgb : b instanceof Date ? date$1 : isNumberArray(b) ? numberArray : Array.isArray(b) ? genericArray : typeof b.valueOf !== "function" && typeof b.toString !== "function" || isNaN(b) ? object : interpolateNumber)(a, b); } function interpolateRound(a, b) { return a = +a, b = +b, function(t) { return Math.round(a * (1 - t) + b * t); }; } var degrees = 180 / Math.PI; var identity$4 = { translateX: 0, translateY: 0, rotate: 0, skewX: 0, scaleX: 1, scaleY: 1 }; function decompose(a, b, c2, d, e, f) { var scaleX, scaleY, skewX; if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX; if (skewX = a * c2 + b * d) c2 -= a * skewX, d -= b * skewX; if (scaleY = Math.sqrt(c2 * c2 + d * d)) c2 /= scaleY, d /= scaleY, skewX /= scaleY; if (a * d < b * c2) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX; return { translateX: e, translateY: f, rotate: Math.atan2(b, a) * degrees, skewX: Math.atan(skewX) * degrees, scaleX, scaleY }; } var svgNode; function parseCss(value) { const m = new (typeof DOMMatrix === "function" ? DOMMatrix : WebKitCSSMatrix)(value + ""); return m.isIdentity ? identity$4 : decompose(m.a, m.b, m.c, m.d, m.e, m.f); } function parseSvg(value) { if (value == null) return identity$4; if (!svgNode) svgNode = document.createElementNS("http://www.w3.org/2000/svg", "g"); svgNode.setAttribute("transform", value); if (!(value = svgNode.transform.baseVal.consolidate())) return identity$4; value = value.matrix; return decompose(value.a, value.b, value.c, value.d, value.e, value.f); } function interpolateTransform(parse2, pxComma, pxParen, degParen) { function pop(s) { return s.length ? s.pop() + " " : ""; } function translate(xa, ya, xb, yb, s, q) { if (xa !== xb || ya !== yb) { var i = s.push("translate(", null, pxComma, null, pxParen); q.push({ i: i - 4, x: interpolateNumber(xa, xb) }, { i: i - 2, x: interpolateNumber(ya, yb) }); } else if (xb || yb) { s.push("translate(" + xb + pxComma + yb + pxParen); } } function rotate(a, b, s, q) { if (a !== b) { if (a - b > 180) b += 360; else if (b - a > 180) a += 360; q.push({ i: s.push(pop(s) + "rotate(", null, degParen) - 2, x: interpolateNumber(a, b) }); } else if (b) { s.push(pop(s) + "rotate(" + b + degParen); } } function skewX(a, b, s, q) { if (a !== b) { q.push({ i: s.push(pop(s) + "skewX(", null, degParen) - 2, x: interpolateNumber(a, b) }); } else if (b) { s.push(pop(s) + "skewX(" + b + degParen); } } function scale(xa, ya, xb, yb, s, q) { if (xa !== xb || ya !== yb) { var i = s.push(pop(s) + "scale(", null, ",", null, ")"); q.push({ i: i - 4, x: interpolateNumber(xa, xb) }, { i: i - 2, x: interpolateNumber(ya, yb) }); } else if (xb !== 1 || yb !== 1) { s.push(pop(s) + "scale(" + xb + "," + yb + ")"); } } return function(a, b) { var s = [], q = []; a = parse2(a), b = parse2(b); translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q); rotate(a.rotate, b.rotate, s, q); skewX(a.skewX, b.skewX, s, q); scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q); a = b = null; return function(t) { var i = -1, n = q.length, o; while (++i < n) s[(o = q[i]).i] = o.x(t); return s.join(""); }; }; } var interpolateTransformCss = interpolateTransform(parseCss, "px, ", "px)", "deg)"); var interpolateTransformSvg = interpolateTransform(parseSvg, ", ", ")", ")"); function hcl(hue2) { return function(start2, end2) { var h = hue2((start2 = hcl$1(start2)).h, (end2 = hcl$1(end2)).h), c2 = nogamma(start2.c, end2.c), l = nogamma(start2.l, end2.l), opacity = nogamma(start2.opacity, end2.opacity); return function(t) { start2.h = h(t); start2.c = c2(t); start2.l = l(t); start2.opacity = opacity(t); return start2 + ""; }; }; } const interpolateHcl = hcl(hue); var frame = 0, timeout$1 = 0, interval = 0, pokeDelay = 1e3, taskHead, taskTail, clockLast = 0, clockNow = 0, clockSkew = 0, clock = typeof performance === "object" && performance.now ? performance : Date, setFrame = typeof window === "object" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); }; function now$2() { return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew); } function clearNow() { clockNow = 0; } function Timer() { this._call = this._time = this._next = null; } Timer.prototype = timer.prototype = { constructor: Timer, restart: function(callback, delay, time2) { if (typeof callback !== "function") throw new TypeError("callback is not a function"); time2 = (time2 == null ? now$2() : +time2) + (delay == null ? 0 : +delay); if (!this._next && taskTail !== this) { if (taskTail) taskTail._next = this; else taskHead = this; taskTail = this; } this._call = callback; this._time = time2; sleep(); }, stop: function() { if (this._call) { this._call = null; this._time = Infinity; sleep(); } } }; function timer(callback, delay, time2) { var t = new Timer(); t.restart(callback, delay, time2); return t; } function timerFlush() { now$2(); ++frame; var t = taskHead, e; while (t) { if ((e = clockNow - t._time) >= 0) t._call.call(void 0, e); t = t._next; } --frame; } function wake() { clockNow = (clockLast = clock.now()) + clockSkew; frame = timeout$1 = 0; try { timerFlush(); } finally { frame = 0; nap(); clockNow = 0; } } function poke() { var now2 = clock.now(), delay = now2 - clockLast; if (delay > pokeDelay) clockSkew -= delay, clockLast = now2; } function nap() { var t02, t12 = taskHead, t22, time2 = Infinity; while (t12) { if (t12._call) { if (time2 > t12._time) time2 = t12._time; t02 = t12, t12 = t12._next; } else { t22 = t12._next, t12._next = null; t12 = t02 ? t02._next = t22 : taskHead = t22; } } taskTail = t02; sleep(time2); } function sleep(time2) { if (frame) return; if (timeout$1) timeout$1 = clearTimeout(timeout$1); var delay = time2 - clockNow; if (delay > 24) { if (time2 < Infinity) timeout$1 = setTimeout(wake, time2 - clock.now() - clockSkew); if (interval) interval = clearInterval(interval); } else { if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay); frame = 1, setFrame(wake); } } function timeout(callback, delay, time2) { var t = new Timer(); delay = delay == null ? 0 : +delay; t.restart((elapsed) => { t.stop(); callback(elapsed + delay); }, delay, time2); return t; } var emptyOn = dispatch("start", "end", "cancel", "interrupt"); var emptyTween = []; var CREATED = 0; var SCHEDULED = 1; var STARTING = 2; var STARTED = 3; var RUNNING = 4; var ENDING = 5; var ENDED = 6; function schedule(node2, name2, id2, index, group, timing) { var schedules = node2.__transition; if (!schedules) node2.__transition = {}; else if (id2 in schedules) return; create$1(node2, id2, { name: name2, index, group, on: emptyOn, tween: emptyTween, time: timing.time, delay: timing.delay, duration: timing.duration, ease: timing.ease, timer: null, state: CREATED }); } function init$1(node2, id2) { var schedule2 = get$2(node2, id2); if (schedule2.state > CREATED) throw new Error("too late; already scheduled"); return schedule2; } function set$2(node2, id2) { var schedule2 = get$2(node2, id2); if (schedule2.state > STARTED) throw new Error("too late; already running"); return schedule2; } function get$2(node2, id2) { var schedule2 = node2.__transition; if (!schedule2 || !(schedule2 = schedule2[id2])) throw new Error("transition not found"); return schedule2; } function create$1(node2, id2, self2) { var schedules = node2.__transition, tween; schedules[id2] = self2; self2.timer = timer(schedule2, 0, self2.time); function schedule2(elapsed) { self2.state = SCHEDULED; self2.timer.restart(start2, self2.delay, self2.time); if (self2.delay <= elapsed) start2(elapsed - self2.delay); } function start2(elapsed) { var i, j, n, o; if (self2.state !== SCHEDULED) return stop(); for (i in schedules) { o = schedules[i]; if (o.name !== self2.name) continue; if (o.state === STARTED) return timeout(start2); if (o.state === RUNNING) { o.state = ENDED; o.timer.stop(); o.on.call("interrupt", node2, node2.__data__, o.index, o.group); delete schedules[i]; } else if (+i < id2) { o.state = ENDED; o.timer.stop(); o.on.call("cancel", node2, node2.__data__, o.index, o.group); delete schedules[i]; } } timeout(function() { if (self2.state === STARTED) { self2.state = RUNNING; self2.timer.restart(tick, self2.delay, self2.time); tick(elapsed); } }); self2.state = STARTING; self2.on.call("start", node2, node2.__data__, self2.index, self2.group); if (self2.state !== STARTING) return; self2.state = STARTED; tween = new Array(n = self2.tween.length); for (i = 0, j = -1; i < n; ++i) { if (o = self2.tween[i].value.call(node2, node2.__data__, self2.index, self2.group)) { tween[++j] = o; } } tween.length = j + 1; } function tick(elapsed) { var t = elapsed < self2.duration ? self2.ease.call(null, elapsed / self2.duration) : (self2.timer.restart(stop), self2.state = ENDING, 1), i = -1, n = tween.length; while (++i < n) { tween[i].call(node2, t); } if (self2.state === ENDING) { self2.on.call("end", node2, node2.__data__, self2.index, self2.group); stop(); } } function stop() { self2.state = ENDED; self2.timer.stop(); delete schedules[id2]; for (var i in schedules) return; delete node2.__transition; } } function interrupt(node2, name2) { var schedules = node2.__transition, schedule2, active, empty2 = true, i; if (!schedules) return; name2 = name2 == null ? null : name2 + ""; for (i in schedules) { if ((schedule2 = schedules[i]).name !== name2) { empty2 = false; continue; } active = schedule2.state > STARTING && schedule2.state < ENDING; schedule2.state = ENDED; schedule2.timer.stop(); schedule2.on.call(active ? "interrupt" : "cancel", node2, node2.__data__, schedule2.index, schedule2.group); delete schedules[i]; } if (empty2) delete node2.__transition; } function selection_interrupt(name2) { return this.each(function() { interrupt(this, name2); }); } function tweenRemove(id2, name2) { var tween0, tween1; return function() { var schedule2 = set$2(this, id2), tween = schedule2.tween; if (tween !== tween0) { tween1 = tween0 = tween; for (var i = 0, n = tween1.length; i < n; ++i) { if (tween1[i].name === name2) { tween1 = tween1.slice(); tween1.splice(i, 1); break; } } } schedule2.tween = tween1; }; } function tweenFunction(id2, name2, value) { var tween0, tween1; if (typeof value !== "function") throw new Error(); return function() { var schedule2 = set$2(this, id2), tween = schedule2.tween; if (tween !== tween0) { tween1 = (tween0 = tween).slice(); for (var t = { name: name2, value }, i = 0, n = tween1.length; i < n; ++i) { if (tween1[i].name === name2) { tween1[i] = t; break; } } if (i === n) tween1.push(t); } schedule2.tween = tween1; }; } function transition_tween(name2, value) { var id2 = this._id; name2 += ""; if (arguments.length < 2) { var tween = get$2(this.node(), id2).tween; for (var i = 0, n = tween.length, t; i < n; ++i) { if ((t = tween[i]).name === name2) { return t.value; } } return null; } return this.each((value == null ? tweenRemove : tweenFunction)(id2, name2, value)); } function tweenValue(transition, name2, value) { var id2 = transition._id; transition.each(function() { var schedule2 = set$2(this, id2); (schedule2.value || (schedule2.value = {}))[name2] = value.apply(this, arguments); }); return function(node2) { return get$2(node2, id2).value[name2]; }; } function interpolate(a, b) { var c2; return (typeof b === "number" ? interpolateNumber : b instanceof color ? interpolateRgb : (c2 = color(b)) ? (b = c2, interpolateRgb) : interpolateString)(a, b); } function attrRemove(name2) { return function() { this.removeAttribute(name2); }; } function attrRemoveNS(fullname) { return function() { this.removeAttributeNS(fullname.space, fullname.local); }; } function attrConstant(name2, interpolate2, value1) { var string00, string1 = value1 + "", interpolate0; return function() { var string0 = this.getAttribute(name2); return string0 === string1 ? null : string0 === string00 ? interpolate0 : interpolate0 = interpolate2(string00 = string0, value1); }; } function attrConstantNS(fullname, interpolate2, value1) { var string00, string1 = value1 + "", interpolate0; return function() { var string0 = this.getAttributeNS(fullname.space, fullname.local); return string0 === string1 ? null : string0 === string00 ? interpolate0 : interpolate0 = interpolate2(string00 = string0, value1); }; } function attrFunction(name2, interpolate2, value) { var string00, string10, interpolate0; return function() { var string0, value1 = value(this), string1; if (value1 == null) return void this.removeAttribute(name2); string0 = this.getAttribute(name2); string1 = value1 + ""; return string0 === string1 ? null : string0 === string00 && string1 === string10 ? interpolate0 : (string10 = string1, interpolate0 = interpolate2(string00 = string0, value1)); }; } function attrFunctionNS(fullname, interpolate2, value) { var string00, string10, interpolate0; return function() { var string0, value1 = value(this), string1; if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local); string0 = this.getAttributeNS(fullname.space, fullname.local); string1 = value1 + ""; return string0 === string1 ? null : string0 === string00 && string1 === string10 ? interpolate0 : (string10 = string1, interpolate0 = interpolate2(string00 = string0, value1)); }; } function transition_attr(name2, value) { var fullname = namespace(name2), i = fullname === "transform" ? interpolateTransformSvg : interpolate; return this.attrTween(name2, typeof value === "function" ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, "attr." + name2, value)) : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname) : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value)); } function attrInterpolate(name2, i) { return function(t) { this.setAttribute(name2, i.call(this, t)); }; } function attrInterpolateNS(fullname, i) { return function(t) { this.setAttributeNS(fullname.space, fullname.local, i.call(this, t)); }; } function attrTweenNS(fullname, value) { var t02, i0; function tween() { var i = value.apply(this, arguments); if (i !== i0) t02 = (i0 = i) && attrInterpolateNS(fullname, i); return t02; } tween._value = value; return tween; } function attrTween(name2, value) { var t02, i0; function tween() { var i = value.apply(this, arguments); if (i !== i0) t02 = (i0 = i) && attrInterpolate(name2, i); return t02; } tween._value = value; return tween; } function transition_attrTween(name2, value) { var key = "attr." + name2; if (arguments.length < 2) return (key = this.tween(key)) && key._value; if (value == null) return this.tween(key, null); if (typeof value !== "function") throw new Error(); var fullname = namespace(name2); return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value)); } function delayFunction(id2, value) { return function() { init$1(this, id2).delay = +value.apply(this, arguments); }; } function delayConstant(id2, value) { return value = +value, function() { init$1(this, id2).delay = value; }; } function transition_delay(value) { var id2 = this._id; return arguments.length ? this.each((typeof value === "function" ? delayFunction : delayConstant)(id2, value)) : get$2(this.node(), id2).delay; } function durationFunction(id2, value) { return function() { set$2(this, id2).duration = +value.apply(this, arguments); }; } function durationConstant(id2, value) { return value = +value, function() { set$2(this, id2).duration = value; }; } function transition_duration(value) { var id2 = this._id; return arguments.length ? this.each((typeof value === "function" ? durationFunction : durationConstant)(id2, value)) : get$2(this.node(), id2).duration; } function easeConstant(id2, value) { if (typeof value !== "function") throw new Error(); return function() { set$2(this, id2).ease = value; }; } function transition_ease(value) { var id2 = this._id; return arguments.length ? this.each(easeConstant(id2, value)) : get$2(this.node(), id2).ease; } function easeVarying(id2, value) { return function() { var v = value.apply(this, arguments); if (typeof v !== "function") throw new Error(); set$2(this, id2).ease = v; }; } function transition_easeVarying(value) { if (typeof value !== "function") throw new Error(); return this.each(easeVarying(this._id, value)); } function transition_filter(match) { if (typeof match !== "function") match = matcher(match); for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) { for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node2, i = 0; i < n; ++i) { if ((node2 = group[i]) && match.call(node2, node2.__data__, i, group)) { subgroup.push(node2); } } } return new Transition(subgroups, this._parents, this._name, this._id); } function transition_merge(transition) { if (transition._id !== this._id) throw new Error(); for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) { for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge2 = merges[j] = new Array(n), node2, i = 0; i < n; ++i) { if (node2 = group0[i] || group1[i]) { merge2[i] = node2; } } } for (; j < m0; ++j) { merges[j] = groups0[j]; } return new Transition(merges, this._parents, this._name, this._id); } function start$1(name2) { return (name2 + "").trim().split(/^|\s+/).every(function(t) { var i = t.indexOf("."); if (i >= 0) t = t.slice(0, i); return !t || t === "start"; }); } function onFunction(id2, name2, listener) { var on0, on1, sit = start$1(name2) ? init$1 : set$2; return function() { var schedule2 = sit(this, id2), on = schedule2.on; if (on !== on0) (on1 = (on0 = on).copy()).on(name2, listener); schedule2.on = on1; }; } function transition_on(name2, listener) { var id2 = this._id; return arguments.length < 2 ? get$2(this.node(), id2).on.on(name2) : this.each(onFunction(id2, name2, listener)); } function removeFunction(id2) { return function() { var parent = this.parentNode; for (var i in this.__transition) if (+i !== id2) return; if (parent) parent.removeChild(this); }; } function transition_remove() { return this.on("end.remove", removeFunction(this._id)); } function transition_select(select2) { var name2 = this._name, id2 = this._id; if (typeof select2 !== "function") select2 = selector(select2); for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) { for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node2, subnode, i = 0; i < n; ++i) { if ((node2 = group[i]) && (subnode = select2.call(node2, node2.__data__, i, group))) { if ("__data__" in node2) subnode.__data__ = node2.__data__; subgroup[i] = subnode; schedule(subgroup[i], name2, id2, i, subgroup, get$2(node2, id2)); } } } return new Transition(subgroups, this._parents, name2, id2); } function transition_selectAll(select2) { var name2 = this._name, id2 = this._id; if (typeof select2 !== "function") select2 = selectorAll(select2); for (var groups = this._groups, m = groups.length, subgroups = [], parents2 = [], j = 0; j < m; ++j) { for (var group = groups[j], n = group.length, node2, i = 0; i < n; ++i) { if (node2 = group[i]) { for (var children2 = select2.call(node2, node2.__data__, i, group), child, inherit2 = get$2(node2, id2), k = 0, l = children2.length; k < l; ++k) { if (child = children2[k]) { schedule(child, name2, id2, k, children2, inherit2); } } subgroups.push(children2); parents2.push(node2); } } } return new Transition(subgroups, parents2, name2, id2); } var Selection = selection.prototype.constructor; function transition_selection() { return new Selection(this._groups, this._parents); } function styleNull(name2, interpolate2) { var string00, string10, interpolate0; return function() { var string0 = styleValue(this, name2), string1 = (this.style.removeProperty(name2), styleValue(this, name2)); return string0 === string1 ? null : string0 === string00 && string1 === string10 ? interpolate0 : interpolate0 = interpolate2(string00 = string0, string10 = string1); }; } function styleRemove(name2) { return function() { this.style.removeProperty(name2); }; } function styleConstant(name2, interpolate2, value1) { var string00, string1 = value1 + "", interpolate0; return function() { var string0 = styleValue(this, name2); return string0 === string1 ? null : string0 === string00 ? interpolate0 : interpolate0 = interpolate2(string00 = string0, value1); }; } function styleFunction(name2, interpolate2, value) { var string00, string10, interpolate0; return function() { var string0 = styleValue(this, name2), value1 = value(this), string1 = value1 + ""; if (value1 == null) string1 = value1 = (this.style.removeProperty(name2), styleValue(this, name2)); return string0 === string1 ? null : string0 === string00 && string1 === string10 ? interpolate0 : (string10 = string1, interpolate0 = interpolate2(string00 = string0, value1)); }; } function styleMaybeRemove(id2, name2) { var on0, on1, listener0, key = "style." + name2, event = "end." + key, remove2; return function() { var schedule2 = set$2(this, id2), on = schedule2.on, listener = schedule2.value[key] == null ? remove2 || (remove2 = styleRemove(name2)) : void 0; if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener); schedule2.on = on1; }; } function transition_style(name2, value, priority) { var i = (name2 += "") === "transform" ? interpolateTransformCss : interpolate; return value == null ? this.styleTween(name2, styleNull(name2, i)).on("end.style." + name2, styleRemove(name2)) : typeof value === "function" ? this.styleTween(name2, styleFunction(name2, i, tweenValue(this, "style." + name2, value))).each(styleMaybeRemove(this._id, name2)) : this.styleTween(name2, styleConstant(name2, i, value), priority).on("end.style." + name2, null); } function styleInterpolate(name2, i, priority) { return function(t) { this.style.setProperty(name2, i.call(this, t), priority); }; } function styleTween(name2, value, priority) { var t, i0; function tween() { var i = value.apply(this, arguments); if (i !== i0) t = (i0 = i) && styleInterpolate(name2, i, priority); return t; } tween._value = value; return tween; } function transition_styleTween(name2, value, priority) { var key = "style." + (name2 += ""); if (arguments.length < 2) return (key = this.tween(key)) && key._value; if (value == null) return this.tween(key, null); if (typeof value !== "function") throw new Error(); return this.tween(key, styleTween(name2, value, priority == null ? "" : priority)); } function textConstant(value) { return function() { this.textContent = value; }; } function textFunction(value) { return function() { var value1 = value(this); this.textContent = value1 == null ? "" : value1; }; } function transition_text(value) { return this.tween("text", typeof value === "function" ? textFunction(tweenValue(this, "text", value)) : textConstant(value == null ? "" : value + "")); } function textInterpolate(i) { return function(t) { this.textContent = i.call(this, t); }; } function textTween(value) { var t02, i0; function tween() { var i = value.apply(this, arguments); if (i !== i0) t02 = (i0 = i) && textInterpolate(i); return t02; } tween._value = value; return tween; } function transition_textTween(value) { var key = "text"; if (arguments.length < 1) return (key = this.tween(key)) && key._value; if (value == null) return this.tween(key, null); if (typeof value !== "function") throw new Error(); return this.tween(key, textTween(value)); } function transition_transition() { var name2 = this._name, id0 = this._id, id1 = newId(); for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) { for (var group = groups[j], n = group.length, node2, i = 0; i < n; ++i) { if (node2 = group[i]) { var inherit2 = get$2(node2, id0); schedule(node2, name2, id1, i, group, { time: inherit2.time + inherit2.delay + inherit2.duration, delay: 0, duration: inherit2.duration, ease: inherit2.ease }); } } } return new Transition(groups, this._parents, name2, id1); } function transition_end() { var on0, on1, that = this, id2 = that._id, size2 = that.size(); return new Promise(function(resolve, reject) { var cancel = { value: reject }, end2 = { value: function() { if (--size2 === 0) resolve(); } }; that.each(function() { var schedule2 = set$2(this, id2), on = schedule2.on; if (on !== on0) { on1 = (on0 = on).copy(); on1._.cancel.push(cancel); on1._.interrupt.push(cancel); on1._.end.push(end2); } schedule2.on = on1; }); if (size2 === 0) resolve(); }); } var id = 0; function Transition(groups, parents2, name2, id2) { this._groups = groups; this._parents = parents2; this._name = name2; this._id = id2; } function newId() { return ++id; } var selection_prototype = selection.prototype; Transition.prototype = { constructor: Transition, select: transition_select, selectAll: transition_selectAll, selectChild: selection_prototype.selectChild, selectChildren: selection_prototype.selectChildren, filter: transition_filter, merge: transition_merge, selection: transition_selection, transition: transition_transition, call: selection_prototype.call, nodes: selection_prototype.nodes, node: selection_prototype.node, size: selection_prototype.size, empty: selection_prototype.empty, each: selection_prototype.each, on: transition_on, attr: transition_attr, attrTween: transition_attrTween, style: transition_style, styleTween: transition_styleTween, text: transition_text, textTween: transition_textTween, remove: transition_remove, tween: transition_tween, delay: transition_delay, duration: transition_duration, ease: transition_ease, easeVarying: transition_easeVarying, end: transition_end, [Symbol.iterator]: selection_prototype[Symbol.iterator] }; function cubicInOut(t) { return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2; } var defaultTiming = { time: null, delay: 0, duration: 250, ease: cubicInOut }; function inherit(node2, id2) { var timing; while (!(timing = node2.__transition) || !(timing = timing[id2])) { if (!(node2 = node2.parentNode)) { throw new Error(`transition ${id2} not found`); } } return timing; } function selection_transition(name2) { var id2, timing; if (name2 instanceof Transition) { id2 = name2._id, name2 = name2._name; } else { id2 = newId(), (timing = defaultTiming).time = now$2(), name2 = name2 == null ? null : name2 + ""; } for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) { for (var group = groups[j], n = group.length, node2, i = 0; i < n; ++i) { if (node2 = group[i]) { schedule(node2, name2, id2, i, group, timing || inherit(node2, id2)); } } } return new Transition(groups, this._parents, name2, id2); } selection.prototype.interrupt = selection_interrupt; selection.prototype.transition = selection_transition; const pi$1 = Math.PI, tau$1 = 2 * pi$1, epsilon$1 = 1e-6, tauEpsilon = tau$1 - epsilon$1; function Path() { this._x0 = this._y0 = this._x1 = this._y1 = null; this._ = ""; } function path() { return new Path(); } Path.prototype = path.prototype = { constructor: Path, moveTo: function(x2, y2) { this._ += "M" + (this._x0 = this._x1 = +x2) + "," + (this._y0 = this._y1 = +y2); }, closePath: function() { if (this._x1 !== null) { this._x1 = this._x0, this._y1 = this._y0; this._ += "Z"; } }, lineTo: function(x2, y2) { this._ += "L" + (this._x1 = +x2) + "," + (this._y1 = +y2); }, quadraticCurveTo: function(x1, y1, x2, y2) { this._ += "Q" + +x1 + "," + +y1 + "," + (this._x1 = +x2) + "," + (this._y1 = +y2); }, bezierCurveTo: function(x1, y1, x2, y2, x3, y3) { this._ += "C" + +x1 + "," + +y1 + "," + +x2 + "," + +y2 + "," + (this._x1 = +x3) + "," + (this._y1 = +y3); }, arcTo: function(x1, y1, x2, y2, r) { x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r; var x0 = this._x1, y0 = this._y1, x21 = x2 - x1, y21 = y2 - y1, x01 = x0 - x1, y01 = y0 - y1, l01_2 = x01 * x01 + y01 * y01; if (r < 0) throw new Error("negative radius: " + r); if (this._x1 === null) { this._ += "M" + (this._x1 = x1) + "," + (this._y1 = y1); } else if (!(l01_2 > epsilon$1)) ; else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon$1) || !r) { this._ += "L" + (this._x1 = x1) + "," + (this._y1 = y1); } else { var x20 = x2 - x0, y20 = y2 - y0, l21_2 = x21 * x21 + y21 * y21, l20_2 = x20 * x20 + y20 * y20, l21 = Math.sqrt(l21_2), l01 = Math.sqrt(l01_2), l = r * Math.tan((pi$1 - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2), t01 = l / l01, t21 = l / l21; if (Math.abs(t01 - 1) > epsilon$1) { this._ += "L" + (x1 + t01 * x01) + "," + (y1 + t01 * y01); } this._ += "A" + r + "," + r + ",0,0," + +(y01 * x20 > x01 * y20) + "," + (this._x1 = x1 + t21 * x21) + "," + (this._y1 = y1 + t21 * y21); } }, arc: function(x2, y2, r, a0, a1, ccw) { x2 = +x2, y2 = +y2, r = +r, ccw = !!ccw; var dx = r * Math.cos(a0), dy = r * Math.sin(a0), x0 = x2 + dx, y0 = y2 + dy, cw = 1 ^ ccw, da = ccw ? a0 - a1 : a1 - a0; if (r < 0) throw new Error("negative radius: " + r); if (this._x1 === null) { this._ += "M" + x0 + "," + y0; } else if (Math.abs(this._x1 - x0) > epsilon$1 || Math.abs(this._y1 - y0) > epsilon$1) { this._ += "L" + x0 + "," + y0; } if (!r) return; if (da < 0) da = da % tau$1 + tau$1; if (da > tauEpsilon) { this._ += "A" + r + "," + r + ",0,1," + cw + "," + (x2 - dx) + "," + (y2 - dy) + "A" + r + "," + r + ",0,1," + cw + "," + (this._x1 = x0) + "," + (this._y1 = y0); } else if (da > epsilon$1) { this._ += "A" + r + "," + r + ",0," + +(da >= pi$1) + "," + cw + "," + (this._x1 = x2 + r * Math.cos(a1)) + "," + (this._y1 = y2 + r * Math.sin(a1)); } }, rect: function(x2, y2, w2, h) { this._ += "M" + (this._x0 = this._x1 = +x2) + "," + (this._y0 = this._y1 = +y2) + "h" + +w2 + "v" + +h + "h" + -w2 + "Z"; }, toString: function() { return this._; } }; function responseText(response) { if (!response.ok) throw new Error(response.status + " " + response.statusText); return response.text(); } function text$1(input, init2) { return fetch(input, init2).then(responseText); } function parser$c(type2) { return (input, init2) => text$1(input, init2).then((text2) => new DOMParser().parseFromString(text2, type2)); } var svg$2 = parser$c("image/svg+xml"); function formatDecimal(x2) { return Math.abs(x2 = Math.round(x2)) >= 1e21 ? x2.toLocaleString("en").replace(/,/g, "") : x2.toString(10); } function formatDecimalParts(x2, p) { if ((i = (x2 = p ? x2.toExponential(p - 1) : x2.toExponential()).indexOf("e")) < 0) return null; var i, coefficient = x2.slice(0, i); return [ coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient, +x2.slice(i + 1) ]; } function exponent(x2) { return x2 = formatDecimalParts(Math.abs(x2)), x2 ? x2[1] : NaN; } function formatGroup(grouping, thousands) { return function(value, width2) { var i = value.length, t = [], j = 0, g = grouping[0], length2 = 0; while (i > 0 && g > 0) { if (length2 + g + 1 > width2) g = Math.max(1, width2 - length2); t.push(value.substring(i -= g, i + g)); if ((length2 += g + 1) > width2) break; g = grouping[j = (j + 1) % grouping.length]; } return t.reverse().join(thousands); }; } function formatNumerals(numerals) { return function(value) { return value.replace(/[0-9]/g, function(i) { return numerals[+i]; }); }; } var re = /^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i; function formatSpecifier(specifier) { if (!(match = re.exec(specifier))) throw new Error("invalid format: " + specifier); var match; return new FormatSpecifier({ fill: match[1], align: match[2], sign: match[3], symbol: match[4], zero: match[5], width: match[6], comma: match[7], precision: match[8] && match[8].slice(1), trim: match[9], type: match[10] }); } formatSpecifier.prototype = FormatSpecifier.prototype; function FormatSpecifier(specifier) { this.fill = specifier.fill === void 0 ? " " : specifier.fill + ""; this.align = specifier.align === void 0 ? ">" : specifier.align + ""; this.sign = specifier.sign === void 0 ? "-" : specifier.sign + ""; this.symbol = specifier.symbol === void 0 ? "" : specifier.symbol + ""; this.zero = !!specifier.zero; this.width = specifier.width === void 0 ? void 0 : +specifier.width; this.comma = !!specifier.comma; this.precision = specifier.precision === void 0 ? void 0 : +specifier.precision; this.trim = !!specifier.trim; this.type = specifier.type === void 0 ? "" : specifier.type + ""; } FormatSpecifier.prototype.toString = function() { return this.fill + this.align + this.sign + this.symbol + (this.zero ? "0" : "") + (this.width === void 0 ? "" : Math.max(1, this.width | 0)) + (this.comma ? "," : "") + (this.precision === void 0 ? "" : "." + Math.max(0, this.precision | 0)) + (this.trim ? "~" : "") + this.type; }; function formatTrim(s) { out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) { switch (s[i]) { case ".": i0 = i1 = i; break; case "0": if (i0 === 0) i0 = i; i1 = i; break; default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break; } } return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s; } var prefixExponent; function formatPrefixAuto(x2, p) { var d = formatDecimalParts(x2, p); if (!d) return x2 + ""; var coefficient = d[0], exponent2 = d[1], i = exponent2 - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent2 / 3))) * 3) + 1, n = coefficient.length; return i === n ? coefficient : i > n ? coefficient + new Array(i - n + 1).join("0") : i > 0 ? coefficient.slice(0, i) + "." + coefficient.slice(i) : "0." + new Array(1 - i).join("0") + formatDecimalParts(x2, Math.max(0, p + i - 1))[0]; } function formatRounded(x2, p) { var d = formatDecimalParts(x2, p); if (!d) return x2 + ""; var coefficient = d[0], exponent2 = d[1]; return exponent2 < 0 ? "0." + new Array(-exponent2).join("0") + coefficient : coefficient.length > exponent2 + 1 ? coefficient.slice(0, exponent2 + 1) + "." + coefficient.slice(exponent2 + 1) : coefficient + new Array(exponent2 - coefficient.length + 2).join("0"); } const formatTypes = { "%": (x2, p) => (x2 * 100).toFixed(p), "b": (x2) => Math.round(x2).toString(2), "c": (x2) => x2 + "", "d": formatDecimal, "e": (x2, p) => x2.toExponential(p), "f": (x2, p) => x2.toFixed(p), "g": (x2, p) => x2.toPrecision(p), "o": (x2) => Math.round(x2).toString(8), "p": (x2, p) => formatRounded(x2 * 100, p), "r": formatRounded, "s": formatPrefixAuto, "X": (x2) => Math.round(x2).toString(16).toUpperCase(), "x": (x2) => Math.round(x2).toString(16) }; function identity$3(x2) { return x2; } var map$2 = Array.prototype.map, prefixes = ["y", "z", "a", "f", "p", "n", "\xB5", "m", "", "k", "M", "G", "T", "P", "E", "Z", "Y"]; function formatLocale$1(locale2) { var group = locale2.grouping === void 0 || locale2.thousands === void 0 ? identity$3 : formatGroup(map$2.call(locale2.grouping, Number), locale2.thousands + ""), currencyPrefix = locale2.currency === void 0 ? "" : locale2.currency[0] + "", currencySuffix = locale2.currency === void 0 ? "" : locale2.currency[1] + "", decimal = locale2.decimal === void 0 ? "." : locale2.decimal + "", numerals = locale2.numerals === void 0 ? identity$3 : formatNumerals(map$2.call(locale2.numerals, String)), percent = locale2.percent === void 0 ? "%" : locale2.percent + "", minus = locale2.minus === void 0 ? "\u2212" : locale2.minus + "", nan = locale2.nan === void 0 ? "NaN" : locale2.nan + ""; function newFormat(specifier) { specifier = formatSpecifier(specifier); var fill = specifier.fill, align = specifier.align, sign2 = specifier.sign, symbol = specifier.symbol, zero2 = specifier.zero, width2 = specifier.width, comma = specifier.comma, precision = specifier.precision, trim2 = specifier.trim, type2 = specifier.type; if (type2 === "n") comma = true, type2 = "g"; else if (!formatTypes[type2]) precision === void 0 && (precision = 12), trim2 = true, type2 = "g"; if (zero2 || fill === "0" && align === "=") zero2 = true, fill = "0", align = "="; var prefix = symbol === "$" ? currencyPrefix : symbol === "#" && /[boxX]/.test(type2) ? "0" + type2.toLowerCase() : "", suffix = symbol === "$" ? currencySuffix : /[%p]/.test(type2) ? percent : ""; var formatType = formatTypes[type2], maybeSuffix = /[defgprs%]/.test(type2); precision = precision === void 0 ? 6 : /[gprs]/.test(type2) ? Math.max(1, Math.min(21, precision)) : Math.max(0, Math.min(20, precision)); function format2(value) { var valuePrefix = prefix, valueSuffix = suffix, i, n, c2; if (type2 === "c") { valueSuffix = formatType(value) + valueSuffix; value = ""; } else { value = +value; var valueNegative = value < 0 || 1 / value < 0; value = isNaN(value) ? nan : formatType(Math.abs(value), precision); if (trim2) value = formatTrim(value); if (valueNegative && +value === 0 && sign2 !== "+") valueNegative = false; valuePrefix = (valueNegative ? sign2 === "(" ? sign2 : minus : sign2 === "-" || sign2 === "(" ? "" : sign2) + valuePrefix; valueSuffix = (type2 === "s" ? prefixes[8 + prefixExponent / 3] : "") + valueSuffix + (valueNegative && sign2 === "(" ? ")" : ""); if (maybeSuffix) { i = -1, n = value.length; while (++i < n) { if (c2 = value.charCodeAt(i), 48 > c2 || c2 > 57) { valueSuffix = (c2 === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix; value = value.slice(0, i); break; } } } } if (comma && !zero2) value = group(value, Infinity); var length2 = valuePrefix.length + value.length + valueSuffix.length, padding2 = length2 < width2 ? new Array(width2 - length2 + 1).join(fill) : ""; if (comma && zero2) value = group(padding2 + value, padding2.length ? width2 - valueSuffix.length : Infinity), padding2 = ""; switch (align) { case "<": value = valuePrefix + value + valueSuffix + padding2; break; case "=": value = valuePrefix + padding2 + value + valueSuffix; break; case "^": value = padding2.slice(0, length2 = padding2.length >> 1) + valuePrefix + value + valueSuffix + padding2.slice(length2); break; default: value = padding2 + valuePrefix + value + valueSuffix; break; } return numerals(value); } format2.toString = function() { return specifier + ""; }; return format2; } function formatPrefix2(specifier, value) { var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = "f", specifier)), e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3, k = Math.pow(10, -e), prefix = prefixes[8 + e / 3]; return function(value2) { return f(k * value2) + prefix; }; } return { format: newFormat, formatPrefix: formatPrefix2 }; } var locale$1; var format; var formatPrefix; defaultLocale$1({ thousands: ",", grouping: [3], currency: ["$", ""] }); function defaultLocale$1(definition) { locale$1 = formatLocale$1(definition); format = locale$1.format; formatPrefix = locale$1.formatPrefix; return locale$1; } function precisionFixed(step) { return Math.max(0, -exponent(Math.abs(step))); } function precisionPrefix(step, value) { return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step))); } function precisionRound(step, max2) { step = Math.abs(step), max2 = Math.abs(max2) - step; return Math.max(0, exponent(max2) - exponent(step)) + 1; } function initRange(domain, range2) { switch (arguments.length) { case 0: break; case 1: this.range(domain); break; default: this.range(range2).domain(domain); break; } return this; } const implicit = Symbol("implicit"); function ordinal() { var index = new InternMap(), domain = [], range2 = [], unknown = implicit; function scale(d) { let i = index.get(d); if (i === void 0) { if (unknown !== implicit) return unknown; index.set(d, i = domain.push(d) - 1); } return range2[i % range2.length]; } scale.domain = function(_2) { if (!arguments.length) return domain.slice(); domain = [], index = new InternMap(); for (const value of _2) { if (index.has(value)) continue; index.set(value, domain.push(value) - 1); } return scale; }; scale.range = function(_2) { return arguments.length ? (range2 = Array.from(_2), scale) : range2.slice(); }; scale.unknown = function(_2) { return arguments.length ? (unknown = _2, scale) : unknown; }; scale.copy = function() { return ordinal(domain, range2).unknown(unknown); }; initRange.apply(scale, arguments); return scale; } function constants(x2) { return function() { return x2; }; } function number$1(x2) { return +x2; } var unit$1 = [0, 1]; function identity$2(x2) { return x2; } function normalize(a, b) { return (b -= a = +a) ? function(x2) { return (x2 - a) / b; } : constants(isNaN(b) ? NaN : 0.5); } function clamper(a, b) { var t; if (a > b) t = a, a = b, b = t; return function(x2) { return Math.max(a, Math.min(b, x2)); }; } function bimap(domain, range2, interpolate2) { var d0 = domain[0], d1 = domain[1], r0 = range2[0], r1 = range2[1]; if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate2(r1, r0); else d0 = normalize(d0, d1), r0 = interpolate2(r0, r1); return function(x2) { return r0(d0(x2)); }; } function polymap(domain, range2, interpolate2) { var j = Math.min(domain.length, range2.length) - 1, d = new Array(j), r = new Array(j), i = -1; if (domain[j] < domain[0]) { domain = domain.slice().reverse(); range2 = range2.slice().reverse(); } while (++i < j) { d[i] = normalize(domain[i], domain[i + 1]); r[i] = interpolate2(range2[i], range2[i + 1]); } return function(x2) { var i2 = bisect(domain, x2, 1, j) - 1; return r[i2](d[i2](x2)); }; } function copy$1(source, target) { return target.domain(source.domain()).range(source.range()).interpolate(source.interpolate()).clamp(source.clamp()).unknown(source.unknown()); } function transformer() { var domain = unit$1, range2 = unit$1, interpolate2 = interpolate$1, transform, untransform, unknown, clamp = identity$2, piecewise, output, input; function rescale() { var n = Math.min(domain.length, range2.length); if (clamp !== identity$2) clamp = clamper(domain[0], domain[n - 1]); piecewise = n > 2 ? polymap : bimap; output = input = null; return scale; } function scale(x2) { return x2 == null || isNaN(x2 = +x2) ? unknown : (output || (output = piecewise(domain.map(transform), range2, interpolate2)))(transform(clamp(x2))); } scale.invert = function(y2) { return clamp(untransform((input || (input = piecewise(range2, domain.map(transform), interpolateNumber)))(y2))); }; scale.domain = function(_2) { return arguments.length ? (domain = Array.from(_2, number$1), rescale()) : domain.slice(); }; scale.range = function(_2) { return arguments.length ? (range2 = Array.from(_2), rescale()) : range2.slice(); }; scale.rangeRound = function(_2) { return range2 = Array.from(_2), interpolate2 = interpolateRound, rescale(); }; scale.clamp = function(_2) { return arguments.length ? (clamp = _2 ? true : identity$2, rescale()) : clamp !== identity$2; }; scale.interpolate = function(_2) { return arguments.length ? (interpolate2 = _2, rescale()) : interpolate2; }; scale.unknown = function(_2) { return arguments.length ? (unknown = _2, scale) : unknown; }; return function(t, u) { transform = t, untransform = u; return rescale(); }; } function continuous() { return transformer()(identity$2, identity$2); } function tickFormat(start2, stop, count, specifier) { var step = tickStep(start2, stop, count), precision; specifier = formatSpecifier(specifier == null ? ",f" : specifier); switch (specifier.type) { case "s": { var value = Math.max(Math.abs(start2), Math.abs(stop)); if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision; return formatPrefix(specifier, value); } case "": case "e": case "g": case "p": case "r": { if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start2), Math.abs(stop))))) specifier.precision = precision - (specifier.type === "e"); break; } case "f": case "%": { if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === "%") * 2; break; } } return format(specifier); } function linearish(scale) { var domain = scale.domain; scale.ticks = function(count) { var d = domain(); return ticks(d[0], d[d.length - 1], count == null ? 10 : count); }; scale.tickFormat = function(count, specifier) { var d = domain(); return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier); }; scale.nice = function(count) { if (count == null) count = 10; var d = domain(); var i0 = 0; var i1 = d.length - 1; var start2 = d[i0]; var stop = d[i1]; var prestep; var step; var maxIter = 10; if (stop < start2) { step = start2, start2 = stop, stop = step; step = i0, i0 = i1, i1 = step; } while (maxIter-- > 0) { step = tickIncrement(start2, stop, count); if (step === prestep) { d[i0] = start2; d[i1] = stop; return domain(d); } else if (step > 0) { start2 = Math.floor(start2 / step) * step; stop = Math.ceil(stop / step) * step; } else if (step < 0) { start2 = Math.ceil(start2 * step) / step; stop = Math.floor(stop * step) / step; } else { break; } prestep = step; } return scale; }; return scale; } function linear() { var scale = continuous(); scale.copy = function() { return copy$1(scale, linear()); }; initRange.apply(scale, arguments); return linearish(scale); } function nice(domain, interval2) { domain = domain.slice(); var i0 = 0, i1 = domain.length - 1, x0 = domain[i0], x1 = domain[i1], t; if (x1 < x0) { t = i0, i0 = i1, i1 = t; t = x0, x0 = x1, x1 = t; } domain[i0] = interval2.floor(x0); domain[i1] = interval2.ceil(x1); return domain; } var t0 = new Date(), t1 = new Date(); function newInterval(floori, offseti, count, field) { function interval2(date2) { return floori(date2 = arguments.length === 0 ? new Date() : new Date(+date2)), date2; } interval2.floor = function(date2) { return floori(date2 = new Date(+date2)), date2; }; interval2.ceil = function(date2) { return floori(date2 = new Date(date2 - 1)), offseti(date2, 1), floori(date2), date2; }; interval2.round = function(date2) { var d0 = interval2(date2), d1 = interval2.ceil(date2); return date2 - d0 < d1 - date2 ? d0 : d1; }; interval2.offset = function(date2, step) { return offseti(date2 = new Date(+date2), step == null ? 1 : Math.floor(step)), date2; }; interval2.range = function(start2, stop, step) { var range2 = [], previous; start2 = interval2.ceil(start2); step = step == null ? 1 : Math.floor(step); if (!(start2 < stop) || !(step > 0)) return range2; do range2.push(previous = new Date(+start2)), offseti(start2, step), floori(start2); while (previous < start2 && start2 < stop); return range2; }; interval2.filter = function(test) { return newInterval(function(date2) { if (date2 >= date2) while (floori(date2), !test(date2)) date2.setTime(date2 - 1); }, function(date2, step) { if (date2 >= date2) { if (step < 0) while (++step <= 0) { while (offseti(date2, -1), !test(date2)) { } } else while (--step >= 0) { while (offseti(date2, 1), !test(date2)) { } } } }); }; if (count) { interval2.count = function(start2, end2) { t0.setTime(+start2), t1.setTime(+end2); floori(t0), floori(t1); return Math.floor(count(t0, t1)); }; interval2.every = function(step) { step = Math.floor(step); return !isFinite(step) || !(step > 0) ? null : !(step > 1) ? interval2 : interval2.filter(field ? function(d) { return field(d) % step === 0; } : function(d) { return interval2.count(0, d) % step === 0; }); }; } return interval2; } var millisecond = newInterval(function() { }, function(date2, step) { date2.setTime(+date2 + step); }, function(start2, end2) { return end2 - start2; }); millisecond.every = function(k) { k = Math.floor(k); if (!isFinite(k) || !(k > 0)) return null; if (!(k > 1)) return millisecond; return newInterval(function(date2) { date2.setTime(Math.floor(date2 / k) * k); }, function(date2, step) { date2.setTime(+date2 + step * k); }, function(start2, end2) { return (end2 - start2) / k; }); }; const millisecond$1 = millisecond; millisecond.range; const durationSecond = 1e3; const durationMinute = durationSecond * 60; const durationHour = durationMinute * 60; const durationDay = durationHour * 24; const durationWeek = durationDay * 7; const durationMonth = durationDay * 30; const durationYear = durationDay * 365; var second = newInterval(function(date2) { date2.setTime(date2 - date2.getMilliseconds()); }, function(date2, step) { date2.setTime(+date2 + step * durationSecond); }, function(start2, end2) { return (end2 - start2) / durationSecond; }, function(date2) { return date2.getUTCSeconds(); }); const utcSecond = second; second.range; var minute = newInterval(function(date2) { date2.setTime(date2 - date2.getMilliseconds() - date2.getSeconds() * durationSecond); }, function(date2, step) { date2.setTime(+date2 + step * durationMinute); }, function(start2, end2) { return (end2 - start2) / durationMinute; }, function(date2) { return date2.getMinutes(); }); const timeMinute = minute; minute.range; var hour = newInterval(function(date2) { date2.setTime(date2 - date2.getMilliseconds() - date2.getSeconds() * durationSecond - date2.getMinutes() * durationMinute); }, function(date2, step) { date2.setTime(+date2 + step * durationHour); }, function(start2, end2) { return (end2 - start2) / durationHour; }, function(date2) { return date2.getHours(); }); const timeHour = hour; hour.range; var day = newInterval( (date2) => date2.setHours(0, 0, 0, 0), (date2, step) => date2.setDate(date2.getDate() + step), (start2, end2) => (end2 - start2 - (end2.getTimezoneOffset() - start2.getTimezoneOffset()) * durationMinute) / durationDay, (date2) => date2.getDate() - 1 ); const timeDay = day; day.range; function weekday(i) { return newInterval(function(date2) { date2.setDate(date2.getDate() - (date2.getDay() + 7 - i) % 7); date2.setHours(0, 0, 0, 0); }, function(date2, step) { date2.setDate(date2.getDate() + step * 7); }, function(start2, end2) { return (end2 - start2 - (end2.getTimezoneOffset() - start2.getTimezoneOffset()) * durationMinute) / durationWeek; }); } var sunday = weekday(0); var monday = weekday(1); var tuesday = weekday(2); var wednesday = weekday(3); var thursday = weekday(4); var friday = weekday(5); var saturday = weekday(6); sunday.range; monday.range; tuesday.range; wednesday.range; thursday.range; friday.range; saturday.range; var month = newInterval(function(date2) { date2.setDate(1); date2.setHours(0, 0, 0, 0); }, function(date2, step) { date2.setMonth(date2.getMonth() + step); }, function(start2, end2) { return end2.getMonth() - start2.getMonth() + (end2.getFullYear() - start2.getFullYear()) * 12; }, function(date2) { return date2.getMonth(); }); const timeMonth = month; month.range; var year = newInterval(function(date2) { date2.setMonth(0, 1); date2.setHours(0, 0, 0, 0); }, function(date2, step) { date2.setFullYear(date2.getFullYear() + step); }, function(start2, end2) { return end2.getFullYear() - start2.getFullYear(); }, function(date2) { return date2.getFullYear(); }); year.every = function(k) { return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : newInterval(function(date2) { date2.setFullYear(Math.floor(date2.getFullYear() / k) * k); date2.setMonth(0, 1); date2.setHours(0, 0, 0, 0); }, function(date2, step) { date2.setFullYear(date2.getFullYear() + step * k); }); }; const timeYear = year; year.range; var utcMinute = newInterval(function(date2) { date2.setUTCSeconds(0, 0); }, function(date2, step) { date2.setTime(+date2 + step * durationMinute); }, function(start2, end2) { return (end2 - start2) / durationMinute; }, function(date2) { return date2.getUTCMinutes(); }); const utcMinute$1 = utcMinute; utcMinute.range; var utcHour = newInterval(function(date2) { date2.setUTCMinutes(0, 0, 0); }, function(date2, step) { date2.setTime(+date2 + step * durationHour); }, function(start2, end2) { return (end2 - start2) / durationHour; }, function(date2) { return date2.getUTCHours(); }); const utcHour$1 = utcHour; utcHour.range; var utcDay = newInterval(function(date2) { date2.setUTCHours(0, 0, 0, 0); }, function(date2, step) { date2.setUTCDate(date2.getUTCDate() + step); }, function(start2, end2) { return (end2 - start2) / durationDay; }, function(date2) { return date2.getUTCDate() - 1; }); const utcDay$1 = utcDay; utcDay.range; function utcWeekday(i) { return newInterval(function(date2) { date2.setUTCDate(date2.getUTCDate() - (date2.getUTCDay() + 7 - i) % 7); date2.setUTCHours(0, 0, 0, 0); }, function(date2, step) { date2.setUTCDate(date2.getUTCDate() + step * 7); }, function(start2, end2) { return (end2 - start2) / durationWeek; }); } var utcSunday = utcWeekday(0); var utcMonday = utcWeekday(1); var utcTuesday = utcWeekday(2); var utcWednesday = utcWeekday(3); var utcThursday = utcWeekday(4); var utcFriday = utcWeekday(5); var utcSaturday = utcWeekday(6); utcSunday.range; utcMonday.range; utcTuesday.range; utcWednesday.range; utcThursday.range; utcFriday.range; utcSaturday.range; var utcMonth = newInterval(function(date2) { date2.setUTCDate(1); date2.setUTCHours(0, 0, 0, 0); }, function(date2, step) { date2.setUTCMonth(date2.getUTCMonth() + step); }, function(start2, end2) { return end2.getUTCMonth() - start2.getUTCMonth() + (end2.getUTCFullYear() - start2.getUTCFullYear()) * 12; }, function(date2) { return date2.getUTCMonth(); }); const utcMonth$1 = utcMonth; utcMonth.range; var utcYear = newInterval(function(date2) { date2.setUTCMonth(0, 1); date2.setUTCHours(0, 0, 0, 0); }, function(date2, step) { date2.setUTCFullYear(date2.getUTCFullYear() + step); }, function(start2, end2) { return end2.getUTCFullYear() - start2.getUTCFullYear(); }, function(date2) { return date2.getUTCFullYear(); }); utcYear.every = function(k) { return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : newInterval(function(date2) { date2.setUTCFullYear(Math.floor(date2.getUTCFullYear() / k) * k); date2.setUTCMonth(0, 1); date2.setUTCHours(0, 0, 0, 0); }, function(date2, step) { date2.setUTCFullYear(date2.getUTCFullYear() + step * k); }); }; const utcYear$1 = utcYear; utcYear.range; function ticker(year2, month2, week, day2, hour2, minute2) { const tickIntervals = [ [utcSecond, 1, durationSecond], [utcSecond, 5, 5 * durationSecond], [utcSecond, 15, 15 * durationSecond], [utcSecond, 30, 30 * durationSecond], [minute2, 1, durationMinute], [minute2, 5, 5 * durationMinute], [minute2, 15, 15 * durationMinute], [minute2, 30, 30 * durationMinute], [hour2, 1, durationHour], [hour2, 3, 3 * durationHour], [hour2, 6, 6 * durationHour], [hour2, 12, 12 * durationHour], [day2, 1, durationDay], [day2, 2, 2 * durationDay], [week, 1, durationWeek], [month2, 1, durationMonth], [month2, 3, 3 * durationMonth], [year2, 1, durationYear] ]; function ticks2(start2, stop, count) { const reverse = stop < start2; if (reverse) [start2, stop] = [stop, start2]; const interval2 = count && typeof count.range === "function" ? count : tickInterval2(start2, stop, count); const ticks3 = interval2 ? interval2.range(start2, +stop + 1) : []; return reverse ? ticks3.reverse() : ticks3; } function tickInterval2(start2, stop, count) { const target = Math.abs(stop - start2) / count; const i = bisector(([, , step2]) => step2).right(tickIntervals, target); if (i === tickIntervals.length) return year2.every(tickStep(start2 / durationYear, stop / durationYear, count)); if (i === 0) return millisecond$1.every(Math.max(tickStep(start2, stop, count), 1)); const [t, step] = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i]; return t.every(step); } return [ticks2, tickInterval2]; } ticker(utcYear$1, utcMonth$1, utcSunday, utcDay$1, utcHour$1, utcMinute$1); const [timeTicks, timeTickInterval] = ticker(timeYear, timeMonth, sunday, timeDay, timeHour, timeMinute); function localDate(d) { if (0 <= d.y && d.y < 100) { var date2 = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L); date2.setFullYear(d.y); return date2; } return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L); } function utcDate(d) { if (0 <= d.y && d.y < 100) { var date2 = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L)); date2.setUTCFullYear(d.y); return date2; } return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L)); } function newDate(y2, m, d) { return { y: y2, m, d, H: 0, M: 0, S: 0, L: 0 }; } function formatLocale(locale2) { var locale_dateTime = locale2.dateTime, locale_date = locale2.date, locale_time = locale2.time, locale_periods = locale2.periods, locale_weekdays = locale2.days, locale_shortWeekdays = locale2.shortDays, locale_months = locale2.months, locale_shortMonths = locale2.shortMonths; var periodRe = formatRe(locale_periods), periodLookup = formatLookup(locale_periods), weekdayRe = formatRe(locale_weekdays), weekdayLookup = formatLookup(locale_weekdays), shortWeekdayRe = formatRe(locale_shortWeekdays), shortWeekdayLookup = formatLookup(locale_shortWeekdays), monthRe = formatRe(locale_months), monthLookup = formatLookup(locale_months), shortMonthRe = formatRe(locale_shortMonths), shortMonthLookup = formatLookup(locale_shortMonths); var formats = { "a": formatShortWeekday, "A": formatWeekday, "b": formatShortMonth, "B": formatMonth, "c": null, "d": formatDayOfMonth, "e": formatDayOfMonth, "f": formatMicroseconds, "g": formatYearISO, "G": formatFullYearISO, "H": formatHour24, "I": formatHour12, "j": formatDayOfYear, "L": formatMilliseconds, "m": formatMonthNumber, "M": formatMinutes, "p": formatPeriod, "q": formatQuarter, "Q": formatUnixTimestamp, "s": formatUnixTimestampSeconds, "S": formatSeconds, "u": formatWeekdayNumberMonday, "U": formatWeekNumberSunday, "V": formatWeekNumberISO, "w": formatWeekdayNumberSunday, "W": formatWeekNumberMonday, "x": null, "X": null, "y": formatYear, "Y": formatFullYear, "Z": formatZone, "%": formatLiteralPercent }; var utcFormats = { "a": formatUTCShortWeekday, "A": formatUTCWeekday, "b": formatUTCShortMonth, "B": formatUTCMonth, "c": null, "d": formatUTCDayOfMonth, "e": formatUTCDayOfMonth, "f": formatUTCMicroseconds, "g": formatUTCYearISO, "G": formatUTCFullYearISO, "H": formatUTCHour24, "I": formatUTCHour12, "j": formatUTCDayOfYear, "L": formatUTCMilliseconds, "m": formatUTCMonthNumber, "M": formatUTCMinutes, "p": formatUTCPeriod, "q": formatUTCQuarter, "Q": formatUnixTimestamp, "s": formatUnixTimestampSeconds, "S": formatUTCSeconds, "u": formatUTCWeekdayNumberMonday, "U": formatUTCWeekNumberSunday, "V": formatUTCWeekNumberISO, "w": formatUTCWeekdayNumberSunday, "W": formatUTCWeekNumberMonday, "x": null, "X": null, "y": formatUTCYear, "Y": formatUTCFullYear, "Z": formatUTCZone, "%": formatLiteralPercent }; var parses = { "a": parseShortWeekday, "A": parseWeekday, "b": parseShortMonth, "B": parseMonth, "c": parseLocaleDateTime, "d": parseDayOfMonth, "e": parseDayOfMonth, "f": parseMicroseconds, "g": parseYear, "G": parseFullYear, "H": parseHour24, "I": parseHour24, "j": parseDayOfYear, "L": parseMilliseconds, "m": parseMonthNumber, "M": parseMinutes, "p": parsePeriod, "q": parseQuarter, "Q": parseUnixTimestamp, "s": parseUnixTimestampSeconds, "S": parseSeconds, "u": parseWeekdayNumberMonday, "U": parseWeekNumberSunday, "V": parseWeekNumberISO, "w": parseWeekdayNumberSunday, "W": parseWeekNumberMonday, "x": parseLocaleDate, "X": parseLocaleTime, "y": parseYear, "Y": parseFullYear, "Z": parseZone, "%": parseLiteralPercent }; formats.x = newFormat(locale_date, formats); formats.X = newFormat(locale_time, formats); formats.c = newFormat(locale_dateTime, formats); utcFormats.x = newFormat(locale_date, utcFormats); utcFormats.X = newFormat(locale_time, utcFormats); utcFormats.c = newFormat(locale_dateTime, utcFormats); function newFormat(specifier, formats2) { return function(date2) { var string = [], i = -1, j = 0, n = specifier.length, c2, pad2, format2; if (!(date2 instanceof Date)) date2 = new Date(+date2); while (++i < n) { if (specifier.charCodeAt(i) === 37) { string.push(specifier.slice(j, i)); if ((pad2 = pads[c2 = specifier.charAt(++i)]) != null) c2 = specifier.charAt(++i); else pad2 = c2 === "e" ? " " : "0"; if (format2 = formats2[c2]) c2 = format2(date2, pad2); string.push(c2); j = i + 1; } } string.push(specifier.slice(j, i)); return string.join(""); }; } function newParse(specifier, Z) { return function(string) { var d = newDate(1900, void 0, 1), i = parseSpecifier(d, specifier, string += "", 0), week, day2; if (i != string.length) return null; if ("Q" in d) return new Date(d.Q); if ("s" in d) return new Date(d.s * 1e3 + ("L" in d ? d.L : 0)); if (Z && !("Z" in d)) d.Z = 0; if ("p" in d) d.H = d.H % 12 + d.p * 12; if (d.m === void 0) d.m = "q" in d ? d.q : 0; if ("V" in d) { if (d.V < 1 || d.V > 53) return null; if (!("w" in d)) d.w = 1; if ("Z" in d) { week = utcDate(newDate(d.y, 0, 1)), day2 = week.getUTCDay(); week = day2 > 4 || day2 === 0 ? utcMonday.ceil(week) : utcMonday(week); week = utcDay$1.offset(week, (d.V - 1) * 7); d.y = week.getUTCFullYear(); d.m = week.getUTCMonth(); d.d = week.getUTCDate() + (d.w + 6) % 7; } else { week = localDate(newDate(d.y, 0, 1)), day2 = week.getDay(); week = day2 > 4 || day2 === 0 ? monday.ceil(week) : monday(week); week = timeDay.offset(week, (d.V - 1) * 7); d.y = week.getFullYear(); d.m = week.getMonth(); d.d = week.getDate() + (d.w + 6) % 7; } } else if ("W" in d || "U" in d) { if (!("w" in d)) d.w = "u" in d ? d.u % 7 : "W" in d ? 1 : 0; day2 = "Z" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay(); d.m = 0; d.d = "W" in d ? (d.w + 6) % 7 + d.W * 7 - (day2 + 5) % 7 : d.w + d.U * 7 - (day2 + 6) % 7; } if ("Z" in d) { d.H += d.Z / 100 | 0; d.M += d.Z % 100; return utcDate(d); } return localDate(d); }; } function parseSpecifier(d, specifier, string, j) { var i = 0, n = specifier.length, m = string.length, c2, parse2; while (i < n) { if (j >= m) return -1; c2 = specifier.charCodeAt(i++); if (c2 === 37) { c2 = specifier.charAt(i++); parse2 = parses[c2 in pads ? specifier.charAt(i++) : c2]; if (!parse2 || (j = parse2(d, string, j)) < 0) return -1; } else if (c2 != string.charCodeAt(j++)) { return -1; } } return j; } function parsePeriod(d, string, i) { var n = periodRe.exec(string.slice(i)); return n ? (d.p = periodLookup.get(n[0].toLowerCase()), i + n[0].length) : -1; } function parseShortWeekday(d, string, i) { var n = shortWeekdayRe.exec(string.slice(i)); return n ? (d.w = shortWeekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1; } function parseWeekday(d, string, i) { var n = weekdayRe.exec(string.slice(i)); return n ? (d.w = weekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1; } function parseShortMonth(d, string, i) { var n = shortMonthRe.exec(string.slice(i)); return n ? (d.m = shortMonthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1; } function parseMonth(d, string, i) { var n = monthRe.exec(string.slice(i)); return n ? (d.m = monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1; } function parseLocaleDateTime(d, string, i) { return parseSpecifier(d, locale_dateTime, string, i); } function parseLocaleDate(d, string, i) { return parseSpecifier(d, locale_date, string, i); } function parseLocaleTime(d, string, i) { return parseSpecifier(d, locale_time, string, i); } function formatShortWeekday(d) { return locale_shortWeekdays[d.getDay()]; } function formatWeekday(d) { return locale_weekdays[d.getDay()]; } function formatShortMonth(d) { return locale_shortMonths[d.getMonth()]; } function formatMonth(d) { return locale_months[d.getMonth()]; } function formatPeriod(d) { return locale_periods[+(d.getHours() >= 12)]; } function formatQuarter(d) { return 1 + ~~(d.getMonth() / 3); } function formatUTCShortWeekday(d) { return locale_shortWeekdays[d.getUTCDay()]; } function formatUTCWeekday(d) { return locale_weekdays[d.getUTCDay()]; } function formatUTCShortMonth(d) { return locale_shortMonths[d.getUTCMonth()]; } function formatUTCMonth(d) { return locale_months[d.getUTCMonth()]; } function formatUTCPeriod(d) { return locale_periods[+(d.getUTCHours() >= 12)]; } function formatUTCQuarter(d) { return 1 + ~~(d.getUTCMonth() / 3); } return { format: function(specifier) { var f = newFormat(specifier += "", formats); f.toString = function() { return specifier; }; return f; }, parse: function(specifier) { var p = newParse(specifier += "", false); p.toString = function() { return specifier; }; return p; }, utcFormat: function(specifier) { var f = newFormat(specifier += "", utcFormats); f.toString = function() { return specifier; }; return f; }, utcParse: function(specifier) { var p = newParse(specifier += "", true); p.toString = function() { return specifier; }; return p; } }; } var pads = { "-": "", "_": " ", "0": "0" }, numberRe = /^\s*\d+/, percentRe = /^%/, requoteRe = /[\\^$*+?|[\]().{}]/g; function pad(value, fill, width2) { var sign2 = value < 0 ? "-" : "", string = (sign2 ? -value : value) + "", length2 = string.length; return sign2 + (length2 < width2 ? new Array(width2 - length2 + 1).join(fill) + string : string); } function requote(s) { return s.replace(requoteRe, "\\$&"); } function formatRe(names) { return new RegExp("^(?:" + names.map(requote).join("|") + ")", "i"); } function formatLookup(names) { return new Map(names.map((name2, i) => [name2.toLowerCase(), i])); } function parseWeekdayNumberSunday(d, string, i) { var n = numberRe.exec(string.slice(i, i + 1)); return n ? (d.w = +n[0], i + n[0].length) : -1; } function parseWeekdayNumberMonday(d, string, i) { var n = numberRe.exec(string.slice(i, i + 1)); return n ? (d.u = +n[0], i + n[0].length) : -1; } function parseWeekNumberSunday(d, string, i) { var n = numberRe.exec(string.slice(i, i + 2)); return n ? (d.U = +n[0], i + n[0].length) : -1; } function parseWeekNumberISO(d, string, i) { var n = numberRe.exec(string.slice(i, i + 2)); return n ? (d.V = +n[0], i + n[0].length) : -1; } function parseWeekNumberMonday(d, string, i) { var n = numberRe.exec(string.slice(i, i + 2)); return n ? (d.W = +n[0], i + n[0].length) : -1; } function parseFullYear(d, string, i) { var n = numberRe.exec(string.slice(i, i + 4)); return n ? (d.y = +n[0], i + n[0].length) : -1; } function parseYear(d, string, i) { var n = numberRe.exec(string.slice(i, i + 2)); return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2e3), i + n[0].length) : -1; } function parseZone(d, string, i) { var n = /^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(string.slice(i, i + 6)); return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || "00")), i + n[0].length) : -1; } function parseQuarter(d, string, i) { var n = numberRe.exec(string.slice(i, i + 1)); return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1; } function parseMonthNumber(d, string, i) { var n = numberRe.exec(string.slice(i, i + 2)); return n ? (d.m = n[0] - 1, i + n[0].length) : -1; } function parseDayOfMonth(d, string, i) { var n = numberRe.exec(string.slice(i, i + 2)); return n ? (d.d = +n[0], i + n[0].length) : -1; } function parseDayOfYear(d, string, i) { var n = numberRe.exec(string.slice(i, i + 3)); return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1; } function parseHour24(d, string, i) { var n = numberRe.exec(string.slice(i, i + 2)); return n ? (d.H = +n[0], i + n[0].length) : -1; } function parseMinutes(d, string, i) { var n = numberRe.exec(string.slice(i, i + 2)); return n ? (d.M = +n[0], i + n[0].length) : -1; } function parseSeconds(d, string, i) { var n = numberRe.exec(string.slice(i, i + 2)); return n ? (d.S = +n[0], i + n[0].length) : -1; } function parseMilliseconds(d, string, i) { var n = numberRe.exec(string.slice(i, i + 3)); return n ? (d.L = +n[0], i + n[0].length) : -1; } function parseMicroseconds(d, string, i) { var n = numberRe.exec(string.slice(i, i + 6)); return n ? (d.L = Math.floor(n[0] / 1e3), i + n[0].length) : -1; } function parseLiteralPercent(d, string, i) { var n = percentRe.exec(string.slice(i, i + 1)); return n ? i + n[0].length : -1; } function parseUnixTimestamp(d, string, i) { var n = numberRe.exec(string.slice(i)); return n ? (d.Q = +n[0], i + n[0].length) : -1; } function parseUnixTimestampSeconds(d, string, i) { var n = numberRe.exec(string.slice(i)); return n ? (d.s = +n[0], i + n[0].length) : -1; } function formatDayOfMonth(d, p) { return pad(d.getDate(), p, 2); } function formatHour24(d, p) { return pad(d.getHours(), p, 2); } function formatHour12(d, p) { return pad(d.getHours() % 12 || 12, p, 2); } function formatDayOfYear(d, p) { return pad(1 + timeDay.count(timeYear(d), d), p, 3); } function formatMilliseconds(d, p) { return pad(d.getMilliseconds(), p, 3); } function formatMicroseconds(d, p) { return formatMilliseconds(d, p) + "000"; } function formatMonthNumber(d, p) { return pad(d.getMonth() + 1, p, 2); } function formatMinutes(d, p) { return pad(d.getMinutes(), p, 2); } function formatSeconds(d, p) { return pad(d.getSeconds(), p, 2); } function formatWeekdayNumberMonday(d) { var day2 = d.getDay(); return day2 === 0 ? 7 : day2; } function formatWeekNumberSunday(d, p) { return pad(sunday.count(timeYear(d) - 1, d), p, 2); } function dISO(d) { var day2 = d.getDay(); return day2 >= 4 || day2 === 0 ? thursday(d) : thursday.ceil(d); } function formatWeekNumberISO(d, p) { d = dISO(d); return pad(thursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2); } function formatWeekdayNumberSunday(d) { return d.getDay(); } function formatWeekNumberMonday(d, p) { return pad(monday.count(timeYear(d) - 1, d), p, 2); } function formatYear(d, p) { return pad(d.getFullYear() % 100, p, 2); } function formatYearISO(d, p) { d = dISO(d); return pad(d.getFullYear() % 100, p, 2); } function formatFullYear(d, p) { return pad(d.getFullYear() % 1e4, p, 4); } function formatFullYearISO(d, p) { var day2 = d.getDay(); d = day2 >= 4 || day2 === 0 ? thursday(d) : thursday.ceil(d); return pad(d.getFullYear() % 1e4, p, 4); } function formatZone(d) { var z = d.getTimezoneOffset(); return (z > 0 ? "-" : (z *= -1, "+")) + pad(z / 60 | 0, "0", 2) + pad(z % 60, "0", 2); } function formatUTCDayOfMonth(d, p) { return pad(d.getUTCDate(), p, 2); } function formatUTCHour24(d, p) { return pad(d.getUTCHours(), p, 2); } function formatUTCHour12(d, p) { return pad(d.getUTCHours() % 12 || 12, p, 2); } function formatUTCDayOfYear(d, p) { return pad(1 + utcDay$1.count(utcYear$1(d), d), p, 3); } function formatUTCMilliseconds(d, p) { return pad(d.getUTCMilliseconds(), p, 3); } function formatUTCMicroseconds(d, p) { return formatUTCMilliseconds(d, p) + "000"; } function formatUTCMonthNumber(d, p) { return pad(d.getUTCMonth() + 1, p, 2); } function formatUTCMinutes(d, p) { return pad(d.getUTCMinutes(), p, 2); } function formatUTCSeconds(d, p) { return pad(d.getUTCSeconds(), p, 2); } function formatUTCWeekdayNumberMonday(d) { var dow = d.getUTCDay(); return dow === 0 ? 7 : dow; } function formatUTCWeekNumberSunday(d, p) { return pad(utcSunday.count(utcYear$1(d) - 1, d), p, 2); } function UTCdISO(d) { var day2 = d.getUTCDay(); return day2 >= 4 || day2 === 0 ? utcThursday(d) : utcThursday.ceil(d); } function formatUTCWeekNumberISO(d, p) { d = UTCdISO(d); return pad(utcThursday.count(utcYear$1(d), d) + (utcYear$1(d).getUTCDay() === 4), p, 2); } function formatUTCWeekdayNumberSunday(d) { return d.getUTCDay(); } function formatUTCWeekNumberMonday(d, p) { return pad(utcMonday.count(utcYear$1(d) - 1, d), p, 2); } function formatUTCYear(d, p) { return pad(d.getUTCFullYear() % 100, p, 2); } function formatUTCYearISO(d, p) { d = UTCdISO(d); return pad(d.getUTCFullYear() % 100, p, 2); } function formatUTCFullYear(d, p) { return pad(d.getUTCFullYear() % 1e4, p, 4); } function formatUTCFullYearISO(d, p) { var day2 = d.getUTCDay(); d = day2 >= 4 || day2 === 0 ? utcThursday(d) : utcThursday.ceil(d); return pad(d.getUTCFullYear() % 1e4, p, 4); } function formatUTCZone() { return "+0000"; } function formatLiteralPercent() { return "%"; } function formatUnixTimestamp(d) { return +d; } function formatUnixTimestampSeconds(d) { return Math.floor(+d / 1e3); } var locale; var timeFormat; defaultLocale({ dateTime: "%x, %X", date: "%-m/%-d/%Y", time: "%-I:%M:%S %p", periods: ["AM", "PM"], days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], shortDays: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], shortMonths: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"] }); function defaultLocale(definition) { locale = formatLocale(definition); timeFormat = locale.format; locale.parse; locale.utcFormat; locale.utcParse; return locale; } function date(t) { return new Date(t); } function number(t) { return t instanceof Date ? +t : +new Date(+t); } function calendar(ticks2, tickInterval2, year2, month2, week, day2, hour2, minute2, second2, format2) { var scale = continuous(), invert2 = scale.invert, domain = scale.domain; var formatMillisecond = format2(".%L"), formatSecond = format2(":%S"), formatMinute = format2("%I:%M"), formatHour = format2("%I %p"), formatDay = format2("%a %d"), formatWeek = format2("%b %d"), formatMonth = format2("%B"), formatYear2 = format2("%Y"); function tickFormat2(date2) { return (second2(date2) < date2 ? formatMillisecond : minute2(date2) < date2 ? formatSecond : hour2(date2) < date2 ? formatMinute : day2(date2) < date2 ? formatHour : month2(date2) < date2 ? week(date2) < date2 ? formatDay : formatWeek : year2(date2) < date2 ? formatMonth : formatYear2)(date2); } scale.invert = function(y2) { return new Date(invert2(y2)); }; scale.domain = function(_2) { return arguments.length ? domain(Array.from(_2, number)) : domain().map(date); }; scale.ticks = function(interval2) { var d = domain(); return ticks2(d[0], d[d.length - 1], interval2 == null ? 10 : interval2); }; scale.tickFormat = function(count, specifier) { return specifier == null ? tickFormat2 : format2(specifier); }; scale.nice = function(interval2) { var d = domain(); if (!interval2 || typeof interval2.range !== "function") interval2 = tickInterval2(d[0], d[d.length - 1], interval2 == null ? 10 : interval2); return interval2 ? domain(nice(d, interval2)) : scale; }; scale.copy = function() { return copy$1(scale, calendar(ticks2, tickInterval2, year2, month2, week, day2, hour2, minute2, second2, format2)); }; return scale; } function time$1() { return initRange.apply(calendar(timeTicks, timeTickInterval, timeYear, timeMonth, sunday, timeDay, timeHour, timeMinute, utcSecond, timeFormat).domain([new Date(2e3, 0, 1), new Date(2e3, 0, 2)]), arguments); } function constant$1(x2) { return function constant2() { return x2; }; } const abs$1 = Math.abs; const atan2 = Math.atan2; const cos = Math.cos; const max$1 = Math.max; const min$1 = Math.min; const sin = Math.sin; const sqrt = Math.sqrt; const epsilon = 1e-12; const pi = Math.PI; const halfPi = pi / 2; const tau = 2 * pi; function acos(x2) { return x2 > 1 ? 0 : x2 < -1 ? pi : Math.acos(x2); } function asin(x2) { return x2 >= 1 ? halfPi : x2 <= -1 ? -halfPi : Math.asin(x2); } function arcInnerRadius(d) { return d.innerRadius; } function arcOuterRadius(d) { return d.outerRadius; } function arcStartAngle(d) { return d.startAngle; } function arcEndAngle(d) { return d.endAngle; } function arcPadAngle(d) { return d && d.padAngle; } function intersect$1(x0, y0, x1, y1, x2, y2, x3, y3) { var x10 = x1 - x0, y10 = y1 - y0, x32 = x3 - x2, y32 = y3 - y2, t = y32 * x10 - x32 * y10; if (t * t < epsilon) return; t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t; return [x0 + t * x10, y0 + t * y10]; } function cornerTangents(x0, y0, x1, y1, r1, rc, cw) { var x01 = x0 - x1, y01 = y0 - y1, lo = (cw ? rc : -rc) / sqrt(x01 * x01 + y01 * y01), ox = lo * y01, oy = -lo * x01, x11 = x0 + ox, y11 = y0 + oy, x10 = x1 + ox, y10 = y1 + oy, x00 = (x11 + x10) / 2, y00 = (y11 + y10) / 2, dx = x10 - x11, dy = y10 - y11, d2 = dx * dx + dy * dy, r = r1 - rc, D = x11 * y10 - x10 * y11, d = (dy < 0 ? -1 : 1) * sqrt(max$1(0, r * r * d2 - D * D)), cx0 = (D * dy - dx * d) / d2, cy0 = (-D * dx - dy * d) / d2, cx1 = (D * dy + dx * d) / d2, cy1 = (-D * dx + dy * d) / d2, dx0 = cx0 - x00, dy0 = cy0 - y00, dx1 = cx1 - x00, dy1 = cy1 - y00; if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1; return { cx: cx0, cy: cy0, x01: -ox, y01: -oy, x11: cx0 * (r1 / r - 1), y11: cy0 * (r1 / r - 1) }; } function d3arc() { var innerRadius = arcInnerRadius, outerRadius = arcOuterRadius, cornerRadius = constant$1(0), padRadius = null, startAngle = arcStartAngle, endAngle = arcEndAngle, padAngle = arcPadAngle, context = null; function arc() { var buffer, r, r0 = +innerRadius.apply(this, arguments), r1 = +outerRadius.apply(this, arguments), a0 = startAngle.apply(this, arguments) - halfPi, a1 = endAngle.apply(this, arguments) - halfPi, da = abs$1(a1 - a0), cw = a1 > a0; if (!context) context = buffer = path(); if (r1 < r0) r = r1, r1 = r0, r0 = r; if (!(r1 > epsilon)) context.moveTo(0, 0); else if (da > tau - epsilon) { context.moveTo(r1 * cos(a0), r1 * sin(a0)); context.arc(0, 0, r1, a0, a1, !cw); if (r0 > epsilon) { context.moveTo(r0 * cos(a1), r0 * sin(a1)); context.arc(0, 0, r0, a1, a0, cw); } } else { var a01 = a0, a11 = a1, a00 = a0, a10 = a1, da0 = da, da1 = da, ap = padAngle.apply(this, arguments) / 2, rp = ap > epsilon && (padRadius ? +padRadius.apply(this, arguments) : sqrt(r0 * r0 + r1 * r1)), rc = min$1(abs$1(r1 - r0) / 2, +cornerRadius.apply(this, arguments)), rc0 = rc, rc1 = rc, t02, t12; if (rp > epsilon) { var p0 = asin(rp / r0 * sin(ap)), p1 = asin(rp / r1 * sin(ap)); if ((da0 -= p0 * 2) > epsilon) p0 *= cw ? 1 : -1, a00 += p0, a10 -= p0; else da0 = 0, a00 = a10 = (a0 + a1) / 2; if ((da1 -= p1 * 2) > epsilon) p1 *= cw ? 1 : -1, a01 += p1, a11 -= p1; else da1 = 0, a01 = a11 = (a0 + a1) / 2; } var x01 = r1 * cos(a01), y01 = r1 * sin(a01), x10 = r0 * cos(a10), y10 = r0 * sin(a10); if (rc > epsilon) { var x11 = r1 * cos(a11), y11 = r1 * sin(a11), x00 = r0 * cos(a00), y00 = r0 * sin(a00), oc; if (da < pi && (oc = intersect$1(x01, y01, x00, y00, x11, y11, x10, y10))) { var ax = x01 - oc[0], ay = y01 - oc[1], bx = x11 - oc[0], by = y11 - oc[1], kc = 1 / sin(acos((ax * bx + ay * by) / (sqrt(ax * ax + ay * ay) * sqrt(bx * bx + by * by))) / 2), lc = sqrt(oc[0] * oc[0] + oc[1] * oc[1]); rc0 = min$1(rc, (r0 - lc) / (kc - 1)); rc1 = min$1(rc, (r1 - lc) / (kc + 1)); } } if (!(da1 > epsilon)) context.moveTo(x01, y01); else if (rc1 > epsilon) { t02 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw); t12 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw); context.moveTo(t02.cx + t02.x01, t02.cy + t02.y01); if (rc1 < rc) context.arc(t02.cx, t02.cy, rc1, atan2(t02.y01, t02.x01), atan2(t12.y01, t12.x01), !cw); else { context.arc(t02.cx, t02.cy, rc1, atan2(t02.y01, t02.x01), atan2(t02.y11, t02.x11), !cw); context.arc(0, 0, r1, atan2(t02.cy + t02.y11, t02.cx + t02.x11), atan2(t12.cy + t12.y11, t12.cx + t12.x11), !cw); context.arc(t12.cx, t12.cy, rc1, atan2(t12.y11, t12.x11), atan2(t12.y01, t12.x01), !cw); } } else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw); if (!(r0 > epsilon) || !(da0 > epsilon)) context.lineTo(x10, y10); else if (rc0 > epsilon) { t02 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw); t12 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw); context.lineTo(t02.cx + t02.x01, t02.cy + t02.y01); if (rc0 < rc) context.arc(t02.cx, t02.cy, rc0, atan2(t02.y01, t02.x01), atan2(t12.y01, t12.x01), !cw); else { context.arc(t02.cx, t02.cy, rc0, atan2(t02.y01, t02.x01), atan2(t02.y11, t02.x11), !cw); context.arc(0, 0, r0, atan2(t02.cy + t02.y11, t02.cx + t02.x11), atan2(t12.cy + t12.y11, t12.cx + t12.x11), cw); context.arc(t12.cx, t12.cy, rc0, atan2(t12.y11, t12.x11), atan2(t12.y01, t12.x01), !cw); } } else context.arc(0, 0, r0, a10, a00, cw); } context.closePath(); if (buffer) return context = null, buffer + "" || null; } arc.centroid = function() { var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2, a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - pi / 2; return [cos(a) * r, sin(a) * r]; }; arc.innerRadius = function(_2) { return arguments.length ? (innerRadius = typeof _2 === "function" ? _2 : constant$1(+_2), arc) : innerRadius; }; arc.outerRadius = function(_2) { return arguments.length ? (outerRadius = typeof _2 === "function" ? _2 : constant$1(+_2), arc) : outerRadius; }; arc.cornerRadius = function(_2) { return arguments.length ? (cornerRadius = typeof _2 === "function" ? _2 : constant$1(+_2), arc) : cornerRadius; }; arc.padRadius = function(_2) { return arguments.length ? (padRadius = _2 == null ? null : typeof _2 === "function" ? _2 : constant$1(+_2), arc) : padRadius; }; arc.startAngle = function(_2) { return arguments.length ? (startAngle = typeof _2 === "function" ? _2 : constant$1(+_2), arc) : startAngle; }; arc.endAngle = function(_2) { return arguments.length ? (endAngle = typeof _2 === "function" ? _2 : constant$1(+_2), arc) : endAngle; }; arc.padAngle = function(_2) { return arguments.length ? (padAngle = typeof _2 === "function" ? _2 : constant$1(+_2), arc) : padAngle; }; arc.context = function(_2) { return arguments.length ? (context = _2 == null ? null : _2, arc) : context; }; return arc; } function array(x2) { return typeof x2 === "object" && "length" in x2 ? x2 : Array.from(x2); } function Linear(context) { this._context = context; } Linear.prototype = { areaStart: function() { this._line = 0; }, areaEnd: function() { this._line = NaN; }, lineStart: function() { this._point = 0; }, lineEnd: function() { if (this._line || this._line !== 0 && this._point === 1) this._context.closePath(); this._line = 1 - this._line; }, point: function(x2, y2) { x2 = +x2, y2 = +y2; switch (this._point) { case 0: this._point = 1; this._line ? this._context.lineTo(x2, y2) : this._context.moveTo(x2, y2); break; case 1: this._point = 2; default: this._context.lineTo(x2, y2); break; } } }; function curveLinear(context) { return new Linear(context); } function x(p) { return p[0]; } function y(p) { return p[1]; } function line$1(x$1, y$1) { var defined = constant$1(true), context = null, curve = curveLinear, output = null; x$1 = typeof x$1 === "function" ? x$1 : x$1 === void 0 ? x : constant$1(x$1); y$1 = typeof y$1 === "function" ? y$1 : y$1 === void 0 ? y : constant$1(y$1); function line2(data) { var i, n = (data = array(data)).length, d, defined0 = false, buffer; if (context == null) output = curve(buffer = path()); for (i = 0; i <= n; ++i) { if (!(i < n && defined(d = data[i], i, data)) === defined0) { if (defined0 = !defined0) output.lineStart(); else output.lineEnd(); } if (defined0) output.point(+x$1(d, i, data), +y$1(d, i, data)); } if (buffer) return output = null, buffer + "" || null; } line2.x = function(_2) { return arguments.length ? (x$1 = typeof _2 === "function" ? _2 : constant$1(+_2), line2) : x$1; }; line2.y = function(_2) { return arguments.length ? (y$1 = typeof _2 === "function" ? _2 : constant$1(+_2), line2) : y$1; }; line2.defined = function(_2) { return arguments.length ? (defined = typeof _2 === "function" ? _2 : constant$1(!!_2), line2) : defined; }; line2.curve = function(_2) { return arguments.length ? (curve = _2, context != null && (output = curve(context)), line2) : curve; }; line2.context = function(_2) { return arguments.length ? (_2 == null ? context = output = null : output = curve(context = _2), line2) : context; }; return line2; } function descending(a, b) { return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN; } function identity$1(d) { return d; } function d3pie() { var value = identity$1, sortValues = descending, sort2 = null, startAngle = constant$1(0), endAngle = constant$1(tau), padAngle = constant$1(0); function pie(data) { var i, n = (data = array(data)).length, j, k, sum = 0, index = new Array(n), arcs = new Array(n), a0 = +startAngle.apply(this, arguments), da = Math.min(tau, Math.max(-tau, endAngle.apply(this, arguments) - a0)), a1, p = Math.min(Math.abs(da) / n, padAngle.apply(this, arguments)), pa = p * (da < 0 ? -1 : 1), v; for (i = 0; i < n; ++i) { if ((v = arcs[index[i] = i] = +value(data[i], i, data)) > 0) { sum += v; } } if (sortValues != null) index.sort(function(i2, j2) { return sortValues(arcs[i2], arcs[j2]); }); else if (sort2 != null) index.sort(function(i2, j2) { return sort2(data[i2], data[j2]); }); for (i = 0, k = sum ? (da - n * pa) / sum : 0; i < n; ++i, a0 = a1) { j = index[i], v = arcs[j], a1 = a0 + (v > 0 ? v * k : 0) + pa, arcs[j] = { data: data[j], index: i, value: v, startAngle: a0, endAngle: a1, padAngle: p }; } return arcs; } pie.value = function(_2) { return arguments.length ? (value = typeof _2 === "function" ? _2 : constant$1(+_2), pie) : value; }; pie.sortValues = function(_2) { return arguments.length ? (sortValues = _2, sort2 = null, pie) : sortValues; }; pie.sort = function(_2) { return arguments.length ? (sort2 = _2, sortValues = null, pie) : sort2; }; pie.startAngle = function(_2) { return arguments.length ? (startAngle = typeof _2 === "function" ? _2 : constant$1(+_2), pie) : startAngle; }; pie.endAngle = function(_2) { return arguments.length ? (endAngle = typeof _2 === "function" ? _2 : constant$1(+_2), pie) : endAngle; }; pie.padAngle = function(_2) { return arguments.length ? (padAngle = typeof _2 === "function" ? _2 : constant$1(+_2), pie) : padAngle; }; return pie; } function noop$1() { } function point$2(that, x2, y2) { that._context.bezierCurveTo( (2 * that._x0 + that._x1) / 3, (2 * that._y0 + that._y1) / 3, (that._x0 + 2 * that._x1) / 3, (that._y0 + 2 * that._y1) / 3, (that._x0 + 4 * that._x1 + x2) / 6, (that._y0 + 4 * that._y1 + y2) / 6 ); } function Basis(context) { this._context = context; } Basis.prototype = { areaStart: function() { this._line = 0; }, areaEnd: function() { this._line = NaN; }, lineStart: function() { this._x0 = this._x1 = this._y0 = this._y1 = NaN; this._point = 0; }, lineEnd: function() { switch (this._point) { case 3: point$2(this, this._x1, this._y1); case 2: this._context.lineTo(this._x1, this._y1); break; } if (this._line || this._line !== 0 && this._point === 1) this._context.closePath(); this._line = 1 - this._line; }, point: function(x2, y2) { x2 = +x2, y2 = +y2; switch (this._point) { case 0: this._point = 1; this._line ? this._context.lineTo(x2, y2) : this._context.moveTo(x2, y2); break; case 1: this._point = 2; break; case 2: this._point = 3; this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); default: point$2(this, x2, y2); break; } this._x0 = this._x1, this._x1 = x2; this._y0 = this._y1, this._y1 = y2; } }; function curveBasis(context) { return new Basis(context); } function BasisClosed(context) { this._context = context; } BasisClosed.prototype = { areaStart: noop$1, areaEnd: noop$1, lineStart: function() { this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = NaN; this._point = 0; }, lineEnd: function() { switch (this._point) { case 1: { this._context.moveTo(this._x2, this._y2); this._context.closePath(); break; } case 2: { this._context.moveTo((this._x2 + 2 * this._x3) / 3, (this._y2 + 2 * this._y3) / 3); this._context.lineTo((this._x3 + 2 * this._x2) / 3, (this._y3 + 2 * this._y2) / 3); this._context.closePath(); break; } case 3: { this.point(this._x2, this._y2); this.point(this._x3, this._y3); this.point(this._x4, this._y4); break; } } }, point: function(x2, y2) { x2 = +x2, y2 = +y2; switch (this._point) { case 0: this._point = 1; this._x2 = x2, this._y2 = y2; break; case 1: this._point = 2; this._x3 = x2, this._y3 = y2; break; case 2: this._point = 3; this._x4 = x2, this._y4 = y2; this._context.moveTo((this._x0 + 4 * this._x1 + x2) / 6, (this._y0 + 4 * this._y1 + y2) / 6); break; default: point$2(this, x2, y2); break; } this._x0 = this._x1, this._x1 = x2; this._y0 = this._y1, this._y1 = y2; } }; function curveBasisClosed(context) { return new BasisClosed(context); } function BasisOpen(context) { this._context = context; } BasisOpen.prototype = { areaStart: function() { this._line = 0; }, areaEnd: function() { this._line = NaN; }, lineStart: function() { this._x0 = this._x1 = this._y0 = this._y1 = NaN; this._point = 0; }, lineEnd: function() { if (this._line || this._line !== 0 && this._point === 3) this._context.closePath(); this._line = 1 - this._line; }, point: function(x2, y2) { x2 = +x2, y2 = +y2; switch (this._point) { case 0: this._point = 1; break; case 1: this._point = 2; break; case 2: this._point = 3; var x0 = (this._x0 + 4 * this._x1 + x2) / 6, y0 = (this._y0 + 4 * this._y1 + y2) / 6; this._line ? this._context.lineTo(x0, y0) : this._context.moveTo(x0, y0); break; case 3: this._point = 4; default: point$2(this, x2, y2); break; } this._x0 = this._x1, this._x1 = x2; this._y0 = this._y1, this._y1 = y2; } }; function curveBasisOpen(context) { return new BasisOpen(context); } function LinearClosed(context) { this._context = context; } LinearClosed.prototype = { areaStart: noop$1, areaEnd: noop$1, lineStart: function() { this._point = 0; }, lineEnd: function() { if (this._point) this._context.closePath(); }, point: function(x2, y2) { x2 = +x2, y2 = +y2; if (this._point) this._context.lineTo(x2, y2); else this._point = 1, this._context.moveTo(x2, y2); } }; function curveLinearClosed(context) { return new LinearClosed(context); } function sign(x2) { return x2 < 0 ? -1 : 1; } function slope3(that, x2, y2) { var h0 = that._x1 - that._x0, h1 = x2 - that._x1, s0 = (that._y1 - that._y0) / (h0 || h1 < 0 && -0), s1 = (y2 - that._y1) / (h1 || h0 < 0 && -0), p = (s0 * h1 + s1 * h0) / (h0 + h1); return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0; } function slope2(that, t) { var h = that._x1 - that._x0; return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t; } function point$1(that, t02, t12) { var x0 = that._x0, y0 = that._y0, x1 = that._x1, y1 = that._y1, dx = (x1 - x0) / 3; that._context.bezierCurveTo(x0 + dx, y0 + dx * t02, x1 - dx, y1 - dx * t12, x1, y1); } function MonotoneX(context) { this._context = context; } MonotoneX.prototype = { areaStart: function() { this._line = 0; }, areaEnd: function() { this._line = NaN; }, lineStart: function() { this._x0 = this._x1 = this._y0 = this._y1 = this._t0 = NaN; this._point = 0; }, lineEnd: function() { switch (this._point) { case 2: this._context.lineTo(this._x1, this._y1); break; case 3: point$1(this, this._t0, slope2(this, this._t0)); break; } if (this._line || this._line !== 0 && this._point === 1) this._context.closePath(); this._line = 1 - this._line; }, point: function(x2, y2) { var t12 = NaN; x2 = +x2, y2 = +y2; if (x2 === this._x1 && y2 === this._y1) return; switch (this._point) { case 0: this._point = 1; this._line ? this._context.lineTo(x2, y2) : this._context.moveTo(x2, y2); break; case 1: this._point = 2; break; case 2: this._point = 3; point$1(this, slope2(this, t12 = slope3(this, x2, y2)), t12); break; default: point$1(this, this._t0, t12 = slope3(this, x2, y2)); break; } this._x0 = this._x1, this._x1 = x2; this._y0 = this._y1, this._y1 = y2; this._t0 = t12; } }; function MonotoneY(context) { this._context = new ReflectContext(context); } (MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function(x2, y2) { MonotoneX.prototype.point.call(this, y2, x2); }; function ReflectContext(context) { this._context = context; } ReflectContext.prototype = { moveTo: function(x2, y2) { this._context.moveTo(y2, x2); }, closePath: function() { this._context.closePath(); }, lineTo: function(x2, y2) { this._context.lineTo(y2, x2); }, bezierCurveTo: function(x1, y1, x2, y2, x3, y3) { this._context.bezierCurveTo(y1, x1, y2, x2, y3, x3); } }; function monotoneX(context) { return new MonotoneX(context); } function monotoneY(context) { return new MonotoneY(context); } function Natural(context) { this._context = context; } Natural.prototype = { areaStart: function() { this._line = 0; }, areaEnd: function() { this._line = NaN; }, lineStart: function() { this._x = []; this._y = []; }, lineEnd: function() { var x2 = this._x, y2 = this._y, n = x2.length; if (n) { this._line ? this._context.lineTo(x2[0], y2[0]) : this._context.moveTo(x2[0], y2[0]); if (n === 2) { this._context.lineTo(x2[1], y2[1]); } else { var px = controlPoints(x2), py = controlPoints(y2); for (var i0 = 0, i1 = 1; i1 < n; ++i0, ++i1) { this._context.bezierCurveTo(px[0][i0], py[0][i0], px[1][i0], py[1][i0], x2[i1], y2[i1]); } } } if (this._line || this._line !== 0 && n === 1) this._context.closePath(); this._line = 1 - this._line; this._x = this._y = null; }, point: function(x2, y2) { this._x.push(+x2); this._y.push(+y2); } }; function controlPoints(x2) { var i, n = x2.length - 1, m, a = new Array(n), b = new Array(n), r = new Array(n); a[0] = 0, b[0] = 2, r[0] = x2[0] + 2 * x2[1]; for (i = 1; i < n - 1; ++i) a[i] = 1, b[i] = 4, r[i] = 4 * x2[i] + 2 * x2[i + 1]; a[n - 1] = 2, b[n - 1] = 7, r[n - 1] = 8 * x2[n - 1] + x2[n]; for (i = 1; i < n; ++i) m = a[i] / b[i - 1], b[i] -= m, r[i] -= m * r[i - 1]; a[n - 1] = r[n - 1] / b[n - 1]; for (i = n - 2; i >= 0; --i) a[i] = (r[i] - a[i + 1]) / b[i]; b[n - 1] = (x2[n] + a[n - 1]) / 2; for (i = 0; i < n - 1; ++i) b[i] = 2 * x2[i + 1] - a[i + 1]; return [a, b]; } function curveNatural(context) { return new Natural(context); } function Step(context, t) { this._context = context; this._t = t; } Step.prototype = { areaStart: function() { this._line = 0; }, areaEnd: function() { this._line = NaN; }, lineStart: function() { this._x = this._y = NaN; this._point = 0; }, lineEnd: function() { if (0 < this._t && this._t < 1 && this._point === 2) this._context.lineTo(this._x, this._y); if (this._line || this._line !== 0 && this._point === 1) this._context.closePath(); if (this._line >= 0) this._t = 1 - this._t, this._line = 1 - this._line; }, point: function(x2, y2) { x2 = +x2, y2 = +y2; switch (this._point) { case 0: this._point = 1; this._line ? this._context.lineTo(x2, y2) : this._context.moveTo(x2, y2); break; case 1: this._point = 2; default: { if (this._t <= 0) { this._context.lineTo(this._x, y2); this._context.lineTo(x2, y2); } else { var x1 = this._x * (1 - this._t) + x2 * this._t; this._context.lineTo(x1, this._y); this._context.lineTo(x1, y2); } break; } } this._x = x2, this._y = y2; } }; function curveStep(context) { return new Step(context, 0.5); } function stepBefore(context) { return new Step(context, 0); } function stepAfter(context) { return new Step(context, 1); } function Transform(k, x2, y2) { this.k = k; this.x = x2; this.y = y2; } Transform.prototype = { constructor: Transform, scale: function(k) { return k === 1 ? this : new Transform(this.k * k, this.x, this.y); }, translate: function(x2, y2) { return x2 === 0 & y2 === 0 ? this : new Transform(this.k, this.x + this.k * x2, this.y + this.k * y2); }, apply: function(point2) { return [point2[0] * this.k + this.x, point2[1] * this.k + this.y]; }, applyX: function(x2) { return x2 * this.k + this.x; }, applyY: function(y2) { return y2 * this.k + this.y; }, invert: function(location2) { return [(location2[0] - this.x) / this.k, (location2[1] - this.y) / this.k]; }, invertX: function(x2) { return (x2 - this.x) / this.k; }, invertY: function(y2) { return (y2 - this.y) / this.k; }, rescaleX: function(x2) { return x2.copy().domain(x2.range().map(this.invertX, this).map(x2.invert, x2)); }, rescaleY: function(y2) { return y2.copy().domain(y2.range().map(this.invertY, this).map(y2.invert, y2)); }, toString: function() { return "translate(" + this.x + "," + this.y + ") scale(" + this.k + ")"; } }; new Transform(1, 0, 0); Transform.prototype; /*! @license DOMPurify 2.4.1 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/2.4.1/LICENSE */ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(obj2) { return typeof obj2; } : function(obj2) { return obj2 && "function" == typeof Symbol && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2; }, _typeof(obj); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf2(o2, p2) { o2.__proto__ = p2; return o2; }; return _setPrototypeOf(o, p); } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() { })); return true; } catch (e) { return false; } } function _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct2(Parent2, args2, Class2) { var a = [null]; a.push.apply(a, args2); var Constructor = Function.bind.apply(Parent2, a); var instance = new Constructor(); if (Class2) _setPrototypeOf(instance, Class2.prototype); return instance; }; } return _construct.apply(null, arguments); } function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); } function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var hasOwnProperty$g = Object.hasOwnProperty, setPrototypeOf = Object.setPrototypeOf, isFrozen = Object.isFrozen, getPrototypeOf = Object.getPrototypeOf, getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; var freeze = Object.freeze, seal = Object.seal, create = Object.create; var _ref = typeof Reflect !== "undefined" && Reflect, apply$2 = _ref.apply, construct = _ref.construct; if (!apply$2) { apply$2 = function apply2(fun, thisValue, args) { return fun.apply(thisValue, args); }; } if (!freeze) { freeze = function freeze2(x2) { return x2; }; } if (!seal) { seal = function seal2(x2) { return x2; }; } if (!construct) { construct = function construct2(Func, args) { return _construct(Func, _toConsumableArray(args)); }; } var arrayForEach = unapply(Array.prototype.forEach); var arrayPop = unapply(Array.prototype.pop); var arrayPush$1 = unapply(Array.prototype.push); var stringToLowerCase = unapply(String.prototype.toLowerCase); var stringToString = unapply(String.prototype.toString); var stringMatch = unapply(String.prototype.match); var stringReplace = unapply(String.prototype.replace); var stringIndexOf = unapply(String.prototype.indexOf); var stringTrim = unapply(String.prototype.trim); var regExpTest = unapply(RegExp.prototype.test); var typeErrorCreate = unconstruct(TypeError); function unapply(func) { return function(thisArg) { for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { args[_key - 1] = arguments[_key]; } return apply$2(func, thisArg, args); }; } function unconstruct(func) { return function() { for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { args[_key2] = arguments[_key2]; } return construct(func, args); }; } function addToSet(set2, array2, transformCaseFunc) { transformCaseFunc = transformCaseFunc ? transformCaseFunc : stringToLowerCase; if (setPrototypeOf) { setPrototypeOf(set2, null); } var l = array2.length; while (l--) { var element = array2[l]; if (typeof element === "string") { var lcElement = transformCaseFunc(element); if (lcElement !== element) { if (!isFrozen(array2)) { array2[l] = lcElement; } element = lcElement; } } set2[element] = true; } return set2; } function clone$2(object2) { var newObject = create(null); var property2; for (property2 in object2) { if (apply$2(hasOwnProperty$g, object2, [property2])) { newObject[property2] = object2[property2]; } } return newObject; } function lookupGetter(object2, prop) { while (object2 !== null) { var desc = getOwnPropertyDescriptor(object2, prop); if (desc) { if (desc.get) { return unapply(desc.get); } if (typeof desc.value === "function") { return unapply(desc.value); } } object2 = getPrototypeOf(object2); } function fallbackValue(element) { console.warn("fallback value for", element); return null; } return fallbackValue; } var html$1 = freeze(["a", "abbr", "acronym", "address", "area", "article", "aside", "audio", "b", "bdi", "bdo", "big", "blink", "blockquote", "body", "br", "button", "canvas", "caption", "center", "cite", "code", "col", "colgroup", "content", "data", "datalist", "dd", "decorator", "del", "details", "dfn", "dialog", "dir", "div", "dl", "dt", "element", "em", "fieldset", "figcaption", "figure", "font", "footer", "form", "h1", "h2", "h3", "h4", "h5", "h6", "head", "header", "hgroup", "hr", "html", "i", "img", "input", "ins", "kbd", "label", "legend", "li", "main", "map", "mark", "marquee", "menu", "menuitem", "meter", "nav", "nobr", "ol", "optgroup", "option", "output", "p", "picture", "pre", "progress", "q", "rp", "rt", "ruby", "s", "samp", "section", "select", "shadow", "small", "source", "spacer", "span", "strike", "strong", "style", "sub", "summary", "sup", "table", "tbody", "td", "template", "textarea", "tfoot", "th", "thead", "time", "tr", "track", "tt", "u", "ul", "var", "video", "wbr"]); var svg$1 = freeze(["svg", "a", "altglyph", "altglyphdef", "altglyphitem", "animatecolor", "animatemotion", "animatetransform", "circle", "clippath", "defs", "desc", "ellipse", "filter", "font", "g", "glyph", "glyphref", "hkern", "image", "line", "lineargradient", "marker", "mask", "metadata", "mpath", "path", "pattern", "polygon", "polyline", "radialgradient", "rect", "stop", "style", "switch", "symbol", "text", "textpath", "title", "tref", "tspan", "view", "vkern"]); var svgFilters = freeze(["feBlend", "feColorMatrix", "feComponentTransfer", "feComposite", "feConvolveMatrix", "feDiffuseLighting", "feDisplacementMap", "feDistantLight", "feFlood", "feFuncA", "feFuncB", "feFuncG", "feFuncR", "feGaussianBlur", "feImage", "feMerge", "feMergeNode", "feMorphology", "feOffset", "fePointLight", "feSpecularLighting", "feSpotLight", "feTile", "feTurbulence"]); var svgDisallowed = freeze(["animate", "color-profile", "cursor", "discard", "fedropshadow", "font-face", "font-face-format", "font-face-name", "font-face-src", "font-face-uri", "foreignobject", "hatch", "hatchpath", "mesh", "meshgradient", "meshpatch", "meshrow", "missing-glyph", "script", "set", "solidcolor", "unknown", "use"]); var mathMl$1 = freeze(["math", "menclose", "merror", "mfenced", "mfrac", "mglyph", "mi", "mlabeledtr", "mmultiscripts", "mn", "mo", "mover", "mpadded", "mphantom", "mroot", "mrow", "ms", "mspace", "msqrt", "mstyle", "msub", "msup", "msubsup", "mtable", "mtd", "mtext", "mtr", "munder", "munderover"]); var mathMlDisallowed = freeze(["maction", "maligngroup", "malignmark", "mlongdiv", "mscarries", "mscarry", "msgroup", "mstack", "msline", "msrow", "semantics", "annotation", "annotation-xml", "mprescripts", "none"]); var text = freeze(["#text"]); var html = freeze(["accept", "action", "align", "alt", "autocapitalize", "autocomplete", "autopictureinpicture", "autoplay", "background", "bgcolor", "border", "capture", "cellpadding", "cellspacing", "checked", "cite", "class", "clear", "color", "cols", "colspan", "controls", "controlslist", "coords", "crossorigin", "datetime", "decoding", "default", "dir", "disabled", "disablepictureinpicture", "disableremoteplayback", "download", "draggable", "enctype", "enterkeyhint", "face", "for", "headers", "height", "hidden", "high", "href", "hreflang", "id", "inputmode", "integrity", "ismap", "kind", "label", "lang", "list", "loading", "loop", "low", "max", "maxlength", "media", "method", "min", "minlength", "multiple", "muted", "name", "nonce", "noshade", "novalidate", "nowrap", "open", "optimum", "pattern", "placeholder", "playsinline", "poster", "preload", "pubdate", "radiogroup", "readonly", "rel", "required", "rev", "reversed", "role", "rows", "rowspan", "spellcheck", "scope", "selected", "shape", "size", "sizes", "span", "srclang", "start", "src", "srcset", "step", "style", "summary", "tabindex", "title", "translate", "type", "usemap", "valign", "value", "width", "xmlns", "slot"]); var svg = freeze(["accent-height", "accumulate", "additive", "alignment-baseline", "ascent", "attributename", "attributetype", "azimuth", "basefrequency", "baseline-shift", "begin", "bias", "by", "class", "clip", "clippathunits", "clip-path", "clip-rule", "color", "color-interpolation", "color-interpolation-filters", "color-profile", "color-rendering", "cx", "cy", "d", "dx", "dy", "diffuseconstant", "direction", "display", "divisor", "dur", "edgemode", "elevation", "end", "fill", "fill-opacity", "fill-rule", "filter", "filterunits", "flood-color", "flood-opacity", "font-family", "font-size", "font-size-adjust", "font-stretch", "font-style", "font-variant", "font-weight", "fx", "fy", "g1", "g2", "glyph-name", "glyphref", "gradientunits", "gradienttransform", "height", "href", "id", "image-rendering", "in", "in2", "k", "k1", "k2", "k3", "k4", "kerning", "keypoints", "keysplines", "keytimes", "lang", "lengthadjust", "letter-spacing", "kernelmatrix", "kernelunitlength", "lighting-color", "local", "marker-end", "marker-mid", "marker-start", "markerheight", "markerunits", "markerwidth", "maskcontentunits", "maskunits", "max", "mask", "media", "method", "mode", "min", "name", "numoctaves", "offset", "operator", "opacity", "order", "orient", "orientation", "origin", "overflow", "paint-order", "path", "pathlength", "patterncontentunits", "patterntransform", "patternunits", "points", "preservealpha", "preserveaspectratio", "primitiveunits", "r", "rx", "ry", "radius", "refx", "refy", "repeatcount", "repeatdur", "restart", "result", "rotate", "scale", "seed", "shape-rendering", "specularconstant", "specularexponent", "spreadmethod", "startoffset", "stddeviation", "stitchtiles", "stop-color", "stop-opacity", "stroke-dasharray", "stroke-dashoffset", "stroke-linecap", "stroke-linejoin", "stroke-miterlimit", "stroke-opacity", "stroke", "stroke-width", "style", "surfacescale", "systemlanguage", "tabindex", "targetx", "targety", "transform", "transform-origin", "text-anchor", "text-decoration", "text-rendering", "textlength", "type", "u1", "u2", "unicode", "values", "viewbox", "visibility", "version", "vert-adv-y", "vert-origin-x", "vert-origin-y", "width", "word-spacing", "wrap", "writing-mode", "xchannelselector", "ychannelselector", "x", "x1", "x2", "xmlns", "y", "y1", "y2", "z", "zoomandpan"]); var mathMl = freeze(["accent", "accentunder", "align", "bevelled", "close", "columnsalign", "columnlines", "columnspan", "denomalign", "depth", "dir", "display", "displaystyle", "encoding", "fence", "frame", "height", "href", "id", "largeop", "length", "linethickness", "lspace", "lquote", "mathbackground", "mathcolor", "mathsize", "mathvariant", "maxsize", "minsize", "movablelimits", "notation", "numalign", "open", "rowalign", "rowlines", "rowspacing", "rowspan", "rspace", "rquote", "scriptlevel", "scriptminsize", "scriptsizemultiplier", "selection", "separator", "separators", "stretchy", "subscriptshift", "supscriptshift", "symmetric", "voffset", "width", "xmlns"]); var xml = freeze(["xlink:href", "xml:id", "xlink:title", "xml:space", "xmlns:xlink"]); var MUSTACHE_EXPR = seal(/\{\{[\w\W]*|[\w\W]*\}\}/gm); var ERB_EXPR = seal(/<%[\w\W]*|[\w\W]*%>/gm); var TMPLIT_EXPR = seal(/\${[\w\W]*}/gm); var DATA_ATTR = seal(/^data-[\-\w.\u00B7-\uFFFF]/); var ARIA_ATTR = seal(/^aria-[\-\w]+$/); var IS_ALLOWED_URI = seal( /^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i ); var IS_SCRIPT_OR_DATA = seal(/^(?:\w+script|data):/i); var ATTR_WHITESPACE = seal( /[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g ); var DOCTYPE_NAME = seal(/^html$/i); var getGlobal = function getGlobal2() { return typeof window === "undefined" ? null : window; }; var _createTrustedTypesPolicy = function _createTrustedTypesPolicy2(trustedTypes, document2) { if (_typeof(trustedTypes) !== "object" || typeof trustedTypes.createPolicy !== "function") { return null; } var suffix = null; var ATTR_NAME = "data-tt-policy-suffix"; if (document2.currentScript && document2.currentScript.hasAttribute(ATTR_NAME)) { suffix = document2.currentScript.getAttribute(ATTR_NAME); } var policyName = "dompurify" + (suffix ? "#" + suffix : ""); try { return trustedTypes.createPolicy(policyName, { createHTML: function createHTML(html2) { return html2; }, createScriptURL: function createScriptURL(scriptUrl) { return scriptUrl; } }); } catch (_2) { console.warn("TrustedTypes policy " + policyName + " could not be created."); return null; } }; function createDOMPurify() { var window2 = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : getGlobal(); var DOMPurify = function DOMPurify2(root2) { return createDOMPurify(root2); }; DOMPurify.version = "2.4.1"; DOMPurify.removed = []; if (!window2 || !window2.document || window2.document.nodeType !== 9) { DOMPurify.isSupported = false; return DOMPurify; } var originalDocument = window2.document; var document2 = window2.document; var DocumentFragment = window2.DocumentFragment, HTMLTemplateElement = window2.HTMLTemplateElement, Node = window2.Node, Element = window2.Element, NodeFilter = window2.NodeFilter, _window$NamedNodeMap = window2.NamedNodeMap, NamedNodeMap = _window$NamedNodeMap === void 0 ? window2.NamedNodeMap || window2.MozNamedAttrMap : _window$NamedNodeMap, HTMLFormElement = window2.HTMLFormElement, DOMParser2 = window2.DOMParser, trustedTypes = window2.trustedTypes; var ElementPrototype = Element.prototype; var cloneNode = lookupGetter(ElementPrototype, "cloneNode"); var getNextSibling = lookupGetter(ElementPrototype, "nextSibling"); var getChildNodes = lookupGetter(ElementPrototype, "childNodes"); var getParentNode = lookupGetter(ElementPrototype, "parentNode"); if (typeof HTMLTemplateElement === "function") { var template = document2.createElement("template"); if (template.content && template.content.ownerDocument) { document2 = template.content.ownerDocument; } } var trustedTypesPolicy = _createTrustedTypesPolicy(trustedTypes, originalDocument); var emptyHTML = trustedTypesPolicy ? trustedTypesPolicy.createHTML("") : ""; var _document = document2, implementation = _document.implementation, createNodeIterator = _document.createNodeIterator, createDocumentFragment = _document.createDocumentFragment, getElementsByTagName = _document.getElementsByTagName; var importNode = originalDocument.importNode; var documentMode = {}; try { documentMode = clone$2(document2).documentMode ? document2.documentMode : {}; } catch (_2) { } var hooks = {}; DOMPurify.isSupported = typeof getParentNode === "function" && implementation && typeof implementation.createHTMLDocument !== "undefined" && documentMode !== 9; var MUSTACHE_EXPR$1 = MUSTACHE_EXPR, ERB_EXPR$1 = ERB_EXPR, TMPLIT_EXPR$1 = TMPLIT_EXPR, DATA_ATTR$1 = DATA_ATTR, ARIA_ATTR$1 = ARIA_ATTR, IS_SCRIPT_OR_DATA$1 = IS_SCRIPT_OR_DATA, ATTR_WHITESPACE$1 = ATTR_WHITESPACE; var IS_ALLOWED_URI$1 = IS_ALLOWED_URI; var ALLOWED_TAGS = null; var DEFAULT_ALLOWED_TAGS = addToSet({}, [].concat(_toConsumableArray(html$1), _toConsumableArray(svg$1), _toConsumableArray(svgFilters), _toConsumableArray(mathMl$1), _toConsumableArray(text))); var ALLOWED_ATTR = null; var DEFAULT_ALLOWED_ATTR = addToSet({}, [].concat(_toConsumableArray(html), _toConsumableArray(svg), _toConsumableArray(mathMl), _toConsumableArray(xml))); var CUSTOM_ELEMENT_HANDLING = Object.seal(Object.create(null, { tagNameCheck: { writable: true, configurable: false, enumerable: true, value: null }, attributeNameCheck: { writable: true, configurable: false, enumerable: true, value: null }, allowCustomizedBuiltInElements: { writable: true, configurable: false, enumerable: true, value: false } })); var FORBID_TAGS = null; var FORBID_ATTR = null; var ALLOW_ARIA_ATTR = true; var ALLOW_DATA_ATTR = true; var ALLOW_UNKNOWN_PROTOCOLS = false; var SAFE_FOR_TEMPLATES = false; var WHOLE_DOCUMENT = false; var SET_CONFIG = false; var FORCE_BODY = false; var RETURN_DOM = false; var RETURN_DOM_FRAGMENT = false; var RETURN_TRUSTED_TYPE = false; var SANITIZE_DOM = true; var SANITIZE_NAMED_PROPS = false; var SANITIZE_NAMED_PROPS_PREFIX = "user-content-"; var KEEP_CONTENT = true; var IN_PLACE = false; var USE_PROFILES = {}; var FORBID_CONTENTS = null; var DEFAULT_FORBID_CONTENTS = addToSet({}, ["annotation-xml", "audio", "colgroup", "desc", "foreignobject", "head", "iframe", "math", "mi", "mn", "mo", "ms", "mtext", "noembed", "noframes", "noscript", "plaintext", "script", "style", "svg", "template", "thead", "title", "video", "xmp"]); var DATA_URI_TAGS = null; var DEFAULT_DATA_URI_TAGS = addToSet({}, ["audio", "video", "img", "source", "image", "track"]); var URI_SAFE_ATTRIBUTES = null; var DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, ["alt", "class", "for", "id", "label", "name", "pattern", "placeholder", "role", "summary", "title", "value", "style", "xmlns"]); var MATHML_NAMESPACE = "http://www.w3.org/1998/Math/MathML"; var SVG_NAMESPACE = "http://www.w3.org/2000/svg"; var HTML_NAMESPACE = "http://www.w3.org/1999/xhtml"; var NAMESPACE = HTML_NAMESPACE; var IS_EMPTY_INPUT = false; var ALLOWED_NAMESPACES = null; var DEFAULT_ALLOWED_NAMESPACES = addToSet({}, [MATHML_NAMESPACE, SVG_NAMESPACE, HTML_NAMESPACE], stringToString); var PARSER_MEDIA_TYPE; var SUPPORTED_PARSER_MEDIA_TYPES = ["application/xhtml+xml", "text/html"]; var DEFAULT_PARSER_MEDIA_TYPE = "text/html"; var transformCaseFunc; var CONFIG = null; var formElement = document2.createElement("form"); var isRegexOrFunction = function isRegexOrFunction2(testValue) { return testValue instanceof RegExp || testValue instanceof Function; }; var _parseConfig = function _parseConfig2(cfg) { if (CONFIG && CONFIG === cfg) { return; } if (!cfg || _typeof(cfg) !== "object") { cfg = {}; } cfg = clone$2(cfg); PARSER_MEDIA_TYPE = SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1 ? PARSER_MEDIA_TYPE = DEFAULT_PARSER_MEDIA_TYPE : PARSER_MEDIA_TYPE = cfg.PARSER_MEDIA_TYPE; transformCaseFunc = PARSER_MEDIA_TYPE === "application/xhtml+xml" ? stringToString : stringToLowerCase; ALLOWED_TAGS = "ALLOWED_TAGS" in cfg ? addToSet({}, cfg.ALLOWED_TAGS, transformCaseFunc) : DEFAULT_ALLOWED_TAGS; ALLOWED_ATTR = "ALLOWED_ATTR" in cfg ? addToSet({}, cfg.ALLOWED_ATTR, transformCaseFunc) : DEFAULT_ALLOWED_ATTR; ALLOWED_NAMESPACES = "ALLOWED_NAMESPACES" in cfg ? addToSet({}, cfg.ALLOWED_NAMESPACES, stringToString) : DEFAULT_ALLOWED_NAMESPACES; URI_SAFE_ATTRIBUTES = "ADD_URI_SAFE_ATTR" in cfg ? addToSet( clone$2(DEFAULT_URI_SAFE_ATTRIBUTES), cfg.ADD_URI_SAFE_ATTR, transformCaseFunc ) : DEFAULT_URI_SAFE_ATTRIBUTES; DATA_URI_TAGS = "ADD_DATA_URI_TAGS" in cfg ? addToSet( clone$2(DEFAULT_DATA_URI_TAGS), cfg.ADD_DATA_URI_TAGS, transformCaseFunc ) : DEFAULT_DATA_URI_TAGS; FORBID_CONTENTS = "FORBID_CONTENTS" in cfg ? addToSet({}, cfg.FORBID_CONTENTS, transformCaseFunc) : DEFAULT_FORBID_CONTENTS; FORBID_TAGS = "FORBID_TAGS" in cfg ? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc) : {}; FORBID_ATTR = "FORBID_ATTR" in cfg ? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc) : {}; USE_PROFILES = "USE_PROFILES" in cfg ? cfg.USE_PROFILES : false; ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; RETURN_DOM = cfg.RETURN_DOM || false; RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; FORCE_BODY = cfg.FORCE_BODY || false; SANITIZE_DOM = cfg.SANITIZE_DOM !== false; SANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false; KEEP_CONTENT = cfg.KEEP_CONTENT !== false; IN_PLACE = cfg.IN_PLACE || false; IS_ALLOWED_URI$1 = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI$1; NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE; if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck)) { CUSTOM_ELEMENT_HANDLING.tagNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck; } if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)) { CUSTOM_ELEMENT_HANDLING.attributeNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck; } if (cfg.CUSTOM_ELEMENT_HANDLING && typeof cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements === "boolean") { CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements = cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements; } if (SAFE_FOR_TEMPLATES) { ALLOW_DATA_ATTR = false; } if (RETURN_DOM_FRAGMENT) { RETURN_DOM = true; } if (USE_PROFILES) { ALLOWED_TAGS = addToSet({}, _toConsumableArray(text)); ALLOWED_ATTR = []; if (USE_PROFILES.html === true) { addToSet(ALLOWED_TAGS, html$1); addToSet(ALLOWED_ATTR, html); } if (USE_PROFILES.svg === true) { addToSet(ALLOWED_TAGS, svg$1); addToSet(ALLOWED_ATTR, svg); addToSet(ALLOWED_ATTR, xml); } if (USE_PROFILES.svgFilters === true) { addToSet(ALLOWED_TAGS, svgFilters); addToSet(ALLOWED_ATTR, svg); addToSet(ALLOWED_ATTR, xml); } if (USE_PROFILES.mathMl === true) { addToSet(ALLOWED_TAGS, mathMl$1); addToSet(ALLOWED_ATTR, mathMl); addToSet(ALLOWED_ATTR, xml); } } if (cfg.ADD_TAGS) { if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) { ALLOWED_TAGS = clone$2(ALLOWED_TAGS); } addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc); } if (cfg.ADD_ATTR) { if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) { ALLOWED_ATTR = clone$2(ALLOWED_ATTR); } addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc); } if (cfg.ADD_URI_SAFE_ATTR) { addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR, transformCaseFunc); } if (cfg.FORBID_CONTENTS) { if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) { FORBID_CONTENTS = clone$2(FORBID_CONTENTS); } addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS, transformCaseFunc); } if (KEEP_CONTENT) { ALLOWED_TAGS["#text"] = true; } if (WHOLE_DOCUMENT) { addToSet(ALLOWED_TAGS, ["html", "head", "body"]); } if (ALLOWED_TAGS.table) { addToSet(ALLOWED_TAGS, ["tbody"]); delete FORBID_TAGS.tbody; } if (freeze) { freeze(cfg); } CONFIG = cfg; }; var MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, ["mi", "mo", "mn", "ms", "mtext"]); var HTML_INTEGRATION_POINTS = addToSet({}, ["foreignobject", "desc", "title", "annotation-xml"]); var COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, ["title", "style", "font", "a", "script"]); var ALL_SVG_TAGS = addToSet({}, svg$1); addToSet(ALL_SVG_TAGS, svgFilters); addToSet(ALL_SVG_TAGS, svgDisallowed); var ALL_MATHML_TAGS = addToSet({}, mathMl$1); addToSet(ALL_MATHML_TAGS, mathMlDisallowed); var _checkValidNamespace = function _checkValidNamespace2(element) { var parent = getParentNode(element); if (!parent || !parent.tagName) { parent = { namespaceURI: NAMESPACE, tagName: "template" }; } var tagName = stringToLowerCase(element.tagName); var parentTagName = stringToLowerCase(parent.tagName); if (!ALLOWED_NAMESPACES[element.namespaceURI]) { return false; } if (element.namespaceURI === SVG_NAMESPACE) { if (parent.namespaceURI === HTML_NAMESPACE) { return tagName === "svg"; } if (parent.namespaceURI === MATHML_NAMESPACE) { return tagName === "svg" && (parentTagName === "annotation-xml" || MATHML_TEXT_INTEGRATION_POINTS[parentTagName]); } return Boolean(ALL_SVG_TAGS[tagName]); } if (element.namespaceURI === MATHML_NAMESPACE) { if (parent.namespaceURI === HTML_NAMESPACE) { return tagName === "math"; } if (parent.namespaceURI === SVG_NAMESPACE) { return tagName === "math" && HTML_INTEGRATION_POINTS[parentTagName]; } return Boolean(ALL_MATHML_TAGS[tagName]); } if (element.namespaceURI === HTML_NAMESPACE) { if (parent.namespaceURI === SVG_NAMESPACE && !HTML_INTEGRATION_POINTS[parentTagName]) { return false; } if (parent.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]) { return false; } return !ALL_MATHML_TAGS[tagName] && (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName]); } if (PARSER_MEDIA_TYPE === "application/xhtml+xml" && ALLOWED_NAMESPACES[element.namespaceURI]) { return true; } return false; }; var _forceRemove = function _forceRemove2(node2) { arrayPush$1(DOMPurify.removed, { element: node2 }); try { node2.parentNode.removeChild(node2); } catch (_2) { try { node2.outerHTML = emptyHTML; } catch (_3) { node2.remove(); } } }; var _removeAttribute = function _removeAttribute2(name2, node2) { try { arrayPush$1(DOMPurify.removed, { attribute: node2.getAttributeNode(name2), from: node2 }); } catch (_2) { arrayPush$1(DOMPurify.removed, { attribute: null, from: node2 }); } node2.removeAttribute(name2); if (name2 === "is" && !ALLOWED_ATTR[name2]) { if (RETURN_DOM || RETURN_DOM_FRAGMENT) { try { _forceRemove(node2); } catch (_2) { } } else { try { node2.setAttribute(name2, ""); } catch (_2) { } } } }; var _initDocument = function _initDocument2(dirty) { var doc; var leadingWhitespace; if (FORCE_BODY) { dirty = "" + dirty; } else { var matches = stringMatch(dirty, /^[\r\n\t ]+/); leadingWhitespace = matches && matches[0]; } if (PARSER_MEDIA_TYPE === "application/xhtml+xml" && NAMESPACE === HTML_NAMESPACE) { dirty = '' + dirty + ""; } var dirtyPayload = trustedTypesPolicy ? trustedTypesPolicy.createHTML(dirty) : dirty; if (NAMESPACE === HTML_NAMESPACE) { try { doc = new DOMParser2().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE); } catch (_2) { } } if (!doc || !doc.documentElement) { doc = implementation.createDocument(NAMESPACE, "template", null); try { doc.documentElement.innerHTML = IS_EMPTY_INPUT ? "" : dirtyPayload; } catch (_2) { } } var body = doc.body || doc.documentElement; if (dirty && leadingWhitespace) { body.insertBefore(document2.createTextNode(leadingWhitespace), body.childNodes[0] || null); } if (NAMESPACE === HTML_NAMESPACE) { return getElementsByTagName.call(doc, WHOLE_DOCUMENT ? "html" : "body")[0]; } return WHOLE_DOCUMENT ? doc.documentElement : body; }; var _createIterator = function _createIterator2(root2) { return createNodeIterator.call( root2.ownerDocument || root2, root2, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT, null, false ); }; var _isClobbered = function _isClobbered2(elm) { return elm instanceof HTMLFormElement && (typeof elm.nodeName !== "string" || typeof elm.textContent !== "string" || typeof elm.removeChild !== "function" || !(elm.attributes instanceof NamedNodeMap) || typeof elm.removeAttribute !== "function" || typeof elm.setAttribute !== "function" || typeof elm.namespaceURI !== "string" || typeof elm.insertBefore !== "function" || typeof elm.hasChildNodes !== "function"); }; var _isNode = function _isNode2(object2) { return _typeof(Node) === "object" ? object2 instanceof Node : object2 && _typeof(object2) === "object" && typeof object2.nodeType === "number" && typeof object2.nodeName === "string"; }; var _executeHook = function _executeHook2(entryPoint, currentNode, data) { if (!hooks[entryPoint]) { return; } arrayForEach(hooks[entryPoint], function(hook) { hook.call(DOMPurify, currentNode, data, CONFIG); }); }; var _sanitizeElements = function _sanitizeElements2(currentNode) { var content; _executeHook("beforeSanitizeElements", currentNode, null); if (_isClobbered(currentNode)) { _forceRemove(currentNode); return true; } if (regExpTest(/[\u0080-\uFFFF]/, currentNode.nodeName)) { _forceRemove(currentNode); return true; } var tagName = transformCaseFunc(currentNode.nodeName); _executeHook("uponSanitizeElement", currentNode, { tagName, allowedTags: ALLOWED_TAGS }); if (currentNode.hasChildNodes() && !_isNode(currentNode.firstElementChild) && (!_isNode(currentNode.content) || !_isNode(currentNode.content.firstElementChild)) && regExpTest(/<[/\w]/g, currentNode.innerHTML) && regExpTest(/<[/\w]/g, currentNode.textContent)) { _forceRemove(currentNode); return true; } if (tagName === "select" && regExpTest(/