;(self.webpackChunk_N_E = self.webpackChunk_N_E || []).push([ [906], { 676: function (e, t, n) { 'use strict' function r(e, t) { ;(null == t || t > e.length) && (t = e.length) for (var n = 0, r = new Array(t); n < t; n++) r[n] = e[n] return r } n.d(t, { Z: function () { return r }, }) }, 2137: function (e, t, n) { 'use strict' function r(e, t, n, r, i, o, a) { try { var s = e[o](a), u = s.value } catch (l) { return void n(l) } s.done ? t(u) : Promise.resolve(u).then(r, i) } function i(e) { return function () { var t = this, n = arguments return new Promise(function (i, o) { var a = e.apply(t, n) function s(e) { r(a, i, o, s, u, 'next', e) } function u(e) { r(a, i, o, s, u, 'throw', e) } s(void 0) }) } } n.d(t, { Z: function () { return i }, }) }, 7375: function (e, t, n) { 'use strict' function r(e, t) { if (null == e) return {} var n, r, i = (function (e, t) { if (null == e) return {} var n, r, i = {}, o = Object.keys(e) for (r = 0; r < o.length; r++) (n = o[r]), t.indexOf(n) >= 0 || (i[n] = e[n]) return i })(e, t) if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e) for (r = 0; r < o.length; r++) (n = o[r]), t.indexOf(n) >= 0 || (Object.prototype.propertyIsEnumerable.call(e, n) && (i[n] = e[n])) } return i } n.d(t, { Z: function () { return r }, }) }, 4699: function (e, t, n) { 'use strict' n.d(t, { Z: function () { return i }, }) var r = n(2961) function i(e, t) { return ( (function (e) { if (Array.isArray(e)) return e })(e) || (function (e, t) { if ('undefined' !== typeof Symbol && Symbol.iterator in Object(e)) { var n = [], r = !0, i = !1, o = void 0 try { for ( var a, s = e[Symbol.iterator](); !(r = (a = s.next()).done) && (n.push(a.value), !t || n.length !== t); r = !0 ); } catch (u) { ;(i = !0), (o = u) } finally { try { r || null == s.return || s.return() } finally { if (i) throw o } } return n } })(e, t) || (0, r.Z)(e, t) || (function () { throw new TypeError( 'Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.', ) })() ) } }, 7329: function (e, t, n) { 'use strict' n.d(t, { Z: function () { return o }, }) var r = n(676) var i = n(2961) function o(e) { return ( (function (e) { if (Array.isArray(e)) return (0, r.Z)(e) })(e) || (function (e) { if ('undefined' !== typeof Symbol && Symbol.iterator in Object(e)) return Array.from(e) })(e) || (0, i.Z)(e) || (function () { throw new TypeError( 'Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.', ) })() ) } }, 2961: function (e, t, n) { 'use strict' n.d(t, { Z: function () { return i }, }) var r = n(676) function i(e, t) { if (e) { if ('string' === typeof e) return (0, r.Z)(e, t) var n = Object.prototype.toString.call(e).slice(8, -1) return ( 'Object' === n && e.constructor && (n = e.constructor.name), 'Map' === n || 'Set' === n ? Array.from(e) : 'Arguments' === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n) ? (0, r.Z)(e, t) : void 0 ) } } }, 6769: function (e, t, n) { 'use strict' n.d(t, { UQ: function () { return D }, KF: function () { return z }, XE: function () { return B }, Qd: function () { return I }, Hk: function () { return H }, }) var r = n(58), i = n(63), o = n(2326), a = n(5284), s = n(9676), u = n(3782), l = n(5267), c = n(4461), d = n(3808), f = n(658), h = n(8500), p = n(7294), v = n(1888), m = n(7581), g = n(1034), y = n(4577), b = n(2947), w = n(7277), x = n(7248) function E() { return (E = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var n = arguments[t] for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r]) } return e }).apply(this, arguments) } function k(e, t) { if (null == e) return {} var n, r, i = {}, o = Object.keys(e) for (r = 0; r < o.length; r++) (n = o[r]), t.indexOf(n) >= 0 || (i[n] = e[n]) return i } var [_, T, O, C] = (0, v.n)() function S(e) { var { onChange: t, defaultIndex: n, index: r, allowMultiple: i, allowToggle: o } = e, a = k(e, ['onChange', 'defaultIndex', 'index', 'allowMultiple', 'allowToggle']) !(function (e) { var t = e.index || e.defaultIndex, n = !(0, d.o8)(t) && !(0, d.kJ)(t) && e.allowMultiple ;(0, f.ZK)({ condition: !!n, message: "If 'allowMultiple' is passed, then 'index' or 'defaultIndex' must be an array. You passed: " + typeof t + ',', }) })(e), (function (e) { ;(0, f.ZK)({ condition: !(!e.allowMultiple || !e.allowToggle), message: "If 'allowMultiple' is passed, 'allowToggle' will be ignored. Either remove 'allowToggle' or 'allowMultiple' depending on whether you want multiple accordions visible or not", }) })(e) var s = O(), [u, l] = (0, p.useState)(-1) ;(0, m.z)(() => { l(-1) }) var [c, h] = (0, g.T)({ value: r, defaultValue: () => (i ? (null != n ? n : []) : null != n ? n : -1), onChange: t, }) return { index: c, setIndex: h, htmlProps: a, getAccordionItemProps: (e) => { var t = !1 null !== e && (t = (0, d.kJ)(c) ? c.includes(e) : c === e) return { isOpen: t, onChange: (t) => { if (null !== e) if (i && (0, d.kJ)(c)) { var n = t ? (0, w.jX)(c, e) : (0, w.cl)(c, e) h(n) } else t ? h(e) : o && h(-1) }, } }, focusedIndex: u, setFocusedIndex: l, descendants: s, } } var [A, P] = (0, h.k)({ name: 'AccordionContext', errorMessage: 'useAccordionContext: `context` is undefined. Seems you forgot to wrap the accordion components in ``', }) function M(e) { var { isDisabled: t, isFocusable: n, id: r } = e, i = k(e, ['isDisabled', 'isFocusable', 'id']), { getAccordionItemProps: o, setFocusedIndex: a } = P(), s = (0, p.useRef)(null), [u, l] = (0, y.ZS)(r, 'accordion-button', 'accordion-panel') !(function (e) { ;(0, f.ZK)({ condition: !(!e.isFocusable || e.isDisabled), message: "Using only 'isFocusable', this prop is reserved for situations where you pass 'isDisabled' but you still want the element to receive focus (A11y). Either remove it or pass 'isDisabled' as well.\n ", }) })(e) var { register: d, index: h, descendants: v } = C({ disabled: t && !n }), { isOpen: m, onChange: g } = o(-1 === h ? null : h) !(function (e) { ;(0, f.ZK)({ condition: e.isOpen && !!e.isDisabled, message: 'Cannot open a disabled accordion item', }) })({ isOpen: m, isDisabled: t }) var w = (0, p.useCallback)(() => { null == g || g(!m), a(h) }, [h, a, m, g]), _ = (0, p.useCallback)( (e) => { var t = { ArrowDown: () => { var e = v.nextEnabled(h) e && (0, x.T)(e.node) }, ArrowUp: () => { var e = v.prevEnabled(h) e && (0, x.T)(e.node) }, Home: () => { var e = v.firstEnabled() e && (0, x.T)(e.node) }, End: () => { var e = v.lastEnabled() e && (0, x.T)(e.node) }, }[(0, c.uh)(e)] t && (e.preventDefault(), t(e)) }, [v, h], ), T = (0, p.useCallback)(() => { a(h) }, [a, h]), O = (0, p.useCallback)( function (e, n) { return ( void 0 === e && (e = {}), void 0 === n && (n = null), E({}, e, { type: 'button', ref: (0, b.l)(d, s, n), id: u, disabled: !!t, 'aria-expanded': !!m, 'aria-controls': l, onClick: (0, f.v0)(e.onClick, w), onFocus: (0, f.v0)(e.onFocus, T), onKeyDown: (0, f.v0)(e.onKeyDown, _), }) ) }, [u, t, m, w, T, _, l, d], ), S = (0, p.useCallback)( function (e, t) { return ( void 0 === e && (e = {}), void 0 === t && (t = null), E({}, e, { ref: t, role: 'region', id: l, 'aria-labelledby': u, hidden: !m }) ) }, [u, m, l], ) return { isOpen: m, isDisabled: t, isFocusable: n, onOpen: () => { null == g || g(!0) }, onClose: () => { null == g || g(!1) }, getButtonProps: O, getPanelProps: S, htmlProps: i, } } function R() { return (R = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var n = arguments[t] for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r]) } return e }).apply(this, arguments) } function j(e, t) { if (null == e) return {} var n, r, i = {}, o = Object.keys(e) for (r = 0; r < o.length; r++) (n = o[r]), t.indexOf(n) >= 0 || (i[n] = e[n]) return i } var D = (0, i.G)((e, t) => { var { children: n, reduceMotion: r } = e, i = j(e, ['children', 'reduceMotion']), l = (0, o.j)('Accordion', i), d = S((0, a.Lr)(i)), { htmlProps: f, descendants: h } = d, v = j(d, ['htmlProps', 'descendants']), m = p.useMemo(() => R({}, v, { reduceMotion: !!r }), [v, r]) return p.createElement( _, { value: h }, p.createElement( A, { value: m }, p.createElement( s.Fo, { value: l }, p.createElement( u.m$.div, R({ ref: t }, f, { className: (0, c.cx)('chakra-accordion', i.className) }), n, ), ), ), ) }) d.Ts && (D.displayName = 'Accordion') var [L, N] = (0, h.k)({ name: 'AccordionItemContext', errorMessage: 'useAccordionItemContext: `context` is undefined. Seems you forgot to wrap the accordion item parts in `` ', }), I = (0, i.G)((e, t) => { var { children: n, className: r } = e, i = M(e), { htmlProps: o } = i, a = j(i, ['htmlProps']), l = R({}, (0, s.yK)().container, { overflowAnchor: 'none' }), d = p.useMemo(() => a, [a]) return p.createElement( L, { value: d }, p.createElement( u.m$.div, R({ ref: t }, o, { className: (0, c.cx)('chakra-accordion__item', r), __css: l }), (0, f.Pu)(n, { isExpanded: !!a.isOpen, isDisabled: !!a.isDisabled }), ), ) }) d.Ts && (I.displayName = 'AccordionItem') var z = (0, i.G)((e, t) => { var { getButtonProps: n } = N(), r = n(e, t), i = R( { display: 'flex', alignItems: 'center', width: '100%', outline: 0 }, (0, s.yK)().button, ) return p.createElement( u.m$.button, R({}, r, { className: (0, c.cx)('chakra-accordion__button', e.className), __css: i }), ) }) d.Ts && (z.displayName = 'AccordionButton') var H = (0, i.G)((e, t) => { var { reduceMotion: n } = P(), { getPanelProps: r, isOpen: i } = N(), o = r(e, t), a = (0, c.cx)('chakra-accordion__panel', e.className), d = (0, s.yK)() n || delete o.hidden var f = p.createElement(u.m$.div, R({}, o, { __css: d.panel, className: a })) return n ? f : p.createElement(l.U, { in: i }, f) }) d.Ts && (H.displayName = 'AccordionPanel') var B = (e) => { var { isOpen: t, isDisabled: n } = N(), { reduceMotion: i } = P(), o = (0, c.cx)('chakra-accordion__icon', e.className), a = R( { opacity: n ? 0.4 : 1, transform: t ? 'rotate(-180deg)' : void 0, transition: i ? void 0 : 'transform 0.2s', transformOrigin: 'center', }, (0, s.yK)().icon, ) return p.createElement( r.J, R({ viewBox: '0 0 24 24', 'aria-hidden': !0, className: o, __css: a }, e), p.createElement('path', { fill: 'currentColor', d: 'M16.59 8.59L12 13.17 7.41 8.59 6 10l6 6 6-6z', }), ) } d.Ts && (B.displayName = 'AccordionIcon') }, 155: function (e, t, n) { 'use strict' n.d(t, { z: function () { return T }, }) var r = n(2947), i = n(917), o = n(63), a = n(2326), s = n(5284), u = n(3782), l = n(4461), c = n(3808), d = n(5415), f = n(7294) function h() { return (h = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var n = arguments[t] for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r]) } return e }).apply(this, arguments) } var p = (0, i.F4)({ '0%': { transform: 'rotate(0deg)' }, '100%': { transform: 'rotate(360deg)' }, }), v = (0, o.G)((e, t) => { var n = (0, a.m)('Spinner', e), r = (0, s.Lr)(e), { label: i = 'Loading...', thickness: o = '2px', speed: c = '0.45s', emptyColor: v = 'transparent', className: m, } = r, g = (function (e, t) { if (null == e) return {} var n, r, i = {}, o = Object.keys(e) for (r = 0; r < o.length; r++) (n = o[r]), t.indexOf(n) >= 0 || (i[n] = e[n]) return i })(r, ['label', 'thickness', 'speed', 'emptyColor', 'className']), y = (0, l.cx)('chakra-spinner', m), b = h( { display: 'inline-block', borderColor: 'currentColor', borderStyle: 'solid', borderRadius: '99999px', borderWidth: o, borderBottomColor: v, borderLeftColor: v, animation: p + ' ' + c + ' linear infinite', }, n, ) return f.createElement( u.m$.div, h({ ref: t, __css: b, className: y }, g), i && f.createElement(d.TX, null, i), ) }) c.Ts && (v.displayName = 'Spinner') var m = n(8554), g = n.n(m), y = n(8500) function b() { return (b = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var n = arguments[t] for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r]) } return e }).apply(this, arguments) } var [w, x] = (0, y.k)({ strict: !1, name: 'ButtonGroupContext' }), E = (0, o.G)((e, t) => { var { size: n, colorScheme: r, variant: i, className: o, spacing: a = '0.5rem', isAttached: s, isDisabled: c, } = e, d = (function (e, t) { if (null == e) return {} var n, r, i = {}, o = Object.keys(e) for (r = 0; r < o.length; r++) (n = o[r]), t.indexOf(n) >= 0 || (i[n] = e[n]) return i })(e, [ 'size', 'colorScheme', 'variant', 'className', 'spacing', 'isAttached', 'isDisabled', ]), h = (0, l.cx)('chakra-button__group', o), p = f.useMemo( () => ({ size: n, colorScheme: r, variant: i, isDisabled: c }), [n, r, i, c], ), v = { display: 'inline-flex' } return ( (v = b( {}, v, s ? { '> *:first-of-type:not(:last-of-type)': { borderEndRadius: 0 }, '> *:not(:first-of-type):not(:last-of-type)': { borderRadius: 0 }, '> *:not(:first-of-type):last-of-type': { borderStartRadius: 0 }, } : { '& > *:not(style) ~ *:not(style)': { marginStart: a } }, )), f.createElement( w, { value: p }, f.createElement(u.m$.div, b({ ref: t, role: 'group', __css: v, className: h }, d)), ) ) }) function k(e, t) { if (null == e) return {} var n, r, i = {}, o = Object.keys(e) for (r = 0; r < o.length; r++) (n = o[r]), t.indexOf(n) >= 0 || (i[n] = e[n]) return i } function _() { return (_ = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var n = arguments[t] for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r]) } return e }).apply(this, arguments) } c.Ts && (E.displayName = 'ButtonGroup') var T = (0, o.G)((e, t) => { var n, i = x(), o = (0, a.m)('Button', _({}, i, e)), c = (0, s.Lr)(e), { isDisabled: d = null == i ? void 0 : i.isDisabled, isLoading: h, isActive: p, isFullWidth: v, children: m, leftIcon: y, rightIcon: b, loadingText: w, iconSpacing: E = '0.5rem', type: T, spinner: S, spinnerPlacement: A = 'start', className: P, as: M, } = c, R = k(c, [ 'isDisabled', 'isLoading', 'isActive', 'isFullWidth', 'children', 'leftIcon', 'rightIcon', 'loadingText', 'iconSpacing', 'type', 'spinner', 'spinnerPlacement', 'className', 'as', ]), j = g()({}, null != (n = null == o ? void 0 : o._focus) ? n : {}, { zIndex: 1 }), D = _( { display: 'inline-flex', appearance: 'none', alignItems: 'center', justifyContent: 'center', userSelect: 'none', position: 'relative', whiteSpace: 'nowrap', verticalAlign: 'middle', outline: 'none', width: v ? '100%' : 'auto', }, o, !!i && { _focus: j }, ), { ref: L, type: N } = (function (e) { var [t, n] = f.useState(!e), r = f.useCallback((e) => { e && n('BUTTON' === e.tagName) }, []), i = t ? 'button' : void 0 return { ref: r, type: i } })(M) return f.createElement( u.m$.button, _( { disabled: d || h, ref: (0, r.l)(t, L), as: M, type: null != T ? T : N, 'data-active': (0, l.PB)(p), 'data-loading': (0, l.PB)(h), __css: D, className: (0, l.cx)('chakra-button', P), }, R, ), y && !h && f.createElement(O, { marginEnd: E }, y), h && 'start' === A && f.createElement( C, { className: 'chakra-button__spinner--start', label: w, placement: 'start' }, S, ), h ? w || f.createElement(u.m$.span, { opacity: 0 }, m) : m, h && 'end' === A && f.createElement( C, { className: 'chakra-button__spinner--end', label: w, placement: 'end' }, S, ), b && !h && f.createElement(O, { marginStart: E }, b), ) }) c.Ts && (T.displayName = 'Button') var O = (e) => { var { children: t, className: n } = e, r = k(e, ['children', 'className']), i = f.isValidElement(t) ? f.cloneElement(t, { 'aria-hidden': !0, focusable: !1 }) : t, o = (0, l.cx)('chakra-button__icon', n) return f.createElement( u.m$.span, _({ display: 'inline-flex', alignSelf: 'center', flexShrink: 0 }, r, { className: o }), i, ) } c.Ts && (O.displayName = 'ButtonIcon') var C = (e) => { var { label: t, placement: n, children: r = f.createElement(v, { color: 'currentColor', width: '1em', height: '1em', }), className: i, __css: o, } = e, a = k(e, ['label', 'placement', 'spacing', 'children', 'className', '__css']), s = (0, l.cx)('chakra-button__spinner', i), c = _( { display: 'flex', alignItems: 'center', position: t ? 'relative' : 'absolute', ['start' === n ? 'marginEnd' : 'marginStart']: t ? '0.5rem' : 0, fontSize: '1em', lineHeight: 'normal', }, o, ) return f.createElement(u.m$.div, _({ className: s }, a, { __css: c }), r) } c.Ts && (C.displayName = 'ButtonSpinner') }, 8420: function (e, t, n) { 'use strict' n.d(t, { h: function () { return u }, }) var r = n(63), i = n(3808), o = n(7294), a = n(155) function s() { return (s = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var n = arguments[t] for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r]) } return e }).apply(this, arguments) } var u = (0, r.G)((e, t) => { var { icon: n, children: r, isRound: i, 'aria-label': u } = e, l = (function (e, t) { if (null == e) return {} var n, r, i = {}, o = Object.keys(e) for (r = 0; r < o.length; r++) (n = o[r]), t.indexOf(n) >= 0 || (i[n] = e[n]) return i })(e, ['icon', 'children', 'isRound', 'aria-label']), c = n || r, d = o.isValidElement(c) ? o.cloneElement(c, { 'aria-hidden': !0, focusable: !1 }) : null return o.createElement( a.z, s({ padding: '0', borderRadius: i ? 'full' : void 0, ref: t, 'aria-label': u }, l), d, ) }) i.Ts && (u.displayName = 'IconButton') }, 2300: function (e, t, n) { 'use strict' var r = n(3782), i = n(3808), o = n(7294) function a() { return (a = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var n = arguments[t] for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r]) } return e }).apply(this, arguments) } var s = (e) => { var { type: t = 'checkbox', _hover: n, _invalid: i, _disabled: s, _focus: u, _checked: l, _child: c = { opacity: 0 }, _checkedAndChild: d = { opacity: 1 }, _checkedAndDisabled: f, _checkedAndFocus: h, _checkedAndHover: p, children: v, } = e, m = (function (e, t) { if (null == e) return {} var n, r, i = {}, o = Object.keys(e) for (r = 0; r < o.length; r++) (n = o[r]), t.indexOf(n) >= 0 || (i[n] = e[n]) return i })(e, [ 'type', '_hover', '_invalid', '_disabled', '_focus', '_checked', '_child', '_checkedAndChild', '_checkedAndDisabled', '_checkedAndFocus', '_checkedAndHover', 'children', ]), g = 'input[type=' + t + ']:checked:disabled + &', y = 'input[type=' + t + ']:checked:hover:not(:disabled) + &', b = 'input[type=' + t + ']:checked:focus + &', w = 'input[type=' + t + ']:disabled + &', x = 'input[type=' + t + ']:focus + &', E = 'input[type=' + t + ']:hover:not(:disabled):not(:checked) + &', k = 'input[type=' + t + ']:checked + &, input[type=' + t + '][aria-checked=mixed] + &', _ = 'input[type=' + t + '][aria-invalid=true] + &', T = '& > *' return o.createElement( r.m$.div, a({}, m, { 'aria-hidden': !0, __css: { display: 'inline-flex', alignItems: 'center', justifyContent: 'center', transitionProperty: 'common', transitionDuration: 'fast', flexShrink: 0, [x]: u, [E]: n, [w]: s, [_]: i, [g]: f, [b]: h, [y]: p, [T]: c, [k]: a({}, l, { [T]: d }), }, }), v, ) } i.Ts && (s.displayName = 'ControlBox') }, 1888: function (e, t, n) { 'use strict' n.d(t, { n: function () { return v }, }) var r = n(8500), i = n(2947), o = n(7294) function a(e) { return e.sort((e, t) => { var n = e.compareDocumentPosition(t) if (n & Node.DOCUMENT_POSITION_FOLLOWING || n & Node.DOCUMENT_POSITION_CONTAINED_BY) return -1 if (n & Node.DOCUMENT_POSITION_PRECEDING || n & Node.DOCUMENT_POSITION_CONTAINS) return 1 if ( n & Node.DOCUMENT_POSITION_DISCONNECTED || n & Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC ) throw Error('Cannot sort the given nodes.') return 0 }) } function s(e, t, n) { var r = e + 1 return n && r >= t && (r = 0), r } function u(e, t, n) { var r = e - 1 return n && r < 0 && (r = t), r } var l = 'undefined' !== typeof window ? o.useLayoutEffect : o.useEffect function c() { return (c = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var n = arguments[t] for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r]) } return e }).apply(this, arguments) } function d(e, t, n) { return ( t in e ? Object.defineProperty(e, t, { value: n, enumerable: !0, configurable: !0, writable: !0, }) : (e[t] = n), e ) } class f { constructor() { var e = this d(this, 'descendants', new Map()), d(this, 'register', (e) => { var t if (null != e) return 'object' == typeof (t = e) && 'nodeType' in t && t.nodeType === Node.ELEMENT_NODE ? this.registerNode(e) : (t) => { this.registerNode(t, e) } }), d(this, 'unregister', (e) => { this.descendants.delete(e) var t = a(Array.from(this.descendants.keys())) this.assignIndex(t) }), d(this, 'destroy', () => { this.descendants.clear() }), d(this, 'assignIndex', (e) => { this.descendants.forEach((t) => { var n = e.indexOf(t.node) ;(t.index = n), (t.node.dataset.index = t.index.toString()) }) }), d(this, 'count', () => this.descendants.size), d(this, 'enabledCount', () => this.enabledValues().length), d(this, 'values', () => Array.from(this.descendants.values()).sort((e, t) => e.index - t.index), ), d(this, 'enabledValues', () => this.values().filter((e) => !e.disabled)), d(this, 'item', (e) => { if (0 !== this.count()) return this.values()[e] }), d(this, 'enabledItem', (e) => { if (0 !== this.enabledCount()) return this.enabledValues()[e] }), d(this, 'first', () => this.item(0)), d(this, 'firstEnabled', () => this.enabledItem(0)), d(this, 'last', () => this.item(this.descendants.size - 1)), d(this, 'lastEnabled', () => { var e = this.enabledValues().length - 1 return this.enabledItem(e) }), d(this, 'indexOf', (e) => { var t, n return e && null != (t = null == (n = this.descendants.get(e)) ? void 0 : n.index) ? t : -1 }), d(this, 'enabledIndexOf', (e) => null == e ? -1 : this.enabledValues().findIndex((t) => t.node.isSameNode(e)), ), d(this, 'next', function (t, n) { void 0 === n && (n = !0) var r = s(t, e.count(), n) return e.item(r) }), d(this, 'nextEnabled', function (t, n) { void 0 === n && (n = !0) var r = e.item(t) if (r) { var i = s(e.enabledIndexOf(r.node), e.enabledCount(), n) return e.enabledItem(i) } }), d(this, 'prev', function (t, n) { void 0 === n && (n = !0) var r = u(t, e.count() - 1, n) return e.item(r) }), d(this, 'prevEnabled', function (t, n) { void 0 === n && (n = !0) var r = e.item(t) if (r) { var i = u(e.enabledIndexOf(r.node), e.enabledCount() - 1, n) return e.enabledItem(i) } }), d(this, 'registerNode', (e, t) => { if (e && !this.descendants.has(e)) { var n = a(Array.from(this.descendants.keys()).concat(e)) null != t && t.disabled && (t.disabled = !!t.disabled) var r = c({ node: e, index: -1 }, t) this.descendants.set(e, r), this.assignIndex(n) } }) } } var [h, p] = (0, r.k)({ name: 'DescendantsProvider', errorMessage: 'useDescendantsContext must be used within DescendantsProvider', }) function v() { return [ h, () => p(), () => (function () { var [e] = (0, o.useState)(() => new f()) return l(() => () => e.destroy()), e })(), (e) => (function (e) { var t = p(), [n, r] = (0, o.useState)(-1), a = (0, o.useRef)(null) l( () => () => { a.current && t.unregister(a.current) }, [], ), l(() => { if (a.current) { var e = Number(a.current.dataset.index) n == e || Number.isNaN(e) || r(e) } }) var s = e ? t.register(e) : t.register return { descendants: t, index: n, enabledIndex: t.enabledIndexOf(a.current), register: (0, i.l)(s, a), } })(e), ] } }, 639: function (e, t, n) { 'use strict' n.d(t, { k: function () { return i }, }) var r = n(7294) function i(e) { void 0 === e && (e = !1) var [t, n] = (0, r.useState)(e) return [ t, { on: (0, r.useCallback)(() => { n(!0) }, []), off: (0, r.useCallback)(() => { n(!1) }, []), toggle: (0, r.useCallback)(() => { n((e) => !e) }, []), }, ] } }, 762: function (e, t, n) { 'use strict' n.d(t, { W: function () { return o }, }) var r = n(7294), i = n(8327) function o(e, t) { void 0 === t && (t = []) var n = r.useRef(e) return ( (0, i.G)(() => { n.current = e }), r.useCallback(function () { for (var e = arguments.length, t = new Array(e), r = 0; r < e; r++) t[r] = arguments[r] return null == n.current ? void 0 : n.current(...t) }, t) ) } }, 1034: function (e, t, n) { 'use strict' n.d(t, { p: function () { return a }, T: function () { return s }, }) var r = n(658), i = n(7294), o = n(762) function a(e, t) { var n = void 0 !== e return [n, n && 'undefined' !== typeof e ? e : t] } function s(e) { var { value: t, defaultValue: n, onChange: a, shouldUpdate: s = (e, t) => e !== t } = e, u = (0, o.W)(a), l = (0, o.W)(s), [c, d] = i.useState(n), f = void 0 !== t, h = f ? t : c, p = i.useCallback( (e) => { var t = (0, r.Pu)(e, h) l(h, t) && (f || d(t), u(t)) }, [f, u, h, l], ) return [h, p] } }, 4860: function (e, t, n) { 'use strict' n.d(t, { q: function () { return u }, }) var r = n(658), i = n(7294), o = n(1034), a = n(4577) function s() { return (s = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var n = arguments[t] for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r]) } return e }).apply(this, arguments) } function u(e) { void 0 === e && (e = {}) var { onClose: t, onOpen: n, isOpen: u, id: l } = e, [c, d] = i.useState(e.defaultIsOpen || !1), [f, h] = (0, o.p)(u, c), p = (0, a.Me)(l, 'disclosure'), v = i.useCallback(() => { f || d(!1), null == t || t() }, [f, t]), m = i.useCallback(() => { f || d(!0), null == n || n() }, [f, n]), g = i.useCallback(() => { ;(h ? v : m)() }, [h, m, v]) return { isOpen: !!h, onOpen: m, onClose: v, onToggle: g, isControlled: f, getButtonProps: function (e) { return ( void 0 === e && (e = {}), s({}, e, { 'aria-expanded': 'true', 'aria-controls': p, onClick: (0, r.v0)(e.onClick, g), }) ) }, getDisclosureProps: function (e) { return void 0 === e && (e = {}), s({}, e, { hidden: !h, id: p }) }, } } }, 4941: function (e, t, n) { 'use strict' n.d(t, { O: function () { return a }, }) var r = n(658), i = n(7294), o = n(762) function a(e, t, n, a) { var s = (0, o.W)(t) return ( i.useEffect(() => { var t, i = null != (t = (0, r.Pu)(n)) ? t : document return ( i.addEventListener(e, s, a), () => { i.removeEventListener(e, s, a) } ) }, [e, n, a, s]), () => { var t ;(null != (t = (0, r.Pu)(n)) ? t : document).removeEventListener(e, s, a) } ) } }, 8327: function (e, t, n) { 'use strict' n.d(t, { G: function () { return i }, }) var r = n(7294), i = n(4461).jU ? r.useLayoutEffect : r.useEffect }, 7581: function (e, t, n) { 'use strict' n.d(t, { z: function () { return i }, }) var r = n(7294) function i(e, t) { return void 0 === t && (t = []), r.useEffect(() => () => e(), t) } }, 2653: function (e, t, n) { 'use strict' n.d(t, { r: function () { return i }, }) var r = n(7294), i = (e, t) => { var n = r.useRef(!1) return ( r.useEffect(() => { if (n.current) return e() n.current = !0 }, t), n.current ) } }, 9867: function (e, t, n) { 'use strict' n.d(t, { I: function () { return u }, }) var r = n(63), i = n(3808), o = n(7294), a = n(58) function s() { return (s = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var n = arguments[t] for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r]) } return e }).apply(this, arguments) } function u(e) { var { viewBox: t = '0 0 24 24', d: n, path: u, displayName: l, defaultProps: c = {} } = e, d = (0, r.G)((e, r) => o.createElement( a.J, s({ ref: r, viewBox: t }, c, e), null != u ? u : o.createElement('path', { fill: 'currentColor', d: n }), ), ) return i.Ts && (d.displayName = l), d } }, 58: function (e, t, n) { 'use strict' n.d(t, { J: function () { return c }, }) var r = n(63), i = n(3782), o = n(4461), a = n(3808), s = n(7294) function u() { return (u = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var n = arguments[t] for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r]) } return e }).apply(this, arguments) } var l = { path: s.createElement( 'g', { stroke: 'currentColor', strokeWidth: '1.5' }, s.createElement('path', { strokeLinecap: 'round', fill: 'none', d: 'M9,9a3,3,0,1,1,4,2.829,1.5,1.5,0,0,0-1,1.415V14.25', }), s.createElement('path', { fill: 'currentColor', strokeLinecap: 'round', d: 'M12,17.25a.375.375,0,1,0,.375.375A.375.375,0,0,0,12,17.25h0', }), s.createElement('circle', { fill: 'none', strokeMiterlimit: '10', cx: '12', cy: '12', r: '11.25', }), ), viewBox: '0 0 24 24', }, c = (0, r.G)((e, t) => { var { as: n, viewBox: r, color: a = 'currentColor', focusable: c = !1, children: d, className: f, __css: h, } = e, p = (function (e, t) { if (null == e) return {} var n, r, i = {}, o = Object.keys(e) for (r = 0; r < o.length; r++) (n = o[r]), t.indexOf(n) >= 0 || (i[n] = e[n]) return i })(e, ['as', 'viewBox', 'color', 'focusable', 'children', 'className', '__css']), v = { ref: t, focusable: c, className: (0, o.cx)('chakra-icon', f), __css: u( { w: '1em', h: '1em', display: 'inline-block', lineHeight: '1em', flexShrink: 0, color: a, }, h, ), }, m = null != r ? r : l.viewBox if (n && 'string' !== typeof n) return s.createElement(i.m$.svg, u({ as: n }, v, p)) var g = null != d ? d : l.path return s.createElement(i.m$.svg, u({ verticalAlign: 'middle', viewBox: m }, v, p), g) }) a.Ts && (c.displayName = 'Icon') }, 3441: function (e, t, n) { 'use strict' n.d(t, { L: function () { return o }, }) var r = n(9867), i = n(7294), o = (0, r.I)({ displayName: 'ArrowRightIcon', path: i.createElement( 'g', { fill: 'currentColor' }, i.createElement('path', { d: 'M13.584,12a2.643,2.643,0,0,1-.775,1.875L3.268,23.416a1.768,1.768,0,0,1-2.5-2.5l8.739-8.739a.25.25,0,0,0,0-.354L.768,3.084a1.768,1.768,0,0,1,2.5-2.5l9.541,9.541A2.643,2.643,0,0,1,13.584,12Z', }), i.createElement('path', { d: 'M23.75,12a2.643,2.643,0,0,1-.775,1.875l-9.541,9.541a1.768,1.768,0,0,1-2.5-2.5l8.739-8.739a.25.25,0,0,0,0-.354L10.934,3.084a1.768,1.768,0,0,1,2.5-2.5l9.541,9.541A2.643,2.643,0,0,1,23.75,12Z', }), ), }) }, 6569: function (e, t, n) { 'use strict' n.d(t, { v: function () { return r }, }) var r = (0, n(9867).I)({ displayName: 'ChevronDownIcon', d: 'M16.59 8.59L12 13.17 7.41 8.59 6 10l6 6 6-6z', }) }, 9641: function (e, t, n) { 'use strict' n.d(t, { T: function () { return r }, }) var r = (0, n(9867).I)({ displayName: 'CloseIcon', d: 'M.439,21.44a1.5,1.5,0,0,0,2.122,2.121L11.823,14.3a.25.25,0,0,1,.354,0l9.262,9.263a1.5,1.5,0,1,0,2.122-2.121L14.3,12.177a.25.25,0,0,1,0-.354l9.263-9.262A1.5,1.5,0,0,0,21.439.44L12.177,9.7a.25.25,0,0,1-.354,0L2.561.44A1.5,1.5,0,0,0,.439,2.561L9.7,11.823a.25.25,0,0,1,0,.354Z', }) }, 4189: function (e, t, n) { 'use strict' n.d(t, { h: function () { return o }, }) var r = n(9867), i = n(7294), o = (0, r.I)({ displayName: 'InfoOutlineIcon', path: i.createElement( 'g', { fill: 'currentColor', stroke: 'currentColor', strokeLinecap: 'square', strokeWidth: '2', }, i.createElement('circle', { cx: '12', cy: '12', fill: 'none', r: '11', stroke: 'currentColor', }), i.createElement('line', { fill: 'none', x1: '11.959', x2: '11.959', y1: '11', y2: '17', }), i.createElement('circle', { cx: '11.959', cy: '7', r: '1', stroke: 'none' }), ), }) }, 7546: function (e, t, n) { 'use strict' n.d(t, { n: function () { return o }, }) var r = n(9867), i = n(7294), o = (0, r.I)({ displayName: 'RepeatIcon', path: i.createElement( 'g', { fill: 'currentColor' }, i.createElement('path', { d: 'M10.319,4.936a7.239,7.239,0,0,1,7.1,2.252,1.25,1.25,0,1,0,1.872-1.657A9.737,9.737,0,0,0,9.743,2.5,10.269,10.269,0,0,0,2.378,9.61a.249.249,0,0,1-.271.178l-1.033-.13A.491.491,0,0,0,.6,9.877a.5.5,0,0,0-.019.526l2.476,4.342a.5.5,0,0,0,.373.248.43.43,0,0,0,.062,0,.5.5,0,0,0,.359-.152l3.477-3.593a.5.5,0,0,0-.3-.844L5.15,10.172a.25.25,0,0,1-.2-.333A7.7,7.7,0,0,1,10.319,4.936Z', }), i.createElement('path', { d: 'M23.406,14.1a.5.5,0,0,0,.015-.526l-2.5-4.329A.5.5,0,0,0,20.546,9a.489.489,0,0,0-.421.151l-3.456,3.614a.5.5,0,0,0,.3.842l1.848.221a.249.249,0,0,1,.183.117.253.253,0,0,1,.023.216,7.688,7.688,0,0,1-5.369,4.9,7.243,7.243,0,0,1-7.1-2.253,1.25,1.25,0,1,0-1.872,1.656,9.74,9.74,0,0,0,9.549,3.03,10.261,10.261,0,0,0,7.369-7.12.251.251,0,0,1,.27-.179l1.058.127a.422.422,0,0,0,.06,0A.5.5,0,0,0,23.406,14.1Z', }), ), }) }, 3986: function (e, t, n) { 'use strict' n.d(t, { A: function () { return o }, }) var r = n(9867), i = n(7294), o = (0, r.I)({ displayName: 'RepeatClockIcon', path: i.createElement( 'g', { fill: 'currentColor' }, i.createElement('path', { d: 'M12.965,6a1,1,0,0,0-1,1v5.5a1,1,0,0,0,1,1h5a1,1,0,0,0,0-2h-3.75a.25.25,0,0,1-.25-.25V7A1,1,0,0,0,12.965,6Z', }), i.createElement('path', { d: 'M12.567,1.258A10.822,10.822,0,0,0,2.818,8.4a.25.25,0,0,1-.271.163L.858,8.309a.514.514,0,0,0-.485.213.5.5,0,0,0-.021.53l2.679,4.7a.5.5,0,0,0,.786.107l3.77-3.746a.5.5,0,0,0-.279-.85L5.593,9.007a.25.25,0,0,1-.192-.35,8.259,8.259,0,1,1,7.866,11.59,1.25,1.25,0,0,0,.045,2.5h.047a10.751,10.751,0,1,0-.792-21.487Z', }), ), }) }, 3924: function (e, t, n) { 'use strict' n.d(t, { e: function () { return r }, }) var r = (0, n(9867).I)({ viewBox: '0 0 14 14', d: 'M14,7.77 L14,6.17 L12.06,5.53 L11.61,4.44 L12.49,2.6 L11.36,1.47 L9.55,2.38 L8.46,1.93 L7.77,0.01 L6.17,0.01 L5.54,1.95 L4.43,2.4 L2.59,1.52 L1.46,2.65 L2.37,4.46 L1.92,5.55 L0,6.23 L0,7.82 L1.94,8.46 L2.39,9.55 L1.51,11.39 L2.64,12.52 L4.45,11.61 L5.54,12.06 L6.23,13.98 L7.82,13.98 L8.45,12.04 L9.56,11.59 L11.4,12.47 L12.53,11.34 L11.61,9.53 L12.08,8.44 L14,7.75 L14,7.77 Z M7,10 C5.34,10 4,8.66 4,7 C4,5.34 5.34,4 7,4 C8.66,4 10,5.34 10,7 C10,8.66 8.66,10 7,10 Z', displayName: 'SettingsIcon', }) }, 8017: function (e, t, n) { 'use strict' n.d(t, { xu: function () { return l }, }) var r = n(3782), i = n(63), o = n(3808), a = n(7294) function s() { return (s = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var n = arguments[t] for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r]) } return e }).apply(this, arguments) } function u(e, t) { if (null == e) return {} var n, r, i = {}, o = Object.keys(e) for (r = 0; r < o.length; r++) (n = o[r]), t.indexOf(n) >= 0 || (i[n] = e[n]) return i } var l = (0, r.m$)('div') o.Ts && (l.displayName = 'Box') var c = (0, i.G)((e, t) => { var { size: n, centerContent: r = !0 } = e, i = u(e, ['size', 'centerContent']), o = r ? { display: 'flex', alignItems: 'center', justifyContent: 'center' } : {} return a.createElement( l, s({ ref: t, boxSize: n, __css: s({}, o, { flexShrink: 0, flexGrow: 0 }) }, i), ) }) o.Ts && (c.displayName = 'Square') var d = (0, i.G)((e, t) => { var { size: n } = e, r = u(e, ['size']) return a.createElement(c, s({ size: n, ref: t, borderRadius: '9999px' }, r)) }) o.Ts && (d.displayName = 'Circle') }, 4096: function (e, t, n) { 'use strict' n.d(t, { k: function () { return u }, }) var r = n(63), i = n(3782), o = n(3808), a = n(7294) function s() { return (s = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var n = arguments[t] for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r]) } return e }).apply(this, arguments) } var u = (0, r.G)((e, t) => { var { direction: n, align: r, justify: o, wrap: u, basis: l, grow: c, shrink: d } = e, f = (function (e, t) { if (null == e) return {} var n, r, i = {}, o = Object.keys(e) for (r = 0; r < o.length; r++) (n = o[r]), t.indexOf(n) >= 0 || (i[n] = e[n]) return i })(e, ['direction', 'align', 'justify', 'wrap', 'basis', 'grow', 'shrink']), h = { display: 'flex', flexDirection: n, alignItems: r, justifyContent: o, flexWrap: u, flexBasis: l, flexGrow: c, flexShrink: d, } return a.createElement(i.m$.div, s({ ref: t, __css: h }, f)) }) o.Ts && (u.displayName = 'Flex') }, 336: function (e, t, n) { 'use strict' n.d(t, { X: function () { return d }, }) var r = n(63), i = n(2326), o = n(5284), a = n(3782), s = n(4461), u = n(3808), l = n(7294) function c() { return (c = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var n = arguments[t] for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r]) } return e }).apply(this, arguments) } var d = (0, r.G)((e, t) => { var n = (0, i.m)('Heading', e), r = (function (e, t) { if (null == e) return {} var n, r, i = {}, o = Object.keys(e) for (r = 0; r < o.length; r++) (n = o[r]), t.indexOf(n) >= 0 || (i[n] = e[n]) return i })((0, o.Lr)(e), ['className']) return l.createElement( a.m$.h2, c({ ref: t, className: (0, s.cx)('chakra-heading', e.className) }, r, { __css: n }), ) }) u.Ts && (d.displayName = 'Heading') }, 2026: function (e, t, n) { 'use strict' n.d(t, { cX: function () { return h }, gC: function () { return g }, }) var r = n(3782), i = n(63), o = n(4461), a = n(3808), s = n(4255), u = n(7294), l = n(5505) Object.freeze(['base', 'sm', 'md', 'lg', 'xl', '2xl']) function c(e, t) { return (0, a.kJ)(e) ? e.map((e) => (null === e ? null : t(e))) : (0, a.Kn)(e) ? (0, l.Yd)(e).reduce((n, r) => ((n[r] = t(e[r])), n), {}) : null != e ? t(e) : null } var d = '& > *:not(style) ~ *:not(style)' function f() { return (f = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var n = arguments[t] for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r]) } return e }).apply(this, arguments) } var h = (e) => u.createElement( r.m$.div, f({ className: 'chakra-stack__divider' }, e, { __css: f({}, e.__css, { borderWidth: 0, alignSelf: 'stretch', borderColor: 'inherit', width: 'auto', height: 'auto', }), }), ), p = (e) => u.createElement( r.m$.div, f({ className: 'chakra-stack__item' }, e, { __css: f({ display: 'inline-block', flex: '0 0 auto', minWidth: 0 }, e.__css), }), ), v = (0, i.G)((e, t) => { var { isInline: n, direction: i, align: a, justify: l, spacing: h = '0.5rem', wrap: v, children: m, divider: g, className: y, shouldWrapChildren: b, } = e, w = (function (e, t) { if (null == e) return {} var n, r, i = {}, o = Object.keys(e) for (r = 0; r < o.length; r++) (n = o[r]), t.indexOf(n) >= 0 || (i[n] = e[n]) return i })(e, [ 'isInline', 'direction', 'align', 'justify', 'spacing', 'wrap', 'children', 'divider', 'className', 'shouldWrapChildren', ]), x = n ? 'row' : null != i ? i : 'column', E = u.useMemo( () => (function (e) { var { spacing: t, direction: n } = e, r = { column: { marginTop: t, marginEnd: 0, marginBottom: 0, marginStart: 0 }, row: { marginTop: 0, marginEnd: 0, marginBottom: 0, marginStart: t }, 'column-reverse': { marginTop: 0, marginEnd: 0, marginBottom: t, marginStart: 0, }, 'row-reverse': { marginTop: 0, marginEnd: t, marginBottom: 0, marginStart: 0, }, } return { flexDirection: n, [d]: c(n, (e) => r[e]) } })({ direction: x, spacing: h }), [x, h], ), k = u.useMemo( () => (function (e) { var { spacing: t, direction: n } = e, r = { column: { my: t, mx: 0, borderLeftWidth: 0, borderBottomWidth: '1px' }, 'column-reverse': { my: t, mx: 0, borderLeftWidth: 0, borderBottomWidth: '1px', }, row: { mx: t, my: 0, borderLeftWidth: '1px', borderBottomWidth: 0 }, 'row-reverse': { mx: t, my: 0, borderLeftWidth: '1px', borderBottomWidth: 0 }, } return { '&': c(n, (e) => r[e]) } })({ spacing: h, direction: x }), [h, x], ), _ = !!g, T = !b && !_, O = (0, s.W)(m), C = T ? O : O.map((e, t) => { var n = t + 1 === O.length, r = b ? u.createElement(p, { key: t }, e) : e if (!_) return r var i = n ? null : u.cloneElement(g, { __css: k }) return u.createElement(u.Fragment, { key: t }, r, i) }), S = (0, o.cx)('chakra-stack', y) return u.createElement( r.m$.div, f( { ref: t, display: 'flex', alignItems: a, justifyContent: l, flexDirection: E.flexDirection, flexWrap: v, className: S, __css: _ ? {} : { [d]: E[d] }, }, w, ), C, ) }) a.Ts && (v.displayName = 'Stack') var m = (0, i.G)((e, t) => u.createElement(v, f({ align: 'center' }, e, { direction: 'row', ref: t })), ) a.Ts && (m.displayName = 'HStack') var g = (0, i.G)((e, t) => u.createElement(v, f({ align: 'center' }, e, { direction: 'column', ref: t })), ) a.Ts && (g.displayName = 'VStack') }, 4115: function (e, t, n) { 'use strict' n.d(t, { x: function () { return f }, }) var r = n(63), i = n(2326), o = n(5284), a = n(3782), s = n(5505), u = n(4461), l = n(3808), c = n(7294) function d() { return (d = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var n = arguments[t] for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r]) } return e }).apply(this, arguments) } var f = (0, r.G)((e, t) => { var n = (0, i.m)('Text', e), r = (function (e, t) { if (null == e) return {} var n, r, i = {}, o = Object.keys(e) for (r = 0; r < o.length; r++) (n = o[r]), t.indexOf(n) >= 0 || (i[n] = e[n]) return i })((0, o.Lr)(e), ['className', 'align', 'decoration', 'casing']), l = (0, s.YU)({ textAlign: e.align, textDecoration: e.decoration, textTransform: e.casing, }) return c.createElement( a.m$.p, d({ ref: t, className: (0, u.cx)('chakra-text', e.className) }, l, r, { __css: n }), ) }) l.Ts && (f.displayName = 'Text') }, 8235: function (e, t, n) { 'use strict' n.d(t, { v2: function () { return W }, j2: function () { return Z }, sN: function () { return J }, ii: function () { return te }, qy: function () { return Y }, __: function () { return ne }, }) var r = n(2326), i = n(5284), o = n(9676), a = n(63), s = n(3782), u = n(658), l = n(3808), c = n(4461), d = n(7554), f = n(7294), h = n(2947) function p() { return (p = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var n = arguments[t] for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r]) } return e }).apply(this, arguments) } function v(e) { var t = e.target, { tagName: n, isContentEditable: r } = t return 'INPUT' !== n && 'TEXTAREA' !== n && !0 !== r } function m(e) { void 0 === e && (e = {}) var { ref: t, isDisabled: n, isFocusable: r, clickOnEnter: i = !0, clickOnSpace: o = !0, onMouseDown: a, onMouseUp: s, onClick: u, onKeyDown: l, onKeyUp: d, tabIndex: m, onMouseOver: g, onMouseLeave: y, } = e, b = (function (e, t) { if (null == e) return {} var n, r, i = {}, o = Object.keys(e) for (r = 0; r < o.length; r++) (n = o[r]), t.indexOf(n) >= 0 || (i[n] = e[n]) return i })(e, [ 'ref', 'isDisabled', 'isFocusable', 'clickOnEnter', 'clickOnSpace', 'onMouseDown', 'onMouseUp', 'onClick', 'onKeyDown', 'onKeyUp', 'tabIndex', 'onMouseOver', 'onMouseLeave', ]), [w, x] = f.useState(!0), [E, k] = f.useState(!1), _ = (function () { var e = f.useRef(new Map()), t = e.current, n = f.useCallback((t, n, r, i) => { e.current.set(r, { type: n, el: t, options: i }), t.addEventListener(n, r, i) }, []), r = f.useCallback((t, n, r, i) => { t.removeEventListener(n, r, i), e.current.delete(r) }, []) return ( f.useEffect( () => () => { t.forEach((e, t) => { r(e.el, e.type, t, e.options) }) }, [r, t], ), { add: n, remove: r } ) })(), T = w ? m : m || 0, O = n && !r, C = f.useCallback( (e) => { if (n) return e.stopPropagation(), void e.preventDefault() e.currentTarget.focus(), null == u || u(e) }, [n, u], ), S = f.useCallback( (e) => { E && v(e) && (e.preventDefault(), e.stopPropagation(), k(!1), _.remove(document, 'keyup', S, !1)) }, [E, _], ), A = f.useCallback( (e) => { if ( (null == l || l(e), !(n || e.defaultPrevented || e.metaKey) && v(e.nativeEvent) && !w) ) { var t = i && 'Enter' === e.key if ((o && ' ' === e.key && (e.preventDefault(), k(!0)), t)) e.preventDefault(), e.currentTarget.click() _.add(document, 'keyup', S, !1) } }, [n, w, l, i, o, _, S], ), P = f.useCallback( (e) => { ;(null == d || d(e), n || e.defaultPrevented || e.metaKey) || (v(e.nativeEvent) && !w && o && ' ' === e.key && (e.preventDefault(), k(!1), e.currentTarget.click())) }, [o, w, n, d], ), M = f.useCallback( (e) => { 0 === e.button && (k(!1), _.remove(document, 'mouseup', M, !1)) }, [_], ), R = f.useCallback( (e) => { if (!(0, c.dO)(e)) { if (n) return e.stopPropagation(), void e.preventDefault() w || k(!0), e.currentTarget.focus({ preventScroll: !0 }), _.add(document, 'mouseup', M, !1), null == a || a(e) } }, [n, w, a, _, M], ), j = f.useCallback( (e) => { ;(0, c.dO)(e) || (w || k(!1), null == s || s(e)) }, [s, w], ), D = f.useCallback( (e) => { n ? e.preventDefault() : null == g || g(e) }, [n, g], ), L = f.useCallback( (e) => { E && (e.preventDefault(), k(!1)), null == y || y(e) }, [E, y], ), N = (0, h.l)(t, (e) => { e && 'BUTTON' !== e.tagName && x(!1) }) return p( {}, b, w ? { ref: N, type: 'button', 'aria-disabled': O ? void 0 : n, disabled: O, onClick: C, onMouseDown: a, onMouseUp: s, onKeyUp: d, onKeyDown: l, onMouseOver: g, onMouseLeave: y, } : { ref: N, role: 'button', 'data-active': (0, c.PB)(E), 'aria-disabled': n ? 'true' : void 0, tabIndex: O ? void 0 : T, onClick: C, onMouseDown: R, onMouseUp: j, onKeyUp: P, onKeyDown: A, onMouseOver: D, onMouseLeave: L, }, ) } var g = n(1888), y = n(4860), b = n(762) function w(e, t) { var n, r = e.target if (e.button > 0) return !1 if (r && !(0, c.lZ)(r).body.contains(r)) return !1 return !(null != (n = t.current) && n.contains(r)) } var x = n(2653), E = n(7768), k = n(7248) function _(e, t) { var { shouldFocus: n, visible: r, focusRef: i } = t, o = n && !r ;(0, x.r)(() => { if ( o && !(function (e) { var t = e.current if (!t) return !1 var n = (0, c.vY)(t) return !!n && !(0, c.r3)(t, n) && !!(0, E.Wq)(n) })(e) ) { var t = (null == i ? void 0 : i.current) || e.current t && (0, k.T)(t, { nextTick: !0 }) } }, [o, e, i]) } var T = n(4577), O = n(7581) function C(e) { void 0 === e && (e = {}) var { timeout: t = 300, preventDefault: n = () => !0 } = e, [r, i] = f.useState([]), o = f.useRef(), a = () => { o.current && (clearTimeout(o.current), (o.current = null)) } return ( f.useEffect(() => a, []), function (e) { return (s) => { if ('Backspace' === s.key) { var u = [...r] return u.pop(), void i(u) } if ( (function (e) { var { key: t } = e return 1 === t.length || (t.length > 1 && /[^a-zA-Z0-9]/.test(t)) })(s) ) { var l = r.concat(s.key) n(s) && (s.preventDefault(), s.stopPropagation()), i(l), e(l.join('')), a(), (o.current = setTimeout(() => { i([]), (o.current = null) }, t)) } } } ) } var S = n(1034), A = n(8931), P = n(8500), M = n(4255), R = n(7277) function j() { return (j = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var n = arguments[t] for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r]) } return e }).apply(this, arguments) } function D(e, t) { if (null == e) return {} var n, r, i = {}, o = Object.keys(e) for (r = 0; r < o.length; r++) (n = o[r]), t.indexOf(n) >= 0 || (i[n] = e[n]) return i } var [L, N, I, z] = (0, g.n)(), [H, B] = (0, P.k)({ strict: !1, name: 'MenuContext' }) function F(e) { void 0 === e && (e = {}) var { id: t, closeOnSelect: n = !0, closeOnBlur: r = !0, autoSelect: i = !0, isLazy: o, isOpen: a, defaultIsOpen: s, onClose: u, onOpen: l, placement: d = 'bottom-start', lazyBehavior: h = 'unmount', computePositionOnMount: p, } = e, v = D(e, [ 'id', 'closeOnSelect', 'closeOnBlur', 'autoSelect', 'isLazy', 'isOpen', 'defaultIsOpen', 'onClose', 'onOpen', 'placement', 'lazyBehavior', 'computePositionOnMount', ]), { isOpen: m, onOpen: g, onClose: E, onToggle: C, } = (0, y.q)({ isOpen: a, defaultIsOpen: s, onClose: u, onOpen: l }), S = f.useRef(null), P = f.useRef(null) !(function (e) { var { ref: t, handler: n } = e, r = (0, b.W)(n), i = (0, f.useRef)({ isPointerDown: !1, ignoreEmulatedMouseEvents: !1 }).current ;(0, f.useEffect)(() => { var e = (e) => { w(e, t) && (i.isPointerDown = !0) }, o = (e) => { i.ignoreEmulatedMouseEvents ? (i.ignoreEmulatedMouseEvents = !1) : i.isPointerDown && n && w(e, t) && ((i.isPointerDown = !1), r(e)) }, a = (e) => { ;(i.ignoreEmulatedMouseEvents = !0), n && i.isPointerDown && w(e, t) && ((i.isPointerDown = !1), r(e)) }, s = (0, c.lZ)(t.current) return ( s.addEventListener('mousedown', e, !0), s.addEventListener('mouseup', o, !0), s.addEventListener('touchstart', e, !0), s.addEventListener('touchend', a, !0), () => { s.removeEventListener('mousedown', e, !0), s.removeEventListener('mouseup', o, !0), s.removeEventListener('touchstart', e, !0), s.removeEventListener('touchend', a, !0) } ) }, [n, t, r, i]) })({ ref: S, handler: (e) => { var t !m || !r || (null != (t = P.current) && t.contains(e.target)) || E() }, }) var M = (0, A.D)(j({}, v, { enabled: m || p, placement: d })), [R, L] = f.useState(-1), N = I() ;(0, x.r)(() => { m || L(-1) }, [m]), _(S, { focusRef: P, visible: m, shouldFocus: !0 }) var [z, H] = (0, T.ZS)(t, 'menu-button', 'menu-list'), B = f.useCallback(() => { g(), (0, k.T)(S.current, { nextTick: !0, selectTextIfInput: !1 }) }, [g, S]), F = f.useRef(new Set([])) return ( (0, O.z)(() => { F.current.forEach((e) => clearTimeout(e)), F.current.clear() }), { openAndFocusMenu: B, openAndFocusFirstItem: f.useCallback(() => { g() var e = setTimeout(() => { var e = N.firstEnabled() e && L(e.index) }) F.current.add(e) }, [g, L, N]), openAndFocusLastItem: f.useCallback(() => { g() var e = setTimeout(() => { var e = N.lastEnabled() e && L(e.index) }) F.current.add(e) }, [g, L, N]), onTransitionEnd: f.useCallback(() => { var e, t, n = (0, c.lZ)(S.current), r = null == (e = S.current) ? void 0 : e.contains(n.activeElement) if (m && !r) { var i = null == (t = N.item(R)) ? void 0 : t.node i && (0, k.T)(i, { selectTextIfInput: !1 }) } }, [m, R, N]), descendants: N, popper: M, buttonId: z, menuId: H, forceUpdate: M.forceUpdate, orientation: 'vertical', isOpen: m, onToggle: C, onOpen: g, onClose: E, menuRef: S, buttonRef: P, focusedIndex: R, closeOnSelect: n, closeOnBlur: r, autoSelect: i, setFocusedIndex: L, isLazy: o, lazyBehavior: h, } ) } function V(e) { var t return ( e instanceof HTMLElement && !(null == (t = e.getAttribute('role')) || !t.startsWith('menuitem')) ) } function U(e, t) { void 0 === e && (e = {}), void 0 === t && (t = null) var { onMouseEnter: n, onMouseMove: r, onMouseLeave: i, onClick: o, isDisabled: a, isFocusable: s, closeOnSelect: u, } = e, l = D(e, [ 'onMouseEnter', 'onMouseMove', 'onMouseLeave', 'onClick', 'isDisabled', 'isFocusable', 'closeOnSelect', ]), c = B(), { setFocusedIndex: d, focusedIndex: p, closeOnSelect: v, onClose: g, menuRef: y, isOpen: b, menuId: w, } = c, _ = f.useRef(null), O = w + '-menuitem-' + (0, T.Me)(), { index: C, register: S } = z({ disabled: a && !s }), A = f.useCallback( (e) => { null == n || n(e), a || d(C) }, [d, C, a, n], ), P = f.useCallback( (e) => { null == r || r(e), _.current && !(0, E.H9)(_.current) && A(e) }, [A, r], ), M = f.useCallback( (e) => { null == i || i(e), a || d(-1) }, [d, a, i], ), R = f.useCallback( (e) => { null == o || o(e), V(e.currentTarget) && (null != u ? u : v) && g() }, [g, o, v, u], ), L = C === p, N = a && !s return ( (0, x.r)(() => { b && (L && !N && _.current ? (0, k.T)(_.current, { nextTick: !0, selectTextIfInput: !1 }) : y.current && !(0, E.H9)(y.current) && (0, k.T)(y.current)) }, [L, N, y, b]), j( {}, l, m({ onClick: R, onMouseEnter: A, onMouseMove: P, onMouseLeave: M, ref: (0, h.l)(S, _, t), isDisabled: a, isFocusable: s, }), { id: O, role: 'menuitem', tabIndex: L ? 0 : -1 }, ) ) } function G() { return (G = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var n = arguments[t] for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r]) } return e }).apply(this, arguments) } function q(e, t) { if (null == e) return {} var n, r, i = {}, o = Object.keys(e) for (r = 0; r < o.length; r++) (n = o[r]), t.indexOf(n) >= 0 || (i[n] = e[n]) return i } var W = (e) => { var { children: t } = e, n = (0, r.j)('Menu', e), a = F((0, i.Lr)(e)), { descendants: s } = a, l = q(a, ['descendants']), c = f.useMemo(() => l, [l]), { isOpen: d, onClose: h, forceUpdate: p } = c return f.createElement( L, { value: s }, f.createElement( H, { value: c }, f.createElement( o.Fo, { value: n }, (0, u.Pu)(t, { isOpen: d, onClose: h, forceUpdate: p }), ), ), ) } l.Ts && (W.displayName = 'Menu') var K = (0, a.G)((e, t) => { var n = (0, o.yK)() return f.createElement( s.m$.button, G({ ref: t }, e, { __css: G( { display: 'inline-flex', appearance: 'none', alignItems: 'center', outline: 0 }, n.button, ), }), ) }), Z = (0, a.G)((e, t) => { var { as: n } = e, r = (function (e, t) { void 0 === e && (e = {}), void 0 === t && (t = null) var n = B(), { isOpen: r, onClose: i, autoSelect: o, popper: a, openAndFocusFirstItem: s, openAndFocusLastItem: l, openAndFocusMenu: d, } = n, p = f.useCallback(() => { r ? i() : (o ? s : d)() }, [o, r, i, s, d]), v = f.useCallback( (e) => { var t = (0, c.uh)(e), n = { Enter: s, ArrowDown: s, ArrowUp: l }[t] n && (e.preventDefault(), e.stopPropagation(), n(e)) }, [s, l], ) return j({}, e, { ref: (0, h.l)(n.buttonRef, t, a.referenceRef), id: n.buttonId, 'data-active': (0, c.PB)(n.isOpen), 'aria-expanded': n.isOpen, 'aria-haspopup': 'menu', 'aria-controls': n.menuId, onClick: (0, u.v0)(e.onClick, p), onKeyDown: (0, u.v0)(e.onKeyDown, v), }) })(q(e, ['children', 'as']), t), i = n || K return f.createElement( i, G({}, r, { className: (0, c.cx)('chakra-menu__menu-button', e.className) }), f.createElement( s.m$.span, { __css: { pointerEvents: 'none', flex: '1 1 auto', minW: 0 } }, e.children, ), ) }) l.Ts && (Z.displayName = 'MenuButton') var $ = { enter: { visibility: 'visible', opacity: 1, scale: 1, transition: { duration: 0.2, ease: [0.4, 0, 0.2, 1] }, }, exit: { transitionEnd: { visibility: 'hidden' }, opacity: 0, scale: 0.8, transition: { duration: 0.1, easings: 'easeOut' }, }, }, X = 'custom' in d.E ? d.E.custom(s.m$.div) : (0, d.E)(s.m$.div), Y = (0, a.G)((e, t) => { var n, r, { rootProps: i } = e, a = q(e, ['rootProps']), { isOpen: l, onTransitionEnd: d } = B(), p = (function (e, t) { void 0 === e && (e = {}), void 0 === t && (t = null) var n = B() if (!n) throw new Error( 'useMenuContext: context is undefined. Seems you forgot to wrap component within ', ) var { focusedIndex: r, setFocusedIndex: i, menuRef: o, isOpen: a, onClose: s, menuId: l, isLazy: d, lazyBehavior: p, } = n, v = N(), m = C({ preventDefault: (e) => ' ' !== e.key && V(e.target) }), g = f.useCallback( (e) => { var t = (0, c.uh)(e), n = { Tab: (e) => e.preventDefault(), Escape: s, ArrowDown: () => { var e = v.nextEnabled(r) e && i(e.index) }, ArrowUp: () => { var e = v.prevEnabled(r) e && i(e.index) }, }[t] if (n) return e.preventDefault(), void n(e) var o = m((e) => { var t = (0, R.LP)( v.values(), e, (e) => { var t, n return null != (t = null == e || null == (n = e.node) ? void 0 : n.textContent) ? t : '' }, v.item(r), ) if (t) { var n = v.indexOf(t.node) i(n) } }) V(e.target) && o(e) }, [v, r, m, s, i], ), y = f.useRef(!1) a && (y.current = !0) var b = (function (e) { var { hasBeenSelected: t, isLazy: n, isSelected: r, lazyBehavior: i = 'unmount', } = e return !n || !!r || !('keepMounted' !== i || !t) })({ hasBeenSelected: y.current, isLazy: d, lazyBehavior: p, isSelected: a }) return j({}, e, { ref: (0, h.l)(o, t), children: b ? e.children : null, tabIndex: -1, role: 'menu', id: l, style: j({}, e.style, { transformOrigin: 'var(--popper-transform-origin)' }), 'aria-orientation': 'vertical', onKeyDown: (0, u.v0)(e.onKeyDown, g), }) })(a, t), v = (function (e) { void 0 === e && (e = {}) var { popper: t, isOpen: n } = B() return t.getPopperProps( j({}, e, { style: j({ visibility: n ? 'visible' : 'hidden' }, e.style) }), ) })(i), m = (0, o.yK)() return f.createElement( s.m$.div, G({}, v, { __css: { zIndex: null != (n = e.zIndex) ? n : null == (r = m.list) ? void 0 : r.zIndex, }, }), f.createElement( X, G({}, p, { onUpdate: d, className: (0, c.cx)('chakra-menu__menu-list', p.className), variants: $, initial: !1, animate: l ? 'enter' : 'exit', __css: G({ outline: 0 }, m.list), }), ), ) }) l.Ts && (Y.displayName = 'MenuList') var Q = (0, a.G)((e, t) => { var { type: n } = e, r = q(e, ['type']), i = (0, o.yK)(), a = r.as ? (null != n ? n : void 0) : 'button', u = G( { textDecoration: 'none', color: 'inherit', userSelect: 'none', display: 'flex', width: '100%', alignItems: 'center', textAlign: 'start', flex: '0 0 auto', outline: 0, }, i.item, ) return f.createElement(s.m$.button, G({ ref: t, type: a }, r, { __css: u })) }), J = (0, a.G)((e, t) => { var { icon: n, iconSpacing: r = '0.75rem', command: i, commandSpacing: o = '0.75rem', children: a, } = e, s = U(q(e, ['icon', 'iconSpacing', 'command', 'commandSpacing', 'children']), t), u = n || i ? f.createElement('span', { style: { pointerEvents: 'none', flex: 1 } }, a) : a return f.createElement( Q, G({}, s, { className: (0, c.cx)('chakra-menu__menuitem', s.className) }), n && f.createElement(oe, { fontSize: '0.8em', marginEnd: r }, n), u, i && f.createElement(ie, { marginStart: o }, i), ) }) l.Ts && (J.displayName = 'MenuItem') var ee = (e) => f.createElement( 'svg', G({ viewBox: '0 0 14 14', width: '1em', height: '1em' }, e), f.createElement('polygon', { fill: 'currentColor', points: '5.5 11.9993304 14 3.49933039 12.5 2 5.5 8.99933039 1.5 4.9968652 0 6.49933039', }), ), te = (0, a.G)((e, t) => { var { icon: n, iconSpacing: r = '0.75rem' } = e, i = q(e, ['icon', 'iconSpacing']), o = (function (e, t) { void 0 === e && (e = {}), void 0 === t && (t = null) var { type: n = 'radio', isChecked: r } = e return j({}, U(D(e, ['type', 'isChecked']), t), { role: 'menuitem' + n, 'aria-checked': r, }) })(i, t) return f.createElement( Q, G({}, o, { className: (0, c.cx)('chakra-menu__menuitem-option', i.className) }), f.createElement( oe, { fontSize: '0.8em', marginEnd: r, opacity: e.isChecked ? 1 : 0 }, n || f.createElement(ee, null), ), f.createElement('span', { style: { flex: 1 } }, o.children), ) }) ;(te.id = 'MenuItemOption'), l.Ts && (te.displayName = 'MenuItemOption') var ne = (e) => { var { className: t, title: n } = e, r = (function (e) { void 0 === e && (e = {}) var { children: t, type: n = 'radio', value: r, defaultValue: i, onChange: o } = e, a = D(e, ['children', 'type', 'value', 'defaultValue', 'onChange']), s = 'radio' === n ? '' : [], [u, c] = (0, S.T)({ defaultValue: null != i ? i : s, value: r, onChange: o }), d = f.useCallback( (e) => { if (('radio' === n && (0, l.HD)(u) && c(e), 'checkbox' === n && (0, l.kJ)(u))) { var t = u.includes(e) ? (0, R.cl)(u, e) : (0, R.jX)(u, e) c(t) } }, [u, c, n], ) return j({}, a, { children: (0, M.W)(t).map((e) => { if ('MenuItemOption' !== e.type.id) return e var t = 'radio' === n ? e.props.value === u : u.includes(e.props.value) return f.cloneElement(e, { type: n, onClick: (t) => { d(e.props.value), null == e.props.onClick || e.props.onClick(t) }, isChecked: t, }) }), }) })(q(e, ['className', 'title'])) return f.createElement( re, G({ title: n, className: (0, c.cx)('chakra-menu__option-group', t) }, r), ) } l.Ts && (ne.displayName = 'MenuOptionGroup') var re = (0, a.G)((e, t) => { var { title: n, children: r, className: i } = e, a = q(e, ['title', 'children', 'className']), u = (0, c.cx)('chakra-menu__group__title', i), l = (0, o.yK)() return f.createElement( 'div', { ref: t, className: 'chakra-menu__group', role: 'group' }, n && f.createElement(s.m$.p, G({ className: u }, a, { __css: l.groupTitle }), n), r, ) }) l.Ts && (re.displayName = 'MenuGroup') var ie = (0, a.G)((e, t) => { var n = (0, o.yK)() return f.createElement( s.m$.span, G({ ref: t }, e, { __css: n.command, className: 'chakra-menu__command' }), ) }) l.Ts && (ie.displayName = 'MenuCommand') var oe = (e) => { var { className: t, children: n } = e, r = q(e, ['className', 'children']), i = f.Children.only(n), o = f.isValidElement(i) ? f.cloneElement(i, { focusable: 'false', 'aria-hidden': !0, className: (0, c.cx)('chakra-menu__icon', i.props.className), }) : null, a = (0, c.cx)('chakra-menu__icon-wrapper', t) return f.createElement(s.m$.span, G({ className: a }, r, { __css: { flexShrink: 0 } }), o) } l.Ts && (oe.displayName = 'MenuIcon') l.Ts }, 8931: function (e, t, n) { 'use strict' n.d(t, { D: function () { return be }, }) var r = n(2947) function i(e) { var t = e.getBoundingClientRect() return { width: t.width, height: t.height, top: t.top, right: t.right, bottom: t.bottom, left: t.left, x: t.left, y: t.top, } } function o(e) { if ('[object Window]' !== e.toString()) { var t = e.ownerDocument return t ? t.defaultView : window } return e } function a(e) { var t = o(e) return { scrollLeft: t.pageXOffset, scrollTop: t.pageYOffset } } function s(e) { return e instanceof o(e).Element || e instanceof Element } function u(e) { return e instanceof o(e).HTMLElement || e instanceof HTMLElement } function l(e) { return e ? (e.nodeName || '').toLowerCase() : null } function c(e) { return (s(e) ? e.ownerDocument : e.document).documentElement } function d(e) { return i(c(e)).left + a(e).scrollLeft } function f(e) { return o(e).getComputedStyle(e) } function h(e) { var t = f(e), n = t.overflow, r = t.overflowX, i = t.overflowY return /auto|scroll|overlay|hidden/.test(n + i + r) } function p(e, t, n) { void 0 === n && (n = !1) var r = c(t), s = i(e), f = u(t), p = { scrollLeft: 0, scrollTop: 0 }, v = { x: 0, y: 0 } return ( (f || (!f && !n)) && (('body' !== l(t) || h(r)) && (p = (function (e) { return e !== o(e) && u(e) ? { scrollLeft: (t = e).scrollLeft, scrollTop: t.scrollTop } : a(e) var t })(t)), u(t) ? (((v = i(t)).x += t.clientLeft), (v.y += t.clientTop)) : r && (v.x = d(r))), { x: s.left + p.scrollLeft - v.x, y: s.top + p.scrollTop - v.y, width: s.width, height: s.height, } ) } function v(e) { return { x: e.offsetLeft, y: e.offsetTop, width: e.offsetWidth, height: e.offsetHeight } } function m(e) { return 'html' === l(e) ? e : e.assignedSlot || e.parentNode || e.host || c(e) } function g(e) { return ['html', 'body', '#document'].indexOf(l(e)) >= 0 ? e.ownerDocument.body : u(e) && h(e) ? e : g(m(e)) } function y(e, t) { void 0 === t && (t = []) var n = g(e), r = 'body' === l(n), i = o(n), a = r ? [i].concat(i.visualViewport || [], h(n) ? n : []) : n, s = t.concat(a) return r ? s : s.concat(y(m(a))) } function b(e) { return ['table', 'td', 'th'].indexOf(l(e)) >= 0 } function w(e) { if (!u(e) || 'fixed' === f(e).position) return null var t = e.offsetParent if (t) { var n = c(t) if ('body' === l(t) && 'static' === f(t).position && 'static' !== f(n).position) return n } return t } function x(e) { for (var t = o(e), n = w(e); n && b(n) && 'static' === f(n).position; ) n = w(n) return n && 'body' === l(n) && 'static' === f(n).position ? t : n || (function (e) { for (var t = m(e); u(t) && ['html', 'body'].indexOf(l(t)) < 0; ) { var n = f(t) if ( 'none' !== n.transform || 'none' !== n.perspective || (n.willChange && 'auto' !== n.willChange) ) return t t = t.parentNode } return null })(e) || t } var E = 'top', k = 'bottom', _ = 'right', T = 'left', O = 'auto', C = [E, k, _, T], S = 'start', A = 'end', P = 'viewport', M = 'popper', R = C.reduce(function (e, t) { return e.concat([t + '-' + S, t + '-' + A]) }, []), j = [].concat(C, [O]).reduce(function (e, t) { return e.concat([t, t + '-' + S, t + '-' + A]) }, []), D = [ 'beforeRead', 'read', 'afterRead', 'beforeMain', 'main', 'afterMain', 'beforeWrite', 'write', 'afterWrite', ] function L(e) { var t = new Map(), n = new Set(), r = [] function i(e) { n.add(e.name), [].concat(e.requires || [], e.requiresIfExists || []).forEach(function (e) { if (!n.has(e)) { var r = t.get(e) r && i(r) } }), r.push(e) } return ( e.forEach(function (e) { t.set(e.name, e) }), e.forEach(function (e) { n.has(e.name) || i(e) }), r ) } function N(e) { var t return function () { return ( t || (t = new Promise(function (n) { Promise.resolve().then(function () { ;(t = void 0), n(e()) }) })), t ) } } var I = { placement: 'bottom', modifiers: [], strategy: 'absolute' } function z() { for (var e = arguments.length, t = new Array(e), n = 0; n < e; n++) t[n] = arguments[n] return !t.some(function (e) { return !(e && 'function' === typeof e.getBoundingClientRect) }) } function H(e) { void 0 === e && (e = {}) var t = e, n = t.defaultModifiers, r = void 0 === n ? [] : n, i = t.defaultOptions, o = void 0 === i ? I : i return function (e, t, n) { void 0 === n && (n = o) var i = { placement: 'bottom', orderedModifiers: [], options: Object.assign(Object.assign({}, I), o), modifiersData: {}, elements: { reference: e, popper: t }, attributes: {}, styles: {}, }, a = [], u = !1, l = { state: i, setOptions: function (n) { c(), (i.options = Object.assign(Object.assign(Object.assign({}, o), i.options), n)), (i.scrollParents = { reference: s(e) ? y(e) : e.contextElement ? y(e.contextElement) : [], popper: y(t), }) var u = (function (e) { var t = L(e) return D.reduce(function (e, n) { return e.concat( t.filter(function (e) { return e.phase === n }), ) }, []) })( (function (e) { var t = e.reduce(function (e, t) { var n = e[t.name] return ( (e[t.name] = n ? Object.assign( Object.assign(Object.assign({}, n), t), {}, { options: Object.assign(Object.assign({}, n.options), t.options), data: Object.assign(Object.assign({}, n.data), t.data), }, ) : t), e ) }, {}) return Object.keys(t).map(function (e) { return t[e] }) })([].concat(r, i.options.modifiers)), ) return ( (i.orderedModifiers = u.filter(function (e) { return e.enabled })), i.orderedModifiers.forEach(function (e) { var t = e.name, n = e.options, r = void 0 === n ? {} : n, o = e.effect if ('function' === typeof o) { var s = o({ state: i, name: t, instance: l, options: r }), u = function () {} a.push(s || u) } }), l.update() ) }, forceUpdate: function () { if (!u) { var e = i.elements, t = e.reference, n = e.popper if (z(t, n)) { ;(i.rects = { reference: p(t, x(n), 'fixed' === i.options.strategy), popper: v(n), }), (i.reset = !1), (i.placement = i.options.placement), i.orderedModifiers.forEach(function (e) { return (i.modifiersData[e.name] = Object.assign({}, e.data)) }) for (var r = 0; r < i.orderedModifiers.length; r++) if (!0 !== i.reset) { var o = i.orderedModifiers[r], a = o.fn, s = o.options, c = void 0 === s ? {} : s, d = o.name 'function' === typeof a && (i = a({ state: i, options: c, name: d, instance: l }) || i) } else (i.reset = !1), (r = -1) } } }, update: N(function () { return new Promise(function (e) { l.forceUpdate(), e(i) }) }), destroy: function () { c(), (u = !0) }, } if (!z(e, t)) return l function c() { a.forEach(function (e) { return e() }), (a = []) } return ( l.setOptions(n).then(function (e) { !u && n.onFirstUpdate && n.onFirstUpdate(e) }), l ) } } var B = { passive: !0 } function F(e) { return e.split('-')[0] } function V(e) { return e.split('-')[1] } function U(e) { return ['top', 'bottom'].indexOf(e) >= 0 ? 'x' : 'y' } function G(e) { var t, n = e.reference, r = e.element, i = e.placement, o = i ? F(i) : null, a = i ? V(i) : null, s = n.x + n.width / 2 - r.width / 2, u = n.y + n.height / 2 - r.height / 2 switch (o) { case E: t = { x: s, y: n.y - r.height } break case k: t = { x: s, y: n.y + n.height } break case _: t = { x: n.x + n.width, y: u } break case T: t = { x: n.x - r.width, y: u } break default: t = { x: n.x, y: n.y } } var l = o ? U(o) : null if (null != l) { var c = 'y' === l ? 'height' : 'width' switch (a) { case S: t[l] = Math.floor(t[l]) - Math.floor(n[c] / 2 - r[c] / 2) break case A: t[l] = Math.floor(t[l]) + Math.ceil(n[c] / 2 - r[c] / 2) } } return t } var q = { top: 'auto', right: 'auto', bottom: 'auto', left: 'auto' } function W(e) { var t, n = e.popper, r = e.popperRect, i = e.placement, a = e.offsets, s = e.position, u = e.gpuAcceleration, l = e.adaptive, d = (function (e) { var t = e.x, n = e.y, r = window.devicePixelRatio || 1 return { x: Math.round(t * r) / r || 0, y: Math.round(n * r) / r || 0 } })(a), f = d.x, h = d.y, p = a.hasOwnProperty('x'), v = a.hasOwnProperty('y'), m = T, g = E, y = window if (l) { var b = x(n) b === o(n) && (b = c(n)), i === E && ((g = k), (h -= b.clientHeight - r.height), (h *= u ? 1 : -1)), i === T && ((m = _), (f -= b.clientWidth - r.width), (f *= u ? 1 : -1)) } var w, O = Object.assign({ position: s }, l && q) return u ? Object.assign( Object.assign({}, O), {}, (((w = {})[g] = v ? '0' : ''), (w[m] = p ? '0' : ''), (w.transform = (y.devicePixelRatio || 1) < 2 ? 'translate(' + f + 'px, ' + h + 'px)' : 'translate3d(' + f + 'px, ' + h + 'px, 0)'), w), ) : Object.assign( Object.assign({}, O), {}, (((t = {})[g] = v ? h + 'px' : ''), (t[m] = p ? f + 'px' : ''), (t.transform = ''), t), ) } var K = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' } function Z(e) { return e.replace(/left|right|bottom|top/g, function (e) { return K[e] }) } var $ = { start: 'end', end: 'start' } function X(e) { return e.replace(/start|end/g, function (e) { return $[e] }) } function Y(e, t) { var n = Boolean(t.getRootNode && t.getRootNode().host) if (e.contains(t)) return !0 if (n) { var r = t do { if (r && e.isSameNode(r)) return !0 r = r.parentNode || r.host } while (r) } return !1 } function Q(e) { return Object.assign( Object.assign({}, e), {}, { left: e.x, top: e.y, right: e.x + e.width, bottom: e.y + e.height }, ) } function J(e, t) { return t === P ? Q( (function (e) { var t = o(e), n = c(e), r = t.visualViewport, i = n.clientWidth, a = n.clientHeight, s = 0, u = 0 return ( r && ((i = r.width), (a = r.height), /^((?!chrome|android).)*safari/i.test(navigator.userAgent) || ((s = r.offsetLeft), (u = r.offsetTop))), { width: i, height: a, x: s + d(e), y: u } ) })(e), ) : u(t) ? (function (e) { var t = i(e) return ( (t.top = t.top + e.clientTop), (t.left = t.left + e.clientLeft), (t.bottom = t.top + e.clientHeight), (t.right = t.left + e.clientWidth), (t.width = e.clientWidth), (t.height = e.clientHeight), (t.x = t.left), (t.y = t.top), t ) })(t) : Q( (function (e) { var t = c(e), n = a(e), r = e.ownerDocument.body, i = Math.max( t.scrollWidth, t.clientWidth, r ? r.scrollWidth : 0, r ? r.clientWidth : 0, ), o = Math.max( t.scrollHeight, t.clientHeight, r ? r.scrollHeight : 0, r ? r.clientHeight : 0, ), s = -n.scrollLeft + d(e), u = -n.scrollTop return ( 'rtl' === f(r || t).direction && (s += Math.max(t.clientWidth, r ? r.clientWidth : 0) - i), { width: i, height: o, x: s, y: u } ) })(c(e)), ) } function ee(e, t, n) { var r = 'clippingParents' === t ? (function (e) { var t = y(m(e)), n = ['absolute', 'fixed'].indexOf(f(e).position) >= 0 && u(e) ? x(e) : e return s(n) ? t.filter(function (e) { return s(e) && Y(e, n) && 'body' !== l(e) }) : [] })(e) : [].concat(t), i = [].concat(r, [n]), o = i[0], a = i.reduce(function (t, n) { var r = J(e, n) return ( (t.top = Math.max(r.top, t.top)), (t.right = Math.min(r.right, t.right)), (t.bottom = Math.min(r.bottom, t.bottom)), (t.left = Math.max(r.left, t.left)), t ) }, J(e, o)) return ( (a.width = a.right - a.left), (a.height = a.bottom - a.top), (a.x = a.left), (a.y = a.top), a ) } function te(e) { return Object.assign(Object.assign({}, { top: 0, right: 0, bottom: 0, left: 0 }), e) } function ne(e, t) { return t.reduce(function (t, n) { return (t[n] = e), t }, {}) } function re(e, t) { void 0 === t && (t = {}) var n = t, r = n.placement, o = void 0 === r ? e.placement : r, a = n.boundary, u = void 0 === a ? 'clippingParents' : a, l = n.rootBoundary, d = void 0 === l ? P : l, f = n.elementContext, h = void 0 === f ? M : f, p = n.altBoundary, v = void 0 !== p && p, m = n.padding, g = void 0 === m ? 0 : m, y = te('number' !== typeof g ? g : ne(g, C)), b = h === M ? 'reference' : M, w = e.elements.reference, x = e.rects.popper, T = e.elements[v ? b : h], O = ee(s(T) ? T : T.contextElement || c(e.elements.popper), u, d), S = i(w), A = G({ reference: S, element: x, strategy: 'absolute', placement: o }), R = Q(Object.assign(Object.assign({}, x), A)), j = h === M ? R : S, D = { top: O.top - j.top + y.top, bottom: j.bottom - O.bottom + y.bottom, left: O.left - j.left + y.left, right: j.right - O.right + y.right, }, L = e.modifiersData.offset if (h === M && L) { var N = L[o] Object.keys(D).forEach(function (e) { var t = [_, k].indexOf(e) >= 0 ? 1 : -1, n = [E, k].indexOf(e) >= 0 ? 'y' : 'x' D[e] += N[n] * t }) } return D } function ie(e, t, n) { return Math.max(e, Math.min(t, n)) } function oe(e, t, n) { return ( void 0 === n && (n = { x: 0, y: 0 }), { top: e.top - t.height - n.y, right: e.right - t.width + n.x, bottom: e.bottom - t.height + n.y, left: e.left - t.width - n.x, } ) } function ae(e) { return [E, _, k, T].some(function (t) { return e[t] >= 0 }) } var se = H({ defaultModifiers: [ { name: 'eventListeners', enabled: !0, phase: 'write', fn: function () {}, effect: function (e) { var t = e.state, n = e.instance, r = e.options, i = r.scroll, a = void 0 === i || i, s = r.resize, u = void 0 === s || s, l = o(t.elements.popper), c = [].concat(t.scrollParents.reference, t.scrollParents.popper) return ( a && c.forEach(function (e) { e.addEventListener('scroll', n.update, B) }), u && l.addEventListener('resize', n.update, B), function () { a && c.forEach(function (e) { e.removeEventListener('scroll', n.update, B) }), u && l.removeEventListener('resize', n.update, B) } ) }, data: {}, }, { name: 'popperOffsets', enabled: !0, phase: 'read', fn: function (e) { var t = e.state, n = e.name t.modifiersData[n] = G({ reference: t.rects.reference, element: t.rects.popper, strategy: 'absolute', placement: t.placement, }) }, data: {}, }, { name: 'computeStyles', enabled: !0, phase: 'beforeWrite', fn: function (e) { var t = e.state, n = e.options, r = n.gpuAcceleration, i = void 0 === r || r, o = n.adaptive, a = void 0 === o || o, s = { placement: F(t.placement), popper: t.elements.popper, popperRect: t.rects.popper, gpuAcceleration: i, } null != t.modifiersData.popperOffsets && (t.styles.popper = Object.assign( Object.assign({}, t.styles.popper), W( Object.assign( Object.assign({}, s), {}, { offsets: t.modifiersData.popperOffsets, position: t.options.strategy, adaptive: a, }, ), ), )), null != t.modifiersData.arrow && (t.styles.arrow = Object.assign( Object.assign({}, t.styles.arrow), W( Object.assign( Object.assign({}, s), {}, { offsets: t.modifiersData.arrow, position: 'absolute', adaptive: !1 }, ), ), )), (t.attributes.popper = Object.assign( Object.assign({}, t.attributes.popper), {}, { 'data-popper-placement': t.placement }, )) }, data: {}, }, { name: 'applyStyles', enabled: !0, phase: 'write', fn: function (e) { var t = e.state Object.keys(t.elements).forEach(function (e) { var n = t.styles[e] || {}, r = t.attributes[e] || {}, i = t.elements[e] u(i) && l(i) && (Object.assign(i.style, n), Object.keys(r).forEach(function (e) { var t = r[e] !1 === t ? i.removeAttribute(e) : i.setAttribute(e, !0 === t ? '' : t) })) }) }, effect: function (e) { var t = e.state, n = { popper: { position: t.options.strategy, left: '0', top: '0', margin: '0' }, arrow: { position: 'absolute' }, reference: {}, } return ( Object.assign(t.elements.popper.style, n.popper), t.elements.arrow && Object.assign(t.elements.arrow.style, n.arrow), function () { Object.keys(t.elements).forEach(function (e) { var r = t.elements[e], i = t.attributes[e] || {}, o = Object.keys(t.styles.hasOwnProperty(e) ? t.styles[e] : n[e]).reduce( function (e, t) { return (e[t] = ''), e }, {}, ) u(r) && l(r) && (Object.assign(r.style, o), Object.keys(i).forEach(function (e) { r.removeAttribute(e) })) }) } ) }, requires: ['computeStyles'], }, { name: 'offset', enabled: !0, phase: 'main', requires: ['popperOffsets'], fn: function (e) { var t = e.state, n = e.options, r = e.name, i = n.offset, o = void 0 === i ? [0, 0] : i, a = j.reduce(function (e, n) { return ( (e[n] = (function (e, t, n) { var r = F(e), i = [T, E].indexOf(r) >= 0 ? -1 : 1, o = 'function' === typeof n ? n(Object.assign(Object.assign({}, t), {}, { placement: e })) : n, a = o[0], s = o[1] return ( (a = a || 0), (s = (s || 0) * i), [T, _].indexOf(r) >= 0 ? { x: s, y: a } : { x: a, y: s } ) })(n, t.rects, o)), e ) }, {}), s = a[t.placement], u = s.x, l = s.y null != t.modifiersData.popperOffsets && ((t.modifiersData.popperOffsets.x += u), (t.modifiersData.popperOffsets.y += l)), (t.modifiersData[r] = a) }, }, { name: 'flip', enabled: !0, phase: 'main', fn: function (e) { var t = e.state, n = e.options, r = e.name if (!t.modifiersData[r]._skip) { for ( var i = n.mainAxis, o = void 0 === i || i, a = n.altAxis, s = void 0 === a || a, u = n.fallbackPlacements, l = n.padding, c = n.boundary, d = n.rootBoundary, f = n.altBoundary, h = n.flipVariations, p = void 0 === h || h, v = n.allowedAutoPlacements, m = t.options.placement, g = F(m), y = u || (g === m || !p ? [Z(m)] : (function (e) { if (F(e) === O) return [] var t = Z(e) return [X(e), t, X(t)] })(m)), b = [m].concat(y).reduce(function (e, n) { return e.concat( F(n) === O ? (function (e, t) { void 0 === t && (t = {}) var n = t, r = n.placement, i = n.boundary, o = n.rootBoundary, a = n.padding, s = n.flipVariations, u = n.allowedAutoPlacements, l = void 0 === u ? j : u, c = V(r), d = c ? s ? R : R.filter(function (e) { return V(e) === c }) : C, f = d.filter(function (e) { return l.indexOf(e) >= 0 }) 0 === f.length && (f = d) var h = f.reduce(function (t, n) { return ( (t[n] = re(e, { placement: n, boundary: i, rootBoundary: o, padding: a, })[F(n)]), t ) }, {}) return Object.keys(h).sort(function (e, t) { return h[e] - h[t] }) })(t, { placement: n, boundary: c, rootBoundary: d, padding: l, flipVariations: p, allowedAutoPlacements: v, }) : n, ) }, []), w = t.rects.reference, x = t.rects.popper, A = new Map(), P = !0, M = b[0], D = 0; D < b.length; D++ ) { var L = b[D], N = F(L), I = V(L) === S, z = [E, k].indexOf(N) >= 0, H = z ? 'width' : 'height', B = re(t, { placement: L, boundary: c, rootBoundary: d, altBoundary: f, padding: l, }), U = z ? (I ? _ : T) : I ? k : E w[H] > x[H] && (U = Z(U)) var G = Z(U), q = [] if ( (o && q.push(B[N] <= 0), s && q.push(B[U] <= 0, B[G] <= 0), q.every(function (e) { return e })) ) { ;(M = L), (P = !1) break } A.set(L, q) } if (P) for ( var W = function (e) { var t = b.find(function (t) { var n = A.get(t) if (n) return n.slice(0, e).every(function (e) { return e }) }) if (t) return (M = t), 'break' }, K = p ? 3 : 1; K > 0; K-- ) { if ('break' === W(K)) break } t.placement !== M && ((t.modifiersData[r]._skip = !0), (t.placement = M), (t.reset = !0)) } }, requiresIfExists: ['offset'], data: { _skip: !1 }, }, { name: 'preventOverflow', enabled: !0, phase: 'main', fn: function (e) { var t = e.state, n = e.options, r = e.name, i = n.mainAxis, o = void 0 === i || i, a = n.altAxis, s = void 0 !== a && a, u = n.boundary, l = n.rootBoundary, c = n.altBoundary, d = n.padding, f = n.tether, h = void 0 === f || f, p = n.tetherOffset, m = void 0 === p ? 0 : p, g = re(t, { boundary: u, rootBoundary: l, padding: d, altBoundary: c }), y = F(t.placement), b = V(t.placement), w = !b, O = U(y), C = 'x' === O ? 'y' : 'x', A = t.modifiersData.popperOffsets, P = t.rects.reference, M = t.rects.popper, R = 'function' === typeof m ? m(Object.assign(Object.assign({}, t.rects), {}, { placement: t.placement })) : m, j = { x: 0, y: 0 } if (A) { if (o) { var D = 'y' === O ? E : T, L = 'y' === O ? k : _, N = 'y' === O ? 'height' : 'width', I = A[O], z = A[O] + g[D], H = A[O] - g[L], B = h ? -M[N] / 2 : 0, G = b === S ? P[N] : M[N], q = b === S ? -M[N] : -P[N], W = t.elements.arrow, K = h && W ? v(W) : { width: 0, height: 0 }, Z = t.modifiersData['arrow#persistent'] ? t.modifiersData['arrow#persistent'].padding : { top: 0, right: 0, bottom: 0, left: 0 }, $ = Z[D], X = Z[L], Y = ie(0, P[N], K[N]), Q = w ? P[N] / 2 - B - Y - $ - R : G - Y - $ - R, J = w ? -P[N] / 2 + B + Y + X + R : q + Y + X + R, ee = t.elements.arrow && x(t.elements.arrow), te = ee ? ('y' === O ? ee.clientTop || 0 : ee.clientLeft || 0) : 0, ne = t.modifiersData.offset ? t.modifiersData.offset[t.placement][O] : 0, oe = A[O] + Q - ne - te, ae = A[O] + J - ne, se = ie(h ? Math.min(z, oe) : z, I, h ? Math.max(H, ae) : H) ;(A[O] = se), (j[O] = se - I) } if (s) { var ue = 'x' === O ? E : T, le = 'x' === O ? k : _, ce = A[C], de = ie(ce + g[ue], ce, ce - g[le]) ;(A[C] = de), (j[C] = de - ce) } t.modifiersData[r] = j } }, requiresIfExists: ['offset'], }, { name: 'arrow', enabled: !0, phase: 'main', fn: function (e) { var t, n = e.state, r = e.name, i = n.elements.arrow, o = n.modifiersData.popperOffsets, a = F(n.placement), s = U(a), u = [T, _].indexOf(a) >= 0 ? 'height' : 'width' if (i && o) { var l = n.modifiersData[r + '#persistent'].padding, c = v(i), d = 'y' === s ? E : T, f = 'y' === s ? k : _, h = n.rects.reference[u] + n.rects.reference[s] - o[s] - n.rects.popper[u], p = o[s] - n.rects.reference[s], m = x(i), g = m ? ('y' === s ? m.clientHeight || 0 : m.clientWidth || 0) : 0, y = h / 2 - p / 2, b = l[d], w = g - c[u] - l[f], O = g / 2 - c[u] / 2 + y, C = ie(b, O, w), S = s n.modifiersData[r] = (((t = {})[S] = C), (t.centerOffset = C - O), t) } }, effect: function (e) { var t = e.state, n = e.options, r = e.name, i = n.element, o = void 0 === i ? '[data-popper-arrow]' : i, a = n.padding, s = void 0 === a ? 0 : a null != o && ('string' !== typeof o || (o = t.elements.popper.querySelector(o))) && Y(t.elements.popper, o) && ((t.elements.arrow = o), (t.modifiersData[r + '#persistent'] = { padding: te('number' !== typeof s ? s : ne(s, C)), })) }, requires: ['popperOffsets'], requiresIfExists: ['preventOverflow'], }, { name: 'hide', enabled: !0, phase: 'main', requiresIfExists: ['preventOverflow'], fn: function (e) { var t = e.state, n = e.name, r = t.rects.reference, i = t.rects.popper, o = t.modifiersData.preventOverflow, a = re(t, { elementContext: 'reference' }), s = re(t, { altBoundary: !0 }), u = oe(a, r), l = oe(s, i, o), c = ae(u), d = ae(l) ;(t.modifiersData[n] = { referenceClippingOffsets: u, popperEscapeOffsets: l, isReferenceHidden: c, hasPopperEscaped: d, }), (t.attributes.popper = Object.assign( Object.assign({}, t.attributes.popper), {}, { 'data-popper-reference-hidden': c, 'data-popper-escaped': d }, )) }, }, ], }), ue = n(7294), le = n(3459), ce = { name: 'matchWidth', enabled: !0, phase: 'beforeWrite', requires: ['computeStyles'], fn: (e) => { var { state: t } = e t.styles.popper.width = t.rects.reference.width + 'px' }, effect: (e) => { var { state: t } = e return () => { var e = t.elements.reference t.elements.popper.style.width = e.offsetWidth + 'px' } }, }, de = { name: 'transformOrigin', enabled: !0, phase: 'write', fn: (e) => { var { state: t } = e fe(t) }, effect: (e) => { var { state: t } = e return () => { fe(t) } }, }, fe = (e) => { e.elements.popper.style.setProperty(le.Dq.transformOrigin.var, (0, le.mv)(e.placement)) }, he = { name: 'positionArrow', enabled: !0, phase: 'afterWrite', fn: (e) => { var { state: t } = e pe(t) }, }, pe = (e) => { var t if (e.placement) { var n = ve(e.placement) if (null != (t = e.elements) && t.arrow && n) { Object.assign(e.elements.arrow.style, { [n.property]: n.value, width: le.Dq.arrowSize.varRef, height: le.Dq.arrowSize.varRef, zIndex: -1, }) var r = { [le.Dq.arrowSizeHalf.var]: 'calc(' + le.Dq.arrowSize.varRef + ' / 2)', [le.Dq.arrowOffset.var]: 'calc(' + le.Dq.arrowSizeHalf.varRef + ' * -1)', } for (var i in r) e.elements.arrow.style.setProperty(i, r[i]) } } }, ve = (e) => e.startsWith('top') ? { property: 'bottom', value: le.Dq.arrowOffset.varRef } : e.startsWith('bottom') ? { property: 'top', value: le.Dq.arrowOffset.varRef } : e.startsWith('left') ? { property: 'right', value: le.Dq.arrowOffset.varRef } : e.startsWith('right') ? { property: 'left', value: le.Dq.arrowOffset.varRef } : void 0, me = { name: 'innerArrow', enabled: !0, phase: 'main', requires: ['arrow'], fn: (e) => { var { state: t } = e ge(t) }, effect: (e) => { var { state: t } = e return () => { ge(t) } }, }, ge = (e) => { if (e.elements.arrow) { var t = e.elements.arrow.querySelector('[data-popper-arrow-inner]') t && Object.assign(t.style, { transform: 'rotate(45deg)', background: le.Dq.arrowBg.varRef, top: 0, left: 0, width: '100%', height: '100%', position: 'absolute', zIndex: 'inherit', boxShadow: (0, le.Ke)(e.placement), }) } } function ye() { return (ye = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var n = arguments[t] for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r]) } return e }).apply(this, arguments) } function be(e) { void 0 === e && (e = {}) var { enabled: t = !0, modifiers: n = [], placement: i = 'bottom', strategy: o = 'absolute', arrowPadding: a = 8, eventListeners: s = !0, offset: u, gutter: l = 8, flip: c = !0, boundary: d = 'clippingParents', preventOverflow: f = !0, matchWidth: h, } = e, p = (0, ue.useRef)(null), v = (0, ue.useRef)(null), m = (0, ue.useRef)(null), g = (0, ue.useRef)(() => {}), y = (0, ue.useCallback)(() => { t && p.current && v.current && (null == g.current || g.current(), (m.current = se(p.current, v.current, { placement: i, modifiers: [ me, he, de, ye({}, ce, { enabled: !!h }), ye({ name: 'eventListeners' }, (0, le.$B)(s)), { name: 'arrow', options: { padding: a } }, { name: 'offset', options: { offset: null != u ? u : [0, l] } }, { name: 'flip', enabled: !!c, options: { padding: 8 } }, { name: 'preventOverflow', enabled: !!f, options: { boundary: d } }, ...n, ], strategy: o, })), m.current.forceUpdate(), (g.current = m.current.destroy)) }, [t, i, n, h, s, a, u, l, c, f, d, o]) ;(0, ue.useEffect)( () => () => { var e p.current || v.current || (null == (e = m.current) || e.destroy(), (m.current = null)) }, [], ) var b = (0, ue.useCallback)( (e) => { ;(p.current = e), y() }, [y], ), w = (0, ue.useCallback)( function (e, t) { return ( void 0 === e && (e = {}), void 0 === t && (t = null), ye({}, e, { ref: (0, r.l)(b, t) }) ) }, [b], ), x = (0, ue.useCallback)( (e) => { ;(v.current = e), y() }, [y], ), E = (0, ue.useCallback)( function (e, t) { return ( void 0 === e && (e = {}), void 0 === t && (t = null), ye({}, e, { ref: (0, r.l)(x, t), style: ye({}, e.style, { position: o, minWidth: 'max-content', inset: '0 auto auto 0', }), }) ) }, [o, x], ), k = (0, ue.useCallback)(function (e, t) { return ( void 0 === e && (e = {}), void 0 === t && (t = null), ye( {}, (function (e, t) { if (null == e) return {} var n, r, i = {}, o = Object.keys(e) for (r = 0; r < o.length; r++) (n = o[r]), t.indexOf(n) >= 0 || (i[n] = e[n]) return i })(e, ['size', 'shadowColor', 'bg', 'style']), { ref: t, 'data-popper-arrow': '', style: we(e) }, ) ) }, []), _ = (0, ue.useCallback)(function (e, t) { return ( void 0 === e && (e = {}), void 0 === t && (t = null), ye({}, e, { ref: t, 'data-popper-arrow-inner': '' }) ) }, []) return { update() { var e null == (e = m.current) || e.update() }, forceUpdate() { var e null == (e = m.current) || e.forceUpdate() }, transformOrigin: le.Dq.transformOrigin.varRef, referenceRef: b, popperRef: x, getPopperProps: E, getArrowProps: k, getArrowInnerProps: _, getReferenceProps: w, } } function we(e) { var { size: t, shadowColor: n, bg: r, style: i } = e, o = ye({}, i, { position: 'absolute' }) return ( t && (o['--popper-arrow-size'] = t), n && (o['--popper-arrow-shadow-color'] = n), r && (o['--popper-arrow-bg'] = r), o ) } }, 3459: function (e, t, n) { 'use strict' function r() { return (r = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var n = arguments[t] for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r]) } return e }).apply(this, arguments) } n.d(t, { Dq: function () { return o }, Ke: function () { return a }, mv: function () { return u }, $B: function () { return c }, }) var i = (e, t) => ({ var: e, varRef: t ? 'var(' + e + ', ' + t + ')' : 'var(' + e + ')' }), o = { arrowShadowColor: i('--popper-arrow-shadow-color'), arrowSize: i('--popper-arrow-size', '8px'), arrowSizeHalf: i('--popper-arrow-size-half'), arrowBg: i('--popper-arrow-bg'), transformOrigin: i('--popper-transform-origin'), arrowOffset: i('--popper-arrow-offset'), } function a(e) { return e.includes('top') ? '1px 1px 1px 0 var(--popper-arrow-shadow-color)' : e.includes('bottom') ? '-1px -1px 1px 0 var(--popper-arrow-shadow-color)' : e.includes('right') ? '-1px 1px 1px 0 var(--popper-arrow-shadow-color)' : e.includes('left') ? '1px -1px 1px 0 var(--popper-arrow-shadow-color)' : void 0 } var s = { top: 'bottom center', 'top-start': 'bottom left', 'top-end': 'bottom right', bottom: 'top center', 'bottom-start': 'top left', 'bottom-end': 'top right', left: 'right center', 'left-start': 'right top', 'left-end': 'right bottom', right: 'left center', 'right-start': 'left top', 'right-end': 'left bottom', }, u = (e) => s[e], l = { scroll: !0, resize: !0 } function c(e) { return 'object' === typeof e ? { enabled: !0, options: r({}, l, e) } : { enabled: e, options: l } } }, 7273: function (e, t, n) { 'use strict' n.d(t, { h: function () { return b }, }) var r = n(7294), i = n(7581) function o() { var e = r.useRef(!1), [t, n] = r.useState(0) return ( (0, i.z)(() => { e.current = !0 }), r.useCallback(() => { e.current || n(t + 1) }, [t]) ) } var a = n(8327), s = n(4461), u = n(3808), l = n(8500), c = n(3935), d = n(4288) function f() { return (f = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var n = arguments[t] for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r]) } return e }).apply(this, arguments) } var [h, p] = (0, l.k)({ strict: !1, name: 'PortalContext' }), v = 'chakra-portal', m = (e) => r.createElement( 'div', { className: 'chakra-portal-zIndex', style: { position: 'absolute', zIndex: e.zIndex, top: 0, left: 0, right: 0 }, }, e.children, ), g = (e) => { var { appendToParentPortal: t, children: n } = e, i = r.useRef(null), s = r.useRef(null), u = o(), l = p(), f = (0, d.L)() ;(0, a.G)(() => { if (i.current) { var e = i.current.ownerDocument, n = t && null != l ? l : e.body if (n) { ;(s.current = e.createElement('div')), (s.current.className = v), n.appendChild(s.current), u() var r = s.current return () => { n.contains(r) && n.removeChild(r) } } } }, []) var g = null != f && f.zIndex ? r.createElement(m, { zIndex: null == f ? void 0 : f.zIndex }, n) : n return s.current ? (0, c.createPortal)(r.createElement(h, { value: s.current }, g), s.current) : r.createElement('span', { ref: i }) }, y = (e) => { var { children: t, containerRef: n, appendToParentPortal: i } = e, u = n.current, l = null != u ? u : s.jU ? document.body : void 0, d = r.useMemo(() => { var e = null == u ? void 0 : u.ownerDocument.createElement('div') return e && (e.className = v), e }, [u]), f = o() return ( (0, a.G)(() => { f() }, []), (0, a.G)(() => { if (d && l) return ( l.appendChild(d), () => { l.removeChild(d) } ) }, [d, l]), l && d ? (0, c.createPortal)(r.createElement(h, { value: i ? d : null }, t), d) : null ) } function b(e) { var { containerRef: t } = e, n = (function (e, t) { if (null == e) return {} var n, r, i = {}, o = Object.keys(e) for (r = 0; r < o.length; r++) (n = o[r]), t.indexOf(n) >= 0 || (i[n] = e[n]) return i })(e, ['containerRef']) return t ? r.createElement(y, f({ containerRef: t }, n)) : r.createElement(g, n) } ;(b.defaultProps = { appendToParentPortal: !0 }), (b.className = v), (b.selector = '.chakra-portal'), u.Ts && (b.displayName = 'Portal') }, 4255: function (e, t, n) { 'use strict' n.d(t, { W: function () { return i }, }) var r = n(7294) function i(e) { return r.Children.toArray(e).filter((e) => r.isValidElement(e)) } }, 2947: function (e, t, n) { 'use strict' n.d(t, { l: function () { return o }, }) var r = n(3808) function i(e, t) { if (null != e) if ((0, r.mf)(e)) e(t) else try { e.current = t } catch (n) { throw new Error("Cannot assign value '" + t + "' to ref '" + e + "'") } } function o() { for (var e = arguments.length, t = new Array(e), n = 0; n < e; n++) t[n] = arguments[n] return (e) => { t.forEach((t) => i(t, e)) } } }, 980: function (e, t, n) { 'use strict' n.d(t, { useTheme: function () { return i.useTheme }, }) n(2300) var r = n(4806) n.o(r, 'useTheme') && n.d(t, { useTheme: function () { return r.useTheme }, }) var i = n(1180) }, 6049: function (e, t, n) { 'use strict' n.d(t, { Ph: function () { return R }, }) var r = n(4461), i = n(658), o = n(4577), a = n(639), s = n(63), u = n(2326), l = n(5284), c = n(9676), d = n(3782), f = n(3808), h = n(8500), p = n(2947), v = n(7294) function m() { return (m = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var n = arguments[t] for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r]) } return e }).apply(this, arguments) } function g(e, t) { if (null == e) return {} var n, r, i = {}, o = Object.keys(e) for (r = 0; r < o.length; r++) (n = o[r]), t.indexOf(n) >= 0 || (i[n] = e[n]) return i } var [y, b] = (0, h.k)({ strict: !1, name: 'FormControlContext' }) var w = (0, s.G)((e, t) => { var n = (0, u.j)('Form', e), s = (function (e) { var { id: t, isRequired: n, isInvalid: s, isDisabled: u, isReadOnly: l } = e, c = g(e, ['id', 'isRequired', 'isInvalid', 'isDisabled', 'isReadOnly']), d = (0, o.Me)(), f = t || 'field-' + d, h = f + '-label', y = f + '-feedback', b = f + '-helptext', [w, x] = v.useState(!1), [E, k] = v.useState(!1), [_, T] = (0, a.k)(), O = v.useCallback( function (e, t) { return ( void 0 === e && (e = {}), void 0 === t && (t = null), m({ id: b }, e, { ref: (0, p.l)(t, (e) => { e && k(!0) }), }) ) }, [b], ), C = v.useCallback( function (e, t) { var n, i return ( void 0 === e && (e = {}), void 0 === t && (t = null), m({}, e, { ref: t, 'data-focus': (0, r.PB)(_), 'data-disabled': (0, r.PB)(u), 'data-invalid': (0, r.PB)(s), 'data-readonly': (0, r.PB)(l), id: null != (n = e.id) ? n : h, htmlFor: null != (i = e.htmlFor) ? i : f, }) ) }, [f, u, _, s, l, h], ), S = v.useCallback( function (e, t) { return ( void 0 === e && (e = {}), void 0 === t && (t = null), m({ id: y }, e, { ref: (0, p.l)(t, (e) => { e && x(!0) }), 'aria-live': 'polite', }) ) }, [y], ), A = v.useCallback( function (e, t) { return ( void 0 === e && (e = {}), void 0 === t && (t = null), m({}, e, c, { ref: t, role: 'group' }) ) }, [c], ), P = v.useCallback(function (e, t) { return ( void 0 === e && (e = {}), void 0 === t && (t = null), m({}, e, { ref: t, role: 'presentation', 'aria-hidden': !0, children: e.children || '*', }) ) }, []), M = v.useCallback(() => { ;(0, i.A4)(T.on) }, [T]) return { isRequired: !!n, isInvalid: !!s, isReadOnly: !!l, isDisabled: !!u, isFocused: !!_, onFocus: M, onBlur: T.off, hasFeedbackText: w, setHasFeedbackText: x, hasHelpText: E, setHasHelpText: k, id: f, labelId: h, feedbackId: y, helpTextId: b, htmlProps: c, getHelpTextProps: O, getErrorMessageProps: S, getRootProps: A, getLabelProps: C, getRequiredIndicatorProps: P, } })((0, l.Lr)(e)), { getRootProps: f } = s, h = g(s, ['getRootProps', 'htmlProps']), b = (0, r.cx)('chakra-form-control', e.className), w = v.useMemo(() => h, [h]) return v.createElement( y, { value: w }, v.createElement( c.Fo, { value: n }, v.createElement( d.m$.div, m({}, f({}, t), { className: b, __css: { width: '100%', position: 'relative' } }), ), ), ) }) f.Ts && (w.displayName = 'FormControl') var x = (0, s.G)((e, t) => { var n = b(), i = (0, c.yK)(), o = (0, r.cx)('chakra-form__helper-text', e.className) return v.createElement( d.m$.div, m({}, null == n ? void 0 : n.getHelpTextProps(e, t), { __css: i.helperText, className: o, }), ) }) function E() { return (E = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var n = arguments[t] for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r]) } return e }).apply(this, arguments) } function k(e, t) { if (null == e) return {} var n, r, i = {}, o = Object.keys(e) for (r = 0; r < o.length; r++) (n = o[r]), t.indexOf(n) >= 0 || (i[n] = e[n]) return i } function _(e) { var t = (function (e) { var t, n, r, o = b(), { id: a, disabled: s, readOnly: u, required: l, isRequired: c, isInvalid: d, isReadOnly: f, isDisabled: h, onFocus: p, onBlur: v, } = e, m = k(e, [ 'id', 'disabled', 'readOnly', 'required', 'isRequired', 'isInvalid', 'isReadOnly', 'isDisabled', 'onFocus', 'onBlur', ]), g = [] null != o && o.hasFeedbackText && null != o && o.isInvalid && g.push(o.feedbackId) null != o && o.hasHelpText && g.push(o.helpTextId) return E({}, m, { 'aria-describedby': g.join(' ') || void 0, id: null != a ? a : null == o ? void 0 : o.id, isDisabled: null != (t = null != s ? s : h) ? t : null == o ? void 0 : o.isDisabled, isReadOnly: null != (n = null != u ? u : f) ? n : null == o ? void 0 : o.isReadOnly, isRequired: null != (r = null != l ? l : c) ? r : null == o ? void 0 : o.isRequired, isInvalid: null != d ? d : null == o ? void 0 : o.isInvalid, onFocus: (0, i.v0)(null == o ? void 0 : o.onFocus, p), onBlur: (0, i.v0)(null == o ? void 0 : o.onBlur, v), }) })(e), { isDisabled: n, isInvalid: o, isReadOnly: a, isRequired: s } = t return E({}, k(t, ['isDisabled', 'isInvalid', 'isReadOnly', 'isRequired']), { disabled: n, readOnly: a, required: s, 'aria-invalid': (0, r.Qm)(o), 'aria-required': (0, r.Qm)(s), 'aria-readonly': (0, r.Qm)(a), }) } f.Ts && (x.displayName = 'FormHelperText') var T = n(9421), O = n(5505), C = n(8554), S = n.n(C) function A() { return (A = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var n = arguments[t] for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r]) } return e }).apply(this, arguments) } function P(e, t) { if (null == e) return {} var n, r, i = {}, o = Object.keys(e) for (r = 0; r < o.length; r++) (n = o[r]), t.indexOf(n) >= 0 || (i[n] = e[n]) return i } var M = (0, s.G)((e, t) => { var { children: n, placeholder: i, className: o } = e, a = _(P(e, ['children', 'placeholder', 'className'])) return v.createElement( d.m$.select, A({}, a, { ref: t, className: (0, r.cx)('chakra-select', o) }), i && v.createElement('option', { value: '' }, i), n, ) }) f.Ts && (M.displayName = 'SelectField') var R = (0, s.G)((e, t) => { var n = (0, u.j)('Select', e), r = (0, l.Lr)(e), { rootProps: i, placeholder: o, icon: a, color: s, height: c, h: f, minH: h, minHeight: p, iconColor: m, iconSize: g, } = r, y = P(r, [ 'rootProps', 'placeholder', 'icon', 'color', 'height', 'h', 'minH', 'minHeight', 'iconColor', 'iconSize', 'isFullWidth', ]), [b, w] = (0, O.Vl)(y, T.layoutPropNames), x = { width: '100%', height: 'fit-content', position: 'relative', color: s }, E = S()({}, n.field, { paddingEnd: '2rem', _focus: { zIndex: 'unset' } }) return v.createElement( d.m$.div, A({ className: 'chakra-select__wrapper', __css: x }, b, i), v.createElement( M, A({ ref: t, height: null != f ? f : c, minH: null != h ? h : p, placeholder: o }, w, { __css: E, }), e.children, ), v.createElement( L, A( { 'data-disabled': e.isDisabled }, (m || s) && { color: m || s }, { __css: n.icon }, g && { fontSize: g }, ), a, ), ) }) f.Ts && (R.displayName = 'Select') var j = (e) => v.createElement( 'svg', A({ viewBox: '0 0 24 24' }, e), v.createElement('path', { fill: 'currentColor', d: 'M16.59 8.59L12 13.17 7.41 8.59 6 10l6 6 6-6z', }), ), D = (0, d.m$)('div', { baseStyle: { position: 'absolute', display: 'inline-flex', alignItems: 'center', justifyContent: 'center', pointerEvents: 'none', top: '50%', transform: 'translateY(-50%)', }, }), L = (e) => { var { children: t = v.createElement(j, null) } = e, n = P(e, ['children']), r = v.cloneElement(t, { role: 'presentation', className: 'chakra-select__icon', focusable: !1, 'aria-hidden': !0, style: { width: '1em', height: '1em', color: 'currentColor' }, }) return v.createElement( D, A({}, n, { className: 'chakra-select__icon-wrapper' }), v.isValidElement(t) ? r : null, ) } f.Ts && (L.displayName = 'SelectIcon') }, 3014: function (e, t, n) { 'use strict' n.d(t, { iR: function () { return le }, Ms: function () { return fe }, gs: function () { return ce }, Uj: function () { return de }, }) var r = n(63), i = n(2326), o = n(5284), a = n(9676), s = n(3782), u = n(3808), l = n(4461), c = n(8500), d = n(7294), f = n(762), h = n(1034), p = n(639) var v = n(4577), m = 'Invariant failed' var g = function (e, t) { if (!e) throw new Error(m) }, y = function (e) { var t = e.top, n = e.right, r = e.bottom, i = e.left return { top: t, right: n, bottom: r, left: i, width: n - i, height: r - t, x: i, y: t, center: { x: (n + i) / 2, y: (r + t) / 2 }, } }, b = function (e, t) { return { top: e.top + t.top, left: e.left + t.left, bottom: e.bottom - t.bottom, right: e.right - t.right, } }, w = { top: 0, right: 0, bottom: 0, left: 0 }, x = function (e) { var t, n, r = e.borderBox, i = e.margin, o = void 0 === i ? w : i, a = e.border, s = void 0 === a ? w : a, u = e.padding, l = void 0 === u ? w : u, c = y( ((n = o), { top: (t = r).top - n.top, left: t.left - n.left, bottom: t.bottom + n.bottom, right: t.right + n.right, }), ), d = y(b(r, s)), f = y(b(d, l)) return { marginBox: c, borderBox: y(r), paddingBox: d, contentBox: f, margin: o, border: s, padding: l, } }, E = function (e) { var t = e.slice(0, -2) if ('px' !== e.slice(-2)) return 0 var n = Number(t) return isNaN(n) && g(!1), n }, k = function (e) { return (function (e, t) { var n = { top: E(t.marginTop), right: E(t.marginRight), bottom: E(t.marginBottom), left: E(t.marginLeft), }, r = { top: E(t.paddingTop), right: E(t.paddingRight), bottom: E(t.paddingBottom), left: E(t.paddingLeft), }, i = { top: E(t.borderTopWidth), right: E(t.borderRightWidth), bottom: E(t.borderBottomWidth), left: E(t.borderLeftWidth), } return x({ borderBox: e, margin: n, padding: r, border: i }) })(e.getBoundingClientRect(), window.getComputedStyle(e)) }, _ = n(8327) var T = n(2653), O = n(9839) function C(e) { return !!e.touches } var S = { pageX: 0, pageY: 0 } function A(e, t) { void 0 === t && (t = 'page') var n = e.touches[0] || e.changedTouches[0] || S return { x: n[t + 'X'], y: n[t + 'Y'] } } function P(e, t) { return void 0 === t && (t = 'page'), { x: e[t + 'X'], y: e[t + 'Y'] } } function M(e, t) { return void 0 === t && (t = 'page'), { point: C(e) ? A(e, t) : P(e, t) } } var R = function (e, t) { void 0 === t && (t = !1) var n, r = (t) => e(t, M(t)) return t ? ((n = r), (e) => { var t = e instanceof MouseEvent ;(!t || (t && 0 === e.button)) && n(e) }) : r }, j = { pointerdown: 'mousedown', pointermove: 'mousemove', pointerup: 'mouseup', pointercancel: 'mousecancel', pointerover: 'mouseover', pointerout: 'mouseout', pointerenter: 'mouseenter', pointerleave: 'mouseleave', }, D = { pointerdown: 'touchstart', pointermove: 'touchmove', pointerup: 'touchend', pointercancel: 'touchcancel', } function L(e) { return l.jU && null === window.onpointerdown ? e : l.jU && null === window.ontouchstart ? D[e] : l.jU && null === window.onmousedown ? j[e] : e } function N(e, t, n, r) { return (0, l.EV)(e, L(t), R(n, 'pointerdown' === t), r) } var I = n(658) function z() { return (z = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var n = arguments[t] for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r]) } return e }).apply(this, arguments) } function H(e, t, n) { return ( t in e ? Object.defineProperty(e, t, { value: n, enumerable: !0, configurable: !0, writable: !0, }) : (e[t] = n), e ) } class B { constructor(e, t, n) { if ( (H(this, 'history', []), H(this, 'startEvent', null), H(this, 'lastEvent', null), H(this, 'lastEventInfo', null), H(this, 'handlers', {}), H(this, 'removeListeners', I.ZT), H(this, 'threshold', 3), H(this, 'updatePoint', () => { if (this.lastEvent && this.lastEventInfo) { var e = G(this.lastEventInfo, this.history), t = null !== this.startEvent, n = (0, I.TE)(e.offset, { x: 0, y: 0 }) >= this.threshold if (t || n) { var { timestamp: r } = (0, O.$B)() this.history.push(z({}, e.point, { timestamp: r })) var { onStart: i, onMove: o } = this.handlers t || (null == i || i(this.lastEvent, e), (this.startEvent = this.lastEvent)), null == o || o(this.lastEvent, e) } } }), H(this, 'onPointerMove', (e, t) => { ;(this.lastEvent = e), (this.lastEventInfo = t), (function (e) { return 'undefined' !== typeof PointerEvent && e instanceof PointerEvent ? !('mouse' !== e.pointerType) : e instanceof MouseEvent })(e) && 0 === e.buttons ? this.onPointerUp(e, t) : O.ZP.update(this.updatePoint, !0) }), H(this, 'onPointerUp', (e, t) => { var n = G(t, this.history), { onEnd: r, onSessionEnd: i } = this.handlers null == i || i(e, n), this.end(), r && this.startEvent && (null == r || r(e, n)) }), !(C((r = e)) && r.touches.length > 1)) ) { var r ;(this.handlers = t), n && (this.threshold = n), e.stopPropagation(), e.preventDefault() var i = M(e), { timestamp: o } = (0, O.$B)() this.history = [z({}, i.point, { timestamp: o })] var { onSessionStart: a } = t null == a || a(e, G(i, this.history)), (this.removeListeners = (0, I.zG)( N(window, 'pointermove', this.onPointerMove), N(window, 'pointerup', this.onPointerUp), N(window, 'pointercancel', this.onPointerUp), )) } } updateHandlers(e) { this.handlers = e } end() { var e null == (e = this.removeListeners) || e.call(this), O.qY.update(this.updatePoint) } } function F(e, t) { return { x: e.x - t.x, y: e.y - t.y } } function V(e) { return e[0] } function U(e) { return e[e.length - 1] } function G(e, t) { return { point: e.point, delta: F(e.point, U(t)), offset: F(e.point, V(t)), velocity: q(t, 0.1), } } function q(e, t) { if (e.length < 2) return { x: 0, y: 0 } for ( var n = e.length - 1, r = null, i = (function (e) { return e[e.length - 1] })(e); n >= 0 && ((r = e[n]), !(i.timestamp - r.timestamp > 1e3 * t)); ) n-- if (!r) return { x: 0, y: 0 } var o = (i.timestamp - r.timestamp) / 1e3 if (0 === o) return { x: 0, y: 0 } var a = { x: (i.x - r.x) / o, y: (i.y - r.y) / o } return a.x === 1 / 0 && (a.x = 0), a.y === 1 / 0 && (a.y = 0), a } var W = n(4941) var K = n(7581) function Z(e, t) { var n, r, i, o, { onPan: a, onPanStart: s, onPanEnd: u, onPanSessionStart: l, onPanSessionEnd: c } = t, f = Boolean(a || s || u || l || c), h = (0, d.useRef)(null), p = { onSessionStart: l, onSessionEnd: c, onStart: s, onMove: a, onEnd(e, t) { ;(h.current = null), null == u || u(e, t) }, } ;(0, d.useEffect)(() => { var e null == (e = h.current) || e.updateHandlers(p) }), (n = () => e.current), (r = 'pointerdown'), (i = f ? function (e) { h.current = new B(e, p) } : I.ZT), (0, W.O)(L(r), R(i, 'pointerdown' === r), n, o), (0, K.z)(() => { var e null == (e = h.current) || e.end(), (h.current = null) }) } var $ = n(2947) Number.MIN_SAFE_INTEGER, Number.MAX_SAFE_INTEGER function X(e, t) { var n = (function (e) { var t = parseFloat(e) return (0, u.iy)(t) ? 0 : t })(e), r = 10 ** (null != t ? t : 10) return (n = Math.round(n * r) / r), t ? n.toFixed(t) : n.toString() } function Y(e, t, n) { return (100 * (e - t)) / (n - t) } function Q(e, t, n) { return X( Math.round((e - t) / n) * n + t, (function (e) { if (!Number.isFinite(e)) return 0 for (var t = 1, n = 0; Math.round(e * t) / t !== e; ) (t *= 10), (n += 1) return n })(n), ) } function J(e, t, n) { return null == e ? e : ((0, I.ZK)({ condition: n < t, message: 'clamp: max cannot be less than min' }), Math.min(Math.max(e, t), n)) } var ee = n(7248) function te() { return (te = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var n = arguments[t] for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r]) } return e }).apply(this, arguments) } function ne(e) { var { orientation: t, vertical: n, horizontal: r } = e return 'vertical' === t ? n : r } function re() { return (re = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var n = arguments[t] for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r]) } return e }).apply(this, arguments) } function ie(e) { var t, { min: n = 0, max: r = 100, onChange: i, value: o, defaultValue: a, isReversed: s, orientation: u = 'horizontal', id: c, isDisabled: m, isReadOnly: g, onChangeStart: y, onChangeEnd: b, step: w = 1, getAriaValueText: x, 'aria-valuetext': E, 'aria-label': O, 'aria-labelledby': C, name: S, focusThumbOnChange: A = !0, } = e, P = (function (e, t) { if (null == e) return {} var n, r, i = {}, o = Object.keys(e) for (r = 0; r < o.length; r++) (n = o[r]), t.indexOf(n) >= 0 || (i[n] = e[n]) return i })(e, [ 'min', 'max', 'onChange', 'value', 'defaultValue', 'isReversed', 'orientation', 'id', 'isDisabled', 'isReadOnly', 'onChangeStart', 'onChangeEnd', 'step', 'getAriaValueText', 'aria-valuetext', 'aria-label', 'aria-labelledby', 'name', 'focusThumbOnChange', ]), M = (0, f.W)(y), R = (0, f.W)(b), j = (0, f.W)(x), [D, L] = (0, h.T)({ value: o, defaultValue: null != a ? a : oe(n, r), onChange: i }), [N, z] = (0, p.k)(), H = (function (e) { var t = (0, d.useRef)() return ( (0, d.useEffect)(() => { t.current = e }, [e]), t.current ) })(N), [B, F] = (0, p.k)(), V = (0, d.useRef)(null), U = !(m || g), G = J(D, n, r), q = (function (e) { var t = d.useRef(null) return (t.current = e), t })(G), W = (0, d.useRef)(q.current), K = Y(s ? r - G + n : G, n, r), X = 'vertical' === u, ie = (0, d.useRef)(null), ae = (0, d.useRef)(null), se = (0, d.useRef)(null), [ue, le] = (0, v.ZS)(c, 'slider-thumb', 'slider-track'), ce = (0, d.useCallback)( (e) => { var t, i if (ie.current) { V.current = 'pointer' var o = k(ie.current).borderBox, { clientX: a, clientY: u } = null != (t = null == (i = e.touches) ? void 0 : i[0]) ? t : e, l = (X ? o.bottom - u : a - o.left) / (X ? o.height : o.width) s && (l = 1 - l) var c = (function (e, t, n) { return (n - t) * e + t })(l, n, r) return w && (c = parseFloat(Q(c, n, w))), (c = J(c, n, r)) } }, [X, s, r, n, w], ), de = (r - n) / 10, fe = w || (r - n) / 100, he = (0, d.useCallback)( (e) => { U && ((e = J((e = parseFloat(Q(e, n, fe))), n, r)), L(e)) }, [fe, r, n, L, U], ), pe = (0, d.useMemo)( () => ({ stepUp: function (e) { void 0 === e && (e = fe), he(s ? G - e : G + e) }, stepDown: function (e) { void 0 === e && (e = fe), he(s ? G + e : G - e) }, reset: () => he(a || 0), stepTo: (e) => he(e), }), [he, s, G, fe, a], ), ve = (0, d.useCallback)( (e) => { var t = { ArrowRight: () => pe.stepUp(), ArrowUp: () => pe.stepUp(), ArrowLeft: () => pe.stepDown(), ArrowDown: () => pe.stepDown(), PageUp: () => pe.stepUp(de), PageDown: () => pe.stepDown(de), Home: () => he(n), End: () => he(r), }[(0, l.uh)(e)] t && (e.preventDefault(), e.stopPropagation(), t(e), (V.current = 'keyboard')) }, [pe, he, r, n, de], ), me = null != (t = null == j ? void 0 : j(G)) ? t : E, ge = (function (e, t) { var [n, r] = d.useState(null), i = d.useRef() return ( (0, _.G)(() => { if (e.current) { var n = e.current return ( o(), t && (window.addEventListener('resize', o), window.addEventListener('scroll', o)), () => { t && (window.removeEventListener('resize', o), window.removeEventListener('scroll', o)), i.current && cancelAnimationFrame(i.current) } ) } function o() { i.current = requestAnimationFrame(() => { var e = k(n) r(e) }) } }, [t]), n ) })(ae), { thumbStyle: ye, rootStyle: be, trackStyle: we, innerTrackStyle: xe, } = (0, d.useMemo)(() => { var e, t = null != (e = null == ge ? void 0 : ge.borderBox) ? e : { width: 0, height: 0 } return (function (e) { var { orientation: t, trackPercent: n, thumbRect: r, isReversed: i } = e, o = te( { position: 'absolute', userSelect: 'none', WebkitUserSelect: 'none', MozUserSelect: 'none', msUserSelect: 'none', touchAction: 'none', }, ne({ orientation: t, vertical: { bottom: 'calc(' + n + '% - ' + r.height / 2 + 'px)' }, horizontal: { left: 'calc(' + n + '% - ' + r.width / 2 + 'px)' }, }), ), a = te( { position: 'relative', touchAction: 'none', WebkitTapHighlightColor: 'rgba(0,0,0,0)', userSelect: 'none', outline: 0, }, ne({ orientation: t, vertical: { paddingLeft: r.width / 2, paddingRight: r.width / 2 }, horizontal: { paddingTop: r.height / 2, paddingBottom: r.height / 2 }, }), ), s = te( { position: 'absolute' }, ne({ orientation: t, vertical: { left: '50%', transform: 'translateX(-50%)', height: '100%' }, horizontal: { top: '50%', transform: 'translateY(-50%)', width: '100%' }, }), ) return { trackStyle: s, innerTrackStyle: te( {}, s, ne({ orientation: t, vertical: i ? { height: 100 - n + '%', top: 0 } : { height: n + '%', bottom: 0 }, horizontal: i ? { width: 100 - n + '%', right: 0 } : { width: n + '%', left: 0 }, }), ), rootStyle: a, thumbStyle: o, } })({ isReversed: s, orientation: u, thumbRect: t, trackPercent: K }) }, [s, u, null == ge ? void 0 : ge.borderBox, K]), Ee = (0, d.useCallback)(() => { ae.current && A && setTimeout(() => (0, ee.T)(ae.current)) }, [A]) ;(0, T.r)(() => { Ee(), 'keyboard' === V.current && (null == b || b(q.current)) }, [G, b]) var ke = (e) => { var t = ce(e) null != t && t !== q.current && L(t) } Z(se, { onPanSessionStart(e) { U && ke(e) }, onPanSessionEnd() { U && (H || W.current === q.current || (null == R || R(q.current), (W.current = q.current))) }, onPanStart() { U && (z.on(), null == M || M(q.current)) }, onPan(e) { U && ke(e) }, onPanEnd() { U && (z.off(), null == R || R(q.current)) }, }) var _e = (0, d.useCallback)( function (e, t) { return ( void 0 === e && (e = {}), void 0 === t && (t = null), re({}, e, P, { ref: (0, $.l)(t, se), tabIndex: -1, 'aria-disabled': (0, l.Qm)(m), 'data-focused': (0, l.PB)(B), style: re({}, e.style, be), }) ) }, [P, m, B, be], ), Te = (0, d.useCallback)( function (e, t) { return ( void 0 === e && (e = {}), void 0 === t && (t = null), re({}, e, { ref: (0, $.l)(t, ie), id: le, 'data-disabled': (0, l.PB)(m), style: re({}, e.style, we), }) ) }, [m, le, we], ), Oe = (0, d.useCallback)( function (e, t) { return ( void 0 === e && (e = {}), void 0 === t && (t = null), re({}, e, { ref: t, style: re({}, e.style, xe) }) ) }, [xe], ), Ce = (0, d.useCallback)( function (e, t) { return ( void 0 === e && (e = {}), void 0 === t && (t = null), re({}, e, { ref: (0, $.l)(t, ae), role: 'slider', tabIndex: U ? 0 : void 0, id: ue, 'data-active': (0, l.PB)(N), 'aria-valuetext': me, 'aria-valuemin': n, 'aria-valuemax': r, 'aria-valuenow': G, 'aria-orientation': u, 'aria-disabled': (0, l.Qm)(m), 'aria-readonly': (0, l.Qm)(g), 'aria-label': O, 'aria-labelledby': O ? void 0 : C, style: re({}, e.style, ye), onKeyDown: (0, I.v0)(e.onKeyDown, ve), onFocus: (0, I.v0)(e.onFocus, F.on), onBlur: (0, I.v0)(e.onBlur, F.off), }) ) }, [O, C, m, N, g, U, r, n, ve, u, F.off, F.on, ue, ye, G, me], ), Se = (0, d.useCallback)( function (e, t) { void 0 === e && (e = {}), void 0 === t && (t = null) var i = !(e.value < n || e.value > r), o = G >= e.value, a = Y(e.value, n, r), c = re( { position: 'absolute', pointerEvents: 'none' }, (function (e) { var { orientation: t, vertical: n, horizontal: r } = e return 'vertical' === t ? n : r })({ orientation: u, vertical: { bottom: s ? 100 - a + '%' : a + '%' }, horizontal: { left: s ? 100 - a + '%' : a + '%' }, }), ) return re({}, e, { ref: t, role: 'presentation', 'aria-hidden': !0, 'data-disabled': (0, l.PB)(m), 'data-invalid': (0, l.PB)(!i), 'data-highlighted': (0, l.PB)(o), style: re({}, e.style, c), }) }, [m, s, r, n, u, G], ), Ae = (0, d.useCallback)( function (e, t) { return ( void 0 === e && (e = {}), void 0 === t && (t = null), re({}, e, { ref: t, type: 'hidden', value: G, name: S }) ) }, [S, G], ) return { state: { value: G, isFocused: B, isDragging: N }, actions: pe, getRootProps: _e, getTrackProps: Te, getInnerTrackProps: Oe, getThumbProps: Ce, getMarkerProps: Se, getInputProps: Ae, } } function oe(e, t) { return t < e ? e : e + (t - e) / 2 } function ae() { return (ae = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var n = arguments[t] for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r]) } return e }).apply(this, arguments) } var [se, ue] = (0, c.k)({ name: 'SliderContext', errorMessage: 'useSliderContext: `context` is undefined. Seems you forgot to wrap all slider components within ', }), le = (0, r.G)((e, t) => { var n = (0, i.j)('Slider', e), r = ie((0, o.Lr)(e)), { getInputProps: u, getRootProps: l } = r, c = (function (e, t) { if (null == e) return {} var n, r, i = {}, o = Object.keys(e) for (r = 0; r < o.length; r++) (n = o[r]), t.indexOf(n) >= 0 || (i[n] = e[n]) return i })(r, ['getInputProps', 'getRootProps']), f = l(), h = u({}, t), p = ae( { display: 'inline-block', position: 'relative', cursor: 'pointer' }, n.container, ) return d.createElement( se, { value: c }, d.createElement( a.Fo, { value: n }, d.createElement( s.m$.div, ae({}, f, { className: 'chakra-slider', __css: p }), e.children, d.createElement('input', h), ), ), ) }) ;(le.defaultProps = { orientation: 'horizontal' }), u.Ts && (le.displayName = 'Slider') var ce = (0, r.G)((e, t) => { var { getThumbProps: n } = ue(), r = ae( { display: 'flex', alignItems: 'center', justifyContent: 'center', position: 'absolute', outline: 0, }, (0, a.yK)().thumb, ), i = n(e, t) return d.createElement( s.m$.div, ae({}, i, { className: (0, l.cx)('chakra-slider__thumb', e.className), __css: r }), ) }) u.Ts && (ce.displayName = 'SliderThumb') var de = (0, r.G)((e, t) => { var { getTrackProps: n } = ue(), r = ae({ overflow: 'hidden' }, (0, a.yK)().track), i = n(e, t) return d.createElement( s.m$.div, ae({}, i, { className: (0, l.cx)('chakra-slider__track', e.className), __css: r }), ) }) u.Ts && (de.displayName = 'SliderTrack') var fe = (0, r.G)((e, t) => { var { getInnerTrackProps: n } = ue(), r = ae({ width: 'inherit', height: 'inherit' }, (0, a.yK)().filledTrack), i = n(e, t) return d.createElement( s.m$.div, ae({}, i, { className: 'chakra-slider__filled-track', __css: r }), ) }) u.Ts && (fe.displayName = 'SliderFilledTrack') var he = (0, r.G)((e, t) => { var { getMarkerProps: n } = ue(), r = n(e, t) return d.createElement( s.m$.div, ae({}, r, { className: (0, l.cx)('chakra-slider__marker', e.className) }), ) }) u.Ts && (he.displayName = 'SliderMark') }, 8134: function (e, t, n) { 'use strict' n.d(t, { r: function () { return E }, }) var r = n(762), i = n(639), o = n(1034), a = n(8327), s = n(2947), u = n(658), l = n(4461), c = n(7248), d = n(5415), f = n(7294) function h() { return (h = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var n = arguments[t] for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r]) } return e }).apply(this, arguments) } function p(e) { void 0 === e && (e = {}) var { defaultIsChecked: t, defaultChecked: n = t, isChecked: p, isFocusable: m, isDisabled: g, isReadOnly: y, isRequired: b, onChange: w, isIndeterminate: x, isInvalid: E, name: k, value: _, id: T, onBlur: O, onFocus: C, 'aria-label': S, 'aria-labelledby': A, 'aria-invalid': P, 'aria-describedby': M, } = e, R = (function (e, t) { if (null == e) return {} var n, r, i = {}, o = Object.keys(e) for (r = 0; r < o.length; r++) (n = o[r]), t.indexOf(n) >= 0 || (i[n] = e[n]) return i })(e, [ 'defaultIsChecked', 'defaultChecked', 'isChecked', 'isFocusable', 'isDisabled', 'isReadOnly', 'isRequired', 'onChange', 'isIndeterminate', 'isInvalid', 'name', 'value', 'id', 'onBlur', 'onFocus', 'aria-label', 'aria-labelledby', 'aria-invalid', 'aria-describedby', ]), j = (0, r.W)(w), D = (0, r.W)(O), L = (0, r.W)(C), [N, I] = (0, i.k)(), [z, H] = (0, i.k)(), [B, F] = (0, i.k)(), V = (0, f.useRef)(null), [U, G] = (0, f.useState)(!0), [q, W] = (0, f.useState)(!!n), [K, Z] = (0, o.p)(p, q) ;(0, u.ZK)({ condition: !!t, message: 'The "defaultIsChecked" prop has been deprecated and will be removed in a future version. Please use the "defaultChecked" prop instead, which mirrors default React checkbox behavior.', }) var $ = (0, f.useCallback)( (e) => { y || g ? e.preventDefault() : (K || W(Z ? e.target.checked : !!x || e.target.checked), null == j || j(e)) }, [y, g, Z, K, x, j], ) ;(0, a.G)(() => { V.current && (V.current.indeterminate = Boolean(x)) }, [x]) var X = g && !m, Y = (0, f.useCallback)( (e) => { ' ' === e.key && F.on() }, [F], ), Q = (0, f.useCallback)( (e) => { ' ' === e.key && F.off() }, [F], ) ;(0, a.G)(() => { V.current && V.current.checked !== Z && W(V.current.checked) }, [V.current]) var J = (0, f.useCallback)( function (e, t) { void 0 === e && (e = {}), void 0 === t && (t = null) return h({}, e, { ref: t, 'data-active': (0, l.PB)(B), 'data-hover': (0, l.PB)(z), 'data-checked': (0, l.PB)(Z), 'data-focus': (0, l.PB)(N), 'data-indeterminate': (0, l.PB)(x), 'data-disabled': (0, l.PB)(g), 'data-invalid': (0, l.PB)(E), 'data-readonly': (0, l.PB)(y), 'aria-hidden': !0, onMouseDown: (0, u.v0)(e.onMouseDown, (e) => { e.preventDefault(), F.on() }), onMouseUp: (0, u.v0)(e.onMouseUp, F.off), onMouseEnter: (0, u.v0)(e.onMouseEnter, H.on), onMouseLeave: (0, u.v0)(e.onMouseLeave, H.off), }) }, [B, Z, g, N, z, x, E, y, F, H.off, H.on], ), ee = (0, f.useCallback)( function (e, t) { return ( void 0 === e && (e = {}), void 0 === t && (t = null), h({}, R, e, { ref: (0, s.l)(t, (e) => { e && G('LABEL' === e.tagName) }), onClick: (0, u.v0)(e.onClick, () => { var e U || (null == (e = V.current) || e.click(), (0, c.T)(V.current, { nextTick: !0 })) }), 'data-disabled': (0, l.PB)(g), }) ) }, [R, g, U], ), te = (0, f.useCallback)( function (e, t) { void 0 === e && (e = {}), void 0 === t && (t = null) return h({}, e, { ref: (0, s.l)(V, t), type: 'checkbox', name: k, value: _, id: T, onChange: (0, u.v0)(e.onChange, $), onBlur: (0, u.v0)(e.onBlur, D, I.off), onFocus: (0, u.v0)(e.onFocus, L, () => { ;(0, u.A4)(I.on) }), onKeyDown: (0, u.v0)(e.onKeyDown, Y), onKeyUp: (0, u.v0)(e.onKeyUp, Q), required: b, checked: Z, disabled: X, readOnly: y, 'aria-label': S, 'aria-labelledby': A, 'aria-invalid': P ? Boolean(P) : E, 'aria-describedby': M, 'aria-disabled': g, style: d.NL, }) }, [k, _, T, $, I.off, I.on, D, L, Y, Q, b, Z, X, y, S, A, P, E, M, g], ), ne = (0, f.useCallback)( function (e, t) { return ( void 0 === e && (e = {}), void 0 === t && (t = null), h({}, e, { ref: t, onMouseDown: (0, u.v0)(e.onMouseDown, v), onTouchStart: (0, u.v0)(e.onTouchStart, v), 'data-disabled': (0, l.PB)(g), 'data-checked': (0, l.PB)(Z), 'data-invalid': (0, l.PB)(E), }) ) }, [Z, g, E], ) return { state: { isInvalid: E, isFocused: N, isChecked: Z, isActive: B, isHovered: z, isIndeterminate: x, isDisabled: g, isReadOnly: y, isRequired: b, }, getRootProps: ee, getCheckboxProps: J, getInputProps: te, getLabelProps: ne, htmlProps: R, } } function v(e) { e.preventDefault(), e.stopPropagation() } var m = n(63), g = n(2326), y = n(5284), b = n(3782), w = n(3808) function x() { return (x = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var n = arguments[t] for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r]) } return e }).apply(this, arguments) } var E = (0, m.G)((e, t) => { var n = (0, g.j)('Switch', e), r = (0, y.Lr)(e), { spacing: i = '0.5rem', children: o } = r, a = (function (e, t) { if (null == e) return {} var n, r, i = {}, o = Object.keys(e) for (r = 0; r < o.length; r++) (n = o[r]), t.indexOf(n) >= 0 || (i[n] = e[n]) return i })(r, ['spacing', 'children']), { state: s, getInputProps: u, getCheckboxProps: c, getRootProps: d, getLabelProps: h, } = p(a), v = f.useMemo( () => x( { display: 'inline-block', verticalAlign: 'middle', lineHeight: 'normal' }, n.container, ), [n.container], ), m = f.useMemo( () => x( { display: 'inline-flex', flexShrink: 0, justifyContent: 'flex-start', boxSizing: 'content-box', cursor: 'pointer', }, n.track, ), [n.track], ), w = f.useMemo(() => x({ userSelect: 'none', marginStart: i }, n.label), [i, n.label]) return f.createElement( b.m$.label, x({}, d(), { className: (0, l.cx)('chakra-switch', e.className), __css: v }), f.createElement('input', x({ className: 'chakra-switch__input' }, u({}, t))), f.createElement( b.m$.span, x({}, c(), { className: 'chakra-switch__track', __css: m }), f.createElement(b.m$.span, { __css: n.thumb, className: 'chakra-switch__thumb', 'data-checked': (0, l.PB)(s.isChecked), 'data-hover': (0, l.PB)(s.isHovered), }), ), o && f.createElement( b.m$.span, x({ className: 'chakra-switch__label' }, h(), { __css: w }), o, ), ) }) w.Ts && (E.displayName = 'Switch') }, 63: function (e, t, n) { 'use strict' n.d(t, { G: function () { return i }, }) var r = n(7294) function i(e) { return r.forwardRef(e) } }, 1180: function (e, t, n) { 'use strict' n.d(t, { useTheme: function () { return o.Fg }, }) var r = n(9421) n.o(r, 'useTheme') && n.d(t, { useTheme: function () { return r.useTheme }, }) var i = n(5070) n.o(i, 'useTheme') && n.d(t, { useTheme: function () { return i.useTheme }, }) var o = n(9676) }, 3782: function (e, t, n) { 'use strict' n.d(t, { m$: function () { return T }, }) var r = n(9421), i = n(5505), o = n(658), a = n(7294) function s() { return (s = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var n = arguments[t] for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r]) } return e }).apply(this, arguments) } var u = n(7866), l = /^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|download|draggable|encType|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|translate|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|fallback|inert|itemProp|itemScope|itemType|itemID|itemRef|on|option|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/, c = (0, u.Z)(function (e) { return ( l.test(e) || (111 === e.charCodeAt(0) && 110 === e.charCodeAt(1) && e.charCodeAt(2) < 91) ) }), d = n(2544), f = n(444), h = n(4199), p = c, v = function (e) { return 'theme' !== e }, m = function (e) { return 'string' === typeof e && e.charCodeAt(0) > 96 ? p : v }, g = function (e, t, n) { var r if (t) { var i = t.shouldForwardProp r = e.__emotion_forwardProp && i ? function (t) { return e.__emotion_forwardProp(t) && i(t) } : i } return 'function' !== typeof r && n && (r = e.__emotion_forwardProp), r }, y = function e(t, n) { var r, i, o = t.__emotion_real === t, u = (o && t.__emotion_base) || t void 0 !== n && ((r = n.label), (i = n.target)) var l = g(t, n, o), c = l || m(u), p = !c('as') return function () { var v = arguments, y = o && void 0 !== t.__emotion_styles ? t.__emotion_styles.slice(0) : [] if ((void 0 !== r && y.push('label:' + r + ';'), null == v[0] || void 0 === v[0].raw)) y.push.apply(y, v) else { 0, y.push(v[0][0]) for (var b = v.length, w = 1; w < b; w++) y.push(v[w], v[0][w]) } var x = (0, d.w)(function (e, t, n) { var r = (p && e.as) || u, o = '', s = [], v = e if (null == e.theme) { for (var g in ((v = {}), e)) v[g] = e[g] v.theme = (0, a.useContext)(d.T) } 'string' === typeof e.className ? (o = (0, f.f)(t.registered, s, e.className)) : null != e.className && (o = e.className + ' ') var b = (0, h.O)(y.concat(s), t.registered, v) ;(0, f.M)(t, b, 'string' === typeof r) ;(o += t.key + '-' + b.name), void 0 !== i && (o += ' ' + i) var w = p && void 0 === l ? m(r) : c, x = {} for (var E in e) (p && 'as' === E) || (w(E) && (x[E] = e[E])) return (x.className = o), (x.ref = n), (0, a.createElement)(r, x) }) return ( (x.displayName = void 0 !== r ? r : 'Styled(' + ('string' === typeof u ? u : u.displayName || u.name || 'Component') + ')'), (x.defaultProps = t.defaultProps), (x.__emotion_real = x), (x.__emotion_base = u), (x.__emotion_styles = y), (x.__emotion_forwardProp = l), Object.defineProperty(x, 'toString', { value: function () { return '.' + i }, }), (x.withComponent = function (t, r) { return e(t, s({}, n, r, { shouldForwardProp: g(x, r, !0) })).apply(void 0, y) }), x ) } }.bind() ;[ 'a', 'abbr', 'address', 'area', 'article', 'aside', 'audio', 'b', 'base', 'bdi', 'bdo', 'big', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'cite', 'code', 'col', 'colgroup', 'data', 'datalist', 'dd', 'del', 'details', 'dfn', 'dialog', 'div', 'dl', 'dt', 'em', 'embed', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'iframe', 'img', 'input', 'ins', 'kbd', 'keygen', 'label', 'legend', 'li', 'link', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meta', 'meter', 'nav', 'noscript', 'object', 'ol', 'optgroup', 'option', 'output', 'p', 'param', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'script', 'section', 'select', 'small', 'source', 'span', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'textarea', 'tfoot', 'th', 'thead', 'time', 'title', 'tr', 'track', 'u', 'ul', 'var', 'video', 'wbr', 'circle', 'clipPath', 'defs', 'ellipse', 'foreignObject', 'g', 'image', 'line', 'linearGradient', 'mask', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'stop', 'svg', 'text', 'tspan', ].forEach(function (e) { y[e] = y(e) }) var b = y, w = new Set([ ...r.propNames, 'textStyle', 'layerStyle', 'apply', 'isTruncated', 'noOfLines', 'focusBorderColor', 'errorBorderColor', 'as', '__css', 'css', 'sx', ]), x = new Set(['htmlWidth', 'htmlHeight', 'htmlSize']), E = (e) => x.has(e) || !w.has(e), k = n(5284) function _(e, t) { if (null == e) return {} var n, r, i = {}, o = Object.keys(e) for (r = 0; r < o.length; r++) (n = o[r]), t.indexOf(n) >= 0 || (i[n] = e[n]) return i } var T = function (e, t) { var n = null != t ? t : {}, { baseStyle: a } = n, s = _(n, ['baseStyle']) s.shouldForwardProp || (s.shouldForwardProp = E) var u = ((e) => { var { baseStyle: t } = e return (e) => { var { css: n, __css: a, sx: s } = e, u = _(e, ['theme', 'css', '__css', 'sx']), l = (0, i.lw)(u, (e, t) => (0, r.isStyleProp)(t)), c = (0, o.Pu)(t, e), d = Object.assign({}, a, c, (0, i.YU)(l), s), f = (0, r.iv)(d)(e.theme) return n ? [f, n] : f } })({ baseStyle: a }) return b(e, s)(u) } k.t6.forEach((e) => { T[e] = T(e) }) }, 5070: function () {}, 5284: function (e, t, n) { 'use strict' n.d(t, { t6: function () { return i }, Lr: function () { return o }, }) var r = n(5505), i = [ 'a', 'b', 'article', 'aside', 'blockquote', 'button', 'caption', 'cite', 'circle', 'code', 'dd', 'div', 'dl', 'dt', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'header', 'hr', 'img', 'input', 'kbd', 'label', 'li', 'main', 'mark', 'nav', 'ol', 'p', 'path', 'pre', 'q', 'rect', 's', 'svg', 'section', 'select', 'strong', 'small', 'span', 'sub', 'sup', 'table', 'tbody', 'td', 'textarea', 'tfoot', 'th', 'thead', 'tr', 'ul', ] function o(e) { return (0, r.CE)(e, ['styleConfig', 'size', 'variant', 'colorScheme']) } }, 2326: function (e, t, n) { 'use strict' n.d(t, { j: function () { return v }, m: function () { return p }, }) var r = n(5505), i = n(8554), o = n.n(i), a = n(658), s = n(7294), u = n(9590), l = n.n(u), c = n(4738), d = n(9676) function f() { return (f = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var n = arguments[t] for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r]) } return e }).apply(this, arguments) } function h() { return f({}, (0, c.If)(), { theme: (0, d.Fg)() }) } function p(e, t, n) { var i, u void 0 === t && (t = {}), void 0 === n && (n = {}) var { styleConfig: c } = t, d = (function (e, t) { if (null == e) return {} var n, r, i = {}, o = Object.keys(e) for (r = 0; r < o.length; r++) (n = o[r]), t.indexOf(n) >= 0 || (i[n] = e[n]) return i })(t, ['styleConfig']), { theme: f, colorMode: p } = h(), v = (0, r.Wf)(f, 'components.' + e), m = c || v, g = o()( { theme: f, colorMode: p }, null != (i = null == m ? void 0 : m.defaultProps) ? i : {}, (0, r.YU)((0, r.CE)(d, ['children'])), ), y = (0, s.useRef)({}) return (0, s.useMemo)(() => { if (m) { var e, t, r, i, s, u, c = (0, a.Pu)(null != (e = m.baseStyle) ? e : {}, g), d = (0, a.Pu)( null != (t = null == (r = m.variants) ? void 0 : r[g.variant]) ? t : {}, g, ), f = (0, a.Pu)(null != (i = null == (s = m.sizes) ? void 0 : s[g.size]) ? i : {}, g), h = o()({}, c, f, d) null != (u = n) && u.isMultiPart && m.parts && m.parts.forEach((e) => { var t h[e] = null != (t = h[e]) ? t : {} }), l()(y.current, h) || (y.current = h) } return y.current }, [m, g, null == (u = n) ? void 0 : u.isMultiPart]) } function v(e, t) { return p(e, t, { isMultiPart: !0 }) } }, 6699: function (e, t, n) { 'use strict' n.d(t, { u: function () { return S }, }) var r = n(3459), i = n(7273), o = n(3782), a = n(63), s = n(2326), u = n(5284), l = n(9676), c = n(5505), d = n(3808), f = n(5415), h = n(7554), p = n(3869), v = n(7294), m = { exit: { scale: 0.85, opacity: 0, transition: { opacity: { duration: 0.15, easings: 'easeInOut' }, scale: { duration: 0.2, easings: 'easeInOut' }, }, }, enter: { scale: 1, opacity: 1, transition: { opacity: { easings: 'easeOut', duration: 0.2 }, scale: { duration: 0.2, ease: [0.175, 0.885, 0.4, 1.1] }, }, }, }, g = n(4860), y = n(4577), b = n(4941), w = n(8931), x = n(658), E = n(8456), k = n(2947) function _() { return (_ = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var n = arguments[t] for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r]) } return e }).apply(this, arguments) } function T(e) { void 0 === e && (e = {}) var { openDelay: t = 0, closeDelay: n = 0, closeOnClick: i = !0, closeOnMouseDown: o, onOpen: a, onClose: s, placement: u, id: l, isOpen: c, defaultIsOpen: d, arrowSize: f = 10, arrowShadowColor: h, arrowPadding: p, modifiers: m, isDisabled: T, gutter: O, offset: C, } = e, S = (function (e, t) { if (null == e) return {} var n, r, i = {}, o = Object.keys(e) for (r = 0; r < o.length; r++) (n = o[r]), t.indexOf(n) >= 0 || (i[n] = e[n]) return i })(e, [ 'openDelay', 'closeDelay', 'closeOnClick', 'closeOnMouseDown', 'onOpen', 'onClose', 'placement', 'id', 'isOpen', 'defaultIsOpen', 'arrowSize', 'arrowShadowColor', 'arrowPadding', 'modifiers', 'isDisabled', 'gutter', 'offset', ]), { isOpen: A, onOpen: P, onClose: M, } = (0, g.q)({ isOpen: c, defaultIsOpen: d, onOpen: a, onClose: s }), { referenceRef: R, getPopperProps: j, getArrowInnerProps: D, getArrowProps: L, } = (0, w.D)({ enabled: A, placement: u, arrowPadding: p, modifiers: m, gutter: O, offset: C, }), N = (0, y.Me)(l, 'tooltip'), I = v.useRef(null), z = v.useRef(), H = v.useRef(), B = v.useCallback(() => { T || (z.current = window.setTimeout(P, t)) }, [T, P, t]), F = v.useCallback(() => { z.current && clearTimeout(z.current), (H.current = window.setTimeout(M, n)) }, [n, M]), V = v.useCallback(() => { i && F() }, [i, F]), U = v.useCallback(() => { o && F() }, [o, F]) ;(0, b.O)('keydown', (e) => { A && 'Escape' === e.key && F() }), v.useEffect( () => () => { clearTimeout(z.current), clearTimeout(H.current) }, [], ), (0, b.O)('mouseleave', F, I.current) var G = v.useCallback( function (e, t) { return ( void 0 === e && (e = {}), void 0 === t && (t = null), _({}, e, { ref: (0, k.l)(I, t, R), onMouseEnter: (0, x.v0)(e.onMouseEnter, B), onClick: (0, x.v0)(e.onClick, V), onMouseDown: (0, x.v0)(e.onMouseDown, U), onFocus: (0, x.v0)(e.onFocus, B), onBlur: (0, x.v0)(e.onBlur, F), 'aria-describedby': A ? N : void 0, }) ) }, [B, F, U, A, N, V, R], ), q = v.useCallback( function (e, t) { return ( void 0 === e && (e = {}), void 0 === t && (t = null), j( _({}, e, { style: _({}, e.style, { [r.Dq.arrowSize.var]: f ? (0, E.px)(f) : void 0, [r.Dq.arrowShadowColor.var]: h, }), }), t, ) ) }, [j, f, h], ), W = v.useCallback( function (e, t) { return ( void 0 === e && (e = {}), void 0 === t && (t = null), _({ ref: t }, S, e, { id: N, role: 'tooltip', style: _({}, e.style, { position: 'relative', transformOrigin: r.Dq.transformOrigin.varRef, }), }) ) }, [S, N], ) return { isOpen: A, show: B, hide: F, getTriggerProps: G, getTooltipProps: W, getTooltipPositionerProps: q, getArrowProps: L, getArrowInnerProps: D, } } function O() { return (O = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var n = arguments[t] for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r]) } return e }).apply(this, arguments) } var C = (0, o.m$)(h.E.div), S = (0, a.G)((e, t) => { var n = (0, s.m)('Tooltip', e), a = (0, u.Lr)(e), h = (0, l.Fg)(), { children: g, label: y, shouldWrapChildren: b, 'aria-label': w, hasArrow: x, bg: E, portalProps: k, } = a, _ = (function (e, t) { if (null == e) return {} var n, r, i = {}, o = Object.keys(e) for (r = 0; r < o.length; r++) (n = o[r]), t.indexOf(n) >= 0 || (i[n] = e[n]) return i })(a, [ 'children', 'label', 'shouldWrapChildren', 'aria-label', 'hasArrow', 'bg', 'portalProps', ]) E && ((n.bg = E), (n[r.Dq.arrowBg.var] = (0, c.K1)(h, 'colors', E))) var S, A = T(_) if ((0, d.HD)(g) || b) S = v.createElement(o.m$.span, O({ tabIndex: 0 }, A.getTriggerProps()), g) else { var P = v.Children.only(g) S = v.cloneElement(P, A.getTriggerProps(P.props, P.ref)) } var M = !!w, R = A.getTooltipProps({}, t), j = M ? (0, c.CE)(R, ['role', 'id']) : R, D = (0, c.ei)(R, ['role', 'id']) return y ? v.createElement( v.Fragment, null, S, v.createElement( p.M, null, A.isOpen && v.createElement( i.h, k, v.createElement( o.m$.div, O({}, A.getTooltipPositionerProps(), { __css: { zIndex: n.zIndex, pointerEvents: 'none' }, }), v.createElement( C, O({ variants: m }, j, { initial: 'exit', animate: 'enter', exit: 'exit', __css: n, }), y, M && v.createElement(f.TX, D, w), x && v.createElement( o.m$.div, { 'data-popper-arrow': !0, className: 'chakra-tooltip__arrow-wrapper', }, v.createElement(o.m$.div, { 'data-popper-arrow-inner': !0, className: 'chakra-tooltip__arrow', __css: { bg: n.bg }, }), ), ), ), ), ), ) : v.createElement(v.Fragment, null, g) }) d.Ts && (S.displayName = 'Tooltip') }, 5267: function (e, t, n) { 'use strict' n.d(t, { U: function () { return v }, }) var r = n(658), i = n(8554), o = n.n(i), a = n(4461), s = n(3808), u = n(3869), l = n(7554), c = n(7294), d = n(4722) function f() { return (f = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var n = arguments[t] for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r]) } return e }).apply(this, arguments) } var h = { exit: { height: { duration: 0.2, ease: d.YI.ease }, opacity: { duration: 0.3, ease: d.YI.ease }, }, enter: { height: { duration: 0.3, ease: d.YI.ease }, opacity: { duration: 0.4, ease: d.YI.ease }, }, }, p = { exit: (e) => { var t, n, { animateOpacity: r, startingHeight: i, transition: o, transitionEnd: a, delay: s, } = e return f( {}, r && { opacity: ((n = i), null != n && parseInt(n.toString(), 10) > 0 ? 1 : 0) }, { overflow: 'hidden', height: i, transitionEnd: null == a ? void 0 : a.exit, transition: null != (t = null == o ? void 0 : o.exit) ? t : d.p$.exit(h.exit, s), }, ) }, enter: (e) => { var t, { animateOpacity: n, endingHeight: r, transition: i, transitionEnd: o, delay: a } = e return f({}, n && { opacity: 1 }, { height: r, transitionEnd: null == o ? void 0 : o.enter, transition: null != (t = null == i ? void 0 : i.enter) ? t : d.p$.enter(h.enter, a), }) }, }, v = c.forwardRef((e, t) => { var { in: n, unmountOnExit: i, animateOpacity: s = !0, startingHeight: d = 0, endingHeight: h = 'auto', style: v, className: m, transition: g, transitionEnd: y, } = e, b = (function (e, t) { if (null == e) return {} var n, r, i = {}, o = Object.keys(e) for (r = 0; r < o.length; r++) (n = o[r]), t.indexOf(n) >= 0 || (i[n] = e[n]) return i })(e, [ 'in', 'unmountOnExit', 'animateOpacity', 'startingHeight', 'endingHeight', 'style', 'className', 'transition', 'transitionEnd', ]), [w, x] = c.useState(!1) c.useEffect(() => { var e = setTimeout(() => { x(!0) }) return () => clearTimeout(e) }, []), (0, r.ZK)({ condition: Boolean(d > 0 && i), message: "startingHeight and unmountOnExit are mutually exclusive. You can't use them together", }) var E = parseFloat(d.toString()) > 0, k = { startingHeight: d, endingHeight: h, animateOpacity: s, transition: w ? g : { enter: { duration: 0 } }, transitionEnd: o()(y, { enter: { overflow: 'initial' }, exit: i ? void 0 : { display: E ? 'block' : 'none' }, }), }, _ = !i || n, T = n || i ? 'enter' : 'exit' return c.createElement( u.M, { initial: !1, custom: k }, _ && c.createElement( l.E.div, f({ ref: t }, b, { className: (0, a.cx)('chakra-collapse', m), style: f({ overflow: 'hidden', display: 'block' }, v), custom: k, variants: p, initial: !!i && 'exit', animate: T, exit: 'exit', }), ), ) }) s.Ts && (v.displayName = 'Collapse') }, 454: function (e, t, n) { 'use strict' n.d(t, { R: function () { return d }, }) var r = n(4461), i = n(3808), o = n(3869), a = n(7554), s = n(7294), u = n(4722) function l() { return (l = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var n = arguments[t] for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r]) } return e }).apply(this, arguments) } var c = { initial: 'initial', animate: 'enter', exit: 'exit', variants: { initial: (e) => { var t, { offsetX: n, offsetY: r, transition: i, transitionEnd: o, delay: a } = e return { opacity: 0, x: n, y: r, transition: null != (t = null == i ? void 0 : i.exit) ? t : u.p$.exit(u.R.exit, a), transitionEnd: null == o ? void 0 : o.exit, } }, enter: (e) => { var t, { transition: n, transitionEnd: r, delay: i } = e return { opacity: 1, x: 0, y: 0, transition: null != (t = null == n ? void 0 : n.enter) ? t : u.p$.enter(u.R.enter, i), transitionEnd: null == r ? void 0 : r.enter, } }, exit: (e) => { var t, { offsetY: n, offsetX: r, transition: i, transitionEnd: o, reverse: a, delay: s, } = e, c = { x: r, y: n } return l( { opacity: 0, transition: null != (t = null == i ? void 0 : i.exit) ? t : u.p$.exit(u.R.exit, s), }, a ? l({}, c, { transitionEnd: null == o ? void 0 : o.exit }) : { transitionEnd: l({}, c, null == o ? void 0 : o.exit) }, ) }, }, }, d = s.forwardRef((e, t) => { var { unmountOnExit: n, in: i, reverse: u = !0, className: d, offsetX: f = 0, offsetY: h = 8, transition: p, transitionEnd: v, delay: m, } = e, g = (function (e, t) { if (null == e) return {} var n, r, i = {}, o = Object.keys(e) for (r = 0; r < o.length; r++) (n = o[r]), t.indexOf(n) >= 0 || (i[n] = e[n]) return i })(e, [ 'unmountOnExit', 'in', 'reverse', 'className', 'offsetX', 'offsetY', 'transition', 'transitionEnd', 'delay', ]), y = !n || (i && n), b = i || n ? 'enter' : 'exit', w = { offsetX: f, offsetY: h, reverse: u, transition: p, transitionEnd: v, delay: m } return s.createElement( o.M, { custom: w }, y && s.createElement( a.E.div, l( { ref: t, className: (0, r.cx)('chakra-offset-slide', d), custom: w }, c, { animate: b }, g, ), ), ) }) i.Ts && (d.displayName = 'SlideFade') }, 4722: function (e, t, n) { 'use strict' n.d(t, { YI: function () { return o }, R: function () { return a }, p$: function () { return s }, }) var r = n(3808) function i() { return (i = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var n = arguments[t] for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r]) } return e }).apply(this, arguments) } var o = { ease: [0.25, 0.1, 0.25, 1], easeIn: [0.4, 0, 1, 1], easeOut: [0, 0, 0.2, 1], easeInOut: [0.4, 0, 0.2, 1], } var a = { enter: { duration: 0.2, ease: o.easeOut }, exit: { duration: 0.1, ease: o.easeIn }, }, s = { enter: (e, t) => i({}, e, { delay: (0, r.hj)(t) ? t : null == t ? void 0 : t.enter }), exit: (e, t) => i({}, e, { delay: (0, r.hj)(t) ? t : null == t ? void 0 : t.exit }), } }, 7248: function (e, t, n) { 'use strict' n.d(t, { T: function () { return a }, }) var r = n(4461), i = n(658), o = n(7768) function a(e, t) { void 0 === t && (t = {}) var { isActive: n = o.H9, nextTick: a, preventScroll: u = !0, selectTextIfInput: l = !0, } = t if (!e || n(e)) return -1 function c() { if (e) { if ( (function () { if (null == s) { s = !1 try { document.createElement('div').focus({ get preventScroll() { return (s = !0), !0 }, }) } catch (e) {} } return s })() ) e.focus({ preventScroll: u }) else if ((e.focus(), u)) !(function (e) { for (var { element: t, scrollTop: n, scrollLeft: r } of e) (t.scrollTop = n), (t.scrollLeft = r) })( (function (e) { var t = (0, r.lZ)(e), n = e.parentNode, i = [], o = t.scrollingElement || t.documentElement for (; n instanceof HTMLElement && n !== o; ) (n.offsetHeight < n.scrollHeight || n.offsetWidth < n.scrollWidth) && i.push({ element: n, scrollTop: n.scrollTop, scrollLeft: n.scrollLeft }), (n = n.parentNode) o instanceof HTMLElement && i.push({ element: o, scrollTop: o.scrollTop, scrollLeft: o.scrollLeft }) return i })(e), ) ;(0, o.cK)(e) && l && e.select() } else (0, i.ZK)({ condition: !0, message: "[chakra-ui]: can't call focus() on `null` or `undefined` element", }) } return a ? requestAnimationFrame(c) : (c(), -1) } var s = null }, 7768: function (e, t, n) { 'use strict' n.d(t, { cK: function () { return o }, H9: function () { return a }, Wq: function () { return c }, }) var r = n(4461), i = (e) => e.hasAttribute('tabindex') function o(e) { return s(e) && 'input' === e.tagName.toLowerCase() && 'select' in e } function a(e) { return (e instanceof HTMLElement ? (0, r.lZ)(e) : document).activeElement === e } function s(e) { return e instanceof HTMLElement } function u(e) { return !(!e.parentElement || !u(e.parentElement)) || e.hidden } function l(e) { if ( !s(e) || u(e) || (function (e) { return ( !0 === Boolean(e.getAttribute('disabled')) || !0 === Boolean(e.getAttribute('aria-disabled')) ) })(e) ) return !1 var { localName: t } = e if (['input', 'select', 'textarea', 'button'].indexOf(t) >= 0) return !0 var n = { a: () => e.hasAttribute('href'), audio: () => e.hasAttribute('controls'), video: () => e.hasAttribute('controls'), } return t in n ? n[t]() : !!(function (e) { var t = e.getAttribute('contenteditable') return 'false' !== t && null != t })(e) || i(e) } function c(e) { return !!e && s(e) && l(e) && !((e) => i(e) && -1 === e.tabIndex)(e) } }, 5415: function (e, t, n) { 'use strict' n.d(t, { NL: function () { return o }, TX: function () { return a }, }) var r = n(3782), i = n(3808), o = { border: '0px', clip: 'rect(0px, 0px, 0px, 0px)', height: '1px', width: '1px', margin: '-1px', padding: '0px', overflow: 'hidden', whiteSpace: 'nowrap', position: 'absolute', }, a = (0, r.m$)('span', { baseStyle: o }) i.Ts && (a.displayName = 'VisuallyHidden') var s = (0, r.m$)('input', { baseStyle: o }) i.Ts && (s.displayName = 'VisuallyHiddenInput') }, 6600: function (e, t, n) { 'use strict' n.d(t, { Z: function () { return i }, }) var r = /^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|download|draggable|encType|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|inert|itemProp|itemScope|itemType|itemID|itemRef|on|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/, i = (function (e) { var t = {} return function (n) { return void 0 === t[n] && (t[n] = e(n)), t[n] } })(function (e) { return ( r.test(e) || (111 === e.charCodeAt(0) && 110 === e.charCodeAt(1) && e.charCodeAt(2) < 91) ) }) }, 2351: function (e, t, n) { 'use strict' n.d(t, { _7: function () { return v }, }) var r = n(7294) var i = function (e) { ;(0, r.useEffect)(function () { e() }, []) } var o = function (e, t) { var n = (0, r.useRef)(!1) ;(0, r.useEffect)(function () { if (n.current) return e() n.current = !0 }, t) } var a = function (e) { var t = (0, r.useRef)(e) ;(t.current = e), (0, r.useEffect)(function () { return function () { t.current() } }, []) } 'undefined' !== typeof window && 'undefined' !== typeof document ? r.useLayoutEffect : r.useEffect var s = n(4699), u = Object.is || function (e, t) { return e === t ? 0 !== e || 1 / e === 1 / t : e !== e && t !== t } function l(e, t) { for (var n = 0; n < e.length && n < t.length; n++) if (!u(t[n], e[n])) return !1 return !0 } var c = function (e) { var t = (0, r.useRef)(e) return (t.current = e), t } var d = function (e) { var t = c(e), n = (0, r.useRef)() return ( void 0 === n.current && (n.current = function () { for (var e = arguments.length, n = new Array(e), r = 0; r < e; r++) n[r] = arguments[r] return t.current.apply(this, n) }), n.current ) } function f(e) { return (f = 'function' === typeof Symbol && 'symbol' === typeof Symbol.iterator ? function (e) { return typeof e } : function (e) { return e && 'function' === typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? 'symbol' : typeof e })(e) } var h = function () { var e = arguments.length > 0 && void 0 !== arguments[0] && arguments[0] return function (t, n) { var i, o = !1, s = !0 'number' === typeof n ? (i = n) : 'object' === f(n) && n && ('wait' in n && (i = +n.wait), 'leading' in n && (o = !!n.leading), 'trailing' in n && (s = !!n.trailing)) var u = (0, r.useRef)(), l = (0, r.useRef)(), c = (0, r.useRef)(), h = (0, r.useRef)(), p = (0, r.useRef)(), v = (0, r.useRef)(), m = d(function () { var n = Date.now(), r = n - p.current, o = n - v.current if ((h.current && clearTimeout(h.current), r >= i || (e && o >= i))) (h.current = void 0), (p.current = void 0), s && l.current && ((v.current = n), (c.current = t.apply(u.current, l.current))) else { var a = i - r, d = i - o, f = e ? Math.min(a, d) : a h.current = setTimeout(m, f) } }), g = d(function () { var e = Date.now(), n = p.current u.current = this for (var r = arguments.length, a = new Array(r), s = 0; s < r; s++) a[s] = arguments[s] return ( (l.current = a), (p.current = e), (void 0 === n || e - n >= i) && void 0 === h.current && ((v.current = e), (h.current = setTimeout(m, i)), o && (c.current = t.apply(u.current, l.current))), c.current ) }), y = (0, r.useCallback)(function () { void 0 !== h.current && (clearTimeout(h.current), (h.current = void 0)), (u.current = void 0), (l.current = void 0), (p.current = void 0), (v.current = void 0) }, []), b = d(function () { return ( void 0 !== h.current && l.current && ((c.current = t.apply(u.current, l.current)), y()), c.current ) }) return a(y), [g, { flush: b, cancel: y }] } } var p = function () { var e = arguments.length > 0 && void 0 !== arguments[0] && arguments[0], t = h(e) return function (e, n) { var i = c(e), a = (0, r.useState)(e), l = (0, s.Z)(a, 2), f = l[0], h = l[1], p = (0, r.useRef)(f) function v(e) { u(p.current, e) || ((p.current = e), h(e)) } var m = t(v, n), g = (0, s.Z)(m, 2), y = g[0], b = g[1].cancel, w = d(function (e) { b(), v(arguments.length > 0 ? e : i.current) }) return ( o( function () { y(e) }, [e], ), [f, { flush: w, cancel: b }] ) } } p(!1), p(!0), h(!1), h(!0) 'undefined' !== typeof window && window.requestIdleCallback && window.cancelIdleCallback && (window.requestIdleCallback, window.cancelIdleCallback) var v = function (e, t) { var n, i 'number' === typeof t ? (n = t) : 'object' === f(t) && null !== t && ('duration' in t && (n = +t.duration), 'function' === typeof t.algorithm && (i = t.algorithm)) var o = (0, r.useRef)(), s = (0, r.useRef)(), u = d(e), l = d(function (e) { void 0 === s.current && (s.current = e) var t = e - s.current, r = n > 0 ? t / n : 1 r < 0 && (r = 0), r > 1 && (r = 1), r < 1 && (o.current = requestAnimationFrame(l)), u(i ? i(r) : r) }), c = (0, r.useCallback)(function () { void 0 !== o.current && (cancelAnimationFrame(o.current), (o.current = void 0)), (s.current = void 0) }, []), h = d(function () { c(), (o.current = requestAnimationFrame(l)) }) return a(c), [h, c] } var m = function () { var e = (0, r.useRef)(!1) return ( i(function () { e.current = !0 }), e ) } var g = function (e) { var t = (0, r.useRef)(e), n = (0, r.useRef)(e) return (n.current = t.current), (t.current = e), n } var y = function (e, t, n, i) { var o, a, s 'boolean' === typeof i ? (o = i) : 'object' === f(i) && null !== i && ('capture' in i && (o = !!i.capture), 'once' in i && (a = !!i.once), 'passive' in i && (s = !!i.passive)) var u = d(n) ;(0, r.useEffect)( function () { if (e && e.addEventListener && e.removeEventListener) return ( e.addEventListener(t, u, { capture: o, once: a, passive: s }), function () { e.removeEventListener(t, u, { capture: o }) } ) }, [e, t, u, o, a, s], ) } 'undefined' !== typeof window && 'undefined' !== typeof window.navigator && window.navigator.onLine var b = function (e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : [], n = m(), i = g(t), o = (0, r.useRef)() return (n.current && l(i.current, t)) || (o.current = e()), o.current }, w = { ico: 'image/x-icon', png: 'image/png', gif: 'image/gif' } 'undefined' !== typeof window && window.matchMedia n(6808) function x(e, t) { var n = (0, r.useRef)(), i = (0, r.useState)(t), a = (0, s.Z)(i, 2), u = a[0], l = a[1], c = d(function (e) { ;(n.current = e), l(e) }), f = d(function () { l(t) }) return ( o( function () { ;(n.current = void 0), l(t) }, [e], ), o( function () { void 0 === n.current && l(t) }, [t], ), [u, { set: c, remove: f }] ) } var E = function (e) { return e ? function (t, n, i) { var a = i && i.serialize ? i.serialize : JSON.stringify, u = i && i.deserialize ? i.deserialize : JSON.parse, l = d(function () { try { var r = e.getItem(t) return null !== r ? u(r) : n } catch (i) { return n } }), c = d(function (n) { try { e.setItem(t, a(n)) } catch (r) {} }), h = d(function () { e.removeItem(t) }), p = (0, r.useState)(l()), v = (0, s.Z)(p, 2), m = v[0], g = v[1], y = d(function (e) { c(e), g(e) }), b = d(function () { h(), g(l()) }) return ( o( function () { g(l()) }, [t], ), o( function () { null === e.getItem(t) && g(n) }, [n], ), (0, r.useEffect)( function () { function n(n) { n.storageArea === e && n.key === t && g(l()) } if (void 0 !== ('undefined' === typeof window ? 'undefined' : f(window))) return ( window.addEventListener('storage', n), function () { return window.removeEventListener('storage', n) } ) }, [t], ), [m, { set: y, remove: b }] ) } : x } E('undefined' !== typeof localStorage ? localStorage : null), E('undefined' !== typeof sessionStorage ? sessionStorage : null) }, 4309: function (e, t, n) { 'use strict' n.d(t, { iP: function () { return d }, }) var r = n(7294) var i = (e) => { const t = r.useRef(e) return ( r.useEffect(() => { t.current = e }), t ) } const o = (e, t = 100, n = !1) => { const o = i(e), a = r.useRef(), s = [t, n, o] function u() { a.current && clearTimeout(a.current), (a.current = void 0) } function l() { a.current = void 0 } return ( r.useEffect(() => u, s), r.useCallback(function () { const e = arguments, { current: r } = a if (void 0 === r && n) return (a.current = setTimeout(l, t)), o.current.apply(null, e) r && clearTimeout(r), (a.current = setTimeout(() => { ;(a.current = void 0), o.current.apply(null, e) }, t)) }, s) ) } var a = r[ 'undefined' !== typeof document && void 0 !== document.createElement ? 'useLayoutEffect' : 'useEffect' ] var s = function (e, t, n, i) { const o = r.useRef(n), s = r.useRef(i) a(() => { ;(o.current = n), (s.current = i) }), a(() => { const n = e && 'current' in e ? e.current : e if (!n) return let r = 0 function i(...e) { r || o.current.apply(this, e) } n.addEventListener(t, i) const a = s.current return () => { ;(r = 1), n.removeEventListener(t, i), a && a() } }, [e, t]) } const u = {}, l = 'undefined' === typeof window ? null : window, c = () => [document.documentElement.clientWidth, document.documentElement.clientHeight], d = (e = u) => { const { wait: t, leading: n, initialWidth: i = 0, initialHeight: a = 0 } = e, [d, f] = ((e, t, n) => { const i = r.useState(e) return [i[0], o(i[1], t, n)] })('undefined' === typeof document ? [i, a] : c, t, n), h = () => f(c) return s(l, 'resize', h), s(l, 'orientationchange', h), d } }, 6194: function (e, t, n) { 'use strict' n.d(t, { oY: function () { return i }, }) var r = n(4155), i = { Linear: { None: function (e) { return e }, }, Quadratic: { In: function (e) { return e * e }, Out: function (e) { return e * (2 - e) }, InOut: function (e) { return (e *= 2) < 1 ? 0.5 * e * e : -0.5 * (--e * (e - 2) - 1) }, }, Cubic: { In: function (e) { return e * e * e }, Out: function (e) { return --e * e * e + 1 }, InOut: function (e) { return (e *= 2) < 1 ? 0.5 * e * e * e : 0.5 * ((e -= 2) * e * e + 2) }, }, Quartic: { In: function (e) { return e * e * e * e }, Out: function (e) { return 1 - --e * e * e * e }, InOut: function (e) { return (e *= 2) < 1 ? 0.5 * e * e * e * e : -0.5 * ((e -= 2) * e * e * e - 2) }, }, Quintic: { In: function (e) { return e * e * e * e * e }, Out: function (e) { return --e * e * e * e * e + 1 }, InOut: function (e) { return (e *= 2) < 1 ? 0.5 * e * e * e * e * e : 0.5 * ((e -= 2) * e * e * e * e + 2) }, }, Sinusoidal: { In: function (e) { return 1 - Math.cos((e * Math.PI) / 2) }, Out: function (e) { return Math.sin((e * Math.PI) / 2) }, InOut: function (e) { return 0.5 * (1 - Math.cos(Math.PI * e)) }, }, Exponential: { In: function (e) { return 0 === e ? 0 : Math.pow(1024, e - 1) }, Out: function (e) { return 1 === e ? 1 : 1 - Math.pow(2, -10 * e) }, InOut: function (e) { return 0 === e ? 0 : 1 === e ? 1 : (e *= 2) < 1 ? 0.5 * Math.pow(1024, e - 1) : 0.5 * (2 - Math.pow(2, -10 * (e - 1))) }, }, Circular: { In: function (e) { return 1 - Math.sqrt(1 - e * e) }, Out: function (e) { return Math.sqrt(1 - --e * e) }, InOut: function (e) { return (e *= 2) < 1 ? -0.5 * (Math.sqrt(1 - e * e) - 1) : 0.5 * (Math.sqrt(1 - (e -= 2) * e) + 1) }, }, Elastic: { In: function (e) { return 0 === e ? 0 : 1 === e ? 1 : -Math.pow(2, 10 * (e - 1)) * Math.sin(5 * (e - 1.1) * Math.PI) }, Out: function (e) { return 0 === e ? 0 : 1 === e ? 1 : Math.pow(2, -10 * e) * Math.sin(5 * (e - 0.1) * Math.PI) + 1 }, InOut: function (e) { return 0 === e ? 0 : 1 === e ? 1 : (e *= 2) < 1 ? -0.5 * Math.pow(2, 10 * (e - 1)) * Math.sin(5 * (e - 1.1) * Math.PI) : 0.5 * Math.pow(2, -10 * (e - 1)) * Math.sin(5 * (e - 1.1) * Math.PI) + 1 }, }, Back: { In: function (e) { var t = 1.70158 return e * e * ((t + 1) * e - t) }, Out: function (e) { var t = 1.70158 return --e * e * ((t + 1) * e + t) + 1 }, InOut: function (e) { var t = 2.5949095 return (e *= 2) < 1 ? e * e * ((t + 1) * e - t) * 0.5 : 0.5 * ((e -= 2) * e * ((t + 1) * e + t) + 2) }, }, Bounce: { In: function (e) { return 1 - i.Bounce.Out(1 - e) }, Out: function (e) { return e < 1 / 2.75 ? 7.5625 * e * e : e < 2 / 2.75 ? 7.5625 * (e -= 1.5 / 2.75) * e + 0.75 : e < 2.5 / 2.75 ? 7.5625 * (e -= 2.25 / 2.75) * e + 0.9375 : 7.5625 * (e -= 2.625 / 2.75) * e + 0.984375 }, InOut: function (e) { return e < 0.5 ? 0.5 * i.Bounce.In(2 * e) : 0.5 * i.Bounce.Out(2 * e - 1) + 0.5 }, }, }, o = 'undefined' === typeof self && 'undefined' !== typeof r && r.hrtime ? function () { var e = r.hrtime() return 1e3 * e[0] + e[1] / 1e6 } : 'undefined' !== typeof self && void 0 !== self.performance && void 0 !== self.performance.now ? self.performance.now.bind(self.performance) : void 0 !== Date.now ? Date.now : function () { return new Date().getTime() }, a = (function () { function e() { ;(this._tweens = {}), (this._tweensAddedDuringUpdate = {}) } return ( (e.prototype.getAll = function () { var e = this return Object.keys(this._tweens).map(function (t) { return e._tweens[t] }) }), (e.prototype.removeAll = function () { this._tweens = {} }), (e.prototype.add = function (e) { ;(this._tweens[e.getId()] = e), (this._tweensAddedDuringUpdate[e.getId()] = e) }), (e.prototype.remove = function (e) { delete this._tweens[e.getId()], delete this._tweensAddedDuringUpdate[e.getId()] }), (e.prototype.update = function (e, t) { void 0 === e && (e = o()), void 0 === t && (t = !1) var n = Object.keys(this._tweens) if (0 === n.length) return !1 for (; n.length > 0; ) { this._tweensAddedDuringUpdate = {} for (var r = 0; r < n.length; r++) { var i = this._tweens[n[r]], a = !t i && !1 === i.update(e, a) && !t && delete this._tweens[n[r]] } n = Object.keys(this._tweensAddedDuringUpdate) } return !0 }), e ) })(), s = { Linear: function (e, t) { var n = e.length - 1, r = n * t, i = Math.floor(r), o = s.Utils.Linear return t < 0 ? o(e[0], e[1], r) : t > 1 ? o(e[n], e[n - 1], n - r) : o(e[i], e[i + 1 > n ? n : i + 1], r - i) }, Bezier: function (e, t) { for ( var n = 0, r = e.length - 1, i = Math.pow, o = s.Utils.Bernstein, a = 0; a <= r; a++ ) n += i(1 - t, r - a) * i(t, a) * e[a] * o(r, a) return n }, CatmullRom: function (e, t) { var n = e.length - 1, r = n * t, i = Math.floor(r), o = s.Utils.CatmullRom return e[0] === e[n] ? (t < 0 && (i = Math.floor((r = n * (1 + t)))), o(e[(i - 1 + n) % n], e[i], e[(i + 1) % n], e[(i + 2) % n], r - i)) : t < 0 ? e[0] - (o(e[0], e[0], e[1], e[1], -r) - e[0]) : t > 1 ? e[n] - (o(e[n], e[n], e[n - 1], e[n - 1], r - n) - e[n]) : o(e[i ? i - 1 : 0], e[i], e[n < i + 1 ? n : i + 1], e[n < i + 2 ? n : i + 2], r - i) }, Utils: { Linear: function (e, t, n) { return (t - e) * n + e }, Bernstein: function (e, t) { var n = s.Utils.Factorial return n(e) / n(t) / n(e - t) }, Factorial: (function () { var e = [1] return function (t) { var n = 1 if (e[t]) return e[t] for (var r = t; r > 1; r--) n *= r return (e[t] = n), n } })(), CatmullRom: function (e, t, n, r, i) { var o = 0.5 * (n - e), a = 0.5 * (r - t), s = i * i return ( (2 * t - 2 * n + o + a) * (i * s) + (-3 * t + 3 * n - 2 * o - a) * s + o * i + t ) }, }, }, u = (function () { function e() {} return ( (e.nextId = function () { return e._nextId++ }), (e._nextId = 0), e ) })(), l = new a(), c = (function () { function e(e, t) { void 0 === t && (t = l), (this._object = e), (this._group = t), (this._isPaused = !1), (this._pauseStart = 0), (this._valuesStart = {}), (this._valuesEnd = {}), (this._valuesStartRepeat = {}), (this._duration = 1e3), (this._initialRepeat = 0), (this._repeat = 0), (this._yoyo = !1), (this._isPlaying = !1), (this._reversed = !1), (this._delayTime = 0), (this._startTime = 0), (this._easingFunction = i.Linear.None), (this._interpolationFunction = s.Linear), (this._chainedTweens = []), (this._onStartCallbackFired = !1), (this._id = u.nextId()), (this._isChainStopped = !1), (this._goToEnd = !1) } return ( (e.prototype.getId = function () { return this._id }), (e.prototype.isPlaying = function () { return this._isPlaying }), (e.prototype.isPaused = function () { return this._isPaused }), (e.prototype.to = function (e, t) { return ( (this._valuesEnd = Object.create(e)), void 0 !== t && (this._duration = t), this ) }), (e.prototype.duration = function (e) { return (this._duration = e), this }), (e.prototype.start = function (e) { if (this._isPlaying) return this if ( (this._group && this._group.add(this), (this._repeat = this._initialRepeat), this._reversed) ) for (var t in ((this._reversed = !1), this._valuesStartRepeat)) this._swapEndStartRepeatValues(t), (this._valuesStart[t] = this._valuesStartRepeat[t]) return ( (this._isPlaying = !0), (this._isPaused = !1), (this._onStartCallbackFired = !1), (this._isChainStopped = !1), (this._startTime = void 0 !== e ? ('string' === typeof e ? o() + parseFloat(e) : e) : o()), (this._startTime += this._delayTime), this._setupProperties( this._object, this._valuesStart, this._valuesEnd, this._valuesStartRepeat, ), this ) }), (e.prototype._setupProperties = function (e, t, n, r) { for (var i in n) { var o = e[i], a = Array.isArray(o), s = a ? 'array' : typeof o, u = !a && Array.isArray(n[i]) if ('undefined' !== s && 'function' !== s) { if (u) { var l = n[i] if (0 === l.length) continue ;(l = l.map(this._handleRelativeValue.bind(this, o))), (n[i] = [o].concat(l)) } if (('object' !== s && !a) || !o || u) 'undefined' === typeof t[i] && (t[i] = o), a || (t[i] *= 1), (r[i] = u ? n[i].slice().reverse() : t[i] || 0) else { for (var c in ((t[i] = a ? [] : {}), o)) t[i][c] = o[c] ;(r[i] = a ? [] : {}), this._setupProperties(o, t[i], n[i], r[i]) } } } }), (e.prototype.stop = function () { return ( this._isChainStopped || ((this._isChainStopped = !0), this.stopChainedTweens()), this._isPlaying ? (this._group && this._group.remove(this), (this._isPlaying = !1), (this._isPaused = !1), this._onStopCallback && this._onStopCallback(this._object), this) : this ) }), (e.prototype.end = function () { return (this._goToEnd = !0), this.update(1 / 0), this }), (e.prototype.pause = function (e) { return ( void 0 === e && (e = o()), this._isPaused || !this._isPlaying || ((this._isPaused = !0), (this._pauseStart = e), this._group && this._group.remove(this)), this ) }), (e.prototype.resume = function (e) { return ( void 0 === e && (e = o()), this._isPaused && this._isPlaying ? ((this._isPaused = !1), (this._startTime += e - this._pauseStart), (this._pauseStart = 0), this._group && this._group.add(this), this) : this ) }), (e.prototype.stopChainedTweens = function () { for (var e = 0, t = this._chainedTweens.length; e < t; e++) this._chainedTweens[e].stop() return this }), (e.prototype.group = function (e) { return (this._group = e), this }), (e.prototype.delay = function (e) { return (this._delayTime = e), this }), (e.prototype.repeat = function (e) { return (this._initialRepeat = e), (this._repeat = e), this }), (e.prototype.repeatDelay = function (e) { return (this._repeatDelayTime = e), this }), (e.prototype.yoyo = function (e) { return (this._yoyo = e), this }), (e.prototype.easing = function (e) { return (this._easingFunction = e), this }), (e.prototype.interpolation = function (e) { return (this._interpolationFunction = e), this }), (e.prototype.chain = function () { for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t] return (this._chainedTweens = e), this }), (e.prototype.onStart = function (e) { return (this._onStartCallback = e), this }), (e.prototype.onUpdate = function (e) { return (this._onUpdateCallback = e), this }), (e.prototype.onRepeat = function (e) { return (this._onRepeatCallback = e), this }), (e.prototype.onComplete = function (e) { return (this._onCompleteCallback = e), this }), (e.prototype.onStop = function (e) { return (this._onStopCallback = e), this }), (e.prototype.update = function (e, t) { if ((void 0 === e && (e = o()), void 0 === t && (t = !0), this._isPaused)) return !0 var n, r, i = this._startTime + this._duration if (!this._goToEnd && !this._isPlaying) { if (e > i) return !1 t && this.start(e) } if (((this._goToEnd = !1), e < this._startTime)) return !0 !1 === this._onStartCallbackFired && (this._onStartCallback && this._onStartCallback(this._object), (this._onStartCallbackFired = !0)), (r = (e - this._startTime) / this._duration), (r = 0 === this._duration || r > 1 ? 1 : r) var a = this._easingFunction(r) if ( (this._updateProperties(this._object, this._valuesStart, this._valuesEnd, a), this._onUpdateCallback && this._onUpdateCallback(this._object, r), 1 === r) ) { if (this._repeat > 0) { for (n in (isFinite(this._repeat) && this._repeat--, this._valuesStartRepeat)) this._yoyo || 'string' !== typeof this._valuesEnd[n] || (this._valuesStartRepeat[n] = this._valuesStartRepeat[n] + parseFloat(this._valuesEnd[n])), this._yoyo && this._swapEndStartRepeatValues(n), (this._valuesStart[n] = this._valuesStartRepeat[n]) return ( this._yoyo && (this._reversed = !this._reversed), void 0 !== this._repeatDelayTime ? (this._startTime = e + this._repeatDelayTime) : (this._startTime = e + this._delayTime), this._onRepeatCallback && this._onRepeatCallback(this._object), !0 ) } this._onCompleteCallback && this._onCompleteCallback(this._object) for (var s = 0, u = this._chainedTweens.length; s < u; s++) this._chainedTweens[s].start(this._startTime + this._duration) return (this._isPlaying = !1), !1 } return !0 }), (e.prototype._updateProperties = function (e, t, n, r) { for (var i in n) if (void 0 !== t[i]) { var o = t[i] || 0, a = n[i], s = Array.isArray(e[i]), u = Array.isArray(a) !s && u ? (e[i] = this._interpolationFunction(a, r)) : 'object' === typeof a && a ? this._updateProperties(e[i], o, a, r) : 'number' === typeof (a = this._handleRelativeValue(o, a)) && (e[i] = o + (a - o) * r) } }), (e.prototype._handleRelativeValue = function (e, t) { return 'string' !== typeof t ? t : '+' === t.charAt(0) || '-' === t.charAt(0) ? e + parseFloat(t) : parseFloat(t) }), (e.prototype._swapEndStartRepeatValues = function (e) { var t = this._valuesStartRepeat[e], n = this._valuesEnd[e] ;(this._valuesStartRepeat[e] = 'string' === typeof n ? this._valuesStartRepeat[e] + parseFloat(n) : this._valuesEnd[e]), (this._valuesEnd[e] = t) }), e ) })(), d = u.nextId, f = l, h = f.getAll.bind(f), p = f.removeAll.bind(f), v = f.add.bind(f), m = f.remove.bind(f), g = f.update.bind(f), y = { Easing: i, Group: a, Interpolation: s, now: o, Sequence: u, nextId: d, Tween: c, VERSION: '18.6.4', getAll: h, removeAll: p, add: v, remove: m, update: g, } t.ZP = y }, 2539: function (e, t, n) { 'use strict' n.r(t) t.default = function (e) { return e instanceof Function ? e : 'string' === typeof e ? function (t) { return t[e] } : function (t) { return e } } }, 3379: function (e) { var t = { animationIterationCount: !0, boxFlex: !0, boxFlexGroup: !0, boxOrdinalGroup: !0, columnCount: !0, flex: !0, flexGrow: !0, flexPositive: !0, flexShrink: !0, flexNegative: !0, flexOrder: !0, gridRow: !0, gridColumn: !0, fontWeight: !0, lineClamp: !0, lineHeight: !0, opacity: !0, order: !0, orphans: !0, tabSize: !0, widows: !0, zIndex: !0, zoom: !0, fillOpacity: !0, stopOpacity: !0, strokeDashoffset: !0, strokeOpacity: !0, strokeWidth: !0, } e.exports = function (e, n) { return 'number' !== typeof n || t[e] ? n : n + 'px' } }, 401: function (e, t, n) { n(2406), n(9874), n(9236), n(2578), n(8993) }, 203: function (e) { ;(e.exports = THREE.ColladaLoader = function (e) { this.manager = void 0 !== e ? e : THREE.DefaultLoadingManager }), (THREE.ColladaLoader.prototype = { constructor: THREE.ColladaLoader, crossOrigin: 'anonymous', load: function (e, t, n, r) { var i = this, o = void 0 === i.path ? THREE.LoaderUtils.extractUrlBase(e) : i.path, a = new THREE.FileLoader(i.manager) a.setPath(i.path), a.load( e, function (e) { t(i.parse(e, o)) }, n, r, ) }, setPath: function (e) { return (this.path = e), this }, setResourcePath: function (e) { return (this.resourcePath = e), this }, options: { set convertUpAxis(e) { console.warn( 'THREE.ColladaLoader: options.convertUpAxis() has been removed. Up axis is converted automatically.', ) }, }, setCrossOrigin: function (e) { return (this.crossOrigin = e), this }, parse: function (e, t) { function n(e, t) { for (var n = [], r = e.childNodes, i = 0, o = r.length; i < o; i++) { var a = r[i] a.nodeName === t && n.push(a) } return n } function r(e) { if (0 === e.length) return [] for ( var t = e.trim().split(/\s+/), n = new Array(t.length), r = 0, i = t.length; r < i; r++ ) n[r] = t[r] return n } function i(e) { if (0 === e.length) return [] for ( var t = e.trim().split(/\s+/), n = new Array(t.length), r = 0, i = t.length; r < i; r++ ) n[r] = parseFloat(t[r]) return n } function o(e) { if (0 === e.length) return [] for ( var t = e.trim().split(/\s+/), n = new Array(t.length), r = 0, i = t.length; r < i; r++ ) n[r] = parseInt(t[r]) return n } function a(e) { return e.substring(1) } function s(e) { return 0 === Object.keys(e).length } function u(e) { return void 0 !== e && !0 === e.hasAttribute('meter') ? parseFloat(e.getAttribute('meter')) : 1 } function l(e) { return void 0 !== e ? e.textContent : 'Y_UP' } function c(e, t, r, i) { var o = n(e, t)[0] if (void 0 !== o) for (var a = n(o, r), s = 0; s < a.length; s++) i(a[s]) } function d(e, t) { for (var n in e) { e[n].build = t(e[n]) } } function f(e, t) { return void 0 !== e.build || (e.build = t(e)), e.build } function h(e) { for (var t = { inputs: {} }, n = 0, r = e.childNodes.length; n < r; n++) { var i = e.childNodes[n] if (1 === i.nodeType) switch (i.nodeName) { case 'input': var o = a(i.getAttribute('source')), s = i.getAttribute('semantic') t.inputs[s] = o } } return t } function p(e) { var t = {}, n = e.getAttribute('target').split('/'), r = n.shift(), i = n.shift(), o = -1 !== i.indexOf('('), s = -1 !== i.indexOf('.') if (s) (n = i.split('.')), (i = n.shift()), (t.member = n.shift()) else if (o) { var u = i.split('(') i = u.shift() for (var l = 0; l < u.length; l++) u[l] = parseInt(u[l].replace(/\)/, '')) t.indices = u } return ( (t.id = r), (t.sid = i), (t.arraySyntax = o), (t.memberSyntax = s), (t.sampler = a(e.getAttribute('source'))), t ) } function v(e) { var t = [], n = e.channels, r = e.samplers, i = e.sources for (var o in n) if (n.hasOwnProperty(o)) { var a = n[o], s = r[a.sampler], u = s.inputs.INPUT, l = s.inputs.OUTPUT x(g(a, i[u], i[l]), t) } return t } function m(e) { return f(We.animations[e], v) } function g(e, t, n) { var r, i, o, a, s, u, l = We.nodes[e.id], c = Le(l.id), d = l.transforms[e.sid], f = l.matrix.clone().transpose(), h = {} switch (d) { case 'matrix': for (o = 0, a = t.array.length; o < a; o++) if ( ((r = t.array[o]), (i = o * n.stride), void 0 === h[r] && (h[r] = {}), !0 === e.arraySyntax) ) { var p = n.array[i], v = e.indices[0] + 4 * e.indices[1] h[r][v] = p } else for (s = 0, u = n.stride; s < u; s++) h[r][s] = n.array[i + s] break case 'translate': case 'rotate': case 'scale': console.warn( 'THREE.ColladaLoader: Animation transform type "%s" not yet implemented.', d, ) } var m = (function (e, t) { var n = [] for (var r in e) n.push({ time: parseFloat(r), value: e[r] }) n.sort(o) for (var i = 0; i < 16; i++) E(n, i, t.elements[i]) return n function o(e, t) { return e.time - t.time } })(h, f) return { name: c.uuid, keyframes: m } } var y = new THREE.Vector3(), b = new THREE.Vector3(), w = new THREE.Quaternion() function x(e, t) { for ( var n = e.keyframes, r = e.name, i = [], o = [], a = [], s = [], u = 0, l = n.length; u < l; u++ ) { var c = n[u], d = c.time, f = c.value _e.fromArray(f).transpose(), _e.decompose(y, w, b), i.push(d), o.push(y.x, y.y, y.z), a.push(w.x, w.y, w.z, w.w), s.push(b.x, b.y, b.z) } return ( o.length > 0 && t.push(new THREE.VectorKeyframeTrack(r + '.position', i, o)), a.length > 0 && t.push(new THREE.QuaternionKeyframeTrack(r + '.quaternion', i, a)), s.length > 0 && t.push(new THREE.VectorKeyframeTrack(r + '.scale', i, s)), t ) } function E(e, t, n) { var r, i, o, a = !0 for (i = 0, o = e.length; i < o; i++) void 0 === (r = e[i]).value[t] ? (r.value[t] = null) : (a = !1) if (!0 === a) for (i = 0, o = e.length; i < o; i++) (r = e[i]).value[t] = n else !(function (e, t) { for (var n, r, i = 0, o = e.length; i < o; i++) { var a = e[i] if (null === a.value[t]) { if (((n = k(e, i, t)), (r = _(e, i, t)), null === n)) { a.value[t] = r.value[t] continue } if (null === r) { a.value[t] = n.value[t] continue } T(a, n, r, t) } } })(e, t) } function k(e, t, n) { for (; t >= 0; ) { var r = e[t] if (null !== r.value[n]) return r t-- } return null } function _(e, t, n) { for (; t < e.length; ) { var r = e[t] if (null !== r.value[n]) return r t++ } return null } function T(e, t, n, r) { n.time - t.time !== 0 ? (e.value[r] = ((e.time - t.time) * (n.value[r] - t.value[r])) / (n.time - t.time) + t.value[r]) : (e.value[r] = t.value[r]) } function O(e) { for ( var t = [], n = e.name, r = e.end - e.start || -1, i = e.animations, o = 0, a = i.length; o < a; o++ ) for (var s = m(i[o]), u = 0, l = s.length; u < l; u++) t.push(s[u]) return new THREE.AnimationClip(n, r, t) } function C(e) { return f(We.clips[e], O) } function S(e) { for (var t = { sources: {} }, n = 0, r = e.childNodes.length; n < r; n++) { var o = e.childNodes[n] if (1 === o.nodeType) switch (o.nodeName) { case 'bind_shape_matrix': t.bindShapeMatrix = i(o.textContent) break case 'source': var a = o.getAttribute('id') t.sources[a] = ie(o) break case 'joints': t.joints = A(o) break case 'vertex_weights': t.vertexWeights = P(o) } } return t } function A(e) { for (var t = { inputs: {} }, n = 0, r = e.childNodes.length; n < r; n++) { var i = e.childNodes[n] if (1 === i.nodeType) switch (i.nodeName) { case 'input': var o = i.getAttribute('semantic'), s = a(i.getAttribute('source')) t.inputs[o] = s } } return t } function P(e) { for (var t = { inputs: {} }, n = 0, r = e.childNodes.length; n < r; n++) { var i = e.childNodes[n] if (1 === i.nodeType) switch (i.nodeName) { case 'input': var s = i.getAttribute('semantic'), u = a(i.getAttribute('source')), l = parseInt(i.getAttribute('offset')) t.inputs[s] = { id: u, offset: l } break case 'vcount': t.vcount = o(i.textContent) break case 'v': t.v = o(i.textContent) } } return t } function M(e) { var t = { id: e.id }, n = We.geometries[t.id] return ( void 0 !== e.skin && ((t.skin = (function (e) { var t, n, r, i = 4, o = { joints: [], indices: { array: [], stride: i }, weights: { array: [], stride: i }, }, a = e.sources, s = e.vertexWeights, u = s.vcount, l = s.v, c = s.inputs.JOINT.offset, d = s.inputs.WEIGHT.offset, f = e.sources[e.joints.inputs.JOINT], h = e.sources[e.joints.inputs.INV_BIND_MATRIX], p = a[s.inputs.WEIGHT.id].array, v = 0 for (t = 0, r = u.length; t < r; t++) { var m = u[t], g = [] for (n = 0; n < m; n++) { var y = l[v + c], b = p[l[v + d]] g.push({ index: y, weight: b }), (v += 2) } for (g.sort(k), n = 0; n < i; n++) { var w = g[n] void 0 !== w ? (o.indices.array.push(w.index), o.weights.array.push(w.weight)) : (o.indices.array.push(0), o.weights.array.push(0)) } } e.bindShapeMatrix ? (o.bindMatrix = new THREE.Matrix4() .fromArray(e.bindShapeMatrix) .transpose()) : (o.bindMatrix = new THREE.Matrix4().identity()) for (t = 0, r = f.array.length; t < r; t++) { var x = f.array[t], E = new THREE.Matrix4().fromArray(h.array, t * h.stride).transpose() o.joints.push({ name: x, boneInverse: E }) } return o function k(e, t) { return t.weight - e.weight } })(e.skin)), (n.sources.skinIndices = t.skin.indices), (n.sources.skinWeights = t.skin.weights)), t ) } function R(e) { return void 0 !== e.build ? e.build : e.init_from } function j(e) { var t = We.images[e] return void 0 !== t ? f(t, R) : (console.warn("THREE.ColladaLoader: Couldn't find image with ID:", e), null) } function D(e) { for ( var t = { surfaces: {}, samplers: {} }, n = 0, r = e.childNodes.length; n < r; n++ ) { var i = e.childNodes[n] if (1 === i.nodeType) switch (i.nodeName) { case 'newparam': L(i, t) break case 'technique': t.technique = z(i) break case 'extra': t.extra = G(i) } } return t } function L(e, t) { for (var n = e.getAttribute('sid'), r = 0, i = e.childNodes.length; r < i; r++) { var o = e.childNodes[r] if (1 === o.nodeType) switch (o.nodeName) { case 'surface': t.surfaces[n] = N(o) break case 'sampler2D': t.samplers[n] = I(o) } } } function N(e) { for (var t = {}, n = 0, r = e.childNodes.length; n < r; n++) { var i = e.childNodes[n] if (1 === i.nodeType) switch (i.nodeName) { case 'init_from': t.init_from = i.textContent } } return t } function I(e) { for (var t = {}, n = 0, r = e.childNodes.length; n < r; n++) { var i = e.childNodes[n] if (1 === i.nodeType) switch (i.nodeName) { case 'source': t.source = i.textContent } } return t } function z(e) { for (var t = {}, n = 0, r = e.childNodes.length; n < r; n++) { var i = e.childNodes[n] if (1 === i.nodeType) switch (i.nodeName) { case 'constant': case 'lambert': case 'blinn': case 'phong': ;(t.type = i.nodeName), (t.parameters = H(i)) } } return t } function H(e) { for (var t = {}, n = 0, r = e.childNodes.length; n < r; n++) { var i = e.childNodes[n] if (1 === i.nodeType) switch (i.nodeName) { case 'emission': case 'diffuse': case 'specular': case 'bump': case 'ambient': case 'shininess': case 'transparency': t[i.nodeName] = B(i) break case 'transparent': t[i.nodeName] = { opaque: i.getAttribute('opaque'), data: B(i) } } } return t } function B(e) { for (var t = {}, n = 0, r = e.childNodes.length; n < r; n++) { var o = e.childNodes[n] if (1 === o.nodeType) switch (o.nodeName) { case 'color': t[o.nodeName] = i(o.textContent) break case 'float': t[o.nodeName] = parseFloat(o.textContent) break case 'texture': t[o.nodeName] = { id: o.getAttribute('texture'), extra: F(o) } } } return t } function F(e) { for (var t = { technique: {} }, n = 0, r = e.childNodes.length; n < r; n++) { var i = e.childNodes[n] if (1 === i.nodeType) switch (i.nodeName) { case 'extra': V(i, t) } } return t } function V(e, t) { for (var n = 0, r = e.childNodes.length; n < r; n++) { var i = e.childNodes[n] if (1 === i.nodeType) switch (i.nodeName) { case 'technique': U(i, t) } } } function U(e, t) { for (var n = 0, r = e.childNodes.length; n < r; n++) { var i = e.childNodes[n] if (1 === i.nodeType) switch (i.nodeName) { case 'repeatU': case 'repeatV': case 'offsetU': case 'offsetV': t.technique[i.nodeName] = parseFloat(i.textContent) break case 'wrapU': case 'wrapV': 'TRUE' === i.textContent.toUpperCase() ? (t.technique[i.nodeName] = 1) : 'FALSE' === i.textContent.toUpperCase() ? (t.technique[i.nodeName] = 0) : (t.technique[i.nodeName] = parseInt(i.textContent)) } } } function G(e) { for (var t = {}, n = 0, r = e.childNodes.length; n < r; n++) { var i = e.childNodes[n] if (1 === i.nodeType) switch (i.nodeName) { case 'technique': t.technique = q(i) } } return t } function q(e) { for (var t = {}, n = 0, r = e.childNodes.length; n < r; n++) { var i = e.childNodes[n] if (1 === i.nodeType) switch (i.nodeName) { case 'double_sided': t[i.nodeName] = parseInt(i.textContent) } } return t } function W(e) { return e } function K(e) { var t, n, r = ((t = e.url), f(We.effects[t], W)), i = r.profile.technique, o = r.profile.extra switch (i.type) { case 'phong': case 'blinn': n = new THREE.MeshPhongMaterial() break case 'lambert': n = new THREE.MeshLambertMaterial() break default: n = new THREE.MeshBasicMaterial() } function a(e) { var t = r.profile.samplers[e.id], n = null void 0 !== t ? (n = j(r.profile.surfaces[t.source].init_from)) : (console.warn( 'THREE.ColladaLoader: Undefined sampler. Access image directly (see #12530).', ), (n = j(e.id))) if (null !== n) { var i = (function (e) { var t, n = e.slice(2 + ((e.lastIndexOf('.') - 1) >>> 0)) switch ((n = n.toLowerCase())) { case 'tga': t = Be break default: t = Ve } return t })(n) if (void 0 !== i) { var o = i.load(n), a = e.extra if (void 0 !== a && void 0 !== a.technique && !1 === s(a.technique)) { var u = a.technique ;(o.wrapS = u.wrapU ? THREE.RepeatWrapping : THREE.ClampToEdgeWrapping), (o.wrapT = u.wrapV ? THREE.RepeatWrapping : THREE.ClampToEdgeWrapping), o.offset.set(u.offsetU || 0, u.offsetV || 0), o.repeat.set(u.repeatU || 1, u.repeatV || 1) } else (o.wrapS = THREE.RepeatWrapping), (o.wrapT = THREE.RepeatWrapping) return o } return ( console.warn('THREE.ColladaLoader: Loader for texture %s not found.', n), null ) } return ( console.warn("THREE.ColladaLoader: Couldn't create texture with ID:", e.id), null ) } n.name = e.name var u = i.parameters for (var l in u) { var c = u[l] switch (l) { case 'diffuse': c.color && n.color.fromArray(c.color), c.texture && (n.map = a(c.texture)) break case 'specular': c.color && n.specular && n.specular.fromArray(c.color), c.texture && (n.specularMap = a(c.texture)) break case 'bump': c.texture && (n.normalMap = a(c.texture)) break case 'ambient': c.texture && (n.lightMap = a(c.texture)) break case 'shininess': c.float && n.shininess && (n.shininess = c.float) break case 'emission': c.color && n.emissive && n.emissive.fromArray(c.color), c.texture && (n.emissiveMap = a(c.texture)) } } var d = u.transparent, h = u.transparency if ( (void 0 === h && d && (h = { float: 1 }), void 0 === d && h && (d = { opaque: 'A_ONE', data: { color: [1, 1, 1, 1] } }), d && h) ) if (d.data.texture) n.transparent = !0 else { var p = d.data.color switch (d.opaque) { case 'A_ONE': n.opacity = p[3] * h.float break case 'RGB_ZERO': n.opacity = 1 - p[0] * h.float break case 'A_ZERO': n.opacity = 1 - p[3] * h.float break case 'RGB_ONE': n.opacity = p[0] * h.float break default: console.warn( 'THREE.ColladaLoader: Invalid opaque type "%s" of transparent tag.', d.opaque, ) } n.opacity < 1 && (n.transparent = !0) } return ( void 0 !== o && void 0 !== o.technique && 1 === o.technique.double_sided && (n.side = THREE.DoubleSide), n ) } function Z(e) { return f(We.materials[e], K) } function $(e) { for (var t = 0; t < e.childNodes.length; t++) { var n = e.childNodes[t] switch (n.nodeName) { case 'technique_common': return X(n) } } return {} } function X(e) { for (var t = {}, n = 0; n < e.childNodes.length; n++) { var r = e.childNodes[n] switch (r.nodeName) { case 'perspective': case 'orthographic': ;(t.technique = r.nodeName), (t.parameters = Y(r)) } } return t } function Y(e) { for (var t = {}, n = 0; n < e.childNodes.length; n++) { var r = e.childNodes[n] switch (r.nodeName) { case 'xfov': case 'yfov': case 'xmag': case 'ymag': case 'znear': case 'zfar': case 'aspect_ratio': t[r.nodeName] = parseFloat(r.textContent) } } return t } function Q(e) { var t switch (e.optics.technique) { case 'perspective': t = new THREE.PerspectiveCamera( e.optics.parameters.yfov, e.optics.parameters.aspect_ratio, e.optics.parameters.znear, e.optics.parameters.zfar, ) break case 'orthographic': var n = e.optics.parameters.ymag, r = e.optics.parameters.xmag, i = e.optics.parameters.aspect_ratio ;(r = void 0 === r ? n * i : r), (n = void 0 === n ? r / i : n), (r *= 0.5), (n *= 0.5), (t = new THREE.OrthographicCamera( -r, r, n, -n, e.optics.parameters.znear, e.optics.parameters.zfar, )) break default: t = new THREE.PerspectiveCamera() } return (t.name = e.name), t } function J(e) { var t = We.cameras[e] return void 0 !== t ? f(t, Q) : (console.warn("THREE.ColladaLoader: Couldn't find camera with ID:", e), null) } function ee(e) { for (var t = {}, n = 0, r = e.childNodes.length; n < r; n++) { var i = e.childNodes[n] if (1 === i.nodeType) switch (i.nodeName) { case 'directional': case 'point': case 'spot': case 'ambient': ;(t.technique = i.nodeName), (t.parameters = te(i)) } } return t } function te(e) { for (var t = {}, n = 0, r = e.childNodes.length; n < r; n++) { var o = e.childNodes[n] if (1 === o.nodeType) switch (o.nodeName) { case 'color': var a = i(o.textContent) t.color = new THREE.Color().fromArray(a) break case 'falloff_angle': t.falloffAngle = parseFloat(o.textContent) break case 'quadratic_attenuation': var s = parseFloat(o.textContent) t.distance = s ? Math.sqrt(1 / s) : 0 } } return t } function ne(e) { var t switch (e.technique) { case 'directional': t = new THREE.DirectionalLight() break case 'point': t = new THREE.PointLight() break case 'spot': t = new THREE.SpotLight() break case 'ambient': t = new THREE.AmbientLight() } return ( e.parameters.color && t.color.copy(e.parameters.color), e.parameters.distance && (t.distance = e.parameters.distance), t ) } function re(e) { var t = We.lights[e] return void 0 !== t ? f(t, ne) : (console.warn("THREE.ColladaLoader: Couldn't find light with ID:", e), null) } function ie(e) { for (var t = { array: [], stride: 3 }, o = 0; o < e.childNodes.length; o++) { var a = e.childNodes[o] if (1 === a.nodeType) switch (a.nodeName) { case 'float_array': t.array = i(a.textContent) break case 'Name_array': t.array = r(a.textContent) break case 'technique_common': var s = n(a, 'accessor')[0] void 0 !== s && (t.stride = parseInt(s.getAttribute('stride'))) } } return t } function oe(e) { for (var t = {}, n = 0; n < e.childNodes.length; n++) { var r = e.childNodes[n] 1 === r.nodeType && (t[r.getAttribute('semantic')] = a(r.getAttribute('source'))) } return t } function ae(e) { for ( var t = { type: e.nodeName, material: e.getAttribute('material'), count: parseInt(e.getAttribute('count')), inputs: {}, stride: 0, hasUV: !1, }, n = 0, r = e.childNodes.length; n < r; n++ ) { var i = e.childNodes[n] if (1 === i.nodeType) switch (i.nodeName) { case 'input': var s = a(i.getAttribute('source')), u = i.getAttribute('semantic'), l = parseInt(i.getAttribute('offset')), c = parseInt(i.getAttribute('set')), d = c > 0 ? u + c : u ;(t.inputs[d] = { id: s, offset: l }), (t.stride = Math.max(t.stride, l + 1)), 'TEXCOORD' === u && (t.hasUV = !0) break case 'vcount': t.vcount = o(i.textContent) break case 'p': t.p = o(i.textContent) } } return t } function se(e) { for (var t = 0, n = 0, r = e.length; n < r; n++) { !0 === e[n].hasUV && t++ } t > 0 && t < e.length && (e.uvsNeedsFix = !0) } function ue(e) { var t = {}, n = e.sources, r = e.vertices, i = e.primitives if (0 === i.length) return {} var o = (function (e) { for (var t = {}, n = 0; n < e.length; n++) { var r = e[n] void 0 === t[r.type] && (t[r.type] = []), t[r.type].push(r) } return t })(i) for (var a in o) { var s = o[a] se(s), (t[a] = le(s, n, r)) } return t } function le(e, t, n) { for ( var r = {}, i = { array: [], stride: 0 }, o = { array: [], stride: 0 }, a = { array: [], stride: 0 }, s = { array: [], stride: 0 }, u = { array: [], stride: 0 }, l = [], c = 4, d = [], f = 4, h = new THREE.BufferGeometry(), p = [], v = 0, m = 0; m < e.length; m++ ) { var g = e[m], y = g.inputs, b = 0 switch (g.type) { case 'lines': case 'linestrips': b = 2 * g.count break case 'triangles': b = 3 * g.count break case 'polylist': for (var w = 0; w < g.count; w++) { var x = g.vcount[w] switch (x) { case 3: b += 3 break case 4: b += 6 break default: b += 3 * (x - 2) } } break default: console.warn('THREE.ColladaLoader: Unknow primitive type:', g.type) } for (var E in (h.addGroup(v, b, m), (v += b), g.material && p.push(g.material), y)) { var k = y[E] switch (E) { case 'VERTEX': for (var _ in n) { var T = n[_] switch (_) { case 'POSITION': var O = i.array.length if ( (ce(g, t[T], k.offset, i.array), (i.stride = t[T].stride), t.skinWeights && t.skinIndices && (ce(g, t.skinIndices, k.offset, l), ce(g, t.skinWeights, k.offset, d)), !1 === g.hasUV && !0 === e.uvsNeedsFix) ) { b = (i.array.length - O) / i.stride for (var C = 0; C < b; C++) a.array.push(0, 0) } break case 'NORMAL': ce(g, t[T], k.offset, o.array), (o.stride = t[T].stride) break case 'COLOR': ce(g, t[T], k.offset, u.array), (u.stride = t[T].stride) break case 'TEXCOORD': ce(g, t[T], k.offset, a.array), (a.stride = t[T].stride) break case 'TEXCOORD1': ce(g, t[T], k.offset, s.array), (a.stride = t[T].stride) break default: console.warn( 'THREE.ColladaLoader: Semantic "%s" not handled in geometry build process.', _, ) } } break case 'NORMAL': ce(g, t[k.id], k.offset, o.array), (o.stride = t[k.id].stride) break case 'COLOR': ce(g, t[k.id], k.offset, u.array), (u.stride = t[k.id].stride) break case 'TEXCOORD': ce(g, t[k.id], k.offset, a.array), (a.stride = t[k.id].stride) break case 'TEXCOORD1': ce(g, t[k.id], k.offset, s.array), (s.stride = t[k.id].stride) } } } return ( i.array.length > 0 && h.addAttribute('position', new THREE.Float32BufferAttribute(i.array, i.stride)), o.array.length > 0 && h.addAttribute('normal', new THREE.Float32BufferAttribute(o.array, o.stride)), u.array.length > 0 && h.addAttribute('color', new THREE.Float32BufferAttribute(u.array, u.stride)), a.array.length > 0 && h.addAttribute('uv', new THREE.Float32BufferAttribute(a.array, a.stride)), s.array.length > 0 && h.addAttribute('uv2', new THREE.Float32BufferAttribute(s.array, s.stride)), l.length > 0 && h.addAttribute('skinIndex', new THREE.Float32BufferAttribute(l, c)), d.length > 0 && h.addAttribute('skinWeight', new THREE.Float32BufferAttribute(d, f)), (r.data = h), (r.type = e[0].type), (r.materialKeys = p), r ) } function ce(e, t, n, r) { var i = e.p, o = e.stride, a = e.vcount function s(e) { for (var t = i[e + n] * l, o = t + l; t < o; t++) r.push(u[t]) } var u = t.array, l = t.stride if (void 0 !== e.vcount) for (var c = 0, d = 0, f = a.length; d < f; d++) { var h = a[d] if (4 === h) { var p = c + 1 * o, v = c + 2 * o, m = c + 3 * o s(c + 0 * o), s(p), s(m), s(p), s(v), s(m) } else if (3 === h) { ;(p = c + 1 * o), (v = c + 2 * o) s(c + 0 * o), s(p), s(v) } else if (h > 4) for (var g = 1, y = h - 2; g <= y; g++) { ;(p = c + o * g), (v = c + o * (g + 1)) s(c + 0 * o), s(p), s(v) } c += o * h } else for (d = 0, f = i.length; d < f; d += o) s(d) } function de(e) { return f(We.geometries[e], ue) } function fe(e) { return void 0 !== e.build ? e.build : e } function he(e, t) { for (var n = 0; n < e.childNodes.length; n++) { var r = e.childNodes[n] if (1 === r.nodeType) switch (r.nodeName) { case 'joint': t.joints[r.getAttribute('sid')] = pe(r) break case 'link': t.links.push(me(r)) } } } function pe(e) { for (var t, n = 0; n < e.childNodes.length; n++) { var r = e.childNodes[n] if (1 === r.nodeType) switch (r.nodeName) { case 'prismatic': case 'revolute': t = ve(r) } } return t } function ve(e, t) { t = { sid: e.getAttribute('sid'), name: e.getAttribute('name') || '', axis: new THREE.Vector3(), limits: { min: 0, max: 0 }, type: e.nodeName, static: !1, zeroPosition: 0, middlePosition: 0, } for (var n = 0; n < e.childNodes.length; n++) { var r = e.childNodes[n] if (1 === r.nodeType) switch (r.nodeName) { case 'axis': var o = i(r.textContent) t.axis.fromArray(o) break case 'limits': var a = r.getElementsByTagName('max')[0], s = r.getElementsByTagName('min')[0] ;(t.limits.max = parseFloat(a.textContent)), (t.limits.min = parseFloat(s.textContent)) } } return ( t.limits.min >= t.limits.max && (t.static = !0), (t.middlePosition = (t.limits.min + t.limits.max) / 2), t ) } function me(e) { for ( var t = { sid: e.getAttribute('sid'), name: e.getAttribute('name') || '', attachments: [], transforms: [], }, n = 0; n < e.childNodes.length; n++ ) { var r = e.childNodes[n] if (1 === r.nodeType) switch (r.nodeName) { case 'attachment_full': t.attachments.push(ge(r)) break case 'matrix': case 'translate': case 'rotate': t.transforms.push(ye(r)) } } return t } function ge(e) { for ( var t = { joint: e.getAttribute('joint').split('/').pop(), transforms: [], links: [], }, n = 0; n < e.childNodes.length; n++ ) { var r = e.childNodes[n] if (1 === r.nodeType) switch (r.nodeName) { case 'link': t.links.push(me(r)) break case 'matrix': case 'translate': case 'rotate': t.transforms.push(ye(r)) } } return t } function ye(e) { var t = { type: e.nodeName }, n = i(e.textContent) switch (t.type) { case 'matrix': ;(t.obj = new THREE.Matrix4()), t.obj.fromArray(n).transpose() break case 'translate': ;(t.obj = new THREE.Vector3()), t.obj.fromArray(n) break case 'rotate': ;(t.obj = new THREE.Vector3()), t.obj.fromArray(n), (t.angle = THREE.Math.degToRad(n[3])) } return t } function be(e, t) { for (var n = 0; n < e.childNodes.length; n++) { var r = e.childNodes[n] if (1 === r.nodeType) switch (r.nodeName) { case 'technique_common': we(r, t) } } } function we(e, t) { for (var n = 0; n < e.childNodes.length; n++) { var r = e.childNodes[n] if (1 === r.nodeType) switch (r.nodeName) { case 'inertia': t.inertia = i(r.textContent) break case 'mass': t.mass = i(r.textContent)[0] } } } function xe(e) { for ( var t = { target: e.getAttribute('target').split('/').pop() }, n = 0; n < e.childNodes.length; n++ ) { var r = e.childNodes[n] if (1 === r.nodeType) switch (r.nodeName) { case 'axis': var i = r.getElementsByTagName('param')[0] t.axis = i.textContent var o = t.axis.split('inst_').pop().split('axis')[0] t.jointIndex = o.substr(0, o.length - 1) } } return t } function Ee(e) { return void 0 !== e.build ? e.build : e } function ke(e) { for ( var t = [], n = ze.querySelector('[id="' + e.id + '"]'), r = 0; r < n.childNodes.length; r++ ) { var o = n.childNodes[r] if (1 === o.nodeType) switch (o.nodeName) { case 'matrix': var a = i(o.textContent), s = new THREE.Matrix4().fromArray(a).transpose() t.push({ sid: o.getAttribute('sid'), type: o.nodeName, obj: s }) break case 'translate': case 'scale': a = i(o.textContent) var u = new THREE.Vector3().fromArray(a) t.push({ sid: o.getAttribute('sid'), type: o.nodeName, obj: u }) break case 'rotate': ;(a = i(o.textContent)), (u = new THREE.Vector3().fromArray(a)) var l = THREE.Math.degToRad(a[3]) t.push({ sid: o.getAttribute('sid'), type: o.nodeName, obj: u, angle: l }) } } return t } var _e = new THREE.Matrix4(), Te = new THREE.Vector3() function Oe(e) { for ( var t = { name: e.getAttribute('name') || '', type: e.getAttribute('type'), id: e.getAttribute('id'), sid: e.getAttribute('sid'), matrix: new THREE.Matrix4(), nodes: [], instanceCameras: [], instanceControllers: [], instanceLights: [], instanceGeometries: [], instanceNodes: [], transforms: {}, }, n = 0; n < e.childNodes.length; n++ ) { var r = e.childNodes[n] if (1 === r.nodeType) switch (r.nodeName) { case 'node': t.nodes.push(r.getAttribute('id')), Oe(r) break case 'instance_camera': t.instanceCameras.push(a(r.getAttribute('url'))) break case 'instance_controller': t.instanceControllers.push(Ce(r)) break case 'instance_light': t.instanceLights.push(a(r.getAttribute('url'))) break case 'instance_geometry': t.instanceGeometries.push(Ce(r)) break case 'instance_node': t.instanceNodes.push(a(r.getAttribute('url'))) break case 'matrix': var o = i(r.textContent) t.matrix.multiply(_e.fromArray(o).transpose()), (t.transforms[r.getAttribute('sid')] = r.nodeName) break case 'translate': o = i(r.textContent) Te.fromArray(o), t.matrix.multiply(_e.makeTranslation(Te.x, Te.y, Te.z)), (t.transforms[r.getAttribute('sid')] = r.nodeName) break case 'rotate': o = i(r.textContent) var s = THREE.Math.degToRad(o[3]) t.matrix.multiply(_e.makeRotationAxis(Te.fromArray(o), s)), (t.transforms[r.getAttribute('sid')] = r.nodeName) break case 'scale': o = i(r.textContent) t.matrix.scale(Te.fromArray(o)), (t.transforms[r.getAttribute('sid')] = r.nodeName) break case 'extra': break default: console.log(r) } } return ( De(t.id) ? console.warn( 'THREE.ColladaLoader: There is already a node with ID %s. Exclude current node from further processing.', t.id, ) : (We.nodes[t.id] = t), t ) } function Ce(e) { for ( var t = { id: a(e.getAttribute('url')), materials: {}, skeletons: [] }, n = 0; n < e.childNodes.length; n++ ) { var r = e.childNodes[n] switch (r.nodeName) { case 'bind_material': for ( var i = r.getElementsByTagName('instance_material'), o = 0; o < i.length; o++ ) { var s = i[o], u = s.getAttribute('symbol'), l = s.getAttribute('target') t.materials[u] = a(l) } break case 'skeleton': t.skeletons.push(a(r.textContent)) } } return t } function Se(e, t) { var n, r, i, o = [], a = [] for (n = 0; n < e.length; n++) { var s = e[n] if (De(s)) Ae(Le(s), t, o) else if (((i = s), void 0 !== We.visualScenes[i])) for (var u = We.visualScenes[s].children, l = 0; l < u.length; l++) { var c = u[l] if ('JOINT' === c.type) Ae(Le(c.id), t, o) } else console.error( 'THREE.ColladaLoader: Unable to find root bone of skeleton with ID:', s, ) } for (n = 0; n < t.length; n++) for (l = 0; l < o.length; l++) if ((r = o[l]).bone.name === t[n].name) { ;(a[n] = r), (r.processed = !0) break } for (n = 0; n < o.length; n++) !1 === (r = o[n]).processed && (a.push(r), (r.processed = !0)) var d = [], f = [] for (n = 0; n < a.length; n++) (r = a[n]), d.push(r.bone), f.push(r.boneInverse) return new THREE.Skeleton(d, f) } function Ae(e, t, n) { e.traverse(function (e) { if (!0 === e.isBone) { for (var r, i = 0; i < t.length; i++) { var o = t[i] if (o.name === e.name) { r = o.boneInverse break } } void 0 === r && (r = new THREE.Matrix4()), n.push({ bone: e, boneInverse: r, processed: !1 }) } }) } function Pe(e) { for ( var t, n = [], r = e.matrix, i = e.nodes, o = e.type, a = e.instanceCameras, s = e.instanceControllers, u = e.instanceLights, l = e.instanceGeometries, c = e.instanceNodes, d = 0, h = i.length; d < h; d++ ) n.push(Le(i[d])) for (d = 0, h = a.length; d < h; d++) { var p = J(a[d]) null !== p && n.push(p.clone()) } for (d = 0, h = s.length; d < h; d++) for ( var v = s[d], m = ((t = v.id), f(We.controllers[t], M)), g = je(de(m.id), v.materials), y = Se(v.skeletons, m.skin.joints), b = 0, w = g.length; b < w; b++ ) { var x ;(x = g[b]).isSkinnedMesh && (x.bind(y, m.skin.bindMatrix), x.normalizeSkinWeights()), n.push(x) } for (d = 0, h = u.length; d < h; d++) { var E = re(u[d]) null !== E && n.push(E.clone()) } for (d = 0, h = l.length; d < h; d++) for (b = 0, w = (g = je(de((v = l[d]).id), v.materials)).length; b < w; b++) n.push(g[b]) for (d = 0, h = c.length; d < h; d++) n.push(Le(c[d]).clone()) if (0 === i.length && 1 === n.length) x = n[0] else { x = 'JOINT' === o ? new THREE.Bone() : new THREE.Group() for (d = 0; d < n.length; d++) x.add(n[d]) } return ( '' === x.name && (x.name = 'JOINT' === o ? e.sid : e.name), x.matrix.copy(r), x.matrix.decompose(x.position, x.quaternion, x.scale), x ) } var Me = new THREE.MeshBasicMaterial({ color: 16711935 }) function Re(e, t) { for (var n = [], r = 0, i = e.length; r < i; r++) { var o = t[e[r]] void 0 === o ? (console.warn( 'THREE.ColladaLoader: Material with key %s not found. Apply fallback material.', e[r], ), n.push(Me)) : n.push(Z(o)) } return n } function je(e, t) { var n = [] for (var r in e) { var i = e[r], o = Re(i.materialKeys, t) 0 === o.length && ('lines' === r || 'linestrips' === r ? o.push(new THREE.LineBasicMaterial()) : o.push(new THREE.MeshPhongMaterial())) var a = void 0 !== i.data.attributes.skinIndex if (a) for (var s = 0, u = o.length; s < u; s++) o[s].skinning = !0 var l, c = 1 === o.length ? o[0] : o switch (r) { case 'lines': l = new THREE.LineSegments(i.data, c) break case 'linestrips': l = new THREE.Line(i.data, c) break case 'triangles': case 'polylist': l = a ? new THREE.SkinnedMesh(i.data, c) : new THREE.Mesh(i.data, c) } n.push(l) } return n } function De(e) { return void 0 !== We.nodes[e] } function Le(e) { return f(We.nodes[e], Pe) } function Ne(e) { var t = new THREE.Group() t.name = e.name for (var n = e.children, r = 0; r < n.length; r++) { var i = n[r] t.add(Le(i.id)) } return t } function Ie(e) { return f(We.visualScenes[e], Ne) } if (0 === e.length) return { scene: new THREE.Scene() } var ze = n(new DOMParser().parseFromString(e, 'application/xml'), 'COLLADA')[0], He = ze.getAttribute('version') console.log('THREE.ColladaLoader: File version', He) var Be, Fe = (function (e) { return { unit: u(n(e, 'unit')[0]), upAxis: l(n(e, 'up_axis')[0]) } })(n(ze, 'asset')[0]), Ve = new THREE.TextureLoader(this.manager) Ve.setPath(this.resourcePath || t).setCrossOrigin(this.crossOrigin), THREE.TGALoader && (Be = new THREE.TGALoader(this.manager)).setPath(this.resourcePath || t) var Ue = [], Ge = {}, qe = 0, We = { animations: {}, clips: {}, controllers: {}, images: {}, effects: {}, materials: {}, cameras: {}, lights: {}, geometries: {}, nodes: {}, visualScenes: {}, kinematicsModels: {}, physicsModels: {}, kinematicsScenes: {}, } c(ze, 'library_animations', 'animation', function (e) { for ( var t = { sources: {}, samplers: {}, channels: {} }, n = 0, r = e.childNodes.length; n < r; n++ ) { var i, o = e.childNodes[n] if (1 === o.nodeType) switch (o.nodeName) { case 'source': ;(i = o.getAttribute('id')), (t.sources[i] = ie(o)) break case 'sampler': ;(i = o.getAttribute('id')), (t.samplers[i] = h(o)) break case 'channel': ;(i = o.getAttribute('target')), (t.channels[i] = p(o)) break default: console.log(o) } } We.animations[e.getAttribute('id')] = t }), c(ze, 'library_animation_clips', 'animation_clip', function (e) { for ( var t = { name: e.getAttribute('id') || 'default', start: parseFloat(e.getAttribute('start') || 0), end: parseFloat(e.getAttribute('end') || 0), animations: [], }, n = 0, r = e.childNodes.length; n < r; n++ ) { var i = e.childNodes[n] if (1 === i.nodeType) switch (i.nodeName) { case 'instance_animation': t.animations.push(a(i.getAttribute('url'))) } } We.clips[e.getAttribute('id')] = t }), c(ze, 'library_controllers', 'controller', function (e) { for (var t = {}, n = 0, r = e.childNodes.length; n < r; n++) { var i = e.childNodes[n] if (1 === i.nodeType) switch (i.nodeName) { case 'skin': ;(t.id = a(i.getAttribute('source'))), (t.skin = S(i)) break case 'morph': ;(t.id = a(i.getAttribute('source'))), console.warn( 'THREE.ColladaLoader: Morph target animation not supported yet.', ) } } We.controllers[e.getAttribute('id')] = t }), c(ze, 'library_images', 'image', function (e) { var t = { init_from: n(e, 'init_from')[0].textContent } We.images[e.getAttribute('id')] = t }), c(ze, 'library_effects', 'effect', function (e) { for (var t = {}, n = 0, r = e.childNodes.length; n < r; n++) { var i = e.childNodes[n] if (1 === i.nodeType) switch (i.nodeName) { case 'profile_COMMON': t.profile = D(i) } } We.effects[e.getAttribute('id')] = t }), c(ze, 'library_materials', 'material', function (e) { for ( var t = { name: e.getAttribute('name') }, n = 0, r = e.childNodes.length; n < r; n++ ) { var i = e.childNodes[n] if (1 === i.nodeType) switch (i.nodeName) { case 'instance_effect': t.url = a(i.getAttribute('url')) } } We.materials[e.getAttribute('id')] = t }), c(ze, 'library_cameras', 'camera', function (e) { for ( var t = { name: e.getAttribute('name') }, n = 0, r = e.childNodes.length; n < r; n++ ) { var i = e.childNodes[n] if (1 === i.nodeType) switch (i.nodeName) { case 'optics': t.optics = $(i) } } We.cameras[e.getAttribute('id')] = t }), c(ze, 'library_lights', 'light', function (e) { for (var t = {}, n = 0, r = e.childNodes.length; n < r; n++) { var i = e.childNodes[n] if (1 === i.nodeType) switch (i.nodeName) { case 'technique_common': t = ee(i) } } We.lights[e.getAttribute('id')] = t }), c(ze, 'library_geometries', 'geometry', function (e) { var t = { name: e.getAttribute('name'), sources: {}, vertices: {}, primitives: [] }, r = n(e, 'mesh')[0] if (void 0 !== r) { for (var i = 0; i < r.childNodes.length; i++) { var o = r.childNodes[i] if (1 === o.nodeType) { var a = o.getAttribute('id') switch (o.nodeName) { case 'source': t.sources[a] = ie(o) break case 'vertices': t.vertices = oe(o) break case 'polygons': console.warn( 'THREE.ColladaLoader: Unsupported primitive type: ', o.nodeName, ) break case 'lines': case 'linestrips': case 'polylist': case 'triangles': t.primitives.push(ae(o)) break default: console.log(o) } } } We.geometries[e.getAttribute('id')] = t } }), c(ze, 'library_nodes', 'node', Oe), c(ze, 'library_visual_scenes', 'visual_scene', function (e) { var t = { name: e.getAttribute('name'), children: [] } !(function (e) { for (var t = e.getElementsByTagName('node'), n = 0; n < t.length; n++) { var r = t[n] !1 === r.hasAttribute('id') && r.setAttribute('id', 'three_default_' + qe++) } })(e) for (var r = n(e, 'node'), i = 0; i < r.length; i++) t.children.push(Oe(r[i])) We.visualScenes[e.getAttribute('id')] = t }), c(ze, 'library_kinematics_models', 'kinematics_model', function (e) { for ( var t = { name: e.getAttribute('name') || '', joints: {}, links: [] }, n = 0; n < e.childNodes.length; n++ ) { var r = e.childNodes[n] if (1 === r.nodeType) switch (r.nodeName) { case 'technique_common': he(r, t) } } We.kinematicsModels[e.getAttribute('id')] = t }), c(ze, 'library_physics_models', 'physics_model', function (e) { for ( var t = { name: e.getAttribute('name') || '', rigidBodies: {} }, n = 0; n < e.childNodes.length; n++ ) { var r = e.childNodes[n] if (1 === r.nodeType) switch (r.nodeName) { case 'rigid_body': ;(t.rigidBodies[r.getAttribute('name')] = {}), be(r, t.rigidBodies[r.getAttribute('name')]) } } We.physicsModels[e.getAttribute('id')] = t }), c(ze, 'scene', 'instance_kinematics_scene', function (e) { for (var t = { bindJointAxis: [] }, n = 0; n < e.childNodes.length; n++) { var r = e.childNodes[n] if (1 === r.nodeType) switch (r.nodeName) { case 'bind_joint_axis': t.bindJointAxis.push(xe(r)) } } We.kinematicsScenes[a(e.getAttribute('url'))] = t }), d(We.animations, v), d(We.clips, O), d(We.controllers, M), d(We.images, R), d(We.effects, W), d(We.materials, K), d(We.cameras, Q), d(We.lights, ne), d(We.geometries, ue), d(We.visualScenes, Ne), (function () { var e = We.clips if (!0 === s(e)) { if (!1 === s(We.animations)) { var t = [] for (var n in We.animations) for (var r = m(n), i = 0, o = r.length; i < o; i++) t.push(r[i]) Ue.push(new THREE.AnimationClip('default', -1, t)) } } else for (var n in e) Ue.push(C(n)) })(), (function () { var e = Object.keys(We.kinematicsModels)[0], t = Object.keys(We.kinematicsScenes)[0], n = Object.keys(We.visualScenes)[0] if (void 0 !== e && void 0 !== t) { for ( var r, i = ((r = e), f(We.kinematicsModels[r], fe)), o = (function (e) { return f(We.kinematicsScenes[e], Ee) })(t), a = Ie(n), s = o.bindJointAxis, u = {}, l = 0, c = s.length; l < c; l++ ) { var d = s[l], h = ze.querySelector('[sid="' + d.target + '"]') if (h) { var p = h.parentElement m(d.jointIndex, p) } } var v = new THREE.Matrix4() Ge = { joints: i && i.joints, getJointValue: function (e) { var t = u[e] if (t) return t.position console.warn('THREE.ColladaLoader: Joint ' + e + " doesn't exist.") }, setJointValue: function (e, t) { var n = u[e] if (n) { var r = n.joint if (t > r.limits.max || t < r.limits.min) console.warn( 'THREE.ColladaLoader: Joint ' + e + ' value ' + t + ' outside of limits (min: ' + r.limits.min + ', max: ' + r.limits.max + ').', ) else if (r.static) console.warn('THREE.ColladaLoader: Joint ' + e + ' is static.') else { var i = n.object, o = r.axis, a = n.transforms _e.identity() for (var s = 0; s < a.length; s++) { var l = a[s] if (l.sid && -1 !== l.sid.indexOf(e)) switch (r.type) { case 'revolute': _e.multiply(v.makeRotationAxis(o, THREE.Math.degToRad(t))) break case 'prismatic': _e.multiply(v.makeTranslation(o.x * t, o.y * t, o.z * t)) break default: console.warn('THREE.ColladaLoader: Unknown joint type: ' + r.type) } else switch (l.type) { case 'matrix': _e.multiply(l.obj) break case 'translate': _e.multiply(v.makeTranslation(l.obj.x, l.obj.y, l.obj.z)) break case 'scale': _e.scale(l.obj) break case 'rotate': _e.multiply(v.makeRotationAxis(l.obj, l.angle)) } } i.matrix.copy(_e), i.matrix.decompose(i.position, i.quaternion, i.scale), (u[e].position = t) } } else console.log('THREE.ColladaLoader: ' + e + ' does not exist.') }, } } function m(e, t) { var n = t.getAttribute('name'), r = i.joints[e] a.traverse(function (i) { i.name === n && (u[e] = { object: i, transforms: ke(t), joint: r, position: r.zeroPosition }) }) } })() var Ke = (function (e) { return Ie(a(n(e, 'instance_visual_scene')[0].getAttribute('url'))) })(n(ze, 'scene')[0]) return ( 'Z_UP' === Fe.upAxis && Ke.quaternion.setFromEuler(new THREE.Euler(-Math.PI / 2, 0, 0)), Ke.scale.multiplyScalar(Fe.unit), { animations: Ue, kinematics: Ge, library: We, scene: Ke } ) }, }) }, 9434: function (e) { e.exports = THREE.FBXLoader = (function () { var e, t, n function r(e) { this.manager = void 0 !== e ? e : THREE.DefaultLoadingManager } function i(e) { this.textureLoader = e } function o() {} function a() {} function s() {} function u() {} function l(e, t) { ;(this.dv = new DataView(e)), (this.offset = 0), (this.littleEndian = void 0 === t || t) } function c() {} function d(e) { var t = e.match(/FBXVersion: (\d+)/) if (t) return parseInt(t[1]) throw new Error('THREE.FBXLoader: Cannot find the version number for the file given.') } function f(e) { return e / 46186158e3 } ;(r.prototype = { constructor: r, crossOrigin: 'anonymous', load: function (e, t, n, r) { var i = this, o = THREE.LoaderUtils.extractUrlBase(e), a = new THREE.FileLoader(this.manager) a.setResponseType('arraybuffer'), a.load( e, function (n) { try { var a = i.parse(n, o) t(a) } catch (s) { setTimeout(function () { r && r(s), i.manager.itemError(e) }, 0) } }, n, r, ) }, setCrossOrigin: function (e) { return (this.crossOrigin = e), this }, parse: function (t, n) { if ( (function (e) { var t = 'Kaydara FBX Binary \0' return e.byteLength >= t.length && t === k(e, 0, t.length) })(t) ) e = new u().parse(t) else { var r = k(t) if ( !(function (e) { var t = [ 'K', 'a', 'y', 'd', 'a', 'r', 'a', '\\', 'F', 'B', 'X', '\\', 'B', 'i', 'n', 'a', 'r', 'y', '\\', '\\', ], n = 0 function r(t) { var r = e[t - 1] return (e = e.slice(n + t)), n++, r } for (var i = 0; i < t.length; ++i) { if (r(1) === t[i]) return !1 } return !0 })(r) ) throw new Error('THREE.FBXLoader: Unknown format.') if (d(r) < 7e3) throw new Error('THREE.FBXLoader: FBX version not supported, FileVersion: ' + d(r)) e = new s().parse(r) } return new i( new THREE.TextureLoader(this.manager).setPath(n).setCrossOrigin(this.crossOrigin), ).parse(e) }, }), (i.prototype = { constructor: i, parse: function () { t = this.parseConnections() var e = this.parseImages(), r = this.parseTextures(e), i = this.parseMaterials(r), a = this.parseDeformers(), s = new o().parse(a) return this.parseScene(a, s, i), n }, parseConnections: function () { var t = new Map() 'Connections' in e && e.Connections.connections.forEach(function (e) { var n = e[0], r = e[1], i = e[2] t.has(n) || t.set(n, { parents: [], children: [] }) var o = { ID: r, relationship: i } t.get(n).parents.push(o), t.has(r) || t.set(r, { parents: [], children: [] }) var a = { ID: n, relationship: i } t.get(r).children.push(a) }) return t }, parseImages: function () { var t = {}, n = {} if ('Video' in e.Objects) { var r = e.Objects.Video for (var i in r) { var o = r[i] if (((t[(l = parseInt(i))] = o.RelativeFilename || o.Filename), 'Content' in o)) { var a = o.Content instanceof ArrayBuffer && o.Content.byteLength > 0, s = 'string' === typeof o.Content && '' !== o.Content if (a || s) { var u = this.parseImage(r[i]) n[o.RelativeFilename || o.Filename] = u } } } } for (var l in t) { var c = t[l] void 0 !== n[c] ? (t[l] = n[c]) : (t[l] = t[l].split('\\').pop()) } return t }, parseImage: function (e) { var t, n = e.Content, r = e.RelativeFilename || e.Filename, i = r.slice(r.lastIndexOf('.') + 1).toLowerCase() switch (i) { case 'bmp': t = 'image/bmp' break case 'jpg': case 'jpeg': t = 'image/jpeg' break case 'png': t = 'image/png' break case 'tif': t = 'image/tiff' break case 'tga': if ('function' !== typeof THREE.TGALoader) return void console.warn( 'FBXLoader: THREE.TGALoader is required to load TGA textures', ) null === THREE.Loader.Handlers.get('.tga') && THREE.Loader.Handlers.add(/\.tga$/i, new THREE.TGALoader()), (t = 'image/tga') break default: return void console.warn('FBXLoader: Image type "' + i + '" is not supported.') } if ('string' === typeof n) return 'data:' + t + ';base64,' + n var o = new Uint8Array(n) return window.URL.createObjectURL(new Blob([o], { type: t })) }, parseTextures: function (t) { var n = new Map() if ('Texture' in e.Objects) { var r = e.Objects.Texture for (var i in r) { var o = this.parseTexture(r[i], t) n.set(parseInt(i), o) } } return n }, parseTexture: function (e, t) { var n = this.loadTexture(e, t) ;(n.ID = e.id), (n.name = e.attrName) var r = e.WrapModeU, i = e.WrapModeV, o = void 0 !== r ? r.value : 0, a = void 0 !== i ? i.value : 0 if ( ((n.wrapS = 0 === o ? THREE.RepeatWrapping : THREE.ClampToEdgeWrapping), (n.wrapT = 0 === a ? THREE.RepeatWrapping : THREE.ClampToEdgeWrapping), 'Scaling' in e) ) { var s = e.Scaling.value ;(n.repeat.x = s[0]), (n.repeat.y = s[1]) } return n }, loadTexture: function (e, n) { var r, i, o = this.textureLoader.path, a = t.get(e.id).children void 0 !== a && a.length > 0 && void 0 !== n[a[0].ID] && ((0 !== (r = n[a[0].ID]).indexOf('blob:') && 0 !== r.indexOf('data:')) || this.textureLoader.setPath(void 0)) var s = e.FileName.slice(-3).toLowerCase() if ('tga' === s) { var u = THREE.Loader.Handlers.get('.tga') null === u ? (console.warn( 'FBXLoader: TGALoader not found, creating empty placeholder texture for', r, ), (i = new THREE.Texture())) : (i = u.load(r)) } else 'psd' === s ? (console.warn( 'FBXLoader: PSD textures are not supported, creating empty placeholder texture for', r, ), (i = new THREE.Texture())) : (i = this.textureLoader.load(r)) return this.textureLoader.setPath(o), i }, parseMaterials: function (t) { var n = new Map() if ('Material' in e.Objects) { var r = e.Objects.Material for (var i in r) { var o = this.parseMaterial(r[i], t) null !== o && n.set(parseInt(i), o) } } return n }, parseMaterial: function (e, n) { var r = e.id, i = e.attrName, o = e.ShadingModel if (('object' === typeof o && (o = o.value), !t.has(r))) return null var a, s = this.parseParameters(e, n, r) switch (o.toLowerCase()) { case 'phong': a = new THREE.MeshPhongMaterial() break case 'lambert': a = new THREE.MeshLambertMaterial() break default: console.warn( 'THREE.FBXLoader: unknown material type "%s". Defaulting to MeshPhongMaterial.', o, ), (a = new THREE.MeshPhongMaterial({ color: 3342591 })) } return a.setValues(s), (a.name = i), a }, parseParameters: function (e, n, r) { var i = {} e.BumpFactor && (i.bumpScale = e.BumpFactor.value), e.Diffuse ? (i.color = new THREE.Color().fromArray(e.Diffuse.value)) : e.DiffuseColor && 'Color' === e.DiffuseColor.type && (i.color = new THREE.Color().fromArray(e.DiffuseColor.value)), e.DisplacementFactor && (i.displacementScale = e.DisplacementFactor.value), e.Emissive ? (i.emissive = new THREE.Color().fromArray(e.Emissive.value)) : e.EmissiveColor && 'Color' === e.EmissiveColor.type && (i.emissive = new THREE.Color().fromArray(e.EmissiveColor.value)), e.EmissiveFactor && (i.emissiveIntensity = parseFloat(e.EmissiveFactor.value)), e.Opacity && (i.opacity = parseFloat(e.Opacity.value)), i.opacity < 1 && (i.transparent = !0), e.ReflectionFactor && (i.reflectivity = e.ReflectionFactor.value), e.Shininess && (i.shininess = e.Shininess.value), e.Specular ? (i.specular = new THREE.Color().fromArray(e.Specular.value)) : e.SpecularColor && 'Color' === e.SpecularColor.type && (i.specular = new THREE.Color().fromArray(e.SpecularColor.value)) var o = this return ( t.get(r).children.forEach(function (e) { var t = e.relationship switch (t) { case 'Bump': i.bumpMap = o.getTexture(n, e.ID) break case 'DiffuseColor': i.map = o.getTexture(n, e.ID) break case 'DisplacementColor': i.displacementMap = o.getTexture(n, e.ID) break case 'EmissiveColor': i.emissiveMap = o.getTexture(n, e.ID) break case 'NormalMap': i.normalMap = o.getTexture(n, e.ID) break case 'ReflectionColor': ;(i.envMap = o.getTexture(n, e.ID)), (i.envMap.mapping = THREE.EquirectangularReflectionMapping) break case 'SpecularColor': i.specularMap = o.getTexture(n, e.ID) break case 'TransparentColor': ;(i.alphaMap = o.getTexture(n, e.ID)), (i.transparent = !0) break case 'AmbientColor': case 'ShininessExponent': case 'SpecularFactor': case 'VectorDisplacementColor': default: console.warn( 'THREE.FBXLoader: %s map is not supported in three.js, skipping texture.', t, ) } }), i ) }, getTexture: function (n, r) { return ( 'LayeredTexture' in e.Objects && r in e.Objects.LayeredTexture && (console.warn( 'THREE.FBXLoader: layered textures are not supported in three.js. Discarding all but first layer.', ), (r = t.get(r).children[0].ID)), n.get(r) ) }, parseDeformers: function () { var n = {}, r = {} if ('Deformer' in e.Objects) { var i = e.Objects.Deformer for (var o in i) { var a = i[o], s = t.get(parseInt(o)) if ('Skin' === a.attrType) { var u = this.parseSkeleton(s, i) ;(u.ID = o), s.parents.length > 1 && console.warn( 'THREE.FBXLoader: skeleton attached to more than one geometry is not supported.', ), (u.geometryID = s.parents[0].ID), (n[o] = u) } else if ('BlendShape' === a.attrType) { var l = { id: o } ;(l.rawTargets = this.parseMorphTargets(s, i)), (l.id = o), s.parents.length > 1 && console.warn( 'THREE.FBXLoader: morph target attached to more than one geometry is not supported.', ), (r[o] = l) } } } return { skeletons: n, morphTargets: r } }, parseSkeleton: function (e, t) { var n = [] return ( e.children.forEach(function (e) { var r = t[e.ID] if ('Cluster' === r.attrType) { var i = { ID: e.ID, indices: [], weights: [], transform: new THREE.Matrix4().fromArray(r.Transform.a), transformLink: new THREE.Matrix4().fromArray(r.TransformLink.a), linkMode: r.Mode, } 'Indexes' in r && ((i.indices = r.Indexes.a), (i.weights = r.Weights.a)), n.push(i) } }), { rawBones: n, bones: [] } ) }, parseMorphTargets: function (e, n) { for (var r = [], i = 0; i < e.children.length; i++) { if (8 === i) { console.warn( 'FBXLoader: maximum of 8 morph targets supported. Ignoring additional targets.', ) break } var o = e.children[i], a = n[o.ID], s = { name: a.attrName, initialWeight: a.DeformPercent, id: a.id, fullWeights: a.FullWeights.a, } if ('BlendShapeChannel' !== a.attrType) return t.get(parseInt(o.ID)).children.forEach(function (e) { void 0 === e.relationship && (s.geoID = e.ID) }), r.push(s) } return r }, parseScene: function (r, i, o) { n = new THREE.Group() var s = this.parseModels(r.skeletons, i, o), u = e.Objects.Model, l = this s.forEach(function (e) { var r = u[e.ID] l.setLookAtProperties(e, r), t.get(e.ID).parents.forEach(function (t) { var n = s.get(t.ID) void 0 !== n && n.add(e) }), null === e.parent && n.add(e) }), this.bindSkeleton(r.skeletons, i, s), this.createAmbientLight(), this.setupMorphMaterials() var c = new a().parse() 1 === n.children.length && n.children[0].isGroup && ((n.children[0].animations = c), (n = n.children[0])), (n.animations = c) }, parseModels: function (n, r, i) { var o = new Map(), a = e.Objects.Model for (var s in a) { var u = parseInt(s), l = a[s], c = t.get(u), d = this.buildSkeleton(c, n, u, l.attrName) if (!d) { switch (l.attrType) { case 'Camera': d = this.createCamera(c) break case 'Light': d = this.createLight(c) break case 'Mesh': d = this.createMesh(c, r, i) break case 'NurbsCurve': d = this.createCurve(c, r) break case 'LimbNode': case 'Null': default: d = new THREE.Group() } ;(d.name = THREE.PropertyBinding.sanitizeNodeName(l.attrName)), (d.ID = u) } this.setModelTransforms(d, l), o.set(u, d) } return o }, buildSkeleton: function (e, t, n, r) { var i = null return ( e.parents.forEach(function (e) { for (var o in t) { var a = t[o] a.rawBones.forEach(function (t, o) { if (t.ID === e.ID) { var s = i ;(i = new THREE.Bone()).matrixWorld.copy(t.transformLink), (i.name = THREE.PropertyBinding.sanitizeNodeName(r)), (i.ID = n), (a.bones[o] = i), null !== s && i.add(s) } }) } }), i ) }, createCamera: function (t) { var n, r if ( (t.children.forEach(function (t) { var n = e.Objects.NodeAttribute[t.ID] void 0 !== n && (r = n) }), void 0 === r) ) n = new THREE.Object3D() else { var i = 0 void 0 !== r.CameraProjectionType && 1 === r.CameraProjectionType.value && (i = 1) var o = 1 void 0 !== r.NearPlane && (o = r.NearPlane.value / 1e3) var a = 1e3 void 0 !== r.FarPlane && (a = r.FarPlane.value / 1e3) var s = window.innerWidth, u = window.innerHeight void 0 !== r.AspectWidth && void 0 !== r.AspectHeight && ((s = r.AspectWidth.value), (u = r.AspectHeight.value)) var l = s / u, c = 45 void 0 !== r.FieldOfView && (c = r.FieldOfView.value) var d = r.FocalLength ? r.FocalLength.value : null switch (i) { case 0: ;(n = new THREE.PerspectiveCamera(c, l, o, a)), null !== d && n.setFocalLength(d) break case 1: n = new THREE.OrthographicCamera(-s / 2, s / 2, u / 2, -u / 2, o, a) break default: console.warn('THREE.FBXLoader: Unknown camera type ' + i + '.'), (n = new THREE.Object3D()) } } return n }, createLight: function (t) { var n, r if ( (t.children.forEach(function (t) { var n = e.Objects.NodeAttribute[t.ID] void 0 !== n && (r = n) }), void 0 === r) ) n = new THREE.Object3D() else { var i i = void 0 === r.LightType ? 0 : r.LightType.value var o = 16777215 void 0 !== r.Color && (o = new THREE.Color().fromArray(r.Color.value)) var a = void 0 === r.Intensity ? 1 : r.Intensity.value / 100 void 0 !== r.CastLightOnObject && 0 === r.CastLightOnObject.value && (a = 0) var s = 0 void 0 !== r.FarAttenuationEnd && (s = void 0 !== r.EnableFarAttenuation && 0 === r.EnableFarAttenuation.value ? 0 : r.FarAttenuationEnd.value) switch (i) { case 0: n = new THREE.PointLight(o, a, s, 1) break case 1: n = new THREE.DirectionalLight(o, a) break case 2: var u = Math.PI / 3 void 0 !== r.InnerAngle && (u = THREE.Math.degToRad(r.InnerAngle.value)) var l = 0 void 0 !== r.OuterAngle && ((l = THREE.Math.degToRad(r.OuterAngle.value)), (l = Math.max(l, 1))), (n = new THREE.SpotLight(o, a, s, u, l, 1)) break default: console.warn( 'THREE.FBXLoader: Unknown light type ' + r.LightType.value + ', defaulting to a THREE.PointLight.', ), (n = new THREE.PointLight(o, a)) } void 0 !== r.CastShadows && 1 === r.CastShadows.value && (n.castShadow = !0) } return n }, createMesh: function (e, t, n) { var r, i = null, o = null, a = [] return ( e.children.forEach(function (e) { t.has(e.ID) && (i = t.get(e.ID)), n.has(e.ID) && a.push(n.get(e.ID)) }), a.length > 1 ? (o = a) : a.length > 0 ? (o = a[0]) : ((o = new THREE.MeshPhongMaterial({ color: 13421772 })), a.push(o)), 'color' in i.attributes && a.forEach(function (e) { e.vertexColors = THREE.VertexColors }), i.FBX_Deformer ? (a.forEach(function (e) { e.skinning = !0 }), (r = new THREE.SkinnedMesh(i, o))) : (r = new THREE.Mesh(i, o)), r ) }, createCurve: function (e, t) { var n = e.children.reduce(function (e, n) { return t.has(n.ID) && (e = t.get(n.ID)), e }, null), r = new THREE.LineBasicMaterial({ color: 3342591, linewidth: 1 }) return new THREE.Line(n, r) }, setModelTransforms: function (e, t) { var n = {} 'RotationOrder' in t && (n.eulerOrder = parseInt(t.RotationOrder.value)), 'Lcl_Translation' in t && (n.translation = t.Lcl_Translation.value), 'RotationOffset' in t && (n.rotationOffset = t.RotationOffset.value), 'Lcl_Rotation' in t && (n.rotation = t.Lcl_Rotation.value), 'PreRotation' in t && (n.preRotation = t.PreRotation.value), 'PostRotation' in t && (n.postRotation = t.PostRotation.value), 'Lcl_Scaling' in t && (n.scale = t.Lcl_Scaling.value) var r = w(n) e.applyMatrix(r) }, setLookAtProperties: function (r, i) { 'LookAtProperty' in i && t.get(r.ID).children.forEach(function (t) { if ('LookAtProperty' === t.relationship) { var i = e.Objects.Model[t.ID] if ('Lcl_Translation' in i) { var o = i.Lcl_Translation.value void 0 !== r.target ? (r.target.position.fromArray(o), n.add(r.target)) : r.lookAt(new THREE.Vector3().fromArray(o)) } } }) }, bindSkeleton: function (e, n, r) { var i = this.parsePoseNodes() for (var o in e) { var a = e[o] t.get(parseInt(a.ID)).parents.forEach(function (e) { if (n.has(e.ID)) { var o = e.ID t.get(o).parents.forEach(function (e) { r.has(e.ID) && r.get(e.ID).bind(new THREE.Skeleton(a.bones), i[e.ID]) }) } }) } }, parsePoseNodes: function () { var t = {} if ('Pose' in e.Objects) { var n = e.Objects.Pose for (var r in n) if ('BindPose' === n[r].attrType) { var i = n[r].PoseNode Array.isArray(i) ? i.forEach(function (e) { t[e.Node] = new THREE.Matrix4().fromArray(e.Matrix.a) }) : (t[i.Node] = new THREE.Matrix4().fromArray(i.Matrix.a)) } } return t }, createAmbientLight: function () { if ('GlobalSettings' in e && 'AmbientColor' in e.GlobalSettings) { var t = e.GlobalSettings.AmbientColor.value, r = t[0], i = t[1], o = t[2] if (0 !== r || 0 !== i || 0 !== o) { var a = new THREE.Color(r, i, o) n.add(new THREE.AmbientLight(a, 1)) } } }, setupMorphMaterials: function () { n.traverse(function (e) { if ( e.isMesh && (e.geometry.morphAttributes.position || e.geometry.morphAttributes.normal) ) { var t = e.uuid, r = e.material.uuid, i = !1 n.traverse(function (e) { e.isMesh && e.material.uuid === r && e.uuid !== t && (i = !0) }), !0 === i && (e.material = e.material.clone()), (e.material.morphTargets = !0) } }) }, }), (o.prototype = { constructor: o, parse: function (n) { var r = new Map() if ('Geometry' in e.Objects) { var i = e.Objects.Geometry for (var o in i) { var a = t.get(parseInt(o)), s = this.parseGeometry(a, i[o], n) r.set(parseInt(o), s) } } return r }, parseGeometry: function (e, t, n) { switch (t.attrType) { case 'Mesh': return this.parseMeshGeometry(e, t, n) case 'NurbsCurve': return this.parseNurbsGeometry(t) } }, parseMeshGeometry: function (t, n, r) { var i = r.skeletons, o = r.morphTargets, a = t.parents.map(function (t) { return e.Objects.Model[t.ID] }) if (0 !== a.length) { var s = t.children.reduce(function (e, t) { return void 0 !== i[t.ID] && (e = i[t.ID]), e }, null), u = t.children.reduce(function (e, t) { return void 0 !== o[t.ID] && (e = o[t.ID]), e }, null), l = a[0], c = {} 'RotationOrder' in l && (c.eulerOrder = l.RotationOrder.value), 'GeometricTranslation' in l && (c.translation = l.GeometricTranslation.value), 'GeometricRotation' in l && (c.rotation = l.GeometricRotation.value), 'GeometricScaling' in l && (c.scale = l.GeometricScaling.value) var d = w(c) return this.genGeometry(n, s, u, d) } }, genGeometry: function (e, t, n, r) { var i = new THREE.BufferGeometry() e.attrName && (i.name = e.attrName) var o = this.parseGeoNode(e, t), a = this.genBuffers(o), s = new THREE.Float32BufferAttribute(a.vertex, 3) if ( (r.applyToBufferAttribute(s), i.addAttribute('position', s), a.colors.length > 0 && i.addAttribute('color', new THREE.Float32BufferAttribute(a.colors, 3)), t && (i.addAttribute( 'skinIndex', new THREE.Uint16BufferAttribute(a.weightsIndices, 4), ), i.addAttribute( 'skinWeight', new THREE.Float32BufferAttribute(a.vertexWeights, 4), ), (i.FBX_Deformer = t)), a.normal.length > 0) ) { var u = new THREE.Float32BufferAttribute(a.normal, 3) new THREE.Matrix3().getNormalMatrix(r).applyToBufferAttribute(u), i.addAttribute('normal', u) } if ( (a.uvs.forEach(function (e, t) { var n = 'uv' + (t + 1).toString() 0 === t && (n = 'uv'), i.addAttribute(n, new THREE.Float32BufferAttribute(a.uvs[t], 2)) }), o.material && 'AllSame' !== o.material.mappingType) ) { var l = a.materialIndex[0], c = 0 if ( (a.materialIndex.forEach(function (e, t) { e !== l && (i.addGroup(c, t - c, l), (l = e), (c = t)) }), i.groups.length > 0) ) { var d = i.groups[i.groups.length - 1], f = d.start + d.count f !== a.materialIndex.length && i.addGroup(f, a.materialIndex.length - f, l) } 0 === i.groups.length && i.addGroup(0, a.materialIndex.length, a.materialIndex[0]) } return this.addMorphTargets(i, e, n, r), i }, parseGeoNode: function (e, t) { var n = {} if ( ((n.vertexPositions = void 0 !== e.Vertices ? e.Vertices.a : []), (n.vertexIndices = void 0 !== e.PolygonVertexIndex ? e.PolygonVertexIndex.a : []), e.LayerElementColor && (n.color = this.parseVertexColors(e.LayerElementColor[0])), e.LayerElementMaterial && (n.material = this.parseMaterialIndices(e.LayerElementMaterial[0])), e.LayerElementNormal && (n.normal = this.parseNormals(e.LayerElementNormal[0])), e.LayerElementUV) ) { n.uv = [] for (var r = 0; e.LayerElementUV[r]; ) n.uv.push(this.parseUVs(e.LayerElementUV[r])), r++ } return ( (n.weightTable = {}), null !== t && ((n.skeleton = t), t.rawBones.forEach(function (e, t) { e.indices.forEach(function (r, i) { void 0 === n.weightTable[r] && (n.weightTable[r] = []), n.weightTable[r].push({ id: t, weight: e.weights[i] }) }) })), n ) }, genBuffers: function (e) { var t = { vertex: [], normal: [], colors: [], uvs: [], materialIndex: [], vertexWeights: [], weightsIndices: [], }, n = 0, r = 0, i = !1, o = [], a = [], s = [], u = [], l = [], c = [], d = this return ( e.vertexIndices.forEach(function (f, h) { var v = !1 f < 0 && ((f ^= -1), (v = !0)) var m = [], g = [] if ((o.push(3 * f, 3 * f + 1, 3 * f + 2), e.color)) { var y = p(h, n, f, e.color) s.push(y[0], y[1], y[2]) } if (e.skeleton) { if ( (void 0 !== e.weightTable[f] && e.weightTable[f].forEach(function (e) { g.push(e.weight), m.push(e.id) }), g.length > 4) ) { i || (console.warn( 'THREE.FBXLoader: Vertex has more than 4 skinning weights assigned to vertex. Deleting additional weights.', ), (i = !0)) var b = [0, 0, 0, 0], w = [0, 0, 0, 0] g.forEach(function (e, t) { var n = e, r = m[t] w.forEach(function (e, t, i) { if (n > e) { ;(i[t] = n), (n = e) var o = b[t] ;(b[t] = r), (r = o) } }) }), (m = b), (g = w) } for (; g.length < 4; ) g.push(0), m.push(0) for (var x = 0; x < 4; ++x) l.push(g[x]), c.push(m[x]) } if (e.normal) { y = p(h, n, f, e.normal) a.push(y[0], y[1], y[2]) } if (e.material && 'AllSame' !== e.material.mappingType) var E = p(h, n, f, e.material)[0] e.uv && e.uv.forEach(function (e, t) { var r = p(h, n, f, e) void 0 === u[t] && (u[t] = []), u[t].push(r[0]), u[t].push(r[1]) }), r++, v && (d.genFace(t, e, o, E, a, s, u, l, c, r), n++, (r = 0), (o = []), (a = []), (s = []), (u = []), (l = []), (c = [])) }), t ) }, genFace: function (e, t, n, r, i, o, a, s, u, l) { for (var c = 2; c < l; c++) e.vertex.push(t.vertexPositions[n[0]]), e.vertex.push(t.vertexPositions[n[1]]), e.vertex.push(t.vertexPositions[n[2]]), e.vertex.push(t.vertexPositions[n[3 * (c - 1)]]), e.vertex.push(t.vertexPositions[n[3 * (c - 1) + 1]]), e.vertex.push(t.vertexPositions[n[3 * (c - 1) + 2]]), e.vertex.push(t.vertexPositions[n[3 * c]]), e.vertex.push(t.vertexPositions[n[3 * c + 1]]), e.vertex.push(t.vertexPositions[n[3 * c + 2]]), t.skeleton && (e.vertexWeights.push(s[0]), e.vertexWeights.push(s[1]), e.vertexWeights.push(s[2]), e.vertexWeights.push(s[3]), e.vertexWeights.push(s[4 * (c - 1)]), e.vertexWeights.push(s[4 * (c - 1) + 1]), e.vertexWeights.push(s[4 * (c - 1) + 2]), e.vertexWeights.push(s[4 * (c - 1) + 3]), e.vertexWeights.push(s[4 * c]), e.vertexWeights.push(s[4 * c + 1]), e.vertexWeights.push(s[4 * c + 2]), e.vertexWeights.push(s[4 * c + 3]), e.weightsIndices.push(u[0]), e.weightsIndices.push(u[1]), e.weightsIndices.push(u[2]), e.weightsIndices.push(u[3]), e.weightsIndices.push(u[4 * (c - 1)]), e.weightsIndices.push(u[4 * (c - 1) + 1]), e.weightsIndices.push(u[4 * (c - 1) + 2]), e.weightsIndices.push(u[4 * (c - 1) + 3]), e.weightsIndices.push(u[4 * c]), e.weightsIndices.push(u[4 * c + 1]), e.weightsIndices.push(u[4 * c + 2]), e.weightsIndices.push(u[4 * c + 3])), t.color && (e.colors.push(o[0]), e.colors.push(o[1]), e.colors.push(o[2]), e.colors.push(o[3 * (c - 1)]), e.colors.push(o[3 * (c - 1) + 1]), e.colors.push(o[3 * (c - 1) + 2]), e.colors.push(o[3 * c]), e.colors.push(o[3 * c + 1]), e.colors.push(o[3 * c + 2])), t.material && 'AllSame' !== t.material.mappingType && (e.materialIndex.push(r), e.materialIndex.push(r), e.materialIndex.push(r)), t.normal && (e.normal.push(i[0]), e.normal.push(i[1]), e.normal.push(i[2]), e.normal.push(i[3 * (c - 1)]), e.normal.push(i[3 * (c - 1) + 1]), e.normal.push(i[3 * (c - 1) + 2]), e.normal.push(i[3 * c]), e.normal.push(i[3 * c + 1]), e.normal.push(i[3 * c + 2])), t.uv && t.uv.forEach(function (t, n) { void 0 === e.uvs[n] && (e.uvs[n] = []), e.uvs[n].push(a[n][0]), e.uvs[n].push(a[n][1]), e.uvs[n].push(a[n][2 * (c - 1)]), e.uvs[n].push(a[n][2 * (c - 1) + 1]), e.uvs[n].push(a[n][2 * c]), e.uvs[n].push(a[n][2 * c + 1]) }) }, addMorphTargets: function (t, n, r, i) { if (null !== r) { ;(t.morphAttributes.position = []), (t.morphAttributes.normal = []) var o = this r.rawTargets.forEach(function (r) { var a = e.Objects.Geometry[r.geoID] void 0 !== a && o.genMorphGeometry(t, n, a, i) }) } }, genMorphGeometry: function (e, t, n, r) { var i = new THREE.BufferGeometry() n.attrName && (i.name = n.attrName) for ( var o = void 0 !== t.PolygonVertexIndex ? t.PolygonVertexIndex.a : [], a = void 0 !== t.Vertices ? t.Vertices.a.slice() : [], s = void 0 !== n.Vertices ? n.Vertices.a : [], u = void 0 !== n.Indexes ? n.Indexes.a : [], l = 0; l < u.length; l++ ) { var c = 3 * u[l] ;(a[c] += s[3 * l]), (a[c + 1] += s[3 * l + 1]), (a[c + 2] += s[3 * l + 2]) } var d = { vertexIndices: o, vertexPositions: a }, f = this.genBuffers(d), h = new THREE.Float32BufferAttribute(f.vertex, 3) ;(h.name = n.attrName), r.applyToBufferAttribute(h), e.morphAttributes.position.push(h) }, parseNormals: function (e) { var t = e.MappingInformationType, n = e.ReferenceInformationType, r = e.Normals.a, i = [] return ( 'IndexToDirect' === n && ('NormalIndex' in e ? (i = e.NormalIndex.a) : 'NormalsIndex' in e && (i = e.NormalsIndex.a)), { dataSize: 3, buffer: r, indices: i, mappingType: t, referenceType: n } ) }, parseUVs: function (e) { var t = e.MappingInformationType, n = e.ReferenceInformationType, r = e.UV.a, i = [] return ( 'IndexToDirect' === n && (i = e.UVIndex.a), { dataSize: 2, buffer: r, indices: i, mappingType: t, referenceType: n } ) }, parseVertexColors: function (e) { var t = e.MappingInformationType, n = e.ReferenceInformationType, r = e.Colors.a, i = [] return ( 'IndexToDirect' === n && (i = e.ColorIndex.a), { dataSize: 4, buffer: r, indices: i, mappingType: t, referenceType: n } ) }, parseMaterialIndices: function (e) { var t = e.MappingInformationType, n = e.ReferenceInformationType if ('NoMappingInformation' === t) return { dataSize: 1, buffer: [0], indices: [0], mappingType: 'AllSame', referenceType: n, } for (var r = e.Materials.a, i = [], o = 0; o < r.length; ++o) i.push(o) return { dataSize: 1, buffer: r, indices: i, mappingType: t, referenceType: n } }, parseNurbsGeometry: function (e) { if (void 0 === THREE.NURBSCurve) return ( console.error( 'THREE.FBXLoader: The loader relies on THREE.NURBSCurve for any nurbs present in the model. Nurbs will show up as empty geometry.', ), new THREE.BufferGeometry() ) var t = parseInt(e.Order) if (isNaN(t)) return ( console.error( 'THREE.FBXLoader: Invalid Order %s given for geometry ID: %s', e.Order, e.id, ), new THREE.BufferGeometry() ) for ( var n, r, i = t - 1, o = e.KnotVector.a, a = [], s = e.Points.a, u = 0, l = s.length; u < l; u += 4 ) a.push(new THREE.Vector4().fromArray(s, u)) if ('Closed' === e.Form) a.push(a[0]) else if ('Periodic' === e.Form) { ;(n = i), (r = o.length - 1 - n) for (u = 0; u < i; ++u) a.push(a[u]) } var c = new THREE.NURBSCurve(i, o, a, n, r).getPoints(7 * a.length), d = new Float32Array(3 * c.length) c.forEach(function (e, t) { e.toArray(d, 3 * t) }) var f = new THREE.BufferGeometry() return f.addAttribute('position', new THREE.BufferAttribute(d, 3)), f }, }), (a.prototype = { constructor: a, parse: function () { var e = [], t = this.parseClips() if (void 0 === t) return e for (var n in t) { var r = t[n], i = this.addClip(r) e.push(i) } return e }, parseClips: function () { if (void 0 !== e.Objects.AnimationCurve) { var t = this.parseAnimationCurveNodes() this.parseAnimationCurves(t) var n = this.parseAnimationLayers(t) return this.parseAnimStacks(n) } }, parseAnimationCurveNodes: function () { var t = e.Objects.AnimationCurveNode, n = new Map() for (var r in t) { var i = t[r] if (null !== i.attrName.match(/S|R|T|DeformPercent/)) { var o = { id: i.id, attr: i.attrName, curves: {} } n.set(o.id, o) } } return n }, parseAnimationCurves: function (n) { var r = e.Objects.AnimationCurve for (var i in r) { var o = { id: r[i].id, times: r[i].KeyTime.a.map(f), values: r[i].KeyValueFloat.a }, a = t.get(o.id) if (void 0 !== a) { var s = a.parents[0].ID, u = a.parents[0].relationship u.match(/X/) ? (n.get(s).curves.x = o) : u.match(/Y/) ? (n.get(s).curves.y = o) : u.match(/Z/) ? (n.get(s).curves.z = o) : u.match(/d|DeformPercent/) && n.has(s) && (n.get(s).curves.morph = o) } } }, parseAnimationLayers: function (n) { var r = e.Objects.AnimationLayer, i = new Map() for (var o in r) { var a = [], s = t.get(parseInt(o)) if (void 0 !== s) { var u = s.children, l = this u.forEach(function (r, i) { if (n.has(r.ID)) { var o = n.get(r.ID) if (void 0 !== o.curves.x || void 0 !== o.curves.y || void 0 !== o.curves.z) { if (void 0 === a[i]) { t.get(r.ID).parents.forEach(function (e) { void 0 !== e.relationship && (h = e.ID) }) var s = e.Objects.Model[h.toString()], u = { modelName: THREE.PropertyBinding.sanitizeNodeName(s.attrName), initialPosition: [0, 0, 0], initialRotation: [0, 0, 0], initialScale: [1, 1, 1], transform: l.getModelAnimTransform(s), } 'PreRotation' in s && (u.preRotations = s.PreRotation.value), 'PostRotation' in s && (u.postRotations = s.PostRotation.value), (a[i] = u) } a[i][o.attr] = o } else if (void 0 !== o.curves.morph) { if (void 0 === a[i]) { var c t.get(r.ID).parents.forEach(function (e) { void 0 !== e.relationship && (c = e.ID) }) var d = t.get(c).parents[0].ID, f = t.get(d).parents[0].ID, h = t.get(f).parents[0].ID ;(s = e.Objects.Model[h]), (u = { modelName: THREE.PropertyBinding.sanitizeNodeName(s.attrName), morphName: e.Objects.Deformer[c].attrName, }) a[i] = u } a[i][o.attr] = o } } }), i.set(parseInt(o), a) } } return i }, getModelAnimTransform: function (e) { var t = {} return ( 'RotationOrder' in e && (t.eulerOrder = parseInt(e.RotationOrder.value)), 'Lcl_Translation' in e && (t.translation = e.Lcl_Translation.value), 'RotationOffset' in e && (t.rotationOffset = e.RotationOffset.value), 'Lcl_Rotation' in e && (t.rotation = e.Lcl_Rotation.value), 'PreRotation' in e && (t.preRotation = e.PreRotation.value), 'PostRotation' in e && (t.postRotation = e.PostRotation.value), 'Lcl_Scaling' in e && (t.scale = e.Lcl_Scaling.value), w(t) ) }, parseAnimStacks: function (n) { var r = e.Objects.AnimationStack, i = {} for (var o in r) { var a = t.get(parseInt(o)).children a.length > 1 && console.warn( 'THREE.FBXLoader: Encountered an animation stack with multiple layers, this is currently not supported. Ignoring subsequent layers.', ) var s = n.get(a[0].ID) i[o] = { name: r[o].attrName, layer: s } } return i }, addClip: function (e) { var t = [], n = this return ( e.layer.forEach(function (e) { t = t.concat(n.generateTracks(e)) }), new THREE.AnimationClip(e.name, -1, t) ) }, generateTracks: function (e) { var t = [], n = new THREE.Vector3(), r = new THREE.Quaternion(), i = new THREE.Vector3() if ( (e.transform && e.transform.decompose(n, r, i), (n = n.toArray()), (r = new THREE.Euler().setFromQuaternion(r).toArray()), (i = i.toArray()), void 0 !== e.T && Object.keys(e.T.curves).length > 0) ) { var o = this.generateVectorTrack(e.modelName, e.T.curves, n, 'position') void 0 !== o && t.push(o) } if (void 0 !== e.R && Object.keys(e.R.curves).length > 0) { var a = this.generateRotationTrack( e.modelName, e.R.curves, r, e.preRotations, e.postRotations, ) void 0 !== a && t.push(a) } if (void 0 !== e.S && Object.keys(e.S.curves).length > 0) { var s = this.generateVectorTrack(e.modelName, e.S.curves, i, 'scale') void 0 !== s && t.push(s) } if (void 0 !== e.DeformPercent) { var u = this.generateMorphTrack(e) void 0 !== u && t.push(u) } return t }, generateVectorTrack: function (e, t, n, r) { var i = this.getTimesForAllAxes(t), o = this.getKeyframeTrackValues(i, t, n) return new THREE.VectorKeyframeTrack(e + '.' + r, i, o) }, generateRotationTrack: function (e, t, n, r, i) { void 0 !== t.x && (this.interpolateRotations(t.x), (t.x.values = t.x.values.map(THREE.Math.degToRad))), void 0 !== t.y && (this.interpolateRotations(t.y), (t.y.values = t.y.values.map(THREE.Math.degToRad))), void 0 !== t.z && (this.interpolateRotations(t.z), (t.z.values = t.z.values.map(THREE.Math.degToRad))) var o = this.getTimesForAllAxes(t), a = this.getKeyframeTrackValues(o, t, n) void 0 !== r && ((r = r.map(THREE.Math.degToRad)).push('ZYX'), (r = new THREE.Euler().fromArray(r)), (r = new THREE.Quaternion().setFromEuler(r))), void 0 !== i && ((i = i.map(THREE.Math.degToRad)).push('ZYX'), (i = new THREE.Euler().fromArray(i)), (i = new THREE.Quaternion().setFromEuler(i).inverse())) for ( var s = new THREE.Quaternion(), u = new THREE.Euler(), l = [], c = 0; c < a.length; c += 3 ) u.set(a[c], a[c + 1], a[c + 2], 'ZYX'), s.setFromEuler(u), void 0 !== r && s.premultiply(r), void 0 !== i && s.multiply(i), s.toArray(l, (c / 3) * 4) return new THREE.QuaternionKeyframeTrack(e + '.quaternion', o, l) }, generateMorphTrack: function (e) { var t = e.DeformPercent.curves.morph, r = t.values.map(function (e) { return e / 100 }), i = n.getObjectByName(e.modelName).morphTargetDictionary[e.morphName] return new THREE.NumberKeyframeTrack( e.modelName + '.morphTargetInfluences[' + i + ']', t.times, r, ) }, getTimesForAllAxes: function (e) { var t = [] return ( void 0 !== e.x && (t = t.concat(e.x.times)), void 0 !== e.y && (t = t.concat(e.y.times)), void 0 !== e.z && (t = t.concat(e.z.times)), (t = t .sort(function (e, t) { return e - t }) .filter(function (e, t, n) { return n.indexOf(e) == t })) ) }, getKeyframeTrackValues: function (e, t, n) { var r = n, i = [], o = -1, a = -1, s = -1 return ( e.forEach(function (e) { if ( (t.x && (o = t.x.times.indexOf(e)), t.y && (a = t.y.times.indexOf(e)), t.z && (s = t.z.times.indexOf(e)), -1 !== o) ) { var n = t.x.values[o] i.push(n), (r[0] = n) } else i.push(r[0]) if (-1 !== a) { var u = t.y.values[a] i.push(u), (r[1] = u) } else i.push(r[1]) if (-1 !== s) { var l = t.z.values[s] i.push(l), (r[2] = l) } else i.push(r[2]) }), i ) }, interpolateRotations: function (e) { for (var t = 1; t < e.values.length; t++) { var n = e.values[t - 1], r = e.values[t] - n, i = Math.abs(r) if (i >= 180) { for ( var o = i / 180, a = r / o, s = n + a, u = e.times[t - 1], l = (e.times[t] - u) / o, c = u + l, d = [], f = []; c < e.times[t]; ) d.push(c), (c += l), f.push(s), (s += a) ;(e.times = _(e.times, t, d)), (e.values = _(e.values, t, f)) } } }, }), (s.prototype = { constructor: s, getPrevNode: function () { return this.nodeStack[this.currentIndent - 2] }, getCurrentNode: function () { return this.nodeStack[this.currentIndent - 1] }, getCurrentProp: function () { return this.currentProp }, pushStack: function (e) { this.nodeStack.push(e), (this.currentIndent += 1) }, popStack: function () { this.nodeStack.pop(), (this.currentIndent -= 1) }, setCurrentProp: function (e, t) { ;(this.currentProp = e), (this.currentPropName = t) }, parse: function (e) { ;(this.currentIndent = 0), console.log('FBXTree: ', c), (this.allNodes = new c()), (this.nodeStack = []), (this.currentProp = []), (this.currentPropName = '') var t = this, n = e.split(/[\r\n]+/) return ( n.forEach(function (e, r) { var i = e.match(/^[\s\t]*;/), o = e.match(/^[\s\t]*$/) if (!i && !o) { var a = e.match('^\\t{' + t.currentIndent + '}(\\w+):(.*){', ''), s = e.match('^\\t{' + t.currentIndent + '}(\\w+):[\\s\\t\\r\\n](.*)'), u = e.match('^\\t{' + (t.currentIndent - 1) + '}}') a ? t.parseNodeBegin(e, a) : s ? t.parseNodeProperty(e, s, n[++r]) : u ? t.popStack() : e.match(/^[^\s\t}]/) && t.parseNodePropertyContinued(e) } }), this.allNodes ) }, parseNodeBegin: function (e, t) { var n = t[1].trim().replace(/^"/, '').replace(/"$/, ''), r = t[2].split(',').map(function (e) { return e.trim().replace(/^"/, '').replace(/"$/, '') }), i = { name: n }, o = this.parseNodeAttr(r), a = this.getCurrentNode() 0 === this.currentIndent ? this.allNodes.add(n, i) : n in a ? ('PoseNode' === n ? a.PoseNode.push(i) : void 0 !== a[n].id && ((a[n] = {}), (a[n][a[n].id] = a[n])), '' !== o.id && (a[n][o.id] = i)) : 'number' === typeof o.id ? ((a[n] = {}), (a[n][o.id] = i)) : 'Properties70' !== n && (a[n] = 'PoseNode' === n ? [i] : i), 'number' === typeof o.id && (i.id = o.id), '' !== o.name && (i.attrName = o.name), '' !== o.type && (i.attrType = o.type), this.pushStack(i) }, parseNodeAttr: function (e) { var t = e[0] '' !== e[0] && ((t = parseInt(e[0])), isNaN(t) && (t = e[0])) var n = '', r = '' return ( e.length > 1 && ((n = e[1].replace(/^(\w+)::/, '')), (r = e[2])), { id: t, name: n, type: r } ) }, parseNodeProperty: function (e, t, n) { var r = t[1].replace(/^"/, '').replace(/"$/, '').trim(), i = t[2].replace(/^"/, '').replace(/"$/, '').trim() 'Content' === r && ',' === i && (i = n.replace(/"/g, '').replace(/,$/, '').trim()) var o = this.getCurrentNode() if ('Properties70' !== o.name) { if ('C' === r) { var a = i.split(',').slice(1), s = parseInt(a[0]), u = parseInt(a[1]), l = i.split(',').slice(3) ;(r = 'connections'), (function (e, t) { for (var n = 0, r = e.length, i = t.length; n < i; n++, r++) e[r] = t[n] })( (i = [s, u]), (l = l.map(function (e) { return e.trim().replace(/^"/, '') })), ), void 0 === o[r] && (o[r] = []) } 'Node' === r && (o.id = i), r in o && Array.isArray(o[r]) ? o[r].push(i) : 'a' !== r ? (o[r] = i) : (o.a = i), this.setCurrentProp(o, r), 'a' === r && ',' !== i.slice(-1) && (o.a = E(i)) } else this.parseNodeSpecialProperty(e, r, i) }, parseNodePropertyContinued: function (e) { var t = this.getCurrentNode() ;(t.a += e), ',' !== e.slice(-1) && (t.a = E(t.a)) }, parseNodeSpecialProperty: function (e, t, n) { var r = n.split('",').map(function (e) { return e.trim().replace(/^\"/, '').replace(/\s/, '_') }), i = r[0], o = r[1], a = r[2], s = r[3], u = r[4] switch (o) { case 'int': case 'enum': case 'bool': case 'ULongLong': case 'double': case 'Number': case 'FieldOfView': u = parseFloat(u) break case 'Color': case 'ColorRGB': case 'Vector3D': case 'Lcl_Translation': case 'Lcl_Rotation': case 'Lcl_Scaling': u = E(u) } ;(this.getPrevNode()[i] = { type: o, type2: a, flag: s, value: u }), this.setCurrentProp(this.getPrevNode(), i) }, }), (u.prototype = { constructor: u, parse: function (e) { var t = new l(e) t.skip(23) var n = t.getUint32() console.log('THREE.FBXLoader: FBX binary version: ' + n) for (var r = new c(); !this.endOfContent(t); ) { var i = this.parseNode(t, n) null !== i && r.add(i.name, i) } return r }, endOfContent: function (e) { return e.size() % 16 === 0 ? ((e.getOffset() + 160 + 16) & -16) >= e.size() : e.getOffset() + 160 + 16 >= e.size() }, parseNode: function (e, t) { var n = {}, r = t >= 7500 ? e.getUint64() : e.getUint32(), i = t >= 7500 ? e.getUint64() : e.getUint32(), o = (t >= 7500 ? e.getUint64() : e.getUint32(), e.getUint8()), a = e.getString(o) if (0 === r) return null for (var s = [], u = 0; u < i; u++) s.push(this.parseProperty(e)) var l = s.length > 0 ? s[0] : '', c = s.length > 1 ? s[1] : '', d = s.length > 2 ? s[2] : '' for (n.singleProperty = 1 === i && e.getOffset() === r; r > e.getOffset(); ) { var f = this.parseNode(e, t) null !== f && this.parseSubNode(a, n, f) } return ( (n.propertyList = s), 'number' === typeof l && (n.id = l), '' !== c && (n.attrName = c), '' !== d && (n.attrType = d), '' !== a && (n.name = a), n ) }, parseSubNode: function (e, t, n) { if (!0 === n.singleProperty) { var r = n.propertyList[0] Array.isArray(r) ? ((t[n.name] = n), (n.a = r)) : (t[n.name] = r) } else if ('Connections' === e && 'C' === n.name) { var i = [] n.propertyList.forEach(function (e, t) { 0 !== t && i.push(e) }), void 0 === t.connections && (t.connections = []), t.connections.push(i) } else if ('Properties70' === n.name) { Object.keys(n).forEach(function (e) { t[e] = n[e] }) } else if ('Properties70' === e && 'P' === n.name) { var o, a = n.propertyList[0], s = n.propertyList[1], u = n.propertyList[2], l = n.propertyList[3] 0 === a.indexOf('Lcl ') && (a = a.replace('Lcl ', 'Lcl_')), 0 === s.indexOf('Lcl ') && (s = s.replace('Lcl ', 'Lcl_')), (o = 'Color' === s || 'ColorRGB' === s || 'Vector' === s || 'Vector3D' === s || 0 === s.indexOf('Lcl_') ? [n.propertyList[4], n.propertyList[5], n.propertyList[6]] : n.propertyList[4]), (t[a] = { type: s, type2: u, flag: l, value: o }) } else void 0 === t[n.name] ? 'number' === typeof n.id ? ((t[n.name] = {}), (t[n.name][n.id] = n)) : (t[n.name] = n) : 'PoseNode' === n.name ? (Array.isArray(t[n.name]) || (t[n.name] = [t[n.name]]), t[n.name].push(n)) : void 0 === t[n.name][n.id] && (t[n.name][n.id] = n) }, parseProperty: function (e) { var t = e.getString(1) switch (t) { case 'C': return e.getBoolean() case 'D': return e.getFloat64() case 'F': return e.getFloat32() case 'I': return e.getInt32() case 'L': return e.getInt64() case 'R': var n = e.getUint32() return e.getArrayBuffer(n) case 'S': n = e.getUint32() return e.getString(n) case 'Y': return e.getInt16() case 'b': case 'c': case 'd': case 'f': case 'i': case 'l': var r = e.getUint32(), i = e.getUint32(), o = e.getUint32() if (0 === i) switch (t) { case 'b': case 'c': return e.getBooleanArray(r) case 'd': return e.getFloat64Array(r) case 'f': return e.getFloat32Array(r) case 'i': return e.getInt32Array(r) case 'l': return e.getInt64Array(r) } 'undefined' === typeof Zlib && console.error( 'THREE.FBXLoader: External library Inflate.min.js required, obtain or import from https://github.com/imaya/zlib.js', ) var a = new l( new Zlib.Inflate(new Uint8Array(e.getArrayBuffer(o))).decompress().buffer, ) switch (t) { case 'b': case 'c': return a.getBooleanArray(r) case 'd': return a.getFloat64Array(r) case 'f': return a.getFloat32Array(r) case 'i': return a.getInt32Array(r) case 'l': return a.getInt64Array(r) } default: throw new Error('THREE.FBXLoader: Unknown property type ' + t) } }, }), (l.prototype = { constructor: l, getOffset: function () { return this.offset }, size: function () { return this.dv.buffer.byteLength }, skip: function (e) { this.offset += e }, getBoolean: function () { return 1 === (1 & this.getUint8()) }, getBooleanArray: function (e) { for (var t = [], n = 0; n < e; n++) t.push(this.getBoolean()) return t }, getUint8: function () { var e = this.dv.getUint8(this.offset) return (this.offset += 1), e }, getInt16: function () { var e = this.dv.getInt16(this.offset, this.littleEndian) return (this.offset += 2), e }, getInt32: function () { var e = this.dv.getInt32(this.offset, this.littleEndian) return (this.offset += 4), e }, getInt32Array: function (e) { for (var t = [], n = 0; n < e; n++) t.push(this.getInt32()) return t }, getUint32: function () { var e = this.dv.getUint32(this.offset, this.littleEndian) return (this.offset += 4), e }, getInt64: function () { var e, t return ( this.littleEndian ? ((e = this.getUint32()), (t = this.getUint32())) : ((t = this.getUint32()), (e = this.getUint32())), 2147483648 & t ? ((t = 4294967295 & ~t), 4294967295 === (e = 4294967295 & ~e) && (t = (t + 1) & 4294967295), -(4294967296 * t + (e = (e + 1) & 4294967295))) : 4294967296 * t + e ) }, getInt64Array: function (e) { for (var t = [], n = 0; n < e; n++) t.push(this.getInt64()) return t }, getUint64: function () { var e, t return ( this.littleEndian ? ((e = this.getUint32()), (t = this.getUint32())) : ((t = this.getUint32()), (e = this.getUint32())), 4294967296 * t + e ) }, getFloat32: function () { var e = this.dv.getFloat32(this.offset, this.littleEndian) return (this.offset += 4), e }, getFloat32Array: function (e) { for (var t = [], n = 0; n < e; n++) t.push(this.getFloat32()) return t }, getFloat64: function () { var e = this.dv.getFloat64(this.offset, this.littleEndian) return (this.offset += 8), e }, getFloat64Array: function (e) { for (var t = [], n = 0; n < e; n++) t.push(this.getFloat64()) return t }, getArrayBuffer: function (e) { var t = this.dv.buffer.slice(this.offset, this.offset + e) return (this.offset += e), t }, getString: function (e) { for (var t = [], n = 0; n < e; n++) t[n] = this.getUint8() var r = t.indexOf(0) return r >= 0 && (t = t.slice(0, r)), THREE.LoaderUtils.decodeText(new Uint8Array(t)) }, }), (c.prototype = { constructor: c, add: function (e, t) { this[e] = t }, }) var h = [] function p(e, t, n, r) { var i switch (r.mappingType) { case 'ByPolygonVertex': i = e break case 'ByPolygon': i = t break case 'ByVertice': i = n break case 'AllSame': i = r.indices[0] break default: console.warn('THREE.FBXLoader: unknown attribute mapping type ' + r.mappingType) } 'IndexToDirect' === r.referenceType && (i = r.indices[i]) var o = i * r.dataSize, a = o + r.dataSize return (function (e, t, n, r) { for (var i = n, o = 0; i < r; i++, o++) e[o] = t[i] return e })(h, r.buffer, o, a) } var v = new THREE.Matrix4(), m = new THREE.Euler(), g = new THREE.Vector3(), y = new THREE.Vector3(), b = new THREE.Matrix4() function w(e) { var t = new THREE.Matrix4() y.set(0, 0, 0), b.identity() var n, r = e.eulerOrder ? x(e.eulerOrder) : x(0) ;(e.translation && y.fromArray(e.translation), e.rotationOffset && y.add(g.fromArray(e.rotationOffset)), e.rotation) && ((n = e.rotation.map(THREE.Math.degToRad)).push(r), b.makeRotationFromEuler(m.fromArray(n))) e.preRotation && ((n = e.preRotation.map(THREE.Math.degToRad)).push(r), v.makeRotationFromEuler(m.fromArray(n)), b.premultiply(v)) e.postRotation && ((n = e.postRotation.map(THREE.Math.degToRad)).push(r), v.makeRotationFromEuler(m.fromArray(n)), v.getInverse(v), b.multiply(v)) return e.scale && t.scale(g.fromArray(e.scale)), t.setPosition(y), t.multiply(b), t } function x(e) { var t = ['ZYX', 'YZX', 'XZY', 'ZXY', 'YXZ', 'XYZ'] return 6 === e ? (console.warn( 'THREE.FBXLoader: unsupported Euler Order: Spherical XYZ. Animations and rotations may be incorrect.', ), t[0]) : t[e] } function E(e) { return e.split(',').map(function (e) { return parseFloat(e) }) } function k(e, t, n) { return ( void 0 === t && (t = 0), void 0 === n && (n = e.byteLength), THREE.LoaderUtils.decodeText(new Uint8Array(e, t, n)) ) } function _(e, t, n) { return e.slice(0, t).concat(n).concat(e.slice(t)) } return r })() }, 6453: function (e) { e.exports = Object.assign(function () {}, { FACE_1: 0, FACE_2: 1, FACE_3: 2, FACE_4: 3, L_SHOULDER_1: 4, R_SHOULDER_1: 5, L_SHOULDER_2: 6, R_SHOULDER_2: 7, SELECT: 8, START: 9, DPAD_UP: 12, DPAD_DOWN: 13, DPAD_LEFT: 14, DPAD_RIGHT: 15, VENDOR: 16, }) }, 4379: function (e) { e.exports = function (e, t, n) { ;(this.type = e), (this.index = t), (this.pressed = n.pressed), (this.value = n.value) } }, 2667: function (e) { e.exports = { size: 5, cellSize: 10, extrudeSettings: { amount: 1, bevelEnabled: !0, bevelSegments: 1, steps: 1, bevelSize: 0.5, bevelThickness: 0.5, }, autogenerated: !0, cells: [ { q: -1, r: 0, s: 1, h: 1, walkable: !0, userData: {} }, { q: 0, r: -1, s: 1, h: 1, walkable: !0, userData: {} }, { q: 0, r: 0, s: 0, h: 1, walkable: !0, userData: {} }, { q: 1, r: -1, s: 0, h: 1, walkable: !0, userData: {} }, { q: -1, r: 1, s: 0, h: 0, walkable: !0, userData: {} }, { q: 0, r: 1, s: -1, h: 0, walkable: !0, userData: {} }, { q: 1, r: 0, s: -1, h: 0, walkable: !0, userData: {} }, ], } }, 4657: function (e) { function t(e) { const t = document.getElementById(e), n = t.parentNode try { n && n.removeChild(t) } catch (r) {} } function n(e, n, r) { return new r(function (r, i) { const o = n.timeout || 5e3, a = 'script_' + Date.now() + '_' + Math.ceil(1e5 * Math.random()), s = (function (e, t) { var n = document.createElement('script') return (n.type = 'text/javascript'), (n.async = !0), (n.id = t), (n.src = e), n })(e, a), u = setTimeout(function () { i(new Error('Script request to ' + e + ' timed out')), t(a) }, o), l = function (e) { clearTimeout(e) } s.addEventListener('load', function (e) { r({ ok: !0 }), l(u), t(a) }), s.addEventListener('error', function (n) { i(new Error('Script request to ' + e + ' failed ' + n)), l(u), t(a) }), (function (e) { const t = document.getElementsByTagName('script')[0] t.parentNode.insertBefore(e, t) })(s) }) } e.exports = function (e) { return ( (e = e || {}), function (t, r) { return n(t, (r = r || {}), e.Promise || Promise) } ) } }, 3471: function (e) { var n = (e.exports = { VERSION: '0.1.1', PI: Math.PI, TAU: 2 * Math.PI, DEG_TO_RAD: 0.0174532925, RAD_TO_DEG: 57.2957795, SQRT3: Math.sqrt(3), TILE: 'tile', ENT: 'entity', STR: 'structure', HEX: 'hex', SQR: 'square', ABS: 'abstract', }) ;(n.Board = function (e, t) { if (!e) throw new Error('You must pass in a grid system for the board to use.') ;(this.tiles = []), (this.tileGroup = null), (this.group = new THREE.Object3D()), (this.grid = null), (this.overlay = null), (this.finder = new n.AStarFinder(t)), n.Loader.init(), this.setGrid(e) }), (n.Board.prototype = { setEntityOnTile: function (e, t) { var n = this.grid.cellToPixel(t.cell) e.position.copy(n), (e.position.y += e.heightOffset || 0), e.tile && (e.tile.entity = null), (e.tile = t), (t.entity = e) }, addTile: function (e) { ;-1 === this.tiles.indexOf(e) && (this.tiles.push(e), this.snapTileToGrid(e), (e.position.y = 0), this.tileGroup.add(e.mesh), this.grid.add(e.cell), (e.cell.tile = e)) }, removeTile: function (e) { if (e) { var t = this.tiles.indexOf(e) this.grid.remove(e.cell), -1 !== t && this.tiles.splice(t, 1), e.dispose() } }, removeAllTiles: function () { if (this.tileGroup) for (var e = this.tileGroup.children, t = 0; t < e.length; t++) this.tileGroup.remove(e[t]) }, getTileAtCell: function (e) { var t = this.grid.cellToHash(e) return ( e.tile || ('undefined' != typeof this.grid.cells[t] ? this.grid.cells[t].tile : null) ) }, snapToGrid: function (e) { var t = this.grid.pixelToCell(e) e.copy(this.grid.cellToPixel(t)) }, snapTileToGrid: function (e) { if (e.cell) e.position.copy(this.grid.cellToPixel(e.cell)) else { var t = this.grid.pixelToCell(e.position) e.position.copy(this.grid.cellToPixel(t)) } return e }, getRandomTile: function () { var e = n.Tools.randomInt(0, this.tiles.length - 1) return this.tiles[e] }, findPath: function (e, t, n) { return this.finder.findPath(e.cell, t.cell, n, this.grid) }, setGrid: function (e) { this.group.remove(this.tileGroup), this.grid && e !== this.grid && (this.removeAllTiles(), this.tiles.forEach(function (e) { this.grid.remove(e.cell), e.dispose() }), this.grid.dispose()), (this.grid = e), (this.tiles = []), (this.tileGroup = new THREE.Object3D()), this.group.add(this.tileGroup) }, generateOverlay: function (e) { var t = new THREE.LineBasicMaterial({ color: 0, opacity: 0.3 }) this.overlay && this.group.remove(this.overlay), (this.overlay = new THREE.Object3D()), this.grid.generateOverlay(e, this.overlay, t), this.group.add(this.overlay) }, generateTilemap: function (e) { this.reset() var t = this.grid.generateTiles(e) ;(this.tiles = t), (this.tileGroup = new THREE.Object3D()) for (var n = 0; n < t.length; n++) this.tileGroup.add(t[n].mesh) this.group.add(this.tileGroup) }, reset: function () { this.removeAllTiles(), this.tileGroup && this.group.remove(this.tileGroup) }, }), (n.Board.prototype.constructor = n.Board), (n.Cell = function (e, t, r, i) { ;(this.q = e || 0), (this.r = t || 0), (this.s = r || 0), (this.h = i || 1), (this.tile = null), (this.userData = {}), (this.walkable = !0), (this._calcCost = 0), (this._priority = 0), (this._visited = !1), (this._parent = null), (this.uniqueID = n.LinkedList.generateID()) }), (n.Cell.prototype = { set: function (e, t, n) { return (this.q = e), (this.r = t), (this.s = n), this }, copy: function (e) { return ( (this.q = e.q), (this.r = e.r), (this.s = e.s), (this.h = e.h), (this.tile = e.tile || null), (this.userData = e.userData || {}), (this.walkable = e.walkable), this ) }, add: function (e) { return (this.q += e.q), (this.r += e.r), (this.s += e.s), this }, equals: function (e) { return this.q === e.q && this.r === e.r && this.s === e.s }, }), (n.Cell.prototype.constructor = n.Cell), (n.HexGrid = function (e) { ;(e = e || {}), (this.type = n.HEX), (this.size = 5), (this.cellSize = 'undefined' == typeof e.cellSize ? 10 : e.cellSize), (this.cells = {}), (this.numCells = 0), (this.extrudeSettings = null), (this.autogenerated = !1) var t, r = [] for (t = 0; 6 > t; t++) r.push(this._createVertex(t)) for ( this.cellShape = new THREE.Shape(), this.cellShape.moveTo(r[0].x, r[0].y), t = 1; 6 > t; t++ ) this.cellShape.lineTo(r[t].x, r[t].y) this.cellShape.lineTo(r[0].x, r[0].y), (this.cellShape.autoClose = !0), (this.cellGeo = new THREE.Geometry()), (this.cellGeo.vertices = r), (this.cellGeo.verticesNeedUpdate = !0), (this.cellShapeGeo = new THREE.ShapeGeometry(this.cellShape)), (this._cellWidth = 2 * this.cellSize), (this._cellLength = 0.5 * n.SQRT3 * this._cellWidth), (this._hashDelimeter = '.'), (this._directions = [ new n.Cell(1, -1, 0), new n.Cell(1, 0, -1), new n.Cell(0, 1, -1), new n.Cell(-1, 1, 0), new n.Cell(-1, 0, 1), new n.Cell(0, -1, 1), ]), (this._diagonals = [ new n.Cell(2, -1, -1), new n.Cell(1, 1, -2), new n.Cell(-1, 2, -1), new n.Cell(-2, 1, 1), new n.Cell(-1, -1, 2), new n.Cell(1, -2, 1), ]), (this._list = []), (this._vec3 = new THREE.Vector3()), (this._cel = new n.Cell()), (this._conversionVec = new THREE.Vector3()), (this._geoCache = []), (this._matCache = []) }), (n.HexGrid.TWO_THIRDS = 2 / 3), (n.HexGrid.prototype = { cellToPixel: function (e) { return ( (this._vec3.x = e.q * this._cellWidth * 0.75), (this._vec3.y = e.h), (this._vec3.z = -(e.s - e.r) * this._cellLength * 0.5), this._vec3 ) }, pixelToCell: function (e) { var t = e.x * (n.HexGrid.TWO_THIRDS / this.cellSize), r = (-e.x / 3 + (n.SQRT3 / 3) * e.z) / this.cellSize return this._cel.set(t, r, -t - r), this._cubeRound(this._cel) }, getCellAt: function (e) { var t = e.x * (n.HexGrid.TWO_THIRDS / this.cellSize), r = (-e.x / 3 + (n.SQRT3 / 3) * e.z) / this.cellSize return ( this._cel.set(t, r, -t - r), this._cubeRound(this._cel), this.cells[this.cellToHash(this._cel)] ) }, getNeighbors: function (e, t, n) { var r, i, o = this._directions.length for (this._list.length = 0, r = 0; o > r; r++) this._cel.copy(e), this._cel.add(this._directions[r]), !(i = this.cells[this.cellToHash(this._cel)]) || (n && !n(e, i)) || this._list.push(i) if (t) for (r = 0; o > r; r++) this._cel.copy(e), this._cel.add(this._diagonals[r]), !(i = this.cells[this.cellToHash(this._cel)]) || (n && !n(e, i)) || this._list.push(i) return this._list }, getRandomCell: function () { var e, t = 0, r = n.Tools.randomInt(0, this.numCells) for (e in this.cells) { if (t === r) return this.cells[e] t++ } return this.cells[e] }, cellToHash: function (e) { return e.q + this._hashDelimeter + e.r + this._hashDelimeter + e.s }, distance: function (e, t) { return ( Math.max(Math.abs(e.q - t.q), Math.abs(e.r - t.r), Math.abs(e.s - t.s)) + (t.h - e.h) ) }, clearPath: function () { var e, t for (e in this.cells) ((t = this.cells[e])._calcCost = 0), (t._priority = 0), (t._parent = null), (t._visited = !1) }, traverse: function (e) { var t for (t in this.cells) e(this.cells[t]) }, generateTile: function (e, t, r) { var i = Math.abs(e.h) 1 > i && (i = 1) var o = this._geoCache[i] o || ((this.extrudeSettings.amount = i), (o = new THREE.ExtrudeGeometry(this.cellShape, this.extrudeSettings)), (this._geoCache[i] = o)) var a = new n.Tile({ size: this.cellSize, scale: t, cell: e, geometry: o, material: r }) return (e.tile = a), a }, generateTiles: function (e) { e = e || {} var t, r, i, o = [], a = { tileScale: 0.95, cellSize: this.cellSize, material: null, extrudeSettings: { amount: 1, bevelEnabled: !0, bevelSegments: 1, steps: 1, bevelSize: 0.5, bevelThickness: 0.5, }, } for (t in ((a = n.Tools.merge(a, e)), (this.cellSize = a.cellSize), (this._cellWidth = 2 * this.cellSize), (this._cellLength = 0.5 * n.SQRT3 * this._cellWidth), (this.autogenerated = !0), (this.extrudeSettings = a.extrudeSettings), this.cells)) (i = this.cells[t]), (r = this.generateTile(i, a.tileScale, a.material)).position.copy( this.cellToPixel(i), ), (r.position.y = 0), o.push(r) return o }, generateTilePoly: function (e) { e || (e = new THREE.MeshBasicMaterial({ color: 2405631 })) var t = new THREE.Mesh(this.cellShapeGeo, e) return this._vec3.set(1, 0, 0), t.rotateOnAxis(this._vec3, n.PI / 2), t }, generate: function (e) { var t, r, i, o for ( e = e || {}, this.size = 'undefined' == typeof e.size ? this.size : e.size, t = -this.size; t < this.size + 1; t++ ) for (r = -this.size; r < this.size + 1; r++) (i = -t - r), Math.abs(t) <= this.size && Math.abs(r) <= this.size && Math.abs(i) <= this.size && ((o = new n.Cell(t, r, i)), this.add(o)) }, generateOverlay: function (e, t, r) { var i, o, a, s = this.cellShape.createPointsGeometry() for (i = -e; e + 1 > i; i++) for (o = -e; e + 1 > o; o++) if (((a = -i - o), Math.abs(i) <= e && Math.abs(o) <= e && Math.abs(a) <= e)) { this._cel.set(i, o, a) var u = new THREE.Line(s, r) u.position.copy(this.cellToPixel(this._cel)), (u.rotation.x = 90 * n.DEG_TO_RAD), t.add(u) } }, add: function (e) { var t = this.cellToHash(e) if (!this.cells[t]) return (this.cells[t] = e), this.numCells++, e }, remove: function (e) { var t = this.cellToHash(e) this.cells[t] && (delete this.cells[t], this.numCells--) }, dispose: function () { ;(this.cells = null), (this.numCells = 0), (this.cellShape = null), this.cellGeo.dispose(), (this.cellGeo = null), this.cellShapeGeo.dispose(), (this.cellShapeGeo = null), (this._list = null), (this._vec3 = null), (this._conversionVec = null), (this._geoCache = null), (this._matCache = null) }, load: function (e, t, r) { var i = this n.Tools.getJSON({ url: e, callback: function (e) { i.fromJSON(e), t.call(r || null, e) }, cache: !1, scope: i, }) }, fromJSON: function (e) { var t, r, i = e.cells for ( this.cells = {}, this.numCells = 0, this.size = e.size, this.cellSize = e.cellSize, this._cellWidth = 2 * this.cellSize, this._cellLength = 0.5 * n.SQRT3 * this._cellWidth, this.extrudeSettings = e.extrudeSettings, this.autogenerated = e.autogenerated, t = 0; t < i.length; t++ ) (r = new n.Cell()).copy(i[t]), this.add(r) }, toJSON: function () { var e, t, n = { size: this.size, cellSize: this.cellSize, extrudeSettings: this.extrudeSettings, autogenerated: this.autogenerated, }, r = [] for (t in this.cells) (e = this.cells[t]), r.push({ q: e.q, r: e.r, s: e.s, h: e.h, walkable: e.walkable, userData: e.userData, }) return (n.cells = r), n }, _createVertex: function (e) { var t = (n.TAU / 6) * e return new THREE.Vector3(this.cellSize * Math.cos(t), this.cellSize * Math.sin(t), 0) }, _cubeRound: function (e) { var t = Math.round(e.q), n = Math.round(e.r), r = Math.round(e.s), i = Math.abs(t - e.q), o = Math.abs(n - e.r), a = Math.abs(r - e.s) return ( i > o && i > a ? (t = -n - r) : o > a ? (n = -t - r) : (r = -t - n), this._cel.set(t, n, r) ) }, }), (n.HexGrid.prototype.constructor = n.HexGrid), (n.SqrGrid = function (e) { ;(e = e || {}), (this.type = n.SQR), (this.size = 5), (this.cellSize = 'undefined' == typeof e.cellSize ? 10 : e.cellSize), (this.cells = {}), (this.numCells = 0), (this.extrudeSettings = null), (this.autogenerated = !1) var t = [] t.push(new THREE.Vector3()), t.push(new THREE.Vector3(-this.cellSize, this.cellSize)), t.push(new THREE.Vector3(this.cellSize, this.cellSize)), t.push(new THREE.Vector3(this.cellSize, -this.cellSize)), (this.cellShape = new THREE.Shape()), this.cellShape.moveTo(-this.cellSize, -this.cellSize), this.cellShape.lineTo(-this.cellSize, this.cellSize), this.cellShape.lineTo(this.cellSize, this.cellSize), this.cellShape.lineTo(this.cellSize, -this.cellSize), this.cellShape.lineTo(-this.cellSize, -this.cellSize), (this.cellGeo = new THREE.Geometry()), (this.cellGeo.vertices = t), (this.cellGeo.verticesNeedUpdate = !0), (this.cellShapeGeo = new THREE.ShapeGeometry(this.cellShape)), (this._fullCellSize = 2 * this.cellSize), (this._hashDelimeter = '.'), (this._directions = [ new n.Cell(1, 0, 0), new n.Cell(0, -1, 0), new n.Cell(-1, 0, 0), new n.Cell(0, 1, 0), ]), (this._diagonals = [ new n.Cell(-1, -1, 0), new n.Cell(-1, 1, 0), new n.Cell(1, 1, 0), new n.Cell(1, -1, 0), ]), (this._list = []), (this._vec3 = new THREE.Vector3()), (this._cel = new n.Cell()), (this._conversionVec = new THREE.Vector3()), (this._geoCache = []), (this._matCache = []) }), (n.SqrGrid.prototype = { cellToPixel: function (e) { return ( (this._vec3.x = e.q * this._fullCellSize), (this._vec3.y = e.h), (this._vec3.z = e.r * this._fullCellSize), this._vec3 ) }, pixelToCell: function (e) { var t = Math.round(e.x / this._fullCellSize), n = Math.round(e.z / this._fullCellSize) return this._cel.set(t, n, 0) }, getCellAt: function (e) { var t = Math.round(e.x / this._fullCellSize), n = Math.round(e.z / this._fullCellSize) return this._cel.set(t, n), this.cells[this.cellToHash(this._cel)] }, getNeighbors: function (e, t, n) { var r, i, o = this._directions.length for (this._list.length = 0, r = 0; o > r; r++) this._cel.copy(e), this._cel.add(this._directions[r]), !(i = this.cells[this.cellToHash(this._cel)]) || (n && !n(e, i)) || this._list.push(i) if (t) for (r = 0; o > r; r++) this._cel.copy(e), this._cel.add(this._diagonals[r]), !(i = this.cells[this.cellToHash(this._cel)]) || (n && !n(e, i)) || this._list.push(i) return this._list }, getRandomCell: function () { var e, t = 0, r = n.Tools.randomInt(0, this.numCells) for (e in this.cells) { if (t === r) return this.cells[e] t++ } return this.cells[e] }, cellToHash: function (e) { return e.q + this._hashDelimeter + e.r }, distance: function (e, t) { return Math.max(Math.abs(e.q - t.q), Math.abs(e.r - t.r)) + (t.h - e.h) }, clearPath: function () { var e, t for (e in this.cells) ((t = this.cells[e])._calcCost = 0), (t._priority = 0), (t._parent = null), (t._visited = !1) }, traverse: function (e) { var t for (t in this.cells) e(this.cells[t]) }, generateTile: function (e, t, r) { var i = Math.abs(e.h) 1 > i && (i = 1) var o = this._geoCache[i] o || ((this.extrudeSettings.amount = i), (o = new THREE.ExtrudeGeometry(this.cellShape, this.extrudeSettings)), (this._geoCache[i] = o)) var a = new n.Tile({ size: this.cellSize, scale: t, cell: e, geometry: o, material: r }) return (e.tile = a), a }, generateTiles: function (e) { e = e || {} var t, r, i, o = [], a = { tileScale: 0.95, cellSize: this.cellSize, material: null, extrudeSettings: { amount: 1, bevelEnabled: !0, bevelSegments: 1, steps: 1, bevelSize: 0.5, bevelThickness: 0.5, }, } for (t in ((a = n.Tools.merge(a, e)), (this.cellSize = a.cellSize), (this._fullCellSize = 2 * this.cellSize), (this.autogenerated = !0), (this.extrudeSettings = a.extrudeSettings), this.cells)) (i = this.cells[t]), (r = this.generateTile(i, a.tileScale, a.material)).position.copy( this.cellToPixel(i), ), (r.position.y = 0), o.push(r) return o }, generateTilePoly: function (e) { e || (e = new THREE.MeshBasicMaterial({ color: 2405631 })) var t = new THREE.Mesh(this.cellShapeGeo, e) return this._vec3.set(1, 0, 0), t.rotateOnAxis(this._vec3, n.PI / 2), t }, generate: function (e) { ;(e = e || {}), (this.size = 'undefined' == typeof e.size ? this.size : e.size) var t, r, i, o = Math.ceil(this.size / 2) for (t = -o; o > t; t++) for (r = -o; o > r; r++) (i = new n.Cell(t, r + 1)), this.add(i) }, generateOverlay: function (e, t, r) { var i, o, a = Math.ceil(e / 2) for (i = -a; a > i; i++) for (o = -a; a > o; o++) { this._cel.set(i, o) var s = new THREE.Line(this.cellGeo, r) s.position.copy(this.cellToPixel(this._cel)), (s.rotation.x = 90 * n.DEG_TO_RAD), t.add(s) } }, add: function (e) { var t = this.cellToHash(e) if (!this.cells[t]) return (this.cells[t] = e), this.numCells++, e }, remove: function (e) { var t = this.cellToHash(e) this.cells[t] && (delete this.cells[t], this.numCells--) }, dispose: function () { ;(this.cells = null), (this.numCells = 0), (this.cellShape = null), this.cellGeo.dispose(), (this.cellGeo = null), this.cellShapeGeo.dispose(), (this.cellShapeGeo = null), (this._list = null), (this._vec3 = null), (this._conversionVec = null), (this._geoCache = null), (this._matCache = null) }, load: function (e, t, r) { n.Tools.getJSON({ url: e, callback: function (e) { this.fromJSON(e), t.call(r || null, e) }, cache: !1, scope: this, }) }, fromJSON: function (e) { var t, r, i = e.cells for ( this.cells = {}, this.numCells = 0, this.size = e.size, this.cellSize = e.cellSize, this._fullCellSize = 2 * this.cellSize, this.extrudeSettings = e.extrudeSettings, this.autogenerated = e.autogenerated, t = 0; t < i.length; t++ ) (r = new n.Cell()).copy(i[t]), this.add(r) }, toJSON: function () { var e, t, n = { size: this.size, cellSize: this.cellSize, extrudeSettings: this.extrudeSettings, autogenerated: this.autogenerated, }, r = [] for (t in this.cells) (e = this.cells[t]), r.push({ q: e.q, r: e.r, s: e.s, h: e.h, walkable: e.walkable, userData: e.userData, }) return (n.cells = r), n }, }), (n.SqrGrid.prototype.constructor = n.SqrGrid), (n.Tile = function (e) { e = e || {} var t = { cell: null, geometry: null, material: null } if (!(t = n.Tools.merge(t, e)).cell || !t.geometry) throw new Error('Missing vg.Tile configuration') ;(this.cell = t.cell), this.cell.tile && this.cell.tile !== this && this.cell.tile.dispose(), (this.cell.tile = this), (this.uniqueID = n.Tools.generateID()), (this.geometry = t.geometry), (this.material = t.material), this.material || (this.material = new THREE.MeshPhongMaterial({ color: n.Tools.randomizeRGB('30, 30, 30', 13), })), (this.objectType = n.TILE), (this.entity = null), (this.userData = {}), (this.selected = !1), (this.highlight = '0x0084cc'), (this.mesh = new THREE.Mesh(this.geometry, this.material)), (this.mesh.userData.structure = this), (this.position = this.mesh.position), (this.rotation = this.mesh.rotation), (this.rotation.x = -90 * n.DEG_TO_RAD), this.mesh.scale.set(t.scale, t.scale, 1), this.material.emissive ? (this._emissive = this.material.emissive.getHex()) : (this._emissive = null) }), (n.Tile.prototype = { select: function () { return ( this.material.emissive && this.material.emissive.setHex(this.highlight), (this.selected = !0), this ) }, deselect: function () { return ( null !== this._emissive && this.material.emissive && this.material.emissive.setHex(this._emissive), (this.selected = !1), this ) }, toggle: function () { return this.selected ? this.deselect() : this.select(), this }, dispose: function () { this.cell && this.cell.tile && (this.cell.tile = null), (this.cell = null), (this.position = null), (this.rotation = null), this.mesh.parent && this.mesh.parent.remove(this.mesh), (this.mesh.userData.structure = null), (this.mesh = null), (this.material = null), (this.userData = null), (this.entity = null), (this.geometry = null), (this._emissive = null) }, }), (n.Tile.prototype.constructor = n.Tile), (function () { var e = function () { ;(this.obj = null), (this.next = null), (this.prev = null), (this.free = !0) }, t = function () { ;(this.first = null), (this.last = null), (this.length = 0), (this.objToNodeMap = {}), (this.uniqueID = Date.now() + '' + Math.floor(1e3 * Math.random())), (this.sortArray = []) } ;(t.generateID = function () { return Math.random().toString(36).slice(2) + Date.now() }), ((t.prototype = { getNode: function (e) { return this.objToNodeMap[e.uniqueID] }, addNode: function (n) { var r = new e() if (!n.uniqueID) try { n.uniqueID = t.generateID() } catch (i) { return ( console.error( '[LinkedList.addNode] obj passed is immutable: cannot attach necessary identifier', ), null ) } return (r.obj = n), (r.free = !1), (this.objToNodeMap[n.uniqueID] = r), r }, swapObjects: function (e, t) { ;(this.objToNodeMap[e.obj.uniqueID] = null), (this.objToNodeMap[t.uniqueID] = e), (e.obj = t) }, add: function (e) { var t = this.objToNodeMap[e.uniqueID] if (t) { if (!1 === t.free) return ;(t.obj = e), (t.free = !1), (t.next = null), (t.prev = null) } else t = this.addNode(e) if (this.first) { if (!this.last) throw new Error( "[LinkedList.add] No last in the list -- that shouldn't happen here", ) ;(this.last.next = t), (t.prev = this.last), (this.last = t), (t.next = null) } else (this.first = t), (this.last = t), (t.next = null), (t.prev = null) this.length++, this.showDebug && this.dump('after add') }, has: function (e) { return !!this.objToNodeMap[e.uniqueID] }, moveUp: function (e) { this.dump('before move up') var t = this.getNode(e) if (!t) throw "Oops, trying to move an object that isn't in the list" if (t.prev) { var n = t.prev, r = n.prev t == this.last && (this.last = n) var i = t.next r && (r.next = t), (t.next = n), (t.prev = n.prev), (n.next = i), (n.prev = t), this.first == n && (this.first = t) } }, moveDown: function (e) { var t = this.getNode(e) if (!t) throw "Oops, trying to move an object that isn't in the list" if (t.next) { var n = t.next this.moveUp(n.obj), this.last == n && (this.last = t) } }, sort: function (e) { var t, n, r = this.sortArray, i = this.first for (r.length = 0; i; ) r.push(i.obj), (i = i.next) for (this.clear(), r.sort(e), n = r.length, t = 0; n > t; t++) this.add(r[t]) }, remove: function (e) { var t = this.getNode(e) return ( !(!t || t.free) && (t.prev && (t.prev.next = t.next), t.next && (t.next.prev = t.prev), t.prev || (this.first = t.next), t.next || (this.last = t.prev), (t.free = !0), (t.prev = null), (t.next = null), this.length--, !0) ) }, shift: function () { var e = this.first return 0 === this.length ? null : (e.prev && (e.prev.next = e.next), e.next && (e.next.prev = e.prev), (this.first = e.next), e.next || (this.last = null), (e.free = !0), (e.prev = null), (e.next = null), this.length--, e.obj) }, pop: function () { var e = this.last return 0 === this.length ? null : (e.prev && (e.prev.next = e.next), e.next && (e.next.prev = e.prev), (this.last = e.prev), e.prev || (this.first = null), (e.free = !0), (e.prev = null), (e.next = null), this.length--, e.obj) }, concat: function (e) { for (var t = e.first; t; ) this.add(t.obj), (t = t.next) }, clear: function () { for (var e = this.first; e; ) (e.free = !0), (e = e.next) ;(this.first = null), (this.length = 0) }, dispose: function () { for (var e = this.first; e; ) (e.obj = null), (e = e.next) ;(this.first = null), (this.objToNodeMap = null) }, dump: function (e) { console.log('====================' + e + '=====================') for (var t = this.first; t; ) console.log( '{' + t.obj.toString() + '} previous=' + (t.prev ? t.prev.obj : 'NULL'), ), (t = t.next()) console.log('==================================='), console.log( 'Last: {' + (this.last ? this.last.obj : 'NULL') + '} First: {' + (this.first ? this.first.obj : 'NULL') + '}', ) }, }).constructor = t), (n.LinkedList = t) })(), (function () { var e = function (e, t, n, r, i) { ;(this._listener = t), (this.isOnce = n), (this.context = r), (this.signal = e), (this._priority = i || 0) } ;(e.prototype = { active: !0, params: null, execute: function (e) { var t, n return ( this.active && this._listener && ((n = this.params ? this.params.concat(e) : e), (t = this._listener.apply(this.context, n)), this.isOnce && this.detach()), t ) }, detach: function () { return this.isBound() ? this.signal.remove(this._listener, this.context) : null }, isBound: function () { return !!this.signal && !!this._listener }, _destroy: function () { delete this.signal, delete this._listener, delete this.context }, toString: function () { return ( '[SignalBinding isOnce:' + this.isOnce + ', isBound:' + this.isBound() + ', active:' + this.active + ']' ) }, }).constructor = e var t = function () { ;(this._bindings = []), (this._prevParams = null) var e = this this.dispatch = function () { t.prototype.dispatch.apply(e, arguments) } } ;(t.prototype = { memorize: !1, _shouldPropagate: !0, active: !0, validateListener: function (e, t) { if ('function' != typeof e) throw new Error( 'Signal: listener is a required param of {fn}() and should be a Function.'.replace( '{fn}', t, ), ) }, _registerListener: function (t, n, r, i) { var o, a = this._indexOfListener(t, r) if (-1 !== a) { if ((o = this._bindings[a]).isOnce !== n) throw new Error( 'You cannot add' + (n ? '' : 'Once') + '() then add' + (n ? 'Once' : '') + '() the same listener without removing the relationship first.', ) } else (o = new e(this, t, n, r, i)), this._addBinding(o) return this.memorize && this._prevParams && o.execute(this._prevParams), o }, _addBinding: function (e) { var t = this._bindings.length do { t-- } while (this._bindings[t] && e._priority <= this._bindings[t]._priority) this._bindings.splice(t + 1, 0, e) }, _indexOfListener: function (e, t) { for (var n, r = this._bindings.length; r--; ) if ((n = this._bindings[r])._listener === e && n.context === t) return r return -1 }, has: function (e, t) { return -1 !== this._indexOfListener(e, t) }, add: function (e, t, n) { return this.validateListener(e, 'add'), this._registerListener(e, !1, t, n) }, addOnce: function (e, t, n) { return this.validateListener(e, 'addOnce'), this._registerListener(e, !0, t, n) }, remove: function (e, t) { this.validateListener(e, 'remove') var n = this._indexOfListener(e, t) return -1 !== n && (this._bindings[n]._destroy(), this._bindings.splice(n, 1)), e }, removeAll: function (e) { 'undefined' == typeof e && (e = null) for (var t = this._bindings.length; t--; ) e ? this._bindings[t].context === e && (this._bindings[t]._destroy(), this._bindings.splice(t, 1)) : this._bindings[t]._destroy() e || (this._bindings.length = 0) }, getNumListeners: function () { return this._bindings.length }, halt: function () { this._shouldPropagate = !1 }, dispatch: function () { if (this.active) { var e, t = Array.prototype.slice.call(arguments), n = this._bindings.length if ((this.memorize && (this._prevParams = t), n)) { ;(e = this._bindings.slice()), (this._shouldPropagate = !0) do { n-- } while (e[n] && this._shouldPropagate && !1 !== e[n].execute(t)) } } }, forget: function () { this._prevParams = null }, dispose: function () { this.removeAll(), delete this._bindings, delete this._prevParams }, toString: function () { return ( '[Signal active:' + this.active + ' numListeners:' + this.getNumListeners() + ']' ) }, }), (t.prototype.constructor = t), (n.Signal = t) })(), (n.AStarFinder = function (e) { e = e || {} var t = { allowDiagonal: !1, heuristicFilter: null } ;(t = n.Tools.merge(t, e)), (this.allowDiagonal = t.allowDiagonal), (this.heuristicFilter = t.heuristicFilter), (this.list = new n.LinkedList()) }), (n.AStarFinder.prototype = { findPath: function (e, t, r, i) { var o, a, s, u, l, c for ( r = r || this.heuristicFilter, i.clearPath(), this.list.clear(), this.list.add(e); this.list.length > 0; ) { if ((this.list.sort(this.compare), ((o = this.list.shift())._visited = !0), o === t)) return n.PathUtil.backtrace(t) for (l = 0, c = (s = i.getNeighbors(o, this.allowDiagonal, r)).length; c > l; l++) if ( (u = s[l]).walkable && ((a = o._calcCost + i.distance(o, u)), !u._visited || a < u._calcCost) ) { if ( ((u._visited = !0), (u._parent = o), (u._calcCost = a), (u._priority = a + i.distance(t, u)), u === t) ) return n.PathUtil.backtrace(t) this.list.add(u) } } return null }, compare: function (e, t) { return e._priority - t._priority }, }), (n.AStarFinder.prototype.constructor = n.AStarFinder), (n.PathUtil = { backtrace: function (e) { for (var t = [e]; e._parent; ) (e = e._parent), t.push(e) return t.reverse() }, biBacktrace: function (e, t) { var n = this.backtrace(e), r = this.backtrace(t) return n.concat(r.reverse()) }, pathLength: function (e) { var t, n, r, i, o, a = 0 for (t = 1; t < e.length; ++t) (n = e[t - 1]), (r = e[t]), (i = n[0] - r[0]), (o = n[1] - r[1]), (a += Math.sqrt(i * i + o * o)) return a }, interpolate: function (e, t, n, r) { var i, o, a, s, u, l, c = Math.abs, d = [] for ( i = n > e ? 1 : -1, o = r > t ? 1 : -1, u = (a = c(n - e)) - (s = c(r - t)); e !== n || t !== r; ) d.push([e, t]), (l = 2 * u) > -s && ((u -= s), (e += i)), a > l && ((u += a), (t += o)) return d }, expandPath: function (e) { var t, n, r, i, o, a, s = [], u = e.length if (2 > u) return s for (o = 0; u - 1 > o; ++o) for ( t = e[o], n = e[o + 1], i = (r = this.interpolate(t[0], t[1], n[0], n[1])).length, a = 0; i - 1 > a; ++a ) s.push(r[a]) return s.push(e[u - 1]), s }, smoothenPath: function (e, t) { var n, r, i, o, a, s, u, l, c, d, f, h, p = t.length, v = t[0][0], m = t[0][1], g = t[p - 1][0], y = t[p - 1][1] for (a = [[(n = v), (r = m)]], u = 2; p > u; ++u) { for ( i = (c = t[u])[0], o = c[1], d = this.interpolate(n, r, i, o), h = !1, l = 1; l < d.length; ++l ) if (((f = d[l]), !e.isWalkableAt(f[0], f[1]))) { h = !0 break } h && ((s = t[u - 1]), a.push(s), (n = s[0]), (r = s[1])) } return a.push([g, y]), a }, compressPath: function (e) { if (e.length < 3) return e var t, n, r, i, o, a, s = [], u = e[0][0], l = e[0][1], c = e[1][0], d = e[1][1], f = c - u, h = d - l for ( f /= o = Math.sqrt(f * f + h * h), h /= o, s.push([u, l]), a = 2; a < e.length; a++ ) (t = c), (n = d), (r = f), (i = h), (f = (c = e[a][0]) - t), (h = (d = e[a][1]) - n), (h /= o = Math.sqrt(f * f + h * h)), ((f /= o) !== r || h !== i) && s.push([t, n]) return s.push([c, d]), s }, }), (n.Loader = { manager: null, imageLoader: null, crossOrigin: !1, init: function (e) { ;(this.crossOrigin = e || !1), (this.manager = new THREE.LoadingManager( function () {}, function () {}, function () { console.warn('Error loading images') }, )), (this.imageLoader = new THREE.ImageLoader(this.manager)), (this.imageLoader.crossOrigin = e) }, loadTexture: function (e, t, n, r) { var i = new THREE.Texture(null, t) return ( this.imageLoader.load( e, function (e) { ;(i.image = e), (i.needsUpdate = !0), n && n(i) }, null, function (e) { r && r(e) }, ), (i.sourceFile = e), i ) }, }), (n.MouseCaster = function (e, t, r) { ;(this.down = !1), (this.rightDown = !1), (this.pickedObject = null), (this.selectedObject = null), (this.allHits = null), (this.active = !0), (this.shift = !1), (this.ctrl = !1), (this.wheel = 0), (this.position = new THREE.Vector3()), (this.screenPosition = new THREE.Vector2()), (this.signal = new n.Signal()), (this.group = e), (this._camera = t), (this._raycaster = new THREE.Raycaster()), (this._preventDefault = !1), (r = r || document).addEventListener( 'mousemove', this._onDocumentMouseMove.bind(this), !1, ), r.addEventListener('mousedown', this._onDocumentMouseDown.bind(this), !1), r.addEventListener('mouseup', this._onDocumentMouseUp.bind(this), !1), r.addEventListener('mousewheel', this._onMouseWheel.bind(this), !1), r.addEventListener('DOMMouseScroll', this._onMouseWheel.bind(this), !1) }), (n.MouseCaster.OVER = 'over'), (n.MouseCaster.OUT = 'out'), (n.MouseCaster.DOWN = 'down'), (n.MouseCaster.UP = 'up'), (n.MouseCaster.CLICK = 'click'), (n.MouseCaster.WHEEL = 'wheel'), (n.MouseCaster.prototype = { update: function () { if (this.active) { this._raycaster.setFromCamera(this.screenPosition, this._camera) var e, t, r = this._raycaster.intersectObject(this.group, !0) r.length > 0 ? ((t = (e = r[0]).object.userData.structure), this.pickedObject != t && (this.pickedObject && this.signal.dispatch(n.MouseCaster.OUT, this.pickedObject), (this.pickedObject = t), (this.selectedObject = null), this.signal.dispatch(n.MouseCaster.OVER, this.pickedObject)), this.position.copy(e.point), (this.screenPosition.z = e.distance)) : (this.pickedObject && this.signal.dispatch(n.MouseCaster.OUT, this.pickedObject), (this.pickedObject = null), (this.selectedObject = null)), (this.allHits = r) } }, preventDefault: function () { this._preventDefault = !0 }, _onDocumentMouseDown: function (e) { return ( (e = e || window.event).preventDefault(), this._preventDefault ? ((this._preventDefault = !1), !1) : (this.pickedObject && (this.selectedObject = this.pickedObject), (this.shift = e.shiftKey), (this.ctrl = e.ctrlKey), (this.down = 1 === e.which), (this.rightDown = 3 === e.which), void this.signal.dispatch(n.MouseCaster.DOWN, this.pickedObject)) ) }, _onDocumentMouseUp: function (e) { return ( e.preventDefault(), this._preventDefault ? ((this._preventDefault = !1), !1) : ((this.shift = e.shiftKey), (this.ctrl = e.ctrlKey), this.signal.dispatch(n.MouseCaster.UP, this.pickedObject), this.selectedObject && this.pickedObject && this.selectedObject.uniqueID === this.pickedObject.uniqueID && this.signal.dispatch(n.MouseCaster.CLICK, this.pickedObject), (this.down = 1 !== e.which && this.down), void (this.rightDown = 3 !== e.which && this.rightDown)) ) }, _onDocumentMouseMove: function (e) { e.preventDefault(), (this.screenPosition.x = (e.clientX / window.innerWidth) * 2 - 1), (this.screenPosition.y = (-e.clientY / window.innerHeight) * 2 + 1) }, _onMouseWheel: function (e) { if (this.active) { e.preventDefault(), e.stopPropagation() var t = 0 void 0 !== e.wheelDelta ? (t = e.wheelDelta) : void 0 !== e.detail && (t = -e.detail), t > 0 ? this.wheel++ : this.wheel--, this.signal.dispatch(n.MouseCaster.WHEEL, this.wheel) } }, }), (n.MouseCaster.prototype.constructor = n.MouseCaster), (n.Scene = function (e, t) { var r = { element: document.body, alpha: !0, antialias: !0, clearColor: '#fff', sortObjects: !1, fog: null, light: new THREE.DirectionalLight(16777215), lightPosition: null, cameraType: 'PerspectiveCamera', cameraPosition: null, orthoZoom: 4, }, i = { minDistance: 100, maxDistance: 1e3, zoomSpeed: 2, noZoom: !1 } if ( ((r = n.Tools.merge(r, e)), 'boolean' != typeof t && (i = n.Tools.merge(i, t)), (this.renderer = new THREE.WebGLRenderer({ alpha: r.alpha, antialias: r.antialias })), this.renderer.setClearColor(r.clearColor, 0), (this.renderer.sortObjects = r.sortObjects), (this.width = window.innerWidth), (this.height = window.innerHeight), (this.orthoZoom = r.orthoZoom), (this.container = new THREE.Scene()), (this.container.fog = r.fog), this.container.add(new THREE.AmbientLight(14540253)), r.lightPosition || r.light.position.set(-1, 1, -1).normalize(), this.container.add(r.light), 'OrthographicCamera' === r.cameraType) ) { var o = window.innerWidth / this.orthoZoom, a = window.innerHeight / this.orthoZoom this.camera = new THREE.OrthographicCamera(o / -2, o / 2, a / 2, a / -2, 1, 5e3) } else this.camera = new THREE.PerspectiveCamera(50, this.width / this.height, 1, 5e3) ;(this.contolled = !!t), this.contolled && ((this.controls = new THREE.OrbitControls(this.camera, this.renderer.domElement)), (this.controls.minDistance = i.minDistance), (this.controls.maxDistance = i.maxDistance), (this.controls.zoomSpeed = i.zoomSpeed), (this.controls.noZoom = i.noZoom)), r.cameraPosition && this.camera.position.copy(r.cameraPosition), window.addEventListener( 'resize', function () { if ( ((this.width = window.innerWidth), (this.height = window.innerHeight), 'OrthographicCamera' === this.camera.type) ) { var e = this.width / this.orthoZoom, t = this.height / this.orthoZoom ;(this.camera.left = e / -2), (this.camera.right = e / 2), (this.camera.top = t / 2), (this.camera.bottom = t / -2) } else this.camera.aspect = this.width / this.height this.camera.updateProjectionMatrix(), this.renderer.setSize(this.width, this.height) }.bind(this), !1, ), this.attachTo(r.element) }), (n.Scene.prototype = { attachTo: function (e) { ;(e.style.width = this.width + 'px'), (e.style.height = this.height + 'px'), this.renderer.setPixelRatio(window.devicePixelRatio), this.renderer.setSize(this.width, this.height), e.appendChild(this.renderer.domElement) }, add: function (e) { this.container.add(e) }, remove: function (e) { this.container.remove(e) }, render: function () { this.contolled && this.controls.update(), this.renderer.render(this.container, this.camera) }, updateOrthoZoom: function () { if (this.orthoZoom <= 0) this.orthoZoom = 0 else { var e = this.width / this.orthoZoom, t = this.height / this.orthoZoom ;(this.camera.left = e / -2), (this.camera.right = e / 2), (this.camera.top = t / 2), (this.camera.bottom = t / -2), this.camera.updateProjectionMatrix() } }, focusOn: function (e) { this.camera.lookAt(e.position) }, }), (n.Scene.prototype.constructor = n.Scene), (n.SelectionManager = function (e) { ;(this.mouse = e), (this.onSelect = new n.Signal()), (this.onDeselect = new n.Signal()), (this.selected = null), (this.toggleSelection = !1), this.mouse.signal.add(this.onMouse, this) }), (n.SelectionManager.prototype = { select: function (e, t) { e && ((t = t || !0), this.selected !== e && this.clearSelection(t), e.selected ? this.toggleSelection && (t && this.onDeselect.dispatch(e), e.deselect()) : e.select(), (this.selected = e), t && this.onSelect.dispatch(e)) }, clearSelection: function (e) { ;(e = e || !0), this.selected && (e && this.onDeselect.dispatch(this.selected), this.selected.deselect()), (this.selected = null) }, onMouse: function (e, t) { switch (e) { case n.MouseCaster.DOWN: t || this.clearSelection() break case n.MouseCaster.CLICK: this.select(t) } }, }), (n.SelectionManager.prototype.constructor = n.SelectionManager), (n.Tools = { clamp: function (e, t, n) { return Math.max(t, Math.min(n, e)) }, sign: function (e) { return e && e / Math.abs(e) }, random: function (e, t) { return 1 === arguments.length ? Math.random() * e - 0.5 * e : Math.random() * (t - e) + e }, randomInt: function (e, t) { return 1 === arguments.length ? (Math.random() * e - 0.5 * e) | 0 : (Math.random() * (t - e + 1) + e) | 0 }, normalize: function (e, t, n) { return (e - t) / (n - t) }, getShortRotation: function (e) { return (e %= this.TAU) > this.PI ? (e -= this.TAU) : e < -this.PI && (e += this.TAU), e }, generateID: function () { return Math.random().toString(36).slice(2) + Date.now() }, isPlainObject: function (e) { if ('object' != typeof e || e.nodeType || e === e.window) return !1 try { if ( e.constructor && !Object.prototype.hasOwnProperty.call(e.constructor.prototype, 'isPrototypeOf') ) return !1 } catch (t) { return !1 } return !0 }, merge: function (e, t) { var n = this, r = Array.isArray(t), i = (r && []) || {} return r ? ((e = e || []), (i = i.concat(e)), t.forEach(function (t, r) { 'undefined' == typeof i[r] ? (i[r] = t) : n.isPlainObject(t) ? (i[r] = n.merge(e[r], t)) : -1 === e.indexOf(t) && i.push(t) }), i) : (e && n.isPlainObject(e) && Object.keys(e).forEach(function (t) { i[t] = e[t] }), Object.keys(t).forEach(function (r) { t[r] && n.isPlainObject(t[r]) && e[r] ? (i[r] = n.merge(e[r], t[r])) : (i[r] = t[r]) }), i) }, now: function () { return window.nwf ? window.nwf.system.Performance.elapsedTime : window.performance.now() }, empty: function (e) { for (; e.lastChild; ) e.removeChild(e.lastChild) }, radixSort: function (e, t, n, r) { if (((r = r || 31), !((t = t || 0) >= (n = n || e.length) - 1 || 0 > r))) { for (var i = t, o = n, a = 1 << r; o > i; ) if (e[i] & a) { --o var s = e[i] ;(e[i] = e[o]), (e[o] = s) } else ++i this.radixSort(e, t, o, r - 1), this.radixSort(e, o, n, r - 1) } }, randomizeRGB: function (e, t) { var n, r, i = e.split(','), o = 'rgb(' for (t = this.randomInt(t), n = 0; 3 > n; n++) 0 > (r = parseInt(i[n]) + t) ? (r = 0) : r > 255 && (r = 255), (o += r + ',') return (o = o.substring(0, o.length - 1)) + ')' }, getJSON: function (e) { var t = new XMLHttpRequest(), n = 'undefined' != typeof e.cache && e.cache ? e.url : e.url + '?t=' + Math.floor(1e4 * Math.random()) + Date.now() ;(t.onreadystatechange = function () { if (200 !== this.status) 0 !== this.status && console.warn( '[Tools.getJSON] Error: ' + this.status + ' (' + this.statusText + ') :: ' + e.url, ) else { var t = null try { t = JSON.parse(this.responseText) } catch (n) { return } e.callback.call(e.scope || null, t) } }), t.open('GET', n, !0), t.setRequestHeader('Accept', 'application/json'), t.setRequestHeader('Content-Type', 'application/json'), t.send('') }, }) }, 7454: function () { !(function (e) { var t = 'KeyboardEvent' in e t || (e.KeyboardEvent = function () { throw TypeError('Illegal constructor') }), 'DOM_KEY_LOCATION_STANDARD' in e.KeyboardEvent || (e.KeyboardEvent.DOM_KEY_LOCATION_STANDARD = 0), 'DOM_KEY_LOCATION_LEFT' in e.KeyboardEvent || (e.KeyboardEvent.DOM_KEY_LOCATION_LEFT = 1), 'DOM_KEY_LOCATION_RIGHT' in e.KeyboardEvent || (e.KeyboardEvent.DOM_KEY_LOCATION_RIGHT = 2), 'DOM_KEY_LOCATION_NUMPAD' in e.KeyboardEvent || (e.KeyboardEvent.DOM_KEY_LOCATION_NUMPAD = 3) var n = window.KeyboardEvent.DOM_KEY_LOCATION_STANDARD, r = window.KeyboardEvent.DOM_KEY_LOCATION_LEFT, i = window.KeyboardEvent.DOM_KEY_LOCATION_RIGHT, o = window.KeyboardEvent.DOM_KEY_LOCATION_NUMPAD function a(e, t) { return -1 !== String(e).indexOf(t) } var s = a(navigator.platform, 'Win') ? 'win' : a(navigator.platform, 'Mac') ? 'mac' : a(navigator.platform, 'CrOS') ? 'cros' : a(navigator.platform, 'Linux') ? 'linux' : a(navigator.userAgent, 'iPad') || a(navigator.platform, 'iPod') || a(navigator.platform, 'iPhone') ? 'ios' : '', u = a(navigator.userAgent, 'Chrome/') ? 'chrome' : a(navigator.vendor, 'Apple') ? 'safari' : a(navigator.userAgent, 'MSIE') ? 'ie' : a(navigator.userAgent, 'Gecko/') ? 'moz' : a(navigator.userAgent, 'Opera/') ? 'opera' : '', l = u + '-' + s function c(e, t, n) { ;(l !== t && u !== t && s !== t) || Object.keys(n).forEach(function (t) { e[t] = n[t] }) } var d = { 3: { code: 'Cancel' }, 6: { code: 'Help' }, 8: { code: 'Backspace' }, 9: { code: 'Tab' }, 12: { code: 'Clear' }, 13: { code: 'Enter' }, 16: { code: 'Shift' }, 17: { code: 'Control' }, 18: { code: 'Alt' }, 19: { code: 'Pause' }, 20: { code: 'CapsLock' }, 21: { code: 'KanaMode' }, 22: { code: 'HangulMode' }, 23: { code: 'JunjaMode' }, 24: { code: 'FinalMode' }, 25: { code: 'KanjiMode' }, 27: { code: 'Escape' }, 28: { code: 'Convert' }, 29: { code: 'NonConvert' }, 30: { code: 'Accept' }, 31: { code: 'ModeChange' }, 32: { code: 'Space' }, 33: { code: 'PageUp' }, 34: { code: 'PageDown' }, 35: { code: 'End' }, 36: { code: 'Home' }, 37: { code: 'ArrowLeft' }, 38: { code: 'ArrowUp' }, 39: { code: 'ArrowRight' }, 40: { code: 'ArrowDown' }, 41: { code: 'Select' }, 42: { code: 'Print' }, 43: { code: 'Execute' }, 44: { code: 'PrintScreen' }, 45: { code: 'Insert' }, 46: { code: 'Delete' }, 47: { code: 'Help' }, 48: { code: 'Digit0', keyCap: '0' }, 49: { code: 'Digit1', keyCap: '1' }, 50: { code: 'Digit2', keyCap: '2' }, 51: { code: 'Digit3', keyCap: '3' }, 52: { code: 'Digit4', keyCap: '4' }, 53: { code: 'Digit5', keyCap: '5' }, 54: { code: 'Digit6', keyCap: '6' }, 55: { code: 'Digit7', keyCap: '7' }, 56: { code: 'Digit8', keyCap: '8' }, 57: { code: 'Digit9', keyCap: '9' }, 65: { code: 'KeyA', keyCap: 'a' }, 66: { code: 'KeyB', keyCap: 'b' }, 67: { code: 'KeyC', keyCap: 'c' }, 68: { code: 'KeyD', keyCap: 'd' }, 69: { code: 'KeyE', keyCap: 'e' }, 70: { code: 'KeyF', keyCap: 'f' }, 71: { code: 'KeyG', keyCap: 'g' }, 72: { code: 'KeyH', keyCap: 'h' }, 73: { code: 'KeyI', keyCap: 'i' }, 74: { code: 'KeyJ', keyCap: 'j' }, 75: { code: 'KeyK', keyCap: 'k' }, 76: { code: 'KeyL', keyCap: 'l' }, 77: { code: 'KeyM', keyCap: 'm' }, 78: { code: 'KeyN', keyCap: 'n' }, 79: { code: 'KeyO', keyCap: 'o' }, 80: { code: 'KeyP', keyCap: 'p' }, 81: { code: 'KeyQ', keyCap: 'q' }, 82: { code: 'KeyR', keyCap: 'r' }, 83: { code: 'KeyS', keyCap: 's' }, 84: { code: 'KeyT', keyCap: 't' }, 85: { code: 'KeyU', keyCap: 'u' }, 86: { code: 'KeyV', keyCap: 'v' }, 87: { code: 'KeyW', keyCap: 'w' }, 88: { code: 'KeyX', keyCap: 'x' }, 89: { code: 'KeyY', keyCap: 'y' }, 90: { code: 'KeyZ', keyCap: 'z' }, 91: { code: 'OSLeft', location: r }, 92: { code: 'OSRight', location: i }, 93: { code: 'ContextMenu' }, 95: { code: 'Standby' }, 96: { code: 'Numpad0', keyCap: '0', location: o }, 97: { code: 'Numpad1', keyCap: '1', location: o }, 98: { code: 'Numpad2', keyCap: '2', location: o }, 99: { code: 'Numpad3', keyCap: '3', location: o }, 100: { code: 'Numpad4', keyCap: '4', location: o }, 101: { code: 'Numpad5', keyCap: '5', location: o }, 102: { code: 'Numpad6', keyCap: '6', location: o }, 103: { code: 'Numpad7', keyCap: '7', location: o }, 104: { code: 'Numpad8', keyCap: '8', location: o }, 105: { code: 'Numpad9', keyCap: '9', location: o }, 106: { code: 'NumpadMultiply', keyCap: '*', location: o }, 107: { code: 'NumpadAdd', keyCap: '+', location: o }, 108: { code: 'NumpadComma', keyCap: ',', location: o }, 109: { code: 'NumpadSubtract', keyCap: '-', location: o }, 110: { code: 'NumpadDecimal', keyCap: '.', location: o }, 111: { code: 'NumpadDivide', keyCap: '/', location: o }, 112: { code: 'F1' }, 113: { code: 'F2' }, 114: { code: 'F3' }, 115: { code: 'F4' }, 116: { code: 'F5' }, 117: { code: 'F6' }, 118: { code: 'F7' }, 119: { code: 'F8' }, 120: { code: 'F9' }, 121: { code: 'F10' }, 122: { code: 'F11' }, 123: { code: 'F12' }, 124: { code: 'F13' }, 125: { code: 'F14' }, 126: { code: 'F15' }, 127: { code: 'F16' }, 128: { code: 'F17' }, 129: { code: 'F18' }, 130: { code: 'F19' }, 131: { code: 'F20' }, 132: { code: 'F21' }, 133: { code: 'F22' }, 134: { code: 'F23' }, 135: { code: 'F24' }, 144: { code: 'NumLock', location: o }, 145: { code: 'ScrollLock' }, 160: { code: 'ShiftLeft', location: r }, 161: { code: 'ShiftRight', location: i }, 162: { code: 'ControlLeft', location: r }, 163: { code: 'ControlRight', location: i }, 164: { code: 'AltLeft', location: r }, 165: { code: 'AltRight', location: i }, 166: { code: 'BrowserBack' }, 167: { code: 'BrowserForward' }, 168: { code: 'BrowserRefresh' }, 169: { code: 'BrowserStop' }, 170: { code: 'BrowserSearch' }, 171: { code: 'BrowserFavorites' }, 172: { code: 'BrowserHome' }, 173: { code: 'VolumeMute' }, 174: { code: 'VolumeDown' }, 175: { code: 'VolumeUp' }, 176: { code: 'MediaTrackNext' }, 177: { code: 'MediaTrackPrevious' }, 178: { code: 'MediaStop' }, 179: { code: 'MediaPlayPause' }, 180: { code: 'LaunchMail' }, 181: { code: 'MediaSelect' }, 182: { code: 'LaunchApp1' }, 183: { code: 'LaunchApp2' }, 186: { code: 'Semicolon', keyCap: ';' }, 187: { code: 'Equal', keyCap: '=' }, 188: { code: 'Comma', keyCap: ',' }, 189: { code: 'Minus', keyCap: '-' }, 190: { code: 'Period', keyCap: '.' }, 191: { code: 'Slash', keyCap: '/' }, 192: { code: 'Backquote', keyCap: '`' }, 219: { code: 'BracketLeft', keyCap: '[' }, 220: { code: 'Backslash', keyCap: '\\' }, 221: { code: 'BracketRight', keyCap: ']' }, 222: { code: 'Quote', keyCap: "'" }, 226: { code: 'IntlBackslash', keyCap: '\\' }, 229: { code: 'Process' }, 246: { code: 'Attn' }, 247: { code: 'CrSel' }, 248: { code: 'ExSel' }, 249: { code: 'EraseEof' }, 250: { code: 'Play' }, 251: { code: 'ZoomToggle' }, 254: { code: 'Clear' }, } c(d, 'moz', { 59: { code: 'Semicolon', keyCap: ';' }, 61: { code: 'Equal', keyCap: '=' }, 107: { code: 'Equal', keyCap: '=' }, 109: { code: 'Minus', keyCap: '-' }, 187: { code: 'NumpadAdd', keyCap: '+', location: o }, 189: { code: 'NumpadSubtract', keyCap: '-', location: o }, }), c(d, 'moz-mac', { 12: { code: 'NumLock', location: o }, 173: { code: 'Minus', keyCap: '-' }, }), c(d, 'moz-win', { 173: { code: 'Minus', keyCap: '-' } }), c(d, 'chrome-mac', { 93: { code: 'OSRight', location: i } }), c(d, 'safari', { 3: { code: 'Enter' }, 25: { code: 'Tab' } }), c(d, 'ios', { 10: { code: 'Enter', location: n } }), c(d, 'safari-mac', { 91: { code: 'OSLeft', location: r }, 93: { code: 'OSRight', location: i }, 229: { code: 'KeyQ', keyCap: 'Q' }, }) var f = {} 'cros' === s && ((f['U+00A0'] = { code: 'ShiftLeft', location: r }), (f['U+00A1'] = { code: 'ShiftRight', location: i }), (f['U+00A2'] = { code: 'ControlLeft', location: r }), (f['U+00A3'] = { code: 'ControlRight', location: i }), (f['U+00A4'] = { code: 'AltLeft', location: r }), (f['U+00A5'] = { code: 'AltRight', location: i })), 'chrome-mac' === l && (f['U+0010'] = { code: 'ContextMenu' }), 'safari-mac' === l && (f['U+0010'] = { code: 'ContextMenu' }), 'ios' === s && ((f['U+0010'] = { code: 'Function' }), (f['U+001C'] = { code: 'ArrowLeft' }), (f['U+001D'] = { code: 'ArrowRight' }), (f['U+001E'] = { code: 'ArrowUp' }), (f['U+001F'] = { code: 'ArrowDown' }), (f['U+0001'] = { code: 'Home' }), (f['U+0004'] = { code: 'End' }), (f['U+000B'] = { code: 'PageUp' }), (f['U+000C'] = { code: 'PageDown' })) var h = [] ;(h[r] = { 16: { code: 'ShiftLeft', location: r }, 17: { code: 'ControlLeft', location: r }, 18: { code: 'AltLeft', location: r }, }), (h[i] = { 16: { code: 'ShiftRight', location: i }, 17: { code: 'ControlRight', location: i }, 18: { code: 'AltRight', location: i }, }), (h[o] = { 13: { code: 'NumpadEnter', location: o } }), c(h[o], 'moz', { 109: { code: 'NumpadSubtract', location: o }, 107: { code: 'NumpadAdd', location: o }, }), c(h[r], 'moz-mac', { 224: { code: 'OSLeft', location: r } }), c(h[i], 'moz-mac', { 224: { code: 'OSRight', location: i } }), c(h[i], 'moz-win', { 91: { code: 'OSRight', location: i } }), c(h[i], 'mac', { 93: { code: 'OSRight', location: i } }), c(h[o], 'chrome-mac', { 12: { code: 'NumLock', location: o } }), c(h[o], 'safari-mac', { 12: { code: 'NumLock', location: o }, 187: { code: 'NumpadAdd', location: o }, 189: { code: 'NumpadSubtract', location: o }, 190: { code: 'NumpadDecimal', location: o }, 191: { code: 'NumpadDivide', location: o }, }) var p = { ShiftLeft: { key: 'Shift' }, ShiftRight: { key: 'Shift' }, ControlLeft: { key: 'Control' }, ControlRight: { key: 'Control' }, AltLeft: { key: 'Alt' }, AltRight: { key: 'Alt' }, OSLeft: { key: 'OS' }, OSRight: { key: 'OS' }, NumpadEnter: { key: 'Enter' }, Space: { key: ' ' }, Digit0: { key: '0', shiftKey: ')' }, Digit1: { key: '1', shiftKey: '!' }, Digit2: { key: '2', shiftKey: '@' }, Digit3: { key: '3', shiftKey: '#' }, Digit4: { key: '4', shiftKey: '$' }, Digit5: { key: '5', shiftKey: '%' }, Digit6: { key: '6', shiftKey: '^' }, Digit7: { key: '7', shiftKey: '&' }, Digit8: { key: '8', shiftKey: '*' }, Digit9: { key: '9', shiftKey: '(' }, KeyA: { key: 'a', shiftKey: 'A' }, KeyB: { key: 'b', shiftKey: 'B' }, KeyC: { key: 'c', shiftKey: 'C' }, KeyD: { key: 'd', shiftKey: 'D' }, KeyE: { key: 'e', shiftKey: 'E' }, KeyF: { key: 'f', shiftKey: 'F' }, KeyG: { key: 'g', shiftKey: 'G' }, KeyH: { key: 'h', shiftKey: 'H' }, KeyI: { key: 'i', shiftKey: 'I' }, KeyJ: { key: 'j', shiftKey: 'J' }, KeyK: { key: 'k', shiftKey: 'K' }, KeyL: { key: 'l', shiftKey: 'L' }, KeyM: { key: 'm', shiftKey: 'M' }, KeyN: { key: 'n', shiftKey: 'N' }, KeyO: { key: 'o', shiftKey: 'O' }, KeyP: { key: 'p', shiftKey: 'P' }, KeyQ: { key: 'q', shiftKey: 'Q' }, KeyR: { key: 'r', shiftKey: 'R' }, KeyS: { key: 's', shiftKey: 'S' }, KeyT: { key: 't', shiftKey: 'T' }, KeyU: { key: 'u', shiftKey: 'U' }, KeyV: { key: 'v', shiftKey: 'V' }, KeyW: { key: 'w', shiftKey: 'W' }, KeyX: { key: 'x', shiftKey: 'X' }, KeyY: { key: 'y', shiftKey: 'Y' }, KeyZ: { key: 'z', shiftKey: 'Z' }, Numpad0: { key: '0' }, Numpad1: { key: '1' }, Numpad2: { key: '2' }, Numpad3: { key: '3' }, Numpad4: { key: '4' }, Numpad5: { key: '5' }, Numpad6: { key: '6' }, Numpad7: { key: '7' }, Numpad8: { key: '8' }, Numpad9: { key: '9' }, NumpadMultiply: { key: '*' }, NumpadAdd: { key: '+' }, NumpadComma: { key: ',' }, NumpadSubtract: { key: '-' }, NumpadDecimal: { key: '.' }, NumpadDivide: { key: '/' }, Semicolon: { key: ';', shiftKey: ':' }, Equal: { key: '=', shiftKey: '+' }, Comma: { key: ',', shiftKey: '<' }, Minus: { key: '-', shiftKey: '_' }, Period: { key: '.', shiftKey: '>' }, Slash: { key: '/', shiftKey: '?' }, Backquote: { key: '`', shiftKey: '~' }, BracketLeft: { key: '[', shiftKey: '{' }, Backslash: { key: '\\', shiftKey: '|' }, BracketRight: { key: ']', shiftKey: '}' }, Quote: { key: "'", shiftKey: '"' }, IntlBackslash: { key: '\\', shiftKey: '|' }, } c(p, 'mac', { OSLeft: { key: 'Meta' }, OSRight: { key: 'Meta' } }) var v = { Esc: 'Escape', Nonconvert: 'NonConvert', Left: 'ArrowLeft', Up: 'ArrowUp', Right: 'ArrowRight', Down: 'ArrowDown', Del: 'Delete', Menu: 'ContextMenu', MediaNextTrack: 'MediaTrackNext', MediaPreviousTrack: 'MediaTrackPrevious', SelectMedia: 'MediaSelect', HalfWidth: 'Hankaku', FullWidth: 'Zenkaku', RomanCharacters: 'Romaji', Crsel: 'CrSel', Exsel: 'ExSel', Zoom: 'ZoomToggle', }, m = (function (e, t) { var n = {} return ( Object.keys(e).forEach(function (r) { var i = e[r] t in i && (n[i[t]] = i) }), n ) })(d, 'code') try { var g = t && 'location' in new KeyboardEvent('') } catch (b) {} function y(e) { var t = 'keyCode' in e ? e.keyCode : 'which' in e ? e.which : 0, n = (function () { if (g || 'keyLocation' in e) { var n = g ? e.location : e.keyLocation if (n && t in h[n]) return h[n][t] } return 'keyIdentifier' in e && e.keyIdentifier in f ? f[e.keyIdentifier] : t in d ? d[t] : null })() if (!n) return null var r = (function () { var t = p[n.code] return t ? (e.shiftKey && 'shiftKey' in t ? t.shiftKey : t.key) : n.code })() return { code: n.code, key: r, location: n.location, keyCap: n.keyCap } } 'KeyboardEvent' in e && 'defineProperty' in Object && (function () { function e(e, t, n) { t in e || Object.defineProperty(e, t, n) } if ( (e(KeyboardEvent.prototype, 'code', { get: function () { var e = y(this) return e ? e.code : '' }, }), 'key' in KeyboardEvent.prototype) ) { var t = Object.getOwnPropertyDescriptor(KeyboardEvent.prototype, 'key') Object.defineProperty(KeyboardEvent.prototype, 'key', { get: function () { var e = t.get.call(this) return v.hasOwnProperty(e) ? v[e] : e }, }) } e(KeyboardEvent.prototype, 'key', { get: function () { var e = y(this) return e && 'key' in e ? e.key : 'Unidentified' }, }), e(KeyboardEvent.prototype, 'location', { get: function () { var e = y(this) return e && 'location' in e ? e.location : n }, }), e(KeyboardEvent.prototype, 'locale', { get: function () { return '' }, }) })(), 'queryKeyCap' in e.KeyboardEvent || (e.KeyboardEvent.queryKeyCap = function (e, t) { if (((e = String(e)), !m.hasOwnProperty(e))) return 'Undefined' if (t && 'en-us' !== String(t).toLowerCase()) throw Error('Unsupported locale') var n = m[e] return n.keyCap || n.code || 'Undefined' }), (e.identifyKey = function (e) { if (!('code' in e)) { var t = y(e) ;(e.code = t ? t.code : ''), (e.key = t && 'key' in t ? t.key : 'Unidentified'), (e.location = 'location' in e ? e.location : 'keyLocation' in e ? e.keyLocation : t && 'location' in t ? t.location : n), (e.locale = '') } }) })(window) }, 3386: function (e) { e.exports = AFRAME.registerComponent('checkpoint-controls', { schema: { enabled: { default: !0 }, mode: { default: 'teleport', oneOf: ['teleport', 'animate'] }, animateSpeed: { default: 3 }, }, init: function () { ;(this.active = !0), (this.checkpoint = null), (this.isNavMeshConstrained = !1), (this.offset = new THREE.Vector3()), (this.position = new THREE.Vector3()), (this.targetPosition = new THREE.Vector3()) }, play: function () { this.active = !0 }, pause: function () { this.active = !1 }, setCheckpoint: function (e) { const t = this.el this.active && this.checkpoint !== e && (this.checkpoint && t.emit('navigation-end', { checkpoint: this.checkpoint }), (this.checkpoint = e), this.sync(), this.position.distanceTo(this.targetPosition) < 0.1 ? (this.checkpoint = null) : (t.emit('navigation-start', { checkpoint: e }), 'teleport' === this.data.mode && (this.el.setAttribute('position', this.targetPosition), (this.checkpoint = null), t.emit('navigation-end', { checkpoint: e }), t.components['movement-controls'].updateNavLocation()))) }, isVelocityActive: function () { return !(!this.active || !this.checkpoint) }, getVelocity: function () { if (!this.active) return const e = this.data, t = this.offset, n = this.position, r = this.targetPosition, i = this.checkpoint return ( this.sync(), n.distanceTo(r) < 0.1 ? ((this.checkpoint = null), this.el.emit('navigation-end', { checkpoint: i }), t.set(0, 0, 0)) : (t.setLength(e.animateSpeed), t) ) }, sync: function () { const e = this.offset, t = this.position, n = this.targetPosition t.copy(this.el.getAttribute('position')), this.checkpoint.object3D.getWorldPosition(n), n.add(this.checkpoint.components.checkpoint.getOffset()), e.copy(n).sub(t) }, }) }, 5062: function (e, t, n) { const r = n(6453), i = n(4379), o = 0.2, a = 'left', s = 'right', u = 1, l = 2 e.exports = AFRAME.registerComponent('gamepad-controls', { GamepadButton: r, schema: { enabled: { default: !0 }, camera: { default: '[camera]', type: 'selector' }, rotationSensitivity: { default: 2 }, }, init: function () { const e = this.el.sceneEl ;(this.system = e.systems['tracked-controls-webxr'] || { controllers: [] }), (this.prevTime = window.performance.now()), (this.buttons = {}) const t = this.el.object3D.rotation ;(this.pitch = new THREE.Object3D()), (this.pitch.rotation.x = THREE.Math.degToRad(t.x)), (this.yaw = new THREE.Object3D()), (this.yaw.position.y = 10), (this.yaw.rotation.y = THREE.Math.degToRad(t.y)), this.yaw.add(this.pitch), (this._lookVector = new THREE.Vector2()), (this._moveVector = new THREE.Vector2()), (this._dpadVector = new THREE.Vector2()), e.addBehavior(this) }, update: function () { this.tick() }, tick: function (e, t) { this.updateButtonState(), this.updateRotation(t) }, remove: function () {}, isVelocityActive: function () { if (!this.data.enabled || !this.isConnected()) return !1 const e = this._dpadVector, t = this._moveVector this.getDpad(e), this.getJoystick(u, t) const n = e.x || t.x, r = e.y || t.y return Math.abs(n) > o || Math.abs(r) > o }, getVelocityDelta: function () { const e = this._dpadVector, t = this._moveVector this.getDpad(e), this.getJoystick(u, t) const n = e.x || t.x, r = e.y || t.y, i = new THREE.Vector3() return Math.abs(n) > o && (i.x += n), Math.abs(r) > o && (i.z += r), i }, isRotationActive: function () { if (!this.data.enabled || !this.isConnected()) return !1 const e = this._lookVector return this.getJoystick(l, e), Math.abs(e.x) > o || Math.abs(e.y) > o }, updateRotation: function (e) { if (!this.isRotationActive()) return const t = this.data, n = this.yaw, r = this.pitch, i = t.camera.components['look-controls'], a = i && i.pitchObject && i.yawObject a && (r.rotation.copy(i.pitchObject.rotation), n.rotation.copy(i.yawObject.rotation)) const s = this._lookVector this.getJoystick(l, s), Math.abs(s.x) <= o && (s.x = 0), Math.abs(s.y) <= o && (s.y = 0), s.multiplyScalar((t.rotationSensitivity * e) / 1e3), (n.rotation.y -= s.x), (r.rotation.x -= s.y), (r.rotation.x = Math.max(-Math.PI / 2, Math.min(Math.PI / 2, r.rotation.x))), t.camera.object3D.rotation.set(r.rotation.x, n.rotation.y, 0), a && (i.pitchObject.rotation.copy(r.rotation), i.yawObject.rotation.copy(n.rotation)) }, updateButtonState: function () { const e = this.getGamepad(s) if (this.data.enabled && e) for (var t = 0; t < e.buttons.length; t++) e.buttons[t].pressed && !this.buttons[t] ? this.emit(new i('gamepadbuttondown', t, e.buttons[t])) : !e.buttons[t].pressed && this.buttons[t] && this.emit(new i('gamepadbuttonup', t, e.buttons[t])), (this.buttons[t] = e.buttons[t].pressed) else Object.keys(this.buttons) && (this.buttons = {}) }, emit: function (e) { this.el.emit(e.type, e), this.el.emit(e.type + ':' + e.index, new i(e.type, e.index, e)) }, getGamepad: (function () { const e = [], t = [] return function (n) { const r = this.el.sceneEl.components['proxy-controls'], i = r && r.isConnected() && r.getGamepad(0) if (i) return i e.length = 0 for (let t = 0; t < this.system.controllers.length; t++) { const r = this.system.controllers[t], i = r ? r.gamepad : null if ((e.push(i), i && i.handedness === n)) return i } const o = navigator.getGamepads ? navigator.getGamepads() : t for (let e = 0; e < o.length; e++) { const t = o[e] if (t && t.hand === n) return t } return e[0] || o[0] } })(), getButton: function (e) { return this.getGamepad(s).buttons[e] }, getAxis: function (e) { return this.getGamepad(e > 1 ? s : a).axes[e] }, getJoystick: function (e, t) { const n = this.getGamepad(e === u ? a : s) if ('xr-standard' === n.mapping) switch (e) { case u: return t.set(n.axes[2], n.axes[3]) case l: return t.set(n.axes[0], n.axes[1]) } else switch (e) { case u: return t.set(n.axes[0], n.axes[1]) case l: return t.set(n.axes[2], n.axes[3]) } throw new Error('Unexpected joystick index "%d".', e) }, getDpad: function (e) { const t = this.getGamepad(a) return t.buttons[r.DPAD_RIGHT] ? e.set( (t.buttons[r.DPAD_RIGHT].pressed ? 1 : 0) + (t.buttons[r.DPAD_LEFT].pressed ? -1 : 0), (t.buttons[r.DPAD_UP].pressed ? -1 : 0) + (t.buttons[r.DPAD_DOWN].pressed ? 1 : 0), ) : e.set(0, 0) }, isConnected: function () { const e = this.getGamepad(a) return !(!e || !e.connected) }, getID: function () { return this.getGamepad(a).id }, }) }, 2406: function (e, t, n) { n(3386), n(5062), n(2250), n(9048), n(3819), n(9893) }, 2250: function (e, t, n) { n(7454) const r = window.KeyboardEvent e.exports = AFRAME.registerComponent('keyboard-controls', { schema: { enabled: { default: !0 }, debug: { default: !1 } }, init: function () { ;(this.dVelocity = new THREE.Vector3()), (this.localKeys = {}), (this.listeners = { keydown: this.onKeyDown.bind(this), keyup: this.onKeyUp.bind(this), blur: this.onBlur.bind(this), }), this.attachEventListeners() }, isVelocityActive: function () { return this.data.enabled && !!Object.keys(this.getKeys()).length }, getVelocityDelta: function () { const e = this.data, t = this.getKeys() return ( this.dVelocity.set(0, 0, 0), e.enabled && ((t.KeyW || t.ArrowUp) && (this.dVelocity.z -= 1), (t.KeyA || t.ArrowLeft) && (this.dVelocity.x -= 1), (t.KeyS || t.ArrowDown) && (this.dVelocity.z += 1), (t.KeyD || t.ArrowRight) && (this.dVelocity.x += 1)), this.dVelocity.clone() ) }, play: function () { this.attachEventListeners() }, pause: function () { this.removeEventListeners() }, remove: function () { this.pause() }, attachEventListeners: function () { window.addEventListener('keydown', this.listeners.keydown, !1), window.addEventListener('keyup', this.listeners.keyup, !1), window.addEventListener('blur', this.listeners.blur, !1) }, removeEventListeners: function () { window.removeEventListener('keydown', this.listeners.keydown), window.removeEventListener('keyup', this.listeners.keyup), window.removeEventListener('blur', this.listeners.blur) }, onKeyDown: function (e) { AFRAME.utils.shouldCaptureKeyEvent(e) && ((this.localKeys[e.code] = !0), this.emit(e)) }, onKeyUp: function (e) { AFRAME.utils.shouldCaptureKeyEvent(e) && (delete this.localKeys[e.code], this.emit(e)) }, onBlur: function () { for (let e in this.localKeys) this.localKeys.hasOwnProperty(e) && delete this.localKeys[e] }, emit: function (e) { '__keyboard-controls-proxy' in e && this.el.emit(e.type, e), this.el.emit(e.type + ':' + e.code, new r(e.type, e)), this.data.debug && console.log(e.type + ':' + e.code) }, isPressed: function (e) { return e in this.getKeys() }, getKeys: function () { return this.isProxied() ? this.el.sceneEl.components['proxy-controls'].getKeyboard() : this.localKeys }, isProxied: function () { const e = this.el.sceneEl.components['proxy-controls'] return e && e.isConnected() }, }) }, 3819: function (e) { const t = '-controls' e.exports = AFRAME.registerComponent('movement-controls', { dependencies: ['rotation'], schema: { enabled: { default: !0 }, controls: { default: ['gamepad', 'trackpad', 'keyboard', 'touch'] }, speed: { default: 0.3, min: 0 }, fly: { default: !1 }, constrainToNavMesh: { default: !1 }, camera: { default: '[movement-controls] [camera]', type: 'selector' }, }, init: function () { const e = this.el ;(this.velocityCtrl = null), (this.velocity = new THREE.Vector3()), (this.heading = new THREE.Quaternion()), (this.navGroup = null), (this.navNode = null), e.sceneEl.hasLoaded ? this.injectControls() : e.sceneEl.addEventListener('loaded', this.injectControls.bind(this)) }, update: function (e) { const t = this.el, n = this.data, r = t.sceneEl.systems.nav t.sceneEl.hasLoaded && this.injectControls(), r && n.constrainToNavMesh !== e.constrainToNavMesh && (n.constrainToNavMesh ? r.addAgent(this) : r.removeAgent(this)) }, injectControls: function () { const e = this.data var n for (let r = 0; r < e.controls.length; r++) (n = e.controls[r] + t), this.el.components[n] || this.el.setAttribute(n, '') }, updateNavLocation: function () { ;(this.navGroup = null), (this.navNode = null) }, tick: (function () { const e = new THREE.Vector3(), t = new THREE.Vector3(), n = new THREE.Vector3() return function (r, i) { if (!i) return const o = this.el, a = this.data if (!a.enabled) return this.updateVelocityCtrl() const s = this.velocityCtrl, u = this.velocity if (s) if ( (i / 1e3 > 0.2 ? u.set(0, 0, 0) : this.updateVelocity(i), a.constrainToNavMesh && !1 !== s.isNavMeshConstrained) ) { if (u.lengthSq() < 1e-5) return e.copy(o.object3D.position), t .copy(u) .multiplyScalar(i / 1e3) .add(e) const r = o.sceneEl.systems.nav ;(this.navGroup = null === this.navGroup ? r.getGroup(e) : this.navGroup), (this.navNode = this.navNode || r.getNode(e, this.navGroup)), (this.navNode = r.clampStep(e, t, this.navGroup, this.navNode, n)), o.object3D.position.copy(n) } else o.hasAttribute('velocity') ? o.setAttribute('velocity', u) : ((o.object3D.position.x += (u.x * i) / 1e3), (o.object3D.position.y += (u.y * i) / 1e3), (o.object3D.position.z += (u.z * i) / 1e3)) } })(), updateVelocityCtrl: function () { const e = this.data if (e.enabled) { for (let n = 0, r = e.controls.length; n < r; n++) { const r = this.el.components[e.controls[n] + t] if (r && r.isVelocityActive()) return void (this.velocityCtrl = r) } this.velocityCtrl = null } }, updateVelocity: (function () { const e = new THREE.Vector2(), t = new THREE.Quaternion() return function (n) { let r const i = this.el, o = this.velocityCtrl, a = this.velocity, s = this.data if (o) { if (!o.getVelocityDelta) { if (o.getVelocity) return void a.copy(o.getVelocity()) if (o.getPositionDelta) return void a.copy(o.getPositionDelta(n).multiplyScalar(1e3 / n)) throw new Error('Incompatible movement controls: ', o) } r = o.getVelocityDelta(n) } if ( (i.hasAttribute('velocity') && !s.constrainToNavMesh && a.copy(this.el.getAttribute('velocity')), r && s.enabled) ) { const n = s.camera t.copy(n.object3D.quaternion), t.premultiply(i.object3D.quaternion), r.applyQuaternion(t) const o = r.length() s.fly ? (a.copy(r), a.multiplyScalar(16.66667 * this.data.speed)) : (e.set(r.x, r.z), e.setLength(o * this.data.speed * 16.66667), (a.x = e.x), (a.z = e.y)) } } })(), }) }, 9048: function (e) { e.exports = AFRAME.registerComponent('touch-controls', { schema: { enabled: { default: !0 }, reverseEnabled: { default: !0 } }, init: function () { ;(this.dVelocity = new THREE.Vector3()), this.bindMethods(), (this.direction = 0) }, play: function () { this.addEventListeners() }, pause: function () { this.removeEventListeners(), this.dVelocity.set(0, 0, 0) }, remove: function () { this.pause() }, addEventListeners: function () { const e = this.el.sceneEl, t = e.canvas t ? (t.addEventListener('touchstart', this.onTouchStart), t.addEventListener('touchend', this.onTouchEnd)) : e.addEventListener('render-target-loaded', this.addEventListeners.bind(this)) }, removeEventListeners: function () { const e = this.el.sceneEl && this.el.sceneEl.canvas e && (e.removeEventListener('touchstart', this.onTouchStart), e.removeEventListener('touchend', this.onTouchEnd)) }, isVelocityActive: function () { return this.data.enabled && !!this.direction }, getVelocityDelta: function () { return (this.dVelocity.z = this.direction), this.dVelocity.clone() }, bindMethods: function () { ;(this.onTouchStart = this.onTouchStart.bind(this)), (this.onTouchEnd = this.onTouchEnd.bind(this)) }, onTouchStart: function (e) { ;(this.direction = -1), this.data.reverseEnabled && 2 === e.touches.length && (this.direction = 1), e.preventDefault() }, onTouchEnd: function (e) { ;(this.direction = 0), e.preventDefault() }, }) }, 9893: function (e) { e.exports = AFRAME.registerComponent('trackpad-controls', { schema: { enabled: { default: !0 }, enableNegX: { default: !0 }, enablePosX: { default: !0 }, enableNegZ: { default: !0 }, enablePosZ: { default: !0 }, mode: { default: 'touch', oneOf: ['swipe', 'touch', 'press'] }, }, init: function () { ;(this.dVelocity = new THREE.Vector3()), (this.zVel = 0), (this.xVel = 0), this.bindMethods() }, play: function () { this.addEventListeners() }, pause: function () { this.removeEventListeners(), this.dVelocity.set(0, 0, 0) }, remove: function () { this.pause() }, addEventListeners: function () { const e = this.data, t = this.el.sceneEl switch ((t.addEventListener('axismove', this.onAxisMove), e.mode)) { case 'swipe': case 'touch': t.addEventListener('trackpadtouchstart', this.onTouchStart), t.addEventListener('trackpadtouchend', this.onTouchEnd) break case 'press': t.addEventListener('trackpaddown', this.onTouchStart), t.addEventListener('trackpadup', this.onTouchEnd) } }, removeEventListeners: function () { const e = this.el.sceneEl e.removeEventListener('axismove', this.onAxisMove), e.removeEventListener('trackpadtouchstart', this.onTouchStart), e.removeEventListener('trackpadtouchend', this.onTouchEnd), e.removeEventListener('trackpaddown', this.onTouchStart), e.removeEventListener('trackpadup', this.onTouchEnd) }, isVelocityActive: function () { return this.data.enabled && this.isMoving }, getVelocityDelta: function () { return ( (this.dVelocity.z = this.isMoving ? -this.zVel : 1), (this.dVelocity.x = this.isMoving ? this.xVel : 1), this.dVelocity.clone() ) }, bindMethods: function () { ;(this.onTouchStart = this.onTouchStart.bind(this)), (this.onTouchEnd = this.onTouchEnd.bind(this)), (this.onAxisMove = this.onAxisMove.bind(this)) }, onTouchStart: function (e) { switch (this.data.mode) { case 'swipe': ;(this.canRecordAxis = !0), (this.startingAxisData = []) break case 'touch': case 'press': this.isMoving = !0 } e.preventDefault() }, onTouchEnd: function (e) { 'swipe' == this.data.mode && (this.startingAxisData = []), (this.isMoving = !1), e.preventDefault() }, onAxisMove: function (e) { switch (this.data.mode) { case 'swipe': return this.handleSwipeAxis(e) case 'touch': case 'press': return this.handleTouchAxis(e) } }, handleSwipeAxis: function (e) { const t = this.data, n = e.detail.axis if ( (0 === this.startingAxisData.length && this.canRecordAxis && ((this.canRecordAxis = !1), (this.startingAxisData[0] = n[0]), (this.startingAxisData[1] = n[1])), this.startingAxisData.length > 0) ) { let e = 0, r = 0 t.enableNegX && n[0] < this.startingAxisData[0] && (e = -1), t.enablePosX && n[0] > this.startingAxisData[0] && (e = 1), t.enablePosZ && n[1] > this.startingAxisData[1] && (r = -1), t.enableNegZ && n[1] < this.startingAxisData[1] && (r = 1) const i = Math.abs(this.startingAxisData[1] - n[1]) Math.abs(this.startingAxisData[0] - n[0]) > i ? ((this.zVel = 0), (this.xVel = e), (this.isMoving = !0)) : ((this.xVel = 0), (this.zVel = r), (this.isMoving = !0)) } }, handleTouchAxis: function (e) { const t = this.data, n = e.detail.axis let r = 0, i = 0 t.enableNegX && n[0] < 0 && (r = -1), t.enablePosX && n[0] > 0 && (r = 1), t.enablePosZ && n[1] > 0 && (i = -1), t.enableNegZ && n[1] < 0 && (i = 1), Math.abs(n[0]) > Math.abs(n[1]) ? ((this.zVel = 0), (this.xVel = r)) : ((this.xVel = 0), (this.zVel = i)) }, }) }, 6591: function (e) { const t = { once: THREE.LoopOnce, repeat: THREE.LoopRepeat, pingpong: THREE.LoopPingPong } function n(e) { return e.replace(/[|\\{}()[\]^$+*?.]/g, '\\$&') } e.exports = AFRAME.registerComponent('animation-mixer', { schema: { clip: { default: '*' }, duration: { default: 0 }, clampWhenFinished: { default: !1, type: 'boolean' }, crossFadeDuration: { default: 0 }, loop: { default: 'repeat', oneOf: Object.keys(t) }, repetitions: { default: 1 / 0, min: 0 }, timeScale: { default: 1 }, }, init: function () { ;(this.model = null), (this.mixer = null), (this.activeActions = []) const e = this.el.getObject3D('mesh') e ? this.load(e) : this.el.addEventListener('model-loaded', (e) => { this.load(e.detail.model) }) }, load: function (e) { const t = this.el ;(this.model = e), (this.mixer = new THREE.AnimationMixer(e)), this.mixer.addEventListener('loop', (e) => { t.emit('animation-loop', { action: e.action, loopDelta: e.loopDelta }) }), this.mixer.addEventListener('finished', (e) => { t.emit('animation-finished', { action: e.action, direction: e.direction }) }), this.data.clip && this.update({}) }, remove: function () { this.mixer && this.mixer.stopAllAction() }, update: function (e) { if (!e) return const n = this.data, r = AFRAME.utils.diff(n, e) if ('clip' in r) return this.stopAction(), void (n.clip && this.playAction()) this.activeActions.forEach((e) => { 'duration' in r && n.duration && e.setDuration(n.duration), 'clampWhenFinished' in r && (e.clampWhenFinished = n.clampWhenFinished), ('loop' in r || 'repetitions' in r) && e.setLoop(t[n.loop], n.repetitions), 'timeScale' in r && e.setEffectiveTimeScale(n.timeScale) }) }, stopAction: function () { const e = this.data for (let t = 0; t < this.activeActions.length; t++) e.crossFadeDuration ? this.activeActions[t].fadeOut(e.crossFadeDuration) : this.activeActions[t].stop() this.activeActions.length = 0 }, playAction: function () { if (!this.mixer) return const e = this.model, r = this.data, i = e.animations || (e.geometry || {}).animations || [] if (!i.length) return const o = ((a = r.clip), new RegExp('^' + a.split(/\*+/).map(n).join('.*') + '$')) var a for (let n, s = 0; (n = i[s]); s++) if (n.name.match(o)) { const i = this.mixer.clipAction(n, e) ;(i.enabled = !0), (i.clampWhenFinished = r.clampWhenFinished), r.duration && i.setDuration(r.duration), 1 !== r.timeScale && i.setEffectiveTimeScale(r.timeScale), i.setLoop(t[r.loop], r.repetitions).fadeIn(r.crossFadeDuration).play(), this.activeActions.push(i) } }, tick: function (e, t) { this.mixer && !isNaN(t) && this.mixer.update(t / 1e3) }, }) }, 2290: function (e, t, n) { ;(THREE.ColladaLoader = n(203)), (e.exports.Component = AFRAME.registerComponent('collada-model-legacy', { schema: { type: 'asset' }, init: function () { ;(this.model = null), (this.loader = new THREE.ColladaLoader()) }, update: function () { var e = this, t = this.el, n = this.data, r = this.el.sceneEl.systems.renderer n && (this.remove(), this.loader.load(n, function (n) { ;(e.model = n.scene), e.model.traverse(function (e) { if (e.isMesh) { var t = e.material t.color && r.applyColorCorrection(t.color), t.map && r.applyColorCorrection(t.map), t.emissive && r.applyColorCorrection(t.emissive), t.emissiveMap && r.applyColorCorrection(t.emissiveMap) } }), t.setObject3D('mesh', e.model), t.emit('model-loaded', { format: 'collada', model: e.model }) })) }, remove: function () { this.model && this.el.removeObject3D('mesh') }, })) }, 5310: function (e, t, n) { ;(THREE.FBXLoader = n(9434)), (e.exports = AFRAME.registerComponent('fbx-model', { schema: { src: { type: 'asset' }, crossorigin: { default: '' } }, init: function () { this.model = null }, update: function () { const e = this.data if (!e.src) return this.remove() const t = new THREE.FBXLoader() e.crossorigin && t.setCrossOrigin(e.crossorigin), t.load(e.src, this.load.bind(this)) }, load: function (e) { ;(this.model = e), this.el.setObject3D('mesh', e), this.el.emit('model-loaded', { format: 'fbx', model: e }) }, remove: function () { this.model && this.el.removeObject3D('mesh') }, })) }, 8837: function (e, t, n) { const r = n(4657)(), i = (function () { let e return function () { return ( (e = e || r( 'https://cdn.jsdelivr.net/gh/mrdoob/three.js@r86/examples/js/loaders/GLTFLoader.js', )), e ) } })() e.exports = AFRAME.registerComponent('gltf-model-legacy', { schema: { type: 'model' }, init: function () { ;(this.model = null), (this.loader = null), (this.loaderPromise = i().then(() => { ;(this.loader = new THREE.GLTFLoader()), this.loader.setCrossOrigin('Anonymous') })) }, update: function () { const e = this, t = this.el, n = this.data n && (this.remove(), this.loaderPromise.then(() => { this.loader.load(n, function (n) { ;(e.model = n.scene), (e.model.animations = n.animations), t.setObject3D('mesh', e.model), t.emit('model-loaded', { format: 'gltf', model: e.model }) }) })) }, remove: function () { this.model && this.el.removeObject3D('mesh') }, }) }, 9874: function (e, t, n) { n(6591), n(2290), n(5310), n(8837), n(171) }, 171: function (e) { e.exports = AFRAME.registerComponent('object-model', { schema: { src: { type: 'asset' }, crossorigin: { default: '' } }, init: function () { this.model = null }, update: function () { let e const t = this.data t.src && (this.remove(), (e = new THREE.ObjectLoader()), t.crossorigin && e.setCrossOrigin(t.crossorigin), e.load(t.src, (e) => { e.traverse((e) => { e instanceof THREE.SkinnedMesh && e.material && (e.material.skinning = !!((e.geometry && e.geometry.bones) || []).length) }), this.load(e) })) }, load: function (e) { ;(this.model = e), this.el.setObject3D('mesh', e), this.el.emit('model-loaded', { format: 'json', model: e }) }, remove: function () { this.model && this.el.removeObject3D('mesh') }, }) }, 7642: function (e) { e.exports = AFRAME.registerComponent('checkpoint', { schema: { offset: { default: { x: 0, y: 0, z: 0 }, type: 'vec3' } }, init: function () { ;(this.active = !1), (this.targetEl = null), (this.fire = this.fire.bind(this)), (this.offset = new THREE.Vector3()) }, update: function () { this.offset.copy(this.data.offset) }, play: function () { this.el.addEventListener('click', this.fire) }, pause: function () { this.el.removeEventListener('click', this.fire) }, remove: function () { this.pause() }, fire: function () { const e = this.el.sceneEl.querySelector('[checkpoint-controls]') if (!e) throw new Error('No `checkpoint-controls` component found.') e.components['checkpoint-controls'].setCheckpoint(this.el) }, getOffset: function () { return this.offset.copy(this.data.offset) }, }) }, 4795: function (e) { function t(e, t, n, r) { e && ((t = t || []), e.traverse((e) => { if (!e.isMesh) return var i ;((i = e.material) ? Array.isArray(i) ? i : i.materials ? i.materials : [i] : [] ).forEach((e) => { ;(e && !('envMap' in e)) || (t.length && -1 === t.indexOf(e.name)) || ((e.envMap = n), (e.reflectivity = r), (e.needsUpdate = !0)) }) })) } e.exports = AFRAME.registerComponent('cube-env-map', { multiple: !0, schema: { path: { default: '' }, extension: { default: 'jpg', oneOf: ['jpg', 'png'] }, format: { default: 'RGBFormat', oneOf: ['RGBFormat', 'RGBAFormat'] }, enableBackground: { default: !1 }, reflectivity: { default: 1, min: 0, max: 1 }, materials: { default: [] }, }, init: function () { const e = this.data ;(this.texture = new THREE.CubeTextureLoader().load([ e.path + 'posx.' + e.extension, e.path + 'negx.' + e.extension, e.path + 'posy.' + e.extension, e.path + 'negy.' + e.extension, e.path + 'posz.' + e.extension, e.path + 'negz.' + e.extension, ])), (this.texture.format = THREE[e.format]), (this.object3dsetHandler = () => { const e = this.el.getObject3D('mesh'), n = this.data t(e, n.materials, this.texture, n.reflectivity) }), this.el.addEventListener('object3dset', this.object3dsetHandler) }, update: function (e) { const n = this.data, r = this.el.getObject3D('mesh') let i = [], o = [] if ( (n.materials.length && (e.materials ? ((i = n.materials.filter((t) => !e.materials.includes(t))), (o = e.materials.filter((e) => !n.materials.includes(e)))) : (i = n.materials)), i.length && t(r, i, this.texture, n.reflectivity), o.length && t(r, o, null, 1), e.materials && n.reflectivity !== e.reflectivity) ) { const i = n.materials.filter((t) => e.materials.includes(t)) i.length && t(r, i, this.texture, n.reflectivity) } this.data.enableBackground && !e.enableBackground ? this.setBackground(this.texture) : !this.data.enableBackground && e.enableBackground && this.setBackground(null) }, remove: function () { this.el.removeEventListener('object3dset', this.object3dsetHandler) const e = this.el.getObject3D('mesh'), n = this.data t(e, n.materials, null, 1), n.enableBackground && this.setBackground(null) }, setBackground: function (e) { this.el.sceneEl.object3D.background = e }, }) }, 9511: function (e) { e.exports = AFRAME.registerComponent('grab', { init: function () { ;(this.system = this.el.sceneEl.systems.physics), (this.GRABBED_STATE = 'grabbed'), (this.grabbing = !1), (this.hitEl = null), (this.physics = this.el.sceneEl.systems.physics), (this.constraint = null), (this.onHit = this.onHit.bind(this)), (this.onGripOpen = this.onGripOpen.bind(this)), (this.onGripClose = this.onGripClose.bind(this)) }, play: function () { const e = this.el e.addEventListener('hit', this.onHit), e.addEventListener('gripdown', this.onGripClose), e.addEventListener('gripup', this.onGripOpen), e.addEventListener('trackpaddown', this.onGripClose), e.addEventListener('trackpadup', this.onGripOpen), e.addEventListener('triggerdown', this.onGripClose), e.addEventListener('triggerup', this.onGripOpen) }, pause: function () { const e = this.el e.removeEventListener('hit', this.onHit), e.removeEventListener('gripdown', this.onGripClose), e.removeEventListener('gripup', this.onGripOpen), e.removeEventListener('trackpaddown', this.onGripClose), e.removeEventListener('trackpadup', this.onGripOpen), e.removeEventListener('triggerdown', this.onGripClose), e.removeEventListener('triggerup', this.onGripOpen) }, onGripClose: function () { this.grabbing = !0 }, onGripOpen: function () { const e = this.hitEl ;(this.grabbing = !1), e && (e.removeState(this.GRABBED_STATE), (this.hitEl = void 0), this.system.removeConstraint(this.constraint), (this.constraint = null)) }, onHit: function (e) { const t = e.detail.el t && !t.is(this.GRABBED_STATE) && this.grabbing && !this.hitEl && (t.addState(this.GRABBED_STATE), (this.hitEl = t), (this.constraint = new CANNON.LockConstraint(this.el.body, t.body)), this.system.addConstraint(this.constraint)) }, }) }, 9236: function (e, t, n) { n(7642), n(4795), n(9511), n(765), n(837), n(8310), n(8240), n(1790) }, 765: function (e) { e.exports = AFRAME.registerComponent('jump-ability', { dependencies: ['velocity'], schema: { on: { default: 'keydown:Space gamepadbuttondown:0' }, playerHeight: { default: 1.764 }, maxJumps: { default: 1 }, distance: { default: 5 }, debug: { default: !1 }, }, init: function () { ;(this.velocity = 0), (this.numJumps = 0) const e = this.beginJump.bind(this), t = this.data.on.split(' ') this.bindings = {} for (let n = 0; n < t.length; n++) (this.bindings[t[n]] = e), this.el.addEventListener(t[n], e) ;(this.bindings.collide = this.onCollide.bind(this)), this.el.addEventListener('collide', this.bindings.collide) }, remove: function () { for (var e in this.bindings) this.bindings.hasOwnProperty(e) && (this.el.removeEventListener(e, this.bindings[e]), delete this.bindings[e]) this.el.removeEventListener('collide', this.bindings.collide), delete this.bindings.collide }, beginJump: function () { if (this.numJumps < this.data.maxJumps) { const e = this.data, t = Math.sqrt(-2 * e.distance * -24.8), n = this.el.getAttribute('velocity') this.el.setAttribute('velocity', { x: n.x, y: t, z: n.z }), this.numJumps++, this.el.emit('jumpstart') } }, onCollide: function () { this.numJumps > 0 && this.el.emit('jumpend'), (this.numJumps = 0) }, }) }, 837: function (e) { const t = 1e-6 e.exports = AFRAME.registerComponent('kinematic-body', { dependencies: ['velocity'], schema: { mass: { default: 5 }, radius: { default: 1.3 }, linearDamping: { default: 0.05 }, enableSlopes: { default: !0 }, enableJumps: { default: !1 }, }, init: function () { ;(this.system = this.el.sceneEl.systems.physics), this.system.addComponent(this) const e = this.el, t = this.data, n = new CANNON.Vec3().copy(e.object3D.getWorldPosition(new THREE.Vector3())) ;(this.body = new CANNON.Body({ material: this.system.getMaterial('staticMaterial'), position: n, mass: t.mass, linearDamping: t.linearDamping, fixedRotation: !0, })), this.body.addShape(new CANNON.Sphere(t.radius), new CANNON.Vec3(0, t.radius, 0)), (this.body.el = this.el), (this.el.body = this.body), this.system.addBody(this.body), e.hasAttribute('wasd-controls') && console.warn( '[kinematic-body] Not compatible with wasd-controls, use movement-controls.', ) }, remove: function () { this.system.removeBody(this.body), this.system.removeComponent(this), delete this.el.body }, beforeStep: function (e, t) { if (!t) return const n = this.el, r = this.data, i = this.body r.enableJumps || i.velocity.set(0, 0, 0), i.position.copy(n.getAttribute('position')) }, step: (function () { const e = new THREE.Vector3(), n = new THREE.Vector3(), r = new THREE.Vector3(), i = new THREE.Vector3() return function (o, a) { if (!a) return let s, u, l = this.body, c = this.data, d = !1, f = -1 / 0, h = this.system.getContacts() ;(a = Math.min(a, 1e3 * this.system.data.maxInterval)), i.set(0, 0, 0), e.copy(this.el.getAttribute('velocity')), l.velocity.copy(e) for (var p, v = 0; (p = h[v]); v++) if (p.enabled) { if (l.id === p.bi.id) p.ni.negate(r) else { if (l.id !== p.bj.id) continue r.copy(p.ni) } ;(d = l.velocity.dot(r) < -t), d && r.y <= 0.5 ? e.projectOnPlane(r) : r.y > 0.5 && ((s = l.id === p.bi.id ? Math.abs(p.rj.y + p.bj.position.y) : Math.abs(p.ri.y + p.bi.position.y)), s > f && ((f = s), i.copy(r), (u = l.id === p.bi.id ? p.bj : p.bi))) } n.copy(e).normalize(), u && (!c.enableJumps || n.y < 0.5) ? (c.enableSlopes ? i.y < 1 - t && i.copy(this.raycastToGround(u, i)) : i.set(0, 1, 0), e.projectOnPlane(i)) : this.system.driver.world && e.add(this.system.driver.world.gravity.scale((4 * a) / 1e3)), l.velocity.copy(e), this.el.setAttribute('velocity', l.velocity), this.el.setAttribute('position', l.position) } })(), raycastToGround: function (e, t) { let n, r, i = this.body.position, o = this.body.position.clone() return ( (n = new CANNON.Ray(i, o)), n._updateDirection(), n.intersectBody(e), n.hasHit ? ((r = n.result.hitNormalWorld), Math.abs(r.y) > Math.abs(t.y) ? r : t) : t ) }, }) }, 8310: function (e) { e.exports = AFRAME.registerComponent('mesh-smooth', { init: function () { this.el.addEventListener('model-loaded', (e) => { e.detail.model.traverse((e) => { e.isMesh && e.geometry.computeVertexNormals() }) }) }, }) }, 8240: function (e) { e.exports = AFRAME.registerComponent('normal-material', { init: function () { ;(this.material = new THREE.MeshNormalMaterial({ flatShading: !0 })), (this.applyMaterial = this.applyMaterial.bind(this)), this.el.addEventListener('object3dset', this.applyMaterial) }, remove: function () { this.el.removeEventListener('object3dset', this.applyMaterial) }, applyMaterial: function () { this.el.object3D.traverse((e) => { e.isMesh && (e.material = this.material) }) }, }) }, 1790: function (e) { e.exports = AFRAME.registerComponent('sphere-collider', { schema: { objects: { default: '' }, state: { default: 'collided' }, radius: { default: 0.05 }, watch: { default: !0 }, }, init: function () { ;(this.observer = null), (this.els = []), (this.collisions = []), (this.handleHit = this.handleHit.bind(this)), (this.handleHitEnd = this.handleHitEnd.bind(this)) }, remove: function () { this.pause() }, play: function () { const e = this.el.sceneEl this.data.watch && ((this.observer = new MutationObserver(this.update.bind(this, null))), this.observer.observe(e, { childList: !0, subtree: !0 })) }, pause: function () { this.observer && (this.observer.disconnect(), (this.observer = null)) }, update: function () { const e = this.data let t ;(t = e.objects ? this.el.sceneEl.querySelectorAll(e.objects) : this.el.sceneEl.children), (this.els = Array.prototype.slice.call(t)) }, tick: (function () { const e = new THREE.Vector3(), t = new THREE.Vector3(), n = new THREE.Vector3(), r = new THREE.Vector3(), i = new THREE.Box3(), o = new Map() return function () { const a = this.el, s = this.data, u = a.getObject3D('mesh'), l = [] let c var d u && (o.clear(), a.object3D.getWorldPosition(e), a.object3D.getWorldScale(n), (c = s.radius * ((d = n), Math.max.apply(null, d.toArray()))), this.els.forEach(function (n) { let a, s, u, d if (!n.isEntity) return if (((s = n.getObject3D('mesh')), !s)) return if ( (i.setFromObject(s).getSize(r), (d = Math.max(r.x, r.y, r.z) / 2), (a = Math.sqrt(2 * d * d)), i.getCenter(t), !a) ) return ;(u = e.distanceTo(t)), u < a + c && (l.push(n), o.set(n, u)) }), l.sort((e, t) => (o.get(e) > o.get(t) ? 1 : -1)).forEach(this.handleHit), 0 === l.length && a.emit('hit', { el: null }), this.collisions.filter((e) => !o.has(e)).forEach(this.handleHitEnd), (this.collisions = l)) } })(), handleHit: function (e) { e.emit('hit'), e.addState(this.data.state), this.el.emit('hit', { el: e }) }, handleHitEnd: function (e) { e.emit('hitend'), e.removeState(this.data.state), this.el.emit('hitend', { el: e }) }, }) }, 2578: function (e, t, n) { n(8453), n(1250), n(1465) }, 1250: function (e) { e.exports = AFRAME.registerComponent('nav-agent', { schema: { destination: { type: 'vec3' }, active: { default: !1 }, speed: { default: 2 } }, init: function () { ;(this.system = this.el.sceneEl.systems.nav), this.system.addAgent(this), (this.group = null), (this.path = []), (this.raycaster = new THREE.Raycaster()) }, remove: function () { this.system.removeAgent(this) }, update: function () { this.path.length = 0 }, updateNavLocation: function () { ;(this.group = null), (this.path = []) }, tick: (function () { const e = new THREE.Vector3(), t = new THREE.Vector3(), n = new THREE.Vector3() return function (r, i) { const o = this.el, a = this.data, s = this.raycaster, u = (a.speed * i) / 1e3 if (!a.active) return if (!this.path.length) { const t = this.el.object3D.position ;(this.group = this.group || this.system.getGroup(t)), (this.path = this.system.getPath(t, e.copy(a.destination), this.group) || []), o.emit('navigation-start') } if (!this.path.length) return ( console.warn('[nav] Unable to find path to %o.', a.destination), this.el.setAttribute('nav-agent', { active: !1 }), void o.emit('navigation-end') ) const l = o.object3D.position, c = this.path[0] t.subVectors(c, l) let d if (t.length() < u) { if ((this.path.shift(), !this.path.length)) return ( this.el.setAttribute('nav-agent', { active: !1 }), void o.emit('navigation-end') ) n.copy(l), (d = this.path[0]) } else n.copy(t.setLength(u)).add(l), (d = c) ;(d.y = l.y), o.object3D.lookAt(d), s.ray.origin.copy(n), (s.ray.origin.y += 1.5), (s.ray.direction.y = -1) const f = s.intersectObject(this.system.getNavMesh()) f.length ? (t.subVectors(f[0].point, l), l.add(t.setLength(u))) : l.copy(n) } })(), }) }, 8453: function (e) { e.exports = AFRAME.registerComponent('nav-mesh', { init: function () { ;(this.system = this.el.sceneEl.systems.nav), (this.hasLoadedNavMesh = !1), this.el.addEventListener('object3dset', this.loadNavMesh.bind(this)) }, play: function () { this.hasLoadedNavMesh || this.loadNavMesh() }, loadNavMesh: function () { const e = this.el.getObject3D('mesh'), t = this.el.sceneEl.object3D if (!e) return let n if ( (e.traverse((e) => { e.isMesh && (n = e) }), !n) ) return const r = n.geometry.isBufferGeometry ? new THREE.Geometry().fromBufferGeometry(n.geometry) : n.geometry.clone() t.updateMatrixWorld(), r.applyMatrix(n.matrixWorld), this.system.setNavMeshGeometry(r), (this.hasLoadedNavMesh = !0) }, }) }, 1465: function (e, t, n) { const { Pathfinding: r } = n(6594), i = new r(), o = 'level' e.exports = AFRAME.registerSystem('nav', { init: function () { ;(this.navMesh = null), (this.agents = new Set()) }, setNavMeshGeometry: function (e) { ;(this.navMesh = new THREE.Mesh(e)), i.setZoneData(o, r.createZone(e)), Array.from(this.agents).forEach((e) => e.updateNavLocation()) }, getNavMesh: function () { return this.navMesh }, addAgent: function (e) { this.agents.add(e) }, removeAgent: function (e) { this.agents.delete(e) }, getPath: function (e, t, n) { return this.navMesh ? i.findPath(e, t, o, n) : null }, getGroup: function (e) { return this.navMesh ? i.getGroup(o, e) : null }, getNode: function (e, t) { return this.navMesh ? i.getClosestNode(e, o, t, !0) : null }, clampStep: function (e, t, n, r, a) { return this.navMesh ? r ? i.clampStep(e, t, r, o, n, a) : (a.copy(t), this.getNode(t, n)) : (a.copy(t), null) }, }) }, 386: function (e) { e.exports = AFRAME.registerPrimitive('a-grid', { defaultComponents: { geometry: { primitive: 'plane', width: 75, height: 75 }, rotation: { x: -90, y: 0, z: 0 }, material: { src: 'url(https://cdn.jsdelivr.net/gh/donmccurdy/aframe-extras@v1.16.3/assets/grid.png)', repeat: '75 75', }, }, mappings: { width: 'geometry.width', height: 'geometry.height', src: 'material.src' }, }) }, 3535: function (e, t, n) { const r = n(3471), i = n(2667) ;(e.exports.Primitive = AFRAME.registerPrimitive('a-hexgrid', { defaultComponents: { hexgrid: {} }, mappings: { src: 'hexgrid.src' }, })), (e.exports.Component = AFRAME.registerComponent('hexgrid', { dependencies: ['material'], schema: { src: { type: 'asset' } }, init: function () { const e = this.data e.src ? fetch(e.src) .then((e) => e.json()) .then((e) => this.addMesh(e)) : this.addMesh(i) }, addMesh: function (e) { const t = new r.HexGrid() t.fromJSON(e) const n = new r.Board(t) n.generateTilemap(), this.el.setObject3D('mesh', n.group), this.addMaterial() }, addMaterial: function () { const e = (this.el.components.material || {}).material e && this.el.object3D.traverse((t) => { t.isMesh && (t.material = e) }) }, remove: function () { this.el.removeObject3D('mesh') }, })) }, 9307: function (e) { ;(e.exports.Primitive = AFRAME.registerPrimitive('a-ocean', { defaultComponents: { ocean: {}, rotation: { x: -90, y: 0, z: 0 } }, mappings: { width: 'ocean.width', depth: 'ocean.depth', density: 'ocean.density', amplitude: 'ocean.amplitude', amplitudeVariance: 'ocean.amplitudeVariance', speed: 'ocean.speed', speedVariance: 'ocean.speedVariance', color: 'ocean.color', opacity: 'ocean.opacity', }, })), (e.exports.Component = AFRAME.registerComponent('ocean', { schema: { width: { default: 10, min: 0 }, depth: { default: 10, min: 0 }, density: { default: 10 }, amplitude: { default: 0.1 }, amplitudeVariance: { default: 0.3 }, speed: { default: 1 }, speedVariance: { default: 2 }, color: { default: '#7AD2F7', type: 'color' }, opacity: { default: 0.8 }, }, play: function () { const e = this.el, t = this.data let n = e.components.material const r = new THREE.PlaneGeometry(t.width, t.depth, t.density, t.density) r.mergeVertices(), (this.waves = []) for (let i, o = 0, a = r.vertices.length; o < a; o++) (i = r.vertices[o]), this.waves.push({ z: i.z, ang: Math.random() * Math.PI * 2, amp: t.amplitude + Math.random() * t.amplitudeVariance, speed: (t.speed + Math.random() * t.speedVariance) / 1e3, }) n || ((n = {}), (n.material = new THREE.MeshPhongMaterial({ color: t.color, transparent: t.opacity < 1, opacity: t.opacity, shading: THREE.FlatShading, }))), (this.mesh = new THREE.Mesh(r, n.material)), e.setObject3D('mesh', this.mesh) }, remove: function () { this.el.removeObject3D('mesh') }, tick: function (e, t) { if (!t) return const n = this.mesh.geometry.vertices for (let r, i, o = 0; (r = n[o]); o++) (i = this.waves[o]), (r.z = i.z + Math.sin(i.ang) * i.amp), (i.ang += i.speed * t) this.mesh.geometry.verticesNeedUpdate = !0 }, })) }, 699: function (e) { ;(e.exports.Primitive = AFRAME.registerPrimitive('a-tube', { defaultComponents: { tube: {} }, mappings: { path: 'tube.path', segments: 'tube.segments', radius: 'tube.radius', 'radial-segments': 'tube.radialSegments', closed: 'tube.closed', }, })), (e.exports.Component = AFRAME.registerComponent('tube', { schema: { path: { default: [] }, segments: { default: 64 }, radius: { default: 1 }, radialSegments: { default: 8 }, closed: { default: !1 }, }, init: function () { const e = this.el, t = this.data let n = e.components.material if (!t.path.length) return void console.error('[a-tube] `path` property expected but not found.') const r = new THREE.CatmullRomCurve3( t.path.map(function (e) { return ( (e = e.split(' ')), new THREE.Vector3(Number(e[0]), Number(e[1]), Number(e[2])) ) }), ), i = new THREE.TubeGeometry(r, t.segments, t.radius, t.radialSegments, t.closed) n || ((n = {}), (n.material = new THREE.MeshPhongMaterial())), (this.mesh = new THREE.Mesh(i, n.material)), this.el.setObject3D('mesh', this.mesh) }, update: function (e) { Object.keys(e).length && (this.remove(), this.init()) }, remove: function () { this.mesh && this.el.removeObject3D('mesh') }, })) }, 8993: function (e, t, n) { n(386), n(3535), n(9307), n(699) }, 1359: function (e, t, n) { if ('undefined' === typeof AFRAME) throw new Error('Component attempted to register before AFRAME was available.') let r = n(2539) 'default' in r && (r = r.default) let i = n(1398) 'default' in i && (i = i.default) const o = function (e) { return 'string' === typeof e ? JSON.parse(e) : e }, a = function (e) { if ('function' === typeof e) return e const t = eval try { return t('(' + e + ')') } catch (n) {} return null }, s = function (e) { return isNaN(parseFloat(e)) ? (a(e) ? a(e) : e) : parseFloat(e) } AFRAME.registerComponent('forcegraph', { schema: { jsonUrl: { type: 'string', default: '' }, nodes: { parse: o, default: [] }, links: { parse: o, default: [] }, numDimensions: { type: 'number', default: 3 }, dagMode: { type: 'string', default: '' }, dagLevelDistance: { type: 'number', default: 0 }, dagNodeFilter: { parse: a, function: () => !0 }, onDagError: { parse: a, default: void 0 }, nodeRelSize: { type: 'number', default: 4 }, nodeId: { type: 'string', default: 'id' }, nodeVal: { parse: s, default: 'val' }, nodeResolution: { type: 'number', default: 8 }, nodeVisibility: { parse: s, default: !0 }, nodeColor: { parse: s, default: 'color' }, nodeAutoColorBy: { parse: s, default: '' }, nodeOpacity: { type: 'number', default: 0.75 }, nodeThreeObject: { parse: s, default: null }, nodeThreeObjectExtend: { parse: s, default: !1 }, linkSource: { type: 'string', default: 'source' }, linkTarget: { type: 'string', default: 'target' }, linkVisibility: { parse: s, default: !0 }, linkColor: { parse: s, default: 'color' }, linkAutoColorBy: { parse: s, default: '' }, linkOpacity: { type: 'number', default: 0.2 }, linkWidth: { parse: s, default: 0 }, linkResolution: { type: 'number', default: 6 }, linkCurvature: { parse: s, default: 0 }, linkCurveRotation: { parse: s, default: 0 }, linkMaterial: { parse: s, default: null }, linkThreeObject: { parse: s, default: null }, linkThreeObjectExtend: { parse: s, default: !1 }, linkPositionUpdate: { parse: a, default: null }, linkDirectionalArrowLength: { parse: s, default: 0 }, linkDirectionalArrowColor: { parse: s, default: null }, linkDirectionalArrowRelPos: { parse: s, default: 0.5 }, linkDirectionalArrowResolution: { type: 'number', default: 8 }, linkDirectionalParticles: { parse: s, default: 0 }, linkDirectionalParticleSpeed: { parse: s, default: 0.01 }, linkDirectionalParticleWidth: { parse: s, default: 0.5 }, linkDirectionalParticleColor: { parse: s, default: null }, linkDirectionalParticleResolution: { type: 'number', default: 4 }, onNodeHover: { parse: a, default: () => {} }, onLinkHover: { parse: a, default: () => {} }, onNodeClick: { parse: a, default: () => {} }, onLinkClick: { parse: a, default: () => {} }, forceEngine: { type: 'string', default: 'd3' }, d3AlphaMin: { type: 'number', default: 0 }, d3AlphaDecay: { type: 'number', default: 0.0228 }, d3VelocityDecay: { type: 'number', default: 0.4 }, ngraphPhysics: { parse: o, default: null }, warmupTicks: { type: 'int', default: 0 }, cooldownTicks: { type: 'int', default: 1e18 }, cooldownTime: { type: 'int', default: 15e3 }, onEngineTick: { parse: a, default: function () {} }, onEngineStop: { parse: a, default: function () {} }, }, getGraphBbox: function () { return this.forceGraph || (this.forceGraph = new i()), this.forceGraph.getGraphBbox() }, emitParticle: function () { this.forceGraph || (this.forceGraph = new i()) const e = this.forceGraph, t = e.emitParticle.apply(e, arguments) return t === e ? this : t }, d3Force: function () { this.forceGraph || (this.forceGraph = new i()) const e = this.forceGraph, t = e.d3Force.apply(e, arguments) return t === e ? this : t }, d3ReheatSimulation: function () { return this.forceGraph && this.forceGraph.d3ReheatSimulation(), this }, refresh: function () { return this.forceGraph && this.forceGraph.refresh(), this }, init: function () { const e = (this.state = {}) ;(e.infoEl = document.createElement('a-text')), e.infoEl.setAttribute('position', '0 -0.1 -1'), e.infoEl.setAttribute('width', 1), e.infoEl.setAttribute('align', 'center'), e.infoEl.setAttribute('color', 'lavender') const t = document.querySelector('a-entity[camera], a-camera') t.appendChild(e.infoEl), (e.cameraObj = t.object3D.children.filter(function (e) { return 'PerspectiveCamera' === e.type })[0]), this.el.sceneEl.addEventListener('camera-set-active', function (t) { e.cameraObj = t.detail.cameraEl.components.camera.camera }), this.forceGraph || (this.forceGraph = new i()), this.forceGraph .onFinishUpdate(() => this.el.setObject3D('forcegraphGroup', this.forceGraph)) .onLoading(() => e.infoEl.setAttribute('value', 'Loading...')) .onFinishLoading(() => e.infoEl.setAttribute('value', '')), this.el.addEventListener('raycaster-intersected', (t) => (e.hoverDetail = t.detail)), this.el.addEventListener( 'raycaster-intersected-cleared', (t) => (e.hoverDetail = t.detail), ), this.el.addEventListener( 'click', () => e.hoverObj && this.data[ 'on' + ('node' === e.hoverObj.__graphObjType ? 'Node' : 'Link') + 'Click' ](e.hoverObj.__data), ) }, remove: function () { this.state.infoEl.remove(), this.el.removeObject3D('forcegraphGroup') }, update: function (e) { const t = this, n = this.data, r = AFRAME.utils.diff(n, e) ;[ 'jsonUrl', 'numDimensions', 'dagMode', 'dagLevelDistance', 'dagNodeFilter', 'onDagError', 'nodeRelSize', 'nodeId', 'nodeVal', 'nodeResolution', 'nodeVisibility', 'nodeColor', 'nodeAutoColorBy', 'nodeOpacity', 'nodeThreeObject', 'nodeThreeObjectExtend', 'linkSource', 'linkTarget', 'linkVisibility', 'linkColor', 'linkAutoColorBy', 'linkOpacity', 'linkWidth', 'linkResolution', 'linkCurvature', 'linkCurveRotation', 'linkMaterial', 'linkThreeObject', 'linkThreeObjectExtend', 'linkPositionUpdate', 'linkDirectionalArrowLength', 'linkDirectionalArrowColor', 'linkDirectionalArrowRelPos', 'linkDirectionalArrowResolution', 'linkDirectionalParticles', 'linkDirectionalParticleSpeed', 'linkDirectionalParticleWidth', 'linkDirectionalParticleColor', 'linkDirectionalParticleResolution', 'forceEngine', 'd3AlphaMin', 'd3AphaDecay', 'd3VelocityDecay', 'ngraphPhysics', 'warmupTicks', 'cooldownTicks', 'cooldownTime', 'onEngineTick', 'onEngineStop', ] .filter(function (e) { return e in r }) .forEach(function (e) { t.forceGraph[e]('' !== n[e] ? n[e] : null) }), ('nodes' in r || 'links' in r) && t.forceGraph.graphData({ nodes: n.nodes, links: n.links }) }, tick: function (e, t) { const n = this.state, r = this.data, i = n.hoverDetail ? n.hoverDetail.getIntersection ? n.hoverDetail.getIntersection(this.el) : n.hoverDetail.intersection || void 0 : void 0 let o = i ? i.object : void 0 for (; o && !o.hasOwnProperty('__graphObjType'); ) o = o.parent if (o !== n.hoverObj) { const e = n.hoverObj ? n.hoverObj.__graphObjType : null, t = n.hoverObj ? n.hoverObj.__data : null, i = o ? o.__graphObjType : null, a = o ? o.__data : null e && e !== i && r['on' + ('node' === e ? 'Node' : 'Link') + 'Hover'](null, t), i && r['on' + ('node' === i ? 'Node' : 'Link') + 'Hover'](a, e === i ? t : null), (n.hoverObj = o) } this.forceGraph.tickFrame() }, }) }, 296: function (e) { function t(e, t, n) { var r, i, o, a, s function u() { var l = Date.now() - a l < t && l >= 0 ? (r = setTimeout(u, t - l)) : ((r = null), n || ((s = e.apply(o, i)), (o = i = null))) } null == t && (t = 100) var l = function () { ;(o = this), (i = arguments), (a = Date.now()) var l = n && !r return r || (r = setTimeout(u, t)), l && ((s = e.apply(o, i)), (o = i = null)), s } return ( (l.clear = function () { r && (clearTimeout(r), (r = null)) }), (l.flush = function () { r && ((s = e.apply(o, i)), (o = i = null), clearTimeout(r), (r = null)) }), l ) } ;(t.debounce = t), (e.exports = t) }, 3879: function (e, t, n) { var r = n(7236), i = n(6189), o = { float: 'cssFloat' }, a = n(3379) function s(e, t, n) { var s = o[t] if ( ('undefined' === typeof s && (s = (function (e) { var t = i(e), n = r(t) return (o[t] = o[e] = o[n] = n), n })(t)), s) ) { if (void 0 === n) return e.style[s] e.style[s] = a(s, n) } } function u(e, t) { for (var n in t) t.hasOwnProperty(n) && s(e, n, t[n]) } function l() { 2 === arguments.length ? 'string' === typeof arguments[1] ? (arguments[0].style.cssText = arguments[1]) : u(arguments[0], arguments[1]) : s(arguments[0], arguments[1], arguments[2]) } ;(e.exports = l), (e.exports.set = l), (e.exports.get = function (e, t) { return Array.isArray(t) ? t.reduce(function (t, n) { return (t[n] = s(e, n || '')), t }, {}) : s(e, t || '') }) }, 3869: function (e, t, n) { 'use strict' n.d(t, { M: function () { return p }, }) var r = n(1439), i = n(7294), o = n(6717) var a = n(8626), s = n(5930), u = 0 function l() { var e = u return u++, e } var c = function (e) { var t = e.children, n = e.initial, r = e.isPresent, o = e.onExitComplete, u = e.custom, c = e.presenceAffectsLayout, f = (0, s.h)(d), h = (0, s.h)(l), p = (0, i.useMemo)( function () { return { id: h, initial: n, isPresent: r, custom: u, onExitComplete: function (e) { f.set(e, !0) var t = !0 f.forEach(function (e) { e || (t = !1) }), t && (null === o || void 0 === o || o()) }, register: function (e) { return ( f.set(e, !1), function () { return f.delete(e) } ) }, } }, c ? void 0 : [r], ) return ( (0, i.useMemo)( function () { f.forEach(function (e, t) { return f.set(t, !1) }) }, [r], ), i.useEffect( function () { !r && !f.size && (null === o || void 0 === o || o()) }, [r], ), i.createElement(a.O.Provider, { value: p }, t) ) } function d() { return new Map() } var f = n(9870) function h(e) { return e.key || '' } var p = function (e) { var t = e.children, n = e.custom, a = e.initial, s = void 0 === a || a, u = e.onExitComplete, l = e.exitBeforeEnter, d = e.presenceAffectsLayout, p = void 0 === d || d, v = (function () { var e = (0, i.useRef)(!1), t = (0, r.CR)((0, i.useState)(0), 2), n = t[0], a = t[1] return ( (0, o.z)(function () { return (e.current = !0) }), (0, i.useCallback)( function () { !e.current && a(n + 1) }, [n], ) ) })(), m = (0, i.useContext)(f.WH) ;(0, f.Md)(m) && (v = m.forceUpdate) var g = (0, i.useRef)(!0), y = (function (e) { var t = [] return ( i.Children.forEach(e, function (e) { ;(0, i.isValidElement)(e) && t.push(e) }), t ) })(t), b = (0, i.useRef)(y), w = (0, i.useRef)(new Map()).current, x = (0, i.useRef)(new Set()).current if ( ((function (e, t) { e.forEach(function (e) { var n = h(e) t.set(n, e) }) })(y, w), g.current) ) return ( (g.current = !1), i.createElement( i.Fragment, null, y.map(function (e) { return i.createElement( c, { key: h(e), isPresent: !0, initial: !!s && void 0, presenceAffectsLayout: p }, e, ) }), ) ) for ( var E = (0, r.ev)([], (0, r.CR)(y)), k = b.current.map(h), _ = y.map(h), T = k.length, O = 0; O < T; O++ ) { var C = k[O] ;-1 === _.indexOf(C) ? x.add(C) : x.delete(C) } return ( l && x.size && (E = []), x.forEach(function (e) { if (-1 === _.indexOf(e)) { var t = w.get(e) if (t) { var r = k.indexOf(e) E.splice( r, 0, i.createElement( c, { key: h(t), isPresent: !1, onExitComplete: function () { w.delete(e), x.delete(e) var t = b.current.findIndex(function (t) { return t.key === e }) b.current.splice(t, 1), x.size || ((b.current = y), v(), u && u()) }, custom: n, presenceAffectsLayout: p, }, t, ), ) } } }), (E = E.map(function (e) { var t = e.key return x.has(t) ? e : i.createElement(c, { key: h(e), isPresent: !0, presenceAffectsLayout: p }, e) })), (b.current = E), i.createElement( i.Fragment, null, x.size ? E : E.map(function (e) { return (0, i.cloneElement)(e) }), ) ) } }, 7646: function (e, t, n) { 'use strict' var r, i n.d(t, { z: function () { return r }, c: function () { return i }, }), (function (e) { ;(e[(e.Entering = 0)] = 'Entering'), (e[(e.Present = 1)] = 'Present'), (e[(e.Exiting = 2)] = 'Exiting') })(r || (r = {})), (function (e) { ;(e[(e.Hide = 0)] = 'Hide'), (e[(e.Show = 1)] = 'Show') })(i || (i = {})) }, 8626: function (e, t, n) { 'use strict' n.d(t, { O: function () { return r }, }) var r = (0, n(7294).createContext)(null) }, 9870: function (e, t, n) { 'use strict' n.d(t, { bg: function () { return p }, WH: function () { return h }, Md: function () { return v }, }) var r = n(7294), i = n(1439), o = n(9839), a = n(8839), s = n(7565), u = n(519), l = n(7646), c = { layoutReady: function (e) { return e.notifyLayoutReady() }, } function d() { var e = new Set() return { add: function (t) { return e.add(t) }, flush: function (t) { var n = void 0 === t ? c : t, r = n.layoutReady, d = n.parent ;(0, s.U)(function (t, n) { var s = Array.from(e).sort(u._), c = d ? (0, a.kv)(d) : [] n(function () { ;(0, i.ev)((0, i.ev)([], (0, i.CR)(c)), (0, i.CR)(s)).forEach(function (e) { return e.resetTransform() }) }), t(function () { s.forEach(a.de) }), n(function () { c.forEach(function (e) { return e.restoreTransform() }), s.forEach(r) }), t(function () { s.forEach(function (e) { e.isPresent && (e.presence = l.z.Present) }) }), n(function () { o.iW.preRender(), o.iW.render() }), t(function () { o.ZP.postRender(function () { return s.forEach(f) }), e.clear() }) }), (0, s.R)() }, } } function f(e) { e.prevViewportBox = e.projection.target } var h = (0, r.createContext)(d()), p = (0, r.createContext)(d()) function v(e) { return !!e.forceUpdate } }, 7554: function (e, t, n) { 'use strict' n.d(t, { E: function () { return Oo }, }) var r = n(1439), i = n(7294), o = function (e) { return { isEnabled: function (t) { return e.some(function (e) { return !!t[e] }) }, } }, a = { measureLayout: o(['layout', 'layoutId', 'drag', '_layoutResetTransform']), animation: o([ 'animate', 'exit', 'variants', 'whileHover', 'whileTap', 'whileFocus', 'whileDrag', ]), exit: o(['exit']), drag: o(['drag', 'dragControls']), focus: o(['whileFocus']), hover: o(['whileHover', 'onHoverStart', 'onHoverEnd']), tap: o(['whileTap', 'onTap', 'onTapStart', 'onTapCancel']), pan: o(['onPan', 'onPanStart', 'onPanSessionStart', 'onPanEnd']), layoutAnimation: o(['layout', 'layoutId']), } var s = (0, i.createContext)({ strict: !1 }), u = Object.keys(a), l = u.length var c = (0, i.createContext)({ transformPagePoint: function (e) { return e }, isStatic: !1, }), d = (0, i.createContext)({}) var f = n(8626), h = n(5930) function p() { var e = (0, i.useContext)(f.O) if (null === e) return [!0, null] var t = e.isPresent, n = e.onExitComplete, r = e.register, o = y() ;(0, i.useEffect)(function () { return r(o) }, []) return !t && n ? [ !1, function () { return null === n || void 0 === n ? void 0 : n(o) }, ] : [!0] } function v(e) { return null === e || e.isPresent } var m = 0, g = function () { return m++ }, y = function () { return (0, h.h)(g) }, b = (0, i.createContext)(null), w = 'undefined' !== typeof window, x = w ? i.useLayoutEffect : i.useEffect function E(e, t, n, o) { var a = (0, i.useContext)(c), u = (0, i.useContext)(s), l = (0, i.useContext)(d).visualElement, h = (0, i.useContext)(f.O), p = (function (e) { var t = e.layoutId, n = (0, i.useContext)(b) return n && void 0 !== t ? n + '-' + t : t })(n), m = (0, i.useRef)(void 0) o || (o = u.renderer), !m.current && o && (m.current = o(e, { visualState: t, parent: l, props: (0, r.pi)((0, r.pi)({}, n), { layoutId: p }), presenceId: null === h || void 0 === h ? void 0 : h.id, blockInitialAnimation: !1 === (null === h || void 0 === h ? void 0 : h.initial), })) var g = m.current return ( x(function () { g && (g.setProps((0, r.pi)((0, r.pi)((0, r.pi)({}, a), n), { layoutId: p })), (g.isPresent = v(h)), (g.isPresenceRoot = !l || l.presenceId !== (null === h || void 0 === h ? void 0 : h.id)), g.syncRender()) }), (0, i.useEffect)(function () { var e g && (null === (e = g.animationState) || void 0 === e || e.animateChanges()) }), x(function () { return function () { return null === g || void 0 === g ? void 0 : g.notifyUnmount() } }, []), g ) } function k(e) { return 'object' === typeof e && Object.prototype.hasOwnProperty.call(e, 'current') } function _(e) { return Array.isArray(e) } function T(e) { return 'string' === typeof e || _(e) } function O(e, t, n, r, i) { var o return ( void 0 === r && (r = {}), void 0 === i && (i = {}), 'string' === typeof t && (t = null === (o = e.variants) || void 0 === o ? void 0 : o[t]), 'function' === typeof t ? t(null !== n && void 0 !== n ? n : e.custom, r, i) : t ) } function C(e, t, n) { var r = e.getProps() return O( r, t, null !== n && void 0 !== n ? n : r.custom, (function (e) { var t = {} return ( e.forEachValue(function (e, n) { return (t[n] = e.get()) }), t ) })(e), (function (e) { var t = {} return ( e.forEachValue(function (e, n) { return (t[n] = e.getVelocity()) }), t ) })(e), ) } function S(e) { var t return ( 'function' === typeof (null === (t = e.animate) || void 0 === t ? void 0 : t.start) || T(e.initial) || T(e.animate) || T(e.whileHover) || T(e.whileDrag) || T(e.whileTap) || T(e.whileFocus) || T(e.exit) ) } function A(e) { return Boolean(S(e) || e.variants) } function P(e, t) { var n = (function (e, t) { if (S(e)) { var n = e.initial, r = e.animate return { initial: !1 === n || T(n) ? n : void 0, animate: T(r) ? r : void 0 } } return !1 !== e.inherit ? t : {} })(e, (0, i.useContext)(d)), r = n.initial, o = n.animate return (0, i.useMemo)( function () { return { initial: r, animate: o } }, t ? [M(r), M(o)] : [], ) } function M(e) { return Array.isArray(e) ? e.join(' ') : e } function R(e) { var t = e.preloadedFeatures, n = e.createVisualElement, o = e.useRender, f = e.useVisualState, h = e.Component return ( t && (function (e) { for (var t in e) { var n = e[t] null !== n && (a[t].Component = n) } })(t), (0, i.forwardRef)(function (e, t) { var p = (0, i.useContext)(c).isStatic, v = null, m = P(e, p), g = f(e, p) return ( !p && w && ((m.visualElement = E(h, g, e, n)), (v = (function (e, t, n) { var o = [] if (((0, i.useContext)(s), !t)) return null for (var c = 0; c < l; c++) { var d = u[c], f = a[d], h = f.isEnabled, p = f.Component h(e) && p && o.push(i.createElement(p, (0, r.pi)({ key: d }, e, { visualElement: t }))) } return o })(e, m.visualElement))), i.createElement( i.Fragment, null, i.createElement( d.Provider, { value: m }, o( h, e, (function (e, t, n) { return (0, i.useCallback)( function (r) { var i r && (null === (i = e.mount) || void 0 === i || i.call(e, r)), t && (r ? t.mount(r) : t.unmount()), n && ('function' === typeof n ? n(r) : k(n) && (n.current = r)) }, [t], ) })(g, m.visualElement, t), g, p, ), ), v, ) ) }) ) } function j(e) { function t(t, n) { return void 0 === n && (n = {}), R(e(t, n)) } var n = new Map() return new Proxy(t, { get: function (e, r) { return n.has(r) || n.set(r, t(r)), n.get(r) }, }) } var D = [ 'animate', 'circle', 'defs', 'desc', 'ellipse', 'g', 'image', 'line', 'filter', 'marker', 'mask', 'metadata', 'path', 'pattern', 'polygon', 'polyline', 'rect', 'stop', 'svg', 'switch', 'symbol', 'text', 'tspan', 'use', 'view', ] function L(e) { return 'string' === typeof e && !e.includes('-') && !!(D.indexOf(e) > -1 || /[A-Z]/.test(e)) } var N = {} var I = ['', 'X', 'Y', 'Z'], z = ['transformPerspective', 'x', 'y', 'z'] function H(e, t) { return z.indexOf(e) - z.indexOf(t) } ;['translate', 'scale', 'rotate', 'skew'].forEach(function (e) { return I.forEach(function (t) { return z.push(e + t) }) }) var B = new Set(z) function F(e) { return B.has(e) } var V = new Set(['originX', 'originY', 'originZ']) function U(e) { return V.has(e) } function G(e, t) { var n = t.layout, r = t.layoutId return F(e) || U(e) || ((n || void 0 !== r) && (!!N[e] || 'opacity' === e)) } var q = function (e) { return null !== e && 'object' === typeof e && e.getVelocity }, W = { x: 'translateX', y: 'translateY', z: 'translateZ', transformPerspective: 'perspective', } function K(e) { return e.startsWith('--') } var Z = function (e, t) { return t && 'number' === typeof e ? t.transform(e) : e } var $ = function () { return ($ = Object.assign || function (e) { for (var t, n = 1, r = arguments.length; n < r; n++) for (var i in (t = arguments[n])) Object.prototype.hasOwnProperty.call(t, i) && (e[i] = t[i]) return e }).apply(this, arguments) } Object.create Object.create var X = function (e, t) { return function (n) { return Math.max(Math.min(n, t), e) } }, Y = function (e) { return e % 1 ? Number(e.toFixed(5)) : e }, Q = /(-)?([\d]*\.?[\d])+/g, J = /(#[0-9a-f]{6}|#[0-9a-f]{3}|#(?:[0-9a-f]{2}){2,4}|(rgb|hsl)a?\((-?[\d\.]+%?[,\s]+){2,3}\s*\/*\s*[\d\.]+%?\))/gi, ee = /^(#[0-9a-f]{3}|#(?:[0-9a-f]{2}){2,4}|(rgb|hsl)a?\((-?[\d\.]+%?[,\s]+){2,3}\s*\/*\s*[\d\.]+%?\))$/i function te(e) { return 'string' === typeof e } var ne = function (e) { return { test: function (t) { return te(t) && t.endsWith(e) && 1 === t.split(' ').length }, parse: parseFloat, transform: function (t) { return '' + t + e }, } }, re = ne('deg'), ie = ne('%'), oe = ne('px'), ae = ne('vh'), se = ne('vw'), ue = $($({}, ie), { parse: function (e) { return ie.parse(e) / 100 }, transform: function (e) { return ie.transform(100 * e) }, }), le = { test: function (e) { return 'number' === typeof e }, parse: parseFloat, transform: function (e) { return e }, }, ce = $($({}, le), { transform: X(0, 1) }), de = $($({}, le), { default: 1 }), fe = (0, r.pi)((0, r.pi)({}, le), { transform: Math.round }), he = { borderWidth: oe, borderTopWidth: oe, borderRightWidth: oe, borderBottomWidth: oe, borderLeftWidth: oe, borderRadius: oe, radius: oe, borderTopLeftRadius: oe, borderTopRightRadius: oe, borderBottomRightRadius: oe, borderBottomLeftRadius: oe, width: oe, maxWidth: oe, height: oe, maxHeight: oe, size: oe, top: oe, right: oe, bottom: oe, left: oe, padding: oe, paddingTop: oe, paddingRight: oe, paddingBottom: oe, paddingLeft: oe, margin: oe, marginTop: oe, marginRight: oe, marginBottom: oe, marginLeft: oe, rotate: re, rotateX: re, rotateY: re, rotateZ: re, scale: de, scaleX: de, scaleY: de, scaleZ: de, skew: re, skewX: re, skewY: re, distance: oe, translateX: oe, translateY: oe, translateZ: oe, x: oe, y: oe, z: oe, perspective: oe, transformPerspective: oe, opacity: ce, originX: ue, originY: ue, originZ: oe, zIndex: fe, fillOpacity: ce, strokeOpacity: ce, numOctaves: fe, } function pe(e, t, n, r, i, o, a, s) { var u, l = e.style, c = e.vars, d = e.transform, f = e.transformKeys, h = e.transformOrigin f.length = 0 var p = !1, v = !1, m = !0 for (var g in t) { var y = t[g] if (K(g)) c[g] = y else { var b = he[g], w = Z(y, b) if (F(g)) { if (((p = !0), (d[g] = w), f.push(g), !m)) continue y !== (null !== (u = b.default) && void 0 !== u ? u : 0) && (m = !1) } else if (U(g)) (h[g] = w), (v = !0) else if ( (null === n || void 0 === n ? void 0 : n.isHydrated) && (null === r || void 0 === r ? void 0 : r.isHydrated) && N[g] ) { var x = N[g].process(y, r, n), E = N[g].applyTo if (E) for (var k = E.length, _ = 0; _ < k; _++) l[E[_]] = x else l[g] = x } else l[g] = w } } r && n && a && s ? ((l.transform = a(r.deltaFinal, r.treeScale, p ? d : void 0)), o && (l.transform = o(d, l.transform)), (l.transformOrigin = s(r))) : (p && (l.transform = (function (e, t, n, r) { var i = e.transform, o = e.transformKeys, a = t.enableHardwareAcceleration, s = void 0 === a || a, u = t.allowTransformNone, l = void 0 === u || u, c = '' o.sort(H) for (var d = !1, f = o.length, h = 0; h < f; h++) { var p = o[h] ;(c += (W[p] || p) + '(' + i[p] + ') '), 'z' === p && (d = !0) } return ( !d && s ? (c += 'translateZ(0)') : (c = c.trim()), r ? (c = r(i, n ? '' : c)) : l && n && (c = 'none'), c ) })(e, i, m, o)), v && (l.transformOrigin = (function (e) { var t = e.originX, n = void 0 === t ? '50%' : t, r = e.originY, i = void 0 === r ? '50%' : r, o = e.originZ return n + ' ' + i + ' ' + (void 0 === o ? 0 : o) })(h))) } var ve = function () { return { style: {}, transform: {}, transformKeys: [], transformOrigin: {}, vars: {} } } function me(e, t, n) { for (var r in t) q(t[r]) || G(r, n) || (e[r] = t[r]) } function ge(e, t, n) { var o = {} return ( me(o, e.style || {}, e), Object.assign( o, (function (e, t, n) { var o = e.transformTemplate return (0, i.useMemo)( function () { var e = { style: {}, transform: {}, transformKeys: [], transformOrigin: {}, vars: {}, } pe(e, t, void 0, void 0, { enableHardwareAcceleration: !n }, o) var i = e.vars, a = e.style return (0, r.pi)((0, r.pi)({}, i), a) }, [t], ) })(e, t, n), ), e.transformValues && (o = e.transformValues(o)), o ) } function ye(e, t, n) { var r = {}, i = ge(e, t, n) return ( Boolean(e.drag) && ((r.draggable = !1), (i.userSelect = i.WebkitUserSelect = i.WebkitTouchCallout = 'none'), (i.touchAction = !0 === e.drag ? 'none' : 'pan-' + ('x' === e.drag ? 'y' : 'x'))), (r.style = i), r ) } var be = new Set([ 'initial', 'animate', 'exit', 'style', 'variants', 'transition', 'transformTemplate', 'transformValues', 'custom', 'inherit', 'layout', 'layoutId', '_layoutResetTransform', 'onLayoutAnimationComplete', 'onViewportBoxUpdate', 'onLayoutMeasure', 'onBeforeLayoutMeasure', 'onAnimationStart', 'onAnimationComplete', 'onUpdate', 'onDragStart', 'onDrag', 'onDragEnd', 'onMeasureDragConstraints', 'onDirectionLock', 'onDragTransitionEnd', 'drag', 'dragControls', 'dragListener', 'dragConstraints', 'dragDirectionLock', '_dragX', '_dragY', 'dragElastic', 'dragMomentum', 'dragPropagation', 'dragTransition', 'whileDrag', 'onPan', 'onPanStart', 'onPanEnd', 'onPanSessionStart', 'onTap', 'onTapStart', 'onTapCancel', 'onHoverStart', 'onHoverEnd', 'whileFocus', 'whileTap', 'whileHover', ]) function we(e) { return be.has(e) } var xe = function (e) { return !we(e) } try { var Ee = n(6600).Z xe = function (e) { return e.startsWith('on') ? !we(e) : Ee(e) } } catch (Co) {} function ke(e, t, n) { return 'string' === typeof e ? e : oe.transform(t + n * e) } var _e = function (e, t) { return oe.transform(e * t) }, Te = { offset: 'stroke-dashoffset', array: 'stroke-dasharray' }, Oe = { offset: 'strokeDashoffset', array: 'strokeDasharray' } function Ce(e, t, n, i, o, a, s, u) { var l = t.attrX, c = t.attrY, d = t.originX, f = t.originY, h = t.pathLength, p = t.pathSpacing, v = void 0 === p ? 1 : p, m = t.pathOffset, g = void 0 === m ? 0 : m pe( e, (0, r._T)(t, [ 'attrX', 'attrY', 'originX', 'originY', 'pathLength', 'pathSpacing', 'pathOffset', ]), n, i, o, a, s, u, ), (e.attrs = e.style), (e.style = {}) var y = e.attrs, b = e.style, w = e.dimensions, x = e.totalPathLength y.transform && (w && (b.transform = y.transform), delete y.transform), w && (void 0 !== d || void 0 !== f || b.transform) && (b.transformOrigin = (function (e, t, n) { return ke(t, e.x, e.width) + ' ' + ke(n, e.y, e.height) })(w, void 0 !== d ? d : 0.5, void 0 !== f ? f : 0.5)), void 0 !== l && (y.x = l), void 0 !== c && (y.y = c), void 0 !== x && void 0 !== h && (function (e, t, n, r, i, o) { void 0 === r && (r = 1), void 0 === i && (i = 0), void 0 === o && (o = !0) var a = o ? Te : Oe e[a.offset] = _e(-i, t) var s = _e(n, t), u = _e(r, t) e[a.array] = s + ' ' + u })(y, x, h, v, g, !1) } var Se = function () { return (0, r.pi)( (0, r.pi)( {}, { style: {}, transform: {}, transformKeys: [], transformOrigin: {}, vars: {} }, ), { attrs: {} }, ) } function Ae(e, t) { var n = (0, i.useMemo)( function () { var n = Se() return ( Ce(n, t, void 0, void 0, { enableHardwareAcceleration: !1 }, e.transformTemplate), (0, r.pi)((0, r.pi)({}, n.attrs), { style: (0, r.pi)({}, n.style) }) ) }, [t], ) if (e.style) { var o = {} me(o, e.style, e), (n.style = (0, r.pi)((0, r.pi)({}, o), n.style)) } return n } function Pe(e) { void 0 === e && (e = !1) return function (t, n, o, a, s) { var u = a.latestValues, l = (L(t) ? Ae : ye)(n, u, s), c = (function (e, t, n) { var r = {} for (var i in e) (xe(i) || (!0 === n && we(i)) || (!t && !we(i))) && (r[i] = e[i]) return r })(n, 'string' === typeof t, e), d = (0, r.pi)((0, r.pi)((0, r.pi)({}, c), l), { ref: o }) return (0, i.createElement)(t, d) } } var Me = /([a-z])([A-Z])/g, Re = function (e) { return e.replace(Me, '$1-$2').toLowerCase() } function je(e, t) { var n = t.style, r = t.vars for (var i in (Object.assign(e.style, n), r)) e.style.setProperty(i, r[i]) } var De = new Set([ 'baseFrequency', 'diffuseConstant', 'kernelMatrix', 'kernelUnitLength', 'keySplines', 'keyTimes', 'limitingConeAngle', 'markerHeight', 'markerWidth', 'numOctaves', 'targetX', 'targetY', 'surfaceScale', 'specularConstant', 'specularExponent', 'stdDeviation', 'tableValues', 'viewBox', 'gradientTransform', ]) function Le(e, t) { for (var n in (je(e, t), t.attrs)) e.setAttribute(De.has(n) ? n : Re(n), t.attrs[n]) } function Ne(e) { var t = e.style, n = {} for (var r in t) (q(t[r]) || G(r, e)) && (n[r] = t[r]) return n } function Ie(e) { var t = Ne(e) for (var n in e) { if (q(e[n])) t['x' === n || 'y' === n ? 'attr' + n.toUpperCase() : n] = e[n] } return t } function ze(e) { return 'object' === typeof e && 'function' === typeof e.start } var He = function (e) { return Array.isArray(e) } function Be(e) { var t, n = q(e) ? e.get() : e return (t = n), Boolean(t && 'object' === typeof t && t.mix && t.toValue) ? n.toValue() : n } function Fe(e, t, n, r) { var i = e.scrapeMotionValuesFromProps, o = e.createRenderState, a = e.onMount, s = { latestValues: Ue(t, n, r, i), renderState: o() } return ( a && (s.mount = function (e) { return a(t, e, s) }), s ) } var Ve = function (e) { return function (t, n) { var r = (0, i.useContext)(d), o = (0, i.useContext)(f.O) return n ? Fe(e, t, r, o) : (0, h.h)(function () { return Fe(e, t, r, o) }) } } function Ue(e, t, n, i) { var o = {}, a = !1 === (null === n || void 0 === n ? void 0 : n.initial), s = i(e) for (var u in s) o[u] = Be(s[u]) var l = e.initial, c = e.animate, d = S(e), f = A(e) t && f && !d && !1 !== e.inherit && ((null !== l && void 0 !== l) || (l = t.initial), (null !== c && void 0 !== c) || (c = t.animate)) var h = a || !1 === l ? c : l h && 'boolean' !== typeof h && !ze(h) && (Array.isArray(h) ? h : [h]).forEach(function (t) { var n = O(e, t) if (n) { var i = n.transitionEnd n.transition var a = (0, r._T)(n, ['transitionEnd', 'transition']) for (var s in a) o[s] = a[s] for (var s in i) o[s] = i[s] } }) return o } var Ge = { useVisualState: Ve({ scrapeMotionValuesFromProps: Ie, createRenderState: Se, onMount: function (e, t, n) { var r = n.renderState, i = n.latestValues try { r.dimensions = 'function' === typeof t.getBBox ? t.getBBox() : t.getBoundingClientRect() } catch (o) { r.dimensions = { x: 0, y: 0, width: 0, height: 0 } } 'path' === t.tagName && (r.totalPathLength = t.getTotalLength()), Ce(r, i, void 0, void 0, { enableHardwareAcceleration: !1 }, e.transformTemplate), Le(t, r) }, }), } var qe, We = { useVisualState: Ve({ scrapeMotionValuesFromProps: Ne, createRenderState: ve }) } function Ke(e, t, n, r) { return ( e.addEventListener(t, n, r), function () { return e.removeEventListener(t, n, r) } ) } function Ze(e, t, n, r) { ;(0, i.useEffect)( function () { var i = e.current if (n && i) return Ke(i, t, n, r) }, [e, t, n, r], ) } function $e(e) { return 'undefined' !== typeof PointerEvent && e instanceof PointerEvent ? !('mouse' !== e.pointerType) : e instanceof MouseEvent } function Xe(e) { return !!e.touches } !(function (e) { ;(e.Animate = 'animate'), (e.Hover = 'whileHover'), (e.Tap = 'whileTap'), (e.Drag = 'whileDrag'), (e.Focus = 'whileFocus'), (e.Exit = 'exit') })(qe || (qe = {})) var Ye = { pageX: 0, pageY: 0 } function Qe(e, t) { void 0 === t && (t = 'page') var n = e.touches[0] || e.changedTouches[0] || Ye return { x: n[t + 'X'], y: n[t + 'Y'] } } function Je(e, t) { return void 0 === t && (t = 'page'), { x: e[t + 'X'], y: e[t + 'Y'] } } function et(e, t) { return void 0 === t && (t = 'page'), { point: Xe(e) ? Qe(e, t) : Je(e, t) } } var tt = function (e, t) { void 0 === t && (t = !1) var n, r = function (t) { return e(t, et(t)) } return t ? ((n = r), function (e) { var t = e instanceof MouseEvent ;(!t || (t && 0 === e.button)) && n(e) }) : r }, nt = { pointerdown: 'mousedown', pointermove: 'mousemove', pointerup: 'mouseup', pointercancel: 'mousecancel', pointerover: 'mouseover', pointerout: 'mouseout', pointerenter: 'mouseenter', pointerleave: 'mouseleave', }, rt = { pointerdown: 'touchstart', pointermove: 'touchmove', pointerup: 'touchend', pointercancel: 'touchcancel', } function it(e) { return w && null === window.onpointerdown ? e : w && null === window.ontouchstart ? rt[e] : w && null === window.onmousedown ? nt[e] : e } function ot(e, t, n, r) { return Ke(e, it(t), tt(n, 'pointerdown' === t), r) } function at(e, t, n, r) { return Ze(e, it(t), n && tt(n, 'pointerdown' === t), r) } function st(e) { var t = null return function () { return ( null === t && ((t = e), function () { t = null }) ) } } var ut = st('dragHorizontal'), lt = st('dragVertical') function ct(e) { var t = !1 if ('y' === e) t = lt() else if ('x' === e) t = ut() else { var n = ut(), r = lt() n && r ? (t = function () { n(), r() }) : (n && n(), r && r()) } return t } function dt() { var e = ct(!0) return !e || (e(), !1) } function ft(e, t, n) { return function (r, i) { var o $e(r) && !dt() && (null === n || void 0 === n || n(r, i), null === (o = e.animationState) || void 0 === o || o.setActive(qe.Hover, t)) } } var ht = function (e, t) { return !!t && (e === t || ht(e, t.parentElement)) }, pt = n(6717), vt = function (e, t) { return function (n) { return t(e(n)) } }, mt = function () { for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t] return e.reduce(vt) } var gt = function (e) { return function (t) { return e(t), null } }, yt = { tap: gt(function (e) { var t = e.onTap, n = e.onTapStart, r = e.onTapCancel, o = e.whileTap, a = e.visualElement, s = t || n || r || o, u = (0, i.useRef)(!1), l = (0, i.useRef)(null) function c() { var e null === (e = l.current) || void 0 === e || e.call(l), (l.current = null) } function d() { var e return ( c(), (u.current = !1), null === (e = a.animationState) || void 0 === e || e.setActive(qe.Tap, !1), !dt() ) } function f(e, n) { d() && (ht(a.getInstance(), e.target) ? null === t || void 0 === t || t(e, n) : null === r || void 0 === r || r(e, n)) } function h(e, t) { d() && (null === r || void 0 === r || r(e, t)) } at( a, 'pointerdown', s ? function (e, t) { var r c(), u.current || ((u.current = !0), (l.current = mt( ot(window, 'pointerup', f), ot(window, 'pointercancel', h), )), null === n || void 0 === n || n(e, t), null === (r = a.animationState) || void 0 === r || r.setActive(qe.Tap, !0)) } : void 0, ), (0, pt.z)(c) }), focus: gt(function (e) { var t = e.whileFocus, n = e.visualElement Ze( n, 'focus', t ? function () { var e null === (e = n.animationState) || void 0 === e || e.setActive(qe.Focus, !0) } : void 0, ), Ze( n, 'blur', t ? function () { var e null === (e = n.animationState) || void 0 === e || e.setActive(qe.Focus, !1) } : void 0, ) }), hover: gt(function (e) { var t = e.onHoverStart, n = e.onHoverEnd, r = e.whileHover, i = e.visualElement at(i, 'pointerenter', t || r ? ft(i, !0, t) : void 0), at(i, 'pointerleave', n || r ? ft(i, !1, n) : void 0) }), } function bt(e, t) { if (!Array.isArray(t)) return !1 var n = t.length if (n !== e.length) return !1 for (var r = 0; r < n; r++) if (t[r] !== e[r]) return !1 return !0 } var wt = function () { return (wt = Object.assign || function (e) { for (var t, n = 1, r = arguments.length; n < r; n++) for (var i in (t = arguments[n])) Object.prototype.hasOwnProperty.call(t, i) && (e[i] = t[i]) return e }).apply(this, arguments) } function xt(e, t) { var n = {} for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && t.indexOf(r) < 0 && (n[r] = e[r]) if (null != e && 'function' === typeof Object.getOwnPropertySymbols) { var i = 0 for (r = Object.getOwnPropertySymbols(e); i < r.length; i++) t.indexOf(r[i]) < 0 && Object.prototype.propertyIsEnumerable.call(e, r[i]) && (n[r[i]] = e[r[i]]) } return n } Object.create Object.create var Et = function (e, t, n) { return Math.min(Math.max(n, e), t) }, kt = 0.001 function _t(e) { var t, n, r = e.duration, i = void 0 === r ? 800 : r, o = e.bounce, a = void 0 === o ? 0.25 : o, s = e.velocity, u = void 0 === s ? 0 : s, l = e.mass, c = void 0 === l ? 1 : l, d = 1 - a ;(d = Et(0.05, 1, d)), (i = Et(0.01, 10, i / 1e3)), d < 1 ? ((t = function (e) { var t = e * d, n = t * i, r = t - u, o = Tt(e, d), a = Math.exp(-n) return kt - (r / o) * a }), (n = function (e) { var n = e * d * i, r = n * u + u, o = Math.pow(d, 2) * Math.pow(e, 2) * i, a = Math.exp(-n), s = Tt(Math.pow(e, 2), d) return ((-t(e) + kt > 0 ? -1 : 1) * ((r - o) * a)) / s })) : ((t = function (e) { return Math.exp(-e * i) * ((e - u) * i + 1) - 0.001 }), (n = function (e) { return Math.exp(-e * i) * (i * i * (u - e)) })) var f = (function (e, t, n) { for (var r = n, i = 1; i < 12; i++) r -= e(r) / t(r) return r })(t, n, 5 / i) if (((i *= 1e3), isNaN(f))) return { stiffness: 100, damping: 10, duration: i } var h = Math.pow(f, 2) * c return { stiffness: h, damping: 2 * d * Math.sqrt(c * h), duration: i } } function Tt(e, t) { return e * Math.sqrt(1 - t * t) } var Ot = ['duration', 'bounce'], Ct = ['stiffness', 'damping', 'mass'] function St(e, t) { return t.some(function (t) { return void 0 !== e[t] }) } function At(e) { var t = e.from, n = void 0 === t ? 0 : t, r = e.to, i = void 0 === r ? 1 : r, o = e.restSpeed, a = void 0 === o ? 2 : o, s = e.restDelta, u = xt(e, ['from', 'to', 'restSpeed', 'restDelta']), l = { done: !1, value: n }, c = (function (e) { var t = wt( { velocity: 0, stiffness: 100, damping: 10, mass: 1, isResolvedFromDuration: !1 }, e, ) if (!St(e, Ct) && St(e, Ot)) { var n = _t(e) ;(t = wt(wt(wt({}, t), n), { velocity: 0, mass: 1 })).isResolvedFromDuration = !0 } return t })(u), d = c.stiffness, f = c.damping, h = c.mass, p = c.velocity, v = c.duration, m = c.isResolvedFromDuration, g = Pt, y = Pt function b() { var e = p ? -p / 1e3 : 0, t = i - n, r = f / (2 * Math.sqrt(d * h)), o = Math.sqrt(d / h) / 1e3 if (((null !== s && void 0 !== s) || (s = Math.abs(i - n) <= 1 ? 0.01 : 0.4), r < 1)) { var a = Tt(o, r) ;(g = function (n) { var s = Math.exp(-r * o * n) return i - s * (((e + r * o * t) / a) * Math.sin(a * n) + t * Math.cos(a * n)) }), (y = function (n) { var i = Math.exp(-r * o * n) return ( r * o * i * ((Math.sin(a * n) * (e + r * o * t)) / a + t * Math.cos(a * n)) - i * (Math.cos(a * n) * (e + r * o * t) - a * t * Math.sin(a * n)) ) }) } else if (1 === r) g = function (n) { return i - Math.exp(-o * n) * (t + (e + o * t) * n) } else { var u = o * Math.sqrt(r * r - 1) g = function (n) { var a = Math.exp(-r * o * n), s = Math.min(u * n, 300) return i - (a * ((e + r * o * t) * Math.sinh(s) + u * t * Math.cosh(s))) / u } } } return ( b(), { next: function (e) { var t = g(e) if (m) l.done = e >= v else { var n = 1e3 * y(e), r = Math.abs(n) <= a, o = Math.abs(i - t) <= s l.done = r && o } return (l.value = l.done ? i : t), l }, flipTarget: function () { var e ;(p = -p), (n = (e = [i, n])[0]), (i = e[1]), b() }, } ) } At.needsInterpolation = function (e, t) { return 'string' === typeof e || 'string' === typeof t } var Pt = function (e) { return 0 }, Mt = function (e, t, n) { var r = t - e return 0 === r ? 1 : (n - e) / r }, Rt = function (e, t, n) { return -n * e + n * t + e }, jt = function (e, t) { return function (n) { return Boolean( (te(n) && ee.test(n) && n.startsWith(e)) || (t && Object.prototype.hasOwnProperty.call(n, t)), ) } }, Dt = function (e, t, n) { return function (r) { var i if (!te(r)) return r var o = r.match(Q), a = o[0], s = o[1], u = o[2], l = o[3] return ( ((i = {})[e] = parseFloat(a)), (i[t] = parseFloat(s)), (i[n] = parseFloat(u)), (i.alpha = void 0 !== l ? parseFloat(l) : 1), i ) } }, Lt = X(0, 255), Nt = $($({}, le), { transform: function (e) { return Math.round(Lt(e)) }, }), It = { test: jt('rgb', 'red'), parse: Dt('red', 'green', 'blue'), transform: function (e) { var t = e.red, n = e.green, r = e.blue, i = e.alpha, o = void 0 === i ? 1 : i return ( 'rgba(' + Nt.transform(t) + ', ' + Nt.transform(n) + ', ' + Nt.transform(r) + ', ' + Y(ce.transform(o)) + ')' ) }, } var zt = { test: jt('#'), parse: function (e) { var t = '', n = '', r = '', i = '' return ( e.length > 5 ? ((t = e.substr(1, 2)), (n = e.substr(3, 2)), (r = e.substr(5, 2)), (i = e.substr(7, 2))) : ((t = e.substr(1, 1)), (n = e.substr(2, 1)), (r = e.substr(3, 1)), (i = e.substr(4, 1)), (t += t), (n += n), (r += r), (i += i)), { red: parseInt(t, 16), green: parseInt(n, 16), blue: parseInt(r, 16), alpha: i ? parseInt(i, 16) / 255 : 1, } ) }, transform: It.transform, }, Ht = { test: jt('hsl', 'hue'), parse: Dt('hue', 'saturation', 'lightness'), transform: function (e) { var t = e.hue, n = e.saturation, r = e.lightness, i = e.alpha, o = void 0 === i ? 1 : i return ( 'hsla(' + Math.round(t) + ', ' + ie.transform(Y(n)) + ', ' + ie.transform(Y(r)) + ', ' + Y(ce.transform(o)) + ')' ) }, }, Bt = function (e, t, n) { var r = e * e, i = t * t return Math.sqrt(Math.max(0, n * (i - r) + r)) }, Ft = [zt, It, Ht], Vt = function (e) { return Ft.find(function (t) { return t.test(e) }) }, Ut = function (e) { return "'" + e + "' is not an animatable color. Use the equivalent color code instead." }, Gt = function (e, t) { var n = Vt(e), r = Vt(t) Ut(e), Ut(t), n.transform, r.transform var i = n.parse(e), o = r.parse(t), a = wt({}, i), s = n === Ht ? Rt : Bt return function (e) { for (var t in a) 'alpha' !== t && (a[t] = s(i[t], o[t], e)) return (a.alpha = Rt(i.alpha, o.alpha, e)), n.transform(a) } }, qt = { test: function (e) { return It.test(e) || zt.test(e) || Ht.test(e) }, parse: function (e) { return It.test(e) ? It.parse(e) : Ht.test(e) ? Ht.parse(e) : zt.parse(e) }, transform: function (e) { return te(e) ? e : e.hasOwnProperty('red') ? It.transform(e) : Ht.transform(e) }, }, Wt = '${c}', Kt = '${n}' function Zt(e) { var t = [], n = 0, r = e.match(J) r && ((n = r.length), (e = e.replace(J, Wt)), t.push.apply(t, r.map(qt.parse))) var i = e.match(Q) return ( i && ((e = e.replace(Q, Kt)), t.push.apply(t, i.map(le.parse))), { values: t, numColors: n, tokenised: e } ) } function $t(e) { return Zt(e).values } function Xt(e) { var t = Zt(e), n = t.values, r = t.numColors, i = t.tokenised, o = n.length return function (e) { for (var t = i, n = 0; n < o; n++) t = t.replace(n < r ? Wt : Kt, n < r ? qt.transform(e[n]) : Y(e[n])) return t } } var Yt = function (e) { return 'number' === typeof e ? 0 : e } var Qt = { test: function (e) { var t, n, r, i return ( isNaN(e) && te(e) && (null !== (n = null === (t = e.match(Q)) || void 0 === t ? void 0 : t.length) && void 0 !== n ? n : 0) + (null !== (i = null === (r = e.match(J)) || void 0 === r ? void 0 : r.length) && void 0 !== i ? i : 0) > 0 ) }, parse: $t, createTransformer: Xt, getAnimatableNone: function (e) { var t = $t(e) return Xt(e)(t.map(Yt)) }, }, Jt = function (e) { return 'number' === typeof e } function en(e, t) { return Jt(e) ? function (n) { return Rt(e, t, n) } : qt.test(e) ? Gt(e, t) : on(e, t) } var tn = function (e, t) { var n = (function (e, t, n) { if (n || 2 === arguments.length) for (var r, i = 0, o = t.length; i < o; i++) (!r && i in t) || (r || (r = Array.prototype.slice.call(t, 0, i)), (r[i] = t[i])) return e.concat(r || t) })([], e), r = n.length, i = e.map(function (e, n) { return en(e, t[n]) }) return function (e) { for (var t = 0; t < r; t++) n[t] = i[t](e) return n } }, nn = function (e, t) { var n = wt(wt({}, e), t), r = {} for (var i in n) void 0 !== e[i] && void 0 !== t[i] && (r[i] = en(e[i], t[i])) return function (e) { for (var t in r) n[t] = r[t](e) return n } } function rn(e) { for (var t = Qt.parse(e), n = t.length, r = 0, i = 0, o = 0, a = 0; a < n; a++) r || 'number' === typeof t[a] ? r++ : void 0 !== t[a].hue ? o++ : i++ return { parsed: t, numNumbers: r, numRGB: i, numHSL: o } } var on = function (e, t) { var n = Qt.createTransformer(t), r = rn(e), i = rn(t) return ( r.numHSL === i.numHSL && r.numRGB === i.numRGB && (r.numNumbers, i.numNumbers), mt(tn(r.parsed, i.parsed), n) ) }, an = function (e, t) { return function (n) { return Rt(e, t, n) } } function sn(e, t, n) { for ( var r, i = [], o = n || ('number' === typeof (r = e[0]) ? an : 'string' === typeof r ? qt.test(r) ? Gt : on : Array.isArray(r) ? tn : 'object' === typeof r ? nn : void 0), a = e.length - 1, s = 0; s < a; s++ ) { var u = o(e[s], e[s + 1]) if (t) { var l = Array.isArray(t) ? t[s] : t u = mt(l, u) } i.push(u) } return i } function un(e, t, n) { var r = void 0 === n ? {} : n, i = r.clamp, o = void 0 === i || i, a = r.ease, s = r.mixer, u = e.length t.length, !a || !Array.isArray(a) || a.length, e[0] > e[u - 1] && ((e = [].concat(e)), (t = [].concat(t)), e.reverse(), t.reverse()) var l = sn(t, a, s), c = 2 === u ? (function (e, t) { var n = e[0], r = e[1], i = t[0] return function (e) { return i(Mt(n, r, e)) } })(e, l) : (function (e, t) { var n = e.length, r = n - 1 return function (i) { var o = 0, a = !1 if ((i <= e[0] ? (a = !0) : i >= e[r] && ((o = r - 1), (a = !0)), !a)) { for (var s = 1; s < n && !(e[s] > i || s === r); s++); o = s - 1 } var u = Mt(e[o], e[o + 1], i) return t[o](u) } })(e, l) return o ? function (t) { return c(Et(e[0], e[u - 1], t)) } : c } var ln, cn = function (e) { return function (t) { return 1 - e(1 - t) } }, dn = function (e) { return function (t) { return t <= 0.5 ? e(2 * t) / 2 : (2 - e(2 * (1 - t))) / 2 } }, fn = function (e) { return function (t) { return t * t * ((e + 1) * t - e) } }, hn = function (e) { return e }, pn = ((ln = 2), function (e) { return Math.pow(e, ln) }), vn = cn(pn), mn = dn(pn), gn = function (e) { return 1 - Math.sin(Math.acos(e)) }, yn = cn(gn), bn = dn(yn), wn = fn(1.525), xn = cn(wn), En = dn(wn), kn = (function (e) { var t = fn(e) return function (e) { return (e *= 2) < 1 ? 0.5 * t(e) : 0.5 * (2 - Math.pow(2, -10 * (e - 1))) } })(1.525), _n = function (e) { if (1 === e || 0 === e) return e var t = e * e return e < 0.36363636363636365 ? 7.5625 * t : e < 0.7272727272727273 ? 9.075 * t - 9.9 * e + 3.4 : e < 0.9 ? 12.066481994459833 * t - 19.63545706371191 * e + 8.898060941828255 : 10.8 * e * e - 20.52 * e + 10.72 }, Tn = cn(_n) function On(e, t) { return e .map(function () { return t || mn }) .splice(0, e.length - 1) } function Cn(e) { var t = e.from, n = void 0 === t ? 0 : t, r = e.to, i = void 0 === r ? 1 : r, o = e.ease, a = e.offset, s = e.duration, u = void 0 === s ? 300 : s, l = { done: !1, value: n }, c = Array.isArray(i) ? i : [n, i], d = (function (e, t) { return e.map(function (e) { return e * t }) })( a && a.length === c.length ? a : (function (e) { var t = e.length return e.map(function (e, n) { return 0 !== n ? n / (t - 1) : 0 }) })(c), u, ) function f() { return un(d, c, { ease: Array.isArray(o) ? o : On(c, o) }) } var h = f() return { next: function (e) { return (l.value = h(e)), (l.done = e >= u), l }, flipTarget: function () { c.reverse(), (h = f()) }, } } var Sn = { keyframes: Cn, spring: At, decay: function (e) { var t = e.velocity, n = void 0 === t ? 0 : t, r = e.from, i = void 0 === r ? 0 : r, o = e.power, a = void 0 === o ? 0.8 : o, s = e.timeConstant, u = void 0 === s ? 350 : s, l = e.restDelta, c = void 0 === l ? 0.5 : l, d = e.modifyTarget, f = { done: !1, value: i }, h = a * n, p = i + h, v = void 0 === d ? p : d(p) return ( v !== p && (h = v - i), { next: function (e) { var t = -h * Math.exp(-e / u) return (f.done = !(t > c || t < -c)), (f.value = f.done ? v : v + t), f }, flipTarget: function () {}, } ) }, } var An = n(9839) function Pn(e, t, n) { return void 0 === n && (n = 0), e - t - n } var Mn = function (e) { var t = function (t) { var n = t.delta return e(n) } return { start: function () { return An.ZP.update(t, !0) }, stop: function () { return An.qY.update(t) }, } } function Rn(e) { var t, n, r, i, o, a = e.from, s = e.autoplay, u = void 0 === s || s, l = e.driver, c = void 0 === l ? Mn : l, d = e.elapsed, f = void 0 === d ? 0 : d, h = e.repeat, p = void 0 === h ? 0 : h, v = e.repeatType, m = void 0 === v ? 'loop' : v, g = e.repeatDelay, y = void 0 === g ? 0 : g, b = e.onPlay, w = e.onStop, x = e.onComplete, E = e.onRepeat, k = e.onUpdate, _ = xt(e, [ 'from', 'autoplay', 'driver', 'elapsed', 'repeat', 'repeatType', 'repeatDelay', 'onPlay', 'onStop', 'onComplete', 'onRepeat', 'onUpdate', ]), T = _.to, O = 0, C = _.duration, S = !1, A = !0, P = (function (e) { if (Array.isArray(e.to)) return Cn if (Sn[e.type]) return Sn[e.type] var t = new Set(Object.keys(e)) return t.has('ease') || (t.has('duration') && !t.has('dampingRatio')) ? Cn : t.has('dampingRatio') || t.has('stiffness') || t.has('mass') || t.has('damping') || t.has('restSpeed') || t.has('restDelta') ? At : Cn })(_) ;(null === (n = (t = P).needsInterpolation) || void 0 === n ? void 0 : n.call(t, a, T)) && ((o = un([0, 100], [a, T], { clamp: !1 })), (a = 0), (T = 100)) var M = P(wt(wt({}, _), { from: a, to: T })) function R() { O++, 'reverse' === m ? (f = (function (e, t, n, r) { return ( void 0 === n && (n = 0), void 0 === r && (r = !0), r ? Pn(t + -e, t, n) : t - (e - t) + n ) })(f, C, y, (A = O % 2 === 0))) : ((f = Pn(f, C, y)), 'mirror' === m && M.flipTarget()), (S = !1), E && E() } function j(e) { if ((A || (e = -e), (f += e), !S)) { var t = M.next(Math.max(0, f)) ;(i = t.value), o && (i = o(i)), (S = A ? t.done : f <= 0) } null === k || void 0 === k || k(i), S && (0 === O && ((null !== C && void 0 !== C) || (C = f)), O < p ? (function (e, t, n, r) { return r ? e >= t + n : e <= -n })(f, C, y, A) && R() : (r.stop(), x && x())) } return ( u && (null === b || void 0 === b || b(), (r = c(j)).start()), { stop: function () { null === w || void 0 === w || w(), r.stop() }, } ) } function jn(e, t) { return t ? e * (1e3 / t) : 0 } var Dn = function (e) { return 1e3 * e }, Ln = function (e, t) { return 1 - 3 * t + 3 * e }, Nn = function (e, t) { return 3 * t - 6 * e }, In = function (e) { return 3 * e }, zn = function (e, t, n) { return ((Ln(t, n) * e + Nn(t, n)) * e + In(t)) * e }, Hn = function (e, t, n) { return 3 * Ln(t, n) * e * e + 2 * Nn(t, n) * e + In(t) } var Bn = 0.1 function Fn(e, t, n, r) { if (e === t && n === r) return hn for (var i = new Float32Array(11), o = 0; o < 11; ++o) i[o] = zn(o * Bn, e, n) function a(t) { for (var r = 0, o = 1; 10 !== o && i[o] <= t; ++o) r += Bn --o var a = r + ((t - i[o]) / (i[o + 1] - i[o])) * Bn, s = Hn(a, e, n) return s >= 0.001 ? (function (e, t, n, r) { for (var i = 0; i < 8; ++i) { var o = Hn(t, n, r) if (0 === o) return t t -= (zn(t, n, r) - e) / o } return t })(t, a, e, n) : 0 === s ? a : (function (e, t, n, r, i) { var o, a, s = 0 do { ;(o = zn((a = t + (n - t) / 2), r, i) - e) > 0 ? (n = a) : (t = a) } while (Math.abs(o) > 1e-7 && ++s < 10) return a })(t, r, r + Bn, e, n) } return function (e) { return 0 === e || 1 === e ? e : zn(a(e), t, r) } } var Vn = { linear: hn, easeIn: pn, easeInOut: mn, easeOut: vn, circIn: gn, circInOut: bn, circOut: yn, backIn: wn, backInOut: En, backOut: xn, anticipate: kn, bounceIn: Tn, bounceInOut: function (e) { return e < 0.5 ? 0.5 * (1 - _n(1 - 2 * e)) : 0.5 * _n(2 * e - 1) + 0.5 }, bounceOut: _n, }, Un = function (e) { if (Array.isArray(e)) { e.length var t = (0, r.CR)(e, 4) return Fn(t[0], t[1], t[2], t[3]) } return 'string' === typeof e ? Vn[e] : e }, Gn = function (e, t) { return ( 'zIndex' !== e && (!('number' !== typeof t && !Array.isArray(t)) || !('string' !== typeof t || !Qt.test(t) || t.startsWith('url('))) ) }, qn = function () { return { type: 'spring', stiffness: 500, damping: 25, restDelta: 0.5, restSpeed: 10 } }, Wn = function (e) { return { type: 'spring', stiffness: 550, damping: 0 === e ? 2 * Math.sqrt(550) : 30, restDelta: 0.01, restSpeed: 10, } }, Kn = function () { return { type: 'keyframes', ease: 'linear', duration: 0.3 } }, Zn = function (e) { return { type: 'keyframes', duration: 0.8, values: e } }, $n = { x: qn, y: qn, z: qn, rotate: qn, rotateX: qn, rotateY: qn, rotateZ: qn, scaleX: Wn, scaleY: Wn, scale: Wn, opacity: Kn, backgroundColor: Kn, color: Kn, default: Wn, }, Xn = new Set(['brightness', 'contrast', 'saturate', 'opacity']) function Yn(e) { var t = e.slice(0, -1).split('('), n = t[0], r = t[1] if ('drop-shadow' === n) return e var i = (r.match(Q) || [])[0] if (!i) return e var o = r.replace(i, ''), a = Xn.has(n) ? 1 : 0 return i !== r && (a *= 100), n + '(' + a + o + ')' } var Qn = /([a-z-]*)\(.*?\)/g, Jn = $($({}, Qt), { getAnimatableNone: function (e) { var t = e.match(Qn) return t ? t.map(Yn).join(' ') : e }, }), er = (0, r.pi)((0, r.pi)({}, he), { color: qt, backgroundColor: qt, outlineColor: qt, fill: qt, stroke: qt, borderColor: qt, borderTopColor: qt, borderRightColor: qt, borderBottomColor: qt, borderLeftColor: qt, filter: Jn, WebkitFilter: Jn, }), tr = function (e) { return er[e] } function nr(e, t) { var n, r = tr(e) return ( r !== Jn && (r = Qt), null === (n = r.getAnimatableNone) || void 0 === n ? void 0 : n.call(r, t) ) } function rr(e) { var t = e.ease, n = e.times, i = e.yoyo, o = e.flip, a = e.loop, s = (0, r._T)(e, ['ease', 'times', 'yoyo', 'flip', 'loop']), u = (0, r.pi)({}, s) return ( n && (u.offset = n), s.duration && (u.duration = Dn(s.duration)), s.repeatDelay && (u.repeatDelay = Dn(s.repeatDelay)), t && (u.ease = (function (e) { return Array.isArray(e) && 'number' !== typeof e[0] })(t) ? t.map(Un) : Un(t)), 'tween' === s.type && (u.type = 'keyframes'), (i || a || o) && (!0, i ? (u.repeatType = 'reverse') : a ? (u.repeatType = 'loop') : o && (u.repeatType = 'mirror'), (u.repeat = a || i || o || s.repeat)), 'spring' !== s.type && (u.type = 'keyframes'), u ) } function ir(e, t, n) { var i return ( Array.isArray(t.to) && ((null !== (i = e.duration) && void 0 !== i) || (e.duration = 0.8)), (function (e) { Array.isArray(e.to) && null === e.to[0] && ((e.to = (0, r.ev)([], (0, r.CR)(e.to))), (e.to[0] = e.from)) })(t), (function (e) { e.when, e.delay, e.delayChildren, e.staggerChildren, e.staggerDirection, e.repeat, e.repeatType, e.repeatDelay, e.from var t = (0, r._T)(e, [ 'when', 'delay', 'delayChildren', 'staggerChildren', 'staggerDirection', 'repeat', 'repeatType', 'repeatDelay', 'from', ]) return !!Object.keys(t).length })(e) || (e = (0, r.pi)( (0, r.pi)({}, e), (function (e, t) { var n return (n = He(t) ? Zn : $n[e] || $n.default), (0, r.pi)({ to: t }, n(t)) })(n, t.to), )), (0, r.pi)((0, r.pi)({}, t), rr(e)) ) } function or(e, t, n, i, o) { var a, s = ur(i, e), u = null !== (a = s.from) && void 0 !== a ? a : t.get(), l = Gn(e, n) 'none' === u && l && 'string' === typeof n ? (u = nr(e, n)) : ar(u) && 'string' === typeof n ? (u = sr(n)) : !Array.isArray(n) && ar(n) && 'string' === typeof u && (n = sr(u)) var c = Gn(e, u) return c && l && !1 !== s.type ? function () { var i = { from: u, to: n, velocity: t.getVelocity(), onComplete: o, onUpdate: function (e) { return t.set(e) }, } return 'inertia' === s.type || 'decay' === s.type ? (function (e) { var t, n = e.from, r = void 0 === n ? 0 : n, i = e.velocity, o = void 0 === i ? 0 : i, a = e.min, s = e.max, u = e.power, l = void 0 === u ? 0.8 : u, c = e.timeConstant, d = void 0 === c ? 750 : c, f = e.bounceStiffness, h = void 0 === f ? 500 : f, p = e.bounceDamping, v = void 0 === p ? 10 : p, m = e.restDelta, g = void 0 === m ? 1 : m, y = e.modifyTarget, b = e.driver, w = e.onUpdate, x = e.onComplete function E(e) { return (void 0 !== a && e < a) || (void 0 !== s && e > s) } function k(e) { return void 0 === a ? s : void 0 === s || Math.abs(a - e) < Math.abs(s - e) ? a : s } function _(e) { null === t || void 0 === t || t.stop(), (t = Rn( wt(wt({}, e), { driver: b, onUpdate: function (t) { var n null === w || void 0 === w || w(t), null === (n = e.onUpdate) || void 0 === n || n.call(e, t) }, onComplete: x, }), )) } function T(e) { _(wt({ type: 'spring', stiffness: h, damping: v, restDelta: g }, e)) } if (E(r)) T({ from: r, velocity: o, to: k(r) }) else { var O = l * o + r 'undefined' !== typeof y && (O = y(O)) var C, S, A = k(O), P = A === a ? -1 : 1 _({ type: 'decay', from: r, velocity: o, timeConstant: d, power: l, restDelta: g, modifyTarget: y, onUpdate: E(O) ? function (e) { ;(C = S), (S = e), (o = jn(e - C, (0, An.$B)().delta)), ((1 === P && e > A) || (-1 === P && e < A)) && T({ from: e, to: A, velocity: o }) } : void 0, }) } return { stop: function () { return null === t || void 0 === t ? void 0 : t.stop() }, } })((0, r.pi)((0, r.pi)({}, i), s)) : Rn( (0, r.pi)((0, r.pi)({}, ir(s, i, e)), { onUpdate: function (e) { var t i.onUpdate(e), null === (t = s.onUpdate) || void 0 === t || t.call(s, e) }, onComplete: function () { var e i.onComplete(), null === (e = s.onComplete) || void 0 === e || e.call(s) }, }), ) } : function () { var e return ( t.set(n), o(), null === (e = null === s || void 0 === s ? void 0 : s.onComplete) || void 0 === e || e.call(s), { stop: function () {} } ) } } function ar(e) { return 0 === e || ('string' === typeof e && 0 === parseFloat(e) && -1 === e.indexOf(' ')) } function sr(e) { return 'number' === typeof e ? 0 : nr('', e) } function ur(e, t) { return e[t] || e.default || e } function lr(e, t, n, r) { return ( void 0 === r && (r = {}), t.start(function (i) { var o, a, s = or(e, t, n, r, i), u = (function (e, t) { var n return null !== (n = (ur(e, t) || {}).delay) && void 0 !== n ? n : 0 })(r, e), l = function () { return (a = s()) } return ( u ? (o = setTimeout(l, Dn(u))) : l(), function () { clearTimeout(o), null === a || void 0 === a || a.stop() } ) }) ) } function cr(e, t) { ;-1 === e.indexOf(t) && e.push(t) } function dr(e, t) { var n = e.indexOf(t) n > -1 && e.splice(n, 1) } var fr = (function () { function e() { this.subscriptions = [] } return ( (e.prototype.add = function (e) { var t = this return ( cr(this.subscriptions, e), function () { return dr(t.subscriptions, e) } ) }), (e.prototype.notify = function (e, t, n) { var r = this.subscriptions.length if (r) if (1 === r) this.subscriptions[0](e, t, n) else for (var i = 0; i < r; i++) { var o = this.subscriptions[i] o && o(e, t, n) } }), (e.prototype.getSize = function () { return this.subscriptions.length }), (e.prototype.clear = function () { this.subscriptions.length = 0 }), e ) })(), hr = (function () { function e(e) { var t, n = this ;(this.timeDelta = 0), (this.lastUpdated = 0), (this.updateSubscribers = new fr()), (this.velocityUpdateSubscribers = new fr()), (this.renderSubscribers = new fr()), (this.canTrackVelocity = !1), (this.updateAndNotify = function (e, t) { void 0 === t && (t = !0), (n.prev = n.current), (n.current = e) var r = (0, An.$B)(), i = r.delta, o = r.timestamp n.lastUpdated !== o && ((n.timeDelta = i), (n.lastUpdated = o), An.ZP.postRender(n.scheduleVelocityCheck)), n.prev !== n.current && n.updateSubscribers.notify(n.current), n.velocityUpdateSubscribers.getSize() && n.velocityUpdateSubscribers.notify(n.getVelocity()), t && n.renderSubscribers.notify(n.current) }), (this.scheduleVelocityCheck = function () { return An.ZP.postRender(n.velocityCheck) }), (this.velocityCheck = function (e) { e.timestamp !== n.lastUpdated && ((n.prev = n.current), n.velocityUpdateSubscribers.notify(n.getVelocity())) }), (this.hasAnimated = !1), (this.prev = this.current = e), (this.canTrackVelocity = ((t = this.current), !isNaN(parseFloat(t)))) } return ( (e.prototype.onChange = function (e) { return this.updateSubscribers.add(e) }), (e.prototype.clearListeners = function () { this.updateSubscribers.clear() }), (e.prototype.onRenderRequest = function (e) { return e(this.get()), this.renderSubscribers.add(e) }), (e.prototype.attach = function (e) { this.passiveEffect = e }), (e.prototype.set = function (e, t) { void 0 === t && (t = !0), t && this.passiveEffect ? this.passiveEffect(e, this.updateAndNotify) : this.updateAndNotify(e, t) }), (e.prototype.get = function () { return this.current }), (e.prototype.getPrevious = function () { return this.prev }), (e.prototype.getVelocity = function () { return this.canTrackVelocity ? jn(parseFloat(this.current) - parseFloat(this.prev), this.timeDelta) : 0 }), (e.prototype.start = function (e) { var t = this return ( this.stop(), new Promise(function (n) { ;(t.hasAnimated = !0), (t.stopAnimation = e(n)) }).then(function () { return t.clearAnimation() }) ) }), (e.prototype.stop = function () { this.stopAnimation && this.stopAnimation(), this.clearAnimation() }), (e.prototype.isAnimating = function () { return !!this.stopAnimation }), (e.prototype.clearAnimation = function () { this.stopAnimation = null }), (e.prototype.destroy = function () { this.updateSubscribers.clear(), this.renderSubscribers.clear(), this.stop() }), e ) })() function pr(e) { return new hr(e) } var vr = function (e) { return function (t) { return t.test(e) } }, mr = [ le, oe, ie, re, se, ae, { test: function (e) { return 'auto' === e }, parse: function (e) { return e }, }, ], gr = function (e) { return mr.find(vr(e)) }, yr = (0, r.ev)((0, r.ev)([], (0, r.CR)(mr)), [qt, Qt]), br = function (e) { return yr.find(vr(e)) } function wr(e, t, n) { e.hasValue(t) ? e.getValue(t).set(n) : e.addValue(t, pr(n)) } function xr(e, t) { var n = C(e, t), i = n ? e.makeTargetAnimatable(n, !1) : {}, o = i.transitionEnd, a = void 0 === o ? {} : o i.transition var s, u = (0, r._T)(i, ['transitionEnd', 'transition']) for (var l in (u = (0, r.pi)((0, r.pi)({}, u), a))) { wr(e, l, ((s = u[l]), He(s) ? s[s.length - 1] || 0 : s)) } } function Er(e, t) { if (t) return (t[e] || t.default || t).from } function kr(e, t, n) { var i void 0 === n && (n = {}) var o = C(e, t, n.custom), a = (o || {}).transition, s = void 0 === a ? e.getDefaultTransition() || {} : a n.transitionOverride && (s = n.transitionOverride) var u = o ? function () { return _r(e, o, n) } : function () { return Promise.resolve() }, l = (null === (i = e.variantChildren) || void 0 === i ? void 0 : i.size) ? function (i) { void 0 === i && (i = 0) var o = s.delayChildren, a = void 0 === o ? 0 : o, u = s.staggerChildren, l = s.staggerDirection return (function (e, t, n, i, o, a) { void 0 === n && (n = 0) void 0 === i && (i = 0) void 0 === o && (o = 1) var s = [], u = (e.variantChildren.size - 1) * i, l = 1 === o ? function (e) { return void 0 === e && (e = 0), e * i } : function (e) { return void 0 === e && (e = 0), u - e * i } return ( Array.from(e.variantChildren) .sort(Tr) .forEach(function (e, i) { s.push( kr(e, t, (0, r.pi)((0, r.pi)({}, a), { delay: n + l(i) })).then( function () { return e.notifyAnimationComplete(t) }, ), ) }), Promise.all(s) ) })(e, t, a + i, u, l, n) } : function () { return Promise.resolve() }, c = s.when if (c) { var d = (0, r.CR)('beforeChildren' === c ? [u, l] : [l, u], 2), f = d[0], h = d[1] return f().then(h) } return Promise.all([u(), l(n.delay)]) } function _r(e, t, n) { var i, o = void 0 === n ? {} : n, a = o.delay, s = void 0 === a ? 0 : a, u = o.transitionOverride, l = o.type, c = e.makeTargetAnimatable(t), d = c.transition, f = void 0 === d ? e.getDefaultTransition() : d, h = c.transitionEnd, p = (0, r._T)(c, ['transition', 'transitionEnd']) u && (f = u) var v = [], m = l && (null === (i = e.animationState) || void 0 === i ? void 0 : i.getState()[l]) for (var g in p) { var y = e.getValue(g), b = p[g] if (!(!y || void 0 === b || (m && Or(m, g)))) { var w = lr(g, y, b, (0, r.pi)({ delay: s }, f)) v.push(w) } } return Promise.all(v).then(function () { h && xr(e, h) }) } function Tr(e, t) { return e.sortNodePosition(t) } function Or(e, t) { var n = e.protectedKeys, r = e.needsAnimating, i = n.hasOwnProperty(t) && !0 !== r[t] return (r[t] = !1), i } var Cr = [qe.Animate, qe.Hover, qe.Tap, qe.Drag, qe.Focus, qe.Exit], Sr = (0, r.ev)([], (0, r.CR)(Cr)).reverse(), Ar = Cr.length function Pr(e) { return function (t) { return Promise.all( t.map(function (t) { var n = t.animation, r = t.options return (function (e, t, n) { var r if ((void 0 === n && (n = {}), e.notifyAnimationStart(), Array.isArray(t))) { var i = t.map(function (t) { return kr(e, t, n) }) r = Promise.all(i) } else if ('string' === typeof t) r = kr(e, t, n) else { var o = 'function' === typeof t ? C(e, t, n.custom) : t r = _r(e, o, n) } return r.then(function () { return e.notifyAnimationComplete(t) }) })(e, n, r) }), ) } } function Mr(e) { var t = Pr(e), n = (function () { var e return ( ((e = {})[qe.Animate] = Rr(!0)), (e[qe.Hover] = Rr()), (e[qe.Tap] = Rr()), (e[qe.Drag] = Rr()), (e[qe.Focus] = Rr()), (e[qe.Exit] = Rr()), e ) })(), i = {}, o = !0, a = function (t, n) { var i = C(e, n) if (i) { i.transition var o = i.transitionEnd, a = (0, r._T)(i, ['transition', 'transitionEnd']) t = (0, r.pi)((0, r.pi)((0, r.pi)({}, t), a), o) } return t } function s(s, u) { for ( var l, c = e.getProps(), d = e.getVariantContext(!0) || {}, f = [], h = new Set(), p = {}, v = 1 / 0, m = function (t) { var i = Sr[t], m = n[i], g = null !== (l = c[i]) && void 0 !== l ? l : d[i], y = T(g), b = i === u ? m.isActive : null !1 === b && (v = t) var w = g === d[i] && g !== c[i] && y if ( (w && o && e.manuallyAnimateOnMount && (w = !1), (m.protectedKeys = (0, r.pi)({}, p)), (!m.isActive && null === b) || (!g && !m.prevProp) || ze(g) || 'boolean' === typeof g) ) return 'continue' var x = (function (e, t) { if ('string' === typeof t) return t !== e if (_(t)) return !bt(t, e) return !1 })(m.prevProp, g) || (i === u && m.isActive && !w && y) || (t > v && y), E = Array.isArray(g) ? g : [g], k = E.reduce(a, {}) !1 === b && (k = {}) var O = m.prevResolvedValues, C = void 0 === O ? {} : O, S = (0, r.pi)((0, r.pi)({}, C), k), A = function (e) { ;(x = !0), h.delete(e), (m.needsAnimating[e] = !0) } for (var P in S) { var M = k[P], R = C[P] p.hasOwnProperty(P) || (M !== R ? He(M) && He(R) ? bt(M, R) ? (m.protectedKeys[P] = !0) : A(P) : void 0 !== M ? A(P) : h.add(P) : void 0 !== M && h.has(P) ? A(P) : (m.protectedKeys[P] = !0)) } ;(m.prevProp = g), (m.prevResolvedValues = k), m.isActive && (p = (0, r.pi)((0, r.pi)({}, p), k)), o && e.blockInitialAnimation && (x = !1), x && !w && f.push.apply( f, (0, r.ev)( [], (0, r.CR)( E.map(function (e) { return { animation: e, options: (0, r.pi)({ type: i }, s) } }), ), ), ) }, g = 0; g < Ar; g++ ) m(g) if (((i = (0, r.pi)({}, p)), h.size)) { var y = {} h.forEach(function (t) { var n = e.getBaseTarget(t) void 0 !== n && (y[t] = n) }), f.push({ animation: y }) } var b = Boolean(f.length) return ( o && !1 === c.initial && !e.manuallyAnimateOnMount && (b = !1), (o = !1), b ? t(f) : Promise.resolve() ) } return { isAnimated: function (e) { return void 0 !== i[e] }, animateChanges: s, setActive: function (t, r, i) { var o return n[t].isActive === r ? Promise.resolve() : (null === (o = e.variantChildren) || void 0 === o || o.forEach(function (e) { var n return null === (n = e.animationState) || void 0 === n ? void 0 : n.setActive(t, r) }), (n[t].isActive = r), s(i, t)) }, setAnimateFunction: function (n) { t = n(e) }, getState: function () { return n }, } } function Rr(e) { return ( void 0 === e && (e = !1), { isActive: e, protectedKeys: {}, needsAnimating: {}, prevResolvedValues: {} } ) } var jr = { animation: gt(function (e) { var t = e.visualElement, n = e.animate t.animationState || (t.animationState = Mr(t)), ze(n) && (0, i.useEffect)( function () { return n.subscribe(t) }, [n], ) }), exit: gt(function (e) { var t = e.custom, n = e.visualElement, o = (0, r.CR)(p(), 2), a = o[0], s = o[1], u = (0, i.useContext)(f.O) ;(0, i.useEffect)( function () { var e, r, i = null === (e = n.animationState) || void 0 === e ? void 0 : e.setActive(qe.Exit, !a, { custom: null !== (r = null === u || void 0 === u ? void 0 : u.custom) && void 0 !== r ? r : t, }) !a && (null === i || void 0 === i || i.then(s)) }, [a], ) }), }, Dr = function (e) { return e.hasOwnProperty('x') && e.hasOwnProperty('y') }, Lr = function (e) { return Dr(e) && e.hasOwnProperty('z') }, Nr = function (e, t) { return Math.abs(e - t) } function Ir(e, t) { if (Jt(e) && Jt(t)) return Nr(e, t) if (Dr(e) && Dr(t)) { var n = Nr(e.x, t.x), r = Nr(e.y, t.y), i = Lr(e) && Lr(t) ? Nr(e.z, t.z) : 0 return Math.sqrt(Math.pow(n, 2) + Math.pow(r, 2) + Math.pow(i, 2)) } } var zr = (function () { function e(e, t, n) { var i = this, o = (void 0 === n ? {} : n).transformPagePoint if ( ((this.startEvent = null), (this.lastMoveEvent = null), (this.lastMoveEventInfo = null), (this.handlers = {}), (this.updatePoint = function () { if (i.lastMoveEvent && i.lastMoveEventInfo) { var e = Fr(i.lastMoveEventInfo, i.history), t = null !== i.startEvent, n = Ir(e.offset, { x: 0, y: 0 }) >= 3 if (t || n) { var o = e.point, a = (0, An.$B)().timestamp i.history.push((0, r.pi)((0, r.pi)({}, o), { timestamp: a })) var s = i.handlers, u = s.onStart, l = s.onMove t || (u && u(i.lastMoveEvent, e), (i.startEvent = i.lastMoveEvent)), l && l(i.lastMoveEvent, e) } } }), (this.handlePointerMove = function (e, t) { ;(i.lastMoveEvent = e), (i.lastMoveEventInfo = Hr(t, i.transformPagePoint)), $e(e) && 0 === e.buttons ? i.handlePointerUp(e, t) : An.ZP.update(i.updatePoint, !0) }), (this.handlePointerUp = function (e, t) { i.end() var n = i.handlers, r = n.onEnd, o = n.onSessionEnd, a = Fr(Hr(t, i.transformPagePoint), i.history) i.startEvent && r && r(e, a), o && o(e, a) }), !(Xe(e) && e.touches.length > 1)) ) { ;(this.handlers = t), (this.transformPagePoint = o) var a = Hr(et(e), this.transformPagePoint), s = a.point, u = (0, An.$B)().timestamp this.history = [(0, r.pi)((0, r.pi)({}, s), { timestamp: u })] var l = t.onSessionStart l && l(e, Fr(a, this.history)), (this.removeListeners = mt( ot(window, 'pointermove', this.handlePointerMove), ot(window, 'pointerup', this.handlePointerUp), ot(window, 'pointercancel', this.handlePointerUp), )) } } return ( (e.prototype.updateHandlers = function (e) { this.handlers = e }), (e.prototype.end = function () { this.removeListeners && this.removeListeners(), An.qY.update(this.updatePoint) }), e ) })() function Hr(e, t) { return t ? { point: t(e.point) } : e } function Br(e, t) { return { x: e.x - t.x, y: e.y - t.y } } function Fr(e, t) { var n = e.point return { point: n, delta: Br(n, Ur(t)), offset: Br(n, Vr(t)), velocity: Gr(t, 0.1) } } function Vr(e) { return e[0] } function Ur(e) { return e[e.length - 1] } function Gr(e, t) { if (e.length < 2) return { x: 0, y: 0 } for ( var n = e.length - 1, r = null, i = Ur(e); n >= 0 && ((r = e[n]), !(i.timestamp - r.timestamp > Dn(t))); ) n-- if (!r) return { x: 0, y: 0 } var o = (i.timestamp - r.timestamp) / 1e3 if (0 === o) return { x: 0, y: 0 } var a = { x: (i.x - r.x) / o, y: (i.y - r.y) / o } return a.x === 1 / 0 && (a.x = 0), a.y === 1 / 0 && (a.y = 0), a } var qr = n(3327) function Wr(e) { return [e('x'), e('y')] } function Kr(e, t, n) { var r = t.min, i = t.max return ( void 0 !== r && e < r ? (e = n ? Rt(r, e, n.min) : Math.max(e, r)) : void 0 !== i && e > i && (e = n ? Rt(i, e, n.max) : Math.min(e, i)), e ) } function Zr(e, t, n) { return { min: void 0 !== t ? e.min + t : void 0, max: void 0 !== n ? e.max + n - (e.max - e.min) : void 0, } } function $r(e, t) { var n, i = t.min - e.min, o = t.max - e.max return ( t.max - t.min < e.max - e.min && ((i = (n = (0, r.CR)([o, i], 2))[0]), (o = n[1])), { min: e.min + i, max: e.min + o } ) } function Xr(e, t, n) { return { min: Yr(e, t), max: Yr(e, n) } } function Yr(e, t) { var n return 'number' === typeof e ? e : null !== (n = e[t]) && void 0 !== n ? n : 0 } function Qr(e, t) { var n = e.getBoundingClientRect() return (0, qr.RX)((0, qr.dV)(n, t)) } function Jr(e, t, n) { return void 0 === t && (t = 0), void 0 === n && (n = 0.01), Ir(e, t) < n } function ei(e) { return e.max - e.min } function ti(e, t) { var n = 0.5, r = ei(e), i = ei(t) return ( i > r ? (n = Mt(t.min, t.max - r, e.min)) : r > i && (n = Mt(e.min, e.max - i, t.min)), Et(0, 1, n) ) } function ni(e, t, n, r) { void 0 === r && (r = 0.5), (e.origin = r), (e.originPoint = Rt(t.min, t.max, e.origin)), (e.scale = ei(n) / ei(t)), Jr(e.scale, 1, 1e-4) && (e.scale = 1), (e.translate = Rt(n.min, n.max, e.origin) - e.originPoint), Jr(e.translate) && (e.translate = 0) } function ri(e, t, n, r) { ni(e.x, t.x, n.x, ii(r.originX)), ni(e.y, t.y, n.y, ii(r.originY)) } function ii(e) { return 'number' === typeof e ? e : 0.5 } function oi(e, t, n) { ;(e.min = n.min + t.min), (e.max = e.min + ei(t)) } var ai = n(8839) function si(e, t) { return { min: t.min - e.min, max: t.max - e.min } } function ui(e, t) { return { x: si(e.x, t.x), y: si(e.y, t.y) } } function li(e, t) { var n = e.getLayoutId(), r = t.getLayoutId() return n !== r || (void 0 === r && e !== t) } function ci(e) { var t = e.getProps(), n = t.drag, r = t._dragX return n && !r } function di(e, t) { ;(e.min = t.min), (e.max = t.max) } function fi(e, t, n) { return n + t * (e - n) } function hi(e, t, n, r, i) { return void 0 !== i && (e = fi(e, i, r)), fi(e, n, r) + t } function pi(e, t, n, r, i) { void 0 === t && (t = 0), void 0 === n && (n = 1), (e.min = hi(e.min, t, n, r, i)), (e.max = hi(e.max, t, n, r, i)) } function vi(e, t) { var n = t.x, r = t.y pi(e.x, n.translate, n.scale, n.originPoint), pi(e.y, r.translate, r.scale, r.originPoint) } function mi(e, t, n, i) { var o = (0, r.CR)(i, 3), a = o[0], s = o[1], u = o[2] ;(e.min = t.min), (e.max = t.max) var l = void 0 !== n[u] ? n[u] : 0.5, c = Rt(t.min, t.max, l) pi(e, n[a], n[s], c, n.scale) } var gi = ['x', 'scaleX', 'originX'], yi = ['y', 'scaleY', 'originY'] function bi(e, t, n) { mi(e.x, t.x, n, gi), mi(e.y, t.y, n, yi) } function wi(e, t, n, r, i) { return (e = fi((e -= t), 1 / n, r)), void 0 !== i && (e = fi(e, 1 / i, r)), e } function xi(e, t, n) { var i = (0, r.CR)(n, 3), o = i[0], a = i[1], s = i[2] !(function (e, t, n, r, i) { void 0 === t && (t = 0), void 0 === n && (n = 1), void 0 === r && (r = 0.5) var o = Rt(e.min, e.max, r) - t ;(e.min = wi(e.min, t, n, o, i)), (e.max = wi(e.max, t, n, o, i)) })(e, t[o], t[a], t[s], t.scale) } function Ei(e, t) { xi(e.x, t, gi), xi(e.y, t, yi) } var ki, _i = n(7565), Ti = new WeakMap(), Oi = (function () { function e(e) { var t = e.visualElement ;(this.isDragging = !1), (this.currentDirection = null), (this.constraints = !1), (this.elastic = (0, qr.VZ)()), (this.props = {}), (this.hasMutatedConstraints = !1), (this.cursorProgress = { x: 0.5, y: 0.5 }), (this.originPoint = {}), (this.openGlobalLock = null), (this.panSession = null), (this.visualElement = t), this.visualElement.enableLayoutProjection(), Ti.set(t, this) } return ( (e.prototype.start = function (e, t) { var n = this, i = void 0 === t ? {} : t, o = i.snapToCursor, a = void 0 !== o && o, s = i.cursorProgress, u = this.props.transformPagePoint this.panSession = new zr( e, { onSessionStart: function (e) { var t n.stopMotion() var i = (function (e) { return et(e, 'client') })(e).point null === (t = n.cancelLayout) || void 0 === t || t.call(n), (n.cancelLayout = (0, _i.U)(function (e, t) { var o = (0, ai.kv)(n.visualElement), u = (0, ai.e3)(n.visualElement), l = (0, r.ev)((0, r.ev)([], (0, r.CR)(o)), (0, r.CR)(u)), c = !1 n.isLayoutDrag() && n.visualElement.lockProjectionTarget(), t(function () { l.forEach(function (e) { return e.resetTransform() }) }), e(function () { ;(0, ai.de)(n.visualElement), u.forEach(ai.de) }), t(function () { l.forEach(function (e) { return e.restoreTransform() }), a && (c = n.snapToCursor(i)) }), e(function () { Boolean(n.getAxisMotionValue('x') && !n.isExternalDrag()) || n.visualElement.rebaseProjectionTarget( !0, n.visualElement.measureViewportBox(!1), ), n.visualElement.scheduleUpdateLayoutProjection() var e = n.visualElement.projection Wr(function (t) { if (!c) { var r = e.target[t], o = r.min, a = r.max n.cursorProgress[t] = s ? s[t] : Mt(o, a, i[t]) } var u = n.getAxisMotionValue(t) u && (n.originPoint[t] = u.get()) }) }), t(function () { An.iW.update(), An.iW.preRender(), An.iW.render(), An.iW.postRender() }), e(function () { return n.resolveDragConstraints() }) })) }, onStart: function (e, t) { var r, i, o, a = n.props, s = a.drag, u = a.dragPropagation ;(!s || u || (n.openGlobalLock && n.openGlobalLock(), (n.openGlobalLock = ct(s)), n.openGlobalLock)) && ((0, _i.R)(), (n.isDragging = !0), (n.currentDirection = null), null === (i = (r = n.props).onDragStart) || void 0 === i || i.call(r, e, t), null === (o = n.visualElement.animationState) || void 0 === o || o.setActive(qe.Drag, !0)) }, onMove: function (e, t) { var r, i, o, a, s = n.props, u = s.dragPropagation, l = s.dragDirectionLock if (u || n.openGlobalLock) { var c = t.offset if (l && null === n.currentDirection) return ( (n.currentDirection = (function (e, t) { void 0 === t && (t = 10) var n = null Math.abs(e.y) > t ? (n = 'y') : Math.abs(e.x) > t && (n = 'x') return n })(c)), void ( null !== n.currentDirection && (null === (i = (r = n.props).onDirectionLock) || void 0 === i || i.call(r, n.currentDirection)) ) ) n.updateAxis('x', t.point, c), n.updateAxis('y', t.point, c), null === (a = (o = n.props).onDrag) || void 0 === a || a.call(o, e, t), (ki = e) } }, onSessionEnd: function (e, t) { return n.stop(e, t) }, }, { transformPagePoint: u }, ) }), (e.prototype.resolveDragConstraints = function () { var e = this, t = this.props, n = t.dragConstraints, r = t.dragElastic, i = this.visualElement.getLayoutState().layoutCorrected ;(this.constraints = !!n && (k(n) ? this.resolveRefConstraints(i, n) : (function (e, t) { var n = t.top, r = t.left, i = t.bottom, o = t.right return { x: Zr(e.x, r, o), y: Zr(e.y, n, i) } })(i, n))), (this.elastic = (function (e) { return ( !1 === e ? (e = 0) : !0 === e && (e = 0.35), { x: Xr(e, 'left', 'right'), y: Xr(e, 'top', 'bottom') } ) })(r)), this.constraints && !this.hasMutatedConstraints && Wr(function (t) { e.getAxisMotionValue(t) && (e.constraints[t] = (function (e, t) { var n = {} return ( void 0 !== t.min && (n.min = t.min - e.min), void 0 !== t.max && (n.max = t.max - e.min), n ) })(i[t], e.constraints[t])) }) }), (e.prototype.resolveRefConstraints = function (e, t) { var n = this.props, r = n.onMeasureDragConstraints, i = n.transformPagePoint, o = t.current this.constraintsBox = Qr(o, i) var a = (function (e, t) { return { x: $r(e.x, t.x), y: $r(e.y, t.y) } })(e, this.constraintsBox) if (r) { var s = r((0, qr._6)(a)) ;(this.hasMutatedConstraints = !!s), s && (a = (0, qr.RX)(s)) } return a }), (e.prototype.cancelDrag = function () { var e, t this.visualElement.unlockProjectionTarget(), null === (e = this.cancelLayout) || void 0 === e || e.call(this), (this.isDragging = !1), this.panSession && this.panSession.end(), (this.panSession = null), !this.props.dragPropagation && this.openGlobalLock && (this.openGlobalLock(), (this.openGlobalLock = null)), null === (t = this.visualElement.animationState) || void 0 === t || t.setActive(qe.Drag, !1) }), (e.prototype.stop = function (e, t) { var n, r, i null === (n = this.panSession) || void 0 === n || n.end(), (this.panSession = null) var o = this.isDragging if ((this.cancelDrag(), o)) { var a = t.velocity this.animateDragEnd(a), null === (i = (r = this.props).onDragEnd) || void 0 === i || i.call(r, e, t) } }), (e.prototype.snapToCursor = function (e) { var t = this return Wr(function (n) { if (Ci(n, t.props.drag, t.currentDirection)) { var r = t.getAxisMotionValue(n) if (!r) return (t.cursorProgress[n] = 0.5), !0 var i = t.visualElement.getLayoutState().layout, o = i[n].max - i[n].min, a = i[n].min + o / 2, s = e[n] - a ;(t.originPoint[n] = e[n]), r.set(s) } }).includes(!0) }), (e.prototype.updateAxis = function (e, t, n) { if (Ci(e, this.props.drag, this.currentDirection)) return this.getAxisMotionValue(e) ? this.updateAxisMotionValue(e, n) : this.updateVisualElementAxis(e, t) }), (e.prototype.updateAxisMotionValue = function (e, t) { var n = this.getAxisMotionValue(e) if (t && n) { var r = this.originPoint[e] + t[e], i = this.constraints ? Kr(r, this.constraints[e], this.elastic[e]) : r n.set(i) } }), (e.prototype.updateVisualElementAxis = function (e, t) { var n, r = this.visualElement.getLayoutState().layout[e], i = r.max - r.min, o = this.cursorProgress[e], a = (function (e, t, n, r, i) { var o = e - t * n return r ? Kr(o, r, i) : o })( t[e], i, o, null === (n = this.constraints) || void 0 === n ? void 0 : n[e], this.elastic[e], ) this.visualElement.setProjectionTargetAxis(e, a, a + i) }), (e.prototype.setProps = function (e) { var t = e.drag, n = void 0 !== t && t, i = e.dragDirectionLock, o = void 0 !== i && i, a = e.dragPropagation, s = void 0 !== a && a, u = e.dragConstraints, l = void 0 !== u && u, c = e.dragElastic, d = void 0 === c ? 0.35 : c, f = e.dragMomentum, h = void 0 === f || f, p = (0, r._T)(e, [ 'drag', 'dragDirectionLock', 'dragPropagation', 'dragConstraints', 'dragElastic', 'dragMomentum', ]) this.props = (0, r.pi)( { drag: n, dragDirectionLock: o, dragPropagation: s, dragConstraints: l, dragElastic: d, dragMomentum: h, }, p, ) }), (e.prototype.getAxisMotionValue = function (e) { var t = this.props, n = t.layout, r = t.layoutId, i = '_drag' + e.toUpperCase() return this.props[i] ? this.props[i] : n || void 0 !== r ? void 0 : this.visualElement.getValue(e, 0) }), (e.prototype.isLayoutDrag = function () { return !this.getAxisMotionValue('x') }), (e.prototype.isExternalDrag = function () { var e = this.props, t = e._dragX, n = e._dragY return t || n }), (e.prototype.animateDragEnd = function (e) { var t = this, n = this.props, i = n.drag, o = n.dragMomentum, a = n.dragElastic, s = n.dragTransition, u = (function (e, t) { void 0 === t && (t = !0) var n, r = e.getProjectionParent() return ( !!r && (t ? Ei((n = ui(r.projection.target, e.projection.target)), r.getLatestValues()) : (n = ui(r.getLayoutState().layout, e.getLayoutState().layout)), Wr(function (t) { return e.setProjectionTargetAxis(t, n[t].min, n[t].max, !0) }), !0) ) })(this.visualElement, this.isLayoutDrag() && !this.isExternalDrag()), l = this.constraints || {} if (u && Object.keys(l).length && this.isLayoutDrag()) { var c = this.visualElement.getProjectionParent() if (c) { var d = ui(c.projection.targetFinal, l) Wr(function (e) { var t = d[e], n = t.min, r = t.max l[e] = { min: isNaN(n) ? void 0 : n, max: isNaN(r) ? void 0 : r } }) } } var f = Wr(function (n) { var c if (Ci(n, i, t.currentDirection)) { var d = null !== (c = null === l || void 0 === l ? void 0 : l[n]) && void 0 !== c ? c : {}, f = a ? 200 : 1e6, h = a ? 40 : 1e7, p = (0, r.pi)( (0, r.pi)( { type: 'inertia', velocity: o ? e[n] : 0, bounceStiffness: f, bounceDamping: h, timeConstant: 750, restDelta: 1, restSpeed: 10, }, s, ), d, ) return t.getAxisMotionValue(n) ? t.startAxisValueAnimation(n, p) : t.visualElement.startLayoutAnimation(n, p, u) } }) return Promise.all(f).then(function () { var e, n null === (n = (e = t.props).onDragTransitionEnd) || void 0 === n || n.call(e) }) }), (e.prototype.stopMotion = function () { var e = this Wr(function (t) { var n = e.getAxisMotionValue(t) n ? n.stop() : e.visualElement.stopLayoutAnimation() }) }), (e.prototype.startAxisValueAnimation = function (e, t) { var n = this.getAxisMotionValue(e) if (n) { var r = n.get() return n.set(r), n.set(r), lr(e, n, 0, t) } }), (e.prototype.scalePoint = function () { var e = this, t = this.props, n = t.drag if (k(t.dragConstraints) && this.constraintsBox) { this.stopMotion() var r = { x: 0, y: 0 } Wr(function (t) { r[t] = ti(e.visualElement.projection.target[t], e.constraintsBox[t]) }), this.updateConstraints(function () { Wr(function (t) { if (Ci(t, n, null)) { var i = (function (e, t, n) { var r = e.max - e.min, i = Rt(t.min, t.max - r, n) return { min: i, max: i + r } })(e.visualElement.projection.target[t], e.constraintsBox[t], r[t]), o = i.min, a = i.max e.visualElement.setProjectionTargetAxis(t, o, a) } }) }), setTimeout(_i.R, 1) } }), (e.prototype.updateConstraints = function (e) { var t = this this.cancelLayout = (0, _i.U)(function (n, r) { var i = (0, ai.kv)(t.visualElement) r(function () { return i.forEach(function (e) { return e.resetTransform() }) }), n(function () { return (0, ai.de)(t.visualElement) }), r(function () { return i.forEach(function (e) { return e.restoreTransform() }) }), n(function () { t.resolveDragConstraints() }), e && r(e) }) }), (e.prototype.mount = function (e) { var t = this, n = ot(e.getInstance(), 'pointerdown', function (e) { var n = t.props, r = n.drag, i = n.dragListener r && (void 0 === i || i) && t.start(e) }), r = Ke(window, 'resize', function () { t.scalePoint() }), i = e.onLayoutUpdate(function () { t.isDragging && t.resolveDragConstraints() }), o = e.prevDragCursor return ( o && this.start(ki, { cursorProgress: o }), function () { null === n || void 0 === n || n(), null === r || void 0 === r || r(), null === i || void 0 === i || i(), t.cancelDrag() } ) }), e ) })() function Ci(e, t, n) { return (!0 === t || t === e) && (null === n || n === e) } var Si = { pan: gt(function (e) { var t = e.onPan, n = e.onPanStart, r = e.onPanEnd, o = e.onPanSessionStart, a = e.visualElement, s = t || n || r || o, u = (0, i.useRef)(null), l = (0, i.useContext)(c).transformPagePoint, d = { onSessionStart: o, onStart: n, onMove: t, onEnd: function (e, t) { ;(u.current = null), r && r(e, t) }, } ;(0, i.useEffect)(function () { null !== u.current && u.current.updateHandlers(d) }), at( a, 'pointerdown', s && function (e) { u.current = new zr(e, d, { transformPagePoint: l }) }, ), (0, pt.z)(function () { return u.current && u.current.end() }) }), drag: gt(function (e) { var t = e.dragControls, n = e.visualElement, o = (0, i.useContext)(c).transformPagePoint, a = (0, h.h)(function () { return new Oi({ visualElement: n }) }) a.setProps((0, r.pi)((0, r.pi)({}, e), { transformPagePoint: o })), (0, i.useEffect)( function () { return t && t.subscribe(a) }, [a], ), (0, i.useEffect)(function () { return a.mount(n) }, []) }), }, Ai = n(7646) function Pi(e) { return 'string' === typeof e && e.startsWith('var(--') } var Mi = /var\((--[a-zA-Z0-9-_]+),? ?([a-zA-Z0-9 ()%#.,-]+)?\)/ function Ri(e, t, n) { void 0 === n && (n = 1) var i = (0, r.CR)( (function (e) { var t = Mi.exec(e) if (!t) return [,] var n = (0, r.CR)(t, 3) return [n[1], n[2]] })(e), 2, ), o = i[0], a = i[1] if (o) { var s = window.getComputedStyle(t).getPropertyValue(o) return s ? s.trim() : Pi(a) ? Ri(a, t, n + 1) : a } } function ji(e, t) { return (e / (t.max - t.min)) * 100 } var Di = '_$css' var Li = { process: function (e, t, n) { var r = n.target if ('string' === typeof e) { if (!oe.test(e)) return e e = parseFloat(e) } return ji(e, r.x) + '% ' + ji(e, r.y) + '%' }, }, Ni = { borderRadius: (0, r.pi)((0, r.pi)({}, Li), { applyTo: [ 'borderTopLeftRadius', 'borderTopRightRadius', 'borderBottomLeftRadius', 'borderBottomRightRadius', ], }), borderTopLeftRadius: Li, borderTopRightRadius: Li, borderBottomLeftRadius: Li, borderBottomRightRadius: Li, boxShadow: { process: function (e, t) { var n = t.delta, r = t.treeScale, i = e, o = e.includes('var('), a = [] o && (e = e.replace(Mi, function (e) { return a.push(e), Di })) var s = Qt.parse(e) if (s.length > 5) return i var u = Qt.createTransformer(e), l = 'number' !== typeof s[0] ? 1 : 0, c = n.x.scale * r.x, d = n.y.scale * r.y ;(s[0 + l] /= c), (s[1 + l] /= d) var f = Rt(c, d, 0.5) 'number' === typeof s[2 + l] && (s[2 + l] /= f), 'number' === typeof s[3 + l] && (s[3 + l] /= f) var h = u(s) if (o) { var p = 0 h = h.replace(Di, function () { var e = a[p] return p++, e }) } return h }, }, }, Ii = (function (e) { function t() { var t = (null !== e && e.apply(this, arguments)) || this return ( (t.frameTarget = (0, qr.VZ)()), (t.currentAnimationTarget = (0, qr.VZ)()), (t.isAnimating = { x: !1, y: !1 }), (t.stopAxisAnimation = { x: void 0, y: void 0 }), (t.isAnimatingTree = !1), (t.animate = function (e, n, i) { void 0 === i && (i = {}) var o = i.originBox, a = i.targetBox, s = i.visibilityAction, u = i.shouldStackAnimate, l = i.onComplete, c = i.prevParent, d = (0, r._T)(i, [ 'originBox', 'targetBox', 'visibilityAction', 'shouldStackAnimate', 'onComplete', 'prevParent', ]), f = t.props, h = f.visualElement, p = f.layout if (!1 === u) return (t.isAnimatingTree = !1), t.safeToRemove() if (!t.isAnimatingTree || !0 === u) { u && (t.isAnimatingTree = !0), (n = o || n), (e = a || e) var v = !1, m = h.getProjectionParent() if (m) { var g = m.prevViewportBox, y = m.getLayoutState().layout c && (a && (y = c.getLayoutState().layout), o && !li(c, m) && c.prevViewportBox && (g = c.prevViewportBox)), g && Ui(c, o, a) && ((v = !0), (n = ui(g, n)), (e = ui(y, e))) } var b = zi(n, e), w = Wr(function (i) { var o, a if ('position' === p) { var u = e[i].max - e[i].min n[i].max = n[i].min + u } if (!h.projection.isTargetLocked) return void 0 === s ? b ? t.animateAxis( i, e[i], n[i], (0, r.pi)((0, r.pi)({}, d), { isRelative: v }), ) : (null === (a = (o = t.stopAxisAnimation)[i]) || void 0 === a || a.call(o), h.setProjectionTargetAxis(i, e[i].min, e[i].max, v)) : void h.setVisibility(s === Ai.c.Show) }) return ( h.syncRender(), Promise.all(w).then(function () { ;(t.isAnimatingTree = !1), l && l(), h.notifyLayoutAnimationComplete() }) ) } }), t ) } return ( (0, r.ZT)(t, e), (t.prototype.componentDidMount = function () { var e = this, t = this.props.visualElement ;(t.animateMotionValue = lr), t.enableLayoutProjection(), (this.unsubLayoutReady = t.onLayoutUpdate(this.animate)), (t.layoutSafeToRemove = function () { return e.safeToRemove() }), (function (e) { for (var t in e) N[t] = e[t] })(Ni) }), (t.prototype.componentWillUnmount = function () { var e = this this.unsubLayoutReady(), Wr(function (t) { var n, r return null === (r = (n = e.stopAxisAnimation)[t]) || void 0 === r ? void 0 : r.call(n) }) }), (t.prototype.animateAxis = function (e, t, n, r) { var i, o, a = this, s = void 0 === r ? {} : r, u = s.transition, l = s.isRelative if (!this.isAnimating[e] || !Fi(t, this.currentAnimationTarget[e])) { null === (o = (i = this.stopAxisAnimation)[e]) || void 0 === o || o.call(i), (this.isAnimating[e] = !0) var c = this.props.visualElement, d = this.frameTarget[e], f = c.getProjectionAnimationProgress()[e] f.clearListeners(), f.set(0), f.set(0) var h = function () { var r = f.get() / 1e3 !(function (e, t, n, r) { ;(e.min = Rt(t.min, n.min, r)), (e.max = Rt(t.max, n.max, r)) })(d, n, t, r), c.setProjectionTargetAxis(e, d.min, d.max, l) } h() var p = f.onChange(h) ;(this.stopAxisAnimation[e] = function () { ;(a.isAnimating[e] = !1), f.stop(), p() }), (this.currentAnimationTarget[e] = t) var v = u || c.getDefaultTransition() || Vi return lr('x' === e ? 'layoutX' : 'layoutY', f, 1e3, v && ur(v, 'layout')).then( this.stopAxisAnimation[e], ) } }), (t.prototype.safeToRemove = function () { var e, t null === (t = (e = this.props).safeToRemove) || void 0 === t || t.call(e) }), (t.prototype.render = function () { return null }), t ) })(i.Component) function zi(e, t) { return !Bi(e) && !Bi(t) && (!Fi(e.x, t.x) || !Fi(e.y, t.y)) } var Hi = { min: 0, max: 0 } function Bi(e) { return Fi(e.x, Hi) && Fi(e.y, Hi) } function Fi(e, t) { return e.min === t.min && e.max === t.max } var Vi = { duration: 0.45, ease: [0.4, 0, 0.1, 1] } function Ui(e, t, n) { return e || (!e && !(t || n)) } var Gi = n(9870), qi = (function (e) { function t() { return (null !== e && e.apply(this, arguments)) || this } return ( (0, r.ZT)(t, e), (t.prototype.componentDidMount = function () { var e = this.props, t = e.syncLayout, n = e.framerSyncLayout, r = e.visualElement ;(0, Gi.Md)(t) && t.register(r), (0, Gi.Md)(n) && n.register(r), r.onUnmount(function () { ;(0, Gi.Md)(t) && t.remove(r), (0, Gi.Md)(n) && n.remove(r) }) }), (t.prototype.getSnapshotBeforeUpdate = function () { var e = this.props, t = e.syncLayout, n = e.visualElement return (0, Gi.Md)(t) ? t.syncUpdate() : ((0, ai.x7)(n), t.add(n)), null }), (t.prototype.componentDidUpdate = function () { var e = this.props.syncLayout ;(0, Gi.Md)(e) || e.flush() }), (t.prototype.render = function () { return null }), t ) })(i.Component) var Wi = { measureLayout: function (e) { var t = (0, i.useContext)(Gi.WH), n = (0, i.useContext)(Gi.bg) return i.createElement(qi, (0, r.pi)({}, e, { syncLayout: t, framerSyncLayout: n })) }, layoutAnimation: function (e) { var t = (0, r.CR)(p(), 2)[1] return i.createElement(Ii, (0, r.pi)({}, e, { safeToRemove: t })) }, } function Ki() { return { isHydrated: !1, layout: (0, qr.VZ)(), layoutCorrected: (0, qr.VZ)(), treeScale: { x: 1, y: 1 }, delta: (0, qr.pY)(), deltaFinal: (0, qr.pY)(), deltaTransform: '', } } var Zi = Ki() function $i(e, t, n) { var r = e.x, i = e.y, o = 'translate3d(' + r.translate / t.x + 'px, ' + i.translate / t.y + 'px, 0) ' if (n) { var a = n.rotate, s = n.rotateX, u = n.rotateY a && (o += 'rotate(' + a + ') '), s && (o += 'rotateX(' + s + ') '), u && (o += 'rotateY(' + u + ') ') } return (o += 'scale(' + r.scale + ', ' + i.scale + ')'), n || o !== Yi ? o : '' } function Xi(e) { var t = e.deltaFinal return 100 * t.x.origin + '% ' + 100 * t.y.origin + '% 0' } var Yi = $i(Zi.delta, Zi.treeScale, { x: 1, y: 1 }), Qi = [ 'LayoutMeasure', 'BeforeLayoutMeasure', 'LayoutUpdate', 'ViewportBoxUpdate', 'Update', 'Render', 'AnimationComplete', 'LayoutAnimationComplete', 'AnimationStart', 'SetAxisTarget', 'Unmount', ] function Ji(e, t, n, r) { var i, o, a = e.delta, s = e.layout, u = e.layoutCorrected, l = e.treeScale, c = t.target ;(o = s), di((i = u).x, o.x), di(i.y, o.y), (function (e, t, n) { var r = n.length if (r) { var i, o t.x = t.y = 1 for (var a = 0; a < r; a++) (o = (i = n[a]).getLayoutState().delta), (t.x *= o.x.scale), (t.y *= o.y.scale), vi(e, o), ci(i) && bi(e, e, i.getLatestValues()) } })(u, l, n), ri(a, u, c, r) } var eo = n(519), to = (function () { function e() { ;(this.children = []), (this.isDirty = !1) } return ( (e.prototype.add = function (e) { cr(this.children, e), (this.isDirty = !0) }), (e.prototype.remove = function (e) { dr(this.children, e), (this.isDirty = !0) }), (e.prototype.forEach = function (e) { this.isDirty && this.children.sort(eo._), (this.isDirty = !1), this.children.forEach(e) }), e ) })() var no = function (e) { var t = e.treeType, n = void 0 === t ? '' : t, i = e.build, o = e.getBaseTarget, a = e.makeTargetAnimatable, s = e.measureViewportBox, u = e.render, l = e.readValueFromInstance, c = e.resetTransform, d = e.restoreTransform, f = e.removeValueFromRenderState, h = e.sortNodePosition, p = e.scrapeMotionValuesFromProps return function (e, t) { var v = e.parent, m = e.props, g = e.presenceId, y = e.blockInitialAnimation, b = e.visualState void 0 === t && (t = {}) var w, x, E, k, _, O, C = b.latestValues, P = b.renderState, M = (function () { var e = Qi.map(function () { return new fr() }), t = {}, n = { clearAllListeners: function () { return e.forEach(function (e) { return e.clear() }) }, updatePropListeners: function (e) { return Qi.forEach(function (r) { var i null === (i = t[r]) || void 0 === i || i.call(t) var o = 'on' + r, a = e[o] a && (t[r] = n[o](a)) }) }, } return ( e.forEach(function (e, t) { ;(n['on' + Qi[t]] = function (t) { return e.add(t) }), (n['notify' + Qi[t]] = function () { for (var t = [], n = 0; n < arguments.length; n++) t[n] = arguments[n] return e.notify.apply(e, (0, r.ev)([], (0, r.CR)(t))) }) }), n ) })(), R = { isEnabled: !1, isHydrated: !1, isTargetLocked: !1, target: (0, qr.VZ)(), targetFinal: (0, qr.VZ)(), }, j = R, D = C, L = Ki(), N = !1, I = new Map(), z = new Map(), H = {}, B = (0, r.pi)({}, C) function F() { w && (Y.isProjectionReady() && (bi(j.targetFinal, j.target, D), ri(L.deltaFinal, L.layoutCorrected, j.targetFinal, C)), V(), u(w, P)) } function V() { var e = C if (k && k.isActive()) { var n = k.getCrossfadeState(Y) n && (e = n) } i(Y, P, e, j, L, t, m) } function U() { M.notifyUpdate(C) } function G() { Y.layoutTree.forEach(io) } var W = p(m) for (var K in W) { var Z = W[K] void 0 !== C[K] && q(Z) && Z.set(C[K], !1) } var $ = S(m), X = A(m), Y = (0, r.pi)( (0, r.pi)( { treeType: n, current: null, depth: v ? v.depth + 1 : 0, parent: v, children: new Set(), path: v ? (0, r.ev)((0, r.ev)([], (0, r.CR)(v.path)), [v]) : [], layoutTree: v ? v.layoutTree : new to(), presenceId: g, projection: R, variantChildren: X ? new Set() : void 0, isVisible: void 0, manuallyAnimateOnMount: Boolean( null === v || void 0 === v ? void 0 : v.isMounted(), ), blockInitialAnimation: y, isMounted: function () { return Boolean(w) }, mount: function (e) { ;(w = Y.current = e), Y.pointTo(Y), X && v && !$ && (O = null === v || void 0 === v ? void 0 : v.addVariantChild(Y)), null === v || void 0 === v || v.children.add(Y) }, unmount: function () { An.qY.update(U), An.qY.render(F), An.qY.preRender(Y.updateLayoutProjection), z.forEach(function (e) { return e() }), Y.stopLayoutAnimation(), Y.layoutTree.remove(Y), null === O || void 0 === O || O(), null === v || void 0 === v || v.children.delete(Y), null === E || void 0 === E || E(), M.clearAllListeners() }, addVariantChild: function (e) { var t, n = Y.getClosestVariantNode() if (n) return ( null === (t = n.variantChildren) || void 0 === t || t.add(e), function () { return n.variantChildren.delete(e) } ) }, sortNodePosition: function (e) { return h && n === e.treeType ? h(Y.getInstance(), e.getInstance()) : 0 }, getClosestVariantNode: function () { return X ? Y : null === v || void 0 === v ? void 0 : v.getClosestVariantNode() }, scheduleUpdateLayoutProjection: v ? v.scheduleUpdateLayoutProjection : function () { return An.ZP.preRender(Y.updateTreeLayoutProjection, !1, !0) }, getLayoutId: function () { return m.layoutId }, getInstance: function () { return w }, getStaticValue: function (e) { return C[e] }, setStaticValue: function (e, t) { return (C[e] = t) }, getLatestValues: function () { return C }, setVisibility: function (e) { Y.isVisible !== e && ((Y.isVisible = e), Y.scheduleRender()) }, makeTargetAnimatable: function (e, t) { return void 0 === t && (t = !0), a(Y, e, m, t) }, addValue: function (e, t) { Y.hasValue(e) && Y.removeValue(e), I.set(e, t), (C[e] = t.get()), (function (e, t) { var n = t.onChange(function (t) { ;(C[e] = t), m.onUpdate && An.ZP.update(U, !1, !0) }), r = t.onRenderRequest(Y.scheduleRender) z.set(e, function () { n(), r() }) })(e, t) }, removeValue: function (e) { var t I.delete(e), null === (t = z.get(e)) || void 0 === t || t(), z.delete(e), delete C[e], f(e, P) }, hasValue: function (e) { return I.has(e) }, getValue: function (e, t) { var n = I.get(e) return void 0 === n && void 0 !== t && ((n = pr(t)), Y.addValue(e, n)), n }, forEachValue: function (e) { return I.forEach(e) }, readValue: function (e) { var n return null !== (n = C[e]) && void 0 !== n ? n : l(w, e, t) }, setBaseTarget: function (e, t) { B[e] = t }, getBaseTarget: function (e) { if (o) { var t = o(m, e) if (void 0 !== t && !q(t)) return t } return B[e] }, }, M, ), { build: function () { return V(), P }, scheduleRender: function () { An.ZP.render(F, !1, !0) }, syncRender: F, setProps: function (e) { ;(m = e), M.updatePropListeners(e), (H = (function (e, t, n) { var r for (var i in t) { var o = t[i], a = n[i] if (q(o)) e.addValue(i, o) else if (q(a)) e.addValue(i, pr(o)) else if (a !== o) if (e.hasValue(i)) { var s = e.getValue(i) !s.hasAnimated && s.set(o) } else e.addValue( i, pr(null !== (r = e.getStaticValue(i)) && void 0 !== r ? r : o), ) } for (var i in n) void 0 === t[i] && e.removeValue(i) return t })(Y, p(m), H)) }, getProps: function () { return m }, getVariant: function (e) { var t return null === (t = m.variants) || void 0 === t ? void 0 : t[e] }, getDefaultTransition: function () { return m.transition }, getVariantContext: function (e) { if ((void 0 === e && (e = !1), e)) return null === v || void 0 === v ? void 0 : v.getVariantContext() if (!$) { var t = (null === v || void 0 === v ? void 0 : v.getVariantContext()) || {} return void 0 !== m.initial && (t.initial = m.initial), t } for (var n = {}, r = 0; r < so; r++) { var i = ao[r], o = m[i] ;(T(o) || !1 === o) && (n[i] = o) } return n }, enableLayoutProjection: function () { ;(R.isEnabled = !0), Y.layoutTree.add(Y) }, lockProjectionTarget: function () { R.isTargetLocked = !0 }, unlockProjectionTarget: function () { Y.stopLayoutAnimation(), (R.isTargetLocked = !1) }, getLayoutState: function () { return L }, setCrossfader: function (e) { k = e }, isProjectionReady: function () { return R.isEnabled && R.isHydrated && L.isHydrated }, startLayoutAnimation: function (e, t, n) { void 0 === n && (n = !1) var r = Y.getProjectionAnimationProgress()[e], i = n ? R.relativeTarget[e] : R.target[e], o = i.min, a = i.max - o return ( r.clearListeners(), r.set(o), r.set(o), r.onChange(function (t) { Y.setProjectionTargetAxis(e, t, t + a, n) }), Y.animateMotionValue(e, r, 0, t) ) }, stopLayoutAnimation: function () { Wr(function (e) { return Y.getProjectionAnimationProgress()[e].stop() }) }, measureViewportBox: function (e) { void 0 === e && (e = !0) var n = s(w, t) return e || Ei(n, C), n }, getProjectionAnimationProgress: function () { return _ || (_ = { x: pr(0), y: pr(0) }), _ }, setProjectionTargetAxis: function (e, t, n, r) { var i void 0 === r && (r = !1), r ? (R.relativeTarget || (R.relativeTarget = (0, qr.VZ)()), (i = R.relativeTarget[e])) : ((R.relativeTarget = void 0), (i = R.target[e])), (R.isHydrated = !0), (i.min = t), (i.max = n), (N = !0), M.notifySetAxisTarget() }, rebaseProjectionTarget: function (e, t) { void 0 === t && (t = L.layout) var n = Y.getProjectionAnimationProgress(), r = n.x, i = n.y, o = !R.relativeTarget && !R.isTargetLocked && !r.isAnimating() && !i.isAnimating() ;(e || o) && Wr(function (e) { var n = t[e], r = n.min, i = n.max Y.setProjectionTargetAxis(e, r, i) }) }, notifyLayoutReady: function (e) { !(function (e) { var t = e.getProjectionParent() if (t) { var n = ui(t.getLayoutState().layout, e.getLayoutState().layout) Wr(function (t) { e.setProjectionTargetAxis(t, n[t].min, n[t].max, !0) }) } else e.rebaseProjectionTarget() })(Y), Y.notifyLayoutUpdate(L.layout, Y.prevViewportBox || L.layout, e) }, resetTransform: function () { return c(Y, w, m) }, restoreTransform: function () { return d(w, P) }, updateLayoutProjection: function () { if (Y.isProjectionReady()) { var e = L.delta, t = L.treeScale, n = t.x, r = t.y, i = L.deltaTransform Ji(L, j, Y.path, C), N && Y.notifyViewportBoxUpdate(j.target, e), (N = !1) var o = $i(e, t) ;(o === i && n === t.x && r === t.y) || Y.scheduleRender(), (L.deltaTransform = o) } }, updateTreeLayoutProjection: function () { Y.layoutTree.forEach(ro), An.ZP.preRender(G, !1, !0) }, getProjectionParent: function () { if (void 0 === x) { for (var e = !1, t = Y.path.length - 1; t >= 0; t--) { var n = Y.path[t] if (n.projection.isEnabled) { e = n break } } x = e } return x }, resolveRelativeTargetBox: function () { var e = Y.getProjectionParent() if ( R.relativeTarget && e && ((function (e, t) { oi(e.target.x, e.relativeTarget.x, t.target.x), oi(e.target.y, e.relativeTarget.y, t.target.y) })(R, e.projection), ci(e)) ) { var t = R.target bi(t, t, e.getLatestValues()) } }, shouldResetTransform: function () { return Boolean(m._layoutResetTransform) }, pointTo: function (e) { ;(j = e.projection), (D = e.getLatestValues()), null === E || void 0 === E || E(), (E = mt( e.onSetAxisTarget(Y.scheduleUpdateLayoutProjection), e.onLayoutAnimationComplete(function () { var e Y.isPresent ? (Y.presence = Ai.z.Present) : null === (e = Y.layoutSafeToRemove) || void 0 === e || e.call(Y) }), )) }, isPresent: !0, presence: Ai.z.Entering, }, ) return Y } } function ro(e) { e.resolveRelativeTargetBox() } function io(e) { e.updateLayoutProjection() } var oo, ao = (0, r.ev)(['initial'], (0, r.CR)(Cr)), so = ao.length, uo = new Set(['width', 'height', 'top', 'left', 'right', 'bottom', 'x', 'y']), lo = function (e) { return uo.has(e) }, co = function (e, t) { e.set(t, !1), e.set(t) }, fo = function (e) { return e === le || e === oe } !(function (e) { ;(e.width = 'width'), (e.height = 'height'), (e.left = 'left'), (e.right = 'right'), (e.top = 'top'), (e.bottom = 'bottom') })(oo || (oo = {})) var ho = function (e, t) { return parseFloat(e.split(', ')[t]) }, po = function (e, t) { return function (n, r) { var i = r.transform if ('none' === i || !i) return 0 var o = i.match(/^matrix3d\((.+)\)$/) if (o) return ho(o[1], t) var a = i.match(/^matrix\((.+)\)$/) return a ? ho(a[1], e) : 0 } }, vo = new Set(['x', 'y', 'z']), mo = z.filter(function (e) { return !vo.has(e) }) var go = { width: function (e) { var t = e.x return t.max - t.min }, height: function (e) { var t = e.y return t.max - t.min }, top: function (e, t) { var n = t.top return parseFloat(n) }, left: function (e, t) { var n = t.left return parseFloat(n) }, bottom: function (e, t) { var n = e.y, r = t.top return parseFloat(r) + (n.max - n.min) }, right: function (e, t) { var n = e.x, r = t.left return parseFloat(r) + (n.max - n.min) }, x: po(4, 13), y: po(5, 14), }, yo = function (e, t, n, i) { void 0 === n && (n = {}), void 0 === i && (i = {}), (t = (0, r.pi)({}, t)), (i = (0, r.pi)({}, i)) var o = Object.keys(t).filter(lo), a = [], s = !1, u = [] if ( (o.forEach(function (r) { var o = e.getValue(r) if (e.hasValue(r)) { var l, c = n[r], d = t[r], f = gr(c) if (He(d)) for (var h = d.length, p = null === d[0] ? 1 : 0; p < h; p++) l ? gr(d[p]) : (l = gr(d[p])) === f || (fo(f) && fo(l)) else l = gr(d) if (f !== l) if (fo(f) && fo(l)) { var v = o.get() 'string' === typeof v && o.set(parseFloat(v)), 'string' === typeof d ? (t[r] = parseFloat(d)) : Array.isArray(d) && l === oe && (t[r] = d.map(parseFloat)) } else (null === f || void 0 === f ? void 0 : f.transform) && (null === l || void 0 === l ? void 0 : l.transform) && (0 === c || 0 === d) ? 0 === c ? o.set(l.transform(c)) : (t[r] = f.transform(d)) : (s || ((a = (function (e) { var t = [] return ( mo.forEach(function (n) { var r = e.getValue(n) void 0 !== r && (t.push([n, r.get()]), r.set(n.startsWith('scale') ? 1 : 0)) }), t.length && e.syncRender(), t ) })(e)), (s = !0)), u.push(r), (i[r] = void 0 !== i[r] ? i[r] : t[r]), co(o, d)) } }), u.length) ) { var l = (function (e, t, n) { var r = t.measureViewportBox(), i = t.getInstance(), o = getComputedStyle(i), a = o.display, s = { top: o.top, left: o.left, bottom: o.bottom, right: o.right, transform: o.transform, } 'none' === a && t.setStaticValue('display', e.display || 'block'), t.syncRender() var u = t.measureViewportBox() return ( n.forEach(function (n) { var i = t.getValue(n) co(i, go[n](r, s)), (e[n] = go[n](u, o)) }), e ) })(t, e, u) return ( a.length && a.forEach(function (t) { var n = (0, r.CR)(t, 2), i = n[0], o = n[1] e.getValue(i).set(o) }), e.syncRender(), { target: l, transitionEnd: i } ) } return { target: t, transitionEnd: i } } function bo(e, t, n, r) { return (function (e) { return Object.keys(e).some(lo) })(t) ? yo(e, t, n, r) : { target: t, transitionEnd: r } } var wo = function (e, t, n, i) { var o = (function (e, t, n) { var i, o = (0, r._T)(t, []), a = e.getInstance() if (!(a instanceof HTMLElement)) return { target: o, transitionEnd: n } for (var s in (n && (n = (0, r.pi)({}, n)), e.forEachValue(function (e) { var t = e.get() if (Pi(t)) { var n = Ri(t, a) n && e.set(n) } }), o)) { var u = o[s] if (Pi(u)) { var l = Ri(u, a) l && ((o[s] = l), n && ((null !== (i = n[s]) && void 0 !== i) || (n[s] = u))) } } return { target: o, transitionEnd: n } })(e, t, i) return bo(e, (t = o.target), n, (i = o.transitionEnd)) } var xo = { treeType: 'dom', readValueFromInstance: function (e, t) { if (F(t)) { var n = tr(t) return (n && n.default) || 0 } var r, i = ((r = e), window.getComputedStyle(r)) return (K(t) ? i.getPropertyValue(t) : i[t]) || 0 }, sortNodePosition: function (e, t) { return 2 & e.compareDocumentPosition(t) ? 1 : -1 }, getBaseTarget: function (e, t) { var n return null === (n = e.style) || void 0 === n ? void 0 : n[t] }, measureViewportBox: function (e, t) { return Qr(e, t.transformPagePoint) }, resetTransform: function (e, t, n) { var r = n.transformTemplate ;(t.style.transform = r ? r({}, '') : 'none'), e.scheduleRender() }, restoreTransform: function (e, t) { e.style.transform = t.style.transform }, removeValueFromRenderState: function (e, t) { var n = t.vars, r = t.style delete n[e], delete r[e] }, makeTargetAnimatable: function (e, t, n, i) { var o = n.transformValues void 0 === i && (i = !0) var a = t.transition, s = t.transitionEnd, u = (0, r._T)(t, ['transition', 'transitionEnd']), l = (function (e, t, n) { var r, i, o = {} for (var a in e) o[a] = null !== (r = Er(a, t)) && void 0 !== r ? r : null === (i = n.getValue(a)) || void 0 === i ? void 0 : i.get() return o })(u, a || {}, e) if ((o && (s && (s = o(s)), u && (u = o(u)), l && (l = o(l))), i)) { !(function (e, t, n) { var r, i, o, a, s = Object.keys(t).filter(function (t) { return !e.hasValue(t) }), u = s.length if (u) for (var l = 0; l < u; l++) { var c = s[l], d = t[c], f = null Array.isArray(d) && (f = d[0]), null === f && (f = null !== (i = null !== (r = n[c]) && void 0 !== r ? r : e.readValue(c)) && void 0 !== i ? i : t[c]), void 0 !== f && null !== f && ('string' === typeof f && /^\-?\d*\.?\d+$/.test(f) ? (f = parseFloat(f)) : !br(f) && Qt.test(d) && (f = nr(c, d)), e.addValue(c, pr(f)), (null !== (o = (a = n)[c]) && void 0 !== o) || (a[c] = f), e.setBaseTarget(c, f)) } })(e, u, l) var c = wo(e, u, l, s) ;(s = c.transitionEnd), (u = c.target) } return (0, r.pi)({ transition: a, transitionEnd: s }, u) }, scrapeMotionValuesFromProps: Ne, build: function (e, t, n, r, i, o, a) { void 0 !== e.isVisible && (t.style.visibility = e.isVisible ? 'visible' : 'hidden') var s = r.isEnabled && i.isHydrated pe(t, n, r, i, o, a.transformTemplate, s ? $i : void 0, s ? Xi : void 0) }, render: je, }, Eo = no(xo), ko = no( (0, r.pi)((0, r.pi)({}, xo), { getBaseTarget: function (e, t) { return e[t] }, readValueFromInstance: function (e, t) { var n return F(t) ? (null === (n = tr(t)) || void 0 === n ? void 0 : n.default) || 0 : ((t = De.has(t) ? t : Re(t)), e.getAttribute(t)) }, scrapeMotionValuesFromProps: Ie, build: function (e, t, n, r, i, o, a) { var s = r.isEnabled && i.isHydrated Ce(t, n, r, i, o, a.transformTemplate, s ? $i : void 0, s ? Xi : void 0) }, render: Le, }), ), _o = function (e, t) { return L(e) ? ko(t, { enableHardwareAcceleration: !1 }) : Eo(t, { enableHardwareAcceleration: !0 }) }, To = (0, r.pi)((0, r.pi)((0, r.pi)((0, r.pi)({}, jr), yt), Si), Wi), Oo = j(function (e, t) { return (function (e, t, n, i) { var o = t.forwardMotionProps, a = void 0 !== o && o, s = L(e) ? Ge : We return (0, r.pi)((0, r.pi)({}, s), { preloadedFeatures: n, useRender: Pe(a), createVisualElement: i, Component: e }) })(e, t, To, _o) }) }, 8839: function (e, t, n) { 'use strict' n.d(t, { kv: function () { return s }, e3: function () { return u }, x7: function () { return c }, de: function () { return l }, }) var r = n(9839), i = n(3327), o = n(519) function a(e) { return e.projection.isEnabled || e.shouldResetTransform() } function s(e, t) { void 0 === t && (t = []) var n = e.parent return n && s(n, t), a(e) && t.push(e), t } function u(e) { var t = [], n = function (e) { a(e) && t.push(e), e.children.forEach(n) } return e.children.forEach(n), t.sort(o._) } function l(e) { if (!e.shouldResetTransform()) { var t = e.getLayoutState() e.notifyBeforeLayoutMeasure(t.layout), (t.isHydrated = !0), (t.layout = e.measureViewportBox()), (t.layoutCorrected = (0, i.nP)(t.layout)), e.notifyLayoutMeasure(t.layout, e.prevViewportBox || t.layout), r.ZP.update(function () { return e.rebaseProjectionTarget() }) } } function c(e) { e.shouldResetTransform() || ((e.prevViewportBox = e.measureViewportBox(!1)), e.rebaseProjectionTarget(!1, e.prevViewportBox)) } }, 7565: function (e, t, n) { 'use strict' n.d(t, { U: function () { return o }, R: function () { return a }, }) var r = new Set() function i(e, t, n) { e[n] || (e[n] = []), e[n].push(t) } function o(e) { return ( r.add(e), function () { return r.delete(e) } ) } function a() { if (r.size) { var e = 0, t = [[]], n = [], o = function (n) { return i(t, n, e) }, a = function (t) { i(n, t, e), e++ } r.forEach(function (t) { t(o, a), (e = 0) }), r.clear() for (var u = n.length, l = 0; l <= u; l++) t[l] && t[l].forEach(s), n[l] && n[l].forEach(s) } } var s = function (e) { return e() } }, 519: function (e, t, n) { 'use strict' n.d(t, { _: function () { return r }, }) var r = function (e, t) { return e.depth - t.depth } }, 3327: function (e, t, n) { 'use strict' n.d(t, { VZ: function () { return u }, _6: function () { return a }, RX: function () { return o }, nP: function () { return l }, pY: function () { return d }, dV: function () { return s }, }) var r = n(1439) function i(e) { return e } function o(e) { var t = e.top return { x: { min: e.left, max: e.right }, y: { min: t, max: e.bottom } } } function a(e) { var t = e.x, n = e.y return { top: n.min, bottom: n.max, left: t.min, right: t.max } } function s(e, t) { var n = e.top, r = e.left, o = e.bottom, a = e.right void 0 === t && (t = i) var s = t({ x: r, y: n }), u = t({ x: a, y: o }) return { top: s.y, left: s.x, bottom: u.y, right: u.x } } function u() { return { x: { min: 0, max: 1 }, y: { min: 0, max: 1 } } } function l(e) { return { x: (0, r.pi)({}, e.x), y: (0, r.pi)({}, e.y) } } var c = { translate: 0, scale: 1, origin: 0, originPoint: 0 } function d() { return { x: (0, r.pi)({}, c), y: (0, r.pi)({}, c) } } }, 5930: function (e, t, n) { 'use strict' n.d(t, { h: function () { return i }, }) var r = n(7294) function i(e) { var t = (0, r.useRef)(null) return null === t.current && (t.current = e()), t.current } }, 6717: function (e, t, n) { 'use strict' n.d(t, { z: function () { return i }, }) var r = n(7294) function i(e) { return (0, r.useEffect)(function () { return function () { return e() } }, []) } }, 1439: function (e, t, n) { 'use strict' n.d(t, { ZT: function () { return i }, pi: function () { return o }, _T: function () { return a }, CR: function () { return s }, ev: function () { return u }, }) var r = function (e, t) { return (r = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (e, t) { e.__proto__ = t }) || function (e, t) { for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n]) })(e, t) } function i(e, t) { if ('function' !== typeof t && null !== t) throw new TypeError('Class extends value ' + String(t) + ' is not a constructor or null') function n() { this.constructor = e } r(e, t), (e.prototype = null === t ? Object.create(t) : ((n.prototype = t.prototype), new n())) } var o = function () { return (o = Object.assign || function (e) { for (var t, n = 1, r = arguments.length; n < r; n++) for (var i in (t = arguments[n])) Object.prototype.hasOwnProperty.call(t, i) && (e[i] = t[i]) return e }).apply(this, arguments) } function a(e, t) { var n = {} for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && t.indexOf(r) < 0 && (n[r] = e[r]) if (null != e && 'function' === typeof Object.getOwnPropertySymbols) { var i = 0 for (r = Object.getOwnPropertySymbols(e); i < r.length; i++) t.indexOf(r[i]) < 0 && Object.prototype.propertyIsEnumerable.call(e, r[i]) && (n[r[i]] = e[r[i]]) } return n } Object.create function s(e, t) { var n = 'function' === typeof Symbol && e[Symbol.iterator] if (!n) return e var r, i, o = n.call(e), a = [] try { for (; (void 0 === t || t-- > 0) && !(r = o.next()).done; ) a.push(r.value) } catch (s) { i = { error: s } } finally { try { r && !r.done && (n = o.return) && n.call(o) } finally { if (i) throw i.error } } return a } function u(e, t, n) { if (n || 2 === arguments.length) for (var r, i = 0, o = t.length; i < o; i++) (!r && i in t) || (r || (r = Array.prototype.slice.call(t, 0, i)), (r[i] = t[i])) return e.concat(r || t) } Object.create }, 9839: function (e, t, n) { 'use strict' n.d(t, { qY: function () { return h }, ZP: function () { return b }, iW: function () { return p }, $B: function () { return y }, }) var r = (1 / 60) * 1e3, i = 'undefined' !== typeof performance ? function () { return performance.now() } : function () { return Date.now() }, o = 'undefined' !== typeof window ? function (e) { return window.requestAnimationFrame(e) } : function (e) { return setTimeout(function () { return e(i()) }, r) } var a = !0, s = !1, u = !1, l = { delta: 0, timestamp: 0 }, c = ['read', 'update', 'preRender', 'render', 'postRender'], d = c.reduce(function (e, t) { return ( (e[t] = (function (e) { var t = [], n = [], r = 0, i = !1, o = new WeakSet(), a = { schedule: function (e, a, s) { void 0 === a && (a = !1), void 0 === s && (s = !1) var u = s && i, l = u ? t : n return ( a && o.add(e), -1 === l.indexOf(e) && (l.push(e), u && i && (r = t.length)), e ) }, cancel: function (e) { var t = n.indexOf(e) ;-1 !== t && n.splice(t, 1), o.delete(e) }, process: function (s) { var u if (((i = !0), (t = (u = [n, t])[0]), ((n = u[1]).length = 0), (r = t.length))) for (var l = 0; l < r; l++) { var c = t[l] c(s), o.has(c) && (a.schedule(c), e()) } i = !1 }, } return a })(function () { return (s = !0) })), e ) }, {}), f = c.reduce(function (e, t) { var n = d[t] return ( (e[t] = function (e, t, r) { return ( void 0 === t && (t = !1), void 0 === r && (r = !1), s || g(), n.schedule(e, t, r) ) }), e ) }, {}), h = c.reduce(function (e, t) { return (e[t] = d[t].cancel), e }, {}), p = c.reduce(function (e, t) { return ( (e[t] = function () { return d[t].process(l) }), e ) }, {}), v = function (e) { return d[e].process(l) }, m = function (e) { ;(s = !1), (l.delta = a ? r : Math.max(Math.min(e - l.timestamp, 40), 1)), (l.timestamp = e), (u = !0), c.forEach(v), (u = !1), s && ((a = !1), o(m)) }, g = function () { ;(s = !0), (a = !0), u || o(m) }, y = function () { return l }, b = f }, 3405: function (e) { e.exports = function (e) { return [...e].reduce((e, [t, n]) => ((e[t] = n), e), {}) } }, 1527: function (e, t) { 'use strict' function n(e, t) { if (null == e) return {} var n, r, i = (function (e, t) { if (null == e) return {} var n, r, i = {}, o = Object.keys(e) for (r = 0; r < o.length; r++) (n = o[r]), t.indexOf(n) >= 0 || (i[n] = e[n]) return i })(e, t) if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e) for (r = 0; r < o.length; r++) (n = o[r]), t.indexOf(n) >= 0 || (Object.prototype.propertyIsEnumerable.call(e, n) && (i[n] = e[n])) } return i } function r(e, t) { return ( (function (e) { if (Array.isArray(e)) return e })(e) || (function (e, t) { var n = e && (('undefined' !== typeof Symbol && e[Symbol.iterator]) || e['@@iterator']) if (null == n) return var r, i, o = [], a = !0, s = !1 try { for ( n = n.call(e); !(a = (r = n.next()).done) && (o.push(r.value), !t || o.length !== t); a = !0 ); } catch (u) { ;(s = !0), (i = u) } finally { try { a || null == n.return || n.return() } finally { if (s) throw i } } return o })(e, t) || o(e, t) || (function () { throw new TypeError( 'Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.', ) })() ) } function i(e) { return ( (function (e) { if (Array.isArray(e)) return a(e) })(e) || (function (e) { if ( ('undefined' !== typeof Symbol && null != e[Symbol.iterator]) || null != e['@@iterator'] ) return Array.from(e) })(e) || o(e) || (function () { throw new TypeError( 'Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.', ) })() ) } function o(e, t) { if (e) { if ('string' === typeof e) return a(e, t) var n = Object.prototype.toString.call(e).slice(8, -1) return ( 'Object' === n && e.constructor && (n = e.constructor.name), 'Map' === n || 'Set' === n ? Array.from(e) : 'Arguments' === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n) ? a(e, t) : void 0 ) } } function a(e, t) { ;(null == t || t > e.length) && (t = e.length) for (var n = 0, r = new Array(t); n < t; n++) r[n] = e[n] return r } function s(e) { var t = (function (e, t) { if ('object' !== typeof e || null === e) return e var n = e[Symbol.toPrimitive] if (void 0 !== n) { var r = n.call(e, t || 'default') if ('object' !== typeof r) return r throw new TypeError('@@toPrimitive must return a primitive value.') } return ('string' === t ? String : Number)(e) })(e, 'string') return 'symbol' === typeof t ? t : String(t) } t.Z = function () { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [], t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : [], o = !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2], a = arguments.length > 3 && void 0 !== arguments[3] && arguments[3], u = (t instanceof Array ? (t.length ? t : [void 0]) : [t]).map(function (e) { return { keyAccessor: e, isProp: !(e instanceof Function) } }), l = e.reduce(function (e, t) { var r = e, i = t return ( u.forEach(function (e, t) { var a, l = e.keyAccessor if (e.isProp) { var c = i, d = c[l], f = n(c, [l].map(s)) ;(a = d), (i = f) } else a = l(i, t) t + 1 < u.length ? (r.hasOwnProperty(a) || (r[a] = {}), (r = r[a])) : o ? (r.hasOwnProperty(a) || (r[a] = []), r[a].push(i)) : (r[a] = i) }), e ) }, {}) o instanceof Function && (function e(t) { var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 1 n === u.length ? Object.keys(t).forEach(function (e) { return (t[e] = o(t[e])) }) : Object.values(t).forEach(function (t) { return e(t, n + 1) }) })(l) var c = l return ( a && ((c = []), (function e(t) { var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : [] n.length === u.length ? c.push({ keys: n, vals: t }) : Object.entries(t).forEach(function (t) { var o = r(t, 2), a = o[0], s = o[1] return e(s, [].concat(i(n), [a])) }) })(l), t instanceof Array && 0 === t.length && 1 === c.length && (c[0].keys = [])), c ) } }, 6808: function (e, t, n) { var r, i !(function (o) { if ( (void 0 === (i = 'function' === typeof (r = o) ? r.call(t, n, t, e) : r) || (e.exports = i), !0, (e.exports = o()), !!0) ) { var a = window.Cookies, s = (window.Cookies = o()) s.noConflict = function () { return (window.Cookies = a), s } } })(function () { function e() { for (var e = 0, t = {}; e < arguments.length; e++) { var n = arguments[e] for (var r in n) t[r] = n[r] } return t } function t(e) { return e.replace(/(%[0-9A-Z]{2})+/g, decodeURIComponent) } return (function n(r) { function i() {} function o(t, n, o) { if ('undefined' !== typeof document) { 'number' === typeof (o = e({ path: '/' }, i.defaults, o)).expires && (o.expires = new Date(1 * new Date() + 864e5 * o.expires)), (o.expires = o.expires ? o.expires.toUTCString() : '') try { var a = JSON.stringify(n) ;/^[\{\[]/.test(a) && (n = a) } catch (l) {} ;(n = r.write ? r.write(n, t) : encodeURIComponent(String(n)).replace( /%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent, )), (t = encodeURIComponent(String(t)) .replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent) .replace(/[\(\)]/g, escape)) var s = '' for (var u in o) o[u] && ((s += '; ' + u), !0 !== o[u] && (s += '=' + o[u].split(';')[0])) return (document.cookie = t + '=' + n + s) } } function a(e, n) { if ('undefined' !== typeof document) { for ( var i = {}, o = document.cookie ? document.cookie.split('; ') : [], a = 0; a < o.length; a++ ) { var s = o[a].split('='), u = s.slice(1).join('=') n || '"' !== u.charAt(0) || (u = u.slice(1, -1)) try { var l = t(s[0]) if (((u = (r.read || r)(u, l) || t(u)), n)) try { u = JSON.parse(u) } catch (c) {} if (((i[l] = u), e === l)) break } catch (c) {} } return e ? i[e] : i } } return ( (i.set = o), (i.get = function (e) { return a(e, !1) }), (i.getJSON = function (e) { return a(e, !0) }), (i.remove = function (t, n) { o(t, '', e(n, { expires: -1 })) }), (i.defaults = {}), (i.withConverter = n), i ) })(function () {}) }) }, 4858: function (e, t, n) { 'use strict' var r = n(296), i = n.n(r) function o(e, t) { return ( (function (e) { if (Array.isArray(e)) return e })(e) || (function (e, t) { var n = e && (('undefined' !== typeof Symbol && e[Symbol.iterator]) || e['@@iterator']) if (null == n) return var r, i, o = [], a = !0, s = !1 try { for ( n = n.call(e); !(a = (r = n.next()).done) && (o.push(r.value), !t || o.length !== t); a = !0 ); } catch (u) { ;(s = !0), (i = u) } finally { try { a || null == n.return || n.return() } finally { if (s) throw i } } return o })(e, t) || (function (e, t) { if (!e) return if ('string' === typeof e) return a(e, t) var n = Object.prototype.toString.call(e).slice(8, -1) 'Object' === n && e.constructor && (n = e.constructor.name) if ('Map' === n || 'Set' === n) return Array.from(e) if ('Arguments' === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return a(e, t) })(e, t) || (function () { throw new TypeError( 'Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.', ) })() ) } function a(e, t) { ;(null == t || t > e.length) && (t = e.length) for (var n = 0, r = new Array(t); n < t; n++) r[n] = e[n] return r } var s = function e(t, n) { var r = n.default, i = void 0 === r ? null : r, o = n.triggerUpdate, a = void 0 === o || o, s = n.onChange, u = void 0 === s ? function (e, t) {} : s !(function (e, t) { if (!(e instanceof t)) throw new TypeError('Cannot call a class as a function') })(this, e), (this.name = t), (this.defaultVal = i), (this.triggerUpdate = a), (this.onChange = u) } t.Z = function (e) { var t = e.stateInit, n = void 0 === t ? function () { return {} } : t, r = e.props, a = void 0 === r ? {} : r, u = e.methods, l = void 0 === u ? {} : u, c = e.aliases, d = void 0 === c ? {} : c, f = e.init, h = void 0 === f ? function () {} : f, p = e.update, v = void 0 === p ? function () {} : p, m = Object.keys(a).map(function (e) { return new s(e, a[e]) }) return function () { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}, t = Object.assign({}, n instanceof Function ? n(e) : n, { initialised: !1 }), r = {} function a(t) { return s(t, e), u(), a } var s = function (e, n) { h.call(a, e, t, n), (t.initialised = !0) }, u = i()(function () { t.initialised && (v.call(a, t, r), (r = {})) }, 1) return ( m.forEach(function (e) { a[e.name] = (function (e) { var n = e.name, i = e.triggerUpdate, o = void 0 !== i && i, s = e.onChange, l = void 0 === s ? function (e, t) {} : s, c = e.defaultVal, d = void 0 === c ? null : c return function (e) { var i = t[n] if (!arguments.length) return i var s = void 0 === e ? d : e return ( (t[n] = s), l.call(a, s, t, i), !r.hasOwnProperty(n) && (r[n] = i), o && u(), a ) } })(e) }), Object.keys(l).forEach(function (e) { a[e] = function () { for (var n, r = arguments.length, i = new Array(r), o = 0; o < r; o++) i[o] = arguments[o] return (n = l[e]).call.apply(n, [a, t].concat(i)) } }), Object.entries(d).forEach(function (e) { var t = o(e, 2), n = t[0], r = t[1] return (a[n] = a[r]) }), (a.resetProps = function () { return ( m.forEach(function (e) { a[e.name](e.defaultVal) }), a ) }), a.resetProps(), (t._rerender = u), a ) } } }, 3096: function (e, t, n) { var r = 'Expected a function', i = /^\s+|\s+$/g, o = /^[-+]0x[0-9a-f]+$/i, a = /^0b[01]+$/i, s = /^0o[0-7]+$/i, u = parseInt, l = 'object' == typeof n.g && n.g && n.g.Object === Object && n.g, c = 'object' == typeof self && self && self.Object === Object && self, d = l || c || Function('return this')(), f = Object.prototype.toString, h = Math.max, p = Math.min, v = function () { return d.Date.now() } function m(e, t, n) { var i, o, a, s, u, l, c = 0, d = !1, f = !1, m = !0 if ('function' != typeof e) throw new TypeError(r) function b(t) { var n = i, r = o return (i = o = void 0), (c = t), (s = e.apply(r, n)) } function w(e) { return (c = e), (u = setTimeout(E, t)), d ? b(e) : s } function x(e) { var n = e - l return void 0 === l || n >= t || n < 0 || (f && e - c >= a) } function E() { var e = v() if (x(e)) return k(e) u = setTimeout( E, (function (e) { var n = t - (e - l) return f ? p(n, a - (e - c)) : n })(e), ) } function k(e) { return (u = void 0), m && i ? b(e) : ((i = o = void 0), s) } function _() { var e = v(), n = x(e) if (((i = arguments), (o = this), (l = e), n)) { if (void 0 === u) return w(l) if (f) return (u = setTimeout(E, t)), b(l) } return void 0 === u && (u = setTimeout(E, t)), s } return ( (t = y(t) || 0), g(n) && ((d = !!n.leading), (a = (f = 'maxWait' in n) ? h(y(n.maxWait) || 0, t) : a), (m = 'trailing' in n ? !!n.trailing : m)), (_.cancel = function () { void 0 !== u && clearTimeout(u), (c = 0), (i = l = o = u = void 0) }), (_.flush = function () { return void 0 === u ? s : k(v()) }), _ ) } function g(e) { var t = typeof e return !!e && ('object' == t || 'function' == t) } function y(e) { if ('number' == typeof e) return e if ( (function (e) { return ( 'symbol' == typeof e || ((function (e) { return !!e && 'object' == typeof e })(e) && '[object Symbol]' == f.call(e)) ) })(e) ) return NaN if (g(e)) { var t = 'function' == typeof e.valueOf ? e.valueOf() : e e = g(t) ? t + '' : t } if ('string' != typeof e) return 0 === e ? e : +e e = e.replace(i, '') var n = a.test(e) return n || s.test(e) ? u(e.slice(2), n ? 2 : 8) : o.test(e) ? NaN : +e } e.exports = function (e, t, n) { var i = !0, o = !0 if ('function' != typeof e) throw new TypeError(r) return ( g(n) && ((i = 'leading' in n ? !!n.leading : i), (o = 'trailing' in n ? !!n.trailing : o)), m(e, t, { leading: i, maxWait: t, trailing: o }) ) } }, 3752: function (e, t, n) { 'use strict' function r(e, t) { var n if ('undefined' === typeof Symbol || null == e[Symbol.iterator]) { if ( Array.isArray(e) || (n = (function (e, t) { if (!e) return if ('string' === typeof e) return i(e, t) var n = Object.prototype.toString.call(e).slice(8, -1) 'Object' === n && e.constructor && (n = e.constructor.name) if ('Map' === n || 'Set' === n) return Array.from(e) if ('Arguments' === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return i(e, t) })(e)) || (t && e && 'number' === typeof e.length) ) { n && (e = n) var r = 0, o = function () {} return { s: o, n: function () { return r >= e.length ? { done: !0 } : { done: !1, value: e[r++] } }, e: function (e) { throw e }, f: o, } } throw new TypeError( 'Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.', ) } var a, s = !0, u = !1 return { s: function () { n = e[Symbol.iterator]() }, n: function () { var e = n.next() return (s = e.done), e }, e: function (e) { ;(u = !0), (a = e) }, f: function () { try { s || null == n.return || n.return() } finally { if (u) throw a } }, } } function i(e, t) { ;(null == t || t > e.length) && (t = e.length) for (var n = 0, r = new Array(t); n < t; n++) r[n] = e[n] return r } function o(e, t) { var n if (void 0 === t) { var i, o = r(e) try { for (o.s(); !(i = o.n()).done; ) { var a = i.value null != a && (n < a || (void 0 === n && a >= a)) && (n = a) } } catch (d) { o.e(d) } finally { o.f() } } else { var s, u = -1, l = r(e) try { for (l.s(); !(s = l.n()).done; ) { var c = s.value null != (c = t(c, ++u, e)) && (n < c || (void 0 === n && c >= c)) && (n = c) } } catch (d) { l.e(d) } finally { l.f() } } return n } n.d(t, { Z: function () { return o }, }) }, 6701: function (e, t, n) { 'use strict' function r(e, t) { var n if ('undefined' === typeof Symbol || null == e[Symbol.iterator]) { if ( Array.isArray(e) || (n = (function (e, t) { if (!e) return if ('string' === typeof e) return i(e, t) var n = Object.prototype.toString.call(e).slice(8, -1) 'Object' === n && e.constructor && (n = e.constructor.name) if ('Map' === n || 'Set' === n) return Array.from(e) if ('Arguments' === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return i(e, t) })(e)) || (t && e && 'number' === typeof e.length) ) { n && (e = n) var r = 0, o = function () {} return { s: o, n: function () { return r >= e.length ? { done: !0 } : { done: !1, value: e[r++] } }, e: function (e) { throw e }, f: o, } } throw new TypeError( 'Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.', ) } var a, s = !0, u = !1 return { s: function () { n = e[Symbol.iterator]() }, n: function () { var e = n.next() return (s = e.done), e }, e: function (e) { ;(u = !0), (a = e) }, f: function () { try { s || null == n.return || n.return() } finally { if (u) throw a } }, } } function i(e, t) { ;(null == t || t > e.length) && (t = e.length) for (var n = 0, r = new Array(t); n < t; n++) r[n] = e[n] return r } function o(e, t) { var n if (void 0 === t) { var i, o = r(e) try { for (o.s(); !(i = o.n()).done; ) { var a = i.value null != a && (n > a || (void 0 === n && a >= a)) && (n = a) } } catch (d) { o.e(d) } finally { o.f() } } else { var s, u = -1, l = r(e) try { for (l.s(); !(s = l.n()).done; ) { var c = s.value null != (c = t(c, ++u, e)) && (n > c || (void 0 === n && c >= c)) && (n = c) } } catch (d) { l.e(d) } finally { l.f() } } return n } n.d(t, { Z: function () { return o }, }) }, 4275: function (e, t, n) { 'use strict' function r(e, t, n) { if (isNaN(t)) return e var r, i, o, a, s, u, l = e._root, c = { data: n }, d = e._x0, f = e._x1 if (!l) return (e._root = c), e for (; l.length; ) if (((a = t >= (i = (d + f) / 2)) ? (d = i) : (f = i), (r = l), !(l = l[(s = +a)]))) return (r[s] = c), e if (t === (o = +e._x.call(null, l.data))) return (c.next = l), r ? (r[s] = c) : (e._root = c), e do { ;(r = r ? (r[s] = new Array(2)) : (e._root = new Array(2))), (a = t >= (i = (d + f) / 2)) ? (d = i) : (f = i) } while ((s = +a) === (u = +(o >= i))) return (r[u] = l), (r[s] = c), e } function i(e, t, n) { ;(this.node = e), (this.x0 = t), (this.x1 = n) } function o(e) { return e[0] } function a(e, t) { var n = new s(null == t ? o : t, NaN, NaN) return null == e ? n : n.addAll(e) } function s(e, t, n) { ;(this._x = e), (this._x0 = t), (this._x1 = n), (this._root = void 0) } function u(e) { for (var t = { data: e.data }, n = t; (e = e.next); ) n = n.next = { data: e.data } return t } n.d(t, { Z: function () { return a }, }) var l = (a.prototype = s.prototype) ;(l.copy = function () { var e, t, n = new s(this._x, this._x0, this._x1), r = this._root if (!r) return n if (!r.length) return (n._root = u(r)), n for (e = [{ source: r, target: (n._root = new Array(2)) }]; (r = e.pop()); ) for (var i = 0; i < 2; ++i) (t = r.source[i]) && (t.length ? e.push({ source: t, target: (r.target[i] = new Array(2)) }) : (r.target[i] = u(t))) return n }), (l.add = function (e) { var t = +this._x.call(null, e) return r(this.cover(t), t, e) }), (l.addAll = function (e) { var t, n, i = e.length, o = new Array(i), a = 1 / 0, s = -1 / 0 for (t = 0; t < i; ++t) isNaN((n = +this._x.call(null, e[t]))) || ((o[t] = n), n < a && (a = n), n > s && (s = n)) if (a > s) return this for (this.cover(a).cover(s), t = 0; t < i; ++t) r(this, o[t], e[t]) return this }), (l.cover = function (e) { if (isNaN((e = +e))) return this var t = this._x0, n = this._x1 if (isNaN(t)) n = (t = Math.floor(e)) + 1 else { for (var r, i, o = n - t || 1, a = this._root; t > e || e >= n; ) switch (((i = +(e < t)), ((r = new Array(2))[i] = a), (a = r), (o *= 2), i)) { case 0: n = t + o break case 1: t = n - o } this._root && this._root.length && (this._root = a) } return (this._x0 = t), (this._x1 = n), this }), (l.data = function () { var e = [] return ( this.visit(function (t) { if (!t.length) do { e.push(t.data) } while ((t = t.next)) }), e ) }), (l.extent = function (e) { return arguments.length ? this.cover(+e[0][0]).cover(+e[1][0]) : isNaN(this._x0) ? void 0 : [[this._x0], [this._x1]] }), (l.find = function (e, t) { var n, r, o, a, s, u = this._x0, l = this._x1, c = [], d = this._root for ( d && c.push(new i(d, u, l)), null == t ? (t = 1 / 0) : ((u = e - t), (l = e + t)); (a = c.pop()); ) if (!(!(d = a.node) || (r = a.x0) > l || (o = a.x1) < u)) if (d.length) { var f = (r + o) / 2 c.push(new i(d[1], f, o), new i(d[0], r, f)), (s = +(e >= f)) && ((a = c[c.length - 1]), (c[c.length - 1] = c[c.length - 1 - s]), (c[c.length - 1 - s] = a)) } else { var h = Math.abs(e - +this._x.call(null, d.data)) h < t && ((t = h), (u = e - h), (l = e + h), (n = d.data)) } return n }), (l.remove = function (e) { if (isNaN((o = +this._x.call(null, e)))) return this var t, n, r, i, o, a, s, u, l, c = this._root, d = this._x0, f = this._x1 if (!c) return this if (c.length) for (;;) { if (((s = o >= (a = (d + f) / 2)) ? (d = a) : (f = a), (t = c), !(c = c[(u = +s)]))) return this if (!c.length) break t[(u + 1) & 1] && ((n = t), (l = u)) } for (; c.data !== e; ) if (((r = c), !(c = c.next))) return this return ( (i = c.next) && delete c.next, r ? (i ? (r.next = i) : delete r.next, this) : t ? (i ? (t[u] = i) : delete t[u], (c = t[0] || t[1]) && c === (t[1] || t[0]) && !c.length && (n ? (n[l] = c) : (this._root = c)), this) : ((this._root = i), this) ) }), (l.removeAll = function (e) { for (var t = 0, n = e.length; t < n; ++t) this.remove(e[t]) return this }), (l.root = function () { return this._root }), (l.size = function () { var e = 0 return ( this.visit(function (t) { if (!t.length) do { ++e } while ((t = t.next)) }), e ) }), (l.visit = function (e) { var t, n, r, o, a = [], s = this._root for (s && a.push(new i(s, this._x0, this._x1)); (t = a.pop()); ) if (!e((s = t.node), (r = t.x0), (o = t.x1)) && s.length) { var u = (r + o) / 2 ;(n = s[1]) && a.push(new i(n, u, o)), (n = s[0]) && a.push(new i(n, r, u)) } return this }), (l.visitAfter = function (e) { var t, n = [], r = [] for (this._root && n.push(new i(this._root, this._x0, this._x1)); (t = n.pop()); ) { var o = t.node if (o.length) { var a, s = t.x0, u = t.x1, l = (s + u) / 2 ;(a = o[0]) && n.push(new i(a, s, l)), (a = o[1]) && n.push(new i(a, l, u)) } r.push(t) } for (; (t = r.pop()); ) e(t.node, t.x0, t.x1) return this }), (l.x = function (e) { return arguments.length ? ((this._x = e), this) : this._x }) }, 7137: function (e, t) { 'use strict' var n = { value: function () {} } function r() { for (var e, t = 0, n = arguments.length, r = {}; t < n; ++t) { if (!(e = arguments[t] + '') || e in r || /[\s.]/.test(e)) throw new Error('illegal type: ' + e) r[e] = [] } return new i(r) } function i(e) { this._ = e } function o(e, t) { return e .trim() .split(/^|\s+/) .map(function (e) { var n = '', r = e.indexOf('.') if ((r >= 0 && ((n = e.slice(r + 1)), (e = e.slice(0, r))), e && !t.hasOwnProperty(e))) throw new Error('unknown type: ' + e) return { type: e, name: n } }) } function a(e, t) { for (var n, r = 0, i = e.length; r < i; ++r) if ((n = e[r]).name === t) return n.value } function s(e, t, r) { for (var i = 0, o = e.length; i < o; ++i) if (e[i].name === t) { ;(e[i] = n), (e = e.slice(0, i).concat(e.slice(i + 1))) break } return null != r && e.push({ name: t, value: r }), e } ;(i.prototype = r.prototype = { constructor: i, on: function (e, t) { var n, r = this._, i = o(e + '', r), u = -1, l = i.length if (!(arguments.length < 2)) { if (null != t && 'function' !== typeof t) throw new Error('invalid callback: ' + t) for (; ++u < l; ) if ((n = (e = i[u]).type)) r[n] = s(r[n], e.name, t) else if (null == t) for (n in r) r[n] = s(r[n], e.name, null) return this } for (; ++u < l; ) if ((n = (e = i[u]).type) && (n = a(r[n], e.name))) return n }, copy: function () { var e = {}, t = this._ for (var n in t) e[n] = t[n].slice() return new i(e) }, call: function (e, t) { if ((n = arguments.length - 2) > 0) for (var n, r, i = new Array(n), o = 0; o < n; ++o) i[o] = arguments[o + 2] if (!this._.hasOwnProperty(e)) throw new Error('unknown type: ' + e) for (o = 0, n = (r = this._[e]).length; o < n; ++o) r[o].value.apply(t, i) }, apply: function (e, t, n) { if (!this._.hasOwnProperty(e)) throw new Error('unknown type: ' + e) for (var r = this._[e], i = 0, o = r.length; i < o; ++i) r[i].value.apply(t, n) }, }), (t.Z = r) }, 216: function (e, t, n) { 'use strict' function r(e, t, n) { var r, i = 1 function o() { var o, a, s = r.length, u = 0, l = 0, c = 0 for (o = 0; o < s; ++o) (u += (a = r[o]).x || 0), (l += a.y || 0), (c += a.z || 0) for (u = (u / s - e) * i, l = (l / s - t) * i, c = (c / s - n) * i, o = 0; o < s; ++o) (a = r[o]), u && (a.x -= u), l && (a.y -= l), c && (a.z -= c) } return ( null == e && (e = 0), null == t && (t = 0), null == n && (n = 0), (o.initialize = function (e) { r = e }), (o.x = function (t) { return arguments.length ? ((e = +t), o) : e }), (o.y = function (e) { return arguments.length ? ((t = +e), o) : t }), (o.z = function (e) { return arguments.length ? ((n = +e), o) : n }), (o.strength = function (e) { return arguments.length ? ((i = +e), o) : i }), o ) } n.d(t, { Z: function () { return r }, }) }, 9437: function (e, t, n) { 'use strict' function r(e) { return function () { return e } } n.d(t, { Z: function () { return r }, }) }, 8246: function (e, t, n) { 'use strict' function r(e) { return 1e-6 * (e() - 0.5) } n.d(t, { Z: function () { return r }, }) }, 5560: function (e, t, n) { 'use strict' n.d(t, { Z: function () { return s }, }) var r = n(9437), i = n(8246) function o(e) { return e.index } function a(e, t) { var n = e.get(t) if (!n) throw new Error('node not found: ' + t) return n } function s(e) { var t, n, s, u, l, c, d, f = o, h = function (e) { return 1 / Math.min(l[e.source.index], l[e.target.index]) }, p = (0, r.Z)(30), v = 1 function m(r) { for (var o = 0, a = e.length; o < v; ++o) for (var s, l, f, h, p, m = 0, g = 0, y = 0, b = 0; m < a; ++m) (l = (s = e[m]).source), (g = (f = s.target).x + f.vx - l.x - l.vx || (0, i.Z)(d)), u > 1 && (y = f.y + f.vy - l.y - l.vy || (0, i.Z)(d)), u > 2 && (b = f.z + f.vz - l.z - l.vz || (0, i.Z)(d)), (g *= h = (((h = Math.sqrt(g * g + y * y + b * b)) - n[m]) / h) * r * t[m]), (y *= h), (b *= h), (f.vx -= g * (p = c[m])), u > 1 && (f.vy -= y * p), u > 2 && (f.vz -= b * p), (l.vx += g * (p = 1 - p)), u > 1 && (l.vy += y * p), u > 2 && (l.vz += b * p) } function g() { if (s) { var r, i, o = s.length, u = e.length, d = new Map( s.map(function (e, t) { return [f(e, t, s), e] }), ) for (r = 0, l = new Array(o); r < u; ++r) ((i = e[r]).index = r), 'object' !== typeof i.source && (i.source = a(d, i.source)), 'object' !== typeof i.target && (i.target = a(d, i.target)), (l[i.source.index] = (l[i.source.index] || 0) + 1), (l[i.target.index] = (l[i.target.index] || 0) + 1) for (r = 0, c = new Array(u); r < u; ++r) (i = e[r]), (c[r] = l[i.source.index] / (l[i.source.index] + l[i.target.index])) ;(t = new Array(u)), y(), (n = new Array(u)), b() } } function y() { if (s) for (var n = 0, r = e.length; n < r; ++n) t[n] = +h(e[n], n, e) } function b() { if (s) for (var t = 0, r = e.length; t < r; ++t) n[t] = +p(e[t], t, e) } return ( null == e && (e = []), (m.initialize = function (e) { s = e for (var t = arguments.length, n = new Array(t > 1 ? t - 1 : 0), r = 1; r < t; r++) n[r - 1] = arguments[r] ;(d = n.find(function (e) { return 'function' === typeof e }) || Math.random), (u = n.find(function (e) { return [1, 2, 3].includes(e) }) || 2), g() }), (m.links = function (t) { return arguments.length ? ((e = t), g(), m) : e }), (m.id = function (e) { return arguments.length ? ((f = e), m) : f }), (m.iterations = function (e) { return arguments.length ? ((v = +e), m) : v }), (m.strength = function (e) { return arguments.length ? ((h = 'function' === typeof e ? e : (0, r.Z)(+e)), y(), m) : h }), (m.distance = function (e) { return arguments.length ? ((p = 'function' === typeof e ? e : (0, r.Z)(+e)), b(), m) : p }), m ) } }, 2405: function (e, t, n) { 'use strict' n.d(t, { Z: function () { return l }, }) var r = n(4275), i = n(54), o = n(8357), a = n(9437), s = n(8246), u = n(4505) function l() { var e, t, n, l, c, d, f = (0, a.Z)(-30), h = 1, p = 1 / 0, v = 0.81 function m(a) { var s, l = e.length, d = ( 1 === t ? (0, r.Z)(e, u.x) : 2 === t ? (0, i.Z)(e, u.x, u.y) : 3 === t ? (0, o.Z)(e, u.x, u.y, u.z) : null ).visitAfter(y) for (c = a, s = 0; s < l; ++s) (n = e[s]), d.visit(b) } function g() { if (e) { var t, n, r = e.length for (d = new Array(r), t = 0; t < r; ++t) (n = e[t]), (d[n.index] = +f(n, t, e)) } } function y(e) { var n, r, i, o, a, s, u = 0, l = 0, c = e.length if (c) { for (i = o = a = s = 0; s < c; ++s) (n = e[s]) && (r = Math.abs(n.value)) && ((u += n.value), (l += r), (i += r * (n.x || 0)), (o += r * (n.y || 0)), (a += r * (n.z || 0))) ;(u *= Math.sqrt(4 / c)), (e.x = i / l), t > 1 && (e.y = o / l), t > 2 && (e.z = a / l) } else { ;((n = e).x = n.data.x), t > 1 && (n.y = n.data.y), t > 2 && (n.z = n.data.z) do { u += d[n.data.index] } while ((n = n.next)) } e.value = u } function b(e, r, i, o, a) { if (!e.value) return !0 var u = [i, o, a][t - 1], f = e.x - n.x, m = t > 1 ? e.y - n.y : 0, g = t > 2 ? e.z - n.z : 0, y = u - r, b = f * f + m * m + g * g if ((y * y) / v < b) return ( b < p && (0 === f && (b += (f = (0, s.Z)(l)) * f), t > 1 && 0 === m && (b += (m = (0, s.Z)(l)) * m), t > 2 && 0 === g && (b += (g = (0, s.Z)(l)) * g), b < h && (b = Math.sqrt(h * b)), (n.vx += (f * e.value * c) / b), t > 1 && (n.vy += (m * e.value * c) / b), t > 2 && (n.vz += (g * e.value * c) / b)), !0 ) if (!(e.length || b >= p)) { ;(e.data !== n || e.next) && (0 === f && (b += (f = (0, s.Z)(l)) * f), t > 1 && 0 === m && (b += (m = (0, s.Z)(l)) * m), t > 2 && 0 === g && (b += (g = (0, s.Z)(l)) * g), b < h && (b = Math.sqrt(h * b))) do { e.data !== n && ((y = (d[e.data.index] * c) / b), (n.vx += f * y), t > 1 && (n.vy += m * y), t > 2 && (n.vz += g * y)) } while ((e = e.next)) } } return ( (m.initialize = function (n) { e = n for (var r = arguments.length, i = new Array(r > 1 ? r - 1 : 0), o = 1; o < r; o++) i[o - 1] = arguments[o] ;(l = i.find(function (e) { return 'function' === typeof e }) || Math.random), (t = i.find(function (e) { return [1, 2, 3].includes(e) }) || 2), g() }), (m.strength = function (e) { return arguments.length ? ((f = 'function' === typeof e ? e : (0, a.Z)(+e)), g(), m) : f }), (m.distanceMin = function (e) { return arguments.length ? ((h = e * e), m) : Math.sqrt(h) }), (m.distanceMax = function (e) { return arguments.length ? ((p = e * e), m) : Math.sqrt(p) }), (m.theta = function (e) { return arguments.length ? ((v = e * e), m) : Math.sqrt(v) }), m ) } }, 6917: function (e, t, n) { 'use strict' n.d(t, { Z: function () { return i }, }) var r = n(9437) function i(e, t, n, i) { var o, a, s, u, l = (0, r.Z)(0.1) function c(e) { for (var r = 0, l = o.length; r < l; ++r) { var c = o[r], d = c.x - t || 1e-6, f = (c.y || 0) - n || 1e-6, h = (c.z || 0) - i || 1e-6, p = Math.sqrt(d * d + f * f + h * h), v = ((u[r] - p) * s[r] * e) / p ;(c.vx += d * v), a > 1 && (c.vy += f * v), a > 2 && (c.vz += h * v) } } function d() { if (o) { var t, n = o.length for (s = new Array(n), u = new Array(n), t = 0; t < n; ++t) (u[t] = +e(o[t], t, o)), (s[t] = isNaN(u[t]) ? 0 : +l(o[t], t, o)) } } return ( 'function' !== typeof e && (e = (0, r.Z)(+e)), null == t && (t = 0), null == n && (n = 0), null == i && (i = 0), (c.initialize = function (e) { o = e for (var t = arguments.length, n = new Array(t > 1 ? t - 1 : 0), r = 1; r < t; r++) n[r - 1] = arguments[r] ;(a = n.find(function (e) { return [1, 2, 3].includes(e) }) || 2), d() }), (c.strength = function (e) { return arguments.length ? ((l = 'function' === typeof e ? e : (0, r.Z)(+e)), d(), c) : l }), (c.radius = function (t) { return arguments.length ? ((e = 'function' === typeof t ? t : (0, r.Z)(+t)), d(), c) : e }), (c.x = function (e) { return arguments.length ? ((t = +e), c) : t }), (c.y = function (e) { return arguments.length ? ((n = +e), c) : n }), (c.z = function (e) { return arguments.length ? ((i = +e), c) : i }), c ) } }, 4505: function (e, t, n) { 'use strict' n.d(t, { Z: function () { return d }, x: function () { return a }, y: function () { return s }, z: function () { return u }, }) var r = n(7137), i = n(513), o = 4294967296 function a(e) { return e.x } function s(e) { return e.y } function u(e) { return e.z } var l = Math.PI * (3 - Math.sqrt(5)), c = (20 * Math.PI) / (9 + Math.sqrt(221)) function d(e, t) { t = t || 2 var n, a = Math.min(3, Math.max(1, Math.round(t))), s = 1, u = 0.001, d = 1 - Math.pow(u, 1 / 300), f = 0, h = 0.6, p = new Map(), v = (0, i.HT)(y), m = (0, r.Z)('tick', 'end'), g = (function () { var e = 1 return function () { return (e = (1664525 * e + 1013904223) % o) / o } })() function y() { b(), m.call('tick', n), s < u && (v.stop(), m.call('end', n)) } function b(t) { var r, i, o = e.length void 0 === t && (t = 1) for (var u = 0; u < t; ++u) for ( s += (f - s) * d, p.forEach(function (e) { e(s) }), r = 0; r < o; ++r ) null == (i = e[r]).fx ? (i.x += i.vx *= h) : ((i.x = i.fx), (i.vx = 0)), a > 1 && (null == i.fy ? (i.y += i.vy *= h) : ((i.y = i.fy), (i.vy = 0))), a > 2 && (null == i.fz ? (i.z += i.vz *= h) : ((i.z = i.fz), (i.vz = 0))) return n } function w() { for (var t, n = 0, r = e.length; n < r; ++n) { if ( (((t = e[n]).index = n), null != t.fx && (t.x = t.fx), null != t.fy && (t.y = t.fy), null != t.fz && (t.z = t.fz), isNaN(t.x) || (a > 1 && isNaN(t.y)) || (a > 2 && isNaN(t.z))) ) { var i = 10 * (a > 2 ? Math.cbrt(0.5 + n) : a > 1 ? Math.sqrt(0.5 + n) : n), o = n * l, s = n * c 1 === a ? (t.x = i) : 2 === a ? ((t.x = i * Math.cos(o)), (t.y = i * Math.sin(o))) : ((t.x = i * Math.sin(o) * Math.cos(s)), (t.y = i * Math.cos(o)), (t.z = i * Math.sin(o) * Math.sin(s))) } ;(isNaN(t.vx) || (a > 1 && isNaN(t.vy)) || (a > 2 && isNaN(t.vz))) && ((t.vx = 0), a > 1 && (t.vy = 0), a > 2 && (t.vz = 0)) } } function x(t) { return t.initialize && t.initialize(e, g, a), t } return ( null == e && (e = []), w(), (n = { tick: b, restart: function () { return v.restart(y), n }, stop: function () { return v.stop(), n }, numDimensions: function (e) { return arguments.length ? ((a = Math.min(3, Math.max(1, Math.round(e)))), p.forEach(x), n) : a }, nodes: function (t) { return arguments.length ? ((e = t), w(), p.forEach(x), n) : e }, alpha: function (e) { return arguments.length ? ((s = +e), n) : s }, alphaMin: function (e) { return arguments.length ? ((u = +e), n) : u }, alphaDecay: function (e) { return arguments.length ? ((d = +e), n) : +d }, alphaTarget: function (e) { return arguments.length ? ((f = +e), n) : f }, velocityDecay: function (e) { return arguments.length ? ((h = 1 - e), n) : 1 - h }, randomSource: function (e) { return arguments.length ? ((g = e), p.forEach(x), n) : g }, force: function (e, t) { return arguments.length > 1 ? (null == t ? p.delete(e) : p.set(e, x(t)), n) : p.get(e) }, find: function () { var t, n, r, i, o, s, u = Array.prototype.slice.call(arguments), l = u.shift() || 0, c = (a > 1 ? u.shift() : null) || 0, d = (a > 2 ? u.shift() : null) || 0, f = u.shift() || 1 / 0, h = 0, p = e.length for (f *= f, h = 0; h < p; ++h) (i = (t = l - (o = e[h]).x) * t + (n = c - (o.y || 0)) * n + (r = d - (o.z || 0)) * r) < f && ((s = o), (f = i)) return s }, on: function (e, t) { return arguments.length > 1 ? (m.on(e, t), n) : m.on(e) }, }) ) } }, 8357: function (e, t, n) { 'use strict' function r(e, t, n, r, i) { if (isNaN(t) || isNaN(n) || isNaN(r)) return e var o, a, s, u, l, c, d, f, h, p, v, m, g = e._root, y = { data: i }, b = e._x0, w = e._y0, x = e._z0, E = e._x1, k = e._y1, _ = e._z1 if (!g) return (e._root = y), e for (; g.length; ) if ( ((f = t >= (a = (b + E) / 2)) ? (b = a) : (E = a), (h = n >= (s = (w + k) / 2)) ? (w = s) : (k = s), (p = r >= (u = (x + _) / 2)) ? (x = u) : (_ = u), (o = g), !(g = g[(v = (p << 2) | (h << 1) | f)])) ) return (o[v] = y), e if ( ((l = +e._x.call(null, g.data)), (c = +e._y.call(null, g.data)), (d = +e._z.call(null, g.data)), t === l && n === c && r === d) ) return (y.next = g), o ? (o[v] = y) : (e._root = y), e do { ;(o = o ? (o[v] = new Array(8)) : (e._root = new Array(8))), (f = t >= (a = (b + E) / 2)) ? (b = a) : (E = a), (h = n >= (s = (w + k) / 2)) ? (w = s) : (k = s), (p = r >= (u = (x + _) / 2)) ? (x = u) : (_ = u) } while ( (v = (p << 2) | (h << 1) | f) === (m = ((d >= u) << 2) | ((c >= s) << 1) | (l >= a)) ) return (o[m] = g), (o[v] = y), e } function i(e, t, n, r, i, o, a) { ;(this.node = e), (this.x0 = t), (this.y0 = n), (this.z0 = r), (this.x1 = i), (this.y1 = o), (this.z1 = a) } function o(e) { return e[0] } function a(e) { return e[1] } function s(e) { return e[2] } function u(e, t, n, r) { var i = new l( null == t ? o : t, null == n ? a : n, null == r ? s : r, NaN, NaN, NaN, NaN, NaN, NaN, ) return null == e ? i : i.addAll(e) } function l(e, t, n, r, i, o, a, s, u) { ;(this._x = e), (this._y = t), (this._z = n), (this._x0 = r), (this._y0 = i), (this._z0 = o), (this._x1 = a), (this._y1 = s), (this._z1 = u), (this._root = void 0) } function c(e) { for (var t = { data: e.data }, n = t; (e = e.next); ) n = n.next = { data: e.data } return t } n.d(t, { Z: function () { return u }, }) var d = (u.prototype = l.prototype) ;(d.copy = function () { var e, t, n = new l( this._x, this._y, this._z, this._x0, this._y0, this._z0, this._x1, this._y1, this._z1, ), r = this._root if (!r) return n if (!r.length) return (n._root = c(r)), n for (e = [{ source: r, target: (n._root = new Array(8)) }]; (r = e.pop()); ) for (var i = 0; i < 8; ++i) (t = r.source[i]) && (t.length ? e.push({ source: t, target: (r.target[i] = new Array(8)) }) : (r.target[i] = c(t))) return n }), (d.add = function (e) { var t = +this._x.call(null, e), n = +this._y.call(null, e), i = +this._z.call(null, e) return r(this.cover(t, n, i), t, n, i, e) }), (d.addAll = function (e) { var t, n, i, o, a, s = e.length, u = new Array(s), l = new Array(s), c = new Array(s), d = 1 / 0, f = 1 / 0, h = 1 / 0, p = -1 / 0, v = -1 / 0, m = -1 / 0 for (n = 0; n < s; ++n) isNaN((i = +this._x.call(null, (t = e[n])))) || isNaN((o = +this._y.call(null, t))) || isNaN((a = +this._z.call(null, t))) || ((u[n] = i), (l[n] = o), (c[n] = a), i < d && (d = i), i > p && (p = i), o < f && (f = o), o > v && (v = o), a < h && (h = a), a > m && (m = a)) if (d > p || f > v || h > m) return this for (this.cover(d, f, h).cover(p, v, m), n = 0; n < s; ++n) r(this, u[n], l[n], c[n], e[n]) return this }), (d.cover = function (e, t, n) { if (isNaN((e = +e)) || isNaN((t = +t)) || isNaN((n = +n))) return this var r = this._x0, i = this._y0, o = this._z0, a = this._x1, s = this._y1, u = this._z1 if (isNaN(r)) (a = (r = Math.floor(e)) + 1), (s = (i = Math.floor(t)) + 1), (u = (o = Math.floor(n)) + 1) else { for ( var l, c, d = a - r || 1, f = this._root; r > e || e >= a || i > t || t >= s || o > n || n >= u; ) switch ( ((c = ((n < o) << 2) | ((t < i) << 1) | (e < r)), ((l = new Array(8))[c] = f), (f = l), (d *= 2), c) ) { case 0: ;(a = r + d), (s = i + d), (u = o + d) break case 1: ;(r = a - d), (s = i + d), (u = o + d) break case 2: ;(a = r + d), (i = s - d), (u = o + d) break case 3: ;(r = a - d), (i = s - d), (u = o + d) break case 4: ;(a = r + d), (s = i + d), (o = u - d) break case 5: ;(r = a - d), (s = i + d), (o = u - d) break case 6: ;(a = r + d), (i = s - d), (o = u - d) break case 7: ;(r = a - d), (i = s - d), (o = u - d) } this._root && this._root.length && (this._root = f) } return ( (this._x0 = r), (this._y0 = i), (this._z0 = o), (this._x1 = a), (this._y1 = s), (this._z1 = u), this ) }), (d.data = function () { var e = [] return ( this.visit(function (t) { if (!t.length) do { e.push(t.data) } while ((t = t.next)) }), e ) }), (d.extent = function (e) { return arguments.length ? this.cover(+e[0][0], +e[0][1], +e[0][2]).cover(+e[1][0], +e[1][1], +e[1][2]) : isNaN(this._x0) ? void 0 : [ [this._x0, this._y0, this._z0], [this._x1, this._y1, this._z1], ] }), (d.find = function (e, t, n, r) { var o, a, s, u, l, c, d, f, h, p = this._x0, v = this._y0, m = this._z0, g = this._x1, y = this._y1, b = this._z1, w = [], x = this._root for ( x && w.push(new i(x, p, v, m, g, y, b)), null == r ? (r = 1 / 0) : ((p = e - r), (v = t - r), (m = n - r), (g = e + r), (y = t + r), (b = n + r), (r *= r)); (f = w.pop()); ) if ( !( !(x = f.node) || (a = f.x0) > g || (s = f.y0) > y || (u = f.z0) > b || (l = f.x1) < p || (c = f.y1) < v || (d = f.z1) < m ) ) if (x.length) { var E = (a + l) / 2, k = (s + c) / 2, _ = (u + d) / 2 w.push( new i(x[7], E, k, _, l, c, d), new i(x[6], a, k, _, E, c, d), new i(x[5], E, s, _, l, k, d), new i(x[4], a, s, _, E, k, d), new i(x[3], E, k, u, l, c, _), new i(x[2], a, k, u, E, c, _), new i(x[1], E, s, u, l, k, _), new i(x[0], a, s, u, E, k, _), ), (h = ((n >= _) << 2) | ((t >= k) << 1) | (e >= E)) && ((f = w[w.length - 1]), (w[w.length - 1] = w[w.length - 1 - h]), (w[w.length - 1 - h] = f)) } else { var T = e - +this._x.call(null, x.data), O = t - +this._y.call(null, x.data), C = n - +this._z.call(null, x.data), S = T * T + O * O + C * C if (S < r) { var A = Math.sqrt((r = S)) ;(p = e - A), (v = t - A), (m = n - A), (g = e + A), (y = t + A), (b = n + A), (o = x.data) } } return o }), (d.remove = function (e) { if ( isNaN((o = +this._x.call(null, e))) || isNaN((a = +this._y.call(null, e))) || isNaN((s = +this._z.call(null, e))) ) return this var t, n, r, i, o, a, s, u, l, c, d, f, h, p, v, m = this._root, g = this._x0, y = this._y0, b = this._z0, w = this._x1, x = this._y1, E = this._z1 if (!m) return this if (m.length) for (;;) { if ( ((d = o >= (u = (g + w) / 2)) ? (g = u) : (w = u), (f = a >= (l = (y + x) / 2)) ? (y = l) : (x = l), (h = s >= (c = (b + E) / 2)) ? (b = c) : (E = c), (t = m), !(m = m[(p = (h << 2) | (f << 1) | d)])) ) return this if (!m.length) break ;(t[(p + 1) & 7] || t[(p + 2) & 7] || t[(p + 3) & 7] || t[(p + 4) & 7] || t[(p + 5) & 7] || t[(p + 6) & 7] || t[(p + 7) & 7]) && ((n = t), (v = p)) } for (; m.data !== e; ) if (((r = m), !(m = m.next))) return this return ( (i = m.next) && delete m.next, r ? (i ? (r.next = i) : delete r.next, this) : t ? (i ? (t[p] = i) : delete t[p], (m = t[0] || t[1] || t[2] || t[3] || t[4] || t[5] || t[6] || t[7]) && m === (t[7] || t[6] || t[5] || t[4] || t[3] || t[2] || t[1] || t[0]) && !m.length && (n ? (n[v] = m) : (this._root = m)), this) : ((this._root = i), this) ) }), (d.removeAll = function (e) { for (var t = 0, n = e.length; t < n; ++t) this.remove(e[t]) return this }), (d.root = function () { return this._root }), (d.size = function () { var e = 0 return ( this.visit(function (t) { if (!t.length) do { ++e } while ((t = t.next)) }), e ) }), (d.visit = function (e) { var t, n, r, o, a, s, u, l, c = [], d = this._root for ( d && c.push(new i(d, this._x0, this._y0, this._z0, this._x1, this._y1, this._z1)); (t = c.pop()); ) if ( !e( (d = t.node), (r = t.x0), (o = t.y0), (a = t.z0), (s = t.x1), (u = t.y1), (l = t.z1), ) && d.length ) { var f = (r + s) / 2, h = (o + u) / 2, p = (a + l) / 2 ;(n = d[7]) && c.push(new i(n, f, h, p, s, u, l)), (n = d[6]) && c.push(new i(n, r, h, p, f, u, l)), (n = d[5]) && c.push(new i(n, f, o, p, s, h, l)), (n = d[4]) && c.push(new i(n, r, o, p, f, h, l)), (n = d[3]) && c.push(new i(n, f, h, a, s, u, p)), (n = d[2]) && c.push(new i(n, r, h, a, f, u, p)), (n = d[1]) && c.push(new i(n, f, o, a, s, h, p)), (n = d[0]) && c.push(new i(n, r, o, a, f, h, p)) } return this }), (d.visitAfter = function (e) { var t, n = [], r = [] for ( this._root && n.push(new i(this._root, this._x0, this._y0, this._z0, this._x1, this._y1, this._z1)); (t = n.pop()); ) { var o = t.node if (o.length) { var a, s = t.x0, u = t.y0, l = t.z0, c = t.x1, d = t.y1, f = t.z1, h = (s + c) / 2, p = (u + d) / 2, v = (l + f) / 2 ;(a = o[0]) && n.push(new i(a, s, u, l, h, p, v)), (a = o[1]) && n.push(new i(a, h, u, l, c, p, v)), (a = o[2]) && n.push(new i(a, s, p, l, h, d, v)), (a = o[3]) && n.push(new i(a, h, p, l, c, d, v)), (a = o[4]) && n.push(new i(a, s, u, v, h, p, f)), (a = o[5]) && n.push(new i(a, h, u, v, c, p, f)), (a = o[6]) && n.push(new i(a, s, p, v, h, d, f)), (a = o[7]) && n.push(new i(a, h, p, v, c, d, f)) } r.push(t) } for (; (t = r.pop()); ) e(t.node, t.x0, t.y0, t.z0, t.x1, t.y1, t.z1) return this }), (d.x = function (e) { return arguments.length ? ((this._x = e), this) : this._x }), (d.y = function (e) { return arguments.length ? ((this._y = e), this) : this._y }), (d.z = function (e) { return arguments.length ? ((this._z = e), this) : this._z }) }, 54: function (e, t, n) { 'use strict' function r(e, t, n, r) { if (isNaN(t) || isNaN(n)) return e var i, o, a, s, u, l, c, d, f, h = e._root, p = { data: r }, v = e._x0, m = e._y0, g = e._x1, y = e._y1 if (!h) return (e._root = p), e for (; h.length; ) if ( ((l = t >= (o = (v + g) / 2)) ? (v = o) : (g = o), (c = n >= (a = (m + y) / 2)) ? (m = a) : (y = a), (i = h), !(h = h[(d = (c << 1) | l)])) ) return (i[d] = p), e if (((s = +e._x.call(null, h.data)), (u = +e._y.call(null, h.data)), t === s && n === u)) return (p.next = h), i ? (i[d] = p) : (e._root = p), e do { ;(i = i ? (i[d] = new Array(4)) : (e._root = new Array(4))), (l = t >= (o = (v + g) / 2)) ? (v = o) : (g = o), (c = n >= (a = (m + y) / 2)) ? (m = a) : (y = a) } while ((d = (c << 1) | l) === (f = ((u >= a) << 1) | (s >= o))) return (i[f] = h), (i[d] = p), e } function i(e, t, n, r, i) { ;(this.node = e), (this.x0 = t), (this.y0 = n), (this.x1 = r), (this.y1 = i) } function o(e) { return e[0] } function a(e) { return e[1] } function s(e, t, n) { var r = new u(null == t ? o : t, null == n ? a : n, NaN, NaN, NaN, NaN) return null == e ? r : r.addAll(e) } function u(e, t, n, r, i, o) { ;(this._x = e), (this._y = t), (this._x0 = n), (this._y0 = r), (this._x1 = i), (this._y1 = o), (this._root = void 0) } function l(e) { for (var t = { data: e.data }, n = t; (e = e.next); ) n = n.next = { data: e.data } return t } n.d(t, { Z: function () { return s }, }) var c = (s.prototype = u.prototype) ;(c.copy = function () { var e, t, n = new u(this._x, this._y, this._x0, this._y0, this._x1, this._y1), r = this._root if (!r) return n if (!r.length) return (n._root = l(r)), n for (e = [{ source: r, target: (n._root = new Array(4)) }]; (r = e.pop()); ) for (var i = 0; i < 4; ++i) (t = r.source[i]) && (t.length ? e.push({ source: t, target: (r.target[i] = new Array(4)) }) : (r.target[i] = l(t))) return n }), (c.add = function (e) { var t = +this._x.call(null, e), n = +this._y.call(null, e) return r(this.cover(t, n), t, n, e) }), (c.addAll = function (e) { var t, n, i, o, a = e.length, s = new Array(a), u = new Array(a), l = 1 / 0, c = 1 / 0, d = -1 / 0, f = -1 / 0 for (n = 0; n < a; ++n) isNaN((i = +this._x.call(null, (t = e[n])))) || isNaN((o = +this._y.call(null, t))) || ((s[n] = i), (u[n] = o), i < l && (l = i), i > d && (d = i), o < c && (c = o), o > f && (f = o)) if (l > d || c > f) return this for (this.cover(l, c).cover(d, f), n = 0; n < a; ++n) r(this, s[n], u[n], e[n]) return this }), (c.cover = function (e, t) { if (isNaN((e = +e)) || isNaN((t = +t))) return this var n = this._x0, r = this._y0, i = this._x1, o = this._y1 if (isNaN(n)) (i = (n = Math.floor(e)) + 1), (o = (r = Math.floor(t)) + 1) else { for (var a, s, u = i - n || 1, l = this._root; n > e || e >= i || r > t || t >= o; ) switch ( ((s = ((t < r) << 1) | (e < n)), ((a = new Array(4))[s] = l), (l = a), (u *= 2), s) ) { case 0: ;(i = n + u), (o = r + u) break case 1: ;(n = i - u), (o = r + u) break case 2: ;(i = n + u), (r = o - u) break case 3: ;(n = i - u), (r = o - u) } this._root && this._root.length && (this._root = l) } return (this._x0 = n), (this._y0 = r), (this._x1 = i), (this._y1 = o), this }), (c.data = function () { var e = [] return ( this.visit(function (t) { if (!t.length) do { e.push(t.data) } while ((t = t.next)) }), e ) }), (c.extent = function (e) { return arguments.length ? this.cover(+e[0][0], +e[0][1]).cover(+e[1][0], +e[1][1]) : isNaN(this._x0) ? void 0 : [ [this._x0, this._y0], [this._x1, this._y1], ] }), (c.find = function (e, t, n) { var r, o, a, s, u, l, c, d = this._x0, f = this._y0, h = this._x1, p = this._y1, v = [], m = this._root for ( m && v.push(new i(m, d, f, h, p)), null == n ? (n = 1 / 0) : ((d = e - n), (f = t - n), (h = e + n), (p = t + n), (n *= n)); (l = v.pop()); ) if ( !( !(m = l.node) || (o = l.x0) > h || (a = l.y0) > p || (s = l.x1) < d || (u = l.y1) < f ) ) if (m.length) { var g = (o + s) / 2, y = (a + u) / 2 v.push( new i(m[3], g, y, s, u), new i(m[2], o, y, g, u), new i(m[1], g, a, s, y), new i(m[0], o, a, g, y), ), (c = ((t >= y) << 1) | (e >= g)) && ((l = v[v.length - 1]), (v[v.length - 1] = v[v.length - 1 - c]), (v[v.length - 1 - c] = l)) } else { var b = e - +this._x.call(null, m.data), w = t - +this._y.call(null, m.data), x = b * b + w * w if (x < n) { var E = Math.sqrt((n = x)) ;(d = e - E), (f = t - E), (h = e + E), (p = t + E), (r = m.data) } } return r }), (c.remove = function (e) { if (isNaN((o = +this._x.call(null, e))) || isNaN((a = +this._y.call(null, e)))) return this var t, n, r, i, o, a, s, u, l, c, d, f, h = this._root, p = this._x0, v = this._y0, m = this._x1, g = this._y1 if (!h) return this if (h.length) for (;;) { if ( ((l = o >= (s = (p + m) / 2)) ? (p = s) : (m = s), (c = a >= (u = (v + g) / 2)) ? (v = u) : (g = u), (t = h), !(h = h[(d = (c << 1) | l)])) ) return this if (!h.length) break ;(t[(d + 1) & 3] || t[(d + 2) & 3] || t[(d + 3) & 3]) && ((n = t), (f = d)) } for (; h.data !== e; ) if (((r = h), !(h = h.next))) return this return ( (i = h.next) && delete h.next, r ? (i ? (r.next = i) : delete r.next, this) : t ? (i ? (t[d] = i) : delete t[d], (h = t[0] || t[1] || t[2] || t[3]) && h === (t[3] || t[2] || t[1] || t[0]) && !h.length && (n ? (n[f] = h) : (this._root = h)), this) : ((this._root = i), this) ) }), (c.removeAll = function (e) { for (var t = 0, n = e.length; t < n; ++t) this.remove(e[t]) return this }), (c.root = function () { return this._root }), (c.size = function () { var e = 0 return ( this.visit(function (t) { if (!t.length) do { ++e } while ((t = t.next)) }), e ) }), (c.visit = function (e) { var t, n, r, o, a, s, u = [], l = this._root for (l && u.push(new i(l, this._x0, this._y0, this._x1, this._y1)); (t = u.pop()); ) if (!e((l = t.node), (r = t.x0), (o = t.y0), (a = t.x1), (s = t.y1)) && l.length) { var c = (r + a) / 2, d = (o + s) / 2 ;(n = l[3]) && u.push(new i(n, c, d, a, s)), (n = l[2]) && u.push(new i(n, r, d, c, s)), (n = l[1]) && u.push(new i(n, c, o, a, d)), (n = l[0]) && u.push(new i(n, r, o, c, d)) } return this }), (c.visitAfter = function (e) { var t, n = [], r = [] for ( this._root && n.push(new i(this._root, this._x0, this._y0, this._x1, this._y1)); (t = n.pop()); ) { var o = t.node if (o.length) { var a, s = t.x0, u = t.y0, l = t.x1, c = t.y1, d = (s + l) / 2, f = (u + c) / 2 ;(a = o[0]) && n.push(new i(a, s, u, d, f)), (a = o[1]) && n.push(new i(a, d, u, l, f)), (a = o[2]) && n.push(new i(a, s, f, d, c)), (a = o[3]) && n.push(new i(a, d, f, l, c)) } r.push(t) } for (; (t = r.pop()); ) e(t.node, t.x0, t.y0, t.x1, t.y1) return this }), (c.x = function (e) { return arguments.length ? ((this._x = e), this) : this._x }), (c.y = function (e) { return arguments.length ? ((this._y = e), this) : this._y }) }, 2816: function (e, t, n) { 'use strict' n.d(t, { Z: function () { return r }, }) var r = (function (e) { for (var t = (e.length / 6) | 0, n = new Array(t), r = 0; r < t; ) n[r] = '#' + e.slice(6 * r, 6 * ++r) return n })('a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928') }, 2462: function (e, t, n) { 'use strict' n.d(t, { Z: function () { return f }, }) class r extends Map { constructor(e, t = s) { if ( (super(), Object.defineProperties(this, { _intern: { value: new Map() }, _key: { value: t } }), null != e) ) for (const [n, r] of e) this.set(n, r) } get(e) { return super.get(i(this, e)) } has(e) { return super.has(i(this, e)) } set(e, t) { return super.set(o(this, e), t) } delete(e) { return super.delete(a(this, e)) } } Set function i({ _intern: e, _key: t }, n) { const r = t(n) return e.has(r) ? e.get(r) : n } function o({ _intern: e, _key: t }, n) { const r = t(n) return e.has(r) ? e.get(r) : (e.set(r, n), n) } function a({ _intern: e, _key: t }, n) { const r = t(n) return e.has(r) && ((n = e.get(n)), e.delete(r)), n } function s(e) { return null !== e && 'object' === typeof e ? e.valueOf() : e } function u(e, t) { switch (arguments.length) { case 0: break case 1: this.range(e) break default: this.range(t).domain(e) } return this } function l(e, t) { var n if ('undefined' === typeof Symbol || null == e[Symbol.iterator]) { if ( Array.isArray(e) || (n = (function (e, t) { if (!e) return if ('string' === typeof e) return c(e, t) var n = Object.prototype.toString.call(e).slice(8, -1) 'Object' === n && e.constructor && (n = e.constructor.name) if ('Map' === n || 'Set' === n) return Array.from(e) if ('Arguments' === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return c(e, t) })(e)) || (t && e && 'number' === typeof e.length) ) { n && (e = n) var r = 0, i = function () {} return { s: i, n: function () { return r >= e.length ? { done: !0 } : { done: !1, value: e[r++] } }, e: function (e) { throw e }, f: i, } } throw new TypeError( 'Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.', ) } var o, a = !0, s = !1 return { s: function () { n = e[Symbol.iterator]() }, n: function () { var e = n.next() return (a = e.done), e }, e: function (e) { ;(s = !0), (o = e) }, f: function () { try { a || null == n.return || n.return() } finally { if (s) throw o } }, } } function c(e, t) { ;(null == t || t > e.length) && (t = e.length) for (var n = 0, r = new Array(t); n < t; n++) r[n] = e[n] return r } var d = Symbol('implicit') function f() { var e = new r(), t = [], n = [], i = d function o(r) { var o = e.get(r) if (void 0 === o) { if (i !== d) return i e.set(r, (o = t.push(r) - 1)) } return n[o % n.length] } return ( (o.domain = function (n) { if (!arguments.length) return t.slice() ;(t = []), (e = new r()) var i, a = l(n) try { for (a.s(); !(i = a.n()).done; ) { var s = i.value e.has(s) || e.set(s, t.push(s) - 1) } } catch (u) { a.e(u) } finally { a.f() } return o }), (o.range = function (e) { return arguments.length ? ((n = Array.from(e)), o) : n.slice() }), (o.unknown = function (e) { return arguments.length ? ((i = e), o) : i }), (o.copy = function () { return f(t, n).unknown(i) }), u.apply(o, arguments), o ) } }, 513: function (e, t, n) { 'use strict' n.d(t, { zO: function () { return h }, B7: function () { return v }, HT: function () { return m }, }) var r, i, o = 0, a = 0, s = 0, u = 0, l = 0, c = 0, d = 'object' === typeof performance && performance.now ? performance : Date, f = window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function (e) { setTimeout(e, 17) } function h() { return l || (f(p), (l = d.now() + c)) } function p() { l = 0 } function v() { this._call = this._time = this._next = null } function m(e, t, n) { var r = new v() return r.restart(e, t, n), r } function g() { ;(l = (u = d.now()) + c), (o = a = 0) try { !(function () { h(), ++o for (var e, t = r; t; ) (e = l - t._time) >= 0 && t._call.call(void 0, e), (t = t._next) --o })() } finally { ;(o = 0), (function () { var e, t, n = r, o = 1 / 0 for (; n; ) n._call ? (o > n._time && (o = n._time), (e = n), (n = n._next)) : ((t = n._next), (n._next = null), (n = e ? (e._next = t) : (r = t))) ;(i = e), b(o) })(), (l = 0) } } function y() { var e = d.now(), t = e - u t > 1e3 && ((c -= t), (u = e)) } function b(e) { o || (a && (a = clearTimeout(a)), e - l > 24 ? (e < 1 / 0 && (a = setTimeout(g, e - d.now() - c)), s && (s = clearInterval(s))) : (s || ((u = d.now()), (s = setInterval(y, 1e3))), (o = 1), f(g))) } v.prototype = m.prototype = { constructor: v, restart: function (e, t, n) { if ('function' !== typeof e) throw new TypeError('callback is not a function') ;(n = (null == n ? h() : +n) + (null == t ? 0 : +t)), this._next || i === this || (i ? (i._next = this) : (r = this), (i = this)), (this._call = e), (this._time = n), b() }, stop: function () { this._call && ((this._call = null), (this._time = 1 / 0), b()) }, } }, 4245: function (e) { e.exports = function (e) { !(function (e) { if (!e) throw new Error('Eventify cannot use falsy object as events subject') for (var t = ['on', 'fire', 'off'], n = 0; n < t.length; ++n) if (e.hasOwnProperty(t[n])) throw new Error( "Subject cannot be eventified, since it already has property '" + t[n] + "'", ) })(e) var t = (function (e) { var t = Object.create(null) return { on: function (n, r, i) { if ('function' !== typeof r) throw new Error('callback is expected to be a function') var o = t[n] return o || (o = t[n] = []), o.push({ callback: r, ctx: i }), e }, off: function (n, r) { if ('undefined' === typeof n) return (t = Object.create(null)), e if (t[n]) if ('function' !== typeof r) delete t[n] else for (var i = t[n], o = 0; o < i.length; ++o) i[o].callback === r && i.splice(o, 1) return e }, fire: function (n) { var r, i = t[n] if (!i) return e arguments.length > 1 && (r = Array.prototype.splice.call(arguments, 1)) for (var o = 0; o < i.length; ++o) { var a = i[o] a.callback.apply(a.ctx, r) } return e }, } })(e) return (e.on = t.on), (e.off = t.off), (e.fire = t.fire), e } }, 6505: function (e, t, n) { ;(e.exports = function (e, t) { if (!e) throw new Error('Graph structure cannot be undefined') var o = ((t && t.createSimulator) || n(5818))(t) if (Array.isArray(t)) throw new Error('Physics settings is expected to be an object') var a = function (t) { var n = e.getLinks(t) return n ? 1 + n.length / 3 : 1 } t && 'function' === typeof t.nodeMass && (a = t.nodeMass) var s = new Map(), u = {}, l = 0, c = o.settings.springTransform || i ;(l = 0), e.forEachNode(function (e) { m(e.id), (l += 1) }), e.forEachLink(y), e.on('changed', v) var d = !1, f = { step: function () { if (0 === l) return h(!0), !0 var e = o.step() ;(f.lastMove = e), f.fire('step') var t = e / l <= 0.01 return h(t), t }, getNodePosition: function (e) { return x(e).pos }, setNodePosition: function (e) { var t = x(e) t.setPosition.apply(t, Array.prototype.slice.call(arguments, 1)) }, getLinkPosition: function (e) { var t = u[e] if (t) return { from: t.from.pos, to: t.to.pos } }, getGraphRect: function () { return o.getBBox() }, forEachBody: p, pinNode: function (e, t) { x(e.id).isPinned = !!t }, isNodePinned: function (e) { return x(e.id).isPinned }, dispose: function () { e.off('changed', v), f.fire('disposed') }, getBody: function (e) { return s.get(e) }, getSpring: function (t, n) { var r if (void 0 === n) r = 'object' !== typeof t ? t : t.id else { var i = e.hasLink(t, n) if (!i) return r = i.id } return u[r] }, getForceVectorLength: function () { var e = 0, t = 0 return ( p(function (n) { ;(e += Math.abs(n.force.x)), (t += Math.abs(n.force.y)) }), Math.sqrt(e * e + t * t) ) }, simulator: o, graph: e, lastMove: 0, } return r(f), f function h(e) { var t d !== e && ((d = e), (t = e), f.fire('stable', t)) } function p(e) { s.forEach(e) } function v(t) { for (var n = 0; n < t.length; ++n) { var r = t[n] 'add' === r.changeType ? (r.node && m(r.node.id), r.link && y(r.link)) : 'remove' === r.changeType && (r.node && g(r.node), r.link && b(r.link)) } l = e.getNodesCount() } function m(t) { var n = s.get(t) if (!n) { var r = e.getNode(t) if (!r) throw new Error('initBody() was called with unknown node id') var i = r.position if (!i) { var a = (function (e) { var t = [] if (!e.links) return t for (var n = Math.min(e.links.length, 2), r = 0; r < n; ++r) { var i = e.links[r], o = i.fromId !== e.id ? s.get(i.fromId) : s.get(i.toId) o && o.pos && t.push(o) } return t })(r) i = o.getBestNewBodyPosition(a) } ;((n = o.addBodyAt(i)).id = t), s.set(t, n), w(t), (function (e) { return e && (e.isPinned || (e.data && e.data.isPinned)) })(r) && (n.isPinned = !0) } } function g(e) { var t = e.id, n = s.get(t) n && (s.delete(t), o.removeBody(n)) } function y(e) { w(e.fromId), w(e.toId) var t = s.get(e.fromId), n = s.get(e.toId), r = o.addSpring(t, n, e.length) c(e, r), (u[e.id] = r) } function b(t) { var n = u[t.id] if (n) { var r = e.getNode(t.fromId), i = e.getNode(t.toId) r && w(r.id), i && w(i.id), delete u[t.id], o.removeSpring(n) } } function w(e) { var t = s.get(e) if (((t.mass = a(e)), Number.isNaN(t.mass))) throw new Error('Node mass should be a number') } function x(e) { var t = s.get(e) return t || (m(e), (t = s.get(e))), t } }), (e.exports.simulator = n(5818)) var r = n(4245) function i() {} }, 5189: function (e, t, n) { const r = n(6422) e.exports = function (e) { return function (t, n) { let i = (n && n.indent) || 0, o = n && void 0 !== n.join ? n.join : '\n', a = Array(i + 1).join(' '), s = [] for (let u = 0; u < e; ++u) { let e = r(u), n = 0 === u ? '' : a s.push(n + t.replace(/{var}/g, e)) } return s.join(o) } } }, 891: function (e, t, n) { ;(e.exports = function (e) { let t = i(e) return new Function('bodies', 'settings', 'random', t) }), (e.exports.generateFunctionBody = i) const r = n(5189) function i(e) { let t = r(e) return `\n var boundingBox = {\n ${t('min_{var}: 0, max_{var}: 0,', { indent: 4, })}\n };\n\n return {\n box: boundingBox,\n\n update: updateBoundingBox,\n\n reset: resetBoundingBox,\n\n getBestNewPosition: function (neighbors) {\n var ${t( 'base_{var} = 0', { join: ', ' }, )};\n\n if (neighbors.length) {\n for (var i = 0; i < neighbors.length; ++i) {\n let neighborPos = neighbors[i].pos;\n ${t( 'base_{var} += neighborPos.{var};', { indent: 10 }, )}\n }\n\n ${t('base_{var} /= neighbors.length;', { indent: 8, })}\n } else {\n ${t( 'base_{var} = (boundingBox.min_{var} + boundingBox.max_{var}) / 2;', { indent: 8 }, )}\n }\n\n var springLength = settings.springLength;\n return {\n ${t( '{var}: base_{var} + (random.nextDouble() - 0.5) * springLength,', { indent: 8 }, )}\n };\n }\n };\n\n function updateBoundingBox() {\n var i = bodies.length;\n if (i === 0) return; // No bodies - no borders.\n\n ${t( 'var max_{var} = -Infinity;', { indent: 4 }, )}\n ${t('var min_{var} = Infinity;', { indent: 4, })}\n\n while(i--) {\n // this is O(n), it could be done faster with quadtree, if we check the root node bounds\n var bodyPos = bodies[i].pos;\n ${t( 'if (bodyPos.{var} < min_{var}) min_{var} = bodyPos.{var};', { indent: 6 }, )}\n ${t('if (bodyPos.{var} > max_{var}) max_{var} = bodyPos.{var};', { indent: 6, })}\n }\n\n ${t('boundingBox.min_{var} = min_{var};', { indent: 4 })}\n ${t( 'boundingBox.max_{var} = max_{var};', { indent: 4 }, )}\n }\n\n function resetBoundingBox() {\n ${t( 'boundingBox.min_{var} = boundingBox.max_{var} = 0;', { indent: 4 }, )}\n }\n` } }, 6410: function (e, t, n) { const r = n(5189) function i(e, t) { return `\n${a(e, t)}\n${o(e)}\nreturn {Body: Body, Vector: Vector};\n` } function o(e) { let t = r(e), n = t('{var}', { join: ', ' }) return `\nfunction Body(${n}) {\n this.isPinned = false;\n this.pos = new Vector(${n});\n this.force = new Vector();\n this.velocity = new Vector();\n this.mass = 1;\n\n this.springCount = 0;\n this.springLength = 0;\n}\n\nBody.prototype.reset = function() {\n this.force.reset();\n this.springCount = 0;\n this.springLength = 0;\n}\n\nBody.prototype.setPosition = function (${n}) {\n ${t( 'this.pos.{var} = {var} || 0;', { indent: 2 }, )}\n};` } function a(e, t) { let n = r(e), i = '' return ( t && (i = `${n( "\n var v{var};\nObject.defineProperty(this, '{var}', {\n set: function(v) { \n if (!Number.isFinite(v)) throw new Error('Cannot set non-numbers to {var}');\n v{var} = v; \n },\n get: function() { return v{var}; }\n});", )}`), `function Vector(${n('{var}', { join: ', ', })}) {\n ${i}\n if (typeof arguments[0] === 'object') {\n // could be another vector\n let v = arguments[0];\n ${n( 'if (!Number.isFinite(v.{var})) throw new Error("Expected value is not a finite number at Vector constructor ({var})");', { indent: 4 }, )}\n ${n('this.{var} = v.{var};', { indent: 4 })}\n } else {\n ${n( 'this.{var} = typeof {var} === "number" ? {var} : 0;', { indent: 4 }, )}\n }\n }\n \n Vector.prototype.reset = function () {\n ${n('this.{var} = ', { join: '', })}0;\n };` ) } ;(e.exports = function (e, t) { let n = i(e, t), { Body: r } = new Function(n)() return r }), (e.exports.generateCreateBodyFunctionBody = i), (e.exports.getVectorCode = a), (e.exports.getBodyCode = o) }, 6647: function (e, t, n) { const r = n(5189) function i(e) { return `\n if (!Number.isFinite(options.dragCoefficient)) throw new Error('dragCoefficient is not a finite number');\n\n return {\n update: function(body) {\n ${r( e, )('body.force.{var} -= options.dragCoefficient * body.velocity.{var};', { indent: 6, })}\n }\n };\n` } ;(e.exports = function (e) { let t = i(e) return new Function('options', t) }), (e.exports.generateCreateDragForceFunctionBody = i) }, 4079: function (e, t, n) { const r = n(5189) function i(e) { let t = r(e) return `\n if (!Number.isFinite(options.springCoefficient)) throw new Error('Spring coefficient is not a number');\n if (!Number.isFinite(options.springLength)) throw new Error('Spring length is not a number');\n\n return {\n /**\n * Updates forces acting on a spring\n */\n update: function (spring) {\n var body1 = spring.from;\n var body2 = spring.to;\n var length = spring.length < 0 ? options.springLength : spring.length;\n ${t( 'var d{var} = body2.pos.{var} - body1.pos.{var};', { indent: 6 }, )}\n var r = Math.sqrt(${t('d{var} * d{var}', { join: ' + ', })});\n\n if (r === 0) {\n ${t('d{var} = (random.nextDouble() - 0.5) / 50;', { indent: 8, })}\n r = Math.sqrt(${t('d{var} * d{var}', { join: ' + ', })});\n }\n\n var d = r - length;\n var coefficient = ((spring.coefficient > 0) ? spring.coefficient : options.springCoefficient) * d / r;\n\n ${t( 'body1.force.{var} += coefficient * d{var}', { indent: 6 }, )};\n body1.springCount += 1;\n body1.springLength += r;\n\n ${t( 'body2.force.{var} -= coefficient * d{var}', { indent: 6 }, )};\n body2.springCount += 1;\n body2.springLength += r;\n }\n };\n` } ;(e.exports = function (e) { let t = i(e) return new Function('options', 'random', t) }), (e.exports.generateCreateSpringForceFunctionBody = i) }, 1763: function (e, t, n) { const r = n(5189) function i(e) { let t = r(e) return `\n var length = bodies.length;\n if (length === 0) return 0;\n\n ${t( 'var d{var} = 0, t{var} = 0;', { indent: 2 }, )}\n\n for (var i = 0; i < length; ++i) {\n var body = bodies[i];\n if (body.isPinned) continue;\n\n if (adaptiveTimeStepWeight && body.springCount) {\n timeStep = (adaptiveTimeStepWeight * body.springLength/body.springCount);\n }\n\n var coeff = timeStep / body.mass;\n\n ${t( 'body.velocity.{var} += coeff * body.force.{var};', { indent: 4 }, )}\n ${t('var v{var} = body.velocity.{var};', { indent: 4 })}\n var v = Math.sqrt(${t( 'v{var} * v{var}', { join: ' + ' }, )});\n\n if (v > 1) {\n // We normalize it so that we move within timeStep range. \n // for the case when v <= 1 - we let velocity to fade out.\n ${t( 'body.velocity.{var} = v{var} / v;', { indent: 6 }, )}\n }\n\n ${t('d{var} = timeStep * body.velocity.{var};', { indent: 4 })}\n\n ${t( 'body.pos.{var} += d{var};', { indent: 4 }, )}\n\n ${t('t{var} += Math.abs(d{var});', { indent: 4 })}\n }\n\n return (${t( 't{var} * t{var}', { join: ' + ' }, )})/length;\n` } ;(e.exports = function (e) { let t = i(e) return new Function('bodies', 'timeStep', 'adaptiveTimeStepWeight', t) }), (e.exports.generateIntegratorFunctionBody = i) }, 1584: function (e, t, n) { const r = n(5189), i = n(6422) function o(e) { let t = r(e), n = Math.pow(2, e) return `\n${c()}\n${l(e)}\n${a(e)}\n${u(e)}\n${s( e, )}\n\nfunction createQuadTree(options, random) {\n options = options || {};\n options.gravity = typeof options.gravity === 'number' ? options.gravity : -1;\n options.theta = typeof options.theta === 'number' ? options.theta : 0.8;\n\n var gravity = options.gravity;\n var updateQueue = [];\n var insertStack = new InsertStack();\n var theta = options.theta;\n\n var nodesCache = [];\n var currentInCache = 0;\n var root = newNode();\n\n return {\n insertBodies: insertBodies,\n\n /**\n * Gets root node if it is present\n */\n getRoot: function() {\n return root;\n },\n\n updateBodyForce: update,\n\n options: function(newOptions) {\n if (newOptions) {\n if (typeof newOptions.gravity === 'number') {\n gravity = newOptions.gravity;\n }\n if (typeof newOptions.theta === 'number') {\n theta = newOptions.theta;\n }\n\n return this;\n }\n\n return {\n gravity: gravity,\n theta: theta\n };\n }\n };\n\n function newNode() {\n // To avoid pressure on GC we reuse nodes.\n var node = nodesCache[currentInCache];\n if (node) {\n${(function ( e, ) { let t = [] for (let r = 0; r < n; ++r) t.push(`${e}quad${r} = null;`) return t.join('\n') })(' node.')}\n node.body = null;\n node.mass = ${t('node.mass_{var} = ', { join: '', })}0;\n ${t('node.min_{var} = node.max_{var} = ', { join: '', })}0;\n } else {\n node = new QuadNode();\n nodesCache[currentInCache] = node;\n }\n\n ++currentInCache;\n return node;\n }\n\n function update(sourceBody) {\n var queue = updateQueue;\n var v;\n ${t( 'var d{var};', { indent: 4 }, )}\n var r; \n ${t('var f{var} = 0;', { indent: 4, })}\n var queueLength = 1;\n var shiftIdx = 0;\n var pushIdx = 1;\n\n queue[0] = root;\n\n while (queueLength) {\n var node = queue[shiftIdx];\n var body = node.body;\n\n queueLength -= 1;\n shiftIdx += 1;\n var differentBody = (body !== sourceBody);\n if (body && differentBody) {\n // If the current node is a leaf node (and it is not source body),\n // calculate the force exerted by the current node on body, and add this\n // amount to body's net force.\n ${t( 'd{var} = body.pos.{var} - sourceBody.pos.{var};', { indent: 8 }, )}\n r = Math.sqrt(${t('d{var} * d{var}', { join: ' + ', })});\n\n if (r === 0) {\n // Poor man's protection against zero distance.\n ${t( 'd{var} = (random.nextDouble() - 0.5) / 50;', { indent: 10 }, )}\n r = Math.sqrt(${t('d{var} * d{var}', { join: ' + ', })});\n }\n\n // This is standard gravitation force calculation but we divide\n // by r^3 to save two operations when normalizing force vector.\n v = gravity * body.mass * sourceBody.mass / (r * r * r);\n ${t( 'f{var} += v * d{var};', { indent: 8 }, )}\n } else if (differentBody) {\n // Otherwise, calculate the ratio s / r, where s is the width of the region\n // represented by the internal node, and r is the distance between the body\n // and the node's center-of-mass\n ${t( 'd{var} = node.mass_{var} / node.mass - sourceBody.pos.{var};', { indent: 8 }, )}\n r = Math.sqrt(${t('d{var} * d{var}', { join: ' + ', })});\n\n if (r === 0) {\n // Sorry about code duplication. I don't want to create many functions\n // right away. Just want to see performance first.\n ${t( 'd{var} = (random.nextDouble() - 0.5) / 50;', { indent: 10 }, )}\n r = Math.sqrt(${t('d{var} * d{var}', { join: ' + ', })});\n }\n // If s / r < \u03b8, treat this internal node as a single body, and calculate the\n // force it exerts on sourceBody, and add this amount to sourceBody's net force.\n if ((node.max_${i( 0, )} - node.min_${i( 0, )}) / r < theta) {\n // in the if statement above we consider node's width only\n // because the region was made into square during tree creation.\n // Thus there is no difference between using width or height.\n v = gravity * node.mass * sourceBody.mass / (r * r * r);\n ${t( 'f{var} += v * d{var};', { indent: 10 }, )}\n } else {\n // Otherwise, run the procedure recursively on each of the current node's children.\n\n // I intentionally unfolded this loop, to save several CPU cycles.\n${(function () { let e = Array(11).join(' '), t = [] for (let r = 0; r < n; ++r) t.push(e + `if (node.quad${r}) {`), t.push(e + ` queue[pushIdx] = node.quad${r};`), t.push(e + ' queueLength += 1;'), t.push(e + ' pushIdx += 1;'), t.push(e + '}') return t.join('\n') })()}\n }\n }\n }\n\n ${t('sourceBody.force.{var} += f{var};', { indent: 4, })}\n }\n\n function insertBodies(bodies) {\n ${t('var {var}min = Number.MAX_VALUE;', { indent: 4, })}\n ${t('var {var}max = Number.MIN_VALUE;', { indent: 4, })}\n var i = bodies.length;\n\n // To reduce quad tree depth we are looking for exact bounding box of all particles.\n while (i--) {\n var pos = bodies[i].pos;\n ${t( 'if (pos.{var} < {var}min) {var}min = pos.{var};', { indent: 6 }, )}\n ${t('if (pos.{var} > {var}max) {var}max = pos.{var};', { indent: 6, })}\n }\n\n // Makes the bounds square.\n var maxSideLength = -Infinity;\n ${t( 'if ({var}max - {var}min > maxSideLength) maxSideLength = {var}max - {var}min ;', { indent: 4 }, )}\n\n currentInCache = 0;\n root = newNode();\n ${t( 'root.min_{var} = {var}min;', { indent: 4 }, )}\n ${t('root.max_{var} = {var}min + maxSideLength;', { indent: 4, })}\n\n i = bodies.length - 1;\n if (i >= 0) {\n root.body = bodies[i];\n }\n while (i--) {\n insert(bodies[i], root);\n }\n }\n\n function insert(newBody) {\n insertStack.reset();\n insertStack.push(root, newBody);\n\n while (!insertStack.isEmpty()) {\n var stackItem = insertStack.pop();\n var node = stackItem.node;\n var body = stackItem.body;\n\n if (!node.body) {\n // This is internal node. Update the total mass of the node and center-of-mass.\n ${t( 'var {var} = body.pos.{var};', { indent: 8 }, )}\n node.mass += body.mass;\n ${t('node.mass_{var} += body.mass * {var};', { indent: 8, })}\n\n // Recursively insert the body in the appropriate quadrant.\n // But first find the appropriate quadrant.\n var quadIdx = 0; // Assume we are in the 0's quad.\n ${t( 'var min_{var} = node.min_{var};', { indent: 8 }, )}\n ${t('var max_{var} = (min_{var} + node.max_{var}) / 2;', { indent: 8, })}\n\n${(function (t) { let n = [], r = Array(t + 1).join(' ') for (let o = 0; o < e; ++o) n.push(r + `if (${i(o)} > max_${i(o)}) {`), n.push(r + ` quadIdx = quadIdx + ${Math.pow(2, o)};`), n.push(r + ` min_${i(o)} = max_${i(o)};`), n.push(r + ` max_${i(o)} = node.max_${i(o)};`), n.push(r + '}') return n.join('\n') })( 8, )}\n\n var child = getChild(node, quadIdx);\n\n if (!child) {\n // The node is internal but this quadrant is not taken. Add\n // subnode to it.\n child = newNode();\n ${t( 'child.min_{var} = min_{var};', { indent: 10 }, )}\n ${t('child.max_{var} = max_{var};', { indent: 10, })}\n child.body = body;\n\n setChild(node, quadIdx, child);\n } else {\n // continue searching in this quadrant.\n insertStack.push(child, body);\n }\n } else {\n // We are trying to add to the leaf node.\n // We have to convert current leaf into internal node\n // and continue adding two nodes.\n var oldBody = node.body;\n node.body = null; // internal nodes do not cary bodies\n\n if (isSamePosition(oldBody.pos, body.pos)) {\n // Prevent infinite subdivision by bumping one node\n // anywhere in this quadrant\n var retriesCount = 3;\n do {\n var offset = random.nextDouble();\n ${t( 'var d{var} = (node.max_{var} - node.min_{var}) * offset;', { indent: 12 }, )}\n\n ${t('oldBody.pos.{var} = node.min_{var} + d{var};', { indent: 12, })}\n retriesCount -= 1;\n // Make sure we don't bump it out of the box. If we do, next iteration should fix it\n } while (retriesCount > 0 && isSamePosition(oldBody.pos, body.pos));\n\n if (retriesCount === 0 && isSamePosition(oldBody.pos, body.pos)) {\n // This is very bad, we ran out of precision.\n // if we do not return from the method we'll get into\n // infinite loop here. So we sacrifice correctness of layout, and keep the app running\n // Next layout iteration should get larger bounding box in the first step and fix this\n return;\n }\n }\n // Next iteration should subdivide node further.\n insertStack.push(node, oldBody);\n insertStack.push(node, body);\n }\n }\n }\n}\nreturn createQuadTree;\n\n` } function a(e) { let t = r(e) return `\n function isSamePosition(point1, point2) {\n ${t( 'var d{var} = Math.abs(point1.{var} - point2.{var});', { indent: 2 }, )}\n \n return ${t('d{var} < 1e-8', { join: ' && ' })};\n } \n` } function s(e) { var t = Math.pow(2, e) return `\nfunction setChild(node, idx, child) {\n ${(function () { let e = [] for (let n = 0; n < t; ++n) { let t = 0 === n ? ' ' : ' else ' e.push(`${t}if (idx === ${n}) node.quad${n} = child;`) } return e.join('\n') })()}\n}` } function u(e) { return `function getChild(node, idx) {\n${(function () { let t = [], n = Math.pow(2, e) for (let e = 0; e < n; ++e) t.push(` if (idx === ${e}) return node.quad${e};`) return t.join('\n') })()}\n return null;\n}` } function l(e) { let t = r(e), n = Math.pow(2, e) return `\nfunction QuadNode() {\n // body stored inside this node. In quad tree only leaf nodes (by construction)\n // contain bodies:\n this.body = null;\n\n // Child nodes are stored in quads. Each quad is presented by number:\n // 0 | 1\n // -----\n // 2 | 3\n${(function ( e, ) { let t = [] for (let r = 0; r < n; ++r) t.push(`${e}quad${r} = null;`) return t.join('\n') })( ' this.', )}\n\n // Total mass of current node\n this.mass = 0;\n\n // Center of mass coordinates\n ${t( 'this.mass_{var} = 0;', { indent: 2 }, )}\n\n // bounding box coordinates\n ${t('this.min_{var} = 0;', { indent: 2 })}\n ${t( 'this.max_{var} = 0;', { indent: 2 }, )}\n}\n` } function c() { return '\n/**\n * Our implementation of QuadTree is non-recursive to avoid GC hit\n * This data structure represent stack of elements\n * which we are trying to insert into quad tree.\n */\nfunction InsertStack () {\n this.stack = [];\n this.popIdx = 0;\n}\n\nInsertStack.prototype = {\n isEmpty: function() {\n return this.popIdx === 0;\n },\n push: function (node, body) {\n var item = this.stack[this.popIdx];\n if (!item) {\n // we are trying to avoid memory pressure: create new element\n // only when absolutely necessary\n this.stack[this.popIdx] = new InsertStackElement(node, body);\n } else {\n item.node = node;\n item.body = body;\n }\n ++this.popIdx;\n },\n pop: function () {\n if (this.popIdx > 0) {\n return this.stack[--this.popIdx];\n }\n },\n reset: function () {\n this.popIdx = 0;\n }\n};\n\nfunction InsertStackElement(node, body) {\n this.node = node; // QuadTree node\n this.body = body; // physical body which needs to be inserted to node\n}\n' } ;(e.exports = function (e) { let t = o(e) return new Function(t)() }), (e.exports.generateQuadTreeFunctionBody = o), (e.exports.getInsertStackCode = c), (e.exports.getQuadNodeCode = l), (e.exports.isSamePosition = a), (e.exports.getChildBodyCode = u), (e.exports.setChildBodyCode = s) }, 6422: function (e) { e.exports = function (e) { return 0 === e ? 'x' : 1 === e ? 'y' : 2 === e ? 'z' : 'c' + (e + 1) } }, 5818: function (e, t, n) { e.exports = function (e) { var t = n(8403), d = n(5510), f = n(4245) if (e) { if (void 0 !== e.springCoeff) throw new Error('springCoeff was renamed to springCoefficient') if (void 0 !== e.dragCoeff) throw new Error('dragCoeff was renamed to dragCoefficient') } e = d(e, { springLength: 10, springCoefficient: 0.8, gravity: -12, theta: 0.8, dragCoefficient: 0.9, timeStep: 0.5, adaptiveTimeStepWeight: 0, dimensions: 2, debug: !1, }) var h = l[e.dimensions] if (!h) { var p = e.dimensions ;(h = { Body: r(p, e.debug), createQuadTree: i(p), createBounds: o(p), createDragForce: a(p), createSpringForce: s(p), integrate: u(p), }), (l[p] = h) } var v = h.Body, m = h.createQuadTree, g = h.createBounds, y = h.createDragForce, b = h.createSpringForce, w = h.integrate, x = n(8712).random(42), E = [], k = [], _ = m(e, x), T = g(E, e, x), O = b(e, x), C = y(e), S = [], A = new Map(), P = 0 j('nbody', function () { if (0 === E.length) return _.insertBodies(E) var e = E.length for (; e--; ) { var t = E[e] t.isPinned || (t.reset(), _.updateBodyForce(t), C.update(t)) } }), j('spring', function () { var e = k.length for (; e--; ) O.update(k[e]) }) var M = { bodies: E, quadTree: _, springs: k, settings: e, addForce: j, removeForce: function (e) { var t = S.indexOf(A.get(e)) if (t < 0) return S.splice(t, 1), A.delete(e) }, getForces: function () { return A }, step: function () { for (var t = 0; t < S.length; ++t) S[t](P) var n = w(E, e.timeStep, e.adaptiveTimeStepWeight) return (P += 1), n }, addBody: function (e) { if (!e) throw new Error('Body is required') return E.push(e), e }, addBodyAt: function (e) { if (!e) throw new Error('Body position is required') var t = ((e) => new v(e))(e) return E.push(t), t }, removeBody: function (e) { if (e) { var t = E.indexOf(e) if (!(t < 0)) return E.splice(t, 1), 0 === E.length && T.reset(), !0 } }, addSpring: function (e, n, r, i) { if (!e || !n) throw new Error('Cannot add null spring to force simulator') 'number' !== typeof r && (r = -1) var o = new t(e, n, r, i >= 0 ? i : -1) return k.push(o), o }, getTotalMovement: function () { return 0 }, removeSpring: function (e) { if (e) { var t = k.indexOf(e) return t > -1 ? (k.splice(t, 1), !0) : void 0 } }, getBestNewBodyPosition: function (e) { return T.getBestNewPosition(e) }, getBBox: R, getBoundingBox: R, invalidateBBox: function () { console.warn( 'invalidateBBox() is deprecated, bounds always recomputed on `getBBox()` call', ) }, gravity: function (t) { return void 0 !== t ? ((e.gravity = t), _.options({ gravity: t }), this) : e.gravity }, theta: function (t) { return void 0 !== t ? ((e.theta = t), _.options({ theta: t }), this) : e.theta }, random: x, } return ( (function (e, t) { for (var n in e) c(e, t, n) })(e, M), f(M), M ) function R() { return T.update(), T.box } function j(e, t) { if (A.has(e)) throw new Error('Force ' + e + ' is already added') A.set(e, t), S.push(t) } } var r = n(6410), i = n(1584), o = n(891), a = n(6647), s = n(4079), u = n(1763), l = {} function c(e, t, n) { if (e.hasOwnProperty(n) && 'function' !== typeof t[n]) { var r = Number.isFinite(e[n]) t[n] = r ? function (r) { if (void 0 !== r) { if (!Number.isFinite(r)) throw new Error('Value of ' + n + ' should be a valid number.') return (e[n] = r), t } return e[n] } : function (r) { return void 0 !== r ? ((e[n] = r), t) : e[n] } } } }, 8403: function (e) { e.exports = function (e, t, n, r) { ;(this.from = e), (this.to = t), (this.length = n), (this.coefficient = r) } }, 4736: function (e, t, n) { e.exports = function (e) { 'uniqueLinkId' in (e = e || {}) && (console.warn( 'ngraph.graph: Starting from version 0.14 `uniqueLinkId` is deprecated.\nUse `multigraph` option instead\n', '\n', 'Note: there is also change in default behavior: From now on each graph\nis considered to be not a multigraph by default (each edge is unique).', ), (e.multigraph = e.uniqueLinkId)) void 0 === e.multigraph && (e.multigraph = !1) if ('function' !== typeof Map) throw new Error( 'ngraph.graph requires `Map` to be defined. Please polyfill it before using ngraph', ) var t = new Map(), n = [], l = {}, c = 0, d = e.multigraph ? function (e, t, n) { var r = u(e, t), i = l.hasOwnProperty(r) if (i || O(e, t)) { i || (l[r] = 0) var o = '@' + ++l[r] r = u(e + o, t + o) } return new s(e, t, n, r) } : function (e, t, n) { var r = u(e, t) return new s(e, t, n, r) }, f = [], h = C, p = C, v = C, m = C, g = { addNode: w, addLink: function (e, t, r) { v() var i = x(e) || w(e), o = x(t) || w(t), s = d(e, t, r) n.push(s), a(i, s), e !== t && a(o, s) return h(s, 'add'), m(), s }, removeLink: T, removeNode: E, getNode: x, getNodeCount: k, getLinkCount: _, getLinksCount: _, getNodesCount: k, getLinks: function (e) { var t = x(e) return t ? t.links : null }, forEachNode: P, forEachLinkedNode: function (e, n, r) { var i = x(e) if (i && i.links && 'function' === typeof n) return r ? (function (e, n, r) { for (var i = 0; i < e.length; ++i) { var o = e[i] if (o.fromId === n && r(t.get(o.toId), o)) return !0 } })(i.links, e, n) : (function (e, n, r) { for (var i = 0; i < e.length; ++i) { var o = e[i], a = o.fromId === n ? o.toId : o.fromId if (r(t.get(a), o)) return !0 } })(i.links, e, n) }, forEachLink: function (e) { var t, r if ('function' === typeof e) for (t = 0, r = n.length; t < r; ++t) e(n[t]) }, beginUpdate: v, endUpdate: m, clear: function () { v(), P(function (e) { E(e.id) }), m() }, hasLink: O, hasNode: x, getLink: O, } return ( r(g), (function () { var e = g.on function t() { return ( (g.beginUpdate = v = S), (g.endUpdate = m = A), (h = y), (p = b), (g.on = e), e.apply(g, arguments) ) } g.on = t })(), g ) function y(e, t) { f.push({ link: e, changeType: t }) } function b(e, t) { f.push({ node: e, changeType: t }) } function w(e, n) { if (void 0 === e) throw new Error('Invalid node identifier') v() var r = x(e) return ( r ? ((r.data = n), p(r, 'update')) : ((r = new o(e, n)), p(r, 'add')), t.set(e, r), m(), r ) } function x(e) { return t.get(e) } function E(e) { var n = x(e) if (!n) return !1 v() var r = n.links if (r) { n.links = null for (var i = 0; i < r.length; ++i) T(r[i]) } return t.delete(e), p(n, 'remove'), m(), !0 } function k() { return t.size } function _() { return n.length } function T(e) { if (!e) return !1 var t = i(e, n) if (t < 0) return !1 v(), n.splice(t, 1) var r = x(e.fromId), o = x(e.toId) return ( r && (t = i(e, r.links)) >= 0 && r.links.splice(t, 1), o && (t = i(e, o.links)) >= 0 && o.links.splice(t, 1), h(e, 'remove'), m(), !0 ) } function O(e, t) { var n, r = x(e) if (!r || !r.links) return null for (n = 0; n < r.links.length; ++n) { var i = r.links[n] if (i.fromId === e && i.toId === t) return i } return null } function C() {} function S() { c += 1 } function A() { 0 === (c -= 1) && f.length > 0 && (g.fire('changed', f), (f.length = 0)) } function P(e) { if ('function' !== typeof e) throw new Error('Function is expected to iterate over graph nodes. You passed ' + e) for (var n = t.values(), r = n.next(); !r.done; ) { if (e(r.value)) return !0 r = n.next() } } } var r = n(4245) function i(e, t) { if (!t) return -1 if (t.indexOf) return t.indexOf(e) var n, r = t.length for (n = 0; n < r; n += 1) if (t[n] === e) return n return -1 } function o(e, t) { ;(this.id = e), (this.links = null), (this.data = t) } function a(e, t) { e.links ? e.links.push(t) : (e.links = [t]) } function s(e, t, n, r) { ;(this.fromId = e), (this.toId = t), (this.data = n), (this.id = r) } function u(e, t) { return e.toString() + '\ud83d\udc49 ' + t.toString() } }, 5510: function (e) { e.exports = function e(t, n) { var r t || (t = {}) if (n) for (r in n) if (n.hasOwnProperty(r)) { var i = t.hasOwnProperty(r), o = typeof n[r] !i || typeof t[r] !== o ? (t[r] = n[r]) : 'object' === o && (t[r] = e(t[r], n[r])) } return t } }, 8712: function (e) { function t(e) { return new n('number' === typeof e ? e : +new Date()) } function n(e) { this.seed = e } function r(e) { return ( Math.sqrt((2 * Math.PI) / e) * Math.pow((1 / Math.E) * (e + 1 / (12 * e - 1 / (10 * e))), e) ) } function i() { var e = this.seed return ( (e = 4294967295 & (3042594569 ^ (e = ((e = 4294967295 & (((e = ((e = 4294967295 & (3345072700 ^ (e = (e + 2127912214 + (e << 12)) & 4294967295) ^ (e >>> 19))) + 374761393 + (e << 5)) & 4294967295) + 3550635116) ^ (e << 9))) + 4251993797 + (e << 3)) & 4294967295) ^ (e >>> 16))), (this.seed = e), (268435455 & e) / 268435456 ) } ;(e.exports = t), (e.exports.random = t), (e.exports.randomIterator = function (e, n) { var r = n || t() if ('function' !== typeof r.next) throw new Error('customRandom does not match expected API: next() function is missing') return { forEach: function (t) { var n, i, o for (n = e.length - 1; n > 0; --n) (i = r.next(n + 1)), (o = e[i]), (e[i] = e[n]), (e[n] = o), t(o) e.length && t(e[0]) }, shuffle: function () { var t, n, i for (t = e.length - 1; t > 0; --t) (n = r.next(t + 1)), (i = e[n]), (e[n] = e[t]), (e[t] = i) return e }, } }), (n.prototype.next = function (e) { return Math.floor(this.nextDouble() * e) }), (n.prototype.nextDouble = i), (n.prototype.uniform = i), (n.prototype.gaussian = function () { var e, t, n do { ;(t = 2 * this.nextDouble() - 1), (n = 2 * this.nextDouble() - 1), (e = t * t + n * n) } while (e >= 1 || 0 === e) return t * Math.sqrt((-2 * Math.log(e)) / e) }), (n.prototype.levy = function () { var e = 1.5, t = Math.pow( (r(2.5) * Math.sin((Math.PI * e) / 2)) / (r(1.25) * e * Math.pow(2, 0.25)), 1 / e, ) return (this.gaussian() * t) / Math.pow(Math.abs(this.gaussian()), 1 / e) }) }, 75: function (e, t, n) { var r = n(4155) ;(function () { var t, n, i, o, a, s 'undefined' !== typeof performance && null !== performance && performance.now ? (e.exports = function () { return performance.now() }) : 'undefined' !== typeof r && null !== r && r.hrtime ? ((e.exports = function () { return (t() - a) / 1e6 }), (n = r.hrtime), (o = (t = function () { var e return 1e9 * (e = n())[0] + e[1] })()), (s = 1e9 * r.uptime()), (a = o - s)) : Date.now ? ((e.exports = function () { return Date.now() - i }), (i = Date.now())) : ((e.exports = function () { return new Date().getTime() - i }), (i = new Date().getTime())) }.call(this)) }, 7236: function (e) { var t = null, n = ['Webkit', 'Moz', 'O', 'ms'] e.exports = function (e) { t || (t = document.createElement('div')) var r = t.style if (e in r) return e for (var i = e.charAt(0).toUpperCase() + e.slice(1), o = n.length; o >= 0; o--) { var a = n[o] + i if (a in r) return a } return !1 } }, 4155: function (e) { var t, n, r = (e.exports = {}) function i() { throw new Error('setTimeout has not been defined') } function o() { throw new Error('clearTimeout has not been defined') } function a(e) { if (t === setTimeout) return setTimeout(e, 0) if ((t === i || !t) && setTimeout) return (t = setTimeout), setTimeout(e, 0) try { return t(e, 0) } catch (n) { try { return t.call(null, e, 0) } catch (n) { return t.call(this, e, 0) } } } !(function () { try { t = 'function' === typeof setTimeout ? setTimeout : i } catch (e) { t = i } try { n = 'function' === typeof clearTimeout ? clearTimeout : o } catch (e) { n = o } })() var s, u = [], l = !1, c = -1 function d() { l && s && ((l = !1), s.length ? (u = s.concat(u)) : (c = -1), u.length && f()) } function f() { if (!l) { var e = a(d) l = !0 for (var t = u.length; t; ) { for (s = u, u = []; ++c < t; ) s && s[c].run() ;(c = -1), (t = u.length) } ;(s = null), (l = !1), (function (e) { if (n === clearTimeout) return clearTimeout(e) if ((n === o || !n) && clearTimeout) return (n = clearTimeout), clearTimeout(e) try { n(e) } catch (t) { try { return n.call(null, e) } catch (t) { return n.call(this, e) } } })(e) } } function h(e, t) { ;(this.fun = e), (this.array = t) } function p() {} ;(r.nextTick = function (e) { var t = new Array(arguments.length - 1) if (arguments.length > 1) for (var n = 1; n < arguments.length; n++) t[n - 1] = arguments[n] u.push(new h(e, t)), 1 !== u.length || l || a(f) }), (h.prototype.run = function () { this.fun.apply(null, this.array) }), (r.title = 'browser'), (r.browser = !0), (r.env = {}), (r.argv = []), (r.version = ''), (r.versions = {}), (r.on = p), (r.addListener = p), (r.once = p), (r.off = p), (r.removeListener = p), (r.removeAllListeners = p), (r.emit = p), (r.prependListener = p), (r.prependOnceListener = p), (r.listeners = function (e) { return [] }), (r.binding = function (e) { throw new Error('process.binding is not supported') }), (r.cwd = function () { return '/' }), (r.chdir = function (e) { throw new Error('process.chdir is not supported') }), (r.umask = function () { return 0 }) }, 4087: function (e, t, n) { for ( var r = n(75), i = 'undefined' === typeof window ? n.g : window, o = ['moz', 'webkit'], a = 'AnimationFrame', s = i['request' + a], u = i['cancel' + a] || i['cancelRequest' + a], l = 0; !s && l < o.length; l++ ) (s = i[o[l] + 'Request' + a]), (u = i[o[l] + 'Cancel' + a] || i[o[l] + 'CancelRequest' + a]) if (!s || !u) { var c = 0, d = 0, f = [] ;(s = function (e) { if (0 === f.length) { var t = r(), n = Math.max(0, 16.666666666666668 - (t - c)) ;(c = n + t), setTimeout(function () { var e = f.slice(0) f.length = 0 for (var t = 0; t < e.length; t++) if (!e[t].cancelled) try { e[t].callback(c) } catch (n) { setTimeout(function () { throw n }, 0) } }, Math.round(n)) } return f.push({ handle: ++d, callback: e, cancelled: !1 }), d }), (u = function (e) { for (var t = 0; t < f.length; t++) f[t].handle === e && (f[t].cancelled = !0) }) } ;(e.exports = function (e) { return s.call(i, e) }), (e.exports.cancel = function () { u.apply(i, arguments) }), (e.exports.polyfill = function (e) { e || (e = i), (e.requestAnimationFrame = s), (e.cancelAnimationFrame = u) }) }, 3485: function (e, t, n) { 'use strict' Object.defineProperty(t, '__esModule', { value: !0 }) var r = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var n = arguments[t] for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r]) } return e } ;(t.renderViewDefault = function (e) { return a.default.createElement('div', e) }), (t.renderTrackHorizontalDefault = function (e) { var t = e.style, n = s(e, ['style']), i = r({}, t, { right: 2, bottom: 2, left: 2, borderRadius: 3 }) return a.default.createElement('div', r({ style: i }, n)) }), (t.renderTrackVerticalDefault = function (e) { var t = e.style, n = s(e, ['style']), i = r({}, t, { right: 2, bottom: 2, top: 2, borderRadius: 3 }) return a.default.createElement('div', r({ style: i }, n)) }), (t.renderThumbHorizontalDefault = function (e) { var t = e.style, n = s(e, ['style']), i = r({}, t, { cursor: 'pointer', borderRadius: 'inherit', backgroundColor: 'rgba(0,0,0,.2)', }) return a.default.createElement('div', r({ style: i }, n)) }), (t.renderThumbVerticalDefault = function (e) { var t = e.style, n = s(e, ['style']), i = r({}, t, { cursor: 'pointer', borderRadius: 'inherit', backgroundColor: 'rgba(0,0,0,.2)', }) return a.default.createElement('div', r({ style: i }, n)) }) var i, o = n(7294), a = (i = o) && i.__esModule ? i : { default: i } function s(e, t) { var n = {} for (var r in e) t.indexOf(r) >= 0 || (Object.prototype.hasOwnProperty.call(e, r) && (n[r] = e[r])) return n } }, 6164: function (e, t, n) { 'use strict' Object.defineProperty(t, '__esModule', { value: !0 }) var r = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var n = arguments[t] for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r]) } return e }, i = (function () { function e(e, t) { for (var n = 0; n < t.length; n++) { var r = t[n] ;(r.enumerable = r.enumerable || !1), (r.configurable = !0), 'value' in r && (r.writable = !0), Object.defineProperty(e, r.key, r) } } return function (t, n, r) { return n && e(t.prototype, n), r && e(t, r), t } })(), o = n(4087), a = g(o), s = g(n(3879)), u = n(7294), l = g(n(5697)), c = g(n(7928)), d = g(n(6445)), f = g(n(8309)), h = g(n(1608)), p = g(n(7114)), v = n(8285), m = n(3485) function g(e) { return e && e.__esModule ? e : { default: e } } function y(e, t) { if (!(e instanceof t)) throw new TypeError('Cannot call a class as a function') } function b(e, t) { if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called") return !t || ('object' !== typeof t && 'function' !== typeof t) ? e : t } var w = (function (e) { function t(e) { var n y(this, t) for (var r = arguments.length, i = Array(r > 1 ? r - 1 : 0), o = 1; o < r; o++) i[o - 1] = arguments[o] var a = b( this, (n = t.__proto__ || Object.getPrototypeOf(t)).call.apply(n, [this, e].concat(i)), ) return ( (a.getScrollLeft = a.getScrollLeft.bind(a)), (a.getScrollTop = a.getScrollTop.bind(a)), (a.getScrollWidth = a.getScrollWidth.bind(a)), (a.getScrollHeight = a.getScrollHeight.bind(a)), (a.getClientWidth = a.getClientWidth.bind(a)), (a.getClientHeight = a.getClientHeight.bind(a)), (a.getValues = a.getValues.bind(a)), (a.getThumbHorizontalWidth = a.getThumbHorizontalWidth.bind(a)), (a.getThumbVerticalHeight = a.getThumbVerticalHeight.bind(a)), (a.getScrollLeftForOffset = a.getScrollLeftForOffset.bind(a)), (a.getScrollTopForOffset = a.getScrollTopForOffset.bind(a)), (a.scrollLeft = a.scrollLeft.bind(a)), (a.scrollTop = a.scrollTop.bind(a)), (a.scrollToLeft = a.scrollToLeft.bind(a)), (a.scrollToTop = a.scrollToTop.bind(a)), (a.scrollToRight = a.scrollToRight.bind(a)), (a.scrollToBottom = a.scrollToBottom.bind(a)), (a.handleTrackMouseEnter = a.handleTrackMouseEnter.bind(a)), (a.handleTrackMouseLeave = a.handleTrackMouseLeave.bind(a)), (a.handleHorizontalTrackMouseDown = a.handleHorizontalTrackMouseDown.bind(a)), (a.handleVerticalTrackMouseDown = a.handleVerticalTrackMouseDown.bind(a)), (a.handleHorizontalThumbMouseDown = a.handleHorizontalThumbMouseDown.bind(a)), (a.handleVerticalThumbMouseDown = a.handleVerticalThumbMouseDown.bind(a)), (a.handleWindowResize = a.handleWindowResize.bind(a)), (a.handleScroll = a.handleScroll.bind(a)), (a.handleDrag = a.handleDrag.bind(a)), (a.handleDragEnd = a.handleDragEnd.bind(a)), (a.state = { didMountUniversal: !1 }), a ) } return ( (function (e, t) { if ('function' !== typeof t && null !== t) throw new TypeError( 'Super expression must either be null or a function, not ' + typeof t, ) ;(e.prototype = Object.create(t && t.prototype, { constructor: { value: e, enumerable: !1, writable: !0, configurable: !0 }, })), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : (e.__proto__ = t)) })(t, e), i(t, [ { key: 'componentDidMount', value: function () { this.addListeners(), this.update(), this.componentDidMountUniversal() }, }, { key: 'componentDidMountUniversal', value: function () { this.props.universal && this.setState({ didMountUniversal: !0 }) }, }, { key: 'componentDidUpdate', value: function () { this.update() }, }, { key: 'componentWillUnmount', value: function () { this.removeListeners(), (0, o.cancel)(this.requestFrame), clearTimeout(this.hideTracksTimeout), clearInterval(this.detectScrollingInterval) }, }, { key: 'getScrollLeft', value: function () { return this.view ? this.view.scrollLeft : 0 }, }, { key: 'getScrollTop', value: function () { return this.view ? this.view.scrollTop : 0 }, }, { key: 'getScrollWidth', value: function () { return this.view ? this.view.scrollWidth : 0 }, }, { key: 'getScrollHeight', value: function () { return this.view ? this.view.scrollHeight : 0 }, }, { key: 'getClientWidth', value: function () { return this.view ? this.view.clientWidth : 0 }, }, { key: 'getClientHeight', value: function () { return this.view ? this.view.clientHeight : 0 }, }, { key: 'getValues', value: function () { var e = this.view || {}, t = e.scrollLeft, n = void 0 === t ? 0 : t, r = e.scrollTop, i = void 0 === r ? 0 : r, o = e.scrollWidth, a = void 0 === o ? 0 : o, s = e.scrollHeight, u = void 0 === s ? 0 : s, l = e.clientWidth, c = void 0 === l ? 0 : l, d = e.clientHeight, f = void 0 === d ? 0 : d return { left: n / (a - c) || 0, top: i / (u - f) || 0, scrollLeft: n, scrollTop: i, scrollWidth: a, scrollHeight: u, clientWidth: c, clientHeight: f, } }, }, { key: 'getThumbHorizontalWidth', value: function () { var e = this.props, t = e.thumbSize, n = e.thumbMinSize, r = this.view, i = r.scrollWidth, o = r.clientWidth, a = (0, h.default)(this.trackHorizontal), s = Math.ceil((o / i) * a) return a <= s ? 0 : t || Math.max(s, n) }, }, { key: 'getThumbVerticalHeight', value: function () { var e = this.props, t = e.thumbSize, n = e.thumbMinSize, r = this.view, i = r.scrollHeight, o = r.clientHeight, a = (0, p.default)(this.trackVertical), s = Math.ceil((o / i) * a) return a <= s ? 0 : t || Math.max(s, n) }, }, { key: 'getScrollLeftForOffset', value: function (e) { var t = this.view, n = t.scrollWidth, r = t.clientWidth return ( (e / ((0, h.default)(this.trackHorizontal) - this.getThumbHorizontalWidth())) * (n - r) ) }, }, { key: 'getScrollTopForOffset', value: function (e) { var t = this.view, n = t.scrollHeight, r = t.clientHeight return ( (e / ((0, p.default)(this.trackVertical) - this.getThumbVerticalHeight())) * (n - r) ) }, }, { key: 'scrollLeft', value: function () { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0 this.view && (this.view.scrollLeft = e) }, }, { key: 'scrollTop', value: function () { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0 this.view && (this.view.scrollTop = e) }, }, { key: 'scrollToLeft', value: function () { this.view && (this.view.scrollLeft = 0) }, }, { key: 'scrollToTop', value: function () { this.view && (this.view.scrollTop = 0) }, }, { key: 'scrollToRight', value: function () { this.view && (this.view.scrollLeft = this.view.scrollWidth) }, }, { key: 'scrollToBottom', value: function () { this.view && (this.view.scrollTop = this.view.scrollHeight) }, }, { key: 'addListeners', value: function () { if ('undefined' !== typeof document && this.view) { var e = this.view, t = this.trackHorizontal, n = this.trackVertical, r = this.thumbHorizontal, i = this.thumbVertical e.addEventListener('scroll', this.handleScroll), (0, d.default)() && (t.addEventListener('mouseenter', this.handleTrackMouseEnter), t.addEventListener('mouseleave', this.handleTrackMouseLeave), t.addEventListener('mousedown', this.handleHorizontalTrackMouseDown), n.addEventListener('mouseenter', this.handleTrackMouseEnter), n.addEventListener('mouseleave', this.handleTrackMouseLeave), n.addEventListener('mousedown', this.handleVerticalTrackMouseDown), r.addEventListener('mousedown', this.handleHorizontalThumbMouseDown), i.addEventListener('mousedown', this.handleVerticalThumbMouseDown), window.addEventListener('resize', this.handleWindowResize)) } }, }, { key: 'removeListeners', value: function () { if ('undefined' !== typeof document && this.view) { var e = this.view, t = this.trackHorizontal, n = this.trackVertical, r = this.thumbHorizontal, i = this.thumbVertical e.removeEventListener('scroll', this.handleScroll), (0, d.default)() && (t.removeEventListener('mouseenter', this.handleTrackMouseEnter), t.removeEventListener('mouseleave', this.handleTrackMouseLeave), t.removeEventListener('mousedown', this.handleHorizontalTrackMouseDown), n.removeEventListener('mouseenter', this.handleTrackMouseEnter), n.removeEventListener('mouseleave', this.handleTrackMouseLeave), n.removeEventListener('mousedown', this.handleVerticalTrackMouseDown), r.removeEventListener('mousedown', this.handleHorizontalThumbMouseDown), i.removeEventListener('mousedown', this.handleVerticalThumbMouseDown), window.removeEventListener('resize', this.handleWindowResize), this.teardownDragging()) } }, }, { key: 'handleScroll', value: function (e) { var t = this, n = this.props, r = n.onScroll, i = n.onScrollFrame r && r(e), this.update(function (e) { var n = e.scrollLeft, r = e.scrollTop ;(t.viewScrollLeft = n), (t.viewScrollTop = r), i && i(e) }), this.detectScrolling() }, }, { key: 'handleScrollStart', value: function () { var e = this.props.onScrollStart e && e(), this.handleScrollStartAutoHide() }, }, { key: 'handleScrollStartAutoHide', value: function () { this.props.autoHide && this.showTracks() }, }, { key: 'handleScrollStop', value: function () { var e = this.props.onScrollStop e && e(), this.handleScrollStopAutoHide() }, }, { key: 'handleScrollStopAutoHide', value: function () { this.props.autoHide && this.hideTracks() }, }, { key: 'handleWindowResize', value: function () { ;(0, d.default)(!1), this.forceUpdate() }, }, { key: 'handleHorizontalTrackMouseDown', value: function (e) { e.preventDefault() var t = e.target, n = e.clientX, r = t.getBoundingClientRect().left, i = this.getThumbHorizontalWidth(), o = Math.abs(r - n) - i / 2 this.view.scrollLeft = this.getScrollLeftForOffset(o) }, }, { key: 'handleVerticalTrackMouseDown', value: function (e) { e.preventDefault() var t = e.target, n = e.clientY, r = t.getBoundingClientRect().top, i = this.getThumbVerticalHeight(), o = Math.abs(r - n) - i / 2 this.view.scrollTop = this.getScrollTopForOffset(o) }, }, { key: 'handleHorizontalThumbMouseDown', value: function (e) { e.preventDefault(), this.handleDragStart(e) var t = e.target, n = e.clientX, r = t.offsetWidth, i = t.getBoundingClientRect().left this.prevPageX = r - (n - i) }, }, { key: 'handleVerticalThumbMouseDown', value: function (e) { e.preventDefault(), this.handleDragStart(e) var t = e.target, n = e.clientY, r = t.offsetHeight, i = t.getBoundingClientRect().top this.prevPageY = r - (n - i) }, }, { key: 'setupDragging', value: function () { ;(0, s.default)(document.body, v.disableSelectStyle), document.addEventListener('mousemove', this.handleDrag), document.addEventListener('mouseup', this.handleDragEnd), (document.onselectstart = f.default) }, }, { key: 'teardownDragging', value: function () { ;(0, s.default)(document.body, v.disableSelectStyleReset), document.removeEventListener('mousemove', this.handleDrag), document.removeEventListener('mouseup', this.handleDragEnd), (document.onselectstart = void 0) }, }, { key: 'handleDragStart', value: function (e) { ;(this.dragging = !0), e.stopImmediatePropagation(), this.setupDragging() }, }, { key: 'handleDrag', value: function (e) { if (this.prevPageX) { var t = e.clientX, n = -this.trackHorizontal.getBoundingClientRect().left + t - (this.getThumbHorizontalWidth() - this.prevPageX) this.view.scrollLeft = this.getScrollLeftForOffset(n) } if (this.prevPageY) { var r = e.clientY, i = -this.trackVertical.getBoundingClientRect().top + r - (this.getThumbVerticalHeight() - this.prevPageY) this.view.scrollTop = this.getScrollTopForOffset(i) } return !1 }, }, { key: 'handleDragEnd', value: function () { ;(this.dragging = !1), (this.prevPageX = this.prevPageY = 0), this.teardownDragging(), this.handleDragEndAutoHide() }, }, { key: 'handleDragEndAutoHide', value: function () { this.props.autoHide && this.hideTracks() }, }, { key: 'handleTrackMouseEnter', value: function () { ;(this.trackMouseOver = !0), this.handleTrackMouseEnterAutoHide() }, }, { key: 'handleTrackMouseEnterAutoHide', value: function () { this.props.autoHide && this.showTracks() }, }, { key: 'handleTrackMouseLeave', value: function () { ;(this.trackMouseOver = !1), this.handleTrackMouseLeaveAutoHide() }, }, { key: 'handleTrackMouseLeaveAutoHide', value: function () { this.props.autoHide && this.hideTracks() }, }, { key: 'showTracks', value: function () { clearTimeout(this.hideTracksTimeout), (0, s.default)(this.trackHorizontal, { opacity: 1 }), (0, s.default)(this.trackVertical, { opacity: 1 }) }, }, { key: 'hideTracks', value: function () { var e = this if (!this.dragging && !this.scrolling && !this.trackMouseOver) { var t = this.props.autoHideTimeout clearTimeout(this.hideTracksTimeout), (this.hideTracksTimeout = setTimeout(function () { ;(0, s.default)(e.trackHorizontal, { opacity: 0 }), (0, s.default)(e.trackVertical, { opacity: 0 }) }, t)) } }, }, { key: 'detectScrolling', value: function () { var e = this this.scrolling || ((this.scrolling = !0), this.handleScrollStart(), (this.detectScrollingInterval = setInterval(function () { e.lastViewScrollLeft === e.viewScrollLeft && e.lastViewScrollTop === e.viewScrollTop && (clearInterval(e.detectScrollingInterval), (e.scrolling = !1), e.handleScrollStop()), (e.lastViewScrollLeft = e.viewScrollLeft), (e.lastViewScrollTop = e.viewScrollTop) }, 100))) }, }, { key: 'raf', value: function (e) { var t = this this.requestFrame && a.default.cancel(this.requestFrame), (this.requestFrame = (0, a.default)(function () { ;(t.requestFrame = void 0), e() })) }, }, { key: 'update', value: function (e) { var t = this this.raf(function () { return t._update(e) }) }, }, { key: '_update', value: function (e) { var t = this.props, n = t.onUpdate, r = t.hideTracksWhenNotNeeded, i = this.getValues() if ((0, d.default)()) { var o = i.scrollLeft, a = i.clientWidth, u = i.scrollWidth, l = (0, h.default)(this.trackHorizontal), c = this.getThumbHorizontalWidth(), f = { width: c, transform: 'translateX(' + (o / (u - a)) * (l - c) + 'px)' }, v = i.scrollTop, m = i.clientHeight, g = i.scrollHeight, y = (0, p.default)(this.trackVertical), b = this.getThumbVerticalHeight(), w = { height: b, transform: 'translateY(' + (v / (g - m)) * (y - b) + 'px)' } if (r) { var x = { visibility: u > a ? 'visible' : 'hidden' }, E = { visibility: g > m ? 'visible' : 'hidden' } ;(0, s.default)(this.trackHorizontal, x), (0, s.default)(this.trackVertical, E) } ;(0, s.default)(this.thumbHorizontal, f), (0, s.default)(this.thumbVertical, w) } n && n(i), 'function' === typeof e && e(i) }, }, { key: 'render', value: function () { var e = this, t = (0, d.default)(), n = this.props, i = (n.onScroll, n.onScrollFrame, n.onScrollStart, n.onScrollStop, n.onUpdate, n.renderView), o = n.renderTrackHorizontal, a = n.renderTrackVertical, s = n.renderThumbHorizontal, l = n.renderThumbVertical, f = n.tagName, h = (n.hideTracksWhenNotNeeded, n.autoHide), p = (n.autoHideTimeout, n.autoHideDuration), m = (n.thumbSize, n.thumbMinSize, n.universal), g = n.autoHeight, y = n.autoHeightMin, b = n.autoHeightMax, w = n.style, x = n.children, E = (function (e, t) { var n = {} for (var r in e) t.indexOf(r) >= 0 || (Object.prototype.hasOwnProperty.call(e, r) && (n[r] = e[r])) return n })(n, [ 'onScroll', 'onScrollFrame', 'onScrollStart', 'onScrollStop', 'onUpdate', 'renderView', 'renderTrackHorizontal', 'renderTrackVertical', 'renderThumbHorizontal', 'renderThumbVertical', 'tagName', 'hideTracksWhenNotNeeded', 'autoHide', 'autoHideTimeout', 'autoHideDuration', 'thumbSize', 'thumbMinSize', 'universal', 'autoHeight', 'autoHeightMin', 'autoHeightMax', 'style', 'children', ]), k = this.state.didMountUniversal, _ = r( {}, v.containerStyleDefault, g && r({}, v.containerStyleAutoHeight, { minHeight: y, maxHeight: b }), w, ), T = r( {}, v.viewStyleDefault, { marginRight: t ? -t : 0, marginBottom: t ? -t : 0 }, g && r({}, v.viewStyleAutoHeight, { minHeight: (0, c.default)(y) ? 'calc(' + y + ' + ' + t + 'px)' : y + t, maxHeight: (0, c.default)(b) ? 'calc(' + b + ' + ' + t + 'px)' : b + t, }), g && m && !k && { minHeight: y, maxHeight: b }, m && !k && v.viewStyleUniversalInitial, ), O = { transition: 'opacity ' + p + 'ms', opacity: 0 }, C = r( {}, v.trackHorizontalStyleDefault, h && O, (!t || (m && !k)) && { display: 'none' }, ), S = r( {}, v.trackVerticalStyleDefault, h && O, (!t || (m && !k)) && { display: 'none' }, ) return (0, u.createElement)( f, r({}, E, { style: _, ref: function (t) { e.container = t }, }), [ (0, u.cloneElement)( i({ style: T }), { key: 'view', ref: function (t) { e.view = t }, }, x, ), (0, u.cloneElement)( o({ style: C }), { key: 'trackHorizontal', ref: function (t) { e.trackHorizontal = t }, }, (0, u.cloneElement)(s({ style: v.thumbHorizontalStyleDefault }), { ref: function (t) { e.thumbHorizontal = t }, }), ), (0, u.cloneElement)( a({ style: S }), { key: 'trackVertical', ref: function (t) { e.trackVertical = t }, }, (0, u.cloneElement)(l({ style: v.thumbVerticalStyleDefault }), { ref: function (t) { e.thumbVertical = t }, }), ), ], ) }, }, ]), t ) })(u.Component) ;(t.default = w), (w.propTypes = { onScroll: l.default.func, onScrollFrame: l.default.func, onScrollStart: l.default.func, onScrollStop: l.default.func, onUpdate: l.default.func, renderView: l.default.func, renderTrackHorizontal: l.default.func, renderTrackVertical: l.default.func, renderThumbHorizontal: l.default.func, renderThumbVertical: l.default.func, tagName: l.default.string, thumbSize: l.default.number, thumbMinSize: l.default.number, hideTracksWhenNotNeeded: l.default.bool, autoHide: l.default.bool, autoHideTimeout: l.default.number, autoHideDuration: l.default.number, autoHeight: l.default.bool, autoHeightMin: l.default.oneOfType([l.default.number, l.default.string]), autoHeightMax: l.default.oneOfType([l.default.number, l.default.string]), universal: l.default.bool, style: l.default.object, children: l.default.node, }), (w.defaultProps = { renderView: m.renderViewDefault, renderTrackHorizontal: m.renderTrackHorizontalDefault, renderTrackVertical: m.renderTrackVerticalDefault, renderThumbHorizontal: m.renderThumbHorizontalDefault, renderThumbVertical: m.renderThumbVerticalDefault, tagName: 'div', thumbMinSize: 30, hideTracksWhenNotNeeded: !1, autoHide: !1, autoHideTimeout: 1e3, autoHideDuration: 200, autoHeight: !1, autoHeightMin: 0, autoHeightMax: 200, universal: !1, }) }, 8285: function (e, t) { 'use strict' Object.defineProperty(t, '__esModule', { value: !0 }) ;(t.containerStyleDefault = { position: 'relative', overflow: 'hidden', width: '100%', height: '100%', }), (t.containerStyleAutoHeight = { height: 'auto' }), (t.viewStyleDefault = { position: 'absolute', top: 0, left: 0, right: 0, bottom: 0, overflow: 'scroll', WebkitOverflowScrolling: 'touch', }), (t.viewStyleAutoHeight = { position: 'relative', top: void 0, left: void 0, right: void 0, bottom: void 0, }), (t.viewStyleUniversalInitial = { overflow: 'hidden', marginRight: 0, marginBottom: 0 }), (t.trackHorizontalStyleDefault = { position: 'absolute', height: 6 }), (t.trackVerticalStyleDefault = { position: 'absolute', width: 6 }), (t.thumbHorizontalStyleDefault = { position: 'relative', display: 'block', height: '100%', }), (t.thumbVerticalStyleDefault = { position: 'relative', display: 'block', width: '100%' }), (t.disableSelectStyle = { userSelect: 'none' }), (t.disableSelectStyleReset = { userSelect: '' }) }, 6658: function (e, t, n) { 'use strict' var r, i = n(6164), o = (r = i) && r.__esModule ? r : { default: r } ;(t.ZP = o.default), o.default }, 7114: function (e, t) { 'use strict' Object.defineProperty(t, '__esModule', { value: !0 }), (t.default = function (e) { var t = e.clientHeight, n = getComputedStyle(e), r = n.paddingTop, i = n.paddingBottom return t - parseFloat(r) - parseFloat(i) }) }, 1608: function (e, t) { 'use strict' Object.defineProperty(t, '__esModule', { value: !0 }), (t.default = function (e) { var t = e.clientWidth, n = getComputedStyle(e), r = n.paddingLeft, i = n.paddingRight return t - parseFloat(r) - parseFloat(i) }) }, 6445: function (e, t, n) { 'use strict' Object.defineProperty(t, '__esModule', { value: !0 }), (t.default = function () { var e = !(arguments.length > 0 && void 0 !== arguments[0]) || arguments[0] if (e && !1 !== a) return a if ('undefined' !== typeof document) { var t = document.createElement('div') ;(0, o.default)(t, { width: 100, height: 100, position: 'absolute', top: -9999, overflow: 'scroll', MsOverflowStyle: 'scrollbar', }), document.body.appendChild(t), (a = t.offsetWidth - t.clientWidth), document.body.removeChild(t) } else a = 0 return a || 0 }) var r, i = n(3879), o = (r = i) && r.__esModule ? r : { default: r } var a = !1 }, 7928: function (e, t) { 'use strict' Object.defineProperty(t, '__esModule', { value: !0 }), (t.default = function (e) { return 'string' === typeof e }) }, 8309: function (e, t) { 'use strict' Object.defineProperty(t, '__esModule', { value: !0 }), (t.default = function () { return !1 }) }, 9590: function (e) { var t = 'undefined' !== typeof Element, n = 'function' === typeof Map, r = 'function' === typeof Set, i = 'function' === typeof ArrayBuffer && !!ArrayBuffer.isView function o(e, a) { if (e === a) return !0 if (e && a && 'object' == typeof e && 'object' == typeof a) { if (e.constructor !== a.constructor) return !1 var s, u, l, c if (Array.isArray(e)) { if ((s = e.length) != a.length) return !1 for (u = s; 0 !== u--; ) if (!o(e[u], a[u])) return !1 return !0 } if (n && e instanceof Map && a instanceof Map) { if (e.size !== a.size) return !1 for (c = e.entries(); !(u = c.next()).done; ) if (!a.has(u.value[0])) return !1 for (c = e.entries(); !(u = c.next()).done; ) if (!o(u.value[1], a.get(u.value[0]))) return !1 return !0 } if (r && e instanceof Set && a instanceof Set) { if (e.size !== a.size) return !1 for (c = e.entries(); !(u = c.next()).done; ) if (!a.has(u.value[0])) return !1 return !0 } if (i && ArrayBuffer.isView(e) && ArrayBuffer.isView(a)) { if ((s = e.length) != a.length) return !1 for (u = s; 0 !== u--; ) if (e[u] !== a[u]) return !1 return !0 } if (e.constructor === RegExp) return e.source === a.source && e.flags === a.flags if (e.valueOf !== Object.prototype.valueOf) return e.valueOf() === a.valueOf() if (e.toString !== Object.prototype.toString) return e.toString() === a.toString() if ((s = (l = Object.keys(e)).length) !== Object.keys(a).length) return !1 for (u = s; 0 !== u--; ) if (!Object.prototype.hasOwnProperty.call(a, l[u])) return !1 if (t && e instanceof Element) return !1 for (u = s; 0 !== u--; ) if ( (('_owner' !== l[u] && '__v' !== l[u] && '__o' !== l[u]) || !e.$$typeof) && !o(e[l[u]], a[l[u]]) ) return !1 return !0 } return e !== e && a !== a } e.exports = function (e, t) { try { return o(e, t) } catch (n) { if ((n.message || '').match(/stack|recursion/i)) return console.warn('react-fast-compare cannot handle circular refs'), !1 throw n } } }, 1957: function (e, n, r) { 'use strict' r.d(n, { f$: function () { return Bo }, s6: function () { return Ho }, }) var i = r(7294) function o(e, t, n) { return ( t in e ? Object.defineProperty(e, t, { value: n, enumerable: !0, configurable: !0, writable: !0, }) : (e[t] = n), e ) } function a(e, t) { return ( (function (e) { if (Array.isArray(e)) return e })(e) || (function (e, t) { var n = e && (('undefined' !== typeof Symbol && e[Symbol.iterator]) || e['@@iterator']) if (null == n) return var r, i, o = [], a = !0, s = !1 try { for ( n = n.call(e); !(a = (r = n.next()).done) && (o.push(r.value), !t || o.length !== t); a = !0 ); } catch (u) { ;(s = !0), (i = u) } finally { try { a || null == n.return || n.return() } finally { if (s) throw i } } return o })(e, t) || u(e, t) || (function () { throw new TypeError( 'Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.', ) })() ) } function s(e) { return ( (function (e) { if (Array.isArray(e)) return l(e) })(e) || (function (e) { if ( ('undefined' !== typeof Symbol && null != e[Symbol.iterator]) || null != e['@@iterator'] ) return Array.from(e) })(e) || u(e) || (function () { throw new TypeError( 'Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.', ) })() ) } function u(e, t) { if (e) { if ('string' === typeof e) return l(e, t) var n = Object.prototype.toString.call(e).slice(8, -1) return ( 'Object' === n && e.constructor && (n = e.constructor.name), 'Map' === n || 'Set' === n ? Array.from(e) : 'Arguments' === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n) ? l(e, t) : void 0 ) } } function l(e, t) { ;(null == t || t > e.length) && (t = e.length) for (var n = 0, r = new Array(t); n < t; n++) r[n] = e[n] return r } var c = function (e, t) { var n = new Set(t) return Object.assign.apply( Object, [{}].concat( s( Object.entries(e) .filter(function (e) { var t = a(e, 1)[0] return !n.has(t) }) .map(function (e) { var t = a(e, 2) return o({}, t[0], t[1]) }), ), ), ) }, d = r(3405), f = r.n(d) function h(e) { return (h = 'function' === typeof Symbol && 'symbol' === typeof Symbol.iterator ? function (e) { return typeof e } : function (e) { return e && 'function' === typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? 'symbol' : typeof e })(e) } function p(e, t) { return ( (function (e) { if (Array.isArray(e)) return e })(e) || (function (e, t) { var n = e && (('undefined' !== typeof Symbol && e[Symbol.iterator]) || e['@@iterator']) if (null == n) return var r, i, o = [], a = !0, s = !1 try { for ( n = n.call(e); !(a = (r = n.next()).done) && (o.push(r.value), !t || o.length !== t); a = !0 ); } catch (u) { ;(s = !0), (i = u) } finally { try { a || null == n.return || n.return() } finally { if (s) throw i } } return o })(e, t) || m(e, t) || (function () { throw new TypeError( 'Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.', ) })() ) } function v(e) { return ( (function (e) { if (Array.isArray(e)) return g(e) })(e) || (function (e) { if ( ('undefined' !== typeof Symbol && null != e[Symbol.iterator]) || null != e['@@iterator'] ) return Array.from(e) })(e) || m(e) || (function () { throw new TypeError( 'Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.', ) })() ) } function m(e, t) { if (e) { if ('string' === typeof e) return g(e, t) var n = Object.prototype.toString.call(e).slice(8, -1) return ( 'Object' === n && e.constructor && (n = e.constructor.name), 'Map' === n || 'Set' === n ? Array.from(e) : 'Arguments' === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n) ? g(e, t) : void 0 ) } } function g(e, t) { ;(null == t || t > e.length) && (t = e.length) for (var n = 0, r = new Array(t); n < t; n++) r[n] = e[n] return r } var y = function (e, t) { var n = 'object' === h(t) ? t : { wrapperElementType: t, methodNames: (arguments.length <= 2 ? void 0 : arguments[2]) || void 0, initPropNames: (arguments.length <= 3 ? void 0 : arguments[3]) || void 0, }, r = n.wrapperElementType, o = void 0 === r ? 'div' : r, a = n.nodeMapper, s = void 0 === a ? function (e) { return e } : a, u = n.methodNames, l = void 0 === u ? [] : u, d = n.initPropNames, m = void 0 === d ? [] : d return (0, i.forwardRef)(function (t, n) { var r = (0, i.useRef)(), a = p((0, i.useState)({}), 2), u = a[0], d = a[1] ;(0, i.useEffect)(function () { return d(t) }) var h = (0, i.useMemo)(function () { var n = f()( m .filter(function (e) { return t.hasOwnProperty(e) }) .map(function (e) { return [e, t[e]] }), ) return e(n) }, []) ;(0, i.useLayoutEffect)(function () { h(s(r.current)) }, []), (0, i.useEffect)(function () { return h._destructor instanceof Function ? h._destructor : void 0 }, []) var g = (0, i.useCallback)( function (e) { for ( var t = arguments.length, n = new Array(t > 1 ? t - 1 : 0), r = 1; r < t; r++ ) n[r - 1] = arguments[r] return h[e] instanceof Function ? h[e].apply(h, n) : void 0 }, [h], ), y = c(t, [].concat(v(l), v(m))) return ( Object.keys(y) .filter(function (e) { return u[e] !== t[e] }) .forEach(function (e) { return g(e, t[e]) }), (0, i.useImperativeHandle)(n, function () { return f()( l.map(function (e) { return [ e, function () { for (var t = arguments.length, n = new Array(t), r = 0; r < t; r++) n[r] = arguments[r] return g.apply(void 0, [e].concat(n)) }, ] }), ) }), i.createElement(o, { ref: r }) ) }) }, b = (r(5569), r(401), r(1359), r(4858)), w = r(2539) function x(e, t) { var n = Object.keys(e) if (Object.getOwnPropertySymbols) { var r = Object.getOwnPropertySymbols(e) t && (r = r.filter(function (t) { return Object.getOwnPropertyDescriptor(e, t).enumerable })), n.push.apply(n, r) } return n } function E(e) { for (var t = 1; t < arguments.length; t++) { var n = null != arguments[t] ? arguments[t] : {} t % 2 ? x(Object(n), !0).forEach(function (t) { k(e, t, n[t]) }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(n)) : x(Object(n)).forEach(function (t) { Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(n, t)) }) } return e } function k(e, t, n) { return ( t in e ? Object.defineProperty(e, t, { value: n, enumerable: !0, configurable: !0, writable: !0, }) : (e[t] = n), e ) } function _(e, t) { return ( (function (e) { if (Array.isArray(e)) return e })(e) || (function (e, t) { var n = null == e ? null : ('undefined' !== typeof Symbol && e[Symbol.iterator]) || e['@@iterator'] if (null == n) return var r, i, o = [], a = !0, s = !1 try { for ( n = n.call(e); !(a = (r = n.next()).done) && (o.push(r.value), !t || o.length !== t); a = !0 ); } catch (u) { ;(s = !0), (i = u) } finally { try { a || null == n.return || n.return() } finally { if (s) throw i } } return o })(e, t) || O(e, t) || (function () { throw new TypeError( 'Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.', ) })() ) } function T(e) { return ( (function (e) { if (Array.isArray(e)) return C(e) })(e) || (function (e) { if ( ('undefined' !== typeof Symbol && null != e[Symbol.iterator]) || null != e['@@iterator'] ) return Array.from(e) })(e) || O(e) || (function () { throw new TypeError( 'Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.', ) })() ) } function O(e, t) { if (e) { if ('string' === typeof e) return C(e, t) var n = Object.prototype.toString.call(e).slice(8, -1) return ( 'Object' === n && e.constructor && (n = e.constructor.name), 'Map' === n || 'Set' === n ? Array.from(e) : 'Arguments' === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n) ? C(e, t) : void 0 ) } } function C(e, t) { ;(null == t || t > e.length) && (t = e.length) for (var n = 0, r = new Array(t); n < t; n++) r[n] = e[n] return r } !(function (e, t) { void 0 === t && (t = {}) var n = t.insertAt if (e && 'undefined' !== typeof document) { var r = document.head || document.getElementsByTagName('head')[0], i = document.createElement('style') ;(i.type = 'text/css'), 'top' === n && r.firstChild ? r.insertBefore(i, r.firstChild) : r.appendChild(i), i.styleSheet ? (i.styleSheet.cssText = e) : i.appendChild(document.createTextNode(e)) } })( '.graph-nav-info {\n position: absolute;\n bottom: 5px;\n width: 100%;\n text-align: center;\n color: slategrey;\n opacity: 0.7;\n font-size: 10px;\n font-family: Sans-serif;\n z-index: 1000;\n}', ) var S = (0, b.Z)({ props: { width: { default: window.innerWidth, triggerUpdate: !1, onChange: function (e, t) { t.container && (t.container.style.width = e) }, }, height: { default: window.innerHeight, triggerUpdate: !1, onChange: function (e, t) { t.container && (t.container.style.height = e) }, }, jsonUrl: {}, graphData: { default: { nodes: [], links: [] } }, numDimensions: { default: 3 }, dagMode: {}, dagLevelDistance: {}, dagNodeFilter: { default: function () { return !0 }, }, onDagError: { default: void 0 }, backgroundColor: { default: '#002' }, showNavInfo: { default: !0 }, nodeRelSize: { default: 4 }, nodeId: { default: 'id' }, nodeLabel: { default: 'name' }, nodeDesc: { default: 'desc' }, onNodeHover: {}, onNodeClick: {}, nodeVal: { default: 'val' }, nodeResolution: { default: 8 }, nodeVisibility: { default: !0 }, nodeColor: { default: 'color' }, nodeAutoColorBy: {}, nodeOpacity: { default: 0.75 }, nodeThreeObject: {}, nodeThreeObjectExtend: { default: !1 }, linkSource: { default: 'source' }, linkTarget: { default: 'target' }, linkLabel: { default: 'name' }, linkDesc: { default: 'desc' }, onLinkHover: {}, onLinkClick: {}, linkVisibility: { default: !0 }, linkColor: { default: 'color' }, linkAutoColorBy: {}, linkOpacity: { default: 0.2 }, linkWidth: { default: 0 }, linkResolution: { default: 6 }, linkCurvature: { default: 0 }, linkCurveRotation: { default: 0 }, linkMaterial: {}, linkThreeObject: {}, linkThreeObjectExtend: { default: !1 }, linkPositionUpdate: {}, linkDirectionalArrowLength: { default: 0 }, linkDirectionalArrowColor: {}, linkDirectionalArrowRelPos: { default: 0.5 }, linkDirectionalArrowResolution: { default: 8 }, linkDirectionalParticles: { default: 0 }, linkDirectionalParticleSpeed: { default: 0.01 }, linkDirectionalParticleWidth: { default: 0.5 }, linkDirectionalParticleColor: {}, linkDirectionalParticleResolution: { default: 4 }, forceEngine: { default: 'd3' }, d3AlphaMin: { default: 0 }, d3AlphaDecay: { default: 0.0228 }, d3VelocityDecay: { default: 0.4 }, ngraphPhysics: {}, warmupTicks: { default: 0 }, cooldownTicks: {}, cooldownTime: { default: 15e3 }, onEngineTick: {}, onEngineStop: {}, }, methods: E( E( {}, Object.assign.apply( Object, [{}].concat( T( [ 'getGraphBbox', 'emitParticle', 'd3Force', 'd3ReheatSimulation', 'refresh', ].map(function (e) { return k({}, e, function (t) { for ( var n = t.forcegraph.components.forcegraph, r = arguments.length, i = new Array(r > 1 ? r - 1 : 0), o = 1; o < r; o++ ) i[o - 1] = arguments[o] var a = n[e].apply(n, i) return a === n ? this : a }) }), ), ), ), ), {}, { _destructor: function () { this.graphData({ nodes: [], links: [] }) }, }, ), init: function (e, t) { ;(e.innerHTML = ''), (t.container = document.createElement('div')), e.appendChild(t.container), (t.container.style.position = 'relative'), (t.container.style.width = t.width), (t.container.style.height = t.height), t.container.appendChild((t.navInfo = document.createElement('div'))), (t.navInfo.className = 'graph-nav-info'), (t.navInfo.textContent = 'Mouse drag: look, gamepad/arrow/wasd keys: move') var n, r, i, o, a, s = document.createElement('a-scene') s.setAttribute('embedded', ''), s.appendChild((t.sky = document.createElement('a-sky'))), t.sky.setAttribute('radius', 3e3), s.appendChild((n = document.createElement('a-entity'))), n.setAttribute('position', '0 0 300'), n.setAttribute('movement-controls', 'fly: true; speed: 7'), n.appendChild((r = document.createElement('a-entity'))), r.setAttribute('camera', ''), r.setAttribute('position', '0 0 0'), r.setAttribute('look-controls', 'reverseMouseDrag: false; pointerLockEnabled: false'), r.appendChild((i = document.createElement('a-text'))), i.setAttribute('position', '0 -0.3 -1'), i.setAttribute('width', 2), i.setAttribute('align', 'center'), i.setAttribute('color', 'lavender'), i.setAttribute('value', ''), r.appendChild((o = document.createElement('a-text'))), o.setAttribute('position', '0 -0.4 -1'), o.setAttribute('width', 1.3), o.setAttribute('align', 'center'), o.setAttribute('color', 'lavender'), o.setAttribute('value', ''), s.appendChild((a = document.createElement('a-entity'))), a.setAttribute('cursor', 'rayOrigin: mouse; mouseCursorStylesEnabled: true'), a.setAttribute('raycaster', 'objects: [forcegraph]; interval: 100'), ['left', 'right'].forEach(function (e) { var t n.appendChild((t = document.createElement('a-entity'))), t.setAttribute('laser-controls', 'hand: '.concat(e)), t.setAttribute( 'raycaster', 'objects: [forcegraph]; interval: 100; lineColor: steelblue; lineOpacity: 0.85', ) }), s.appendChild((t.forcegraph = document.createElement('a-entity'))), t.forcegraph.setAttribute('forcegraph', null), t.container.appendChild(s), t.forcegraph.setAttribute( 'forcegraph', Object.assign.apply( Object, T( ['node', 'link'].map(function (e) { var n = { node: 'Node', link: 'Link' }[e] return k({}, 'on'.concat(n, 'Hover'), function (r, a) { var s = (r && (0, w.default)(t[''.concat(e, 'Label')])(r)) || '', u = (r && (0, w.default)(t[''.concat(e, 'Desc')])(r)) || '' i.setAttribute('value', s), o.setAttribute('value', u), t['on'.concat(n, 'Hover')] && t['on'.concat(n, 'Hover')](r, a) }) }), ), ), ) }, update: function (e, t) { t.hasOwnProperty('backgroundColor') && e.sky.setAttribute('color', e.backgroundColor), t.hasOwnProperty('showNavInfo') && (e.navInfo.style.display = e.showNavInfo ? null : 'none') var n = [ 'jsonUrl', 'numDimensions', 'dagMode', 'dagLevelDistance', 'dagNodeFilter', 'onDagError', 'nodeRelSize', 'nodeId', 'onNodeClick', 'nodeVal', 'nodeResolution', 'nodeVisibility', 'nodeColor', 'nodeAutoColorBy', 'nodeOpacity', 'nodeThreeObject', 'nodeThreeObjectExtend', 'linkSource', 'linkTarget', 'onLinkClick', 'linkVisibility', 'linkColor', 'linkAutoColorBy', 'linkOpacity', 'linkWidth', 'linkResolution', 'linkCurvature', 'linkCurveRotation', 'linkMaterial', 'linkThreeObject', 'linkThreeObjectExtend', 'linkPositionUpdate', 'linkDirectionalArrowLength', 'linkDirectionalArrowColor', 'linkDirectionalArrowRelPos', 'linkDirectionalArrowResolution', 'linkDirectionalParticles', 'linkDirectionalParticleSpeed', 'linkDirectionalParticleWidth', 'linkDirectionalParticleColor', 'linkDirectionalParticleResolution', 'forceEngine', 'd3AlphaMin', 'd3AlphaDecay', 'd3VelocityDecay', 'ngraphPhysics', 'warmupTicks', 'cooldownTicks', 'cooldownTime', 'onEngineTick', 'onEngineStop', ], r = Object.assign.apply( Object, [{}].concat( T( Object.entries(e) .filter(function (e) { var r = _(e, 2), i = r[0], o = r[1] return ( t.hasOwnProperty(i) && -1 !== n.indexOf(i) && void 0 !== o && null !== o ) }) .map(function (e) { var t = _(e, 2) return k({}, t[0], t[1]) }), ), T( Object.entries(e.graphData).map(function (e) { var t = _(e, 2) return k({}, t[0], t[1]) }), ), ), ) e.forcegraph.setAttribute('forcegraph', r) }, }), A = r(5697), P = r.n(A) function M(e, t) { var n = Object.keys(e) if (Object.getOwnPropertySymbols) { var r = Object.getOwnPropertySymbols(e) t && (r = r.filter(function (t) { return Object.getOwnPropertyDescriptor(e, t).enumerable })), n.push.apply(n, r) } return n } function R(e) { for (var t = 1; t < arguments.length; t++) { var n = null != arguments[t] ? arguments[t] : {} t % 2 ? M(Object(n), !0).forEach(function (t) { j(e, t, n[t]) }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(n)) : M(Object(n)).forEach(function (t) { Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(n, t)) }) } return e } function j(e, t, n) { return ( t in e ? Object.defineProperty(e, t, { value: n, enumerable: !0, configurable: !0, writable: !0, }) : (e[t] = n), e ) } function D(e, t) { return ( (function (e) { if (Array.isArray(e)) return e })(e) || (function (e, t) { var n = null == e ? null : ('undefined' !== typeof Symbol && e[Symbol.iterator]) || e['@@iterator'] if (null == n) return var r, i, o = [], a = !0, s = !1 try { for ( n = n.call(e); !(a = (r = n.next()).done) && (o.push(r.value), !t || o.length !== t); a = !0 ); } catch (u) { ;(s = !0), (i = u) } finally { try { a || null == n.return || n.return() } finally { if (s) throw i } } return o })(e, t) || N(e, t) || (function () { throw new TypeError( 'Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.', ) })() ) } function L(e) { return ( (function (e) { if (Array.isArray(e)) return I(e) })(e) || (function (e) { if ( ('undefined' !== typeof Symbol && null != e[Symbol.iterator]) || null != e['@@iterator'] ) return Array.from(e) })(e) || N(e) || (function () { throw new TypeError( 'Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.', ) })() ) } function N(e, t) { if (e) { if ('string' === typeof e) return I(e, t) var n = Object.prototype.toString.call(e).slice(8, -1) return ( 'Object' === n && e.constructor && (n = e.constructor.name), 'Map' === n || 'Set' === n ? Array.from(e) : 'Arguments' === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n) ? I(e, t) : void 0 ) } } function I(e, t) { ;(null == t || t > e.length) && (t = e.length) for (var n = 0, r = new Array(t); n < t; n++) r[n] = e[n] return r } var z = (0, b.Z)({ props: { width: {}, height: {}, yOffset: { default: 1.5 }, glScale: { default: 200 }, jsonUrl: {}, graphData: { default: { nodes: [], links: [] } }, numDimensions: { default: 3 }, dagMode: {}, dagLevelDistance: {}, dagNodeFilter: { default: function () { return !0 }, }, onDagError: { default: void 0 }, nodeRelSize: { default: 4 }, nodeId: { default: 'id' }, nodeVal: { default: 'val' }, nodeResolution: { default: 8 }, nodeVisibility: { default: !0 }, nodeColor: { default: 'color' }, nodeAutoColorBy: {}, nodeOpacity: { default: 0.75 }, nodeThreeObject: {}, nodeThreeObjectExtend: { default: !1 }, linkSource: { default: 'source' }, linkTarget: { default: 'target' }, linkVisibility: { default: !0 }, linkColor: { default: 'color' }, linkAutoColorBy: {}, linkOpacity: { default: 0.2 }, linkWidth: { default: 0 }, linkResolution: { default: 6 }, linkCurvature: { default: 0 }, linkCurveRotation: { default: 0 }, linkMaterial: {}, linkThreeObject: {}, linkThreeObjectExtend: { default: !1 }, linkPositionUpdate: {}, linkDirectionalArrowLength: { default: 0 }, linkDirectionalArrowColor: {}, linkDirectionalArrowRelPos: { default: 0.5 }, linkDirectionalArrowResolution: { default: 8 }, linkDirectionalParticles: { default: 0 }, linkDirectionalParticleSpeed: { default: 0.01 }, linkDirectionalParticleWidth: { default: 0.5 }, linkDirectionalParticleColor: {}, linkDirectionalParticleResolution: { default: 4 }, onNodeHover: {}, onNodeClick: {}, onLinkHover: {}, onLinkClick: {}, forceEngine: { default: 'd3' }, d3AlphaMin: { default: 0 }, d3AlphaDecay: { default: 0.0228 }, d3VelocityDecay: { default: 0.4 }, ngraphPhysics: {}, warmupTicks: { default: 0 }, cooldownTicks: {}, cooldownTime: { default: 15e3 }, onEngineTick: {}, onEngineStop: {}, }, methods: R( R( {}, Object.assign.apply( Object, [{}].concat( L( [ 'getGraphBbox', 'emitParticle', 'd3Force', 'd3ReheatSimulation', 'refresh', ].map(function (e) { return j({}, e, function (t) { for ( var n = t.forcegraph.components.forcegraph, r = arguments.length, i = new Array(r > 1 ? r - 1 : 0), o = 1; o < r; o++ ) i[o - 1] = arguments[o] var a = n[e].apply(n, i) return a === n ? this : a }) }), ), ), ), ), {}, { _destructor: function () { this.graphData({ nodes: [], links: [] }) }, }, ), init: function (e, t) { var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}, r = n.markerAttrs, i = void 0 === r ? { preset: 'hiro' } : r ;(e.innerHTML = ''), (t.container = document.createElement('div')), e.appendChild(t.container) var o = document.createElement('a-scene') o.setAttribute('embedded', ''), o.setAttribute('arjs', 'debugUIEnabled: false;') var a, s = document.createElement('a-marker') Object.entries(i).forEach(function (e) { var t = D(e, 2), n = t[0], r = t[1] return s.setAttribute(n, r) }), o.appendChild(s), o.appendChild((a = document.createElement('a-entity'))), a.setAttribute('cursor'), a.setAttribute('raycaster', 'objects: [forcegraph]'), (t.forcegraph = document.createElement('a-entity')), t.forcegraph.setAttribute('forcegraph', null), s.appendChild(t.forcegraph) var u = document.createElement('a-entity') u.setAttribute('camera', ''), o.appendChild(u), t.container.appendChild(o) }, update: function (e, t) { t.hasOwnProperty('width') && e.width && (e.container.style.width = e.width), t.hasOwnProperty('height') && e.height && (e.container.style.height = e.height), t.hasOwnProperty('glScale') && e.forcegraph.setAttribute( 'scale', L(new Array(3)) .map(function () { return 1 / e.glScale }) .join(' '), ), t.hasOwnProperty('yOffset') && e.forcegraph.setAttribute('position', '0 '.concat(e.yOffset, ' 0')) var n = [ 'jsonUrl', 'numDimensions', 'dagMode', 'dagLevelDistance', 'dagNodeFilter', 'onDagError', 'nodeRelSize', 'nodeId', 'nodeVal', 'nodeResolution', 'nodeVisibility', 'nodeColor', 'nodeAutoColorBy', 'nodeOpacity', 'nodeThreeObject', 'nodeThreeObjectExtend', 'linkSource', 'linkTarget', 'linkVisibility', 'linkColor', 'linkAutoColorBy', 'linkOpacity', 'linkWidth', 'linkResolution', 'linkCurvature', 'linkCurveRotation', 'linkMaterial', 'linkThreeObject', 'linkThreeObjectExtend', 'linkPositionUpdate', 'linkDirectionalArrowLength', 'linkDirectionalArrowColor', 'linkDirectionalArrowRelPos', 'linkDirectionalArrowResolution', 'linkDirectionalParticles', 'linkDirectionalParticleSpeed', 'linkDirectionalParticleWidth', 'linkDirectionalParticleColor', 'linkDirectionalParticleResolution', 'onNodeHover', 'onNodeClick', 'onLinkHover', 'onLinkClick', 'forceEngine', 'd3AlphaMin', 'd3AlphaDecay', 'd3VelocityDecay', 'ngraphPhysics', 'warmupTicks', 'cooldownTicks', 'cooldownTime', 'onEngineTick', 'onEngineStop', ], r = Object.assign.apply( Object, [{}].concat( L( Object.entries(e) .filter(function (e) { var r = D(e, 2), i = r[0], o = r[1] return ( t.hasOwnProperty(i) && -1 !== n.indexOf(i) && void 0 !== o && null !== o ) }) .map(function (e) { var t = D(e, 2) return j({}, t[0], t[1]) }), ), L( Object.entries(e.graphData).map(function (e) { var t = D(e, 2) return j({}, t[0], t[1]) }), ), ), ) e.forcegraph.setAttribute('forcegraph', r) }, }), H = r(2212) const B = new H.JOQ(), F = new H.iMs(), V = new H.FM8(), U = new H.Pa4(), G = new H.Pa4(), q = new H.Pa4(), W = new H.yGw() class K extends H.pBf { constructor(e, t, n) { super(), (n.style.touchAction = 'none') let r = null, i = null const o = [], a = this function s() { n.addEventListener('pointermove', l), n.addEventListener('pointerdown', c), n.addEventListener('pointerup', d), n.addEventListener('pointerleave', d) } function u() { n.removeEventListener('pointermove', l), n.removeEventListener('pointerdown', c), n.removeEventListener('pointerup', d), n.removeEventListener('pointerleave', d), (n.style.cursor = '') } function l(s) { if (!1 !== a.enabled) { if ((f(s), F.setFromCamera(V, t), r)) return ( F.ray.intersectPlane(B, G) && r.position.copy(G.sub(U).applyMatrix4(W)), void a.dispatchEvent({ type: 'drag', object: r }) ) if ('mouse' === s.pointerType || 'pen' === s.pointerType) if ( ((o.length = 0), F.setFromCamera(V, t), F.intersectObjects(e, !0, o), o.length > 0) ) { const e = o[0].object B.setFromNormalAndCoplanarPoint( t.getWorldDirection(B.normal), q.setFromMatrixPosition(e.matrixWorld), ), i !== e && null !== i && (a.dispatchEvent({ type: 'hoveroff', object: i }), (n.style.cursor = 'auto'), (i = null)), i !== e && (a.dispatchEvent({ type: 'hoveron', object: e }), (n.style.cursor = 'pointer'), (i = e)) } else null !== i && (a.dispatchEvent({ type: 'hoveroff', object: i }), (n.style.cursor = 'auto'), (i = null)) } } function c(i) { !1 !== a.enabled && (f(i), (o.length = 0), F.setFromCamera(V, t), F.intersectObjects(e, !0, o), o.length > 0 && ((r = !0 === a.transformGroup ? e[0] : o[0].object), B.setFromNormalAndCoplanarPoint( t.getWorldDirection(B.normal), q.setFromMatrixPosition(r.matrixWorld), ), F.ray.intersectPlane(B, G) && (W.copy(r.parent.matrixWorld).invert(), U.copy(G).sub(q.setFromMatrixPosition(r.matrixWorld))), (n.style.cursor = 'move'), a.dispatchEvent({ type: 'dragstart', object: r }))) } function d() { !1 !== a.enabled && (r && (a.dispatchEvent({ type: 'dragend', object: r }), (r = null)), (n.style.cursor = i ? 'pointer' : 'auto')) } function f(e) { const t = n.getBoundingClientRect() ;(V.x = ((e.clientX - t.left) / t.width) * 2 - 1), (V.y = (-(e.clientY - t.top) / t.height) * 2 + 1) } s(), (this.enabled = !0), (this.transformGroup = !1), (this.activate = s), (this.deactivate = u), (this.dispose = function () { u() }), (this.getObjects = function () { return e }) } } var Z = r(1398) const $ = { type: 'change' }, X = { type: 'start' }, Y = { type: 'end' } class Q extends H.pBf { constructor(e, t) { super(), void 0 === t && console.warn( 'THREE.TrackballControls: The second parameter "domElement" is now mandatory.', ), t === document && console.error( 'THREE.TrackballControls: "document" should not be used as the target "domElement". Please use "renderer.domElement" instead.', ) const n = this, r = -1, i = 0, o = 1, a = 2, s = 3, u = 4 ;(this.object = e), (this.domElement = t), (this.domElement.style.touchAction = 'none'), (this.enabled = !0), (this.screen = { left: 0, top: 0, width: 0, height: 0 }), (this.rotateSpeed = 1), (this.zoomSpeed = 1.2), (this.panSpeed = 0.3), (this.noRotate = !1), (this.noZoom = !1), (this.noPan = !1), (this.staticMoving = !1), (this.dynamicDampingFactor = 0.2), (this.minDistance = 0), (this.maxDistance = 1 / 0), (this.keys = ['KeyA', 'KeyS', 'KeyD']), (this.mouseButtons = { LEFT: H.RsA.ROTATE, MIDDLE: H.RsA.DOLLY, RIGHT: H.RsA.PAN }), (this.target = new H.Pa4()) const l = 1e-6, c = new H.Pa4() let d = 1, f = r, h = r, p = 0, v = 0, m = 0 const g = new H.Pa4(), y = new H.FM8(), b = new H.FM8(), w = new H.Pa4(), x = new H.FM8(), E = new H.FM8(), k = new H.FM8(), _ = new H.FM8(), T = [], O = {} ;(this.target0 = this.target.clone()), (this.position0 = this.object.position.clone()), (this.up0 = this.object.up.clone()), (this.zoom0 = this.object.zoom), (this.handleResize = function () { const e = n.domElement.getBoundingClientRect(), t = n.domElement.ownerDocument.documentElement ;(n.screen.left = e.left + window.pageXOffset - t.clientLeft), (n.screen.top = e.top + window.pageYOffset - t.clientTop), (n.screen.width = e.width), (n.screen.height = e.height) }) const C = (function () { const e = new H.FM8() return function (t, r) { return ( e.set((t - n.screen.left) / n.screen.width, (r - n.screen.top) / n.screen.height), e ) } })(), S = (function () { const e = new H.FM8() return function (t, r) { return ( e.set( (t - 0.5 * n.screen.width - n.screen.left) / (0.5 * n.screen.width), (n.screen.height + 2 * (n.screen.top - r)) / n.screen.width, ), e ) } })() function A(e) { !1 !== n.enabled && (0 === T.length && (n.domElement.ownerDocument.addEventListener('pointermove', P), n.domElement.ownerDocument.addEventListener('pointerup', M)), (function (e) { T.push(e) })(e), 'touch' === e.pointerType ? (function (e) { switch ((z(e), T.length)) { case 1: ;(f = s), b.copy(S(T[0].pageX, T[0].pageY)), y.copy(b) break default: f = u const e = T[0].pageX - T[1].pageX, t = T[0].pageY - T[1].pageY v = p = Math.sqrt(e * e + t * t) const n = (T[0].pageX + T[1].pageX) / 2, r = (T[0].pageY + T[1].pageY) / 2 k.copy(C(n, r)), _.copy(k) } n.dispatchEvent(X) })(e) : (function (e) { if (f === r) switch (e.button) { case n.mouseButtons.LEFT: f = i break case n.mouseButtons.MIDDLE: f = o break case n.mouseButtons.RIGHT: f = a break default: f = r } const t = h !== r ? h : f t !== i || n.noRotate ? t !== o || n.noZoom ? t !== a || n.noPan || (k.copy(C(e.pageX, e.pageY)), _.copy(k)) : (x.copy(C(e.pageX, e.pageY)), E.copy(x)) : (b.copy(S(e.pageX, e.pageY)), y.copy(b)) n.domElement.ownerDocument.addEventListener('pointermove', P), n.domElement.ownerDocument.addEventListener('pointerup', M), n.dispatchEvent(X) })(e)) } function P(e) { !1 !== n.enabled && ('touch' === e.pointerType ? (function (e) { switch ((z(e), T.length)) { case 1: y.copy(b), b.copy(S(e.pageX, e.pageY)) break default: const t = (function (e) { const t = e.pointerId === T[0].pointerId ? T[1] : T[0] return O[t.pointerId] })(e), n = e.pageX - t.x, r = e.pageY - t.y v = Math.sqrt(n * n + r * r) const i = (e.pageX + t.x) / 2, o = (e.pageY + t.y) / 2 _.copy(C(i, o)) } })(e) : (function (e) { const t = h !== r ? h : f t !== i || n.noRotate ? t !== o || n.noZoom ? t !== a || n.noPan || _.copy(C(e.pageX, e.pageY)) : E.copy(C(e.pageX, e.pageY)) : (y.copy(b), b.copy(S(e.pageX, e.pageY))) })(e)) } function M(e) { !1 !== n.enabled && ('touch' === e.pointerType ? (function (e) { switch (T.length) { case 0: f = r break case 1: ;(f = s), b.copy(S(e.pageX, e.pageY)), y.copy(b) } n.dispatchEvent(Y) })(e) : ((f = r), n.domElement.ownerDocument.removeEventListener('pointermove', P), n.domElement.ownerDocument.removeEventListener('pointerup', M), n.dispatchEvent(Y)), I(e), 0 === T.length && (n.domElement.ownerDocument.removeEventListener('pointermove', P), n.domElement.ownerDocument.removeEventListener('pointerup', M))) } function R(e) { I(e) } function j(e) { !1 !== n.enabled && (window.removeEventListener('keydown', j), h === r && (e.code !== n.keys[i] || n.noRotate ? e.code !== n.keys[o] || n.noZoom ? e.code !== n.keys[a] || n.noPan || (h = a) : (h = o) : (h = i))) } function D() { !1 !== n.enabled && ((h = r), window.addEventListener('keydown', j)) } function L(e) { if (!1 !== n.enabled && !0 !== n.noZoom) { switch ((e.preventDefault(), e.deltaMode)) { case 2: x.y -= 0.025 * e.deltaY break case 1: x.y -= 0.01 * e.deltaY break default: x.y -= 25e-5 * e.deltaY } n.dispatchEvent(X), n.dispatchEvent(Y) } } function N(e) { !1 !== n.enabled && e.preventDefault() } function I(e) { delete O[e.pointerId] for (let t = 0; t < T.length; t++) if (T[t].pointerId == e.pointerId) return void T.splice(t, 1) } function z(e) { let t = O[e.pointerId] void 0 === t && ((t = new H.FM8()), (O[e.pointerId] = t)), t.set(e.pageX, e.pageY) } ;(this.rotateCamera = (function () { const e = new H.Pa4(), t = new H._fP(), r = new H.Pa4(), i = new H.Pa4(), o = new H.Pa4(), a = new H.Pa4() return function () { a.set(b.x - y.x, b.y - y.y, 0) let s = a.length() s ? (g.copy(n.object.position).sub(n.target), r.copy(g).normalize(), i.copy(n.object.up).normalize(), o.crossVectors(i, r).normalize(), i.setLength(b.y - y.y), o.setLength(b.x - y.x), a.copy(i.add(o)), e.crossVectors(a, g).normalize(), (s *= n.rotateSpeed), t.setFromAxisAngle(e, s), g.applyQuaternion(t), n.object.up.applyQuaternion(t), w.copy(e), (m = s)) : !n.staticMoving && m && ((m *= Math.sqrt(1 - n.dynamicDampingFactor)), g.copy(n.object.position).sub(n.target), t.setFromAxisAngle(w, m), g.applyQuaternion(t), n.object.up.applyQuaternion(t)), y.copy(b) } })()), (this.zoomCamera = function () { let e f === u ? ((e = p / v), (p = v), n.object.isPerspectiveCamera ? g.multiplyScalar(e) : n.object.isOrthographicCamera ? ((n.object.zoom *= e), n.object.updateProjectionMatrix()) : console.warn('THREE.TrackballControls: Unsupported camera type')) : ((e = 1 + (E.y - x.y) * n.zoomSpeed), 1 !== e && e > 0 && (n.object.isPerspectiveCamera ? g.multiplyScalar(e) : n.object.isOrthographicCamera ? ((n.object.zoom /= e), n.object.updateProjectionMatrix()) : console.warn('THREE.TrackballControls: Unsupported camera type')), n.staticMoving ? x.copy(E) : (x.y += (E.y - x.y) * this.dynamicDampingFactor)) }), (this.panCamera = (function () { const e = new H.FM8(), t = new H.Pa4(), r = new H.Pa4() return function () { if ((e.copy(_).sub(k), e.lengthSq())) { if (n.object.isOrthographicCamera) { const t = (n.object.right - n.object.left) / n.object.zoom / n.domElement.clientWidth, r = (n.object.top - n.object.bottom) / n.object.zoom / n.domElement.clientWidth ;(e.x *= t), (e.y *= r) } e.multiplyScalar(g.length() * n.panSpeed), r.copy(g).cross(n.object.up).setLength(e.x), r.add(t.copy(n.object.up).setLength(e.y)), n.object.position.add(r), n.target.add(r), n.staticMoving ? k.copy(_) : k.add(e.subVectors(_, k).multiplyScalar(n.dynamicDampingFactor)) } } })()), (this.checkDistances = function () { ;(n.noZoom && n.noPan) || (g.lengthSq() > n.maxDistance * n.maxDistance && (n.object.position.addVectors(n.target, g.setLength(n.maxDistance)), x.copy(E)), g.lengthSq() < n.minDistance * n.minDistance && (n.object.position.addVectors(n.target, g.setLength(n.minDistance)), x.copy(E))) }), (this.update = function () { g.subVectors(n.object.position, n.target), n.noRotate || n.rotateCamera(), n.noZoom || n.zoomCamera(), n.noPan || n.panCamera(), n.object.position.addVectors(n.target, g), n.object.isPerspectiveCamera ? (n.checkDistances(), n.object.lookAt(n.target), c.distanceToSquared(n.object.position) > l && (n.dispatchEvent($), c.copy(n.object.position))) : n.object.isOrthographicCamera ? (n.object.lookAt(n.target), (c.distanceToSquared(n.object.position) > l || d !== n.object.zoom) && (n.dispatchEvent($), c.copy(n.object.position), (d = n.object.zoom))) : console.warn('THREE.TrackballControls: Unsupported camera type') }), (this.reset = function () { ;(f = r), (h = r), n.target.copy(n.target0), n.object.position.copy(n.position0), n.object.up.copy(n.up0), (n.object.zoom = n.zoom0), n.object.updateProjectionMatrix(), g.subVectors(n.object.position, n.target), n.object.lookAt(n.target), n.dispatchEvent($), c.copy(n.object.position), (d = n.object.zoom) }), (this.dispose = function () { n.domElement.removeEventListener('contextmenu', N), n.domElement.removeEventListener('pointerdown', A), n.domElement.removeEventListener('pointercancel', R), n.domElement.removeEventListener('wheel', L), window.removeEventListener('keydown', j), window.removeEventListener('keyup', D) }), this.domElement.addEventListener('contextmenu', N), this.domElement.addEventListener('pointerdown', A), this.domElement.addEventListener('pointercancel', R), this.domElement.addEventListener('wheel', L, { passive: !1 }), window.addEventListener('keydown', j), window.addEventListener('keyup', D), this.handleResize(), this.update() } } const J = { type: 'change' }, ee = { type: 'start' }, te = { type: 'end' } class ne extends H.pBf { constructor(e, t) { super(), void 0 === t && console.warn( 'THREE.OrbitControls: The second parameter "domElement" is now mandatory.', ), t === document && console.error( 'THREE.OrbitControls: "document" should not be used as the target "domElement". Please use "renderer.domElement" instead.', ), (this.object = e), (this.domElement = t), (this.domElement.style.touchAction = 'none'), (this.enabled = !0), (this.target = new H.Pa4()), (this.minDistance = 0), (this.maxDistance = 1 / 0), (this.minZoom = 0), (this.maxZoom = 1 / 0), (this.minPolarAngle = 0), (this.maxPolarAngle = Math.PI), (this.minAzimuthAngle = -1 / 0), (this.maxAzimuthAngle = 1 / 0), (this.enableDamping = !1), (this.dampingFactor = 0.05), (this.enableZoom = !0), (this.zoomSpeed = 1), (this.enableRotate = !0), (this.rotateSpeed = 1), (this.enablePan = !0), (this.panSpeed = 1), (this.screenSpacePanning = !0), (this.keyPanSpeed = 7), (this.autoRotate = !1), (this.autoRotateSpeed = 2), (this.keys = { LEFT: 'ArrowLeft', UP: 'ArrowUp', RIGHT: 'ArrowRight', BOTTOM: 'ArrowDown', }), (this.mouseButtons = { LEFT: H.RsA.ROTATE, MIDDLE: H.RsA.DOLLY, RIGHT: H.RsA.PAN }), (this.touches = { ONE: H.QmN.ROTATE, TWO: H.QmN.DOLLY_PAN }), (this.target0 = this.target.clone()), (this.position0 = this.object.position.clone()), (this.zoom0 = this.object.zoom), (this._domElementKeyEvents = null), (this.getPolarAngle = function () { return a.phi }), (this.getAzimuthalAngle = function () { return a.theta }), (this.listenToKeyEvents = function (e) { e.addEventListener('keydown', G), (this._domElementKeyEvents = e) }), (this.saveState = function () { n.target0.copy(n.target), n.position0.copy(n.object.position), (n.zoom0 = n.object.zoom) }), (this.reset = function () { n.target.copy(n.target0), n.object.position.copy(n.position0), (n.object.zoom = n.zoom0), n.object.updateProjectionMatrix(), n.dispatchEvent(J), n.update(), (i = r.NONE) }), (this.update = (function () { const t = new H.Pa4(), d = new H._fP().setFromUnitVectors(e.up, new H.Pa4(0, 1, 0)), f = d.clone().invert(), h = new H.Pa4(), p = new H._fP(), v = 2 * Math.PI return function () { const e = n.object.position t.copy(e).sub(n.target), t.applyQuaternion(d), a.setFromVector3(t), n.autoRotate && i === r.NONE && k(((2 * Math.PI) / 60 / 60) * n.autoRotateSpeed), n.enableDamping ? ((a.theta += s.theta * n.dampingFactor), (a.phi += s.phi * n.dampingFactor)) : ((a.theta += s.theta), (a.phi += s.phi)) let m = n.minAzimuthAngle, g = n.maxAzimuthAngle return ( isFinite(m) && isFinite(g) && (m < -Math.PI ? (m += v) : m > Math.PI && (m -= v), g < -Math.PI ? (g += v) : g > Math.PI && (g -= v), (a.theta = m <= g ? Math.max(m, Math.min(g, a.theta)) : a.theta > (m + g) / 2 ? Math.max(m, a.theta) : Math.min(g, a.theta))), (a.phi = Math.max(n.minPolarAngle, Math.min(n.maxPolarAngle, a.phi))), a.makeSafe(), (a.radius *= u), (a.radius = Math.max(n.minDistance, Math.min(n.maxDistance, a.radius))), !0 === n.enableDamping ? n.target.addScaledVector(l, n.dampingFactor) : n.target.add(l), t.setFromSpherical(a), t.applyQuaternion(f), e.copy(n.target).add(t), n.object.lookAt(n.target), !0 === n.enableDamping ? ((s.theta *= 1 - n.dampingFactor), (s.phi *= 1 - n.dampingFactor), l.multiplyScalar(1 - n.dampingFactor)) : (s.set(0, 0, 0), l.set(0, 0, 0)), (u = 1), !!( c || h.distanceToSquared(n.object.position) > o || 8 * (1 - p.dot(n.object.quaternion)) > o ) && (n.dispatchEvent(J), h.copy(n.object.position), p.copy(n.object.quaternion), (c = !1), !0) ) } })()), (this.dispose = function () { n.domElement.removeEventListener('contextmenu', q), n.domElement.removeEventListener('pointerdown', z), n.domElement.removeEventListener('pointercancel', V), n.domElement.removeEventListener('wheel', U), n.domElement.ownerDocument.removeEventListener('pointermove', B), n.domElement.ownerDocument.removeEventListener('pointerup', F), null !== n._domElementKeyEvents && n._domElementKeyEvents.removeEventListener('keydown', G) }) const n = this, r = { NONE: -1, ROTATE: 0, DOLLY: 1, PAN: 2, TOUCH_ROTATE: 3, TOUCH_PAN: 4, TOUCH_DOLLY_PAN: 5, TOUCH_DOLLY_ROTATE: 6, } let i = r.NONE const o = 1e-6, a = new H.$V(), s = new H.$V() let u = 1 const l = new H.Pa4() let c = !1 const d = new H.FM8(), f = new H.FM8(), h = new H.FM8(), p = new H.FM8(), v = new H.FM8(), m = new H.FM8(), g = new H.FM8(), y = new H.FM8(), b = new H.FM8(), w = [], x = {} function E() { return Math.pow(0.95, n.zoomSpeed) } function k(e) { s.theta -= e } function _(e) { s.phi -= e } const T = (function () { const e = new H.Pa4() return function (t, n) { e.setFromMatrixColumn(n, 0), e.multiplyScalar(-t), l.add(e) } })(), O = (function () { const e = new H.Pa4() return function (t, r) { !0 === n.screenSpacePanning ? e.setFromMatrixColumn(r, 1) : (e.setFromMatrixColumn(r, 0), e.crossVectors(n.object.up, e)), e.multiplyScalar(t), l.add(e) } })(), C = (function () { const e = new H.Pa4() return function (t, r) { const i = n.domElement if (n.object.isPerspectiveCamera) { const o = n.object.position e.copy(o).sub(n.target) let a = e.length() ;(a *= Math.tan(((n.object.fov / 2) * Math.PI) / 180)), T((2 * t * a) / i.clientHeight, n.object.matrix), O((2 * r * a) / i.clientHeight, n.object.matrix) } else n.object.isOrthographicCamera ? (T( (t * (n.object.right - n.object.left)) / n.object.zoom / i.clientWidth, n.object.matrix, ), O( (r * (n.object.top - n.object.bottom)) / n.object.zoom / i.clientHeight, n.object.matrix, )) : (console.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - pan disabled.', ), (n.enablePan = !1)) } })() function S(e) { n.object.isPerspectiveCamera ? (u /= e) : n.object.isOrthographicCamera ? ((n.object.zoom = Math.max(n.minZoom, Math.min(n.maxZoom, n.object.zoom * e))), n.object.updateProjectionMatrix(), (c = !0)) : (console.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.', ), (n.enableZoom = !1)) } function A(e) { n.object.isPerspectiveCamera ? (u *= e) : n.object.isOrthographicCamera ? ((n.object.zoom = Math.max(n.minZoom, Math.min(n.maxZoom, n.object.zoom / e))), n.object.updateProjectionMatrix(), (c = !0)) : (console.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.', ), (n.enableZoom = !1)) } function P(e) { d.set(e.clientX, e.clientY) } function M(e) { p.set(e.clientX, e.clientY) } function R() { if (1 === w.length) d.set(w[0].pageX, w[0].pageY) else { const e = 0.5 * (w[0].pageX + w[1].pageX), t = 0.5 * (w[0].pageY + w[1].pageY) d.set(e, t) } } function j() { if (1 === w.length) p.set(w[0].pageX, w[0].pageY) else { const e = 0.5 * (w[0].pageX + w[1].pageX), t = 0.5 * (w[0].pageY + w[1].pageY) p.set(e, t) } } function D() { const e = w[0].pageX - w[1].pageX, t = w[0].pageY - w[1].pageY, n = Math.sqrt(e * e + t * t) g.set(0, n) } function L(e) { if (1 == w.length) f.set(e.pageX, e.pageY) else { const t = Z(e), n = 0.5 * (e.pageX + t.x), r = 0.5 * (e.pageY + t.y) f.set(n, r) } h.subVectors(f, d).multiplyScalar(n.rotateSpeed) const t = n.domElement k((2 * Math.PI * h.x) / t.clientHeight), _((2 * Math.PI * h.y) / t.clientHeight), d.copy(f) } function N(e) { if (1 === w.length) v.set(e.pageX, e.pageY) else { const t = Z(e), n = 0.5 * (e.pageX + t.x), r = 0.5 * (e.pageY + t.y) v.set(n, r) } m.subVectors(v, p).multiplyScalar(n.panSpeed), C(m.x, m.y), p.copy(v) } function I(e) { const t = Z(e), r = e.pageX - t.x, i = e.pageY - t.y, o = Math.sqrt(r * r + i * i) y.set(0, o), b.set(0, Math.pow(y.y / g.y, n.zoomSpeed)), S(b.y), g.copy(y) } function z(e) { !1 !== n.enabled && (0 === w.length && (n.domElement.ownerDocument.addEventListener('pointermove', B), n.domElement.ownerDocument.addEventListener('pointerup', F)), (function (e) { w.push(e) })(e), 'touch' === e.pointerType ? (function (e) { switch ((K(e), w.length)) { case 1: switch (n.touches.ONE) { case H.QmN.ROTATE: if (!1 === n.enableRotate) return R(), (i = r.TOUCH_ROTATE) break case H.QmN.PAN: if (!1 === n.enablePan) return j(), (i = r.TOUCH_PAN) break default: i = r.NONE } break case 2: switch (n.touches.TWO) { case H.QmN.DOLLY_PAN: if (!1 === n.enableZoom && !1 === n.enablePan) return n.enableZoom && D(), n.enablePan && j(), (i = r.TOUCH_DOLLY_PAN) break case H.QmN.DOLLY_ROTATE: if (!1 === n.enableZoom && !1 === n.enableRotate) return n.enableZoom && D(), n.enableRotate && R(), (i = r.TOUCH_DOLLY_ROTATE) break default: i = r.NONE } break default: i = r.NONE } i !== r.NONE && n.dispatchEvent(ee) })(e) : (function (e) { let t switch (e.button) { case 0: t = n.mouseButtons.LEFT break case 1: t = n.mouseButtons.MIDDLE break case 2: t = n.mouseButtons.RIGHT break default: t = -1 } switch (t) { case H.RsA.DOLLY: if (!1 === n.enableZoom) return !(function (e) { g.set(e.clientX, e.clientY) })(e), (i = r.DOLLY) break case H.RsA.ROTATE: if (e.ctrlKey || e.metaKey || e.shiftKey) { if (!1 === n.enablePan) return M(e), (i = r.PAN) } else { if (!1 === n.enableRotate) return P(e), (i = r.ROTATE) } break case H.RsA.PAN: if (e.ctrlKey || e.metaKey || e.shiftKey) { if (!1 === n.enableRotate) return P(e), (i = r.ROTATE) } else { if (!1 === n.enablePan) return M(e), (i = r.PAN) } break default: i = r.NONE } i !== r.NONE && n.dispatchEvent(ee) })(e)) } function B(e) { !1 !== n.enabled && ('touch' === e.pointerType ? (function (e) { switch ((K(e), i)) { case r.TOUCH_ROTATE: if (!1 === n.enableRotate) return L(e), n.update() break case r.TOUCH_PAN: if (!1 === n.enablePan) return N(e), n.update() break case r.TOUCH_DOLLY_PAN: if (!1 === n.enableZoom && !1 === n.enablePan) return !(function (e) { n.enableZoom && I(e), n.enablePan && N(e) })(e), n.update() break case r.TOUCH_DOLLY_ROTATE: if (!1 === n.enableZoom && !1 === n.enableRotate) return !(function (e) { n.enableZoom && I(e), n.enableRotate && L(e) })(e), n.update() break default: i = r.NONE } })(e) : (function (e) { if (!1 === n.enabled) return switch (i) { case r.ROTATE: if (!1 === n.enableRotate) return !(function (e) { f.set(e.clientX, e.clientY), h.subVectors(f, d).multiplyScalar(n.rotateSpeed) const t = n.domElement k((2 * Math.PI * h.x) / t.clientHeight), _((2 * Math.PI * h.y) / t.clientHeight), d.copy(f), n.update() })(e) break case r.DOLLY: if (!1 === n.enableZoom) return !(function (e) { y.set(e.clientX, e.clientY), b.subVectors(y, g), b.y > 0 ? S(E()) : b.y < 0 && A(E()), g.copy(y), n.update() })(e) break case r.PAN: if (!1 === n.enablePan) return !(function (e) { v.set(e.clientX, e.clientY), m.subVectors(v, p).multiplyScalar(n.panSpeed), C(m.x, m.y), p.copy(v), n.update() })(e) } })(e)) } function F(e) { !1 !== n.enabled && (e.pointerType, n.dispatchEvent(te), (i = r.NONE), W(e), 0 === w.length && (n.domElement.ownerDocument.removeEventListener('pointermove', B), n.domElement.ownerDocument.removeEventListener('pointerup', F))) } function V(e) { W(e) } function U(e) { !1 === n.enabled || !1 === n.enableZoom || (i !== r.NONE && i !== r.ROTATE) || (e.preventDefault(), n.dispatchEvent(ee), (function (e) { e.deltaY < 0 ? A(E()) : e.deltaY > 0 && S(E()), n.update() })(e), n.dispatchEvent(te)) } function G(e) { !1 !== n.enabled && !1 !== n.enablePan && (function (e) { let t = !1 switch (e.code) { case n.keys.UP: C(0, n.keyPanSpeed), (t = !0) break case n.keys.BOTTOM: C(0, -n.keyPanSpeed), (t = !0) break case n.keys.LEFT: C(n.keyPanSpeed, 0), (t = !0) break case n.keys.RIGHT: C(-n.keyPanSpeed, 0), (t = !0) } t && (e.preventDefault(), n.update()) })(e) } function q(e) { !1 !== n.enabled && e.preventDefault() } function W(e) { delete x[e.pointerId] for (let t = 0; t < w.length; t++) if (w[t].pointerId == e.pointerId) return void w.splice(t, 1) } function K(e) { let t = x[e.pointerId] void 0 === t && ((t = new H.FM8()), (x[e.pointerId] = t)), t.set(e.pageX, e.pageY) } function Z(e) { const t = e.pointerId === w[0].pointerId ? w[1] : w[0] return x[t.pointerId] } n.domElement.addEventListener('contextmenu', q), n.domElement.addEventListener('pointerdown', z), n.domElement.addEventListener('pointercancel', V), n.domElement.addEventListener('wheel', U, { passive: !1 }), this.update() } } const re = { type: 'change' } class ie extends H.pBf { constructor(e, t) { super(), void 0 === t && (console.warn( 'THREE.FlyControls: The second parameter "domElement" is now mandatory.', ), (t = document)), (this.object = e), (this.domElement = t), (this.movementSpeed = 1), (this.rollSpeed = 0.005), (this.dragToLook = !1), (this.autoForward = !1) const n = this, r = 1e-6, i = new H._fP(), o = new H.Pa4() ;(this.tmpQuaternion = new H._fP()), (this.mouseStatus = 0), (this.moveState = { up: 0, down: 0, left: 0, right: 0, forward: 0, back: 0, pitchUp: 0, pitchDown: 0, yawLeft: 0, yawRight: 0, rollLeft: 0, rollRight: 0, }), (this.moveVector = new H.Pa4(0, 0, 0)), (this.rotationVector = new H.Pa4(0, 0, 0)), (this.keydown = function (e) { if (!e.altKey) { switch (e.code) { case 'ShiftLeft': case 'ShiftRight': this.movementSpeedMultiplier = 0.1 break case 'KeyW': this.moveState.forward = 1 break case 'KeyS': this.moveState.back = 1 break case 'KeyA': this.moveState.left = 1 break case 'KeyD': this.moveState.right = 1 break case 'KeyR': this.moveState.up = 1 break case 'KeyF': this.moveState.down = 1 break case 'ArrowUp': this.moveState.pitchUp = 1 break case 'ArrowDown': this.moveState.pitchDown = 1 break case 'ArrowLeft': this.moveState.yawLeft = 1 break case 'ArrowRight': this.moveState.yawRight = 1 break case 'KeyQ': this.moveState.rollLeft = 1 break case 'KeyE': this.moveState.rollRight = 1 } this.updateMovementVector(), this.updateRotationVector() } }), (this.keyup = function (e) { switch (e.code) { case 'ShiftLeft': case 'ShiftRight': this.movementSpeedMultiplier = 1 break case 'KeyW': this.moveState.forward = 0 break case 'KeyS': this.moveState.back = 0 break case 'KeyA': this.moveState.left = 0 break case 'KeyD': this.moveState.right = 0 break case 'KeyR': this.moveState.up = 0 break case 'KeyF': this.moveState.down = 0 break case 'ArrowUp': this.moveState.pitchUp = 0 break case 'ArrowDown': this.moveState.pitchDown = 0 break case 'ArrowLeft': this.moveState.yawLeft = 0 break case 'ArrowRight': this.moveState.yawRight = 0 break case 'KeyQ': this.moveState.rollLeft = 0 break case 'KeyE': this.moveState.rollRight = 0 } this.updateMovementVector(), this.updateRotationVector() }), (this.mousedown = function (e) { if (this.dragToLook) this.mouseStatus++ else { switch (e.button) { case 0: this.moveState.forward = 1 break case 2: this.moveState.back = 1 } this.updateMovementVector() } }), (this.mousemove = function (e) { if (!this.dragToLook || this.mouseStatus > 0) { const t = this.getContainerDimensions(), n = t.size[0] / 2, r = t.size[1] / 2 ;(this.moveState.yawLeft = -(e.pageX - t.offset[0] - n) / n), (this.moveState.pitchDown = (e.pageY - t.offset[1] - r) / r), this.updateRotationVector() } }), (this.mouseup = function (e) { if (this.dragToLook) this.mouseStatus--, (this.moveState.yawLeft = this.moveState.pitchDown = 0) else { switch (e.button) { case 0: this.moveState.forward = 0 break case 2: this.moveState.back = 0 } this.updateMovementVector() } this.updateRotationVector() }), (this.update = function (e) { const t = e * n.movementSpeed, a = e * n.rollSpeed n.object.translateX(n.moveVector.x * t), n.object.translateY(n.moveVector.y * t), n.object.translateZ(n.moveVector.z * t), n.tmpQuaternion .set(n.rotationVector.x * a, n.rotationVector.y * a, n.rotationVector.z * a, 1) .normalize(), n.object.quaternion.multiply(n.tmpQuaternion), (o.distanceToSquared(n.object.position) > r || 8 * (1 - i.dot(n.object.quaternion)) > r) && (n.dispatchEvent(re), i.copy(n.object.quaternion), o.copy(n.object.position)) }), (this.updateMovementVector = function () { const e = this.moveState.forward || (this.autoForward && !this.moveState.back) ? 1 : 0 ;(this.moveVector.x = -this.moveState.left + this.moveState.right), (this.moveVector.y = -this.moveState.down + this.moveState.up), (this.moveVector.z = -e + this.moveState.back) }), (this.updateRotationVector = function () { ;(this.rotationVector.x = -this.moveState.pitchDown + this.moveState.pitchUp), (this.rotationVector.y = -this.moveState.yawRight + this.moveState.yawLeft), (this.rotationVector.z = -this.moveState.rollRight + this.moveState.rollLeft) }), (this.getContainerDimensions = function () { return this.domElement != document ? { size: [this.domElement.offsetWidth, this.domElement.offsetHeight], offset: [this.domElement.offsetLeft, this.domElement.offsetTop], } : { size: [window.innerWidth, window.innerHeight], offset: [0, 0] } }), (this.dispose = function () { this.domElement.removeEventListener('contextmenu', oe), this.domElement.removeEventListener('mousedown', s), this.domElement.removeEventListener('mousemove', a), this.domElement.removeEventListener('mouseup', u), window.removeEventListener('keydown', l), window.removeEventListener('keyup', c) }) const a = this.mousemove.bind(this), s = this.mousedown.bind(this), u = this.mouseup.bind(this), l = this.keydown.bind(this), c = this.keyup.bind(this) this.domElement.addEventListener('contextmenu', oe), this.domElement.addEventListener('mousemove', a), this.domElement.addEventListener('mousedown', s), this.domElement.addEventListener('mouseup', u), window.addEventListener('keydown', l), window.addEventListener('keyup', c), this.updateMovementVector(), this.updateRotationVector() } } function oe(e) { e.preventDefault() } var ae = { uniforms: { tDiffuse: { value: null }, opacity: { value: 1 } }, vertexShader: '\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv;\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}', fragmentShader: '\n\n\t\tuniform float opacity;\n\n\t\tuniform sampler2D tDiffuse;\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvec4 texel = texture2D( tDiffuse, vUv );\n\t\t\tgl_FragColor = opacity * texel;\n\n\t\t}', } class se { constructor() { ;(this.enabled = !0), (this.needsSwap = !0), (this.clear = !1), (this.renderToScreen = !1) } setSize() {} render() { console.error('THREE.Pass: .render() must be implemented in derived pass.') } } const ue = new H.iKG(-1, 1, 1, -1, 0, 1), le = new H.u9r() le.setAttribute('position', new H.a$l([-1, 3, 0, -1, -1, 0, 3, -1, 0], 3)), le.setAttribute('uv', new H.a$l([0, 2, 0, 0, 2, 0], 2)) class ce { constructor(e) { this._mesh = new H.Kj0(le, e) } dispose() { this._mesh.geometry.dispose() } render(e) { e.render(this._mesh, ue) } get material() { return this._mesh.material } set material(e) { this._mesh.material = e } } class de extends se { constructor(e, t) { super(), (this.textureID = void 0 !== t ? t : 'tDiffuse'), e instanceof H.jyz ? ((this.uniforms = e.uniforms), (this.material = e)) : e && ((this.uniforms = H.rDY.clone(e.uniforms)), (this.material = new H.jyz({ defines: Object.assign({}, e.defines), uniforms: this.uniforms, vertexShader: e.vertexShader, fragmentShader: e.fragmentShader, }))), (this.fsQuad = new ce(this.material)) } render(e, t, n) { this.uniforms[this.textureID] && (this.uniforms[this.textureID].value = n.texture), (this.fsQuad.material = this.material), this.renderToScreen ? (e.setRenderTarget(null), this.fsQuad.render(e)) : (e.setRenderTarget(t), this.clear && e.clear(e.autoClearColor, e.autoClearDepth, e.autoClearStencil), this.fsQuad.render(e)) } } class fe extends se { constructor(e, t) { super(), (this.scene = e), (this.camera = t), (this.clear = !0), (this.needsSwap = !1), (this.inverse = !1) } render(e, t, n) { const r = e.getContext(), i = e.state let o, a i.buffers.color.setMask(!1), i.buffers.depth.setMask(!1), i.buffers.color.setLocked(!0), i.buffers.depth.setLocked(!0), this.inverse ? ((o = 0), (a = 1)) : ((o = 1), (a = 0)), i.buffers.stencil.setTest(!0), i.buffers.stencil.setOp(r.REPLACE, r.REPLACE, r.REPLACE), i.buffers.stencil.setFunc(r.ALWAYS, o, 4294967295), i.buffers.stencil.setClear(a), i.buffers.stencil.setLocked(!0), e.setRenderTarget(n), this.clear && e.clear(), e.render(this.scene, this.camera), e.setRenderTarget(t), this.clear && e.clear(), e.render(this.scene, this.camera), i.buffers.color.setLocked(!1), i.buffers.depth.setLocked(!1), i.buffers.stencil.setLocked(!1), i.buffers.stencil.setFunc(r.EQUAL, 1, 4294967295), i.buffers.stencil.setOp(r.KEEP, r.KEEP, r.KEEP), i.buffers.stencil.setLocked(!0) } } class he extends se { constructor() { super(), (this.needsSwap = !1) } render(e) { e.state.buffers.stencil.setLocked(!1), e.state.buffers.stencil.setTest(!1) } } class pe { constructor(e, t) { if (((this.renderer = e), void 0 === t)) { const n = { minFilter: H.wem, magFilter: H.wem, format: H.wk1 }, r = e.getSize(new H.FM8()) ;(this._pixelRatio = e.getPixelRatio()), (this._width = r.width), (this._height = r.height), ((t = new H.dd2( this._width * this._pixelRatio, this._height * this._pixelRatio, n, )).texture.name = 'EffectComposer.rt1') } else (this._pixelRatio = 1), (this._width = t.width), (this._height = t.height) ;(this.renderTarget1 = t), (this.renderTarget2 = t.clone()), (this.renderTarget2.texture.name = 'EffectComposer.rt2'), (this.writeBuffer = this.renderTarget1), (this.readBuffer = this.renderTarget2), (this.renderToScreen = !0), (this.passes = []), void 0 === ae && console.error('THREE.EffectComposer relies on CopyShader'), void 0 === de && console.error('THREE.EffectComposer relies on ShaderPass'), (this.copyPass = new de(ae)), (this.clock = new H.SUY()) } swapBuffers() { const e = this.readBuffer ;(this.readBuffer = this.writeBuffer), (this.writeBuffer = e) } addPass(e) { this.passes.push(e), e.setSize(this._width * this._pixelRatio, this._height * this._pixelRatio) } insertPass(e, t) { this.passes.splice(t, 0, e), e.setSize(this._width * this._pixelRatio, this._height * this._pixelRatio) } removePass(e) { const t = this.passes.indexOf(e) ;-1 !== t && this.passes.splice(t, 1) } isLastEnabledPass(e) { for (let t = e + 1; t < this.passes.length; t++) if (this.passes[t].enabled) return !1 return !0 } render(e) { void 0 === e && (e = this.clock.getDelta()) const t = this.renderer.getRenderTarget() let n = !1 for (let r = 0, i = this.passes.length; r < i; r++) { const t = this.passes[r] if (!1 !== t.enabled) { if ( ((t.renderToScreen = this.renderToScreen && this.isLastEnabledPass(r)), t.render(this.renderer, this.writeBuffer, this.readBuffer, e, n), t.needsSwap) ) { if (n) { const t = this.renderer.getContext(), n = this.renderer.state.buffers.stencil n.setFunc(t.NOTEQUAL, 1, 4294967295), this.copyPass.render(this.renderer, this.writeBuffer, this.readBuffer, e), n.setFunc(t.EQUAL, 1, 4294967295) } this.swapBuffers() } void 0 !== fe && (t instanceof fe ? (n = !0) : t instanceof he && (n = !1)) } } this.renderer.setRenderTarget(t) } reset(e) { if (void 0 === e) { const t = this.renderer.getSize(new H.FM8()) ;(this._pixelRatio = this.renderer.getPixelRatio()), (this._width = t.width), (this._height = t.height), (e = this.renderTarget1.clone()).setSize( this._width * this._pixelRatio, this._height * this._pixelRatio, ) } this.renderTarget1.dispose(), this.renderTarget2.dispose(), (this.renderTarget1 = e), (this.renderTarget2 = e.clone()), (this.writeBuffer = this.renderTarget1), (this.readBuffer = this.renderTarget2) } setSize(e, t) { ;(this._width = e), (this._height = t) const n = this._width * this._pixelRatio, r = this._height * this._pixelRatio this.renderTarget1.setSize(n, r), this.renderTarget2.setSize(n, r) for (let i = 0; i < this.passes.length; i++) this.passes[i].setSize(n, r) } setPixelRatio(e) { ;(this._pixelRatio = e), this.setSize(this._width, this._height) } } new H.iKG(-1, 1, 1, -1, 0, 1) const ve = new H.u9r() ve.setAttribute('position', new H.a$l([-1, 3, 0, -1, -1, 0, 3, -1, 0], 3)), ve.setAttribute('uv', new H.a$l([0, 2, 0, 0, 2, 0], 2)) class me extends se { constructor(e, t, n, r, i) { super(), (this.scene = e), (this.camera = t), (this.overrideMaterial = n), (this.clearColor = r), (this.clearAlpha = void 0 !== i ? i : 0), (this.clear = !0), (this.clearDepth = !1), (this.needsSwap = !1), (this._oldClearColor = new H.Ilk()) } render(e, t, n) { const r = e.autoClear let i, o ;(e.autoClear = !1), void 0 !== this.overrideMaterial && ((o = this.scene.overrideMaterial), (this.scene.overrideMaterial = this.overrideMaterial)), this.clearColor && (e.getClearColor(this._oldClearColor), (i = e.getClearAlpha()), e.setClearColor(this.clearColor, this.clearAlpha)), this.clearDepth && e.clearDepth(), e.setRenderTarget(this.renderToScreen ? null : n), this.clear && e.clear(e.autoClearColor, e.autoClearDepth, e.autoClearStencil), e.render(this.scene, this.camera), this.clearColor && e.setClearColor(this._oldClearColor, i), void 0 !== this.overrideMaterial && (this.scene.overrideMaterial = o), (e.autoClear = r) } } function ge() { return (ge = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var n = arguments[t] for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r]) } return e }).apply(this, arguments) } function ye(e, t) { return (ye = Object.setPrototypeOf || function (e, t) { return (e.__proto__ = t), e })(e, t) } function be(e) { return (be = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) { return e.__proto__ || Object.getPrototypeOf(e) })(e) } function we() { if ('undefined' === typeof Reflect || !Reflect.construct) return !1 if (Reflect.construct.sham) return !1 if ('function' === typeof Proxy) return !0 try { return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})), !0 } catch (e) { return !1 } } function xe(e, t, n) { return (xe = we() ? Reflect.construct : function (e, t, n) { var r = [null] r.push.apply(r, t) var i = new (Function.bind.apply(e, r))() return n && ye(i, n.prototype), i }).apply(null, arguments) } function Ee(e) { var t = 'function' === typeof Map ? new Map() : void 0 return (Ee = function (e) { if (null === e || ((n = e), -1 === Function.toString.call(n).indexOf('[native code]'))) return e var n if ('function' !== typeof e) throw new TypeError('Super expression must either be null or a function') if ('undefined' !== typeof t) { if (t.has(e)) return t.get(e) t.set(e, r) } function r() { return xe(e, arguments, be(this).constructor) } return ( (r.prototype = Object.create(e.prototype, { constructor: { value: r, enumerable: !1, writable: !0, configurable: !0 }, })), ye(r, e) ) })(e) } var ke = (function (e) { var t, n function r(t) { return (function (e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called") return e })( e.call( this, 'An error occurred. See https://github.com/styled-components/polished/blob/main/src/internalHelpers/errors.md#' + t + ' for more information.', ) || this, ) } return ( (n = e), ((t = r).prototype = Object.create(n.prototype)), (t.prototype.constructor = t), ye(t, n), r ) })(Ee(Error)) function _e(e) { return Math.round(255 * e) } function Te(e, t, n) { return _e(e) + ',' + _e(t) + ',' + _e(n) } function Oe(e, t, n, r) { if ((void 0 === r && (r = Te), 0 === t)) return r(n, n, n) var i = (((e % 360) + 360) % 360) / 60, o = (1 - Math.abs(2 * n - 1)) * t, a = o * (1 - Math.abs((i % 2) - 1)), s = 0, u = 0, l = 0 i >= 0 && i < 1 ? ((s = o), (u = a)) : i >= 1 && i < 2 ? ((s = a), (u = o)) : i >= 2 && i < 3 ? ((u = o), (l = a)) : i >= 3 && i < 4 ? ((u = a), (l = o)) : i >= 4 && i < 5 ? ((s = a), (l = o)) : i >= 5 && i < 6 && ((s = o), (l = a)) var c = n - o / 2 return r(s + c, u + c, l + c) } var Ce = { aliceblue: 'f0f8ff', antiquewhite: 'faebd7', aqua: '00ffff', aquamarine: '7fffd4', azure: 'f0ffff', beige: 'f5f5dc', bisque: 'ffe4c4', black: '000', blanchedalmond: 'ffebcd', blue: '0000ff', blueviolet: '8a2be2', brown: 'a52a2a', burlywood: 'deb887', cadetblue: '5f9ea0', chartreuse: '7fff00', chocolate: 'd2691e', coral: 'ff7f50', cornflowerblue: '6495ed', cornsilk: 'fff8dc', crimson: 'dc143c', cyan: '00ffff', darkblue: '00008b', darkcyan: '008b8b', darkgoldenrod: 'b8860b', darkgray: 'a9a9a9', darkgreen: '006400', darkgrey: 'a9a9a9', darkkhaki: 'bdb76b', darkmagenta: '8b008b', darkolivegreen: '556b2f', darkorange: 'ff8c00', darkorchid: '9932cc', darkred: '8b0000', darksalmon: 'e9967a', darkseagreen: '8fbc8f', darkslateblue: '483d8b', darkslategray: '2f4f4f', darkslategrey: '2f4f4f', darkturquoise: '00ced1', darkviolet: '9400d3', deeppink: 'ff1493', deepskyblue: '00bfff', dimgray: '696969', dimgrey: '696969', dodgerblue: '1e90ff', firebrick: 'b22222', floralwhite: 'fffaf0', forestgreen: '228b22', fuchsia: 'ff00ff', gainsboro: 'dcdcdc', ghostwhite: 'f8f8ff', gold: 'ffd700', goldenrod: 'daa520', gray: '808080', green: '008000', greenyellow: 'adff2f', grey: '808080', honeydew: 'f0fff0', hotpink: 'ff69b4', indianred: 'cd5c5c', indigo: '4b0082', ivory: 'fffff0', khaki: 'f0e68c', lavender: 'e6e6fa', lavenderblush: 'fff0f5', lawngreen: '7cfc00', lemonchiffon: 'fffacd', lightblue: 'add8e6', lightcoral: 'f08080', lightcyan: 'e0ffff', lightgoldenrodyellow: 'fafad2', lightgray: 'd3d3d3', lightgreen: '90ee90', lightgrey: 'd3d3d3', lightpink: 'ffb6c1', lightsalmon: 'ffa07a', lightseagreen: '20b2aa', lightskyblue: '87cefa', lightslategray: '789', lightslategrey: '789', lightsteelblue: 'b0c4de', lightyellow: 'ffffe0', lime: '0f0', limegreen: '32cd32', linen: 'faf0e6', magenta: 'f0f', maroon: '800000', mediumaquamarine: '66cdaa', mediumblue: '0000cd', mediumorchid: 'ba55d3', mediumpurple: '9370db', mediumseagreen: '3cb371', mediumslateblue: '7b68ee', mediumspringgreen: '00fa9a', mediumturquoise: '48d1cc', mediumvioletred: 'c71585', midnightblue: '191970', mintcream: 'f5fffa', mistyrose: 'ffe4e1', moccasin: 'ffe4b5', navajowhite: 'ffdead', navy: '000080', oldlace: 'fdf5e6', olive: '808000', olivedrab: '6b8e23', orange: 'ffa500', orangered: 'ff4500', orchid: 'da70d6', palegoldenrod: 'eee8aa', palegreen: '98fb98', paleturquoise: 'afeeee', palevioletred: 'db7093', papayawhip: 'ffefd5', peachpuff: 'ffdab9', peru: 'cd853f', pink: 'ffc0cb', plum: 'dda0dd', powderblue: 'b0e0e6', purple: '800080', rebeccapurple: '639', red: 'f00', rosybrown: 'bc8f8f', royalblue: '4169e1', saddlebrown: '8b4513', salmon: 'fa8072', sandybrown: 'f4a460', seagreen: '2e8b57', seashell: 'fff5ee', sienna: 'a0522d', silver: 'c0c0c0', skyblue: '87ceeb', slateblue: '6a5acd', slategray: '708090', slategrey: '708090', snow: 'fffafa', springgreen: '00ff7f', steelblue: '4682b4', tan: 'd2b48c', teal: '008080', thistle: 'd8bfd8', tomato: 'ff6347', turquoise: '40e0d0', violet: 'ee82ee', wheat: 'f5deb3', white: 'fff', whitesmoke: 'f5f5f5', yellow: 'ff0', yellowgreen: '9acd32', } var Se = /^#[a-fA-F0-9]{6}$/, Ae = /^#[a-fA-F0-9]{8}$/, Pe = /^#[a-fA-F0-9]{3}$/, Me = /^#[a-fA-F0-9]{4}$/, Re = /^rgb\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*\)$/i, je = /^rgba\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*([-+]?[0-9]*[.]?[0-9]+)\s*\)$/i, De = /^hsl\(\s*(\d{0,3}[.]?[0-9]+)\s*,\s*(\d{1,3}[.]?[0-9]?)%\s*,\s*(\d{1,3}[.]?[0-9]?)%\s*\)$/i, Le = /^hsla\(\s*(\d{0,3}[.]?[0-9]+)\s*,\s*(\d{1,3}[.]?[0-9]?)%\s*,\s*(\d{1,3}[.]?[0-9]?)%\s*,\s*([-+]?[0-9]*[.]?[0-9]+)\s*\)$/i function Ne(e) { if ('string' !== typeof e) throw new ke(3) var t = (function (e) { if ('string' !== typeof e) return e var t = e.toLowerCase() return Ce[t] ? '#' + Ce[t] : e })(e) if (t.match(Se)) return { red: parseInt('' + t[1] + t[2], 16), green: parseInt('' + t[3] + t[4], 16), blue: parseInt('' + t[5] + t[6], 16), } if (t.match(Ae)) { var n = parseFloat((parseInt('' + t[7] + t[8], 16) / 255).toFixed(2)) return { red: parseInt('' + t[1] + t[2], 16), green: parseInt('' + t[3] + t[4], 16), blue: parseInt('' + t[5] + t[6], 16), alpha: n, } } if (t.match(Pe)) return { red: parseInt('' + t[1] + t[1], 16), green: parseInt('' + t[2] + t[2], 16), blue: parseInt('' + t[3] + t[3], 16), } if (t.match(Me)) { var r = parseFloat((parseInt('' + t[4] + t[4], 16) / 255).toFixed(2)) return { red: parseInt('' + t[1] + t[1], 16), green: parseInt('' + t[2] + t[2], 16), blue: parseInt('' + t[3] + t[3], 16), alpha: r, } } var i = Re.exec(t) if (i) return { red: parseInt('' + i[1], 10), green: parseInt('' + i[2], 10), blue: parseInt('' + i[3], 10), } var o = je.exec(t.substring(0, 50)) if (o) return { red: parseInt('' + o[1], 10), green: parseInt('' + o[2], 10), blue: parseInt('' + o[3], 10), alpha: parseFloat('' + o[4]), } var a = De.exec(t) if (a) { var s = 'rgb(' + Oe( parseInt('' + a[1], 10), parseInt('' + a[2], 10) / 100, parseInt('' + a[3], 10) / 100, ) + ')', u = Re.exec(s) if (!u) throw new ke(4, t, s) return { red: parseInt('' + u[1], 10), green: parseInt('' + u[2], 10), blue: parseInt('' + u[3], 10), } } var l = Le.exec(t.substring(0, 50)) if (l) { var c = 'rgb(' + Oe( parseInt('' + l[1], 10), parseInt('' + l[2], 10) / 100, parseInt('' + l[3], 10) / 100, ) + ')', d = Re.exec(c) if (!d) throw new ke(4, t, c) return { red: parseInt('' + d[1], 10), green: parseInt('' + d[2], 10), blue: parseInt('' + d[3], 10), alpha: parseFloat('' + l[4]), } } throw new ke(5) } var Ie = function (e) { return 7 === e.length && e[1] === e[2] && e[3] === e[4] && e[5] === e[6] ? '#' + e[1] + e[3] + e[5] : e } function ze(e) { var t = e.toString(16) return 1 === t.length ? '0' + t : t } function He(e, t, n) { if ('number' === typeof e && 'number' === typeof t && 'number' === typeof n) return Ie('#' + ze(e) + ze(t) + ze(n)) if ('object' === typeof e && void 0 === t && void 0 === n) return Ie('#' + ze(e.red) + ze(e.green) + ze(e.blue)) throw new ke(6) } function Be(e, t, n, r) { if ('string' === typeof e && 'number' === typeof t) { var i = Ne(e) return 'rgba(' + i.red + ',' + i.green + ',' + i.blue + ',' + t + ')' } if ( 'number' === typeof e && 'number' === typeof t && 'number' === typeof n && 'number' === typeof r ) return r >= 1 ? He(e, t, n) : 'rgba(' + e + ',' + t + ',' + n + ',' + r + ')' if ('object' === typeof e && void 0 === t && void 0 === n && void 0 === r) return e.alpha >= 1 ? He(e.red, e.green, e.blue) : 'rgba(' + e.red + ',' + e.green + ',' + e.blue + ',' + e.alpha + ')' throw new ke(7) } function Fe(e, t, n) { return function () { var r = n.concat(Array.prototype.slice.call(arguments)) return r.length >= t ? e.apply(this, r) : Fe(e, t, r) } } function Ve(e) { return Fe(e, e.length, []) } function Ue(e, t, n) { return Math.max(e, Math.min(t, n)) } function Ge(e, t) { if ('transparent' === t) return t var n = Ne(t) return Be( ge({}, n, { alpha: Ue( 0, 1, (100 * ('number' === typeof n.alpha ? n.alpha : 1) + 100 * parseFloat(e)) / 100, ), }), ) } var qe = Ve(Ge) var We = r(6194) function Ke(e, t, n) { return ( t in e ? Object.defineProperty(e, t, { value: n, enumerable: !0, configurable: !0, writable: !0, }) : (e[t] = n), e ) } function Ze(e, t) { return ( (function (e) { if (Array.isArray(e)) return e })(e) || (function (e, t) { var n = null == e ? null : ('undefined' !== typeof Symbol && e[Symbol.iterator]) || e['@@iterator'] if (null == n) return var r, i, o = [], a = !0, s = !1 try { for ( n = n.call(e); !(a = (r = n.next()).done) && (o.push(r.value), !t || o.length !== t); a = !0 ); } catch (u) { ;(s = !0), (i = u) } finally { try { a || null == n.return || n.return() } finally { if (s) throw i } } return o })(e, t) || Xe(e, t) || (function () { throw new TypeError( 'Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.', ) })() ) } function $e(e) { return ( (function (e) { if (Array.isArray(e)) return Ye(e) })(e) || (function (e) { if ( ('undefined' !== typeof Symbol && null != e[Symbol.iterator]) || null != e['@@iterator'] ) return Array.from(e) })(e) || Xe(e) || (function () { throw new TypeError( 'Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.', ) })() ) } function Xe(e, t) { if (e) { if ('string' === typeof e) return Ye(e, t) var n = Object.prototype.toString.call(e).slice(8, -1) return ( 'Object' === n && e.constructor && (n = e.constructor.name), 'Map' === n || 'Set' === n ? Array.from(e) : 'Arguments' === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n) ? Ye(e, t) : void 0 ) } } function Ye(e, t) { ;(null == t || t > e.length) && (t = e.length) for (var n = 0, r = new Array(t); n < t; n++) r[n] = e[n] return r } !(function (e, t) { void 0 === t && (t = {}) var n = t.insertAt if (e && 'undefined' !== typeof document) { var r = document.head || document.getElementsByTagName('head')[0], i = document.createElement('style') ;(i.type = 'text/css'), 'top' === n && r.firstChild ? r.insertBefore(i, r.firstChild) : r.appendChild(i), i.styleSheet ? (i.styleSheet.cssText = e) : i.appendChild(document.createTextNode(e)) } })( '.scene-nav-info {\n bottom: 5px;\n width: 100%;\n text-align: center;\n color: slategrey;\n opacity: 0.7;\n font-size: 10px;\n}\n\n.scene-tooltip {\n color: lavender;\n font-size: 15px;\n}\n\n.scene-nav-info, .scene-tooltip {\n position: absolute;\n font-family: sans-serif;\n pointer-events: none;\n}\n\n.scene-container canvas:focus {\n outline: none;\n}', ) var Qe = window.THREE ? window.THREE : { WebGLRenderer: H.CP7, Scene: H.xsS, PerspectiveCamera: H.cPb, Raycaster: H.iMs, TextureLoader: H.dpR, Vector2: H.FM8, Vector3: H.Pa4, Box3: H.ZzF, Color: H.Ilk, Mesh: H.Kj0, SphereGeometry: H.xo$, MeshBasicMaterial: H.vBJ, BackSide: H._Li, EventDispatcher: H.pBf, MOUSE: H.RsA, Quaternion: H._fP, Spherical: H.$V, Clock: H.SUY, }, Je = (0, b.Z)({ props: { width: { default: window.innerWidth, onChange: function (e, t, n) { isNaN(e) && (t.width = n) }, }, height: { default: window.innerHeight, onChange: function (e, t, n) { isNaN(e) && (t.height = n) }, }, backgroundColor: { default: '#000011' }, backgroundImageUrl: {}, onBackgroundImageLoaded: {}, showNavInfo: { default: !0 }, skyRadius: { default: 5e4 }, objects: { default: [] }, enablePointerInteraction: { default: !0, onChange: function (e, t) { ;(t.hoverObj = null), t.toolTipElem && (t.toolTipElem.innerHTML = '') }, triggerUpdate: !1, }, lineHoverPrecision: { default: 1, triggerUpdate: !1 }, hoverOrderComparator: { default: function () { return -1 }, triggerUpdate: !1, }, hoverFilter: { default: function () { return !0 }, triggerUpdate: !1, }, tooltipContent: { triggerUpdate: !1 }, hoverDuringDrag: { default: !1, triggerUpdate: !1 }, clickAfterDrag: { default: !1, triggerUpdate: !1 }, onHover: { default: function () {}, triggerUpdate: !1 }, onClick: { default: function () {}, triggerUpdate: !1 }, onRightClick: { triggerUpdate: !1 }, }, methods: { tick: function (e) { if (e.initialised) { if ( (e.controls.update && e.controls.update(e.clock.getDelta()), e.postProcessingComposer ? e.postProcessingComposer.render() : e.renderer.render(e.scene, e.camera), e.extraRenderers.forEach(function (t) { return t.render(e.scene, e.camera) }), e.enablePointerInteraction) ) { var t = null if (e.hoverDuringDrag || !e.isPointerDragging) { var n = this.intersectingObjects(e.pointerPos.x, e.pointerPos.y) .filter(function (t) { return e.hoverFilter(t.object) }) .sort(function (t, n) { return e.hoverOrderComparator(t.object, n.object) }), r = n.length ? n[0] : null ;(t = r ? r.object : null), (e.intersectionPoint = r ? r.point : null) } t !== e.hoverObj && (e.onHover(t, e.hoverObj), (e.toolTipElem.innerHTML = (t && (0, w.default)(e.tooltipContent)(t)) || ''), (e.hoverObj = t)) } We.ZP.update() } return this }, getPointerPos: function (e) { var t = e.pointerPos return { x: t.x, y: t.y } }, cameraPosition: function (e, t, n, r) { var i = e.camera if (t && e.initialised) { var o = t, a = n || { x: 0, y: 0, z: 0 } if (r) { var s = Object.assign({}, i.position), u = d() new We.ZP.Tween(s) .to(o, r) .easing(We.ZP.Easing.Quadratic.Out) .onUpdate(l) .start(), new We.ZP.Tween(u) .to(a, r / 3) .easing(We.ZP.Easing.Quadratic.Out) .onUpdate(c) .start() } else l(o), c(a) return this } return Object.assign({}, i.position, { lookAt: d() }) function l(e) { var t = e.x, n = e.y, r = e.z void 0 !== t && (i.position.x = t), void 0 !== n && (i.position.y = n), void 0 !== r && (i.position.z = r) } function c(t) { e.controls.target = new Qe.Vector3(t.x, t.y, t.z) } function d() { return Object.assign( new Qe.Vector3(0, 0, -1e3).applyQuaternion(i.quaternion).add(i.position), ) } }, zoomToFit: function (e) { for ( var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0, n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 10, r = arguments.length, i = new Array(r > 3 ? r - 3 : 0), o = 3; o < r; o++ ) i[o - 3] = arguments[o] return this.fitToBbox(this.getBbox.apply(this, i), t, n) }, fitToBbox: function (e, t) { var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 0, r = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : 10, i = e.camera if (t) { var o = new Qe.Vector3(0, 0, 0), a = 2 * Math.max.apply( Math, $e( Object.entries(t).map(function (e) { var t = Ze(e, 2), n = t[0], r = t[1] return Math.max.apply( Math, $e( r.map(function (e) { return Math.abs(o[n] - e) }), ), ) }), ), ), s = (1 - (2 * r) / e.height) * i.fov, u = a / Math.atan((s * Math.PI) / 180), l = u / i.aspect, c = Math.max(u, l) if (c > 0) { var d = o.clone().sub(i.position).normalize().multiplyScalar(-c) this.cameraPosition(d, o, n) } } return this }, getBbox: function (e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : function () { return !0 }, n = new Qe.Box3(new Qe.Vector3(0, 0, 0), new Qe.Vector3(0, 0, 0)), r = e.objects.filter(t) return r.length ? (r.forEach(function (e) { return n.expandByObject(e) }), Object.assign.apply( Object, $e( ['x', 'y', 'z'].map(function (e) { return Ke({}, e, [n.min[e], n.max[e]]) }), ), )) : null }, getScreenCoords: function (e, t, n, r) { var i = new Qe.Vector3(t, n, r) return ( i.project(this.camera()), { x: ((i.x + 1) * e.width) / 2, y: (-(i.y - 1) * e.height) / 2 } ) }, getSceneCoords: function (e, t, n) { var r = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : 0, i = new Qe.Vector2((t / e.width) * 2 - 1, (-n / e.height) * 2 + 1), o = new Qe.Raycaster() return o.setFromCamera(i, e.camera), Object.assign({}, o.ray.at(r, new Qe.Vector3())) }, intersectingObjects: function (e, t, n) { var r = new Qe.Vector2((t / e.width) * 2 - 1, (-n / e.height) * 2 + 1), i = new Qe.Raycaster() return ( (i.params.Line.threshold = e.lineHoverPrecision), i.setFromCamera(r, e.camera), i.intersectObjects(e.objects, !0) ) }, renderer: function (e) { return e.renderer }, scene: function (e) { return e.scene }, camera: function (e) { return e.camera }, postProcessingComposer: function (e) { return e.postProcessingComposer }, controls: function (e) { return e.controls }, tbControls: function (e) { return e.controls }, }, stateInit: function () { return { scene: new Qe.Scene(), camera: new Qe.PerspectiveCamera(), clock: new Qe.Clock(), } }, init: function (e, t) { var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}, r = n.controlType, i = void 0 === r ? 'trackball' : r, o = n.rendererConfig, a = void 0 === o ? {} : o, s = n.extraRenderers, u = void 0 === s ? [] : s, l = n.waitForLoadComplete, c = void 0 === l || l ;(e.innerHTML = ''), e.appendChild((t.container = document.createElement('div'))), (t.container.className = 'scene-container'), (t.container.style.position = 'relative'), t.container.appendChild((t.navInfo = document.createElement('div'))), (t.navInfo.className = 'scene-nav-info'), (t.navInfo.textContent = { orbit: 'Left-click: rotate, Mouse-wheel/middle-click: zoom, Right-click: pan', trackball: 'Left-click: rotate, Mouse-wheel/middle-click: zoom, Right-click: pan', fly: 'WASD: move, R|F: up | down, Q|E: roll, up|down: pitch, left|right: yaw', }[i] || ''), (t.navInfo.style.display = t.showNavInfo ? null : 'none'), (t.toolTipElem = document.createElement('div')), t.toolTipElem.classList.add('scene-tooltip'), t.container.appendChild(t.toolTipElem), (t.pointerPos = new Qe.Vector2()), (t.pointerPos.x = -2), (t.pointerPos.y = -2), ['pointermove', 'pointerdown'].forEach(function (e) { return t.container.addEventListener( e, function (n) { if ( ('pointerdown' === e && (t.isPointerPressed = !0), !t.isPointerDragging && 'pointermove' === n.type && (n.pressure > 0 || t.isPointerPressed) && ('touch' !== n.pointerType || void 0 === n.movementX || [n.movementX, n.movementY].some(function (e) { return Math.abs(e) > 1 })) && (t.isPointerDragging = !0), t.enablePointerInteraction) ) { var r = (function (e) { var t = e.getBoundingClientRect(), n = window.pageXOffset || document.documentElement.scrollLeft, r = window.pageYOffset || document.documentElement.scrollTop return { top: t.top + r, left: t.left + n } })(t.container) ;(t.pointerPos.x = n.pageX - r.left), (t.pointerPos.y = n.pageY - r.top), (t.toolTipElem.style.top = ''.concat(t.pointerPos.y, 'px')), (t.toolTipElem.style.left = ''.concat(t.pointerPos.x, 'px')), (t.toolTipElem.style.transform = 'translate(-'.concat( (t.pointerPos.x / t.width) * 100, '%, 21px)', )) } }, { passive: !0 }, ) }), t.container.addEventListener( 'pointerup', function (e) { ;(t.isPointerPressed = !1), (t.isPointerDragging && ((t.isPointerDragging = !1), !t.clickAfterDrag)) || requestAnimationFrame(function () { 0 === e.button && t.onClick(t.hoverObj || null, e, t.intersectionPoint), 2 === e.button && t.onRightClick && t.onRightClick(t.hoverObj || null, e, t.intersectionPoint) }) }, { passive: !0, capture: !0 }, ), t.container.addEventListener('contextmenu', function (e) { t.onRightClick && e.preventDefault() }), (t.renderer = new Qe.WebGLRenderer(Object.assign({ antialias: !0, alpha: !0 }, a))), t.renderer.setPixelRatio(Math.min(2, window.devicePixelRatio)), t.container.appendChild(t.renderer.domElement), (t.extraRenderers = u), t.extraRenderers.forEach(function (e) { ;(e.domElement.style.position = 'absolute'), (e.domElement.style.top = '0px'), (e.domElement.style.pointerEvents = 'none'), t.container.appendChild(e.domElement) }), (t.postProcessingComposer = new pe(t.renderer)), t.postProcessingComposer.addPass(new me(t.scene, t.camera)), (t.controls = new { trackball: Q, orbit: ne, fly: ie }[i]( t.camera, t.renderer.domElement, )), 'fly' === i && ((t.controls.movementSpeed = 300), (t.controls.rollSpeed = Math.PI / 6), (t.controls.dragToLook = !0)), ('trackball' !== i && 'orbit' !== i) || ((t.controls.minDistance = 0.1), (t.controls.maxDistance = t.skyRadius), t.controls.addEventListener('start', function () { t.controlsEngaged = !0 }), t.controls.addEventListener('change', function () { t.controlsEngaged && (t.controlsDragging = !0) }), t.controls.addEventListener('end', function () { ;(t.controlsEngaged = !1), (t.controlsDragging = !1) })), [t.renderer, t.postProcessingComposer] .concat($e(t.extraRenderers)) .forEach(function (e) { return e.setSize(t.width, t.height) }), (t.camera.aspect = t.width / t.height), t.camera.updateProjectionMatrix(), (t.camera.position.z = 1e3), t.scene.add((t.skysphere = new Qe.Mesh())), (t.skysphere.visible = !1), (t.loadComplete = t.scene.visible = !c), (window.scene = t.scene) }, update: function (e, t) { if ( (e.width && e.height && (t.hasOwnProperty('width') || t.hasOwnProperty('height')) && ((e.container.style.width = e.width), (e.container.style.height = e.height), [e.renderer, e.postProcessingComposer] .concat($e(e.extraRenderers)) .forEach(function (t) { return t.setSize(e.width, e.height) }), (e.camera.aspect = e.width / e.height), e.camera.updateProjectionMatrix()), t.hasOwnProperty('skyRadius') && e.skyRadius && (e.controls.hasOwnProperty('maxDistance') && t.skyRadius && (e.controls.maxDistance = e.skyRadius), (e.camera.far = 2.5 * e.skyRadius), e.camera.updateProjectionMatrix(), (e.skysphere.geometry = new Qe.SphereGeometry(e.skyRadius))), t.hasOwnProperty('backgroundColor')) ) { var n = Ne(e.backgroundColor).alpha void 0 === n && (n = 1), e.renderer.setClearColor(new Qe.Color(qe(1, e.backgroundColor)), n) } function r() { e.loadComplete = e.scene.visible = !0 } t.hasOwnProperty('backgroundImageUrl') && (e.backgroundImageUrl ? new Qe.TextureLoader().load(e.backgroundImageUrl, function (t) { ;(e.skysphere.material = new Qe.MeshBasicMaterial({ map: t, side: Qe.BackSide, })), (e.skysphere.visible = !0), e.onBackgroundImageLoaded && setTimeout(e.onBackgroundImageLoaded), !e.loadComplete && r() }) : ((e.skysphere.visible = !1), (e.skysphere.material.map = null), !e.loadComplete && r())), t.hasOwnProperty('showNavInfo') && (e.navInfo.style.display = e.showNavInfo ? null : 'none'), t.hasOwnProperty('objects') && ((t.objects || []).forEach(function (t) { return e.scene.remove(t) }), e.objects.forEach(function (t) { return e.scene.add(t) })) }, }) function et(e, t) { var n = Object.keys(e) if (Object.getOwnPropertySymbols) { var r = Object.getOwnPropertySymbols(e) t && (r = r.filter(function (t) { return Object.getOwnPropertyDescriptor(e, t).enumerable })), n.push.apply(n, r) } return n } function tt(e) { for (var t = 1; t < arguments.length; t++) { var n = null != arguments[t] ? arguments[t] : {} t % 2 ? et(Object(n), !0).forEach(function (t) { nt(e, t, n[t]) }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(n)) : et(Object(n)).forEach(function (t) { Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(n, t)) }) } return e } function nt(e, t, n) { return ( t in e ? Object.defineProperty(e, t, { value: n, enumerable: !0, configurable: !0, writable: !0, }) : (e[t] = n), e ) } function rt(e) { return ( (function (e) { if (Array.isArray(e)) return it(e) })(e) || (function (e) { if ( ('undefined' !== typeof Symbol && null != e[Symbol.iterator]) || null != e['@@iterator'] ) return Array.from(e) })(e) || (function (e, t) { if (!e) return if ('string' === typeof e) return it(e, t) var n = Object.prototype.toString.call(e).slice(8, -1) 'Object' === n && e.constructor && (n = e.constructor.name) if ('Map' === n || 'Set' === n) return Array.from(e) if ('Arguments' === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return it(e, t) })(e) || (function () { throw new TypeError( 'Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.', ) })() ) } function it(e, t) { ;(null == t || t > e.length) && (t = e.length) for (var n = 0, r = new Array(t); n < t; n++) r[n] = e[n] return r } function ot(e, t) { var n = new t() return { linkProp: function (t) { return { default: n[t](), onChange: function (n, r) { r[e][t](n) }, triggerUpdate: !1, } }, linkMethod: function (t) { return function (n) { for ( var r = n[e], i = arguments.length, o = new Array(i > 1 ? i - 1 : 0), a = 1; a < i; a++ ) o[a - 1] = arguments[a] var s = r[t].apply(r, o) return s === r ? this : s } }, } } !(function (e, t) { void 0 === t && (t = {}) var n = t.insertAt if (e && 'undefined' !== typeof document) { var r = document.head || document.getElementsByTagName('head')[0], i = document.createElement('style') ;(i.type = 'text/css'), 'top' === n && r.firstChild ? r.insertBefore(i, r.firstChild) : r.appendChild(i), i.styleSheet ? (i.styleSheet.cssText = e) : i.appendChild(document.createTextNode(e)) } })( '.graph-info-msg {\n top: 50%;\n width: 100%;\n text-align: center;\n color: lavender;\n opacity: 0.7;\n font-size: 22px;\n position: absolute;\n font-family: Sans-serif;\n}\n\n.scene-container .clickable {\n cursor: pointer;\n}\n\n.scene-container .grabbable {\n cursor: move;\n cursor: grab;\n cursor: -moz-grab;\n cursor: -webkit-grab;\n}\n\n.scene-container .grabbable:active {\n cursor: grabbing;\n cursor: -moz-grabbing;\n cursor: -webkit-grabbing;\n}', ) var at = window.THREE ? window.THREE : { AmbientLight: H.Mig, DirectionalLight: H.Ox3, Vector3: H.Pa4 }, st = ot('forceGraph', Z.default), ut = Object.assign.apply( Object, rt( [ 'jsonUrl', 'graphData', 'numDimensions', 'dagMode', 'dagLevelDistance', 'dagNodeFilter', 'onDagError', 'nodeRelSize', 'nodeId', 'nodeVal', 'nodeResolution', 'nodeColor', 'nodeAutoColorBy', 'nodeOpacity', 'nodeVisibility', 'nodeThreeObject', 'nodeThreeObjectExtend', 'linkSource', 'linkTarget', 'linkVisibility', 'linkColor', 'linkAutoColorBy', 'linkOpacity', 'linkWidth', 'linkResolution', 'linkCurvature', 'linkCurveRotation', 'linkMaterial', 'linkThreeObject', 'linkThreeObjectExtend', 'linkPositionUpdate', 'linkDirectionalArrowLength', 'linkDirectionalArrowColor', 'linkDirectionalArrowRelPos', 'linkDirectionalArrowResolution', 'linkDirectionalParticles', 'linkDirectionalParticleSpeed', 'linkDirectionalParticleWidth', 'linkDirectionalParticleColor', 'linkDirectionalParticleResolution', 'forceEngine', 'd3AlphaDecay', 'd3VelocityDecay', 'd3AlphaMin', 'ngraphPhysics', 'warmupTicks', 'cooldownTicks', 'cooldownTime', 'onEngineTick', 'onEngineStop', ].map(function (e) { return nt({}, e, st.linkProp(e)) }), ), ), lt = Object.assign.apply( Object, rt( ['refresh', 'getGraphBbox', 'd3Force', 'd3ReheatSimulation', 'emitParticle'].map( function (e) { return nt({}, e, st.linkMethod(e)) }, ), ), ), ct = ot('renderObjs', Je), dt = Object.assign.apply( Object, rt( ['width', 'height', 'backgroundColor', 'showNavInfo', 'enablePointerInteraction'].map( function (e) { return nt({}, e, ct.linkProp(e)) }, ), ), ), ft = Object.assign.apply( Object, rt( ['cameraPosition', 'postProcessingComposer'].map(function (e) { return nt({}, e, ct.linkMethod(e)) }), ).concat([ { graph2ScreenCoords: ct.linkMethod('getScreenCoords'), screen2GraphCoords: ct.linkMethod('getSceneCoords'), }, ]), ) function ht(e) { for (var t = e; t && !t.hasOwnProperty('__graphObjType'); ) t = t.parent return t } var pt = (0, b.Z)({ props: tt( tt( { nodeLabel: { default: 'name', triggerUpdate: !1 }, linkLabel: { default: 'name', triggerUpdate: !1 }, linkHoverPrecision: { default: 1, onChange: function (e, t) { return t.renderObjs.lineHoverPrecision(e) }, triggerUpdate: !1, }, enableNavigationControls: { default: !0, onChange: function (e, t) { var n = t.renderObjs.controls() n && (n.enabled = e) }, triggerUpdate: !1, }, enableNodeDrag: { default: !0, triggerUpdate: !1 }, onNodeDrag: { default: function () {}, triggerUpdate: !1 }, onNodeDragEnd: { default: function () {}, triggerUpdate: !1 }, onNodeClick: { triggerUpdate: !1 }, onNodeRightClick: { triggerUpdate: !1 }, onNodeHover: { triggerUpdate: !1 }, onLinkClick: { triggerUpdate: !1 }, onLinkRightClick: { triggerUpdate: !1 }, onLinkHover: { triggerUpdate: !1 }, onBackgroundClick: { triggerUpdate: !1 }, onBackgroundRightClick: { triggerUpdate: !1 }, }, ut, ), dt, ), methods: tt( tt( { zoomToFit: function (e, t, n) { for ( var r, i = arguments.length, o = new Array(i > 3 ? i - 3 : 0), a = 3; a < i; a++ ) o[a - 3] = arguments[a] return ( e.renderObjs.fitToBbox((r = e.forceGraph).getGraphBbox.apply(r, o), t, n), this ) }, pauseAnimation: function (e) { return ( null !== e.animationFrameRequestId && (cancelAnimationFrame(e.animationFrameRequestId), (e.animationFrameRequestId = null)), this ) }, resumeAnimation: function (e) { return null === e.animationFrameRequestId && this._animationCycle(), this }, _animationCycle: function (e) { e.enablePointerInteraction && (this.renderer().domElement.style.cursor = null), e.forceGraph.tickFrame(), e.renderObjs.tick(), (e.animationFrameRequestId = requestAnimationFrame(this._animationCycle)) }, scene: function (e) { return e.renderObjs.scene() }, camera: function (e) { return e.renderObjs.camera() }, renderer: function (e) { return e.renderObjs.renderer() }, controls: function (e) { return e.renderObjs.controls() }, tbControls: function (e) { return e.renderObjs.tbControls() }, _destructor: function () { this.pauseAnimation(), this.graphData({ nodes: [], links: [] }) }, }, lt, ), ft, ), stateInit: function (e) { var t = e.controlType, n = e.rendererConfig, r = e.extraRenderers return { forceGraph: new Z.default(), renderObjs: Je({ controlType: t, rendererConfig: n, extraRenderers: r }), } }, init: function (e, t) { ;(e.innerHTML = ''), e.appendChild((t.container = document.createElement('div'))), (t.container.style.position = 'relative') var n = document.createElement('div') t.container.appendChild(n), t.renderObjs(n) var r, i = t.renderObjs.camera(), o = t.renderObjs.renderer(), a = t.renderObjs.controls() ;(a.enabled = !!t.enableNavigationControls), (t.lastSetCameraZ = i.position.z), t.container.appendChild((r = document.createElement('div'))), (r.className = 'graph-info-msg'), (r.textContent = ''), t.forceGraph .onLoading(function () { r.textContent = 'Loading...' }) .onFinishLoading(function () { r.textContent = '' }) .onUpdate(function () { ;(t.graphData = t.forceGraph.graphData()), 0 === i.position.x && 0 === i.position.y && i.position.z === t.lastSetCameraZ && t.graphData.nodes.length && (i.lookAt(t.forceGraph.position), (t.lastSetCameraZ = i.position.z = 170 * Math.cbrt(t.graphData.nodes.length))) }) .onFinishUpdate(function () { if (t._dragControls) { var e = t.graphData.nodes.find(function (e) { return e.__initialFixedPos && !e.__disposeControlsAfterDrag }) e ? (e.__disposeControlsAfterDrag = !0) : t._dragControls.dispose(), (t._dragControls = void 0) } if (t.enableNodeDrag && t.enablePointerInteraction && 'd3' === t.forceEngine) { var n = (t._dragControls = new K( t.graphData.nodes .map(function (e) { return e.__threeObj }) .filter(function (e) { return e }), i, o.domElement, )) n.addEventListener('dragstart', function (e) { ;(a.enabled = !1), (e.object.__initialPos = e.object.position.clone()), (e.object.__prevPos = e.object.position.clone()) var t = ht(e.object).__data !t.__initialFixedPos && (t.__initialFixedPos = { fx: t.fx, fy: t.fy, fz: t.fz }), !t.__initialPos && (t.__initialPos = { x: t.x, y: t.y, z: t.z }), ['x', 'y', 'z'].forEach(function (e) { return (t['f'.concat(e)] = t[e]) }), o.domElement.classList.add('grabbable') }), n.addEventListener('drag', function (e) { var n = ht(e.object) if (!e.object.hasOwnProperty('__graphObjType')) { var r = e.object.__initialPos, i = e.object.__prevPos, o = e.object.position n.position.add(o.clone().sub(i)), i.copy(o), o.copy(r) } var a = n.__data, s = n.position, u = { x: s.x - a.x, y: s.y - a.y, z: s.z - a.z } ;['x', 'y', 'z'].forEach(function (e) { return (a['f'.concat(e)] = a[e] = s[e]) }), t.forceGraph.d3AlphaTarget(0.3).resetCountdown(), (a.__dragged = !0), t.onNodeDrag(a, u) }), n.addEventListener('dragend', function (e) { delete e.object.__initialPos, delete e.object.__prevPos var r = ht(e.object).__data r.__disposeControlsAfterDrag && (n.dispose(), delete r.__disposeControlsAfterDrag) var i = r.__initialFixedPos, s = r.__initialPos, u = { x: s.x - r.x, y: s.y - r.y, z: s.z - r.z } i && (['x', 'y', 'z'].forEach(function (e) { var t = 'f'.concat(e) void 0 === i[t] && delete r[t] }), delete r.__initialFixedPos, delete r.__initialPos, r.__dragged && (delete r.__dragged, t.onNodeDragEnd(r, u))), t.forceGraph.d3AlphaTarget(0).resetCountdown(), t.enableNavigationControls && ((a.enabled = !0), a.domElement && a.domElement.ownerDocument && a.domElement.ownerDocument.dispatchEvent( new PointerEvent('pointerup', { pointerType: 'touch' }), )), o.domElement.classList.remove('grabbable') }) } }), t.renderObjs .objects([ new at.AmbientLight(12303291), new at.DirectionalLight(16777215, 0.6), t.forceGraph, ]) .hoverOrderComparator(function (e, t) { var n = ht(e) if (!n) return 1 var r = ht(t) if (!r) return -1 var i = function (e) { return 'node' === e.__graphObjType } return i(r) - i(n) }) .tooltipContent(function (e) { var n = ht(e) return ( (n && (0, w.default)(t[''.concat(n.__graphObjType, 'Label')])(n.__data)) || '' ) }) .hoverDuringDrag(!1) .onHover(function (e) { var n = ht(e) if (n !== t.hoverObj) { var r = t.hoverObj ? t.hoverObj.__graphObjType : null, i = t.hoverObj ? t.hoverObj.__data : null, a = n ? n.__graphObjType : null, s = n ? n.__data : null if (r && r !== a) { var u = t['on'.concat('node' === r ? 'Node' : 'Link', 'Hover')] u && u(null, i) } if (a) { var l = t['on'.concat('node' === a ? 'Node' : 'Link', 'Hover')] l && l(s, r === a ? i : null) } o.domElement.classList[ (n && t['on'.concat('node' === a ? 'Node' : 'Link', 'Click')]) || (!n && t.onBackgroundClick) ? 'add' : 'remove' ]('clickable'), (t.hoverObj = n) } }) .clickAfterDrag(!1) .onClick(function (e, n) { var r = ht(e) if (r) { var i = t['on'.concat('node' === r.__graphObjType ? 'Node' : 'Link', 'Click')] i && i(r.__data, n) } else t.onBackgroundClick && t.onBackgroundClick(n) }) .onRightClick(function (e, n) { var r = ht(e) if (r) { var i = t['on'.concat('node' === r.__graphObjType ? 'Node' : 'Link', 'RightClick')] i && i(r.__data, n) } else t.onBackgroundRightClick && t.onBackgroundRightClick(n) }), this._animationCycle() }, }), vt = r(6156) function mt() {} function gt(e) { return null == e ? mt : function () { return this.querySelector(e) } } function yt(e) { return null == e ? [] : Array.isArray(e) ? e : Array.from(e) } function bt() { return [] } function wt(e) { return null == e ? bt : function () { return this.querySelectorAll(e) } } function xt(e) { return function () { return this.matches(e) } } function Et(e) { return function (t) { return t.matches(e) } } var kt = Array.prototype.find function _t() { return this.firstElementChild } var Tt = Array.prototype.filter function Ot() { return Array.from(this.children) } function Ct(e) { return new Array(e.length) } function St(e, t) { ;(this.ownerDocument = e.ownerDocument), (this.namespaceURI = e.namespaceURI), (this._next = null), (this._parent = e), (this.__data__ = t) } function At(e) { return function () { return e } } function Pt(e, t, n, r, i, o) { for (var a, s = 0, u = t.length, l = o.length; s < l; ++s) (a = t[s]) ? ((a.__data__ = o[s]), (r[s] = a)) : (n[s] = new St(e, o[s])) for (; s < u; ++s) (a = t[s]) && (i[s] = a) } function Mt(e, t, n, r, i, o, a) { var s, u, l, c = new Map(), d = t.length, f = o.length, h = new Array(d) for (s = 0; s < d; ++s) (u = t[s]) && ((h[s] = l = a.call(u, u.__data__, s, t) + ''), c.has(l) ? (i[s] = u) : c.set(l, u)) for (s = 0; s < f; ++s) (l = a.call(e, o[s], s, o) + ''), (u = c.get(l)) ? ((r[s] = u), (u.__data__ = o[s]), c.delete(l)) : (n[s] = new St(e, o[s])) for (s = 0; s < d; ++s) (u = t[s]) && c.get(h[s]) === u && (i[s] = u) } function Rt(e) { return e.__data__ } function jt(e) { return 'object' === typeof e && 'length' in e ? e : Array.from(e) } function Dt(e, t) { return e < t ? -1 : e > t ? 1 : e >= t ? 0 : NaN } function Lt(e, t) { var n if ('undefined' === typeof Symbol || null == e[Symbol.iterator]) { if ( Array.isArray(e) || (n = (function (e, t) { if (!e) return if ('string' === typeof e) return Nt(e, t) var n = Object.prototype.toString.call(e).slice(8, -1) 'Object' === n && e.constructor && (n = e.constructor.name) if ('Map' === n || 'Set' === n) return Array.from(e) if ('Arguments' === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return Nt(e, t) })(e)) || (t && e && 'number' === typeof e.length) ) { n && (e = n) var r = 0, i = function () {} return { s: i, n: function () { return r >= e.length ? { done: !0 } : { done: !1, value: e[r++] } }, e: function (e) { throw e }, f: i, } } throw new TypeError( 'Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.', ) } var o, a = !0, s = !1 return { s: function () { n = e[Symbol.iterator]() }, n: function () { var e = n.next() return (a = e.done), e }, e: function (e) { ;(s = !0), (o = e) }, f: function () { try { a || null == n.return || n.return() } finally { if (s) throw o } }, } } function Nt(e, t) { ;(null == t || t > e.length) && (t = e.length) for (var n = 0, r = new Array(t); n < t; n++) r[n] = e[n] return r } St.prototype = { constructor: St, appendChild: function (e) { return this._parent.insertBefore(e, this._next) }, insertBefore: function (e, t) { return this._parent.insertBefore(e, t) }, querySelector: function (e) { return this._parent.querySelector(e) }, querySelectorAll: function (e) { return this._parent.querySelectorAll(e) }, } var It = 'http://www.w3.org/1999/xhtml', zt = { svg: 'http://www.w3.org/2000/svg', xhtml: It, xlink: 'http://www.w3.org/1999/xlink', xml: 'http://www.w3.org/XML/1998/namespace', xmlns: 'http://www.w3.org/2000/xmlns/', } function Ht(e) { var t = (e += ''), n = t.indexOf(':') return ( n >= 0 && 'xmlns' !== (t = e.slice(0, n)) && (e = e.slice(n + 1)), zt.hasOwnProperty(t) ? { space: zt[t], local: e } : e ) } function Bt(e) { return function () { this.removeAttribute(e) } } function Ft(e) { return function () { this.removeAttributeNS(e.space, e.local) } } function Vt(e, t) { return function () { this.setAttribute(e, t) } } function Ut(e, t) { return function () { this.setAttributeNS(e.space, e.local, t) } } function Gt(e, t) { return function () { var n = t.apply(this, arguments) null == n ? this.removeAttribute(e) : this.setAttribute(e, n) } } function qt(e, t) { return function () { var n = t.apply(this, arguments) null == n ? this.removeAttributeNS(e.space, e.local) : this.setAttributeNS(e.space, e.local, n) } } function Wt(e) { return ( (e.ownerDocument && e.ownerDocument.defaultView) || (e.document && e) || e.defaultView ) } function Kt(e) { return function () { this.style.removeProperty(e) } } function Zt(e, t, n) { return function () { this.style.setProperty(e, t, n) } } function $t(e, t, n) { return function () { var r = t.apply(this, arguments) null == r ? this.style.removeProperty(e) : this.style.setProperty(e, r, n) } } function Xt(e, t) { return e.style.getPropertyValue(t) || Wt(e).getComputedStyle(e, null).getPropertyValue(t) } function Yt(e) { return function () { delete this[e] } } function Qt(e, t) { return function () { this[e] = t } } function Jt(e, t) { return function () { var n = t.apply(this, arguments) null == n ? delete this[e] : (this[e] = n) } } function en(e) { return e.trim().split(/^|\s+/) } function tn(e) { return e.classList || new nn(e) } function nn(e) { ;(this._node = e), (this._names = en(e.getAttribute('class') || '')) } function rn(e, t) { for (var n = tn(e), r = -1, i = t.length; ++r < i; ) n.add(t[r]) } function on(e, t) { for (var n = tn(e), r = -1, i = t.length; ++r < i; ) n.remove(t[r]) } function an(e) { return function () { rn(this, e) } } function sn(e) { return function () { on(this, e) } } function un(e, t) { return function () { ;(t.apply(this, arguments) ? rn : on)(this, e) } } function ln() { this.textContent = '' } function cn(e) { return function () { this.textContent = e } } function dn(e) { return function () { var t = e.apply(this, arguments) this.textContent = null == t ? '' : t } } function fn() { this.innerHTML = '' } function hn(e) { return function () { this.innerHTML = e } } function pn(e) { return function () { var t = e.apply(this, arguments) this.innerHTML = null == t ? '' : t } } function vn() { this.nextSibling && this.parentNode.appendChild(this) } function mn() { this.previousSibling && this.parentNode.insertBefore(this, this.parentNode.firstChild) } function gn(e) { return function () { var t = this.ownerDocument, n = this.namespaceURI return n === It && t.documentElement.namespaceURI === It ? t.createElement(e) : t.createElementNS(n, e) } } function yn(e) { return function () { return this.ownerDocument.createElementNS(e.space, e.local) } } function bn(e) { var t = Ht(e) return (t.local ? yn : gn)(t) } function wn() { return null } function xn() { var e = this.parentNode e && e.removeChild(this) } function En() { var e = this.cloneNode(!1), t = this.parentNode return t ? t.insertBefore(e, this.nextSibling) : e } function kn() { var e = this.cloneNode(!0), t = this.parentNode return t ? t.insertBefore(e, this.nextSibling) : e } function _n(e) { return e .trim() .split(/^|\s+/) .map(function (e) { var t = '', n = e.indexOf('.') return n >= 0 && ((t = e.slice(n + 1)), (e = e.slice(0, n))), { type: e, name: t } }) } function Tn(e) { return function () { var t = this.__on if (t) { for (var n, r = 0, i = -1, o = t.length; r < o; ++r) (n = t[r]), (e.type && n.type !== e.type) || n.name !== e.name ? (t[++i] = n) : this.removeEventListener(n.type, n.listener, n.options) ++i ? (t.length = i) : delete this.__on } } } function On(e, t, n) { return function () { var r, i = this.__on, o = (function (e) { return function (t) { e.call(this, t, this.__data__) } })(t) if (i) for (var a = 0, s = i.length; a < s; ++a) if ((r = i[a]).type === e.type && r.name === e.name) return ( this.removeEventListener(r.type, r.listener, r.options), this.addEventListener(r.type, (r.listener = o), (r.options = n)), void (r.value = t) ) this.addEventListener(e.type, o, n), (r = { type: e.type, name: e.name, value: t, listener: o, options: n }), i ? i.push(r) : (this.__on = [r]) } } function Cn(e, t, n) { var r = Wt(e), i = r.CustomEvent 'function' === typeof i ? (i = new i(t, n)) : ((i = r.document.createEvent('Event')), n ? (i.initEvent(t, n.bubbles, n.cancelable), (i.detail = n.detail)) : i.initEvent(t, !1, !1)), e.dispatchEvent(i) } function Sn(e, t) { return function () { return Cn(this, e, t) } } function An(e, t) { return function () { return Cn(this, e, t.apply(this, arguments)) } } nn.prototype = { add: function (e) { this._names.indexOf(e) < 0 && (this._names.push(e), this._node.setAttribute('class', this._names.join(' '))) }, remove: function (e) { var t = this._names.indexOf(e) t >= 0 && (this._names.splice(t, 1), this._node.setAttribute('class', this._names.join(' '))) }, contains: function (e) { return this._names.indexOf(e) >= 0 }, } var Pn = r(7757), Mn = r.n(Pn), Rn = Mn().mark(jn) function jn() { var e, t, n, r, i, o, a return Mn().wrap( function (s) { for (;;) switch ((s.prev = s.next)) { case 0: ;(e = this._groups), (t = 0), (n = e.length) case 1: if (!(t < n)) { s.next = 13 break } ;(r = e[t]), (i = 0), (o = r.length) case 3: if (!(i < o)) { s.next = 10 break } if (!(a = r[i])) { s.next = 7 break } return (s.next = 7), a case 7: ++i, (s.next = 3) break case 10: ++t, (s.next = 1) break case 13: case 'end': return s.stop() } }, Rn, this, ) } var Dn = [null] function Ln(e, t) { ;(this._groups = e), (this._parents = t) } function Nn() { return new Ln([[document.documentElement]], Dn) } Ln.prototype = Nn.prototype = (0, vt.Z)( { constructor: Ln, select: function (e) { 'function' !== typeof e && (e = gt(e)) for (var t = this._groups, n = t.length, r = new Array(n), i = 0; i < n; ++i) for (var o, a, s = t[i], u = s.length, l = (r[i] = new Array(u)), c = 0; c < u; ++c) (o = s[c]) && (a = e.call(o, o.__data__, c, s)) && ('__data__' in o && (a.__data__ = o.__data__), (l[c] = a)) return new Ln(r, this._parents) }, selectAll: function (e) { e = 'function' === typeof e ? (function (e) { return function () { return yt(e.apply(this, arguments)) } })(e) : wt(e) for (var t = this._groups, n = t.length, r = [], i = [], o = 0; o < n; ++o) for (var a, s = t[o], u = s.length, l = 0; l < u; ++l) (a = s[l]) && (r.push(e.call(a, a.__data__, l, s)), i.push(a)) return new Ln(r, i) }, selectChild: function (e) { return this.select( null == e ? _t : (function (e) { return function () { return kt.call(this.children, e) } })('function' === typeof e ? e : Et(e)), ) }, selectChildren: function (e) { return this.selectAll( null == e ? Ot : (function (e) { return function () { return Tt.call(this.children, e) } })('function' === typeof e ? e : Et(e)), ) }, filter: function (e) { 'function' !== typeof e && (e = xt(e)) for (var t = this._groups, n = t.length, r = new Array(n), i = 0; i < n; ++i) for (var o, a = t[i], s = a.length, u = (r[i] = []), l = 0; l < s; ++l) (o = a[l]) && e.call(o, o.__data__, l, a) && u.push(o) return new Ln(r, this._parents) }, data: function (e, t) { if (!arguments.length) return Array.from(this, Rt) var n = t ? Mt : Pt, r = this._parents, i = this._groups 'function' !== typeof e && (e = At(e)) for ( var o = i.length, a = new Array(o), s = new Array(o), u = new Array(o), l = 0; l < o; ++l ) { var c = r[l], d = i[l], f = d.length, h = jt(e.call(c, c && c.__data__, l, r)), p = h.length, v = (s[l] = new Array(p)), m = (a[l] = new Array(p)), g = (u[l] = new Array(f)) n(c, d, v, m, g, h, t) for (var y, b, w = 0, x = 0; w < p; ++w) if ((y = v[w])) { for (w >= x && (x = w + 1); !(b = m[x]) && ++x < p; ); y._next = b || null } } return ((a = new Ln(a, r))._enter = s), (a._exit = u), a }, enter: function () { return new Ln(this._enter || this._groups.map(Ct), this._parents) }, exit: function () { return new Ln(this._exit || this._groups.map(Ct), this._parents) }, join: function (e, t, n) { var r = this.enter(), i = this, o = this.exit() return ( 'function' === typeof e ? (r = e(r)) && (r = r.selection()) : (r = r.append(e + '')), null != t && (i = t(i)) && (i = i.selection()), null == n ? o.remove() : n(o), r && i ? r.merge(i).order() : i ) }, merge: function (e) { for ( var t = e.selection ? e.selection() : e, n = this._groups, r = t._groups, i = n.length, o = r.length, a = Math.min(i, o), s = new Array(i), u = 0; u < a; ++u ) for ( var l, c = n[u], d = r[u], f = c.length, h = (s[u] = new Array(f)), p = 0; p < f; ++p ) (l = c[p] || d[p]) && (h[p] = l) for (; u < i; ++u) s[u] = n[u] return new Ln(s, this._parents) }, selection: function () { return this }, order: function () { for (var e = this._groups, t = -1, n = e.length; ++t < n; ) for (var r, i = e[t], o = i.length - 1, a = i[o]; --o >= 0; ) (r = i[o]) && (a && 4 ^ r.compareDocumentPosition(a) && a.parentNode.insertBefore(r, a), (a = r)) return this }, sort: function (e) { function t(t, n) { return t && n ? e(t.__data__, n.__data__) : !t - !n } e || (e = Dt) for (var n = this._groups, r = n.length, i = new Array(r), o = 0; o < r; ++o) { for (var a, s = n[o], u = s.length, l = (i[o] = new Array(u)), c = 0; c < u; ++c) (a = s[c]) && (l[c] = a) l.sort(t) } return new Ln(i, this._parents).order() }, call: function () { var e = arguments[0] return (arguments[0] = this), e.apply(null, arguments), this }, nodes: function () { return Array.from(this) }, node: function () { for (var e = this._groups, t = 0, n = e.length; t < n; ++t) for (var r = e[t], i = 0, o = r.length; i < o; ++i) { var a = r[i] if (a) return a } return null }, size: function () { var e, t = 0, n = Lt(this) try { for (n.s(); !(e = n.n()).done; ) { e.value ++t } } catch (r) { n.e(r) } finally { n.f() } return t }, empty: function () { return !this.node() }, each: function (e) { for (var t = this._groups, n = 0, r = t.length; n < r; ++n) for (var i, o = t[n], a = 0, s = o.length; a < s; ++a) (i = o[a]) && e.call(i, i.__data__, a, o) return this }, attr: function (e, t) { var n = Ht(e) if (arguments.length < 2) { var r = this.node() return n.local ? r.getAttributeNS(n.space, n.local) : r.getAttribute(n) } return this.each( (null == t ? n.local ? Ft : Bt : 'function' === typeof t ? n.local ? qt : Gt : n.local ? Ut : Vt)(n, t), ) }, style: function (e, t, n) { return arguments.length > 1 ? this.each( (null == t ? Kt : 'function' === typeof t ? $t : Zt)(e, t, null == n ? '' : n), ) : Xt(this.node(), e) }, property: function (e, t) { return arguments.length > 1 ? this.each((null == t ? Yt : 'function' === typeof t ? Jt : Qt)(e, t)) : this.node()[e] }, classed: function (e, t) { var n = en(e + '') if (arguments.length < 2) { for (var r = tn(this.node()), i = -1, o = n.length; ++i < o; ) if (!r.contains(n[i])) return !1 return !0 } return this.each(('function' === typeof t ? un : t ? an : sn)(n, t)) }, text: function (e) { return arguments.length ? this.each(null == e ? ln : ('function' === typeof e ? dn : cn)(e)) : this.node().textContent }, html: function (e) { return arguments.length ? this.each(null == e ? fn : ('function' === typeof e ? pn : hn)(e)) : this.node().innerHTML }, raise: function () { return this.each(vn) }, lower: function () { return this.each(mn) }, append: function (e) { var t = 'function' === typeof e ? e : bn(e) return this.select(function () { return this.appendChild(t.apply(this, arguments)) }) }, insert: function (e, t) { var n = 'function' === typeof e ? e : bn(e), r = null == t ? wn : 'function' === typeof t ? t : gt(t) return this.select(function () { return this.insertBefore(n.apply(this, arguments), r.apply(this, arguments) || null) }) }, remove: function () { return this.each(xn) }, clone: function (e) { return this.select(e ? kn : En) }, datum: function (e) { return arguments.length ? this.property('__data__', e) : this.node().__data__ }, on: function (e, t, n) { var r, i, o = _n(e + ''), a = o.length if (!(arguments.length < 2)) { for (s = t ? On : Tn, r = 0; r < a; ++r) this.each(s(o[r], t, n)) return this } var s = this.node().__on if (s) for (var u, l = 0, c = s.length; l < c; ++l) for (r = 0, u = s[l]; r < a; ++r) if ((i = o[r]).type === u.type && i.name === u.name) return u.value }, dispatch: function (e, t) { return this.each(('function' === typeof t ? An : Sn)(e, t)) }, }, Symbol.iterator, jn, ) var In = Nn function zn(e) { return 'string' === typeof e ? new Ln([[document.querySelector(e)]], [document.documentElement]) : new Ln([[e]], Dn) } var Hn = r(7137), Bn = { passive: !1 }, Fn = { capture: !0, passive: !1 } function Vn(e) { e.stopImmediatePropagation() } function Un(e) { e.preventDefault(), e.stopImmediatePropagation() } function Gn(e) { var t = e.document.documentElement, n = zn(e).on('dragstart.drag', Un, Fn) 'onselectstart' in t ? n.on('selectstart.drag', Un, Fn) : ((t.__noselect = t.style.MozUserSelect), (t.style.MozUserSelect = 'none')) } function qn(e, t) { var n = e.document.documentElement, r = zn(e).on('dragstart.drag', null) t && (r.on('click.drag', Un, Fn), setTimeout(function () { r.on('click.drag', null) }, 0)), 'onselectstart' in n ? r.on('selectstart.drag', null) : ((n.style.MozUserSelect = n.__noselect), delete n.__noselect) } function Wn(e) { return ((e = Math.exp(e)) + 1 / e) / 2 } var Kn = (function e(t, n, r) { function i(e, i) { var o, a, s = e[0], u = e[1], l = e[2], c = i[0], d = i[1], f = i[2], h = c - s, p = d - u, v = h * h + p * p if (v < 1e-12) (a = Math.log(f / l) / t), (o = function (e) { return [s + e * h, u + e * p, l * Math.exp(t * e * a)] }) else { var m = Math.sqrt(v), g = (f * f - l * l + r * v) / (2 * l * n * m), y = (f * f - l * l - r * v) / (2 * f * n * m), b = Math.log(Math.sqrt(g * g + 1) - g), w = Math.log(Math.sqrt(y * y + 1) - y) ;(a = (w - b) / t), (o = function (e) { var r, i = e * a, o = Wn(b), c = (l / (n * m)) * (o * ((r = t * i + b), ((r = Math.exp(2 * r)) - 1) / (r + 1)) - (function (e) { return ((e = Math.exp(e)) - 1 / e) / 2 })(b)) return [s + c * h, u + c * p, (l * o) / Wn(t * i + b)] }) } return (o.duration = (1e3 * a * t) / Math.SQRT2), o } return ( (i.rho = function (t) { var n = Math.max(0.001, +t), r = n * n return e(n, r, r * r) }), i ) })(Math.SQRT2, 2, 4) function Zn(e, t) { if ( ((e = (function (e) { for (var t; (t = e.sourceEvent); ) e = t return e })(e)), void 0 === t && (t = e.currentTarget), t) ) { var n = t.ownerSVGElement || t if (n.createSVGPoint) { var r = n.createSVGPoint() return ( (r.x = e.clientX), (r.y = e.clientY), [(r = r.matrixTransform(t.getScreenCTM().inverse())).x, r.y] ) } if (t.getBoundingClientRect) { var i = t.getBoundingClientRect() return [e.clientX - i.left - t.clientLeft, e.clientY - i.top - t.clientTop] } } return [e.pageX, e.pageY] } var $n = r(513) function Xn(e, t, n) { var r = new $n.B7() return ( (t = null == t ? 0 : +t), r.restart( function (n) { r.stop(), e(n + t) }, t, n, ), r ) } var Yn = (0, Hn.Z)('start', 'end', 'cancel', 'interrupt'), Qn = [] function Jn(e, t, n, r, i, o) { var a = e.__transition if (a) { if (n in a) return } else e.__transition = {} !(function (e, t, n) { var r, i = e.__transition function o(e) { ;(n.state = 1), n.timer.restart(a, n.delay, n.time), n.delay <= e && a(e - n.delay) } function a(o) { var l, c, d, f if (1 !== n.state) return u() for (l in i) if ((f = i[l]).name === n.name) { if (3 === f.state) return Xn(a) 4 === f.state ? ((f.state = 6), f.timer.stop(), f.on.call('interrupt', e, e.__data__, f.index, f.group), delete i[l]) : +l < t && ((f.state = 6), f.timer.stop(), f.on.call('cancel', e, e.__data__, f.index, f.group), delete i[l]) } if ( (Xn(function () { 3 === n.state && ((n.state = 4), n.timer.restart(s, n.delay, n.time), s(o)) }), (n.state = 2), n.on.call('start', e, e.__data__, n.index, n.group), 2 === n.state) ) { for (n.state = 3, r = new Array((d = n.tween.length)), l = 0, c = -1; l < d; ++l) (f = n.tween[l].value.call(e, e.__data__, n.index, n.group)) && (r[++c] = f) r.length = c + 1 } } function s(t) { for ( var i = t < n.duration ? n.ease.call(null, t / n.duration) : (n.timer.restart(u), (n.state = 5), 1), o = -1, a = r.length; ++o < a; ) r[o].call(e, i) 5 === n.state && (n.on.call('end', e, e.__data__, n.index, n.group), u()) } function u() { for (var r in ((n.state = 6), n.timer.stop(), delete i[t], i)) return delete e.__transition } ;(i[t] = n), (n.timer = (0, $n.HT)(o, 0, n.time)) })(e, n, { name: t, index: r, group: i, on: Yn, tween: Qn, time: o.time, delay: o.delay, duration: o.duration, ease: o.ease, timer: null, state: 0, }) } function er(e, t) { var n = nr(e, t) if (n.state > 0) throw new Error('too late; already scheduled') return n } function tr(e, t) { var n = nr(e, t) if (n.state > 3) throw new Error('too late; already running') return n } function nr(e, t) { var n = e.__transition if (!n || !(n = n[t])) throw new Error('transition not found') return n } function rr(e, t) { var n, r, i, o = e.__transition, a = !0 if (o) { for (i in ((t = null == t ? null : t + ''), o)) (n = o[i]).name === t ? ((r = n.state > 2 && n.state < 5), (n.state = 6), n.timer.stop(), n.on.call(r ? 'interrupt' : 'cancel', e, e.__data__, n.index, n.group), delete o[i]) : (a = !1) a && delete e.__transition } } var ir, or = r(6033), ar = 180 / Math.PI, sr = { translateX: 0, translateY: 0, rotate: 0, skewX: 0, scaleX: 1, scaleY: 1 } function ur(e, t, n, r, i, o) { var a, s, u return ( (a = Math.sqrt(e * e + t * t)) && ((e /= a), (t /= a)), (u = e * n + t * r) && ((n -= e * u), (r -= t * u)), (s = Math.sqrt(n * n + r * r)) && ((n /= s), (r /= s), (u /= s)), e * r < t * n && ((e = -e), (t = -t), (u = -u), (a = -a)), { translateX: i, translateY: o, rotate: Math.atan2(t, e) * ar, skewX: Math.atan(u) * ar, scaleX: a, scaleY: s, } ) } function lr(e, t, n, r) { function i(e) { return e.length ? e.pop() + ' ' : '' } return function (o, a) { var s = [], u = [] return ( (o = e(o)), (a = e(a)), (function (e, r, i, o, a, s) { if (e !== i || r !== o) { var u = a.push('translate(', null, t, null, n) s.push({ i: u - 4, x: (0, or.Z)(e, i) }, { i: u - 2, x: (0, or.Z)(r, o) }) } else (i || o) && a.push('translate(' + i + t + o + n) })(o.translateX, o.translateY, a.translateX, a.translateY, s, u), (function (e, t, n, o) { e !== t ? (e - t > 180 ? (t += 360) : t - e > 180 && (e += 360), o.push({ i: n.push(i(n) + 'rotate(', null, r) - 2, x: (0, or.Z)(e, t) })) : t && n.push(i(n) + 'rotate(' + t + r) })(o.rotate, a.rotate, s, u), (function (e, t, n, o) { e !== t ? o.push({ i: n.push(i(n) + 'skewX(', null, r) - 2, x: (0, or.Z)(e, t) }) : t && n.push(i(n) + 'skewX(' + t + r) })(o.skewX, a.skewX, s, u), (function (e, t, n, r, o, a) { if (e !== n || t !== r) { var s = o.push(i(o) + 'scale(', null, ',', null, ')') a.push({ i: s - 4, x: (0, or.Z)(e, n) }, { i: s - 2, x: (0, or.Z)(t, r) }) } else (1 === n && 1 === r) || o.push(i(o) + 'scale(' + n + ',' + r + ')') })(o.scaleX, o.scaleY, a.scaleX, a.scaleY, s, u), (o = a = null), function (e) { for (var t, n = -1, r = u.length; ++n < r; ) s[(t = u[n]).i] = t.x(e) return s.join('') } ) } } var cr = lr( function (e) { var t = new ('function' === typeof DOMMatrix ? DOMMatrix : WebKitCSSMatrix)(e + '') return t.isIdentity ? sr : ur(t.a, t.b, t.c, t.d, t.e, t.f) }, 'px, ', 'px)', 'deg)', ), dr = lr( function (e) { return null == e ? sr : (ir || (ir = document.createElementNS('http://www.w3.org/2000/svg', 'g')), ir.setAttribute('transform', e), (e = ir.transform.baseVal.consolidate()) ? ur((e = e.matrix).a, e.b, e.c, e.d, e.e, e.f) : sr) }, ', ', ')', ')', ) function fr(e, t) { var n, r return function () { var i = tr(this, e), o = i.tween if (o !== n) for (var a = 0, s = (r = n = o).length; a < s; ++a) if (r[a].name === t) { ;(r = r.slice()).splice(a, 1) break } i.tween = r } } function hr(e, t, n) { var r, i if ('function' !== typeof n) throw new Error() return function () { var o = tr(this, e), a = o.tween if (a !== r) { i = (r = a).slice() for (var s = { name: t, value: n }, u = 0, l = i.length; u < l; ++u) if (i[u].name === t) { i[u] = s break } u === l && i.push(s) } o.tween = i } } function pr(e, t, n) { var r = e._id return ( e.each(function () { var e = tr(this, r) ;(e.value || (e.value = {}))[t] = n.apply(this, arguments) }), function (e) { return nr(e, r).value[t] } ) } var vr = r(6374), mr = r(3028), gr = r(370) function yr(e, t) { var n return ( 'number' === typeof t ? or.Z : t instanceof vr.ZP ? mr.ZP : (n = (0, vr.ZP)(t)) ? ((t = n), mr.ZP) : gr.Z )(e, t) } function br(e) { return function () { this.removeAttribute(e) } } function wr(e) { return function () { this.removeAttributeNS(e.space, e.local) } } function xr(e, t, n) { var r, i, o = n + '' return function () { var a = this.getAttribute(e) return a === o ? null : a === r ? i : (i = t((r = a), n)) } } function Er(e, t, n) { var r, i, o = n + '' return function () { var a = this.getAttributeNS(e.space, e.local) return a === o ? null : a === r ? i : (i = t((r = a), n)) } } function kr(e, t, n) { var r, i, o return function () { var a, s, u = n(this) if (null != u) return (a = this.getAttribute(e)) === (s = u + '') ? null : a === r && s === i ? o : ((i = s), (o = t((r = a), u))) this.removeAttribute(e) } } function _r(e, t, n) { var r, i, o return function () { var a, s, u = n(this) if (null != u) return (a = this.getAttributeNS(e.space, e.local)) === (s = u + '') ? null : a === r && s === i ? o : ((i = s), (o = t((r = a), u))) this.removeAttributeNS(e.space, e.local) } } function Tr(e, t) { return function (n) { this.setAttribute(e, t.call(this, n)) } } function Or(e, t) { return function (n) { this.setAttributeNS(e.space, e.local, t.call(this, n)) } } function Cr(e, t) { var n, r function i() { var i = t.apply(this, arguments) return i !== r && (n = (r = i) && Or(e, i)), n } return (i._value = t), i } function Sr(e, t) { var n, r function i() { var i = t.apply(this, arguments) return i !== r && (n = (r = i) && Tr(e, i)), n } return (i._value = t), i } function Ar(e, t) { return function () { er(this, e).delay = +t.apply(this, arguments) } } function Pr(e, t) { return ( (t = +t), function () { er(this, e).delay = t } ) } function Mr(e, t) { return function () { tr(this, e).duration = +t.apply(this, arguments) } } function Rr(e, t) { return ( (t = +t), function () { tr(this, e).duration = t } ) } function jr(e, t) { if ('function' !== typeof t) throw new Error() return function () { tr(this, e).ease = t } } function Dr(e, t, n) { var r, i, o = (function (e) { return (e + '') .trim() .split(/^|\s+/) .every(function (e) { var t = e.indexOf('.') return t >= 0 && (e = e.slice(0, t)), !e || 'start' === e }) })(t) ? er : tr return function () { var a = o(this, e), s = a.on s !== r && (i = (r = s).copy()).on(t, n), (a.on = i) } } var Lr = In.prototype.constructor function Nr(e) { return function () { this.style.removeProperty(e) } } function Ir(e, t, n) { return function (r) { this.style.setProperty(e, t.call(this, r), n) } } function zr(e, t, n) { var r, i function o() { var o = t.apply(this, arguments) return o !== i && (r = (i = o) && Ir(e, o, n)), r } return (o._value = t), o } function Hr(e) { return function (t) { this.textContent = e.call(this, t) } } function Br(e) { var t, n function r() { var r = e.apply(this, arguments) return r !== n && (t = (n = r) && Hr(r)), t } return (r._value = e), r } var Fr = 0 function Vr(e, t, n, r) { ;(this._groups = e), (this._parents = t), (this._name = n), (this._id = r) } function Ur() { return ++Fr } var Gr = In.prototype Vr.prototype = function (e) { return In().transition(e) }.prototype = (0, vt.Z)( { constructor: Vr, select: function (e) { var t = this._name, n = this._id 'function' !== typeof e && (e = gt(e)) for (var r = this._groups, i = r.length, o = new Array(i), a = 0; a < i; ++a) for (var s, u, l = r[a], c = l.length, d = (o[a] = new Array(c)), f = 0; f < c; ++f) (s = l[f]) && (u = e.call(s, s.__data__, f, l)) && ('__data__' in s && (u.__data__ = s.__data__), (d[f] = u), Jn(d[f], t, n, f, d, nr(s, n))) return new Vr(o, this._parents, t, n) }, selectAll: function (e) { var t = this._name, n = this._id 'function' !== typeof e && (e = wt(e)) for (var r = this._groups, i = r.length, o = [], a = [], s = 0; s < i; ++s) for (var u, l = r[s], c = l.length, d = 0; d < c; ++d) if ((u = l[d])) { for ( var f, h = e.call(u, u.__data__, d, l), p = nr(u, n), v = 0, m = h.length; v < m; ++v ) (f = h[v]) && Jn(f, t, n, v, h, p) o.push(h), a.push(u) } return new Vr(o, a, t, n) }, selectChild: Gr.selectChild, selectChildren: Gr.selectChildren, filter: function (e) { 'function' !== typeof e && (e = xt(e)) for (var t = this._groups, n = t.length, r = new Array(n), i = 0; i < n; ++i) for (var o, a = t[i], s = a.length, u = (r[i] = []), l = 0; l < s; ++l) (o = a[l]) && e.call(o, o.__data__, l, a) && u.push(o) return new Vr(r, this._parents, this._name, this._id) }, merge: function (e) { if (e._id !== this._id) throw new Error() for ( var t = this._groups, n = e._groups, r = t.length, i = n.length, o = Math.min(r, i), a = new Array(r), s = 0; s < o; ++s ) for ( var u, l = t[s], c = n[s], d = l.length, f = (a[s] = new Array(d)), h = 0; h < d; ++h ) (u = l[h] || c[h]) && (f[h] = u) for (; s < r; ++s) a[s] = t[s] return new Vr(a, this._parents, this._name, this._id) }, selection: function () { return new Lr(this._groups, this._parents) }, transition: function () { for ( var e = this._name, t = this._id, n = Ur(), r = this._groups, i = r.length, o = 0; o < i; ++o ) for (var a, s = r[o], u = s.length, l = 0; l < u; ++l) if ((a = s[l])) { var c = nr(a, t) Jn(a, e, n, l, s, { time: c.time + c.delay + c.duration, delay: 0, duration: c.duration, ease: c.ease, }) } return new Vr(r, this._parents, e, n) }, call: Gr.call, nodes: Gr.nodes, node: Gr.node, size: Gr.size, empty: Gr.empty, each: Gr.each, on: function (e, t) { var n = this._id return arguments.length < 2 ? nr(this.node(), n).on.on(e) : this.each(Dr(n, e, t)) }, attr: function (e, t) { var n = Ht(e), r = 'transform' === n ? dr : yr return this.attrTween( e, 'function' === typeof t ? (n.local ? _r : kr)(n, r, pr(this, 'attr.' + e, t)) : null == t ? (n.local ? wr : br)(n) : (n.local ? Er : xr)(n, r, t), ) }, attrTween: function (e, t) { var n = 'attr.' + e if (arguments.length < 2) return (n = this.tween(n)) && n._value if (null == t) return this.tween(n, null) if ('function' !== typeof t) throw new Error() var r = Ht(e) return this.tween(n, (r.local ? Cr : Sr)(r, t)) }, style: function (e, t, n) { var r = 'transform' === (e += '') ? cr : yr return null == t ? this.styleTween( e, (function (e, t) { var n, r, i return function () { var o = Xt(this, e), a = (this.style.removeProperty(e), Xt(this, e)) return o === a ? null : o === n && a === r ? i : (i = t((n = o), (r = a))) } })(e, r), ).on('end.style.' + e, Nr(e)) : 'function' === typeof t ? this.styleTween( e, (function (e, t, n) { var r, i, o return function () { var a = Xt(this, e), s = n(this), u = s + '' return ( null == s && (this.style.removeProperty(e), (u = s = Xt(this, e))), a === u ? null : a === r && u === i ? o : ((i = u), (o = t((r = a), s))) ) } })(e, r, pr(this, 'style.' + e, t)), ).each( (function (e, t) { var n, r, i, o, a = 'style.' + t, s = 'end.' + a return function () { var u = tr(this, e), l = u.on, c = null == u.value[a] ? o || (o = Nr(t)) : void 0 ;(l === n && i === c) || (r = (n = l).copy()).on(s, (i = c)), (u.on = r) } })(this._id, e), ) : this.styleTween( e, (function (e, t, n) { var r, i, o = n + '' return function () { var a = Xt(this, e) return a === o ? null : a === r ? i : (i = t((r = a), n)) } })(e, r, t), n, ).on('end.style.' + e, null) }, styleTween: function (e, t, n) { var r = 'style.' + (e += '') if (arguments.length < 2) return (r = this.tween(r)) && r._value if (null == t) return this.tween(r, null) if ('function' !== typeof t) throw new Error() return this.tween(r, zr(e, t, null == n ? '' : n)) }, text: function (e) { return this.tween( 'text', 'function' === typeof e ? (function (e) { return function () { var t = e(this) this.textContent = null == t ? '' : t } })(pr(this, 'text', e)) : (function (e) { return function () { this.textContent = e } })(null == e ? '' : e + ''), ) }, textTween: function (e) { var t = 'text' if (arguments.length < 1) return (t = this.tween(t)) && t._value if (null == e) return this.tween(t, null) if ('function' !== typeof e) throw new Error() return this.tween(t, Br(e)) }, remove: function () { return this.on( 'end.remove', (function (e) { return function () { var t = this.parentNode for (var n in this.__transition) if (+n !== e) return t && t.removeChild(this) } })(this._id), ) }, tween: function (e, t) { var n = this._id if (((e += ''), arguments.length < 2)) { for (var r, i = nr(this.node(), n).tween, o = 0, a = i.length; o < a; ++o) if ((r = i[o]).name === e) return r.value return null } return this.each((null == t ? fr : hr)(n, e, t)) }, delay: function (e) { var t = this._id return arguments.length ? this.each(('function' === typeof e ? Ar : Pr)(t, e)) : nr(this.node(), t).delay }, duration: function (e) { var t = this._id return arguments.length ? this.each(('function' === typeof e ? Mr : Rr)(t, e)) : nr(this.node(), t).duration }, ease: function (e) { var t = this._id return arguments.length ? this.each(jr(t, e)) : nr(this.node(), t).ease }, easeVarying: function (e) { if ('function' !== typeof e) throw new Error() return this.each( (function (e, t) { return function () { var n = t.apply(this, arguments) if ('function' !== typeof n) throw new Error() tr(this, e).ease = n } })(this._id, e), ) }, end: function () { var e, t, n = this, r = n._id, i = n.size() return new Promise(function (o, a) { var s = { value: a }, u = { value: function () { 0 === --i && o() }, } n.each(function () { var n = tr(this, r), i = n.on i !== e && ((t = (e = i).copy())._.cancel.push(s), t._.interrupt.push(s), t._.end.push(u)), (n.on = t) }), 0 === i && o() }) }, }, Symbol.iterator, Gr[Symbol.iterator], ) var qr = { time: null, delay: 0, duration: 250, ease: function (e) { return ((e *= 2) <= 1 ? e * e * e : (e -= 2) * e * e + 2) / 2 }, } function Wr(e, t) { for (var n; !(n = e.__transition) || !(n = n[t]); ) if (!(e = e.parentNode)) throw new Error('transition '.concat(t, ' not found')) return n } ;(In.prototype.interrupt = function (e) { return this.each(function () { rr(this, e) }) }), (In.prototype.transition = function (e) { var t, n e instanceof Vr ? ((t = e._id), (e = e._name)) : ((t = Ur()), ((n = qr).time = (0, $n.zO)()), (e = null == e ? null : e + '')) for (var r = this._groups, i = r.length, o = 0; o < i; ++o) for (var a, s = r[o], u = s.length, l = 0; l < u; ++l) (a = s[l]) && Jn(a, e, t, l, s, n || Wr(a, t)) return new Vr(r, this._parents, e, t) }) var Kr = function (e) { return function () { return e } } function Zr(e, t) { var n = t.sourceEvent, r = t.target, i = t.transform, o = t.dispatch Object.defineProperties(this, { type: { value: e, enumerable: !0, configurable: !0 }, sourceEvent: { value: n, enumerable: !0, configurable: !0 }, target: { value: r, enumerable: !0, configurable: !0 }, transform: { value: i, enumerable: !0, configurable: !0 }, _: { value: o }, }) } function $r(e, t, n) { ;(this.k = e), (this.x = t), (this.y = n) } $r.prototype = { constructor: $r, scale: function (e) { return 1 === e ? this : new $r(this.k * e, this.x, this.y) }, translate: function (e, t) { return (0 === e) & (0 === t) ? this : new $r(this.k, this.x + this.k * e, this.y + this.k * t) }, apply: function (e) { return [e[0] * this.k + this.x, e[1] * this.k + this.y] }, applyX: function (e) { return e * this.k + this.x }, applyY: function (e) { return e * this.k + this.y }, invert: function (e) { return [(e[0] - this.x) / this.k, (e[1] - this.y) / this.k] }, invertX: function (e) { return (e - this.x) / this.k }, invertY: function (e) { return (e - this.y) / this.k }, rescaleX: function (e) { return e.copy().domain(e.range().map(this.invertX, this).map(e.invert, e)) }, rescaleY: function (e) { return e.copy().domain(e.range().map(this.invertY, this).map(e.invert, e)) }, toString: function () { return 'translate(' + this.x + ',' + this.y + ') scale(' + this.k + ')' }, } var Xr = new $r(1, 0, 0) function Yr(e) { for (; !e.__zoom; ) if (!(e = e.parentNode)) return Xr return e.__zoom } function Qr(e) { e.stopImmediatePropagation() } function Jr(e) { e.preventDefault(), e.stopImmediatePropagation() } function ei(e) { return (!e.ctrlKey || 'wheel' === e.type) && !e.button } function ti() { var e = this return e instanceof SVGElement ? (e = e.ownerSVGElement || e).hasAttribute('viewBox') ? [ [(e = e.viewBox.baseVal).x, e.y], [e.x + e.width, e.y + e.height], ] : [ [0, 0], [e.width.baseVal.value, e.height.baseVal.value], ] : [ [0, 0], [e.clientWidth, e.clientHeight], ] } function ni() { return this.__zoom || Xr } function ri(e) { return ( -e.deltaY * (1 === e.deltaMode ? 0.05 : e.deltaMode ? 1 : 0.002) * (e.ctrlKey ? 10 : 1) ) } function ii() { return navigator.maxTouchPoints || 'ontouchstart' in this } function oi(e, t, n) { var r = e.invertX(t[0][0]) - n[0][0], i = e.invertX(t[1][0]) - n[1][0], o = e.invertY(t[0][1]) - n[0][1], a = e.invertY(t[1][1]) - n[1][1] return e.translate( i > r ? (r + i) / 2 : Math.min(0, r) || Math.max(0, i), a > o ? (o + a) / 2 : Math.min(0, o) || Math.max(0, a), ) } function ai() { var e, t, n, r = ei, i = ti, o = oi, a = ri, s = ii, u = [0, 1 / 0], l = [ [-1 / 0, -1 / 0], [1 / 0, 1 / 0], ], c = 250, d = Kn, f = (0, Hn.Z)('start', 'zoom', 'end'), h = 500, p = 0, v = 10 function m(e) { e.property('__zoom', ni) .on('wheel.zoom', k, { passive: !1 }) .on('mousedown.zoom', _) .on('dblclick.zoom', T) .filter(s) .on('touchstart.zoom', O) .on('touchmove.zoom', C) .on('touchend.zoom touchcancel.zoom', S) .style('-webkit-tap-highlight-color', 'rgba(0,0,0,0)') } function g(e, t) { return (t = Math.max(u[0], Math.min(u[1], t))) === e.k ? e : new $r(t, e.x, e.y) } function y(e, t, n) { var r = t[0] - n[0] * e.k, i = t[1] - n[1] * e.k return r === e.x && i === e.y ? e : new $r(e.k, r, i) } function b(e) { return [(+e[0][0] + +e[1][0]) / 2, (+e[0][1] + +e[1][1]) / 2] } function w(e, t, n, r) { e.on('start.zoom', function () { x(this, arguments).event(r).start() }) .on('interrupt.zoom end.zoom', function () { x(this, arguments).event(r).end() }) .tween('zoom', function () { var e = this, o = arguments, a = x(e, o).event(r), s = i.apply(e, o), u = null == n ? b(s) : 'function' === typeof n ? n.apply(e, o) : n, l = Math.max(s[1][0] - s[0][0], s[1][1] - s[0][1]), c = e.__zoom, f = 'function' === typeof t ? t.apply(e, o) : t, h = d(c.invert(u).concat(l / c.k), f.invert(u).concat(l / f.k)) return function (e) { if (1 === e) e = f else { var t = h(e), n = l / t[2] e = new $r(n, u[0] - t[0] * n, u[1] - t[1] * n) } a.zoom(null, e) } }) } function x(e, t, n) { return (!n && e.__zooming) || new E(e, t) } function E(e, t) { ;(this.that = e), (this.args = t), (this.active = 0), (this.sourceEvent = null), (this.extent = i.apply(e, t)), (this.taps = 0) } function k(e) { for (var t = arguments.length, n = new Array(t > 1 ? t - 1 : 0), i = 1; i < t; i++) n[i - 1] = arguments[i] if (r.apply(this, arguments)) { var s = x(this, n).event(e), c = this.__zoom, d = Math.max(u[0], Math.min(u[1], c.k * Math.pow(2, a.apply(this, arguments)))), f = Zn(e) if (s.wheel) (s.mouse[0][0] === f[0] && s.mouse[0][1] === f[1]) || (s.mouse[1] = c.invert((s.mouse[0] = f))), clearTimeout(s.wheel) else { if (c.k === d) return ;(s.mouse = [f, c.invert(f)]), rr(this), s.start() } Jr(e), (s.wheel = setTimeout(h, 150)), s.zoom('mouse', o(y(g(c, d), s.mouse[0], s.mouse[1]), s.extent, l)) } function h() { ;(s.wheel = null), s.end() } } function _(e) { for (var t = arguments.length, i = new Array(t > 1 ? t - 1 : 0), a = 1; a < t; a++) i[a - 1] = arguments[a] if (!n && r.apply(this, arguments)) { var s = e.currentTarget, u = x(this, i, !0).event(e), c = zn(e.view).on('mousemove.zoom', v, !0).on('mouseup.zoom', m, !0), d = Zn(e, s), f = e.clientX, h = e.clientY Gn(e.view), Qr(e), (u.mouse = [d, this.__zoom.invert(d)]), rr(this), u.start() } function v(e) { if ((Jr(e), !u.moved)) { var t = e.clientX - f, n = e.clientY - h u.moved = t * t + n * n > p } u.event(e).zoom( 'mouse', o(y(u.that.__zoom, (u.mouse[0] = Zn(e, s)), u.mouse[1]), u.extent, l), ) } function m(e) { c.on('mousemove.zoom mouseup.zoom', null), qn(e.view, u.moved), Jr(e), u.event(e).end() } } function T(e) { for (var t = arguments.length, n = new Array(t > 1 ? t - 1 : 0), a = 1; a < t; a++) n[a - 1] = arguments[a] if (r.apply(this, arguments)) { var s = this.__zoom, u = Zn(e.changedTouches ? e.changedTouches[0] : e, this), d = s.invert(u), f = s.k * (e.shiftKey ? 0.5 : 2), h = o(y(g(s, f), u, d), i.apply(this, n), l) Jr(e), c > 0 ? zn(this).transition().duration(c).call(w, h, u, e) : zn(this).call(m.transform, h, u, e) } } function O(n) { for (var i = arguments.length, o = new Array(i > 1 ? i - 1 : 0), a = 1; a < i; a++) o[a - 1] = arguments[a] if (r.apply(this, arguments)) { var s, u, l, c, d = n.touches, f = d.length, p = x(this, o, n.changedTouches.length === f).event(n) for (Qr(n), u = 0; u < f; ++u) (c = [(c = Zn((l = d[u]), this)), this.__zoom.invert(c), l.identifier]), p.touch0 ? p.touch1 || p.touch0[2] === c[2] || ((p.touch1 = c), (p.taps = 0)) : ((p.touch0 = c), (s = !0), (p.taps = 1 + !!e)) e && (e = clearTimeout(e)), s && (p.taps < 2 && ((t = c[0]), (e = setTimeout(function () { e = null }, h))), rr(this), p.start()) } } function C(e) { if (this.__zooming) { for (var t = arguments.length, n = new Array(t > 1 ? t - 1 : 0), r = 1; r < t; r++) n[r - 1] = arguments[r] var i, a, s, u, c = x(this, n).event(e), d = e.changedTouches, f = d.length for (Jr(e), i = 0; i < f; ++i) (s = Zn((a = d[i]), this)), c.touch0 && c.touch0[2] === a.identifier ? (c.touch0[0] = s) : c.touch1 && c.touch1[2] === a.identifier && (c.touch1[0] = s) if (((a = c.that.__zoom), c.touch1)) { var h = c.touch0[0], p = c.touch0[1], v = c.touch1[0], m = c.touch1[1], b = (b = v[0] - h[0]) * b + (b = v[1] - h[1]) * b, w = (w = m[0] - p[0]) * w + (w = m[1] - p[1]) * w ;(a = g(a, Math.sqrt(b / w))), (s = [(h[0] + v[0]) / 2, (h[1] + v[1]) / 2]), (u = [(p[0] + m[0]) / 2, (p[1] + m[1]) / 2]) } else { if (!c.touch0) return ;(s = c.touch0[0]), (u = c.touch0[1]) } c.zoom('touch', o(y(a, s, u), c.extent, l)) } } function S(e) { for (var r = arguments.length, i = new Array(r > 1 ? r - 1 : 0), o = 1; o < r; o++) i[o - 1] = arguments[o] if (this.__zooming) { var a, s, u = x(this, i).event(e), l = e.changedTouches, c = l.length for ( Qr(e), n && clearTimeout(n), n = setTimeout(function () { n = null }, h), a = 0; a < c; ++a ) (s = l[a]), u.touch0 && u.touch0[2] === s.identifier ? delete u.touch0 : u.touch1 && u.touch1[2] === s.identifier && delete u.touch1 if ((u.touch1 && !u.touch0 && ((u.touch0 = u.touch1), delete u.touch1), u.touch0)) u.touch0[1] = this.__zoom.invert(u.touch0[0]) else if ( (u.end(), 2 === u.taps && ((s = Zn(s, this)), Math.hypot(t[0] - s[0], t[1] - s[1]) < v)) ) { var d = zn(this).on('dblclick.zoom') d && d.apply(this, arguments) } } } return ( (m.transform = function (e, t, n, r) { var i = e.selection ? e.selection() : e i.property('__zoom', ni), e !== i ? w(e, t, n, r) : i.interrupt().each(function () { x(this, arguments) .event(r) .start() .zoom(null, 'function' === typeof t ? t.apply(this, arguments) : t) .end() }) }), (m.scaleBy = function (e, t, n, r) { m.scaleTo( e, function () { var e = this.__zoom.k, n = 'function' === typeof t ? t.apply(this, arguments) : t return e * n }, n, r, ) }), (m.scaleTo = function (e, t, n, r) { m.transform( e, function () { var e = i.apply(this, arguments), r = this.__zoom, a = null == n ? b(e) : 'function' === typeof n ? n.apply(this, arguments) : n, s = r.invert(a), u = 'function' === typeof t ? t.apply(this, arguments) : t return o(y(g(r, u), a, s), e, l) }, n, r, ) }), (m.translateBy = function (e, t, n, r) { m.transform( e, function () { return o( this.__zoom.translate( 'function' === typeof t ? t.apply(this, arguments) : t, 'function' === typeof n ? n.apply(this, arguments) : n, ), i.apply(this, arguments), l, ) }, null, r, ) }), (m.translateTo = function (e, t, n, r, a) { m.transform( e, function () { var e = i.apply(this, arguments), a = this.__zoom, s = null == r ? b(e) : 'function' === typeof r ? r.apply(this, arguments) : r return o( Xr.translate(s[0], s[1]) .scale(a.k) .translate( 'function' === typeof t ? -t.apply(this, arguments) : -t, 'function' === typeof n ? -n.apply(this, arguments) : -n, ), e, l, ) }, r, a, ) }), (E.prototype = { event: function (e) { return e && (this.sourceEvent = e), this }, start: function () { return 1 === ++this.active && ((this.that.__zooming = this), this.emit('start')), this }, zoom: function (e, t) { return ( this.mouse && 'mouse' !== e && (this.mouse[1] = t.invert(this.mouse[0])), this.touch0 && 'touch' !== e && (this.touch0[1] = t.invert(this.touch0[0])), this.touch1 && 'touch' !== e && (this.touch1[1] = t.invert(this.touch1[0])), (this.that.__zoom = t), this.emit('zoom'), this ) }, end: function () { return 0 === --this.active && (delete this.that.__zooming, this.emit('end')), this }, emit: function (e) { var t = zn(this.that).datum() f.call( e, this.that, new Zr(e, { sourceEvent: this.sourceEvent, target: m, type: e, transform: this.that.__zoom, dispatch: f, }), t, ) }, }), (m.wheelDelta = function (e) { return arguments.length ? ((a = 'function' === typeof e ? e : Kr(+e)), m) : a }), (m.filter = function (e) { return arguments.length ? ((r = 'function' === typeof e ? e : Kr(!!e)), m) : r }), (m.touchable = function (e) { return arguments.length ? ((s = 'function' === typeof e ? e : Kr(!!e)), m) : s }), (m.extent = function (e) { return arguments.length ? ((i = 'function' === typeof e ? e : Kr([ [+e[0][0], +e[0][1]], [+e[1][0], +e[1][1]], ])), m) : i }), (m.scaleExtent = function (e) { return arguments.length ? ((u[0] = +e[0]), (u[1] = +e[1]), m) : [u[0], u[1]] }), (m.translateExtent = function (e) { return arguments.length ? ((l[0][0] = +e[0][0]), (l[1][0] = +e[1][0]), (l[0][1] = +e[0][1]), (l[1][1] = +e[1][1]), m) : [ [l[0][0], l[0][1]], [l[1][0], l[1][1]], ] }), (m.constrain = function (e) { return arguments.length ? ((o = e), m) : o }), (m.duration = function (e) { return arguments.length ? ((c = +e), m) : c }), (m.interpolate = function (e) { return arguments.length ? ((d = e), m) : d }), (m.on = function () { var e = f.on.apply(f, arguments) return e === f ? m : e }), (m.clickDistance = function (e) { return arguments.length ? ((p = (e = +e) * e), m) : Math.sqrt(p) }), (m.tapDistance = function (e) { return arguments.length ? ((v = +e), m) : v }), m ) } Yr.prototype = $r.prototype var si = function (e) { return function () { return e } } function ui(e, t) { var n = t.sourceEvent, r = t.subject, i = t.target, o = t.identifier, a = t.active, s = t.x, u = t.y, l = t.dx, c = t.dy, d = t.dispatch Object.defineProperties(this, { type: { value: e, enumerable: !0, configurable: !0 }, sourceEvent: { value: n, enumerable: !0, configurable: !0 }, subject: { value: r, enumerable: !0, configurable: !0 }, target: { value: i, enumerable: !0, configurable: !0 }, identifier: { value: o, enumerable: !0, configurable: !0 }, active: { value: a, enumerable: !0, configurable: !0 }, x: { value: s, enumerable: !0, configurable: !0 }, y: { value: u, enumerable: !0, configurable: !0 }, dx: { value: l, enumerable: !0, configurable: !0 }, dy: { value: c, enumerable: !0, configurable: !0 }, _: { value: d }, }) } function li(e) { return !e.ctrlKey && !e.button } function ci() { return this.parentNode } function di(e, t) { return null == t ? { x: e.x, y: e.y } : t } function fi() { return navigator.maxTouchPoints || 'ontouchstart' in this } ui.prototype.on = function () { var e = this._.on.apply(this._, arguments) return e === this._ ? this : e } var hi = r(6701), pi = r(3752), vi = r(3096), mi = r.n(vi), gi = r(7621), yi = r.n(gi) function bi(e, t) { if (!(e instanceof t)) throw new TypeError('Cannot call a class as a function') } function wi(e, t) { for (var n = 0; n < t.length; n++) { var r = t[n] ;(r.enumerable = r.enumerable || !1), (r.configurable = !0), 'value' in r && (r.writable = !0), Object.defineProperty(e, r.key, r) } } function xi(e) { return ( (function (e) { if (Array.isArray(e)) return Ei(e) })(e) || (function (e) { if ('undefined' !== typeof Symbol && Symbol.iterator in Object(e)) return Array.from(e) })(e) || (function (e, t) { if (!e) return if ('string' === typeof e) return Ei(e, t) var n = Object.prototype.toString.call(e).slice(8, -1) 'Object' === n && e.constructor && (n = e.constructor.name) if ('Map' === n || 'Set' === n) return Array.from(e) if ('Arguments' === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return Ei(e, t) })(e) || (function () { throw new TypeError( 'Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.', ) })() ) } function Ei(e, t) { ;(null == t || t > e.length) && (t = e.length) for (var n = 0, r = new Array(t); n < t; n++) r[n] = e[n] return r } var ki = function (e, t, n) { return (e << 16) + (t << 8) + n }, _i = function (e, t) { return (123 * e) % Math.pow(2, t) }, Ti = (function () { function e() { var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 6 bi(this, e), (this.csBits = t), (this.registry = ['__reserved for background__']) } var t, n, r return ( (t = e), (n = [ { key: 'register', value: function (e) { if (this.registry.length >= Math.pow(2, 24 - this.csBits)) return null var t, n = this.registry.length, r = _i(n, this.csBits), i = ((t = n + (r << (24 - this.csBits))), '#'.concat(Math.min(t, Math.pow(2, 24)).toString(16).padStart(6, '0'))) return this.registry.push(e), i }, }, { key: 'lookup', value: function (e) { var t = 'string' === typeof e ? (function (e) { var t = yi()(e).toRgb(), n = t.r, r = t.g, i = t.b return ki(n, r, i) })(e) : ki.apply(void 0, xi(e)) if (!t) return null var n = t & (Math.pow(2, 24 - this.csBits) - 1), r = (t >> (24 - this.csBits)) & (Math.pow(2, this.csBits) - 1) return _i(n, this.csBits) !== r || n >= this.registry.length ? null : this.registry[n] }, }, ]) && wi(t.prototype, n), r && wi(t, r), e ) })(), Oi = r(4505), Ci = r(5560), Si = r(2405), Ai = r(216), Pi = r(6917) const { abs: Mi, cos: Ri, sin: ji, acos: Di, atan2: Li, sqrt: Ni, pow: Ii } = Math function zi(e) { return e < 0 ? -Ii(-e, 1 / 3) : Ii(e, 1 / 3) } const Hi = Math.PI, Bi = 2 * Hi, Fi = Hi / 2, Vi = Number.MAX_SAFE_INTEGER || 9007199254740991, Ui = Number.MIN_SAFE_INTEGER || -9007199254740991, Gi = { x: 0, y: 0, z: 0 }, qi = { Tvalues: [ -0.06405689286260563, 0.06405689286260563, -0.1911188674736163, 0.1911188674736163, -0.3150426796961634, 0.3150426796961634, -0.4337935076260451, 0.4337935076260451, -0.5454214713888396, 0.5454214713888396, -0.6480936519369755, 0.6480936519369755, -0.7401241915785544, 0.7401241915785544, -0.820001985973903, 0.820001985973903, -0.8864155270044011, 0.8864155270044011, -0.9382745520027328, 0.9382745520027328, -0.9747285559713095, 0.9747285559713095, -0.9951872199970213, 0.9951872199970213, ], Cvalues: [ 0.12793819534675216, 0.12793819534675216, 0.1258374563468283, 0.1258374563468283, 0.12167047292780339, 0.12167047292780339, 0.1155056680537256, 0.1155056680537256, 0.10744427011596563, 0.10744427011596563, 0.09761865210411388, 0.09761865210411388, 0.08619016153195327, 0.08619016153195327, 0.0733464814110803, 0.0733464814110803, 0.05929858491543678, 0.05929858491543678, 0.04427743881741981, 0.04427743881741981, 0.028531388628933663, 0.028531388628933663, 0.0123412297999872, 0.0123412297999872, ], arcfn: function (e, t) { const n = t(e) let r = n.x * n.x + n.y * n.y return 'undefined' !== typeof n.z && (r += n.z * n.z), Ni(r) }, compute: function (e, t, n) { if (0 === e) return (t[0].t = 0), t[0] const r = t.length - 1 if (1 === e) return (t[r].t = 1), t[r] const i = 1 - e let o = t if (0 === r) return (t[0].t = e), t[0] if (1 === r) { const t = { x: i * o[0].x + e * o[1].x, y: i * o[0].y + e * o[1].y, t: e } return n && (t.z = i * o[0].z + e * o[1].z), t } if (r < 4) { let t, a, s, u = i * i, l = e * e, c = 0 2 === r ? ((o = [o[0], o[1], o[2], Gi]), (t = u), (a = i * e * 2), (s = l)) : 3 === r && ((t = u * i), (a = u * e * 3), (s = i * l * 3), (c = e * l)) const d = { x: t * o[0].x + a * o[1].x + s * o[2].x + c * o[3].x, y: t * o[0].y + a * o[1].y + s * o[2].y + c * o[3].y, t: e, } return n && (d.z = t * o[0].z + a * o[1].z + s * o[2].z + c * o[3].z), d } const a = JSON.parse(JSON.stringify(t)) for (; a.length > 1; ) { for (let t = 0; t < a.length - 1; t++) (a[t] = { x: a[t].x + (a[t + 1].x - a[t].x) * e, y: a[t].y + (a[t + 1].y - a[t].y) * e, }), 'undefined' !== typeof a[t].z && (a[t] = a[t].z + (a[t + 1].z - a[t].z) * e) a.splice(a.length - 1, 1) } return (a[0].t = e), a[0] }, computeWithRatios: function (e, t, n, r) { const i = 1 - e, o = n, a = t let s, u = o[0], l = o[1], c = o[2], d = o[3] return ( (u *= i), (l *= e), 2 === a.length ? ((s = u + l), { x: (u * a[0].x + l * a[1].x) / s, y: (u * a[0].y + l * a[1].y) / s, z: !!r && (u * a[0].z + l * a[1].z) / s, t: e, }) : ((u *= i), (l *= 2 * i), (c *= e * e), 3 === a.length ? ((s = u + l + c), { x: (u * a[0].x + l * a[1].x + c * a[2].x) / s, y: (u * a[0].y + l * a[1].y + c * a[2].y) / s, z: !!r && (u * a[0].z + l * a[1].z + c * a[2].z) / s, t: e, }) : ((u *= i), (l *= 1.5 * i), (c *= 3 * i), (d *= e * e * e), 4 === a.length ? ((s = u + l + c + d), { x: (u * a[0].x + l * a[1].x + c * a[2].x + d * a[3].x) / s, y: (u * a[0].y + l * a[1].y + c * a[2].y + d * a[3].y) / s, z: !!r && (u * a[0].z + l * a[1].z + c * a[2].z + d * a[3].z) / s, t: e, }) : void 0)) ) }, derive: function (e, t) { const n = [] for (let r = e, i = r.length, o = i - 1; i > 1; i--, o--) { const e = [] for (let n, i = 0; i < o; i++) (n = { x: o * (r[i + 1].x - r[i].x), y: o * (r[i + 1].y - r[i].y) }), t && (n.z = o * (r[i + 1].z - r[i].z)), e.push(n) n.push(e), (r = e) } return n }, between: function (e, t, n) { return (t <= e && e <= n) || qi.approximately(e, t) || qi.approximately(e, n) }, approximately: function (e, t, n) { return Mi(e - t) <= (n || 1e-6) }, length: function (e) { const t = qi.Tvalues.length let n = 0 for (let r, i = 0; i < t; i++) (r = 0.5 * qi.Tvalues[i] + 0.5), (n += qi.Cvalues[i] * qi.arcfn(r, e)) return 0.5 * n }, map: function (e, t, n, r, i) { return r + (i - r) * ((e - t) / (n - t)) }, lerp: function (e, t, n) { const r = { x: t.x + e * (n.x - t.x), y: t.y + e * (n.y - t.y) } return void 0 !== t.z && void 0 !== n.z && (r.z = t.z + e * (n.z - t.z)), r }, pointToString: function (e) { let t = e.x + '/' + e.y return 'undefined' !== typeof e.z && (t += '/' + e.z), t }, pointsToString: function (e) { return '[' + e.map(qi.pointToString).join(', ') + ']' }, copy: function (e) { return JSON.parse(JSON.stringify(e)) }, angle: function (e, t, n) { const r = t.x - e.x, i = t.y - e.y, o = n.x - e.x, a = n.y - e.y return Li(r * a - i * o, r * o + i * a) }, round: function (e, t) { const n = '' + e, r = n.indexOf('.') return parseFloat(n.substring(0, r + 1 + t)) }, dist: function (e, t) { const n = e.x - t.x, r = e.y - t.y return Ni(n * n + r * r) }, closest: function (e, t) { let n, r, i = Ii(2, 63) return ( e.forEach(function (e, o) { ;(r = qi.dist(t, e)), r < i && ((i = r), (n = o)) }), { mdist: i, mpos: n } ) }, abcratio: function (e, t) { if (2 !== t && 3 !== t) return !1 if ('undefined' === typeof e) e = 0.5 else if (0 === e || 1 === e) return e const n = Ii(e, t) + Ii(1 - e, t) return Mi((n - 1) / n) }, projectionratio: function (e, t) { if (2 !== t && 3 !== t) return !1 if ('undefined' === typeof e) e = 0.5 else if (0 === e || 1 === e) return e const n = Ii(1 - e, t) return n / (Ii(e, t) + n) }, lli8: function (e, t, n, r, i, o, a, s) { const u = (e - n) * (o - s) - (t - r) * (i - a) return ( 0 != u && { x: ((e * r - t * n) * (i - a) - (e - n) * (i * s - o * a)) / u, y: ((e * r - t * n) * (o - s) - (t - r) * (i * s - o * a)) / u, } ) }, lli4: function (e, t, n, r) { const i = e.x, o = e.y, a = t.x, s = t.y, u = n.x, l = n.y, c = r.x, d = r.y return qi.lli8(i, o, a, s, u, l, c, d) }, lli: function (e, t) { return qi.lli4(e, e.c, t, t.c) }, makeline: function (e, t) { const n = e.x, r = e.y, i = t.x, o = t.y, a = (i - n) / 3, s = (o - r) / 3 return new to(n, r, n + a, r + s, n + 2 * a, r + 2 * s, i, o) }, findbbox: function (e) { let t = Vi, n = Vi, r = Ui, i = Ui return ( e.forEach(function (e) { const o = e.bbox() t > o.x.min && (t = o.x.min), n > o.y.min && (n = o.y.min), r < o.x.max && (r = o.x.max), i < o.y.max && (i = o.y.max) }), { x: { min: t, mid: (t + r) / 2, max: r, size: r - t }, y: { min: n, mid: (n + i) / 2, max: i, size: i - n }, } ) }, shapeintersections: function (e, t, n, r, i) { if (!qi.bboxoverlap(t, r)) return [] const o = [], a = [e.startcap, e.forward, e.back, e.endcap], s = [n.startcap, n.forward, n.back, n.endcap] return ( a.forEach(function (t) { t.virtual || s.forEach(function (r) { if (r.virtual) return const a = t.intersects(r, i) a.length > 0 && ((a.c1 = t), (a.c2 = r), (a.s1 = e), (a.s2 = n), o.push(a)) }) }), o ) }, makeshape: function (e, t, n) { const r = t.points.length, i = e.points.length, o = qi.makeline(t.points[r - 1], e.points[0]), a = qi.makeline(e.points[i - 1], t.points[0]), s = { startcap: o, forward: e, back: t, endcap: a, bbox: qi.findbbox([o, e, t, a]), intersections: function (e) { return qi.shapeintersections(s, s.bbox, e, e.bbox, n) }, } return s }, getminmax: function (e, t, n) { if (!n) return { min: 0, max: 0 } let r, i, o = Vi, a = Ui ;-1 === n.indexOf(0) && (n = [0].concat(n)), -1 === n.indexOf(1) && n.push(1) for (let s = 0, u = n.length; s < u; s++) (r = n[s]), (i = e.get(r)), i[t] < o && (o = i[t]), i[t] > a && (a = i[t]) return { min: o, mid: (o + a) / 2, max: a, size: a - o } }, align: function (e, t) { const n = t.p1.x, r = t.p1.y, i = -Li(t.p2.y - r, t.p2.x - n) return e.map(function (e) { return { x: (e.x - n) * Ri(i) - (e.y - r) * ji(i), y: (e.x - n) * ji(i) + (e.y - r) * Ri(i), } }) }, roots: function (e, t) { t = t || { p1: { x: 0, y: 0 }, p2: { x: 1, y: 0 } } const n = e.length - 1, r = qi.align(e, t), i = function (e) { return 0 <= e && e <= 1 } if (2 === n) { const e = r[0].y, t = r[1].y, n = r[2].y, o = e - 2 * t + n if (0 !== o) { const r = -Ni(t * t - e * n), a = -e + t return [-(r + a) / o, -(-r + a) / o].filter(i) } return t !== n && 0 === o ? [(2 * t - n) / (2 * t - 2 * n)].filter(i) : [] } const o = r[0].y, a = r[1].y, s = r[2].y let u = 3 * a - o - 3 * s + r[3].y, l = 3 * o - 6 * a + 3 * s, c = -3 * o + 3 * a, d = o if (qi.approximately(u, 0)) { if (qi.approximately(l, 0)) return qi.approximately(c, 0) ? [] : [-d / c].filter(i) const e = Ni(c * c - 4 * l * d), t = 2 * l return [(e - c) / t, (-c - e) / t].filter(i) } ;(l /= u), (c /= u), (d /= u) const f = (3 * c - l * l) / 3, h = f / 3, p = (2 * l * l * l - 9 * l * c + 27 * d) / 27, v = p / 2, m = v * v + h * h * h let g, y, b, w, x if (m < 0) { const e = -f / 3, t = Ni(e * e * e), n = -p / (2 * t), r = Di(n < -1 ? -1 : n > 1 ? 1 : n), o = 2 * zi(t) return ( (b = o * Ri(r / 3) - l / 3), (w = o * Ri((r + Bi) / 3) - l / 3), (x = o * Ri((r + 2 * Bi) / 3) - l / 3), [b, w, x].filter(i) ) } if (0 === m) return ( (g = v < 0 ? zi(-v) : -zi(v)), (b = 2 * g - l / 3), (w = -g - l / 3), [b, w].filter(i) ) { const e = Ni(m) return (g = zi(-v + e)), (y = zi(v + e)), [g - y - l / 3].filter(i) } }, droots: function (e) { if (3 === e.length) { const t = e[0], n = e[1], r = e[2], i = t - 2 * n + r if (0 !== i) { const e = -Ni(n * n - t * r), o = -t + n return [-(e + o) / i, -(-e + o) / i] } return n !== r && 0 === i ? [(2 * n - r) / (2 * (n - r))] : [] } if (2 === e.length) { const t = e[0], n = e[1] return t !== n ? [t / (t - n)] : [] } return [] }, curvature: function (e, t, n, r, i) { let o, a, s, u, l = 0, c = 0 const d = qi.compute(e, t), f = qi.compute(e, n), h = d.x * d.x + d.y * d.y if ( (r ? ((o = Ni( Ii(d.y * f.z - f.y * d.z, 2) + Ii(d.z * f.x - f.z * d.x, 2) + Ii(d.x * f.y - f.x * d.y, 2), )), (a = Ii(h + d.z * d.z, 1.5))) : ((o = d.x * f.y - d.y * f.x), (a = Ii(h, 1.5))), 0 === o || 0 === a) ) return { k: 0, r: 0 } if (((l = o / a), (c = a / o), !i)) { const i = qi.curvature(e - 0.001, t, n, r, !0).k, o = qi.curvature(e + 0.001, t, n, r, !0).k ;(u = (o - l + (l - i)) / 2), (s = (Mi(o - l) + Mi(l - i)) / 2) } return { k: l, r: c, dk: u, adk: s } }, inflections: function (e) { if (e.length < 4) return [] const t = qi.align(e, { p1: e[0], p2: e.slice(-1)[0] }), n = t[2].x * t[1].y, r = t[3].x * t[1].y, i = t[1].x * t[2].y, o = 18 * (-3 * n + 2 * r + 3 * i - t[3].x * t[2].y), a = 18 * (3 * n - r - 3 * i), s = 18 * (i - n) if (qi.approximately(o, 0)) { if (!qi.approximately(a, 0)) { let e = -s / a if (0 <= e && e <= 1) return [e] } return [] } const u = a * a - 4 * o * s, l = Math.sqrt(u), c = 2 * o return qi.approximately(c, 0) ? [] : [(l - a) / c, -(a + l) / c].filter(function (e) { return 0 <= e && e <= 1 }) }, bboxoverlap: function (e, t) { const n = ['x', 'y'], r = n.length for (let i, o, a, s, u = 0; u < r; u++) if ( ((i = n[u]), (o = e[i].mid), (a = t[i].mid), (s = (e[i].size + t[i].size) / 2), Mi(o - a) >= s) ) return !1 return !0 }, expandbox: function (e, t) { t.x.min < e.x.min && (e.x.min = t.x.min), t.y.min < e.y.min && (e.y.min = t.y.min), t.z && t.z.min < e.z.min && (e.z.min = t.z.min), t.x.max > e.x.max && (e.x.max = t.x.max), t.y.max > e.y.max && (e.y.max = t.y.max), t.z && t.z.max > e.z.max && (e.z.max = t.z.max), (e.x.mid = (e.x.min + e.x.max) / 2), (e.y.mid = (e.y.min + e.y.max) / 2), e.z && (e.z.mid = (e.z.min + e.z.max) / 2), (e.x.size = e.x.max - e.x.min), (e.y.size = e.y.max - e.y.min), e.z && (e.z.size = e.z.max - e.z.min) }, pairiteration: function (e, t, n) { const r = e.bbox(), i = t.bbox(), o = 1e5, a = n || 0.5 if (r.x.size + r.y.size < a && i.x.size + i.y.size < a) return [ (((o * (e._t1 + e._t2)) / 2) | 0) / o + '/' + (((o * (t._t1 + t._t2)) / 2) | 0) / o, ] let s = e.split(0.5), u = t.split(0.5), l = [ { left: s.left, right: u.left }, { left: s.left, right: u.right }, { left: s.right, right: u.right }, { left: s.right, right: u.left }, ] l = l.filter(function (e) { return qi.bboxoverlap(e.left.bbox(), e.right.bbox()) }) let c = [] return ( 0 === l.length || (l.forEach(function (e) { c = c.concat(qi.pairiteration(e.left, e.right, a)) }), (c = c.filter(function (e, t) { return c.indexOf(e) === t }))), c ) }, getccenter: function (e, t, n) { const r = t.x - e.x, i = t.y - e.y, o = n.x - t.x, a = n.y - t.y, s = r * Ri(Fi) - i * ji(Fi), u = r * ji(Fi) + i * Ri(Fi), l = o * Ri(Fi) - a * ji(Fi), c = o * ji(Fi) + a * Ri(Fi), d = (e.x + t.x) / 2, f = (e.y + t.y) / 2, h = (t.x + n.x) / 2, p = (t.y + n.y) / 2, v = d + s, m = f + u, g = h + l, y = p + c, b = qi.lli8(d, f, v, m, h, p, g, y), w = qi.dist(b, e) let x, E = Li(e.y - b.y, e.x - b.x), k = Li(t.y - b.y, t.x - b.x), _ = Li(n.y - b.y, n.x - b.x) return ( E < _ ? ((E > k || k > _) && (E += Bi), E > _ && ((x = _), (_ = E), (E = x))) : _ < k && k < E ? ((x = _), (_ = E), (E = x)) : (_ += Bi), (b.s = E), (b.e = _), (b.r = w), b ) }, numberSort: function (e, t) { return e - t }, } class Wi { constructor(e) { ;(this.curves = []), (this._3d = !1), e && ((this.curves = e), (this._3d = this.curves[0]._3d)) } valueOf() { return this.toString() } toString() { return ( '[' + this.curves .map(function (e) { return qi.pointsToString(e.points) }) .join(', ') + ']' ) } addCurve(e) { this.curves.push(e), (this._3d = this._3d || e._3d) } length() { return this.curves .map(function (e) { return e.length() }) .reduce(function (e, t) { return e + t }) } curve(e) { return this.curves[e] } bbox() { const e = this.curves for (var t = e[0].bbox(), n = 1; n < e.length; n++) qi.expandbox(t, e[n].bbox()) return t } offset(e) { const t = [] return ( this.curves.forEach(function (n) { t.push(...n.offset(e)) }), new Wi(t) ) } } const { abs: Ki, min: Zi, max: $i, cos: Xi, sin: Yi, acos: Qi, sqrt: Ji } = Math, eo = Math.PI class to { constructor(e) { let t = e && e.forEach ? e : Array.from(arguments).slice(), n = !1 if ('object' === typeof t[0]) { n = t.length const e = [] t.forEach(function (t) { ;['x', 'y', 'z'].forEach(function (n) { 'undefined' !== typeof t[n] && e.push(t[n]) }) }), (t = e) } let r = !1 const i = t.length if (n) { if (n > 4) { if (1 !== arguments.length) throw new Error( 'Only new Bezier(point[]) is accepted for 4th and higher order curves', ) r = !0 } } else if (6 !== i && 8 !== i && 9 !== i && 12 !== i && 1 !== arguments.length) throw new Error('Only new Bezier(point[]) is accepted for 4th and higher order curves') const o = (this._3d = (!r && (9 === i || 12 === i)) || (e && e[0] && 'undefined' !== typeof e[0].z)), a = (this.points = []) for (let d = 0, f = o ? 3 : 2; d < i; d += f) { var s = { x: t[d], y: t[d + 1] } o && (s.z = t[d + 2]), a.push(s) } const u = (this.order = a.length - 1), l = (this.dims = ['x', 'y']) o && l.push('z'), (this.dimlen = l.length) const c = qi.align(a, { p1: a[0], p2: a[u] }) ;(this._linear = !c.some((e) => Ki(e.y) > 1e-4)), (this._lut = []), (this._t1 = 0), (this._t2 = 1), this.update() } static quadraticFromPoints(e, t, n, r) { if (('undefined' === typeof r && (r = 0.5), 0 === r)) return new to(t, t, n) if (1 === r) return new to(e, t, t) const i = to.getABC(2, e, t, n, r) return new to(e, i.A, n) } static cubicFromPoints(e, t, n, r, i) { 'undefined' === typeof r && (r = 0.5) const o = to.getABC(3, e, t, n, r) 'undefined' === typeof i && (i = qi.dist(t, o.C)) const a = (i * (1 - r)) / r, s = qi.dist(e, n), u = (n.x - e.x) / s, l = (n.y - e.y) / s, c = i * u, d = i * l, f = a * u, h = a * l, p = t.x - c, v = t.y - d, m = t.x + f, g = t.y + h, y = o.A, b = y.x + (p - y.x) / (1 - r), w = y.y + (v - y.y) / (1 - r), x = y.x + (m - y.x) / r, E = y.y + (g - y.y) / r, k = { x: e.x + (b - e.x) / r, y: e.y + (w - e.y) / r }, _ = { x: n.x + (x - n.x) / (1 - r), y: n.y + (E - n.y) / (1 - r) } return new to(e, k, _, n) } static getUtils() { return qi } getUtils() { return to.getUtils() } static get PolyBezier() { return Wi } valueOf() { return this.toString() } toString() { return qi.pointsToString(this.points) } toSVG() { if (this._3d) return !1 const e = this.points, t = ['M', e[0].x, e[0].y, 2 === this.order ? 'Q' : 'C'] for (let n = 1, r = e.length; n < r; n++) t.push(e[n].x), t.push(e[n].y) return t.join(' ') } setRatios(e) { if (e.length !== this.points.length) throw new Error('incorrect number of ratio values') ;(this.ratios = e), (this._lut = []) } verify() { const e = this.coordDigest() e !== this._print && ((this._print = e), this.update()) } coordDigest() { return this.points .map(function (e, t) { return '' + t + e.x + e.y + (e.z ? e.z : 0) }) .join('') } update() { ;(this._lut = []), (this.dpoints = qi.derive(this.points, this._3d)), this.computedirection() } computedirection() { const e = this.points, t = qi.angle(e[0], e[this.order], e[1]) this.clockwise = t > 0 } length() { return qi.length(this.derivative.bind(this)) } static getABC(e = 2, t, n, r, i = 0.5) { const o = qi.projectionratio(i, e), a = 1 - o, s = { x: o * t.x + a * r.x, y: o * t.y + a * r.y }, u = qi.abcratio(i, e) return { A: { x: n.x + (n.x - s.x) / u, y: n.y + (n.y - s.y) / u }, B: n, C: s, S: t, E: r, } } getABC(e, t) { t = t || this.get(e) let n = this.points[0], r = this.points[this.order] return to.getABC(this.order, n, t, r, e) } getLUT(e) { if ((this.verify(), (e = e || 100), this._lut.length === e)) return this._lut ;(this._lut = []), e-- for (let t, n, r = 0; r < e; r++) (n = r / (e - 1)), (t = this.compute(n)), (t.t = n), this._lut.push(t) return this._lut } on(e, n) { n = n || 5 const r = this.getLUT(), i = [] for (let t, o = 0, a = 0; o < r.length; o++) (t = r[o]), qi.dist(t, e) < n && (i.push(t), (a += o / r.length)) return !!i.length && (t /= i.length) } project(e) { const t = this.getLUT(), n = t.length - 1, r = qi.closest(t, e), i = r.mpos, o = (i - 1) / n, a = (i + 1) / n, s = 0.1 / n let u, l, c = r.mdist, d = o, f = d for (c += 1; d < a + s; d += s) (u = this.compute(d)), (l = qi.dist(e, u)), l < c && ((c = l), (f = d)) return (f = f < 0 ? 0 : f > 1 ? 1 : f), (u = this.compute(f)), (u.t = f), (u.d = c), u } get(e) { return this.compute(e) } point(e) { return this.points[e] } compute(e) { return this.ratios ? qi.computeWithRatios(e, this.points, this.ratios, this._3d) : qi.compute(e, this.points, this._3d, this.ratios) } raise() { const e = this.points, t = [e[0]], n = e.length for (let r, i, o = 1; o < n; o++) (r = e[o]), (i = e[o - 1]), (t[o] = { x: ((n - o) / n) * r.x + (o / n) * i.x, y: ((n - o) / n) * r.y + (o / n) * i.y, }) return (t[n] = e[n - 1]), new to(t) } derivative(e) { return qi.compute(e, this.dpoints[0], this._3d) } dderivative(e) { return qi.compute(e, this.dpoints[1], this._3d) } align() { let e = this.points return new to(qi.align(e, { p1: e[0], p2: e[e.length - 1] })) } curvature(e) { return qi.curvature(e, this.dpoints[0], this.dpoints[1], this._3d) } inflections() { return qi.inflections(this.points) } normal(e) { return this._3d ? this.__normal3(e) : this.__normal2(e) } __normal2(e) { const t = this.derivative(e), n = Ji(t.x * t.x + t.y * t.y) return { x: -t.y / n, y: t.x / n } } __normal3(e) { const t = this.derivative(e), n = this.derivative(e + 0.01), r = Ji(t.x * t.x + t.y * t.y + t.z * t.z), i = Ji(n.x * n.x + n.y * n.y + n.z * n.z) ;(t.x /= r), (t.y /= r), (t.z /= r), (n.x /= i), (n.y /= i), (n.z /= i) const o = { x: n.y * t.z - n.z * t.y, y: n.z * t.x - n.x * t.z, z: n.x * t.y - n.y * t.x, }, a = Ji(o.x * o.x + o.y * o.y + o.z * o.z) ;(o.x /= a), (o.y /= a), (o.z /= a) const s = [ o.x * o.x, o.x * o.y - o.z, o.x * o.z + o.y, o.x * o.y + o.z, o.y * o.y, o.y * o.z - o.x, o.x * o.z - o.y, o.y * o.z + o.x, o.z * o.z, ] return { x: s[0] * t.x + s[1] * t.y + s[2] * t.z, y: s[3] * t.x + s[4] * t.y + s[5] * t.z, z: s[6] * t.x + s[7] * t.y + s[8] * t.z, } } hull(e) { let t = this.points, n = [], r = [], i = 0 for ( r[i++] = t[0], r[i++] = t[1], r[i++] = t[2], 3 === this.order && (r[i++] = t[3]); t.length > 1; ) { n = [] for (let o, a = 0, s = t.length - 1; a < s; a++) (o = qi.lerp(e, t[a], t[a + 1])), (r[i++] = o), n.push(o) t = n } return r } split(e, t) { if (0 === e && t) return this.split(t).left if (1 === t) return this.split(e).right const n = this.hull(e), r = { left: 2 === this.order ? new to([n[0], n[3], n[5]]) : new to([n[0], n[4], n[7], n[9]]), right: 2 === this.order ? new to([n[5], n[4], n[2]]) : new to([n[9], n[8], n[6], n[3]]), span: n, } return ( (r.left._t1 = qi.map(0, 0, 1, this._t1, this._t2)), (r.left._t2 = qi.map(e, 0, 1, this._t1, this._t2)), (r.right._t1 = qi.map(e, 0, 1, this._t1, this._t2)), (r.right._t2 = qi.map(1, 0, 1, this._t1, this._t2)), t ? ((t = qi.map(t, e, 1, 0, 1)), r.right.split(t).left) : r ) } extrema() { const e = {} let t = [] return ( this.dims.forEach( function (n) { let r = function (e) { return e[n] }, i = this.dpoints[0].map(r) ;(e[n] = qi.droots(i)), 3 === this.order && ((i = this.dpoints[1].map(r)), (e[n] = e[n].concat(qi.droots(i)))), (e[n] = e[n].filter(function (e) { return e >= 0 && e <= 1 })), (t = t.concat(e[n].sort(qi.numberSort))) }.bind(this), ), (e.values = t.sort(qi.numberSort).filter(function (e, n) { return t.indexOf(e) === n })), e ) } bbox() { const e = this.extrema(), t = {} return ( this.dims.forEach( function (n) { t[n] = qi.getminmax(this, n, e[n]) }.bind(this), ), t ) } overlaps(e) { const t = this.bbox(), n = e.bbox() return qi.bboxoverlap(t, n) } offset(e, t) { if ('undefined' !== typeof t) { const n = this.get(e), r = this.normal(e), i = { c: n, n: r, x: n.x + r.x * t, y: n.y + r.y * t } return this._3d && (i.z = n.z + r.z * t), i } if (this._linear) { const t = this.normal(0), n = this.points.map(function (n) { const r = { x: n.x + e * t.x, y: n.y + e * t.y } return n.z && t.z && (r.z = n.z + e * t.z), r }) return [new to(n)] } return this.reduce().map(function (t) { return t._linear ? t.offset(e)[0] : t.scale(e) }) } simple() { if (3 === this.order) { const e = qi.angle(this.points[0], this.points[3], this.points[1]), t = qi.angle(this.points[0], this.points[3], this.points[2]) if ((e > 0 && t < 0) || (e < 0 && t > 0)) return !1 } const e = this.normal(0), t = this.normal(1) let n = e.x * t.x + e.y * t.y return this._3d && (n += e.z * t.z), Ki(Qi(n)) < eo / 3 } reduce() { let e, t, n = 0, r = 0, i = 0.01, o = [], a = [], s = this.extrema().values for ( -1 === s.indexOf(0) && (s = [0].concat(s)), -1 === s.indexOf(1) && s.push(1), n = s[0], e = 1; e < s.length; e++ ) (r = s[e]), (t = this.split(n, r)), (t._t1 = n), (t._t2 = r), o.push(t), (n = r) return ( o.forEach(function (e) { for (n = 0, r = 0; r <= 1; ) for (r = n + i; r <= 1.01; r += i) if (((t = e.split(n, r)), !t.simple())) { if (((r -= i), Ki(n - r) < i)) return [] ;(t = e.split(n, r)), (t._t1 = qi.map(n, 0, 1, e._t1, e._t2)), (t._t2 = qi.map(r, 0, 1, e._t1, e._t2)), a.push(t), (n = r) break } n < 1 && ((t = e.split(n, 1)), (t._t1 = qi.map(n, 0, 1, e._t1, e._t2)), (t._t2 = e._t2), a.push(t)) }), a ) } scale(e) { const t = this.order let n = !1 if (('function' === typeof e && (n = e), n && 2 === t)) return this.raise().scale(n) const r = this.clockwise, i = n ? n(0) : e, o = n ? n(1) : e, a = [this.offset(0, 10), this.offset(1, 10)], s = this.points, u = [], l = qi.lli4(a[0], a[0].c, a[1], a[1].c) if (!l) throw new Error('cannot scale this curve. Try reducing it first.') return ( [0, 1].forEach(function (e) { const n = (u[e * t] = qi.copy(s[e * t])) ;(n.x += (e ? o : i) * a[e].n.x), (n.y += (e ? o : i) * a[e].n.y) }), n ? ([0, 1].forEach(function (i) { if (2 !== t || !i) { var o = s[i + 1], a = { x: o.x - l.x, y: o.y - l.y }, c = n ? n((i + 1) / t) : e n && !r && (c = -c) var d = Ji(a.x * a.x + a.y * a.y) ;(a.x /= d), (a.y /= d), (u[i + 1] = { x: o.x + c * a.x, y: o.y + c * a.y }) } }), new to(u)) : ([0, 1].forEach((e) => { if (2 === t && e) return const n = u[e * t], r = this.derivative(e), i = { x: n.x + r.x, y: n.y + r.y } u[e + 1] = qi.lli4(n, i, l, s[e + 1]) }), new to(u)) ) } outline(e, t, n, r) { t = 'undefined' === typeof t ? e : t const i = this.reduce(), o = i.length, a = [] let s, u = [], l = 0, c = this.length() const d = 'undefined' !== typeof n && 'undefined' !== typeof r function f(e, t, n, r, i) { return function (o) { const a = r / n, s = (r + i) / n, u = t - e return qi.map(o, 0, 1, e + a * u, e + s * u) } } i.forEach(function (i) { const o = i.length() d ? (a.push(i.scale(f(e, n, c, l, o))), u.push(i.scale(f(-t, -r, c, l, o)))) : (a.push(i.scale(e)), u.push(i.scale(-t))), (l += o) }), (u = u .map(function (e) { return ( (s = e.points), s[3] ? (e.points = [s[3], s[2], s[1], s[0]]) : (e.points = [s[2], s[1], s[0]]), e ) }) .reverse()) const h = a[0].points[0], p = a[o - 1].points[a[o - 1].points.length - 1], v = u[o - 1].points[u[o - 1].points.length - 1], m = u[0].points[0], g = qi.makeline(v, h), y = qi.makeline(p, m), b = [g].concat(a).concat([y]).concat(u) b.length return new Wi(b) } outlineshapes(e, t, n) { t = t || e const r = this.outline(e, t).curves, i = [] for (let o = 1, a = r.length; o < a / 2; o++) { const e = qi.makeshape(r[o], r[a - o], n) ;(e.startcap.virtual = o > 1), (e.endcap.virtual = o < a / 2 - 1), i.push(e) } return i } intersects(e, t) { return e ? e.p1 && e.p2 ? this.lineIntersects(e) : (e instanceof to && (e = e.reduce()), this.curveintersects(this.reduce(), e, t)) : this.selfintersects(t) } lineIntersects(e) { const t = Zi(e.p1.x, e.p2.x), n = Zi(e.p1.y, e.p2.y), r = $i(e.p1.x, e.p2.x), i = $i(e.p1.y, e.p2.y) return qi.roots(this.points, e).filter((e) => { var o = this.get(e) return qi.between(o.x, t, r) && qi.between(o.y, n, i) }) } selfintersects(e) { const t = this.reduce(), n = t.length - 2, r = [] for (let i, o, a, s = 0; s < n; s++) (o = t.slice(s, s + 1)), (a = t.slice(s + 2)), (i = this.curveintersects(o, a, e)), r.push(...i) return r } curveintersects(e, t, n) { const r = [] e.forEach(function (e) { t.forEach(function (t) { e.overlaps(t) && r.push({ left: e, right: t }) }) }) let i = [] return ( r.forEach(function (e) { const t = qi.pairiteration(e.left, e.right, n) t.length > 0 && (i = i.concat(t)) }), i ) } arcs(e) { return (e = e || 0.5), this._iterate(e, []) } _error(e, t, n, r) { const i = (r - n) / 4, o = this.get(n + i), a = this.get(r - i), s = qi.dist(e, t), u = qi.dist(e, o), l = qi.dist(e, a) return Ki(u - s) + Ki(l - s) } _iterate(e, t) { let n, r = 0, i = 1 do { ;(n = 0), (i = 1) let o, a, s, u, l, c = this.get(r), d = !1, f = !1, h = i, p = 1, v = 0 do { if ( ((f = d), (u = s), (h = (r + i) / 2), v++, (o = this.get(h)), (a = this.get(i)), (s = qi.getccenter(c, o, a)), (s.interval = { start: r, end: i }), (d = this._error(s, c, r, i) <= e), (l = f && !d), l || (p = i), d) ) { if (i >= 1) { if (((s.interval.end = p = 1), (u = s), i > 1)) { let e = { x: s.x + s.r * Xi(s.e), y: s.y + s.r * Yi(s.e) } s.e += qi.angle({ x: s.x, y: s.y }, e, this.get(1)) } break } i += (i - r) / 2 } else i = h } while (!l && n++ < 100) if (n >= 100) break ;(u = u || s), t.push(u), (r = p) } while (i < 1) return t } } var no = r(1527), ro = r(2462), io = r(2816) function oo(e, t) { var n = Object.keys(e) if (Object.getOwnPropertySymbols) { var r = Object.getOwnPropertySymbols(e) t && (r = r.filter(function (t) { return Object.getOwnPropertyDescriptor(e, t).enumerable })), n.push.apply(n, r) } return n } function ao(e) { for (var t = 1; t < arguments.length; t++) { var n = null != arguments[t] ? arguments[t] : {} t % 2 ? oo(Object(n), !0).forEach(function (t) { uo(e, t, n[t]) }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(n)) : oo(Object(n)).forEach(function (t) { Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(n, t)) }) } return e } function so(e) { return (so = 'function' === typeof Symbol && 'symbol' === typeof Symbol.iterator ? function (e) { return typeof e } : function (e) { return e && 'function' === typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? 'symbol' : typeof e })(e) } function uo(e, t, n) { return ( t in e ? Object.defineProperty(e, t, { value: n, enumerable: !0, configurable: !0, writable: !0, }) : (e[t] = n), e ) } function lo(e, t) { return (lo = Object.setPrototypeOf || function (e, t) { return (e.__proto__ = t), e })(e, t) } function co() { if ('undefined' === typeof Reflect || !Reflect.construct) return !1 if (Reflect.construct.sham) return !1 if ('function' === typeof Proxy) return !0 try { return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})), !0 } catch (e) { return !1 } } function fo(e, t, n) { return (fo = co() ? Reflect.construct : function (e, t, n) { var r = [null] r.push.apply(r, t) var i = new (Function.bind.apply(e, r))() return n && lo(i, n.prototype), i }).apply(null, arguments) } function ho(e, t) { return ( (function (e) { if (Array.isArray(e)) return e })(e) || (function (e, t) { var n = null == e ? null : ('undefined' !== typeof Symbol && e[Symbol.iterator]) || e['@@iterator'] if (null == n) return var r, i, o = [], a = !0, s = !1 try { for ( n = n.call(e); !(a = (r = n.next()).done) && (o.push(r.value), !t || o.length !== t); a = !0 ); } catch (u) { ;(s = !0), (i = u) } finally { try { a || null == n.return || n.return() } finally { if (s) throw i } } return o })(e, t) || vo(e, t) || (function () { throw new TypeError( 'Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.', ) })() ) } function po(e) { return ( (function (e) { if (Array.isArray(e)) return mo(e) })(e) || (function (e) { if ( ('undefined' !== typeof Symbol && null != e[Symbol.iterator]) || null != e['@@iterator'] ) return Array.from(e) })(e) || vo(e) || (function () { throw new TypeError( 'Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.', ) })() ) } function vo(e, t) { if (e) { if ('string' === typeof e) return mo(e, t) var n = Object.prototype.toString.call(e).slice(8, -1) return ( 'Object' === n && e.constructor && (n = e.constructor.name), 'Map' === n || 'Set' === n ? Array.from(e) : 'Arguments' === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n) ? mo(e, t) : void 0 ) } } function mo(e, t) { ;(null == t || t > e.length) && (t = e.length) for (var n = 0, r = new Array(t); n < t; n++) r[n] = e[n] return r } !(function (e, t) { void 0 === t && (t = {}) var n = t.insertAt if (e && 'undefined' !== typeof document) { var r = document.head || document.getElementsByTagName('head')[0], i = document.createElement('style') ;(i.type = 'text/css'), 'top' === n && r.firstChild ? r.insertBefore(i, r.firstChild) : r.appendChild(i), i.styleSheet ? (i.styleSheet.cssText = e) : i.appendChild(document.createTextNode(e)) } })( '.force-graph-container canvas {\n display: block;\n user-select: none;\n outline: none;\n -webkit-tap-highlight-color: transparent;\n}\n\n.force-graph-container .graph-tooltip {\n position: absolute;\n transform: translate(-50%, 25px);\n font-family: sans-serif;\n font-size: 16px;\n padding: 4px;\n border-radius: 3px;\n color: #eee;\n background: rgba(0,0,0,0.65);\n visibility: hidden; /* by default */\n}\n\n.force-graph-container .clickable {\n cursor: pointer;\n}\n\n.force-graph-container .grabbable {\n cursor: move;\n cursor: grab;\n cursor: -moz-grab;\n cursor: -webkit-grab;\n}\n\n.force-graph-container .grabbable:active {\n cursor: grabbing;\n cursor: -moz-grabbing;\n cursor: -webkit-grabbing;\n}\n', ) var go = (0, ro.Z)(io.Z) function yo(e, t, n) { t && 'string' === typeof n && e .filter(function (e) { return !e[n] }) .forEach(function (e) { e[n] = go(t(e)) }) } var bo = function (e, t) { return t.onNeedsRedraw && t.onNeedsRedraw() }, wo = (0, b.Z)({ props: { graphData: { default: { nodes: [], links: [] }, onChange: function (e, t) { t.engineRunning = !1 }, }, dagMode: { onChange: function (e, t) { !e && (t.graphData.nodes || []).forEach(function (e) { return (e.fx = e.fy = void 0) }) }, }, dagLevelDistance: {}, dagNodeFilter: { default: function (e) { return !0 }, }, onDagError: { triggerUpdate: !1 }, nodeRelSize: { default: 4, triggerUpdate: !1, onChange: bo }, nodeId: { default: 'id' }, nodeVal: { default: 'val', triggerUpdate: !1, onChange: bo }, nodeColor: { default: 'color', triggerUpdate: !1, onChange: bo }, nodeAutoColorBy: {}, nodeCanvasObject: { triggerUpdate: !1, onChange: bo }, nodeCanvasObjectMode: { default: function () { return 'replace' }, triggerUpdate: !1, onChange: bo, }, nodeVisibility: { default: !0, triggerUpdate: !1, onChange: bo }, linkSource: { default: 'source' }, linkTarget: { default: 'target' }, linkVisibility: { default: !0, triggerUpdate: !1, onChange: bo }, linkColor: { default: 'color', triggerUpdate: !1, onChange: bo }, linkAutoColorBy: {}, linkLineDash: { triggerUpdate: !1, onChange: bo }, linkWidth: { default: 1, triggerUpdate: !1, onChange: bo }, linkCurvature: { default: 0, triggerUpdate: !1, onChange: bo }, linkCanvasObject: { triggerUpdate: !1, onChange: bo }, linkCanvasObjectMode: { default: function () { return 'replace' }, triggerUpdate: !1, onChange: bo, }, linkDirectionalArrowLength: { default: 0, triggerUpdate: !1, onChange: bo }, linkDirectionalArrowColor: { triggerUpdate: !1, onChange: bo }, linkDirectionalArrowRelPos: { default: 0.5, triggerUpdate: !1, onChange: bo }, linkDirectionalParticles: { default: 0 }, linkDirectionalParticleSpeed: { default: 0.01, triggerUpdate: !1 }, linkDirectionalParticleWidth: { default: 4, triggerUpdate: !1 }, linkDirectionalParticleColor: { triggerUpdate: !1 }, globalScale: { default: 1, triggerUpdate: !1 }, d3AlphaMin: { default: 0, triggerUpdate: !1 }, d3AlphaDecay: { default: 0.0228, triggerUpdate: !1, onChange: function (e, t) { t.forceLayout.alphaDecay(e) }, }, d3AlphaTarget: { default: 0, triggerUpdate: !1, onChange: function (e, t) { t.forceLayout.alphaTarget(e) }, }, d3VelocityDecay: { default: 0.4, triggerUpdate: !1, onChange: function (e, t) { t.forceLayout.velocityDecay(e) }, }, warmupTicks: { default: 0, triggerUpdate: !1 }, cooldownTicks: { default: 1 / 0, triggerUpdate: !1 }, cooldownTime: { default: 15e3, triggerUpdate: !1 }, onUpdate: { default: function () {}, triggerUpdate: !1 }, onFinishUpdate: { default: function () {}, triggerUpdate: !1 }, onEngineTick: { default: function () {}, triggerUpdate: !1 }, onEngineStop: { default: function () {}, triggerUpdate: !1 }, onNeedsRedraw: { triggerUpdate: !1 }, isShadow: { default: !1, triggerUpdate: !1 }, }, methods: { d3Force: function (e, t, n) { return void 0 === n ? e.forceLayout.force(t) : (e.forceLayout.force(t, n), this) }, d3ReheatSimulation: function (e) { return e.forceLayout.alpha(1), this.resetCountdown(), this }, resetCountdown: function (e) { return (e.cntTicks = 0), (e.startTickTime = new Date()), (e.engineRunning = !0), this }, isEngineRunning: function (e) { return !!e.engineRunning }, tickFrame: function (e) { return ( !e.isShadow && e.engineRunning && (++e.cntTicks > e.cooldownTicks || new Date() - e.startTickTime > e.cooldownTime || (e.d3AlphaMin > 0 && e.forceLayout.alpha() < e.d3AlphaMin) ? ((e.engineRunning = !1), e.onEngineStop()) : (e.forceLayout.tick(), e.onEngineTick())), (function () { var t = (0, w.default)(e.linkVisibility), n = (0, w.default)(e.linkColor), r = (0, w.default)(e.linkWidth), i = (0, w.default)(e.linkLineDash), o = (0, w.default)(e.linkCurvature), a = (0, w.default)(e.linkCanvasObjectMode), s = e.ctx, u = 2 * e.isShadow, l = e.graphData.links.filter(t) l.forEach(function (e) { var t = o(e) if (!t) return void (e.__controlPoints = null) var n = e.source, r = e.target if (!n || !r || !n.hasOwnProperty('x') || !r.hasOwnProperty('x')) return var i = Math.sqrt(Math.pow(r.x - n.x, 2) + Math.pow(r.y - n.y, 2)) if (i > 0) { var a = Math.atan2(r.y - n.y, r.x - n.x), s = i * t, u = { x: (n.x + r.x) / 2 + s * Math.cos(a - Math.PI / 2), y: (n.y + r.y) / 2 + s * Math.sin(a - Math.PI / 2), } e.__controlPoints = [u.x, u.y] } else { var l = 70 * t e.__controlPoints = [r.x, r.y - l, r.x + l, r.y] } }) var c = [], d = [], f = l if (e.linkCanvasObject) { var h = [], p = [] l.forEach(function (e) { return ({ before: c, after: d, replace: h }[a(e)] || p).push(e) }), (f = [].concat(po(c), d, p)), (c = c.concat(h)) } s.save(), c.forEach(function (t) { return e.linkCanvasObject(t, s, e.globalScale) }), s.restore() var v = (0, no.Z)(f, [n, r, i]) s.save(), Object.entries(v).forEach(function (t) { var n = ho(t, 2), r = n[0], o = n[1], a = r && 'undefined' !== r ? r : 'rgba(0,0,0,0.15)' Object.entries(o).forEach(function (t) { var n = ho(t, 2), r = n[0], o = n[1], l = (r || 1) / e.globalScale + u Object.entries(o).forEach(function (e) { var t = ho(e, 2) t[0] var n = t[1], r = i(n[0]) s.beginPath(), n.forEach(function (e) { var t = e.source, n = e.target if (t && n && t.hasOwnProperty('x') && n.hasOwnProperty('x')) { s.moveTo(t.x, t.y) var r = e.__controlPoints r ? s[2 === r.length ? 'quadraticCurveTo' : 'bezierCurveTo'].apply( s, po(r).concat([n.x, n.y]), ) : s.lineTo(n.x, n.y) } }), (s.strokeStyle = a), (s.lineWidth = l), s.setLineDash(r || []), s.stroke() }) }) }), s.restore(), s.save(), d.forEach(function (t) { return e.linkCanvasObject(t, s, e.globalScale) }), s.restore() })(), !e.isShadow && (function () { var t = (0, w.default)(e.linkDirectionalArrowLength), n = (0, w.default)(e.linkDirectionalArrowRelPos), r = (0, w.default)(e.linkVisibility), i = (0, w.default)(e.linkDirectionalArrowColor || e.linkColor), o = (0, w.default)(e.nodeVal), a = e.ctx a.save(), e.graphData.links.filter(r).forEach(function (r) { var s = t(r) if (s && !(s < 0)) { var u = r.source, l = r.target if (u && l && u.hasOwnProperty('x') && l.hasOwnProperty('x')) { var c = Math.sqrt(Math.max(0, o(u) || 1)) * e.nodeRelSize, d = Math.sqrt(Math.max(0, o(l) || 1)) * e.nodeRelSize, f = Math.min(1, Math.max(0, n(r))), h = i(r) || 'rgba(0,0,0,0.28)', p = s / 1.6 / 2, v = r.__controlPoints && fo(to, [u.x, u.y].concat(po(r.__controlPoints), [l.x, l.y])), m = v ? function (e) { return v.get(e) } : function (e) { return { x: u.x + (l.x - u.x) * e || 0, y: u.y + (l.y - u.y) * e || 0, } }, g = v ? v.length() : Math.sqrt(Math.pow(l.x - u.x, 2) + Math.pow(l.y - u.y, 2)), y = c + s + (g - c - d - s) * f, b = m(y / g), w = m((y - s) / g), x = m((y - 0.8 * s) / g), E = Math.atan2(b.y - w.y, b.x - w.x) - Math.PI / 2 a.beginPath(), a.moveTo(b.x, b.y), a.lineTo(w.x + p * Math.cos(E), w.y + p * Math.sin(E)), a.lineTo(x.x, x.y), a.lineTo(w.x - p * Math.cos(E), w.y - p * Math.sin(E)), (a.fillStyle = h), a.fill() } } }), a.restore() })(), !e.isShadow && (function () { var t = (0, w.default)(e.linkDirectionalParticles), n = (0, w.default)(e.linkDirectionalParticleSpeed), r = (0, w.default)(e.linkDirectionalParticleWidth), i = (0, w.default)(e.linkVisibility), o = (0, w.default)(e.linkDirectionalParticleColor || e.linkColor), a = e.ctx a.save(), e.graphData.links.filter(i).forEach(function (i) { var s = t(i) if (i.hasOwnProperty('__photons') && i.__photons.length) { var u = i.source, l = i.target if (u && l && u.hasOwnProperty('x') && l.hasOwnProperty('x')) { var c = n(i), d = i.__photons || [], f = Math.max(0, r(i) / 2) / Math.sqrt(e.globalScale), h = o(i) || 'rgba(0,0,0,0.28)' a.fillStyle = h var p = i.__controlPoints ? fo(to, [u.x, u.y].concat(po(i.__controlPoints), [l.x, l.y])) : null, v = 0, m = !1 d.forEach(function (e) { var t = !!e.__singleHop if ( (e.hasOwnProperty('__progressRatio') || (e.__progressRatio = t ? 0 : v / s), !t && v++, (e.__progressRatio += c), e.__progressRatio >= 1) ) { if (t) return void (m = !0) e.__progressRatio = e.__progressRatio % 1 } var n = e.__progressRatio, r = p ? p.get(n) : { x: u.x + (l.x - u.x) * n || 0, y: u.y + (l.y - u.y) * n || 0 } a.beginPath(), a.arc(r.x, r.y, f, 0, 2 * Math.PI, !1), a.fill() }), m && (i.__photons = i.__photons.filter(function (e) { return !e.__singleHop || e.__progressRatio <= 1 })) } } }), a.restore() })(), (function () { var t = (0, w.default)(e.nodeVisibility), n = (0, w.default)(e.nodeVal), r = (0, w.default)(e.nodeColor), i = (0, w.default)(e.nodeCanvasObjectMode), o = e.ctx, a = e.isShadow / e.globalScale, s = e.graphData.nodes.filter(t) o.save(), s.forEach(function (t) { var s = i(t) if ( !e.nodeCanvasObject || ('before' !== s && 'replace' !== s) || (e.nodeCanvasObject(t, o, e.globalScale), 'replace' !== s) ) { var u = Math.sqrt(Math.max(0, n(t) || 1)) * e.nodeRelSize + a o.beginPath(), o.arc(t.x, t.y, u, 0, 2 * Math.PI, !1), (o.fillStyle = r(t) || 'rgba(31, 120, 180, 0.92)'), o.fill(), e.nodeCanvasObject && 'after' === s && e.nodeCanvasObject(t, e.ctx, e.globalScale) } else o.restore() }), o.restore() })(), this ) }, emitParticle: function (e, t) { return ( t && (!t.__photons && (t.__photons = []), t.__photons.push({ __singleHop: !0 })), this ) }, }, stateInit: function () { return { forceLayout: (0, Oi.Z)() .force('link', (0, Ci.Z)()) .force('charge', (0, Si.Z)()) .force('center', (0, Ai.Z)()) .force('dagRadial', null) .stop(), engineRunning: !1, } }, init: function (e, t) { t.ctx = e }, update: function (e) { if ( ((e.engineRunning = !1), e.onUpdate(), null !== e.nodeAutoColorBy && yo(e.graphData.nodes, (0, w.default)(e.nodeAutoColorBy), e.nodeColor), null !== e.linkAutoColorBy && yo(e.graphData.links, (0, w.default)(e.linkAutoColorBy), e.linkColor), e.graphData.links.forEach(function (t) { ;(t.source = t[e.linkSource]), (t.target = t[e.linkTarget]) }), !e.isShadow) ) { var t = (0, w.default)(e.linkDirectionalParticles) e.graphData.links.forEach(function (e) { var n = Math.round(Math.abs(t(e))) n ? (e.__photons = po(Array(n)).map(function () { return {} })) : delete e.__photons }) } e.forceLayout.stop().alpha(1).nodes(e.graphData.nodes) var n = e.forceLayout.force('link') n && n .id(function (t) { return t[e.nodeId] }) .links(e.graphData.links) var r = e.dagMode && (function (e, t) { var n = e.nodes, r = e.links, i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}, o = i.nodeFilter, a = void 0 === o ? function () { return !0 } : o, s = i.onLoopError, u = void 0 === s ? function (e) { throw 'Invalid DAG structure! Found cycle in node path: '.concat( e.join(' -> '), '.', ) } : s, l = {} n.forEach(function (e) { return (l[t(e)] = { data: e, out: [], depth: -1, skip: !a(e) }) }), r.forEach(function (e) { var n = e.source, r = e.target, i = u(n), o = u(r) if (!l.hasOwnProperty(i)) throw 'Missing source node with id: '.concat(i) if (!l.hasOwnProperty(o)) throw 'Missing target node with id: '.concat(o) var a = l[i], s = l[o] function u(e) { return 'object' === so(e) ? t(e) : e } a.out.push(s) }) var c = [] return ( d(Object.values(l)), Object.assign.apply( Object, [{}].concat( po( Object.entries(l) .filter(function (e) { return !ho(e, 2)[1].skip }) .map(function (e) { var t = ho(e, 2) return uo({}, t[0], t[1].depth) }), ), ), ) ) function d(e) { for ( var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : [], r = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 0, i = 0, o = e.length; i < o; i++ ) { var a = e[i] if (-1 !== n.indexOf(a)) if ( 'continue' === (function () { var e = [].concat(po(n.slice(n.indexOf(a))), [a]).map(function (e) { return t(e.data) }) return ( c.some(function (t) { return ( t.length === e.length && t.every(function (t, n) { return t === e[n] }) ) }) || (c.push(e), u(e)), 'continue' ) })() ) continue r > a.depth && ((a.depth = r), d(a.out, [].concat(po(n), [a]), r + (a.skip ? 0 : 1))) } } })( e.graphData, function (t) { return t[e.nodeId] }, { nodeFilter: e.dagNodeFilter, onLoopError: e.onDagError || void 0 }, ), i = Math.max.apply(Math, po(Object.values(r || []))), o = e.dagLevelDistance || (e.graphData.nodes.length / (i || 1)) * 2 * (-1 !== ['radialin', 'radialout'].indexOf(e.dagMode) ? 0.7 : 1) if (e.dagMode) { var a = function (t, n) { return function (a) { return t ? (r[a[e.nodeId]] - i / 2) * o * (n ? -1 : 1) : void 0 } }, s = a(-1 !== ['lr', 'rl'].indexOf(e.dagMode), 'rl' === e.dagMode), u = a(-1 !== ['td', 'bu'].indexOf(e.dagMode), 'bu' === e.dagMode) e.graphData.nodes.filter(e.dagNodeFilter).forEach(function (e) { ;(e.fx = s(e)), (e.fy = u(e)) }) } e.forceLayout.force( 'dagRadial', -1 !== ['radialin', 'radialout'].indexOf(e.dagMode) ? (0, Pi.Z)(function (t) { var n = r[t[e.nodeId]] || -1 return ('radialin' === e.dagMode ? i - n : n) * o }).strength(function (t) { return e.dagNodeFilter(t) ? 1 : 0 }) : null, ) for ( var l = 0; l < e.warmupTicks && !(e.d3AlphaMin > 0 && e.forceLayout.alpha() < e.d3AlphaMin); l++ ) e.forceLayout.tick() this.resetCountdown(), e.onFinishUpdate() }, }) function xo(e, t) { var n = e instanceof Array ? e : [e], r = new t() return { linkProp: function (e) { return { default: r[e](), onChange: function (t, r) { n.forEach(function (n) { return r[n][e](t) }) }, triggerUpdate: !1, } }, linkMethod: function (e) { return function (t) { for (var r = arguments.length, i = new Array(r > 1 ? r - 1 : 0), o = 1; o < r; o++) i[o - 1] = arguments[o] var a = [] return ( n.forEach(function (n) { var r = t[n], o = r[e].apply(r, i) o !== r && a.push(o) }), a.length ? a[0] : this ) } }, } } var Eo = xo('forceGraph', wo), ko = xo(['forceGraph', 'shadowGraph'], wo), _o = Object.assign.apply( Object, po( [ 'nodeColor', 'nodeAutoColorBy', 'nodeCanvasObject', 'nodeCanvasObjectMode', 'linkColor', 'linkAutoColorBy', 'linkLineDash', 'linkWidth', 'linkCanvasObject', 'linkCanvasObjectMode', 'linkDirectionalArrowLength', 'linkDirectionalArrowColor', 'linkDirectionalArrowRelPos', 'linkDirectionalParticles', 'linkDirectionalParticleSpeed', 'linkDirectionalParticleWidth', 'linkDirectionalParticleColor', 'dagMode', 'dagLevelDistance', 'dagNodeFilter', 'onDagError', 'd3AlphaMin', 'd3AlphaDecay', 'd3VelocityDecay', 'warmupTicks', 'cooldownTicks', 'cooldownTime', 'onEngineTick', 'onEngineStop', ].map(function (e) { return uo({}, e, Eo.linkProp(e)) }), ).concat( po( [ 'nodeRelSize', 'nodeId', 'nodeVal', 'nodeVisibility', 'linkSource', 'linkTarget', 'linkVisibility', 'linkCurvature', ].map(function (e) { return uo({}, e, ko.linkProp(e)) }), ), ), ), To = Object.assign.apply( Object, po( ['d3Force', 'd3ReheatSimulation', 'emitParticle'].map(function (e) { return uo({}, e, Eo.linkMethod(e)) }), ), ) function Oo(e) { if (e.canvas) { var t = e.canvas.width, n = e.canvas.height 300 === t && 150 === n && (t = n = 0) var r = window.devicePixelRatio ;(t /= r), (n /= r), [e.canvas, e.shadowCanvas].forEach(function (i) { ;(i.style.width = ''.concat(e.width, 'px')), (i.style.height = ''.concat(e.height, 'px')), (i.width = e.width * r), (i.height = e.height * r), t || n || i.getContext('2d').scale(r, r) }) var i = Yr(e.canvas).k e.zoom.translateBy(e.zoom.__baseElem, (e.width - t) / 2 / i, (e.height - n) / 2 / i), (e.needsRedraw = !0) } } function Co(e) { var t = window.devicePixelRatio e.setTransform(t, 0, 0, t, 0, 0) } function So(e, t, n) { e.save(), Co(e), e.clearRect(0, 0, t, n), e.restore() } var Ao = (0, b.Z)({ props: ao( { width: { default: window.innerWidth, onChange: function (e, t) { return Oo(t) }, triggerUpdate: !1, }, height: { default: window.innerHeight, onChange: function (e, t) { return Oo(t) }, triggerUpdate: !1, }, graphData: { default: { nodes: [], links: [] }, onChange: function (e, t) { ;[ { type: 'Node', objs: e.nodes }, { type: 'Link', objs: e.links }, ].forEach(function (e) { var n = e.type e.objs .filter(function (e) { if (!e.hasOwnProperty('__indexColor')) return !0 var n = t.colorTracker.lookup(e.__indexColor) return !n || !n.hasOwnProperty('d') || n.d !== e }) .forEach(function (e) { e.__indexColor = t.colorTracker.register({ type: n, d: e }) }) }), t.forceGraph.graphData(e), t.shadowGraph.graphData(e) }, triggerUpdate: !1, }, backgroundColor: { onChange: function (e, t) { t.canvas && e && (t.canvas.style.background = e) }, triggerUpdate: !1, }, nodeLabel: { default: 'name', triggerUpdate: !1 }, nodePointerAreaPaint: { onChange: function (e, t) { t.shadowGraph.nodeCanvasObject( e ? function (t, n, r) { return e(t, t.__indexColor, n, r) } : null, ) }, triggerUpdate: !1, }, linkPointerAreaPaint: { onChange: function (e, t) { t.shadowGraph.linkCanvasObject( e ? function (t, n, r) { return e(t, t.__indexColor, n, r) } : null, ) }, triggerUpdate: !1, }, linkLabel: { default: 'name', triggerUpdate: !1 }, linkHoverPrecision: { default: 4, triggerUpdate: !1 }, minZoom: { default: 0.01, onChange: function (e, t) { t.zoom.scaleExtent([e, t.zoom.scaleExtent()[1]]) }, triggerUpdate: !1, }, maxZoom: { default: 1e3, onChange: function (e, t) { t.zoom.scaleExtent([t.zoom.scaleExtent()[0], e]) }, triggerUpdate: !1, }, enableNodeDrag: { default: !0, triggerUpdate: !1 }, enableZoomInteraction: { default: !0, triggerUpdate: !1 }, enablePanInteraction: { default: !0, triggerUpdate: !1 }, enableZoomPanInteraction: { default: !0, triggerUpdate: !1 }, enablePointerInteraction: { default: !0, onChange: function (e, t) { t.hoverObj = null }, triggerUpdate: !1, }, autoPauseRedraw: { default: !0, triggerUpdate: !1 }, onNodeDrag: { default: function () {}, triggerUpdate: !1 }, onNodeDragEnd: { default: function () {}, triggerUpdate: !1 }, onNodeClick: { triggerUpdate: !1 }, onNodeRightClick: { triggerUpdate: !1 }, onNodeHover: { triggerUpdate: !1 }, onLinkClick: { triggerUpdate: !1 }, onLinkRightClick: { triggerUpdate: !1 }, onLinkHover: { triggerUpdate: !1 }, onBackgroundClick: { triggerUpdate: !1 }, onBackgroundRightClick: { triggerUpdate: !1 }, onZoom: { default: function () {}, triggerUpdate: !1 }, onZoomEnd: { default: function () {}, triggerUpdate: !1 }, onRenderFramePre: { triggerUpdate: !1 }, onRenderFramePost: { triggerUpdate: !1 }, }, _o, ), aliases: { stopAnimation: 'pauseAnimation' }, methods: ao( { graph2ScreenCoords: function (e, t, n) { var r = Yr(e.canvas) return { x: t * r.k + r.x, y: n * r.k + r.y } }, screen2GraphCoords: function (e, t, n) { var r = Yr(e.canvas) return { x: (t - r.x) / r.k, y: (n - r.y) / r.k } }, centerAt: function (e, t, n, r) { if (!e.canvas) return null if (void 0 !== t || void 0 !== n) { var i = Object.assign( {}, void 0 !== t ? { x: t } : {}, void 0 !== n ? { y: n } : {}, ) return ( r ? new We.ZP.Tween(o()) .to(i, r) .easing(We.ZP.Easing.Quadratic.Out) .onUpdate(a) .start() : a(i), this ) } return o() function o() { var t = Yr(e.canvas) return { x: (e.width / 2 - t.x) / t.k, y: (e.height / 2 - t.y) / t.k } } function a(t) { var n = t.x, r = t.y e.zoom.translateTo( e.zoom.__baseElem, void 0 === n ? o().x : n, void 0 === r ? o().y : r, ), (e.needsRedraw = !0) } }, zoom: function (e, t, n) { return e.canvas ? void 0 !== t ? (n ? new We.ZP.Tween({ k: r() }) .to({ k: t }, n) .easing(We.ZP.Easing.Quadratic.Out) .onUpdate(function (e) { return i(e.k) }) .start() : i(t), this) : r() : null function r() { return Yr(e.canvas).k } function i(t) { e.zoom.scaleTo(e.zoom.__baseElem, t), (e.needsRedraw = !0) } }, zoomToFit: function (e) { for ( var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0, n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 10, r = arguments.length, i = new Array(r > 3 ? r - 3 : 0), o = 3; o < r; o++ ) i[o - 3] = arguments[o] var a = this.getGraphBbox.apply(this, i) if (a) { var s = { x: (a.x[0] + a.x[1]) / 2, y: (a.y[0] + a.y[1]) / 2 }, u = Math.max( 1e-12, Math.min( 1e12, (e.width - 2 * n) / (a.x[1] - a.x[0]), (e.height - 2 * n) / (a.y[1] - a.y[0]), ), ) this.centerAt(s.x, s.y, t), this.zoom(u, t) } return this }, getGraphBbox: function (e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : function () { return !0 }, n = (0, w.default)(e.nodeVal), r = function (t) { return Math.sqrt(Math.max(0, n(t) || 1)) * e.nodeRelSize }, i = e.graphData.nodes.filter(t).map(function (e) { return { x: e.x, y: e.y, r: r(e) } }) return i.length ? { x: [ (0, hi.Z)(i, function (e) { return e.x - e.r }), (0, pi.Z)(i, function (e) { return e.x + e.r }), ], y: [ (0, hi.Z)(i, function (e) { return e.y - e.r }), (0, pi.Z)(i, function (e) { return e.y + e.r }), ], } : null }, pauseAnimation: function (e) { return ( e.animationFrameRequestId && (cancelAnimationFrame(e.animationFrameRequestId), (e.animationFrameRequestId = null)), this ) }, resumeAnimation: function (e) { return e.animationFrameRequestId || this._animationCycle(), this }, _destructor: function () { this.pauseAnimation(), this.graphData({ nodes: [], links: [] }) }, }, To, ), stateInit: function () { return { lastSetZoom: 1, zoom: ai(), forceGraph: new wo(), shadowGraph: new wo() .cooldownTicks(0) .nodeColor('__indexColor') .linkColor('__indexColor') .isShadow(!0), colorTracker: new Ti(), } }, init: function (e, t) { e.innerHTML = '' var n = document.createElement('div') n.classList.add('force-graph-container'), (n.style.position = 'relative'), e.appendChild(n), (t.canvas = document.createElement('canvas')), t.backgroundColor && (t.canvas.style.background = t.backgroundColor), n.appendChild(t.canvas), (t.shadowCanvas = document.createElement('canvas')) var r = t.canvas.getContext('2d'), i = t.shadowCanvas.getContext('2d'), o = { x: -1e12, y: -1e12 }, a = function () { var e = null, n = window.devicePixelRatio, r = o.x > 0 && o.y > 0 ? i.getImageData(o.x * n, o.y * n, 1, 1) : null return r && (e = t.colorTracker.lookup(r.data)), e } zn(t.canvas).call( (function () { var e, t, n, r, i = li, o = ci, a = di, s = fi, u = {}, l = (0, Hn.Z)('start', 'drag', 'end'), c = 0, d = 0 function f(e) { e.on('mousedown.drag', h) .filter(s) .on('touchstart.drag', m) .on('touchmove.drag', g, Bn) .on('touchend.drag touchcancel.drag', y) .style('touch-action', 'none') .style('-webkit-tap-highlight-color', 'rgba(0,0,0,0)') } function h(a, s) { if (!r && i.call(this, a, s)) { var u = b(this, o.call(this, a, s), a, s, 'mouse') u && (zn(a.view).on('mousemove.drag', p, Fn).on('mouseup.drag', v, Fn), Gn(a.view), Vn(a), (n = !1), (e = a.clientX), (t = a.clientY), u('start', a)) } } function p(r) { if ((Un(r), !n)) { var i = r.clientX - e, o = r.clientY - t n = i * i + o * o > d } u.mouse('drag', r) } function v(e) { zn(e.view).on('mousemove.drag mouseup.drag', null), qn(e.view, n), Un(e), u.mouse('end', e) } function m(e, t) { if (i.call(this, e, t)) { var n, r, a = e.changedTouches, s = o.call(this, e, t), u = a.length for (n = 0; n < u; ++n) (r = b(this, s, e, t, a[n].identifier, a[n])) && (Vn(e), r('start', e, a[n])) } } function g(e) { var t, n, r = e.changedTouches, i = r.length for (t = 0; t < i; ++t) (n = u[r[t].identifier]) && (Un(e), n('drag', e, r[t])) } function y(e) { var t, n, i = e.changedTouches, o = i.length for ( r && clearTimeout(r), r = setTimeout(function () { r = null }, 500), t = 0; t < o; ++t ) (n = u[i[t].identifier]) && (Vn(e), n('end', e, i[t])) } function b(e, t, n, r, i, o) { var s, d, h, p = l.copy(), v = Zn(o || n, t) if ( null != (h = a.call( e, new ui('beforestart', { sourceEvent: n, target: f, identifier: i, active: c, x: v[0], y: v[1], dx: 0, dy: 0, dispatch: p, }), r, )) ) return ( (s = h.x - v[0] || 0), (d = h.y - v[1] || 0), function n(o, a, l) { var m, g = v switch (o) { case 'start': ;(u[i] = n), (m = c++) break case 'end': delete u[i], --c case 'drag': ;(v = Zn(l || a, t)), (m = c) } p.call( o, e, new ui(o, { sourceEvent: a, subject: h, target: f, identifier: i, active: m, x: v[0] + s, y: v[1] + d, dx: v[0] - g[0], dy: v[1] - g[1], dispatch: p, }), r, ) } ) } return ( (f.filter = function (e) { return arguments.length ? ((i = 'function' === typeof e ? e : si(!!e)), f) : i }), (f.container = function (e) { return arguments.length ? ((o = 'function' === typeof e ? e : si(e)), f) : o }), (f.subject = function (e) { return arguments.length ? ((a = 'function' === typeof e ? e : si(e)), f) : a }), (f.touchable = function (e) { return arguments.length ? ((s = 'function' === typeof e ? e : si(!!e)), f) : s }), (f.on = function () { var e = l.on.apply(l, arguments) return e === l ? f : e }), (f.clickDistance = function (e) { return arguments.length ? ((d = (e = +e) * e), f) : Math.sqrt(d) }), f ) })() .subject(function () { if (!t.enableNodeDrag) return null var e = a() return e && 'Node' === e.type ? e.d : null }) .on('start', function (e) { var n = e.subject ;(n.__initialDragPos = { x: n.x, y: n.y, fx: n.fx, fy: n.fy }), e.active || ((n.fx = n.x), (n.fy = n.y)), t.canvas.classList.add('grabbable') }) .on('drag', function (e) { var n = e.subject, r = n.__initialDragPos, i = e, o = Yr(t.canvas).k, a = { x: r.x + (i.x - r.x) / o - n.x, y: r.y + (i.y - r.y) / o - n.y } ;['x', 'y'].forEach(function (e) { return (n['f'.concat(e)] = n[e] = r[e] + (i[e] - r[e]) / o) }), t.forceGraph.d3AlphaTarget(0.3).resetCountdown(), (t.isPointerDragging = !0), (n.__dragged = !0), t.onNodeDrag(n, a) }) .on('end', function (e) { var n = e.subject, r = n.__initialDragPos, i = { x: n.x - r.x, y: n.y - r.y } void 0 === r.fx && (n.fx = void 0), void 0 === r.fy && (n.fy = void 0), delete n.__initialDragPos, t.forceGraph.d3AlphaTarget(0).resetCountdown(), t.canvas.classList.remove('grabbable'), (t.isPointerDragging = !1), n.__dragged && (delete n.__dragged, t.onNodeDragEnd(n, i)) }), ), t.zoom((t.zoom.__baseElem = zn(t.canvas))), t.zoom.__baseElem.on('dblclick.zoom', null), t.zoom .filter(function (e) { return ( !e.button && t.enableZoomPanInteraction && (t.enableZoomInteraction || 'wheel' !== e.type) && (t.enablePanInteraction || 'wheel' === e.type) ) }) .on('zoom', function (e) { var n = e.transform ;[r, i].forEach(function (e) { Co(e), e.translate(n.x, n.y), e.scale(n.k, n.k) }), t.onZoom(ao({}, n)), (t.needsRedraw = !0) }) .on('end', function (e) { return t.onZoomEnd(ao({}, e.transform)) }), Oo(t), t.forceGraph .onNeedsRedraw(function () { return (t.needsRedraw = !0) }) .onFinishUpdate(function () { Yr(t.canvas).k === t.lastSetZoom && t.graphData.nodes.length && (t.zoom.scaleTo( t.zoom.__baseElem, (t.lastSetZoom = 4 / Math.cbrt(t.graphData.nodes.length)), ), (t.needsRedraw = !0)) }) var s = document.createElement('div') s.classList.add('graph-tooltip'), n.appendChild(s), ['pointermove', 'pointerdown'].forEach(function (e) { return n.addEventListener( e, function (r) { 'pointerdown' === e && ((t.isPointerPressed = !0), (t.pointerDownEvent = r)), !t.isPointerDragging && 'pointermove' === r.type && t.onBackgroundClick && (r.pressure > 0 || t.isPointerPressed) && ('touch' !== r.pointerType || void 0 === r.movementX || [r.movementX, r.movementY].some(function (e) { return Math.abs(e) > 1 })) && (t.isPointerDragging = !0) var i = (function (e) { var t = e.getBoundingClientRect(), n = window.pageXOffset || document.documentElement.scrollLeft, r = window.pageYOffset || document.documentElement.scrollTop return { top: t.top + r, left: t.left + n } })(n) ;(o.x = r.pageX - i.left), (o.y = r.pageY - i.top), (s.style.top = ''.concat(o.y, 'px')), (s.style.left = ''.concat(o.x, 'px')) }, { passive: !0 }, ) }), n.addEventListener( 'pointerup', function (e) { if (((t.isPointerPressed = !1), t.isPointerDragging)) t.isPointerDragging = !1 else { var n = [e, t.pointerDownEvent] requestAnimationFrame(function () { if (0 === e.button) if (t.hoverObj) { var r = t['on'.concat(t.hoverObj.type, 'Click')] r && r.apply(void 0, [t.hoverObj.d].concat(n)) } else t.onBackgroundClick && t.onBackgroundClick.apply(t, n) if (2 === e.button) if (t.hoverObj) { var i = t['on'.concat(t.hoverObj.type, 'RightClick')] i && i.apply(void 0, [t.hoverObj.d].concat(n)) } else t.onBackgroundRightClick && t.onBackgroundRightClick.apply(t, n) }) } }, { passive: !0 }, ), n.addEventListener('contextmenu', function (e) { return ( !(t.onBackgroundRightClick || t.onNodeRightClick || t.onLinkRightClick) || (e.preventDefault(), !1) ) }), t.forceGraph(r), t.shadowGraph(i) var u = mi()(function () { So(i, t.width, t.height), t.shadowGraph.linkWidth(function (e) { return (0, w.default)(t.linkWidth)(e) + t.linkHoverPrecision }) var e = Yr(t.canvas) t.shadowGraph.globalScale(e.k).tickFrame() }, 800) ;(this._animationCycle = function e() { var n = !t.autoPauseRedraw || !!t.needsRedraw || t.forceGraph.isEngineRunning() || t.graphData.links.some(function (e) { return e.__photons && e.__photons.length }) if (((t.needsRedraw = !1), t.enablePointerInteraction)) { var i = t.isPointerDragging ? null : a() if (i !== t.hoverObj) { var o = t.hoverObj, l = o ? o.type : null, c = i ? i.type : null if (l && l !== c) { var d = t['on'.concat(l, 'Hover')] d && d(null, o.d) } if (c) { var f = t['on'.concat(c, 'Hover')] f && f(i.d, l === c ? o.d : null) } var h = (i && (0, w.default)(t[''.concat(i.type.toLowerCase(), 'Label')])(i.d)) || '' ;(s.style.visibility = h ? 'visible' : 'hidden'), (s.innerHTML = h), t.canvas.classList[ (i && t['on'.concat(c, 'Click')]) || (!i && t.onBackgroundClick) ? 'add' : 'remove' ]('clickable'), (t.hoverObj = i) } n && u() } if (n) { So(r, t.width, t.height) var p = Yr(t.canvas).k t.onRenderFramePre && t.onRenderFramePre(r, p), t.forceGraph.globalScale(p).tickFrame(), t.onRenderFramePost && t.onRenderFramePost(r, p) } We.ZP.update(), (t.animationFrameRequestId = requestAnimationFrame(e)) })() }, update: function (e) {}, }), Po = { width: P().number, height: P().number, graphData: P().shape({ nodes: P().arrayOf(P().object).isRequired, links: P().arrayOf(P().object).isRequired, }), backgroundColor: P().string, nodeRelSize: P().number, nodeId: P().string, nodeLabel: P().oneOfType([P().string, P().func]), nodeVal: P().oneOfType([P().number, P().string, P().func]), nodeVisibility: P().oneOfType([P().bool, P().string, P().func]), nodeColor: P().oneOfType([P().string, P().func]), nodeAutoColorBy: P().oneOfType([P().string, P().func]), onNodeHover: P().func, onNodeClick: P().func, linkSource: P().string, linkTarget: P().string, linkLabel: P().oneOfType([P().string, P().func]), linkVisibility: P().oneOfType([P().bool, P().string, P().func]), linkColor: P().oneOfType([P().string, P().func]), linkAutoColorBy: P().oneOfType([P().string, P().func]), linkWidth: P().oneOfType([P().number, P().string, P().func]), linkCurvature: P().oneOfType([P().number, P().string, P().func]), linkDirectionalArrowLength: P().oneOfType([P().number, P().string, P().func]), linkDirectionalArrowColor: P().oneOfType([P().string, P().func]), linkDirectionalArrowRelPos: P().oneOfType([P().number, P().string, P().func]), linkDirectionalParticles: P().oneOfType([P().number, P().string, P().func]), linkDirectionalParticleSpeed: P().oneOfType([P().number, P().string, P().func]), linkDirectionalParticleWidth: P().oneOfType([P().number, P().string, P().func]), linkDirectionalParticleColor: P().oneOfType([P().string, P().func]), onLinkHover: P().func, onLinkClick: P().func, dagMode: P().oneOf(['td', 'bu', 'lr', 'rl', 'zin', 'zout', 'radialin', 'radialout']), dagLevelDistance: P().number, dagNodeFilter: P().func, onDagError: P().func, d3AlphaMin: P().number, d3AlphaDecay: P().number, d3VelocityDecay: P().number, warmupTicks: P().number, cooldownTicks: P().number, cooldownTime: P().number, onEngineTick: P().func, onEngineStop: P().func, getGraphBbox: P().func, }, Mo = { zoomToFit: P().func, onNodeRightClick: P().func, onNodeDrag: P().func, onNodeDragEnd: P().func, onLinkRightClick: P().func, linkHoverPrecision: P().number, onBackgroundClick: P().func, onBackgroundRightClick: P().func, enablePointerInteraction: P().bool, enableNodeDrag: P().bool, }, Ro = { showNavInfo: P().bool, nodeOpacity: P().number, nodeResolution: P().number, nodeThreeObject: P().oneOfType([P().object, P().string, P().func]), nodeThreeObjectExtend: P().oneOfType([P().bool, P().string, P().func]), linkOpacity: P().number, linkResolution: P().number, linkCurveRotation: P().oneOfType([P().number, P().string, P().func]), linkMaterial: P().oneOfType([P().object, P().string, P().func]), linkThreeObject: P().oneOfType([P().object, P().string, P().func]), linkThreeObjectExtend: P().oneOfType([P().bool, P().string, P().func]), linkPositionUpdate: P().func, linkDirectionalArrowResolution: P().number, linkDirectionalParticleResolution: P().number, forceEngine: P().oneOf(['d3', 'ngraph']), ngraphPhysics: P().object, numDimensions: P().oneOf([1, 2, 3]), }, jo = Object.assign({}, Po, Mo, { linkLineDash: P().oneOfType([P().arrayOf(P().number), P().string, P().func]), nodeCanvasObjectMode: P().oneOfType([P().string, P().func]), nodeCanvasObject: P().func, nodePointerAreaPaint: P().func, linkCanvasObjectMode: P().oneOfType([P().string, P().func]), linkCanvasObject: P().func, linkPointerAreaPaint: P().func, autoPauseRedraw: P().bool, minZoom: P().number, maxZoom: P().number, enableZoomInteraction: P().bool, enablePanInteraction: P().bool, onZoom: P().func, onZoomEnd: P().func, onRenderFramePre: P().func, onRenderFramePost: P().func, }), Do = Object.assign({}, Po, Mo, Ro, { enableNavigationControls: P().bool, controlType: P().oneOf(['trackball', 'orbit', 'fly']), rendererConfig: P().object, extraRenderers: P().arrayOf(P().shape({ render: P().func.isRequired })), }), Lo = Object.assign({}, Po, Ro, { nodeDesc: P().oneOfType([P().string, P().func]), linkDesc: P().oneOfType([P().string, P().func]), }), No = Object.assign({}, Po, Ro, { markerAttrs: P().object, yOffset: P().number, glScale: P().number, }) const Io = y(S, { methodNames: ['getGraphBbox', 'emitParticle', 'd3Force', 'd3ReheatSimulation', 'refresh'], }) ;(Io.displayName = 'ForceGraphVR'), (Io.propTypes = Lo) const zo = y(z, { methodNames: ['getGraphBbox', 'emitParticle', 'd3Force', 'd3ReheatSimulation', 'refresh'], initPropNames: ['markerAttrs'], }) ;(zo.displayName = 'ForceGraphAR'), (zo.propTypes = No) const Ho = y(pt, { methodNames: [ 'emitParticle', 'd3Force', 'd3ReheatSimulation', 'stopAnimation', 'pauseAnimation', 'resumeAnimation', 'cameraPosition', 'zoomToFit', 'getGraphBbox', 'screen2GraphCoords', 'graph2ScreenCoords', 'postProcessingComposer', 'scene', 'camera', 'renderer', 'controls', 'refresh', ], initPropNames: ['controlType', 'rendererConfig', 'extraRenderers'], }) ;(Ho.displayName = 'ForceGraph3D'), (Ho.propTypes = Do) const Bo = y(Ao, { methodNames: [ 'emitParticle', 'd3Force', 'd3ReheatSimulation', 'stopAnimation', 'pauseAnimation', 'resumeAnimation', 'centerAt', 'zoom', 'zoomToFit', 'getGraphBbox', 'screen2GraphCoords', 'graph2ScreenCoords', ], }) ;(Bo.displayName = 'ForceGraph2D'), (Bo.propTypes = jo) }, 2003: function (e, t) { 'use strict' var n = function (e, t) { return (n = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (e, t) { e.__proto__ = t }) || function (e, t) { for (var n in t) t.hasOwnProperty(n) && (e[n] = t[n]) })(e, t) } function r(e, t) { function r() { this.constructor = e } n(e, t), (e.prototype = null === t ? Object.create(t) : ((r.prototype = t.prototype), new r())) } function i(e, t) { var n = 'function' === typeof Symbol && e[Symbol.iterator] if (!n) return e var r, i, o = n.call(e), a = [] try { for (; (void 0 === t || t-- > 0) && !(r = o.next()).done; ) a.push(r.value) } catch (s) { i = { error: s } } finally { try { r && !r.done && (n = o.return) && n.call(o) } finally { if (i) throw i.error } } return a } function o() { for (var e = [], t = 0; t < arguments.length; t++) e = e.concat(i(arguments[t])) return e } var a = function (e, t) { ;(this.target = t), (this.type = e) }, s = (function (e) { function t(t, n) { var r = e.call(this, 'error', n) || this return (r.message = t.message), (r.error = t), r } return r(t, e), t })(a), u = (function (e) { function t(t, n, r) { void 0 === t && (t = 1e3), void 0 === n && (n = '') var i = e.call(this, 'close', r) || this return (i.wasClean = !0), (i.code = t), (i.reason = n), i } return r(t, e), t })(a), l = function () { if ('undefined' !== typeof WebSocket) return WebSocket }, c = { maxReconnectionDelay: 1e4, minReconnectionDelay: 1e3 + 4e3 * Math.random(), minUptime: 5e3, reconnectionDelayGrowFactor: 1.3, connectionTimeout: 4e3, maxRetries: 1 / 0, maxEnqueuedMessages: 1 / 0, startClosed: !1, debug: !1, }, d = (function () { function e(e, t, n) { var r = this void 0 === n && (n = {}), (this._listeners = { error: [], message: [], open: [], close: [] }), (this._retryCount = -1), (this._shouldReconnect = !0), (this._connectLock = !1), (this._binaryType = 'blob'), (this._closeCalled = !1), (this._messageQueue = []), (this.onclose = null), (this.onerror = null), (this.onmessage = null), (this.onopen = null), (this._handleOpen = function (e) { r._debug('open event') var t = r._options.minUptime, n = void 0 === t ? c.minUptime : t clearTimeout(r._connectTimeout), (r._uptimeTimeout = setTimeout(function () { return r._acceptOpen() }, n)), (r._ws.binaryType = r._binaryType), r._messageQueue.forEach(function (e) { return r._ws.send(e) }), (r._messageQueue = []), r.onopen && r.onopen(e), r._listeners.open.forEach(function (t) { return r._callEventListener(e, t) }) }), (this._handleMessage = function (e) { r._debug('message event'), r.onmessage && r.onmessage(e), r._listeners.message.forEach(function (t) { return r._callEventListener(e, t) }) }), (this._handleError = function (e) { r._debug('error event', e.message), r._disconnect(void 0, 'TIMEOUT' === e.message ? 'timeout' : void 0), r.onerror && r.onerror(e), r._debug('exec error listeners'), r._listeners.error.forEach(function (t) { return r._callEventListener(e, t) }), r._connect() }), (this._handleClose = function (e) { r._debug('close event'), r._clearTimeouts(), r._shouldReconnect && r._connect(), r.onclose && r.onclose(e), r._listeners.close.forEach(function (t) { return r._callEventListener(e, t) }) }), (this._url = e), (this._protocols = t), (this._options = n), this._options.startClosed && (this._shouldReconnect = !1), this._connect() } return ( Object.defineProperty(e, 'CONNECTING', { get: function () { return 0 }, enumerable: !0, configurable: !0, }), Object.defineProperty(e, 'OPEN', { get: function () { return 1 }, enumerable: !0, configurable: !0, }), Object.defineProperty(e, 'CLOSING', { get: function () { return 2 }, enumerable: !0, configurable: !0, }), Object.defineProperty(e, 'CLOSED', { get: function () { return 3 }, enumerable: !0, configurable: !0, }), Object.defineProperty(e.prototype, 'CONNECTING', { get: function () { return e.CONNECTING }, enumerable: !0, configurable: !0, }), Object.defineProperty(e.prototype, 'OPEN', { get: function () { return e.OPEN }, enumerable: !0, configurable: !0, }), Object.defineProperty(e.prototype, 'CLOSING', { get: function () { return e.CLOSING }, enumerable: !0, configurable: !0, }), Object.defineProperty(e.prototype, 'CLOSED', { get: function () { return e.CLOSED }, enumerable: !0, configurable: !0, }), Object.defineProperty(e.prototype, 'binaryType', { get: function () { return this._ws ? this._ws.binaryType : this._binaryType }, set: function (e) { ;(this._binaryType = e), this._ws && (this._ws.binaryType = e) }, enumerable: !0, configurable: !0, }), Object.defineProperty(e.prototype, 'retryCount', { get: function () { return Math.max(this._retryCount, 0) }, enumerable: !0, configurable: !0, }), Object.defineProperty(e.prototype, 'bufferedAmount', { get: function () { return ( this._messageQueue.reduce(function (e, t) { return ( 'string' === typeof t ? (e += t.length) : t instanceof Blob ? (e += t.size) : (e += t.byteLength), e ) }, 0) + (this._ws ? this._ws.bufferedAmount : 0) ) }, enumerable: !0, configurable: !0, }), Object.defineProperty(e.prototype, 'extensions', { get: function () { return this._ws ? this._ws.extensions : '' }, enumerable: !0, configurable: !0, }), Object.defineProperty(e.prototype, 'protocol', { get: function () { return this._ws ? this._ws.protocol : '' }, enumerable: !0, configurable: !0, }), Object.defineProperty(e.prototype, 'readyState', { get: function () { return this._ws ? this._ws.readyState : this._options.startClosed ? e.CLOSED : e.CONNECTING }, enumerable: !0, configurable: !0, }), Object.defineProperty(e.prototype, 'url', { get: function () { return this._ws ? this._ws.url : '' }, enumerable: !0, configurable: !0, }), (e.prototype.close = function (e, t) { void 0 === e && (e = 1e3), (this._closeCalled = !0), (this._shouldReconnect = !1), this._clearTimeouts(), this._ws ? this._ws.readyState !== this.CLOSED ? this._ws.close(e, t) : this._debug('close: already closed') : this._debug('close enqueued: no ws instance') }), (e.prototype.reconnect = function (e, t) { ;(this._shouldReconnect = !0), (this._closeCalled = !1), (this._retryCount = -1), this._ws && this._ws.readyState !== this.CLOSED ? (this._disconnect(e, t), this._connect()) : this._connect() }), (e.prototype.send = function (e) { if (this._ws && this._ws.readyState === this.OPEN) this._debug('send', e), this._ws.send(e) else { var t = this._options.maxEnqueuedMessages, n = void 0 === t ? c.maxEnqueuedMessages : t this._messageQueue.length < n && (this._debug('enqueue', e), this._messageQueue.push(e)) } }), (e.prototype.addEventListener = function (e, t) { this._listeners[e] && this._listeners[e].push(t) }), (e.prototype.dispatchEvent = function (e) { var t, n, r = this._listeners[e.type] if (r) try { for ( var i = (function (e) { var t = 'function' === typeof Symbol && e[Symbol.iterator], n = 0 return t ? t.call(e) : { next: function () { return ( e && n >= e.length && (e = void 0), { value: e && e[n++], done: !e } ) }, } })(r), o = i.next(); !o.done; o = i.next() ) { var a = o.value this._callEventListener(e, a) } } catch (s) { t = { error: s } } finally { try { o && !o.done && (n = i.return) && n.call(i) } finally { if (t) throw t.error } } return !0 }), (e.prototype.removeEventListener = function (e, t) { this._listeners[e] && (this._listeners[e] = this._listeners[e].filter(function (e) { return e !== t })) }), (e.prototype._debug = function () { for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t] this._options.debug && console.log.apply(console, o(['RWS>'], e)) }), (e.prototype._getNextDelay = function () { var e = this._options, t = e.reconnectionDelayGrowFactor, n = void 0 === t ? c.reconnectionDelayGrowFactor : t, r = e.minReconnectionDelay, i = void 0 === r ? c.minReconnectionDelay : r, o = e.maxReconnectionDelay, a = void 0 === o ? c.maxReconnectionDelay : o, s = 0 return ( this._retryCount > 0 && (s = i * Math.pow(n, this._retryCount - 1)) > a && (s = a), this._debug('next delay', s), s ) }), (e.prototype._wait = function () { var e = this return new Promise(function (t) { setTimeout(t, e._getNextDelay()) }) }), (e.prototype._getNextUrl = function (e) { if ('string' === typeof e) return Promise.resolve(e) if ('function' === typeof e) { var t = e() if ('string' === typeof t) return Promise.resolve(t) if (t.then) return t } throw Error('Invalid URL') }), (e.prototype._connect = function () { var e = this if (!this._connectLock && this._shouldReconnect) { this._connectLock = !0 var t = this._options, n = t.maxRetries, r = void 0 === n ? c.maxRetries : n, i = t.connectionTimeout, o = void 0 === i ? c.connectionTimeout : i, a = t.WebSocket, s = void 0 === a ? l() : a if (this._retryCount >= r) this._debug('max retries reached', this._retryCount, '>=', r) else { if ( (this._retryCount++, this._debug('connect', this._retryCount), this._removeListeners(), 'undefined' === typeof (u = s) || !u || 2 !== u.CLOSING) ) throw Error('No valid WebSocket class provided') var u this._wait() .then(function () { return e._getNextUrl(e._url) }) .then(function (t) { e._closeCalled || (e._debug('connect', { url: t, protocols: e._protocols }), (e._ws = e._protocols ? new s(t, e._protocols) : new s(t)), (e._ws.binaryType = e._binaryType), (e._connectLock = !1), e._addListeners(), (e._connectTimeout = setTimeout(function () { return e._handleTimeout() }, o))) }) } } }), (e.prototype._handleTimeout = function () { this._debug('timeout event'), this._handleError(new s(Error('TIMEOUT'), this)) }), (e.prototype._disconnect = function (e, t) { if ((void 0 === e && (e = 1e3), this._clearTimeouts(), this._ws)) { this._removeListeners() try { this._ws.close(e, t), this._handleClose(new u(e, t, this)) } catch (n) {} } }), (e.prototype._acceptOpen = function () { this._debug('accept open'), (this._retryCount = 0) }), (e.prototype._callEventListener = function (e, t) { 'handleEvent' in t ? t.handleEvent(e) : t(e) }), (e.prototype._removeListeners = function () { this._ws && (this._debug('removeListeners'), this._ws.removeEventListener('open', this._handleOpen), this._ws.removeEventListener('close', this._handleClose), this._ws.removeEventListener('message', this._handleMessage), this._ws.removeEventListener('error', this._handleError)) }), (e.prototype._addListeners = function () { this._ws && (this._debug('addListeners'), this._ws.addEventListener('open', this._handleOpen), this._ws.addEventListener('close', this._handleClose), this._ws.addEventListener('message', this._handleMessage), this._ws.addEventListener('error', this._handleError)) }), (e.prototype._clearTimeouts = function () { clearTimeout(this._connectTimeout), clearTimeout(this._uptimeTimeout) }), e ) })() t.Z = d }, 1398: function (e, t, n) { 'use strict' n.r(t), n.d(t, { default: function () { return ue }, }) var r = n(2212), i = n(4505), o = n(5560), a = n(2405), s = n(216), u = n(6917), l = n(4736), c = n.n(l), d = n(6505), f = n.n(d), h = n(4858), p = n(2539), v = n(6701), m = n(3752), g = n(1527) function y(e, t) { var n = Object.keys(e) if (Object.getOwnPropertySymbols) { var r = Object.getOwnPropertySymbols(e) t && (r = r.filter(function (t) { return Object.getOwnPropertyDescriptor(e, t).enumerable })), n.push.apply(n, r) } return n } function b(e, t, n) { return ( t in e ? Object.defineProperty(e, t, { value: n, enumerable: !0, configurable: !0, writable: !0, }) : (e[t] = n), e ) } function w(e, t) { if (null == e) return {} var n, r, i = (function (e, t) { if (null == e) return {} var n, r, i = {}, o = Object.keys(e) for (r = 0; r < o.length; r++) (n = o[r]), t.indexOf(n) >= 0 || (i[n] = e[n]) return i })(e, t) if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e) for (r = 0; r < o.length; r++) (n = o[r]), t.indexOf(n) >= 0 || (Object.prototype.propertyIsEnumerable.call(e, n) && (i[n] = e[n])) } return i } function x(e, t) { return ( (function (e) { if (Array.isArray(e)) return e })(e) || (function (e, t) { var n = e && (('undefined' !== typeof Symbol && e[Symbol.iterator]) || e['@@iterator']) if (null == n) return var r, i, o = [], a = !0, s = !1 try { for ( n = n.call(e); !(a = (r = n.next()).done) && (o.push(r.value), !t || o.length !== t); a = !0 ); } catch (u) { ;(s = !0), (i = u) } finally { try { a || null == n.return || n.return() } finally { if (s) throw i } } return o })(e, t) || k(e, t) || (function () { throw new TypeError( 'Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.', ) })() ) } function E(e) { return ( (function (e) { if (Array.isArray(e)) return _(e) })(e) || (function (e) { if ( ('undefined' !== typeof Symbol && null != e[Symbol.iterator]) || null != e['@@iterator'] ) return Array.from(e) })(e) || k(e) || (function () { throw new TypeError( 'Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.', ) })() ) } function k(e, t) { if (e) { if ('string' === typeof e) return _(e, t) var n = Object.prototype.toString.call(e).slice(8, -1) return ( 'Object' === n && e.constructor && (n = e.constructor.name), 'Map' === n || 'Set' === n ? Array.from(e) : 'Arguments' === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n) ? _(e, t) : void 0 ) } } function _(e, t) { ;(null == t || t > e.length) && (t = e.length) for (var n = 0, r = new Array(t); n < t; n++) r[n] = e[n] return r } function T(e, t, n) { var r = n.objBindAttr, i = void 0 === r ? '__obj' : r, o = n.dataBindAttr, a = void 0 === o ? '__data' : o, s = n.idAccessor, u = n.purge, l = void 0 !== u && u, c = function (e) { return e.hasOwnProperty(a) }, d = t.filter(function (e) { return !c(e) }), f = t.filter(c).map(function (e) { return e[a] }), h = l ? { enter: e, exit: f, update: [] } : (function (e, t, n) { var r = { enter: [], update: [], exit: [] } if (n) { var i = (0, g.Z)(e, n, !1), o = (0, g.Z)(t, n, !1), a = Object.assign({}, i, o) Object.entries(a).forEach(function (e) { var t = x(e, 2), n = t[0], a = t[1], s = i.hasOwnProperty(n) ? (o.hasOwnProperty(n) ? 'update' : 'exit') : 'enter' r[s].push('update' === s ? [i[n], o[n]] : a) }) } else { var s = new Set(e), u = new Set(t) new Set([].concat(E(s), E(u))).forEach(function (e) { var t = s.has(e) ? (u.has(e) ? 'update' : 'exit') : 'enter' r[t].push('update' === t ? [e, e] : e) }) } return r })(f, e, s) return ( (h.update = h.update.map(function (e) { var t = x(e, 2), n = t[0], r = t[1] return n !== r && ((r[i] = n[i]), (r[i][a] = r)), r })), (h.exit = h.exit.concat( d.map(function (e) { return b({}, i, e) }), )), h ) } var O = function (e, t, n, r, i) { var o = i.createObj, a = void 0 === o ? function (e) { return {} } : o, s = i.updateObj, u = void 0 === s ? function (e, t) {} : s, l = i.exitObj, c = void 0 === l ? function (e) {} : l, d = i.objBindAttr, f = void 0 === d ? '__obj' : d, h = i.dataBindAttr, p = void 0 === h ? '__data' : h, v = w(i, ['createObj', 'updateObj', 'exitObj', 'objBindAttr', 'dataBindAttr']), m = T( e, t, (function (e) { for (var t = 1; t < arguments.length; t++) { var n = null != arguments[t] ? arguments[t] : {} t % 2 ? y(Object(n), !0).forEach(function (t) { b(e, t, n[t]) }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(n)) : y(Object(n)).forEach(function (t) { Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(n, t)) }) } return e })({ objBindAttr: f, dataBindAttr: p }, v), ), g = m.enter, x = m.update m.exit.forEach(function (e) { var t = e[f] delete e[f], c(t), r(t) }) var k = (function (e) { var t = [] return ( e.forEach(function (e) { var n = a(e) n && ((n[p] = e), (e[f] = n), t.push(n)) }), t ) })(g) !(function (e) { e.forEach(function (e) { var t = e[f] t && ((t[p] = e), u(t, e)) }) })([].concat(E(g), E(x))), k.forEach(n) }, C = n(2462), S = n(2816), A = n(7621), P = n.n(A) function M(e, t) { var n = Object.keys(e) if (Object.getOwnPropertySymbols) { var r = Object.getOwnPropertySymbols(e) t && (r = r.filter(function (t) { return Object.getOwnPropertyDescriptor(e, t).enumerable })), n.push.apply(n, r) } return n } function R(e) { for (var t = 1; t < arguments.length; t++) { var n = null != arguments[t] ? arguments[t] : {} t % 2 ? M(Object(n), !0).forEach(function (t) { L(e, t, n[t]) }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(n)) : M(Object(n)).forEach(function (t) { Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(n, t)) }) } return e } function j(e) { return (j = 'function' === typeof Symbol && 'symbol' === typeof Symbol.iterator ? function (e) { return typeof e } : function (e) { return e && 'function' === typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? 'symbol' : typeof e })(e) } function D(e, t) { if (!(e instanceof t)) throw new TypeError('Cannot call a class as a function') } function L(e, t, n) { return ( t in e ? Object.defineProperty(e, t, { value: n, enumerable: !0, configurable: !0, writable: !0, }) : (e[t] = n), e ) } function N(e, t) { if ('function' !== typeof t && null !== t) throw new TypeError('Super expression must either be null or a function') ;(e.prototype = Object.create(t && t.prototype, { constructor: { value: e, writable: !0, configurable: !0 }, })), t && z(e, t) } function I(e) { return (I = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) { return e.__proto__ || Object.getPrototypeOf(e) })(e) } function z(e, t) { return (z = Object.setPrototypeOf || function (e, t) { return (e.__proto__ = t), e })(e, t) } function H() { if ('undefined' === typeof Reflect || !Reflect.construct) return !1 if (Reflect.construct.sham) return !1 if ('function' === typeof Proxy) return !0 try { return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})), !0 } catch (e) { return !1 } } function B(e, t, n) { return (B = H() ? Reflect.construct : function (e, t, n) { var r = [null] r.push.apply(r, t) var i = new (Function.bind.apply(e, r))() return n && z(i, n.prototype), i }).apply(null, arguments) } function F(e, t) { if (null == e) return {} var n, r, i = (function (e, t) { if (null == e) return {} var n, r, i = {}, o = Object.keys(e) for (r = 0; r < o.length; r++) (n = o[r]), t.indexOf(n) >= 0 || (i[n] = e[n]) return i })(e, t) if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e) for (r = 0; r < o.length; r++) (n = o[r]), t.indexOf(n) >= 0 || (Object.prototype.propertyIsEnumerable.call(e, n) && (i[n] = e[n])) } return i } function V(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called") return e } function U(e, t) { return !t || ('object' !== typeof t && 'function' !== typeof t) ? V(e) : t } function G(e) { var t = H() return function () { var n, r = I(e) if (t) { var i = I(this).constructor n = Reflect.construct(r, arguments, i) } else n = r.apply(this, arguments) return U(this, n) } } function q(e, t) { return ( (function (e) { if (Array.isArray(e)) return e })(e) || (function (e, t) { var n = null == e ? null : ('undefined' !== typeof Symbol && e[Symbol.iterator]) || e['@@iterator'] if (null == n) return var r, i, o = [], a = !0, s = !1 try { for ( n = n.call(e); !(a = (r = n.next()).done) && (o.push(r.value), !t || o.length !== t); a = !0 ); } catch (u) { ;(s = !0), (i = u) } finally { try { a || null == n.return || n.return() } finally { if (s) throw i } } return o })(e, t) || K(e, t) || (function () { throw new TypeError( 'Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.', ) })() ) } function W(e) { return ( (function (e) { if (Array.isArray(e)) return Z(e) })(e) || (function (e) { if ( ('undefined' !== typeof Symbol && null != e[Symbol.iterator]) || null != e['@@iterator'] ) return Array.from(e) })(e) || K(e) || (function () { throw new TypeError( 'Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.', ) })() ) } function K(e, t) { if (e) { if ('string' === typeof e) return Z(e, t) var n = Object.prototype.toString.call(e).slice(8, -1) return ( 'Object' === n && e.constructor && (n = e.constructor.name), 'Map' === n || 'Set' === n ? Array.from(e) : 'Arguments' === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n) ? Z(e, t) : void 0 ) } } function Z(e, t) { ;(null == t || t > e.length) && (t = e.length) for (var n = 0, r = new Array(t); n < t; n++) r[n] = e[n] return r } var $ = function e(t) { t instanceof Array ? t.forEach(e) : (t.map && t.map.dispose(), t.dispose()) }, X = function e(t) { t.geometry && t.geometry.dispose(), t.material && $(t.material), t.texture && t.texture.dispose(), t.children && t.children.forEach(e) }, Y = function (e) { for (; e.children.length; ) { var t = e.children[0] e.remove(t), X(t) } }, Q = ['objFilter'] function J(e, t) { var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}, r = n.objFilter, i = void 0 === r ? function () { return !0 } : r, o = F(n, Q) return O( e, t.children.filter(i), function (e) { return t.add(e) }, function (e) { t.remove(e), Y(e) }, R({ objBindAttr: '__threeObj' }, o), ) } var ee = function (e) { return isNaN(e) ? parseInt(P()(e).toHex(), 16) : e }, te = function (e) { return isNaN(e) ? P()(e).getAlpha() : 1 }, ne = (0, C.Z)(S.Z) function re(e, t, n) { t && 'string' === typeof n && e .filter(function (e) { return !e[n] }) .forEach(function (e) { e[n] = ne(t(e)) }) } var ie = window.THREE ? window.THREE : { Group: r.ZAu, Mesh: r.Kj0, MeshLambertMaterial: r.YBo, Color: r.Ilk, BufferGeometry: r.u9r, BufferAttribute: r.TlE, Matrix4: r.yGw, Vector3: r.Pa4, SphereBufferGeometry: r.Aip, CylinderBufferGeometry: r.m_w, TubeBufferGeometry: r.Lcc, ConeBufferGeometry: r._3, Line: r.x12, LineBasicMaterial: r.nls, QuadraticBezierCurve3: r.mXe, CubicBezierCurve3: r.yj7, Box3: r.ZzF, }, oe = { graph: c(), forcelayout: f() }, ae = new ie.BufferGeometry().setAttribute ? 'setAttribute' : 'addAttribute', se = new ie.BufferGeometry().applyMatrix4 ? 'applyMatrix4' : 'applyMatrix' var ue = (function (e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : Object, n = arguments.length > 2 && void 0 !== arguments[2] && arguments[2], r = (function (t) { N(i, t) var r = G(i) function i() { var t D(this, i) for (var o = arguments.length, a = new Array(o), s = 0; s < o; s++) a[s] = arguments[s] return ( ((t = r.call.apply(r, [this].concat(a))).__kapsuleInstance = e().apply( void 0, [].concat(W(n ? [V(t)] : []), a), )), t ) } return i })(t) return ( Object.keys(e()).forEach(function (e) { return (r.prototype[e] = function () { var t, n = (t = this.__kapsuleInstance)[e].apply(t, arguments) return n === this.__kapsuleInstance ? this : n }) }), r ) })( (0, h.Z)({ props: { jsonUrl: { onChange: function (e, t) { var n = this e && !t.fetchingJson && ((t.fetchingJson = !0), t.onLoading(), fetch(e) .then(function (e) { return e.json() }) .then(function (e) { ;(t.fetchingJson = !1), t.onFinishLoading(e), n.graphData(e) })) }, triggerUpdate: !1, }, graphData: { default: { nodes: [], links: [] }, onChange: function (e, t) { t.engineRunning = !1 }, }, numDimensions: { default: 3, onChange: function (e, t) { var n = t.d3ForceLayout.force('charge') function r(e, t) { e.forEach(function (e) { delete e[t], delete e['v'.concat(t)] }) } n && n.strength(e > 2 ? -60 : -30), e < 3 && r(t.graphData.nodes, 'z'), e < 2 && r(t.graphData.nodes, 'y') }, }, dagMode: { onChange: function (e, t) { !e && 'd3' === t.forceEngine && (t.graphData.nodes || []).forEach(function (e) { return (e.fx = e.fy = e.fz = void 0) }) }, }, dagLevelDistance: {}, dagNodeFilter: { default: function (e) { return !0 }, }, onDagError: { triggerUpdate: !1 }, nodeRelSize: { default: 4 }, nodeId: { default: 'id' }, nodeVal: { default: 'val' }, nodeResolution: { default: 8 }, nodeColor: { default: 'color' }, nodeAutoColorBy: {}, nodeOpacity: { default: 0.75 }, nodeVisibility: { default: !0 }, nodeThreeObject: {}, nodeThreeObjectExtend: { default: !1 }, linkSource: { default: 'source' }, linkTarget: { default: 'target' }, linkVisibility: { default: !0 }, linkColor: { default: 'color' }, linkAutoColorBy: {}, linkOpacity: { default: 0.2 }, linkWidth: {}, linkResolution: { default: 6 }, linkCurvature: { default: 0, triggerUpdate: !1 }, linkCurveRotation: { default: 0, triggerUpdate: !1 }, linkMaterial: {}, linkThreeObject: {}, linkThreeObjectExtend: { default: !1 }, linkPositionUpdate: { triggerUpdate: !1 }, linkDirectionalArrowLength: { default: 0 }, linkDirectionalArrowColor: {}, linkDirectionalArrowRelPos: { default: 0.5, triggerUpdate: !1 }, linkDirectionalArrowResolution: { default: 8 }, linkDirectionalParticles: { default: 0 }, linkDirectionalParticleSpeed: { default: 0.01, triggerUpdate: !1 }, linkDirectionalParticleWidth: { default: 0.5 }, linkDirectionalParticleColor: {}, linkDirectionalParticleResolution: { default: 4 }, forceEngine: { default: 'd3' }, d3AlphaMin: { default: 0 }, d3AlphaDecay: { default: 0.0228, triggerUpdate: !1, onChange: function (e, t) { t.d3ForceLayout.alphaDecay(e) }, }, d3AlphaTarget: { default: 0, triggerUpdate: !1, onChange: function (e, t) { t.d3ForceLayout.alphaTarget(e) }, }, d3VelocityDecay: { default: 0.4, triggerUpdate: !1, onChange: function (e, t) { t.d3ForceLayout.velocityDecay(e) }, }, ngraphPhysics: { default: { timeStep: 20, gravity: -1.2, theta: 0.8, springLength: 30, springCoefficient: 8e-4, dragCoefficient: 0.02, }, }, warmupTicks: { default: 0, triggerUpdate: !1 }, cooldownTicks: { default: 1 / 0, triggerUpdate: !1 }, cooldownTime: { default: 15e3, triggerUpdate: !1 }, onLoading: { default: function () {}, triggerUpdate: !1 }, onFinishLoading: { default: function () {}, triggerUpdate: !1 }, onUpdate: { default: function () {}, triggerUpdate: !1 }, onFinishUpdate: { default: function () {}, triggerUpdate: !1 }, onEngineTick: { default: function () {}, triggerUpdate: !1 }, onEngineStop: { default: function () {}, triggerUpdate: !1 }, }, methods: { refresh: function (e) { return (e._flushObjects = !0), e._rerender(), this }, d3Force: function (e, t, n) { return void 0 === n ? e.d3ForceLayout.force(t) : (e.d3ForceLayout.force(t, n), this) }, d3ReheatSimulation: function (e) { return e.d3ForceLayout.alpha(1), this.resetCountdown(), this }, resetCountdown: function (e) { return (e.cntTicks = 0), (e.startTickTime = new Date()), (e.engineRunning = !0), this }, tickFrame: function (e) { var t = 'ngraph' !== e.forceEngine return ( e.engineRunning && (function () { ++e.cntTicks > e.cooldownTicks || new Date() - e.startTickTime > e.cooldownTime || (t && e.d3AlphaMin > 0 && e.d3ForceLayout.alpha() < e.d3AlphaMin) ? ((e.engineRunning = !1), e.onEngineStop()) : (e.layout[t ? 'tick' : 'step'](), e.onEngineTick()) e.graphData.nodes.forEach(function (n) { var r = n.__threeObj if (r) { var i = t ? n : e.layout.getNodePosition(n[e.nodeId]) ;(r.position.x = i.x), (r.position.y = i.y || 0), (r.position.z = i.z || 0) } }) var n = (0, p.default)(e.linkWidth), r = (0, p.default)(e.linkCurvature), i = (0, p.default)(e.linkCurveRotation), o = (0, p.default)(e.linkThreeObjectExtend) function a(n) { var o = t ? n : e.layout.getLinkPosition(e.layout.graph.getLink(n.source, n.target).id), a = o[t ? 'source' : 'from'], s = o[t ? 'target' : 'to'] if (a && s && a.hasOwnProperty('x') && s.hasOwnProperty('x')) { var u = r(n) if (u) { var l, c = new ie.Vector3(a.x, a.y || 0, a.z || 0), d = new ie.Vector3(s.x, s.y || 0, s.z || 0), f = c.distanceTo(d), h = i(n) if (f > 0) { var p = s.x - a.x, v = s.y - a.y || 0, m = new ie.Vector3().subVectors(d, c), g = m .clone() .multiplyScalar(u) .cross( 0 !== p || 0 !== v ? new ie.Vector3(0, 0, 1) : new ie.Vector3(0, 1, 0), ) .applyAxisAngle(m.normalize(), h) .add(new ie.Vector3().addVectors(c, d).divideScalar(2)) l = new ie.QuadraticBezierCurve3(c, g, d) } else { var y = 70 * u, b = -h, w = b + Math.PI / 2 l = new ie.CubicBezierCurve3( c, new ie.Vector3(y * Math.cos(w), y * Math.sin(w), 0).add(c), new ie.Vector3(y * Math.cos(b), y * Math.sin(b), 0).add(c), d, ) } n.__curve = l } else n.__curve = null } } e.graphData.links.forEach(function (r) { var i = r.__lineObj if (i) { var s = t ? r : e.layout.getLinkPosition( e.layout.graph.getLink(r.source, r.target).id, ), u = s[t ? 'source' : 'from'], l = s[t ? 'target' : 'to'] if (u && l && u.hasOwnProperty('x') && l.hasOwnProperty('x')) { a(r) var c = o(r) if ( !e.linkPositionUpdate || !e.linkPositionUpdate( c ? i.children[1] : i, { start: { x: u.x, y: u.y, z: u.z }, end: { x: l.x, y: l.y, z: l.z }, }, r, ) || c ) { var d = 30, f = r.__curve, h = i.children.length ? i.children[0] : i if ('Line' === h.type) { if (f) h.geometry.setFromPoints(f.getPoints(d)) else { var p = h.geometry.getAttribute('position') ;(p && p.array && 6 === p.array.length) || h.geometry[ae]( 'position', (p = new ie.BufferAttribute(new Float32Array(6), 3)), ), (p.array[0] = u.x), (p.array[1] = u.y || 0), (p.array[2] = u.z || 0), (p.array[3] = l.x), (p.array[4] = l.y || 0), (p.array[5] = l.z || 0), (p.needsUpdate = !0) } h.geometry.computeBoundingSphere() } else if ('Mesh' === h.type) if (f) { h.geometry.type.match(/^Tube(Buffer)?Geometry$/) || (h.position.set(0, 0, 0), h.rotation.set(0, 0, 0), h.scale.set(1, 1, 1)) var v = Math.ceil(10 * n(r)) / 10 / 2, m = new ie.TubeBufferGeometry(f, d, v, e.linkResolution, !1) h.geometry.dispose(), (h.geometry = m) } else { if (!h.geometry.type.match(/^Cylinder(Buffer)?Geometry$/)) { var g = Math.ceil(10 * n(r)) / 10 / 2, y = new ie.CylinderBufferGeometry( g, g, 1, e.linkResolution, 1, !1, ) y[se](new ie.Matrix4().makeTranslation(0, 0.5, 0)), y[se](new ie.Matrix4().makeRotationX(Math.PI / 2)), h.geometry.dispose(), (h.geometry = y) } var b = new ie.Vector3(u.x, u.y || 0, u.z || 0), w = new ie.Vector3(l.x, l.y || 0, l.z || 0), x = b.distanceTo(w) ;(h.position.x = b.x), (h.position.y = b.y), (h.position.z = b.z), (h.scale.z = x), h.parent.localToWorld(w), h.lookAt(w) } } } } }) })(), (function () { var n = (0, p.default)(e.linkDirectionalArrowRelPos), r = (0, p.default)(e.linkDirectionalArrowLength), i = (0, p.default)(e.nodeVal) e.graphData.links.forEach(function (o) { var a = o.__arrowObj if (a) { var s = t ? o : e.layout.getLinkPosition(e.layout.graph.getLink(o.source, o.target).id), u = s[t ? 'source' : 'from'], l = s[t ? 'target' : 'to'] if (u && l && u.hasOwnProperty('x') && l.hasOwnProperty('x')) { var c = Math.sqrt(Math.max(0, i(u) || 1)) * e.nodeRelSize, d = Math.sqrt(Math.max(0, i(l) || 1)) * e.nodeRelSize, f = r(o), h = n(o), p = o.__curve ? function (e) { return o.__curve.getPoint(e) } : function (e) { var t = function (e, t, n, r) { return t[e] + (n[e] - t[e]) * r || 0 } return { x: t('x', u, l, e), y: t('y', u, l, e), z: t('z', u, l, e), } }, v = o.__curve ? o.__curve.getLength() : Math.sqrt( ['x', 'y', 'z'] .map(function (e) { return Math.pow((l[e] || 0) - (u[e] || 0), 2) }) .reduce(function (e, t) { return e + t }, 0), ), m = c + f + (v - c - d - f) * h, g = p(m / v), y = p((m - f) / v) ;['x', 'y', 'z'].forEach(function (e) { return (a.position[e] = y[e]) }) var b = B( ie.Vector3, W( ['x', 'y', 'z'].map(function (e) { return g[e] }), ), ) a.parent.localToWorld(b), a.lookAt(b) } } }) })(), (function () { var n = (0, p.default)(e.linkDirectionalParticleSpeed) e.graphData.links.forEach(function (r) { var i = r.__photonsObj && r.__photonsObj.children, o = r.__singleHopPhotonsObj && r.__singleHopPhotonsObj.children if ((o && o.length) || (i && i.length)) { var a = t ? r : e.layout.getLinkPosition(e.layout.graph.getLink(r.source, r.target).id), s = a[t ? 'source' : 'from'], u = a[t ? 'target' : 'to'] if (s && u && s.hasOwnProperty('x') && u.hasOwnProperty('x')) { var l = n(r), c = r.__curve ? function (e) { return r.__curve.getPoint(e) } : function (e) { var t = function (e, t, n, r) { return t[e] + (n[e] - t[e]) * r || 0 } return { x: t('x', s, u, e), y: t('y', s, u, e), z: t('z', s, u, e), } } ;[].concat(W(i || []), W(o || [])).forEach(function (e, t) { var n = 'singleHopPhotons' === e.parent.__linkThreeObjType if ( (e.hasOwnProperty('__progressRatio') || (e.__progressRatio = n ? 0 : t / i.length), (e.__progressRatio += l), e.__progressRatio >= 1) ) { if (n) return e.parent.remove(e), void Y(e) e.__progressRatio = e.__progressRatio % 1 } var r = e.__progressRatio, o = c(r) ;['x', 'y', 'z'].forEach(function (t) { return (e.position[t] = o[t]) }) }) } } }) })(), this ) }, emitParticle: function (e, t) { if (t) { if (!t.__singleHopPhotonsObj) { var n = new ie.Group() ;(n.__linkThreeObjType = 'singleHopPhotons'), (t.__singleHopPhotonsObj = n), e.graphScene.add(n) } var r = (0, p.default)(e.linkDirectionalParticleWidth), i = Math.ceil(10 * r(t)) / 10 / 2, o = e.linkDirectionalParticleResolution, a = new ie.SphereBufferGeometry(i, o, o), s = (0, p.default)(e.linkColor), u = (0, p.default)(e.linkDirectionalParticleColor)(t) || s(t) || '#f0f0f0', l = new ie.Color(ee(u)), c = 3 * e.linkOpacity, d = new ie.MeshLambertMaterial({ color: l, transparent: !0, opacity: c }) t.__singleHopPhotonsObj.add(new ie.Mesh(a, d)) } return this }, getGraphBbox: function (e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : function () { return !0 } if (!e.initialised) return null var n = (function e(n) { var r = [] if (n.geometry) { n.geometry.computeBoundingBox() var i = new ie.Box3() i.copy(n.geometry.boundingBox).applyMatrix4(n.matrixWorld), r.push(i) } return r.concat.apply( r, W( (n.children || []) .filter(function (e) { return ( !e.hasOwnProperty('__graphObjType') || ('node' === e.__graphObjType && t(e.__data)) ) }) .map(e), ), ) })(e.graphScene) return n.length ? Object.assign.apply( Object, W( ['x', 'y', 'z'].map(function (e) { return L({}, e, [ (0, v.Z)(n, function (t) { return t.min[e] }), (0, m.Z)(n, function (t) { return t.max[e] }), ]) }), ), ) : null }, }, stateInit: function () { return { d3ForceLayout: (0, i.Z)() .force('link', (0, o.Z)()) .force('charge', (0, a.Z)()) .force('center', (0, s.Z)()) .force('dagRadial', null) .stop(), engineRunning: !1, } }, init: function (e, t) { t.graphScene = e }, update: function (e, t) { var n = function (e) { return e.some(function (e) { return t.hasOwnProperty(e) }) } if ( ((e.engineRunning = !1), e.onUpdate(), null !== e.nodeAutoColorBy && n(['nodeAutoColorBy', 'graphData', 'nodeColor']) && re(e.graphData.nodes, (0, p.default)(e.nodeAutoColorBy), e.nodeColor), null !== e.linkAutoColorBy && n(['linkAutoColorBy', 'graphData', 'linkColor']) && re(e.graphData.links, (0, p.default)(e.linkAutoColorBy), e.linkColor), e._flushObjects || n([ 'graphData', 'nodeThreeObject', 'nodeThreeObjectExtend', 'nodeVal', 'nodeColor', 'nodeVisibility', 'nodeRelSize', 'nodeResolution', 'nodeOpacity', ])) ) { var r = (0, p.default)(e.nodeThreeObject), i = (0, p.default)(e.nodeThreeObjectExtend), o = (0, p.default)(e.nodeVal), a = (0, p.default)(e.nodeColor), s = (0, p.default)(e.nodeVisibility), l = {}, c = {} J(e.graphData.nodes.filter(s), e.graphScene, { purge: e._flushObjects || n(['nodeThreeObject', 'nodeThreeObjectExtend']), objFilter: function (e) { return 'node' === e.__graphObjType }, createObj: function (t) { var n, o = r(t), a = i(t) return ( o && e.nodeThreeObject === o && (o = o.clone()), o && !a ? (n = o) : (((n = new ie.Mesh()).__graphDefaultObj = !0), o && a && n.add(o)), (n.__graphObjType = 'node'), n ) }, updateObj: function (t, n) { if (t.__graphDefaultObj) { var r = o(n) || 1, i = Math.cbrt(r) * e.nodeRelSize, s = e.nodeResolution ;(t.geometry.type.match(/^Sphere(Buffer)?Geometry$/) && t.geometry.parameters.radius === i && t.geometry.parameters.widthSegments === s) || (l.hasOwnProperty(r) || (l[r] = new ie.SphereBufferGeometry(i, s, s)), t.geometry.dispose(), (t.geometry = l[r])) var u = a(n), d = new ie.Color(ee(u || '#ffffaa')), f = e.nodeOpacity * te(u) ;('MeshLambertMaterial' === t.material.type && t.material.color.equals(d) && t.material.opacity === f) || (c.hasOwnProperty(u) || (c[u] = new ie.MeshLambertMaterial({ color: d, transparent: !0, opacity: f, })), t.material.dispose(), (t.material = c[u])) } }, }) } if ( e._flushObjects || n([ 'graphData', 'linkThreeObject', 'linkThreeObjectExtend', 'linkMaterial', 'linkColor', 'linkWidth', 'linkVisibility', 'linkResolution', 'linkOpacity', 'linkDirectionalArrowLength', 'linkDirectionalArrowColor', 'linkDirectionalArrowResolution', 'linkDirectionalParticles', 'linkDirectionalParticleWidth', 'linkDirectionalParticleColor', 'linkDirectionalParticleResolution', ]) ) { var d = (0, p.default)(e.linkThreeObject), f = (0, p.default)(e.linkThreeObjectExtend), h = (0, p.default)(e.linkMaterial), v = (0, p.default)(e.linkVisibility), m = (0, p.default)(e.linkColor), g = (0, p.default)(e.linkWidth), y = {}, b = {}, w = {}, x = e.graphData.links.filter(v) if ( (J(x, e.graphScene, { objBindAttr: '__lineObj', purge: e._flushObjects || n(['linkThreeObject', 'linkThreeObjectExtend', 'linkWidth']), objFilter: function (e) { return 'link' === e.__graphObjType }, createObj: function (t) { var n, r, i = d(t), o = f(t) if ((i && e.linkThreeObject === i && (i = i.clone()), !i || o)) if (!!g(t)) n = new ie.Mesh() else { var a = new ie.BufferGeometry() a[ae]('position', new ie.BufferAttribute(new Float32Array(6), 3)), (n = new ie.Line(a)) } return ( i ? o ? (((r = new ie.Group()).__graphDefaultObj = !0), r.add(n), r.add(i)) : (r = i) : ((r = n).__graphDefaultObj = !0), (r.renderOrder = 10), (r.__graphObjType = 'link'), r ) }, updateObj: function (t, n) { if (t.__graphDefaultObj) { var r = t.children.length ? t.children[0] : t, i = Math.ceil(10 * g(n)) / 10, o = !!i if (o) { var a = i / 2, s = e.linkResolution if ( !r.geometry.type.match(/^Cylinder(Buffer)?Geometry$/) || r.geometry.parameters.radiusTop !== a || r.geometry.parameters.radialSegments !== s ) { if (!y.hasOwnProperty(i)) { var u = new ie.CylinderBufferGeometry(a, a, 1, s, 1, !1) u[se](new ie.Matrix4().makeTranslation(0, 0.5, 0)), u[se](new ie.Matrix4().makeRotationX(Math.PI / 2)), (y[i] = u) } r.geometry.dispose(), (r.geometry = y[i]) } } var l = h(n) if (l) r.material = l else { var c = m(n), d = new ie.Color(ee(c || '#f0f0f0')), f = e.linkOpacity * te(c), p = o ? 'MeshLambertMaterial' : 'LineBasicMaterial' if ( r.material.type !== p || !r.material.color.equals(d) || r.material.opacity !== f ) { var v = o ? b : w v.hasOwnProperty(c) || (v[c] = new ie[p]({ color: d, transparent: f < 1, opacity: f, depthWrite: f >= 1, })), r.material.dispose(), (r.material = v[c]) } } } }, }), e.linkDirectionalArrowLength || t.hasOwnProperty('linkDirectionalArrowLength')) ) { var E = (0, p.default)(e.linkDirectionalArrowLength), k = (0, p.default)(e.linkDirectionalArrowColor) J(x.filter(E), e.graphScene, { objBindAttr: '__arrowObj', objFilter: function (e) { return 'arrow' === e.__linkThreeObjType }, createObj: function () { var e = new ie.Mesh(void 0, new ie.MeshLambertMaterial({ transparent: !0 })) return (e.__linkThreeObjType = 'arrow'), e }, updateObj: function (t, n) { var r = E(n), i = e.linkDirectionalArrowResolution if ( !t.geometry.type.match(/^Cone(Buffer)?Geometry$/) || t.geometry.parameters.height !== r || t.geometry.parameters.radialSegments !== i ) { var o = new ie.ConeBufferGeometry(0.25 * r, r, i) o.translate(0, r / 2, 0), o.rotateX(Math.PI / 2), t.geometry.dispose(), (t.geometry = o) } ;(t.material.color = new ie.Color(k(n) || m(n) || '#f0f0f0')), (t.material.opacity = 3 * e.linkOpacity) }, }) } if (e.linkDirectionalParticles || t.hasOwnProperty('linkDirectionalParticles')) { var _ = (0, p.default)(e.linkDirectionalParticles), T = (0, p.default)(e.linkDirectionalParticleWidth), O = (0, p.default)(e.linkDirectionalParticleColor), C = {}, S = {} J(x.filter(_), e.graphScene, { objBindAttr: '__photonsObj', objFilter: function (e) { return 'photons' === e.__linkThreeObjType }, createObj: function () { var e = new ie.Group() return (e.__linkThreeObjType = 'photons'), e }, updateObj: function (t, n) { var r, i = Math.round(Math.abs(_(n))), o = !!t.children.length && t.children[0], a = Math.ceil(10 * T(n)) / 10 / 2, s = e.linkDirectionalParticleResolution o && o.geometry.parameters.radius === a && o.geometry.parameters.widthSegments === s ? (r = o.geometry) : (S.hasOwnProperty(a) || (S[a] = new ie.SphereBufferGeometry(a, s, s)), (r = S[a]), o && o.geometry.dispose()) var u, l = O(n) || m(n) || '#f0f0f0', c = new ie.Color(ee(l)), d = 3 * e.linkOpacity o && o.material.color.equals(c) && o.material.opacity === d ? (u = o.material) : (C.hasOwnProperty(l) || (C[l] = new ie.MeshLambertMaterial({ color: c, transparent: !0, opacity: d, })), (u = C[l]), o && o.material.dispose()), J( W(new Array(i)).map(function (e, t) { return { idx: t } }), t, { idAccessor: function (e) { return e.idx }, createObj: function () { return new ie.Mesh(r, u) }, updateObj: function (e) { ;(e.geometry = r), (e.material = u) }, }, ) }, }) } } if ( ((e._flushObjects = !1), n([ 'graphData', 'nodeId', 'linkSource', 'linkTarget', 'numDimensions', 'forceEngine', 'dagMode', 'dagNodeFilter', 'dagLevelDistance', ])) ) { ;(e.engineRunning = !1), e.graphData.links.forEach(function (t) { ;(t.source = t[e.linkSource]), (t.target = t[e.linkTarget]) }) var A, P = 'ngraph' !== e.forceEngine if (P) { ;(A = e.d3ForceLayout) .stop() .alpha(1) .numDimensions(e.numDimensions) .nodes(e.graphData.nodes) var M = e.d3ForceLayout.force('link') M && M.id(function (t) { return t[e.nodeId] }).links(e.graphData.links) var D = e.dagMode && (function (e, t) { var n = e.nodes, r = e.links, i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}, o = i.nodeFilter, a = void 0 === o ? function () { return !0 } : o, s = i.onLoopError, u = void 0 === s ? function (e) { throw 'Invalid DAG structure! Found cycle in node path: '.concat( e.join(' -> '), '.', ) } : s, l = {} n.forEach(function (e) { return (l[t(e)] = { data: e, out: [], depth: -1, skip: !a(e) }) }), r.forEach(function (e) { var n = e.source, r = e.target, i = u(n), o = u(r) if (!l.hasOwnProperty(i)) throw 'Missing source node with id: '.concat(i) if (!l.hasOwnProperty(o)) throw 'Missing target node with id: '.concat(o) var a = l[i], s = l[o] function u(e) { return 'object' === j(e) ? t(e) : e } a.out.push(s) }) var c = [] return ( d(Object.values(l)), Object.assign.apply( Object, [{}].concat( W( Object.entries(l) .filter(function (e) { return !q(e, 2)[1].skip }) .map(function (e) { var t = q(e, 2) return L({}, t[0], t[1].depth) }), ), ), ) ) function d(e) { for ( var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : [], r = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 0, i = 0, o = e.length; i < o; i++ ) { var a = e[i] if (-1 !== n.indexOf(a)) if ( 'continue' === (function () { var e = [].concat(W(n.slice(n.indexOf(a))), [a]).map(function (e) { return t(e.data) }) return ( c.some(function (t) { return ( t.length === e.length && t.every(function (t, n) { return t === e[n] }) ) }) || (c.push(e), u(e)), 'continue' ) })() ) continue r > a.depth && ((a.depth = r), d(a.out, [].concat(W(n), [a]), r + (a.skip ? 0 : 1))) } } })( e.graphData, function (t) { return t[e.nodeId] }, { nodeFilter: e.dagNodeFilter, onLoopError: e.onDagError || void 0 }, ), N = Math.max.apply(Math, W(Object.values(D || []))), I = e.dagLevelDistance || (e.graphData.nodes.length / (N || 1)) * 2 * (-1 !== ['radialin', 'radialout'].indexOf(e.dagMode) ? 0.7 : 1) if (e.dagMode) { var z = function (t, n) { return function (r) { return t ? (D[r[e.nodeId]] - N / 2) * I * (n ? -1 : 1) : void 0 } }, H = z(-1 !== ['lr', 'rl'].indexOf(e.dagMode), 'rl' === e.dagMode), B = z(-1 !== ['td', 'bu'].indexOf(e.dagMode), 'td' === e.dagMode), F = z(-1 !== ['zin', 'zout'].indexOf(e.dagMode), 'zout' === e.dagMode) e.graphData.nodes.filter(e.dagNodeFilter).forEach(function (e) { ;(e.fx = H(e)), (e.fy = B(e)), (e.fz = F(e)) }) } e.d3ForceLayout.force( 'dagRadial', -1 !== ['radialin', 'radialout'].indexOf(e.dagMode) ? (0, u.Z)(function (t) { var n = D[t[e.nodeId]] || -1 return ('radialin' === e.dagMode ? N - n : n) * I }).strength(function (t) { return e.dagNodeFilter(t) ? 1 : 0 }) : null, ) } else { var V = oe.graph() e.graphData.nodes.forEach(function (t) { V.addNode(t[e.nodeId]) }), e.graphData.links.forEach(function (e) { V.addLink(e.source, e.target) }), ((A = oe.forcelayout( V, R({ dimensions: e.numDimensions }, e.ngraphPhysics), )).graph = V) } for ( var U = 0; U < e.warmupTicks && !(P && e.d3AlphaMin > 0 && e.d3ForceLayout.alpha() < e.d3AlphaMin); U++ ) A[P ? 'tick' : 'step']() ;(e.layout = A), this.resetCountdown() } ;(e.engineRunning = !0), e.onFinishUpdate() }, }), (window.THREE ? window.THREE : { Group: r.ZAu }).Group, !0, ) }, 6594: function (e, t, n) { 'use strict' n.r(t), n.d(t, { Pathfinding: function () { return v }, }) var r = function () {} ;(r.computeCentroids = function (e) { var t, n, r for (t = 0, n = e.faces.length; t < n; t++) ((r = e.faces[t]).centroid = new THREE.Vector3(0, 0, 0)), r.centroid.add(e.vertices[r.a]), r.centroid.add(e.vertices[r.b]), r.centroid.add(e.vertices[r.c]), r.centroid.divideScalar(3) }), (r.roundNumber = function (e, t) { return Number(e.toFixed(t)) }), (r.sample = function (e) { return e[Math.floor(Math.random() * e.length)] }), (r.mergeVertexIds = function (e, t) { var n = [] if ( (e.forEach(function (e) { t.indexOf(e) >= 0 && n.push(e) }), n.length < 2) ) return [] n.includes(e[0]) && n.includes(e[e.length - 1]) && e.push(e.shift()), n.includes(t[0]) && n.includes(t[t.length - 1]) && t.push(t.shift()), (n = []), e.forEach(function (e) { t.includes(e) && n.push(e) }) for (var r = n[1], i = n[0], o = e.slice(); o[0] !== r; ) o.push(o.shift()) for (var a = 0, s = t.slice(); s[0] !== i; ) if ((s.push(s.shift()), a++ > 10)) throw new Error('Unexpected state') return s.shift(), s.pop(), o.concat(s) }), (r.setPolygonCentroid = function (e, t) { var n = new THREE.Vector3(), r = t.vertices e.vertexIds.forEach(function (e) { n.add(r[e]) }), n.divideScalar(e.vertexIds.length), e.centroid.copy(n) }), (r.cleanPolygon = function (e, t) { for (var n = [], r = t.vertices, i = 0; i < e.vertexIds.length; i++) { var o, a, s, u = r[e.vertexIds[i]] 0 === i ? ((o = e.vertexIds[1]), (a = e.vertexIds[e.vertexIds.length - 1])) : i === e.vertexIds.length - 1 ? ((o = e.vertexIds[0]), (a = e.vertexIds[e.vertexIds.length - 2])) : ((o = e.vertexIds[i + 1]), (a = e.vertexIds[i - 1])), (s = r[a]) var l = r[o].clone().sub(u), c = s.clone().sub(u), d = l.angleTo(c) if (d > Math.PI - 0.01 && d < Math.PI + 0.01) { var f = [] e.neighbours.forEach(function (t) { t.vertexIds.includes(e.vertexIds[i]) || f.push(t) }), (e.neighbours = f) } else n.push(e.vertexIds[i]) } ;(e.vertexIds = n), this.setPolygonCentroid(e, t) }), (r.isConvex = function (e, t) { var n = t.vertices if (e.vertexIds.length < 3) return !1 for (var r = !0, i = [], o = 0; o < e.vertexIds.length; o++) { var a, s, u = n[e.vertexIds[o]] 0 === o ? ((a = n[e.vertexIds[1]]), (s = n[e.vertexIds[e.vertexIds.length - 1]])) : o === e.vertexIds.length - 1 ? ((a = n[e.vertexIds[0]]), (s = n[e.vertexIds[e.vertexIds.length - 2]])) : ((a = n[e.vertexIds[o + 1]]), (s = n[e.vertexIds[o - 1]])) var l = a.clone().sub(u), c = s.clone().sub(u), d = l.angleTo(c) if (d === Math.PI || 0 === d) return !1 var f = l.cross(c).y i.push(f) } return ( i.forEach(function (e) { 0 === e && (r = !1) }), i.forEach( i[0] > 0 ? function (e) { e < 0 && (r = !1) } : function (e) { e > 0 && (r = !1) }, ), r ) }), (r.distanceToSquared = function (e, t) { var n = e.x - t.x, r = e.y - t.y, i = e.z - t.z return n * n + r * r + i * i }), (r.isPointInPoly = function (e, t) { for (var n = !1, r = -1, i = e.length, o = i - 1; ++r < i; o = r) ((e[r].z <= t.z && t.z < e[o].z) || (e[o].z <= t.z && t.z < e[r].z)) && t.x < ((e[o].x - e[r].x) * (t.z - e[r].z)) / (e[o].z - e[r].z) + e[r].x && (n = !n) return n }), (r.isVectorInPolygon = function (e, t, n) { var r = 1e5, i = -1e5, o = [] return ( t.vertexIds.forEach(function (e) { ;(r = Math.min(n[e].y, r)), (i = Math.max(n[e].y, i)), o.push(n[e]) }), !!(e.y < i + 0.5 && e.y > r - 0.5 && this.isPointInPoly(o, e)) ) }), (r.triarea2 = function (e, t, n) { return (n.x - e.x) * (t.z - e.z) - (t.x - e.x) * (n.z - e.z) }), (r.vequal = function (e, t) { return this.distanceToSquared(e, t) < 1e-5 }) var i = function (e) { ;(this.content = []), (this.scoreFunction = e) } ;(i.prototype.push = function (e) { this.content.push(e), this.sinkDown(this.content.length - 1) }), (i.prototype.pop = function () { var e = this.content[0], t = this.content.pop() return this.content.length > 0 && ((this.content[0] = t), this.bubbleUp(0)), e }), (i.prototype.remove = function (e) { var t = this.content.indexOf(e), n = this.content.pop() t !== this.content.length - 1 && ((this.content[t] = n), this.scoreFunction(n) < this.scoreFunction(e) ? this.sinkDown(t) : this.bubbleUp(t)) }), (i.prototype.size = function () { return this.content.length }), (i.prototype.rescoreElement = function (e) { this.sinkDown(this.content.indexOf(e)) }), (i.prototype.sinkDown = function (e) { for (var t = this.content[e]; e > 0; ) { var n = ((e + 1) >> 1) - 1, r = this.content[n] if (!(this.scoreFunction(t) < this.scoreFunction(r))) break ;(this.content[n] = t), (this.content[e] = r), (e = n) } }), (i.prototype.bubbleUp = function (e) { for (var t = this.content.length, n = this.content[e], r = this.scoreFunction(n); ; ) { var i = (e + 1) << 1, o = i - 1, a = null, s = void 0 if ( (o < t && (s = this.scoreFunction(this.content[o])) < r && (a = o), i < t && this.scoreFunction(this.content[i]) < (null === a ? r : s) && (a = i), null === a) ) break ;(this.content[e] = this.content[a]), (this.content[a] = n), (e = a) } }) var o = function () {} ;(o.init = function (e) { for (var t = 0; t < e.length; t++) { var n = e[t] ;(n.f = 0), (n.g = 0), (n.h = 0), (n.cost = 1), (n.visited = !1), (n.closed = !1), (n.parent = null) } }), (o.cleanUp = function (e) { for (var t = 0; t < e.length; t++) { var n = e[t] delete n.f, delete n.g, delete n.h, delete n.cost, delete n.visited, delete n.closed, delete n.parent } }), (o.heap = function () { return new i(function (e) { return e.f }) }), (o.search = function (e, t, n) { this.init(e) var r = this.heap() for (r.push(t); r.size() > 0; ) { var i = r.pop() if (i === n) { for (var o = i, a = []; o.parent; ) a.push(o), (o = o.parent) return this.cleanUp(a), a.reverse() } i.closed = !0 for (var s = this.neighbours(e, i), u = 0, l = s.length; u < l; u++) { var c = s[u] if (!c.closed) { var d = i.g + c.cost, f = c.visited if (!f || d < c.g) { if (((c.visited = !0), (c.parent = i), !c.centroid || !n.centroid)) throw new Error('Unexpected state') ;(c.h = c.h || this.heuristic(c.centroid, n.centroid)), (c.g = d), (c.f = c.g + c.h), f ? r.rescoreElement(c) : r.push(c) } } } } return [] }), (o.heuristic = function (e, t) { return r.distanceToSquared(e, t) }), (o.neighbours = function (e, t) { for (var n = [], r = 0; r < t.neighbours.length; r++) n.push(e[t.neighbours[r]]) return n }) var a = 1, s = function () {} ;(s.buildZone = function (e) { var t = this, n = this._buildNavigationMesh(e), i = {} n.vertices.forEach(function (e) { ;(e.x = r.roundNumber(e.x, 2)), (e.y = r.roundNumber(e.y, 2)), (e.z = r.roundNumber(e.z, 2)) }), (i.vertices = n.vertices) var o = this._buildPolygonGroups(n) i.groups = [] var a = function (e, t) { for (var n = 0; n < e.length; n++) if (t === e[n]) return n } return ( o.forEach(function (e) { var n = [] e.forEach(function (i) { var o = i.neighbours.map(function (t) { return a(e, t) }), s = i.neighbours.map(function (e) { return t._getSharedVerticesInOrder(i, e) }) ;(i.centroid.x = r.roundNumber(i.centroid.x, 2)), (i.centroid.y = r.roundNumber(i.centroid.y, 2)), (i.centroid.z = r.roundNumber(i.centroid.z, 2)), n.push({ id: a(e, i), neighbours: o, vertexIds: i.vertexIds, centroid: i.centroid, portals: s, }) }), i.groups.push(n) }), i ) }), (s._buildNavigationMesh = function (e) { return r.computeCentroids(e), e.mergeVertices(), this._buildPolygonsFromGeometry(e) }), (s._buildPolygonGroups = function (e) { var t = [], n = 0, r = function (e) { e.neighbours.forEach(function (t) { void 0 === t.group && ((t.group = e.group), r(t)) }) } return ( e.polygons.forEach(function (e) { void 0 === e.group && ((e.group = n++), r(e)), t[e.group] || (t[e.group] = []), t[e.group].push(e) }), t ) }), (s._buildPolygonNeighbours = function (e, t, n) { var r = new Set(), i = n.get(e.vertexIds[0]), o = n.get(e.vertexIds[1]), a = n.get(e.vertexIds[2]) i.forEach(function (e) { ;(o.has(e) || a.has(e)) && r.add(t.polygons[e]) }), o.forEach(function (e) { a.has(e) && r.add(t.polygons[e]) }), (e.neighbours = Array.from(r)) }), (s._buildPolygonsFromGeometry = function (e) { for ( var t = this, n = [], r = e.vertices, i = e.faceVertexUvs, o = new Map(), s = 0; s < r.length; s++ ) o.set(s, new Set()) e.faces.forEach(function (e) { n.push({ id: a++, vertexIds: [e.a, e.b, e.c], centroid: e.centroid, normal: e.normal, neighbours: [], }), o.get(e.a).add(n.length - 1), o.get(e.b).add(n.length - 1), o.get(e.c).add(n.length - 1) }) var u = { polygons: n, vertices: r, faceVertexUvs: i } return ( n.forEach(function (e) { t._buildPolygonNeighbours(e, u, o) }), u ) }), (s._getSharedVerticesInOrder = function (e, t) { var n = e.vertexIds, r = t.vertexIds, i = new Set() if ( (n.forEach(function (e) { r.includes(e) && i.add(e) }), i.size < 2) ) return [] i.has(n[0]) && i.has(n[n.length - 1]) && n.push(n.shift()), i.has(r[0]) && i.has(r[r.length - 1]) && r.push(r.shift()) var o = [] return ( n.forEach(function (e) { r.includes(e) && o.push(e) }), o ) }) var u = function () { this.portals = [] } ;(u.prototype.push = function (e, t) { void 0 === t && (t = e), this.portals.push({ left: e, right: t }) }), (u.prototype.stringPull = function () { var e, t, n, i = this.portals, o = [], a = 0, s = 0, u = 0 ;(t = i[0].left), (n = i[0].right), o.push((e = i[0].left)) for (var l = 1; l < i.length; l++) { var c = i[l].left, d = i[l].right if (r.triarea2(e, n, d) <= 0) { if (!(r.vequal(e, n) || r.triarea2(e, t, d) > 0)) { o.push(t), (t = e = t), (n = e), (s = a = s), (u = a), (l = a) continue } ;(n = d), (u = l) } if (r.triarea2(e, t, c) >= 0) { if (!(r.vequal(e, t) || r.triarea2(e, n, c) < 0)) { o.push(n), (t = e = n), (n = e), (s = a = u), (u = a), (l = a) continue } ;(t = c), (s = l) } } return ( (0 !== o.length && r.vequal(o[o.length - 1], i[i.length - 1].left)) || o.push(i[i.length - 1].left), (this.path = o), o ) }) var l, c, d, f, h, p, v = function () { this.zones = {} } ;(v.createZone = function (e) { return s.buildZone(e) }), (v.prototype.setZoneData = function (e, t) { this.zones[e] = t }), (v.prototype.getGroup = function (e, t) { if (!this.zones[e]) return null var n = null, i = Math.pow(50, 2) return ( this.zones[e].groups.forEach(function (e, o) { e.forEach(function (e) { var a = r.distanceToSquared(e.centroid, t) a < i && ((n = o), (i = a)) }) }), n ) }), (v.prototype.getRandomNode = function (e, t, n, i) { if (!this.zones[e]) return new THREE.Vector3() ;(n = n || null), (i = i || 0) var o = [] return ( this.zones[e].groups[t].forEach(function (e) { n && i ? r.distanceToSquared(n, e.centroid) < i * i && o.push(e.centroid) : o.push(e.centroid) }), r.sample(o) || new THREE.Vector3() ) }), (v.prototype.getClosestNode = function (e, t, n, i) { void 0 === i && (i = !1) var o = this.zones[t].vertices, a = null, s = 1 / 0 return ( this.zones[t].groups[n].forEach(function (t) { var n = r.distanceToSquared(t.centroid, e) n < s && (!i || r.isVectorInPolygon(e, t, o)) && ((a = t), (s = n)) }), a ) }), (v.prototype.findPath = function (e, t, n, r) { var i = this.zones[n].groups[r], a = this.zones[n].vertices, s = this.getClosestNode(e, n, r), l = this.getClosestNode(t, n, r, !0) if (!s || !l) return null var c = o.search(i, s, l), d = function (e, t) { for (var n = 0; n < e.neighbours.length; n++) if (e.neighbours[n] === t.id) return e.portals[n] }, f = new u() f.push(e) for (var h = 0; h < c.length; h++) { var p = c[h + 1] if (p) { var v = d(c[h], p) f.push(a[v[0]], a[v[1]]) } } f.push(t), f.stringPull() var m = f.path.map(function (e) { return new THREE.Vector3(e.x, e.y, e.z) }) return m.shift(), m }), (v.prototype.clampStep = ((d = new THREE.Vector3()), (f = new THREE.Plane()), (h = new THREE.Triangle()), (p = new THREE.Vector3()), function (e, t, n, r, i, o) { var a = this.zones[r].vertices, s = this.zones[r].groups[i], u = [n], v = {} ;(v[n.id] = 0), (l = void 0), p.set(0, 0, 0), (c = 1 / 0), f.setFromCoplanarPoints(a[n.vertexIds[0]], a[n.vertexIds[1]], a[n.vertexIds[2]]), f.projectPoint(t, d), t.copy(d) for (var m = u.pop(); m; m = u.pop()) { h.set(a[m.vertexIds[0]], a[m.vertexIds[1]], a[m.vertexIds[2]]), h.closestPointToPoint(t, d), d.distanceToSquared(t) < c && ((l = m), p.copy(d), (c = d.distanceToSquared(t))) var g = v[m] if (!(g > 2)) for (var y = 0; y < m.neighbours.length; y++) { var b = s[m.neighbours[y]] b.id in v || (u.push(b), (v[b.id] = g + 1)) } } return o.copy(p), l })) }, 1122: function (e, t, n) { 'use strict' var r = n(2212) function i(e, t) { if (!(e instanceof t)) throw new TypeError('Cannot call a class as a function') } function o(e, t) { for (var n = 0; n < t.length; n++) { var r = t[n] ;(r.enumerable = r.enumerable || !1), (r.configurable = !0), 'value' in r && (r.writable = !0), Object.defineProperty(e, r.key, r) } } function a(e) { return (a = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) { return e.__proto__ || Object.getPrototypeOf(e) })(e) } function s(e, t) { return (s = Object.setPrototypeOf || function (e, t) { return (e.__proto__ = t), e })(e, t) } function u(e, t) { return !t || ('object' !== typeof t && 'function' !== typeof t) ? (function (e) { if (void 0 === e) throw new ReferenceError( "this hasn't been initialised - super() hasn't been called", ) return e })(e) : t } function l(e) { var t = (function () { if ('undefined' === typeof Reflect || !Reflect.construct) return !1 if (Reflect.construct.sham) return !1 if ('function' === typeof Proxy) return !0 try { return ( Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})), !0 ) } catch (e) { return !1 } })() return function () { var n, r = a(e) if (t) { var i = a(this).constructor n = Reflect.construct(r, arguments, i) } else n = r.apply(this, arguments) return u(this, n) } } function c(e, t) { return ( (function (e) { if (Array.isArray(e)) return e })(e) || (function (e, t) { var n = e && (('undefined' !== typeof Symbol && e[Symbol.iterator]) || e['@@iterator']) if (null == n) return var r, i, o = [], a = !0, s = !1 try { for ( n = n.call(e); !(a = (r = n.next()).done) && (o.push(r.value), !t || o.length !== t); a = !0 ); } catch (u) { ;(s = !0), (i = u) } finally { try { a || null == n.return || n.return() } finally { if (s) throw i } } return o })(e, t) || f(e, t) || (function () { throw new TypeError( 'Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.', ) })() ) } function d(e) { return ( (function (e) { if (Array.isArray(e)) return h(e) })(e) || (function (e) { if ( ('undefined' !== typeof Symbol && null != e[Symbol.iterator]) || null != e['@@iterator'] ) return Array.from(e) })(e) || f(e) || (function () { throw new TypeError( 'Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.', ) })() ) } function f(e, t) { if (e) { if ('string' === typeof e) return h(e, t) var n = Object.prototype.toString.call(e).slice(8, -1) return ( 'Object' === n && e.constructor && (n = e.constructor.name), 'Map' === n || 'Set' === n ? Array.from(e) : 'Arguments' === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n) ? h(e, t) : void 0 ) } } function h(e, t) { ;(null == t || t > e.length) && (t = e.length) for (var n = 0, r = new Array(t); n < t; n++) r[n] = e[n] return r } var p = 'undefined' !== typeof window && window.THREE ? window.THREE : { LinearFilter: r.wem, Sprite: r.jyi, SpriteMaterial: r.xeV, Texture: r.xEZ }, v = (function (e) { !(function (e, t) { if ('function' !== typeof t && null !== t) throw new TypeError('Super expression must either be null or a function') ;(e.prototype = Object.create(t && t.prototype, { constructor: { value: e, writable: !0, configurable: !0 }, })), t && s(e, t) })(u, e) var t, n, r, a = l(u) function u() { var e, t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : '', n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 10, r = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 'rgba(255, 255, 255, 1)' return ( i(this, u), ((e = a.call(this, new p.SpriteMaterial({ map: new p.Texture() })))._text = ''.concat( t, )), (e._textHeight = n), (e._color = r), (e._backgroundColor = !1), (e._padding = 0), (e._borderWidth = 0), (e._borderRadius = 0), (e._borderColor = 'white'), (e._strokeWidth = 0), (e._strokeColor = 'white'), (e._fontFace = 'Arial'), (e._fontSize = 90), (e._fontWeight = 'normal'), (e._canvas = document.createElement('canvas')), (e._texture = e.material.map), (e._texture.minFilter = p.LinearFilter), e._genCanvas(), e ) } return ( (t = u), (n = [ { key: 'text', get: function () { return this._text }, set: function (e) { ;(this._text = e), this._genCanvas() }, }, { key: 'textHeight', get: function () { return this._textHeight }, set: function (e) { ;(this._textHeight = e), this._genCanvas() }, }, { key: 'color', get: function () { return this._color }, set: function (e) { ;(this._color = e), this._genCanvas() }, }, { key: 'backgroundColor', get: function () { return this._backgroundColor }, set: function (e) { ;(this._backgroundColor = e), this._genCanvas() }, }, { key: 'padding', get: function () { return this._padding }, set: function (e) { ;(this._padding = e), this._genCanvas() }, }, { key: 'borderWidth', get: function () { return this._borderWidth }, set: function (e) { ;(this._borderWidth = e), this._genCanvas() }, }, { key: 'borderRadius', get: function () { return this._borderRadius }, set: function (e) { ;(this._borderRadius = e), this._genCanvas() }, }, { key: 'borderColor', get: function () { return this._borderColor }, set: function (e) { ;(this._borderColor = e), this._genCanvas() }, }, { key: 'fontFace', get: function () { return this._fontFace }, set: function (e) { ;(this._fontFace = e), this._genCanvas() }, }, { key: 'fontSize', get: function () { return this._fontSize }, set: function (e) { ;(this._fontSize = e), this._genCanvas() }, }, { key: 'fontWeight', get: function () { return this._fontWeight }, set: function (e) { ;(this._fontWeight = e), this._genCanvas() }, }, { key: 'strokeWidth', get: function () { return this._strokeWidth }, set: function (e) { ;(this._strokeWidth = e), this._genCanvas() }, }, { key: 'strokeColor', get: function () { return this._strokeColor }, set: function (e) { ;(this._strokeColor = e), this._genCanvas() }, }, { key: '_genCanvas', value: function () { var e = this, t = this._canvas, n = t.getContext('2d'), r = Array.isArray(this.borderWidth) ? this.borderWidth : [this.borderWidth, this.borderWidth], i = r.map(function (t) { return t * e.fontSize * 0.1 }), o = ( Array.isArray(this.borderRadius) ? this.borderRadius : [ this.borderRadius, this.borderRadius, this.borderRadius, this.borderRadius, ] ).map(function (t) { return t * e.fontSize * 0.1 }), a = Array.isArray(this.padding) ? this.padding : [this.padding, this.padding], s = a.map(function (t) { return t * e.fontSize * 0.1 }), u = this.text.split('\n'), l = '' .concat(this.fontWeight, ' ') .concat(this.fontSize, 'px ') .concat(this.fontFace) n.font = l var f = Math.max.apply( Math, d( u.map(function (e) { return n.measureText(e).width }), ), ), h = this.fontSize * u.length if ( ((t.width = f + 2 * i[0] + 2 * s[0]), (t.height = h + 2 * i[1] + 2 * s[1]), this.borderWidth) ) { if (((n.strokeStyle = this.borderColor), i[0])) { var p = i[0] / 2 ;(n.lineWidth = i[0]), n.beginPath(), n.moveTo(p, o[0]), n.lineTo(p, t.height - o[3]), n.moveTo(t.width - p, o[1]), n.lineTo(t.width - p, t.height - o[2]), n.stroke() } if (i[1]) { var v = i[1] / 2 ;(n.lineWidth = i[1]), n.beginPath(), n.moveTo(Math.max(i[0], o[0]), v), n.lineTo(t.width - Math.max(i[0], o[1]), v), n.moveTo(Math.max(i[0], o[3]), t.height - v), n.lineTo(t.width - Math.max(i[0], o[2]), t.height - v), n.stroke() } if (this.borderRadius) { var m = Math.max.apply(Math, d(i)), g = m / 2 ;(n.lineWidth = m), n.beginPath(), [ !!o[0] && [o[0], g, g, o[0]], !!o[1] && [t.width - o[1], t.width - g, g, o[1]], !!o[2] && [t.width - o[2], t.width - g, t.height - g, t.height - o[2]], !!o[3] && [o[3], g, t.height - g, t.height - o[3]], ] .filter(function (e) { return e }) .forEach(function (e) { var t = c(e, 4), r = t[0], i = t[1], o = t[2], a = t[3] n.moveTo(r, o), n.quadraticCurveTo(i, o, i, a) }), n.stroke() } } this.backgroundColor && ((n.fillStyle = this.backgroundColor), this.borderRadius ? (n.beginPath(), n.moveTo(i[0], o[0]), [ [i[0], o[0], t.width - o[1], i[1], i[1], i[1]], [ t.width - i[0], t.width - i[0], t.width - i[0], i[1], o[1], t.height - o[2], ], [ t.width - i[0], t.width - o[2], o[3], t.height - i[1], t.height - i[1], t.height - i[1], ], [i[0], i[0], i[0], t.height - i[1], t.height - o[3], o[0]], ].forEach(function (e) { var t = c(e, 6), r = t[0], i = t[1], o = t[2], a = t[3], s = t[4], u = t[5] n.quadraticCurveTo(r, a, i, s), n.lineTo(o, u) }), n.closePath(), n.fill()) : n.fillRect(i[0], i[1], t.width - 2 * i[0], t.height - 2 * i[1])), n.translate.apply(n, d(i)), n.translate.apply(n, d(s)), (n.font = l), (n.fillStyle = this.color), (n.textBaseline = 'bottom') var y = this.strokeWidth > 0 y && ((n.lineWidth = (this.strokeWidth * this.fontSize) / 10), (n.strokeStyle = this.strokeColor)), u.forEach(function (t, r) { var i = (f - n.measureText(t).width) / 2, o = (r + 1) * e.fontSize y && n.strokeText(t, i, o), n.fillText(t, i, o) }), (this._texture.image = t), (this._texture.needsUpdate = !0) var b = this.textHeight * u.length + 2 * r[1] + 2 * a[1] this.scale.set((b * t.width) / t.height, b, 0) }, }, { key: 'clone', value: function () { return new this.constructor(this.text, this.textHeight, this.color).copy(this) }, }, { key: 'copy', value: function (e) { return ( p.Sprite.prototype.copy.call(this, e), (this.color = e.color), (this.backgroundColor = e.backgroundColor), (this.padding = e.padding), (this.borderWidth = e.borderWidth), (this.borderColor = e.borderColor), (this.fontFace = e.fontFace), (this.fontSize = e.fontSize), (this.fontWeight = e.fontWeight), (this.strokeWidth = e.strokeWidth), (this.strokeColor = e.strokeColor), this ) }, }, ]) && o(t.prototype, n), r && o(t, r), u ) })(p.Sprite) t.Z = v }, 6189: function (e, t, n) { var r = n(7966) e.exports = function (e) { return r(e).replace(/\s(\w)/g, function (e, t) { return t.toUpperCase() }) } }, 1788: function (e) { e.exports = function (e) { return t.test(e) ? e.toLowerCase() : n.test(e) ? ( (function (e) { return e.replace(i, function (e, t) { return t ? ' ' + t : '' }) })(e) || e ).toLowerCase() : r.test(e) ? (function (e) { return e.replace(o, function (e, t, n) { return t + ' ' + n.toLowerCase().split('').join(' ') }) })(e).toLowerCase() : e.toLowerCase() } var t = /\s/, n = /(_|-|\.|:)/, r = /([a-z][A-Z]|[A-Z][a-z])/ var i = /[\W_]+(.|$)/g var o = /(.)([A-Z]+)/g }, 7966: function (e, t, n) { var r = n(1788) e.exports = function (e) { return r(e) .replace(/[\W_]+(.|$)/g, function (e, t) { return t ? ' ' + t : '' }) .trim() } }, }, ])